diff --git a/01_hintergrund/00_alg_stoffverteilungsplan.odt b/01_hintergrund/00_alg_stoffverteilungsplan.odt new file mode 100644 index 0000000..bc9ac22 Binary files /dev/null and b/01_hintergrund/00_alg_stoffverteilungsplan.odt differ diff --git a/01_hintergrund/01_alg_hintergrund_unterrichtsverlauf.odt b/01_hintergrund/01_alg_hintergrund_unterrichtsverlauf.odt new file mode 100644 index 0000000..b2337b4 Binary files /dev/null and b/01_hintergrund/01_alg_hintergrund_unterrichtsverlauf.odt differ diff --git a/01_hintergrund/01_implementierung_java_klassen/Greenfoot/Picture.java b/01_hintergrund/01_implementierung_java_klassen/Greenfoot/Picture.java new file mode 100644 index 0000000..8df3d55 --- /dev/null +++ b/01_hintergrund/01_implementierung_java_klassen/Greenfoot/Picture.java @@ -0,0 +1,699 @@ +import java.awt.image.*; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.BasicStroke; +import java.util.Vector; +import javax.imageio.*; +import java.io.*; +import java.awt.*; +import javax.swing.*; +import java.util.Random; +import java.awt.geom.AffineTransform; +/** + * + * Bildklasse für die Simulation von Processing-Befehlen + * + * Diese Klasse stellt ein BufferedImage bereit, in das mit Processing-Befehlen gezeichnet + * werden kann. + * Zusätzlich kann ein Bildanzeiger über jede Änderung des Bildes informiert werden, + * um "Zurück"-Befehle zu ermöglichen. Der Bildanzeiger ist entweder eine normale Java + * ScrollPane oder ein Actor aus Greenfoot. + * Die Dokumentation der einzelnen Zeichenmethoden ist der Processing-Reference + * (https://processing.org/reference/ steht unter CC-Lizenz: https://creativecommons.org/) + * entnommen und mit Deepl.com ins Deutsche übersetzt. + * + * @version 1.0 from 23.01.2019 + * @author Thomas Schaller (ZPG Informatik Klasse 9) + */ + +public class Picture{ + + // Einstellungmöglichkeiten für das Zeichnen von Rechtecken und Ellipsen + // RADIUS = Mittelpunkt+Radius wird gegeben, CENTER = Mittelpunkt und Breite/Höhe wird gegeben, + // CORNER = Linke obere Ecke + Breite/Höhe, CORNERS = Linke obere und rechte untere Ecke + public static final int RADIUS = 1; + public static final int CENTER = 2; + public static final int CORNER = 3; + public static final int CORNERS = 4; + + // gespeichertes Bild, + private BufferedImage image; + + // aktuelle Farbeinstellungen + private Color background; + private Color pencolor; + private Color fillcolor; + + // aktuelle Stiftdicke + private double stroke; + + // akkteller Koordinatenmodus von Rechtecken und Ellipsen + private int ellipseMode = CENTER; + private int rectMode = CORNER; + + // aktueller Font + private Font textfont = null; + + // muss ein Bildanzeiger benachrichtigt werden + private PictureViewer observer = null; + private boolean autorefresh = true; + + /** + * Erzeugt ein Bild mit Standardgröße 500x400 + */ + public Picture() { + this(500,400); + } + + /** + * Erzeugt ein Bild der angegeben Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public Picture(int width, int height) { + this(width,height, "D0D0D0"); + } + + /** + * Erzeugt ein Bild aus einer Datei + * @param filename Dateiname des Bildes + */ + public Picture(String filename) { + load(filename); + } + + /** + * Erzeugt ein Bild der angegebenen Größe mit festgelegtem Hintergrund + * @param width Breite des Bildes + * @param height Höhe des Bildes + * @param background Farbe des Hintergrunds + */ + public Picture(int width, int height, String background) { + this.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + this.background = decode(background); + this.pencolor = new Color(0,0,0); + this.stroke = 1; + this.fillcolor = null; + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(this.background); + g.fillRect(0,0,width-1, height-1); + } + + /** + * Legt fest, wer das Bild anzeigt. + * Diese ermöglicht die Benachrichtung des Observers, wenn sich das Bild ändert. + * @param observer Anzeiger des Bildes + */ + + public void setObserver(PictureViewer observer) { + this.observer= observer; + } + + /** + * Direktes Setzen des Bildes (für interne Zwecke) + * @param b Bild, das gespeichert werden soll. + */ + public void setImage(BufferedImage b) { + image = b; + } + + /** + * Direktes Abfragen des Bildes (für interne Zwecke) + * @return Bild, das gerade gespeichert ist. + */ + public BufferedImage getImage() { + return image; + } + + /** + * Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + * Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + * der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu. + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public void size(int width, int height){ + pushImage(); + this.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(background); + g.fillRect(0,0,width-1, height-1); + } + + /** + * Liefert die Breite des Bildes zurück. + * @return Breite des Bildes + */ + public int getWidth() { + return image.getWidth(); + } + + /** + * Liefert die Höhe des Bildes zurück. + * @return Höhe des Bildes + */ + public int getHeight() { + return image.getHeight(); + } + + + /** + * Erzeugt eine Kopie des Bildes und übergibt sie an den Observer (falls existent), damit dieser die Versionen speichern kann + */ + private void pushImage() { + if(observer != null) { + observer.pushImage(); + } + } + + + /** + * Legt fest, ob nach jedem Zeichenbefehl automatisch das Bild auch in + * der Oberfläche aktualisiert wird. Die Einstellung "false" beschleunigt + * das Zeichnen aufwändiger Bilder und verhindert "Flackern". + * Das Neuzeichnen kann durch die Methode "refresh" gezielt ausgelöst werden. + * @param autorefresh true = nach jedem Zeichenbefehl die Anzeige aktualisieren, false= nur durch die Methode refresh neu zeichnen + */ + public void setAutoRefresh(boolean autoRefresh) { + this.autorefresh = autoRefresh; + } + + + /** + * Auch die anzeigenden Klasse wird zum Neuzeichnen aufgefordert. + */ + private void repaint() { + if(observer != null && autorefresh) { + observer.repaint(); + } + } + + /** + * Auch die anzeigenden Klasse wird zum Neuzeichnen aufgefordert. + */ + public void refresh() { + if(observer != null) { + observer.repaint(); + } + } + + // ----------------------------------------- Zeichenfunktionen ----------------------------------------------- + /** + * Löscht den Inhalt des Bildes. + * Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt. + */ + + public void clear(){ + pushImage(); + image = new BufferedImage(image.getWidth(), image.getHeight(), image.getType()); + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(background); + g.fillRect(0,0,image.getWidth()-1, image.getHeight()-1); + repaint(); + } + + /** + * Konvertiert die in einem bestimmten Modus gegebenen Koordinaten in die Java-übliche Links_Oben_Breite_Höhe Version + * Die Änderungen werden direkt im Array vorgenommen + * @param coord Array mit vier Koordinateneinträgen im gegebenen Modus + * @param mode Modus der Koordinaten (CORNER, CORNERS, RADIUS oder CENTER) + */ + private void convert(int[] coord, int mode) { + switch(mode) { + case CORNER: break; + case CORNERS: coord[2] -= coord[0]; coord[3] -= coord[1]; break; + case RADIUS: coord[2] *= 2; coord[3] *=2; + case CENTER: coord[0] -= coord[2]/2; coord[1] -= coord[3]/2; + } + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + * Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + * Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void rectMode(int mode) { + rectMode = mode; + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + * Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + * Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als Breite und Höhe der Form. + * ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void ellipseMode(int mode) { + ellipseMode = mode; + } + + + + /** + * Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + * Um eine Linie einzufärben, verwenden Sie die {@link #stroke(int, int, int) stroke()} Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + * Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + * {@link #strokeWeight(double) strokeWeight()} geändert werden. + * @param x1 x-Koordinate des 1. Punktes + * @param y1 y-Koordinate des 1. Punktes + * @param x2 x-Koordinate des 2. Punktes + * @param y2 y-Koordinate des 2. Punktes + */ + public void line(int x1, int y1, int x2, int y2) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + if (stroke > 0) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawLine(x1, y1, x2, y2); + } + repaint(); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, rectMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillRect(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawRect(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, ellipseMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillOval(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawOval(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + int px[] = {x1, x2, x3}; + int py[] = {y1, y2, y3}; + polygon(px, py); + + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + + int px[] = {x1, x2, x3, x4}; + int py[] = {y1, y2, y3, y4}; + polygon(px, py); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + + public void polygon(int[] x, int[] y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(fillcolor != null) { + + g.setColor(fillcolor); + g.fillPolygon(x,y, y.length); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawPolygon(x, y, x.length); + } + repaint(); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + ellipse(x,y,1, 1); + + } + + // ----------------------------------------- Schriftdarstellung ----------------------------------------------- + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param s Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String s, int x, int y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(pencolor != null) { + g.setColor(fillcolor); + g.setStroke(new BasicStroke((float) stroke)); + g.setFont(textfont); + g.drawString(s, x, y); + } + repaint(); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + this.textfont = font; + } + + + // ----------------------------------------- Farbfestlegungen ----------------------------------------------- + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(String color) { + try{ + return new Color( + Integer.valueOf( color.substring( 0, 2 ), 16 ), + Integer.valueOf( color.substring( 2, 4 ), 16 ), + Integer.valueOf( color.substring( 4, 6 ), 16 ) ); + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(int color) { + try{ + if(color >=0 && color < 256) { + return new Color(color,color,color); + } else { + int r = color / 0x010000 % 0xFF; + int g = color / 0x000100 % 0xFF; + int b = color % 0xFF; + System.out.println(""+r+","+g+","+b); + return new Color(r, g, b ); + } + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + this.pencolor = decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + this.pencolor=decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + this.pencolor = new Color(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + this.pencolor = null; + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + this.stroke = width; + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + this.fillcolor = decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + this.fillcolor=decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + this.fillcolor = new Color(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + this.fillcolor = null; + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + if(c < 256) { + this.background=new Color(c,c,c); + } else { + int r = c / 0x010000; + int g = c / 0x000100 % 0xFF; + int b = c % 0xFF; + this.background= new Color(r, g, b ); + } + + this.clear(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + this.background=new Color(r,g,b); + this.clear(); + } + + +// ----------------------------------------- Dateioperationen ----------------------------------------------- + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + try{ + this.image = ImageIO.read(new File(filename)); + this.background = decode("D0D0D0"); + this.pencolor = new Color(0,0,0); + this.fillcolor = null; + this.stroke = 1; + this.repaint(); + + } catch(Exception e) { + System.out.println("Fehler beim Einlesen der Bilddatei"); + } + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + try{ + String[] fn = filename.split("\\."); + if (fn.length== 1) { + ImageIO.write(image, "PNG", new File(filename+".png")); + } else { + + if (fn.length == 2 && (fn[1].toUpperCase().equals("PNG") || + fn[1].toUpperCase().equals("GIF"))){ + ImageIO.write(image, fn[1], new File(filename)); + }else { + System.out.println("Unbekanntes Bildformat"); + } + } + + } catch(Exception e) { + System.out.println("Fehler beim Speichern"); + } + } + + +// ----------------------------------------- Sonstiges ----------------------------------------------- + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + + public Color[][] getPixelArray() { + Color[][] pixel = new Color[image.getWidth()][image.getHeight()]; + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + pixel[x][y] = new java.awt.Color(image.getRGB(x,y)); + } + } + return pixel; + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + size(pixel.length,pixel[0].length); + Graphics2D g = (Graphics2D) image.getGraphics(); + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + g.setColor(pixel[x][y]); + g.fillRect(x, y, 1, 1); + } + } + repaint(); + } + + /** + * Hilfsfunktion zum Verzögern der Ausgabe + * @param millis Wartezeit in Millisekunden + */ + public void delay(int millis) { + try{ + Thread.sleep(millis); + + } catch(Exception e) { + + } + + } + + + +} diff --git a/01_hintergrund/01_implementierung_java_klassen/Greenfoot/PictureViewer.java b/01_hintergrund/01_implementierung_java_klassen/Greenfoot/PictureViewer.java new file mode 100644 index 0000000..126441f --- /dev/null +++ b/01_hintergrund/01_implementierung_java_klassen/Greenfoot/PictureViewer.java @@ -0,0 +1,499 @@ +import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot und MouseInfo) +import java.awt.image.*; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.BasicStroke; +import java.awt.Font; +import java.util.Vector; +import java.awt.Color; +import javax.imageio.*; +import java.io.*; + +/** + * Der PictureViewer ist ein Actor, der in der Lage ist ein + * Objekt der Klasse Picture anzuzeigen. Zusätzlich können + * mehrere Verarbeitungsschritte gespeichert werden, um ein + * "zurück"-Funktion zu ermöglichen. + * + * @author Thomas Schaller + * @version V1.0 vom 10.02.2019 + */ +public class PictureViewer extends Actor +{ + public static final int FIT = -1; + public static final int NORMAL = 1; + + private static final int ANZ_BACK = 0; + + private double zoom; + protected Picture picture = null; + private Vector history; + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der Größe 500x400 + */ + public PictureViewer() { + this(500,400); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public PictureViewer(int width, int height) { + this(width,height, "D0D0D0"); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + * @param background Farbe des Hintergrunds als HEX-String (z.B. "FF3A45") + */ + public PictureViewer(int width, int height, String background) { + picture = new Picture(width,height, background); + picture.setObserver(this); + this.history = new Vector(); + this.zoom = NORMAL; + repaint(); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild aus einer Bilddatei + * @param filename Name des Bildes + */ + public PictureViewer(String filename) { + picture = new Picture(filename); + picture.setObserver(this); + this.history = new Vector(); + this.zoom = NORMAL; + repaint(); + } + + /** + * Speichert das übergebene Bild in der History. + * @param b zu speicherndes Bild + */ + public void pushImage() { + if( this.ANZ_BACK > 0) { + if(history.size() == this.ANZ_BACK) { + history.removeElementAt(0); + } + + BufferedImage b = new BufferedImage(picture.getWidth(), picture.getHeight(), picture.getImage().getType()); + Graphics g = b.getGraphics(); + g.drawImage(picture.getImage(), 0, 0, null); + g.dispose(); + + history.add(b); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + private void popImage() { + int anz = history.size(); + if(anz>0) { + BufferedImage i = history.get(anz-1); + history.removeElementAt(anz-1); + picture.setImage(i); + repaint(); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + public void back() { + popImage(); + } + + /** + * Setzt den Zoom-Faktor für das Bild. + * Als Zoomfaktor sind auch die Konstanten Bildanzeiger.FIT (auf Bildschirmgröße zoomen) und Bildanzeiger.NORMAL (100%) möglich. + * @param factor Zoomfaktor (1.0 = 100%). + */ + public void setZoom(double zoom) { + this.zoom = zoom; + repaint(); + } + + /** + * Setzt die automatische Neuanzeige des Bildes. + * Mit dieser Methode kann man einstellen, ob nach jedem Zeichenbefehl + * die Anzeige auf dem Bildschirm aktualisiert werden soll. Bei sehr + * vielen Zeichenbefehlen wird die Ausgabe dadurch sehr langsam. Es reicht + * eine Anzeige am Ende der Zeichenbefehle. Rufen Sie dann für das Neuzeichnen + * die Methode refresh() auf. + * @param autoRefresh true, wenn nach jedem Zeichenbefehl die Anzeige aktualisiert werden soll. + */ + public void setAutoRefresh(boolean autoRefresh) { + picture.setAutoRefresh(autoRefresh); + } + + /** + * Sorgt für die Aktualisierung der Bildschrimanzeige. Das aktuelle Bild + * wird dadurch angezeigt. Durch Einstellung von autoRefresh kann die + * Anzeige automatisiert werden. + */ + public void refresh() { + repaint(); + } + + /** + * Setzt das angezeigt Bild neu und beachtet dabei den Zoomfaktor. + */ + public void repaint() { + double faktor = zoom; + + if (zoom == FIT) { + double faktorw = (double) this.getWorld().getWidth() / picture.getWidth(); + double faktorh = (double) this.getWorld().getHeight() / picture.getHeight(); + faktor = Math.min(faktorw, faktorh); + } + int gfi_width = (int) (picture.getWidth()*faktor); + int gfi_height = (int) (picture.getHeight()*faktor); + + setImage(new GreenfootImage(gfi_width, gfi_height)); + Graphics2D g = (Graphics2D) this.getImage().getAwtImage().getGraphics(); + g.drawImage(picture.getImage(),0,0,gfi_width-1, gfi_height-1, 0, 0, picture.getWidth(), picture.getHeight(), null); + g.setColor(new java.awt.Color(0,0,0)); + g.setStroke(new BasicStroke((float) 1)); + g.drawRect(0,0,gfi_width-1, gfi_height-1); + + } + + // Wrappermethoden + /** + * Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + * Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + * der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu. + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public void size(int width, int height){ + picture.size(width, height); + } + + /** + * Liefert die Breite des Bildes zurück. + * @return Breite des Bildes + */ + public int getImageWidth() { + return picture.getWidth(); + } + + /** + * Liefert die Höhe des Bildes zurück. + * @return Höhe des Bildes + */ + public int getImageHeight() { + return picture.getHeight(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + picture.background(c); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + picture.background(r,g,b); + } + + /** + * Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + * Um eine Linie einzufärben, verwenden Sie die {@link #stroke(int, int, int) stroke()} Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + * Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + * {@link #strokeWeight(double) strokeWeight()} geändert werden. + * @param x1 x-Koordinate des 1. Punktes + * @param y1 y-Koordinate des 1. Punktes + * @param x2 x-Koordinate des 2. Punktes + * @param y2 y-Koordinate des 2. Punktes + */ + public void line(int x1, int y1, int x2, int y2) { + picture.line(x1,y1,x2,y2); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + picture.rect(a,b,c,d); + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + picture.ellipse(a,b,c,d); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + picture.triangle(x1,y1,x2,y2,x3,y3); + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + picture.quad(x1,y1,x2,y2,x3,y3,x4,y4); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + public void polygon(int[] x, int[] y) { + picture.polygon(x,y); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + picture.point(x,y); + + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + * Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + * Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void rectMode(int mode) { + picture.rectMode(mode); + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + * Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + * Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als Breite und Höhe der Form. + * ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void ellipseMode(int mode) { + picture.ellipseMode(mode); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + picture.stroke(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + picture.noStroke(); + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + picture.strokeWeight(width); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + picture.fill(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + picture.noFill(); + } + + /** + * Löscht den Inhalt des Bildes. + * Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt. + */ + public void clear(){ + picture.clear(); + } + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + picture.load(filename); + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + picture.save(filename); + } + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param t Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String t, int x, int y) { + picture.text(t,x,y); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + picture.textFont(font); + } + + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + public Color[][] getPixelArray() { + return picture.getPixelArray(); + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + picture.setPixelArray(pixel); + } + + +} + diff --git a/01_hintergrund/01_implementierung_java_klassen/Greenfoot/Table.java b/01_hintergrund/01_implementierung_java_klassen/Greenfoot/Table.java new file mode 100644 index 0000000..ee5a211 --- /dev/null +++ b/01_hintergrund/01_implementierung_java_klassen/Greenfoot/Table.java @@ -0,0 +1,894 @@ +/** + * Die Klasse Table vereinfacht den Zugriff auf CSV-Dateien. + * Die Klassen Table und TableRow ermöglichen einen einfachen Zugriff auf tabellenbasierte + * Dokumente. + * + * @author Thomas Schaller + * @version 1.0 vom 01.02.2019 + */ + +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.ArrayList; +import java.io.*; +import java.util.Scanner; + +import org.jdom.Document; +import org.jdom.Element; +import org.jdom.Attribute; +import org.jdom.JDOMException; +import org.jdom.input.SAXBuilder; +import org.jdom.output.XMLOutputter; +import org.jdom.output.Format; + +public class Table +{ + // Standardtrennzeichen für Spalten + private static final char DEFAULT_SEPARATOR = ';'; + // Standardmarkierung für Texte + private static final char DEFAULT_QUOTE = '"'; + // Standardtrennzeichen für Dezimalzahlen + private static final char DEFAULT_COMMA = ','; + + // mögliche Spaltentypen + private static final String UNKNOWN ="UNKOWN"; + private static final String INT = "INTEGER"; + private static final String DOUBLE = "DOUBLE"; + private static final String FLOAT = "FLOAT"; + + // interne Verwaltung des Dokuments als JDOM-Document-Objekt + private Document doc; + // Verweis auf Element für Kopfzeile + private Element header; + // Ende Attribute + + /** + * Erzeugt leeres Tabellen-Dokument. + */ + public Table() { + this.doc = new Document(); + doc.setRootElement(new Element("CSV-Data")); + this.header = new Element("Header"); + doc.getRootElement().addContent(header); + } + + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei und erstellt ein Tabellenobjekt mit seinen Werten. + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public Table(String filename, String options, char separator, char quote) { + loadCSV(filename, options, separator, quote); + } + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei und erstellt ein Tabellenobjekt mit seinen Werten (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + */ + public Table(String filename, String options) { + loadCSV(filename, options); + } + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei ohne Kopfzeile und erstellt ein Tabellenobjekt mit seinen Werten (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public Table(String filename) { + loadCSV(filename); + } + + // Anfang Methoden + /** + * Liest den Inhalt einer CSV-Datei ohne Kopfzeile (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public void loadCSV(String filename) { + loadCSV(filename, ""); + } + + /** + * Liest den Inhalt einer CSV-Datei (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + */ + public void loadCSV(String filename, String options) { + loadCSV(filename, options, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** + * Liest den Inhalt einer CSV-Datei. + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public void loadCSV(String filename, String options, char separator, char quote) { + doc = new Document(); + doc.setRootElement(new Element("CSV-Data")); + header = new Element("Header"); + doc.getRootElement().addContent(header); + try { + File f = new File(filename); + Scanner scanner = new Scanner(new File(filename)); + if(options.toLowerCase().contains("header") && scanner.hasNext()) { + List entries = parseLine(scanner.nextLine(), separator, quote); + int i= 0; + for(String s : entries) { + Element entry = new Element("Column"); + header.addContent(entry); + entry.setText(s); + entry.setAttribute("type", "unknown"); + i++; + } + } + + List cols = header.getChildren(); + + while (scanner.hasNext()) { + Element line = new Element("Row"); + doc.getRootElement().addContent(line); + List entries = parseLine(scanner.nextLine(), separator, quote); + int i= 0; + + for(String s : entries) { + + if(i==cols.size()) { + Element entry = new Element("Column"); + entry.setAttribute("type", "unknown"); + header.addContent(entry); + cols = header.getChildren(); + } + + Element entry = new Element("Entry"); + entry.setText(s); + line.addContent(entry); + i++; + } + } + scanner.close(); + + } catch (Exception e) { + System.out.println("Fehler beim Lesen der CSV-Datei"); + } + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei ohne Kopfzeile (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public void saveCSV(String filename) { + saveCSV(filename, ""); + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthalten, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile haben soll, + * dann lassen Sie einfach die Option "header" weg. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile haben soll. + * @param filename Dateiname der CSV-Datei. + */ + public void saveCSV(String filename, String options) { + saveCSV(filename, options, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei. + * Wenn die Datei eine Kopfzeile enthalten, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile haben soll, + * dann lassen Sie einfach die Option "header" weg. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile haben soll. + * @param filename Dateiname der CSV-Datei. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public void saveCSV(String filename, String options, char separator, char quote){ + try{ + File f = new File(filename); + PrintStream outputFile = new PrintStream (f); + System.out.println("Speicher in : "+f.getAbsolutePath()); + List columns = header.getChildren(); + String sq = ""+quote; + String ss = ""+separator; + if(quote =='"') sq = "\""; + if(separator =='"') ss = "\""; + + if(options.toLowerCase().contains("header")) { + String h = ""; + for(Element c : columns) { + h += ss + sq + c.getText()+sq; + } + outputFile.println(h.substring(1)); + } + for(int i = 0; i parseLine(String cvsLine) { + return parseLine(cvsLine, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** HIlfsfunktion für die Analyse einer Dateizeile + * @param cvsLine Zeile aus der Datei + * @param sparator Trennzeichen für die Spalten + * @return Liste von String für die einzelnen Spalten + */ + private List parseLine(String cvsLine, char separator) { + return parseLine(cvsLine, separator, DEFAULT_QUOTE); + } + + /** HIlfsfunktion für die Analyse einer Dateizeile + * @param cvsLine Zeile aus der Datei + * @param sparator Trennzeichen für die Spalten + * @param customQuote Kennung für Strings + * @return Liste von String für die einzelnen Spalten + */ + private List parseLine(String cvsLine, char separator, char customQuote) { + + List result = new ArrayList<>(); + + //if empty, return! + if (cvsLine == null && cvsLine.isEmpty()) { + return result; + } + + //ggf. Default-Value laden + if (customQuote == ' ') { + customQuote = DEFAULT_QUOTE; + } + + if (separator == ' ') { + separator = DEFAULT_SEPARATOR; + } + + StringBuffer curVal = new StringBuffer(); + boolean inQuotes = false; + boolean startCollectChar = false; + boolean doubleQuotesInColumn = false; + + char[] chars = cvsLine.toCharArray(); + + for (char ch : chars) { + + if (inQuotes) { // aktueller Text ist in Quotes eingeschlossen + startCollectChar = true; + + if (ch == customQuote) { // Quotes werden beendet, aber Achtung bei "" => Metazeichen + inQuotes = false; + if (ch == '\"') { + doubleQuotesInColumn = true; + } + + } else { + + if (ch == '\"' && !doubleQuotesInColumn) { + doubleQuotesInColumn = true; + } else { + curVal.append(ch); + doubleQuotesInColumn = false; + } + + } + } else { + if (ch == customQuote) { + + inQuotes = true; + + //Fixed : allow "" in empty quote enclosed + if (ch == '\"'){ + if(doubleQuotesInColumn) { + curVal.append('"'); + doubleQuotesInColumn = false; + } else doubleQuotesInColumn = true; + + + } + } + else { + doubleQuotesInColumn = false; + if (ch == separator) { + + result.add(curVal.toString()); + + curVal = new StringBuffer(); + startCollectChar = false; + + } else if (ch == '\r') { + //ignore LF characters + continue; + } else if (ch == '\n') { + //the end, break! + break; + } else { + curVal.append(ch); + } + } + } + + } + result.add(curVal.toString()); + return result; + } + + /** + * Sucht die Nummer einer durch Namen gegebenen Spalte. + * @param name Name der Spalte + * @return Nummer der Spalte + */ + + private int findColumnNumber(String name) { + List columns = header.getChildren(); + int i = 0; + for(Element c : columns) { + if (c.getText().toLowerCase().equals(name.toLowerCase())) { + return i; + + } + i++; + } + return -1; + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an. + */ + public void addColumn() { + Element entry = new Element("Column"); + entry.setAttribute("type", Table.UNKNOWN); + header.addContent(entry); + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an und benennt sie. + * @param title Bezeichnung der Spalte + */ + public void addColumn(String title) { + addColumn(); + Element nc = ((List)(header.getChildren())).get(header.getChildren().size()-1); + nc.setText(title); + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an und benennt und typisiert sie. + * @param title Bezeichnung der Spalte + * @param type Typ der Spalte (UNKNOWN, DOUBLE, INTEGER, FLOAT) + */ + public void addColumn(String title, String type) { + addColumn(title); + Element nc = ((List)(header.getChildren())).get(header.getChildren().size()-1); + nc.setAttribute("type", type); + } + + /** + * Löscht eine Spalte. + * @param i Nummer der Spalte. + */ + public void removeColumn(int i) { + List lines = doc.getRootElement().getChildren(); + for(Element l : lines) { + if(l.getChildren().size()>i) l.removeContent(i); + } + } + + /** + * Löscht eine Spalte + * @param name Name der Spalte + */ + public void removeColumn(String name) { + try{ + removeColumn(findColumnNumber(name)); + } catch(Exception e) { System.out.println("Unbekannter Spaltenname");} + } + + /** + * Liefert die Anzahl der Spalten in der Tabelle + * @return Anzahl der Spalten + */ + public int getColumnCount() { + return header.getChildren().size(); + } + + /** + * Liefert die Anzahl der Zeilen in der Tabelle + * @return Anzahl der Zeilen + */ + public int getRowCount() { + return doc.getRootElement().getChildren().size()-1; + } + + /** + * Löscht alle Zeilen der Tabelle. + * Die Spaltenüberschriften und Typen bleiben erhalten. + */ + public void clearRows() { + doc.getRootElement().removeChildren("Row"); + } + + /** + * Fügt eine neue Zeile an das Ende der Tabelle an. + * @return ein TableRow-Objekt für diese neue Zeile + */ + public TableRow addRow() { + Element row = new Element("Row"); + doc.getRootElement().addContent(row); + return new TableRow(doc, row); + } + + /** + * Löscht eine Zeile + * @param i Nummer der Zeile + */ + public void removeRow(int i) { + if(i rows = doc.getRootElement().getChildren(); + return new TableRow(doc, rows.get(i+1)); + } + return null; + } + + /** + * Liefert die ganze Tabelle als Array von TableRow-Objekten + * @return Array von TableRow-Objekten + */ + public TableRow[] rows() { + TableRow[] rows = new TableRow[getRowCount()]; + for(int i = 0; i < getRowCount(); i++) { + rows[i] = getRow(i); + } + return rows; + } + + /** + * Liefert den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param column Spaltennummer + * @return Wert der Zelle + */ + public int getInt(int row, int column) { + return getRow(row).getInt(column); + } + + /** + * Liefert den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param name Name der Spalte + * @return Wert der Zelle + */ + public int getInt(int row, String name) { + return getRow(row).getInt(name); + } + + /** + * Setzt den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param column Spaltennummer + * @param value neuer Wert der Zelle + */ + public void setInt(int row, int column,int value) { + getRow(row).setInt(column, value); + } + + /** + * Setzt den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(int row, String name, int value) { + getRow(row).setInt(name, value); + } + + /** + * Liefert alle Werte einer Zeile als Integer-Array. + * @param row Nummer der Zeile + * @return int-Array, dass alle Werte der Zeile enthält + */ + public int[] getIntRow(int row) { + try{ + TableRow trow = getRow(row); + int anz = getColumnCount(); + int[] r = new int[anz]; + for(int i=0; i) (header.getChildren())).get(i).getText(); + } else { + return ""; + } + } + + /** + * Liefert die Nummer einer Spalte + * @param name Name der Spalte + * @return Nummer der Spalte + */ + public int getColumn(String name) { + List columns = header.getChildren(); + int i = 0; + while (i < columns.size()) { + if (columns.get(i).getText().toLowerCase().equals(name.toLowerCase())) { + return i; + } + i++; + } // end of while + return -1; + } + + + /** + * Erzeugt eine neue Zeile mit i Spalten + * Wenn bisher nicht genügend Spalten vorhanden sind, werden automatisch neue Spalten hinzugefügt (auch zum Header) + * @param i Anzahl der Spalten + */ + private Element buildRow(int i) { + List columns = header.getChildren(); + Element entry=null; + for(int j=0; j<=i; j++) { + + if(j==columns.size()) { + Element h = new Element("Column"); + h.setAttribute("type", "unknown"); + header.addContent(h); + columns = header.getChildren(); + } + if(j==current.getChildren().size()) { + entry = new Element("Entry"); + current.addContent(entry); + + } + + } + return entry; + + } + + /** + * Erzeugt eine neue Zeile. + * Es werden genügend Spalten erzeugt, dass ein Wert in Spalte "name" eingetragen werden kann + * @param name Name der Spalte + */ + private Element buildRow(String name) { + List columns = header.getChildren(); + int i = 0; + for(Element c: columns) { + + if(c.getText().toLowerCase().equals(name.toLowerCase())) { + return buildRow(i); + } + i++; + } + return null; + + } + + /** + * Liefert den Wert einer Zelle als String + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public String getString(int i) { + if(i >= current.getContent().size()) return ""; + Element e = (Element) current.getContent(i) ; + if(e!=null) { + return e.getText(); + } else { + return ""; + } + } + + /** + * Liefert den Wert einer Zelle als String + * @param name Name der Spalte + * @return Wert der Zelle + */ + public String getString(String name) { + return getString(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als String + * @param i Nummer der Spalte + * @param text neuer Wert der Zelle + */ + public void setString(int i, String text) { + + Element e = buildRow(i); + if(e!=null) e.setText(text); + } + + /** + * Setzt den Wert einer Zelle als String + * @param name Name der Spalte + * @param text neuer Wert der Zelle + */ + public void setString(String name, String text) { + Element e = buildRow(name); + if(e!=null) e.setText(text); + } + + + /** + * Liefert den Wert einer Zelle als Int-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public int getInt(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Integer.parseInt(e.getText()); + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Int-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public int getInt(String name) { + return getInt(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Int-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(int i,int value) { + + Element e = buildRow(i); + if(e!=null) e.setText(""+value); + } + + /** + * Setzt den Wert einer Zelle als Int-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(String name, int value) { + Element e = buildRow(name); + if(e!=null) e.setText(""+value); + } + + /** + * Liefert den Wert einer Zelle als Float-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public float getFloat(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Float.parseFloat(e.getText().replace(",",".")); + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Float-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public float getFloat(String name) { + return getFloat(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Float-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setFloat(int i,float value) { + + Element e = buildRow(i); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Setzt den Wert einer Zelle als Float-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setFloat(String name, float value) { + Element e = buildRow(name); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Liefert den Wert einer Zelle als Double-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public double getDouble(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Double.parseDouble(e.getText().replace(",",".")); + + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Double-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public double getDouble(String name) { + return getDouble(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Double-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setDouble(int i,double value) { + + Element e = buildRow(i); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Setzt den Wert einer Zelle als Double-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setDouble(String name, double value) { + Element e = buildRow(name); + if(e!=null) e.setText(format.format(value)); + } + +} diff --git a/01_hintergrund/01_implementierung_java_klassen/Greenfoot/XML.java b/01_hintergrund/01_implementierung_java_klassen/Greenfoot/XML.java new file mode 100644 index 0000000..c06c490 --- /dev/null +++ b/01_hintergrund/01_implementierung_java_klassen/Greenfoot/XML.java @@ -0,0 +1,637 @@ +/** + * Klasse zum Vereinfachten Zugriff auf XML-Dokumente + * Diese Klasse ist für den Einsatz in der Schule gedacht und soll den Schülern + * einen einfachen Zugriff auf XML-Dokumente ermöglichen. Die zur Verfügung + * stehenden Befehle sind wie in Processing realisiert. + * Dabei ist jeder Teilbaum des Dokuments wieder als XML-Objekt zugreifbar, das + * intern auf die gleiche XML-Dokumentstruktur zugreift. + * Dies ermöglicht bei unsachgemäßem Gebrauch die XML-Struktur zu zerstören. Im + * normalen Gebrauch sollte dies aber nicht relevant sein. + * + * Benötigt: jdom-1.1.3.jar + + * @author Thomas Schaller + * @version 1.0 vom 31.01.2019 + */ +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.ArrayList; +import java.io.*; + +import org.jdom.Document; +import org.jdom.Element; +import org.jdom.Attribute; +import org.jdom.JDOMException; +import org.jdom.input.SAXBuilder; +import org.jdom.output.XMLOutputter; +import org.jdom.output.Format; + +public class XML { + // Anfang Attribute + // XML-Dokumentstruktur + private Document doc; + // Zeiger auf das aktuelle Element + private Element current; + // Ende Attribute + + /** + * Erzeugt ein leeres XMLDokument + */ + public XML() { + this.doc = new Document(); + this.current = null; + } + + /** + * Erzeugt ein XML-Dokument aus einer Datei + * @param filename Dateiname der XML-Datei + */ + public XML(String filename) { + loadXML(filename); + } + + /** + * interner Konstruktor, um ein XML Objekt zu erzeugen, das auf einen bestimmten Knoten verweist + * @param doc die XML-Dokumentstruktur + * @param current Zeiger auf das aktuelle Element + */ + private XML(Document doc, Element current) { + this.doc = doc; + this.current = current; + } + + // Anfang Methoden + /** Öffnet das durch den Dateinamen gegebene Dokument + * @param filename Dateiname des XML-Files + */ + public void loadXML(String filename) { + doc = null; + File f = new File(filename); + + try { + // Das Dokument erstellen + SAXBuilder builder = new SAXBuilder(); + doc = builder.build(f); + + } catch (JDOMException e) { + e.printStackTrace(); + + } catch (IOException e) { + e.printStackTrace(); + } + // Zeiger im Baum auf Root-Element + current = doc.getRootElement(); + } + + /** Speichert den XML-Baum im angegebenen Dateinamen + * @param filename Dateiname des XML-Files + */ + public void saveXML(String filename) { + try { + // new XMLOutputter().output(doc, System.out); + XMLOutputter xmlOutput = new XMLOutputter(); + + // display nice nice + xmlOutput.setFormat(Format.getPrettyFormat()); + File f = new File(filename); + FileOutputStream outputFile = new FileOutputStream(f); + System.out.println("Speicher in : "+f.getAbsolutePath() ); + xmlOutput.output(doc, outputFile); + outputFile.close(); + System.out.println("File Saved!"); + } catch (IOException io) { + System.out.println(io.getMessage()); + } + + } + + //----------------------------------------------- Zeigerbewegungen -------------------------------------------------- + /** + * liefert ein XML-Objekt, das auf den Vaterknoten des aktuellen Elements zeigt. + * @return Vater des aktuellen Objekts. + */ + public XML getParent() { + if(current != null) { + Element parent = current.getParentElement(); + if (parent == null) { + return null; + } else { + return new XML(doc, parent); + } + } + return null; + } + + /** + * Überprüft, ob das Element irgendwelche Kinder hat oder nicht, und gibt das Ergebnis als boolean zurück. + * @return true, wenn Kinder vorhanden sind, sonst false + */ + public boolean hasChildren() { + if (current == null) { + return doc.hasRootElement(); + } else { + return current.getChildren().size()>0; + } + } + + /** + * Ermittelt die Namen aller Kinder des Elements und gibt die Namen als ein Array von Strings zurück. + * Dies ist dasselbe wie das Durchlaufen und Aufrufen von getName() auf jedem untergeordneten Element einzeln. + * @return Liste aller Namen der Kinder + */ + public String[] listChildren() { + if (current == null) { + if(doc.hasRootElement()) { + String[] names = new String[0]; + names[0] = doc.getRootElement().getName(); + return names; + } else { + return null; + } + } else { + List ch_element = current.getChildren(); + String[] names = new String[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + names[i] = ch_element.get(i).getName(); + } + return names; + } + } + + /** + * Liefert alle Kinder des Elements als Array von XML-Objekten. + * @return Array der Kinder als XML-Objekte + */ + public XML[] getChildren() { + if (current == null) { + if(doc.hasRootElement()) { + XML[] ch_xml = new XML[1]; + ch_xml[0] = new XML(doc, doc.getRootElement()); + return ch_xml; + } else { + return null; + } + } else { + List ch_element = current.getChildren(); + XML[] ch_xml = new XML[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + ch_xml[i] = new XML(doc, ch_element.get(i)); + } + return ch_xml; + } + } + + /** + * Liefert bestimmte Kinder des Elements als Array von XML-Objekten. + * Die Methode gibt dabei alle Kinder zurück, die dem angegebenen Namen entsprechen. + * @param name Name der gesuchten Kind-Objekte + * @return Array der Kinder als XML-Objekte + */ + public XML[] getChildren(String name) { + if (current == null) { + if(doc.hasRootElement()) { + XML[] ch_xml = new XML[1]; + ch_xml[0] = new XML(doc, doc.getRootElement()); + if(doc.getRootElement().getName().equals(name)){ + return ch_xml; + } else { + return null; + } + } else { + return null; + } + } else { + List ch_element = current.getChildren(name); + XML[] ch_xml = new XML[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + ch_xml[i] = new XML(doc, ch_element.get(i)); + } + return ch_xml; + } + } + + /** + * Liefert das erste Kind des Elements mit einem bestimmten Namen. + * Die Methode gibt das erste Kind zurück, das dem angegebenen Namen entsprechen. + * @param name Name des gesuchten Kind-Objektes + * @return Kind als XML-Objekt + */ + + public XML getChild(String name) { + if (current == null) { + Element e = doc.getRootElement(); + if (e.getName().equals(name)) { + return new XML(doc, e); + } else { + return null; + } + } else { + String[] names = name.split("/"); + Element e = current; + int i = 0; + while(i < names.length) { + e = e.getChild(names[i]); + if (e==null) return null; + i++; + } + return new XML(doc, e); + } + } + + /** + * Liefert das i. Kind des Elements. + * Die Methode gibt das i. Kind des aktuellen Elements zurück. + * @param i Nummer des Kindes + * @return Kind als XML-Objekt + */ + public XML getChild(int i) { + if (current == null) { + return new XML(doc, doc.getRootElement()); + } else { + List ch_element = current.getChildren(); + if (i>=ch_element.size()) return null; + return new XML(doc, ch_element.get(i)); + } + } + + //--------------------------------------------------- Methoden für das aktuelle Element ------------------------------------------------- + /** + * Frage den Namen des aktuellen Elements ab + * @return Namen des Elements + */ + public String getName() { + if (current==null) return ""; + return current.getName(); + } + + /** + * Setze den Namen des aktuellen Elements. + * @param name Neuer Name des Elements + */ + public void setName(String name) { + if (current==null) return; + current.setName(name); + } + + /** + * liefert die Anzahl der Attribute eines Elements. + * @return Anzahl des Attribute + */ + public int getAttributeCount() { + if (current == null) return 0; + return current.getAttributes().size(); + } + + /** + * liefert zurück, ob das aktuelle Element Attribute hat . + * @return true, wenn es Attribute gibt + */ + public boolean hasAttribute() { + if (current == null) return false; + return current.getAttributes().size()>0; + } + + /** + * Ruft alle Attribute des angegebenen Elements ab und gibt sie als Array von Strings zurück. + * @return Liste der Attributnamen + */ + public String[] listAttributes() { + if (current == null) return null; + List attr = current.getAttributes(); + String[] names = new String[attr.size()]; + for(int i=0; i < attr.size() ; i++) { + names[i] = attr.get(i).getName(); + } + return names; + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs + */ + public String getString(String attribute) { + if (current==null) return ""; + return current.getAttributeValue(attribute); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs + */ + public String getString(String attribute, String defaultValue) { + if (current==null) return defaultValue; + return current.getAttributeValue(attribute,defaultValue); + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param text neuer Wert des Attributs + */ + public void setString(String attribute, String text) { + if (current==null) return; + current.setAttribute(attribute, text); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Integer-Zahl + */ + public int getInt(String attribute) { + if (current==null) return 0; + try{ + int i = Integer.parseInt(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als Integer-Zahl + */ + public int getInt(String attribute, int defaultValue) { + if (current==null) return defaultValue; + try{ + int i = Integer.parseInt(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setInt(String attribute, int value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Float-Zahl + */ + public float getFloat(String attribute) { + if (current==null) return 0; + try{ + float i = Float.parseFloat(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als Float-Zahl + */ + public float getFloat(String attribute, float defaultValue) { + if (current==null) return defaultValue; + try{ + float i = Float.parseFloat(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setFloat(String attribute, float value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Double-Zahl + */ + public double getDouble(String attribute) { + if (current==null) return 0; + try{ + double i = Double.parseDouble(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + +/** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als double-Zahl + */ + public double getDouble(String attribute, double defaultValue) { + if (current==null) return defaultValue; + try{ + double i = Double.parseDouble(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setDouble(String attribute, double value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt den Inhalt/Text des aktuellen Elements ab + * @return Inhalt des Elements + */ + public String getContent() { + if ( current==null) return ""; + + return current.getText(); + } + + /** + * Fragt den Inhalt/Text des aktuellen Elements ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardtext + * @return Inhalt des Elements + */ + public String getContent(String defaultValue) { + if ( current==null) return defaultValue; + String t = current.getText(); + if(t.equals("")) t = defaultValue; + return t; + } + + /** + * Setzt den Inhalt/Text des aktuellen Elements + * @param text Neuer Inhalt des Elements + */ + public void setContent(String text) { + if ( current==null) return; + current.setText(text); + } + + + /** + * Fragt den Inhalt des aktuellen Elements als Integerzahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ public int getIntContent(int defaultValue) { + if ( current==null) return defaultValue; + try{ + int i = Integer.parseInt(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Integerzahl ab + * @return Inhalt des Elements + */ + public int getIntContent() { + if ( current==null) return 0; + try{ + int i = Integer.parseInt(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setIntContent(int value) { + if ( current==null) return; + current.setText(""+value); + } + + + /** + * Fragt den Inhalt des aktuellen Elements als Floatzahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ + public float getFloatContent(float defaultValue) { + if ( current==null) return defaultValue; + try{ + float i = Float.parseFloat(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Floatzahl ab + * @return Inhalt des Elements + */ + public float getFloatContent() { + if ( current==null) return 0; + try{ + float i = Float.parseFloat(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setFloatContent(float value) { + if ( current==null) return; + current.setText(""+value); + } + +/** + * Fragt den Inhalt des aktuellen Elements als Doublezahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ + public double getDoubleContent(double defaultValue) { + if ( current==null) return defaultValue; + try{ + double i = Double.parseDouble(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Doublezahl ab + * @return Inhalt des Elements + */ + public double getDoubleContent() { + if ( current==null) return 0; + try{ + double i = Double.parseDouble(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setDoubleContent(double value) { + if ( current==null) return; + current.setText(""+value); + } + + + // ----------------------------------------------- XML-Struktur aufbauen ------------------------------------------------ + /** Erzeuge neues Element nach der aktuellen Position und setze dieses als aktuelles Element + * @param name Name des neuen Elements + * @return neues Element als XML-Objekt + */ + public XML addChild(String name) { + Element e = new Element(name); + if(current == null){ // man ist auf Root-Ebene + doc.setRootElement(e); + + } + else { + current.addContent(e); + } // end of if-else + return new XML(doc, e); + } + + /** + * liefert das aktuelle Element als jdom-Element-Objekt + * @return aktuelles Element + */ + private Element getCurrent() { + return current; + } + + /** + * löscht ein Kind des aktuellen Knotens. + * Ist kid kein Kind des aktuellen Elements passiert gar nichts. + * @param kid XML-Objekt des Kindes + */ + public void removeChild(XML kid) { + if (current == null) return; + Element e = kid.getCurrent(); + int index = current.indexOf(e); + if(index >= 0) { current.removeContent(e);} + } + +} diff --git a/01_hintergrund/01_implementierung_java_klassen/JavaEditor/Picture.java b/01_hintergrund/01_implementierung_java_klassen/JavaEditor/Picture.java new file mode 100644 index 0000000..345da99 --- /dev/null +++ b/01_hintergrund/01_implementierung_java_klassen/JavaEditor/Picture.java @@ -0,0 +1,699 @@ +import java.awt.image.*; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.BasicStroke; +import java.util.Vector; +import javax.imageio.*; +import java.io.*; +import java.awt.*; +import javax.swing.*; +import java.util.Random; +import java.awt.geom.AffineTransform; +/** + * + * Bildklasse für die Simulation von Processing-Befehlen + * + * Diese Klasse stellt ein BufferedImage bereit, in das mit Processing-Befehlen gezeichnet + * werden kann. + * Zusätzlich kann ein Bildanzeiger über jede Änderung des Bildes informiert werden, + * um "Zurück"-Befehle zu ermöglichen. Der Bildanzeiger ist entweder eine normale Java + * ScrollPane oder ein Actor aus Greenfoot. + * Die Dokumentation der einzelnen Zeichenmethoden ist der Processing-Reference + * (https://processing.org/reference/ steht unter CC-Lizenz: https://creativecommons.org/) + * entnommen und mit Deepl.com ins Deutsche übersetzt. + * + * @version 1.0 from 23.01.2019 + * @author Thomas Schaller (ZPG Informatik Klasse 9) + */ + +public class Picture{ + + // Einstellungmöglichkeiten für das Zeichnen von Rechtecken und Ellipsen + // RADIUS = Mittelpunkt+Radius wird gegeben, CENTER = Mittelpunkt und Breite/Höhe wird gegeben, + // CORNER = Linke obere Ecke + Breite/Höhe, CORNERS = Linke obere und rechte untere Ecke + public static final int RADIUS = 1; + public static final int CENTER = 2; + public static final int CORNER = 3; + public static final int CORNERS = 4; + + // gespeichertes Bild, + private BufferedImage image; + + // aktuelle Farbeinstellungen + private Color background; + private Color pencolor; + private Color fillcolor; + + // aktuelle Stiftdicke + private double stroke; + + // akkteller Koordinatenmodus von Rechtecken und Ellipsen + private int ellipseMode = CENTER; + private int rectMode = CORNER; + + // aktueller Font + private Font textfont = null; + + // muss ein Bildanzeiger benachrichtigt werden + private PictureViewer observer = null; + private boolean autorefresh = true; + + /** + * Erzeugt ein Bild mit Standardgröße 500x400 + */ + public Picture() { + this(500,400); + } + + /** + * Erzeugt ein Bild der angegeben Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public Picture(int width, int height) { + this(width,height, "D0D0D0"); + } + + /** + * Erzeugt ein Bild aus einer Datei + * @param filename Dateiname des Bildes + */ + public Picture(String filename) { + load(filename); + } + + /** + * Erzeugt ein Bild der angegebenen Größe mit festgelegtem Hintergrund + * @param width Breite des Bildes + * @param height Höhe des Bildes + * @param background Farbe des Hintergrunds + */ + public Picture(int width, int height, String background) { + this.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + this.background = decode(background); + this.pencolor = new Color(0,0,0); + this.stroke = 1; + this.fillcolor = null; + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(this.background); + g.fillRect(0,0,width-1, height-1); + } + + /** + * Legt fest, wer das Bild anzeigt. + * Diese ermöglicht die Benachrichtung des Observers, wenn sich das Bild ändert. + * @param observer Anzeiger des Bildes + */ + + public void setObserver(PictureViewer observer) { + this.observer= observer; + } + + /** + * Direktes Setzen des Bildes (für interne Zwecke) + * @param b Bild, das gespeichert werden soll. + */ + public void setImage(BufferedImage b) { + image = b; + } + + /** + * Direktes Abfragen des Bildes (für interne Zwecke) + * @return Bild, das gerade gespeichert ist. + */ + public BufferedImage getImage() { + return image; + } + + /** + * Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + * Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + * der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu. + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public void size(int width, int height){ + pushImage(); + this.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(background); + g.fillRect(0,0,width-1, height-1); + } + + /** + * Liefert die Breite des Bildes zurück. + * @return Breite des Bildes + */ + public int getWidth() { + return image.getWidth(); + } + + /** + * Liefert die Höhe des Bildes zurück. + * @return Höhe des Bildes + */ + public int getHeight() { + return image.getHeight(); + } + + + /** + * Erzeugt eine Kopie des Bildes und übergibt sie an den Observer (falls existent), damit dieser die Versionen speichern kann + */ + private void pushImage() { + if(observer != null) { + observer.pushImage(); + } + } + + + /** + * Legt fest, ob nach jedem Zeichenbefehl automatisch das Bild auch in + * der Oberfläche aktualisiert wird. Die Einstellung "false" beschleunigt + * das Zeichnen aufwändiger Bilder und verhindert "Flackern". + * Das Neuzeichnen kann durch die Methode "refresh" gezielt ausgelöst werden. + * @param autorefresh true = nach jedem Zeichenbefehl die Anzeige aktualisieren, false= nur durch die Methode refresh neu zeichnen + */ + public void setAutoRefresh(boolean autoRefresh) { + this.autorefresh = autoRefresh; + } + + + /** + * Auch die anzeigenden Klasse wird zum Neuzeichnen aufgefordert. + */ + private void repaint() { + if(observer != null && autorefresh) { + observer.repaint(); + } + } + + /** + * Auch die anzeigenden Klasse wird zum Neuzeichnen aufgefordert. + */ + public void refresh() { + if(observer != null) { + observer.repaint(); + } + } + + // ----------------------------------------- Zeichenfunktionen ----------------------------------------------- + /** + * Löscht den Inhalt des Bildes. + * Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt. + */ + + public void clear(){ + pushImage(); + image = new BufferedImage(image.getWidth(), image.getHeight(), image.getType()); + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(background); + g.fillRect(0,0,image.getWidth()-1, image.getHeight()-1); + repaint(); + } + + /** + * Konvertiert die in einem bestimmten Modus gegebenen Koordinaten in die Java-übliche Links_Oben_Breite_Höhe Version + * Die Änderungen werden direkt im Array vorgenommen + * @param coord Array mit vier Koordinateneinträgen im gegebenen Modus + * @param mode Modus der Koordinaten (CORNER, CORNERS, RADIUS oder CENTER) + */ + private void convert(int[] coord, int mode) { + switch(mode) { + case CORNER: break; + case CORNERS: coord[2] -= coord[0]; coord[3] -= coord[1]; break; + case RADIUS: coord[2] *= 2; coord[3] *=2; + case CENTER: coord[0] -= coord[2]/2; coord[1] -= coord[3]/2; + } + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + * Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + * Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void rectMode(int mode) { + rectMode = mode; + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + * Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + * Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als Breite und Höhe der Form. + * ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void ellipseMode(int mode) { + ellipseMode = mode; + } + + + + /** + * Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + * Um eine Linie einzufärben, verwenden Sie die {@link #stroke(int, int, int) stroke()} Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + * Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + * {@link #strokeWeight(double) strokeWeight()} geändert werden. + * @param x1 x-Koordinate des 1. Punktes + * @param y1 y-Koordinate des 1. Punktes + * @param x2 x-Koordinate des 2. Punktes + * @param y2 y-Koordinate des 2. Punktes + */ + public void line(int x1, int y1, int x2, int y2) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + if (stroke > 0) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawLine(x1, y1, x2, y2); + } + repaint(); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, rectMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillRect(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawRect(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, ellipseMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillOval(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawOval(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + int px[] = {x1, x2, x3}; + int py[] = {y1, y2, y3}; + polygon(px, py); + + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + + int px[] = {x1, x2, x3, x4}; + int py[] = {y1, y2, y3, y4}; + polygon(px, py); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + + public void polygon(int[] x, int[] y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(fillcolor != null) { + + g.setColor(fillcolor); + g.fillPolygon(x,y, y.length); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawPolygon(x, y, x.length); + } + repaint(); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + ellipse(x,y,1, 1); + + } + + // ----------------------------------------- Schriftdarstellung ----------------------------------------------- + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param s Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String s, int x, int y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(pencolor != null) { + g.setColor(fillcolor); + g.setStroke(new BasicStroke((float) stroke)); + g.setFont(textfont); + g.drawString(s, x, y); + } + repaint(); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + this.textfont = font; + } + + + // ----------------------------------------- Farbfestlegungen ----------------------------------------------- + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(String color) { + try{ + return new Color( + Integer.valueOf( color.substring( 0, 2 ), 16 ), + Integer.valueOf( color.substring( 2, 4 ), 16 ), + Integer.valueOf( color.substring( 4, 6 ), 16 ) ); + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(int color) { + try{ + if(color >=0 && color < 256) { + return new Color(color,color,color); + } else { + int r = color / 0x010000 % 0xFF; + int g = color / 0x000100 % 0xFF; + int b = color % 0xFF; + System.out.println(""+r+","+g+","+b); + return new Color(r, g, b ); + } + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + this.pencolor = decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + this.pencolor=decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + this.pencolor = new Color(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + this.pencolor = null; + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + this.stroke = width; + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + this.fillcolor = decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + this.fillcolor=decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + this.fillcolor = new Color(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + this.fillcolor = null; + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + if(c < 256) { + this.background=new Color(c,c,c); + } else { + int r = c / 0x010000; + int g = c / 0x000100 % 0xFF; + int b = c % 0xFF; + this.background= new Color(r, g, b ); + } + + this.clear(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + this.background=new Color(r,g,b); + this.clear(); + } + + +// ----------------------------------------- Dateioperationen ----------------------------------------------- + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + try{ + this.image = ImageIO.read(new File(filename)); + this.background = decode("D0D0D0"); + this.pencolor = new Color(0,0,0); + this.fillcolor = null; + this.stroke = 1; + this.repaint(); + + } catch(Exception e) { + System.out.println("Fehler beim Einlesen der Bilddatei"); + } + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + try{ + String[] fn = filename.split("\\."); + if (fn.length== 1) { + ImageIO.write(image, "PNG", new File(filename+".png")); + } else { + + if (fn.length == 2 && (fn[1].toUpperCase().equals("PNG") || + fn[1].toUpperCase().equals("GIF"))){ + ImageIO.write(image, fn[1], new File(filename)); + }else { + System.out.println("Unbekanntes Bildformat"); + } + } + + } catch(Exception e) { + System.out.println("Fehler beim Speichern"); + } + } + + +// ----------------------------------------- Sonstiges ----------------------------------------------- + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + + public Color[][] getPixelArray() { + Color[][] pixel = new Color[image.getWidth()][image.getHeight()]; + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + pixel[x][y] = new java.awt.Color(image.getRGB(x,y)); + } + } + return pixel; + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + size(pixel.length,pixel[0].length); + Graphics2D g = (Graphics2D) image.getGraphics(); + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + g.setColor(pixel[x][y]); + g.fillRect(x, y, 1, 1); + } + } + repaint(); + } + + /** + * Hilfsfunktion zum Verzögern der Ausgabe + * @param millis Wartezeit in Millisekunden + */ + public void delay(int millis) { + try{ + Thread.sleep(millis); + + } catch(Exception e) { + + } + + } + + + +} diff --git a/01_hintergrund/01_implementierung_java_klassen/JavaEditor/PictureViewer.java b/01_hintergrund/01_implementierung_java_klassen/JavaEditor/PictureViewer.java new file mode 100644 index 0000000..9c2e0b5 --- /dev/null +++ b/01_hintergrund/01_implementierung_java_klassen/JavaEditor/PictureViewer.java @@ -0,0 +1,505 @@ +/** + * Zeigt ein Bild in einem Scrollbereich an. + * Es ist möglich das Bild zu zoomen und mehrere Versionen des Bildes zu speichern, um eine "Rückgängig" Operation durchzuführen. + * @author Thomas Schaller + * @version 1.0 vom 01.02.2019 + */ + +import java.awt.*; +import java.awt.event.*; +import javax.swing.*; +import java.awt.image.*; +import java.util.Vector; + +public class PictureViewer extends JScrollPane +{ + + // das aktuelle Bild + private Picture picture; + + // Bilder für den Züruck-Modus speichern + private static final int ANZ_BACK = 20; + private Vector history; + + // Zeichenfläche + private ImageIcon scrollImageIcon; + private JLabel imageLabel; + + // Zoom Faktor + private double zoomFactor; + public static final int FIT = -1; + public static final int NORMAL = 1; + + + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der Größe 1000x1000 + */ + public PictureViewer() { + this(1000,1000); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public PictureViewer(int width, int height) { + this(width,height, "D0D0D0"); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + * @param background Farbe des Hintergrunds als HEX-String (z.B. "FF3A45") + */ + public PictureViewer(int width, int height, String background) { + this(new Picture(width,height, background)); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild aus einer Bilddatei + * @param filename Name des Bildes + */ + public PictureViewer(String filename) { + this(new Picture(filename)); + } + + /** + * Erzeugt ein ScrollPanel und zeigt das Bild-Objekt an + * @param picture anzuzeigendes Bild + */ + public PictureViewer(Picture picture) + { + this.picture=picture; + + zoomFactor=1; + + scrollImageIcon = new ImageIcon(picture.getImage().getScaledInstance(picture.getImage().getWidth(), picture.getImage().getHeight(), Image.SCALE_FAST)); + imageLabel = new JLabel(scrollImageIcon); + imageLabel.setVerticalAlignment(JLabel.CENTER); + imageLabel.setHorizontalAlignment(JLabel.CENTER); + setViewportView(imageLabel); + + this.setBorder(BorderFactory.createLineBorder(Color.black)); + picture.setObserver(this); + history = new Vector(); + + } + + /** + * Setzt das anzuzeigende Bild neu + * @param picture anzuzeigendes Bild + */ + public void setImage(Picture picture) { + this.history = new Vector(); + this.picture = picture; + setZoom(NORMAL); + } + + /** + * Speichert das übergebene Bild in der History. + * @param b zu speicherndes Bild + */ + public void pushImage() { + if( this.ANZ_BACK > 0) { + if(history.size() == this.ANZ_BACK) { + history.removeElementAt(0); + } + + BufferedImage b = new BufferedImage(picture.getWidth(), picture.getHeight(), picture.getImage().getType()); + Graphics g = b.getGraphics(); + g.drawImage(picture.getImage(), 0, 0, null); + g.dispose(); + + history.add(b); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + private void popImage() { + int anz = history.size(); + if(anz>0) { + BufferedImage img = history.get(anz-1); + history.removeElementAt(anz-1); + picture.setImage(img); + setZoom(zoomFactor); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + public void back() { + popImage(); + } + + /** + * Setzt das angezeigt Bild neu und beachtet dabei den Zoomfaktor. + */ + public void repaint() { + if( picture != null) { + double factor= zoomFactor; + if (zoomFactor == FIT) { + double factorw = ((double) getWidth()-2) / picture.getWidth(); + double factorh = ((double) getHeight()-2) / picture.getHeight(); + factor = Math.min(factorw, factorh); + } + int width = (int) (picture.getWidth()*factor); + int height = (int) (picture.getHeight()*factor); + + + + scrollImageIcon.setImage(picture.getImage().getScaledInstance(width, height, Image.SCALE_DEFAULT)); + revalidate(); + } + } + + /** + * Setzt den Zoom-Faktor für das Bild. + * Als Zoomfaktor sind auch die Konstanten Bildanzeiger.FIT (auf Bildschirmgröße zoomen) und Bildanzeiger.NORMAL (100%) möglich. + * @param factor Zoomfaktor (1.0 = 100%). + */ + public void setZoom(double factor) + { + zoomFactor = factor; + repaint(); + } + + + // Wrappermethoden + /** + * Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + * Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + * der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu. + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public void size(int width, int height){ + picture.size(width, height); + } + + /** + * Liefert die Breite des Bildes zurück. + * @return Breite des Bildes + */ + public int getImageWidth() { + return picture.getWidth(); + } + + /** + * Liefert die Höhe des Bildes zurück. + * @return Höhe des Bildes + */ + public int getImageHeight() { + return picture.getHeight(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + picture.background(c); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + picture.background(r,g,b); + } + + /** + * Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + * Um eine Linie einzufärben, verwenden Sie die {@link #stroke(int, int, int) stroke()} Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + * Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + * {@link #strokeWeight(double) strokeWeight()} geändert werden. + * @param x1 x-Koordinate des 1. Punktes + * @param y1 y-Koordinate des 1. Punktes + * @param x2 x-Koordinate des 2. Punktes + * @param y2 y-Koordinate des 2. Punktes + */ + public void line(int x1, int y1, int x2, int y2) { + picture.line(x1,y1,x2,y2); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + picture.rect(a,b,c,d); + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + picture.ellipse(a,b,c,d); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + picture.triangle(x1,y1,x2,y2,x3,y3); + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + picture.quad(x1,y1,x2,y2,x3,y3,x4,y4); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + public void polygon(int[] x, int[] y) { + picture.polygon(x,y); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + picture.point(x,y); + + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + * Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + * Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void rectMode(int mode) { + picture.rectMode(mode); + } + + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + * Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + * Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als Breite und Höhe der Form. + * ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void ellipseMode(int mode) { + picture.ellipseMode(mode); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + picture.stroke(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + picture.noStroke(); + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + picture.strokeWeight(width); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + picture.fill(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + picture.noFill(); + } + + /** + * Löscht den Inhalt des Bildes. + * Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt. + */ + public void clear(){ + picture.clear(); + } + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + picture.load(filename); + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + picture.save(filename); + } + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param t Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String t, int x, int y) { + picture.text(t,x,y); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + picture.textFont(font); + } + + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + public Color[][] getPixelArray() { + return picture.getPixelArray(); + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + picture.setPixelArray(pixel); + } + + + +} diff --git a/01_hintergrund/01_implementierung_java_klassen/JavaEditor/Table.java b/01_hintergrund/01_implementierung_java_klassen/JavaEditor/Table.java new file mode 100644 index 0000000..ee5a211 --- /dev/null +++ b/01_hintergrund/01_implementierung_java_klassen/JavaEditor/Table.java @@ -0,0 +1,894 @@ +/** + * Die Klasse Table vereinfacht den Zugriff auf CSV-Dateien. + * Die Klassen Table und TableRow ermöglichen einen einfachen Zugriff auf tabellenbasierte + * Dokumente. + * + * @author Thomas Schaller + * @version 1.0 vom 01.02.2019 + */ + +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.ArrayList; +import java.io.*; +import java.util.Scanner; + +import org.jdom.Document; +import org.jdom.Element; +import org.jdom.Attribute; +import org.jdom.JDOMException; +import org.jdom.input.SAXBuilder; +import org.jdom.output.XMLOutputter; +import org.jdom.output.Format; + +public class Table +{ + // Standardtrennzeichen für Spalten + private static final char DEFAULT_SEPARATOR = ';'; + // Standardmarkierung für Texte + private static final char DEFAULT_QUOTE = '"'; + // Standardtrennzeichen für Dezimalzahlen + private static final char DEFAULT_COMMA = ','; + + // mögliche Spaltentypen + private static final String UNKNOWN ="UNKOWN"; + private static final String INT = "INTEGER"; + private static final String DOUBLE = "DOUBLE"; + private static final String FLOAT = "FLOAT"; + + // interne Verwaltung des Dokuments als JDOM-Document-Objekt + private Document doc; + // Verweis auf Element für Kopfzeile + private Element header; + // Ende Attribute + + /** + * Erzeugt leeres Tabellen-Dokument. + */ + public Table() { + this.doc = new Document(); + doc.setRootElement(new Element("CSV-Data")); + this.header = new Element("Header"); + doc.getRootElement().addContent(header); + } + + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei und erstellt ein Tabellenobjekt mit seinen Werten. + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public Table(String filename, String options, char separator, char quote) { + loadCSV(filename, options, separator, quote); + } + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei und erstellt ein Tabellenobjekt mit seinen Werten (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + */ + public Table(String filename, String options) { + loadCSV(filename, options); + } + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei ohne Kopfzeile und erstellt ein Tabellenobjekt mit seinen Werten (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public Table(String filename) { + loadCSV(filename); + } + + // Anfang Methoden + /** + * Liest den Inhalt einer CSV-Datei ohne Kopfzeile (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public void loadCSV(String filename) { + loadCSV(filename, ""); + } + + /** + * Liest den Inhalt einer CSV-Datei (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + */ + public void loadCSV(String filename, String options) { + loadCSV(filename, options, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** + * Liest den Inhalt einer CSV-Datei. + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public void loadCSV(String filename, String options, char separator, char quote) { + doc = new Document(); + doc.setRootElement(new Element("CSV-Data")); + header = new Element("Header"); + doc.getRootElement().addContent(header); + try { + File f = new File(filename); + Scanner scanner = new Scanner(new File(filename)); + if(options.toLowerCase().contains("header") && scanner.hasNext()) { + List entries = parseLine(scanner.nextLine(), separator, quote); + int i= 0; + for(String s : entries) { + Element entry = new Element("Column"); + header.addContent(entry); + entry.setText(s); + entry.setAttribute("type", "unknown"); + i++; + } + } + + List cols = header.getChildren(); + + while (scanner.hasNext()) { + Element line = new Element("Row"); + doc.getRootElement().addContent(line); + List entries = parseLine(scanner.nextLine(), separator, quote); + int i= 0; + + for(String s : entries) { + + if(i==cols.size()) { + Element entry = new Element("Column"); + entry.setAttribute("type", "unknown"); + header.addContent(entry); + cols = header.getChildren(); + } + + Element entry = new Element("Entry"); + entry.setText(s); + line.addContent(entry); + i++; + } + } + scanner.close(); + + } catch (Exception e) { + System.out.println("Fehler beim Lesen der CSV-Datei"); + } + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei ohne Kopfzeile (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public void saveCSV(String filename) { + saveCSV(filename, ""); + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthalten, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile haben soll, + * dann lassen Sie einfach die Option "header" weg. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile haben soll. + * @param filename Dateiname der CSV-Datei. + */ + public void saveCSV(String filename, String options) { + saveCSV(filename, options, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei. + * Wenn die Datei eine Kopfzeile enthalten, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile haben soll, + * dann lassen Sie einfach die Option "header" weg. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile haben soll. + * @param filename Dateiname der CSV-Datei. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public void saveCSV(String filename, String options, char separator, char quote){ + try{ + File f = new File(filename); + PrintStream outputFile = new PrintStream (f); + System.out.println("Speicher in : "+f.getAbsolutePath()); + List columns = header.getChildren(); + String sq = ""+quote; + String ss = ""+separator; + if(quote =='"') sq = "\""; + if(separator =='"') ss = "\""; + + if(options.toLowerCase().contains("header")) { + String h = ""; + for(Element c : columns) { + h += ss + sq + c.getText()+sq; + } + outputFile.println(h.substring(1)); + } + for(int i = 0; i parseLine(String cvsLine) { + return parseLine(cvsLine, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** HIlfsfunktion für die Analyse einer Dateizeile + * @param cvsLine Zeile aus der Datei + * @param sparator Trennzeichen für die Spalten + * @return Liste von String für die einzelnen Spalten + */ + private List parseLine(String cvsLine, char separator) { + return parseLine(cvsLine, separator, DEFAULT_QUOTE); + } + + /** HIlfsfunktion für die Analyse einer Dateizeile + * @param cvsLine Zeile aus der Datei + * @param sparator Trennzeichen für die Spalten + * @param customQuote Kennung für Strings + * @return Liste von String für die einzelnen Spalten + */ + private List parseLine(String cvsLine, char separator, char customQuote) { + + List result = new ArrayList<>(); + + //if empty, return! + if (cvsLine == null && cvsLine.isEmpty()) { + return result; + } + + //ggf. Default-Value laden + if (customQuote == ' ') { + customQuote = DEFAULT_QUOTE; + } + + if (separator == ' ') { + separator = DEFAULT_SEPARATOR; + } + + StringBuffer curVal = new StringBuffer(); + boolean inQuotes = false; + boolean startCollectChar = false; + boolean doubleQuotesInColumn = false; + + char[] chars = cvsLine.toCharArray(); + + for (char ch : chars) { + + if (inQuotes) { // aktueller Text ist in Quotes eingeschlossen + startCollectChar = true; + + if (ch == customQuote) { // Quotes werden beendet, aber Achtung bei "" => Metazeichen + inQuotes = false; + if (ch == '\"') { + doubleQuotesInColumn = true; + } + + } else { + + if (ch == '\"' && !doubleQuotesInColumn) { + doubleQuotesInColumn = true; + } else { + curVal.append(ch); + doubleQuotesInColumn = false; + } + + } + } else { + if (ch == customQuote) { + + inQuotes = true; + + //Fixed : allow "" in empty quote enclosed + if (ch == '\"'){ + if(doubleQuotesInColumn) { + curVal.append('"'); + doubleQuotesInColumn = false; + } else doubleQuotesInColumn = true; + + + } + } + else { + doubleQuotesInColumn = false; + if (ch == separator) { + + result.add(curVal.toString()); + + curVal = new StringBuffer(); + startCollectChar = false; + + } else if (ch == '\r') { + //ignore LF characters + continue; + } else if (ch == '\n') { + //the end, break! + break; + } else { + curVal.append(ch); + } + } + } + + } + result.add(curVal.toString()); + return result; + } + + /** + * Sucht die Nummer einer durch Namen gegebenen Spalte. + * @param name Name der Spalte + * @return Nummer der Spalte + */ + + private int findColumnNumber(String name) { + List columns = header.getChildren(); + int i = 0; + for(Element c : columns) { + if (c.getText().toLowerCase().equals(name.toLowerCase())) { + return i; + + } + i++; + } + return -1; + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an. + */ + public void addColumn() { + Element entry = new Element("Column"); + entry.setAttribute("type", Table.UNKNOWN); + header.addContent(entry); + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an und benennt sie. + * @param title Bezeichnung der Spalte + */ + public void addColumn(String title) { + addColumn(); + Element nc = ((List)(header.getChildren())).get(header.getChildren().size()-1); + nc.setText(title); + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an und benennt und typisiert sie. + * @param title Bezeichnung der Spalte + * @param type Typ der Spalte (UNKNOWN, DOUBLE, INTEGER, FLOAT) + */ + public void addColumn(String title, String type) { + addColumn(title); + Element nc = ((List)(header.getChildren())).get(header.getChildren().size()-1); + nc.setAttribute("type", type); + } + + /** + * Löscht eine Spalte. + * @param i Nummer der Spalte. + */ + public void removeColumn(int i) { + List lines = doc.getRootElement().getChildren(); + for(Element l : lines) { + if(l.getChildren().size()>i) l.removeContent(i); + } + } + + /** + * Löscht eine Spalte + * @param name Name der Spalte + */ + public void removeColumn(String name) { + try{ + removeColumn(findColumnNumber(name)); + } catch(Exception e) { System.out.println("Unbekannter Spaltenname");} + } + + /** + * Liefert die Anzahl der Spalten in der Tabelle + * @return Anzahl der Spalten + */ + public int getColumnCount() { + return header.getChildren().size(); + } + + /** + * Liefert die Anzahl der Zeilen in der Tabelle + * @return Anzahl der Zeilen + */ + public int getRowCount() { + return doc.getRootElement().getChildren().size()-1; + } + + /** + * Löscht alle Zeilen der Tabelle. + * Die Spaltenüberschriften und Typen bleiben erhalten. + */ + public void clearRows() { + doc.getRootElement().removeChildren("Row"); + } + + /** + * Fügt eine neue Zeile an das Ende der Tabelle an. + * @return ein TableRow-Objekt für diese neue Zeile + */ + public TableRow addRow() { + Element row = new Element("Row"); + doc.getRootElement().addContent(row); + return new TableRow(doc, row); + } + + /** + * Löscht eine Zeile + * @param i Nummer der Zeile + */ + public void removeRow(int i) { + if(i rows = doc.getRootElement().getChildren(); + return new TableRow(doc, rows.get(i+1)); + } + return null; + } + + /** + * Liefert die ganze Tabelle als Array von TableRow-Objekten + * @return Array von TableRow-Objekten + */ + public TableRow[] rows() { + TableRow[] rows = new TableRow[getRowCount()]; + for(int i = 0; i < getRowCount(); i++) { + rows[i] = getRow(i); + } + return rows; + } + + /** + * Liefert den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param column Spaltennummer + * @return Wert der Zelle + */ + public int getInt(int row, int column) { + return getRow(row).getInt(column); + } + + /** + * Liefert den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param name Name der Spalte + * @return Wert der Zelle + */ + public int getInt(int row, String name) { + return getRow(row).getInt(name); + } + + /** + * Setzt den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param column Spaltennummer + * @param value neuer Wert der Zelle + */ + public void setInt(int row, int column,int value) { + getRow(row).setInt(column, value); + } + + /** + * Setzt den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(int row, String name, int value) { + getRow(row).setInt(name, value); + } + + /** + * Liefert alle Werte einer Zeile als Integer-Array. + * @param row Nummer der Zeile + * @return int-Array, dass alle Werte der Zeile enthält + */ + public int[] getIntRow(int row) { + try{ + TableRow trow = getRow(row); + int anz = getColumnCount(); + int[] r = new int[anz]; + for(int i=0; i) (header.getChildren())).get(i).getText(); + } else { + return ""; + } + } + + /** + * Liefert die Nummer einer Spalte + * @param name Name der Spalte + * @return Nummer der Spalte + */ + public int getColumn(String name) { + List columns = header.getChildren(); + int i = 0; + while (i < columns.size()) { + if (columns.get(i).getText().toLowerCase().equals(name.toLowerCase())) { + return i; + } + i++; + } // end of while + return -1; + } + + + /** + * Erzeugt eine neue Zeile mit i Spalten + * Wenn bisher nicht genügend Spalten vorhanden sind, werden automatisch neue Spalten hinzugefügt (auch zum Header) + * @param i Anzahl der Spalten + */ + private Element buildRow(int i) { + List columns = header.getChildren(); + Element entry=null; + for(int j=0; j<=i; j++) { + + if(j==columns.size()) { + Element h = new Element("Column"); + h.setAttribute("type", "unknown"); + header.addContent(h); + columns = header.getChildren(); + } + if(j==current.getChildren().size()) { + entry = new Element("Entry"); + current.addContent(entry); + + } + + } + return entry; + + } + + /** + * Erzeugt eine neue Zeile. + * Es werden genügend Spalten erzeugt, dass ein Wert in Spalte "name" eingetragen werden kann + * @param name Name der Spalte + */ + private Element buildRow(String name) { + List columns = header.getChildren(); + int i = 0; + for(Element c: columns) { + + if(c.getText().toLowerCase().equals(name.toLowerCase())) { + return buildRow(i); + } + i++; + } + return null; + + } + + /** + * Liefert den Wert einer Zelle als String + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public String getString(int i) { + if(i >= current.getContent().size()) return ""; + Element e = (Element) current.getContent(i) ; + if(e!=null) { + return e.getText(); + } else { + return ""; + } + } + + /** + * Liefert den Wert einer Zelle als String + * @param name Name der Spalte + * @return Wert der Zelle + */ + public String getString(String name) { + return getString(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als String + * @param i Nummer der Spalte + * @param text neuer Wert der Zelle + */ + public void setString(int i, String text) { + + Element e = buildRow(i); + if(e!=null) e.setText(text); + } + + /** + * Setzt den Wert einer Zelle als String + * @param name Name der Spalte + * @param text neuer Wert der Zelle + */ + public void setString(String name, String text) { + Element e = buildRow(name); + if(e!=null) e.setText(text); + } + + + /** + * Liefert den Wert einer Zelle als Int-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public int getInt(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Integer.parseInt(e.getText()); + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Int-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public int getInt(String name) { + return getInt(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Int-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(int i,int value) { + + Element e = buildRow(i); + if(e!=null) e.setText(""+value); + } + + /** + * Setzt den Wert einer Zelle als Int-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(String name, int value) { + Element e = buildRow(name); + if(e!=null) e.setText(""+value); + } + + /** + * Liefert den Wert einer Zelle als Float-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public float getFloat(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Float.parseFloat(e.getText().replace(",",".")); + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Float-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public float getFloat(String name) { + return getFloat(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Float-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setFloat(int i,float value) { + + Element e = buildRow(i); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Setzt den Wert einer Zelle als Float-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setFloat(String name, float value) { + Element e = buildRow(name); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Liefert den Wert einer Zelle als Double-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public double getDouble(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Double.parseDouble(e.getText().replace(",",".")); + + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Double-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public double getDouble(String name) { + return getDouble(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Double-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setDouble(int i,double value) { + + Element e = buildRow(i); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Setzt den Wert einer Zelle als Double-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setDouble(String name, double value) { + Element e = buildRow(name); + if(e!=null) e.setText(format.format(value)); + } + +} diff --git a/01_hintergrund/01_implementierung_java_klassen/JavaEditor/XML.java b/01_hintergrund/01_implementierung_java_klassen/JavaEditor/XML.java new file mode 100644 index 0000000..de83525 --- /dev/null +++ b/01_hintergrund/01_implementierung_java_klassen/JavaEditor/XML.java @@ -0,0 +1,637 @@ +/** + * Klasse zum Vereinfachten Zugriff auf XML-Dokumente + * Diese Klasse ist für den Einsatz in der Schule gedacht und soll den Schülern + * einen einfachen Zugriff auf XML-Dokumente ermöglichen. Die zur Verfügung + * stehenden Befehle sind wie in Processing realisiert. + * Dabei ist jeder Teilbaum des Dokuments wieder als XML-Objekt zugreifbar, das + * intern auf die gleiche XML-Dokumentstruktur zugreift. + * Dies ermöglicht bei unsachgemäßem Gebrauch die XML-Struktur zu zerstören. Im + * normalen Gebrauch sollte dies aber nicht relevant sein. + * + * Benötigt: jdom-1.1.3.jar + + * @author Thomas Schaller + * @version 1.0 vom 31.01.2019 + */ +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.ArrayList; +import java.io.*; + +import org.jdom.Document; +import org.jdom.Element; +import org.jdom.Attribute; +import org.jdom.JDOMException; +import org.jdom.input.SAXBuilder; +import org.jdom.output.XMLOutputter; +import org.jdom.output.Format; + +public class XML { + // Anfang Attribute + // XML-Dokumentstruktur + private Document doc; + // Zeiger auf das aktuelle Element + private Element current; + // Ende Attribute + + /** + * Erzeugt ein leeres XMLDokument + */ + public XML() { + this.doc = new Document(); + this.current = null; + } + + /** + * Erzeugt ein XML-Dokument aus einer Datei + * @param filename Dateiname der XML-Datei + */ + public XML(String filename) { + loadXML(filename); + } + + /** + * interner Konstruktor, um ein XML Objekt zu erzeugen, das auf einen bestimmten Knoten verweist + * @param doc die XML-Dokumentstruktur + * @param current Zeiger auf das aktuelle Element + */ + private XML(Document doc, Element current) { + this.doc = doc; + this.current = current; + } + + // Anfang Methoden + /** Öffnet das durch den Dateinamen gegebene Dokument + * @param filename Dateiname des XML-Files + */ + public void loadXML(String filename) { + doc = null; + File f = new File(filename); + + try { + // Das Dokument erstellen + SAXBuilder builder = new SAXBuilder(); + doc = builder.build(f); + + } catch (JDOMException e) { + e.printStackTrace(); + + } catch (IOException e) { + e.printStackTrace(); + } + // Zeiger im Baum auf Root-Element + current = doc.getRootElement(); + } + + /** Speichert den XML-Baum im angegebenen Dateinamen + * @param filename Dateiname des XML-Files + */ + public void saveXML(String filename) { + try { + // new XMLOutputter().output(doc, System.out); + XMLOutputter xmlOutput = new XMLOutputter(); + + // display nice nice + xmlOutput.setFormat(Format.getPrettyFormat()); + File f = new File(filename); + FileOutputStream outputFile = new FileOutputStream(f); + System.out.println("Speicher in : "+f.getAbsolutePath() ); + xmlOutput.output(doc, outputFile); + outputFile.close(); + System.out.println("File Saved!"); + } catch (IOException io) { + System.out.println(io.getMessage()); + } + + } + + //----------------------------------------------- Zeigerbewegungen -------------------------------------------------- + /** + * liefert ein XML-Objekt, das auf den Vaterknoten des aktuellen Elements zeigt. + * @return Vater des aktuellen Objekts. + */ + public XML getParent() { + if(current != null) { + Element parent = current.getParentElement(); + if (parent == null) { + return null; + } else { + return new XML(doc, parent); + } + } + return null; + } + + /** + * Überprüft, ob das Element irgendwelche Kinder hat oder nicht, und gibt das Ergebnis als boolean zurück. + * @return true, wenn Kinder vorhanden sind, sonst false + */ + public boolean hasChildren() { + if (current == null) { + return doc.hasRootElement(); + } else { + return current.getChildren().size()>0; + } + } + + /** + * Ermittelt die Namen aller Kinder des Elements und gibt die Namen als ein Array von Strings zurück. + * Dies ist dasselbe wie das Durchlaufen und Aufrufen von getName() auf jedem untergeordneten Element einzeln. + * @return Liste aller Namen der Kinder + */ + public String[] listChildren() { + if (current == null) { + if(doc.hasRootElement()) { + String[] names = new String[0]; + names[0] = doc.getRootElement().getName(); + return names; + } else { + return null; + } + } else { + List ch_element = current.getChildren(); + String[] names = new String[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + names[i] = ch_element.get(i).getName(); + } + return names; + } + } + + /** + * Liefert alle Kinder des Elements als Array von XML-Objekten. + * @return Array der Kinder als XML-Objekte + */ + public XML[] getChildren() { + if (current == null) { + if(doc.hasRootElement()) { + XML[] ch_xml = new XML[1]; + ch_xml[0] = new XML(doc, doc.getRootElement()); + return ch_xml; + } else { + return null; + } + } else { + List ch_element = current.getChildren(); + XML[] ch_xml = new XML[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + ch_xml[i] = new XML(doc, ch_element.get(i)); + } + return ch_xml; + } + } + + /** + * Liefert bestimmte Kinder des Elements als Array von XML-Objekten. + * Die Methode gibt dabei alle Kinder zurück, die dem angegebenen Namen entsprechen. + * @param name Name der gesuchten Kind-Objekte + * @return Array der Kinder als XML-Objekte + */ + public XML[] getChildren(String name) { + if (current == null) { + if(doc.hasRootElement()) { + XML[] ch_xml = new XML[1]; + ch_xml[0] = new XML(doc, doc.getRootElement()); + if(doc.getRootElement().getName().equals(name)){ + return ch_xml; + } else { + return null; + } + } else { + return null; + } + } else { + List ch_element = current.getChildren(name); + XML[] ch_xml = new XML[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + ch_xml[i] = new XML(doc, ch_element.get(i)); + } + return ch_xml; + } + } + + /** + * Liefert das erste Kind des Elements mit einem bestimmten Namen. + * Die Methode gibt das erste Kind zurück, das dem angegebenen Namen entsprechen. + * @param name Name des gesuchten Kind-Objektes + * @return Kind als XML-Objekt + */ + + public XML getChild(String name) { + if (current == null) { + Element e = doc.getRootElement(); + if (e.getName().equals(name)) { + return new XML(doc, e); + } else { + return null; + } + } else { + String[] names = name.split("/"); + Element e = current; + int i = 0; + while(i < names.length) { + e = e.getChild(names[i]); + if (e==null) return null; + i++; + } + return new XML(doc, e); + } + } + + /** + * Liefert das i. Kind des Elements. + * Die Methode gibt das i. Kind des aktuellen Elements zurück. + * @param i Nummer des Kindes + * @return Kind als XML-Objekt + */ + public XML getChild(int i) { + if (current == null) { + return new XML(doc, doc.getRootElement()); + } else { + List ch_element = current.getChildren(); + if (i>=ch_element.size()) return null; + return new XML(doc, ch_element.get(i)); + } + } + + //--------------------------------------------------- Methoden für das aktuelle Element ------------------------------------------------- + /** + * Frage den Namen des aktuellen Elements ab + * @return Namen des Elements + */ + public String getName() { + if (current==null) return ""; + return current.getName(); + } + + /** + * Setze den Namen des aktuellen Elements. + * @param name Neuer Name des Elements + */ + public void setName(String name) { + if (current==null) return; + current.setName(name); + } + + /** + * liefert die Anzahl der Attribute eines Elements. + * @return Anzahl des Attribute + */ + public int getAttributeCount() { + if (current == null) return 0; + return current.getAttributes().size(); + } + + /** + * liefert zurück, ob das aktuelle Element Attribute hat . + * @return true, wenn es Attribute gibt + */ + public boolean hasAttribute() { + if (current == null) return false; + return current.getAttributes().size()>0; + } + + /** + * Ruft alle Attribute des angegebenen Elements ab und gibt sie als Array von Strings zurück. + * @return Liste der Attributnamen + */ + public String[] listAttributes() { + if (current == null) return null; + List attr = current.getAttributes(); + String[] names = new String[attr.size()]; + for(int i=0; i < attr.size() ; i++) { + names[i] = attr.get(i).getName(); + } + return names; + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs + */ + public String getString(String attribute) { + if (current==null) return ""; + return current.getAttributeValue(attribute); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs + */ + public String getString(String attribute, String defaultValue) { + if (current==null) return defaultValue; + return current.getAttributeValue(attribute,defaultValue); + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param text neuer Wert des Attributs + */ + public void setString(String attribute, String text) { + if (current==null) return; + current.setAttribute(attribute, text); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Integer-Zahl + */ + public int getInt(String attribute) { + if (current==null) return 0; + try{ + int i = Integer.parseInt(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als Integer-Zahl + */ + public int getInt(String attribute, int defaultValue) { + if (current==null) return defaultValue; + try{ + int i = Integer.parseInt(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setInt(String attribute, int value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Float-Zahl + */ + public float getFloat(String attribute) { + if (current==null) return 0; + try{ + float i = Float.parseFloat(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als Float-Zahl + */ + public float getFloat(String attribute, float defaultValue) { + if (current==null) return defaultValue; + try{ + float i = Float.parseFloat(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setFloat(String attribute, float value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Double-Zahl + */ + public double getDouble(String attribute) { + if (current==null) return 0; + try{ + double i = Double.parseDouble(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + +/** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als double-Zahl + */ + public double getDouble(String attribute, double defaultValue) { + if (current==null) return defaultValue; + try{ + double i = Double.parseDouble(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setDouble(String attribute, double value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt den Inhalt/Text des aktuellen Elements ab + * @return Inhalt des Elements + */ + public String getContent() { + if ( current==null) return ""; + + return current.getText(); + } + + /** + * Fragt den Inhalt/Text des aktuellen Elements ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardtext + * @return Inhalt des Elements + */ + public String getContent(String defaultValue) { + if ( current==null) return defaultValue; + String t = current.getText(); + if(t.equals("")) t = defaultValue; + return t; + } + + /** + * Setzt den Inhalt/Text des aktuellen Elements + * @param text Neuer Inhalt des Elements + */ + public void setContent(String text) { + if ( current==null) return; + current.setText(text); + } + + + /** + * Fragt den Inhalt des aktuellen Elements als Integerzahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ public int getIntContent(int defaultValue) { + if ( current==null) return defaultValue; + try{ + int i = Integer.parseInt(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Integerzahl ab + * @return Inhalt des Elements + */ + public int getIntContent() { + if ( current==null) return 0; + try{ + int i = Integer.parseInt(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setIntContent(int value) { + if ( current==null) return; + current.setText(""+value); + } + + + /** + * Fragt den Inhalt des aktuellen Elements als Floatzahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ + public float getFloatContent(float defaultValue) { + if ( current==null) return defaultValue; + try{ + float i = Float.parseFloat(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Floatzahl ab + * @return Inhalt des Elements + */ + public float getFloatContent() { + if ( current==null) return 0; + try{ + float i = Float.parseFloat(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setFloatContent(float value) { + if ( current==null) return; + current.setText(""+value); + } + +/** + * Fragt den Inhalt des aktuellen Elements als Doublezahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ + public double getDoubleContent(double defaultValue) { + if ( current==null) return defaultValue; + try{ + double i = Double.parseDouble(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Doublezahl ab + * @return Inhalt des Elements + */ + public double getDoubleContent() { + if ( current==null) return 0; + try{ + double i = Double.parseDouble(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setDoubleContent(double value) { + if ( current==null) return; + current.setText(""+value); + } + + + // ----------------------------------------------- XML-Struktur aufbauen ------------------------------------------------ + /** Erzeuge neues Element nach der aktuellen Position und setze dieses als aktuelles Element + * @param name Name des neuen Elements + * @return neues Element als XML-Objekt + */ + public XML addChild(String name) { + Element e = new Element(name); + if(current == null){ // man ist auf Root-Ebene + doc.setRootElement(e); + + } + else { + current.addContent(e); + } // end of if-else + return new XML(doc, e); + } + + /** + * liefert das aktuelle Element als jdom-Element-Objekt + * @return aktuelles Element + */ + private Element getCurrent() { + return current; + } + + /** + * löscht ein Kind des aktuellen Knotens. + * Ist kid kein Kind des aktuellen Elements passiert gar nichts. + * @param kid XML-Objekt des Kindes + */ + public void removeChild(XML kid) { + if (current == null) return; + Element e = kid.getCurrent(); + int index = current.indexOf(e); + if(index >= 0) { current.removeContent(e);} + } + +} diff --git a/01_hintergrund/01_implementierung_java_klassen/JavaEditor/jdom-1.1.3.jar b/01_hintergrund/01_implementierung_java_klassen/JavaEditor/jdom-1.1.3.jar new file mode 100644 index 0000000..a287727 Binary files /dev/null and b/01_hintergrund/01_implementierung_java_klassen/JavaEditor/jdom-1.1.3.jar differ diff --git a/01_hintergrund/02_dokumentation_java_klassen/Picture.html b/01_hintergrund/02_dokumentation_java_klassen/Picture.html new file mode 100644 index 0000000..14e1ce5 --- /dev/null +++ b/01_hintergrund/02_dokumentation_java_klassen/Picture.html @@ -0,0 +1,1293 @@ + + + + + + +Picture + + + + + + + + + + + + +
+

Class Picture

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • Picture
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class Picture
    +extends java.lang.Object
    +
    Bildklasse für die Simulation von Processing-Befehlen + + Diese Klasse stellt ein BufferedImage bereit, in das mit Processing-Befehlen gezeichnet + werden kann. + Zusätzlich kann ein Bildanzeiger über jede Änderung des Bildes informiert werden, + um "Zurück"-Befehle zu ermöglichen. Der Bildanzeiger ist entweder eine normale Java + ScrollPane oder ein Actor aus Greenfoot. + Die Dokumentation der einzelnen Zeichenmethoden ist der Processing-Reference + (https://processing.org/reference/ steht unter CC-Lizenz: https://creativecommons.org/) + entnommen und mit Deepl.com ins Deutsche übersetzt.
    +
    +
    Version:
    +
    1.0 from 23.01.2019
    +
    Author:
    +
    Thomas Schaller (ZPG Informatik Klasse 9)
    +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Field Summary

      + + + + + + + + + + + + + + + + + + + + + + +
      Fields 
      Modifier and TypeField and Description
      static intCENTER 
      static intCORNER 
      static intCORNERS 
      static intRADIUS 
      +
    • +
    + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + + + + + + + + + + +
      Constructors 
      Constructor and Description
      Picture() +
      Erzeugt ein Bild mit Standardgröße 500x400
      +
      Picture(int width, + int height) +
      Erzeugt ein Bild der angegeben Größe
      +
      Picture(int width, + int height, + java.lang.String background) +
      Erzeugt ein Bild der angegebenen Größe mit festgelegtem Hintergrund
      +
      Picture(java.lang.String filename) +
      Erzeugt ein Bild aus einer Datei
      +
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      All Methods Instance Methods Concrete Methods 
      Modifier and TypeMethod and Description
      voidbackground(int c) +
      Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird.
      +
      voidbackground(int r, + int g, + int b) +
      Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird.
      +
      voidclear() +
      Löscht den Inhalt des Bildes.
      +
      voiddelay(int millis) +
      Hilfsfunktion zum Verzögern der Ausgabe
      +
      voidellipse(int a, + int b, + int c, + int d) +
      Zeichnet eine Ellipse/Kreis auf das Bild.
      +
      voidellipseMode(int mode) +
      Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen.
      +
      voidfill(int fillcolor) +
      Legt die Farbe fest, mit der Formen gefüllt werden.
      +
      voidfill(int r, + int g, + int b) +
      Legt die Farbe fest, mit der Formen gefüllt werden.
      +
      voidfill(java.lang.String fillcolor) +
      Legt die Farbe fest, mit der Formen gefüllt werden.
      +
      intgetHeight() +
      Liefert die Höhe des Bildes zurück.
      +
      java.awt.image.BufferedImagegetImage() +
      Direktes Abfragen des Bildes (für interne Zwecke)
      +
      java.awt.Color[][]getPixelArray() +
      Liefert das Bild als zweidimensionales Pixel-Array.
      +
      intgetWidth() +
      Liefert die Breite des Bildes zurück.
      +
      voidline(int x1, + int y1, + int x2, + int y2) +
      Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm.
      +
      voidload(java.lang.String filename) +
      Lädt ein Bild aus dem Dateisystem.
      +
      voidnoFill() +
      Legt fest, dass die Formen nicht gefüllt werden sollen.
      +
      voidnoStroke() +
      Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll.
      +
      voidpoint(int x, + int y) +
      Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels.
      +
      voidpolygon(int[] x, + int[] y) +
      Zeichnet ein Polygon auf das Bild.
      +
      voidquad(int x1, + int y1, + int x2, + int y2, + int x3, + int y3, + int x4, + int y4) +
      Zeichnet ein Viereck auf das Bild.
      +
      voidrect(int a, + int b, + int c, + int d) +
      Zeichnet ein Rechteck auf das Bild.
      +
      voidrectMode(int mode) +
      Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken.
      +
      voidrefresh() +
      Auch die anzeigenden Klasse wird zum Neuzeichnen aufgefordert.
      +
      voidsave(java.lang.String filename) +
      Speichert ein Bild.
      +
      voidsetAutoRefresh(boolean autoRefresh) +
      Legt fest, ob nach jedem Zeichenbefehl automatisch das Bild auch in + der Oberfläche aktualisiert wird.
      +
      voidsetImage(java.awt.image.BufferedImage b) +
      Direktes Setzen des Bildes (für interne Zwecke)
      +
      voidsetObserver(PictureViewer observer) +
      Legt fest, wer das Bild anzeigt.
      +
      voidsetPixelArray(java.awt.Color[][] pixel) +
      Setzt das Bild neu auf Basis des Pixel-Arrays.
      +
      voidsize(int width, + int height) +
      Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten.
      +
      voidstroke(int pencolor) +
      Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden.
      +
      voidstroke(int r, + int g, + int b) +
      Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden.
      +
      voidstroke(java.lang.String pencolor) +
      Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden.
      +
      voidstrokeWeight(double width) +
      Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest.
      +
      voidtext(java.lang.String s, + int x, + int y) +
      Gibt einen Text an den gegebenen Koordinaten aus + Zur Ausgabe des Textes wird der ausgewählte Font verwendet.
      +
      voidtextFont(java.awt.Font font) +
      Legt die Schriftart für Textausgaben fest.
      +
      voidtriangle(int x1, + int y1, + int x2, + int y2, + int x3, + int y3) +
      Zeichnet ein Dreieck auf das Bild.
      +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + + + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        Picture

        +
        public Picture()
        +
        Erzeugt ein Bild mit Standardgröße 500x400
        +
      • +
      + + + +
        +
      • +

        Picture

        +
        public Picture(int width,
        +               int height)
        +
        Erzeugt ein Bild der angegeben Größe
        +
        +
        Parameters:
        +
        width - Breite des Bildes
        +
        height - Höhe des Bildes
        +
        +
      • +
      + + + +
        +
      • +

        Picture

        +
        public Picture(java.lang.String filename)
        +
        Erzeugt ein Bild aus einer Datei
        +
        +
        Parameters:
        +
        filename - Dateiname des Bildes
        +
        +
      • +
      + + + +
        +
      • +

        Picture

        +
        public Picture(int width,
        +               int height,
        +               java.lang.String background)
        +
        Erzeugt ein Bild der angegebenen Größe mit festgelegtem Hintergrund
        +
        +
        Parameters:
        +
        width - Breite des Bildes
        +
        height - Höhe des Bildes
        +
        background - Farbe des Hintergrunds
        +
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        setObserver

        +
        public void setObserver(PictureViewer observer)
        +
        Legt fest, wer das Bild anzeigt. + Diese ermöglicht die Benachrichtung des Observers, wenn sich das Bild ändert.
        +
        +
        Parameters:
        +
        observer - Anzeiger des Bildes
        +
        +
      • +
      + + + +
        +
      • +

        setImage

        +
        public void setImage(java.awt.image.BufferedImage b)
        +
        Direktes Setzen des Bildes (für interne Zwecke)
        +
        +
        Parameters:
        +
        b - Bild, das gespeichert werden soll.
        +
        +
      • +
      + + + +
        +
      • +

        getImage

        +
        public java.awt.image.BufferedImage getImage()
        +
        Direktes Abfragen des Bildes (für interne Zwecke)
        +
        +
        Returns:
        +
        Bild, das gerade gespeichert ist.
        +
        +
      • +
      + + + +
        +
      • +

        size

        +
        public void size(int width,
        +                 int height)
        +
        Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu.
        +
        +
        Parameters:
        +
        width - Breite des Bildes
        +
        height - Höhe des Bildes
        +
        +
      • +
      + + + +
        +
      • +

        getWidth

        +
        public int getWidth()
        +
        Liefert die Breite des Bildes zurück.
        +
        +
        Returns:
        +
        Breite des Bildes
        +
        +
      • +
      + + + +
        +
      • +

        getHeight

        +
        public int getHeight()
        +
        Liefert die Höhe des Bildes zurück.
        +
        +
        Returns:
        +
        Höhe des Bildes
        +
        +
      • +
      + + + +
        +
      • +

        setAutoRefresh

        +
        public void setAutoRefresh(boolean autoRefresh)
        +
        Legt fest, ob nach jedem Zeichenbefehl automatisch das Bild auch in + der Oberfläche aktualisiert wird. Die Einstellung "false" beschleunigt + das Zeichnen aufwändiger Bilder und verhindert "Flackern". + Das Neuzeichnen kann durch die Methode "refresh" gezielt ausgelöst werden.
        +
        +
        Parameters:
        +
        autorefresh - true = nach jedem Zeichenbefehl die Anzeige aktualisieren, false= nur durch die Methode refresh neu zeichnen
        +
        +
      • +
      + + + +
        +
      • +

        refresh

        +
        public void refresh()
        +
        Auch die anzeigenden Klasse wird zum Neuzeichnen aufgefordert.
        +
      • +
      + + + +
        +
      • +

        clear

        +
        public void clear()
        +
        Löscht den Inhalt des Bildes. + Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt.
        +
      • +
      + + + +
        +
      • +

        rectMode

        +
        public void rectMode(int mode)
        +
        Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + während der dritte und vierte Parameter seine Breite und Höhe sind. + rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + während der dritte und vierte Parameter seine Breite und Höhe sind. + rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen.
        +
        +
        Parameters:
        +
        mode - Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS)
        +
        +
      • +
      + + + +
        +
      • +

        ellipseMode

        +
        public void ellipseMode(int mode)
        +
        Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + während der dritte und vierte Parameter seine Breite und Höhe sind. + ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + und die dritten und vierten Parameter als Breite und Höhe der Form. + ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen.
        +
        +
        Parameters:
        +
        mode - Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS)
        +
        +
      • +
      + + + +
        +
      • +

        line

        +
        public void line(int x1,
        +                 int y1,
        +                 int x2,
        +                 int y2)
        +
        Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + Um eine Linie einzufärben, verwenden Sie die stroke() Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + strokeWeight() geändert werden.
        +
        +
        Parameters:
        +
        x1 - x-Koordinate des 1. Punktes
        +
        y1 - y-Koordinate des 1. Punktes
        +
        x2 - x-Koordinate des 2. Punktes
        +
        y2 - y-Koordinate des 2. Punktes
        +
        +
      • +
      + + + +
        +
      • +

        rect

        +
        public void rect(int a,
        +                 int b,
        +                 int c,
        +                 int d)
        +
        Zeichnet ein Rechteck auf das Bild. + Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion rectMode() geändert werden. + Durch den Befehl fill() /noFill() kann die Füllfarbe des Rechtecks gewählt werden, durch stroke()/noStroke() die Rahmenfarbe.
        +
        +
        Parameters:
        +
        a - meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden).
        +
        b - meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden).
        +
        c - meist die Breite des Rechtecks (kann durch rectMode() geändert werden).
        +
        d - meist die Höhe des Rechtecks (kann durch rectMode() geändert werden).
        +
        +
      • +
      + + + +
        +
      • +

        ellipse

        +
        public void ellipse(int a,
        +                    int b,
        +                    int c,
        +                    int d)
        +
        Zeichnet eine Ellipse/Kreis auf das Bild. + Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion ellipseMode() geändert werden. + Durch den Befehl fill() /noFill() kann die Füllfarbe des Rechtecks gewählt werden, durch stroke()/noStroke() die Rahmenfarbe.
        +
        +
        Parameters:
        +
        a - meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden).
        +
        b - meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden).
        +
        c - meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden).
        +
        d - meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden).
        +
        +
      • +
      + + + +
        +
      • +

        triangle

        +
        public void triangle(int x1,
        +                     int y1,
        +                     int x2,
        +                     int y2,
        +                     int x3,
        +                     int y3)
        +
        Zeichnet ein Dreieck auf das Bild. + Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + Durch den Befehl fill() /noFill() kann die Füllfarbe des Rechtecks gewählt werden, durch stroke()/noStroke() die Rahmenfarbe.
        +
        +
        Parameters:
        +
        x1 - meist die x-Koordinate des 1. Punkts.
        +
        y1 - meist die y-Koordinate des 1. Punkts.
        +
        x2 - meist die x-Koordinate des 2. Punkts.
        +
        y2 - meist die y-Koordinate des 2. Punkts.
        +
        x3 - meist die x-Koordinate des 3. Punkts.
        +
        y3 - meist die y-Koordinate des 3. Punkts.
        +
        +
      • +
      + + + +
        +
      • +

        quad

        +
        public void quad(int x1,
        +                 int y1,
        +                 int x2,
        +                 int y2,
        +                 int x3,
        +                 int y3,
        +                 int x4,
        +                 int y4)
        +
        Zeichnet ein Viereck auf das Bild. + Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + Durch den Befehl fill() /noFill() kann die Füllfarbe des Rechtecks gewählt werden, durch stroke()/noStroke() die Rahmenfarbe.
        +
        +
        Parameters:
        +
        x1 - meist die x-Koordinate des 1. Punkts.
        +
        y1 - meist die y-Koordinate des 1. Punkts.
        +
        x2 - meist die x-Koordinate des 2. Punkts.
        +
        y2 - meist die y-Koordinate des 2. Punkts.
        +
        x3 - meist die x-Koordinate des 3. Punkts.
        +
        y3 - meist die y-Koordinate des 3. Punkts.
        +
        x4 - meist die x-Koordinate des 3. Punkts.
        +
        y4 - meist die y-Koordinate des 3. Punkts.
        +
        +
      • +
      + + + +
        +
      • +

        polygon

        +
        public void polygon(int[] x,
        +                    int[] y)
        +
        Zeichnet ein Polygon auf das Bild. + Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + Durch den Befehl fill() /noFill() kann die Füllfarbe des Rechtecks gewählt werden, durch stroke()/noStroke() die Rahmenfarbe.
        +
        +
        Parameters:
        +
        x - Liste der x-Koordinaten der Punkte.
        +
        y - Liste der y-Koordinaten der Punkte.
        +
        +
      • +
      + + + +
        +
      • +

        point

        +
        public void point(int x,
        +                  int y)
        +
        Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt.
        +
        +
        Parameters:
        +
        x - x-Koordinate des Punktes
        +
        y - y-Koordinate des Punktes
        +
        +
      • +
      + + + +
        +
      • +

        text

        +
        public void text(java.lang.String s,
        +                 int x,
        +                 int y)
        +
        Gibt einen Text an den gegebenen Koordinaten aus + Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit textFont() festgelegt.
        +
        +
        Parameters:
        +
        s - Text, der angezeigt werden soll
        +
        x - x-Koordinate des Textanfangs
        +
        y - y-Koordinate der Grundlinie des Textes.
        +
        +
      • +
      + + + +
        +
      • +

        textFont

        +
        public void textFont(java.awt.Font font)
        +
        Legt die Schriftart für Textausgaben fest. + Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden.
        +
        +
        Parameters:
        +
        font - ein Font-Objekt
        +
        +
      • +
      + + + +
        +
      • +

        stroke

        +
        public void stroke(java.lang.String pencolor)
        +
        Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden).
        +
        +
        Parameters:
        +
        pencolor - Stiftfarbe in Hexadezimaldarstellung
        +
        +
      • +
      + + + +
        +
      • +

        stroke

        +
        public void stroke(int pencolor)
        +
        Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben
        +
        +
        Parameters:
        +
        pencolor - Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert)
        +
        +
      • +
      + + + +
        +
      • +

        stroke

        +
        public void stroke(int r,
        +                   int g,
        +                   int b)
        +
        Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + Diese Farbe wird komponentenweise als RGB-Wert angegeben
        +
        +
        Parameters:
        +
        r - Rotanteil (0-255) der Stiftfarbe
        +
        g - Grünanteil (0-255) der Stiftfarbe
        +
        b - Blauanteil (0-255) der Stiftfarbe
        +
        +
      • +
      + + + +
        +
      • +

        noStroke

        +
        public void noStroke()
        +
        Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll.
        +
      • +
      + + + +
        +
      • +

        strokeWeight

        +
        public void strokeWeight(double width)
        +
        Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + Alle Breiten werden in Pixeleinheiten angegeben.
        +
        +
        Parameters:
        +
        width - Breite in Pixel
        +
        +
      • +
      + + + +
        +
      • +

        fill

        +
        public void fill(java.lang.String fillcolor)
        +
        Legt die Farbe fest, mit der Formen gefüllt werden. + Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden).
        +
        +
        Parameters:
        +
        fillcolor - Füllfarbe in Hexadezimaldarstellung
        +
        +
      • +
      + + + +
        +
      • +

        fill

        +
        public void fill(int fillcolor)
        +
        Legt die Farbe fest, mit der Formen gefüllt werden. + Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben.
        +
        +
        Parameters:
        +
        fillcolor - Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert)
        +
        +
      • +
      + + + +
        +
      • +

        fill

        +
        public void fill(int r,
        +                 int g,
        +                 int b)
        +
        Legt die Farbe fest, mit der Formen gefüllt werden. + Diese Farbe wird komponentenweise als RGB-Wert angegeben.
        +
        +
        Parameters:
        +
        r - Rotanteil (0-255) der Füllfarbe
        +
        g - Grünanteil (0-255) der Füllfarbe
        +
        b - Blauanteil (0-255) der Füllfarbe
        +
        +
      • +
      + + + +
        +
      • +

        noFill

        +
        public void noFill()
        +
        Legt fest, dass die Formen nicht gefüllt werden sollen.
        +
      • +
      + + + +
        +
      • +

        background

        +
        public void background(int c)
        +
        Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden.
        +
        +
        Parameters:
        +
        c - Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert)
        +
        +
      • +
      + + + +
        +
      • +

        background

        +
        public void background(int r,
        +                       int g,
        +                       int b)
        +
        Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden.
        +
        +
        Parameters:
        +
        r - Rotanteil (0-255) der Hintergrundfarbe
        +
        g - Grünanteil (0-255) der Hintergrundfarbe
        +
        b - Blauanteil (0-255) der Hintergrundfarbe
        +
        +
      • +
      + + + +
        +
      • +

        load

        +
        public void load(java.lang.String filename)
        +
        Lädt ein Bild aus dem Dateisystem. + Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück.
        +
        +
        Parameters:
        +
        filename - Dateiname des Bildes
        +
        +
      • +
      + + + +
        +
      • +

        save

        +
        public void save(java.lang.String filename)
        +
        Speichert ein Bild. + Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist.
        +
        +
        Parameters:
        +
        filename - Dateiname des Bildes
        +
        +
      • +
      + + + +
        +
      • +

        getPixelArray

        +
        public java.awt.Color[][] getPixelArray()
        +
        Liefert das Bild als zweidimensionales Pixel-Array.
        +
        +
        Returns:
        +
        zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen.
        +
        +
      • +
      + + + +
        +
      • +

        setPixelArray

        +
        public void setPixelArray(java.awt.Color[][] pixel)
        +
        Setzt das Bild neu auf Basis des Pixel-Arrays. + Die Größe des Bildes wird nicht automatisch an das Array angepasst.
        +
        +
        Parameters:
        +
        pixel - zweidimensionales Array von Color-Objekten
        +
        +
      • +
      + + + +
        +
      • +

        delay

        +
        public void delay(int millis)
        +
        Hilfsfunktion zum Verzögern der Ausgabe
        +
        +
        Parameters:
        +
        millis - Wartezeit in Millisekunden
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + + + diff --git a/01_hintergrund/02_dokumentation_java_klassen/PictureViewer.html b/01_hintergrund/02_dokumentation_java_klassen/PictureViewer.html new file mode 100644 index 0000000..53e2c86 --- /dev/null +++ b/01_hintergrund/02_dokumentation_java_klassen/PictureViewer.html @@ -0,0 +1,1365 @@ + + + + + + +PictureViewer + + + + + + + + + + + + +
+

Class PictureViewer

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • java.awt.Component
    • +
    • +
        +
      • java.awt.Container
      • +
      • +
          +
        • javax.swing.JComponent
        • +
        • +
            +
          • javax.swing.JScrollPane
          • +
          • +
              +
            • PictureViewer
            • +
            +
          • +
          +
        • +
        +
      • +
      +
    • +
    +
  • +
+
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, javax.accessibility.Accessible, javax.swing.ScrollPaneConstants
    +
    +
    +
    +
    public class PictureViewer
    +extends javax.swing.JScrollPane
    +
    +
    See Also:
    +
    Serialized Form
    +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Nested Class Summary

      +
        +
      • + + +

        Nested classes/interfaces inherited from class javax.swing.JScrollPane

        +javax.swing.JScrollPane.AccessibleJScrollPane, javax.swing.JScrollPane.ScrollBar
      • +
      +
        +
      • + + +

        Nested classes/interfaces inherited from class javax.swing.JComponent

        +javax.swing.JComponent.AccessibleJComponent
      • +
      +
        +
      • + + +

        Nested classes/interfaces inherited from class java.awt.Container

        +java.awt.Container.AccessibleAWTContainer
      • +
      +
        +
      • + + +

        Nested classes/interfaces inherited from class java.awt.Component

        +java.awt.Component.AccessibleAWTComponent, java.awt.Component.BaselineResizeBehavior, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy
      • +
      +
    • +
    + +
      +
    • + + +

      Field Summary

      + + + + + + + + + + + + + + +
      Fields 
      Modifier and TypeField and Description
      static intFIT 
      static intNORMAL 
      +
        +
      • + + +

        Fields inherited from class javax.swing.JScrollPane

        +columnHeader, horizontalScrollBar, horizontalScrollBarPolicy, lowerLeft, lowerRight, rowHeader, upperLeft, upperRight, verticalScrollBar, verticalScrollBarPolicy, viewport
      • +
      +
        +
      • + + +

        Fields inherited from class javax.swing.JComponent

        +listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
      • +
      +
        +
      • + + +

        Fields inherited from class java.awt.Component

        +accessibleContext, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
      • +
      +
        +
      • + + +

        Fields inherited from interface javax.swing.ScrollPaneConstants

        +COLUMN_HEADER, HORIZONTAL_SCROLLBAR, HORIZONTAL_SCROLLBAR_ALWAYS, HORIZONTAL_SCROLLBAR_AS_NEEDED, HORIZONTAL_SCROLLBAR_NEVER, HORIZONTAL_SCROLLBAR_POLICY, LOWER_LEADING_CORNER, LOWER_LEFT_CORNER, LOWER_RIGHT_CORNER, LOWER_TRAILING_CORNER, ROW_HEADER, UPPER_LEADING_CORNER, UPPER_LEFT_CORNER, UPPER_RIGHT_CORNER, UPPER_TRAILING_CORNER, VERTICAL_SCROLLBAR, VERTICAL_SCROLLBAR_ALWAYS, VERTICAL_SCROLLBAR_AS_NEEDED, VERTICAL_SCROLLBAR_NEVER, VERTICAL_SCROLLBAR_POLICY, VIEWPORT
      • +
      +
        +
      • + + +

        Fields inherited from interface java.awt.image.ImageObserver

        +ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
      • +
      +
    • +
    + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + + + + + + + + + + + + + +
      Constructors 
      Constructor and Description
      PictureViewer() +
      Erzeugt ein ScrollPanel mit integriertem Bild der Größe 1000x1000
      +
      PictureViewer(int width, + int height) +
      Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe
      +
      PictureViewer(int width, + int height, + java.lang.String background) +
      Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe
      +
      PictureViewer(Picture picture) +
      Erzeugt ein ScrollPanel und zeigt das Bild-Objekt an
      +
      PictureViewer(java.lang.String filename) +
      Erzeugt ein ScrollPanel mit integriertem Bild aus einer Bilddatei
      +
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      All Methods Instance Methods Concrete Methods 
      Modifier and TypeMethod and Description
      voidback() +
      Ruft das letzte abgespeicherte Bild aus der History wieder auf.
      +
      voidbackground(int c) +
      Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird.
      +
      voidbackground(int r, + int g, + int b) +
      Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird.
      +
      voidclear() +
      Löscht den Inhalt des Bildes.
      +
      voidellipse(int a, + int b, + int c, + int d) +
      Zeichnet eine Ellipse/Kreis auf das Bild.
      +
      voidellipseMode(int mode) +
      Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen.
      +
      voidfill(int fillcolor) +
      Legt die Farbe fest, mit der Formen gefüllt werden.
      +
      voidfill(int r, + int g, + int b) +
      Legt die Farbe fest, mit der Formen gefüllt werden.
      +
      voidfill(java.lang.String fillcolor) +
      Legt die Farbe fest, mit der Formen gefüllt werden.
      +
      intgetImageHeight() +
      Liefert die Höhe des Bildes zurück.
      +
      intgetImageWidth() +
      Liefert die Breite des Bildes zurück.
      +
      java.awt.Color[][]getPixelArray() +
      Liefert das Bild als zweidimensionales Pixel-Array.
      +
      voidline(int x1, + int y1, + int x2, + int y2) +
      Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm.
      +
      voidload(java.lang.String filename) +
      Lädt ein Bild aus dem Dateisystem.
      +
      voidnoFill() +
      Legt fest, dass die Formen nicht gefüllt werden sollen.
      +
      voidnoStroke() +
      Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll.
      +
      voidpoint(int x, + int y) +
      Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels.
      +
      voidpolygon(int[] x, + int[] y) +
      Zeichnet ein Polygon auf das Bild.
      +
      voidpushImage() +
      Speichert das übergebene Bild in der History.
      +
      voidquad(int x1, + int y1, + int x2, + int y2, + int x3, + int y3, + int x4, + int y4) +
      Zeichnet ein Viereck auf das Bild.
      +
      voidrect(int a, + int b, + int c, + int d) +
      Zeichnet ein Rechteck auf das Bild.
      +
      voidrectMode(int mode) +
      Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken.
      +
      voidrepaint() +
      Setzt das angezeigt Bild neu und beachtet dabei den Zoomfaktor.
      +
      voidsave(java.lang.String filename) +
      Speichert ein Bild.
      +
      voidsetImage(Picture picture) +
      Setzt das anzuzeigende Bild neu
      +
      voidsetPixelArray(java.awt.Color[][] pixel) +
      Setzt das Bild neu auf Basis des Pixel-Arrays.
      +
      voidsetZoom(double factor) +
      Setzt den Zoom-Faktor für das Bild.
      +
      voidsize(int width, + int height) +
      Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten.
      +
      voidstroke(int pencolor) +
      Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden.
      +
      voidstroke(int r, + int g, + int b) +
      Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden.
      +
      voidstroke(java.lang.String pencolor) +
      Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden.
      +
      voidstrokeWeight(double width) +
      Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest.
      +
      voidtext(java.lang.String t, + int x, + int y) +
      Gibt einen Text an den gegebenen Koordinaten aus + Zur Ausgabe des Textes wird der ausgewählte Font verwendet.
      +
      voidtextFont(java.awt.Font font) +
      Legt die Schriftart für Textausgaben fest.
      +
      voidtriangle(int x1, + int y1, + int x2, + int y2, + int x3, + int y3) +
      Zeichnet ein Dreieck auf das Bild.
      +
      +
        +
      • + + +

        Methods inherited from class javax.swing.JScrollPane

        +createHorizontalScrollBar, createVerticalScrollBar, createViewport, getAccessibleContext, getColumnHeader, getCorner, getHorizontalScrollBar, getHorizontalScrollBarPolicy, getRowHeader, getUI, getUIClassID, getVerticalScrollBar, getVerticalScrollBarPolicy, getViewport, getViewportBorder, getViewportBorderBounds, isValidateRoot, isWheelScrollingEnabled, paramString, setColumnHeader, setColumnHeaderView, setComponentOrientation, setCorner, setHorizontalScrollBar, setHorizontalScrollBarPolicy, setLayout, setRowHeader, setRowHeaderView, setUI, setVerticalScrollBar, setVerticalScrollBarPolicy, setViewport, setViewportBorder, setViewportView, setWheelScrollingEnabled, updateUI
      • +
      +
        +
      • + + +

        Methods inherited from class javax.swing.JComponent

        +addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, isPaintingTile, isRequestFocusEnabled, paint, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update
      • +
      +
        +
      • + + +

        Methods inherited from class java.awt.Container

        +add, add, add, add, add, addContainerListener, addImpl, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, transferFocusDownCycle, validate, validateTree
      • +
      +
        +
      • + + +

        Methods inherited from class java.awt.Component

        +action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, resize, resize, setBounds, setBounds, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle
      • +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + + + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        PictureViewer

        +
        public PictureViewer()
        +
        Erzeugt ein ScrollPanel mit integriertem Bild der Größe 1000x1000
        +
      • +
      + + + +
        +
      • +

        PictureViewer

        +
        public PictureViewer(int width,
        +                     int height)
        +
        Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe
        +
        +
        Parameters:
        +
        width - Breite des Bildes
        +
        height - Höhe des Bildes
        +
        +
      • +
      + + + +
        +
      • +

        PictureViewer

        +
        public PictureViewer(int width,
        +                     int height,
        +                     java.lang.String background)
        +
        Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe
        +
        +
        Parameters:
        +
        width - Breite des Bildes
        +
        height - Höhe des Bildes
        +
        background - Farbe des Hintergrunds als HEX-String (z.B. "FF3A45")
        +
        +
      • +
      + + + +
        +
      • +

        PictureViewer

        +
        public PictureViewer(java.lang.String filename)
        +
        Erzeugt ein ScrollPanel mit integriertem Bild aus einer Bilddatei
        +
        +
        Parameters:
        +
        filename - Name des Bildes
        +
        +
      • +
      + + + +
        +
      • +

        PictureViewer

        +
        public PictureViewer(Picture picture)
        +
        Erzeugt ein ScrollPanel und zeigt das Bild-Objekt an
        +
        +
        Parameters:
        +
        picture - anzuzeigendes Bild
        +
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        setImage

        +
        public void setImage(Picture picture)
        +
        Setzt das anzuzeigende Bild neu
        +
        +
        Parameters:
        +
        picture - anzuzeigendes Bild
        +
        +
      • +
      + + + +
        +
      • +

        pushImage

        +
        public void pushImage()
        +
        Speichert das übergebene Bild in der History.
        +
        +
        Parameters:
        +
        b - zu speicherndes Bild
        +
        +
      • +
      + + + +
        +
      • +

        back

        +
        public void back()
        +
        Ruft das letzte abgespeicherte Bild aus der History wieder auf.
        +
      • +
      + + + +
        +
      • +

        repaint

        +
        public void repaint()
        +
        Setzt das angezeigt Bild neu und beachtet dabei den Zoomfaktor.
        +
        +
        Overrides:
        +
        repaint in class java.awt.Component
        +
        +
      • +
      + + + +
        +
      • +

        setZoom

        +
        public void setZoom(double factor)
        +
        Setzt den Zoom-Faktor für das Bild. + Als Zoomfaktor sind auch die Konstanten Bildanzeiger.FIT (auf Bildschirmgröße zoomen) und Bildanzeiger.NORMAL (100%) möglich.
        +
        +
        Parameters:
        +
        factor - Zoomfaktor (1.0 = 100%).
        +
        +
      • +
      + + + +
        +
      • +

        size

        +
        public void size(int width,
        +                 int height)
        +
        Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu.
        +
        +
        Parameters:
        +
        width - Breite des Bildes
        +
        height - Höhe des Bildes
        +
        +
      • +
      + + + +
        +
      • +

        getImageWidth

        +
        public int getImageWidth()
        +
        Liefert die Breite des Bildes zurück.
        +
        +
        Returns:
        +
        Breite des Bildes
        +
        +
      • +
      + + + +
        +
      • +

        getImageHeight

        +
        public int getImageHeight()
        +
        Liefert die Höhe des Bildes zurück.
        +
        +
        Returns:
        +
        Höhe des Bildes
        +
        +
      • +
      + + + +
        +
      • +

        background

        +
        public void background(int c)
        +
        Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden.
        +
        +
        Parameters:
        +
        c - Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert)
        +
        +
      • +
      + + + +
        +
      • +

        background

        +
        public void background(int r,
        +                       int g,
        +                       int b)
        +
        Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden.
        +
        +
        Parameters:
        +
        r - Rotanteil (0-255) der Hintergrundfarbe
        +
        g - Grünanteil (0-255) der Hintergrundfarbe
        +
        b - Blauanteil (0-255) der Hintergrundfarbe
        +
        +
      • +
      + + + +
        +
      • +

        line

        +
        public void line(int x1,
        +                 int y1,
        +                 int x2,
        +                 int y2)
        +
        Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + Um eine Linie einzufärben, verwenden Sie die stroke() Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + strokeWeight() geändert werden.
        +
        +
        Parameters:
        +
        x1 - x-Koordinate des 1. Punktes
        +
        y1 - y-Koordinate des 1. Punktes
        +
        x2 - x-Koordinate des 2. Punktes
        +
        y2 - y-Koordinate des 2. Punktes
        +
        +
      • +
      + + + +
        +
      • +

        rect

        +
        public void rect(int a,
        +                 int b,
        +                 int c,
        +                 int d)
        +
        Zeichnet ein Rechteck auf das Bild. + Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion rectMode() geändert werden. + Durch den Befehl fill() /noFill() kann die Füllfarbe des Rechtecks gewählt werden, durch stroke()/noStroke() die Rahmenfarbe.
        +
        +
        Parameters:
        +
        a - meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden).
        +
        b - meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden).
        +
        c - meist die Breite des Rechtecks (kann durch rectMode() geändert werden).
        +
        d - meist die Höhe des Rechtecks (kann durch rectMode() geändert werden).
        +
        +
      • +
      + + + +
        +
      • +

        ellipse

        +
        public void ellipse(int a,
        +                    int b,
        +                    int c,
        +                    int d)
        +
        Zeichnet eine Ellipse/Kreis auf das Bild. + Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion ellipseMode() geändert werden. + Durch den Befehl fill() /noFill() kann die Füllfarbe des Rechtecks gewählt werden, durch stroke()/noStroke() die Rahmenfarbe.
        +
        +
        Parameters:
        +
        a - meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden).
        +
        b - meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden).
        +
        c - meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden).
        +
        d - meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden).
        +
        +
      • +
      + + + +
        +
      • +

        triangle

        +
        public void triangle(int x1,
        +                     int y1,
        +                     int x2,
        +                     int y2,
        +                     int x3,
        +                     int y3)
        +
        Zeichnet ein Dreieck auf das Bild. + Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + Durch den Befehl fill() /noFill() kann die Füllfarbe des Rechtecks gewählt werden, durch stroke()/noStroke() die Rahmenfarbe.
        +
        +
        Parameters:
        +
        x1 - meist die x-Koordinate des 1. Punkts.
        +
        y1 - meist die y-Koordinate des 1. Punkts.
        +
        x2 - meist die x-Koordinate des 2. Punkts.
        +
        y2 - meist die y-Koordinate des 2. Punkts.
        +
        x3 - meist die x-Koordinate des 3. Punkts.
        +
        y3 - meist die y-Koordinate des 3. Punkts.
        +
        +
      • +
      + + + +
        +
      • +

        quad

        +
        public void quad(int x1,
        +                 int y1,
        +                 int x2,
        +                 int y2,
        +                 int x3,
        +                 int y3,
        +                 int x4,
        +                 int y4)
        +
        Zeichnet ein Viereck auf das Bild. + Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + Durch den Befehl fill() /noFill() kann die Füllfarbe des Rechtecks gewählt werden, durch stroke()/noStroke() die Rahmenfarbe.
        +
        +
        Parameters:
        +
        x1 - meist die x-Koordinate des 1. Punkts.
        +
        y1 - meist die y-Koordinate des 1. Punkts.
        +
        x2 - meist die x-Koordinate des 2. Punkts.
        +
        y2 - meist die y-Koordinate des 2. Punkts.
        +
        x3 - meist die x-Koordinate des 3. Punkts.
        +
        y3 - meist die y-Koordinate des 3. Punkts.
        +
        x4 - meist die x-Koordinate des 3. Punkts.
        +
        y4 - meist die y-Koordinate des 3. Punkts.
        +
        +
      • +
      + + + +
        +
      • +

        polygon

        +
        public void polygon(int[] x,
        +                    int[] y)
        +
        Zeichnet ein Polygon auf das Bild. + Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + Durch den Befehl fill() /noFill() kann die Füllfarbe des Rechtecks gewählt werden, durch stroke()/noStroke() die Rahmenfarbe.
        +
        +
        Parameters:
        +
        x - Liste der x-Koordinaten der Punkte.
        +
        y - Liste der y-Koordinaten der Punkte.
        +
        +
      • +
      + + + +
        +
      • +

        point

        +
        public void point(int x,
        +                  int y)
        +
        Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt.
        +
        +
        Parameters:
        +
        x - x-Koordinate des Punktes
        +
        y - y-Koordinate des Punktes
        +
        +
      • +
      + + + +
        +
      • +

        rectMode

        +
        public void rectMode(int mode)
        +
        Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + während der dritte und vierte Parameter seine Breite und Höhe sind. + rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + während der dritte und vierte Parameter seine Breite und Höhe sind. + rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen.
        +
        +
        Parameters:
        +
        mode - Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS)
        +
        +
      • +
      + + + +
        +
      • +

        ellipseMode

        +
        public void ellipseMode(int mode)
        +
        Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + während der dritte und vierte Parameter seine Breite und Höhe sind. + ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + und die dritten und vierten Parameter als Breite und Höhe der Form. + ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen.
        +
        +
        Parameters:
        +
        mode - Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS)
        +
        +
      • +
      + + + +
        +
      • +

        stroke

        +
        public void stroke(java.lang.String pencolor)
        +
        Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden).
        +
        +
        Parameters:
        +
        pencolor - Stiftfarbe in Hexadezimaldarstellung
        +
        +
      • +
      + + + +
        +
      • +

        stroke

        +
        public void stroke(int pencolor)
        +
        Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben
        +
        +
        Parameters:
        +
        pencolor - Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert)
        +
        +
      • +
      + + + +
        +
      • +

        stroke

        +
        public void stroke(int r,
        +                   int g,
        +                   int b)
        +
        Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + Diese Farbe wird komponentenweise als RGB-Wert angegeben
        +
        +
        Parameters:
        +
        r - Rotanteil (0-255) der Stiftfarbe
        +
        g - Grünanteil (0-255) der Stiftfarbe
        +
        b - Blauanteil (0-255) der Stiftfarbe
        +
        +
      • +
      + + + +
        +
      • +

        noStroke

        +
        public void noStroke()
        +
        Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll.
        +
      • +
      + + + +
        +
      • +

        strokeWeight

        +
        public void strokeWeight(double width)
        +
        Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + Alle Breiten werden in Pixeleinheiten angegeben.
        +
        +
        Parameters:
        +
        width - Breite in Pixel
        +
        +
      • +
      + + + +
        +
      • +

        fill

        +
        public void fill(java.lang.String fillcolor)
        +
        Legt die Farbe fest, mit der Formen gefüllt werden. + Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden).
        +
        +
        Parameters:
        +
        fillcolor - Füllfarbe in Hexadezimaldarstellung
        +
        +
      • +
      + + + +
        +
      • +

        fill

        +
        public void fill(int fillcolor)
        +
        Legt die Farbe fest, mit der Formen gefüllt werden. + Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben.
        +
        +
        Parameters:
        +
        fillcolor - Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert)
        +
        +
      • +
      + + + +
        +
      • +

        fill

        +
        public void fill(int r,
        +                 int g,
        +                 int b)
        +
        Legt die Farbe fest, mit der Formen gefüllt werden. + Diese Farbe wird komponentenweise als RGB-Wert angegeben.
        +
        +
        Parameters:
        +
        r - Rotanteil (0-255) der Füllfarbe
        +
        g - Grünanteil (0-255) der Füllfarbe
        +
        b - Blauanteil (0-255) der Füllfarbe
        +
        +
      • +
      + + + +
        +
      • +

        noFill

        +
        public void noFill()
        +
        Legt fest, dass die Formen nicht gefüllt werden sollen.
        +
      • +
      + + + +
        +
      • +

        clear

        +
        public void clear()
        +
        Löscht den Inhalt des Bildes. + Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt.
        +
      • +
      + + + +
        +
      • +

        load

        +
        public void load(java.lang.String filename)
        +
        Lädt ein Bild aus dem Dateisystem. + Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück.
        +
        +
        Parameters:
        +
        filename - Dateiname des Bildes
        +
        +
      • +
      + + + +
        +
      • +

        save

        +
        public void save(java.lang.String filename)
        +
        Speichert ein Bild. + Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist.
        +
        +
        Parameters:
        +
        filename - Dateiname des Bildes
        +
        +
      • +
      + + + +
        +
      • +

        text

        +
        public void text(java.lang.String t,
        +                 int x,
        +                 int y)
        +
        Gibt einen Text an den gegebenen Koordinaten aus + Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit textFont() festgelegt.
        +
        +
        Parameters:
        +
        t - Text, der angezeigt werden soll
        +
        x - x-Koordinate des Textanfangs
        +
        y - y-Koordinate der Grundlinie des Textes.
        +
        +
      • +
      + + + +
        +
      • +

        textFont

        +
        public void textFont(java.awt.Font font)
        +
        Legt die Schriftart für Textausgaben fest. + Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden.
        +
        +
        Parameters:
        +
        font - ein Font-Objekt
        +
        +
      • +
      + + + +
        +
      • +

        getPixelArray

        +
        public java.awt.Color[][] getPixelArray()
        +
        Liefert das Bild als zweidimensionales Pixel-Array.
        +
        +
        Returns:
        +
        zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen.
        +
        +
      • +
      + + + +
        +
      • +

        setPixelArray

        +
        public void setPixelArray(java.awt.Color[][] pixel)
        +
        Setzt das Bild neu auf Basis des Pixel-Arrays. + Die Größe des Bildes wird nicht automatisch an das Array angepasst.
        +
        +
        Parameters:
        +
        pixel - zweidimensionales Array von Color-Objekten
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + + + diff --git a/01_hintergrund/02_dokumentation_java_klassen/Table.html b/01_hintergrund/02_dokumentation_java_klassen/Table.html new file mode 100644 index 0000000..b51a7e2 --- /dev/null +++ b/01_hintergrund/02_dokumentation_java_klassen/Table.html @@ -0,0 +1,1481 @@ + + + + + + +Table + + + + + + + + + + + + +
+

Class Table

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • Table
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class Table
    +extends java.lang.Object
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + + + + + + + + + + +
      Constructors 
      Constructor and Description
      Table() +
      Erzeugt leeres Tabellen-Dokument.
      +
      Table(java.lang.String filename) +
      Erzeugt Tabellen-Dokument aus einer CSV-Datei.
      +
      Table(java.lang.String filename, + java.lang.String options) +
      Erzeugt Tabellen-Dokument aus einer CSV-Datei.
      +
      Table(java.lang.String filename, + java.lang.String options, + char separator, + char quote) +
      Erzeugt Tabellen-Dokument aus einer CSV-Datei.
      +
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      All Methods Instance Methods Concrete Methods 
      Modifier and TypeMethod and Description
      voidaddColumn() +
      Fügt eine neue Spalte am Ende der Tabelle an.
      +
      voidaddColumn(java.lang.String title) +
      Fügt eine neue Spalte am Ende der Tabelle an und benennt sie.
      +
      voidaddColumn(java.lang.String title, + java.lang.String type) +
      Fügt eine neue Spalte am Ende der Tabelle an und benennt und typisiert sie.
      +
      TableRowaddRow() +
      Fügt eine neue Zeile an das Ende der Tabelle an.
      +
      voidclearRows() +
      Löscht alle Zeilen der Tabelle.
      +
      TableRowfindRow(java.lang.String value, + int column) +
      Sucht nach einem bestimmtem Wert in einer Zeile.
      +
      TableRowfindRow(java.lang.String value, + java.lang.String name) +
      Sucht nach einem bestimmtem Wert in einer Zeile.
      +
      intgetColumnCount() +
      Liefert die Anzahl der Spalten in der Tabelle
      +
      doublegetDouble(int row, + int column) +
      Liefert den Wert einer Zelle als Double-Zahl
      +
      doublegetDouble(int row, + java.lang.String name) +
      Liefert den Wert einer Zelle als Double-Zahl
      +
      double[]getDoubleColumn(int column) +
      Liefert alle Werte einer Spalte als Double-Array.
      +
      double[]getDoubleColumn(java.lang.String name) +
      Liefert alle Werte einer Spalte als Double-Array.
      +
      double[]getDoubleRow(int row) +
      Liefert alle Werte einer Spalte als Double-Array.
      +
      floatgetFloat(int row, + int column) +
      Liefert den Wert einer Zelle als Float-Zahl
      +
      floatgetFloat(int row, + java.lang.String name) +
      Liefert den Wert einer Zelle als Float-Zahl
      +
      float[]getFloatColumn(int column) +
      Liefert alle Werte einer Spalte als Float-Array.
      +
      float[]getFloatColumn(java.lang.String name) +
      Liefert alle Werte einer Spalte als Float-Array.
      +
      float[]getFloatRow(int row) +
      Liefert alle Werte einer Zeile als Float-Array.
      +
      intgetInt(int row, + int column) +
      Liefert den Wert einer Zelle als Integer-Zahl
      +
      intgetInt(int row, + java.lang.String name) +
      Liefert den Wert einer Zelle als Integer-Zahl
      +
      int[]getIntColumn(int column) +
      Liefert alle Werte einer Spalte als Integer-Array.
      +
      int[]getIntColumn(java.lang.String name) +
      Liefert alle Werte einer Spalte als Integer-Array.
      +
      int[]getIntRow(int row) +
      Liefert alle Werte einer Zeile als Integer-Array.
      +
      TableRowgetRow(int i) +
      Liefert eine Zeile der Tabelle
      +
      intgetRowCount() +
      Liefert die Anzahl der Zeilen in der Tabelle
      +
      java.lang.StringgetString(int row, + int column) +
      Liefert den Wert einer Zelle als String
      +
      java.lang.StringgetString(int row, + java.lang.String name) +
      Liefert den Wert einer Zelle als String
      +
      java.lang.String[]getStringColumn(int column) +
      Liefert alle Werte einer Spalte als String-Array.
      +
      java.lang.String[]getStringColumn(java.lang.String name) +
      Liefert alle Werte einer Spalte als String-Array.
      +
      java.lang.String[]getStringRow(int row) +
      Liefert alle Werte einer Spalte als String-Array.
      +
      voidloadCSV(java.lang.String filename) +
      Liest den Inhalt einer CSV-Datei ohne Kopfzeile (Separator = ';', Kennung für Text = '"').
      +
      voidloadCSV(java.lang.String filename, + java.lang.String options) +
      Liest den Inhalt einer CSV-Datei (Separator = ';', Kennung für Text = '"').
      +
      voidloadCSV(java.lang.String filename, + java.lang.String options, + char separator, + char quote) +
      Liest den Inhalt einer CSV-Datei.
      +
      voidremoveColumn(int i) +
      Löscht eine Spalte.
      +
      voidremoveColumn(java.lang.String name) +
      Löscht eine Spalte
      +
      voidremoveRow(int i) +
      Löscht eine Zeile
      +
      TableRow[]rows() +
      Liefert die ganze Tabelle als Array von TableRow-Objekten
      +
      voidsaveCSV(java.lang.String filename) +
      Speichert das aktuelle Dokument als CSV-Datei ohne Kopfzeile (Separator = ';', Kennung für Text = '"').
      +
      voidsaveCSV(java.lang.String filename, + java.lang.String options) +
      Speichert das aktuelle Dokument als CSV-Datei (Separator = ';', Kennung für Text = '"').
      +
      voidsaveCSV(java.lang.String filename, + java.lang.String options, + char separator, + char quote) +
      Speichert das aktuelle Dokument als CSV-Datei.
      +
      voidsaveXML(java.lang.String filename) +
      Speichert die Tabelle als XML-Dokument.
      +
      voidsetDouble(int row, + int column, + double value) +
      Setzt den Wert einer Zelle als Double-Zahl
      +
      voidsetDouble(int row, + java.lang.String name, + double value) +
      Setzt den Wert einer Zelle als Double-Zahl
      +
      voidsetFloat(int row, + int column, + float value) +
      Setzt den Wert einer Zelle als Float-Zahl
      +
      voidsetFloat(int row, + java.lang.String name, + float value) +
      Setzt den Wert einer Zelle als Float-Zahl
      +
      voidsetInt(int row, + int column, + int value) +
      Setzt den Wert einer Zelle als Integer-Zahl
      +
      voidsetInt(int row, + java.lang.String name, + int value) +
      Setzt den Wert einer Zelle als Integer-Zahl
      +
      voidsetString(int row, + int column, + java.lang.String text) +
      Setzt den Wert einer Zelle als String
      +
      voidsetString(int row, + java.lang.String name, + java.lang.String text) +
      Setzt den Wert einer Zelle als String
      +
      voidtrim() +
      Kürzt alle Einträge der Tabelle um unnötige Leerzeichen am Anfang oder Ende
      +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        Table

        +
        public Table()
        +
        Erzeugt leeres Tabellen-Dokument.
        +
      • +
      + + + +
        +
      • +

        Table

        +
        public Table(java.lang.String filename,
        +             java.lang.String options,
        +             char separator,
        +             char quote)
        +
        Erzeugt Tabellen-Dokument aus einer CSV-Datei. + Liest den Inhalt einer Datei und erstellt ein Tabellenobjekt mit seinen Werten. + Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + dann lassen Sie einfach die Option "header" weg.
        +
        +
        Parameters:
        +
        filename - Dateiname der CSV-Datei.
        +
        options - Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält.
        +
        separator - Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab)
        +
        quote - Kennung für Texte (meist '"').
        +
        +
      • +
      + + + +
        +
      • +

        Table

        +
        public Table(java.lang.String filename,
        +             java.lang.String options)
        +
        Erzeugt Tabellen-Dokument aus einer CSV-Datei. + Liest den Inhalt einer Datei und erstellt ein Tabellenobjekt mit seinen Werten (Separator = ';', Kennung für Text = '"'). + Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + dann lassen Sie einfach die Option "header" weg.
        +
        +
        Parameters:
        +
        filename - Dateiname der CSV-Datei.
        +
        options - Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält.
        +
        +
      • +
      + + + +
        +
      • +

        Table

        +
        public Table(java.lang.String filename)
        +
        Erzeugt Tabellen-Dokument aus einer CSV-Datei. + Liest den Inhalt einer Datei ohne Kopfzeile und erstellt ein Tabellenobjekt mit seinen Werten (Separator = ';', Kennung für Text = '"').
        +
        +
        Parameters:
        +
        filename - Dateiname der CSV-Datei.
        +
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        loadCSV

        +
        public void loadCSV(java.lang.String filename)
        +
        Liest den Inhalt einer CSV-Datei ohne Kopfzeile (Separator = ';', Kennung für Text = '"').
        +
        +
        Parameters:
        +
        filename - Dateiname der CSV-Datei.
        +
        +
      • +
      + + + +
        +
      • +

        loadCSV

        +
        public void loadCSV(java.lang.String filename,
        +                    java.lang.String options)
        +
        Liest den Inhalt einer CSV-Datei (Separator = ';', Kennung für Text = '"'). + Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + dann lassen Sie einfach die Option "header" weg.
        +
        +
        Parameters:
        +
        filename - Dateiname der CSV-Datei.
        +
        options - Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält.
        +
        +
      • +
      + + + +
        +
      • +

        loadCSV

        +
        public void loadCSV(java.lang.String filename,
        +                    java.lang.String options,
        +                    char separator,
        +                    char quote)
        +
        Liest den Inhalt einer CSV-Datei. + Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + dann lassen Sie einfach die Option "header" weg.
        +
        +
        Parameters:
        +
        filename - Dateiname der CSV-Datei.
        +
        options - Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält.
        +
        separator - Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab)
        +
        quote - Kennung für Texte (meist '"').
        +
        +
      • +
      + + + +
        +
      • +

        saveCSV

        +
        public void saveCSV(java.lang.String filename)
        +
        Speichert das aktuelle Dokument als CSV-Datei ohne Kopfzeile (Separator = ';', Kennung für Text = '"').
        +
        +
        Parameters:
        +
        filename - Dateiname der CSV-Datei.
        +
        +
      • +
      + + + +
        +
      • +

        saveCSV

        +
        public void saveCSV(java.lang.String filename,
        +                    java.lang.String options)
        +
        Speichert das aktuelle Dokument als CSV-Datei (Separator = ';', Kennung für Text = '"'). + Wenn die Datei eine Kopfzeile enthalten, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile haben soll, + dann lassen Sie einfach die Option "header" weg.
        +
        +
        Parameters:
        +
        options - Geben Sie hier "header" an, wenn die Datei eine Kopfzeile haben soll.
        +
        filename - Dateiname der CSV-Datei.
        +
        +
      • +
      + + + +
        +
      • +

        saveCSV

        +
        public void saveCSV(java.lang.String filename,
        +                    java.lang.String options,
        +                    char separator,
        +                    char quote)
        +
        Speichert das aktuelle Dokument als CSV-Datei. + Wenn die Datei eine Kopfzeile enthalten, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile haben soll, + dann lassen Sie einfach die Option "header" weg.
        +
        +
        Parameters:
        +
        options - Geben Sie hier "header" an, wenn die Datei eine Kopfzeile haben soll.
        +
        filename - Dateiname der CSV-Datei.
        +
        separator - Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab)
        +
        quote - Kennung für Texte (meist '"').
        +
        +
      • +
      + + + +
        +
      • +

        saveXML

        +
        public void saveXML(java.lang.String filename)
        +
        Speichert die Tabelle als XML-Dokument.
        +
        +
        Parameters:
        +
        filename - Dateiname des XML-Files
        +
        +
      • +
      + + + +
        +
      • +

        addColumn

        +
        public void addColumn()
        +
        Fügt eine neue Spalte am Ende der Tabelle an.
        +
      • +
      + + + +
        +
      • +

        addColumn

        +
        public void addColumn(java.lang.String title)
        +
        Fügt eine neue Spalte am Ende der Tabelle an und benennt sie.
        +
        +
        Parameters:
        +
        title - Bezeichnung der Spalte
        +
        +
      • +
      + + + +
        +
      • +

        addColumn

        +
        public void addColumn(java.lang.String title,
        +                      java.lang.String type)
        +
        Fügt eine neue Spalte am Ende der Tabelle an und benennt und typisiert sie.
        +
        +
        Parameters:
        +
        title - Bezeichnung der Spalte
        +
        type - Typ der Spalte (UNKNOWN, DOUBLE, INTEGER, FLOAT)
        +
        +
      • +
      + + + +
        +
      • +

        removeColumn

        +
        public void removeColumn(int i)
        +
        Löscht eine Spalte.
        +
        +
        Parameters:
        +
        i - Nummer der Spalte.
        +
        +
      • +
      + + + +
        +
      • +

        removeColumn

        +
        public void removeColumn(java.lang.String name)
        +
        Löscht eine Spalte
        +
        +
        Parameters:
        +
        name - Name der Spalte
        +
        +
      • +
      + + + +
        +
      • +

        getColumnCount

        +
        public int getColumnCount()
        +
        Liefert die Anzahl der Spalten in der Tabelle
        +
        +
        Returns:
        +
        Anzahl der Spalten
        +
        +
      • +
      + + + +
        +
      • +

        getRowCount

        +
        public int getRowCount()
        +
        Liefert die Anzahl der Zeilen in der Tabelle
        +
        +
        Returns:
        +
        Anzahl der Zeilen
        +
        +
      • +
      + + + +
        +
      • +

        clearRows

        +
        public void clearRows()
        +
        Löscht alle Zeilen der Tabelle. + Die Spaltenüberschriften und Typen bleiben erhalten.
        +
      • +
      + + + +
        +
      • +

        addRow

        +
        public TableRow addRow()
        +
        Fügt eine neue Zeile an das Ende der Tabelle an.
        +
        +
        Returns:
        +
        ein TableRow-Objekt für diese neue Zeile
        +
        +
      • +
      + + + +
        +
      • +

        removeRow

        +
        public void removeRow(int i)
        +
        Löscht eine Zeile
        +
        +
        Parameters:
        +
        i - Nummer der Zeile
        +
        +
      • +
      + + + +
        +
      • +

        getRow

        +
        public TableRow getRow(int i)
        +
        Liefert eine Zeile der Tabelle
        +
        +
        Parameters:
        +
        i - Nummer der Zeile
        +
        Returns:
        +
        TableRow-Objekt für diese Zeile
        +
        +
      • +
      + + + +
        +
      • +

        rows

        +
        public TableRow[] rows()
        +
        Liefert die ganze Tabelle als Array von TableRow-Objekten
        +
        +
        Returns:
        +
        Array von TableRow-Objekten
        +
        +
      • +
      + + + +
        +
      • +

        getInt

        +
        public int getInt(int row,
        +                  int column)
        +
        Liefert den Wert einer Zelle als Integer-Zahl
        +
        +
        Parameters:
        +
        row - Zeilennummer
        +
        column - Spaltennummer
        +
        Returns:
        +
        Wert der Zelle
        +
        +
      • +
      + + + +
        +
      • +

        getInt

        +
        public int getInt(int row,
        +                  java.lang.String name)
        +
        Liefert den Wert einer Zelle als Integer-Zahl
        +
        +
        Parameters:
        +
        row - Zeilennummer
        +
        name - Name der Spalte
        +
        Returns:
        +
        Wert der Zelle
        +
        +
      • +
      + + + +
        +
      • +

        setInt

        +
        public void setInt(int row,
        +                   int column,
        +                   int value)
        +
        Setzt den Wert einer Zelle als Integer-Zahl
        +
        +
        Parameters:
        +
        row - Zeilennummer
        +
        column - Spaltennummer
        +
        value - neuer Wert der Zelle
        +
        +
      • +
      + + + +
        +
      • +

        setInt

        +
        public void setInt(int row,
        +                   java.lang.String name,
        +                   int value)
        +
        Setzt den Wert einer Zelle als Integer-Zahl
        +
        +
        Parameters:
        +
        row - Zeilennummer
        +
        name - Name der Spalte
        +
        value - neuer Wert der Zelle
        +
        +
      • +
      + + + +
        +
      • +

        getIntRow

        +
        public int[] getIntRow(int row)
        +
        Liefert alle Werte einer Zeile als Integer-Array.
        +
        +
        Parameters:
        +
        row - Nummer der Zeile
        +
        Returns:
        +
        int-Array, dass alle Werte der Zeile enthält
        +
        +
      • +
      + + + +
        +
      • +

        getIntColumn

        +
        public int[] getIntColumn(int column)
        +
        Liefert alle Werte einer Spalte als Integer-Array.
        +
        +
        Parameters:
        +
        column - Nummer der Spalte
        +
        Returns:
        +
        int-Array, dass alle Werte der Spalte enthält
        +
        +
      • +
      + + + +
        +
      • +

        getIntColumn

        +
        public int[] getIntColumn(java.lang.String name)
        +
        Liefert alle Werte einer Spalte als Integer-Array.
        +
        +
        Parameters:
        +
        name - Name der Spalte
        +
        Returns:
        +
        int-Array, dass alle Werte der Spalte enthält
        +
        +
      • +
      + + + +
        +
      • +

        getFloat

        +
        public float getFloat(int row,
        +                      int column)
        +
        Liefert den Wert einer Zelle als Float-Zahl
        +
        +
        Parameters:
        +
        row - Zeilennummer
        +
        column - Spaltennummer
        +
        Returns:
        +
        Wert der Zelle
        +
        +
      • +
      + + + +
        +
      • +

        getFloat

        +
        public float getFloat(int row,
        +                      java.lang.String name)
        +
        Liefert den Wert einer Zelle als Float-Zahl
        +
        +
        Parameters:
        +
        row - Zeilennummer
        +
        name - Name der Spalte
        +
        Returns:
        +
        Wert der Zelle
        +
        +
      • +
      + + + +
        +
      • +

        setFloat

        +
        public void setFloat(int row,
        +                     int column,
        +                     float value)
        +
        Setzt den Wert einer Zelle als Float-Zahl
        +
        +
        Parameters:
        +
        row - Zeilennummer
        +
        column - Spaltennummer
        +
        value - neuer Wert der Zelle
        +
        +
      • +
      + + + +
        +
      • +

        setFloat

        +
        public void setFloat(int row,
        +                     java.lang.String name,
        +                     float value)
        +
        Setzt den Wert einer Zelle als Float-Zahl
        +
        +
        Parameters:
        +
        row - Zeilennummer
        +
        name - Name der Spalte
        +
        value - neuer Wert der Zelle
        +
        +
      • +
      + + + +
        +
      • +

        getFloatRow

        +
        public float[] getFloatRow(int row)
        +
        Liefert alle Werte einer Zeile als Float-Array.
        +
        +
        Parameters:
        +
        row - Nummer der Zeile
        +
        Returns:
        +
        int-Array, dass alle Werte der Zeile enthält
        +
        +
      • +
      + + + +
        +
      • +

        getFloatColumn

        +
        public float[] getFloatColumn(int column)
        +
        Liefert alle Werte einer Spalte als Float-Array.
        +
        +
        Parameters:
        +
        column - Nummer der Spalte
        +
        Returns:
        +
        int-Array, dass alle Werte der Spalte enthält
        +
        +
      • +
      + + + +
        +
      • +

        getFloatColumn

        +
        public float[] getFloatColumn(java.lang.String name)
        +
        Liefert alle Werte einer Spalte als Float-Array.
        +
        +
        Parameters:
        +
        name - Name der Spalte
        +
        Returns:
        +
        int-Array, dass alle Werte der Spalte enthält
        +
        +
      • +
      + + + +
        +
      • +

        getDouble

        +
        public double getDouble(int row,
        +                        int column)
        +
        Liefert den Wert einer Zelle als Double-Zahl
        +
        +
        Parameters:
        +
        row - Zeilennummer
        +
        column - Spaltennummer
        +
        Returns:
        +
        Wert der Zelle
        +
        +
      • +
      + + + +
        +
      • +

        getDouble

        +
        public double getDouble(int row,
        +                        java.lang.String name)
        +
        Liefert den Wert einer Zelle als Double-Zahl
        +
        +
        Parameters:
        +
        row - Zeilennummer
        +
        name - Name der Spalte
        +
        Returns:
        +
        Wert der Zelle
        +
        +
      • +
      + + + +
        +
      • +

        setDouble

        +
        public void setDouble(int row,
        +                      int column,
        +                      double value)
        +
        Setzt den Wert einer Zelle als Double-Zahl
        +
        +
        Parameters:
        +
        row - Zeilennummer
        +
        column - Spaltennummer
        +
        value - neuer Wert der Zelle
        +
        +
      • +
      + + + +
        +
      • +

        setDouble

        +
        public void setDouble(int row,
        +                      java.lang.String name,
        +                      double value)
        +
        Setzt den Wert einer Zelle als Double-Zahl
        +
        +
        Parameters:
        +
        row - Zeilennummer
        +
        name - Name der Spalte
        +
        value - neuer Wert der Zelle
        +
        +
      • +
      + + + +
        +
      • +

        getDoubleRow

        +
        public double[] getDoubleRow(int row)
        +
        Liefert alle Werte einer Spalte als Double-Array.
        +
        +
        Parameters:
        +
        row - Nummer der Spalte
        +
        Returns:
        +
        int-Array, dass alle Werte der Spalte enthält
        +
        +
      • +
      + + + +
        +
      • +

        getDoubleColumn

        +
        public double[] getDoubleColumn(int column)
        +
        Liefert alle Werte einer Spalte als Double-Array.
        +
        +
        Parameters:
        +
        column - Nummer der Spalte
        +
        Returns:
        +
        int-Array, dass alle Werte der Spalte enthält
        +
        +
      • +
      + + + +
        +
      • +

        getDoubleColumn

        +
        public double[] getDoubleColumn(java.lang.String name)
        +
        Liefert alle Werte einer Spalte als Double-Array.
        +
        +
        Parameters:
        +
        name - Name der Spalte
        +
        Returns:
        +
        int-Array, dass alle Werte der Spalte enthält
        +
        +
      • +
      + + + +
        +
      • +

        getString

        +
        public java.lang.String getString(int row,
        +                                  int column)
        +
        Liefert den Wert einer Zelle als String
        +
        +
        Parameters:
        +
        row - Zeilennummer
        +
        column - Spaltennummer
        +
        Returns:
        +
        Wert der Zelle
        +
        +
      • +
      + + + +
        +
      • +

        getString

        +
        public java.lang.String getString(int row,
        +                                  java.lang.String name)
        +
        Liefert den Wert einer Zelle als String
        +
        +
        Parameters:
        +
        row - Zeilennummer
        +
        name - Name der Spalte
        +
        Returns:
        +
        Wert der Zelle
        +
        +
      • +
      + + + +
        +
      • +

        setString

        +
        public void setString(int row,
        +                      int column,
        +                      java.lang.String text)
        +
        Setzt den Wert einer Zelle als String
        +
        +
        Parameters:
        +
        row - Zeilennummer
        +
        column - Spaltennummer
        +
        text - neuer Wert der Zelle
        +
        +
      • +
      + + + +
        +
      • +

        setString

        +
        public void setString(int row,
        +                      java.lang.String name,
        +                      java.lang.String text)
        +
        Setzt den Wert einer Zelle als String
        +
        +
        Parameters:
        +
        row - Zeilennummer
        +
        name - Name der Spalte
        +
        text - neuer Wert der Zelle
        +
        +
      • +
      + + + +
        +
      • +

        getStringRow

        +
        public java.lang.String[] getStringRow(int row)
        +
        Liefert alle Werte einer Spalte als String-Array.
        +
        +
        Parameters:
        +
        row - Nummer der Spalte
        +
        Returns:
        +
        int-Array, dass alle Werte der Spalte enthält
        +
        +
      • +
      + + + +
        +
      • +

        getStringColumn

        +
        public java.lang.String[] getStringColumn(int column)
        +
        Liefert alle Werte einer Spalte als String-Array.
        +
        +
        Parameters:
        +
        column - Nummer der Spalte
        +
        Returns:
        +
        int-Array, dass alle Werte der Spalte enthält
        +
        +
      • +
      + + + +
        +
      • +

        getStringColumn

        +
        public java.lang.String[] getStringColumn(java.lang.String name)
        +
        Liefert alle Werte einer Spalte als String-Array.
        +
        +
        Parameters:
        +
        name - Name der Spalte
        +
        Returns:
        +
        int-Array, dass alle Werte der Spalte enthält
        +
        +
      • +
      + + + +
        +
      • +

        findRow

        +
        public TableRow findRow(java.lang.String value,
        +                        int column)
        +
        Sucht nach einem bestimmtem Wert in einer Zeile.
        +
        +
        Parameters:
        +
        value - Wert der gesucht werden soll
        +
        column - Nummer der Spalte, die durchsucht werden soll
        +
        Returns:
        +
        TableRow-Objekt der Zeile, wenn der Wert gefunden wurde, sonst null
        +
        +
      • +
      + + + +
        +
      • +

        findRow

        +
        public TableRow findRow(java.lang.String value,
        +                        java.lang.String name)
        +
        Sucht nach einem bestimmtem Wert in einer Zeile.
        +
        +
        Parameters:
        +
        value - Wert der gesucht werden soll
        +
        name - Name der Spalte, die durchsucht werden soll
        +
        Returns:
        +
        TableRow-Objekt der Zeile, wenn der Wert gefunden wurde, sonst null
        +
        +
      • +
      + + + +
        +
      • +

        trim

        +
        public void trim()
        +
        Kürzt alle Einträge der Tabelle um unnötige Leerzeichen am Anfang oder Ende
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + + + diff --git a/01_hintergrund/02_dokumentation_java_klassen/TableRow.html b/01_hintergrund/02_dokumentation_java_klassen/TableRow.html new file mode 100644 index 0000000..c406db9 --- /dev/null +++ b/01_hintergrund/02_dokumentation_java_klassen/TableRow.html @@ -0,0 +1,689 @@ + + + + + + +TableRow + + + + + + + + + + + + +
+

Class TableRow

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • TableRow
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class TableRow
    +extends java.lang.Object
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      TableRow(Document doc, + Element row) +
      Erzeugt ein TableRow-Objekt.
      +
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      All Methods Instance Methods Concrete Methods 
      Modifier and TypeMethod and Description
      intgetColumn(java.lang.String name) +
      Liefert die Nummer einer Spalte
      +
      intgetColumnCount() +
      Liefert die Anzahl der Spalten der Zeile.
      +
      java.lang.StringgetColumnTitle(int i) +
      Liefert den Titel einer Spalte
      +
      doublegetDouble(int i) +
      Liefert den Wert einer Zelle als Double-Zahl
      +
      doublegetDouble(java.lang.String name) +
      Liefert den Wert einer Zelle als Double-Zahl
      +
      floatgetFloat(int i) +
      Liefert den Wert einer Zelle als Float-Zahl
      +
      floatgetFloat(java.lang.String name) +
      Liefert den Wert einer Zelle als Float-Zahl
      +
      intgetInt(int i) +
      Liefert den Wert einer Zelle als Int-Zahl
      +
      intgetInt(java.lang.String name) +
      Liefert den Wert einer Zelle als Int-Zahl
      +
      java.lang.StringgetString(int i) +
      Liefert den Wert einer Zelle als String
      +
      java.lang.StringgetString(java.lang.String name) +
      Liefert den Wert einer Zelle als String
      +
      voidsetDouble(int i, + double value) +
      Setzt den Wert einer Zelle als Double-Zahl
      +
      voidsetDouble(java.lang.String name, + double value) +
      Setzt den Wert einer Zelle als Double-Zahl
      +
      voidsetFloat(int i, + float value) +
      Setzt den Wert einer Zelle als Float-Zahl
      +
      voidsetFloat(java.lang.String name, + float value) +
      Setzt den Wert einer Zelle als Float-Zahl
      +
      voidsetInt(int i, + int value) +
      Setzt den Wert einer Zelle als Int-Zahl
      +
      voidsetInt(java.lang.String name, + int value) +
      Setzt den Wert einer Zelle als Int-Zahl
      +
      voidsetString(int i, + java.lang.String text) +
      Setzt den Wert einer Zelle als String
      +
      voidsetString(java.lang.String name, + java.lang.String text) +
      Setzt den Wert einer Zelle als String
      +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        TableRow

        +
        public TableRow(Document doc,
        +                Element row)
        +
        Erzeugt ein TableRow-Objekt. + Diese Methode ist für den internen Gebraucht. Einige Methode der Table-Klasse erzeugen mit diesem Konstruktor TableRow-Objekte.
        +
        +
        Parameters:
        +
        doc - JDOM-Dokument, das für die ganze Tabelle steht.
        +
        row - JDOM-Element, das für die aktuelle Zeile steht.
        +
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        getColumnCount

        +
        public int getColumnCount()
        +
        Liefert die Anzahl der Spalten der Zeile.
        +
        +
        Returns:
        +
        Anzahl der Spalten
        +
        +
      • +
      + + + +
        +
      • +

        getColumnTitle

        +
        public java.lang.String getColumnTitle(int i)
        +
        Liefert den Titel einer Spalte
        +
        +
        Parameters:
        +
        i - Nummer der Spalte
        +
        Returns:
        +
        Name der Spalte
        +
        +
      • +
      + + + +
        +
      • +

        getColumn

        +
        public int getColumn(java.lang.String name)
        +
        Liefert die Nummer einer Spalte
        +
        +
        Parameters:
        +
        name - Name der Spalte
        +
        Returns:
        +
        Nummer der Spalte
        +
        +
      • +
      + + + +
        +
      • +

        getString

        +
        public java.lang.String getString(int i)
        +
        Liefert den Wert einer Zelle als String
        +
        +
        Parameters:
        +
        i - Nummer der Spalte
        +
        Returns:
        +
        Wert der Zelle
        +
        +
      • +
      + + + +
        +
      • +

        getString

        +
        public java.lang.String getString(java.lang.String name)
        +
        Liefert den Wert einer Zelle als String
        +
        +
        Parameters:
        +
        name - Name der Spalte
        +
        Returns:
        +
        Wert der Zelle
        +
        +
      • +
      + + + +
        +
      • +

        setString

        +
        public void setString(int i,
        +                      java.lang.String text)
        +
        Setzt den Wert einer Zelle als String
        +
        +
        Parameters:
        +
        i - Nummer der Spalte
        +
        text - neuer Wert der Zelle
        +
        +
      • +
      + + + +
        +
      • +

        setString

        +
        public void setString(java.lang.String name,
        +                      java.lang.String text)
        +
        Setzt den Wert einer Zelle als String
        +
        +
        Parameters:
        +
        name - Name der Spalte
        +
        text - neuer Wert der Zelle
        +
        +
      • +
      + + + +
        +
      • +

        getInt

        +
        public int getInt(int i)
        +
        Liefert den Wert einer Zelle als Int-Zahl
        +
        +
        Parameters:
        +
        i - Nummer der Spalte
        +
        Returns:
        +
        Wert der Zelle
        +
        +
      • +
      + + + +
        +
      • +

        getInt

        +
        public int getInt(java.lang.String name)
        +
        Liefert den Wert einer Zelle als Int-Zahl
        +
        +
        Parameters:
        +
        name - Name der Spalte
        +
        Returns:
        +
        Wert der Zelle
        +
        +
      • +
      + + + +
        +
      • +

        setInt

        +
        public void setInt(int i,
        +                   int value)
        +
        Setzt den Wert einer Zelle als Int-Zahl
        +
        +
        Parameters:
        +
        i - Nummer der Spalte
        +
        value - neuer Wert der Zelle
        +
        +
      • +
      + + + +
        +
      • +

        setInt

        +
        public void setInt(java.lang.String name,
        +                   int value)
        +
        Setzt den Wert einer Zelle als Int-Zahl
        +
        +
        Parameters:
        +
        name - Name der Spalte
        +
        value - neuer Wert der Zelle
        +
        +
      • +
      + + + +
        +
      • +

        getFloat

        +
        public float getFloat(int i)
        +
        Liefert den Wert einer Zelle als Float-Zahl
        +
        +
        Parameters:
        +
        i - Nummer der Spalte
        +
        Returns:
        +
        Wert der Zelle
        +
        +
      • +
      + + + +
        +
      • +

        getFloat

        +
        public float getFloat(java.lang.String name)
        +
        Liefert den Wert einer Zelle als Float-Zahl
        +
        +
        Parameters:
        +
        name - Name der Spalte
        +
        Returns:
        +
        Wert der Zelle
        +
        +
      • +
      + + + +
        +
      • +

        setFloat

        +
        public void setFloat(int i,
        +                     float value)
        +
        Setzt den Wert einer Zelle als Float-Zahl
        +
        +
        Parameters:
        +
        i - Nummer der Spalte
        +
        value - neuer Wert der Zelle
        +
        +
      • +
      + + + +
        +
      • +

        setFloat

        +
        public void setFloat(java.lang.String name,
        +                     float value)
        +
        Setzt den Wert einer Zelle als Float-Zahl
        +
        +
        Parameters:
        +
        name - Name der Spalte
        +
        value - neuer Wert der Zelle
        +
        +
      • +
      + + + +
        +
      • +

        getDouble

        +
        public double getDouble(int i)
        +
        Liefert den Wert einer Zelle als Double-Zahl
        +
        +
        Parameters:
        +
        i - Nummer der Spalte
        +
        Returns:
        +
        Wert der Zelle
        +
        +
      • +
      + + + +
        +
      • +

        getDouble

        +
        public double getDouble(java.lang.String name)
        +
        Liefert den Wert einer Zelle als Double-Zahl
        +
        +
        Parameters:
        +
        name - Name der Spalte
        +
        Returns:
        +
        Wert der Zelle
        +
        +
      • +
      + + + +
        +
      • +

        setDouble

        +
        public void setDouble(int i,
        +                      double value)
        +
        Setzt den Wert einer Zelle als Double-Zahl
        +
        +
        Parameters:
        +
        i - Nummer der Spalte
        +
        value - neuer Wert der Zelle
        +
        +
      • +
      + + + +
        +
      • +

        setDouble

        +
        public void setDouble(java.lang.String name,
        +                      double value)
        +
        Setzt den Wert einer Zelle als Double-Zahl
        +
        +
        Parameters:
        +
        name - Name der Spalte
        +
        value - neuer Wert der Zelle
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + + + diff --git a/01_hintergrund/02_dokumentation_java_klassen/XML.html b/01_hintergrund/02_dokumentation_java_klassen/XML.html new file mode 100644 index 0000000..b0a2abd --- /dev/null +++ b/01_hintergrund/02_dokumentation_java_klassen/XML.html @@ -0,0 +1,1153 @@ + + + + + + +XML + + + + + + + + + + + + +
+

Class XML

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • XML
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class XML
    +extends java.lang.Object
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + + + + +
      Constructors 
      Constructor and Description
      XML() +
      Erzeugt ein leeres XMLDokument
      +
      XML(java.lang.String filename) +
      Erzeugt ein XML-Dokument aus einer Datei
      +
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      All Methods Instance Methods Concrete Methods 
      Modifier and TypeMethod and Description
      XMLaddChild(java.lang.String name) +
      Erzeuge neues Element nach der aktuellen Position und setze dieses als aktuelles Element
      +
      intgetAttributeCount() +
      liefert die Anzahl der Attribute eines Elements.
      +
      XMLgetChild(int i) +
      Liefert das i.
      +
      XMLgetChild(java.lang.String name) +
      Liefert das erste Kind des Elements mit einem bestimmten Namen.
      +
      XML[]getChildren() +
      Liefert alle Kinder des Elements als Array von XML-Objekten.
      +
      XML[]getChildren(java.lang.String name) +
      Liefert bestimmte Kinder des Elements als Array von XML-Objekten.
      +
      java.lang.StringgetContent() +
      Fragt den Inhalt/Text des aktuellen Elements ab
      +
      java.lang.StringgetContent(java.lang.String defaultValue) +
      Fragt den Inhalt/Text des aktuellen Elements ab + Hat das Element keinen Inhalt wird der defaultValue zurückgegeben.
      +
      doublegetDouble(java.lang.String attribute) +
      Fragt einen Attributwert des aktuellen Elements ab
      +
      doublegetDouble(java.lang.String attribute, + double defaultValue) +
      Fragt einen Attributwert des aktuellen Elements ab + Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben
      +
      doublegetDoubleContent() +
      Fragt den Inhalt des aktuellen Elements als Doublezahl ab
      +
      doublegetDoubleContent(double defaultValue) +
      Fragt den Inhalt des aktuellen Elements als Doublezahl ab + Hat das Element keinen Inhalt wird der defaultValue zurückgegeben.
      +
      floatgetFloat(java.lang.String attribute) +
      Fragt einen Attributwert des aktuellen Elements ab
      +
      floatgetFloat(java.lang.String attribute, + float defaultValue) +
      Fragt einen Attributwert des aktuellen Elements ab + Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben
      +
      floatgetFloatContent() +
      Fragt den Inhalt des aktuellen Elements als Floatzahl ab
      +
      floatgetFloatContent(float defaultValue) +
      Fragt den Inhalt des aktuellen Elements als Floatzahl ab + Hat das Element keinen Inhalt wird der defaultValue zurückgegeben.
      +
      intgetInt(java.lang.String attribute) +
      Fragt einen Attributwert des aktuellen Elements ab
      +
      intgetInt(java.lang.String attribute, + int defaultValue) +
      Fragt einen Attributwert des aktuellen Elements ab + Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben
      +
      intgetIntContent() +
      Fragt den Inhalt des aktuellen Elements als Integerzahl ab
      +
      intgetIntContent(int defaultValue) +
      Fragt den Inhalt des aktuellen Elements als Integerzahl ab + Hat das Element keinen Inhalt wird der defaultValue zurückgegeben.
      +
      java.lang.StringgetName() +
      Frage den Namen des aktuellen Elements ab
      +
      XMLgetParent() +
      liefert ein XML-Objekt, das auf den Vaterknoten des aktuellen Elements zeigt.
      +
      java.lang.StringgetString(java.lang.String attribute) +
      Fragt einen Attributwert des aktuellen Elements ab
      +
      java.lang.StringgetString(java.lang.String attribute, + java.lang.String defaultValue) +
      Fragt einen Attributwert des aktuellen Elements ab + Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben
      +
      booleanhasAttribute() +
      liefert zurück, ob das aktuelle Element Attribute hat .
      +
      booleanhasChildren() +
      Überprüft, ob das Element irgendwelche Kinder hat oder nicht, und gibt das Ergebnis als boolean zurück.
      +
      java.lang.String[]listAttributes() +
      Ruft alle Attribute des angegebenen Elements ab und gibt sie als Array von Strings zurück.
      +
      java.lang.String[]listChildren() +
      Ermittelt die Namen aller Kinder des Elements und gibt die Namen als ein Array von Strings zurück.
      +
      voidloadXML(java.lang.String filename) +
      Öffnet das durch den Dateinamen gegebene Dokument
      +
      voidremoveChild(XML kid) +
      löscht ein Kind des aktuellen Knotens.
      +
      voidsaveXML(java.lang.String filename) +
      Speichert den XML-Baum im angegebenen Dateinamen
      +
      voidsetContent(java.lang.String text) +
      Setzt den Inhalt/Text des aktuellen Elements
      +
      voidsetDouble(java.lang.String attribute, + double value) +
      Setzt einen Attributwert des aktuellen Elements
      +
      voidsetDoubleContent(double value) +
      Setzt den Inhalt des aktuellen Elements
      +
      voidsetFloat(java.lang.String attribute, + float value) +
      Setzt einen Attributwert des aktuellen Elements
      +
      voidsetFloatContent(float value) +
      Setzt den Inhalt des aktuellen Elements
      +
      voidsetInt(java.lang.String attribute, + int value) +
      Setzt einen Attributwert des aktuellen Elements
      +
      voidsetIntContent(int value) +
      Setzt den Inhalt des aktuellen Elements
      +
      voidsetName(java.lang.String name) +
      Setze den Namen des aktuellen Elements.
      +
      voidsetString(java.lang.String attribute, + java.lang.String text) +
      Setzt einen Attributwert des aktuellen Elements
      +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        XML

        +
        public XML()
        +
        Erzeugt ein leeres XMLDokument
        +
      • +
      + + + +
        +
      • +

        XML

        +
        public XML(java.lang.String filename)
        +
        Erzeugt ein XML-Dokument aus einer Datei
        +
        +
        Parameters:
        +
        filename - Dateiname der XML-Datei
        +
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        loadXML

        +
        public void loadXML(java.lang.String filename)
        +
        Öffnet das durch den Dateinamen gegebene Dokument
        +
        +
        Parameters:
        +
        filename - Dateiname des XML-Files
        +
        +
      • +
      + + + +
        +
      • +

        saveXML

        +
        public void saveXML(java.lang.String filename)
        +
        Speichert den XML-Baum im angegebenen Dateinamen
        +
        +
        Parameters:
        +
        filename - Dateiname des XML-Files
        +
        +
      • +
      + + + +
        +
      • +

        getParent

        +
        public XML getParent()
        +
        liefert ein XML-Objekt, das auf den Vaterknoten des aktuellen Elements zeigt.
        +
        +
        Returns:
        +
        Vater des aktuellen Objekts.
        +
        +
      • +
      + + + +
        +
      • +

        hasChildren

        +
        public boolean hasChildren()
        +
        Überprüft, ob das Element irgendwelche Kinder hat oder nicht, und gibt das Ergebnis als boolean zurück.
        +
        +
        Returns:
        +
        true, wenn Kinder vorhanden sind, sonst false
        +
        +
      • +
      + + + +
        +
      • +

        listChildren

        +
        public java.lang.String[] listChildren()
        +
        Ermittelt die Namen aller Kinder des Elements und gibt die Namen als ein Array von Strings zurück. + Dies ist dasselbe wie das Durchlaufen und Aufrufen von getName() auf jedem untergeordneten Element einzeln.
        +
        +
        Returns:
        +
        Liste aller Namen der Kinder
        +
        +
      • +
      + + + +
        +
      • +

        getChildren

        +
        public XML[] getChildren()
        +
        Liefert alle Kinder des Elements als Array von XML-Objekten.
        +
        +
        Returns:
        +
        Array der Kinder als XML-Objekte
        +
        +
      • +
      + + + +
        +
      • +

        getChildren

        +
        public XML[] getChildren(java.lang.String name)
        +
        Liefert bestimmte Kinder des Elements als Array von XML-Objekten. + Die Methode gibt dabei alle Kinder zurück, die dem angegebenen Namen entsprechen.
        +
        +
        Parameters:
        +
        name - Name der gesuchten Kind-Objekte
        +
        Returns:
        +
        Array der Kinder als XML-Objekte
        +
        +
      • +
      + + + +
        +
      • +

        getChild

        +
        public XML getChild(java.lang.String name)
        +
        Liefert das erste Kind des Elements mit einem bestimmten Namen. + Die Methode gibt das erste Kind zurück, das dem angegebenen Namen entsprechen.
        +
        +
        Parameters:
        +
        name - Name des gesuchten Kind-Objektes
        +
        Returns:
        +
        Kind als XML-Objekt
        +
        +
      • +
      + + + +
        +
      • +

        getChild

        +
        public XML getChild(int i)
        +
        Liefert das i. Kind des Elements. + Die Methode gibt das i. Kind des aktuellen Elements zurück.
        +
        +
        Parameters:
        +
        i - Nummer des Kindes
        +
        Returns:
        +
        Kind als XML-Objekt
        +
        +
      • +
      + + + +
        +
      • +

        getName

        +
        public java.lang.String getName()
        +
        Frage den Namen des aktuellen Elements ab
        +
        +
        Returns:
        +
        Namen des Elements
        +
        +
      • +
      + + + +
        +
      • +

        setName

        +
        public void setName(java.lang.String name)
        +
        Setze den Namen des aktuellen Elements.
        +
        +
        Parameters:
        +
        name - Neuer Name des Elements
        +
        +
      • +
      + + + +
        +
      • +

        getAttributeCount

        +
        public int getAttributeCount()
        +
        liefert die Anzahl der Attribute eines Elements.
        +
        +
        Returns:
        +
        Anzahl des Attribute
        +
        +
      • +
      + + + +
        +
      • +

        hasAttribute

        +
        public boolean hasAttribute()
        +
        liefert zurück, ob das aktuelle Element Attribute hat .
        +
        +
        Returns:
        +
        true, wenn es Attribute gibt
        +
        +
      • +
      + + + +
        +
      • +

        listAttributes

        +
        public java.lang.String[] listAttributes()
        +
        Ruft alle Attribute des angegebenen Elements ab und gibt sie als Array von Strings zurück.
        +
        +
        Returns:
        +
        Liste der Attributnamen
        +
        +
      • +
      + + + +
        +
      • +

        getString

        +
        public java.lang.String getString(java.lang.String attribute)
        +
        Fragt einen Attributwert des aktuellen Elements ab
        +
        +
        Parameters:
        +
        attribute - Name des Attributs
        +
        Returns:
        +
        Wert des Attributs
        +
        +
      • +
      + + + +
        +
      • +

        getString

        +
        public java.lang.String getString(java.lang.String attribute,
        +                                  java.lang.String defaultValue)
        +
        Fragt einen Attributwert des aktuellen Elements ab + Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben
        +
        +
        Parameters:
        +
        attribute - Name des Attributs
        +
        defaultValue - Standardwert, falls es das Attribut nicht gibt
        +
        Returns:
        +
        Wert des Attributs
        +
        +
      • +
      + + + +
        +
      • +

        setString

        +
        public void setString(java.lang.String attribute,
        +                      java.lang.String text)
        +
        Setzt einen Attributwert des aktuellen Elements
        +
        +
        Parameters:
        +
        attribute - Name des Attributs
        +
        text - neuer Wert des Attributs
        +
        +
      • +
      + + + +
        +
      • +

        getInt

        +
        public int getInt(java.lang.String attribute)
        +
        Fragt einen Attributwert des aktuellen Elements ab
        +
        +
        Parameters:
        +
        attribute - Name des Attributs
        +
        Returns:
        +
        Wert des Attributs als Integer-Zahl
        +
        +
      • +
      + + + +
        +
      • +

        getInt

        +
        public int getInt(java.lang.String attribute,
        +                  int defaultValue)
        +
        Fragt einen Attributwert des aktuellen Elements ab + Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben
        +
        +
        Parameters:
        +
        attribute - Name des Attributs
        +
        defaultValue - Standardwert, falls es das Attribut nicht gibt
        +
        Returns:
        +
        Wert des Attributs als Integer-Zahl
        +
        +
      • +
      + + + +
        +
      • +

        setInt

        +
        public void setInt(java.lang.String attribute,
        +                   int value)
        +
        Setzt einen Attributwert des aktuellen Elements
        +
        +
        Parameters:
        +
        attribute - Name des Attributs
        +
        value - neuer Wert des Attributs
        +
        +
      • +
      + + + +
        +
      • +

        getFloat

        +
        public float getFloat(java.lang.String attribute)
        +
        Fragt einen Attributwert des aktuellen Elements ab
        +
        +
        Parameters:
        +
        attribute - Name des Attributs
        +
        Returns:
        +
        Wert des Attributs als Float-Zahl
        +
        +
      • +
      + + + +
        +
      • +

        getFloat

        +
        public float getFloat(java.lang.String attribute,
        +                      float defaultValue)
        +
        Fragt einen Attributwert des aktuellen Elements ab + Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben
        +
        +
        Parameters:
        +
        attribute - Name des Attributs
        +
        defaultValue - Standardwert, falls es das Attribut nicht gibt
        +
        Returns:
        +
        Wert des Attributs als Float-Zahl
        +
        +
      • +
      + + + +
        +
      • +

        setFloat

        +
        public void setFloat(java.lang.String attribute,
        +                     float value)
        +
        Setzt einen Attributwert des aktuellen Elements
        +
        +
        Parameters:
        +
        attribute - Name des Attributs
        +
        value - neuer Wert des Attributs
        +
        +
      • +
      + + + +
        +
      • +

        getDouble

        +
        public double getDouble(java.lang.String attribute)
        +
        Fragt einen Attributwert des aktuellen Elements ab
        +
        +
        Parameters:
        +
        attribute - Name des Attributs
        +
        Returns:
        +
        Wert des Attributs als Double-Zahl
        +
        +
      • +
      + + + +
        +
      • +

        getDouble

        +
        public double getDouble(java.lang.String attribute,
        +                        double defaultValue)
        +
        Fragt einen Attributwert des aktuellen Elements ab + Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben
        +
        +
        Parameters:
        +
        attribute - Name des Attributs
        +
        defaultValue - Standardwert, falls es das Attribut nicht gibt
        +
        Returns:
        +
        Wert des Attributs als double-Zahl
        +
        +
      • +
      + + + +
        +
      • +

        setDouble

        +
        public void setDouble(java.lang.String attribute,
        +                      double value)
        +
        Setzt einen Attributwert des aktuellen Elements
        +
        +
        Parameters:
        +
        attribute - Name des Attributs
        +
        value - neuer Wert des Attributs
        +
        +
      • +
      + + + +
        +
      • +

        getContent

        +
        public java.lang.String getContent()
        +
        Fragt den Inhalt/Text des aktuellen Elements ab
        +
        +
        Returns:
        +
        Inhalt des Elements
        +
        +
      • +
      + + + +
        +
      • +

        getContent

        +
        public java.lang.String getContent(java.lang.String defaultValue)
        +
        Fragt den Inhalt/Text des aktuellen Elements ab + Hat das Element keinen Inhalt wird der defaultValue zurückgegeben.
        +
        +
        Parameters:
        +
        defaultValue - Standardtext
        +
        Returns:
        +
        Inhalt des Elements
        +
        +
      • +
      + + + +
        +
      • +

        setContent

        +
        public void setContent(java.lang.String text)
        +
        Setzt den Inhalt/Text des aktuellen Elements
        +
        +
        Parameters:
        +
        text - Neuer Inhalt des Elements
        +
        +
      • +
      + + + +
        +
      • +

        getIntContent

        +
        public int getIntContent(int defaultValue)
        +
        Fragt den Inhalt des aktuellen Elements als Integerzahl ab + Hat das Element keinen Inhalt wird der defaultValue zurückgegeben.
        +
        +
        Parameters:
        +
        defaultValue - Standardwert
        +
        Returns:
        +
        Inhalt des Elements
        +
        +
      • +
      + + + +
        +
      • +

        getIntContent

        +
        public int getIntContent()
        +
        Fragt den Inhalt des aktuellen Elements als Integerzahl ab
        +
        +
        Returns:
        +
        Inhalt des Elements
        +
        +
      • +
      + + + +
        +
      • +

        setIntContent

        +
        public void setIntContent(int value)
        +
        Setzt den Inhalt des aktuellen Elements
        +
        +
        Parameters:
        +
        value - Neuer Inhalt des Elements
        +
        +
      • +
      + + + +
        +
      • +

        getFloatContent

        +
        public float getFloatContent(float defaultValue)
        +
        Fragt den Inhalt des aktuellen Elements als Floatzahl ab + Hat das Element keinen Inhalt wird der defaultValue zurückgegeben.
        +
        +
        Parameters:
        +
        defaultValue - Standardwert
        +
        Returns:
        +
        Inhalt des Elements
        +
        +
      • +
      + + + +
        +
      • +

        getFloatContent

        +
        public float getFloatContent()
        +
        Fragt den Inhalt des aktuellen Elements als Floatzahl ab
        +
        +
        Returns:
        +
        Inhalt des Elements
        +
        +
      • +
      + + + +
        +
      • +

        setFloatContent

        +
        public void setFloatContent(float value)
        +
        Setzt den Inhalt des aktuellen Elements
        +
        +
        Parameters:
        +
        value - Neuer Inhalt des Elements
        +
        +
      • +
      + + + +
        +
      • +

        getDoubleContent

        +
        public double getDoubleContent(double defaultValue)
        +
        Fragt den Inhalt des aktuellen Elements als Doublezahl ab + Hat das Element keinen Inhalt wird der defaultValue zurückgegeben.
        +
        +
        Parameters:
        +
        defaultValue - Standardwert
        +
        Returns:
        +
        Inhalt des Elements
        +
        +
      • +
      + + + +
        +
      • +

        getDoubleContent

        +
        public double getDoubleContent()
        +
        Fragt den Inhalt des aktuellen Elements als Doublezahl ab
        +
        +
        Returns:
        +
        Inhalt des Elements
        +
        +
      • +
      + + + +
        +
      • +

        setDoubleContent

        +
        public void setDoubleContent(double value)
        +
        Setzt den Inhalt des aktuellen Elements
        +
        +
        Parameters:
        +
        value - Neuer Inhalt des Elements
        +
        +
      • +
      + + + +
        +
      • +

        addChild

        +
        public XML addChild(java.lang.String name)
        +
        Erzeuge neues Element nach der aktuellen Position und setze dieses als aktuelles Element
        +
        +
        Parameters:
        +
        name - Name des neuen Elements
        +
        Returns:
        +
        neues Element als XML-Objekt
        +
        +
      • +
      + + + +
        +
      • +

        removeChild

        +
        public void removeChild(XML kid)
        +
        löscht ein Kind des aktuellen Knotens. + Ist kid kein Kind des aktuellen Elements passiert gar nichts.
        +
        +
        Parameters:
        +
        kid - XML-Objekt des Kindes
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + + + diff --git a/01_hintergrund/02_dokumentation_java_klassen/allclasses-frame.html b/01_hintergrund/02_dokumentation_java_klassen/allclasses-frame.html new file mode 100644 index 0000000..4318c02 --- /dev/null +++ b/01_hintergrund/02_dokumentation_java_klassen/allclasses-frame.html @@ -0,0 +1,24 @@ + + + + + + +All Classes + + + + + +

All Classes

+ + + diff --git a/01_hintergrund/02_dokumentation_java_klassen/allclasses-noframe.html b/01_hintergrund/02_dokumentation_java_klassen/allclasses-noframe.html new file mode 100644 index 0000000..90e1865 --- /dev/null +++ b/01_hintergrund/02_dokumentation_java_klassen/allclasses-noframe.html @@ -0,0 +1,24 @@ + + + + + + +All Classes + + + + + +

All Classes

+ + + diff --git a/01_hintergrund/02_dokumentation_java_klassen/constant-values.html b/01_hintergrund/02_dokumentation_java_klassen/constant-values.html new file mode 100644 index 0000000..2808100 --- /dev/null +++ b/01_hintergrund/02_dokumentation_java_klassen/constant-values.html @@ -0,0 +1,197 @@ + + + + + + +Constant Field Values + + + + + + + + + + + +
+

Constant Field Values

+

Contents

+ +
+
+ + +

<Unnamed>.*

+
    +
  • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Picture 
    Modifier and TypeConstant FieldValue
    + +public static final intCENTER2
    + +public static final intCORNER3
    + +public static final intCORNERS4
    + +public static final intRADIUS1
    +
  • +
  • + + + + + + + + + + + + + + + + + + + +
    PictureViewer 
    Modifier and TypeConstant FieldValue
    + +public static final intFIT-1
    + +public static final intNORMAL1
    +
  • +
+
+ + + + + + diff --git a/01_hintergrund/02_dokumentation_java_klassen/deprecated-list.html b/01_hintergrund/02_dokumentation_java_klassen/deprecated-list.html new file mode 100644 index 0000000..c3156a0 --- /dev/null +++ b/01_hintergrund/02_dokumentation_java_klassen/deprecated-list.html @@ -0,0 +1,121 @@ + + + + + + +Deprecated List + + + + + + + + +
+ + + + + + + +
+ + +
+

Deprecated API

+

Contents

+
+ +
+ + + + + + + +
+ + + + diff --git a/01_hintergrund/02_dokumentation_java_klassen/help-doc.html b/01_hintergrund/02_dokumentation_java_klassen/help-doc.html new file mode 100644 index 0000000..d1c9c3c --- /dev/null +++ b/01_hintergrund/02_dokumentation_java_klassen/help-doc.html @@ -0,0 +1,218 @@ + + + + + + +API Help + + + + + + + + + + + +
+

How This API Document Is Organized

+
This API (Application Programming Interface) document has pages corresponding to the items in the navigation bar, described as follows.
+
+
+
    +
  • +

    Package

    +

    Each package has a page that contains a list of its classes and interfaces, with a summary for each. This page can contain six categories:

    +
      +
    • Interfaces (italic)
    • +
    • Classes
    • +
    • Enums
    • +
    • Exceptions
    • +
    • Errors
    • +
    • Annotation Types
    • +
    +
  • +
  • +

    Class/Interface

    +

    Each class, interface, nested class and nested interface has its own separate page. Each of these pages has three sections consisting of a class/interface description, summary tables, and detailed member descriptions:

    +
      +
    • Class inheritance diagram
    • +
    • Direct Subclasses
    • +
    • All Known Subinterfaces
    • +
    • All Known Implementing Classes
    • +
    • Class/interface declaration
    • +
    • Class/interface description
    • +
    +
      +
    • Nested Class Summary
    • +
    • Field Summary
    • +
    • Constructor Summary
    • +
    • Method Summary
    • +
    +
      +
    • Field Detail
    • +
    • Constructor Detail
    • +
    • Method Detail
    • +
    +

    Each summary entry contains the first sentence from the detailed description for that item. The summary entries are alphabetical, while the detailed descriptions are in the order they appear in the source code. This preserves the logical groupings established by the programmer.

    +
  • +
  • +

    Annotation Type

    +

    Each annotation type has its own separate page with the following sections:

    +
      +
    • Annotation Type declaration
    • +
    • Annotation Type description
    • +
    • Required Element Summary
    • +
    • Optional Element Summary
    • +
    • Element Detail
    • +
    +
  • +
  • +

    Enum

    +

    Each enum has its own separate page with the following sections:

    +
      +
    • Enum declaration
    • +
    • Enum description
    • +
    • Enum Constant Summary
    • +
    • Enum Constant Detail
    • +
    +
  • +
  • +

    Tree (Class Hierarchy)

    +

    There is a Class Hierarchy page for all packages, plus a hierarchy for each package. Each hierarchy page contains a list of classes and a list of interfaces. The classes are organized by inheritance structure starting with java.lang.Object. The interfaces do not inherit from java.lang.Object.

    +
      +
    • When viewing the Overview page, clicking on "Tree" displays the hierarchy for all packages.
    • +
    • When viewing a particular package, class or interface page, clicking "Tree" displays the hierarchy for only that package.
    • +
    +
  • +
  • +

    Deprecated API

    +

    The Deprecated API page lists all of the API that have been deprecated. A deprecated API is not recommended for use, generally due to improvements, and a replacement API is usually given. Deprecated APIs may be removed in future implementations.

    +
  • +
  • +

    Index

    +

    The Index contains an alphabetic list of all classes, interfaces, constructors, methods, and fields.

    +
  • +
  • +

    Prev/Next

    +

    These links take you to the next or previous class, interface, package, or related page.

    +
  • +
  • +

    Frames/No Frames

    +

    These links show and hide the HTML frames. All pages are available with or without frames.

    +
  • +
  • +

    All Classes

    +

    The All Classes link shows all classes and interfaces except non-static nested types.

    +
  • +
  • +

    Serialized Form

    +

    Each serializable or externalizable class has a description of its serialization fields and methods. This information is of interest to re-implementors, not to developers using the API. While there is no link in the navigation bar, you can get to this information by going to any serialized class and clicking "Serialized Form" in the "See also" section of the class description.

    +
  • +
  • +

    Constant Field Values

    +

    The Constant Field Values page lists the static final fields and their values.

    +
  • +
+This help file applies to API documentation generated using the standard doclet.
+ + + + + + diff --git a/01_hintergrund/02_dokumentation_java_klassen/index-all.html b/01_hintergrund/02_dokumentation_java_klassen/index-all.html new file mode 100644 index 0000000..f116d08 --- /dev/null +++ b/01_hintergrund/02_dokumentation_java_klassen/index-all.html @@ -0,0 +1,1036 @@ + + + + + + +Index + + + + + + + + + + + +
A B C D E F G H L N P Q R S T X  + + +

A

+
+
addChild(String) - Method in class XML
+
+
Erzeuge neues Element nach der aktuellen Position und setze dieses als aktuelles Element
+
+
addColumn() - Method in class Table
+
+
Fügt eine neue Spalte am Ende der Tabelle an.
+
+
addColumn(String) - Method in class Table
+
+
Fügt eine neue Spalte am Ende der Tabelle an und benennt sie.
+
+
addColumn(String, String) - Method in class Table
+
+
Fügt eine neue Spalte am Ende der Tabelle an und benennt und typisiert sie.
+
+
addRow() - Method in class Table
+
+
Fügt eine neue Zeile an das Ende der Tabelle an.
+
+
+ + + +

B

+
+
back() - Method in class PictureViewer
+
+
Ruft das letzte abgespeicherte Bild aus der History wieder auf.
+
+
background(int) - Method in class Picture
+
+
Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird.
+
+
background(int, int, int) - Method in class Picture
+
+
Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird.
+
+
background(int) - Method in class PictureViewer
+
+
Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird.
+
+
background(int, int, int) - Method in class PictureViewer
+
+
Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird.
+
+
+ + + +

C

+
+
CENTER - Static variable in class Picture
+
 
+
clear() - Method in class Picture
+
+
Löscht den Inhalt des Bildes.
+
+
clear() - Method in class PictureViewer
+
+
Löscht den Inhalt des Bildes.
+
+
clearRows() - Method in class Table
+
+
Löscht alle Zeilen der Tabelle.
+
+
CORNER - Static variable in class Picture
+
 
+
CORNERS - Static variable in class Picture
+
 
+
+ + + +

D

+
+
delay(int) - Method in class Picture
+
+
Hilfsfunktion zum Verzögern der Ausgabe
+
+
+ + + +

E

+
+
ellipse(int, int, int, int) - Method in class Picture
+
+
Zeichnet eine Ellipse/Kreis auf das Bild.
+
+
ellipse(int, int, int, int) - Method in class PictureViewer
+
+
Zeichnet eine Ellipse/Kreis auf das Bild.
+
+
ellipseMode(int) - Method in class Picture
+
+
Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen.
+
+
ellipseMode(int) - Method in class PictureViewer
+
+
Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen.
+
+
+ + + +

F

+
+
fill(String) - Method in class Picture
+
+
Legt die Farbe fest, mit der Formen gefüllt werden.
+
+
fill(int) - Method in class Picture
+
+
Legt die Farbe fest, mit der Formen gefüllt werden.
+
+
fill(int, int, int) - Method in class Picture
+
+
Legt die Farbe fest, mit der Formen gefüllt werden.
+
+
fill(String) - Method in class PictureViewer
+
+
Legt die Farbe fest, mit der Formen gefüllt werden.
+
+
fill(int) - Method in class PictureViewer
+
+
Legt die Farbe fest, mit der Formen gefüllt werden.
+
+
fill(int, int, int) - Method in class PictureViewer
+
+
Legt die Farbe fest, mit der Formen gefüllt werden.
+
+
findRow(String, int) - Method in class Table
+
+
Sucht nach einem bestimmtem Wert in einer Zeile.
+
+
findRow(String, String) - Method in class Table
+
+
Sucht nach einem bestimmtem Wert in einer Zeile.
+
+
FIT - Static variable in class PictureViewer
+
 
+
+ + + +

G

+
+
getAttributeCount() - Method in class XML
+
+
liefert die Anzahl der Attribute eines Elements.
+
+
getChild(String) - Method in class XML
+
+
Liefert das erste Kind des Elements mit einem bestimmten Namen.
+
+
getChild(int) - Method in class XML
+
+
Liefert das i.
+
+
getChildren() - Method in class XML
+
+
Liefert alle Kinder des Elements als Array von XML-Objekten.
+
+
getChildren(String) - Method in class XML
+
+
Liefert bestimmte Kinder des Elements als Array von XML-Objekten.
+
+
getColumn(String) - Method in class TableRow
+
+
Liefert die Nummer einer Spalte
+
+
getColumnCount() - Method in class Table
+
+
Liefert die Anzahl der Spalten in der Tabelle
+
+
getColumnCount() - Method in class TableRow
+
+
Liefert die Anzahl der Spalten der Zeile.
+
+
getColumnTitle(int) - Method in class TableRow
+
+
Liefert den Titel einer Spalte
+
+
getContent() - Method in class XML
+
+
Fragt den Inhalt/Text des aktuellen Elements ab
+
+
getContent(String) - Method in class XML
+
+
Fragt den Inhalt/Text des aktuellen Elements ab + Hat das Element keinen Inhalt wird der defaultValue zurückgegeben.
+
+
getDouble(int, int) - Method in class Table
+
+
Liefert den Wert einer Zelle als Double-Zahl
+
+
getDouble(int, String) - Method in class Table
+
+
Liefert den Wert einer Zelle als Double-Zahl
+
+
getDouble(int) - Method in class TableRow
+
+
Liefert den Wert einer Zelle als Double-Zahl
+
+
getDouble(String) - Method in class TableRow
+
+
Liefert den Wert einer Zelle als Double-Zahl
+
+
getDouble(String) - Method in class XML
+
+
Fragt einen Attributwert des aktuellen Elements ab
+
+
getDouble(String, double) - Method in class XML
+
+
Fragt einen Attributwert des aktuellen Elements ab + Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben
+
+
getDoubleColumn(int) - Method in class Table
+
+
Liefert alle Werte einer Spalte als Double-Array.
+
+
getDoubleColumn(String) - Method in class Table
+
+
Liefert alle Werte einer Spalte als Double-Array.
+
+
getDoubleContent(double) - Method in class XML
+
+
Fragt den Inhalt des aktuellen Elements als Doublezahl ab + Hat das Element keinen Inhalt wird der defaultValue zurückgegeben.
+
+
getDoubleContent() - Method in class XML
+
+
Fragt den Inhalt des aktuellen Elements als Doublezahl ab
+
+
getDoubleRow(int) - Method in class Table
+
+
Liefert alle Werte einer Spalte als Double-Array.
+
+
getFloat(int, int) - Method in class Table
+
+
Liefert den Wert einer Zelle als Float-Zahl
+
+
getFloat(int, String) - Method in class Table
+
+
Liefert den Wert einer Zelle als Float-Zahl
+
+
getFloat(int) - Method in class TableRow
+
+
Liefert den Wert einer Zelle als Float-Zahl
+
+
getFloat(String) - Method in class TableRow
+
+
Liefert den Wert einer Zelle als Float-Zahl
+
+
getFloat(String) - Method in class XML
+
+
Fragt einen Attributwert des aktuellen Elements ab
+
+
getFloat(String, float) - Method in class XML
+
+
Fragt einen Attributwert des aktuellen Elements ab + Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben
+
+
getFloatColumn(int) - Method in class Table
+
+
Liefert alle Werte einer Spalte als Float-Array.
+
+
getFloatColumn(String) - Method in class Table
+
+
Liefert alle Werte einer Spalte als Float-Array.
+
+
getFloatContent(float) - Method in class XML
+
+
Fragt den Inhalt des aktuellen Elements als Floatzahl ab + Hat das Element keinen Inhalt wird der defaultValue zurückgegeben.
+
+
getFloatContent() - Method in class XML
+
+
Fragt den Inhalt des aktuellen Elements als Floatzahl ab
+
+
getFloatRow(int) - Method in class Table
+
+
Liefert alle Werte einer Zeile als Float-Array.
+
+
getHeight() - Method in class Picture
+
+
Liefert die Höhe des Bildes zurück.
+
+
getImage() - Method in class Picture
+
+
Direktes Abfragen des Bildes (für interne Zwecke)
+
+
getImageHeight() - Method in class PictureViewer
+
+
Liefert die Höhe des Bildes zurück.
+
+
getImageWidth() - Method in class PictureViewer
+
+
Liefert die Breite des Bildes zurück.
+
+
getInt(int, int) - Method in class Table
+
+
Liefert den Wert einer Zelle als Integer-Zahl
+
+
getInt(int, String) - Method in class Table
+
+
Liefert den Wert einer Zelle als Integer-Zahl
+
+
getInt(int) - Method in class TableRow
+
+
Liefert den Wert einer Zelle als Int-Zahl
+
+
getInt(String) - Method in class TableRow
+
+
Liefert den Wert einer Zelle als Int-Zahl
+
+
getInt(String) - Method in class XML
+
+
Fragt einen Attributwert des aktuellen Elements ab
+
+
getInt(String, int) - Method in class XML
+
+
Fragt einen Attributwert des aktuellen Elements ab + Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben
+
+
getIntColumn(int) - Method in class Table
+
+
Liefert alle Werte einer Spalte als Integer-Array.
+
+
getIntColumn(String) - Method in class Table
+
+
Liefert alle Werte einer Spalte als Integer-Array.
+
+
getIntContent(int) - Method in class XML
+
+
Fragt den Inhalt des aktuellen Elements als Integerzahl ab + Hat das Element keinen Inhalt wird der defaultValue zurückgegeben.
+
+
getIntContent() - Method in class XML
+
+
Fragt den Inhalt des aktuellen Elements als Integerzahl ab
+
+
getIntRow(int) - Method in class Table
+
+
Liefert alle Werte einer Zeile als Integer-Array.
+
+
getName() - Method in class XML
+
+
Frage den Namen des aktuellen Elements ab
+
+
getParent() - Method in class XML
+
+
liefert ein XML-Objekt, das auf den Vaterknoten des aktuellen Elements zeigt.
+
+
getPixelArray() - Method in class Picture
+
+
Liefert das Bild als zweidimensionales Pixel-Array.
+
+
getPixelArray() - Method in class PictureViewer
+
+
Liefert das Bild als zweidimensionales Pixel-Array.
+
+
getRow(int) - Method in class Table
+
+
Liefert eine Zeile der Tabelle
+
+
getRowCount() - Method in class Table
+
+
Liefert die Anzahl der Zeilen in der Tabelle
+
+
getString(int, int) - Method in class Table
+
+
Liefert den Wert einer Zelle als String
+
+
getString(int, String) - Method in class Table
+
+
Liefert den Wert einer Zelle als String
+
+
getString(int) - Method in class TableRow
+
+
Liefert den Wert einer Zelle als String
+
+
getString(String) - Method in class TableRow
+
+
Liefert den Wert einer Zelle als String
+
+
getString(String) - Method in class XML
+
+
Fragt einen Attributwert des aktuellen Elements ab
+
+
getString(String, String) - Method in class XML
+
+
Fragt einen Attributwert des aktuellen Elements ab + Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben
+
+
getStringColumn(int) - Method in class Table
+
+
Liefert alle Werte einer Spalte als String-Array.
+
+
getStringColumn(String) - Method in class Table
+
+
Liefert alle Werte einer Spalte als String-Array.
+
+
getStringRow(int) - Method in class Table
+
+
Liefert alle Werte einer Spalte als String-Array.
+
+
getWidth() - Method in class Picture
+
+
Liefert die Breite des Bildes zurück.
+
+
+ + + +

H

+
+
hasAttribute() - Method in class XML
+
+
liefert zurück, ob das aktuelle Element Attribute hat .
+
+
hasChildren() - Method in class XML
+
+
Überprüft, ob das Element irgendwelche Kinder hat oder nicht, und gibt das Ergebnis als boolean zurück.
+
+
+ + + +

L

+
+
line(int, int, int, int) - Method in class Picture
+
+
Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm.
+
+
line(int, int, int, int) - Method in class PictureViewer
+
+
Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm.
+
+
listAttributes() - Method in class XML
+
+
Ruft alle Attribute des angegebenen Elements ab und gibt sie als Array von Strings zurück.
+
+
listChildren() - Method in class XML
+
+
Ermittelt die Namen aller Kinder des Elements und gibt die Namen als ein Array von Strings zurück.
+
+
load(String) - Method in class Picture
+
+
Lädt ein Bild aus dem Dateisystem.
+
+
load(String) - Method in class PictureViewer
+
+
Lädt ein Bild aus dem Dateisystem.
+
+
loadCSV(String) - Method in class Table
+
+
Liest den Inhalt einer CSV-Datei ohne Kopfzeile (Separator = ';', Kennung für Text = '"').
+
+
loadCSV(String, String) - Method in class Table
+
+
Liest den Inhalt einer CSV-Datei (Separator = ';', Kennung für Text = '"').
+
+
loadCSV(String, String, char, char) - Method in class Table
+
+
Liest den Inhalt einer CSV-Datei.
+
+
loadXML(String) - Method in class XML
+
+
Öffnet das durch den Dateinamen gegebene Dokument
+
+
+ + + +

N

+
+
noFill() - Method in class Picture
+
+
Legt fest, dass die Formen nicht gefüllt werden sollen.
+
+
noFill() - Method in class PictureViewer
+
+
Legt fest, dass die Formen nicht gefüllt werden sollen.
+
+
NORMAL - Static variable in class PictureViewer
+
 
+
noStroke() - Method in class Picture
+
+
Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll.
+
+
noStroke() - Method in class PictureViewer
+
+
Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll.
+
+
+ + + +

P

+
+
Picture - Class in <Unnamed>
+
+
Bildklasse für die Simulation von Processing-Befehlen + + Diese Klasse stellt ein BufferedImage bereit, in das mit Processing-Befehlen gezeichnet + werden kann.
+
+
Picture() - Constructor for class Picture
+
+
Erzeugt ein Bild mit Standardgröße 500x400
+
+
Picture(int, int) - Constructor for class Picture
+
+
Erzeugt ein Bild der angegeben Größe
+
+
Picture(String) - Constructor for class Picture
+
+
Erzeugt ein Bild aus einer Datei
+
+
Picture(int, int, String) - Constructor for class Picture
+
+
Erzeugt ein Bild der angegebenen Größe mit festgelegtem Hintergrund
+
+
PictureViewer - Class in <Unnamed>
+
 
+
PictureViewer() - Constructor for class PictureViewer
+
+
Erzeugt ein ScrollPanel mit integriertem Bild der Größe 1000x1000
+
+
PictureViewer(int, int) - Constructor for class PictureViewer
+
+
Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe
+
+
PictureViewer(int, int, String) - Constructor for class PictureViewer
+
+
Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe
+
+
PictureViewer(String) - Constructor for class PictureViewer
+
+
Erzeugt ein ScrollPanel mit integriertem Bild aus einer Bilddatei
+
+
PictureViewer(Picture) - Constructor for class PictureViewer
+
+
Erzeugt ein ScrollPanel und zeigt das Bild-Objekt an
+
+
point(int, int) - Method in class Picture
+
+
Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels.
+
+
point(int, int) - Method in class PictureViewer
+
+
Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels.
+
+
polygon(int[], int[]) - Method in class Picture
+
+
Zeichnet ein Polygon auf das Bild.
+
+
polygon(int[], int[]) - Method in class PictureViewer
+
+
Zeichnet ein Polygon auf das Bild.
+
+
pushImage() - Method in class PictureViewer
+
+
Speichert das übergebene Bild in der History.
+
+
+ + + +

Q

+
+
quad(int, int, int, int, int, int, int, int) - Method in class Picture
+
+
Zeichnet ein Viereck auf das Bild.
+
+
quad(int, int, int, int, int, int, int, int) - Method in class PictureViewer
+
+
Zeichnet ein Viereck auf das Bild.
+
+
+ + + +

R

+
+
RADIUS - Static variable in class Picture
+
 
+
rect(int, int, int, int) - Method in class Picture
+
+
Zeichnet ein Rechteck auf das Bild.
+
+
rect(int, int, int, int) - Method in class PictureViewer
+
+
Zeichnet ein Rechteck auf das Bild.
+
+
rectMode(int) - Method in class Picture
+
+
Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken.
+
+
rectMode(int) - Method in class PictureViewer
+
+
Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken.
+
+
refresh() - Method in class Picture
+
+
Auch die anzeigenden Klasse wird zum Neuzeichnen aufgefordert.
+
+
removeChild(XML) - Method in class XML
+
+
löscht ein Kind des aktuellen Knotens.
+
+
removeColumn(int) - Method in class Table
+
+
Löscht eine Spalte.
+
+
removeColumn(String) - Method in class Table
+
+
Löscht eine Spalte
+
+
removeRow(int) - Method in class Table
+
+
Löscht eine Zeile
+
+
repaint() - Method in class PictureViewer
+
+
Setzt das angezeigt Bild neu und beachtet dabei den Zoomfaktor.
+
+
rows() - Method in class Table
+
+
Liefert die ganze Tabelle als Array von TableRow-Objekten
+
+
+ + + +

S

+
+
save(String) - Method in class Picture
+
+
Speichert ein Bild.
+
+
save(String) - Method in class PictureViewer
+
+
Speichert ein Bild.
+
+
saveCSV(String) - Method in class Table
+
+
Speichert das aktuelle Dokument als CSV-Datei ohne Kopfzeile (Separator = ';', Kennung für Text = '"').
+
+
saveCSV(String, String) - Method in class Table
+
+
Speichert das aktuelle Dokument als CSV-Datei (Separator = ';', Kennung für Text = '"').
+
+
saveCSV(String, String, char, char) - Method in class Table
+
+
Speichert das aktuelle Dokument als CSV-Datei.
+
+
saveXML(String) - Method in class Table
+
+
Speichert die Tabelle als XML-Dokument.
+
+
saveXML(String) - Method in class XML
+
+
Speichert den XML-Baum im angegebenen Dateinamen
+
+
setAutoRefresh(boolean) - Method in class Picture
+
+
Legt fest, ob nach jedem Zeichenbefehl automatisch das Bild auch in + der Oberfläche aktualisiert wird.
+
+
setContent(String) - Method in class XML
+
+
Setzt den Inhalt/Text des aktuellen Elements
+
+
setDouble(int, int, double) - Method in class Table
+
+
Setzt den Wert einer Zelle als Double-Zahl
+
+
setDouble(int, String, double) - Method in class Table
+
+
Setzt den Wert einer Zelle als Double-Zahl
+
+
setDouble(int, double) - Method in class TableRow
+
+
Setzt den Wert einer Zelle als Double-Zahl
+
+
setDouble(String, double) - Method in class TableRow
+
+
Setzt den Wert einer Zelle als Double-Zahl
+
+
setDouble(String, double) - Method in class XML
+
+
Setzt einen Attributwert des aktuellen Elements
+
+
setDoubleContent(double) - Method in class XML
+
+
Setzt den Inhalt des aktuellen Elements
+
+
setFloat(int, int, float) - Method in class Table
+
+
Setzt den Wert einer Zelle als Float-Zahl
+
+
setFloat(int, String, float) - Method in class Table
+
+
Setzt den Wert einer Zelle als Float-Zahl
+
+
setFloat(int, float) - Method in class TableRow
+
+
Setzt den Wert einer Zelle als Float-Zahl
+
+
setFloat(String, float) - Method in class TableRow
+
+
Setzt den Wert einer Zelle als Float-Zahl
+
+
setFloat(String, float) - Method in class XML
+
+
Setzt einen Attributwert des aktuellen Elements
+
+
setFloatContent(float) - Method in class XML
+
+
Setzt den Inhalt des aktuellen Elements
+
+
setImage(BufferedImage) - Method in class Picture
+
+
Direktes Setzen des Bildes (für interne Zwecke)
+
+
setImage(Picture) - Method in class PictureViewer
+
+
Setzt das anzuzeigende Bild neu
+
+
setInt(int, int, int) - Method in class Table
+
+
Setzt den Wert einer Zelle als Integer-Zahl
+
+
setInt(int, String, int) - Method in class Table
+
+
Setzt den Wert einer Zelle als Integer-Zahl
+
+
setInt(int, int) - Method in class TableRow
+
+
Setzt den Wert einer Zelle als Int-Zahl
+
+
setInt(String, int) - Method in class TableRow
+
+
Setzt den Wert einer Zelle als Int-Zahl
+
+
setInt(String, int) - Method in class XML
+
+
Setzt einen Attributwert des aktuellen Elements
+
+
setIntContent(int) - Method in class XML
+
+
Setzt den Inhalt des aktuellen Elements
+
+
setName(String) - Method in class XML
+
+
Setze den Namen des aktuellen Elements.
+
+
setObserver(PictureViewer) - Method in class Picture
+
+
Legt fest, wer das Bild anzeigt.
+
+
setPixelArray(Color[][]) - Method in class Picture
+
+
Setzt das Bild neu auf Basis des Pixel-Arrays.
+
+
setPixelArray(Color[][]) - Method in class PictureViewer
+
+
Setzt das Bild neu auf Basis des Pixel-Arrays.
+
+
setString(int, int, String) - Method in class Table
+
+
Setzt den Wert einer Zelle als String
+
+
setString(int, String, String) - Method in class Table
+
+
Setzt den Wert einer Zelle als String
+
+
setString(int, String) - Method in class TableRow
+
+
Setzt den Wert einer Zelle als String
+
+
setString(String, String) - Method in class TableRow
+
+
Setzt den Wert einer Zelle als String
+
+
setString(String, String) - Method in class XML
+
+
Setzt einen Attributwert des aktuellen Elements
+
+
setZoom(double) - Method in class PictureViewer
+
+
Setzt den Zoom-Faktor für das Bild.
+
+
size(int, int) - Method in class Picture
+
+
Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten.
+
+
size(int, int) - Method in class PictureViewer
+
+
Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten.
+
+
stroke(String) - Method in class Picture
+
+
Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden.
+
+
stroke(int) - Method in class Picture
+
+
Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden.
+
+
stroke(int, int, int) - Method in class Picture
+
+
Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden.
+
+
stroke(String) - Method in class PictureViewer
+
+
Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden.
+
+
stroke(int) - Method in class PictureViewer
+
+
Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden.
+
+
stroke(int, int, int) - Method in class PictureViewer
+
+
Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden.
+
+
strokeWeight(double) - Method in class Picture
+
+
Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest.
+
+
strokeWeight(double) - Method in class PictureViewer
+
+
Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest.
+
+
+ + + +

T

+
+
Table - Class in <Unnamed>
+
 
+
Table() - Constructor for class Table
+
+
Erzeugt leeres Tabellen-Dokument.
+
+
Table(String, String, char, char) - Constructor for class Table
+
+
Erzeugt Tabellen-Dokument aus einer CSV-Datei.
+
+
Table(String, String) - Constructor for class Table
+
+
Erzeugt Tabellen-Dokument aus einer CSV-Datei.
+
+
Table(String) - Constructor for class Table
+
+
Erzeugt Tabellen-Dokument aus einer CSV-Datei.
+
+
TableRow - Class in <Unnamed>
+
 
+
TableRow(Document, Element) - Constructor for class TableRow
+
+
Erzeugt ein TableRow-Objekt.
+
+
text(String, int, int) - Method in class Picture
+
+
Gibt einen Text an den gegebenen Koordinaten aus + Zur Ausgabe des Textes wird der ausgewählte Font verwendet.
+
+
text(String, int, int) - Method in class PictureViewer
+
+
Gibt einen Text an den gegebenen Koordinaten aus + Zur Ausgabe des Textes wird der ausgewählte Font verwendet.
+
+
textFont(Font) - Method in class Picture
+
+
Legt die Schriftart für Textausgaben fest.
+
+
textFont(Font) - Method in class PictureViewer
+
+
Legt die Schriftart für Textausgaben fest.
+
+
triangle(int, int, int, int, int, int) - Method in class Picture
+
+
Zeichnet ein Dreieck auf das Bild.
+
+
triangle(int, int, int, int, int, int) - Method in class PictureViewer
+
+
Zeichnet ein Dreieck auf das Bild.
+
+
trim() - Method in class Table
+
+
Kürzt alle Einträge der Tabelle um unnötige Leerzeichen am Anfang oder Ende
+
+
+ + + +

X

+
+
XML - Class in <Unnamed>
+
 
+
XML() - Constructor for class XML
+
+
Erzeugt ein leeres XMLDokument
+
+
XML(String) - Constructor for class XML
+
+
Erzeugt ein XML-Dokument aus einer Datei
+
+
+A B C D E F G H L N P Q R S T X 
+ + + + + + diff --git a/01_hintergrund/02_dokumentation_java_klassen/index.html b/01_hintergrund/02_dokumentation_java_klassen/index.html new file mode 100644 index 0000000..4b7ec1e --- /dev/null +++ b/01_hintergrund/02_dokumentation_java_klassen/index.html @@ -0,0 +1,73 @@ + + + + + + +Generated Documentation (Untitled) + + + + + + +<noscript> +<div>JavaScript is disabled on your browser.</div> +</noscript> +<h2>Frame Alert</h2> +<p>This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client. Link to <a href="Picture.html">Non-frame version</a>.</p> + + + diff --git a/01_hintergrund/02_dokumentation_java_klassen/overview-tree.html b/01_hintergrund/02_dokumentation_java_klassen/overview-tree.html new file mode 100644 index 0000000..ac50bb0 --- /dev/null +++ b/01_hintergrund/02_dokumentation_java_klassen/overview-tree.html @@ -0,0 +1,150 @@ + + + + + + +Class Hierarchy + + + + + + + + + + + +
+

Hierarchy For All Packages

+
+
+

Class Hierarchy

+
    +
  • java.lang.Object +
      +
    • java.awt.Component (implements java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable) +
        +
      • java.awt.Container +
          +
        • javax.swing.JComponent (implements java.io.Serializable) +
            +
          • javax.swing.JScrollPane (implements javax.accessibility.Accessible, javax.swing.ScrollPaneConstants) + +
          • +
          +
        • +
        +
      • +
      +
    • +
    • Picture
    • +
    • Table
    • +
    • TableRow
    • +
    • XML
    • +
    +
  • +
+
+ + + + + + diff --git a/01_hintergrund/02_dokumentation_java_klassen/package-frame.html b/01_hintergrund/02_dokumentation_java_klassen/package-frame.html new file mode 100644 index 0000000..2a7dfab --- /dev/null +++ b/01_hintergrund/02_dokumentation_java_klassen/package-frame.html @@ -0,0 +1,25 @@ + + + + + + +<Unnamed> + + + + + +

<Unnamed>

+
+

Classes

+ +
+ + diff --git a/01_hintergrund/02_dokumentation_java_klassen/package-list b/01_hintergrund/02_dokumentation_java_klassen/package-list new file mode 100644 index 0000000..d3f5a12 --- /dev/null +++ b/01_hintergrund/02_dokumentation_java_klassen/package-list @@ -0,0 +1 @@ + diff --git a/01_hintergrund/02_dokumentation_java_klassen/package-summary.html b/01_hintergrund/02_dokumentation_java_klassen/package-summary.html new file mode 100644 index 0000000..cbd389e --- /dev/null +++ b/01_hintergrund/02_dokumentation_java_klassen/package-summary.html @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + +
+

Package <Unnamed>

+
+
+
    +
  • + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Class Summary 
    ClassDescription
    Picture +
    Bildklasse für die Simulation von Processing-Befehlen + + Diese Klasse stellt ein BufferedImage bereit, in das mit Processing-Befehlen gezeichnet + werden kann.
    +
    PictureViewer 
    Table 
    TableRow 
    XML 
    +
  • +
+
+ + + + + + diff --git a/01_hintergrund/02_dokumentation_java_klassen/package-tree.html b/01_hintergrund/02_dokumentation_java_klassen/package-tree.html new file mode 100644 index 0000000..4fe1ba6 --- /dev/null +++ b/01_hintergrund/02_dokumentation_java_klassen/package-tree.html @@ -0,0 +1,150 @@ + + + + + + + Class Hierarchy + + + + + + + + + + + +
+

Hierarchy For Package <Unnamed>

+
+
+

Class Hierarchy

+
    +
  • java.lang.Object +
      +
    • java.awt.Component (implements java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable) +
        +
      • java.awt.Container +
          +
        • javax.swing.JComponent (implements java.io.Serializable) +
            +
          • javax.swing.JScrollPane (implements javax.accessibility.Accessible, javax.swing.ScrollPaneConstants) + +
          • +
          +
        • +
        +
      • +
      +
    • +
    • Picture
    • +
    • Table
    • +
    • TableRow
    • +
    • XML
    • +
    +
  • +
+
+ + + + + + diff --git a/01_hintergrund/02_dokumentation_java_klassen/script.js b/01_hintergrund/02_dokumentation_java_klassen/script.js new file mode 100644 index 0000000..c3a1cae --- /dev/null +++ b/01_hintergrund/02_dokumentation_java_klassen/script.js @@ -0,0 +1,30 @@ +function show(type) +{ + count = 0; + for (var key in methods) { + var row = document.getElementById(key); + if ((methods[key] & type) != 0) { + row.style.display = ''; + row.className = (count++ % 2) ? rowColor : altColor; + } + else + row.style.display = 'none'; + } + updateTabs(type); +} + +function updateTabs(type) +{ + for (var value in tabs) { + var sNode = document.getElementById(tabs[value][0]); + var spanNode = sNode.firstChild; + if (value == type) { + sNode.className = activeTableTab; + spanNode.innerHTML = tabs[value][1]; + } + else { + sNode.className = tableTab; + spanNode.innerHTML = "" + tabs[value][1] + ""; + } + } +} diff --git a/01_hintergrund/02_dokumentation_java_klassen/serialized-form.html b/01_hintergrund/02_dokumentation_java_klassen/serialized-form.html new file mode 100644 index 0000000..b1796ed --- /dev/null +++ b/01_hintergrund/02_dokumentation_java_klassen/serialized-form.html @@ -0,0 +1,161 @@ + + + + + + +Serialized Form + + + + + + + + + + + +
+

Serialized Form

+
+
+
    +
  • +

    Package <Unnamed>

    +
      +
    • + + +

      Class PictureViewer extends javax.swing.JScrollPane implements Serializable

      +
        +
      • +

        Serialized Fields

        +
          +
        • +

          picture

          +
          Picture picture
          +
        • +
        • +

          history

          +
          java.util.Vector<E> history
          +
        • +
        • +

          scrollImageIcon

          +
          javax.swing.ImageIcon scrollImageIcon
          +
        • +
        • +

          imageLabel

          +
          javax.swing.JLabel imageLabel
          +
        • +
        • +

          zoomFactor

          +
          double zoomFactor
          +
        • +
        +
      • +
      +
    • +
    +
  • +
+
+ + + + + + diff --git a/01_hintergrund/02_dokumentation_java_klassen/stylesheet.css b/01_hintergrund/02_dokumentation_java_klassen/stylesheet.css new file mode 100644 index 0000000..b8dad08 --- /dev/null +++ b/01_hintergrund/02_dokumentation_java_klassen/stylesheet.css @@ -0,0 +1,574 @@ +/* Javadoc style sheet */ +/* +Overall document style +*/ + +@import url('resources/fonts/dejavu.css'); + +body { + background-color:#ffffff; + color:#353833; + font-family:'DejaVu Sans', Arial, Helvetica, sans-serif; + font-size:14px; + margin:0; +} +a:link, a:visited { + text-decoration:none; + color:#4A6782; +} +a:hover, a:focus { + text-decoration:none; + color:#bb7a2a; +} +a:active { + text-decoration:none; + color:#4A6782; +} +a[name] { + color:#353833; +} +a[name]:hover { + text-decoration:none; + color:#353833; +} +pre { + font-family:'DejaVu Sans Mono', monospace; + font-size:14px; +} +h1 { + font-size:20px; +} +h2 { + font-size:18px; +} +h3 { + font-size:16px; + font-style:italic; +} +h4 { + font-size:13px; +} +h5 { + font-size:12px; +} +h6 { + font-size:11px; +} +ul { + list-style-type:disc; +} +code, tt { + font-family:'DejaVu Sans Mono', monospace; + font-size:14px; + padding-top:4px; + margin-top:8px; + line-height:1.4em; +} +dt code { + font-family:'DejaVu Sans Mono', monospace; + font-size:14px; + padding-top:4px; +} +table tr td dt code { + font-family:'DejaVu Sans Mono', monospace; + font-size:14px; + vertical-align:top; + padding-top:4px; +} +sup { + font-size:8px; +} +/* +Document title and Copyright styles +*/ +.clear { + clear:both; + height:0px; + overflow:hidden; +} +.aboutLanguage { + float:right; + padding:0px 21px; + font-size:11px; + z-index:200; + margin-top:-9px; +} +.legalCopy { + margin-left:.5em; +} +.bar a, .bar a:link, .bar a:visited, .bar a:active { + color:#FFFFFF; + text-decoration:none; +} +.bar a:hover, .bar a:focus { + color:#bb7a2a; +} +.tab { + background-color:#0066FF; + color:#ffffff; + padding:8px; + width:5em; + font-weight:bold; +} +/* +Navigation bar styles +*/ +.bar { + background-color:#4D7A97; + color:#FFFFFF; + padding:.8em .5em .4em .8em; + height:auto;/*height:1.8em;*/ + font-size:11px; + margin:0; +} +.topNav { + background-color:#4D7A97; + color:#FFFFFF; + float:left; + padding:0; + width:100%; + clear:right; + height:2.8em; + padding-top:10px; + overflow:hidden; + font-size:12px; +} +.bottomNav { + margin-top:10px; + background-color:#4D7A97; + color:#FFFFFF; + float:left; + padding:0; + width:100%; + clear:right; + height:2.8em; + padding-top:10px; + overflow:hidden; + font-size:12px; +} +.subNav { + background-color:#dee3e9; + float:left; + width:100%; + overflow:hidden; + font-size:12px; +} +.subNav div { + clear:left; + float:left; + padding:0 0 5px 6px; + text-transform:uppercase; +} +ul.navList, ul.subNavList { + float:left; + margin:0 25px 0 0; + padding:0; +} +ul.navList li{ + list-style:none; + float:left; + padding: 5px 6px; + text-transform:uppercase; +} +ul.subNavList li{ + list-style:none; + float:left; +} +.topNav a:link, .topNav a:active, .topNav a:visited, .bottomNav a:link, .bottomNav a:active, .bottomNav a:visited { + color:#FFFFFF; + text-decoration:none; + text-transform:uppercase; +} +.topNav a:hover, .bottomNav a:hover { + text-decoration:none; + color:#bb7a2a; + text-transform:uppercase; +} +.navBarCell1Rev { + background-color:#F8981D; + color:#253441; + margin: auto 5px; +} +.skipNav { + position:absolute; + top:auto; + left:-9999px; + overflow:hidden; +} +/* +Page header and footer styles +*/ +.header, .footer { + clear:both; + margin:0 20px; + padding:5px 0 0 0; +} +.indexHeader { + margin:10px; + position:relative; +} +.indexHeader span{ + margin-right:15px; +} +.indexHeader h1 { + font-size:13px; +} +.title { + color:#2c4557; + margin:10px 0; +} +.subTitle { + margin:5px 0 0 0; +} +.header ul { + margin:0 0 15px 0; + padding:0; +} +.footer ul { + margin:20px 0 5px 0; +} +.header ul li, .footer ul li { + list-style:none; + font-size:13px; +} +/* +Heading styles +*/ +div.details ul.blockList ul.blockList ul.blockList li.blockList h4, div.details ul.blockList ul.blockList ul.blockListLast li.blockList h4 { + background-color:#dee3e9; + border:1px solid #d0d9e0; + margin:0 0 6px -8px; + padding:7px 5px; +} +ul.blockList ul.blockList ul.blockList li.blockList h3 { + background-color:#dee3e9; + border:1px solid #d0d9e0; + margin:0 0 6px -8px; + padding:7px 5px; +} +ul.blockList ul.blockList li.blockList h3 { + padding:0; + margin:15px 0; +} +ul.blockList li.blockList h2 { + padding:0px 0 20px 0; +} +/* +Page layout container styles +*/ +.contentContainer, .sourceContainer, .classUseContainer, .serializedFormContainer, .constantValuesContainer { + clear:both; + padding:10px 20px; + position:relative; +} +.indexContainer { + margin:10px; + position:relative; + font-size:12px; +} +.indexContainer h2 { + font-size:13px; + padding:0 0 3px 0; +} +.indexContainer ul { + margin:0; + padding:0; +} +.indexContainer ul li { + list-style:none; + padding-top:2px; +} +.contentContainer .description dl dt, .contentContainer .details dl dt, .serializedFormContainer dl dt { + font-size:12px; + font-weight:bold; + margin:10px 0 0 0; + color:#4E4E4E; +} +.contentContainer .description dl dd, .contentContainer .details dl dd, .serializedFormContainer dl dd { + margin:5px 0 10px 0px; + font-size:14px; + font-family:'DejaVu Sans Mono',monospace; +} +.serializedFormContainer dl.nameValue dt { + margin-left:1px; + font-size:1.1em; + display:inline; + font-weight:bold; +} +.serializedFormContainer dl.nameValue dd { + margin:0 0 0 1px; + font-size:1.1em; + display:inline; +} +/* +List styles +*/ +ul.horizontal li { + display:inline; + font-size:0.9em; +} +ul.inheritance { + margin:0; + padding:0; +} +ul.inheritance li { + display:inline; + list-style:none; +} +ul.inheritance li ul.inheritance { + margin-left:15px; + padding-left:15px; + padding-top:1px; +} +ul.blockList, ul.blockListLast { + margin:10px 0 10px 0; + padding:0; +} +ul.blockList li.blockList, ul.blockListLast li.blockList { + list-style:none; + margin-bottom:15px; + line-height:1.4; +} +ul.blockList ul.blockList li.blockList, ul.blockList ul.blockListLast li.blockList { + padding:0px 20px 5px 10px; + border:1px solid #ededed; + background-color:#f8f8f8; +} +ul.blockList ul.blockList ul.blockList li.blockList, ul.blockList ul.blockList ul.blockListLast li.blockList { + padding:0 0 5px 8px; + background-color:#ffffff; + border:none; +} +ul.blockList ul.blockList ul.blockList ul.blockList li.blockList { + margin-left:0; + padding-left:0; + padding-bottom:15px; + border:none; +} +ul.blockList ul.blockList ul.blockList ul.blockList li.blockListLast { + list-style:none; + border-bottom:none; + padding-bottom:0; +} +table tr td dl, table tr td dl dt, table tr td dl dd { + margin-top:0; + margin-bottom:1px; +} +/* +Table styles +*/ +.overviewSummary, .memberSummary, .typeSummary, .useSummary, .constantsSummary, .deprecatedSummary { + width:100%; + border-left:1px solid #EEE; + border-right:1px solid #EEE; + border-bottom:1px solid #EEE; +} +.overviewSummary, .memberSummary { + padding:0px; +} +.overviewSummary caption, .memberSummary caption, .typeSummary caption, +.useSummary caption, .constantsSummary caption, .deprecatedSummary caption { + position:relative; + text-align:left; + background-repeat:no-repeat; + color:#253441; + font-weight:bold; + clear:none; + overflow:hidden; + padding:0px; + padding-top:10px; + padding-left:1px; + margin:0px; + white-space:pre; +} +.overviewSummary caption a:link, .memberSummary caption a:link, .typeSummary caption a:link, +.useSummary caption a:link, .constantsSummary caption a:link, .deprecatedSummary caption a:link, +.overviewSummary caption a:hover, .memberSummary caption a:hover, .typeSummary caption a:hover, +.useSummary caption a:hover, .constantsSummary caption a:hover, .deprecatedSummary caption a:hover, +.overviewSummary caption a:active, .memberSummary caption a:active, .typeSummary caption a:active, +.useSummary caption a:active, .constantsSummary caption a:active, .deprecatedSummary caption a:active, +.overviewSummary caption a:visited, .memberSummary caption a:visited, .typeSummary caption a:visited, +.useSummary caption a:visited, .constantsSummary caption a:visited, .deprecatedSummary caption a:visited { + color:#FFFFFF; +} +.overviewSummary caption span, .memberSummary caption span, .typeSummary caption span, +.useSummary caption span, .constantsSummary caption span, .deprecatedSummary caption span { + white-space:nowrap; + padding-top:5px; + padding-left:12px; + padding-right:12px; + padding-bottom:7px; + display:inline-block; + float:left; + background-color:#F8981D; + border: none; + height:16px; +} +.memberSummary caption span.activeTableTab span { + white-space:nowrap; + padding-top:5px; + padding-left:12px; + padding-right:12px; + margin-right:3px; + display:inline-block; + float:left; + background-color:#F8981D; + height:16px; +} +.memberSummary caption span.tableTab span { + white-space:nowrap; + padding-top:5px; + padding-left:12px; + padding-right:12px; + margin-right:3px; + display:inline-block; + float:left; + background-color:#4D7A97; + height:16px; +} +.memberSummary caption span.tableTab, .memberSummary caption span.activeTableTab { + padding-top:0px; + padding-left:0px; + padding-right:0px; + background-image:none; + float:none; + display:inline; +} +.overviewSummary .tabEnd, .memberSummary .tabEnd, .typeSummary .tabEnd, +.useSummary .tabEnd, .constantsSummary .tabEnd, .deprecatedSummary .tabEnd { + display:none; + width:5px; + position:relative; + float:left; + background-color:#F8981D; +} +.memberSummary .activeTableTab .tabEnd { + display:none; + width:5px; + margin-right:3px; + position:relative; + float:left; + background-color:#F8981D; +} +.memberSummary .tableTab .tabEnd { + display:none; + width:5px; + margin-right:3px; + position:relative; + background-color:#4D7A97; + float:left; + +} +.overviewSummary td, .memberSummary td, .typeSummary td, +.useSummary td, .constantsSummary td, .deprecatedSummary td { + text-align:left; + padding:0px 0px 12px 10px; +} +th.colOne, th.colFirst, th.colLast, .useSummary th, .constantsSummary th, +td.colOne, td.colFirst, td.colLast, .useSummary td, .constantsSummary td{ + vertical-align:top; + padding-right:0px; + padding-top:8px; + padding-bottom:3px; +} +th.colFirst, th.colLast, th.colOne, .constantsSummary th { + background:#dee3e9; + text-align:left; + padding:8px 3px 3px 7px; +} +td.colFirst, th.colFirst { + white-space:nowrap; + font-size:13px; +} +td.colLast, th.colLast { + font-size:13px; +} +td.colOne, th.colOne { + font-size:13px; +} +.overviewSummary td.colFirst, .overviewSummary th.colFirst, +.useSummary td.colFirst, .useSummary th.colFirst, +.overviewSummary td.colOne, .overviewSummary th.colOne, +.memberSummary td.colFirst, .memberSummary th.colFirst, +.memberSummary td.colOne, .memberSummary th.colOne, +.typeSummary td.colFirst{ + width:25%; + vertical-align:top; +} +td.colOne a:link, td.colOne a:active, td.colOne a:visited, td.colOne a:hover, td.colFirst a:link, td.colFirst a:active, td.colFirst a:visited, td.colFirst a:hover, td.colLast a:link, td.colLast a:active, td.colLast a:visited, td.colLast a:hover, .constantValuesContainer td a:link, .constantValuesContainer td a:active, .constantValuesContainer td a:visited, .constantValuesContainer td a:hover { + font-weight:bold; +} +.tableSubHeadingColor { + background-color:#EEEEFF; +} +.altColor { + background-color:#FFFFFF; +} +.rowColor { + background-color:#EEEEEF; +} +/* +Content styles +*/ +.description pre { + margin-top:0; +} +.deprecatedContent { + margin:0; + padding:10px 0; +} +.docSummary { + padding:0; +} + +ul.blockList ul.blockList ul.blockList li.blockList h3 { + font-style:normal; +} + +div.block { + font-size:14px; + font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif; +} + +td.colLast div { + padding-top:0px; +} + + +td.colLast a { + padding-bottom:3px; +} +/* +Formatting effect styles +*/ +.sourceLineNo { + color:green; + padding:0 30px 0 0; +} +h1.hidden { + visibility:hidden; + overflow:hidden; + font-size:10px; +} +.block { + display:block; + margin:3px 10px 2px 0px; + color:#474747; +} +.deprecatedLabel, .descfrmTypeLabel, .memberNameLabel, .memberNameLink, +.overrideSpecifyLabel, .packageHierarchyLabel, .paramLabel, .returnLabel, +.seeLabel, .simpleTagLabel, .throwsLabel, .typeNameLabel, .typeNameLink { + font-weight:bold; +} +.deprecationComment, .emphasizedPhrase, .interfaceName { + font-style:italic; +} + +div.block div.block span.deprecationComment, div.block div.block span.emphasizedPhrase, +div.block div.block span.interfaceName { + font-style:normal; +} + +div.contentContainer ul.blockList li.blockList h2{ + padding-bottom:0px; +} diff --git a/01_hintergrund/03_alg_vergleich_ai_java.odt b/01_hintergrund/03_alg_vergleich_ai_java.odt new file mode 100644 index 0000000..b8f0613 Binary files /dev/null and b/01_hintergrund/03_alg_vergleich_ai_java.odt differ diff --git a/01_hintergrund/03_alg_vergleich_ai_java.pdf b/01_hintergrund/03_alg_vergleich_ai_java.pdf new file mode 100644 index 0000000..ff90277 Binary files /dev/null and b/01_hintergrund/03_alg_vergleich_ai_java.pdf differ diff --git a/01_hintergrund/03_alg_vergleich_scratch_java.odt b/01_hintergrund/03_alg_vergleich_scratch_java.odt new file mode 100644 index 0000000..04e7d46 Binary files /dev/null and b/01_hintergrund/03_alg_vergleich_scratch_java.odt differ diff --git a/01_hintergrund/03_alg_vergleich_scratch_java.pdf b/01_hintergrund/03_alg_vergleich_scratch_java.pdf new file mode 100644 index 0000000..5ac525d Binary files /dev/null and b/01_hintergrund/03_alg_vergleich_scratch_java.pdf differ diff --git a/01_hintergrund/04_alg_processing_android.odt b/01_hintergrund/04_alg_processing_android.odt new file mode 100644 index 0000000..4bc0f41 Binary files /dev/null and b/01_hintergrund/04_alg_processing_android.odt differ diff --git a/01_hintergrund/05_alg_processing_debugging.odt b/01_hintergrund/05_alg_processing_debugging.odt new file mode 100644 index 0000000..ed70125 Binary files /dev/null and b/01_hintergrund/05_alg_processing_debugging.odt differ diff --git a/01_hintergrund/05_debugging_processing_beispiele/sketch_05_alg_processing_debug_01.pde b/01_hintergrund/05_debugging_processing_beispiele/sketch_05_alg_processing_debug_01.pde new file mode 100644 index 0000000..235c251 --- /dev/null +++ b/01_hintergrund/05_debugging_processing_beispiele/sketch_05_alg_processing_debug_01.pde @@ -0,0 +1,21 @@ +int a = 10; +String name = "Hans"; +float[] zufaelle; + +void setup(){ + size(600,400); + setZufallsArray(10); + veraenderung(); //<>// +} + +void setZufallsArray(int anzahl){ + zufaelle = new float[anzahl]; + for (int i=0; i// +} diff --git a/02_kopiervorlagen/01_alg_wdh_begriffe.odt b/02_kopiervorlagen/01_alg_wdh_begriffe.odt new file mode 100644 index 0000000..da45b69 Binary files /dev/null and b/02_kopiervorlagen/01_alg_wdh_begriffe.odt differ diff --git a/02_kopiervorlagen/02_alg_kontrollstrukturen_wdh.odt b/02_kopiervorlagen/02_alg_kontrollstrukturen_wdh.odt new file mode 100644 index 0000000..666c6b4 Binary files /dev/null and b/02_kopiervorlagen/02_alg_kontrollstrukturen_wdh.odt differ diff --git a/02_kopiervorlagen/03_alg_keine_bloecke_mehr.odt b/02_kopiervorlagen/03_alg_keine_bloecke_mehr.odt new file mode 100644 index 0000000..8db0397 Binary files /dev/null and b/02_kopiervorlagen/03_alg_keine_bloecke_mehr.odt differ diff --git a/02_kopiervorlagen/04_alg_infos_methoden.odt b/02_kopiervorlagen/04_alg_infos_methoden.odt new file mode 100644 index 0000000..39b1e59 Binary files /dev/null and b/02_kopiervorlagen/04_alg_infos_methoden.odt differ diff --git a/02_kopiervorlagen/04_alg_zaehlschleife.odt b/02_kopiervorlagen/04_alg_zaehlschleife.odt new file mode 100644 index 0000000..115b18f Binary files /dev/null and b/02_kopiervorlagen/04_alg_zaehlschleife.odt differ diff --git a/02_kopiervorlagen/04_alg_zaehlschleife_puzzle.odt b/02_kopiervorlagen/04_alg_zaehlschleife_puzzle.odt new file mode 100644 index 0000000..f9af17d Binary files /dev/null and b/02_kopiervorlagen/04_alg_zaehlschleife_puzzle.odt differ diff --git a/02_kopiervorlagen/05_alg_optische_taeuschungen_kaffeehaus.odt b/02_kopiervorlagen/05_alg_optische_taeuschungen_kaffeehaus.odt new file mode 100644 index 0000000..87fd190 Binary files /dev/null and b/02_kopiervorlagen/05_alg_optische_taeuschungen_kaffeehaus.odt differ diff --git a/02_kopiervorlagen/06_alg_optische_taeuschungen_uebungen.odt b/02_kopiervorlagen/06_alg_optische_taeuschungen_uebungen.odt new file mode 100644 index 0000000..7b4bb1c Binary files /dev/null and b/02_kopiervorlagen/06_alg_optische_taeuschungen_uebungen.odt differ diff --git a/02_kopiervorlagen/07_alg_optische_taeuschungen_up_verzw.odt b/02_kopiervorlagen/07_alg_optische_taeuschungen_up_verzw.odt new file mode 100644 index 0000000..1f82f85 Binary files /dev/null and b/02_kopiervorlagen/07_alg_optische_taeuschungen_up_verzw.odt differ diff --git a/02_kopiervorlagen/08_alg_optische_taeuschungen_uebungen.odt b/02_kopiervorlagen/08_alg_optische_taeuschungen_uebungen.odt new file mode 100644 index 0000000..e3617bc Binary files /dev/null and b/02_kopiervorlagen/08_alg_optische_taeuschungen_uebungen.odt differ diff --git a/02_kopiervorlagen/09_alg_optische_taeuschungen_zusatz.odt b/02_kopiervorlagen/09_alg_optische_taeuschungen_zusatz.odt new file mode 100644 index 0000000..3087ee1 Binary files /dev/null and b/02_kopiervorlagen/09_alg_optische_taeuschungen_zusatz.odt differ diff --git a/02_kopiervorlagen/10_alg_balkendiagramm.odt b/02_kopiervorlagen/10_alg_balkendiagramm.odt new file mode 100644 index 0000000..bf31fd4 Binary files /dev/null and b/02_kopiervorlagen/10_alg_balkendiagramm.odt differ diff --git a/02_kopiervorlagen/10_alg_balkendiagramm_hilfekarten.odt b/02_kopiervorlagen/10_alg_balkendiagramm_hilfekarten.odt new file mode 100644 index 0000000..729f701 Binary files /dev/null and b/02_kopiervorlagen/10_alg_balkendiagramm_hilfekarten.odt differ diff --git a/02_kopiervorlagen/11_alg_zufallszahlen.odt b/02_kopiervorlagen/11_alg_zufallszahlen.odt new file mode 100644 index 0000000..e98e966 Binary files /dev/null and b/02_kopiervorlagen/11_alg_zufallszahlen.odt differ diff --git a/02_kopiervorlagen/11_alg_zufallszahlen_hilfekarten.odt b/02_kopiervorlagen/11_alg_zufallszahlen_hilfekarten.odt new file mode 100644 index 0000000..2f9fe4a Binary files /dev/null and b/02_kopiervorlagen/11_alg_zufallszahlen_hilfekarten.odt differ diff --git a/02_kopiervorlagen/12_alg_externedaten.odt b/02_kopiervorlagen/12_alg_externedaten.odt new file mode 100644 index 0000000..c914e79 Binary files /dev/null and b/02_kopiervorlagen/12_alg_externedaten.odt differ diff --git a/02_kopiervorlagen/12_alg_externedaten_hilfekarten.odt b/02_kopiervorlagen/12_alg_externedaten_hilfekarten.odt new file mode 100644 index 0000000..6b6d37f Binary files /dev/null and b/02_kopiervorlagen/12_alg_externedaten_hilfekarten.odt differ diff --git a/02_kopiervorlagen/13_alg_maximumsuche.odt b/02_kopiervorlagen/13_alg_maximumsuche.odt new file mode 100644 index 0000000..35a2efd Binary files /dev/null and b/02_kopiervorlagen/13_alg_maximumsuche.odt differ diff --git a/02_kopiervorlagen/13_alg_maximumsuche_puzzle.odt b/02_kopiervorlagen/13_alg_maximumsuche_puzzle.odt new file mode 100644 index 0000000..200ba1b Binary files /dev/null and b/02_kopiervorlagen/13_alg_maximumsuche_puzzle.odt differ diff --git a/02_kopiervorlagen/14_alg_weiterearrayalgorithmen.odt b/02_kopiervorlagen/14_alg_weiterearrayalgorithmen.odt new file mode 100644 index 0000000..efca98a Binary files /dev/null and b/02_kopiervorlagen/14_alg_weiterearrayalgorithmen.odt differ diff --git a/02_kopiervorlagen/15_alg_xydiagramm.odt b/02_kopiervorlagen/15_alg_xydiagramm.odt new file mode 100644 index 0000000..777362b Binary files /dev/null and b/02_kopiervorlagen/15_alg_xydiagramm.odt differ diff --git a/02_kopiervorlagen/15_alg_xydiagramm_uebung.odt b/02_kopiervorlagen/15_alg_xydiagramm_uebung.odt new file mode 100644 index 0000000..491eafe Binary files /dev/null and b/02_kopiervorlagen/15_alg_xydiagramm_uebung.odt differ diff --git a/03_vorlagen_tauschordner/01_processing/alg03a_wasmacheich/wasmacheich/wasmacheich.pde b/03_vorlagen_tauschordner/01_processing/alg03a_wasmacheich/wasmacheich/wasmacheich.pde new file mode 100644 index 0000000..ed526d8 --- /dev/null +++ b/03_vorlagen_tauschordner/01_processing/alg03a_wasmacheich/wasmacheich/wasmacheich.pde @@ -0,0 +1,14 @@ +//Überlege dir, was die Anweisungen in der Methode "waszeichneich" auslösen könnten +// Verändere die Werte, die den Methoden übergeben werden. Was passiert? + +void waszeichneich() { + line(100, 50, 200, 100); + ellipse(100, 200, 50, 100); + rect(300, 100, 250, 20); +} + + +void setup() { + size(600, 400); + waszeichneich(); // Aufruf der Methode +} diff --git a/03_vorlagen_tauschordner/01_processing/alg03b_figuren/figuren/figuren.pde b/03_vorlagen_tauschordner/01_processing/alg03b_figuren/figuren/figuren.pde new file mode 100644 index 0000000..aaca393 --- /dev/null +++ b/03_vorlagen_tauschordner/01_processing/alg03b_figuren/figuren/figuren.pde @@ -0,0 +1,28 @@ + +void zeichneBildC() { + // Zeichne dir zunächst eine Skizze auf ein Blatt Papier und überlege dir, welche + // Werte du den Methoden rect(x,y,b,h) und ellipse(x,y,b,h) übergeben musst, + // dass Bild C gezeichnet wird + + // ***** hier kommen deine Anweisungen hin ************ + + + // ***** Ende der eigenen Anweisungen ********** +} + + +//***** Zusatzaufgabe bzw. Hausaufgabe ************* +void zeichneBildA() { + // ***** hier kommen deine Anweisungen hin ************ + + + // ***** Ende der eigenen Anweisungen ********** + +} + + +void setup() { + size(500, 350); // Festlegen der Fenstergröße + zeichneBildC(); // Aufruf deiner Methode + // zeichneBildA(); +} diff --git a/03_vorlagen_tauschordner/01_processing/alg04_figurC_mitSchleife/figurC_mitSchleife/figurC_mitSchleife.pde b/03_vorlagen_tauschordner/01_processing/alg04_figurC_mitSchleife/figurC_mitSchleife/figurC_mitSchleife.pde new file mode 100644 index 0000000..4d7364b --- /dev/null +++ b/03_vorlagen_tauschordner/01_processing/alg04_figurC_mitSchleife/figurC_mitSchleife/figurC_mitSchleife.pde @@ -0,0 +1,15 @@ + +void zeichneBildC() { + + // ***** hier kommen deine Anweisungen hin ************ + + + // ***** Ende der eigenen Anweisungen ********** +} + + +void setup() { + size(500, 350); // Festlegen der Fenstergröße + zeichneBildC(); // Aufruf deiner Methode + +} diff --git a/03_vorlagen_tauschordner/01_processing/alg10_balkendiagramm/alg10_balkendiagramm.pde b/03_vorlagen_tauschordner/01_processing/alg10_balkendiagramm/alg10_balkendiagramm.pde new file mode 100644 index 0000000..d1e2a9d --- /dev/null +++ b/03_vorlagen_tauschordner/01_processing/alg10_balkendiagramm/alg10_balkendiagramm.pde @@ -0,0 +1,48 @@ +// Programm zur Darstellung eines Arrays als Balkendiagramm +// Autor: Thomas Schaller +// Version: 1.0 vom 12.02.2019 + + + // Liste mit allen Werten //<>// +int[] zahlen={45, 23, 123, 87, 98, 2, 1, 23, 23, 34}; + // Schriften +PFont kleineSchrift; +PFont grosseSchrift; + + +public void setup() { + size(1000, 700); + background(0); + kleineSchrift = loadFont("KleineSchrift.vlw"); + grosseSchrift = loadFont("GrosseSchrift.vlw"); + zeichneBalken(); +} + +public void zeichneBalken() { + + clear(); + + // Überschrift + fill(255,255,255); + textFont(grosseSchrift); + text("Balkendiagramm", 2, 20); + textFont(kleineSchrift); + + // ---------------------------------------------------------------------- + // To Do + // ---------------------------------------------------------------------- + // Version 1: + // Implementiere die ersten vier Balken durch Angabe der Koordinaten aus der Tabelle. + // Ergänze dazu die Methode zeicheBalken an der "ToDo"-Stelle. + // Version 2: + // Ersetze die y-Koordinate und die Breite durch die oben ermittelte Formel. + // Deklariere vorher eine Integer-Variable i. Setze i vor der ersten Rechteck + // auf 0, vor dem zweite auf 1 usw. Überprüfe, ob deine Rechtecke immer noch + // korrekt gezeichnet werden. + // Version 3: + // Verwende eine for-Schleife, um alle Balken zeichnen zu lassen. Diese muss das i + // in jedem Durchgang um 1 erhöhen. Die Anzahl der Elemente im Array bekommst du + // durch zahlen.length. + // Tipp: Vergleiche mit deiner Implementation von der Kaffeehaus-Täuschung. + +} diff --git a/03_vorlagen_tauschordner/01_processing/alg10_balkendiagramm/data/GrosseSchrift.vlw b/03_vorlagen_tauschordner/01_processing/alg10_balkendiagramm/data/GrosseSchrift.vlw new file mode 100644 index 0000000..497c8c8 Binary files /dev/null and b/03_vorlagen_tauschordner/01_processing/alg10_balkendiagramm/data/GrosseSchrift.vlw differ diff --git a/03_vorlagen_tauschordner/01_processing/alg10_balkendiagramm/data/KleineSchrift.vlw b/03_vorlagen_tauschordner/01_processing/alg10_balkendiagramm/data/KleineSchrift.vlw new file mode 100644 index 0000000..ab1241a Binary files /dev/null and b/03_vorlagen_tauschordner/01_processing/alg10_balkendiagramm/data/KleineSchrift.vlw differ diff --git a/03_vorlagen_tauschordner/01_processing/alg11_balkendiagramm_zufall/alg11_balkendiagramm_zufall.pde b/03_vorlagen_tauschordner/01_processing/alg11_balkendiagramm_zufall/alg11_balkendiagramm_zufall.pde new file mode 100644 index 0000000..cca77ac --- /dev/null +++ b/03_vorlagen_tauschordner/01_processing/alg11_balkendiagramm_zufall/alg11_balkendiagramm_zufall.pde @@ -0,0 +1,64 @@ +/** + * Balkendiagramm für int-Array, Zahlen werden zufällig erzeugt. + * + * @author Schaller + * @version 29.11.18 + */ + + // Liste mit allen Werten //<>// +int[] zahlen; + // Schriften +PFont kleineSchrift; +PFont grosseSchrift; + + +public void setup() { + // Zeichenfläche erzeugen + size(1000, 700); + background(0); + // Schriften laden + kleineSchrift = loadFont("KleineSchrift.vlw"); + grosseSchrift = loadFont("GrosseSchrift.vlw"); + + // Zufallszahlen erzeugen und anzeigen + erzeugeZufallsarray(20); + zeichneBalken(); +} + +public int getZufallszahl(int min, int max) { + java.util.Random r = new java.util.Random(); + return r.nextInt(max-min+1)+min; +} + +public void erzeugeZufallsarray(int laenge) { + // ToDo: Neues Array der richtigen Länge erzeugen + + // ToDo: Jedes Element mit einer Zufallszahl belegen + +} + + +public void zeichneBalken() { + + clear(); + + // Überschrift + fill(255,255,255); + textFont(grosseSchrift); + text("Balkendiagramm", 2, 20); + textFont(kleineSchrift); + + // Alle Einträge darstellen + for (int i = 0; i< zahlen.length; i++) { + + fill(20,30,170); + + // Balkendiagramm zeichnen + rect(120, 25+i*15, zahlen[i]+1, 13); + + // Beschriftung + fill(255,255,255); + text("i="+i, 2, 35+i*15); + text("zahlen["+i+"]="+zahlen[i], 30, 35+i*15); + } +} diff --git a/03_vorlagen_tauschordner/01_processing/alg11_balkendiagramm_zufall/data/GrosseSchrift.vlw b/03_vorlagen_tauschordner/01_processing/alg11_balkendiagramm_zufall/data/GrosseSchrift.vlw new file mode 100644 index 0000000..497c8c8 Binary files /dev/null and b/03_vorlagen_tauschordner/01_processing/alg11_balkendiagramm_zufall/data/GrosseSchrift.vlw differ diff --git a/03_vorlagen_tauschordner/01_processing/alg11_balkendiagramm_zufall/data/KleineSchrift.vlw b/03_vorlagen_tauschordner/01_processing/alg11_balkendiagramm_zufall/data/KleineSchrift.vlw new file mode 100644 index 0000000..ab1241a Binary files /dev/null and b/03_vorlagen_tauschordner/01_processing/alg11_balkendiagramm_zufall/data/KleineSchrift.vlw differ diff --git a/03_vorlagen_tauschordner/01_processing/alg12_balkendiagramm_csv/alg12_balkendiagramm_csv.pde b/03_vorlagen_tauschordner/01_processing/alg12_balkendiagramm_csv/alg12_balkendiagramm_csv.pde new file mode 100644 index 0000000..9c3d5fd --- /dev/null +++ b/03_vorlagen_tauschordner/01_processing/alg12_balkendiagramm_csv/alg12_balkendiagramm_csv.pde @@ -0,0 +1,75 @@ +/** + * Balkendiagramm für int-Array, Zahlen werden aus CSV-Datei gelesen. + * + * @author Schaller + * @version 29.11.18 + */ + +// Liste mit allen Werten +// Deklariere ein Array zahlen für die Punkte und ein Array namen für die Spielernamen +//------------ +// TODO +//------------ + + + // Schriften +PFont kleineSchrift; +PFont grosseSchrift; + + +public void setup() { + // Zeichenfläche erzeugen + size(1000, 700); + background(0); + // Schriften laden + kleineSchrift = loadFont("KleineSchrift.vlw"); + grosseSchrift = loadFont("GrosseSchrift.vlw"); + + // CSV-Datei laden und anzeigen + ladeTabelle("punkte.csv"); + zeichneBalken(); +} + + +public void ladeTabelle(String name) { + // Tabelle aus CSV-Datei laden + Table csv = loadTable(name,"header,csv"); + + // Initialisiere Arrays, in die alle Zeilen der Tabelle passen + // Die Anzahl der gespeicherten Zeilen bekommt man mit csv.getRowCount() + //------------ + // TODO + //------------ + + // Fülle die Arrays mit Werten aus der Tabelle + // Mit csv.getInt(zeilennummer, "Name der Spalte") oder csv.getInt(zeilennummer, spaltennummer) + // bekommt man die Werte der Tabelleneinträge als Integer-Wert + // Informiere dich unter https://processing.org/reference/Table.html, welche Methode geeignet ist, + // um die Namen der Spieler als String zu bekommen. getInt hilft hier nicht weiter. + //------------ + // TODO + //------------ +} + + +public void zeichneBalken() { + + clear(); + + // Überschrift + fill(255,255,255); + textFont(grosseSchrift); + text("Punkte", 2, 20); + textFont(kleineSchrift); + + // Alle Einträge darstellen + // lasse alle Ergebnisse der Spieler in der Form + // SpielerXY 234 XXXXXXXXXXXXXXXX + // SpielerZY 12 XX + // usw. + // darstellen. Wandle dazu dein Programm, um die Werte eines Arrays darzustelle ab. + //------------ + // TODO + //------------ + +} diff --git a/03_vorlagen_tauschordner/01_processing/alg12_balkendiagramm_csv/data/GrosseSchrift.vlw b/03_vorlagen_tauschordner/01_processing/alg12_balkendiagramm_csv/data/GrosseSchrift.vlw new file mode 100644 index 0000000..497c8c8 Binary files /dev/null and b/03_vorlagen_tauschordner/01_processing/alg12_balkendiagramm_csv/data/GrosseSchrift.vlw differ diff --git a/03_vorlagen_tauschordner/01_processing/alg12_balkendiagramm_csv/data/KleineSchrift.vlw b/03_vorlagen_tauschordner/01_processing/alg12_balkendiagramm_csv/data/KleineSchrift.vlw new file mode 100644 index 0000000..ab1241a Binary files /dev/null and b/03_vorlagen_tauschordner/01_processing/alg12_balkendiagramm_csv/data/KleineSchrift.vlw differ diff --git a/03_vorlagen_tauschordner/01_processing/alg12_balkendiagramm_csv/punkte.csv b/03_vorlagen_tauschordner/01_processing/alg12_balkendiagramm_csv/punkte.csv new file mode 100644 index 0000000..d6e8dfd --- /dev/null +++ b/03_vorlagen_tauschordner/01_processing/alg12_balkendiagramm_csv/punkte.csv @@ -0,0 +1,6 @@ +"Name","Punkte" +Niko,216 +Klaus,591 +Anna,857 +Lena,180 +Winfried,168 diff --git a/03_vorlagen_tauschordner/01_processing/alg13_maximumsuche/alg13_maximumsuche.pde b/03_vorlagen_tauschordner/01_processing/alg13_maximumsuche/alg13_maximumsuche.pde new file mode 100644 index 0000000..7c93936 --- /dev/null +++ b/03_vorlagen_tauschordner/01_processing/alg13_maximumsuche/alg13_maximumsuche.pde @@ -0,0 +1,156 @@ +/** + * Balkendiagramm für int-Array, Zahlen werden aus CSV-Datei gelesen, Maximum der Werte wird bestimmt. + * Hinweis zur Benutzung: + * Klicke in das Zeichenfenster + * Animierte Suche mit Taste "a" + * Automatisches Testen mit Taste "t"* + * @author Schaller + * @version 29.11.18 + */ + + +// Liste mit allen Werten //<>// +int[] zahlen; +String[] namen; + + +// Hilfsvariablen für die Suche +// ------------------------------------------------------------------- +// ToDo: Hilfsvariablen erzeugen für aktuell größtes und aktuell +// untersuchtes Element +// ------------------------------------------------------------------- + // aktuell groesstes Element + // aktuell untersuchtes Element +int verzoegerung=1000; // Geschwindigkeit der Ausführung + +// Schriften +PFont kleineSchrift; +PFont grosseSchrift; + + +public void setup() { + // Zeichenfläche erzeugen + size(1000, 700); + background(0); + // Schriften laden + kleineSchrift = loadFont("KleineSchrift.vlw"); + grosseSchrift = loadFont("GrosseSchrift.vlw"); + + // CSV-Datei laden und anzeigen + ladeTabelle("punkte.csv"); + zeichneBalken(); +} + +public void draw() { + zeichneBalken(); +} + +public void keyPressed() { + // Animierte Suche mit Taste "a" + if (key=='a') { + thread("maximumsuche"); + } + + // Automatisches Testen mit Taste "t" + if(key == 't') { + // Testfall 1 + verzoegerung = 0; + ladeTabelle("testfall1.csv"); + int m1 = maximumsuche(); + if (m1 == 12) { + System.out.println("Maximum korrekt gefunden. In Datei testfall1.csv ist der größte Wert "+ zahlen[m1]+" von "+namen[m1]+" an Position "+m1); + } else { + System.out.println("Maximum in testfall.csv nicht gefunden. Du ermittelst "+m1+" richtig wäre 12"); + } + // Testfall 2: negative Zahlen + ladeTabelle("testfall2.csv"); + int m2 = maximumsuche(); + if (m2 == 3) { + System.out.println("Maximum korrekt gefunden. In Datei testfall2.csv ist der größte Wert "+ zahlen[m2]+" von "+namen[m2]+" an Position "+m2); + } else { + System.out.println("Maximum in testfall2.csv nicht gefunden. Du ermittelst "+m2+" richtig wäre 3"); + } + // Testfall 3: Nur 1 Element + ladeTabelle("testfall3.csv"); + int m3 = maximumsuche(); + if (m3 == 0) { + System.out.println("Maximum korrekt gefunden. In Datei testfall3.csv ist der größte Wert "+ zahlen[m3]+" von "+namen[m3]+" an Position "+m3); + } else { + System.out.println("Maximum in testfall3.csv nicht gefunden. Du ermittelst "+m3+" richtig wäre 0"); + } + // Testfall 4: Leere Liste + ladeTabelle("testfall4.csv"); + int m4 = maximumsuche(); + if (m4 == -1) { + System.out.println("Maximum korrekt gefunden. Da die Datei keine Spieler enthält wird -1 zurückgegeben."); + } else { + System.out.println("Maximum in testfall4.csv nicht gefunden. Du ermittelst "+m4+" richtig wäre -1, da die Datei leer ist."); + } + } +} + + + +public void ladeTabelle(String name) { + // Tabelle aus CSV-Datei laden + Table csv = loadTable(name, "header,csv"); + + if (csv != null && csv.getColumnCount()==2) { + + // Initialisiere Arrays, in die alle Zeilen der Tabelle passen + zahlen = new int[csv.getRowCount()]; + namen = new String[csv.getRowCount()]; + + // Fülle die Arrays mit Werten aus der Tabelle + for (int i = 0; i < zahlen.length; i++) { + // Lies Wert aus der i. Zeile und der Spalte "Punkte" bzw. "Name" + zahlen[i] = csv.getInt(i, "Punkte"); + namen[i] = csv.getString(i, "Name"); + } + } +} + +public void zeichneBalken() { + + clear(); + + // Überschrift + fill(255,255,255); + textFont(grosseSchrift); + text("Punkte", 2, 20); + textFont(kleineSchrift); + + // Alle Einträge darstellen + if (zahlen != null) { + for (int i = 0; i< zahlen.length; i++) { + + fill(20,25,165); + // aktuelle Elemente farblich hervorheben + // ---------------------------------------------------------------------- + // ToDo: Falls i dem aktuell untersuchtem oder der aktuellen Maximal- + // position entspricht, muss eine andere Farbe gewählt werden + // ---------------------------------------------------------------------- + + // Balkendiagramm zeichnen + if (zahlen[i]>=0) rect(120, 25+i*15, zahlen[i]+1, 13); + + // Beschriftung + fill(255,255,255); + text(namen[i], 2, 35+i*15); + text(""+zahlen[i], 70, 35+i*15); + } + } +} + + +public int maximumsuche() { + // ------------------------------------------------------------------------------ + // ToDO: Implementiere die Maximumsuche, füge nach jeder Veränderung der + // Position des aktuellen Elements oder der Position des momentanen Maximums + // die Befehle: redraw(); und delay(verzoegerung); ein. + // Als Ergebnis soll die Methode die Position des Maximums zurückgeben + // Kommentiere die Maximumsuche + // ------------------------------------------------------------------------------ + //<>// + return -1; +} diff --git a/03_vorlagen_tauschordner/01_processing/alg13_maximumsuche/data/GrosseSchrift.vlw b/03_vorlagen_tauschordner/01_processing/alg13_maximumsuche/data/GrosseSchrift.vlw new file mode 100644 index 0000000..497c8c8 Binary files /dev/null and b/03_vorlagen_tauschordner/01_processing/alg13_maximumsuche/data/GrosseSchrift.vlw differ diff --git a/03_vorlagen_tauschordner/01_processing/alg13_maximumsuche/data/KleineSchrift.vlw b/03_vorlagen_tauschordner/01_processing/alg13_maximumsuche/data/KleineSchrift.vlw new file mode 100644 index 0000000..ab1241a Binary files /dev/null and b/03_vorlagen_tauschordner/01_processing/alg13_maximumsuche/data/KleineSchrift.vlw differ diff --git a/03_vorlagen_tauschordner/01_processing/alg13_maximumsuche/punkte.csv b/03_vorlagen_tauschordner/01_processing/alg13_maximumsuche/punkte.csv new file mode 100644 index 0000000..d6e8dfd --- /dev/null +++ b/03_vorlagen_tauschordner/01_processing/alg13_maximumsuche/punkte.csv @@ -0,0 +1,6 @@ +"Name","Punkte" +Niko,216 +Klaus,591 +Anna,857 +Lena,180 +Winfried,168 diff --git a/03_vorlagen_tauschordner/01_processing/alg13_maximumsuche/testfall1.csv b/03_vorlagen_tauschordner/01_processing/alg13_maximumsuche/testfall1.csv new file mode 100644 index 0000000..92c538f --- /dev/null +++ b/03_vorlagen_tauschordner/01_processing/alg13_maximumsuche/testfall1.csv @@ -0,0 +1,20 @@ +"Name","Punkte" +Spieler1,0 +Spieler1,6 +Spieler2,19 +Spieler6,1 +Spieler4,45 +Spieler3,23 +Spieler3,12 +Spieler2,44 +Spieler1,72 +Spieler5,12 +Spieler6,4 +Spieler7,2 +Spieler4,98 +Spieler3,21 +Spieler3,12 +Spieler2,32 +Spieler1,12 +Spieler5,44 +Spieler3,12 diff --git a/03_vorlagen_tauschordner/01_processing/alg13_maximumsuche/testfall2.csv b/03_vorlagen_tauschordner/01_processing/alg13_maximumsuche/testfall2.csv new file mode 100644 index 0000000..091c003 --- /dev/null +++ b/03_vorlagen_tauschordner/01_processing/alg13_maximumsuche/testfall2.csv @@ -0,0 +1,20 @@ +"Name","Punkte" +Spieler1,-5 +Spieler1,-6 +Spieler2,-19 +Spieler6,-1 +Spieler4,-45 +Spieler3,-23 +Spieler3,-12 +Spieler2,-44 +Spieler1,-72 +Spieler5,-12 +Spieler6,-4 +Spieler7,-2 +Spieler4,-98 +Spieler3,-21 +Spieler3,-12 +Spieler2,-32 +Spieler1,-12 +Spieler5,-44 +Spieler3,-12 diff --git a/03_vorlagen_tauschordner/01_processing/alg13_maximumsuche/testfall3.csv b/03_vorlagen_tauschordner/01_processing/alg13_maximumsuche/testfall3.csv new file mode 100644 index 0000000..3bc26b2 --- /dev/null +++ b/03_vorlagen_tauschordner/01_processing/alg13_maximumsuche/testfall3.csv @@ -0,0 +1,2 @@ +"Name","Punkte" +Spieler1,45 diff --git a/03_vorlagen_tauschordner/01_processing/alg13_maximumsuche/testfall4.csv b/03_vorlagen_tauschordner/01_processing/alg13_maximumsuche/testfall4.csv new file mode 100644 index 0000000..e74e6d5 --- /dev/null +++ b/03_vorlagen_tauschordner/01_processing/alg13_maximumsuche/testfall4.csv @@ -0,0 +1 @@ +"Name","Punkte" diff --git a/03_vorlagen_tauschordner/01_processing/alg14a_zeitungsmeldung/alg14a_zeitungsmeldung.pde b/03_vorlagen_tauschordner/01_processing/alg14a_zeitungsmeldung/alg14a_zeitungsmeldung.pde new file mode 100644 index 0000000..98b5930 --- /dev/null +++ b/03_vorlagen_tauschordner/01_processing/alg14a_zeitungsmeldung/alg14a_zeitungsmeldung.pde @@ -0,0 +1,97 @@ +/** + * Automatische Zeitungsmeldung mit Maximum und Durchschnitt, Zahlen werden aus CSV-Datei gelesen. + * + * @author Schaller + * @version 29.11.18 + */ + +// Liste mit allen Werten +int[] punkte; +String[] namen; + +// Schriften +PFont kleineSchrift; +PFont grosseSchrift; + + +public void setup() { + // Zeichenfläche erzeugen + size(1000, 700); + background(0); + // Schriften laden + kleineSchrift = loadFont("KleineSchrift.vlw"); + grosseSchrift = loadFont("GrosseSchrift.vlw"); + + // CSV-Datei laden und anzeigen + ladeTabelle("punkte.csv"); + int summe = berechneSumme(punkte); + System.out.println("Summe: "+summe); + schreibeZeitungsmeldung(); +} + +public void ladeTabelle(String name) { //<>// + // Tabelle aus CSV-Datei laden //<>// + Table csv = loadTable(name, "header,csv"); + + if (csv != null && csv.getColumnCount()==2) { + + // Initialisiere Arrays, in die alle Zeilen der Tabelle passen + punkte = new int[csv.getRowCount()]; + namen = new String[csv.getRowCount()]; + + // Fülle die Arrays mit Werten aus der Tabelle + for (int i = 0; i < punkte.length; i++) { + // Lies Wert aus der i. Zeile und der Spalte "Punkte" bzw. "Name" + punkte[i] = csv.getInt(i, "Punkte"); + namen[i] = csv.getString(i, "Name"); + } + } +} + +public void schreibeZeitungsmeldung() { + + clear(); + + // Überschrift + fill(225,225,255); + stroke(155,155,255); + textFont(grosseSchrift); + text("BREAKING NEWS",5,32); + strokeWeight(3); + line(2,4,400,4); + line(2,45,400,45); + strokeWeight(2); + line(2,7,400,7); + line(2,42,400,42); + strokeWeight(1); + textFont(kleineSchrift); + fill(240); + + int anzahlSpieler = 0; + int anzahlSpiele = 0; + int summe = berechneSumme(punkte); + double durchschnitt = 0; + + text("Großartiges Ergebnis - Klasse XY nimmt an Binärwettbewerb teil.", 2, 60); + text("Die Klasse XY hat beim diesjährigen Binärwettbewerb teilgenommen", 2, 82); + text("und ein großartiges Ergebnis erzielt. Die XX Schülerinnen und", 2, 94); + text("Schüler der Klasse erreichten in "+anzahlSpiele+" Spielen eine Gesamtpunktzahl",2,106); + text("von "+summe+". Das ist ein Durchschnitt von XX.X pro Spiel.",2,118); + +} + + +public int berechneSumme(int[] zahlen) { + int summe; + int i; + + // Startwerte setzen //<>// + summe = 0; + + // Alle Arrayelemente untersuchen + for (i=0; i< zahlen.length; i++) { + summe = summe + i; + } + // Gib die Summe zurück + return i; +} diff --git a/03_vorlagen_tauschordner/01_processing/alg14a_zeitungsmeldung/data/GrosseSchrift.vlw b/03_vorlagen_tauschordner/01_processing/alg14a_zeitungsmeldung/data/GrosseSchrift.vlw new file mode 100644 index 0000000..497c8c8 Binary files /dev/null and b/03_vorlagen_tauschordner/01_processing/alg14a_zeitungsmeldung/data/GrosseSchrift.vlw differ diff --git a/03_vorlagen_tauschordner/01_processing/alg14a_zeitungsmeldung/data/KleineSchrift.vlw b/03_vorlagen_tauschordner/01_processing/alg14a_zeitungsmeldung/data/KleineSchrift.vlw new file mode 100644 index 0000000..ab1241a Binary files /dev/null and b/03_vorlagen_tauschordner/01_processing/alg14a_zeitungsmeldung/data/KleineSchrift.vlw differ diff --git a/03_vorlagen_tauschordner/01_processing/alg14a_zeitungsmeldung/punkte.csv b/03_vorlagen_tauschordner/01_processing/alg14a_zeitungsmeldung/punkte.csv new file mode 100644 index 0000000..d6e8dfd --- /dev/null +++ b/03_vorlagen_tauschordner/01_processing/alg14a_zeitungsmeldung/punkte.csv @@ -0,0 +1,6 @@ +"Name","Punkte" +Niko,216 +Klaus,591 +Anna,857 +Lena,180 +Winfried,168 diff --git a/03_vorlagen_tauschordner/01_processing/alg14a_zeitungsmeldung/testfall1.csv b/03_vorlagen_tauschordner/01_processing/alg14a_zeitungsmeldung/testfall1.csv new file mode 100644 index 0000000..92c538f --- /dev/null +++ b/03_vorlagen_tauschordner/01_processing/alg14a_zeitungsmeldung/testfall1.csv @@ -0,0 +1,20 @@ +"Name","Punkte" +Spieler1,0 +Spieler1,6 +Spieler2,19 +Spieler6,1 +Spieler4,45 +Spieler3,23 +Spieler3,12 +Spieler2,44 +Spieler1,72 +Spieler5,12 +Spieler6,4 +Spieler7,2 +Spieler4,98 +Spieler3,21 +Spieler3,12 +Spieler2,32 +Spieler1,12 +Spieler5,44 +Spieler3,12 diff --git a/03_vorlagen_tauschordner/01_processing/alg14a_zeitungsmeldung/testfall2.csv b/03_vorlagen_tauschordner/01_processing/alg14a_zeitungsmeldung/testfall2.csv new file mode 100644 index 0000000..091c003 --- /dev/null +++ b/03_vorlagen_tauschordner/01_processing/alg14a_zeitungsmeldung/testfall2.csv @@ -0,0 +1,20 @@ +"Name","Punkte" +Spieler1,-5 +Spieler1,-6 +Spieler2,-19 +Spieler6,-1 +Spieler4,-45 +Spieler3,-23 +Spieler3,-12 +Spieler2,-44 +Spieler1,-72 +Spieler5,-12 +Spieler6,-4 +Spieler7,-2 +Spieler4,-98 +Spieler3,-21 +Spieler3,-12 +Spieler2,-32 +Spieler1,-12 +Spieler5,-44 +Spieler3,-12 diff --git a/03_vorlagen_tauschordner/01_processing/alg14a_zeitungsmeldung/testfall3.csv b/03_vorlagen_tauschordner/01_processing/alg14a_zeitungsmeldung/testfall3.csv new file mode 100644 index 0000000..3bc26b2 --- /dev/null +++ b/03_vorlagen_tauschordner/01_processing/alg14a_zeitungsmeldung/testfall3.csv @@ -0,0 +1,2 @@ +"Name","Punkte" +Spieler1,45 diff --git a/03_vorlagen_tauschordner/01_processing/alg14a_zeitungsmeldung/testfall4.csv b/03_vorlagen_tauschordner/01_processing/alg14a_zeitungsmeldung/testfall4.csv new file mode 100644 index 0000000..e74e6d5 --- /dev/null +++ b/03_vorlagen_tauschordner/01_processing/alg14a_zeitungsmeldung/testfall4.csv @@ -0,0 +1 @@ +"Name","Punkte" diff --git a/03_vorlagen_tauschordner/01_processing/alg14b_highscoretabelle/alg14b_highscoretabelle.pde b/03_vorlagen_tauschordner/01_processing/alg14b_highscoretabelle/alg14b_highscoretabelle.pde new file mode 100644 index 0000000..f75fdf6 --- /dev/null +++ b/03_vorlagen_tauschordner/01_processing/alg14b_highscoretabelle/alg14b_highscoretabelle.pde @@ -0,0 +1,132 @@ + +/** + * Balkendiagramm für int-Array, Zahlen werden aus CSV-Datei gelesen, Umwandlung in sortierte Tabelle. + * Hinweis zur Benutzung: + * Klicke in das Zeichenfenster + * Start des Algorithmus "wastutes" mit Taste "a" + * @author Schaller + * @version 29.11.18 + */ + +// Liste mit allen Werten //<>// +int[] zahlen; +String[] namen; + +// Hilfsvariablen für die Suche +int akt_maximum=-1; // aktuell groesstes Element +int akt=-2; // aktuell untersuchtes Element +int verzoegerung=1000; // Geschwindigkeit der Ausführung + +// Schriften +PFont kleineSchrift; +PFont grosseSchrift; + + +public void setup() { + // Zeichenfläche erzeugen + size(1000, 700); + background(0); + // Schriften laden + kleineSchrift = loadFont("KleineSchrift.vlw"); + grosseSchrift = loadFont("GrosseSchrift.vlw"); + + // CSV-Datei laden und anzeigen + ladeTabelle("punkte.csv"); + zeichneBalken(); +} + +public void draw() { + zeichneBalken(); +} + +public void keyPressed() { + // Animierte Suche mit Taste "a" + if (key=='a') { + thread("wastutes"); + } +} + + + +public void ladeTabelle(String name) { + // Tabelle aus CSV-Datei laden + Table csv = loadTable(name, "header,csv"); + + if (csv != null && csv.getColumnCount()==2) { + + // Initialisiere Arrays, in die alle Zeilen der Tabelle passen + zahlen = new int[csv.getRowCount()]; + namen = new String[csv.getRowCount()]; + + // Fülle die Arrays mit Werten aus der Tabelle + for (int i = 0; i < zahlen.length; i++) { + // Lies Wert aus der i. Zeile und der Spalte "Punkte" bzw. "Name" + zahlen[i] = csv.getInt(i, "Punkte"); + namen[i] = csv.getString(i, "Name"); + } + } +} + +public void zeichneBalken() { + + clear(); + + // Überschrift + fill(255, 255, 255); + textFont(grosseSchrift); + text("Punkte", 2, 20); + textFont(kleineSchrift); + + // Alle Einträge darstellen + if (zahlen != null) { + for (int i = 0; i< zahlen.length; i++) { + + fill(20, 25, 165); + // aktuelle Elemente farblich hervorheben + if (i == akt || i == akt+1 ) { + fill(140, 230, 20); + } + + // Balkendiagramm zeichnen + if (zahlen[i]>=0) rect(120, 25+i*15, zahlen[i]+1, 13); + + // Beschriftung + fill(255, 255, 255); + text(namen[i], 2, 35+i*15); + text(zahlen[i], 70, 35+i*15); + } + } +} + + +public void wastutes() { + // Sind überhaupt Daten da? + if (zahlen.length==0 ) { + return; + } + + + // + for (akt=0; akt+1 < zahlen.length; akt++) { + // + redraw(); + delay(verzoegerung); + // + if (zahlen[akt+1]> zahlen[akt]) { + // + int dummy = zahlen[akt]; + zahlen[akt] = zahlen[akt+1]; + zahlen[akt+1] = dummy; + + // + redraw(); + delay(verzoegerung); + } + } + + // + akt = -2; + redraw(); + delay(verzoegerung); + +} diff --git a/03_vorlagen_tauschordner/01_processing/alg14b_highscoretabelle/data/GrosseSchrift.vlw b/03_vorlagen_tauschordner/01_processing/alg14b_highscoretabelle/data/GrosseSchrift.vlw new file mode 100644 index 0000000..497c8c8 Binary files /dev/null and b/03_vorlagen_tauschordner/01_processing/alg14b_highscoretabelle/data/GrosseSchrift.vlw differ diff --git a/03_vorlagen_tauschordner/01_processing/alg14b_highscoretabelle/data/KleineSchrift.vlw b/03_vorlagen_tauschordner/01_processing/alg14b_highscoretabelle/data/KleineSchrift.vlw new file mode 100644 index 0000000..ab1241a Binary files /dev/null and b/03_vorlagen_tauschordner/01_processing/alg14b_highscoretabelle/data/KleineSchrift.vlw differ diff --git a/03_vorlagen_tauschordner/01_processing/alg14b_highscoretabelle/punkte.csv b/03_vorlagen_tauschordner/01_processing/alg14b_highscoretabelle/punkte.csv new file mode 100644 index 0000000..d6e8dfd --- /dev/null +++ b/03_vorlagen_tauschordner/01_processing/alg14b_highscoretabelle/punkte.csv @@ -0,0 +1,6 @@ +"Name","Punkte" +Niko,216 +Klaus,591 +Anna,857 +Lena,180 +Winfried,168 diff --git a/03_vorlagen_tauschordner/01_processing/alg14b_highscoretabelle/testfall1.csv b/03_vorlagen_tauschordner/01_processing/alg14b_highscoretabelle/testfall1.csv new file mode 100644 index 0000000..92c538f --- /dev/null +++ b/03_vorlagen_tauschordner/01_processing/alg14b_highscoretabelle/testfall1.csv @@ -0,0 +1,20 @@ +"Name","Punkte" +Spieler1,0 +Spieler1,6 +Spieler2,19 +Spieler6,1 +Spieler4,45 +Spieler3,23 +Spieler3,12 +Spieler2,44 +Spieler1,72 +Spieler5,12 +Spieler6,4 +Spieler7,2 +Spieler4,98 +Spieler3,21 +Spieler3,12 +Spieler2,32 +Spieler1,12 +Spieler5,44 +Spieler3,12 diff --git a/03_vorlagen_tauschordner/01_processing/alg14b_highscoretabelle/testfall2.csv b/03_vorlagen_tauschordner/01_processing/alg14b_highscoretabelle/testfall2.csv new file mode 100644 index 0000000..091c003 --- /dev/null +++ b/03_vorlagen_tauschordner/01_processing/alg14b_highscoretabelle/testfall2.csv @@ -0,0 +1,20 @@ +"Name","Punkte" +Spieler1,-5 +Spieler1,-6 +Spieler2,-19 +Spieler6,-1 +Spieler4,-45 +Spieler3,-23 +Spieler3,-12 +Spieler2,-44 +Spieler1,-72 +Spieler5,-12 +Spieler6,-4 +Spieler7,-2 +Spieler4,-98 +Spieler3,-21 +Spieler3,-12 +Spieler2,-32 +Spieler1,-12 +Spieler5,-44 +Spieler3,-12 diff --git a/03_vorlagen_tauschordner/01_processing/alg14b_highscoretabelle/testfall3.csv b/03_vorlagen_tauschordner/01_processing/alg14b_highscoretabelle/testfall3.csv new file mode 100644 index 0000000..3bc26b2 --- /dev/null +++ b/03_vorlagen_tauschordner/01_processing/alg14b_highscoretabelle/testfall3.csv @@ -0,0 +1,2 @@ +"Name","Punkte" +Spieler1,45 diff --git a/03_vorlagen_tauschordner/01_processing/alg14b_highscoretabelle/testfall4.csv b/03_vorlagen_tauschordner/01_processing/alg14b_highscoretabelle/testfall4.csv new file mode 100644 index 0000000..e74e6d5 --- /dev/null +++ b/03_vorlagen_tauschordner/01_processing/alg14b_highscoretabelle/testfall4.csv @@ -0,0 +1 @@ +"Name","Punkte" diff --git a/03_vorlagen_tauschordner/01_processing/alg15_xydiagramm/Amplitudes.csv b/03_vorlagen_tauschordner/01_processing/alg15_xydiagramm/Amplitudes.csv new file mode 100644 index 0000000..bc2151b --- /dev/null +++ b/03_vorlagen_tauschordner/01_processing/alg15_xydiagramm/Amplitudes.csv @@ -0,0 +1,12219 @@ +"Time (s)","Sound pressure level (dB)" +0.000000000E0,6.133205686E1 +1.130000000E-1,5.602431153E1 +3.840000000E-1,3.897519867E1 +7.780000000E-1,4.208195145E1 +1.036000000E0,3.840936313E1 +1.305000000E0,3.561092139E1 +1.587000000E0,4.663257633E1 +1.829000000E0,5.311883882E1 +2.084000000E0,5.299431820E1 +2.357000000E0,5.747397858E1 +2.643000000E0,5.626338063E1 +2.949000000E0,5.790811120E1 +3.238000000E0,5.874544026E1 +3.497000000E0,5.736162139E1 +3.775000000E0,5.897817442E1 +4.097000000E0,5.789822970E1 +4.357000000E0,5.312015799E1 +4.626000000E0,5.710192134E1 +4.941000000E0,6.275087240E1 +5.235000000E0,5.784358767E1 +5.535000000E0,5.388577420E1 +5.827000000E0,5.403495101E1 +6.090000000E0,5.428355086E1 +6.339000000E0,6.064473144E1 +6.616000000E0,6.271091291E1 +6.850000000E0,6.982615367E1 +7.128000000E0,7.050308750E1 +7.487000000E0,5.395311298E1 +7.760000000E0,5.036401582E1 +8.065000000E0,4.614125463E1 +8.361000000E0,6.244776407E1 +8.614000000E0,6.315719526E1 +8.862000000E0,5.981740395E1 +9.123000000E0,5.907292535E1 +9.374000000E0,5.661523092E1 +9.665000000E0,6.210368813E1 +9.948000000E0,6.140958115E1 +1.021100000E1,5.697007655E1 +1.058300000E1,5.460455934E1 +1.084000000E1,5.408516231E1 +1.115300000E1,5.907221377E1 +1.142100000E1,6.113412429E1 +1.172700000E1,6.267949704E1 +1.197100000E1,6.245109870E1 +1.226500000E1,6.342534529E1 +1.255800000E1,6.810008108E1 +1.287100000E1,6.036891848E1 +1.313400000E1,5.913231814E1 +1.342700000E1,5.973818566E1 +1.371600000E1,5.534371651E1 +1.401200000E1,5.694514867E1 +1.431200000E1,6.134814982E1 +1.461100000E1,5.900023912E1 +1.484600000E1,5.689908400E1 +1.515800000E1,5.296474858E1 +1.544000000E1,5.608528071E1 +1.569300000E1,5.728560404E1 +1.596900000E1,5.837984103E1 +1.620100000E1,5.718896638E1 +1.649200000E1,5.909973037E1 +1.678900000E1,5.705554272E1 +1.716300000E1,6.079937758E1 +1.747400000E1,5.618116117E1 +1.775200000E1,5.519881157E1 +1.803800000E1,5.402386340E1 +1.829100000E1,5.678484358E1 +1.858100000E1,5.954639303E1 +1.882300000E1,6.030021638E1 +1.908000000E1,5.588340744E1 +1.934400000E1,5.668691200E1 +1.958800000E1,6.042765467E1 +1.983400000E1,5.839794223E1 +2.008500000E1,5.457976882E1 +2.039500000E1,5.974390604E1 +2.064000000E1,6.049774386E1 +2.092900000E1,6.029857781E1 +2.117800000E1,6.116406203E1 +2.142700000E1,5.664722837E1 +2.173400000E1,5.823294996E1 +2.203100000E1,5.517538657E1 +2.229000000E1,5.322823206E1 +2.259900000E1,6.180779467E1 +2.285300000E1,6.106216386E1 +2.314900000E1,5.883321877E1 +2.347100000E1,6.045262422E1 +2.375000000E1,6.163931220E1 +2.406000000E1,4.841181734E1 +2.432800000E1,4.372149986E1 +2.462900000E1,5.625563946E1 +2.487100000E1,5.672759349E1 +2.513200000E1,5.896193725E1 +2.540800000E1,5.893011728E1 +2.566400000E1,5.857261268E1 +2.596700000E1,5.859012974E1 +2.621900000E1,5.635586832E1 +2.648700000E1,5.350948293E1 +2.673900000E1,5.430043092E1 +2.701400000E1,5.666610976E1 +2.727500000E1,5.218421407E1 +2.753100000E1,5.689076583E1 +2.782000000E1,5.796831886E1 +2.806900000E1,5.608205064E1 +2.831700000E1,5.482273815E1 +2.861600000E1,5.392425499E1 +2.888300000E1,5.329416010E1 +2.914800000E1,5.366916703E1 +2.940200000E1,5.280847155E1 +2.968000000E1,5.333298066E1 +2.994300000E1,5.497085471E1 +3.031200000E1,5.753094076E1 +3.057900000E1,5.655381974E1 +3.086100000E1,5.517704804E1 +3.115600000E1,5.592585858E1 +3.140700000E1,6.212826207E1 +3.166000000E1,5.699502474E1 +3.193500000E1,6.025129057E1 +3.223100000E1,5.686166208E1 +3.247300000E1,5.807641915E1 +3.271900000E1,6.065155151E1 +3.296400000E1,5.961384387E1 +3.320500000E1,6.119064420E1 +3.354400000E1,5.548464633E1 +3.378000000E1,5.699661616E1 +3.408000000E1,5.653770482E1 +3.438000000E1,5.083503664E1 +3.468200000E1,5.695639918E1 +3.495800000E1,5.566535489E1 +3.524700000E1,5.914853092E1 +3.552700000E1,5.758441289E1 +3.576600000E1,6.085665801E1 +3.606700000E1,5.862586334E1 +3.630600000E1,5.096841655E1 +3.662200000E1,6.009246966E1 +3.689400000E1,5.981749726E1 +3.715300000E1,6.108830629E1 +3.740300000E1,5.724514841E1 +3.766500000E1,5.934850613E1 +3.793000000E1,5.725470328E1 +3.819100000E1,5.843556167E1 +3.847700000E1,5.697759761E1 +3.874000000E1,5.721548979E1 +3.901600000E1,5.649629904E1 +3.927200000E1,5.850326911E1 +3.954600000E1,5.691951660E1 +3.993900000E1,5.357092442E1 +4.023400000E1,5.817046878E1 +4.053000000E1,5.554327077E1 +4.081200000E1,5.802928061E1 +4.103900000E1,5.663899845E1 +4.128700000E1,5.494654466E1 +4.155800000E1,5.564956216E1 +4.181900000E1,5.663250304E1 +4.211300000E1,5.652236278E1 +4.238100000E1,5.614203459E1 +4.264000000E1,5.433145844E1 +4.295000000E1,6.132645299E1 +4.326200000E1,6.040612545E1 +4.351400000E1,5.905916902E1 +4.377100000E1,5.885516023E1 +4.401000000E1,5.514814582E1 +4.430800000E1,5.663232510E1 +4.455900000E1,5.055807811E1 +4.482100000E1,5.614950318E1 +4.513300000E1,6.025044420E1 +4.537500000E1,5.643182261E1 +4.568900000E1,5.709089314E1 +4.600500000E1,5.480136123E1 +4.624500000E1,5.924046686E1 +4.656900000E1,6.172358505E1 +4.684100000E1,5.645515217E1 +4.711100000E1,6.002156043E1 +4.736300000E1,6.182669975E1 +4.759700000E1,5.557741963E1 +4.786700000E1,5.598662295E1 +4.818300000E1,5.664767890E1 +4.847900000E1,5.956168629E1 +4.874200000E1,5.713315811E1 +4.898900000E1,5.765479272E1 +4.931400000E1,5.507101982E1 +4.961600000E1,5.361677606E1 +4.990000000E1,5.558547080E1 +5.019600000E1,5.402951441E1 +5.046500000E1,5.805429700E1 +5.078800000E1,5.327636151E1 +5.110300000E1,4.980825483E1 +5.137100000E1,5.290981249E1 +5.165200000E1,4.817864123E1 +5.190100000E1,5.585478693E1 +5.214500000E1,5.457392293E1 +5.242900000E1,5.449921652E1 +5.272500000E1,5.537781025E1 +5.302100000E1,5.598018287E1 +5.326000000E1,5.612851081E1 +5.355800000E1,5.312697891E1 +5.384800000E1,5.799703575E1 +5.409200000E1,5.662162553E1 +5.433900000E1,5.392344795E1 +5.459100000E1,5.398098819E1 +5.494900000E1,5.489231889E1 +5.527100000E1,5.658153835E1 +5.552800000E1,5.624900056E1 +5.589500000E1,4.979935744E1 +5.616900000E1,5.146998424E1 +5.645400000E1,5.878755245E1 +5.668600000E1,5.846227673E1 +5.694400000E1,5.977267383E1 +5.726200000E1,5.508647523E1 +5.754400000E1,5.138853207E1 +5.784300000E1,5.327451232E1 +5.808600000E1,5.887142781E1 +5.837800000E1,5.858062431E1 +5.862200000E1,5.917458096E1 +5.889700000E1,6.050411670E1 +5.926300000E1,5.908687144E1 +5.952100000E1,5.570790758E1 +5.981900000E1,5.444849000E1 +6.006100000E1,5.201240285E1 +6.032000000E1,4.755830762E1 +6.061900000E1,5.204388424E1 +6.086500000E1,5.626914911E1 +6.117500000E1,5.280379974E1 +6.142900000E1,5.093923019E1 +6.173000000E1,5.460427137E1 +6.197800000E1,5.299601182E1 +6.230600000E1,5.424208739E1 +6.257600000E1,5.253762352E1 +6.283700000E1,5.544043962E1 +6.309800000E1,5.527614156E1 +6.335400000E1,5.747262922E1 +6.360700000E1,5.468151445E1 +6.384900000E1,5.582905565E1 +6.410700000E1,5.802400474E1 +6.435000000E1,5.204893636E1 +6.459600000E1,5.280146425E1 +6.486300000E1,4.876648093E1 +6.509700000E1,5.311679703E1 +6.537500000E1,5.192778643E1 +6.571400000E1,5.346709918E1 +6.597900000E1,5.370921552E1 +6.627900000E1,5.676705279E1 +6.652200000E1,5.832258643E1 +6.676600000E1,6.257736406E1 +6.703100000E1,6.295448429E1 +6.737800000E1,6.100964383E1 +6.766100000E1,5.182636016E1 +6.790700000E1,4.952717893E1 +6.821100000E1,5.667475715E1 +6.850300000E1,5.872819054E1 +6.882100000E1,6.004516195E1 +6.907300000E1,5.559244143E1 +6.935100000E1,5.600379936E1 +6.961500000E1,5.338006499E1 +6.987600000E1,5.360104859E1 +7.011900000E1,4.644905289E1 +7.037100000E1,4.528909123E1 +7.067200000E1,5.787885076E1 +7.091600000E1,5.602551032E1 +7.115700000E1,5.989544193E1 +7.142200000E1,6.110384869E1 +7.167900000E1,5.887448069E1 +7.192600000E1,5.797896456E1 +7.226000000E1,5.965665129E1 +7.251000000E1,6.477744226E1 +7.281200000E1,6.243775536E1 +7.310800000E1,5.921576979E1 +7.335600000E1,6.629420582E1 +7.364100000E1,6.683725429E1 +7.392300000E1,5.758295449E1 +7.418800000E1,5.654909286E1 +7.448600000E1,5.881341247E1 +7.472100000E1,5.546609910E1 +7.498300000E1,5.586542777E1 +7.526600000E1,5.463216262E1 +7.558500000E1,5.947397496E1 +7.586200000E1,6.218459899E1 +7.609800000E1,6.134189272E1 +7.635800000E1,5.727526170E1 +7.666700000E1,5.579062978E1 +7.699300000E1,6.015063828E1 +7.729000000E1,6.022787424E1 +7.756300000E1,5.646982462E1 +7.782200000E1,6.005734442E1 +7.813200000E1,5.950776839E1 +7.842200000E1,6.314009710E1 +7.880400000E1,5.425753266E1 +7.910400000E1,5.909139002E1 +7.935300000E1,5.600377253E1 +7.962300000E1,6.036368528E1 +7.993700000E1,5.940415340E1 +8.018900000E1,6.102152187E1 +8.050000000E1,6.619104713E1 +8.074000000E1,6.149981675E1 +8.098900000E1,5.978899259E1 +8.123800000E1,5.963150500E1 +8.150300000E1,6.509054947E1 +8.181300000E1,6.387458039E1 +8.220700000E1,6.421798778E1 +8.246100000E1,6.092500605E1 +8.271900000E1,6.039313205E1 +8.297100000E1,5.885189543E1 +8.328000000E1,6.068901175E1 +8.355600000E1,6.531581124E1 +8.381900000E1,6.460984287E1 +8.407800000E1,6.281147078E1 +8.435000000E1,5.961599483E1 +8.463400000E1,5.915457491E1 +8.489200000E1,5.383227231E1 +8.513000000E1,5.278474817E1 +8.551100000E1,6.165964712E1 +8.574900000E1,6.442604107E1 +8.600700000E1,6.551005247E1 +8.626000000E1,6.660338206E1 +8.650900000E1,6.304014634E1 +8.676000000E1,6.488065719E1 +8.701800000E1,6.416881833E1 +8.728000000E1,5.892166498E1 +8.754500000E1,5.946249393E1 +8.785000000E1,6.506678358E1 +8.809400000E1,5.703264442E1 +8.840500000E1,6.164086486E1 +8.876300000E1,6.276173959E1 +8.906100000E1,5.818071871E1 +8.930500000E1,5.844394446E1 +8.956300000E1,5.657440647E1 +8.987400000E1,6.120356137E1 +9.011500000E1,6.094306560E1 +9.041100000E1,5.978472131E1 +9.065500000E1,6.008128664E1 +9.092400000E1,5.758286780E1 +9.123300000E1,5.353387594E1 +9.151600000E1,5.676204998E1 +9.183800000E1,5.245702159E1 +9.218200000E1,5.642589170E1 +9.243600000E1,5.542467479E1 +9.268000000E1,5.580829615E1 +9.297600000E1,5.148061441E1 +9.322800000E1,4.635974806E1 +9.353200000E1,5.465579762E1 +9.377300000E1,5.154999739E1 +9.402200000E1,5.544992474E1 +9.427900000E1,5.302390200E1 +9.453300000E1,5.127982623E1 +9.478800000E1,5.263086656E1 +9.503100000E1,5.128121484E1 +9.532100000E1,5.061466876E1 +9.557700000E1,5.328260476E1 +9.582800000E1,5.101663724E1 +9.607100000E1,5.400893265E1 +9.640400000E1,5.756552061E1 +9.665500000E1,5.665487755E1 +9.690400000E1,5.719000980E1 +9.715400000E1,5.593995548E1 +9.740400000E1,5.420194495E1 +9.771300000E1,4.867232074E1 +9.802100000E1,5.053798103E1 +9.830700000E1,4.874294948E1 +9.857500000E1,5.754515654E1 +9.883700000E1,5.863618568E1 +9.909700000E1,6.070195076E1 +9.935300000E1,5.434874196E1 +9.961300000E1,6.163600431E1 +9.987300000E1,5.555228218E1 +1.001200000E2,5.733850418E1 +1.003910000E2,6.133233800E1 +1.006620000E2,5.853313440E1 +1.009020000E2,5.435835494E1 +1.011680000E2,5.329891948E1 +1.014680000E2,5.356470018E1 +1.018410000E2,5.574288130E1 +1.021370000E2,5.927571979E1 +1.024000000E2,5.789956910E1 +1.026980000E2,6.081738139E1 +1.029540000E2,5.575615853E1 +1.032580000E2,5.337382111E1 +1.035140000E2,5.562761746E1 +1.038150000E2,5.905624776E1 +1.041040000E2,5.696105750E1 +1.043990000E2,6.170938149E1 +1.046370000E2,5.823687000E1 +1.049080000E2,6.066674703E1 +1.051740000E2,6.220969933E1 +1.054810000E2,5.755805236E1 +1.057660000E2,5.735691579E1 +1.060450000E2,5.761618087E1 +1.063040000E2,5.188413372E1 +1.065680000E2,5.643639822E1 +1.068740000E2,5.312430876E1 +1.071280000E2,5.924995828E1 +1.073900000E2,5.546187342E1 +1.076920000E2,5.474389270E1 +1.079790000E2,5.600814816E1 +1.082440000E2,5.561453096E1 +1.084980000E2,5.408559240E1 +1.087580000E2,5.622058302E1 +1.090160000E2,5.768852773E1 +1.092670000E2,5.516804842E1 +1.095340000E2,5.973626648E1 +1.098120000E2,6.403409511E1 +1.100690000E2,6.035201036E1 +1.103490000E2,5.940482770E1 +1.105950000E2,5.932126109E1 +1.108600000E2,5.859387697E1 +1.111460000E2,5.929800416E1 +1.114110000E2,5.930503134E1 +1.117890000E2,6.170536210E1 +1.120410000E2,6.214563711E1 +1.123490000E2,5.810151097E1 +1.126320000E2,5.823719807E1 +1.128910000E2,6.454485320E1 +1.131870000E2,6.755031626E1 +1.134560000E2,6.410743881E1 +1.137200000E2,5.913442857E1 +1.139870000E2,6.382823805E1 +1.142400000E2,5.859239523E1 +1.145180000E2,5.135859796E1 +1.147890000E2,5.294563188E1 +1.151440000E2,5.357868048E1 +1.154220000E2,5.561359505E1 +1.156620000E2,5.645675088E1 +1.159670000E2,5.879425595E1 +1.162610000E2,5.918610512E1 +1.164990000E2,6.083658676E1 +1.167470000E2,5.526645697E1 +1.169880000E2,5.471312988E1 +1.172910000E2,6.211796732E1 +1.175510000E2,5.417468648E1 +1.177930000E2,5.576739557E1 +1.180750000E2,5.912472365E1 +1.184660000E2,5.718213173E1 +1.187710000E2,5.747081312E1 +1.190170000E2,5.741742618E1 +1.192690000E2,5.379557814E1 +1.195330000E2,5.428733520E1 +1.197780000E2,6.177329402E1 +1.200450000E2,5.672333166E1 +1.203170000E2,5.584947723E1 +1.205670000E2,5.382665718E1 +1.208400000E2,5.443690083E1 +1.211280000E2,5.221565874E1 +1.214800000E2,5.516249741E1 +1.217540000E2,5.676279334E1 +1.220050000E2,5.303796336E1 +1.222680000E2,5.258840561E1 +1.225120000E2,5.671935607E1 +1.227660000E2,4.902892756E1 +1.230240000E2,4.264962220E1 +1.232830000E2,4.818154680E1 +1.235340000E2,5.204058636E1 +1.238430000E2,5.649936271E1 +1.241410000E2,5.396154490E1 +1.244200000E2,5.428877275E1 +1.246760000E2,4.778715710E1 +1.249500000E2,4.912370762E1 +1.252110000E2,5.114426735E1 +1.255020000E2,5.345096378E1 +1.257410000E2,5.581149074E1 +1.260430000E2,5.211774829E1 +1.263320000E2,5.470047014E1 +1.265660000E2,5.399085344E1 +1.268600000E2,5.981732528E1 +1.271210000E2,5.944116770E1 +1.273530000E2,5.668281238E1 +1.275970000E2,5.042419391E1 +1.279080000E2,5.014554177E1 +1.282260000E2,5.350461413E1 +1.285240000E2,5.453533258E1 +1.287780000E2,5.809919663E1 +1.290280000E2,5.729580956E1 +1.292980000E2,5.681749266E1 +1.296010000E2,5.542882864E1 +1.298980000E2,5.612046892E1 +1.302070000E2,6.074750886E1 +1.304620000E2,5.979349108E1 +1.307520000E2,5.806574219E1 +1.310590000E2,5.738881777E1 +1.314010000E2,5.595280312E1 +1.316630000E2,5.401154636E1 +1.319120000E2,5.499471091E1 +1.321620000E2,5.551354327E1 +1.324640000E2,6.567912108E1 +1.327650000E2,5.725129100E1 +1.330150000E2,6.452906176E1 +1.333160000E2,5.778565576E1 +1.335760000E2,6.242194617E1 +1.338200000E2,5.570863747E1 +1.340710000E2,5.755877138E1 +1.343660000E2,6.819206156E1 +1.346260000E2,6.094769164E1 +1.349310000E2,6.447198163E1 +1.351810000E2,5.482297950E1 +1.354630000E2,6.327012623E1 +1.357210000E2,5.723157337E1 +1.359770000E2,5.835004111E1 +1.362140000E2,6.413045068E1 +1.365290000E2,6.022343539E1 +1.368110000E2,5.969265006E1 +1.371070000E2,5.589766444E1 +1.373670000E2,6.089100679E1 +1.376970000E2,6.762783521E1 +1.379410000E2,5.740809854E1 +1.381870000E2,6.711182247E1 +1.384650000E2,6.290175574E1 +1.387060000E2,6.352322572E1 +1.390400000E2,5.897504025E1 +1.392980000E2,5.872568346E1 +1.396520000E2,5.582882684E1 +1.399140000E2,5.874428562E1 +1.402160000E2,5.275369064E1 +1.404650000E2,5.181123336E1 +1.407250000E2,4.758951485E1 +1.410550000E2,4.601470876E1 +1.413500000E2,5.203790008E1 +1.416310000E2,5.380793436E1 +1.418780000E2,5.006781735E1 +1.421580000E2,4.792469964E1 +1.424020000E2,5.136650820E1 +1.427060000E2,5.127969468E1 +1.430200000E2,5.304643312E1 +1.433210000E2,5.218299100E1 +1.436050000E2,5.568762266E1 +1.439010000E2,5.522696018E1 +1.442570000E2,5.919224289E1 +1.445880000E2,6.201398016E1 +1.448680000E2,5.750742223E1 +1.451160000E2,5.811963790E1 +1.454090000E2,5.695462128E1 +1.456560000E2,5.854812337E1 +1.458980000E2,5.886107911E1 +1.461720000E2,5.454171305E1 +1.464480000E2,5.674410925E1 +1.466770000E2,5.450912101E1 +1.469270000E2,5.953864028E1 +1.471790000E2,6.097527460E1 +1.475260000E2,5.825769450E1 +1.478290000E2,5.780473579E1 +1.480790000E2,6.185542851E1 +1.483350000E2,5.390929394E1 +1.486330000E2,5.400087479E1 +1.488750000E2,5.328656685E1 +1.491190000E2,5.599536596E1 +1.494200000E2,5.721648542E1 +1.497150000E2,5.787493165E1 +1.500380000E2,5.480047158E1 +1.503480000E2,5.002404450E1 +1.506590000E2,5.486151348E1 +1.509700000E2,6.245235750E1 +1.512360000E2,5.831236552E1 +1.514820000E2,6.253825815E1 +1.517260000E2,6.440134635E1 +1.520120000E2,5.646251942E1 +1.523080000E2,5.569851104E1 +1.525630000E2,5.574195002E1 +1.528610000E2,6.073633455E1 +1.531220000E2,5.704364811E1 +1.533960000E2,5.858521931E1 +1.536900000E2,6.334346239E1 +1.540080000E2,5.734505299E1 +1.542490000E2,6.522555977E1 +1.544980000E2,5.500712815E1 +1.547420000E2,5.698741268E1 +1.549830000E2,5.097374633E1 +1.552760000E2,5.421781291E1 +1.555100000E2,5.276919678E1 +1.558070000E2,5.444895965E1 +1.560410000E2,5.023818561E1 +1.563440000E2,5.460917302E1 +1.565880000E2,5.459938847E1 +1.568920000E2,5.843131092E1 +1.572210000E2,5.876667307E1 +1.574850000E2,5.735202828E1 +1.577300000E2,5.496399564E1 +1.580290000E2,5.249359356E1 +1.582920000E2,5.216967072E1 +1.585400000E2,5.506360532E1 +1.588040000E2,4.854470136E1 +1.590480000E2,5.455647594E1 +1.593040000E2,5.480802962E1 +1.595560000E2,5.117555202E1 +1.598230000E2,5.525001141E1 +1.600680000E2,6.028739680E1 +1.604080000E2,6.051466285E1 +1.606910000E2,5.941686107E1 +1.609450000E2,6.263789003E1 +1.611920000E2,5.862463866E1 +1.614980000E2,5.858673558E1 +1.617730000E2,5.766546261E1 +1.620210000E2,5.485521148E1 +1.623080000E2,5.814732367E1 +1.625850000E2,5.829863647E1 +1.628370000E2,5.473457172E1 +1.631510000E2,5.323729241E1 +1.634320000E2,5.795543593E1 +1.637670000E2,5.845831909E1 +1.640670000E2,5.883503284E1 +1.643040000E2,5.933733684E1 +1.645990000E2,5.316483696E1 +1.648620000E2,5.628275472E1 +1.651110000E2,5.612764782E1 +1.654290000E2,5.739409022E1 +1.657290000E2,5.275374209E1 +1.660100000E2,5.606330732E1 +1.662350000E2,4.973765069E1 +1.664840000E2,4.855931683E1 +1.667820000E2,4.830487304E1 +1.670210000E2,5.643349546E1 +1.672820000E2,5.752246312E1 +1.675830000E2,5.576545129E1 +1.678330000E2,5.583582770E1 +1.681390000E2,5.301617697E1 +1.684460000E2,5.088408561E1 +1.686990000E2,5.149775091E1 +1.690030000E2,6.019099852E1 +1.692410000E2,6.143998752E1 +1.695380000E2,6.183098470E1 +1.697780000E2,5.964256200E1 +1.701420000E2,5.648358262E1 +1.703870000E2,5.768033788E1 +1.706360000E2,5.037521789E1 +1.709530000E2,5.268785935E1 +1.712030000E2,5.850048969E1 +1.714650000E2,5.537813713E1 +1.717710000E2,5.989062491E1 +1.720770000E2,6.371629733E1 +1.723380000E2,5.413135778E1 +1.726060000E2,5.582389161E1 +1.729040000E2,6.344770094E1 +1.731770000E2,6.038125570E1 +1.735090000E2,5.229655017E1 +1.737830000E2,5.594074665E1 +1.740430000E2,6.258802116E1 +1.743030000E2,5.773122794E1 +1.745600000E2,5.533899998E1 +1.748290000E2,5.069657364E1 +1.750850000E2,6.285550191E1 +1.753480000E2,5.470504416E1 +1.756240000E2,5.746379759E1 +1.758870000E2,5.928233462E1 +1.761350000E2,5.214791610E1 +1.763840000E2,5.260177806E1 +1.767030000E2,4.844041050E1 +1.769490000E2,5.275717684E1 +1.772330000E2,5.436891746E1 +1.774780000E2,5.441421810E1 +1.777590000E2,5.485847839E1 +1.780320000E2,5.714239097E1 +1.782910000E2,6.028837304E1 +1.785470000E2,5.706420775E1 +1.788380000E2,5.509582512E1 +1.791200000E2,5.674185072E1 +1.794340000E2,5.437491314E1 +1.796940000E2,5.696592309E1 +1.799990000E2,5.344092263E1 +1.802540000E2,5.414345246E1 +1.804960000E2,5.421992498E1 +1.808400000E2,5.317024536E1 +1.811450000E2,5.422714635E1 +1.814530000E2,5.933207779E1 +1.817720000E2,5.916706050E1 +1.820730000E2,5.685980261E1 +1.824210000E2,5.521649456E1 +1.826850000E2,5.651993888E1 +1.829810000E2,5.707596711E1 +1.832810000E2,5.464130538E1 +1.836160000E2,5.364065008E1 +1.838600000E2,5.913078622E1 +1.841080000E2,5.695541400E1 +1.843520000E2,6.237274690E1 +1.846510000E2,6.017101966E1 +1.848950000E2,5.670915019E1 +1.851380000E2,5.651470649E1 +1.854400000E2,5.919691857E1 +1.857560000E2,5.752836475E1 +1.860680000E2,6.133052078E1 +1.863670000E2,6.001801442E1 +1.866740000E2,5.871186574E1 +1.869510000E2,5.858669373E1 +1.872240000E2,5.722343490E1 +1.875200000E2,5.725198568E1 +1.877700000E2,5.560524182E1 +1.880340000E2,5.419540118E1 +1.882980000E2,6.169219144E1 +1.885790000E2,5.704261604E1 +1.888700000E2,5.651125138E1 +1.891060000E2,5.778536485E1 +1.894110000E2,5.304160496E1 +1.896990000E2,5.105254388E1 +1.900460000E2,5.338626279E1 +1.902980000E2,5.090929652E1 +1.905360000E2,5.235399183E1 +1.907970000E2,5.429173243E1 +1.910620000E2,5.376238901E1 +1.913500000E2,6.411203098E1 +1.916020000E2,6.235211697E1 +1.919100000E2,5.719243884E1 +1.922140000E2,5.965550680E1 +1.925010000E2,5.850063986E1 +1.928110000E2,6.013906156E1 +1.930480000E2,5.912633730E1 +1.934000000E2,5.860712099E1 +1.936870000E2,5.944287516E1 +1.939980000E2,5.676076088E1 +1.942520000E2,5.712881871E1 +1.945490000E2,5.515631677E1 +1.948870000E2,5.670925955E1 +1.951320000E2,5.768263389E1 +1.954210000E2,5.735243887E1 +1.957290000E2,5.883798740E1 +1.960030000E2,5.654393164E1 +1.963340000E2,5.345251733E1 +1.966710000E2,5.034487882E1 +1.969060000E2,5.741493139E1 +1.971980000E2,5.877434013E1 +1.974210000E2,5.965387227E1 +1.977200000E2,6.306941384E1 +1.979730000E2,6.004201692E1 +1.982230000E2,6.106500017E1 +1.984800000E2,5.674857861E1 +1.987290000E2,6.020914127E1 +1.990680000E2,6.067289060E1 +1.993460000E2,5.996658083E1 +1.996390000E2,5.676340490E1 +1.999500000E2,5.612304129E1 +2.002130000E2,6.289766509E1 +2.005150000E2,5.720971103E1 +2.008280000E2,5.752136939E1 +2.010940000E2,6.058659890E1 +2.013440000E2,5.618430636E1 +2.016270000E2,6.056271249E1 +2.019400000E2,5.729198827E1 +2.022100000E2,5.793084452E1 +2.025070000E2,5.787194228E1 +2.027910000E2,5.959620014E1 +2.030940000E2,6.012062596E1 +2.033180000E2,6.276377758E1 +2.036210000E2,5.834405857E1 +2.039320000E2,5.545225289E1 +2.042050000E2,5.829439447E1 +2.044730000E2,5.799912649E1 +2.047970000E2,5.444896398E1 +2.050680000E2,5.743866699E1 +2.053150000E2,5.862448994E1 +2.055880000E2,5.778478934E1 +2.058890000E2,5.527981007E1 +2.061620000E2,5.742523507E1 +2.064580000E2,5.472188821E1 +2.067100000E2,6.202721053E1 +2.069630000E2,5.861698013E1 +2.072080000E2,6.294616718E1 +2.074730000E2,6.321186761E1 +2.077380000E2,5.776609523E1 +2.080390000E2,6.061292698E1 +2.083320000E2,5.857532480E1 +2.085870000E2,5.800369352E1 +2.088450000E2,5.977447345E1 +2.091070000E2,5.957010157E1 +2.093520000E2,6.145770306E1 +2.096060000E2,6.176056517E1 +2.098580000E2,6.033519811E1 +2.100970000E2,6.429628489E1 +2.103980000E2,6.215353584E1 +2.106470000E2,6.299048914E1 +2.109300000E2,6.133544133E1 +2.112010000E2,5.397487394E1 +2.114250000E2,5.313920655E1 +2.116740000E2,5.552710709E1 +2.119140000E2,5.692289703E1 +2.121730000E2,5.618691953E1 +2.124220000E2,5.402804715E1 +2.127170000E2,5.390450402E1 +2.129570000E2,5.652515030E1 +2.132580000E2,5.490504921E1 +2.135120000E2,5.485761082E1 +2.137850000E2,6.486277416E1 +2.140520000E2,6.121826472E1 +2.143580000E2,6.355465948E1 +2.146390000E2,5.534291145E1 +2.148790000E2,6.610858745E1 +2.151670000E2,5.617739728E1 +2.154670000E2,5.426651762E1 +2.157300000E2,5.840247716E1 +2.160830000E2,5.257749691E1 +2.163200000E2,6.345809118E1 +2.165810000E2,6.020490407E1 +2.168390000E2,5.603372378E1 +2.170870000E2,5.452432165E1 +2.173530000E2,5.679931822E1 +2.176220000E2,6.225558234E1 +2.179360000E2,5.991886985E1 +2.182430000E2,6.307902574E1 +2.184780000E2,6.764692456E1 +2.187700000E2,6.696013302E1 +2.190280000E2,6.419552300E1 +2.193390000E2,6.401831507E1 +2.196000000E2,6.317016249E1 +2.198590000E2,6.093052958E1 +2.201380000E2,6.446513941E1 +2.204220000E2,6.075454080E1 +2.206690000E2,6.712020778E1 +2.209300000E2,5.440050354E1 +2.212550000E2,5.627963451E1 +2.215550000E2,6.358778444E1 +2.217990000E2,5.793661873E1 +2.220730000E2,6.448679664E1 +2.223050000E2,5.844994198E1 +2.226510000E2,5.802583418E1 +2.229440000E2,5.848297014E1 +2.231840000E2,6.170695891E1 +2.234220000E2,6.201301769E1 +2.236630000E2,6.049179870E1 +2.239600000E2,6.316843106E1 +2.242020000E2,5.818837652E1 +2.245150000E2,6.411353278E1 +2.248330000E2,6.458398711E1 +2.250670000E2,6.303280227E1 +2.253240000E2,6.378696379E1 +2.255670000E2,6.157533943E1 +2.259260000E2,5.845901257E1 +2.261910000E2,5.623331182E1 +2.264460000E2,5.550822889E1 +2.267020000E2,5.907003722E1 +2.270220000E2,6.300043778E1 +2.273130000E2,5.934584116E1 +2.275640000E2,5.367094537E1 +2.278520000E2,6.260544714E1 +2.281140000E2,5.666507163E1 +2.283970000E2,6.099713971E1 +2.287020000E2,5.943082312E1 +2.289450000E2,6.095935321E1 +2.292950000E2,5.939706013E1 +2.296230000E2,5.612117806E1 +2.299220000E2,5.805831404E1 +2.301570000E2,5.496048372E1 +2.304070000E2,5.335836124E1 +2.306490000E2,5.043808989E1 +2.309270000E2,4.778025574E1 +2.311680000E2,4.613189565E1 +2.314100000E2,4.740314381E1 +2.316580000E2,5.230056147E1 +2.319150000E2,5.672989332E1 +2.321590000E2,6.081799709E1 +2.325030000E2,5.909736866E1 +2.327570000E2,5.528762811E1 +2.330520000E2,6.623131701E1 +2.333360000E2,6.376149752E1 +2.335730000E2,6.088376871E1 +2.338700000E2,6.235681388E1 +2.341160000E2,6.060610548E1 +2.343930000E2,5.779254532E1 +2.346370000E2,5.570043106E1 +2.349010000E2,6.172637016E1 +2.351520000E2,5.865545525E1 +2.354420000E2,6.250465685E1 +2.356850000E2,6.494272879E1 +2.359310000E2,6.075163542E1 +2.361840000E2,5.742858606E1 +2.364460000E2,5.756917813E1 +2.366990000E2,6.169927684E1 +2.370080000E2,5.540268710E1 +2.373040000E2,5.484088652E1 +2.376000000E2,5.732112773E1 +2.378800000E2,5.184194161E1 +2.381270000E2,5.604168635E1 +2.383910000E2,5.644051218E1 +2.387130000E2,6.049774032E1 +2.390290000E2,6.303013407E1 +2.392800000E2,6.115111046E1 +2.395770000E2,6.294174883E1 +2.398740000E2,6.716012591E1 +2.401880000E2,7.075117191E1 +2.404890000E2,6.435561631E1 +2.407550000E2,5.593172595E1 +2.410720000E2,5.781614361E1 +2.413350000E2,5.497792445E1 +2.416080000E2,5.569244646E1 +2.418870000E2,5.408109683E1 +2.421100000E2,5.687440525E1 +2.424230000E2,6.415333296E1 +2.427170000E2,6.528722740E1 +2.429900000E2,6.229384329E1 +2.432350000E2,5.452507698E1 +2.434960000E2,5.248331654E1 +2.437450000E2,5.069826347E1 +2.439880000E2,4.989889277E1 +2.442610000E2,5.196931346E1 +2.445130000E2,4.988417717E1 +2.448120000E2,5.950968466E1 +2.451200000E2,5.725324421E1 +2.454210000E2,5.902908729E1 +2.456980000E2,5.857784521E1 +2.459650000E2,5.154496059E1 +2.462670000E2,5.316738342E1 +2.465660000E2,5.681338179E1 +2.468580000E2,5.486468116E1 +2.471080000E2,5.378622946E1 +2.473840000E2,5.263910847E1 +2.477040000E2,5.102724000E1 +2.479590000E2,4.958128022E1 +2.482070000E2,5.621813465E1 +2.486190000E2,5.553111013E1 +2.489120000E2,5.711728514E1 +2.491630000E2,6.098223102E1 +2.494610000E2,5.812970142E1 +2.497290000E2,5.874411947E1 +2.500090000E2,6.058797235E1 +2.503160000E2,5.921850964E1 +2.506300000E2,5.825659244E1 +2.508940000E2,5.902074554E1 +2.512250000E2,5.857720223E1 +2.514860000E2,5.834259509E1 +2.517560000E2,5.664723408E1 +2.520110000E2,6.245873243E1 +2.522800000E2,6.018081628E1 +2.525490000E2,6.060905480E1 +2.527980000E2,6.098924059E1 +2.530310000E2,6.604497204E1 +2.532750000E2,5.762503683E1 +2.535750000E2,5.946675250E1 +2.538150000E2,5.696283688E1 +2.541120000E2,5.795434272E1 +2.543420000E2,5.641662406E1 +2.546470000E2,6.001503419E1 +2.549610000E2,5.913147779E1 +2.552050000E2,5.772050526E1 +2.554250000E2,5.986895040E1 +2.557400000E2,4.836792039E1 +2.560130000E2,4.818172752E1 +2.563450000E2,5.244597112E1 +2.566130000E2,5.174954560E1 +2.568650000E2,5.165225717E1 +2.571100000E2,4.865803315E1 +2.573530000E2,4.773689375E1 +2.576460000E2,5.375353685E1 +2.579030000E2,5.630041837E1 +2.582540000E2,5.390583403E1 +2.585030000E2,5.686416101E1 +2.588120000E2,5.880170204E1 +2.590630000E2,5.373023259E1 +2.593590000E2,6.009405077E1 +2.596120000E2,5.710673366E1 +2.598560000E2,5.891240789E1 +2.600990000E2,5.960890080E1 +2.603510000E2,6.728594423E1 +2.606060000E2,6.334340199E1 +2.609270000E2,6.082175509E1 +2.611830000E2,5.750083619E1 +2.615060000E2,5.667484133E1 +2.618070000E2,6.152760439E1 +2.620430000E2,5.697586540E1 +2.623440000E2,5.674189037E1 +2.625730000E2,5.539036876E1 +2.628210000E2,4.901745514E1 +2.631270000E2,5.264848299E1 +2.634230000E2,5.038277380E1 +2.636750000E2,5.149234245E1 +2.639170000E2,4.604207892E1 +2.641630000E2,5.735184247E1 +2.644630000E2,5.659523444E1 +2.648080000E2,5.697978691E1 +2.650640000E2,5.691301726E1 +2.653540000E2,5.696584583E1 +2.656480000E2,5.138210199E1 +2.659030000E2,5.345758564E1 +2.661640000E2,5.363588256E1 +2.664240000E2,5.471656895E1 +2.666720000E2,5.140760448E1 +2.669400000E2,5.329005020E1 +2.671940000E2,5.422388323E1 +2.674460000E2,5.133919880E1 +2.677140000E2,5.690801972E1 +2.681270000E2,5.964609863E1 +2.684030000E2,6.167901240E1 +2.686970000E2,5.297205648E1 +2.689350000E2,5.530010894E1 +2.692310000E2,5.450325538E1 +2.694700000E2,5.391690578E1 +2.697660000E2,5.420666075E1 +2.700010000E2,4.962510480E1 +2.702390000E2,5.010058679E1 +2.705460000E2,5.345147952E1 +2.708590000E2,5.574757195E1 +2.711770000E2,5.571208034E1 +2.714720000E2,5.288998421E1 +2.717170000E2,5.214438195E1 +2.720190000E2,5.232798978E1 +2.723080000E2,6.045263056E1 +2.725500000E2,5.870512300E1 +2.727930000E2,5.577911819E1 +2.730760000E2,5.501493048E1 +2.733800000E2,5.433475343E1 +2.736720000E2,5.293457700E1 +2.739070000E2,5.486483547E1 +2.741780000E2,6.008208952E1 +2.745050000E2,5.845984546E1 +2.748040000E2,5.900764997E1 +2.751070000E2,5.760203457E1 +2.754240000E2,5.795024632E1 +2.757280000E2,6.182748257E1 +2.760340000E2,5.683205968E1 +2.763350000E2,5.821402367E1 +2.766080000E2,5.520672517E1 +2.768980000E2,5.645892504E1 +2.772030000E2,5.463906896E1 +2.775200000E2,5.412722413E1 +2.777910000E2,5.268636730E1 +2.780870000E2,5.566734184E1 +2.783350000E2,5.745256931E1 +2.785810000E2,5.645167582E1 +2.788270000E2,5.925831320E1 +2.790840000E2,5.591320738E1 +2.793690000E2,5.632637646E1 +2.796200000E2,6.252281740E1 +2.799120000E2,5.547643277E1 +2.801570000E2,6.021611275E1 +2.804580000E2,5.732676882E1 +2.808110000E2,5.909573770E1 +2.810780000E2,6.005240162E1 +2.813300000E2,5.965022185E1 +2.815820000E2,6.135840817E1 +2.818790000E2,5.970629096E1 +2.821590000E2,5.879025140E1 +2.824010000E2,5.747324456E1 +2.826520000E2,5.726379384E1 +2.828950000E2,5.871306541E1 +2.831920000E2,6.188032415E1 +2.834710000E2,6.066582287E1 +2.837110000E2,5.950933244E1 +2.840350000E2,5.901018860E1 +2.843000000E2,5.761182729E1 +2.846050000E2,5.446909438E1 +2.848570000E2,5.349219985E1 +2.851700000E2,5.015518748E1 +2.854330000E2,5.374610595E1 +2.857270000E2,5.877223624E1 +2.860310000E2,5.644512377E1 +2.863080000E2,5.711327205E1 +2.865540000E2,5.655239592E1 +2.867930000E2,5.833716670E1 +2.871150000E2,5.417781453E1 +2.874030000E2,5.332227783E1 +2.876540000E2,5.146836736E1 +2.879540000E2,5.452228720E1 +2.881970000E2,5.025406823E1 +2.884910000E2,5.490648375E1 +2.887280000E2,5.506242221E1 +2.890210000E2,5.400927835E1 +2.892600000E2,5.781126179E1 +2.895430000E2,6.384283902E1 +2.898470000E2,6.340395874E1 +2.901430000E2,5.555395770E1 +2.904560000E2,5.514224078E1 +2.907530000E2,5.346566906E1 +2.910000000E2,5.948406902E1 +2.912590000E2,6.362292628E1 +2.915300000E2,6.175065463E1 +2.918240000E2,6.129817533E1 +2.920790000E2,6.317618325E1 +2.923350000E2,6.137933812E1 +2.926010000E2,5.620086793E1 +2.928740000E2,5.715913846E1 +2.931780000E2,7.028942499E1 +2.934620000E2,6.774357618E1 +2.937770000E2,6.989950413E1 +2.940270000E2,6.631119439E1 +2.943030000E2,6.956920703E1 +2.945570000E2,6.352936554E1 +2.948100000E2,6.981123112E1 +2.951150000E2,5.607171784E1 +2.953950000E2,5.394017247E1 +2.956980000E2,7.110851253E1 +2.959460000E2,6.978848906E1 +2.961900000E2,5.446752823E1 +2.965090000E2,6.309281755E1 +2.968110000E2,6.647752141E1 +2.971300000E2,6.773248230E1 +2.974240000E2,6.289421429E1 +2.977060000E2,5.998905240E1 +2.979500000E2,6.016152671E1 +2.981940000E2,5.851705490E1 +2.984880000E2,6.506323043E1 +2.987430000E2,5.702053645E1 +2.990110000E2,4.890963733E1 +2.993040000E2,5.105737182E1 +2.995650000E2,4.950865545E1 +2.998150000E2,4.713536225E1 +3.000860000E2,6.170154569E1 +3.003780000E2,5.697995513E1 +3.006750000E2,6.496205179E1 +3.009180000E2,5.585602045E1 +3.012120000E2,5.317421587E1 +3.015130000E2,5.532213468E1 +3.017840000E2,5.371543715E1 +3.020520000E2,6.741141038E1 +3.023220000E2,6.638671809E1 +3.025730000E2,5.833940482E1 +3.028700000E2,6.272205104E1 +3.031230000E2,6.150676490E1 +3.034050000E2,6.571826996E1 +3.036710000E2,6.387001854E1 +3.039460000E2,5.704179120E1 +3.042380000E2,5.452420344E1 +3.044730000E2,6.911436343E1 +3.047670000E2,6.747337761E1 +3.050070000E2,6.642457947E1 +3.053010000E2,6.704052830E1 +3.055360000E2,6.335116163E1 +3.058350000E2,6.452879154E1 +3.061310000E2,6.588892290E1 +3.064460000E2,6.065604325E1 +3.066970000E2,5.884139521E1 +3.069890000E2,6.115548360E1 +3.072650000E2,5.474220631E1 +3.075290000E2,5.525228633E1 +3.077890000E2,5.546520153E1 +3.080280000E2,5.799541194E1 +3.083270000E2,5.467819740E1 +3.086250000E2,5.227747322E1 +3.089260000E2,5.802220937E1 +3.091970000E2,5.383690373E1 +3.095040000E2,5.794687305E1 +3.097810000E2,5.426386053E1 +3.100000000E2,5.745164866E1 +3.103300000E2,5.475501144E1 +3.106240000E2,5.154802151E1 +3.108750000E2,5.434380726E1 +3.111540000E2,5.533246388E1 +3.114150000E2,5.554218476E1 +3.116740000E2,5.375334275E1 +3.119200000E2,5.727216331E1 +3.121680000E2,5.235396651E1 +3.124720000E2,6.207307801E1 +3.127180000E2,6.488896117E1 +3.130530000E2,6.168970511E1 +3.133080000E2,6.010687101E1 +3.135950000E2,6.305386662E1 +3.138880000E2,6.214030252E1 +3.141410000E2,5.907513997E1 +3.143960000E2,6.064308138E1 +3.146480000E2,6.195321339E1 +3.148870000E2,6.088765310E1 +3.151830000E2,5.906360624E1 +3.154280000E2,5.864981040E1 +3.157360000E2,5.824424792E1 +3.159750000E2,5.826399021E1 +3.163740000E2,6.051726612E1 +3.166320000E2,6.011967909E1 +3.168940000E2,5.577110603E1 +3.172010000E2,5.372586587E1 +3.174460000E2,5.537091967E1 +3.176890000E2,5.504912063E1 +3.179320000E2,5.264203521E1 +3.182150000E2,5.344854544E1 +3.184600000E2,5.656777951E1 +3.187200000E2,5.398435402E1 +3.189820000E2,5.410695962E1 +3.192460000E2,5.344168860E1 +3.195780000E2,5.697626360E1 +3.198350000E2,6.073105615E1 +3.200880000E2,6.621432780E1 +3.203460000E2,6.597785722E1 +3.205980000E2,5.907542432E1 +3.208920000E2,5.702769809E1 +3.211760000E2,6.207459825E1 +3.214520000E2,5.921715282E1 +3.217010000E2,5.501368146E1 +3.220030000E2,5.927746858E1 +3.223090000E2,5.878714279E1 +3.226530000E2,6.209253703E1 +3.229180000E2,5.801419316E1 +3.231660000E2,6.150680788E1 +3.234110000E2,5.950436139E1 +3.236660000E2,5.694006868E1 +3.239890000E2,5.964691948E1 +3.242420000E2,6.322261269E1 +3.245070000E2,5.967413832E1 +3.247540000E2,5.743115651E1 +3.250010000E2,5.693057833E1 +3.252760000E2,5.076009335E1 +3.255600000E2,5.432440321E1 +3.258270000E2,5.728583073E1 +3.262160000E2,6.158050311E1 +3.264570000E2,5.788548067E1 +3.267330000E2,5.661485397E1 +3.270280000E2,5.698735139E1 +3.272870000E2,5.428158234E1 +3.275550000E2,5.401192370E1 +3.278320000E2,5.894424302E1 +3.281050000E2,5.279140275E1 +3.283850000E2,5.366788524E1 +3.286760000E2,5.569462346E1 +3.289750000E2,5.484501656E1 +3.292730000E2,5.654335493E1 +3.295550000E2,5.483429560E1 +3.298560000E2,5.516099131E1 +3.301720000E2,5.150081287E1 +3.304560000E2,5.126263973E1 +3.307930000E2,4.943715566E1 +3.310330000E2,5.297477083E1 +3.312800000E2,4.994759883E1 +3.316030000E2,5.283028939E1 +3.318860000E2,5.150402936E1 +3.321790000E2,5.777668868E1 +3.325470000E2,5.446937149E1 +3.328030000E2,5.754474494E1 +3.330410000E2,5.437750931E1 +3.333210000E2,5.378201308E1 +3.335760000E2,5.486825362E1 +3.338240000E2,5.338123539E1 +3.340700000E2,5.704649160E1 +3.343740000E2,5.576563429E1 +3.346640000E2,5.503590574E1 +3.349650000E2,5.539431503E1 +3.352080000E2,5.782097549E1 +3.355080000E2,5.260852375E1 +3.358690000E2,6.012616228E1 +3.361400000E2,5.534922411E1 +3.363810000E2,5.436765301E1 +3.366230000E2,5.007736554E1 +3.368850000E2,5.304270830E1 +3.371340000E2,5.106682022E1 +3.373960000E2,5.491262243E1 +3.376890000E2,5.891119644E1 +3.379320000E2,5.554676164E1 +3.382420000E2,5.491809401E1 +3.385700000E2,6.003743295E1 +3.389490000E2,5.964265847E1 +3.392140000E2,6.009419780E1 +3.394780000E2,5.950800538E1 +3.397810000E2,5.514081916E1 +3.400260000E2,5.654810222E1 +3.403230000E2,5.919098275E1 +3.405600000E2,5.937137097E1 +3.408650000E2,5.885711760E1 +3.411560000E2,6.122434193E1 +3.414060000E2,6.101494213E1 +3.416650000E2,5.685059098E1 +3.419710000E2,4.988163583E1 +3.423360000E2,5.097871962E1 +3.426300000E2,6.097968551E1 +3.429260000E2,5.246223058E1 +3.431760000E2,5.140448000E1 +3.434570000E2,5.162147831E1 +3.436910000E2,5.437509469E1 +3.439650000E2,5.588289675E1 +3.442010000E2,5.342482218E1 +3.444930000E2,5.621155564E1 +3.447310000E2,5.753713233E1 +3.450340000E2,5.873821374E1 +3.453240000E2,5.674648484E1 +3.455770000E2,5.843857274E1 +3.458770000E2,6.170678128E1 +3.461770000E2,5.848319050E1 +3.464240000E2,5.996271814E1 +3.467290000E2,5.583139448E1 +3.470000000E2,5.558324990E1 +3.472360000E2,5.638821787E1 +3.474880000E2,6.015129432E1 +3.477550000E2,6.074195357E1 +3.480530000E2,6.258101891E1 +3.483260000E2,6.280209300E1 +3.486840000E2,5.935598721E1 +3.489370000E2,6.423635683E1 +3.492060000E2,7.026891453E1 +3.495130000E2,5.477771858E1 +3.498240000E2,6.143080763E1 +3.500700000E2,6.077206860E1 +3.503130000E2,5.816670512E1 +3.506030000E2,6.220374728E1 +3.509040000E2,6.435510927E1 +3.511560000E2,6.387906049E1 +3.514240000E2,6.324188625E1 +3.517710000E2,6.217871174E1 +3.520510000E2,6.349767138E1 +3.523000000E2,5.947763114E1 +3.525840000E2,5.623947938E1 +3.528810000E2,5.940245648E1 +3.531830000E2,5.323006485E1 +3.534790000E2,4.756673680E1 +3.537830000E2,5.761743216E1 +3.540870000E2,5.701856444E1 +3.543720000E2,5.507707077E1 +3.546320000E2,5.561457107E1 +3.549330000E2,6.036785424E1 +3.552860000E2,5.818319920E1 +3.555390000E2,5.636477080E1 +3.557840000E2,5.686236286E1 +3.560330000E2,6.137502104E1 +3.563290000E2,6.039421004E1 +3.565710000E2,5.873926214E1 +3.568160000E2,5.984737812E1 +3.570890000E2,5.898549785E1 +3.573200000E2,5.804358229E1 +3.576080000E2,5.178825198E1 +3.578380000E2,5.333798630E1 +3.581470000E2,5.663121054E1 +3.584860000E2,5.705169894E1 +3.587470000E2,5.488627438E1 +3.590020000E2,5.493171173E1 +3.592590000E2,5.280801534E1 +3.595110000E2,5.919356657E1 +3.597710000E2,6.061921525E1 +3.600770000E2,5.781838960E1 +3.603810000E2,5.824405535E1 +3.606410000E2,5.734273072E1 +3.608930000E2,5.860073318E1 +3.611440000E2,5.158577335E1 +3.614110000E2,5.569804167E1 +3.617550000E2,5.732029627E1 +3.620530000E2,5.599725951E1 +3.623260000E2,5.427140428E1 +3.625700000E2,5.439119305E1 +3.628680000E2,5.768088704E1 +3.631160000E2,5.322266305E1 +3.634170000E2,5.611257515E1 +3.637150000E2,5.466283243E1 +3.639540000E2,5.648497192E1 +3.642520000E2,5.982456496E1 +3.644910000E2,5.683499776E1 +3.648080000E2,5.424977228E1 +3.650550000E2,5.261749952E1 +3.653010000E2,5.976464589E1 +3.655400000E2,5.630627545E1 +3.658370000E2,5.855663855E1 +3.660660000E2,5.839517218E1 +3.663050000E2,5.701336937E1 +3.666100000E2,6.057417753E1 +3.668530000E2,5.660058929E1 +3.671060000E2,5.360906173E1 +3.673270000E2,5.766761713E1 +3.676020000E2,5.473947199E1 +3.679270000E2,5.730791892E1 +3.681990000E2,5.368134624E1 +3.685210000E2,5.122725302E1 +3.688180000E2,5.413949330E1 +3.690720000E2,5.953240184E1 +3.693650000E2,5.834363401E1 +3.696110000E2,4.952962201E1 +3.698620000E2,6.082605721E1 +3.701240000E2,5.541205242E1 +3.703840000E2,5.595936781E1 +3.706570000E2,5.751180267E1 +3.709050000E2,5.510413826E1 +3.712530000E2,5.236304209E1 +3.715330000E2,5.429686706E1 +3.717680000E2,5.365135821E1 +3.720680000E2,5.442146139E1 +3.723070000E2,5.193301537E1 +3.726070000E2,5.573089397E1 +3.728540000E2,5.084704353E1 +3.731070000E2,5.244752708E1 +3.734250000E2,5.501438711E1 +3.737160000E2,5.701937821E1 +3.739830000E2,5.913008265E1 +3.743030000E2,6.329763996E1 +3.745490000E2,5.828010903E1 +3.748110000E2,5.514928454E1 +3.750560000E2,5.535724603E1 +3.753250000E2,6.062318511E1 +3.756820000E2,5.853801057E1 +3.759720000E2,6.218740595E1 +3.762560000E2,6.130322227E1 +3.764780000E2,5.705598438E1 +3.767430000E2,5.675025411E1 +3.770350000E2,5.562309411E1 +3.773330000E2,6.171478403E1 +3.776660000E2,5.752069737E1 +3.779640000E2,5.869913239E1 +3.782130000E2,5.802158707E1 +3.785030000E2,5.920699755E1 +3.787580000E2,5.984700757E1 +3.790120000E2,5.874214142E1 +3.792820000E2,5.792329599E1 +3.795460000E2,6.240429581E1 +3.798520000E2,5.924961400E1 +3.800960000E2,5.655548581E1 +3.803510000E2,5.997047167E1 +3.806590000E2,5.894207932E1 +3.810310000E2,5.556916558E1 +3.813250000E2,5.709965860E1 +3.815810000E2,5.724657649E1 +3.818690000E2,5.634885250E1 +3.821660000E2,5.381597934E1 +3.824070000E2,5.409431797E1 +3.827020000E2,5.558304395E1 +3.829400000E2,5.836087965E1 +3.832380000E2,5.621848827E1 +3.834740000E2,5.756105430E1 +3.837670000E2,5.972981317E1 +3.840620000E2,6.110722903E1 +3.842970000E2,6.011338906E1 +3.846120000E2,6.632548976E1 +3.849300000E2,5.632542095E1 +3.852340000E2,5.660090160E1 +3.854760000E2,5.637042997E1 +3.857700000E2,6.483820819E1 +3.860160000E2,6.294386681E1 +3.862760000E2,6.248693097E1 +3.865740000E2,5.966646580E1 +3.868130000E2,5.884596060E1 +3.871230000E2,6.069045984E1 +3.874660000E2,5.535227762E1 +3.877260000E2,5.453589064E1 +3.879920000E2,5.803286513E1 +3.882920000E2,6.338575111E1 +3.885370000E2,6.297665471E1 +3.888380000E2,6.078963895E1 +3.890870000E2,6.078711186E1 +3.893350000E2,5.918580133E1 +3.896040000E2,5.645003340E1 +3.899070000E2,5.868887980E1 +3.901560000E2,5.816727924E1 +3.904840000E2,5.908711574E1 +3.907830000E2,5.165109059E1 +3.910410000E2,5.747977046E1 +3.913230000E2,5.600926578E1 +3.916170000E2,5.743239537E1 +3.918580000E2,5.999528635E1 +3.921650000E2,5.924448814E1 +3.924670000E2,6.347749271E1 +3.927590000E2,6.285842009E1 +3.929960000E2,6.439104552E1 +3.933010000E2,6.092208558E1 +3.935450000E2,5.889760176E1 +3.939100000E2,5.798312040E1 +3.941770000E2,5.909426563E1 +3.944250000E2,5.971090911E1 +3.946810000E2,5.379436409E1 +3.949270000E2,5.134339741E1 +3.951700000E2,5.739586279E1 +3.954270000E2,5.255911571E1 +3.956850000E2,5.149310319E1 +3.959500000E2,5.723685944E1 +3.962270000E2,5.622087783E1 +3.964720000E2,6.119098643E1 +3.967310000E2,6.249797436E1 +3.970320000E2,5.838309249E1 +3.973440000E2,5.720898847E1 +3.976100000E2,5.357982700E1 +3.978600000E2,5.091452983E1 +3.981070000E2,4.781274510E1 +3.983520000E2,4.684320786E1 +3.986530000E2,4.867937405E1 +3.988970000E2,4.947454895E1 +3.991740000E2,4.941937240E1 +3.994180000E2,5.206925818E1 +3.997200000E2,5.099596962E1 +3.999720000E2,5.059119317E1 +4.002350000E2,4.980275756E1 +4.004940000E2,5.514017077E1 +4.008060000E2,5.354499430E1 +4.011150000E2,5.377825353E1 +4.013980000E2,5.657928040E1 +4.016460000E2,6.437756844E1 +4.019070000E2,6.072529486E1 +4.021970000E2,5.876291143E1 +4.024430000E2,6.118567430E1 +4.027460000E2,5.925186578E1 +4.030590000E2,5.727531678E1 +4.033610000E2,6.211123432E1 +4.036680000E2,6.041950332E1 +4.039230000E2,6.161200416E1 +4.041780000E2,6.047480336E1 +4.044620000E2,5.905442986E1 +4.047060000E2,5.729915709E1 +4.049630000E2,6.020933408E1 +4.052500000E2,5.845152603E1 +4.055600000E2,5.814304967E1 +4.058210000E2,5.866194002E1 +4.060640000E2,5.736420578E1 +4.063180000E2,6.107395805E1 +4.065790000E2,5.985269852E1 +4.069480000E2,5.745859610E1 +4.072050000E2,5.693680110E1 +4.074960000E2,6.165201185E1 +4.077470000E2,6.131132241E1 +4.079970000E2,5.824414723E1 +4.083050000E2,5.958451387E1 +4.085600000E2,5.739792126E1 +4.088150000E2,5.573389816E1 +4.090850000E2,5.530698039E1 +4.093810000E2,5.634371531E1 +4.096660000E2,5.880658089E1 +4.099920000E2,5.804298004E1 +4.102870000E2,5.688352401E1 +4.106310000E2,5.573115839E1 +4.109280000E2,5.368053116E1 +4.112180000E2,5.474384188E1 +4.114650000E2,5.380195893E1 +4.117660000E2,5.718608674E1 +4.120140000E2,5.703743686E1 +4.122910000E2,5.985228158E1 +4.125620000E2,6.278694860E1 +4.128210000E2,5.839550633E1 +4.130600000E2,6.029373556E1 +4.133710000E2,5.711050636E1 +4.136150000E2,5.200468588E1 +4.138820000E2,5.769230508E1 +4.141370000E2,5.333759168E1 +4.143860000E2,5.632377961E1 +4.146570000E2,5.647744894E1 +4.149040000E2,5.667945226E1 +4.151840000E2,5.669404445E1 +4.154420000E2,6.072374556E1 +4.157420000E2,5.606444578E1 +4.159850000E2,5.623596320E1 +4.162830000E2,5.264542492E1 +4.165340000E2,5.359803767E1 +4.168600000E2,5.691340897E1 +4.171060000E2,5.636326143E1 +4.173490000E2,6.276141082E1 +4.176080000E2,6.197471417E1 +4.178580000E2,5.777170976E1 +4.181050000E2,5.407671770E1 +4.183760000E2,4.795453020E1 +4.186580000E2,5.871005652E1 +4.188870000E2,6.069158080E1 +4.191320000E2,6.112379328E1 +4.193750000E2,5.584116633E1 +4.196280000E2,6.302854070E1 +4.199610000E2,6.640457067E1 +4.202240000E2,6.337314603E1 +4.205160000E2,5.904470105E1 +4.208200000E2,5.799078909E1 +4.210810000E2,5.975635789E1 +4.213260000E2,6.334088587E1 +4.215900000E2,5.849627934E1 +4.218550000E2,5.894070219E1 +4.221030000E2,5.961371776E1 +4.223550000E2,5.281830949E1 +4.225970000E2,4.892580508E1 +4.229130000E2,5.950646935E1 +4.232610000E2,6.303011111E1 +4.235630000E2,6.030515180E1 +4.238060000E2,5.832387195E1 +4.240560000E2,6.126571743E1 +4.243280000E2,5.961805347E1 +4.245710000E2,5.916464366E1 +4.248300000E2,6.404431780E1 +4.251020000E2,6.161392817E1 +4.253630000E2,6.303875005E1 +4.256110000E2,6.294329578E1 +4.258560000E2,6.495739223E1 +4.261620000E2,6.352748415E1 +4.265140000E2,6.360144813E1 +4.267650000E2,6.320185268E1 +4.270250000E2,6.598206760E1 +4.272910000E2,5.736158392E1 +4.275300000E2,5.632655800E1 +4.277760000E2,5.626186588E1 +4.280650000E2,5.992298879E1 +4.283460000E2,5.976814640E1 +4.285960000E2,5.617047451E1 +4.288540000E2,5.410240194E1 +4.291290000E2,5.524345530E1 +4.293550000E2,5.025485629E1 +4.297050000E2,5.094849624E1 +4.299600000E2,5.349595208E1 +4.302230000E2,5.668766668E1 +4.304690000E2,5.470073040E1 +4.307330000E2,5.808421323E1 +4.310240000E2,5.815977776E1 +4.312740000E2,5.751031291E1 +4.315190000E2,6.045600028E1 +4.318300000E2,5.967896339E1 +4.320980000E2,5.746835753E1 +4.324020000E2,5.874054152E1 +4.327010000E2,5.770096959E1 +4.330460000E2,5.851412717E1 +4.333220000E2,5.970473393E1 +4.335930000E2,6.024030776E1 +4.338530000E2,5.564089573E1 +4.341340000E2,5.328000065E1 +4.343790000E2,5.522789934E1 +4.346930000E2,5.271905966E1 +4.349910000E2,5.685384424E1 +4.352400000E2,5.751176106E1 +4.355350000E2,5.654290580E1 +4.357760000E2,5.976937629E1 +4.360780000E2,5.445311615E1 +4.363520000E2,5.460006243E1 +4.366010000E2,5.402958946E1 +4.369120000E2,5.611325616E1 +4.371660000E2,5.675575065E1 +4.374120000E2,5.605818704E1 +4.377070000E2,5.614720111E1 +4.379470000E2,5.596280974E1 +4.382450000E2,5.764305460E1 +4.384820000E2,6.015340826E1 +4.387240000E2,6.073594369E1 +4.390310000E2,5.846982437E1 +4.393110000E2,5.837342754E1 +4.396160000E2,5.758988397E1 +4.398810000E2,5.375393273E1 +4.401700000E2,5.590416510E1 +4.404180000E2,5.649267014E1 +4.406570000E2,5.809884175E1 +4.409200000E2,5.934788425E1 +4.411750000E2,5.883690392E1 +4.414270000E2,5.465512306E1 +4.416780000E2,5.456039720E1 +4.419260000E2,6.053551690E1 +4.422020000E2,5.446896121E1 +4.425270000E2,5.304300238E1 +4.428480000E2,5.413537656E1 +4.431230000E2,5.590535088E1 +4.433740000E2,5.516889265E1 +4.436180000E2,5.375803139E1 +4.439250000E2,5.440731706E1 +4.441670000E2,5.378894171E1 +4.444170000E2,5.676009311E1 +4.447160000E2,5.433224316E1 +4.449620000E2,5.431777666E1 +4.452100000E2,5.220353562E1 +4.454560000E2,5.525232641E1 +4.456950000E2,5.348687858E1 +4.459900000E2,5.571408478E1 +4.462320000E2,5.590054486E1 +4.464840000E2,5.627503595E1 +4.467390000E2,5.824548232E1 +4.469910000E2,5.637049423E1 +4.472460000E2,5.754096885E1 +4.474930000E2,5.335865942E1 +4.477890000E2,5.765888938E1 +4.480780000E2,6.102087464E1 +4.483520000E2,6.006145593E1 +4.486510000E2,5.685958774E1 +4.489610000E2,5.748149351E1 +4.492370000E2,5.709623916E1 +4.495040000E2,5.821496279E1 +4.497570000E2,5.970222946E1 +4.500030000E2,5.750976802E1 +4.502380000E2,5.796549321E1 +4.505370000E2,5.665777454E1 +4.508330000E2,5.605038109E1 +4.510750000E2,5.504306522E1 +4.513230000E2,5.112487870E1 +4.515900000E2,5.559150914E1 +4.518300000E2,5.656933458E1 +4.520810000E2,6.082180135E1 +4.524470000E2,5.774965281E1 +4.527120000E2,5.847728207E1 +4.529730000E2,5.711434047E1 +4.532810000E2,5.503285278E1 +4.535670000E2,5.614330822E1 +4.538610000E2,6.211492489E1 +4.541040000E2,6.003078695E1 +4.543760000E2,5.766611466E1 +4.546280000E2,5.912518267E1 +4.549300000E2,5.969489895E1 +4.551760000E2,5.509558621E1 +4.554320000E2,5.963291683E1 +4.556950000E2,6.194656842E1 +4.559980000E2,6.032793642E1 +4.562390000E2,5.874022110E1 +4.565060000E2,6.016749735E1 +4.567480000E2,5.985596964E1 +4.570070000E2,5.588678859E1 +4.572660000E2,5.541792762E1 +4.575660000E2,4.969164404E1 +4.578050000E2,4.976271573E1 +4.581060000E2,5.634137812E1 +4.583500000E2,5.321783082E1 +4.586280000E2,5.816393976E1 +4.588870000E2,5.817726916E1 +4.591860000E2,5.398220140E1 +4.594690000E2,5.572842498E1 +4.597270000E2,5.759574297E1 +4.600290000E2,5.492384706E1 +4.602790000E2,5.570826682E1 +4.605780000E2,5.619496661E1 +4.608690000E2,5.993990435E1 +4.611730000E2,6.185390750E1 +4.614300000E2,6.125031183E1 +4.617390000E2,6.047450440E1 +4.621070000E2,5.913093195E1 +4.623500000E2,6.032535990E1 +4.626490000E2,5.803726699E1 +4.628910000E2,5.968748294E1 +4.631850000E2,5.792594347E1 +4.634330000E2,5.623910190E1 +4.636850000E2,6.026318401E1 +4.639240000E2,6.002593060E1 +4.641990000E2,5.694813724E1 +4.644200000E2,5.456998819E1 +4.646660000E2,5.683591124E1 +4.649070000E2,5.893829862E1 +4.652630000E2,5.637983039E1 +4.655160000E2,5.571226470E1 +4.657720000E2,5.582065666E1 +4.660510000E2,5.436378979E1 +4.663550000E2,5.697364508E1 +4.666350000E2,5.716664070E1 +4.668800000E2,6.098104772E1 +4.671260000E2,5.932872997E1 +4.673960000E2,5.573089336E1 +4.676430000E2,5.791664461E1 +4.678890000E2,5.589855895E1 +4.681490000E2,6.359324433E1 +4.685010000E2,5.902079393E1 +4.687870000E2,6.085500324E1 +4.690180000E2,6.401116813E1 +4.693190000E2,6.157634911E1 +4.695830000E2,6.068297160E1 +4.698370000E2,5.867738322E1 +4.701080000E2,6.069776659E1 +4.703530000E2,5.904983802E1 +4.706060000E2,5.642725313E1 +4.708480000E2,5.600286970E1 +4.711080000E2,5.678564623E1 +4.714020000E2,5.139543439E1 +4.717220000E2,5.924511995E1 +4.720300000E2,5.309180697E1 +4.722790000E2,5.295961103E1 +4.725820000E2,5.448425692E1 +4.728350000E2,5.346047841E1 +4.731210000E2,5.563518239E1 +4.733630000E2,5.630991562E1 +4.736070000E2,5.519344442E1 +4.738520000E2,5.696356709E1 +4.741150000E2,5.721588368E1 +4.743810000E2,5.556082681E1 +4.746430000E2,5.453201409E1 +4.749610000E2,5.621559396E1 +4.752460000E2,6.170975330E1 +4.755640000E2,6.352753975E1 +4.758660000E2,5.818774343E1 +4.761780000E2,6.177058435E1 +4.764630000E2,5.829511769E1 +4.766910000E2,5.658732029E1 +4.769520000E2,6.006113158E1 +4.772530000E2,6.022385702E1 +4.775200000E2,5.965858240E1 +4.778410000E2,5.970326758E1 +4.780960000E2,5.911597661E1 +4.783440000E2,5.656338446E1 +4.786020000E2,5.723922467E1 +4.788680000E2,5.700163516E1 +4.791490000E2,6.083416080E1 +4.794510000E2,5.899425763E1 +4.797630000E2,5.820674449E1 +4.800620000E2,5.648898879E1 +4.803380000E2,5.465743937E1 +4.806090000E2,5.006847009E1 +4.809050000E2,5.870050130E1 +4.811580000E2,5.878066343E1 +4.814060000E2,5.929414686E1 +4.817070000E2,5.758425183E1 +4.819760000E2,5.151398214E1 +4.822410000E2,5.772956896E1 +4.824880000E2,5.913153701E1 +4.827710000E2,5.814746383E1 +4.830140000E2,6.018356701E1 +4.832870000E2,5.985078792E1 +4.835070000E2,6.081307149E1 +4.837500000E2,5.810932132E1 +4.840440000E2,5.700769218E1 +4.842880000E2,5.815119989E1 +4.845920000E2,5.595850943E1 +4.849330000E2,5.891167795E1 +4.851960000E2,5.413833723E1 +4.854760000E2,6.184122004E1 +4.857700000E2,6.074653742E1 +4.860130000E2,6.033024099E1 +4.862530000E2,5.218562994E1 +4.865560000E2,5.902882093E1 +4.868150000E2,6.397338635E1 +4.870790000E2,6.543155406E1 +4.873440000E2,6.181389827E1 +4.876070000E2,6.381240883E1 +4.878770000E2,6.121521197E1 +4.882210000E2,5.780293585E1 +4.884640000E2,5.941826112E1 +4.887100000E2,6.118399944E1 +4.889830000E2,6.000089150E1 +4.892940000E2,5.873163787E1 +4.895350000E2,5.943116280E1 +4.897770000E2,5.867927357E1 +4.900230000E2,6.190584219E1 +4.903270000E2,6.313044892E1 +4.905550000E2,6.096660510E1 +4.907970000E2,5.773464228E1 +4.911090000E2,5.720144266E1 +4.914750000E2,5.797465536E1 +4.917410000E2,6.063197812E1 +4.920040000E2,5.799562897E1 +4.922950000E2,5.391853563E1 +4.925940000E2,6.053973121E1 +4.928320000E2,5.781822977E1 +4.931250000E2,6.541242849E1 +4.933660000E2,6.151252976E1 +4.936620000E2,5.962569242E1 +4.939140000E2,6.114162989E1 +4.941750000E2,6.074296596E1 +4.944160000E2,5.738425867E1 +4.947510000E2,6.084173002E1 +4.950140000E2,5.911448476E1 +4.953100000E2,6.076832164E1 +4.955530000E2,6.357047625E1 +4.958480000E2,6.344590866E1 +4.960850000E2,6.154350148E1 +4.963870000E2,5.815666478E1 +4.966770000E2,5.862350251E1 +4.969720000E2,5.162851816E1 +4.972640000E2,5.887916548E1 +4.975020000E2,6.130693279E1 +4.977480000E2,6.164914583E1 +4.980300000E2,5.689153252E1 +4.983240000E2,6.054571109E1 +4.985610000E2,5.779234792E1 +4.987980000E2,6.281334084E1 +4.991290000E2,6.074883772E1 +4.994230000E2,6.344972933E1 +4.996620000E2,6.040546490E1 +4.999570000E2,6.143019571E1 +5.002020000E2,6.117826214E1 +5.004980000E2,6.217883653E1 +5.007380000E2,6.294102819E1 +5.010930000E2,6.516475449E1 +5.013550000E2,6.119184016E1 +5.016670000E2,6.096554209E1 +5.019390000E2,6.197647057E1 +5.022530000E2,6.186754720E1 +5.025630000E2,5.954982776E1 +5.028510000E2,6.115486405E1 +5.031440000E2,6.348254173E1 +5.033820000E2,5.960570527E1 +5.036780000E2,5.977682583E1 +5.039180000E2,5.709696054E1 +5.042580000E2,6.265263203E1 +5.045140000E2,6.166583393E1 +5.047590000E2,6.184451596E1 +5.050170000E2,6.196658471E1 +5.053150000E2,6.014630927E1 +5.055610000E2,6.055201466E1 +5.058690000E2,6.189129858E1 +5.062120000E2,6.557808579E1 +5.064770000E2,6.080176744E1 +5.067370000E2,6.164107472E1 +5.069870000E2,6.497302078E1 +5.072490000E2,6.320126990E1 +5.076210000E2,6.073801439E1 +5.078780000E2,5.612097300E1 +5.081420000E2,5.978501024E1 +5.084360000E2,6.061444996E1 +5.086860000E2,6.272142993E1 +5.089270000E2,6.250458760E1 +5.092250000E2,5.860749180E1 +5.094720000E2,6.368373725E1 +5.097760000E2,6.005985592E1 +5.100780000E2,5.959557057E1 +5.103410000E2,6.085764000E1 +5.106360000E2,6.210563273E1 +5.109960000E2,6.125336704E1 +5.112590000E2,5.627814405E1 +5.115470000E2,6.253958528E1 +5.118480000E2,6.261683940E1 +5.120990000E2,5.782347554E1 +5.123560000E2,6.181201679E1 +5.126370000E2,6.425542150E1 +5.129400000E2,6.148973489E1 +5.132300000E2,6.230215374E1 +5.134720000E2,6.332855968E1 +5.137620000E2,5.875203916E1 +5.140950000E2,6.043073123E1 +5.143340000E2,5.829778385E1 +5.146280000E2,6.530539120E1 +5.148660000E2,5.725439078E1 +5.151580000E2,6.255661351E1 +5.153960000E2,6.412193683E1 +5.156410000E2,6.315775814E1 +5.158840000E2,6.025521775E1 +5.161460000E2,5.892698587E1 +5.164080000E2,5.956507822E1 +5.166610000E2,6.162757540E1 +5.169960000E2,6.009082976E1 +5.173360000E2,5.999682475E1 +5.176380000E2,6.121463264E1 +5.178750000E2,5.929809726E1 +5.181460000E2,5.746668369E1 +5.183810000E2,5.919113180E1 +5.186360000E2,5.827917213E1 +5.189280000E2,5.902314388E1 +5.192310000E2,6.116063950E1 +5.195310000E2,6.026149556E1 +5.198180000E2,5.851929656E1 +5.200920000E2,5.750929671E1 +5.204160000E2,5.729942637E1 +5.207470000E2,5.472104161E1 +5.210390000E2,6.169397748E1 +5.213450000E2,6.081589597E1 +5.216480000E2,6.278728872E1 +5.219550000E2,6.266319096E1 +5.222160000E2,6.478840582E1 +5.224820000E2,6.255888661E1 +5.227330000E2,6.119451713E1 +5.229970000E2,6.244953097E1 +5.232800000E2,6.000703556E1 +5.236020000E2,5.885323025E1 +5.239510000E2,5.826073845E1 +5.242570000E2,5.807287072E1 +5.245200000E2,5.931641295E1 +5.247800000E2,5.775994158E1 +5.250310000E2,6.167249992E1 +5.253010000E2,6.027694641E1 +5.255430000E2,6.329659774E1 +5.258240000E2,6.254377160E1 +5.261330000E2,6.489975363E1 +5.263840000E2,5.999325642E1 +5.266440000E2,5.885077446E1 +5.268920000E2,6.439829299E1 +5.272450000E2,6.165608373E1 +5.275110000E2,5.418048629E1 +5.277700000E2,5.656005066E1 +5.280170000E2,6.215252288E1 +5.283170000E2,5.743407158E1 +5.285650000E2,5.831214783E1 +5.288200000E2,6.066735547E1 +5.290820000E2,5.994603081E1 +5.293240000E2,5.951550591E1 +5.295810000E2,6.264700953E1 +5.298380000E2,5.736628274E1 +5.301360000E2,5.590406638E1 +5.304530000E2,6.041033291E1 +5.307000000E2,5.968691140E1 +5.309950000E2,5.730835182E1 +5.312390000E2,5.823026311E1 +5.315470000E2,5.871167442E1 +5.318430000E2,5.990765833E1 +5.321400000E2,6.387020611E1 +5.324510000E2,6.077699448E1 +5.326980000E2,5.895294298E1 +5.329820000E2,6.041997988E1 +5.333050000E2,5.806877757E1 +5.336110000E2,5.682362418E1 +5.340220000E2,5.915478638E1 +5.342790000E2,6.110946170E1 +5.345430000E2,5.735857105E1 +5.348060000E2,5.684014045E1 +5.350480000E2,6.043627860E1 +5.353500000E2,5.982929159E1 +5.356290000E2,5.986217314E1 +5.358770000E2,5.677131614E1 +5.361310000E2,5.763848566E1 +5.363810000E2,6.142463983E1 +5.366730000E2,5.634211854E1 +5.369290000E2,5.547608220E1 +5.372430000E2,5.920768747E1 +5.375170000E2,6.113406656E1 +5.377700000E2,6.208964505E1 +5.380710000E2,6.100572025E1 +5.383260000E2,6.352283467E1 +5.386320000E2,5.898993907E1 +5.389570000E2,5.503782412E1 +5.392560000E2,5.663453376E1 +5.395360000E2,6.406828344E1 +5.398060000E2,5.890955595E1 +5.400700000E2,6.046868424E1 +5.403380000E2,5.979639772E1 +5.406170000E2,5.838685694E1 +5.409120000E2,5.933573087E1 +5.411500000E2,5.970536072E1 +5.414430000E2,5.461931777E1 +5.417380000E2,5.891969668E1 +5.419780000E2,6.086182172E1 +5.422730000E2,5.706230292E1 +5.425150000E2,6.002937875E1 +5.428150000E2,5.733734968E1 +5.430520000E2,5.791730719E1 +5.433430000E2,5.451667439E1 +5.436740000E2,5.601232928E1 +5.439430000E2,6.067749331E1 +5.441960000E2,6.044443396E1 +5.445120000E2,6.332642539E1 +5.448320000E2,6.369907597E1 +5.451010000E2,6.327412880E1 +5.453640000E2,6.380509737E1 +5.456090000E2,6.199528902E1 +5.458550000E2,5.905332967E1 +5.461530000E2,5.748064798E1 +5.463920000E2,5.793139247E1 +5.466900000E2,5.931551966E1 +5.470480000E2,6.345498755E1 +5.473610000E2,5.881486603E1 +5.476220000E2,5.928200098E1 +5.478810000E2,5.577309321E1 +5.481470000E2,5.875325885E1 +5.483980000E2,6.007409743E1 +5.486490000E2,6.070612531E1 +5.488940000E2,5.934549940E1 +5.491520000E2,6.170511636E1 +5.494020000E2,6.376886521E1 +5.497010000E2,6.406587518E1 +5.499360000E2,6.365684538E1 +5.503130000E2,6.009406633E1 +5.505850000E2,6.014270409E1 +5.508500000E2,5.879153887E1 +5.511470000E2,5.883782525E1 +5.513760000E2,5.773432280E1 +5.516350000E2,5.966648889E1 +5.518940000E2,5.472606108E1 +5.521930000E2,5.682429497E1 +5.524670000E2,5.619181968E1 +5.527770000E2,5.997719307E1 +5.530460000E2,5.879335465E1 +5.533410000E2,5.983416170E1 +5.537120000E2,5.957041909E1 +5.539420000E2,5.952828793E1 +5.542510000E2,5.971645274E1 +5.545000000E2,6.419337448E1 +5.547730000E2,6.634363344E1 +5.550770000E2,6.285856457E1 +5.553760000E2,5.654671197E1 +5.556440000E2,5.530754918E1 +5.558640000E2,5.889159880E1 +5.561110000E2,6.213947417E1 +5.563520000E2,6.860243311E1 +5.566480000E2,6.647018679E1 +5.569110000E2,6.420604516E1 +5.571650000E2,6.703462967E1 +5.574140000E2,6.648783593E1 +5.576540000E2,6.634001782E1 +5.579350000E2,6.293734135E1 +5.581770000E2,6.205918741E1 +5.584760000E2,5.247262167E1 +5.587220000E2,5.338734169E1 +5.589670000E2,5.662276325E1 +5.592110000E2,5.533465633E1 +5.595080000E2,5.854271946E1 +5.597740000E2,5.660649413E1 +5.600260000E2,6.333844075E1 +5.602860000E2,6.255943536E1 +5.605830000E2,5.392304486E1 +5.608700000E2,5.760897506E1 +5.611660000E2,5.713086887E1 +5.614070000E2,5.720157535E1 +5.617060000E2,5.026592539E1 +5.619510000E2,5.140995344E1 +5.621950000E2,5.663266073E1 +5.624370000E2,5.202695689E1 +5.627360000E2,6.084568668E1 +5.630550000E2,6.179643015E1 +5.632960000E2,5.833759539E1 +5.635420000E2,5.518782498E1 +5.638400000E2,6.578433315E1 +5.640880000E2,5.706187099E1 +5.643850000E2,5.456571992E1 +5.646300000E2,5.536479424E1 +5.649270000E2,5.930541070E1 +5.651540000E2,6.023199994E1 +5.653960000E2,5.612469871E1 +5.656980000E2,5.462007842E1 +5.659410000E2,5.278259804E1 +5.662890000E2,6.064478329E1 +5.666290000E2,5.682964802E1 +5.669030000E2,5.787828261E1 +5.671980000E2,5.712595091E1 +5.674890000E2,5.729764361E1 +5.677450000E2,5.241850056E1 +5.679980000E2,5.377155525E1 +5.682380000E2,5.485418547E1 +5.684830000E2,5.503746434E1 +5.687810000E2,5.398954643E1 +5.690230000E2,5.401913169E1 +5.693270000E2,5.953896215E1 +5.695680000E2,5.626247467E1 +5.698640000E2,6.040491706E1 +5.701050000E2,5.781813181E1 +5.703620000E2,5.733744349E1 +5.706600000E2,5.669032177E1 +5.709140000E2,5.453731954E1 +5.711580000E2,6.235364316E1 +5.714280000E2,5.958044055E1 +5.716860000E2,5.875696014E1 +5.719750000E2,5.570465139E1 +5.722310000E2,4.865236791E1 +5.725580000E2,5.257975627E1 +5.727900000E2,4.975389893E1 +5.730890000E2,5.658508958E1 +5.733660000E2,5.542284648E1 +5.735960000E2,5.536199936E1 +5.738990000E2,5.813474916E1 +5.741540000E2,5.417788207E1 +5.744370000E2,5.704170918E1 +5.746710000E2,5.736828455E1 +5.749280000E2,5.450874678E1 +5.751790000E2,5.610950442E1 +5.754890000E2,5.919887582E1 +5.758690000E2,5.780639378E1 +5.761700000E2,5.709220641E1 +5.764190000E2,5.815359781E1 +5.767060000E2,5.734155824E1 +5.769500000E2,5.925323086E1 +5.772430000E2,6.084767221E1 +5.775370000E2,5.852024889E1 +5.777780000E2,5.822649765E1 +5.780770000E2,5.829089322E1 +5.783770000E2,5.915481192E1 +5.786460000E2,5.996430642E1 +5.789780000E2,6.016421415E1 +5.792520000E2,6.221052482E1 +5.795090000E2,5.533993101E1 +5.798230000E2,6.537257407E1 +5.801220000E2,6.068836920E1 +5.803770000E2,5.728273812E1 +5.806510000E2,5.648369901E1 +5.809070000E2,5.397363349E1 +5.811690000E2,5.755294689E1 +5.814510000E2,5.957149991E1 +5.816900000E2,5.963092636E1 +5.820650000E2,6.778811076E1 +5.823240000E2,6.247529404E1 +5.825840000E2,6.073516327E1 +5.828380000E2,6.039356998E1 +5.830970000E2,5.764504824E1 +5.833990000E2,6.041396176E1 +5.836470000E2,6.355942860E1 +5.838990000E2,5.785560268E1 +5.841390000E2,6.060017525E1 +5.844440000E2,6.032069521E1 +5.847010000E2,5.760371100E1 +5.849440000E2,5.491620812E1 +5.851990000E2,5.957978671E1 +5.855370000E2,6.103184032E1 +5.857970000E2,5.896875350E1 +5.861120000E2,6.008190546E1 +5.863990000E2,5.687378544E1 +5.866450000E2,5.874294643E1 +5.869410000E2,5.870806017E1 +5.871860000E2,5.809143232E1 +5.874740000E2,5.847828699E1 +5.877850000E2,5.846232778E1 +5.880500000E2,5.755876921E1 +5.883650000E2,5.609032758E1 +5.887050000E2,5.685283394E1 +5.889730000E2,5.945975832E1 +5.892710000E2,6.114741701E1 +5.895110000E2,6.316132147E1 +5.898100000E2,6.715155367E1 +5.900480000E2,6.367866992E1 +5.903470000E2,5.131949120E1 +5.905900000E2,5.646494575E1 +5.908880000E2,6.096218752E1 +5.911270000E2,6.089171796E1 +5.913720000E2,6.319522071E1 +5.916410000E2,6.016553529E1 +5.920560000E2,5.915189166E1 +5.923330000E2,5.776862186E1 +5.925640000E2,5.840366445E1 +5.927890000E2,5.978914182E1 +5.930440000E2,6.058699711E1 +5.932650000E2,6.012895387E1 +5.935140000E2,6.295025578E1 +5.937520000E2,6.280196012E1 +5.940110000E2,6.194014009E1 +5.943340000E2,6.483906300E1 +5.945870000E2,5.918257578E1 +5.948380000E2,5.620333930E1 +5.951900000E2,6.323403421E1 +5.954240000E2,6.183177681E1 +5.956620000E2,6.120300936E1 +5.959650000E2,5.836925111E1 +5.961890000E2,6.106023171E1 +5.964920000E2,6.153658324E1 +5.967310000E2,6.490772593E1 +5.969960000E2,6.274228676E1 +5.972520000E2,6.139008510E1 +5.975050000E2,6.281232833E1 +5.978180000E2,6.254982632E1 +5.980890000E2,6.205794184E1 +5.983900000E2,6.438771503E1 +5.986230000E2,6.052772463E1 +5.988520000E2,6.375966703E1 +5.991380000E2,5.869985301E1 +5.993860000E2,6.050357712E1 +5.996630000E2,5.547835745E1 +5.999280000E2,5.400421666E1 +6.001960000E2,5.668252186E1 +6.004880000E2,6.001970320E1 +6.007680000E2,6.056987745E1 +6.010550000E2,6.461211967E1 +6.014090000E2,6.399838195E1 +6.016840000E2,5.485596323E1 +6.019450000E2,5.731519087E1 +6.022080000E2,6.691878914E1 +6.024720000E2,6.479201876E1 +6.027260000E2,6.412847214E1 +6.029760000E2,6.025795068E1 +6.032190000E2,6.098133491E1 +6.035120000E2,5.689387521E1 +6.038040000E2,5.639928101E1 +6.041550000E2,5.328068252E1 +6.044370000E2,5.639829798E1 +6.046770000E2,5.892330560E1 +6.049510000E2,5.315638413E1 +6.051900000E2,5.740260439E1 +6.054620000E2,5.339391440E1 +6.057500000E2,5.310371918E1 +6.060710000E2,5.460903952E1 +6.063050000E2,5.407304270E1 +6.065540000E2,5.870790541E1 +6.068060000E2,5.576782972E1 +6.070790000E2,5.976954147E1 +6.074640000E2,6.181180531E1 +6.077240000E2,6.194364733E1 +6.080150000E2,6.794225297E1 +6.082590000E2,6.236601361E1 +6.085470000E2,6.002700779E1 +6.088450000E2,5.971993236E1 +6.090930000E2,5.954735434E1 +6.093460000E2,5.907202371E1 +6.095920000E2,5.993658420E1 +6.098910000E2,5.530332259E1 +6.101850000E2,5.531802018E1 +6.104220000E2,5.376885939E1 +6.107780000E2,5.735355871E1 +6.110210000E2,5.868610156E1 +6.112710000E2,5.312122754E1 +6.115670000E2,5.745102631E1 +6.118550000E2,5.535536940E1 +6.121540000E2,5.088728731E1 +6.123960000E2,5.266907791E1 +6.126860000E2,5.386493253E1 +6.130010000E2,5.670623073E1 +6.132810000E2,5.563278655E1 +6.135150000E2,5.267172926E1 +6.138540000E2,5.386148816E1 +6.141880000E2,5.716468210E1 +6.144880000E2,5.526918781E1 +6.147190000E2,5.659553915E1 +6.149610000E2,5.648341007E1 +6.152730000E2,5.711745846E1 +6.155520000E2,5.918800114E1 +6.158010000E2,5.642548609E1 +6.161000000E2,5.635896926E1 +6.163480000E2,5.899225051E1 +6.166180000E2,5.374343244E1 +6.168690000E2,4.891042404E1 +6.172050000E2,5.065835680E1 +6.174560000E2,5.685264653E1 +6.177340000E2,5.429270039E1 +6.179930000E2,5.499548313E1 +6.182940000E2,5.407177565E1 +6.185300000E2,5.356533799E1 +6.188300000E2,5.378190643E1 +6.191140000E2,5.189020817E1 +6.193870000E2,5.046647494E1 +6.196450000E2,5.501107364E1 +6.198910000E2,5.798814538E1 +6.201660000E2,5.360844474E1 +6.205080000E2,5.353935610E1 +6.208080000E2,5.620189936E1 +6.210820000E2,6.216008765E1 +6.213360000E2,5.767015155E1 +6.216520000E2,6.210101060E1 +6.219320000E2,5.928042926E1 +6.221800000E2,6.394496555E1 +6.224980000E2,5.872213561E1 +6.227430000E2,5.927091626E1 +6.230010000E2,5.235592166E1 +6.232430000E2,6.313120608E1 +6.235470000E2,6.005436888E1 +6.238480000E2,5.999836557E1 +6.240930000E2,5.879748041E1 +6.243920000E2,5.978277378E1 +6.246440000E2,6.050724590E1 +6.249480000E2,6.282777276E1 +6.252520000E2,6.080897043E1 +6.255640000E2,5.889462949E1 +6.258270000E2,5.550476615E1 +6.260730000E2,5.586785505E1 +6.263620000E2,6.576560120E1 +6.266590000E2,6.102361259E1 +6.270050000E2,6.110507706E1 +6.272870000E2,5.753592100E1 +6.275410000E2,6.297666729E1 +6.278490000E2,6.037594793E1 +6.281160000E2,5.849898506E1 +6.284180000E2,6.165631601E1 +6.287090000E2,6.096774109E1 +6.289510000E2,6.176590968E1 +6.292460000E2,5.947061017E1 +6.294820000E2,6.109202024E1 +6.297790000E2,5.322559935E1 +6.301160000E2,4.971181861E1 +6.303880000E2,5.533921521E1 +6.307250000E2,5.478410742E1 +6.310240000E2,5.647795083E1 +6.313200000E2,5.797504265E1 +6.315690000E2,5.403019222E1 +6.318640000E2,5.301910781E1 +6.321010000E2,5.096544207E1 +6.324030000E2,5.324435941E1 +6.326360000E2,5.447050361E1 +6.328960000E2,5.932781903E1 +6.331500000E2,5.967228428E1 +6.334640000E2,6.319489971E1 +6.337810000E2,5.820271574E1 +6.340710000E2,5.910289699E1 +6.343170000E2,5.681937370E1 +6.346260000E2,5.582227275E1 +6.349350000E2,5.745831651E1 +6.352100000E2,5.504019385E1 +6.354620000E2,5.072303887E1 +6.357190000E2,5.366082959E1 +6.359690000E2,5.380227314E1 +6.362560000E2,4.818205454E1 +6.365090000E2,5.989908626E1 +6.368780000E2,5.659012846E1 +6.371610000E2,5.593157997E1 +6.374460000E2,5.135237935E1 +6.377000000E2,5.687788515E1 +6.379550000E2,5.943975502E1 +6.382630000E2,6.290957992E1 +6.385230000E2,5.827099811E1 +6.387780000E2,5.686391746E1 +6.390620000E2,5.771790911E1 +6.393200000E2,5.390066131E1 +6.395830000E2,5.358231960E1 +6.398480000E2,5.564565007E1 +6.401490000E2,5.205482155E1 +6.404200000E2,5.852280051E1 +6.407340000E2,4.836326193E1 +6.409980000E2,5.905115701E1 +6.412560000E2,5.622349390E1 +6.415040000E2,5.891737338E1 +6.417460000E2,5.749377856E1 +6.420310000E2,5.414095183E1 +6.422680000E2,5.482109112E1 +6.425170000E2,5.202942051E1 +6.428000000E2,4.903409276E1 +6.431250000E2,5.495098254E1 +6.434650000E2,5.777911761E1 +6.437680000E2,5.329076638E1 +6.440080000E2,5.886592322E1 +6.443070000E2,5.661637111E1 +6.445560000E2,5.459133399E1 +6.448230000E2,4.858613706E1 +6.450990000E2,5.642020356E1 +6.453590000E2,5.634614530E1 +6.456240000E2,5.769024626E1 +6.458900000E2,6.037646239E1 +6.461470000E2,5.712013563E1 +6.464260000E2,5.393237723E1 +6.467570000E2,5.443825449E1 +6.469850000E2,5.464133184E1 +6.472460000E2,5.185343249E1 +6.475170000E2,5.670688718E1 +6.477900000E2,5.808659132E1 +6.480150000E2,5.879711687E1 +6.483250000E2,5.860991669E1 +6.485730000E2,5.600484597E1 +6.488230000E2,5.291438286E1 +6.491020000E2,5.869236753E1 +6.493260000E2,5.826316690E1 +6.496250000E2,5.619306699E1 +6.499850000E2,6.085970714E1 +6.502400000E2,6.051231588E1 +6.505400000E2,6.096601072E1 +6.507990000E2,6.197068990E1 +6.511180000E2,6.520817743E1 +6.513810000E2,6.377577246E1 +6.516860000E2,6.105485617E1 +6.519940000E2,5.890751001E1 +6.522910000E2,5.911253604E1 +6.525370000E2,6.291937986E1 +6.528540000E2,6.252638881E1 +6.532210000E2,6.337356348E1 +6.535270000E2,5.894334263E1 +6.537830000E2,5.754939005E1 +6.540930000E2,5.500698560E1 +6.543880000E2,5.014350898E1 +6.546880000E2,5.646260920E1 +6.549870000E2,5.951282585E1 +6.552920000E2,6.099782791E1 +6.555480000E2,6.065538365E1 +6.558100000E2,6.827371953E1 +6.560790000E2,6.035931154E1 +6.563820000E2,6.267306134E1 +6.566350000E2,5.826452213E1 +6.568970000E2,6.092938143E1 +6.572010000E2,6.534130041E1 +6.575130000E2,6.111837506E1 +6.577770000E2,5.826481723E1 +6.580330000E2,5.918147323E1 +6.582980000E2,6.100230752E1 +6.585510000E2,6.302217459E1 +6.588060000E2,5.754956715E1 +6.591080000E2,6.111201710E1 +6.593520000E2,6.017410469E1 +6.597040000E2,6.031944923E1 +6.599450000E2,5.943575512E1 +6.602120000E2,5.868776340E1 +6.605570000E2,5.940543513E1 +6.608500000E2,5.886327816E1 +6.610920000E2,5.770522648E1 +6.613840000E2,5.442777508E1 +6.616200000E2,5.394232060E1 +6.619220000E2,5.856638842E1 +6.622160000E2,5.742664400E1 +6.624600000E2,5.472498345E1 +6.627560000E2,5.672985390E1 +6.629770000E2,5.834702318E1 +6.632250000E2,5.907602823E1 +6.634810000E2,5.873031221E1 +6.637670000E2,5.757130737E1 +6.640040000E2,5.572185824E1 +6.643070000E2,5.959142979E1 +6.645480000E2,5.851623707E1 +6.648520000E2,5.856887935E1 +6.650940000E2,6.397218192E1 +6.653890000E2,5.963692586E1 +6.656210000E2,5.934207027E1 +6.659580000E2,5.667856430E1 +6.662640000E2,5.811017468E1 +6.665550000E2,5.505265787E1 +6.667990000E2,5.558350894E1 +6.671320000E2,6.063017800E1 +6.674000000E2,5.568411381E1 +6.676510000E2,5.981422062E1 +6.679580000E2,5.723024768E1 +6.682820000E2,5.036028104E1 +6.685240000E2,5.199205823E1 +6.687970000E2,5.367328475E1 +6.691280000E2,5.936914884E1 +6.693940000E2,5.657797691E1 +6.696490000E2,6.065879377E1 +6.699270000E2,5.657054255E1 +6.702000000E2,5.655716576E1 +6.704770000E2,5.823562265E1 +6.707350000E2,6.065030224E1 +6.710140000E2,6.110776530E1 +6.712700000E2,5.714357796E1 +6.715170000E2,5.604236164E1 +6.717930000E2,6.041748871E1 +6.721240000E2,6.019765334E1 +6.724270000E2,5.928602786E1 +6.727750000E2,5.973060669E1 +6.730710000E2,6.059869751E1 +6.733250000E2,6.116850166E1 +6.736400000E2,6.145214709E1 +6.738890000E2,6.020118097E1 +6.741670000E2,6.048579637E1 +6.744720000E2,6.225337088E1 +6.747550000E2,5.853636068E1 +6.750030000E2,5.999204871E1 +6.752840000E2,5.433989895E1 +6.755100000E2,5.847308735E1 +6.758420000E2,5.913726954E1 +6.760830000E2,6.049449503E1 +6.763830000E2,5.545572399E1 +6.766370000E2,6.246077536E1 +6.768920000E2,6.029598130E1 +6.771340000E2,6.005864514E1 +6.774230000E2,6.582269585E1 +6.776700000E2,6.255104294E1 +6.779140000E2,6.623711836E1 +6.781740000E2,6.684819787E1 +6.784850000E2,6.877250850E1 +6.787420000E2,6.157084767E1 +6.789860000E2,6.054068573E1 +6.793290000E2,6.069583213E1 +6.795810000E2,6.124898856E1 +6.798240000E2,6.136691849E1 +6.800900000E2,6.035594762E1 +6.803920000E2,5.654106541E1 +6.806920000E2,5.587565134E1 +6.809940000E2,5.642134155E1 +6.813020000E2,5.749983358E1 +6.815830000E2,5.576151961E1 +6.818120000E2,5.714589311E1 +6.820580000E2,5.969510914E1 +6.823020000E2,5.824123453E1 +6.825680000E2,5.779273115E1 +6.828630000E2,5.699644891E1 +6.831010000E2,5.900876644E1 +6.833500000E2,6.335540424E1 +6.835940000E2,6.280432027E1 +6.838340000E2,6.194675910E1 +6.841290000E2,5.801082069E1 +6.843650000E2,5.652506879E1 +6.846570000E2,5.895404856E1 +6.848910000E2,5.873705448E1 +6.851950000E2,5.589704153E1 +6.855380000E2,5.379672362E1 +6.857910000E2,6.287056471E1 +6.860900000E2,6.081817617E1 +6.863340000E2,6.807593043E1 +6.866320000E2,5.604389930E1 +6.868800000E2,6.712075434E1 +6.871750000E2,6.290238552E1 +6.874740000E2,6.473105179E1 +6.877330000E2,5.873835234E1 +6.880180000E2,5.800563858E1 +6.882620000E2,5.540095032E1 +6.885810000E2,6.197881428E1 +6.888280000E2,5.541258482E1 +6.890890000E2,5.558277465E1 +6.894010000E2,4.965923685E1 +6.897080000E2,4.860020107E1 +6.899730000E2,5.608167548E1 +6.902300000E2,5.381305593E1 +6.904990000E2,6.079286270E1 +6.908000000E2,6.446965644E1 +6.910380000E2,6.556266140E1 +6.913400000E2,5.418444209E1 +6.916350000E2,5.205102491E1 +6.919820000E2,5.812981404E1 +6.922410000E2,6.500705260E1 +6.925070000E2,6.149947285E1 +6.927750000E2,5.695315316E1 +6.930870000E2,5.775854948E1 +6.933870000E2,6.523399833E1 +6.936300000E2,6.692630865E1 +6.939270000E2,5.793447825E1 +6.942230000E2,5.746396110E1 +6.944770000E2,6.017975210E1 +6.947150000E2,5.956759439E1 +6.950320000E2,6.391288151E1 +6.953110000E2,6.484415086E1 +6.955650000E2,6.664209540E1 +6.958410000E2,6.746668632E1 +6.961050000E2,5.775664920E1 +6.964050000E2,6.383035698E1 +6.967020000E2,5.816763892E1 +6.969600000E2,6.921190909E1 +6.972400000E2,6.165047809E1 +6.975080000E2,5.666810057E1 +6.977540000E2,6.417546300E1 +6.980020000E2,5.788971486E1 +6.982730000E2,5.486922606E1 +6.985850000E2,5.576434723E1 +6.988820000E2,5.548978795E1 +6.991460000E2,5.886820316E1 +6.993970000E2,6.226406326E1 +6.996480000E2,5.601534080E1 +6.999400000E2,5.901385758E1 +7.002040000E2,5.720709772E1 +7.005120000E2,6.318399213E1 +7.007580000E2,6.338981741E1 +7.010170000E2,6.747312486E1 +7.012670000E2,5.788999692E1 +7.015450000E2,4.434465006E1 +7.018710000E2,6.439013955E1 +7.021480000E2,5.375342664E1 +7.023700000E2,6.398282027E1 +7.026160000E2,5.857909138E1 +7.029130000E2,5.670439641E1 +7.031590000E2,5.749786365E1 +7.034320000E2,5.181710985E1 +7.036770000E2,5.871535868E1 +7.039520000E2,5.470297527E1 +7.042240000E2,5.771822323E1 +7.044750000E2,5.236261523E1 +7.047130000E2,5.595332709E1 +7.050480000E2,5.576748295E1 +7.053040000E2,5.334869600E1 +7.055590000E2,5.337806625E1 +7.058180000E2,5.499892680E1 +7.060900000E2,5.490963435E1 +7.063980000E2,5.551078540E1 +7.066680000E2,5.358868238E1 +7.069300000E2,5.203182642E1 +7.071760000E2,5.771053387E1 +7.074630000E2,5.175835182E1 +7.077440000E2,5.402526598E1 +7.080400000E2,5.754717994E1 +7.083470000E2,6.103880587E1 +7.086400000E2,6.284824916E1 +7.088840000E2,6.674666322E1 +7.092010000E2,6.194114278E1 +7.094980000E2,5.796289911E1 +7.097580000E2,5.475547679E1 +7.100170000E2,5.804024708E1 +7.102650000E2,5.606423134E1 +7.105550000E2,5.319247933E1 +7.107930000E2,5.625991375E1 +7.110940000E2,5.589539698E1 +7.114730000E2,6.073460415E1 +7.117930000E2,6.208342045E1 +7.120530000E2,6.335117127E1 +7.123290000E2,5.821275565E1 +7.126280000E2,5.793160357E1 +7.128780000E2,5.509944006E1 +7.131790000E2,5.578357696E1 +7.134760000E2,5.632534225E1 +7.137350000E2,5.466315647E1 +7.140450000E2,5.914530785E1 +7.143020000E2,6.280432125E1 +7.146020000E2,6.333348539E1 +7.149790000E2,5.698482465E1 +7.152920000E2,5.474810308E1 +7.155370000E2,5.417920207E1 +7.157880000E2,6.392184792E1 +7.160720000E2,6.565549591E1 +7.163130000E2,6.082705714E1 +7.166120000E2,5.816285927E1 +7.168430000E2,5.809201859E1 +7.170930000E2,6.016105207E1 +7.173350000E2,5.162287691E1 +7.176230000E2,5.754317879E1 +7.179310000E2,6.166304542E1 +7.181770000E2,6.177004553E1 +7.184320000E2,6.274574776E1 +7.186900000E2,6.104994734E1 +7.189920000E2,5.735301480E1 +7.192340000E2,5.830205645E1 +7.194890000E2,6.212782217E1 +7.197420000E2,5.467685243E1 +7.200420000E2,5.313970583E1 +7.202920000E2,5.278680647E1 +7.205360000E2,5.474141102E1 +7.209140000E2,6.241771654E1 +7.212600000E2,6.394594172E1 +7.215560000E2,6.348358734E1 +7.217980000E2,6.112734048E1 +7.220450000E2,6.226451183E1 +7.222930000E2,6.534082516E1 +7.225960000E2,6.114019283E1 +7.228390000E2,6.421228964E1 +7.231230000E2,6.814847387E1 +7.233690000E2,6.275446304E1 +7.236190000E2,6.679153921E1 +7.239280000E2,6.537583699E1 +7.241850000E2,6.212976374E1 +7.245300000E2,6.553556935E1 +7.248220000E2,5.834030427E1 +7.250930000E2,5.992153646E1 +7.253380000E2,5.595099295E1 +7.256370000E2,5.720822528E1 +7.258800000E2,5.423516872E1 +7.261770000E2,5.906139652E1 +7.264140000E2,6.204477132E1 +7.267140000E2,6.368823365E1 +7.269550000E2,6.513672214E1 +7.272500000E2,6.364997971E1 +7.275370000E2,6.269941998E1 +7.278570000E2,5.948773609E1 +7.281020000E2,5.789544973E1 +7.283740000E2,6.305528689E1 +7.286400000E2,6.245554089E1 +7.289690000E2,6.033221518E1 +7.292310000E2,5.940071821E1 +7.294970000E2,6.176178101E1 +7.298020000E2,5.355172623E1 +7.300580000E2,5.535292187E1 +7.303150000E2,5.274398781E1 +7.305750000E2,5.399957194E1 +7.308780000E2,5.819691646E1 +7.312070000E2,5.434897588E1 +7.315090000E2,6.041787911E1 +7.317850000E2,5.617860881E1 +7.320560000E2,5.558770875E1 +7.323290000E2,5.151264449E1 +7.325860000E2,5.612143969E1 +7.328800000E2,5.405001557E1 +7.331120000E2,5.455354216E1 +7.334090000E2,5.716252136E1 +7.337070000E2,6.416157102E1 +7.339910000E2,6.098010142E1 +7.343020000E2,6.194029449E1 +7.346500000E2,6.091313037E1 +7.349540000E2,5.846954669E1 +7.352410000E2,5.743489407E1 +7.355320000E2,5.872669957E1 +7.357800000E2,5.859080967E1 +7.360560000E2,6.053269456E1 +7.363220000E2,6.117884455E1 +7.366590000E2,5.809887850E1 +7.369420000E2,5.453224539E1 +7.372510000E2,5.639337460E1 +7.375040000E2,5.373613181E1 +7.378630000E2,5.066236714E1 +7.381160000E2,4.653740377E1 +7.383650000E2,6.375011526E1 +7.386730000E2,6.282181577E1 +7.389830000E2,6.727660972E1 +7.392340000E2,6.413328322E1 +7.394790000E2,6.184881400E1 +7.397290000E2,6.430634497E1 +7.400250000E2,6.276256291E1 +7.402610000E2,6.297441350E1 +7.405590000E2,5.306586823E1 +7.408610000E2,5.403016569E1 +7.412260000E2,5.749263443E1 +7.415060000E2,5.657932114E1 +7.417820000E2,5.532222303E1 +7.420430000E2,5.911133378E1 +7.423450000E2,5.822379827E1 +7.426470000E2,6.311870884E1 +7.428860000E2,5.964121243E1 +7.431940000E2,5.708688763E1 +7.434960000E2,5.782189241E1 +7.437480000E2,5.745118469E1 +7.440380000E2,5.258772989E1 +7.442830000E2,5.325984780E1 +7.445410000E2,5.216709684E1 +7.447900000E2,5.485283680E1 +7.450520000E2,6.638751453E1 +7.453640000E2,6.256149725E1 +7.456370000E2,6.851667797E1 +7.459020000E2,6.356784575E1 +7.462040000E2,6.586178842E1 +7.464510000E2,6.099626883E1 +7.467420000E2,6.874341983E1 +7.470300000E2,5.690479739E1 +7.472670000E2,5.749513215E1 +7.475860000E2,5.743840209E1 +7.478480000E2,6.695338823E1 +7.481550000E2,6.575566103E1 +7.484170000E2,6.244751264E1 +7.486690000E2,6.206430480E1 +7.489520000E2,5.755143157E1 +7.492450000E2,6.343498072E1 +7.494820000E2,6.599354682E1 +7.497800000E2,5.994269627E1 +7.500210000E2,6.480563885E1 +7.503160000E2,5.962320355E1 +7.505550000E2,5.907805627E1 +7.508860000E2,5.452673237E1 +7.511450000E2,5.413358853E1 +7.514110000E2,5.786691992E1 +7.516870000E2,6.185088179E1 +7.519570000E2,5.432685780E1 +7.522050000E2,5.297819944E1 +7.524920000E2,5.290855554E1 +7.527910000E2,5.828859659E1 +7.530300000E2,5.880189294E1 +7.533360000E2,5.500578631E1 +7.535910000E2,5.476677878E1 +7.538330000E2,5.414240587E1 +7.541650000E2,5.332866170E1 +7.544620000E2,5.193802785E1 +7.547080000E2,5.242932681E1 +7.549590000E2,6.024921863E1 +7.552020000E2,5.537701523E1 +7.554960000E2,5.489617845E1 +7.557330000E2,5.384280286E1 +7.560410000E2,5.406125999E1 +7.562870000E2,5.246560959E1 +7.565320000E2,5.374729291E1 +7.567680000E2,5.542801483E1 +7.570630000E2,5.525770987E1 +7.573930000E2,5.847670432E1 +7.576660000E2,5.822188632E1 +7.579180000E2,5.822901451E1 +7.582040000E2,5.458975346E1 +7.584820000E2,5.438683247E1 +7.587800000E2,5.260449368E1 +7.590260000E2,5.371245859E1 +7.592870000E2,4.983203663E1 +7.595420000E2,5.018089077E1 +7.598380000E2,5.950969681E1 +7.601480000E2,5.769305363E1 +7.604800000E2,5.747567937E1 +7.607190000E2,5.446335810E1 +7.610040000E2,5.463229896E1 +7.612970000E2,5.644916160E1 +7.615560000E2,5.809520116E1 +7.618460000E2,5.406577519E1 +7.621050000E2,5.362277750E1 +7.623930000E2,5.868559294E1 +7.626230000E2,5.548744129E1 +7.628890000E2,5.613986675E1 +7.631890000E2,5.592058678E1 +7.634870000E2,5.947938191E1 +7.638120000E2,5.945990241E1 +7.640830000E2,5.354091788E1 +7.643270000E2,5.910847411E1 +7.645670000E2,6.112853730E1 +7.648120000E2,5.617469613E1 +7.650520000E2,5.678172470E1 +7.653190000E2,5.293731054E1 +7.655730000E2,5.571573154E1 +7.658430000E2,5.239475172E1 +7.660900000E2,5.710555790E1 +7.663840000E2,5.593714408E1 +7.666500000E2,5.506488062E1 +7.669100000E2,5.276148627E1 +7.671530000E2,5.087813070E1 +7.674500000E2,4.966858228E1 +7.677070000E2,4.690170064E1 +7.679870000E2,5.097718665E1 +7.682460000E2,5.173969669E1 +7.685220000E2,5.562988056E1 +7.687630000E2,5.194720020E1 +7.690630000E2,5.590118249E1 +7.693610000E2,5.613585205E1 +7.696030000E2,5.417299550E1 +7.698530000E2,5.925774948E1 +7.702010000E2,5.729895975E1 +7.704610000E2,5.765570707E1 +7.707610000E2,6.211008380E1 +7.710570000E2,5.846530012E1 +7.712970000E2,5.766544416E1 +7.715460000E2,5.716238768E1 +7.718080000E2,5.700535494E1 +7.720510000E2,5.592606747E1 +7.723260000E2,5.771214429E1 +7.725940000E2,5.753442175E1 +7.728830000E2,5.541298336E1 +7.731860000E2,5.137853822E1 +7.735420000E2,5.462649470E1 +7.738320000E2,5.454281912E1 +7.740820000E2,6.803752283E1 +7.743260000E2,6.852980541E1 +7.745820000E2,7.007631543E1 +7.748270000E2,7.009876218E1 +7.751160000E2,6.950363051E1 +7.753520000E2,6.338954984E1 +7.755910000E2,5.500200077E1 +7.758880000E2,5.358702362E1 +7.761340000E2,5.718303470E1 +7.763730000E2,5.887519420E1 +7.767050000E2,5.795457078E1 +7.769970000E2,5.796499201E1 +7.773000000E2,5.644912180E1 +7.775570000E2,5.804780214E1 +7.778740000E2,5.958528627E1 +7.781300000E2,5.635913866E1 +7.784430000E2,5.593106857E1 +7.787280000E2,6.063168213E1 +7.789960000E2,5.917208792E1 +7.792560000E2,5.719923422E1 +7.795050000E2,6.400429125E1 +7.797680000E2,5.733192807E1 +7.800440000E2,6.018331087E1 +7.803000000E2,6.350407169E1 +7.805530000E2,6.357762743E1 +7.808590000E2,6.772563953E1 +7.811430000E2,6.431848914E1 +7.814050000E2,5.710721917E1 +7.816950000E2,5.646111127E1 +7.819500000E2,5.564600214E1 +7.822050000E2,6.362802489E1 +7.824550000E2,6.278310471E1 +7.827010000E2,5.851995741E1 +7.829620000E2,5.759567059E1 +7.832630000E2,5.449669640E1 +7.835070000E2,6.040303881E1 +7.837500000E2,5.743841461E1 +7.839990000E2,6.096558185E1 +7.842840000E2,7.161293257E1 +7.845270000E2,7.417435903E1 +7.848410000E2,6.386070968E1 +7.851390000E2,6.234904760E1 +7.854350000E2,6.321731436E1 +7.856820000E2,6.294103551E1 +7.859780000E2,6.210337552E1 +7.862150000E2,6.765383904E1 +7.865650000E2,6.346682761E1 +7.868610000E2,6.221020232E1 +7.871280000E2,6.119530731E1 +7.873850000E2,5.314248269E1 +7.876880000E2,5.288680780E1 +7.879230000E2,5.064349321E1 +7.882230000E2,5.786336298E1 +7.884630000E2,5.341864841E1 +7.887250000E2,5.286568073E1 +7.890140000E2,5.272997567E1 +7.893180000E2,5.904110581E1 +7.896690000E2,5.748622391E1 +7.899200000E2,5.773986136E1 +7.902160000E2,5.480967078E1 +7.904710000E2,5.627241382E1 +7.907280000E2,5.456362797E1 +7.909900000E2,5.766408512E1 +7.912380000E2,5.413586400E1 +7.914940000E2,5.234403284E1 +7.917720000E2,5.190170354E1 +7.920440000E2,5.227759392E1 +7.923170000E2,4.410400383E1 +7.926220000E2,3.508270700E1 +7.929370000E2,3.887828085E1 +7.932030000E2,4.522069604E1 +7.934660000E2,4.928233980E1 +7.937420000E2,4.706401379E1 +7.940710000E2,4.988989997E1 +7.943700000E2,5.767827889E1 +7.946060000E2,5.506606719E1 +7.949050000E2,6.107887773E1 +7.952060000E2,5.849609892E1 +7.955030000E2,5.343173328E1 +7.957490000E2,5.007726003E1 +7.960580000E2,4.763873915E1 +7.963010000E2,5.045894898E1 +7.966040000E2,6.859700710E1 +7.968900000E2,6.734256534E1 +7.971550000E2,6.661489392E1 +7.974110000E2,6.556398865E1 +7.976580000E2,5.519705677E1 +7.979230000E2,5.503316479E1 +7.982060000E2,5.955770829E1 +7.984280000E2,5.777834711E1 +7.987260000E2,6.050467535E1 +7.989700000E2,5.583639573E1 +7.993330000E2,5.988908902E1 +7.995750000E2,5.875791040E1 +7.998670000E2,6.166637478E1 +8.001160000E2,5.690435901E1 +8.004160000E2,5.599911293E1 +8.006610000E2,5.889628547E1 +8.009180000E2,6.227540789E1 +8.011740000E2,6.572663811E1 +8.014300000E2,6.013467784E1 +8.016770000E2,6.250368579E1 +8.019910000E2,6.532292099E1 +8.023560000E2,5.377170031E1 +8.026370000E2,5.535595108E1 +8.029110000E2,5.147526495E1 +8.031720000E2,4.993046061E1 +8.034760000E2,6.394035794E1 +8.037260000E2,5.983119170E1 +8.040270000E2,5.967243802E1 +8.042930000E2,6.559340840E1 +8.046100000E2,5.262215496E1 +8.049160000E2,5.397812040E1 +8.051780000E2,5.680330381E1 +8.054740000E2,5.857171626E1 +8.058060000E2,5.577198454E1 +8.060880000E2,5.916891157E1 +8.063460000E2,6.120078548E1 +8.066060000E2,6.223167379E1 +8.069230000E2,6.161077093E1 +8.071720000E2,5.812180846E1 +8.074300000E2,5.665535607E1 +8.077230000E2,5.401482687E1 +8.079600000E2,5.631804256E1 +8.082610000E2,5.267806276E1 +8.085540000E2,5.766120113E1 +8.088100000E2,5.717509884E1 +8.091690000E2,5.698714543E1 +8.094130000E2,5.807918354E1 +8.096940000E2,5.364566959E1 +8.099320000E2,5.678502402E1 +8.102110000E2,5.494444844E1 +8.104710000E2,6.216218230E1 +8.107550000E2,5.504588420E1 +8.110030000E2,5.220186059E1 +8.112810000E2,5.338487037E1 +8.115430000E2,5.422122114E1 +8.118180000E2,6.217546099E1 +8.121430000E2,5.739027439E1 +8.124800000E2,5.218554734E1 +8.128080000E2,6.183667492E1 +8.130850000E2,6.028246668E1 +8.133620000E2,6.620979851E1 +8.135950000E2,5.810667246E1 +8.138630000E2,6.096670869E1 +8.141300000E2,5.149777407E1 +8.143960000E2,4.993954713E1 +8.146400000E2,5.196561010E1 +8.149350000E2,5.727966309E1 +8.151710000E2,5.489316784E1 +8.154100000E2,5.619291420E1 +8.157500000E2,5.425831711E1 +8.160430000E2,5.677079709E1 +8.163250000E2,5.289383275E1 +8.165600000E2,5.573749616E1 +8.168090000E2,5.211960412E1 +8.170840000E2,5.029895102E1 +8.173170000E2,5.085418245E1 +8.175630000E2,5.101392152E1 +8.178870000E2,5.228690479E1 +8.182130000E2,5.919931006E1 +8.184680000E2,5.288617356E1 +8.188320000E2,5.626269479E1 +8.191030000E2,6.124827198E1 +8.193870000E2,5.889071517E1 +8.196160000E2,5.957980623E1 +8.199180000E2,5.440069788E1 +8.201590000E2,5.524226830E1 +8.204560000E2,5.147688867E1 +8.206870000E2,5.390780082E1 +8.209820000E2,6.509870984E1 +8.212270000E2,6.421388309E1 +8.215230000E2,5.843840462E1 +8.218170000E2,5.422512027E1 +8.221280000E2,5.468614274E1 +8.223780000E2,5.922850585E1 +8.226710000E2,6.486031186E1 +8.229330000E2,6.154967201E1 +8.232420000E2,5.893257410E1 +8.235100000E2,6.020329639E1 +8.238290000E2,5.483779552E1 +8.240760000E2,5.692914998E1 +8.243280000E2,6.347347085E1 +8.245930000E2,5.345306004E1 +8.248670000E2,6.141647052E1 +8.252000000E2,5.672783001E1 +8.254550000E2,5.605661334E1 +8.257610000E2,5.699330885E1 +8.260410000E2,5.489256860E1 +8.263010000E2,6.262090025E1 +8.265830000E2,5.457719262E1 +8.268180000E2,5.416382407E1 +8.271260000E2,4.993919751E1 +8.273700000E2,5.569569056E1 +8.276330000E2,5.514364162E1 +8.278890000E2,5.653204472E1 +8.281470000E2,5.784406489E1 +8.284370000E2,5.752811490E1 +8.286720000E2,5.727510089E1 +8.289650000E2,5.900575965E1 +8.292510000E2,5.679022390E1 +8.294860000E2,5.722234118E1 +8.297350000E2,5.952638514E1 +8.300320000E2,5.925181191E1 +8.302740000E2,5.930148258E1 +8.305160000E2,5.668145507E1 +8.307730000E2,5.590492759E1 +8.310130000E2,6.302930486E1 +8.312510000E2,5.733539345E1 +8.315800000E2,5.620349253E1 +8.318910000E2,5.495250031E1 +8.322000000E2,5.501979251E1 +8.324620000E2,5.208226415E1 +8.327390000E2,5.765748383E1 +8.329950000E2,5.489193423E1 +8.332490000E2,5.593428331E1 +8.335720000E2,5.714652117E1 +8.338250000E2,5.832769426E1 +8.341370000E2,5.884156077E1 +8.344030000E2,5.840498509E1 +8.347020000E2,5.864505811E1 +8.350330000E2,6.356982434E1 +8.353340000E2,6.286445683E1 +8.355720000E2,5.657384439E1 +8.358940000E2,5.660970318E1 +8.361720000E2,5.918731584E1 +8.364160000E2,5.825788220E1 +8.366580000E2,5.592754487E1 +8.369110000E2,5.553717092E1 +8.371910000E2,5.495027293E1 +8.374510000E2,5.546329287E1 +8.377420000E2,5.746402701E1 +8.379890000E2,5.891922359E1 +8.383130000E2,6.522858798E1 +8.385710000E2,6.384617776E1 +8.388430000E2,5.435088619E1 +8.390670000E2,5.460135210E1 +8.393610000E2,5.982769627E1 +8.396020000E2,5.936265195E1 +8.398550000E2,6.034701146E1 +8.401470000E2,6.875861473E1 +8.403840000E2,6.968788985E1 +8.406760000E2,6.653493651E1 +8.409120000E2,6.664139767E1 +8.412200000E2,6.195236791E1 +8.415280000E2,5.759269564E1 +8.418110000E2,5.704906263E1 +8.420770000E2,5.199124728E1 +8.423350000E2,5.625309672E1 +8.426060000E2,5.627754144E1 +8.428710000E2,6.285304788E1 +8.431220000E2,6.089762622E1 +8.434160000E2,5.828079525E1 +8.436650000E2,5.581703965E1 +8.439650000E2,5.326092983E1 +8.442070000E2,5.247397640E1 +8.444500000E2,5.104216729E1 +8.447560000E2,4.981466747E1 +8.450730000E2,5.794387296E1 +8.453210000E2,6.103400827E1 +8.455680000E2,6.053778141E1 +8.458610000E2,5.413066164E1 +8.461240000E2,5.591468697E1 +8.463740000E2,5.289659812E1 +8.466770000E2,6.014390988E1 +8.469740000E2,5.713983843E1 +8.472340000E2,5.457406708E1 +8.474800000E2,5.848999564E1 +8.478210000E2,5.310404619E1 +8.481040000E2,5.463633704E1 +8.483620000E2,5.329096892E1 +8.486670000E2,5.667645304E1 +8.489890000E2,5.540515985E1 +8.492420000E2,5.014593999E1 +8.495060000E2,5.019949668E1 +8.497660000E2,4.724526190E1 +8.500410000E2,4.632701850E1 +8.502660000E2,4.436725745E1 +8.505710000E2,5.273585220E1 +8.508470000E2,5.232501704E1 +8.511370000E2,5.177389205E1 +8.513940000E2,5.236772038E1 +8.516560000E2,4.869019062E1 +8.518980000E2,5.254056589E1 +8.521620000E2,5.441215371E1 +8.524060000E2,5.431954181E1 +8.526720000E2,4.873515026E1 +8.529820000E2,5.253291311E1 +8.532350000E2,5.201920339E1 +8.535330000E2,5.083296820E1 +8.537750000E2,5.373650683E1 +8.540560000E2,6.162621210E1 +8.543710000E2,6.137876928E1 +8.546190000E2,6.347980201E1 +8.548850000E2,6.480134627E1 +8.551390000E2,6.344943059E1 +8.553830000E2,6.653758852E1 +8.556910000E2,6.821811094E1 +8.559900000E2,6.564040109E1 +8.562480000E2,6.310710880E1 +8.565060000E2,5.625485760E1 +8.567860000E2,5.886920329E1 +8.570590000E2,5.638007706E1 +8.573180000E2,5.477312089E1 +8.576670000E2,5.402637072E1 +8.579310000E2,5.282806817E1 +8.582400000E2,5.743205922E1 +8.584770000E2,5.608834078E1 +8.587730000E2,5.917700537E1 +8.590950000E2,5.757076232E1 +8.593390000E2,5.680975976E1 +8.596110000E2,5.316092446E1 +8.598560000E2,5.634389465E1 +8.601130000E2,5.912558361E1 +8.603880000E2,5.827706684E1 +8.606370000E2,5.580056474E1 +8.609720000E2,5.622551838E1 +8.612190000E2,5.816090597E1 +8.614650000E2,5.710633258E1 +8.617260000E2,6.762679027E1 +8.619970000E2,6.050550643E1 +8.622480000E2,6.017289530E1 +8.624960000E2,5.884551198E1 +8.627510000E2,5.823958631E1 +8.630120000E2,5.747421536E1 +8.632920000E2,5.891926612E1 +8.635810000E2,5.962176090E1 +8.638680000E2,5.932606834E1 +8.642430000E2,6.035939553E1 +8.645920000E2,5.892740034E1 +8.649090000E2,6.158225090E1 +8.651650000E2,5.941856931E1 +8.654560000E2,5.517726055E1 +8.656900000E2,5.573554393E1 +8.659400000E2,6.300977067E1 +8.662170000E2,6.346838855E1 +8.664760000E2,5.840482341E1 +8.667600000E2,5.656477763E1 +8.669980000E2,5.809371706E1 +8.672500000E2,5.957523428E1 +8.675890000E2,5.868790884E1 +8.678670000E2,6.643274765E1 +8.681530000E2,6.202304252E1 +8.684260000E2,6.167390940E1 +8.686760000E2,6.561664622E1 +8.689220000E2,6.221849135E1 +8.691620000E2,5.873701255E1 +8.694080000E2,5.721335717E1 +8.696600000E2,5.775578048E1 +8.699210000E2,6.139190630E1 +8.702060000E2,5.695582014E1 +8.705330000E2,5.285782467E1 +8.708800000E2,5.254436807E1 +8.711320000E2,5.941119733E1 +8.714840000E2,5.561687107E1 +8.717890000E2,5.226341013E1 +8.720340000E2,5.351737673E1 +8.723120000E2,5.581753669E1 +8.725450000E2,5.544476975E1 +8.727930000E2,5.112331517E1 +8.731050000E2,5.669948434E1 +8.733660000E2,5.553741274E1 +8.736450000E2,5.287392842E1 +8.738710000E2,5.342755356E1 +8.742030000E2,5.525376809E1 +8.745760000E2,5.790146612E1 +8.748470000E2,5.775550126E1 +8.750900000E2,5.828043309E1 +8.753860000E2,5.689517506E1 +8.756490000E2,5.836000549E1 +8.759170000E2,5.887049385E1 +8.761640000E2,5.731343570E1 +8.764240000E2,5.947081752E1 +8.766660000E2,5.735732777E1 +8.769150000E2,5.791222148E1 +8.771870000E2,5.217820200E1 +8.775110000E2,5.373516267E1 +8.777550000E2,5.639663701E1 +8.779960000E2,5.308435393E1 +8.782370000E2,5.327040257E1 +8.785510000E2,5.539866825E1 +8.788050000E2,5.451580533E1 +8.791100000E2,5.664888244E1 +8.793670000E2,5.439058144E1 +8.796110000E2,6.546629591E1 +8.799090000E2,6.080313073E1 +8.801560000E2,6.023654065E1 +8.804070000E2,5.547022044E1 +8.807450000E2,5.933402552E1 +8.809880000E2,6.073235462E1 +8.812850000E2,5.811897337E1 +8.815210000E2,5.670873426E1 +8.818240000E2,6.239450766E1 +8.821160000E2,6.033779387E1 +8.823610000E2,5.921328684E1 +8.826600000E2,5.808215882E1 +8.828910000E2,5.927124720E1 +8.831280000E2,5.254346564E1 +8.834120000E2,5.755316817E1 +8.837180000E2,5.815703318E1 +8.840150000E2,5.925974643E1 +8.842610000E2,5.406291788E1 +8.845520000E2,5.892672719E1 +8.847970000E2,6.343231596E1 +8.850390000E2,6.045689612E1 +8.853340000E2,5.903303339E1 +8.855810000E2,5.897514906E1 +8.858230000E2,5.682843230E1 +8.860690000E2,4.647265993E1 +8.863400000E2,5.617216143E1 +8.865730000E2,5.412892937E1 +8.869100000E2,6.210166513E1 +8.872070000E2,6.369099543E1 +8.874540000E2,6.052073025E1 +8.877480000E2,6.125108403E1 +8.879990000E2,6.087163347E1 +8.882550000E2,6.365510666E1 +8.885320000E2,5.341778352E1 +8.887600000E2,5.238943476E1 +8.890050000E2,6.378561240E1 +8.892460000E2,6.182956815E1 +8.895070000E2,6.027537659E1 +8.897770000E2,5.747996426E1 +8.901220000E2,5.606477689E1 +8.903620000E2,5.816493441E1 +8.907030000E2,5.740436721E1 +8.909540000E2,5.812990427E1 +8.912060000E2,5.757163286E1 +8.914520000E2,5.669306215E1 +8.917150000E2,5.593698617E1 +8.919580000E2,5.867011196E1 +8.922060000E2,6.001129970E1 +8.924480000E2,6.247831114E1 +8.927080000E2,5.501506807E1 +8.929550000E2,5.918039480E1 +8.932790000E2,5.750337148E1 +8.935260000E2,5.382626014E1 +8.937850000E2,5.632583646E1 +8.940370000E2,5.552393419E1 +8.943380000E2,5.417609473E1 +8.946050000E2,5.314873345E1 +8.948570000E2,5.537690953E1 +8.951790000E2,6.168371256E1 +8.954540000E2,6.142331687E1 +8.957690000E2,5.914263764E1 +8.960690000E2,6.039127428E1 +8.963670000E2,5.303465172E1 +8.966720000E2,5.819495208E1 +8.969200000E2,5.956457754E1 +8.972240000E2,5.554166388E1 +8.974940000E2,5.700583380E1 +8.978160000E2,5.525596264E1 +8.981210000E2,5.878997726E1 +8.983720000E2,5.661289659E1 +8.986510000E2,6.039909322E1 +8.988730000E2,5.569487247E1 +8.991240000E2,5.857026750E1 +8.993800000E2,6.116905404E1 +8.996580000E2,6.331625006E1 +8.998890000E2,5.612470465E1 +9.001440000E2,5.098243988E1 +9.004020000E2,5.779474181E1 +9.006650000E2,5.597754805E1 +9.009440000E2,5.706395638E1 +9.012380000E2,5.989184595E1 +9.015000000E2,5.905145002E1 +9.017620000E2,5.913397617E1 +9.020230000E2,5.831976398E1 +9.022900000E2,5.400731512E1 +9.025900000E2,6.547285797E1 +9.029050000E2,6.534571775E1 +9.032100000E2,5.428834230E1 +9.034580000E2,4.919896084E1 +9.037180000E2,5.326934205E1 +9.039740000E2,5.135684539E1 +9.042700000E2,5.784030554E1 +9.045180000E2,5.789711892E1 +9.048150000E2,5.501985460E1 +9.050680000E2,5.394185103E1 +9.053920000E2,5.504541187E1 +9.056620000E2,5.574384904E1 +9.059260000E2,5.198297704E1 +9.062920000E2,5.507423148E1 +9.065460000E2,5.073979477E1 +9.068090000E2,5.409355601E1 +9.071500000E2,5.842003605E1 +9.074380000E2,6.323761852E1 +9.076890000E2,5.475142925E1 +9.079510000E2,5.285089191E1 +9.082580000E2,6.228883476E1 +9.085110000E2,6.229139223E1 +9.087590000E2,5.849936549E1 +9.090220000E2,6.382664868E1 +9.092560000E2,5.234586511E1 +9.095720000E2,5.506613760E1 +9.098700000E2,5.883918884E1 +9.101180000E2,5.722745073E1 +9.103980000E2,6.006905181E1 +9.106670000E2,6.333821195E1 +9.109390000E2,5.997503412E1 +9.111770000E2,5.691091005E1 +9.114250000E2,5.629684565E1 +9.117070000E2,5.944947286E1 +9.119370000E2,5.757115704E1 +9.122030000E2,5.617546709E1 +9.125090000E2,5.506166951E1 +9.128480000E2,5.345826069E1 +9.131070000E2,5.586702127E1 +9.133900000E2,6.075354367E1 +9.137040000E2,5.668960998E1 +9.139920000E2,5.584388878E1 +9.142800000E2,5.668519299E1 +9.145740000E2,5.400550993E1 +9.148220000E2,5.668991412E1 +9.150670000E2,5.455006531E1 +9.153720000E2,5.750041942E1 +9.156590000E2,5.756327349E1 +9.159630000E2,5.822694927E1 +9.162110000E2,5.764545771E1 +9.164660000E2,5.716015909E1 +9.167560000E2,5.136001811E1 +9.170200000E2,4.706951064E1 +9.172710000E2,4.999131008E1 +9.175180000E2,5.619976433E1 +9.178030000E2,5.463675948E1 +9.180580000E2,4.995546642E1 +9.183000000E2,5.328928391E1 +9.185570000E2,4.808104957E1 +9.188650000E2,5.411517612E1 +9.191080000E2,5.672946344E1 +9.194270000E2,5.737096863E1 +9.196850000E2,5.974051238E1 +9.199830000E2,5.656564726E1 +9.202340000E2,5.709524531E1 +9.204810000E2,5.408385116E1 +9.208240000E2,5.414410830E1 +9.210650000E2,5.638214177E1 +9.213330000E2,5.753313030E1 +9.216130000E2,5.354803656E1 +9.219120000E2,6.191736419E1 +9.221480000E2,5.734366551E1 +9.224580000E2,5.684475304E1 +9.228030000E2,6.045431811E1 +9.230950000E2,5.973057312E1 +9.233960000E2,5.537690593E1 +9.236620000E2,5.411771801E1 +9.239600000E2,5.513839001E1 +9.242140000E2,5.699753068E1 +9.244670000E2,6.643461088E1 +9.247300000E2,6.062391899E1 +9.250330000E2,5.798096332E1 +9.253240000E2,6.347140522E1 +9.255740000E2,6.166496817E1 +9.259250000E2,6.190058171E1 +9.261820000E2,6.329204590E1 +9.264380000E2,6.389135880E1 +9.267030000E2,5.917517639E1 +9.269480000E2,5.809772267E1 +9.272170000E2,5.733235238E1 +9.274780000E2,5.226841119E1 +9.277860000E2,5.876554483E1 +9.280720000E2,6.281089568E1 +9.283510000E2,5.368859448E1 +9.286400000E2,5.449014251E1 +9.289370000E2,5.589991313E1 +9.292390000E2,5.452044152E1 +9.294860000E2,5.574135623E1 +9.297800000E2,5.656551806E1 +9.300200000E2,5.368800996E1 +9.302990000E2,5.374372369E1 +9.305490000E2,5.520696346E1 +9.308500000E2,5.642038107E1 +9.311480000E2,5.958603376E1 +9.314510000E2,5.775531382E1 +9.316980000E2,5.561486787E1 +9.319610000E2,5.826734748E1 +9.322700000E2,5.604871965E1 +9.325550000E2,5.170668645E1 +9.328670000E2,5.089285684E1 +9.331190000E2,4.724853188E1 +9.333790000E2,4.756075237E1 +9.336260000E2,5.199039629E1 +9.338890000E2,4.980140945E1 +9.341620000E2,5.530081877E1 +9.344120000E2,5.549144740E1 +9.347250000E2,5.515929093E1 +9.349780000E2,5.399104933E1 +9.352760000E2,5.325801117E1 +9.356240000E2,5.040008457E1 +9.359420000E2,5.360316460E1 +9.361890000E2,5.191591881E1 +9.364390000E2,5.324554606E1 +9.366970000E2,5.654671572E1 +9.370100000E2,5.711795620E1 +9.372590000E2,5.478625541E1 +9.375950000E2,5.667621371E1 +9.378550000E2,5.463565976E1 +9.381050000E2,5.398825590E1 +9.383580000E2,5.436030102E1 +9.386390000E2,5.091983440E1 +9.389120000E2,5.286705124E1 +9.391550000E2,5.236775571E1 +9.394300000E2,5.738794921E1 +9.397170000E2,5.727939554E1 +9.399750000E2,6.319402051E1 +9.402560000E2,5.468250624E1 +9.405530000E2,5.641852830E1 +9.408670000E2,6.200700436E1 +9.411390000E2,6.163446308E1 +9.413860000E2,7.148312536E1 +9.416340000E2,6.050927243E1 +9.419040000E2,5.667078757E1 +9.421350000E2,5.749142651E1 +9.424700000E2,5.240604485E1 +9.427760000E2,5.466454134E1 +9.430280000E2,6.082141946E1 +9.433300000E2,6.003969647E1 +9.436110000E2,6.121195378E1 +9.438460000E2,5.625129518E1 +9.441420000E2,5.911131348E1 +9.443880000E2,5.468317436E1 +9.446840000E2,6.009033853E1 +9.449440000E2,5.906624737E1 +9.452490000E2,5.464875325E1 +9.455970000E2,5.384566268E1 +9.458510000E2,5.044039840E1 +9.461140000E2,5.035886237E1 +9.463820000E2,5.734112986E1 +9.466620000E2,5.229112628E1 +9.469690000E2,6.028523542E1 +9.472250000E2,5.837101422E1 +9.475000000E2,5.619491985E1 +9.477970000E2,5.364209552E1 +9.480560000E2,5.511055516E1 +9.483560000E2,5.308396885E1 +9.486650000E2,5.587440008E1 +9.490640000E2,5.273632850E1 +9.493730000E2,6.231816715E1 +9.496570000E2,6.253734875E1 +9.499030000E2,5.554720788E1 +9.501460000E2,5.631566079E1 +9.503970000E2,5.626896653E1 +9.506490000E2,5.691941114E1 +9.508990000E2,5.116659255E1 +9.511440000E2,4.922875084E1 +9.514130000E2,5.936693495E1 +9.517070000E2,5.638156112E1 +9.520200000E2,5.180629212E1 +9.523780000E2,4.998674108E1 +9.526570000E2,4.841587788E1 +9.529100000E2,5.028896526E1 +9.531650000E2,4.965921907E1 +9.534690000E2,4.493319669E1 +9.537260000E2,4.598612712E1 +9.539740000E2,5.276251951E1 +9.542810000E2,4.126037796E1 +9.545830000E2,4.737114191E1 +9.548330000E2,4.411553821E1 +9.550850000E2,4.440050708E1 +9.553840000E2,5.260541790E1 +9.556980000E2,5.273901651E1 +9.559710000E2,5.383409632E1 +9.562220000E2,5.239354977E1 +9.564980000E2,4.759742823E1 +9.568040000E2,5.239869448E1 +9.570530000E2,5.238241691E1 +9.573300000E2,5.227349879E1 +9.575630000E2,5.272394727E1 +9.578410000E2,5.414710772E1 +9.580970000E2,5.325895305E1 +9.583410000E2,5.577122645E1 +9.586370000E2,5.015645058E1 +9.590040000E2,5.173028231E1 +9.593040000E2,5.447959265E1 +9.595640000E2,5.484713415E1 +9.598110000E2,5.470137539E1 +9.601060000E2,5.878769788E1 +9.603740000E2,5.851189839E1 +9.606810000E2,5.400762096E1 +9.609290000E2,5.749049444E1 +9.611870000E2,5.241750519E1 +9.614480000E2,4.979747952E1 +9.616960000E2,5.096881110E1 +9.620030000E2,5.149804171E1 +9.623180000E2,5.481599911E1 +9.625540000E2,5.138365056E1 +9.628240000E2,5.235851031E1 +9.630470000E2,4.871540913E1 +9.632880000E2,5.651540461E1 +9.635860000E2,5.650278128E1 +9.638210000E2,5.704973755E1 +9.641160000E2,5.757712252E1 +9.643960000E2,5.881159691E1 +9.646600000E2,5.355579494E1 +9.649750000E2,5.539751700E1 +9.652910000E2,4.797714339E1 +9.655520000E2,5.082548637E1 +9.658080000E2,5.579830605E1 +9.660780000E2,5.554406278E1 +9.663250000E2,5.354814316E1 +9.665660000E2,5.463107171E1 +9.668090000E2,5.368692433E1 +9.671300000E2,5.364867335E1 +9.674540000E2,5.468973775E1 +9.677060000E2,5.815904844E1 +9.680020000E2,5.598522308E1 +9.682480000E2,5.541083624E1 +9.685850000E2,5.512396132E1 +9.688400000E2,5.530796688E1 +9.691210000E2,5.433954611E1 +9.693810000E2,5.507440645E1 +9.696820000E2,5.086817906E1 +9.699140000E2,5.696191489E1 +9.701640000E2,5.845256581E1 +9.704420000E2,5.620226260E1 +9.706770000E2,5.629047170E1 +9.709750000E2,5.811655252E1 +9.712290000E2,5.703185419E1 +9.714900000E2,5.716734774E1 +9.718450000E2,5.493596869E1 +9.720910000E2,5.909437017E1 +9.723380000E2,5.710675060E1 +9.725910000E2,5.780279559E1 +9.728920000E2,5.860060144E1 +9.731360000E2,6.078900999E1 +9.734260000E2,5.852116194E1 +9.736640000E2,5.905899453E1 +9.739130000E2,5.636299630E1 +9.742090000E2,6.289355999E1 +9.744870000E2,6.167909115E1 +9.747290000E2,6.098057792E1 +9.750690000E2,5.906667343E1 +9.753320000E2,6.018572501E1 +9.756150000E2,5.718512970E1 +9.759100000E2,5.146063018E1 +9.761570000E2,5.733244632E1 +9.764050000E2,5.368365894E1 +9.766600000E2,5.486016267E1 +9.769150000E2,5.908582599E1 +9.771910000E2,5.733773036E1 +9.774400000E2,5.566361416E1 +9.777680000E2,5.819125256E1 +9.781220000E2,5.947694304E1 +9.783640000E2,6.140057637E1 +9.786330000E2,5.721849738E1 +9.788550000E2,5.617504209E1 +9.791010000E2,5.660293849E1 +9.793960000E2,5.174001770E1 +9.796880000E2,5.083474014E1 +9.799290000E2,5.184104339E1 +9.801850000E2,5.025385313E1 +9.804850000E2,5.286605500E1 +9.807270000E2,5.586849562E1 +9.809750000E2,5.666036754E1 +9.812950000E2,5.248500918E1 +9.815810000E2,5.416072977E1 +9.818360000E2,5.799655965E1 +9.821300000E2,5.801841935E1 +9.823770000E2,5.977514968E1 +9.826270000E2,5.676871456E1 +9.828850000E2,5.104814549E1 +9.831730000E2,5.834620153E1 +9.834010000E2,5.660640582E1 +9.836620000E2,5.686451748E1 +9.839750000E2,5.998440952E1 +9.842240000E2,5.556687478E1 +9.846000000E2,5.811069315E1 +9.848430000E2,5.843499893E1 +9.851250000E2,5.180956247E1 +9.853860000E2,5.206236639E1 +9.856480000E2,5.641840701E1 +9.859110000E2,5.518588565E1 +9.861920000E2,5.697237679E1 +9.864550000E2,5.411246614E1 +9.867510000E2,5.214533821E1 +9.869880000E2,5.642389575E1 +9.872440000E2,6.015294933E1 +9.875470000E2,5.809991100E1 +9.879150000E2,6.420044247E1 +9.881610000E2,6.042656173E1 +9.884280000E2,5.938959873E1 +9.886840000E2,6.059888233E1 +9.889870000E2,5.282749720E1 +9.892620000E2,5.638110380E1 +9.895440000E2,4.900409689E1 +9.897740000E2,4.971849802E1 +9.900320000E2,5.061428463E1 +9.903370000E2,5.829922071E1 +9.905860000E2,5.812083213E1 +9.908910000E2,5.500587720E1 +9.911860000E2,5.677481104E1 +9.914380000E2,5.502691141E1 +9.916830000E2,5.294500154E1 +9.919560000E2,5.700444986E1 +9.921770000E2,5.448756275E1 +9.924220000E2,5.785741234E1 +9.927280000E2,5.702180374E1 +9.929670000E2,6.013415875E1 +9.932080000E2,5.533496795E1 +9.934640000E2,5.695301526E1 +9.937440000E2,5.436173732E1 +9.940620000E2,5.092257074E1 +9.944480000E2,4.973000793E1 +9.946940000E2,4.871235512E1 +9.949410000E2,5.171412848E1 +9.951960000E2,5.643245777E1 +9.954520000E2,5.548819002E1 +9.957530000E2,5.694822585E1 +9.960600000E2,5.668072577E1 +9.963110000E2,5.547400320E1 +9.966010000E2,5.667137699E1 +9.968430000E2,5.866196066E1 +9.971120000E2,5.641527163E1 +9.974300000E2,5.505243365E1 +9.977140000E2,5.491253296E1 +9.979940000E2,5.642986287E1 +9.982400000E2,5.111113898E1 +9.985270000E2,5.228293633E1 +9.987770000E2,5.380023266E1 +9.990760000E2,5.259255492E1 +9.993610000E2,5.359948032E1 +9.996550000E2,5.817439497E1 +9.999080000E2,5.712087238E1 +1.000199000E3,6.016800470E1 +1.000435000E3,5.758076017E1 +1.000772000E3,5.328951429E1 +1.001047000E3,5.373102399E1 +1.001303000E3,5.905317642E1 +1.001622000E3,5.478240688E1 +1.001877000E3,5.648896451E1 +1.002173000E3,5.587033976E1 +1.002422000E3,5.995513955E1 +1.002724000E3,6.295760047E1 +1.003003000E3,5.978713154E1 +1.003261000E3,5.669754444E1 +1.003545000E3,5.577942906E1 +1.003827000E3,6.186873273E1 +1.004183000E3,6.253868639E1 +1.004493000E3,5.777226132E1 +1.004770000E3,6.482227668E1 +1.005072000E3,5.923751414E1 +1.005323000E3,5.644465637E1 +1.005601000E3,6.074750234E1 +1.005832000E3,5.683683327E1 +1.006147000E3,5.957418887E1 +1.006418000E3,6.134946851E1 +1.006713000E3,5.641852300E1 +1.006952000E3,5.637674327E1 +1.007310000E3,5.484290206E1 +1.007589000E3,6.426865013E1 +1.007886000E3,5.712036033E1 +1.008127000E3,5.768385080E1 +1.008427000E3,5.812466970E1 +1.008666000E3,6.112344783E1 +1.008973000E3,5.606588478E1 +1.009269000E3,5.809328667E1 +1.009507000E3,5.371315435E1 +1.009763000E3,5.527533595E1 +1.010003000E3,5.390597114E1 +1.010379000E3,5.652035402E1 +1.010658000E3,5.490058638E1 +1.010920000E3,5.927019017E1 +1.011197000E3,5.293113048E1 +1.011458000E3,5.179006266E1 +1.011718000E3,5.366462930E1 +1.011979000E3,5.569421827E1 +1.012229000E3,5.341899104E1 +1.012477000E3,4.863208748E1 +1.012772000E3,6.037154816E1 +1.013036000E3,5.430849576E1 +1.013284000E3,5.735938261E1 +1.013671000E3,5.526482118E1 +1.013957000E3,5.731780297E1 +1.014225000E3,5.205368153E1 +1.014486000E3,5.548863756E1 +1.014733000E3,5.265038263E1 +1.015033000E3,5.986876322E1 +1.015314000E3,5.130643680E1 +1.015590000E3,6.086878634E1 +1.015830000E3,5.798526739E1 +1.016137000E3,6.825745236E1 +1.016387000E3,5.828900876E1 +1.016655000E3,5.873097643E1 +1.017001000E3,6.454090665E1 +1.017329000E3,6.385512775E1 +1.017637000E3,6.691081911E1 +1.017938000E3,6.580217665E1 +1.018229000E3,6.485489311E1 +1.018470000E3,6.387101962E1 +1.018706000E3,6.616835921E1 +1.018997000E3,5.951737331E1 +1.019235000E3,5.386458503E1 +1.019536000E3,5.756977765E1 +1.019801000E3,5.811747841E1 +1.020064000E3,5.930001089E1 +1.020406000E3,5.469664450E1 +1.020673000E3,5.181220980E1 +1.020925000E3,5.483858346E1 +1.021232000E3,5.716842569E1 +1.021527000E3,5.738254897E1 +1.021762000E3,5.628034518E1 +1.022007000E3,5.850971228E1 +1.022258000E3,5.329919175E1 +1.022556000E3,5.482637446E1 +1.022813000E3,5.690503448E1 +1.023071000E3,5.317501594E1 +1.023336000E3,4.870888301E1 +1.023687000E3,6.132281620E1 +1.023965000E3,6.262505101E1 +1.024220000E3,6.180229149E1 +1.024496000E3,6.130993335E1 +1.024741000E3,6.231376381E1 +1.025040000E3,6.164360059E1 +1.025279000E3,5.910065798E1 +1.025533000E3,5.622173801E1 +1.025821000E3,5.290311975E1 +1.026116000E3,5.028293308E1 +1.026403000E3,5.581740437E1 +1.026664000E3,5.988277804E1 +1.027011000E3,5.730548262E1 +1.027305000E3,5.417769573E1 +1.027578000E3,5.250932185E1 +1.027819000E3,5.139919708E1 +1.028128000E3,5.061852216E1 +1.028380000E3,4.722292138E1 +1.028683000E3,5.983070917E1 +1.028956000E3,6.045269830E1 +1.029182000E3,5.777292957E1 +1.029431000E3,5.497807442E1 +1.029734000E3,5.533889528E1 +1.030063000E3,5.373558580E1 +1.030323000E3,5.600729212E1 +1.030620000E3,5.467159629E1 +1.030863000E3,5.246400101E1 +1.031110000E3,5.468037288E1 +1.031367000E3,5.850364516E1 +1.031646000E3,5.490958739E1 +1.031911000E3,5.866929845E1 +1.032210000E3,5.708288591E1 +1.032475000E3,5.498129629E1 +1.032736000E3,5.670272599E1 +1.032986000E3,5.317143219E1 +1.033315000E3,5.758413128E1 +1.033557000E3,6.361635596E1 +1.033846000E3,5.513973379E1 +1.034093000E3,5.215484095E1 +1.034399000E3,5.465926438E1 +1.034684000E3,5.588902955E1 +1.034978000E3,5.387672604E1 +1.035280000E3,5.595327755E1 +1.035543000E3,5.621513504E1 +1.035825000E3,5.991854954E1 +1.036079000E3,5.864640009E1 +1.036322000E3,6.072021936E1 +1.036666000E3,5.462749592E1 +1.036971000E3,5.329083651E1 +1.037264000E3,5.401214501E1 +1.037542000E3,5.242806591E1 +1.037843000E3,5.573267887E1 +1.038091000E3,5.224254554E1 +1.038380000E3,5.453929206E1 +1.038635000E3,5.371826859E1 +1.038891000E3,4.369246898E1 +1.039145000E3,4.547521933E1 +1.039418000E3,4.204639660E1 +1.039750000E3,4.426760298E1 +1.039990000E3,4.955659514E1 +1.040294000E3,4.960859899E1 +1.040560000E3,4.841380220E1 +1.040808000E3,4.914533708E1 +1.041104000E3,4.650609937E1 +1.041370000E3,4.849101938E1 +1.041622000E3,5.065930763E1 +1.041920000E3,4.744161935E1 +1.042161000E3,4.448519483E1 +1.042478000E3,4.726532690E1 +1.042725000E3,4.667923132E1 +1.043042000E3,4.704822757E1 +1.043307000E3,3.950691106E1 +1.043560000E3,5.249697508E1 +1.043835000E3,4.753687679E1 +1.044091000E3,4.843049138E1 +1.044350000E3,5.394643708E1 +1.044644000E3,4.769079035E1 +1.044887000E3,5.111291504E1 +1.045194000E3,5.247298633E1 +1.045445000E3,4.904344971E1 +1.045693000E3,4.405437847E1 +1.045988000E3,4.750888237E1 +1.046301000E3,4.305046000E1 +1.046518000E3,4.630901796E1 +1.046813000E3,4.756289225E1 +1.047053000E3,4.661089273E1 +1.047331000E3,6.143859736E1 +1.047566000E3,5.702483033E1 +1.047860000E3,5.015015196E1 +1.048098000E3,5.180675157E1 +1.048397000E3,4.645218330E1 +1.048640000E3,4.317726503E1 +1.048918000E3,4.962602549E1 +1.049159000E3,4.922447391E1 +1.049523000E3,4.310015818E1 +1.049767000E3,5.584844461E1 +1.050011000E3,5.550466055E1 +1.050294000E3,5.076679182E1 +1.050523000E3,4.777565498E1 +1.050776000E3,5.078379664E1 +1.051031000E3,4.412618688E1 +1.051298000E3,3.933148532E1 +1.051551000E3,4.240994962E1 +1.051799000E3,3.715036539E1 +1.052054000E3,4.541823437E1 +1.052312000E3,3.252240989E1 +1.052661000E3,4.298387800E1 +1.052922000E3,4.065675211E1 +1.053171000E3,3.851226965E1 +1.053417000E3,3.833414863E1 +1.053702000E3,3.734543870E1 +1.053967000E3,4.406198141E1 +1.054269000E3,3.397952572E1 +1.054518000E3,3.018425986E1 +1.054795000E3,2.659023927E1 +1.055055000E3,3.230579484E1 +1.055319000E3,4.027650377E1 +1.055588000E3,3.256611719E1 +1.055936000E3,3.203904394E1 +1.056189000E3,3.024692018E1 +1.056469000E3,4.044611203E1 +1.056698000E3,3.245705712E1 +1.056956000E3,5.087039919E1 +1.057201000E3,5.278557071E1 +1.057507000E3,6.996122129E1 +1.057766000E3,6.951439283E1 +1.058027000E3,6.731609209E1 +1.058291000E3,5.787293958E1 +1.058571000E3,5.774874245E1 +1.058801000E3,5.291748766E1 +1.059132000E3,4.352220528E1 +1.059391000E3,5.556254729E1 +1.059665000E3,5.339220405E1 +1.059951000E3,5.593145301E1 +1.060235000E3,5.299996372E1 +1.060492000E3,4.882317894E1 +1.060733000E3,3.790707311E1 +1.060975000E3,3.470192076E1 +1.061278000E3,4.481563830E1 +1.061519000E3,4.823008935E1 +1.061816000E3,4.719850269E1 +1.062076000E3,4.706381680E1 +1.062331000E3,4.530378435E1 +1.062576000E3,3.456809562E1 +1.062882000E3,3.742453964E1 +1.063154000E3,3.905594906E1 +1.063397000E3,3.672857244E1 +1.063694000E3,2.941779164E1 +1.063926000E3,2.995931983E1 +1.064168000E3,3.455311118E1 +1.064461000E3,3.254662869E1 +1.064708000E3,3.652583843E1 +1.065001000E3,5.229424666E1 +1.065352000E3,5.178814165E1 +1.065606000E3,4.798098259E1 +1.065854000E3,3.636652329E1 +1.066121000E3,4.558252535E1 +1.066366000E3,3.902840121E1 +1.066629000E3,3.106435508E1 +1.066887000E3,2.541330464E1 +1.067179000E3,3.474902335E1 +1.067449000E3,4.492275189E1 +1.067698000E3,3.860211372E1 +1.067955000E3,4.332670525E1 +1.068251000E3,5.147667691E1 +1.068546000E3,5.152069997E1 +1.068797000E3,4.540650098E1 +1.069105000E3,4.486446450E1 +1.069378000E3,4.196481867E1 +1.069632000E3,4.863200791E1 +1.069908000E3,3.878967071E1 +1.070151000E3,3.630888030E1 +1.070413000E3,2.964429880E1 +1.070682000E3,3.354707636E1 +1.070956000E3,4.008490969E1 +1.071248000E3,3.576577653E1 +1.071553000E3,4.349754488E1 +1.071886000E3,3.824859907E1 +1.072130000E3,3.455877689E1 +1.072406000E3,3.622999465E1 +1.072717000E3,3.637608237E1 +1.072984000E3,3.645219519E1 +1.073255000E3,4.353729148E1 +1.073603000E3,4.287473251E1 +1.073856000E3,4.842203791E1 +1.074097000E3,4.484407311E1 +1.074356000E3,4.397007110E1 +1.074628000E3,4.695884235E1 +1.074931000E3,4.627189963E1 +1.075264000E3,4.689571524E1 +1.075614000E3,5.203841291E1 +1.075923000E3,4.610184941E1 +1.076163000E3,4.404432471E1 +1.076475000E3,4.923215011E1 +1.076765000E3,4.466142180E1 +1.077062000E3,4.987282715E1 +1.077375000E3,4.461839454E1 +1.077687000E3,5.085403766E1 +1.077991000E3,4.674512295E1 +1.078232000E3,5.167180279E1 +1.078544000E3,4.780582457E1 +1.078939000E3,4.593914406E1 +1.079187000E3,4.061652220E1 +1.079434000E3,4.347669045E1 +1.079712000E3,4.326983820E1 +1.079966000E3,3.511950991E1 +1.080260000E3,4.755279745E1 +1.080506000E3,4.756343862E1 +1.080756000E3,4.779732167E1 +1.081049000E3,4.991962747E1 +1.081293000E3,5.213887128E1 +1.081586000E3,5.357624469E1 +1.081916000E3,5.141456645E1 +1.082165000E3,5.036532462E1 +1.082460000E3,4.962769973E1 +1.082696000E3,4.506404490E1 +1.082988000E3,4.537987312E1 +1.083220000E3,4.738457007E1 +1.083529000E3,4.698711193E1 +1.083769000E3,4.571430081E1 +1.084079000E3,4.980908007E1 +1.084324000E3,5.082282040E1 +1.084590000E3,5.406004268E1 +1.084876000E3,5.436375886E1 +1.085258000E3,5.361506257E1 +1.085509000E3,5.202937925E1 +1.085815000E3,5.324976969E1 +1.086057000E3,5.371445731E1 +1.086301000E3,5.282162917E1 +1.086550000E3,5.221281857E1 +1.086802000E3,5.263727375E1 +1.087126000E3,5.703022139E1 +1.087384000E3,5.519432869E1 +1.087646000E3,5.426647490E1 +1.087939000E3,5.407342864E1 +1.088175000E3,5.235924404E1 +1.088520000E3,4.681002832E1 +1.088812000E3,4.891237586E1 +1.089076000E3,4.699020733E1 +1.089350000E3,4.902871382E1 +1.089591000E3,5.078145117E1 +1.089837000E3,5.041791921E1 +1.090133000E3,4.603650794E1 +1.090430000E3,4.871755485E1 +1.090660000E3,5.111421073E1 +1.090911000E3,4.581894631E1 +1.091248000E3,4.988189917E1 +1.091630000E3,5.341365920E1 +1.091902000E3,4.962858025E1 +1.092183000E3,4.315344358E1 +1.092440000E3,4.664431132E1 +1.092683000E3,4.616459192E1 +1.092923000E3,4.765071496E1 +1.093171000E3,4.163360687E1 +1.093473000E3,4.537777608E1 +1.093714000E3,4.783603025E1 +1.094007000E3,4.845414260E1 +1.094261000E3,4.799870549E1 +1.094499000E3,4.651309815E1 +1.094792000E3,5.003648984E1 +1.095123000E3,5.202534254E1 +1.095372000E3,5.709400077E1 +1.095625000E3,5.694079106E1 +1.095896000E3,5.715452089E1 +1.096196000E3,5.523378380E1 +1.096438000E3,5.375558627E1 +1.096737000E3,5.665208041E1 +1.096991000E3,5.314654737E1 +1.097292000E3,5.142447849E1 +1.097557000E3,5.330628285E1 +1.097827000E3,5.512040694E1 +1.098167000E3,5.399583122E1 +1.098472000E3,5.540663813E1 +1.098720000E3,5.200546986E1 +1.098960000E3,4.676140326E1 +1.099243000E3,4.798657093E1 +1.099544000E3,4.841724285E1 +1.099804000E3,5.642371618E1 +1.100109000E3,5.409000726E1 +1.100381000E3,5.348646719E1 +1.100630000E3,5.346537578E1 +1.100927000E3,5.422782845E1 +1.101164000E3,5.395323822E1 +1.101495000E3,5.383967560E1 +1.101763000E3,5.667828538E1 +1.102044000E3,4.764690784E1 +1.102307000E3,5.353530254E1 +1.102613000E3,5.568430762E1 +1.102906000E3,5.431580275E1 +1.103147000E3,5.193331555E1 +1.103441000E3,5.040945762E1 +1.103677000E3,5.333005838E1 +1.103968000E3,4.947534745E1 +1.104272000E3,5.306270968E1 +1.104564000E3,5.537230515E1 +1.104799000E3,4.876041085E1 +1.105069000E3,5.109409535E1 +1.105330000E3,5.087734214E1 +1.105587000E3,5.225642483E1 +1.105838000E3,5.176680091E1 +1.106135000E3,5.535939212E1 +1.106380000E3,5.666892185E1 +1.106622000E3,5.658846562E1 +1.106895000E3,5.577897889E1 +1.107150000E3,5.157178717E1 +1.107431000E3,5.284488409E1 +1.107756000E3,5.415639955E1 +1.108002000E3,5.465643057E1 +1.108313000E3,4.654328988E1 +1.108563000E3,5.038890380E1 +1.108811000E3,4.602751738E1 +1.109073000E3,4.801243396E1 +1.109375000E3,4.782472616E1 +1.109667000E3,4.666447221E1 +1.109943000E3,5.156469126E1 +1.110192000E3,4.949682888E1 +1.110448000E3,4.919673339E1 +1.110752000E3,4.862521519E1 +1.111045000E3,5.122379655E1 +1.111295000E3,4.813892217E1 +1.111515000E3,4.901611396E1 +1.111761000E3,4.905664967E1 +1.112005000E3,4.647618514E1 +1.112265000E3,4.730688076E1 +1.112537000E3,5.039121351E1 +1.112793000E3,4.985611957E1 +1.113101000E3,5.474563863E1 +1.113387000E3,5.028870882E1 +1.113678000E3,5.073784750E1 +1.113952000E3,4.995138555E1 +1.114291000E3,4.790039203E1 +1.114554000E3,4.764335594E1 +1.114849000E3,5.057104591E1 +1.115096000E3,5.107398730E1 +1.115401000E3,4.800391913E1 +1.115672000E3,4.553282874E1 +1.115895000E3,4.569523337E1 +1.116194000E3,4.480844215E1 +1.116425000E3,4.772339962E1 +1.116664000E3,5.255452638E1 +1.116906000E3,4.927433934E1 +1.117202000E3,4.871369865E1 +1.117530000E3,4.928110420E1 +1.117840000E3,5.705383563E1 +1.118146000E3,4.880674861E1 +1.118418000E3,5.038180726E1 +1.118687000E3,5.145980404E1 +1.118950000E3,5.338008269E1 +1.119227000E3,5.227728425E1 +1.119468000E3,5.450689216E1 +1.119736000E3,5.844246451E1 +1.120049000E3,5.459398611E1 +1.120351000E3,5.526423567E1 +1.120605000E3,5.228963309E1 +1.120918000E3,5.598288902E1 +1.121182000E3,5.280889802E1 +1.121489000E3,4.974717420E1 +1.121729000E3,5.137523152E1 +1.121978000E3,5.052356297E1 +1.122235000E3,5.240368249E1 +1.122503000E3,4.826380791E1 +1.122775000E3,5.095403791E1 +1.123036000E3,5.799909934E1 +1.123291000E3,4.889512711E1 +1.123587000E3,5.622808486E1 +1.123874000E3,5.230369090E1 +1.124235000E3,5.081102316E1 +1.124544000E3,5.628773803E1 +1.124826000E3,5.810547372E1 +1.125153000E3,5.508029719E1 +1.125432000E3,5.576573503E1 +1.125722000E3,5.346022180E1 +1.125978000E3,5.279748306E1 +1.126234000E3,5.604802053E1 +1.126502000E3,5.937326657E1 +1.126804000E3,5.703447215E1 +1.127047000E3,5.520354594E1 +1.127314000E3,5.551787326E1 +1.127554000E3,5.740837773E1 +1.127843000E3,5.663015330E1 +1.128135000E3,5.649615150E1 +1.128380000E3,5.731556257E1 +1.128677000E3,6.079986861E1 +1.128914000E3,5.820128856E1 +1.129207000E3,6.091746513E1 +1.129442000E3,6.126941240E1 +1.129745000E3,4.541170906E1 +1.129980000E3,4.341485096E1 +1.130277000E3,4.833777967E1 +1.130573000E3,4.472710223E1 +1.130815000E3,5.059675199E1 +1.131062000E3,3.863826940E1 +1.131353000E3,4.925455740E1 +1.131589000E3,4.859989956E1 +1.131881000E3,5.113067908E1 +1.132117000E3,5.054542106E1 +1.132418000E3,4.827479925E1 +1.132654000E3,4.610884488E1 +1.132948000E3,4.879734536E1 +1.133241000E3,5.074680390E1 +1.133563000E3,5.119298220E1 +1.133864000E3,4.861265792E1 +1.134166000E3,5.001512903E1 +1.134452000E3,5.059053464E1 +1.134716000E3,4.999839479E1 +1.134967000E3,4.960069086E1 +1.135222000E3,5.320256888E1 +1.135494000E3,5.604818163E1 +1.135742000E3,5.625768045E1 +1.135999000E3,5.261645024E1 +1.136244000E3,5.105081932E1 +1.136501000E3,5.616444939E1 +1.136847000E3,5.624064264E1 +1.137105000E3,5.654097446E1 +1.137391000E3,5.807884104E1 +1.137717000E3,5.436169891E1 +1.137970000E3,5.763959225E1 +1.138239000E3,5.465216875E1 +1.138486000E3,5.094509116E1 +1.138731000E3,5.425415233E1 +1.138977000E3,5.143709697E1 +1.139259000E3,5.032545705E1 +1.139527000E3,5.906031130E1 +1.139800000E3,5.308709054E1 +1.140168000E3,5.407062541E1 +1.140423000E3,5.585261351E1 +1.140694000E3,5.463535881E1 +1.140949000E3,5.407603664E1 +1.141230000E3,5.495767686E1 +1.141512000E3,5.639433741E1 +1.141818000E3,5.555715330E1 +1.142072000E3,5.729232944E1 +1.142323000E3,5.553013253E1 +1.142578000E3,5.648251207E1 +1.142844000E3,5.786931075E1 +1.143143000E3,6.007493220E1 +1.143523000E3,5.752076543E1 +1.143836000E3,5.573324560E1 +1.144090000E3,5.641950784E1 +1.144396000E3,5.532270625E1 +1.144644000E3,5.561239732E1 +1.144940000E3,5.206707456E1 +1.145212000E3,5.092140902E1 +1.145511000E3,5.452891649E1 +1.145770000E3,5.331137977E1 +1.146042000E3,5.366568195E1 +1.146338000E3,5.227174013E1 +1.146650000E3,5.423955559E1 +1.146934000E3,5.781916580E1 +1.147218000E3,5.532962824E1 +1.147467000E3,5.502661676E1 +1.147687000E3,5.823979674E1 +1.147961000E3,5.538066560E1 +1.148276000E3,5.423260060E1 +1.148528000E3,5.197461977E1 +1.148799000E3,5.154724487E1 +1.149057000E3,5.473685923E1 +1.149367000E3,5.647867848E1 +1.149660000E3,5.489455072E1 +1.150037000E3,6.072892064E1 +1.150335000E3,5.543869835E1 +1.150594000E3,5.667713742E1 +1.150870000E3,5.818755157E1 +1.151164000E3,5.210849760E1 +1.151411000E3,5.095671455E1 +1.151703000E3,5.254983272E1 +1.152002000E3,5.585064224E1 +1.152253000E3,5.739007574E1 +1.152582000E3,5.895179917E1 +1.152860000E3,5.461317681E1 +1.153122000E3,5.345759293E1 +1.153381000E3,5.267971619E1 +1.153684000E3,6.006602205E1 +1.153986000E3,5.573552061E1 +1.154286000E3,5.518963618E1 +1.154531000E3,5.342922095E1 +1.154792000E3,5.257536969E1 +1.155139000E3,4.887945516E1 +1.155435000E3,4.702411688E1 +1.155680000E3,4.867646616E1 +1.155978000E3,4.811861077E1 +1.156361000E3,4.915586406E1 +1.156670000E3,5.033026069E1 +1.156976000E3,5.393908378E1 +1.157274000E3,5.295128205E1 +1.157524000E3,5.249671789E1 +1.157816000E3,5.314344994E1 +1.158052000E3,5.237342933E1 +1.158353000E3,5.300284286E1 +1.158590000E3,5.170068449E1 +1.158867000E3,5.174146304E1 +1.159147000E3,4.929588783E1 +1.159411000E3,5.699090425E1 +1.159752000E3,5.266690351E1 +1.160068000E3,5.746767577E1 +1.160360000E3,5.375850846E1 +1.160640000E3,5.373794020E1 +1.160985000E3,5.304914530E1 +1.161280000E3,5.198754593E1 +1.161525000E3,5.019848207E1 +1.161766000E3,5.164623609E1 +1.162020000E3,5.363319210E1 +1.162324000E3,5.439011044E1 +1.162564000E3,5.304648945E1 +1.162816000E3,5.174573718E1 +1.163177000E3,4.505755779E1 +1.163462000E3,4.894753105E1 +1.163738000E3,5.064933943E1 +1.164013000E3,5.245879056E1 +1.164255000E3,5.017914517E1 +1.164568000E3,5.189205429E1 +1.164823000E3,5.038961444E1 +1.165052000E3,5.072118593E1 +1.165297000E3,4.831662547E1 +1.165552000E3,5.050204887E1 +1.165808000E3,5.308107982E1 +1.166062000E3,4.878509871E1 +1.166392000E3,5.002605106E1 +1.166654000E3,5.320265697E1 +1.166911000E3,4.403273534E1 +1.167180000E3,5.161386051E1 +1.167455000E3,4.986209571E1 +1.167692000E3,4.993305836E1 +1.167973000E3,5.173621365E1 +1.168216000E3,5.385559129E1 +1.168491000E3,5.543019156E1 +1.168757000E3,5.019966657E1 +1.169035000E3,5.569516326E1 +1.169296000E3,5.216419082E1 +1.169676000E3,5.398731996E1 +1.169933000E3,5.465625282E1 +1.170197000E3,5.451774184E1 +1.170449000E3,5.328129322E1 +1.170705000E3,5.452639907E1 +1.170963000E3,5.713735254E1 +1.171272000E3,5.551413923E1 +1.171528000E3,5.604966001E1 +1.171779000E3,5.340478404E1 +1.172038000E3,5.107817821E1 +1.172291000E3,5.218990306E1 +1.172602000E3,4.830451720E1 +1.172964000E3,5.276802164E1 +1.173245000E3,5.191204687E1 +1.173527000E3,5.337367972E1 +1.173838000E3,5.462664550E1 +1.174090000E3,5.304724513E1 +1.174379000E3,5.193251440E1 +1.174628000E3,5.283915893E1 +1.174936000E3,5.036641160E1 +1.175236000E3,4.890810708E1 +1.175487000E3,4.805298565E1 +1.175750000E3,5.067335741E1 +1.176019000E3,4.961207397E1 +1.176335000E3,4.820862314E1 +1.176634000E3,5.328684116E1 +1.176883000E3,5.122009001E1 +1.177165000E3,5.878687770E1 +1.177412000E3,5.487235950E1 +1.177709000E3,5.224569426E1 +1.178006000E3,5.403405997E1 +1.178246000E3,5.388661901E1 +1.178490000E3,5.237426881E1 +1.178734000E3,5.372043820E1 +1.179050000E3,5.471170909E1 +1.179387000E3,5.129350436E1 +1.179686000E3,4.660070824E1 +1.179916000E3,4.541361068E1 +1.180159000E3,4.365576113E1 +1.180466000E3,4.771103553E1 +1.180756000E3,4.863237791E1 +1.181008000E3,5.534959697E1 +1.181314000E3,5.376444060E1 +1.181609000E3,5.130885425E1 +1.181851000E3,5.256948786E1 +1.182151000E3,5.321964637E1 +1.182393000E3,5.074776981E1 +1.182622000E3,4.979941250E1 +1.182873000E3,5.445637667E1 +1.183116000E3,4.449721128E1 +1.183420000E3,5.086906199E1 +1.183676000E3,5.067998506E1 +1.183927000E3,5.352019181E1 +1.184219000E3,4.851971310E1 +1.184517000E3,5.123853013E1 +1.184764000E3,5.278221141E1 +1.185010000E3,5.126409245E1 +1.185297000E3,5.249182764E1 +1.185665000E3,5.346599478E1 +1.185972000E3,5.052250297E1 +1.186225000E3,5.389354916E1 +1.186534000E3,5.372737626E1 +1.186796000E3,5.415645782E1 +1.187048000E3,5.441424865E1 +1.187317000E3,5.470553815E1 +1.187622000E3,5.559990781E1 +1.187913000E3,5.619293356E1 +1.188186000E3,4.869472445E1 +1.188442000E3,5.069948923E1 +1.188718000E3,5.296813397E1 +1.189051000E3,5.015003063E1 +1.189308000E3,5.110938827E1 +1.189570000E3,5.250182053E1 +1.189815000E3,5.240850659E1 +1.190062000E3,5.446862868E1 +1.190368000E3,5.270463767E1 +1.190629000E3,5.117539458E1 +1.190931000E3,5.543767536E1 +1.191207000E3,5.348622922E1 +1.191505000E3,5.112152946E1 +1.191761000E3,4.905277341E1 +1.192068000E3,5.456405848E1 +1.192487000E3,5.016322677E1 +1.192732000E3,4.971711263E1 +1.192976000E3,5.396031961E1 +1.193258000E3,5.018645567E1 +1.193531000E3,4.895586707E1 +1.193790000E3,5.442023654E1 +1.194055000E3,5.160697029E1 +1.194326000E3,4.822365107E1 +1.194605000E3,5.396633777E1 +1.194903000E3,5.031021734E1 +1.195141000E3,5.278015326E1 +1.195431000E3,4.949576105E1 +1.195801000E3,5.244682833E1 +1.196076000E3,5.508575727E1 +1.196371000E3,5.161802747E1 +1.196603000E3,5.716896987E1 +1.196858000E3,5.210002974E1 +1.197207000E3,5.483594793E1 +1.197503000E3,5.204828926E1 +1.197774000E3,5.339169315E1 +1.198054000E3,4.934781945E1 +1.198312000E3,5.918797425E1 +1.198559000E3,5.025254784E1 +1.198808000E3,5.317746302E1 +1.199152000E3,5.656715516E1 +1.199464000E3,5.448426177E1 +1.199717000E3,5.419526565E1 +1.199961000E3,5.304156540E1 +1.200219000E3,4.961182292E1 +1.200480000E3,5.259766625E1 +1.200730000E3,5.295115767E1 +1.201029000E3,5.365389524E1 +1.201288000E3,5.465027972E1 +1.201538000E3,5.131261505E1 +1.201807000E3,5.767453751E1 +1.202112000E3,5.316006082E1 +1.202485000E3,5.263333972E1 +1.202739000E3,4.966297173E1 +1.203041000E3,5.282706501E1 +1.203300000E3,4.950274237E1 +1.203539000E3,4.377779375E1 +1.203832000E3,5.274682795E1 +1.204077000E3,5.348405653E1 +1.204320000E3,5.647600154E1 +1.204615000E3,4.835002395E1 +1.204854000E3,4.440243109E1 +1.205149000E3,4.673035253E1 +1.205410000E3,4.901106802E1 +1.205666000E3,5.311033159E1 +1.205952000E3,5.020567211E1 +1.206248000E3,5.046889058E1 +1.206545000E3,6.150607502E1 +1.206779000E3,5.260331634E1 +1.207093000E3,5.183291791E1 +1.207367000E3,4.957331060E1 +1.207610000E3,5.139200370E1 +1.207857000E3,5.005726187E1 +1.208158000E3,4.979521937E1 +1.208398000E3,5.178137337E1 +1.208738000E3,4.632694184E1 +1.208994000E3,4.836915777E1 +1.209279000E3,4.869228435E1 +1.209528000E3,5.096507040E1 +1.209784000E3,4.718590489E1 +1.210053000E3,4.835967114E1 +1.210281000E3,4.725223201E1 +1.210542000E3,5.172958855E1 +1.210823000E3,5.546336112E1 +1.211051000E3,5.448218663E1 +1.211300000E3,5.371995163E1 +1.211551000E3,4.887559574E1 +1.211926000E3,4.975732945E1 +1.212205000E3,5.041543230E1 +1.212482000E3,4.863959509E1 +1.212730000E3,5.047232348E1 +1.212990000E3,4.824384094E1 +1.213232000E3,5.039377586E1 +1.213493000E3,4.517891187E1 +1.213814000E3,4.686032989E1 +1.214062000E3,4.852263494E1 +1.214337000E3,4.897277606E1 +1.214586000E3,4.662047985E1 +1.214832000E3,5.483925472E1 +1.215143000E3,5.677489998E1 +1.215372000E3,5.470688254E1 +1.215664000E3,5.408747991E1 +1.215962000E3,5.167832591E1 +1.216227000E3,5.463116224E1 +1.216504000E3,5.335564969E1 +1.216747000E3,4.832376612E1 +1.216996000E3,4.918538596E1 +1.217306000E3,5.329611015E1 +1.217618000E3,5.364881155E1 +1.217885000E3,5.087209115E1 +1.218149000E3,4.967310650E1 +1.218497000E3,4.842689624E1 +1.218801000E3,5.442588779E1 +1.219043000E3,5.338467746E1 +1.219349000E3,5.187371665E1 +1.219600000E3,4.992515182E1 +1.219883000E3,5.205809257E1 +1.220161000E3,5.374364962E1 +1.220471000E3,5.145920034E1 +1.220752000E3,5.112774200E1 +1.221009000E3,4.969936214E1 +1.221258000E3,4.906585252E1 +1.221519000E3,4.971022706E1 +1.221873000E3,5.039216656E1 +1.222125000E3,4.735018859E1 +1.222388000E3,5.025223930E1 +1.222647000E3,5.349102952E1 +1.222903000E3,5.894430216E1 +1.223210000E3,5.133834742E1 +1.223464000E3,5.378681025E1 +1.223708000E3,5.646161983E1 +1.223949000E3,5.127610878E1 +1.224189000E3,5.295211205E1 +1.224441000E3,5.074229414E1 +1.224698000E3,5.428527885E1 +1.225064000E3,6.064230054E1 +1.225333000E3,5.545461106E1 +1.225591000E3,5.085263163E1 +1.225847000E3,4.867332677E1 +1.226137000E3,4.828036819E1 +1.226394000E3,5.187031217E1 +1.226668000E3,4.691949774E1 +1.226931000E3,4.605300024E1 +1.227219000E3,4.319091646E1 +1.227493000E3,4.827268256E1 +1.227791000E3,4.873371181E1 +1.228031000E3,4.895629331E1 +1.228388000E3,4.831306026E1 +1.228651000E3,5.150144778E1 +1.228942000E3,5.210555115E1 +1.229190000E3,4.868630793E1 +1.229442000E3,5.072280558E1 +1.229686000E3,5.520857657E1 +1.229933000E3,5.597505745E1 +1.230228000E3,5.309096620E1 +1.230467000E3,5.340491117E1 +1.230765000E3,4.966814228E1 +1.231012000E3,4.811713105E1 +1.231316000E3,5.037869561E1 +1.231666000E3,4.768651081E1 +1.231948000E3,4.577834304E1 +1.232207000E3,4.455407567E1 +1.232510000E3,5.091422235E1 +1.232802000E3,4.990562511E1 +1.233047000E3,5.178152081E1 +1.233344000E3,5.312014577E1 +1.233592000E3,5.002236071E1 +1.233892000E3,5.158473192E1 +1.234173000E3,4.692863129E1 +1.234463000E3,4.643331531E1 +1.234792000E3,4.659156592E1 +1.235060000E3,4.662718910E1 +1.235313000E3,5.204491267E1 +1.235577000E3,5.165973487E1 +1.235837000E3,4.753691687E1 +1.236124000E3,5.179615379E1 +1.236401000E3,4.807409380E1 +1.236654000E3,5.474790946E1 +1.236923000E3,4.946475170E1 +1.237180000E3,4.949471083E1 +1.237426000E3,4.669168363E1 +1.237743000E3,5.529942944E1 +1.238061000E3,5.997488643E1 +1.238363000E3,5.302222406E1 +1.238611000E3,5.022506453E1 +1.238856000E3,4.864145193E1 +1.239102000E3,5.299123845E1 +1.239357000E3,4.682866815E1 +1.239657000E3,4.770894983E1 +1.239902000E3,4.813746372E1 +1.240150000E3,4.571771059E1 +1.240465000E3,5.354012247E1 +1.240765000E3,5.830707734E1 +1.241013000E3,5.483189048E1 +1.241344000E3,5.157405593E1 +1.241606000E3,5.072581437E1 +1.241868000E3,5.137979859E1 +1.242133000E3,4.849261303E1 +1.242396000E3,5.556107710E1 +1.242656000E3,4.958779284E1 +1.242959000E3,5.301548021E1 +1.243232000E3,5.475621292E1 +1.243501000E3,5.660789219E1 +1.243755000E3,5.350018163E1 +1.244010000E3,5.415674835E1 +1.244349000E3,5.699979568E1 +1.244717000E3,5.660044844E1 +1.245015000E3,5.808533709E1 +1.245259000E3,5.881859790E1 +1.245558000E3,5.728882886E1 +1.245808000E3,6.044308225E1 +1.246079000E3,5.893900513E1 +1.246326000E3,5.279872381E1 +1.246637000E3,5.769196864E1 +1.246935000E3,5.963088900E1 +1.247181000E3,5.367341836E1 +1.247508000E3,4.963645506E1 +1.247848000E3,5.265770489E1 +1.248115000E3,5.355743381E1 +1.248359000E3,4.891015342E1 +1.248659000E3,4.819353582E1 +1.248902000E3,4.966403220E1 +1.249199000E3,4.977495696E1 +1.249449000E3,5.715212626E1 +1.249708000E3,5.458337902E1 +1.249983000E3,4.910795823E1 +1.250282000E3,5.184902745E1 +1.250527000E3,5.416053460E1 +1.250777000E3,5.320773170E1 +1.251084000E3,5.422274265E1 +1.251342000E3,5.429456299E1 +1.251602000E3,5.910733722E1 +1.251866000E3,5.226490816E1 +1.252178000E3,5.191466859E1 +1.252452000E3,5.143339371E1 +1.252681000E3,5.066846779E1 +1.252975000E3,4.928639562E1 +1.253256000E3,4.916995298E1 +1.253528000E3,5.115941927E1 +1.253816000E3,4.850268402E1 +1.254063000E3,5.682920937E1 +1.254418000E3,5.583927157E1 +1.254700000E3,5.243405901E1 +1.254947000E3,5.411796563E1 +1.255215000E3,5.538314624E1 +1.255487000E3,5.447026824E1 +1.255748000E3,5.115232974E1 +1.256046000E3,5.273125350E1 +1.256281000E3,5.501639825E1 +1.256559000E3,5.470702619E1 +1.256867000E3,5.330168249E1 +1.257116000E3,5.680033697E1 +1.257361000E3,5.088137081E1 +1.257690000E3,4.771044205E1 +1.257935000E3,5.556188303E1 +1.258189000E3,5.821474305E1 +1.258460000E3,5.913083175E1 +1.258757000E3,5.624840253E1 +1.259001000E3,5.575040009E1 +1.259294000E3,5.295140054E1 +1.259581000E3,5.547885633E1 +1.259831000E3,5.659634167E1 +1.260084000E3,5.552607398E1 +1.260378000E3,5.399987136E1 +1.260676000E3,5.741946227E1 +1.260997000E3,5.622829253E1 +1.261272000E3,5.638519080E1 +1.261569000E3,5.222122782E1 +1.261810000E3,5.168558616E1 +1.262055000E3,5.937417075E1 +1.262351000E3,5.419990938E1 +1.262597000E3,5.469291977E1 +1.262893000E3,5.501007253E1 +1.263142000E3,5.356116387E1 +1.263421000E3,5.643294047E1 +1.263644000E3,5.627927149E1 +1.263964000E3,5.547827797E1 +1.264255000E3,5.434029164E1 +1.264552000E3,5.355134450E1 +1.264791000E3,5.268456483E1 +1.265090000E3,5.304298782E1 +1.265342000E3,5.292557941E1 +1.265637000E3,5.267823535E1 +1.265885000E3,5.076475521E1 +1.266186000E3,5.470463807E1 +1.266480000E3,5.369531663E1 +1.266727000E3,5.321314382E1 +1.267074000E3,5.430022488E1 +1.267386000E3,5.498366079E1 +1.267650000E3,5.373765381E1 +1.267926000E3,5.631680810E1 +1.268156000E3,5.314598601E1 +1.268459000E3,5.446778700E1 +1.268718000E3,5.461487175E1 +1.269029000E3,4.723979401E1 +1.269322000E3,5.050485841E1 +1.269602000E3,5.263446338E1 +1.269914000E3,5.195043172E1 +1.270180000E3,5.361139844E1 +1.270542000E3,5.127785292E1 +1.270796000E3,5.111084292E1 +1.271061000E3,5.030178225E1 +1.271329000E3,4.978955516E1 +1.271616000E3,5.398913319E1 +1.271862000E3,5.537806166E1 +1.272155000E3,5.301545016E1 +1.272407000E3,5.450597504E1 +1.272651000E3,5.090153644E1 +1.272906000E3,5.335437953E1 +1.273148000E3,4.673762491E1 +1.273392000E3,5.062539325E1 +1.273710000E3,5.110756444E1 +1.273960000E3,5.466659884E1 +1.274217000E3,5.158121780E1 +1.274511000E3,5.575560452E1 +1.274759000E3,5.536976579E1 +1.275054000E3,5.425250328E1 +1.275298000E3,5.448034930E1 +1.275544000E3,5.185016662E1 +1.275828000E3,5.206320816E1 +1.276126000E3,5.118466074E1 +1.276376000E3,4.943928704E1 +1.276707000E3,5.090592254E1 +1.276972000E3,5.767487174E1 +1.277251000E3,5.481331862E1 +1.277544000E3,5.385854096E1 +1.277810000E3,5.179333541E1 +1.278097000E3,5.161992279E1 +1.278344000E3,5.248655937E1 +1.278657000E3,5.064236034E1 +1.278927000E3,4.915402835E1 +1.279197000E3,5.321156971E1 +1.279471000E3,5.438812541E1 +1.279734000E3,5.482588411E1 +1.280065000E3,5.157318203E1 +1.280296000E3,5.173449962E1 +1.280546000E3,5.465953878E1 +1.280843000E3,5.457680704E1 +1.281077000E3,5.562152963E1 +1.281325000E3,5.460406982E1 +1.281570000E3,5.232421403E1 +1.281870000E3,5.207576719E1 +1.282135000E3,4.968186040E1 +1.282378000E3,5.237915347E1 +1.282628000E3,4.745539727E1 +1.282877000E3,5.255989147E1 +1.283195000E3,5.301690658E1 +1.283467000E3,5.283539029E1 +1.283717000E3,5.083105477E1 +1.283978000E3,4.559322742E1 +1.284235000E3,4.934435088E1 +1.284538000E3,5.265118466E1 +1.284812000E3,5.302155906E1 +1.285045000E3,5.294725202E1 +1.285352000E3,5.129236762E1 +1.285646000E3,5.402858483E1 +1.285898000E3,5.434527110E1 +1.286189000E3,5.525625388E1 +1.286515000E3,5.653073998E1 +1.286819000E3,5.704731902E1 +1.287101000E3,5.310035962E1 +1.287387000E3,5.474072190E1 +1.287649000E3,5.496979063E1 +1.287925000E3,5.528941101E1 +1.288193000E3,5.394330028E1 +1.288492000E3,4.829171318E1 +1.288740000E3,5.076324605E1 +1.289004000E3,4.673843249E1 +1.289280000E3,5.345749476E1 +1.289584000E3,4.955238815E1 +1.289923000E3,5.268555513E1 +1.290206000E3,5.092762320E1 +1.290445000E3,5.180504716E1 +1.290779000E3,5.421996562E1 +1.291081000E3,5.408565728E1 +1.291322000E3,5.466627749E1 +1.291622000E3,5.247549140E1 +1.291870000E3,5.438915347E1 +1.292125000E3,5.526358440E1 +1.292428000E3,5.407200655E1 +1.292723000E3,5.160593410E1 +1.293035000E3,5.231731426E1 +1.293342000E3,5.126765219E1 +1.293626000E3,4.802016847E1 +1.293922000E3,5.428603515E1 +1.294199000E3,5.305841291E1 +1.294451000E3,5.676250586E1 +1.294738000E3,5.921971496E1 +1.295005000E3,5.812051865E1 +1.295266000E3,5.671365947E1 +1.295512000E3,5.389157640E1 +1.295809000E3,5.417883641E1 +1.296087000E3,5.169085532E1 +1.296408000E3,5.027989141E1 +1.296704000E3,5.801273246E1 +1.296951000E3,5.777618357E1 +1.297241000E3,5.598217178E1 +1.297547000E3,5.590671112E1 +1.297806000E3,6.302454961E1 +1.298073000E3,5.716944646E1 +1.298330000E3,5.693666329E1 +1.298591000E3,5.374930006E1 +1.298851000E3,5.170089530E1 +1.299100000E3,6.243829367E1 +1.299340000E3,5.522680485E1 +1.299673000E3,5.451288060E1 +1.299933000E3,5.720613947E1 +1.300193000E3,5.131457759E1 +1.300510000E3,5.593393786E1 +1.300810000E3,5.344184529E1 +1.301099000E3,5.432320381E1 +1.301355000E3,5.294046944E1 +1.301602000E3,5.330691828E1 +1.301911000E3,4.899471979E1 +1.302175000E3,5.054546621E1 +1.302420000E3,4.914598102E1 +1.302706000E3,5.757950400E1 +1.303045000E3,5.798603958E1 +1.303343000E3,5.685278830E1 +1.303584000E3,5.272645619E1 +1.303869000E3,5.576083132E1 +1.304169000E3,5.311655900E1 +1.304414000E3,5.297304035E1 +1.304724000E3,6.119658997E1 +1.304998000E3,5.921259630E1 +1.305275000E3,5.974785927E1 +1.305567000E3,5.829108198E1 +1.305799000E3,5.656256791E1 +1.306151000E3,5.263150293E1 +1.306475000E3,5.719715846E1 +1.306754000E3,5.746813017E1 +1.307020000E3,6.063794361E1 +1.307320000E3,5.945639283E1 +1.307570000E3,5.898495898E1 +1.307856000E3,5.345744690E1 +1.308127000E3,5.882374416E1 +1.308390000E3,5.704844280E1 +1.308660000E3,6.230218860E1 +1.308982000E3,5.794977886E1 +1.309252000E3,5.609480230E1 +1.309620000E3,5.439173238E1 +1.309924000E3,5.804315704E1 +1.310253000E3,5.898090143E1 +1.310510000E3,5.933785859E1 +1.310826000E3,5.484966867E1 +1.311077000E3,5.841635068E1 +1.311358000E3,5.536029260E1 +1.311601000E3,5.555523834E1 +1.311895000E3,5.637714479E1 +1.312195000E3,5.253312652E1 +1.312445000E3,5.377927694E1 +1.312696000E3,5.757954833E1 +1.313038000E3,5.500733438E1 +1.313282000E3,5.367385274E1 +1.313558000E3,5.610715122E1 +1.313797000E3,5.528556803E1 +1.314063000E3,5.884958532E1 +1.314412000E3,5.458036035E1 +1.314671000E3,5.765344335E1 +1.314945000E3,5.139756723E1 +1.315223000E3,5.546002517E1 +1.315503000E3,5.608276603E1 +1.315733000E3,5.719791479E1 +1.315986000E3,5.413888898E1 +1.316329000E3,5.789500166E1 +1.316579000E3,5.404086097E1 +1.316819000E3,6.021843554E1 +1.317067000E3,5.929690830E1 +1.317365000E3,6.066063258E1 +1.317666000E3,5.465341745E1 +1.317917000E3,5.115712079E1 +1.318169000E3,4.986479689E1 +1.318470000E3,5.351977371E1 +1.318716000E3,5.614277654E1 +1.318987000E3,5.824140620E1 +1.319280000E3,5.863858703E1 +1.319646000E3,5.908977231E1 +1.319902000E3,5.867594430E1 +1.320142000E3,5.256185028E1 +1.320379000E3,5.916248935E1 +1.320672000E3,5.829134786E1 +1.320910000E3,5.729121950E1 +1.321203000E3,5.817253701E1 +1.321434000E3,5.958327052E1 +1.321726000E3,6.109571062E1 +1.321963000E3,6.309400740E1 +1.322263000E3,6.381431561E1 +1.322586000E3,6.124594205E1 +1.322839000E3,6.120886427E1 +1.323128000E3,5.624496406E1 +1.323377000E3,6.205845751E1 +1.323676000E3,6.248705287E1 +1.323968000E3,6.259357777E1 +1.324217000E3,6.168308921E1 +1.324496000E3,6.128297543E1 +1.324731000E3,5.975404370E1 +1.325024000E3,6.147148959E1 +1.325261000E3,6.101142333E1 +1.325573000E3,5.682124874E1 +1.325854000E3,5.869490284E1 +1.326149000E3,5.646663249E1 +1.326392000E3,5.662110608E1 +1.326643000E3,5.067702480E1 +1.326984000E3,5.759763927E1 +1.327264000E3,5.613584630E1 +1.327489000E3,5.826097161E1 +1.327735000E3,5.843702691E1 +1.328012000E3,5.352317094E1 +1.328253000E3,5.737674501E1 +1.328545000E3,5.736811408E1 +1.328911000E3,5.477233671E1 +1.329158000E3,5.481436604E1 +1.329403000E3,4.974322484E1 +1.329645000E3,5.490077996E1 +1.329890000E3,4.870505425E1 +1.330144000E3,4.955972956E1 +1.330428000E3,5.470042727E1 +1.330734000E3,5.618884112E1 +1.331026000E3,5.238151215E1 +1.331265000E3,5.344428978E1 +1.331515000E3,5.051963956E1 +1.331772000E3,5.068574448E1 +1.332120000E3,5.754233113E1 +1.332409000E3,5.498832674E1 +1.332740000E3,5.245036701E1 +1.333034000E3,5.885934606E1 +1.333286000E3,5.644915657E1 +1.333540000E3,5.532779852E1 +1.333784000E3,5.694511409E1 +1.334028000E3,5.553937724E1 +1.334302000E3,5.308286554E1 +1.334615000E3,5.140154995E1 +1.334876000E3,5.045296543E1 +1.335187000E3,5.631993217E1 +1.335451000E3,5.435091016E1 +1.335722000E3,5.624357652E1 +1.335986000E3,5.791043400E1 +1.336271000E3,5.847603086E1 +1.336545000E3,5.757219882E1 +1.336794000E3,6.070042624E1 +1.337072000E3,5.247827017E1 +1.337340000E3,5.208145921E1 +1.337609000E3,6.026756153E1 +1.337870000E3,6.012826199E1 +1.338134000E3,5.465450317E1 +1.338408000E3,5.768658418E1 +1.338755000E3,5.542991210E1 +1.339019000E3,5.279974580E1 +1.339289000E3,4.966927449E1 +1.339556000E3,4.563713389E1 +1.339804000E3,4.961972315E1 +1.340056000E3,5.287436972E1 +1.340316000E3,5.318950925E1 +1.340586000E3,5.037908496E1 +1.340881000E3,5.345184090E1 +1.341116000E3,5.016784238E1 +1.341407000E3,5.799295151E1 +1.341694000E3,5.875659808E1 +1.342051000E3,5.666657228E1 +1.342345000E3,5.241270038E1 +1.342638000E3,5.754780266E1 +1.342875000E3,5.669750570E1 +1.343177000E3,5.541629106E1 +1.343432000E3,5.556249818E1 +1.343726000E3,5.603182587E1 +1.343969000E3,5.961525777E1 +1.344257000E3,5.915223521E1 +1.344498000E3,5.820677933E1 +1.344777000E3,5.815031326E1 +1.345094000E3,5.733094423E1 +1.345363000E3,5.538469317E1 +1.345622000E3,6.270903439E1 +1.345877000E3,5.551461514E1 +1.346148000E3,5.750063996E1 +1.346395000E3,5.473739655E1 +1.346676000E3,5.131350753E1 +1.346958000E3,5.072615719E1 +1.347258000E3,4.882711207E1 +1.347518000E3,5.273988371E1 +1.347784000E3,6.269937361E1 +1.348040000E3,6.058958657E1 +1.348391000E3,5.894445662E1 +1.348716000E3,5.683213923E1 +1.348984000E3,5.875140523E1 +1.349236000E3,5.263650529E1 +1.349491000E3,4.630287352E1 +1.349847000E3,5.742006494E1 +1.350115000E3,6.486179330E1 +1.350358000E3,5.963871460E1 +1.350612000E3,5.220281373E1 +1.350868000E3,5.825229613E1 +1.351125000E3,5.822075100E1 +1.351374000E3,5.487419692E1 +1.351666000E3,5.461361208E1 +1.351934000E3,5.384511910E1 +1.352185000E3,5.782109838E1 +1.352440000E3,5.156901690E1 +1.352688000E3,5.262530942E1 +1.352990000E3,5.827406705E1 +1.353265000E3,6.164230870E1 +1.353493000E3,5.939319367E1 +1.353769000E3,5.491407227E1 +1.353989000E3,5.363390940E1 +1.354236000E3,5.108497673E1 +1.354516000E3,6.129017752E1 +1.354836000E3,5.594784457E1 +1.355095000E3,5.172378417E1 +1.355422000E3,5.975901259E1 +1.355685000E3,5.720857994E1 +1.355941000E3,5.600667557E1 +1.356197000E3,5.471836828E1 +1.356478000E3,5.319452565E1 +1.356745000E3,5.296912594E1 +1.357013000E3,5.811625635E1 +1.357280000E3,5.430511038E1 +1.357577000E3,5.277700001E1 +1.357824000E3,5.616769978E1 +1.358135000E3,5.406396803E1 +1.358401000E3,4.910300122E1 +1.358643000E3,5.077236009E1 +1.358892000E3,5.530877446E1 +1.359206000E3,5.787482939E1 +1.359485000E3,5.846197249E1 +1.359760000E3,6.103303991E1 +1.360055000E3,6.092009186E1 +1.360296000E3,5.979156049E1 +1.360590000E3,6.049263298E1 +1.360828000E3,5.895545308E1 +1.361114000E3,5.611946421E1 +1.361473000E3,5.480295831E1 +1.361726000E3,5.397626184E1 +1.361972000E3,5.443193027E1 +1.362314000E3,5.572591927E1 +1.362560000E3,5.224616115E1 +1.362808000E3,5.244486023E1 +1.363061000E3,5.179430466E1 +1.363307000E3,5.228822629E1 +1.363555000E3,5.248152719E1 +1.363850000E3,5.310816898E1 +1.364115000E3,5.586433987E1 +1.364397000E3,5.735023043E1 +1.364703000E3,6.002405491E1 +1.364950000E3,5.692273216E1 +1.365192000E3,5.941823705E1 +1.365459000E3,5.316793659E1 +1.365709000E3,5.869878442E1 +1.365953000E3,5.756526572E1 +1.366216000E3,5.687574379E1 +1.366491000E3,5.232478004E1 +1.366744000E3,5.424491879E1 +1.367001000E3,5.235481979E1 +1.367305000E3,5.164783122E1 +1.367588000E3,4.924997634E1 +1.367934000E3,4.924339558E1 +1.368196000E3,5.793398832E1 +1.368473000E3,5.529211657E1 +1.368719000E3,5.120874356E1 +1.368963000E3,5.470742612E1 +1.369285000E3,5.560989240E1 +1.369528000E3,5.197646059E1 +1.369822000E3,5.152328490E1 +1.370111000E3,5.791930576E1 +1.370416000E3,5.368811562E1 +1.370672000E3,5.769124019E1 +1.370919000E3,5.333549653E1 +1.371292000E3,5.847056292E1 +1.371551000E3,5.642894477E1 +1.371803000E3,5.817537921E1 +1.372074000E3,5.885584750E1 +1.372335000E3,5.395474736E1 +1.372602000E3,5.211537518E1 +1.372880000E3,4.924374923E1 +1.373126000E3,4.882665291E1 +1.373379000E3,5.483140316E1 +1.373636000E3,5.380197532E1 +1.373915000E3,5.629967483E1 +1.374251000E3,5.773524892E1 +1.374636000E3,6.271253195E1 +1.374894000E3,5.870587143E1 +1.375125000E3,5.496954916E1 +1.375369000E3,5.621931219E1 +1.375641000E3,5.700323462E1 +1.375912000E3,5.808968856E1 +1.376161000E3,5.697587873E1 +1.376437000E3,5.739415600E1 +1.376687000E3,5.874614285E1 +1.376941000E3,5.855325473E1 +1.377252000E3,5.287324040E1 +1.377495000E3,5.331405656E1 +1.377862000E3,5.163612814E1 +1.378109000E3,6.003152631E1 +1.378372000E3,6.448039849E1 +1.378641000E3,6.226927373E1 +1.378912000E3,6.355904277E1 +1.379208000E3,6.121718755E1 +1.379463000E3,6.371699462E1 +1.379738000E3,5.774542440E1 +1.380076000E3,5.579766677E1 +1.380318000E3,5.520595979E1 +1.380614000E3,5.395000262E1 +1.380855000E3,5.263752401E1 +1.381221000E3,5.267030150E1 +1.381492000E3,5.304251562E1 +1.381793000E3,4.959737221E1 +1.382100000E3,5.549829026E1 +1.382347000E3,5.821584994E1 +1.382642000E3,5.861199323E1 +1.382905000E3,5.256382895E1 +1.383164000E3,5.491877459E1 +1.383443000E3,5.644995893E1 +1.383702000E3,5.411249990E1 +1.383954000E3,5.324738213E1 +1.384305000E3,5.625052210E1 +1.384532000E3,6.070474662E1 +1.384789000E3,5.237062704E1 +1.385074000E3,5.442107865E1 +1.385361000E3,6.017483878E1 +1.385605000E3,6.237555822E1 +1.385869000E3,5.605951782E1 +1.386126000E3,6.511151133E1 +1.386382000E3,5.571785683E1 +1.386696000E3,5.398201636E1 +1.386954000E3,5.323734283E1 +1.387264000E3,5.635686029E1 +1.387623000E3,5.701357512E1 +1.387874000E3,5.632095063E1 +1.388187000E3,5.288354031E1 +1.388477000E3,5.152350906E1 +1.388761000E3,5.130627857E1 +1.388982000E3,4.918436870E1 +1.389239000E3,5.567775637E1 +1.389545000E3,5.465238648E1 +1.389786000E3,5.003079725E1 +1.390027000E3,5.504486936E1 +1.390282000E3,5.947272344E1 +1.390539000E3,6.106137952E1 +1.390892000E3,5.985290475E1 +1.391203000E3,5.500825546E1 +1.391507000E3,5.157102239E1 +1.391806000E3,5.517662265E1 +1.392108000E3,5.349243854E1 +1.392411000E3,5.386652866E1 +1.392707000E3,5.258839734E1 +1.392973000E3,5.376638351E1 +1.393221000E3,5.619475880E1 +1.393480000E3,5.846509931E1 +1.393767000E3,6.504346680E1 +1.394122000E3,5.865804348E1 +1.394392000E3,5.055217311E1 +1.394673000E3,4.837306759E1 +1.394931000E3,5.564689750E1 +1.395193000E3,5.416088817E1 +1.395489000E3,5.481584764E1 +1.395781000E3,5.356143065E1 +1.396078000E3,5.074158934E1 +1.396313000E3,5.177896206E1 +1.396618000E3,5.670327312E1 +1.396914000E3,6.043149132E1 +1.397246000E3,5.875453471E1 +1.397559000E3,5.725772305E1 +1.397842000E3,5.610169288E1 +1.398092000E3,6.098127982E1 +1.398354000E3,5.385330985E1 +1.398611000E3,5.345613584E1 +1.398873000E3,6.183897473E1 +1.399135000E3,5.898294985E1 +1.399399000E3,5.644599073E1 +1.399662000E3,6.288338842E1 +1.399923000E3,5.844786233E1 +1.400178000E3,6.145207907E1 +1.400438000E3,5.797678971E1 +1.400786000E3,5.805590691E1 +1.401082000E3,5.956739883E1 +1.401323000E3,5.537900496E1 +1.401618000E3,5.084213917E1 +1.401871000E3,4.807017206E1 +1.402118000E3,5.545233073E1 +1.402411000E3,5.516036366E1 +1.402644000E3,5.413431379E1 +1.402920000E3,5.388857626E1 +1.403209000E3,5.292068844E1 +1.403479000E3,5.775211983E1 +1.403718000E3,5.117484548E1 +1.404045000E3,5.912447648E1 +1.404295000E3,5.591921957E1 +1.404568000E3,5.565028551E1 +1.404828000E3,5.013398992E1 +1.405122000E3,5.465164253E1 +1.405364000E3,5.305211462E1 +1.405620000E3,5.755171154E1 +1.405929000E3,6.007655449E1 +1.406174000E3,5.899920387E1 +1.406463000E3,5.970773629E1 +1.406720000E3,5.770443308E1 +1.407009000E3,5.521297881E1 +1.407407000E3,5.604277064E1 +1.407677000E3,5.646208540E1 +1.407969000E3,4.906112006E1 +1.408239000E3,5.193830101E1 +1.408558000E3,4.835599484E1 +1.408830000E3,4.864558507E1 +1.409087000E3,5.566138381E1 +1.409349000E3,5.240816417E1 +1.409604000E3,4.366169359E1 +1.409843000E3,4.924613485E1 +1.410167000E3,5.289541091E1 +1.410462000E3,5.429333459E1 +1.410857000E3,5.232803186E1 +1.411115000E3,5.279391543E1 +1.411388000E3,5.698112108E1 +1.411689000E3,4.954635028E1 +1.411940000E3,5.347151392E1 +1.412202000E3,5.431542928E1 +1.412461000E3,5.708654506E1 +1.412712000E3,5.999867781E1 +1.412972000E3,5.836713300E1 +1.413243000E3,5.662529411E1 +1.413547000E3,5.760118844E1 +1.413790000E3,5.272334048E1 +1.414155000E3,5.585703000E1 +1.414407000E3,5.277217169E1 +1.414666000E3,5.575617717E1 +1.414970000E3,5.588142009E1 +1.415263000E3,5.043609445E1 +1.415519000E3,5.366091219E1 +1.415818000E3,6.729065738E1 +1.416082000E3,5.454700058E1 +1.416357000E3,5.542836481E1 +1.416608000E3,6.150002805E1 +1.416870000E3,5.918799699E1 +1.417164000E3,5.739551304E1 +1.417548000E3,5.312046747E1 +1.417864000E3,5.735989692E1 +1.418111000E3,5.463708503E1 +1.418368000E3,5.616594485E1 +1.418622000E3,5.674613857E1 +1.418880000E3,5.393284238E1 +1.419178000E3,5.477989298E1 +1.419414000E3,5.673628135E1 +1.419692000E3,5.246670124E1 +1.419935000E3,5.929492524E1 +1.420173000E3,5.718550468E1 +1.420417000E3,5.597503360E1 +1.420745000E3,5.209811810E1 +1.421016000E3,5.108820023E1 +1.421271000E3,5.704928631E1 +1.421524000E3,5.534619134E1 +1.421787000E3,5.298830069E1 +1.422048000E3,5.357926773E1 +1.422324000E3,5.150193558E1 +1.422590000E3,5.236977243E1 +1.422860000E3,5.598534631E1 +1.423111000E3,5.804712890E1 +1.423360000E3,5.584477369E1 +1.423617000E3,6.166819052E1 +1.423956000E3,6.217862533E1 +1.424239000E3,6.474885215E1 +1.424493000E3,6.561094566E1 +1.424771000E3,6.624921272E1 +1.425013000E3,6.269332683E1 +1.425310000E3,6.427501900E1 +1.425550000E3,6.406421996E1 +1.425806000E3,6.561696377E1 +1.426124000E3,5.757984813E1 +1.426392000E3,6.467113265E1 +1.426661000E3,6.110360998E1 +1.426971000E3,6.257935575E1 +1.427325000E3,6.059948571E1 +1.427600000E3,6.060080967E1 +1.427858000E3,6.129065918E1 +1.428157000E3,6.869907238E1 +1.428403000E3,6.216021300E1 +1.428668000E3,6.028715826E1 +1.428917000E3,5.215970407E1 +1.429175000E3,5.348756082E1 +1.429445000E3,5.866879342E1 +1.429775000E3,5.422412762E1 +1.430077000E3,5.967912654E1 +1.430370000E3,6.053958419E1 +1.430696000E3,5.642153628E1 +1.430959000E3,5.797803369E1 +1.431217000E3,5.265853131E1 +1.431545000E3,6.085541328E1 +1.431825000E3,6.579757863E1 +1.432095000E3,6.783858113E1 +1.432356000E3,6.680245969E1 +1.432609000E3,5.699539434E1 +1.432887000E3,5.495476405E1 +1.433146000E3,5.431336982E1 +1.433405000E3,5.468573805E1 +1.433768000E3,6.415525931E1 +1.434037000E3,5.996195649E1 +1.434305000E3,5.880144898E1 +1.434536000E3,5.062803370E1 +1.434794000E3,4.838886892E1 +1.435059000E3,4.852598648E1 +1.435348000E3,5.424758091E1 +1.435611000E3,6.028120001E1 +1.435845000E3,5.860165153E1 +1.436098000E3,5.820116177E1 +1.436348000E3,5.458976108E1 +1.436603000E3,5.748661459E1 +1.436983000E3,5.071157707E1 +1.437230000E3,5.187454119E1 +1.437505000E3,5.690962542E1 +1.437744000E3,5.898297949E1 +1.438006000E3,6.083548120E1 +1.438278000E3,4.929702369E1 +1.438556000E3,5.094464024E1 +1.438857000E3,5.451803318E1 +1.439157000E3,4.851675588E1 +1.439427000E3,4.781325912E1 +1.439724000E3,4.919544886E1 +1.439968000E3,4.662525194E1 +1.440374000E3,4.187537091E1 +1.440620000E3,5.083424523E1 +1.440895000E3,4.476479772E1 +1.441179000E3,5.236126827E1 +1.441495000E3,4.954212438E1 +1.441772000E3,5.444261950E1 +1.442048000E3,5.023278537E1 +1.442273000E3,4.640707667E1 +1.442557000E3,5.088583460E1 +1.442822000E3,5.041471443E1 +1.443067000E3,4.940152653E1 +1.443315000E3,4.834999124E1 +1.443550000E3,5.084173145E1 +1.443802000E3,4.674944421E1 +1.444118000E3,5.005548854E1 +1.444412000E3,4.880222753E1 +1.444695000E3,4.829349493E1 +1.444948000E3,4.815408858E1 +1.445231000E3,4.968297573E1 +1.445471000E3,5.263069989E1 +1.445763000E3,4.570389774E1 +1.446062000E3,4.674284816E1 +1.446364000E3,5.179136771E1 +1.446637000E3,5.007894257E1 +1.446884000E3,5.001285233E1 +1.447102000E3,5.063641057E1 +1.447373000E3,4.164946286E1 +1.447601000E3,3.981108666E1 +1.447894000E3,4.316358072E1 +1.448132000E3,5.465701871E1 +1.448431000E3,4.615144027E1 +1.448672000E3,4.353154230E1 +1.448965000E3,5.208221965E1 +1.449200000E3,5.530439334E1 +1.449496000E3,4.996075498E1 +1.449729000E3,5.218941020E1 +1.450060000E3,4.888890123E1 +1.450335000E3,5.030971329E1 +1.450629000E3,5.012870067E1 +1.450899000E3,4.847297804E1 +1.451151000E3,4.759762696E1 +1.451454000E3,4.978926902E1 +1.451751000E3,4.930919072E1 +1.452001000E3,5.004861581E1 +1.452285000E3,5.051309266E1 +1.452566000E3,4.810890055E1 +1.452826000E3,4.654354865E1 +1.453069000E3,4.761425190E1 +1.453369000E3,4.589508435E1 +1.453616000E3,4.954922405E1 +1.453886000E3,4.065983258E1 +1.454197000E3,4.220647307E1 +1.454513000E3,4.858310714E1 +1.454789000E3,5.196405012E1 +1.455012000E3,5.467685341E1 +1.455262000E3,5.753332593E1 +1.455513000E3,4.707036048E1 +1.455859000E3,3.942826471E1 +1.456237000E3,5.170062203E1 +1.456495000E3,6.022707597E1 +1.456743000E3,5.524301158E1 +1.456990000E3,5.482834451E1 +1.457257000E3,4.917995293E1 +1.457590000E3,4.739340640E1 +1.457831000E3,4.842051754E1 +1.458073000E3,6.166669432E1 +1.458329000E3,5.427876580E1 +1.458617000E3,4.896037674E1 +1.458889000E3,4.346397471E1 +1.459122000E3,4.481546196E1 +1.459424000E3,5.149740630E1 +1.459726000E3,4.614214660E1 +1.459975000E3,4.567227587E1 +1.460237000E3,5.348774305E1 +1.460488000E3,5.617792493E1 +1.460730000E3,5.122937085E1 +1.460971000E3,5.712815616E1 +1.461266000E3,5.592815325E1 +1.461504000E3,5.208026338E1 +1.461798000E3,5.368936290E1 +1.462033000E3,5.424431898E1 +1.462332000E3,5.229538114E1 +1.462686000E3,5.012562607E1 +1.462943000E3,5.517893002E1 +1.463292000E3,5.544440679E1 +1.463574000E3,5.195225561E1 +1.463851000E3,5.582804772E1 +1.464133000E3,5.163717454E1 +1.464392000E3,5.056978371E1 +1.464653000E3,5.085736348E1 +1.464931000E3,5.111025552E1 +1.465171000E3,5.008163028E1 +1.465468000E3,5.204681239E1 +1.465721000E3,4.873162615E1 +1.466070000E3,5.052420662E1 +1.466365000E3,5.115431116E1 +1.466626000E3,5.008089225E1 +1.466902000E3,5.455907242E1 +1.467123000E3,5.881328519E1 +1.467422000E3,5.654049662E1 +1.467665000E3,6.208900398E1 +1.467911000E3,5.573620080E1 +1.468210000E3,5.034178452E1 +1.468461000E3,4.644884091E1 +1.468716000E3,4.489036287E1 +1.469021000E3,4.555962209E1 +1.469437000E3,4.956164087E1 +1.469733000E3,5.014140659E1 +1.469995000E3,5.025508197E1 +1.470298000E3,4.976482928E1 +1.470552000E3,4.666552600E1 +1.470801000E3,5.164800320E1 +1.471107000E3,4.748865751E1 +1.471358000E3,5.068455306E1 +1.471623000E3,5.380657492E1 +1.471874000E3,4.918332364E1 +1.472155000E3,4.974368594E1 +1.472539000E3,5.519550202E1 +1.472795000E3,5.119649457E1 +1.473056000E3,5.406344748E1 +1.473370000E3,5.554928156E1 +1.473655000E3,5.458007948E1 +1.473895000E3,5.519923804E1 +1.474152000E3,5.580016483E1 +1.474437000E3,5.718813696E1 +1.474685000E3,5.734393611E1 +1.474960000E3,5.879862387E1 +1.475221000E3,5.602300215E1 +1.475474000E3,5.025640835E1 +1.475826000E3,5.543439402E1 +1.476071000E3,5.232164352E1 +1.476323000E3,5.898115961E1 +1.476584000E3,6.066467981E1 +1.476821000E3,5.071984472E1 +1.477123000E3,5.740447565E1 +1.477365000E3,5.959782608E1 +1.477662000E3,5.958620190E1 +1.477906000E3,5.753388342E1 +1.478144000E3,5.506848886E1 +1.478455000E3,5.769430513E1 +1.478723000E3,5.629679592E1 +1.478987000E3,5.649495967E1 +1.479262000E3,5.787253729E1 +1.479512000E3,5.216150167E1 +1.479813000E3,4.948302212E1 +1.480088000E3,5.080056078E1 +1.480342000E3,4.734041467E1 +1.480601000E3,4.440736689E1 +1.480866000E3,5.120725270E1 +1.481166000E3,5.053254929E1 +1.481466000E3,5.274685420E1 +1.481724000E3,5.071521067E1 +1.481973000E3,5.225995741E1 +1.482300000E3,5.133897759E1 +1.482575000E3,5.007250383E1 +1.482845000E3,5.042400131E1 +1.483101000E3,5.258901014E1 +1.483408000E3,5.618504625E1 +1.483668000E3,5.503349900E1 +1.483933000E3,4.974702245E1 +1.484194000E3,5.170781389E1 +1.484440000E3,5.072340799E1 +1.484707000E3,5.947536199E1 +1.485018000E3,5.467515596E1 +1.485306000E3,6.085614245E1 +1.485656000E3,5.990152864E1 +1.485935000E3,5.602550586E1 +1.486168000E3,5.561766537E1 +1.486422000E3,5.350876804E1 +1.486701000E3,5.699979875E1 +1.486960000E3,5.177464585E1 +1.487207000E3,5.249766501E1 +1.487486000E3,5.285366750E1 +1.487751000E3,5.316768095E1 +1.488002000E3,4.876639606E1 +1.488262000E3,5.179834313E1 +1.488516000E3,4.991892364E1 +1.488812000E3,5.156353661E1 +1.489125000E3,5.341434219E1 +1.489400000E3,5.426211096E1 +1.489675000E3,4.699672779E1 +1.489958000E3,5.361914521E1 +1.490219000E3,5.605827819E1 +1.490490000E3,5.089547448E1 +1.490772000E3,5.163564337E1 +1.491061000E3,5.841576784E1 +1.491309000E3,5.524417730E1 +1.491589000E3,5.450558122E1 +1.491873000E3,5.581032480E1 +1.492194000E3,5.802352567E1 +1.492448000E3,4.962366630E1 +1.492810000E3,5.873656508E1 +1.493058000E3,5.690804947E1 +1.493359000E3,5.262261274E1 +1.493674000E3,5.584655342E1 +1.493919000E3,5.542283425E1 +1.494163000E3,5.373884310E1 +1.494412000E3,5.084083433E1 +1.494678000E3,4.964027690E1 +1.494956000E3,5.125570040E1 +1.495204000E3,5.194895191E1 +1.495526000E3,4.961412488E1 +1.495784000E3,4.972405818E1 +1.496036000E3,4.777083448E1 +1.496283000E3,5.231556692E1 +1.496593000E3,5.894066851E1 +1.496842000E3,6.007182772E1 +1.497086000E3,6.003234807E1 +1.497358000E3,5.170627362E1 +1.497682000E3,5.564688341E1 +1.497937000E3,5.459086103E1 +1.498234000E3,5.654462748E1 +1.498530000E3,5.643601391E1 +1.498887000E3,5.593732695E1 +1.499182000E3,5.279859883E1 +1.499469000E3,5.063056157E1 +1.499723000E3,4.846330641E1 +1.499972000E3,5.696559719E1 +1.500236000E3,5.806291630E1 +1.500555000E3,5.485435177E1 +1.500851000E3,5.386376671E1 +1.501120000E3,5.529102258E1 +1.501400000E3,5.058415032E1 +1.501675000E3,5.420960743E1 +1.501928000E3,4.962388553E1 +1.502263000E3,5.167692375E1 +1.502567000E3,5.072695334E1 +1.502878000E3,5.319678523E1 +1.503119000E3,5.961199300E1 +1.503369000E3,5.299728366E1 +1.503631000E3,5.369404965E1 +1.503941000E3,5.426817134E1 +1.504209000E3,5.369336762E1 +1.504462000E3,5.246626497E1 +1.504724000E3,5.358557871E1 +1.505015000E3,4.957781391E1 +1.505279000E3,5.117668163E1 +1.505699000E3,5.216401891E1 +1.505963000E3,5.011348657E1 +1.506261000E3,5.259055540E1 +1.506507000E3,4.579432510E1 +1.506795000E3,4.877099475E1 +1.507032000E3,4.679595596E1 +1.507314000E3,5.136222565E1 +1.507549000E3,5.267101191E1 +1.507792000E3,5.244999525E1 +1.508074000E3,5.180561005E1 +1.508391000E3,5.030990700E1 +1.508607000E3,5.167226321E1 +1.508859000E3,5.218207738E1 +1.509151000E3,5.317725961E1 +1.509397000E3,5.318899610E1 +1.509689000E3,4.978257152E1 +1.509934000E3,5.032443800E1 +1.510228000E3,4.777293014E1 +1.510466000E3,4.646316587E1 +1.510767000E3,5.646850943E1 +1.511001000E3,5.638889819E1 +1.511293000E3,5.773758842E1 +1.511610000E3,5.580372922E1 +1.511900000E3,5.517502050E1 +1.512151000E3,5.684013484E1 +1.512393000E3,5.407249321E1 +1.512652000E3,5.725430710E1 +1.512902000E3,5.755876004E1 +1.513148000E3,5.492786930E1 +1.513404000E3,5.665177401E1 +1.513705000E3,5.675683028E1 +1.513957000E3,5.845897420E1 +1.514258000E3,5.334537973E1 +1.514488000E3,5.035361876E1 +1.514812000E3,4.886526824E1 +1.515059000E3,5.555156669E1 +1.515357000E3,5.401240780E1 +1.515600000E3,5.191330713E1 +1.515873000E3,5.158089375E1 +1.516102000E3,5.397456219E1 +1.516410000E3,5.205317520E1 +1.516679000E3,5.689433829E1 +1.516971000E3,5.397466306E1 +1.517230000E3,5.553699481E1 +1.517504000E3,5.550832571E1 +1.517763000E3,5.490604036E1 +1.518130000E3,5.129555301E1 +1.518403000E3,5.478479772E1 +1.518670000E3,5.687403653E1 +1.518921000E3,5.464295853E1 +1.519177000E3,5.713561839E1 +1.519461000E3,5.306473622E1 +1.519745000E3,5.320579073E1 +1.520002000E3,5.309385307E1 +1.520258000E3,5.058967996E1 +1.520552000E3,5.470724085E1 +1.520793000E3,5.303104936E1 +1.521156000E3,5.432496893E1 +1.521453000E3,5.594215604E1 +1.521721000E3,5.308545736E1 +1.521969000E3,5.327888421E1 +1.522220000E3,5.030915333E1 +1.522490000E3,5.230098434E1 +1.522776000E3,4.743827766E1 +1.523026000E3,5.464211349E1 +1.523327000E3,5.322537523E1 +1.523581000E3,5.154569729E1 +1.523826000E3,5.335950152E1 +1.524133000E3,5.482016506E1 +1.524417000E3,5.825411535E1 +1.524853000E3,5.879893849E1 +1.525179000E3,5.728744863E1 +1.525433000E3,5.737571640E1 +1.525696000E3,5.681107869E1 +1.525950000E3,5.695921586E1 +1.526210000E3,5.455429607E1 +1.526487000E3,5.808007225E1 +1.526729000E3,5.500512440E1 +1.527042000E3,5.476260812E1 +1.527339000E3,5.849962899E1 +1.527579000E3,5.719021529E1 +1.527910000E3,5.422226824E1 +1.528160000E3,5.266147572E1 +1.528411000E3,5.030747323E1 +1.528675000E3,5.057502492E1 +1.528920000E3,5.365292462E1 +1.529175000E3,5.444435151E1 +1.529423000E3,5.586906556E1 +1.529732000E3,5.808239082E1 +1.530030000E3,5.492304678E1 +1.530283000E3,5.727734117E1 +1.530542000E3,5.518682809E1 +1.530805000E3,5.838179726E1 +1.531133000E3,5.619103982E1 +1.531448000E3,5.705771680E1 +1.531738000E3,5.605732573E1 +1.531987000E3,5.497746164E1 +1.532293000E3,5.570350387E1 +1.532602000E3,5.687942595E1 +1.532873000E3,5.590365459E1 +1.533132000E3,5.379832162E1 +1.533387000E3,5.951317374E1 +1.533654000E3,5.728034638E1 +1.533915000E3,5.755019099E1 +1.534163000E3,5.625336618E1 +1.534512000E3,5.560455999E1 +1.534783000E3,5.186395468E1 +1.535086000E3,6.018952062E1 +1.535379000E3,5.360739703E1 +1.535619000E3,5.637744941E1 +1.535916000E3,5.710534601E1 +1.536153000E3,5.751101039E1 +1.536449000E3,5.888699469E1 +1.536688000E3,5.900809640E1 +1.536983000E3,5.539354346E1 +1.537218000E3,5.212761926E1 +1.537514000E3,6.113968309E1 +1.537773000E3,5.789795306E1 +1.538038000E3,6.065119472E1 +1.538356000E3,5.715251587E1 +1.538607000E3,5.728294892E1 +1.538911000E3,5.939537878E1 +1.539175000E3,5.879010449E1 +1.539417000E3,6.007594674E1 +1.539661000E3,5.983742076E1 +1.539908000E3,6.299497704E1 +1.540182000E3,6.042347696E1 +1.540457000E3,5.844914903E1 +1.540758000E3,5.775362746E1 +1.541037000E3,5.216165265E1 +1.541334000E3,5.255584969E1 +1.541593000E3,5.278098471E1 +1.541846000E3,5.581770981E1 +1.542092000E3,5.736301867E1 +1.542389000E3,5.733951694E1 +1.542623000E3,5.674705381E1 +1.542880000E3,5.506043774E1 +1.543125000E3,5.404728252E1 +1.543453000E3,5.428884791E1 +1.543732000E3,5.547580162E1 +1.544085000E3,5.471747417E1 +1.544346000E3,5.496243571E1 +1.544613000E3,5.288395526E1 +1.544860000E3,5.036194227E1 +1.545111000E3,5.124283852E1 +1.545413000E3,5.731432515E1 +1.545687000E3,5.663908688E1 +1.545955000E3,5.741659811E1 +1.546253000E3,5.084604561E1 +1.546502000E3,5.163330463E1 +1.546772000E3,4.777378739E1 +1.547025000E3,5.200725426E1 +1.547353000E3,5.049690945E1 +1.547625000E3,5.284766124E1 +1.547924000E3,5.396462244E1 +1.548148000E3,5.375524192E1 +1.548403000E3,5.670544075E1 +1.548716000E3,5.332369727E1 +1.548963000E3,5.544219871E1 +1.549238000E3,5.323430806E1 +1.549471000E3,5.180674965E1 +1.549727000E3,5.329467652E1 +1.550023000E3,5.080742485E1 +1.550310000E3,5.026906170E1 +1.550639000E3,5.582908231E1 +1.550905000E3,5.331150300E1 +1.551172000E3,5.186910180E1 +1.551471000E3,5.624561668E1 +1.551739000E3,5.555744845E1 +1.552012000E3,5.944044312E1 +1.552264000E3,6.002272858E1 +1.552531000E3,5.816546804E1 +1.552850000E3,5.936846960E1 +1.553097000E3,5.514794057E1 +1.553401000E3,5.160130424E1 +1.553757000E3,5.107783990E1 +1.554023000E3,5.871375450E1 +1.554276000E3,5.617325190E1 +1.554544000E3,5.736189521E1 +1.554800000E3,5.317828333E1 +1.555051000E3,5.715279916E1 +1.555321000E3,5.726931658E1 +1.555563000E3,5.567771069E1 +1.555823000E3,5.156101336E1 +1.556126000E3,5.688446569E1 +1.556378000E3,6.074118939E1 +1.556642000E3,5.974958265E1 +1.556918000E3,5.702757711E1 +1.557208000E3,5.874442787E1 +1.557457000E3,5.795683904E1 +1.557722000E3,6.039916355E1 +1.558025000E3,5.662755924E1 +1.558320000E3,5.332514547E1 +1.558595000E3,6.059700286E1 +1.558850000E3,5.775207016E1 +1.559098000E3,6.106988435E1 +1.559349000E3,6.039494527E1 +1.559644000E3,5.672405799E1 +1.559889000E3,5.814375710E1 +1.560135000E3,6.159401746E1 +1.560480000E3,5.397583636E1 +1.560770000E3,5.291692280E1 +1.561026000E3,5.439035965E1 +1.561320000E3,5.553984968E1 +1.561619000E3,5.808332247E1 +1.561927000E3,5.744100555E1 +1.562191000E3,5.636250023E1 +1.562451000E3,6.055150308E1 +1.562703000E3,5.624161562E1 +1.562979000E3,5.401048000E1 +1.563233000E3,5.588901558E1 +1.563595000E3,6.020828902E1 +1.563855000E3,6.586197618E1 +1.564143000E3,5.744692826E1 +1.564421000E3,5.175273280E1 +1.564681000E3,5.584828423E1 +1.564939000E3,5.622472521E1 +1.565190000E3,5.419184381E1 +1.565447000E3,4.818775863E1 +1.565701000E3,5.443344746E1 +1.565956000E3,4.960344337E1 +1.566224000E3,6.289868185E1 +1.566469000E3,6.499026885E1 +1.566794000E3,6.277031329E1 +1.567086000E3,5.336636778E1 +1.567405000E3,5.867761918E1 +1.567644000E3,5.135518394E1 +1.567909000E3,5.665720126E1 +1.568204000E3,5.915910399E1 +1.568455000E3,5.687790668E1 +1.568730000E3,5.815647569E1 +1.568976000E3,5.595761669E1 +1.569238000E3,5.367288589E1 +1.569491000E3,4.954593185E1 +1.569752000E3,5.199120702E1 +1.570099000E3,5.857172858E1 +1.570354000E3,5.533510860E1 +1.570614000E3,5.615291914E1 +1.570871000E3,4.816531300E1 +1.571136000E3,4.597509459E1 +1.571387000E3,5.454256971E1 +1.571722000E3,5.262076426E1 +1.572010000E3,5.108681545E1 +1.572285000E3,5.269091247E1 +1.572547000E3,4.898785412E1 +1.572807000E3,4.867008841E1 +1.573066000E3,5.306545801E1 +1.573313000E3,5.092331160E1 +1.573694000E3,5.549117670E1 +1.574009000E3,5.304099104E1 +1.574279000E3,5.377011563E1 +1.574520000E3,5.244694975E1 +1.574770000E3,5.542353961E1 +1.575031000E3,5.327330735E1 +1.575319000E3,5.123065406E1 +1.575617000E3,5.429517947E1 +1.575867000E3,5.443507599E1 +1.576132000E3,5.273613947E1 +1.576382000E3,5.717979407E1 +1.576705000E3,5.184816589E1 +1.576955000E3,4.851208329E1 +1.577250000E3,4.976440939E1 +1.577493000E3,5.236737582E1 +1.577737000E3,5.414723297E1 +1.577998000E3,5.490706774E1 +1.578342000E3,5.591011545E1 +1.578650000E3,5.689754115E1 +1.578906000E3,5.680987850E1 +1.579148000E3,5.379415708E1 +1.579394000E3,5.844713665E1 +1.579644000E3,4.927798375E1 +1.580006000E3,5.263100090E1 +1.580294000E3,5.410513055E1 +1.580548000E3,5.541047194E1 +1.580801000E3,5.058665778E1 +1.581070000E3,5.191468462E1 +1.581349000E3,4.623838572E1 +1.581601000E3,4.883886927E1 +1.581851000E3,4.951159763E1 +1.582152000E3,5.372806241E1 +1.582461000E3,4.077427406E1 +1.582742000E3,4.089897224E1 +1.582967000E3,4.661834708E1 +1.583330000E3,4.498181641E1 +1.583574000E3,4.413204165E1 +1.583835000E3,4.830731952E1 +1.584102000E3,5.133890730E1 +1.584385000E3,5.327819620E1 +1.584689000E3,5.148788947E1 +1.584935000E3,5.259351261E1 +1.585217000E3,5.210912674E1 +1.585449000E3,5.375523399E1 +1.585710000E3,5.030792675E1 +1.585957000E3,5.116594607E1 +1.586271000E3,5.729332409E1 +1.586601000E3,5.372439258E1 +1.586868000E3,5.283683191E1 +1.587111000E3,5.261490358E1 +1.587371000E3,5.394382083E1 +1.587617000E3,5.362104804E1 +1.587861000E3,5.192909002E1 +1.588111000E3,5.534291684E1 +1.588356000E3,5.529045875E1 +1.588616000E3,5.723903943E1 +1.588878000E3,5.769467674E1 +1.589116000E3,5.686991669E1 +1.589367000E3,5.472851050E1 +1.589709000E3,5.509501284E1 +1.589971000E3,6.218794924E1 +1.590276000E3,5.544714813E1 +1.590522000E3,5.587492513E1 +1.590770000E3,6.310127100E1 +1.591031000E3,6.016601681E1 +1.591331000E3,5.868635044E1 +1.591588000E3,5.739907262E1 +1.591847000E3,5.500154159E1 +1.592105000E3,5.382353142E1 +1.592358000E3,5.235465349E1 +1.592660000E3,5.432444683E1 +1.592979000E3,5.583837344E1 +1.593280000E3,5.890777444E1 +1.593531000E3,6.247008348E1 +1.593777000E3,5.524440051E1 +1.594082000E3,6.039849382E1 +1.594376000E3,5.779880973E1 +1.594616000E3,6.006977904E1 +1.594916000E3,6.157791897E1 +1.595158000E3,5.727348505E1 +1.595456000E3,6.219777130E1 +1.595702000E3,6.333776727E1 +1.596011000E3,6.315243887E1 +1.596287000E3,5.622487117E1 +1.596582000E3,4.999384026E1 +1.596838000E3,6.052096287E1 +1.597136000E3,5.730636753E1 +1.597383000E3,5.672770046E1 +1.597632000E3,5.282894107E1 +1.597943000E3,5.609826115E1 +1.598240000E3,5.950608691E1 +1.598483000E3,5.262580449E1 +1.598777000E3,5.638403375E1 +1.599039000E3,5.695994656E1 +1.599354000E3,5.595638462E1 +1.599677000E3,5.456948793E1 +1.599955000E3,5.641745933E1 +1.600254000E3,5.373490010E1 +1.600541000E3,5.613295480E1 +1.600824000E3,5.295628543E1 +1.601071000E3,5.036371368E1 +1.601313000E3,5.734560753E1 +1.601585000E3,5.869799540E1 +1.601832000E3,5.689867309E1 +1.602079000E3,5.521901034E1 +1.602376000E3,5.958743796E1 +1.602630000E3,5.697555749E1 +1.602881000E3,6.067520996E1 +1.603136000E3,6.296730837E1 +1.603381000E3,6.302345663E1 +1.603674000E3,5.614231839E1 +1.603920000E3,5.471880748E1 +1.604179000E3,6.025548138E1 +1.604432000E3,5.848975602E1 +1.604677000E3,6.051353275E1 +1.604988000E3,6.061163824E1 +1.605287000E3,5.127173554E1 +1.605535000E3,5.271948405E1 +1.605890000E3,5.457177629E1 +1.606143000E3,5.047420148E1 +1.606392000E3,5.197178768E1 +1.606684000E3,5.635777628E1 +1.606927000E3,5.691931577E1 +1.607165000E3,5.135114371E1 +1.607440000E3,5.173034620E1 +1.607734000E3,5.786109434E1 +1.607974000E3,5.620528212E1 +1.608236000E3,5.432552885E1 +1.608507000E3,5.036034087E1 +1.608763000E3,4.872303481E1 +1.609123000E3,5.516764205E1 +1.609377000E3,5.867465981E1 +1.609624000E3,5.634077767E1 +1.609869000E3,5.153316916E1 +1.610150000E3,5.212022412E1 +1.610428000E3,5.727395868E1 +1.610681000E3,5.443759521E1 +1.610944000E3,5.599199613E1 +1.611242000E3,5.709063131E1 +1.611495000E3,5.747461955E1 +1.611762000E3,5.445378087E1 +1.612040000E3,5.178206799E1 +1.612294000E3,5.347146008E1 +1.612548000E3,5.695533984E1 +1.612791000E3,5.852885666E1 +1.613050000E3,5.349710519E1 +1.613354000E3,5.482274130E1 +1.613598000E3,5.580201302E1 +1.613898000E3,5.533013655E1 +1.614151000E3,5.307302798E1 +1.614404000E3,5.034267096E1 +1.614651000E3,5.096368681E1 +1.614959000E3,5.358615730E1 +1.615202000E3,5.402822959E1 +1.615565000E3,5.173226008E1 +1.615815000E3,5.317238447E1 +1.616120000E3,5.490271856E1 +1.616406000E3,5.760350961E1 +1.616712000E3,5.516631401E1 +1.616950000E3,5.344247717E1 +1.617197000E3,5.105574764E1 +1.617480000E3,5.297874749E1 +1.617726000E3,5.181083735E1 +1.617978000E3,5.504462581E1 +1.618236000E3,5.652623382E1 +1.618484000E3,5.850281135E1 +1.618804000E3,5.207268405E1 +1.619061000E3,4.595989093E1 +1.619309000E3,5.832875112E1 +1.619574000E3,5.691639889E1 +1.619831000E3,5.277897330E1 +1.620092000E3,5.634285556E1 +1.620390000E3,5.782897026E1 +1.620660000E3,6.167326244E1 +1.620905000E3,5.736569246E1 +1.621145000E3,6.422841213E1 +1.621400000E3,6.037316593E1 +1.621649000E3,5.869946609E1 +1.622005000E3,6.007663283E1 +1.622308000E3,5.750286676E1 +1.622551000E3,5.315958033E1 +1.622849000E3,5.996646537E1 +1.623085000E3,6.310656156E1 +1.623382000E3,6.410911411E1 +1.623620000E3,6.559322950E1 +1.623914000E3,6.191537215E1 +1.624148000E3,6.509401862E1 +1.624441000E3,6.149444047E1 +1.624676000E3,5.887830140E1 +1.624914000E3,5.333395699E1 +1.625242000E3,5.080509527E1 +1.625531000E3,5.208999136E1 +1.625827000E3,4.936268455E1 +1.626072000E3,4.620940228E1 +1.626384000E3,4.812346411E1 +1.626678000E3,5.508818133E1 +1.626931000E3,5.929414420E1 +1.627193000E3,5.798382987E1 +1.627446000E3,5.695027340E1 +1.627690000E3,6.200547811E1 +1.627940000E3,5.895921781E1 +1.628278000E3,5.832121877E1 +1.628595000E3,5.727506493E1 +1.628914000E3,5.676841787E1 +1.629164000E3,5.904549933E1 +1.629453000E3,6.079247221E1 +1.629705000E3,5.978532207E1 +1.629973000E3,6.204876077E1 +1.630223000E3,6.278691878E1 +1.630527000E3,5.775584326E1 +1.630780000E3,5.715423799E1 +1.631076000E3,5.993810238E1 +1.631416000E3,5.945816984E1 +1.631690000E3,5.911038375E1 +1.631989000E3,6.401318161E1 +1.632251000E3,6.288325429E1 +1.632577000E3,6.142114348E1 +1.632857000E3,6.027735545E1 +1.633125000E3,6.058800698E1 +1.633410000E3,6.197295377E1 +1.633713000E3,5.649410931E1 +1.633983000E3,5.349526422E1 +1.634267000E3,5.160473432E1 +1.634550000E3,5.471426263E1 +1.634881000E3,5.381566790E1 +1.635145000E3,5.592472168E1 +1.635394000E3,5.502963456E1 +1.635636000E3,5.458091777E1 +1.635914000E3,5.361113418E1 +1.636211000E3,5.972112366E1 +1.636510000E3,6.134956919E1 +1.636770000E3,6.291498703E1 +1.637018000E3,6.051799303E1 +1.637272000E3,5.800319143E1 +1.637535000E3,6.099184952E1 +1.637791000E3,6.192072936E1 +1.638191000E3,5.592689657E1 +1.638462000E3,5.015193522E1 +1.638759000E3,5.662906295E1 +1.638997000E3,6.189212385E1 +1.639312000E3,5.656112303E1 +1.639618000E3,5.827187766E1 +1.639922000E3,5.894515280E1 +1.640188000E3,5.379936676E1 +1.640446000E3,5.498271927E1 +1.640705000E3,5.883708769E1 +1.641003000E3,5.515786146E1 +1.641329000E3,5.323855564E1 +1.641593000E3,5.000482182E1 +1.641876000E3,5.182077324E1 +1.642101000E3,5.319082569E1 +1.642344000E3,6.611850928E1 +1.642626000E3,5.190424983E1 +1.642867000E3,5.081734830E1 +1.643118000E3,5.711045841E1 +1.643458000E3,5.520016906E1 +1.643723000E3,5.247062228E1 +1.643997000E3,5.309157546E1 +1.644256000E3,5.339769460E1 +1.644621000E3,5.982216134E1 +1.644883000E3,5.915424673E1 +1.645133000E3,5.849263499E1 +1.645426000E3,5.826666974E1 +1.645723000E3,5.673329902E1 +1.645972000E3,5.580417722E1 +1.646244000E3,5.457004449E1 +1.646473000E3,5.835958867E1 +1.646716000E3,5.599398637E1 +1.646958000E3,5.928075116E1 +1.647232000E3,5.394053714E1 +1.647507000E3,5.853879118E1 +1.647858000E3,5.674494648E1 +1.648113000E3,5.640074652E1 +1.648414000E3,5.694867796E1 +1.648656000E3,5.573466688E1 +1.648962000E3,5.556104957E1 +1.649254000E3,5.770712773E1 +1.649548000E3,5.765349227E1 +1.649790000E3,5.583875333E1 +1.650054000E3,6.321152276E1 +1.650306000E3,5.966047080E1 +1.650600000E3,5.502015578E1 +1.650872000E3,5.066616477E1 +1.651172000E3,5.442335496E1 +1.651440000E3,5.956947456E1 +1.651736000E3,5.798320450E1 +1.651979000E3,5.739040713E1 +1.652228000E3,5.803662120E1 +1.652491000E3,6.146613872E1 +1.652750000E3,5.929116619E1 +1.653021000E3,5.936282359E1 +1.653288000E3,5.853226920E1 +1.653570000E3,5.954415072E1 +1.653872000E3,5.749576278E1 +1.654250000E3,5.567111200E1 +1.654518000E3,6.059415807E1 +1.654812000E3,5.855300274E1 +1.655081000E3,5.797601107E1 +1.655350000E3,6.029475669E1 +1.655647000E3,5.264118678E1 +1.655893000E3,5.715075800E1 +1.656153000E3,5.787679223E1 +1.656407000E3,6.038334743E1 +1.656655000E3,6.038245752E1 +1.656912000E3,5.475945603E1 +1.657171000E3,5.661674174E1 +1.657473000E3,5.618877186E1 +1.657717000E3,5.712918740E1 +1.657972000E3,5.834783502E1 +1.658283000E3,6.198115012E1 +1.658526000E3,5.639977894E1 +1.658788000E3,5.416850689E1 +1.659089000E3,5.679686188E1 +1.659335000E3,5.697270686E1 +1.659619000E3,5.371836804E1 +1.659873000E3,6.082252986E1 +1.660120000E3,6.285201132E1 +1.660416000E3,6.088574857E1 +1.660728000E3,6.109109391E1 +1.661004000E3,5.861240224E1 +1.661283000E3,6.123850168E1 +1.661519000E3,5.849447684E1 +1.661821000E3,5.472352136E1 +1.662065000E3,5.502625911E1 +1.662312000E3,5.606436387E1 +1.662565000E3,5.546236927E1 +1.662845000E3,6.075823181E1 +1.663075000E3,5.951357638E1 +1.663350000E3,5.956681026E1 +1.663575000E3,5.780116333E1 +1.663928000E3,6.184122024E1 +1.664178000E3,5.626291699E1 +1.664419000E3,5.635545931E1 +1.664671000E3,5.487242490E1 +1.664936000E3,5.392872477E1 +1.665237000E3,5.658170902E1 +1.665476000E3,5.449322435E1 +1.665752000E3,5.111063749E1 +1.665997000E3,5.288359358E1 +1.666249000E3,5.825102048E1 +1.666508000E3,6.087585373E1 +1.666750000E3,5.822210598E1 +1.667110000E3,6.320270923E1 +1.667355000E3,5.563170163E1 +1.667628000E3,5.240635194E1 +1.667875000E3,5.485055122E1 +1.668144000E3,5.590209292E1 +1.668402000E3,5.750031923E1 +1.668648000E3,5.301598344E1 +1.668896000E3,5.208077776E1 +1.669157000E3,5.024112467E1 +1.669414000E3,5.530220423E1 +1.669710000E3,5.585178295E1 +1.669955000E3,5.443268015E1 +1.670292000E3,5.292974908E1 +1.670566000E3,5.501741168E1 +1.670818000E3,5.190433464E1 +1.671077000E3,5.602388651E1 +1.671384000E3,5.384205522E1 +1.671688000E3,5.355394771E1 +1.671956000E3,4.896600257E1 +1.672212000E3,4.457728928E1 +1.672483000E3,5.407780485E1 +1.672726000E3,5.808535163E1 +1.672991000E3,5.497589856E1 +1.673269000E3,5.816061182E1 +1.673625000E3,5.457220472E1 +1.673896000E3,5.852786772E1 +1.674165000E3,5.615855966E1 +1.674439000E3,5.901141794E1 +1.674702000E3,5.821771493E1 +1.675040000E3,5.533746886E1 +1.675330000E3,5.469332456E1 +1.675631000E3,5.895976057E1 +1.675867000E3,5.565047570E1 +1.676161000E3,5.342216333E1 +1.676431000E3,5.339304237E1 +1.676716000E3,5.196130631E1 +1.677075000E3,5.500129023E1 +1.677346000E3,5.649474234E1 +1.677614000E3,5.620691351E1 +1.677867000E3,5.756400488E1 +1.678112000E3,5.571225073E1 +1.678362000E3,6.171466353E1 +1.678655000E3,5.523245256E1 +1.678909000E3,5.780473196E1 +1.679167000E3,5.918101801E1 +1.679536000E3,5.449831587E1 +1.679788000E3,5.278747036E1 +1.680072000E3,5.502423006E1 +1.680392000E3,5.603218813E1 +1.680667000E3,5.681691969E1 +1.680917000E3,5.574952817E1 +1.681227000E3,5.747793831E1 +1.681510000E3,5.831554727E1 +1.681811000E3,5.823344802E1 +1.682073000E3,5.677197169E1 +1.682402000E3,5.423243511E1 +1.682746000E3,5.568639423E1 +1.683007000E3,5.601571559E1 +1.683297000E3,5.788588795E1 +1.683563000E3,5.178162942E1 +1.683805000E3,5.244727762E1 +1.684102000E3,5.504021082E1 +1.684342000E3,5.312145782E1 +1.684637000E3,5.266466104E1 +1.684875000E3,5.430143327E1 +1.685171000E3,5.731848010E1 +1.685409000E3,5.314967575E1 +1.685703000E3,5.210480680E1 +1.685940000E3,5.447962472E1 +1.686242000E3,5.671930258E1 +1.686480000E3,5.298653153E1 +1.686837000E3,5.390672385E1 +1.687083000E3,5.256535993E1 +1.687387000E3,5.295433262E1 +1.687686000E3,4.693434793E1 +1.687930000E3,5.264001548E1 +1.688191000E3,4.696703102E1 +1.688514000E3,5.290693761E1 +1.688768000E3,5.572289252E1 +1.689025000E3,5.629476293E1 +1.689331000E3,5.221395629E1 +1.689585000E3,5.553268928E1 +1.689905000E3,5.392885939E1 +1.690136000E3,5.613018872E1 +1.690432000E3,5.323144022E1 +1.690690000E3,5.426457319E1 +1.690988000E3,5.869511223E1 +1.691244000E3,5.724931575E1 +1.691548000E3,5.702890727E1 +1.691819000E3,5.957894946E1 +1.692068000E3,5.833323285E1 +1.692367000E3,5.920896731E1 +1.692598000E3,5.809066040E1 +1.692847000E3,5.683194919E1 +1.693218000E3,5.880411413E1 +1.693536000E3,5.430005356E1 +1.693836000E3,5.347827494E1 +1.694082000E3,5.139526617E1 +1.694323000E3,6.486669482E1 +1.694607000E3,5.827670564E1 +1.694879000E3,5.749070135E1 +1.695112000E3,5.439297467E1 +1.695418000E3,5.591879208E1 +1.695720000E3,5.984156108E1 +1.695978000E3,5.763450389E1 +1.696238000E3,5.535113951E1 +1.696577000E3,5.468640858E1 +1.696840000E3,5.145216534E1 +1.697142000E3,5.633820526E1 +1.697434000E3,5.961813260E1 +1.697672000E3,5.761348305E1 +1.697970000E3,5.587832748E1 +1.698213000E3,5.615239979E1 +1.698514000E3,6.142159571E1 +1.698744000E3,5.868747140E1 +1.699038000E3,5.639074769E1 +1.699277000E3,5.843791784E1 +1.699602000E3,5.580904726E1 +1.699849000E3,5.188032815E1 +1.700148000E3,6.050592844E1 +1.700415000E3,5.851925341E1 +1.700742000E3,5.754370303E1 +1.700996000E3,5.792652906E1 +1.701265000E3,5.809754284E1 +1.701543000E3,5.435013872E1 +1.701827000E3,5.364293620E1 +1.702095000E3,5.742174876E1 +1.702342000E3,5.921232761E1 +1.702597000E3,5.246613397E1 +1.702852000E3,5.865178399E1 +1.703188000E3,6.209648540E1 +1.703456000E3,5.783126524E1 +1.703723000E3,6.129722089E1 +1.704021000E3,6.159059582E1 +1.704258000E3,6.290365934E1 +1.704500000E3,5.899658178E1 +1.704744000E3,5.570772177E1 +1.705020000E3,6.042975914E1 +1.705281000E3,6.063911519E1 +1.705578000E3,5.667741437E1 +1.705818000E3,5.616948640E1 +1.706065000E3,5.809228765E1 +1.706440000E3,6.194892333E1 +1.706707000E3,5.510896653E1 +1.706968000E3,5.648771637E1 +1.707226000E3,5.451026369E1 +1.707530000E3,5.655237570E1 +1.707813000E3,6.342687376E1 +1.708096000E3,5.687609223E1 +1.708345000E3,5.784030597E1 +1.708587000E3,5.696931166E1 +1.708832000E3,5.826055047E1 +1.709133000E3,6.171963981E1 +1.709444000E3,6.289993620E1 +1.709785000E3,6.196750111E1 +1.710095000E3,6.021872673E1 +1.710401000E3,5.493999514E1 +1.710645000E3,5.748920917E1 +1.710951000E3,5.990748875E1 +1.711204000E3,5.995493625E1 +1.711504000E3,5.608393688E1 +1.711807000E3,6.225697969E1 +1.712052000E3,6.005399346E1 +1.712297000E3,6.276583246E1 +1.712594000E3,6.409669700E1 +1.712952000E3,5.846223798E1 +1.713249000E3,6.222377893E1 +1.713511000E3,6.179119431E1 +1.713770000E3,6.687160955E1 +1.714020000E3,6.224215114E1 +1.714281000E3,6.460780580E1 +1.714608000E3,6.323149402E1 +1.714900000E3,5.890183616E1 +1.715139000E3,6.173404899E1 +1.715438000E3,6.193562982E1 +1.715674000E3,6.231645929E1 +1.715912000E3,5.798536661E1 +1.716293000E3,5.569607438E1 +1.716537000E3,6.131866955E1 +1.716790000E3,5.896584959E1 +1.717096000E3,5.693976131E1 +1.717346000E3,5.531403594E1 +1.717631000E3,5.794989861E1 +1.717933000E3,5.594899441E1 +1.718204000E3,5.601359132E1 +1.718501000E3,5.861037671E1 +1.718741000E3,6.432265266E1 +1.719043000E3,6.182586376E1 +1.719355000E3,6.076827417E1 +1.719645000E3,5.634225228E1 +1.719943000E3,5.935070169E1 +1.720188000E3,5.856877062E1 +1.720486000E3,5.761843709E1 +1.720741000E3,5.935030376E1 +1.720985000E3,5.413194972E1 +1.721289000E3,5.939733818E1 +1.721553000E3,5.617827250E1 +1.721847000E3,5.807085988E1 +1.722091000E3,5.877044817E1 +1.722445000E3,6.593854232E1 +1.722681000E3,6.027114564E1 +1.722973000E3,5.866411762E1 +1.723271000E3,5.588604319E1 +1.723508000E3,5.958751798E1 +1.723800000E3,6.077290351E1 +1.724039000E3,5.722905231E1 +1.724338000E3,5.619905124E1 +1.724576000E3,5.628809107E1 +1.724876000E3,5.560357878E1 +1.725168000E3,5.447509555E1 +1.725542000E3,5.278892866E1 +1.725841000E3,4.816211457E1 +1.726139000E3,4.622333411E1 +1.726399000E3,4.728231882E1 +1.726691000E3,5.101510224E1 +1.726947000E3,4.725933617E1 +1.727273000E3,5.333398449E1 +1.727569000E3,5.518583989E1 +1.727808000E3,5.719998093E1 +1.728061000E3,5.375072532E1 +1.728352000E3,5.631849408E1 +1.728644000E3,5.232994659E1 +1.729024000E3,5.045911420E1 +1.729295000E3,4.931808913E1 +1.729541000E3,4.866846016E1 +1.729788000E3,5.127644661E1 +1.730054000E3,4.769951033E1 +1.730296000E3,5.553885299E1 +1.730573000E3,5.629080236E1 +1.730816000E3,5.218818952E1 +1.731119000E3,5.112756333E1 +1.731379000E3,5.524890032E1 +1.731688000E3,5.530134621E1 +1.731949000E3,5.451831728E1 +1.732288000E3,5.380962689E1 +1.732589000E3,5.754684503E1 +1.732833000E3,5.184401682E1 +1.733102000E3,5.011373730E1 +1.733369000E3,5.541779655E1 +1.733647000E3,5.983699601E1 +1.733886000E3,6.131428317E1 +1.734163000E3,6.052345820E1 +1.734405000E3,5.852692054E1 +1.734659000E3,5.861191265E1 +1.734933000E3,5.957936529E1 +1.735219000E3,5.639739849E1 +1.735540000E3,5.207917019E1 +1.735832000E3,4.548490451E1 +1.736112000E3,5.219897691E1 +1.736384000E3,5.618314188E1 +1.736684000E3,5.720418785E1 +1.736946000E3,5.895068629E1 +1.737213000E3,5.652216932E1 +1.737468000E3,5.796687034E1 +1.737738000E3,5.591197017E1 +1.737996000E3,5.493985473E1 +1.738236000E3,5.752137274E1 +1.738586000E3,6.041563952E1 +1.738921000E3,6.199530447E1 +1.739167000E3,5.310800091E1 +1.739430000E3,5.600574849E1 +1.739683000E3,6.494981167E1 +1.739952000E3,6.157046745E1 +1.740293000E3,6.002681302E1 +1.740611000E3,5.943541790E1 +1.740910000E3,5.731619793E1 +1.741197000E3,5.885751119E1 +1.741508000E3,5.719237093E1 +1.741767000E3,5.958897825E1 +1.742034000E3,5.543499582E1 +1.742424000E3,5.632783570E1 +1.742688000E3,5.565042743E1 +1.742946000E3,5.622883854E1 +1.743204000E3,6.327777019E1 +1.743456000E3,5.663098185E1 +1.743721000E3,5.729384715E1 +1.743966000E3,6.200582057E1 +1.744273000E3,5.107652622E1 +1.744505000E3,5.491520459E1 +1.744752000E3,5.181266373E1 +1.745004000E3,5.014115745E1 +1.745297000E3,5.338585031E1 +1.745690000E3,5.654477286E1 +1.745966000E3,5.517036116E1 +1.746219000E3,5.200430375E1 +1.746475000E3,5.963355448E1 +1.746732000E3,5.854837006E1 +1.747002000E3,5.571277949E1 +1.747293000E3,5.825116458E1 +1.747522000E3,5.673248340E1 +1.747772000E3,5.683320783E1 +1.748035000E3,5.224053713E1 +1.748289000E3,5.713452273E1 +1.748568000E3,5.539076360E1 +1.748961000E3,6.015893340E1 +1.749211000E3,5.710921188E1 +1.749460000E3,6.114476082E1 +1.749715000E3,5.648052368E1 +1.749961000E3,5.897720288E1 +1.750207000E3,5.525435431E1 +1.750521000E3,5.447453139E1 +1.750765000E3,5.883968686E1 +1.751015000E3,5.450160052E1 +1.751290000E3,5.405183560E1 +1.751522000E3,5.501343440E1 +1.751848000E3,5.586635599E1 +1.752096000E3,5.631573217E1 +1.752372000E3,5.960964241E1 +1.752637000E3,5.320710483E1 +1.752941000E3,5.848434869E1 +1.753209000E3,5.619196315E1 +1.753510000E3,5.692291103E1 +1.753774000E3,5.505374149E1 +1.754051000E3,5.721759821E1 +1.754315000E3,5.539152446E1 +1.754625000E3,5.632890174E1 +1.754919000E3,5.918851802E1 +1.755262000E3,5.807294381E1 +1.755529000E3,5.748451885E1 +1.755827000E3,6.055251826E1 +1.756067000E3,6.208050524E1 +1.756367000E3,5.991655048E1 +1.756607000E3,6.073519941E1 +1.756900000E3,5.774998130E1 +1.757144000E3,5.751173009E1 +1.757417000E3,5.299288378E1 +1.757700000E3,5.913293772E1 +1.758005000E3,5.732040664E1 +1.758269000E3,6.221202462E1 +1.758585000E3,6.285457626E1 +1.758834000E3,5.870613535E1 +1.759137000E3,5.533279687E1 +1.759391000E3,5.194643865E1 +1.759644000E3,4.891449850E1 +1.759922000E3,4.784429271E1 +1.760236000E3,5.273391136E1 +1.760503000E3,5.475616990E1 +1.760758000E3,5.640096860E1 +1.761017000E3,5.329458627E1 +1.761282000E3,4.798672737E1 +1.761535000E3,5.532988346E1 +1.761794000E3,5.189579265E1 +1.762040000E3,5.068357941E1 +1.762299000E3,5.751972157E1 +1.762578000E3,5.430434207E1 +1.762831000E3,5.331943982E1 +1.763136000E3,5.699367350E1 +1.763409000E3,5.622858108E1 +1.763658000E3,5.631559008E1 +1.763910000E3,5.738562920E1 +1.764157000E3,6.030103345E1 +1.764400000E3,5.680309722E1 +1.764695000E3,5.703631315E1 +1.765017000E3,5.682945247E1 +1.765300000E3,5.317093897E1 +1.765575000E3,5.620624417E1 +1.765832000E3,5.550075987E1 +1.766100000E3,6.321349509E1 +1.766371000E3,5.938123887E1 +1.766635000E3,6.289622107E1 +1.766898000E3,5.890101653E1 +1.767155000E3,5.928826732E1 +1.767399000E3,5.872890625E1 +1.767638000E3,6.184345237E1 +1.767877000E3,6.131073260E1 +1.768211000E3,6.085041665E1 +1.768587000E3,6.015418617E1 +1.768835000E3,5.648473324E1 +1.769119000E3,5.746059957E1 +1.769380000E3,5.608054299E1 +1.769692000E3,6.542458852E1 +1.769998000E3,6.121618195E1 +1.770281000E3,5.842785672E1 +1.770536000E3,5.763776595E1 +1.770858000E3,5.630873419E1 +1.771133000E3,5.339704361E1 +1.771378000E3,5.463873835E1 +1.771723000E3,5.659388596E1 +1.772050000E3,5.449836230E1 +1.772294000E3,5.154616724E1 +1.772537000E3,5.082603581E1 +1.772795000E3,5.334183734E1 +1.773055000E3,5.096094928E1 +1.773365000E3,5.171061147E1 +1.773612000E3,5.477281719E1 +1.773878000E3,5.060909259E1 +1.774171000E3,5.285294921E1 +1.774452000E3,5.393730531E1 +1.774725000E3,5.333400186E1 +1.774980000E3,5.285705613E1 +1.775346000E3,5.719168586E1 +1.775663000E3,5.642193929E1 +1.775908000E3,4.659059970E1 +1.776150000E3,5.521168672E1 +1.776388000E3,5.693500665E1 +1.776630000E3,6.030483668E1 +1.776910000E3,5.944095915E1 +1.777153000E3,5.708951289E1 +1.777414000E3,5.291982189E1 +1.777666000E3,5.900042024E1 +1.777935000E3,6.010949926E1 +1.778229000E3,6.009411695E1 +1.778514000E3,5.804757181E1 +1.778758000E3,5.922775473E1 +1.779011000E3,6.063545461E1 +1.779277000E3,5.950242674E1 +1.779575000E3,6.057891518E1 +1.779819000E3,6.050018223E1 +1.780115000E3,5.965583098E1 +1.780361000E3,5.651792502E1 +1.780660000E3,5.814099422E1 +1.780904000E3,5.340077797E1 +1.781203000E3,5.734973286E1 +1.781481000E3,5.846278011E1 +1.781805000E3,5.369751607E1 +1.782048000E3,5.229063054E1 +1.782299000E3,5.345996994E1 +1.782583000E3,5.724353788E1 +1.782883000E3,5.610772411E1 +1.783181000E3,5.272586700E1 +1.783423000E3,5.272075137E1 +1.783692000E3,5.495532717E1 +1.783945000E3,5.594785882E1 +1.784202000E3,5.914935612E1 +1.784483000E3,6.427791570E1 +1.784735000E3,6.185652247E1 +1.785051000E3,6.178338943E1 +1.785352000E3,6.304285312E1 +1.785598000E3,5.699176354E1 +1.785897000E3,5.705567192E1 +1.786190000E3,5.975757470E1 +1.786467000E3,6.092866408E1 +1.786714000E3,5.771726615E1 +1.786984000E3,5.434727511E1 +1.787232000E3,5.250796794E1 +1.787486000E3,5.668884634E1 +1.787813000E3,5.600600547E1 +1.788061000E3,5.162213387E1 +1.788391000E3,5.782497792E1 +1.788636000E3,5.900804565E1 +1.788935000E3,6.056317474E1 +1.789175000E3,5.749029459E1 +1.789469000E3,6.053654612E1 +1.789714000E3,5.841478287E1 +1.789988000E3,5.700130118E1 +1.790219000E3,5.562837186E1 +1.790509000E3,5.430369658E1 +1.790806000E3,5.586895515E1 +1.791048000E3,5.809725956E1 +1.791409000E3,5.552827992E1 +1.791650000E3,5.534472171E1 +1.791981000E3,5.671474363E1 +1.792227000E3,5.716453332E1 +1.792522000E3,5.844249975E1 +1.792847000E3,5.961186667E1 +1.793109000E3,5.794833541E1 +1.793437000E3,5.832360597E1 +1.793698000E3,5.996001578E1 +1.793970000E3,5.849924827E1 +1.794223000E3,5.823551411E1 +1.794488000E3,5.480450178E1 +1.794819000E3,5.715609034E1 +1.795083000E3,5.418083703E1 +1.795329000E3,5.529883425E1 +1.795587000E3,5.729455769E1 +1.795853000E3,5.358946536E1 +1.796083000E3,5.534684059E1 +1.796374000E3,5.693696454E1 +1.796630000E3,5.642610016E1 +1.796927000E3,5.692548294E1 +1.797194000E3,5.931602223E1 +1.797469000E3,5.877569790E1 +1.797716000E3,5.527135197E1 +1.798053000E3,5.904674814E1 +1.798358000E3,5.655039196E1 +1.798612000E3,5.796779928E1 +1.798921000E3,5.499199210E1 +1.799185000E3,5.693837926E1 +1.799465000E3,6.235855457E1 +1.799695000E3,6.271612813E1 +1.799964000E3,6.118271582E1 +1.800233000E3,6.171552449E1 +1.800562000E3,6.293258336E1 +1.800818000E3,5.927940855E1 +1.801077000E3,5.836879001E1 +1.801406000E3,6.182854437E1 +1.801650000E3,5.918527405E1 +1.801894000E3,6.352260837E1 +1.802163000E3,6.142940723E1 +1.802385000E3,5.867772092E1 +1.802631000E3,5.916688243E1 +1.802927000E3,5.855222781E1 +1.803228000E3,6.125789004E1 +1.803533000E3,5.839377949E1 +1.803816000E3,5.705167204E1 +1.804057000E3,5.641730344E1 +1.804362000E3,6.771092582E1 +1.804585000E3,6.036461449E1 +1.804835000E3,6.742095194E1 +1.805132000E3,6.133151855E1 +1.805443000E3,6.658554202E1 +1.805718000E3,7.095511769E1 +1.806003000E3,7.330553664E1 +1.806290000E3,6.732809523E1 +1.806566000E3,6.106403544E1 +1.806844000E3,5.830930506E1 +1.807085000E3,6.610455401E1 +1.807442000E3,5.944325189E1 +1.807800000E3,5.667454347E1 +1.808044000E3,5.560521877E1 +1.808299000E3,5.488377812E1 +1.808542000E3,5.279721650E1 +1.808789000E3,4.834692654E1 +1.809029000E3,4.661669368E1 +1.809276000E3,5.501186804E1 +1.809526000E3,5.384830085E1 +1.809820000E3,5.526588307E1 +1.810084000E3,5.900458249E1 +1.810393000E3,5.557146256E1 +1.810647000E3,5.355619280E1 +1.811023000E3,5.627924000E1 +1.811283000E3,5.384503050E1 +1.811527000E3,5.309622401E1 +1.811816000E3,5.228523776E1 +1.812070000E3,5.317657142E1 +1.812328000E3,5.813846570E1 +1.812583000E3,5.621088360E1 +1.812927000E3,5.646965227E1 +1.813191000E3,5.322001188E1 +1.813436000E3,5.451886743E1 +1.813748000E3,5.558621720E1 +1.814006000E3,5.673920724E1 +1.814328000E3,5.582855401E1 +1.814591000E3,6.044196407E1 +1.814848000E3,5.769208427E1 +1.815109000E3,6.206015086E1 +1.815391000E3,5.918173335E1 +1.815660000E3,5.779702061E1 +1.815927000E3,6.516398742E1 +1.816218000E3,5.927869783E1 +1.816546000E3,6.320256740E1 +1.816802000E3,6.296743684E1 +1.817051000E3,5.869001212E1 +1.817329000E3,5.985536664E1 +1.817620000E3,5.435607380E1 +1.817905000E3,5.721703373E1 +1.818148000E3,6.314389823E1 +1.818376000E3,6.116752308E1 +1.818622000E3,5.773611736E1 +1.818863000E3,5.892899245E1 +1.819138000E3,5.791411351E1 +1.819457000E3,6.283307798E1 +1.819719000E3,5.805008540E1 +1.819967000E3,6.383011196E1 +1.820266000E3,5.915938870E1 +1.820515000E3,5.795811325E1 +1.820871000E3,5.730398564E1 +1.821113000E3,5.907223014E1 +1.821388000E3,5.566469845E1 +1.821612000E3,5.223652040E1 +1.821858000E3,5.461868826E1 +1.822118000E3,5.731142265E1 +1.822388000E3,5.743609212E1 +1.822672000E3,6.147918645E1 +1.822919000E3,6.109678537E1 +1.823167000E3,5.654516230E1 +1.823464000E3,6.010058675E1 +1.823716000E3,6.101649690E1 +1.824046000E3,5.741898993E1 +1.824372000E3,5.654969113E1 +1.824629000E3,5.489877253E1 +1.824894000E3,6.410593751E1 +1.825142000E3,5.923267903E1 +1.825399000E3,5.977300321E1 +1.825683000E3,5.945891570E1 +1.825907000E3,5.799474745E1 +1.826162000E3,5.485933719E1 +1.826447000E3,5.848818620E1 +1.826697000E3,5.937282663E1 +1.826944000E3,5.473647239E1 +1.827319000E3,5.611635619E1 +1.827649000E3,5.704234375E1 +1.827909000E3,5.174683398E1 +1.828172000E3,5.243070089E1 +1.828457000E3,5.835398328E1 +1.828710000E3,6.579711207E1 +1.828969000E3,6.063158540E1 +1.829218000E3,5.379307224E1 +1.829474000E3,5.791005982E1 +1.829779000E3,5.908028356E1 +1.830025000E3,5.476368407E1 +1.830307000E3,5.608145667E1 +1.830627000E3,5.417323034E1 +1.830843000E3,5.295530865E1 +1.831087000E3,5.335160491E1 +1.831385000E3,5.274441298E1 +1.831622000E3,5.307477504E1 +1.831918000E3,5.606159985E1 +1.832155000E3,6.009472302E1 +1.832471000E3,5.380117674E1 +1.832766000E3,5.382200579E1 +1.833012000E3,5.176006230E1 +1.833256000E3,5.956343573E1 +1.833577000E3,5.545935306E1 +1.833826000E3,5.528541848E1 +1.834083000E3,5.436381252E1 +1.834373000E3,5.684307553E1 +1.834669000E3,5.352399464E1 +1.834910000E3,5.651184236E1 +1.835208000E3,5.432875840E1 +1.835453000E3,5.442576527E1 +1.835752000E3,5.643309342E1 +1.836022000E3,5.781174029E1 +1.836293000E3,6.110602518E1 +1.836557000E3,5.591856301E1 +1.836932000E3,5.423752303E1 +1.837200000E3,5.716598850E1 +1.837455000E3,5.511743414E1 +1.837716000E3,5.819026063E1 +1.837988000E3,5.728773522E1 +1.838236000E3,5.959151016E1 +1.838540000E3,5.810767345E1 +1.838799000E3,5.779128856E1 +1.839096000E3,6.092094761E1 +1.839361000E3,5.957871329E1 +1.839608000E3,5.838702884E1 +1.839856000E3,5.927631822E1 +1.840242000E3,5.748386760E1 +1.840516000E3,5.957609475E1 +1.840759000E3,5.688693666E1 +1.841054000E3,5.883374773E1 +1.841320000E3,5.769470339E1 +1.841597000E3,5.894509733E1 +1.841885000E3,6.032854908E1 +1.842190000E3,5.891601570E1 +1.842444000E3,5.957860612E1 +1.842691000E3,5.968229576E1 +1.842933000E3,5.829247522E1 +1.843258000E3,6.183086549E1 +1.843539000E3,6.077794792E1 +1.843765000E3,5.928253866E1 +1.844002000E3,5.782805396E1 +1.844301000E3,5.975447959E1 +1.844589000E3,6.108169982E1 +1.844825000E3,5.915565503E1 +1.845116000E3,5.981302437E1 +1.845363000E3,6.019248645E1 +1.845636000E3,6.014223773E1 +1.845861000E3,6.160258605E1 +1.846139000E3,6.002388007E1 +1.846447000E3,6.004612452E1 +1.846706000E3,5.932487324E1 +1.846979000E3,5.718424575E1 +1.847284000E3,5.712987240E1 +1.847586000E3,5.557624595E1 +1.847888000E3,5.603981815E1 +1.848146000E3,5.769591687E1 +1.848418000E3,5.526085696E1 +1.848706000E3,5.815102401E1 +1.848972000E3,5.884177354E1 +1.849226000E3,5.853138751E1 +1.849515000E3,6.156208919E1 +1.849746000E3,6.064923427E1 +1.850008000E3,6.590305387E1 +1.850338000E3,5.853444981E1 +1.850640000E3,5.717447935E1 +1.850942000E3,5.680568615E1 +1.851242000E3,5.928468331E1 +1.851504000E3,5.798449444E1 +1.851757000E3,5.802619768E1 +1.852033000E3,5.998338312E1 +1.852296000E3,5.683616594E1 +1.852550000E3,5.692327884E1 +1.852886000E3,5.878610583E1 +1.853162000E3,5.538467470E1 +1.853432000E3,5.437085520E1 +1.853738000E3,5.469765317E1 +1.854038000E3,5.790268038E1 +1.854297000E3,5.836787866E1 +1.854582000E3,6.160807622E1 +1.854881000E3,5.878613196E1 +1.855158000E3,6.200103199E1 +1.855387000E3,6.087479870E1 +1.855688000E3,6.028304140E1 +1.855930000E3,6.159527875E1 +1.856226000E3,6.082174354E1 +1.856487000E3,5.932314061E1 +1.856744000E3,5.976570730E1 +1.857001000E3,5.473753247E1 +1.857299000E3,5.954612483E1 +1.857556000E3,6.052388497E1 +1.857849000E3,5.848282940E1 +1.858086000E3,5.879664566E1 +1.858384000E3,5.864589973E1 +1.858677000E3,5.659242719E1 +1.858917000E3,5.683870091E1 +1.859195000E3,5.582498919E1 +1.859427000E3,6.011873423E1 +1.859676000E3,5.796702396E1 +1.859911000E3,5.928400715E1 +1.860149000E3,5.826876733E1 +1.860396000E3,6.038481253E1 +1.860680000E3,6.030085568E1 +1.860944000E3,5.890166619E1 +1.861209000E3,6.654379171E1 +1.861519000E3,6.016187265E1 +1.861755000E3,6.139297542E1 +1.862049000E3,6.289106669E1 +1.862388000E3,5.872946965E1 +1.862675000E3,5.800836625E1 +1.862993000E3,5.701819685E1 +1.863248000E3,5.488359846E1 +1.863519000E3,5.747446133E1 +1.863768000E3,5.996388232E1 +1.864087000E3,5.686047813E1 +1.864334000E3,5.935760915E1 +1.864635000E3,6.438349972E1 +1.864894000E3,6.008599590E1 +1.865205000E3,5.995474236E1 +1.865502000E3,6.596906108E1 +1.865837000E3,6.091064347E1 +1.866114000E3,5.885056970E1 +1.866411000E3,6.474486832E1 +1.866666000E3,5.888758286E1 +1.866964000E3,6.138447683E1 +1.867211000E3,6.032596684E1 +1.867482000E3,5.848476935E1 +1.867736000E3,5.631330849E1 +1.867989000E3,5.927138373E1 +1.868246000E3,5.817171672E1 +1.868499000E3,5.358065381E1 +1.868763000E3,5.500264039E1 +1.869129000E3,5.663946315E1 +1.869384000E3,5.601392416E1 +1.869636000E3,5.640732154E1 +1.869947000E3,5.320213962E1 +1.870207000E3,4.907811811E1 +1.870470000E3,5.784153600E1 +1.870743000E3,5.988355074E1 +1.871011000E3,5.973830135E1 +1.871253000E3,5.769679044E1 +1.871519000E3,5.395770126E1 +1.871765000E3,5.751088186E1 +1.872011000E3,5.342275719E1 +1.872301000E3,5.638616310E1 +1.872563000E3,5.124369984E1 +1.872821000E3,5.357036185E1 +1.873129000E3,5.529809524E1 +1.873386000E3,5.442720524E1 +1.873650000E3,5.306298792E1 +1.873937000E3,5.703507672E1 +1.874184000E3,5.835246426E1 +1.874444000E3,5.638184247E1 +1.874707000E3,5.201779537E1 +1.874972000E3,5.217149520E1 +1.875244000E3,5.757612416E1 +1.875577000E3,5.387788750E1 +1.875865000E3,5.607108884E1 +1.876149000E3,5.692352283E1 +1.876407000E3,5.577296536E1 +1.876687000E3,5.259836493E1 +1.876982000E3,5.467571766E1 +1.877215000E3,5.256317748E1 +1.877521000E3,5.522593862E1 +1.877775000E3,5.432669245E1 +1.878036000E3,5.734031668E1 +1.878314000E3,6.027566119E1 +1.878587000E3,5.567003578E1 +1.878912000E3,5.307720644E1 +1.879176000E3,5.659939353E1 +1.879425000E3,5.110556861E1 +1.879723000E3,5.673190580E1 +1.879969000E3,5.437112204E1 +1.880274000E3,5.433297742E1 +1.880576000E3,5.585075865E1 +1.880875000E3,5.657006430E1 +1.881117000E3,5.701623858E1 +1.881424000E3,5.749679466E1 +1.881673000E3,5.623079196E1 +1.881986000E3,5.545187468E1 +1.882329000E3,5.781610131E1 +1.882611000E3,5.432916720E1 +1.882882000E3,4.940287270E1 +1.883127000E3,5.866223377E1 +1.883391000E3,5.654564177E1 +1.883644000E3,5.888782218E1 +1.883889000E3,5.586307703E1 +1.884148000E3,5.930725555E1 +1.884413000E3,5.963840788E1 +1.884660000E3,5.928611951E1 +1.884926000E3,5.621968819E1 +1.885181000E3,5.811455305E1 +1.885457000E3,5.585646129E1 +1.885714000E3,5.989591718E1 +1.885968000E3,6.058402104E1 +1.886267000E3,5.972100226E1 +1.886517000E3,6.220704457E1 +1.886832000E3,6.037773435E1 +1.887106000E3,6.039308032E1 +1.887385000E3,6.223647696E1 +1.887617000E3,5.854088114E1 +1.887876000E3,6.248517888E1 +1.888128000E3,6.222318884E1 +1.888437000E3,6.070320114E1 +1.888777000E3,5.817372188E1 +1.889076000E3,5.382250608E1 +1.889369000E3,7.004593531E1 +1.889616000E3,6.094415751E1 +1.889913000E3,5.455584628E1 +1.890163000E3,5.387250795E1 +1.890418000E3,5.219742496E1 +1.890714000E3,5.070715955E1 +1.890961000E3,5.362651533E1 +1.891207000E3,5.046817004E1 +1.891453000E3,5.129339201E1 +1.891764000E3,4.856730286E1 +1.892053000E3,5.220705734E1 +1.892321000E3,5.401068171E1 +1.892582000E3,5.109746146E1 +1.892834000E3,5.412675897E1 +1.893090000E3,5.347014573E1 +1.893340000E3,5.092720593E1 +1.893620000E3,5.341316175E1 +1.893886000E3,4.870918930E1 +1.894142000E3,4.929590175E1 +1.894389000E3,4.686294330E1 +1.894692000E3,5.100486031E1 +1.894995000E3,5.087478993E1 +1.895328000E3,4.940372977E1 +1.895606000E3,5.362468443E1 +1.895919000E3,5.608826750E1 +1.896241000E3,5.628756413E1 +1.896497000E3,5.817843169E1 +1.896749000E3,5.809119715E1 +1.897054000E3,5.469613872E1 +1.897287000E3,5.437807476E1 +1.897582000E3,5.794761863E1 +1.897897000E3,6.027023965E1 +1.898145000E3,5.913564460E1 +1.898511000E3,5.510014788E1 +1.898752000E3,5.499817732E1 +1.898999000E3,5.569220222E1 +1.899294000E3,5.368447548E1 +1.899547000E3,5.912109227E1 +1.899841000E3,6.076259223E1 +1.900104000E3,6.153129043E1 +1.900349000E3,5.679462536E1 +1.900634000E3,5.721135074E1 +1.900927000E3,5.674745728E1 +1.901166000E3,5.556227882E1 +1.901462000E3,4.994603734E1 +1.901841000E3,5.122656475E1 +1.902183000E3,5.127903645E1 +1.902436000E3,5.042064547E1 +1.902695000E3,5.425673681E1 +1.902998000E3,5.484388956E1 +1.903228000E3,5.322356297E1 +1.903483000E3,5.161093724E1 +1.903730000E3,5.302125687E1 +1.904019000E3,5.241958307E1 +1.904307000E3,5.116604316E1 +1.904614000E3,5.319513233E1 +1.904991000E3,5.530482451E1 +1.905243000E3,5.829713614E1 +1.905528000E3,4.891404960E1 +1.905774000E3,5.408250868E1 +1.906083000E3,5.272747143E1 +1.906381000E3,5.216068921E1 +1.906624000E3,5.292203291E1 +1.906885000E3,5.243548019E1 +1.907149000E3,4.981562618E1 +1.907448000E3,5.500279348E1 +1.907742000E3,5.481190601E1 +1.907999000E3,5.369800103E1 +1.908315000E3,6.390197571E1 +1.908579000E3,6.517990141E1 +1.908825000E3,5.822949910E1 +1.909064000E3,5.655728640E1 +1.909356000E3,5.292186662E1 +1.909600000E3,5.069372058E1 +1.909895000E3,5.368100654E1 +1.910138000E3,5.616508462E1 +1.910432000E3,6.285923815E1 +1.910670000E3,6.254266196E1 +1.910979000E3,5.628599605E1 +1.911260000E3,5.616383984E1 +1.911482000E3,5.074231882E1 +1.911728000E3,5.398858859E1 +1.911977000E3,5.585565083E1 +1.912237000E3,5.777112626E1 +1.912532000E3,6.036032129E1 +1.912783000E3,6.077032608E1 +1.913052000E3,5.839282786E1 +1.913316000E3,5.397912726E1 +1.913575000E3,5.582771928E1 +1.913848000E3,5.579334158E1 +1.914143000E3,5.778281485E1 +1.914450000E3,5.783459906E1 +1.914713000E3,6.199387267E1 +1.914943000E3,6.173706737E1 +1.915185000E3,5.621060236E1 +1.915433000E3,5.563784893E1 +1.915692000E3,5.470990272E1 +1.915951000E3,5.469960060E1 +1.916217000E3,6.171536544E1 +1.916470000E3,5.862130066E1 +1.916777000E3,5.839467924E1 +1.917028000E3,5.552209731E1 +1.917324000E3,5.763067987E1 +1.917687000E3,5.981653815E1 +1.917967000E3,5.790518789E1 +1.918210000E3,5.220287871E1 +1.918457000E3,5.707286116E1 +1.918759000E3,5.657529642E1 +1.918997000E3,6.000130629E1 +1.919241000E3,5.708419446E1 +1.919496000E3,5.749223221E1 +1.919768000E3,5.843781753E1 +1.920074000E3,5.671929683E1 +1.920373000E3,5.881070992E1 +1.920621000E3,5.603223824E1 +1.920956000E3,6.053511488E1 +1.921216000E3,5.525745837E1 +1.921476000E3,6.186721324E1 +1.921723000E3,6.214292360E1 +1.922025000E3,5.857206109E1 +1.922320000E3,5.934438900E1 +1.922561000E3,6.077867207E1 +1.922860000E3,5.578255978E1 +1.923099000E3,5.723807446E1 +1.923347000E3,5.785786452E1 +1.923636000E3,6.037753633E1 +1.923892000E3,6.106459696E1 +1.924223000E3,5.873119773E1 +1.924511000E3,5.862235861E1 +1.924814000E3,5.732521131E1 +1.925070000E3,5.161553090E1 +1.925373000E3,5.243351685E1 +1.925626000E3,5.041805469E1 +1.925919000E3,5.543714980E1 +1.926175000E3,5.338657816E1 +1.926425000E3,5.616854022E1 +1.926695000E3,5.699328540E1 +1.926965000E3,5.787312270E1 +1.927305000E3,5.558473925E1 +1.927614000E3,5.927685087E1 +1.927880000E3,6.254706193E1 +1.928125000E3,6.079427969E1 +1.928390000E3,5.412440784E1 +1.928634000E3,5.441834540E1 +1.928928000E3,5.220486428E1 +1.929215000E3,5.210908233E1 +1.929515000E3,5.352367419E1 +1.929766000E3,5.356350702E1 +1.930022000E3,5.184851991E1 +1.930322000E3,5.311742835E1 +1.930607000E3,5.453786592E1 +1.930870000E3,5.814140937E1 +1.931155000E3,5.779656646E1 +1.931440000E3,5.488757891E1 +1.931727000E3,5.385182390E1 +1.931981000E3,5.705491580E1 +1.932229000E3,5.576165296E1 +1.932491000E3,5.781333383E1 +1.932730000E3,5.616780300E1 +1.932971000E3,5.400230043E1 +1.933232000E3,5.518627884E1 +1.933510000E3,5.211300688E1 +1.933795000E3,5.292820587E1 +1.934127000E3,5.382097927E1 +1.934390000E3,6.102840439E1 +1.934671000E3,5.486275546E1 +1.934948000E3,5.206103103E1 +1.935198000E3,5.739150099E1 +1.935506000E3,5.310844778E1 +1.935756000E3,5.392681604E1 +1.936008000E3,5.250003264E1 +1.936256000E3,5.801399662E1 +1.936524000E3,5.696032820E1 +1.936785000E3,5.414492013E1 +1.937032000E3,5.536982174E1 +1.937391000E3,5.750979970E1 +1.937677000E3,5.370086514E1 +1.937972000E3,5.359409099E1 +1.938241000E3,4.663692517E1 +1.938508000E3,4.740501122E1 +1.938772000E3,4.812116539E1 +1.939051000E3,4.940260018E1 +1.939311000E3,5.211533825E1 +1.939553000E3,5.351181789E1 +1.939796000E3,5.597808269E1 +1.940081000E3,5.841474518E1 +1.940347000E3,5.900966915E1 +1.940680000E3,5.844032848E1 +1.940932000E3,6.047778057E1 +1.941187000E3,6.179458512E1 +1.941488000E3,5.569784051E1 +1.941730000E3,5.535681081E1 +1.941971000E3,5.409739450E1 +1.942227000E3,5.551927029E1 +1.942555000E3,5.259381649E1 +1.942855000E3,5.090743186E1 +1.943101000E3,5.330610416E1 +1.943383000E3,5.722147303E1 +1.943610000E3,5.564867598E1 +1.944013000E3,5.456395907E1 +1.944265000E3,5.442943523E1 +1.944557000E3,5.982581487E1 +1.944820000E3,5.751114261E1 +1.945081000E3,5.998630171E1 +1.945333000E3,5.908382499E1 +1.945646000E3,5.828329647E1 +1.945951000E3,5.602282904E1 +1.946199000E3,6.197108249E1 +1.946496000E3,5.533258874E1 +1.946770000E3,5.704060455E1 +1.947126000E3,5.457797110E1 +1.947363000E3,5.430717613E1 +1.947637000E3,5.940687974E1 +1.947953000E3,5.436076271E1 +1.948235000E3,5.660912008E1 +1.948550000E3,5.504399315E1 +1.948861000E3,5.464999644E1 +1.949122000E3,5.565806372E1 +1.949384000E3,5.190569146E1 +1.949646000E3,5.153937000E1 +1.949972000E3,5.628803963E1 +1.950248000E3,5.966716422E1 +1.950577000E3,5.820503815E1 +1.950822000E3,5.652058726E1 +1.951118000E3,5.802645793E1 +1.951349000E3,5.727916959E1 +1.951597000E3,5.784165576E1 +1.951900000E3,5.999225852E1 +1.952197000E3,6.048891831E1 +1.952433000E3,5.821794698E1 +1.952728000E3,5.416701806E1 +1.952964000E3,5.183738883E1 +1.953295000E3,5.384161890E1 +1.953675000E3,5.430376660E1 +1.953907000E3,5.257088063E1 +1.954151000E3,5.392186903E1 +1.954431000E3,6.167467738E1 +1.954678000E3,5.958790115E1 +1.954923000E3,5.822018477E1 +1.955185000E3,5.808448347E1 +1.955447000E3,5.733347749E1 +1.955703000E3,6.261390980E1 +1.956005000E3,5.829281758E1 +1.956246000E3,5.949056653E1 +1.956541000E3,5.839747914E1 +1.956810000E3,5.770882066E1 +1.957120000E3,5.690637302E1 +1.957421000E3,5.796705847E1 +1.957668000E3,5.867770180E1 +1.957936000E3,5.696585443E1 +1.958216000E3,5.738908049E1 +1.958463000E3,5.842272770E1 +1.958721000E3,5.966072568E1 +1.959033000E3,6.340725612E1 +1.959281000E3,6.193544465E1 +1.959566000E3,5.927164536E1 +1.959888000E3,6.146900670E1 +1.960249000E3,6.270186363E1 +1.960512000E3,5.695216686E1 +1.960779000E3,5.725758836E1 +1.961040000E3,5.788439963E1 +1.961303000E3,6.286977927E1 +1.961557000E3,6.361469653E1 +1.961802000E3,6.277422462E1 +1.962060000E3,6.032704022E1 +1.962310000E3,5.600516510E1 +1.962586000E3,6.188879617E1 +1.962805000E3,6.271522018E1 +1.963107000E3,6.025198847E1 +1.963453000E3,6.001529679E1 +1.963728000E3,5.375240125E1 +1.964036000E3,5.055228276E1 +1.964331000E3,5.257092943E1 +1.964568000E3,5.708661900E1 +1.964868000E3,5.629448239E1 +1.965178000E3,5.425890416E1 +1.965431000E3,5.575014937E1 +1.965679000E3,5.801461965E1 +1.965931000E3,5.400244473E1 +1.966191000E3,5.474887871E1 +1.966525000E3,5.196538635E1 +1.966783000E3,5.536524974E1 +1.967040000E3,5.974878933E1 +1.967338000E3,6.200932986E1 +1.967644000E3,6.295299888E1 +1.967909000E3,6.272635154E1 +1.968153000E3,5.902465660E1 +1.968474000E3,5.897159976E1 +1.968773000E3,5.506910037E1 +1.969014000E3,5.622897524E1 +1.969254000E3,5.457019516E1 +1.969505000E3,5.648049168E1 +1.969892000E3,5.656883155E1 +1.970152000E3,5.598423772E1 +1.970446000E3,5.186768597E1 +1.970726000E3,5.526177698E1 +1.971020000E3,5.810907246E1 +1.971304000E3,5.262875480E1 +1.971613000E3,5.141696402E1 +1.971915000E3,5.298264424E1 +1.972196000E3,5.641801556E1 +1.972483000E3,5.228737642E1 +1.972725000E3,5.649656740E1 +1.973036000E3,5.867645632E1 +1.973323000E3,5.679238187E1 +1.973633000E3,5.959682402E1 +1.973935000E3,5.617109756E1 +1.974236000E3,5.473085666E1 +1.974547000E3,5.589564412E1 +1.974836000E3,5.691193712E1 +1.975136000E3,5.808545953E1 +1.975385000E3,5.922478363E1 +1.975631000E3,5.707996013E1 +1.975881000E3,5.820923707E1 +1.976194000E3,5.897957095E1 +1.976453000E3,6.019944728E1 +1.976814000E3,6.472960186E1 +1.977076000E3,6.312075290E1 +1.977356000E3,5.886370461E1 +1.977618000E3,5.750754913E1 +1.977917000E3,5.531180501E1 +1.978189000E3,5.815410032E1 +1.978463000E3,5.735965971E1 +1.978732000E3,5.593071322E1 +1.978999000E3,5.835041964E1 +1.979245000E3,5.646810288E1 +1.979493000E3,5.392299875E1 +1.979902000E3,5.430590311E1 +1.980142000E3,5.447583546E1 +1.980384000E3,5.260389735E1 +1.980632000E3,5.537561423E1 +1.980873000E3,5.836960119E1 +1.981120000E3,5.425821286E1 +1.981389000E3,5.153336720E1 +1.981618000E3,5.420085973E1 +1.981915000E3,5.457985954E1 +1.982165000E3,5.637026749E1 +1.982404000E3,6.009656118E1 +1.982718000E3,5.903298531E1 +1.983029000E3,5.665152425E1 +1.983296000E3,5.778918758E1 +1.983538000E3,5.444374512E1 +1.983786000E3,5.619088618E1 +1.984047000E3,6.088482249E1 +1.984304000E3,5.678390940E1 +1.984575000E3,5.873820942E1 +1.984842000E3,6.004736340E1 +1.985142000E3,6.191465398E1 +1.985405000E3,6.154032648E1 +1.985653000E3,5.967034113E1 +1.985913000E3,5.855925349E1 +1.986211000E3,5.529356341E1 +1.986557000E3,5.823190054E1 +1.986847000E3,5.749679599E1 +1.987098000E3,5.855123449E1 +1.987369000E3,5.999203293E1 +1.987610000E3,6.139424716E1 +1.987876000E3,5.730078222E1 +1.988126000E3,5.649537684E1 +1.988425000E3,5.872458305E1 +1.988727000E3,5.704322852E1 +1.989024000E3,6.264447151E1 +1.989326000E3,5.763604303E1 +1.989641000E3,5.657919006E1 +1.989961000E3,5.706004491E1 +1.990255000E3,6.115159729E1 +1.990571000E3,5.721964371E1 +1.990829000E3,5.780420781E1 +1.991088000E3,5.782228640E1 +1.991353000E3,5.791642518E1 +1.991611000E3,5.820065680E1 +1.991935000E3,5.675756460E1 +1.992174000E3,5.720433643E1 +1.992482000E3,5.907701380E1 +1.992770000E3,5.791335620E1 +1.993107000E3,5.504589678E1 +1.993369000E3,6.117578252E1 +1.993619000E3,5.902046786E1 +1.993912000E3,6.024153080E1 +1.994216000E3,6.061721402E1 +1.994464000E3,6.185610038E1 +1.994715000E3,5.902440055E1 +1.995005000E3,6.112374185E1 +1.995249000E3,5.664710018E1 +1.995551000E3,5.841351492E1 +1.995787000E3,5.961393992E1 +1.996119000E3,5.614463215E1 +1.996387000E3,5.528223904E1 +1.996647000E3,5.706960328E1 +1.996947000E3,5.544195306E1 +1.997203000E3,5.747091679E1 +1.997452000E3,5.434233120E1 +1.997769000E3,5.794847441E1 +1.998019000E3,5.504963001E1 +1.998267000E3,5.470768853E1 +1.998498000E3,6.426300701E1 +1.998789000E3,6.070245213E1 +1.999090000E3,5.893271279E1 +1.999390000E3,5.873668669E1 +1.999698000E3,6.355663744E1 +1.999962000E3,6.500393379E1 +2.000214000E3,6.177640112E1 +2.000471000E3,6.122167361E1 +2.000775000E3,5.982616779E1 +2.001079000E3,5.944943300E1 +2.001339000E3,5.772707313E1 +2.001595000E3,5.934980117E1 +2.001862000E3,6.221301291E1 +2.002160000E3,6.098009785E1 +2.002491000E3,6.205877653E1 +2.002758000E3,5.978743388E1 +2.003062000E3,6.141065367E1 +2.003307000E3,6.146860620E1 +2.003555000E3,6.323368939E1 +2.003884000E3,6.072009355E1 +2.004185000E3,6.072017978E1 +2.004424000E3,6.079512782E1 +2.004673000E3,6.651000141E1 +2.004939000E3,6.185812181E1 +2.005202000E3,5.705353418E1 +2.005472000E3,5.820400818E1 +2.005800000E3,5.682542431E1 +2.006070000E3,6.224932691E1 +2.006350000E3,5.654791681E1 +2.006601000E3,6.160831985E1 +2.006857000E3,6.443497299E1 +2.007101000E3,6.091208862E1 +2.007395000E3,5.867323811E1 +2.007635000E3,5.850229824E1 +2.007945000E3,6.307832054E1 +2.008197000E3,5.931313312E1 +2.008453000E3,5.632990721E1 +2.008711000E3,5.662998085E1 +2.009032000E3,5.416655753E1 +2.009268000E3,6.273936844E1 +2.009521000E3,6.129068926E1 +2.009786000E3,6.485712301E1 +2.010037000E3,6.605690213E1 +2.010298000E3,6.243431425E1 +2.010541000E3,6.062714733E1 +2.010780000E3,6.369220544E1 +2.011082000E3,5.933701247E1 +2.011330000E3,6.141658123E1 +2.011605000E3,6.232326760E1 +2.011893000E3,5.983132844E1 +2.012226000E3,6.085684837E1 +2.012489000E3,5.844434641E1 +2.012752000E3,5.992485437E1 +2.013005000E3,5.745164278E1 +2.013272000E3,5.489362140E1 +2.013573000E3,5.734004331E1 +2.013861000E3,5.569303233E1 +2.014170000E3,5.619919203E1 +2.014467000E3,5.719248521E1 +2.014715000E3,5.898607642E1 +2.015015000E3,5.312334941E1 +2.015258000E3,4.707687024E1 +2.015594000E3,5.326213693E1 +2.015822000E3,4.977107581E1 +2.016071000E3,5.399380901E1 +2.016333000E3,5.528915982E1 +2.016634000E3,5.648344312E1 +2.016879000E3,5.853194276E1 +2.017143000E3,5.969968429E1 +2.017429000E3,6.121498547E1 +2.017723000E3,5.933414775E1 +2.017961000E3,6.375558171E1 +2.018248000E3,6.102538403E1 +2.018558000E3,6.066629858E1 +2.018830000E3,5.238394429E1 +2.019065000E3,5.528030903E1 +2.019316000E3,5.711235169E1 +2.019578000E3,6.069913503E1 +2.019847000E3,5.344730110E1 +2.020093000E3,5.593398360E1 +2.020413000E3,5.112453486E1 +2.020668000E3,5.529600172E1 +2.020922000E3,5.816841553E1 +2.021177000E3,6.105447683E1 +2.021449000E3,5.967528890E1 +2.021707000E3,5.677568689E1 +2.022115000E3,5.613246875E1 +2.022403000E3,5.846674311E1 +2.022679000E3,5.999468936E1 +2.022930000E3,6.268951545E1 +2.023232000E3,6.037378186E1 +2.023532000E3,6.123290650E1 +2.023784000E3,6.425880775E1 +2.024094000E3,6.043334594E1 +2.024356000E3,6.287321918E1 +2.024616000E3,6.178703582E1 +2.024868000E3,5.974424575E1 +2.025152000E3,5.863905018E1 +2.025429000E3,5.669082005E1 +2.025716000E3,6.192616195E1 +2.026008000E3,6.367561928E1 +2.026300000E3,6.061621393E1 +2.026543000E3,6.411900249E1 +2.026802000E3,6.060951858E1 +2.027066000E3,5.606119041E1 +2.027395000E3,5.099901519E1 +2.027693000E3,5.622472082E1 +2.027945000E3,5.354940616E1 +2.028237000E3,6.282566888E1 +2.028553000E3,5.775523802E1 +2.028868000E3,6.095006183E1 +2.029133000E3,6.333727439E1 +2.029399000E3,5.925545982E1 +2.029660000E3,6.045827699E1 +2.029962000E3,5.594587825E1 +2.030223000E3,5.708579081E1 +2.030478000E3,5.777704597E1 +2.030737000E3,5.406349508E1 +2.030990000E3,5.544037764E1 +2.031246000E3,5.912518025E1 +2.031508000E3,5.924806900E1 +2.031864000E3,6.105667153E1 +2.032110000E3,5.838466956E1 +2.032350000E3,5.923100201E1 +2.032598000E3,6.024290558E1 +2.032866000E3,5.971089342E1 +2.033112000E3,5.478665804E1 +2.033351000E3,5.966531235E1 +2.033644000E3,5.755565544E1 +2.033892000E3,5.982004182E1 +2.034190000E3,5.797424789E1 +2.034425000E3,5.856301863E1 +2.034717000E3,6.325478319E1 +2.035053000E3,6.168254294E1 +2.035364000E3,6.188857455E1 +2.035619000E3,6.156039581E1 +2.035901000E3,6.235770270E1 +2.036169000E3,6.262779828E1 +2.036471000E3,6.142542176E1 +2.036764000E3,5.923845966E1 +2.037022000E3,5.827266837E1 +2.037307000E3,6.314641141E1 +2.037615000E3,5.460230698E1 +2.037870000E3,5.396400232E1 +2.038120000E3,5.561122002E1 +2.038463000E3,5.928400391E1 +2.038767000E3,5.668934966E1 +2.039069000E3,5.831653467E1 +2.039316000E3,5.267103167E1 +2.039622000E3,5.557794232E1 +2.039859000E3,5.543606804E1 +2.040196000E3,5.836770370E1 +2.040499000E3,5.678092478E1 +2.040751000E3,5.612506795E1 +2.041024000E3,5.868430679E1 +2.041274000E3,5.264121586E1 +2.041581000E3,5.828774790E1 +2.041841000E3,5.647338053E1 +2.042088000E3,6.053709731E1 +2.042403000E3,5.614689861E1 +2.042691000E3,5.714845923E1 +2.042944000E3,5.256418368E1 +2.043191000E3,5.601486494E1 +2.043466000E3,5.810869150E1 +2.043715000E3,5.529893852E1 +2.043979000E3,5.708153712E1 +2.044245000E3,5.690179830E1 +2.044568000E3,5.994555064E1 +2.044825000E3,6.172126409E1 +2.045096000E3,6.015473895E1 +2.045377000E3,5.509344178E1 +2.045629000E3,5.568915719E1 +2.045902000E3,5.938619751E1 +2.046155000E3,5.534852098E1 +2.046409000E3,5.905391706E1 +2.046693000E3,5.250115201E1 +2.046947000E3,5.587771233E1 +2.047277000E3,5.599930929E1 +2.047517000E3,5.586822515E1 +2.047803000E3,5.740436533E1 +2.048105000E3,5.413600866E1 +2.048476000E3,5.595836709E1 +2.048737000E3,5.982743631E1 +2.048992000E3,6.001131240E1 +2.049305000E3,5.629713962E1 +2.049568000E3,5.505265617E1 +2.049904000E3,5.686004167E1 +2.050199000E3,6.078932545E1 +2.050470000E3,5.919030857E1 +2.050773000E3,5.640754436E1 +2.051052000E3,5.864124078E1 +2.051311000E3,5.683150656E1 +2.051642000E3,5.391893615E1 +2.051926000E3,4.513639699E1 +2.052174000E3,5.750824000E1 +2.052467000E3,5.945309138E1 +2.052703000E3,6.260915402E1 +2.052981000E3,6.017408744E1 +2.053276000E3,6.158293130E1 +2.053516000E3,6.279041899E1 +2.053759000E3,6.005362243E1 +2.054030000E3,5.776050932E1 +2.054357000E3,5.906607942E1 +2.054642000E3,6.002924771E1 +2.054978000E3,5.708591672E1 +2.055267000E3,5.932996992E1 +2.055552000E3,5.830703641E1 +2.055812000E3,5.428102985E1 +2.056063000E3,5.893384546E1 +2.056382000E3,6.028305726E1 +2.056682000E3,5.904357096E1 +2.056923000E3,6.015407432E1 +2.057171000E3,5.801677968E1 +2.057418000E3,6.561794532E1 +2.057665000E3,6.751214025E1 +2.057959000E3,5.899748641E1 +2.058279000E3,5.616162884E1 +2.058571000E3,5.813941707E1 +2.058834000E3,6.236684118E1 +2.059132000E3,6.058455193E1 +2.059376000E3,6.004963560E1 +2.059687000E3,6.255152045E1 +2.059984000E3,6.155697025E1 +2.060225000E3,6.124056229E1 +2.060517000E3,6.072549607E1 +2.060756000E3,6.119225814E1 +2.061060000E3,5.953618039E1 +2.061302000E3,5.869582322E1 +2.061578000E3,6.248269042E1 +2.061841000E3,6.070173510E1 +2.062089000E3,6.023992255E1 +2.062337000E3,5.848175462E1 +2.062607000E3,5.092907116E1 +2.062859000E3,5.442118268E1 +2.063124000E3,5.298599309E1 +2.063425000E3,6.030333428E1 +2.063671000E3,5.835700379E1 +2.063954000E3,5.943633389E1 +2.064268000E3,5.761479859E1 +2.064577000E3,5.520238299E1 +2.064822000E3,5.901822557E1 +2.065074000E3,5.705952734E1 +2.065339000E3,6.136116330E1 +2.065603000E3,5.746483296E1 +2.065865000E3,5.867757380E1 +2.066141000E3,5.709322981E1 +2.066441000E3,5.775131141E1 +2.066691000E3,5.886237327E1 +2.067036000E3,5.617972984E1 +2.067288000E3,5.802507148E1 +2.067560000E3,6.044497816E1 +2.067891000E3,5.450044868E1 +2.068148000E3,5.616761260E1 +2.068412000E3,6.243097888E1 +2.068673000E3,5.783788439E1 +2.068946000E3,5.764761585E1 +2.069196000E3,5.683737954E1 +2.069468000E3,5.609890848E1 +2.069778000E3,5.465619904E1 +2.070034000E3,5.368960846E1 +2.070328000E3,6.032893819E1 +2.070574000E3,5.862927742E1 +2.070842000E3,5.635830209E1 +2.071101000E3,5.822198053E1 +2.071339000E3,5.691346983E1 +2.071597000E3,5.865778618E1 +2.071860000E3,5.810560725E1 +2.072128000E3,5.968009174E1 +2.072425000E3,5.833852533E1 +2.072667000E3,5.784540163E1 +2.072934000E3,5.644439458E1 +2.073184000E3,5.178260396E1 +2.073488000E3,5.751445421E1 +2.073769000E3,5.974800721E1 +2.074068000E3,6.534291023E1 +2.074348000E3,6.371076652E1 +2.074624000E3,6.156132937E1 +2.074877000E3,6.012113548E1 +2.075119000E3,6.026351151E1 +2.075377000E3,6.142675581E1 +2.075661000E3,6.194478144E1 +2.075914000E3,6.183865569E1 +2.076267000E3,6.387512541E1 +2.076547000E3,6.077311287E1 +2.076803000E3,6.130963963E1 +2.077056000E3,5.862622582E1 +2.077295000E3,5.463497219E1 +2.077610000E3,5.484231095E1 +2.077891000E3,6.099801434E1 +2.078171000E3,5.475621164E1 +2.078466000E3,5.955577801E1 +2.078709000E3,5.720097088E1 +2.078954000E3,5.661944912E1 +2.079224000E3,5.443336360E1 +2.079503000E3,5.917559782E1 +2.079800000E3,5.424380486E1 +2.080057000E3,6.013762169E1 +2.080307000E3,6.100643768E1 +2.080558000E3,6.205128007E1 +2.080810000E3,6.007904071E1 +2.081092000E3,6.423414837E1 +2.081354000E3,5.938817614E1 +2.081601000E3,6.006860062E1 +2.081845000E3,5.833570272E1 +2.082143000E3,5.962915676E1 +2.082396000E3,5.844615966E1 +2.082663000E3,5.932060291E1 +2.082921000E3,6.037844323E1 +2.083227000E3,5.719168160E1 +2.083487000E3,5.597578938E1 +2.083743000E3,5.236775830E1 +2.084062000E3,5.471900653E1 +2.084318000E3,5.178371688E1 +2.084618000E3,5.707729304E1 +2.084858000E3,5.526812689E1 +2.085154000E3,5.716405930E1 +2.085391000E3,5.478798233E1 +2.085687000E3,5.496315929E1 +2.085932000E3,5.701239101E1 +2.086228000E3,5.776438308E1 +2.086467000E3,5.628202894E1 +2.086760000E3,5.042244376E1 +2.087015000E3,5.775963511E1 +2.087362000E3,4.982890988E1 +2.087671000E3,4.785672217E1 +2.087922000E3,4.762697394E1 +2.088178000E3,5.046726223E1 +2.088438000E3,4.890262424E1 +2.088711000E3,5.501277631E1 +2.088981000E3,5.666001705E1 +2.089249000E3,6.014252161E1 +2.089513000E3,5.925311989E1 +2.089806000E3,6.173820636E1 +2.090063000E3,5.350884215E1 +2.090366000E3,5.736408779E1 +2.090744000E3,5.450936109E1 +2.091005000E3,5.763377323E1 +2.091253000E3,6.042269191E1 +2.091515000E3,5.484903903E1 +2.091757000E3,5.882101591E1 +2.092028000E3,5.833139845E1 +2.092280000E3,5.703430671E1 +2.092527000E3,5.247783814E1 +2.092809000E3,5.233323676E1 +2.093037000E3,5.202869643E1 +2.093354000E3,5.628845797E1 +2.093634000E3,5.325396544E1 +2.094006000E3,5.654992892E1 +2.094280000E3,5.713253789E1 +2.094541000E3,5.967664240E1 +2.094800000E3,5.750232678E1 +2.095069000E3,5.544480371E1 +2.095333000E3,5.462176641E1 +2.095596000E3,5.811248949E1 +2.095853000E3,6.196847972E1 +2.096192000E3,5.842850461E1 +2.096488000E3,5.597774452E1 +2.096726000E3,5.601282925E1 +2.097104000E3,5.625832805E1 +2.097364000E3,5.315488909E1 +2.097602000E3,5.287250653E1 +2.097844000E3,5.523708836E1 +2.098081000E3,5.724292600E1 +2.098340000E3,5.659511238E1 +2.098670000E3,5.675324149E1 +2.098945000E3,5.485884276E1 +2.099219000E3,5.694143956E1 +2.099469000E3,5.561655413E1 +2.099765000E3,5.844909410E1 +2.100011000E3,6.135621316E1 +2.100343000E3,5.968766012E1 +2.100584000E3,5.173347950E1 +2.100832000E3,5.415548255E1 +2.101090000E3,5.271968845E1 +2.101339000E3,5.007174890E1 +2.101624000E3,5.279525002E1 +2.101895000E3,5.358558767E1 +2.102197000E3,5.559048142E1 +2.102438000E3,5.476305303E1 +2.102705000E3,5.237114911E1 +2.102947000E3,5.014972007E1 +2.103218000E3,4.895902935E1 +2.103469000E3,5.192053997E1 +2.103853000E3,4.647138436E1 +2.104101000E3,4.837766327E1 +2.104448000E3,5.088929287E1 +2.104740000E3,5.561591777E1 +2.104997000E3,5.440319534E1 +2.105260000E3,5.347164399E1 +2.105561000E3,5.151610441E1 +2.105813000E3,5.075382634E1 +2.106121000E3,5.244425755E1 +2.106357000E3,5.269617654E1 +2.106663000E3,5.149027406E1 +2.106954000E3,5.659456733E1 +2.107266000E3,5.282561460E1 +2.107606000E3,5.407918273E1 +2.107883000E3,5.643922092E1 +2.108164000E3,5.169657105E1 +2.108480000E3,5.713744586E1 +2.108748000E3,5.931186178E1 +2.109003000E3,5.645689600E1 +2.109252000E3,5.322874786E1 +2.109552000E3,5.363731782E1 +2.109821000E3,5.353815648E1 +2.110077000E3,5.445551750E1 +2.110418000E3,5.491110228E1 +2.110669000E3,5.291647814E1 +2.110921000E3,5.202914132E1 +2.111180000E3,5.363241827E1 +2.111479000E3,5.566624291E1 +2.111721000E3,5.645238247E1 +2.112027000E3,5.458458697E1 +2.112294000E3,5.469783372E1 +2.112597000E3,5.582449562E1 +2.112854000E3,5.595416398E1 +2.113105000E3,5.113785865E1 +2.113352000E3,6.248282803E1 +2.113711000E3,5.880495226E1 +2.113968000E3,5.941805617E1 +2.114248000E3,5.561632009E1 +2.114507000E3,5.501810850E1 +2.114754000E3,5.936291007E1 +2.115053000E3,6.127733734E1 +2.115321000E3,6.057491273E1 +2.115616000E3,6.127323198E1 +2.115893000E3,5.760488174E1 +2.116193000E3,6.030881831E1 +2.116434000E3,5.967518116E1 +2.116722000E3,5.720938908E1 +2.117066000E3,5.605932878E1 +2.117338000E3,6.068190844E1 +2.117598000E3,5.400374866E1 +2.117892000E3,5.332007667E1 +2.118133000E3,4.991979059E1 +2.118428000E3,5.700198654E1 +2.118666000E3,5.878418983E1 +2.118922000E3,5.703766890E1 +2.119230000E3,5.731012811E1 +2.119515000E3,5.865622099E1 +2.119741000E3,5.772295719E1 +2.120015000E3,5.851982083E1 +2.120322000E3,5.958645129E1 +2.120616000E3,6.233814130E1 +2.120861000E3,6.002711287E1 +2.121162000E3,5.939190004E1 +2.121437000E3,5.758195225E1 +2.121690000E3,5.564648712E1 +2.121946000E3,5.336629511E1 +2.122218000E3,5.199121426E1 +2.122476000E3,5.906368298E1 +2.122759000E3,5.917930836E1 +2.123014000E3,5.824882047E1 +2.123266000E3,5.770359270E1 +2.123492000E3,5.695638802E1 +2.123777000E3,5.720151485E1 +2.124027000E3,6.045411810E1 +2.124327000E3,5.540258870E1 +2.124575000E3,5.828000252E1 +2.124835000E3,5.500577731E1 +2.125106000E3,5.926473821E1 +2.125354000E3,5.472888078E1 +2.125611000E3,5.530970077E1 +2.125862000E3,5.595037084E1 +2.126117000E3,5.439239133E1 +2.126432000E3,5.961943996E1 +2.126692000E3,5.841091801E1 +2.126944000E3,5.863137443E1 +2.127282000E3,5.731398304E1 +2.127577000E3,5.665374527E1 +2.127843000E3,5.476493539E1 +2.128129000E3,5.580929465E1 +2.128437000E3,5.565551021E1 +2.128739000E3,5.869101147E1 +2.129026000E3,5.827114612E1 +2.129307000E3,5.507536074E1 +2.129577000E3,5.532393691E1 +2.129934000E3,5.233850306E1 +2.130215000E3,5.514372423E1 +2.130466000E3,5.757947445E1 +2.130714000E3,6.126034226E1 +2.131015000E3,6.074916673E1 +2.131279000E3,5.864911171E1 +2.131564000E3,5.680524431E1 +2.131825000E3,6.002252741E1 +2.132078000E3,5.953076168E1 +2.132390000E3,6.027427680E1 +2.132647000E3,5.955779136E1 +2.132902000E3,5.835756058E1 +2.133223000E3,6.286787860E1 +2.133471000E3,6.057291506E1 +2.133724000E3,5.893793659E1 +2.134002000E3,5.508555746E1 +2.134257000E3,5.619881839E1 +2.134512000E3,5.505764062E1 +2.134784000E3,5.808922162E1 +2.135054000E3,5.334583096E1 +2.135313000E3,5.298019930E1 +2.135595000E3,5.025342296E1 +2.135812000E3,5.409382682E1 +2.136057000E3,5.580950424E1 +2.136332000E3,5.523743716E1 +2.136661000E3,5.499005541E1 +2.136917000E3,5.745623005E1 +2.137196000E3,5.149169849E1 +2.137449000E3,5.261206885E1 +2.137711000E3,5.487518376E1 +2.138022000E3,5.898871991E1 +2.138270000E3,5.852026830E1 +2.138564000E3,5.868858262E1 +2.138802000E3,5.736353209E1 +2.139066000E3,5.529465652E1 +2.139332000E3,5.762578865E1 +2.139672000E3,5.790185487E1 +2.139930000E3,5.792373283E1 +2.140278000E3,5.597904656E1 +2.140535000E3,5.355980456E1 +2.140856000E3,5.411887429E1 +2.141146000E3,5.094976839E1 +2.141467000E3,5.658279242E1 +2.141735000E3,6.043792292E1 +2.142041000E3,5.996632022E1 +2.142276000E3,6.230155616E1 +2.142526000E3,6.102528468E1 +2.142783000E3,5.770338577E1 +2.143124000E3,5.827243883E1 +2.143406000E3,5.367650147E1 +2.143645000E3,5.777094487E1 +2.143915000E3,5.851595499E1 +2.144175000E3,5.573729509E1 +2.144454000E3,5.467626304E1 +2.144700000E3,5.699765591E1 +2.144968000E3,5.692170932E1 +2.145246000E3,6.030210344E1 +2.145550000E3,5.876913066E1 +2.145797000E3,5.698149837E1 +2.146042000E3,5.982717784E1 +2.146368000E3,5.905293636E1 +2.146676000E3,5.947032966E1 +2.146922000E3,5.910471730E1 +2.147225000E3,6.065874797E1 +2.147524000E3,5.680135408E1 +2.147831000E3,5.451199701E1 +2.148090000E3,5.301325775E1 +2.148365000E3,5.466040661E1 +2.148665000E3,5.658013689E1 +2.148952000E3,5.410667827E1 +2.149249000E3,5.788683658E1 +2.149597000E3,5.873903650E1 +2.149910000E3,5.314379433E1 +2.150150000E3,5.564952940E1 +2.150451000E3,6.000220607E1 +2.150691000E3,6.235870620E1 +2.150965000E3,6.387461990E1 +2.151194000E3,6.491001134E1 +2.151449000E3,5.932544814E1 +2.151756000E3,6.117684525E1 +2.152011000E3,6.059885605E1 +2.152282000E3,6.303246617E1 +2.152596000E3,6.399854390E1 +2.152961000E3,6.063746268E1 +2.153223000E3,6.122116723E1 +2.153495000E3,5.809397592E1 +2.153749000E3,5.903784259E1 +2.153999000E3,6.047826717E1 +2.154283000E3,5.846467986E1 +2.154537000E3,6.226879102E1 +2.154785000E3,5.980611807E1 +2.155079000E3,5.787450321E1 +2.155375000E3,5.676059962E1 +2.155616000E3,5.395823696E1 +2.155912000E3,5.953639288E1 +2.156221000E3,5.971614724E1 +2.156510000E3,6.039969801E1 +2.156758000E3,5.898776738E1 +2.157015000E3,6.100474003E1 +2.157289000E3,5.750129682E1 +2.157591000E3,5.995540643E1 +2.157844000E3,5.628303244E1 +2.158104000E3,5.892686601E1 +2.158366000E3,5.712884748E1 +2.158667000E3,5.727860760E1 +2.158932000E3,5.313556696E1 +2.159288000E3,5.635583768E1 +2.159555000E3,5.929473664E1 +2.159809000E3,5.396180560E1 +2.160112000E3,5.807023999E1 +2.160354000E3,5.639240346E1 +2.160608000E3,5.917728814E1 +2.160855000E3,5.429000157E1 +2.161130000E3,5.397827395E1 +2.161395000E3,5.647751800E1 +2.161656000E3,5.342605760E1 +2.162007000E3,5.324373839E1 +2.162263000E3,5.439383591E1 +2.162517000E3,5.727066505E1 +2.162888000E3,5.995593964E1 +2.163140000E3,6.130649482E1 +2.163392000E3,6.228130821E1 +2.163644000E3,6.279179388E1 +2.163938000E3,5.559527300E1 +2.164178000E3,5.200550071E1 +2.164481000E3,5.797363767E1 +2.164757000E3,5.902554678E1 +2.165040000E3,5.834647622E1 +2.165303000E3,5.713285380E1 +2.165575000E3,6.343633700E1 +2.165850000E3,5.896208706E1 +2.166219000E3,5.624501583E1 +2.166483000E3,5.696603075E1 +2.166769000E3,5.736978604E1 +2.167027000E3,5.837475894E1 +2.167278000E3,5.768129207E1 +2.167593000E3,5.660761865E1 +2.167856000E3,5.680076310E1 +2.168110000E3,5.883044450E1 +2.168385000E3,5.772028600E1 +2.168649000E3,5.342008664E1 +2.168914000E3,5.359113324E1 +2.169168000E3,5.849769703E1 +2.169536000E3,6.267181821E1 +2.169793000E3,5.719603223E1 +2.170040000E3,5.397233107E1 +2.170287000E3,4.861027503E1 +2.170579000E3,5.741564583E1 +2.170822000E3,6.207812430E1 +2.171115000E3,5.827753689E1 +2.171365000E3,6.042202215E1 +2.171629000E3,5.516417228E1 +2.171895000E3,4.912315476E1 +2.172163000E3,4.718316305E1 +2.172446000E3,5.363129541E1 +2.172813000E3,5.322378335E1 +2.173087000E3,5.228499961E1 +2.173349000E3,5.364722432E1 +2.173618000E3,5.964999675E1 +2.173917000E3,6.116591719E1 +2.174174000E3,5.668310324E1 +2.174436000E3,5.538937699E1 +2.174688000E3,5.539330891E1 +2.174944000E3,5.678019084E1 +2.175197000E3,5.655985061E1 +2.175490000E3,6.211643319E1 +2.175751000E3,5.899842059E1 +2.176153000E3,6.042080027E1 +2.176454000E3,5.956376587E1 +2.176730000E3,5.896716838E1 +2.177048000E3,5.729778676E1 +2.177305000E3,5.512323216E1 +2.177616000E3,5.573124529E1 +2.177883000E3,5.390669828E1 +2.178139000E3,5.435017850E1 +2.178403000E3,5.275779180E1 +2.178672000E3,5.469054235E1 +2.178938000E3,5.701832565E1 +2.179201000E3,6.063134316E1 +2.179540000E3,6.461030243E1 +2.179799000E3,6.345934666E1 +2.180043000E3,6.255021373E1 +2.180348000E3,6.265836689E1 +2.180640000E3,6.125083403E1 +2.180878000E3,5.721943432E1 +2.181125000E3,5.584429631E1 +2.181407000E3,5.679219567E1 +2.181647000E3,5.506189996E1 +2.181962000E3,5.950753578E1 +2.182227000E3,5.684863204E1 +2.182499000E3,5.318048388E1 +2.182825000E3,5.856807028E1 +2.183124000E3,6.201159961E1 +2.183360000E3,5.994279105E1 +2.183661000E3,6.155626338E1 +2.183904000E3,5.760612799E1 +2.184197000E3,5.557219911E1 +2.184436000E3,5.720299401E1 +2.184730000E3,5.496492062E1 +2.184965000E3,5.287669523E1 +2.185272000E3,5.534018340E1 +2.185572000E3,5.047897567E1 +2.185897000E3,5.289532450E1 +2.186149000E3,5.169587435E1 +2.186428000E3,5.811856565E1 +2.186722000E3,5.829930976E1 +2.187016000E3,5.767171180E1 +2.187297000E3,5.167293983E1 +2.187542000E3,5.634712904E1 +2.187793000E3,5.452173951E1 +2.188038000E3,5.242356157E1 +2.188332000E3,5.476946331E1 +2.188570000E3,5.506415879E1 +2.188807000E3,5.842757277E1 +2.189123000E3,5.579731569E1 +2.189400000E3,5.735467547E1 +2.189707000E3,5.510643622E1 +2.189947000E3,5.399605596E1 +2.190247000E3,5.231812124E1 +2.190482000E3,5.397423501E1 +2.190722000E3,5.467291530E1 +2.190972000E3,5.750340972E1 +2.191219000E3,5.451621797E1 +2.191527000E3,5.544744059E1 +2.191775000E3,5.570906247E1 +2.192040000E3,5.570238792E1 +2.192395000E3,5.704729905E1 +2.192674000E3,5.662202644E1 +2.192969000E3,6.130245708E1 +2.193206000E3,5.842239411E1 +2.193505000E3,5.813812757E1 +2.193745000E3,5.643123308E1 +2.194038000E3,5.810403241E1 +2.194275000E3,5.863690353E1 +2.194574000E3,5.519980518E1 +2.194810000E3,5.381530940E1 +2.195092000E3,5.781601666E1 +2.195335000E3,5.699265058E1 +2.195608000E3,5.477338243E1 +2.195929000E3,5.695412826E1 +2.196188000E3,5.575935497E1 +2.196439000E3,5.738570553E1 +2.196686000E3,6.194168224E1 +2.196969000E3,5.888525061E1 +2.197270000E3,5.830791470E1 +2.197516000E3,5.904778886E1 +2.197822000E3,5.987539712E1 +2.198117000E3,5.910637217E1 +2.198355000E3,5.676446576E1 +2.198673000E3,5.632729175E1 +2.198920000E3,5.826507178E1 +2.199227000E3,6.221847088E1 +2.199493000E3,6.023584539E1 +2.199739000E3,6.378124478E1 +2.199975000E3,6.457706819E1 +2.200218000E3,5.781084826E1 +2.200471000E3,5.833307765E1 +2.200715000E3,5.849295856E1 +2.200984000E3,5.695016071E1 +2.201255000E3,5.945608920E1 +2.201511000E3,5.923858391E1 +2.201821000E3,5.975381188E1 +2.202050000E3,5.657071344E1 +2.202297000E3,5.582353283E1 +2.202552000E3,5.634201272E1 +2.202803000E3,5.842061156E1 +2.203080000E3,5.511323996E1 +2.203339000E3,5.333816234E1 +2.203589000E3,5.586132206E1 +2.203867000E3,5.612282959E1 +2.204151000E3,5.390907932E1 +2.204405000E3,5.581501331E1 +2.204648000E3,5.691201261E1 +2.204938000E3,5.605209961E1 +2.205271000E3,5.337227455E1 +2.205520000E3,5.726868677E1 +2.205824000E3,5.678400386E1 +2.206068000E3,5.598615724E1 +2.206327000E3,6.245548090E1 +2.206634000E3,5.788335624E1 +2.206927000E3,5.672312442E1 +2.207166000E3,5.700846075E1 +2.207464000E3,5.693157148E1 +2.207703000E3,5.667671942E1 +2.207995000E3,5.655907845E1 +2.208344000E3,5.694003799E1 +2.208592000E3,5.812693102E1 +2.208844000E3,5.305590014E1 +2.209133000E3,5.963333488E1 +2.209376000E3,6.125764761E1 +2.209621000E3,5.708540532E1 +2.209865000E3,5.539532482E1 +2.210177000E3,6.086117928E1 +2.210432000E3,5.871599576E1 +2.210705000E3,5.720891289E1 +2.210929000E3,5.859137268E1 +2.211185000E3,5.492761595E1 +2.211566000E3,5.458369125E1 +2.211811000E3,5.704243717E1 +2.212094000E3,5.948204172E1 +2.212325000E3,5.442994388E1 +2.212570000E3,5.607391365E1 +2.212815000E3,5.349643391E1 +2.213089000E3,5.518134225E1 +2.213397000E3,5.879499176E1 +2.213659000E3,5.918920409E1 +2.213917000E3,6.317166487E1 +2.214205000E3,5.773325998E1 +2.214505000E3,6.021667659E1 +2.214834000E3,5.707564648E1 +2.215074000E3,5.411436798E1 +2.215412000E3,5.705541238E1 +2.215699000E3,6.721672427E1 +2.215946000E3,6.130402498E1 +2.216241000E3,5.914242022E1 +2.216493000E3,5.881747375E1 +2.216786000E3,5.920115687E1 +2.217030000E3,5.981753209E1 +2.217325000E3,5.379848698E1 +2.217566000E3,5.498057230E1 +2.217931000E3,5.647867672E1 +2.218210000E3,5.460935805E1 +2.218440000E3,5.579228446E1 +2.218740000E3,5.598523495E1 +2.218992000E3,5.501198671E1 +2.219248000E3,5.270876730E1 +2.219495000E3,5.711255338E1 +2.219767000E3,5.276578476E1 +2.220009000E3,6.171644376E1 +2.220307000E3,5.760035427E1 +2.220557000E3,6.039071701E1 +2.220820000E3,5.947563028E1 +2.221166000E3,5.781157464E1 +2.221459000E3,5.689764898E1 +2.221740000E3,5.361204154E1 +2.221998000E3,5.565584232E1 +2.222252000E3,6.236264054E1 +2.222508000E3,5.583706888E1 +2.222794000E3,5.998886151E1 +2.223038000E3,6.067027795E1 +2.223281000E3,5.953550256E1 +2.223512000E3,6.087865846E1 +2.223764000E3,5.880177247E1 +2.224056000E3,5.532032645E1 +2.224389000E3,5.110554887E1 +2.224697000E3,6.082114583E1 +2.224957000E3,6.332269799E1 +2.225225000E3,5.859152014E1 +2.225521000E3,6.312344162E1 +2.225760000E3,6.208500503E1 +2.226003000E3,6.030377984E1 +2.226280000E3,5.890306026E1 +2.226553000E3,6.412257006E1 +2.226813000E3,5.959239884E1 +2.227137000E3,5.603893495E1 +2.227460000E3,5.807576772E1 +2.227717000E3,6.034272760E1 +2.227950000E3,5.678924442E1 +2.228211000E3,5.767938832E1 +2.228489000E3,4.973605337E1 +2.228742000E3,5.227056153E1 +2.229007000E3,4.524576382E1 +2.229320000E3,5.163901012E1 +2.229633000E3,5.791269320E1 +2.229909000E3,5.832692980E1 +2.230223000E3,5.512940778E1 +2.230487000E3,5.639998631E1 +2.230845000E3,6.012111222E1 +2.231113000E3,6.632176219E1 +2.231407000E3,6.692769565E1 +2.231662000E3,6.409372191E1 +2.231945000E3,6.268702605E1 +2.232208000E3,6.192012265E1 +2.232460000E3,5.923306273E1 +2.232717000E3,5.726340446E1 +2.233005000E3,5.708270925E1 +2.233256000E3,6.172203942E1 +2.233510000E3,6.197059155E1 +2.233807000E3,6.691458644E1 +2.234160000E3,6.165007134E1 +2.234422000E3,6.172053486E1 +2.234714000E3,6.148833899E1 +2.234974000E3,6.190331921E1 +2.235253000E3,5.938090919E1 +2.235479000E3,6.223060920E1 +2.235722000E3,6.133640397E1 +2.236028000E3,6.400294095E1 +2.236269000E3,6.581462957E1 +2.236516000E3,6.094953675E1 +2.236828000E3,5.792232456E1 +2.237124000E3,5.750665846E1 +2.237367000E3,5.360734442E1 +2.237668000E3,5.239836763E1 +2.237914000E3,5.189659577E1 +2.238168000E3,5.779541581E1 +2.238431000E3,5.409030702E1 +2.238689000E3,5.064192938E1 +2.238941000E3,4.890244292E1 +2.239235000E3,4.958738332E1 +2.239486000E3,5.093509792E1 +2.239725000E3,5.421091975E1 +2.239970000E3,6.074883769E1 +2.240298000E3,5.611992467E1 +2.240604000E3,4.988071111E1 +2.240900000E3,4.952063126E1 +2.241187000E3,5.282005772E1 +2.241428000E3,5.672648648E1 +2.241685000E3,5.807464117E1 +2.241973000E3,5.565097745E1 +2.242224000E3,5.410363002E1 +2.242475000E3,5.548804216E1 +2.242720000E3,5.862108370E1 +2.242959000E3,5.101243713E1 +2.243259000E3,5.340920814E1 +2.243564000E3,5.471013043E1 +2.243801000E3,5.474536753E1 +2.244062000E3,5.454012147E1 +2.244333000E3,5.594751460E1 +2.244637000E3,5.486159050E1 +2.244913000E3,5.317501502E1 +2.245138000E3,5.100209753E1 +2.245397000E3,5.436827206E1 +2.245643000E3,5.483479867E1 +2.245916000E3,5.150486026E1 +2.246182000E3,5.049924887E1 +2.246449000E3,5.226067252E1 +2.246744000E3,5.389432372E1 +2.247057000E3,6.032791953E1 +2.247330000E3,5.966662928E1 +2.247666000E3,5.824962285E1 +2.247962000E3,5.700720490E1 +2.248202000E3,6.373200887E1 +2.248495000E3,6.648419927E1 +2.248743000E3,5.542652488E1 +2.249036000E3,5.256926371E1 +2.249272000E3,6.053195001E1 +2.249564000E3,4.959074314E1 +2.249800000E3,5.054384460E1 +2.250136000E3,5.008489809E1 +2.250431000E3,5.752384263E1 +2.250666000E3,5.367007636E1 +2.250931000E3,4.851936559E1 +2.251210000E3,4.965482987E1 +2.251497000E3,5.733244198E1 +2.251772000E3,5.370188093E1 +2.251997000E3,5.388650114E1 +2.252246000E3,5.331606518E1 +2.252516000E3,5.534782747E1 +2.252818000E3,5.271944154E1 +2.253047000E3,5.188974945E1 +2.253402000E3,5.040855384E1 +2.253689000E3,5.348452962E1 +2.253965000E3,5.685197701E1 +2.254240000E3,5.699151925E1 +2.254539000E3,5.217481719E1 +2.254794000E3,5.255063115E1 +2.255035000E3,5.258436032E1 +2.255283000E3,5.228429265E1 +2.255592000E3,5.187189315E1 +2.255851000E3,5.089851896E1 +2.256105000E3,5.323192817E1 +2.256387000E3,5.259240607E1 +2.256752000E3,5.489099725E1 +2.257016000E3,5.140699592E1 +2.257276000E3,5.478139635E1 +2.257600000E3,5.508183343E1 +2.257864000E3,5.539199709E1 +2.258160000E3,5.879728075E1 +2.258399000E3,6.145510373E1 +2.258645000E3,6.018082278E1 +2.258890000E3,6.203490998E1 +2.259131000E3,6.051201097E1 +2.259385000E3,5.741582229E1 +2.259629000E3,5.742200481E1 +2.259994000E3,5.205318956E1 +2.260295000E3,5.807019657E1 +2.260539000E3,5.843419178E1 +2.260841000E3,5.543595349E1 +2.261104000E3,5.208978608E1 +2.261348000E3,5.288295424E1 +2.261601000E3,5.593156434E1 +2.261856000E3,5.600009221E1 +2.262108000E3,5.581775464E1 +2.262358000E3,5.037081152E1 +2.262613000E3,5.059162693E1 +2.262916000E3,5.459372597E1 +2.263271000E3,5.581642194E1 +2.263548000E3,5.702582989E1 +2.263802000E3,5.531282217E1 +2.264049000E3,5.356460573E1 +2.264318000E3,5.682743962E1 +2.264564000E3,5.353127135E1 +2.264854000E3,5.962134934E1 +2.265080000E3,5.858968032E1 +2.265326000E3,5.681259568E1 +2.265625000E3,5.635120121E1 +2.265871000E3,5.433379551E1 +2.266211000E3,4.913835205E1 +2.266510000E3,5.243179137E1 +2.266783000E3,4.886918417E1 +2.267043000E3,4.774131335E1 +2.267292000E3,4.892025491E1 +2.267553000E3,4.710213612E1 +2.267796000E3,4.847827931E1 +2.268042000E3,5.624471818E1 +2.268281000E3,5.286977188E1 +2.268548000E3,5.683989489E1 +2.268800000E3,5.459251055E1 +2.269086000E3,5.272841607E1 +2.269389000E3,5.585343514E1 +2.269616000E3,5.452972356E1 +2.269865000E3,5.183250423E1 +2.270167000E3,4.733442261E1 +2.270442000E3,4.736450762E1 +2.270667000E3,4.430645798E1 +2.270915000E3,4.635257501E1 +2.271160000E3,4.914582650E1 +2.271407000E3,4.938157659E1 +2.271656000E3,4.788630853E1 +2.271896000E3,4.778446083E1 +2.272198000E3,5.081637081E1 +2.272482000E3,4.630509256E1 +2.272722000E3,4.551027932E1 +2.273048000E3,5.074623045E1 +2.273321000E3,4.689236254E1 +2.273562000E3,4.960242652E1 +2.273859000E3,5.310274016E1 +2.274104000E3,5.391997859E1 +2.274392000E3,4.854992165E1 +2.274648000E3,4.610161890E1 +2.274915000E3,5.325141064E1 +2.275196000E3,4.823989698E1 +2.275460000E3,5.167706762E1 +2.275772000E3,4.424461998E1 +2.276008000E3,4.957193490E1 +2.276258000E3,4.220429916E1 +2.276545000E3,4.614900045E1 +2.276809000E3,4.247109284E1 +2.277119000E3,5.104311310E1 +2.277385000E3,4.898949856E1 +2.277651000E3,5.033981280E1 +2.277920000E3,4.504255509E1 +2.278210000E3,4.851295637E1 +2.278452000E3,4.975001222E1 +2.278771000E3,5.198599663E1 +2.279101000E3,5.078534391E1 +2.279348000E3,5.056977572E1 +2.279614000E3,4.645427419E1 +2.279894000E3,4.837428182E1 +2.280121000E3,4.672417188E1 +2.280416000E3,4.338010131E1 +2.280671000E3,4.552410696E1 +2.280941000E3,4.107346609E1 +2.281195000E3,4.850760260E1 +2.281477000E3,4.449785068E1 +2.281730000E3,3.834743898E1 +2.282028000E3,3.160451104E1 +2.282275000E3,2.921367430E1 +2.282509000E3,3.929432216E1 +2.282771000E3,3.560833020E1 +2.283021000E3,4.204425230E1 +2.283277000E3,4.897505461E1 +2.283570000E3,4.492050546E1 +2.283802000E3,4.549624302E1 +2.284053000E3,4.703134831E1 +2.284302000E3,4.492779574E1 +2.284580000E3,5.573526523E1 +2.284888000E3,4.583204799E1 +2.285186000E3,3.987632497E1 +2.285426000E3,4.276483306E1 +2.285670000E3,4.196646636E1 +2.285974000E3,4.127295807E1 +2.286241000E3,3.392540836E1 +2.286513000E3,3.045281657E1 +2.286755000E3,3.056149566E1 +2.287058000E3,4.234115907E1 +2.287358000E3,4.148011807E1 +2.287615000E3,4.752316696E1 +2.287890000E3,4.261643768E1 +2.288186000E3,3.531031146E1 +2.288451000E3,3.336926272E1 +2.288830000E3,3.217663691E1 +2.289083000E3,3.280943829E1 +2.289350000E3,4.037024361E1 +2.289606000E3,4.463743016E1 +2.289870000E3,3.926930450E1 +2.290142000E3,3.549021170E1 +2.290376000E3,3.657210104E1 +2.290669000E3,3.609483404E1 +2.290917000E3,3.935001060E1 +2.291190000E3,3.968762383E1 +2.291417000E3,3.622062011E1 +2.291698000E3,5.052972627E1 +2.292019000E3,4.472329620E1 +2.292314000E3,3.528869928E1 +2.292580000E3,3.171318762E1 +2.292867000E3,3.293682859E1 +2.293112000E3,2.980662334E1 +2.293408000E3,3.108877030E1 +2.293645000E3,3.411108767E1 +2.293948000E3,2.929195023E1 +2.294231000E3,2.830259325E1 +2.294484000E3,2.905088910E1 +2.294732000E3,3.046102835E1 +2.295049000E3,2.679058069E1 +2.295347000E3,2.620731663E1 +2.295594000E3,3.509528145E1 +2.295836000E3,2.657946529E1 +2.296130000E3,2.511368258E1 +2.296378000E3,2.555955915E1 +2.296634000E3,2.785949260E1 +2.296875000E3,2.654407944E1 +2.297117000E3,3.658368449E1 +2.297412000E3,3.412054652E1 +2.297648000E3,3.448252102E1 +2.297956000E3,3.528486686E1 +2.298205000E3,3.265291425E1 +2.298494000E3,2.963788314E1 +2.298798000E3,3.350933300E1 +2.299085000E3,3.038301619E1 +2.299338000E3,3.357142506E1 +2.299610000E3,4.744800671E1 +2.299868000E3,3.435626076E1 +2.300142000E3,3.368274389E1 +2.300402000E3,2.881246111E1 +2.300655000E3,3.097762310E1 +2.300898000E3,2.947567056E1 +2.301182000E3,3.214187359E1 +2.301423000E3,3.421070745E1 +2.301786000E3,5.117970534E1 +2.302087000E3,5.037784077E1 +2.302335000E3,5.283937176E1 +2.302644000E3,5.164119106E1 +2.302941000E3,5.300709748E1 +2.303240000E3,4.713488810E1 +2.303488000E3,4.524114677E1 +2.303739000E3,3.080285972E1 +2.304022000E3,2.293405577E1 +2.304254000E3,2.235464386E1 +2.304552000E3,2.949911358E1 +2.304876000E3,4.141349798E1 +2.305182000E3,4.156611078E1 +2.305491000E3,4.347125429E1 +2.305797000E3,4.579894404E1 +2.306107000E3,4.646123013E1 +2.306358000E3,4.517240887E1 +2.306604000E3,5.308475174E1 +2.306870000E3,4.681256924E1 +2.307168000E3,2.942058533E1 +2.307450000E3,2.986114457E1 +2.307717000E3,3.195150356E1 +2.308031000E3,3.775567348E1 +2.308265000E3,3.823556499E1 +2.308570000E3,2.909536341E1 +2.308842000E3,3.096070220E1 +2.309098000E3,4.060687649E1 +2.309391000E3,4.820113946E1 +2.309687000E3,4.619079404E1 +2.309928000E3,4.304793785E1 +2.310216000E3,4.976144450E1 +2.310446000E3,4.779148829E1 +2.310686000E3,5.167703897E1 +2.310979000E3,3.773719280E1 +2.311248000E3,2.923821784E1 +2.311466000E3,2.654081756E1 +2.311763000E3,2.616593312E1 +2.312001000E3,2.460963519E1 +2.312285000E3,2.554564289E1 +2.312588000E3,3.572755404E1 +2.312856000E3,4.274835909E1 +2.313074000E3,4.355953935E1 +2.313375000E3,5.377727845E1 +2.313611000E3,5.435235813E1 +2.313893000E3,5.477010993E1 +2.314137000E3,5.142421895E1 +2.314483000E3,4.794670725E1 +2.314780000E3,5.149445419E1 +2.315019000E3,5.127618051E1 +2.315306000E3,4.939341348E1 +2.315533000E3,4.928824788E1 +2.315832000E3,4.617335031E1 +2.316069000E3,3.696469062E1 +2.316377000E3,4.552948924E1 +2.316627000E3,4.672923062E1 +2.316913000E3,4.504192742E1 +2.317215000E3,4.364234368E1 +2.317558000E3,4.231291453E1 +2.317853000E3,4.886663905E1 +2.318118000E3,4.492895691E1 +2.318412000E3,4.464681620E1 +2.318711000E3,4.698360224E1 +2.318950000E3,4.454369095E1 +2.319250000E3,4.409609939E1 +2.319494000E3,4.283121809E1 +2.319793000E3,4.398770219E1 +2.320040000E3,4.728522548E1 +2.320336000E3,4.533798443E1 +2.320660000E3,4.548359371E1 +2.320908000E3,4.366718291E1 +2.321152000E3,5.139935964E1 +2.321408000E3,4.747980864E1 +2.321709000E3,3.867643032E1 +2.321952000E3,4.294445900E1 +2.322196000E3,4.336333736E1 +2.322445000E3,3.890531131E1 +2.322682000E3,4.087281677E1 +2.322980000E3,3.979668464E1 +2.323225000E3,4.157042707E1 +2.323553000E3,4.515881082E1 +2.323886000E3,3.868360739E1 +2.324184000E3,4.839319184E1 +2.324428000E3,4.298284223E1 +2.324669000E3,4.433761346E1 +2.324987000E3,4.011512195E1 +2.325233000E3,3.478551365E1 +2.325486000E3,4.180203002E1 +2.325789000E3,4.323726184E1 +2.326086000E3,3.985791110E1 +2.326333000E3,3.946244529E1 +2.326667000E3,4.066537977E1 +2.326925000E3,3.986903649E1 +2.327223000E3,4.142461274E1 +2.327521000E3,3.461788217E1 +2.327778000E3,3.326602717E1 +2.328102000E3,4.357074645E1 +2.328367000E3,5.496493564E1 +2.328618000E3,4.413482695E1 +2.328920000E3,4.170999616E1 +2.329183000E3,4.107694173E1 +2.329486000E3,5.342371220E1 +2.329729000E3,5.103134188E1 +2.330028000E3,4.716459977E1 +2.330382000E3,4.916498276E1 +2.330642000E3,4.801561309E1 +2.330930000E3,4.860033329E1 +2.331211000E3,5.037441690E1 +2.331463000E3,5.227972551E1 +2.331719000E3,4.516533742E1 +2.331971000E3,4.623606604E1 +2.332268000E3,3.207985320E1 +2.332513000E3,3.485208029E1 +2.332801000E3,4.367306984E1 +2.333109000E3,4.764897626E1 +2.333397000E3,4.844411921E1 +2.333779000E3,4.624834459E1 +2.334088000E3,4.492130047E1 +2.334331000E3,4.172849812E1 +2.334618000E3,4.243441154E1 +2.334859000E3,4.155300890E1 +2.335165000E3,3.508017133E1 +2.335414000E3,3.102497597E1 +2.335689000E3,3.346102792E1 +2.335938000E3,2.980210924E1 +2.336237000E3,2.815695425E1 +2.336480000E3,4.530841757E1 +2.336824000E3,4.476742737E1 +2.337075000E3,4.460293889E1 +2.337332000E3,5.054872999E1 +2.337583000E3,4.962100100E1 +2.337845000E3,5.224787063E1 +2.338132000E3,4.845338775E1 +2.338374000E3,4.675501048E1 +2.338651000E3,4.806540095E1 +2.338903000E3,4.707869991E1 +2.339145000E3,4.747595477E1 +2.339395000E3,3.449909829E1 +2.339700000E3,4.619360178E1 +2.340033000E3,4.785644508E1 +2.340329000E3,4.721347586E1 +2.340579000E3,4.302992844E1 +2.340828000E3,4.629706327E1 +2.341122000E3,4.550319757E1 +2.341368000E3,4.510038554E1 +2.341611000E3,4.752886315E1 +2.341876000E3,4.524122211E1 +2.342135000E3,2.990386366E1 +2.342396000E3,3.647672774E1 +2.342679000E3,2.854891758E1 +2.342936000E3,3.995722191E1 +2.343310000E3,4.501906630E1 +2.343555000E3,4.872212276E1 +2.343839000E3,4.566863325E1 +2.344134000E3,3.946814595E1 +2.344384000E3,4.796193013E1 +2.344656000E3,4.858552009E1 +2.344961000E3,4.902627763E1 +2.345257000E3,4.467711671E1 +2.345498000E3,3.756709071E1 +2.345764000E3,2.964206509E1 +2.346064000E3,4.283044167E1 +2.346415000E3,4.191014925E1 +2.346743000E3,4.910031818E1 +2.347021000E3,5.022624274E1 +2.347337000E3,5.257970130E1 +2.347586000E3,4.764257555E1 +2.347831000E3,4.353349182E1 +2.348126000E3,4.318604201E1 +2.348436000E3,4.825752031E1 +2.348710000E3,4.464987037E1 +2.348968000E3,4.690302679E1 +2.349225000E3,4.464063657E1 +2.349495000E3,5.114524492E1 +2.349740000E3,4.345049547E1 +2.350133000E3,4.655800825E1 +2.350382000E3,4.419356370E1 +2.350688000E3,4.308388818E1 +2.350960000E3,4.964188075E1 +2.351269000E3,5.137042419E1 +2.351542000E3,4.751708919E1 +2.351836000E3,3.239228651E1 +2.352067000E3,3.331178705E1 +2.352357000E3,4.628654550E1 +2.352625000E3,4.653844798E1 +2.352938000E3,4.419734850E1 +2.353231000E3,3.771763539E1 +2.353458000E3,3.489550836E1 +2.353713000E3,2.965581776E1 +2.353962000E3,3.457100474E1 +2.354201000E3,3.291595658E1 +2.354446000E3,2.791603976E1 +2.354711000E3,3.307930362E1 +2.355027000E3,5.311162000E1 +2.355290000E3,4.688373373E1 +2.355581000E3,3.663543876E1 +2.355868000E3,2.834403560E1 +2.356176000E3,5.001680718E1 +2.356518000E3,5.349221251E1 +2.356780000E3,5.234097025E1 +2.357043000E3,4.476475434E1 +2.357349000E3,5.160193390E1 +2.357584000E3,4.375385010E1 +2.357840000E3,3.709166207E1 +2.358125000E3,2.927191182E1 +2.358378000E3,4.114289062E1 +2.358676000E3,4.266518399E1 +2.358921000E3,4.641380631E1 +2.359210000E3,4.551221179E1 +2.359545000E3,4.099683883E1 +2.359801000E3,5.202602500E1 +2.360072000E3,5.207875379E1 +2.360343000E3,4.670310433E1 +2.360619000E3,4.619168123E1 +2.360865000E3,4.348453495E1 +2.361113000E3,4.603882932E1 +2.361353000E3,4.061885274E1 +2.361649000E3,4.873355826E1 +2.361884000E3,4.796347566E1 +2.362174000E3,4.419543811E1 +2.362420000E3,4.412529768E1 +2.362674000E3,4.315515456E1 +2.363006000E3,3.718353950E1 +2.363303000E3,4.131746877E1 +2.363556000E3,3.462830696E1 +2.363825000E3,3.224809166E1 +2.364105000E3,2.946532539E1 +2.364420000E3,4.082560353E1 +2.364671000E3,4.169760242E1 +2.364916000E3,4.728483165E1 +2.365158000E3,4.384961396E1 +2.365493000E3,3.327447630E1 +2.365797000E3,2.406470586E1 +2.366141000E3,2.410271882E1 +2.366422000E3,4.124818432E1 +2.366699000E3,4.300386829E1 +2.366994000E3,4.592409288E1 +2.367239000E3,4.402074721E1 +2.367492000E3,4.331525310E1 +2.367744000E3,4.351543939E1 +2.368045000E3,4.861325913E1 +2.368277000E3,4.345520025E1 +2.368543000E3,5.037549285E1 +2.368790000E3,3.455268589E1 +2.369034000E3,3.454484220E1 +2.369300000E3,3.436570372E1 +2.369544000E3,3.180799867E1 +2.369820000E3,4.460893996E1 +2.370091000E3,5.635981603E1 +2.370383000E3,4.932803438E1 +2.370635000E3,5.123791361E1 +2.370939000E3,4.749913119E1 +2.371193000E3,4.606624254E1 +2.371498000E3,4.453668838E1 +2.371779000E3,4.424564317E1 +2.372081000E3,5.022357768E1 +2.372347000E3,4.983363592E1 +2.372720000E3,4.311987242E1 +2.372969000E3,4.071927446E1 +2.373234000E3,3.624584431E1 +2.373535000E3,3.338407859E1 +2.373777000E3,2.744030282E1 +2.374025000E3,4.017686066E1 +2.374281000E3,4.153799732E1 +2.374537000E3,5.163713220E1 +2.374786000E3,4.970373114E1 +2.375033000E3,4.601563593E1 +2.375284000E3,4.943210146E1 +2.375577000E3,5.208741018E1 +2.375935000E3,4.780129348E1 +2.376167000E3,4.632707744E1 +2.376478000E3,5.008962536E1 +2.376734000E3,4.691729314E1 +2.376987000E3,4.593220796E1 +2.377250000E3,4.703621615E1 +2.377550000E3,4.863501898E1 +2.377838000E3,4.747349412E1 +2.378102000E3,4.430216971E1 +2.378373000E3,5.038477253E1 +2.378648000E3,4.679597376E1 +2.378873000E3,3.998762784E1 +2.379232000E3,4.140472709E1 +2.379480000E3,3.803559367E1 +2.379735000E3,4.292956565E1 +2.379993000E3,3.275484639E1 +2.380260000E3,3.159298587E1 +2.380513000E3,3.066195183E1 +2.380756000E3,4.846258942E1 +2.381012000E3,4.617374426E1 +2.381278000E3,4.338282331E1 +2.381580000E3,2.990070560E1 +2.381878000E3,3.384826320E1 +2.382127000E3,4.352773294E1 +2.382476000E3,3.711143795E1 +2.382756000E3,4.818117865E1 +2.383001000E3,4.694356023E1 +2.383312000E3,4.713242320E1 +2.383556000E3,4.945634369E1 +2.383815000E3,3.710449888E1 +2.384109000E3,4.990714727E1 +2.384350000E3,5.101970483E1 +2.384663000E3,4.290224010E1 +2.384917000E3,3.958873166E1 +2.385203000E3,4.207919898E1 +2.385583000E3,3.937588823E1 +2.385864000E3,3.927490117E1 +2.386122000E3,3.708577985E1 +2.386378000E3,3.104425869E1 +2.386630000E3,2.579918418E1 +2.386935000E3,4.201717352E1 +2.387186000E3,4.469788103E1 +2.387445000E3,3.928301867E1 +2.387699000E3,4.425054811E1 +2.387999000E3,2.901032620E1 +2.388242000E3,2.431535493E1 +2.388542000E3,4.330806788E1 +2.388866000E3,4.587852948E1 +2.389138000E3,5.068663336E1 +2.389420000E3,5.151872270E1 +2.389764000E3,4.501157372E1 +2.390012000E3,4.508008781E1 +2.390288000E3,4.471818734E1 +2.390546000E3,4.453717168E1 +2.390828000E3,3.435610332E1 +2.391113000E3,3.644941891E1 +2.391398000E3,3.741409627E1 +2.391658000E3,4.311052254E1 +2.391963000E3,3.924877335E1 +2.392296000E3,3.956869731E1 +2.392537000E3,3.230149795E1 +2.392786000E3,2.941450360E1 +2.393103000E3,3.366208400E1 +2.393349000E3,2.633153711E1 +2.393653000E3,2.492589605E1 +2.393892000E3,3.518582310E1 +2.394201000E3,3.668564238E1 +2.394454000E3,3.528359554E1 +2.394744000E3,3.673717548E1 +2.395034000E3,2.851979476E1 +2.395378000E3,2.558396774E1 +2.395660000E3,3.919896752E1 +2.395930000E3,3.339597104E1 +2.396187000E3,3.351358057E1 +2.396431000E3,3.743420456E1 +2.396691000E3,4.220523227E1 +2.396991000E3,3.500233403E1 +2.397251000E3,3.475187142E1 +2.397513000E3,3.604068947E1 +2.397821000E3,4.628512725E1 +2.398126000E3,4.463943287E1 +2.398428000E3,4.311458163E1 +2.398781000E3,4.375329409E1 +2.399076000E3,3.749705009E1 +2.399316000E3,4.116349149E1 +2.399615000E3,4.694603167E1 +2.399852000E3,5.327851923E1 +2.400143000E3,5.028800274E1 +2.400380000E3,5.055607260E1 +2.400618000E3,4.184216649E1 +2.400901000E3,4.280576865E1 +2.401144000E3,4.285187037E1 +2.401437000E3,5.414729311E1 +2.401684000E3,5.760726428E1 +2.402102000E3,5.135939721E1 +2.402349000E3,5.519633184E1 +2.402608000E3,5.937895156E1 +2.402853000E3,5.722678447E1 +2.403146000E3,5.316891996E1 +2.403388000E3,5.231876976E1 +2.403684000E3,4.275047946E1 +2.403921000E3,4.497010821E1 +2.404216000E3,5.935375427E1 +2.404454000E3,5.736369919E1 +2.404707000E3,5.877823139E1 +2.404971000E3,6.138635894E1 +2.405219000E3,5.726046839E1 +2.405473000E3,5.213953550E1 +2.405771000E3,4.831408459E1 +2.406024000E3,5.195614478E1 +2.406276000E3,4.885485021E1 +2.406567000E3,4.806131720E1 +2.406866000E3,3.817379603E1 +2.407129000E3,3.496803230E1 +2.407401000E3,4.679161915E1 +2.407625000E3,4.456362030E1 +2.407878000E3,4.499112684E1 +2.408171000E3,4.695848411E1 +2.408491000E3,4.136053284E1 +2.408771000E3,3.435960184E1 +2.409033000E3,2.907775515E1 +2.409287000E3,3.179102298E1 +2.409536000E3,2.535492331E1 +2.409797000E3,2.893863695E1 +2.410015000E3,3.195695462E1 +2.410232000E3,2.883661354E1 +2.410481000E3,4.380812340E1 +2.410735000E3,5.435187737E1 +2.411017000E3,4.390478627E1 +2.411330000E3,4.136550501E1 +2.411572000E3,6.231552653E1 +2.411823000E3,4.988484474E1 +2.412072000E3,4.569499772E1 +2.412339000E3,5.207639469E1 +2.412605000E3,5.314724412E1 +2.412842000E3,5.014855129E1 +2.413111000E3,4.925815950E1 +2.413332000E3,5.545199009E1 +2.413608000E3,4.910878211E1 +2.413873000E3,5.481296501E1 +2.414229000E3,4.620355557E1 +2.414532000E3,4.757632406E1 +2.414792000E3,4.414835702E1 +2.415033000E3,4.178334533E1 +2.415296000E3,3.571558610E1 +2.415577000E3,3.622280285E1 +2.415839000E3,4.187963398E1 +2.416103000E3,4.120303067E1 +2.416426000E3,5.043875316E1 +2.416696000E3,4.738536839E1 +2.417006000E3,4.790698669E1 +2.417250000E3,4.717323409E1 +2.417613000E3,4.889624394E1 +2.417923000E3,4.615999302E1 +2.418209000E3,4.554232436E1 +2.418487000E3,4.963147342E1 +2.418748000E3,4.540077281E1 +2.419058000E3,4.402622058E1 +2.419355000E3,3.991430025E1 +2.419631000E3,5.699106589E1 +2.419880000E3,4.542610605E1 +2.420140000E3,5.871400849E1 +2.420387000E3,5.593691155E1 +2.420634000E3,5.642590944E1 +2.420987000E3,4.942882304E1 +2.421235000E3,5.122637091E1 +2.421504000E3,5.506353313E1 +2.421808000E3,4.974630362E1 +2.422098000E3,4.922446567E1 +2.422401000E3,4.711891494E1 +2.422653000E3,4.935851062E1 +2.422946000E3,5.223840607E1 +2.423180000E3,5.181747333E1 +2.423433000E3,5.106095739E1 +2.423699000E3,4.283067128E1 +2.424023000E3,4.620110870E1 +2.424283000E3,4.813646184E1 +2.424556000E3,4.673905704E1 +2.424833000E3,5.139038068E1 +2.425085000E3,4.187355918E1 +2.425330000E3,4.200690239E1 +2.425641000E3,4.094986905E1 +2.425891000E3,3.869951887E1 +2.426156000E3,4.295178440E1 +2.426411000E3,4.445235603E1 +2.426673000E3,4.180705342E1 +2.426915000E3,4.159918394E1 +2.427275000E3,5.193727105E1 +2.427528000E3,4.985744468E1 +2.427773000E3,5.143594155E1 +2.428021000E3,5.687627643E1 +2.428258000E3,4.984177159E1 +2.428554000E3,4.104898524E1 +2.428794000E3,3.740238657E1 +2.429102000E3,4.424577609E1 +2.429345000E3,5.022623751E1 +2.429627000E3,5.346928374E1 +2.429864000E3,4.448852620E1 +2.430156000E3,3.611387858E1 +2.430475000E3,3.592739777E1 +2.430726000E3,3.269867125E1 +2.431039000E3,4.089980433E1 +2.431331000E3,3.752068977E1 +2.431567000E3,3.972155082E1 +2.431870000E3,4.098289208E1 +2.432107000E3,4.068605974E1 +2.432406000E3,3.978950334E1 +2.432643000E3,3.435438837E1 +2.432933000E3,3.806187937E1 +2.433169000E3,3.613809925E1 +2.433407000E3,5.573542624E1 +2.433734000E3,4.812688919E1 +2.434035000E3,5.332611421E1 +2.434315000E3,5.453475878E1 +2.434557000E3,5.156731049E1 +2.434849000E3,4.452924889E1 +2.435086000E3,4.091217005E1 +2.435380000E3,3.495963916E1 +2.435633000E3,3.994418328E1 +2.435904000E3,5.345258512E1 +2.436200000E3,4.573029424E1 +2.436434000E3,4.666848361E1 +2.436802000E3,4.148612785E1 +2.437044000E3,3.785277445E1 +2.437301000E3,3.823545546E1 +2.437549000E3,3.883632471E1 +2.437839000E3,4.756553033E1 +2.438077000E3,4.282797221E1 +2.438369000E3,5.291874167E1 +2.438606000E3,5.394671897E1 +2.438862000E3,5.490926284E1 +2.439159000E3,5.465277565E1 +2.439395000E3,5.245345229E1 +2.439637000E3,4.823915254E1 +2.440022000E3,5.658050668E1 +2.440281000E3,5.255468157E1 +2.440546000E3,4.365897331E1 +2.440828000E3,4.187636724E1 +2.441125000E3,4.916172461E1 +2.441365000E3,5.038635874E1 +2.441645000E3,5.238005511E1 +2.441868000E3,4.979548238E1 +2.442114000E3,5.164563876E1 +2.442410000E3,4.795862612E1 +2.442694000E3,4.406311297E1 +2.442980000E3,4.461066687E1 +2.443265000E3,3.990213588E1 +2.443525000E3,4.270339676E1 +2.443815000E3,4.671533321E1 +2.444064000E3,4.922681237E1 +2.444311000E3,5.115751882E1 +2.444605000E3,4.659279655E1 +2.444851000E3,4.805254743E1 +2.445152000E3,4.646584218E1 +2.445447000E3,3.924248597E1 +2.445698000E3,3.657018775E1 +2.445976000E3,3.978585816E1 +2.446317000E3,5.134473527E1 +2.446569000E3,4.872028256E1 +2.446851000E3,4.793203365E1 +2.447088000E3,4.917648823E1 +2.447345000E3,4.514648035E1 +2.447599000E3,4.827609085E1 +2.447864000E3,5.009329877E1 +2.448138000E3,4.858127151E1 +2.448430000E3,4.885678900E1 +2.448726000E3,4.038666943E1 +2.448956000E3,3.788824065E1 +2.449214000E3,4.872306097E1 +2.449516000E3,5.112419798E1 +2.449767000E3,4.394357347E1 +2.450028000E3,5.187358067E1 +2.450298000E3,4.764520743E1 +2.450575000E3,5.323515688E1 +2.450844000E3,4.730661272E1 +2.451150000E3,5.022143967E1 +2.451400000E3,4.244080150E1 +2.451697000E3,4.540622562E1 +2.452002000E3,4.987171470E1 +2.452273000E3,4.928771096E1 +2.452519000E3,4.415614577E1 +2.452847000E3,4.529816891E1 +2.453138000E3,3.130480949E1 +2.453407000E3,3.727195618E1 +2.453707000E3,4.218798188E1 +2.453975000E3,3.196426842E1 +2.454240000E3,2.986758668E1 +2.454534000E3,4.365366219E1 +2.454795000E3,4.363233606E1 +2.455054000E3,4.576258560E1 +2.455297000E3,4.600510844E1 +2.455546000E3,5.143992334E1 +2.455816000E3,4.451792491E1 +2.456172000E3,3.834658463E1 +2.456438000E3,4.961865906E1 +2.456716000E3,4.301133302E1 +2.457025000E3,5.185950840E1 +2.457284000E3,4.578127088E1 +2.457582000E3,4.860789001E1 +2.457857000E3,4.548301241E1 +2.458087000E3,5.726595471E1 +2.458343000E3,4.581143143E1 +2.458590000E3,4.593076535E1 +2.458898000E3,4.646845677E1 +2.459143000E3,4.385664195E1 +2.459499000E3,3.921291428E1 +2.459756000E3,4.336490005E1 +2.460079000E3,5.059416731E1 +2.460323000E3,5.383728406E1 +2.460609000E3,4.336002656E1 +2.460894000E3,3.810358455E1 +2.461148000E3,4.341384577E1 +2.461406000E3,4.240002850E1 +2.461668000E3,4.220171306E1 +2.461957000E3,4.165441002E1 +2.462218000E3,4.110791112E1 +2.462543000E3,3.718059239E1 +2.462873000E3,4.490190793E1 +2.463162000E3,4.449127269E1 +2.463461000E3,5.110192526E1 +2.463709000E3,4.670759724E1 +2.464024000E3,4.554197086E1 +2.464345000E3,4.295638115E1 +2.464598000E3,4.260186095E1 +2.464844000E3,3.838281454E1 +2.465094000E3,4.864552318E1 +2.465348000E3,4.722694913E1 +2.465597000E3,5.723123112E1 +2.465970000E3,5.678247819E1 +2.466226000E3,5.304857482E1 +2.466490000E3,5.799491543E1 +2.466745000E3,5.566332539E1 +2.467000000E3,5.532803606E1 +2.467301000E3,5.480406224E1 +2.467518000E3,5.281426808E1 +2.467773000E3,5.319750336E1 +2.468030000E3,4.504180471E1 +2.468309000E3,4.011552860E1 +2.468536000E3,3.286668959E1 +2.468782000E3,5.187437917E1 +2.469159000E3,5.342027818E1 +2.469405000E3,4.655027014E1 +2.469685000E3,4.875434900E1 +2.469968000E3,4.400777727E1 +2.470228000E3,4.944370484E1 +2.470524000E3,4.819898526E1 +2.470826000E3,4.906267157E1 +2.471101000E3,4.559683511E1 +2.471407000E3,5.066052597E1 +2.471662000E3,5.052511938E1 +2.471933000E3,4.854316053E1 +2.472243000E3,4.720397127E1 +2.472513000E3,4.539713693E1 +2.472765000E3,4.504800702E1 +2.473077000E3,4.756996091E1 +2.473381000E3,4.502772911E1 +2.473668000E3,4.844141365E1 +2.473909000E3,4.718772198E1 +2.474176000E3,5.036014826E1 +2.474415000E3,4.734822430E1 +2.474659000E3,4.506554867E1 +2.474941000E3,4.590585801E1 +2.475227000E3,4.808550728E1 +2.475549000E3,4.744751902E1 +2.475816000E3,5.139502060E1 +2.476110000E3,4.565542501E1 +2.476367000E3,4.502651441E1 +2.476614000E3,4.529198411E1 +2.476876000E3,4.841642572E1 +2.477138000E3,4.904966766E1 +2.477430000E3,5.061185879E1 +2.477703000E3,4.805167318E1 +2.477973000E3,4.840268940E1 +2.478233000E3,4.609690512E1 +2.478491000E3,5.080806253E1 +2.478854000E3,4.929079330E1 +2.479112000E3,4.887431247E1 +2.479382000E3,4.582116343E1 +2.479677000E3,4.614295426E1 +2.479939000E3,5.004731017E1 +2.480247000E3,5.118895049E1 +2.480496000E3,4.750144805E1 +2.480785000E3,4.691637905E1 +2.481084000E3,4.575243018E1 +2.481328000E3,4.498034363E1 +2.481622000E3,5.049144453E1 +2.481951000E3,4.811617152E1 +2.482214000E3,4.600387593E1 +2.482494000E3,5.163944801E1 +2.482753000E3,4.933311419E1 +2.482991000E3,4.946534766E1 +2.483244000E3,4.580757204E1 +2.483487000E3,4.797573247E1 +2.483734000E3,4.560844100E1 +2.483990000E3,5.039329574E1 +2.484313000E3,5.052905321E1 +2.484577000E3,5.131938081E1 +2.484833000E3,4.901245069E1 +2.485113000E3,5.233648083E1 +2.485461000E3,5.215489758E1 +2.485749000E3,5.451606287E1 +2.486018000E3,5.043201098E1 +2.486334000E3,5.091085093E1 +2.486650000E3,4.972266732E1 +2.486916000E3,4.846864702E1 +2.487167000E3,4.843730663E1 +2.487412000E3,5.285205631E1 +2.487677000E3,5.695937588E1 +2.487965000E3,5.067248408E1 +2.488216000E3,4.955689254E1 +2.488580000E3,4.789771891E1 +2.488828000E3,4.640186686E1 +2.489150000E3,4.956289338E1 +2.489428000E3,4.916705799E1 +2.489718000E3,4.250319869E1 +2.489959000E3,4.211788948E1 +2.490259000E3,4.711467977E1 +2.490508000E3,5.336087879E1 +2.490805000E3,5.163346506E1 +2.491066000E3,5.303328317E1 +2.491377000E3,5.018594076E1 +2.491684000E3,4.569780009E1 +2.492029000E3,4.677168871E1 +2.492273000E3,4.586755987E1 +2.492522000E3,5.020047651E1 +2.492768000E3,4.585538278E1 +2.493006000E3,5.027464230E1 +2.493315000E3,4.719632652E1 +2.493608000E3,4.892998103E1 +2.493874000E3,4.659859577E1 +2.494131000E3,4.485377967E1 +2.494387000E3,4.661063763E1 +2.494635000E3,4.873112034E1 +2.494904000E3,5.011233058E1 +2.495259000E3,4.996207620E1 +2.495523000E3,5.026371938E1 +2.495789000E3,4.897334151E1 +2.496086000E3,4.919412247E1 +2.496330000E3,4.448238049E1 +2.496598000E3,5.779881243E1 +2.496845000E3,5.068443192E1 +2.497079000E3,5.452206946E1 +2.497328000E3,6.091811093E1 +2.497574000E3,5.545025588E1 +2.497819000E3,5.118451852E1 +2.498124000E3,5.647063434E1 +2.498436000E3,5.942897676E1 +2.498681000E3,6.063927987E1 +2.498932000E3,5.256584857E1 +2.499203000E3,5.942844343E1 +2.499465000E3,5.268198933E1 +2.499726000E3,5.561310022E1 +2.499989000E3,5.551348586E1 +2.500270000E3,5.728700965E1 +2.500550000E3,5.848024533E1 +2.500856000E3,5.545551244E1 +2.501156000E3,7.074712648E1 +2.501405000E3,6.649397556E1 +2.501727000E3,6.577106108E1 +2.501964000E3,5.791155905E1 +2.502223000E3,6.571272960E1 +2.502476000E3,5.223691777E1 +2.502731000E3,5.099379006E1 +2.502989000E3,4.996024440E1 +2.503265000E3,4.587573023E1 +2.503515000E3,6.660646739E1 +2.503792000E3,5.426812996E1 +2.504090000E3,4.221263073E1 +2.504348000E3,3.961359220E1 +2.504607000E3,3.317448387E1 +2.504957000E3,2.765634596E1 +2.505202000E3,5.260508289E1 +2.505444000E3,4.970766119E1 +2.505723000E3,5.961421356E1 +2.506010000E3,5.761735716E1 +2.506316000E3,4.386011183E1 +2.506629000E3,3.297646158E1 +2.506928000E3,3.461351567E1 +2.507171000E3,3.422494413E1 +2.507415000E3,3.898815557E1 +2.507661000E3,3.916714623E1 +2.507958000E3,4.409544564E1 +2.508199000E3,4.040812578E1 +2.508495000E3,4.100804729E1 +2.508767000E3,4.155083379E1 +2.509073000E3,4.256659126E1 +2.509346000E3,4.665111645E1 +2.509615000E3,4.785704834E1 +2.509926000E3,4.957995318E1 +2.510246000E3,5.281308228E1 +2.510533000E3,5.716195403E1 +2.510847000E3,5.384222007E1 +2.511087000E3,4.682850643E1 +2.511483000E3,5.585229854E1 +2.511769000E3,5.797880255E1 +2.512061000E3,5.008051045E1 +2.512305000E3,4.616221083E1 +2.512545000E3,5.837834308E1 +2.512782000E3,4.588894556E1 +2.513082000E3,5.827978204E1 +2.513321000E3,5.321307958E1 +2.513625000E3,5.419914666E1 +2.513860000E3,4.249936315E1 +2.514160000E3,5.093700871E1 +2.514505000E3,4.733309734E1 +2.514807000E3,5.739188753E1 +2.515049000E3,5.684870925E1 +2.515326000E3,5.429714525E1 +2.515551000E3,5.304528611E1 +2.515847000E3,6.048302750E1 +2.516097000E3,5.298092655E1 +2.516397000E3,5.664346713E1 +2.516634000E3,5.062362510E1 +2.516910000E3,5.059011404E1 +2.517165000E3,5.074931344E1 +2.517424000E3,5.193937267E1 +2.517672000E3,4.773080825E1 +2.517933000E3,4.886471101E1 +2.518191000E3,4.258084657E1 +2.518440000E3,4.144243799E1 +2.518697000E3,3.266068365E1 +2.518962000E3,3.662092465E1 +2.519211000E3,4.002326553E1 +2.519469000E3,5.193824268E1 +2.519821000E3,5.548381163E1 +2.520087000E3,5.245445808E1 +2.520336000E3,4.447536752E1 +2.520718000E3,5.931091731E1 +2.521010000E3,5.514928156E1 +2.521305000E3,5.194242569E1 +2.521541000E3,5.632439964E1 +2.521781000E3,4.768714929E1 +2.522074000E3,3.967116686E1 +2.522306000E3,3.457523914E1 +2.522554000E3,3.414939493E1 +2.522808000E3,3.034285017E1 +2.523103000E3,3.725639399E1 +2.523347000E3,5.824523011E1 +2.523645000E3,5.697741808E1 +2.524002000E3,5.995361389E1 +2.524244000E3,5.516819042E1 +2.524491000E3,5.520201782E1 +2.524765000E3,4.576677797E1 +2.524988000E3,5.785527848E1 +2.525299000E3,5.093237528E1 +2.525544000E3,4.090627494E1 +2.525822000E3,3.111750175E1 +2.526056000E3,2.764971736E1 +2.526311000E3,2.852524033E1 +2.526617000E3,3.508264660E1 +2.526905000E3,5.067917717E1 +2.527241000E3,4.646824007E1 +2.527487000E3,3.686495987E1 +2.527738000E3,3.822220480E1 +2.527988000E3,3.764348220E1 +2.528232000E3,4.278450517E1 +2.528563000E3,4.881983602E1 +2.528870000E3,4.048435148E1 +2.529125000E3,4.047282835E1 +2.529398000E3,4.602715630E1 +2.529632000E3,4.358719476E1 +2.529925000E3,4.185499728E1 +2.530224000E3,4.428160693E1 +2.530451000E3,5.370094630E1 +2.530771000E3,4.662369716E1 +2.531057000E3,4.486368653E1 +2.531322000E3,3.985753269E1 +2.531579000E3,3.868983993E1 +2.531842000E3,4.397673982E1 +2.532129000E3,4.465178920E1 +2.532379000E3,4.071629694E1 +2.532681000E3,3.700154265E1 +2.532925000E3,3.709745900E1 +2.533169000E3,3.856350220E1 +2.533454000E3,3.780017804E1 +2.533739000E3,4.079153270E1 +2.534053000E3,3.467337947E1 +2.534304000E3,3.872357849E1 +2.534571000E3,4.188092371E1 +2.534878000E3,4.226520735E1 +2.535180000E3,4.433351029E1 +2.535433000E3,4.196124368E1 +2.535679000E3,4.159710638E1 +2.535934000E3,4.131920574E1 +2.536230000E3,4.013333591E1 +2.536496000E3,3.861252617E1 +2.536812000E3,3.205810696E1 +2.537071000E3,3.900017908E1 +2.537321000E3,3.720890888E1 +2.537589000E3,3.571752088E1 +2.537899000E3,3.466875388E1 +2.538158000E3,3.490809444E1 +2.538414000E3,2.846246396E1 +2.538721000E3,3.471466025E1 +2.539000000E3,3.262267006E1 +2.539250000E3,2.900340615E1 +2.539526000E3,2.962734770E1 +2.539843000E3,4.051335289E1 +2.540219000E3,3.732414883E1 +2.540478000E3,3.212776280E1 +2.540731000E3,3.980002135E1 +2.541002000E3,4.402529692E1 +2.541305000E3,3.531142487E1 +2.541570000E3,4.157255463E1 +2.541892000E3,4.121686373E1 +2.542138000E3,3.512055425E1 +2.542435000E3,3.058422839E1 +2.542704000E3,3.860796470E1 +2.542951000E3,4.158955283E1 +2.543254000E3,4.126835549E1 +2.543598000E3,4.557459954E1 +2.543842000E3,4.195620726E1 +2.544088000E3,4.759905541E1 +2.544347000E3,4.089593512E1 +2.544592000E3,4.224934090E1 +2.544840000E3,3.548720999E1 +2.545141000E3,4.189266277E1 +2.545422000E3,4.058854606E1 +2.545652000E3,3.761551365E1 +2.545897000E3,3.643024250E1 +2.546173000E3,3.544845567E1 +2.546439000E3,3.816851754E1 +2.546779000E3,3.801212128E1 +2.547110000E3,3.288266257E1 +2.547379000E3,4.063952307E1 +2.547641000E3,4.765684387E1 +2.547893000E3,4.402640436E1 +2.548143000E3,4.172886183E1 +2.548441000E3,3.808222191E1 +2.548685000E3,3.637035664E1 +2.548962000E3,3.879815953E1 +2.549230000E3,5.433785228E1 +2.549540000E3,5.428002325E1 +2.549852000E3,5.430864003E1 +2.550121000E3,5.376325395E1 +2.550389000E3,5.250586376E1 +2.550641000E3,5.329413218E1 +2.550946000E3,3.817927317E1 +2.551218000E3,3.779289824E1 +2.551493000E3,4.904361964E1 +2.551759000E3,5.500168111E1 +2.552006000E3,4.745774118E1 +2.552261000E3,5.304049624E1 +2.552515000E3,4.933664563E1 +2.552779000E3,3.482983031E1 +2.553043000E3,3.914561037E1 +2.553378000E3,3.318943686E1 +2.553659000E3,2.674748735E1 +2.553917000E3,2.500565902E1 +2.554234000E3,3.331261434E1 +2.554489000E3,3.380079275E1 +2.554753000E3,3.632095841E1 +2.554996000E3,3.606888467E1 +2.555239000E3,4.759559903E1 +2.555541000E3,5.588542149E1 +2.555837000E3,5.768171500E1 +2.556076000E3,5.837962370E1 +2.556358000E3,5.761486260E1 +2.556647000E3,5.408185929E1 +2.556914000E3,5.624815374E1 +2.557248000E3,4.727853091E1 +2.557554000E3,3.999550071E1 +2.557822000E3,4.090986684E1 +2.558062000E3,3.411171601E1 +2.558302000E3,3.042998918E1 +2.558550000E3,3.392526215E1 +2.558807000E3,3.801243567E1 +2.559082000E3,4.390440101E1 +2.559357000E3,4.215163378E1 +2.559616000E3,4.616573562E1 +2.559972000E3,4.170066459E1 +2.560245000E3,2.972551911E1 +2.560517000E3,3.987643023E1 +2.560765000E3,4.046237199E1 +2.561011000E3,4.268708813E1 +2.561258000E3,4.450541644E1 +2.561531000E3,4.611922799E1 +2.561775000E3,4.492719317E1 +2.562027000E3,4.345851098E1 +2.562302000E3,5.022295857E1 +2.562533000E3,4.986016935E1 +2.562786000E3,3.932672790E1 +2.563211000E3,3.777119812E1 +2.563479000E3,4.577537823E1 +2.563731000E3,5.443473776E1 +2.563977000E3,5.947837126E1 +2.564252000E3,5.014881480E1 +2.564539000E3,4.884415531E1 +2.564781000E3,4.451698294E1 +2.565088000E3,3.693106642E1 +2.565361000E3,3.096881298E1 +2.565624000E3,2.635486448E1 +2.565885000E3,2.734213385E1 +2.566246000E3,3.979362654E1 +2.566493000E3,3.382738554E1 +2.566797000E3,3.469438245E1 +2.567097000E3,4.097528595E1 +2.567346000E3,4.285297734E1 +2.567644000E3,4.930003444E1 +2.567891000E3,4.540271843E1 +2.568170000E3,3.109775861E1 +2.568407000E3,2.738661195E1 +2.568701000E3,3.024785153E1 +2.568952000E3,3.235217301E1 +2.569220000E3,3.196941264E1 +2.569567000E3,4.299833718E1 +2.569862000E3,4.496000509E1 +2.570178000E3,4.562225815E1 +2.570442000E3,4.437451260E1 +2.570707000E3,3.949227756E1 +2.570950000E3,2.951847370E1 +2.571202000E3,3.800151296E1 +2.571472000E3,4.650517590E1 +2.571732000E3,3.967561664E1 +2.571975000E3,3.149456620E1 +2.572246000E3,5.234083710E1 +2.572527000E3,4.544839619E1 +2.572859000E3,4.436174777E1 +2.573168000E3,4.369290756E1 +2.573429000E3,4.420543128E1 +2.573728000E3,4.389854646E1 +2.573968000E3,4.580346210E1 +2.574268000E3,4.881141748E1 +2.574509000E3,4.708023256E1 +2.574802000E3,3.388696242E1 +2.575045000E3,2.922489212E1 +2.575339000E3,3.941924125E1 +2.575597000E3,4.733040375E1 +2.575906000E3,4.790376430E1 +2.576245000E3,4.328559785E1 +2.576517000E3,4.720947277E1 +2.576791000E3,4.076260480E1 +2.577092000E3,3.249905806E1 +2.577324000E3,3.886850876E1 +2.577566000E3,3.577483806E1 +2.577814000E3,4.105002685E1 +2.578080000E3,3.881208350E1 +2.578375000E3,5.720708534E1 +2.578624000E3,4.933084675E1 +2.578932000E3,5.989261963E1 +2.579254000E3,5.193127116E1 +2.579506000E3,4.843920497E1 +2.579747000E3,4.570821188E1 +2.580001000E3,4.446748829E1 +2.580244000E3,4.006228376E1 +2.580497000E3,2.933332862E1 +2.580745000E3,4.525678604E1 +2.580989000E3,4.717489692E1 +2.581288000E3,5.239736286E1 +2.581587000E3,5.268105849E1 +2.581851000E3,4.960616241E1 +2.582112000E3,4.637217789E1 +2.582361000E3,4.676379781E1 +2.582583000E3,4.083594902E1 +2.582903000E3,2.696140701E1 +2.583176000E3,2.668057590E1 +2.583429000E3,2.900886287E1 +2.583692000E3,2.732690452E1 +2.583951000E3,3.475308428E1 +2.584205000E3,4.782860484E1 +2.584480000E3,4.928978168E1 +2.584742000E3,3.697304160E1 +2.585017000E3,3.390321432E1 +2.585248000E3,4.818778278E1 +2.585552000E3,5.175969441E1 +2.585851000E3,4.752724055E1 +2.586108000E3,5.047732228E1 +2.586408000E3,5.003267867E1 +2.586651000E3,4.995698879E1 +2.586934000E3,4.985539117E1 +2.587202000E3,4.558719065E1 +2.587455000E3,4.973387236E1 +2.587702000E3,5.190737686E1 +2.587964000E3,4.955516560E1 +2.588211000E3,5.039526507E1 +2.588461000E3,3.897042435E1 +2.588748000E3,2.919124678E1 +2.589063000E3,3.061867322E1 +2.589398000E3,4.010104895E1 +2.589690000E3,3.640442215E1 +2.589998000E3,4.479952304E1 +2.590261000E3,4.757967128E1 +2.590558000E3,4.812333533E1 +2.590802000E3,4.603482331E1 +2.591083000E3,2.960043464E1 +2.591326000E3,3.684354753E1 +2.591591000E3,4.359182452E1 +2.591849000E3,4.788602237E1 +2.592228000E3,4.468031543E1 +2.592527000E3,3.894688899E1 +2.592778000E3,2.800490026E1 +2.593035000E3,4.310888325E1 +2.593333000E3,4.628339380E1 +2.593602000E3,4.440124594E1 +2.593883000E3,4.123163794E1 +2.594160000E3,3.127645239E1 +2.594429000E3,3.071812965E1 +2.594749000E3,4.618618296E1 +2.595070000E3,5.248181749E1 +2.595312000E3,4.786265879E1 +2.595668000E3,3.990233287E1 +2.595973000E3,4.173583037E1 +2.596256000E3,3.709278400E1 +2.596497000E3,3.229385861E1 +2.596813000E3,4.380573021E1 +2.597084000E3,4.783628282E1 +2.597325000E3,5.024593568E1 +2.597578000E3,5.102379549E1 +2.597828000E3,4.760481411E1 +2.598089000E3,3.822780835E1 +2.598387000E3,3.417342767E1 +2.598736000E3,2.863579065E1 +2.598981000E3,2.886228233E1 +2.599228000E3,2.855965247E1 +2.599493000E3,3.083396855E1 +2.599764000E3,3.581659374E1 +2.600032000E3,4.317647632E1 +2.600330000E3,4.853625621E1 +2.600623000E3,5.102467342E1 +2.600867000E3,4.877836926E1 +2.601112000E3,4.705612686E1 +2.601365000E3,4.889085742E1 +2.601612000E3,4.654488136E1 +2.601956000E3,4.055024190E1 +2.602220000E3,3.990851266E1 +2.602547000E3,3.648352551E1 +2.602794000E3,5.324982942E1 +2.603078000E3,5.268965363E1 +2.603338000E3,4.851189142E1 +2.603637000E3,5.135006473E1 +2.603925000E3,4.939301404E1 +2.604238000E3,5.337101389E1 +2.604488000E3,5.022765286E1 +2.604734000E3,5.253186666E1 +2.605064000E3,4.127453431E1 +2.605321000E3,4.114070867E1 +2.605572000E3,4.042282231E1 +2.605820000E3,4.255774466E1 +2.606073000E3,4.746726668E1 +2.606319000E3,4.761848671E1 +2.606565000E3,4.983628061E1 +2.606849000E3,3.046517787E1 +2.607082000E3,3.832211131E1 +2.607339000E3,4.741131966E1 +2.607609000E3,4.453335589E1 +2.607874000E3,3.545592153E1 +2.608197000E3,4.672891376E1 +2.608451000E3,4.755881287E1 +2.608706000E3,4.827652641E1 +2.608952000E3,4.727153141E1 +2.609226000E3,4.731450942E1 +2.609537000E3,3.981385402E1 +2.609784000E3,3.194698732E1 +2.610041000E3,3.314164027E1 +2.610283000E3,2.819786732E1 +2.610546000E3,2.664547785E1 +2.610857000E3,2.913544778E1 +2.611125000E3,3.961651759E1 +2.611432000E3,3.852777426E1 +2.611666000E3,3.205673146E1 +2.611951000E3,4.233182010E1 +2.612229000E3,3.378509898E1 +2.612454000E3,4.071755552E1 +2.612730000E3,5.018278065E1 +2.613050000E3,4.100034395E1 +2.613359000E3,3.892108016E1 +2.613628000E3,5.091321799E1 +2.613871000E3,4.336916838E1 +2.614108000E3,3.960788811E1 +2.614408000E3,3.948227358E1 +2.614722000E3,3.631863435E1 +2.614975000E3,4.057042340E1 +2.615256000E3,4.414132009E1 +2.615486000E3,4.180934435E1 +2.615750000E3,4.153999936E1 +2.615997000E3,3.521796466E1 +2.616260000E3,5.443854687E1 +2.616548000E3,5.408118563E1 +2.616842000E3,4.951275264E1 +2.617090000E3,5.182722031E1 +2.617344000E3,4.327522742E1 +2.617643000E3,5.375122422E1 +2.617975000E3,5.216635190E1 +2.618233000E3,4.126006713E1 +2.618497000E3,4.980260599E1 +2.618804000E3,4.655838197E1 +2.619044000E3,4.977945459E1 +2.619327000E3,4.875559075E1 +2.619562000E3,4.983226039E1 +2.619834000E3,4.741689273E1 +2.620075000E3,4.923498746E1 +2.620352000E3,4.923432072E1 +2.620664000E3,4.040876723E1 +2.620916000E3,3.889825840E1 +2.621142000E3,5.245081579E1 +2.621448000E3,4.684934794E1 +2.621687000E3,4.583906640E1 +2.621992000E3,4.366517623E1 +2.622230000E3,3.373873872E1 +2.622475000E3,3.701694694E1 +2.622750000E3,3.544967426E1 +2.623008000E3,3.363206222E1 +2.623285000E3,4.009589135E1 +2.623562000E3,4.408709562E1 +2.623825000E3,4.800133533E1 +2.624131000E3,4.855432282E1 +2.624414000E3,4.808187444E1 +2.624671000E3,5.252566194E1 +2.624932000E3,4.890333861E1 +2.625183000E3,4.370428781E1 +2.625430000E3,3.668118979E1 +2.625747000E3,4.353955331E1 +2.626003000E3,4.224026412E1 +2.626267000E3,4.311785789E1 +2.626514000E3,3.517806855E1 +2.626763000E3,3.981966751E1 +2.627025000E3,3.444602265E1 +2.627334000E3,3.341390757E1 +2.627660000E3,3.926570124E1 +2.627920000E3,4.341089288E1 +2.628216000E3,4.081134870E1 +2.628467000E3,3.912400300E1 +2.628730000E3,3.657553946E1 +2.629000000E3,3.072838888E1 +2.629284000E3,2.929703023E1 +2.629549000E3,3.378014550E1 +2.629844000E3,4.760306323E1 +2.630080000E3,4.024322042E1 +2.630373000E3,3.235913140E1 +2.630611000E3,3.920509877E1 +2.630919000E3,5.103841717E1 +2.631222000E3,5.813980805E1 +2.631514000E3,5.190256812E1 +2.631753000E3,4.653294376E1 +2.632054000E3,4.782140153E1 +2.632295000E3,4.977458693E1 +2.632592000E3,5.371197571E1 +2.632828000E3,5.056512655E1 +2.633140000E3,5.325824914E1 +2.633383000E3,4.973751947E1 +2.633632000E3,4.853342473E1 +2.633950000E3,3.905011010E1 +2.634254000E3,3.751700759E1 +2.634549000E3,5.292771607E1 +2.634786000E3,5.557450981E1 +2.635082000E3,4.974692283E1 +2.635319000E3,5.393938197E1 +2.635611000E3,4.675981835E1 +2.635848000E3,4.299614910E1 +2.636145000E3,3.756646750E1 +2.636395000E3,3.824353200E1 +2.636648000E3,3.045317917E1 +2.636942000E3,3.257931849E1 +2.637299000E3,3.010616025E1 +2.637599000E3,4.995329379E1 +2.637834000E3,4.824584689E1 +2.638071000E3,5.059212149E1 +2.638363000E3,5.330633429E1 +2.638612000E3,5.343612136E1 +2.638897000E3,4.755550111E1 +2.639122000E3,4.119881812E1 +2.639362000E3,3.902726568E1 +2.639659000E3,4.451944661E1 +2.639896000E3,4.587471035E1 +2.640164000E3,4.115502802E1 +2.640409000E3,4.505311495E1 +2.640656000E3,4.913968689E1 +2.640951000E3,5.110923180E1 +2.641208000E3,4.281604120E1 +2.641505000E3,4.825854961E1 +2.641748000E3,4.861588211E1 +2.642059000E3,4.450542116E1 +2.642304000E3,4.274821036E1 +2.642556000E3,3.503446158E1 +2.642862000E3,4.080900103E1 +2.643164000E3,4.152079562E1 +2.643527000E3,3.935881933E1 +2.643833000E3,3.760570593E1 +2.644082000E3,3.959144469E1 +2.644327000E3,4.007918652E1 +2.644573000E3,4.288120719E1 +2.644814000E3,4.793099478E1 +2.645114000E3,4.424069452E1 +2.645391000E3,4.078427844E1 +2.645635000E3,3.902795236E1 +2.645871000E3,4.393773718E1 +2.646111000E3,4.085627764E1 +2.646355000E3,4.393316509E1 +2.646690000E3,4.428892908E1 +2.646958000E3,4.601464396E1 +2.647235000E3,4.300358696E1 +2.647474000E3,4.083829680E1 +2.647758000E3,5.406220971E1 +2.648003000E3,4.253716581E1 +2.648273000E3,4.506680000E1 +2.648514000E3,3.500046728E1 +2.648758000E3,3.537281462E1 +2.649004000E3,5.013819891E1 +2.649251000E3,5.388943830E1 +2.649556000E3,5.656370208E1 +2.649891000E3,5.696480404E1 +2.650216000E3,4.675400561E1 +2.650515000E3,4.179549274E1 +2.650777000E3,4.536624285E1 +2.651084000E3,4.297370528E1 +2.651336000E3,4.376785410E1 +2.651635000E3,3.354560746E1 +2.651881000E3,2.537939319E1 +2.652180000E3,3.168783420E1 +2.652481000E3,4.898553010E1 +2.652737000E3,5.438993966E1 +2.652992000E3,4.963834041E1 +2.653252000E3,4.227369117E1 +2.653502000E3,4.301436765E1 +2.653812000E3,3.649724292E1 +2.654061000E3,4.086211966E1 +2.654320000E3,3.223281741E1 +2.654605000E3,2.807672508E1 +2.654836000E3,2.764825285E1 +2.655100000E3,4.598866982E1 +2.655350000E3,4.383741939E1 +2.655590000E3,4.883555528E1 +2.655837000E3,4.815765811E1 +2.656131000E3,5.047261312E1 +2.656369000E3,5.124829846E1 +2.656626000E3,3.956134092E1 +2.656925000E3,3.503286763E1 +2.657200000E3,3.224209198E1 +2.657447000E3,4.294806319E1 +2.657761000E3,4.898454413E1 +2.658011000E3,5.320780356E1 +2.658286000E3,5.345186604E1 +2.658542000E3,4.849291145E1 +2.658789000E3,5.098648363E1 +2.659034000E3,4.892931203E1 +2.659289000E3,4.580698225E1 +2.659530000E3,3.709695762E1 +2.659834000E3,3.457925551E1 +2.660081000E3,3.855219813E1 +2.660383000E3,3.845534481E1 +2.660628000E3,4.619372518E1 +2.660921000E3,4.848307744E1 +2.661167000E3,4.790880967E1 +2.661464000E3,4.667520128E1 +2.661710000E3,4.098851532E1 +2.662006000E3,4.035468673E1 +2.662245000E3,3.753010710E1 +2.662592000E3,4.792080660E1 +2.662862000E3,4.709835917E1 +2.663123000E3,3.501409506E1 +2.663374000E3,3.240664296E1 +2.663631000E3,4.326696615E1 +2.663874000E3,4.411177933E1 +2.664133000E3,3.936378145E1 +2.664382000E3,3.443614227E1 +2.664648000E3,3.761654306E1 +2.664944000E3,5.164457484E1 +2.665198000E3,2.810669920E1 +2.665512000E3,2.931307063E1 +2.665876000E3,3.108643425E1 +2.666131000E3,3.278101889E1 +2.666439000E3,4.277860150E1 +2.666693000E3,4.213131936E1 +2.667002000E3,3.935849781E1 +2.667259000E3,4.137879880E1 +2.667575000E3,3.790565018E1 +2.667827000E3,3.845274836E1 +2.668153000E3,3.676763670E1 +2.668452000E3,3.751975183E1 +2.668696000E3,3.224848897E1 +2.669023000E3,3.611134142E1 +2.669316000E3,4.467495655E1 +2.669607000E3,4.735906080E1 +2.669885000E3,5.159453510E1 +2.670167000E3,5.321308782E1 +2.670485000E3,5.282242631E1 +2.670747000E3,5.127719277E1 +2.670997000E3,4.902251972E1 +2.671243000E3,4.450532678E1 +2.671540000E3,3.864078148E1 +2.671788000E3,3.720620343E1 +2.672044000E3,4.496142790E1 +2.672357000E3,4.705640535E1 +2.672617000E3,3.890316941E1 +2.672864000E3,4.027639889E1 +2.673159000E3,4.202335245E1 +2.673421000E3,4.285452583E1 +2.673720000E3,3.626679930E1 +2.673964000E3,4.670395357E1 +2.674210000E3,4.915586670E1 +2.674514000E3,5.353785994E1 +2.674811000E3,5.414016767E1 +2.675048000E3,5.591079353E1 +2.675364000E3,3.844031623E1 +2.675661000E3,3.124520008E1 +2.675946000E3,3.566755596E1 +2.676189000E3,3.490423263E1 +2.676498000E3,5.070292882E1 +2.676799000E3,5.356134163E1 +2.677047000E3,5.161634227E1 +2.677305000E3,5.185439004E1 +2.677581000E3,5.315585532E1 +2.677832000E3,4.418578879E1 +2.678087000E3,3.972693415E1 +2.678335000E3,4.338465258E1 +2.678650000E3,5.168404535E1 +2.678934000E3,4.984483773E1 +2.679249000E3,4.977401184E1 +2.679507000E3,5.044345616E1 +2.679823000E3,4.232585634E1 +2.680128000E3,3.026551109E1 +2.680400000E3,3.009656886E1 +2.680660000E3,4.894119824E1 +2.680913000E3,4.712312643E1 +2.681208000E3,4.239602863E1 +2.681477000E3,4.875338950E1 +2.681768000E3,4.887945421E1 +2.682128000E3,4.379352407E1 +2.682394000E3,4.073494394E1 +2.682637000E3,3.685872977E1 +2.682895000E3,2.883047793E1 +2.683163000E3,3.769147996E1 +2.683455000E3,3.713975885E1 +2.683749000E3,4.855681627E1 +2.683994000E3,4.936430656E1 +2.684290000E3,5.303947120E1 +2.684540000E3,5.031092673E1 +2.684833000E3,4.783130186E1 +2.685073000E3,4.898734587E1 +2.685348000E3,4.686166956E1 +2.685598000E3,4.244245178E1 +2.685917000E3,3.872119900E1 +2.686161000E3,4.891396583E1 +2.686434000E3,4.491629365E1 +2.686687000E3,3.588391777E1 +2.686952000E3,3.156965948E1 +2.687206000E3,3.184725563E1 +2.687480000E3,3.153561496E1 +2.687733000E3,3.669659228E1 +2.688049000E3,3.507922771E1 +2.688340000E3,3.251056517E1 +2.688645000E3,4.079174670E1 +2.688915000E3,4.837277005E1 +2.689163000E3,4.669136560E1 +2.689426000E3,3.659115086E1 +2.689751000E3,4.814125321E1 +2.689994000E3,4.721335081E1 +2.690235000E3,5.119773767E1 +2.690471000E3,4.584232122E1 +2.690738000E3,4.687969307E1 +2.691006000E3,4.116197132E1 +2.691312000E3,2.850019915E1 +2.691659000E3,3.175399572E1 +2.691948000E3,3.215115185E1 +2.692197000E3,2.655209633E1 +2.692466000E3,3.136629444E1 +2.692727000E3,2.928762690E1 +2.692976000E3,2.688909217E1 +2.693281000E3,3.350197248E1 +2.693518000E3,3.760267236E1 +2.693776000E3,3.194141055E1 +2.694032000E3,3.113878807E1 +2.694299000E3,2.830606211E1 +2.694602000E3,2.632227285E1 +2.694941000E3,2.736240000E1 +2.695184000E3,3.956118458E1 +2.695488000E3,4.069974415E1 +2.695732000E3,4.498590768E1 +2.696030000E3,3.370199172E1 +2.696300000E3,3.284857688E1 +2.696535000E3,2.919082343E1 +2.696815000E3,3.146626789E1 +2.697056000E3,2.968971947E1 +2.697354000E3,4.116455896E1 +2.697640000E3,5.055341773E1 +2.697888000E3,5.163434474E1 +2.698155000E3,4.792936353E1 +2.698456000E3,4.111753823E1 +2.698732000E3,4.594070701E1 +2.699031000E3,3.204472070E1 +2.699273000E3,2.836668859E1 +2.699578000E3,2.624009297E1 +2.699855000E3,2.719538340E1 +2.700110000E3,2.868563476E1 +2.700399000E3,2.757039916E1 +2.700662000E3,2.546630310E1 +2.700960000E3,2.981844134E1 +2.701310000E3,3.063471239E1 +2.701629000E3,4.014173680E1 +2.701894000E3,3.281157953E1 +2.702206000E3,4.268438101E1 +2.702448000E3,4.272045970E1 +2.702710000E3,4.782744516E1 +2.702984000E3,4.067538265E1 +2.703255000E3,3.821763448E1 +2.703566000E3,3.373237040E1 +2.703865000E3,2.762261654E1 +2.704108000E3,3.058182972E1 +2.704366000E3,4.157303269E1 +2.704695000E3,4.128988216E1 +2.705002000E3,3.725674585E1 +2.705260000E3,3.318881716E1 +2.705544000E3,3.512644750E1 +2.705774000E3,3.012622541E1 +2.706039000E3,3.307868989E1 +2.706297000E3,3.089854998E1 +2.706599000E3,2.870455364E1 +2.706901000E3,2.573473536E1 +2.707155000E3,2.708285982E1 +2.707419000E3,2.641018696E1 +2.707644000E3,2.532685142E1 +2.707945000E3,2.741320006E1 +2.708188000E3,2.764718970E1 +2.708460000E3,3.745935532E1 +2.708711000E3,4.292241509E1 +2.708955000E3,4.431523077E1 +2.709266000E3,3.812245251E1 +2.709534000E3,3.199637282E1 +2.709802000E3,3.030937111E1 +2.710049000E3,3.172341474E1 +2.710303000E3,4.706685853E1 +2.710610000E3,4.372593931E1 +2.710859000E3,4.298246415E1 +2.711196000E3,4.313732995E1 +2.711485000E3,3.646858634E1 +2.711745000E3,3.547356546E1 +2.712003000E3,4.802507202E1 +2.712259000E3,4.666185634E1 +2.712527000E3,4.298723738E1 +2.712813000E3,3.203029787E1 +2.713082000E3,2.721140687E1 +2.713344000E3,3.967881707E1 +2.713594000E3,5.017429445E1 +2.713859000E3,4.690730331E1 +2.714106000E3,4.892140969E1 +2.714475000E3,4.312346900E1 +2.714730000E3,4.926615820E1 +2.714984000E3,4.690558758E1 +2.715298000E3,3.116292546E1 +2.715563000E3,2.731472603E1 +2.715855000E3,3.029992609E1 +2.716160000E3,3.149201904E1 +2.716442000E3,2.826058660E1 +2.716703000E3,2.713282366E1 +2.716957000E3,3.659207256E1 +2.717253000E3,3.982143620E1 +2.717592000E3,4.316888996E1 +2.717851000E3,4.348787554E1 +2.718149000E3,4.336902207E1 +2.718464000E3,4.494305168E1 +2.718765000E3,4.280996114E1 +2.719042000E3,4.083199069E1 +2.719277000E3,3.924180447E1 +2.719573000E3,2.985025677E1 +2.719800000E3,2.924980764E1 +2.720042000E3,2.589394072E1 +2.720346000E3,2.996884267E1 +2.720607000E3,2.951796470E1 +2.720882000E3,2.762273017E1 +2.721181000E3,4.946261833E1 +2.721422000E3,4.848220411E1 +2.721736000E3,4.816357380E1 +2.722001000E3,5.238238407E1 +2.722305000E3,5.586118797E1 +2.722602000E3,5.474108905E1 +2.722856000E3,5.089156984E1 +2.723105000E3,4.900978141E1 +2.723369000E3,5.541376880E1 +2.723666000E3,4.827427134E1 +2.723997000E3,4.802338633E1 +2.724296000E3,3.537215093E1 +2.724548000E3,3.822637167E1 +2.724844000E3,3.388327957E1 +2.725086000E3,3.756611639E1 +2.725338000E3,4.489615211E1 +2.725635000E3,5.048833137E1 +2.725871000E3,4.298428385E1 +2.726174000E3,3.303114009E1 +2.726475000E3,4.527811220E1 +2.726764000E3,4.815487328E1 +2.727017000E3,4.761823346E1 +2.727328000E3,4.180028821E1 +2.727607000E3,4.512936944E1 +2.727849000E3,4.337880786E1 +2.728101000E3,4.031817829E1 +2.728401000E3,3.509684782E1 +2.728650000E3,4.495565250E1 +2.728895000E3,4.157595660E1 +2.729138000E3,5.008202715E1 +2.729381000E3,5.308960545E1 +2.729622000E3,4.943413955E1 +2.729917000E3,4.820467383E1 +2.730234000E3,5.168344618E1 +2.730544000E3,5.128425900E1 +2.730837000E3,5.242528085E1 +2.731075000E3,5.125548047E1 +2.731382000E3,5.027678189E1 +2.731625000E3,4.595108129E1 +2.731917000E3,5.425640288E1 +2.732229000E3,5.493458667E1 +2.732522000E3,5.383738769E1 +2.732781000E3,4.577468908E1 +2.733036000E3,4.877165484E1 +2.733337000E3,5.155317163E1 +2.733582000E3,4.868465804E1 +2.733904000E3,5.094377769E1 +2.734158000E3,4.778052408E1 +2.734485000E3,4.980696312E1 +2.734788000E3,5.229980528E1 +2.735043000E3,4.487473927E1 +2.735323000E3,5.405477376E1 +2.735550000E3,5.095910777E1 +2.735795000E3,4.081340338E1 +2.736110000E3,3.942379743E1 +2.736352000E3,4.377765131E1 +2.736599000E3,4.311237352E1 +2.736822000E3,4.659947655E1 +2.737071000E3,4.430846393E1 +2.737313000E3,4.579154087E1 +2.737577000E3,4.628223866E1 +2.737831000E3,3.937286623E1 +2.738094000E3,3.852847368E1 +2.738336000E3,3.907921933E1 +2.738583000E3,5.112703685E1 +2.738825000E3,4.827754167E1 +2.739100000E3,4.022366081E1 +2.739352000E3,3.342841986E1 +2.739649000E3,3.354947585E1 +2.740003000E3,2.967395260E1 +2.740259000E3,4.724158021E1 +2.740515000E3,4.406232704E1 +2.740781000E3,4.128290785E1 +2.741030000E3,3.766271195E1 +2.741274000E3,3.234308905E1 +2.741542000E3,5.345026714E1 +2.741790000E3,5.189834860E1 +2.742037000E3,4.310520052E1 +2.742373000E3,3.005340200E1 +2.742661000E3,3.957498865E1 +2.742905000E3,4.298992085E1 +2.743235000E3,3.914359224E1 +2.743487000E3,4.665969106E1 +2.743742000E3,4.569837618E1 +2.743989000E3,4.037243126E1 +2.744288000E3,4.393151618E1 +2.744525000E3,4.191552922E1 +2.744830000E3,3.855450094E1 +2.745068000E3,3.137426682E1 +2.745312000E3,3.988970586E1 +2.745595000E3,4.261856210E1 +2.745912000E3,4.545535941E1 +2.746178000E3,3.982007681E1 +2.746515000E3,3.873990925E1 +2.746799000E3,4.024486228E1 +2.747097000E3,3.778822068E1 +2.747346000E3,3.349647091E1 +2.747587000E3,3.949530039E1 +2.747884000E3,4.424971453E1 +2.748182000E3,4.109440717E1 +2.748426000E3,4.429824127E1 +2.748724000E3,3.941870140E1 +2.749014000E3,3.719766140E1 +2.749309000E3,3.407061301E1 +2.749659000E3,3.362708714E1 +2.749929000E3,4.111324363E1 +2.750185000E3,4.275268079E1 +2.750445000E3,5.624172952E1 +2.750726000E3,4.374037489E1 +2.750957000E3,4.189644016E1 +2.751207000E3,3.621210842E1 +2.751519000E3,4.177841495E1 +2.751770000E3,4.048458953E1 +2.752052000E3,3.923884976E1 +2.752303000E3,3.426258793E1 +2.752575000E3,3.252443323E1 +2.752926000E3,3.211416673E1 +2.753222000E3,3.245023971E1 +2.753483000E3,3.266068265E1 +2.753758000E3,4.004662592E1 +2.754054000E3,4.872983792E1 +2.754320000E3,5.041613029E1 +2.754567000E3,4.540589836E1 +2.754814000E3,3.042430240E1 +2.755080000E3,3.072459076E1 +2.755376000E3,3.998104284E1 +2.755642000E3,4.049850263E1 +2.755970000E3,4.294486763E1 +2.756315000E3,4.067196783E1 +2.756573000E3,4.772031632E1 +2.756825000E3,4.988707098E1 +2.757139000E3,4.555538995E1 +2.757388000E3,4.252022698E1 +2.757651000E3,3.810962452E1 +2.757917000E3,3.494795311E1 +2.758159000E3,3.247098224E1 +2.758413000E3,3.588027190E1 +2.758665000E3,3.200494843E1 +2.758920000E3,4.772506231E1 +2.759171000E3,3.775844318E1 +2.759507000E3,3.920116655E1 +2.759772000E3,4.528245497E1 +2.760086000E3,4.240466142E1 +2.760349000E3,4.544544837E1 +2.760652000E3,4.039389797E1 +2.760923000E3,3.896680017E1 +2.761194000E3,4.381534416E1 +2.761436000E3,4.424202471E1 +2.761681000E3,4.737958135E1 +2.761960000E3,4.213672401E1 +2.762194000E3,4.516117441E1 +2.762462000E3,4.279973284E1 +2.762806000E3,3.859577230E1 +2.763061000E3,4.880977241E1 +2.763403000E3,4.365184399E1 +2.763660000E3,3.848143477E1 +2.763932000E3,4.787104427E1 +2.764214000E3,3.823665924E1 +2.764451000E3,3.049392521E1 +2.764732000E3,3.086844430E1 +2.764975000E3,2.587396098E1 +2.765284000E3,3.362049288E1 +2.765536000E3,3.353664382E1 +2.765825000E3,5.140360254E1 +2.766193000E3,5.105178275E1 +2.766449000E3,5.027787452E1 +2.766756000E3,4.961194015E1 +2.766992000E3,4.473604482E1 +2.767290000E3,5.567849424E1 +2.767540000E3,5.366739238E1 +2.767788000E3,5.268444481E1 +2.768092000E3,4.378358357E1 +2.768389000E3,4.285786187E1 +2.768638000E3,3.838737205E1 +2.768928000E3,4.053738598E1 +2.769250000E3,3.914310468E1 +2.769517000E3,3.950994015E1 +2.769781000E3,4.085678781E1 +2.770095000E3,3.706118568E1 +2.770362000E3,3.878826243E1 +2.770640000E3,4.509160576E1 +2.770877000E3,4.395611401E1 +2.771129000E3,3.894826552E1 +2.771368000E3,3.783168139E1 +2.771620000E3,3.074559821E1 +2.771881000E3,4.191911052E1 +2.772136000E3,4.492008577E1 +2.772447000E3,3.666714779E1 +2.772710000E3,4.135207765E1 +2.772994000E3,4.645886813E1 +2.773238000E3,5.078995440E1 +2.773478000E3,5.706152467E1 +2.773725000E3,5.135582573E1 +2.773990000E3,4.900548267E1 +2.774266000E3,5.275962483E1 +2.774567000E3,3.947101760E1 +2.774806000E3,4.078518654E1 +2.775113000E3,4.929998433E1 +2.775417000E3,4.396253608E1 +2.775784000E3,4.382194135E1 +2.776077000E3,4.131860223E1 +2.776341000E3,4.321133953E1 +2.776596000E3,3.942571045E1 +2.776881000E3,5.035254190E1 +2.777176000E3,5.596334670E1 +2.777432000E3,6.003222989E1 +2.777730000E3,5.139953750E1 +2.778036000E3,5.596001036E1 +2.778330000E3,5.632045587E1 +2.778567000E3,5.352711698E1 +2.778873000E3,5.160150080E1 +2.779243000E3,5.407354895E1 +2.779513000E3,5.151192380E1 +2.779810000E3,5.479493680E1 +2.780084000E3,5.006197117E1 +2.780351000E3,5.012247277E1 +2.780644000E3,4.598086802E1 +2.780884000E3,3.959492635E1 +2.781142000E3,3.571624227E1 +2.781421000E3,4.082207018E1 +2.781720000E3,5.162800696E1 +2.781984000E3,5.211692198E1 +2.782250000E3,5.017743125E1 +2.782617000E3,4.685740156E1 +2.782916000E3,4.348825959E1 +2.783213000E3,3.825858224E1 +2.783454000E3,4.923981343E1 +2.783750000E3,5.319160353E1 +2.783992000E3,4.967899375E1 +2.784288000E3,3.952802481E1 +2.784535000E3,3.328379343E1 +2.784779000E3,3.014350405E1 +2.785020000E3,3.405755755E1 +2.785313000E3,4.653255974E1 +2.785639000E3,4.571255084E1 +2.785896000E3,4.212654376E1 +2.786166000E3,4.635178938E1 +2.786421000E3,4.614547408E1 +2.786716000E3,4.279815144E1 +2.787018000E3,3.739201392E1 +2.787261000E3,4.297599275E1 +2.787569000E3,5.279236826E1 +2.787869000E3,4.385267374E1 +2.788181000E3,3.538660905E1 +2.788488000E3,4.283741498E1 +2.788738000E3,3.898018884E1 +2.789079000E3,4.417569536E1 +2.789327000E3,3.821417555E1 +2.789586000E3,4.124587088E1 +2.789850000E3,4.583617377E1 +2.790116000E3,4.758354441E1 +2.790413000E3,4.386951397E1 +2.790662000E3,4.527431896E1 +2.790956000E3,4.454979637E1 +2.791207000E3,4.019280914E1 +2.791465000E3,4.549375778E1 +2.791714000E3,4.076569420E1 +2.791963000E3,3.807465350E1 +2.792293000E3,5.201775254E1 +2.792550000E3,4.217772267E1 +2.792797000E3,5.472035384E1 +2.793107000E3,5.403984906E1 +2.793357000E3,5.591746790E1 +2.793622000E3,5.564159884E1 +2.793875000E3,5.646584479E1 +2.794118000E3,5.185594958E1 +2.794377000E3,4.895735059E1 +2.794636000E3,5.654557288E1 +2.794943000E3,5.012866956E1 +2.795254000E3,4.757016947E1 +2.795528000E3,5.211434220E1 +2.795790000E3,4.452402763E1 +2.796058000E3,4.290214665E1 +2.796307000E3,3.465820610E1 +2.796556000E3,4.339944359E1 +2.796852000E3,4.313164949E1 +2.797091000E3,5.438037991E1 +2.797389000E3,5.514175593E1 +2.797635000E3,4.928848190E1 +2.797924000E3,4.659784940E1 +2.798220000E3,4.998887096E1 +2.798537000E3,4.486399829E1 +2.798842000E3,4.885866840E1 +2.799091000E3,4.635335968E1 +2.799347000E3,4.504358299E1 +2.799594000E3,3.958005741E1 +2.799833000E3,4.827229253E1 +2.800082000E3,4.830536262E1 +2.800388000E3,4.659260793E1 +2.800673000E3,4.111758509E1 +2.800972000E3,4.464305855E1 +2.801233000E3,4.497276151E1 +2.801524000E3,3.374775892E1 +2.801884000E3,3.426238632E1 +2.802202000E3,3.521995684E1 +2.802451000E3,3.181302785E1 +2.802708000E3,2.794884084E1 +2.803019000E3,3.320140571E1 +2.803325000E3,3.478175393E1 +2.803626000E3,3.529465039E1 +2.803932000E3,3.962950189E1 +2.804222000E3,5.725685057E1 +2.804486000E3,5.740119524E1 +2.804784000E3,5.069347451E1 +2.805056000E3,5.047632669E1 +2.805376000E3,5.207930289E1 +2.805626000E3,5.264810014E1 +2.805887000E3,5.288954519E1 +2.806177000E3,4.457356662E1 +2.806431000E3,3.885566564E1 +2.806679000E3,3.768676842E1 +2.806944000E3,3.953483275E1 +2.807192000E3,4.348722722E1 +2.807514000E3,4.091620627E1 +2.807832000E3,4.192587435E1 +2.808086000E3,4.434501723E1 +2.808380000E3,4.393917252E1 +2.808686000E3,4.250763593E1 +2.809001000E3,4.146719312E1 +2.809249000E3,4.084508562E1 +2.809517000E3,4.466153637E1 +2.809817000E3,4.002274614E1 +2.810111000E3,4.310032831E1 +2.810375000E3,4.901386280E1 +2.810661000E3,4.607368963E1 +2.810927000E3,4.387647276E1 +2.811225000E3,5.143943484E1 +2.811469000E3,5.045193234E1 +2.811861000E3,4.363012565E1 +2.812115000E3,4.450854658E1 +2.812371000E3,4.453857946E1 +2.812631000E3,4.628101753E1 +2.812921000E3,4.634691523E1 +2.813212000E3,4.654803531E1 +2.813510000E3,4.718980060E1 +2.813758000E3,4.430765323E1 +2.814051000E3,4.322664022E1 +2.814349000E3,4.450224091E1 +2.814582000E3,4.170367724E1 +2.814868000E3,3.985315953E1 +2.815113000E3,5.280042862E1 +2.815400000E3,4.119993511E1 +2.815662000E3,4.251502783E1 +2.815937000E3,4.221594106E1 +2.816186000E3,4.475181393E1 +2.816425000E3,4.757705666E1 +2.816666000E3,4.971185267E1 +2.816968000E3,4.862141287E1 +2.817211000E3,4.713523003E1 +2.817492000E3,4.541478066E1 +2.817737000E3,4.363493262E1 +2.817996000E3,4.428814895E1 +2.818246000E3,4.395099122E1 +2.818516000E3,4.781334664E1 +2.818773000E3,4.439472962E1 +2.819027000E3,4.768107540E1 +2.819278000E3,4.535748265E1 +2.819523000E3,5.061196572E1 +2.819779000E3,4.816069594E1 +2.820044000E3,4.715573746E1 +2.820374000E3,4.919198579E1 +2.820635000E3,5.486134785E1 +2.820897000E3,4.845922458E1 +2.821173000E3,4.486224636E1 +2.821520000E3,4.543631827E1 +2.821781000E3,4.823449020E1 +2.822049000E3,4.622456265E1 +2.822354000E3,3.467019045E1 +2.822632000E3,3.820707315E1 +2.822892000E3,3.870865044E1 +2.823175000E3,3.526203974E1 +2.823424000E3,3.398332746E1 +2.823673000E3,4.060940798E1 +2.823924000E3,4.531267955E1 +2.824156000E3,4.823172894E1 +2.824426000E3,5.381643572E1 +2.824772000E3,5.219878503E1 +2.825053000E3,4.888255160E1 +2.825277000E3,4.023650802E1 +2.825526000E3,3.467455539E1 +2.825785000E3,3.818404386E1 +2.826078000E3,4.122702652E1 +2.826315000E3,3.713088668E1 +2.826619000E3,4.891468535E1 +2.826912000E3,5.266971981E1 +2.827148000E3,4.991025067E1 +2.827457000E3,5.435242869E1 +2.827718000E3,5.378448717E1 +2.828053000E3,5.171570017E1 +2.828327000E3,5.600593919E1 +2.828581000E3,5.175339102E1 +2.828821000E3,4.567582373E1 +2.829101000E3,3.417267221E1 +2.829337000E3,3.532670702E1 +2.829576000E3,4.323212593E1 +2.829823000E3,3.952189104E1 +2.830096000E3,4.372473758E1 +2.830363000E3,4.288959864E1 +2.830609000E3,3.903893871E1 +2.830954000E3,3.847274859E1 +2.831281000E3,4.911689413E1 +2.831539000E3,5.342672798E1 +2.831798000E3,5.558955965E1 +2.832091000E3,5.519004987E1 +2.832341000E3,5.877942264E1 +2.832589000E3,4.602825434E1 +2.832861000E3,3.380054471E1 +2.833107000E3,3.583644563E1 +2.833403000E3,4.160983164E1 +2.833653000E3,3.903662215E1 +2.833958000E3,3.879412363E1 +2.834222000E3,4.121083607E1 +2.834460000E3,4.235130104E1 +2.834723000E3,5.615135633E1 +2.834993000E3,5.355273371E1 +2.835271000E3,4.896976792E1 +2.835535000E3,5.132324538E1 +2.835792000E3,5.529277110E1 +2.836041000E3,5.163674064E1 +2.836366000E3,4.657927993E1 +2.836613000E3,4.238907241E1 +2.836875000E3,5.376683406E1 +2.837143000E3,5.052269952E1 +2.837398000E3,5.018740192E1 +2.837697000E3,4.680907883E1 +2.837961000E3,4.427452663E1 +2.838227000E3,3.300759096E1 +2.838490000E3,3.639504198E1 +2.838784000E3,4.617517315E1 +2.839084000E3,4.692063960E1 +2.839325000E3,4.445415179E1 +2.839620000E3,4.215561710E1 +2.839863000E3,4.433766229E1 +2.840168000E3,4.210423337E1 +2.840460000E3,3.873922427E1 +2.840768000E3,3.717852459E1 +2.841057000E3,3.957811826E1 +2.841313000E3,3.760389186E1 +2.841638000E3,4.310249633E1 +2.841921000E3,4.813095040E1 +2.842192000E3,4.623131926E1 +2.842444000E3,4.648620260E1 +2.842743000E3,4.620801315E1 +2.843027000E3,4.321069748E1 +2.843281000E3,4.205248893E1 +2.843587000E3,2.653536028E1 +2.843863000E3,2.940344619E1 +2.844270000E3,4.715941302E1 +2.844533000E3,4.512147604E1 +2.844793000E3,4.758865475E1 +2.845051000E3,4.853448129E1 +2.845325000E3,4.647479098E1 +2.845569000E3,4.600966189E1 +2.845842000E3,4.549543262E1 +2.846088000E3,4.262631529E1 +2.846347000E3,4.522394390E1 +2.846652000E3,4.657245211E1 +2.846924000E3,4.554651191E1 +2.847231000E3,4.501421864E1 +2.847609000E3,4.413715050E1 +2.847859000E3,3.641102730E1 +2.848158000E3,2.959594862E1 +2.848409000E3,3.229903797E1 +2.848684000E3,3.716282001E1 +2.848948000E3,4.864280315E1 +2.849195000E3,4.698625872E1 +2.849453000E3,4.475077374E1 +2.849725000E3,4.320130236E1 +2.850029000E3,4.052232702E1 +2.850286000E3,4.987213531E1 +2.850622000E3,4.470574790E1 +2.850953000E3,4.746715529E1 +2.851224000E3,4.817674396E1 +2.851475000E3,4.755384271E1 +2.851775000E3,4.606857790E1 +2.852037000E3,4.602549066E1 +2.852280000E3,4.107899882E1 +2.852578000E3,4.602936757E1 +2.852832000E3,4.594357604E1 +2.853123000E3,4.132874601E1 +2.853424000E3,3.891402985E1 +2.853676000E3,3.210431116E1 +2.854034000E3,4.148325967E1 +2.854336000E3,4.539420759E1 +2.854629000E3,3.813311910E1 +2.854857000E3,3.204826654E1 +2.855103000E3,4.042825728E1 +2.855348000E3,3.781799437E1 +2.855635000E3,3.485312778E1 +2.855901000E3,3.176423587E1 +2.856194000E3,3.286644404E1 +2.856446000E3,3.601261840E1 +2.856741000E3,3.056779431E1 +2.856990000E3,2.876904683E1 +2.857247000E3,2.336161379E1 +2.857525000E3,5.319777865E1 +2.857765000E3,4.924210585E1 +2.858030000E3,4.161506516E1 +2.858287000E3,3.471025819E1 +2.858592000E3,2.954431085E1 +2.858878000E3,3.551304021E1 +2.859146000E3,4.056554733E1 +2.859438000E3,4.716772205E1 +2.859749000E3,4.728214145E1 +2.860112000E3,4.333221553E1 +2.860355000E3,3.970290127E1 +2.860627000E3,4.675070996E1 +2.860922000E3,5.292655838E1 +2.861168000E3,5.560528000E1 +2.861448000E3,5.155203362E1 +2.861684000E3,4.854372910E1 +2.861981000E3,5.166225265E1 +2.862226000E3,5.239758268E1 +2.862536000E3,4.880079262E1 +2.862801000E3,5.860724491E1 +2.863049000E3,5.487085904E1 +2.863366000E3,4.477307493E1 +2.863622000E3,4.809216762E1 +2.863923000E3,4.128779228E1 +2.864180000E3,4.039902121E1 +2.864473000E3,3.763315716E1 +2.864758000E3,3.836830031E1 +2.865072000E3,3.562217561E1 +2.865375000E3,4.251016575E1 +2.865631000E3,3.959478231E1 +2.865894000E3,3.906491963E1 +2.866161000E3,3.169567809E1 +2.866409000E3,4.180907280E1 +2.866769000E3,5.009501966E1 +2.867095000E3,4.485052737E1 +2.867377000E3,4.543449817E1 +2.867634000E3,4.558186247E1 +2.867912000E3,3.310648260E1 +2.868160000E3,3.368680580E1 +2.868403000E3,3.259924908E1 +2.868652000E3,3.468868920E1 +2.868945000E3,3.811295096E1 +2.869214000E3,3.680532391E1 +2.869523000E3,4.480088276E1 +2.869800000E3,4.321197878E1 +2.870149000E3,3.870196995E1 +2.870426000E3,4.501549736E1 +2.870686000E3,3.869046251E1 +2.870998000E3,5.116138397E1 +2.871259000E3,4.565952095E1 +2.871545000E3,4.044036430E1 +2.871835000E3,3.776423584E1 +2.872146000E3,4.283314388E1 +2.872428000E3,4.822150076E1 +2.872666000E3,4.609488251E1 +2.872966000E3,4.199842198E1 +2.873258000E3,4.199452970E1 +2.873557000E3,4.094164548E1 +2.873868000E3,3.451929232E1 +2.874146000E3,3.725700957E1 +2.874378000E3,3.820854143E1 +2.874632000E3,3.261818797E1 +2.874949000E3,4.229639001E1 +2.875219000E3,4.314663650E1 +2.875496000E3,4.030472415E1 +2.875772000E3,3.740362597E1 +2.876082000E3,3.770704299E1 +2.876334000E3,4.016521241E1 +2.876600000E3,4.155568881E1 +2.876855000E3,3.864643482E1 +2.877164000E3,3.358142820E1 +2.877430000E3,2.988882280E1 +2.877698000E3,4.233125756E1 +2.877954000E3,4.245249096E1 +2.878273000E3,3.619646633E1 +2.878541000E3,3.199868066E1 +2.878801000E3,4.546979293E1 +2.879062000E3,5.523869784E1 +2.879342000E3,5.605267417E1 +2.879584000E3,5.653411529E1 +2.879928000E3,4.626290707E1 +2.880202000E3,3.540012043E1 +2.880447000E3,3.620700172E1 +2.880691000E3,2.922036878E1 +2.880938000E3,3.659816429E1 +2.881251000E3,4.145147882E1 +2.881527000E3,3.894444603E1 +2.881851000E3,3.741315407E1 +2.882112000E3,4.094962867E1 +2.882373000E3,4.333353585E1 +2.882625000E3,4.557565518E1 +2.882879000E3,4.308396997E1 +2.883145000E3,4.097722416E1 +2.883416000E3,3.927850137E1 +2.883669000E3,3.223716221E1 +2.883941000E3,3.004581442E1 +2.884209000E3,3.765685263E1 +2.884466000E3,3.878810543E1 +2.884718000E3,2.988953340E1 +2.884967000E3,3.346960294E1 +2.885221000E3,3.799647420E1 +2.885537000E3,3.116842616E1 +2.885796000E3,3.671552801E1 +2.886084000E3,4.459898232E1 +2.886404000E3,4.708370738E1 +2.886677000E3,5.036035843E1 +2.886979000E3,4.113513329E1 +2.887251000E3,3.503458684E1 +2.887528000E3,3.462090732E1 +2.887785000E3,4.001717165E1 +2.888037000E3,3.538133603E1 +2.888296000E3,3.662805649E1 +2.888547000E3,4.263542947E1 +2.888820000E3,4.431895872E1 +2.889079000E3,4.300413574E1 +2.889340000E3,4.173317530E1 +2.889582000E3,4.288275032E1 +2.889932000E3,3.944773526E1 +2.890197000E3,3.214266541E1 +2.890503000E3,3.060588708E1 +2.890777000E3,3.296322494E1 +2.891017000E3,3.394251803E1 +2.891320000E3,3.208741950E1 +2.891570000E3,3.441770910E1 +2.891849000E3,3.368561294E1 +2.892087000E3,3.475967611E1 +2.892337000E3,3.740055420E1 +2.892635000E3,3.542355307E1 +2.892981000E3,3.105741683E1 +2.893247000E3,3.245614761E1 +2.893513000E3,4.142391644E1 +2.893779000E3,4.497461971E1 +2.894029000E3,4.653178389E1 +2.894282000E3,4.703576342E1 +2.894540000E3,4.751169602E1 +2.894805000E3,4.201422178E1 +2.895062000E3,4.370261317E1 +2.895310000E3,4.660906406E1 +2.895596000E3,4.633159753E1 +2.895865000E3,4.381116332E1 +2.896155000E3,4.368523912E1 +2.896405000E3,4.747051902E1 +2.896651000E3,4.222577444E1 +2.896905000E3,4.572633660E1 +2.897184000E3,5.203776089E1 +2.897450000E3,5.010843836E1 +2.897744000E3,4.910530865E1 +2.898022000E3,4.664859833E1 +2.898308000E3,3.985336775E1 +2.898564000E3,3.683403533E1 +2.898812000E3,4.284820320E1 +2.899091000E3,4.286036404E1 +2.899396000E3,5.224070654E1 +2.899753000E3,4.568546748E1 +2.900018000E3,5.586433220E1 +2.900278000E3,4.514230837E1 +2.900559000E3,3.853422420E1 +2.900865000E3,3.299777990E1 +2.901139000E3,3.594596453E1 +2.901415000E3,2.896001699E1 +2.901650000E3,2.556794162E1 +2.901937000E3,2.525773120E1 +2.902206000E3,3.138035436E1 +2.902457000E3,3.725731802E1 +2.902816000E3,3.600302530E1 +2.903095000E3,3.476106384E1 +2.903340000E3,3.325569458E1 +2.903600000E3,3.217545002E1 +2.903858000E3,2.994578711E1 +2.904108000E3,3.277965280E1 +2.904372000E3,4.013450695E1 +2.904627000E3,3.103730297E1 +2.904913000E3,4.187502355E1 +2.905174000E3,3.591627686E1 +2.905452000E3,3.067277870E1 +2.905743000E3,2.813597523E1 +2.906004000E3,2.760542404E1 +2.906321000E3,3.327793113E1 +2.906579000E3,4.111963776E1 +2.906835000E3,4.309802180E1 +2.907113000E3,2.749088524E1 +2.907354000E3,2.269523459E1 +2.907657000E3,3.631225289E1 +2.907901000E3,4.146405590E1 +2.908156000E3,3.785670954E1 +2.908403000E3,4.498664409E1 +2.908675000E3,4.174614917E1 +2.908932000E3,4.632262643E1 +2.909189000E3,3.569839459E1 +2.909522000E3,4.635385444E1 +2.909802000E3,4.337190367E1 +2.910035000E3,3.796960383E1 +2.910287000E3,4.151951269E1 +2.910538000E3,4.245940710E1 +2.910795000E3,4.268454470E1 +2.911045000E3,4.280139929E1 +2.911335000E3,3.861780445E1 +2.911584000E3,4.028221299E1 +2.911885000E3,3.934408626E1 +2.912139000E3,3.091195323E1 +2.912386000E3,2.709027446E1 +2.912622000E3,2.721294148E1 +2.912915000E3,3.169063213E1 +2.913196000E3,3.663766462E1 +2.913461000E3,3.582442105E1 +2.913744000E3,2.742218375E1 +2.913990000E3,3.432349666E1 +2.914297000E3,4.586386591E1 +2.914575000E3,4.813383402E1 +2.914888000E3,5.016441505E1 +2.915190000E3,4.132593749E1 +2.915481000E3,3.992883324E1 +2.915827000E3,3.713218942E1 +2.916087000E3,4.862036940E1 +2.916351000E3,4.985137398E1 +2.916622000E3,5.126616609E1 +2.916881000E3,4.180876614E1 +2.917157000E3,4.057128207E1 +2.917418000E3,3.994520906E1 +2.917681000E3,3.719846748E1 +2.917964000E3,4.377214072E1 +2.918264000E3,4.081140664E1 +2.918518000E3,4.149712935E1 +2.918784000E3,3.965801174E1 +2.919127000E3,3.499332266E1 +2.919415000E3,3.454976163E1 +2.919745000E3,3.801205804E1 +2.920003000E3,4.266330834E1 +2.920244000E3,3.704497233E1 +2.920548000E3,3.869800412E1 +2.920840000E3,3.880762608E1 +2.921081000E3,3.967826348E1 +2.921325000E3,4.387098551E1 +2.921573000E3,3.795523909E1 +2.921876000E3,3.884773193E1 +2.922122000E3,3.949919351E1 +2.922481000E3,3.549368996E1 +2.922774000E3,5.176437750E1 +2.923023000E3,4.673969779E1 +2.923306000E3,3.729614967E1 +2.923573000E3,3.557242251E1 +2.923880000E3,5.351861504E1 +2.924155000E3,5.486661937E1 +2.924424000E3,5.693150230E1 +2.924735000E3,4.225245527E1 +2.924988000E3,4.082554353E1 +2.925252000E3,3.807826598E1 +2.925573000E3,3.587807510E1 +2.925935000E3,4.290242494E1 +2.926237000E3,3.960438869E1 +2.926496000E3,3.732088357E1 +2.926751000E3,3.216321546E1 +2.926991000E3,3.001846960E1 +2.927295000E3,3.634949804E1 +2.927531000E3,3.127042454E1 +2.927829000E3,3.158500209E1 +2.928073000E3,2.815993792E1 +2.928370000E3,2.793102526E1 +2.928613000E3,2.468786691E1 +2.928943000E3,2.345175993E1 +2.929256000E3,2.908559709E1 +2.929497000E3,2.580950455E1 +2.929819000E3,2.871707976E1 +2.930114000E3,2.977851279E1 +2.930374000E3,4.220437998E1 +2.930636000E3,3.122152770E1 +2.930945000E3,3.902308439E1 +2.931227000E3,3.648582434E1 +2.931474000E3,4.774090674E1 +2.931717000E3,4.487624905E1 +2.931963000E3,4.620728265E1 +2.932258000E3,4.011602626E1 +2.932585000E3,4.011469989E1 +2.932871000E3,4.531107143E1 +2.933117000E3,4.299757904E1 +2.933366000E3,4.255561828E1 +2.933662000E3,4.180851663E1 +2.933899000E3,3.354142728E1 +2.934139000E3,4.061788576E1 +2.934435000E3,3.190428864E1 +2.934678000E3,3.136545948E1 +2.934975000E3,3.172564299E1 +2.935227000E3,3.538616066E1 +2.935577000E3,3.227761247E1 +2.935826000E3,3.587578035E1 +2.936132000E3,2.830690319E1 +2.936391000E3,2.983281120E1 +2.936636000E3,3.198482114E1 +2.936936000E3,4.529436692E1 +2.937191000E3,3.904726622E1 +2.937498000E3,4.546792713E1 +2.937790000E3,4.178984789E1 +2.938055000E3,3.901507008E1 +2.938332000E3,3.530528642E1 +2.938634000E3,3.766035689E1 +2.939060000E3,5.595745424E1 +2.939318000E3,5.800941557E1 +2.939576000E3,5.061871726E1 +2.939836000E3,6.017617924E1 +2.940124000E3,5.889680612E1 +2.940380000E3,5.553527141E1 +2.940631000E3,4.982924060E1 +2.940889000E3,5.386899946E1 +2.941183000E3,5.511436312E1 +2.941477000E3,5.474658637E1 +2.941736000E3,5.669903896E1 +2.941985000E3,5.352207307E1 +2.942302000E3,5.089540084E1 +2.942556000E3,5.163069551E1 +2.942811000E3,4.946827448E1 +2.943144000E3,4.292332560E1 +2.943386000E3,4.769421745E1 +2.943625000E3,4.741300910E1 +2.943936000E3,4.918473310E1 +2.944182000E3,4.358732286E1 +2.944456000E3,4.338106770E1 +2.944722000E3,5.302068646E1 +2.945006000E3,4.800501219E1 +2.945370000E3,4.445792428E1 +2.945619000E3,3.768400599E1 +2.945867000E3,3.829540629E1 +2.946159000E3,3.766669508E1 +2.946411000E3,4.016839261E1 +2.946712000E3,4.041724233E1 +2.947009000E3,4.012217251E1 +2.947323000E3,3.568820570E1 +2.947568000E3,3.690839296E1 +2.947818000E3,4.813137033E1 +2.948084000E3,5.325274156E1 +2.948341000E3,5.892514859E1 +2.948730000E3,4.314585435E1 +2.948980000E3,4.049194134E1 +2.949257000E3,4.522053034E1 +2.949515000E3,4.263261915E1 +2.949826000E3,5.159034358E1 +2.950126000E3,4.094053529E1 +2.950370000E3,4.144504964E1 +2.950613000E3,4.584689520E1 +2.950933000E3,3.986259871E1 +2.951211000E3,5.835616238E1 +2.951492000E3,4.865922153E1 +2.951773000E3,4.646806952E1 +2.952049000E3,5.501145746E1 +2.952349000E3,5.395560549E1 +2.952606000E3,5.094776028E1 +2.952859000E3,5.987933082E1 +2.953123000E3,5.553863596E1 +2.953365000E3,6.056471643E1 +2.953626000E3,5.705129962E1 +2.953881000E3,5.620457969E1 +2.954143000E3,4.633104773E1 +2.954403000E3,4.542785483E1 +2.954666000E3,4.357363747E1 +2.954925000E3,5.905995366E1 +2.955255000E3,5.325307727E1 +2.955500000E3,6.730464031E1 +2.955795000E3,6.362836082E1 +2.956030000E3,6.057596417E1 +2.956332000E3,6.813918985E1 +2.956573000E3,6.403678903E1 +2.956871000E3,6.230635205E1 +2.957135000E3,6.746671531E1 +2.957401000E3,6.427695804E1 +2.957673000E3,5.206458526E1 +2.957933000E3,5.261265827E1 +2.958182000E3,4.877242183E1 +2.958552000E3,6.627461000E1 +2.958808000E3,6.741673158E1 +2.959062000E3,6.597614354E1 +2.959304000E3,6.540552328E1 +2.959551000E3,6.528289091E1 +2.959864000E3,5.830061674E1 +2.960121000E3,5.985112812E1 +2.960428000E3,6.090568068E1 +2.960720000E3,6.807446854E1 +2.960985000E3,6.930722199E1 +2.961226000E3,6.386100217E1 +2.961579000E3,6.028451745E1 +2.961849000E3,6.477814340E1 +2.962132000E3,6.837046944E1 +2.962373000E3,6.647209363E1 +2.962660000E3,6.694202205E1 +2.962967000E3,6.648756695E1 +2.963231000E3,6.482625001E1 +2.963518000E3,7.095796361E1 +2.963775000E3,6.454417662E1 +2.964062000E3,6.533171518E1 +2.964339000E3,6.471819922E1 +2.964629000E3,5.679367810E1 +2.964962000E3,5.573913208E1 +2.965271000E3,6.251351498E1 +2.965502000E3,6.071427502E1 +2.965745000E3,6.212696498E1 +2.966049000E3,5.601947939E1 +2.966292000E3,5.543203731E1 +2.966544000E3,5.440105204E1 +2.966807000E3,5.169354717E1 +2.967114000E3,5.098574914E1 +2.967354000E3,4.778774527E1 +2.967603000E3,5.527018336E1 +2.967874000E3,5.069142516E1 +2.968220000E3,5.540354927E1 +2.968470000E3,5.388190573E1 +2.968725000E3,5.648678631E1 +2.968994000E3,6.195289166E1 +2.969259000E3,5.924073062E1 +2.969526000E3,5.554902217E1 +2.969797000E3,6.073047002E1 +2.970049000E3,5.750580172E1 +2.970375000E3,6.205206850E1 +2.970685000E3,5.892672487E1 +2.971008000E3,5.603539479E1 +2.971306000E3,5.380141597E1 +2.971609000E3,6.182570937E1 +2.971860000E3,5.755792598E1 +2.972120000E3,7.094637252E1 +2.972374000E3,7.220321333E1 +2.972688000E3,6.074903881E1 +2.972946000E3,5.132390204E1 +2.973203000E3,5.555176793E1 +2.973482000E3,5.082163203E1 +2.973746000E3,6.668022761E1 +2.974024000E3,6.951681150E1 +2.974257000E3,6.170353739E1 +2.974507000E3,6.191784425E1 +2.974845000E3,6.249884739E1 +2.975129000E3,6.139715498E1 +2.975385000E3,5.458109058E1 +2.975684000E3,6.285593412E1 +2.975925000E3,6.801445640E1 +2.976223000E3,6.762358149E1 +2.976454000E3,6.007212586E1 +2.976698000E3,6.176376027E1 +2.976998000E3,5.489351528E1 +2.977244000E3,6.419682450E1 +2.977544000E3,6.335879864E1 +2.977813000E3,6.346249627E1 +2.978071000E3,6.122721977E1 +2.978303000E3,6.269343112E1 +2.978564000E3,5.719207644E1 +2.978818000E3,6.209398004E1 +2.979085000E3,6.570545323E1 +2.979335000E3,6.443300698E1 +2.979582000E3,6.395479352E1 +2.979841000E3,6.285971298E1 +2.980091000E3,6.452411240E1 +2.980337000E3,6.648403811E1 +2.980638000E3,6.146510082E1 +2.980898000E3,6.178604521E1 +2.981191000E3,5.906416732E1 +2.981418000E3,6.139524316E1 +2.981668000E3,6.754933795E1 +2.981958000E3,5.804633278E1 +2.982221000E3,5.544285219E1 +2.982480000E3,5.252390700E1 +2.982741000E3,5.442974682E1 +2.983009000E3,5.886662164E1 +2.983270000E3,6.039421332E1 +2.983532000E3,5.984826425E1 +2.983780000E3,6.038747451E1 +2.984020000E3,5.836799318E1 +2.984266000E3,6.011457774E1 +2.984654000E3,6.086793857E1 +2.984928000E3,6.104684994E1 +2.985246000E3,6.081085188E1 +2.985504000E3,6.338602633E1 +2.985771000E3,6.224702903E1 +2.986040000E3,5.771788346E1 +2.986351000E3,5.832375863E1 +2.986657000E3,6.179808645E1 +2.986893000E3,6.074067698E1 +2.987188000E3,5.763905723E1 +2.987459000E3,5.411975455E1 +2.987698000E3,5.609082395E1 +2.988020000E3,5.838775534E1 +2.988261000E3,5.545934196E1 +2.988564000E3,5.818253650E1 +2.988803000E3,5.693365858E1 +2.989084000E3,5.747877452E1 +2.989394000E3,6.108654481E1 +2.989646000E3,6.109521888E1 +2.989952000E3,5.453216708E1 +2.990235000E3,5.325056065E1 +2.990530000E3,5.226229633E1 +2.990796000E3,5.566734434E1 +2.991153000E3,5.983192138E1 +2.991409000E3,5.902282422E1 +2.991712000E3,6.553978750E1 +2.991962000E3,6.323109208E1 +2.992210000E3,6.430699278E1 +2.992477000E3,6.439502996E1 +2.992769000E3,5.882379749E1 +2.993024000E3,7.076998945E1 +2.993317000E3,6.710088514E1 +2.993554000E3,6.332152683E1 +2.993846000E3,6.013348006E1 +2.994081000E3,6.492156154E1 +2.994361000E3,6.054189638E1 +2.994671000E3,5.878685209E1 +2.994911000E3,6.363988355E1 +2.995218000E3,6.266127576E1 +2.995513000E3,6.231860976E1 +2.995750000E3,6.770663238E1 +2.996056000E3,6.411706706E1 +2.996346000E3,6.607053327E1 +2.996592000E3,6.231837938E1 +2.996884000E3,6.235557028E1 +2.997130000E3,6.626149607E1 +2.997386000E3,6.897456616E1 +2.997721000E3,6.896820400E1 +2.997984000E3,5.708709076E1 +2.998260000E3,5.465136518E1 +2.998532000E3,6.136090841E1 +2.998792000E3,6.427324700E1 +2.999047000E3,5.922924051E1 +2.999308000E3,5.964993479E1 +2.999619000E3,5.937495043E1 +2.999910000E3,6.345321013E1 +3.000196000E3,6.558504608E1 +3.000438000E3,6.566442906E1 +3.000721000E3,6.596782674E1 +3.001048000E3,6.493210478E1 +3.001299000E3,6.778071085E1 +3.001554000E3,5.810398860E1 +3.001834000E3,6.461256831E1 +3.002084000E3,5.637103240E1 +3.002332000E3,6.244497501E1 +3.002633000E3,5.749162406E1 +3.002980000E3,6.268391580E1 +3.003246000E3,6.122193913E1 +3.003572000E3,6.467185898E1 +3.003877000E3,6.239318427E1 +3.004266000E3,6.708558966E1 +3.004573000E3,6.293492178E1 +3.004871000E3,6.169168265E1 +3.005129000E3,5.944912128E1 +3.005404000E3,5.631628075E1 +3.005704000E3,6.080609102E1 +3.005964000E3,6.424565764E1 +3.006250000E3,6.447415860E1 +3.006481000E3,6.606824769E1 +3.006756000E3,6.337387069E1 +3.007004000E3,6.294291386E1 +3.007286000E3,6.430484746E1 +3.007612000E3,6.091848593E1 +3.007867000E3,6.343837854E1 +3.008169000E3,5.978702761E1 +3.008432000E3,5.965865421E1 +3.008675000E3,5.540362761E1 +3.008918000E3,5.443572137E1 +3.009202000E3,6.171389250E1 +3.009446000E3,6.487192568E1 +3.009738000E3,5.958143908E1 +3.009983000E3,6.189834719E1 +3.010232000E3,5.752745917E1 +3.010489000E3,6.339873723E1 +3.010846000E3,6.127984243E1 +3.011144000E3,6.065194767E1 +3.011387000E3,6.253646864E1 +3.011646000E3,6.179753794E1 +3.011925000E3,6.231808205E1 +3.012153000E3,6.101579519E1 +3.012442000E3,5.876502421E1 +3.012737000E3,5.809905793E1 +3.013015000E3,5.695141293E1 +3.013301000E3,5.973139928E1 +3.013577000E3,6.007240820E1 +3.013839000E3,7.136453087E1 +3.014063000E3,7.173892024E1 +3.014315000E3,6.885425335E1 +3.014559000E3,6.110376355E1 +3.014808000E3,6.296723224E1 +3.015075000E3,6.021879294E1 +3.015327000E3,6.012811489E1 +3.015577000E3,6.282613373E1 +3.015850000E3,6.884549735E1 +3.016115000E3,6.913958233E1 +3.016397000E3,6.608409337E1 +3.016648000E3,6.437779633E1 +3.016896000E3,6.412579817E1 +3.017253000E3,6.408373459E1 +3.017500000E3,6.487828946E1 +3.017743000E3,6.281964754E1 +3.018003000E3,6.153697843E1 +3.018258000E3,6.503307442E1 +3.018512000E3,6.508021131E1 +3.018791000E3,5.910017780E1 +3.019028000E3,5.757469918E1 +3.019325000E3,5.762978005E1 +3.019573000E3,5.366611226E1 +3.019824000E3,5.708763529E1 +3.020086000E3,5.488621207E1 +3.020437000E3,5.826722905E1 +3.020695000E3,5.951373108E1 +3.020968000E3,6.130623452E1 +3.021217000E3,6.025771329E1 +3.021490000E3,5.280103891E1 +3.021737000E3,6.123009986E1 +3.022037000E3,6.404958762E1 +3.022328000E3,6.469373641E1 +3.022599000E3,6.283727611E1 +3.022840000E3,6.248869497E1 +3.023123000E3,6.767270030E1 +3.023363000E3,6.436289402E1 +3.023706000E3,6.007121161E1 +3.023992000E3,6.067397941E1 +3.024255000E3,6.005092329E1 +3.024513000E3,6.146229561E1 +3.024803000E3,6.214304530E1 +3.025060000E3,6.107977952E1 +3.025317000E3,6.268440106E1 +3.025560000E3,5.744048190E1 +3.025823000E3,6.080102592E1 +3.026092000E3,6.359394744E1 +3.026384000E3,6.219604097E1 +3.026685000E3,6.296073955E1 +3.026912000E3,6.243574530E1 +3.027190000E3,6.540426031E1 +3.027426000E3,7.038009166E1 +3.027684000E3,7.133800291E1 +3.027943000E3,6.847497315E1 +3.028214000E3,7.049817235E1 +3.028486000E3,6.555713643E1 +3.028748000E3,6.762942526E1 +3.029008000E3,6.780082040E1 +3.029264000E3,6.644646205E1 +3.029533000E3,7.066497540E1 +3.029800000E3,6.700863421E1 +3.030174000E3,6.263767412E1 +3.030459000E3,5.937975562E1 +3.030697000E3,6.189133018E1 +3.030958000E3,6.479748496E1 +3.031218000E3,6.070421224E1 +3.031488000E3,5.567295684E1 +3.031754000E3,6.162939414E1 +3.032026000E3,6.462556380E1 +3.032293000E3,6.300561819E1 +3.032553000E3,6.320528504E1 +3.032852000E3,6.205536878E1 +3.033102000E3,7.179598993E1 +3.033490000E3,6.907149718E1 +3.033750000E3,6.110443799E1 +3.034008000E3,5.743025653E1 +3.034257000E3,5.714646515E1 +3.034505000E3,6.193634179E1 +3.034762000E3,6.511685208E1 +3.035034000E3,6.647840023E1 +3.035277000E3,6.637602928E1 +3.035534000E3,6.208743290E1 +3.035873000E3,6.158502662E1 +3.036127000E3,6.138896352E1 +3.036392000E3,5.988342330E1 +3.036737000E3,5.834272912E1 +3.036998000E3,6.504474047E1 +3.037253000E3,5.801637483E1 +3.037569000E3,6.208073459E1 +3.037831000E3,6.555093843E1 +3.038084000E3,6.686352963E1 +3.038356000E3,6.398821865E1 +3.038638000E3,6.053541888E1 +3.038927000E3,5.509282051E1 +3.039228000E3,6.213274835E1 +3.039473000E3,6.149105368E1 +3.039745000E3,6.097957376E1 +3.040056000E3,6.313145073E1 +3.040300000E3,6.749857058E1 +3.040549000E3,6.031561589E1 +3.040852000E3,5.991948868E1 +3.041110000E3,6.228314687E1 +3.041358000E3,6.281493679E1 +3.041621000E3,6.031124820E1 +3.041926000E3,6.035954468E1 +3.042177000E3,6.230627050E1 +3.042448000E3,5.381586458E1 +3.042741000E3,6.032611045E1 +3.043026000E3,5.796046788E1 +3.043304000E3,6.286261594E1 +3.043605000E3,6.188894569E1 +3.043848000E3,6.196336480E1 +3.044091000E3,6.506902622E1 +3.044345000E3,6.547913264E1 +3.044589000E3,6.701681380E1 +3.044849000E3,6.398074775E1 +3.045095000E3,6.102355933E1 +3.045350000E3,6.546609328E1 +3.045598000E3,6.626677347E1 +3.045845000E3,6.212155235E1 +3.046098000E3,6.475032486E1 +3.046433000E3,6.469401418E1 +3.046698000E3,6.335899573E1 +3.046970000E3,5.799459631E1 +3.047267000E3,5.777430210E1 +3.047527000E3,6.228044606E1 +3.047785000E3,5.521572273E1 +3.048044000E3,5.312506195E1 +3.048316000E3,5.877400717E1 +3.048592000E3,6.239358597E1 +3.048842000E3,6.019315355E1 +3.049164000E3,5.944515023E1 +3.049418000E3,6.571719967E1 +3.049752000E3,5.906077781E1 +3.050005000E3,6.269931225E1 +3.050242000E3,6.329267329E1 +3.050532000E3,6.094692628E1 +3.050797000E3,6.137608503E1 +3.051055000E3,6.019630450E1 +3.051299000E3,5.959056092E1 +3.051551000E3,6.195653625E1 +3.051802000E3,5.997942431E1 +3.052044000E3,6.071988649E1 +3.052348000E3,6.146559433E1 +3.052605000E3,6.320542640E1 +3.052903000E3,6.301314639E1 +3.053133000E3,6.491013087E1 +3.053386000E3,5.374424399E1 +3.053632000E3,5.337930652E1 +3.053925000E3,5.830420592E1 +3.054167000E3,5.827724976E1 +3.054414000E3,5.413373264E1 +3.054713000E3,5.438904566E1 +3.054952000E3,5.478972153E1 +3.055245000E3,6.026125791E1 +3.055545000E3,6.377000784E1 +3.055792000E3,6.273059884E1 +3.056116000E3,6.164463909E1 +3.056426000E3,6.310484015E1 +3.056665000E3,6.191865333E1 +3.056974000E3,6.044005004E1 +3.057225000E3,5.723160495E1 +3.057532000E3,6.482171923E1 +3.057799000E3,6.373654624E1 +3.058097000E3,6.579319958E1 +3.058333000E3,6.717439766E1 +3.058632000E3,6.244987186E1 +3.058874000E3,5.911459441E1 +3.059119000E3,6.246625617E1 +3.059514000E3,6.061929027E1 +3.059786000E3,6.141894857E1 +3.060044000E3,6.531006136E1 +3.060311000E3,6.745420282E1 +3.060564000E3,6.305040539E1 +3.060809000E3,6.250223063E1 +3.061063000E3,5.984183740E1 +3.061365000E3,6.201500936E1 +3.061610000E3,6.171968159E1 +3.061853000E3,5.636652524E1 +3.062137000E3,5.937450988E1 +3.062405000E3,5.424162977E1 +3.062724000E3,5.577353705E1 +3.062968000E3,6.265208868E1 +3.063225000E3,6.754657095E1 +3.063470000E3,6.259832443E1 +3.063731000E3,5.846954403E1 +3.063975000E3,5.735719718E1 +3.064220000E3,5.614657426E1 +3.064460000E3,5.493678071E1 +3.064711000E3,6.175770153E1 +3.064961000E3,6.502893325E1 +3.065266000E3,6.372557142E1 +3.065562000E3,6.165604672E1 +3.065921000E3,6.202265536E1 +3.066181000E3,5.894659424E1 +3.066427000E3,5.516515279E1 +3.066669000E3,5.227763917E1 +3.066911000E3,5.331294555E1 +3.067166000E3,5.535383534E1 +3.067460000E3,5.490405248E1 +3.067721000E3,5.927902794E1 +3.068030000E3,6.001209348E1 +3.068288000E3,5.925707402E1 +3.068553000E3,6.116769528E1 +3.068848000E3,5.907075037E1 +3.069160000E3,5.402384091E1 +3.069467000E3,6.078433547E1 +3.069706000E3,6.064305090E1 +3.069991000E3,6.099922555E1 +3.070247000E3,6.081028216E1 +3.070500000E3,6.857342881E1 +3.070795000E3,6.830085683E1 +3.071035000E3,7.092929468E1 +3.071334000E3,6.670654987E1 +3.071580000E3,6.198358410E1 +3.071845000E3,6.029427505E1 +3.072216000E3,6.271100503E1 +3.072476000E3,6.548403896E1 +3.072709000E3,6.655140024E1 +3.072958000E3,6.872933885E1 +3.073221000E3,6.840034062E1 +3.073524000E3,6.189262665E1 +3.073801000E3,6.315516618E1 +3.074029000E3,6.431689152E1 +3.074282000E3,7.008635825E1 +3.074531000E3,6.529488526E1 +3.074781000E3,5.362885622E1 +3.075079000E3,6.174622467E1 +3.075321000E3,6.106059522E1 +3.075569000E3,6.727558853E1 +3.075841000E3,6.068477373E1 +3.076089000E3,6.224550385E1 +3.076358000E3,6.049387981E1 +3.076618000E3,5.554290122E1 +3.076868000E3,5.232623619E1 +3.077136000E3,5.715980006E1 +3.077434000E3,6.112308912E1 +3.077738000E3,5.964598426E1 +3.077997000E3,5.774993649E1 +3.078301000E3,5.930552673E1 +3.078632000E3,6.204668908E1 +3.078903000E3,6.135182684E1 +3.079234000E3,6.010535577E1 +3.079530000E3,5.612975229E1 +3.079846000E3,5.894789721E1 +3.080130000E3,6.424282153E1 +3.080395000E3,6.696093787E1 +3.080696000E3,5.929656512E1 +3.080931000E3,5.577162965E1 +3.081168000E3,6.096321541E1 +3.081415000E3,6.147204445E1 +3.081708000E3,6.518353223E1 +3.082066000E3,6.565001970E1 +3.082347000E3,6.152216198E1 +3.082591000E3,6.232488129E1 +3.082884000E3,6.450829181E1 +3.083131000E3,6.727741702E1 +3.083373000E3,6.596172391E1 +3.083615000E3,6.588974420E1 +3.083909000E3,6.215985231E1 +3.084146000E3,5.417797447E1 +3.084444000E3,5.776086644E1 +3.084736000E3,6.145598006E1 +3.085067000E3,6.705675690E1 +3.085353000E3,7.032609091E1 +3.085621000E3,6.942809802E1 +3.085926000E3,6.673219093E1 +3.086170000E3,5.874483463E1 +3.086457000E3,6.163530440E1 +3.086730000E3,5.863155738E1 +3.086955000E3,5.804604701E1 +3.087247000E3,7.202263239E1 +3.087542000E3,6.907595594E1 +3.087796000E3,7.104760035E1 +3.088063000E3,6.060670654E1 +3.088371000E3,6.409876160E1 +3.088642000E3,6.504332531E1 +3.088891000E3,6.050178076E1 +3.089172000E3,5.988548041E1 +3.089448000E3,6.419311516E1 +3.089715000E3,6.072209436E1 +3.089992000E3,6.148544930E1 +3.090256000E3,6.667985585E1 +3.090551000E3,6.360479893E1 +3.090829000E3,6.675347002E1 +3.091081000E3,6.585951744E1 +3.091337000E3,5.998998345E1 +3.091582000E3,7.213751425E1 +3.091973000E3,7.002319175E1 +3.092225000E3,6.554991346E1 +3.092495000E3,5.438962824E1 +3.092757000E3,5.806427109E1 +3.093010000E3,5.611571138E1 +3.093290000E3,5.427298566E1 +3.093553000E3,6.332676554E1 +3.093801000E3,6.191283999E1 +3.094088000E3,6.222056485E1 +3.094383000E3,6.679558422E1 +3.094660000E3,6.396349695E1 +3.094980000E3,6.335657582E1 +3.095321000E3,6.368682935E1 +3.095574000E3,6.239728447E1 +3.095829000E3,6.560913932E1 +3.096083000E3,6.288470186E1 +3.096327000E3,6.063834800E1 +3.096611000E3,5.698542980E1 +3.096866000E3,6.214573666E1 +3.097125000E3,6.108001307E1 +3.097382000E3,6.098898235E1 +3.097639000E3,6.935379750E1 +3.097944000E3,6.076333803E1 +3.098235000E3,5.747447310E1 +3.098595000E3,5.896750888E1 +3.098845000E3,6.428262322E1 +3.099146000E3,6.073561603E1 +3.099435000E3,5.610862272E1 +3.099679000E3,5.808393750E1 +3.099971000E3,6.306244141E1 +3.100214000E3,6.493760740E1 +3.100511000E3,5.964091377E1 +3.100753000E3,5.949423253E1 +3.100995000E3,6.324186751E1 +3.101237000E3,6.294719776E1 +3.101481000E3,6.618420708E1 +3.101805000E3,6.039251647E1 +3.102105000E3,6.883376735E1 +3.102388000E3,6.215701199E1 +3.102635000E3,6.251944475E1 +3.102926000E3,6.387718652E1 +3.103175000E3,6.262879933E1 +3.103469000E3,6.094246273E1 +3.103717000E3,5.780442917E1 +3.104010000E3,5.805018882E1 +3.104245000E3,6.073911170E1 +3.104537000E3,5.820155990E1 +3.104880000E3,5.691870737E1 +3.105139000E3,5.609187778E1 +3.105418000E3,5.368790307E1 +3.105673000E3,5.733127796E1 +3.105933000E3,5.834617124E1 +3.106196000E3,5.665251568E1 +3.106447000E3,5.839993992E1 +3.106707000E3,5.765825797E1 +3.106989000E3,6.346036236E1 +3.107241000E3,6.088974139E1 +3.107536000E3,5.623231578E1 +3.107836000E3,5.905990454E1 +3.108208000E3,5.913546091E1 +3.108462000E3,5.921957697E1 +3.108732000E3,6.403378055E1 +3.109010000E3,6.829473891E1 +3.109237000E3,6.866131452E1 +3.109530000E3,5.759864554E1 +3.109769000E3,5.216447932E1 +3.110067000E3,5.887622687E1 +3.110356000E3,5.912152229E1 +3.110621000E3,6.343631440E1 +3.110862000E3,6.110189356E1 +3.111105000E3,5.925249209E1 +3.111441000E3,5.583559168E1 +3.111708000E3,6.397874973E1 +3.112049000E3,5.864630935E1 +3.112314000E3,5.876030726E1 +3.112620000E3,5.558460131E1 +3.112980000E3,5.336927775E1 +3.113232000E3,5.351895645E1 +3.113515000E3,4.932805120E1 +3.113763000E3,6.323075662E1 +3.114057000E3,6.375401647E1 +3.114318000E3,6.430798012E1 +3.114651000E3,6.745313705E1 +3.114909000E3,6.370697195E1 +3.115204000E3,6.719832935E1 +3.115517000E3,6.353352979E1 +3.115816000E3,6.421660294E1 +3.116074000E3,6.666449428E1 +3.116372000E3,6.209745804E1 +3.116612000E3,5.853853683E1 +3.116911000E3,6.153177442E1 +3.117151000E3,6.465277685E1 +3.117439000E3,6.054074617E1 +3.117698000E3,5.762180605E1 +3.118029000E3,5.904912096E1 +3.118292000E3,6.054469105E1 +3.118547000E3,6.570885599E1 +3.118854000E3,6.686989978E1 +3.119103000E3,6.506823644E1 +3.119359000E3,5.780133308E1 +3.119610000E3,5.983707630E1 +3.119896000E3,6.102798325E1 +3.120167000E3,5.940835035E1 +3.120446000E3,6.154008300E1 +3.120717000E3,6.031178539E1 +3.120969000E3,6.222997321E1 +3.121291000E3,6.676268308E1 +3.121532000E3,6.244629438E1 +3.121778000E3,6.014719673E1 +3.122038000E3,6.351124664E1 +3.122317000E3,5.786579019E1 +3.122607000E3,5.704033688E1 +3.122864000E3,5.941823253E1 +3.123160000E3,6.366298469E1 +3.123429000E3,6.545330590E1 +3.123678000E3,6.206143443E1 +3.123932000E3,6.250040348E1 +3.124250000E3,6.193784317E1 +3.124582000E3,6.679802083E1 +3.124888000E3,6.239911876E1 +3.125141000E3,6.227743005E1 +3.125407000E3,5.930162190E1 +3.125655000E3,5.692493613E1 +3.125897000E3,6.100851678E1 +3.126155000E3,6.356932883E1 +3.126470000E3,6.583742229E1 +3.126735000E3,6.828531785E1 +3.127049000E3,6.744954014E1 +3.127349000E3,6.892448306E1 +3.127620000E3,6.312172108E1 +3.127885000E3,6.549450530E1 +3.128150000E3,6.274114245E1 +3.128434000E3,5.987443555E1 +3.128694000E3,5.754092402E1 +3.128967000E3,6.140483336E1 +3.129224000E3,5.793735580E1 +3.129483000E3,5.640840091E1 +3.129735000E3,7.068460790E1 +3.130042000E3,6.831622259E1 +3.130308000E3,6.661131327E1 +3.130563000E3,7.032191033E1 +3.130897000E3,6.429012882E1 +3.131166000E3,6.890779868E1 +3.131427000E3,6.812897599E1 +3.131726000E3,6.440583932E1 +3.132039000E3,6.371305855E1 +3.132310000E3,6.071113649E1 +3.132582000E3,6.356904702E1 +3.132834000E3,6.335195410E1 +3.133078000E3,5.922748305E1 +3.133357000E3,5.790290676E1 +3.133581000E3,6.067150466E1 +3.133827000E3,5.936438225E1 +3.134075000E3,5.651144024E1 +3.134312000E3,5.707156804E1 +3.134564000E3,6.256442790E1 +3.134822000E3,5.680653319E1 +3.135099000E3,6.386946987E1 +3.135341000E3,6.183817556E1 +3.135588000E3,5.791592939E1 +3.135843000E3,5.415500200E1 +3.136159000E3,5.828393923E1 +3.136402000E3,5.584102234E1 +3.136645000E3,5.843965538E1 +3.136922000E3,6.032067675E1 +3.137231000E3,6.082235855E1 +3.137514000E3,6.216335250E1 +3.137763000E3,6.576895249E1 +3.138052000E3,5.935628673E1 +3.138348000E3,5.697436057E1 +3.138590000E3,6.713499986E1 +3.138833000E3,5.996032355E1 +3.139071000E3,6.566814076E1 +3.139366000E3,6.469315039E1 +3.139607000E3,6.414816039E1 +3.139901000E3,6.238348704E1 +3.140144000E3,5.975478602E1 +3.140477000E3,5.617333113E1 +3.140789000E3,6.140881460E1 +3.141038000E3,5.760925345E1 +3.141323000E3,5.813474075E1 +3.141616000E3,6.190304914E1 +3.141899000E3,5.853813516E1 +3.142123000E3,6.019478920E1 +3.142387000E3,5.824830032E1 +3.142639000E3,6.031650371E1 +3.142898000E3,5.874305926E1 +3.143211000E3,6.365997735E1 +3.143459000E3,6.182267241E1 +3.143814000E3,6.153305629E1 +3.144076000E3,6.040235966E1 +3.144345000E3,6.279707978E1 +3.144591000E3,6.261441373E1 +3.144837000E3,5.722591859E1 +3.145082000E3,5.791919274E1 +3.145387000E3,6.142016587E1 +3.145678000E3,5.996802308E1 +3.145994000E3,5.761245992E1 +3.146269000E3,5.915341256E1 +3.146531000E3,5.679987844E1 +3.146814000E3,6.228452904E1 +3.147163000E3,6.038592359E1 +3.147440000E3,6.662509726E1 +3.147705000E3,5.864713600E1 +3.147961000E3,6.383827006E1 +3.148228000E3,6.445939632E1 +3.148543000E3,6.206597752E1 +3.148800000E3,6.082056407E1 +3.149046000E3,5.872798480E1 +3.149340000E3,5.792404132E1 +3.149585000E3,5.917409009E1 +3.149845000E3,5.619795947E1 +3.150164000E3,6.447379623E1 +3.150501000E3,6.336546747E1 +3.150798000E3,6.022605646E1 +3.151059000E3,5.837139298E1 +3.151360000E3,5.721847889E1 +3.151614000E3,7.085699981E1 +3.151908000E3,6.031233854E1 +3.152206000E3,6.170839562E1 +3.152452000E3,6.336115962E1 +3.152697000E3,6.732286145E1 +3.152943000E3,6.043278366E1 +3.153235000E3,5.822950572E1 +3.153537000E3,6.155234216E1 +3.153813000E3,5.671966020E1 +3.154078000E3,5.613348243E1 +3.154333000E3,5.384913785E1 +3.154580000E3,5.739778382E1 +3.154869000E3,5.617144196E1 +3.155103000E3,5.699346940E1 +3.155351000E3,6.356393037E1 +3.155653000E3,5.483372318E1 +3.155949000E3,5.806865262E1 +3.156195000E3,5.725879338E1 +3.156459000E3,5.708272088E1 +3.156776000E3,5.736330762E1 +3.157028000E3,5.620178265E1 +3.157280000E3,5.557503250E1 +3.157521000E3,6.379766868E1 +3.157864000E3,6.175462639E1 +3.158113000E3,5.970375584E1 +3.158365000E3,5.482220327E1 +3.158625000E3,6.094938302E1 +3.158872000E3,6.189076140E1 +3.159128000E3,6.365906369E1 +3.159385000E3,6.365252593E1 +3.159699000E3,6.421784723E1 +3.160039000E3,5.952347777E1 +3.160337000E3,6.582170091E1 +3.160643000E3,6.400621400E1 +3.160905000E3,5.982923632E1 +3.161162000E3,5.912958512E1 +3.161449000E3,5.744161350E1 +3.161722000E3,6.208953034E1 +3.161984000E3,6.743490019E1 +3.162228000E3,5.893358785E1 +3.162506000E3,6.260442429E1 +3.162777000E3,6.054589944E1 +3.163072000E3,5.958101250E1 +3.163380000E3,5.756716970E1 +3.163623000E3,5.897741262E1 +3.163916000E3,5.199350029E1 +3.164173000E3,5.607364633E1 +3.164444000E3,6.846587546E1 +3.164756000E3,5.833953537E1 +3.165011000E3,6.699601536E1 +3.165255000E3,6.024033326E1 +3.165530000E3,5.636786936E1 +3.165825000E3,5.917346905E1 +3.166077000E3,5.684739711E1 +3.166343000E3,5.441684119E1 +3.166607000E3,5.708423030E1 +3.166871000E3,5.726160097E1 +3.167212000E3,5.795085756E1 +3.167513000E3,5.359033433E1 +3.167800000E3,5.481028168E1 +3.168051000E3,5.771426852E1 +3.168321000E3,5.720698183E1 +3.168574000E3,6.029484328E1 +3.168847000E3,6.594273179E1 +3.169141000E3,5.814954146E1 +3.169451000E3,5.741553332E1 +3.169717000E3,5.474949866E1 +3.170064000E3,5.858087337E1 +3.170388000E3,5.901398101E1 +3.170689000E3,6.599046976E1 +3.170942000E3,6.777823262E1 +3.171184000E3,6.339704259E1 +3.171437000E3,5.678237753E1 +3.171694000E3,6.067324941E1 +3.171975000E3,6.337570500E1 +3.172215000E3,6.060254578E1 +3.172509000E3,6.511602204E1 +3.172792000E3,6.491523998E1 +3.173086000E3,6.236437487E1 +3.173442000E3,6.132637014E1 +3.173725000E3,5.575670785E1 +3.173997000E3,5.450541115E1 +3.174243000E3,5.816223835E1 +3.174516000E3,5.991084873E1 +3.174771000E3,5.959264792E1 +3.175022000E3,6.001504494E1 +3.175268000E3,5.794233494E1 +3.175510000E3,5.875384007E1 +3.175752000E3,6.582497874E1 +3.176001000E3,6.385809704E1 +3.176310000E3,6.575292490E1 +3.176700000E3,6.328122862E1 +3.176947000E3,6.160374932E1 +3.177205000E3,6.233605233E1 +3.177480000E3,5.746120395E1 +3.177733000E3,5.491961653E1 +3.178002000E3,5.346590976E1 +3.178308000E3,4.910433719E1 +3.178598000E3,5.548086035E1 +3.178876000E3,5.834728013E1 +3.179129000E3,5.722852381E1 +3.179407000E3,5.371032540E1 +3.179686000E3,5.375017527E1 +3.180066000E3,5.741446005E1 +3.180325000E3,5.595914402E1 +3.180624000E3,5.784989425E1 +3.180867000E3,5.818330240E1 +3.181112000E3,5.651638359E1 +3.181407000E3,5.400925398E1 +3.181645000E3,5.134681346E1 +3.181939000E3,5.540645654E1 +3.182189000E3,5.603348674E1 +3.182489000E3,5.612576596E1 +3.182726000E3,5.412821683E1 +3.183072000E3,5.364995955E1 +3.183373000E3,5.685067634E1 +3.183631000E3,5.292396423E1 +3.183913000E3,5.037305724E1 +3.184139000E3,5.458652507E1 +3.184386000E3,5.336216390E1 +3.184625000E3,5.355204553E1 +3.184861000E3,5.798216811E1 +3.185170000E3,5.037998219E1 +3.185412000E3,5.253320042E1 +3.185661000E3,5.864558083E1 +3.185944000E3,5.568855775E1 +3.186307000E3,6.065674046E1 +3.186594000E3,5.486017232E1 +3.186846000E3,5.354898396E1 +3.187128000E3,5.606629368E1 +3.187373000E3,5.887335608E1 +3.187646000E3,5.932986575E1 +3.187996000E3,5.618144782E1 +3.188254000E3,5.279151533E1 +3.188538000E3,5.980979660E1 +3.188819000E3,5.959008295E1 +3.189058000E3,5.757326838E1 +3.189324000E3,5.814251633E1 +3.189681000E3,6.715432083E1 +3.189929000E3,5.659786492E1 +3.190183000E3,6.813933576E1 +3.190493000E3,6.423896785E1 +3.190762000E3,6.115594562E1 +3.191063000E3,6.466877383E1 +3.191295000E3,6.400176112E1 +3.191543000E3,6.061189134E1 +3.191813000E3,6.334758009E1 +3.192062000E3,6.268892194E1 +3.192384000E3,6.255649695E1 +3.192688000E3,6.440152216E1 +3.193095000E3,6.083356984E1 +3.193368000E3,5.702207605E1 +3.193630000E3,6.129862703E1 +3.193931000E3,6.511359313E1 +3.194208000E3,6.424113032E1 +3.194458000E3,6.277957456E1 +3.194751000E3,6.067489213E1 +3.195007000E3,6.044409325E1 +3.195267000E3,5.902485869E1 +3.195523000E3,5.940450479E1 +3.195769000E3,5.629667180E1 +3.196103000E3,5.773687048E1 +3.196362000E3,5.275604571E1 +3.196676000E3,5.321996877E1 +3.196932000E3,4.952922772E1 +3.197191000E3,5.411849627E1 +3.197458000E3,5.575997519E1 +3.197718000E3,5.782402980E1 +3.197982000E3,6.092045522E1 +3.198228000E3,6.504329265E1 +3.198474000E3,5.972589974E1 +3.198713000E3,5.816644178E1 +3.198958000E3,6.190720604E1 +3.199249000E3,6.026051864E1 +3.199481000E3,6.064697026E1 +3.199744000E3,5.715218400E1 +3.200003000E3,5.509276249E1 +3.200281000E3,5.035485844E1 +3.200607000E3,5.745123346E1 +3.200874000E3,5.874041571E1 +3.201157000E3,6.540993071E1 +3.201407000E3,6.592699897E1 +3.201730000E3,5.826687879E1 +3.201982000E3,5.966898415E1 +3.202228000E3,5.928022084E1 +3.202546000E3,5.492659239E1 +3.202811000E3,5.843773228E1 +3.203091000E3,5.615478265E1 +3.203365000E3,5.378265559E1 +3.203611000E3,5.724493737E1 +3.203868000E3,5.517839982E1 +3.204137000E3,5.166422622E1 +3.204439000E3,5.966362579E1 +3.204692000E3,5.837831137E1 +3.204952000E3,5.873474045E1 +3.205216000E3,6.025432286E1 +3.205460000E3,5.709891269E1 +3.205710000E3,5.946766606E1 +3.206062000E3,5.575402329E1 +3.206367000E3,5.597615265E1 +3.206620000E3,5.417374311E1 +3.206869000E3,5.785505194E1 +3.207152000E3,5.973144393E1 +3.207405000E3,5.494944595E1 +3.207684000E3,5.859159641E1 +3.207982000E3,5.909726368E1 +3.208273000E3,6.221796591E1 +3.208541000E3,6.248597715E1 +3.208787000E3,6.143432195E1 +3.209043000E3,5.767415987E1 +3.209357000E3,6.087003136E1 +3.209636000E3,5.816954701E1 +3.209920000E3,5.644196424E1 +3.210232000E3,5.726504339E1 +3.210505000E3,5.384487818E1 +3.210769000E3,6.092886049E1 +3.211044000E3,5.910647270E1 +3.211306000E3,5.855040927E1 +3.211560000E3,6.886189365E1 +3.211803000E3,6.193548709E1 +3.212075000E3,5.895667088E1 +3.212320000E3,5.613734816E1 +3.212669000E3,6.365011223E1 +3.212934000E3,6.616065582E1 +3.213195000E3,4.911720228E1 +3.213460000E3,5.429539168E1 +3.213713000E3,5.374714305E1 +3.213991000E3,5.505703483E1 +3.214231000E3,5.216197587E1 +3.214486000E3,6.958974683E1 +3.214787000E3,6.410499727E1 +3.215047000E3,5.795707420E1 +3.215308000E3,6.210641451E1 +3.215581000E3,5.724864620E1 +3.215943000E3,5.588397230E1 +3.216221000E3,5.281586206E1 +3.216477000E3,5.616597876E1 +3.216735000E3,7.016181845E1 +3.216992000E3,7.008234703E1 +3.217238000E3,6.883905131E1 +3.217482000E3,6.039428517E1 +3.217722000E3,6.572225500E1 +3.217971000E3,6.862082655E1 +3.218221000E3,6.392739620E1 +3.218481000E3,6.757625304E1 +3.218798000E3,6.468895575E1 +3.219137000E3,5.941097234E1 +3.219443000E3,6.639331379E1 +3.219715000E3,6.512137194E1 +3.219985000E3,6.137345425E1 +3.220244000E3,6.566739727E1 +3.220494000E3,5.684090738E1 +3.220758000E3,4.865476042E1 +3.221022000E3,5.571447424E1 +3.221324000E3,5.050200483E1 +3.221601000E3,5.262698993E1 +3.221858000E3,5.385544431E1 +3.222185000E3,5.793526709E1 +3.222548000E3,5.957102097E1 +3.222796000E3,5.026005559E1 +3.223068000E3,5.164515600E1 +3.223344000E3,6.575405490E1 +3.223598000E3,6.925353270E1 +3.223876000E3,5.909751181E1 +3.224152000E3,5.561020058E1 +3.224416000E3,5.257890354E1 +3.224662000E3,5.262446891E1 +3.224954000E3,5.599583257E1 +3.225202000E3,5.286294623E1 +3.225483000E3,5.049109924E1 +3.225830000E3,6.154494550E1 +3.226096000E3,5.433068412E1 +3.226350000E3,5.256602683E1 +3.226652000E3,5.283535150E1 +3.226989000E3,5.811852242E1 +3.227251000E3,5.842389129E1 +3.227505000E3,5.524471208E1 +3.227782000E3,6.207780754E1 +3.228053000E3,6.165130850E1 +3.228302000E3,5.818085510E1 +3.228557000E3,5.646455559E1 +3.228823000E3,5.903487317E1 +3.229201000E3,5.460588060E1 +3.229471000E3,5.534537953E1 +3.229720000E3,5.492103159E1 +3.229976000E3,5.474982433E1 +3.230276000E3,6.311967749E1 +3.230531000E3,6.144237593E1 +3.230845000E3,6.204497775E1 +3.231123000E3,6.192920277E1 +3.231382000E3,6.726064707E1 +3.231675000E3,5.951322284E1 +3.231970000E3,5.620608761E1 +3.232324000E3,5.597726308E1 +3.232555000E3,5.737347613E1 +3.232845000E3,5.515502781E1 +3.233172000E3,5.977186730E1 +3.233435000E3,6.131606000E1 +3.233742000E3,5.610580070E1 +3.234000000E3,5.978218601E1 +3.234272000E3,6.319970701E1 +3.234581000E3,5.608562509E1 +3.234862000E3,6.169746582E1 +3.235159000E3,6.105762669E1 +3.235416000E3,5.369522011E1 +3.235667000E3,6.580487109E1 +3.235906000E3,5.797374086E1 +3.236200000E3,6.981267784E1 +3.236445000E3,6.229515865E1 +3.236695000E3,6.858181426E1 +3.236976000E3,5.740787399E1 +3.237218000E3,5.455964692E1 +3.237457000E3,7.204325578E1 +3.237720000E3,6.142914611E1 +3.238013000E3,5.768794211E1 +3.238280000E3,5.732491467E1 +3.238580000E3,5.793744264E1 +3.238882000E3,5.626325471E1 +3.239149000E3,5.661724856E1 +3.239424000E3,6.969605219E1 +3.239726000E3,6.482965407E1 +3.239976000E3,5.947270091E1 +3.240278000E3,5.913422796E1 +3.240576000E3,5.630232959E1 +3.240877000E3,5.956366293E1 +3.241128000E3,6.177688280E1 +3.241391000E3,5.851951662E1 +3.241664000E3,5.959787493E1 +3.241944000E3,5.765523372E1 +3.242310000E3,5.961443978E1 +3.242602000E3,5.811194000E1 +3.242910000E3,5.765320401E1 +3.243188000E3,6.631148602E1 +3.243420000E3,6.916377121E1 +3.243673000E3,6.435158828E1 +3.243925000E3,6.486926440E1 +3.244170000E3,5.506348984E1 +3.244475000E3,6.702899260E1 +3.244772000E3,6.244838658E1 +3.245003000E3,6.057959417E1 +3.245328000E3,6.103137126E1 +3.245581000E3,5.723671640E1 +3.245864000E3,5.125127512E1 +3.246123000E3,5.748187394E1 +3.246395000E3,6.148075018E1 +3.246669000E3,6.226010686E1 +3.246940000E3,5.273573389E1 +3.247233000E3,5.462141876E1 +3.247482000E3,5.946160846E1 +3.247728000E3,6.623014757E1 +3.248041000E3,5.823129903E1 +3.248289000E3,5.689561843E1 +3.248538000E3,5.851473913E1 +3.248910000E3,5.778207994E1 +3.249187000E3,6.109108533E1 +3.249462000E3,6.368024039E1 +3.249726000E3,6.527718864E1 +3.249983000E3,5.855658653E1 +3.250281000E3,5.718860903E1 +3.250534000E3,5.946900486E1 +3.250785000E3,5.688578668E1 +3.251033000E3,5.444863300E1 +3.251316000E3,5.885016251E1 +3.251570000E3,6.172482417E1 +3.251833000E3,6.833245599E1 +3.252200000E3,6.656973280E1 +3.252441000E3,6.663686281E1 +3.252721000E3,6.380106140E1 +3.252991000E3,6.113258977E1 +3.253242000E3,7.270243700E1 +3.253457000E3,7.442711013E1 +3.253706000E3,7.097589831E1 +3.253999000E3,5.740107596E1 +3.254237000E3,5.407351324E1 +3.254532000E3,6.235563554E1 +3.254777000E3,6.148535018E1 +3.255085000E3,6.767985005E1 +3.255346000E3,5.893302101E1 +3.255628000E3,5.834235484E1 +3.255897000E3,6.152524318E1 +3.256146000E3,6.124474706E1 +3.256419000E3,5.928557591E1 +3.256642000E3,5.798678480E1 +3.256921000E3,5.800318977E1 +3.257149000E3,5.813391626E1 +3.257392000E3,6.200496820E1 +3.257645000E3,6.268368020E1 +3.257945000E3,6.783162804E1 +3.258296000E3,7.343015115E1 +3.258556000E3,7.258165803E1 +3.258805000E3,6.753466802E1 +3.259117000E3,7.134403593E1 +3.259421000E3,6.813653179E1 +3.259673000E3,6.449045726E1 +3.259939000E3,7.144310958E1 +3.260188000E3,6.619195201E1 +3.260438000E3,6.990193438E1 +3.260692000E3,6.791067771E1 +3.260944000E3,7.014061601E1 +3.261191000E3,7.271368424E1 +3.261532000E3,6.889323528E1 +3.261794000E3,6.087932672E1 +3.262047000E3,6.139975131E1 +3.262322000E3,6.684035582E1 +3.262586000E3,6.977079140E1 +3.262861000E3,6.711211223E1 +3.263137000E3,6.891542739E1 +3.263415000E3,6.450575202E1 +3.263671000E3,6.375083447E1 +3.263946000E3,6.525419018E1 +3.264250000E3,6.323969714E1 +3.264517000E3,7.351653517E1 +3.264813000E3,7.240916805E1 +3.265107000E3,6.991986455E1 +3.265349000E3,6.767718353E1 +3.265598000E3,7.020318016E1 +3.265847000E3,6.593396207E1 +3.266149000E3,6.776886494E1 +3.266400000E3,6.796917668E1 +3.266653000E3,6.234495715E1 +3.266897000E3,6.492303298E1 +3.267153000E3,6.551968402E1 +3.267398000E3,6.154456079E1 +3.267647000E3,6.087933145E1 +3.267896000E3,6.053677169E1 +3.268248000E3,6.893351216E1 +3.268513000E3,6.695525456E1 +3.268817000E3,6.263553940E1 +3.269070000E3,5.965971741E1 +3.269315000E3,6.136430702E1 +3.269582000E3,7.398506568E1 +3.269828000E3,7.145137487E1 +3.270128000E3,7.238266470E1 +3.270371000E3,7.289527120E1 +3.270623000E3,7.428636164E1 +3.270931000E3,7.248535741E1 +3.271185000E3,7.399445608E1 +3.271518000E3,7.355251323E1 +3.271795000E3,7.296660624E1 +3.272081000E3,7.131368475E1 +3.272358000E3,7.068792091E1 +3.272581000E3,6.623699177E1 +3.272835000E3,5.258987188E1 +3.273093000E3,6.044165509E1 +3.273337000E3,6.879817511E1 +3.273635000E3,6.970693453E1 +3.273931000E3,7.169623139E1 +3.274180000E3,7.112396098E1 +3.274428000E3,7.190035192E1 +3.274761000E3,7.089393329E1 +3.275038000E3,6.995869622E1 +3.275323000E3,6.900781199E1 +3.275569000E3,6.766263448E1 +3.275860000E3,6.881814388E1 +3.276116000E3,6.821596427E1 +3.276370000E3,6.896702672E1 +3.276649000E3,6.827119542E1 +3.276914000E3,6.795818984E1 +3.277171000E3,7.025945887E1 +3.277482000E3,6.685661764E1 +3.277741000E3,6.810082518E1 +3.278078000E3,6.902136690E1 +3.278358000E3,6.568611650E1 +3.278604000E3,7.123802039E1 +3.278848000E3,6.300940961E1 +3.279144000E3,6.292057856E1 +3.279382000E3,6.654167697E1 +3.279622000E3,6.808014942E1 +3.279917000E3,6.902808966E1 +3.280160000E3,6.685153426E1 +3.280471000E3,6.435621527E1 +3.280770000E3,6.765080490E1 +3.281059000E3,6.808248309E1 +3.281352000E3,6.477485011E1 +3.281602000E3,5.628454157E1 +3.281867000E3,5.800927668E1 +3.282130000E3,7.131716325E1 +3.282389000E3,7.355208108E1 +3.282663000E3,7.108584109E1 +3.282932000E3,5.710440961E1 +3.283191000E3,5.329699257E1 +3.283451000E3,5.003319724E1 +3.283709000E3,5.081704645E1 +3.284003000E3,5.075383483E1 +3.284259000E3,5.431712692E1 +3.284628000E3,5.277582101E1 +3.284917000E3,6.061307876E1 +3.285214000E3,6.168657926E1 +3.285472000E3,5.854988033E1 +3.285744000E3,4.913527641E1 +3.285999000E3,5.563664353E1 +3.286250000E3,5.841488419E1 +3.286517000E3,6.437604518E1 +3.286777000E3,6.124264602E1 +3.287035000E3,5.886049633E1 +3.287300000E3,6.196549102E1 +3.287630000E3,6.776239267E1 +3.287951000E3,6.702605133E1 +3.288259000E3,5.376695086E1 +3.288499000E3,5.095339550E1 +3.288807000E3,5.078317550E1 +3.289117000E3,5.659564827E1 +3.289411000E3,7.136818215E1 +3.289684000E3,6.629708396E1 +3.289982000E3,7.133804213E1 +3.290271000E3,6.994811010E1 +3.290544000E3,6.532422657E1 +3.290800000E3,6.451013008E1 +3.291132000E3,6.261305598E1 +3.291418000E3,6.696223022E1 +3.291676000E3,4.827412656E1 +3.291930000E3,4.724575587E1 +3.292202000E3,4.846609938E1 +3.292501000E3,5.276700476E1 +3.292822000E3,5.071547801E1 +3.293065000E3,4.944777186E1 +3.293349000E3,4.466809801E1 +3.293583000E3,4.432750067E1 +3.293832000E3,5.165471909E1 +3.294078000E3,4.606912616E1 +3.294427000E3,4.826074528E1 +3.294712000E3,4.434240888E1 +3.294985000E3,4.684583968E1 +3.295286000E3,5.104787864E1 +3.295548000E3,4.839146586E1 +3.295807000E3,5.479537456E1 +3.296066000E3,5.055213000E1 +3.296324000E3,3.933656037E1 +3.296585000E3,4.513652817E1 +3.296840000E3,4.805617654E1 +3.297099000E3,4.453428427E1 +3.297354000E3,5.205427791E1 +3.297705000E3,5.001223291E1 +3.297948000E3,5.342697607E1 +3.298200000E3,5.619467550E1 +3.298461000E3,5.565459347E1 +3.298738000E3,5.819577446E1 +3.298988000E3,5.077826383E1 +3.299236000E3,5.142261821E1 +3.299478000E3,5.610754709E1 +3.299775000E3,5.248015066E1 +3.300011000E3,4.742520943E1 +3.300325000E3,5.519481303E1 +3.300626000E3,4.628613419E1 +3.300959000E3,4.430731849E1 +3.301224000E3,4.380193782E1 +3.301473000E3,4.690647127E1 +3.301746000E3,4.845294386E1 +3.302057000E3,4.912389116E1 +3.302307000E3,5.155191791E1 +3.302563000E3,5.240902416E1 +3.302820000E3,4.677306339E1 +3.303083000E3,5.037145513E1 +3.303327000E3,4.506752152E1 +3.303573000E3,4.920686196E1 +3.303857000E3,4.935493485E1 +3.304189000E3,4.415801479E1 +3.304459000E3,4.423531181E1 +3.304768000E3,3.874162391E1 +3.305030000E3,4.189958295E1 +3.305333000E3,4.005870516E1 +3.305579000E3,5.072183491E1 +3.305843000E3,4.113754863E1 +3.306140000E3,5.548273149E1 +3.306383000E3,5.383424402E1 +3.306628000E3,5.205779319E1 +3.306877000E3,4.592085607E1 +3.307206000E3,5.092451979E1 +3.307449000E3,4.823039740E1 +3.307720000E3,5.026090042E1 +3.307982000E3,5.794901070E1 +3.308198000E3,5.239372011E1 +3.308502000E3,5.024517162E1 +3.308742000E3,4.253471720E1 +3.309044000E3,4.105523794E1 +3.309340000E3,3.028117703E1 +3.309596000E3,2.809150222E1 +3.309864000E3,2.626060468E1 +3.310135000E3,5.055452447E1 +3.310501000E3,7.199271156E1 +3.310777000E3,7.172468430E1 +3.311045000E3,7.282926204E1 +3.311313000E3,7.145580608E1 +3.311562000E3,7.218798353E1 +3.311867000E3,7.081603642E1 +3.312107000E3,7.122522782E1 +3.312348000E3,7.013128466E1 +3.312672000E3,7.138239962E1 +3.312976000E3,7.589001323E1 +3.313216000E3,6.988466628E1 +3.313506000E3,6.521999768E1 +3.313853000E3,5.781158269E1 +3.314129000E3,5.698768013E1 +3.314381000E3,5.954050680E1 +3.314636000E3,5.529467486E1 +3.314903000E3,6.884377149E1 +3.315163000E3,7.293133775E1 +3.315448000E3,7.186875504E1 +3.315697000E3,6.942752239E1 +3.315995000E3,6.899930460E1 +3.316247000E3,6.333687203E1 +3.316557000E3,6.820286469E1 +3.316856000E3,7.371764624E1 +3.317124000E3,7.475494405E1 +3.317411000E3,7.135849387E1 +3.317718000E3,5.726081152E1 +3.317965000E3,5.650406291E1 +3.318233000E3,4.901561410E1 +3.318490000E3,6.881993797E1 +3.318742000E3,7.251465406E1 +3.319010000E3,6.395213402E1 +3.319311000E3,7.197127027E1 +3.319615000E3,6.948849738E1 +3.319862000E3,6.664503435E1 +3.320187000E3,6.933008182E1 +3.320443000E3,6.121514242E1 +3.320753000E3,7.017439611E1 +3.321063000E3,7.393277725E1 +3.321329000E3,7.045535337E1 +3.321643000E3,6.985180357E1 +3.321896000E3,7.158196073E1 +3.322168000E3,6.999348148E1 +3.322483000E3,6.872091406E1 +3.322823000E3,6.386396976E1 +3.323116000E3,6.891641311E1 +3.323355000E3,6.790436633E1 +3.323733000E3,6.190629476E1 +3.324010000E3,6.307072034E1 +3.324306000E3,6.459812141E1 +3.324591000E3,6.928529051E1 +3.324846000E3,6.953301961E1 +3.325158000E3,6.946121501E1 +3.325471000E3,6.177266257E1 +3.325739000E3,6.057146439E1 +3.326000000E3,6.021658005E1 +3.326269000E3,6.588088303E1 +3.326536000E3,6.594068529E1 +3.326797000E3,5.957632846E1 +3.327117000E3,5.830018402E1 +3.327415000E3,5.952820917E1 +3.327678000E3,5.996997483E1 +3.327928000E3,6.374276040E1 +3.328204000E3,6.484785648E1 +3.328504000E3,6.253699213E1 +3.328743000E3,6.495848159E1 +3.329001000E3,6.390198219E1 +3.329317000E3,6.107203426E1 +3.329613000E3,6.678300135E1 +3.329901000E3,6.048531373E1 +3.330164000E3,6.806621622E1 +3.330501000E3,6.592361883E1 +3.330795000E3,6.652249790E1 +3.331059000E3,6.079261624E1 +3.331342000E3,7.055285274E1 +3.331620000E3,6.885169705E1 +3.331870000E3,6.676175072E1 +3.332125000E3,6.653456857E1 +3.332410000E3,6.539948315E1 +3.332658000E3,6.741723145E1 +3.332915000E3,5.982571500E1 +3.333236000E3,7.234399288E1 +3.333559000E3,7.555637810E1 +3.333801000E3,7.132946849E1 +3.334053000E3,7.012473325E1 +3.334345000E3,7.083313400E1 +3.334658000E3,6.159204912E1 +3.334951000E3,5.416652771E1 +3.335187000E3,5.331536045E1 +3.335488000E3,5.516853140E1 +3.335780000E3,5.755380245E1 +3.336028000E3,6.034949591E1 +3.336335000E3,5.933559907E1 +3.336577000E3,6.200660494E1 +3.336975000E3,6.752581884E1 +3.337230000E3,6.552308109E1 +3.337509000E3,6.043162012E1 +3.337804000E3,6.346167875E1 +3.338097000E3,5.762665769E1 +3.338354000E3,6.046465836E1 +3.338657000E3,5.841838084E1 +3.338937000E3,5.426549819E1 +3.339182000E3,5.312925890E1 +3.339425000E3,5.904532039E1 +3.339705000E3,5.548841740E1 +3.339970000E3,6.467955136E1 +3.340311000E3,6.518540616E1 +3.340567000E3,6.130157495E1 +3.340843000E3,4.234380604E1 +3.341102000E3,3.685811557E1 +3.341367000E3,5.229521155E1 +3.341631000E3,4.577123603E1 +3.341913000E3,5.522804687E1 +3.342191000E3,7.219670231E1 +3.342497000E3,6.138541536E1 +3.342739000E3,5.883033505E1 +3.342994000E3,5.692990468E1 +3.343272000E3,5.784770175E1 +3.343584000E3,5.851150722E1 +3.343847000E3,7.127137910E1 +3.344137000E3,7.004437015E1 +3.344432000E3,6.719880262E1 +3.344677000E3,6.266500726E1 +3.344966000E3,6.662051616E1 +3.345209000E3,6.259160849E1 +3.345462000E3,6.521765959E1 +3.345762000E3,6.373477950E1 +3.346056000E3,5.976833176E1 +3.346294000E3,5.557373783E1 +3.346597000E3,5.486821605E1 +3.346842000E3,4.854970484E1 +3.347096000E3,6.338774242E1 +3.347415000E3,6.646909489E1 +3.347712000E3,6.370164725E1 +3.347950000E3,6.577012972E1 +3.348257000E3,6.536203326E1 +3.348509000E3,5.777033235E1 +3.348799000E3,6.942121279E1 +3.349070000E3,6.552465655E1 +3.349329000E3,6.400867966E1 +3.349583000E3,5.955829212E1 +3.349911000E3,6.233007104E1 +3.350154000E3,7.360271557E1 +3.350432000E3,7.402471070E1 +3.350716000E3,7.225249055E1 +3.350966000E3,6.654334459E1 +3.351200000E3,6.590758849E1 +3.351507000E3,6.143698167E1 +3.351805000E3,7.197722167E1 +3.352079000E3,6.778594348E1 +3.352307000E3,5.712392879E1 +3.352566000E3,5.659236121E1 +3.352870000E3,5.352359430E1 +3.353127000E3,5.362353429E1 +3.353366000E3,5.964860406E1 +3.353638000E3,7.164177428E1 +3.353890000E3,6.730234717E1 +3.354173000E3,5.336089185E1 +3.354435000E3,4.770751864E1 +3.354689000E3,4.833001031E1 +3.354956000E3,4.464972004E1 +3.355220000E3,6.809720152E1 +3.355493000E3,7.032616040E1 +3.355723000E3,7.137092547E1 +3.356052000E3,7.106236065E1 +3.356287000E3,7.302101107E1 +3.356599000E3,6.868512076E1 +3.356867000E3,7.134905494E1 +3.357133000E3,7.032184319E1 +3.357463000E3,6.484515560E1 +3.357753000E3,5.949029357E1 +3.358081000E3,6.553405106E1 +3.358385000E3,5.460622041E1 +3.358634000E3,4.798111952E1 +3.358902000E3,5.356090224E1 +3.359186000E3,5.091993104E1 +3.359516000E3,5.980463665E1 +3.359805000E3,5.623340998E1 +3.360124000E3,4.885342740E1 +3.360404000E3,4.536632542E1 +3.360660000E3,5.726647509E1 +3.360941000E3,6.266477325E1 +3.361245000E3,5.265432523E1 +3.361521000E3,4.746518361E1 +3.361777000E3,5.341135388E1 +3.362038000E3,5.094337921E1 +3.362292000E3,5.832737886E1 +3.362616000E3,5.247742127E1 +3.363049000E3,5.123926483E1 +3.363313000E3,4.482127206E1 +3.363600000E3,4.813050338E1 +3.363848000E3,5.751744958E1 +3.364157000E3,5.045245795E1 diff --git a/03_vorlagen_tauschordner/01_processing/alg15_xydiagramm/alg15_xydiagramm.pde b/03_vorlagen_tauschordner/01_processing/alg15_xydiagramm/alg15_xydiagramm.pde new file mode 100644 index 0000000..c2b9988 --- /dev/null +++ b/03_vorlagen_tauschordner/01_processing/alg15_xydiagramm/alg15_xydiagramm.pde @@ -0,0 +1,114 @@ +/** + * XY-Diagramm für Schalldruckpegel, Zahlen werden aus CSV-Datei gelesen. + * + * @author Schaller + * @version 29.11.18 + */ + + // Liste mit allen Werten +int[] punkte; +String[] namen; + +// Hilfsvariablen für die Suche +int akt_maximum=-1; // aktuell groesstes Element +int akt=-1; // aktuell untersuchtes Element +int verzoegerung=0; // Geschwindigkeit der Ausführung + +// Schriften +PFont kleineSchrift; +PFont grosseSchrift; + + +public void setup() { + // Zeichenfläche erzeugen + size(1000, 700); + background(0); + + // Schriften laden + kleineSchrift = loadFont("KleineSchrift.vlw"); + grosseSchrift = loadFont("GrosseSchrift.vlw"); + + // CSV-Datei laden und anzeigen + ladeTabelle("punkte.csv"); + stroke(250,250,200); + zeichneBalken(); +} + + + //<>// +public void ladeTabelle(String name) { + // Tabelle aus CSV-Datei laden //<>// + Table csv = loadTable(name, "header,csv"); + + if (csv != null && csv.getColumnCount()==2) { + + // Initialisiere Arrays, in die alle Zeilen der Tabelle passen + punkte = new int[csv.getRowCount()]; + namen = new String[csv.getRowCount()]; + + // Fülle die Arrays mit Werten aus der Tabelle + for (int i = 0; i < punkte.length; i++) { + // Lies Wert aus der i. Zeile und der Spalte "Punkte" bzw. "Name" + punkte[i] = csv.getInt(i, "Punkte"); + namen[i] = csv.getString(i, "Name"); + } + } +} + +public void zeichneBalken() { + + // Überschrift + fill(255,255,255); + textFont(grosseSchrift); + text("Punkte", 2, 20); + textFont(kleineSchrift); + + // Alle Einträge darstellen + if (punkte != null) { + for (int i = 0; i< punkte.length; i++) { + + fill(20,25,165); + // aktuelle Elemente farblich hervorheben + if (i == akt) { + fill(140,230,20); + } + if (i == akt_maximum) { + fill(230,60,140); + } + + // Balkendiagramm zeichnen + if (punkte[i]>=0) rect(120, 25+i*15, punkte[i]+1, 13); + + // Beschriftung + fill(255,255,255); + text(namen[i], 2, 35+i*15); + text(punkte[i], 70, 35+i*15); + } + } +} + + +public int sucheMaximum(int[] zahlen) { + // Sind überhaupt Daten da? + if (zahlen.length==0 ) { + return -1; + } + + // Startwerte setzen + akt_maximum = 0; + akt = 1; + + // Alle Arrayelemente untersuchen + while (akt < zahlen.length) { + + // Neues größtes Element?? + if (zahlen[akt]> zahlen[akt_maximum]) { + // Dann merke dir das neue + akt_maximum = akt; + + } + akt = akt + 1; + } + // Gib Position des größten Elements zurück + return akt_maximum; +} //<>// diff --git a/03_vorlagen_tauschordner/01_processing/alg15_xydiagramm/data/GrosseSchrift.vlw b/03_vorlagen_tauschordner/01_processing/alg15_xydiagramm/data/GrosseSchrift.vlw new file mode 100644 index 0000000..497c8c8 Binary files /dev/null and b/03_vorlagen_tauschordner/01_processing/alg15_xydiagramm/data/GrosseSchrift.vlw differ diff --git a/03_vorlagen_tauschordner/01_processing/alg15_xydiagramm/data/KleineSchrift.vlw b/03_vorlagen_tauschordner/01_processing/alg15_xydiagramm/data/KleineSchrift.vlw new file mode 100644 index 0000000..ab1241a Binary files /dev/null and b/03_vorlagen_tauschordner/01_processing/alg15_xydiagramm/data/KleineSchrift.vlw differ diff --git a/03_vorlagen_tauschordner/01_processing/alg15_xydiagramm/punkte.csv b/03_vorlagen_tauschordner/01_processing/alg15_xydiagramm/punkte.csv new file mode 100644 index 0000000..d6e8dfd --- /dev/null +++ b/03_vorlagen_tauschordner/01_processing/alg15_xydiagramm/punkte.csv @@ -0,0 +1,6 @@ +"Name","Punkte" +Niko,216 +Klaus,591 +Anna,857 +Lena,180 +Winfried,168 diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg03a_wasmacheich/MyWorld.java b/03_vorlagen_tauschordner/02_greenfoot/alg03a_wasmacheich/MyWorld.java new file mode 100644 index 0000000..61aee6c --- /dev/null +++ b/03_vorlagen_tauschordner/02_greenfoot/alg03a_wasmacheich/MyWorld.java @@ -0,0 +1,36 @@ +import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot und MouseInfo) + +/** + * Ergänzen Sie hier eine Beschreibung für die Klasse MyWorld. + * + * @author (Ihr Name) + * @version (eine Versionsnummer oder ein Datum) + */ +public class MyWorld extends World +{ + + /** + * Konstruktor für Objekte der Klasse MyWorld + * + */ + public MyWorld() + { + // Erstellt eine neue Welt mit 1200x900 Pixeln + super(1000, 700, 1); + + prepare(); + } + + + /** + * Bereite die Welt für den Programmstart vor. + * Das heißt: Erzeuge die Anfangs-Objekte und füge sie der Welt hinzu. + */ + private void prepare() + { + Zeichnung zeichnung = new Zeichnung(); + addObject(zeichnung,500,350); + + } +} + diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg03a_wasmacheich/Picture.java b/03_vorlagen_tauschordner/02_greenfoot/alg03a_wasmacheich/Picture.java new file mode 100644 index 0000000..cf9d8a8 --- /dev/null +++ b/03_vorlagen_tauschordner/02_greenfoot/alg03a_wasmacheich/Picture.java @@ -0,0 +1,677 @@ +import java.awt.image.*; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.BasicStroke; +import java.util.Vector; +import javax.imageio.*; +import java.io.*; +import java.awt.*; +import javax.swing.*; +import java.util.Random; +import java.awt.geom.AffineTransform; +/** + * + * Bildklasse für die Simulation von Processing-Befehlen + * + * Diese Klasse stellt ein BufferedImage bereit, in das mit Processing-Befehlen gezeichnet + * werden kann. + * Zusätzlich kann ein Bildanzeiger über jede Änderung des Bildes informiert werden, + * um "Zurück"-Befehle zu ermöglichen. Der Bildanzeiger ist entweder eine normale Java + * ScrollPane oder ein Actor aus Greenfoot. + * Die Dokumentation der einzelnen Zeichenmethoden ist der Processing-Reference + * (https://processing.org/reference/ steht unter CC-Lizenz: https://creativecommons.org/) + * entnommen und mit Deepl.com ins Deutsche übersetzt. + * + * @version 1.0 from 23.01.2019 + * @author Thomas Schaller (ZPG Informatik Klasse 9) + */ + + +public class Picture{ + + // Einstellungmöglichkeiten für das Zeichnen von Rechtecken und Ellipsen + // RADIUS = Mittelpunkt+Radius wird gegeben, CENTER = Mittelpunkt und Breite/Höhe wird gegeben, + // CORNER = Linke obere Ecke + Breite/Höhe, CORNERS = Linke obere und rechte untere Ecke + public static final int RADIUS = 1; + public static final int CENTER = 2; + public static final int CORNER = 3; + public static final int CORNERS = 4; + + // gespeichertes Bild, + private BufferedImage image; + + // aktuelle Farbeinstellungen + private Color background; + private Color pencolor; + private Color fillcolor; + + // aktuelle Stiftdicke + private double stroke; + + // akkteller Koordinatenmodus von Rechtecken und Ellipsen + private int ellipseMode = CENTER; + private int rectMode = CORNER; + + // aktueller Font + private Font textfont = null; + + // muss ein Bildanzeiger benachrichtigt werden + private PictureViewer observer = null; + + /** + * Erzeugt ein Bild mit Standardgröße 500x400 + */ + public Picture() { + this(500,400); + } + + /** + * Erzeugt ein Bild der angegeben Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public Picture(int width, int height) { + this(width,height, "D0D0D0"); + } + + /** + * Erzeugt ein Bild aus einer Datei + * @param filename Dateiname des Bildes + */ + public Picture(String filename) { + load(filename); + } + + /** + * Erzeugt ein Bild der angegebenen Größe mit festgelegtem Hintergrund + * @param width Breite des Bildes + * @param height Höhe des Bildes + * @param background Farbe des Hintergrunds + */ + public Picture(int width, int height, String background) { + this.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + this.background = decode(background); + this.pencolor = new Color(0,0,0); + this.stroke = 1; + this.fillcolor = null; + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(this.background); + g.fillRect(0,0,width-1, height-1); + } + + /** + * Legt fest, wer das Bild anzeigt. + * Diese ermöglicht die Benachrichtung des Observers, wenn sich das Bild ändert. + * @param observer Anzeiger des Bildes + */ + + public void setObserver(PictureViewer observer) { + this.observer= observer; + } + + /** + * Direktes Setzen des Bildes (für interne Zwecke) + * @param b Bild, das gespeichert werden soll. + */ + public void setImage(BufferedImage b) { + image = b; + } + + /** + * Direktes Abfragen des Bildes (für interne Zwecke) + * @return Bild, das gerade gespeichert ist. + */ + public BufferedImage getImage() { + return image; + } + + /** + * Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + * Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + * der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu. + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public void size(int width, int height){ + pushImage(); + this.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(background); + g.fillRect(0,0,width-1, height-1); + } + + /** + * Liefert die Breite des Bildes zurück. + * @return Breite des Bildes + */ + public int getWidth() { + return image.getWidth(); + } + + /** + * Liefert die Höhe des Bildes zurück. + * @return Höhe des Bildes + */ + public int getHeight() { + return image.getHeight(); + } + + + /** + * Erzeugt eine Kopie des Bildes und übergibt sie an den Observer (falls existent), damit dieser die Versionen speichern kann + */ + private void pushImage() { + if(observer != null) { + observer.pushImage(); + } + } + + /** + * Auch die anzeigenden Klasse wird zum Neuzeichnen aufgefordert. + */ + private void repaint() { + if(observer != null) { + observer.repaint(); + } + } + + // ----------------------------------------- Zeichenfunktionen ----------------------------------------------- + /** + * Löscht den Inhalt des Bildes. + * Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt. + */ + + public void clear(){ + pushImage(); + image = new BufferedImage(image.getWidth(), image.getHeight(), image.getType()); + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(background); + g.fillRect(0,0,image.getWidth()-1, image.getHeight()-1); + repaint(); + } + + /** + * Konvertiert die in einem bestimmten Modus gegebenen Koordinaten in die Java-übliche Links_Oben_Breite_Höhe Version + * Die Änderungen werden direkt im Array vorgenommen + * @param coord Array mit vier Koordinateneinträgen im gegebenen Modus + * @param mode Modus der Koordinaten (CORNER, CORNERS, RADIUS oder CENTER) + */ + private void convert(int[] coord, int mode) { + switch(mode) { + case CORNER: break; + case CORNERS: coord[2] -= coord[0]; coord[3] -= coord[1]; break; + case RADIUS: coord[2] *= 2; coord[3] *=2; + case CENTER: coord[0] -= coord[2]/2; coord[1] -= coord[3]/2; + } + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + * Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + * Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void rectMode(int mode) { + rectMode = mode; + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + * Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + * Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als Breite und Höhe der Form. + * ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void ellipseMode(int mode) { + ellipseMode = mode; + } + + + + /** + * Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + * Um eine Linie einzufärben, verwenden Sie die {@link #stroke(int, int, int) stroke()} Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + * Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + * {@link #strokeWeight(double) strokeWeight()} geändert werden. + * @param x1 x-Koordinate des 1. Punktes + * @param y1 y-Koordinate des 1. Punktes + * @param x2 x-Koordinate des 2. Punktes + * @param y2 y-Koordinate des 2. Punktes + */ + public void line(int x1, int y1, int x2, int y2) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + if (stroke > 0) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawLine(x1, y1, x2, y2); + } + repaint(); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, rectMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillRect(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawRect(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, ellipseMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillOval(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawOval(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + int px[] = {x1, x2, x3}; + int py[] = {y1, y2, y3}; + polygon(px, py); + + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + + int px[] = {x1, x2, x3, x4}; + int py[] = {y1, y2, y3, y4}; + polygon(px, py); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + + public void polygon(int[] x, int[] y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(fillcolor != null) { + + g.setColor(fillcolor); + g.fillPolygon(x,y, y.length); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawPolygon(x, y, x.length); + } + repaint(); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + ellipse(x,y,1, 1); + + } + + // ----------------------------------------- Schriftdarstellung ----------------------------------------------- + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param s Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String s, int x, int y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(pencolor != null) { + g.setColor(fillcolor); + g.setStroke(new BasicStroke((float) stroke)); + g.setFont(textfont); + g.drawString(s, x, y); + } + repaint(); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + this.textfont = font; + } + + + // ----------------------------------------- Farbfestlegungen ----------------------------------------------- + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(String color) { + try{ + return new Color( + Integer.valueOf( color.substring( 0, 2 ), 16 ), + Integer.valueOf( color.substring( 2, 4 ), 16 ), + Integer.valueOf( color.substring( 4, 6 ), 16 ) ); + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(int color) { + try{ + if(color >=0 && color < 256) { + return new Color(color,color,color); + } else { + int r = color / 0x010000 % 0xFF; + int g = color / 0x000100 % 0xFF; + int b = color % 0xFF; + System.out.println(""+r+","+g+","+b); + return new Color(r, g, b ); + } + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + this.pencolor = decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + this.pencolor=decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + this.pencolor = new Color(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + this.pencolor = null; + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + this.stroke = width; + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + this.fillcolor = decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + this.fillcolor=decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + this.fillcolor = new Color(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + this.fillcolor = null; + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + if(c < 256) { + this.background=new Color(c,c,c); + } else { + int r = c / 0x010000; + int g = c / 0x000100 % 0xFF; + int b = c % 0xFF; + this.background= new Color(r, g, b ); + } + + this.clear(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + this.background=new Color(r,g,b); + this.clear(); + } + + +// ----------------------------------------- Dateioperationen ----------------------------------------------- + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + try{ + this.image = ImageIO.read(new File(filename)); + this.background = decode("D0D0D0"); + this.pencolor = new Color(0,0,0); + this.fillcolor = null; + this.stroke = 1; + this.repaint(); + + } catch(Exception e) { + System.out.println("Fehler beim Einlesen der Bilddatei"); + } + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + try{ + String[] fn = filename.split("\\."); + if (fn.length== 1) { + ImageIO.write(image, "PNG", new File(filename+".png")); + } else { + + if (fn.length == 2 && (fn[1].toUpperCase().equals("PNG") || + fn[1].toUpperCase().equals("GIF"))){ + ImageIO.write(image, fn[1], new File(filename)); + }else { + System.out.println("Unbekanntes Bildformat"); + } + } + + } catch(Exception e) { + System.out.println("Fehler beim Speichern"); + } + } + + +// ----------------------------------------- Sonstiges ----------------------------------------------- + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + + public Color[][] getPixelArray() { + Color[][] pixel = new Color[image.getWidth()][image.getHeight()]; + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + pixel[x][y] = new java.awt.Color(image.getRGB(x,y)); + } + } + return pixel; + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + size(pixel.length,pixel[0].length); + Graphics2D g = (Graphics2D) image.getGraphics(); + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + g.setColor(pixel[x][y]); + g.fillRect(x, y, 1, 1); + } + } + repaint(); + } + + /** + * Hilfsfunktion zum Verzögern der Ausgabe + * @param millis Wartezeit in Millisekunden + */ + public void delay(int millis) { + try{ + Thread.sleep(millis); + + } catch(Exception e) { + + } + + } + + + +} diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg03a_wasmacheich/PictureViewer.java b/03_vorlagen_tauschordner/02_greenfoot/alg03a_wasmacheich/PictureViewer.java new file mode 100644 index 0000000..a52c8b1 --- /dev/null +++ b/03_vorlagen_tauschordner/02_greenfoot/alg03a_wasmacheich/PictureViewer.java @@ -0,0 +1,507 @@ +import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot und MouseInfo) +import java.awt.image.*; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.BasicStroke; +import java.awt.Font; +import java.util.Vector; +import java.awt.Color; +import javax.imageio.*; +import java.io.*; + + +/** + * Der PictureViewer ist ein Actor, der in der Lage ist ein + * Objekt der Klasse Picture anzuzeigen. Zusätzlich können + * mehrere Verarbeitungsschritte gespeichert werden, um ein + * "zurück"-Funktion zu ermöglichen. + * + * @author Thomas Schaller + * @version V1.0 vom 10.02.2019 + */ +public class PictureViewer extends Actor +{ + public static final int FIT = -1; + public static final int NORMAL = 1; + + private static final int ANZ_BACK = 0; + + private double zoom; + private boolean autoRefresh = true; + protected Picture picture = null; + private Vector history; + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der Größe 500x400 + */ + public PictureViewer() { + this(500,400); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public PictureViewer(int width, int height) { + this(width,height, "D0D0D0"); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + * @param background Farbe des Hintergrunds als HEX-String (z.B. "FF3A45") + */ + public PictureViewer(int width, int height, String background) { + picture = new Picture(width,height, background); + picture.setObserver(this); + this.history = new Vector(); + this.zoom = NORMAL; + repaint(); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild aus einer Bilddatei + * @param filename Name des Bildes + */ + public PictureViewer(String filename) { + picture = new Picture(filename); + picture.setObserver(this); + this.history = new Vector(); + this.zoom = NORMAL; + repaint(); + } + + + /** + * Speichert das übergebene Bild in der History. + * @param b zu speicherndes Bild + */ + public void pushImage() { + if( this.ANZ_BACK > 0) { + if(history.size() == this.ANZ_BACK) { + history.removeElementAt(0); + } + + BufferedImage b = new BufferedImage(picture.getWidth(), picture.getHeight(), picture.getImage().getType()); + Graphics g = b.getGraphics(); + g.drawImage(picture.getImage(), 0, 0, null); + g.dispose(); + + history.add(b); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + private void popImage() { + int anz = history.size(); + if(anz>0) { + BufferedImage i = history.get(anz-1); + history.removeElementAt(anz-1); + picture.setImage(i); + repaint(); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + public void back() { + popImage(); + } + + + /** + * Setzt den Zoom-Faktor für das Bild. + * Als Zoomfaktor sind auch die Konstanten Bildanzeiger.FIT (auf Bildschirmgröße zoomen) und Bildanzeiger.NORMAL (100%) möglich. + * @param factor Zoomfaktor (1.0 = 100%). + */ + public void setZoom(double zoom) { + this.zoom = zoom; + repaint(); + } + + /** + * Setzt die automatische Neuanzeige des Bildes. + * Mit dieser Methode kann man einstellen, ob nach jedem Zeichenbefehl + * die Anzeige auf dem Bildschirm aktualisiert werden soll. Bei sehr + * vielen Zeichenbefehlen wird die Ausgabe dadurch sehr langsam. Es reicht + * eine Anzeige am Ende der Zeichenbefehle. Rufen Sie dann für das Neuzeichnen + * die Methode refresh() auf. + * @param autoRefresh true, wenn nach jedem Zeichenbefehl die Anzeige aktualisiert werden soll. + */ + public void setAutoRefresh(boolean autoRefresh) { + this.autoRefresh = autoRefresh; + } + + /** + * Sorgt für die Aktualisierung der Bildschrimanzeige. Das aktuelle Bild + * wird dadurch angezeigt. Durch Einstellung von autoRefresh kann die + * Anzeige automatisiert werden. + */ + public void refresh() { + double faktor = zoom; + + if (zoom == FIT) { + double faktorw = (double) this.getWorld().getWidth() / picture.getWidth(); + double faktorh = (double) this.getWorld().getHeight() / picture.getHeight(); + faktor = Math.min(faktorw, faktorh); + } + int gfi_width = (int) (picture.getWidth()*faktor); + int gfi_height = (int) (picture.getHeight()*faktor); + + setImage(new GreenfootImage(gfi_width, gfi_height)); + Graphics2D g = (Graphics2D) this.getImage().getAwtImage().getGraphics(); + g.drawImage(picture.getImage(),0,0,gfi_width, gfi_height, 0, 0, picture.getWidth(), picture.getHeight(), null); + g.setColor(new java.awt.Color(0,0,0)); + g.setStroke(new BasicStroke((float) 1)); + g.drawRect(0,0,gfi_width-1, gfi_height-1); + } + + /** + * Setzt das angezeigt Bild neu und beachtet dabei den Zoomfaktor. + */ + public void repaint() { + if(autoRefresh) { + refresh(); + } + + } + + // Wrappermethoden + /** + * Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + * Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + * der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu. + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public void size(int width, int height){ + picture.size(width, height); + } + + /** + * Liefert die Breite des Bildes zurück. + * @return Breite des Bildes + */ + public int getImageWidth() { + return picture.getWidth(); + } + + /** + * Liefert die Höhe des Bildes zurück. + * @return Höhe des Bildes + */ + public int getImageHeight() { + return picture.getHeight(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + picture.background(c); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + picture.background(r,g,b); + } + + /** + * Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + * Um eine Linie einzufärben, verwenden Sie die {@link #stroke(int, int, int) stroke()} Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + * Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + * {@link #strokeWeight(double) strokeWeight()} geändert werden. + * @param x1 x-Koordinate des 1. Punktes + * @param y1 y-Koordinate des 1. Punktes + * @param x2 x-Koordinate des 2. Punktes + * @param y2 y-Koordinate des 2. Punktes + */ + public void line(int x1, int y1, int x2, int y2) { + picture.line(x1,y1,x2,y2); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + picture.rect(a,b,c,d); + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + picture.ellipse(a,b,c,d); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + picture.triangle(x1,y1,x2,y2,x3,y3); + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + picture.quad(x1,y1,x2,y2,x3,y3,x4,y4); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + public void polygon(int[] x, int[] y) { + picture.polygon(x,y); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + picture.point(x,y); + + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + * Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + * Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void rectMode(int mode) { + picture.rectMode(mode); + } + + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + * Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + * Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als Breite und Höhe der Form. + * ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void ellipseMode(int mode) { + picture.ellipseMode(mode); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + picture.stroke(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + picture.noStroke(); + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + picture.strokeWeight(width); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + picture.fill(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + picture.noFill(); + } + + /** + * Löscht den Inhalt des Bildes. + * Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt. + */ + public void clear(){ + picture.clear(); + } + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + picture.load(filename); + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + picture.save(filename); + } + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param t Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String t, int x, int y) { + picture.text(t,x,y); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + picture.textFont(font); + } + + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + public Color[][] getPixelArray() { + return picture.getPixelArray(); + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + picture.setPixelArray(pixel); + } + + + +} + diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg03a_wasmacheich/README.TXT b/03_vorlagen_tauschordner/02_greenfoot/alg03a_wasmacheich/README.TXT new file mode 100644 index 0000000..4b8fadd --- /dev/null +++ b/03_vorlagen_tauschordner/02_greenfoot/alg03a_wasmacheich/README.TXT @@ -0,0 +1,14 @@ +------------------------------------------------------------------------ +Dies ist die README-Datei des Projekts. Hier sollten Sie Ihr Projekt +beschreiben. +Erzählen Sie dem Leser (jemand, der nichts über dieses Projekt weiss), +alles, was er/sie wissen muss. Üblicherweise sollte der Kommentar +zumindest die folgenden Angaben umfassen: +------------------------------------------------------------------------ + +PROJEKTBEZEICHNUNG: +PROJEKTZWECK: +VERSION oder DATUM: +WIE IST DAS PROJEKT ZU STARTEN: +AUTOR(EN): +BENUTZERHINWEISE: diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg03a_wasmacheich/Zeichnung.java b/03_vorlagen_tauschordner/02_greenfoot/alg03a_wasmacheich/Zeichnung.java new file mode 100644 index 0000000..00beaf4 --- /dev/null +++ b/03_vorlagen_tauschordner/02_greenfoot/alg03a_wasmacheich/Zeichnung.java @@ -0,0 +1,24 @@ +import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot und MouseInfo) +import java.awt.Font; + +/** + * Entdecken von Zeichenmethoden + * + * @author Eisenmann, Vorlage: Schaller + * @version 13.03.19 + */ +public class Zeichnung extends PictureViewer + +{ + public Zeichnung() { + size(700, 400); + waszeichneich(); // Aufruf der Methode + } + + void waszeichneich() { + line(100, 50, 200, 100); + ellipse(100, 200, 50, 100); + rect(300, 100, 250, 20); + } + +} diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg03a_wasmacheich/images/balken.png b/03_vorlagen_tauschordner/02_greenfoot/alg03a_wasmacheich/images/balken.png new file mode 100644 index 0000000..9ff1ffc Binary files /dev/null and b/03_vorlagen_tauschordner/02_greenfoot/alg03a_wasmacheich/images/balken.png differ diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg03a_wasmacheich/images/bilderrahmen.png b/03_vorlagen_tauschordner/02_greenfoot/alg03a_wasmacheich/images/bilderrahmen.png new file mode 100644 index 0000000..7f34e32 Binary files /dev/null and b/03_vorlagen_tauschordner/02_greenfoot/alg03a_wasmacheich/images/bilderrahmen.png differ diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg03a_wasmacheich/project.greenfoot b/03_vorlagen_tauschordner/02_greenfoot/alg03a_wasmacheich/project.greenfoot new file mode 100644 index 0000000..dee232b --- /dev/null +++ b/03_vorlagen_tauschordner/02_greenfoot/alg03a_wasmacheich/project.greenfoot @@ -0,0 +1,66 @@ +#Greenfoot project file +class.PictureViewer.image=bilderrahmen.png +class.Zeichnung.image=balken.png +dependency1.from=MyWorld +dependency1.to=Zeichnung +dependency1.type=UsesDependency +dependency2.from=PictureViewer +dependency2.to=Picture +dependency2.type=UsesDependency +dependency3.from=Picture +dependency3.to=PictureViewer +dependency3.type=UsesDependency +editor.fx.0.height=0 +editor.fx.0.width=0 +editor.fx.0.x=0 +editor.fx.0.y=0 +height=885 +package.numDependencies=3 +package.numTargets=4 +project.charset=UTF-8 +publish.hasSource=false +publish.locked=true +publish.longDesc= +publish.shortDesc= +publish.tags= +publish.title= +publish.url= +readme.height=58 +readme.name=@README +readme.width=47 +readme.x=10 +readme.y=10 +simulation.speed=97 +target1.height=50 +target1.name=PictureViewer +target1.showInterface=false +target1.type=ClassTarget +target1.width=100 +target1.x=0 +target1.y=0 +target2.height=50 +target2.name=Zeichnung +target2.showInterface=false +target2.type=ClassTarget +target2.width=120 +target2.x=0 +target2.y=0 +target3.height=50 +target3.name=Picture +target3.showInterface=false +target3.type=ClassTarget +target3.width=80 +target3.x=0 +target3.y=0 +target4.height=50 +target4.name=MyWorld +target4.showInterface=false +target4.type=ClassTarget +target4.width=80 +target4.x=0 +target4.y=0 +version=3.0.0 +width=1350 +world.lastInstantiated=MyWorld +xPosition=271 +yPosition=94 diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg03b_figuren/MyWorld.java b/03_vorlagen_tauschordner/02_greenfoot/alg03b_figuren/MyWorld.java new file mode 100644 index 0000000..61aee6c --- /dev/null +++ b/03_vorlagen_tauschordner/02_greenfoot/alg03b_figuren/MyWorld.java @@ -0,0 +1,36 @@ +import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot und MouseInfo) + +/** + * Ergänzen Sie hier eine Beschreibung für die Klasse MyWorld. + * + * @author (Ihr Name) + * @version (eine Versionsnummer oder ein Datum) + */ +public class MyWorld extends World +{ + + /** + * Konstruktor für Objekte der Klasse MyWorld + * + */ + public MyWorld() + { + // Erstellt eine neue Welt mit 1200x900 Pixeln + super(1000, 700, 1); + + prepare(); + } + + + /** + * Bereite die Welt für den Programmstart vor. + * Das heißt: Erzeuge die Anfangs-Objekte und füge sie der Welt hinzu. + */ + private void prepare() + { + Zeichnung zeichnung = new Zeichnung(); + addObject(zeichnung,500,350); + + } +} + diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg03b_figuren/Picture.java b/03_vorlagen_tauschordner/02_greenfoot/alg03b_figuren/Picture.java new file mode 100644 index 0000000..cf9d8a8 --- /dev/null +++ b/03_vorlagen_tauschordner/02_greenfoot/alg03b_figuren/Picture.java @@ -0,0 +1,677 @@ +import java.awt.image.*; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.BasicStroke; +import java.util.Vector; +import javax.imageio.*; +import java.io.*; +import java.awt.*; +import javax.swing.*; +import java.util.Random; +import java.awt.geom.AffineTransform; +/** + * + * Bildklasse für die Simulation von Processing-Befehlen + * + * Diese Klasse stellt ein BufferedImage bereit, in das mit Processing-Befehlen gezeichnet + * werden kann. + * Zusätzlich kann ein Bildanzeiger über jede Änderung des Bildes informiert werden, + * um "Zurück"-Befehle zu ermöglichen. Der Bildanzeiger ist entweder eine normale Java + * ScrollPane oder ein Actor aus Greenfoot. + * Die Dokumentation der einzelnen Zeichenmethoden ist der Processing-Reference + * (https://processing.org/reference/ steht unter CC-Lizenz: https://creativecommons.org/) + * entnommen und mit Deepl.com ins Deutsche übersetzt. + * + * @version 1.0 from 23.01.2019 + * @author Thomas Schaller (ZPG Informatik Klasse 9) + */ + + +public class Picture{ + + // Einstellungmöglichkeiten für das Zeichnen von Rechtecken und Ellipsen + // RADIUS = Mittelpunkt+Radius wird gegeben, CENTER = Mittelpunkt und Breite/Höhe wird gegeben, + // CORNER = Linke obere Ecke + Breite/Höhe, CORNERS = Linke obere und rechte untere Ecke + public static final int RADIUS = 1; + public static final int CENTER = 2; + public static final int CORNER = 3; + public static final int CORNERS = 4; + + // gespeichertes Bild, + private BufferedImage image; + + // aktuelle Farbeinstellungen + private Color background; + private Color pencolor; + private Color fillcolor; + + // aktuelle Stiftdicke + private double stroke; + + // akkteller Koordinatenmodus von Rechtecken und Ellipsen + private int ellipseMode = CENTER; + private int rectMode = CORNER; + + // aktueller Font + private Font textfont = null; + + // muss ein Bildanzeiger benachrichtigt werden + private PictureViewer observer = null; + + /** + * Erzeugt ein Bild mit Standardgröße 500x400 + */ + public Picture() { + this(500,400); + } + + /** + * Erzeugt ein Bild der angegeben Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public Picture(int width, int height) { + this(width,height, "D0D0D0"); + } + + /** + * Erzeugt ein Bild aus einer Datei + * @param filename Dateiname des Bildes + */ + public Picture(String filename) { + load(filename); + } + + /** + * Erzeugt ein Bild der angegebenen Größe mit festgelegtem Hintergrund + * @param width Breite des Bildes + * @param height Höhe des Bildes + * @param background Farbe des Hintergrunds + */ + public Picture(int width, int height, String background) { + this.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + this.background = decode(background); + this.pencolor = new Color(0,0,0); + this.stroke = 1; + this.fillcolor = null; + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(this.background); + g.fillRect(0,0,width-1, height-1); + } + + /** + * Legt fest, wer das Bild anzeigt. + * Diese ermöglicht die Benachrichtung des Observers, wenn sich das Bild ändert. + * @param observer Anzeiger des Bildes + */ + + public void setObserver(PictureViewer observer) { + this.observer= observer; + } + + /** + * Direktes Setzen des Bildes (für interne Zwecke) + * @param b Bild, das gespeichert werden soll. + */ + public void setImage(BufferedImage b) { + image = b; + } + + /** + * Direktes Abfragen des Bildes (für interne Zwecke) + * @return Bild, das gerade gespeichert ist. + */ + public BufferedImage getImage() { + return image; + } + + /** + * Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + * Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + * der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu. + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public void size(int width, int height){ + pushImage(); + this.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(background); + g.fillRect(0,0,width-1, height-1); + } + + /** + * Liefert die Breite des Bildes zurück. + * @return Breite des Bildes + */ + public int getWidth() { + return image.getWidth(); + } + + /** + * Liefert die Höhe des Bildes zurück. + * @return Höhe des Bildes + */ + public int getHeight() { + return image.getHeight(); + } + + + /** + * Erzeugt eine Kopie des Bildes und übergibt sie an den Observer (falls existent), damit dieser die Versionen speichern kann + */ + private void pushImage() { + if(observer != null) { + observer.pushImage(); + } + } + + /** + * Auch die anzeigenden Klasse wird zum Neuzeichnen aufgefordert. + */ + private void repaint() { + if(observer != null) { + observer.repaint(); + } + } + + // ----------------------------------------- Zeichenfunktionen ----------------------------------------------- + /** + * Löscht den Inhalt des Bildes. + * Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt. + */ + + public void clear(){ + pushImage(); + image = new BufferedImage(image.getWidth(), image.getHeight(), image.getType()); + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(background); + g.fillRect(0,0,image.getWidth()-1, image.getHeight()-1); + repaint(); + } + + /** + * Konvertiert die in einem bestimmten Modus gegebenen Koordinaten in die Java-übliche Links_Oben_Breite_Höhe Version + * Die Änderungen werden direkt im Array vorgenommen + * @param coord Array mit vier Koordinateneinträgen im gegebenen Modus + * @param mode Modus der Koordinaten (CORNER, CORNERS, RADIUS oder CENTER) + */ + private void convert(int[] coord, int mode) { + switch(mode) { + case CORNER: break; + case CORNERS: coord[2] -= coord[0]; coord[3] -= coord[1]; break; + case RADIUS: coord[2] *= 2; coord[3] *=2; + case CENTER: coord[0] -= coord[2]/2; coord[1] -= coord[3]/2; + } + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + * Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + * Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void rectMode(int mode) { + rectMode = mode; + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + * Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + * Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als Breite und Höhe der Form. + * ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void ellipseMode(int mode) { + ellipseMode = mode; + } + + + + /** + * Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + * Um eine Linie einzufärben, verwenden Sie die {@link #stroke(int, int, int) stroke()} Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + * Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + * {@link #strokeWeight(double) strokeWeight()} geändert werden. + * @param x1 x-Koordinate des 1. Punktes + * @param y1 y-Koordinate des 1. Punktes + * @param x2 x-Koordinate des 2. Punktes + * @param y2 y-Koordinate des 2. Punktes + */ + public void line(int x1, int y1, int x2, int y2) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + if (stroke > 0) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawLine(x1, y1, x2, y2); + } + repaint(); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, rectMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillRect(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawRect(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, ellipseMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillOval(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawOval(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + int px[] = {x1, x2, x3}; + int py[] = {y1, y2, y3}; + polygon(px, py); + + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + + int px[] = {x1, x2, x3, x4}; + int py[] = {y1, y2, y3, y4}; + polygon(px, py); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + + public void polygon(int[] x, int[] y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(fillcolor != null) { + + g.setColor(fillcolor); + g.fillPolygon(x,y, y.length); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawPolygon(x, y, x.length); + } + repaint(); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + ellipse(x,y,1, 1); + + } + + // ----------------------------------------- Schriftdarstellung ----------------------------------------------- + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param s Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String s, int x, int y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(pencolor != null) { + g.setColor(fillcolor); + g.setStroke(new BasicStroke((float) stroke)); + g.setFont(textfont); + g.drawString(s, x, y); + } + repaint(); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + this.textfont = font; + } + + + // ----------------------------------------- Farbfestlegungen ----------------------------------------------- + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(String color) { + try{ + return new Color( + Integer.valueOf( color.substring( 0, 2 ), 16 ), + Integer.valueOf( color.substring( 2, 4 ), 16 ), + Integer.valueOf( color.substring( 4, 6 ), 16 ) ); + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(int color) { + try{ + if(color >=0 && color < 256) { + return new Color(color,color,color); + } else { + int r = color / 0x010000 % 0xFF; + int g = color / 0x000100 % 0xFF; + int b = color % 0xFF; + System.out.println(""+r+","+g+","+b); + return new Color(r, g, b ); + } + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + this.pencolor = decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + this.pencolor=decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + this.pencolor = new Color(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + this.pencolor = null; + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + this.stroke = width; + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + this.fillcolor = decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + this.fillcolor=decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + this.fillcolor = new Color(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + this.fillcolor = null; + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + if(c < 256) { + this.background=new Color(c,c,c); + } else { + int r = c / 0x010000; + int g = c / 0x000100 % 0xFF; + int b = c % 0xFF; + this.background= new Color(r, g, b ); + } + + this.clear(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + this.background=new Color(r,g,b); + this.clear(); + } + + +// ----------------------------------------- Dateioperationen ----------------------------------------------- + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + try{ + this.image = ImageIO.read(new File(filename)); + this.background = decode("D0D0D0"); + this.pencolor = new Color(0,0,0); + this.fillcolor = null; + this.stroke = 1; + this.repaint(); + + } catch(Exception e) { + System.out.println("Fehler beim Einlesen der Bilddatei"); + } + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + try{ + String[] fn = filename.split("\\."); + if (fn.length== 1) { + ImageIO.write(image, "PNG", new File(filename+".png")); + } else { + + if (fn.length == 2 && (fn[1].toUpperCase().equals("PNG") || + fn[1].toUpperCase().equals("GIF"))){ + ImageIO.write(image, fn[1], new File(filename)); + }else { + System.out.println("Unbekanntes Bildformat"); + } + } + + } catch(Exception e) { + System.out.println("Fehler beim Speichern"); + } + } + + +// ----------------------------------------- Sonstiges ----------------------------------------------- + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + + public Color[][] getPixelArray() { + Color[][] pixel = new Color[image.getWidth()][image.getHeight()]; + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + pixel[x][y] = new java.awt.Color(image.getRGB(x,y)); + } + } + return pixel; + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + size(pixel.length,pixel[0].length); + Graphics2D g = (Graphics2D) image.getGraphics(); + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + g.setColor(pixel[x][y]); + g.fillRect(x, y, 1, 1); + } + } + repaint(); + } + + /** + * Hilfsfunktion zum Verzögern der Ausgabe + * @param millis Wartezeit in Millisekunden + */ + public void delay(int millis) { + try{ + Thread.sleep(millis); + + } catch(Exception e) { + + } + + } + + + +} diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg03b_figuren/PictureViewer.java b/03_vorlagen_tauschordner/02_greenfoot/alg03b_figuren/PictureViewer.java new file mode 100644 index 0000000..a52c8b1 --- /dev/null +++ b/03_vorlagen_tauschordner/02_greenfoot/alg03b_figuren/PictureViewer.java @@ -0,0 +1,507 @@ +import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot und MouseInfo) +import java.awt.image.*; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.BasicStroke; +import java.awt.Font; +import java.util.Vector; +import java.awt.Color; +import javax.imageio.*; +import java.io.*; + + +/** + * Der PictureViewer ist ein Actor, der in der Lage ist ein + * Objekt der Klasse Picture anzuzeigen. Zusätzlich können + * mehrere Verarbeitungsschritte gespeichert werden, um ein + * "zurück"-Funktion zu ermöglichen. + * + * @author Thomas Schaller + * @version V1.0 vom 10.02.2019 + */ +public class PictureViewer extends Actor +{ + public static final int FIT = -1; + public static final int NORMAL = 1; + + private static final int ANZ_BACK = 0; + + private double zoom; + private boolean autoRefresh = true; + protected Picture picture = null; + private Vector history; + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der Größe 500x400 + */ + public PictureViewer() { + this(500,400); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public PictureViewer(int width, int height) { + this(width,height, "D0D0D0"); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + * @param background Farbe des Hintergrunds als HEX-String (z.B. "FF3A45") + */ + public PictureViewer(int width, int height, String background) { + picture = new Picture(width,height, background); + picture.setObserver(this); + this.history = new Vector(); + this.zoom = NORMAL; + repaint(); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild aus einer Bilddatei + * @param filename Name des Bildes + */ + public PictureViewer(String filename) { + picture = new Picture(filename); + picture.setObserver(this); + this.history = new Vector(); + this.zoom = NORMAL; + repaint(); + } + + + /** + * Speichert das übergebene Bild in der History. + * @param b zu speicherndes Bild + */ + public void pushImage() { + if( this.ANZ_BACK > 0) { + if(history.size() == this.ANZ_BACK) { + history.removeElementAt(0); + } + + BufferedImage b = new BufferedImage(picture.getWidth(), picture.getHeight(), picture.getImage().getType()); + Graphics g = b.getGraphics(); + g.drawImage(picture.getImage(), 0, 0, null); + g.dispose(); + + history.add(b); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + private void popImage() { + int anz = history.size(); + if(anz>0) { + BufferedImage i = history.get(anz-1); + history.removeElementAt(anz-1); + picture.setImage(i); + repaint(); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + public void back() { + popImage(); + } + + + /** + * Setzt den Zoom-Faktor für das Bild. + * Als Zoomfaktor sind auch die Konstanten Bildanzeiger.FIT (auf Bildschirmgröße zoomen) und Bildanzeiger.NORMAL (100%) möglich. + * @param factor Zoomfaktor (1.0 = 100%). + */ + public void setZoom(double zoom) { + this.zoom = zoom; + repaint(); + } + + /** + * Setzt die automatische Neuanzeige des Bildes. + * Mit dieser Methode kann man einstellen, ob nach jedem Zeichenbefehl + * die Anzeige auf dem Bildschirm aktualisiert werden soll. Bei sehr + * vielen Zeichenbefehlen wird die Ausgabe dadurch sehr langsam. Es reicht + * eine Anzeige am Ende der Zeichenbefehle. Rufen Sie dann für das Neuzeichnen + * die Methode refresh() auf. + * @param autoRefresh true, wenn nach jedem Zeichenbefehl die Anzeige aktualisiert werden soll. + */ + public void setAutoRefresh(boolean autoRefresh) { + this.autoRefresh = autoRefresh; + } + + /** + * Sorgt für die Aktualisierung der Bildschrimanzeige. Das aktuelle Bild + * wird dadurch angezeigt. Durch Einstellung von autoRefresh kann die + * Anzeige automatisiert werden. + */ + public void refresh() { + double faktor = zoom; + + if (zoom == FIT) { + double faktorw = (double) this.getWorld().getWidth() / picture.getWidth(); + double faktorh = (double) this.getWorld().getHeight() / picture.getHeight(); + faktor = Math.min(faktorw, faktorh); + } + int gfi_width = (int) (picture.getWidth()*faktor); + int gfi_height = (int) (picture.getHeight()*faktor); + + setImage(new GreenfootImage(gfi_width, gfi_height)); + Graphics2D g = (Graphics2D) this.getImage().getAwtImage().getGraphics(); + g.drawImage(picture.getImage(),0,0,gfi_width, gfi_height, 0, 0, picture.getWidth(), picture.getHeight(), null); + g.setColor(new java.awt.Color(0,0,0)); + g.setStroke(new BasicStroke((float) 1)); + g.drawRect(0,0,gfi_width-1, gfi_height-1); + } + + /** + * Setzt das angezeigt Bild neu und beachtet dabei den Zoomfaktor. + */ + public void repaint() { + if(autoRefresh) { + refresh(); + } + + } + + // Wrappermethoden + /** + * Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + * Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + * der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu. + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public void size(int width, int height){ + picture.size(width, height); + } + + /** + * Liefert die Breite des Bildes zurück. + * @return Breite des Bildes + */ + public int getImageWidth() { + return picture.getWidth(); + } + + /** + * Liefert die Höhe des Bildes zurück. + * @return Höhe des Bildes + */ + public int getImageHeight() { + return picture.getHeight(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + picture.background(c); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + picture.background(r,g,b); + } + + /** + * Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + * Um eine Linie einzufärben, verwenden Sie die {@link #stroke(int, int, int) stroke()} Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + * Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + * {@link #strokeWeight(double) strokeWeight()} geändert werden. + * @param x1 x-Koordinate des 1. Punktes + * @param y1 y-Koordinate des 1. Punktes + * @param x2 x-Koordinate des 2. Punktes + * @param y2 y-Koordinate des 2. Punktes + */ + public void line(int x1, int y1, int x2, int y2) { + picture.line(x1,y1,x2,y2); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + picture.rect(a,b,c,d); + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + picture.ellipse(a,b,c,d); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + picture.triangle(x1,y1,x2,y2,x3,y3); + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + picture.quad(x1,y1,x2,y2,x3,y3,x4,y4); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + public void polygon(int[] x, int[] y) { + picture.polygon(x,y); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + picture.point(x,y); + + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + * Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + * Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void rectMode(int mode) { + picture.rectMode(mode); + } + + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + * Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + * Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als Breite und Höhe der Form. + * ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void ellipseMode(int mode) { + picture.ellipseMode(mode); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + picture.stroke(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + picture.noStroke(); + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + picture.strokeWeight(width); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + picture.fill(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + picture.noFill(); + } + + /** + * Löscht den Inhalt des Bildes. + * Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt. + */ + public void clear(){ + picture.clear(); + } + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + picture.load(filename); + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + picture.save(filename); + } + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param t Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String t, int x, int y) { + picture.text(t,x,y); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + picture.textFont(font); + } + + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + public Color[][] getPixelArray() { + return picture.getPixelArray(); + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + picture.setPixelArray(pixel); + } + + + +} + diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg03b_figuren/README.TXT b/03_vorlagen_tauschordner/02_greenfoot/alg03b_figuren/README.TXT new file mode 100644 index 0000000..4b8fadd --- /dev/null +++ b/03_vorlagen_tauschordner/02_greenfoot/alg03b_figuren/README.TXT @@ -0,0 +1,14 @@ +------------------------------------------------------------------------ +Dies ist die README-Datei des Projekts. Hier sollten Sie Ihr Projekt +beschreiben. +Erzählen Sie dem Leser (jemand, der nichts über dieses Projekt weiss), +alles, was er/sie wissen muss. Üblicherweise sollte der Kommentar +zumindest die folgenden Angaben umfassen: +------------------------------------------------------------------------ + +PROJEKTBEZEICHNUNG: +PROJEKTZWECK: +VERSION oder DATUM: +WIE IST DAS PROJEKT ZU STARTEN: +AUTOR(EN): +BENUTZERHINWEISE: diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg03b_figuren/Zeichnung.java b/03_vorlagen_tauschordner/02_greenfoot/alg03b_figuren/Zeichnung.java new file mode 100644 index 0000000..62a2480 --- /dev/null +++ b/03_vorlagen_tauschordner/02_greenfoot/alg03b_figuren/Zeichnung.java @@ -0,0 +1,38 @@ +import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot und MouseInfo) +import java.awt.Font; + +/** + * Entdecken von Zeichenmethoden + * + * @author Eisenmann, Vorlage: Schaller + * @version 13.03.19 + */ +public class Zeichnung extends PictureViewer + +{ + public Zeichnung() { + size(500, 350); + zeichneBildC(); // Aufruf deiner Methode + // zeichneBildA(); + } + + void zeichneBildC() { + // Zeichne dir zunächst eine Skizze auf ein Blatt Papier und überlege dir, welche + // Werte du den Methoden rect(x,y,b,h) und ellipse(x,y,b,h) übergeben musst, + // dass Bild C gezeichnet wird + + // ***** hier kommen deine Anweisungen hin ************ + + + // ***** Ende der eigenen Anweisungen ********** + } + + // Zusatzaufgabe bzw. Hausaufgabe: + void zeichneBildA(){ + // ******** hier kommen deine Anweisungen hin *********** + + + // ******** Ende der eigenen Anweisungen *************** + } + +} diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg03b_figuren/images/balken.png b/03_vorlagen_tauschordner/02_greenfoot/alg03b_figuren/images/balken.png new file mode 100644 index 0000000..9ff1ffc Binary files /dev/null and b/03_vorlagen_tauschordner/02_greenfoot/alg03b_figuren/images/balken.png differ diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg03b_figuren/images/bilderrahmen.png b/03_vorlagen_tauschordner/02_greenfoot/alg03b_figuren/images/bilderrahmen.png new file mode 100644 index 0000000..7f34e32 Binary files /dev/null and b/03_vorlagen_tauschordner/02_greenfoot/alg03b_figuren/images/bilderrahmen.png differ diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg03b_figuren/project.greenfoot b/03_vorlagen_tauschordner/02_greenfoot/alg03b_figuren/project.greenfoot new file mode 100644 index 0000000..76f0147 --- /dev/null +++ b/03_vorlagen_tauschordner/02_greenfoot/alg03b_figuren/project.greenfoot @@ -0,0 +1,78 @@ +#Greenfoot project file +class.MyWorld.superclass=greenfoot.World +class.Picture.superclass= +class.PictureViewer.image=bilderrahmen.png +class.PictureViewer.superclass=greenfoot.Actor +class.Zeichnung.image=balken.png +class.Zeichnung.superclass=PictureViewer +dependency1.from=PictureViewer +dependency1.to=Picture +dependency1.type=UsesDependency +dependency2.from=Picture +dependency2.to=PictureViewer +dependency2.type=UsesDependency +dependency3.from=MyWorld +dependency3.to=Zeichnung +dependency3.type=UsesDependency +editor.fx.0.height=739 +editor.fx.0.width=816 +editor.fx.0.x=1042 +editor.fx.0.y=22 +height=885 +mainWindow.height=881 +mainWindow.width=1281 +mainWindow.x=40 +mainWindow.y=40 +package.numDependencies=3 +package.numTargets=4 +project.charset=UTF-8 +publish.hasSource=false +publish.locked=true +publish.longDesc= +publish.shortDesc= +publish.tags= +publish.title= +publish.url= +readme.height=58 +readme.name=@README +readme.width=47 +readme.x=10 +readme.y=10 +simulation.speed=97 +target1.height=50 +target1.name=PictureViewer +target1.showInterface=false +target1.type=ClassTarget +target1.typeParameters= +target1.width=100 +target1.x=0 +target1.y=0 +target2.height=50 +target2.name=Zeichnung +target2.showInterface=false +target2.type=ClassTarget +target2.typeParameters= +target2.width=120 +target2.x=0 +target2.y=0 +target3.height=50 +target3.name=Picture +target3.showInterface=false +target3.type=ClassTarget +target3.typeParameters= +target3.width=80 +target3.x=0 +target3.y=0 +target4.height=50 +target4.name=MyWorld +target4.showInterface=false +target4.type=ClassTarget +target4.typeParameters= +target4.width=80 +target4.x=0 +target4.y=0 +version=3.0.0 +width=1350 +world.lastInstantiated=MyWorld +xPosition=271 +yPosition=94 diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg04_figurC_mitSchleife/MyWorld.java b/03_vorlagen_tauschordner/02_greenfoot/alg04_figurC_mitSchleife/MyWorld.java new file mode 100644 index 0000000..61aee6c --- /dev/null +++ b/03_vorlagen_tauschordner/02_greenfoot/alg04_figurC_mitSchleife/MyWorld.java @@ -0,0 +1,36 @@ +import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot und MouseInfo) + +/** + * Ergänzen Sie hier eine Beschreibung für die Klasse MyWorld. + * + * @author (Ihr Name) + * @version (eine Versionsnummer oder ein Datum) + */ +public class MyWorld extends World +{ + + /** + * Konstruktor für Objekte der Klasse MyWorld + * + */ + public MyWorld() + { + // Erstellt eine neue Welt mit 1200x900 Pixeln + super(1000, 700, 1); + + prepare(); + } + + + /** + * Bereite die Welt für den Programmstart vor. + * Das heißt: Erzeuge die Anfangs-Objekte und füge sie der Welt hinzu. + */ + private void prepare() + { + Zeichnung zeichnung = new Zeichnung(); + addObject(zeichnung,500,350); + + } +} + diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg04_figurC_mitSchleife/Picture.java b/03_vorlagen_tauschordner/02_greenfoot/alg04_figurC_mitSchleife/Picture.java new file mode 100644 index 0000000..cf9d8a8 --- /dev/null +++ b/03_vorlagen_tauschordner/02_greenfoot/alg04_figurC_mitSchleife/Picture.java @@ -0,0 +1,677 @@ +import java.awt.image.*; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.BasicStroke; +import java.util.Vector; +import javax.imageio.*; +import java.io.*; +import java.awt.*; +import javax.swing.*; +import java.util.Random; +import java.awt.geom.AffineTransform; +/** + * + * Bildklasse für die Simulation von Processing-Befehlen + * + * Diese Klasse stellt ein BufferedImage bereit, in das mit Processing-Befehlen gezeichnet + * werden kann. + * Zusätzlich kann ein Bildanzeiger über jede Änderung des Bildes informiert werden, + * um "Zurück"-Befehle zu ermöglichen. Der Bildanzeiger ist entweder eine normale Java + * ScrollPane oder ein Actor aus Greenfoot. + * Die Dokumentation der einzelnen Zeichenmethoden ist der Processing-Reference + * (https://processing.org/reference/ steht unter CC-Lizenz: https://creativecommons.org/) + * entnommen und mit Deepl.com ins Deutsche übersetzt. + * + * @version 1.0 from 23.01.2019 + * @author Thomas Schaller (ZPG Informatik Klasse 9) + */ + + +public class Picture{ + + // Einstellungmöglichkeiten für das Zeichnen von Rechtecken und Ellipsen + // RADIUS = Mittelpunkt+Radius wird gegeben, CENTER = Mittelpunkt und Breite/Höhe wird gegeben, + // CORNER = Linke obere Ecke + Breite/Höhe, CORNERS = Linke obere und rechte untere Ecke + public static final int RADIUS = 1; + public static final int CENTER = 2; + public static final int CORNER = 3; + public static final int CORNERS = 4; + + // gespeichertes Bild, + private BufferedImage image; + + // aktuelle Farbeinstellungen + private Color background; + private Color pencolor; + private Color fillcolor; + + // aktuelle Stiftdicke + private double stroke; + + // akkteller Koordinatenmodus von Rechtecken und Ellipsen + private int ellipseMode = CENTER; + private int rectMode = CORNER; + + // aktueller Font + private Font textfont = null; + + // muss ein Bildanzeiger benachrichtigt werden + private PictureViewer observer = null; + + /** + * Erzeugt ein Bild mit Standardgröße 500x400 + */ + public Picture() { + this(500,400); + } + + /** + * Erzeugt ein Bild der angegeben Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public Picture(int width, int height) { + this(width,height, "D0D0D0"); + } + + /** + * Erzeugt ein Bild aus einer Datei + * @param filename Dateiname des Bildes + */ + public Picture(String filename) { + load(filename); + } + + /** + * Erzeugt ein Bild der angegebenen Größe mit festgelegtem Hintergrund + * @param width Breite des Bildes + * @param height Höhe des Bildes + * @param background Farbe des Hintergrunds + */ + public Picture(int width, int height, String background) { + this.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + this.background = decode(background); + this.pencolor = new Color(0,0,0); + this.stroke = 1; + this.fillcolor = null; + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(this.background); + g.fillRect(0,0,width-1, height-1); + } + + /** + * Legt fest, wer das Bild anzeigt. + * Diese ermöglicht die Benachrichtung des Observers, wenn sich das Bild ändert. + * @param observer Anzeiger des Bildes + */ + + public void setObserver(PictureViewer observer) { + this.observer= observer; + } + + /** + * Direktes Setzen des Bildes (für interne Zwecke) + * @param b Bild, das gespeichert werden soll. + */ + public void setImage(BufferedImage b) { + image = b; + } + + /** + * Direktes Abfragen des Bildes (für interne Zwecke) + * @return Bild, das gerade gespeichert ist. + */ + public BufferedImage getImage() { + return image; + } + + /** + * Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + * Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + * der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu. + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public void size(int width, int height){ + pushImage(); + this.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(background); + g.fillRect(0,0,width-1, height-1); + } + + /** + * Liefert die Breite des Bildes zurück. + * @return Breite des Bildes + */ + public int getWidth() { + return image.getWidth(); + } + + /** + * Liefert die Höhe des Bildes zurück. + * @return Höhe des Bildes + */ + public int getHeight() { + return image.getHeight(); + } + + + /** + * Erzeugt eine Kopie des Bildes und übergibt sie an den Observer (falls existent), damit dieser die Versionen speichern kann + */ + private void pushImage() { + if(observer != null) { + observer.pushImage(); + } + } + + /** + * Auch die anzeigenden Klasse wird zum Neuzeichnen aufgefordert. + */ + private void repaint() { + if(observer != null) { + observer.repaint(); + } + } + + // ----------------------------------------- Zeichenfunktionen ----------------------------------------------- + /** + * Löscht den Inhalt des Bildes. + * Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt. + */ + + public void clear(){ + pushImage(); + image = new BufferedImage(image.getWidth(), image.getHeight(), image.getType()); + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(background); + g.fillRect(0,0,image.getWidth()-1, image.getHeight()-1); + repaint(); + } + + /** + * Konvertiert die in einem bestimmten Modus gegebenen Koordinaten in die Java-übliche Links_Oben_Breite_Höhe Version + * Die Änderungen werden direkt im Array vorgenommen + * @param coord Array mit vier Koordinateneinträgen im gegebenen Modus + * @param mode Modus der Koordinaten (CORNER, CORNERS, RADIUS oder CENTER) + */ + private void convert(int[] coord, int mode) { + switch(mode) { + case CORNER: break; + case CORNERS: coord[2] -= coord[0]; coord[3] -= coord[1]; break; + case RADIUS: coord[2] *= 2; coord[3] *=2; + case CENTER: coord[0] -= coord[2]/2; coord[1] -= coord[3]/2; + } + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + * Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + * Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void rectMode(int mode) { + rectMode = mode; + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + * Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + * Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als Breite und Höhe der Form. + * ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void ellipseMode(int mode) { + ellipseMode = mode; + } + + + + /** + * Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + * Um eine Linie einzufärben, verwenden Sie die {@link #stroke(int, int, int) stroke()} Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + * Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + * {@link #strokeWeight(double) strokeWeight()} geändert werden. + * @param x1 x-Koordinate des 1. Punktes + * @param y1 y-Koordinate des 1. Punktes + * @param x2 x-Koordinate des 2. Punktes + * @param y2 y-Koordinate des 2. Punktes + */ + public void line(int x1, int y1, int x2, int y2) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + if (stroke > 0) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawLine(x1, y1, x2, y2); + } + repaint(); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, rectMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillRect(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawRect(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, ellipseMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillOval(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawOval(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + int px[] = {x1, x2, x3}; + int py[] = {y1, y2, y3}; + polygon(px, py); + + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + + int px[] = {x1, x2, x3, x4}; + int py[] = {y1, y2, y3, y4}; + polygon(px, py); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + + public void polygon(int[] x, int[] y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(fillcolor != null) { + + g.setColor(fillcolor); + g.fillPolygon(x,y, y.length); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawPolygon(x, y, x.length); + } + repaint(); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + ellipse(x,y,1, 1); + + } + + // ----------------------------------------- Schriftdarstellung ----------------------------------------------- + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param s Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String s, int x, int y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(pencolor != null) { + g.setColor(fillcolor); + g.setStroke(new BasicStroke((float) stroke)); + g.setFont(textfont); + g.drawString(s, x, y); + } + repaint(); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + this.textfont = font; + } + + + // ----------------------------------------- Farbfestlegungen ----------------------------------------------- + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(String color) { + try{ + return new Color( + Integer.valueOf( color.substring( 0, 2 ), 16 ), + Integer.valueOf( color.substring( 2, 4 ), 16 ), + Integer.valueOf( color.substring( 4, 6 ), 16 ) ); + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(int color) { + try{ + if(color >=0 && color < 256) { + return new Color(color,color,color); + } else { + int r = color / 0x010000 % 0xFF; + int g = color / 0x000100 % 0xFF; + int b = color % 0xFF; + System.out.println(""+r+","+g+","+b); + return new Color(r, g, b ); + } + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + this.pencolor = decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + this.pencolor=decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + this.pencolor = new Color(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + this.pencolor = null; + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + this.stroke = width; + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + this.fillcolor = decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + this.fillcolor=decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + this.fillcolor = new Color(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + this.fillcolor = null; + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + if(c < 256) { + this.background=new Color(c,c,c); + } else { + int r = c / 0x010000; + int g = c / 0x000100 % 0xFF; + int b = c % 0xFF; + this.background= new Color(r, g, b ); + } + + this.clear(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + this.background=new Color(r,g,b); + this.clear(); + } + + +// ----------------------------------------- Dateioperationen ----------------------------------------------- + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + try{ + this.image = ImageIO.read(new File(filename)); + this.background = decode("D0D0D0"); + this.pencolor = new Color(0,0,0); + this.fillcolor = null; + this.stroke = 1; + this.repaint(); + + } catch(Exception e) { + System.out.println("Fehler beim Einlesen der Bilddatei"); + } + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + try{ + String[] fn = filename.split("\\."); + if (fn.length== 1) { + ImageIO.write(image, "PNG", new File(filename+".png")); + } else { + + if (fn.length == 2 && (fn[1].toUpperCase().equals("PNG") || + fn[1].toUpperCase().equals("GIF"))){ + ImageIO.write(image, fn[1], new File(filename)); + }else { + System.out.println("Unbekanntes Bildformat"); + } + } + + } catch(Exception e) { + System.out.println("Fehler beim Speichern"); + } + } + + +// ----------------------------------------- Sonstiges ----------------------------------------------- + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + + public Color[][] getPixelArray() { + Color[][] pixel = new Color[image.getWidth()][image.getHeight()]; + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + pixel[x][y] = new java.awt.Color(image.getRGB(x,y)); + } + } + return pixel; + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + size(pixel.length,pixel[0].length); + Graphics2D g = (Graphics2D) image.getGraphics(); + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + g.setColor(pixel[x][y]); + g.fillRect(x, y, 1, 1); + } + } + repaint(); + } + + /** + * Hilfsfunktion zum Verzögern der Ausgabe + * @param millis Wartezeit in Millisekunden + */ + public void delay(int millis) { + try{ + Thread.sleep(millis); + + } catch(Exception e) { + + } + + } + + + +} diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg04_figurC_mitSchleife/PictureViewer.java b/03_vorlagen_tauschordner/02_greenfoot/alg04_figurC_mitSchleife/PictureViewer.java new file mode 100644 index 0000000..a52c8b1 --- /dev/null +++ b/03_vorlagen_tauschordner/02_greenfoot/alg04_figurC_mitSchleife/PictureViewer.java @@ -0,0 +1,507 @@ +import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot und MouseInfo) +import java.awt.image.*; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.BasicStroke; +import java.awt.Font; +import java.util.Vector; +import java.awt.Color; +import javax.imageio.*; +import java.io.*; + + +/** + * Der PictureViewer ist ein Actor, der in der Lage ist ein + * Objekt der Klasse Picture anzuzeigen. Zusätzlich können + * mehrere Verarbeitungsschritte gespeichert werden, um ein + * "zurück"-Funktion zu ermöglichen. + * + * @author Thomas Schaller + * @version V1.0 vom 10.02.2019 + */ +public class PictureViewer extends Actor +{ + public static final int FIT = -1; + public static final int NORMAL = 1; + + private static final int ANZ_BACK = 0; + + private double zoom; + private boolean autoRefresh = true; + protected Picture picture = null; + private Vector history; + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der Größe 500x400 + */ + public PictureViewer() { + this(500,400); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public PictureViewer(int width, int height) { + this(width,height, "D0D0D0"); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + * @param background Farbe des Hintergrunds als HEX-String (z.B. "FF3A45") + */ + public PictureViewer(int width, int height, String background) { + picture = new Picture(width,height, background); + picture.setObserver(this); + this.history = new Vector(); + this.zoom = NORMAL; + repaint(); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild aus einer Bilddatei + * @param filename Name des Bildes + */ + public PictureViewer(String filename) { + picture = new Picture(filename); + picture.setObserver(this); + this.history = new Vector(); + this.zoom = NORMAL; + repaint(); + } + + + /** + * Speichert das übergebene Bild in der History. + * @param b zu speicherndes Bild + */ + public void pushImage() { + if( this.ANZ_BACK > 0) { + if(history.size() == this.ANZ_BACK) { + history.removeElementAt(0); + } + + BufferedImage b = new BufferedImage(picture.getWidth(), picture.getHeight(), picture.getImage().getType()); + Graphics g = b.getGraphics(); + g.drawImage(picture.getImage(), 0, 0, null); + g.dispose(); + + history.add(b); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + private void popImage() { + int anz = history.size(); + if(anz>0) { + BufferedImage i = history.get(anz-1); + history.removeElementAt(anz-1); + picture.setImage(i); + repaint(); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + public void back() { + popImage(); + } + + + /** + * Setzt den Zoom-Faktor für das Bild. + * Als Zoomfaktor sind auch die Konstanten Bildanzeiger.FIT (auf Bildschirmgröße zoomen) und Bildanzeiger.NORMAL (100%) möglich. + * @param factor Zoomfaktor (1.0 = 100%). + */ + public void setZoom(double zoom) { + this.zoom = zoom; + repaint(); + } + + /** + * Setzt die automatische Neuanzeige des Bildes. + * Mit dieser Methode kann man einstellen, ob nach jedem Zeichenbefehl + * die Anzeige auf dem Bildschirm aktualisiert werden soll. Bei sehr + * vielen Zeichenbefehlen wird die Ausgabe dadurch sehr langsam. Es reicht + * eine Anzeige am Ende der Zeichenbefehle. Rufen Sie dann für das Neuzeichnen + * die Methode refresh() auf. + * @param autoRefresh true, wenn nach jedem Zeichenbefehl die Anzeige aktualisiert werden soll. + */ + public void setAutoRefresh(boolean autoRefresh) { + this.autoRefresh = autoRefresh; + } + + /** + * Sorgt für die Aktualisierung der Bildschrimanzeige. Das aktuelle Bild + * wird dadurch angezeigt. Durch Einstellung von autoRefresh kann die + * Anzeige automatisiert werden. + */ + public void refresh() { + double faktor = zoom; + + if (zoom == FIT) { + double faktorw = (double) this.getWorld().getWidth() / picture.getWidth(); + double faktorh = (double) this.getWorld().getHeight() / picture.getHeight(); + faktor = Math.min(faktorw, faktorh); + } + int gfi_width = (int) (picture.getWidth()*faktor); + int gfi_height = (int) (picture.getHeight()*faktor); + + setImage(new GreenfootImage(gfi_width, gfi_height)); + Graphics2D g = (Graphics2D) this.getImage().getAwtImage().getGraphics(); + g.drawImage(picture.getImage(),0,0,gfi_width, gfi_height, 0, 0, picture.getWidth(), picture.getHeight(), null); + g.setColor(new java.awt.Color(0,0,0)); + g.setStroke(new BasicStroke((float) 1)); + g.drawRect(0,0,gfi_width-1, gfi_height-1); + } + + /** + * Setzt das angezeigt Bild neu und beachtet dabei den Zoomfaktor. + */ + public void repaint() { + if(autoRefresh) { + refresh(); + } + + } + + // Wrappermethoden + /** + * Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + * Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + * der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu. + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public void size(int width, int height){ + picture.size(width, height); + } + + /** + * Liefert die Breite des Bildes zurück. + * @return Breite des Bildes + */ + public int getImageWidth() { + return picture.getWidth(); + } + + /** + * Liefert die Höhe des Bildes zurück. + * @return Höhe des Bildes + */ + public int getImageHeight() { + return picture.getHeight(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + picture.background(c); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + picture.background(r,g,b); + } + + /** + * Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + * Um eine Linie einzufärben, verwenden Sie die {@link #stroke(int, int, int) stroke()} Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + * Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + * {@link #strokeWeight(double) strokeWeight()} geändert werden. + * @param x1 x-Koordinate des 1. Punktes + * @param y1 y-Koordinate des 1. Punktes + * @param x2 x-Koordinate des 2. Punktes + * @param y2 y-Koordinate des 2. Punktes + */ + public void line(int x1, int y1, int x2, int y2) { + picture.line(x1,y1,x2,y2); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + picture.rect(a,b,c,d); + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + picture.ellipse(a,b,c,d); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + picture.triangle(x1,y1,x2,y2,x3,y3); + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + picture.quad(x1,y1,x2,y2,x3,y3,x4,y4); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + public void polygon(int[] x, int[] y) { + picture.polygon(x,y); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + picture.point(x,y); + + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + * Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + * Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void rectMode(int mode) { + picture.rectMode(mode); + } + + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + * Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + * Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als Breite und Höhe der Form. + * ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void ellipseMode(int mode) { + picture.ellipseMode(mode); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + picture.stroke(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + picture.noStroke(); + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + picture.strokeWeight(width); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + picture.fill(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + picture.noFill(); + } + + /** + * Löscht den Inhalt des Bildes. + * Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt. + */ + public void clear(){ + picture.clear(); + } + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + picture.load(filename); + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + picture.save(filename); + } + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param t Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String t, int x, int y) { + picture.text(t,x,y); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + picture.textFont(font); + } + + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + public Color[][] getPixelArray() { + return picture.getPixelArray(); + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + picture.setPixelArray(pixel); + } + + + +} + diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg04_figurC_mitSchleife/README.TXT b/03_vorlagen_tauschordner/02_greenfoot/alg04_figurC_mitSchleife/README.TXT new file mode 100644 index 0000000..4b8fadd --- /dev/null +++ b/03_vorlagen_tauschordner/02_greenfoot/alg04_figurC_mitSchleife/README.TXT @@ -0,0 +1,14 @@ +------------------------------------------------------------------------ +Dies ist die README-Datei des Projekts. Hier sollten Sie Ihr Projekt +beschreiben. +Erzählen Sie dem Leser (jemand, der nichts über dieses Projekt weiss), +alles, was er/sie wissen muss. Üblicherweise sollte der Kommentar +zumindest die folgenden Angaben umfassen: +------------------------------------------------------------------------ + +PROJEKTBEZEICHNUNG: +PROJEKTZWECK: +VERSION oder DATUM: +WIE IST DAS PROJEKT ZU STARTEN: +AUTOR(EN): +BENUTZERHINWEISE: diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg04_figurC_mitSchleife/Zeichnung.java b/03_vorlagen_tauschordner/02_greenfoot/alg04_figurC_mitSchleife/Zeichnung.java new file mode 100644 index 0000000..0d478a2 --- /dev/null +++ b/03_vorlagen_tauschordner/02_greenfoot/alg04_figurC_mitSchleife/Zeichnung.java @@ -0,0 +1,25 @@ +import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot und MouseInfo) +import java.awt.Font; + +/** + * Entdecken von Zeichenmethoden + * + * @author Eisenmann, Vorlage: Schaller + * @version 13.03.19 + */ +public class Zeichnung extends PictureViewer + +{ + public Zeichnung() { + size(500, 350); + zeichneBildC(); // Aufruf deiner Methode + } + + void zeichneBildC() { + // ***** hier kommen deine Anweisungen hin ************ + + + // ***** Ende der eigenen Anweisungen ********** + } + +} diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg04_figurC_mitSchleife/images/balken.png b/03_vorlagen_tauschordner/02_greenfoot/alg04_figurC_mitSchleife/images/balken.png new file mode 100644 index 0000000..9ff1ffc Binary files /dev/null and b/03_vorlagen_tauschordner/02_greenfoot/alg04_figurC_mitSchleife/images/balken.png differ diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg04_figurC_mitSchleife/images/bilderrahmen.png b/03_vorlagen_tauschordner/02_greenfoot/alg04_figurC_mitSchleife/images/bilderrahmen.png new file mode 100644 index 0000000..7f34e32 Binary files /dev/null and b/03_vorlagen_tauschordner/02_greenfoot/alg04_figurC_mitSchleife/images/bilderrahmen.png differ diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg04_figurC_mitSchleife/project.greenfoot b/03_vorlagen_tauschordner/02_greenfoot/alg04_figurC_mitSchleife/project.greenfoot new file mode 100644 index 0000000..5ae9917 --- /dev/null +++ b/03_vorlagen_tauschordner/02_greenfoot/alg04_figurC_mitSchleife/project.greenfoot @@ -0,0 +1,78 @@ +#Greenfoot project file +class.MyWorld.superclass=greenfoot.World +class.Picture.superclass= +class.PictureViewer.image=bilderrahmen.png +class.PictureViewer.superclass=greenfoot.Actor +class.Zeichnung.image=balken.png +class.Zeichnung.superclass=PictureViewer +dependency1.from=PictureViewer +dependency1.to=Picture +dependency1.type=UsesDependency +dependency2.from=Picture +dependency2.to=PictureViewer +dependency2.type=UsesDependency +dependency3.from=MyWorld +dependency3.to=Zeichnung +dependency3.type=UsesDependency +editor.fx.0.height=739 +editor.fx.0.width=816 +editor.fx.0.x=787 +editor.fx.0.y=123 +height=885 +mainWindow.height=881 +mainWindow.width=1281 +mainWindow.x=40 +mainWindow.y=40 +package.numDependencies=3 +package.numTargets=4 +project.charset=UTF-8 +publish.hasSource=false +publish.locked=true +publish.longDesc= +publish.shortDesc= +publish.tags= +publish.title= +publish.url= +readme.height=58 +readme.name=@README +readme.width=47 +readme.x=10 +readme.y=10 +simulation.speed=97 +target1.height=50 +target1.name=PictureViewer +target1.showInterface=false +target1.type=ClassTarget +target1.typeParameters= +target1.width=100 +target1.x=0 +target1.y=0 +target2.height=50 +target2.name=Zeichnung +target2.showInterface=false +target2.type=ClassTarget +target2.typeParameters= +target2.width=120 +target2.x=0 +target2.y=0 +target3.height=50 +target3.name=Picture +target3.showInterface=false +target3.type=ClassTarget +target3.typeParameters= +target3.width=80 +target3.x=0 +target3.y=0 +target4.height=50 +target4.name=MyWorld +target4.showInterface=false +target4.type=ClassTarget +target4.typeParameters= +target4.width=80 +target4.x=0 +target4.y=0 +version=3.0.0 +width=1350 +world.lastInstantiated=MyWorld +xPosition=271 +yPosition=94 diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg10_balkendiagramm/Balkendiagramm.java b/03_vorlagen_tauschordner/02_greenfoot/alg10_balkendiagramm/Balkendiagramm.java new file mode 100644 index 0000000..a5d8238 --- /dev/null +++ b/03_vorlagen_tauschordner/02_greenfoot/alg10_balkendiagramm/Balkendiagramm.java @@ -0,0 +1,55 @@ +import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot und MouseInfo) +import java.awt.Font; + +/** + * Balkendiagramm für int-Array. + * + * @author Schaller + * @version 29.11.18 + */ +public class Balkendiagramm extends PictureViewer + +{ + // Liste mit allen Werten + int[] zahlen={45, 23, 123, 87, 98, 2, 1, 23, 23, 34};; + + // Schriften + Font kleineSchrift; + Font grosseSchrift; + + public Balkendiagramm() { + size(1000, 700); + background(0); + kleineSchrift = new Font( Font.SANS_SERIF, Font.PLAIN, 12 ); + grosseSchrift = new Font( Font.SANS_SERIF, Font.PLAIN, 20 ); + zeichneBalken(); + } + + public void zeichneBalken() { + clear(); + // Überschrift + fill(255,255,255); + textFont(grosseSchrift); + text("Balkendiagramm", 2, 20); + textFont(kleineSchrift); + + // ---------------------------------------------------------------------- + // To Do + // ---------------------------------------------------------------------- + // Version 1: + // Implementiere die ersten vier Balken durch Angabe der Koordinaten aus der Tabelle. + // Ergänze dazu die Methode zeicheBalken an der "ToDo"-Stelle. + // Version 2: + // Ersetze die y-Koordinate und die Breite durch die oben ermittelte Formel. + // Deklariere vorher eine Integer-Variable i. Setze i vor der ersten Rechteck + // auf 0, vor dem zweite auf 1 usw. Überprüfe, ob deine Rechtecke immer noch + // korrekt gezeichnet werden. + // Version 3: + // Verwende eine for-Schleife, um alle Balken zeichnen zu lassen. Diese muss das i + // in jedem Durchgang um 1 erhöhen. Die Anzahl der Elemente im Array bekommst du + // durch zahlen.length. + // Tipp: Vergleiche mit deiner Implementation von der Kaffeehaus-Täuschung. + + } + +} diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg10_balkendiagramm/MyWorld.java b/03_vorlagen_tauschordner/02_greenfoot/alg10_balkendiagramm/MyWorld.java new file mode 100644 index 0000000..11434f1 --- /dev/null +++ b/03_vorlagen_tauschordner/02_greenfoot/alg10_balkendiagramm/MyWorld.java @@ -0,0 +1,36 @@ +import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot und MouseInfo) + +/** + * Ergänzen Sie hier eine Beschreibung für die Klasse MyWorld. + * + * @author (Ihr Name) + * @version (eine Versionsnummer oder ein Datum) + */ +public class MyWorld extends World +{ + + /** + * Konstruktor für Objekte der Klasse MyWorld + * + */ + public MyWorld() + { + // Erstellt eine neue Welt mit 1200x900 Pixeln + super(1000, 700, 1); + + prepare(); + } + + + /** + * Bereite die Welt für den Programmstart vor. + * Das heißt: Erzeuge die Anfangs-Objekte und füge sie der Welt hinzu. + */ + private void prepare() + { + Balkendiagramm balkendiagramm = new Balkendiagramm(); + addObject(balkendiagramm,500,350); + + } +} + diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg10_balkendiagramm/Picture.java b/03_vorlagen_tauschordner/02_greenfoot/alg10_balkendiagramm/Picture.java new file mode 100644 index 0000000..8df3d55 --- /dev/null +++ b/03_vorlagen_tauschordner/02_greenfoot/alg10_balkendiagramm/Picture.java @@ -0,0 +1,699 @@ +import java.awt.image.*; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.BasicStroke; +import java.util.Vector; +import javax.imageio.*; +import java.io.*; +import java.awt.*; +import javax.swing.*; +import java.util.Random; +import java.awt.geom.AffineTransform; +/** + * + * Bildklasse für die Simulation von Processing-Befehlen + * + * Diese Klasse stellt ein BufferedImage bereit, in das mit Processing-Befehlen gezeichnet + * werden kann. + * Zusätzlich kann ein Bildanzeiger über jede Änderung des Bildes informiert werden, + * um "Zurück"-Befehle zu ermöglichen. Der Bildanzeiger ist entweder eine normale Java + * ScrollPane oder ein Actor aus Greenfoot. + * Die Dokumentation der einzelnen Zeichenmethoden ist der Processing-Reference + * (https://processing.org/reference/ steht unter CC-Lizenz: https://creativecommons.org/) + * entnommen und mit Deepl.com ins Deutsche übersetzt. + * + * @version 1.0 from 23.01.2019 + * @author Thomas Schaller (ZPG Informatik Klasse 9) + */ + +public class Picture{ + + // Einstellungmöglichkeiten für das Zeichnen von Rechtecken und Ellipsen + // RADIUS = Mittelpunkt+Radius wird gegeben, CENTER = Mittelpunkt und Breite/Höhe wird gegeben, + // CORNER = Linke obere Ecke + Breite/Höhe, CORNERS = Linke obere und rechte untere Ecke + public static final int RADIUS = 1; + public static final int CENTER = 2; + public static final int CORNER = 3; + public static final int CORNERS = 4; + + // gespeichertes Bild, + private BufferedImage image; + + // aktuelle Farbeinstellungen + private Color background; + private Color pencolor; + private Color fillcolor; + + // aktuelle Stiftdicke + private double stroke; + + // akkteller Koordinatenmodus von Rechtecken und Ellipsen + private int ellipseMode = CENTER; + private int rectMode = CORNER; + + // aktueller Font + private Font textfont = null; + + // muss ein Bildanzeiger benachrichtigt werden + private PictureViewer observer = null; + private boolean autorefresh = true; + + /** + * Erzeugt ein Bild mit Standardgröße 500x400 + */ + public Picture() { + this(500,400); + } + + /** + * Erzeugt ein Bild der angegeben Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public Picture(int width, int height) { + this(width,height, "D0D0D0"); + } + + /** + * Erzeugt ein Bild aus einer Datei + * @param filename Dateiname des Bildes + */ + public Picture(String filename) { + load(filename); + } + + /** + * Erzeugt ein Bild der angegebenen Größe mit festgelegtem Hintergrund + * @param width Breite des Bildes + * @param height Höhe des Bildes + * @param background Farbe des Hintergrunds + */ + public Picture(int width, int height, String background) { + this.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + this.background = decode(background); + this.pencolor = new Color(0,0,0); + this.stroke = 1; + this.fillcolor = null; + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(this.background); + g.fillRect(0,0,width-1, height-1); + } + + /** + * Legt fest, wer das Bild anzeigt. + * Diese ermöglicht die Benachrichtung des Observers, wenn sich das Bild ändert. + * @param observer Anzeiger des Bildes + */ + + public void setObserver(PictureViewer observer) { + this.observer= observer; + } + + /** + * Direktes Setzen des Bildes (für interne Zwecke) + * @param b Bild, das gespeichert werden soll. + */ + public void setImage(BufferedImage b) { + image = b; + } + + /** + * Direktes Abfragen des Bildes (für interne Zwecke) + * @return Bild, das gerade gespeichert ist. + */ + public BufferedImage getImage() { + return image; + } + + /** + * Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + * Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + * der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu. + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public void size(int width, int height){ + pushImage(); + this.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(background); + g.fillRect(0,0,width-1, height-1); + } + + /** + * Liefert die Breite des Bildes zurück. + * @return Breite des Bildes + */ + public int getWidth() { + return image.getWidth(); + } + + /** + * Liefert die Höhe des Bildes zurück. + * @return Höhe des Bildes + */ + public int getHeight() { + return image.getHeight(); + } + + + /** + * Erzeugt eine Kopie des Bildes und übergibt sie an den Observer (falls existent), damit dieser die Versionen speichern kann + */ + private void pushImage() { + if(observer != null) { + observer.pushImage(); + } + } + + + /** + * Legt fest, ob nach jedem Zeichenbefehl automatisch das Bild auch in + * der Oberfläche aktualisiert wird. Die Einstellung "false" beschleunigt + * das Zeichnen aufwändiger Bilder und verhindert "Flackern". + * Das Neuzeichnen kann durch die Methode "refresh" gezielt ausgelöst werden. + * @param autorefresh true = nach jedem Zeichenbefehl die Anzeige aktualisieren, false= nur durch die Methode refresh neu zeichnen + */ + public void setAutoRefresh(boolean autoRefresh) { + this.autorefresh = autoRefresh; + } + + + /** + * Auch die anzeigenden Klasse wird zum Neuzeichnen aufgefordert. + */ + private void repaint() { + if(observer != null && autorefresh) { + observer.repaint(); + } + } + + /** + * Auch die anzeigenden Klasse wird zum Neuzeichnen aufgefordert. + */ + public void refresh() { + if(observer != null) { + observer.repaint(); + } + } + + // ----------------------------------------- Zeichenfunktionen ----------------------------------------------- + /** + * Löscht den Inhalt des Bildes. + * Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt. + */ + + public void clear(){ + pushImage(); + image = new BufferedImage(image.getWidth(), image.getHeight(), image.getType()); + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(background); + g.fillRect(0,0,image.getWidth()-1, image.getHeight()-1); + repaint(); + } + + /** + * Konvertiert die in einem bestimmten Modus gegebenen Koordinaten in die Java-übliche Links_Oben_Breite_Höhe Version + * Die Änderungen werden direkt im Array vorgenommen + * @param coord Array mit vier Koordinateneinträgen im gegebenen Modus + * @param mode Modus der Koordinaten (CORNER, CORNERS, RADIUS oder CENTER) + */ + private void convert(int[] coord, int mode) { + switch(mode) { + case CORNER: break; + case CORNERS: coord[2] -= coord[0]; coord[3] -= coord[1]; break; + case RADIUS: coord[2] *= 2; coord[3] *=2; + case CENTER: coord[0] -= coord[2]/2; coord[1] -= coord[3]/2; + } + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + * Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + * Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void rectMode(int mode) { + rectMode = mode; + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + * Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + * Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als Breite und Höhe der Form. + * ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void ellipseMode(int mode) { + ellipseMode = mode; + } + + + + /** + * Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + * Um eine Linie einzufärben, verwenden Sie die {@link #stroke(int, int, int) stroke()} Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + * Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + * {@link #strokeWeight(double) strokeWeight()} geändert werden. + * @param x1 x-Koordinate des 1. Punktes + * @param y1 y-Koordinate des 1. Punktes + * @param x2 x-Koordinate des 2. Punktes + * @param y2 y-Koordinate des 2. Punktes + */ + public void line(int x1, int y1, int x2, int y2) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + if (stroke > 0) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawLine(x1, y1, x2, y2); + } + repaint(); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, rectMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillRect(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawRect(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, ellipseMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillOval(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawOval(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + int px[] = {x1, x2, x3}; + int py[] = {y1, y2, y3}; + polygon(px, py); + + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + + int px[] = {x1, x2, x3, x4}; + int py[] = {y1, y2, y3, y4}; + polygon(px, py); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + + public void polygon(int[] x, int[] y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(fillcolor != null) { + + g.setColor(fillcolor); + g.fillPolygon(x,y, y.length); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawPolygon(x, y, x.length); + } + repaint(); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + ellipse(x,y,1, 1); + + } + + // ----------------------------------------- Schriftdarstellung ----------------------------------------------- + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param s Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String s, int x, int y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(pencolor != null) { + g.setColor(fillcolor); + g.setStroke(new BasicStroke((float) stroke)); + g.setFont(textfont); + g.drawString(s, x, y); + } + repaint(); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + this.textfont = font; + } + + + // ----------------------------------------- Farbfestlegungen ----------------------------------------------- + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(String color) { + try{ + return new Color( + Integer.valueOf( color.substring( 0, 2 ), 16 ), + Integer.valueOf( color.substring( 2, 4 ), 16 ), + Integer.valueOf( color.substring( 4, 6 ), 16 ) ); + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(int color) { + try{ + if(color >=0 && color < 256) { + return new Color(color,color,color); + } else { + int r = color / 0x010000 % 0xFF; + int g = color / 0x000100 % 0xFF; + int b = color % 0xFF; + System.out.println(""+r+","+g+","+b); + return new Color(r, g, b ); + } + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + this.pencolor = decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + this.pencolor=decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + this.pencolor = new Color(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + this.pencolor = null; + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + this.stroke = width; + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + this.fillcolor = decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + this.fillcolor=decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + this.fillcolor = new Color(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + this.fillcolor = null; + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + if(c < 256) { + this.background=new Color(c,c,c); + } else { + int r = c / 0x010000; + int g = c / 0x000100 % 0xFF; + int b = c % 0xFF; + this.background= new Color(r, g, b ); + } + + this.clear(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + this.background=new Color(r,g,b); + this.clear(); + } + + +// ----------------------------------------- Dateioperationen ----------------------------------------------- + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + try{ + this.image = ImageIO.read(new File(filename)); + this.background = decode("D0D0D0"); + this.pencolor = new Color(0,0,0); + this.fillcolor = null; + this.stroke = 1; + this.repaint(); + + } catch(Exception e) { + System.out.println("Fehler beim Einlesen der Bilddatei"); + } + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + try{ + String[] fn = filename.split("\\."); + if (fn.length== 1) { + ImageIO.write(image, "PNG", new File(filename+".png")); + } else { + + if (fn.length == 2 && (fn[1].toUpperCase().equals("PNG") || + fn[1].toUpperCase().equals("GIF"))){ + ImageIO.write(image, fn[1], new File(filename)); + }else { + System.out.println("Unbekanntes Bildformat"); + } + } + + } catch(Exception e) { + System.out.println("Fehler beim Speichern"); + } + } + + +// ----------------------------------------- Sonstiges ----------------------------------------------- + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + + public Color[][] getPixelArray() { + Color[][] pixel = new Color[image.getWidth()][image.getHeight()]; + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + pixel[x][y] = new java.awt.Color(image.getRGB(x,y)); + } + } + return pixel; + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + size(pixel.length,pixel[0].length); + Graphics2D g = (Graphics2D) image.getGraphics(); + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + g.setColor(pixel[x][y]); + g.fillRect(x, y, 1, 1); + } + } + repaint(); + } + + /** + * Hilfsfunktion zum Verzögern der Ausgabe + * @param millis Wartezeit in Millisekunden + */ + public void delay(int millis) { + try{ + Thread.sleep(millis); + + } catch(Exception e) { + + } + + } + + + +} diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg10_balkendiagramm/PictureViewer.java b/03_vorlagen_tauschordner/02_greenfoot/alg10_balkendiagramm/PictureViewer.java new file mode 100644 index 0000000..ecbb521 --- /dev/null +++ b/03_vorlagen_tauschordner/02_greenfoot/alg10_balkendiagramm/PictureViewer.java @@ -0,0 +1,499 @@ +import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot und MouseInfo) +import java.awt.image.*; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.BasicStroke; +import java.awt.Font; +import java.util.Vector; +import java.awt.Color; +import javax.imageio.*; +import java.io.*; + +/** + * Der PictureViewer ist ein Actor, der in der Lage ist ein + * Objekt der Klasse Picture anzuzeigen. Zusätzlich können + * mehrere Verarbeitungsschritte gespeichert werden, um ein + * "zurück"-Funktion zu ermöglichen. + * + * @author Thomas Schaller + * @version V1.0 vom 10.02.2019 + */ +public class PictureViewer extends Actor +{ + public static final int FIT = -1; + public static final int NORMAL = 1; + + private static final int ANZ_BACK = 0; + + private double zoom; + protected Picture picture = null; + private Vector history; + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der Größe 500x400 + */ + public PictureViewer() { + this(500,400); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public PictureViewer(int width, int height) { + this(width,height, "D0D0D0"); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + * @param background Farbe des Hintergrunds als HEX-String (z.B. "FF3A45") + */ + public PictureViewer(int width, int height, String background) { + picture = new Picture(width,height, background); + picture.setObserver(this); + this.history = new Vector(); + this.zoom = NORMAL; + repaint(); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild aus einer Bilddatei + * @param filename Name des Bildes + */ + public PictureViewer(String filename) { + picture = new Picture(filename); + picture.setObserver(this); + this.history = new Vector(); + this.zoom = NORMAL; + repaint(); + } + + /** + * Speichert das übergebene Bild in der History. + * @param b zu speicherndes Bild + */ + public void pushImage() { + if( this.ANZ_BACK > 0) { + if(history.size() == this.ANZ_BACK) { + history.removeElementAt(0); + } + + BufferedImage b = new BufferedImage(picture.getWidth(), picture.getHeight(), picture.getImage().getType()); + Graphics g = b.getGraphics(); + g.drawImage(picture.getImage(), 0, 0, null); + g.dispose(); + + history.add(b); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + private void popImage() { + int anz = history.size(); + if(anz>0) { + BufferedImage i = history.get(anz-1); + history.removeElementAt(anz-1); + picture.setImage(i); + repaint(); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + public void back() { + popImage(); + } + + /** + * Setzt den Zoom-Faktor für das Bild. + * Als Zoomfaktor sind auch die Konstanten Bildanzeiger.FIT (auf Bildschirmgröße zoomen) und Bildanzeiger.NORMAL (100%) möglich. + * @param factor Zoomfaktor (1.0 = 100%). + */ + public void setZoom(double zoom) { + this.zoom = zoom; + repaint(); + } + + /** + * Setzt die automatische Neuanzeige des Bildes. + * Mit dieser Methode kann man einstellen, ob nach jedem Zeichenbefehl + * die Anzeige auf dem Bildschirm aktualisiert werden soll. Bei sehr + * vielen Zeichenbefehlen wird die Ausgabe dadurch sehr langsam. Es reicht + * eine Anzeige am Ende der Zeichenbefehle. Rufen Sie dann für das Neuzeichnen + * die Methode refresh() auf. + * @param autoRefresh true, wenn nach jedem Zeichenbefehl die Anzeige aktualisiert werden soll. + */ + public void setAutoRefresh(boolean autoRefresh) { + picture.setAutoRefresh(autoRefresh); + } + + /** + * Sorgt für die Aktualisierung der Bildschrimanzeige. Das aktuelle Bild + * wird dadurch angezeigt. Durch Einstellung von autoRefresh kann die + * Anzeige automatisiert werden. + */ + public void refresh() { + repaint(); + } + + /** + * Setzt das angezeigt Bild neu und beachtet dabei den Zoomfaktor. + */ + public void repaint() { + double faktor = zoom; + + if (zoom == FIT) { + double faktorw = (double) this.getWorld().getWidth() / picture.getWidth(); + double faktorh = (double) this.getWorld().getHeight() / picture.getHeight(); + faktor = Math.min(faktorw, faktorh); + } + int gfi_width = (int) (picture.getWidth()*faktor); + int gfi_height = (int) (picture.getHeight()*faktor); + + setImage(new GreenfootImage(gfi_width, gfi_height)); + Graphics2D g = (Graphics2D) this.getImage().getAwtImage().getGraphics(); + g.drawImage(picture.getImage(),0,0,gfi_width, gfi_height, 0, 0, picture.getWidth(), picture.getHeight(), null); + g.setColor(new java.awt.Color(0,0,0)); + g.setStroke(new BasicStroke((float) 1)); + g.drawRect(0,0,gfi_width-1, gfi_height-1); + + } + + // Wrappermethoden + /** + * Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + * Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + * der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu. + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public void size(int width, int height){ + picture.size(width, height); + } + + /** + * Liefert die Breite des Bildes zurück. + * @return Breite des Bildes + */ + public int getImageWidth() { + return picture.getWidth(); + } + + /** + * Liefert die Höhe des Bildes zurück. + * @return Höhe des Bildes + */ + public int getImageHeight() { + return picture.getHeight(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + picture.background(c); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + picture.background(r,g,b); + } + + /** + * Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + * Um eine Linie einzufärben, verwenden Sie die {@link #stroke(int, int, int) stroke()} Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + * Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + * {@link #strokeWeight(double) strokeWeight()} geändert werden. + * @param x1 x-Koordinate des 1. Punktes + * @param y1 y-Koordinate des 1. Punktes + * @param x2 x-Koordinate des 2. Punktes + * @param y2 y-Koordinate des 2. Punktes + */ + public void line(int x1, int y1, int x2, int y2) { + picture.line(x1,y1,x2,y2); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + picture.rect(a,b,c,d); + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + picture.ellipse(a,b,c,d); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + picture.triangle(x1,y1,x2,y2,x3,y3); + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + picture.quad(x1,y1,x2,y2,x3,y3,x4,y4); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + public void polygon(int[] x, int[] y) { + picture.polygon(x,y); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + picture.point(x,y); + + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + * Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + * Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void rectMode(int mode) { + picture.rectMode(mode); + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + * Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + * Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als Breite und Höhe der Form. + * ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void ellipseMode(int mode) { + picture.ellipseMode(mode); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + picture.stroke(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + picture.noStroke(); + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + picture.strokeWeight(width); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + picture.fill(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + picture.noFill(); + } + + /** + * Löscht den Inhalt des Bildes. + * Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt. + */ + public void clear(){ + picture.clear(); + } + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + picture.load(filename); + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + picture.save(filename); + } + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param t Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String t, int x, int y) { + picture.text(t,x,y); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + picture.textFont(font); + } + + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + public Color[][] getPixelArray() { + return picture.getPixelArray(); + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + picture.setPixelArray(pixel); + } + + +} + diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg10_balkendiagramm/README.TXT b/03_vorlagen_tauschordner/02_greenfoot/alg10_balkendiagramm/README.TXT new file mode 100644 index 0000000..4b8fadd --- /dev/null +++ b/03_vorlagen_tauschordner/02_greenfoot/alg10_balkendiagramm/README.TXT @@ -0,0 +1,14 @@ +------------------------------------------------------------------------ +Dies ist die README-Datei des Projekts. Hier sollten Sie Ihr Projekt +beschreiben. +Erzählen Sie dem Leser (jemand, der nichts über dieses Projekt weiss), +alles, was er/sie wissen muss. Üblicherweise sollte der Kommentar +zumindest die folgenden Angaben umfassen: +------------------------------------------------------------------------ + +PROJEKTBEZEICHNUNG: +PROJEKTZWECK: +VERSION oder DATUM: +WIE IST DAS PROJEKT ZU STARTEN: +AUTOR(EN): +BENUTZERHINWEISE: diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg10_balkendiagramm/Table.java b/03_vorlagen_tauschordner/02_greenfoot/alg10_balkendiagramm/Table.java new file mode 100644 index 0000000..ee5a211 --- /dev/null +++ b/03_vorlagen_tauschordner/02_greenfoot/alg10_balkendiagramm/Table.java @@ -0,0 +1,894 @@ +/** + * Die Klasse Table vereinfacht den Zugriff auf CSV-Dateien. + * Die Klassen Table und TableRow ermöglichen einen einfachen Zugriff auf tabellenbasierte + * Dokumente. + * + * @author Thomas Schaller + * @version 1.0 vom 01.02.2019 + */ + +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.ArrayList; +import java.io.*; +import java.util.Scanner; + +import org.jdom.Document; +import org.jdom.Element; +import org.jdom.Attribute; +import org.jdom.JDOMException; +import org.jdom.input.SAXBuilder; +import org.jdom.output.XMLOutputter; +import org.jdom.output.Format; + +public class Table +{ + // Standardtrennzeichen für Spalten + private static final char DEFAULT_SEPARATOR = ';'; + // Standardmarkierung für Texte + private static final char DEFAULT_QUOTE = '"'; + // Standardtrennzeichen für Dezimalzahlen + private static final char DEFAULT_COMMA = ','; + + // mögliche Spaltentypen + private static final String UNKNOWN ="UNKOWN"; + private static final String INT = "INTEGER"; + private static final String DOUBLE = "DOUBLE"; + private static final String FLOAT = "FLOAT"; + + // interne Verwaltung des Dokuments als JDOM-Document-Objekt + private Document doc; + // Verweis auf Element für Kopfzeile + private Element header; + // Ende Attribute + + /** + * Erzeugt leeres Tabellen-Dokument. + */ + public Table() { + this.doc = new Document(); + doc.setRootElement(new Element("CSV-Data")); + this.header = new Element("Header"); + doc.getRootElement().addContent(header); + } + + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei und erstellt ein Tabellenobjekt mit seinen Werten. + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public Table(String filename, String options, char separator, char quote) { + loadCSV(filename, options, separator, quote); + } + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei und erstellt ein Tabellenobjekt mit seinen Werten (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + */ + public Table(String filename, String options) { + loadCSV(filename, options); + } + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei ohne Kopfzeile und erstellt ein Tabellenobjekt mit seinen Werten (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public Table(String filename) { + loadCSV(filename); + } + + // Anfang Methoden + /** + * Liest den Inhalt einer CSV-Datei ohne Kopfzeile (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public void loadCSV(String filename) { + loadCSV(filename, ""); + } + + /** + * Liest den Inhalt einer CSV-Datei (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + */ + public void loadCSV(String filename, String options) { + loadCSV(filename, options, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** + * Liest den Inhalt einer CSV-Datei. + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public void loadCSV(String filename, String options, char separator, char quote) { + doc = new Document(); + doc.setRootElement(new Element("CSV-Data")); + header = new Element("Header"); + doc.getRootElement().addContent(header); + try { + File f = new File(filename); + Scanner scanner = new Scanner(new File(filename)); + if(options.toLowerCase().contains("header") && scanner.hasNext()) { + List entries = parseLine(scanner.nextLine(), separator, quote); + int i= 0; + for(String s : entries) { + Element entry = new Element("Column"); + header.addContent(entry); + entry.setText(s); + entry.setAttribute("type", "unknown"); + i++; + } + } + + List cols = header.getChildren(); + + while (scanner.hasNext()) { + Element line = new Element("Row"); + doc.getRootElement().addContent(line); + List entries = parseLine(scanner.nextLine(), separator, quote); + int i= 0; + + for(String s : entries) { + + if(i==cols.size()) { + Element entry = new Element("Column"); + entry.setAttribute("type", "unknown"); + header.addContent(entry); + cols = header.getChildren(); + } + + Element entry = new Element("Entry"); + entry.setText(s); + line.addContent(entry); + i++; + } + } + scanner.close(); + + } catch (Exception e) { + System.out.println("Fehler beim Lesen der CSV-Datei"); + } + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei ohne Kopfzeile (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public void saveCSV(String filename) { + saveCSV(filename, ""); + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthalten, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile haben soll, + * dann lassen Sie einfach die Option "header" weg. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile haben soll. + * @param filename Dateiname der CSV-Datei. + */ + public void saveCSV(String filename, String options) { + saveCSV(filename, options, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei. + * Wenn die Datei eine Kopfzeile enthalten, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile haben soll, + * dann lassen Sie einfach die Option "header" weg. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile haben soll. + * @param filename Dateiname der CSV-Datei. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public void saveCSV(String filename, String options, char separator, char quote){ + try{ + File f = new File(filename); + PrintStream outputFile = new PrintStream (f); + System.out.println("Speicher in : "+f.getAbsolutePath()); + List columns = header.getChildren(); + String sq = ""+quote; + String ss = ""+separator; + if(quote =='"') sq = "\""; + if(separator =='"') ss = "\""; + + if(options.toLowerCase().contains("header")) { + String h = ""; + for(Element c : columns) { + h += ss + sq + c.getText()+sq; + } + outputFile.println(h.substring(1)); + } + for(int i = 0; i parseLine(String cvsLine) { + return parseLine(cvsLine, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** HIlfsfunktion für die Analyse einer Dateizeile + * @param cvsLine Zeile aus der Datei + * @param sparator Trennzeichen für die Spalten + * @return Liste von String für die einzelnen Spalten + */ + private List parseLine(String cvsLine, char separator) { + return parseLine(cvsLine, separator, DEFAULT_QUOTE); + } + + /** HIlfsfunktion für die Analyse einer Dateizeile + * @param cvsLine Zeile aus der Datei + * @param sparator Trennzeichen für die Spalten + * @param customQuote Kennung für Strings + * @return Liste von String für die einzelnen Spalten + */ + private List parseLine(String cvsLine, char separator, char customQuote) { + + List result = new ArrayList<>(); + + //if empty, return! + if (cvsLine == null && cvsLine.isEmpty()) { + return result; + } + + //ggf. Default-Value laden + if (customQuote == ' ') { + customQuote = DEFAULT_QUOTE; + } + + if (separator == ' ') { + separator = DEFAULT_SEPARATOR; + } + + StringBuffer curVal = new StringBuffer(); + boolean inQuotes = false; + boolean startCollectChar = false; + boolean doubleQuotesInColumn = false; + + char[] chars = cvsLine.toCharArray(); + + for (char ch : chars) { + + if (inQuotes) { // aktueller Text ist in Quotes eingeschlossen + startCollectChar = true; + + if (ch == customQuote) { // Quotes werden beendet, aber Achtung bei "" => Metazeichen + inQuotes = false; + if (ch == '\"') { + doubleQuotesInColumn = true; + } + + } else { + + if (ch == '\"' && !doubleQuotesInColumn) { + doubleQuotesInColumn = true; + } else { + curVal.append(ch); + doubleQuotesInColumn = false; + } + + } + } else { + if (ch == customQuote) { + + inQuotes = true; + + //Fixed : allow "" in empty quote enclosed + if (ch == '\"'){ + if(doubleQuotesInColumn) { + curVal.append('"'); + doubleQuotesInColumn = false; + } else doubleQuotesInColumn = true; + + + } + } + else { + doubleQuotesInColumn = false; + if (ch == separator) { + + result.add(curVal.toString()); + + curVal = new StringBuffer(); + startCollectChar = false; + + } else if (ch == '\r') { + //ignore LF characters + continue; + } else if (ch == '\n') { + //the end, break! + break; + } else { + curVal.append(ch); + } + } + } + + } + result.add(curVal.toString()); + return result; + } + + /** + * Sucht die Nummer einer durch Namen gegebenen Spalte. + * @param name Name der Spalte + * @return Nummer der Spalte + */ + + private int findColumnNumber(String name) { + List columns = header.getChildren(); + int i = 0; + for(Element c : columns) { + if (c.getText().toLowerCase().equals(name.toLowerCase())) { + return i; + + } + i++; + } + return -1; + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an. + */ + public void addColumn() { + Element entry = new Element("Column"); + entry.setAttribute("type", Table.UNKNOWN); + header.addContent(entry); + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an und benennt sie. + * @param title Bezeichnung der Spalte + */ + public void addColumn(String title) { + addColumn(); + Element nc = ((List)(header.getChildren())).get(header.getChildren().size()-1); + nc.setText(title); + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an und benennt und typisiert sie. + * @param title Bezeichnung der Spalte + * @param type Typ der Spalte (UNKNOWN, DOUBLE, INTEGER, FLOAT) + */ + public void addColumn(String title, String type) { + addColumn(title); + Element nc = ((List)(header.getChildren())).get(header.getChildren().size()-1); + nc.setAttribute("type", type); + } + + /** + * Löscht eine Spalte. + * @param i Nummer der Spalte. + */ + public void removeColumn(int i) { + List lines = doc.getRootElement().getChildren(); + for(Element l : lines) { + if(l.getChildren().size()>i) l.removeContent(i); + } + } + + /** + * Löscht eine Spalte + * @param name Name der Spalte + */ + public void removeColumn(String name) { + try{ + removeColumn(findColumnNumber(name)); + } catch(Exception e) { System.out.println("Unbekannter Spaltenname");} + } + + /** + * Liefert die Anzahl der Spalten in der Tabelle + * @return Anzahl der Spalten + */ + public int getColumnCount() { + return header.getChildren().size(); + } + + /** + * Liefert die Anzahl der Zeilen in der Tabelle + * @return Anzahl der Zeilen + */ + public int getRowCount() { + return doc.getRootElement().getChildren().size()-1; + } + + /** + * Löscht alle Zeilen der Tabelle. + * Die Spaltenüberschriften und Typen bleiben erhalten. + */ + public void clearRows() { + doc.getRootElement().removeChildren("Row"); + } + + /** + * Fügt eine neue Zeile an das Ende der Tabelle an. + * @return ein TableRow-Objekt für diese neue Zeile + */ + public TableRow addRow() { + Element row = new Element("Row"); + doc.getRootElement().addContent(row); + return new TableRow(doc, row); + } + + /** + * Löscht eine Zeile + * @param i Nummer der Zeile + */ + public void removeRow(int i) { + if(i rows = doc.getRootElement().getChildren(); + return new TableRow(doc, rows.get(i+1)); + } + return null; + } + + /** + * Liefert die ganze Tabelle als Array von TableRow-Objekten + * @return Array von TableRow-Objekten + */ + public TableRow[] rows() { + TableRow[] rows = new TableRow[getRowCount()]; + for(int i = 0; i < getRowCount(); i++) { + rows[i] = getRow(i); + } + return rows; + } + + /** + * Liefert den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param column Spaltennummer + * @return Wert der Zelle + */ + public int getInt(int row, int column) { + return getRow(row).getInt(column); + } + + /** + * Liefert den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param name Name der Spalte + * @return Wert der Zelle + */ + public int getInt(int row, String name) { + return getRow(row).getInt(name); + } + + /** + * Setzt den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param column Spaltennummer + * @param value neuer Wert der Zelle + */ + public void setInt(int row, int column,int value) { + getRow(row).setInt(column, value); + } + + /** + * Setzt den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(int row, String name, int value) { + getRow(row).setInt(name, value); + } + + /** + * Liefert alle Werte einer Zeile als Integer-Array. + * @param row Nummer der Zeile + * @return int-Array, dass alle Werte der Zeile enthält + */ + public int[] getIntRow(int row) { + try{ + TableRow trow = getRow(row); + int anz = getColumnCount(); + int[] r = new int[anz]; + for(int i=0; i) (header.getChildren())).get(i).getText(); + } else { + return ""; + } + } + + /** + * Liefert die Nummer einer Spalte + * @param name Name der Spalte + * @return Nummer der Spalte + */ + public int getColumn(String name) { + List columns = header.getChildren(); + int i = 0; + while (i < columns.size()) { + if (columns.get(i).getText().toLowerCase().equals(name.toLowerCase())) { + return i; + } + i++; + } // end of while + return -1; + } + + + /** + * Erzeugt eine neue Zeile mit i Spalten + * Wenn bisher nicht genügend Spalten vorhanden sind, werden automatisch neue Spalten hinzugefügt (auch zum Header) + * @param i Anzahl der Spalten + */ + private Element buildRow(int i) { + List columns = header.getChildren(); + Element entry=null; + for(int j=0; j<=i; j++) { + + if(j==columns.size()) { + Element h = new Element("Column"); + h.setAttribute("type", "unknown"); + header.addContent(h); + columns = header.getChildren(); + } + if(j==current.getChildren().size()) { + entry = new Element("Entry"); + current.addContent(entry); + + } + + } + return entry; + + } + + /** + * Erzeugt eine neue Zeile. + * Es werden genügend Spalten erzeugt, dass ein Wert in Spalte "name" eingetragen werden kann + * @param name Name der Spalte + */ + private Element buildRow(String name) { + List columns = header.getChildren(); + int i = 0; + for(Element c: columns) { + + if(c.getText().toLowerCase().equals(name.toLowerCase())) { + return buildRow(i); + } + i++; + } + return null; + + } + + /** + * Liefert den Wert einer Zelle als String + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public String getString(int i) { + if(i >= current.getContent().size()) return ""; + Element e = (Element) current.getContent(i) ; + if(e!=null) { + return e.getText(); + } else { + return ""; + } + } + + /** + * Liefert den Wert einer Zelle als String + * @param name Name der Spalte + * @return Wert der Zelle + */ + public String getString(String name) { + return getString(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als String + * @param i Nummer der Spalte + * @param text neuer Wert der Zelle + */ + public void setString(int i, String text) { + + Element e = buildRow(i); + if(e!=null) e.setText(text); + } + + /** + * Setzt den Wert einer Zelle als String + * @param name Name der Spalte + * @param text neuer Wert der Zelle + */ + public void setString(String name, String text) { + Element e = buildRow(name); + if(e!=null) e.setText(text); + } + + + /** + * Liefert den Wert einer Zelle als Int-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public int getInt(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Integer.parseInt(e.getText()); + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Int-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public int getInt(String name) { + return getInt(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Int-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(int i,int value) { + + Element e = buildRow(i); + if(e!=null) e.setText(""+value); + } + + /** + * Setzt den Wert einer Zelle als Int-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(String name, int value) { + Element e = buildRow(name); + if(e!=null) e.setText(""+value); + } + + /** + * Liefert den Wert einer Zelle als Float-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public float getFloat(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Float.parseFloat(e.getText().replace(",",".")); + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Float-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public float getFloat(String name) { + return getFloat(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Float-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setFloat(int i,float value) { + + Element e = buildRow(i); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Setzt den Wert einer Zelle als Float-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setFloat(String name, float value) { + Element e = buildRow(name); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Liefert den Wert einer Zelle als Double-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public double getDouble(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Double.parseDouble(e.getText().replace(",",".")); + + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Double-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public double getDouble(String name) { + return getDouble(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Double-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setDouble(int i,double value) { + + Element e = buildRow(i); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Setzt den Wert einer Zelle als Double-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setDouble(String name, double value) { + Element e = buildRow(name); + if(e!=null) e.setText(format.format(value)); + } + +} diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg10_balkendiagramm/XML.java b/03_vorlagen_tauschordner/02_greenfoot/alg10_balkendiagramm/XML.java new file mode 100644 index 0000000..c06c490 --- /dev/null +++ b/03_vorlagen_tauschordner/02_greenfoot/alg10_balkendiagramm/XML.java @@ -0,0 +1,637 @@ +/** + * Klasse zum Vereinfachten Zugriff auf XML-Dokumente + * Diese Klasse ist für den Einsatz in der Schule gedacht und soll den Schülern + * einen einfachen Zugriff auf XML-Dokumente ermöglichen. Die zur Verfügung + * stehenden Befehle sind wie in Processing realisiert. + * Dabei ist jeder Teilbaum des Dokuments wieder als XML-Objekt zugreifbar, das + * intern auf die gleiche XML-Dokumentstruktur zugreift. + * Dies ermöglicht bei unsachgemäßem Gebrauch die XML-Struktur zu zerstören. Im + * normalen Gebrauch sollte dies aber nicht relevant sein. + * + * Benötigt: jdom-1.1.3.jar + + * @author Thomas Schaller + * @version 1.0 vom 31.01.2019 + */ +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.ArrayList; +import java.io.*; + +import org.jdom.Document; +import org.jdom.Element; +import org.jdom.Attribute; +import org.jdom.JDOMException; +import org.jdom.input.SAXBuilder; +import org.jdom.output.XMLOutputter; +import org.jdom.output.Format; + +public class XML { + // Anfang Attribute + // XML-Dokumentstruktur + private Document doc; + // Zeiger auf das aktuelle Element + private Element current; + // Ende Attribute + + /** + * Erzeugt ein leeres XMLDokument + */ + public XML() { + this.doc = new Document(); + this.current = null; + } + + /** + * Erzeugt ein XML-Dokument aus einer Datei + * @param filename Dateiname der XML-Datei + */ + public XML(String filename) { + loadXML(filename); + } + + /** + * interner Konstruktor, um ein XML Objekt zu erzeugen, das auf einen bestimmten Knoten verweist + * @param doc die XML-Dokumentstruktur + * @param current Zeiger auf das aktuelle Element + */ + private XML(Document doc, Element current) { + this.doc = doc; + this.current = current; + } + + // Anfang Methoden + /** Öffnet das durch den Dateinamen gegebene Dokument + * @param filename Dateiname des XML-Files + */ + public void loadXML(String filename) { + doc = null; + File f = new File(filename); + + try { + // Das Dokument erstellen + SAXBuilder builder = new SAXBuilder(); + doc = builder.build(f); + + } catch (JDOMException e) { + e.printStackTrace(); + + } catch (IOException e) { + e.printStackTrace(); + } + // Zeiger im Baum auf Root-Element + current = doc.getRootElement(); + } + + /** Speichert den XML-Baum im angegebenen Dateinamen + * @param filename Dateiname des XML-Files + */ + public void saveXML(String filename) { + try { + // new XMLOutputter().output(doc, System.out); + XMLOutputter xmlOutput = new XMLOutputter(); + + // display nice nice + xmlOutput.setFormat(Format.getPrettyFormat()); + File f = new File(filename); + FileOutputStream outputFile = new FileOutputStream(f); + System.out.println("Speicher in : "+f.getAbsolutePath() ); + xmlOutput.output(doc, outputFile); + outputFile.close(); + System.out.println("File Saved!"); + } catch (IOException io) { + System.out.println(io.getMessage()); + } + + } + + //----------------------------------------------- Zeigerbewegungen -------------------------------------------------- + /** + * liefert ein XML-Objekt, das auf den Vaterknoten des aktuellen Elements zeigt. + * @return Vater des aktuellen Objekts. + */ + public XML getParent() { + if(current != null) { + Element parent = current.getParentElement(); + if (parent == null) { + return null; + } else { + return new XML(doc, parent); + } + } + return null; + } + + /** + * Überprüft, ob das Element irgendwelche Kinder hat oder nicht, und gibt das Ergebnis als boolean zurück. + * @return true, wenn Kinder vorhanden sind, sonst false + */ + public boolean hasChildren() { + if (current == null) { + return doc.hasRootElement(); + } else { + return current.getChildren().size()>0; + } + } + + /** + * Ermittelt die Namen aller Kinder des Elements und gibt die Namen als ein Array von Strings zurück. + * Dies ist dasselbe wie das Durchlaufen und Aufrufen von getName() auf jedem untergeordneten Element einzeln. + * @return Liste aller Namen der Kinder + */ + public String[] listChildren() { + if (current == null) { + if(doc.hasRootElement()) { + String[] names = new String[0]; + names[0] = doc.getRootElement().getName(); + return names; + } else { + return null; + } + } else { + List ch_element = current.getChildren(); + String[] names = new String[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + names[i] = ch_element.get(i).getName(); + } + return names; + } + } + + /** + * Liefert alle Kinder des Elements als Array von XML-Objekten. + * @return Array der Kinder als XML-Objekte + */ + public XML[] getChildren() { + if (current == null) { + if(doc.hasRootElement()) { + XML[] ch_xml = new XML[1]; + ch_xml[0] = new XML(doc, doc.getRootElement()); + return ch_xml; + } else { + return null; + } + } else { + List ch_element = current.getChildren(); + XML[] ch_xml = new XML[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + ch_xml[i] = new XML(doc, ch_element.get(i)); + } + return ch_xml; + } + } + + /** + * Liefert bestimmte Kinder des Elements als Array von XML-Objekten. + * Die Methode gibt dabei alle Kinder zurück, die dem angegebenen Namen entsprechen. + * @param name Name der gesuchten Kind-Objekte + * @return Array der Kinder als XML-Objekte + */ + public XML[] getChildren(String name) { + if (current == null) { + if(doc.hasRootElement()) { + XML[] ch_xml = new XML[1]; + ch_xml[0] = new XML(doc, doc.getRootElement()); + if(doc.getRootElement().getName().equals(name)){ + return ch_xml; + } else { + return null; + } + } else { + return null; + } + } else { + List ch_element = current.getChildren(name); + XML[] ch_xml = new XML[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + ch_xml[i] = new XML(doc, ch_element.get(i)); + } + return ch_xml; + } + } + + /** + * Liefert das erste Kind des Elements mit einem bestimmten Namen. + * Die Methode gibt das erste Kind zurück, das dem angegebenen Namen entsprechen. + * @param name Name des gesuchten Kind-Objektes + * @return Kind als XML-Objekt + */ + + public XML getChild(String name) { + if (current == null) { + Element e = doc.getRootElement(); + if (e.getName().equals(name)) { + return new XML(doc, e); + } else { + return null; + } + } else { + String[] names = name.split("/"); + Element e = current; + int i = 0; + while(i < names.length) { + e = e.getChild(names[i]); + if (e==null) return null; + i++; + } + return new XML(doc, e); + } + } + + /** + * Liefert das i. Kind des Elements. + * Die Methode gibt das i. Kind des aktuellen Elements zurück. + * @param i Nummer des Kindes + * @return Kind als XML-Objekt + */ + public XML getChild(int i) { + if (current == null) { + return new XML(doc, doc.getRootElement()); + } else { + List ch_element = current.getChildren(); + if (i>=ch_element.size()) return null; + return new XML(doc, ch_element.get(i)); + } + } + + //--------------------------------------------------- Methoden für das aktuelle Element ------------------------------------------------- + /** + * Frage den Namen des aktuellen Elements ab + * @return Namen des Elements + */ + public String getName() { + if (current==null) return ""; + return current.getName(); + } + + /** + * Setze den Namen des aktuellen Elements. + * @param name Neuer Name des Elements + */ + public void setName(String name) { + if (current==null) return; + current.setName(name); + } + + /** + * liefert die Anzahl der Attribute eines Elements. + * @return Anzahl des Attribute + */ + public int getAttributeCount() { + if (current == null) return 0; + return current.getAttributes().size(); + } + + /** + * liefert zurück, ob das aktuelle Element Attribute hat . + * @return true, wenn es Attribute gibt + */ + public boolean hasAttribute() { + if (current == null) return false; + return current.getAttributes().size()>0; + } + + /** + * Ruft alle Attribute des angegebenen Elements ab und gibt sie als Array von Strings zurück. + * @return Liste der Attributnamen + */ + public String[] listAttributes() { + if (current == null) return null; + List attr = current.getAttributes(); + String[] names = new String[attr.size()]; + for(int i=0; i < attr.size() ; i++) { + names[i] = attr.get(i).getName(); + } + return names; + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs + */ + public String getString(String attribute) { + if (current==null) return ""; + return current.getAttributeValue(attribute); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs + */ + public String getString(String attribute, String defaultValue) { + if (current==null) return defaultValue; + return current.getAttributeValue(attribute,defaultValue); + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param text neuer Wert des Attributs + */ + public void setString(String attribute, String text) { + if (current==null) return; + current.setAttribute(attribute, text); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Integer-Zahl + */ + public int getInt(String attribute) { + if (current==null) return 0; + try{ + int i = Integer.parseInt(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als Integer-Zahl + */ + public int getInt(String attribute, int defaultValue) { + if (current==null) return defaultValue; + try{ + int i = Integer.parseInt(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setInt(String attribute, int value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Float-Zahl + */ + public float getFloat(String attribute) { + if (current==null) return 0; + try{ + float i = Float.parseFloat(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als Float-Zahl + */ + public float getFloat(String attribute, float defaultValue) { + if (current==null) return defaultValue; + try{ + float i = Float.parseFloat(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setFloat(String attribute, float value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Double-Zahl + */ + public double getDouble(String attribute) { + if (current==null) return 0; + try{ + double i = Double.parseDouble(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + +/** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als double-Zahl + */ + public double getDouble(String attribute, double defaultValue) { + if (current==null) return defaultValue; + try{ + double i = Double.parseDouble(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setDouble(String attribute, double value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt den Inhalt/Text des aktuellen Elements ab + * @return Inhalt des Elements + */ + public String getContent() { + if ( current==null) return ""; + + return current.getText(); + } + + /** + * Fragt den Inhalt/Text des aktuellen Elements ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardtext + * @return Inhalt des Elements + */ + public String getContent(String defaultValue) { + if ( current==null) return defaultValue; + String t = current.getText(); + if(t.equals("")) t = defaultValue; + return t; + } + + /** + * Setzt den Inhalt/Text des aktuellen Elements + * @param text Neuer Inhalt des Elements + */ + public void setContent(String text) { + if ( current==null) return; + current.setText(text); + } + + + /** + * Fragt den Inhalt des aktuellen Elements als Integerzahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ public int getIntContent(int defaultValue) { + if ( current==null) return defaultValue; + try{ + int i = Integer.parseInt(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Integerzahl ab + * @return Inhalt des Elements + */ + public int getIntContent() { + if ( current==null) return 0; + try{ + int i = Integer.parseInt(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setIntContent(int value) { + if ( current==null) return; + current.setText(""+value); + } + + + /** + * Fragt den Inhalt des aktuellen Elements als Floatzahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ + public float getFloatContent(float defaultValue) { + if ( current==null) return defaultValue; + try{ + float i = Float.parseFloat(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Floatzahl ab + * @return Inhalt des Elements + */ + public float getFloatContent() { + if ( current==null) return 0; + try{ + float i = Float.parseFloat(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setFloatContent(float value) { + if ( current==null) return; + current.setText(""+value); + } + +/** + * Fragt den Inhalt des aktuellen Elements als Doublezahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ + public double getDoubleContent(double defaultValue) { + if ( current==null) return defaultValue; + try{ + double i = Double.parseDouble(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Doublezahl ab + * @return Inhalt des Elements + */ + public double getDoubleContent() { + if ( current==null) return 0; + try{ + double i = Double.parseDouble(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setDoubleContent(double value) { + if ( current==null) return; + current.setText(""+value); + } + + + // ----------------------------------------------- XML-Struktur aufbauen ------------------------------------------------ + /** Erzeuge neues Element nach der aktuellen Position und setze dieses als aktuelles Element + * @param name Name des neuen Elements + * @return neues Element als XML-Objekt + */ + public XML addChild(String name) { + Element e = new Element(name); + if(current == null){ // man ist auf Root-Ebene + doc.setRootElement(e); + + } + else { + current.addContent(e); + } // end of if-else + return new XML(doc, e); + } + + /** + * liefert das aktuelle Element als jdom-Element-Objekt + * @return aktuelles Element + */ + private Element getCurrent() { + return current; + } + + /** + * löscht ein Kind des aktuellen Knotens. + * Ist kid kein Kind des aktuellen Elements passiert gar nichts. + * @param kid XML-Objekt des Kindes + */ + public void removeChild(XML kid) { + if (current == null) return; + Element e = kid.getCurrent(); + int index = current.indexOf(e); + if(index >= 0) { current.removeContent(e);} + } + +} diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg10_balkendiagramm/images/balken.png b/03_vorlagen_tauschordner/02_greenfoot/alg10_balkendiagramm/images/balken.png new file mode 100644 index 0000000..9ff1ffc Binary files /dev/null and b/03_vorlagen_tauschordner/02_greenfoot/alg10_balkendiagramm/images/balken.png differ diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg10_balkendiagramm/images/bilderrahmen.png b/03_vorlagen_tauschordner/02_greenfoot/alg10_balkendiagramm/images/bilderrahmen.png new file mode 100644 index 0000000..7f34e32 Binary files /dev/null and b/03_vorlagen_tauschordner/02_greenfoot/alg10_balkendiagramm/images/bilderrahmen.png differ diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg10_balkendiagramm/jdom-1.1.3.jar b/03_vorlagen_tauschordner/02_greenfoot/alg10_balkendiagramm/jdom-1.1.3.jar new file mode 100644 index 0000000..a287727 Binary files /dev/null and b/03_vorlagen_tauschordner/02_greenfoot/alg10_balkendiagramm/jdom-1.1.3.jar differ diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg10_balkendiagramm/project.greenfoot b/03_vorlagen_tauschordner/02_greenfoot/alg10_balkendiagramm/project.greenfoot new file mode 100644 index 0000000..acf4537 --- /dev/null +++ b/03_vorlagen_tauschordner/02_greenfoot/alg10_balkendiagramm/project.greenfoot @@ -0,0 +1,108 @@ +#Greenfoot project file +class.Balkendiagramm.image=balken.png +class.Balkendiagramm.superclass=PictureViewer +class.MyWorld.superclass=greenfoot.World +class.Picture.superclass= +class.PictureViewer.image=bilderrahmen.png +class.PictureViewer.superclass=greenfoot.Actor +class.Table.superclass= +class.TableRow.superclass= +class.XML.superclass= +dependency1.from=PictureViewer +dependency1.to=Picture +dependency1.type=UsesDependency +dependency2.from=Table +dependency2.to=TableRow +dependency2.type=UsesDependency +dependency3.from=Picture +dependency3.to=PictureViewer +dependency3.type=UsesDependency +dependency4.from=MyWorld +dependency4.to=Balkendiagramm +dependency4.type=UsesDependency +editor.fx.0.height=739 +editor.fx.0.width=816 +editor.fx.0.x=226 +editor.fx.0.y=61 +height=885 +mainWindow.height=881 +mainWindow.width=1318 +mainWindow.x=40 +mainWindow.y=40 +package.numDependencies=4 +package.numTargets=7 +project.charset=UTF-8 +publish.hasSource=false +publish.locked=true +publish.longDesc= +publish.shortDesc= +publish.tags= +publish.title= +publish.url= +readme.height=58 +readme.name=@README +readme.width=47 +readme.x=10 +readme.y=10 +simulation.speed=97 +target1.height=50 +target1.name=PictureViewer +target1.showInterface=false +target1.type=ClassTarget +target1.typeParameters= +target1.width=100 +target1.x=0 +target1.y=0 +target2.height=50 +target2.name=Table +target2.showInterface=false +target2.type=ClassTarget +target2.typeParameters= +target2.width=80 +target2.x=0 +target2.y=0 +target3.height=50 +target3.name=Balkendiagramm +target3.showInterface=false +target3.type=ClassTarget +target3.typeParameters= +target3.width=120 +target3.x=0 +target3.y=0 +target4.height=50 +target4.name=Picture +target4.showInterface=false +target4.type=ClassTarget +target4.typeParameters= +target4.width=80 +target4.x=0 +target4.y=0 +target5.height=50 +target5.name=XML +target5.showInterface=false +target5.type=ClassTarget +target5.typeParameters= +target5.width=100 +target5.x=0 +target5.y=0 +target6.height=50 +target6.name=TableRow +target6.showInterface=false +target6.type=ClassTarget +target6.typeParameters= +target6.width=80 +target6.x=0 +target6.y=0 +target7.height=50 +target7.name=MyWorld +target7.showInterface=false +target7.type=ClassTarget +target7.typeParameters= +target7.width=80 +target7.x=0 +target7.y=0 +version=3.0.0 +width=1350 +world.lastInstantiated=MyWorld +xPosition=368 +yPosition=100 diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg11_balkendiagramm_zufall/Balkendiagramm.java b/03_vorlagen_tauschordner/02_greenfoot/alg11_balkendiagramm_zufall/Balkendiagramm.java new file mode 100644 index 0000000..7d24d22 --- /dev/null +++ b/03_vorlagen_tauschordner/02_greenfoot/alg11_balkendiagramm_zufall/Balkendiagramm.java @@ -0,0 +1,69 @@ +import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot und MouseInfo) +import java.awt.Font; + +/** + * Balkendiagramm für int-Array, Zahlen werden zufällig erzeugt. + * + * @author Schaller + * @version 29.11.18 + */ +public class Balkendiagramm extends PictureViewer + +{ + // Liste mit allen Werten + int[] zahlen; + + // Schriften + Font kleineSchrift; + Font grosseSchrift; + + public Balkendiagramm() { + size(1000, 700); + background(0); + kleineSchrift = new Font( Font.SANS_SERIF, Font.PLAIN, 12 ); + grosseSchrift = new Font( Font.SANS_SERIF, Font.PLAIN, 20 ); + + // Zufallszahlen erzeugen und anzeigen + erzeugeZufallsarray(20); + + zeichneBalken(); + } + + public int getZufallszahl(int min, int max) { + java.util.Random r = new java.util.Random(); + return r.nextInt(max-min+1)+min; + } + + public void erzeugeZufallsarray(int laenge) { + + // ToDo: Neues Array der richtigen Länge erzeugen + + // ToDo: Jedes Element mit einer Zufallszahl belegen + + } + + public void zeichneBalken() { + clear(); + + // Überschrift + fill(255,255,255); + textFont(grosseSchrift); + text("Balkendiagramm", 2, 20); + textFont(kleineSchrift); + + // Alle Einträge darstellen + for (int i = 0; i< zahlen.length; i++) { + + fill(20,30,170); + + // Balkendiagramm zeichnen + rect(120, 25+i*15, zahlen[i]+1, 13); + + // Beschriftung + fill(255,255,255); + text("i="+i, 2, 35+i*15); + text("zahlen["+i+"]="+zahlen[i], 30, 35+i*15); + } + } + +} diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg11_balkendiagramm_zufall/MyWorld.java b/03_vorlagen_tauschordner/02_greenfoot/alg11_balkendiagramm_zufall/MyWorld.java new file mode 100644 index 0000000..ab22bde --- /dev/null +++ b/03_vorlagen_tauschordner/02_greenfoot/alg11_balkendiagramm_zufall/MyWorld.java @@ -0,0 +1,36 @@ +import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot und MouseInfo) + +/** + * Ergänzen Sie hier eine Beschreibung für die Klasse MyWorld. + * + * @author (Ihr Name) + * @version (eine Versionsnummer oder ein Datum) + */ +public class MyWorld extends World +{ + + /** + * Konstruktor für Objekte der Klasse MyWorld + * + */ + public MyWorld() + { + // Erstellt eine neue Welt mit 1200x900 Pixeln + super(1000, 700, 1); + + prepare(); + } + + + /** + * Bereite die Welt für den Programmstart vor. + * Das heißt: Erzeuge die Anfangs-Objekte und füge sie der Welt hinzu. + */ + private void prepare() + { + Balkendiagramm balkendiagramm = new Balkendiagramm(); + addObject(balkendiagramm,500,350); + + } +} + diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg11_balkendiagramm_zufall/Picture.java b/03_vorlagen_tauschordner/02_greenfoot/alg11_balkendiagramm_zufall/Picture.java new file mode 100644 index 0000000..8df3d55 --- /dev/null +++ b/03_vorlagen_tauschordner/02_greenfoot/alg11_balkendiagramm_zufall/Picture.java @@ -0,0 +1,699 @@ +import java.awt.image.*; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.BasicStroke; +import java.util.Vector; +import javax.imageio.*; +import java.io.*; +import java.awt.*; +import javax.swing.*; +import java.util.Random; +import java.awt.geom.AffineTransform; +/** + * + * Bildklasse für die Simulation von Processing-Befehlen + * + * Diese Klasse stellt ein BufferedImage bereit, in das mit Processing-Befehlen gezeichnet + * werden kann. + * Zusätzlich kann ein Bildanzeiger über jede Änderung des Bildes informiert werden, + * um "Zurück"-Befehle zu ermöglichen. Der Bildanzeiger ist entweder eine normale Java + * ScrollPane oder ein Actor aus Greenfoot. + * Die Dokumentation der einzelnen Zeichenmethoden ist der Processing-Reference + * (https://processing.org/reference/ steht unter CC-Lizenz: https://creativecommons.org/) + * entnommen und mit Deepl.com ins Deutsche übersetzt. + * + * @version 1.0 from 23.01.2019 + * @author Thomas Schaller (ZPG Informatik Klasse 9) + */ + +public class Picture{ + + // Einstellungmöglichkeiten für das Zeichnen von Rechtecken und Ellipsen + // RADIUS = Mittelpunkt+Radius wird gegeben, CENTER = Mittelpunkt und Breite/Höhe wird gegeben, + // CORNER = Linke obere Ecke + Breite/Höhe, CORNERS = Linke obere und rechte untere Ecke + public static final int RADIUS = 1; + public static final int CENTER = 2; + public static final int CORNER = 3; + public static final int CORNERS = 4; + + // gespeichertes Bild, + private BufferedImage image; + + // aktuelle Farbeinstellungen + private Color background; + private Color pencolor; + private Color fillcolor; + + // aktuelle Stiftdicke + private double stroke; + + // akkteller Koordinatenmodus von Rechtecken und Ellipsen + private int ellipseMode = CENTER; + private int rectMode = CORNER; + + // aktueller Font + private Font textfont = null; + + // muss ein Bildanzeiger benachrichtigt werden + private PictureViewer observer = null; + private boolean autorefresh = true; + + /** + * Erzeugt ein Bild mit Standardgröße 500x400 + */ + public Picture() { + this(500,400); + } + + /** + * Erzeugt ein Bild der angegeben Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public Picture(int width, int height) { + this(width,height, "D0D0D0"); + } + + /** + * Erzeugt ein Bild aus einer Datei + * @param filename Dateiname des Bildes + */ + public Picture(String filename) { + load(filename); + } + + /** + * Erzeugt ein Bild der angegebenen Größe mit festgelegtem Hintergrund + * @param width Breite des Bildes + * @param height Höhe des Bildes + * @param background Farbe des Hintergrunds + */ + public Picture(int width, int height, String background) { + this.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + this.background = decode(background); + this.pencolor = new Color(0,0,0); + this.stroke = 1; + this.fillcolor = null; + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(this.background); + g.fillRect(0,0,width-1, height-1); + } + + /** + * Legt fest, wer das Bild anzeigt. + * Diese ermöglicht die Benachrichtung des Observers, wenn sich das Bild ändert. + * @param observer Anzeiger des Bildes + */ + + public void setObserver(PictureViewer observer) { + this.observer= observer; + } + + /** + * Direktes Setzen des Bildes (für interne Zwecke) + * @param b Bild, das gespeichert werden soll. + */ + public void setImage(BufferedImage b) { + image = b; + } + + /** + * Direktes Abfragen des Bildes (für interne Zwecke) + * @return Bild, das gerade gespeichert ist. + */ + public BufferedImage getImage() { + return image; + } + + /** + * Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + * Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + * der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu. + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public void size(int width, int height){ + pushImage(); + this.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(background); + g.fillRect(0,0,width-1, height-1); + } + + /** + * Liefert die Breite des Bildes zurück. + * @return Breite des Bildes + */ + public int getWidth() { + return image.getWidth(); + } + + /** + * Liefert die Höhe des Bildes zurück. + * @return Höhe des Bildes + */ + public int getHeight() { + return image.getHeight(); + } + + + /** + * Erzeugt eine Kopie des Bildes und übergibt sie an den Observer (falls existent), damit dieser die Versionen speichern kann + */ + private void pushImage() { + if(observer != null) { + observer.pushImage(); + } + } + + + /** + * Legt fest, ob nach jedem Zeichenbefehl automatisch das Bild auch in + * der Oberfläche aktualisiert wird. Die Einstellung "false" beschleunigt + * das Zeichnen aufwändiger Bilder und verhindert "Flackern". + * Das Neuzeichnen kann durch die Methode "refresh" gezielt ausgelöst werden. + * @param autorefresh true = nach jedem Zeichenbefehl die Anzeige aktualisieren, false= nur durch die Methode refresh neu zeichnen + */ + public void setAutoRefresh(boolean autoRefresh) { + this.autorefresh = autoRefresh; + } + + + /** + * Auch die anzeigenden Klasse wird zum Neuzeichnen aufgefordert. + */ + private void repaint() { + if(observer != null && autorefresh) { + observer.repaint(); + } + } + + /** + * Auch die anzeigenden Klasse wird zum Neuzeichnen aufgefordert. + */ + public void refresh() { + if(observer != null) { + observer.repaint(); + } + } + + // ----------------------------------------- Zeichenfunktionen ----------------------------------------------- + /** + * Löscht den Inhalt des Bildes. + * Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt. + */ + + public void clear(){ + pushImage(); + image = new BufferedImage(image.getWidth(), image.getHeight(), image.getType()); + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(background); + g.fillRect(0,0,image.getWidth()-1, image.getHeight()-1); + repaint(); + } + + /** + * Konvertiert die in einem bestimmten Modus gegebenen Koordinaten in die Java-übliche Links_Oben_Breite_Höhe Version + * Die Änderungen werden direkt im Array vorgenommen + * @param coord Array mit vier Koordinateneinträgen im gegebenen Modus + * @param mode Modus der Koordinaten (CORNER, CORNERS, RADIUS oder CENTER) + */ + private void convert(int[] coord, int mode) { + switch(mode) { + case CORNER: break; + case CORNERS: coord[2] -= coord[0]; coord[3] -= coord[1]; break; + case RADIUS: coord[2] *= 2; coord[3] *=2; + case CENTER: coord[0] -= coord[2]/2; coord[1] -= coord[3]/2; + } + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + * Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + * Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void rectMode(int mode) { + rectMode = mode; + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + * Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + * Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als Breite und Höhe der Form. + * ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void ellipseMode(int mode) { + ellipseMode = mode; + } + + + + /** + * Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + * Um eine Linie einzufärben, verwenden Sie die {@link #stroke(int, int, int) stroke()} Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + * Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + * {@link #strokeWeight(double) strokeWeight()} geändert werden. + * @param x1 x-Koordinate des 1. Punktes + * @param y1 y-Koordinate des 1. Punktes + * @param x2 x-Koordinate des 2. Punktes + * @param y2 y-Koordinate des 2. Punktes + */ + public void line(int x1, int y1, int x2, int y2) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + if (stroke > 0) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawLine(x1, y1, x2, y2); + } + repaint(); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, rectMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillRect(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawRect(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, ellipseMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillOval(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawOval(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + int px[] = {x1, x2, x3}; + int py[] = {y1, y2, y3}; + polygon(px, py); + + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + + int px[] = {x1, x2, x3, x4}; + int py[] = {y1, y2, y3, y4}; + polygon(px, py); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + + public void polygon(int[] x, int[] y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(fillcolor != null) { + + g.setColor(fillcolor); + g.fillPolygon(x,y, y.length); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawPolygon(x, y, x.length); + } + repaint(); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + ellipse(x,y,1, 1); + + } + + // ----------------------------------------- Schriftdarstellung ----------------------------------------------- + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param s Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String s, int x, int y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(pencolor != null) { + g.setColor(fillcolor); + g.setStroke(new BasicStroke((float) stroke)); + g.setFont(textfont); + g.drawString(s, x, y); + } + repaint(); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + this.textfont = font; + } + + + // ----------------------------------------- Farbfestlegungen ----------------------------------------------- + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(String color) { + try{ + return new Color( + Integer.valueOf( color.substring( 0, 2 ), 16 ), + Integer.valueOf( color.substring( 2, 4 ), 16 ), + Integer.valueOf( color.substring( 4, 6 ), 16 ) ); + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(int color) { + try{ + if(color >=0 && color < 256) { + return new Color(color,color,color); + } else { + int r = color / 0x010000 % 0xFF; + int g = color / 0x000100 % 0xFF; + int b = color % 0xFF; + System.out.println(""+r+","+g+","+b); + return new Color(r, g, b ); + } + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + this.pencolor = decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + this.pencolor=decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + this.pencolor = new Color(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + this.pencolor = null; + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + this.stroke = width; + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + this.fillcolor = decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + this.fillcolor=decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + this.fillcolor = new Color(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + this.fillcolor = null; + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + if(c < 256) { + this.background=new Color(c,c,c); + } else { + int r = c / 0x010000; + int g = c / 0x000100 % 0xFF; + int b = c % 0xFF; + this.background= new Color(r, g, b ); + } + + this.clear(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + this.background=new Color(r,g,b); + this.clear(); + } + + +// ----------------------------------------- Dateioperationen ----------------------------------------------- + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + try{ + this.image = ImageIO.read(new File(filename)); + this.background = decode("D0D0D0"); + this.pencolor = new Color(0,0,0); + this.fillcolor = null; + this.stroke = 1; + this.repaint(); + + } catch(Exception e) { + System.out.println("Fehler beim Einlesen der Bilddatei"); + } + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + try{ + String[] fn = filename.split("\\."); + if (fn.length== 1) { + ImageIO.write(image, "PNG", new File(filename+".png")); + } else { + + if (fn.length == 2 && (fn[1].toUpperCase().equals("PNG") || + fn[1].toUpperCase().equals("GIF"))){ + ImageIO.write(image, fn[1], new File(filename)); + }else { + System.out.println("Unbekanntes Bildformat"); + } + } + + } catch(Exception e) { + System.out.println("Fehler beim Speichern"); + } + } + + +// ----------------------------------------- Sonstiges ----------------------------------------------- + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + + public Color[][] getPixelArray() { + Color[][] pixel = new Color[image.getWidth()][image.getHeight()]; + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + pixel[x][y] = new java.awt.Color(image.getRGB(x,y)); + } + } + return pixel; + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + size(pixel.length,pixel[0].length); + Graphics2D g = (Graphics2D) image.getGraphics(); + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + g.setColor(pixel[x][y]); + g.fillRect(x, y, 1, 1); + } + } + repaint(); + } + + /** + * Hilfsfunktion zum Verzögern der Ausgabe + * @param millis Wartezeit in Millisekunden + */ + public void delay(int millis) { + try{ + Thread.sleep(millis); + + } catch(Exception e) { + + } + + } + + + +} diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg11_balkendiagramm_zufall/PictureViewer.java b/03_vorlagen_tauschordner/02_greenfoot/alg11_balkendiagramm_zufall/PictureViewer.java new file mode 100644 index 0000000..ecbb521 --- /dev/null +++ b/03_vorlagen_tauschordner/02_greenfoot/alg11_balkendiagramm_zufall/PictureViewer.java @@ -0,0 +1,499 @@ +import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot und MouseInfo) +import java.awt.image.*; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.BasicStroke; +import java.awt.Font; +import java.util.Vector; +import java.awt.Color; +import javax.imageio.*; +import java.io.*; + +/** + * Der PictureViewer ist ein Actor, der in der Lage ist ein + * Objekt der Klasse Picture anzuzeigen. Zusätzlich können + * mehrere Verarbeitungsschritte gespeichert werden, um ein + * "zurück"-Funktion zu ermöglichen. + * + * @author Thomas Schaller + * @version V1.0 vom 10.02.2019 + */ +public class PictureViewer extends Actor +{ + public static final int FIT = -1; + public static final int NORMAL = 1; + + private static final int ANZ_BACK = 0; + + private double zoom; + protected Picture picture = null; + private Vector history; + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der Größe 500x400 + */ + public PictureViewer() { + this(500,400); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public PictureViewer(int width, int height) { + this(width,height, "D0D0D0"); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + * @param background Farbe des Hintergrunds als HEX-String (z.B. "FF3A45") + */ + public PictureViewer(int width, int height, String background) { + picture = new Picture(width,height, background); + picture.setObserver(this); + this.history = new Vector(); + this.zoom = NORMAL; + repaint(); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild aus einer Bilddatei + * @param filename Name des Bildes + */ + public PictureViewer(String filename) { + picture = new Picture(filename); + picture.setObserver(this); + this.history = new Vector(); + this.zoom = NORMAL; + repaint(); + } + + /** + * Speichert das übergebene Bild in der History. + * @param b zu speicherndes Bild + */ + public void pushImage() { + if( this.ANZ_BACK > 0) { + if(history.size() == this.ANZ_BACK) { + history.removeElementAt(0); + } + + BufferedImage b = new BufferedImage(picture.getWidth(), picture.getHeight(), picture.getImage().getType()); + Graphics g = b.getGraphics(); + g.drawImage(picture.getImage(), 0, 0, null); + g.dispose(); + + history.add(b); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + private void popImage() { + int anz = history.size(); + if(anz>0) { + BufferedImage i = history.get(anz-1); + history.removeElementAt(anz-1); + picture.setImage(i); + repaint(); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + public void back() { + popImage(); + } + + /** + * Setzt den Zoom-Faktor für das Bild. + * Als Zoomfaktor sind auch die Konstanten Bildanzeiger.FIT (auf Bildschirmgröße zoomen) und Bildanzeiger.NORMAL (100%) möglich. + * @param factor Zoomfaktor (1.0 = 100%). + */ + public void setZoom(double zoom) { + this.zoom = zoom; + repaint(); + } + + /** + * Setzt die automatische Neuanzeige des Bildes. + * Mit dieser Methode kann man einstellen, ob nach jedem Zeichenbefehl + * die Anzeige auf dem Bildschirm aktualisiert werden soll. Bei sehr + * vielen Zeichenbefehlen wird die Ausgabe dadurch sehr langsam. Es reicht + * eine Anzeige am Ende der Zeichenbefehle. Rufen Sie dann für das Neuzeichnen + * die Methode refresh() auf. + * @param autoRefresh true, wenn nach jedem Zeichenbefehl die Anzeige aktualisiert werden soll. + */ + public void setAutoRefresh(boolean autoRefresh) { + picture.setAutoRefresh(autoRefresh); + } + + /** + * Sorgt für die Aktualisierung der Bildschrimanzeige. Das aktuelle Bild + * wird dadurch angezeigt. Durch Einstellung von autoRefresh kann die + * Anzeige automatisiert werden. + */ + public void refresh() { + repaint(); + } + + /** + * Setzt das angezeigt Bild neu und beachtet dabei den Zoomfaktor. + */ + public void repaint() { + double faktor = zoom; + + if (zoom == FIT) { + double faktorw = (double) this.getWorld().getWidth() / picture.getWidth(); + double faktorh = (double) this.getWorld().getHeight() / picture.getHeight(); + faktor = Math.min(faktorw, faktorh); + } + int gfi_width = (int) (picture.getWidth()*faktor); + int gfi_height = (int) (picture.getHeight()*faktor); + + setImage(new GreenfootImage(gfi_width, gfi_height)); + Graphics2D g = (Graphics2D) this.getImage().getAwtImage().getGraphics(); + g.drawImage(picture.getImage(),0,0,gfi_width, gfi_height, 0, 0, picture.getWidth(), picture.getHeight(), null); + g.setColor(new java.awt.Color(0,0,0)); + g.setStroke(new BasicStroke((float) 1)); + g.drawRect(0,0,gfi_width-1, gfi_height-1); + + } + + // Wrappermethoden + /** + * Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + * Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + * der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu. + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public void size(int width, int height){ + picture.size(width, height); + } + + /** + * Liefert die Breite des Bildes zurück. + * @return Breite des Bildes + */ + public int getImageWidth() { + return picture.getWidth(); + } + + /** + * Liefert die Höhe des Bildes zurück. + * @return Höhe des Bildes + */ + public int getImageHeight() { + return picture.getHeight(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + picture.background(c); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + picture.background(r,g,b); + } + + /** + * Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + * Um eine Linie einzufärben, verwenden Sie die {@link #stroke(int, int, int) stroke()} Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + * Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + * {@link #strokeWeight(double) strokeWeight()} geändert werden. + * @param x1 x-Koordinate des 1. Punktes + * @param y1 y-Koordinate des 1. Punktes + * @param x2 x-Koordinate des 2. Punktes + * @param y2 y-Koordinate des 2. Punktes + */ + public void line(int x1, int y1, int x2, int y2) { + picture.line(x1,y1,x2,y2); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + picture.rect(a,b,c,d); + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + picture.ellipse(a,b,c,d); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + picture.triangle(x1,y1,x2,y2,x3,y3); + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + picture.quad(x1,y1,x2,y2,x3,y3,x4,y4); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + public void polygon(int[] x, int[] y) { + picture.polygon(x,y); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + picture.point(x,y); + + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + * Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + * Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void rectMode(int mode) { + picture.rectMode(mode); + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + * Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + * Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als Breite und Höhe der Form. + * ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void ellipseMode(int mode) { + picture.ellipseMode(mode); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + picture.stroke(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + picture.noStroke(); + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + picture.strokeWeight(width); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + picture.fill(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + picture.noFill(); + } + + /** + * Löscht den Inhalt des Bildes. + * Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt. + */ + public void clear(){ + picture.clear(); + } + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + picture.load(filename); + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + picture.save(filename); + } + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param t Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String t, int x, int y) { + picture.text(t,x,y); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + picture.textFont(font); + } + + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + public Color[][] getPixelArray() { + return picture.getPixelArray(); + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + picture.setPixelArray(pixel); + } + + +} + diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg11_balkendiagramm_zufall/README.TXT b/03_vorlagen_tauschordner/02_greenfoot/alg11_balkendiagramm_zufall/README.TXT new file mode 100644 index 0000000..4b8fadd --- /dev/null +++ b/03_vorlagen_tauschordner/02_greenfoot/alg11_balkendiagramm_zufall/README.TXT @@ -0,0 +1,14 @@ +------------------------------------------------------------------------ +Dies ist die README-Datei des Projekts. Hier sollten Sie Ihr Projekt +beschreiben. +Erzählen Sie dem Leser (jemand, der nichts über dieses Projekt weiss), +alles, was er/sie wissen muss. Üblicherweise sollte der Kommentar +zumindest die folgenden Angaben umfassen: +------------------------------------------------------------------------ + +PROJEKTBEZEICHNUNG: +PROJEKTZWECK: +VERSION oder DATUM: +WIE IST DAS PROJEKT ZU STARTEN: +AUTOR(EN): +BENUTZERHINWEISE: diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg11_balkendiagramm_zufall/Table.java b/03_vorlagen_tauschordner/02_greenfoot/alg11_balkendiagramm_zufall/Table.java new file mode 100644 index 0000000..ee5a211 --- /dev/null +++ b/03_vorlagen_tauschordner/02_greenfoot/alg11_balkendiagramm_zufall/Table.java @@ -0,0 +1,894 @@ +/** + * Die Klasse Table vereinfacht den Zugriff auf CSV-Dateien. + * Die Klassen Table und TableRow ermöglichen einen einfachen Zugriff auf tabellenbasierte + * Dokumente. + * + * @author Thomas Schaller + * @version 1.0 vom 01.02.2019 + */ + +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.ArrayList; +import java.io.*; +import java.util.Scanner; + +import org.jdom.Document; +import org.jdom.Element; +import org.jdom.Attribute; +import org.jdom.JDOMException; +import org.jdom.input.SAXBuilder; +import org.jdom.output.XMLOutputter; +import org.jdom.output.Format; + +public class Table +{ + // Standardtrennzeichen für Spalten + private static final char DEFAULT_SEPARATOR = ';'; + // Standardmarkierung für Texte + private static final char DEFAULT_QUOTE = '"'; + // Standardtrennzeichen für Dezimalzahlen + private static final char DEFAULT_COMMA = ','; + + // mögliche Spaltentypen + private static final String UNKNOWN ="UNKOWN"; + private static final String INT = "INTEGER"; + private static final String DOUBLE = "DOUBLE"; + private static final String FLOAT = "FLOAT"; + + // interne Verwaltung des Dokuments als JDOM-Document-Objekt + private Document doc; + // Verweis auf Element für Kopfzeile + private Element header; + // Ende Attribute + + /** + * Erzeugt leeres Tabellen-Dokument. + */ + public Table() { + this.doc = new Document(); + doc.setRootElement(new Element("CSV-Data")); + this.header = new Element("Header"); + doc.getRootElement().addContent(header); + } + + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei und erstellt ein Tabellenobjekt mit seinen Werten. + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public Table(String filename, String options, char separator, char quote) { + loadCSV(filename, options, separator, quote); + } + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei und erstellt ein Tabellenobjekt mit seinen Werten (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + */ + public Table(String filename, String options) { + loadCSV(filename, options); + } + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei ohne Kopfzeile und erstellt ein Tabellenobjekt mit seinen Werten (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public Table(String filename) { + loadCSV(filename); + } + + // Anfang Methoden + /** + * Liest den Inhalt einer CSV-Datei ohne Kopfzeile (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public void loadCSV(String filename) { + loadCSV(filename, ""); + } + + /** + * Liest den Inhalt einer CSV-Datei (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + */ + public void loadCSV(String filename, String options) { + loadCSV(filename, options, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** + * Liest den Inhalt einer CSV-Datei. + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public void loadCSV(String filename, String options, char separator, char quote) { + doc = new Document(); + doc.setRootElement(new Element("CSV-Data")); + header = new Element("Header"); + doc.getRootElement().addContent(header); + try { + File f = new File(filename); + Scanner scanner = new Scanner(new File(filename)); + if(options.toLowerCase().contains("header") && scanner.hasNext()) { + List entries = parseLine(scanner.nextLine(), separator, quote); + int i= 0; + for(String s : entries) { + Element entry = new Element("Column"); + header.addContent(entry); + entry.setText(s); + entry.setAttribute("type", "unknown"); + i++; + } + } + + List cols = header.getChildren(); + + while (scanner.hasNext()) { + Element line = new Element("Row"); + doc.getRootElement().addContent(line); + List entries = parseLine(scanner.nextLine(), separator, quote); + int i= 0; + + for(String s : entries) { + + if(i==cols.size()) { + Element entry = new Element("Column"); + entry.setAttribute("type", "unknown"); + header.addContent(entry); + cols = header.getChildren(); + } + + Element entry = new Element("Entry"); + entry.setText(s); + line.addContent(entry); + i++; + } + } + scanner.close(); + + } catch (Exception e) { + System.out.println("Fehler beim Lesen der CSV-Datei"); + } + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei ohne Kopfzeile (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public void saveCSV(String filename) { + saveCSV(filename, ""); + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthalten, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile haben soll, + * dann lassen Sie einfach die Option "header" weg. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile haben soll. + * @param filename Dateiname der CSV-Datei. + */ + public void saveCSV(String filename, String options) { + saveCSV(filename, options, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei. + * Wenn die Datei eine Kopfzeile enthalten, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile haben soll, + * dann lassen Sie einfach die Option "header" weg. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile haben soll. + * @param filename Dateiname der CSV-Datei. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public void saveCSV(String filename, String options, char separator, char quote){ + try{ + File f = new File(filename); + PrintStream outputFile = new PrintStream (f); + System.out.println("Speicher in : "+f.getAbsolutePath()); + List columns = header.getChildren(); + String sq = ""+quote; + String ss = ""+separator; + if(quote =='"') sq = "\""; + if(separator =='"') ss = "\""; + + if(options.toLowerCase().contains("header")) { + String h = ""; + for(Element c : columns) { + h += ss + sq + c.getText()+sq; + } + outputFile.println(h.substring(1)); + } + for(int i = 0; i parseLine(String cvsLine) { + return parseLine(cvsLine, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** HIlfsfunktion für die Analyse einer Dateizeile + * @param cvsLine Zeile aus der Datei + * @param sparator Trennzeichen für die Spalten + * @return Liste von String für die einzelnen Spalten + */ + private List parseLine(String cvsLine, char separator) { + return parseLine(cvsLine, separator, DEFAULT_QUOTE); + } + + /** HIlfsfunktion für die Analyse einer Dateizeile + * @param cvsLine Zeile aus der Datei + * @param sparator Trennzeichen für die Spalten + * @param customQuote Kennung für Strings + * @return Liste von String für die einzelnen Spalten + */ + private List parseLine(String cvsLine, char separator, char customQuote) { + + List result = new ArrayList<>(); + + //if empty, return! + if (cvsLine == null && cvsLine.isEmpty()) { + return result; + } + + //ggf. Default-Value laden + if (customQuote == ' ') { + customQuote = DEFAULT_QUOTE; + } + + if (separator == ' ') { + separator = DEFAULT_SEPARATOR; + } + + StringBuffer curVal = new StringBuffer(); + boolean inQuotes = false; + boolean startCollectChar = false; + boolean doubleQuotesInColumn = false; + + char[] chars = cvsLine.toCharArray(); + + for (char ch : chars) { + + if (inQuotes) { // aktueller Text ist in Quotes eingeschlossen + startCollectChar = true; + + if (ch == customQuote) { // Quotes werden beendet, aber Achtung bei "" => Metazeichen + inQuotes = false; + if (ch == '\"') { + doubleQuotesInColumn = true; + } + + } else { + + if (ch == '\"' && !doubleQuotesInColumn) { + doubleQuotesInColumn = true; + } else { + curVal.append(ch); + doubleQuotesInColumn = false; + } + + } + } else { + if (ch == customQuote) { + + inQuotes = true; + + //Fixed : allow "" in empty quote enclosed + if (ch == '\"'){ + if(doubleQuotesInColumn) { + curVal.append('"'); + doubleQuotesInColumn = false; + } else doubleQuotesInColumn = true; + + + } + } + else { + doubleQuotesInColumn = false; + if (ch == separator) { + + result.add(curVal.toString()); + + curVal = new StringBuffer(); + startCollectChar = false; + + } else if (ch == '\r') { + //ignore LF characters + continue; + } else if (ch == '\n') { + //the end, break! + break; + } else { + curVal.append(ch); + } + } + } + + } + result.add(curVal.toString()); + return result; + } + + /** + * Sucht die Nummer einer durch Namen gegebenen Spalte. + * @param name Name der Spalte + * @return Nummer der Spalte + */ + + private int findColumnNumber(String name) { + List columns = header.getChildren(); + int i = 0; + for(Element c : columns) { + if (c.getText().toLowerCase().equals(name.toLowerCase())) { + return i; + + } + i++; + } + return -1; + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an. + */ + public void addColumn() { + Element entry = new Element("Column"); + entry.setAttribute("type", Table.UNKNOWN); + header.addContent(entry); + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an und benennt sie. + * @param title Bezeichnung der Spalte + */ + public void addColumn(String title) { + addColumn(); + Element nc = ((List)(header.getChildren())).get(header.getChildren().size()-1); + nc.setText(title); + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an und benennt und typisiert sie. + * @param title Bezeichnung der Spalte + * @param type Typ der Spalte (UNKNOWN, DOUBLE, INTEGER, FLOAT) + */ + public void addColumn(String title, String type) { + addColumn(title); + Element nc = ((List)(header.getChildren())).get(header.getChildren().size()-1); + nc.setAttribute("type", type); + } + + /** + * Löscht eine Spalte. + * @param i Nummer der Spalte. + */ + public void removeColumn(int i) { + List lines = doc.getRootElement().getChildren(); + for(Element l : lines) { + if(l.getChildren().size()>i) l.removeContent(i); + } + } + + /** + * Löscht eine Spalte + * @param name Name der Spalte + */ + public void removeColumn(String name) { + try{ + removeColumn(findColumnNumber(name)); + } catch(Exception e) { System.out.println("Unbekannter Spaltenname");} + } + + /** + * Liefert die Anzahl der Spalten in der Tabelle + * @return Anzahl der Spalten + */ + public int getColumnCount() { + return header.getChildren().size(); + } + + /** + * Liefert die Anzahl der Zeilen in der Tabelle + * @return Anzahl der Zeilen + */ + public int getRowCount() { + return doc.getRootElement().getChildren().size()-1; + } + + /** + * Löscht alle Zeilen der Tabelle. + * Die Spaltenüberschriften und Typen bleiben erhalten. + */ + public void clearRows() { + doc.getRootElement().removeChildren("Row"); + } + + /** + * Fügt eine neue Zeile an das Ende der Tabelle an. + * @return ein TableRow-Objekt für diese neue Zeile + */ + public TableRow addRow() { + Element row = new Element("Row"); + doc.getRootElement().addContent(row); + return new TableRow(doc, row); + } + + /** + * Löscht eine Zeile + * @param i Nummer der Zeile + */ + public void removeRow(int i) { + if(i rows = doc.getRootElement().getChildren(); + return new TableRow(doc, rows.get(i+1)); + } + return null; + } + + /** + * Liefert die ganze Tabelle als Array von TableRow-Objekten + * @return Array von TableRow-Objekten + */ + public TableRow[] rows() { + TableRow[] rows = new TableRow[getRowCount()]; + for(int i = 0; i < getRowCount(); i++) { + rows[i] = getRow(i); + } + return rows; + } + + /** + * Liefert den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param column Spaltennummer + * @return Wert der Zelle + */ + public int getInt(int row, int column) { + return getRow(row).getInt(column); + } + + /** + * Liefert den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param name Name der Spalte + * @return Wert der Zelle + */ + public int getInt(int row, String name) { + return getRow(row).getInt(name); + } + + /** + * Setzt den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param column Spaltennummer + * @param value neuer Wert der Zelle + */ + public void setInt(int row, int column,int value) { + getRow(row).setInt(column, value); + } + + /** + * Setzt den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(int row, String name, int value) { + getRow(row).setInt(name, value); + } + + /** + * Liefert alle Werte einer Zeile als Integer-Array. + * @param row Nummer der Zeile + * @return int-Array, dass alle Werte der Zeile enthält + */ + public int[] getIntRow(int row) { + try{ + TableRow trow = getRow(row); + int anz = getColumnCount(); + int[] r = new int[anz]; + for(int i=0; i) (header.getChildren())).get(i).getText(); + } else { + return ""; + } + } + + /** + * Liefert die Nummer einer Spalte + * @param name Name der Spalte + * @return Nummer der Spalte + */ + public int getColumn(String name) { + List columns = header.getChildren(); + int i = 0; + while (i < columns.size()) { + if (columns.get(i).getText().toLowerCase().equals(name.toLowerCase())) { + return i; + } + i++; + } // end of while + return -1; + } + + + /** + * Erzeugt eine neue Zeile mit i Spalten + * Wenn bisher nicht genügend Spalten vorhanden sind, werden automatisch neue Spalten hinzugefügt (auch zum Header) + * @param i Anzahl der Spalten + */ + private Element buildRow(int i) { + List columns = header.getChildren(); + Element entry=null; + for(int j=0; j<=i; j++) { + + if(j==columns.size()) { + Element h = new Element("Column"); + h.setAttribute("type", "unknown"); + header.addContent(h); + columns = header.getChildren(); + } + if(j==current.getChildren().size()) { + entry = new Element("Entry"); + current.addContent(entry); + + } + + } + return entry; + + } + + /** + * Erzeugt eine neue Zeile. + * Es werden genügend Spalten erzeugt, dass ein Wert in Spalte "name" eingetragen werden kann + * @param name Name der Spalte + */ + private Element buildRow(String name) { + List columns = header.getChildren(); + int i = 0; + for(Element c: columns) { + + if(c.getText().toLowerCase().equals(name.toLowerCase())) { + return buildRow(i); + } + i++; + } + return null; + + } + + /** + * Liefert den Wert einer Zelle als String + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public String getString(int i) { + if(i >= current.getContent().size()) return ""; + Element e = (Element) current.getContent(i) ; + if(e!=null) { + return e.getText(); + } else { + return ""; + } + } + + /** + * Liefert den Wert einer Zelle als String + * @param name Name der Spalte + * @return Wert der Zelle + */ + public String getString(String name) { + return getString(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als String + * @param i Nummer der Spalte + * @param text neuer Wert der Zelle + */ + public void setString(int i, String text) { + + Element e = buildRow(i); + if(e!=null) e.setText(text); + } + + /** + * Setzt den Wert einer Zelle als String + * @param name Name der Spalte + * @param text neuer Wert der Zelle + */ + public void setString(String name, String text) { + Element e = buildRow(name); + if(e!=null) e.setText(text); + } + + + /** + * Liefert den Wert einer Zelle als Int-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public int getInt(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Integer.parseInt(e.getText()); + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Int-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public int getInt(String name) { + return getInt(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Int-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(int i,int value) { + + Element e = buildRow(i); + if(e!=null) e.setText(""+value); + } + + /** + * Setzt den Wert einer Zelle als Int-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(String name, int value) { + Element e = buildRow(name); + if(e!=null) e.setText(""+value); + } + + /** + * Liefert den Wert einer Zelle als Float-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public float getFloat(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Float.parseFloat(e.getText().replace(",",".")); + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Float-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public float getFloat(String name) { + return getFloat(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Float-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setFloat(int i,float value) { + + Element e = buildRow(i); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Setzt den Wert einer Zelle als Float-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setFloat(String name, float value) { + Element e = buildRow(name); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Liefert den Wert einer Zelle als Double-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public double getDouble(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Double.parseDouble(e.getText().replace(",",".")); + + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Double-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public double getDouble(String name) { + return getDouble(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Double-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setDouble(int i,double value) { + + Element e = buildRow(i); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Setzt den Wert einer Zelle als Double-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setDouble(String name, double value) { + Element e = buildRow(name); + if(e!=null) e.setText(format.format(value)); + } + +} diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg11_balkendiagramm_zufall/XML.java b/03_vorlagen_tauschordner/02_greenfoot/alg11_balkendiagramm_zufall/XML.java new file mode 100644 index 0000000..c06c490 --- /dev/null +++ b/03_vorlagen_tauschordner/02_greenfoot/alg11_balkendiagramm_zufall/XML.java @@ -0,0 +1,637 @@ +/** + * Klasse zum Vereinfachten Zugriff auf XML-Dokumente + * Diese Klasse ist für den Einsatz in der Schule gedacht und soll den Schülern + * einen einfachen Zugriff auf XML-Dokumente ermöglichen. Die zur Verfügung + * stehenden Befehle sind wie in Processing realisiert. + * Dabei ist jeder Teilbaum des Dokuments wieder als XML-Objekt zugreifbar, das + * intern auf die gleiche XML-Dokumentstruktur zugreift. + * Dies ermöglicht bei unsachgemäßem Gebrauch die XML-Struktur zu zerstören. Im + * normalen Gebrauch sollte dies aber nicht relevant sein. + * + * Benötigt: jdom-1.1.3.jar + + * @author Thomas Schaller + * @version 1.0 vom 31.01.2019 + */ +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.ArrayList; +import java.io.*; + +import org.jdom.Document; +import org.jdom.Element; +import org.jdom.Attribute; +import org.jdom.JDOMException; +import org.jdom.input.SAXBuilder; +import org.jdom.output.XMLOutputter; +import org.jdom.output.Format; + +public class XML { + // Anfang Attribute + // XML-Dokumentstruktur + private Document doc; + // Zeiger auf das aktuelle Element + private Element current; + // Ende Attribute + + /** + * Erzeugt ein leeres XMLDokument + */ + public XML() { + this.doc = new Document(); + this.current = null; + } + + /** + * Erzeugt ein XML-Dokument aus einer Datei + * @param filename Dateiname der XML-Datei + */ + public XML(String filename) { + loadXML(filename); + } + + /** + * interner Konstruktor, um ein XML Objekt zu erzeugen, das auf einen bestimmten Knoten verweist + * @param doc die XML-Dokumentstruktur + * @param current Zeiger auf das aktuelle Element + */ + private XML(Document doc, Element current) { + this.doc = doc; + this.current = current; + } + + // Anfang Methoden + /** Öffnet das durch den Dateinamen gegebene Dokument + * @param filename Dateiname des XML-Files + */ + public void loadXML(String filename) { + doc = null; + File f = new File(filename); + + try { + // Das Dokument erstellen + SAXBuilder builder = new SAXBuilder(); + doc = builder.build(f); + + } catch (JDOMException e) { + e.printStackTrace(); + + } catch (IOException e) { + e.printStackTrace(); + } + // Zeiger im Baum auf Root-Element + current = doc.getRootElement(); + } + + /** Speichert den XML-Baum im angegebenen Dateinamen + * @param filename Dateiname des XML-Files + */ + public void saveXML(String filename) { + try { + // new XMLOutputter().output(doc, System.out); + XMLOutputter xmlOutput = new XMLOutputter(); + + // display nice nice + xmlOutput.setFormat(Format.getPrettyFormat()); + File f = new File(filename); + FileOutputStream outputFile = new FileOutputStream(f); + System.out.println("Speicher in : "+f.getAbsolutePath() ); + xmlOutput.output(doc, outputFile); + outputFile.close(); + System.out.println("File Saved!"); + } catch (IOException io) { + System.out.println(io.getMessage()); + } + + } + + //----------------------------------------------- Zeigerbewegungen -------------------------------------------------- + /** + * liefert ein XML-Objekt, das auf den Vaterknoten des aktuellen Elements zeigt. + * @return Vater des aktuellen Objekts. + */ + public XML getParent() { + if(current != null) { + Element parent = current.getParentElement(); + if (parent == null) { + return null; + } else { + return new XML(doc, parent); + } + } + return null; + } + + /** + * Überprüft, ob das Element irgendwelche Kinder hat oder nicht, und gibt das Ergebnis als boolean zurück. + * @return true, wenn Kinder vorhanden sind, sonst false + */ + public boolean hasChildren() { + if (current == null) { + return doc.hasRootElement(); + } else { + return current.getChildren().size()>0; + } + } + + /** + * Ermittelt die Namen aller Kinder des Elements und gibt die Namen als ein Array von Strings zurück. + * Dies ist dasselbe wie das Durchlaufen und Aufrufen von getName() auf jedem untergeordneten Element einzeln. + * @return Liste aller Namen der Kinder + */ + public String[] listChildren() { + if (current == null) { + if(doc.hasRootElement()) { + String[] names = new String[0]; + names[0] = doc.getRootElement().getName(); + return names; + } else { + return null; + } + } else { + List ch_element = current.getChildren(); + String[] names = new String[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + names[i] = ch_element.get(i).getName(); + } + return names; + } + } + + /** + * Liefert alle Kinder des Elements als Array von XML-Objekten. + * @return Array der Kinder als XML-Objekte + */ + public XML[] getChildren() { + if (current == null) { + if(doc.hasRootElement()) { + XML[] ch_xml = new XML[1]; + ch_xml[0] = new XML(doc, doc.getRootElement()); + return ch_xml; + } else { + return null; + } + } else { + List ch_element = current.getChildren(); + XML[] ch_xml = new XML[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + ch_xml[i] = new XML(doc, ch_element.get(i)); + } + return ch_xml; + } + } + + /** + * Liefert bestimmte Kinder des Elements als Array von XML-Objekten. + * Die Methode gibt dabei alle Kinder zurück, die dem angegebenen Namen entsprechen. + * @param name Name der gesuchten Kind-Objekte + * @return Array der Kinder als XML-Objekte + */ + public XML[] getChildren(String name) { + if (current == null) { + if(doc.hasRootElement()) { + XML[] ch_xml = new XML[1]; + ch_xml[0] = new XML(doc, doc.getRootElement()); + if(doc.getRootElement().getName().equals(name)){ + return ch_xml; + } else { + return null; + } + } else { + return null; + } + } else { + List ch_element = current.getChildren(name); + XML[] ch_xml = new XML[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + ch_xml[i] = new XML(doc, ch_element.get(i)); + } + return ch_xml; + } + } + + /** + * Liefert das erste Kind des Elements mit einem bestimmten Namen. + * Die Methode gibt das erste Kind zurück, das dem angegebenen Namen entsprechen. + * @param name Name des gesuchten Kind-Objektes + * @return Kind als XML-Objekt + */ + + public XML getChild(String name) { + if (current == null) { + Element e = doc.getRootElement(); + if (e.getName().equals(name)) { + return new XML(doc, e); + } else { + return null; + } + } else { + String[] names = name.split("/"); + Element e = current; + int i = 0; + while(i < names.length) { + e = e.getChild(names[i]); + if (e==null) return null; + i++; + } + return new XML(doc, e); + } + } + + /** + * Liefert das i. Kind des Elements. + * Die Methode gibt das i. Kind des aktuellen Elements zurück. + * @param i Nummer des Kindes + * @return Kind als XML-Objekt + */ + public XML getChild(int i) { + if (current == null) { + return new XML(doc, doc.getRootElement()); + } else { + List ch_element = current.getChildren(); + if (i>=ch_element.size()) return null; + return new XML(doc, ch_element.get(i)); + } + } + + //--------------------------------------------------- Methoden für das aktuelle Element ------------------------------------------------- + /** + * Frage den Namen des aktuellen Elements ab + * @return Namen des Elements + */ + public String getName() { + if (current==null) return ""; + return current.getName(); + } + + /** + * Setze den Namen des aktuellen Elements. + * @param name Neuer Name des Elements + */ + public void setName(String name) { + if (current==null) return; + current.setName(name); + } + + /** + * liefert die Anzahl der Attribute eines Elements. + * @return Anzahl des Attribute + */ + public int getAttributeCount() { + if (current == null) return 0; + return current.getAttributes().size(); + } + + /** + * liefert zurück, ob das aktuelle Element Attribute hat . + * @return true, wenn es Attribute gibt + */ + public boolean hasAttribute() { + if (current == null) return false; + return current.getAttributes().size()>0; + } + + /** + * Ruft alle Attribute des angegebenen Elements ab und gibt sie als Array von Strings zurück. + * @return Liste der Attributnamen + */ + public String[] listAttributes() { + if (current == null) return null; + List attr = current.getAttributes(); + String[] names = new String[attr.size()]; + for(int i=0; i < attr.size() ; i++) { + names[i] = attr.get(i).getName(); + } + return names; + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs + */ + public String getString(String attribute) { + if (current==null) return ""; + return current.getAttributeValue(attribute); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs + */ + public String getString(String attribute, String defaultValue) { + if (current==null) return defaultValue; + return current.getAttributeValue(attribute,defaultValue); + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param text neuer Wert des Attributs + */ + public void setString(String attribute, String text) { + if (current==null) return; + current.setAttribute(attribute, text); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Integer-Zahl + */ + public int getInt(String attribute) { + if (current==null) return 0; + try{ + int i = Integer.parseInt(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als Integer-Zahl + */ + public int getInt(String attribute, int defaultValue) { + if (current==null) return defaultValue; + try{ + int i = Integer.parseInt(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setInt(String attribute, int value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Float-Zahl + */ + public float getFloat(String attribute) { + if (current==null) return 0; + try{ + float i = Float.parseFloat(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als Float-Zahl + */ + public float getFloat(String attribute, float defaultValue) { + if (current==null) return defaultValue; + try{ + float i = Float.parseFloat(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setFloat(String attribute, float value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Double-Zahl + */ + public double getDouble(String attribute) { + if (current==null) return 0; + try{ + double i = Double.parseDouble(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + +/** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als double-Zahl + */ + public double getDouble(String attribute, double defaultValue) { + if (current==null) return defaultValue; + try{ + double i = Double.parseDouble(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setDouble(String attribute, double value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt den Inhalt/Text des aktuellen Elements ab + * @return Inhalt des Elements + */ + public String getContent() { + if ( current==null) return ""; + + return current.getText(); + } + + /** + * Fragt den Inhalt/Text des aktuellen Elements ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardtext + * @return Inhalt des Elements + */ + public String getContent(String defaultValue) { + if ( current==null) return defaultValue; + String t = current.getText(); + if(t.equals("")) t = defaultValue; + return t; + } + + /** + * Setzt den Inhalt/Text des aktuellen Elements + * @param text Neuer Inhalt des Elements + */ + public void setContent(String text) { + if ( current==null) return; + current.setText(text); + } + + + /** + * Fragt den Inhalt des aktuellen Elements als Integerzahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ public int getIntContent(int defaultValue) { + if ( current==null) return defaultValue; + try{ + int i = Integer.parseInt(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Integerzahl ab + * @return Inhalt des Elements + */ + public int getIntContent() { + if ( current==null) return 0; + try{ + int i = Integer.parseInt(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setIntContent(int value) { + if ( current==null) return; + current.setText(""+value); + } + + + /** + * Fragt den Inhalt des aktuellen Elements als Floatzahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ + public float getFloatContent(float defaultValue) { + if ( current==null) return defaultValue; + try{ + float i = Float.parseFloat(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Floatzahl ab + * @return Inhalt des Elements + */ + public float getFloatContent() { + if ( current==null) return 0; + try{ + float i = Float.parseFloat(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setFloatContent(float value) { + if ( current==null) return; + current.setText(""+value); + } + +/** + * Fragt den Inhalt des aktuellen Elements als Doublezahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ + public double getDoubleContent(double defaultValue) { + if ( current==null) return defaultValue; + try{ + double i = Double.parseDouble(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Doublezahl ab + * @return Inhalt des Elements + */ + public double getDoubleContent() { + if ( current==null) return 0; + try{ + double i = Double.parseDouble(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setDoubleContent(double value) { + if ( current==null) return; + current.setText(""+value); + } + + + // ----------------------------------------------- XML-Struktur aufbauen ------------------------------------------------ + /** Erzeuge neues Element nach der aktuellen Position und setze dieses als aktuelles Element + * @param name Name des neuen Elements + * @return neues Element als XML-Objekt + */ + public XML addChild(String name) { + Element e = new Element(name); + if(current == null){ // man ist auf Root-Ebene + doc.setRootElement(e); + + } + else { + current.addContent(e); + } // end of if-else + return new XML(doc, e); + } + + /** + * liefert das aktuelle Element als jdom-Element-Objekt + * @return aktuelles Element + */ + private Element getCurrent() { + return current; + } + + /** + * löscht ein Kind des aktuellen Knotens. + * Ist kid kein Kind des aktuellen Elements passiert gar nichts. + * @param kid XML-Objekt des Kindes + */ + public void removeChild(XML kid) { + if (current == null) return; + Element e = kid.getCurrent(); + int index = current.indexOf(e); + if(index >= 0) { current.removeContent(e);} + } + +} diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg11_balkendiagramm_zufall/images/balken.png b/03_vorlagen_tauschordner/02_greenfoot/alg11_balkendiagramm_zufall/images/balken.png new file mode 100644 index 0000000..9ff1ffc Binary files /dev/null and b/03_vorlagen_tauschordner/02_greenfoot/alg11_balkendiagramm_zufall/images/balken.png differ diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg11_balkendiagramm_zufall/images/bilderrahmen.png b/03_vorlagen_tauschordner/02_greenfoot/alg11_balkendiagramm_zufall/images/bilderrahmen.png new file mode 100644 index 0000000..7f34e32 Binary files /dev/null and b/03_vorlagen_tauschordner/02_greenfoot/alg11_balkendiagramm_zufall/images/bilderrahmen.png differ diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg11_balkendiagramm_zufall/jdom-1.1.3.jar b/03_vorlagen_tauschordner/02_greenfoot/alg11_balkendiagramm_zufall/jdom-1.1.3.jar new file mode 100644 index 0000000..a287727 Binary files /dev/null and b/03_vorlagen_tauschordner/02_greenfoot/alg11_balkendiagramm_zufall/jdom-1.1.3.jar differ diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg11_balkendiagramm_zufall/project.greenfoot b/03_vorlagen_tauschordner/02_greenfoot/alg11_balkendiagramm_zufall/project.greenfoot new file mode 100644 index 0000000..474718a --- /dev/null +++ b/03_vorlagen_tauschordner/02_greenfoot/alg11_balkendiagramm_zufall/project.greenfoot @@ -0,0 +1,90 @@ +#Greenfoot project file +class.Balkendiagramm.image=balken.png +class.PictureViewer.image=bilderrahmen.png +dependency1.from=MyWorld +dependency1.to=Balkendiagramm +dependency1.type=UsesDependency +dependency2.from=PictureViewer +dependency2.to=Picture +dependency2.type=UsesDependency +dependency3.from=Table +dependency3.to=TableRow +dependency3.type=UsesDependency +dependency4.from=Picture +dependency4.to=PictureViewer +dependency4.type=UsesDependency +editor.fx.0.height=739 +editor.fx.0.width=816 +editor.fx.0.x=552 +editor.fx.0.y=100 +height=885 +package.numDependencies=4 +package.numTargets=7 +project.charset=UTF-8 +publish.hasSource=false +publish.locked=true +publish.longDesc= +publish.shortDesc= +publish.tags= +publish.title= +publish.url= +readme.height=58 +readme.name=@README +readme.width=47 +readme.x=10 +readme.y=10 +simulation.speed=97 +target1.height=50 +target1.name=PictureViewer +target1.showInterface=false +target1.type=ClassTarget +target1.width=100 +target1.x=0 +target1.y=0 +target2.height=50 +target2.name=Table +target2.showInterface=false +target2.type=ClassTarget +target2.width=80 +target2.x=0 +target2.y=0 +target3.height=50 +target3.name=Balkendiagramm +target3.showInterface=false +target3.type=ClassTarget +target3.width=120 +target3.x=0 +target3.y=0 +target4.height=50 +target4.name=Picture +target4.showInterface=false +target4.type=ClassTarget +target4.width=80 +target4.x=0 +target4.y=0 +target5.height=50 +target5.name=XML +target5.showInterface=false +target5.type=ClassTarget +target5.width=100 +target5.x=0 +target5.y=0 +target6.height=50 +target6.name=TableRow +target6.showInterface=false +target6.type=ClassTarget +target6.width=80 +target6.x=0 +target6.y=0 +target7.height=50 +target7.name=MyWorld +target7.showInterface=false +target7.type=ClassTarget +target7.width=80 +target7.x=0 +target7.y=0 +version=3.0.0 +width=1350 +world.lastInstantiated=MyWorld +xPosition=449 +yPosition=138 diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg12_balkendiagramm_csv/Balkendiagramm.java b/03_vorlagen_tauschordner/02_greenfoot/alg12_balkendiagramm_csv/Balkendiagramm.java new file mode 100644 index 0000000..5734c3a --- /dev/null +++ b/03_vorlagen_tauschordner/02_greenfoot/alg12_balkendiagramm_csv/Balkendiagramm.java @@ -0,0 +1,75 @@ +import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot und MouseInfo) +import java.awt.Font; + +/** + * Balkendiagramm für int-Array, Zahlen werden aus CSV-Datei gelesen. + * + * @author Schaller + * @version 29.11.18 + */ +public class Balkendiagramm extends PictureViewer + +{ + // Liste mit allen Werten + // Deklariere ein Array zahlen für die Punkte und ein Array namen für die Spielernamen + //------------ + // TODO + //------------ + + // Schriften + Font kleineSchrift; + Font grosseSchrift; + + public Balkendiagramm() { + size(1000, 700); + background(0); + kleineSchrift = new Font( Font.SANS_SERIF, Font.PLAIN, 12 ); + grosseSchrift = new Font( Font.SANS_SERIF, Font.PLAIN, 20 ); + + // CSV-Datei laden und anzeigen + ladeTabelle("punkte.csv"); + + zeichneBalken(); + } + + public void ladeTabelle(String name) { + // Tabelle aus CSV-Datei laden + Table csv = new Table(name,"header",',','"'); + + // Initialisiere Arrays, in die alle Zeilen der Tabelle passen + // Die Anzahl der gespeicherten Zeilen bekommt man mit csv.getRowCount() + //------------ + // TODO + //------------ + + // Fülle die Arrays mit Werten aus der Tabelle + // Mit csv.getInt(zeilennummer, "Name der Spalte") oder csv.getInt(zeilennummer, spaltennummer) + // bekommt man die Werte der Tabelleneinträge als Integer-Wert + // Informiere dich unter https://processing.org/reference/Table.html, welche Methode geeignet ist, + // um die Namen der Spieler als String zu bekommen. getInt hilft hier nicht weiter. + //------------ + // TODO + //------------ + } + + public void zeichneBalken() { + clear(); + + // Überschrift + fill(255,255,255); + textFont(grosseSchrift); + text("Punkte", 2, 20); + textFont(kleineSchrift); + + // Alle Einträge darstellen + // lasse alle Ergebnisse der Spieler in der Form + // SpielerXY 234 XXXXXXXXXXXXXXXX + // SpielerZY 12 XX + // usw. + // darstellen. Wandle dazu dein Programm, um die Werte eines Arrays darzustelle ab. + //------------ + // TODO + //------------ + } + +} diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg12_balkendiagramm_csv/MyWorld.java b/03_vorlagen_tauschordner/02_greenfoot/alg12_balkendiagramm_csv/MyWorld.java new file mode 100644 index 0000000..11434f1 --- /dev/null +++ b/03_vorlagen_tauschordner/02_greenfoot/alg12_balkendiagramm_csv/MyWorld.java @@ -0,0 +1,36 @@ +import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot und MouseInfo) + +/** + * Ergänzen Sie hier eine Beschreibung für die Klasse MyWorld. + * + * @author (Ihr Name) + * @version (eine Versionsnummer oder ein Datum) + */ +public class MyWorld extends World +{ + + /** + * Konstruktor für Objekte der Klasse MyWorld + * + */ + public MyWorld() + { + // Erstellt eine neue Welt mit 1200x900 Pixeln + super(1000, 700, 1); + + prepare(); + } + + + /** + * Bereite die Welt für den Programmstart vor. + * Das heißt: Erzeuge die Anfangs-Objekte und füge sie der Welt hinzu. + */ + private void prepare() + { + Balkendiagramm balkendiagramm = new Balkendiagramm(); + addObject(balkendiagramm,500,350); + + } +} + diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg12_balkendiagramm_csv/Picture.java b/03_vorlagen_tauschordner/02_greenfoot/alg12_balkendiagramm_csv/Picture.java new file mode 100644 index 0000000..8df3d55 --- /dev/null +++ b/03_vorlagen_tauschordner/02_greenfoot/alg12_balkendiagramm_csv/Picture.java @@ -0,0 +1,699 @@ +import java.awt.image.*; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.BasicStroke; +import java.util.Vector; +import javax.imageio.*; +import java.io.*; +import java.awt.*; +import javax.swing.*; +import java.util.Random; +import java.awt.geom.AffineTransform; +/** + * + * Bildklasse für die Simulation von Processing-Befehlen + * + * Diese Klasse stellt ein BufferedImage bereit, in das mit Processing-Befehlen gezeichnet + * werden kann. + * Zusätzlich kann ein Bildanzeiger über jede Änderung des Bildes informiert werden, + * um "Zurück"-Befehle zu ermöglichen. Der Bildanzeiger ist entweder eine normale Java + * ScrollPane oder ein Actor aus Greenfoot. + * Die Dokumentation der einzelnen Zeichenmethoden ist der Processing-Reference + * (https://processing.org/reference/ steht unter CC-Lizenz: https://creativecommons.org/) + * entnommen und mit Deepl.com ins Deutsche übersetzt. + * + * @version 1.0 from 23.01.2019 + * @author Thomas Schaller (ZPG Informatik Klasse 9) + */ + +public class Picture{ + + // Einstellungmöglichkeiten für das Zeichnen von Rechtecken und Ellipsen + // RADIUS = Mittelpunkt+Radius wird gegeben, CENTER = Mittelpunkt und Breite/Höhe wird gegeben, + // CORNER = Linke obere Ecke + Breite/Höhe, CORNERS = Linke obere und rechte untere Ecke + public static final int RADIUS = 1; + public static final int CENTER = 2; + public static final int CORNER = 3; + public static final int CORNERS = 4; + + // gespeichertes Bild, + private BufferedImage image; + + // aktuelle Farbeinstellungen + private Color background; + private Color pencolor; + private Color fillcolor; + + // aktuelle Stiftdicke + private double stroke; + + // akkteller Koordinatenmodus von Rechtecken und Ellipsen + private int ellipseMode = CENTER; + private int rectMode = CORNER; + + // aktueller Font + private Font textfont = null; + + // muss ein Bildanzeiger benachrichtigt werden + private PictureViewer observer = null; + private boolean autorefresh = true; + + /** + * Erzeugt ein Bild mit Standardgröße 500x400 + */ + public Picture() { + this(500,400); + } + + /** + * Erzeugt ein Bild der angegeben Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public Picture(int width, int height) { + this(width,height, "D0D0D0"); + } + + /** + * Erzeugt ein Bild aus einer Datei + * @param filename Dateiname des Bildes + */ + public Picture(String filename) { + load(filename); + } + + /** + * Erzeugt ein Bild der angegebenen Größe mit festgelegtem Hintergrund + * @param width Breite des Bildes + * @param height Höhe des Bildes + * @param background Farbe des Hintergrunds + */ + public Picture(int width, int height, String background) { + this.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + this.background = decode(background); + this.pencolor = new Color(0,0,0); + this.stroke = 1; + this.fillcolor = null; + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(this.background); + g.fillRect(0,0,width-1, height-1); + } + + /** + * Legt fest, wer das Bild anzeigt. + * Diese ermöglicht die Benachrichtung des Observers, wenn sich das Bild ändert. + * @param observer Anzeiger des Bildes + */ + + public void setObserver(PictureViewer observer) { + this.observer= observer; + } + + /** + * Direktes Setzen des Bildes (für interne Zwecke) + * @param b Bild, das gespeichert werden soll. + */ + public void setImage(BufferedImage b) { + image = b; + } + + /** + * Direktes Abfragen des Bildes (für interne Zwecke) + * @return Bild, das gerade gespeichert ist. + */ + public BufferedImage getImage() { + return image; + } + + /** + * Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + * Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + * der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu. + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public void size(int width, int height){ + pushImage(); + this.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(background); + g.fillRect(0,0,width-1, height-1); + } + + /** + * Liefert die Breite des Bildes zurück. + * @return Breite des Bildes + */ + public int getWidth() { + return image.getWidth(); + } + + /** + * Liefert die Höhe des Bildes zurück. + * @return Höhe des Bildes + */ + public int getHeight() { + return image.getHeight(); + } + + + /** + * Erzeugt eine Kopie des Bildes und übergibt sie an den Observer (falls existent), damit dieser die Versionen speichern kann + */ + private void pushImage() { + if(observer != null) { + observer.pushImage(); + } + } + + + /** + * Legt fest, ob nach jedem Zeichenbefehl automatisch das Bild auch in + * der Oberfläche aktualisiert wird. Die Einstellung "false" beschleunigt + * das Zeichnen aufwändiger Bilder und verhindert "Flackern". + * Das Neuzeichnen kann durch die Methode "refresh" gezielt ausgelöst werden. + * @param autorefresh true = nach jedem Zeichenbefehl die Anzeige aktualisieren, false= nur durch die Methode refresh neu zeichnen + */ + public void setAutoRefresh(boolean autoRefresh) { + this.autorefresh = autoRefresh; + } + + + /** + * Auch die anzeigenden Klasse wird zum Neuzeichnen aufgefordert. + */ + private void repaint() { + if(observer != null && autorefresh) { + observer.repaint(); + } + } + + /** + * Auch die anzeigenden Klasse wird zum Neuzeichnen aufgefordert. + */ + public void refresh() { + if(observer != null) { + observer.repaint(); + } + } + + // ----------------------------------------- Zeichenfunktionen ----------------------------------------------- + /** + * Löscht den Inhalt des Bildes. + * Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt. + */ + + public void clear(){ + pushImage(); + image = new BufferedImage(image.getWidth(), image.getHeight(), image.getType()); + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(background); + g.fillRect(0,0,image.getWidth()-1, image.getHeight()-1); + repaint(); + } + + /** + * Konvertiert die in einem bestimmten Modus gegebenen Koordinaten in die Java-übliche Links_Oben_Breite_Höhe Version + * Die Änderungen werden direkt im Array vorgenommen + * @param coord Array mit vier Koordinateneinträgen im gegebenen Modus + * @param mode Modus der Koordinaten (CORNER, CORNERS, RADIUS oder CENTER) + */ + private void convert(int[] coord, int mode) { + switch(mode) { + case CORNER: break; + case CORNERS: coord[2] -= coord[0]; coord[3] -= coord[1]; break; + case RADIUS: coord[2] *= 2; coord[3] *=2; + case CENTER: coord[0] -= coord[2]/2; coord[1] -= coord[3]/2; + } + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + * Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + * Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void rectMode(int mode) { + rectMode = mode; + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + * Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + * Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als Breite und Höhe der Form. + * ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void ellipseMode(int mode) { + ellipseMode = mode; + } + + + + /** + * Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + * Um eine Linie einzufärben, verwenden Sie die {@link #stroke(int, int, int) stroke()} Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + * Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + * {@link #strokeWeight(double) strokeWeight()} geändert werden. + * @param x1 x-Koordinate des 1. Punktes + * @param y1 y-Koordinate des 1. Punktes + * @param x2 x-Koordinate des 2. Punktes + * @param y2 y-Koordinate des 2. Punktes + */ + public void line(int x1, int y1, int x2, int y2) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + if (stroke > 0) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawLine(x1, y1, x2, y2); + } + repaint(); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, rectMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillRect(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawRect(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, ellipseMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillOval(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawOval(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + int px[] = {x1, x2, x3}; + int py[] = {y1, y2, y3}; + polygon(px, py); + + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + + int px[] = {x1, x2, x3, x4}; + int py[] = {y1, y2, y3, y4}; + polygon(px, py); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + + public void polygon(int[] x, int[] y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(fillcolor != null) { + + g.setColor(fillcolor); + g.fillPolygon(x,y, y.length); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawPolygon(x, y, x.length); + } + repaint(); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + ellipse(x,y,1, 1); + + } + + // ----------------------------------------- Schriftdarstellung ----------------------------------------------- + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param s Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String s, int x, int y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(pencolor != null) { + g.setColor(fillcolor); + g.setStroke(new BasicStroke((float) stroke)); + g.setFont(textfont); + g.drawString(s, x, y); + } + repaint(); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + this.textfont = font; + } + + + // ----------------------------------------- Farbfestlegungen ----------------------------------------------- + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(String color) { + try{ + return new Color( + Integer.valueOf( color.substring( 0, 2 ), 16 ), + Integer.valueOf( color.substring( 2, 4 ), 16 ), + Integer.valueOf( color.substring( 4, 6 ), 16 ) ); + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(int color) { + try{ + if(color >=0 && color < 256) { + return new Color(color,color,color); + } else { + int r = color / 0x010000 % 0xFF; + int g = color / 0x000100 % 0xFF; + int b = color % 0xFF; + System.out.println(""+r+","+g+","+b); + return new Color(r, g, b ); + } + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + this.pencolor = decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + this.pencolor=decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + this.pencolor = new Color(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + this.pencolor = null; + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + this.stroke = width; + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + this.fillcolor = decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + this.fillcolor=decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + this.fillcolor = new Color(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + this.fillcolor = null; + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + if(c < 256) { + this.background=new Color(c,c,c); + } else { + int r = c / 0x010000; + int g = c / 0x000100 % 0xFF; + int b = c % 0xFF; + this.background= new Color(r, g, b ); + } + + this.clear(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + this.background=new Color(r,g,b); + this.clear(); + } + + +// ----------------------------------------- Dateioperationen ----------------------------------------------- + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + try{ + this.image = ImageIO.read(new File(filename)); + this.background = decode("D0D0D0"); + this.pencolor = new Color(0,0,0); + this.fillcolor = null; + this.stroke = 1; + this.repaint(); + + } catch(Exception e) { + System.out.println("Fehler beim Einlesen der Bilddatei"); + } + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + try{ + String[] fn = filename.split("\\."); + if (fn.length== 1) { + ImageIO.write(image, "PNG", new File(filename+".png")); + } else { + + if (fn.length == 2 && (fn[1].toUpperCase().equals("PNG") || + fn[1].toUpperCase().equals("GIF"))){ + ImageIO.write(image, fn[1], new File(filename)); + }else { + System.out.println("Unbekanntes Bildformat"); + } + } + + } catch(Exception e) { + System.out.println("Fehler beim Speichern"); + } + } + + +// ----------------------------------------- Sonstiges ----------------------------------------------- + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + + public Color[][] getPixelArray() { + Color[][] pixel = new Color[image.getWidth()][image.getHeight()]; + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + pixel[x][y] = new java.awt.Color(image.getRGB(x,y)); + } + } + return pixel; + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + size(pixel.length,pixel[0].length); + Graphics2D g = (Graphics2D) image.getGraphics(); + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + g.setColor(pixel[x][y]); + g.fillRect(x, y, 1, 1); + } + } + repaint(); + } + + /** + * Hilfsfunktion zum Verzögern der Ausgabe + * @param millis Wartezeit in Millisekunden + */ + public void delay(int millis) { + try{ + Thread.sleep(millis); + + } catch(Exception e) { + + } + + } + + + +} diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg12_balkendiagramm_csv/PictureViewer.java b/03_vorlagen_tauschordner/02_greenfoot/alg12_balkendiagramm_csv/PictureViewer.java new file mode 100644 index 0000000..ecbb521 --- /dev/null +++ b/03_vorlagen_tauschordner/02_greenfoot/alg12_balkendiagramm_csv/PictureViewer.java @@ -0,0 +1,499 @@ +import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot und MouseInfo) +import java.awt.image.*; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.BasicStroke; +import java.awt.Font; +import java.util.Vector; +import java.awt.Color; +import javax.imageio.*; +import java.io.*; + +/** + * Der PictureViewer ist ein Actor, der in der Lage ist ein + * Objekt der Klasse Picture anzuzeigen. Zusätzlich können + * mehrere Verarbeitungsschritte gespeichert werden, um ein + * "zurück"-Funktion zu ermöglichen. + * + * @author Thomas Schaller + * @version V1.0 vom 10.02.2019 + */ +public class PictureViewer extends Actor +{ + public static final int FIT = -1; + public static final int NORMAL = 1; + + private static final int ANZ_BACK = 0; + + private double zoom; + protected Picture picture = null; + private Vector history; + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der Größe 500x400 + */ + public PictureViewer() { + this(500,400); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public PictureViewer(int width, int height) { + this(width,height, "D0D0D0"); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + * @param background Farbe des Hintergrunds als HEX-String (z.B. "FF3A45") + */ + public PictureViewer(int width, int height, String background) { + picture = new Picture(width,height, background); + picture.setObserver(this); + this.history = new Vector(); + this.zoom = NORMAL; + repaint(); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild aus einer Bilddatei + * @param filename Name des Bildes + */ + public PictureViewer(String filename) { + picture = new Picture(filename); + picture.setObserver(this); + this.history = new Vector(); + this.zoom = NORMAL; + repaint(); + } + + /** + * Speichert das übergebene Bild in der History. + * @param b zu speicherndes Bild + */ + public void pushImage() { + if( this.ANZ_BACK > 0) { + if(history.size() == this.ANZ_BACK) { + history.removeElementAt(0); + } + + BufferedImage b = new BufferedImage(picture.getWidth(), picture.getHeight(), picture.getImage().getType()); + Graphics g = b.getGraphics(); + g.drawImage(picture.getImage(), 0, 0, null); + g.dispose(); + + history.add(b); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + private void popImage() { + int anz = history.size(); + if(anz>0) { + BufferedImage i = history.get(anz-1); + history.removeElementAt(anz-1); + picture.setImage(i); + repaint(); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + public void back() { + popImage(); + } + + /** + * Setzt den Zoom-Faktor für das Bild. + * Als Zoomfaktor sind auch die Konstanten Bildanzeiger.FIT (auf Bildschirmgröße zoomen) und Bildanzeiger.NORMAL (100%) möglich. + * @param factor Zoomfaktor (1.0 = 100%). + */ + public void setZoom(double zoom) { + this.zoom = zoom; + repaint(); + } + + /** + * Setzt die automatische Neuanzeige des Bildes. + * Mit dieser Methode kann man einstellen, ob nach jedem Zeichenbefehl + * die Anzeige auf dem Bildschirm aktualisiert werden soll. Bei sehr + * vielen Zeichenbefehlen wird die Ausgabe dadurch sehr langsam. Es reicht + * eine Anzeige am Ende der Zeichenbefehle. Rufen Sie dann für das Neuzeichnen + * die Methode refresh() auf. + * @param autoRefresh true, wenn nach jedem Zeichenbefehl die Anzeige aktualisiert werden soll. + */ + public void setAutoRefresh(boolean autoRefresh) { + picture.setAutoRefresh(autoRefresh); + } + + /** + * Sorgt für die Aktualisierung der Bildschrimanzeige. Das aktuelle Bild + * wird dadurch angezeigt. Durch Einstellung von autoRefresh kann die + * Anzeige automatisiert werden. + */ + public void refresh() { + repaint(); + } + + /** + * Setzt das angezeigt Bild neu und beachtet dabei den Zoomfaktor. + */ + public void repaint() { + double faktor = zoom; + + if (zoom == FIT) { + double faktorw = (double) this.getWorld().getWidth() / picture.getWidth(); + double faktorh = (double) this.getWorld().getHeight() / picture.getHeight(); + faktor = Math.min(faktorw, faktorh); + } + int gfi_width = (int) (picture.getWidth()*faktor); + int gfi_height = (int) (picture.getHeight()*faktor); + + setImage(new GreenfootImage(gfi_width, gfi_height)); + Graphics2D g = (Graphics2D) this.getImage().getAwtImage().getGraphics(); + g.drawImage(picture.getImage(),0,0,gfi_width, gfi_height, 0, 0, picture.getWidth(), picture.getHeight(), null); + g.setColor(new java.awt.Color(0,0,0)); + g.setStroke(new BasicStroke((float) 1)); + g.drawRect(0,0,gfi_width-1, gfi_height-1); + + } + + // Wrappermethoden + /** + * Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + * Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + * der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu. + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public void size(int width, int height){ + picture.size(width, height); + } + + /** + * Liefert die Breite des Bildes zurück. + * @return Breite des Bildes + */ + public int getImageWidth() { + return picture.getWidth(); + } + + /** + * Liefert die Höhe des Bildes zurück. + * @return Höhe des Bildes + */ + public int getImageHeight() { + return picture.getHeight(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + picture.background(c); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + picture.background(r,g,b); + } + + /** + * Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + * Um eine Linie einzufärben, verwenden Sie die {@link #stroke(int, int, int) stroke()} Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + * Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + * {@link #strokeWeight(double) strokeWeight()} geändert werden. + * @param x1 x-Koordinate des 1. Punktes + * @param y1 y-Koordinate des 1. Punktes + * @param x2 x-Koordinate des 2. Punktes + * @param y2 y-Koordinate des 2. Punktes + */ + public void line(int x1, int y1, int x2, int y2) { + picture.line(x1,y1,x2,y2); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + picture.rect(a,b,c,d); + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + picture.ellipse(a,b,c,d); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + picture.triangle(x1,y1,x2,y2,x3,y3); + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + picture.quad(x1,y1,x2,y2,x3,y3,x4,y4); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + public void polygon(int[] x, int[] y) { + picture.polygon(x,y); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + picture.point(x,y); + + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + * Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + * Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void rectMode(int mode) { + picture.rectMode(mode); + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + * Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + * Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als Breite und Höhe der Form. + * ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void ellipseMode(int mode) { + picture.ellipseMode(mode); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + picture.stroke(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + picture.noStroke(); + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + picture.strokeWeight(width); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + picture.fill(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + picture.noFill(); + } + + /** + * Löscht den Inhalt des Bildes. + * Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt. + */ + public void clear(){ + picture.clear(); + } + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + picture.load(filename); + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + picture.save(filename); + } + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param t Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String t, int x, int y) { + picture.text(t,x,y); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + picture.textFont(font); + } + + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + public Color[][] getPixelArray() { + return picture.getPixelArray(); + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + picture.setPixelArray(pixel); + } + + +} + diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg12_balkendiagramm_csv/README.TXT b/03_vorlagen_tauschordner/02_greenfoot/alg12_balkendiagramm_csv/README.TXT new file mode 100644 index 0000000..4b8fadd --- /dev/null +++ b/03_vorlagen_tauschordner/02_greenfoot/alg12_balkendiagramm_csv/README.TXT @@ -0,0 +1,14 @@ +------------------------------------------------------------------------ +Dies ist die README-Datei des Projekts. Hier sollten Sie Ihr Projekt +beschreiben. +Erzählen Sie dem Leser (jemand, der nichts über dieses Projekt weiss), +alles, was er/sie wissen muss. Üblicherweise sollte der Kommentar +zumindest die folgenden Angaben umfassen: +------------------------------------------------------------------------ + +PROJEKTBEZEICHNUNG: +PROJEKTZWECK: +VERSION oder DATUM: +WIE IST DAS PROJEKT ZU STARTEN: +AUTOR(EN): +BENUTZERHINWEISE: diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg12_balkendiagramm_csv/Table.java b/03_vorlagen_tauschordner/02_greenfoot/alg12_balkendiagramm_csv/Table.java new file mode 100644 index 0000000..ee5a211 --- /dev/null +++ b/03_vorlagen_tauschordner/02_greenfoot/alg12_balkendiagramm_csv/Table.java @@ -0,0 +1,894 @@ +/** + * Die Klasse Table vereinfacht den Zugriff auf CSV-Dateien. + * Die Klassen Table und TableRow ermöglichen einen einfachen Zugriff auf tabellenbasierte + * Dokumente. + * + * @author Thomas Schaller + * @version 1.0 vom 01.02.2019 + */ + +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.ArrayList; +import java.io.*; +import java.util.Scanner; + +import org.jdom.Document; +import org.jdom.Element; +import org.jdom.Attribute; +import org.jdom.JDOMException; +import org.jdom.input.SAXBuilder; +import org.jdom.output.XMLOutputter; +import org.jdom.output.Format; + +public class Table +{ + // Standardtrennzeichen für Spalten + private static final char DEFAULT_SEPARATOR = ';'; + // Standardmarkierung für Texte + private static final char DEFAULT_QUOTE = '"'; + // Standardtrennzeichen für Dezimalzahlen + private static final char DEFAULT_COMMA = ','; + + // mögliche Spaltentypen + private static final String UNKNOWN ="UNKOWN"; + private static final String INT = "INTEGER"; + private static final String DOUBLE = "DOUBLE"; + private static final String FLOAT = "FLOAT"; + + // interne Verwaltung des Dokuments als JDOM-Document-Objekt + private Document doc; + // Verweis auf Element für Kopfzeile + private Element header; + // Ende Attribute + + /** + * Erzeugt leeres Tabellen-Dokument. + */ + public Table() { + this.doc = new Document(); + doc.setRootElement(new Element("CSV-Data")); + this.header = new Element("Header"); + doc.getRootElement().addContent(header); + } + + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei und erstellt ein Tabellenobjekt mit seinen Werten. + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public Table(String filename, String options, char separator, char quote) { + loadCSV(filename, options, separator, quote); + } + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei und erstellt ein Tabellenobjekt mit seinen Werten (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + */ + public Table(String filename, String options) { + loadCSV(filename, options); + } + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei ohne Kopfzeile und erstellt ein Tabellenobjekt mit seinen Werten (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public Table(String filename) { + loadCSV(filename); + } + + // Anfang Methoden + /** + * Liest den Inhalt einer CSV-Datei ohne Kopfzeile (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public void loadCSV(String filename) { + loadCSV(filename, ""); + } + + /** + * Liest den Inhalt einer CSV-Datei (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + */ + public void loadCSV(String filename, String options) { + loadCSV(filename, options, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** + * Liest den Inhalt einer CSV-Datei. + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public void loadCSV(String filename, String options, char separator, char quote) { + doc = new Document(); + doc.setRootElement(new Element("CSV-Data")); + header = new Element("Header"); + doc.getRootElement().addContent(header); + try { + File f = new File(filename); + Scanner scanner = new Scanner(new File(filename)); + if(options.toLowerCase().contains("header") && scanner.hasNext()) { + List entries = parseLine(scanner.nextLine(), separator, quote); + int i= 0; + for(String s : entries) { + Element entry = new Element("Column"); + header.addContent(entry); + entry.setText(s); + entry.setAttribute("type", "unknown"); + i++; + } + } + + List cols = header.getChildren(); + + while (scanner.hasNext()) { + Element line = new Element("Row"); + doc.getRootElement().addContent(line); + List entries = parseLine(scanner.nextLine(), separator, quote); + int i= 0; + + for(String s : entries) { + + if(i==cols.size()) { + Element entry = new Element("Column"); + entry.setAttribute("type", "unknown"); + header.addContent(entry); + cols = header.getChildren(); + } + + Element entry = new Element("Entry"); + entry.setText(s); + line.addContent(entry); + i++; + } + } + scanner.close(); + + } catch (Exception e) { + System.out.println("Fehler beim Lesen der CSV-Datei"); + } + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei ohne Kopfzeile (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public void saveCSV(String filename) { + saveCSV(filename, ""); + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthalten, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile haben soll, + * dann lassen Sie einfach die Option "header" weg. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile haben soll. + * @param filename Dateiname der CSV-Datei. + */ + public void saveCSV(String filename, String options) { + saveCSV(filename, options, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei. + * Wenn die Datei eine Kopfzeile enthalten, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile haben soll, + * dann lassen Sie einfach die Option "header" weg. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile haben soll. + * @param filename Dateiname der CSV-Datei. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public void saveCSV(String filename, String options, char separator, char quote){ + try{ + File f = new File(filename); + PrintStream outputFile = new PrintStream (f); + System.out.println("Speicher in : "+f.getAbsolutePath()); + List columns = header.getChildren(); + String sq = ""+quote; + String ss = ""+separator; + if(quote =='"') sq = "\""; + if(separator =='"') ss = "\""; + + if(options.toLowerCase().contains("header")) { + String h = ""; + for(Element c : columns) { + h += ss + sq + c.getText()+sq; + } + outputFile.println(h.substring(1)); + } + for(int i = 0; i parseLine(String cvsLine) { + return parseLine(cvsLine, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** HIlfsfunktion für die Analyse einer Dateizeile + * @param cvsLine Zeile aus der Datei + * @param sparator Trennzeichen für die Spalten + * @return Liste von String für die einzelnen Spalten + */ + private List parseLine(String cvsLine, char separator) { + return parseLine(cvsLine, separator, DEFAULT_QUOTE); + } + + /** HIlfsfunktion für die Analyse einer Dateizeile + * @param cvsLine Zeile aus der Datei + * @param sparator Trennzeichen für die Spalten + * @param customQuote Kennung für Strings + * @return Liste von String für die einzelnen Spalten + */ + private List parseLine(String cvsLine, char separator, char customQuote) { + + List result = new ArrayList<>(); + + //if empty, return! + if (cvsLine == null && cvsLine.isEmpty()) { + return result; + } + + //ggf. Default-Value laden + if (customQuote == ' ') { + customQuote = DEFAULT_QUOTE; + } + + if (separator == ' ') { + separator = DEFAULT_SEPARATOR; + } + + StringBuffer curVal = new StringBuffer(); + boolean inQuotes = false; + boolean startCollectChar = false; + boolean doubleQuotesInColumn = false; + + char[] chars = cvsLine.toCharArray(); + + for (char ch : chars) { + + if (inQuotes) { // aktueller Text ist in Quotes eingeschlossen + startCollectChar = true; + + if (ch == customQuote) { // Quotes werden beendet, aber Achtung bei "" => Metazeichen + inQuotes = false; + if (ch == '\"') { + doubleQuotesInColumn = true; + } + + } else { + + if (ch == '\"' && !doubleQuotesInColumn) { + doubleQuotesInColumn = true; + } else { + curVal.append(ch); + doubleQuotesInColumn = false; + } + + } + } else { + if (ch == customQuote) { + + inQuotes = true; + + //Fixed : allow "" in empty quote enclosed + if (ch == '\"'){ + if(doubleQuotesInColumn) { + curVal.append('"'); + doubleQuotesInColumn = false; + } else doubleQuotesInColumn = true; + + + } + } + else { + doubleQuotesInColumn = false; + if (ch == separator) { + + result.add(curVal.toString()); + + curVal = new StringBuffer(); + startCollectChar = false; + + } else if (ch == '\r') { + //ignore LF characters + continue; + } else if (ch == '\n') { + //the end, break! + break; + } else { + curVal.append(ch); + } + } + } + + } + result.add(curVal.toString()); + return result; + } + + /** + * Sucht die Nummer einer durch Namen gegebenen Spalte. + * @param name Name der Spalte + * @return Nummer der Spalte + */ + + private int findColumnNumber(String name) { + List columns = header.getChildren(); + int i = 0; + for(Element c : columns) { + if (c.getText().toLowerCase().equals(name.toLowerCase())) { + return i; + + } + i++; + } + return -1; + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an. + */ + public void addColumn() { + Element entry = new Element("Column"); + entry.setAttribute("type", Table.UNKNOWN); + header.addContent(entry); + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an und benennt sie. + * @param title Bezeichnung der Spalte + */ + public void addColumn(String title) { + addColumn(); + Element nc = ((List)(header.getChildren())).get(header.getChildren().size()-1); + nc.setText(title); + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an und benennt und typisiert sie. + * @param title Bezeichnung der Spalte + * @param type Typ der Spalte (UNKNOWN, DOUBLE, INTEGER, FLOAT) + */ + public void addColumn(String title, String type) { + addColumn(title); + Element nc = ((List)(header.getChildren())).get(header.getChildren().size()-1); + nc.setAttribute("type", type); + } + + /** + * Löscht eine Spalte. + * @param i Nummer der Spalte. + */ + public void removeColumn(int i) { + List lines = doc.getRootElement().getChildren(); + for(Element l : lines) { + if(l.getChildren().size()>i) l.removeContent(i); + } + } + + /** + * Löscht eine Spalte + * @param name Name der Spalte + */ + public void removeColumn(String name) { + try{ + removeColumn(findColumnNumber(name)); + } catch(Exception e) { System.out.println("Unbekannter Spaltenname");} + } + + /** + * Liefert die Anzahl der Spalten in der Tabelle + * @return Anzahl der Spalten + */ + public int getColumnCount() { + return header.getChildren().size(); + } + + /** + * Liefert die Anzahl der Zeilen in der Tabelle + * @return Anzahl der Zeilen + */ + public int getRowCount() { + return doc.getRootElement().getChildren().size()-1; + } + + /** + * Löscht alle Zeilen der Tabelle. + * Die Spaltenüberschriften und Typen bleiben erhalten. + */ + public void clearRows() { + doc.getRootElement().removeChildren("Row"); + } + + /** + * Fügt eine neue Zeile an das Ende der Tabelle an. + * @return ein TableRow-Objekt für diese neue Zeile + */ + public TableRow addRow() { + Element row = new Element("Row"); + doc.getRootElement().addContent(row); + return new TableRow(doc, row); + } + + /** + * Löscht eine Zeile + * @param i Nummer der Zeile + */ + public void removeRow(int i) { + if(i rows = doc.getRootElement().getChildren(); + return new TableRow(doc, rows.get(i+1)); + } + return null; + } + + /** + * Liefert die ganze Tabelle als Array von TableRow-Objekten + * @return Array von TableRow-Objekten + */ + public TableRow[] rows() { + TableRow[] rows = new TableRow[getRowCount()]; + for(int i = 0; i < getRowCount(); i++) { + rows[i] = getRow(i); + } + return rows; + } + + /** + * Liefert den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param column Spaltennummer + * @return Wert der Zelle + */ + public int getInt(int row, int column) { + return getRow(row).getInt(column); + } + + /** + * Liefert den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param name Name der Spalte + * @return Wert der Zelle + */ + public int getInt(int row, String name) { + return getRow(row).getInt(name); + } + + /** + * Setzt den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param column Spaltennummer + * @param value neuer Wert der Zelle + */ + public void setInt(int row, int column,int value) { + getRow(row).setInt(column, value); + } + + /** + * Setzt den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(int row, String name, int value) { + getRow(row).setInt(name, value); + } + + /** + * Liefert alle Werte einer Zeile als Integer-Array. + * @param row Nummer der Zeile + * @return int-Array, dass alle Werte der Zeile enthält + */ + public int[] getIntRow(int row) { + try{ + TableRow trow = getRow(row); + int anz = getColumnCount(); + int[] r = new int[anz]; + for(int i=0; i) (header.getChildren())).get(i).getText(); + } else { + return ""; + } + } + + /** + * Liefert die Nummer einer Spalte + * @param name Name der Spalte + * @return Nummer der Spalte + */ + public int getColumn(String name) { + List columns = header.getChildren(); + int i = 0; + while (i < columns.size()) { + if (columns.get(i).getText().toLowerCase().equals(name.toLowerCase())) { + return i; + } + i++; + } // end of while + return -1; + } + + + /** + * Erzeugt eine neue Zeile mit i Spalten + * Wenn bisher nicht genügend Spalten vorhanden sind, werden automatisch neue Spalten hinzugefügt (auch zum Header) + * @param i Anzahl der Spalten + */ + private Element buildRow(int i) { + List columns = header.getChildren(); + Element entry=null; + for(int j=0; j<=i; j++) { + + if(j==columns.size()) { + Element h = new Element("Column"); + h.setAttribute("type", "unknown"); + header.addContent(h); + columns = header.getChildren(); + } + if(j==current.getChildren().size()) { + entry = new Element("Entry"); + current.addContent(entry); + + } + + } + return entry; + + } + + /** + * Erzeugt eine neue Zeile. + * Es werden genügend Spalten erzeugt, dass ein Wert in Spalte "name" eingetragen werden kann + * @param name Name der Spalte + */ + private Element buildRow(String name) { + List columns = header.getChildren(); + int i = 0; + for(Element c: columns) { + + if(c.getText().toLowerCase().equals(name.toLowerCase())) { + return buildRow(i); + } + i++; + } + return null; + + } + + /** + * Liefert den Wert einer Zelle als String + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public String getString(int i) { + if(i >= current.getContent().size()) return ""; + Element e = (Element) current.getContent(i) ; + if(e!=null) { + return e.getText(); + } else { + return ""; + } + } + + /** + * Liefert den Wert einer Zelle als String + * @param name Name der Spalte + * @return Wert der Zelle + */ + public String getString(String name) { + return getString(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als String + * @param i Nummer der Spalte + * @param text neuer Wert der Zelle + */ + public void setString(int i, String text) { + + Element e = buildRow(i); + if(e!=null) e.setText(text); + } + + /** + * Setzt den Wert einer Zelle als String + * @param name Name der Spalte + * @param text neuer Wert der Zelle + */ + public void setString(String name, String text) { + Element e = buildRow(name); + if(e!=null) e.setText(text); + } + + + /** + * Liefert den Wert einer Zelle als Int-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public int getInt(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Integer.parseInt(e.getText()); + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Int-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public int getInt(String name) { + return getInt(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Int-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(int i,int value) { + + Element e = buildRow(i); + if(e!=null) e.setText(""+value); + } + + /** + * Setzt den Wert einer Zelle als Int-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(String name, int value) { + Element e = buildRow(name); + if(e!=null) e.setText(""+value); + } + + /** + * Liefert den Wert einer Zelle als Float-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public float getFloat(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Float.parseFloat(e.getText().replace(",",".")); + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Float-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public float getFloat(String name) { + return getFloat(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Float-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setFloat(int i,float value) { + + Element e = buildRow(i); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Setzt den Wert einer Zelle als Float-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setFloat(String name, float value) { + Element e = buildRow(name); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Liefert den Wert einer Zelle als Double-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public double getDouble(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Double.parseDouble(e.getText().replace(",",".")); + + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Double-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public double getDouble(String name) { + return getDouble(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Double-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setDouble(int i,double value) { + + Element e = buildRow(i); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Setzt den Wert einer Zelle als Double-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setDouble(String name, double value) { + Element e = buildRow(name); + if(e!=null) e.setText(format.format(value)); + } + +} diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg12_balkendiagramm_csv/XML.java b/03_vorlagen_tauschordner/02_greenfoot/alg12_balkendiagramm_csv/XML.java new file mode 100644 index 0000000..c06c490 --- /dev/null +++ b/03_vorlagen_tauschordner/02_greenfoot/alg12_balkendiagramm_csv/XML.java @@ -0,0 +1,637 @@ +/** + * Klasse zum Vereinfachten Zugriff auf XML-Dokumente + * Diese Klasse ist für den Einsatz in der Schule gedacht und soll den Schülern + * einen einfachen Zugriff auf XML-Dokumente ermöglichen. Die zur Verfügung + * stehenden Befehle sind wie in Processing realisiert. + * Dabei ist jeder Teilbaum des Dokuments wieder als XML-Objekt zugreifbar, das + * intern auf die gleiche XML-Dokumentstruktur zugreift. + * Dies ermöglicht bei unsachgemäßem Gebrauch die XML-Struktur zu zerstören. Im + * normalen Gebrauch sollte dies aber nicht relevant sein. + * + * Benötigt: jdom-1.1.3.jar + + * @author Thomas Schaller + * @version 1.0 vom 31.01.2019 + */ +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.ArrayList; +import java.io.*; + +import org.jdom.Document; +import org.jdom.Element; +import org.jdom.Attribute; +import org.jdom.JDOMException; +import org.jdom.input.SAXBuilder; +import org.jdom.output.XMLOutputter; +import org.jdom.output.Format; + +public class XML { + // Anfang Attribute + // XML-Dokumentstruktur + private Document doc; + // Zeiger auf das aktuelle Element + private Element current; + // Ende Attribute + + /** + * Erzeugt ein leeres XMLDokument + */ + public XML() { + this.doc = new Document(); + this.current = null; + } + + /** + * Erzeugt ein XML-Dokument aus einer Datei + * @param filename Dateiname der XML-Datei + */ + public XML(String filename) { + loadXML(filename); + } + + /** + * interner Konstruktor, um ein XML Objekt zu erzeugen, das auf einen bestimmten Knoten verweist + * @param doc die XML-Dokumentstruktur + * @param current Zeiger auf das aktuelle Element + */ + private XML(Document doc, Element current) { + this.doc = doc; + this.current = current; + } + + // Anfang Methoden + /** Öffnet das durch den Dateinamen gegebene Dokument + * @param filename Dateiname des XML-Files + */ + public void loadXML(String filename) { + doc = null; + File f = new File(filename); + + try { + // Das Dokument erstellen + SAXBuilder builder = new SAXBuilder(); + doc = builder.build(f); + + } catch (JDOMException e) { + e.printStackTrace(); + + } catch (IOException e) { + e.printStackTrace(); + } + // Zeiger im Baum auf Root-Element + current = doc.getRootElement(); + } + + /** Speichert den XML-Baum im angegebenen Dateinamen + * @param filename Dateiname des XML-Files + */ + public void saveXML(String filename) { + try { + // new XMLOutputter().output(doc, System.out); + XMLOutputter xmlOutput = new XMLOutputter(); + + // display nice nice + xmlOutput.setFormat(Format.getPrettyFormat()); + File f = new File(filename); + FileOutputStream outputFile = new FileOutputStream(f); + System.out.println("Speicher in : "+f.getAbsolutePath() ); + xmlOutput.output(doc, outputFile); + outputFile.close(); + System.out.println("File Saved!"); + } catch (IOException io) { + System.out.println(io.getMessage()); + } + + } + + //----------------------------------------------- Zeigerbewegungen -------------------------------------------------- + /** + * liefert ein XML-Objekt, das auf den Vaterknoten des aktuellen Elements zeigt. + * @return Vater des aktuellen Objekts. + */ + public XML getParent() { + if(current != null) { + Element parent = current.getParentElement(); + if (parent == null) { + return null; + } else { + return new XML(doc, parent); + } + } + return null; + } + + /** + * Überprüft, ob das Element irgendwelche Kinder hat oder nicht, und gibt das Ergebnis als boolean zurück. + * @return true, wenn Kinder vorhanden sind, sonst false + */ + public boolean hasChildren() { + if (current == null) { + return doc.hasRootElement(); + } else { + return current.getChildren().size()>0; + } + } + + /** + * Ermittelt die Namen aller Kinder des Elements und gibt die Namen als ein Array von Strings zurück. + * Dies ist dasselbe wie das Durchlaufen und Aufrufen von getName() auf jedem untergeordneten Element einzeln. + * @return Liste aller Namen der Kinder + */ + public String[] listChildren() { + if (current == null) { + if(doc.hasRootElement()) { + String[] names = new String[0]; + names[0] = doc.getRootElement().getName(); + return names; + } else { + return null; + } + } else { + List ch_element = current.getChildren(); + String[] names = new String[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + names[i] = ch_element.get(i).getName(); + } + return names; + } + } + + /** + * Liefert alle Kinder des Elements als Array von XML-Objekten. + * @return Array der Kinder als XML-Objekte + */ + public XML[] getChildren() { + if (current == null) { + if(doc.hasRootElement()) { + XML[] ch_xml = new XML[1]; + ch_xml[0] = new XML(doc, doc.getRootElement()); + return ch_xml; + } else { + return null; + } + } else { + List ch_element = current.getChildren(); + XML[] ch_xml = new XML[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + ch_xml[i] = new XML(doc, ch_element.get(i)); + } + return ch_xml; + } + } + + /** + * Liefert bestimmte Kinder des Elements als Array von XML-Objekten. + * Die Methode gibt dabei alle Kinder zurück, die dem angegebenen Namen entsprechen. + * @param name Name der gesuchten Kind-Objekte + * @return Array der Kinder als XML-Objekte + */ + public XML[] getChildren(String name) { + if (current == null) { + if(doc.hasRootElement()) { + XML[] ch_xml = new XML[1]; + ch_xml[0] = new XML(doc, doc.getRootElement()); + if(doc.getRootElement().getName().equals(name)){ + return ch_xml; + } else { + return null; + } + } else { + return null; + } + } else { + List ch_element = current.getChildren(name); + XML[] ch_xml = new XML[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + ch_xml[i] = new XML(doc, ch_element.get(i)); + } + return ch_xml; + } + } + + /** + * Liefert das erste Kind des Elements mit einem bestimmten Namen. + * Die Methode gibt das erste Kind zurück, das dem angegebenen Namen entsprechen. + * @param name Name des gesuchten Kind-Objektes + * @return Kind als XML-Objekt + */ + + public XML getChild(String name) { + if (current == null) { + Element e = doc.getRootElement(); + if (e.getName().equals(name)) { + return new XML(doc, e); + } else { + return null; + } + } else { + String[] names = name.split("/"); + Element e = current; + int i = 0; + while(i < names.length) { + e = e.getChild(names[i]); + if (e==null) return null; + i++; + } + return new XML(doc, e); + } + } + + /** + * Liefert das i. Kind des Elements. + * Die Methode gibt das i. Kind des aktuellen Elements zurück. + * @param i Nummer des Kindes + * @return Kind als XML-Objekt + */ + public XML getChild(int i) { + if (current == null) { + return new XML(doc, doc.getRootElement()); + } else { + List ch_element = current.getChildren(); + if (i>=ch_element.size()) return null; + return new XML(doc, ch_element.get(i)); + } + } + + //--------------------------------------------------- Methoden für das aktuelle Element ------------------------------------------------- + /** + * Frage den Namen des aktuellen Elements ab + * @return Namen des Elements + */ + public String getName() { + if (current==null) return ""; + return current.getName(); + } + + /** + * Setze den Namen des aktuellen Elements. + * @param name Neuer Name des Elements + */ + public void setName(String name) { + if (current==null) return; + current.setName(name); + } + + /** + * liefert die Anzahl der Attribute eines Elements. + * @return Anzahl des Attribute + */ + public int getAttributeCount() { + if (current == null) return 0; + return current.getAttributes().size(); + } + + /** + * liefert zurück, ob das aktuelle Element Attribute hat . + * @return true, wenn es Attribute gibt + */ + public boolean hasAttribute() { + if (current == null) return false; + return current.getAttributes().size()>0; + } + + /** + * Ruft alle Attribute des angegebenen Elements ab und gibt sie als Array von Strings zurück. + * @return Liste der Attributnamen + */ + public String[] listAttributes() { + if (current == null) return null; + List attr = current.getAttributes(); + String[] names = new String[attr.size()]; + for(int i=0; i < attr.size() ; i++) { + names[i] = attr.get(i).getName(); + } + return names; + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs + */ + public String getString(String attribute) { + if (current==null) return ""; + return current.getAttributeValue(attribute); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs + */ + public String getString(String attribute, String defaultValue) { + if (current==null) return defaultValue; + return current.getAttributeValue(attribute,defaultValue); + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param text neuer Wert des Attributs + */ + public void setString(String attribute, String text) { + if (current==null) return; + current.setAttribute(attribute, text); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Integer-Zahl + */ + public int getInt(String attribute) { + if (current==null) return 0; + try{ + int i = Integer.parseInt(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als Integer-Zahl + */ + public int getInt(String attribute, int defaultValue) { + if (current==null) return defaultValue; + try{ + int i = Integer.parseInt(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setInt(String attribute, int value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Float-Zahl + */ + public float getFloat(String attribute) { + if (current==null) return 0; + try{ + float i = Float.parseFloat(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als Float-Zahl + */ + public float getFloat(String attribute, float defaultValue) { + if (current==null) return defaultValue; + try{ + float i = Float.parseFloat(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setFloat(String attribute, float value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Double-Zahl + */ + public double getDouble(String attribute) { + if (current==null) return 0; + try{ + double i = Double.parseDouble(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + +/** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als double-Zahl + */ + public double getDouble(String attribute, double defaultValue) { + if (current==null) return defaultValue; + try{ + double i = Double.parseDouble(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setDouble(String attribute, double value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt den Inhalt/Text des aktuellen Elements ab + * @return Inhalt des Elements + */ + public String getContent() { + if ( current==null) return ""; + + return current.getText(); + } + + /** + * Fragt den Inhalt/Text des aktuellen Elements ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardtext + * @return Inhalt des Elements + */ + public String getContent(String defaultValue) { + if ( current==null) return defaultValue; + String t = current.getText(); + if(t.equals("")) t = defaultValue; + return t; + } + + /** + * Setzt den Inhalt/Text des aktuellen Elements + * @param text Neuer Inhalt des Elements + */ + public void setContent(String text) { + if ( current==null) return; + current.setText(text); + } + + + /** + * Fragt den Inhalt des aktuellen Elements als Integerzahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ public int getIntContent(int defaultValue) { + if ( current==null) return defaultValue; + try{ + int i = Integer.parseInt(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Integerzahl ab + * @return Inhalt des Elements + */ + public int getIntContent() { + if ( current==null) return 0; + try{ + int i = Integer.parseInt(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setIntContent(int value) { + if ( current==null) return; + current.setText(""+value); + } + + + /** + * Fragt den Inhalt des aktuellen Elements als Floatzahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ + public float getFloatContent(float defaultValue) { + if ( current==null) return defaultValue; + try{ + float i = Float.parseFloat(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Floatzahl ab + * @return Inhalt des Elements + */ + public float getFloatContent() { + if ( current==null) return 0; + try{ + float i = Float.parseFloat(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setFloatContent(float value) { + if ( current==null) return; + current.setText(""+value); + } + +/** + * Fragt den Inhalt des aktuellen Elements als Doublezahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ + public double getDoubleContent(double defaultValue) { + if ( current==null) return defaultValue; + try{ + double i = Double.parseDouble(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Doublezahl ab + * @return Inhalt des Elements + */ + public double getDoubleContent() { + if ( current==null) return 0; + try{ + double i = Double.parseDouble(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setDoubleContent(double value) { + if ( current==null) return; + current.setText(""+value); + } + + + // ----------------------------------------------- XML-Struktur aufbauen ------------------------------------------------ + /** Erzeuge neues Element nach der aktuellen Position und setze dieses als aktuelles Element + * @param name Name des neuen Elements + * @return neues Element als XML-Objekt + */ + public XML addChild(String name) { + Element e = new Element(name); + if(current == null){ // man ist auf Root-Ebene + doc.setRootElement(e); + + } + else { + current.addContent(e); + } // end of if-else + return new XML(doc, e); + } + + /** + * liefert das aktuelle Element als jdom-Element-Objekt + * @return aktuelles Element + */ + private Element getCurrent() { + return current; + } + + /** + * löscht ein Kind des aktuellen Knotens. + * Ist kid kein Kind des aktuellen Elements passiert gar nichts. + * @param kid XML-Objekt des Kindes + */ + public void removeChild(XML kid) { + if (current == null) return; + Element e = kid.getCurrent(); + int index = current.indexOf(e); + if(index >= 0) { current.removeContent(e);} + } + +} diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg12_balkendiagramm_csv/images/balken.png b/03_vorlagen_tauschordner/02_greenfoot/alg12_balkendiagramm_csv/images/balken.png new file mode 100644 index 0000000..9ff1ffc Binary files /dev/null and b/03_vorlagen_tauschordner/02_greenfoot/alg12_balkendiagramm_csv/images/balken.png differ diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg12_balkendiagramm_csv/images/bilderrahmen.png b/03_vorlagen_tauschordner/02_greenfoot/alg12_balkendiagramm_csv/images/bilderrahmen.png new file mode 100644 index 0000000..7f34e32 Binary files /dev/null and b/03_vorlagen_tauschordner/02_greenfoot/alg12_balkendiagramm_csv/images/bilderrahmen.png differ diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg12_balkendiagramm_csv/jdom-1.1.3.jar b/03_vorlagen_tauschordner/02_greenfoot/alg12_balkendiagramm_csv/jdom-1.1.3.jar new file mode 100644 index 0000000..a287727 Binary files /dev/null and b/03_vorlagen_tauschordner/02_greenfoot/alg12_balkendiagramm_csv/jdom-1.1.3.jar differ diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg12_balkendiagramm_csv/project.greenfoot b/03_vorlagen_tauschordner/02_greenfoot/alg12_balkendiagramm_csv/project.greenfoot new file mode 100644 index 0000000..48e011f --- /dev/null +++ b/03_vorlagen_tauschordner/02_greenfoot/alg12_balkendiagramm_csv/project.greenfoot @@ -0,0 +1,93 @@ +#Greenfoot project file +class.Balkendiagramm.image=balken.png +class.PictureViewer.image=bilderrahmen.png +dependency1.from=MyWorld +dependency1.to=Balkendiagramm +dependency1.type=UsesDependency +dependency2.from=PictureViewer +dependency2.to=Picture +dependency2.type=UsesDependency +dependency3.from=Balkendiagramm +dependency3.to=Table +dependency3.type=UsesDependency +dependency4.from=Table +dependency4.to=TableRow +dependency4.type=UsesDependency +dependency5.from=Picture +dependency5.to=PictureViewer +dependency5.type=UsesDependency +editor.fx.0.height=739 +editor.fx.0.width=816 +editor.fx.0.x=552 +editor.fx.0.y=100 +height=885 +package.numDependencies=5 +package.numTargets=7 +project.charset=UTF-8 +publish.hasSource=false +publish.locked=true +publish.longDesc= +publish.shortDesc= +publish.tags= +publish.title= +publish.url= +readme.height=58 +readme.name=@README +readme.width=47 +readme.x=10 +readme.y=10 +simulation.speed=97 +target1.height=50 +target1.name=PictureViewer +target1.showInterface=false +target1.type=ClassTarget +target1.width=100 +target1.x=0 +target1.y=0 +target2.height=50 +target2.name=Table +target2.showInterface=false +target2.type=ClassTarget +target2.width=80 +target2.x=0 +target2.y=0 +target3.height=50 +target3.name=Balkendiagramm +target3.showInterface=false +target3.type=ClassTarget +target3.width=120 +target3.x=0 +target3.y=0 +target4.height=50 +target4.name=Picture +target4.showInterface=false +target4.type=ClassTarget +target4.width=80 +target4.x=0 +target4.y=0 +target5.height=50 +target5.name=XML +target5.showInterface=false +target5.type=ClassTarget +target5.width=100 +target5.x=0 +target5.y=0 +target6.height=50 +target6.name=TableRow +target6.showInterface=false +target6.type=ClassTarget +target6.width=80 +target6.x=0 +target6.y=0 +target7.height=50 +target7.name=MyWorld +target7.showInterface=false +target7.type=ClassTarget +target7.width=80 +target7.x=0 +target7.y=0 +version=3.0.0 +width=1350 +world.lastInstantiated=MyWorld +xPosition=449 +yPosition=138 diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg12_balkendiagramm_csv/punkte.csv b/03_vorlagen_tauschordner/02_greenfoot/alg12_balkendiagramm_csv/punkte.csv new file mode 100644 index 0000000..d6e8dfd --- /dev/null +++ b/03_vorlagen_tauschordner/02_greenfoot/alg12_balkendiagramm_csv/punkte.csv @@ -0,0 +1,6 @@ +"Name","Punkte" +Niko,216 +Klaus,591 +Anna,857 +Lena,180 +Winfried,168 diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg13_maximumsuche/Balkendiagramm.java b/03_vorlagen_tauschordner/02_greenfoot/alg13_maximumsuche/Balkendiagramm.java new file mode 100644 index 0000000..afd805d --- /dev/null +++ b/03_vorlagen_tauschordner/02_greenfoot/alg13_maximumsuche/Balkendiagramm.java @@ -0,0 +1,149 @@ +import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot und MouseInfo) +import java.awt.Font; + +/** + * Balkendiagramm für int-Array, Zahlen werden aus CSV-Datei gelesen, Maximum der Werte wird bestimmt. + * Hinweis zur Benutzung: + * Start des Algorithmus: Rufe im Kontextmenü (rechte Maustaste) die Methode maximumsuche() auf + * Start des automatischen Tests: Rufe im Kontextmenü (rechte Maustaste) die Methode testen() auf + * @author Schaller + * @version 29.11.18 + */ +public class Balkendiagramm extends PictureViewer + +{ + // Liste mit allen Werten //<>// + int[] zahlen; + String[] namen; + + // Hilfsvariablen für die Suche + // ------------------------------------------------------------------- + // ToDo: Hilfsvariablen erzeugen für aktuell größtes und aktuell + // untersuchtes Element + // ------------------------------------------------------------------- + // aktuell groesstes Element + // aktuell untersuchtes Element + int verzoegerung=1000; // Geschwindigkeit der Ausführung + + // Schriften + Font kleineSchrift; + Font grosseSchrift; + + public Balkendiagramm() { + size(1000, 700); + background(0); + kleineSchrift = new Font( Font.SANS_SERIF, Font.PLAIN, 12 ); + grosseSchrift = new Font( Font.SANS_SERIF, Font.PLAIN, 20 ); + + // CSV-Datei laden und anzeigen + ladeTabelle("punkte.csv"); + zeichneBalken(); + } + + public void ladeTabelle(String name) { + // Tabelle aus CSV-Datei laden + Table csv = new Table(name, "header",',','"'); + + if (csv != null && csv.getColumnCount()==2) { + + // Initialisiere Arrays, in die alle Zeilen der Tabelle passen + zahlen = new int[csv.getRowCount()]; + namen = new String[csv.getRowCount()]; + + // Fülle die Arrays mit Werten aus der Tabelle + for (int i = 0; i < zahlen.length; i++) { + // Lies Wert aus der i. Zeile und der Spalte "Punkte" bzw. "Name" + zahlen[i] = csv.getInt(i, "Punkte"); + namen[i] = csv.getString(i, "Name"); + } + } + } + + public void zeichneBalken() { + + clear(); + + // Überschrift + fill(255,255,255); + textFont(grosseSchrift); + text("Punkte", 2, 20); + textFont(kleineSchrift); + + // Alle Einträge darstellen + if (zahlen != null) { + for (int i = 0; i< zahlen.length; i++) { + + fill(20,25,165); + // aktuelle Elemente farblich hervorheben + // ---------------------------------------------------------------------- + // ToDo: Falls i dem aktuell untersuchtem oder der aktuellen Maximal- + // position entspricht, muss eine andere Farbe gewählt werden + // ---------------------------------------------------------------------- + + // Balkendiagramm zeichnen + if (zahlen[i]>=0) rect(120, 25+i*15, zahlen[i]+1, 13); + + // Beschriftung + fill(255,255,255); + text(namen[i], 2, 35+i*15); + text(""+zahlen[i], 70, 35+i*15); + } + } + } + + public int maximumsuche() { + // ------------------------------------------------------------------------------ + // ToDO: Implementiere die Maximumsuche, füge nach jeder Veränderung der + // Position des aktuellen Elements oder der Position des momentanen Maximums + // die Befehle: zeichneBalken(); und Greenfoot.delay(verzoegerung); ein. + // Als Ergebnis soll die Methode die Position des Maximums zurückgeben + // Kommentiere die Maximumsuche + // ------------------------------------------------------------------------------ + //<>// + return -1; + } + + + public boolean testen() { + boolean allesBestanden = true; + // Testfall 1 + verzoegerung = 0; //<>// + ladeTabelle("testfall1.csv"); + int m1 = maximumsuche(); + if (m1 == 12) { + System.out.println("Maximum korrekt gefunden. In Datei testfall1.csv ist der größte Wert "+ zahlen[m1]+" von "+namen[m1]+" an Position "+m1); + } else { + System.out.println("Maximum in testfall.csv nicht gefunden. Du ermittelst "+m1+" richtig wäre 12"); + allesBestanden = false; + } + // Testfall 2: negative Zahlen + ladeTabelle("testfall2.csv"); + int m2 = maximumsuche(); + if (m2 == 3) { + System.out.println("Maximum korrekt gefunden. In Datei testfall2.csv ist der größte Wert "+ zahlen[m2]+" von "+namen[m2]+" an Position "+m2); + } else { + System.out.println("Maximum in testfall2.csv nicht gefunden. Du ermittelst "+m2+" richtig wäre 3"); + allesBestanden = false; + } + // Testfall 3: Nur 1 Element + ladeTabelle("testfall3.csv"); + int m3 = maximumsuche(); + if (m3 == 0) { + System.out.println("Maximum korrekt gefunden. In Datei testfall3.csv ist der größte Wert "+ zahlen[m3]+" von "+namen[m3]+" an Position "+m3); + } else { + System.out.println("Maximum in testfall3.csv nicht gefunden. Du ermittelst "+m3+" richtig wäre 0"); + allesBestanden = false; + } + // Testfall 4: Leere Liste + ladeTabelle("testfall4.csv"); + int m4 = maximumsuche(); + if (m4 == -1) { + System.out.println("Maximum korrekt gefunden. Da die Datei keine Spieler enthält wird -1 zurückgegeben."); + } else { + System.out.println("Maximum in testfall4.csv nicht gefunden. Du ermittelst "+m4+" richtig wäre -1, da die Datei leer ist."); + allesBestanden = false; + } + return allesBestanden; + } + +} diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg13_maximumsuche/MyWorld.java b/03_vorlagen_tauschordner/02_greenfoot/alg13_maximumsuche/MyWorld.java new file mode 100644 index 0000000..ab22bde --- /dev/null +++ b/03_vorlagen_tauschordner/02_greenfoot/alg13_maximumsuche/MyWorld.java @@ -0,0 +1,36 @@ +import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot und MouseInfo) + +/** + * Ergänzen Sie hier eine Beschreibung für die Klasse MyWorld. + * + * @author (Ihr Name) + * @version (eine Versionsnummer oder ein Datum) + */ +public class MyWorld extends World +{ + + /** + * Konstruktor für Objekte der Klasse MyWorld + * + */ + public MyWorld() + { + // Erstellt eine neue Welt mit 1200x900 Pixeln + super(1000, 700, 1); + + prepare(); + } + + + /** + * Bereite die Welt für den Programmstart vor. + * Das heißt: Erzeuge die Anfangs-Objekte und füge sie der Welt hinzu. + */ + private void prepare() + { + Balkendiagramm balkendiagramm = new Balkendiagramm(); + addObject(balkendiagramm,500,350); + + } +} + diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg13_maximumsuche/Picture.java b/03_vorlagen_tauschordner/02_greenfoot/alg13_maximumsuche/Picture.java new file mode 100644 index 0000000..8df3d55 --- /dev/null +++ b/03_vorlagen_tauschordner/02_greenfoot/alg13_maximumsuche/Picture.java @@ -0,0 +1,699 @@ +import java.awt.image.*; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.BasicStroke; +import java.util.Vector; +import javax.imageio.*; +import java.io.*; +import java.awt.*; +import javax.swing.*; +import java.util.Random; +import java.awt.geom.AffineTransform; +/** + * + * Bildklasse für die Simulation von Processing-Befehlen + * + * Diese Klasse stellt ein BufferedImage bereit, in das mit Processing-Befehlen gezeichnet + * werden kann. + * Zusätzlich kann ein Bildanzeiger über jede Änderung des Bildes informiert werden, + * um "Zurück"-Befehle zu ermöglichen. Der Bildanzeiger ist entweder eine normale Java + * ScrollPane oder ein Actor aus Greenfoot. + * Die Dokumentation der einzelnen Zeichenmethoden ist der Processing-Reference + * (https://processing.org/reference/ steht unter CC-Lizenz: https://creativecommons.org/) + * entnommen und mit Deepl.com ins Deutsche übersetzt. + * + * @version 1.0 from 23.01.2019 + * @author Thomas Schaller (ZPG Informatik Klasse 9) + */ + +public class Picture{ + + // Einstellungmöglichkeiten für das Zeichnen von Rechtecken und Ellipsen + // RADIUS = Mittelpunkt+Radius wird gegeben, CENTER = Mittelpunkt und Breite/Höhe wird gegeben, + // CORNER = Linke obere Ecke + Breite/Höhe, CORNERS = Linke obere und rechte untere Ecke + public static final int RADIUS = 1; + public static final int CENTER = 2; + public static final int CORNER = 3; + public static final int CORNERS = 4; + + // gespeichertes Bild, + private BufferedImage image; + + // aktuelle Farbeinstellungen + private Color background; + private Color pencolor; + private Color fillcolor; + + // aktuelle Stiftdicke + private double stroke; + + // akkteller Koordinatenmodus von Rechtecken und Ellipsen + private int ellipseMode = CENTER; + private int rectMode = CORNER; + + // aktueller Font + private Font textfont = null; + + // muss ein Bildanzeiger benachrichtigt werden + private PictureViewer observer = null; + private boolean autorefresh = true; + + /** + * Erzeugt ein Bild mit Standardgröße 500x400 + */ + public Picture() { + this(500,400); + } + + /** + * Erzeugt ein Bild der angegeben Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public Picture(int width, int height) { + this(width,height, "D0D0D0"); + } + + /** + * Erzeugt ein Bild aus einer Datei + * @param filename Dateiname des Bildes + */ + public Picture(String filename) { + load(filename); + } + + /** + * Erzeugt ein Bild der angegebenen Größe mit festgelegtem Hintergrund + * @param width Breite des Bildes + * @param height Höhe des Bildes + * @param background Farbe des Hintergrunds + */ + public Picture(int width, int height, String background) { + this.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + this.background = decode(background); + this.pencolor = new Color(0,0,0); + this.stroke = 1; + this.fillcolor = null; + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(this.background); + g.fillRect(0,0,width-1, height-1); + } + + /** + * Legt fest, wer das Bild anzeigt. + * Diese ermöglicht die Benachrichtung des Observers, wenn sich das Bild ändert. + * @param observer Anzeiger des Bildes + */ + + public void setObserver(PictureViewer observer) { + this.observer= observer; + } + + /** + * Direktes Setzen des Bildes (für interne Zwecke) + * @param b Bild, das gespeichert werden soll. + */ + public void setImage(BufferedImage b) { + image = b; + } + + /** + * Direktes Abfragen des Bildes (für interne Zwecke) + * @return Bild, das gerade gespeichert ist. + */ + public BufferedImage getImage() { + return image; + } + + /** + * Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + * Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + * der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu. + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public void size(int width, int height){ + pushImage(); + this.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(background); + g.fillRect(0,0,width-1, height-1); + } + + /** + * Liefert die Breite des Bildes zurück. + * @return Breite des Bildes + */ + public int getWidth() { + return image.getWidth(); + } + + /** + * Liefert die Höhe des Bildes zurück. + * @return Höhe des Bildes + */ + public int getHeight() { + return image.getHeight(); + } + + + /** + * Erzeugt eine Kopie des Bildes und übergibt sie an den Observer (falls existent), damit dieser die Versionen speichern kann + */ + private void pushImage() { + if(observer != null) { + observer.pushImage(); + } + } + + + /** + * Legt fest, ob nach jedem Zeichenbefehl automatisch das Bild auch in + * der Oberfläche aktualisiert wird. Die Einstellung "false" beschleunigt + * das Zeichnen aufwändiger Bilder und verhindert "Flackern". + * Das Neuzeichnen kann durch die Methode "refresh" gezielt ausgelöst werden. + * @param autorefresh true = nach jedem Zeichenbefehl die Anzeige aktualisieren, false= nur durch die Methode refresh neu zeichnen + */ + public void setAutoRefresh(boolean autoRefresh) { + this.autorefresh = autoRefresh; + } + + + /** + * Auch die anzeigenden Klasse wird zum Neuzeichnen aufgefordert. + */ + private void repaint() { + if(observer != null && autorefresh) { + observer.repaint(); + } + } + + /** + * Auch die anzeigenden Klasse wird zum Neuzeichnen aufgefordert. + */ + public void refresh() { + if(observer != null) { + observer.repaint(); + } + } + + // ----------------------------------------- Zeichenfunktionen ----------------------------------------------- + /** + * Löscht den Inhalt des Bildes. + * Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt. + */ + + public void clear(){ + pushImage(); + image = new BufferedImage(image.getWidth(), image.getHeight(), image.getType()); + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(background); + g.fillRect(0,0,image.getWidth()-1, image.getHeight()-1); + repaint(); + } + + /** + * Konvertiert die in einem bestimmten Modus gegebenen Koordinaten in die Java-übliche Links_Oben_Breite_Höhe Version + * Die Änderungen werden direkt im Array vorgenommen + * @param coord Array mit vier Koordinateneinträgen im gegebenen Modus + * @param mode Modus der Koordinaten (CORNER, CORNERS, RADIUS oder CENTER) + */ + private void convert(int[] coord, int mode) { + switch(mode) { + case CORNER: break; + case CORNERS: coord[2] -= coord[0]; coord[3] -= coord[1]; break; + case RADIUS: coord[2] *= 2; coord[3] *=2; + case CENTER: coord[0] -= coord[2]/2; coord[1] -= coord[3]/2; + } + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + * Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + * Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void rectMode(int mode) { + rectMode = mode; + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + * Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + * Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als Breite und Höhe der Form. + * ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void ellipseMode(int mode) { + ellipseMode = mode; + } + + + + /** + * Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + * Um eine Linie einzufärben, verwenden Sie die {@link #stroke(int, int, int) stroke()} Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + * Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + * {@link #strokeWeight(double) strokeWeight()} geändert werden. + * @param x1 x-Koordinate des 1. Punktes + * @param y1 y-Koordinate des 1. Punktes + * @param x2 x-Koordinate des 2. Punktes + * @param y2 y-Koordinate des 2. Punktes + */ + public void line(int x1, int y1, int x2, int y2) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + if (stroke > 0) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawLine(x1, y1, x2, y2); + } + repaint(); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, rectMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillRect(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawRect(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, ellipseMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillOval(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawOval(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + int px[] = {x1, x2, x3}; + int py[] = {y1, y2, y3}; + polygon(px, py); + + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + + int px[] = {x1, x2, x3, x4}; + int py[] = {y1, y2, y3, y4}; + polygon(px, py); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + + public void polygon(int[] x, int[] y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(fillcolor != null) { + + g.setColor(fillcolor); + g.fillPolygon(x,y, y.length); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawPolygon(x, y, x.length); + } + repaint(); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + ellipse(x,y,1, 1); + + } + + // ----------------------------------------- Schriftdarstellung ----------------------------------------------- + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param s Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String s, int x, int y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(pencolor != null) { + g.setColor(fillcolor); + g.setStroke(new BasicStroke((float) stroke)); + g.setFont(textfont); + g.drawString(s, x, y); + } + repaint(); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + this.textfont = font; + } + + + // ----------------------------------------- Farbfestlegungen ----------------------------------------------- + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(String color) { + try{ + return new Color( + Integer.valueOf( color.substring( 0, 2 ), 16 ), + Integer.valueOf( color.substring( 2, 4 ), 16 ), + Integer.valueOf( color.substring( 4, 6 ), 16 ) ); + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(int color) { + try{ + if(color >=0 && color < 256) { + return new Color(color,color,color); + } else { + int r = color / 0x010000 % 0xFF; + int g = color / 0x000100 % 0xFF; + int b = color % 0xFF; + System.out.println(""+r+","+g+","+b); + return new Color(r, g, b ); + } + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + this.pencolor = decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + this.pencolor=decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + this.pencolor = new Color(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + this.pencolor = null; + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + this.stroke = width; + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + this.fillcolor = decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + this.fillcolor=decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + this.fillcolor = new Color(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + this.fillcolor = null; + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + if(c < 256) { + this.background=new Color(c,c,c); + } else { + int r = c / 0x010000; + int g = c / 0x000100 % 0xFF; + int b = c % 0xFF; + this.background= new Color(r, g, b ); + } + + this.clear(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + this.background=new Color(r,g,b); + this.clear(); + } + + +// ----------------------------------------- Dateioperationen ----------------------------------------------- + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + try{ + this.image = ImageIO.read(new File(filename)); + this.background = decode("D0D0D0"); + this.pencolor = new Color(0,0,0); + this.fillcolor = null; + this.stroke = 1; + this.repaint(); + + } catch(Exception e) { + System.out.println("Fehler beim Einlesen der Bilddatei"); + } + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + try{ + String[] fn = filename.split("\\."); + if (fn.length== 1) { + ImageIO.write(image, "PNG", new File(filename+".png")); + } else { + + if (fn.length == 2 && (fn[1].toUpperCase().equals("PNG") || + fn[1].toUpperCase().equals("GIF"))){ + ImageIO.write(image, fn[1], new File(filename)); + }else { + System.out.println("Unbekanntes Bildformat"); + } + } + + } catch(Exception e) { + System.out.println("Fehler beim Speichern"); + } + } + + +// ----------------------------------------- Sonstiges ----------------------------------------------- + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + + public Color[][] getPixelArray() { + Color[][] pixel = new Color[image.getWidth()][image.getHeight()]; + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + pixel[x][y] = new java.awt.Color(image.getRGB(x,y)); + } + } + return pixel; + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + size(pixel.length,pixel[0].length); + Graphics2D g = (Graphics2D) image.getGraphics(); + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + g.setColor(pixel[x][y]); + g.fillRect(x, y, 1, 1); + } + } + repaint(); + } + + /** + * Hilfsfunktion zum Verzögern der Ausgabe + * @param millis Wartezeit in Millisekunden + */ + public void delay(int millis) { + try{ + Thread.sleep(millis); + + } catch(Exception e) { + + } + + } + + + +} diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg13_maximumsuche/PictureViewer.java b/03_vorlagen_tauschordner/02_greenfoot/alg13_maximumsuche/PictureViewer.java new file mode 100644 index 0000000..ecbb521 --- /dev/null +++ b/03_vorlagen_tauschordner/02_greenfoot/alg13_maximumsuche/PictureViewer.java @@ -0,0 +1,499 @@ +import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot und MouseInfo) +import java.awt.image.*; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.BasicStroke; +import java.awt.Font; +import java.util.Vector; +import java.awt.Color; +import javax.imageio.*; +import java.io.*; + +/** + * Der PictureViewer ist ein Actor, der in der Lage ist ein + * Objekt der Klasse Picture anzuzeigen. Zusätzlich können + * mehrere Verarbeitungsschritte gespeichert werden, um ein + * "zurück"-Funktion zu ermöglichen. + * + * @author Thomas Schaller + * @version V1.0 vom 10.02.2019 + */ +public class PictureViewer extends Actor +{ + public static final int FIT = -1; + public static final int NORMAL = 1; + + private static final int ANZ_BACK = 0; + + private double zoom; + protected Picture picture = null; + private Vector history; + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der Größe 500x400 + */ + public PictureViewer() { + this(500,400); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public PictureViewer(int width, int height) { + this(width,height, "D0D0D0"); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + * @param background Farbe des Hintergrunds als HEX-String (z.B. "FF3A45") + */ + public PictureViewer(int width, int height, String background) { + picture = new Picture(width,height, background); + picture.setObserver(this); + this.history = new Vector(); + this.zoom = NORMAL; + repaint(); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild aus einer Bilddatei + * @param filename Name des Bildes + */ + public PictureViewer(String filename) { + picture = new Picture(filename); + picture.setObserver(this); + this.history = new Vector(); + this.zoom = NORMAL; + repaint(); + } + + /** + * Speichert das übergebene Bild in der History. + * @param b zu speicherndes Bild + */ + public void pushImage() { + if( this.ANZ_BACK > 0) { + if(history.size() == this.ANZ_BACK) { + history.removeElementAt(0); + } + + BufferedImage b = new BufferedImage(picture.getWidth(), picture.getHeight(), picture.getImage().getType()); + Graphics g = b.getGraphics(); + g.drawImage(picture.getImage(), 0, 0, null); + g.dispose(); + + history.add(b); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + private void popImage() { + int anz = history.size(); + if(anz>0) { + BufferedImage i = history.get(anz-1); + history.removeElementAt(anz-1); + picture.setImage(i); + repaint(); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + public void back() { + popImage(); + } + + /** + * Setzt den Zoom-Faktor für das Bild. + * Als Zoomfaktor sind auch die Konstanten Bildanzeiger.FIT (auf Bildschirmgröße zoomen) und Bildanzeiger.NORMAL (100%) möglich. + * @param factor Zoomfaktor (1.0 = 100%). + */ + public void setZoom(double zoom) { + this.zoom = zoom; + repaint(); + } + + /** + * Setzt die automatische Neuanzeige des Bildes. + * Mit dieser Methode kann man einstellen, ob nach jedem Zeichenbefehl + * die Anzeige auf dem Bildschirm aktualisiert werden soll. Bei sehr + * vielen Zeichenbefehlen wird die Ausgabe dadurch sehr langsam. Es reicht + * eine Anzeige am Ende der Zeichenbefehle. Rufen Sie dann für das Neuzeichnen + * die Methode refresh() auf. + * @param autoRefresh true, wenn nach jedem Zeichenbefehl die Anzeige aktualisiert werden soll. + */ + public void setAutoRefresh(boolean autoRefresh) { + picture.setAutoRefresh(autoRefresh); + } + + /** + * Sorgt für die Aktualisierung der Bildschrimanzeige. Das aktuelle Bild + * wird dadurch angezeigt. Durch Einstellung von autoRefresh kann die + * Anzeige automatisiert werden. + */ + public void refresh() { + repaint(); + } + + /** + * Setzt das angezeigt Bild neu und beachtet dabei den Zoomfaktor. + */ + public void repaint() { + double faktor = zoom; + + if (zoom == FIT) { + double faktorw = (double) this.getWorld().getWidth() / picture.getWidth(); + double faktorh = (double) this.getWorld().getHeight() / picture.getHeight(); + faktor = Math.min(faktorw, faktorh); + } + int gfi_width = (int) (picture.getWidth()*faktor); + int gfi_height = (int) (picture.getHeight()*faktor); + + setImage(new GreenfootImage(gfi_width, gfi_height)); + Graphics2D g = (Graphics2D) this.getImage().getAwtImage().getGraphics(); + g.drawImage(picture.getImage(),0,0,gfi_width, gfi_height, 0, 0, picture.getWidth(), picture.getHeight(), null); + g.setColor(new java.awt.Color(0,0,0)); + g.setStroke(new BasicStroke((float) 1)); + g.drawRect(0,0,gfi_width-1, gfi_height-1); + + } + + // Wrappermethoden + /** + * Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + * Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + * der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu. + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public void size(int width, int height){ + picture.size(width, height); + } + + /** + * Liefert die Breite des Bildes zurück. + * @return Breite des Bildes + */ + public int getImageWidth() { + return picture.getWidth(); + } + + /** + * Liefert die Höhe des Bildes zurück. + * @return Höhe des Bildes + */ + public int getImageHeight() { + return picture.getHeight(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + picture.background(c); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + picture.background(r,g,b); + } + + /** + * Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + * Um eine Linie einzufärben, verwenden Sie die {@link #stroke(int, int, int) stroke()} Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + * Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + * {@link #strokeWeight(double) strokeWeight()} geändert werden. + * @param x1 x-Koordinate des 1. Punktes + * @param y1 y-Koordinate des 1. Punktes + * @param x2 x-Koordinate des 2. Punktes + * @param y2 y-Koordinate des 2. Punktes + */ + public void line(int x1, int y1, int x2, int y2) { + picture.line(x1,y1,x2,y2); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + picture.rect(a,b,c,d); + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + picture.ellipse(a,b,c,d); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + picture.triangle(x1,y1,x2,y2,x3,y3); + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + picture.quad(x1,y1,x2,y2,x3,y3,x4,y4); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + public void polygon(int[] x, int[] y) { + picture.polygon(x,y); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + picture.point(x,y); + + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + * Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + * Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void rectMode(int mode) { + picture.rectMode(mode); + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + * Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + * Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als Breite und Höhe der Form. + * ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void ellipseMode(int mode) { + picture.ellipseMode(mode); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + picture.stroke(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + picture.noStroke(); + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + picture.strokeWeight(width); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + picture.fill(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + picture.noFill(); + } + + /** + * Löscht den Inhalt des Bildes. + * Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt. + */ + public void clear(){ + picture.clear(); + } + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + picture.load(filename); + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + picture.save(filename); + } + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param t Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String t, int x, int y) { + picture.text(t,x,y); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + picture.textFont(font); + } + + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + public Color[][] getPixelArray() { + return picture.getPixelArray(); + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + picture.setPixelArray(pixel); + } + + +} + diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg13_maximumsuche/README.TXT b/03_vorlagen_tauschordner/02_greenfoot/alg13_maximumsuche/README.TXT new file mode 100644 index 0000000..4b8fadd --- /dev/null +++ b/03_vorlagen_tauschordner/02_greenfoot/alg13_maximumsuche/README.TXT @@ -0,0 +1,14 @@ +------------------------------------------------------------------------ +Dies ist die README-Datei des Projekts. Hier sollten Sie Ihr Projekt +beschreiben. +Erzählen Sie dem Leser (jemand, der nichts über dieses Projekt weiss), +alles, was er/sie wissen muss. Üblicherweise sollte der Kommentar +zumindest die folgenden Angaben umfassen: +------------------------------------------------------------------------ + +PROJEKTBEZEICHNUNG: +PROJEKTZWECK: +VERSION oder DATUM: +WIE IST DAS PROJEKT ZU STARTEN: +AUTOR(EN): +BENUTZERHINWEISE: diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg13_maximumsuche/Table.java b/03_vorlagen_tauschordner/02_greenfoot/alg13_maximumsuche/Table.java new file mode 100644 index 0000000..ee5a211 --- /dev/null +++ b/03_vorlagen_tauschordner/02_greenfoot/alg13_maximumsuche/Table.java @@ -0,0 +1,894 @@ +/** + * Die Klasse Table vereinfacht den Zugriff auf CSV-Dateien. + * Die Klassen Table und TableRow ermöglichen einen einfachen Zugriff auf tabellenbasierte + * Dokumente. + * + * @author Thomas Schaller + * @version 1.0 vom 01.02.2019 + */ + +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.ArrayList; +import java.io.*; +import java.util.Scanner; + +import org.jdom.Document; +import org.jdom.Element; +import org.jdom.Attribute; +import org.jdom.JDOMException; +import org.jdom.input.SAXBuilder; +import org.jdom.output.XMLOutputter; +import org.jdom.output.Format; + +public class Table +{ + // Standardtrennzeichen für Spalten + private static final char DEFAULT_SEPARATOR = ';'; + // Standardmarkierung für Texte + private static final char DEFAULT_QUOTE = '"'; + // Standardtrennzeichen für Dezimalzahlen + private static final char DEFAULT_COMMA = ','; + + // mögliche Spaltentypen + private static final String UNKNOWN ="UNKOWN"; + private static final String INT = "INTEGER"; + private static final String DOUBLE = "DOUBLE"; + private static final String FLOAT = "FLOAT"; + + // interne Verwaltung des Dokuments als JDOM-Document-Objekt + private Document doc; + // Verweis auf Element für Kopfzeile + private Element header; + // Ende Attribute + + /** + * Erzeugt leeres Tabellen-Dokument. + */ + public Table() { + this.doc = new Document(); + doc.setRootElement(new Element("CSV-Data")); + this.header = new Element("Header"); + doc.getRootElement().addContent(header); + } + + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei und erstellt ein Tabellenobjekt mit seinen Werten. + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public Table(String filename, String options, char separator, char quote) { + loadCSV(filename, options, separator, quote); + } + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei und erstellt ein Tabellenobjekt mit seinen Werten (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + */ + public Table(String filename, String options) { + loadCSV(filename, options); + } + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei ohne Kopfzeile und erstellt ein Tabellenobjekt mit seinen Werten (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public Table(String filename) { + loadCSV(filename); + } + + // Anfang Methoden + /** + * Liest den Inhalt einer CSV-Datei ohne Kopfzeile (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public void loadCSV(String filename) { + loadCSV(filename, ""); + } + + /** + * Liest den Inhalt einer CSV-Datei (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + */ + public void loadCSV(String filename, String options) { + loadCSV(filename, options, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** + * Liest den Inhalt einer CSV-Datei. + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public void loadCSV(String filename, String options, char separator, char quote) { + doc = new Document(); + doc.setRootElement(new Element("CSV-Data")); + header = new Element("Header"); + doc.getRootElement().addContent(header); + try { + File f = new File(filename); + Scanner scanner = new Scanner(new File(filename)); + if(options.toLowerCase().contains("header") && scanner.hasNext()) { + List entries = parseLine(scanner.nextLine(), separator, quote); + int i= 0; + for(String s : entries) { + Element entry = new Element("Column"); + header.addContent(entry); + entry.setText(s); + entry.setAttribute("type", "unknown"); + i++; + } + } + + List cols = header.getChildren(); + + while (scanner.hasNext()) { + Element line = new Element("Row"); + doc.getRootElement().addContent(line); + List entries = parseLine(scanner.nextLine(), separator, quote); + int i= 0; + + for(String s : entries) { + + if(i==cols.size()) { + Element entry = new Element("Column"); + entry.setAttribute("type", "unknown"); + header.addContent(entry); + cols = header.getChildren(); + } + + Element entry = new Element("Entry"); + entry.setText(s); + line.addContent(entry); + i++; + } + } + scanner.close(); + + } catch (Exception e) { + System.out.println("Fehler beim Lesen der CSV-Datei"); + } + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei ohne Kopfzeile (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public void saveCSV(String filename) { + saveCSV(filename, ""); + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthalten, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile haben soll, + * dann lassen Sie einfach die Option "header" weg. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile haben soll. + * @param filename Dateiname der CSV-Datei. + */ + public void saveCSV(String filename, String options) { + saveCSV(filename, options, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei. + * Wenn die Datei eine Kopfzeile enthalten, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile haben soll, + * dann lassen Sie einfach die Option "header" weg. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile haben soll. + * @param filename Dateiname der CSV-Datei. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public void saveCSV(String filename, String options, char separator, char quote){ + try{ + File f = new File(filename); + PrintStream outputFile = new PrintStream (f); + System.out.println("Speicher in : "+f.getAbsolutePath()); + List columns = header.getChildren(); + String sq = ""+quote; + String ss = ""+separator; + if(quote =='"') sq = "\""; + if(separator =='"') ss = "\""; + + if(options.toLowerCase().contains("header")) { + String h = ""; + for(Element c : columns) { + h += ss + sq + c.getText()+sq; + } + outputFile.println(h.substring(1)); + } + for(int i = 0; i parseLine(String cvsLine) { + return parseLine(cvsLine, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** HIlfsfunktion für die Analyse einer Dateizeile + * @param cvsLine Zeile aus der Datei + * @param sparator Trennzeichen für die Spalten + * @return Liste von String für die einzelnen Spalten + */ + private List parseLine(String cvsLine, char separator) { + return parseLine(cvsLine, separator, DEFAULT_QUOTE); + } + + /** HIlfsfunktion für die Analyse einer Dateizeile + * @param cvsLine Zeile aus der Datei + * @param sparator Trennzeichen für die Spalten + * @param customQuote Kennung für Strings + * @return Liste von String für die einzelnen Spalten + */ + private List parseLine(String cvsLine, char separator, char customQuote) { + + List result = new ArrayList<>(); + + //if empty, return! + if (cvsLine == null && cvsLine.isEmpty()) { + return result; + } + + //ggf. Default-Value laden + if (customQuote == ' ') { + customQuote = DEFAULT_QUOTE; + } + + if (separator == ' ') { + separator = DEFAULT_SEPARATOR; + } + + StringBuffer curVal = new StringBuffer(); + boolean inQuotes = false; + boolean startCollectChar = false; + boolean doubleQuotesInColumn = false; + + char[] chars = cvsLine.toCharArray(); + + for (char ch : chars) { + + if (inQuotes) { // aktueller Text ist in Quotes eingeschlossen + startCollectChar = true; + + if (ch == customQuote) { // Quotes werden beendet, aber Achtung bei "" => Metazeichen + inQuotes = false; + if (ch == '\"') { + doubleQuotesInColumn = true; + } + + } else { + + if (ch == '\"' && !doubleQuotesInColumn) { + doubleQuotesInColumn = true; + } else { + curVal.append(ch); + doubleQuotesInColumn = false; + } + + } + } else { + if (ch == customQuote) { + + inQuotes = true; + + //Fixed : allow "" in empty quote enclosed + if (ch == '\"'){ + if(doubleQuotesInColumn) { + curVal.append('"'); + doubleQuotesInColumn = false; + } else doubleQuotesInColumn = true; + + + } + } + else { + doubleQuotesInColumn = false; + if (ch == separator) { + + result.add(curVal.toString()); + + curVal = new StringBuffer(); + startCollectChar = false; + + } else if (ch == '\r') { + //ignore LF characters + continue; + } else if (ch == '\n') { + //the end, break! + break; + } else { + curVal.append(ch); + } + } + } + + } + result.add(curVal.toString()); + return result; + } + + /** + * Sucht die Nummer einer durch Namen gegebenen Spalte. + * @param name Name der Spalte + * @return Nummer der Spalte + */ + + private int findColumnNumber(String name) { + List columns = header.getChildren(); + int i = 0; + for(Element c : columns) { + if (c.getText().toLowerCase().equals(name.toLowerCase())) { + return i; + + } + i++; + } + return -1; + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an. + */ + public void addColumn() { + Element entry = new Element("Column"); + entry.setAttribute("type", Table.UNKNOWN); + header.addContent(entry); + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an und benennt sie. + * @param title Bezeichnung der Spalte + */ + public void addColumn(String title) { + addColumn(); + Element nc = ((List)(header.getChildren())).get(header.getChildren().size()-1); + nc.setText(title); + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an und benennt und typisiert sie. + * @param title Bezeichnung der Spalte + * @param type Typ der Spalte (UNKNOWN, DOUBLE, INTEGER, FLOAT) + */ + public void addColumn(String title, String type) { + addColumn(title); + Element nc = ((List)(header.getChildren())).get(header.getChildren().size()-1); + nc.setAttribute("type", type); + } + + /** + * Löscht eine Spalte. + * @param i Nummer der Spalte. + */ + public void removeColumn(int i) { + List lines = doc.getRootElement().getChildren(); + for(Element l : lines) { + if(l.getChildren().size()>i) l.removeContent(i); + } + } + + /** + * Löscht eine Spalte + * @param name Name der Spalte + */ + public void removeColumn(String name) { + try{ + removeColumn(findColumnNumber(name)); + } catch(Exception e) { System.out.println("Unbekannter Spaltenname");} + } + + /** + * Liefert die Anzahl der Spalten in der Tabelle + * @return Anzahl der Spalten + */ + public int getColumnCount() { + return header.getChildren().size(); + } + + /** + * Liefert die Anzahl der Zeilen in der Tabelle + * @return Anzahl der Zeilen + */ + public int getRowCount() { + return doc.getRootElement().getChildren().size()-1; + } + + /** + * Löscht alle Zeilen der Tabelle. + * Die Spaltenüberschriften und Typen bleiben erhalten. + */ + public void clearRows() { + doc.getRootElement().removeChildren("Row"); + } + + /** + * Fügt eine neue Zeile an das Ende der Tabelle an. + * @return ein TableRow-Objekt für diese neue Zeile + */ + public TableRow addRow() { + Element row = new Element("Row"); + doc.getRootElement().addContent(row); + return new TableRow(doc, row); + } + + /** + * Löscht eine Zeile + * @param i Nummer der Zeile + */ + public void removeRow(int i) { + if(i rows = doc.getRootElement().getChildren(); + return new TableRow(doc, rows.get(i+1)); + } + return null; + } + + /** + * Liefert die ganze Tabelle als Array von TableRow-Objekten + * @return Array von TableRow-Objekten + */ + public TableRow[] rows() { + TableRow[] rows = new TableRow[getRowCount()]; + for(int i = 0; i < getRowCount(); i++) { + rows[i] = getRow(i); + } + return rows; + } + + /** + * Liefert den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param column Spaltennummer + * @return Wert der Zelle + */ + public int getInt(int row, int column) { + return getRow(row).getInt(column); + } + + /** + * Liefert den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param name Name der Spalte + * @return Wert der Zelle + */ + public int getInt(int row, String name) { + return getRow(row).getInt(name); + } + + /** + * Setzt den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param column Spaltennummer + * @param value neuer Wert der Zelle + */ + public void setInt(int row, int column,int value) { + getRow(row).setInt(column, value); + } + + /** + * Setzt den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(int row, String name, int value) { + getRow(row).setInt(name, value); + } + + /** + * Liefert alle Werte einer Zeile als Integer-Array. + * @param row Nummer der Zeile + * @return int-Array, dass alle Werte der Zeile enthält + */ + public int[] getIntRow(int row) { + try{ + TableRow trow = getRow(row); + int anz = getColumnCount(); + int[] r = new int[anz]; + for(int i=0; i) (header.getChildren())).get(i).getText(); + } else { + return ""; + } + } + + /** + * Liefert die Nummer einer Spalte + * @param name Name der Spalte + * @return Nummer der Spalte + */ + public int getColumn(String name) { + List columns = header.getChildren(); + int i = 0; + while (i < columns.size()) { + if (columns.get(i).getText().toLowerCase().equals(name.toLowerCase())) { + return i; + } + i++; + } // end of while + return -1; + } + + + /** + * Erzeugt eine neue Zeile mit i Spalten + * Wenn bisher nicht genügend Spalten vorhanden sind, werden automatisch neue Spalten hinzugefügt (auch zum Header) + * @param i Anzahl der Spalten + */ + private Element buildRow(int i) { + List columns = header.getChildren(); + Element entry=null; + for(int j=0; j<=i; j++) { + + if(j==columns.size()) { + Element h = new Element("Column"); + h.setAttribute("type", "unknown"); + header.addContent(h); + columns = header.getChildren(); + } + if(j==current.getChildren().size()) { + entry = new Element("Entry"); + current.addContent(entry); + + } + + } + return entry; + + } + + /** + * Erzeugt eine neue Zeile. + * Es werden genügend Spalten erzeugt, dass ein Wert in Spalte "name" eingetragen werden kann + * @param name Name der Spalte + */ + private Element buildRow(String name) { + List columns = header.getChildren(); + int i = 0; + for(Element c: columns) { + + if(c.getText().toLowerCase().equals(name.toLowerCase())) { + return buildRow(i); + } + i++; + } + return null; + + } + + /** + * Liefert den Wert einer Zelle als String + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public String getString(int i) { + if(i >= current.getContent().size()) return ""; + Element e = (Element) current.getContent(i) ; + if(e!=null) { + return e.getText(); + } else { + return ""; + } + } + + /** + * Liefert den Wert einer Zelle als String + * @param name Name der Spalte + * @return Wert der Zelle + */ + public String getString(String name) { + return getString(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als String + * @param i Nummer der Spalte + * @param text neuer Wert der Zelle + */ + public void setString(int i, String text) { + + Element e = buildRow(i); + if(e!=null) e.setText(text); + } + + /** + * Setzt den Wert einer Zelle als String + * @param name Name der Spalte + * @param text neuer Wert der Zelle + */ + public void setString(String name, String text) { + Element e = buildRow(name); + if(e!=null) e.setText(text); + } + + + /** + * Liefert den Wert einer Zelle als Int-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public int getInt(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Integer.parseInt(e.getText()); + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Int-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public int getInt(String name) { + return getInt(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Int-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(int i,int value) { + + Element e = buildRow(i); + if(e!=null) e.setText(""+value); + } + + /** + * Setzt den Wert einer Zelle als Int-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(String name, int value) { + Element e = buildRow(name); + if(e!=null) e.setText(""+value); + } + + /** + * Liefert den Wert einer Zelle als Float-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public float getFloat(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Float.parseFloat(e.getText().replace(",",".")); + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Float-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public float getFloat(String name) { + return getFloat(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Float-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setFloat(int i,float value) { + + Element e = buildRow(i); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Setzt den Wert einer Zelle als Float-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setFloat(String name, float value) { + Element e = buildRow(name); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Liefert den Wert einer Zelle als Double-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public double getDouble(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Double.parseDouble(e.getText().replace(",",".")); + + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Double-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public double getDouble(String name) { + return getDouble(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Double-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setDouble(int i,double value) { + + Element e = buildRow(i); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Setzt den Wert einer Zelle als Double-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setDouble(String name, double value) { + Element e = buildRow(name); + if(e!=null) e.setText(format.format(value)); + } + +} diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg13_maximumsuche/XML.java b/03_vorlagen_tauschordner/02_greenfoot/alg13_maximumsuche/XML.java new file mode 100644 index 0000000..c06c490 --- /dev/null +++ b/03_vorlagen_tauschordner/02_greenfoot/alg13_maximumsuche/XML.java @@ -0,0 +1,637 @@ +/** + * Klasse zum Vereinfachten Zugriff auf XML-Dokumente + * Diese Klasse ist für den Einsatz in der Schule gedacht und soll den Schülern + * einen einfachen Zugriff auf XML-Dokumente ermöglichen. Die zur Verfügung + * stehenden Befehle sind wie in Processing realisiert. + * Dabei ist jeder Teilbaum des Dokuments wieder als XML-Objekt zugreifbar, das + * intern auf die gleiche XML-Dokumentstruktur zugreift. + * Dies ermöglicht bei unsachgemäßem Gebrauch die XML-Struktur zu zerstören. Im + * normalen Gebrauch sollte dies aber nicht relevant sein. + * + * Benötigt: jdom-1.1.3.jar + + * @author Thomas Schaller + * @version 1.0 vom 31.01.2019 + */ +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.ArrayList; +import java.io.*; + +import org.jdom.Document; +import org.jdom.Element; +import org.jdom.Attribute; +import org.jdom.JDOMException; +import org.jdom.input.SAXBuilder; +import org.jdom.output.XMLOutputter; +import org.jdom.output.Format; + +public class XML { + // Anfang Attribute + // XML-Dokumentstruktur + private Document doc; + // Zeiger auf das aktuelle Element + private Element current; + // Ende Attribute + + /** + * Erzeugt ein leeres XMLDokument + */ + public XML() { + this.doc = new Document(); + this.current = null; + } + + /** + * Erzeugt ein XML-Dokument aus einer Datei + * @param filename Dateiname der XML-Datei + */ + public XML(String filename) { + loadXML(filename); + } + + /** + * interner Konstruktor, um ein XML Objekt zu erzeugen, das auf einen bestimmten Knoten verweist + * @param doc die XML-Dokumentstruktur + * @param current Zeiger auf das aktuelle Element + */ + private XML(Document doc, Element current) { + this.doc = doc; + this.current = current; + } + + // Anfang Methoden + /** Öffnet das durch den Dateinamen gegebene Dokument + * @param filename Dateiname des XML-Files + */ + public void loadXML(String filename) { + doc = null; + File f = new File(filename); + + try { + // Das Dokument erstellen + SAXBuilder builder = new SAXBuilder(); + doc = builder.build(f); + + } catch (JDOMException e) { + e.printStackTrace(); + + } catch (IOException e) { + e.printStackTrace(); + } + // Zeiger im Baum auf Root-Element + current = doc.getRootElement(); + } + + /** Speichert den XML-Baum im angegebenen Dateinamen + * @param filename Dateiname des XML-Files + */ + public void saveXML(String filename) { + try { + // new XMLOutputter().output(doc, System.out); + XMLOutputter xmlOutput = new XMLOutputter(); + + // display nice nice + xmlOutput.setFormat(Format.getPrettyFormat()); + File f = new File(filename); + FileOutputStream outputFile = new FileOutputStream(f); + System.out.println("Speicher in : "+f.getAbsolutePath() ); + xmlOutput.output(doc, outputFile); + outputFile.close(); + System.out.println("File Saved!"); + } catch (IOException io) { + System.out.println(io.getMessage()); + } + + } + + //----------------------------------------------- Zeigerbewegungen -------------------------------------------------- + /** + * liefert ein XML-Objekt, das auf den Vaterknoten des aktuellen Elements zeigt. + * @return Vater des aktuellen Objekts. + */ + public XML getParent() { + if(current != null) { + Element parent = current.getParentElement(); + if (parent == null) { + return null; + } else { + return new XML(doc, parent); + } + } + return null; + } + + /** + * Überprüft, ob das Element irgendwelche Kinder hat oder nicht, und gibt das Ergebnis als boolean zurück. + * @return true, wenn Kinder vorhanden sind, sonst false + */ + public boolean hasChildren() { + if (current == null) { + return doc.hasRootElement(); + } else { + return current.getChildren().size()>0; + } + } + + /** + * Ermittelt die Namen aller Kinder des Elements und gibt die Namen als ein Array von Strings zurück. + * Dies ist dasselbe wie das Durchlaufen und Aufrufen von getName() auf jedem untergeordneten Element einzeln. + * @return Liste aller Namen der Kinder + */ + public String[] listChildren() { + if (current == null) { + if(doc.hasRootElement()) { + String[] names = new String[0]; + names[0] = doc.getRootElement().getName(); + return names; + } else { + return null; + } + } else { + List ch_element = current.getChildren(); + String[] names = new String[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + names[i] = ch_element.get(i).getName(); + } + return names; + } + } + + /** + * Liefert alle Kinder des Elements als Array von XML-Objekten. + * @return Array der Kinder als XML-Objekte + */ + public XML[] getChildren() { + if (current == null) { + if(doc.hasRootElement()) { + XML[] ch_xml = new XML[1]; + ch_xml[0] = new XML(doc, doc.getRootElement()); + return ch_xml; + } else { + return null; + } + } else { + List ch_element = current.getChildren(); + XML[] ch_xml = new XML[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + ch_xml[i] = new XML(doc, ch_element.get(i)); + } + return ch_xml; + } + } + + /** + * Liefert bestimmte Kinder des Elements als Array von XML-Objekten. + * Die Methode gibt dabei alle Kinder zurück, die dem angegebenen Namen entsprechen. + * @param name Name der gesuchten Kind-Objekte + * @return Array der Kinder als XML-Objekte + */ + public XML[] getChildren(String name) { + if (current == null) { + if(doc.hasRootElement()) { + XML[] ch_xml = new XML[1]; + ch_xml[0] = new XML(doc, doc.getRootElement()); + if(doc.getRootElement().getName().equals(name)){ + return ch_xml; + } else { + return null; + } + } else { + return null; + } + } else { + List ch_element = current.getChildren(name); + XML[] ch_xml = new XML[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + ch_xml[i] = new XML(doc, ch_element.get(i)); + } + return ch_xml; + } + } + + /** + * Liefert das erste Kind des Elements mit einem bestimmten Namen. + * Die Methode gibt das erste Kind zurück, das dem angegebenen Namen entsprechen. + * @param name Name des gesuchten Kind-Objektes + * @return Kind als XML-Objekt + */ + + public XML getChild(String name) { + if (current == null) { + Element e = doc.getRootElement(); + if (e.getName().equals(name)) { + return new XML(doc, e); + } else { + return null; + } + } else { + String[] names = name.split("/"); + Element e = current; + int i = 0; + while(i < names.length) { + e = e.getChild(names[i]); + if (e==null) return null; + i++; + } + return new XML(doc, e); + } + } + + /** + * Liefert das i. Kind des Elements. + * Die Methode gibt das i. Kind des aktuellen Elements zurück. + * @param i Nummer des Kindes + * @return Kind als XML-Objekt + */ + public XML getChild(int i) { + if (current == null) { + return new XML(doc, doc.getRootElement()); + } else { + List ch_element = current.getChildren(); + if (i>=ch_element.size()) return null; + return new XML(doc, ch_element.get(i)); + } + } + + //--------------------------------------------------- Methoden für das aktuelle Element ------------------------------------------------- + /** + * Frage den Namen des aktuellen Elements ab + * @return Namen des Elements + */ + public String getName() { + if (current==null) return ""; + return current.getName(); + } + + /** + * Setze den Namen des aktuellen Elements. + * @param name Neuer Name des Elements + */ + public void setName(String name) { + if (current==null) return; + current.setName(name); + } + + /** + * liefert die Anzahl der Attribute eines Elements. + * @return Anzahl des Attribute + */ + public int getAttributeCount() { + if (current == null) return 0; + return current.getAttributes().size(); + } + + /** + * liefert zurück, ob das aktuelle Element Attribute hat . + * @return true, wenn es Attribute gibt + */ + public boolean hasAttribute() { + if (current == null) return false; + return current.getAttributes().size()>0; + } + + /** + * Ruft alle Attribute des angegebenen Elements ab und gibt sie als Array von Strings zurück. + * @return Liste der Attributnamen + */ + public String[] listAttributes() { + if (current == null) return null; + List attr = current.getAttributes(); + String[] names = new String[attr.size()]; + for(int i=0; i < attr.size() ; i++) { + names[i] = attr.get(i).getName(); + } + return names; + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs + */ + public String getString(String attribute) { + if (current==null) return ""; + return current.getAttributeValue(attribute); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs + */ + public String getString(String attribute, String defaultValue) { + if (current==null) return defaultValue; + return current.getAttributeValue(attribute,defaultValue); + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param text neuer Wert des Attributs + */ + public void setString(String attribute, String text) { + if (current==null) return; + current.setAttribute(attribute, text); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Integer-Zahl + */ + public int getInt(String attribute) { + if (current==null) return 0; + try{ + int i = Integer.parseInt(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als Integer-Zahl + */ + public int getInt(String attribute, int defaultValue) { + if (current==null) return defaultValue; + try{ + int i = Integer.parseInt(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setInt(String attribute, int value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Float-Zahl + */ + public float getFloat(String attribute) { + if (current==null) return 0; + try{ + float i = Float.parseFloat(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als Float-Zahl + */ + public float getFloat(String attribute, float defaultValue) { + if (current==null) return defaultValue; + try{ + float i = Float.parseFloat(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setFloat(String attribute, float value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Double-Zahl + */ + public double getDouble(String attribute) { + if (current==null) return 0; + try{ + double i = Double.parseDouble(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + +/** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als double-Zahl + */ + public double getDouble(String attribute, double defaultValue) { + if (current==null) return defaultValue; + try{ + double i = Double.parseDouble(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setDouble(String attribute, double value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt den Inhalt/Text des aktuellen Elements ab + * @return Inhalt des Elements + */ + public String getContent() { + if ( current==null) return ""; + + return current.getText(); + } + + /** + * Fragt den Inhalt/Text des aktuellen Elements ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardtext + * @return Inhalt des Elements + */ + public String getContent(String defaultValue) { + if ( current==null) return defaultValue; + String t = current.getText(); + if(t.equals("")) t = defaultValue; + return t; + } + + /** + * Setzt den Inhalt/Text des aktuellen Elements + * @param text Neuer Inhalt des Elements + */ + public void setContent(String text) { + if ( current==null) return; + current.setText(text); + } + + + /** + * Fragt den Inhalt des aktuellen Elements als Integerzahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ public int getIntContent(int defaultValue) { + if ( current==null) return defaultValue; + try{ + int i = Integer.parseInt(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Integerzahl ab + * @return Inhalt des Elements + */ + public int getIntContent() { + if ( current==null) return 0; + try{ + int i = Integer.parseInt(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setIntContent(int value) { + if ( current==null) return; + current.setText(""+value); + } + + + /** + * Fragt den Inhalt des aktuellen Elements als Floatzahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ + public float getFloatContent(float defaultValue) { + if ( current==null) return defaultValue; + try{ + float i = Float.parseFloat(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Floatzahl ab + * @return Inhalt des Elements + */ + public float getFloatContent() { + if ( current==null) return 0; + try{ + float i = Float.parseFloat(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setFloatContent(float value) { + if ( current==null) return; + current.setText(""+value); + } + +/** + * Fragt den Inhalt des aktuellen Elements als Doublezahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ + public double getDoubleContent(double defaultValue) { + if ( current==null) return defaultValue; + try{ + double i = Double.parseDouble(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Doublezahl ab + * @return Inhalt des Elements + */ + public double getDoubleContent() { + if ( current==null) return 0; + try{ + double i = Double.parseDouble(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setDoubleContent(double value) { + if ( current==null) return; + current.setText(""+value); + } + + + // ----------------------------------------------- XML-Struktur aufbauen ------------------------------------------------ + /** Erzeuge neues Element nach der aktuellen Position und setze dieses als aktuelles Element + * @param name Name des neuen Elements + * @return neues Element als XML-Objekt + */ + public XML addChild(String name) { + Element e = new Element(name); + if(current == null){ // man ist auf Root-Ebene + doc.setRootElement(e); + + } + else { + current.addContent(e); + } // end of if-else + return new XML(doc, e); + } + + /** + * liefert das aktuelle Element als jdom-Element-Objekt + * @return aktuelles Element + */ + private Element getCurrent() { + return current; + } + + /** + * löscht ein Kind des aktuellen Knotens. + * Ist kid kein Kind des aktuellen Elements passiert gar nichts. + * @param kid XML-Objekt des Kindes + */ + public void removeChild(XML kid) { + if (current == null) return; + Element e = kid.getCurrent(); + int index = current.indexOf(e); + if(index >= 0) { current.removeContent(e);} + } + +} diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg13_maximumsuche/images/balken.png b/03_vorlagen_tauschordner/02_greenfoot/alg13_maximumsuche/images/balken.png new file mode 100644 index 0000000..9ff1ffc Binary files /dev/null and b/03_vorlagen_tauschordner/02_greenfoot/alg13_maximumsuche/images/balken.png differ diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg13_maximumsuche/images/bilderrahmen.png b/03_vorlagen_tauschordner/02_greenfoot/alg13_maximumsuche/images/bilderrahmen.png new file mode 100644 index 0000000..7f34e32 Binary files /dev/null and b/03_vorlagen_tauschordner/02_greenfoot/alg13_maximumsuche/images/bilderrahmen.png differ diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg13_maximumsuche/jdom-1.1.3.jar b/03_vorlagen_tauschordner/02_greenfoot/alg13_maximumsuche/jdom-1.1.3.jar new file mode 100644 index 0000000..a287727 Binary files /dev/null and b/03_vorlagen_tauschordner/02_greenfoot/alg13_maximumsuche/jdom-1.1.3.jar differ diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg13_maximumsuche/project.greenfoot b/03_vorlagen_tauschordner/02_greenfoot/alg13_maximumsuche/project.greenfoot new file mode 100644 index 0000000..95345b6 --- /dev/null +++ b/03_vorlagen_tauschordner/02_greenfoot/alg13_maximumsuche/project.greenfoot @@ -0,0 +1,93 @@ +#Greenfoot project file +class.Balkendiagramm.image=balken.png +class.PictureViewer.image=bilderrahmen.png +dependency1.from=MyWorld +dependency1.to=Balkendiagramm +dependency1.type=UsesDependency +dependency2.from=PictureViewer +dependency2.to=Picture +dependency2.type=UsesDependency +dependency3.from=Balkendiagramm +dependency3.to=Table +dependency3.type=UsesDependency +dependency4.from=Table +dependency4.to=TableRow +dependency4.type=UsesDependency +dependency5.from=Picture +dependency5.to=PictureViewer +dependency5.type=UsesDependency +editor.fx.0.height=739 +editor.fx.0.width=816 +editor.fx.0.x=552 +editor.fx.0.y=100 +height=885 +package.numDependencies=5 +package.numTargets=7 +project.charset=UTF-8 +publish.hasSource=false +publish.locked=true +publish.longDesc= +publish.shortDesc= +publish.tags= +publish.title= +publish.url= +readme.height=58 +readme.name=@README +readme.width=47 +readme.x=10 +readme.y=10 +simulation.speed=97 +target1.height=50 +target1.name=PictureViewer +target1.showInterface=false +target1.type=ClassTarget +target1.width=100 +target1.x=0 +target1.y=0 +target2.height=50 +target2.name=Table +target2.showInterface=false +target2.type=ClassTarget +target2.width=80 +target2.x=0 +target2.y=0 +target3.height=50 +target3.name=Balkendiagramm +target3.showInterface=false +target3.type=ClassTarget +target3.width=120 +target3.x=0 +target3.y=0 +target4.height=50 +target4.name=Picture +target4.showInterface=false +target4.type=ClassTarget +target4.width=80 +target4.x=0 +target4.y=0 +target5.height=50 +target5.name=XML +target5.showInterface=false +target5.type=ClassTarget +target5.width=100 +target5.x=0 +target5.y=0 +target6.height=50 +target6.name=TableRow +target6.showInterface=false +target6.type=ClassTarget +target6.width=80 +target6.x=0 +target6.y=0 +target7.height=50 +target7.name=MyWorld +target7.showInterface=false +target7.type=ClassTarget +target7.width=80 +target7.x=0 +target7.y=0 +version=3.0.0 +width=1350 +world.lastInstantiated=MyWorld +xPosition=418 +yPosition=124 diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg13_maximumsuche/punkte.csv b/03_vorlagen_tauschordner/02_greenfoot/alg13_maximumsuche/punkte.csv new file mode 100644 index 0000000..d6e8dfd --- /dev/null +++ b/03_vorlagen_tauschordner/02_greenfoot/alg13_maximumsuche/punkte.csv @@ -0,0 +1,6 @@ +"Name","Punkte" +Niko,216 +Klaus,591 +Anna,857 +Lena,180 +Winfried,168 diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg13_maximumsuche/testfall1.csv b/03_vorlagen_tauschordner/02_greenfoot/alg13_maximumsuche/testfall1.csv new file mode 100644 index 0000000..92c538f --- /dev/null +++ b/03_vorlagen_tauschordner/02_greenfoot/alg13_maximumsuche/testfall1.csv @@ -0,0 +1,20 @@ +"Name","Punkte" +Spieler1,0 +Spieler1,6 +Spieler2,19 +Spieler6,1 +Spieler4,45 +Spieler3,23 +Spieler3,12 +Spieler2,44 +Spieler1,72 +Spieler5,12 +Spieler6,4 +Spieler7,2 +Spieler4,98 +Spieler3,21 +Spieler3,12 +Spieler2,32 +Spieler1,12 +Spieler5,44 +Spieler3,12 diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg13_maximumsuche/testfall2.csv b/03_vorlagen_tauschordner/02_greenfoot/alg13_maximumsuche/testfall2.csv new file mode 100644 index 0000000..091c003 --- /dev/null +++ b/03_vorlagen_tauschordner/02_greenfoot/alg13_maximumsuche/testfall2.csv @@ -0,0 +1,20 @@ +"Name","Punkte" +Spieler1,-5 +Spieler1,-6 +Spieler2,-19 +Spieler6,-1 +Spieler4,-45 +Spieler3,-23 +Spieler3,-12 +Spieler2,-44 +Spieler1,-72 +Spieler5,-12 +Spieler6,-4 +Spieler7,-2 +Spieler4,-98 +Spieler3,-21 +Spieler3,-12 +Spieler2,-32 +Spieler1,-12 +Spieler5,-44 +Spieler3,-12 diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg13_maximumsuche/testfall3.csv b/03_vorlagen_tauschordner/02_greenfoot/alg13_maximumsuche/testfall3.csv new file mode 100644 index 0000000..3bc26b2 --- /dev/null +++ b/03_vorlagen_tauschordner/02_greenfoot/alg13_maximumsuche/testfall3.csv @@ -0,0 +1,2 @@ +"Name","Punkte" +Spieler1,45 diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg13_maximumsuche/testfall4.csv b/03_vorlagen_tauschordner/02_greenfoot/alg13_maximumsuche/testfall4.csv new file mode 100644 index 0000000..e74e6d5 --- /dev/null +++ b/03_vorlagen_tauschordner/02_greenfoot/alg13_maximumsuche/testfall4.csv @@ -0,0 +1 @@ +"Name","Punkte" diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg14a_zeitungsmeldung/MyWorld.java b/03_vorlagen_tauschordner/02_greenfoot/alg14a_zeitungsmeldung/MyWorld.java new file mode 100644 index 0000000..6e0c140 --- /dev/null +++ b/03_vorlagen_tauschordner/02_greenfoot/alg14a_zeitungsmeldung/MyWorld.java @@ -0,0 +1,36 @@ +import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot und MouseInfo) + +/** + * Ergänzen Sie hier eine Beschreibung für die Klasse MyWorld. + * + * @author (Ihr Name) + * @version (eine Versionsnummer oder ein Datum) + */ +public class MyWorld extends World +{ + + /** + * Konstruktor für Objekte der Klasse MyWorld + * + */ + public MyWorld() + { + // Erstellt eine neue Welt mit 1200x900 Pixeln + super(1000, 700, 1); + + prepare(); + } + + + /** + * Bereite die Welt für den Programmstart vor. + * Das heißt: Erzeuge die Anfangs-Objekte und füge sie der Welt hinzu. + */ + private void prepare() + { + Zeitungsmeldung zm = new Zeitungsmeldung(); + addObject(zm,500,350); + + } +} + diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg14a_zeitungsmeldung/Picture.java b/03_vorlagen_tauschordner/02_greenfoot/alg14a_zeitungsmeldung/Picture.java new file mode 100644 index 0000000..8df3d55 --- /dev/null +++ b/03_vorlagen_tauschordner/02_greenfoot/alg14a_zeitungsmeldung/Picture.java @@ -0,0 +1,699 @@ +import java.awt.image.*; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.BasicStroke; +import java.util.Vector; +import javax.imageio.*; +import java.io.*; +import java.awt.*; +import javax.swing.*; +import java.util.Random; +import java.awt.geom.AffineTransform; +/** + * + * Bildklasse für die Simulation von Processing-Befehlen + * + * Diese Klasse stellt ein BufferedImage bereit, in das mit Processing-Befehlen gezeichnet + * werden kann. + * Zusätzlich kann ein Bildanzeiger über jede Änderung des Bildes informiert werden, + * um "Zurück"-Befehle zu ermöglichen. Der Bildanzeiger ist entweder eine normale Java + * ScrollPane oder ein Actor aus Greenfoot. + * Die Dokumentation der einzelnen Zeichenmethoden ist der Processing-Reference + * (https://processing.org/reference/ steht unter CC-Lizenz: https://creativecommons.org/) + * entnommen und mit Deepl.com ins Deutsche übersetzt. + * + * @version 1.0 from 23.01.2019 + * @author Thomas Schaller (ZPG Informatik Klasse 9) + */ + +public class Picture{ + + // Einstellungmöglichkeiten für das Zeichnen von Rechtecken und Ellipsen + // RADIUS = Mittelpunkt+Radius wird gegeben, CENTER = Mittelpunkt und Breite/Höhe wird gegeben, + // CORNER = Linke obere Ecke + Breite/Höhe, CORNERS = Linke obere und rechte untere Ecke + public static final int RADIUS = 1; + public static final int CENTER = 2; + public static final int CORNER = 3; + public static final int CORNERS = 4; + + // gespeichertes Bild, + private BufferedImage image; + + // aktuelle Farbeinstellungen + private Color background; + private Color pencolor; + private Color fillcolor; + + // aktuelle Stiftdicke + private double stroke; + + // akkteller Koordinatenmodus von Rechtecken und Ellipsen + private int ellipseMode = CENTER; + private int rectMode = CORNER; + + // aktueller Font + private Font textfont = null; + + // muss ein Bildanzeiger benachrichtigt werden + private PictureViewer observer = null; + private boolean autorefresh = true; + + /** + * Erzeugt ein Bild mit Standardgröße 500x400 + */ + public Picture() { + this(500,400); + } + + /** + * Erzeugt ein Bild der angegeben Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public Picture(int width, int height) { + this(width,height, "D0D0D0"); + } + + /** + * Erzeugt ein Bild aus einer Datei + * @param filename Dateiname des Bildes + */ + public Picture(String filename) { + load(filename); + } + + /** + * Erzeugt ein Bild der angegebenen Größe mit festgelegtem Hintergrund + * @param width Breite des Bildes + * @param height Höhe des Bildes + * @param background Farbe des Hintergrunds + */ + public Picture(int width, int height, String background) { + this.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + this.background = decode(background); + this.pencolor = new Color(0,0,0); + this.stroke = 1; + this.fillcolor = null; + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(this.background); + g.fillRect(0,0,width-1, height-1); + } + + /** + * Legt fest, wer das Bild anzeigt. + * Diese ermöglicht die Benachrichtung des Observers, wenn sich das Bild ändert. + * @param observer Anzeiger des Bildes + */ + + public void setObserver(PictureViewer observer) { + this.observer= observer; + } + + /** + * Direktes Setzen des Bildes (für interne Zwecke) + * @param b Bild, das gespeichert werden soll. + */ + public void setImage(BufferedImage b) { + image = b; + } + + /** + * Direktes Abfragen des Bildes (für interne Zwecke) + * @return Bild, das gerade gespeichert ist. + */ + public BufferedImage getImage() { + return image; + } + + /** + * Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + * Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + * der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu. + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public void size(int width, int height){ + pushImage(); + this.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(background); + g.fillRect(0,0,width-1, height-1); + } + + /** + * Liefert die Breite des Bildes zurück. + * @return Breite des Bildes + */ + public int getWidth() { + return image.getWidth(); + } + + /** + * Liefert die Höhe des Bildes zurück. + * @return Höhe des Bildes + */ + public int getHeight() { + return image.getHeight(); + } + + + /** + * Erzeugt eine Kopie des Bildes und übergibt sie an den Observer (falls existent), damit dieser die Versionen speichern kann + */ + private void pushImage() { + if(observer != null) { + observer.pushImage(); + } + } + + + /** + * Legt fest, ob nach jedem Zeichenbefehl automatisch das Bild auch in + * der Oberfläche aktualisiert wird. Die Einstellung "false" beschleunigt + * das Zeichnen aufwändiger Bilder und verhindert "Flackern". + * Das Neuzeichnen kann durch die Methode "refresh" gezielt ausgelöst werden. + * @param autorefresh true = nach jedem Zeichenbefehl die Anzeige aktualisieren, false= nur durch die Methode refresh neu zeichnen + */ + public void setAutoRefresh(boolean autoRefresh) { + this.autorefresh = autoRefresh; + } + + + /** + * Auch die anzeigenden Klasse wird zum Neuzeichnen aufgefordert. + */ + private void repaint() { + if(observer != null && autorefresh) { + observer.repaint(); + } + } + + /** + * Auch die anzeigenden Klasse wird zum Neuzeichnen aufgefordert. + */ + public void refresh() { + if(observer != null) { + observer.repaint(); + } + } + + // ----------------------------------------- Zeichenfunktionen ----------------------------------------------- + /** + * Löscht den Inhalt des Bildes. + * Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt. + */ + + public void clear(){ + pushImage(); + image = new BufferedImage(image.getWidth(), image.getHeight(), image.getType()); + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(background); + g.fillRect(0,0,image.getWidth()-1, image.getHeight()-1); + repaint(); + } + + /** + * Konvertiert die in einem bestimmten Modus gegebenen Koordinaten in die Java-übliche Links_Oben_Breite_Höhe Version + * Die Änderungen werden direkt im Array vorgenommen + * @param coord Array mit vier Koordinateneinträgen im gegebenen Modus + * @param mode Modus der Koordinaten (CORNER, CORNERS, RADIUS oder CENTER) + */ + private void convert(int[] coord, int mode) { + switch(mode) { + case CORNER: break; + case CORNERS: coord[2] -= coord[0]; coord[3] -= coord[1]; break; + case RADIUS: coord[2] *= 2; coord[3] *=2; + case CENTER: coord[0] -= coord[2]/2; coord[1] -= coord[3]/2; + } + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + * Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + * Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void rectMode(int mode) { + rectMode = mode; + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + * Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + * Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als Breite und Höhe der Form. + * ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void ellipseMode(int mode) { + ellipseMode = mode; + } + + + + /** + * Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + * Um eine Linie einzufärben, verwenden Sie die {@link #stroke(int, int, int) stroke()} Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + * Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + * {@link #strokeWeight(double) strokeWeight()} geändert werden. + * @param x1 x-Koordinate des 1. Punktes + * @param y1 y-Koordinate des 1. Punktes + * @param x2 x-Koordinate des 2. Punktes + * @param y2 y-Koordinate des 2. Punktes + */ + public void line(int x1, int y1, int x2, int y2) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + if (stroke > 0) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawLine(x1, y1, x2, y2); + } + repaint(); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, rectMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillRect(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawRect(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, ellipseMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillOval(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawOval(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + int px[] = {x1, x2, x3}; + int py[] = {y1, y2, y3}; + polygon(px, py); + + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + + int px[] = {x1, x2, x3, x4}; + int py[] = {y1, y2, y3, y4}; + polygon(px, py); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + + public void polygon(int[] x, int[] y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(fillcolor != null) { + + g.setColor(fillcolor); + g.fillPolygon(x,y, y.length); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawPolygon(x, y, x.length); + } + repaint(); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + ellipse(x,y,1, 1); + + } + + // ----------------------------------------- Schriftdarstellung ----------------------------------------------- + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param s Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String s, int x, int y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(pencolor != null) { + g.setColor(fillcolor); + g.setStroke(new BasicStroke((float) stroke)); + g.setFont(textfont); + g.drawString(s, x, y); + } + repaint(); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + this.textfont = font; + } + + + // ----------------------------------------- Farbfestlegungen ----------------------------------------------- + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(String color) { + try{ + return new Color( + Integer.valueOf( color.substring( 0, 2 ), 16 ), + Integer.valueOf( color.substring( 2, 4 ), 16 ), + Integer.valueOf( color.substring( 4, 6 ), 16 ) ); + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(int color) { + try{ + if(color >=0 && color < 256) { + return new Color(color,color,color); + } else { + int r = color / 0x010000 % 0xFF; + int g = color / 0x000100 % 0xFF; + int b = color % 0xFF; + System.out.println(""+r+","+g+","+b); + return new Color(r, g, b ); + } + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + this.pencolor = decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + this.pencolor=decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + this.pencolor = new Color(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + this.pencolor = null; + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + this.stroke = width; + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + this.fillcolor = decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + this.fillcolor=decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + this.fillcolor = new Color(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + this.fillcolor = null; + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + if(c < 256) { + this.background=new Color(c,c,c); + } else { + int r = c / 0x010000; + int g = c / 0x000100 % 0xFF; + int b = c % 0xFF; + this.background= new Color(r, g, b ); + } + + this.clear(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + this.background=new Color(r,g,b); + this.clear(); + } + + +// ----------------------------------------- Dateioperationen ----------------------------------------------- + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + try{ + this.image = ImageIO.read(new File(filename)); + this.background = decode("D0D0D0"); + this.pencolor = new Color(0,0,0); + this.fillcolor = null; + this.stroke = 1; + this.repaint(); + + } catch(Exception e) { + System.out.println("Fehler beim Einlesen der Bilddatei"); + } + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + try{ + String[] fn = filename.split("\\."); + if (fn.length== 1) { + ImageIO.write(image, "PNG", new File(filename+".png")); + } else { + + if (fn.length == 2 && (fn[1].toUpperCase().equals("PNG") || + fn[1].toUpperCase().equals("GIF"))){ + ImageIO.write(image, fn[1], new File(filename)); + }else { + System.out.println("Unbekanntes Bildformat"); + } + } + + } catch(Exception e) { + System.out.println("Fehler beim Speichern"); + } + } + + +// ----------------------------------------- Sonstiges ----------------------------------------------- + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + + public Color[][] getPixelArray() { + Color[][] pixel = new Color[image.getWidth()][image.getHeight()]; + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + pixel[x][y] = new java.awt.Color(image.getRGB(x,y)); + } + } + return pixel; + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + size(pixel.length,pixel[0].length); + Graphics2D g = (Graphics2D) image.getGraphics(); + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + g.setColor(pixel[x][y]); + g.fillRect(x, y, 1, 1); + } + } + repaint(); + } + + /** + * Hilfsfunktion zum Verzögern der Ausgabe + * @param millis Wartezeit in Millisekunden + */ + public void delay(int millis) { + try{ + Thread.sleep(millis); + + } catch(Exception e) { + + } + + } + + + +} diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg14a_zeitungsmeldung/PictureViewer.java b/03_vorlagen_tauschordner/02_greenfoot/alg14a_zeitungsmeldung/PictureViewer.java new file mode 100644 index 0000000..ecbb521 --- /dev/null +++ b/03_vorlagen_tauschordner/02_greenfoot/alg14a_zeitungsmeldung/PictureViewer.java @@ -0,0 +1,499 @@ +import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot und MouseInfo) +import java.awt.image.*; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.BasicStroke; +import java.awt.Font; +import java.util.Vector; +import java.awt.Color; +import javax.imageio.*; +import java.io.*; + +/** + * Der PictureViewer ist ein Actor, der in der Lage ist ein + * Objekt der Klasse Picture anzuzeigen. Zusätzlich können + * mehrere Verarbeitungsschritte gespeichert werden, um ein + * "zurück"-Funktion zu ermöglichen. + * + * @author Thomas Schaller + * @version V1.0 vom 10.02.2019 + */ +public class PictureViewer extends Actor +{ + public static final int FIT = -1; + public static final int NORMAL = 1; + + private static final int ANZ_BACK = 0; + + private double zoom; + protected Picture picture = null; + private Vector history; + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der Größe 500x400 + */ + public PictureViewer() { + this(500,400); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public PictureViewer(int width, int height) { + this(width,height, "D0D0D0"); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + * @param background Farbe des Hintergrunds als HEX-String (z.B. "FF3A45") + */ + public PictureViewer(int width, int height, String background) { + picture = new Picture(width,height, background); + picture.setObserver(this); + this.history = new Vector(); + this.zoom = NORMAL; + repaint(); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild aus einer Bilddatei + * @param filename Name des Bildes + */ + public PictureViewer(String filename) { + picture = new Picture(filename); + picture.setObserver(this); + this.history = new Vector(); + this.zoom = NORMAL; + repaint(); + } + + /** + * Speichert das übergebene Bild in der History. + * @param b zu speicherndes Bild + */ + public void pushImage() { + if( this.ANZ_BACK > 0) { + if(history.size() == this.ANZ_BACK) { + history.removeElementAt(0); + } + + BufferedImage b = new BufferedImage(picture.getWidth(), picture.getHeight(), picture.getImage().getType()); + Graphics g = b.getGraphics(); + g.drawImage(picture.getImage(), 0, 0, null); + g.dispose(); + + history.add(b); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + private void popImage() { + int anz = history.size(); + if(anz>0) { + BufferedImage i = history.get(anz-1); + history.removeElementAt(anz-1); + picture.setImage(i); + repaint(); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + public void back() { + popImage(); + } + + /** + * Setzt den Zoom-Faktor für das Bild. + * Als Zoomfaktor sind auch die Konstanten Bildanzeiger.FIT (auf Bildschirmgröße zoomen) und Bildanzeiger.NORMAL (100%) möglich. + * @param factor Zoomfaktor (1.0 = 100%). + */ + public void setZoom(double zoom) { + this.zoom = zoom; + repaint(); + } + + /** + * Setzt die automatische Neuanzeige des Bildes. + * Mit dieser Methode kann man einstellen, ob nach jedem Zeichenbefehl + * die Anzeige auf dem Bildschirm aktualisiert werden soll. Bei sehr + * vielen Zeichenbefehlen wird die Ausgabe dadurch sehr langsam. Es reicht + * eine Anzeige am Ende der Zeichenbefehle. Rufen Sie dann für das Neuzeichnen + * die Methode refresh() auf. + * @param autoRefresh true, wenn nach jedem Zeichenbefehl die Anzeige aktualisiert werden soll. + */ + public void setAutoRefresh(boolean autoRefresh) { + picture.setAutoRefresh(autoRefresh); + } + + /** + * Sorgt für die Aktualisierung der Bildschrimanzeige. Das aktuelle Bild + * wird dadurch angezeigt. Durch Einstellung von autoRefresh kann die + * Anzeige automatisiert werden. + */ + public void refresh() { + repaint(); + } + + /** + * Setzt das angezeigt Bild neu und beachtet dabei den Zoomfaktor. + */ + public void repaint() { + double faktor = zoom; + + if (zoom == FIT) { + double faktorw = (double) this.getWorld().getWidth() / picture.getWidth(); + double faktorh = (double) this.getWorld().getHeight() / picture.getHeight(); + faktor = Math.min(faktorw, faktorh); + } + int gfi_width = (int) (picture.getWidth()*faktor); + int gfi_height = (int) (picture.getHeight()*faktor); + + setImage(new GreenfootImage(gfi_width, gfi_height)); + Graphics2D g = (Graphics2D) this.getImage().getAwtImage().getGraphics(); + g.drawImage(picture.getImage(),0,0,gfi_width, gfi_height, 0, 0, picture.getWidth(), picture.getHeight(), null); + g.setColor(new java.awt.Color(0,0,0)); + g.setStroke(new BasicStroke((float) 1)); + g.drawRect(0,0,gfi_width-1, gfi_height-1); + + } + + // Wrappermethoden + /** + * Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + * Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + * der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu. + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public void size(int width, int height){ + picture.size(width, height); + } + + /** + * Liefert die Breite des Bildes zurück. + * @return Breite des Bildes + */ + public int getImageWidth() { + return picture.getWidth(); + } + + /** + * Liefert die Höhe des Bildes zurück. + * @return Höhe des Bildes + */ + public int getImageHeight() { + return picture.getHeight(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + picture.background(c); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + picture.background(r,g,b); + } + + /** + * Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + * Um eine Linie einzufärben, verwenden Sie die {@link #stroke(int, int, int) stroke()} Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + * Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + * {@link #strokeWeight(double) strokeWeight()} geändert werden. + * @param x1 x-Koordinate des 1. Punktes + * @param y1 y-Koordinate des 1. Punktes + * @param x2 x-Koordinate des 2. Punktes + * @param y2 y-Koordinate des 2. Punktes + */ + public void line(int x1, int y1, int x2, int y2) { + picture.line(x1,y1,x2,y2); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + picture.rect(a,b,c,d); + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + picture.ellipse(a,b,c,d); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + picture.triangle(x1,y1,x2,y2,x3,y3); + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + picture.quad(x1,y1,x2,y2,x3,y3,x4,y4); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + public void polygon(int[] x, int[] y) { + picture.polygon(x,y); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + picture.point(x,y); + + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + * Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + * Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void rectMode(int mode) { + picture.rectMode(mode); + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + * Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + * Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als Breite und Höhe der Form. + * ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void ellipseMode(int mode) { + picture.ellipseMode(mode); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + picture.stroke(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + picture.noStroke(); + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + picture.strokeWeight(width); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + picture.fill(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + picture.noFill(); + } + + /** + * Löscht den Inhalt des Bildes. + * Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt. + */ + public void clear(){ + picture.clear(); + } + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + picture.load(filename); + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + picture.save(filename); + } + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param t Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String t, int x, int y) { + picture.text(t,x,y); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + picture.textFont(font); + } + + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + public Color[][] getPixelArray() { + return picture.getPixelArray(); + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + picture.setPixelArray(pixel); + } + + +} + diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg14a_zeitungsmeldung/Table.java b/03_vorlagen_tauschordner/02_greenfoot/alg14a_zeitungsmeldung/Table.java new file mode 100644 index 0000000..ee5a211 --- /dev/null +++ b/03_vorlagen_tauschordner/02_greenfoot/alg14a_zeitungsmeldung/Table.java @@ -0,0 +1,894 @@ +/** + * Die Klasse Table vereinfacht den Zugriff auf CSV-Dateien. + * Die Klassen Table und TableRow ermöglichen einen einfachen Zugriff auf tabellenbasierte + * Dokumente. + * + * @author Thomas Schaller + * @version 1.0 vom 01.02.2019 + */ + +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.ArrayList; +import java.io.*; +import java.util.Scanner; + +import org.jdom.Document; +import org.jdom.Element; +import org.jdom.Attribute; +import org.jdom.JDOMException; +import org.jdom.input.SAXBuilder; +import org.jdom.output.XMLOutputter; +import org.jdom.output.Format; + +public class Table +{ + // Standardtrennzeichen für Spalten + private static final char DEFAULT_SEPARATOR = ';'; + // Standardmarkierung für Texte + private static final char DEFAULT_QUOTE = '"'; + // Standardtrennzeichen für Dezimalzahlen + private static final char DEFAULT_COMMA = ','; + + // mögliche Spaltentypen + private static final String UNKNOWN ="UNKOWN"; + private static final String INT = "INTEGER"; + private static final String DOUBLE = "DOUBLE"; + private static final String FLOAT = "FLOAT"; + + // interne Verwaltung des Dokuments als JDOM-Document-Objekt + private Document doc; + // Verweis auf Element für Kopfzeile + private Element header; + // Ende Attribute + + /** + * Erzeugt leeres Tabellen-Dokument. + */ + public Table() { + this.doc = new Document(); + doc.setRootElement(new Element("CSV-Data")); + this.header = new Element("Header"); + doc.getRootElement().addContent(header); + } + + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei und erstellt ein Tabellenobjekt mit seinen Werten. + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public Table(String filename, String options, char separator, char quote) { + loadCSV(filename, options, separator, quote); + } + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei und erstellt ein Tabellenobjekt mit seinen Werten (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + */ + public Table(String filename, String options) { + loadCSV(filename, options); + } + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei ohne Kopfzeile und erstellt ein Tabellenobjekt mit seinen Werten (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public Table(String filename) { + loadCSV(filename); + } + + // Anfang Methoden + /** + * Liest den Inhalt einer CSV-Datei ohne Kopfzeile (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public void loadCSV(String filename) { + loadCSV(filename, ""); + } + + /** + * Liest den Inhalt einer CSV-Datei (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + */ + public void loadCSV(String filename, String options) { + loadCSV(filename, options, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** + * Liest den Inhalt einer CSV-Datei. + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public void loadCSV(String filename, String options, char separator, char quote) { + doc = new Document(); + doc.setRootElement(new Element("CSV-Data")); + header = new Element("Header"); + doc.getRootElement().addContent(header); + try { + File f = new File(filename); + Scanner scanner = new Scanner(new File(filename)); + if(options.toLowerCase().contains("header") && scanner.hasNext()) { + List entries = parseLine(scanner.nextLine(), separator, quote); + int i= 0; + for(String s : entries) { + Element entry = new Element("Column"); + header.addContent(entry); + entry.setText(s); + entry.setAttribute("type", "unknown"); + i++; + } + } + + List cols = header.getChildren(); + + while (scanner.hasNext()) { + Element line = new Element("Row"); + doc.getRootElement().addContent(line); + List entries = parseLine(scanner.nextLine(), separator, quote); + int i= 0; + + for(String s : entries) { + + if(i==cols.size()) { + Element entry = new Element("Column"); + entry.setAttribute("type", "unknown"); + header.addContent(entry); + cols = header.getChildren(); + } + + Element entry = new Element("Entry"); + entry.setText(s); + line.addContent(entry); + i++; + } + } + scanner.close(); + + } catch (Exception e) { + System.out.println("Fehler beim Lesen der CSV-Datei"); + } + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei ohne Kopfzeile (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public void saveCSV(String filename) { + saveCSV(filename, ""); + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthalten, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile haben soll, + * dann lassen Sie einfach die Option "header" weg. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile haben soll. + * @param filename Dateiname der CSV-Datei. + */ + public void saveCSV(String filename, String options) { + saveCSV(filename, options, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei. + * Wenn die Datei eine Kopfzeile enthalten, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile haben soll, + * dann lassen Sie einfach die Option "header" weg. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile haben soll. + * @param filename Dateiname der CSV-Datei. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public void saveCSV(String filename, String options, char separator, char quote){ + try{ + File f = new File(filename); + PrintStream outputFile = new PrintStream (f); + System.out.println("Speicher in : "+f.getAbsolutePath()); + List columns = header.getChildren(); + String sq = ""+quote; + String ss = ""+separator; + if(quote =='"') sq = "\""; + if(separator =='"') ss = "\""; + + if(options.toLowerCase().contains("header")) { + String h = ""; + for(Element c : columns) { + h += ss + sq + c.getText()+sq; + } + outputFile.println(h.substring(1)); + } + for(int i = 0; i parseLine(String cvsLine) { + return parseLine(cvsLine, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** HIlfsfunktion für die Analyse einer Dateizeile + * @param cvsLine Zeile aus der Datei + * @param sparator Trennzeichen für die Spalten + * @return Liste von String für die einzelnen Spalten + */ + private List parseLine(String cvsLine, char separator) { + return parseLine(cvsLine, separator, DEFAULT_QUOTE); + } + + /** HIlfsfunktion für die Analyse einer Dateizeile + * @param cvsLine Zeile aus der Datei + * @param sparator Trennzeichen für die Spalten + * @param customQuote Kennung für Strings + * @return Liste von String für die einzelnen Spalten + */ + private List parseLine(String cvsLine, char separator, char customQuote) { + + List result = new ArrayList<>(); + + //if empty, return! + if (cvsLine == null && cvsLine.isEmpty()) { + return result; + } + + //ggf. Default-Value laden + if (customQuote == ' ') { + customQuote = DEFAULT_QUOTE; + } + + if (separator == ' ') { + separator = DEFAULT_SEPARATOR; + } + + StringBuffer curVal = new StringBuffer(); + boolean inQuotes = false; + boolean startCollectChar = false; + boolean doubleQuotesInColumn = false; + + char[] chars = cvsLine.toCharArray(); + + for (char ch : chars) { + + if (inQuotes) { // aktueller Text ist in Quotes eingeschlossen + startCollectChar = true; + + if (ch == customQuote) { // Quotes werden beendet, aber Achtung bei "" => Metazeichen + inQuotes = false; + if (ch == '\"') { + doubleQuotesInColumn = true; + } + + } else { + + if (ch == '\"' && !doubleQuotesInColumn) { + doubleQuotesInColumn = true; + } else { + curVal.append(ch); + doubleQuotesInColumn = false; + } + + } + } else { + if (ch == customQuote) { + + inQuotes = true; + + //Fixed : allow "" in empty quote enclosed + if (ch == '\"'){ + if(doubleQuotesInColumn) { + curVal.append('"'); + doubleQuotesInColumn = false; + } else doubleQuotesInColumn = true; + + + } + } + else { + doubleQuotesInColumn = false; + if (ch == separator) { + + result.add(curVal.toString()); + + curVal = new StringBuffer(); + startCollectChar = false; + + } else if (ch == '\r') { + //ignore LF characters + continue; + } else if (ch == '\n') { + //the end, break! + break; + } else { + curVal.append(ch); + } + } + } + + } + result.add(curVal.toString()); + return result; + } + + /** + * Sucht die Nummer einer durch Namen gegebenen Spalte. + * @param name Name der Spalte + * @return Nummer der Spalte + */ + + private int findColumnNumber(String name) { + List columns = header.getChildren(); + int i = 0; + for(Element c : columns) { + if (c.getText().toLowerCase().equals(name.toLowerCase())) { + return i; + + } + i++; + } + return -1; + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an. + */ + public void addColumn() { + Element entry = new Element("Column"); + entry.setAttribute("type", Table.UNKNOWN); + header.addContent(entry); + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an und benennt sie. + * @param title Bezeichnung der Spalte + */ + public void addColumn(String title) { + addColumn(); + Element nc = ((List)(header.getChildren())).get(header.getChildren().size()-1); + nc.setText(title); + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an und benennt und typisiert sie. + * @param title Bezeichnung der Spalte + * @param type Typ der Spalte (UNKNOWN, DOUBLE, INTEGER, FLOAT) + */ + public void addColumn(String title, String type) { + addColumn(title); + Element nc = ((List)(header.getChildren())).get(header.getChildren().size()-1); + nc.setAttribute("type", type); + } + + /** + * Löscht eine Spalte. + * @param i Nummer der Spalte. + */ + public void removeColumn(int i) { + List lines = doc.getRootElement().getChildren(); + for(Element l : lines) { + if(l.getChildren().size()>i) l.removeContent(i); + } + } + + /** + * Löscht eine Spalte + * @param name Name der Spalte + */ + public void removeColumn(String name) { + try{ + removeColumn(findColumnNumber(name)); + } catch(Exception e) { System.out.println("Unbekannter Spaltenname");} + } + + /** + * Liefert die Anzahl der Spalten in der Tabelle + * @return Anzahl der Spalten + */ + public int getColumnCount() { + return header.getChildren().size(); + } + + /** + * Liefert die Anzahl der Zeilen in der Tabelle + * @return Anzahl der Zeilen + */ + public int getRowCount() { + return doc.getRootElement().getChildren().size()-1; + } + + /** + * Löscht alle Zeilen der Tabelle. + * Die Spaltenüberschriften und Typen bleiben erhalten. + */ + public void clearRows() { + doc.getRootElement().removeChildren("Row"); + } + + /** + * Fügt eine neue Zeile an das Ende der Tabelle an. + * @return ein TableRow-Objekt für diese neue Zeile + */ + public TableRow addRow() { + Element row = new Element("Row"); + doc.getRootElement().addContent(row); + return new TableRow(doc, row); + } + + /** + * Löscht eine Zeile + * @param i Nummer der Zeile + */ + public void removeRow(int i) { + if(i rows = doc.getRootElement().getChildren(); + return new TableRow(doc, rows.get(i+1)); + } + return null; + } + + /** + * Liefert die ganze Tabelle als Array von TableRow-Objekten + * @return Array von TableRow-Objekten + */ + public TableRow[] rows() { + TableRow[] rows = new TableRow[getRowCount()]; + for(int i = 0; i < getRowCount(); i++) { + rows[i] = getRow(i); + } + return rows; + } + + /** + * Liefert den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param column Spaltennummer + * @return Wert der Zelle + */ + public int getInt(int row, int column) { + return getRow(row).getInt(column); + } + + /** + * Liefert den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param name Name der Spalte + * @return Wert der Zelle + */ + public int getInt(int row, String name) { + return getRow(row).getInt(name); + } + + /** + * Setzt den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param column Spaltennummer + * @param value neuer Wert der Zelle + */ + public void setInt(int row, int column,int value) { + getRow(row).setInt(column, value); + } + + /** + * Setzt den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(int row, String name, int value) { + getRow(row).setInt(name, value); + } + + /** + * Liefert alle Werte einer Zeile als Integer-Array. + * @param row Nummer der Zeile + * @return int-Array, dass alle Werte der Zeile enthält + */ + public int[] getIntRow(int row) { + try{ + TableRow trow = getRow(row); + int anz = getColumnCount(); + int[] r = new int[anz]; + for(int i=0; i) (header.getChildren())).get(i).getText(); + } else { + return ""; + } + } + + /** + * Liefert die Nummer einer Spalte + * @param name Name der Spalte + * @return Nummer der Spalte + */ + public int getColumn(String name) { + List columns = header.getChildren(); + int i = 0; + while (i < columns.size()) { + if (columns.get(i).getText().toLowerCase().equals(name.toLowerCase())) { + return i; + } + i++; + } // end of while + return -1; + } + + + /** + * Erzeugt eine neue Zeile mit i Spalten + * Wenn bisher nicht genügend Spalten vorhanden sind, werden automatisch neue Spalten hinzugefügt (auch zum Header) + * @param i Anzahl der Spalten + */ + private Element buildRow(int i) { + List columns = header.getChildren(); + Element entry=null; + for(int j=0; j<=i; j++) { + + if(j==columns.size()) { + Element h = new Element("Column"); + h.setAttribute("type", "unknown"); + header.addContent(h); + columns = header.getChildren(); + } + if(j==current.getChildren().size()) { + entry = new Element("Entry"); + current.addContent(entry); + + } + + } + return entry; + + } + + /** + * Erzeugt eine neue Zeile. + * Es werden genügend Spalten erzeugt, dass ein Wert in Spalte "name" eingetragen werden kann + * @param name Name der Spalte + */ + private Element buildRow(String name) { + List columns = header.getChildren(); + int i = 0; + for(Element c: columns) { + + if(c.getText().toLowerCase().equals(name.toLowerCase())) { + return buildRow(i); + } + i++; + } + return null; + + } + + /** + * Liefert den Wert einer Zelle als String + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public String getString(int i) { + if(i >= current.getContent().size()) return ""; + Element e = (Element) current.getContent(i) ; + if(e!=null) { + return e.getText(); + } else { + return ""; + } + } + + /** + * Liefert den Wert einer Zelle als String + * @param name Name der Spalte + * @return Wert der Zelle + */ + public String getString(String name) { + return getString(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als String + * @param i Nummer der Spalte + * @param text neuer Wert der Zelle + */ + public void setString(int i, String text) { + + Element e = buildRow(i); + if(e!=null) e.setText(text); + } + + /** + * Setzt den Wert einer Zelle als String + * @param name Name der Spalte + * @param text neuer Wert der Zelle + */ + public void setString(String name, String text) { + Element e = buildRow(name); + if(e!=null) e.setText(text); + } + + + /** + * Liefert den Wert einer Zelle als Int-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public int getInt(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Integer.parseInt(e.getText()); + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Int-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public int getInt(String name) { + return getInt(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Int-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(int i,int value) { + + Element e = buildRow(i); + if(e!=null) e.setText(""+value); + } + + /** + * Setzt den Wert einer Zelle als Int-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(String name, int value) { + Element e = buildRow(name); + if(e!=null) e.setText(""+value); + } + + /** + * Liefert den Wert einer Zelle als Float-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public float getFloat(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Float.parseFloat(e.getText().replace(",",".")); + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Float-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public float getFloat(String name) { + return getFloat(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Float-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setFloat(int i,float value) { + + Element e = buildRow(i); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Setzt den Wert einer Zelle als Float-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setFloat(String name, float value) { + Element e = buildRow(name); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Liefert den Wert einer Zelle als Double-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public double getDouble(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Double.parseDouble(e.getText().replace(",",".")); + + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Double-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public double getDouble(String name) { + return getDouble(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Double-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setDouble(int i,double value) { + + Element e = buildRow(i); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Setzt den Wert einer Zelle als Double-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setDouble(String name, double value) { + Element e = buildRow(name); + if(e!=null) e.setText(format.format(value)); + } + +} diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg14a_zeitungsmeldung/XML.java b/03_vorlagen_tauschordner/02_greenfoot/alg14a_zeitungsmeldung/XML.java new file mode 100644 index 0000000..c06c490 --- /dev/null +++ b/03_vorlagen_tauschordner/02_greenfoot/alg14a_zeitungsmeldung/XML.java @@ -0,0 +1,637 @@ +/** + * Klasse zum Vereinfachten Zugriff auf XML-Dokumente + * Diese Klasse ist für den Einsatz in der Schule gedacht und soll den Schülern + * einen einfachen Zugriff auf XML-Dokumente ermöglichen. Die zur Verfügung + * stehenden Befehle sind wie in Processing realisiert. + * Dabei ist jeder Teilbaum des Dokuments wieder als XML-Objekt zugreifbar, das + * intern auf die gleiche XML-Dokumentstruktur zugreift. + * Dies ermöglicht bei unsachgemäßem Gebrauch die XML-Struktur zu zerstören. Im + * normalen Gebrauch sollte dies aber nicht relevant sein. + * + * Benötigt: jdom-1.1.3.jar + + * @author Thomas Schaller + * @version 1.0 vom 31.01.2019 + */ +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.ArrayList; +import java.io.*; + +import org.jdom.Document; +import org.jdom.Element; +import org.jdom.Attribute; +import org.jdom.JDOMException; +import org.jdom.input.SAXBuilder; +import org.jdom.output.XMLOutputter; +import org.jdom.output.Format; + +public class XML { + // Anfang Attribute + // XML-Dokumentstruktur + private Document doc; + // Zeiger auf das aktuelle Element + private Element current; + // Ende Attribute + + /** + * Erzeugt ein leeres XMLDokument + */ + public XML() { + this.doc = new Document(); + this.current = null; + } + + /** + * Erzeugt ein XML-Dokument aus einer Datei + * @param filename Dateiname der XML-Datei + */ + public XML(String filename) { + loadXML(filename); + } + + /** + * interner Konstruktor, um ein XML Objekt zu erzeugen, das auf einen bestimmten Knoten verweist + * @param doc die XML-Dokumentstruktur + * @param current Zeiger auf das aktuelle Element + */ + private XML(Document doc, Element current) { + this.doc = doc; + this.current = current; + } + + // Anfang Methoden + /** Öffnet das durch den Dateinamen gegebene Dokument + * @param filename Dateiname des XML-Files + */ + public void loadXML(String filename) { + doc = null; + File f = new File(filename); + + try { + // Das Dokument erstellen + SAXBuilder builder = new SAXBuilder(); + doc = builder.build(f); + + } catch (JDOMException e) { + e.printStackTrace(); + + } catch (IOException e) { + e.printStackTrace(); + } + // Zeiger im Baum auf Root-Element + current = doc.getRootElement(); + } + + /** Speichert den XML-Baum im angegebenen Dateinamen + * @param filename Dateiname des XML-Files + */ + public void saveXML(String filename) { + try { + // new XMLOutputter().output(doc, System.out); + XMLOutputter xmlOutput = new XMLOutputter(); + + // display nice nice + xmlOutput.setFormat(Format.getPrettyFormat()); + File f = new File(filename); + FileOutputStream outputFile = new FileOutputStream(f); + System.out.println("Speicher in : "+f.getAbsolutePath() ); + xmlOutput.output(doc, outputFile); + outputFile.close(); + System.out.println("File Saved!"); + } catch (IOException io) { + System.out.println(io.getMessage()); + } + + } + + //----------------------------------------------- Zeigerbewegungen -------------------------------------------------- + /** + * liefert ein XML-Objekt, das auf den Vaterknoten des aktuellen Elements zeigt. + * @return Vater des aktuellen Objekts. + */ + public XML getParent() { + if(current != null) { + Element parent = current.getParentElement(); + if (parent == null) { + return null; + } else { + return new XML(doc, parent); + } + } + return null; + } + + /** + * Überprüft, ob das Element irgendwelche Kinder hat oder nicht, und gibt das Ergebnis als boolean zurück. + * @return true, wenn Kinder vorhanden sind, sonst false + */ + public boolean hasChildren() { + if (current == null) { + return doc.hasRootElement(); + } else { + return current.getChildren().size()>0; + } + } + + /** + * Ermittelt die Namen aller Kinder des Elements und gibt die Namen als ein Array von Strings zurück. + * Dies ist dasselbe wie das Durchlaufen und Aufrufen von getName() auf jedem untergeordneten Element einzeln. + * @return Liste aller Namen der Kinder + */ + public String[] listChildren() { + if (current == null) { + if(doc.hasRootElement()) { + String[] names = new String[0]; + names[0] = doc.getRootElement().getName(); + return names; + } else { + return null; + } + } else { + List ch_element = current.getChildren(); + String[] names = new String[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + names[i] = ch_element.get(i).getName(); + } + return names; + } + } + + /** + * Liefert alle Kinder des Elements als Array von XML-Objekten. + * @return Array der Kinder als XML-Objekte + */ + public XML[] getChildren() { + if (current == null) { + if(doc.hasRootElement()) { + XML[] ch_xml = new XML[1]; + ch_xml[0] = new XML(doc, doc.getRootElement()); + return ch_xml; + } else { + return null; + } + } else { + List ch_element = current.getChildren(); + XML[] ch_xml = new XML[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + ch_xml[i] = new XML(doc, ch_element.get(i)); + } + return ch_xml; + } + } + + /** + * Liefert bestimmte Kinder des Elements als Array von XML-Objekten. + * Die Methode gibt dabei alle Kinder zurück, die dem angegebenen Namen entsprechen. + * @param name Name der gesuchten Kind-Objekte + * @return Array der Kinder als XML-Objekte + */ + public XML[] getChildren(String name) { + if (current == null) { + if(doc.hasRootElement()) { + XML[] ch_xml = new XML[1]; + ch_xml[0] = new XML(doc, doc.getRootElement()); + if(doc.getRootElement().getName().equals(name)){ + return ch_xml; + } else { + return null; + } + } else { + return null; + } + } else { + List ch_element = current.getChildren(name); + XML[] ch_xml = new XML[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + ch_xml[i] = new XML(doc, ch_element.get(i)); + } + return ch_xml; + } + } + + /** + * Liefert das erste Kind des Elements mit einem bestimmten Namen. + * Die Methode gibt das erste Kind zurück, das dem angegebenen Namen entsprechen. + * @param name Name des gesuchten Kind-Objektes + * @return Kind als XML-Objekt + */ + + public XML getChild(String name) { + if (current == null) { + Element e = doc.getRootElement(); + if (e.getName().equals(name)) { + return new XML(doc, e); + } else { + return null; + } + } else { + String[] names = name.split("/"); + Element e = current; + int i = 0; + while(i < names.length) { + e = e.getChild(names[i]); + if (e==null) return null; + i++; + } + return new XML(doc, e); + } + } + + /** + * Liefert das i. Kind des Elements. + * Die Methode gibt das i. Kind des aktuellen Elements zurück. + * @param i Nummer des Kindes + * @return Kind als XML-Objekt + */ + public XML getChild(int i) { + if (current == null) { + return new XML(doc, doc.getRootElement()); + } else { + List ch_element = current.getChildren(); + if (i>=ch_element.size()) return null; + return new XML(doc, ch_element.get(i)); + } + } + + //--------------------------------------------------- Methoden für das aktuelle Element ------------------------------------------------- + /** + * Frage den Namen des aktuellen Elements ab + * @return Namen des Elements + */ + public String getName() { + if (current==null) return ""; + return current.getName(); + } + + /** + * Setze den Namen des aktuellen Elements. + * @param name Neuer Name des Elements + */ + public void setName(String name) { + if (current==null) return; + current.setName(name); + } + + /** + * liefert die Anzahl der Attribute eines Elements. + * @return Anzahl des Attribute + */ + public int getAttributeCount() { + if (current == null) return 0; + return current.getAttributes().size(); + } + + /** + * liefert zurück, ob das aktuelle Element Attribute hat . + * @return true, wenn es Attribute gibt + */ + public boolean hasAttribute() { + if (current == null) return false; + return current.getAttributes().size()>0; + } + + /** + * Ruft alle Attribute des angegebenen Elements ab und gibt sie als Array von Strings zurück. + * @return Liste der Attributnamen + */ + public String[] listAttributes() { + if (current == null) return null; + List attr = current.getAttributes(); + String[] names = new String[attr.size()]; + for(int i=0; i < attr.size() ; i++) { + names[i] = attr.get(i).getName(); + } + return names; + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs + */ + public String getString(String attribute) { + if (current==null) return ""; + return current.getAttributeValue(attribute); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs + */ + public String getString(String attribute, String defaultValue) { + if (current==null) return defaultValue; + return current.getAttributeValue(attribute,defaultValue); + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param text neuer Wert des Attributs + */ + public void setString(String attribute, String text) { + if (current==null) return; + current.setAttribute(attribute, text); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Integer-Zahl + */ + public int getInt(String attribute) { + if (current==null) return 0; + try{ + int i = Integer.parseInt(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als Integer-Zahl + */ + public int getInt(String attribute, int defaultValue) { + if (current==null) return defaultValue; + try{ + int i = Integer.parseInt(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setInt(String attribute, int value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Float-Zahl + */ + public float getFloat(String attribute) { + if (current==null) return 0; + try{ + float i = Float.parseFloat(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als Float-Zahl + */ + public float getFloat(String attribute, float defaultValue) { + if (current==null) return defaultValue; + try{ + float i = Float.parseFloat(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setFloat(String attribute, float value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Double-Zahl + */ + public double getDouble(String attribute) { + if (current==null) return 0; + try{ + double i = Double.parseDouble(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + +/** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als double-Zahl + */ + public double getDouble(String attribute, double defaultValue) { + if (current==null) return defaultValue; + try{ + double i = Double.parseDouble(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setDouble(String attribute, double value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt den Inhalt/Text des aktuellen Elements ab + * @return Inhalt des Elements + */ + public String getContent() { + if ( current==null) return ""; + + return current.getText(); + } + + /** + * Fragt den Inhalt/Text des aktuellen Elements ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardtext + * @return Inhalt des Elements + */ + public String getContent(String defaultValue) { + if ( current==null) return defaultValue; + String t = current.getText(); + if(t.equals("")) t = defaultValue; + return t; + } + + /** + * Setzt den Inhalt/Text des aktuellen Elements + * @param text Neuer Inhalt des Elements + */ + public void setContent(String text) { + if ( current==null) return; + current.setText(text); + } + + + /** + * Fragt den Inhalt des aktuellen Elements als Integerzahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ public int getIntContent(int defaultValue) { + if ( current==null) return defaultValue; + try{ + int i = Integer.parseInt(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Integerzahl ab + * @return Inhalt des Elements + */ + public int getIntContent() { + if ( current==null) return 0; + try{ + int i = Integer.parseInt(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setIntContent(int value) { + if ( current==null) return; + current.setText(""+value); + } + + + /** + * Fragt den Inhalt des aktuellen Elements als Floatzahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ + public float getFloatContent(float defaultValue) { + if ( current==null) return defaultValue; + try{ + float i = Float.parseFloat(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Floatzahl ab + * @return Inhalt des Elements + */ + public float getFloatContent() { + if ( current==null) return 0; + try{ + float i = Float.parseFloat(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setFloatContent(float value) { + if ( current==null) return; + current.setText(""+value); + } + +/** + * Fragt den Inhalt des aktuellen Elements als Doublezahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ + public double getDoubleContent(double defaultValue) { + if ( current==null) return defaultValue; + try{ + double i = Double.parseDouble(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Doublezahl ab + * @return Inhalt des Elements + */ + public double getDoubleContent() { + if ( current==null) return 0; + try{ + double i = Double.parseDouble(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setDoubleContent(double value) { + if ( current==null) return; + current.setText(""+value); + } + + + // ----------------------------------------------- XML-Struktur aufbauen ------------------------------------------------ + /** Erzeuge neues Element nach der aktuellen Position und setze dieses als aktuelles Element + * @param name Name des neuen Elements + * @return neues Element als XML-Objekt + */ + public XML addChild(String name) { + Element e = new Element(name); + if(current == null){ // man ist auf Root-Ebene + doc.setRootElement(e); + + } + else { + current.addContent(e); + } // end of if-else + return new XML(doc, e); + } + + /** + * liefert das aktuelle Element als jdom-Element-Objekt + * @return aktuelles Element + */ + private Element getCurrent() { + return current; + } + + /** + * löscht ein Kind des aktuellen Knotens. + * Ist kid kein Kind des aktuellen Elements passiert gar nichts. + * @param kid XML-Objekt des Kindes + */ + public void removeChild(XML kid) { + if (current == null) return; + Element e = kid.getCurrent(); + int index = current.indexOf(e); + if(index >= 0) { current.removeContent(e);} + } + +} diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg14a_zeitungsmeldung/Zeitungsmeldung.java b/03_vorlagen_tauschordner/02_greenfoot/alg14a_zeitungsmeldung/Zeitungsmeldung.java new file mode 100644 index 0000000..b5f45aa --- /dev/null +++ b/03_vorlagen_tauschordner/02_greenfoot/alg14a_zeitungsmeldung/Zeitungsmeldung.java @@ -0,0 +1,99 @@ +import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot und MouseInfo) +import java.awt.Font; + +/** + * Ausgabe einer automatisierten Zeitungsmeldung, Bestimmung des Maximums und + * Durchschnitts eines int-Arrays. + * @author Schaller + * @version 29.11.18 + */ +public class Zeitungsmeldung extends PictureViewer + +{ + // Liste mit allen Werten //<>// + int[] punkte; + String[] namen; + + // Schriften + Font kleineSchrift; + Font grosseSchrift; + + public Zeitungsmeldung() { + size(1000, 700); + background(0); + kleineSchrift = new Font( Font.SANS_SERIF, Font.PLAIN, 12 ); + grosseSchrift = new Font( Font.SANS_SERIF, Font.PLAIN, 20 ); + + // CSV-Datei laden und anzeigen + ladeTabelle("punkte.csv"); + int summe = berechneSumme(punkte); + System.out.println("Summe: "+summe); + schreibeZeitungsmeldung(); + } + + public void ladeTabelle(String name) { + // Tabelle aus CSV-Datei laden + Table csv = new Table(name, "header",',','"'); + + if (csv != null && csv.getColumnCount()==2) { + + // Initialisiere Arrays, in die alle Zeilen der Tabelle passen + punkte = new int[csv.getRowCount()]; + namen = new String[csv.getRowCount()]; + + // Fülle die Arrays mit Werten aus der Tabelle + for (int i = 0; i < punkte.length; i++) { + // Lies Wert aus der i. Zeile und der Spalte "Punkte" bzw. "Name" + punkte[i] = csv.getInt(i, "Punkte"); + namen[i] = csv.getString(i, "Name"); + } + } + } + + public void schreibeZeitungsmeldung() { + + clear(); + + // Überschrift + fill(225,225,255); + stroke(155,155,255); + textFont(grosseSchrift); + text("BREAKING NEWS",5,32); + strokeWeight(3); + line(2,4,400,4); + line(2,45,400,45); + strokeWeight(2); + line(2,7,400,7); + line(2,42,400,42); + strokeWeight(1); + textFont(kleineSchrift); + fill(240); + + int anzahlSpieler = 0; + int anzahlSpiele = 0; + int summe = berechneSumme(punkte); + double durchschnitt = 0; + + text("Großartiges Ergebnis - Klasse XY nimmt an Binärwettbewerb teil.", 2, 60); + text("Die Klasse XY hat beim diesjährigen Binärwettbewerb teilgenommen", 2, 82); + text("und ein großartiges Ergebnis erzielt. Die XX Schülerinnen und", 2, 94); + text("Schüler der Klasse erreichten in "+anzahlSpiele+" Spielen eine Gesamtpunktzahl",2,106); + text("von "+summe+". Das ist ein Durchschnitt von XX.X pro Spiel.",2,118); + + } + + public int berechneSumme(int[] zahlen) { + int summe; + int i; + + // Startwerte setzen //<>// + summe = 0; + + // Alle Arrayelemente untersuchen + for (i=0; i< zahlen.length; i++) { + summe = summe + i; + } + // Gib die Summe zurück + return i; + } +} diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg14a_zeitungsmeldung/images/balken.png b/03_vorlagen_tauschordner/02_greenfoot/alg14a_zeitungsmeldung/images/balken.png new file mode 100644 index 0000000..9ff1ffc Binary files /dev/null and b/03_vorlagen_tauschordner/02_greenfoot/alg14a_zeitungsmeldung/images/balken.png differ diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg14a_zeitungsmeldung/images/bilderrahmen.png b/03_vorlagen_tauschordner/02_greenfoot/alg14a_zeitungsmeldung/images/bilderrahmen.png new file mode 100644 index 0000000..7f34e32 Binary files /dev/null and b/03_vorlagen_tauschordner/02_greenfoot/alg14a_zeitungsmeldung/images/bilderrahmen.png differ diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg14a_zeitungsmeldung/jdom-1.1.3.jar b/03_vorlagen_tauschordner/02_greenfoot/alg14a_zeitungsmeldung/jdom-1.1.3.jar new file mode 100644 index 0000000..a287727 Binary files /dev/null and b/03_vorlagen_tauschordner/02_greenfoot/alg14a_zeitungsmeldung/jdom-1.1.3.jar differ diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg14a_zeitungsmeldung/project.greenfoot b/03_vorlagen_tauschordner/02_greenfoot/alg14a_zeitungsmeldung/project.greenfoot new file mode 100644 index 0000000..f90f288 --- /dev/null +++ b/03_vorlagen_tauschordner/02_greenfoot/alg14a_zeitungsmeldung/project.greenfoot @@ -0,0 +1,93 @@ +#Greenfoot project file +class.PictureViewer.image=bilderrahmen.png +class.Zeitungsmeldung.image=balken.png +dependency1.from=MyWorld +dependency1.to=Zeitungsmeldung +dependency1.type=UsesDependency +dependency2.from=PictureViewer +dependency2.to=Picture +dependency2.type=UsesDependency +dependency3.from=Zeitungsmeldung +dependency3.to=Table +dependency3.type=UsesDependency +dependency4.from=Table +dependency4.to=TableRow +dependency4.type=UsesDependency +dependency5.from=Picture +dependency5.to=PictureViewer +dependency5.type=UsesDependency +editor.fx.0.height=739 +editor.fx.0.width=816 +editor.fx.0.x=552 +editor.fx.0.y=100 +height=885 +package.numDependencies=5 +package.numTargets=7 +project.charset=UTF-8 +publish.hasSource=false +publish.locked=true +publish.longDesc= +publish.shortDesc= +publish.tags= +publish.title= +publish.url= +readme.height=58 +readme.name=@README +readme.width=47 +readme.x=10 +readme.y=10 +simulation.speed=97 +target1.height=50 +target1.name=PictureViewer +target1.showInterface=false +target1.type=ClassTarget +target1.width=100 +target1.x=0 +target1.y=0 +target2.height=50 +target2.name=Table +target2.showInterface=false +target2.type=ClassTarget +target2.width=80 +target2.x=0 +target2.y=0 +target3.height=50 +target3.name=Zeitungsmeldung +target3.showInterface=false +target3.type=ClassTarget +target3.width=120 +target3.x=0 +target3.y=0 +target4.height=50 +target4.name=Picture +target4.showInterface=false +target4.type=ClassTarget +target4.width=80 +target4.x=0 +target4.y=0 +target5.height=50 +target5.name=XML +target5.showInterface=false +target5.type=ClassTarget +target5.width=100 +target5.x=0 +target5.y=0 +target6.height=50 +target6.name=TableRow +target6.showInterface=false +target6.type=ClassTarget +target6.width=80 +target6.x=0 +target6.y=0 +target7.height=50 +target7.name=MyWorld +target7.showInterface=false +target7.type=ClassTarget +target7.width=80 +target7.x=0 +target7.y=0 +version=3.0.0 +width=1350 +world.lastInstantiated=MyWorld +xPosition=375 +yPosition=128 diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg14a_zeitungsmeldung/punkte.csv b/03_vorlagen_tauschordner/02_greenfoot/alg14a_zeitungsmeldung/punkte.csv new file mode 100644 index 0000000..d6e8dfd --- /dev/null +++ b/03_vorlagen_tauschordner/02_greenfoot/alg14a_zeitungsmeldung/punkte.csv @@ -0,0 +1,6 @@ +"Name","Punkte" +Niko,216 +Klaus,591 +Anna,857 +Lena,180 +Winfried,168 diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg14a_zeitungsmeldung/testfall1.csv b/03_vorlagen_tauschordner/02_greenfoot/alg14a_zeitungsmeldung/testfall1.csv new file mode 100644 index 0000000..92c538f --- /dev/null +++ b/03_vorlagen_tauschordner/02_greenfoot/alg14a_zeitungsmeldung/testfall1.csv @@ -0,0 +1,20 @@ +"Name","Punkte" +Spieler1,0 +Spieler1,6 +Spieler2,19 +Spieler6,1 +Spieler4,45 +Spieler3,23 +Spieler3,12 +Spieler2,44 +Spieler1,72 +Spieler5,12 +Spieler6,4 +Spieler7,2 +Spieler4,98 +Spieler3,21 +Spieler3,12 +Spieler2,32 +Spieler1,12 +Spieler5,44 +Spieler3,12 diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg14a_zeitungsmeldung/testfall2.csv b/03_vorlagen_tauschordner/02_greenfoot/alg14a_zeitungsmeldung/testfall2.csv new file mode 100644 index 0000000..091c003 --- /dev/null +++ b/03_vorlagen_tauschordner/02_greenfoot/alg14a_zeitungsmeldung/testfall2.csv @@ -0,0 +1,20 @@ +"Name","Punkte" +Spieler1,-5 +Spieler1,-6 +Spieler2,-19 +Spieler6,-1 +Spieler4,-45 +Spieler3,-23 +Spieler3,-12 +Spieler2,-44 +Spieler1,-72 +Spieler5,-12 +Spieler6,-4 +Spieler7,-2 +Spieler4,-98 +Spieler3,-21 +Spieler3,-12 +Spieler2,-32 +Spieler1,-12 +Spieler5,-44 +Spieler3,-12 diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg14a_zeitungsmeldung/testfall3.csv b/03_vorlagen_tauschordner/02_greenfoot/alg14a_zeitungsmeldung/testfall3.csv new file mode 100644 index 0000000..3bc26b2 --- /dev/null +++ b/03_vorlagen_tauschordner/02_greenfoot/alg14a_zeitungsmeldung/testfall3.csv @@ -0,0 +1,2 @@ +"Name","Punkte" +Spieler1,45 diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg14a_zeitungsmeldung/testfall4.csv b/03_vorlagen_tauschordner/02_greenfoot/alg14a_zeitungsmeldung/testfall4.csv new file mode 100644 index 0000000..e74e6d5 --- /dev/null +++ b/03_vorlagen_tauschordner/02_greenfoot/alg14a_zeitungsmeldung/testfall4.csv @@ -0,0 +1 @@ +"Name","Punkte" diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg14b_highscoretabelle/Highscore.java b/03_vorlagen_tauschordner/02_greenfoot/alg14b_highscoretabelle/Highscore.java new file mode 100644 index 0000000..ab661e5 --- /dev/null +++ b/03_vorlagen_tauschordner/02_greenfoot/alg14b_highscoretabelle/Highscore.java @@ -0,0 +1,119 @@ +import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot und MouseInfo) +import java.awt.Font; + + +/** + * Balkendiagramm für int-Array, Zahlen werden aus CSV-Datei gelesen, Umwandlung in sortierte Tabelle. + * Hinweis zur Benutzung: + * Start des Algorithmus: Rufe im Kontextmenü (rechte Maustaste) die Methode wastutes() auf + * @author Schaller + * @version 29.11.18 + */ +public class Highscore extends PictureViewer + +{ +// Liste mit allen Werten //<>// + int[] zahlen; + String[] namen; + +// Hilfsvariablen für die Suche + int akt_maximum=-1; // aktuell groesstes Element + int akt=-2; // aktuell untersuchtes Element + int verzoegerung=10000; // Geschwindigkeit der Ausführung + + // Schriften + Font kleineSchrift; + Font grosseSchrift; + + public Highscore() { + size(1000, 700); + background(0); + kleineSchrift = new Font( Font.SANS_SERIF, Font.PLAIN, 12 ); + grosseSchrift = new Font( Font.SANS_SERIF, Font.PLAIN, 20 ); + + // CSV-Datei laden und anzeigen + ladeTabelle("punkte.csv"); + zeichneBalken(); + } + + public void ladeTabelle(String name) { + // Tabelle aus CSV-Datei laden + Table csv = new Table(name, "header",',','"'); + + if (csv != null && csv.getColumnCount()==2) { + + // Initialisiere Arrays, in die alle Zeilen der Tabelle passen + zahlen = new int[csv.getRowCount()]; + namen = new String[csv.getRowCount()]; + + // Fülle die Arrays mit Werten aus der Tabelle + for (int i = 0; i < zahlen.length; i++) { + // Lies Wert aus der i. Zeile und der Spalte "Punkte" bzw. "Name" + zahlen[i] = csv.getInt(i, "Punkte"); + namen[i] = csv.getString(i, "Name"); + } + } + } + + public void zeichneBalken() { + + clear(); + + // Überschrift + fill(255, 255, 255); + textFont(grosseSchrift); + text("Punkte", 2, 20); + textFont(kleineSchrift); + + // Alle Einträge darstellen + if (zahlen != null) { + for (int i = 0; i< zahlen.length; i++) { + + fill(20, 25, 165); + // aktuelle Elemente farblich hervorheben + if (i == akt || i == akt+1 ) { + fill(140, 230, 20); + } + + // Balkendiagramm zeichnen + if (zahlen[i]>=0) rect(120, 25+i*15, zahlen[i]+1, 13); + + // Beschriftung + fill(255, 255, 255); + text(namen[i], 2, 35+i*15); + text(""+zahlen[i], 70, 35+i*15); + } + } + } + public void wastutes() { + // Sind überhaupt Daten da? + if (zahlen.length==0 ) { + return; + } + + + // + for (akt=0; akt+1 < zahlen.length; akt++) { + // + zeichneBalken(); + Greenfoot.delay(verzoegerung); + // + if (zahlen[akt+1]> zahlen[akt]) { + // + int dummy = zahlen[akt]; + zahlen[akt] = zahlen[akt+1]; + zahlen[akt+1] = dummy; + + // + zeichneBalken(); + Greenfoot.delay(verzoegerung); + } + } + + // + akt = -2; + zeichneBalken(); + Greenfoot.delay(verzoegerung); + + } +} diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg14b_highscoretabelle/MyWorld.java b/03_vorlagen_tauschordner/02_greenfoot/alg14b_highscoretabelle/MyWorld.java new file mode 100644 index 0000000..4e5c579 --- /dev/null +++ b/03_vorlagen_tauschordner/02_greenfoot/alg14b_highscoretabelle/MyWorld.java @@ -0,0 +1,36 @@ +import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot und MouseInfo) + +/** + * Ergänzen Sie hier eine Beschreibung für die Klasse MyWorld. + * + * @author (Ihr Name) + * @version (eine Versionsnummer oder ein Datum) + */ +public class MyWorld extends World +{ + + /** + * Konstruktor für Objekte der Klasse MyWorld + * + */ + public MyWorld() + { + // Erstellt eine neue Welt mit 1200x900 Pixeln + super(1000, 700, 1); + + prepare(); + } + + + /** + * Bereite die Welt für den Programmstart vor. + * Das heißt: Erzeuge die Anfangs-Objekte und füge sie der Welt hinzu. + */ + private void prepare() + { + Highscore hs = new Highscore(); + addObject(hs,500,350); + + } +} + diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg14b_highscoretabelle/Picture.java b/03_vorlagen_tauschordner/02_greenfoot/alg14b_highscoretabelle/Picture.java new file mode 100644 index 0000000..8df3d55 --- /dev/null +++ b/03_vorlagen_tauschordner/02_greenfoot/alg14b_highscoretabelle/Picture.java @@ -0,0 +1,699 @@ +import java.awt.image.*; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.BasicStroke; +import java.util.Vector; +import javax.imageio.*; +import java.io.*; +import java.awt.*; +import javax.swing.*; +import java.util.Random; +import java.awt.geom.AffineTransform; +/** + * + * Bildklasse für die Simulation von Processing-Befehlen + * + * Diese Klasse stellt ein BufferedImage bereit, in das mit Processing-Befehlen gezeichnet + * werden kann. + * Zusätzlich kann ein Bildanzeiger über jede Änderung des Bildes informiert werden, + * um "Zurück"-Befehle zu ermöglichen. Der Bildanzeiger ist entweder eine normale Java + * ScrollPane oder ein Actor aus Greenfoot. + * Die Dokumentation der einzelnen Zeichenmethoden ist der Processing-Reference + * (https://processing.org/reference/ steht unter CC-Lizenz: https://creativecommons.org/) + * entnommen und mit Deepl.com ins Deutsche übersetzt. + * + * @version 1.0 from 23.01.2019 + * @author Thomas Schaller (ZPG Informatik Klasse 9) + */ + +public class Picture{ + + // Einstellungmöglichkeiten für das Zeichnen von Rechtecken und Ellipsen + // RADIUS = Mittelpunkt+Radius wird gegeben, CENTER = Mittelpunkt und Breite/Höhe wird gegeben, + // CORNER = Linke obere Ecke + Breite/Höhe, CORNERS = Linke obere und rechte untere Ecke + public static final int RADIUS = 1; + public static final int CENTER = 2; + public static final int CORNER = 3; + public static final int CORNERS = 4; + + // gespeichertes Bild, + private BufferedImage image; + + // aktuelle Farbeinstellungen + private Color background; + private Color pencolor; + private Color fillcolor; + + // aktuelle Stiftdicke + private double stroke; + + // akkteller Koordinatenmodus von Rechtecken und Ellipsen + private int ellipseMode = CENTER; + private int rectMode = CORNER; + + // aktueller Font + private Font textfont = null; + + // muss ein Bildanzeiger benachrichtigt werden + private PictureViewer observer = null; + private boolean autorefresh = true; + + /** + * Erzeugt ein Bild mit Standardgröße 500x400 + */ + public Picture() { + this(500,400); + } + + /** + * Erzeugt ein Bild der angegeben Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public Picture(int width, int height) { + this(width,height, "D0D0D0"); + } + + /** + * Erzeugt ein Bild aus einer Datei + * @param filename Dateiname des Bildes + */ + public Picture(String filename) { + load(filename); + } + + /** + * Erzeugt ein Bild der angegebenen Größe mit festgelegtem Hintergrund + * @param width Breite des Bildes + * @param height Höhe des Bildes + * @param background Farbe des Hintergrunds + */ + public Picture(int width, int height, String background) { + this.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + this.background = decode(background); + this.pencolor = new Color(0,0,0); + this.stroke = 1; + this.fillcolor = null; + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(this.background); + g.fillRect(0,0,width-1, height-1); + } + + /** + * Legt fest, wer das Bild anzeigt. + * Diese ermöglicht die Benachrichtung des Observers, wenn sich das Bild ändert. + * @param observer Anzeiger des Bildes + */ + + public void setObserver(PictureViewer observer) { + this.observer= observer; + } + + /** + * Direktes Setzen des Bildes (für interne Zwecke) + * @param b Bild, das gespeichert werden soll. + */ + public void setImage(BufferedImage b) { + image = b; + } + + /** + * Direktes Abfragen des Bildes (für interne Zwecke) + * @return Bild, das gerade gespeichert ist. + */ + public BufferedImage getImage() { + return image; + } + + /** + * Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + * Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + * der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu. + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public void size(int width, int height){ + pushImage(); + this.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(background); + g.fillRect(0,0,width-1, height-1); + } + + /** + * Liefert die Breite des Bildes zurück. + * @return Breite des Bildes + */ + public int getWidth() { + return image.getWidth(); + } + + /** + * Liefert die Höhe des Bildes zurück. + * @return Höhe des Bildes + */ + public int getHeight() { + return image.getHeight(); + } + + + /** + * Erzeugt eine Kopie des Bildes und übergibt sie an den Observer (falls existent), damit dieser die Versionen speichern kann + */ + private void pushImage() { + if(observer != null) { + observer.pushImage(); + } + } + + + /** + * Legt fest, ob nach jedem Zeichenbefehl automatisch das Bild auch in + * der Oberfläche aktualisiert wird. Die Einstellung "false" beschleunigt + * das Zeichnen aufwändiger Bilder und verhindert "Flackern". + * Das Neuzeichnen kann durch die Methode "refresh" gezielt ausgelöst werden. + * @param autorefresh true = nach jedem Zeichenbefehl die Anzeige aktualisieren, false= nur durch die Methode refresh neu zeichnen + */ + public void setAutoRefresh(boolean autoRefresh) { + this.autorefresh = autoRefresh; + } + + + /** + * Auch die anzeigenden Klasse wird zum Neuzeichnen aufgefordert. + */ + private void repaint() { + if(observer != null && autorefresh) { + observer.repaint(); + } + } + + /** + * Auch die anzeigenden Klasse wird zum Neuzeichnen aufgefordert. + */ + public void refresh() { + if(observer != null) { + observer.repaint(); + } + } + + // ----------------------------------------- Zeichenfunktionen ----------------------------------------------- + /** + * Löscht den Inhalt des Bildes. + * Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt. + */ + + public void clear(){ + pushImage(); + image = new BufferedImage(image.getWidth(), image.getHeight(), image.getType()); + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(background); + g.fillRect(0,0,image.getWidth()-1, image.getHeight()-1); + repaint(); + } + + /** + * Konvertiert die in einem bestimmten Modus gegebenen Koordinaten in die Java-übliche Links_Oben_Breite_Höhe Version + * Die Änderungen werden direkt im Array vorgenommen + * @param coord Array mit vier Koordinateneinträgen im gegebenen Modus + * @param mode Modus der Koordinaten (CORNER, CORNERS, RADIUS oder CENTER) + */ + private void convert(int[] coord, int mode) { + switch(mode) { + case CORNER: break; + case CORNERS: coord[2] -= coord[0]; coord[3] -= coord[1]; break; + case RADIUS: coord[2] *= 2; coord[3] *=2; + case CENTER: coord[0] -= coord[2]/2; coord[1] -= coord[3]/2; + } + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + * Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + * Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void rectMode(int mode) { + rectMode = mode; + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + * Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + * Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als Breite und Höhe der Form. + * ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void ellipseMode(int mode) { + ellipseMode = mode; + } + + + + /** + * Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + * Um eine Linie einzufärben, verwenden Sie die {@link #stroke(int, int, int) stroke()} Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + * Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + * {@link #strokeWeight(double) strokeWeight()} geändert werden. + * @param x1 x-Koordinate des 1. Punktes + * @param y1 y-Koordinate des 1. Punktes + * @param x2 x-Koordinate des 2. Punktes + * @param y2 y-Koordinate des 2. Punktes + */ + public void line(int x1, int y1, int x2, int y2) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + if (stroke > 0) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawLine(x1, y1, x2, y2); + } + repaint(); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, rectMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillRect(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawRect(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, ellipseMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillOval(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawOval(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + int px[] = {x1, x2, x3}; + int py[] = {y1, y2, y3}; + polygon(px, py); + + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + + int px[] = {x1, x2, x3, x4}; + int py[] = {y1, y2, y3, y4}; + polygon(px, py); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + + public void polygon(int[] x, int[] y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(fillcolor != null) { + + g.setColor(fillcolor); + g.fillPolygon(x,y, y.length); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawPolygon(x, y, x.length); + } + repaint(); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + ellipse(x,y,1, 1); + + } + + // ----------------------------------------- Schriftdarstellung ----------------------------------------------- + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param s Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String s, int x, int y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(pencolor != null) { + g.setColor(fillcolor); + g.setStroke(new BasicStroke((float) stroke)); + g.setFont(textfont); + g.drawString(s, x, y); + } + repaint(); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + this.textfont = font; + } + + + // ----------------------------------------- Farbfestlegungen ----------------------------------------------- + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(String color) { + try{ + return new Color( + Integer.valueOf( color.substring( 0, 2 ), 16 ), + Integer.valueOf( color.substring( 2, 4 ), 16 ), + Integer.valueOf( color.substring( 4, 6 ), 16 ) ); + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(int color) { + try{ + if(color >=0 && color < 256) { + return new Color(color,color,color); + } else { + int r = color / 0x010000 % 0xFF; + int g = color / 0x000100 % 0xFF; + int b = color % 0xFF; + System.out.println(""+r+","+g+","+b); + return new Color(r, g, b ); + } + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + this.pencolor = decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + this.pencolor=decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + this.pencolor = new Color(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + this.pencolor = null; + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + this.stroke = width; + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + this.fillcolor = decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + this.fillcolor=decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + this.fillcolor = new Color(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + this.fillcolor = null; + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + if(c < 256) { + this.background=new Color(c,c,c); + } else { + int r = c / 0x010000; + int g = c / 0x000100 % 0xFF; + int b = c % 0xFF; + this.background= new Color(r, g, b ); + } + + this.clear(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + this.background=new Color(r,g,b); + this.clear(); + } + + +// ----------------------------------------- Dateioperationen ----------------------------------------------- + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + try{ + this.image = ImageIO.read(new File(filename)); + this.background = decode("D0D0D0"); + this.pencolor = new Color(0,0,0); + this.fillcolor = null; + this.stroke = 1; + this.repaint(); + + } catch(Exception e) { + System.out.println("Fehler beim Einlesen der Bilddatei"); + } + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + try{ + String[] fn = filename.split("\\."); + if (fn.length== 1) { + ImageIO.write(image, "PNG", new File(filename+".png")); + } else { + + if (fn.length == 2 && (fn[1].toUpperCase().equals("PNG") || + fn[1].toUpperCase().equals("GIF"))){ + ImageIO.write(image, fn[1], new File(filename)); + }else { + System.out.println("Unbekanntes Bildformat"); + } + } + + } catch(Exception e) { + System.out.println("Fehler beim Speichern"); + } + } + + +// ----------------------------------------- Sonstiges ----------------------------------------------- + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + + public Color[][] getPixelArray() { + Color[][] pixel = new Color[image.getWidth()][image.getHeight()]; + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + pixel[x][y] = new java.awt.Color(image.getRGB(x,y)); + } + } + return pixel; + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + size(pixel.length,pixel[0].length); + Graphics2D g = (Graphics2D) image.getGraphics(); + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + g.setColor(pixel[x][y]); + g.fillRect(x, y, 1, 1); + } + } + repaint(); + } + + /** + * Hilfsfunktion zum Verzögern der Ausgabe + * @param millis Wartezeit in Millisekunden + */ + public void delay(int millis) { + try{ + Thread.sleep(millis); + + } catch(Exception e) { + + } + + } + + + +} diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg14b_highscoretabelle/PictureViewer.java b/03_vorlagen_tauschordner/02_greenfoot/alg14b_highscoretabelle/PictureViewer.java new file mode 100644 index 0000000..ecbb521 --- /dev/null +++ b/03_vorlagen_tauschordner/02_greenfoot/alg14b_highscoretabelle/PictureViewer.java @@ -0,0 +1,499 @@ +import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot und MouseInfo) +import java.awt.image.*; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.BasicStroke; +import java.awt.Font; +import java.util.Vector; +import java.awt.Color; +import javax.imageio.*; +import java.io.*; + +/** + * Der PictureViewer ist ein Actor, der in der Lage ist ein + * Objekt der Klasse Picture anzuzeigen. Zusätzlich können + * mehrere Verarbeitungsschritte gespeichert werden, um ein + * "zurück"-Funktion zu ermöglichen. + * + * @author Thomas Schaller + * @version V1.0 vom 10.02.2019 + */ +public class PictureViewer extends Actor +{ + public static final int FIT = -1; + public static final int NORMAL = 1; + + private static final int ANZ_BACK = 0; + + private double zoom; + protected Picture picture = null; + private Vector history; + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der Größe 500x400 + */ + public PictureViewer() { + this(500,400); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public PictureViewer(int width, int height) { + this(width,height, "D0D0D0"); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + * @param background Farbe des Hintergrunds als HEX-String (z.B. "FF3A45") + */ + public PictureViewer(int width, int height, String background) { + picture = new Picture(width,height, background); + picture.setObserver(this); + this.history = new Vector(); + this.zoom = NORMAL; + repaint(); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild aus einer Bilddatei + * @param filename Name des Bildes + */ + public PictureViewer(String filename) { + picture = new Picture(filename); + picture.setObserver(this); + this.history = new Vector(); + this.zoom = NORMAL; + repaint(); + } + + /** + * Speichert das übergebene Bild in der History. + * @param b zu speicherndes Bild + */ + public void pushImage() { + if( this.ANZ_BACK > 0) { + if(history.size() == this.ANZ_BACK) { + history.removeElementAt(0); + } + + BufferedImage b = new BufferedImage(picture.getWidth(), picture.getHeight(), picture.getImage().getType()); + Graphics g = b.getGraphics(); + g.drawImage(picture.getImage(), 0, 0, null); + g.dispose(); + + history.add(b); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + private void popImage() { + int anz = history.size(); + if(anz>0) { + BufferedImage i = history.get(anz-1); + history.removeElementAt(anz-1); + picture.setImage(i); + repaint(); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + public void back() { + popImage(); + } + + /** + * Setzt den Zoom-Faktor für das Bild. + * Als Zoomfaktor sind auch die Konstanten Bildanzeiger.FIT (auf Bildschirmgröße zoomen) und Bildanzeiger.NORMAL (100%) möglich. + * @param factor Zoomfaktor (1.0 = 100%). + */ + public void setZoom(double zoom) { + this.zoom = zoom; + repaint(); + } + + /** + * Setzt die automatische Neuanzeige des Bildes. + * Mit dieser Methode kann man einstellen, ob nach jedem Zeichenbefehl + * die Anzeige auf dem Bildschirm aktualisiert werden soll. Bei sehr + * vielen Zeichenbefehlen wird die Ausgabe dadurch sehr langsam. Es reicht + * eine Anzeige am Ende der Zeichenbefehle. Rufen Sie dann für das Neuzeichnen + * die Methode refresh() auf. + * @param autoRefresh true, wenn nach jedem Zeichenbefehl die Anzeige aktualisiert werden soll. + */ + public void setAutoRefresh(boolean autoRefresh) { + picture.setAutoRefresh(autoRefresh); + } + + /** + * Sorgt für die Aktualisierung der Bildschrimanzeige. Das aktuelle Bild + * wird dadurch angezeigt. Durch Einstellung von autoRefresh kann die + * Anzeige automatisiert werden. + */ + public void refresh() { + repaint(); + } + + /** + * Setzt das angezeigt Bild neu und beachtet dabei den Zoomfaktor. + */ + public void repaint() { + double faktor = zoom; + + if (zoom == FIT) { + double faktorw = (double) this.getWorld().getWidth() / picture.getWidth(); + double faktorh = (double) this.getWorld().getHeight() / picture.getHeight(); + faktor = Math.min(faktorw, faktorh); + } + int gfi_width = (int) (picture.getWidth()*faktor); + int gfi_height = (int) (picture.getHeight()*faktor); + + setImage(new GreenfootImage(gfi_width, gfi_height)); + Graphics2D g = (Graphics2D) this.getImage().getAwtImage().getGraphics(); + g.drawImage(picture.getImage(),0,0,gfi_width, gfi_height, 0, 0, picture.getWidth(), picture.getHeight(), null); + g.setColor(new java.awt.Color(0,0,0)); + g.setStroke(new BasicStroke((float) 1)); + g.drawRect(0,0,gfi_width-1, gfi_height-1); + + } + + // Wrappermethoden + /** + * Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + * Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + * der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu. + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public void size(int width, int height){ + picture.size(width, height); + } + + /** + * Liefert die Breite des Bildes zurück. + * @return Breite des Bildes + */ + public int getImageWidth() { + return picture.getWidth(); + } + + /** + * Liefert die Höhe des Bildes zurück. + * @return Höhe des Bildes + */ + public int getImageHeight() { + return picture.getHeight(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + picture.background(c); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + picture.background(r,g,b); + } + + /** + * Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + * Um eine Linie einzufärben, verwenden Sie die {@link #stroke(int, int, int) stroke()} Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + * Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + * {@link #strokeWeight(double) strokeWeight()} geändert werden. + * @param x1 x-Koordinate des 1. Punktes + * @param y1 y-Koordinate des 1. Punktes + * @param x2 x-Koordinate des 2. Punktes + * @param y2 y-Koordinate des 2. Punktes + */ + public void line(int x1, int y1, int x2, int y2) { + picture.line(x1,y1,x2,y2); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + picture.rect(a,b,c,d); + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + picture.ellipse(a,b,c,d); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + picture.triangle(x1,y1,x2,y2,x3,y3); + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + picture.quad(x1,y1,x2,y2,x3,y3,x4,y4); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + public void polygon(int[] x, int[] y) { + picture.polygon(x,y); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + picture.point(x,y); + + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + * Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + * Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void rectMode(int mode) { + picture.rectMode(mode); + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + * Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + * Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als Breite und Höhe der Form. + * ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void ellipseMode(int mode) { + picture.ellipseMode(mode); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + picture.stroke(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + picture.noStroke(); + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + picture.strokeWeight(width); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + picture.fill(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + picture.noFill(); + } + + /** + * Löscht den Inhalt des Bildes. + * Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt. + */ + public void clear(){ + picture.clear(); + } + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + picture.load(filename); + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + picture.save(filename); + } + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param t Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String t, int x, int y) { + picture.text(t,x,y); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + picture.textFont(font); + } + + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + public Color[][] getPixelArray() { + return picture.getPixelArray(); + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + picture.setPixelArray(pixel); + } + + +} + diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg14b_highscoretabelle/Table.java b/03_vorlagen_tauschordner/02_greenfoot/alg14b_highscoretabelle/Table.java new file mode 100644 index 0000000..ee5a211 --- /dev/null +++ b/03_vorlagen_tauschordner/02_greenfoot/alg14b_highscoretabelle/Table.java @@ -0,0 +1,894 @@ +/** + * Die Klasse Table vereinfacht den Zugriff auf CSV-Dateien. + * Die Klassen Table und TableRow ermöglichen einen einfachen Zugriff auf tabellenbasierte + * Dokumente. + * + * @author Thomas Schaller + * @version 1.0 vom 01.02.2019 + */ + +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.ArrayList; +import java.io.*; +import java.util.Scanner; + +import org.jdom.Document; +import org.jdom.Element; +import org.jdom.Attribute; +import org.jdom.JDOMException; +import org.jdom.input.SAXBuilder; +import org.jdom.output.XMLOutputter; +import org.jdom.output.Format; + +public class Table +{ + // Standardtrennzeichen für Spalten + private static final char DEFAULT_SEPARATOR = ';'; + // Standardmarkierung für Texte + private static final char DEFAULT_QUOTE = '"'; + // Standardtrennzeichen für Dezimalzahlen + private static final char DEFAULT_COMMA = ','; + + // mögliche Spaltentypen + private static final String UNKNOWN ="UNKOWN"; + private static final String INT = "INTEGER"; + private static final String DOUBLE = "DOUBLE"; + private static final String FLOAT = "FLOAT"; + + // interne Verwaltung des Dokuments als JDOM-Document-Objekt + private Document doc; + // Verweis auf Element für Kopfzeile + private Element header; + // Ende Attribute + + /** + * Erzeugt leeres Tabellen-Dokument. + */ + public Table() { + this.doc = new Document(); + doc.setRootElement(new Element("CSV-Data")); + this.header = new Element("Header"); + doc.getRootElement().addContent(header); + } + + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei und erstellt ein Tabellenobjekt mit seinen Werten. + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public Table(String filename, String options, char separator, char quote) { + loadCSV(filename, options, separator, quote); + } + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei und erstellt ein Tabellenobjekt mit seinen Werten (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + */ + public Table(String filename, String options) { + loadCSV(filename, options); + } + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei ohne Kopfzeile und erstellt ein Tabellenobjekt mit seinen Werten (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public Table(String filename) { + loadCSV(filename); + } + + // Anfang Methoden + /** + * Liest den Inhalt einer CSV-Datei ohne Kopfzeile (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public void loadCSV(String filename) { + loadCSV(filename, ""); + } + + /** + * Liest den Inhalt einer CSV-Datei (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + */ + public void loadCSV(String filename, String options) { + loadCSV(filename, options, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** + * Liest den Inhalt einer CSV-Datei. + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public void loadCSV(String filename, String options, char separator, char quote) { + doc = new Document(); + doc.setRootElement(new Element("CSV-Data")); + header = new Element("Header"); + doc.getRootElement().addContent(header); + try { + File f = new File(filename); + Scanner scanner = new Scanner(new File(filename)); + if(options.toLowerCase().contains("header") && scanner.hasNext()) { + List entries = parseLine(scanner.nextLine(), separator, quote); + int i= 0; + for(String s : entries) { + Element entry = new Element("Column"); + header.addContent(entry); + entry.setText(s); + entry.setAttribute("type", "unknown"); + i++; + } + } + + List cols = header.getChildren(); + + while (scanner.hasNext()) { + Element line = new Element("Row"); + doc.getRootElement().addContent(line); + List entries = parseLine(scanner.nextLine(), separator, quote); + int i= 0; + + for(String s : entries) { + + if(i==cols.size()) { + Element entry = new Element("Column"); + entry.setAttribute("type", "unknown"); + header.addContent(entry); + cols = header.getChildren(); + } + + Element entry = new Element("Entry"); + entry.setText(s); + line.addContent(entry); + i++; + } + } + scanner.close(); + + } catch (Exception e) { + System.out.println("Fehler beim Lesen der CSV-Datei"); + } + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei ohne Kopfzeile (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public void saveCSV(String filename) { + saveCSV(filename, ""); + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthalten, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile haben soll, + * dann lassen Sie einfach die Option "header" weg. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile haben soll. + * @param filename Dateiname der CSV-Datei. + */ + public void saveCSV(String filename, String options) { + saveCSV(filename, options, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei. + * Wenn die Datei eine Kopfzeile enthalten, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile haben soll, + * dann lassen Sie einfach die Option "header" weg. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile haben soll. + * @param filename Dateiname der CSV-Datei. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public void saveCSV(String filename, String options, char separator, char quote){ + try{ + File f = new File(filename); + PrintStream outputFile = new PrintStream (f); + System.out.println("Speicher in : "+f.getAbsolutePath()); + List columns = header.getChildren(); + String sq = ""+quote; + String ss = ""+separator; + if(quote =='"') sq = "\""; + if(separator =='"') ss = "\""; + + if(options.toLowerCase().contains("header")) { + String h = ""; + for(Element c : columns) { + h += ss + sq + c.getText()+sq; + } + outputFile.println(h.substring(1)); + } + for(int i = 0; i parseLine(String cvsLine) { + return parseLine(cvsLine, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** HIlfsfunktion für die Analyse einer Dateizeile + * @param cvsLine Zeile aus der Datei + * @param sparator Trennzeichen für die Spalten + * @return Liste von String für die einzelnen Spalten + */ + private List parseLine(String cvsLine, char separator) { + return parseLine(cvsLine, separator, DEFAULT_QUOTE); + } + + /** HIlfsfunktion für die Analyse einer Dateizeile + * @param cvsLine Zeile aus der Datei + * @param sparator Trennzeichen für die Spalten + * @param customQuote Kennung für Strings + * @return Liste von String für die einzelnen Spalten + */ + private List parseLine(String cvsLine, char separator, char customQuote) { + + List result = new ArrayList<>(); + + //if empty, return! + if (cvsLine == null && cvsLine.isEmpty()) { + return result; + } + + //ggf. Default-Value laden + if (customQuote == ' ') { + customQuote = DEFAULT_QUOTE; + } + + if (separator == ' ') { + separator = DEFAULT_SEPARATOR; + } + + StringBuffer curVal = new StringBuffer(); + boolean inQuotes = false; + boolean startCollectChar = false; + boolean doubleQuotesInColumn = false; + + char[] chars = cvsLine.toCharArray(); + + for (char ch : chars) { + + if (inQuotes) { // aktueller Text ist in Quotes eingeschlossen + startCollectChar = true; + + if (ch == customQuote) { // Quotes werden beendet, aber Achtung bei "" => Metazeichen + inQuotes = false; + if (ch == '\"') { + doubleQuotesInColumn = true; + } + + } else { + + if (ch == '\"' && !doubleQuotesInColumn) { + doubleQuotesInColumn = true; + } else { + curVal.append(ch); + doubleQuotesInColumn = false; + } + + } + } else { + if (ch == customQuote) { + + inQuotes = true; + + //Fixed : allow "" in empty quote enclosed + if (ch == '\"'){ + if(doubleQuotesInColumn) { + curVal.append('"'); + doubleQuotesInColumn = false; + } else doubleQuotesInColumn = true; + + + } + } + else { + doubleQuotesInColumn = false; + if (ch == separator) { + + result.add(curVal.toString()); + + curVal = new StringBuffer(); + startCollectChar = false; + + } else if (ch == '\r') { + //ignore LF characters + continue; + } else if (ch == '\n') { + //the end, break! + break; + } else { + curVal.append(ch); + } + } + } + + } + result.add(curVal.toString()); + return result; + } + + /** + * Sucht die Nummer einer durch Namen gegebenen Spalte. + * @param name Name der Spalte + * @return Nummer der Spalte + */ + + private int findColumnNumber(String name) { + List columns = header.getChildren(); + int i = 0; + for(Element c : columns) { + if (c.getText().toLowerCase().equals(name.toLowerCase())) { + return i; + + } + i++; + } + return -1; + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an. + */ + public void addColumn() { + Element entry = new Element("Column"); + entry.setAttribute("type", Table.UNKNOWN); + header.addContent(entry); + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an und benennt sie. + * @param title Bezeichnung der Spalte + */ + public void addColumn(String title) { + addColumn(); + Element nc = ((List)(header.getChildren())).get(header.getChildren().size()-1); + nc.setText(title); + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an und benennt und typisiert sie. + * @param title Bezeichnung der Spalte + * @param type Typ der Spalte (UNKNOWN, DOUBLE, INTEGER, FLOAT) + */ + public void addColumn(String title, String type) { + addColumn(title); + Element nc = ((List)(header.getChildren())).get(header.getChildren().size()-1); + nc.setAttribute("type", type); + } + + /** + * Löscht eine Spalte. + * @param i Nummer der Spalte. + */ + public void removeColumn(int i) { + List lines = doc.getRootElement().getChildren(); + for(Element l : lines) { + if(l.getChildren().size()>i) l.removeContent(i); + } + } + + /** + * Löscht eine Spalte + * @param name Name der Spalte + */ + public void removeColumn(String name) { + try{ + removeColumn(findColumnNumber(name)); + } catch(Exception e) { System.out.println("Unbekannter Spaltenname");} + } + + /** + * Liefert die Anzahl der Spalten in der Tabelle + * @return Anzahl der Spalten + */ + public int getColumnCount() { + return header.getChildren().size(); + } + + /** + * Liefert die Anzahl der Zeilen in der Tabelle + * @return Anzahl der Zeilen + */ + public int getRowCount() { + return doc.getRootElement().getChildren().size()-1; + } + + /** + * Löscht alle Zeilen der Tabelle. + * Die Spaltenüberschriften und Typen bleiben erhalten. + */ + public void clearRows() { + doc.getRootElement().removeChildren("Row"); + } + + /** + * Fügt eine neue Zeile an das Ende der Tabelle an. + * @return ein TableRow-Objekt für diese neue Zeile + */ + public TableRow addRow() { + Element row = new Element("Row"); + doc.getRootElement().addContent(row); + return new TableRow(doc, row); + } + + /** + * Löscht eine Zeile + * @param i Nummer der Zeile + */ + public void removeRow(int i) { + if(i rows = doc.getRootElement().getChildren(); + return new TableRow(doc, rows.get(i+1)); + } + return null; + } + + /** + * Liefert die ganze Tabelle als Array von TableRow-Objekten + * @return Array von TableRow-Objekten + */ + public TableRow[] rows() { + TableRow[] rows = new TableRow[getRowCount()]; + for(int i = 0; i < getRowCount(); i++) { + rows[i] = getRow(i); + } + return rows; + } + + /** + * Liefert den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param column Spaltennummer + * @return Wert der Zelle + */ + public int getInt(int row, int column) { + return getRow(row).getInt(column); + } + + /** + * Liefert den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param name Name der Spalte + * @return Wert der Zelle + */ + public int getInt(int row, String name) { + return getRow(row).getInt(name); + } + + /** + * Setzt den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param column Spaltennummer + * @param value neuer Wert der Zelle + */ + public void setInt(int row, int column,int value) { + getRow(row).setInt(column, value); + } + + /** + * Setzt den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(int row, String name, int value) { + getRow(row).setInt(name, value); + } + + /** + * Liefert alle Werte einer Zeile als Integer-Array. + * @param row Nummer der Zeile + * @return int-Array, dass alle Werte der Zeile enthält + */ + public int[] getIntRow(int row) { + try{ + TableRow trow = getRow(row); + int anz = getColumnCount(); + int[] r = new int[anz]; + for(int i=0; i) (header.getChildren())).get(i).getText(); + } else { + return ""; + } + } + + /** + * Liefert die Nummer einer Spalte + * @param name Name der Spalte + * @return Nummer der Spalte + */ + public int getColumn(String name) { + List columns = header.getChildren(); + int i = 0; + while (i < columns.size()) { + if (columns.get(i).getText().toLowerCase().equals(name.toLowerCase())) { + return i; + } + i++; + } // end of while + return -1; + } + + + /** + * Erzeugt eine neue Zeile mit i Spalten + * Wenn bisher nicht genügend Spalten vorhanden sind, werden automatisch neue Spalten hinzugefügt (auch zum Header) + * @param i Anzahl der Spalten + */ + private Element buildRow(int i) { + List columns = header.getChildren(); + Element entry=null; + for(int j=0; j<=i; j++) { + + if(j==columns.size()) { + Element h = new Element("Column"); + h.setAttribute("type", "unknown"); + header.addContent(h); + columns = header.getChildren(); + } + if(j==current.getChildren().size()) { + entry = new Element("Entry"); + current.addContent(entry); + + } + + } + return entry; + + } + + /** + * Erzeugt eine neue Zeile. + * Es werden genügend Spalten erzeugt, dass ein Wert in Spalte "name" eingetragen werden kann + * @param name Name der Spalte + */ + private Element buildRow(String name) { + List columns = header.getChildren(); + int i = 0; + for(Element c: columns) { + + if(c.getText().toLowerCase().equals(name.toLowerCase())) { + return buildRow(i); + } + i++; + } + return null; + + } + + /** + * Liefert den Wert einer Zelle als String + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public String getString(int i) { + if(i >= current.getContent().size()) return ""; + Element e = (Element) current.getContent(i) ; + if(e!=null) { + return e.getText(); + } else { + return ""; + } + } + + /** + * Liefert den Wert einer Zelle als String + * @param name Name der Spalte + * @return Wert der Zelle + */ + public String getString(String name) { + return getString(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als String + * @param i Nummer der Spalte + * @param text neuer Wert der Zelle + */ + public void setString(int i, String text) { + + Element e = buildRow(i); + if(e!=null) e.setText(text); + } + + /** + * Setzt den Wert einer Zelle als String + * @param name Name der Spalte + * @param text neuer Wert der Zelle + */ + public void setString(String name, String text) { + Element e = buildRow(name); + if(e!=null) e.setText(text); + } + + + /** + * Liefert den Wert einer Zelle als Int-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public int getInt(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Integer.parseInt(e.getText()); + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Int-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public int getInt(String name) { + return getInt(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Int-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(int i,int value) { + + Element e = buildRow(i); + if(e!=null) e.setText(""+value); + } + + /** + * Setzt den Wert einer Zelle als Int-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(String name, int value) { + Element e = buildRow(name); + if(e!=null) e.setText(""+value); + } + + /** + * Liefert den Wert einer Zelle als Float-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public float getFloat(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Float.parseFloat(e.getText().replace(",",".")); + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Float-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public float getFloat(String name) { + return getFloat(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Float-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setFloat(int i,float value) { + + Element e = buildRow(i); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Setzt den Wert einer Zelle als Float-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setFloat(String name, float value) { + Element e = buildRow(name); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Liefert den Wert einer Zelle als Double-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public double getDouble(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Double.parseDouble(e.getText().replace(",",".")); + + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Double-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public double getDouble(String name) { + return getDouble(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Double-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setDouble(int i,double value) { + + Element e = buildRow(i); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Setzt den Wert einer Zelle als Double-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setDouble(String name, double value) { + Element e = buildRow(name); + if(e!=null) e.setText(format.format(value)); + } + +} diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg14b_highscoretabelle/XML.java b/03_vorlagen_tauschordner/02_greenfoot/alg14b_highscoretabelle/XML.java new file mode 100644 index 0000000..c06c490 --- /dev/null +++ b/03_vorlagen_tauschordner/02_greenfoot/alg14b_highscoretabelle/XML.java @@ -0,0 +1,637 @@ +/** + * Klasse zum Vereinfachten Zugriff auf XML-Dokumente + * Diese Klasse ist für den Einsatz in der Schule gedacht und soll den Schülern + * einen einfachen Zugriff auf XML-Dokumente ermöglichen. Die zur Verfügung + * stehenden Befehle sind wie in Processing realisiert. + * Dabei ist jeder Teilbaum des Dokuments wieder als XML-Objekt zugreifbar, das + * intern auf die gleiche XML-Dokumentstruktur zugreift. + * Dies ermöglicht bei unsachgemäßem Gebrauch die XML-Struktur zu zerstören. Im + * normalen Gebrauch sollte dies aber nicht relevant sein. + * + * Benötigt: jdom-1.1.3.jar + + * @author Thomas Schaller + * @version 1.0 vom 31.01.2019 + */ +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.ArrayList; +import java.io.*; + +import org.jdom.Document; +import org.jdom.Element; +import org.jdom.Attribute; +import org.jdom.JDOMException; +import org.jdom.input.SAXBuilder; +import org.jdom.output.XMLOutputter; +import org.jdom.output.Format; + +public class XML { + // Anfang Attribute + // XML-Dokumentstruktur + private Document doc; + // Zeiger auf das aktuelle Element + private Element current; + // Ende Attribute + + /** + * Erzeugt ein leeres XMLDokument + */ + public XML() { + this.doc = new Document(); + this.current = null; + } + + /** + * Erzeugt ein XML-Dokument aus einer Datei + * @param filename Dateiname der XML-Datei + */ + public XML(String filename) { + loadXML(filename); + } + + /** + * interner Konstruktor, um ein XML Objekt zu erzeugen, das auf einen bestimmten Knoten verweist + * @param doc die XML-Dokumentstruktur + * @param current Zeiger auf das aktuelle Element + */ + private XML(Document doc, Element current) { + this.doc = doc; + this.current = current; + } + + // Anfang Methoden + /** Öffnet das durch den Dateinamen gegebene Dokument + * @param filename Dateiname des XML-Files + */ + public void loadXML(String filename) { + doc = null; + File f = new File(filename); + + try { + // Das Dokument erstellen + SAXBuilder builder = new SAXBuilder(); + doc = builder.build(f); + + } catch (JDOMException e) { + e.printStackTrace(); + + } catch (IOException e) { + e.printStackTrace(); + } + // Zeiger im Baum auf Root-Element + current = doc.getRootElement(); + } + + /** Speichert den XML-Baum im angegebenen Dateinamen + * @param filename Dateiname des XML-Files + */ + public void saveXML(String filename) { + try { + // new XMLOutputter().output(doc, System.out); + XMLOutputter xmlOutput = new XMLOutputter(); + + // display nice nice + xmlOutput.setFormat(Format.getPrettyFormat()); + File f = new File(filename); + FileOutputStream outputFile = new FileOutputStream(f); + System.out.println("Speicher in : "+f.getAbsolutePath() ); + xmlOutput.output(doc, outputFile); + outputFile.close(); + System.out.println("File Saved!"); + } catch (IOException io) { + System.out.println(io.getMessage()); + } + + } + + //----------------------------------------------- Zeigerbewegungen -------------------------------------------------- + /** + * liefert ein XML-Objekt, das auf den Vaterknoten des aktuellen Elements zeigt. + * @return Vater des aktuellen Objekts. + */ + public XML getParent() { + if(current != null) { + Element parent = current.getParentElement(); + if (parent == null) { + return null; + } else { + return new XML(doc, parent); + } + } + return null; + } + + /** + * Überprüft, ob das Element irgendwelche Kinder hat oder nicht, und gibt das Ergebnis als boolean zurück. + * @return true, wenn Kinder vorhanden sind, sonst false + */ + public boolean hasChildren() { + if (current == null) { + return doc.hasRootElement(); + } else { + return current.getChildren().size()>0; + } + } + + /** + * Ermittelt die Namen aller Kinder des Elements und gibt die Namen als ein Array von Strings zurück. + * Dies ist dasselbe wie das Durchlaufen und Aufrufen von getName() auf jedem untergeordneten Element einzeln. + * @return Liste aller Namen der Kinder + */ + public String[] listChildren() { + if (current == null) { + if(doc.hasRootElement()) { + String[] names = new String[0]; + names[0] = doc.getRootElement().getName(); + return names; + } else { + return null; + } + } else { + List ch_element = current.getChildren(); + String[] names = new String[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + names[i] = ch_element.get(i).getName(); + } + return names; + } + } + + /** + * Liefert alle Kinder des Elements als Array von XML-Objekten. + * @return Array der Kinder als XML-Objekte + */ + public XML[] getChildren() { + if (current == null) { + if(doc.hasRootElement()) { + XML[] ch_xml = new XML[1]; + ch_xml[0] = new XML(doc, doc.getRootElement()); + return ch_xml; + } else { + return null; + } + } else { + List ch_element = current.getChildren(); + XML[] ch_xml = new XML[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + ch_xml[i] = new XML(doc, ch_element.get(i)); + } + return ch_xml; + } + } + + /** + * Liefert bestimmte Kinder des Elements als Array von XML-Objekten. + * Die Methode gibt dabei alle Kinder zurück, die dem angegebenen Namen entsprechen. + * @param name Name der gesuchten Kind-Objekte + * @return Array der Kinder als XML-Objekte + */ + public XML[] getChildren(String name) { + if (current == null) { + if(doc.hasRootElement()) { + XML[] ch_xml = new XML[1]; + ch_xml[0] = new XML(doc, doc.getRootElement()); + if(doc.getRootElement().getName().equals(name)){ + return ch_xml; + } else { + return null; + } + } else { + return null; + } + } else { + List ch_element = current.getChildren(name); + XML[] ch_xml = new XML[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + ch_xml[i] = new XML(doc, ch_element.get(i)); + } + return ch_xml; + } + } + + /** + * Liefert das erste Kind des Elements mit einem bestimmten Namen. + * Die Methode gibt das erste Kind zurück, das dem angegebenen Namen entsprechen. + * @param name Name des gesuchten Kind-Objektes + * @return Kind als XML-Objekt + */ + + public XML getChild(String name) { + if (current == null) { + Element e = doc.getRootElement(); + if (e.getName().equals(name)) { + return new XML(doc, e); + } else { + return null; + } + } else { + String[] names = name.split("/"); + Element e = current; + int i = 0; + while(i < names.length) { + e = e.getChild(names[i]); + if (e==null) return null; + i++; + } + return new XML(doc, e); + } + } + + /** + * Liefert das i. Kind des Elements. + * Die Methode gibt das i. Kind des aktuellen Elements zurück. + * @param i Nummer des Kindes + * @return Kind als XML-Objekt + */ + public XML getChild(int i) { + if (current == null) { + return new XML(doc, doc.getRootElement()); + } else { + List ch_element = current.getChildren(); + if (i>=ch_element.size()) return null; + return new XML(doc, ch_element.get(i)); + } + } + + //--------------------------------------------------- Methoden für das aktuelle Element ------------------------------------------------- + /** + * Frage den Namen des aktuellen Elements ab + * @return Namen des Elements + */ + public String getName() { + if (current==null) return ""; + return current.getName(); + } + + /** + * Setze den Namen des aktuellen Elements. + * @param name Neuer Name des Elements + */ + public void setName(String name) { + if (current==null) return; + current.setName(name); + } + + /** + * liefert die Anzahl der Attribute eines Elements. + * @return Anzahl des Attribute + */ + public int getAttributeCount() { + if (current == null) return 0; + return current.getAttributes().size(); + } + + /** + * liefert zurück, ob das aktuelle Element Attribute hat . + * @return true, wenn es Attribute gibt + */ + public boolean hasAttribute() { + if (current == null) return false; + return current.getAttributes().size()>0; + } + + /** + * Ruft alle Attribute des angegebenen Elements ab und gibt sie als Array von Strings zurück. + * @return Liste der Attributnamen + */ + public String[] listAttributes() { + if (current == null) return null; + List attr = current.getAttributes(); + String[] names = new String[attr.size()]; + for(int i=0; i < attr.size() ; i++) { + names[i] = attr.get(i).getName(); + } + return names; + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs + */ + public String getString(String attribute) { + if (current==null) return ""; + return current.getAttributeValue(attribute); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs + */ + public String getString(String attribute, String defaultValue) { + if (current==null) return defaultValue; + return current.getAttributeValue(attribute,defaultValue); + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param text neuer Wert des Attributs + */ + public void setString(String attribute, String text) { + if (current==null) return; + current.setAttribute(attribute, text); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Integer-Zahl + */ + public int getInt(String attribute) { + if (current==null) return 0; + try{ + int i = Integer.parseInt(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als Integer-Zahl + */ + public int getInt(String attribute, int defaultValue) { + if (current==null) return defaultValue; + try{ + int i = Integer.parseInt(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setInt(String attribute, int value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Float-Zahl + */ + public float getFloat(String attribute) { + if (current==null) return 0; + try{ + float i = Float.parseFloat(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als Float-Zahl + */ + public float getFloat(String attribute, float defaultValue) { + if (current==null) return defaultValue; + try{ + float i = Float.parseFloat(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setFloat(String attribute, float value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Double-Zahl + */ + public double getDouble(String attribute) { + if (current==null) return 0; + try{ + double i = Double.parseDouble(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + +/** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als double-Zahl + */ + public double getDouble(String attribute, double defaultValue) { + if (current==null) return defaultValue; + try{ + double i = Double.parseDouble(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setDouble(String attribute, double value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt den Inhalt/Text des aktuellen Elements ab + * @return Inhalt des Elements + */ + public String getContent() { + if ( current==null) return ""; + + return current.getText(); + } + + /** + * Fragt den Inhalt/Text des aktuellen Elements ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardtext + * @return Inhalt des Elements + */ + public String getContent(String defaultValue) { + if ( current==null) return defaultValue; + String t = current.getText(); + if(t.equals("")) t = defaultValue; + return t; + } + + /** + * Setzt den Inhalt/Text des aktuellen Elements + * @param text Neuer Inhalt des Elements + */ + public void setContent(String text) { + if ( current==null) return; + current.setText(text); + } + + + /** + * Fragt den Inhalt des aktuellen Elements als Integerzahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ public int getIntContent(int defaultValue) { + if ( current==null) return defaultValue; + try{ + int i = Integer.parseInt(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Integerzahl ab + * @return Inhalt des Elements + */ + public int getIntContent() { + if ( current==null) return 0; + try{ + int i = Integer.parseInt(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setIntContent(int value) { + if ( current==null) return; + current.setText(""+value); + } + + + /** + * Fragt den Inhalt des aktuellen Elements als Floatzahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ + public float getFloatContent(float defaultValue) { + if ( current==null) return defaultValue; + try{ + float i = Float.parseFloat(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Floatzahl ab + * @return Inhalt des Elements + */ + public float getFloatContent() { + if ( current==null) return 0; + try{ + float i = Float.parseFloat(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setFloatContent(float value) { + if ( current==null) return; + current.setText(""+value); + } + +/** + * Fragt den Inhalt des aktuellen Elements als Doublezahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ + public double getDoubleContent(double defaultValue) { + if ( current==null) return defaultValue; + try{ + double i = Double.parseDouble(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Doublezahl ab + * @return Inhalt des Elements + */ + public double getDoubleContent() { + if ( current==null) return 0; + try{ + double i = Double.parseDouble(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setDoubleContent(double value) { + if ( current==null) return; + current.setText(""+value); + } + + + // ----------------------------------------------- XML-Struktur aufbauen ------------------------------------------------ + /** Erzeuge neues Element nach der aktuellen Position und setze dieses als aktuelles Element + * @param name Name des neuen Elements + * @return neues Element als XML-Objekt + */ + public XML addChild(String name) { + Element e = new Element(name); + if(current == null){ // man ist auf Root-Ebene + doc.setRootElement(e); + + } + else { + current.addContent(e); + } // end of if-else + return new XML(doc, e); + } + + /** + * liefert das aktuelle Element als jdom-Element-Objekt + * @return aktuelles Element + */ + private Element getCurrent() { + return current; + } + + /** + * löscht ein Kind des aktuellen Knotens. + * Ist kid kein Kind des aktuellen Elements passiert gar nichts. + * @param kid XML-Objekt des Kindes + */ + public void removeChild(XML kid) { + if (current == null) return; + Element e = kid.getCurrent(); + int index = current.indexOf(e); + if(index >= 0) { current.removeContent(e);} + } + +} diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg14b_highscoretabelle/images/balken.png b/03_vorlagen_tauschordner/02_greenfoot/alg14b_highscoretabelle/images/balken.png new file mode 100644 index 0000000..9ff1ffc Binary files /dev/null and b/03_vorlagen_tauschordner/02_greenfoot/alg14b_highscoretabelle/images/balken.png differ diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg14b_highscoretabelle/images/bilderrahmen.png b/03_vorlagen_tauschordner/02_greenfoot/alg14b_highscoretabelle/images/bilderrahmen.png new file mode 100644 index 0000000..7f34e32 Binary files /dev/null and b/03_vorlagen_tauschordner/02_greenfoot/alg14b_highscoretabelle/images/bilderrahmen.png differ diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg14b_highscoretabelle/jdom-1.1.3.jar b/03_vorlagen_tauschordner/02_greenfoot/alg14b_highscoretabelle/jdom-1.1.3.jar new file mode 100644 index 0000000..a287727 Binary files /dev/null and b/03_vorlagen_tauschordner/02_greenfoot/alg14b_highscoretabelle/jdom-1.1.3.jar differ diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg14b_highscoretabelle/project.greenfoot b/03_vorlagen_tauschordner/02_greenfoot/alg14b_highscoretabelle/project.greenfoot new file mode 100644 index 0000000..b44cbea --- /dev/null +++ b/03_vorlagen_tauschordner/02_greenfoot/alg14b_highscoretabelle/project.greenfoot @@ -0,0 +1,93 @@ +#Greenfoot project file +class.Highscore.image=balken.png +class.PictureViewer.image=bilderrahmen.png +dependency1.from=MyWorld +dependency1.to=Highscore +dependency1.type=UsesDependency +dependency2.from=PictureViewer +dependency2.to=Picture +dependency2.type=UsesDependency +dependency3.from=Highscore +dependency3.to=Table +dependency3.type=UsesDependency +dependency4.from=Table +dependency4.to=TableRow +dependency4.type=UsesDependency +dependency5.from=Picture +dependency5.to=PictureViewer +dependency5.type=UsesDependency +editor.fx.0.height=739 +editor.fx.0.width=816 +editor.fx.0.x=552 +editor.fx.0.y=100 +height=885 +package.numDependencies=5 +package.numTargets=7 +project.charset=UTF-8 +publish.hasSource=false +publish.locked=true +publish.longDesc= +publish.shortDesc= +publish.tags= +publish.title= +publish.url= +readme.height=58 +readme.name=@README +readme.width=47 +readme.x=10 +readme.y=10 +simulation.speed=97 +target1.height=50 +target1.name=PictureViewer +target1.showInterface=false +target1.type=ClassTarget +target1.width=100 +target1.x=0 +target1.y=0 +target2.height=50 +target2.name=Table +target2.showInterface=false +target2.type=ClassTarget +target2.width=80 +target2.x=0 +target2.y=0 +target3.height=50 +target3.name=Picture +target3.showInterface=false +target3.type=ClassTarget +target3.width=80 +target3.x=0 +target3.y=0 +target4.height=50 +target4.name=XML +target4.showInterface=false +target4.type=ClassTarget +target4.width=100 +target4.x=0 +target4.y=0 +target5.height=50 +target5.name=Highscore +target5.showInterface=false +target5.type=ClassTarget +target5.width=80 +target5.x=0 +target5.y=0 +target6.height=50 +target6.name=TableRow +target6.showInterface=false +target6.type=ClassTarget +target6.width=80 +target6.x=0 +target6.y=0 +target7.height=50 +target7.name=MyWorld +target7.showInterface=false +target7.type=ClassTarget +target7.width=80 +target7.x=0 +target7.y=0 +version=3.0.0 +width=1350 +world.lastInstantiated=MyWorld +xPosition=375 +yPosition=128 diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg14b_highscoretabelle/punkte.csv b/03_vorlagen_tauschordner/02_greenfoot/alg14b_highscoretabelle/punkte.csv new file mode 100644 index 0000000..d6e8dfd --- /dev/null +++ b/03_vorlagen_tauschordner/02_greenfoot/alg14b_highscoretabelle/punkte.csv @@ -0,0 +1,6 @@ +"Name","Punkte" +Niko,216 +Klaus,591 +Anna,857 +Lena,180 +Winfried,168 diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg14b_highscoretabelle/testfall1.csv b/03_vorlagen_tauschordner/02_greenfoot/alg14b_highscoretabelle/testfall1.csv new file mode 100644 index 0000000..92c538f --- /dev/null +++ b/03_vorlagen_tauschordner/02_greenfoot/alg14b_highscoretabelle/testfall1.csv @@ -0,0 +1,20 @@ +"Name","Punkte" +Spieler1,0 +Spieler1,6 +Spieler2,19 +Spieler6,1 +Spieler4,45 +Spieler3,23 +Spieler3,12 +Spieler2,44 +Spieler1,72 +Spieler5,12 +Spieler6,4 +Spieler7,2 +Spieler4,98 +Spieler3,21 +Spieler3,12 +Spieler2,32 +Spieler1,12 +Spieler5,44 +Spieler3,12 diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg14b_highscoretabelle/testfall2.csv b/03_vorlagen_tauschordner/02_greenfoot/alg14b_highscoretabelle/testfall2.csv new file mode 100644 index 0000000..091c003 --- /dev/null +++ b/03_vorlagen_tauschordner/02_greenfoot/alg14b_highscoretabelle/testfall2.csv @@ -0,0 +1,20 @@ +"Name","Punkte" +Spieler1,-5 +Spieler1,-6 +Spieler2,-19 +Spieler6,-1 +Spieler4,-45 +Spieler3,-23 +Spieler3,-12 +Spieler2,-44 +Spieler1,-72 +Spieler5,-12 +Spieler6,-4 +Spieler7,-2 +Spieler4,-98 +Spieler3,-21 +Spieler3,-12 +Spieler2,-32 +Spieler1,-12 +Spieler5,-44 +Spieler3,-12 diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg14b_highscoretabelle/testfall3.csv b/03_vorlagen_tauschordner/02_greenfoot/alg14b_highscoretabelle/testfall3.csv new file mode 100644 index 0000000..3bc26b2 --- /dev/null +++ b/03_vorlagen_tauschordner/02_greenfoot/alg14b_highscoretabelle/testfall3.csv @@ -0,0 +1,2 @@ +"Name","Punkte" +Spieler1,45 diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg14b_highscoretabelle/testfall4.csv b/03_vorlagen_tauschordner/02_greenfoot/alg14b_highscoretabelle/testfall4.csv new file mode 100644 index 0000000..e74e6d5 --- /dev/null +++ b/03_vorlagen_tauschordner/02_greenfoot/alg14b_highscoretabelle/testfall4.csv @@ -0,0 +1 @@ +"Name","Punkte" diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg15_xydiagramm/Amplitudes.csv b/03_vorlagen_tauschordner/02_greenfoot/alg15_xydiagramm/Amplitudes.csv new file mode 100644 index 0000000..bc2151b --- /dev/null +++ b/03_vorlagen_tauschordner/02_greenfoot/alg15_xydiagramm/Amplitudes.csv @@ -0,0 +1,12219 @@ +"Time (s)","Sound pressure level (dB)" +0.000000000E0,6.133205686E1 +1.130000000E-1,5.602431153E1 +3.840000000E-1,3.897519867E1 +7.780000000E-1,4.208195145E1 +1.036000000E0,3.840936313E1 +1.305000000E0,3.561092139E1 +1.587000000E0,4.663257633E1 +1.829000000E0,5.311883882E1 +2.084000000E0,5.299431820E1 +2.357000000E0,5.747397858E1 +2.643000000E0,5.626338063E1 +2.949000000E0,5.790811120E1 +3.238000000E0,5.874544026E1 +3.497000000E0,5.736162139E1 +3.775000000E0,5.897817442E1 +4.097000000E0,5.789822970E1 +4.357000000E0,5.312015799E1 +4.626000000E0,5.710192134E1 +4.941000000E0,6.275087240E1 +5.235000000E0,5.784358767E1 +5.535000000E0,5.388577420E1 +5.827000000E0,5.403495101E1 +6.090000000E0,5.428355086E1 +6.339000000E0,6.064473144E1 +6.616000000E0,6.271091291E1 +6.850000000E0,6.982615367E1 +7.128000000E0,7.050308750E1 +7.487000000E0,5.395311298E1 +7.760000000E0,5.036401582E1 +8.065000000E0,4.614125463E1 +8.361000000E0,6.244776407E1 +8.614000000E0,6.315719526E1 +8.862000000E0,5.981740395E1 +9.123000000E0,5.907292535E1 +9.374000000E0,5.661523092E1 +9.665000000E0,6.210368813E1 +9.948000000E0,6.140958115E1 +1.021100000E1,5.697007655E1 +1.058300000E1,5.460455934E1 +1.084000000E1,5.408516231E1 +1.115300000E1,5.907221377E1 +1.142100000E1,6.113412429E1 +1.172700000E1,6.267949704E1 +1.197100000E1,6.245109870E1 +1.226500000E1,6.342534529E1 +1.255800000E1,6.810008108E1 +1.287100000E1,6.036891848E1 +1.313400000E1,5.913231814E1 +1.342700000E1,5.973818566E1 +1.371600000E1,5.534371651E1 +1.401200000E1,5.694514867E1 +1.431200000E1,6.134814982E1 +1.461100000E1,5.900023912E1 +1.484600000E1,5.689908400E1 +1.515800000E1,5.296474858E1 +1.544000000E1,5.608528071E1 +1.569300000E1,5.728560404E1 +1.596900000E1,5.837984103E1 +1.620100000E1,5.718896638E1 +1.649200000E1,5.909973037E1 +1.678900000E1,5.705554272E1 +1.716300000E1,6.079937758E1 +1.747400000E1,5.618116117E1 +1.775200000E1,5.519881157E1 +1.803800000E1,5.402386340E1 +1.829100000E1,5.678484358E1 +1.858100000E1,5.954639303E1 +1.882300000E1,6.030021638E1 +1.908000000E1,5.588340744E1 +1.934400000E1,5.668691200E1 +1.958800000E1,6.042765467E1 +1.983400000E1,5.839794223E1 +2.008500000E1,5.457976882E1 +2.039500000E1,5.974390604E1 +2.064000000E1,6.049774386E1 +2.092900000E1,6.029857781E1 +2.117800000E1,6.116406203E1 +2.142700000E1,5.664722837E1 +2.173400000E1,5.823294996E1 +2.203100000E1,5.517538657E1 +2.229000000E1,5.322823206E1 +2.259900000E1,6.180779467E1 +2.285300000E1,6.106216386E1 +2.314900000E1,5.883321877E1 +2.347100000E1,6.045262422E1 +2.375000000E1,6.163931220E1 +2.406000000E1,4.841181734E1 +2.432800000E1,4.372149986E1 +2.462900000E1,5.625563946E1 +2.487100000E1,5.672759349E1 +2.513200000E1,5.896193725E1 +2.540800000E1,5.893011728E1 +2.566400000E1,5.857261268E1 +2.596700000E1,5.859012974E1 +2.621900000E1,5.635586832E1 +2.648700000E1,5.350948293E1 +2.673900000E1,5.430043092E1 +2.701400000E1,5.666610976E1 +2.727500000E1,5.218421407E1 +2.753100000E1,5.689076583E1 +2.782000000E1,5.796831886E1 +2.806900000E1,5.608205064E1 +2.831700000E1,5.482273815E1 +2.861600000E1,5.392425499E1 +2.888300000E1,5.329416010E1 +2.914800000E1,5.366916703E1 +2.940200000E1,5.280847155E1 +2.968000000E1,5.333298066E1 +2.994300000E1,5.497085471E1 +3.031200000E1,5.753094076E1 +3.057900000E1,5.655381974E1 +3.086100000E1,5.517704804E1 +3.115600000E1,5.592585858E1 +3.140700000E1,6.212826207E1 +3.166000000E1,5.699502474E1 +3.193500000E1,6.025129057E1 +3.223100000E1,5.686166208E1 +3.247300000E1,5.807641915E1 +3.271900000E1,6.065155151E1 +3.296400000E1,5.961384387E1 +3.320500000E1,6.119064420E1 +3.354400000E1,5.548464633E1 +3.378000000E1,5.699661616E1 +3.408000000E1,5.653770482E1 +3.438000000E1,5.083503664E1 +3.468200000E1,5.695639918E1 +3.495800000E1,5.566535489E1 +3.524700000E1,5.914853092E1 +3.552700000E1,5.758441289E1 +3.576600000E1,6.085665801E1 +3.606700000E1,5.862586334E1 +3.630600000E1,5.096841655E1 +3.662200000E1,6.009246966E1 +3.689400000E1,5.981749726E1 +3.715300000E1,6.108830629E1 +3.740300000E1,5.724514841E1 +3.766500000E1,5.934850613E1 +3.793000000E1,5.725470328E1 +3.819100000E1,5.843556167E1 +3.847700000E1,5.697759761E1 +3.874000000E1,5.721548979E1 +3.901600000E1,5.649629904E1 +3.927200000E1,5.850326911E1 +3.954600000E1,5.691951660E1 +3.993900000E1,5.357092442E1 +4.023400000E1,5.817046878E1 +4.053000000E1,5.554327077E1 +4.081200000E1,5.802928061E1 +4.103900000E1,5.663899845E1 +4.128700000E1,5.494654466E1 +4.155800000E1,5.564956216E1 +4.181900000E1,5.663250304E1 +4.211300000E1,5.652236278E1 +4.238100000E1,5.614203459E1 +4.264000000E1,5.433145844E1 +4.295000000E1,6.132645299E1 +4.326200000E1,6.040612545E1 +4.351400000E1,5.905916902E1 +4.377100000E1,5.885516023E1 +4.401000000E1,5.514814582E1 +4.430800000E1,5.663232510E1 +4.455900000E1,5.055807811E1 +4.482100000E1,5.614950318E1 +4.513300000E1,6.025044420E1 +4.537500000E1,5.643182261E1 +4.568900000E1,5.709089314E1 +4.600500000E1,5.480136123E1 +4.624500000E1,5.924046686E1 +4.656900000E1,6.172358505E1 +4.684100000E1,5.645515217E1 +4.711100000E1,6.002156043E1 +4.736300000E1,6.182669975E1 +4.759700000E1,5.557741963E1 +4.786700000E1,5.598662295E1 +4.818300000E1,5.664767890E1 +4.847900000E1,5.956168629E1 +4.874200000E1,5.713315811E1 +4.898900000E1,5.765479272E1 +4.931400000E1,5.507101982E1 +4.961600000E1,5.361677606E1 +4.990000000E1,5.558547080E1 +5.019600000E1,5.402951441E1 +5.046500000E1,5.805429700E1 +5.078800000E1,5.327636151E1 +5.110300000E1,4.980825483E1 +5.137100000E1,5.290981249E1 +5.165200000E1,4.817864123E1 +5.190100000E1,5.585478693E1 +5.214500000E1,5.457392293E1 +5.242900000E1,5.449921652E1 +5.272500000E1,5.537781025E1 +5.302100000E1,5.598018287E1 +5.326000000E1,5.612851081E1 +5.355800000E1,5.312697891E1 +5.384800000E1,5.799703575E1 +5.409200000E1,5.662162553E1 +5.433900000E1,5.392344795E1 +5.459100000E1,5.398098819E1 +5.494900000E1,5.489231889E1 +5.527100000E1,5.658153835E1 +5.552800000E1,5.624900056E1 +5.589500000E1,4.979935744E1 +5.616900000E1,5.146998424E1 +5.645400000E1,5.878755245E1 +5.668600000E1,5.846227673E1 +5.694400000E1,5.977267383E1 +5.726200000E1,5.508647523E1 +5.754400000E1,5.138853207E1 +5.784300000E1,5.327451232E1 +5.808600000E1,5.887142781E1 +5.837800000E1,5.858062431E1 +5.862200000E1,5.917458096E1 +5.889700000E1,6.050411670E1 +5.926300000E1,5.908687144E1 +5.952100000E1,5.570790758E1 +5.981900000E1,5.444849000E1 +6.006100000E1,5.201240285E1 +6.032000000E1,4.755830762E1 +6.061900000E1,5.204388424E1 +6.086500000E1,5.626914911E1 +6.117500000E1,5.280379974E1 +6.142900000E1,5.093923019E1 +6.173000000E1,5.460427137E1 +6.197800000E1,5.299601182E1 +6.230600000E1,5.424208739E1 +6.257600000E1,5.253762352E1 +6.283700000E1,5.544043962E1 +6.309800000E1,5.527614156E1 +6.335400000E1,5.747262922E1 +6.360700000E1,5.468151445E1 +6.384900000E1,5.582905565E1 +6.410700000E1,5.802400474E1 +6.435000000E1,5.204893636E1 +6.459600000E1,5.280146425E1 +6.486300000E1,4.876648093E1 +6.509700000E1,5.311679703E1 +6.537500000E1,5.192778643E1 +6.571400000E1,5.346709918E1 +6.597900000E1,5.370921552E1 +6.627900000E1,5.676705279E1 +6.652200000E1,5.832258643E1 +6.676600000E1,6.257736406E1 +6.703100000E1,6.295448429E1 +6.737800000E1,6.100964383E1 +6.766100000E1,5.182636016E1 +6.790700000E1,4.952717893E1 +6.821100000E1,5.667475715E1 +6.850300000E1,5.872819054E1 +6.882100000E1,6.004516195E1 +6.907300000E1,5.559244143E1 +6.935100000E1,5.600379936E1 +6.961500000E1,5.338006499E1 +6.987600000E1,5.360104859E1 +7.011900000E1,4.644905289E1 +7.037100000E1,4.528909123E1 +7.067200000E1,5.787885076E1 +7.091600000E1,5.602551032E1 +7.115700000E1,5.989544193E1 +7.142200000E1,6.110384869E1 +7.167900000E1,5.887448069E1 +7.192600000E1,5.797896456E1 +7.226000000E1,5.965665129E1 +7.251000000E1,6.477744226E1 +7.281200000E1,6.243775536E1 +7.310800000E1,5.921576979E1 +7.335600000E1,6.629420582E1 +7.364100000E1,6.683725429E1 +7.392300000E1,5.758295449E1 +7.418800000E1,5.654909286E1 +7.448600000E1,5.881341247E1 +7.472100000E1,5.546609910E1 +7.498300000E1,5.586542777E1 +7.526600000E1,5.463216262E1 +7.558500000E1,5.947397496E1 +7.586200000E1,6.218459899E1 +7.609800000E1,6.134189272E1 +7.635800000E1,5.727526170E1 +7.666700000E1,5.579062978E1 +7.699300000E1,6.015063828E1 +7.729000000E1,6.022787424E1 +7.756300000E1,5.646982462E1 +7.782200000E1,6.005734442E1 +7.813200000E1,5.950776839E1 +7.842200000E1,6.314009710E1 +7.880400000E1,5.425753266E1 +7.910400000E1,5.909139002E1 +7.935300000E1,5.600377253E1 +7.962300000E1,6.036368528E1 +7.993700000E1,5.940415340E1 +8.018900000E1,6.102152187E1 +8.050000000E1,6.619104713E1 +8.074000000E1,6.149981675E1 +8.098900000E1,5.978899259E1 +8.123800000E1,5.963150500E1 +8.150300000E1,6.509054947E1 +8.181300000E1,6.387458039E1 +8.220700000E1,6.421798778E1 +8.246100000E1,6.092500605E1 +8.271900000E1,6.039313205E1 +8.297100000E1,5.885189543E1 +8.328000000E1,6.068901175E1 +8.355600000E1,6.531581124E1 +8.381900000E1,6.460984287E1 +8.407800000E1,6.281147078E1 +8.435000000E1,5.961599483E1 +8.463400000E1,5.915457491E1 +8.489200000E1,5.383227231E1 +8.513000000E1,5.278474817E1 +8.551100000E1,6.165964712E1 +8.574900000E1,6.442604107E1 +8.600700000E1,6.551005247E1 +8.626000000E1,6.660338206E1 +8.650900000E1,6.304014634E1 +8.676000000E1,6.488065719E1 +8.701800000E1,6.416881833E1 +8.728000000E1,5.892166498E1 +8.754500000E1,5.946249393E1 +8.785000000E1,6.506678358E1 +8.809400000E1,5.703264442E1 +8.840500000E1,6.164086486E1 +8.876300000E1,6.276173959E1 +8.906100000E1,5.818071871E1 +8.930500000E1,5.844394446E1 +8.956300000E1,5.657440647E1 +8.987400000E1,6.120356137E1 +9.011500000E1,6.094306560E1 +9.041100000E1,5.978472131E1 +9.065500000E1,6.008128664E1 +9.092400000E1,5.758286780E1 +9.123300000E1,5.353387594E1 +9.151600000E1,5.676204998E1 +9.183800000E1,5.245702159E1 +9.218200000E1,5.642589170E1 +9.243600000E1,5.542467479E1 +9.268000000E1,5.580829615E1 +9.297600000E1,5.148061441E1 +9.322800000E1,4.635974806E1 +9.353200000E1,5.465579762E1 +9.377300000E1,5.154999739E1 +9.402200000E1,5.544992474E1 +9.427900000E1,5.302390200E1 +9.453300000E1,5.127982623E1 +9.478800000E1,5.263086656E1 +9.503100000E1,5.128121484E1 +9.532100000E1,5.061466876E1 +9.557700000E1,5.328260476E1 +9.582800000E1,5.101663724E1 +9.607100000E1,5.400893265E1 +9.640400000E1,5.756552061E1 +9.665500000E1,5.665487755E1 +9.690400000E1,5.719000980E1 +9.715400000E1,5.593995548E1 +9.740400000E1,5.420194495E1 +9.771300000E1,4.867232074E1 +9.802100000E1,5.053798103E1 +9.830700000E1,4.874294948E1 +9.857500000E1,5.754515654E1 +9.883700000E1,5.863618568E1 +9.909700000E1,6.070195076E1 +9.935300000E1,5.434874196E1 +9.961300000E1,6.163600431E1 +9.987300000E1,5.555228218E1 +1.001200000E2,5.733850418E1 +1.003910000E2,6.133233800E1 +1.006620000E2,5.853313440E1 +1.009020000E2,5.435835494E1 +1.011680000E2,5.329891948E1 +1.014680000E2,5.356470018E1 +1.018410000E2,5.574288130E1 +1.021370000E2,5.927571979E1 +1.024000000E2,5.789956910E1 +1.026980000E2,6.081738139E1 +1.029540000E2,5.575615853E1 +1.032580000E2,5.337382111E1 +1.035140000E2,5.562761746E1 +1.038150000E2,5.905624776E1 +1.041040000E2,5.696105750E1 +1.043990000E2,6.170938149E1 +1.046370000E2,5.823687000E1 +1.049080000E2,6.066674703E1 +1.051740000E2,6.220969933E1 +1.054810000E2,5.755805236E1 +1.057660000E2,5.735691579E1 +1.060450000E2,5.761618087E1 +1.063040000E2,5.188413372E1 +1.065680000E2,5.643639822E1 +1.068740000E2,5.312430876E1 +1.071280000E2,5.924995828E1 +1.073900000E2,5.546187342E1 +1.076920000E2,5.474389270E1 +1.079790000E2,5.600814816E1 +1.082440000E2,5.561453096E1 +1.084980000E2,5.408559240E1 +1.087580000E2,5.622058302E1 +1.090160000E2,5.768852773E1 +1.092670000E2,5.516804842E1 +1.095340000E2,5.973626648E1 +1.098120000E2,6.403409511E1 +1.100690000E2,6.035201036E1 +1.103490000E2,5.940482770E1 +1.105950000E2,5.932126109E1 +1.108600000E2,5.859387697E1 +1.111460000E2,5.929800416E1 +1.114110000E2,5.930503134E1 +1.117890000E2,6.170536210E1 +1.120410000E2,6.214563711E1 +1.123490000E2,5.810151097E1 +1.126320000E2,5.823719807E1 +1.128910000E2,6.454485320E1 +1.131870000E2,6.755031626E1 +1.134560000E2,6.410743881E1 +1.137200000E2,5.913442857E1 +1.139870000E2,6.382823805E1 +1.142400000E2,5.859239523E1 +1.145180000E2,5.135859796E1 +1.147890000E2,5.294563188E1 +1.151440000E2,5.357868048E1 +1.154220000E2,5.561359505E1 +1.156620000E2,5.645675088E1 +1.159670000E2,5.879425595E1 +1.162610000E2,5.918610512E1 +1.164990000E2,6.083658676E1 +1.167470000E2,5.526645697E1 +1.169880000E2,5.471312988E1 +1.172910000E2,6.211796732E1 +1.175510000E2,5.417468648E1 +1.177930000E2,5.576739557E1 +1.180750000E2,5.912472365E1 +1.184660000E2,5.718213173E1 +1.187710000E2,5.747081312E1 +1.190170000E2,5.741742618E1 +1.192690000E2,5.379557814E1 +1.195330000E2,5.428733520E1 +1.197780000E2,6.177329402E1 +1.200450000E2,5.672333166E1 +1.203170000E2,5.584947723E1 +1.205670000E2,5.382665718E1 +1.208400000E2,5.443690083E1 +1.211280000E2,5.221565874E1 +1.214800000E2,5.516249741E1 +1.217540000E2,5.676279334E1 +1.220050000E2,5.303796336E1 +1.222680000E2,5.258840561E1 +1.225120000E2,5.671935607E1 +1.227660000E2,4.902892756E1 +1.230240000E2,4.264962220E1 +1.232830000E2,4.818154680E1 +1.235340000E2,5.204058636E1 +1.238430000E2,5.649936271E1 +1.241410000E2,5.396154490E1 +1.244200000E2,5.428877275E1 +1.246760000E2,4.778715710E1 +1.249500000E2,4.912370762E1 +1.252110000E2,5.114426735E1 +1.255020000E2,5.345096378E1 +1.257410000E2,5.581149074E1 +1.260430000E2,5.211774829E1 +1.263320000E2,5.470047014E1 +1.265660000E2,5.399085344E1 +1.268600000E2,5.981732528E1 +1.271210000E2,5.944116770E1 +1.273530000E2,5.668281238E1 +1.275970000E2,5.042419391E1 +1.279080000E2,5.014554177E1 +1.282260000E2,5.350461413E1 +1.285240000E2,5.453533258E1 +1.287780000E2,5.809919663E1 +1.290280000E2,5.729580956E1 +1.292980000E2,5.681749266E1 +1.296010000E2,5.542882864E1 +1.298980000E2,5.612046892E1 +1.302070000E2,6.074750886E1 +1.304620000E2,5.979349108E1 +1.307520000E2,5.806574219E1 +1.310590000E2,5.738881777E1 +1.314010000E2,5.595280312E1 +1.316630000E2,5.401154636E1 +1.319120000E2,5.499471091E1 +1.321620000E2,5.551354327E1 +1.324640000E2,6.567912108E1 +1.327650000E2,5.725129100E1 +1.330150000E2,6.452906176E1 +1.333160000E2,5.778565576E1 +1.335760000E2,6.242194617E1 +1.338200000E2,5.570863747E1 +1.340710000E2,5.755877138E1 +1.343660000E2,6.819206156E1 +1.346260000E2,6.094769164E1 +1.349310000E2,6.447198163E1 +1.351810000E2,5.482297950E1 +1.354630000E2,6.327012623E1 +1.357210000E2,5.723157337E1 +1.359770000E2,5.835004111E1 +1.362140000E2,6.413045068E1 +1.365290000E2,6.022343539E1 +1.368110000E2,5.969265006E1 +1.371070000E2,5.589766444E1 +1.373670000E2,6.089100679E1 +1.376970000E2,6.762783521E1 +1.379410000E2,5.740809854E1 +1.381870000E2,6.711182247E1 +1.384650000E2,6.290175574E1 +1.387060000E2,6.352322572E1 +1.390400000E2,5.897504025E1 +1.392980000E2,5.872568346E1 +1.396520000E2,5.582882684E1 +1.399140000E2,5.874428562E1 +1.402160000E2,5.275369064E1 +1.404650000E2,5.181123336E1 +1.407250000E2,4.758951485E1 +1.410550000E2,4.601470876E1 +1.413500000E2,5.203790008E1 +1.416310000E2,5.380793436E1 +1.418780000E2,5.006781735E1 +1.421580000E2,4.792469964E1 +1.424020000E2,5.136650820E1 +1.427060000E2,5.127969468E1 +1.430200000E2,5.304643312E1 +1.433210000E2,5.218299100E1 +1.436050000E2,5.568762266E1 +1.439010000E2,5.522696018E1 +1.442570000E2,5.919224289E1 +1.445880000E2,6.201398016E1 +1.448680000E2,5.750742223E1 +1.451160000E2,5.811963790E1 +1.454090000E2,5.695462128E1 +1.456560000E2,5.854812337E1 +1.458980000E2,5.886107911E1 +1.461720000E2,5.454171305E1 +1.464480000E2,5.674410925E1 +1.466770000E2,5.450912101E1 +1.469270000E2,5.953864028E1 +1.471790000E2,6.097527460E1 +1.475260000E2,5.825769450E1 +1.478290000E2,5.780473579E1 +1.480790000E2,6.185542851E1 +1.483350000E2,5.390929394E1 +1.486330000E2,5.400087479E1 +1.488750000E2,5.328656685E1 +1.491190000E2,5.599536596E1 +1.494200000E2,5.721648542E1 +1.497150000E2,5.787493165E1 +1.500380000E2,5.480047158E1 +1.503480000E2,5.002404450E1 +1.506590000E2,5.486151348E1 +1.509700000E2,6.245235750E1 +1.512360000E2,5.831236552E1 +1.514820000E2,6.253825815E1 +1.517260000E2,6.440134635E1 +1.520120000E2,5.646251942E1 +1.523080000E2,5.569851104E1 +1.525630000E2,5.574195002E1 +1.528610000E2,6.073633455E1 +1.531220000E2,5.704364811E1 +1.533960000E2,5.858521931E1 +1.536900000E2,6.334346239E1 +1.540080000E2,5.734505299E1 +1.542490000E2,6.522555977E1 +1.544980000E2,5.500712815E1 +1.547420000E2,5.698741268E1 +1.549830000E2,5.097374633E1 +1.552760000E2,5.421781291E1 +1.555100000E2,5.276919678E1 +1.558070000E2,5.444895965E1 +1.560410000E2,5.023818561E1 +1.563440000E2,5.460917302E1 +1.565880000E2,5.459938847E1 +1.568920000E2,5.843131092E1 +1.572210000E2,5.876667307E1 +1.574850000E2,5.735202828E1 +1.577300000E2,5.496399564E1 +1.580290000E2,5.249359356E1 +1.582920000E2,5.216967072E1 +1.585400000E2,5.506360532E1 +1.588040000E2,4.854470136E1 +1.590480000E2,5.455647594E1 +1.593040000E2,5.480802962E1 +1.595560000E2,5.117555202E1 +1.598230000E2,5.525001141E1 +1.600680000E2,6.028739680E1 +1.604080000E2,6.051466285E1 +1.606910000E2,5.941686107E1 +1.609450000E2,6.263789003E1 +1.611920000E2,5.862463866E1 +1.614980000E2,5.858673558E1 +1.617730000E2,5.766546261E1 +1.620210000E2,5.485521148E1 +1.623080000E2,5.814732367E1 +1.625850000E2,5.829863647E1 +1.628370000E2,5.473457172E1 +1.631510000E2,5.323729241E1 +1.634320000E2,5.795543593E1 +1.637670000E2,5.845831909E1 +1.640670000E2,5.883503284E1 +1.643040000E2,5.933733684E1 +1.645990000E2,5.316483696E1 +1.648620000E2,5.628275472E1 +1.651110000E2,5.612764782E1 +1.654290000E2,5.739409022E1 +1.657290000E2,5.275374209E1 +1.660100000E2,5.606330732E1 +1.662350000E2,4.973765069E1 +1.664840000E2,4.855931683E1 +1.667820000E2,4.830487304E1 +1.670210000E2,5.643349546E1 +1.672820000E2,5.752246312E1 +1.675830000E2,5.576545129E1 +1.678330000E2,5.583582770E1 +1.681390000E2,5.301617697E1 +1.684460000E2,5.088408561E1 +1.686990000E2,5.149775091E1 +1.690030000E2,6.019099852E1 +1.692410000E2,6.143998752E1 +1.695380000E2,6.183098470E1 +1.697780000E2,5.964256200E1 +1.701420000E2,5.648358262E1 +1.703870000E2,5.768033788E1 +1.706360000E2,5.037521789E1 +1.709530000E2,5.268785935E1 +1.712030000E2,5.850048969E1 +1.714650000E2,5.537813713E1 +1.717710000E2,5.989062491E1 +1.720770000E2,6.371629733E1 +1.723380000E2,5.413135778E1 +1.726060000E2,5.582389161E1 +1.729040000E2,6.344770094E1 +1.731770000E2,6.038125570E1 +1.735090000E2,5.229655017E1 +1.737830000E2,5.594074665E1 +1.740430000E2,6.258802116E1 +1.743030000E2,5.773122794E1 +1.745600000E2,5.533899998E1 +1.748290000E2,5.069657364E1 +1.750850000E2,6.285550191E1 +1.753480000E2,5.470504416E1 +1.756240000E2,5.746379759E1 +1.758870000E2,5.928233462E1 +1.761350000E2,5.214791610E1 +1.763840000E2,5.260177806E1 +1.767030000E2,4.844041050E1 +1.769490000E2,5.275717684E1 +1.772330000E2,5.436891746E1 +1.774780000E2,5.441421810E1 +1.777590000E2,5.485847839E1 +1.780320000E2,5.714239097E1 +1.782910000E2,6.028837304E1 +1.785470000E2,5.706420775E1 +1.788380000E2,5.509582512E1 +1.791200000E2,5.674185072E1 +1.794340000E2,5.437491314E1 +1.796940000E2,5.696592309E1 +1.799990000E2,5.344092263E1 +1.802540000E2,5.414345246E1 +1.804960000E2,5.421992498E1 +1.808400000E2,5.317024536E1 +1.811450000E2,5.422714635E1 +1.814530000E2,5.933207779E1 +1.817720000E2,5.916706050E1 +1.820730000E2,5.685980261E1 +1.824210000E2,5.521649456E1 +1.826850000E2,5.651993888E1 +1.829810000E2,5.707596711E1 +1.832810000E2,5.464130538E1 +1.836160000E2,5.364065008E1 +1.838600000E2,5.913078622E1 +1.841080000E2,5.695541400E1 +1.843520000E2,6.237274690E1 +1.846510000E2,6.017101966E1 +1.848950000E2,5.670915019E1 +1.851380000E2,5.651470649E1 +1.854400000E2,5.919691857E1 +1.857560000E2,5.752836475E1 +1.860680000E2,6.133052078E1 +1.863670000E2,6.001801442E1 +1.866740000E2,5.871186574E1 +1.869510000E2,5.858669373E1 +1.872240000E2,5.722343490E1 +1.875200000E2,5.725198568E1 +1.877700000E2,5.560524182E1 +1.880340000E2,5.419540118E1 +1.882980000E2,6.169219144E1 +1.885790000E2,5.704261604E1 +1.888700000E2,5.651125138E1 +1.891060000E2,5.778536485E1 +1.894110000E2,5.304160496E1 +1.896990000E2,5.105254388E1 +1.900460000E2,5.338626279E1 +1.902980000E2,5.090929652E1 +1.905360000E2,5.235399183E1 +1.907970000E2,5.429173243E1 +1.910620000E2,5.376238901E1 +1.913500000E2,6.411203098E1 +1.916020000E2,6.235211697E1 +1.919100000E2,5.719243884E1 +1.922140000E2,5.965550680E1 +1.925010000E2,5.850063986E1 +1.928110000E2,6.013906156E1 +1.930480000E2,5.912633730E1 +1.934000000E2,5.860712099E1 +1.936870000E2,5.944287516E1 +1.939980000E2,5.676076088E1 +1.942520000E2,5.712881871E1 +1.945490000E2,5.515631677E1 +1.948870000E2,5.670925955E1 +1.951320000E2,5.768263389E1 +1.954210000E2,5.735243887E1 +1.957290000E2,5.883798740E1 +1.960030000E2,5.654393164E1 +1.963340000E2,5.345251733E1 +1.966710000E2,5.034487882E1 +1.969060000E2,5.741493139E1 +1.971980000E2,5.877434013E1 +1.974210000E2,5.965387227E1 +1.977200000E2,6.306941384E1 +1.979730000E2,6.004201692E1 +1.982230000E2,6.106500017E1 +1.984800000E2,5.674857861E1 +1.987290000E2,6.020914127E1 +1.990680000E2,6.067289060E1 +1.993460000E2,5.996658083E1 +1.996390000E2,5.676340490E1 +1.999500000E2,5.612304129E1 +2.002130000E2,6.289766509E1 +2.005150000E2,5.720971103E1 +2.008280000E2,5.752136939E1 +2.010940000E2,6.058659890E1 +2.013440000E2,5.618430636E1 +2.016270000E2,6.056271249E1 +2.019400000E2,5.729198827E1 +2.022100000E2,5.793084452E1 +2.025070000E2,5.787194228E1 +2.027910000E2,5.959620014E1 +2.030940000E2,6.012062596E1 +2.033180000E2,6.276377758E1 +2.036210000E2,5.834405857E1 +2.039320000E2,5.545225289E1 +2.042050000E2,5.829439447E1 +2.044730000E2,5.799912649E1 +2.047970000E2,5.444896398E1 +2.050680000E2,5.743866699E1 +2.053150000E2,5.862448994E1 +2.055880000E2,5.778478934E1 +2.058890000E2,5.527981007E1 +2.061620000E2,5.742523507E1 +2.064580000E2,5.472188821E1 +2.067100000E2,6.202721053E1 +2.069630000E2,5.861698013E1 +2.072080000E2,6.294616718E1 +2.074730000E2,6.321186761E1 +2.077380000E2,5.776609523E1 +2.080390000E2,6.061292698E1 +2.083320000E2,5.857532480E1 +2.085870000E2,5.800369352E1 +2.088450000E2,5.977447345E1 +2.091070000E2,5.957010157E1 +2.093520000E2,6.145770306E1 +2.096060000E2,6.176056517E1 +2.098580000E2,6.033519811E1 +2.100970000E2,6.429628489E1 +2.103980000E2,6.215353584E1 +2.106470000E2,6.299048914E1 +2.109300000E2,6.133544133E1 +2.112010000E2,5.397487394E1 +2.114250000E2,5.313920655E1 +2.116740000E2,5.552710709E1 +2.119140000E2,5.692289703E1 +2.121730000E2,5.618691953E1 +2.124220000E2,5.402804715E1 +2.127170000E2,5.390450402E1 +2.129570000E2,5.652515030E1 +2.132580000E2,5.490504921E1 +2.135120000E2,5.485761082E1 +2.137850000E2,6.486277416E1 +2.140520000E2,6.121826472E1 +2.143580000E2,6.355465948E1 +2.146390000E2,5.534291145E1 +2.148790000E2,6.610858745E1 +2.151670000E2,5.617739728E1 +2.154670000E2,5.426651762E1 +2.157300000E2,5.840247716E1 +2.160830000E2,5.257749691E1 +2.163200000E2,6.345809118E1 +2.165810000E2,6.020490407E1 +2.168390000E2,5.603372378E1 +2.170870000E2,5.452432165E1 +2.173530000E2,5.679931822E1 +2.176220000E2,6.225558234E1 +2.179360000E2,5.991886985E1 +2.182430000E2,6.307902574E1 +2.184780000E2,6.764692456E1 +2.187700000E2,6.696013302E1 +2.190280000E2,6.419552300E1 +2.193390000E2,6.401831507E1 +2.196000000E2,6.317016249E1 +2.198590000E2,6.093052958E1 +2.201380000E2,6.446513941E1 +2.204220000E2,6.075454080E1 +2.206690000E2,6.712020778E1 +2.209300000E2,5.440050354E1 +2.212550000E2,5.627963451E1 +2.215550000E2,6.358778444E1 +2.217990000E2,5.793661873E1 +2.220730000E2,6.448679664E1 +2.223050000E2,5.844994198E1 +2.226510000E2,5.802583418E1 +2.229440000E2,5.848297014E1 +2.231840000E2,6.170695891E1 +2.234220000E2,6.201301769E1 +2.236630000E2,6.049179870E1 +2.239600000E2,6.316843106E1 +2.242020000E2,5.818837652E1 +2.245150000E2,6.411353278E1 +2.248330000E2,6.458398711E1 +2.250670000E2,6.303280227E1 +2.253240000E2,6.378696379E1 +2.255670000E2,6.157533943E1 +2.259260000E2,5.845901257E1 +2.261910000E2,5.623331182E1 +2.264460000E2,5.550822889E1 +2.267020000E2,5.907003722E1 +2.270220000E2,6.300043778E1 +2.273130000E2,5.934584116E1 +2.275640000E2,5.367094537E1 +2.278520000E2,6.260544714E1 +2.281140000E2,5.666507163E1 +2.283970000E2,6.099713971E1 +2.287020000E2,5.943082312E1 +2.289450000E2,6.095935321E1 +2.292950000E2,5.939706013E1 +2.296230000E2,5.612117806E1 +2.299220000E2,5.805831404E1 +2.301570000E2,5.496048372E1 +2.304070000E2,5.335836124E1 +2.306490000E2,5.043808989E1 +2.309270000E2,4.778025574E1 +2.311680000E2,4.613189565E1 +2.314100000E2,4.740314381E1 +2.316580000E2,5.230056147E1 +2.319150000E2,5.672989332E1 +2.321590000E2,6.081799709E1 +2.325030000E2,5.909736866E1 +2.327570000E2,5.528762811E1 +2.330520000E2,6.623131701E1 +2.333360000E2,6.376149752E1 +2.335730000E2,6.088376871E1 +2.338700000E2,6.235681388E1 +2.341160000E2,6.060610548E1 +2.343930000E2,5.779254532E1 +2.346370000E2,5.570043106E1 +2.349010000E2,6.172637016E1 +2.351520000E2,5.865545525E1 +2.354420000E2,6.250465685E1 +2.356850000E2,6.494272879E1 +2.359310000E2,6.075163542E1 +2.361840000E2,5.742858606E1 +2.364460000E2,5.756917813E1 +2.366990000E2,6.169927684E1 +2.370080000E2,5.540268710E1 +2.373040000E2,5.484088652E1 +2.376000000E2,5.732112773E1 +2.378800000E2,5.184194161E1 +2.381270000E2,5.604168635E1 +2.383910000E2,5.644051218E1 +2.387130000E2,6.049774032E1 +2.390290000E2,6.303013407E1 +2.392800000E2,6.115111046E1 +2.395770000E2,6.294174883E1 +2.398740000E2,6.716012591E1 +2.401880000E2,7.075117191E1 +2.404890000E2,6.435561631E1 +2.407550000E2,5.593172595E1 +2.410720000E2,5.781614361E1 +2.413350000E2,5.497792445E1 +2.416080000E2,5.569244646E1 +2.418870000E2,5.408109683E1 +2.421100000E2,5.687440525E1 +2.424230000E2,6.415333296E1 +2.427170000E2,6.528722740E1 +2.429900000E2,6.229384329E1 +2.432350000E2,5.452507698E1 +2.434960000E2,5.248331654E1 +2.437450000E2,5.069826347E1 +2.439880000E2,4.989889277E1 +2.442610000E2,5.196931346E1 +2.445130000E2,4.988417717E1 +2.448120000E2,5.950968466E1 +2.451200000E2,5.725324421E1 +2.454210000E2,5.902908729E1 +2.456980000E2,5.857784521E1 +2.459650000E2,5.154496059E1 +2.462670000E2,5.316738342E1 +2.465660000E2,5.681338179E1 +2.468580000E2,5.486468116E1 +2.471080000E2,5.378622946E1 +2.473840000E2,5.263910847E1 +2.477040000E2,5.102724000E1 +2.479590000E2,4.958128022E1 +2.482070000E2,5.621813465E1 +2.486190000E2,5.553111013E1 +2.489120000E2,5.711728514E1 +2.491630000E2,6.098223102E1 +2.494610000E2,5.812970142E1 +2.497290000E2,5.874411947E1 +2.500090000E2,6.058797235E1 +2.503160000E2,5.921850964E1 +2.506300000E2,5.825659244E1 +2.508940000E2,5.902074554E1 +2.512250000E2,5.857720223E1 +2.514860000E2,5.834259509E1 +2.517560000E2,5.664723408E1 +2.520110000E2,6.245873243E1 +2.522800000E2,6.018081628E1 +2.525490000E2,6.060905480E1 +2.527980000E2,6.098924059E1 +2.530310000E2,6.604497204E1 +2.532750000E2,5.762503683E1 +2.535750000E2,5.946675250E1 +2.538150000E2,5.696283688E1 +2.541120000E2,5.795434272E1 +2.543420000E2,5.641662406E1 +2.546470000E2,6.001503419E1 +2.549610000E2,5.913147779E1 +2.552050000E2,5.772050526E1 +2.554250000E2,5.986895040E1 +2.557400000E2,4.836792039E1 +2.560130000E2,4.818172752E1 +2.563450000E2,5.244597112E1 +2.566130000E2,5.174954560E1 +2.568650000E2,5.165225717E1 +2.571100000E2,4.865803315E1 +2.573530000E2,4.773689375E1 +2.576460000E2,5.375353685E1 +2.579030000E2,5.630041837E1 +2.582540000E2,5.390583403E1 +2.585030000E2,5.686416101E1 +2.588120000E2,5.880170204E1 +2.590630000E2,5.373023259E1 +2.593590000E2,6.009405077E1 +2.596120000E2,5.710673366E1 +2.598560000E2,5.891240789E1 +2.600990000E2,5.960890080E1 +2.603510000E2,6.728594423E1 +2.606060000E2,6.334340199E1 +2.609270000E2,6.082175509E1 +2.611830000E2,5.750083619E1 +2.615060000E2,5.667484133E1 +2.618070000E2,6.152760439E1 +2.620430000E2,5.697586540E1 +2.623440000E2,5.674189037E1 +2.625730000E2,5.539036876E1 +2.628210000E2,4.901745514E1 +2.631270000E2,5.264848299E1 +2.634230000E2,5.038277380E1 +2.636750000E2,5.149234245E1 +2.639170000E2,4.604207892E1 +2.641630000E2,5.735184247E1 +2.644630000E2,5.659523444E1 +2.648080000E2,5.697978691E1 +2.650640000E2,5.691301726E1 +2.653540000E2,5.696584583E1 +2.656480000E2,5.138210199E1 +2.659030000E2,5.345758564E1 +2.661640000E2,5.363588256E1 +2.664240000E2,5.471656895E1 +2.666720000E2,5.140760448E1 +2.669400000E2,5.329005020E1 +2.671940000E2,5.422388323E1 +2.674460000E2,5.133919880E1 +2.677140000E2,5.690801972E1 +2.681270000E2,5.964609863E1 +2.684030000E2,6.167901240E1 +2.686970000E2,5.297205648E1 +2.689350000E2,5.530010894E1 +2.692310000E2,5.450325538E1 +2.694700000E2,5.391690578E1 +2.697660000E2,5.420666075E1 +2.700010000E2,4.962510480E1 +2.702390000E2,5.010058679E1 +2.705460000E2,5.345147952E1 +2.708590000E2,5.574757195E1 +2.711770000E2,5.571208034E1 +2.714720000E2,5.288998421E1 +2.717170000E2,5.214438195E1 +2.720190000E2,5.232798978E1 +2.723080000E2,6.045263056E1 +2.725500000E2,5.870512300E1 +2.727930000E2,5.577911819E1 +2.730760000E2,5.501493048E1 +2.733800000E2,5.433475343E1 +2.736720000E2,5.293457700E1 +2.739070000E2,5.486483547E1 +2.741780000E2,6.008208952E1 +2.745050000E2,5.845984546E1 +2.748040000E2,5.900764997E1 +2.751070000E2,5.760203457E1 +2.754240000E2,5.795024632E1 +2.757280000E2,6.182748257E1 +2.760340000E2,5.683205968E1 +2.763350000E2,5.821402367E1 +2.766080000E2,5.520672517E1 +2.768980000E2,5.645892504E1 +2.772030000E2,5.463906896E1 +2.775200000E2,5.412722413E1 +2.777910000E2,5.268636730E1 +2.780870000E2,5.566734184E1 +2.783350000E2,5.745256931E1 +2.785810000E2,5.645167582E1 +2.788270000E2,5.925831320E1 +2.790840000E2,5.591320738E1 +2.793690000E2,5.632637646E1 +2.796200000E2,6.252281740E1 +2.799120000E2,5.547643277E1 +2.801570000E2,6.021611275E1 +2.804580000E2,5.732676882E1 +2.808110000E2,5.909573770E1 +2.810780000E2,6.005240162E1 +2.813300000E2,5.965022185E1 +2.815820000E2,6.135840817E1 +2.818790000E2,5.970629096E1 +2.821590000E2,5.879025140E1 +2.824010000E2,5.747324456E1 +2.826520000E2,5.726379384E1 +2.828950000E2,5.871306541E1 +2.831920000E2,6.188032415E1 +2.834710000E2,6.066582287E1 +2.837110000E2,5.950933244E1 +2.840350000E2,5.901018860E1 +2.843000000E2,5.761182729E1 +2.846050000E2,5.446909438E1 +2.848570000E2,5.349219985E1 +2.851700000E2,5.015518748E1 +2.854330000E2,5.374610595E1 +2.857270000E2,5.877223624E1 +2.860310000E2,5.644512377E1 +2.863080000E2,5.711327205E1 +2.865540000E2,5.655239592E1 +2.867930000E2,5.833716670E1 +2.871150000E2,5.417781453E1 +2.874030000E2,5.332227783E1 +2.876540000E2,5.146836736E1 +2.879540000E2,5.452228720E1 +2.881970000E2,5.025406823E1 +2.884910000E2,5.490648375E1 +2.887280000E2,5.506242221E1 +2.890210000E2,5.400927835E1 +2.892600000E2,5.781126179E1 +2.895430000E2,6.384283902E1 +2.898470000E2,6.340395874E1 +2.901430000E2,5.555395770E1 +2.904560000E2,5.514224078E1 +2.907530000E2,5.346566906E1 +2.910000000E2,5.948406902E1 +2.912590000E2,6.362292628E1 +2.915300000E2,6.175065463E1 +2.918240000E2,6.129817533E1 +2.920790000E2,6.317618325E1 +2.923350000E2,6.137933812E1 +2.926010000E2,5.620086793E1 +2.928740000E2,5.715913846E1 +2.931780000E2,7.028942499E1 +2.934620000E2,6.774357618E1 +2.937770000E2,6.989950413E1 +2.940270000E2,6.631119439E1 +2.943030000E2,6.956920703E1 +2.945570000E2,6.352936554E1 +2.948100000E2,6.981123112E1 +2.951150000E2,5.607171784E1 +2.953950000E2,5.394017247E1 +2.956980000E2,7.110851253E1 +2.959460000E2,6.978848906E1 +2.961900000E2,5.446752823E1 +2.965090000E2,6.309281755E1 +2.968110000E2,6.647752141E1 +2.971300000E2,6.773248230E1 +2.974240000E2,6.289421429E1 +2.977060000E2,5.998905240E1 +2.979500000E2,6.016152671E1 +2.981940000E2,5.851705490E1 +2.984880000E2,6.506323043E1 +2.987430000E2,5.702053645E1 +2.990110000E2,4.890963733E1 +2.993040000E2,5.105737182E1 +2.995650000E2,4.950865545E1 +2.998150000E2,4.713536225E1 +3.000860000E2,6.170154569E1 +3.003780000E2,5.697995513E1 +3.006750000E2,6.496205179E1 +3.009180000E2,5.585602045E1 +3.012120000E2,5.317421587E1 +3.015130000E2,5.532213468E1 +3.017840000E2,5.371543715E1 +3.020520000E2,6.741141038E1 +3.023220000E2,6.638671809E1 +3.025730000E2,5.833940482E1 +3.028700000E2,6.272205104E1 +3.031230000E2,6.150676490E1 +3.034050000E2,6.571826996E1 +3.036710000E2,6.387001854E1 +3.039460000E2,5.704179120E1 +3.042380000E2,5.452420344E1 +3.044730000E2,6.911436343E1 +3.047670000E2,6.747337761E1 +3.050070000E2,6.642457947E1 +3.053010000E2,6.704052830E1 +3.055360000E2,6.335116163E1 +3.058350000E2,6.452879154E1 +3.061310000E2,6.588892290E1 +3.064460000E2,6.065604325E1 +3.066970000E2,5.884139521E1 +3.069890000E2,6.115548360E1 +3.072650000E2,5.474220631E1 +3.075290000E2,5.525228633E1 +3.077890000E2,5.546520153E1 +3.080280000E2,5.799541194E1 +3.083270000E2,5.467819740E1 +3.086250000E2,5.227747322E1 +3.089260000E2,5.802220937E1 +3.091970000E2,5.383690373E1 +3.095040000E2,5.794687305E1 +3.097810000E2,5.426386053E1 +3.100000000E2,5.745164866E1 +3.103300000E2,5.475501144E1 +3.106240000E2,5.154802151E1 +3.108750000E2,5.434380726E1 +3.111540000E2,5.533246388E1 +3.114150000E2,5.554218476E1 +3.116740000E2,5.375334275E1 +3.119200000E2,5.727216331E1 +3.121680000E2,5.235396651E1 +3.124720000E2,6.207307801E1 +3.127180000E2,6.488896117E1 +3.130530000E2,6.168970511E1 +3.133080000E2,6.010687101E1 +3.135950000E2,6.305386662E1 +3.138880000E2,6.214030252E1 +3.141410000E2,5.907513997E1 +3.143960000E2,6.064308138E1 +3.146480000E2,6.195321339E1 +3.148870000E2,6.088765310E1 +3.151830000E2,5.906360624E1 +3.154280000E2,5.864981040E1 +3.157360000E2,5.824424792E1 +3.159750000E2,5.826399021E1 +3.163740000E2,6.051726612E1 +3.166320000E2,6.011967909E1 +3.168940000E2,5.577110603E1 +3.172010000E2,5.372586587E1 +3.174460000E2,5.537091967E1 +3.176890000E2,5.504912063E1 +3.179320000E2,5.264203521E1 +3.182150000E2,5.344854544E1 +3.184600000E2,5.656777951E1 +3.187200000E2,5.398435402E1 +3.189820000E2,5.410695962E1 +3.192460000E2,5.344168860E1 +3.195780000E2,5.697626360E1 +3.198350000E2,6.073105615E1 +3.200880000E2,6.621432780E1 +3.203460000E2,6.597785722E1 +3.205980000E2,5.907542432E1 +3.208920000E2,5.702769809E1 +3.211760000E2,6.207459825E1 +3.214520000E2,5.921715282E1 +3.217010000E2,5.501368146E1 +3.220030000E2,5.927746858E1 +3.223090000E2,5.878714279E1 +3.226530000E2,6.209253703E1 +3.229180000E2,5.801419316E1 +3.231660000E2,6.150680788E1 +3.234110000E2,5.950436139E1 +3.236660000E2,5.694006868E1 +3.239890000E2,5.964691948E1 +3.242420000E2,6.322261269E1 +3.245070000E2,5.967413832E1 +3.247540000E2,5.743115651E1 +3.250010000E2,5.693057833E1 +3.252760000E2,5.076009335E1 +3.255600000E2,5.432440321E1 +3.258270000E2,5.728583073E1 +3.262160000E2,6.158050311E1 +3.264570000E2,5.788548067E1 +3.267330000E2,5.661485397E1 +3.270280000E2,5.698735139E1 +3.272870000E2,5.428158234E1 +3.275550000E2,5.401192370E1 +3.278320000E2,5.894424302E1 +3.281050000E2,5.279140275E1 +3.283850000E2,5.366788524E1 +3.286760000E2,5.569462346E1 +3.289750000E2,5.484501656E1 +3.292730000E2,5.654335493E1 +3.295550000E2,5.483429560E1 +3.298560000E2,5.516099131E1 +3.301720000E2,5.150081287E1 +3.304560000E2,5.126263973E1 +3.307930000E2,4.943715566E1 +3.310330000E2,5.297477083E1 +3.312800000E2,4.994759883E1 +3.316030000E2,5.283028939E1 +3.318860000E2,5.150402936E1 +3.321790000E2,5.777668868E1 +3.325470000E2,5.446937149E1 +3.328030000E2,5.754474494E1 +3.330410000E2,5.437750931E1 +3.333210000E2,5.378201308E1 +3.335760000E2,5.486825362E1 +3.338240000E2,5.338123539E1 +3.340700000E2,5.704649160E1 +3.343740000E2,5.576563429E1 +3.346640000E2,5.503590574E1 +3.349650000E2,5.539431503E1 +3.352080000E2,5.782097549E1 +3.355080000E2,5.260852375E1 +3.358690000E2,6.012616228E1 +3.361400000E2,5.534922411E1 +3.363810000E2,5.436765301E1 +3.366230000E2,5.007736554E1 +3.368850000E2,5.304270830E1 +3.371340000E2,5.106682022E1 +3.373960000E2,5.491262243E1 +3.376890000E2,5.891119644E1 +3.379320000E2,5.554676164E1 +3.382420000E2,5.491809401E1 +3.385700000E2,6.003743295E1 +3.389490000E2,5.964265847E1 +3.392140000E2,6.009419780E1 +3.394780000E2,5.950800538E1 +3.397810000E2,5.514081916E1 +3.400260000E2,5.654810222E1 +3.403230000E2,5.919098275E1 +3.405600000E2,5.937137097E1 +3.408650000E2,5.885711760E1 +3.411560000E2,6.122434193E1 +3.414060000E2,6.101494213E1 +3.416650000E2,5.685059098E1 +3.419710000E2,4.988163583E1 +3.423360000E2,5.097871962E1 +3.426300000E2,6.097968551E1 +3.429260000E2,5.246223058E1 +3.431760000E2,5.140448000E1 +3.434570000E2,5.162147831E1 +3.436910000E2,5.437509469E1 +3.439650000E2,5.588289675E1 +3.442010000E2,5.342482218E1 +3.444930000E2,5.621155564E1 +3.447310000E2,5.753713233E1 +3.450340000E2,5.873821374E1 +3.453240000E2,5.674648484E1 +3.455770000E2,5.843857274E1 +3.458770000E2,6.170678128E1 +3.461770000E2,5.848319050E1 +3.464240000E2,5.996271814E1 +3.467290000E2,5.583139448E1 +3.470000000E2,5.558324990E1 +3.472360000E2,5.638821787E1 +3.474880000E2,6.015129432E1 +3.477550000E2,6.074195357E1 +3.480530000E2,6.258101891E1 +3.483260000E2,6.280209300E1 +3.486840000E2,5.935598721E1 +3.489370000E2,6.423635683E1 +3.492060000E2,7.026891453E1 +3.495130000E2,5.477771858E1 +3.498240000E2,6.143080763E1 +3.500700000E2,6.077206860E1 +3.503130000E2,5.816670512E1 +3.506030000E2,6.220374728E1 +3.509040000E2,6.435510927E1 +3.511560000E2,6.387906049E1 +3.514240000E2,6.324188625E1 +3.517710000E2,6.217871174E1 +3.520510000E2,6.349767138E1 +3.523000000E2,5.947763114E1 +3.525840000E2,5.623947938E1 +3.528810000E2,5.940245648E1 +3.531830000E2,5.323006485E1 +3.534790000E2,4.756673680E1 +3.537830000E2,5.761743216E1 +3.540870000E2,5.701856444E1 +3.543720000E2,5.507707077E1 +3.546320000E2,5.561457107E1 +3.549330000E2,6.036785424E1 +3.552860000E2,5.818319920E1 +3.555390000E2,5.636477080E1 +3.557840000E2,5.686236286E1 +3.560330000E2,6.137502104E1 +3.563290000E2,6.039421004E1 +3.565710000E2,5.873926214E1 +3.568160000E2,5.984737812E1 +3.570890000E2,5.898549785E1 +3.573200000E2,5.804358229E1 +3.576080000E2,5.178825198E1 +3.578380000E2,5.333798630E1 +3.581470000E2,5.663121054E1 +3.584860000E2,5.705169894E1 +3.587470000E2,5.488627438E1 +3.590020000E2,5.493171173E1 +3.592590000E2,5.280801534E1 +3.595110000E2,5.919356657E1 +3.597710000E2,6.061921525E1 +3.600770000E2,5.781838960E1 +3.603810000E2,5.824405535E1 +3.606410000E2,5.734273072E1 +3.608930000E2,5.860073318E1 +3.611440000E2,5.158577335E1 +3.614110000E2,5.569804167E1 +3.617550000E2,5.732029627E1 +3.620530000E2,5.599725951E1 +3.623260000E2,5.427140428E1 +3.625700000E2,5.439119305E1 +3.628680000E2,5.768088704E1 +3.631160000E2,5.322266305E1 +3.634170000E2,5.611257515E1 +3.637150000E2,5.466283243E1 +3.639540000E2,5.648497192E1 +3.642520000E2,5.982456496E1 +3.644910000E2,5.683499776E1 +3.648080000E2,5.424977228E1 +3.650550000E2,5.261749952E1 +3.653010000E2,5.976464589E1 +3.655400000E2,5.630627545E1 +3.658370000E2,5.855663855E1 +3.660660000E2,5.839517218E1 +3.663050000E2,5.701336937E1 +3.666100000E2,6.057417753E1 +3.668530000E2,5.660058929E1 +3.671060000E2,5.360906173E1 +3.673270000E2,5.766761713E1 +3.676020000E2,5.473947199E1 +3.679270000E2,5.730791892E1 +3.681990000E2,5.368134624E1 +3.685210000E2,5.122725302E1 +3.688180000E2,5.413949330E1 +3.690720000E2,5.953240184E1 +3.693650000E2,5.834363401E1 +3.696110000E2,4.952962201E1 +3.698620000E2,6.082605721E1 +3.701240000E2,5.541205242E1 +3.703840000E2,5.595936781E1 +3.706570000E2,5.751180267E1 +3.709050000E2,5.510413826E1 +3.712530000E2,5.236304209E1 +3.715330000E2,5.429686706E1 +3.717680000E2,5.365135821E1 +3.720680000E2,5.442146139E1 +3.723070000E2,5.193301537E1 +3.726070000E2,5.573089397E1 +3.728540000E2,5.084704353E1 +3.731070000E2,5.244752708E1 +3.734250000E2,5.501438711E1 +3.737160000E2,5.701937821E1 +3.739830000E2,5.913008265E1 +3.743030000E2,6.329763996E1 +3.745490000E2,5.828010903E1 +3.748110000E2,5.514928454E1 +3.750560000E2,5.535724603E1 +3.753250000E2,6.062318511E1 +3.756820000E2,5.853801057E1 +3.759720000E2,6.218740595E1 +3.762560000E2,6.130322227E1 +3.764780000E2,5.705598438E1 +3.767430000E2,5.675025411E1 +3.770350000E2,5.562309411E1 +3.773330000E2,6.171478403E1 +3.776660000E2,5.752069737E1 +3.779640000E2,5.869913239E1 +3.782130000E2,5.802158707E1 +3.785030000E2,5.920699755E1 +3.787580000E2,5.984700757E1 +3.790120000E2,5.874214142E1 +3.792820000E2,5.792329599E1 +3.795460000E2,6.240429581E1 +3.798520000E2,5.924961400E1 +3.800960000E2,5.655548581E1 +3.803510000E2,5.997047167E1 +3.806590000E2,5.894207932E1 +3.810310000E2,5.556916558E1 +3.813250000E2,5.709965860E1 +3.815810000E2,5.724657649E1 +3.818690000E2,5.634885250E1 +3.821660000E2,5.381597934E1 +3.824070000E2,5.409431797E1 +3.827020000E2,5.558304395E1 +3.829400000E2,5.836087965E1 +3.832380000E2,5.621848827E1 +3.834740000E2,5.756105430E1 +3.837670000E2,5.972981317E1 +3.840620000E2,6.110722903E1 +3.842970000E2,6.011338906E1 +3.846120000E2,6.632548976E1 +3.849300000E2,5.632542095E1 +3.852340000E2,5.660090160E1 +3.854760000E2,5.637042997E1 +3.857700000E2,6.483820819E1 +3.860160000E2,6.294386681E1 +3.862760000E2,6.248693097E1 +3.865740000E2,5.966646580E1 +3.868130000E2,5.884596060E1 +3.871230000E2,6.069045984E1 +3.874660000E2,5.535227762E1 +3.877260000E2,5.453589064E1 +3.879920000E2,5.803286513E1 +3.882920000E2,6.338575111E1 +3.885370000E2,6.297665471E1 +3.888380000E2,6.078963895E1 +3.890870000E2,6.078711186E1 +3.893350000E2,5.918580133E1 +3.896040000E2,5.645003340E1 +3.899070000E2,5.868887980E1 +3.901560000E2,5.816727924E1 +3.904840000E2,5.908711574E1 +3.907830000E2,5.165109059E1 +3.910410000E2,5.747977046E1 +3.913230000E2,5.600926578E1 +3.916170000E2,5.743239537E1 +3.918580000E2,5.999528635E1 +3.921650000E2,5.924448814E1 +3.924670000E2,6.347749271E1 +3.927590000E2,6.285842009E1 +3.929960000E2,6.439104552E1 +3.933010000E2,6.092208558E1 +3.935450000E2,5.889760176E1 +3.939100000E2,5.798312040E1 +3.941770000E2,5.909426563E1 +3.944250000E2,5.971090911E1 +3.946810000E2,5.379436409E1 +3.949270000E2,5.134339741E1 +3.951700000E2,5.739586279E1 +3.954270000E2,5.255911571E1 +3.956850000E2,5.149310319E1 +3.959500000E2,5.723685944E1 +3.962270000E2,5.622087783E1 +3.964720000E2,6.119098643E1 +3.967310000E2,6.249797436E1 +3.970320000E2,5.838309249E1 +3.973440000E2,5.720898847E1 +3.976100000E2,5.357982700E1 +3.978600000E2,5.091452983E1 +3.981070000E2,4.781274510E1 +3.983520000E2,4.684320786E1 +3.986530000E2,4.867937405E1 +3.988970000E2,4.947454895E1 +3.991740000E2,4.941937240E1 +3.994180000E2,5.206925818E1 +3.997200000E2,5.099596962E1 +3.999720000E2,5.059119317E1 +4.002350000E2,4.980275756E1 +4.004940000E2,5.514017077E1 +4.008060000E2,5.354499430E1 +4.011150000E2,5.377825353E1 +4.013980000E2,5.657928040E1 +4.016460000E2,6.437756844E1 +4.019070000E2,6.072529486E1 +4.021970000E2,5.876291143E1 +4.024430000E2,6.118567430E1 +4.027460000E2,5.925186578E1 +4.030590000E2,5.727531678E1 +4.033610000E2,6.211123432E1 +4.036680000E2,6.041950332E1 +4.039230000E2,6.161200416E1 +4.041780000E2,6.047480336E1 +4.044620000E2,5.905442986E1 +4.047060000E2,5.729915709E1 +4.049630000E2,6.020933408E1 +4.052500000E2,5.845152603E1 +4.055600000E2,5.814304967E1 +4.058210000E2,5.866194002E1 +4.060640000E2,5.736420578E1 +4.063180000E2,6.107395805E1 +4.065790000E2,5.985269852E1 +4.069480000E2,5.745859610E1 +4.072050000E2,5.693680110E1 +4.074960000E2,6.165201185E1 +4.077470000E2,6.131132241E1 +4.079970000E2,5.824414723E1 +4.083050000E2,5.958451387E1 +4.085600000E2,5.739792126E1 +4.088150000E2,5.573389816E1 +4.090850000E2,5.530698039E1 +4.093810000E2,5.634371531E1 +4.096660000E2,5.880658089E1 +4.099920000E2,5.804298004E1 +4.102870000E2,5.688352401E1 +4.106310000E2,5.573115839E1 +4.109280000E2,5.368053116E1 +4.112180000E2,5.474384188E1 +4.114650000E2,5.380195893E1 +4.117660000E2,5.718608674E1 +4.120140000E2,5.703743686E1 +4.122910000E2,5.985228158E1 +4.125620000E2,6.278694860E1 +4.128210000E2,5.839550633E1 +4.130600000E2,6.029373556E1 +4.133710000E2,5.711050636E1 +4.136150000E2,5.200468588E1 +4.138820000E2,5.769230508E1 +4.141370000E2,5.333759168E1 +4.143860000E2,5.632377961E1 +4.146570000E2,5.647744894E1 +4.149040000E2,5.667945226E1 +4.151840000E2,5.669404445E1 +4.154420000E2,6.072374556E1 +4.157420000E2,5.606444578E1 +4.159850000E2,5.623596320E1 +4.162830000E2,5.264542492E1 +4.165340000E2,5.359803767E1 +4.168600000E2,5.691340897E1 +4.171060000E2,5.636326143E1 +4.173490000E2,6.276141082E1 +4.176080000E2,6.197471417E1 +4.178580000E2,5.777170976E1 +4.181050000E2,5.407671770E1 +4.183760000E2,4.795453020E1 +4.186580000E2,5.871005652E1 +4.188870000E2,6.069158080E1 +4.191320000E2,6.112379328E1 +4.193750000E2,5.584116633E1 +4.196280000E2,6.302854070E1 +4.199610000E2,6.640457067E1 +4.202240000E2,6.337314603E1 +4.205160000E2,5.904470105E1 +4.208200000E2,5.799078909E1 +4.210810000E2,5.975635789E1 +4.213260000E2,6.334088587E1 +4.215900000E2,5.849627934E1 +4.218550000E2,5.894070219E1 +4.221030000E2,5.961371776E1 +4.223550000E2,5.281830949E1 +4.225970000E2,4.892580508E1 +4.229130000E2,5.950646935E1 +4.232610000E2,6.303011111E1 +4.235630000E2,6.030515180E1 +4.238060000E2,5.832387195E1 +4.240560000E2,6.126571743E1 +4.243280000E2,5.961805347E1 +4.245710000E2,5.916464366E1 +4.248300000E2,6.404431780E1 +4.251020000E2,6.161392817E1 +4.253630000E2,6.303875005E1 +4.256110000E2,6.294329578E1 +4.258560000E2,6.495739223E1 +4.261620000E2,6.352748415E1 +4.265140000E2,6.360144813E1 +4.267650000E2,6.320185268E1 +4.270250000E2,6.598206760E1 +4.272910000E2,5.736158392E1 +4.275300000E2,5.632655800E1 +4.277760000E2,5.626186588E1 +4.280650000E2,5.992298879E1 +4.283460000E2,5.976814640E1 +4.285960000E2,5.617047451E1 +4.288540000E2,5.410240194E1 +4.291290000E2,5.524345530E1 +4.293550000E2,5.025485629E1 +4.297050000E2,5.094849624E1 +4.299600000E2,5.349595208E1 +4.302230000E2,5.668766668E1 +4.304690000E2,5.470073040E1 +4.307330000E2,5.808421323E1 +4.310240000E2,5.815977776E1 +4.312740000E2,5.751031291E1 +4.315190000E2,6.045600028E1 +4.318300000E2,5.967896339E1 +4.320980000E2,5.746835753E1 +4.324020000E2,5.874054152E1 +4.327010000E2,5.770096959E1 +4.330460000E2,5.851412717E1 +4.333220000E2,5.970473393E1 +4.335930000E2,6.024030776E1 +4.338530000E2,5.564089573E1 +4.341340000E2,5.328000065E1 +4.343790000E2,5.522789934E1 +4.346930000E2,5.271905966E1 +4.349910000E2,5.685384424E1 +4.352400000E2,5.751176106E1 +4.355350000E2,5.654290580E1 +4.357760000E2,5.976937629E1 +4.360780000E2,5.445311615E1 +4.363520000E2,5.460006243E1 +4.366010000E2,5.402958946E1 +4.369120000E2,5.611325616E1 +4.371660000E2,5.675575065E1 +4.374120000E2,5.605818704E1 +4.377070000E2,5.614720111E1 +4.379470000E2,5.596280974E1 +4.382450000E2,5.764305460E1 +4.384820000E2,6.015340826E1 +4.387240000E2,6.073594369E1 +4.390310000E2,5.846982437E1 +4.393110000E2,5.837342754E1 +4.396160000E2,5.758988397E1 +4.398810000E2,5.375393273E1 +4.401700000E2,5.590416510E1 +4.404180000E2,5.649267014E1 +4.406570000E2,5.809884175E1 +4.409200000E2,5.934788425E1 +4.411750000E2,5.883690392E1 +4.414270000E2,5.465512306E1 +4.416780000E2,5.456039720E1 +4.419260000E2,6.053551690E1 +4.422020000E2,5.446896121E1 +4.425270000E2,5.304300238E1 +4.428480000E2,5.413537656E1 +4.431230000E2,5.590535088E1 +4.433740000E2,5.516889265E1 +4.436180000E2,5.375803139E1 +4.439250000E2,5.440731706E1 +4.441670000E2,5.378894171E1 +4.444170000E2,5.676009311E1 +4.447160000E2,5.433224316E1 +4.449620000E2,5.431777666E1 +4.452100000E2,5.220353562E1 +4.454560000E2,5.525232641E1 +4.456950000E2,5.348687858E1 +4.459900000E2,5.571408478E1 +4.462320000E2,5.590054486E1 +4.464840000E2,5.627503595E1 +4.467390000E2,5.824548232E1 +4.469910000E2,5.637049423E1 +4.472460000E2,5.754096885E1 +4.474930000E2,5.335865942E1 +4.477890000E2,5.765888938E1 +4.480780000E2,6.102087464E1 +4.483520000E2,6.006145593E1 +4.486510000E2,5.685958774E1 +4.489610000E2,5.748149351E1 +4.492370000E2,5.709623916E1 +4.495040000E2,5.821496279E1 +4.497570000E2,5.970222946E1 +4.500030000E2,5.750976802E1 +4.502380000E2,5.796549321E1 +4.505370000E2,5.665777454E1 +4.508330000E2,5.605038109E1 +4.510750000E2,5.504306522E1 +4.513230000E2,5.112487870E1 +4.515900000E2,5.559150914E1 +4.518300000E2,5.656933458E1 +4.520810000E2,6.082180135E1 +4.524470000E2,5.774965281E1 +4.527120000E2,5.847728207E1 +4.529730000E2,5.711434047E1 +4.532810000E2,5.503285278E1 +4.535670000E2,5.614330822E1 +4.538610000E2,6.211492489E1 +4.541040000E2,6.003078695E1 +4.543760000E2,5.766611466E1 +4.546280000E2,5.912518267E1 +4.549300000E2,5.969489895E1 +4.551760000E2,5.509558621E1 +4.554320000E2,5.963291683E1 +4.556950000E2,6.194656842E1 +4.559980000E2,6.032793642E1 +4.562390000E2,5.874022110E1 +4.565060000E2,6.016749735E1 +4.567480000E2,5.985596964E1 +4.570070000E2,5.588678859E1 +4.572660000E2,5.541792762E1 +4.575660000E2,4.969164404E1 +4.578050000E2,4.976271573E1 +4.581060000E2,5.634137812E1 +4.583500000E2,5.321783082E1 +4.586280000E2,5.816393976E1 +4.588870000E2,5.817726916E1 +4.591860000E2,5.398220140E1 +4.594690000E2,5.572842498E1 +4.597270000E2,5.759574297E1 +4.600290000E2,5.492384706E1 +4.602790000E2,5.570826682E1 +4.605780000E2,5.619496661E1 +4.608690000E2,5.993990435E1 +4.611730000E2,6.185390750E1 +4.614300000E2,6.125031183E1 +4.617390000E2,6.047450440E1 +4.621070000E2,5.913093195E1 +4.623500000E2,6.032535990E1 +4.626490000E2,5.803726699E1 +4.628910000E2,5.968748294E1 +4.631850000E2,5.792594347E1 +4.634330000E2,5.623910190E1 +4.636850000E2,6.026318401E1 +4.639240000E2,6.002593060E1 +4.641990000E2,5.694813724E1 +4.644200000E2,5.456998819E1 +4.646660000E2,5.683591124E1 +4.649070000E2,5.893829862E1 +4.652630000E2,5.637983039E1 +4.655160000E2,5.571226470E1 +4.657720000E2,5.582065666E1 +4.660510000E2,5.436378979E1 +4.663550000E2,5.697364508E1 +4.666350000E2,5.716664070E1 +4.668800000E2,6.098104772E1 +4.671260000E2,5.932872997E1 +4.673960000E2,5.573089336E1 +4.676430000E2,5.791664461E1 +4.678890000E2,5.589855895E1 +4.681490000E2,6.359324433E1 +4.685010000E2,5.902079393E1 +4.687870000E2,6.085500324E1 +4.690180000E2,6.401116813E1 +4.693190000E2,6.157634911E1 +4.695830000E2,6.068297160E1 +4.698370000E2,5.867738322E1 +4.701080000E2,6.069776659E1 +4.703530000E2,5.904983802E1 +4.706060000E2,5.642725313E1 +4.708480000E2,5.600286970E1 +4.711080000E2,5.678564623E1 +4.714020000E2,5.139543439E1 +4.717220000E2,5.924511995E1 +4.720300000E2,5.309180697E1 +4.722790000E2,5.295961103E1 +4.725820000E2,5.448425692E1 +4.728350000E2,5.346047841E1 +4.731210000E2,5.563518239E1 +4.733630000E2,5.630991562E1 +4.736070000E2,5.519344442E1 +4.738520000E2,5.696356709E1 +4.741150000E2,5.721588368E1 +4.743810000E2,5.556082681E1 +4.746430000E2,5.453201409E1 +4.749610000E2,5.621559396E1 +4.752460000E2,6.170975330E1 +4.755640000E2,6.352753975E1 +4.758660000E2,5.818774343E1 +4.761780000E2,6.177058435E1 +4.764630000E2,5.829511769E1 +4.766910000E2,5.658732029E1 +4.769520000E2,6.006113158E1 +4.772530000E2,6.022385702E1 +4.775200000E2,5.965858240E1 +4.778410000E2,5.970326758E1 +4.780960000E2,5.911597661E1 +4.783440000E2,5.656338446E1 +4.786020000E2,5.723922467E1 +4.788680000E2,5.700163516E1 +4.791490000E2,6.083416080E1 +4.794510000E2,5.899425763E1 +4.797630000E2,5.820674449E1 +4.800620000E2,5.648898879E1 +4.803380000E2,5.465743937E1 +4.806090000E2,5.006847009E1 +4.809050000E2,5.870050130E1 +4.811580000E2,5.878066343E1 +4.814060000E2,5.929414686E1 +4.817070000E2,5.758425183E1 +4.819760000E2,5.151398214E1 +4.822410000E2,5.772956896E1 +4.824880000E2,5.913153701E1 +4.827710000E2,5.814746383E1 +4.830140000E2,6.018356701E1 +4.832870000E2,5.985078792E1 +4.835070000E2,6.081307149E1 +4.837500000E2,5.810932132E1 +4.840440000E2,5.700769218E1 +4.842880000E2,5.815119989E1 +4.845920000E2,5.595850943E1 +4.849330000E2,5.891167795E1 +4.851960000E2,5.413833723E1 +4.854760000E2,6.184122004E1 +4.857700000E2,6.074653742E1 +4.860130000E2,6.033024099E1 +4.862530000E2,5.218562994E1 +4.865560000E2,5.902882093E1 +4.868150000E2,6.397338635E1 +4.870790000E2,6.543155406E1 +4.873440000E2,6.181389827E1 +4.876070000E2,6.381240883E1 +4.878770000E2,6.121521197E1 +4.882210000E2,5.780293585E1 +4.884640000E2,5.941826112E1 +4.887100000E2,6.118399944E1 +4.889830000E2,6.000089150E1 +4.892940000E2,5.873163787E1 +4.895350000E2,5.943116280E1 +4.897770000E2,5.867927357E1 +4.900230000E2,6.190584219E1 +4.903270000E2,6.313044892E1 +4.905550000E2,6.096660510E1 +4.907970000E2,5.773464228E1 +4.911090000E2,5.720144266E1 +4.914750000E2,5.797465536E1 +4.917410000E2,6.063197812E1 +4.920040000E2,5.799562897E1 +4.922950000E2,5.391853563E1 +4.925940000E2,6.053973121E1 +4.928320000E2,5.781822977E1 +4.931250000E2,6.541242849E1 +4.933660000E2,6.151252976E1 +4.936620000E2,5.962569242E1 +4.939140000E2,6.114162989E1 +4.941750000E2,6.074296596E1 +4.944160000E2,5.738425867E1 +4.947510000E2,6.084173002E1 +4.950140000E2,5.911448476E1 +4.953100000E2,6.076832164E1 +4.955530000E2,6.357047625E1 +4.958480000E2,6.344590866E1 +4.960850000E2,6.154350148E1 +4.963870000E2,5.815666478E1 +4.966770000E2,5.862350251E1 +4.969720000E2,5.162851816E1 +4.972640000E2,5.887916548E1 +4.975020000E2,6.130693279E1 +4.977480000E2,6.164914583E1 +4.980300000E2,5.689153252E1 +4.983240000E2,6.054571109E1 +4.985610000E2,5.779234792E1 +4.987980000E2,6.281334084E1 +4.991290000E2,6.074883772E1 +4.994230000E2,6.344972933E1 +4.996620000E2,6.040546490E1 +4.999570000E2,6.143019571E1 +5.002020000E2,6.117826214E1 +5.004980000E2,6.217883653E1 +5.007380000E2,6.294102819E1 +5.010930000E2,6.516475449E1 +5.013550000E2,6.119184016E1 +5.016670000E2,6.096554209E1 +5.019390000E2,6.197647057E1 +5.022530000E2,6.186754720E1 +5.025630000E2,5.954982776E1 +5.028510000E2,6.115486405E1 +5.031440000E2,6.348254173E1 +5.033820000E2,5.960570527E1 +5.036780000E2,5.977682583E1 +5.039180000E2,5.709696054E1 +5.042580000E2,6.265263203E1 +5.045140000E2,6.166583393E1 +5.047590000E2,6.184451596E1 +5.050170000E2,6.196658471E1 +5.053150000E2,6.014630927E1 +5.055610000E2,6.055201466E1 +5.058690000E2,6.189129858E1 +5.062120000E2,6.557808579E1 +5.064770000E2,6.080176744E1 +5.067370000E2,6.164107472E1 +5.069870000E2,6.497302078E1 +5.072490000E2,6.320126990E1 +5.076210000E2,6.073801439E1 +5.078780000E2,5.612097300E1 +5.081420000E2,5.978501024E1 +5.084360000E2,6.061444996E1 +5.086860000E2,6.272142993E1 +5.089270000E2,6.250458760E1 +5.092250000E2,5.860749180E1 +5.094720000E2,6.368373725E1 +5.097760000E2,6.005985592E1 +5.100780000E2,5.959557057E1 +5.103410000E2,6.085764000E1 +5.106360000E2,6.210563273E1 +5.109960000E2,6.125336704E1 +5.112590000E2,5.627814405E1 +5.115470000E2,6.253958528E1 +5.118480000E2,6.261683940E1 +5.120990000E2,5.782347554E1 +5.123560000E2,6.181201679E1 +5.126370000E2,6.425542150E1 +5.129400000E2,6.148973489E1 +5.132300000E2,6.230215374E1 +5.134720000E2,6.332855968E1 +5.137620000E2,5.875203916E1 +5.140950000E2,6.043073123E1 +5.143340000E2,5.829778385E1 +5.146280000E2,6.530539120E1 +5.148660000E2,5.725439078E1 +5.151580000E2,6.255661351E1 +5.153960000E2,6.412193683E1 +5.156410000E2,6.315775814E1 +5.158840000E2,6.025521775E1 +5.161460000E2,5.892698587E1 +5.164080000E2,5.956507822E1 +5.166610000E2,6.162757540E1 +5.169960000E2,6.009082976E1 +5.173360000E2,5.999682475E1 +5.176380000E2,6.121463264E1 +5.178750000E2,5.929809726E1 +5.181460000E2,5.746668369E1 +5.183810000E2,5.919113180E1 +5.186360000E2,5.827917213E1 +5.189280000E2,5.902314388E1 +5.192310000E2,6.116063950E1 +5.195310000E2,6.026149556E1 +5.198180000E2,5.851929656E1 +5.200920000E2,5.750929671E1 +5.204160000E2,5.729942637E1 +5.207470000E2,5.472104161E1 +5.210390000E2,6.169397748E1 +5.213450000E2,6.081589597E1 +5.216480000E2,6.278728872E1 +5.219550000E2,6.266319096E1 +5.222160000E2,6.478840582E1 +5.224820000E2,6.255888661E1 +5.227330000E2,6.119451713E1 +5.229970000E2,6.244953097E1 +5.232800000E2,6.000703556E1 +5.236020000E2,5.885323025E1 +5.239510000E2,5.826073845E1 +5.242570000E2,5.807287072E1 +5.245200000E2,5.931641295E1 +5.247800000E2,5.775994158E1 +5.250310000E2,6.167249992E1 +5.253010000E2,6.027694641E1 +5.255430000E2,6.329659774E1 +5.258240000E2,6.254377160E1 +5.261330000E2,6.489975363E1 +5.263840000E2,5.999325642E1 +5.266440000E2,5.885077446E1 +5.268920000E2,6.439829299E1 +5.272450000E2,6.165608373E1 +5.275110000E2,5.418048629E1 +5.277700000E2,5.656005066E1 +5.280170000E2,6.215252288E1 +5.283170000E2,5.743407158E1 +5.285650000E2,5.831214783E1 +5.288200000E2,6.066735547E1 +5.290820000E2,5.994603081E1 +5.293240000E2,5.951550591E1 +5.295810000E2,6.264700953E1 +5.298380000E2,5.736628274E1 +5.301360000E2,5.590406638E1 +5.304530000E2,6.041033291E1 +5.307000000E2,5.968691140E1 +5.309950000E2,5.730835182E1 +5.312390000E2,5.823026311E1 +5.315470000E2,5.871167442E1 +5.318430000E2,5.990765833E1 +5.321400000E2,6.387020611E1 +5.324510000E2,6.077699448E1 +5.326980000E2,5.895294298E1 +5.329820000E2,6.041997988E1 +5.333050000E2,5.806877757E1 +5.336110000E2,5.682362418E1 +5.340220000E2,5.915478638E1 +5.342790000E2,6.110946170E1 +5.345430000E2,5.735857105E1 +5.348060000E2,5.684014045E1 +5.350480000E2,6.043627860E1 +5.353500000E2,5.982929159E1 +5.356290000E2,5.986217314E1 +5.358770000E2,5.677131614E1 +5.361310000E2,5.763848566E1 +5.363810000E2,6.142463983E1 +5.366730000E2,5.634211854E1 +5.369290000E2,5.547608220E1 +5.372430000E2,5.920768747E1 +5.375170000E2,6.113406656E1 +5.377700000E2,6.208964505E1 +5.380710000E2,6.100572025E1 +5.383260000E2,6.352283467E1 +5.386320000E2,5.898993907E1 +5.389570000E2,5.503782412E1 +5.392560000E2,5.663453376E1 +5.395360000E2,6.406828344E1 +5.398060000E2,5.890955595E1 +5.400700000E2,6.046868424E1 +5.403380000E2,5.979639772E1 +5.406170000E2,5.838685694E1 +5.409120000E2,5.933573087E1 +5.411500000E2,5.970536072E1 +5.414430000E2,5.461931777E1 +5.417380000E2,5.891969668E1 +5.419780000E2,6.086182172E1 +5.422730000E2,5.706230292E1 +5.425150000E2,6.002937875E1 +5.428150000E2,5.733734968E1 +5.430520000E2,5.791730719E1 +5.433430000E2,5.451667439E1 +5.436740000E2,5.601232928E1 +5.439430000E2,6.067749331E1 +5.441960000E2,6.044443396E1 +5.445120000E2,6.332642539E1 +5.448320000E2,6.369907597E1 +5.451010000E2,6.327412880E1 +5.453640000E2,6.380509737E1 +5.456090000E2,6.199528902E1 +5.458550000E2,5.905332967E1 +5.461530000E2,5.748064798E1 +5.463920000E2,5.793139247E1 +5.466900000E2,5.931551966E1 +5.470480000E2,6.345498755E1 +5.473610000E2,5.881486603E1 +5.476220000E2,5.928200098E1 +5.478810000E2,5.577309321E1 +5.481470000E2,5.875325885E1 +5.483980000E2,6.007409743E1 +5.486490000E2,6.070612531E1 +5.488940000E2,5.934549940E1 +5.491520000E2,6.170511636E1 +5.494020000E2,6.376886521E1 +5.497010000E2,6.406587518E1 +5.499360000E2,6.365684538E1 +5.503130000E2,6.009406633E1 +5.505850000E2,6.014270409E1 +5.508500000E2,5.879153887E1 +5.511470000E2,5.883782525E1 +5.513760000E2,5.773432280E1 +5.516350000E2,5.966648889E1 +5.518940000E2,5.472606108E1 +5.521930000E2,5.682429497E1 +5.524670000E2,5.619181968E1 +5.527770000E2,5.997719307E1 +5.530460000E2,5.879335465E1 +5.533410000E2,5.983416170E1 +5.537120000E2,5.957041909E1 +5.539420000E2,5.952828793E1 +5.542510000E2,5.971645274E1 +5.545000000E2,6.419337448E1 +5.547730000E2,6.634363344E1 +5.550770000E2,6.285856457E1 +5.553760000E2,5.654671197E1 +5.556440000E2,5.530754918E1 +5.558640000E2,5.889159880E1 +5.561110000E2,6.213947417E1 +5.563520000E2,6.860243311E1 +5.566480000E2,6.647018679E1 +5.569110000E2,6.420604516E1 +5.571650000E2,6.703462967E1 +5.574140000E2,6.648783593E1 +5.576540000E2,6.634001782E1 +5.579350000E2,6.293734135E1 +5.581770000E2,6.205918741E1 +5.584760000E2,5.247262167E1 +5.587220000E2,5.338734169E1 +5.589670000E2,5.662276325E1 +5.592110000E2,5.533465633E1 +5.595080000E2,5.854271946E1 +5.597740000E2,5.660649413E1 +5.600260000E2,6.333844075E1 +5.602860000E2,6.255943536E1 +5.605830000E2,5.392304486E1 +5.608700000E2,5.760897506E1 +5.611660000E2,5.713086887E1 +5.614070000E2,5.720157535E1 +5.617060000E2,5.026592539E1 +5.619510000E2,5.140995344E1 +5.621950000E2,5.663266073E1 +5.624370000E2,5.202695689E1 +5.627360000E2,6.084568668E1 +5.630550000E2,6.179643015E1 +5.632960000E2,5.833759539E1 +5.635420000E2,5.518782498E1 +5.638400000E2,6.578433315E1 +5.640880000E2,5.706187099E1 +5.643850000E2,5.456571992E1 +5.646300000E2,5.536479424E1 +5.649270000E2,5.930541070E1 +5.651540000E2,6.023199994E1 +5.653960000E2,5.612469871E1 +5.656980000E2,5.462007842E1 +5.659410000E2,5.278259804E1 +5.662890000E2,6.064478329E1 +5.666290000E2,5.682964802E1 +5.669030000E2,5.787828261E1 +5.671980000E2,5.712595091E1 +5.674890000E2,5.729764361E1 +5.677450000E2,5.241850056E1 +5.679980000E2,5.377155525E1 +5.682380000E2,5.485418547E1 +5.684830000E2,5.503746434E1 +5.687810000E2,5.398954643E1 +5.690230000E2,5.401913169E1 +5.693270000E2,5.953896215E1 +5.695680000E2,5.626247467E1 +5.698640000E2,6.040491706E1 +5.701050000E2,5.781813181E1 +5.703620000E2,5.733744349E1 +5.706600000E2,5.669032177E1 +5.709140000E2,5.453731954E1 +5.711580000E2,6.235364316E1 +5.714280000E2,5.958044055E1 +5.716860000E2,5.875696014E1 +5.719750000E2,5.570465139E1 +5.722310000E2,4.865236791E1 +5.725580000E2,5.257975627E1 +5.727900000E2,4.975389893E1 +5.730890000E2,5.658508958E1 +5.733660000E2,5.542284648E1 +5.735960000E2,5.536199936E1 +5.738990000E2,5.813474916E1 +5.741540000E2,5.417788207E1 +5.744370000E2,5.704170918E1 +5.746710000E2,5.736828455E1 +5.749280000E2,5.450874678E1 +5.751790000E2,5.610950442E1 +5.754890000E2,5.919887582E1 +5.758690000E2,5.780639378E1 +5.761700000E2,5.709220641E1 +5.764190000E2,5.815359781E1 +5.767060000E2,5.734155824E1 +5.769500000E2,5.925323086E1 +5.772430000E2,6.084767221E1 +5.775370000E2,5.852024889E1 +5.777780000E2,5.822649765E1 +5.780770000E2,5.829089322E1 +5.783770000E2,5.915481192E1 +5.786460000E2,5.996430642E1 +5.789780000E2,6.016421415E1 +5.792520000E2,6.221052482E1 +5.795090000E2,5.533993101E1 +5.798230000E2,6.537257407E1 +5.801220000E2,6.068836920E1 +5.803770000E2,5.728273812E1 +5.806510000E2,5.648369901E1 +5.809070000E2,5.397363349E1 +5.811690000E2,5.755294689E1 +5.814510000E2,5.957149991E1 +5.816900000E2,5.963092636E1 +5.820650000E2,6.778811076E1 +5.823240000E2,6.247529404E1 +5.825840000E2,6.073516327E1 +5.828380000E2,6.039356998E1 +5.830970000E2,5.764504824E1 +5.833990000E2,6.041396176E1 +5.836470000E2,6.355942860E1 +5.838990000E2,5.785560268E1 +5.841390000E2,6.060017525E1 +5.844440000E2,6.032069521E1 +5.847010000E2,5.760371100E1 +5.849440000E2,5.491620812E1 +5.851990000E2,5.957978671E1 +5.855370000E2,6.103184032E1 +5.857970000E2,5.896875350E1 +5.861120000E2,6.008190546E1 +5.863990000E2,5.687378544E1 +5.866450000E2,5.874294643E1 +5.869410000E2,5.870806017E1 +5.871860000E2,5.809143232E1 +5.874740000E2,5.847828699E1 +5.877850000E2,5.846232778E1 +5.880500000E2,5.755876921E1 +5.883650000E2,5.609032758E1 +5.887050000E2,5.685283394E1 +5.889730000E2,5.945975832E1 +5.892710000E2,6.114741701E1 +5.895110000E2,6.316132147E1 +5.898100000E2,6.715155367E1 +5.900480000E2,6.367866992E1 +5.903470000E2,5.131949120E1 +5.905900000E2,5.646494575E1 +5.908880000E2,6.096218752E1 +5.911270000E2,6.089171796E1 +5.913720000E2,6.319522071E1 +5.916410000E2,6.016553529E1 +5.920560000E2,5.915189166E1 +5.923330000E2,5.776862186E1 +5.925640000E2,5.840366445E1 +5.927890000E2,5.978914182E1 +5.930440000E2,6.058699711E1 +5.932650000E2,6.012895387E1 +5.935140000E2,6.295025578E1 +5.937520000E2,6.280196012E1 +5.940110000E2,6.194014009E1 +5.943340000E2,6.483906300E1 +5.945870000E2,5.918257578E1 +5.948380000E2,5.620333930E1 +5.951900000E2,6.323403421E1 +5.954240000E2,6.183177681E1 +5.956620000E2,6.120300936E1 +5.959650000E2,5.836925111E1 +5.961890000E2,6.106023171E1 +5.964920000E2,6.153658324E1 +5.967310000E2,6.490772593E1 +5.969960000E2,6.274228676E1 +5.972520000E2,6.139008510E1 +5.975050000E2,6.281232833E1 +5.978180000E2,6.254982632E1 +5.980890000E2,6.205794184E1 +5.983900000E2,6.438771503E1 +5.986230000E2,6.052772463E1 +5.988520000E2,6.375966703E1 +5.991380000E2,5.869985301E1 +5.993860000E2,6.050357712E1 +5.996630000E2,5.547835745E1 +5.999280000E2,5.400421666E1 +6.001960000E2,5.668252186E1 +6.004880000E2,6.001970320E1 +6.007680000E2,6.056987745E1 +6.010550000E2,6.461211967E1 +6.014090000E2,6.399838195E1 +6.016840000E2,5.485596323E1 +6.019450000E2,5.731519087E1 +6.022080000E2,6.691878914E1 +6.024720000E2,6.479201876E1 +6.027260000E2,6.412847214E1 +6.029760000E2,6.025795068E1 +6.032190000E2,6.098133491E1 +6.035120000E2,5.689387521E1 +6.038040000E2,5.639928101E1 +6.041550000E2,5.328068252E1 +6.044370000E2,5.639829798E1 +6.046770000E2,5.892330560E1 +6.049510000E2,5.315638413E1 +6.051900000E2,5.740260439E1 +6.054620000E2,5.339391440E1 +6.057500000E2,5.310371918E1 +6.060710000E2,5.460903952E1 +6.063050000E2,5.407304270E1 +6.065540000E2,5.870790541E1 +6.068060000E2,5.576782972E1 +6.070790000E2,5.976954147E1 +6.074640000E2,6.181180531E1 +6.077240000E2,6.194364733E1 +6.080150000E2,6.794225297E1 +6.082590000E2,6.236601361E1 +6.085470000E2,6.002700779E1 +6.088450000E2,5.971993236E1 +6.090930000E2,5.954735434E1 +6.093460000E2,5.907202371E1 +6.095920000E2,5.993658420E1 +6.098910000E2,5.530332259E1 +6.101850000E2,5.531802018E1 +6.104220000E2,5.376885939E1 +6.107780000E2,5.735355871E1 +6.110210000E2,5.868610156E1 +6.112710000E2,5.312122754E1 +6.115670000E2,5.745102631E1 +6.118550000E2,5.535536940E1 +6.121540000E2,5.088728731E1 +6.123960000E2,5.266907791E1 +6.126860000E2,5.386493253E1 +6.130010000E2,5.670623073E1 +6.132810000E2,5.563278655E1 +6.135150000E2,5.267172926E1 +6.138540000E2,5.386148816E1 +6.141880000E2,5.716468210E1 +6.144880000E2,5.526918781E1 +6.147190000E2,5.659553915E1 +6.149610000E2,5.648341007E1 +6.152730000E2,5.711745846E1 +6.155520000E2,5.918800114E1 +6.158010000E2,5.642548609E1 +6.161000000E2,5.635896926E1 +6.163480000E2,5.899225051E1 +6.166180000E2,5.374343244E1 +6.168690000E2,4.891042404E1 +6.172050000E2,5.065835680E1 +6.174560000E2,5.685264653E1 +6.177340000E2,5.429270039E1 +6.179930000E2,5.499548313E1 +6.182940000E2,5.407177565E1 +6.185300000E2,5.356533799E1 +6.188300000E2,5.378190643E1 +6.191140000E2,5.189020817E1 +6.193870000E2,5.046647494E1 +6.196450000E2,5.501107364E1 +6.198910000E2,5.798814538E1 +6.201660000E2,5.360844474E1 +6.205080000E2,5.353935610E1 +6.208080000E2,5.620189936E1 +6.210820000E2,6.216008765E1 +6.213360000E2,5.767015155E1 +6.216520000E2,6.210101060E1 +6.219320000E2,5.928042926E1 +6.221800000E2,6.394496555E1 +6.224980000E2,5.872213561E1 +6.227430000E2,5.927091626E1 +6.230010000E2,5.235592166E1 +6.232430000E2,6.313120608E1 +6.235470000E2,6.005436888E1 +6.238480000E2,5.999836557E1 +6.240930000E2,5.879748041E1 +6.243920000E2,5.978277378E1 +6.246440000E2,6.050724590E1 +6.249480000E2,6.282777276E1 +6.252520000E2,6.080897043E1 +6.255640000E2,5.889462949E1 +6.258270000E2,5.550476615E1 +6.260730000E2,5.586785505E1 +6.263620000E2,6.576560120E1 +6.266590000E2,6.102361259E1 +6.270050000E2,6.110507706E1 +6.272870000E2,5.753592100E1 +6.275410000E2,6.297666729E1 +6.278490000E2,6.037594793E1 +6.281160000E2,5.849898506E1 +6.284180000E2,6.165631601E1 +6.287090000E2,6.096774109E1 +6.289510000E2,6.176590968E1 +6.292460000E2,5.947061017E1 +6.294820000E2,6.109202024E1 +6.297790000E2,5.322559935E1 +6.301160000E2,4.971181861E1 +6.303880000E2,5.533921521E1 +6.307250000E2,5.478410742E1 +6.310240000E2,5.647795083E1 +6.313200000E2,5.797504265E1 +6.315690000E2,5.403019222E1 +6.318640000E2,5.301910781E1 +6.321010000E2,5.096544207E1 +6.324030000E2,5.324435941E1 +6.326360000E2,5.447050361E1 +6.328960000E2,5.932781903E1 +6.331500000E2,5.967228428E1 +6.334640000E2,6.319489971E1 +6.337810000E2,5.820271574E1 +6.340710000E2,5.910289699E1 +6.343170000E2,5.681937370E1 +6.346260000E2,5.582227275E1 +6.349350000E2,5.745831651E1 +6.352100000E2,5.504019385E1 +6.354620000E2,5.072303887E1 +6.357190000E2,5.366082959E1 +6.359690000E2,5.380227314E1 +6.362560000E2,4.818205454E1 +6.365090000E2,5.989908626E1 +6.368780000E2,5.659012846E1 +6.371610000E2,5.593157997E1 +6.374460000E2,5.135237935E1 +6.377000000E2,5.687788515E1 +6.379550000E2,5.943975502E1 +6.382630000E2,6.290957992E1 +6.385230000E2,5.827099811E1 +6.387780000E2,5.686391746E1 +6.390620000E2,5.771790911E1 +6.393200000E2,5.390066131E1 +6.395830000E2,5.358231960E1 +6.398480000E2,5.564565007E1 +6.401490000E2,5.205482155E1 +6.404200000E2,5.852280051E1 +6.407340000E2,4.836326193E1 +6.409980000E2,5.905115701E1 +6.412560000E2,5.622349390E1 +6.415040000E2,5.891737338E1 +6.417460000E2,5.749377856E1 +6.420310000E2,5.414095183E1 +6.422680000E2,5.482109112E1 +6.425170000E2,5.202942051E1 +6.428000000E2,4.903409276E1 +6.431250000E2,5.495098254E1 +6.434650000E2,5.777911761E1 +6.437680000E2,5.329076638E1 +6.440080000E2,5.886592322E1 +6.443070000E2,5.661637111E1 +6.445560000E2,5.459133399E1 +6.448230000E2,4.858613706E1 +6.450990000E2,5.642020356E1 +6.453590000E2,5.634614530E1 +6.456240000E2,5.769024626E1 +6.458900000E2,6.037646239E1 +6.461470000E2,5.712013563E1 +6.464260000E2,5.393237723E1 +6.467570000E2,5.443825449E1 +6.469850000E2,5.464133184E1 +6.472460000E2,5.185343249E1 +6.475170000E2,5.670688718E1 +6.477900000E2,5.808659132E1 +6.480150000E2,5.879711687E1 +6.483250000E2,5.860991669E1 +6.485730000E2,5.600484597E1 +6.488230000E2,5.291438286E1 +6.491020000E2,5.869236753E1 +6.493260000E2,5.826316690E1 +6.496250000E2,5.619306699E1 +6.499850000E2,6.085970714E1 +6.502400000E2,6.051231588E1 +6.505400000E2,6.096601072E1 +6.507990000E2,6.197068990E1 +6.511180000E2,6.520817743E1 +6.513810000E2,6.377577246E1 +6.516860000E2,6.105485617E1 +6.519940000E2,5.890751001E1 +6.522910000E2,5.911253604E1 +6.525370000E2,6.291937986E1 +6.528540000E2,6.252638881E1 +6.532210000E2,6.337356348E1 +6.535270000E2,5.894334263E1 +6.537830000E2,5.754939005E1 +6.540930000E2,5.500698560E1 +6.543880000E2,5.014350898E1 +6.546880000E2,5.646260920E1 +6.549870000E2,5.951282585E1 +6.552920000E2,6.099782791E1 +6.555480000E2,6.065538365E1 +6.558100000E2,6.827371953E1 +6.560790000E2,6.035931154E1 +6.563820000E2,6.267306134E1 +6.566350000E2,5.826452213E1 +6.568970000E2,6.092938143E1 +6.572010000E2,6.534130041E1 +6.575130000E2,6.111837506E1 +6.577770000E2,5.826481723E1 +6.580330000E2,5.918147323E1 +6.582980000E2,6.100230752E1 +6.585510000E2,6.302217459E1 +6.588060000E2,5.754956715E1 +6.591080000E2,6.111201710E1 +6.593520000E2,6.017410469E1 +6.597040000E2,6.031944923E1 +6.599450000E2,5.943575512E1 +6.602120000E2,5.868776340E1 +6.605570000E2,5.940543513E1 +6.608500000E2,5.886327816E1 +6.610920000E2,5.770522648E1 +6.613840000E2,5.442777508E1 +6.616200000E2,5.394232060E1 +6.619220000E2,5.856638842E1 +6.622160000E2,5.742664400E1 +6.624600000E2,5.472498345E1 +6.627560000E2,5.672985390E1 +6.629770000E2,5.834702318E1 +6.632250000E2,5.907602823E1 +6.634810000E2,5.873031221E1 +6.637670000E2,5.757130737E1 +6.640040000E2,5.572185824E1 +6.643070000E2,5.959142979E1 +6.645480000E2,5.851623707E1 +6.648520000E2,5.856887935E1 +6.650940000E2,6.397218192E1 +6.653890000E2,5.963692586E1 +6.656210000E2,5.934207027E1 +6.659580000E2,5.667856430E1 +6.662640000E2,5.811017468E1 +6.665550000E2,5.505265787E1 +6.667990000E2,5.558350894E1 +6.671320000E2,6.063017800E1 +6.674000000E2,5.568411381E1 +6.676510000E2,5.981422062E1 +6.679580000E2,5.723024768E1 +6.682820000E2,5.036028104E1 +6.685240000E2,5.199205823E1 +6.687970000E2,5.367328475E1 +6.691280000E2,5.936914884E1 +6.693940000E2,5.657797691E1 +6.696490000E2,6.065879377E1 +6.699270000E2,5.657054255E1 +6.702000000E2,5.655716576E1 +6.704770000E2,5.823562265E1 +6.707350000E2,6.065030224E1 +6.710140000E2,6.110776530E1 +6.712700000E2,5.714357796E1 +6.715170000E2,5.604236164E1 +6.717930000E2,6.041748871E1 +6.721240000E2,6.019765334E1 +6.724270000E2,5.928602786E1 +6.727750000E2,5.973060669E1 +6.730710000E2,6.059869751E1 +6.733250000E2,6.116850166E1 +6.736400000E2,6.145214709E1 +6.738890000E2,6.020118097E1 +6.741670000E2,6.048579637E1 +6.744720000E2,6.225337088E1 +6.747550000E2,5.853636068E1 +6.750030000E2,5.999204871E1 +6.752840000E2,5.433989895E1 +6.755100000E2,5.847308735E1 +6.758420000E2,5.913726954E1 +6.760830000E2,6.049449503E1 +6.763830000E2,5.545572399E1 +6.766370000E2,6.246077536E1 +6.768920000E2,6.029598130E1 +6.771340000E2,6.005864514E1 +6.774230000E2,6.582269585E1 +6.776700000E2,6.255104294E1 +6.779140000E2,6.623711836E1 +6.781740000E2,6.684819787E1 +6.784850000E2,6.877250850E1 +6.787420000E2,6.157084767E1 +6.789860000E2,6.054068573E1 +6.793290000E2,6.069583213E1 +6.795810000E2,6.124898856E1 +6.798240000E2,6.136691849E1 +6.800900000E2,6.035594762E1 +6.803920000E2,5.654106541E1 +6.806920000E2,5.587565134E1 +6.809940000E2,5.642134155E1 +6.813020000E2,5.749983358E1 +6.815830000E2,5.576151961E1 +6.818120000E2,5.714589311E1 +6.820580000E2,5.969510914E1 +6.823020000E2,5.824123453E1 +6.825680000E2,5.779273115E1 +6.828630000E2,5.699644891E1 +6.831010000E2,5.900876644E1 +6.833500000E2,6.335540424E1 +6.835940000E2,6.280432027E1 +6.838340000E2,6.194675910E1 +6.841290000E2,5.801082069E1 +6.843650000E2,5.652506879E1 +6.846570000E2,5.895404856E1 +6.848910000E2,5.873705448E1 +6.851950000E2,5.589704153E1 +6.855380000E2,5.379672362E1 +6.857910000E2,6.287056471E1 +6.860900000E2,6.081817617E1 +6.863340000E2,6.807593043E1 +6.866320000E2,5.604389930E1 +6.868800000E2,6.712075434E1 +6.871750000E2,6.290238552E1 +6.874740000E2,6.473105179E1 +6.877330000E2,5.873835234E1 +6.880180000E2,5.800563858E1 +6.882620000E2,5.540095032E1 +6.885810000E2,6.197881428E1 +6.888280000E2,5.541258482E1 +6.890890000E2,5.558277465E1 +6.894010000E2,4.965923685E1 +6.897080000E2,4.860020107E1 +6.899730000E2,5.608167548E1 +6.902300000E2,5.381305593E1 +6.904990000E2,6.079286270E1 +6.908000000E2,6.446965644E1 +6.910380000E2,6.556266140E1 +6.913400000E2,5.418444209E1 +6.916350000E2,5.205102491E1 +6.919820000E2,5.812981404E1 +6.922410000E2,6.500705260E1 +6.925070000E2,6.149947285E1 +6.927750000E2,5.695315316E1 +6.930870000E2,5.775854948E1 +6.933870000E2,6.523399833E1 +6.936300000E2,6.692630865E1 +6.939270000E2,5.793447825E1 +6.942230000E2,5.746396110E1 +6.944770000E2,6.017975210E1 +6.947150000E2,5.956759439E1 +6.950320000E2,6.391288151E1 +6.953110000E2,6.484415086E1 +6.955650000E2,6.664209540E1 +6.958410000E2,6.746668632E1 +6.961050000E2,5.775664920E1 +6.964050000E2,6.383035698E1 +6.967020000E2,5.816763892E1 +6.969600000E2,6.921190909E1 +6.972400000E2,6.165047809E1 +6.975080000E2,5.666810057E1 +6.977540000E2,6.417546300E1 +6.980020000E2,5.788971486E1 +6.982730000E2,5.486922606E1 +6.985850000E2,5.576434723E1 +6.988820000E2,5.548978795E1 +6.991460000E2,5.886820316E1 +6.993970000E2,6.226406326E1 +6.996480000E2,5.601534080E1 +6.999400000E2,5.901385758E1 +7.002040000E2,5.720709772E1 +7.005120000E2,6.318399213E1 +7.007580000E2,6.338981741E1 +7.010170000E2,6.747312486E1 +7.012670000E2,5.788999692E1 +7.015450000E2,4.434465006E1 +7.018710000E2,6.439013955E1 +7.021480000E2,5.375342664E1 +7.023700000E2,6.398282027E1 +7.026160000E2,5.857909138E1 +7.029130000E2,5.670439641E1 +7.031590000E2,5.749786365E1 +7.034320000E2,5.181710985E1 +7.036770000E2,5.871535868E1 +7.039520000E2,5.470297527E1 +7.042240000E2,5.771822323E1 +7.044750000E2,5.236261523E1 +7.047130000E2,5.595332709E1 +7.050480000E2,5.576748295E1 +7.053040000E2,5.334869600E1 +7.055590000E2,5.337806625E1 +7.058180000E2,5.499892680E1 +7.060900000E2,5.490963435E1 +7.063980000E2,5.551078540E1 +7.066680000E2,5.358868238E1 +7.069300000E2,5.203182642E1 +7.071760000E2,5.771053387E1 +7.074630000E2,5.175835182E1 +7.077440000E2,5.402526598E1 +7.080400000E2,5.754717994E1 +7.083470000E2,6.103880587E1 +7.086400000E2,6.284824916E1 +7.088840000E2,6.674666322E1 +7.092010000E2,6.194114278E1 +7.094980000E2,5.796289911E1 +7.097580000E2,5.475547679E1 +7.100170000E2,5.804024708E1 +7.102650000E2,5.606423134E1 +7.105550000E2,5.319247933E1 +7.107930000E2,5.625991375E1 +7.110940000E2,5.589539698E1 +7.114730000E2,6.073460415E1 +7.117930000E2,6.208342045E1 +7.120530000E2,6.335117127E1 +7.123290000E2,5.821275565E1 +7.126280000E2,5.793160357E1 +7.128780000E2,5.509944006E1 +7.131790000E2,5.578357696E1 +7.134760000E2,5.632534225E1 +7.137350000E2,5.466315647E1 +7.140450000E2,5.914530785E1 +7.143020000E2,6.280432125E1 +7.146020000E2,6.333348539E1 +7.149790000E2,5.698482465E1 +7.152920000E2,5.474810308E1 +7.155370000E2,5.417920207E1 +7.157880000E2,6.392184792E1 +7.160720000E2,6.565549591E1 +7.163130000E2,6.082705714E1 +7.166120000E2,5.816285927E1 +7.168430000E2,5.809201859E1 +7.170930000E2,6.016105207E1 +7.173350000E2,5.162287691E1 +7.176230000E2,5.754317879E1 +7.179310000E2,6.166304542E1 +7.181770000E2,6.177004553E1 +7.184320000E2,6.274574776E1 +7.186900000E2,6.104994734E1 +7.189920000E2,5.735301480E1 +7.192340000E2,5.830205645E1 +7.194890000E2,6.212782217E1 +7.197420000E2,5.467685243E1 +7.200420000E2,5.313970583E1 +7.202920000E2,5.278680647E1 +7.205360000E2,5.474141102E1 +7.209140000E2,6.241771654E1 +7.212600000E2,6.394594172E1 +7.215560000E2,6.348358734E1 +7.217980000E2,6.112734048E1 +7.220450000E2,6.226451183E1 +7.222930000E2,6.534082516E1 +7.225960000E2,6.114019283E1 +7.228390000E2,6.421228964E1 +7.231230000E2,6.814847387E1 +7.233690000E2,6.275446304E1 +7.236190000E2,6.679153921E1 +7.239280000E2,6.537583699E1 +7.241850000E2,6.212976374E1 +7.245300000E2,6.553556935E1 +7.248220000E2,5.834030427E1 +7.250930000E2,5.992153646E1 +7.253380000E2,5.595099295E1 +7.256370000E2,5.720822528E1 +7.258800000E2,5.423516872E1 +7.261770000E2,5.906139652E1 +7.264140000E2,6.204477132E1 +7.267140000E2,6.368823365E1 +7.269550000E2,6.513672214E1 +7.272500000E2,6.364997971E1 +7.275370000E2,6.269941998E1 +7.278570000E2,5.948773609E1 +7.281020000E2,5.789544973E1 +7.283740000E2,6.305528689E1 +7.286400000E2,6.245554089E1 +7.289690000E2,6.033221518E1 +7.292310000E2,5.940071821E1 +7.294970000E2,6.176178101E1 +7.298020000E2,5.355172623E1 +7.300580000E2,5.535292187E1 +7.303150000E2,5.274398781E1 +7.305750000E2,5.399957194E1 +7.308780000E2,5.819691646E1 +7.312070000E2,5.434897588E1 +7.315090000E2,6.041787911E1 +7.317850000E2,5.617860881E1 +7.320560000E2,5.558770875E1 +7.323290000E2,5.151264449E1 +7.325860000E2,5.612143969E1 +7.328800000E2,5.405001557E1 +7.331120000E2,5.455354216E1 +7.334090000E2,5.716252136E1 +7.337070000E2,6.416157102E1 +7.339910000E2,6.098010142E1 +7.343020000E2,6.194029449E1 +7.346500000E2,6.091313037E1 +7.349540000E2,5.846954669E1 +7.352410000E2,5.743489407E1 +7.355320000E2,5.872669957E1 +7.357800000E2,5.859080967E1 +7.360560000E2,6.053269456E1 +7.363220000E2,6.117884455E1 +7.366590000E2,5.809887850E1 +7.369420000E2,5.453224539E1 +7.372510000E2,5.639337460E1 +7.375040000E2,5.373613181E1 +7.378630000E2,5.066236714E1 +7.381160000E2,4.653740377E1 +7.383650000E2,6.375011526E1 +7.386730000E2,6.282181577E1 +7.389830000E2,6.727660972E1 +7.392340000E2,6.413328322E1 +7.394790000E2,6.184881400E1 +7.397290000E2,6.430634497E1 +7.400250000E2,6.276256291E1 +7.402610000E2,6.297441350E1 +7.405590000E2,5.306586823E1 +7.408610000E2,5.403016569E1 +7.412260000E2,5.749263443E1 +7.415060000E2,5.657932114E1 +7.417820000E2,5.532222303E1 +7.420430000E2,5.911133378E1 +7.423450000E2,5.822379827E1 +7.426470000E2,6.311870884E1 +7.428860000E2,5.964121243E1 +7.431940000E2,5.708688763E1 +7.434960000E2,5.782189241E1 +7.437480000E2,5.745118469E1 +7.440380000E2,5.258772989E1 +7.442830000E2,5.325984780E1 +7.445410000E2,5.216709684E1 +7.447900000E2,5.485283680E1 +7.450520000E2,6.638751453E1 +7.453640000E2,6.256149725E1 +7.456370000E2,6.851667797E1 +7.459020000E2,6.356784575E1 +7.462040000E2,6.586178842E1 +7.464510000E2,6.099626883E1 +7.467420000E2,6.874341983E1 +7.470300000E2,5.690479739E1 +7.472670000E2,5.749513215E1 +7.475860000E2,5.743840209E1 +7.478480000E2,6.695338823E1 +7.481550000E2,6.575566103E1 +7.484170000E2,6.244751264E1 +7.486690000E2,6.206430480E1 +7.489520000E2,5.755143157E1 +7.492450000E2,6.343498072E1 +7.494820000E2,6.599354682E1 +7.497800000E2,5.994269627E1 +7.500210000E2,6.480563885E1 +7.503160000E2,5.962320355E1 +7.505550000E2,5.907805627E1 +7.508860000E2,5.452673237E1 +7.511450000E2,5.413358853E1 +7.514110000E2,5.786691992E1 +7.516870000E2,6.185088179E1 +7.519570000E2,5.432685780E1 +7.522050000E2,5.297819944E1 +7.524920000E2,5.290855554E1 +7.527910000E2,5.828859659E1 +7.530300000E2,5.880189294E1 +7.533360000E2,5.500578631E1 +7.535910000E2,5.476677878E1 +7.538330000E2,5.414240587E1 +7.541650000E2,5.332866170E1 +7.544620000E2,5.193802785E1 +7.547080000E2,5.242932681E1 +7.549590000E2,6.024921863E1 +7.552020000E2,5.537701523E1 +7.554960000E2,5.489617845E1 +7.557330000E2,5.384280286E1 +7.560410000E2,5.406125999E1 +7.562870000E2,5.246560959E1 +7.565320000E2,5.374729291E1 +7.567680000E2,5.542801483E1 +7.570630000E2,5.525770987E1 +7.573930000E2,5.847670432E1 +7.576660000E2,5.822188632E1 +7.579180000E2,5.822901451E1 +7.582040000E2,5.458975346E1 +7.584820000E2,5.438683247E1 +7.587800000E2,5.260449368E1 +7.590260000E2,5.371245859E1 +7.592870000E2,4.983203663E1 +7.595420000E2,5.018089077E1 +7.598380000E2,5.950969681E1 +7.601480000E2,5.769305363E1 +7.604800000E2,5.747567937E1 +7.607190000E2,5.446335810E1 +7.610040000E2,5.463229896E1 +7.612970000E2,5.644916160E1 +7.615560000E2,5.809520116E1 +7.618460000E2,5.406577519E1 +7.621050000E2,5.362277750E1 +7.623930000E2,5.868559294E1 +7.626230000E2,5.548744129E1 +7.628890000E2,5.613986675E1 +7.631890000E2,5.592058678E1 +7.634870000E2,5.947938191E1 +7.638120000E2,5.945990241E1 +7.640830000E2,5.354091788E1 +7.643270000E2,5.910847411E1 +7.645670000E2,6.112853730E1 +7.648120000E2,5.617469613E1 +7.650520000E2,5.678172470E1 +7.653190000E2,5.293731054E1 +7.655730000E2,5.571573154E1 +7.658430000E2,5.239475172E1 +7.660900000E2,5.710555790E1 +7.663840000E2,5.593714408E1 +7.666500000E2,5.506488062E1 +7.669100000E2,5.276148627E1 +7.671530000E2,5.087813070E1 +7.674500000E2,4.966858228E1 +7.677070000E2,4.690170064E1 +7.679870000E2,5.097718665E1 +7.682460000E2,5.173969669E1 +7.685220000E2,5.562988056E1 +7.687630000E2,5.194720020E1 +7.690630000E2,5.590118249E1 +7.693610000E2,5.613585205E1 +7.696030000E2,5.417299550E1 +7.698530000E2,5.925774948E1 +7.702010000E2,5.729895975E1 +7.704610000E2,5.765570707E1 +7.707610000E2,6.211008380E1 +7.710570000E2,5.846530012E1 +7.712970000E2,5.766544416E1 +7.715460000E2,5.716238768E1 +7.718080000E2,5.700535494E1 +7.720510000E2,5.592606747E1 +7.723260000E2,5.771214429E1 +7.725940000E2,5.753442175E1 +7.728830000E2,5.541298336E1 +7.731860000E2,5.137853822E1 +7.735420000E2,5.462649470E1 +7.738320000E2,5.454281912E1 +7.740820000E2,6.803752283E1 +7.743260000E2,6.852980541E1 +7.745820000E2,7.007631543E1 +7.748270000E2,7.009876218E1 +7.751160000E2,6.950363051E1 +7.753520000E2,6.338954984E1 +7.755910000E2,5.500200077E1 +7.758880000E2,5.358702362E1 +7.761340000E2,5.718303470E1 +7.763730000E2,5.887519420E1 +7.767050000E2,5.795457078E1 +7.769970000E2,5.796499201E1 +7.773000000E2,5.644912180E1 +7.775570000E2,5.804780214E1 +7.778740000E2,5.958528627E1 +7.781300000E2,5.635913866E1 +7.784430000E2,5.593106857E1 +7.787280000E2,6.063168213E1 +7.789960000E2,5.917208792E1 +7.792560000E2,5.719923422E1 +7.795050000E2,6.400429125E1 +7.797680000E2,5.733192807E1 +7.800440000E2,6.018331087E1 +7.803000000E2,6.350407169E1 +7.805530000E2,6.357762743E1 +7.808590000E2,6.772563953E1 +7.811430000E2,6.431848914E1 +7.814050000E2,5.710721917E1 +7.816950000E2,5.646111127E1 +7.819500000E2,5.564600214E1 +7.822050000E2,6.362802489E1 +7.824550000E2,6.278310471E1 +7.827010000E2,5.851995741E1 +7.829620000E2,5.759567059E1 +7.832630000E2,5.449669640E1 +7.835070000E2,6.040303881E1 +7.837500000E2,5.743841461E1 +7.839990000E2,6.096558185E1 +7.842840000E2,7.161293257E1 +7.845270000E2,7.417435903E1 +7.848410000E2,6.386070968E1 +7.851390000E2,6.234904760E1 +7.854350000E2,6.321731436E1 +7.856820000E2,6.294103551E1 +7.859780000E2,6.210337552E1 +7.862150000E2,6.765383904E1 +7.865650000E2,6.346682761E1 +7.868610000E2,6.221020232E1 +7.871280000E2,6.119530731E1 +7.873850000E2,5.314248269E1 +7.876880000E2,5.288680780E1 +7.879230000E2,5.064349321E1 +7.882230000E2,5.786336298E1 +7.884630000E2,5.341864841E1 +7.887250000E2,5.286568073E1 +7.890140000E2,5.272997567E1 +7.893180000E2,5.904110581E1 +7.896690000E2,5.748622391E1 +7.899200000E2,5.773986136E1 +7.902160000E2,5.480967078E1 +7.904710000E2,5.627241382E1 +7.907280000E2,5.456362797E1 +7.909900000E2,5.766408512E1 +7.912380000E2,5.413586400E1 +7.914940000E2,5.234403284E1 +7.917720000E2,5.190170354E1 +7.920440000E2,5.227759392E1 +7.923170000E2,4.410400383E1 +7.926220000E2,3.508270700E1 +7.929370000E2,3.887828085E1 +7.932030000E2,4.522069604E1 +7.934660000E2,4.928233980E1 +7.937420000E2,4.706401379E1 +7.940710000E2,4.988989997E1 +7.943700000E2,5.767827889E1 +7.946060000E2,5.506606719E1 +7.949050000E2,6.107887773E1 +7.952060000E2,5.849609892E1 +7.955030000E2,5.343173328E1 +7.957490000E2,5.007726003E1 +7.960580000E2,4.763873915E1 +7.963010000E2,5.045894898E1 +7.966040000E2,6.859700710E1 +7.968900000E2,6.734256534E1 +7.971550000E2,6.661489392E1 +7.974110000E2,6.556398865E1 +7.976580000E2,5.519705677E1 +7.979230000E2,5.503316479E1 +7.982060000E2,5.955770829E1 +7.984280000E2,5.777834711E1 +7.987260000E2,6.050467535E1 +7.989700000E2,5.583639573E1 +7.993330000E2,5.988908902E1 +7.995750000E2,5.875791040E1 +7.998670000E2,6.166637478E1 +8.001160000E2,5.690435901E1 +8.004160000E2,5.599911293E1 +8.006610000E2,5.889628547E1 +8.009180000E2,6.227540789E1 +8.011740000E2,6.572663811E1 +8.014300000E2,6.013467784E1 +8.016770000E2,6.250368579E1 +8.019910000E2,6.532292099E1 +8.023560000E2,5.377170031E1 +8.026370000E2,5.535595108E1 +8.029110000E2,5.147526495E1 +8.031720000E2,4.993046061E1 +8.034760000E2,6.394035794E1 +8.037260000E2,5.983119170E1 +8.040270000E2,5.967243802E1 +8.042930000E2,6.559340840E1 +8.046100000E2,5.262215496E1 +8.049160000E2,5.397812040E1 +8.051780000E2,5.680330381E1 +8.054740000E2,5.857171626E1 +8.058060000E2,5.577198454E1 +8.060880000E2,5.916891157E1 +8.063460000E2,6.120078548E1 +8.066060000E2,6.223167379E1 +8.069230000E2,6.161077093E1 +8.071720000E2,5.812180846E1 +8.074300000E2,5.665535607E1 +8.077230000E2,5.401482687E1 +8.079600000E2,5.631804256E1 +8.082610000E2,5.267806276E1 +8.085540000E2,5.766120113E1 +8.088100000E2,5.717509884E1 +8.091690000E2,5.698714543E1 +8.094130000E2,5.807918354E1 +8.096940000E2,5.364566959E1 +8.099320000E2,5.678502402E1 +8.102110000E2,5.494444844E1 +8.104710000E2,6.216218230E1 +8.107550000E2,5.504588420E1 +8.110030000E2,5.220186059E1 +8.112810000E2,5.338487037E1 +8.115430000E2,5.422122114E1 +8.118180000E2,6.217546099E1 +8.121430000E2,5.739027439E1 +8.124800000E2,5.218554734E1 +8.128080000E2,6.183667492E1 +8.130850000E2,6.028246668E1 +8.133620000E2,6.620979851E1 +8.135950000E2,5.810667246E1 +8.138630000E2,6.096670869E1 +8.141300000E2,5.149777407E1 +8.143960000E2,4.993954713E1 +8.146400000E2,5.196561010E1 +8.149350000E2,5.727966309E1 +8.151710000E2,5.489316784E1 +8.154100000E2,5.619291420E1 +8.157500000E2,5.425831711E1 +8.160430000E2,5.677079709E1 +8.163250000E2,5.289383275E1 +8.165600000E2,5.573749616E1 +8.168090000E2,5.211960412E1 +8.170840000E2,5.029895102E1 +8.173170000E2,5.085418245E1 +8.175630000E2,5.101392152E1 +8.178870000E2,5.228690479E1 +8.182130000E2,5.919931006E1 +8.184680000E2,5.288617356E1 +8.188320000E2,5.626269479E1 +8.191030000E2,6.124827198E1 +8.193870000E2,5.889071517E1 +8.196160000E2,5.957980623E1 +8.199180000E2,5.440069788E1 +8.201590000E2,5.524226830E1 +8.204560000E2,5.147688867E1 +8.206870000E2,5.390780082E1 +8.209820000E2,6.509870984E1 +8.212270000E2,6.421388309E1 +8.215230000E2,5.843840462E1 +8.218170000E2,5.422512027E1 +8.221280000E2,5.468614274E1 +8.223780000E2,5.922850585E1 +8.226710000E2,6.486031186E1 +8.229330000E2,6.154967201E1 +8.232420000E2,5.893257410E1 +8.235100000E2,6.020329639E1 +8.238290000E2,5.483779552E1 +8.240760000E2,5.692914998E1 +8.243280000E2,6.347347085E1 +8.245930000E2,5.345306004E1 +8.248670000E2,6.141647052E1 +8.252000000E2,5.672783001E1 +8.254550000E2,5.605661334E1 +8.257610000E2,5.699330885E1 +8.260410000E2,5.489256860E1 +8.263010000E2,6.262090025E1 +8.265830000E2,5.457719262E1 +8.268180000E2,5.416382407E1 +8.271260000E2,4.993919751E1 +8.273700000E2,5.569569056E1 +8.276330000E2,5.514364162E1 +8.278890000E2,5.653204472E1 +8.281470000E2,5.784406489E1 +8.284370000E2,5.752811490E1 +8.286720000E2,5.727510089E1 +8.289650000E2,5.900575965E1 +8.292510000E2,5.679022390E1 +8.294860000E2,5.722234118E1 +8.297350000E2,5.952638514E1 +8.300320000E2,5.925181191E1 +8.302740000E2,5.930148258E1 +8.305160000E2,5.668145507E1 +8.307730000E2,5.590492759E1 +8.310130000E2,6.302930486E1 +8.312510000E2,5.733539345E1 +8.315800000E2,5.620349253E1 +8.318910000E2,5.495250031E1 +8.322000000E2,5.501979251E1 +8.324620000E2,5.208226415E1 +8.327390000E2,5.765748383E1 +8.329950000E2,5.489193423E1 +8.332490000E2,5.593428331E1 +8.335720000E2,5.714652117E1 +8.338250000E2,5.832769426E1 +8.341370000E2,5.884156077E1 +8.344030000E2,5.840498509E1 +8.347020000E2,5.864505811E1 +8.350330000E2,6.356982434E1 +8.353340000E2,6.286445683E1 +8.355720000E2,5.657384439E1 +8.358940000E2,5.660970318E1 +8.361720000E2,5.918731584E1 +8.364160000E2,5.825788220E1 +8.366580000E2,5.592754487E1 +8.369110000E2,5.553717092E1 +8.371910000E2,5.495027293E1 +8.374510000E2,5.546329287E1 +8.377420000E2,5.746402701E1 +8.379890000E2,5.891922359E1 +8.383130000E2,6.522858798E1 +8.385710000E2,6.384617776E1 +8.388430000E2,5.435088619E1 +8.390670000E2,5.460135210E1 +8.393610000E2,5.982769627E1 +8.396020000E2,5.936265195E1 +8.398550000E2,6.034701146E1 +8.401470000E2,6.875861473E1 +8.403840000E2,6.968788985E1 +8.406760000E2,6.653493651E1 +8.409120000E2,6.664139767E1 +8.412200000E2,6.195236791E1 +8.415280000E2,5.759269564E1 +8.418110000E2,5.704906263E1 +8.420770000E2,5.199124728E1 +8.423350000E2,5.625309672E1 +8.426060000E2,5.627754144E1 +8.428710000E2,6.285304788E1 +8.431220000E2,6.089762622E1 +8.434160000E2,5.828079525E1 +8.436650000E2,5.581703965E1 +8.439650000E2,5.326092983E1 +8.442070000E2,5.247397640E1 +8.444500000E2,5.104216729E1 +8.447560000E2,4.981466747E1 +8.450730000E2,5.794387296E1 +8.453210000E2,6.103400827E1 +8.455680000E2,6.053778141E1 +8.458610000E2,5.413066164E1 +8.461240000E2,5.591468697E1 +8.463740000E2,5.289659812E1 +8.466770000E2,6.014390988E1 +8.469740000E2,5.713983843E1 +8.472340000E2,5.457406708E1 +8.474800000E2,5.848999564E1 +8.478210000E2,5.310404619E1 +8.481040000E2,5.463633704E1 +8.483620000E2,5.329096892E1 +8.486670000E2,5.667645304E1 +8.489890000E2,5.540515985E1 +8.492420000E2,5.014593999E1 +8.495060000E2,5.019949668E1 +8.497660000E2,4.724526190E1 +8.500410000E2,4.632701850E1 +8.502660000E2,4.436725745E1 +8.505710000E2,5.273585220E1 +8.508470000E2,5.232501704E1 +8.511370000E2,5.177389205E1 +8.513940000E2,5.236772038E1 +8.516560000E2,4.869019062E1 +8.518980000E2,5.254056589E1 +8.521620000E2,5.441215371E1 +8.524060000E2,5.431954181E1 +8.526720000E2,4.873515026E1 +8.529820000E2,5.253291311E1 +8.532350000E2,5.201920339E1 +8.535330000E2,5.083296820E1 +8.537750000E2,5.373650683E1 +8.540560000E2,6.162621210E1 +8.543710000E2,6.137876928E1 +8.546190000E2,6.347980201E1 +8.548850000E2,6.480134627E1 +8.551390000E2,6.344943059E1 +8.553830000E2,6.653758852E1 +8.556910000E2,6.821811094E1 +8.559900000E2,6.564040109E1 +8.562480000E2,6.310710880E1 +8.565060000E2,5.625485760E1 +8.567860000E2,5.886920329E1 +8.570590000E2,5.638007706E1 +8.573180000E2,5.477312089E1 +8.576670000E2,5.402637072E1 +8.579310000E2,5.282806817E1 +8.582400000E2,5.743205922E1 +8.584770000E2,5.608834078E1 +8.587730000E2,5.917700537E1 +8.590950000E2,5.757076232E1 +8.593390000E2,5.680975976E1 +8.596110000E2,5.316092446E1 +8.598560000E2,5.634389465E1 +8.601130000E2,5.912558361E1 +8.603880000E2,5.827706684E1 +8.606370000E2,5.580056474E1 +8.609720000E2,5.622551838E1 +8.612190000E2,5.816090597E1 +8.614650000E2,5.710633258E1 +8.617260000E2,6.762679027E1 +8.619970000E2,6.050550643E1 +8.622480000E2,6.017289530E1 +8.624960000E2,5.884551198E1 +8.627510000E2,5.823958631E1 +8.630120000E2,5.747421536E1 +8.632920000E2,5.891926612E1 +8.635810000E2,5.962176090E1 +8.638680000E2,5.932606834E1 +8.642430000E2,6.035939553E1 +8.645920000E2,5.892740034E1 +8.649090000E2,6.158225090E1 +8.651650000E2,5.941856931E1 +8.654560000E2,5.517726055E1 +8.656900000E2,5.573554393E1 +8.659400000E2,6.300977067E1 +8.662170000E2,6.346838855E1 +8.664760000E2,5.840482341E1 +8.667600000E2,5.656477763E1 +8.669980000E2,5.809371706E1 +8.672500000E2,5.957523428E1 +8.675890000E2,5.868790884E1 +8.678670000E2,6.643274765E1 +8.681530000E2,6.202304252E1 +8.684260000E2,6.167390940E1 +8.686760000E2,6.561664622E1 +8.689220000E2,6.221849135E1 +8.691620000E2,5.873701255E1 +8.694080000E2,5.721335717E1 +8.696600000E2,5.775578048E1 +8.699210000E2,6.139190630E1 +8.702060000E2,5.695582014E1 +8.705330000E2,5.285782467E1 +8.708800000E2,5.254436807E1 +8.711320000E2,5.941119733E1 +8.714840000E2,5.561687107E1 +8.717890000E2,5.226341013E1 +8.720340000E2,5.351737673E1 +8.723120000E2,5.581753669E1 +8.725450000E2,5.544476975E1 +8.727930000E2,5.112331517E1 +8.731050000E2,5.669948434E1 +8.733660000E2,5.553741274E1 +8.736450000E2,5.287392842E1 +8.738710000E2,5.342755356E1 +8.742030000E2,5.525376809E1 +8.745760000E2,5.790146612E1 +8.748470000E2,5.775550126E1 +8.750900000E2,5.828043309E1 +8.753860000E2,5.689517506E1 +8.756490000E2,5.836000549E1 +8.759170000E2,5.887049385E1 +8.761640000E2,5.731343570E1 +8.764240000E2,5.947081752E1 +8.766660000E2,5.735732777E1 +8.769150000E2,5.791222148E1 +8.771870000E2,5.217820200E1 +8.775110000E2,5.373516267E1 +8.777550000E2,5.639663701E1 +8.779960000E2,5.308435393E1 +8.782370000E2,5.327040257E1 +8.785510000E2,5.539866825E1 +8.788050000E2,5.451580533E1 +8.791100000E2,5.664888244E1 +8.793670000E2,5.439058144E1 +8.796110000E2,6.546629591E1 +8.799090000E2,6.080313073E1 +8.801560000E2,6.023654065E1 +8.804070000E2,5.547022044E1 +8.807450000E2,5.933402552E1 +8.809880000E2,6.073235462E1 +8.812850000E2,5.811897337E1 +8.815210000E2,5.670873426E1 +8.818240000E2,6.239450766E1 +8.821160000E2,6.033779387E1 +8.823610000E2,5.921328684E1 +8.826600000E2,5.808215882E1 +8.828910000E2,5.927124720E1 +8.831280000E2,5.254346564E1 +8.834120000E2,5.755316817E1 +8.837180000E2,5.815703318E1 +8.840150000E2,5.925974643E1 +8.842610000E2,5.406291788E1 +8.845520000E2,5.892672719E1 +8.847970000E2,6.343231596E1 +8.850390000E2,6.045689612E1 +8.853340000E2,5.903303339E1 +8.855810000E2,5.897514906E1 +8.858230000E2,5.682843230E1 +8.860690000E2,4.647265993E1 +8.863400000E2,5.617216143E1 +8.865730000E2,5.412892937E1 +8.869100000E2,6.210166513E1 +8.872070000E2,6.369099543E1 +8.874540000E2,6.052073025E1 +8.877480000E2,6.125108403E1 +8.879990000E2,6.087163347E1 +8.882550000E2,6.365510666E1 +8.885320000E2,5.341778352E1 +8.887600000E2,5.238943476E1 +8.890050000E2,6.378561240E1 +8.892460000E2,6.182956815E1 +8.895070000E2,6.027537659E1 +8.897770000E2,5.747996426E1 +8.901220000E2,5.606477689E1 +8.903620000E2,5.816493441E1 +8.907030000E2,5.740436721E1 +8.909540000E2,5.812990427E1 +8.912060000E2,5.757163286E1 +8.914520000E2,5.669306215E1 +8.917150000E2,5.593698617E1 +8.919580000E2,5.867011196E1 +8.922060000E2,6.001129970E1 +8.924480000E2,6.247831114E1 +8.927080000E2,5.501506807E1 +8.929550000E2,5.918039480E1 +8.932790000E2,5.750337148E1 +8.935260000E2,5.382626014E1 +8.937850000E2,5.632583646E1 +8.940370000E2,5.552393419E1 +8.943380000E2,5.417609473E1 +8.946050000E2,5.314873345E1 +8.948570000E2,5.537690953E1 +8.951790000E2,6.168371256E1 +8.954540000E2,6.142331687E1 +8.957690000E2,5.914263764E1 +8.960690000E2,6.039127428E1 +8.963670000E2,5.303465172E1 +8.966720000E2,5.819495208E1 +8.969200000E2,5.956457754E1 +8.972240000E2,5.554166388E1 +8.974940000E2,5.700583380E1 +8.978160000E2,5.525596264E1 +8.981210000E2,5.878997726E1 +8.983720000E2,5.661289659E1 +8.986510000E2,6.039909322E1 +8.988730000E2,5.569487247E1 +8.991240000E2,5.857026750E1 +8.993800000E2,6.116905404E1 +8.996580000E2,6.331625006E1 +8.998890000E2,5.612470465E1 +9.001440000E2,5.098243988E1 +9.004020000E2,5.779474181E1 +9.006650000E2,5.597754805E1 +9.009440000E2,5.706395638E1 +9.012380000E2,5.989184595E1 +9.015000000E2,5.905145002E1 +9.017620000E2,5.913397617E1 +9.020230000E2,5.831976398E1 +9.022900000E2,5.400731512E1 +9.025900000E2,6.547285797E1 +9.029050000E2,6.534571775E1 +9.032100000E2,5.428834230E1 +9.034580000E2,4.919896084E1 +9.037180000E2,5.326934205E1 +9.039740000E2,5.135684539E1 +9.042700000E2,5.784030554E1 +9.045180000E2,5.789711892E1 +9.048150000E2,5.501985460E1 +9.050680000E2,5.394185103E1 +9.053920000E2,5.504541187E1 +9.056620000E2,5.574384904E1 +9.059260000E2,5.198297704E1 +9.062920000E2,5.507423148E1 +9.065460000E2,5.073979477E1 +9.068090000E2,5.409355601E1 +9.071500000E2,5.842003605E1 +9.074380000E2,6.323761852E1 +9.076890000E2,5.475142925E1 +9.079510000E2,5.285089191E1 +9.082580000E2,6.228883476E1 +9.085110000E2,6.229139223E1 +9.087590000E2,5.849936549E1 +9.090220000E2,6.382664868E1 +9.092560000E2,5.234586511E1 +9.095720000E2,5.506613760E1 +9.098700000E2,5.883918884E1 +9.101180000E2,5.722745073E1 +9.103980000E2,6.006905181E1 +9.106670000E2,6.333821195E1 +9.109390000E2,5.997503412E1 +9.111770000E2,5.691091005E1 +9.114250000E2,5.629684565E1 +9.117070000E2,5.944947286E1 +9.119370000E2,5.757115704E1 +9.122030000E2,5.617546709E1 +9.125090000E2,5.506166951E1 +9.128480000E2,5.345826069E1 +9.131070000E2,5.586702127E1 +9.133900000E2,6.075354367E1 +9.137040000E2,5.668960998E1 +9.139920000E2,5.584388878E1 +9.142800000E2,5.668519299E1 +9.145740000E2,5.400550993E1 +9.148220000E2,5.668991412E1 +9.150670000E2,5.455006531E1 +9.153720000E2,5.750041942E1 +9.156590000E2,5.756327349E1 +9.159630000E2,5.822694927E1 +9.162110000E2,5.764545771E1 +9.164660000E2,5.716015909E1 +9.167560000E2,5.136001811E1 +9.170200000E2,4.706951064E1 +9.172710000E2,4.999131008E1 +9.175180000E2,5.619976433E1 +9.178030000E2,5.463675948E1 +9.180580000E2,4.995546642E1 +9.183000000E2,5.328928391E1 +9.185570000E2,4.808104957E1 +9.188650000E2,5.411517612E1 +9.191080000E2,5.672946344E1 +9.194270000E2,5.737096863E1 +9.196850000E2,5.974051238E1 +9.199830000E2,5.656564726E1 +9.202340000E2,5.709524531E1 +9.204810000E2,5.408385116E1 +9.208240000E2,5.414410830E1 +9.210650000E2,5.638214177E1 +9.213330000E2,5.753313030E1 +9.216130000E2,5.354803656E1 +9.219120000E2,6.191736419E1 +9.221480000E2,5.734366551E1 +9.224580000E2,5.684475304E1 +9.228030000E2,6.045431811E1 +9.230950000E2,5.973057312E1 +9.233960000E2,5.537690593E1 +9.236620000E2,5.411771801E1 +9.239600000E2,5.513839001E1 +9.242140000E2,5.699753068E1 +9.244670000E2,6.643461088E1 +9.247300000E2,6.062391899E1 +9.250330000E2,5.798096332E1 +9.253240000E2,6.347140522E1 +9.255740000E2,6.166496817E1 +9.259250000E2,6.190058171E1 +9.261820000E2,6.329204590E1 +9.264380000E2,6.389135880E1 +9.267030000E2,5.917517639E1 +9.269480000E2,5.809772267E1 +9.272170000E2,5.733235238E1 +9.274780000E2,5.226841119E1 +9.277860000E2,5.876554483E1 +9.280720000E2,6.281089568E1 +9.283510000E2,5.368859448E1 +9.286400000E2,5.449014251E1 +9.289370000E2,5.589991313E1 +9.292390000E2,5.452044152E1 +9.294860000E2,5.574135623E1 +9.297800000E2,5.656551806E1 +9.300200000E2,5.368800996E1 +9.302990000E2,5.374372369E1 +9.305490000E2,5.520696346E1 +9.308500000E2,5.642038107E1 +9.311480000E2,5.958603376E1 +9.314510000E2,5.775531382E1 +9.316980000E2,5.561486787E1 +9.319610000E2,5.826734748E1 +9.322700000E2,5.604871965E1 +9.325550000E2,5.170668645E1 +9.328670000E2,5.089285684E1 +9.331190000E2,4.724853188E1 +9.333790000E2,4.756075237E1 +9.336260000E2,5.199039629E1 +9.338890000E2,4.980140945E1 +9.341620000E2,5.530081877E1 +9.344120000E2,5.549144740E1 +9.347250000E2,5.515929093E1 +9.349780000E2,5.399104933E1 +9.352760000E2,5.325801117E1 +9.356240000E2,5.040008457E1 +9.359420000E2,5.360316460E1 +9.361890000E2,5.191591881E1 +9.364390000E2,5.324554606E1 +9.366970000E2,5.654671572E1 +9.370100000E2,5.711795620E1 +9.372590000E2,5.478625541E1 +9.375950000E2,5.667621371E1 +9.378550000E2,5.463565976E1 +9.381050000E2,5.398825590E1 +9.383580000E2,5.436030102E1 +9.386390000E2,5.091983440E1 +9.389120000E2,5.286705124E1 +9.391550000E2,5.236775571E1 +9.394300000E2,5.738794921E1 +9.397170000E2,5.727939554E1 +9.399750000E2,6.319402051E1 +9.402560000E2,5.468250624E1 +9.405530000E2,5.641852830E1 +9.408670000E2,6.200700436E1 +9.411390000E2,6.163446308E1 +9.413860000E2,7.148312536E1 +9.416340000E2,6.050927243E1 +9.419040000E2,5.667078757E1 +9.421350000E2,5.749142651E1 +9.424700000E2,5.240604485E1 +9.427760000E2,5.466454134E1 +9.430280000E2,6.082141946E1 +9.433300000E2,6.003969647E1 +9.436110000E2,6.121195378E1 +9.438460000E2,5.625129518E1 +9.441420000E2,5.911131348E1 +9.443880000E2,5.468317436E1 +9.446840000E2,6.009033853E1 +9.449440000E2,5.906624737E1 +9.452490000E2,5.464875325E1 +9.455970000E2,5.384566268E1 +9.458510000E2,5.044039840E1 +9.461140000E2,5.035886237E1 +9.463820000E2,5.734112986E1 +9.466620000E2,5.229112628E1 +9.469690000E2,6.028523542E1 +9.472250000E2,5.837101422E1 +9.475000000E2,5.619491985E1 +9.477970000E2,5.364209552E1 +9.480560000E2,5.511055516E1 +9.483560000E2,5.308396885E1 +9.486650000E2,5.587440008E1 +9.490640000E2,5.273632850E1 +9.493730000E2,6.231816715E1 +9.496570000E2,6.253734875E1 +9.499030000E2,5.554720788E1 +9.501460000E2,5.631566079E1 +9.503970000E2,5.626896653E1 +9.506490000E2,5.691941114E1 +9.508990000E2,5.116659255E1 +9.511440000E2,4.922875084E1 +9.514130000E2,5.936693495E1 +9.517070000E2,5.638156112E1 +9.520200000E2,5.180629212E1 +9.523780000E2,4.998674108E1 +9.526570000E2,4.841587788E1 +9.529100000E2,5.028896526E1 +9.531650000E2,4.965921907E1 +9.534690000E2,4.493319669E1 +9.537260000E2,4.598612712E1 +9.539740000E2,5.276251951E1 +9.542810000E2,4.126037796E1 +9.545830000E2,4.737114191E1 +9.548330000E2,4.411553821E1 +9.550850000E2,4.440050708E1 +9.553840000E2,5.260541790E1 +9.556980000E2,5.273901651E1 +9.559710000E2,5.383409632E1 +9.562220000E2,5.239354977E1 +9.564980000E2,4.759742823E1 +9.568040000E2,5.239869448E1 +9.570530000E2,5.238241691E1 +9.573300000E2,5.227349879E1 +9.575630000E2,5.272394727E1 +9.578410000E2,5.414710772E1 +9.580970000E2,5.325895305E1 +9.583410000E2,5.577122645E1 +9.586370000E2,5.015645058E1 +9.590040000E2,5.173028231E1 +9.593040000E2,5.447959265E1 +9.595640000E2,5.484713415E1 +9.598110000E2,5.470137539E1 +9.601060000E2,5.878769788E1 +9.603740000E2,5.851189839E1 +9.606810000E2,5.400762096E1 +9.609290000E2,5.749049444E1 +9.611870000E2,5.241750519E1 +9.614480000E2,4.979747952E1 +9.616960000E2,5.096881110E1 +9.620030000E2,5.149804171E1 +9.623180000E2,5.481599911E1 +9.625540000E2,5.138365056E1 +9.628240000E2,5.235851031E1 +9.630470000E2,4.871540913E1 +9.632880000E2,5.651540461E1 +9.635860000E2,5.650278128E1 +9.638210000E2,5.704973755E1 +9.641160000E2,5.757712252E1 +9.643960000E2,5.881159691E1 +9.646600000E2,5.355579494E1 +9.649750000E2,5.539751700E1 +9.652910000E2,4.797714339E1 +9.655520000E2,5.082548637E1 +9.658080000E2,5.579830605E1 +9.660780000E2,5.554406278E1 +9.663250000E2,5.354814316E1 +9.665660000E2,5.463107171E1 +9.668090000E2,5.368692433E1 +9.671300000E2,5.364867335E1 +9.674540000E2,5.468973775E1 +9.677060000E2,5.815904844E1 +9.680020000E2,5.598522308E1 +9.682480000E2,5.541083624E1 +9.685850000E2,5.512396132E1 +9.688400000E2,5.530796688E1 +9.691210000E2,5.433954611E1 +9.693810000E2,5.507440645E1 +9.696820000E2,5.086817906E1 +9.699140000E2,5.696191489E1 +9.701640000E2,5.845256581E1 +9.704420000E2,5.620226260E1 +9.706770000E2,5.629047170E1 +9.709750000E2,5.811655252E1 +9.712290000E2,5.703185419E1 +9.714900000E2,5.716734774E1 +9.718450000E2,5.493596869E1 +9.720910000E2,5.909437017E1 +9.723380000E2,5.710675060E1 +9.725910000E2,5.780279559E1 +9.728920000E2,5.860060144E1 +9.731360000E2,6.078900999E1 +9.734260000E2,5.852116194E1 +9.736640000E2,5.905899453E1 +9.739130000E2,5.636299630E1 +9.742090000E2,6.289355999E1 +9.744870000E2,6.167909115E1 +9.747290000E2,6.098057792E1 +9.750690000E2,5.906667343E1 +9.753320000E2,6.018572501E1 +9.756150000E2,5.718512970E1 +9.759100000E2,5.146063018E1 +9.761570000E2,5.733244632E1 +9.764050000E2,5.368365894E1 +9.766600000E2,5.486016267E1 +9.769150000E2,5.908582599E1 +9.771910000E2,5.733773036E1 +9.774400000E2,5.566361416E1 +9.777680000E2,5.819125256E1 +9.781220000E2,5.947694304E1 +9.783640000E2,6.140057637E1 +9.786330000E2,5.721849738E1 +9.788550000E2,5.617504209E1 +9.791010000E2,5.660293849E1 +9.793960000E2,5.174001770E1 +9.796880000E2,5.083474014E1 +9.799290000E2,5.184104339E1 +9.801850000E2,5.025385313E1 +9.804850000E2,5.286605500E1 +9.807270000E2,5.586849562E1 +9.809750000E2,5.666036754E1 +9.812950000E2,5.248500918E1 +9.815810000E2,5.416072977E1 +9.818360000E2,5.799655965E1 +9.821300000E2,5.801841935E1 +9.823770000E2,5.977514968E1 +9.826270000E2,5.676871456E1 +9.828850000E2,5.104814549E1 +9.831730000E2,5.834620153E1 +9.834010000E2,5.660640582E1 +9.836620000E2,5.686451748E1 +9.839750000E2,5.998440952E1 +9.842240000E2,5.556687478E1 +9.846000000E2,5.811069315E1 +9.848430000E2,5.843499893E1 +9.851250000E2,5.180956247E1 +9.853860000E2,5.206236639E1 +9.856480000E2,5.641840701E1 +9.859110000E2,5.518588565E1 +9.861920000E2,5.697237679E1 +9.864550000E2,5.411246614E1 +9.867510000E2,5.214533821E1 +9.869880000E2,5.642389575E1 +9.872440000E2,6.015294933E1 +9.875470000E2,5.809991100E1 +9.879150000E2,6.420044247E1 +9.881610000E2,6.042656173E1 +9.884280000E2,5.938959873E1 +9.886840000E2,6.059888233E1 +9.889870000E2,5.282749720E1 +9.892620000E2,5.638110380E1 +9.895440000E2,4.900409689E1 +9.897740000E2,4.971849802E1 +9.900320000E2,5.061428463E1 +9.903370000E2,5.829922071E1 +9.905860000E2,5.812083213E1 +9.908910000E2,5.500587720E1 +9.911860000E2,5.677481104E1 +9.914380000E2,5.502691141E1 +9.916830000E2,5.294500154E1 +9.919560000E2,5.700444986E1 +9.921770000E2,5.448756275E1 +9.924220000E2,5.785741234E1 +9.927280000E2,5.702180374E1 +9.929670000E2,6.013415875E1 +9.932080000E2,5.533496795E1 +9.934640000E2,5.695301526E1 +9.937440000E2,5.436173732E1 +9.940620000E2,5.092257074E1 +9.944480000E2,4.973000793E1 +9.946940000E2,4.871235512E1 +9.949410000E2,5.171412848E1 +9.951960000E2,5.643245777E1 +9.954520000E2,5.548819002E1 +9.957530000E2,5.694822585E1 +9.960600000E2,5.668072577E1 +9.963110000E2,5.547400320E1 +9.966010000E2,5.667137699E1 +9.968430000E2,5.866196066E1 +9.971120000E2,5.641527163E1 +9.974300000E2,5.505243365E1 +9.977140000E2,5.491253296E1 +9.979940000E2,5.642986287E1 +9.982400000E2,5.111113898E1 +9.985270000E2,5.228293633E1 +9.987770000E2,5.380023266E1 +9.990760000E2,5.259255492E1 +9.993610000E2,5.359948032E1 +9.996550000E2,5.817439497E1 +9.999080000E2,5.712087238E1 +1.000199000E3,6.016800470E1 +1.000435000E3,5.758076017E1 +1.000772000E3,5.328951429E1 +1.001047000E3,5.373102399E1 +1.001303000E3,5.905317642E1 +1.001622000E3,5.478240688E1 +1.001877000E3,5.648896451E1 +1.002173000E3,5.587033976E1 +1.002422000E3,5.995513955E1 +1.002724000E3,6.295760047E1 +1.003003000E3,5.978713154E1 +1.003261000E3,5.669754444E1 +1.003545000E3,5.577942906E1 +1.003827000E3,6.186873273E1 +1.004183000E3,6.253868639E1 +1.004493000E3,5.777226132E1 +1.004770000E3,6.482227668E1 +1.005072000E3,5.923751414E1 +1.005323000E3,5.644465637E1 +1.005601000E3,6.074750234E1 +1.005832000E3,5.683683327E1 +1.006147000E3,5.957418887E1 +1.006418000E3,6.134946851E1 +1.006713000E3,5.641852300E1 +1.006952000E3,5.637674327E1 +1.007310000E3,5.484290206E1 +1.007589000E3,6.426865013E1 +1.007886000E3,5.712036033E1 +1.008127000E3,5.768385080E1 +1.008427000E3,5.812466970E1 +1.008666000E3,6.112344783E1 +1.008973000E3,5.606588478E1 +1.009269000E3,5.809328667E1 +1.009507000E3,5.371315435E1 +1.009763000E3,5.527533595E1 +1.010003000E3,5.390597114E1 +1.010379000E3,5.652035402E1 +1.010658000E3,5.490058638E1 +1.010920000E3,5.927019017E1 +1.011197000E3,5.293113048E1 +1.011458000E3,5.179006266E1 +1.011718000E3,5.366462930E1 +1.011979000E3,5.569421827E1 +1.012229000E3,5.341899104E1 +1.012477000E3,4.863208748E1 +1.012772000E3,6.037154816E1 +1.013036000E3,5.430849576E1 +1.013284000E3,5.735938261E1 +1.013671000E3,5.526482118E1 +1.013957000E3,5.731780297E1 +1.014225000E3,5.205368153E1 +1.014486000E3,5.548863756E1 +1.014733000E3,5.265038263E1 +1.015033000E3,5.986876322E1 +1.015314000E3,5.130643680E1 +1.015590000E3,6.086878634E1 +1.015830000E3,5.798526739E1 +1.016137000E3,6.825745236E1 +1.016387000E3,5.828900876E1 +1.016655000E3,5.873097643E1 +1.017001000E3,6.454090665E1 +1.017329000E3,6.385512775E1 +1.017637000E3,6.691081911E1 +1.017938000E3,6.580217665E1 +1.018229000E3,6.485489311E1 +1.018470000E3,6.387101962E1 +1.018706000E3,6.616835921E1 +1.018997000E3,5.951737331E1 +1.019235000E3,5.386458503E1 +1.019536000E3,5.756977765E1 +1.019801000E3,5.811747841E1 +1.020064000E3,5.930001089E1 +1.020406000E3,5.469664450E1 +1.020673000E3,5.181220980E1 +1.020925000E3,5.483858346E1 +1.021232000E3,5.716842569E1 +1.021527000E3,5.738254897E1 +1.021762000E3,5.628034518E1 +1.022007000E3,5.850971228E1 +1.022258000E3,5.329919175E1 +1.022556000E3,5.482637446E1 +1.022813000E3,5.690503448E1 +1.023071000E3,5.317501594E1 +1.023336000E3,4.870888301E1 +1.023687000E3,6.132281620E1 +1.023965000E3,6.262505101E1 +1.024220000E3,6.180229149E1 +1.024496000E3,6.130993335E1 +1.024741000E3,6.231376381E1 +1.025040000E3,6.164360059E1 +1.025279000E3,5.910065798E1 +1.025533000E3,5.622173801E1 +1.025821000E3,5.290311975E1 +1.026116000E3,5.028293308E1 +1.026403000E3,5.581740437E1 +1.026664000E3,5.988277804E1 +1.027011000E3,5.730548262E1 +1.027305000E3,5.417769573E1 +1.027578000E3,5.250932185E1 +1.027819000E3,5.139919708E1 +1.028128000E3,5.061852216E1 +1.028380000E3,4.722292138E1 +1.028683000E3,5.983070917E1 +1.028956000E3,6.045269830E1 +1.029182000E3,5.777292957E1 +1.029431000E3,5.497807442E1 +1.029734000E3,5.533889528E1 +1.030063000E3,5.373558580E1 +1.030323000E3,5.600729212E1 +1.030620000E3,5.467159629E1 +1.030863000E3,5.246400101E1 +1.031110000E3,5.468037288E1 +1.031367000E3,5.850364516E1 +1.031646000E3,5.490958739E1 +1.031911000E3,5.866929845E1 +1.032210000E3,5.708288591E1 +1.032475000E3,5.498129629E1 +1.032736000E3,5.670272599E1 +1.032986000E3,5.317143219E1 +1.033315000E3,5.758413128E1 +1.033557000E3,6.361635596E1 +1.033846000E3,5.513973379E1 +1.034093000E3,5.215484095E1 +1.034399000E3,5.465926438E1 +1.034684000E3,5.588902955E1 +1.034978000E3,5.387672604E1 +1.035280000E3,5.595327755E1 +1.035543000E3,5.621513504E1 +1.035825000E3,5.991854954E1 +1.036079000E3,5.864640009E1 +1.036322000E3,6.072021936E1 +1.036666000E3,5.462749592E1 +1.036971000E3,5.329083651E1 +1.037264000E3,5.401214501E1 +1.037542000E3,5.242806591E1 +1.037843000E3,5.573267887E1 +1.038091000E3,5.224254554E1 +1.038380000E3,5.453929206E1 +1.038635000E3,5.371826859E1 +1.038891000E3,4.369246898E1 +1.039145000E3,4.547521933E1 +1.039418000E3,4.204639660E1 +1.039750000E3,4.426760298E1 +1.039990000E3,4.955659514E1 +1.040294000E3,4.960859899E1 +1.040560000E3,4.841380220E1 +1.040808000E3,4.914533708E1 +1.041104000E3,4.650609937E1 +1.041370000E3,4.849101938E1 +1.041622000E3,5.065930763E1 +1.041920000E3,4.744161935E1 +1.042161000E3,4.448519483E1 +1.042478000E3,4.726532690E1 +1.042725000E3,4.667923132E1 +1.043042000E3,4.704822757E1 +1.043307000E3,3.950691106E1 +1.043560000E3,5.249697508E1 +1.043835000E3,4.753687679E1 +1.044091000E3,4.843049138E1 +1.044350000E3,5.394643708E1 +1.044644000E3,4.769079035E1 +1.044887000E3,5.111291504E1 +1.045194000E3,5.247298633E1 +1.045445000E3,4.904344971E1 +1.045693000E3,4.405437847E1 +1.045988000E3,4.750888237E1 +1.046301000E3,4.305046000E1 +1.046518000E3,4.630901796E1 +1.046813000E3,4.756289225E1 +1.047053000E3,4.661089273E1 +1.047331000E3,6.143859736E1 +1.047566000E3,5.702483033E1 +1.047860000E3,5.015015196E1 +1.048098000E3,5.180675157E1 +1.048397000E3,4.645218330E1 +1.048640000E3,4.317726503E1 +1.048918000E3,4.962602549E1 +1.049159000E3,4.922447391E1 +1.049523000E3,4.310015818E1 +1.049767000E3,5.584844461E1 +1.050011000E3,5.550466055E1 +1.050294000E3,5.076679182E1 +1.050523000E3,4.777565498E1 +1.050776000E3,5.078379664E1 +1.051031000E3,4.412618688E1 +1.051298000E3,3.933148532E1 +1.051551000E3,4.240994962E1 +1.051799000E3,3.715036539E1 +1.052054000E3,4.541823437E1 +1.052312000E3,3.252240989E1 +1.052661000E3,4.298387800E1 +1.052922000E3,4.065675211E1 +1.053171000E3,3.851226965E1 +1.053417000E3,3.833414863E1 +1.053702000E3,3.734543870E1 +1.053967000E3,4.406198141E1 +1.054269000E3,3.397952572E1 +1.054518000E3,3.018425986E1 +1.054795000E3,2.659023927E1 +1.055055000E3,3.230579484E1 +1.055319000E3,4.027650377E1 +1.055588000E3,3.256611719E1 +1.055936000E3,3.203904394E1 +1.056189000E3,3.024692018E1 +1.056469000E3,4.044611203E1 +1.056698000E3,3.245705712E1 +1.056956000E3,5.087039919E1 +1.057201000E3,5.278557071E1 +1.057507000E3,6.996122129E1 +1.057766000E3,6.951439283E1 +1.058027000E3,6.731609209E1 +1.058291000E3,5.787293958E1 +1.058571000E3,5.774874245E1 +1.058801000E3,5.291748766E1 +1.059132000E3,4.352220528E1 +1.059391000E3,5.556254729E1 +1.059665000E3,5.339220405E1 +1.059951000E3,5.593145301E1 +1.060235000E3,5.299996372E1 +1.060492000E3,4.882317894E1 +1.060733000E3,3.790707311E1 +1.060975000E3,3.470192076E1 +1.061278000E3,4.481563830E1 +1.061519000E3,4.823008935E1 +1.061816000E3,4.719850269E1 +1.062076000E3,4.706381680E1 +1.062331000E3,4.530378435E1 +1.062576000E3,3.456809562E1 +1.062882000E3,3.742453964E1 +1.063154000E3,3.905594906E1 +1.063397000E3,3.672857244E1 +1.063694000E3,2.941779164E1 +1.063926000E3,2.995931983E1 +1.064168000E3,3.455311118E1 +1.064461000E3,3.254662869E1 +1.064708000E3,3.652583843E1 +1.065001000E3,5.229424666E1 +1.065352000E3,5.178814165E1 +1.065606000E3,4.798098259E1 +1.065854000E3,3.636652329E1 +1.066121000E3,4.558252535E1 +1.066366000E3,3.902840121E1 +1.066629000E3,3.106435508E1 +1.066887000E3,2.541330464E1 +1.067179000E3,3.474902335E1 +1.067449000E3,4.492275189E1 +1.067698000E3,3.860211372E1 +1.067955000E3,4.332670525E1 +1.068251000E3,5.147667691E1 +1.068546000E3,5.152069997E1 +1.068797000E3,4.540650098E1 +1.069105000E3,4.486446450E1 +1.069378000E3,4.196481867E1 +1.069632000E3,4.863200791E1 +1.069908000E3,3.878967071E1 +1.070151000E3,3.630888030E1 +1.070413000E3,2.964429880E1 +1.070682000E3,3.354707636E1 +1.070956000E3,4.008490969E1 +1.071248000E3,3.576577653E1 +1.071553000E3,4.349754488E1 +1.071886000E3,3.824859907E1 +1.072130000E3,3.455877689E1 +1.072406000E3,3.622999465E1 +1.072717000E3,3.637608237E1 +1.072984000E3,3.645219519E1 +1.073255000E3,4.353729148E1 +1.073603000E3,4.287473251E1 +1.073856000E3,4.842203791E1 +1.074097000E3,4.484407311E1 +1.074356000E3,4.397007110E1 +1.074628000E3,4.695884235E1 +1.074931000E3,4.627189963E1 +1.075264000E3,4.689571524E1 +1.075614000E3,5.203841291E1 +1.075923000E3,4.610184941E1 +1.076163000E3,4.404432471E1 +1.076475000E3,4.923215011E1 +1.076765000E3,4.466142180E1 +1.077062000E3,4.987282715E1 +1.077375000E3,4.461839454E1 +1.077687000E3,5.085403766E1 +1.077991000E3,4.674512295E1 +1.078232000E3,5.167180279E1 +1.078544000E3,4.780582457E1 +1.078939000E3,4.593914406E1 +1.079187000E3,4.061652220E1 +1.079434000E3,4.347669045E1 +1.079712000E3,4.326983820E1 +1.079966000E3,3.511950991E1 +1.080260000E3,4.755279745E1 +1.080506000E3,4.756343862E1 +1.080756000E3,4.779732167E1 +1.081049000E3,4.991962747E1 +1.081293000E3,5.213887128E1 +1.081586000E3,5.357624469E1 +1.081916000E3,5.141456645E1 +1.082165000E3,5.036532462E1 +1.082460000E3,4.962769973E1 +1.082696000E3,4.506404490E1 +1.082988000E3,4.537987312E1 +1.083220000E3,4.738457007E1 +1.083529000E3,4.698711193E1 +1.083769000E3,4.571430081E1 +1.084079000E3,4.980908007E1 +1.084324000E3,5.082282040E1 +1.084590000E3,5.406004268E1 +1.084876000E3,5.436375886E1 +1.085258000E3,5.361506257E1 +1.085509000E3,5.202937925E1 +1.085815000E3,5.324976969E1 +1.086057000E3,5.371445731E1 +1.086301000E3,5.282162917E1 +1.086550000E3,5.221281857E1 +1.086802000E3,5.263727375E1 +1.087126000E3,5.703022139E1 +1.087384000E3,5.519432869E1 +1.087646000E3,5.426647490E1 +1.087939000E3,5.407342864E1 +1.088175000E3,5.235924404E1 +1.088520000E3,4.681002832E1 +1.088812000E3,4.891237586E1 +1.089076000E3,4.699020733E1 +1.089350000E3,4.902871382E1 +1.089591000E3,5.078145117E1 +1.089837000E3,5.041791921E1 +1.090133000E3,4.603650794E1 +1.090430000E3,4.871755485E1 +1.090660000E3,5.111421073E1 +1.090911000E3,4.581894631E1 +1.091248000E3,4.988189917E1 +1.091630000E3,5.341365920E1 +1.091902000E3,4.962858025E1 +1.092183000E3,4.315344358E1 +1.092440000E3,4.664431132E1 +1.092683000E3,4.616459192E1 +1.092923000E3,4.765071496E1 +1.093171000E3,4.163360687E1 +1.093473000E3,4.537777608E1 +1.093714000E3,4.783603025E1 +1.094007000E3,4.845414260E1 +1.094261000E3,4.799870549E1 +1.094499000E3,4.651309815E1 +1.094792000E3,5.003648984E1 +1.095123000E3,5.202534254E1 +1.095372000E3,5.709400077E1 +1.095625000E3,5.694079106E1 +1.095896000E3,5.715452089E1 +1.096196000E3,5.523378380E1 +1.096438000E3,5.375558627E1 +1.096737000E3,5.665208041E1 +1.096991000E3,5.314654737E1 +1.097292000E3,5.142447849E1 +1.097557000E3,5.330628285E1 +1.097827000E3,5.512040694E1 +1.098167000E3,5.399583122E1 +1.098472000E3,5.540663813E1 +1.098720000E3,5.200546986E1 +1.098960000E3,4.676140326E1 +1.099243000E3,4.798657093E1 +1.099544000E3,4.841724285E1 +1.099804000E3,5.642371618E1 +1.100109000E3,5.409000726E1 +1.100381000E3,5.348646719E1 +1.100630000E3,5.346537578E1 +1.100927000E3,5.422782845E1 +1.101164000E3,5.395323822E1 +1.101495000E3,5.383967560E1 +1.101763000E3,5.667828538E1 +1.102044000E3,4.764690784E1 +1.102307000E3,5.353530254E1 +1.102613000E3,5.568430762E1 +1.102906000E3,5.431580275E1 +1.103147000E3,5.193331555E1 +1.103441000E3,5.040945762E1 +1.103677000E3,5.333005838E1 +1.103968000E3,4.947534745E1 +1.104272000E3,5.306270968E1 +1.104564000E3,5.537230515E1 +1.104799000E3,4.876041085E1 +1.105069000E3,5.109409535E1 +1.105330000E3,5.087734214E1 +1.105587000E3,5.225642483E1 +1.105838000E3,5.176680091E1 +1.106135000E3,5.535939212E1 +1.106380000E3,5.666892185E1 +1.106622000E3,5.658846562E1 +1.106895000E3,5.577897889E1 +1.107150000E3,5.157178717E1 +1.107431000E3,5.284488409E1 +1.107756000E3,5.415639955E1 +1.108002000E3,5.465643057E1 +1.108313000E3,4.654328988E1 +1.108563000E3,5.038890380E1 +1.108811000E3,4.602751738E1 +1.109073000E3,4.801243396E1 +1.109375000E3,4.782472616E1 +1.109667000E3,4.666447221E1 +1.109943000E3,5.156469126E1 +1.110192000E3,4.949682888E1 +1.110448000E3,4.919673339E1 +1.110752000E3,4.862521519E1 +1.111045000E3,5.122379655E1 +1.111295000E3,4.813892217E1 +1.111515000E3,4.901611396E1 +1.111761000E3,4.905664967E1 +1.112005000E3,4.647618514E1 +1.112265000E3,4.730688076E1 +1.112537000E3,5.039121351E1 +1.112793000E3,4.985611957E1 +1.113101000E3,5.474563863E1 +1.113387000E3,5.028870882E1 +1.113678000E3,5.073784750E1 +1.113952000E3,4.995138555E1 +1.114291000E3,4.790039203E1 +1.114554000E3,4.764335594E1 +1.114849000E3,5.057104591E1 +1.115096000E3,5.107398730E1 +1.115401000E3,4.800391913E1 +1.115672000E3,4.553282874E1 +1.115895000E3,4.569523337E1 +1.116194000E3,4.480844215E1 +1.116425000E3,4.772339962E1 +1.116664000E3,5.255452638E1 +1.116906000E3,4.927433934E1 +1.117202000E3,4.871369865E1 +1.117530000E3,4.928110420E1 +1.117840000E3,5.705383563E1 +1.118146000E3,4.880674861E1 +1.118418000E3,5.038180726E1 +1.118687000E3,5.145980404E1 +1.118950000E3,5.338008269E1 +1.119227000E3,5.227728425E1 +1.119468000E3,5.450689216E1 +1.119736000E3,5.844246451E1 +1.120049000E3,5.459398611E1 +1.120351000E3,5.526423567E1 +1.120605000E3,5.228963309E1 +1.120918000E3,5.598288902E1 +1.121182000E3,5.280889802E1 +1.121489000E3,4.974717420E1 +1.121729000E3,5.137523152E1 +1.121978000E3,5.052356297E1 +1.122235000E3,5.240368249E1 +1.122503000E3,4.826380791E1 +1.122775000E3,5.095403791E1 +1.123036000E3,5.799909934E1 +1.123291000E3,4.889512711E1 +1.123587000E3,5.622808486E1 +1.123874000E3,5.230369090E1 +1.124235000E3,5.081102316E1 +1.124544000E3,5.628773803E1 +1.124826000E3,5.810547372E1 +1.125153000E3,5.508029719E1 +1.125432000E3,5.576573503E1 +1.125722000E3,5.346022180E1 +1.125978000E3,5.279748306E1 +1.126234000E3,5.604802053E1 +1.126502000E3,5.937326657E1 +1.126804000E3,5.703447215E1 +1.127047000E3,5.520354594E1 +1.127314000E3,5.551787326E1 +1.127554000E3,5.740837773E1 +1.127843000E3,5.663015330E1 +1.128135000E3,5.649615150E1 +1.128380000E3,5.731556257E1 +1.128677000E3,6.079986861E1 +1.128914000E3,5.820128856E1 +1.129207000E3,6.091746513E1 +1.129442000E3,6.126941240E1 +1.129745000E3,4.541170906E1 +1.129980000E3,4.341485096E1 +1.130277000E3,4.833777967E1 +1.130573000E3,4.472710223E1 +1.130815000E3,5.059675199E1 +1.131062000E3,3.863826940E1 +1.131353000E3,4.925455740E1 +1.131589000E3,4.859989956E1 +1.131881000E3,5.113067908E1 +1.132117000E3,5.054542106E1 +1.132418000E3,4.827479925E1 +1.132654000E3,4.610884488E1 +1.132948000E3,4.879734536E1 +1.133241000E3,5.074680390E1 +1.133563000E3,5.119298220E1 +1.133864000E3,4.861265792E1 +1.134166000E3,5.001512903E1 +1.134452000E3,5.059053464E1 +1.134716000E3,4.999839479E1 +1.134967000E3,4.960069086E1 +1.135222000E3,5.320256888E1 +1.135494000E3,5.604818163E1 +1.135742000E3,5.625768045E1 +1.135999000E3,5.261645024E1 +1.136244000E3,5.105081932E1 +1.136501000E3,5.616444939E1 +1.136847000E3,5.624064264E1 +1.137105000E3,5.654097446E1 +1.137391000E3,5.807884104E1 +1.137717000E3,5.436169891E1 +1.137970000E3,5.763959225E1 +1.138239000E3,5.465216875E1 +1.138486000E3,5.094509116E1 +1.138731000E3,5.425415233E1 +1.138977000E3,5.143709697E1 +1.139259000E3,5.032545705E1 +1.139527000E3,5.906031130E1 +1.139800000E3,5.308709054E1 +1.140168000E3,5.407062541E1 +1.140423000E3,5.585261351E1 +1.140694000E3,5.463535881E1 +1.140949000E3,5.407603664E1 +1.141230000E3,5.495767686E1 +1.141512000E3,5.639433741E1 +1.141818000E3,5.555715330E1 +1.142072000E3,5.729232944E1 +1.142323000E3,5.553013253E1 +1.142578000E3,5.648251207E1 +1.142844000E3,5.786931075E1 +1.143143000E3,6.007493220E1 +1.143523000E3,5.752076543E1 +1.143836000E3,5.573324560E1 +1.144090000E3,5.641950784E1 +1.144396000E3,5.532270625E1 +1.144644000E3,5.561239732E1 +1.144940000E3,5.206707456E1 +1.145212000E3,5.092140902E1 +1.145511000E3,5.452891649E1 +1.145770000E3,5.331137977E1 +1.146042000E3,5.366568195E1 +1.146338000E3,5.227174013E1 +1.146650000E3,5.423955559E1 +1.146934000E3,5.781916580E1 +1.147218000E3,5.532962824E1 +1.147467000E3,5.502661676E1 +1.147687000E3,5.823979674E1 +1.147961000E3,5.538066560E1 +1.148276000E3,5.423260060E1 +1.148528000E3,5.197461977E1 +1.148799000E3,5.154724487E1 +1.149057000E3,5.473685923E1 +1.149367000E3,5.647867848E1 +1.149660000E3,5.489455072E1 +1.150037000E3,6.072892064E1 +1.150335000E3,5.543869835E1 +1.150594000E3,5.667713742E1 +1.150870000E3,5.818755157E1 +1.151164000E3,5.210849760E1 +1.151411000E3,5.095671455E1 +1.151703000E3,5.254983272E1 +1.152002000E3,5.585064224E1 +1.152253000E3,5.739007574E1 +1.152582000E3,5.895179917E1 +1.152860000E3,5.461317681E1 +1.153122000E3,5.345759293E1 +1.153381000E3,5.267971619E1 +1.153684000E3,6.006602205E1 +1.153986000E3,5.573552061E1 +1.154286000E3,5.518963618E1 +1.154531000E3,5.342922095E1 +1.154792000E3,5.257536969E1 +1.155139000E3,4.887945516E1 +1.155435000E3,4.702411688E1 +1.155680000E3,4.867646616E1 +1.155978000E3,4.811861077E1 +1.156361000E3,4.915586406E1 +1.156670000E3,5.033026069E1 +1.156976000E3,5.393908378E1 +1.157274000E3,5.295128205E1 +1.157524000E3,5.249671789E1 +1.157816000E3,5.314344994E1 +1.158052000E3,5.237342933E1 +1.158353000E3,5.300284286E1 +1.158590000E3,5.170068449E1 +1.158867000E3,5.174146304E1 +1.159147000E3,4.929588783E1 +1.159411000E3,5.699090425E1 +1.159752000E3,5.266690351E1 +1.160068000E3,5.746767577E1 +1.160360000E3,5.375850846E1 +1.160640000E3,5.373794020E1 +1.160985000E3,5.304914530E1 +1.161280000E3,5.198754593E1 +1.161525000E3,5.019848207E1 +1.161766000E3,5.164623609E1 +1.162020000E3,5.363319210E1 +1.162324000E3,5.439011044E1 +1.162564000E3,5.304648945E1 +1.162816000E3,5.174573718E1 +1.163177000E3,4.505755779E1 +1.163462000E3,4.894753105E1 +1.163738000E3,5.064933943E1 +1.164013000E3,5.245879056E1 +1.164255000E3,5.017914517E1 +1.164568000E3,5.189205429E1 +1.164823000E3,5.038961444E1 +1.165052000E3,5.072118593E1 +1.165297000E3,4.831662547E1 +1.165552000E3,5.050204887E1 +1.165808000E3,5.308107982E1 +1.166062000E3,4.878509871E1 +1.166392000E3,5.002605106E1 +1.166654000E3,5.320265697E1 +1.166911000E3,4.403273534E1 +1.167180000E3,5.161386051E1 +1.167455000E3,4.986209571E1 +1.167692000E3,4.993305836E1 +1.167973000E3,5.173621365E1 +1.168216000E3,5.385559129E1 +1.168491000E3,5.543019156E1 +1.168757000E3,5.019966657E1 +1.169035000E3,5.569516326E1 +1.169296000E3,5.216419082E1 +1.169676000E3,5.398731996E1 +1.169933000E3,5.465625282E1 +1.170197000E3,5.451774184E1 +1.170449000E3,5.328129322E1 +1.170705000E3,5.452639907E1 +1.170963000E3,5.713735254E1 +1.171272000E3,5.551413923E1 +1.171528000E3,5.604966001E1 +1.171779000E3,5.340478404E1 +1.172038000E3,5.107817821E1 +1.172291000E3,5.218990306E1 +1.172602000E3,4.830451720E1 +1.172964000E3,5.276802164E1 +1.173245000E3,5.191204687E1 +1.173527000E3,5.337367972E1 +1.173838000E3,5.462664550E1 +1.174090000E3,5.304724513E1 +1.174379000E3,5.193251440E1 +1.174628000E3,5.283915893E1 +1.174936000E3,5.036641160E1 +1.175236000E3,4.890810708E1 +1.175487000E3,4.805298565E1 +1.175750000E3,5.067335741E1 +1.176019000E3,4.961207397E1 +1.176335000E3,4.820862314E1 +1.176634000E3,5.328684116E1 +1.176883000E3,5.122009001E1 +1.177165000E3,5.878687770E1 +1.177412000E3,5.487235950E1 +1.177709000E3,5.224569426E1 +1.178006000E3,5.403405997E1 +1.178246000E3,5.388661901E1 +1.178490000E3,5.237426881E1 +1.178734000E3,5.372043820E1 +1.179050000E3,5.471170909E1 +1.179387000E3,5.129350436E1 +1.179686000E3,4.660070824E1 +1.179916000E3,4.541361068E1 +1.180159000E3,4.365576113E1 +1.180466000E3,4.771103553E1 +1.180756000E3,4.863237791E1 +1.181008000E3,5.534959697E1 +1.181314000E3,5.376444060E1 +1.181609000E3,5.130885425E1 +1.181851000E3,5.256948786E1 +1.182151000E3,5.321964637E1 +1.182393000E3,5.074776981E1 +1.182622000E3,4.979941250E1 +1.182873000E3,5.445637667E1 +1.183116000E3,4.449721128E1 +1.183420000E3,5.086906199E1 +1.183676000E3,5.067998506E1 +1.183927000E3,5.352019181E1 +1.184219000E3,4.851971310E1 +1.184517000E3,5.123853013E1 +1.184764000E3,5.278221141E1 +1.185010000E3,5.126409245E1 +1.185297000E3,5.249182764E1 +1.185665000E3,5.346599478E1 +1.185972000E3,5.052250297E1 +1.186225000E3,5.389354916E1 +1.186534000E3,5.372737626E1 +1.186796000E3,5.415645782E1 +1.187048000E3,5.441424865E1 +1.187317000E3,5.470553815E1 +1.187622000E3,5.559990781E1 +1.187913000E3,5.619293356E1 +1.188186000E3,4.869472445E1 +1.188442000E3,5.069948923E1 +1.188718000E3,5.296813397E1 +1.189051000E3,5.015003063E1 +1.189308000E3,5.110938827E1 +1.189570000E3,5.250182053E1 +1.189815000E3,5.240850659E1 +1.190062000E3,5.446862868E1 +1.190368000E3,5.270463767E1 +1.190629000E3,5.117539458E1 +1.190931000E3,5.543767536E1 +1.191207000E3,5.348622922E1 +1.191505000E3,5.112152946E1 +1.191761000E3,4.905277341E1 +1.192068000E3,5.456405848E1 +1.192487000E3,5.016322677E1 +1.192732000E3,4.971711263E1 +1.192976000E3,5.396031961E1 +1.193258000E3,5.018645567E1 +1.193531000E3,4.895586707E1 +1.193790000E3,5.442023654E1 +1.194055000E3,5.160697029E1 +1.194326000E3,4.822365107E1 +1.194605000E3,5.396633777E1 +1.194903000E3,5.031021734E1 +1.195141000E3,5.278015326E1 +1.195431000E3,4.949576105E1 +1.195801000E3,5.244682833E1 +1.196076000E3,5.508575727E1 +1.196371000E3,5.161802747E1 +1.196603000E3,5.716896987E1 +1.196858000E3,5.210002974E1 +1.197207000E3,5.483594793E1 +1.197503000E3,5.204828926E1 +1.197774000E3,5.339169315E1 +1.198054000E3,4.934781945E1 +1.198312000E3,5.918797425E1 +1.198559000E3,5.025254784E1 +1.198808000E3,5.317746302E1 +1.199152000E3,5.656715516E1 +1.199464000E3,5.448426177E1 +1.199717000E3,5.419526565E1 +1.199961000E3,5.304156540E1 +1.200219000E3,4.961182292E1 +1.200480000E3,5.259766625E1 +1.200730000E3,5.295115767E1 +1.201029000E3,5.365389524E1 +1.201288000E3,5.465027972E1 +1.201538000E3,5.131261505E1 +1.201807000E3,5.767453751E1 +1.202112000E3,5.316006082E1 +1.202485000E3,5.263333972E1 +1.202739000E3,4.966297173E1 +1.203041000E3,5.282706501E1 +1.203300000E3,4.950274237E1 +1.203539000E3,4.377779375E1 +1.203832000E3,5.274682795E1 +1.204077000E3,5.348405653E1 +1.204320000E3,5.647600154E1 +1.204615000E3,4.835002395E1 +1.204854000E3,4.440243109E1 +1.205149000E3,4.673035253E1 +1.205410000E3,4.901106802E1 +1.205666000E3,5.311033159E1 +1.205952000E3,5.020567211E1 +1.206248000E3,5.046889058E1 +1.206545000E3,6.150607502E1 +1.206779000E3,5.260331634E1 +1.207093000E3,5.183291791E1 +1.207367000E3,4.957331060E1 +1.207610000E3,5.139200370E1 +1.207857000E3,5.005726187E1 +1.208158000E3,4.979521937E1 +1.208398000E3,5.178137337E1 +1.208738000E3,4.632694184E1 +1.208994000E3,4.836915777E1 +1.209279000E3,4.869228435E1 +1.209528000E3,5.096507040E1 +1.209784000E3,4.718590489E1 +1.210053000E3,4.835967114E1 +1.210281000E3,4.725223201E1 +1.210542000E3,5.172958855E1 +1.210823000E3,5.546336112E1 +1.211051000E3,5.448218663E1 +1.211300000E3,5.371995163E1 +1.211551000E3,4.887559574E1 +1.211926000E3,4.975732945E1 +1.212205000E3,5.041543230E1 +1.212482000E3,4.863959509E1 +1.212730000E3,5.047232348E1 +1.212990000E3,4.824384094E1 +1.213232000E3,5.039377586E1 +1.213493000E3,4.517891187E1 +1.213814000E3,4.686032989E1 +1.214062000E3,4.852263494E1 +1.214337000E3,4.897277606E1 +1.214586000E3,4.662047985E1 +1.214832000E3,5.483925472E1 +1.215143000E3,5.677489998E1 +1.215372000E3,5.470688254E1 +1.215664000E3,5.408747991E1 +1.215962000E3,5.167832591E1 +1.216227000E3,5.463116224E1 +1.216504000E3,5.335564969E1 +1.216747000E3,4.832376612E1 +1.216996000E3,4.918538596E1 +1.217306000E3,5.329611015E1 +1.217618000E3,5.364881155E1 +1.217885000E3,5.087209115E1 +1.218149000E3,4.967310650E1 +1.218497000E3,4.842689624E1 +1.218801000E3,5.442588779E1 +1.219043000E3,5.338467746E1 +1.219349000E3,5.187371665E1 +1.219600000E3,4.992515182E1 +1.219883000E3,5.205809257E1 +1.220161000E3,5.374364962E1 +1.220471000E3,5.145920034E1 +1.220752000E3,5.112774200E1 +1.221009000E3,4.969936214E1 +1.221258000E3,4.906585252E1 +1.221519000E3,4.971022706E1 +1.221873000E3,5.039216656E1 +1.222125000E3,4.735018859E1 +1.222388000E3,5.025223930E1 +1.222647000E3,5.349102952E1 +1.222903000E3,5.894430216E1 +1.223210000E3,5.133834742E1 +1.223464000E3,5.378681025E1 +1.223708000E3,5.646161983E1 +1.223949000E3,5.127610878E1 +1.224189000E3,5.295211205E1 +1.224441000E3,5.074229414E1 +1.224698000E3,5.428527885E1 +1.225064000E3,6.064230054E1 +1.225333000E3,5.545461106E1 +1.225591000E3,5.085263163E1 +1.225847000E3,4.867332677E1 +1.226137000E3,4.828036819E1 +1.226394000E3,5.187031217E1 +1.226668000E3,4.691949774E1 +1.226931000E3,4.605300024E1 +1.227219000E3,4.319091646E1 +1.227493000E3,4.827268256E1 +1.227791000E3,4.873371181E1 +1.228031000E3,4.895629331E1 +1.228388000E3,4.831306026E1 +1.228651000E3,5.150144778E1 +1.228942000E3,5.210555115E1 +1.229190000E3,4.868630793E1 +1.229442000E3,5.072280558E1 +1.229686000E3,5.520857657E1 +1.229933000E3,5.597505745E1 +1.230228000E3,5.309096620E1 +1.230467000E3,5.340491117E1 +1.230765000E3,4.966814228E1 +1.231012000E3,4.811713105E1 +1.231316000E3,5.037869561E1 +1.231666000E3,4.768651081E1 +1.231948000E3,4.577834304E1 +1.232207000E3,4.455407567E1 +1.232510000E3,5.091422235E1 +1.232802000E3,4.990562511E1 +1.233047000E3,5.178152081E1 +1.233344000E3,5.312014577E1 +1.233592000E3,5.002236071E1 +1.233892000E3,5.158473192E1 +1.234173000E3,4.692863129E1 +1.234463000E3,4.643331531E1 +1.234792000E3,4.659156592E1 +1.235060000E3,4.662718910E1 +1.235313000E3,5.204491267E1 +1.235577000E3,5.165973487E1 +1.235837000E3,4.753691687E1 +1.236124000E3,5.179615379E1 +1.236401000E3,4.807409380E1 +1.236654000E3,5.474790946E1 +1.236923000E3,4.946475170E1 +1.237180000E3,4.949471083E1 +1.237426000E3,4.669168363E1 +1.237743000E3,5.529942944E1 +1.238061000E3,5.997488643E1 +1.238363000E3,5.302222406E1 +1.238611000E3,5.022506453E1 +1.238856000E3,4.864145193E1 +1.239102000E3,5.299123845E1 +1.239357000E3,4.682866815E1 +1.239657000E3,4.770894983E1 +1.239902000E3,4.813746372E1 +1.240150000E3,4.571771059E1 +1.240465000E3,5.354012247E1 +1.240765000E3,5.830707734E1 +1.241013000E3,5.483189048E1 +1.241344000E3,5.157405593E1 +1.241606000E3,5.072581437E1 +1.241868000E3,5.137979859E1 +1.242133000E3,4.849261303E1 +1.242396000E3,5.556107710E1 +1.242656000E3,4.958779284E1 +1.242959000E3,5.301548021E1 +1.243232000E3,5.475621292E1 +1.243501000E3,5.660789219E1 +1.243755000E3,5.350018163E1 +1.244010000E3,5.415674835E1 +1.244349000E3,5.699979568E1 +1.244717000E3,5.660044844E1 +1.245015000E3,5.808533709E1 +1.245259000E3,5.881859790E1 +1.245558000E3,5.728882886E1 +1.245808000E3,6.044308225E1 +1.246079000E3,5.893900513E1 +1.246326000E3,5.279872381E1 +1.246637000E3,5.769196864E1 +1.246935000E3,5.963088900E1 +1.247181000E3,5.367341836E1 +1.247508000E3,4.963645506E1 +1.247848000E3,5.265770489E1 +1.248115000E3,5.355743381E1 +1.248359000E3,4.891015342E1 +1.248659000E3,4.819353582E1 +1.248902000E3,4.966403220E1 +1.249199000E3,4.977495696E1 +1.249449000E3,5.715212626E1 +1.249708000E3,5.458337902E1 +1.249983000E3,4.910795823E1 +1.250282000E3,5.184902745E1 +1.250527000E3,5.416053460E1 +1.250777000E3,5.320773170E1 +1.251084000E3,5.422274265E1 +1.251342000E3,5.429456299E1 +1.251602000E3,5.910733722E1 +1.251866000E3,5.226490816E1 +1.252178000E3,5.191466859E1 +1.252452000E3,5.143339371E1 +1.252681000E3,5.066846779E1 +1.252975000E3,4.928639562E1 +1.253256000E3,4.916995298E1 +1.253528000E3,5.115941927E1 +1.253816000E3,4.850268402E1 +1.254063000E3,5.682920937E1 +1.254418000E3,5.583927157E1 +1.254700000E3,5.243405901E1 +1.254947000E3,5.411796563E1 +1.255215000E3,5.538314624E1 +1.255487000E3,5.447026824E1 +1.255748000E3,5.115232974E1 +1.256046000E3,5.273125350E1 +1.256281000E3,5.501639825E1 +1.256559000E3,5.470702619E1 +1.256867000E3,5.330168249E1 +1.257116000E3,5.680033697E1 +1.257361000E3,5.088137081E1 +1.257690000E3,4.771044205E1 +1.257935000E3,5.556188303E1 +1.258189000E3,5.821474305E1 +1.258460000E3,5.913083175E1 +1.258757000E3,5.624840253E1 +1.259001000E3,5.575040009E1 +1.259294000E3,5.295140054E1 +1.259581000E3,5.547885633E1 +1.259831000E3,5.659634167E1 +1.260084000E3,5.552607398E1 +1.260378000E3,5.399987136E1 +1.260676000E3,5.741946227E1 +1.260997000E3,5.622829253E1 +1.261272000E3,5.638519080E1 +1.261569000E3,5.222122782E1 +1.261810000E3,5.168558616E1 +1.262055000E3,5.937417075E1 +1.262351000E3,5.419990938E1 +1.262597000E3,5.469291977E1 +1.262893000E3,5.501007253E1 +1.263142000E3,5.356116387E1 +1.263421000E3,5.643294047E1 +1.263644000E3,5.627927149E1 +1.263964000E3,5.547827797E1 +1.264255000E3,5.434029164E1 +1.264552000E3,5.355134450E1 +1.264791000E3,5.268456483E1 +1.265090000E3,5.304298782E1 +1.265342000E3,5.292557941E1 +1.265637000E3,5.267823535E1 +1.265885000E3,5.076475521E1 +1.266186000E3,5.470463807E1 +1.266480000E3,5.369531663E1 +1.266727000E3,5.321314382E1 +1.267074000E3,5.430022488E1 +1.267386000E3,5.498366079E1 +1.267650000E3,5.373765381E1 +1.267926000E3,5.631680810E1 +1.268156000E3,5.314598601E1 +1.268459000E3,5.446778700E1 +1.268718000E3,5.461487175E1 +1.269029000E3,4.723979401E1 +1.269322000E3,5.050485841E1 +1.269602000E3,5.263446338E1 +1.269914000E3,5.195043172E1 +1.270180000E3,5.361139844E1 +1.270542000E3,5.127785292E1 +1.270796000E3,5.111084292E1 +1.271061000E3,5.030178225E1 +1.271329000E3,4.978955516E1 +1.271616000E3,5.398913319E1 +1.271862000E3,5.537806166E1 +1.272155000E3,5.301545016E1 +1.272407000E3,5.450597504E1 +1.272651000E3,5.090153644E1 +1.272906000E3,5.335437953E1 +1.273148000E3,4.673762491E1 +1.273392000E3,5.062539325E1 +1.273710000E3,5.110756444E1 +1.273960000E3,5.466659884E1 +1.274217000E3,5.158121780E1 +1.274511000E3,5.575560452E1 +1.274759000E3,5.536976579E1 +1.275054000E3,5.425250328E1 +1.275298000E3,5.448034930E1 +1.275544000E3,5.185016662E1 +1.275828000E3,5.206320816E1 +1.276126000E3,5.118466074E1 +1.276376000E3,4.943928704E1 +1.276707000E3,5.090592254E1 +1.276972000E3,5.767487174E1 +1.277251000E3,5.481331862E1 +1.277544000E3,5.385854096E1 +1.277810000E3,5.179333541E1 +1.278097000E3,5.161992279E1 +1.278344000E3,5.248655937E1 +1.278657000E3,5.064236034E1 +1.278927000E3,4.915402835E1 +1.279197000E3,5.321156971E1 +1.279471000E3,5.438812541E1 +1.279734000E3,5.482588411E1 +1.280065000E3,5.157318203E1 +1.280296000E3,5.173449962E1 +1.280546000E3,5.465953878E1 +1.280843000E3,5.457680704E1 +1.281077000E3,5.562152963E1 +1.281325000E3,5.460406982E1 +1.281570000E3,5.232421403E1 +1.281870000E3,5.207576719E1 +1.282135000E3,4.968186040E1 +1.282378000E3,5.237915347E1 +1.282628000E3,4.745539727E1 +1.282877000E3,5.255989147E1 +1.283195000E3,5.301690658E1 +1.283467000E3,5.283539029E1 +1.283717000E3,5.083105477E1 +1.283978000E3,4.559322742E1 +1.284235000E3,4.934435088E1 +1.284538000E3,5.265118466E1 +1.284812000E3,5.302155906E1 +1.285045000E3,5.294725202E1 +1.285352000E3,5.129236762E1 +1.285646000E3,5.402858483E1 +1.285898000E3,5.434527110E1 +1.286189000E3,5.525625388E1 +1.286515000E3,5.653073998E1 +1.286819000E3,5.704731902E1 +1.287101000E3,5.310035962E1 +1.287387000E3,5.474072190E1 +1.287649000E3,5.496979063E1 +1.287925000E3,5.528941101E1 +1.288193000E3,5.394330028E1 +1.288492000E3,4.829171318E1 +1.288740000E3,5.076324605E1 +1.289004000E3,4.673843249E1 +1.289280000E3,5.345749476E1 +1.289584000E3,4.955238815E1 +1.289923000E3,5.268555513E1 +1.290206000E3,5.092762320E1 +1.290445000E3,5.180504716E1 +1.290779000E3,5.421996562E1 +1.291081000E3,5.408565728E1 +1.291322000E3,5.466627749E1 +1.291622000E3,5.247549140E1 +1.291870000E3,5.438915347E1 +1.292125000E3,5.526358440E1 +1.292428000E3,5.407200655E1 +1.292723000E3,5.160593410E1 +1.293035000E3,5.231731426E1 +1.293342000E3,5.126765219E1 +1.293626000E3,4.802016847E1 +1.293922000E3,5.428603515E1 +1.294199000E3,5.305841291E1 +1.294451000E3,5.676250586E1 +1.294738000E3,5.921971496E1 +1.295005000E3,5.812051865E1 +1.295266000E3,5.671365947E1 +1.295512000E3,5.389157640E1 +1.295809000E3,5.417883641E1 +1.296087000E3,5.169085532E1 +1.296408000E3,5.027989141E1 +1.296704000E3,5.801273246E1 +1.296951000E3,5.777618357E1 +1.297241000E3,5.598217178E1 +1.297547000E3,5.590671112E1 +1.297806000E3,6.302454961E1 +1.298073000E3,5.716944646E1 +1.298330000E3,5.693666329E1 +1.298591000E3,5.374930006E1 +1.298851000E3,5.170089530E1 +1.299100000E3,6.243829367E1 +1.299340000E3,5.522680485E1 +1.299673000E3,5.451288060E1 +1.299933000E3,5.720613947E1 +1.300193000E3,5.131457759E1 +1.300510000E3,5.593393786E1 +1.300810000E3,5.344184529E1 +1.301099000E3,5.432320381E1 +1.301355000E3,5.294046944E1 +1.301602000E3,5.330691828E1 +1.301911000E3,4.899471979E1 +1.302175000E3,5.054546621E1 +1.302420000E3,4.914598102E1 +1.302706000E3,5.757950400E1 +1.303045000E3,5.798603958E1 +1.303343000E3,5.685278830E1 +1.303584000E3,5.272645619E1 +1.303869000E3,5.576083132E1 +1.304169000E3,5.311655900E1 +1.304414000E3,5.297304035E1 +1.304724000E3,6.119658997E1 +1.304998000E3,5.921259630E1 +1.305275000E3,5.974785927E1 +1.305567000E3,5.829108198E1 +1.305799000E3,5.656256791E1 +1.306151000E3,5.263150293E1 +1.306475000E3,5.719715846E1 +1.306754000E3,5.746813017E1 +1.307020000E3,6.063794361E1 +1.307320000E3,5.945639283E1 +1.307570000E3,5.898495898E1 +1.307856000E3,5.345744690E1 +1.308127000E3,5.882374416E1 +1.308390000E3,5.704844280E1 +1.308660000E3,6.230218860E1 +1.308982000E3,5.794977886E1 +1.309252000E3,5.609480230E1 +1.309620000E3,5.439173238E1 +1.309924000E3,5.804315704E1 +1.310253000E3,5.898090143E1 +1.310510000E3,5.933785859E1 +1.310826000E3,5.484966867E1 +1.311077000E3,5.841635068E1 +1.311358000E3,5.536029260E1 +1.311601000E3,5.555523834E1 +1.311895000E3,5.637714479E1 +1.312195000E3,5.253312652E1 +1.312445000E3,5.377927694E1 +1.312696000E3,5.757954833E1 +1.313038000E3,5.500733438E1 +1.313282000E3,5.367385274E1 +1.313558000E3,5.610715122E1 +1.313797000E3,5.528556803E1 +1.314063000E3,5.884958532E1 +1.314412000E3,5.458036035E1 +1.314671000E3,5.765344335E1 +1.314945000E3,5.139756723E1 +1.315223000E3,5.546002517E1 +1.315503000E3,5.608276603E1 +1.315733000E3,5.719791479E1 +1.315986000E3,5.413888898E1 +1.316329000E3,5.789500166E1 +1.316579000E3,5.404086097E1 +1.316819000E3,6.021843554E1 +1.317067000E3,5.929690830E1 +1.317365000E3,6.066063258E1 +1.317666000E3,5.465341745E1 +1.317917000E3,5.115712079E1 +1.318169000E3,4.986479689E1 +1.318470000E3,5.351977371E1 +1.318716000E3,5.614277654E1 +1.318987000E3,5.824140620E1 +1.319280000E3,5.863858703E1 +1.319646000E3,5.908977231E1 +1.319902000E3,5.867594430E1 +1.320142000E3,5.256185028E1 +1.320379000E3,5.916248935E1 +1.320672000E3,5.829134786E1 +1.320910000E3,5.729121950E1 +1.321203000E3,5.817253701E1 +1.321434000E3,5.958327052E1 +1.321726000E3,6.109571062E1 +1.321963000E3,6.309400740E1 +1.322263000E3,6.381431561E1 +1.322586000E3,6.124594205E1 +1.322839000E3,6.120886427E1 +1.323128000E3,5.624496406E1 +1.323377000E3,6.205845751E1 +1.323676000E3,6.248705287E1 +1.323968000E3,6.259357777E1 +1.324217000E3,6.168308921E1 +1.324496000E3,6.128297543E1 +1.324731000E3,5.975404370E1 +1.325024000E3,6.147148959E1 +1.325261000E3,6.101142333E1 +1.325573000E3,5.682124874E1 +1.325854000E3,5.869490284E1 +1.326149000E3,5.646663249E1 +1.326392000E3,5.662110608E1 +1.326643000E3,5.067702480E1 +1.326984000E3,5.759763927E1 +1.327264000E3,5.613584630E1 +1.327489000E3,5.826097161E1 +1.327735000E3,5.843702691E1 +1.328012000E3,5.352317094E1 +1.328253000E3,5.737674501E1 +1.328545000E3,5.736811408E1 +1.328911000E3,5.477233671E1 +1.329158000E3,5.481436604E1 +1.329403000E3,4.974322484E1 +1.329645000E3,5.490077996E1 +1.329890000E3,4.870505425E1 +1.330144000E3,4.955972956E1 +1.330428000E3,5.470042727E1 +1.330734000E3,5.618884112E1 +1.331026000E3,5.238151215E1 +1.331265000E3,5.344428978E1 +1.331515000E3,5.051963956E1 +1.331772000E3,5.068574448E1 +1.332120000E3,5.754233113E1 +1.332409000E3,5.498832674E1 +1.332740000E3,5.245036701E1 +1.333034000E3,5.885934606E1 +1.333286000E3,5.644915657E1 +1.333540000E3,5.532779852E1 +1.333784000E3,5.694511409E1 +1.334028000E3,5.553937724E1 +1.334302000E3,5.308286554E1 +1.334615000E3,5.140154995E1 +1.334876000E3,5.045296543E1 +1.335187000E3,5.631993217E1 +1.335451000E3,5.435091016E1 +1.335722000E3,5.624357652E1 +1.335986000E3,5.791043400E1 +1.336271000E3,5.847603086E1 +1.336545000E3,5.757219882E1 +1.336794000E3,6.070042624E1 +1.337072000E3,5.247827017E1 +1.337340000E3,5.208145921E1 +1.337609000E3,6.026756153E1 +1.337870000E3,6.012826199E1 +1.338134000E3,5.465450317E1 +1.338408000E3,5.768658418E1 +1.338755000E3,5.542991210E1 +1.339019000E3,5.279974580E1 +1.339289000E3,4.966927449E1 +1.339556000E3,4.563713389E1 +1.339804000E3,4.961972315E1 +1.340056000E3,5.287436972E1 +1.340316000E3,5.318950925E1 +1.340586000E3,5.037908496E1 +1.340881000E3,5.345184090E1 +1.341116000E3,5.016784238E1 +1.341407000E3,5.799295151E1 +1.341694000E3,5.875659808E1 +1.342051000E3,5.666657228E1 +1.342345000E3,5.241270038E1 +1.342638000E3,5.754780266E1 +1.342875000E3,5.669750570E1 +1.343177000E3,5.541629106E1 +1.343432000E3,5.556249818E1 +1.343726000E3,5.603182587E1 +1.343969000E3,5.961525777E1 +1.344257000E3,5.915223521E1 +1.344498000E3,5.820677933E1 +1.344777000E3,5.815031326E1 +1.345094000E3,5.733094423E1 +1.345363000E3,5.538469317E1 +1.345622000E3,6.270903439E1 +1.345877000E3,5.551461514E1 +1.346148000E3,5.750063996E1 +1.346395000E3,5.473739655E1 +1.346676000E3,5.131350753E1 +1.346958000E3,5.072615719E1 +1.347258000E3,4.882711207E1 +1.347518000E3,5.273988371E1 +1.347784000E3,6.269937361E1 +1.348040000E3,6.058958657E1 +1.348391000E3,5.894445662E1 +1.348716000E3,5.683213923E1 +1.348984000E3,5.875140523E1 +1.349236000E3,5.263650529E1 +1.349491000E3,4.630287352E1 +1.349847000E3,5.742006494E1 +1.350115000E3,6.486179330E1 +1.350358000E3,5.963871460E1 +1.350612000E3,5.220281373E1 +1.350868000E3,5.825229613E1 +1.351125000E3,5.822075100E1 +1.351374000E3,5.487419692E1 +1.351666000E3,5.461361208E1 +1.351934000E3,5.384511910E1 +1.352185000E3,5.782109838E1 +1.352440000E3,5.156901690E1 +1.352688000E3,5.262530942E1 +1.352990000E3,5.827406705E1 +1.353265000E3,6.164230870E1 +1.353493000E3,5.939319367E1 +1.353769000E3,5.491407227E1 +1.353989000E3,5.363390940E1 +1.354236000E3,5.108497673E1 +1.354516000E3,6.129017752E1 +1.354836000E3,5.594784457E1 +1.355095000E3,5.172378417E1 +1.355422000E3,5.975901259E1 +1.355685000E3,5.720857994E1 +1.355941000E3,5.600667557E1 +1.356197000E3,5.471836828E1 +1.356478000E3,5.319452565E1 +1.356745000E3,5.296912594E1 +1.357013000E3,5.811625635E1 +1.357280000E3,5.430511038E1 +1.357577000E3,5.277700001E1 +1.357824000E3,5.616769978E1 +1.358135000E3,5.406396803E1 +1.358401000E3,4.910300122E1 +1.358643000E3,5.077236009E1 +1.358892000E3,5.530877446E1 +1.359206000E3,5.787482939E1 +1.359485000E3,5.846197249E1 +1.359760000E3,6.103303991E1 +1.360055000E3,6.092009186E1 +1.360296000E3,5.979156049E1 +1.360590000E3,6.049263298E1 +1.360828000E3,5.895545308E1 +1.361114000E3,5.611946421E1 +1.361473000E3,5.480295831E1 +1.361726000E3,5.397626184E1 +1.361972000E3,5.443193027E1 +1.362314000E3,5.572591927E1 +1.362560000E3,5.224616115E1 +1.362808000E3,5.244486023E1 +1.363061000E3,5.179430466E1 +1.363307000E3,5.228822629E1 +1.363555000E3,5.248152719E1 +1.363850000E3,5.310816898E1 +1.364115000E3,5.586433987E1 +1.364397000E3,5.735023043E1 +1.364703000E3,6.002405491E1 +1.364950000E3,5.692273216E1 +1.365192000E3,5.941823705E1 +1.365459000E3,5.316793659E1 +1.365709000E3,5.869878442E1 +1.365953000E3,5.756526572E1 +1.366216000E3,5.687574379E1 +1.366491000E3,5.232478004E1 +1.366744000E3,5.424491879E1 +1.367001000E3,5.235481979E1 +1.367305000E3,5.164783122E1 +1.367588000E3,4.924997634E1 +1.367934000E3,4.924339558E1 +1.368196000E3,5.793398832E1 +1.368473000E3,5.529211657E1 +1.368719000E3,5.120874356E1 +1.368963000E3,5.470742612E1 +1.369285000E3,5.560989240E1 +1.369528000E3,5.197646059E1 +1.369822000E3,5.152328490E1 +1.370111000E3,5.791930576E1 +1.370416000E3,5.368811562E1 +1.370672000E3,5.769124019E1 +1.370919000E3,5.333549653E1 +1.371292000E3,5.847056292E1 +1.371551000E3,5.642894477E1 +1.371803000E3,5.817537921E1 +1.372074000E3,5.885584750E1 +1.372335000E3,5.395474736E1 +1.372602000E3,5.211537518E1 +1.372880000E3,4.924374923E1 +1.373126000E3,4.882665291E1 +1.373379000E3,5.483140316E1 +1.373636000E3,5.380197532E1 +1.373915000E3,5.629967483E1 +1.374251000E3,5.773524892E1 +1.374636000E3,6.271253195E1 +1.374894000E3,5.870587143E1 +1.375125000E3,5.496954916E1 +1.375369000E3,5.621931219E1 +1.375641000E3,5.700323462E1 +1.375912000E3,5.808968856E1 +1.376161000E3,5.697587873E1 +1.376437000E3,5.739415600E1 +1.376687000E3,5.874614285E1 +1.376941000E3,5.855325473E1 +1.377252000E3,5.287324040E1 +1.377495000E3,5.331405656E1 +1.377862000E3,5.163612814E1 +1.378109000E3,6.003152631E1 +1.378372000E3,6.448039849E1 +1.378641000E3,6.226927373E1 +1.378912000E3,6.355904277E1 +1.379208000E3,6.121718755E1 +1.379463000E3,6.371699462E1 +1.379738000E3,5.774542440E1 +1.380076000E3,5.579766677E1 +1.380318000E3,5.520595979E1 +1.380614000E3,5.395000262E1 +1.380855000E3,5.263752401E1 +1.381221000E3,5.267030150E1 +1.381492000E3,5.304251562E1 +1.381793000E3,4.959737221E1 +1.382100000E3,5.549829026E1 +1.382347000E3,5.821584994E1 +1.382642000E3,5.861199323E1 +1.382905000E3,5.256382895E1 +1.383164000E3,5.491877459E1 +1.383443000E3,5.644995893E1 +1.383702000E3,5.411249990E1 +1.383954000E3,5.324738213E1 +1.384305000E3,5.625052210E1 +1.384532000E3,6.070474662E1 +1.384789000E3,5.237062704E1 +1.385074000E3,5.442107865E1 +1.385361000E3,6.017483878E1 +1.385605000E3,6.237555822E1 +1.385869000E3,5.605951782E1 +1.386126000E3,6.511151133E1 +1.386382000E3,5.571785683E1 +1.386696000E3,5.398201636E1 +1.386954000E3,5.323734283E1 +1.387264000E3,5.635686029E1 +1.387623000E3,5.701357512E1 +1.387874000E3,5.632095063E1 +1.388187000E3,5.288354031E1 +1.388477000E3,5.152350906E1 +1.388761000E3,5.130627857E1 +1.388982000E3,4.918436870E1 +1.389239000E3,5.567775637E1 +1.389545000E3,5.465238648E1 +1.389786000E3,5.003079725E1 +1.390027000E3,5.504486936E1 +1.390282000E3,5.947272344E1 +1.390539000E3,6.106137952E1 +1.390892000E3,5.985290475E1 +1.391203000E3,5.500825546E1 +1.391507000E3,5.157102239E1 +1.391806000E3,5.517662265E1 +1.392108000E3,5.349243854E1 +1.392411000E3,5.386652866E1 +1.392707000E3,5.258839734E1 +1.392973000E3,5.376638351E1 +1.393221000E3,5.619475880E1 +1.393480000E3,5.846509931E1 +1.393767000E3,6.504346680E1 +1.394122000E3,5.865804348E1 +1.394392000E3,5.055217311E1 +1.394673000E3,4.837306759E1 +1.394931000E3,5.564689750E1 +1.395193000E3,5.416088817E1 +1.395489000E3,5.481584764E1 +1.395781000E3,5.356143065E1 +1.396078000E3,5.074158934E1 +1.396313000E3,5.177896206E1 +1.396618000E3,5.670327312E1 +1.396914000E3,6.043149132E1 +1.397246000E3,5.875453471E1 +1.397559000E3,5.725772305E1 +1.397842000E3,5.610169288E1 +1.398092000E3,6.098127982E1 +1.398354000E3,5.385330985E1 +1.398611000E3,5.345613584E1 +1.398873000E3,6.183897473E1 +1.399135000E3,5.898294985E1 +1.399399000E3,5.644599073E1 +1.399662000E3,6.288338842E1 +1.399923000E3,5.844786233E1 +1.400178000E3,6.145207907E1 +1.400438000E3,5.797678971E1 +1.400786000E3,5.805590691E1 +1.401082000E3,5.956739883E1 +1.401323000E3,5.537900496E1 +1.401618000E3,5.084213917E1 +1.401871000E3,4.807017206E1 +1.402118000E3,5.545233073E1 +1.402411000E3,5.516036366E1 +1.402644000E3,5.413431379E1 +1.402920000E3,5.388857626E1 +1.403209000E3,5.292068844E1 +1.403479000E3,5.775211983E1 +1.403718000E3,5.117484548E1 +1.404045000E3,5.912447648E1 +1.404295000E3,5.591921957E1 +1.404568000E3,5.565028551E1 +1.404828000E3,5.013398992E1 +1.405122000E3,5.465164253E1 +1.405364000E3,5.305211462E1 +1.405620000E3,5.755171154E1 +1.405929000E3,6.007655449E1 +1.406174000E3,5.899920387E1 +1.406463000E3,5.970773629E1 +1.406720000E3,5.770443308E1 +1.407009000E3,5.521297881E1 +1.407407000E3,5.604277064E1 +1.407677000E3,5.646208540E1 +1.407969000E3,4.906112006E1 +1.408239000E3,5.193830101E1 +1.408558000E3,4.835599484E1 +1.408830000E3,4.864558507E1 +1.409087000E3,5.566138381E1 +1.409349000E3,5.240816417E1 +1.409604000E3,4.366169359E1 +1.409843000E3,4.924613485E1 +1.410167000E3,5.289541091E1 +1.410462000E3,5.429333459E1 +1.410857000E3,5.232803186E1 +1.411115000E3,5.279391543E1 +1.411388000E3,5.698112108E1 +1.411689000E3,4.954635028E1 +1.411940000E3,5.347151392E1 +1.412202000E3,5.431542928E1 +1.412461000E3,5.708654506E1 +1.412712000E3,5.999867781E1 +1.412972000E3,5.836713300E1 +1.413243000E3,5.662529411E1 +1.413547000E3,5.760118844E1 +1.413790000E3,5.272334048E1 +1.414155000E3,5.585703000E1 +1.414407000E3,5.277217169E1 +1.414666000E3,5.575617717E1 +1.414970000E3,5.588142009E1 +1.415263000E3,5.043609445E1 +1.415519000E3,5.366091219E1 +1.415818000E3,6.729065738E1 +1.416082000E3,5.454700058E1 +1.416357000E3,5.542836481E1 +1.416608000E3,6.150002805E1 +1.416870000E3,5.918799699E1 +1.417164000E3,5.739551304E1 +1.417548000E3,5.312046747E1 +1.417864000E3,5.735989692E1 +1.418111000E3,5.463708503E1 +1.418368000E3,5.616594485E1 +1.418622000E3,5.674613857E1 +1.418880000E3,5.393284238E1 +1.419178000E3,5.477989298E1 +1.419414000E3,5.673628135E1 +1.419692000E3,5.246670124E1 +1.419935000E3,5.929492524E1 +1.420173000E3,5.718550468E1 +1.420417000E3,5.597503360E1 +1.420745000E3,5.209811810E1 +1.421016000E3,5.108820023E1 +1.421271000E3,5.704928631E1 +1.421524000E3,5.534619134E1 +1.421787000E3,5.298830069E1 +1.422048000E3,5.357926773E1 +1.422324000E3,5.150193558E1 +1.422590000E3,5.236977243E1 +1.422860000E3,5.598534631E1 +1.423111000E3,5.804712890E1 +1.423360000E3,5.584477369E1 +1.423617000E3,6.166819052E1 +1.423956000E3,6.217862533E1 +1.424239000E3,6.474885215E1 +1.424493000E3,6.561094566E1 +1.424771000E3,6.624921272E1 +1.425013000E3,6.269332683E1 +1.425310000E3,6.427501900E1 +1.425550000E3,6.406421996E1 +1.425806000E3,6.561696377E1 +1.426124000E3,5.757984813E1 +1.426392000E3,6.467113265E1 +1.426661000E3,6.110360998E1 +1.426971000E3,6.257935575E1 +1.427325000E3,6.059948571E1 +1.427600000E3,6.060080967E1 +1.427858000E3,6.129065918E1 +1.428157000E3,6.869907238E1 +1.428403000E3,6.216021300E1 +1.428668000E3,6.028715826E1 +1.428917000E3,5.215970407E1 +1.429175000E3,5.348756082E1 +1.429445000E3,5.866879342E1 +1.429775000E3,5.422412762E1 +1.430077000E3,5.967912654E1 +1.430370000E3,6.053958419E1 +1.430696000E3,5.642153628E1 +1.430959000E3,5.797803369E1 +1.431217000E3,5.265853131E1 +1.431545000E3,6.085541328E1 +1.431825000E3,6.579757863E1 +1.432095000E3,6.783858113E1 +1.432356000E3,6.680245969E1 +1.432609000E3,5.699539434E1 +1.432887000E3,5.495476405E1 +1.433146000E3,5.431336982E1 +1.433405000E3,5.468573805E1 +1.433768000E3,6.415525931E1 +1.434037000E3,5.996195649E1 +1.434305000E3,5.880144898E1 +1.434536000E3,5.062803370E1 +1.434794000E3,4.838886892E1 +1.435059000E3,4.852598648E1 +1.435348000E3,5.424758091E1 +1.435611000E3,6.028120001E1 +1.435845000E3,5.860165153E1 +1.436098000E3,5.820116177E1 +1.436348000E3,5.458976108E1 +1.436603000E3,5.748661459E1 +1.436983000E3,5.071157707E1 +1.437230000E3,5.187454119E1 +1.437505000E3,5.690962542E1 +1.437744000E3,5.898297949E1 +1.438006000E3,6.083548120E1 +1.438278000E3,4.929702369E1 +1.438556000E3,5.094464024E1 +1.438857000E3,5.451803318E1 +1.439157000E3,4.851675588E1 +1.439427000E3,4.781325912E1 +1.439724000E3,4.919544886E1 +1.439968000E3,4.662525194E1 +1.440374000E3,4.187537091E1 +1.440620000E3,5.083424523E1 +1.440895000E3,4.476479772E1 +1.441179000E3,5.236126827E1 +1.441495000E3,4.954212438E1 +1.441772000E3,5.444261950E1 +1.442048000E3,5.023278537E1 +1.442273000E3,4.640707667E1 +1.442557000E3,5.088583460E1 +1.442822000E3,5.041471443E1 +1.443067000E3,4.940152653E1 +1.443315000E3,4.834999124E1 +1.443550000E3,5.084173145E1 +1.443802000E3,4.674944421E1 +1.444118000E3,5.005548854E1 +1.444412000E3,4.880222753E1 +1.444695000E3,4.829349493E1 +1.444948000E3,4.815408858E1 +1.445231000E3,4.968297573E1 +1.445471000E3,5.263069989E1 +1.445763000E3,4.570389774E1 +1.446062000E3,4.674284816E1 +1.446364000E3,5.179136771E1 +1.446637000E3,5.007894257E1 +1.446884000E3,5.001285233E1 +1.447102000E3,5.063641057E1 +1.447373000E3,4.164946286E1 +1.447601000E3,3.981108666E1 +1.447894000E3,4.316358072E1 +1.448132000E3,5.465701871E1 +1.448431000E3,4.615144027E1 +1.448672000E3,4.353154230E1 +1.448965000E3,5.208221965E1 +1.449200000E3,5.530439334E1 +1.449496000E3,4.996075498E1 +1.449729000E3,5.218941020E1 +1.450060000E3,4.888890123E1 +1.450335000E3,5.030971329E1 +1.450629000E3,5.012870067E1 +1.450899000E3,4.847297804E1 +1.451151000E3,4.759762696E1 +1.451454000E3,4.978926902E1 +1.451751000E3,4.930919072E1 +1.452001000E3,5.004861581E1 +1.452285000E3,5.051309266E1 +1.452566000E3,4.810890055E1 +1.452826000E3,4.654354865E1 +1.453069000E3,4.761425190E1 +1.453369000E3,4.589508435E1 +1.453616000E3,4.954922405E1 +1.453886000E3,4.065983258E1 +1.454197000E3,4.220647307E1 +1.454513000E3,4.858310714E1 +1.454789000E3,5.196405012E1 +1.455012000E3,5.467685341E1 +1.455262000E3,5.753332593E1 +1.455513000E3,4.707036048E1 +1.455859000E3,3.942826471E1 +1.456237000E3,5.170062203E1 +1.456495000E3,6.022707597E1 +1.456743000E3,5.524301158E1 +1.456990000E3,5.482834451E1 +1.457257000E3,4.917995293E1 +1.457590000E3,4.739340640E1 +1.457831000E3,4.842051754E1 +1.458073000E3,6.166669432E1 +1.458329000E3,5.427876580E1 +1.458617000E3,4.896037674E1 +1.458889000E3,4.346397471E1 +1.459122000E3,4.481546196E1 +1.459424000E3,5.149740630E1 +1.459726000E3,4.614214660E1 +1.459975000E3,4.567227587E1 +1.460237000E3,5.348774305E1 +1.460488000E3,5.617792493E1 +1.460730000E3,5.122937085E1 +1.460971000E3,5.712815616E1 +1.461266000E3,5.592815325E1 +1.461504000E3,5.208026338E1 +1.461798000E3,5.368936290E1 +1.462033000E3,5.424431898E1 +1.462332000E3,5.229538114E1 +1.462686000E3,5.012562607E1 +1.462943000E3,5.517893002E1 +1.463292000E3,5.544440679E1 +1.463574000E3,5.195225561E1 +1.463851000E3,5.582804772E1 +1.464133000E3,5.163717454E1 +1.464392000E3,5.056978371E1 +1.464653000E3,5.085736348E1 +1.464931000E3,5.111025552E1 +1.465171000E3,5.008163028E1 +1.465468000E3,5.204681239E1 +1.465721000E3,4.873162615E1 +1.466070000E3,5.052420662E1 +1.466365000E3,5.115431116E1 +1.466626000E3,5.008089225E1 +1.466902000E3,5.455907242E1 +1.467123000E3,5.881328519E1 +1.467422000E3,5.654049662E1 +1.467665000E3,6.208900398E1 +1.467911000E3,5.573620080E1 +1.468210000E3,5.034178452E1 +1.468461000E3,4.644884091E1 +1.468716000E3,4.489036287E1 +1.469021000E3,4.555962209E1 +1.469437000E3,4.956164087E1 +1.469733000E3,5.014140659E1 +1.469995000E3,5.025508197E1 +1.470298000E3,4.976482928E1 +1.470552000E3,4.666552600E1 +1.470801000E3,5.164800320E1 +1.471107000E3,4.748865751E1 +1.471358000E3,5.068455306E1 +1.471623000E3,5.380657492E1 +1.471874000E3,4.918332364E1 +1.472155000E3,4.974368594E1 +1.472539000E3,5.519550202E1 +1.472795000E3,5.119649457E1 +1.473056000E3,5.406344748E1 +1.473370000E3,5.554928156E1 +1.473655000E3,5.458007948E1 +1.473895000E3,5.519923804E1 +1.474152000E3,5.580016483E1 +1.474437000E3,5.718813696E1 +1.474685000E3,5.734393611E1 +1.474960000E3,5.879862387E1 +1.475221000E3,5.602300215E1 +1.475474000E3,5.025640835E1 +1.475826000E3,5.543439402E1 +1.476071000E3,5.232164352E1 +1.476323000E3,5.898115961E1 +1.476584000E3,6.066467981E1 +1.476821000E3,5.071984472E1 +1.477123000E3,5.740447565E1 +1.477365000E3,5.959782608E1 +1.477662000E3,5.958620190E1 +1.477906000E3,5.753388342E1 +1.478144000E3,5.506848886E1 +1.478455000E3,5.769430513E1 +1.478723000E3,5.629679592E1 +1.478987000E3,5.649495967E1 +1.479262000E3,5.787253729E1 +1.479512000E3,5.216150167E1 +1.479813000E3,4.948302212E1 +1.480088000E3,5.080056078E1 +1.480342000E3,4.734041467E1 +1.480601000E3,4.440736689E1 +1.480866000E3,5.120725270E1 +1.481166000E3,5.053254929E1 +1.481466000E3,5.274685420E1 +1.481724000E3,5.071521067E1 +1.481973000E3,5.225995741E1 +1.482300000E3,5.133897759E1 +1.482575000E3,5.007250383E1 +1.482845000E3,5.042400131E1 +1.483101000E3,5.258901014E1 +1.483408000E3,5.618504625E1 +1.483668000E3,5.503349900E1 +1.483933000E3,4.974702245E1 +1.484194000E3,5.170781389E1 +1.484440000E3,5.072340799E1 +1.484707000E3,5.947536199E1 +1.485018000E3,5.467515596E1 +1.485306000E3,6.085614245E1 +1.485656000E3,5.990152864E1 +1.485935000E3,5.602550586E1 +1.486168000E3,5.561766537E1 +1.486422000E3,5.350876804E1 +1.486701000E3,5.699979875E1 +1.486960000E3,5.177464585E1 +1.487207000E3,5.249766501E1 +1.487486000E3,5.285366750E1 +1.487751000E3,5.316768095E1 +1.488002000E3,4.876639606E1 +1.488262000E3,5.179834313E1 +1.488516000E3,4.991892364E1 +1.488812000E3,5.156353661E1 +1.489125000E3,5.341434219E1 +1.489400000E3,5.426211096E1 +1.489675000E3,4.699672779E1 +1.489958000E3,5.361914521E1 +1.490219000E3,5.605827819E1 +1.490490000E3,5.089547448E1 +1.490772000E3,5.163564337E1 +1.491061000E3,5.841576784E1 +1.491309000E3,5.524417730E1 +1.491589000E3,5.450558122E1 +1.491873000E3,5.581032480E1 +1.492194000E3,5.802352567E1 +1.492448000E3,4.962366630E1 +1.492810000E3,5.873656508E1 +1.493058000E3,5.690804947E1 +1.493359000E3,5.262261274E1 +1.493674000E3,5.584655342E1 +1.493919000E3,5.542283425E1 +1.494163000E3,5.373884310E1 +1.494412000E3,5.084083433E1 +1.494678000E3,4.964027690E1 +1.494956000E3,5.125570040E1 +1.495204000E3,5.194895191E1 +1.495526000E3,4.961412488E1 +1.495784000E3,4.972405818E1 +1.496036000E3,4.777083448E1 +1.496283000E3,5.231556692E1 +1.496593000E3,5.894066851E1 +1.496842000E3,6.007182772E1 +1.497086000E3,6.003234807E1 +1.497358000E3,5.170627362E1 +1.497682000E3,5.564688341E1 +1.497937000E3,5.459086103E1 +1.498234000E3,5.654462748E1 +1.498530000E3,5.643601391E1 +1.498887000E3,5.593732695E1 +1.499182000E3,5.279859883E1 +1.499469000E3,5.063056157E1 +1.499723000E3,4.846330641E1 +1.499972000E3,5.696559719E1 +1.500236000E3,5.806291630E1 +1.500555000E3,5.485435177E1 +1.500851000E3,5.386376671E1 +1.501120000E3,5.529102258E1 +1.501400000E3,5.058415032E1 +1.501675000E3,5.420960743E1 +1.501928000E3,4.962388553E1 +1.502263000E3,5.167692375E1 +1.502567000E3,5.072695334E1 +1.502878000E3,5.319678523E1 +1.503119000E3,5.961199300E1 +1.503369000E3,5.299728366E1 +1.503631000E3,5.369404965E1 +1.503941000E3,5.426817134E1 +1.504209000E3,5.369336762E1 +1.504462000E3,5.246626497E1 +1.504724000E3,5.358557871E1 +1.505015000E3,4.957781391E1 +1.505279000E3,5.117668163E1 +1.505699000E3,5.216401891E1 +1.505963000E3,5.011348657E1 +1.506261000E3,5.259055540E1 +1.506507000E3,4.579432510E1 +1.506795000E3,4.877099475E1 +1.507032000E3,4.679595596E1 +1.507314000E3,5.136222565E1 +1.507549000E3,5.267101191E1 +1.507792000E3,5.244999525E1 +1.508074000E3,5.180561005E1 +1.508391000E3,5.030990700E1 +1.508607000E3,5.167226321E1 +1.508859000E3,5.218207738E1 +1.509151000E3,5.317725961E1 +1.509397000E3,5.318899610E1 +1.509689000E3,4.978257152E1 +1.509934000E3,5.032443800E1 +1.510228000E3,4.777293014E1 +1.510466000E3,4.646316587E1 +1.510767000E3,5.646850943E1 +1.511001000E3,5.638889819E1 +1.511293000E3,5.773758842E1 +1.511610000E3,5.580372922E1 +1.511900000E3,5.517502050E1 +1.512151000E3,5.684013484E1 +1.512393000E3,5.407249321E1 +1.512652000E3,5.725430710E1 +1.512902000E3,5.755876004E1 +1.513148000E3,5.492786930E1 +1.513404000E3,5.665177401E1 +1.513705000E3,5.675683028E1 +1.513957000E3,5.845897420E1 +1.514258000E3,5.334537973E1 +1.514488000E3,5.035361876E1 +1.514812000E3,4.886526824E1 +1.515059000E3,5.555156669E1 +1.515357000E3,5.401240780E1 +1.515600000E3,5.191330713E1 +1.515873000E3,5.158089375E1 +1.516102000E3,5.397456219E1 +1.516410000E3,5.205317520E1 +1.516679000E3,5.689433829E1 +1.516971000E3,5.397466306E1 +1.517230000E3,5.553699481E1 +1.517504000E3,5.550832571E1 +1.517763000E3,5.490604036E1 +1.518130000E3,5.129555301E1 +1.518403000E3,5.478479772E1 +1.518670000E3,5.687403653E1 +1.518921000E3,5.464295853E1 +1.519177000E3,5.713561839E1 +1.519461000E3,5.306473622E1 +1.519745000E3,5.320579073E1 +1.520002000E3,5.309385307E1 +1.520258000E3,5.058967996E1 +1.520552000E3,5.470724085E1 +1.520793000E3,5.303104936E1 +1.521156000E3,5.432496893E1 +1.521453000E3,5.594215604E1 +1.521721000E3,5.308545736E1 +1.521969000E3,5.327888421E1 +1.522220000E3,5.030915333E1 +1.522490000E3,5.230098434E1 +1.522776000E3,4.743827766E1 +1.523026000E3,5.464211349E1 +1.523327000E3,5.322537523E1 +1.523581000E3,5.154569729E1 +1.523826000E3,5.335950152E1 +1.524133000E3,5.482016506E1 +1.524417000E3,5.825411535E1 +1.524853000E3,5.879893849E1 +1.525179000E3,5.728744863E1 +1.525433000E3,5.737571640E1 +1.525696000E3,5.681107869E1 +1.525950000E3,5.695921586E1 +1.526210000E3,5.455429607E1 +1.526487000E3,5.808007225E1 +1.526729000E3,5.500512440E1 +1.527042000E3,5.476260812E1 +1.527339000E3,5.849962899E1 +1.527579000E3,5.719021529E1 +1.527910000E3,5.422226824E1 +1.528160000E3,5.266147572E1 +1.528411000E3,5.030747323E1 +1.528675000E3,5.057502492E1 +1.528920000E3,5.365292462E1 +1.529175000E3,5.444435151E1 +1.529423000E3,5.586906556E1 +1.529732000E3,5.808239082E1 +1.530030000E3,5.492304678E1 +1.530283000E3,5.727734117E1 +1.530542000E3,5.518682809E1 +1.530805000E3,5.838179726E1 +1.531133000E3,5.619103982E1 +1.531448000E3,5.705771680E1 +1.531738000E3,5.605732573E1 +1.531987000E3,5.497746164E1 +1.532293000E3,5.570350387E1 +1.532602000E3,5.687942595E1 +1.532873000E3,5.590365459E1 +1.533132000E3,5.379832162E1 +1.533387000E3,5.951317374E1 +1.533654000E3,5.728034638E1 +1.533915000E3,5.755019099E1 +1.534163000E3,5.625336618E1 +1.534512000E3,5.560455999E1 +1.534783000E3,5.186395468E1 +1.535086000E3,6.018952062E1 +1.535379000E3,5.360739703E1 +1.535619000E3,5.637744941E1 +1.535916000E3,5.710534601E1 +1.536153000E3,5.751101039E1 +1.536449000E3,5.888699469E1 +1.536688000E3,5.900809640E1 +1.536983000E3,5.539354346E1 +1.537218000E3,5.212761926E1 +1.537514000E3,6.113968309E1 +1.537773000E3,5.789795306E1 +1.538038000E3,6.065119472E1 +1.538356000E3,5.715251587E1 +1.538607000E3,5.728294892E1 +1.538911000E3,5.939537878E1 +1.539175000E3,5.879010449E1 +1.539417000E3,6.007594674E1 +1.539661000E3,5.983742076E1 +1.539908000E3,6.299497704E1 +1.540182000E3,6.042347696E1 +1.540457000E3,5.844914903E1 +1.540758000E3,5.775362746E1 +1.541037000E3,5.216165265E1 +1.541334000E3,5.255584969E1 +1.541593000E3,5.278098471E1 +1.541846000E3,5.581770981E1 +1.542092000E3,5.736301867E1 +1.542389000E3,5.733951694E1 +1.542623000E3,5.674705381E1 +1.542880000E3,5.506043774E1 +1.543125000E3,5.404728252E1 +1.543453000E3,5.428884791E1 +1.543732000E3,5.547580162E1 +1.544085000E3,5.471747417E1 +1.544346000E3,5.496243571E1 +1.544613000E3,5.288395526E1 +1.544860000E3,5.036194227E1 +1.545111000E3,5.124283852E1 +1.545413000E3,5.731432515E1 +1.545687000E3,5.663908688E1 +1.545955000E3,5.741659811E1 +1.546253000E3,5.084604561E1 +1.546502000E3,5.163330463E1 +1.546772000E3,4.777378739E1 +1.547025000E3,5.200725426E1 +1.547353000E3,5.049690945E1 +1.547625000E3,5.284766124E1 +1.547924000E3,5.396462244E1 +1.548148000E3,5.375524192E1 +1.548403000E3,5.670544075E1 +1.548716000E3,5.332369727E1 +1.548963000E3,5.544219871E1 +1.549238000E3,5.323430806E1 +1.549471000E3,5.180674965E1 +1.549727000E3,5.329467652E1 +1.550023000E3,5.080742485E1 +1.550310000E3,5.026906170E1 +1.550639000E3,5.582908231E1 +1.550905000E3,5.331150300E1 +1.551172000E3,5.186910180E1 +1.551471000E3,5.624561668E1 +1.551739000E3,5.555744845E1 +1.552012000E3,5.944044312E1 +1.552264000E3,6.002272858E1 +1.552531000E3,5.816546804E1 +1.552850000E3,5.936846960E1 +1.553097000E3,5.514794057E1 +1.553401000E3,5.160130424E1 +1.553757000E3,5.107783990E1 +1.554023000E3,5.871375450E1 +1.554276000E3,5.617325190E1 +1.554544000E3,5.736189521E1 +1.554800000E3,5.317828333E1 +1.555051000E3,5.715279916E1 +1.555321000E3,5.726931658E1 +1.555563000E3,5.567771069E1 +1.555823000E3,5.156101336E1 +1.556126000E3,5.688446569E1 +1.556378000E3,6.074118939E1 +1.556642000E3,5.974958265E1 +1.556918000E3,5.702757711E1 +1.557208000E3,5.874442787E1 +1.557457000E3,5.795683904E1 +1.557722000E3,6.039916355E1 +1.558025000E3,5.662755924E1 +1.558320000E3,5.332514547E1 +1.558595000E3,6.059700286E1 +1.558850000E3,5.775207016E1 +1.559098000E3,6.106988435E1 +1.559349000E3,6.039494527E1 +1.559644000E3,5.672405799E1 +1.559889000E3,5.814375710E1 +1.560135000E3,6.159401746E1 +1.560480000E3,5.397583636E1 +1.560770000E3,5.291692280E1 +1.561026000E3,5.439035965E1 +1.561320000E3,5.553984968E1 +1.561619000E3,5.808332247E1 +1.561927000E3,5.744100555E1 +1.562191000E3,5.636250023E1 +1.562451000E3,6.055150308E1 +1.562703000E3,5.624161562E1 +1.562979000E3,5.401048000E1 +1.563233000E3,5.588901558E1 +1.563595000E3,6.020828902E1 +1.563855000E3,6.586197618E1 +1.564143000E3,5.744692826E1 +1.564421000E3,5.175273280E1 +1.564681000E3,5.584828423E1 +1.564939000E3,5.622472521E1 +1.565190000E3,5.419184381E1 +1.565447000E3,4.818775863E1 +1.565701000E3,5.443344746E1 +1.565956000E3,4.960344337E1 +1.566224000E3,6.289868185E1 +1.566469000E3,6.499026885E1 +1.566794000E3,6.277031329E1 +1.567086000E3,5.336636778E1 +1.567405000E3,5.867761918E1 +1.567644000E3,5.135518394E1 +1.567909000E3,5.665720126E1 +1.568204000E3,5.915910399E1 +1.568455000E3,5.687790668E1 +1.568730000E3,5.815647569E1 +1.568976000E3,5.595761669E1 +1.569238000E3,5.367288589E1 +1.569491000E3,4.954593185E1 +1.569752000E3,5.199120702E1 +1.570099000E3,5.857172858E1 +1.570354000E3,5.533510860E1 +1.570614000E3,5.615291914E1 +1.570871000E3,4.816531300E1 +1.571136000E3,4.597509459E1 +1.571387000E3,5.454256971E1 +1.571722000E3,5.262076426E1 +1.572010000E3,5.108681545E1 +1.572285000E3,5.269091247E1 +1.572547000E3,4.898785412E1 +1.572807000E3,4.867008841E1 +1.573066000E3,5.306545801E1 +1.573313000E3,5.092331160E1 +1.573694000E3,5.549117670E1 +1.574009000E3,5.304099104E1 +1.574279000E3,5.377011563E1 +1.574520000E3,5.244694975E1 +1.574770000E3,5.542353961E1 +1.575031000E3,5.327330735E1 +1.575319000E3,5.123065406E1 +1.575617000E3,5.429517947E1 +1.575867000E3,5.443507599E1 +1.576132000E3,5.273613947E1 +1.576382000E3,5.717979407E1 +1.576705000E3,5.184816589E1 +1.576955000E3,4.851208329E1 +1.577250000E3,4.976440939E1 +1.577493000E3,5.236737582E1 +1.577737000E3,5.414723297E1 +1.577998000E3,5.490706774E1 +1.578342000E3,5.591011545E1 +1.578650000E3,5.689754115E1 +1.578906000E3,5.680987850E1 +1.579148000E3,5.379415708E1 +1.579394000E3,5.844713665E1 +1.579644000E3,4.927798375E1 +1.580006000E3,5.263100090E1 +1.580294000E3,5.410513055E1 +1.580548000E3,5.541047194E1 +1.580801000E3,5.058665778E1 +1.581070000E3,5.191468462E1 +1.581349000E3,4.623838572E1 +1.581601000E3,4.883886927E1 +1.581851000E3,4.951159763E1 +1.582152000E3,5.372806241E1 +1.582461000E3,4.077427406E1 +1.582742000E3,4.089897224E1 +1.582967000E3,4.661834708E1 +1.583330000E3,4.498181641E1 +1.583574000E3,4.413204165E1 +1.583835000E3,4.830731952E1 +1.584102000E3,5.133890730E1 +1.584385000E3,5.327819620E1 +1.584689000E3,5.148788947E1 +1.584935000E3,5.259351261E1 +1.585217000E3,5.210912674E1 +1.585449000E3,5.375523399E1 +1.585710000E3,5.030792675E1 +1.585957000E3,5.116594607E1 +1.586271000E3,5.729332409E1 +1.586601000E3,5.372439258E1 +1.586868000E3,5.283683191E1 +1.587111000E3,5.261490358E1 +1.587371000E3,5.394382083E1 +1.587617000E3,5.362104804E1 +1.587861000E3,5.192909002E1 +1.588111000E3,5.534291684E1 +1.588356000E3,5.529045875E1 +1.588616000E3,5.723903943E1 +1.588878000E3,5.769467674E1 +1.589116000E3,5.686991669E1 +1.589367000E3,5.472851050E1 +1.589709000E3,5.509501284E1 +1.589971000E3,6.218794924E1 +1.590276000E3,5.544714813E1 +1.590522000E3,5.587492513E1 +1.590770000E3,6.310127100E1 +1.591031000E3,6.016601681E1 +1.591331000E3,5.868635044E1 +1.591588000E3,5.739907262E1 +1.591847000E3,5.500154159E1 +1.592105000E3,5.382353142E1 +1.592358000E3,5.235465349E1 +1.592660000E3,5.432444683E1 +1.592979000E3,5.583837344E1 +1.593280000E3,5.890777444E1 +1.593531000E3,6.247008348E1 +1.593777000E3,5.524440051E1 +1.594082000E3,6.039849382E1 +1.594376000E3,5.779880973E1 +1.594616000E3,6.006977904E1 +1.594916000E3,6.157791897E1 +1.595158000E3,5.727348505E1 +1.595456000E3,6.219777130E1 +1.595702000E3,6.333776727E1 +1.596011000E3,6.315243887E1 +1.596287000E3,5.622487117E1 +1.596582000E3,4.999384026E1 +1.596838000E3,6.052096287E1 +1.597136000E3,5.730636753E1 +1.597383000E3,5.672770046E1 +1.597632000E3,5.282894107E1 +1.597943000E3,5.609826115E1 +1.598240000E3,5.950608691E1 +1.598483000E3,5.262580449E1 +1.598777000E3,5.638403375E1 +1.599039000E3,5.695994656E1 +1.599354000E3,5.595638462E1 +1.599677000E3,5.456948793E1 +1.599955000E3,5.641745933E1 +1.600254000E3,5.373490010E1 +1.600541000E3,5.613295480E1 +1.600824000E3,5.295628543E1 +1.601071000E3,5.036371368E1 +1.601313000E3,5.734560753E1 +1.601585000E3,5.869799540E1 +1.601832000E3,5.689867309E1 +1.602079000E3,5.521901034E1 +1.602376000E3,5.958743796E1 +1.602630000E3,5.697555749E1 +1.602881000E3,6.067520996E1 +1.603136000E3,6.296730837E1 +1.603381000E3,6.302345663E1 +1.603674000E3,5.614231839E1 +1.603920000E3,5.471880748E1 +1.604179000E3,6.025548138E1 +1.604432000E3,5.848975602E1 +1.604677000E3,6.051353275E1 +1.604988000E3,6.061163824E1 +1.605287000E3,5.127173554E1 +1.605535000E3,5.271948405E1 +1.605890000E3,5.457177629E1 +1.606143000E3,5.047420148E1 +1.606392000E3,5.197178768E1 +1.606684000E3,5.635777628E1 +1.606927000E3,5.691931577E1 +1.607165000E3,5.135114371E1 +1.607440000E3,5.173034620E1 +1.607734000E3,5.786109434E1 +1.607974000E3,5.620528212E1 +1.608236000E3,5.432552885E1 +1.608507000E3,5.036034087E1 +1.608763000E3,4.872303481E1 +1.609123000E3,5.516764205E1 +1.609377000E3,5.867465981E1 +1.609624000E3,5.634077767E1 +1.609869000E3,5.153316916E1 +1.610150000E3,5.212022412E1 +1.610428000E3,5.727395868E1 +1.610681000E3,5.443759521E1 +1.610944000E3,5.599199613E1 +1.611242000E3,5.709063131E1 +1.611495000E3,5.747461955E1 +1.611762000E3,5.445378087E1 +1.612040000E3,5.178206799E1 +1.612294000E3,5.347146008E1 +1.612548000E3,5.695533984E1 +1.612791000E3,5.852885666E1 +1.613050000E3,5.349710519E1 +1.613354000E3,5.482274130E1 +1.613598000E3,5.580201302E1 +1.613898000E3,5.533013655E1 +1.614151000E3,5.307302798E1 +1.614404000E3,5.034267096E1 +1.614651000E3,5.096368681E1 +1.614959000E3,5.358615730E1 +1.615202000E3,5.402822959E1 +1.615565000E3,5.173226008E1 +1.615815000E3,5.317238447E1 +1.616120000E3,5.490271856E1 +1.616406000E3,5.760350961E1 +1.616712000E3,5.516631401E1 +1.616950000E3,5.344247717E1 +1.617197000E3,5.105574764E1 +1.617480000E3,5.297874749E1 +1.617726000E3,5.181083735E1 +1.617978000E3,5.504462581E1 +1.618236000E3,5.652623382E1 +1.618484000E3,5.850281135E1 +1.618804000E3,5.207268405E1 +1.619061000E3,4.595989093E1 +1.619309000E3,5.832875112E1 +1.619574000E3,5.691639889E1 +1.619831000E3,5.277897330E1 +1.620092000E3,5.634285556E1 +1.620390000E3,5.782897026E1 +1.620660000E3,6.167326244E1 +1.620905000E3,5.736569246E1 +1.621145000E3,6.422841213E1 +1.621400000E3,6.037316593E1 +1.621649000E3,5.869946609E1 +1.622005000E3,6.007663283E1 +1.622308000E3,5.750286676E1 +1.622551000E3,5.315958033E1 +1.622849000E3,5.996646537E1 +1.623085000E3,6.310656156E1 +1.623382000E3,6.410911411E1 +1.623620000E3,6.559322950E1 +1.623914000E3,6.191537215E1 +1.624148000E3,6.509401862E1 +1.624441000E3,6.149444047E1 +1.624676000E3,5.887830140E1 +1.624914000E3,5.333395699E1 +1.625242000E3,5.080509527E1 +1.625531000E3,5.208999136E1 +1.625827000E3,4.936268455E1 +1.626072000E3,4.620940228E1 +1.626384000E3,4.812346411E1 +1.626678000E3,5.508818133E1 +1.626931000E3,5.929414420E1 +1.627193000E3,5.798382987E1 +1.627446000E3,5.695027340E1 +1.627690000E3,6.200547811E1 +1.627940000E3,5.895921781E1 +1.628278000E3,5.832121877E1 +1.628595000E3,5.727506493E1 +1.628914000E3,5.676841787E1 +1.629164000E3,5.904549933E1 +1.629453000E3,6.079247221E1 +1.629705000E3,5.978532207E1 +1.629973000E3,6.204876077E1 +1.630223000E3,6.278691878E1 +1.630527000E3,5.775584326E1 +1.630780000E3,5.715423799E1 +1.631076000E3,5.993810238E1 +1.631416000E3,5.945816984E1 +1.631690000E3,5.911038375E1 +1.631989000E3,6.401318161E1 +1.632251000E3,6.288325429E1 +1.632577000E3,6.142114348E1 +1.632857000E3,6.027735545E1 +1.633125000E3,6.058800698E1 +1.633410000E3,6.197295377E1 +1.633713000E3,5.649410931E1 +1.633983000E3,5.349526422E1 +1.634267000E3,5.160473432E1 +1.634550000E3,5.471426263E1 +1.634881000E3,5.381566790E1 +1.635145000E3,5.592472168E1 +1.635394000E3,5.502963456E1 +1.635636000E3,5.458091777E1 +1.635914000E3,5.361113418E1 +1.636211000E3,5.972112366E1 +1.636510000E3,6.134956919E1 +1.636770000E3,6.291498703E1 +1.637018000E3,6.051799303E1 +1.637272000E3,5.800319143E1 +1.637535000E3,6.099184952E1 +1.637791000E3,6.192072936E1 +1.638191000E3,5.592689657E1 +1.638462000E3,5.015193522E1 +1.638759000E3,5.662906295E1 +1.638997000E3,6.189212385E1 +1.639312000E3,5.656112303E1 +1.639618000E3,5.827187766E1 +1.639922000E3,5.894515280E1 +1.640188000E3,5.379936676E1 +1.640446000E3,5.498271927E1 +1.640705000E3,5.883708769E1 +1.641003000E3,5.515786146E1 +1.641329000E3,5.323855564E1 +1.641593000E3,5.000482182E1 +1.641876000E3,5.182077324E1 +1.642101000E3,5.319082569E1 +1.642344000E3,6.611850928E1 +1.642626000E3,5.190424983E1 +1.642867000E3,5.081734830E1 +1.643118000E3,5.711045841E1 +1.643458000E3,5.520016906E1 +1.643723000E3,5.247062228E1 +1.643997000E3,5.309157546E1 +1.644256000E3,5.339769460E1 +1.644621000E3,5.982216134E1 +1.644883000E3,5.915424673E1 +1.645133000E3,5.849263499E1 +1.645426000E3,5.826666974E1 +1.645723000E3,5.673329902E1 +1.645972000E3,5.580417722E1 +1.646244000E3,5.457004449E1 +1.646473000E3,5.835958867E1 +1.646716000E3,5.599398637E1 +1.646958000E3,5.928075116E1 +1.647232000E3,5.394053714E1 +1.647507000E3,5.853879118E1 +1.647858000E3,5.674494648E1 +1.648113000E3,5.640074652E1 +1.648414000E3,5.694867796E1 +1.648656000E3,5.573466688E1 +1.648962000E3,5.556104957E1 +1.649254000E3,5.770712773E1 +1.649548000E3,5.765349227E1 +1.649790000E3,5.583875333E1 +1.650054000E3,6.321152276E1 +1.650306000E3,5.966047080E1 +1.650600000E3,5.502015578E1 +1.650872000E3,5.066616477E1 +1.651172000E3,5.442335496E1 +1.651440000E3,5.956947456E1 +1.651736000E3,5.798320450E1 +1.651979000E3,5.739040713E1 +1.652228000E3,5.803662120E1 +1.652491000E3,6.146613872E1 +1.652750000E3,5.929116619E1 +1.653021000E3,5.936282359E1 +1.653288000E3,5.853226920E1 +1.653570000E3,5.954415072E1 +1.653872000E3,5.749576278E1 +1.654250000E3,5.567111200E1 +1.654518000E3,6.059415807E1 +1.654812000E3,5.855300274E1 +1.655081000E3,5.797601107E1 +1.655350000E3,6.029475669E1 +1.655647000E3,5.264118678E1 +1.655893000E3,5.715075800E1 +1.656153000E3,5.787679223E1 +1.656407000E3,6.038334743E1 +1.656655000E3,6.038245752E1 +1.656912000E3,5.475945603E1 +1.657171000E3,5.661674174E1 +1.657473000E3,5.618877186E1 +1.657717000E3,5.712918740E1 +1.657972000E3,5.834783502E1 +1.658283000E3,6.198115012E1 +1.658526000E3,5.639977894E1 +1.658788000E3,5.416850689E1 +1.659089000E3,5.679686188E1 +1.659335000E3,5.697270686E1 +1.659619000E3,5.371836804E1 +1.659873000E3,6.082252986E1 +1.660120000E3,6.285201132E1 +1.660416000E3,6.088574857E1 +1.660728000E3,6.109109391E1 +1.661004000E3,5.861240224E1 +1.661283000E3,6.123850168E1 +1.661519000E3,5.849447684E1 +1.661821000E3,5.472352136E1 +1.662065000E3,5.502625911E1 +1.662312000E3,5.606436387E1 +1.662565000E3,5.546236927E1 +1.662845000E3,6.075823181E1 +1.663075000E3,5.951357638E1 +1.663350000E3,5.956681026E1 +1.663575000E3,5.780116333E1 +1.663928000E3,6.184122024E1 +1.664178000E3,5.626291699E1 +1.664419000E3,5.635545931E1 +1.664671000E3,5.487242490E1 +1.664936000E3,5.392872477E1 +1.665237000E3,5.658170902E1 +1.665476000E3,5.449322435E1 +1.665752000E3,5.111063749E1 +1.665997000E3,5.288359358E1 +1.666249000E3,5.825102048E1 +1.666508000E3,6.087585373E1 +1.666750000E3,5.822210598E1 +1.667110000E3,6.320270923E1 +1.667355000E3,5.563170163E1 +1.667628000E3,5.240635194E1 +1.667875000E3,5.485055122E1 +1.668144000E3,5.590209292E1 +1.668402000E3,5.750031923E1 +1.668648000E3,5.301598344E1 +1.668896000E3,5.208077776E1 +1.669157000E3,5.024112467E1 +1.669414000E3,5.530220423E1 +1.669710000E3,5.585178295E1 +1.669955000E3,5.443268015E1 +1.670292000E3,5.292974908E1 +1.670566000E3,5.501741168E1 +1.670818000E3,5.190433464E1 +1.671077000E3,5.602388651E1 +1.671384000E3,5.384205522E1 +1.671688000E3,5.355394771E1 +1.671956000E3,4.896600257E1 +1.672212000E3,4.457728928E1 +1.672483000E3,5.407780485E1 +1.672726000E3,5.808535163E1 +1.672991000E3,5.497589856E1 +1.673269000E3,5.816061182E1 +1.673625000E3,5.457220472E1 +1.673896000E3,5.852786772E1 +1.674165000E3,5.615855966E1 +1.674439000E3,5.901141794E1 +1.674702000E3,5.821771493E1 +1.675040000E3,5.533746886E1 +1.675330000E3,5.469332456E1 +1.675631000E3,5.895976057E1 +1.675867000E3,5.565047570E1 +1.676161000E3,5.342216333E1 +1.676431000E3,5.339304237E1 +1.676716000E3,5.196130631E1 +1.677075000E3,5.500129023E1 +1.677346000E3,5.649474234E1 +1.677614000E3,5.620691351E1 +1.677867000E3,5.756400488E1 +1.678112000E3,5.571225073E1 +1.678362000E3,6.171466353E1 +1.678655000E3,5.523245256E1 +1.678909000E3,5.780473196E1 +1.679167000E3,5.918101801E1 +1.679536000E3,5.449831587E1 +1.679788000E3,5.278747036E1 +1.680072000E3,5.502423006E1 +1.680392000E3,5.603218813E1 +1.680667000E3,5.681691969E1 +1.680917000E3,5.574952817E1 +1.681227000E3,5.747793831E1 +1.681510000E3,5.831554727E1 +1.681811000E3,5.823344802E1 +1.682073000E3,5.677197169E1 +1.682402000E3,5.423243511E1 +1.682746000E3,5.568639423E1 +1.683007000E3,5.601571559E1 +1.683297000E3,5.788588795E1 +1.683563000E3,5.178162942E1 +1.683805000E3,5.244727762E1 +1.684102000E3,5.504021082E1 +1.684342000E3,5.312145782E1 +1.684637000E3,5.266466104E1 +1.684875000E3,5.430143327E1 +1.685171000E3,5.731848010E1 +1.685409000E3,5.314967575E1 +1.685703000E3,5.210480680E1 +1.685940000E3,5.447962472E1 +1.686242000E3,5.671930258E1 +1.686480000E3,5.298653153E1 +1.686837000E3,5.390672385E1 +1.687083000E3,5.256535993E1 +1.687387000E3,5.295433262E1 +1.687686000E3,4.693434793E1 +1.687930000E3,5.264001548E1 +1.688191000E3,4.696703102E1 +1.688514000E3,5.290693761E1 +1.688768000E3,5.572289252E1 +1.689025000E3,5.629476293E1 +1.689331000E3,5.221395629E1 +1.689585000E3,5.553268928E1 +1.689905000E3,5.392885939E1 +1.690136000E3,5.613018872E1 +1.690432000E3,5.323144022E1 +1.690690000E3,5.426457319E1 +1.690988000E3,5.869511223E1 +1.691244000E3,5.724931575E1 +1.691548000E3,5.702890727E1 +1.691819000E3,5.957894946E1 +1.692068000E3,5.833323285E1 +1.692367000E3,5.920896731E1 +1.692598000E3,5.809066040E1 +1.692847000E3,5.683194919E1 +1.693218000E3,5.880411413E1 +1.693536000E3,5.430005356E1 +1.693836000E3,5.347827494E1 +1.694082000E3,5.139526617E1 +1.694323000E3,6.486669482E1 +1.694607000E3,5.827670564E1 +1.694879000E3,5.749070135E1 +1.695112000E3,5.439297467E1 +1.695418000E3,5.591879208E1 +1.695720000E3,5.984156108E1 +1.695978000E3,5.763450389E1 +1.696238000E3,5.535113951E1 +1.696577000E3,5.468640858E1 +1.696840000E3,5.145216534E1 +1.697142000E3,5.633820526E1 +1.697434000E3,5.961813260E1 +1.697672000E3,5.761348305E1 +1.697970000E3,5.587832748E1 +1.698213000E3,5.615239979E1 +1.698514000E3,6.142159571E1 +1.698744000E3,5.868747140E1 +1.699038000E3,5.639074769E1 +1.699277000E3,5.843791784E1 +1.699602000E3,5.580904726E1 +1.699849000E3,5.188032815E1 +1.700148000E3,6.050592844E1 +1.700415000E3,5.851925341E1 +1.700742000E3,5.754370303E1 +1.700996000E3,5.792652906E1 +1.701265000E3,5.809754284E1 +1.701543000E3,5.435013872E1 +1.701827000E3,5.364293620E1 +1.702095000E3,5.742174876E1 +1.702342000E3,5.921232761E1 +1.702597000E3,5.246613397E1 +1.702852000E3,5.865178399E1 +1.703188000E3,6.209648540E1 +1.703456000E3,5.783126524E1 +1.703723000E3,6.129722089E1 +1.704021000E3,6.159059582E1 +1.704258000E3,6.290365934E1 +1.704500000E3,5.899658178E1 +1.704744000E3,5.570772177E1 +1.705020000E3,6.042975914E1 +1.705281000E3,6.063911519E1 +1.705578000E3,5.667741437E1 +1.705818000E3,5.616948640E1 +1.706065000E3,5.809228765E1 +1.706440000E3,6.194892333E1 +1.706707000E3,5.510896653E1 +1.706968000E3,5.648771637E1 +1.707226000E3,5.451026369E1 +1.707530000E3,5.655237570E1 +1.707813000E3,6.342687376E1 +1.708096000E3,5.687609223E1 +1.708345000E3,5.784030597E1 +1.708587000E3,5.696931166E1 +1.708832000E3,5.826055047E1 +1.709133000E3,6.171963981E1 +1.709444000E3,6.289993620E1 +1.709785000E3,6.196750111E1 +1.710095000E3,6.021872673E1 +1.710401000E3,5.493999514E1 +1.710645000E3,5.748920917E1 +1.710951000E3,5.990748875E1 +1.711204000E3,5.995493625E1 +1.711504000E3,5.608393688E1 +1.711807000E3,6.225697969E1 +1.712052000E3,6.005399346E1 +1.712297000E3,6.276583246E1 +1.712594000E3,6.409669700E1 +1.712952000E3,5.846223798E1 +1.713249000E3,6.222377893E1 +1.713511000E3,6.179119431E1 +1.713770000E3,6.687160955E1 +1.714020000E3,6.224215114E1 +1.714281000E3,6.460780580E1 +1.714608000E3,6.323149402E1 +1.714900000E3,5.890183616E1 +1.715139000E3,6.173404899E1 +1.715438000E3,6.193562982E1 +1.715674000E3,6.231645929E1 +1.715912000E3,5.798536661E1 +1.716293000E3,5.569607438E1 +1.716537000E3,6.131866955E1 +1.716790000E3,5.896584959E1 +1.717096000E3,5.693976131E1 +1.717346000E3,5.531403594E1 +1.717631000E3,5.794989861E1 +1.717933000E3,5.594899441E1 +1.718204000E3,5.601359132E1 +1.718501000E3,5.861037671E1 +1.718741000E3,6.432265266E1 +1.719043000E3,6.182586376E1 +1.719355000E3,6.076827417E1 +1.719645000E3,5.634225228E1 +1.719943000E3,5.935070169E1 +1.720188000E3,5.856877062E1 +1.720486000E3,5.761843709E1 +1.720741000E3,5.935030376E1 +1.720985000E3,5.413194972E1 +1.721289000E3,5.939733818E1 +1.721553000E3,5.617827250E1 +1.721847000E3,5.807085988E1 +1.722091000E3,5.877044817E1 +1.722445000E3,6.593854232E1 +1.722681000E3,6.027114564E1 +1.722973000E3,5.866411762E1 +1.723271000E3,5.588604319E1 +1.723508000E3,5.958751798E1 +1.723800000E3,6.077290351E1 +1.724039000E3,5.722905231E1 +1.724338000E3,5.619905124E1 +1.724576000E3,5.628809107E1 +1.724876000E3,5.560357878E1 +1.725168000E3,5.447509555E1 +1.725542000E3,5.278892866E1 +1.725841000E3,4.816211457E1 +1.726139000E3,4.622333411E1 +1.726399000E3,4.728231882E1 +1.726691000E3,5.101510224E1 +1.726947000E3,4.725933617E1 +1.727273000E3,5.333398449E1 +1.727569000E3,5.518583989E1 +1.727808000E3,5.719998093E1 +1.728061000E3,5.375072532E1 +1.728352000E3,5.631849408E1 +1.728644000E3,5.232994659E1 +1.729024000E3,5.045911420E1 +1.729295000E3,4.931808913E1 +1.729541000E3,4.866846016E1 +1.729788000E3,5.127644661E1 +1.730054000E3,4.769951033E1 +1.730296000E3,5.553885299E1 +1.730573000E3,5.629080236E1 +1.730816000E3,5.218818952E1 +1.731119000E3,5.112756333E1 +1.731379000E3,5.524890032E1 +1.731688000E3,5.530134621E1 +1.731949000E3,5.451831728E1 +1.732288000E3,5.380962689E1 +1.732589000E3,5.754684503E1 +1.732833000E3,5.184401682E1 +1.733102000E3,5.011373730E1 +1.733369000E3,5.541779655E1 +1.733647000E3,5.983699601E1 +1.733886000E3,6.131428317E1 +1.734163000E3,6.052345820E1 +1.734405000E3,5.852692054E1 +1.734659000E3,5.861191265E1 +1.734933000E3,5.957936529E1 +1.735219000E3,5.639739849E1 +1.735540000E3,5.207917019E1 +1.735832000E3,4.548490451E1 +1.736112000E3,5.219897691E1 +1.736384000E3,5.618314188E1 +1.736684000E3,5.720418785E1 +1.736946000E3,5.895068629E1 +1.737213000E3,5.652216932E1 +1.737468000E3,5.796687034E1 +1.737738000E3,5.591197017E1 +1.737996000E3,5.493985473E1 +1.738236000E3,5.752137274E1 +1.738586000E3,6.041563952E1 +1.738921000E3,6.199530447E1 +1.739167000E3,5.310800091E1 +1.739430000E3,5.600574849E1 +1.739683000E3,6.494981167E1 +1.739952000E3,6.157046745E1 +1.740293000E3,6.002681302E1 +1.740611000E3,5.943541790E1 +1.740910000E3,5.731619793E1 +1.741197000E3,5.885751119E1 +1.741508000E3,5.719237093E1 +1.741767000E3,5.958897825E1 +1.742034000E3,5.543499582E1 +1.742424000E3,5.632783570E1 +1.742688000E3,5.565042743E1 +1.742946000E3,5.622883854E1 +1.743204000E3,6.327777019E1 +1.743456000E3,5.663098185E1 +1.743721000E3,5.729384715E1 +1.743966000E3,6.200582057E1 +1.744273000E3,5.107652622E1 +1.744505000E3,5.491520459E1 +1.744752000E3,5.181266373E1 +1.745004000E3,5.014115745E1 +1.745297000E3,5.338585031E1 +1.745690000E3,5.654477286E1 +1.745966000E3,5.517036116E1 +1.746219000E3,5.200430375E1 +1.746475000E3,5.963355448E1 +1.746732000E3,5.854837006E1 +1.747002000E3,5.571277949E1 +1.747293000E3,5.825116458E1 +1.747522000E3,5.673248340E1 +1.747772000E3,5.683320783E1 +1.748035000E3,5.224053713E1 +1.748289000E3,5.713452273E1 +1.748568000E3,5.539076360E1 +1.748961000E3,6.015893340E1 +1.749211000E3,5.710921188E1 +1.749460000E3,6.114476082E1 +1.749715000E3,5.648052368E1 +1.749961000E3,5.897720288E1 +1.750207000E3,5.525435431E1 +1.750521000E3,5.447453139E1 +1.750765000E3,5.883968686E1 +1.751015000E3,5.450160052E1 +1.751290000E3,5.405183560E1 +1.751522000E3,5.501343440E1 +1.751848000E3,5.586635599E1 +1.752096000E3,5.631573217E1 +1.752372000E3,5.960964241E1 +1.752637000E3,5.320710483E1 +1.752941000E3,5.848434869E1 +1.753209000E3,5.619196315E1 +1.753510000E3,5.692291103E1 +1.753774000E3,5.505374149E1 +1.754051000E3,5.721759821E1 +1.754315000E3,5.539152446E1 +1.754625000E3,5.632890174E1 +1.754919000E3,5.918851802E1 +1.755262000E3,5.807294381E1 +1.755529000E3,5.748451885E1 +1.755827000E3,6.055251826E1 +1.756067000E3,6.208050524E1 +1.756367000E3,5.991655048E1 +1.756607000E3,6.073519941E1 +1.756900000E3,5.774998130E1 +1.757144000E3,5.751173009E1 +1.757417000E3,5.299288378E1 +1.757700000E3,5.913293772E1 +1.758005000E3,5.732040664E1 +1.758269000E3,6.221202462E1 +1.758585000E3,6.285457626E1 +1.758834000E3,5.870613535E1 +1.759137000E3,5.533279687E1 +1.759391000E3,5.194643865E1 +1.759644000E3,4.891449850E1 +1.759922000E3,4.784429271E1 +1.760236000E3,5.273391136E1 +1.760503000E3,5.475616990E1 +1.760758000E3,5.640096860E1 +1.761017000E3,5.329458627E1 +1.761282000E3,4.798672737E1 +1.761535000E3,5.532988346E1 +1.761794000E3,5.189579265E1 +1.762040000E3,5.068357941E1 +1.762299000E3,5.751972157E1 +1.762578000E3,5.430434207E1 +1.762831000E3,5.331943982E1 +1.763136000E3,5.699367350E1 +1.763409000E3,5.622858108E1 +1.763658000E3,5.631559008E1 +1.763910000E3,5.738562920E1 +1.764157000E3,6.030103345E1 +1.764400000E3,5.680309722E1 +1.764695000E3,5.703631315E1 +1.765017000E3,5.682945247E1 +1.765300000E3,5.317093897E1 +1.765575000E3,5.620624417E1 +1.765832000E3,5.550075987E1 +1.766100000E3,6.321349509E1 +1.766371000E3,5.938123887E1 +1.766635000E3,6.289622107E1 +1.766898000E3,5.890101653E1 +1.767155000E3,5.928826732E1 +1.767399000E3,5.872890625E1 +1.767638000E3,6.184345237E1 +1.767877000E3,6.131073260E1 +1.768211000E3,6.085041665E1 +1.768587000E3,6.015418617E1 +1.768835000E3,5.648473324E1 +1.769119000E3,5.746059957E1 +1.769380000E3,5.608054299E1 +1.769692000E3,6.542458852E1 +1.769998000E3,6.121618195E1 +1.770281000E3,5.842785672E1 +1.770536000E3,5.763776595E1 +1.770858000E3,5.630873419E1 +1.771133000E3,5.339704361E1 +1.771378000E3,5.463873835E1 +1.771723000E3,5.659388596E1 +1.772050000E3,5.449836230E1 +1.772294000E3,5.154616724E1 +1.772537000E3,5.082603581E1 +1.772795000E3,5.334183734E1 +1.773055000E3,5.096094928E1 +1.773365000E3,5.171061147E1 +1.773612000E3,5.477281719E1 +1.773878000E3,5.060909259E1 +1.774171000E3,5.285294921E1 +1.774452000E3,5.393730531E1 +1.774725000E3,5.333400186E1 +1.774980000E3,5.285705613E1 +1.775346000E3,5.719168586E1 +1.775663000E3,5.642193929E1 +1.775908000E3,4.659059970E1 +1.776150000E3,5.521168672E1 +1.776388000E3,5.693500665E1 +1.776630000E3,6.030483668E1 +1.776910000E3,5.944095915E1 +1.777153000E3,5.708951289E1 +1.777414000E3,5.291982189E1 +1.777666000E3,5.900042024E1 +1.777935000E3,6.010949926E1 +1.778229000E3,6.009411695E1 +1.778514000E3,5.804757181E1 +1.778758000E3,5.922775473E1 +1.779011000E3,6.063545461E1 +1.779277000E3,5.950242674E1 +1.779575000E3,6.057891518E1 +1.779819000E3,6.050018223E1 +1.780115000E3,5.965583098E1 +1.780361000E3,5.651792502E1 +1.780660000E3,5.814099422E1 +1.780904000E3,5.340077797E1 +1.781203000E3,5.734973286E1 +1.781481000E3,5.846278011E1 +1.781805000E3,5.369751607E1 +1.782048000E3,5.229063054E1 +1.782299000E3,5.345996994E1 +1.782583000E3,5.724353788E1 +1.782883000E3,5.610772411E1 +1.783181000E3,5.272586700E1 +1.783423000E3,5.272075137E1 +1.783692000E3,5.495532717E1 +1.783945000E3,5.594785882E1 +1.784202000E3,5.914935612E1 +1.784483000E3,6.427791570E1 +1.784735000E3,6.185652247E1 +1.785051000E3,6.178338943E1 +1.785352000E3,6.304285312E1 +1.785598000E3,5.699176354E1 +1.785897000E3,5.705567192E1 +1.786190000E3,5.975757470E1 +1.786467000E3,6.092866408E1 +1.786714000E3,5.771726615E1 +1.786984000E3,5.434727511E1 +1.787232000E3,5.250796794E1 +1.787486000E3,5.668884634E1 +1.787813000E3,5.600600547E1 +1.788061000E3,5.162213387E1 +1.788391000E3,5.782497792E1 +1.788636000E3,5.900804565E1 +1.788935000E3,6.056317474E1 +1.789175000E3,5.749029459E1 +1.789469000E3,6.053654612E1 +1.789714000E3,5.841478287E1 +1.789988000E3,5.700130118E1 +1.790219000E3,5.562837186E1 +1.790509000E3,5.430369658E1 +1.790806000E3,5.586895515E1 +1.791048000E3,5.809725956E1 +1.791409000E3,5.552827992E1 +1.791650000E3,5.534472171E1 +1.791981000E3,5.671474363E1 +1.792227000E3,5.716453332E1 +1.792522000E3,5.844249975E1 +1.792847000E3,5.961186667E1 +1.793109000E3,5.794833541E1 +1.793437000E3,5.832360597E1 +1.793698000E3,5.996001578E1 +1.793970000E3,5.849924827E1 +1.794223000E3,5.823551411E1 +1.794488000E3,5.480450178E1 +1.794819000E3,5.715609034E1 +1.795083000E3,5.418083703E1 +1.795329000E3,5.529883425E1 +1.795587000E3,5.729455769E1 +1.795853000E3,5.358946536E1 +1.796083000E3,5.534684059E1 +1.796374000E3,5.693696454E1 +1.796630000E3,5.642610016E1 +1.796927000E3,5.692548294E1 +1.797194000E3,5.931602223E1 +1.797469000E3,5.877569790E1 +1.797716000E3,5.527135197E1 +1.798053000E3,5.904674814E1 +1.798358000E3,5.655039196E1 +1.798612000E3,5.796779928E1 +1.798921000E3,5.499199210E1 +1.799185000E3,5.693837926E1 +1.799465000E3,6.235855457E1 +1.799695000E3,6.271612813E1 +1.799964000E3,6.118271582E1 +1.800233000E3,6.171552449E1 +1.800562000E3,6.293258336E1 +1.800818000E3,5.927940855E1 +1.801077000E3,5.836879001E1 +1.801406000E3,6.182854437E1 +1.801650000E3,5.918527405E1 +1.801894000E3,6.352260837E1 +1.802163000E3,6.142940723E1 +1.802385000E3,5.867772092E1 +1.802631000E3,5.916688243E1 +1.802927000E3,5.855222781E1 +1.803228000E3,6.125789004E1 +1.803533000E3,5.839377949E1 +1.803816000E3,5.705167204E1 +1.804057000E3,5.641730344E1 +1.804362000E3,6.771092582E1 +1.804585000E3,6.036461449E1 +1.804835000E3,6.742095194E1 +1.805132000E3,6.133151855E1 +1.805443000E3,6.658554202E1 +1.805718000E3,7.095511769E1 +1.806003000E3,7.330553664E1 +1.806290000E3,6.732809523E1 +1.806566000E3,6.106403544E1 +1.806844000E3,5.830930506E1 +1.807085000E3,6.610455401E1 +1.807442000E3,5.944325189E1 +1.807800000E3,5.667454347E1 +1.808044000E3,5.560521877E1 +1.808299000E3,5.488377812E1 +1.808542000E3,5.279721650E1 +1.808789000E3,4.834692654E1 +1.809029000E3,4.661669368E1 +1.809276000E3,5.501186804E1 +1.809526000E3,5.384830085E1 +1.809820000E3,5.526588307E1 +1.810084000E3,5.900458249E1 +1.810393000E3,5.557146256E1 +1.810647000E3,5.355619280E1 +1.811023000E3,5.627924000E1 +1.811283000E3,5.384503050E1 +1.811527000E3,5.309622401E1 +1.811816000E3,5.228523776E1 +1.812070000E3,5.317657142E1 +1.812328000E3,5.813846570E1 +1.812583000E3,5.621088360E1 +1.812927000E3,5.646965227E1 +1.813191000E3,5.322001188E1 +1.813436000E3,5.451886743E1 +1.813748000E3,5.558621720E1 +1.814006000E3,5.673920724E1 +1.814328000E3,5.582855401E1 +1.814591000E3,6.044196407E1 +1.814848000E3,5.769208427E1 +1.815109000E3,6.206015086E1 +1.815391000E3,5.918173335E1 +1.815660000E3,5.779702061E1 +1.815927000E3,6.516398742E1 +1.816218000E3,5.927869783E1 +1.816546000E3,6.320256740E1 +1.816802000E3,6.296743684E1 +1.817051000E3,5.869001212E1 +1.817329000E3,5.985536664E1 +1.817620000E3,5.435607380E1 +1.817905000E3,5.721703373E1 +1.818148000E3,6.314389823E1 +1.818376000E3,6.116752308E1 +1.818622000E3,5.773611736E1 +1.818863000E3,5.892899245E1 +1.819138000E3,5.791411351E1 +1.819457000E3,6.283307798E1 +1.819719000E3,5.805008540E1 +1.819967000E3,6.383011196E1 +1.820266000E3,5.915938870E1 +1.820515000E3,5.795811325E1 +1.820871000E3,5.730398564E1 +1.821113000E3,5.907223014E1 +1.821388000E3,5.566469845E1 +1.821612000E3,5.223652040E1 +1.821858000E3,5.461868826E1 +1.822118000E3,5.731142265E1 +1.822388000E3,5.743609212E1 +1.822672000E3,6.147918645E1 +1.822919000E3,6.109678537E1 +1.823167000E3,5.654516230E1 +1.823464000E3,6.010058675E1 +1.823716000E3,6.101649690E1 +1.824046000E3,5.741898993E1 +1.824372000E3,5.654969113E1 +1.824629000E3,5.489877253E1 +1.824894000E3,6.410593751E1 +1.825142000E3,5.923267903E1 +1.825399000E3,5.977300321E1 +1.825683000E3,5.945891570E1 +1.825907000E3,5.799474745E1 +1.826162000E3,5.485933719E1 +1.826447000E3,5.848818620E1 +1.826697000E3,5.937282663E1 +1.826944000E3,5.473647239E1 +1.827319000E3,5.611635619E1 +1.827649000E3,5.704234375E1 +1.827909000E3,5.174683398E1 +1.828172000E3,5.243070089E1 +1.828457000E3,5.835398328E1 +1.828710000E3,6.579711207E1 +1.828969000E3,6.063158540E1 +1.829218000E3,5.379307224E1 +1.829474000E3,5.791005982E1 +1.829779000E3,5.908028356E1 +1.830025000E3,5.476368407E1 +1.830307000E3,5.608145667E1 +1.830627000E3,5.417323034E1 +1.830843000E3,5.295530865E1 +1.831087000E3,5.335160491E1 +1.831385000E3,5.274441298E1 +1.831622000E3,5.307477504E1 +1.831918000E3,5.606159985E1 +1.832155000E3,6.009472302E1 +1.832471000E3,5.380117674E1 +1.832766000E3,5.382200579E1 +1.833012000E3,5.176006230E1 +1.833256000E3,5.956343573E1 +1.833577000E3,5.545935306E1 +1.833826000E3,5.528541848E1 +1.834083000E3,5.436381252E1 +1.834373000E3,5.684307553E1 +1.834669000E3,5.352399464E1 +1.834910000E3,5.651184236E1 +1.835208000E3,5.432875840E1 +1.835453000E3,5.442576527E1 +1.835752000E3,5.643309342E1 +1.836022000E3,5.781174029E1 +1.836293000E3,6.110602518E1 +1.836557000E3,5.591856301E1 +1.836932000E3,5.423752303E1 +1.837200000E3,5.716598850E1 +1.837455000E3,5.511743414E1 +1.837716000E3,5.819026063E1 +1.837988000E3,5.728773522E1 +1.838236000E3,5.959151016E1 +1.838540000E3,5.810767345E1 +1.838799000E3,5.779128856E1 +1.839096000E3,6.092094761E1 +1.839361000E3,5.957871329E1 +1.839608000E3,5.838702884E1 +1.839856000E3,5.927631822E1 +1.840242000E3,5.748386760E1 +1.840516000E3,5.957609475E1 +1.840759000E3,5.688693666E1 +1.841054000E3,5.883374773E1 +1.841320000E3,5.769470339E1 +1.841597000E3,5.894509733E1 +1.841885000E3,6.032854908E1 +1.842190000E3,5.891601570E1 +1.842444000E3,5.957860612E1 +1.842691000E3,5.968229576E1 +1.842933000E3,5.829247522E1 +1.843258000E3,6.183086549E1 +1.843539000E3,6.077794792E1 +1.843765000E3,5.928253866E1 +1.844002000E3,5.782805396E1 +1.844301000E3,5.975447959E1 +1.844589000E3,6.108169982E1 +1.844825000E3,5.915565503E1 +1.845116000E3,5.981302437E1 +1.845363000E3,6.019248645E1 +1.845636000E3,6.014223773E1 +1.845861000E3,6.160258605E1 +1.846139000E3,6.002388007E1 +1.846447000E3,6.004612452E1 +1.846706000E3,5.932487324E1 +1.846979000E3,5.718424575E1 +1.847284000E3,5.712987240E1 +1.847586000E3,5.557624595E1 +1.847888000E3,5.603981815E1 +1.848146000E3,5.769591687E1 +1.848418000E3,5.526085696E1 +1.848706000E3,5.815102401E1 +1.848972000E3,5.884177354E1 +1.849226000E3,5.853138751E1 +1.849515000E3,6.156208919E1 +1.849746000E3,6.064923427E1 +1.850008000E3,6.590305387E1 +1.850338000E3,5.853444981E1 +1.850640000E3,5.717447935E1 +1.850942000E3,5.680568615E1 +1.851242000E3,5.928468331E1 +1.851504000E3,5.798449444E1 +1.851757000E3,5.802619768E1 +1.852033000E3,5.998338312E1 +1.852296000E3,5.683616594E1 +1.852550000E3,5.692327884E1 +1.852886000E3,5.878610583E1 +1.853162000E3,5.538467470E1 +1.853432000E3,5.437085520E1 +1.853738000E3,5.469765317E1 +1.854038000E3,5.790268038E1 +1.854297000E3,5.836787866E1 +1.854582000E3,6.160807622E1 +1.854881000E3,5.878613196E1 +1.855158000E3,6.200103199E1 +1.855387000E3,6.087479870E1 +1.855688000E3,6.028304140E1 +1.855930000E3,6.159527875E1 +1.856226000E3,6.082174354E1 +1.856487000E3,5.932314061E1 +1.856744000E3,5.976570730E1 +1.857001000E3,5.473753247E1 +1.857299000E3,5.954612483E1 +1.857556000E3,6.052388497E1 +1.857849000E3,5.848282940E1 +1.858086000E3,5.879664566E1 +1.858384000E3,5.864589973E1 +1.858677000E3,5.659242719E1 +1.858917000E3,5.683870091E1 +1.859195000E3,5.582498919E1 +1.859427000E3,6.011873423E1 +1.859676000E3,5.796702396E1 +1.859911000E3,5.928400715E1 +1.860149000E3,5.826876733E1 +1.860396000E3,6.038481253E1 +1.860680000E3,6.030085568E1 +1.860944000E3,5.890166619E1 +1.861209000E3,6.654379171E1 +1.861519000E3,6.016187265E1 +1.861755000E3,6.139297542E1 +1.862049000E3,6.289106669E1 +1.862388000E3,5.872946965E1 +1.862675000E3,5.800836625E1 +1.862993000E3,5.701819685E1 +1.863248000E3,5.488359846E1 +1.863519000E3,5.747446133E1 +1.863768000E3,5.996388232E1 +1.864087000E3,5.686047813E1 +1.864334000E3,5.935760915E1 +1.864635000E3,6.438349972E1 +1.864894000E3,6.008599590E1 +1.865205000E3,5.995474236E1 +1.865502000E3,6.596906108E1 +1.865837000E3,6.091064347E1 +1.866114000E3,5.885056970E1 +1.866411000E3,6.474486832E1 +1.866666000E3,5.888758286E1 +1.866964000E3,6.138447683E1 +1.867211000E3,6.032596684E1 +1.867482000E3,5.848476935E1 +1.867736000E3,5.631330849E1 +1.867989000E3,5.927138373E1 +1.868246000E3,5.817171672E1 +1.868499000E3,5.358065381E1 +1.868763000E3,5.500264039E1 +1.869129000E3,5.663946315E1 +1.869384000E3,5.601392416E1 +1.869636000E3,5.640732154E1 +1.869947000E3,5.320213962E1 +1.870207000E3,4.907811811E1 +1.870470000E3,5.784153600E1 +1.870743000E3,5.988355074E1 +1.871011000E3,5.973830135E1 +1.871253000E3,5.769679044E1 +1.871519000E3,5.395770126E1 +1.871765000E3,5.751088186E1 +1.872011000E3,5.342275719E1 +1.872301000E3,5.638616310E1 +1.872563000E3,5.124369984E1 +1.872821000E3,5.357036185E1 +1.873129000E3,5.529809524E1 +1.873386000E3,5.442720524E1 +1.873650000E3,5.306298792E1 +1.873937000E3,5.703507672E1 +1.874184000E3,5.835246426E1 +1.874444000E3,5.638184247E1 +1.874707000E3,5.201779537E1 +1.874972000E3,5.217149520E1 +1.875244000E3,5.757612416E1 +1.875577000E3,5.387788750E1 +1.875865000E3,5.607108884E1 +1.876149000E3,5.692352283E1 +1.876407000E3,5.577296536E1 +1.876687000E3,5.259836493E1 +1.876982000E3,5.467571766E1 +1.877215000E3,5.256317748E1 +1.877521000E3,5.522593862E1 +1.877775000E3,5.432669245E1 +1.878036000E3,5.734031668E1 +1.878314000E3,6.027566119E1 +1.878587000E3,5.567003578E1 +1.878912000E3,5.307720644E1 +1.879176000E3,5.659939353E1 +1.879425000E3,5.110556861E1 +1.879723000E3,5.673190580E1 +1.879969000E3,5.437112204E1 +1.880274000E3,5.433297742E1 +1.880576000E3,5.585075865E1 +1.880875000E3,5.657006430E1 +1.881117000E3,5.701623858E1 +1.881424000E3,5.749679466E1 +1.881673000E3,5.623079196E1 +1.881986000E3,5.545187468E1 +1.882329000E3,5.781610131E1 +1.882611000E3,5.432916720E1 +1.882882000E3,4.940287270E1 +1.883127000E3,5.866223377E1 +1.883391000E3,5.654564177E1 +1.883644000E3,5.888782218E1 +1.883889000E3,5.586307703E1 +1.884148000E3,5.930725555E1 +1.884413000E3,5.963840788E1 +1.884660000E3,5.928611951E1 +1.884926000E3,5.621968819E1 +1.885181000E3,5.811455305E1 +1.885457000E3,5.585646129E1 +1.885714000E3,5.989591718E1 +1.885968000E3,6.058402104E1 +1.886267000E3,5.972100226E1 +1.886517000E3,6.220704457E1 +1.886832000E3,6.037773435E1 +1.887106000E3,6.039308032E1 +1.887385000E3,6.223647696E1 +1.887617000E3,5.854088114E1 +1.887876000E3,6.248517888E1 +1.888128000E3,6.222318884E1 +1.888437000E3,6.070320114E1 +1.888777000E3,5.817372188E1 +1.889076000E3,5.382250608E1 +1.889369000E3,7.004593531E1 +1.889616000E3,6.094415751E1 +1.889913000E3,5.455584628E1 +1.890163000E3,5.387250795E1 +1.890418000E3,5.219742496E1 +1.890714000E3,5.070715955E1 +1.890961000E3,5.362651533E1 +1.891207000E3,5.046817004E1 +1.891453000E3,5.129339201E1 +1.891764000E3,4.856730286E1 +1.892053000E3,5.220705734E1 +1.892321000E3,5.401068171E1 +1.892582000E3,5.109746146E1 +1.892834000E3,5.412675897E1 +1.893090000E3,5.347014573E1 +1.893340000E3,5.092720593E1 +1.893620000E3,5.341316175E1 +1.893886000E3,4.870918930E1 +1.894142000E3,4.929590175E1 +1.894389000E3,4.686294330E1 +1.894692000E3,5.100486031E1 +1.894995000E3,5.087478993E1 +1.895328000E3,4.940372977E1 +1.895606000E3,5.362468443E1 +1.895919000E3,5.608826750E1 +1.896241000E3,5.628756413E1 +1.896497000E3,5.817843169E1 +1.896749000E3,5.809119715E1 +1.897054000E3,5.469613872E1 +1.897287000E3,5.437807476E1 +1.897582000E3,5.794761863E1 +1.897897000E3,6.027023965E1 +1.898145000E3,5.913564460E1 +1.898511000E3,5.510014788E1 +1.898752000E3,5.499817732E1 +1.898999000E3,5.569220222E1 +1.899294000E3,5.368447548E1 +1.899547000E3,5.912109227E1 +1.899841000E3,6.076259223E1 +1.900104000E3,6.153129043E1 +1.900349000E3,5.679462536E1 +1.900634000E3,5.721135074E1 +1.900927000E3,5.674745728E1 +1.901166000E3,5.556227882E1 +1.901462000E3,4.994603734E1 +1.901841000E3,5.122656475E1 +1.902183000E3,5.127903645E1 +1.902436000E3,5.042064547E1 +1.902695000E3,5.425673681E1 +1.902998000E3,5.484388956E1 +1.903228000E3,5.322356297E1 +1.903483000E3,5.161093724E1 +1.903730000E3,5.302125687E1 +1.904019000E3,5.241958307E1 +1.904307000E3,5.116604316E1 +1.904614000E3,5.319513233E1 +1.904991000E3,5.530482451E1 +1.905243000E3,5.829713614E1 +1.905528000E3,4.891404960E1 +1.905774000E3,5.408250868E1 +1.906083000E3,5.272747143E1 +1.906381000E3,5.216068921E1 +1.906624000E3,5.292203291E1 +1.906885000E3,5.243548019E1 +1.907149000E3,4.981562618E1 +1.907448000E3,5.500279348E1 +1.907742000E3,5.481190601E1 +1.907999000E3,5.369800103E1 +1.908315000E3,6.390197571E1 +1.908579000E3,6.517990141E1 +1.908825000E3,5.822949910E1 +1.909064000E3,5.655728640E1 +1.909356000E3,5.292186662E1 +1.909600000E3,5.069372058E1 +1.909895000E3,5.368100654E1 +1.910138000E3,5.616508462E1 +1.910432000E3,6.285923815E1 +1.910670000E3,6.254266196E1 +1.910979000E3,5.628599605E1 +1.911260000E3,5.616383984E1 +1.911482000E3,5.074231882E1 +1.911728000E3,5.398858859E1 +1.911977000E3,5.585565083E1 +1.912237000E3,5.777112626E1 +1.912532000E3,6.036032129E1 +1.912783000E3,6.077032608E1 +1.913052000E3,5.839282786E1 +1.913316000E3,5.397912726E1 +1.913575000E3,5.582771928E1 +1.913848000E3,5.579334158E1 +1.914143000E3,5.778281485E1 +1.914450000E3,5.783459906E1 +1.914713000E3,6.199387267E1 +1.914943000E3,6.173706737E1 +1.915185000E3,5.621060236E1 +1.915433000E3,5.563784893E1 +1.915692000E3,5.470990272E1 +1.915951000E3,5.469960060E1 +1.916217000E3,6.171536544E1 +1.916470000E3,5.862130066E1 +1.916777000E3,5.839467924E1 +1.917028000E3,5.552209731E1 +1.917324000E3,5.763067987E1 +1.917687000E3,5.981653815E1 +1.917967000E3,5.790518789E1 +1.918210000E3,5.220287871E1 +1.918457000E3,5.707286116E1 +1.918759000E3,5.657529642E1 +1.918997000E3,6.000130629E1 +1.919241000E3,5.708419446E1 +1.919496000E3,5.749223221E1 +1.919768000E3,5.843781753E1 +1.920074000E3,5.671929683E1 +1.920373000E3,5.881070992E1 +1.920621000E3,5.603223824E1 +1.920956000E3,6.053511488E1 +1.921216000E3,5.525745837E1 +1.921476000E3,6.186721324E1 +1.921723000E3,6.214292360E1 +1.922025000E3,5.857206109E1 +1.922320000E3,5.934438900E1 +1.922561000E3,6.077867207E1 +1.922860000E3,5.578255978E1 +1.923099000E3,5.723807446E1 +1.923347000E3,5.785786452E1 +1.923636000E3,6.037753633E1 +1.923892000E3,6.106459696E1 +1.924223000E3,5.873119773E1 +1.924511000E3,5.862235861E1 +1.924814000E3,5.732521131E1 +1.925070000E3,5.161553090E1 +1.925373000E3,5.243351685E1 +1.925626000E3,5.041805469E1 +1.925919000E3,5.543714980E1 +1.926175000E3,5.338657816E1 +1.926425000E3,5.616854022E1 +1.926695000E3,5.699328540E1 +1.926965000E3,5.787312270E1 +1.927305000E3,5.558473925E1 +1.927614000E3,5.927685087E1 +1.927880000E3,6.254706193E1 +1.928125000E3,6.079427969E1 +1.928390000E3,5.412440784E1 +1.928634000E3,5.441834540E1 +1.928928000E3,5.220486428E1 +1.929215000E3,5.210908233E1 +1.929515000E3,5.352367419E1 +1.929766000E3,5.356350702E1 +1.930022000E3,5.184851991E1 +1.930322000E3,5.311742835E1 +1.930607000E3,5.453786592E1 +1.930870000E3,5.814140937E1 +1.931155000E3,5.779656646E1 +1.931440000E3,5.488757891E1 +1.931727000E3,5.385182390E1 +1.931981000E3,5.705491580E1 +1.932229000E3,5.576165296E1 +1.932491000E3,5.781333383E1 +1.932730000E3,5.616780300E1 +1.932971000E3,5.400230043E1 +1.933232000E3,5.518627884E1 +1.933510000E3,5.211300688E1 +1.933795000E3,5.292820587E1 +1.934127000E3,5.382097927E1 +1.934390000E3,6.102840439E1 +1.934671000E3,5.486275546E1 +1.934948000E3,5.206103103E1 +1.935198000E3,5.739150099E1 +1.935506000E3,5.310844778E1 +1.935756000E3,5.392681604E1 +1.936008000E3,5.250003264E1 +1.936256000E3,5.801399662E1 +1.936524000E3,5.696032820E1 +1.936785000E3,5.414492013E1 +1.937032000E3,5.536982174E1 +1.937391000E3,5.750979970E1 +1.937677000E3,5.370086514E1 +1.937972000E3,5.359409099E1 +1.938241000E3,4.663692517E1 +1.938508000E3,4.740501122E1 +1.938772000E3,4.812116539E1 +1.939051000E3,4.940260018E1 +1.939311000E3,5.211533825E1 +1.939553000E3,5.351181789E1 +1.939796000E3,5.597808269E1 +1.940081000E3,5.841474518E1 +1.940347000E3,5.900966915E1 +1.940680000E3,5.844032848E1 +1.940932000E3,6.047778057E1 +1.941187000E3,6.179458512E1 +1.941488000E3,5.569784051E1 +1.941730000E3,5.535681081E1 +1.941971000E3,5.409739450E1 +1.942227000E3,5.551927029E1 +1.942555000E3,5.259381649E1 +1.942855000E3,5.090743186E1 +1.943101000E3,5.330610416E1 +1.943383000E3,5.722147303E1 +1.943610000E3,5.564867598E1 +1.944013000E3,5.456395907E1 +1.944265000E3,5.442943523E1 +1.944557000E3,5.982581487E1 +1.944820000E3,5.751114261E1 +1.945081000E3,5.998630171E1 +1.945333000E3,5.908382499E1 +1.945646000E3,5.828329647E1 +1.945951000E3,5.602282904E1 +1.946199000E3,6.197108249E1 +1.946496000E3,5.533258874E1 +1.946770000E3,5.704060455E1 +1.947126000E3,5.457797110E1 +1.947363000E3,5.430717613E1 +1.947637000E3,5.940687974E1 +1.947953000E3,5.436076271E1 +1.948235000E3,5.660912008E1 +1.948550000E3,5.504399315E1 +1.948861000E3,5.464999644E1 +1.949122000E3,5.565806372E1 +1.949384000E3,5.190569146E1 +1.949646000E3,5.153937000E1 +1.949972000E3,5.628803963E1 +1.950248000E3,5.966716422E1 +1.950577000E3,5.820503815E1 +1.950822000E3,5.652058726E1 +1.951118000E3,5.802645793E1 +1.951349000E3,5.727916959E1 +1.951597000E3,5.784165576E1 +1.951900000E3,5.999225852E1 +1.952197000E3,6.048891831E1 +1.952433000E3,5.821794698E1 +1.952728000E3,5.416701806E1 +1.952964000E3,5.183738883E1 +1.953295000E3,5.384161890E1 +1.953675000E3,5.430376660E1 +1.953907000E3,5.257088063E1 +1.954151000E3,5.392186903E1 +1.954431000E3,6.167467738E1 +1.954678000E3,5.958790115E1 +1.954923000E3,5.822018477E1 +1.955185000E3,5.808448347E1 +1.955447000E3,5.733347749E1 +1.955703000E3,6.261390980E1 +1.956005000E3,5.829281758E1 +1.956246000E3,5.949056653E1 +1.956541000E3,5.839747914E1 +1.956810000E3,5.770882066E1 +1.957120000E3,5.690637302E1 +1.957421000E3,5.796705847E1 +1.957668000E3,5.867770180E1 +1.957936000E3,5.696585443E1 +1.958216000E3,5.738908049E1 +1.958463000E3,5.842272770E1 +1.958721000E3,5.966072568E1 +1.959033000E3,6.340725612E1 +1.959281000E3,6.193544465E1 +1.959566000E3,5.927164536E1 +1.959888000E3,6.146900670E1 +1.960249000E3,6.270186363E1 +1.960512000E3,5.695216686E1 +1.960779000E3,5.725758836E1 +1.961040000E3,5.788439963E1 +1.961303000E3,6.286977927E1 +1.961557000E3,6.361469653E1 +1.961802000E3,6.277422462E1 +1.962060000E3,6.032704022E1 +1.962310000E3,5.600516510E1 +1.962586000E3,6.188879617E1 +1.962805000E3,6.271522018E1 +1.963107000E3,6.025198847E1 +1.963453000E3,6.001529679E1 +1.963728000E3,5.375240125E1 +1.964036000E3,5.055228276E1 +1.964331000E3,5.257092943E1 +1.964568000E3,5.708661900E1 +1.964868000E3,5.629448239E1 +1.965178000E3,5.425890416E1 +1.965431000E3,5.575014937E1 +1.965679000E3,5.801461965E1 +1.965931000E3,5.400244473E1 +1.966191000E3,5.474887871E1 +1.966525000E3,5.196538635E1 +1.966783000E3,5.536524974E1 +1.967040000E3,5.974878933E1 +1.967338000E3,6.200932986E1 +1.967644000E3,6.295299888E1 +1.967909000E3,6.272635154E1 +1.968153000E3,5.902465660E1 +1.968474000E3,5.897159976E1 +1.968773000E3,5.506910037E1 +1.969014000E3,5.622897524E1 +1.969254000E3,5.457019516E1 +1.969505000E3,5.648049168E1 +1.969892000E3,5.656883155E1 +1.970152000E3,5.598423772E1 +1.970446000E3,5.186768597E1 +1.970726000E3,5.526177698E1 +1.971020000E3,5.810907246E1 +1.971304000E3,5.262875480E1 +1.971613000E3,5.141696402E1 +1.971915000E3,5.298264424E1 +1.972196000E3,5.641801556E1 +1.972483000E3,5.228737642E1 +1.972725000E3,5.649656740E1 +1.973036000E3,5.867645632E1 +1.973323000E3,5.679238187E1 +1.973633000E3,5.959682402E1 +1.973935000E3,5.617109756E1 +1.974236000E3,5.473085666E1 +1.974547000E3,5.589564412E1 +1.974836000E3,5.691193712E1 +1.975136000E3,5.808545953E1 +1.975385000E3,5.922478363E1 +1.975631000E3,5.707996013E1 +1.975881000E3,5.820923707E1 +1.976194000E3,5.897957095E1 +1.976453000E3,6.019944728E1 +1.976814000E3,6.472960186E1 +1.977076000E3,6.312075290E1 +1.977356000E3,5.886370461E1 +1.977618000E3,5.750754913E1 +1.977917000E3,5.531180501E1 +1.978189000E3,5.815410032E1 +1.978463000E3,5.735965971E1 +1.978732000E3,5.593071322E1 +1.978999000E3,5.835041964E1 +1.979245000E3,5.646810288E1 +1.979493000E3,5.392299875E1 +1.979902000E3,5.430590311E1 +1.980142000E3,5.447583546E1 +1.980384000E3,5.260389735E1 +1.980632000E3,5.537561423E1 +1.980873000E3,5.836960119E1 +1.981120000E3,5.425821286E1 +1.981389000E3,5.153336720E1 +1.981618000E3,5.420085973E1 +1.981915000E3,5.457985954E1 +1.982165000E3,5.637026749E1 +1.982404000E3,6.009656118E1 +1.982718000E3,5.903298531E1 +1.983029000E3,5.665152425E1 +1.983296000E3,5.778918758E1 +1.983538000E3,5.444374512E1 +1.983786000E3,5.619088618E1 +1.984047000E3,6.088482249E1 +1.984304000E3,5.678390940E1 +1.984575000E3,5.873820942E1 +1.984842000E3,6.004736340E1 +1.985142000E3,6.191465398E1 +1.985405000E3,6.154032648E1 +1.985653000E3,5.967034113E1 +1.985913000E3,5.855925349E1 +1.986211000E3,5.529356341E1 +1.986557000E3,5.823190054E1 +1.986847000E3,5.749679599E1 +1.987098000E3,5.855123449E1 +1.987369000E3,5.999203293E1 +1.987610000E3,6.139424716E1 +1.987876000E3,5.730078222E1 +1.988126000E3,5.649537684E1 +1.988425000E3,5.872458305E1 +1.988727000E3,5.704322852E1 +1.989024000E3,6.264447151E1 +1.989326000E3,5.763604303E1 +1.989641000E3,5.657919006E1 +1.989961000E3,5.706004491E1 +1.990255000E3,6.115159729E1 +1.990571000E3,5.721964371E1 +1.990829000E3,5.780420781E1 +1.991088000E3,5.782228640E1 +1.991353000E3,5.791642518E1 +1.991611000E3,5.820065680E1 +1.991935000E3,5.675756460E1 +1.992174000E3,5.720433643E1 +1.992482000E3,5.907701380E1 +1.992770000E3,5.791335620E1 +1.993107000E3,5.504589678E1 +1.993369000E3,6.117578252E1 +1.993619000E3,5.902046786E1 +1.993912000E3,6.024153080E1 +1.994216000E3,6.061721402E1 +1.994464000E3,6.185610038E1 +1.994715000E3,5.902440055E1 +1.995005000E3,6.112374185E1 +1.995249000E3,5.664710018E1 +1.995551000E3,5.841351492E1 +1.995787000E3,5.961393992E1 +1.996119000E3,5.614463215E1 +1.996387000E3,5.528223904E1 +1.996647000E3,5.706960328E1 +1.996947000E3,5.544195306E1 +1.997203000E3,5.747091679E1 +1.997452000E3,5.434233120E1 +1.997769000E3,5.794847441E1 +1.998019000E3,5.504963001E1 +1.998267000E3,5.470768853E1 +1.998498000E3,6.426300701E1 +1.998789000E3,6.070245213E1 +1.999090000E3,5.893271279E1 +1.999390000E3,5.873668669E1 +1.999698000E3,6.355663744E1 +1.999962000E3,6.500393379E1 +2.000214000E3,6.177640112E1 +2.000471000E3,6.122167361E1 +2.000775000E3,5.982616779E1 +2.001079000E3,5.944943300E1 +2.001339000E3,5.772707313E1 +2.001595000E3,5.934980117E1 +2.001862000E3,6.221301291E1 +2.002160000E3,6.098009785E1 +2.002491000E3,6.205877653E1 +2.002758000E3,5.978743388E1 +2.003062000E3,6.141065367E1 +2.003307000E3,6.146860620E1 +2.003555000E3,6.323368939E1 +2.003884000E3,6.072009355E1 +2.004185000E3,6.072017978E1 +2.004424000E3,6.079512782E1 +2.004673000E3,6.651000141E1 +2.004939000E3,6.185812181E1 +2.005202000E3,5.705353418E1 +2.005472000E3,5.820400818E1 +2.005800000E3,5.682542431E1 +2.006070000E3,6.224932691E1 +2.006350000E3,5.654791681E1 +2.006601000E3,6.160831985E1 +2.006857000E3,6.443497299E1 +2.007101000E3,6.091208862E1 +2.007395000E3,5.867323811E1 +2.007635000E3,5.850229824E1 +2.007945000E3,6.307832054E1 +2.008197000E3,5.931313312E1 +2.008453000E3,5.632990721E1 +2.008711000E3,5.662998085E1 +2.009032000E3,5.416655753E1 +2.009268000E3,6.273936844E1 +2.009521000E3,6.129068926E1 +2.009786000E3,6.485712301E1 +2.010037000E3,6.605690213E1 +2.010298000E3,6.243431425E1 +2.010541000E3,6.062714733E1 +2.010780000E3,6.369220544E1 +2.011082000E3,5.933701247E1 +2.011330000E3,6.141658123E1 +2.011605000E3,6.232326760E1 +2.011893000E3,5.983132844E1 +2.012226000E3,6.085684837E1 +2.012489000E3,5.844434641E1 +2.012752000E3,5.992485437E1 +2.013005000E3,5.745164278E1 +2.013272000E3,5.489362140E1 +2.013573000E3,5.734004331E1 +2.013861000E3,5.569303233E1 +2.014170000E3,5.619919203E1 +2.014467000E3,5.719248521E1 +2.014715000E3,5.898607642E1 +2.015015000E3,5.312334941E1 +2.015258000E3,4.707687024E1 +2.015594000E3,5.326213693E1 +2.015822000E3,4.977107581E1 +2.016071000E3,5.399380901E1 +2.016333000E3,5.528915982E1 +2.016634000E3,5.648344312E1 +2.016879000E3,5.853194276E1 +2.017143000E3,5.969968429E1 +2.017429000E3,6.121498547E1 +2.017723000E3,5.933414775E1 +2.017961000E3,6.375558171E1 +2.018248000E3,6.102538403E1 +2.018558000E3,6.066629858E1 +2.018830000E3,5.238394429E1 +2.019065000E3,5.528030903E1 +2.019316000E3,5.711235169E1 +2.019578000E3,6.069913503E1 +2.019847000E3,5.344730110E1 +2.020093000E3,5.593398360E1 +2.020413000E3,5.112453486E1 +2.020668000E3,5.529600172E1 +2.020922000E3,5.816841553E1 +2.021177000E3,6.105447683E1 +2.021449000E3,5.967528890E1 +2.021707000E3,5.677568689E1 +2.022115000E3,5.613246875E1 +2.022403000E3,5.846674311E1 +2.022679000E3,5.999468936E1 +2.022930000E3,6.268951545E1 +2.023232000E3,6.037378186E1 +2.023532000E3,6.123290650E1 +2.023784000E3,6.425880775E1 +2.024094000E3,6.043334594E1 +2.024356000E3,6.287321918E1 +2.024616000E3,6.178703582E1 +2.024868000E3,5.974424575E1 +2.025152000E3,5.863905018E1 +2.025429000E3,5.669082005E1 +2.025716000E3,6.192616195E1 +2.026008000E3,6.367561928E1 +2.026300000E3,6.061621393E1 +2.026543000E3,6.411900249E1 +2.026802000E3,6.060951858E1 +2.027066000E3,5.606119041E1 +2.027395000E3,5.099901519E1 +2.027693000E3,5.622472082E1 +2.027945000E3,5.354940616E1 +2.028237000E3,6.282566888E1 +2.028553000E3,5.775523802E1 +2.028868000E3,6.095006183E1 +2.029133000E3,6.333727439E1 +2.029399000E3,5.925545982E1 +2.029660000E3,6.045827699E1 +2.029962000E3,5.594587825E1 +2.030223000E3,5.708579081E1 +2.030478000E3,5.777704597E1 +2.030737000E3,5.406349508E1 +2.030990000E3,5.544037764E1 +2.031246000E3,5.912518025E1 +2.031508000E3,5.924806900E1 +2.031864000E3,6.105667153E1 +2.032110000E3,5.838466956E1 +2.032350000E3,5.923100201E1 +2.032598000E3,6.024290558E1 +2.032866000E3,5.971089342E1 +2.033112000E3,5.478665804E1 +2.033351000E3,5.966531235E1 +2.033644000E3,5.755565544E1 +2.033892000E3,5.982004182E1 +2.034190000E3,5.797424789E1 +2.034425000E3,5.856301863E1 +2.034717000E3,6.325478319E1 +2.035053000E3,6.168254294E1 +2.035364000E3,6.188857455E1 +2.035619000E3,6.156039581E1 +2.035901000E3,6.235770270E1 +2.036169000E3,6.262779828E1 +2.036471000E3,6.142542176E1 +2.036764000E3,5.923845966E1 +2.037022000E3,5.827266837E1 +2.037307000E3,6.314641141E1 +2.037615000E3,5.460230698E1 +2.037870000E3,5.396400232E1 +2.038120000E3,5.561122002E1 +2.038463000E3,5.928400391E1 +2.038767000E3,5.668934966E1 +2.039069000E3,5.831653467E1 +2.039316000E3,5.267103167E1 +2.039622000E3,5.557794232E1 +2.039859000E3,5.543606804E1 +2.040196000E3,5.836770370E1 +2.040499000E3,5.678092478E1 +2.040751000E3,5.612506795E1 +2.041024000E3,5.868430679E1 +2.041274000E3,5.264121586E1 +2.041581000E3,5.828774790E1 +2.041841000E3,5.647338053E1 +2.042088000E3,6.053709731E1 +2.042403000E3,5.614689861E1 +2.042691000E3,5.714845923E1 +2.042944000E3,5.256418368E1 +2.043191000E3,5.601486494E1 +2.043466000E3,5.810869150E1 +2.043715000E3,5.529893852E1 +2.043979000E3,5.708153712E1 +2.044245000E3,5.690179830E1 +2.044568000E3,5.994555064E1 +2.044825000E3,6.172126409E1 +2.045096000E3,6.015473895E1 +2.045377000E3,5.509344178E1 +2.045629000E3,5.568915719E1 +2.045902000E3,5.938619751E1 +2.046155000E3,5.534852098E1 +2.046409000E3,5.905391706E1 +2.046693000E3,5.250115201E1 +2.046947000E3,5.587771233E1 +2.047277000E3,5.599930929E1 +2.047517000E3,5.586822515E1 +2.047803000E3,5.740436533E1 +2.048105000E3,5.413600866E1 +2.048476000E3,5.595836709E1 +2.048737000E3,5.982743631E1 +2.048992000E3,6.001131240E1 +2.049305000E3,5.629713962E1 +2.049568000E3,5.505265617E1 +2.049904000E3,5.686004167E1 +2.050199000E3,6.078932545E1 +2.050470000E3,5.919030857E1 +2.050773000E3,5.640754436E1 +2.051052000E3,5.864124078E1 +2.051311000E3,5.683150656E1 +2.051642000E3,5.391893615E1 +2.051926000E3,4.513639699E1 +2.052174000E3,5.750824000E1 +2.052467000E3,5.945309138E1 +2.052703000E3,6.260915402E1 +2.052981000E3,6.017408744E1 +2.053276000E3,6.158293130E1 +2.053516000E3,6.279041899E1 +2.053759000E3,6.005362243E1 +2.054030000E3,5.776050932E1 +2.054357000E3,5.906607942E1 +2.054642000E3,6.002924771E1 +2.054978000E3,5.708591672E1 +2.055267000E3,5.932996992E1 +2.055552000E3,5.830703641E1 +2.055812000E3,5.428102985E1 +2.056063000E3,5.893384546E1 +2.056382000E3,6.028305726E1 +2.056682000E3,5.904357096E1 +2.056923000E3,6.015407432E1 +2.057171000E3,5.801677968E1 +2.057418000E3,6.561794532E1 +2.057665000E3,6.751214025E1 +2.057959000E3,5.899748641E1 +2.058279000E3,5.616162884E1 +2.058571000E3,5.813941707E1 +2.058834000E3,6.236684118E1 +2.059132000E3,6.058455193E1 +2.059376000E3,6.004963560E1 +2.059687000E3,6.255152045E1 +2.059984000E3,6.155697025E1 +2.060225000E3,6.124056229E1 +2.060517000E3,6.072549607E1 +2.060756000E3,6.119225814E1 +2.061060000E3,5.953618039E1 +2.061302000E3,5.869582322E1 +2.061578000E3,6.248269042E1 +2.061841000E3,6.070173510E1 +2.062089000E3,6.023992255E1 +2.062337000E3,5.848175462E1 +2.062607000E3,5.092907116E1 +2.062859000E3,5.442118268E1 +2.063124000E3,5.298599309E1 +2.063425000E3,6.030333428E1 +2.063671000E3,5.835700379E1 +2.063954000E3,5.943633389E1 +2.064268000E3,5.761479859E1 +2.064577000E3,5.520238299E1 +2.064822000E3,5.901822557E1 +2.065074000E3,5.705952734E1 +2.065339000E3,6.136116330E1 +2.065603000E3,5.746483296E1 +2.065865000E3,5.867757380E1 +2.066141000E3,5.709322981E1 +2.066441000E3,5.775131141E1 +2.066691000E3,5.886237327E1 +2.067036000E3,5.617972984E1 +2.067288000E3,5.802507148E1 +2.067560000E3,6.044497816E1 +2.067891000E3,5.450044868E1 +2.068148000E3,5.616761260E1 +2.068412000E3,6.243097888E1 +2.068673000E3,5.783788439E1 +2.068946000E3,5.764761585E1 +2.069196000E3,5.683737954E1 +2.069468000E3,5.609890848E1 +2.069778000E3,5.465619904E1 +2.070034000E3,5.368960846E1 +2.070328000E3,6.032893819E1 +2.070574000E3,5.862927742E1 +2.070842000E3,5.635830209E1 +2.071101000E3,5.822198053E1 +2.071339000E3,5.691346983E1 +2.071597000E3,5.865778618E1 +2.071860000E3,5.810560725E1 +2.072128000E3,5.968009174E1 +2.072425000E3,5.833852533E1 +2.072667000E3,5.784540163E1 +2.072934000E3,5.644439458E1 +2.073184000E3,5.178260396E1 +2.073488000E3,5.751445421E1 +2.073769000E3,5.974800721E1 +2.074068000E3,6.534291023E1 +2.074348000E3,6.371076652E1 +2.074624000E3,6.156132937E1 +2.074877000E3,6.012113548E1 +2.075119000E3,6.026351151E1 +2.075377000E3,6.142675581E1 +2.075661000E3,6.194478144E1 +2.075914000E3,6.183865569E1 +2.076267000E3,6.387512541E1 +2.076547000E3,6.077311287E1 +2.076803000E3,6.130963963E1 +2.077056000E3,5.862622582E1 +2.077295000E3,5.463497219E1 +2.077610000E3,5.484231095E1 +2.077891000E3,6.099801434E1 +2.078171000E3,5.475621164E1 +2.078466000E3,5.955577801E1 +2.078709000E3,5.720097088E1 +2.078954000E3,5.661944912E1 +2.079224000E3,5.443336360E1 +2.079503000E3,5.917559782E1 +2.079800000E3,5.424380486E1 +2.080057000E3,6.013762169E1 +2.080307000E3,6.100643768E1 +2.080558000E3,6.205128007E1 +2.080810000E3,6.007904071E1 +2.081092000E3,6.423414837E1 +2.081354000E3,5.938817614E1 +2.081601000E3,6.006860062E1 +2.081845000E3,5.833570272E1 +2.082143000E3,5.962915676E1 +2.082396000E3,5.844615966E1 +2.082663000E3,5.932060291E1 +2.082921000E3,6.037844323E1 +2.083227000E3,5.719168160E1 +2.083487000E3,5.597578938E1 +2.083743000E3,5.236775830E1 +2.084062000E3,5.471900653E1 +2.084318000E3,5.178371688E1 +2.084618000E3,5.707729304E1 +2.084858000E3,5.526812689E1 +2.085154000E3,5.716405930E1 +2.085391000E3,5.478798233E1 +2.085687000E3,5.496315929E1 +2.085932000E3,5.701239101E1 +2.086228000E3,5.776438308E1 +2.086467000E3,5.628202894E1 +2.086760000E3,5.042244376E1 +2.087015000E3,5.775963511E1 +2.087362000E3,4.982890988E1 +2.087671000E3,4.785672217E1 +2.087922000E3,4.762697394E1 +2.088178000E3,5.046726223E1 +2.088438000E3,4.890262424E1 +2.088711000E3,5.501277631E1 +2.088981000E3,5.666001705E1 +2.089249000E3,6.014252161E1 +2.089513000E3,5.925311989E1 +2.089806000E3,6.173820636E1 +2.090063000E3,5.350884215E1 +2.090366000E3,5.736408779E1 +2.090744000E3,5.450936109E1 +2.091005000E3,5.763377323E1 +2.091253000E3,6.042269191E1 +2.091515000E3,5.484903903E1 +2.091757000E3,5.882101591E1 +2.092028000E3,5.833139845E1 +2.092280000E3,5.703430671E1 +2.092527000E3,5.247783814E1 +2.092809000E3,5.233323676E1 +2.093037000E3,5.202869643E1 +2.093354000E3,5.628845797E1 +2.093634000E3,5.325396544E1 +2.094006000E3,5.654992892E1 +2.094280000E3,5.713253789E1 +2.094541000E3,5.967664240E1 +2.094800000E3,5.750232678E1 +2.095069000E3,5.544480371E1 +2.095333000E3,5.462176641E1 +2.095596000E3,5.811248949E1 +2.095853000E3,6.196847972E1 +2.096192000E3,5.842850461E1 +2.096488000E3,5.597774452E1 +2.096726000E3,5.601282925E1 +2.097104000E3,5.625832805E1 +2.097364000E3,5.315488909E1 +2.097602000E3,5.287250653E1 +2.097844000E3,5.523708836E1 +2.098081000E3,5.724292600E1 +2.098340000E3,5.659511238E1 +2.098670000E3,5.675324149E1 +2.098945000E3,5.485884276E1 +2.099219000E3,5.694143956E1 +2.099469000E3,5.561655413E1 +2.099765000E3,5.844909410E1 +2.100011000E3,6.135621316E1 +2.100343000E3,5.968766012E1 +2.100584000E3,5.173347950E1 +2.100832000E3,5.415548255E1 +2.101090000E3,5.271968845E1 +2.101339000E3,5.007174890E1 +2.101624000E3,5.279525002E1 +2.101895000E3,5.358558767E1 +2.102197000E3,5.559048142E1 +2.102438000E3,5.476305303E1 +2.102705000E3,5.237114911E1 +2.102947000E3,5.014972007E1 +2.103218000E3,4.895902935E1 +2.103469000E3,5.192053997E1 +2.103853000E3,4.647138436E1 +2.104101000E3,4.837766327E1 +2.104448000E3,5.088929287E1 +2.104740000E3,5.561591777E1 +2.104997000E3,5.440319534E1 +2.105260000E3,5.347164399E1 +2.105561000E3,5.151610441E1 +2.105813000E3,5.075382634E1 +2.106121000E3,5.244425755E1 +2.106357000E3,5.269617654E1 +2.106663000E3,5.149027406E1 +2.106954000E3,5.659456733E1 +2.107266000E3,5.282561460E1 +2.107606000E3,5.407918273E1 +2.107883000E3,5.643922092E1 +2.108164000E3,5.169657105E1 +2.108480000E3,5.713744586E1 +2.108748000E3,5.931186178E1 +2.109003000E3,5.645689600E1 +2.109252000E3,5.322874786E1 +2.109552000E3,5.363731782E1 +2.109821000E3,5.353815648E1 +2.110077000E3,5.445551750E1 +2.110418000E3,5.491110228E1 +2.110669000E3,5.291647814E1 +2.110921000E3,5.202914132E1 +2.111180000E3,5.363241827E1 +2.111479000E3,5.566624291E1 +2.111721000E3,5.645238247E1 +2.112027000E3,5.458458697E1 +2.112294000E3,5.469783372E1 +2.112597000E3,5.582449562E1 +2.112854000E3,5.595416398E1 +2.113105000E3,5.113785865E1 +2.113352000E3,6.248282803E1 +2.113711000E3,5.880495226E1 +2.113968000E3,5.941805617E1 +2.114248000E3,5.561632009E1 +2.114507000E3,5.501810850E1 +2.114754000E3,5.936291007E1 +2.115053000E3,6.127733734E1 +2.115321000E3,6.057491273E1 +2.115616000E3,6.127323198E1 +2.115893000E3,5.760488174E1 +2.116193000E3,6.030881831E1 +2.116434000E3,5.967518116E1 +2.116722000E3,5.720938908E1 +2.117066000E3,5.605932878E1 +2.117338000E3,6.068190844E1 +2.117598000E3,5.400374866E1 +2.117892000E3,5.332007667E1 +2.118133000E3,4.991979059E1 +2.118428000E3,5.700198654E1 +2.118666000E3,5.878418983E1 +2.118922000E3,5.703766890E1 +2.119230000E3,5.731012811E1 +2.119515000E3,5.865622099E1 +2.119741000E3,5.772295719E1 +2.120015000E3,5.851982083E1 +2.120322000E3,5.958645129E1 +2.120616000E3,6.233814130E1 +2.120861000E3,6.002711287E1 +2.121162000E3,5.939190004E1 +2.121437000E3,5.758195225E1 +2.121690000E3,5.564648712E1 +2.121946000E3,5.336629511E1 +2.122218000E3,5.199121426E1 +2.122476000E3,5.906368298E1 +2.122759000E3,5.917930836E1 +2.123014000E3,5.824882047E1 +2.123266000E3,5.770359270E1 +2.123492000E3,5.695638802E1 +2.123777000E3,5.720151485E1 +2.124027000E3,6.045411810E1 +2.124327000E3,5.540258870E1 +2.124575000E3,5.828000252E1 +2.124835000E3,5.500577731E1 +2.125106000E3,5.926473821E1 +2.125354000E3,5.472888078E1 +2.125611000E3,5.530970077E1 +2.125862000E3,5.595037084E1 +2.126117000E3,5.439239133E1 +2.126432000E3,5.961943996E1 +2.126692000E3,5.841091801E1 +2.126944000E3,5.863137443E1 +2.127282000E3,5.731398304E1 +2.127577000E3,5.665374527E1 +2.127843000E3,5.476493539E1 +2.128129000E3,5.580929465E1 +2.128437000E3,5.565551021E1 +2.128739000E3,5.869101147E1 +2.129026000E3,5.827114612E1 +2.129307000E3,5.507536074E1 +2.129577000E3,5.532393691E1 +2.129934000E3,5.233850306E1 +2.130215000E3,5.514372423E1 +2.130466000E3,5.757947445E1 +2.130714000E3,6.126034226E1 +2.131015000E3,6.074916673E1 +2.131279000E3,5.864911171E1 +2.131564000E3,5.680524431E1 +2.131825000E3,6.002252741E1 +2.132078000E3,5.953076168E1 +2.132390000E3,6.027427680E1 +2.132647000E3,5.955779136E1 +2.132902000E3,5.835756058E1 +2.133223000E3,6.286787860E1 +2.133471000E3,6.057291506E1 +2.133724000E3,5.893793659E1 +2.134002000E3,5.508555746E1 +2.134257000E3,5.619881839E1 +2.134512000E3,5.505764062E1 +2.134784000E3,5.808922162E1 +2.135054000E3,5.334583096E1 +2.135313000E3,5.298019930E1 +2.135595000E3,5.025342296E1 +2.135812000E3,5.409382682E1 +2.136057000E3,5.580950424E1 +2.136332000E3,5.523743716E1 +2.136661000E3,5.499005541E1 +2.136917000E3,5.745623005E1 +2.137196000E3,5.149169849E1 +2.137449000E3,5.261206885E1 +2.137711000E3,5.487518376E1 +2.138022000E3,5.898871991E1 +2.138270000E3,5.852026830E1 +2.138564000E3,5.868858262E1 +2.138802000E3,5.736353209E1 +2.139066000E3,5.529465652E1 +2.139332000E3,5.762578865E1 +2.139672000E3,5.790185487E1 +2.139930000E3,5.792373283E1 +2.140278000E3,5.597904656E1 +2.140535000E3,5.355980456E1 +2.140856000E3,5.411887429E1 +2.141146000E3,5.094976839E1 +2.141467000E3,5.658279242E1 +2.141735000E3,6.043792292E1 +2.142041000E3,5.996632022E1 +2.142276000E3,6.230155616E1 +2.142526000E3,6.102528468E1 +2.142783000E3,5.770338577E1 +2.143124000E3,5.827243883E1 +2.143406000E3,5.367650147E1 +2.143645000E3,5.777094487E1 +2.143915000E3,5.851595499E1 +2.144175000E3,5.573729509E1 +2.144454000E3,5.467626304E1 +2.144700000E3,5.699765591E1 +2.144968000E3,5.692170932E1 +2.145246000E3,6.030210344E1 +2.145550000E3,5.876913066E1 +2.145797000E3,5.698149837E1 +2.146042000E3,5.982717784E1 +2.146368000E3,5.905293636E1 +2.146676000E3,5.947032966E1 +2.146922000E3,5.910471730E1 +2.147225000E3,6.065874797E1 +2.147524000E3,5.680135408E1 +2.147831000E3,5.451199701E1 +2.148090000E3,5.301325775E1 +2.148365000E3,5.466040661E1 +2.148665000E3,5.658013689E1 +2.148952000E3,5.410667827E1 +2.149249000E3,5.788683658E1 +2.149597000E3,5.873903650E1 +2.149910000E3,5.314379433E1 +2.150150000E3,5.564952940E1 +2.150451000E3,6.000220607E1 +2.150691000E3,6.235870620E1 +2.150965000E3,6.387461990E1 +2.151194000E3,6.491001134E1 +2.151449000E3,5.932544814E1 +2.151756000E3,6.117684525E1 +2.152011000E3,6.059885605E1 +2.152282000E3,6.303246617E1 +2.152596000E3,6.399854390E1 +2.152961000E3,6.063746268E1 +2.153223000E3,6.122116723E1 +2.153495000E3,5.809397592E1 +2.153749000E3,5.903784259E1 +2.153999000E3,6.047826717E1 +2.154283000E3,5.846467986E1 +2.154537000E3,6.226879102E1 +2.154785000E3,5.980611807E1 +2.155079000E3,5.787450321E1 +2.155375000E3,5.676059962E1 +2.155616000E3,5.395823696E1 +2.155912000E3,5.953639288E1 +2.156221000E3,5.971614724E1 +2.156510000E3,6.039969801E1 +2.156758000E3,5.898776738E1 +2.157015000E3,6.100474003E1 +2.157289000E3,5.750129682E1 +2.157591000E3,5.995540643E1 +2.157844000E3,5.628303244E1 +2.158104000E3,5.892686601E1 +2.158366000E3,5.712884748E1 +2.158667000E3,5.727860760E1 +2.158932000E3,5.313556696E1 +2.159288000E3,5.635583768E1 +2.159555000E3,5.929473664E1 +2.159809000E3,5.396180560E1 +2.160112000E3,5.807023999E1 +2.160354000E3,5.639240346E1 +2.160608000E3,5.917728814E1 +2.160855000E3,5.429000157E1 +2.161130000E3,5.397827395E1 +2.161395000E3,5.647751800E1 +2.161656000E3,5.342605760E1 +2.162007000E3,5.324373839E1 +2.162263000E3,5.439383591E1 +2.162517000E3,5.727066505E1 +2.162888000E3,5.995593964E1 +2.163140000E3,6.130649482E1 +2.163392000E3,6.228130821E1 +2.163644000E3,6.279179388E1 +2.163938000E3,5.559527300E1 +2.164178000E3,5.200550071E1 +2.164481000E3,5.797363767E1 +2.164757000E3,5.902554678E1 +2.165040000E3,5.834647622E1 +2.165303000E3,5.713285380E1 +2.165575000E3,6.343633700E1 +2.165850000E3,5.896208706E1 +2.166219000E3,5.624501583E1 +2.166483000E3,5.696603075E1 +2.166769000E3,5.736978604E1 +2.167027000E3,5.837475894E1 +2.167278000E3,5.768129207E1 +2.167593000E3,5.660761865E1 +2.167856000E3,5.680076310E1 +2.168110000E3,5.883044450E1 +2.168385000E3,5.772028600E1 +2.168649000E3,5.342008664E1 +2.168914000E3,5.359113324E1 +2.169168000E3,5.849769703E1 +2.169536000E3,6.267181821E1 +2.169793000E3,5.719603223E1 +2.170040000E3,5.397233107E1 +2.170287000E3,4.861027503E1 +2.170579000E3,5.741564583E1 +2.170822000E3,6.207812430E1 +2.171115000E3,5.827753689E1 +2.171365000E3,6.042202215E1 +2.171629000E3,5.516417228E1 +2.171895000E3,4.912315476E1 +2.172163000E3,4.718316305E1 +2.172446000E3,5.363129541E1 +2.172813000E3,5.322378335E1 +2.173087000E3,5.228499961E1 +2.173349000E3,5.364722432E1 +2.173618000E3,5.964999675E1 +2.173917000E3,6.116591719E1 +2.174174000E3,5.668310324E1 +2.174436000E3,5.538937699E1 +2.174688000E3,5.539330891E1 +2.174944000E3,5.678019084E1 +2.175197000E3,5.655985061E1 +2.175490000E3,6.211643319E1 +2.175751000E3,5.899842059E1 +2.176153000E3,6.042080027E1 +2.176454000E3,5.956376587E1 +2.176730000E3,5.896716838E1 +2.177048000E3,5.729778676E1 +2.177305000E3,5.512323216E1 +2.177616000E3,5.573124529E1 +2.177883000E3,5.390669828E1 +2.178139000E3,5.435017850E1 +2.178403000E3,5.275779180E1 +2.178672000E3,5.469054235E1 +2.178938000E3,5.701832565E1 +2.179201000E3,6.063134316E1 +2.179540000E3,6.461030243E1 +2.179799000E3,6.345934666E1 +2.180043000E3,6.255021373E1 +2.180348000E3,6.265836689E1 +2.180640000E3,6.125083403E1 +2.180878000E3,5.721943432E1 +2.181125000E3,5.584429631E1 +2.181407000E3,5.679219567E1 +2.181647000E3,5.506189996E1 +2.181962000E3,5.950753578E1 +2.182227000E3,5.684863204E1 +2.182499000E3,5.318048388E1 +2.182825000E3,5.856807028E1 +2.183124000E3,6.201159961E1 +2.183360000E3,5.994279105E1 +2.183661000E3,6.155626338E1 +2.183904000E3,5.760612799E1 +2.184197000E3,5.557219911E1 +2.184436000E3,5.720299401E1 +2.184730000E3,5.496492062E1 +2.184965000E3,5.287669523E1 +2.185272000E3,5.534018340E1 +2.185572000E3,5.047897567E1 +2.185897000E3,5.289532450E1 +2.186149000E3,5.169587435E1 +2.186428000E3,5.811856565E1 +2.186722000E3,5.829930976E1 +2.187016000E3,5.767171180E1 +2.187297000E3,5.167293983E1 +2.187542000E3,5.634712904E1 +2.187793000E3,5.452173951E1 +2.188038000E3,5.242356157E1 +2.188332000E3,5.476946331E1 +2.188570000E3,5.506415879E1 +2.188807000E3,5.842757277E1 +2.189123000E3,5.579731569E1 +2.189400000E3,5.735467547E1 +2.189707000E3,5.510643622E1 +2.189947000E3,5.399605596E1 +2.190247000E3,5.231812124E1 +2.190482000E3,5.397423501E1 +2.190722000E3,5.467291530E1 +2.190972000E3,5.750340972E1 +2.191219000E3,5.451621797E1 +2.191527000E3,5.544744059E1 +2.191775000E3,5.570906247E1 +2.192040000E3,5.570238792E1 +2.192395000E3,5.704729905E1 +2.192674000E3,5.662202644E1 +2.192969000E3,6.130245708E1 +2.193206000E3,5.842239411E1 +2.193505000E3,5.813812757E1 +2.193745000E3,5.643123308E1 +2.194038000E3,5.810403241E1 +2.194275000E3,5.863690353E1 +2.194574000E3,5.519980518E1 +2.194810000E3,5.381530940E1 +2.195092000E3,5.781601666E1 +2.195335000E3,5.699265058E1 +2.195608000E3,5.477338243E1 +2.195929000E3,5.695412826E1 +2.196188000E3,5.575935497E1 +2.196439000E3,5.738570553E1 +2.196686000E3,6.194168224E1 +2.196969000E3,5.888525061E1 +2.197270000E3,5.830791470E1 +2.197516000E3,5.904778886E1 +2.197822000E3,5.987539712E1 +2.198117000E3,5.910637217E1 +2.198355000E3,5.676446576E1 +2.198673000E3,5.632729175E1 +2.198920000E3,5.826507178E1 +2.199227000E3,6.221847088E1 +2.199493000E3,6.023584539E1 +2.199739000E3,6.378124478E1 +2.199975000E3,6.457706819E1 +2.200218000E3,5.781084826E1 +2.200471000E3,5.833307765E1 +2.200715000E3,5.849295856E1 +2.200984000E3,5.695016071E1 +2.201255000E3,5.945608920E1 +2.201511000E3,5.923858391E1 +2.201821000E3,5.975381188E1 +2.202050000E3,5.657071344E1 +2.202297000E3,5.582353283E1 +2.202552000E3,5.634201272E1 +2.202803000E3,5.842061156E1 +2.203080000E3,5.511323996E1 +2.203339000E3,5.333816234E1 +2.203589000E3,5.586132206E1 +2.203867000E3,5.612282959E1 +2.204151000E3,5.390907932E1 +2.204405000E3,5.581501331E1 +2.204648000E3,5.691201261E1 +2.204938000E3,5.605209961E1 +2.205271000E3,5.337227455E1 +2.205520000E3,5.726868677E1 +2.205824000E3,5.678400386E1 +2.206068000E3,5.598615724E1 +2.206327000E3,6.245548090E1 +2.206634000E3,5.788335624E1 +2.206927000E3,5.672312442E1 +2.207166000E3,5.700846075E1 +2.207464000E3,5.693157148E1 +2.207703000E3,5.667671942E1 +2.207995000E3,5.655907845E1 +2.208344000E3,5.694003799E1 +2.208592000E3,5.812693102E1 +2.208844000E3,5.305590014E1 +2.209133000E3,5.963333488E1 +2.209376000E3,6.125764761E1 +2.209621000E3,5.708540532E1 +2.209865000E3,5.539532482E1 +2.210177000E3,6.086117928E1 +2.210432000E3,5.871599576E1 +2.210705000E3,5.720891289E1 +2.210929000E3,5.859137268E1 +2.211185000E3,5.492761595E1 +2.211566000E3,5.458369125E1 +2.211811000E3,5.704243717E1 +2.212094000E3,5.948204172E1 +2.212325000E3,5.442994388E1 +2.212570000E3,5.607391365E1 +2.212815000E3,5.349643391E1 +2.213089000E3,5.518134225E1 +2.213397000E3,5.879499176E1 +2.213659000E3,5.918920409E1 +2.213917000E3,6.317166487E1 +2.214205000E3,5.773325998E1 +2.214505000E3,6.021667659E1 +2.214834000E3,5.707564648E1 +2.215074000E3,5.411436798E1 +2.215412000E3,5.705541238E1 +2.215699000E3,6.721672427E1 +2.215946000E3,6.130402498E1 +2.216241000E3,5.914242022E1 +2.216493000E3,5.881747375E1 +2.216786000E3,5.920115687E1 +2.217030000E3,5.981753209E1 +2.217325000E3,5.379848698E1 +2.217566000E3,5.498057230E1 +2.217931000E3,5.647867672E1 +2.218210000E3,5.460935805E1 +2.218440000E3,5.579228446E1 +2.218740000E3,5.598523495E1 +2.218992000E3,5.501198671E1 +2.219248000E3,5.270876730E1 +2.219495000E3,5.711255338E1 +2.219767000E3,5.276578476E1 +2.220009000E3,6.171644376E1 +2.220307000E3,5.760035427E1 +2.220557000E3,6.039071701E1 +2.220820000E3,5.947563028E1 +2.221166000E3,5.781157464E1 +2.221459000E3,5.689764898E1 +2.221740000E3,5.361204154E1 +2.221998000E3,5.565584232E1 +2.222252000E3,6.236264054E1 +2.222508000E3,5.583706888E1 +2.222794000E3,5.998886151E1 +2.223038000E3,6.067027795E1 +2.223281000E3,5.953550256E1 +2.223512000E3,6.087865846E1 +2.223764000E3,5.880177247E1 +2.224056000E3,5.532032645E1 +2.224389000E3,5.110554887E1 +2.224697000E3,6.082114583E1 +2.224957000E3,6.332269799E1 +2.225225000E3,5.859152014E1 +2.225521000E3,6.312344162E1 +2.225760000E3,6.208500503E1 +2.226003000E3,6.030377984E1 +2.226280000E3,5.890306026E1 +2.226553000E3,6.412257006E1 +2.226813000E3,5.959239884E1 +2.227137000E3,5.603893495E1 +2.227460000E3,5.807576772E1 +2.227717000E3,6.034272760E1 +2.227950000E3,5.678924442E1 +2.228211000E3,5.767938832E1 +2.228489000E3,4.973605337E1 +2.228742000E3,5.227056153E1 +2.229007000E3,4.524576382E1 +2.229320000E3,5.163901012E1 +2.229633000E3,5.791269320E1 +2.229909000E3,5.832692980E1 +2.230223000E3,5.512940778E1 +2.230487000E3,5.639998631E1 +2.230845000E3,6.012111222E1 +2.231113000E3,6.632176219E1 +2.231407000E3,6.692769565E1 +2.231662000E3,6.409372191E1 +2.231945000E3,6.268702605E1 +2.232208000E3,6.192012265E1 +2.232460000E3,5.923306273E1 +2.232717000E3,5.726340446E1 +2.233005000E3,5.708270925E1 +2.233256000E3,6.172203942E1 +2.233510000E3,6.197059155E1 +2.233807000E3,6.691458644E1 +2.234160000E3,6.165007134E1 +2.234422000E3,6.172053486E1 +2.234714000E3,6.148833899E1 +2.234974000E3,6.190331921E1 +2.235253000E3,5.938090919E1 +2.235479000E3,6.223060920E1 +2.235722000E3,6.133640397E1 +2.236028000E3,6.400294095E1 +2.236269000E3,6.581462957E1 +2.236516000E3,6.094953675E1 +2.236828000E3,5.792232456E1 +2.237124000E3,5.750665846E1 +2.237367000E3,5.360734442E1 +2.237668000E3,5.239836763E1 +2.237914000E3,5.189659577E1 +2.238168000E3,5.779541581E1 +2.238431000E3,5.409030702E1 +2.238689000E3,5.064192938E1 +2.238941000E3,4.890244292E1 +2.239235000E3,4.958738332E1 +2.239486000E3,5.093509792E1 +2.239725000E3,5.421091975E1 +2.239970000E3,6.074883769E1 +2.240298000E3,5.611992467E1 +2.240604000E3,4.988071111E1 +2.240900000E3,4.952063126E1 +2.241187000E3,5.282005772E1 +2.241428000E3,5.672648648E1 +2.241685000E3,5.807464117E1 +2.241973000E3,5.565097745E1 +2.242224000E3,5.410363002E1 +2.242475000E3,5.548804216E1 +2.242720000E3,5.862108370E1 +2.242959000E3,5.101243713E1 +2.243259000E3,5.340920814E1 +2.243564000E3,5.471013043E1 +2.243801000E3,5.474536753E1 +2.244062000E3,5.454012147E1 +2.244333000E3,5.594751460E1 +2.244637000E3,5.486159050E1 +2.244913000E3,5.317501502E1 +2.245138000E3,5.100209753E1 +2.245397000E3,5.436827206E1 +2.245643000E3,5.483479867E1 +2.245916000E3,5.150486026E1 +2.246182000E3,5.049924887E1 +2.246449000E3,5.226067252E1 +2.246744000E3,5.389432372E1 +2.247057000E3,6.032791953E1 +2.247330000E3,5.966662928E1 +2.247666000E3,5.824962285E1 +2.247962000E3,5.700720490E1 +2.248202000E3,6.373200887E1 +2.248495000E3,6.648419927E1 +2.248743000E3,5.542652488E1 +2.249036000E3,5.256926371E1 +2.249272000E3,6.053195001E1 +2.249564000E3,4.959074314E1 +2.249800000E3,5.054384460E1 +2.250136000E3,5.008489809E1 +2.250431000E3,5.752384263E1 +2.250666000E3,5.367007636E1 +2.250931000E3,4.851936559E1 +2.251210000E3,4.965482987E1 +2.251497000E3,5.733244198E1 +2.251772000E3,5.370188093E1 +2.251997000E3,5.388650114E1 +2.252246000E3,5.331606518E1 +2.252516000E3,5.534782747E1 +2.252818000E3,5.271944154E1 +2.253047000E3,5.188974945E1 +2.253402000E3,5.040855384E1 +2.253689000E3,5.348452962E1 +2.253965000E3,5.685197701E1 +2.254240000E3,5.699151925E1 +2.254539000E3,5.217481719E1 +2.254794000E3,5.255063115E1 +2.255035000E3,5.258436032E1 +2.255283000E3,5.228429265E1 +2.255592000E3,5.187189315E1 +2.255851000E3,5.089851896E1 +2.256105000E3,5.323192817E1 +2.256387000E3,5.259240607E1 +2.256752000E3,5.489099725E1 +2.257016000E3,5.140699592E1 +2.257276000E3,5.478139635E1 +2.257600000E3,5.508183343E1 +2.257864000E3,5.539199709E1 +2.258160000E3,5.879728075E1 +2.258399000E3,6.145510373E1 +2.258645000E3,6.018082278E1 +2.258890000E3,6.203490998E1 +2.259131000E3,6.051201097E1 +2.259385000E3,5.741582229E1 +2.259629000E3,5.742200481E1 +2.259994000E3,5.205318956E1 +2.260295000E3,5.807019657E1 +2.260539000E3,5.843419178E1 +2.260841000E3,5.543595349E1 +2.261104000E3,5.208978608E1 +2.261348000E3,5.288295424E1 +2.261601000E3,5.593156434E1 +2.261856000E3,5.600009221E1 +2.262108000E3,5.581775464E1 +2.262358000E3,5.037081152E1 +2.262613000E3,5.059162693E1 +2.262916000E3,5.459372597E1 +2.263271000E3,5.581642194E1 +2.263548000E3,5.702582989E1 +2.263802000E3,5.531282217E1 +2.264049000E3,5.356460573E1 +2.264318000E3,5.682743962E1 +2.264564000E3,5.353127135E1 +2.264854000E3,5.962134934E1 +2.265080000E3,5.858968032E1 +2.265326000E3,5.681259568E1 +2.265625000E3,5.635120121E1 +2.265871000E3,5.433379551E1 +2.266211000E3,4.913835205E1 +2.266510000E3,5.243179137E1 +2.266783000E3,4.886918417E1 +2.267043000E3,4.774131335E1 +2.267292000E3,4.892025491E1 +2.267553000E3,4.710213612E1 +2.267796000E3,4.847827931E1 +2.268042000E3,5.624471818E1 +2.268281000E3,5.286977188E1 +2.268548000E3,5.683989489E1 +2.268800000E3,5.459251055E1 +2.269086000E3,5.272841607E1 +2.269389000E3,5.585343514E1 +2.269616000E3,5.452972356E1 +2.269865000E3,5.183250423E1 +2.270167000E3,4.733442261E1 +2.270442000E3,4.736450762E1 +2.270667000E3,4.430645798E1 +2.270915000E3,4.635257501E1 +2.271160000E3,4.914582650E1 +2.271407000E3,4.938157659E1 +2.271656000E3,4.788630853E1 +2.271896000E3,4.778446083E1 +2.272198000E3,5.081637081E1 +2.272482000E3,4.630509256E1 +2.272722000E3,4.551027932E1 +2.273048000E3,5.074623045E1 +2.273321000E3,4.689236254E1 +2.273562000E3,4.960242652E1 +2.273859000E3,5.310274016E1 +2.274104000E3,5.391997859E1 +2.274392000E3,4.854992165E1 +2.274648000E3,4.610161890E1 +2.274915000E3,5.325141064E1 +2.275196000E3,4.823989698E1 +2.275460000E3,5.167706762E1 +2.275772000E3,4.424461998E1 +2.276008000E3,4.957193490E1 +2.276258000E3,4.220429916E1 +2.276545000E3,4.614900045E1 +2.276809000E3,4.247109284E1 +2.277119000E3,5.104311310E1 +2.277385000E3,4.898949856E1 +2.277651000E3,5.033981280E1 +2.277920000E3,4.504255509E1 +2.278210000E3,4.851295637E1 +2.278452000E3,4.975001222E1 +2.278771000E3,5.198599663E1 +2.279101000E3,5.078534391E1 +2.279348000E3,5.056977572E1 +2.279614000E3,4.645427419E1 +2.279894000E3,4.837428182E1 +2.280121000E3,4.672417188E1 +2.280416000E3,4.338010131E1 +2.280671000E3,4.552410696E1 +2.280941000E3,4.107346609E1 +2.281195000E3,4.850760260E1 +2.281477000E3,4.449785068E1 +2.281730000E3,3.834743898E1 +2.282028000E3,3.160451104E1 +2.282275000E3,2.921367430E1 +2.282509000E3,3.929432216E1 +2.282771000E3,3.560833020E1 +2.283021000E3,4.204425230E1 +2.283277000E3,4.897505461E1 +2.283570000E3,4.492050546E1 +2.283802000E3,4.549624302E1 +2.284053000E3,4.703134831E1 +2.284302000E3,4.492779574E1 +2.284580000E3,5.573526523E1 +2.284888000E3,4.583204799E1 +2.285186000E3,3.987632497E1 +2.285426000E3,4.276483306E1 +2.285670000E3,4.196646636E1 +2.285974000E3,4.127295807E1 +2.286241000E3,3.392540836E1 +2.286513000E3,3.045281657E1 +2.286755000E3,3.056149566E1 +2.287058000E3,4.234115907E1 +2.287358000E3,4.148011807E1 +2.287615000E3,4.752316696E1 +2.287890000E3,4.261643768E1 +2.288186000E3,3.531031146E1 +2.288451000E3,3.336926272E1 +2.288830000E3,3.217663691E1 +2.289083000E3,3.280943829E1 +2.289350000E3,4.037024361E1 +2.289606000E3,4.463743016E1 +2.289870000E3,3.926930450E1 +2.290142000E3,3.549021170E1 +2.290376000E3,3.657210104E1 +2.290669000E3,3.609483404E1 +2.290917000E3,3.935001060E1 +2.291190000E3,3.968762383E1 +2.291417000E3,3.622062011E1 +2.291698000E3,5.052972627E1 +2.292019000E3,4.472329620E1 +2.292314000E3,3.528869928E1 +2.292580000E3,3.171318762E1 +2.292867000E3,3.293682859E1 +2.293112000E3,2.980662334E1 +2.293408000E3,3.108877030E1 +2.293645000E3,3.411108767E1 +2.293948000E3,2.929195023E1 +2.294231000E3,2.830259325E1 +2.294484000E3,2.905088910E1 +2.294732000E3,3.046102835E1 +2.295049000E3,2.679058069E1 +2.295347000E3,2.620731663E1 +2.295594000E3,3.509528145E1 +2.295836000E3,2.657946529E1 +2.296130000E3,2.511368258E1 +2.296378000E3,2.555955915E1 +2.296634000E3,2.785949260E1 +2.296875000E3,2.654407944E1 +2.297117000E3,3.658368449E1 +2.297412000E3,3.412054652E1 +2.297648000E3,3.448252102E1 +2.297956000E3,3.528486686E1 +2.298205000E3,3.265291425E1 +2.298494000E3,2.963788314E1 +2.298798000E3,3.350933300E1 +2.299085000E3,3.038301619E1 +2.299338000E3,3.357142506E1 +2.299610000E3,4.744800671E1 +2.299868000E3,3.435626076E1 +2.300142000E3,3.368274389E1 +2.300402000E3,2.881246111E1 +2.300655000E3,3.097762310E1 +2.300898000E3,2.947567056E1 +2.301182000E3,3.214187359E1 +2.301423000E3,3.421070745E1 +2.301786000E3,5.117970534E1 +2.302087000E3,5.037784077E1 +2.302335000E3,5.283937176E1 +2.302644000E3,5.164119106E1 +2.302941000E3,5.300709748E1 +2.303240000E3,4.713488810E1 +2.303488000E3,4.524114677E1 +2.303739000E3,3.080285972E1 +2.304022000E3,2.293405577E1 +2.304254000E3,2.235464386E1 +2.304552000E3,2.949911358E1 +2.304876000E3,4.141349798E1 +2.305182000E3,4.156611078E1 +2.305491000E3,4.347125429E1 +2.305797000E3,4.579894404E1 +2.306107000E3,4.646123013E1 +2.306358000E3,4.517240887E1 +2.306604000E3,5.308475174E1 +2.306870000E3,4.681256924E1 +2.307168000E3,2.942058533E1 +2.307450000E3,2.986114457E1 +2.307717000E3,3.195150356E1 +2.308031000E3,3.775567348E1 +2.308265000E3,3.823556499E1 +2.308570000E3,2.909536341E1 +2.308842000E3,3.096070220E1 +2.309098000E3,4.060687649E1 +2.309391000E3,4.820113946E1 +2.309687000E3,4.619079404E1 +2.309928000E3,4.304793785E1 +2.310216000E3,4.976144450E1 +2.310446000E3,4.779148829E1 +2.310686000E3,5.167703897E1 +2.310979000E3,3.773719280E1 +2.311248000E3,2.923821784E1 +2.311466000E3,2.654081756E1 +2.311763000E3,2.616593312E1 +2.312001000E3,2.460963519E1 +2.312285000E3,2.554564289E1 +2.312588000E3,3.572755404E1 +2.312856000E3,4.274835909E1 +2.313074000E3,4.355953935E1 +2.313375000E3,5.377727845E1 +2.313611000E3,5.435235813E1 +2.313893000E3,5.477010993E1 +2.314137000E3,5.142421895E1 +2.314483000E3,4.794670725E1 +2.314780000E3,5.149445419E1 +2.315019000E3,5.127618051E1 +2.315306000E3,4.939341348E1 +2.315533000E3,4.928824788E1 +2.315832000E3,4.617335031E1 +2.316069000E3,3.696469062E1 +2.316377000E3,4.552948924E1 +2.316627000E3,4.672923062E1 +2.316913000E3,4.504192742E1 +2.317215000E3,4.364234368E1 +2.317558000E3,4.231291453E1 +2.317853000E3,4.886663905E1 +2.318118000E3,4.492895691E1 +2.318412000E3,4.464681620E1 +2.318711000E3,4.698360224E1 +2.318950000E3,4.454369095E1 +2.319250000E3,4.409609939E1 +2.319494000E3,4.283121809E1 +2.319793000E3,4.398770219E1 +2.320040000E3,4.728522548E1 +2.320336000E3,4.533798443E1 +2.320660000E3,4.548359371E1 +2.320908000E3,4.366718291E1 +2.321152000E3,5.139935964E1 +2.321408000E3,4.747980864E1 +2.321709000E3,3.867643032E1 +2.321952000E3,4.294445900E1 +2.322196000E3,4.336333736E1 +2.322445000E3,3.890531131E1 +2.322682000E3,4.087281677E1 +2.322980000E3,3.979668464E1 +2.323225000E3,4.157042707E1 +2.323553000E3,4.515881082E1 +2.323886000E3,3.868360739E1 +2.324184000E3,4.839319184E1 +2.324428000E3,4.298284223E1 +2.324669000E3,4.433761346E1 +2.324987000E3,4.011512195E1 +2.325233000E3,3.478551365E1 +2.325486000E3,4.180203002E1 +2.325789000E3,4.323726184E1 +2.326086000E3,3.985791110E1 +2.326333000E3,3.946244529E1 +2.326667000E3,4.066537977E1 +2.326925000E3,3.986903649E1 +2.327223000E3,4.142461274E1 +2.327521000E3,3.461788217E1 +2.327778000E3,3.326602717E1 +2.328102000E3,4.357074645E1 +2.328367000E3,5.496493564E1 +2.328618000E3,4.413482695E1 +2.328920000E3,4.170999616E1 +2.329183000E3,4.107694173E1 +2.329486000E3,5.342371220E1 +2.329729000E3,5.103134188E1 +2.330028000E3,4.716459977E1 +2.330382000E3,4.916498276E1 +2.330642000E3,4.801561309E1 +2.330930000E3,4.860033329E1 +2.331211000E3,5.037441690E1 +2.331463000E3,5.227972551E1 +2.331719000E3,4.516533742E1 +2.331971000E3,4.623606604E1 +2.332268000E3,3.207985320E1 +2.332513000E3,3.485208029E1 +2.332801000E3,4.367306984E1 +2.333109000E3,4.764897626E1 +2.333397000E3,4.844411921E1 +2.333779000E3,4.624834459E1 +2.334088000E3,4.492130047E1 +2.334331000E3,4.172849812E1 +2.334618000E3,4.243441154E1 +2.334859000E3,4.155300890E1 +2.335165000E3,3.508017133E1 +2.335414000E3,3.102497597E1 +2.335689000E3,3.346102792E1 +2.335938000E3,2.980210924E1 +2.336237000E3,2.815695425E1 +2.336480000E3,4.530841757E1 +2.336824000E3,4.476742737E1 +2.337075000E3,4.460293889E1 +2.337332000E3,5.054872999E1 +2.337583000E3,4.962100100E1 +2.337845000E3,5.224787063E1 +2.338132000E3,4.845338775E1 +2.338374000E3,4.675501048E1 +2.338651000E3,4.806540095E1 +2.338903000E3,4.707869991E1 +2.339145000E3,4.747595477E1 +2.339395000E3,3.449909829E1 +2.339700000E3,4.619360178E1 +2.340033000E3,4.785644508E1 +2.340329000E3,4.721347586E1 +2.340579000E3,4.302992844E1 +2.340828000E3,4.629706327E1 +2.341122000E3,4.550319757E1 +2.341368000E3,4.510038554E1 +2.341611000E3,4.752886315E1 +2.341876000E3,4.524122211E1 +2.342135000E3,2.990386366E1 +2.342396000E3,3.647672774E1 +2.342679000E3,2.854891758E1 +2.342936000E3,3.995722191E1 +2.343310000E3,4.501906630E1 +2.343555000E3,4.872212276E1 +2.343839000E3,4.566863325E1 +2.344134000E3,3.946814595E1 +2.344384000E3,4.796193013E1 +2.344656000E3,4.858552009E1 +2.344961000E3,4.902627763E1 +2.345257000E3,4.467711671E1 +2.345498000E3,3.756709071E1 +2.345764000E3,2.964206509E1 +2.346064000E3,4.283044167E1 +2.346415000E3,4.191014925E1 +2.346743000E3,4.910031818E1 +2.347021000E3,5.022624274E1 +2.347337000E3,5.257970130E1 +2.347586000E3,4.764257555E1 +2.347831000E3,4.353349182E1 +2.348126000E3,4.318604201E1 +2.348436000E3,4.825752031E1 +2.348710000E3,4.464987037E1 +2.348968000E3,4.690302679E1 +2.349225000E3,4.464063657E1 +2.349495000E3,5.114524492E1 +2.349740000E3,4.345049547E1 +2.350133000E3,4.655800825E1 +2.350382000E3,4.419356370E1 +2.350688000E3,4.308388818E1 +2.350960000E3,4.964188075E1 +2.351269000E3,5.137042419E1 +2.351542000E3,4.751708919E1 +2.351836000E3,3.239228651E1 +2.352067000E3,3.331178705E1 +2.352357000E3,4.628654550E1 +2.352625000E3,4.653844798E1 +2.352938000E3,4.419734850E1 +2.353231000E3,3.771763539E1 +2.353458000E3,3.489550836E1 +2.353713000E3,2.965581776E1 +2.353962000E3,3.457100474E1 +2.354201000E3,3.291595658E1 +2.354446000E3,2.791603976E1 +2.354711000E3,3.307930362E1 +2.355027000E3,5.311162000E1 +2.355290000E3,4.688373373E1 +2.355581000E3,3.663543876E1 +2.355868000E3,2.834403560E1 +2.356176000E3,5.001680718E1 +2.356518000E3,5.349221251E1 +2.356780000E3,5.234097025E1 +2.357043000E3,4.476475434E1 +2.357349000E3,5.160193390E1 +2.357584000E3,4.375385010E1 +2.357840000E3,3.709166207E1 +2.358125000E3,2.927191182E1 +2.358378000E3,4.114289062E1 +2.358676000E3,4.266518399E1 +2.358921000E3,4.641380631E1 +2.359210000E3,4.551221179E1 +2.359545000E3,4.099683883E1 +2.359801000E3,5.202602500E1 +2.360072000E3,5.207875379E1 +2.360343000E3,4.670310433E1 +2.360619000E3,4.619168123E1 +2.360865000E3,4.348453495E1 +2.361113000E3,4.603882932E1 +2.361353000E3,4.061885274E1 +2.361649000E3,4.873355826E1 +2.361884000E3,4.796347566E1 +2.362174000E3,4.419543811E1 +2.362420000E3,4.412529768E1 +2.362674000E3,4.315515456E1 +2.363006000E3,3.718353950E1 +2.363303000E3,4.131746877E1 +2.363556000E3,3.462830696E1 +2.363825000E3,3.224809166E1 +2.364105000E3,2.946532539E1 +2.364420000E3,4.082560353E1 +2.364671000E3,4.169760242E1 +2.364916000E3,4.728483165E1 +2.365158000E3,4.384961396E1 +2.365493000E3,3.327447630E1 +2.365797000E3,2.406470586E1 +2.366141000E3,2.410271882E1 +2.366422000E3,4.124818432E1 +2.366699000E3,4.300386829E1 +2.366994000E3,4.592409288E1 +2.367239000E3,4.402074721E1 +2.367492000E3,4.331525310E1 +2.367744000E3,4.351543939E1 +2.368045000E3,4.861325913E1 +2.368277000E3,4.345520025E1 +2.368543000E3,5.037549285E1 +2.368790000E3,3.455268589E1 +2.369034000E3,3.454484220E1 +2.369300000E3,3.436570372E1 +2.369544000E3,3.180799867E1 +2.369820000E3,4.460893996E1 +2.370091000E3,5.635981603E1 +2.370383000E3,4.932803438E1 +2.370635000E3,5.123791361E1 +2.370939000E3,4.749913119E1 +2.371193000E3,4.606624254E1 +2.371498000E3,4.453668838E1 +2.371779000E3,4.424564317E1 +2.372081000E3,5.022357768E1 +2.372347000E3,4.983363592E1 +2.372720000E3,4.311987242E1 +2.372969000E3,4.071927446E1 +2.373234000E3,3.624584431E1 +2.373535000E3,3.338407859E1 +2.373777000E3,2.744030282E1 +2.374025000E3,4.017686066E1 +2.374281000E3,4.153799732E1 +2.374537000E3,5.163713220E1 +2.374786000E3,4.970373114E1 +2.375033000E3,4.601563593E1 +2.375284000E3,4.943210146E1 +2.375577000E3,5.208741018E1 +2.375935000E3,4.780129348E1 +2.376167000E3,4.632707744E1 +2.376478000E3,5.008962536E1 +2.376734000E3,4.691729314E1 +2.376987000E3,4.593220796E1 +2.377250000E3,4.703621615E1 +2.377550000E3,4.863501898E1 +2.377838000E3,4.747349412E1 +2.378102000E3,4.430216971E1 +2.378373000E3,5.038477253E1 +2.378648000E3,4.679597376E1 +2.378873000E3,3.998762784E1 +2.379232000E3,4.140472709E1 +2.379480000E3,3.803559367E1 +2.379735000E3,4.292956565E1 +2.379993000E3,3.275484639E1 +2.380260000E3,3.159298587E1 +2.380513000E3,3.066195183E1 +2.380756000E3,4.846258942E1 +2.381012000E3,4.617374426E1 +2.381278000E3,4.338282331E1 +2.381580000E3,2.990070560E1 +2.381878000E3,3.384826320E1 +2.382127000E3,4.352773294E1 +2.382476000E3,3.711143795E1 +2.382756000E3,4.818117865E1 +2.383001000E3,4.694356023E1 +2.383312000E3,4.713242320E1 +2.383556000E3,4.945634369E1 +2.383815000E3,3.710449888E1 +2.384109000E3,4.990714727E1 +2.384350000E3,5.101970483E1 +2.384663000E3,4.290224010E1 +2.384917000E3,3.958873166E1 +2.385203000E3,4.207919898E1 +2.385583000E3,3.937588823E1 +2.385864000E3,3.927490117E1 +2.386122000E3,3.708577985E1 +2.386378000E3,3.104425869E1 +2.386630000E3,2.579918418E1 +2.386935000E3,4.201717352E1 +2.387186000E3,4.469788103E1 +2.387445000E3,3.928301867E1 +2.387699000E3,4.425054811E1 +2.387999000E3,2.901032620E1 +2.388242000E3,2.431535493E1 +2.388542000E3,4.330806788E1 +2.388866000E3,4.587852948E1 +2.389138000E3,5.068663336E1 +2.389420000E3,5.151872270E1 +2.389764000E3,4.501157372E1 +2.390012000E3,4.508008781E1 +2.390288000E3,4.471818734E1 +2.390546000E3,4.453717168E1 +2.390828000E3,3.435610332E1 +2.391113000E3,3.644941891E1 +2.391398000E3,3.741409627E1 +2.391658000E3,4.311052254E1 +2.391963000E3,3.924877335E1 +2.392296000E3,3.956869731E1 +2.392537000E3,3.230149795E1 +2.392786000E3,2.941450360E1 +2.393103000E3,3.366208400E1 +2.393349000E3,2.633153711E1 +2.393653000E3,2.492589605E1 +2.393892000E3,3.518582310E1 +2.394201000E3,3.668564238E1 +2.394454000E3,3.528359554E1 +2.394744000E3,3.673717548E1 +2.395034000E3,2.851979476E1 +2.395378000E3,2.558396774E1 +2.395660000E3,3.919896752E1 +2.395930000E3,3.339597104E1 +2.396187000E3,3.351358057E1 +2.396431000E3,3.743420456E1 +2.396691000E3,4.220523227E1 +2.396991000E3,3.500233403E1 +2.397251000E3,3.475187142E1 +2.397513000E3,3.604068947E1 +2.397821000E3,4.628512725E1 +2.398126000E3,4.463943287E1 +2.398428000E3,4.311458163E1 +2.398781000E3,4.375329409E1 +2.399076000E3,3.749705009E1 +2.399316000E3,4.116349149E1 +2.399615000E3,4.694603167E1 +2.399852000E3,5.327851923E1 +2.400143000E3,5.028800274E1 +2.400380000E3,5.055607260E1 +2.400618000E3,4.184216649E1 +2.400901000E3,4.280576865E1 +2.401144000E3,4.285187037E1 +2.401437000E3,5.414729311E1 +2.401684000E3,5.760726428E1 +2.402102000E3,5.135939721E1 +2.402349000E3,5.519633184E1 +2.402608000E3,5.937895156E1 +2.402853000E3,5.722678447E1 +2.403146000E3,5.316891996E1 +2.403388000E3,5.231876976E1 +2.403684000E3,4.275047946E1 +2.403921000E3,4.497010821E1 +2.404216000E3,5.935375427E1 +2.404454000E3,5.736369919E1 +2.404707000E3,5.877823139E1 +2.404971000E3,6.138635894E1 +2.405219000E3,5.726046839E1 +2.405473000E3,5.213953550E1 +2.405771000E3,4.831408459E1 +2.406024000E3,5.195614478E1 +2.406276000E3,4.885485021E1 +2.406567000E3,4.806131720E1 +2.406866000E3,3.817379603E1 +2.407129000E3,3.496803230E1 +2.407401000E3,4.679161915E1 +2.407625000E3,4.456362030E1 +2.407878000E3,4.499112684E1 +2.408171000E3,4.695848411E1 +2.408491000E3,4.136053284E1 +2.408771000E3,3.435960184E1 +2.409033000E3,2.907775515E1 +2.409287000E3,3.179102298E1 +2.409536000E3,2.535492331E1 +2.409797000E3,2.893863695E1 +2.410015000E3,3.195695462E1 +2.410232000E3,2.883661354E1 +2.410481000E3,4.380812340E1 +2.410735000E3,5.435187737E1 +2.411017000E3,4.390478627E1 +2.411330000E3,4.136550501E1 +2.411572000E3,6.231552653E1 +2.411823000E3,4.988484474E1 +2.412072000E3,4.569499772E1 +2.412339000E3,5.207639469E1 +2.412605000E3,5.314724412E1 +2.412842000E3,5.014855129E1 +2.413111000E3,4.925815950E1 +2.413332000E3,5.545199009E1 +2.413608000E3,4.910878211E1 +2.413873000E3,5.481296501E1 +2.414229000E3,4.620355557E1 +2.414532000E3,4.757632406E1 +2.414792000E3,4.414835702E1 +2.415033000E3,4.178334533E1 +2.415296000E3,3.571558610E1 +2.415577000E3,3.622280285E1 +2.415839000E3,4.187963398E1 +2.416103000E3,4.120303067E1 +2.416426000E3,5.043875316E1 +2.416696000E3,4.738536839E1 +2.417006000E3,4.790698669E1 +2.417250000E3,4.717323409E1 +2.417613000E3,4.889624394E1 +2.417923000E3,4.615999302E1 +2.418209000E3,4.554232436E1 +2.418487000E3,4.963147342E1 +2.418748000E3,4.540077281E1 +2.419058000E3,4.402622058E1 +2.419355000E3,3.991430025E1 +2.419631000E3,5.699106589E1 +2.419880000E3,4.542610605E1 +2.420140000E3,5.871400849E1 +2.420387000E3,5.593691155E1 +2.420634000E3,5.642590944E1 +2.420987000E3,4.942882304E1 +2.421235000E3,5.122637091E1 +2.421504000E3,5.506353313E1 +2.421808000E3,4.974630362E1 +2.422098000E3,4.922446567E1 +2.422401000E3,4.711891494E1 +2.422653000E3,4.935851062E1 +2.422946000E3,5.223840607E1 +2.423180000E3,5.181747333E1 +2.423433000E3,5.106095739E1 +2.423699000E3,4.283067128E1 +2.424023000E3,4.620110870E1 +2.424283000E3,4.813646184E1 +2.424556000E3,4.673905704E1 +2.424833000E3,5.139038068E1 +2.425085000E3,4.187355918E1 +2.425330000E3,4.200690239E1 +2.425641000E3,4.094986905E1 +2.425891000E3,3.869951887E1 +2.426156000E3,4.295178440E1 +2.426411000E3,4.445235603E1 +2.426673000E3,4.180705342E1 +2.426915000E3,4.159918394E1 +2.427275000E3,5.193727105E1 +2.427528000E3,4.985744468E1 +2.427773000E3,5.143594155E1 +2.428021000E3,5.687627643E1 +2.428258000E3,4.984177159E1 +2.428554000E3,4.104898524E1 +2.428794000E3,3.740238657E1 +2.429102000E3,4.424577609E1 +2.429345000E3,5.022623751E1 +2.429627000E3,5.346928374E1 +2.429864000E3,4.448852620E1 +2.430156000E3,3.611387858E1 +2.430475000E3,3.592739777E1 +2.430726000E3,3.269867125E1 +2.431039000E3,4.089980433E1 +2.431331000E3,3.752068977E1 +2.431567000E3,3.972155082E1 +2.431870000E3,4.098289208E1 +2.432107000E3,4.068605974E1 +2.432406000E3,3.978950334E1 +2.432643000E3,3.435438837E1 +2.432933000E3,3.806187937E1 +2.433169000E3,3.613809925E1 +2.433407000E3,5.573542624E1 +2.433734000E3,4.812688919E1 +2.434035000E3,5.332611421E1 +2.434315000E3,5.453475878E1 +2.434557000E3,5.156731049E1 +2.434849000E3,4.452924889E1 +2.435086000E3,4.091217005E1 +2.435380000E3,3.495963916E1 +2.435633000E3,3.994418328E1 +2.435904000E3,5.345258512E1 +2.436200000E3,4.573029424E1 +2.436434000E3,4.666848361E1 +2.436802000E3,4.148612785E1 +2.437044000E3,3.785277445E1 +2.437301000E3,3.823545546E1 +2.437549000E3,3.883632471E1 +2.437839000E3,4.756553033E1 +2.438077000E3,4.282797221E1 +2.438369000E3,5.291874167E1 +2.438606000E3,5.394671897E1 +2.438862000E3,5.490926284E1 +2.439159000E3,5.465277565E1 +2.439395000E3,5.245345229E1 +2.439637000E3,4.823915254E1 +2.440022000E3,5.658050668E1 +2.440281000E3,5.255468157E1 +2.440546000E3,4.365897331E1 +2.440828000E3,4.187636724E1 +2.441125000E3,4.916172461E1 +2.441365000E3,5.038635874E1 +2.441645000E3,5.238005511E1 +2.441868000E3,4.979548238E1 +2.442114000E3,5.164563876E1 +2.442410000E3,4.795862612E1 +2.442694000E3,4.406311297E1 +2.442980000E3,4.461066687E1 +2.443265000E3,3.990213588E1 +2.443525000E3,4.270339676E1 +2.443815000E3,4.671533321E1 +2.444064000E3,4.922681237E1 +2.444311000E3,5.115751882E1 +2.444605000E3,4.659279655E1 +2.444851000E3,4.805254743E1 +2.445152000E3,4.646584218E1 +2.445447000E3,3.924248597E1 +2.445698000E3,3.657018775E1 +2.445976000E3,3.978585816E1 +2.446317000E3,5.134473527E1 +2.446569000E3,4.872028256E1 +2.446851000E3,4.793203365E1 +2.447088000E3,4.917648823E1 +2.447345000E3,4.514648035E1 +2.447599000E3,4.827609085E1 +2.447864000E3,5.009329877E1 +2.448138000E3,4.858127151E1 +2.448430000E3,4.885678900E1 +2.448726000E3,4.038666943E1 +2.448956000E3,3.788824065E1 +2.449214000E3,4.872306097E1 +2.449516000E3,5.112419798E1 +2.449767000E3,4.394357347E1 +2.450028000E3,5.187358067E1 +2.450298000E3,4.764520743E1 +2.450575000E3,5.323515688E1 +2.450844000E3,4.730661272E1 +2.451150000E3,5.022143967E1 +2.451400000E3,4.244080150E1 +2.451697000E3,4.540622562E1 +2.452002000E3,4.987171470E1 +2.452273000E3,4.928771096E1 +2.452519000E3,4.415614577E1 +2.452847000E3,4.529816891E1 +2.453138000E3,3.130480949E1 +2.453407000E3,3.727195618E1 +2.453707000E3,4.218798188E1 +2.453975000E3,3.196426842E1 +2.454240000E3,2.986758668E1 +2.454534000E3,4.365366219E1 +2.454795000E3,4.363233606E1 +2.455054000E3,4.576258560E1 +2.455297000E3,4.600510844E1 +2.455546000E3,5.143992334E1 +2.455816000E3,4.451792491E1 +2.456172000E3,3.834658463E1 +2.456438000E3,4.961865906E1 +2.456716000E3,4.301133302E1 +2.457025000E3,5.185950840E1 +2.457284000E3,4.578127088E1 +2.457582000E3,4.860789001E1 +2.457857000E3,4.548301241E1 +2.458087000E3,5.726595471E1 +2.458343000E3,4.581143143E1 +2.458590000E3,4.593076535E1 +2.458898000E3,4.646845677E1 +2.459143000E3,4.385664195E1 +2.459499000E3,3.921291428E1 +2.459756000E3,4.336490005E1 +2.460079000E3,5.059416731E1 +2.460323000E3,5.383728406E1 +2.460609000E3,4.336002656E1 +2.460894000E3,3.810358455E1 +2.461148000E3,4.341384577E1 +2.461406000E3,4.240002850E1 +2.461668000E3,4.220171306E1 +2.461957000E3,4.165441002E1 +2.462218000E3,4.110791112E1 +2.462543000E3,3.718059239E1 +2.462873000E3,4.490190793E1 +2.463162000E3,4.449127269E1 +2.463461000E3,5.110192526E1 +2.463709000E3,4.670759724E1 +2.464024000E3,4.554197086E1 +2.464345000E3,4.295638115E1 +2.464598000E3,4.260186095E1 +2.464844000E3,3.838281454E1 +2.465094000E3,4.864552318E1 +2.465348000E3,4.722694913E1 +2.465597000E3,5.723123112E1 +2.465970000E3,5.678247819E1 +2.466226000E3,5.304857482E1 +2.466490000E3,5.799491543E1 +2.466745000E3,5.566332539E1 +2.467000000E3,5.532803606E1 +2.467301000E3,5.480406224E1 +2.467518000E3,5.281426808E1 +2.467773000E3,5.319750336E1 +2.468030000E3,4.504180471E1 +2.468309000E3,4.011552860E1 +2.468536000E3,3.286668959E1 +2.468782000E3,5.187437917E1 +2.469159000E3,5.342027818E1 +2.469405000E3,4.655027014E1 +2.469685000E3,4.875434900E1 +2.469968000E3,4.400777727E1 +2.470228000E3,4.944370484E1 +2.470524000E3,4.819898526E1 +2.470826000E3,4.906267157E1 +2.471101000E3,4.559683511E1 +2.471407000E3,5.066052597E1 +2.471662000E3,5.052511938E1 +2.471933000E3,4.854316053E1 +2.472243000E3,4.720397127E1 +2.472513000E3,4.539713693E1 +2.472765000E3,4.504800702E1 +2.473077000E3,4.756996091E1 +2.473381000E3,4.502772911E1 +2.473668000E3,4.844141365E1 +2.473909000E3,4.718772198E1 +2.474176000E3,5.036014826E1 +2.474415000E3,4.734822430E1 +2.474659000E3,4.506554867E1 +2.474941000E3,4.590585801E1 +2.475227000E3,4.808550728E1 +2.475549000E3,4.744751902E1 +2.475816000E3,5.139502060E1 +2.476110000E3,4.565542501E1 +2.476367000E3,4.502651441E1 +2.476614000E3,4.529198411E1 +2.476876000E3,4.841642572E1 +2.477138000E3,4.904966766E1 +2.477430000E3,5.061185879E1 +2.477703000E3,4.805167318E1 +2.477973000E3,4.840268940E1 +2.478233000E3,4.609690512E1 +2.478491000E3,5.080806253E1 +2.478854000E3,4.929079330E1 +2.479112000E3,4.887431247E1 +2.479382000E3,4.582116343E1 +2.479677000E3,4.614295426E1 +2.479939000E3,5.004731017E1 +2.480247000E3,5.118895049E1 +2.480496000E3,4.750144805E1 +2.480785000E3,4.691637905E1 +2.481084000E3,4.575243018E1 +2.481328000E3,4.498034363E1 +2.481622000E3,5.049144453E1 +2.481951000E3,4.811617152E1 +2.482214000E3,4.600387593E1 +2.482494000E3,5.163944801E1 +2.482753000E3,4.933311419E1 +2.482991000E3,4.946534766E1 +2.483244000E3,4.580757204E1 +2.483487000E3,4.797573247E1 +2.483734000E3,4.560844100E1 +2.483990000E3,5.039329574E1 +2.484313000E3,5.052905321E1 +2.484577000E3,5.131938081E1 +2.484833000E3,4.901245069E1 +2.485113000E3,5.233648083E1 +2.485461000E3,5.215489758E1 +2.485749000E3,5.451606287E1 +2.486018000E3,5.043201098E1 +2.486334000E3,5.091085093E1 +2.486650000E3,4.972266732E1 +2.486916000E3,4.846864702E1 +2.487167000E3,4.843730663E1 +2.487412000E3,5.285205631E1 +2.487677000E3,5.695937588E1 +2.487965000E3,5.067248408E1 +2.488216000E3,4.955689254E1 +2.488580000E3,4.789771891E1 +2.488828000E3,4.640186686E1 +2.489150000E3,4.956289338E1 +2.489428000E3,4.916705799E1 +2.489718000E3,4.250319869E1 +2.489959000E3,4.211788948E1 +2.490259000E3,4.711467977E1 +2.490508000E3,5.336087879E1 +2.490805000E3,5.163346506E1 +2.491066000E3,5.303328317E1 +2.491377000E3,5.018594076E1 +2.491684000E3,4.569780009E1 +2.492029000E3,4.677168871E1 +2.492273000E3,4.586755987E1 +2.492522000E3,5.020047651E1 +2.492768000E3,4.585538278E1 +2.493006000E3,5.027464230E1 +2.493315000E3,4.719632652E1 +2.493608000E3,4.892998103E1 +2.493874000E3,4.659859577E1 +2.494131000E3,4.485377967E1 +2.494387000E3,4.661063763E1 +2.494635000E3,4.873112034E1 +2.494904000E3,5.011233058E1 +2.495259000E3,4.996207620E1 +2.495523000E3,5.026371938E1 +2.495789000E3,4.897334151E1 +2.496086000E3,4.919412247E1 +2.496330000E3,4.448238049E1 +2.496598000E3,5.779881243E1 +2.496845000E3,5.068443192E1 +2.497079000E3,5.452206946E1 +2.497328000E3,6.091811093E1 +2.497574000E3,5.545025588E1 +2.497819000E3,5.118451852E1 +2.498124000E3,5.647063434E1 +2.498436000E3,5.942897676E1 +2.498681000E3,6.063927987E1 +2.498932000E3,5.256584857E1 +2.499203000E3,5.942844343E1 +2.499465000E3,5.268198933E1 +2.499726000E3,5.561310022E1 +2.499989000E3,5.551348586E1 +2.500270000E3,5.728700965E1 +2.500550000E3,5.848024533E1 +2.500856000E3,5.545551244E1 +2.501156000E3,7.074712648E1 +2.501405000E3,6.649397556E1 +2.501727000E3,6.577106108E1 +2.501964000E3,5.791155905E1 +2.502223000E3,6.571272960E1 +2.502476000E3,5.223691777E1 +2.502731000E3,5.099379006E1 +2.502989000E3,4.996024440E1 +2.503265000E3,4.587573023E1 +2.503515000E3,6.660646739E1 +2.503792000E3,5.426812996E1 +2.504090000E3,4.221263073E1 +2.504348000E3,3.961359220E1 +2.504607000E3,3.317448387E1 +2.504957000E3,2.765634596E1 +2.505202000E3,5.260508289E1 +2.505444000E3,4.970766119E1 +2.505723000E3,5.961421356E1 +2.506010000E3,5.761735716E1 +2.506316000E3,4.386011183E1 +2.506629000E3,3.297646158E1 +2.506928000E3,3.461351567E1 +2.507171000E3,3.422494413E1 +2.507415000E3,3.898815557E1 +2.507661000E3,3.916714623E1 +2.507958000E3,4.409544564E1 +2.508199000E3,4.040812578E1 +2.508495000E3,4.100804729E1 +2.508767000E3,4.155083379E1 +2.509073000E3,4.256659126E1 +2.509346000E3,4.665111645E1 +2.509615000E3,4.785704834E1 +2.509926000E3,4.957995318E1 +2.510246000E3,5.281308228E1 +2.510533000E3,5.716195403E1 +2.510847000E3,5.384222007E1 +2.511087000E3,4.682850643E1 +2.511483000E3,5.585229854E1 +2.511769000E3,5.797880255E1 +2.512061000E3,5.008051045E1 +2.512305000E3,4.616221083E1 +2.512545000E3,5.837834308E1 +2.512782000E3,4.588894556E1 +2.513082000E3,5.827978204E1 +2.513321000E3,5.321307958E1 +2.513625000E3,5.419914666E1 +2.513860000E3,4.249936315E1 +2.514160000E3,5.093700871E1 +2.514505000E3,4.733309734E1 +2.514807000E3,5.739188753E1 +2.515049000E3,5.684870925E1 +2.515326000E3,5.429714525E1 +2.515551000E3,5.304528611E1 +2.515847000E3,6.048302750E1 +2.516097000E3,5.298092655E1 +2.516397000E3,5.664346713E1 +2.516634000E3,5.062362510E1 +2.516910000E3,5.059011404E1 +2.517165000E3,5.074931344E1 +2.517424000E3,5.193937267E1 +2.517672000E3,4.773080825E1 +2.517933000E3,4.886471101E1 +2.518191000E3,4.258084657E1 +2.518440000E3,4.144243799E1 +2.518697000E3,3.266068365E1 +2.518962000E3,3.662092465E1 +2.519211000E3,4.002326553E1 +2.519469000E3,5.193824268E1 +2.519821000E3,5.548381163E1 +2.520087000E3,5.245445808E1 +2.520336000E3,4.447536752E1 +2.520718000E3,5.931091731E1 +2.521010000E3,5.514928156E1 +2.521305000E3,5.194242569E1 +2.521541000E3,5.632439964E1 +2.521781000E3,4.768714929E1 +2.522074000E3,3.967116686E1 +2.522306000E3,3.457523914E1 +2.522554000E3,3.414939493E1 +2.522808000E3,3.034285017E1 +2.523103000E3,3.725639399E1 +2.523347000E3,5.824523011E1 +2.523645000E3,5.697741808E1 +2.524002000E3,5.995361389E1 +2.524244000E3,5.516819042E1 +2.524491000E3,5.520201782E1 +2.524765000E3,4.576677797E1 +2.524988000E3,5.785527848E1 +2.525299000E3,5.093237528E1 +2.525544000E3,4.090627494E1 +2.525822000E3,3.111750175E1 +2.526056000E3,2.764971736E1 +2.526311000E3,2.852524033E1 +2.526617000E3,3.508264660E1 +2.526905000E3,5.067917717E1 +2.527241000E3,4.646824007E1 +2.527487000E3,3.686495987E1 +2.527738000E3,3.822220480E1 +2.527988000E3,3.764348220E1 +2.528232000E3,4.278450517E1 +2.528563000E3,4.881983602E1 +2.528870000E3,4.048435148E1 +2.529125000E3,4.047282835E1 +2.529398000E3,4.602715630E1 +2.529632000E3,4.358719476E1 +2.529925000E3,4.185499728E1 +2.530224000E3,4.428160693E1 +2.530451000E3,5.370094630E1 +2.530771000E3,4.662369716E1 +2.531057000E3,4.486368653E1 +2.531322000E3,3.985753269E1 +2.531579000E3,3.868983993E1 +2.531842000E3,4.397673982E1 +2.532129000E3,4.465178920E1 +2.532379000E3,4.071629694E1 +2.532681000E3,3.700154265E1 +2.532925000E3,3.709745900E1 +2.533169000E3,3.856350220E1 +2.533454000E3,3.780017804E1 +2.533739000E3,4.079153270E1 +2.534053000E3,3.467337947E1 +2.534304000E3,3.872357849E1 +2.534571000E3,4.188092371E1 +2.534878000E3,4.226520735E1 +2.535180000E3,4.433351029E1 +2.535433000E3,4.196124368E1 +2.535679000E3,4.159710638E1 +2.535934000E3,4.131920574E1 +2.536230000E3,4.013333591E1 +2.536496000E3,3.861252617E1 +2.536812000E3,3.205810696E1 +2.537071000E3,3.900017908E1 +2.537321000E3,3.720890888E1 +2.537589000E3,3.571752088E1 +2.537899000E3,3.466875388E1 +2.538158000E3,3.490809444E1 +2.538414000E3,2.846246396E1 +2.538721000E3,3.471466025E1 +2.539000000E3,3.262267006E1 +2.539250000E3,2.900340615E1 +2.539526000E3,2.962734770E1 +2.539843000E3,4.051335289E1 +2.540219000E3,3.732414883E1 +2.540478000E3,3.212776280E1 +2.540731000E3,3.980002135E1 +2.541002000E3,4.402529692E1 +2.541305000E3,3.531142487E1 +2.541570000E3,4.157255463E1 +2.541892000E3,4.121686373E1 +2.542138000E3,3.512055425E1 +2.542435000E3,3.058422839E1 +2.542704000E3,3.860796470E1 +2.542951000E3,4.158955283E1 +2.543254000E3,4.126835549E1 +2.543598000E3,4.557459954E1 +2.543842000E3,4.195620726E1 +2.544088000E3,4.759905541E1 +2.544347000E3,4.089593512E1 +2.544592000E3,4.224934090E1 +2.544840000E3,3.548720999E1 +2.545141000E3,4.189266277E1 +2.545422000E3,4.058854606E1 +2.545652000E3,3.761551365E1 +2.545897000E3,3.643024250E1 +2.546173000E3,3.544845567E1 +2.546439000E3,3.816851754E1 +2.546779000E3,3.801212128E1 +2.547110000E3,3.288266257E1 +2.547379000E3,4.063952307E1 +2.547641000E3,4.765684387E1 +2.547893000E3,4.402640436E1 +2.548143000E3,4.172886183E1 +2.548441000E3,3.808222191E1 +2.548685000E3,3.637035664E1 +2.548962000E3,3.879815953E1 +2.549230000E3,5.433785228E1 +2.549540000E3,5.428002325E1 +2.549852000E3,5.430864003E1 +2.550121000E3,5.376325395E1 +2.550389000E3,5.250586376E1 +2.550641000E3,5.329413218E1 +2.550946000E3,3.817927317E1 +2.551218000E3,3.779289824E1 +2.551493000E3,4.904361964E1 +2.551759000E3,5.500168111E1 +2.552006000E3,4.745774118E1 +2.552261000E3,5.304049624E1 +2.552515000E3,4.933664563E1 +2.552779000E3,3.482983031E1 +2.553043000E3,3.914561037E1 +2.553378000E3,3.318943686E1 +2.553659000E3,2.674748735E1 +2.553917000E3,2.500565902E1 +2.554234000E3,3.331261434E1 +2.554489000E3,3.380079275E1 +2.554753000E3,3.632095841E1 +2.554996000E3,3.606888467E1 +2.555239000E3,4.759559903E1 +2.555541000E3,5.588542149E1 +2.555837000E3,5.768171500E1 +2.556076000E3,5.837962370E1 +2.556358000E3,5.761486260E1 +2.556647000E3,5.408185929E1 +2.556914000E3,5.624815374E1 +2.557248000E3,4.727853091E1 +2.557554000E3,3.999550071E1 +2.557822000E3,4.090986684E1 +2.558062000E3,3.411171601E1 +2.558302000E3,3.042998918E1 +2.558550000E3,3.392526215E1 +2.558807000E3,3.801243567E1 +2.559082000E3,4.390440101E1 +2.559357000E3,4.215163378E1 +2.559616000E3,4.616573562E1 +2.559972000E3,4.170066459E1 +2.560245000E3,2.972551911E1 +2.560517000E3,3.987643023E1 +2.560765000E3,4.046237199E1 +2.561011000E3,4.268708813E1 +2.561258000E3,4.450541644E1 +2.561531000E3,4.611922799E1 +2.561775000E3,4.492719317E1 +2.562027000E3,4.345851098E1 +2.562302000E3,5.022295857E1 +2.562533000E3,4.986016935E1 +2.562786000E3,3.932672790E1 +2.563211000E3,3.777119812E1 +2.563479000E3,4.577537823E1 +2.563731000E3,5.443473776E1 +2.563977000E3,5.947837126E1 +2.564252000E3,5.014881480E1 +2.564539000E3,4.884415531E1 +2.564781000E3,4.451698294E1 +2.565088000E3,3.693106642E1 +2.565361000E3,3.096881298E1 +2.565624000E3,2.635486448E1 +2.565885000E3,2.734213385E1 +2.566246000E3,3.979362654E1 +2.566493000E3,3.382738554E1 +2.566797000E3,3.469438245E1 +2.567097000E3,4.097528595E1 +2.567346000E3,4.285297734E1 +2.567644000E3,4.930003444E1 +2.567891000E3,4.540271843E1 +2.568170000E3,3.109775861E1 +2.568407000E3,2.738661195E1 +2.568701000E3,3.024785153E1 +2.568952000E3,3.235217301E1 +2.569220000E3,3.196941264E1 +2.569567000E3,4.299833718E1 +2.569862000E3,4.496000509E1 +2.570178000E3,4.562225815E1 +2.570442000E3,4.437451260E1 +2.570707000E3,3.949227756E1 +2.570950000E3,2.951847370E1 +2.571202000E3,3.800151296E1 +2.571472000E3,4.650517590E1 +2.571732000E3,3.967561664E1 +2.571975000E3,3.149456620E1 +2.572246000E3,5.234083710E1 +2.572527000E3,4.544839619E1 +2.572859000E3,4.436174777E1 +2.573168000E3,4.369290756E1 +2.573429000E3,4.420543128E1 +2.573728000E3,4.389854646E1 +2.573968000E3,4.580346210E1 +2.574268000E3,4.881141748E1 +2.574509000E3,4.708023256E1 +2.574802000E3,3.388696242E1 +2.575045000E3,2.922489212E1 +2.575339000E3,3.941924125E1 +2.575597000E3,4.733040375E1 +2.575906000E3,4.790376430E1 +2.576245000E3,4.328559785E1 +2.576517000E3,4.720947277E1 +2.576791000E3,4.076260480E1 +2.577092000E3,3.249905806E1 +2.577324000E3,3.886850876E1 +2.577566000E3,3.577483806E1 +2.577814000E3,4.105002685E1 +2.578080000E3,3.881208350E1 +2.578375000E3,5.720708534E1 +2.578624000E3,4.933084675E1 +2.578932000E3,5.989261963E1 +2.579254000E3,5.193127116E1 +2.579506000E3,4.843920497E1 +2.579747000E3,4.570821188E1 +2.580001000E3,4.446748829E1 +2.580244000E3,4.006228376E1 +2.580497000E3,2.933332862E1 +2.580745000E3,4.525678604E1 +2.580989000E3,4.717489692E1 +2.581288000E3,5.239736286E1 +2.581587000E3,5.268105849E1 +2.581851000E3,4.960616241E1 +2.582112000E3,4.637217789E1 +2.582361000E3,4.676379781E1 +2.582583000E3,4.083594902E1 +2.582903000E3,2.696140701E1 +2.583176000E3,2.668057590E1 +2.583429000E3,2.900886287E1 +2.583692000E3,2.732690452E1 +2.583951000E3,3.475308428E1 +2.584205000E3,4.782860484E1 +2.584480000E3,4.928978168E1 +2.584742000E3,3.697304160E1 +2.585017000E3,3.390321432E1 +2.585248000E3,4.818778278E1 +2.585552000E3,5.175969441E1 +2.585851000E3,4.752724055E1 +2.586108000E3,5.047732228E1 +2.586408000E3,5.003267867E1 +2.586651000E3,4.995698879E1 +2.586934000E3,4.985539117E1 +2.587202000E3,4.558719065E1 +2.587455000E3,4.973387236E1 +2.587702000E3,5.190737686E1 +2.587964000E3,4.955516560E1 +2.588211000E3,5.039526507E1 +2.588461000E3,3.897042435E1 +2.588748000E3,2.919124678E1 +2.589063000E3,3.061867322E1 +2.589398000E3,4.010104895E1 +2.589690000E3,3.640442215E1 +2.589998000E3,4.479952304E1 +2.590261000E3,4.757967128E1 +2.590558000E3,4.812333533E1 +2.590802000E3,4.603482331E1 +2.591083000E3,2.960043464E1 +2.591326000E3,3.684354753E1 +2.591591000E3,4.359182452E1 +2.591849000E3,4.788602237E1 +2.592228000E3,4.468031543E1 +2.592527000E3,3.894688899E1 +2.592778000E3,2.800490026E1 +2.593035000E3,4.310888325E1 +2.593333000E3,4.628339380E1 +2.593602000E3,4.440124594E1 +2.593883000E3,4.123163794E1 +2.594160000E3,3.127645239E1 +2.594429000E3,3.071812965E1 +2.594749000E3,4.618618296E1 +2.595070000E3,5.248181749E1 +2.595312000E3,4.786265879E1 +2.595668000E3,3.990233287E1 +2.595973000E3,4.173583037E1 +2.596256000E3,3.709278400E1 +2.596497000E3,3.229385861E1 +2.596813000E3,4.380573021E1 +2.597084000E3,4.783628282E1 +2.597325000E3,5.024593568E1 +2.597578000E3,5.102379549E1 +2.597828000E3,4.760481411E1 +2.598089000E3,3.822780835E1 +2.598387000E3,3.417342767E1 +2.598736000E3,2.863579065E1 +2.598981000E3,2.886228233E1 +2.599228000E3,2.855965247E1 +2.599493000E3,3.083396855E1 +2.599764000E3,3.581659374E1 +2.600032000E3,4.317647632E1 +2.600330000E3,4.853625621E1 +2.600623000E3,5.102467342E1 +2.600867000E3,4.877836926E1 +2.601112000E3,4.705612686E1 +2.601365000E3,4.889085742E1 +2.601612000E3,4.654488136E1 +2.601956000E3,4.055024190E1 +2.602220000E3,3.990851266E1 +2.602547000E3,3.648352551E1 +2.602794000E3,5.324982942E1 +2.603078000E3,5.268965363E1 +2.603338000E3,4.851189142E1 +2.603637000E3,5.135006473E1 +2.603925000E3,4.939301404E1 +2.604238000E3,5.337101389E1 +2.604488000E3,5.022765286E1 +2.604734000E3,5.253186666E1 +2.605064000E3,4.127453431E1 +2.605321000E3,4.114070867E1 +2.605572000E3,4.042282231E1 +2.605820000E3,4.255774466E1 +2.606073000E3,4.746726668E1 +2.606319000E3,4.761848671E1 +2.606565000E3,4.983628061E1 +2.606849000E3,3.046517787E1 +2.607082000E3,3.832211131E1 +2.607339000E3,4.741131966E1 +2.607609000E3,4.453335589E1 +2.607874000E3,3.545592153E1 +2.608197000E3,4.672891376E1 +2.608451000E3,4.755881287E1 +2.608706000E3,4.827652641E1 +2.608952000E3,4.727153141E1 +2.609226000E3,4.731450942E1 +2.609537000E3,3.981385402E1 +2.609784000E3,3.194698732E1 +2.610041000E3,3.314164027E1 +2.610283000E3,2.819786732E1 +2.610546000E3,2.664547785E1 +2.610857000E3,2.913544778E1 +2.611125000E3,3.961651759E1 +2.611432000E3,3.852777426E1 +2.611666000E3,3.205673146E1 +2.611951000E3,4.233182010E1 +2.612229000E3,3.378509898E1 +2.612454000E3,4.071755552E1 +2.612730000E3,5.018278065E1 +2.613050000E3,4.100034395E1 +2.613359000E3,3.892108016E1 +2.613628000E3,5.091321799E1 +2.613871000E3,4.336916838E1 +2.614108000E3,3.960788811E1 +2.614408000E3,3.948227358E1 +2.614722000E3,3.631863435E1 +2.614975000E3,4.057042340E1 +2.615256000E3,4.414132009E1 +2.615486000E3,4.180934435E1 +2.615750000E3,4.153999936E1 +2.615997000E3,3.521796466E1 +2.616260000E3,5.443854687E1 +2.616548000E3,5.408118563E1 +2.616842000E3,4.951275264E1 +2.617090000E3,5.182722031E1 +2.617344000E3,4.327522742E1 +2.617643000E3,5.375122422E1 +2.617975000E3,5.216635190E1 +2.618233000E3,4.126006713E1 +2.618497000E3,4.980260599E1 +2.618804000E3,4.655838197E1 +2.619044000E3,4.977945459E1 +2.619327000E3,4.875559075E1 +2.619562000E3,4.983226039E1 +2.619834000E3,4.741689273E1 +2.620075000E3,4.923498746E1 +2.620352000E3,4.923432072E1 +2.620664000E3,4.040876723E1 +2.620916000E3,3.889825840E1 +2.621142000E3,5.245081579E1 +2.621448000E3,4.684934794E1 +2.621687000E3,4.583906640E1 +2.621992000E3,4.366517623E1 +2.622230000E3,3.373873872E1 +2.622475000E3,3.701694694E1 +2.622750000E3,3.544967426E1 +2.623008000E3,3.363206222E1 +2.623285000E3,4.009589135E1 +2.623562000E3,4.408709562E1 +2.623825000E3,4.800133533E1 +2.624131000E3,4.855432282E1 +2.624414000E3,4.808187444E1 +2.624671000E3,5.252566194E1 +2.624932000E3,4.890333861E1 +2.625183000E3,4.370428781E1 +2.625430000E3,3.668118979E1 +2.625747000E3,4.353955331E1 +2.626003000E3,4.224026412E1 +2.626267000E3,4.311785789E1 +2.626514000E3,3.517806855E1 +2.626763000E3,3.981966751E1 +2.627025000E3,3.444602265E1 +2.627334000E3,3.341390757E1 +2.627660000E3,3.926570124E1 +2.627920000E3,4.341089288E1 +2.628216000E3,4.081134870E1 +2.628467000E3,3.912400300E1 +2.628730000E3,3.657553946E1 +2.629000000E3,3.072838888E1 +2.629284000E3,2.929703023E1 +2.629549000E3,3.378014550E1 +2.629844000E3,4.760306323E1 +2.630080000E3,4.024322042E1 +2.630373000E3,3.235913140E1 +2.630611000E3,3.920509877E1 +2.630919000E3,5.103841717E1 +2.631222000E3,5.813980805E1 +2.631514000E3,5.190256812E1 +2.631753000E3,4.653294376E1 +2.632054000E3,4.782140153E1 +2.632295000E3,4.977458693E1 +2.632592000E3,5.371197571E1 +2.632828000E3,5.056512655E1 +2.633140000E3,5.325824914E1 +2.633383000E3,4.973751947E1 +2.633632000E3,4.853342473E1 +2.633950000E3,3.905011010E1 +2.634254000E3,3.751700759E1 +2.634549000E3,5.292771607E1 +2.634786000E3,5.557450981E1 +2.635082000E3,4.974692283E1 +2.635319000E3,5.393938197E1 +2.635611000E3,4.675981835E1 +2.635848000E3,4.299614910E1 +2.636145000E3,3.756646750E1 +2.636395000E3,3.824353200E1 +2.636648000E3,3.045317917E1 +2.636942000E3,3.257931849E1 +2.637299000E3,3.010616025E1 +2.637599000E3,4.995329379E1 +2.637834000E3,4.824584689E1 +2.638071000E3,5.059212149E1 +2.638363000E3,5.330633429E1 +2.638612000E3,5.343612136E1 +2.638897000E3,4.755550111E1 +2.639122000E3,4.119881812E1 +2.639362000E3,3.902726568E1 +2.639659000E3,4.451944661E1 +2.639896000E3,4.587471035E1 +2.640164000E3,4.115502802E1 +2.640409000E3,4.505311495E1 +2.640656000E3,4.913968689E1 +2.640951000E3,5.110923180E1 +2.641208000E3,4.281604120E1 +2.641505000E3,4.825854961E1 +2.641748000E3,4.861588211E1 +2.642059000E3,4.450542116E1 +2.642304000E3,4.274821036E1 +2.642556000E3,3.503446158E1 +2.642862000E3,4.080900103E1 +2.643164000E3,4.152079562E1 +2.643527000E3,3.935881933E1 +2.643833000E3,3.760570593E1 +2.644082000E3,3.959144469E1 +2.644327000E3,4.007918652E1 +2.644573000E3,4.288120719E1 +2.644814000E3,4.793099478E1 +2.645114000E3,4.424069452E1 +2.645391000E3,4.078427844E1 +2.645635000E3,3.902795236E1 +2.645871000E3,4.393773718E1 +2.646111000E3,4.085627764E1 +2.646355000E3,4.393316509E1 +2.646690000E3,4.428892908E1 +2.646958000E3,4.601464396E1 +2.647235000E3,4.300358696E1 +2.647474000E3,4.083829680E1 +2.647758000E3,5.406220971E1 +2.648003000E3,4.253716581E1 +2.648273000E3,4.506680000E1 +2.648514000E3,3.500046728E1 +2.648758000E3,3.537281462E1 +2.649004000E3,5.013819891E1 +2.649251000E3,5.388943830E1 +2.649556000E3,5.656370208E1 +2.649891000E3,5.696480404E1 +2.650216000E3,4.675400561E1 +2.650515000E3,4.179549274E1 +2.650777000E3,4.536624285E1 +2.651084000E3,4.297370528E1 +2.651336000E3,4.376785410E1 +2.651635000E3,3.354560746E1 +2.651881000E3,2.537939319E1 +2.652180000E3,3.168783420E1 +2.652481000E3,4.898553010E1 +2.652737000E3,5.438993966E1 +2.652992000E3,4.963834041E1 +2.653252000E3,4.227369117E1 +2.653502000E3,4.301436765E1 +2.653812000E3,3.649724292E1 +2.654061000E3,4.086211966E1 +2.654320000E3,3.223281741E1 +2.654605000E3,2.807672508E1 +2.654836000E3,2.764825285E1 +2.655100000E3,4.598866982E1 +2.655350000E3,4.383741939E1 +2.655590000E3,4.883555528E1 +2.655837000E3,4.815765811E1 +2.656131000E3,5.047261312E1 +2.656369000E3,5.124829846E1 +2.656626000E3,3.956134092E1 +2.656925000E3,3.503286763E1 +2.657200000E3,3.224209198E1 +2.657447000E3,4.294806319E1 +2.657761000E3,4.898454413E1 +2.658011000E3,5.320780356E1 +2.658286000E3,5.345186604E1 +2.658542000E3,4.849291145E1 +2.658789000E3,5.098648363E1 +2.659034000E3,4.892931203E1 +2.659289000E3,4.580698225E1 +2.659530000E3,3.709695762E1 +2.659834000E3,3.457925551E1 +2.660081000E3,3.855219813E1 +2.660383000E3,3.845534481E1 +2.660628000E3,4.619372518E1 +2.660921000E3,4.848307744E1 +2.661167000E3,4.790880967E1 +2.661464000E3,4.667520128E1 +2.661710000E3,4.098851532E1 +2.662006000E3,4.035468673E1 +2.662245000E3,3.753010710E1 +2.662592000E3,4.792080660E1 +2.662862000E3,4.709835917E1 +2.663123000E3,3.501409506E1 +2.663374000E3,3.240664296E1 +2.663631000E3,4.326696615E1 +2.663874000E3,4.411177933E1 +2.664133000E3,3.936378145E1 +2.664382000E3,3.443614227E1 +2.664648000E3,3.761654306E1 +2.664944000E3,5.164457484E1 +2.665198000E3,2.810669920E1 +2.665512000E3,2.931307063E1 +2.665876000E3,3.108643425E1 +2.666131000E3,3.278101889E1 +2.666439000E3,4.277860150E1 +2.666693000E3,4.213131936E1 +2.667002000E3,3.935849781E1 +2.667259000E3,4.137879880E1 +2.667575000E3,3.790565018E1 +2.667827000E3,3.845274836E1 +2.668153000E3,3.676763670E1 +2.668452000E3,3.751975183E1 +2.668696000E3,3.224848897E1 +2.669023000E3,3.611134142E1 +2.669316000E3,4.467495655E1 +2.669607000E3,4.735906080E1 +2.669885000E3,5.159453510E1 +2.670167000E3,5.321308782E1 +2.670485000E3,5.282242631E1 +2.670747000E3,5.127719277E1 +2.670997000E3,4.902251972E1 +2.671243000E3,4.450532678E1 +2.671540000E3,3.864078148E1 +2.671788000E3,3.720620343E1 +2.672044000E3,4.496142790E1 +2.672357000E3,4.705640535E1 +2.672617000E3,3.890316941E1 +2.672864000E3,4.027639889E1 +2.673159000E3,4.202335245E1 +2.673421000E3,4.285452583E1 +2.673720000E3,3.626679930E1 +2.673964000E3,4.670395357E1 +2.674210000E3,4.915586670E1 +2.674514000E3,5.353785994E1 +2.674811000E3,5.414016767E1 +2.675048000E3,5.591079353E1 +2.675364000E3,3.844031623E1 +2.675661000E3,3.124520008E1 +2.675946000E3,3.566755596E1 +2.676189000E3,3.490423263E1 +2.676498000E3,5.070292882E1 +2.676799000E3,5.356134163E1 +2.677047000E3,5.161634227E1 +2.677305000E3,5.185439004E1 +2.677581000E3,5.315585532E1 +2.677832000E3,4.418578879E1 +2.678087000E3,3.972693415E1 +2.678335000E3,4.338465258E1 +2.678650000E3,5.168404535E1 +2.678934000E3,4.984483773E1 +2.679249000E3,4.977401184E1 +2.679507000E3,5.044345616E1 +2.679823000E3,4.232585634E1 +2.680128000E3,3.026551109E1 +2.680400000E3,3.009656886E1 +2.680660000E3,4.894119824E1 +2.680913000E3,4.712312643E1 +2.681208000E3,4.239602863E1 +2.681477000E3,4.875338950E1 +2.681768000E3,4.887945421E1 +2.682128000E3,4.379352407E1 +2.682394000E3,4.073494394E1 +2.682637000E3,3.685872977E1 +2.682895000E3,2.883047793E1 +2.683163000E3,3.769147996E1 +2.683455000E3,3.713975885E1 +2.683749000E3,4.855681627E1 +2.683994000E3,4.936430656E1 +2.684290000E3,5.303947120E1 +2.684540000E3,5.031092673E1 +2.684833000E3,4.783130186E1 +2.685073000E3,4.898734587E1 +2.685348000E3,4.686166956E1 +2.685598000E3,4.244245178E1 +2.685917000E3,3.872119900E1 +2.686161000E3,4.891396583E1 +2.686434000E3,4.491629365E1 +2.686687000E3,3.588391777E1 +2.686952000E3,3.156965948E1 +2.687206000E3,3.184725563E1 +2.687480000E3,3.153561496E1 +2.687733000E3,3.669659228E1 +2.688049000E3,3.507922771E1 +2.688340000E3,3.251056517E1 +2.688645000E3,4.079174670E1 +2.688915000E3,4.837277005E1 +2.689163000E3,4.669136560E1 +2.689426000E3,3.659115086E1 +2.689751000E3,4.814125321E1 +2.689994000E3,4.721335081E1 +2.690235000E3,5.119773767E1 +2.690471000E3,4.584232122E1 +2.690738000E3,4.687969307E1 +2.691006000E3,4.116197132E1 +2.691312000E3,2.850019915E1 +2.691659000E3,3.175399572E1 +2.691948000E3,3.215115185E1 +2.692197000E3,2.655209633E1 +2.692466000E3,3.136629444E1 +2.692727000E3,2.928762690E1 +2.692976000E3,2.688909217E1 +2.693281000E3,3.350197248E1 +2.693518000E3,3.760267236E1 +2.693776000E3,3.194141055E1 +2.694032000E3,3.113878807E1 +2.694299000E3,2.830606211E1 +2.694602000E3,2.632227285E1 +2.694941000E3,2.736240000E1 +2.695184000E3,3.956118458E1 +2.695488000E3,4.069974415E1 +2.695732000E3,4.498590768E1 +2.696030000E3,3.370199172E1 +2.696300000E3,3.284857688E1 +2.696535000E3,2.919082343E1 +2.696815000E3,3.146626789E1 +2.697056000E3,2.968971947E1 +2.697354000E3,4.116455896E1 +2.697640000E3,5.055341773E1 +2.697888000E3,5.163434474E1 +2.698155000E3,4.792936353E1 +2.698456000E3,4.111753823E1 +2.698732000E3,4.594070701E1 +2.699031000E3,3.204472070E1 +2.699273000E3,2.836668859E1 +2.699578000E3,2.624009297E1 +2.699855000E3,2.719538340E1 +2.700110000E3,2.868563476E1 +2.700399000E3,2.757039916E1 +2.700662000E3,2.546630310E1 +2.700960000E3,2.981844134E1 +2.701310000E3,3.063471239E1 +2.701629000E3,4.014173680E1 +2.701894000E3,3.281157953E1 +2.702206000E3,4.268438101E1 +2.702448000E3,4.272045970E1 +2.702710000E3,4.782744516E1 +2.702984000E3,4.067538265E1 +2.703255000E3,3.821763448E1 +2.703566000E3,3.373237040E1 +2.703865000E3,2.762261654E1 +2.704108000E3,3.058182972E1 +2.704366000E3,4.157303269E1 +2.704695000E3,4.128988216E1 +2.705002000E3,3.725674585E1 +2.705260000E3,3.318881716E1 +2.705544000E3,3.512644750E1 +2.705774000E3,3.012622541E1 +2.706039000E3,3.307868989E1 +2.706297000E3,3.089854998E1 +2.706599000E3,2.870455364E1 +2.706901000E3,2.573473536E1 +2.707155000E3,2.708285982E1 +2.707419000E3,2.641018696E1 +2.707644000E3,2.532685142E1 +2.707945000E3,2.741320006E1 +2.708188000E3,2.764718970E1 +2.708460000E3,3.745935532E1 +2.708711000E3,4.292241509E1 +2.708955000E3,4.431523077E1 +2.709266000E3,3.812245251E1 +2.709534000E3,3.199637282E1 +2.709802000E3,3.030937111E1 +2.710049000E3,3.172341474E1 +2.710303000E3,4.706685853E1 +2.710610000E3,4.372593931E1 +2.710859000E3,4.298246415E1 +2.711196000E3,4.313732995E1 +2.711485000E3,3.646858634E1 +2.711745000E3,3.547356546E1 +2.712003000E3,4.802507202E1 +2.712259000E3,4.666185634E1 +2.712527000E3,4.298723738E1 +2.712813000E3,3.203029787E1 +2.713082000E3,2.721140687E1 +2.713344000E3,3.967881707E1 +2.713594000E3,5.017429445E1 +2.713859000E3,4.690730331E1 +2.714106000E3,4.892140969E1 +2.714475000E3,4.312346900E1 +2.714730000E3,4.926615820E1 +2.714984000E3,4.690558758E1 +2.715298000E3,3.116292546E1 +2.715563000E3,2.731472603E1 +2.715855000E3,3.029992609E1 +2.716160000E3,3.149201904E1 +2.716442000E3,2.826058660E1 +2.716703000E3,2.713282366E1 +2.716957000E3,3.659207256E1 +2.717253000E3,3.982143620E1 +2.717592000E3,4.316888996E1 +2.717851000E3,4.348787554E1 +2.718149000E3,4.336902207E1 +2.718464000E3,4.494305168E1 +2.718765000E3,4.280996114E1 +2.719042000E3,4.083199069E1 +2.719277000E3,3.924180447E1 +2.719573000E3,2.985025677E1 +2.719800000E3,2.924980764E1 +2.720042000E3,2.589394072E1 +2.720346000E3,2.996884267E1 +2.720607000E3,2.951796470E1 +2.720882000E3,2.762273017E1 +2.721181000E3,4.946261833E1 +2.721422000E3,4.848220411E1 +2.721736000E3,4.816357380E1 +2.722001000E3,5.238238407E1 +2.722305000E3,5.586118797E1 +2.722602000E3,5.474108905E1 +2.722856000E3,5.089156984E1 +2.723105000E3,4.900978141E1 +2.723369000E3,5.541376880E1 +2.723666000E3,4.827427134E1 +2.723997000E3,4.802338633E1 +2.724296000E3,3.537215093E1 +2.724548000E3,3.822637167E1 +2.724844000E3,3.388327957E1 +2.725086000E3,3.756611639E1 +2.725338000E3,4.489615211E1 +2.725635000E3,5.048833137E1 +2.725871000E3,4.298428385E1 +2.726174000E3,3.303114009E1 +2.726475000E3,4.527811220E1 +2.726764000E3,4.815487328E1 +2.727017000E3,4.761823346E1 +2.727328000E3,4.180028821E1 +2.727607000E3,4.512936944E1 +2.727849000E3,4.337880786E1 +2.728101000E3,4.031817829E1 +2.728401000E3,3.509684782E1 +2.728650000E3,4.495565250E1 +2.728895000E3,4.157595660E1 +2.729138000E3,5.008202715E1 +2.729381000E3,5.308960545E1 +2.729622000E3,4.943413955E1 +2.729917000E3,4.820467383E1 +2.730234000E3,5.168344618E1 +2.730544000E3,5.128425900E1 +2.730837000E3,5.242528085E1 +2.731075000E3,5.125548047E1 +2.731382000E3,5.027678189E1 +2.731625000E3,4.595108129E1 +2.731917000E3,5.425640288E1 +2.732229000E3,5.493458667E1 +2.732522000E3,5.383738769E1 +2.732781000E3,4.577468908E1 +2.733036000E3,4.877165484E1 +2.733337000E3,5.155317163E1 +2.733582000E3,4.868465804E1 +2.733904000E3,5.094377769E1 +2.734158000E3,4.778052408E1 +2.734485000E3,4.980696312E1 +2.734788000E3,5.229980528E1 +2.735043000E3,4.487473927E1 +2.735323000E3,5.405477376E1 +2.735550000E3,5.095910777E1 +2.735795000E3,4.081340338E1 +2.736110000E3,3.942379743E1 +2.736352000E3,4.377765131E1 +2.736599000E3,4.311237352E1 +2.736822000E3,4.659947655E1 +2.737071000E3,4.430846393E1 +2.737313000E3,4.579154087E1 +2.737577000E3,4.628223866E1 +2.737831000E3,3.937286623E1 +2.738094000E3,3.852847368E1 +2.738336000E3,3.907921933E1 +2.738583000E3,5.112703685E1 +2.738825000E3,4.827754167E1 +2.739100000E3,4.022366081E1 +2.739352000E3,3.342841986E1 +2.739649000E3,3.354947585E1 +2.740003000E3,2.967395260E1 +2.740259000E3,4.724158021E1 +2.740515000E3,4.406232704E1 +2.740781000E3,4.128290785E1 +2.741030000E3,3.766271195E1 +2.741274000E3,3.234308905E1 +2.741542000E3,5.345026714E1 +2.741790000E3,5.189834860E1 +2.742037000E3,4.310520052E1 +2.742373000E3,3.005340200E1 +2.742661000E3,3.957498865E1 +2.742905000E3,4.298992085E1 +2.743235000E3,3.914359224E1 +2.743487000E3,4.665969106E1 +2.743742000E3,4.569837618E1 +2.743989000E3,4.037243126E1 +2.744288000E3,4.393151618E1 +2.744525000E3,4.191552922E1 +2.744830000E3,3.855450094E1 +2.745068000E3,3.137426682E1 +2.745312000E3,3.988970586E1 +2.745595000E3,4.261856210E1 +2.745912000E3,4.545535941E1 +2.746178000E3,3.982007681E1 +2.746515000E3,3.873990925E1 +2.746799000E3,4.024486228E1 +2.747097000E3,3.778822068E1 +2.747346000E3,3.349647091E1 +2.747587000E3,3.949530039E1 +2.747884000E3,4.424971453E1 +2.748182000E3,4.109440717E1 +2.748426000E3,4.429824127E1 +2.748724000E3,3.941870140E1 +2.749014000E3,3.719766140E1 +2.749309000E3,3.407061301E1 +2.749659000E3,3.362708714E1 +2.749929000E3,4.111324363E1 +2.750185000E3,4.275268079E1 +2.750445000E3,5.624172952E1 +2.750726000E3,4.374037489E1 +2.750957000E3,4.189644016E1 +2.751207000E3,3.621210842E1 +2.751519000E3,4.177841495E1 +2.751770000E3,4.048458953E1 +2.752052000E3,3.923884976E1 +2.752303000E3,3.426258793E1 +2.752575000E3,3.252443323E1 +2.752926000E3,3.211416673E1 +2.753222000E3,3.245023971E1 +2.753483000E3,3.266068265E1 +2.753758000E3,4.004662592E1 +2.754054000E3,4.872983792E1 +2.754320000E3,5.041613029E1 +2.754567000E3,4.540589836E1 +2.754814000E3,3.042430240E1 +2.755080000E3,3.072459076E1 +2.755376000E3,3.998104284E1 +2.755642000E3,4.049850263E1 +2.755970000E3,4.294486763E1 +2.756315000E3,4.067196783E1 +2.756573000E3,4.772031632E1 +2.756825000E3,4.988707098E1 +2.757139000E3,4.555538995E1 +2.757388000E3,4.252022698E1 +2.757651000E3,3.810962452E1 +2.757917000E3,3.494795311E1 +2.758159000E3,3.247098224E1 +2.758413000E3,3.588027190E1 +2.758665000E3,3.200494843E1 +2.758920000E3,4.772506231E1 +2.759171000E3,3.775844318E1 +2.759507000E3,3.920116655E1 +2.759772000E3,4.528245497E1 +2.760086000E3,4.240466142E1 +2.760349000E3,4.544544837E1 +2.760652000E3,4.039389797E1 +2.760923000E3,3.896680017E1 +2.761194000E3,4.381534416E1 +2.761436000E3,4.424202471E1 +2.761681000E3,4.737958135E1 +2.761960000E3,4.213672401E1 +2.762194000E3,4.516117441E1 +2.762462000E3,4.279973284E1 +2.762806000E3,3.859577230E1 +2.763061000E3,4.880977241E1 +2.763403000E3,4.365184399E1 +2.763660000E3,3.848143477E1 +2.763932000E3,4.787104427E1 +2.764214000E3,3.823665924E1 +2.764451000E3,3.049392521E1 +2.764732000E3,3.086844430E1 +2.764975000E3,2.587396098E1 +2.765284000E3,3.362049288E1 +2.765536000E3,3.353664382E1 +2.765825000E3,5.140360254E1 +2.766193000E3,5.105178275E1 +2.766449000E3,5.027787452E1 +2.766756000E3,4.961194015E1 +2.766992000E3,4.473604482E1 +2.767290000E3,5.567849424E1 +2.767540000E3,5.366739238E1 +2.767788000E3,5.268444481E1 +2.768092000E3,4.378358357E1 +2.768389000E3,4.285786187E1 +2.768638000E3,3.838737205E1 +2.768928000E3,4.053738598E1 +2.769250000E3,3.914310468E1 +2.769517000E3,3.950994015E1 +2.769781000E3,4.085678781E1 +2.770095000E3,3.706118568E1 +2.770362000E3,3.878826243E1 +2.770640000E3,4.509160576E1 +2.770877000E3,4.395611401E1 +2.771129000E3,3.894826552E1 +2.771368000E3,3.783168139E1 +2.771620000E3,3.074559821E1 +2.771881000E3,4.191911052E1 +2.772136000E3,4.492008577E1 +2.772447000E3,3.666714779E1 +2.772710000E3,4.135207765E1 +2.772994000E3,4.645886813E1 +2.773238000E3,5.078995440E1 +2.773478000E3,5.706152467E1 +2.773725000E3,5.135582573E1 +2.773990000E3,4.900548267E1 +2.774266000E3,5.275962483E1 +2.774567000E3,3.947101760E1 +2.774806000E3,4.078518654E1 +2.775113000E3,4.929998433E1 +2.775417000E3,4.396253608E1 +2.775784000E3,4.382194135E1 +2.776077000E3,4.131860223E1 +2.776341000E3,4.321133953E1 +2.776596000E3,3.942571045E1 +2.776881000E3,5.035254190E1 +2.777176000E3,5.596334670E1 +2.777432000E3,6.003222989E1 +2.777730000E3,5.139953750E1 +2.778036000E3,5.596001036E1 +2.778330000E3,5.632045587E1 +2.778567000E3,5.352711698E1 +2.778873000E3,5.160150080E1 +2.779243000E3,5.407354895E1 +2.779513000E3,5.151192380E1 +2.779810000E3,5.479493680E1 +2.780084000E3,5.006197117E1 +2.780351000E3,5.012247277E1 +2.780644000E3,4.598086802E1 +2.780884000E3,3.959492635E1 +2.781142000E3,3.571624227E1 +2.781421000E3,4.082207018E1 +2.781720000E3,5.162800696E1 +2.781984000E3,5.211692198E1 +2.782250000E3,5.017743125E1 +2.782617000E3,4.685740156E1 +2.782916000E3,4.348825959E1 +2.783213000E3,3.825858224E1 +2.783454000E3,4.923981343E1 +2.783750000E3,5.319160353E1 +2.783992000E3,4.967899375E1 +2.784288000E3,3.952802481E1 +2.784535000E3,3.328379343E1 +2.784779000E3,3.014350405E1 +2.785020000E3,3.405755755E1 +2.785313000E3,4.653255974E1 +2.785639000E3,4.571255084E1 +2.785896000E3,4.212654376E1 +2.786166000E3,4.635178938E1 +2.786421000E3,4.614547408E1 +2.786716000E3,4.279815144E1 +2.787018000E3,3.739201392E1 +2.787261000E3,4.297599275E1 +2.787569000E3,5.279236826E1 +2.787869000E3,4.385267374E1 +2.788181000E3,3.538660905E1 +2.788488000E3,4.283741498E1 +2.788738000E3,3.898018884E1 +2.789079000E3,4.417569536E1 +2.789327000E3,3.821417555E1 +2.789586000E3,4.124587088E1 +2.789850000E3,4.583617377E1 +2.790116000E3,4.758354441E1 +2.790413000E3,4.386951397E1 +2.790662000E3,4.527431896E1 +2.790956000E3,4.454979637E1 +2.791207000E3,4.019280914E1 +2.791465000E3,4.549375778E1 +2.791714000E3,4.076569420E1 +2.791963000E3,3.807465350E1 +2.792293000E3,5.201775254E1 +2.792550000E3,4.217772267E1 +2.792797000E3,5.472035384E1 +2.793107000E3,5.403984906E1 +2.793357000E3,5.591746790E1 +2.793622000E3,5.564159884E1 +2.793875000E3,5.646584479E1 +2.794118000E3,5.185594958E1 +2.794377000E3,4.895735059E1 +2.794636000E3,5.654557288E1 +2.794943000E3,5.012866956E1 +2.795254000E3,4.757016947E1 +2.795528000E3,5.211434220E1 +2.795790000E3,4.452402763E1 +2.796058000E3,4.290214665E1 +2.796307000E3,3.465820610E1 +2.796556000E3,4.339944359E1 +2.796852000E3,4.313164949E1 +2.797091000E3,5.438037991E1 +2.797389000E3,5.514175593E1 +2.797635000E3,4.928848190E1 +2.797924000E3,4.659784940E1 +2.798220000E3,4.998887096E1 +2.798537000E3,4.486399829E1 +2.798842000E3,4.885866840E1 +2.799091000E3,4.635335968E1 +2.799347000E3,4.504358299E1 +2.799594000E3,3.958005741E1 +2.799833000E3,4.827229253E1 +2.800082000E3,4.830536262E1 +2.800388000E3,4.659260793E1 +2.800673000E3,4.111758509E1 +2.800972000E3,4.464305855E1 +2.801233000E3,4.497276151E1 +2.801524000E3,3.374775892E1 +2.801884000E3,3.426238632E1 +2.802202000E3,3.521995684E1 +2.802451000E3,3.181302785E1 +2.802708000E3,2.794884084E1 +2.803019000E3,3.320140571E1 +2.803325000E3,3.478175393E1 +2.803626000E3,3.529465039E1 +2.803932000E3,3.962950189E1 +2.804222000E3,5.725685057E1 +2.804486000E3,5.740119524E1 +2.804784000E3,5.069347451E1 +2.805056000E3,5.047632669E1 +2.805376000E3,5.207930289E1 +2.805626000E3,5.264810014E1 +2.805887000E3,5.288954519E1 +2.806177000E3,4.457356662E1 +2.806431000E3,3.885566564E1 +2.806679000E3,3.768676842E1 +2.806944000E3,3.953483275E1 +2.807192000E3,4.348722722E1 +2.807514000E3,4.091620627E1 +2.807832000E3,4.192587435E1 +2.808086000E3,4.434501723E1 +2.808380000E3,4.393917252E1 +2.808686000E3,4.250763593E1 +2.809001000E3,4.146719312E1 +2.809249000E3,4.084508562E1 +2.809517000E3,4.466153637E1 +2.809817000E3,4.002274614E1 +2.810111000E3,4.310032831E1 +2.810375000E3,4.901386280E1 +2.810661000E3,4.607368963E1 +2.810927000E3,4.387647276E1 +2.811225000E3,5.143943484E1 +2.811469000E3,5.045193234E1 +2.811861000E3,4.363012565E1 +2.812115000E3,4.450854658E1 +2.812371000E3,4.453857946E1 +2.812631000E3,4.628101753E1 +2.812921000E3,4.634691523E1 +2.813212000E3,4.654803531E1 +2.813510000E3,4.718980060E1 +2.813758000E3,4.430765323E1 +2.814051000E3,4.322664022E1 +2.814349000E3,4.450224091E1 +2.814582000E3,4.170367724E1 +2.814868000E3,3.985315953E1 +2.815113000E3,5.280042862E1 +2.815400000E3,4.119993511E1 +2.815662000E3,4.251502783E1 +2.815937000E3,4.221594106E1 +2.816186000E3,4.475181393E1 +2.816425000E3,4.757705666E1 +2.816666000E3,4.971185267E1 +2.816968000E3,4.862141287E1 +2.817211000E3,4.713523003E1 +2.817492000E3,4.541478066E1 +2.817737000E3,4.363493262E1 +2.817996000E3,4.428814895E1 +2.818246000E3,4.395099122E1 +2.818516000E3,4.781334664E1 +2.818773000E3,4.439472962E1 +2.819027000E3,4.768107540E1 +2.819278000E3,4.535748265E1 +2.819523000E3,5.061196572E1 +2.819779000E3,4.816069594E1 +2.820044000E3,4.715573746E1 +2.820374000E3,4.919198579E1 +2.820635000E3,5.486134785E1 +2.820897000E3,4.845922458E1 +2.821173000E3,4.486224636E1 +2.821520000E3,4.543631827E1 +2.821781000E3,4.823449020E1 +2.822049000E3,4.622456265E1 +2.822354000E3,3.467019045E1 +2.822632000E3,3.820707315E1 +2.822892000E3,3.870865044E1 +2.823175000E3,3.526203974E1 +2.823424000E3,3.398332746E1 +2.823673000E3,4.060940798E1 +2.823924000E3,4.531267955E1 +2.824156000E3,4.823172894E1 +2.824426000E3,5.381643572E1 +2.824772000E3,5.219878503E1 +2.825053000E3,4.888255160E1 +2.825277000E3,4.023650802E1 +2.825526000E3,3.467455539E1 +2.825785000E3,3.818404386E1 +2.826078000E3,4.122702652E1 +2.826315000E3,3.713088668E1 +2.826619000E3,4.891468535E1 +2.826912000E3,5.266971981E1 +2.827148000E3,4.991025067E1 +2.827457000E3,5.435242869E1 +2.827718000E3,5.378448717E1 +2.828053000E3,5.171570017E1 +2.828327000E3,5.600593919E1 +2.828581000E3,5.175339102E1 +2.828821000E3,4.567582373E1 +2.829101000E3,3.417267221E1 +2.829337000E3,3.532670702E1 +2.829576000E3,4.323212593E1 +2.829823000E3,3.952189104E1 +2.830096000E3,4.372473758E1 +2.830363000E3,4.288959864E1 +2.830609000E3,3.903893871E1 +2.830954000E3,3.847274859E1 +2.831281000E3,4.911689413E1 +2.831539000E3,5.342672798E1 +2.831798000E3,5.558955965E1 +2.832091000E3,5.519004987E1 +2.832341000E3,5.877942264E1 +2.832589000E3,4.602825434E1 +2.832861000E3,3.380054471E1 +2.833107000E3,3.583644563E1 +2.833403000E3,4.160983164E1 +2.833653000E3,3.903662215E1 +2.833958000E3,3.879412363E1 +2.834222000E3,4.121083607E1 +2.834460000E3,4.235130104E1 +2.834723000E3,5.615135633E1 +2.834993000E3,5.355273371E1 +2.835271000E3,4.896976792E1 +2.835535000E3,5.132324538E1 +2.835792000E3,5.529277110E1 +2.836041000E3,5.163674064E1 +2.836366000E3,4.657927993E1 +2.836613000E3,4.238907241E1 +2.836875000E3,5.376683406E1 +2.837143000E3,5.052269952E1 +2.837398000E3,5.018740192E1 +2.837697000E3,4.680907883E1 +2.837961000E3,4.427452663E1 +2.838227000E3,3.300759096E1 +2.838490000E3,3.639504198E1 +2.838784000E3,4.617517315E1 +2.839084000E3,4.692063960E1 +2.839325000E3,4.445415179E1 +2.839620000E3,4.215561710E1 +2.839863000E3,4.433766229E1 +2.840168000E3,4.210423337E1 +2.840460000E3,3.873922427E1 +2.840768000E3,3.717852459E1 +2.841057000E3,3.957811826E1 +2.841313000E3,3.760389186E1 +2.841638000E3,4.310249633E1 +2.841921000E3,4.813095040E1 +2.842192000E3,4.623131926E1 +2.842444000E3,4.648620260E1 +2.842743000E3,4.620801315E1 +2.843027000E3,4.321069748E1 +2.843281000E3,4.205248893E1 +2.843587000E3,2.653536028E1 +2.843863000E3,2.940344619E1 +2.844270000E3,4.715941302E1 +2.844533000E3,4.512147604E1 +2.844793000E3,4.758865475E1 +2.845051000E3,4.853448129E1 +2.845325000E3,4.647479098E1 +2.845569000E3,4.600966189E1 +2.845842000E3,4.549543262E1 +2.846088000E3,4.262631529E1 +2.846347000E3,4.522394390E1 +2.846652000E3,4.657245211E1 +2.846924000E3,4.554651191E1 +2.847231000E3,4.501421864E1 +2.847609000E3,4.413715050E1 +2.847859000E3,3.641102730E1 +2.848158000E3,2.959594862E1 +2.848409000E3,3.229903797E1 +2.848684000E3,3.716282001E1 +2.848948000E3,4.864280315E1 +2.849195000E3,4.698625872E1 +2.849453000E3,4.475077374E1 +2.849725000E3,4.320130236E1 +2.850029000E3,4.052232702E1 +2.850286000E3,4.987213531E1 +2.850622000E3,4.470574790E1 +2.850953000E3,4.746715529E1 +2.851224000E3,4.817674396E1 +2.851475000E3,4.755384271E1 +2.851775000E3,4.606857790E1 +2.852037000E3,4.602549066E1 +2.852280000E3,4.107899882E1 +2.852578000E3,4.602936757E1 +2.852832000E3,4.594357604E1 +2.853123000E3,4.132874601E1 +2.853424000E3,3.891402985E1 +2.853676000E3,3.210431116E1 +2.854034000E3,4.148325967E1 +2.854336000E3,4.539420759E1 +2.854629000E3,3.813311910E1 +2.854857000E3,3.204826654E1 +2.855103000E3,4.042825728E1 +2.855348000E3,3.781799437E1 +2.855635000E3,3.485312778E1 +2.855901000E3,3.176423587E1 +2.856194000E3,3.286644404E1 +2.856446000E3,3.601261840E1 +2.856741000E3,3.056779431E1 +2.856990000E3,2.876904683E1 +2.857247000E3,2.336161379E1 +2.857525000E3,5.319777865E1 +2.857765000E3,4.924210585E1 +2.858030000E3,4.161506516E1 +2.858287000E3,3.471025819E1 +2.858592000E3,2.954431085E1 +2.858878000E3,3.551304021E1 +2.859146000E3,4.056554733E1 +2.859438000E3,4.716772205E1 +2.859749000E3,4.728214145E1 +2.860112000E3,4.333221553E1 +2.860355000E3,3.970290127E1 +2.860627000E3,4.675070996E1 +2.860922000E3,5.292655838E1 +2.861168000E3,5.560528000E1 +2.861448000E3,5.155203362E1 +2.861684000E3,4.854372910E1 +2.861981000E3,5.166225265E1 +2.862226000E3,5.239758268E1 +2.862536000E3,4.880079262E1 +2.862801000E3,5.860724491E1 +2.863049000E3,5.487085904E1 +2.863366000E3,4.477307493E1 +2.863622000E3,4.809216762E1 +2.863923000E3,4.128779228E1 +2.864180000E3,4.039902121E1 +2.864473000E3,3.763315716E1 +2.864758000E3,3.836830031E1 +2.865072000E3,3.562217561E1 +2.865375000E3,4.251016575E1 +2.865631000E3,3.959478231E1 +2.865894000E3,3.906491963E1 +2.866161000E3,3.169567809E1 +2.866409000E3,4.180907280E1 +2.866769000E3,5.009501966E1 +2.867095000E3,4.485052737E1 +2.867377000E3,4.543449817E1 +2.867634000E3,4.558186247E1 +2.867912000E3,3.310648260E1 +2.868160000E3,3.368680580E1 +2.868403000E3,3.259924908E1 +2.868652000E3,3.468868920E1 +2.868945000E3,3.811295096E1 +2.869214000E3,3.680532391E1 +2.869523000E3,4.480088276E1 +2.869800000E3,4.321197878E1 +2.870149000E3,3.870196995E1 +2.870426000E3,4.501549736E1 +2.870686000E3,3.869046251E1 +2.870998000E3,5.116138397E1 +2.871259000E3,4.565952095E1 +2.871545000E3,4.044036430E1 +2.871835000E3,3.776423584E1 +2.872146000E3,4.283314388E1 +2.872428000E3,4.822150076E1 +2.872666000E3,4.609488251E1 +2.872966000E3,4.199842198E1 +2.873258000E3,4.199452970E1 +2.873557000E3,4.094164548E1 +2.873868000E3,3.451929232E1 +2.874146000E3,3.725700957E1 +2.874378000E3,3.820854143E1 +2.874632000E3,3.261818797E1 +2.874949000E3,4.229639001E1 +2.875219000E3,4.314663650E1 +2.875496000E3,4.030472415E1 +2.875772000E3,3.740362597E1 +2.876082000E3,3.770704299E1 +2.876334000E3,4.016521241E1 +2.876600000E3,4.155568881E1 +2.876855000E3,3.864643482E1 +2.877164000E3,3.358142820E1 +2.877430000E3,2.988882280E1 +2.877698000E3,4.233125756E1 +2.877954000E3,4.245249096E1 +2.878273000E3,3.619646633E1 +2.878541000E3,3.199868066E1 +2.878801000E3,4.546979293E1 +2.879062000E3,5.523869784E1 +2.879342000E3,5.605267417E1 +2.879584000E3,5.653411529E1 +2.879928000E3,4.626290707E1 +2.880202000E3,3.540012043E1 +2.880447000E3,3.620700172E1 +2.880691000E3,2.922036878E1 +2.880938000E3,3.659816429E1 +2.881251000E3,4.145147882E1 +2.881527000E3,3.894444603E1 +2.881851000E3,3.741315407E1 +2.882112000E3,4.094962867E1 +2.882373000E3,4.333353585E1 +2.882625000E3,4.557565518E1 +2.882879000E3,4.308396997E1 +2.883145000E3,4.097722416E1 +2.883416000E3,3.927850137E1 +2.883669000E3,3.223716221E1 +2.883941000E3,3.004581442E1 +2.884209000E3,3.765685263E1 +2.884466000E3,3.878810543E1 +2.884718000E3,2.988953340E1 +2.884967000E3,3.346960294E1 +2.885221000E3,3.799647420E1 +2.885537000E3,3.116842616E1 +2.885796000E3,3.671552801E1 +2.886084000E3,4.459898232E1 +2.886404000E3,4.708370738E1 +2.886677000E3,5.036035843E1 +2.886979000E3,4.113513329E1 +2.887251000E3,3.503458684E1 +2.887528000E3,3.462090732E1 +2.887785000E3,4.001717165E1 +2.888037000E3,3.538133603E1 +2.888296000E3,3.662805649E1 +2.888547000E3,4.263542947E1 +2.888820000E3,4.431895872E1 +2.889079000E3,4.300413574E1 +2.889340000E3,4.173317530E1 +2.889582000E3,4.288275032E1 +2.889932000E3,3.944773526E1 +2.890197000E3,3.214266541E1 +2.890503000E3,3.060588708E1 +2.890777000E3,3.296322494E1 +2.891017000E3,3.394251803E1 +2.891320000E3,3.208741950E1 +2.891570000E3,3.441770910E1 +2.891849000E3,3.368561294E1 +2.892087000E3,3.475967611E1 +2.892337000E3,3.740055420E1 +2.892635000E3,3.542355307E1 +2.892981000E3,3.105741683E1 +2.893247000E3,3.245614761E1 +2.893513000E3,4.142391644E1 +2.893779000E3,4.497461971E1 +2.894029000E3,4.653178389E1 +2.894282000E3,4.703576342E1 +2.894540000E3,4.751169602E1 +2.894805000E3,4.201422178E1 +2.895062000E3,4.370261317E1 +2.895310000E3,4.660906406E1 +2.895596000E3,4.633159753E1 +2.895865000E3,4.381116332E1 +2.896155000E3,4.368523912E1 +2.896405000E3,4.747051902E1 +2.896651000E3,4.222577444E1 +2.896905000E3,4.572633660E1 +2.897184000E3,5.203776089E1 +2.897450000E3,5.010843836E1 +2.897744000E3,4.910530865E1 +2.898022000E3,4.664859833E1 +2.898308000E3,3.985336775E1 +2.898564000E3,3.683403533E1 +2.898812000E3,4.284820320E1 +2.899091000E3,4.286036404E1 +2.899396000E3,5.224070654E1 +2.899753000E3,4.568546748E1 +2.900018000E3,5.586433220E1 +2.900278000E3,4.514230837E1 +2.900559000E3,3.853422420E1 +2.900865000E3,3.299777990E1 +2.901139000E3,3.594596453E1 +2.901415000E3,2.896001699E1 +2.901650000E3,2.556794162E1 +2.901937000E3,2.525773120E1 +2.902206000E3,3.138035436E1 +2.902457000E3,3.725731802E1 +2.902816000E3,3.600302530E1 +2.903095000E3,3.476106384E1 +2.903340000E3,3.325569458E1 +2.903600000E3,3.217545002E1 +2.903858000E3,2.994578711E1 +2.904108000E3,3.277965280E1 +2.904372000E3,4.013450695E1 +2.904627000E3,3.103730297E1 +2.904913000E3,4.187502355E1 +2.905174000E3,3.591627686E1 +2.905452000E3,3.067277870E1 +2.905743000E3,2.813597523E1 +2.906004000E3,2.760542404E1 +2.906321000E3,3.327793113E1 +2.906579000E3,4.111963776E1 +2.906835000E3,4.309802180E1 +2.907113000E3,2.749088524E1 +2.907354000E3,2.269523459E1 +2.907657000E3,3.631225289E1 +2.907901000E3,4.146405590E1 +2.908156000E3,3.785670954E1 +2.908403000E3,4.498664409E1 +2.908675000E3,4.174614917E1 +2.908932000E3,4.632262643E1 +2.909189000E3,3.569839459E1 +2.909522000E3,4.635385444E1 +2.909802000E3,4.337190367E1 +2.910035000E3,3.796960383E1 +2.910287000E3,4.151951269E1 +2.910538000E3,4.245940710E1 +2.910795000E3,4.268454470E1 +2.911045000E3,4.280139929E1 +2.911335000E3,3.861780445E1 +2.911584000E3,4.028221299E1 +2.911885000E3,3.934408626E1 +2.912139000E3,3.091195323E1 +2.912386000E3,2.709027446E1 +2.912622000E3,2.721294148E1 +2.912915000E3,3.169063213E1 +2.913196000E3,3.663766462E1 +2.913461000E3,3.582442105E1 +2.913744000E3,2.742218375E1 +2.913990000E3,3.432349666E1 +2.914297000E3,4.586386591E1 +2.914575000E3,4.813383402E1 +2.914888000E3,5.016441505E1 +2.915190000E3,4.132593749E1 +2.915481000E3,3.992883324E1 +2.915827000E3,3.713218942E1 +2.916087000E3,4.862036940E1 +2.916351000E3,4.985137398E1 +2.916622000E3,5.126616609E1 +2.916881000E3,4.180876614E1 +2.917157000E3,4.057128207E1 +2.917418000E3,3.994520906E1 +2.917681000E3,3.719846748E1 +2.917964000E3,4.377214072E1 +2.918264000E3,4.081140664E1 +2.918518000E3,4.149712935E1 +2.918784000E3,3.965801174E1 +2.919127000E3,3.499332266E1 +2.919415000E3,3.454976163E1 +2.919745000E3,3.801205804E1 +2.920003000E3,4.266330834E1 +2.920244000E3,3.704497233E1 +2.920548000E3,3.869800412E1 +2.920840000E3,3.880762608E1 +2.921081000E3,3.967826348E1 +2.921325000E3,4.387098551E1 +2.921573000E3,3.795523909E1 +2.921876000E3,3.884773193E1 +2.922122000E3,3.949919351E1 +2.922481000E3,3.549368996E1 +2.922774000E3,5.176437750E1 +2.923023000E3,4.673969779E1 +2.923306000E3,3.729614967E1 +2.923573000E3,3.557242251E1 +2.923880000E3,5.351861504E1 +2.924155000E3,5.486661937E1 +2.924424000E3,5.693150230E1 +2.924735000E3,4.225245527E1 +2.924988000E3,4.082554353E1 +2.925252000E3,3.807826598E1 +2.925573000E3,3.587807510E1 +2.925935000E3,4.290242494E1 +2.926237000E3,3.960438869E1 +2.926496000E3,3.732088357E1 +2.926751000E3,3.216321546E1 +2.926991000E3,3.001846960E1 +2.927295000E3,3.634949804E1 +2.927531000E3,3.127042454E1 +2.927829000E3,3.158500209E1 +2.928073000E3,2.815993792E1 +2.928370000E3,2.793102526E1 +2.928613000E3,2.468786691E1 +2.928943000E3,2.345175993E1 +2.929256000E3,2.908559709E1 +2.929497000E3,2.580950455E1 +2.929819000E3,2.871707976E1 +2.930114000E3,2.977851279E1 +2.930374000E3,4.220437998E1 +2.930636000E3,3.122152770E1 +2.930945000E3,3.902308439E1 +2.931227000E3,3.648582434E1 +2.931474000E3,4.774090674E1 +2.931717000E3,4.487624905E1 +2.931963000E3,4.620728265E1 +2.932258000E3,4.011602626E1 +2.932585000E3,4.011469989E1 +2.932871000E3,4.531107143E1 +2.933117000E3,4.299757904E1 +2.933366000E3,4.255561828E1 +2.933662000E3,4.180851663E1 +2.933899000E3,3.354142728E1 +2.934139000E3,4.061788576E1 +2.934435000E3,3.190428864E1 +2.934678000E3,3.136545948E1 +2.934975000E3,3.172564299E1 +2.935227000E3,3.538616066E1 +2.935577000E3,3.227761247E1 +2.935826000E3,3.587578035E1 +2.936132000E3,2.830690319E1 +2.936391000E3,2.983281120E1 +2.936636000E3,3.198482114E1 +2.936936000E3,4.529436692E1 +2.937191000E3,3.904726622E1 +2.937498000E3,4.546792713E1 +2.937790000E3,4.178984789E1 +2.938055000E3,3.901507008E1 +2.938332000E3,3.530528642E1 +2.938634000E3,3.766035689E1 +2.939060000E3,5.595745424E1 +2.939318000E3,5.800941557E1 +2.939576000E3,5.061871726E1 +2.939836000E3,6.017617924E1 +2.940124000E3,5.889680612E1 +2.940380000E3,5.553527141E1 +2.940631000E3,4.982924060E1 +2.940889000E3,5.386899946E1 +2.941183000E3,5.511436312E1 +2.941477000E3,5.474658637E1 +2.941736000E3,5.669903896E1 +2.941985000E3,5.352207307E1 +2.942302000E3,5.089540084E1 +2.942556000E3,5.163069551E1 +2.942811000E3,4.946827448E1 +2.943144000E3,4.292332560E1 +2.943386000E3,4.769421745E1 +2.943625000E3,4.741300910E1 +2.943936000E3,4.918473310E1 +2.944182000E3,4.358732286E1 +2.944456000E3,4.338106770E1 +2.944722000E3,5.302068646E1 +2.945006000E3,4.800501219E1 +2.945370000E3,4.445792428E1 +2.945619000E3,3.768400599E1 +2.945867000E3,3.829540629E1 +2.946159000E3,3.766669508E1 +2.946411000E3,4.016839261E1 +2.946712000E3,4.041724233E1 +2.947009000E3,4.012217251E1 +2.947323000E3,3.568820570E1 +2.947568000E3,3.690839296E1 +2.947818000E3,4.813137033E1 +2.948084000E3,5.325274156E1 +2.948341000E3,5.892514859E1 +2.948730000E3,4.314585435E1 +2.948980000E3,4.049194134E1 +2.949257000E3,4.522053034E1 +2.949515000E3,4.263261915E1 +2.949826000E3,5.159034358E1 +2.950126000E3,4.094053529E1 +2.950370000E3,4.144504964E1 +2.950613000E3,4.584689520E1 +2.950933000E3,3.986259871E1 +2.951211000E3,5.835616238E1 +2.951492000E3,4.865922153E1 +2.951773000E3,4.646806952E1 +2.952049000E3,5.501145746E1 +2.952349000E3,5.395560549E1 +2.952606000E3,5.094776028E1 +2.952859000E3,5.987933082E1 +2.953123000E3,5.553863596E1 +2.953365000E3,6.056471643E1 +2.953626000E3,5.705129962E1 +2.953881000E3,5.620457969E1 +2.954143000E3,4.633104773E1 +2.954403000E3,4.542785483E1 +2.954666000E3,4.357363747E1 +2.954925000E3,5.905995366E1 +2.955255000E3,5.325307727E1 +2.955500000E3,6.730464031E1 +2.955795000E3,6.362836082E1 +2.956030000E3,6.057596417E1 +2.956332000E3,6.813918985E1 +2.956573000E3,6.403678903E1 +2.956871000E3,6.230635205E1 +2.957135000E3,6.746671531E1 +2.957401000E3,6.427695804E1 +2.957673000E3,5.206458526E1 +2.957933000E3,5.261265827E1 +2.958182000E3,4.877242183E1 +2.958552000E3,6.627461000E1 +2.958808000E3,6.741673158E1 +2.959062000E3,6.597614354E1 +2.959304000E3,6.540552328E1 +2.959551000E3,6.528289091E1 +2.959864000E3,5.830061674E1 +2.960121000E3,5.985112812E1 +2.960428000E3,6.090568068E1 +2.960720000E3,6.807446854E1 +2.960985000E3,6.930722199E1 +2.961226000E3,6.386100217E1 +2.961579000E3,6.028451745E1 +2.961849000E3,6.477814340E1 +2.962132000E3,6.837046944E1 +2.962373000E3,6.647209363E1 +2.962660000E3,6.694202205E1 +2.962967000E3,6.648756695E1 +2.963231000E3,6.482625001E1 +2.963518000E3,7.095796361E1 +2.963775000E3,6.454417662E1 +2.964062000E3,6.533171518E1 +2.964339000E3,6.471819922E1 +2.964629000E3,5.679367810E1 +2.964962000E3,5.573913208E1 +2.965271000E3,6.251351498E1 +2.965502000E3,6.071427502E1 +2.965745000E3,6.212696498E1 +2.966049000E3,5.601947939E1 +2.966292000E3,5.543203731E1 +2.966544000E3,5.440105204E1 +2.966807000E3,5.169354717E1 +2.967114000E3,5.098574914E1 +2.967354000E3,4.778774527E1 +2.967603000E3,5.527018336E1 +2.967874000E3,5.069142516E1 +2.968220000E3,5.540354927E1 +2.968470000E3,5.388190573E1 +2.968725000E3,5.648678631E1 +2.968994000E3,6.195289166E1 +2.969259000E3,5.924073062E1 +2.969526000E3,5.554902217E1 +2.969797000E3,6.073047002E1 +2.970049000E3,5.750580172E1 +2.970375000E3,6.205206850E1 +2.970685000E3,5.892672487E1 +2.971008000E3,5.603539479E1 +2.971306000E3,5.380141597E1 +2.971609000E3,6.182570937E1 +2.971860000E3,5.755792598E1 +2.972120000E3,7.094637252E1 +2.972374000E3,7.220321333E1 +2.972688000E3,6.074903881E1 +2.972946000E3,5.132390204E1 +2.973203000E3,5.555176793E1 +2.973482000E3,5.082163203E1 +2.973746000E3,6.668022761E1 +2.974024000E3,6.951681150E1 +2.974257000E3,6.170353739E1 +2.974507000E3,6.191784425E1 +2.974845000E3,6.249884739E1 +2.975129000E3,6.139715498E1 +2.975385000E3,5.458109058E1 +2.975684000E3,6.285593412E1 +2.975925000E3,6.801445640E1 +2.976223000E3,6.762358149E1 +2.976454000E3,6.007212586E1 +2.976698000E3,6.176376027E1 +2.976998000E3,5.489351528E1 +2.977244000E3,6.419682450E1 +2.977544000E3,6.335879864E1 +2.977813000E3,6.346249627E1 +2.978071000E3,6.122721977E1 +2.978303000E3,6.269343112E1 +2.978564000E3,5.719207644E1 +2.978818000E3,6.209398004E1 +2.979085000E3,6.570545323E1 +2.979335000E3,6.443300698E1 +2.979582000E3,6.395479352E1 +2.979841000E3,6.285971298E1 +2.980091000E3,6.452411240E1 +2.980337000E3,6.648403811E1 +2.980638000E3,6.146510082E1 +2.980898000E3,6.178604521E1 +2.981191000E3,5.906416732E1 +2.981418000E3,6.139524316E1 +2.981668000E3,6.754933795E1 +2.981958000E3,5.804633278E1 +2.982221000E3,5.544285219E1 +2.982480000E3,5.252390700E1 +2.982741000E3,5.442974682E1 +2.983009000E3,5.886662164E1 +2.983270000E3,6.039421332E1 +2.983532000E3,5.984826425E1 +2.983780000E3,6.038747451E1 +2.984020000E3,5.836799318E1 +2.984266000E3,6.011457774E1 +2.984654000E3,6.086793857E1 +2.984928000E3,6.104684994E1 +2.985246000E3,6.081085188E1 +2.985504000E3,6.338602633E1 +2.985771000E3,6.224702903E1 +2.986040000E3,5.771788346E1 +2.986351000E3,5.832375863E1 +2.986657000E3,6.179808645E1 +2.986893000E3,6.074067698E1 +2.987188000E3,5.763905723E1 +2.987459000E3,5.411975455E1 +2.987698000E3,5.609082395E1 +2.988020000E3,5.838775534E1 +2.988261000E3,5.545934196E1 +2.988564000E3,5.818253650E1 +2.988803000E3,5.693365858E1 +2.989084000E3,5.747877452E1 +2.989394000E3,6.108654481E1 +2.989646000E3,6.109521888E1 +2.989952000E3,5.453216708E1 +2.990235000E3,5.325056065E1 +2.990530000E3,5.226229633E1 +2.990796000E3,5.566734434E1 +2.991153000E3,5.983192138E1 +2.991409000E3,5.902282422E1 +2.991712000E3,6.553978750E1 +2.991962000E3,6.323109208E1 +2.992210000E3,6.430699278E1 +2.992477000E3,6.439502996E1 +2.992769000E3,5.882379749E1 +2.993024000E3,7.076998945E1 +2.993317000E3,6.710088514E1 +2.993554000E3,6.332152683E1 +2.993846000E3,6.013348006E1 +2.994081000E3,6.492156154E1 +2.994361000E3,6.054189638E1 +2.994671000E3,5.878685209E1 +2.994911000E3,6.363988355E1 +2.995218000E3,6.266127576E1 +2.995513000E3,6.231860976E1 +2.995750000E3,6.770663238E1 +2.996056000E3,6.411706706E1 +2.996346000E3,6.607053327E1 +2.996592000E3,6.231837938E1 +2.996884000E3,6.235557028E1 +2.997130000E3,6.626149607E1 +2.997386000E3,6.897456616E1 +2.997721000E3,6.896820400E1 +2.997984000E3,5.708709076E1 +2.998260000E3,5.465136518E1 +2.998532000E3,6.136090841E1 +2.998792000E3,6.427324700E1 +2.999047000E3,5.922924051E1 +2.999308000E3,5.964993479E1 +2.999619000E3,5.937495043E1 +2.999910000E3,6.345321013E1 +3.000196000E3,6.558504608E1 +3.000438000E3,6.566442906E1 +3.000721000E3,6.596782674E1 +3.001048000E3,6.493210478E1 +3.001299000E3,6.778071085E1 +3.001554000E3,5.810398860E1 +3.001834000E3,6.461256831E1 +3.002084000E3,5.637103240E1 +3.002332000E3,6.244497501E1 +3.002633000E3,5.749162406E1 +3.002980000E3,6.268391580E1 +3.003246000E3,6.122193913E1 +3.003572000E3,6.467185898E1 +3.003877000E3,6.239318427E1 +3.004266000E3,6.708558966E1 +3.004573000E3,6.293492178E1 +3.004871000E3,6.169168265E1 +3.005129000E3,5.944912128E1 +3.005404000E3,5.631628075E1 +3.005704000E3,6.080609102E1 +3.005964000E3,6.424565764E1 +3.006250000E3,6.447415860E1 +3.006481000E3,6.606824769E1 +3.006756000E3,6.337387069E1 +3.007004000E3,6.294291386E1 +3.007286000E3,6.430484746E1 +3.007612000E3,6.091848593E1 +3.007867000E3,6.343837854E1 +3.008169000E3,5.978702761E1 +3.008432000E3,5.965865421E1 +3.008675000E3,5.540362761E1 +3.008918000E3,5.443572137E1 +3.009202000E3,6.171389250E1 +3.009446000E3,6.487192568E1 +3.009738000E3,5.958143908E1 +3.009983000E3,6.189834719E1 +3.010232000E3,5.752745917E1 +3.010489000E3,6.339873723E1 +3.010846000E3,6.127984243E1 +3.011144000E3,6.065194767E1 +3.011387000E3,6.253646864E1 +3.011646000E3,6.179753794E1 +3.011925000E3,6.231808205E1 +3.012153000E3,6.101579519E1 +3.012442000E3,5.876502421E1 +3.012737000E3,5.809905793E1 +3.013015000E3,5.695141293E1 +3.013301000E3,5.973139928E1 +3.013577000E3,6.007240820E1 +3.013839000E3,7.136453087E1 +3.014063000E3,7.173892024E1 +3.014315000E3,6.885425335E1 +3.014559000E3,6.110376355E1 +3.014808000E3,6.296723224E1 +3.015075000E3,6.021879294E1 +3.015327000E3,6.012811489E1 +3.015577000E3,6.282613373E1 +3.015850000E3,6.884549735E1 +3.016115000E3,6.913958233E1 +3.016397000E3,6.608409337E1 +3.016648000E3,6.437779633E1 +3.016896000E3,6.412579817E1 +3.017253000E3,6.408373459E1 +3.017500000E3,6.487828946E1 +3.017743000E3,6.281964754E1 +3.018003000E3,6.153697843E1 +3.018258000E3,6.503307442E1 +3.018512000E3,6.508021131E1 +3.018791000E3,5.910017780E1 +3.019028000E3,5.757469918E1 +3.019325000E3,5.762978005E1 +3.019573000E3,5.366611226E1 +3.019824000E3,5.708763529E1 +3.020086000E3,5.488621207E1 +3.020437000E3,5.826722905E1 +3.020695000E3,5.951373108E1 +3.020968000E3,6.130623452E1 +3.021217000E3,6.025771329E1 +3.021490000E3,5.280103891E1 +3.021737000E3,6.123009986E1 +3.022037000E3,6.404958762E1 +3.022328000E3,6.469373641E1 +3.022599000E3,6.283727611E1 +3.022840000E3,6.248869497E1 +3.023123000E3,6.767270030E1 +3.023363000E3,6.436289402E1 +3.023706000E3,6.007121161E1 +3.023992000E3,6.067397941E1 +3.024255000E3,6.005092329E1 +3.024513000E3,6.146229561E1 +3.024803000E3,6.214304530E1 +3.025060000E3,6.107977952E1 +3.025317000E3,6.268440106E1 +3.025560000E3,5.744048190E1 +3.025823000E3,6.080102592E1 +3.026092000E3,6.359394744E1 +3.026384000E3,6.219604097E1 +3.026685000E3,6.296073955E1 +3.026912000E3,6.243574530E1 +3.027190000E3,6.540426031E1 +3.027426000E3,7.038009166E1 +3.027684000E3,7.133800291E1 +3.027943000E3,6.847497315E1 +3.028214000E3,7.049817235E1 +3.028486000E3,6.555713643E1 +3.028748000E3,6.762942526E1 +3.029008000E3,6.780082040E1 +3.029264000E3,6.644646205E1 +3.029533000E3,7.066497540E1 +3.029800000E3,6.700863421E1 +3.030174000E3,6.263767412E1 +3.030459000E3,5.937975562E1 +3.030697000E3,6.189133018E1 +3.030958000E3,6.479748496E1 +3.031218000E3,6.070421224E1 +3.031488000E3,5.567295684E1 +3.031754000E3,6.162939414E1 +3.032026000E3,6.462556380E1 +3.032293000E3,6.300561819E1 +3.032553000E3,6.320528504E1 +3.032852000E3,6.205536878E1 +3.033102000E3,7.179598993E1 +3.033490000E3,6.907149718E1 +3.033750000E3,6.110443799E1 +3.034008000E3,5.743025653E1 +3.034257000E3,5.714646515E1 +3.034505000E3,6.193634179E1 +3.034762000E3,6.511685208E1 +3.035034000E3,6.647840023E1 +3.035277000E3,6.637602928E1 +3.035534000E3,6.208743290E1 +3.035873000E3,6.158502662E1 +3.036127000E3,6.138896352E1 +3.036392000E3,5.988342330E1 +3.036737000E3,5.834272912E1 +3.036998000E3,6.504474047E1 +3.037253000E3,5.801637483E1 +3.037569000E3,6.208073459E1 +3.037831000E3,6.555093843E1 +3.038084000E3,6.686352963E1 +3.038356000E3,6.398821865E1 +3.038638000E3,6.053541888E1 +3.038927000E3,5.509282051E1 +3.039228000E3,6.213274835E1 +3.039473000E3,6.149105368E1 +3.039745000E3,6.097957376E1 +3.040056000E3,6.313145073E1 +3.040300000E3,6.749857058E1 +3.040549000E3,6.031561589E1 +3.040852000E3,5.991948868E1 +3.041110000E3,6.228314687E1 +3.041358000E3,6.281493679E1 +3.041621000E3,6.031124820E1 +3.041926000E3,6.035954468E1 +3.042177000E3,6.230627050E1 +3.042448000E3,5.381586458E1 +3.042741000E3,6.032611045E1 +3.043026000E3,5.796046788E1 +3.043304000E3,6.286261594E1 +3.043605000E3,6.188894569E1 +3.043848000E3,6.196336480E1 +3.044091000E3,6.506902622E1 +3.044345000E3,6.547913264E1 +3.044589000E3,6.701681380E1 +3.044849000E3,6.398074775E1 +3.045095000E3,6.102355933E1 +3.045350000E3,6.546609328E1 +3.045598000E3,6.626677347E1 +3.045845000E3,6.212155235E1 +3.046098000E3,6.475032486E1 +3.046433000E3,6.469401418E1 +3.046698000E3,6.335899573E1 +3.046970000E3,5.799459631E1 +3.047267000E3,5.777430210E1 +3.047527000E3,6.228044606E1 +3.047785000E3,5.521572273E1 +3.048044000E3,5.312506195E1 +3.048316000E3,5.877400717E1 +3.048592000E3,6.239358597E1 +3.048842000E3,6.019315355E1 +3.049164000E3,5.944515023E1 +3.049418000E3,6.571719967E1 +3.049752000E3,5.906077781E1 +3.050005000E3,6.269931225E1 +3.050242000E3,6.329267329E1 +3.050532000E3,6.094692628E1 +3.050797000E3,6.137608503E1 +3.051055000E3,6.019630450E1 +3.051299000E3,5.959056092E1 +3.051551000E3,6.195653625E1 +3.051802000E3,5.997942431E1 +3.052044000E3,6.071988649E1 +3.052348000E3,6.146559433E1 +3.052605000E3,6.320542640E1 +3.052903000E3,6.301314639E1 +3.053133000E3,6.491013087E1 +3.053386000E3,5.374424399E1 +3.053632000E3,5.337930652E1 +3.053925000E3,5.830420592E1 +3.054167000E3,5.827724976E1 +3.054414000E3,5.413373264E1 +3.054713000E3,5.438904566E1 +3.054952000E3,5.478972153E1 +3.055245000E3,6.026125791E1 +3.055545000E3,6.377000784E1 +3.055792000E3,6.273059884E1 +3.056116000E3,6.164463909E1 +3.056426000E3,6.310484015E1 +3.056665000E3,6.191865333E1 +3.056974000E3,6.044005004E1 +3.057225000E3,5.723160495E1 +3.057532000E3,6.482171923E1 +3.057799000E3,6.373654624E1 +3.058097000E3,6.579319958E1 +3.058333000E3,6.717439766E1 +3.058632000E3,6.244987186E1 +3.058874000E3,5.911459441E1 +3.059119000E3,6.246625617E1 +3.059514000E3,6.061929027E1 +3.059786000E3,6.141894857E1 +3.060044000E3,6.531006136E1 +3.060311000E3,6.745420282E1 +3.060564000E3,6.305040539E1 +3.060809000E3,6.250223063E1 +3.061063000E3,5.984183740E1 +3.061365000E3,6.201500936E1 +3.061610000E3,6.171968159E1 +3.061853000E3,5.636652524E1 +3.062137000E3,5.937450988E1 +3.062405000E3,5.424162977E1 +3.062724000E3,5.577353705E1 +3.062968000E3,6.265208868E1 +3.063225000E3,6.754657095E1 +3.063470000E3,6.259832443E1 +3.063731000E3,5.846954403E1 +3.063975000E3,5.735719718E1 +3.064220000E3,5.614657426E1 +3.064460000E3,5.493678071E1 +3.064711000E3,6.175770153E1 +3.064961000E3,6.502893325E1 +3.065266000E3,6.372557142E1 +3.065562000E3,6.165604672E1 +3.065921000E3,6.202265536E1 +3.066181000E3,5.894659424E1 +3.066427000E3,5.516515279E1 +3.066669000E3,5.227763917E1 +3.066911000E3,5.331294555E1 +3.067166000E3,5.535383534E1 +3.067460000E3,5.490405248E1 +3.067721000E3,5.927902794E1 +3.068030000E3,6.001209348E1 +3.068288000E3,5.925707402E1 +3.068553000E3,6.116769528E1 +3.068848000E3,5.907075037E1 +3.069160000E3,5.402384091E1 +3.069467000E3,6.078433547E1 +3.069706000E3,6.064305090E1 +3.069991000E3,6.099922555E1 +3.070247000E3,6.081028216E1 +3.070500000E3,6.857342881E1 +3.070795000E3,6.830085683E1 +3.071035000E3,7.092929468E1 +3.071334000E3,6.670654987E1 +3.071580000E3,6.198358410E1 +3.071845000E3,6.029427505E1 +3.072216000E3,6.271100503E1 +3.072476000E3,6.548403896E1 +3.072709000E3,6.655140024E1 +3.072958000E3,6.872933885E1 +3.073221000E3,6.840034062E1 +3.073524000E3,6.189262665E1 +3.073801000E3,6.315516618E1 +3.074029000E3,6.431689152E1 +3.074282000E3,7.008635825E1 +3.074531000E3,6.529488526E1 +3.074781000E3,5.362885622E1 +3.075079000E3,6.174622467E1 +3.075321000E3,6.106059522E1 +3.075569000E3,6.727558853E1 +3.075841000E3,6.068477373E1 +3.076089000E3,6.224550385E1 +3.076358000E3,6.049387981E1 +3.076618000E3,5.554290122E1 +3.076868000E3,5.232623619E1 +3.077136000E3,5.715980006E1 +3.077434000E3,6.112308912E1 +3.077738000E3,5.964598426E1 +3.077997000E3,5.774993649E1 +3.078301000E3,5.930552673E1 +3.078632000E3,6.204668908E1 +3.078903000E3,6.135182684E1 +3.079234000E3,6.010535577E1 +3.079530000E3,5.612975229E1 +3.079846000E3,5.894789721E1 +3.080130000E3,6.424282153E1 +3.080395000E3,6.696093787E1 +3.080696000E3,5.929656512E1 +3.080931000E3,5.577162965E1 +3.081168000E3,6.096321541E1 +3.081415000E3,6.147204445E1 +3.081708000E3,6.518353223E1 +3.082066000E3,6.565001970E1 +3.082347000E3,6.152216198E1 +3.082591000E3,6.232488129E1 +3.082884000E3,6.450829181E1 +3.083131000E3,6.727741702E1 +3.083373000E3,6.596172391E1 +3.083615000E3,6.588974420E1 +3.083909000E3,6.215985231E1 +3.084146000E3,5.417797447E1 +3.084444000E3,5.776086644E1 +3.084736000E3,6.145598006E1 +3.085067000E3,6.705675690E1 +3.085353000E3,7.032609091E1 +3.085621000E3,6.942809802E1 +3.085926000E3,6.673219093E1 +3.086170000E3,5.874483463E1 +3.086457000E3,6.163530440E1 +3.086730000E3,5.863155738E1 +3.086955000E3,5.804604701E1 +3.087247000E3,7.202263239E1 +3.087542000E3,6.907595594E1 +3.087796000E3,7.104760035E1 +3.088063000E3,6.060670654E1 +3.088371000E3,6.409876160E1 +3.088642000E3,6.504332531E1 +3.088891000E3,6.050178076E1 +3.089172000E3,5.988548041E1 +3.089448000E3,6.419311516E1 +3.089715000E3,6.072209436E1 +3.089992000E3,6.148544930E1 +3.090256000E3,6.667985585E1 +3.090551000E3,6.360479893E1 +3.090829000E3,6.675347002E1 +3.091081000E3,6.585951744E1 +3.091337000E3,5.998998345E1 +3.091582000E3,7.213751425E1 +3.091973000E3,7.002319175E1 +3.092225000E3,6.554991346E1 +3.092495000E3,5.438962824E1 +3.092757000E3,5.806427109E1 +3.093010000E3,5.611571138E1 +3.093290000E3,5.427298566E1 +3.093553000E3,6.332676554E1 +3.093801000E3,6.191283999E1 +3.094088000E3,6.222056485E1 +3.094383000E3,6.679558422E1 +3.094660000E3,6.396349695E1 +3.094980000E3,6.335657582E1 +3.095321000E3,6.368682935E1 +3.095574000E3,6.239728447E1 +3.095829000E3,6.560913932E1 +3.096083000E3,6.288470186E1 +3.096327000E3,6.063834800E1 +3.096611000E3,5.698542980E1 +3.096866000E3,6.214573666E1 +3.097125000E3,6.108001307E1 +3.097382000E3,6.098898235E1 +3.097639000E3,6.935379750E1 +3.097944000E3,6.076333803E1 +3.098235000E3,5.747447310E1 +3.098595000E3,5.896750888E1 +3.098845000E3,6.428262322E1 +3.099146000E3,6.073561603E1 +3.099435000E3,5.610862272E1 +3.099679000E3,5.808393750E1 +3.099971000E3,6.306244141E1 +3.100214000E3,6.493760740E1 +3.100511000E3,5.964091377E1 +3.100753000E3,5.949423253E1 +3.100995000E3,6.324186751E1 +3.101237000E3,6.294719776E1 +3.101481000E3,6.618420708E1 +3.101805000E3,6.039251647E1 +3.102105000E3,6.883376735E1 +3.102388000E3,6.215701199E1 +3.102635000E3,6.251944475E1 +3.102926000E3,6.387718652E1 +3.103175000E3,6.262879933E1 +3.103469000E3,6.094246273E1 +3.103717000E3,5.780442917E1 +3.104010000E3,5.805018882E1 +3.104245000E3,6.073911170E1 +3.104537000E3,5.820155990E1 +3.104880000E3,5.691870737E1 +3.105139000E3,5.609187778E1 +3.105418000E3,5.368790307E1 +3.105673000E3,5.733127796E1 +3.105933000E3,5.834617124E1 +3.106196000E3,5.665251568E1 +3.106447000E3,5.839993992E1 +3.106707000E3,5.765825797E1 +3.106989000E3,6.346036236E1 +3.107241000E3,6.088974139E1 +3.107536000E3,5.623231578E1 +3.107836000E3,5.905990454E1 +3.108208000E3,5.913546091E1 +3.108462000E3,5.921957697E1 +3.108732000E3,6.403378055E1 +3.109010000E3,6.829473891E1 +3.109237000E3,6.866131452E1 +3.109530000E3,5.759864554E1 +3.109769000E3,5.216447932E1 +3.110067000E3,5.887622687E1 +3.110356000E3,5.912152229E1 +3.110621000E3,6.343631440E1 +3.110862000E3,6.110189356E1 +3.111105000E3,5.925249209E1 +3.111441000E3,5.583559168E1 +3.111708000E3,6.397874973E1 +3.112049000E3,5.864630935E1 +3.112314000E3,5.876030726E1 +3.112620000E3,5.558460131E1 +3.112980000E3,5.336927775E1 +3.113232000E3,5.351895645E1 +3.113515000E3,4.932805120E1 +3.113763000E3,6.323075662E1 +3.114057000E3,6.375401647E1 +3.114318000E3,6.430798012E1 +3.114651000E3,6.745313705E1 +3.114909000E3,6.370697195E1 +3.115204000E3,6.719832935E1 +3.115517000E3,6.353352979E1 +3.115816000E3,6.421660294E1 +3.116074000E3,6.666449428E1 +3.116372000E3,6.209745804E1 +3.116612000E3,5.853853683E1 +3.116911000E3,6.153177442E1 +3.117151000E3,6.465277685E1 +3.117439000E3,6.054074617E1 +3.117698000E3,5.762180605E1 +3.118029000E3,5.904912096E1 +3.118292000E3,6.054469105E1 +3.118547000E3,6.570885599E1 +3.118854000E3,6.686989978E1 +3.119103000E3,6.506823644E1 +3.119359000E3,5.780133308E1 +3.119610000E3,5.983707630E1 +3.119896000E3,6.102798325E1 +3.120167000E3,5.940835035E1 +3.120446000E3,6.154008300E1 +3.120717000E3,6.031178539E1 +3.120969000E3,6.222997321E1 +3.121291000E3,6.676268308E1 +3.121532000E3,6.244629438E1 +3.121778000E3,6.014719673E1 +3.122038000E3,6.351124664E1 +3.122317000E3,5.786579019E1 +3.122607000E3,5.704033688E1 +3.122864000E3,5.941823253E1 +3.123160000E3,6.366298469E1 +3.123429000E3,6.545330590E1 +3.123678000E3,6.206143443E1 +3.123932000E3,6.250040348E1 +3.124250000E3,6.193784317E1 +3.124582000E3,6.679802083E1 +3.124888000E3,6.239911876E1 +3.125141000E3,6.227743005E1 +3.125407000E3,5.930162190E1 +3.125655000E3,5.692493613E1 +3.125897000E3,6.100851678E1 +3.126155000E3,6.356932883E1 +3.126470000E3,6.583742229E1 +3.126735000E3,6.828531785E1 +3.127049000E3,6.744954014E1 +3.127349000E3,6.892448306E1 +3.127620000E3,6.312172108E1 +3.127885000E3,6.549450530E1 +3.128150000E3,6.274114245E1 +3.128434000E3,5.987443555E1 +3.128694000E3,5.754092402E1 +3.128967000E3,6.140483336E1 +3.129224000E3,5.793735580E1 +3.129483000E3,5.640840091E1 +3.129735000E3,7.068460790E1 +3.130042000E3,6.831622259E1 +3.130308000E3,6.661131327E1 +3.130563000E3,7.032191033E1 +3.130897000E3,6.429012882E1 +3.131166000E3,6.890779868E1 +3.131427000E3,6.812897599E1 +3.131726000E3,6.440583932E1 +3.132039000E3,6.371305855E1 +3.132310000E3,6.071113649E1 +3.132582000E3,6.356904702E1 +3.132834000E3,6.335195410E1 +3.133078000E3,5.922748305E1 +3.133357000E3,5.790290676E1 +3.133581000E3,6.067150466E1 +3.133827000E3,5.936438225E1 +3.134075000E3,5.651144024E1 +3.134312000E3,5.707156804E1 +3.134564000E3,6.256442790E1 +3.134822000E3,5.680653319E1 +3.135099000E3,6.386946987E1 +3.135341000E3,6.183817556E1 +3.135588000E3,5.791592939E1 +3.135843000E3,5.415500200E1 +3.136159000E3,5.828393923E1 +3.136402000E3,5.584102234E1 +3.136645000E3,5.843965538E1 +3.136922000E3,6.032067675E1 +3.137231000E3,6.082235855E1 +3.137514000E3,6.216335250E1 +3.137763000E3,6.576895249E1 +3.138052000E3,5.935628673E1 +3.138348000E3,5.697436057E1 +3.138590000E3,6.713499986E1 +3.138833000E3,5.996032355E1 +3.139071000E3,6.566814076E1 +3.139366000E3,6.469315039E1 +3.139607000E3,6.414816039E1 +3.139901000E3,6.238348704E1 +3.140144000E3,5.975478602E1 +3.140477000E3,5.617333113E1 +3.140789000E3,6.140881460E1 +3.141038000E3,5.760925345E1 +3.141323000E3,5.813474075E1 +3.141616000E3,6.190304914E1 +3.141899000E3,5.853813516E1 +3.142123000E3,6.019478920E1 +3.142387000E3,5.824830032E1 +3.142639000E3,6.031650371E1 +3.142898000E3,5.874305926E1 +3.143211000E3,6.365997735E1 +3.143459000E3,6.182267241E1 +3.143814000E3,6.153305629E1 +3.144076000E3,6.040235966E1 +3.144345000E3,6.279707978E1 +3.144591000E3,6.261441373E1 +3.144837000E3,5.722591859E1 +3.145082000E3,5.791919274E1 +3.145387000E3,6.142016587E1 +3.145678000E3,5.996802308E1 +3.145994000E3,5.761245992E1 +3.146269000E3,5.915341256E1 +3.146531000E3,5.679987844E1 +3.146814000E3,6.228452904E1 +3.147163000E3,6.038592359E1 +3.147440000E3,6.662509726E1 +3.147705000E3,5.864713600E1 +3.147961000E3,6.383827006E1 +3.148228000E3,6.445939632E1 +3.148543000E3,6.206597752E1 +3.148800000E3,6.082056407E1 +3.149046000E3,5.872798480E1 +3.149340000E3,5.792404132E1 +3.149585000E3,5.917409009E1 +3.149845000E3,5.619795947E1 +3.150164000E3,6.447379623E1 +3.150501000E3,6.336546747E1 +3.150798000E3,6.022605646E1 +3.151059000E3,5.837139298E1 +3.151360000E3,5.721847889E1 +3.151614000E3,7.085699981E1 +3.151908000E3,6.031233854E1 +3.152206000E3,6.170839562E1 +3.152452000E3,6.336115962E1 +3.152697000E3,6.732286145E1 +3.152943000E3,6.043278366E1 +3.153235000E3,5.822950572E1 +3.153537000E3,6.155234216E1 +3.153813000E3,5.671966020E1 +3.154078000E3,5.613348243E1 +3.154333000E3,5.384913785E1 +3.154580000E3,5.739778382E1 +3.154869000E3,5.617144196E1 +3.155103000E3,5.699346940E1 +3.155351000E3,6.356393037E1 +3.155653000E3,5.483372318E1 +3.155949000E3,5.806865262E1 +3.156195000E3,5.725879338E1 +3.156459000E3,5.708272088E1 +3.156776000E3,5.736330762E1 +3.157028000E3,5.620178265E1 +3.157280000E3,5.557503250E1 +3.157521000E3,6.379766868E1 +3.157864000E3,6.175462639E1 +3.158113000E3,5.970375584E1 +3.158365000E3,5.482220327E1 +3.158625000E3,6.094938302E1 +3.158872000E3,6.189076140E1 +3.159128000E3,6.365906369E1 +3.159385000E3,6.365252593E1 +3.159699000E3,6.421784723E1 +3.160039000E3,5.952347777E1 +3.160337000E3,6.582170091E1 +3.160643000E3,6.400621400E1 +3.160905000E3,5.982923632E1 +3.161162000E3,5.912958512E1 +3.161449000E3,5.744161350E1 +3.161722000E3,6.208953034E1 +3.161984000E3,6.743490019E1 +3.162228000E3,5.893358785E1 +3.162506000E3,6.260442429E1 +3.162777000E3,6.054589944E1 +3.163072000E3,5.958101250E1 +3.163380000E3,5.756716970E1 +3.163623000E3,5.897741262E1 +3.163916000E3,5.199350029E1 +3.164173000E3,5.607364633E1 +3.164444000E3,6.846587546E1 +3.164756000E3,5.833953537E1 +3.165011000E3,6.699601536E1 +3.165255000E3,6.024033326E1 +3.165530000E3,5.636786936E1 +3.165825000E3,5.917346905E1 +3.166077000E3,5.684739711E1 +3.166343000E3,5.441684119E1 +3.166607000E3,5.708423030E1 +3.166871000E3,5.726160097E1 +3.167212000E3,5.795085756E1 +3.167513000E3,5.359033433E1 +3.167800000E3,5.481028168E1 +3.168051000E3,5.771426852E1 +3.168321000E3,5.720698183E1 +3.168574000E3,6.029484328E1 +3.168847000E3,6.594273179E1 +3.169141000E3,5.814954146E1 +3.169451000E3,5.741553332E1 +3.169717000E3,5.474949866E1 +3.170064000E3,5.858087337E1 +3.170388000E3,5.901398101E1 +3.170689000E3,6.599046976E1 +3.170942000E3,6.777823262E1 +3.171184000E3,6.339704259E1 +3.171437000E3,5.678237753E1 +3.171694000E3,6.067324941E1 +3.171975000E3,6.337570500E1 +3.172215000E3,6.060254578E1 +3.172509000E3,6.511602204E1 +3.172792000E3,6.491523998E1 +3.173086000E3,6.236437487E1 +3.173442000E3,6.132637014E1 +3.173725000E3,5.575670785E1 +3.173997000E3,5.450541115E1 +3.174243000E3,5.816223835E1 +3.174516000E3,5.991084873E1 +3.174771000E3,5.959264792E1 +3.175022000E3,6.001504494E1 +3.175268000E3,5.794233494E1 +3.175510000E3,5.875384007E1 +3.175752000E3,6.582497874E1 +3.176001000E3,6.385809704E1 +3.176310000E3,6.575292490E1 +3.176700000E3,6.328122862E1 +3.176947000E3,6.160374932E1 +3.177205000E3,6.233605233E1 +3.177480000E3,5.746120395E1 +3.177733000E3,5.491961653E1 +3.178002000E3,5.346590976E1 +3.178308000E3,4.910433719E1 +3.178598000E3,5.548086035E1 +3.178876000E3,5.834728013E1 +3.179129000E3,5.722852381E1 +3.179407000E3,5.371032540E1 +3.179686000E3,5.375017527E1 +3.180066000E3,5.741446005E1 +3.180325000E3,5.595914402E1 +3.180624000E3,5.784989425E1 +3.180867000E3,5.818330240E1 +3.181112000E3,5.651638359E1 +3.181407000E3,5.400925398E1 +3.181645000E3,5.134681346E1 +3.181939000E3,5.540645654E1 +3.182189000E3,5.603348674E1 +3.182489000E3,5.612576596E1 +3.182726000E3,5.412821683E1 +3.183072000E3,5.364995955E1 +3.183373000E3,5.685067634E1 +3.183631000E3,5.292396423E1 +3.183913000E3,5.037305724E1 +3.184139000E3,5.458652507E1 +3.184386000E3,5.336216390E1 +3.184625000E3,5.355204553E1 +3.184861000E3,5.798216811E1 +3.185170000E3,5.037998219E1 +3.185412000E3,5.253320042E1 +3.185661000E3,5.864558083E1 +3.185944000E3,5.568855775E1 +3.186307000E3,6.065674046E1 +3.186594000E3,5.486017232E1 +3.186846000E3,5.354898396E1 +3.187128000E3,5.606629368E1 +3.187373000E3,5.887335608E1 +3.187646000E3,5.932986575E1 +3.187996000E3,5.618144782E1 +3.188254000E3,5.279151533E1 +3.188538000E3,5.980979660E1 +3.188819000E3,5.959008295E1 +3.189058000E3,5.757326838E1 +3.189324000E3,5.814251633E1 +3.189681000E3,6.715432083E1 +3.189929000E3,5.659786492E1 +3.190183000E3,6.813933576E1 +3.190493000E3,6.423896785E1 +3.190762000E3,6.115594562E1 +3.191063000E3,6.466877383E1 +3.191295000E3,6.400176112E1 +3.191543000E3,6.061189134E1 +3.191813000E3,6.334758009E1 +3.192062000E3,6.268892194E1 +3.192384000E3,6.255649695E1 +3.192688000E3,6.440152216E1 +3.193095000E3,6.083356984E1 +3.193368000E3,5.702207605E1 +3.193630000E3,6.129862703E1 +3.193931000E3,6.511359313E1 +3.194208000E3,6.424113032E1 +3.194458000E3,6.277957456E1 +3.194751000E3,6.067489213E1 +3.195007000E3,6.044409325E1 +3.195267000E3,5.902485869E1 +3.195523000E3,5.940450479E1 +3.195769000E3,5.629667180E1 +3.196103000E3,5.773687048E1 +3.196362000E3,5.275604571E1 +3.196676000E3,5.321996877E1 +3.196932000E3,4.952922772E1 +3.197191000E3,5.411849627E1 +3.197458000E3,5.575997519E1 +3.197718000E3,5.782402980E1 +3.197982000E3,6.092045522E1 +3.198228000E3,6.504329265E1 +3.198474000E3,5.972589974E1 +3.198713000E3,5.816644178E1 +3.198958000E3,6.190720604E1 +3.199249000E3,6.026051864E1 +3.199481000E3,6.064697026E1 +3.199744000E3,5.715218400E1 +3.200003000E3,5.509276249E1 +3.200281000E3,5.035485844E1 +3.200607000E3,5.745123346E1 +3.200874000E3,5.874041571E1 +3.201157000E3,6.540993071E1 +3.201407000E3,6.592699897E1 +3.201730000E3,5.826687879E1 +3.201982000E3,5.966898415E1 +3.202228000E3,5.928022084E1 +3.202546000E3,5.492659239E1 +3.202811000E3,5.843773228E1 +3.203091000E3,5.615478265E1 +3.203365000E3,5.378265559E1 +3.203611000E3,5.724493737E1 +3.203868000E3,5.517839982E1 +3.204137000E3,5.166422622E1 +3.204439000E3,5.966362579E1 +3.204692000E3,5.837831137E1 +3.204952000E3,5.873474045E1 +3.205216000E3,6.025432286E1 +3.205460000E3,5.709891269E1 +3.205710000E3,5.946766606E1 +3.206062000E3,5.575402329E1 +3.206367000E3,5.597615265E1 +3.206620000E3,5.417374311E1 +3.206869000E3,5.785505194E1 +3.207152000E3,5.973144393E1 +3.207405000E3,5.494944595E1 +3.207684000E3,5.859159641E1 +3.207982000E3,5.909726368E1 +3.208273000E3,6.221796591E1 +3.208541000E3,6.248597715E1 +3.208787000E3,6.143432195E1 +3.209043000E3,5.767415987E1 +3.209357000E3,6.087003136E1 +3.209636000E3,5.816954701E1 +3.209920000E3,5.644196424E1 +3.210232000E3,5.726504339E1 +3.210505000E3,5.384487818E1 +3.210769000E3,6.092886049E1 +3.211044000E3,5.910647270E1 +3.211306000E3,5.855040927E1 +3.211560000E3,6.886189365E1 +3.211803000E3,6.193548709E1 +3.212075000E3,5.895667088E1 +3.212320000E3,5.613734816E1 +3.212669000E3,6.365011223E1 +3.212934000E3,6.616065582E1 +3.213195000E3,4.911720228E1 +3.213460000E3,5.429539168E1 +3.213713000E3,5.374714305E1 +3.213991000E3,5.505703483E1 +3.214231000E3,5.216197587E1 +3.214486000E3,6.958974683E1 +3.214787000E3,6.410499727E1 +3.215047000E3,5.795707420E1 +3.215308000E3,6.210641451E1 +3.215581000E3,5.724864620E1 +3.215943000E3,5.588397230E1 +3.216221000E3,5.281586206E1 +3.216477000E3,5.616597876E1 +3.216735000E3,7.016181845E1 +3.216992000E3,7.008234703E1 +3.217238000E3,6.883905131E1 +3.217482000E3,6.039428517E1 +3.217722000E3,6.572225500E1 +3.217971000E3,6.862082655E1 +3.218221000E3,6.392739620E1 +3.218481000E3,6.757625304E1 +3.218798000E3,6.468895575E1 +3.219137000E3,5.941097234E1 +3.219443000E3,6.639331379E1 +3.219715000E3,6.512137194E1 +3.219985000E3,6.137345425E1 +3.220244000E3,6.566739727E1 +3.220494000E3,5.684090738E1 +3.220758000E3,4.865476042E1 +3.221022000E3,5.571447424E1 +3.221324000E3,5.050200483E1 +3.221601000E3,5.262698993E1 +3.221858000E3,5.385544431E1 +3.222185000E3,5.793526709E1 +3.222548000E3,5.957102097E1 +3.222796000E3,5.026005559E1 +3.223068000E3,5.164515600E1 +3.223344000E3,6.575405490E1 +3.223598000E3,6.925353270E1 +3.223876000E3,5.909751181E1 +3.224152000E3,5.561020058E1 +3.224416000E3,5.257890354E1 +3.224662000E3,5.262446891E1 +3.224954000E3,5.599583257E1 +3.225202000E3,5.286294623E1 +3.225483000E3,5.049109924E1 +3.225830000E3,6.154494550E1 +3.226096000E3,5.433068412E1 +3.226350000E3,5.256602683E1 +3.226652000E3,5.283535150E1 +3.226989000E3,5.811852242E1 +3.227251000E3,5.842389129E1 +3.227505000E3,5.524471208E1 +3.227782000E3,6.207780754E1 +3.228053000E3,6.165130850E1 +3.228302000E3,5.818085510E1 +3.228557000E3,5.646455559E1 +3.228823000E3,5.903487317E1 +3.229201000E3,5.460588060E1 +3.229471000E3,5.534537953E1 +3.229720000E3,5.492103159E1 +3.229976000E3,5.474982433E1 +3.230276000E3,6.311967749E1 +3.230531000E3,6.144237593E1 +3.230845000E3,6.204497775E1 +3.231123000E3,6.192920277E1 +3.231382000E3,6.726064707E1 +3.231675000E3,5.951322284E1 +3.231970000E3,5.620608761E1 +3.232324000E3,5.597726308E1 +3.232555000E3,5.737347613E1 +3.232845000E3,5.515502781E1 +3.233172000E3,5.977186730E1 +3.233435000E3,6.131606000E1 +3.233742000E3,5.610580070E1 +3.234000000E3,5.978218601E1 +3.234272000E3,6.319970701E1 +3.234581000E3,5.608562509E1 +3.234862000E3,6.169746582E1 +3.235159000E3,6.105762669E1 +3.235416000E3,5.369522011E1 +3.235667000E3,6.580487109E1 +3.235906000E3,5.797374086E1 +3.236200000E3,6.981267784E1 +3.236445000E3,6.229515865E1 +3.236695000E3,6.858181426E1 +3.236976000E3,5.740787399E1 +3.237218000E3,5.455964692E1 +3.237457000E3,7.204325578E1 +3.237720000E3,6.142914611E1 +3.238013000E3,5.768794211E1 +3.238280000E3,5.732491467E1 +3.238580000E3,5.793744264E1 +3.238882000E3,5.626325471E1 +3.239149000E3,5.661724856E1 +3.239424000E3,6.969605219E1 +3.239726000E3,6.482965407E1 +3.239976000E3,5.947270091E1 +3.240278000E3,5.913422796E1 +3.240576000E3,5.630232959E1 +3.240877000E3,5.956366293E1 +3.241128000E3,6.177688280E1 +3.241391000E3,5.851951662E1 +3.241664000E3,5.959787493E1 +3.241944000E3,5.765523372E1 +3.242310000E3,5.961443978E1 +3.242602000E3,5.811194000E1 +3.242910000E3,5.765320401E1 +3.243188000E3,6.631148602E1 +3.243420000E3,6.916377121E1 +3.243673000E3,6.435158828E1 +3.243925000E3,6.486926440E1 +3.244170000E3,5.506348984E1 +3.244475000E3,6.702899260E1 +3.244772000E3,6.244838658E1 +3.245003000E3,6.057959417E1 +3.245328000E3,6.103137126E1 +3.245581000E3,5.723671640E1 +3.245864000E3,5.125127512E1 +3.246123000E3,5.748187394E1 +3.246395000E3,6.148075018E1 +3.246669000E3,6.226010686E1 +3.246940000E3,5.273573389E1 +3.247233000E3,5.462141876E1 +3.247482000E3,5.946160846E1 +3.247728000E3,6.623014757E1 +3.248041000E3,5.823129903E1 +3.248289000E3,5.689561843E1 +3.248538000E3,5.851473913E1 +3.248910000E3,5.778207994E1 +3.249187000E3,6.109108533E1 +3.249462000E3,6.368024039E1 +3.249726000E3,6.527718864E1 +3.249983000E3,5.855658653E1 +3.250281000E3,5.718860903E1 +3.250534000E3,5.946900486E1 +3.250785000E3,5.688578668E1 +3.251033000E3,5.444863300E1 +3.251316000E3,5.885016251E1 +3.251570000E3,6.172482417E1 +3.251833000E3,6.833245599E1 +3.252200000E3,6.656973280E1 +3.252441000E3,6.663686281E1 +3.252721000E3,6.380106140E1 +3.252991000E3,6.113258977E1 +3.253242000E3,7.270243700E1 +3.253457000E3,7.442711013E1 +3.253706000E3,7.097589831E1 +3.253999000E3,5.740107596E1 +3.254237000E3,5.407351324E1 +3.254532000E3,6.235563554E1 +3.254777000E3,6.148535018E1 +3.255085000E3,6.767985005E1 +3.255346000E3,5.893302101E1 +3.255628000E3,5.834235484E1 +3.255897000E3,6.152524318E1 +3.256146000E3,6.124474706E1 +3.256419000E3,5.928557591E1 +3.256642000E3,5.798678480E1 +3.256921000E3,5.800318977E1 +3.257149000E3,5.813391626E1 +3.257392000E3,6.200496820E1 +3.257645000E3,6.268368020E1 +3.257945000E3,6.783162804E1 +3.258296000E3,7.343015115E1 +3.258556000E3,7.258165803E1 +3.258805000E3,6.753466802E1 +3.259117000E3,7.134403593E1 +3.259421000E3,6.813653179E1 +3.259673000E3,6.449045726E1 +3.259939000E3,7.144310958E1 +3.260188000E3,6.619195201E1 +3.260438000E3,6.990193438E1 +3.260692000E3,6.791067771E1 +3.260944000E3,7.014061601E1 +3.261191000E3,7.271368424E1 +3.261532000E3,6.889323528E1 +3.261794000E3,6.087932672E1 +3.262047000E3,6.139975131E1 +3.262322000E3,6.684035582E1 +3.262586000E3,6.977079140E1 +3.262861000E3,6.711211223E1 +3.263137000E3,6.891542739E1 +3.263415000E3,6.450575202E1 +3.263671000E3,6.375083447E1 +3.263946000E3,6.525419018E1 +3.264250000E3,6.323969714E1 +3.264517000E3,7.351653517E1 +3.264813000E3,7.240916805E1 +3.265107000E3,6.991986455E1 +3.265349000E3,6.767718353E1 +3.265598000E3,7.020318016E1 +3.265847000E3,6.593396207E1 +3.266149000E3,6.776886494E1 +3.266400000E3,6.796917668E1 +3.266653000E3,6.234495715E1 +3.266897000E3,6.492303298E1 +3.267153000E3,6.551968402E1 +3.267398000E3,6.154456079E1 +3.267647000E3,6.087933145E1 +3.267896000E3,6.053677169E1 +3.268248000E3,6.893351216E1 +3.268513000E3,6.695525456E1 +3.268817000E3,6.263553940E1 +3.269070000E3,5.965971741E1 +3.269315000E3,6.136430702E1 +3.269582000E3,7.398506568E1 +3.269828000E3,7.145137487E1 +3.270128000E3,7.238266470E1 +3.270371000E3,7.289527120E1 +3.270623000E3,7.428636164E1 +3.270931000E3,7.248535741E1 +3.271185000E3,7.399445608E1 +3.271518000E3,7.355251323E1 +3.271795000E3,7.296660624E1 +3.272081000E3,7.131368475E1 +3.272358000E3,7.068792091E1 +3.272581000E3,6.623699177E1 +3.272835000E3,5.258987188E1 +3.273093000E3,6.044165509E1 +3.273337000E3,6.879817511E1 +3.273635000E3,6.970693453E1 +3.273931000E3,7.169623139E1 +3.274180000E3,7.112396098E1 +3.274428000E3,7.190035192E1 +3.274761000E3,7.089393329E1 +3.275038000E3,6.995869622E1 +3.275323000E3,6.900781199E1 +3.275569000E3,6.766263448E1 +3.275860000E3,6.881814388E1 +3.276116000E3,6.821596427E1 +3.276370000E3,6.896702672E1 +3.276649000E3,6.827119542E1 +3.276914000E3,6.795818984E1 +3.277171000E3,7.025945887E1 +3.277482000E3,6.685661764E1 +3.277741000E3,6.810082518E1 +3.278078000E3,6.902136690E1 +3.278358000E3,6.568611650E1 +3.278604000E3,7.123802039E1 +3.278848000E3,6.300940961E1 +3.279144000E3,6.292057856E1 +3.279382000E3,6.654167697E1 +3.279622000E3,6.808014942E1 +3.279917000E3,6.902808966E1 +3.280160000E3,6.685153426E1 +3.280471000E3,6.435621527E1 +3.280770000E3,6.765080490E1 +3.281059000E3,6.808248309E1 +3.281352000E3,6.477485011E1 +3.281602000E3,5.628454157E1 +3.281867000E3,5.800927668E1 +3.282130000E3,7.131716325E1 +3.282389000E3,7.355208108E1 +3.282663000E3,7.108584109E1 +3.282932000E3,5.710440961E1 +3.283191000E3,5.329699257E1 +3.283451000E3,5.003319724E1 +3.283709000E3,5.081704645E1 +3.284003000E3,5.075383483E1 +3.284259000E3,5.431712692E1 +3.284628000E3,5.277582101E1 +3.284917000E3,6.061307876E1 +3.285214000E3,6.168657926E1 +3.285472000E3,5.854988033E1 +3.285744000E3,4.913527641E1 +3.285999000E3,5.563664353E1 +3.286250000E3,5.841488419E1 +3.286517000E3,6.437604518E1 +3.286777000E3,6.124264602E1 +3.287035000E3,5.886049633E1 +3.287300000E3,6.196549102E1 +3.287630000E3,6.776239267E1 +3.287951000E3,6.702605133E1 +3.288259000E3,5.376695086E1 +3.288499000E3,5.095339550E1 +3.288807000E3,5.078317550E1 +3.289117000E3,5.659564827E1 +3.289411000E3,7.136818215E1 +3.289684000E3,6.629708396E1 +3.289982000E3,7.133804213E1 +3.290271000E3,6.994811010E1 +3.290544000E3,6.532422657E1 +3.290800000E3,6.451013008E1 +3.291132000E3,6.261305598E1 +3.291418000E3,6.696223022E1 +3.291676000E3,4.827412656E1 +3.291930000E3,4.724575587E1 +3.292202000E3,4.846609938E1 +3.292501000E3,5.276700476E1 +3.292822000E3,5.071547801E1 +3.293065000E3,4.944777186E1 +3.293349000E3,4.466809801E1 +3.293583000E3,4.432750067E1 +3.293832000E3,5.165471909E1 +3.294078000E3,4.606912616E1 +3.294427000E3,4.826074528E1 +3.294712000E3,4.434240888E1 +3.294985000E3,4.684583968E1 +3.295286000E3,5.104787864E1 +3.295548000E3,4.839146586E1 +3.295807000E3,5.479537456E1 +3.296066000E3,5.055213000E1 +3.296324000E3,3.933656037E1 +3.296585000E3,4.513652817E1 +3.296840000E3,4.805617654E1 +3.297099000E3,4.453428427E1 +3.297354000E3,5.205427791E1 +3.297705000E3,5.001223291E1 +3.297948000E3,5.342697607E1 +3.298200000E3,5.619467550E1 +3.298461000E3,5.565459347E1 +3.298738000E3,5.819577446E1 +3.298988000E3,5.077826383E1 +3.299236000E3,5.142261821E1 +3.299478000E3,5.610754709E1 +3.299775000E3,5.248015066E1 +3.300011000E3,4.742520943E1 +3.300325000E3,5.519481303E1 +3.300626000E3,4.628613419E1 +3.300959000E3,4.430731849E1 +3.301224000E3,4.380193782E1 +3.301473000E3,4.690647127E1 +3.301746000E3,4.845294386E1 +3.302057000E3,4.912389116E1 +3.302307000E3,5.155191791E1 +3.302563000E3,5.240902416E1 +3.302820000E3,4.677306339E1 +3.303083000E3,5.037145513E1 +3.303327000E3,4.506752152E1 +3.303573000E3,4.920686196E1 +3.303857000E3,4.935493485E1 +3.304189000E3,4.415801479E1 +3.304459000E3,4.423531181E1 +3.304768000E3,3.874162391E1 +3.305030000E3,4.189958295E1 +3.305333000E3,4.005870516E1 +3.305579000E3,5.072183491E1 +3.305843000E3,4.113754863E1 +3.306140000E3,5.548273149E1 +3.306383000E3,5.383424402E1 +3.306628000E3,5.205779319E1 +3.306877000E3,4.592085607E1 +3.307206000E3,5.092451979E1 +3.307449000E3,4.823039740E1 +3.307720000E3,5.026090042E1 +3.307982000E3,5.794901070E1 +3.308198000E3,5.239372011E1 +3.308502000E3,5.024517162E1 +3.308742000E3,4.253471720E1 +3.309044000E3,4.105523794E1 +3.309340000E3,3.028117703E1 +3.309596000E3,2.809150222E1 +3.309864000E3,2.626060468E1 +3.310135000E3,5.055452447E1 +3.310501000E3,7.199271156E1 +3.310777000E3,7.172468430E1 +3.311045000E3,7.282926204E1 +3.311313000E3,7.145580608E1 +3.311562000E3,7.218798353E1 +3.311867000E3,7.081603642E1 +3.312107000E3,7.122522782E1 +3.312348000E3,7.013128466E1 +3.312672000E3,7.138239962E1 +3.312976000E3,7.589001323E1 +3.313216000E3,6.988466628E1 +3.313506000E3,6.521999768E1 +3.313853000E3,5.781158269E1 +3.314129000E3,5.698768013E1 +3.314381000E3,5.954050680E1 +3.314636000E3,5.529467486E1 +3.314903000E3,6.884377149E1 +3.315163000E3,7.293133775E1 +3.315448000E3,7.186875504E1 +3.315697000E3,6.942752239E1 +3.315995000E3,6.899930460E1 +3.316247000E3,6.333687203E1 +3.316557000E3,6.820286469E1 +3.316856000E3,7.371764624E1 +3.317124000E3,7.475494405E1 +3.317411000E3,7.135849387E1 +3.317718000E3,5.726081152E1 +3.317965000E3,5.650406291E1 +3.318233000E3,4.901561410E1 +3.318490000E3,6.881993797E1 +3.318742000E3,7.251465406E1 +3.319010000E3,6.395213402E1 +3.319311000E3,7.197127027E1 +3.319615000E3,6.948849738E1 +3.319862000E3,6.664503435E1 +3.320187000E3,6.933008182E1 +3.320443000E3,6.121514242E1 +3.320753000E3,7.017439611E1 +3.321063000E3,7.393277725E1 +3.321329000E3,7.045535337E1 +3.321643000E3,6.985180357E1 +3.321896000E3,7.158196073E1 +3.322168000E3,6.999348148E1 +3.322483000E3,6.872091406E1 +3.322823000E3,6.386396976E1 +3.323116000E3,6.891641311E1 +3.323355000E3,6.790436633E1 +3.323733000E3,6.190629476E1 +3.324010000E3,6.307072034E1 +3.324306000E3,6.459812141E1 +3.324591000E3,6.928529051E1 +3.324846000E3,6.953301961E1 +3.325158000E3,6.946121501E1 +3.325471000E3,6.177266257E1 +3.325739000E3,6.057146439E1 +3.326000000E3,6.021658005E1 +3.326269000E3,6.588088303E1 +3.326536000E3,6.594068529E1 +3.326797000E3,5.957632846E1 +3.327117000E3,5.830018402E1 +3.327415000E3,5.952820917E1 +3.327678000E3,5.996997483E1 +3.327928000E3,6.374276040E1 +3.328204000E3,6.484785648E1 +3.328504000E3,6.253699213E1 +3.328743000E3,6.495848159E1 +3.329001000E3,6.390198219E1 +3.329317000E3,6.107203426E1 +3.329613000E3,6.678300135E1 +3.329901000E3,6.048531373E1 +3.330164000E3,6.806621622E1 +3.330501000E3,6.592361883E1 +3.330795000E3,6.652249790E1 +3.331059000E3,6.079261624E1 +3.331342000E3,7.055285274E1 +3.331620000E3,6.885169705E1 +3.331870000E3,6.676175072E1 +3.332125000E3,6.653456857E1 +3.332410000E3,6.539948315E1 +3.332658000E3,6.741723145E1 +3.332915000E3,5.982571500E1 +3.333236000E3,7.234399288E1 +3.333559000E3,7.555637810E1 +3.333801000E3,7.132946849E1 +3.334053000E3,7.012473325E1 +3.334345000E3,7.083313400E1 +3.334658000E3,6.159204912E1 +3.334951000E3,5.416652771E1 +3.335187000E3,5.331536045E1 +3.335488000E3,5.516853140E1 +3.335780000E3,5.755380245E1 +3.336028000E3,6.034949591E1 +3.336335000E3,5.933559907E1 +3.336577000E3,6.200660494E1 +3.336975000E3,6.752581884E1 +3.337230000E3,6.552308109E1 +3.337509000E3,6.043162012E1 +3.337804000E3,6.346167875E1 +3.338097000E3,5.762665769E1 +3.338354000E3,6.046465836E1 +3.338657000E3,5.841838084E1 +3.338937000E3,5.426549819E1 +3.339182000E3,5.312925890E1 +3.339425000E3,5.904532039E1 +3.339705000E3,5.548841740E1 +3.339970000E3,6.467955136E1 +3.340311000E3,6.518540616E1 +3.340567000E3,6.130157495E1 +3.340843000E3,4.234380604E1 +3.341102000E3,3.685811557E1 +3.341367000E3,5.229521155E1 +3.341631000E3,4.577123603E1 +3.341913000E3,5.522804687E1 +3.342191000E3,7.219670231E1 +3.342497000E3,6.138541536E1 +3.342739000E3,5.883033505E1 +3.342994000E3,5.692990468E1 +3.343272000E3,5.784770175E1 +3.343584000E3,5.851150722E1 +3.343847000E3,7.127137910E1 +3.344137000E3,7.004437015E1 +3.344432000E3,6.719880262E1 +3.344677000E3,6.266500726E1 +3.344966000E3,6.662051616E1 +3.345209000E3,6.259160849E1 +3.345462000E3,6.521765959E1 +3.345762000E3,6.373477950E1 +3.346056000E3,5.976833176E1 +3.346294000E3,5.557373783E1 +3.346597000E3,5.486821605E1 +3.346842000E3,4.854970484E1 +3.347096000E3,6.338774242E1 +3.347415000E3,6.646909489E1 +3.347712000E3,6.370164725E1 +3.347950000E3,6.577012972E1 +3.348257000E3,6.536203326E1 +3.348509000E3,5.777033235E1 +3.348799000E3,6.942121279E1 +3.349070000E3,6.552465655E1 +3.349329000E3,6.400867966E1 +3.349583000E3,5.955829212E1 +3.349911000E3,6.233007104E1 +3.350154000E3,7.360271557E1 +3.350432000E3,7.402471070E1 +3.350716000E3,7.225249055E1 +3.350966000E3,6.654334459E1 +3.351200000E3,6.590758849E1 +3.351507000E3,6.143698167E1 +3.351805000E3,7.197722167E1 +3.352079000E3,6.778594348E1 +3.352307000E3,5.712392879E1 +3.352566000E3,5.659236121E1 +3.352870000E3,5.352359430E1 +3.353127000E3,5.362353429E1 +3.353366000E3,5.964860406E1 +3.353638000E3,7.164177428E1 +3.353890000E3,6.730234717E1 +3.354173000E3,5.336089185E1 +3.354435000E3,4.770751864E1 +3.354689000E3,4.833001031E1 +3.354956000E3,4.464972004E1 +3.355220000E3,6.809720152E1 +3.355493000E3,7.032616040E1 +3.355723000E3,7.137092547E1 +3.356052000E3,7.106236065E1 +3.356287000E3,7.302101107E1 +3.356599000E3,6.868512076E1 +3.356867000E3,7.134905494E1 +3.357133000E3,7.032184319E1 +3.357463000E3,6.484515560E1 +3.357753000E3,5.949029357E1 +3.358081000E3,6.553405106E1 +3.358385000E3,5.460622041E1 +3.358634000E3,4.798111952E1 +3.358902000E3,5.356090224E1 +3.359186000E3,5.091993104E1 +3.359516000E3,5.980463665E1 +3.359805000E3,5.623340998E1 +3.360124000E3,4.885342740E1 +3.360404000E3,4.536632542E1 +3.360660000E3,5.726647509E1 +3.360941000E3,6.266477325E1 +3.361245000E3,5.265432523E1 +3.361521000E3,4.746518361E1 +3.361777000E3,5.341135388E1 +3.362038000E3,5.094337921E1 +3.362292000E3,5.832737886E1 +3.362616000E3,5.247742127E1 +3.363049000E3,5.123926483E1 +3.363313000E3,4.482127206E1 +3.363600000E3,4.813050338E1 +3.363848000E3,5.751744958E1 +3.364157000E3,5.045245795E1 diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg15_xydiagramm/MyWorld.java b/03_vorlagen_tauschordner/02_greenfoot/alg15_xydiagramm/MyWorld.java new file mode 100644 index 0000000..8ebbe35 --- /dev/null +++ b/03_vorlagen_tauschordner/02_greenfoot/alg15_xydiagramm/MyWorld.java @@ -0,0 +1,36 @@ +import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot und MouseInfo) + +/** + * Ergänzen Sie hier eine Beschreibung für die Klasse MyWorld. + * + * @author (Ihr Name) + * @version (eine Versionsnummer oder ein Datum) + */ +public class MyWorld extends World +{ + + /** + * Konstruktor für Objekte der Klasse MyWorld + * + */ + public MyWorld() + { + // Erstellt eine neue Welt mit 1200x900 Pixeln + super(1000, 700, 1); + + prepare(); + } + + + /** + * Bereite die Welt für den Programmstart vor. + * Das heißt: Erzeuge die Anfangs-Objekte und füge sie der Welt hinzu. + */ + private void prepare() + { + XYDiagramm d = new XYDiagramm(); + addObject(d,500,350); + + } +} + diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg15_xydiagramm/Picture.java b/03_vorlagen_tauschordner/02_greenfoot/alg15_xydiagramm/Picture.java new file mode 100644 index 0000000..8df3d55 --- /dev/null +++ b/03_vorlagen_tauschordner/02_greenfoot/alg15_xydiagramm/Picture.java @@ -0,0 +1,699 @@ +import java.awt.image.*; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.BasicStroke; +import java.util.Vector; +import javax.imageio.*; +import java.io.*; +import java.awt.*; +import javax.swing.*; +import java.util.Random; +import java.awt.geom.AffineTransform; +/** + * + * Bildklasse für die Simulation von Processing-Befehlen + * + * Diese Klasse stellt ein BufferedImage bereit, in das mit Processing-Befehlen gezeichnet + * werden kann. + * Zusätzlich kann ein Bildanzeiger über jede Änderung des Bildes informiert werden, + * um "Zurück"-Befehle zu ermöglichen. Der Bildanzeiger ist entweder eine normale Java + * ScrollPane oder ein Actor aus Greenfoot. + * Die Dokumentation der einzelnen Zeichenmethoden ist der Processing-Reference + * (https://processing.org/reference/ steht unter CC-Lizenz: https://creativecommons.org/) + * entnommen und mit Deepl.com ins Deutsche übersetzt. + * + * @version 1.0 from 23.01.2019 + * @author Thomas Schaller (ZPG Informatik Klasse 9) + */ + +public class Picture{ + + // Einstellungmöglichkeiten für das Zeichnen von Rechtecken und Ellipsen + // RADIUS = Mittelpunkt+Radius wird gegeben, CENTER = Mittelpunkt und Breite/Höhe wird gegeben, + // CORNER = Linke obere Ecke + Breite/Höhe, CORNERS = Linke obere und rechte untere Ecke + public static final int RADIUS = 1; + public static final int CENTER = 2; + public static final int CORNER = 3; + public static final int CORNERS = 4; + + // gespeichertes Bild, + private BufferedImage image; + + // aktuelle Farbeinstellungen + private Color background; + private Color pencolor; + private Color fillcolor; + + // aktuelle Stiftdicke + private double stroke; + + // akkteller Koordinatenmodus von Rechtecken und Ellipsen + private int ellipseMode = CENTER; + private int rectMode = CORNER; + + // aktueller Font + private Font textfont = null; + + // muss ein Bildanzeiger benachrichtigt werden + private PictureViewer observer = null; + private boolean autorefresh = true; + + /** + * Erzeugt ein Bild mit Standardgröße 500x400 + */ + public Picture() { + this(500,400); + } + + /** + * Erzeugt ein Bild der angegeben Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public Picture(int width, int height) { + this(width,height, "D0D0D0"); + } + + /** + * Erzeugt ein Bild aus einer Datei + * @param filename Dateiname des Bildes + */ + public Picture(String filename) { + load(filename); + } + + /** + * Erzeugt ein Bild der angegebenen Größe mit festgelegtem Hintergrund + * @param width Breite des Bildes + * @param height Höhe des Bildes + * @param background Farbe des Hintergrunds + */ + public Picture(int width, int height, String background) { + this.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + this.background = decode(background); + this.pencolor = new Color(0,0,0); + this.stroke = 1; + this.fillcolor = null; + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(this.background); + g.fillRect(0,0,width-1, height-1); + } + + /** + * Legt fest, wer das Bild anzeigt. + * Diese ermöglicht die Benachrichtung des Observers, wenn sich das Bild ändert. + * @param observer Anzeiger des Bildes + */ + + public void setObserver(PictureViewer observer) { + this.observer= observer; + } + + /** + * Direktes Setzen des Bildes (für interne Zwecke) + * @param b Bild, das gespeichert werden soll. + */ + public void setImage(BufferedImage b) { + image = b; + } + + /** + * Direktes Abfragen des Bildes (für interne Zwecke) + * @return Bild, das gerade gespeichert ist. + */ + public BufferedImage getImage() { + return image; + } + + /** + * Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + * Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + * der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu. + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public void size(int width, int height){ + pushImage(); + this.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(background); + g.fillRect(0,0,width-1, height-1); + } + + /** + * Liefert die Breite des Bildes zurück. + * @return Breite des Bildes + */ + public int getWidth() { + return image.getWidth(); + } + + /** + * Liefert die Höhe des Bildes zurück. + * @return Höhe des Bildes + */ + public int getHeight() { + return image.getHeight(); + } + + + /** + * Erzeugt eine Kopie des Bildes und übergibt sie an den Observer (falls existent), damit dieser die Versionen speichern kann + */ + private void pushImage() { + if(observer != null) { + observer.pushImage(); + } + } + + + /** + * Legt fest, ob nach jedem Zeichenbefehl automatisch das Bild auch in + * der Oberfläche aktualisiert wird. Die Einstellung "false" beschleunigt + * das Zeichnen aufwändiger Bilder und verhindert "Flackern". + * Das Neuzeichnen kann durch die Methode "refresh" gezielt ausgelöst werden. + * @param autorefresh true = nach jedem Zeichenbefehl die Anzeige aktualisieren, false= nur durch die Methode refresh neu zeichnen + */ + public void setAutoRefresh(boolean autoRefresh) { + this.autorefresh = autoRefresh; + } + + + /** + * Auch die anzeigenden Klasse wird zum Neuzeichnen aufgefordert. + */ + private void repaint() { + if(observer != null && autorefresh) { + observer.repaint(); + } + } + + /** + * Auch die anzeigenden Klasse wird zum Neuzeichnen aufgefordert. + */ + public void refresh() { + if(observer != null) { + observer.repaint(); + } + } + + // ----------------------------------------- Zeichenfunktionen ----------------------------------------------- + /** + * Löscht den Inhalt des Bildes. + * Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt. + */ + + public void clear(){ + pushImage(); + image = new BufferedImage(image.getWidth(), image.getHeight(), image.getType()); + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(background); + g.fillRect(0,0,image.getWidth()-1, image.getHeight()-1); + repaint(); + } + + /** + * Konvertiert die in einem bestimmten Modus gegebenen Koordinaten in die Java-übliche Links_Oben_Breite_Höhe Version + * Die Änderungen werden direkt im Array vorgenommen + * @param coord Array mit vier Koordinateneinträgen im gegebenen Modus + * @param mode Modus der Koordinaten (CORNER, CORNERS, RADIUS oder CENTER) + */ + private void convert(int[] coord, int mode) { + switch(mode) { + case CORNER: break; + case CORNERS: coord[2] -= coord[0]; coord[3] -= coord[1]; break; + case RADIUS: coord[2] *= 2; coord[3] *=2; + case CENTER: coord[0] -= coord[2]/2; coord[1] -= coord[3]/2; + } + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + * Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + * Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void rectMode(int mode) { + rectMode = mode; + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + * Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + * Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als Breite und Höhe der Form. + * ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void ellipseMode(int mode) { + ellipseMode = mode; + } + + + + /** + * Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + * Um eine Linie einzufärben, verwenden Sie die {@link #stroke(int, int, int) stroke()} Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + * Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + * {@link #strokeWeight(double) strokeWeight()} geändert werden. + * @param x1 x-Koordinate des 1. Punktes + * @param y1 y-Koordinate des 1. Punktes + * @param x2 x-Koordinate des 2. Punktes + * @param y2 y-Koordinate des 2. Punktes + */ + public void line(int x1, int y1, int x2, int y2) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + if (stroke > 0) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawLine(x1, y1, x2, y2); + } + repaint(); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, rectMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillRect(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawRect(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, ellipseMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillOval(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawOval(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + int px[] = {x1, x2, x3}; + int py[] = {y1, y2, y3}; + polygon(px, py); + + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + + int px[] = {x1, x2, x3, x4}; + int py[] = {y1, y2, y3, y4}; + polygon(px, py); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + + public void polygon(int[] x, int[] y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(fillcolor != null) { + + g.setColor(fillcolor); + g.fillPolygon(x,y, y.length); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawPolygon(x, y, x.length); + } + repaint(); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + ellipse(x,y,1, 1); + + } + + // ----------------------------------------- Schriftdarstellung ----------------------------------------------- + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param s Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String s, int x, int y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(pencolor != null) { + g.setColor(fillcolor); + g.setStroke(new BasicStroke((float) stroke)); + g.setFont(textfont); + g.drawString(s, x, y); + } + repaint(); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + this.textfont = font; + } + + + // ----------------------------------------- Farbfestlegungen ----------------------------------------------- + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(String color) { + try{ + return new Color( + Integer.valueOf( color.substring( 0, 2 ), 16 ), + Integer.valueOf( color.substring( 2, 4 ), 16 ), + Integer.valueOf( color.substring( 4, 6 ), 16 ) ); + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(int color) { + try{ + if(color >=0 && color < 256) { + return new Color(color,color,color); + } else { + int r = color / 0x010000 % 0xFF; + int g = color / 0x000100 % 0xFF; + int b = color % 0xFF; + System.out.println(""+r+","+g+","+b); + return new Color(r, g, b ); + } + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + this.pencolor = decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + this.pencolor=decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + this.pencolor = new Color(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + this.pencolor = null; + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + this.stroke = width; + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + this.fillcolor = decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + this.fillcolor=decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + this.fillcolor = new Color(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + this.fillcolor = null; + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + if(c < 256) { + this.background=new Color(c,c,c); + } else { + int r = c / 0x010000; + int g = c / 0x000100 % 0xFF; + int b = c % 0xFF; + this.background= new Color(r, g, b ); + } + + this.clear(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + this.background=new Color(r,g,b); + this.clear(); + } + + +// ----------------------------------------- Dateioperationen ----------------------------------------------- + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + try{ + this.image = ImageIO.read(new File(filename)); + this.background = decode("D0D0D0"); + this.pencolor = new Color(0,0,0); + this.fillcolor = null; + this.stroke = 1; + this.repaint(); + + } catch(Exception e) { + System.out.println("Fehler beim Einlesen der Bilddatei"); + } + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + try{ + String[] fn = filename.split("\\."); + if (fn.length== 1) { + ImageIO.write(image, "PNG", new File(filename+".png")); + } else { + + if (fn.length == 2 && (fn[1].toUpperCase().equals("PNG") || + fn[1].toUpperCase().equals("GIF"))){ + ImageIO.write(image, fn[1], new File(filename)); + }else { + System.out.println("Unbekanntes Bildformat"); + } + } + + } catch(Exception e) { + System.out.println("Fehler beim Speichern"); + } + } + + +// ----------------------------------------- Sonstiges ----------------------------------------------- + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + + public Color[][] getPixelArray() { + Color[][] pixel = new Color[image.getWidth()][image.getHeight()]; + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + pixel[x][y] = new java.awt.Color(image.getRGB(x,y)); + } + } + return pixel; + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + size(pixel.length,pixel[0].length); + Graphics2D g = (Graphics2D) image.getGraphics(); + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + g.setColor(pixel[x][y]); + g.fillRect(x, y, 1, 1); + } + } + repaint(); + } + + /** + * Hilfsfunktion zum Verzögern der Ausgabe + * @param millis Wartezeit in Millisekunden + */ + public void delay(int millis) { + try{ + Thread.sleep(millis); + + } catch(Exception e) { + + } + + } + + + +} diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg15_xydiagramm/PictureViewer.java b/03_vorlagen_tauschordner/02_greenfoot/alg15_xydiagramm/PictureViewer.java new file mode 100644 index 0000000..ecbb521 --- /dev/null +++ b/03_vorlagen_tauschordner/02_greenfoot/alg15_xydiagramm/PictureViewer.java @@ -0,0 +1,499 @@ +import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot und MouseInfo) +import java.awt.image.*; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.BasicStroke; +import java.awt.Font; +import java.util.Vector; +import java.awt.Color; +import javax.imageio.*; +import java.io.*; + +/** + * Der PictureViewer ist ein Actor, der in der Lage ist ein + * Objekt der Klasse Picture anzuzeigen. Zusätzlich können + * mehrere Verarbeitungsschritte gespeichert werden, um ein + * "zurück"-Funktion zu ermöglichen. + * + * @author Thomas Schaller + * @version V1.0 vom 10.02.2019 + */ +public class PictureViewer extends Actor +{ + public static final int FIT = -1; + public static final int NORMAL = 1; + + private static final int ANZ_BACK = 0; + + private double zoom; + protected Picture picture = null; + private Vector history; + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der Größe 500x400 + */ + public PictureViewer() { + this(500,400); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public PictureViewer(int width, int height) { + this(width,height, "D0D0D0"); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + * @param background Farbe des Hintergrunds als HEX-String (z.B. "FF3A45") + */ + public PictureViewer(int width, int height, String background) { + picture = new Picture(width,height, background); + picture.setObserver(this); + this.history = new Vector(); + this.zoom = NORMAL; + repaint(); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild aus einer Bilddatei + * @param filename Name des Bildes + */ + public PictureViewer(String filename) { + picture = new Picture(filename); + picture.setObserver(this); + this.history = new Vector(); + this.zoom = NORMAL; + repaint(); + } + + /** + * Speichert das übergebene Bild in der History. + * @param b zu speicherndes Bild + */ + public void pushImage() { + if( this.ANZ_BACK > 0) { + if(history.size() == this.ANZ_BACK) { + history.removeElementAt(0); + } + + BufferedImage b = new BufferedImage(picture.getWidth(), picture.getHeight(), picture.getImage().getType()); + Graphics g = b.getGraphics(); + g.drawImage(picture.getImage(), 0, 0, null); + g.dispose(); + + history.add(b); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + private void popImage() { + int anz = history.size(); + if(anz>0) { + BufferedImage i = history.get(anz-1); + history.removeElementAt(anz-1); + picture.setImage(i); + repaint(); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + public void back() { + popImage(); + } + + /** + * Setzt den Zoom-Faktor für das Bild. + * Als Zoomfaktor sind auch die Konstanten Bildanzeiger.FIT (auf Bildschirmgröße zoomen) und Bildanzeiger.NORMAL (100%) möglich. + * @param factor Zoomfaktor (1.0 = 100%). + */ + public void setZoom(double zoom) { + this.zoom = zoom; + repaint(); + } + + /** + * Setzt die automatische Neuanzeige des Bildes. + * Mit dieser Methode kann man einstellen, ob nach jedem Zeichenbefehl + * die Anzeige auf dem Bildschirm aktualisiert werden soll. Bei sehr + * vielen Zeichenbefehlen wird die Ausgabe dadurch sehr langsam. Es reicht + * eine Anzeige am Ende der Zeichenbefehle. Rufen Sie dann für das Neuzeichnen + * die Methode refresh() auf. + * @param autoRefresh true, wenn nach jedem Zeichenbefehl die Anzeige aktualisiert werden soll. + */ + public void setAutoRefresh(boolean autoRefresh) { + picture.setAutoRefresh(autoRefresh); + } + + /** + * Sorgt für die Aktualisierung der Bildschrimanzeige. Das aktuelle Bild + * wird dadurch angezeigt. Durch Einstellung von autoRefresh kann die + * Anzeige automatisiert werden. + */ + public void refresh() { + repaint(); + } + + /** + * Setzt das angezeigt Bild neu und beachtet dabei den Zoomfaktor. + */ + public void repaint() { + double faktor = zoom; + + if (zoom == FIT) { + double faktorw = (double) this.getWorld().getWidth() / picture.getWidth(); + double faktorh = (double) this.getWorld().getHeight() / picture.getHeight(); + faktor = Math.min(faktorw, faktorh); + } + int gfi_width = (int) (picture.getWidth()*faktor); + int gfi_height = (int) (picture.getHeight()*faktor); + + setImage(new GreenfootImage(gfi_width, gfi_height)); + Graphics2D g = (Graphics2D) this.getImage().getAwtImage().getGraphics(); + g.drawImage(picture.getImage(),0,0,gfi_width, gfi_height, 0, 0, picture.getWidth(), picture.getHeight(), null); + g.setColor(new java.awt.Color(0,0,0)); + g.setStroke(new BasicStroke((float) 1)); + g.drawRect(0,0,gfi_width-1, gfi_height-1); + + } + + // Wrappermethoden + /** + * Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + * Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + * der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu. + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public void size(int width, int height){ + picture.size(width, height); + } + + /** + * Liefert die Breite des Bildes zurück. + * @return Breite des Bildes + */ + public int getImageWidth() { + return picture.getWidth(); + } + + /** + * Liefert die Höhe des Bildes zurück. + * @return Höhe des Bildes + */ + public int getImageHeight() { + return picture.getHeight(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + picture.background(c); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + picture.background(r,g,b); + } + + /** + * Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + * Um eine Linie einzufärben, verwenden Sie die {@link #stroke(int, int, int) stroke()} Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + * Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + * {@link #strokeWeight(double) strokeWeight()} geändert werden. + * @param x1 x-Koordinate des 1. Punktes + * @param y1 y-Koordinate des 1. Punktes + * @param x2 x-Koordinate des 2. Punktes + * @param y2 y-Koordinate des 2. Punktes + */ + public void line(int x1, int y1, int x2, int y2) { + picture.line(x1,y1,x2,y2); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + picture.rect(a,b,c,d); + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + picture.ellipse(a,b,c,d); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + picture.triangle(x1,y1,x2,y2,x3,y3); + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + picture.quad(x1,y1,x2,y2,x3,y3,x4,y4); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + public void polygon(int[] x, int[] y) { + picture.polygon(x,y); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + picture.point(x,y); + + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + * Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + * Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void rectMode(int mode) { + picture.rectMode(mode); + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + * Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + * Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als Breite und Höhe der Form. + * ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void ellipseMode(int mode) { + picture.ellipseMode(mode); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + picture.stroke(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + picture.noStroke(); + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + picture.strokeWeight(width); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + picture.fill(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + picture.noFill(); + } + + /** + * Löscht den Inhalt des Bildes. + * Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt. + */ + public void clear(){ + picture.clear(); + } + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + picture.load(filename); + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + picture.save(filename); + } + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param t Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String t, int x, int y) { + picture.text(t,x,y); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + picture.textFont(font); + } + + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + public Color[][] getPixelArray() { + return picture.getPixelArray(); + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + picture.setPixelArray(pixel); + } + + +} + diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg15_xydiagramm/Table.java b/03_vorlagen_tauschordner/02_greenfoot/alg15_xydiagramm/Table.java new file mode 100644 index 0000000..ee5a211 --- /dev/null +++ b/03_vorlagen_tauschordner/02_greenfoot/alg15_xydiagramm/Table.java @@ -0,0 +1,894 @@ +/** + * Die Klasse Table vereinfacht den Zugriff auf CSV-Dateien. + * Die Klassen Table und TableRow ermöglichen einen einfachen Zugriff auf tabellenbasierte + * Dokumente. + * + * @author Thomas Schaller + * @version 1.0 vom 01.02.2019 + */ + +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.ArrayList; +import java.io.*; +import java.util.Scanner; + +import org.jdom.Document; +import org.jdom.Element; +import org.jdom.Attribute; +import org.jdom.JDOMException; +import org.jdom.input.SAXBuilder; +import org.jdom.output.XMLOutputter; +import org.jdom.output.Format; + +public class Table +{ + // Standardtrennzeichen für Spalten + private static final char DEFAULT_SEPARATOR = ';'; + // Standardmarkierung für Texte + private static final char DEFAULT_QUOTE = '"'; + // Standardtrennzeichen für Dezimalzahlen + private static final char DEFAULT_COMMA = ','; + + // mögliche Spaltentypen + private static final String UNKNOWN ="UNKOWN"; + private static final String INT = "INTEGER"; + private static final String DOUBLE = "DOUBLE"; + private static final String FLOAT = "FLOAT"; + + // interne Verwaltung des Dokuments als JDOM-Document-Objekt + private Document doc; + // Verweis auf Element für Kopfzeile + private Element header; + // Ende Attribute + + /** + * Erzeugt leeres Tabellen-Dokument. + */ + public Table() { + this.doc = new Document(); + doc.setRootElement(new Element("CSV-Data")); + this.header = new Element("Header"); + doc.getRootElement().addContent(header); + } + + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei und erstellt ein Tabellenobjekt mit seinen Werten. + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public Table(String filename, String options, char separator, char quote) { + loadCSV(filename, options, separator, quote); + } + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei und erstellt ein Tabellenobjekt mit seinen Werten (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + */ + public Table(String filename, String options) { + loadCSV(filename, options); + } + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei ohne Kopfzeile und erstellt ein Tabellenobjekt mit seinen Werten (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public Table(String filename) { + loadCSV(filename); + } + + // Anfang Methoden + /** + * Liest den Inhalt einer CSV-Datei ohne Kopfzeile (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public void loadCSV(String filename) { + loadCSV(filename, ""); + } + + /** + * Liest den Inhalt einer CSV-Datei (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + */ + public void loadCSV(String filename, String options) { + loadCSV(filename, options, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** + * Liest den Inhalt einer CSV-Datei. + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public void loadCSV(String filename, String options, char separator, char quote) { + doc = new Document(); + doc.setRootElement(new Element("CSV-Data")); + header = new Element("Header"); + doc.getRootElement().addContent(header); + try { + File f = new File(filename); + Scanner scanner = new Scanner(new File(filename)); + if(options.toLowerCase().contains("header") && scanner.hasNext()) { + List entries = parseLine(scanner.nextLine(), separator, quote); + int i= 0; + for(String s : entries) { + Element entry = new Element("Column"); + header.addContent(entry); + entry.setText(s); + entry.setAttribute("type", "unknown"); + i++; + } + } + + List cols = header.getChildren(); + + while (scanner.hasNext()) { + Element line = new Element("Row"); + doc.getRootElement().addContent(line); + List entries = parseLine(scanner.nextLine(), separator, quote); + int i= 0; + + for(String s : entries) { + + if(i==cols.size()) { + Element entry = new Element("Column"); + entry.setAttribute("type", "unknown"); + header.addContent(entry); + cols = header.getChildren(); + } + + Element entry = new Element("Entry"); + entry.setText(s); + line.addContent(entry); + i++; + } + } + scanner.close(); + + } catch (Exception e) { + System.out.println("Fehler beim Lesen der CSV-Datei"); + } + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei ohne Kopfzeile (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public void saveCSV(String filename) { + saveCSV(filename, ""); + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthalten, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile haben soll, + * dann lassen Sie einfach die Option "header" weg. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile haben soll. + * @param filename Dateiname der CSV-Datei. + */ + public void saveCSV(String filename, String options) { + saveCSV(filename, options, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei. + * Wenn die Datei eine Kopfzeile enthalten, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile haben soll, + * dann lassen Sie einfach die Option "header" weg. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile haben soll. + * @param filename Dateiname der CSV-Datei. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public void saveCSV(String filename, String options, char separator, char quote){ + try{ + File f = new File(filename); + PrintStream outputFile = new PrintStream (f); + System.out.println("Speicher in : "+f.getAbsolutePath()); + List columns = header.getChildren(); + String sq = ""+quote; + String ss = ""+separator; + if(quote =='"') sq = "\""; + if(separator =='"') ss = "\""; + + if(options.toLowerCase().contains("header")) { + String h = ""; + for(Element c : columns) { + h += ss + sq + c.getText()+sq; + } + outputFile.println(h.substring(1)); + } + for(int i = 0; i parseLine(String cvsLine) { + return parseLine(cvsLine, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** HIlfsfunktion für die Analyse einer Dateizeile + * @param cvsLine Zeile aus der Datei + * @param sparator Trennzeichen für die Spalten + * @return Liste von String für die einzelnen Spalten + */ + private List parseLine(String cvsLine, char separator) { + return parseLine(cvsLine, separator, DEFAULT_QUOTE); + } + + /** HIlfsfunktion für die Analyse einer Dateizeile + * @param cvsLine Zeile aus der Datei + * @param sparator Trennzeichen für die Spalten + * @param customQuote Kennung für Strings + * @return Liste von String für die einzelnen Spalten + */ + private List parseLine(String cvsLine, char separator, char customQuote) { + + List result = new ArrayList<>(); + + //if empty, return! + if (cvsLine == null && cvsLine.isEmpty()) { + return result; + } + + //ggf. Default-Value laden + if (customQuote == ' ') { + customQuote = DEFAULT_QUOTE; + } + + if (separator == ' ') { + separator = DEFAULT_SEPARATOR; + } + + StringBuffer curVal = new StringBuffer(); + boolean inQuotes = false; + boolean startCollectChar = false; + boolean doubleQuotesInColumn = false; + + char[] chars = cvsLine.toCharArray(); + + for (char ch : chars) { + + if (inQuotes) { // aktueller Text ist in Quotes eingeschlossen + startCollectChar = true; + + if (ch == customQuote) { // Quotes werden beendet, aber Achtung bei "" => Metazeichen + inQuotes = false; + if (ch == '\"') { + doubleQuotesInColumn = true; + } + + } else { + + if (ch == '\"' && !doubleQuotesInColumn) { + doubleQuotesInColumn = true; + } else { + curVal.append(ch); + doubleQuotesInColumn = false; + } + + } + } else { + if (ch == customQuote) { + + inQuotes = true; + + //Fixed : allow "" in empty quote enclosed + if (ch == '\"'){ + if(doubleQuotesInColumn) { + curVal.append('"'); + doubleQuotesInColumn = false; + } else doubleQuotesInColumn = true; + + + } + } + else { + doubleQuotesInColumn = false; + if (ch == separator) { + + result.add(curVal.toString()); + + curVal = new StringBuffer(); + startCollectChar = false; + + } else if (ch == '\r') { + //ignore LF characters + continue; + } else if (ch == '\n') { + //the end, break! + break; + } else { + curVal.append(ch); + } + } + } + + } + result.add(curVal.toString()); + return result; + } + + /** + * Sucht die Nummer einer durch Namen gegebenen Spalte. + * @param name Name der Spalte + * @return Nummer der Spalte + */ + + private int findColumnNumber(String name) { + List columns = header.getChildren(); + int i = 0; + for(Element c : columns) { + if (c.getText().toLowerCase().equals(name.toLowerCase())) { + return i; + + } + i++; + } + return -1; + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an. + */ + public void addColumn() { + Element entry = new Element("Column"); + entry.setAttribute("type", Table.UNKNOWN); + header.addContent(entry); + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an und benennt sie. + * @param title Bezeichnung der Spalte + */ + public void addColumn(String title) { + addColumn(); + Element nc = ((List)(header.getChildren())).get(header.getChildren().size()-1); + nc.setText(title); + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an und benennt und typisiert sie. + * @param title Bezeichnung der Spalte + * @param type Typ der Spalte (UNKNOWN, DOUBLE, INTEGER, FLOAT) + */ + public void addColumn(String title, String type) { + addColumn(title); + Element nc = ((List)(header.getChildren())).get(header.getChildren().size()-1); + nc.setAttribute("type", type); + } + + /** + * Löscht eine Spalte. + * @param i Nummer der Spalte. + */ + public void removeColumn(int i) { + List lines = doc.getRootElement().getChildren(); + for(Element l : lines) { + if(l.getChildren().size()>i) l.removeContent(i); + } + } + + /** + * Löscht eine Spalte + * @param name Name der Spalte + */ + public void removeColumn(String name) { + try{ + removeColumn(findColumnNumber(name)); + } catch(Exception e) { System.out.println("Unbekannter Spaltenname");} + } + + /** + * Liefert die Anzahl der Spalten in der Tabelle + * @return Anzahl der Spalten + */ + public int getColumnCount() { + return header.getChildren().size(); + } + + /** + * Liefert die Anzahl der Zeilen in der Tabelle + * @return Anzahl der Zeilen + */ + public int getRowCount() { + return doc.getRootElement().getChildren().size()-1; + } + + /** + * Löscht alle Zeilen der Tabelle. + * Die Spaltenüberschriften und Typen bleiben erhalten. + */ + public void clearRows() { + doc.getRootElement().removeChildren("Row"); + } + + /** + * Fügt eine neue Zeile an das Ende der Tabelle an. + * @return ein TableRow-Objekt für diese neue Zeile + */ + public TableRow addRow() { + Element row = new Element("Row"); + doc.getRootElement().addContent(row); + return new TableRow(doc, row); + } + + /** + * Löscht eine Zeile + * @param i Nummer der Zeile + */ + public void removeRow(int i) { + if(i rows = doc.getRootElement().getChildren(); + return new TableRow(doc, rows.get(i+1)); + } + return null; + } + + /** + * Liefert die ganze Tabelle als Array von TableRow-Objekten + * @return Array von TableRow-Objekten + */ + public TableRow[] rows() { + TableRow[] rows = new TableRow[getRowCount()]; + for(int i = 0; i < getRowCount(); i++) { + rows[i] = getRow(i); + } + return rows; + } + + /** + * Liefert den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param column Spaltennummer + * @return Wert der Zelle + */ + public int getInt(int row, int column) { + return getRow(row).getInt(column); + } + + /** + * Liefert den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param name Name der Spalte + * @return Wert der Zelle + */ + public int getInt(int row, String name) { + return getRow(row).getInt(name); + } + + /** + * Setzt den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param column Spaltennummer + * @param value neuer Wert der Zelle + */ + public void setInt(int row, int column,int value) { + getRow(row).setInt(column, value); + } + + /** + * Setzt den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(int row, String name, int value) { + getRow(row).setInt(name, value); + } + + /** + * Liefert alle Werte einer Zeile als Integer-Array. + * @param row Nummer der Zeile + * @return int-Array, dass alle Werte der Zeile enthält + */ + public int[] getIntRow(int row) { + try{ + TableRow trow = getRow(row); + int anz = getColumnCount(); + int[] r = new int[anz]; + for(int i=0; i) (header.getChildren())).get(i).getText(); + } else { + return ""; + } + } + + /** + * Liefert die Nummer einer Spalte + * @param name Name der Spalte + * @return Nummer der Spalte + */ + public int getColumn(String name) { + List columns = header.getChildren(); + int i = 0; + while (i < columns.size()) { + if (columns.get(i).getText().toLowerCase().equals(name.toLowerCase())) { + return i; + } + i++; + } // end of while + return -1; + } + + + /** + * Erzeugt eine neue Zeile mit i Spalten + * Wenn bisher nicht genügend Spalten vorhanden sind, werden automatisch neue Spalten hinzugefügt (auch zum Header) + * @param i Anzahl der Spalten + */ + private Element buildRow(int i) { + List columns = header.getChildren(); + Element entry=null; + for(int j=0; j<=i; j++) { + + if(j==columns.size()) { + Element h = new Element("Column"); + h.setAttribute("type", "unknown"); + header.addContent(h); + columns = header.getChildren(); + } + if(j==current.getChildren().size()) { + entry = new Element("Entry"); + current.addContent(entry); + + } + + } + return entry; + + } + + /** + * Erzeugt eine neue Zeile. + * Es werden genügend Spalten erzeugt, dass ein Wert in Spalte "name" eingetragen werden kann + * @param name Name der Spalte + */ + private Element buildRow(String name) { + List columns = header.getChildren(); + int i = 0; + for(Element c: columns) { + + if(c.getText().toLowerCase().equals(name.toLowerCase())) { + return buildRow(i); + } + i++; + } + return null; + + } + + /** + * Liefert den Wert einer Zelle als String + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public String getString(int i) { + if(i >= current.getContent().size()) return ""; + Element e = (Element) current.getContent(i) ; + if(e!=null) { + return e.getText(); + } else { + return ""; + } + } + + /** + * Liefert den Wert einer Zelle als String + * @param name Name der Spalte + * @return Wert der Zelle + */ + public String getString(String name) { + return getString(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als String + * @param i Nummer der Spalte + * @param text neuer Wert der Zelle + */ + public void setString(int i, String text) { + + Element e = buildRow(i); + if(e!=null) e.setText(text); + } + + /** + * Setzt den Wert einer Zelle als String + * @param name Name der Spalte + * @param text neuer Wert der Zelle + */ + public void setString(String name, String text) { + Element e = buildRow(name); + if(e!=null) e.setText(text); + } + + + /** + * Liefert den Wert einer Zelle als Int-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public int getInt(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Integer.parseInt(e.getText()); + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Int-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public int getInt(String name) { + return getInt(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Int-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(int i,int value) { + + Element e = buildRow(i); + if(e!=null) e.setText(""+value); + } + + /** + * Setzt den Wert einer Zelle als Int-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(String name, int value) { + Element e = buildRow(name); + if(e!=null) e.setText(""+value); + } + + /** + * Liefert den Wert einer Zelle als Float-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public float getFloat(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Float.parseFloat(e.getText().replace(",",".")); + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Float-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public float getFloat(String name) { + return getFloat(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Float-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setFloat(int i,float value) { + + Element e = buildRow(i); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Setzt den Wert einer Zelle als Float-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setFloat(String name, float value) { + Element e = buildRow(name); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Liefert den Wert einer Zelle als Double-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public double getDouble(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Double.parseDouble(e.getText().replace(",",".")); + + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Double-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public double getDouble(String name) { + return getDouble(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Double-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setDouble(int i,double value) { + + Element e = buildRow(i); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Setzt den Wert einer Zelle als Double-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setDouble(String name, double value) { + Element e = buildRow(name); + if(e!=null) e.setText(format.format(value)); + } + +} diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg15_xydiagramm/XML.java b/03_vorlagen_tauschordner/02_greenfoot/alg15_xydiagramm/XML.java new file mode 100644 index 0000000..c06c490 --- /dev/null +++ b/03_vorlagen_tauschordner/02_greenfoot/alg15_xydiagramm/XML.java @@ -0,0 +1,637 @@ +/** + * Klasse zum Vereinfachten Zugriff auf XML-Dokumente + * Diese Klasse ist für den Einsatz in der Schule gedacht und soll den Schülern + * einen einfachen Zugriff auf XML-Dokumente ermöglichen. Die zur Verfügung + * stehenden Befehle sind wie in Processing realisiert. + * Dabei ist jeder Teilbaum des Dokuments wieder als XML-Objekt zugreifbar, das + * intern auf die gleiche XML-Dokumentstruktur zugreift. + * Dies ermöglicht bei unsachgemäßem Gebrauch die XML-Struktur zu zerstören. Im + * normalen Gebrauch sollte dies aber nicht relevant sein. + * + * Benötigt: jdom-1.1.3.jar + + * @author Thomas Schaller + * @version 1.0 vom 31.01.2019 + */ +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.ArrayList; +import java.io.*; + +import org.jdom.Document; +import org.jdom.Element; +import org.jdom.Attribute; +import org.jdom.JDOMException; +import org.jdom.input.SAXBuilder; +import org.jdom.output.XMLOutputter; +import org.jdom.output.Format; + +public class XML { + // Anfang Attribute + // XML-Dokumentstruktur + private Document doc; + // Zeiger auf das aktuelle Element + private Element current; + // Ende Attribute + + /** + * Erzeugt ein leeres XMLDokument + */ + public XML() { + this.doc = new Document(); + this.current = null; + } + + /** + * Erzeugt ein XML-Dokument aus einer Datei + * @param filename Dateiname der XML-Datei + */ + public XML(String filename) { + loadXML(filename); + } + + /** + * interner Konstruktor, um ein XML Objekt zu erzeugen, das auf einen bestimmten Knoten verweist + * @param doc die XML-Dokumentstruktur + * @param current Zeiger auf das aktuelle Element + */ + private XML(Document doc, Element current) { + this.doc = doc; + this.current = current; + } + + // Anfang Methoden + /** Öffnet das durch den Dateinamen gegebene Dokument + * @param filename Dateiname des XML-Files + */ + public void loadXML(String filename) { + doc = null; + File f = new File(filename); + + try { + // Das Dokument erstellen + SAXBuilder builder = new SAXBuilder(); + doc = builder.build(f); + + } catch (JDOMException e) { + e.printStackTrace(); + + } catch (IOException e) { + e.printStackTrace(); + } + // Zeiger im Baum auf Root-Element + current = doc.getRootElement(); + } + + /** Speichert den XML-Baum im angegebenen Dateinamen + * @param filename Dateiname des XML-Files + */ + public void saveXML(String filename) { + try { + // new XMLOutputter().output(doc, System.out); + XMLOutputter xmlOutput = new XMLOutputter(); + + // display nice nice + xmlOutput.setFormat(Format.getPrettyFormat()); + File f = new File(filename); + FileOutputStream outputFile = new FileOutputStream(f); + System.out.println("Speicher in : "+f.getAbsolutePath() ); + xmlOutput.output(doc, outputFile); + outputFile.close(); + System.out.println("File Saved!"); + } catch (IOException io) { + System.out.println(io.getMessage()); + } + + } + + //----------------------------------------------- Zeigerbewegungen -------------------------------------------------- + /** + * liefert ein XML-Objekt, das auf den Vaterknoten des aktuellen Elements zeigt. + * @return Vater des aktuellen Objekts. + */ + public XML getParent() { + if(current != null) { + Element parent = current.getParentElement(); + if (parent == null) { + return null; + } else { + return new XML(doc, parent); + } + } + return null; + } + + /** + * Überprüft, ob das Element irgendwelche Kinder hat oder nicht, und gibt das Ergebnis als boolean zurück. + * @return true, wenn Kinder vorhanden sind, sonst false + */ + public boolean hasChildren() { + if (current == null) { + return doc.hasRootElement(); + } else { + return current.getChildren().size()>0; + } + } + + /** + * Ermittelt die Namen aller Kinder des Elements und gibt die Namen als ein Array von Strings zurück. + * Dies ist dasselbe wie das Durchlaufen und Aufrufen von getName() auf jedem untergeordneten Element einzeln. + * @return Liste aller Namen der Kinder + */ + public String[] listChildren() { + if (current == null) { + if(doc.hasRootElement()) { + String[] names = new String[0]; + names[0] = doc.getRootElement().getName(); + return names; + } else { + return null; + } + } else { + List ch_element = current.getChildren(); + String[] names = new String[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + names[i] = ch_element.get(i).getName(); + } + return names; + } + } + + /** + * Liefert alle Kinder des Elements als Array von XML-Objekten. + * @return Array der Kinder als XML-Objekte + */ + public XML[] getChildren() { + if (current == null) { + if(doc.hasRootElement()) { + XML[] ch_xml = new XML[1]; + ch_xml[0] = new XML(doc, doc.getRootElement()); + return ch_xml; + } else { + return null; + } + } else { + List ch_element = current.getChildren(); + XML[] ch_xml = new XML[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + ch_xml[i] = new XML(doc, ch_element.get(i)); + } + return ch_xml; + } + } + + /** + * Liefert bestimmte Kinder des Elements als Array von XML-Objekten. + * Die Methode gibt dabei alle Kinder zurück, die dem angegebenen Namen entsprechen. + * @param name Name der gesuchten Kind-Objekte + * @return Array der Kinder als XML-Objekte + */ + public XML[] getChildren(String name) { + if (current == null) { + if(doc.hasRootElement()) { + XML[] ch_xml = new XML[1]; + ch_xml[0] = new XML(doc, doc.getRootElement()); + if(doc.getRootElement().getName().equals(name)){ + return ch_xml; + } else { + return null; + } + } else { + return null; + } + } else { + List ch_element = current.getChildren(name); + XML[] ch_xml = new XML[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + ch_xml[i] = new XML(doc, ch_element.get(i)); + } + return ch_xml; + } + } + + /** + * Liefert das erste Kind des Elements mit einem bestimmten Namen. + * Die Methode gibt das erste Kind zurück, das dem angegebenen Namen entsprechen. + * @param name Name des gesuchten Kind-Objektes + * @return Kind als XML-Objekt + */ + + public XML getChild(String name) { + if (current == null) { + Element e = doc.getRootElement(); + if (e.getName().equals(name)) { + return new XML(doc, e); + } else { + return null; + } + } else { + String[] names = name.split("/"); + Element e = current; + int i = 0; + while(i < names.length) { + e = e.getChild(names[i]); + if (e==null) return null; + i++; + } + return new XML(doc, e); + } + } + + /** + * Liefert das i. Kind des Elements. + * Die Methode gibt das i. Kind des aktuellen Elements zurück. + * @param i Nummer des Kindes + * @return Kind als XML-Objekt + */ + public XML getChild(int i) { + if (current == null) { + return new XML(doc, doc.getRootElement()); + } else { + List ch_element = current.getChildren(); + if (i>=ch_element.size()) return null; + return new XML(doc, ch_element.get(i)); + } + } + + //--------------------------------------------------- Methoden für das aktuelle Element ------------------------------------------------- + /** + * Frage den Namen des aktuellen Elements ab + * @return Namen des Elements + */ + public String getName() { + if (current==null) return ""; + return current.getName(); + } + + /** + * Setze den Namen des aktuellen Elements. + * @param name Neuer Name des Elements + */ + public void setName(String name) { + if (current==null) return; + current.setName(name); + } + + /** + * liefert die Anzahl der Attribute eines Elements. + * @return Anzahl des Attribute + */ + public int getAttributeCount() { + if (current == null) return 0; + return current.getAttributes().size(); + } + + /** + * liefert zurück, ob das aktuelle Element Attribute hat . + * @return true, wenn es Attribute gibt + */ + public boolean hasAttribute() { + if (current == null) return false; + return current.getAttributes().size()>0; + } + + /** + * Ruft alle Attribute des angegebenen Elements ab und gibt sie als Array von Strings zurück. + * @return Liste der Attributnamen + */ + public String[] listAttributes() { + if (current == null) return null; + List attr = current.getAttributes(); + String[] names = new String[attr.size()]; + for(int i=0; i < attr.size() ; i++) { + names[i] = attr.get(i).getName(); + } + return names; + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs + */ + public String getString(String attribute) { + if (current==null) return ""; + return current.getAttributeValue(attribute); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs + */ + public String getString(String attribute, String defaultValue) { + if (current==null) return defaultValue; + return current.getAttributeValue(attribute,defaultValue); + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param text neuer Wert des Attributs + */ + public void setString(String attribute, String text) { + if (current==null) return; + current.setAttribute(attribute, text); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Integer-Zahl + */ + public int getInt(String attribute) { + if (current==null) return 0; + try{ + int i = Integer.parseInt(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als Integer-Zahl + */ + public int getInt(String attribute, int defaultValue) { + if (current==null) return defaultValue; + try{ + int i = Integer.parseInt(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setInt(String attribute, int value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Float-Zahl + */ + public float getFloat(String attribute) { + if (current==null) return 0; + try{ + float i = Float.parseFloat(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als Float-Zahl + */ + public float getFloat(String attribute, float defaultValue) { + if (current==null) return defaultValue; + try{ + float i = Float.parseFloat(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setFloat(String attribute, float value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Double-Zahl + */ + public double getDouble(String attribute) { + if (current==null) return 0; + try{ + double i = Double.parseDouble(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + +/** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als double-Zahl + */ + public double getDouble(String attribute, double defaultValue) { + if (current==null) return defaultValue; + try{ + double i = Double.parseDouble(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setDouble(String attribute, double value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt den Inhalt/Text des aktuellen Elements ab + * @return Inhalt des Elements + */ + public String getContent() { + if ( current==null) return ""; + + return current.getText(); + } + + /** + * Fragt den Inhalt/Text des aktuellen Elements ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardtext + * @return Inhalt des Elements + */ + public String getContent(String defaultValue) { + if ( current==null) return defaultValue; + String t = current.getText(); + if(t.equals("")) t = defaultValue; + return t; + } + + /** + * Setzt den Inhalt/Text des aktuellen Elements + * @param text Neuer Inhalt des Elements + */ + public void setContent(String text) { + if ( current==null) return; + current.setText(text); + } + + + /** + * Fragt den Inhalt des aktuellen Elements als Integerzahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ public int getIntContent(int defaultValue) { + if ( current==null) return defaultValue; + try{ + int i = Integer.parseInt(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Integerzahl ab + * @return Inhalt des Elements + */ + public int getIntContent() { + if ( current==null) return 0; + try{ + int i = Integer.parseInt(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setIntContent(int value) { + if ( current==null) return; + current.setText(""+value); + } + + + /** + * Fragt den Inhalt des aktuellen Elements als Floatzahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ + public float getFloatContent(float defaultValue) { + if ( current==null) return defaultValue; + try{ + float i = Float.parseFloat(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Floatzahl ab + * @return Inhalt des Elements + */ + public float getFloatContent() { + if ( current==null) return 0; + try{ + float i = Float.parseFloat(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setFloatContent(float value) { + if ( current==null) return; + current.setText(""+value); + } + +/** + * Fragt den Inhalt des aktuellen Elements als Doublezahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ + public double getDoubleContent(double defaultValue) { + if ( current==null) return defaultValue; + try{ + double i = Double.parseDouble(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Doublezahl ab + * @return Inhalt des Elements + */ + public double getDoubleContent() { + if ( current==null) return 0; + try{ + double i = Double.parseDouble(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setDoubleContent(double value) { + if ( current==null) return; + current.setText(""+value); + } + + + // ----------------------------------------------- XML-Struktur aufbauen ------------------------------------------------ + /** Erzeuge neues Element nach der aktuellen Position und setze dieses als aktuelles Element + * @param name Name des neuen Elements + * @return neues Element als XML-Objekt + */ + public XML addChild(String name) { + Element e = new Element(name); + if(current == null){ // man ist auf Root-Ebene + doc.setRootElement(e); + + } + else { + current.addContent(e); + } // end of if-else + return new XML(doc, e); + } + + /** + * liefert das aktuelle Element als jdom-Element-Objekt + * @return aktuelles Element + */ + private Element getCurrent() { + return current; + } + + /** + * löscht ein Kind des aktuellen Knotens. + * Ist kid kein Kind des aktuellen Elements passiert gar nichts. + * @param kid XML-Objekt des Kindes + */ + public void removeChild(XML kid) { + if (current == null) return; + Element e = kid.getCurrent(); + int index = current.indexOf(e); + if(index >= 0) { current.removeContent(e);} + } + +} diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg15_xydiagramm/XYDiagramm.java b/03_vorlagen_tauschordner/02_greenfoot/alg15_xydiagramm/XYDiagramm.java new file mode 100644 index 0000000..844c16f --- /dev/null +++ b/03_vorlagen_tauschordner/02_greenfoot/alg15_xydiagramm/XYDiagramm.java @@ -0,0 +1,123 @@ +import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot und MouseInfo) +import java.awt.Font; + +/** + * XY-Diagramm für Schalldruckpegel, Zahlen werden aus CSV-Datei gelesen. + * + * @author Schaller + * @version 29.11.18 + */ + + public class XYDiagramm extends PictureViewer + +{ + // Liste mit allen Werten + int[] punkte; + String[] namen; + + // Hilfsvariablen für die Suche + int akt_maximum=-1; // aktuell groesstes Element + int akt=-1; // aktuell untersuchtes Element + int verzoegerung=0; // Geschwindigkeit der Ausführung + + // Schriften + Font kleineSchrift; + Font grosseSchrift; + + public XYDiagramm() { + size(1000, 700); + background(0); + kleineSchrift = new Font( Font.SANS_SERIF, Font.PLAIN, 12 ); + grosseSchrift = new Font( Font.SANS_SERIF, Font.PLAIN, 20 ); + + // Deaktiviere die automatische Neudarstellung nach einem Zeichenbefehl + setAutoRefresh(false); + + // CSV-Datei laden und anzeigen + ladeTabelle("punkte.csv"); + stroke(250,250,200); + zeichneBalken(); + } + + public void ladeTabelle(String name) { + // Tabelle aus CSV-Datei laden + Table csv = new Table(name, "header",',','"'); + + if (csv != null && csv.getColumnCount()==2) { + + // Initialisiere Arrays, in die alle Zeilen der Tabelle passen + punkte = new int[csv.getRowCount()]; + namen = new String[csv.getRowCount()]; + + // Fülle die Arrays mit Werten aus der Tabelle + for (int i = 0; i < punkte.length; i++) { + // Lies Wert aus der i. Zeile und der Spalte "Punkte" bzw. "Name" + punkte[i] = csv.getInt(i, "Punkte"); + namen[i] = csv.getString(i, "Name"); + } + } + } + + public void zeichneBalken() { + + clear(); + + // Überschrift + fill(255, 255, 255); + textFont(grosseSchrift); + text("Punkte", 2, 20); + textFont(kleineSchrift); + + // Alle Einträge darstellen + if (punkte != null) { + for (int i = 0; i< punkte.length; i++) { + + fill(20, 25, 165); + // aktuelle Elemente farblich hervorheben + if (i == akt) { + fill(140,230,20); + } + if (i == akt_maximum) { + fill(230,60,140); + } + // Balkendiagramm zeichnen + if (punkte[i]>=0) rect(120, 25+i*15, punkte[i]+1, 13); + + // Beschriftung + fill(255, 255, 255); + text(namen[i], 2, 35+i*15); + text(""+punkte[i], 70, 35+i*15); + } + } + + //Bildschrimanzeige erneuern. AutoRefresh ist aus Zeitgründen deaktiviert. + refresh(); + + } + + public int sucheMaximum(int[] zahlen) { + // Sind überhaupt Daten da? + if(zahlen.length==0 ) { //<>// + return -1; + } + + // Startwerte setzen + akt_maximum = 0; + akt = 1; + + // Alle Arrayelemente untersuchen + while (akt < zahlen.length) { + + // Neues größtes Element?? + if (zahlen[akt]> zahlen[akt_maximum]) { + // Dann merke dir das neue + akt_maximum = akt; + + } + akt = akt + 1; + } + // Gib Position des größten Elements zurück + return akt_maximum; + } + +} diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg15_xydiagramm/images/balken.png b/03_vorlagen_tauschordner/02_greenfoot/alg15_xydiagramm/images/balken.png new file mode 100644 index 0000000..9ff1ffc Binary files /dev/null and b/03_vorlagen_tauschordner/02_greenfoot/alg15_xydiagramm/images/balken.png differ diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg15_xydiagramm/images/bilderrahmen.png b/03_vorlagen_tauschordner/02_greenfoot/alg15_xydiagramm/images/bilderrahmen.png new file mode 100644 index 0000000..7f34e32 Binary files /dev/null and b/03_vorlagen_tauschordner/02_greenfoot/alg15_xydiagramm/images/bilderrahmen.png differ diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg15_xydiagramm/images/xydiagramm.png b/03_vorlagen_tauschordner/02_greenfoot/alg15_xydiagramm/images/xydiagramm.png new file mode 100644 index 0000000..a13fc89 Binary files /dev/null and b/03_vorlagen_tauschordner/02_greenfoot/alg15_xydiagramm/images/xydiagramm.png differ diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg15_xydiagramm/jdom-1.1.3.jar b/03_vorlagen_tauschordner/02_greenfoot/alg15_xydiagramm/jdom-1.1.3.jar new file mode 100644 index 0000000..a287727 Binary files /dev/null and b/03_vorlagen_tauschordner/02_greenfoot/alg15_xydiagramm/jdom-1.1.3.jar differ diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg15_xydiagramm/project.greenfoot b/03_vorlagen_tauschordner/02_greenfoot/alg15_xydiagramm/project.greenfoot new file mode 100644 index 0000000..2960ade --- /dev/null +++ b/03_vorlagen_tauschordner/02_greenfoot/alg15_xydiagramm/project.greenfoot @@ -0,0 +1,93 @@ +#Greenfoot project file +class.PictureViewer.image=bilderrahmen.png +class.XYDiagramm.image=xydiagramm.png +dependency1.from=MyWorld +dependency1.to=XYDiagramm +dependency1.type=UsesDependency +dependency2.from=PictureViewer +dependency2.to=Picture +dependency2.type=UsesDependency +dependency3.from=XYDiagramm +dependency3.to=Table +dependency3.type=UsesDependency +dependency4.from=Table +dependency4.to=TableRow +dependency4.type=UsesDependency +dependency5.from=Picture +dependency5.to=PictureViewer +dependency5.type=UsesDependency +editor.fx.0.height=739 +editor.fx.0.width=816 +editor.fx.0.x=552 +editor.fx.0.y=100 +height=885 +package.numDependencies=5 +package.numTargets=7 +project.charset=UTF-8 +publish.hasSource=false +publish.locked=true +publish.longDesc= +publish.shortDesc= +publish.tags= +publish.title= +publish.url= +readme.height=58 +readme.name=@README +readme.width=47 +readme.x=10 +readme.y=10 +simulation.speed=97 +target1.height=50 +target1.name=PictureViewer +target1.showInterface=false +target1.type=ClassTarget +target1.width=100 +target1.x=0 +target1.y=0 +target2.height=50 +target2.name=Table +target2.showInterface=false +target2.type=ClassTarget +target2.width=80 +target2.x=0 +target2.y=0 +target3.height=50 +target3.name=XYDiagramm +target3.showInterface=false +target3.type=ClassTarget +target3.width=90 +target3.x=0 +target3.y=0 +target4.height=50 +target4.name=Picture +target4.showInterface=false +target4.type=ClassTarget +target4.width=80 +target4.x=0 +target4.y=0 +target5.height=50 +target5.name=XML +target5.showInterface=false +target5.type=ClassTarget +target5.width=100 +target5.x=0 +target5.y=0 +target6.height=50 +target6.name=TableRow +target6.showInterface=false +target6.type=ClassTarget +target6.width=80 +target6.x=0 +target6.y=0 +target7.height=50 +target7.name=MyWorld +target7.showInterface=false +target7.type=ClassTarget +target7.width=80 +target7.x=0 +target7.y=0 +version=3.0.0 +width=1350 +world.lastInstantiated=MyWorld +xPosition=483 +yPosition=224 diff --git a/03_vorlagen_tauschordner/02_greenfoot/alg15_xydiagramm/punkte.csv b/03_vorlagen_tauschordner/02_greenfoot/alg15_xydiagramm/punkte.csv new file mode 100644 index 0000000..d6e8dfd --- /dev/null +++ b/03_vorlagen_tauschordner/02_greenfoot/alg15_xydiagramm/punkte.csv @@ -0,0 +1,6 @@ +"Name","Punkte" +Niko,216 +Klaus,591 +Anna,857 +Lena,180 +Winfried,168 diff --git a/03_vorlagen_tauschordner/03_javaeditor/alg03a_wasmachich/Picture.java b/03_vorlagen_tauschordner/03_javaeditor/alg03a_wasmachich/Picture.java new file mode 100644 index 0000000..57a3732 --- /dev/null +++ b/03_vorlagen_tauschordner/03_javaeditor/alg03a_wasmachich/Picture.java @@ -0,0 +1,676 @@ +import java.awt.image.*; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.BasicStroke; +import java.util.Vector; +import javax.imageio.*; +import java.io.*; +import java.awt.*; +import javax.swing.*; +import java.util.Random; +import java.awt.geom.AffineTransform; +/** + * + * Bildklasse für die Simulation von Processing-Befehlen + * + * Diese Klasse stellt ein BufferedImage bereit, in das mit Processing-Befehlen gezeichnet + * werden kann. + * Zusätzlich kann ein Bildanzeiger über jede Änderung des Bildes informiert werden, + * um "Zurück"-Befehle zu ermöglichen. Der Bildanzeiger ist entweder eine normale Java + * ScrollPane oder ein Actor aus Greenfoot. + * Die Dokumentation der einzelnen Zeichenmethoden ist der Processing-Reference + * (https://processing.org/reference/ steht unter CC-Lizenz: https://creativecommons.org/) + * entnommen und mit Deepl.com ins Deutsche übersetzt. + * + * @version 1.0 from 23.01.2019 + * @author Thomas Schaller (ZPG Informatik Klasse 9) + */ + +public class Picture{ + + // Einstellungmöglichkeiten für das Zeichnen von Rechtecken und Ellipsen + // RADIUS = Mittelpunkt+Radius wird gegeben, CENTER = Mittelpunkt und Breite/Höhe wird gegeben, + // CORNER = Linke obere Ecke + Breite/Höhe, CORNERS = Linke obere und rechte untere Ecke + public static final int RADIUS = 1; + public static final int CENTER = 2; + public static final int CORNER = 3; + public static final int CORNERS = 4; + + // gespeichertes Bild, + private BufferedImage image; + + // aktuelle Farbeinstellungen + private Color background; + private Color pencolor; + private Color fillcolor; + + // aktuelle Stiftdicke + private double stroke; + + // akkteller Koordinatenmodus von Rechtecken und Ellipsen + private int ellipseMode = CENTER; + private int rectMode = CORNER; + + // aktueller Font + private Font textfont = null; + + // muss ein Bildanzeiger benachrichtigt werden + private PictureViewer observer = null; + + /** + * Erzeugt ein Bild mit Standardgröße 500x400 + */ + public Picture() { + this(500,400); + } + + /** + * Erzeugt ein Bild der angegeben Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public Picture(int width, int height) { + this(width,height, "D0D0D0"); + } + + /** + * Erzeugt ein Bild aus einer Datei + * @param filename Dateiname des Bildes + */ + public Picture(String filename) { + load(filename); + } + + /** + * Erzeugt ein Bild der angegebenen Größe mit festgelegtem Hintergrund + * @param width Breite des Bildes + * @param height Höhe des Bildes + * @param background Farbe des Hintergrunds + */ + public Picture(int width, int height, String background) { + this.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + this.background = decode(background); + this.pencolor = new Color(0,0,0); + this.stroke = 1; + this.fillcolor = null; + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(this.background); + g.fillRect(0,0,width-1, height-1); + } + + /** + * Legt fest, wer das Bild anzeigt. + * Diese ermöglicht die Benachrichtung des Observers, wenn sich das Bild ändert. + * @param observer Anzeiger des Bildes + */ + + public void setObserver(PictureViewer observer) { + this.observer= observer; + } + + /** + * Direktes Setzen des Bildes (für interne Zwecke) + * @param b Bild, das gespeichert werden soll. + */ + public void setImage(BufferedImage b) { + image = b; + } + + /** + * Direktes Abfragen des Bildes (für interne Zwecke) + * @return Bild, das gerade gespeichert ist. + */ + public BufferedImage getImage() { + return image; + } + + /** + * Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + * Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + * der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu. + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public void size(int width, int height){ + pushImage(); + this.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(background); + g.fillRect(0,0,width-1, height-1); + } + + /** + * Liefert die Breite des Bildes zurück. + * @return Breite des Bildes + */ + public int getWidth() { + return image.getWidth(); + } + + /** + * Liefert die Höhe des Bildes zurück. + * @return Höhe des Bildes + */ + public int getHeight() { + return image.getHeight(); + } + + + /** + * Erzeugt eine Kopie des Bildes und übergibt sie an den Observer (falls existent), damit dieser die Versionen speichern kann + */ + private void pushImage() { + if(observer != null) { + observer.pushImage(); + } + } + + /** + * Auch die anzeigenden Klasse wird zum Neuzeichnen aufgefordert. + */ + private void repaint() { + if(observer != null) { + observer.repaint(); + } + } + + // ----------------------------------------- Zeichenfunktionen ----------------------------------------------- + /** + * Löscht den Inhalt des Bildes. + * Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt. + */ + + public void clear(){ + pushImage(); + image = new BufferedImage(image.getWidth(), image.getHeight(), image.getType()); + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(background); + g.fillRect(0,0,image.getWidth()-1, image.getHeight()-1); + repaint(); + } + + /** + * Konvertiert die in einem bestimmten Modus gegebenen Koordinaten in die Java-übliche Links_Oben_Breite_Höhe Version + * Die Änderungen werden direkt im Array vorgenommen + * @param coord Array mit vier Koordinateneinträgen im gegebenen Modus + * @param mode Modus der Koordinaten (CORNER, CORNERS, RADIUS oder CENTER) + */ + private void convert(int[] coord, int mode) { + switch(mode) { + case CORNER: break; + case CORNERS: coord[2] -= coord[0]; coord[3] -= coord[1]; break; + case RADIUS: coord[2] *= 2; coord[3] *=2; + case CENTER: coord[0] -= coord[2]/2; coord[1] -= coord[3]/2; + } + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + * Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + * Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void rectMode(int mode) { + rectMode = mode; + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + * Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + * Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als Breite und Höhe der Form. + * ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void ellipseMode(int mode) { + ellipseMode = mode; + } + + + + /** + * Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + * Um eine Linie einzufärben, verwenden Sie die {@link #stroke(int, int, int) stroke()} Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + * Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + * {@link #strokeWeight(double) strokeWeight()} geändert werden. + * @param x1 x-Koordinate des 1. Punktes + * @param y1 y-Koordinate des 1. Punktes + * @param x2 x-Koordinate des 2. Punktes + * @param y2 y-Koordinate des 2. Punktes + */ + public void line(int x1, int y1, int x2, int y2) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + if (stroke > 0) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawLine(x1, y1, x2, y2); + } + repaint(); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, rectMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillRect(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawRect(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, ellipseMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillOval(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawOval(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + int px[] = {x1, x2, x3}; + int py[] = {y1, y2, y3}; + polygon(px, py); + + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + + int px[] = {x1, x2, x3, x4}; + int py[] = {y1, y2, y3, y4}; + polygon(px, py); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + + public void polygon(int[] x, int[] y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(fillcolor != null) { + + g.setColor(fillcolor); + g.fillPolygon(x,y, y.length); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawPolygon(x, y, x.length); + } + repaint(); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + ellipse(x,y,1, 1); + + } + + // ----------------------------------------- Schriftdarstellung ----------------------------------------------- + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param s Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String s, int x, int y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(pencolor != null) { + g.setColor(fillcolor); + g.setStroke(new BasicStroke((float) stroke)); + g.setFont(textfont); + g.drawString(s, x, y); + } + repaint(); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + this.textfont = font; + } + + + // ----------------------------------------- Farbfestlegungen ----------------------------------------------- + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(String color) { + try{ + return new Color( + Integer.valueOf( color.substring( 0, 2 ), 16 ), + Integer.valueOf( color.substring( 2, 4 ), 16 ), + Integer.valueOf( color.substring( 4, 6 ), 16 ) ); + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(int color) { + try{ + if(color >=0 && color < 256) { + return new Color(color,color,color); + } else { + int r = color / 0x010000 % 0xFF; + int g = color / 0x000100 % 0xFF; + int b = color % 0xFF; + System.out.println(""+r+","+g+","+b); + return new Color(r, g, b ); + } + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + this.pencolor = decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + this.pencolor=decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + this.pencolor = new Color(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + this.pencolor = null; + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + this.stroke = width; + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + this.fillcolor = decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + this.fillcolor=decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + this.fillcolor = new Color(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + this.fillcolor = null; + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + if(c < 256) { + this.background=new Color(c,c,c); + } else { + int r = c / 0x010000; + int g = c / 0x000100 % 0xFF; + int b = c % 0xFF; + this.background= new Color(r, g, b ); + } + + this.clear(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + this.background=new Color(r,g,b); + this.clear(); + } + + +// ----------------------------------------- Dateioperationen ----------------------------------------------- + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + try{ + this.image = ImageIO.read(new File(filename)); + this.background = decode("D0D0D0"); + this.pencolor = new Color(0,0,0); + this.fillcolor = null; + this.stroke = 1; + this.repaint(); + + } catch(Exception e) { + System.out.println("Fehler beim Einlesen der Bilddatei"); + } + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + try{ + String[] fn = filename.split("\\."); + if (fn.length== 1) { + ImageIO.write(image, "PNG", new File(filename+".png")); + } else { + + if (fn.length == 2 && (fn[1].toUpperCase().equals("PNG") || + fn[1].toUpperCase().equals("GIF"))){ + ImageIO.write(image, fn[1], new File(filename)); + }else { + System.out.println("Unbekanntes Bildformat"); + } + } + + } catch(Exception e) { + System.out.println("Fehler beim Speichern"); + } + } + + +// ----------------------------------------- Sonstiges ----------------------------------------------- + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + + public Color[][] getPixelArray() { + Color[][] pixel = new Color[image.getWidth()][image.getHeight()]; + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + pixel[x][y] = new java.awt.Color(image.getRGB(x,y)); + } + } + return pixel; + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + size(pixel.length,pixel[0].length); + Graphics2D g = (Graphics2D) image.getGraphics(); + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + g.setColor(pixel[x][y]); + g.fillRect(x, y, 1, 1); + } + } + repaint(); + } + + /** + * Hilfsfunktion zum Verzögern der Ausgabe + * @param millis Wartezeit in Millisekunden + */ + public void delay(int millis) { + try{ + Thread.sleep(millis); + + } catch(Exception e) { + + } + + } + + + +} diff --git a/03_vorlagen_tauschordner/03_javaeditor/alg03a_wasmachich/PictureViewer.java b/03_vorlagen_tauschordner/03_javaeditor/alg03a_wasmachich/PictureViewer.java new file mode 100644 index 0000000..9c2e0b5 --- /dev/null +++ b/03_vorlagen_tauschordner/03_javaeditor/alg03a_wasmachich/PictureViewer.java @@ -0,0 +1,505 @@ +/** + * Zeigt ein Bild in einem Scrollbereich an. + * Es ist möglich das Bild zu zoomen und mehrere Versionen des Bildes zu speichern, um eine "Rückgängig" Operation durchzuführen. + * @author Thomas Schaller + * @version 1.0 vom 01.02.2019 + */ + +import java.awt.*; +import java.awt.event.*; +import javax.swing.*; +import java.awt.image.*; +import java.util.Vector; + +public class PictureViewer extends JScrollPane +{ + + // das aktuelle Bild + private Picture picture; + + // Bilder für den Züruck-Modus speichern + private static final int ANZ_BACK = 20; + private Vector history; + + // Zeichenfläche + private ImageIcon scrollImageIcon; + private JLabel imageLabel; + + // Zoom Faktor + private double zoomFactor; + public static final int FIT = -1; + public static final int NORMAL = 1; + + + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der Größe 1000x1000 + */ + public PictureViewer() { + this(1000,1000); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public PictureViewer(int width, int height) { + this(width,height, "D0D0D0"); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + * @param background Farbe des Hintergrunds als HEX-String (z.B. "FF3A45") + */ + public PictureViewer(int width, int height, String background) { + this(new Picture(width,height, background)); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild aus einer Bilddatei + * @param filename Name des Bildes + */ + public PictureViewer(String filename) { + this(new Picture(filename)); + } + + /** + * Erzeugt ein ScrollPanel und zeigt das Bild-Objekt an + * @param picture anzuzeigendes Bild + */ + public PictureViewer(Picture picture) + { + this.picture=picture; + + zoomFactor=1; + + scrollImageIcon = new ImageIcon(picture.getImage().getScaledInstance(picture.getImage().getWidth(), picture.getImage().getHeight(), Image.SCALE_FAST)); + imageLabel = new JLabel(scrollImageIcon); + imageLabel.setVerticalAlignment(JLabel.CENTER); + imageLabel.setHorizontalAlignment(JLabel.CENTER); + setViewportView(imageLabel); + + this.setBorder(BorderFactory.createLineBorder(Color.black)); + picture.setObserver(this); + history = new Vector(); + + } + + /** + * Setzt das anzuzeigende Bild neu + * @param picture anzuzeigendes Bild + */ + public void setImage(Picture picture) { + this.history = new Vector(); + this.picture = picture; + setZoom(NORMAL); + } + + /** + * Speichert das übergebene Bild in der History. + * @param b zu speicherndes Bild + */ + public void pushImage() { + if( this.ANZ_BACK > 0) { + if(history.size() == this.ANZ_BACK) { + history.removeElementAt(0); + } + + BufferedImage b = new BufferedImage(picture.getWidth(), picture.getHeight(), picture.getImage().getType()); + Graphics g = b.getGraphics(); + g.drawImage(picture.getImage(), 0, 0, null); + g.dispose(); + + history.add(b); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + private void popImage() { + int anz = history.size(); + if(anz>0) { + BufferedImage img = history.get(anz-1); + history.removeElementAt(anz-1); + picture.setImage(img); + setZoom(zoomFactor); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + public void back() { + popImage(); + } + + /** + * Setzt das angezeigt Bild neu und beachtet dabei den Zoomfaktor. + */ + public void repaint() { + if( picture != null) { + double factor= zoomFactor; + if (zoomFactor == FIT) { + double factorw = ((double) getWidth()-2) / picture.getWidth(); + double factorh = ((double) getHeight()-2) / picture.getHeight(); + factor = Math.min(factorw, factorh); + } + int width = (int) (picture.getWidth()*factor); + int height = (int) (picture.getHeight()*factor); + + + + scrollImageIcon.setImage(picture.getImage().getScaledInstance(width, height, Image.SCALE_DEFAULT)); + revalidate(); + } + } + + /** + * Setzt den Zoom-Faktor für das Bild. + * Als Zoomfaktor sind auch die Konstanten Bildanzeiger.FIT (auf Bildschirmgröße zoomen) und Bildanzeiger.NORMAL (100%) möglich. + * @param factor Zoomfaktor (1.0 = 100%). + */ + public void setZoom(double factor) + { + zoomFactor = factor; + repaint(); + } + + + // Wrappermethoden + /** + * Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + * Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + * der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu. + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public void size(int width, int height){ + picture.size(width, height); + } + + /** + * Liefert die Breite des Bildes zurück. + * @return Breite des Bildes + */ + public int getImageWidth() { + return picture.getWidth(); + } + + /** + * Liefert die Höhe des Bildes zurück. + * @return Höhe des Bildes + */ + public int getImageHeight() { + return picture.getHeight(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + picture.background(c); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + picture.background(r,g,b); + } + + /** + * Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + * Um eine Linie einzufärben, verwenden Sie die {@link #stroke(int, int, int) stroke()} Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + * Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + * {@link #strokeWeight(double) strokeWeight()} geändert werden. + * @param x1 x-Koordinate des 1. Punktes + * @param y1 y-Koordinate des 1. Punktes + * @param x2 x-Koordinate des 2. Punktes + * @param y2 y-Koordinate des 2. Punktes + */ + public void line(int x1, int y1, int x2, int y2) { + picture.line(x1,y1,x2,y2); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + picture.rect(a,b,c,d); + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + picture.ellipse(a,b,c,d); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + picture.triangle(x1,y1,x2,y2,x3,y3); + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + picture.quad(x1,y1,x2,y2,x3,y3,x4,y4); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + public void polygon(int[] x, int[] y) { + picture.polygon(x,y); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + picture.point(x,y); + + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + * Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + * Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void rectMode(int mode) { + picture.rectMode(mode); + } + + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + * Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + * Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als Breite und Höhe der Form. + * ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void ellipseMode(int mode) { + picture.ellipseMode(mode); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + picture.stroke(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + picture.noStroke(); + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + picture.strokeWeight(width); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + picture.fill(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + picture.noFill(); + } + + /** + * Löscht den Inhalt des Bildes. + * Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt. + */ + public void clear(){ + picture.clear(); + } + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + picture.load(filename); + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + picture.save(filename); + } + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param t Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String t, int x, int y) { + picture.text(t,x,y); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + picture.textFont(font); + } + + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + public Color[][] getPixelArray() { + return picture.getPixelArray(); + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + picture.setPixelArray(pixel); + } + + + +} diff --git a/03_vorlagen_tauschordner/03_javaeditor/alg03a_wasmachich/Zeichnung.java b/03_vorlagen_tauschordner/03_javaeditor/alg03a_wasmachich/Zeichnung.java new file mode 100644 index 0000000..b4dc9cb --- /dev/null +++ b/03_vorlagen_tauschordner/03_javaeditor/alg03a_wasmachich/Zeichnung.java @@ -0,0 +1,19 @@ +/** + * Entdecken von Zeichenmethoden + * + * @author Eisenmann, Vorlage: Schaller + * @version 13.03.19 + */ +public class Zeichnung extends Picture +{ + public Zeichnung() { + size(600, 400); + waszeichneich(); // Aufruf der Methode + } + + public void waszeichneich() { + line(100, 50, 200, 100); + ellipse(100, 200, 50, 100); + rect(300, 100, 250, 20); + } +} diff --git a/03_vorlagen_tauschordner/03_javaeditor/alg03a_wasmachich/ZeichnungGUI.java b/03_vorlagen_tauschordner/03_javaeditor/alg03a_wasmachich/ZeichnungGUI.java new file mode 100644 index 0000000..47a7fa7 --- /dev/null +++ b/03_vorlagen_tauschordner/03_javaeditor/alg03a_wasmachich/ZeichnungGUI.java @@ -0,0 +1,66 @@ +import java.awt.*; +import java.awt.event.*; +import javax.swing.*; +import javax.swing.event.*; + +/** + * + * description + * + * @version 1.0 from 06.10.2018 + * @author + */ + +public class ZeichnungGUI extends JFrame { + // Anfang Attribute + private JButton bZeichnen = new JButton(); + private PictureViewer imagePanel1 = new PictureViewer(); + + // Ende Attribute + + public ZeichnungGUI (String title) { + super (title); + setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); + int frameWidth = 768; + int frameHeight = 551; + setSize(frameWidth, frameHeight); + Dimension d = Toolkit.getDefaultToolkit().getScreenSize(); + int x = (d.width - getSize().width) / 2; + int y = (d.height - getSize().height) / 2; + setLocation(x, y); + Container cp = getContentPane(); + cp.setLayout(null); + // Anfang Komponenten + bZeichnen.setBounds(256, 456, 273, 33); + bZeichnen.setText("Zeichnen"); + bZeichnen.setMargin(new Insets(2, 2, 2, 2)); + bZeichnen.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent evt) { + bZeichnen_ActionPerformed(evt); + } + }); + cp.add(bZeichnen); + imagePanel1.setBounds(24, 16, 705, 409); + cp.add(imagePanel1); + + // Ende Komponenten + setResizable(false); + setVisible(true); + } + + // Anfang Methoden + public void bZeichnen_ActionPerformed(ActionEvent evt) { + Zeichnung bild = new Zeichnung(); + imagePanel1.setImage(bild); + imagePanel1.getViewport().repaint(); + imagePanel1.getVerticalScrollBar().setValue(1); + imagePanel1.getVerticalScrollBar().setValue(0); + } // end of bZeichnen_ActionPerformed + + // Ende Methoden + + public static void main(String[] args) { + new ZeichnungGUI("ZeichnungGUI"); + } +} + diff --git a/03_vorlagen_tauschordner/03_javaeditor/alg03a_wasmachich/ZeichnungGUI.jfm b/03_vorlagen_tauschordner/03_javaeditor/alg03a_wasmachich/ZeichnungGUI.jfm new file mode 100644 index 0000000..5321b4b --- /dev/null +++ b/03_vorlagen_tauschordner/03_javaeditor/alg03a_wasmachich/ZeichnungGUI.jfm @@ -0,0 +1,103 @@ +object ZeichnungGUI: TFGUIForm + Left = 761 + Top = 237 + BorderIcons = [biSystemMenu] + Caption = 'ZeichnungGUI' + ClientHeight = 512 + ClientWidth = 752 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -10 + Font.Name = 'MS Sans Serif' + Font.Style = [] + FormStyle = fsStayOnTop + OldCreateOrder = True + Position = poDesigned + ShowHint = True + Visible = True + OnClose = FormClose + OnCloseQuery = FormCloseQuery + OnResize = FormResize + FrameType = 5 + Resizable = False + Undecorated = False + Background = clBtnFace + PixelsPerInch = 96 + TextHeight = 13 + object bOptischeTauschungzeichnen: TJButton + Tag = 4 + Left = 256 + Top = 456 + Width = 273 + Height = 33 + Hint = 'jButton1' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Dialog' + Font.Style = [fsBold] + Foreground = 3355443 + Background = 15658734 + actionPerformed = 'bOptischeTauschungzeichnen_ActionPerformed' + Text = 'Optische T'#228'uschung zeichnen' + Mnemonic = 0 + DisplayedMnemonicIndex = 0 + Selected = False + BorderPainted = True + FocusPainted = False + ContentAreaFilled = True + HorizontalAlignment = CENTER + VerticalAlignment = CENTER + HorizontalTextPosition = RIGHT + VerticalTextPosition = CENTER + IconTextGap = 4 + RolloverEnabled = False + Border.BorderType = NoBorder + Border.LineColor = clBlack + Border.LineThickness = 0 + Border.LineRounded = False + Border.EtchHighlightColor = clBlack + Border.EtchShadowColor = clBlack + Border.Etchtype = 0 + Border.BevelHighlightColor = clBlack + Border.BevelShadowColor = clBlack + Border.Beveltype = 0 + Border.MatteColor = clBlack + Border.MatteTop = 0 + Border.MatteLeft = 0 + Border.MatteBottom = 0 + Border.MatteRight = 0 + end + object imagePanel1: TJPanel + Tag = 38 + Left = 24 + Top = 16 + Width = 705 + Height = 409 + Hint = 'imagePanel1' + HelpKeyword = 'ImagePanel' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Dialog' + Font.Style = [fsBold] + Foreground = 3355443 + Background = clBtnFace + Border.BorderType = NoBorder + Border.LineColor = clBlack + Border.LineThickness = 0 + Border.LineRounded = False + Border.EtchHighlightColor = clBlack + Border.EtchShadowColor = clBlack + Border.Etchtype = 0 + Border.BevelHighlightColor = clBlack + Border.BevelShadowColor = clBlack + Border.Beveltype = 0 + Border.MatteColor = clBlack + Border.MatteTop = 0 + Border.MatteLeft = 0 + Border.MatteBottom = 0 + Border.MatteRight = 0 + end +end diff --git a/03_vorlagen_tauschordner/03_javaeditor/alg03b_figuren/Picture.java b/03_vorlagen_tauschordner/03_javaeditor/alg03b_figuren/Picture.java new file mode 100644 index 0000000..57a3732 --- /dev/null +++ b/03_vorlagen_tauschordner/03_javaeditor/alg03b_figuren/Picture.java @@ -0,0 +1,676 @@ +import java.awt.image.*; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.BasicStroke; +import java.util.Vector; +import javax.imageio.*; +import java.io.*; +import java.awt.*; +import javax.swing.*; +import java.util.Random; +import java.awt.geom.AffineTransform; +/** + * + * Bildklasse für die Simulation von Processing-Befehlen + * + * Diese Klasse stellt ein BufferedImage bereit, in das mit Processing-Befehlen gezeichnet + * werden kann. + * Zusätzlich kann ein Bildanzeiger über jede Änderung des Bildes informiert werden, + * um "Zurück"-Befehle zu ermöglichen. Der Bildanzeiger ist entweder eine normale Java + * ScrollPane oder ein Actor aus Greenfoot. + * Die Dokumentation der einzelnen Zeichenmethoden ist der Processing-Reference + * (https://processing.org/reference/ steht unter CC-Lizenz: https://creativecommons.org/) + * entnommen und mit Deepl.com ins Deutsche übersetzt. + * + * @version 1.0 from 23.01.2019 + * @author Thomas Schaller (ZPG Informatik Klasse 9) + */ + +public class Picture{ + + // Einstellungmöglichkeiten für das Zeichnen von Rechtecken und Ellipsen + // RADIUS = Mittelpunkt+Radius wird gegeben, CENTER = Mittelpunkt und Breite/Höhe wird gegeben, + // CORNER = Linke obere Ecke + Breite/Höhe, CORNERS = Linke obere und rechte untere Ecke + public static final int RADIUS = 1; + public static final int CENTER = 2; + public static final int CORNER = 3; + public static final int CORNERS = 4; + + // gespeichertes Bild, + private BufferedImage image; + + // aktuelle Farbeinstellungen + private Color background; + private Color pencolor; + private Color fillcolor; + + // aktuelle Stiftdicke + private double stroke; + + // akkteller Koordinatenmodus von Rechtecken und Ellipsen + private int ellipseMode = CENTER; + private int rectMode = CORNER; + + // aktueller Font + private Font textfont = null; + + // muss ein Bildanzeiger benachrichtigt werden + private PictureViewer observer = null; + + /** + * Erzeugt ein Bild mit Standardgröße 500x400 + */ + public Picture() { + this(500,400); + } + + /** + * Erzeugt ein Bild der angegeben Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public Picture(int width, int height) { + this(width,height, "D0D0D0"); + } + + /** + * Erzeugt ein Bild aus einer Datei + * @param filename Dateiname des Bildes + */ + public Picture(String filename) { + load(filename); + } + + /** + * Erzeugt ein Bild der angegebenen Größe mit festgelegtem Hintergrund + * @param width Breite des Bildes + * @param height Höhe des Bildes + * @param background Farbe des Hintergrunds + */ + public Picture(int width, int height, String background) { + this.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + this.background = decode(background); + this.pencolor = new Color(0,0,0); + this.stroke = 1; + this.fillcolor = null; + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(this.background); + g.fillRect(0,0,width-1, height-1); + } + + /** + * Legt fest, wer das Bild anzeigt. + * Diese ermöglicht die Benachrichtung des Observers, wenn sich das Bild ändert. + * @param observer Anzeiger des Bildes + */ + + public void setObserver(PictureViewer observer) { + this.observer= observer; + } + + /** + * Direktes Setzen des Bildes (für interne Zwecke) + * @param b Bild, das gespeichert werden soll. + */ + public void setImage(BufferedImage b) { + image = b; + } + + /** + * Direktes Abfragen des Bildes (für interne Zwecke) + * @return Bild, das gerade gespeichert ist. + */ + public BufferedImage getImage() { + return image; + } + + /** + * Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + * Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + * der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu. + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public void size(int width, int height){ + pushImage(); + this.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(background); + g.fillRect(0,0,width-1, height-1); + } + + /** + * Liefert die Breite des Bildes zurück. + * @return Breite des Bildes + */ + public int getWidth() { + return image.getWidth(); + } + + /** + * Liefert die Höhe des Bildes zurück. + * @return Höhe des Bildes + */ + public int getHeight() { + return image.getHeight(); + } + + + /** + * Erzeugt eine Kopie des Bildes und übergibt sie an den Observer (falls existent), damit dieser die Versionen speichern kann + */ + private void pushImage() { + if(observer != null) { + observer.pushImage(); + } + } + + /** + * Auch die anzeigenden Klasse wird zum Neuzeichnen aufgefordert. + */ + private void repaint() { + if(observer != null) { + observer.repaint(); + } + } + + // ----------------------------------------- Zeichenfunktionen ----------------------------------------------- + /** + * Löscht den Inhalt des Bildes. + * Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt. + */ + + public void clear(){ + pushImage(); + image = new BufferedImage(image.getWidth(), image.getHeight(), image.getType()); + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(background); + g.fillRect(0,0,image.getWidth()-1, image.getHeight()-1); + repaint(); + } + + /** + * Konvertiert die in einem bestimmten Modus gegebenen Koordinaten in die Java-übliche Links_Oben_Breite_Höhe Version + * Die Änderungen werden direkt im Array vorgenommen + * @param coord Array mit vier Koordinateneinträgen im gegebenen Modus + * @param mode Modus der Koordinaten (CORNER, CORNERS, RADIUS oder CENTER) + */ + private void convert(int[] coord, int mode) { + switch(mode) { + case CORNER: break; + case CORNERS: coord[2] -= coord[0]; coord[3] -= coord[1]; break; + case RADIUS: coord[2] *= 2; coord[3] *=2; + case CENTER: coord[0] -= coord[2]/2; coord[1] -= coord[3]/2; + } + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + * Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + * Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void rectMode(int mode) { + rectMode = mode; + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + * Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + * Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als Breite und Höhe der Form. + * ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void ellipseMode(int mode) { + ellipseMode = mode; + } + + + + /** + * Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + * Um eine Linie einzufärben, verwenden Sie die {@link #stroke(int, int, int) stroke()} Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + * Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + * {@link #strokeWeight(double) strokeWeight()} geändert werden. + * @param x1 x-Koordinate des 1. Punktes + * @param y1 y-Koordinate des 1. Punktes + * @param x2 x-Koordinate des 2. Punktes + * @param y2 y-Koordinate des 2. Punktes + */ + public void line(int x1, int y1, int x2, int y2) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + if (stroke > 0) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawLine(x1, y1, x2, y2); + } + repaint(); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, rectMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillRect(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawRect(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, ellipseMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillOval(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawOval(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + int px[] = {x1, x2, x3}; + int py[] = {y1, y2, y3}; + polygon(px, py); + + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + + int px[] = {x1, x2, x3, x4}; + int py[] = {y1, y2, y3, y4}; + polygon(px, py); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + + public void polygon(int[] x, int[] y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(fillcolor != null) { + + g.setColor(fillcolor); + g.fillPolygon(x,y, y.length); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawPolygon(x, y, x.length); + } + repaint(); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + ellipse(x,y,1, 1); + + } + + // ----------------------------------------- Schriftdarstellung ----------------------------------------------- + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param s Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String s, int x, int y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(pencolor != null) { + g.setColor(fillcolor); + g.setStroke(new BasicStroke((float) stroke)); + g.setFont(textfont); + g.drawString(s, x, y); + } + repaint(); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + this.textfont = font; + } + + + // ----------------------------------------- Farbfestlegungen ----------------------------------------------- + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(String color) { + try{ + return new Color( + Integer.valueOf( color.substring( 0, 2 ), 16 ), + Integer.valueOf( color.substring( 2, 4 ), 16 ), + Integer.valueOf( color.substring( 4, 6 ), 16 ) ); + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(int color) { + try{ + if(color >=0 && color < 256) { + return new Color(color,color,color); + } else { + int r = color / 0x010000 % 0xFF; + int g = color / 0x000100 % 0xFF; + int b = color % 0xFF; + System.out.println(""+r+","+g+","+b); + return new Color(r, g, b ); + } + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + this.pencolor = decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + this.pencolor=decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + this.pencolor = new Color(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + this.pencolor = null; + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + this.stroke = width; + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + this.fillcolor = decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + this.fillcolor=decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + this.fillcolor = new Color(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + this.fillcolor = null; + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + if(c < 256) { + this.background=new Color(c,c,c); + } else { + int r = c / 0x010000; + int g = c / 0x000100 % 0xFF; + int b = c % 0xFF; + this.background= new Color(r, g, b ); + } + + this.clear(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + this.background=new Color(r,g,b); + this.clear(); + } + + +// ----------------------------------------- Dateioperationen ----------------------------------------------- + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + try{ + this.image = ImageIO.read(new File(filename)); + this.background = decode("D0D0D0"); + this.pencolor = new Color(0,0,0); + this.fillcolor = null; + this.stroke = 1; + this.repaint(); + + } catch(Exception e) { + System.out.println("Fehler beim Einlesen der Bilddatei"); + } + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + try{ + String[] fn = filename.split("\\."); + if (fn.length== 1) { + ImageIO.write(image, "PNG", new File(filename+".png")); + } else { + + if (fn.length == 2 && (fn[1].toUpperCase().equals("PNG") || + fn[1].toUpperCase().equals("GIF"))){ + ImageIO.write(image, fn[1], new File(filename)); + }else { + System.out.println("Unbekanntes Bildformat"); + } + } + + } catch(Exception e) { + System.out.println("Fehler beim Speichern"); + } + } + + +// ----------------------------------------- Sonstiges ----------------------------------------------- + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + + public Color[][] getPixelArray() { + Color[][] pixel = new Color[image.getWidth()][image.getHeight()]; + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + pixel[x][y] = new java.awt.Color(image.getRGB(x,y)); + } + } + return pixel; + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + size(pixel.length,pixel[0].length); + Graphics2D g = (Graphics2D) image.getGraphics(); + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + g.setColor(pixel[x][y]); + g.fillRect(x, y, 1, 1); + } + } + repaint(); + } + + /** + * Hilfsfunktion zum Verzögern der Ausgabe + * @param millis Wartezeit in Millisekunden + */ + public void delay(int millis) { + try{ + Thread.sleep(millis); + + } catch(Exception e) { + + } + + } + + + +} diff --git a/03_vorlagen_tauschordner/03_javaeditor/alg03b_figuren/PictureViewer.java b/03_vorlagen_tauschordner/03_javaeditor/alg03b_figuren/PictureViewer.java new file mode 100644 index 0000000..9c2e0b5 --- /dev/null +++ b/03_vorlagen_tauschordner/03_javaeditor/alg03b_figuren/PictureViewer.java @@ -0,0 +1,505 @@ +/** + * Zeigt ein Bild in einem Scrollbereich an. + * Es ist möglich das Bild zu zoomen und mehrere Versionen des Bildes zu speichern, um eine "Rückgängig" Operation durchzuführen. + * @author Thomas Schaller + * @version 1.0 vom 01.02.2019 + */ + +import java.awt.*; +import java.awt.event.*; +import javax.swing.*; +import java.awt.image.*; +import java.util.Vector; + +public class PictureViewer extends JScrollPane +{ + + // das aktuelle Bild + private Picture picture; + + // Bilder für den Züruck-Modus speichern + private static final int ANZ_BACK = 20; + private Vector history; + + // Zeichenfläche + private ImageIcon scrollImageIcon; + private JLabel imageLabel; + + // Zoom Faktor + private double zoomFactor; + public static final int FIT = -1; + public static final int NORMAL = 1; + + + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der Größe 1000x1000 + */ + public PictureViewer() { + this(1000,1000); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public PictureViewer(int width, int height) { + this(width,height, "D0D0D0"); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + * @param background Farbe des Hintergrunds als HEX-String (z.B. "FF3A45") + */ + public PictureViewer(int width, int height, String background) { + this(new Picture(width,height, background)); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild aus einer Bilddatei + * @param filename Name des Bildes + */ + public PictureViewer(String filename) { + this(new Picture(filename)); + } + + /** + * Erzeugt ein ScrollPanel und zeigt das Bild-Objekt an + * @param picture anzuzeigendes Bild + */ + public PictureViewer(Picture picture) + { + this.picture=picture; + + zoomFactor=1; + + scrollImageIcon = new ImageIcon(picture.getImage().getScaledInstance(picture.getImage().getWidth(), picture.getImage().getHeight(), Image.SCALE_FAST)); + imageLabel = new JLabel(scrollImageIcon); + imageLabel.setVerticalAlignment(JLabel.CENTER); + imageLabel.setHorizontalAlignment(JLabel.CENTER); + setViewportView(imageLabel); + + this.setBorder(BorderFactory.createLineBorder(Color.black)); + picture.setObserver(this); + history = new Vector(); + + } + + /** + * Setzt das anzuzeigende Bild neu + * @param picture anzuzeigendes Bild + */ + public void setImage(Picture picture) { + this.history = new Vector(); + this.picture = picture; + setZoom(NORMAL); + } + + /** + * Speichert das übergebene Bild in der History. + * @param b zu speicherndes Bild + */ + public void pushImage() { + if( this.ANZ_BACK > 0) { + if(history.size() == this.ANZ_BACK) { + history.removeElementAt(0); + } + + BufferedImage b = new BufferedImage(picture.getWidth(), picture.getHeight(), picture.getImage().getType()); + Graphics g = b.getGraphics(); + g.drawImage(picture.getImage(), 0, 0, null); + g.dispose(); + + history.add(b); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + private void popImage() { + int anz = history.size(); + if(anz>0) { + BufferedImage img = history.get(anz-1); + history.removeElementAt(anz-1); + picture.setImage(img); + setZoom(zoomFactor); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + public void back() { + popImage(); + } + + /** + * Setzt das angezeigt Bild neu und beachtet dabei den Zoomfaktor. + */ + public void repaint() { + if( picture != null) { + double factor= zoomFactor; + if (zoomFactor == FIT) { + double factorw = ((double) getWidth()-2) / picture.getWidth(); + double factorh = ((double) getHeight()-2) / picture.getHeight(); + factor = Math.min(factorw, factorh); + } + int width = (int) (picture.getWidth()*factor); + int height = (int) (picture.getHeight()*factor); + + + + scrollImageIcon.setImage(picture.getImage().getScaledInstance(width, height, Image.SCALE_DEFAULT)); + revalidate(); + } + } + + /** + * Setzt den Zoom-Faktor für das Bild. + * Als Zoomfaktor sind auch die Konstanten Bildanzeiger.FIT (auf Bildschirmgröße zoomen) und Bildanzeiger.NORMAL (100%) möglich. + * @param factor Zoomfaktor (1.0 = 100%). + */ + public void setZoom(double factor) + { + zoomFactor = factor; + repaint(); + } + + + // Wrappermethoden + /** + * Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + * Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + * der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu. + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public void size(int width, int height){ + picture.size(width, height); + } + + /** + * Liefert die Breite des Bildes zurück. + * @return Breite des Bildes + */ + public int getImageWidth() { + return picture.getWidth(); + } + + /** + * Liefert die Höhe des Bildes zurück. + * @return Höhe des Bildes + */ + public int getImageHeight() { + return picture.getHeight(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + picture.background(c); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + picture.background(r,g,b); + } + + /** + * Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + * Um eine Linie einzufärben, verwenden Sie die {@link #stroke(int, int, int) stroke()} Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + * Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + * {@link #strokeWeight(double) strokeWeight()} geändert werden. + * @param x1 x-Koordinate des 1. Punktes + * @param y1 y-Koordinate des 1. Punktes + * @param x2 x-Koordinate des 2. Punktes + * @param y2 y-Koordinate des 2. Punktes + */ + public void line(int x1, int y1, int x2, int y2) { + picture.line(x1,y1,x2,y2); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + picture.rect(a,b,c,d); + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + picture.ellipse(a,b,c,d); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + picture.triangle(x1,y1,x2,y2,x3,y3); + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + picture.quad(x1,y1,x2,y2,x3,y3,x4,y4); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + public void polygon(int[] x, int[] y) { + picture.polygon(x,y); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + picture.point(x,y); + + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + * Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + * Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void rectMode(int mode) { + picture.rectMode(mode); + } + + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + * Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + * Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als Breite und Höhe der Form. + * ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void ellipseMode(int mode) { + picture.ellipseMode(mode); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + picture.stroke(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + picture.noStroke(); + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + picture.strokeWeight(width); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + picture.fill(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + picture.noFill(); + } + + /** + * Löscht den Inhalt des Bildes. + * Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt. + */ + public void clear(){ + picture.clear(); + } + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + picture.load(filename); + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + picture.save(filename); + } + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param t Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String t, int x, int y) { + picture.text(t,x,y); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + picture.textFont(font); + } + + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + public Color[][] getPixelArray() { + return picture.getPixelArray(); + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + picture.setPixelArray(pixel); + } + + + +} diff --git a/03_vorlagen_tauschordner/03_javaeditor/alg03b_figuren/Zeichnung.java b/03_vorlagen_tauschordner/03_javaeditor/alg03b_figuren/Zeichnung.java new file mode 100644 index 0000000..bdb2f0b --- /dev/null +++ b/03_vorlagen_tauschordner/03_javaeditor/alg03b_figuren/Zeichnung.java @@ -0,0 +1,33 @@ +/** + * Vorlage für Figur C und ggf. Figur A + * + * @author Eisenmann, Vorlage: Schaller + * @version 13.03.19 + */ +public class Zeichnung extends Picture +{ + public Zeichnung() { + size(500, 350); + zeichneBildC(); // Aufruf deiner Methode + // zeichneBildA(); + } + + public void zeichneBildC() { + // Zeichne dir zunächst eine Skizze auf ein Blatt Papier und überlege dir, welche + // Werte du den Methoden rect(x,y,b,h) und ellipse(x,y,b,h) übergeben musst, + // dass Bild C gezeichnet wird + + // ***** hier kommen deine Anweisungen hin ************ + + + // ***** Ende der eigenen Anweisungen ********** + } + + void zeichneBildA() { + // ***** hier kommen deine Anweisungen hin ************ + + + // ***** Ende der eigenen Anweisungen ********** + + } +} diff --git a/03_vorlagen_tauschordner/03_javaeditor/alg03b_figuren/ZeichnungGUI.java b/03_vorlagen_tauschordner/03_javaeditor/alg03b_figuren/ZeichnungGUI.java new file mode 100644 index 0000000..47a7fa7 --- /dev/null +++ b/03_vorlagen_tauschordner/03_javaeditor/alg03b_figuren/ZeichnungGUI.java @@ -0,0 +1,66 @@ +import java.awt.*; +import java.awt.event.*; +import javax.swing.*; +import javax.swing.event.*; + +/** + * + * description + * + * @version 1.0 from 06.10.2018 + * @author + */ + +public class ZeichnungGUI extends JFrame { + // Anfang Attribute + private JButton bZeichnen = new JButton(); + private PictureViewer imagePanel1 = new PictureViewer(); + + // Ende Attribute + + public ZeichnungGUI (String title) { + super (title); + setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); + int frameWidth = 768; + int frameHeight = 551; + setSize(frameWidth, frameHeight); + Dimension d = Toolkit.getDefaultToolkit().getScreenSize(); + int x = (d.width - getSize().width) / 2; + int y = (d.height - getSize().height) / 2; + setLocation(x, y); + Container cp = getContentPane(); + cp.setLayout(null); + // Anfang Komponenten + bZeichnen.setBounds(256, 456, 273, 33); + bZeichnen.setText("Zeichnen"); + bZeichnen.setMargin(new Insets(2, 2, 2, 2)); + bZeichnen.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent evt) { + bZeichnen_ActionPerformed(evt); + } + }); + cp.add(bZeichnen); + imagePanel1.setBounds(24, 16, 705, 409); + cp.add(imagePanel1); + + // Ende Komponenten + setResizable(false); + setVisible(true); + } + + // Anfang Methoden + public void bZeichnen_ActionPerformed(ActionEvent evt) { + Zeichnung bild = new Zeichnung(); + imagePanel1.setImage(bild); + imagePanel1.getViewport().repaint(); + imagePanel1.getVerticalScrollBar().setValue(1); + imagePanel1.getVerticalScrollBar().setValue(0); + } // end of bZeichnen_ActionPerformed + + // Ende Methoden + + public static void main(String[] args) { + new ZeichnungGUI("ZeichnungGUI"); + } +} + diff --git a/03_vorlagen_tauschordner/03_javaeditor/alg03b_figuren/ZeichnungGUI.jfm b/03_vorlagen_tauschordner/03_javaeditor/alg03b_figuren/ZeichnungGUI.jfm new file mode 100644 index 0000000..5321b4b --- /dev/null +++ b/03_vorlagen_tauschordner/03_javaeditor/alg03b_figuren/ZeichnungGUI.jfm @@ -0,0 +1,103 @@ +object ZeichnungGUI: TFGUIForm + Left = 761 + Top = 237 + BorderIcons = [biSystemMenu] + Caption = 'ZeichnungGUI' + ClientHeight = 512 + ClientWidth = 752 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -10 + Font.Name = 'MS Sans Serif' + Font.Style = [] + FormStyle = fsStayOnTop + OldCreateOrder = True + Position = poDesigned + ShowHint = True + Visible = True + OnClose = FormClose + OnCloseQuery = FormCloseQuery + OnResize = FormResize + FrameType = 5 + Resizable = False + Undecorated = False + Background = clBtnFace + PixelsPerInch = 96 + TextHeight = 13 + object bOptischeTauschungzeichnen: TJButton + Tag = 4 + Left = 256 + Top = 456 + Width = 273 + Height = 33 + Hint = 'jButton1' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Dialog' + Font.Style = [fsBold] + Foreground = 3355443 + Background = 15658734 + actionPerformed = 'bOptischeTauschungzeichnen_ActionPerformed' + Text = 'Optische T'#228'uschung zeichnen' + Mnemonic = 0 + DisplayedMnemonicIndex = 0 + Selected = False + BorderPainted = True + FocusPainted = False + ContentAreaFilled = True + HorizontalAlignment = CENTER + VerticalAlignment = CENTER + HorizontalTextPosition = RIGHT + VerticalTextPosition = CENTER + IconTextGap = 4 + RolloverEnabled = False + Border.BorderType = NoBorder + Border.LineColor = clBlack + Border.LineThickness = 0 + Border.LineRounded = False + Border.EtchHighlightColor = clBlack + Border.EtchShadowColor = clBlack + Border.Etchtype = 0 + Border.BevelHighlightColor = clBlack + Border.BevelShadowColor = clBlack + Border.Beveltype = 0 + Border.MatteColor = clBlack + Border.MatteTop = 0 + Border.MatteLeft = 0 + Border.MatteBottom = 0 + Border.MatteRight = 0 + end + object imagePanel1: TJPanel + Tag = 38 + Left = 24 + Top = 16 + Width = 705 + Height = 409 + Hint = 'imagePanel1' + HelpKeyword = 'ImagePanel' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Dialog' + Font.Style = [fsBold] + Foreground = 3355443 + Background = clBtnFace + Border.BorderType = NoBorder + Border.LineColor = clBlack + Border.LineThickness = 0 + Border.LineRounded = False + Border.EtchHighlightColor = clBlack + Border.EtchShadowColor = clBlack + Border.Etchtype = 0 + Border.BevelHighlightColor = clBlack + Border.BevelShadowColor = clBlack + Border.Beveltype = 0 + Border.MatteColor = clBlack + Border.MatteTop = 0 + Border.MatteLeft = 0 + Border.MatteBottom = 0 + Border.MatteRight = 0 + end +end diff --git a/03_vorlagen_tauschordner/03_javaeditor/alg04_figurC_mitSchleife/Picture.java b/03_vorlagen_tauschordner/03_javaeditor/alg04_figurC_mitSchleife/Picture.java new file mode 100644 index 0000000..57a3732 --- /dev/null +++ b/03_vorlagen_tauschordner/03_javaeditor/alg04_figurC_mitSchleife/Picture.java @@ -0,0 +1,676 @@ +import java.awt.image.*; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.BasicStroke; +import java.util.Vector; +import javax.imageio.*; +import java.io.*; +import java.awt.*; +import javax.swing.*; +import java.util.Random; +import java.awt.geom.AffineTransform; +/** + * + * Bildklasse für die Simulation von Processing-Befehlen + * + * Diese Klasse stellt ein BufferedImage bereit, in das mit Processing-Befehlen gezeichnet + * werden kann. + * Zusätzlich kann ein Bildanzeiger über jede Änderung des Bildes informiert werden, + * um "Zurück"-Befehle zu ermöglichen. Der Bildanzeiger ist entweder eine normale Java + * ScrollPane oder ein Actor aus Greenfoot. + * Die Dokumentation der einzelnen Zeichenmethoden ist der Processing-Reference + * (https://processing.org/reference/ steht unter CC-Lizenz: https://creativecommons.org/) + * entnommen und mit Deepl.com ins Deutsche übersetzt. + * + * @version 1.0 from 23.01.2019 + * @author Thomas Schaller (ZPG Informatik Klasse 9) + */ + +public class Picture{ + + // Einstellungmöglichkeiten für das Zeichnen von Rechtecken und Ellipsen + // RADIUS = Mittelpunkt+Radius wird gegeben, CENTER = Mittelpunkt und Breite/Höhe wird gegeben, + // CORNER = Linke obere Ecke + Breite/Höhe, CORNERS = Linke obere und rechte untere Ecke + public static final int RADIUS = 1; + public static final int CENTER = 2; + public static final int CORNER = 3; + public static final int CORNERS = 4; + + // gespeichertes Bild, + private BufferedImage image; + + // aktuelle Farbeinstellungen + private Color background; + private Color pencolor; + private Color fillcolor; + + // aktuelle Stiftdicke + private double stroke; + + // akkteller Koordinatenmodus von Rechtecken und Ellipsen + private int ellipseMode = CENTER; + private int rectMode = CORNER; + + // aktueller Font + private Font textfont = null; + + // muss ein Bildanzeiger benachrichtigt werden + private PictureViewer observer = null; + + /** + * Erzeugt ein Bild mit Standardgröße 500x400 + */ + public Picture() { + this(500,400); + } + + /** + * Erzeugt ein Bild der angegeben Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public Picture(int width, int height) { + this(width,height, "D0D0D0"); + } + + /** + * Erzeugt ein Bild aus einer Datei + * @param filename Dateiname des Bildes + */ + public Picture(String filename) { + load(filename); + } + + /** + * Erzeugt ein Bild der angegebenen Größe mit festgelegtem Hintergrund + * @param width Breite des Bildes + * @param height Höhe des Bildes + * @param background Farbe des Hintergrunds + */ + public Picture(int width, int height, String background) { + this.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + this.background = decode(background); + this.pencolor = new Color(0,0,0); + this.stroke = 1; + this.fillcolor = null; + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(this.background); + g.fillRect(0,0,width-1, height-1); + } + + /** + * Legt fest, wer das Bild anzeigt. + * Diese ermöglicht die Benachrichtung des Observers, wenn sich das Bild ändert. + * @param observer Anzeiger des Bildes + */ + + public void setObserver(PictureViewer observer) { + this.observer= observer; + } + + /** + * Direktes Setzen des Bildes (für interne Zwecke) + * @param b Bild, das gespeichert werden soll. + */ + public void setImage(BufferedImage b) { + image = b; + } + + /** + * Direktes Abfragen des Bildes (für interne Zwecke) + * @return Bild, das gerade gespeichert ist. + */ + public BufferedImage getImage() { + return image; + } + + /** + * Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + * Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + * der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu. + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public void size(int width, int height){ + pushImage(); + this.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(background); + g.fillRect(0,0,width-1, height-1); + } + + /** + * Liefert die Breite des Bildes zurück. + * @return Breite des Bildes + */ + public int getWidth() { + return image.getWidth(); + } + + /** + * Liefert die Höhe des Bildes zurück. + * @return Höhe des Bildes + */ + public int getHeight() { + return image.getHeight(); + } + + + /** + * Erzeugt eine Kopie des Bildes und übergibt sie an den Observer (falls existent), damit dieser die Versionen speichern kann + */ + private void pushImage() { + if(observer != null) { + observer.pushImage(); + } + } + + /** + * Auch die anzeigenden Klasse wird zum Neuzeichnen aufgefordert. + */ + private void repaint() { + if(observer != null) { + observer.repaint(); + } + } + + // ----------------------------------------- Zeichenfunktionen ----------------------------------------------- + /** + * Löscht den Inhalt des Bildes. + * Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt. + */ + + public void clear(){ + pushImage(); + image = new BufferedImage(image.getWidth(), image.getHeight(), image.getType()); + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(background); + g.fillRect(0,0,image.getWidth()-1, image.getHeight()-1); + repaint(); + } + + /** + * Konvertiert die in einem bestimmten Modus gegebenen Koordinaten in die Java-übliche Links_Oben_Breite_Höhe Version + * Die Änderungen werden direkt im Array vorgenommen + * @param coord Array mit vier Koordinateneinträgen im gegebenen Modus + * @param mode Modus der Koordinaten (CORNER, CORNERS, RADIUS oder CENTER) + */ + private void convert(int[] coord, int mode) { + switch(mode) { + case CORNER: break; + case CORNERS: coord[2] -= coord[0]; coord[3] -= coord[1]; break; + case RADIUS: coord[2] *= 2; coord[3] *=2; + case CENTER: coord[0] -= coord[2]/2; coord[1] -= coord[3]/2; + } + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + * Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + * Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void rectMode(int mode) { + rectMode = mode; + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + * Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + * Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als Breite und Höhe der Form. + * ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void ellipseMode(int mode) { + ellipseMode = mode; + } + + + + /** + * Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + * Um eine Linie einzufärben, verwenden Sie die {@link #stroke(int, int, int) stroke()} Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + * Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + * {@link #strokeWeight(double) strokeWeight()} geändert werden. + * @param x1 x-Koordinate des 1. Punktes + * @param y1 y-Koordinate des 1. Punktes + * @param x2 x-Koordinate des 2. Punktes + * @param y2 y-Koordinate des 2. Punktes + */ + public void line(int x1, int y1, int x2, int y2) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + if (stroke > 0) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawLine(x1, y1, x2, y2); + } + repaint(); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, rectMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillRect(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawRect(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, ellipseMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillOval(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawOval(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + int px[] = {x1, x2, x3}; + int py[] = {y1, y2, y3}; + polygon(px, py); + + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + + int px[] = {x1, x2, x3, x4}; + int py[] = {y1, y2, y3, y4}; + polygon(px, py); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + + public void polygon(int[] x, int[] y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(fillcolor != null) { + + g.setColor(fillcolor); + g.fillPolygon(x,y, y.length); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawPolygon(x, y, x.length); + } + repaint(); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + ellipse(x,y,1, 1); + + } + + // ----------------------------------------- Schriftdarstellung ----------------------------------------------- + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param s Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String s, int x, int y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(pencolor != null) { + g.setColor(fillcolor); + g.setStroke(new BasicStroke((float) stroke)); + g.setFont(textfont); + g.drawString(s, x, y); + } + repaint(); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + this.textfont = font; + } + + + // ----------------------------------------- Farbfestlegungen ----------------------------------------------- + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(String color) { + try{ + return new Color( + Integer.valueOf( color.substring( 0, 2 ), 16 ), + Integer.valueOf( color.substring( 2, 4 ), 16 ), + Integer.valueOf( color.substring( 4, 6 ), 16 ) ); + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(int color) { + try{ + if(color >=0 && color < 256) { + return new Color(color,color,color); + } else { + int r = color / 0x010000 % 0xFF; + int g = color / 0x000100 % 0xFF; + int b = color % 0xFF; + System.out.println(""+r+","+g+","+b); + return new Color(r, g, b ); + } + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + this.pencolor = decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + this.pencolor=decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + this.pencolor = new Color(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + this.pencolor = null; + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + this.stroke = width; + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + this.fillcolor = decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + this.fillcolor=decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + this.fillcolor = new Color(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + this.fillcolor = null; + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + if(c < 256) { + this.background=new Color(c,c,c); + } else { + int r = c / 0x010000; + int g = c / 0x000100 % 0xFF; + int b = c % 0xFF; + this.background= new Color(r, g, b ); + } + + this.clear(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + this.background=new Color(r,g,b); + this.clear(); + } + + +// ----------------------------------------- Dateioperationen ----------------------------------------------- + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + try{ + this.image = ImageIO.read(new File(filename)); + this.background = decode("D0D0D0"); + this.pencolor = new Color(0,0,0); + this.fillcolor = null; + this.stroke = 1; + this.repaint(); + + } catch(Exception e) { + System.out.println("Fehler beim Einlesen der Bilddatei"); + } + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + try{ + String[] fn = filename.split("\\."); + if (fn.length== 1) { + ImageIO.write(image, "PNG", new File(filename+".png")); + } else { + + if (fn.length == 2 && (fn[1].toUpperCase().equals("PNG") || + fn[1].toUpperCase().equals("GIF"))){ + ImageIO.write(image, fn[1], new File(filename)); + }else { + System.out.println("Unbekanntes Bildformat"); + } + } + + } catch(Exception e) { + System.out.println("Fehler beim Speichern"); + } + } + + +// ----------------------------------------- Sonstiges ----------------------------------------------- + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + + public Color[][] getPixelArray() { + Color[][] pixel = new Color[image.getWidth()][image.getHeight()]; + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + pixel[x][y] = new java.awt.Color(image.getRGB(x,y)); + } + } + return pixel; + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + size(pixel.length,pixel[0].length); + Graphics2D g = (Graphics2D) image.getGraphics(); + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + g.setColor(pixel[x][y]); + g.fillRect(x, y, 1, 1); + } + } + repaint(); + } + + /** + * Hilfsfunktion zum Verzögern der Ausgabe + * @param millis Wartezeit in Millisekunden + */ + public void delay(int millis) { + try{ + Thread.sleep(millis); + + } catch(Exception e) { + + } + + } + + + +} diff --git a/03_vorlagen_tauschordner/03_javaeditor/alg04_figurC_mitSchleife/PictureViewer.java b/03_vorlagen_tauschordner/03_javaeditor/alg04_figurC_mitSchleife/PictureViewer.java new file mode 100644 index 0000000..9c2e0b5 --- /dev/null +++ b/03_vorlagen_tauschordner/03_javaeditor/alg04_figurC_mitSchleife/PictureViewer.java @@ -0,0 +1,505 @@ +/** + * Zeigt ein Bild in einem Scrollbereich an. + * Es ist möglich das Bild zu zoomen und mehrere Versionen des Bildes zu speichern, um eine "Rückgängig" Operation durchzuführen. + * @author Thomas Schaller + * @version 1.0 vom 01.02.2019 + */ + +import java.awt.*; +import java.awt.event.*; +import javax.swing.*; +import java.awt.image.*; +import java.util.Vector; + +public class PictureViewer extends JScrollPane +{ + + // das aktuelle Bild + private Picture picture; + + // Bilder für den Züruck-Modus speichern + private static final int ANZ_BACK = 20; + private Vector history; + + // Zeichenfläche + private ImageIcon scrollImageIcon; + private JLabel imageLabel; + + // Zoom Faktor + private double zoomFactor; + public static final int FIT = -1; + public static final int NORMAL = 1; + + + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der Größe 1000x1000 + */ + public PictureViewer() { + this(1000,1000); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public PictureViewer(int width, int height) { + this(width,height, "D0D0D0"); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + * @param background Farbe des Hintergrunds als HEX-String (z.B. "FF3A45") + */ + public PictureViewer(int width, int height, String background) { + this(new Picture(width,height, background)); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild aus einer Bilddatei + * @param filename Name des Bildes + */ + public PictureViewer(String filename) { + this(new Picture(filename)); + } + + /** + * Erzeugt ein ScrollPanel und zeigt das Bild-Objekt an + * @param picture anzuzeigendes Bild + */ + public PictureViewer(Picture picture) + { + this.picture=picture; + + zoomFactor=1; + + scrollImageIcon = new ImageIcon(picture.getImage().getScaledInstance(picture.getImage().getWidth(), picture.getImage().getHeight(), Image.SCALE_FAST)); + imageLabel = new JLabel(scrollImageIcon); + imageLabel.setVerticalAlignment(JLabel.CENTER); + imageLabel.setHorizontalAlignment(JLabel.CENTER); + setViewportView(imageLabel); + + this.setBorder(BorderFactory.createLineBorder(Color.black)); + picture.setObserver(this); + history = new Vector(); + + } + + /** + * Setzt das anzuzeigende Bild neu + * @param picture anzuzeigendes Bild + */ + public void setImage(Picture picture) { + this.history = new Vector(); + this.picture = picture; + setZoom(NORMAL); + } + + /** + * Speichert das übergebene Bild in der History. + * @param b zu speicherndes Bild + */ + public void pushImage() { + if( this.ANZ_BACK > 0) { + if(history.size() == this.ANZ_BACK) { + history.removeElementAt(0); + } + + BufferedImage b = new BufferedImage(picture.getWidth(), picture.getHeight(), picture.getImage().getType()); + Graphics g = b.getGraphics(); + g.drawImage(picture.getImage(), 0, 0, null); + g.dispose(); + + history.add(b); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + private void popImage() { + int anz = history.size(); + if(anz>0) { + BufferedImage img = history.get(anz-1); + history.removeElementAt(anz-1); + picture.setImage(img); + setZoom(zoomFactor); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + public void back() { + popImage(); + } + + /** + * Setzt das angezeigt Bild neu und beachtet dabei den Zoomfaktor. + */ + public void repaint() { + if( picture != null) { + double factor= zoomFactor; + if (zoomFactor == FIT) { + double factorw = ((double) getWidth()-2) / picture.getWidth(); + double factorh = ((double) getHeight()-2) / picture.getHeight(); + factor = Math.min(factorw, factorh); + } + int width = (int) (picture.getWidth()*factor); + int height = (int) (picture.getHeight()*factor); + + + + scrollImageIcon.setImage(picture.getImage().getScaledInstance(width, height, Image.SCALE_DEFAULT)); + revalidate(); + } + } + + /** + * Setzt den Zoom-Faktor für das Bild. + * Als Zoomfaktor sind auch die Konstanten Bildanzeiger.FIT (auf Bildschirmgröße zoomen) und Bildanzeiger.NORMAL (100%) möglich. + * @param factor Zoomfaktor (1.0 = 100%). + */ + public void setZoom(double factor) + { + zoomFactor = factor; + repaint(); + } + + + // Wrappermethoden + /** + * Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + * Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + * der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu. + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public void size(int width, int height){ + picture.size(width, height); + } + + /** + * Liefert die Breite des Bildes zurück. + * @return Breite des Bildes + */ + public int getImageWidth() { + return picture.getWidth(); + } + + /** + * Liefert die Höhe des Bildes zurück. + * @return Höhe des Bildes + */ + public int getImageHeight() { + return picture.getHeight(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + picture.background(c); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + picture.background(r,g,b); + } + + /** + * Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + * Um eine Linie einzufärben, verwenden Sie die {@link #stroke(int, int, int) stroke()} Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + * Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + * {@link #strokeWeight(double) strokeWeight()} geändert werden. + * @param x1 x-Koordinate des 1. Punktes + * @param y1 y-Koordinate des 1. Punktes + * @param x2 x-Koordinate des 2. Punktes + * @param y2 y-Koordinate des 2. Punktes + */ + public void line(int x1, int y1, int x2, int y2) { + picture.line(x1,y1,x2,y2); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + picture.rect(a,b,c,d); + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + picture.ellipse(a,b,c,d); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + picture.triangle(x1,y1,x2,y2,x3,y3); + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + picture.quad(x1,y1,x2,y2,x3,y3,x4,y4); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + public void polygon(int[] x, int[] y) { + picture.polygon(x,y); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + picture.point(x,y); + + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + * Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + * Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void rectMode(int mode) { + picture.rectMode(mode); + } + + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + * Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + * Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als Breite und Höhe der Form. + * ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void ellipseMode(int mode) { + picture.ellipseMode(mode); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + picture.stroke(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + picture.noStroke(); + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + picture.strokeWeight(width); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + picture.fill(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + picture.noFill(); + } + + /** + * Löscht den Inhalt des Bildes. + * Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt. + */ + public void clear(){ + picture.clear(); + } + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + picture.load(filename); + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + picture.save(filename); + } + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param t Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String t, int x, int y) { + picture.text(t,x,y); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + picture.textFont(font); + } + + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + public Color[][] getPixelArray() { + return picture.getPixelArray(); + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + picture.setPixelArray(pixel); + } + + + +} diff --git a/03_vorlagen_tauschordner/03_javaeditor/alg04_figurC_mitSchleife/Zeichnung.java b/03_vorlagen_tauschordner/03_javaeditor/alg04_figurC_mitSchleife/Zeichnung.java new file mode 100644 index 0000000..9d10dd3 --- /dev/null +++ b/03_vorlagen_tauschordner/03_javaeditor/alg04_figurC_mitSchleife/Zeichnung.java @@ -0,0 +1,21 @@ +/** + * Vorlage für Figur C mit Schleife. + * + * @author Eisenmann, Vorlage: Schaller + * @version 13.03.19 + */ +public class Zeichnung extends Picture +{ + public Zeichnung() { + size(500, 350); + zeichneBildC(); // Aufruf deiner Methode + } + + public void zeichneBildC() { + // ***** hier kommen deine Anweisungen hin ************ + + + // ***** Ende der eigenen Anweisungen ********** + } + +} diff --git a/03_vorlagen_tauschordner/03_javaeditor/alg04_figurC_mitSchleife/ZeichnungGUI.java b/03_vorlagen_tauschordner/03_javaeditor/alg04_figurC_mitSchleife/ZeichnungGUI.java new file mode 100644 index 0000000..47a7fa7 --- /dev/null +++ b/03_vorlagen_tauschordner/03_javaeditor/alg04_figurC_mitSchleife/ZeichnungGUI.java @@ -0,0 +1,66 @@ +import java.awt.*; +import java.awt.event.*; +import javax.swing.*; +import javax.swing.event.*; + +/** + * + * description + * + * @version 1.0 from 06.10.2018 + * @author + */ + +public class ZeichnungGUI extends JFrame { + // Anfang Attribute + private JButton bZeichnen = new JButton(); + private PictureViewer imagePanel1 = new PictureViewer(); + + // Ende Attribute + + public ZeichnungGUI (String title) { + super (title); + setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); + int frameWidth = 768; + int frameHeight = 551; + setSize(frameWidth, frameHeight); + Dimension d = Toolkit.getDefaultToolkit().getScreenSize(); + int x = (d.width - getSize().width) / 2; + int y = (d.height - getSize().height) / 2; + setLocation(x, y); + Container cp = getContentPane(); + cp.setLayout(null); + // Anfang Komponenten + bZeichnen.setBounds(256, 456, 273, 33); + bZeichnen.setText("Zeichnen"); + bZeichnen.setMargin(new Insets(2, 2, 2, 2)); + bZeichnen.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent evt) { + bZeichnen_ActionPerformed(evt); + } + }); + cp.add(bZeichnen); + imagePanel1.setBounds(24, 16, 705, 409); + cp.add(imagePanel1); + + // Ende Komponenten + setResizable(false); + setVisible(true); + } + + // Anfang Methoden + public void bZeichnen_ActionPerformed(ActionEvent evt) { + Zeichnung bild = new Zeichnung(); + imagePanel1.setImage(bild); + imagePanel1.getViewport().repaint(); + imagePanel1.getVerticalScrollBar().setValue(1); + imagePanel1.getVerticalScrollBar().setValue(0); + } // end of bZeichnen_ActionPerformed + + // Ende Methoden + + public static void main(String[] args) { + new ZeichnungGUI("ZeichnungGUI"); + } +} + diff --git a/03_vorlagen_tauschordner/03_javaeditor/alg04_figurC_mitSchleife/ZeichnungGUI.jfm b/03_vorlagen_tauschordner/03_javaeditor/alg04_figurC_mitSchleife/ZeichnungGUI.jfm new file mode 100644 index 0000000..5321b4b --- /dev/null +++ b/03_vorlagen_tauschordner/03_javaeditor/alg04_figurC_mitSchleife/ZeichnungGUI.jfm @@ -0,0 +1,103 @@ +object ZeichnungGUI: TFGUIForm + Left = 761 + Top = 237 + BorderIcons = [biSystemMenu] + Caption = 'ZeichnungGUI' + ClientHeight = 512 + ClientWidth = 752 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -10 + Font.Name = 'MS Sans Serif' + Font.Style = [] + FormStyle = fsStayOnTop + OldCreateOrder = True + Position = poDesigned + ShowHint = True + Visible = True + OnClose = FormClose + OnCloseQuery = FormCloseQuery + OnResize = FormResize + FrameType = 5 + Resizable = False + Undecorated = False + Background = clBtnFace + PixelsPerInch = 96 + TextHeight = 13 + object bOptischeTauschungzeichnen: TJButton + Tag = 4 + Left = 256 + Top = 456 + Width = 273 + Height = 33 + Hint = 'jButton1' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Dialog' + Font.Style = [fsBold] + Foreground = 3355443 + Background = 15658734 + actionPerformed = 'bOptischeTauschungzeichnen_ActionPerformed' + Text = 'Optische T'#228'uschung zeichnen' + Mnemonic = 0 + DisplayedMnemonicIndex = 0 + Selected = False + BorderPainted = True + FocusPainted = False + ContentAreaFilled = True + HorizontalAlignment = CENTER + VerticalAlignment = CENTER + HorizontalTextPosition = RIGHT + VerticalTextPosition = CENTER + IconTextGap = 4 + RolloverEnabled = False + Border.BorderType = NoBorder + Border.LineColor = clBlack + Border.LineThickness = 0 + Border.LineRounded = False + Border.EtchHighlightColor = clBlack + Border.EtchShadowColor = clBlack + Border.Etchtype = 0 + Border.BevelHighlightColor = clBlack + Border.BevelShadowColor = clBlack + Border.Beveltype = 0 + Border.MatteColor = clBlack + Border.MatteTop = 0 + Border.MatteLeft = 0 + Border.MatteBottom = 0 + Border.MatteRight = 0 + end + object imagePanel1: TJPanel + Tag = 38 + Left = 24 + Top = 16 + Width = 705 + Height = 409 + Hint = 'imagePanel1' + HelpKeyword = 'ImagePanel' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Dialog' + Font.Style = [fsBold] + Foreground = 3355443 + Background = clBtnFace + Border.BorderType = NoBorder + Border.LineColor = clBlack + Border.LineThickness = 0 + Border.LineRounded = False + Border.EtchHighlightColor = clBlack + Border.EtchShadowColor = clBlack + Border.Etchtype = 0 + Border.BevelHighlightColor = clBlack + Border.BevelShadowColor = clBlack + Border.Beveltype = 0 + Border.MatteColor = clBlack + Border.MatteTop = 0 + Border.MatteLeft = 0 + Border.MatteBottom = 0 + Border.MatteRight = 0 + end +end diff --git a/03_vorlagen_tauschordner/03_javaeditor/alg10_balkendiagramm/Balkendiagramm.java b/03_vorlagen_tauschordner/03_javaeditor/alg10_balkendiagramm/Balkendiagramm.java new file mode 100644 index 0000000..277062e --- /dev/null +++ b/03_vorlagen_tauschordner/03_javaeditor/alg10_balkendiagramm/Balkendiagramm.java @@ -0,0 +1,54 @@ +import java.awt.Font; + +/** + * Balkendiagramm für int-Array. + * + * @author Schaller + * @version 29.11.18 + */ +public class Balkendiagramm extends Picture + +{ + // Liste mit allen Werten + int[] zahlen={45, 23, 123, 87, 98, 2, 1, 23, 23, 34};; + + // Schriften + Font kleineSchrift; + Font grosseSchrift; + + public Balkendiagramm() { + size(700, 400); + background(0); + kleineSchrift = new Font( Font.SANS_SERIF, Font.PLAIN, 12 ); + grosseSchrift = new Font( Font.SANS_SERIF, Font.PLAIN, 20 ); + zeichneBalken(); + } + + public void zeichneBalken() { + clear(); + // Überschrift + fill(255,255,255); + textFont(grosseSchrift); + text("Balkendiagramm", 2, 20); + textFont(kleineSchrift); + + // ---------------------------------------------------------------------- + // To Do + // ---------------------------------------------------------------------- + // Version 1: + // Implementiere die ersten vier Balken durch Angabe der Koordinaten aus der Tabelle. + // Ergänze dazu die Methode zeicheBalken an der "ToDo"-Stelle. + // Version 2: + // Ersetze die y-Koordinate und die Breite durch die oben ermittelte Formel. + // Deklariere vorher eine Integer-Variable i. Setze i vor der ersten Rechteck + // auf 0, vor dem zweite auf 1 usw. Überprüfe, ob deine Rechtecke immer noch + // korrekt gezeichnet werden. + // Version 3: + // Verwende eine for-Schleife, um alle Balken zeichnen zu lassen. Diese muss das i + // in jedem Durchgang um 1 erhöhen. Die Anzahl der Elemente im Array bekommst du + // durch zahlen.length. + // Tipp: Vergleiche mit deiner Implementation von der Kaffeehaus-Täuschung. + + } + +} diff --git a/03_vorlagen_tauschordner/03_javaeditor/alg10_balkendiagramm/BalkendiagrammGUI.java b/03_vorlagen_tauschordner/03_javaeditor/alg10_balkendiagramm/BalkendiagrammGUI.java new file mode 100644 index 0000000..3f15b44 --- /dev/null +++ b/03_vorlagen_tauschordner/03_javaeditor/alg10_balkendiagramm/BalkendiagrammGUI.java @@ -0,0 +1,66 @@ +import java.awt.*; +import java.awt.event.*; +import javax.swing.*; +import javax.swing.event.*; + +/** + * + * description + * + * @version 1.0 from 06.10.2018 + * @author + */ + +public class BalkendiagrammGUI extends JFrame { + // Anfang Attribute + private JButton bZeichnen = new JButton(); + private PictureViewer imagePanel1 = new PictureViewer(); + + // Ende Attribute + + public BalkendiagrammGUI (String title) { + super (title); + setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); + int frameWidth = 768; + int frameHeight = 551; + setSize(frameWidth, frameHeight); + Dimension d = Toolkit.getDefaultToolkit().getScreenSize(); + int x = (d.width - getSize().width) / 2; + int y = (d.height - getSize().height) / 2; + setLocation(x, y); + Container cp = getContentPane(); + cp.setLayout(null); + // Anfang Komponenten + bZeichnen.setBounds(256, 456, 273, 33); + bZeichnen.setText("Balkendiagramm zeichnen"); + bZeichnen.setMargin(new Insets(2, 2, 2, 2)); + bZeichnen.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent evt) { + bZeichnen_ActionPerformed(evt); + } + }); + cp.add(bZeichnen); + imagePanel1.setBounds(24, 16, 705, 409); + cp.add(imagePanel1); + + // Ende Komponenten + setResizable(false); + setVisible(true); + } + + // Anfang Methoden + public void bZeichnen_ActionPerformed(ActionEvent evt) { + Balkendiagramm bild = new Balkendiagramm(); + imagePanel1.setImage(bild); + imagePanel1.getViewport().repaint(); + imagePanel1.getVerticalScrollBar().setValue(1); + imagePanel1.getVerticalScrollBar().setValue(0); + } // end of bZeichnen_ActionPerformed + + // Ende Methoden + + public static void main(String[] args) { + new BalkendiagrammGUI("BalkendiagrammGUI"); + } +} + diff --git a/03_vorlagen_tauschordner/03_javaeditor/alg10_balkendiagramm/BalkendiagrammGUI.jfm b/03_vorlagen_tauschordner/03_javaeditor/alg10_balkendiagramm/BalkendiagrammGUI.jfm new file mode 100644 index 0000000..707d571 --- /dev/null +++ b/03_vorlagen_tauschordner/03_javaeditor/alg10_balkendiagramm/BalkendiagrammGUI.jfm @@ -0,0 +1,103 @@ +object BalkendiagrammGUI: TFGUIForm + Left = 761 + Top = 237 + BorderIcons = [biSystemMenu] + Caption = 'BalkendiagrammGUI' + ClientHeight = 512 + ClientWidth = 752 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -10 + Font.Name = 'MS Sans Serif' + Font.Style = [] + FormStyle = fsStayOnTop + OldCreateOrder = True + Position = poDesigned + ShowHint = True + Visible = True + OnClose = FormClose + OnCloseQuery = FormCloseQuery + OnResize = FormResize + FrameType = 5 + Resizable = False + Undecorated = False + Background = clBtnFace + PixelsPerInch = 96 + TextHeight = 13 + object bOptischeTauschungzeichnen: TJButton + Tag = 4 + Left = 256 + Top = 456 + Width = 273 + Height = 33 + Hint = 'jButton1' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Dialog' + Font.Style = [fsBold] + Foreground = 3355443 + Background = 15658734 + actionPerformed = 'bOptischeTauschungzeichnen_ActionPerformed' + Text = 'Optische T'#228'uschung zeichnen' + Mnemonic = 0 + DisplayedMnemonicIndex = 0 + Selected = False + BorderPainted = True + FocusPainted = False + ContentAreaFilled = True + HorizontalAlignment = CENTER + VerticalAlignment = CENTER + HorizontalTextPosition = RIGHT + VerticalTextPosition = CENTER + IconTextGap = 4 + RolloverEnabled = False + Border.BorderType = NoBorder + Border.LineColor = clBlack + Border.LineThickness = 0 + Border.LineRounded = False + Border.EtchHighlightColor = clBlack + Border.EtchShadowColor = clBlack + Border.Etchtype = 0 + Border.BevelHighlightColor = clBlack + Border.BevelShadowColor = clBlack + Border.Beveltype = 0 + Border.MatteColor = clBlack + Border.MatteTop = 0 + Border.MatteLeft = 0 + Border.MatteBottom = 0 + Border.MatteRight = 0 + end + object imagePanel1: TJPanel + Tag = 38 + Left = 24 + Top = 16 + Width = 705 + Height = 409 + Hint = 'imagePanel1' + HelpKeyword = 'ImagePanel' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Dialog' + Font.Style = [fsBold] + Foreground = 3355443 + Background = clBtnFace + Border.BorderType = NoBorder + Border.LineColor = clBlack + Border.LineThickness = 0 + Border.LineRounded = False + Border.EtchHighlightColor = clBlack + Border.EtchShadowColor = clBlack + Border.Etchtype = 0 + Border.BevelHighlightColor = clBlack + Border.BevelShadowColor = clBlack + Border.Beveltype = 0 + Border.MatteColor = clBlack + Border.MatteTop = 0 + Border.MatteLeft = 0 + Border.MatteBottom = 0 + Border.MatteRight = 0 + end +end diff --git a/03_vorlagen_tauschordner/03_javaeditor/alg10_balkendiagramm/Picture.java b/03_vorlagen_tauschordner/03_javaeditor/alg10_balkendiagramm/Picture.java new file mode 100644 index 0000000..8df3d55 --- /dev/null +++ b/03_vorlagen_tauschordner/03_javaeditor/alg10_balkendiagramm/Picture.java @@ -0,0 +1,699 @@ +import java.awt.image.*; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.BasicStroke; +import java.util.Vector; +import javax.imageio.*; +import java.io.*; +import java.awt.*; +import javax.swing.*; +import java.util.Random; +import java.awt.geom.AffineTransform; +/** + * + * Bildklasse für die Simulation von Processing-Befehlen + * + * Diese Klasse stellt ein BufferedImage bereit, in das mit Processing-Befehlen gezeichnet + * werden kann. + * Zusätzlich kann ein Bildanzeiger über jede Änderung des Bildes informiert werden, + * um "Zurück"-Befehle zu ermöglichen. Der Bildanzeiger ist entweder eine normale Java + * ScrollPane oder ein Actor aus Greenfoot. + * Die Dokumentation der einzelnen Zeichenmethoden ist der Processing-Reference + * (https://processing.org/reference/ steht unter CC-Lizenz: https://creativecommons.org/) + * entnommen und mit Deepl.com ins Deutsche übersetzt. + * + * @version 1.0 from 23.01.2019 + * @author Thomas Schaller (ZPG Informatik Klasse 9) + */ + +public class Picture{ + + // Einstellungmöglichkeiten für das Zeichnen von Rechtecken und Ellipsen + // RADIUS = Mittelpunkt+Radius wird gegeben, CENTER = Mittelpunkt und Breite/Höhe wird gegeben, + // CORNER = Linke obere Ecke + Breite/Höhe, CORNERS = Linke obere und rechte untere Ecke + public static final int RADIUS = 1; + public static final int CENTER = 2; + public static final int CORNER = 3; + public static final int CORNERS = 4; + + // gespeichertes Bild, + private BufferedImage image; + + // aktuelle Farbeinstellungen + private Color background; + private Color pencolor; + private Color fillcolor; + + // aktuelle Stiftdicke + private double stroke; + + // akkteller Koordinatenmodus von Rechtecken und Ellipsen + private int ellipseMode = CENTER; + private int rectMode = CORNER; + + // aktueller Font + private Font textfont = null; + + // muss ein Bildanzeiger benachrichtigt werden + private PictureViewer observer = null; + private boolean autorefresh = true; + + /** + * Erzeugt ein Bild mit Standardgröße 500x400 + */ + public Picture() { + this(500,400); + } + + /** + * Erzeugt ein Bild der angegeben Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public Picture(int width, int height) { + this(width,height, "D0D0D0"); + } + + /** + * Erzeugt ein Bild aus einer Datei + * @param filename Dateiname des Bildes + */ + public Picture(String filename) { + load(filename); + } + + /** + * Erzeugt ein Bild der angegebenen Größe mit festgelegtem Hintergrund + * @param width Breite des Bildes + * @param height Höhe des Bildes + * @param background Farbe des Hintergrunds + */ + public Picture(int width, int height, String background) { + this.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + this.background = decode(background); + this.pencolor = new Color(0,0,0); + this.stroke = 1; + this.fillcolor = null; + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(this.background); + g.fillRect(0,0,width-1, height-1); + } + + /** + * Legt fest, wer das Bild anzeigt. + * Diese ermöglicht die Benachrichtung des Observers, wenn sich das Bild ändert. + * @param observer Anzeiger des Bildes + */ + + public void setObserver(PictureViewer observer) { + this.observer= observer; + } + + /** + * Direktes Setzen des Bildes (für interne Zwecke) + * @param b Bild, das gespeichert werden soll. + */ + public void setImage(BufferedImage b) { + image = b; + } + + /** + * Direktes Abfragen des Bildes (für interne Zwecke) + * @return Bild, das gerade gespeichert ist. + */ + public BufferedImage getImage() { + return image; + } + + /** + * Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + * Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + * der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu. + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public void size(int width, int height){ + pushImage(); + this.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(background); + g.fillRect(0,0,width-1, height-1); + } + + /** + * Liefert die Breite des Bildes zurück. + * @return Breite des Bildes + */ + public int getWidth() { + return image.getWidth(); + } + + /** + * Liefert die Höhe des Bildes zurück. + * @return Höhe des Bildes + */ + public int getHeight() { + return image.getHeight(); + } + + + /** + * Erzeugt eine Kopie des Bildes und übergibt sie an den Observer (falls existent), damit dieser die Versionen speichern kann + */ + private void pushImage() { + if(observer != null) { + observer.pushImage(); + } + } + + + /** + * Legt fest, ob nach jedem Zeichenbefehl automatisch das Bild auch in + * der Oberfläche aktualisiert wird. Die Einstellung "false" beschleunigt + * das Zeichnen aufwändiger Bilder und verhindert "Flackern". + * Das Neuzeichnen kann durch die Methode "refresh" gezielt ausgelöst werden. + * @param autorefresh true = nach jedem Zeichenbefehl die Anzeige aktualisieren, false= nur durch die Methode refresh neu zeichnen + */ + public void setAutoRefresh(boolean autoRefresh) { + this.autorefresh = autoRefresh; + } + + + /** + * Auch die anzeigenden Klasse wird zum Neuzeichnen aufgefordert. + */ + private void repaint() { + if(observer != null && autorefresh) { + observer.repaint(); + } + } + + /** + * Auch die anzeigenden Klasse wird zum Neuzeichnen aufgefordert. + */ + public void refresh() { + if(observer != null) { + observer.repaint(); + } + } + + // ----------------------------------------- Zeichenfunktionen ----------------------------------------------- + /** + * Löscht den Inhalt des Bildes. + * Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt. + */ + + public void clear(){ + pushImage(); + image = new BufferedImage(image.getWidth(), image.getHeight(), image.getType()); + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(background); + g.fillRect(0,0,image.getWidth()-1, image.getHeight()-1); + repaint(); + } + + /** + * Konvertiert die in einem bestimmten Modus gegebenen Koordinaten in die Java-übliche Links_Oben_Breite_Höhe Version + * Die Änderungen werden direkt im Array vorgenommen + * @param coord Array mit vier Koordinateneinträgen im gegebenen Modus + * @param mode Modus der Koordinaten (CORNER, CORNERS, RADIUS oder CENTER) + */ + private void convert(int[] coord, int mode) { + switch(mode) { + case CORNER: break; + case CORNERS: coord[2] -= coord[0]; coord[3] -= coord[1]; break; + case RADIUS: coord[2] *= 2; coord[3] *=2; + case CENTER: coord[0] -= coord[2]/2; coord[1] -= coord[3]/2; + } + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + * Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + * Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void rectMode(int mode) { + rectMode = mode; + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + * Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + * Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als Breite und Höhe der Form. + * ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void ellipseMode(int mode) { + ellipseMode = mode; + } + + + + /** + * Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + * Um eine Linie einzufärben, verwenden Sie die {@link #stroke(int, int, int) stroke()} Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + * Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + * {@link #strokeWeight(double) strokeWeight()} geändert werden. + * @param x1 x-Koordinate des 1. Punktes + * @param y1 y-Koordinate des 1. Punktes + * @param x2 x-Koordinate des 2. Punktes + * @param y2 y-Koordinate des 2. Punktes + */ + public void line(int x1, int y1, int x2, int y2) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + if (stroke > 0) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawLine(x1, y1, x2, y2); + } + repaint(); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, rectMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillRect(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawRect(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, ellipseMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillOval(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawOval(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + int px[] = {x1, x2, x3}; + int py[] = {y1, y2, y3}; + polygon(px, py); + + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + + int px[] = {x1, x2, x3, x4}; + int py[] = {y1, y2, y3, y4}; + polygon(px, py); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + + public void polygon(int[] x, int[] y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(fillcolor != null) { + + g.setColor(fillcolor); + g.fillPolygon(x,y, y.length); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawPolygon(x, y, x.length); + } + repaint(); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + ellipse(x,y,1, 1); + + } + + // ----------------------------------------- Schriftdarstellung ----------------------------------------------- + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param s Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String s, int x, int y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(pencolor != null) { + g.setColor(fillcolor); + g.setStroke(new BasicStroke((float) stroke)); + g.setFont(textfont); + g.drawString(s, x, y); + } + repaint(); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + this.textfont = font; + } + + + // ----------------------------------------- Farbfestlegungen ----------------------------------------------- + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(String color) { + try{ + return new Color( + Integer.valueOf( color.substring( 0, 2 ), 16 ), + Integer.valueOf( color.substring( 2, 4 ), 16 ), + Integer.valueOf( color.substring( 4, 6 ), 16 ) ); + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(int color) { + try{ + if(color >=0 && color < 256) { + return new Color(color,color,color); + } else { + int r = color / 0x010000 % 0xFF; + int g = color / 0x000100 % 0xFF; + int b = color % 0xFF; + System.out.println(""+r+","+g+","+b); + return new Color(r, g, b ); + } + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + this.pencolor = decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + this.pencolor=decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + this.pencolor = new Color(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + this.pencolor = null; + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + this.stroke = width; + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + this.fillcolor = decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + this.fillcolor=decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + this.fillcolor = new Color(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + this.fillcolor = null; + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + if(c < 256) { + this.background=new Color(c,c,c); + } else { + int r = c / 0x010000; + int g = c / 0x000100 % 0xFF; + int b = c % 0xFF; + this.background= new Color(r, g, b ); + } + + this.clear(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + this.background=new Color(r,g,b); + this.clear(); + } + + +// ----------------------------------------- Dateioperationen ----------------------------------------------- + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + try{ + this.image = ImageIO.read(new File(filename)); + this.background = decode("D0D0D0"); + this.pencolor = new Color(0,0,0); + this.fillcolor = null; + this.stroke = 1; + this.repaint(); + + } catch(Exception e) { + System.out.println("Fehler beim Einlesen der Bilddatei"); + } + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + try{ + String[] fn = filename.split("\\."); + if (fn.length== 1) { + ImageIO.write(image, "PNG", new File(filename+".png")); + } else { + + if (fn.length == 2 && (fn[1].toUpperCase().equals("PNG") || + fn[1].toUpperCase().equals("GIF"))){ + ImageIO.write(image, fn[1], new File(filename)); + }else { + System.out.println("Unbekanntes Bildformat"); + } + } + + } catch(Exception e) { + System.out.println("Fehler beim Speichern"); + } + } + + +// ----------------------------------------- Sonstiges ----------------------------------------------- + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + + public Color[][] getPixelArray() { + Color[][] pixel = new Color[image.getWidth()][image.getHeight()]; + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + pixel[x][y] = new java.awt.Color(image.getRGB(x,y)); + } + } + return pixel; + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + size(pixel.length,pixel[0].length); + Graphics2D g = (Graphics2D) image.getGraphics(); + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + g.setColor(pixel[x][y]); + g.fillRect(x, y, 1, 1); + } + } + repaint(); + } + + /** + * Hilfsfunktion zum Verzögern der Ausgabe + * @param millis Wartezeit in Millisekunden + */ + public void delay(int millis) { + try{ + Thread.sleep(millis); + + } catch(Exception e) { + + } + + } + + + +} diff --git a/03_vorlagen_tauschordner/03_javaeditor/alg10_balkendiagramm/PictureViewer.java b/03_vorlagen_tauschordner/03_javaeditor/alg10_balkendiagramm/PictureViewer.java new file mode 100644 index 0000000..9e6b151 --- /dev/null +++ b/03_vorlagen_tauschordner/03_javaeditor/alg10_balkendiagramm/PictureViewer.java @@ -0,0 +1,505 @@ +/** + * Zeigt ein Bild in einem Scrollbereich an. + * Es ist möglich das Bild zu zoomen und mehrere Versionen des Bildes zu speichern, um eine "Rückgängig" Operation durchzuführen. + * @author Thomas Schaller + * @version 1.0 vom 01.02.2019 + */ + +import java.awt.*; +import java.awt.event.*; +import javax.swing.*; +import java.awt.image.*; +import java.util.Vector; + +public class PictureViewer extends JScrollPane +{ + + // das aktuelle Bild + private Picture picture; + + // Bilder für den Züruck-Modus speichern + private static final int ANZ_BACK = 20; + private Vector history; + + // Zeichenfläche + private ImageIcon scrollImageIcon; + private JLabel imageLabel; + + // Zoom Faktor + private double zoomFactor; + public static final int FIT = -1; + public static final int NORMAL = 1; + + + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der Größe 1000x1000 + */ + public PictureViewer() { + this(1000,1000); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public PictureViewer(int width, int height) { + this(width,height, "D0D0D0"); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + * @param background Farbe des Hintergrunds als HEX-String (z.B. "FF3A45") + */ + public PictureViewer(int width, int height, String background) { + this(new Picture(width,height, background)); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild aus einer Bilddatei + * @param filename Name des Bildes + */ + public PictureViewer(String filename) { + this(new Picture(filename)); + } + + /** + * Erzeugt ein ScrollPanel und zeigt das Bild-Objekt an + * @param picture anzuzeigendes Bild + */ + public PictureViewer(Picture picture) + { + this.picture=picture; + + zoomFactor=1; + + scrollImageIcon = new ImageIcon(picture.getImage().getScaledInstance(picture.getImage().getWidth(), picture.getImage().getHeight(), Image.SCALE_FAST)); + imageLabel = new JLabel(scrollImageIcon); + imageLabel.setVerticalAlignment(JLabel.CENTER); + imageLabel.setHorizontalAlignment(JLabel.CENTER); + setViewportView(imageLabel); + + this.setBorder(BorderFactory.createLineBorder(Color.black)); + picture.setObserver(this); + history = new Vector(); + + } + + /** + * Setzt das anzuzeigende Bild neu + * @param picture anzuzeigendes Bild + */ + public void setImage(Picture picture) { + this.history = new Vector(); + this.picture = picture; + setZoom(NORMAL); + } + + /** + * Speichert das übergebene Bild in der History. + * @param b zu speicherndes Bild + */ + public void pushImage() { + if( this.ANZ_BACK > 0) { + if(history.size() == this.ANZ_BACK) { + history.removeElementAt(0); + } + + BufferedImage b = new BufferedImage(picture.getWidth(), picture.getHeight(), picture.getImage().getType()); + Graphics g = b.getGraphics(); + g.drawImage(picture.getImage(), 0, 0, null); + g.dispose(); + + history.add(b); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + private void popImage() { + int anz = history.size(); + if(anz>0) { + BufferedImage img = history.get(anz-1); + history.removeElementAt(anz-1); + picture.setImage(img); + setZoom(zoomFactor); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + public void back() { + popImage(); + } + + /** + * Setzt das angezeigt Bild neu und beachtet dabei den Zoomfaktor. + */ + public void repaint() { + if( picture != null) { + double factor= zoomFactor; + if (zoomFactor == FIT) { + double factorw = ((double) getWidth()-2) / picture.getWidth(); + double factorh = ((double) getHeight()-2) / picture.getHeight(); + factor = Math.min(factorw, factorh); + } + int width = (int) (picture.getWidth()*factor); + int height = (int) (picture.getHeight()*factor); + + + + scrollImageIcon.setImage(picture.getImage().getScaledInstance(width, height, Image.SCALE_DEFAULT)); + revalidate(); + } + } + + /** + * Setzt den Zoom-Faktor für das Bild. + * Als Zoomfaktor sind auch die Konstanten Bildanzeiger.FIT (auf Bildschirmgröße zoomen) und Bildanzeiger.NORMAL (100%) möglich. + * @param factor Zoomfaktor (1.0 = 100%). + */ + public void setZoom(double factor) + { + zoomFactor = factor; + repaint(); + } + + + // Wrappermethoden + /** + * Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + * Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + * der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu. + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public void size(int width, int height){ + picture.size(width, height); + } + + /** + * Liefert die Breite des Bildes zurück. + * @return Breite des Bildes + */ + public int getImageWidth() { + return picture.getWidth(); + } + + /** + * Liefert die Höhe des Bildes zurück. + * @return Höhe des Bildes + */ + public int getImageHeight() { + return picture.getHeight(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + picture.background(c); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + picture.background(r,g,b); + } + + /** + * Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + * Um eine Linie einzufärben, verwenden Sie die {@link #stroke(int, int, int) stroke()} Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + * Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + * {@link #strokeWeight(double) strokeWeight()} geändert werden. + * @param x1 x-Koordinate des 1. Punktes + * @param y1 y-Koordinate des 1. Punktes + * @param x2 x-Koordinate des 2. Punktes + * @param y2 y-Koordinate des 2. Punktes + */ + public void line(int x1, int y1, int x2, int y2) { + picture.line(x1,y1,x2,y2); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + picture.rect(a,b,c,d); + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + picture.ellipse(a,b,c,d); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + picture.triangle(x1,y1,x2,y2,x3,y3); + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + picture.quad(x1,y1,x2,y2,x3,y3,x4,y4); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + public void polygon(int[] x, int[] y) { + picture.polygon(x,y); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + picture.point(x,y); + + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + * Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + * Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void rectMode(int mode) { + picture.rectMode(mode); + } + + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + * Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + * Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als Breite und Höhe der Form. + * ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void ellipseMode(int mode) { + picture.ellipseMode(mode); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + picture.stroke(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + picture.noStroke(); + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + picture.strokeWeight(width); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + picture.fill(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + picture.noFill(); + } + + /** + * Löscht den Inhalt des Bildes. + * Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt. + */ + public void clear(){ + picture.clear(); + } + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + picture.load(filename); + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + picture.save(filename); + } + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param t Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String t, int x, int y) { + picture.text(t,x,y); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + picture.textFont(font); + } + + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + public Color[][] getPixelArray() { + return picture.getPixelArray(); + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + picture.setPixelArray(pixel); + } + + + +} diff --git a/03_vorlagen_tauschordner/03_javaeditor/alg10_balkendiagramm/Table.java b/03_vorlagen_tauschordner/03_javaeditor/alg10_balkendiagramm/Table.java new file mode 100644 index 0000000..ee5a211 --- /dev/null +++ b/03_vorlagen_tauschordner/03_javaeditor/alg10_balkendiagramm/Table.java @@ -0,0 +1,894 @@ +/** + * Die Klasse Table vereinfacht den Zugriff auf CSV-Dateien. + * Die Klassen Table und TableRow ermöglichen einen einfachen Zugriff auf tabellenbasierte + * Dokumente. + * + * @author Thomas Schaller + * @version 1.0 vom 01.02.2019 + */ + +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.ArrayList; +import java.io.*; +import java.util.Scanner; + +import org.jdom.Document; +import org.jdom.Element; +import org.jdom.Attribute; +import org.jdom.JDOMException; +import org.jdom.input.SAXBuilder; +import org.jdom.output.XMLOutputter; +import org.jdom.output.Format; + +public class Table +{ + // Standardtrennzeichen für Spalten + private static final char DEFAULT_SEPARATOR = ';'; + // Standardmarkierung für Texte + private static final char DEFAULT_QUOTE = '"'; + // Standardtrennzeichen für Dezimalzahlen + private static final char DEFAULT_COMMA = ','; + + // mögliche Spaltentypen + private static final String UNKNOWN ="UNKOWN"; + private static final String INT = "INTEGER"; + private static final String DOUBLE = "DOUBLE"; + private static final String FLOAT = "FLOAT"; + + // interne Verwaltung des Dokuments als JDOM-Document-Objekt + private Document doc; + // Verweis auf Element für Kopfzeile + private Element header; + // Ende Attribute + + /** + * Erzeugt leeres Tabellen-Dokument. + */ + public Table() { + this.doc = new Document(); + doc.setRootElement(new Element("CSV-Data")); + this.header = new Element("Header"); + doc.getRootElement().addContent(header); + } + + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei und erstellt ein Tabellenobjekt mit seinen Werten. + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public Table(String filename, String options, char separator, char quote) { + loadCSV(filename, options, separator, quote); + } + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei und erstellt ein Tabellenobjekt mit seinen Werten (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + */ + public Table(String filename, String options) { + loadCSV(filename, options); + } + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei ohne Kopfzeile und erstellt ein Tabellenobjekt mit seinen Werten (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public Table(String filename) { + loadCSV(filename); + } + + // Anfang Methoden + /** + * Liest den Inhalt einer CSV-Datei ohne Kopfzeile (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public void loadCSV(String filename) { + loadCSV(filename, ""); + } + + /** + * Liest den Inhalt einer CSV-Datei (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + */ + public void loadCSV(String filename, String options) { + loadCSV(filename, options, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** + * Liest den Inhalt einer CSV-Datei. + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public void loadCSV(String filename, String options, char separator, char quote) { + doc = new Document(); + doc.setRootElement(new Element("CSV-Data")); + header = new Element("Header"); + doc.getRootElement().addContent(header); + try { + File f = new File(filename); + Scanner scanner = new Scanner(new File(filename)); + if(options.toLowerCase().contains("header") && scanner.hasNext()) { + List entries = parseLine(scanner.nextLine(), separator, quote); + int i= 0; + for(String s : entries) { + Element entry = new Element("Column"); + header.addContent(entry); + entry.setText(s); + entry.setAttribute("type", "unknown"); + i++; + } + } + + List cols = header.getChildren(); + + while (scanner.hasNext()) { + Element line = new Element("Row"); + doc.getRootElement().addContent(line); + List entries = parseLine(scanner.nextLine(), separator, quote); + int i= 0; + + for(String s : entries) { + + if(i==cols.size()) { + Element entry = new Element("Column"); + entry.setAttribute("type", "unknown"); + header.addContent(entry); + cols = header.getChildren(); + } + + Element entry = new Element("Entry"); + entry.setText(s); + line.addContent(entry); + i++; + } + } + scanner.close(); + + } catch (Exception e) { + System.out.println("Fehler beim Lesen der CSV-Datei"); + } + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei ohne Kopfzeile (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public void saveCSV(String filename) { + saveCSV(filename, ""); + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthalten, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile haben soll, + * dann lassen Sie einfach die Option "header" weg. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile haben soll. + * @param filename Dateiname der CSV-Datei. + */ + public void saveCSV(String filename, String options) { + saveCSV(filename, options, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei. + * Wenn die Datei eine Kopfzeile enthalten, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile haben soll, + * dann lassen Sie einfach die Option "header" weg. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile haben soll. + * @param filename Dateiname der CSV-Datei. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public void saveCSV(String filename, String options, char separator, char quote){ + try{ + File f = new File(filename); + PrintStream outputFile = new PrintStream (f); + System.out.println("Speicher in : "+f.getAbsolutePath()); + List columns = header.getChildren(); + String sq = ""+quote; + String ss = ""+separator; + if(quote =='"') sq = "\""; + if(separator =='"') ss = "\""; + + if(options.toLowerCase().contains("header")) { + String h = ""; + for(Element c : columns) { + h += ss + sq + c.getText()+sq; + } + outputFile.println(h.substring(1)); + } + for(int i = 0; i parseLine(String cvsLine) { + return parseLine(cvsLine, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** HIlfsfunktion für die Analyse einer Dateizeile + * @param cvsLine Zeile aus der Datei + * @param sparator Trennzeichen für die Spalten + * @return Liste von String für die einzelnen Spalten + */ + private List parseLine(String cvsLine, char separator) { + return parseLine(cvsLine, separator, DEFAULT_QUOTE); + } + + /** HIlfsfunktion für die Analyse einer Dateizeile + * @param cvsLine Zeile aus der Datei + * @param sparator Trennzeichen für die Spalten + * @param customQuote Kennung für Strings + * @return Liste von String für die einzelnen Spalten + */ + private List parseLine(String cvsLine, char separator, char customQuote) { + + List result = new ArrayList<>(); + + //if empty, return! + if (cvsLine == null && cvsLine.isEmpty()) { + return result; + } + + //ggf. Default-Value laden + if (customQuote == ' ') { + customQuote = DEFAULT_QUOTE; + } + + if (separator == ' ') { + separator = DEFAULT_SEPARATOR; + } + + StringBuffer curVal = new StringBuffer(); + boolean inQuotes = false; + boolean startCollectChar = false; + boolean doubleQuotesInColumn = false; + + char[] chars = cvsLine.toCharArray(); + + for (char ch : chars) { + + if (inQuotes) { // aktueller Text ist in Quotes eingeschlossen + startCollectChar = true; + + if (ch == customQuote) { // Quotes werden beendet, aber Achtung bei "" => Metazeichen + inQuotes = false; + if (ch == '\"') { + doubleQuotesInColumn = true; + } + + } else { + + if (ch == '\"' && !doubleQuotesInColumn) { + doubleQuotesInColumn = true; + } else { + curVal.append(ch); + doubleQuotesInColumn = false; + } + + } + } else { + if (ch == customQuote) { + + inQuotes = true; + + //Fixed : allow "" in empty quote enclosed + if (ch == '\"'){ + if(doubleQuotesInColumn) { + curVal.append('"'); + doubleQuotesInColumn = false; + } else doubleQuotesInColumn = true; + + + } + } + else { + doubleQuotesInColumn = false; + if (ch == separator) { + + result.add(curVal.toString()); + + curVal = new StringBuffer(); + startCollectChar = false; + + } else if (ch == '\r') { + //ignore LF characters + continue; + } else if (ch == '\n') { + //the end, break! + break; + } else { + curVal.append(ch); + } + } + } + + } + result.add(curVal.toString()); + return result; + } + + /** + * Sucht die Nummer einer durch Namen gegebenen Spalte. + * @param name Name der Spalte + * @return Nummer der Spalte + */ + + private int findColumnNumber(String name) { + List columns = header.getChildren(); + int i = 0; + for(Element c : columns) { + if (c.getText().toLowerCase().equals(name.toLowerCase())) { + return i; + + } + i++; + } + return -1; + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an. + */ + public void addColumn() { + Element entry = new Element("Column"); + entry.setAttribute("type", Table.UNKNOWN); + header.addContent(entry); + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an und benennt sie. + * @param title Bezeichnung der Spalte + */ + public void addColumn(String title) { + addColumn(); + Element nc = ((List)(header.getChildren())).get(header.getChildren().size()-1); + nc.setText(title); + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an und benennt und typisiert sie. + * @param title Bezeichnung der Spalte + * @param type Typ der Spalte (UNKNOWN, DOUBLE, INTEGER, FLOAT) + */ + public void addColumn(String title, String type) { + addColumn(title); + Element nc = ((List)(header.getChildren())).get(header.getChildren().size()-1); + nc.setAttribute("type", type); + } + + /** + * Löscht eine Spalte. + * @param i Nummer der Spalte. + */ + public void removeColumn(int i) { + List lines = doc.getRootElement().getChildren(); + for(Element l : lines) { + if(l.getChildren().size()>i) l.removeContent(i); + } + } + + /** + * Löscht eine Spalte + * @param name Name der Spalte + */ + public void removeColumn(String name) { + try{ + removeColumn(findColumnNumber(name)); + } catch(Exception e) { System.out.println("Unbekannter Spaltenname");} + } + + /** + * Liefert die Anzahl der Spalten in der Tabelle + * @return Anzahl der Spalten + */ + public int getColumnCount() { + return header.getChildren().size(); + } + + /** + * Liefert die Anzahl der Zeilen in der Tabelle + * @return Anzahl der Zeilen + */ + public int getRowCount() { + return doc.getRootElement().getChildren().size()-1; + } + + /** + * Löscht alle Zeilen der Tabelle. + * Die Spaltenüberschriften und Typen bleiben erhalten. + */ + public void clearRows() { + doc.getRootElement().removeChildren("Row"); + } + + /** + * Fügt eine neue Zeile an das Ende der Tabelle an. + * @return ein TableRow-Objekt für diese neue Zeile + */ + public TableRow addRow() { + Element row = new Element("Row"); + doc.getRootElement().addContent(row); + return new TableRow(doc, row); + } + + /** + * Löscht eine Zeile + * @param i Nummer der Zeile + */ + public void removeRow(int i) { + if(i rows = doc.getRootElement().getChildren(); + return new TableRow(doc, rows.get(i+1)); + } + return null; + } + + /** + * Liefert die ganze Tabelle als Array von TableRow-Objekten + * @return Array von TableRow-Objekten + */ + public TableRow[] rows() { + TableRow[] rows = new TableRow[getRowCount()]; + for(int i = 0; i < getRowCount(); i++) { + rows[i] = getRow(i); + } + return rows; + } + + /** + * Liefert den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param column Spaltennummer + * @return Wert der Zelle + */ + public int getInt(int row, int column) { + return getRow(row).getInt(column); + } + + /** + * Liefert den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param name Name der Spalte + * @return Wert der Zelle + */ + public int getInt(int row, String name) { + return getRow(row).getInt(name); + } + + /** + * Setzt den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param column Spaltennummer + * @param value neuer Wert der Zelle + */ + public void setInt(int row, int column,int value) { + getRow(row).setInt(column, value); + } + + /** + * Setzt den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(int row, String name, int value) { + getRow(row).setInt(name, value); + } + + /** + * Liefert alle Werte einer Zeile als Integer-Array. + * @param row Nummer der Zeile + * @return int-Array, dass alle Werte der Zeile enthält + */ + public int[] getIntRow(int row) { + try{ + TableRow trow = getRow(row); + int anz = getColumnCount(); + int[] r = new int[anz]; + for(int i=0; i) (header.getChildren())).get(i).getText(); + } else { + return ""; + } + } + + /** + * Liefert die Nummer einer Spalte + * @param name Name der Spalte + * @return Nummer der Spalte + */ + public int getColumn(String name) { + List columns = header.getChildren(); + int i = 0; + while (i < columns.size()) { + if (columns.get(i).getText().toLowerCase().equals(name.toLowerCase())) { + return i; + } + i++; + } // end of while + return -1; + } + + + /** + * Erzeugt eine neue Zeile mit i Spalten + * Wenn bisher nicht genügend Spalten vorhanden sind, werden automatisch neue Spalten hinzugefügt (auch zum Header) + * @param i Anzahl der Spalten + */ + private Element buildRow(int i) { + List columns = header.getChildren(); + Element entry=null; + for(int j=0; j<=i; j++) { + + if(j==columns.size()) { + Element h = new Element("Column"); + h.setAttribute("type", "unknown"); + header.addContent(h); + columns = header.getChildren(); + } + if(j==current.getChildren().size()) { + entry = new Element("Entry"); + current.addContent(entry); + + } + + } + return entry; + + } + + /** + * Erzeugt eine neue Zeile. + * Es werden genügend Spalten erzeugt, dass ein Wert in Spalte "name" eingetragen werden kann + * @param name Name der Spalte + */ + private Element buildRow(String name) { + List columns = header.getChildren(); + int i = 0; + for(Element c: columns) { + + if(c.getText().toLowerCase().equals(name.toLowerCase())) { + return buildRow(i); + } + i++; + } + return null; + + } + + /** + * Liefert den Wert einer Zelle als String + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public String getString(int i) { + if(i >= current.getContent().size()) return ""; + Element e = (Element) current.getContent(i) ; + if(e!=null) { + return e.getText(); + } else { + return ""; + } + } + + /** + * Liefert den Wert einer Zelle als String + * @param name Name der Spalte + * @return Wert der Zelle + */ + public String getString(String name) { + return getString(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als String + * @param i Nummer der Spalte + * @param text neuer Wert der Zelle + */ + public void setString(int i, String text) { + + Element e = buildRow(i); + if(e!=null) e.setText(text); + } + + /** + * Setzt den Wert einer Zelle als String + * @param name Name der Spalte + * @param text neuer Wert der Zelle + */ + public void setString(String name, String text) { + Element e = buildRow(name); + if(e!=null) e.setText(text); + } + + + /** + * Liefert den Wert einer Zelle als Int-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public int getInt(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Integer.parseInt(e.getText()); + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Int-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public int getInt(String name) { + return getInt(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Int-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(int i,int value) { + + Element e = buildRow(i); + if(e!=null) e.setText(""+value); + } + + /** + * Setzt den Wert einer Zelle als Int-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(String name, int value) { + Element e = buildRow(name); + if(e!=null) e.setText(""+value); + } + + /** + * Liefert den Wert einer Zelle als Float-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public float getFloat(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Float.parseFloat(e.getText().replace(",",".")); + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Float-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public float getFloat(String name) { + return getFloat(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Float-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setFloat(int i,float value) { + + Element e = buildRow(i); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Setzt den Wert einer Zelle als Float-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setFloat(String name, float value) { + Element e = buildRow(name); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Liefert den Wert einer Zelle als Double-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public double getDouble(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Double.parseDouble(e.getText().replace(",",".")); + + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Double-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public double getDouble(String name) { + return getDouble(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Double-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setDouble(int i,double value) { + + Element e = buildRow(i); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Setzt den Wert einer Zelle als Double-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setDouble(String name, double value) { + Element e = buildRow(name); + if(e!=null) e.setText(format.format(value)); + } + +} diff --git a/03_vorlagen_tauschordner/03_javaeditor/alg10_balkendiagramm/XML.java b/03_vorlagen_tauschordner/03_javaeditor/alg10_balkendiagramm/XML.java new file mode 100644 index 0000000..7b8491c --- /dev/null +++ b/03_vorlagen_tauschordner/03_javaeditor/alg10_balkendiagramm/XML.java @@ -0,0 +1,637 @@ +/** + * Klasse zum vereinfachten Zugriff auf XML-Dokumente + * Diese Klasse ist für den Einsatz in der Schule gedacht und soll den Schülern + * einen einfachen Zugriff auf XML-Dokumente ermöglichen. Die zur Verfügung + * stehenden Befehle sind wie in Processing realisiert. + * Dabei ist jeder Teilbaum des Dokuments wieder als XML-Objekt zugreifbar, das + * intern auf die gleiche XML-Dokumentstruktur zugreift. + * Dies ermöglicht bei unsachgemäßem Gebrauch die XML-Struktur zu zerstören. Im + * normalen Gebrauch sollte dies aber nicht relevant sein. + * + * Benötigt: jdom-1.1.3.jar + + * @author Thomas Schaller + * @version 1.0 vom 31.01.2019 + */ +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.ArrayList; +import java.io.*; + +import org.jdom.Document; +import org.jdom.Element; +import org.jdom.Attribute; +import org.jdom.JDOMException; +import org.jdom.input.SAXBuilder; +import org.jdom.output.XMLOutputter; +import org.jdom.output.Format; + +public class XML { + // Anfang Attribute + // XML-Dokumentstruktur + private Document doc; + // Zeiger auf das aktuelle Element + private Element current; + // Ende Attribute + + /** + * Erzeugt ein leeres XMLDokument + */ + public XML() { + this.doc = new Document(); + this.current = null; + } + + /** + * Erzeugt ein XML-Dokument aus einer Datei + * @param filename Dateiname der XML-Datei + */ + public XML(String filename) { + loadXML(filename); + } + + /** + * interner Konstruktor, um ein XML Objekt zu erzeugen, das auf einen bestimmten Knoten verweist + * @param doc die XML-Dokumentstruktur + * @param current Zeiger auf das aktuelle Element + */ + private XML(Document doc, Element current) { + this.doc = doc; + this.current = current; + } + + // Anfang Methoden + /** Öffnet das durch den Dateinamen gegebene Dokument + * @param filename Dateiname des XML-Files + */ + public void loadXML(String filename) { + doc = null; + File f = new File(filename); + + try { + // Das Dokument erstellen + SAXBuilder builder = new SAXBuilder(); + doc = builder.build(f); + + } catch (JDOMException e) { + e.printStackTrace(); + + } catch (IOException e) { + e.printStackTrace(); + } + // Zeiger im Baum auf Root-Element + current = doc.getRootElement(); + } + + /** Speichert den XML-Baum im angegebenen Dateinamen + * @param filename Dateiname des XML-Files + */ + public void saveXML(String filename) { + try { + // new XMLOutputter().output(doc, System.out); + XMLOutputter xmlOutput = new XMLOutputter(); + + // display nice nice + xmlOutput.setFormat(Format.getPrettyFormat()); + File f = new File(filename); + FileOutputStream outputFile = new FileOutputStream(f); + System.out.println("Speicher in : "+f.getAbsolutePath() ); + xmlOutput.output(doc, outputFile); + outputFile.close(); + System.out.println("File Saved!"); + } catch (IOException io) { + System.out.println(io.getMessage()); + } + + } + + //----------------------------------------------- Zeigerbewegungen -------------------------------------------------- + /** + * liefert ein XML-Objekt, das auf den Vaterknoten des aktuellen Elements zeigt. + * @return Vater des aktuellen Objekts. + */ + public XML getParent() { + if(current != null) { + Element parent = current.getParentElement(); + if (parent == null) { + return null; + } else { + return new XML(doc, parent); + } + } + return null; + } + + /** + * Überprüft, ob das Element irgendwelche Kinder hat oder nicht, und gibt das Ergebnis als boolean zurück. + * @return true, wenn Kinder vorhanden sind, sonst false + */ + public boolean hasChildren() { + if (current == null) { + return doc.hasRootElement(); + } else { + return current.getChildren().size()>0; + } + } + + /** + * Ermittelt die Namen aller Kinder des Elements und gibt die Namen als ein Array von Strings zurück. + * Dies ist dasselbe wie das Durchlaufen und Aufrufen von getName() auf jedem untergeordneten Element einzeln. + * @return Liste aller Namen der Kinder + */ + public String[] listChildren() { + if (current == null) { + if(doc.hasRootElement()) { + String[] names = new String[0]; + names[0] = doc.getRootElement().getName(); + return names; + } else { + return null; + } + } else { + List ch_element = current.getChildren(); + String[] names = new String[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + names[i] = ch_element.get(i).getName(); + } + return names; + } + } + + /** + * Liefert alle Kinder des Elements als Array von XML-Objekten. + * @return Array der Kinder als XML-Objekte + */ + public XML[] getChildren() { + if (current == null) { + if(doc.hasRootElement()) { + XML[] ch_xml = new XML[1]; + ch_xml[0] = new XML(doc, doc.getRootElement()); + return ch_xml; + } else { + return null; + } + } else { + List ch_element = current.getChildren(); + XML[] ch_xml = new XML[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + ch_xml[i] = new XML(doc, ch_element.get(i)); + } + return ch_xml; + } + } + + /** + * Liefert bestimmte Kinder des Elements als Array von XML-Objekten. + * Die Methode gibt dabei alle Kinder zurück, die dem angegebenen Namen entsprechen. + * @param name Name der gesuchten Kind-Objekte + * @return Array der Kinder als XML-Objekte + */ + public XML[] getChildren(String name) { + if (current == null) { + if(doc.hasRootElement()) { + XML[] ch_xml = new XML[1]; + ch_xml[0] = new XML(doc, doc.getRootElement()); + if(doc.getRootElement().getName().equals(name)){ + return ch_xml; + } else { + return null; + } + } else { + return null; + } + } else { + List ch_element = current.getChildren(name); + XML[] ch_xml = new XML[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + ch_xml[i] = new XML(doc, ch_element.get(i)); + } + return ch_xml; + } + } + + /** + * Liefert das erste Kind des Elements mit einem bestimmten Namen. + * Die Methode gibt das erste Kind zurück, das dem angegebenen Namen entsprechen. + * @param name Name des gesuchten Kind-Objektes + * @return Kind als XML-Objekt + */ + + public XML getChild(String name) { + if (current == null) { + Element e = doc.getRootElement(); + if (e.getName().equals(name)) { + return new XML(doc, e); + } else { + return null; + } + } else { + String[] names = name.split("/"); + Element e = current; + int i = 0; + while(i < names.length) { + e = e.getChild(names[i]); + if (e==null) return null; + i++; + } + return new XML(doc, e); + } + } + + /** + * Liefert das i. Kind des Elements. + * Die Methode gibt das i. Kind des aktuellen Elements zurück. + * @param i Nummer des Kindes + * @return Kind als XML-Objekt + */ + public XML getChild(int i) { + if (current == null) { + return new XML(doc, doc.getRootElement()); + } else { + List ch_element = current.getChildren(); + if (i>=ch_element.size()) return null; + return new XML(doc, ch_element.get(i)); + } + } + + //--------------------------------------------------- Methoden für das aktuelle Element ------------------------------------------------- + /** + * Frage den Namen des aktuellen Elements ab + * @return Namen des Elements + */ + public String getName() { + if (current==null) return ""; + return current.getName(); + } + + /** + * Setze den Namen des aktuellen Elements. + * @param name Neuer Name des Elements + */ + public void setName(String name) { + if (current==null) return; + current.setName(name); + } + + /** + * liefert die Anzahl der Attribute eines Elements. + * @return Anzahl des Attribute + */ + public int getAttributeCount() { + if (current == null) return 0; + return current.getAttributes().size(); + } + + /** + * liefert zurück, ob das aktuelle Element Attribute hat . + * @return true, wenn es Attribute gibt + */ + public boolean hasAttribute() { + if (current == null) return false; + return current.getAttributes().size()>0; + } + + /** + * Ruft alle Attribute des angegebenen Elements ab und gibt sie als Array von Strings zurück. + * @return Liste der Attributnamen + */ + public String[] listAttributes() { + if (current == null) return null; + List attr = current.getAttributes(); + String[] names = new String[attr.size()]; + for(int i=0; i < attr.size() ; i++) { + names[i] = attr.get(i).getName(); + } + return names; + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs + */ + public String getString(String attribute) { + if (current==null) return ""; + return current.getAttributeValue(attribute); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs + */ + public String getString(String attribute, String defaultValue) { + if (current==null) return defaultValue; + return current.getAttributeValue(attribute,defaultValue); + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param text neuer Wert des Attributs + */ + public void setString(String attribute, String text) { + if (current==null) return; + current.setAttribute(attribute, text); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Integer-Zahl + */ + public int getInt(String attribute) { + if (current==null) return 0; + try{ + int i = Integer.parseInt(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als Integer-Zahl + */ + public int getInt(String attribute, int defaultValue) { + if (current==null) return defaultValue; + try{ + int i = Integer.parseInt(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setInt(String attribute, int value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Float-Zahl + */ + public float getFloat(String attribute) { + if (current==null) return 0; + try{ + float i = Float.parseFloat(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als Float-Zahl + */ + public float getFloat(String attribute, float defaultValue) { + if (current==null) return defaultValue; + try{ + float i = Float.parseFloat(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setFloat(String attribute, float value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Double-Zahl + */ + public double getDouble(String attribute) { + if (current==null) return 0; + try{ + double i = Double.parseDouble(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + +/** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als double-Zahl + */ + public double getDouble(String attribute, double defaultValue) { + if (current==null) return defaultValue; + try{ + double i = Double.parseDouble(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setDouble(String attribute, double value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt den Inhalt/Text des aktuellen Elements ab + * @return Inhalt des Elements + */ + public String getContent() { + if ( current==null) return ""; + + return current.getText(); + } + + /** + * Fragt den Inhalt/Text des aktuellen Elements ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardtext + * @return Inhalt des Elements + */ + public String getContent(String defaultValue) { + if ( current==null) return defaultValue; + String t = current.getText(); + if(t.equals("")) t = defaultValue; + return t; + } + + /** + * Setzt den Inhalt/Text des aktuellen Elements + * @param text Neuer Inhalt des Elements + */ + public void setContent(String text) { + if ( current==null) return; + current.setText(text); + } + + + /** + * Fragt den Inhalt des aktuellen Elements als Integerzahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ public int getIntContent(int defaultValue) { + if ( current==null) return defaultValue; + try{ + int i = Integer.parseInt(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Integerzahl ab + * @return Inhalt des Elements + */ + public int getIntContent() { + if ( current==null) return 0; + try{ + int i = Integer.parseInt(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setIntContent(int value) { + if ( current==null) return; + current.setText(""+value); + } + + + /** + * Fragt den Inhalt des aktuellen Elements als Floatzahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ + public float getFloatContent(float defaultValue) { + if ( current==null) return defaultValue; + try{ + float i = Float.parseFloat(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Floatzahl ab + * @return Inhalt des Elements + */ + public float getFloatContent() { + if ( current==null) return 0; + try{ + float i = Float.parseFloat(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setFloatContent(float value) { + if ( current==null) return; + current.setText(""+value); + } + +/** + * Fragt den Inhalt des aktuellen Elements als Doublezahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ + public double getDoubleContent(double defaultValue) { + if ( current==null) return defaultValue; + try{ + double i = Double.parseDouble(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Doublezahl ab + * @return Inhalt des Elements + */ + public double getDoubleContent() { + if ( current==null) return 0; + try{ + double i = Double.parseDouble(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setDoubleContent(double value) { + if ( current==null) return; + current.setText(""+value); + } + + + // ----------------------------------------------- XML-Struktur aufbauen ------------------------------------------------ + /** Erzeuge neues Element nach der aktuellen Position und setze dieses als aktuelles Element + * @param name Name des neuen Elements + * @return neues Element als XML-Objekt + */ + public XML addChild(String name) { + Element e = new Element(name); + if(current == null){ // man ist auf Root-Ebene + doc.setRootElement(e); + + } + else { + current.addContent(e); + } // end of if-else + return new XML(doc, e); + } + + /** + * liefert das aktuelle Element als jdom-Element-Objekt + * @return aktuelles Element + */ + private Element getCurrent() { + return current; + } + + /** + * löscht ein Kind des aktuellen Knotens. + * Ist kid kein Kind des aktuellen Elements passiert gar nichts. + * @param kid XML-Objekt des Kindes + */ + public void removeChild(XML kid) { + if (current == null) return; + Element e = kid.getCurrent(); + int index = current.indexOf(e); + if(index >= 0) { current.removeContent(e);} + } + +} diff --git a/03_vorlagen_tauschordner/03_javaeditor/alg10_balkendiagramm/jdom-1.1.3.jar b/03_vorlagen_tauschordner/03_javaeditor/alg10_balkendiagramm/jdom-1.1.3.jar new file mode 100644 index 0000000..a287727 Binary files /dev/null and b/03_vorlagen_tauschordner/03_javaeditor/alg10_balkendiagramm/jdom-1.1.3.jar differ diff --git a/03_vorlagen_tauschordner/03_javaeditor/alg11_balkendiagramm_zufall/Balkendiagramm.java b/03_vorlagen_tauschordner/03_javaeditor/alg11_balkendiagramm_zufall/Balkendiagramm.java new file mode 100644 index 0000000..dbb6ae6 --- /dev/null +++ b/03_vorlagen_tauschordner/03_javaeditor/alg11_balkendiagramm_zufall/Balkendiagramm.java @@ -0,0 +1,67 @@ +import java.awt.Font; + +/** + * Balkendiagramm für int-Array, Zahlen werden zufällig erzeugt. + * + * @author Schaller + * @version 29.11.18 + */ +public class Balkendiagramm extends Picture + +{ + // Liste mit allen Werten + int[] zahlen; + + // Schriften + Font kleineSchrift; + Font grosseSchrift; + + public Balkendiagramm() { + size(1000, 700); + background(0); + kleineSchrift = new Font( Font.SANS_SERIF, Font.PLAIN, 12 ); + grosseSchrift = new Font( Font.SANS_SERIF, Font.PLAIN, 20 ); + + // Zufallszahlen erzeugen und anzeigen + erzeugeZufallsarray(20); + + zeichneBalken(); + } + + public int getZufallszahl(int min, int max) { + java.util.Random r = new java.util.Random(); + return r.nextInt(max-min+1)+min; + } + + public void erzeugeZufallsarray(int laenge) { + // ToDo: Neues Array der richtigen Länge erzeugen + + // ToDo: Jedes Element mit einer Zufallszahl belegen + + } + + public void zeichneBalken() { + clear(); + + // Überschrift + fill(255,255,255); + textFont(grosseSchrift); + text("Balkendiagramm", 2, 20); + textFont(kleineSchrift); + + // Alle Einträge darstellen + for (int i = 0; i< zahlen.length; i++) { + + fill(20,30,170); + + // Balkendiagramm zeichnen + rect(120, 25+i*15, zahlen[i]+1, 13); + + // Beschriftung + fill(255,255,255); + text("i="+i, 2, 35+i*15); + text("zahlen["+i+"]="+zahlen[i], 30, 35+i*15); + } + } + +} diff --git a/03_vorlagen_tauschordner/03_javaeditor/alg11_balkendiagramm_zufall/BalkendiagrammGUI.java b/03_vorlagen_tauschordner/03_javaeditor/alg11_balkendiagramm_zufall/BalkendiagrammGUI.java new file mode 100644 index 0000000..97d6e5e --- /dev/null +++ b/03_vorlagen_tauschordner/03_javaeditor/alg11_balkendiagramm_zufall/BalkendiagrammGUI.java @@ -0,0 +1,66 @@ +import java.awt.*; +import java.awt.event.*; +import javax.swing.*; +import javax.swing.event.*; + +/** + * + * description + * + * @version 1.0 from 06.10.2018 + * @author + */ + +public class BalkendiagrammGUI extends JFrame { + // Anfang Attribute + private JButton bZeichnen = new JButton(); + private PictureViewer imagePanel1 = new PictureViewer(); + + // Ende Attribute + + public BalkendiagrammGUI (String title) { + super (title); + setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); + int frameWidth = 768; + int frameHeight = 551; + setSize(frameWidth, frameHeight); + Dimension d = Toolkit.getDefaultToolkit().getScreenSize(); + int x = (d.width - getSize().width) / 2; + int y = (d.height - getSize().height) / 2; + setLocation(x, y); + Container cp = getContentPane(); + cp.setLayout(null); + // Anfang Komponenten + bZeichnen.setBounds(256, 456, 273, 33); + bZeichnen.setText("Balkendiagramm zeichnen"); + bZeichnen.setMargin(new Insets(2, 2, 2, 2)); + bZeichnen.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent evt) { + bZeichnen_ActionPerformed(evt); + } + }); + cp.add(bZeichnen); + imagePanel1.setBounds(24, 16, 705, 409); + cp.add(imagePanel1); + + // Ende Komponenten + setResizable(false); + setVisible(true); + } + + // Anfang Methoden + public void bZeichnen_ActionPerformed(ActionEvent evt) { + Balkendiagramm bild = new Balkendiagramm(); + imagePanel1.setImage(bild); + imagePanel1.getViewport().repaint(); + imagePanel1.getVerticalScrollBar().setValue(1); + imagePanel1.getVerticalScrollBar().setValue(0); + } // end of bZeichnen_ActionPerformed + + // Ende Methoden + + public static void main(String[] args) { + new BalkendiagrammGUI("BalkendiagrammGUI"); + } +} + diff --git a/03_vorlagen_tauschordner/03_javaeditor/alg11_balkendiagramm_zufall/BalkendiagrammGUI.jfm b/03_vorlagen_tauschordner/03_javaeditor/alg11_balkendiagramm_zufall/BalkendiagrammGUI.jfm new file mode 100644 index 0000000..707d571 --- /dev/null +++ b/03_vorlagen_tauschordner/03_javaeditor/alg11_balkendiagramm_zufall/BalkendiagrammGUI.jfm @@ -0,0 +1,103 @@ +object BalkendiagrammGUI: TFGUIForm + Left = 761 + Top = 237 + BorderIcons = [biSystemMenu] + Caption = 'BalkendiagrammGUI' + ClientHeight = 512 + ClientWidth = 752 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -10 + Font.Name = 'MS Sans Serif' + Font.Style = [] + FormStyle = fsStayOnTop + OldCreateOrder = True + Position = poDesigned + ShowHint = True + Visible = True + OnClose = FormClose + OnCloseQuery = FormCloseQuery + OnResize = FormResize + FrameType = 5 + Resizable = False + Undecorated = False + Background = clBtnFace + PixelsPerInch = 96 + TextHeight = 13 + object bOptischeTauschungzeichnen: TJButton + Tag = 4 + Left = 256 + Top = 456 + Width = 273 + Height = 33 + Hint = 'jButton1' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Dialog' + Font.Style = [fsBold] + Foreground = 3355443 + Background = 15658734 + actionPerformed = 'bOptischeTauschungzeichnen_ActionPerformed' + Text = 'Optische T'#228'uschung zeichnen' + Mnemonic = 0 + DisplayedMnemonicIndex = 0 + Selected = False + BorderPainted = True + FocusPainted = False + ContentAreaFilled = True + HorizontalAlignment = CENTER + VerticalAlignment = CENTER + HorizontalTextPosition = RIGHT + VerticalTextPosition = CENTER + IconTextGap = 4 + RolloverEnabled = False + Border.BorderType = NoBorder + Border.LineColor = clBlack + Border.LineThickness = 0 + Border.LineRounded = False + Border.EtchHighlightColor = clBlack + Border.EtchShadowColor = clBlack + Border.Etchtype = 0 + Border.BevelHighlightColor = clBlack + Border.BevelShadowColor = clBlack + Border.Beveltype = 0 + Border.MatteColor = clBlack + Border.MatteTop = 0 + Border.MatteLeft = 0 + Border.MatteBottom = 0 + Border.MatteRight = 0 + end + object imagePanel1: TJPanel + Tag = 38 + Left = 24 + Top = 16 + Width = 705 + Height = 409 + Hint = 'imagePanel1' + HelpKeyword = 'ImagePanel' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Dialog' + Font.Style = [fsBold] + Foreground = 3355443 + Background = clBtnFace + Border.BorderType = NoBorder + Border.LineColor = clBlack + Border.LineThickness = 0 + Border.LineRounded = False + Border.EtchHighlightColor = clBlack + Border.EtchShadowColor = clBlack + Border.Etchtype = 0 + Border.BevelHighlightColor = clBlack + Border.BevelShadowColor = clBlack + Border.Beveltype = 0 + Border.MatteColor = clBlack + Border.MatteTop = 0 + Border.MatteLeft = 0 + Border.MatteBottom = 0 + Border.MatteRight = 0 + end +end diff --git a/03_vorlagen_tauschordner/03_javaeditor/alg11_balkendiagramm_zufall/Picture.java b/03_vorlagen_tauschordner/03_javaeditor/alg11_balkendiagramm_zufall/Picture.java new file mode 100644 index 0000000..8df3d55 --- /dev/null +++ b/03_vorlagen_tauschordner/03_javaeditor/alg11_balkendiagramm_zufall/Picture.java @@ -0,0 +1,699 @@ +import java.awt.image.*; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.BasicStroke; +import java.util.Vector; +import javax.imageio.*; +import java.io.*; +import java.awt.*; +import javax.swing.*; +import java.util.Random; +import java.awt.geom.AffineTransform; +/** + * + * Bildklasse für die Simulation von Processing-Befehlen + * + * Diese Klasse stellt ein BufferedImage bereit, in das mit Processing-Befehlen gezeichnet + * werden kann. + * Zusätzlich kann ein Bildanzeiger über jede Änderung des Bildes informiert werden, + * um "Zurück"-Befehle zu ermöglichen. Der Bildanzeiger ist entweder eine normale Java + * ScrollPane oder ein Actor aus Greenfoot. + * Die Dokumentation der einzelnen Zeichenmethoden ist der Processing-Reference + * (https://processing.org/reference/ steht unter CC-Lizenz: https://creativecommons.org/) + * entnommen und mit Deepl.com ins Deutsche übersetzt. + * + * @version 1.0 from 23.01.2019 + * @author Thomas Schaller (ZPG Informatik Klasse 9) + */ + +public class Picture{ + + // Einstellungmöglichkeiten für das Zeichnen von Rechtecken und Ellipsen + // RADIUS = Mittelpunkt+Radius wird gegeben, CENTER = Mittelpunkt und Breite/Höhe wird gegeben, + // CORNER = Linke obere Ecke + Breite/Höhe, CORNERS = Linke obere und rechte untere Ecke + public static final int RADIUS = 1; + public static final int CENTER = 2; + public static final int CORNER = 3; + public static final int CORNERS = 4; + + // gespeichertes Bild, + private BufferedImage image; + + // aktuelle Farbeinstellungen + private Color background; + private Color pencolor; + private Color fillcolor; + + // aktuelle Stiftdicke + private double stroke; + + // akkteller Koordinatenmodus von Rechtecken und Ellipsen + private int ellipseMode = CENTER; + private int rectMode = CORNER; + + // aktueller Font + private Font textfont = null; + + // muss ein Bildanzeiger benachrichtigt werden + private PictureViewer observer = null; + private boolean autorefresh = true; + + /** + * Erzeugt ein Bild mit Standardgröße 500x400 + */ + public Picture() { + this(500,400); + } + + /** + * Erzeugt ein Bild der angegeben Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public Picture(int width, int height) { + this(width,height, "D0D0D0"); + } + + /** + * Erzeugt ein Bild aus einer Datei + * @param filename Dateiname des Bildes + */ + public Picture(String filename) { + load(filename); + } + + /** + * Erzeugt ein Bild der angegebenen Größe mit festgelegtem Hintergrund + * @param width Breite des Bildes + * @param height Höhe des Bildes + * @param background Farbe des Hintergrunds + */ + public Picture(int width, int height, String background) { + this.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + this.background = decode(background); + this.pencolor = new Color(0,0,0); + this.stroke = 1; + this.fillcolor = null; + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(this.background); + g.fillRect(0,0,width-1, height-1); + } + + /** + * Legt fest, wer das Bild anzeigt. + * Diese ermöglicht die Benachrichtung des Observers, wenn sich das Bild ändert. + * @param observer Anzeiger des Bildes + */ + + public void setObserver(PictureViewer observer) { + this.observer= observer; + } + + /** + * Direktes Setzen des Bildes (für interne Zwecke) + * @param b Bild, das gespeichert werden soll. + */ + public void setImage(BufferedImage b) { + image = b; + } + + /** + * Direktes Abfragen des Bildes (für interne Zwecke) + * @return Bild, das gerade gespeichert ist. + */ + public BufferedImage getImage() { + return image; + } + + /** + * Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + * Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + * der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu. + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public void size(int width, int height){ + pushImage(); + this.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(background); + g.fillRect(0,0,width-1, height-1); + } + + /** + * Liefert die Breite des Bildes zurück. + * @return Breite des Bildes + */ + public int getWidth() { + return image.getWidth(); + } + + /** + * Liefert die Höhe des Bildes zurück. + * @return Höhe des Bildes + */ + public int getHeight() { + return image.getHeight(); + } + + + /** + * Erzeugt eine Kopie des Bildes und übergibt sie an den Observer (falls existent), damit dieser die Versionen speichern kann + */ + private void pushImage() { + if(observer != null) { + observer.pushImage(); + } + } + + + /** + * Legt fest, ob nach jedem Zeichenbefehl automatisch das Bild auch in + * der Oberfläche aktualisiert wird. Die Einstellung "false" beschleunigt + * das Zeichnen aufwändiger Bilder und verhindert "Flackern". + * Das Neuzeichnen kann durch die Methode "refresh" gezielt ausgelöst werden. + * @param autorefresh true = nach jedem Zeichenbefehl die Anzeige aktualisieren, false= nur durch die Methode refresh neu zeichnen + */ + public void setAutoRefresh(boolean autoRefresh) { + this.autorefresh = autoRefresh; + } + + + /** + * Auch die anzeigenden Klasse wird zum Neuzeichnen aufgefordert. + */ + private void repaint() { + if(observer != null && autorefresh) { + observer.repaint(); + } + } + + /** + * Auch die anzeigenden Klasse wird zum Neuzeichnen aufgefordert. + */ + public void refresh() { + if(observer != null) { + observer.repaint(); + } + } + + // ----------------------------------------- Zeichenfunktionen ----------------------------------------------- + /** + * Löscht den Inhalt des Bildes. + * Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt. + */ + + public void clear(){ + pushImage(); + image = new BufferedImage(image.getWidth(), image.getHeight(), image.getType()); + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(background); + g.fillRect(0,0,image.getWidth()-1, image.getHeight()-1); + repaint(); + } + + /** + * Konvertiert die in einem bestimmten Modus gegebenen Koordinaten in die Java-übliche Links_Oben_Breite_Höhe Version + * Die Änderungen werden direkt im Array vorgenommen + * @param coord Array mit vier Koordinateneinträgen im gegebenen Modus + * @param mode Modus der Koordinaten (CORNER, CORNERS, RADIUS oder CENTER) + */ + private void convert(int[] coord, int mode) { + switch(mode) { + case CORNER: break; + case CORNERS: coord[2] -= coord[0]; coord[3] -= coord[1]; break; + case RADIUS: coord[2] *= 2; coord[3] *=2; + case CENTER: coord[0] -= coord[2]/2; coord[1] -= coord[3]/2; + } + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + * Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + * Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void rectMode(int mode) { + rectMode = mode; + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + * Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + * Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als Breite und Höhe der Form. + * ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void ellipseMode(int mode) { + ellipseMode = mode; + } + + + + /** + * Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + * Um eine Linie einzufärben, verwenden Sie die {@link #stroke(int, int, int) stroke()} Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + * Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + * {@link #strokeWeight(double) strokeWeight()} geändert werden. + * @param x1 x-Koordinate des 1. Punktes + * @param y1 y-Koordinate des 1. Punktes + * @param x2 x-Koordinate des 2. Punktes + * @param y2 y-Koordinate des 2. Punktes + */ + public void line(int x1, int y1, int x2, int y2) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + if (stroke > 0) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawLine(x1, y1, x2, y2); + } + repaint(); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, rectMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillRect(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawRect(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, ellipseMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillOval(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawOval(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + int px[] = {x1, x2, x3}; + int py[] = {y1, y2, y3}; + polygon(px, py); + + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + + int px[] = {x1, x2, x3, x4}; + int py[] = {y1, y2, y3, y4}; + polygon(px, py); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + + public void polygon(int[] x, int[] y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(fillcolor != null) { + + g.setColor(fillcolor); + g.fillPolygon(x,y, y.length); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawPolygon(x, y, x.length); + } + repaint(); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + ellipse(x,y,1, 1); + + } + + // ----------------------------------------- Schriftdarstellung ----------------------------------------------- + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param s Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String s, int x, int y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(pencolor != null) { + g.setColor(fillcolor); + g.setStroke(new BasicStroke((float) stroke)); + g.setFont(textfont); + g.drawString(s, x, y); + } + repaint(); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + this.textfont = font; + } + + + // ----------------------------------------- Farbfestlegungen ----------------------------------------------- + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(String color) { + try{ + return new Color( + Integer.valueOf( color.substring( 0, 2 ), 16 ), + Integer.valueOf( color.substring( 2, 4 ), 16 ), + Integer.valueOf( color.substring( 4, 6 ), 16 ) ); + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(int color) { + try{ + if(color >=0 && color < 256) { + return new Color(color,color,color); + } else { + int r = color / 0x010000 % 0xFF; + int g = color / 0x000100 % 0xFF; + int b = color % 0xFF; + System.out.println(""+r+","+g+","+b); + return new Color(r, g, b ); + } + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + this.pencolor = decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + this.pencolor=decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + this.pencolor = new Color(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + this.pencolor = null; + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + this.stroke = width; + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + this.fillcolor = decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + this.fillcolor=decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + this.fillcolor = new Color(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + this.fillcolor = null; + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + if(c < 256) { + this.background=new Color(c,c,c); + } else { + int r = c / 0x010000; + int g = c / 0x000100 % 0xFF; + int b = c % 0xFF; + this.background= new Color(r, g, b ); + } + + this.clear(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + this.background=new Color(r,g,b); + this.clear(); + } + + +// ----------------------------------------- Dateioperationen ----------------------------------------------- + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + try{ + this.image = ImageIO.read(new File(filename)); + this.background = decode("D0D0D0"); + this.pencolor = new Color(0,0,0); + this.fillcolor = null; + this.stroke = 1; + this.repaint(); + + } catch(Exception e) { + System.out.println("Fehler beim Einlesen der Bilddatei"); + } + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + try{ + String[] fn = filename.split("\\."); + if (fn.length== 1) { + ImageIO.write(image, "PNG", new File(filename+".png")); + } else { + + if (fn.length == 2 && (fn[1].toUpperCase().equals("PNG") || + fn[1].toUpperCase().equals("GIF"))){ + ImageIO.write(image, fn[1], new File(filename)); + }else { + System.out.println("Unbekanntes Bildformat"); + } + } + + } catch(Exception e) { + System.out.println("Fehler beim Speichern"); + } + } + + +// ----------------------------------------- Sonstiges ----------------------------------------------- + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + + public Color[][] getPixelArray() { + Color[][] pixel = new Color[image.getWidth()][image.getHeight()]; + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + pixel[x][y] = new java.awt.Color(image.getRGB(x,y)); + } + } + return pixel; + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + size(pixel.length,pixel[0].length); + Graphics2D g = (Graphics2D) image.getGraphics(); + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + g.setColor(pixel[x][y]); + g.fillRect(x, y, 1, 1); + } + } + repaint(); + } + + /** + * Hilfsfunktion zum Verzögern der Ausgabe + * @param millis Wartezeit in Millisekunden + */ + public void delay(int millis) { + try{ + Thread.sleep(millis); + + } catch(Exception e) { + + } + + } + + + +} diff --git a/03_vorlagen_tauschordner/03_javaeditor/alg11_balkendiagramm_zufall/PictureViewer.java b/03_vorlagen_tauschordner/03_javaeditor/alg11_balkendiagramm_zufall/PictureViewer.java new file mode 100644 index 0000000..9e6b151 --- /dev/null +++ b/03_vorlagen_tauschordner/03_javaeditor/alg11_balkendiagramm_zufall/PictureViewer.java @@ -0,0 +1,505 @@ +/** + * Zeigt ein Bild in einem Scrollbereich an. + * Es ist möglich das Bild zu zoomen und mehrere Versionen des Bildes zu speichern, um eine "Rückgängig" Operation durchzuführen. + * @author Thomas Schaller + * @version 1.0 vom 01.02.2019 + */ + +import java.awt.*; +import java.awt.event.*; +import javax.swing.*; +import java.awt.image.*; +import java.util.Vector; + +public class PictureViewer extends JScrollPane +{ + + // das aktuelle Bild + private Picture picture; + + // Bilder für den Züruck-Modus speichern + private static final int ANZ_BACK = 20; + private Vector history; + + // Zeichenfläche + private ImageIcon scrollImageIcon; + private JLabel imageLabel; + + // Zoom Faktor + private double zoomFactor; + public static final int FIT = -1; + public static final int NORMAL = 1; + + + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der Größe 1000x1000 + */ + public PictureViewer() { + this(1000,1000); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public PictureViewer(int width, int height) { + this(width,height, "D0D0D0"); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + * @param background Farbe des Hintergrunds als HEX-String (z.B. "FF3A45") + */ + public PictureViewer(int width, int height, String background) { + this(new Picture(width,height, background)); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild aus einer Bilddatei + * @param filename Name des Bildes + */ + public PictureViewer(String filename) { + this(new Picture(filename)); + } + + /** + * Erzeugt ein ScrollPanel und zeigt das Bild-Objekt an + * @param picture anzuzeigendes Bild + */ + public PictureViewer(Picture picture) + { + this.picture=picture; + + zoomFactor=1; + + scrollImageIcon = new ImageIcon(picture.getImage().getScaledInstance(picture.getImage().getWidth(), picture.getImage().getHeight(), Image.SCALE_FAST)); + imageLabel = new JLabel(scrollImageIcon); + imageLabel.setVerticalAlignment(JLabel.CENTER); + imageLabel.setHorizontalAlignment(JLabel.CENTER); + setViewportView(imageLabel); + + this.setBorder(BorderFactory.createLineBorder(Color.black)); + picture.setObserver(this); + history = new Vector(); + + } + + /** + * Setzt das anzuzeigende Bild neu + * @param picture anzuzeigendes Bild + */ + public void setImage(Picture picture) { + this.history = new Vector(); + this.picture = picture; + setZoom(NORMAL); + } + + /** + * Speichert das übergebene Bild in der History. + * @param b zu speicherndes Bild + */ + public void pushImage() { + if( this.ANZ_BACK > 0) { + if(history.size() == this.ANZ_BACK) { + history.removeElementAt(0); + } + + BufferedImage b = new BufferedImage(picture.getWidth(), picture.getHeight(), picture.getImage().getType()); + Graphics g = b.getGraphics(); + g.drawImage(picture.getImage(), 0, 0, null); + g.dispose(); + + history.add(b); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + private void popImage() { + int anz = history.size(); + if(anz>0) { + BufferedImage img = history.get(anz-1); + history.removeElementAt(anz-1); + picture.setImage(img); + setZoom(zoomFactor); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + public void back() { + popImage(); + } + + /** + * Setzt das angezeigt Bild neu und beachtet dabei den Zoomfaktor. + */ + public void repaint() { + if( picture != null) { + double factor= zoomFactor; + if (zoomFactor == FIT) { + double factorw = ((double) getWidth()-2) / picture.getWidth(); + double factorh = ((double) getHeight()-2) / picture.getHeight(); + factor = Math.min(factorw, factorh); + } + int width = (int) (picture.getWidth()*factor); + int height = (int) (picture.getHeight()*factor); + + + + scrollImageIcon.setImage(picture.getImage().getScaledInstance(width, height, Image.SCALE_DEFAULT)); + revalidate(); + } + } + + /** + * Setzt den Zoom-Faktor für das Bild. + * Als Zoomfaktor sind auch die Konstanten Bildanzeiger.FIT (auf Bildschirmgröße zoomen) und Bildanzeiger.NORMAL (100%) möglich. + * @param factor Zoomfaktor (1.0 = 100%). + */ + public void setZoom(double factor) + { + zoomFactor = factor; + repaint(); + } + + + // Wrappermethoden + /** + * Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + * Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + * der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu. + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public void size(int width, int height){ + picture.size(width, height); + } + + /** + * Liefert die Breite des Bildes zurück. + * @return Breite des Bildes + */ + public int getImageWidth() { + return picture.getWidth(); + } + + /** + * Liefert die Höhe des Bildes zurück. + * @return Höhe des Bildes + */ + public int getImageHeight() { + return picture.getHeight(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + picture.background(c); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + picture.background(r,g,b); + } + + /** + * Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + * Um eine Linie einzufärben, verwenden Sie die {@link #stroke(int, int, int) stroke()} Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + * Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + * {@link #strokeWeight(double) strokeWeight()} geändert werden. + * @param x1 x-Koordinate des 1. Punktes + * @param y1 y-Koordinate des 1. Punktes + * @param x2 x-Koordinate des 2. Punktes + * @param y2 y-Koordinate des 2. Punktes + */ + public void line(int x1, int y1, int x2, int y2) { + picture.line(x1,y1,x2,y2); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + picture.rect(a,b,c,d); + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + picture.ellipse(a,b,c,d); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + picture.triangle(x1,y1,x2,y2,x3,y3); + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + picture.quad(x1,y1,x2,y2,x3,y3,x4,y4); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + public void polygon(int[] x, int[] y) { + picture.polygon(x,y); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + picture.point(x,y); + + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + * Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + * Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void rectMode(int mode) { + picture.rectMode(mode); + } + + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + * Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + * Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als Breite und Höhe der Form. + * ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void ellipseMode(int mode) { + picture.ellipseMode(mode); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + picture.stroke(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + picture.noStroke(); + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + picture.strokeWeight(width); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + picture.fill(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + picture.noFill(); + } + + /** + * Löscht den Inhalt des Bildes. + * Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt. + */ + public void clear(){ + picture.clear(); + } + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + picture.load(filename); + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + picture.save(filename); + } + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param t Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String t, int x, int y) { + picture.text(t,x,y); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + picture.textFont(font); + } + + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + public Color[][] getPixelArray() { + return picture.getPixelArray(); + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + picture.setPixelArray(pixel); + } + + + +} diff --git a/03_vorlagen_tauschordner/03_javaeditor/alg11_balkendiagramm_zufall/Table.java b/03_vorlagen_tauschordner/03_javaeditor/alg11_balkendiagramm_zufall/Table.java new file mode 100644 index 0000000..ee5a211 --- /dev/null +++ b/03_vorlagen_tauschordner/03_javaeditor/alg11_balkendiagramm_zufall/Table.java @@ -0,0 +1,894 @@ +/** + * Die Klasse Table vereinfacht den Zugriff auf CSV-Dateien. + * Die Klassen Table und TableRow ermöglichen einen einfachen Zugriff auf tabellenbasierte + * Dokumente. + * + * @author Thomas Schaller + * @version 1.0 vom 01.02.2019 + */ + +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.ArrayList; +import java.io.*; +import java.util.Scanner; + +import org.jdom.Document; +import org.jdom.Element; +import org.jdom.Attribute; +import org.jdom.JDOMException; +import org.jdom.input.SAXBuilder; +import org.jdom.output.XMLOutputter; +import org.jdom.output.Format; + +public class Table +{ + // Standardtrennzeichen für Spalten + private static final char DEFAULT_SEPARATOR = ';'; + // Standardmarkierung für Texte + private static final char DEFAULT_QUOTE = '"'; + // Standardtrennzeichen für Dezimalzahlen + private static final char DEFAULT_COMMA = ','; + + // mögliche Spaltentypen + private static final String UNKNOWN ="UNKOWN"; + private static final String INT = "INTEGER"; + private static final String DOUBLE = "DOUBLE"; + private static final String FLOAT = "FLOAT"; + + // interne Verwaltung des Dokuments als JDOM-Document-Objekt + private Document doc; + // Verweis auf Element für Kopfzeile + private Element header; + // Ende Attribute + + /** + * Erzeugt leeres Tabellen-Dokument. + */ + public Table() { + this.doc = new Document(); + doc.setRootElement(new Element("CSV-Data")); + this.header = new Element("Header"); + doc.getRootElement().addContent(header); + } + + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei und erstellt ein Tabellenobjekt mit seinen Werten. + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public Table(String filename, String options, char separator, char quote) { + loadCSV(filename, options, separator, quote); + } + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei und erstellt ein Tabellenobjekt mit seinen Werten (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + */ + public Table(String filename, String options) { + loadCSV(filename, options); + } + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei ohne Kopfzeile und erstellt ein Tabellenobjekt mit seinen Werten (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public Table(String filename) { + loadCSV(filename); + } + + // Anfang Methoden + /** + * Liest den Inhalt einer CSV-Datei ohne Kopfzeile (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public void loadCSV(String filename) { + loadCSV(filename, ""); + } + + /** + * Liest den Inhalt einer CSV-Datei (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + */ + public void loadCSV(String filename, String options) { + loadCSV(filename, options, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** + * Liest den Inhalt einer CSV-Datei. + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public void loadCSV(String filename, String options, char separator, char quote) { + doc = new Document(); + doc.setRootElement(new Element("CSV-Data")); + header = new Element("Header"); + doc.getRootElement().addContent(header); + try { + File f = new File(filename); + Scanner scanner = new Scanner(new File(filename)); + if(options.toLowerCase().contains("header") && scanner.hasNext()) { + List entries = parseLine(scanner.nextLine(), separator, quote); + int i= 0; + for(String s : entries) { + Element entry = new Element("Column"); + header.addContent(entry); + entry.setText(s); + entry.setAttribute("type", "unknown"); + i++; + } + } + + List cols = header.getChildren(); + + while (scanner.hasNext()) { + Element line = new Element("Row"); + doc.getRootElement().addContent(line); + List entries = parseLine(scanner.nextLine(), separator, quote); + int i= 0; + + for(String s : entries) { + + if(i==cols.size()) { + Element entry = new Element("Column"); + entry.setAttribute("type", "unknown"); + header.addContent(entry); + cols = header.getChildren(); + } + + Element entry = new Element("Entry"); + entry.setText(s); + line.addContent(entry); + i++; + } + } + scanner.close(); + + } catch (Exception e) { + System.out.println("Fehler beim Lesen der CSV-Datei"); + } + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei ohne Kopfzeile (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public void saveCSV(String filename) { + saveCSV(filename, ""); + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthalten, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile haben soll, + * dann lassen Sie einfach die Option "header" weg. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile haben soll. + * @param filename Dateiname der CSV-Datei. + */ + public void saveCSV(String filename, String options) { + saveCSV(filename, options, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei. + * Wenn die Datei eine Kopfzeile enthalten, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile haben soll, + * dann lassen Sie einfach die Option "header" weg. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile haben soll. + * @param filename Dateiname der CSV-Datei. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public void saveCSV(String filename, String options, char separator, char quote){ + try{ + File f = new File(filename); + PrintStream outputFile = new PrintStream (f); + System.out.println("Speicher in : "+f.getAbsolutePath()); + List columns = header.getChildren(); + String sq = ""+quote; + String ss = ""+separator; + if(quote =='"') sq = "\""; + if(separator =='"') ss = "\""; + + if(options.toLowerCase().contains("header")) { + String h = ""; + for(Element c : columns) { + h += ss + sq + c.getText()+sq; + } + outputFile.println(h.substring(1)); + } + for(int i = 0; i parseLine(String cvsLine) { + return parseLine(cvsLine, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** HIlfsfunktion für die Analyse einer Dateizeile + * @param cvsLine Zeile aus der Datei + * @param sparator Trennzeichen für die Spalten + * @return Liste von String für die einzelnen Spalten + */ + private List parseLine(String cvsLine, char separator) { + return parseLine(cvsLine, separator, DEFAULT_QUOTE); + } + + /** HIlfsfunktion für die Analyse einer Dateizeile + * @param cvsLine Zeile aus der Datei + * @param sparator Trennzeichen für die Spalten + * @param customQuote Kennung für Strings + * @return Liste von String für die einzelnen Spalten + */ + private List parseLine(String cvsLine, char separator, char customQuote) { + + List result = new ArrayList<>(); + + //if empty, return! + if (cvsLine == null && cvsLine.isEmpty()) { + return result; + } + + //ggf. Default-Value laden + if (customQuote == ' ') { + customQuote = DEFAULT_QUOTE; + } + + if (separator == ' ') { + separator = DEFAULT_SEPARATOR; + } + + StringBuffer curVal = new StringBuffer(); + boolean inQuotes = false; + boolean startCollectChar = false; + boolean doubleQuotesInColumn = false; + + char[] chars = cvsLine.toCharArray(); + + for (char ch : chars) { + + if (inQuotes) { // aktueller Text ist in Quotes eingeschlossen + startCollectChar = true; + + if (ch == customQuote) { // Quotes werden beendet, aber Achtung bei "" => Metazeichen + inQuotes = false; + if (ch == '\"') { + doubleQuotesInColumn = true; + } + + } else { + + if (ch == '\"' && !doubleQuotesInColumn) { + doubleQuotesInColumn = true; + } else { + curVal.append(ch); + doubleQuotesInColumn = false; + } + + } + } else { + if (ch == customQuote) { + + inQuotes = true; + + //Fixed : allow "" in empty quote enclosed + if (ch == '\"'){ + if(doubleQuotesInColumn) { + curVal.append('"'); + doubleQuotesInColumn = false; + } else doubleQuotesInColumn = true; + + + } + } + else { + doubleQuotesInColumn = false; + if (ch == separator) { + + result.add(curVal.toString()); + + curVal = new StringBuffer(); + startCollectChar = false; + + } else if (ch == '\r') { + //ignore LF characters + continue; + } else if (ch == '\n') { + //the end, break! + break; + } else { + curVal.append(ch); + } + } + } + + } + result.add(curVal.toString()); + return result; + } + + /** + * Sucht die Nummer einer durch Namen gegebenen Spalte. + * @param name Name der Spalte + * @return Nummer der Spalte + */ + + private int findColumnNumber(String name) { + List columns = header.getChildren(); + int i = 0; + for(Element c : columns) { + if (c.getText().toLowerCase().equals(name.toLowerCase())) { + return i; + + } + i++; + } + return -1; + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an. + */ + public void addColumn() { + Element entry = new Element("Column"); + entry.setAttribute("type", Table.UNKNOWN); + header.addContent(entry); + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an und benennt sie. + * @param title Bezeichnung der Spalte + */ + public void addColumn(String title) { + addColumn(); + Element nc = ((List)(header.getChildren())).get(header.getChildren().size()-1); + nc.setText(title); + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an und benennt und typisiert sie. + * @param title Bezeichnung der Spalte + * @param type Typ der Spalte (UNKNOWN, DOUBLE, INTEGER, FLOAT) + */ + public void addColumn(String title, String type) { + addColumn(title); + Element nc = ((List)(header.getChildren())).get(header.getChildren().size()-1); + nc.setAttribute("type", type); + } + + /** + * Löscht eine Spalte. + * @param i Nummer der Spalte. + */ + public void removeColumn(int i) { + List lines = doc.getRootElement().getChildren(); + for(Element l : lines) { + if(l.getChildren().size()>i) l.removeContent(i); + } + } + + /** + * Löscht eine Spalte + * @param name Name der Spalte + */ + public void removeColumn(String name) { + try{ + removeColumn(findColumnNumber(name)); + } catch(Exception e) { System.out.println("Unbekannter Spaltenname");} + } + + /** + * Liefert die Anzahl der Spalten in der Tabelle + * @return Anzahl der Spalten + */ + public int getColumnCount() { + return header.getChildren().size(); + } + + /** + * Liefert die Anzahl der Zeilen in der Tabelle + * @return Anzahl der Zeilen + */ + public int getRowCount() { + return doc.getRootElement().getChildren().size()-1; + } + + /** + * Löscht alle Zeilen der Tabelle. + * Die Spaltenüberschriften und Typen bleiben erhalten. + */ + public void clearRows() { + doc.getRootElement().removeChildren("Row"); + } + + /** + * Fügt eine neue Zeile an das Ende der Tabelle an. + * @return ein TableRow-Objekt für diese neue Zeile + */ + public TableRow addRow() { + Element row = new Element("Row"); + doc.getRootElement().addContent(row); + return new TableRow(doc, row); + } + + /** + * Löscht eine Zeile + * @param i Nummer der Zeile + */ + public void removeRow(int i) { + if(i rows = doc.getRootElement().getChildren(); + return new TableRow(doc, rows.get(i+1)); + } + return null; + } + + /** + * Liefert die ganze Tabelle als Array von TableRow-Objekten + * @return Array von TableRow-Objekten + */ + public TableRow[] rows() { + TableRow[] rows = new TableRow[getRowCount()]; + for(int i = 0; i < getRowCount(); i++) { + rows[i] = getRow(i); + } + return rows; + } + + /** + * Liefert den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param column Spaltennummer + * @return Wert der Zelle + */ + public int getInt(int row, int column) { + return getRow(row).getInt(column); + } + + /** + * Liefert den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param name Name der Spalte + * @return Wert der Zelle + */ + public int getInt(int row, String name) { + return getRow(row).getInt(name); + } + + /** + * Setzt den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param column Spaltennummer + * @param value neuer Wert der Zelle + */ + public void setInt(int row, int column,int value) { + getRow(row).setInt(column, value); + } + + /** + * Setzt den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(int row, String name, int value) { + getRow(row).setInt(name, value); + } + + /** + * Liefert alle Werte einer Zeile als Integer-Array. + * @param row Nummer der Zeile + * @return int-Array, dass alle Werte der Zeile enthält + */ + public int[] getIntRow(int row) { + try{ + TableRow trow = getRow(row); + int anz = getColumnCount(); + int[] r = new int[anz]; + for(int i=0; i) (header.getChildren())).get(i).getText(); + } else { + return ""; + } + } + + /** + * Liefert die Nummer einer Spalte + * @param name Name der Spalte + * @return Nummer der Spalte + */ + public int getColumn(String name) { + List columns = header.getChildren(); + int i = 0; + while (i < columns.size()) { + if (columns.get(i).getText().toLowerCase().equals(name.toLowerCase())) { + return i; + } + i++; + } // end of while + return -1; + } + + + /** + * Erzeugt eine neue Zeile mit i Spalten + * Wenn bisher nicht genügend Spalten vorhanden sind, werden automatisch neue Spalten hinzugefügt (auch zum Header) + * @param i Anzahl der Spalten + */ + private Element buildRow(int i) { + List columns = header.getChildren(); + Element entry=null; + for(int j=0; j<=i; j++) { + + if(j==columns.size()) { + Element h = new Element("Column"); + h.setAttribute("type", "unknown"); + header.addContent(h); + columns = header.getChildren(); + } + if(j==current.getChildren().size()) { + entry = new Element("Entry"); + current.addContent(entry); + + } + + } + return entry; + + } + + /** + * Erzeugt eine neue Zeile. + * Es werden genügend Spalten erzeugt, dass ein Wert in Spalte "name" eingetragen werden kann + * @param name Name der Spalte + */ + private Element buildRow(String name) { + List columns = header.getChildren(); + int i = 0; + for(Element c: columns) { + + if(c.getText().toLowerCase().equals(name.toLowerCase())) { + return buildRow(i); + } + i++; + } + return null; + + } + + /** + * Liefert den Wert einer Zelle als String + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public String getString(int i) { + if(i >= current.getContent().size()) return ""; + Element e = (Element) current.getContent(i) ; + if(e!=null) { + return e.getText(); + } else { + return ""; + } + } + + /** + * Liefert den Wert einer Zelle als String + * @param name Name der Spalte + * @return Wert der Zelle + */ + public String getString(String name) { + return getString(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als String + * @param i Nummer der Spalte + * @param text neuer Wert der Zelle + */ + public void setString(int i, String text) { + + Element e = buildRow(i); + if(e!=null) e.setText(text); + } + + /** + * Setzt den Wert einer Zelle als String + * @param name Name der Spalte + * @param text neuer Wert der Zelle + */ + public void setString(String name, String text) { + Element e = buildRow(name); + if(e!=null) e.setText(text); + } + + + /** + * Liefert den Wert einer Zelle als Int-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public int getInt(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Integer.parseInt(e.getText()); + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Int-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public int getInt(String name) { + return getInt(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Int-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(int i,int value) { + + Element e = buildRow(i); + if(e!=null) e.setText(""+value); + } + + /** + * Setzt den Wert einer Zelle als Int-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(String name, int value) { + Element e = buildRow(name); + if(e!=null) e.setText(""+value); + } + + /** + * Liefert den Wert einer Zelle als Float-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public float getFloat(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Float.parseFloat(e.getText().replace(",",".")); + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Float-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public float getFloat(String name) { + return getFloat(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Float-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setFloat(int i,float value) { + + Element e = buildRow(i); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Setzt den Wert einer Zelle als Float-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setFloat(String name, float value) { + Element e = buildRow(name); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Liefert den Wert einer Zelle als Double-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public double getDouble(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Double.parseDouble(e.getText().replace(",",".")); + + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Double-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public double getDouble(String name) { + return getDouble(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Double-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setDouble(int i,double value) { + + Element e = buildRow(i); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Setzt den Wert einer Zelle als Double-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setDouble(String name, double value) { + Element e = buildRow(name); + if(e!=null) e.setText(format.format(value)); + } + +} diff --git a/03_vorlagen_tauschordner/03_javaeditor/alg11_balkendiagramm_zufall/XML.java b/03_vorlagen_tauschordner/03_javaeditor/alg11_balkendiagramm_zufall/XML.java new file mode 100644 index 0000000..c06c490 --- /dev/null +++ b/03_vorlagen_tauschordner/03_javaeditor/alg11_balkendiagramm_zufall/XML.java @@ -0,0 +1,637 @@ +/** + * Klasse zum Vereinfachten Zugriff auf XML-Dokumente + * Diese Klasse ist für den Einsatz in der Schule gedacht und soll den Schülern + * einen einfachen Zugriff auf XML-Dokumente ermöglichen. Die zur Verfügung + * stehenden Befehle sind wie in Processing realisiert. + * Dabei ist jeder Teilbaum des Dokuments wieder als XML-Objekt zugreifbar, das + * intern auf die gleiche XML-Dokumentstruktur zugreift. + * Dies ermöglicht bei unsachgemäßem Gebrauch die XML-Struktur zu zerstören. Im + * normalen Gebrauch sollte dies aber nicht relevant sein. + * + * Benötigt: jdom-1.1.3.jar + + * @author Thomas Schaller + * @version 1.0 vom 31.01.2019 + */ +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.ArrayList; +import java.io.*; + +import org.jdom.Document; +import org.jdom.Element; +import org.jdom.Attribute; +import org.jdom.JDOMException; +import org.jdom.input.SAXBuilder; +import org.jdom.output.XMLOutputter; +import org.jdom.output.Format; + +public class XML { + // Anfang Attribute + // XML-Dokumentstruktur + private Document doc; + // Zeiger auf das aktuelle Element + private Element current; + // Ende Attribute + + /** + * Erzeugt ein leeres XMLDokument + */ + public XML() { + this.doc = new Document(); + this.current = null; + } + + /** + * Erzeugt ein XML-Dokument aus einer Datei + * @param filename Dateiname der XML-Datei + */ + public XML(String filename) { + loadXML(filename); + } + + /** + * interner Konstruktor, um ein XML Objekt zu erzeugen, das auf einen bestimmten Knoten verweist + * @param doc die XML-Dokumentstruktur + * @param current Zeiger auf das aktuelle Element + */ + private XML(Document doc, Element current) { + this.doc = doc; + this.current = current; + } + + // Anfang Methoden + /** Öffnet das durch den Dateinamen gegebene Dokument + * @param filename Dateiname des XML-Files + */ + public void loadXML(String filename) { + doc = null; + File f = new File(filename); + + try { + // Das Dokument erstellen + SAXBuilder builder = new SAXBuilder(); + doc = builder.build(f); + + } catch (JDOMException e) { + e.printStackTrace(); + + } catch (IOException e) { + e.printStackTrace(); + } + // Zeiger im Baum auf Root-Element + current = doc.getRootElement(); + } + + /** Speichert den XML-Baum im angegebenen Dateinamen + * @param filename Dateiname des XML-Files + */ + public void saveXML(String filename) { + try { + // new XMLOutputter().output(doc, System.out); + XMLOutputter xmlOutput = new XMLOutputter(); + + // display nice nice + xmlOutput.setFormat(Format.getPrettyFormat()); + File f = new File(filename); + FileOutputStream outputFile = new FileOutputStream(f); + System.out.println("Speicher in : "+f.getAbsolutePath() ); + xmlOutput.output(doc, outputFile); + outputFile.close(); + System.out.println("File Saved!"); + } catch (IOException io) { + System.out.println(io.getMessage()); + } + + } + + //----------------------------------------------- Zeigerbewegungen -------------------------------------------------- + /** + * liefert ein XML-Objekt, das auf den Vaterknoten des aktuellen Elements zeigt. + * @return Vater des aktuellen Objekts. + */ + public XML getParent() { + if(current != null) { + Element parent = current.getParentElement(); + if (parent == null) { + return null; + } else { + return new XML(doc, parent); + } + } + return null; + } + + /** + * Überprüft, ob das Element irgendwelche Kinder hat oder nicht, und gibt das Ergebnis als boolean zurück. + * @return true, wenn Kinder vorhanden sind, sonst false + */ + public boolean hasChildren() { + if (current == null) { + return doc.hasRootElement(); + } else { + return current.getChildren().size()>0; + } + } + + /** + * Ermittelt die Namen aller Kinder des Elements und gibt die Namen als ein Array von Strings zurück. + * Dies ist dasselbe wie das Durchlaufen und Aufrufen von getName() auf jedem untergeordneten Element einzeln. + * @return Liste aller Namen der Kinder + */ + public String[] listChildren() { + if (current == null) { + if(doc.hasRootElement()) { + String[] names = new String[0]; + names[0] = doc.getRootElement().getName(); + return names; + } else { + return null; + } + } else { + List ch_element = current.getChildren(); + String[] names = new String[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + names[i] = ch_element.get(i).getName(); + } + return names; + } + } + + /** + * Liefert alle Kinder des Elements als Array von XML-Objekten. + * @return Array der Kinder als XML-Objekte + */ + public XML[] getChildren() { + if (current == null) { + if(doc.hasRootElement()) { + XML[] ch_xml = new XML[1]; + ch_xml[0] = new XML(doc, doc.getRootElement()); + return ch_xml; + } else { + return null; + } + } else { + List ch_element = current.getChildren(); + XML[] ch_xml = new XML[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + ch_xml[i] = new XML(doc, ch_element.get(i)); + } + return ch_xml; + } + } + + /** + * Liefert bestimmte Kinder des Elements als Array von XML-Objekten. + * Die Methode gibt dabei alle Kinder zurück, die dem angegebenen Namen entsprechen. + * @param name Name der gesuchten Kind-Objekte + * @return Array der Kinder als XML-Objekte + */ + public XML[] getChildren(String name) { + if (current == null) { + if(doc.hasRootElement()) { + XML[] ch_xml = new XML[1]; + ch_xml[0] = new XML(doc, doc.getRootElement()); + if(doc.getRootElement().getName().equals(name)){ + return ch_xml; + } else { + return null; + } + } else { + return null; + } + } else { + List ch_element = current.getChildren(name); + XML[] ch_xml = new XML[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + ch_xml[i] = new XML(doc, ch_element.get(i)); + } + return ch_xml; + } + } + + /** + * Liefert das erste Kind des Elements mit einem bestimmten Namen. + * Die Methode gibt das erste Kind zurück, das dem angegebenen Namen entsprechen. + * @param name Name des gesuchten Kind-Objektes + * @return Kind als XML-Objekt + */ + + public XML getChild(String name) { + if (current == null) { + Element e = doc.getRootElement(); + if (e.getName().equals(name)) { + return new XML(doc, e); + } else { + return null; + } + } else { + String[] names = name.split("/"); + Element e = current; + int i = 0; + while(i < names.length) { + e = e.getChild(names[i]); + if (e==null) return null; + i++; + } + return new XML(doc, e); + } + } + + /** + * Liefert das i. Kind des Elements. + * Die Methode gibt das i. Kind des aktuellen Elements zurück. + * @param i Nummer des Kindes + * @return Kind als XML-Objekt + */ + public XML getChild(int i) { + if (current == null) { + return new XML(doc, doc.getRootElement()); + } else { + List ch_element = current.getChildren(); + if (i>=ch_element.size()) return null; + return new XML(doc, ch_element.get(i)); + } + } + + //--------------------------------------------------- Methoden für das aktuelle Element ------------------------------------------------- + /** + * Frage den Namen des aktuellen Elements ab + * @return Namen des Elements + */ + public String getName() { + if (current==null) return ""; + return current.getName(); + } + + /** + * Setze den Namen des aktuellen Elements. + * @param name Neuer Name des Elements + */ + public void setName(String name) { + if (current==null) return; + current.setName(name); + } + + /** + * liefert die Anzahl der Attribute eines Elements. + * @return Anzahl des Attribute + */ + public int getAttributeCount() { + if (current == null) return 0; + return current.getAttributes().size(); + } + + /** + * liefert zurück, ob das aktuelle Element Attribute hat . + * @return true, wenn es Attribute gibt + */ + public boolean hasAttribute() { + if (current == null) return false; + return current.getAttributes().size()>0; + } + + /** + * Ruft alle Attribute des angegebenen Elements ab und gibt sie als Array von Strings zurück. + * @return Liste der Attributnamen + */ + public String[] listAttributes() { + if (current == null) return null; + List attr = current.getAttributes(); + String[] names = new String[attr.size()]; + for(int i=0; i < attr.size() ; i++) { + names[i] = attr.get(i).getName(); + } + return names; + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs + */ + public String getString(String attribute) { + if (current==null) return ""; + return current.getAttributeValue(attribute); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs + */ + public String getString(String attribute, String defaultValue) { + if (current==null) return defaultValue; + return current.getAttributeValue(attribute,defaultValue); + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param text neuer Wert des Attributs + */ + public void setString(String attribute, String text) { + if (current==null) return; + current.setAttribute(attribute, text); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Integer-Zahl + */ + public int getInt(String attribute) { + if (current==null) return 0; + try{ + int i = Integer.parseInt(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als Integer-Zahl + */ + public int getInt(String attribute, int defaultValue) { + if (current==null) return defaultValue; + try{ + int i = Integer.parseInt(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setInt(String attribute, int value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Float-Zahl + */ + public float getFloat(String attribute) { + if (current==null) return 0; + try{ + float i = Float.parseFloat(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als Float-Zahl + */ + public float getFloat(String attribute, float defaultValue) { + if (current==null) return defaultValue; + try{ + float i = Float.parseFloat(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setFloat(String attribute, float value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Double-Zahl + */ + public double getDouble(String attribute) { + if (current==null) return 0; + try{ + double i = Double.parseDouble(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + +/** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als double-Zahl + */ + public double getDouble(String attribute, double defaultValue) { + if (current==null) return defaultValue; + try{ + double i = Double.parseDouble(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setDouble(String attribute, double value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt den Inhalt/Text des aktuellen Elements ab + * @return Inhalt des Elements + */ + public String getContent() { + if ( current==null) return ""; + + return current.getText(); + } + + /** + * Fragt den Inhalt/Text des aktuellen Elements ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardtext + * @return Inhalt des Elements + */ + public String getContent(String defaultValue) { + if ( current==null) return defaultValue; + String t = current.getText(); + if(t.equals("")) t = defaultValue; + return t; + } + + /** + * Setzt den Inhalt/Text des aktuellen Elements + * @param text Neuer Inhalt des Elements + */ + public void setContent(String text) { + if ( current==null) return; + current.setText(text); + } + + + /** + * Fragt den Inhalt des aktuellen Elements als Integerzahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ public int getIntContent(int defaultValue) { + if ( current==null) return defaultValue; + try{ + int i = Integer.parseInt(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Integerzahl ab + * @return Inhalt des Elements + */ + public int getIntContent() { + if ( current==null) return 0; + try{ + int i = Integer.parseInt(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setIntContent(int value) { + if ( current==null) return; + current.setText(""+value); + } + + + /** + * Fragt den Inhalt des aktuellen Elements als Floatzahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ + public float getFloatContent(float defaultValue) { + if ( current==null) return defaultValue; + try{ + float i = Float.parseFloat(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Floatzahl ab + * @return Inhalt des Elements + */ + public float getFloatContent() { + if ( current==null) return 0; + try{ + float i = Float.parseFloat(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setFloatContent(float value) { + if ( current==null) return; + current.setText(""+value); + } + +/** + * Fragt den Inhalt des aktuellen Elements als Doublezahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ + public double getDoubleContent(double defaultValue) { + if ( current==null) return defaultValue; + try{ + double i = Double.parseDouble(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Doublezahl ab + * @return Inhalt des Elements + */ + public double getDoubleContent() { + if ( current==null) return 0; + try{ + double i = Double.parseDouble(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setDoubleContent(double value) { + if ( current==null) return; + current.setText(""+value); + } + + + // ----------------------------------------------- XML-Struktur aufbauen ------------------------------------------------ + /** Erzeuge neues Element nach der aktuellen Position und setze dieses als aktuelles Element + * @param name Name des neuen Elements + * @return neues Element als XML-Objekt + */ + public XML addChild(String name) { + Element e = new Element(name); + if(current == null){ // man ist auf Root-Ebene + doc.setRootElement(e); + + } + else { + current.addContent(e); + } // end of if-else + return new XML(doc, e); + } + + /** + * liefert das aktuelle Element als jdom-Element-Objekt + * @return aktuelles Element + */ + private Element getCurrent() { + return current; + } + + /** + * löscht ein Kind des aktuellen Knotens. + * Ist kid kein Kind des aktuellen Elements passiert gar nichts. + * @param kid XML-Objekt des Kindes + */ + public void removeChild(XML kid) { + if (current == null) return; + Element e = kid.getCurrent(); + int index = current.indexOf(e); + if(index >= 0) { current.removeContent(e);} + } + +} diff --git a/03_vorlagen_tauschordner/03_javaeditor/alg11_balkendiagramm_zufall/jdom-1.1.3.jar b/03_vorlagen_tauschordner/03_javaeditor/alg11_balkendiagramm_zufall/jdom-1.1.3.jar new file mode 100644 index 0000000..a287727 Binary files /dev/null and b/03_vorlagen_tauschordner/03_javaeditor/alg11_balkendiagramm_zufall/jdom-1.1.3.jar differ diff --git a/03_vorlagen_tauschordner/03_javaeditor/alg12_balkendiagramm_csv/Balkendiagramm.java b/03_vorlagen_tauschordner/03_javaeditor/alg12_balkendiagramm_csv/Balkendiagramm.java new file mode 100644 index 0000000..3d1ed63 --- /dev/null +++ b/03_vorlagen_tauschordner/03_javaeditor/alg12_balkendiagramm_csv/Balkendiagramm.java @@ -0,0 +1,74 @@ +import java.awt.Font; + +/** + * Balkendiagramm für int-Array, Zahlen werden aus CSV-Datei gelesen. + * + * @author Schaller + * @version 29.11.18 + */ +public class Balkendiagramm extends Picture + +{ + // Liste mit allen Werten + // Deklariere ein Array zahlen für die Punkte und ein Array namen für die Spielernamen + //------------ + // TODO + //------------ + + // Schriften + Font kleineSchrift; + Font grosseSchrift; + + public Balkendiagramm() { + size(1000, 700); + background(0); + kleineSchrift = new Font( Font.SANS_SERIF, Font.PLAIN, 12 ); + grosseSchrift = new Font( Font.SANS_SERIF, Font.PLAIN, 20 ); + + // CSV-Datei laden und anzeigen + ladeTabelle("punkte.csv"); + + zeichneBalken(); + } + + public void ladeTabelle(String name) { + // Tabelle aus CSV-Datei laden + Table csv = new Table(name,"header",',','"'); + + // Initialisiere Arrays, in die alle Zeilen der Tabelle passen + // Die Anzahl der gespeicherten Zeilen bekommt man mit csv.getRowCount() + //------------ + // TODO + //------------ + + // Fülle die Arrays mit Werten aus der Tabelle + // Mit csv.getInt(zeilennummer, "Name der Spalte") oder csv.getInt(zeilennummer, spaltennummer) + // bekommt man die Werte der Tabelleneinträge als Integer-Wert + // Informiere dich unter https://processing.org/reference/Table.html, welche Methode geeignet ist, + // um die Namen der Spieler als String zu bekommen. getInt hilft hier nicht weiter. + //------------ + // TODO + //------------ + } + + public void zeichneBalken() { + clear(); + + // Überschrift + fill(255,255,255); + textFont(grosseSchrift); + text("Punkte", 2, 20); + textFont(kleineSchrift); + + // Alle Einträge darstellen + // lasse alle Ergebnisse der Spieler in der Form + // SpielerXY 234 XXXXXXXXXXXXXXXX + // SpielerZY 12 XX + // usw. + // darstellen. Wandle dazu dein Programm, um die Werte eines Arrays darzustelle ab. + //------------ + // TODO + //------------ + } + +} diff --git a/03_vorlagen_tauschordner/03_javaeditor/alg12_balkendiagramm_csv/BalkendiagrammGUI.java b/03_vorlagen_tauschordner/03_javaeditor/alg12_balkendiagramm_csv/BalkendiagrammGUI.java new file mode 100644 index 0000000..97d6e5e --- /dev/null +++ b/03_vorlagen_tauschordner/03_javaeditor/alg12_balkendiagramm_csv/BalkendiagrammGUI.java @@ -0,0 +1,66 @@ +import java.awt.*; +import java.awt.event.*; +import javax.swing.*; +import javax.swing.event.*; + +/** + * + * description + * + * @version 1.0 from 06.10.2018 + * @author + */ + +public class BalkendiagrammGUI extends JFrame { + // Anfang Attribute + private JButton bZeichnen = new JButton(); + private PictureViewer imagePanel1 = new PictureViewer(); + + // Ende Attribute + + public BalkendiagrammGUI (String title) { + super (title); + setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); + int frameWidth = 768; + int frameHeight = 551; + setSize(frameWidth, frameHeight); + Dimension d = Toolkit.getDefaultToolkit().getScreenSize(); + int x = (d.width - getSize().width) / 2; + int y = (d.height - getSize().height) / 2; + setLocation(x, y); + Container cp = getContentPane(); + cp.setLayout(null); + // Anfang Komponenten + bZeichnen.setBounds(256, 456, 273, 33); + bZeichnen.setText("Balkendiagramm zeichnen"); + bZeichnen.setMargin(new Insets(2, 2, 2, 2)); + bZeichnen.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent evt) { + bZeichnen_ActionPerformed(evt); + } + }); + cp.add(bZeichnen); + imagePanel1.setBounds(24, 16, 705, 409); + cp.add(imagePanel1); + + // Ende Komponenten + setResizable(false); + setVisible(true); + } + + // Anfang Methoden + public void bZeichnen_ActionPerformed(ActionEvent evt) { + Balkendiagramm bild = new Balkendiagramm(); + imagePanel1.setImage(bild); + imagePanel1.getViewport().repaint(); + imagePanel1.getVerticalScrollBar().setValue(1); + imagePanel1.getVerticalScrollBar().setValue(0); + } // end of bZeichnen_ActionPerformed + + // Ende Methoden + + public static void main(String[] args) { + new BalkendiagrammGUI("BalkendiagrammGUI"); + } +} + diff --git a/03_vorlagen_tauschordner/03_javaeditor/alg12_balkendiagramm_csv/BalkendiagrammGUI.jfm b/03_vorlagen_tauschordner/03_javaeditor/alg12_balkendiagramm_csv/BalkendiagrammGUI.jfm new file mode 100644 index 0000000..707d571 --- /dev/null +++ b/03_vorlagen_tauschordner/03_javaeditor/alg12_balkendiagramm_csv/BalkendiagrammGUI.jfm @@ -0,0 +1,103 @@ +object BalkendiagrammGUI: TFGUIForm + Left = 761 + Top = 237 + BorderIcons = [biSystemMenu] + Caption = 'BalkendiagrammGUI' + ClientHeight = 512 + ClientWidth = 752 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -10 + Font.Name = 'MS Sans Serif' + Font.Style = [] + FormStyle = fsStayOnTop + OldCreateOrder = True + Position = poDesigned + ShowHint = True + Visible = True + OnClose = FormClose + OnCloseQuery = FormCloseQuery + OnResize = FormResize + FrameType = 5 + Resizable = False + Undecorated = False + Background = clBtnFace + PixelsPerInch = 96 + TextHeight = 13 + object bOptischeTauschungzeichnen: TJButton + Tag = 4 + Left = 256 + Top = 456 + Width = 273 + Height = 33 + Hint = 'jButton1' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Dialog' + Font.Style = [fsBold] + Foreground = 3355443 + Background = 15658734 + actionPerformed = 'bOptischeTauschungzeichnen_ActionPerformed' + Text = 'Optische T'#228'uschung zeichnen' + Mnemonic = 0 + DisplayedMnemonicIndex = 0 + Selected = False + BorderPainted = True + FocusPainted = False + ContentAreaFilled = True + HorizontalAlignment = CENTER + VerticalAlignment = CENTER + HorizontalTextPosition = RIGHT + VerticalTextPosition = CENTER + IconTextGap = 4 + RolloverEnabled = False + Border.BorderType = NoBorder + Border.LineColor = clBlack + Border.LineThickness = 0 + Border.LineRounded = False + Border.EtchHighlightColor = clBlack + Border.EtchShadowColor = clBlack + Border.Etchtype = 0 + Border.BevelHighlightColor = clBlack + Border.BevelShadowColor = clBlack + Border.Beveltype = 0 + Border.MatteColor = clBlack + Border.MatteTop = 0 + Border.MatteLeft = 0 + Border.MatteBottom = 0 + Border.MatteRight = 0 + end + object imagePanel1: TJPanel + Tag = 38 + Left = 24 + Top = 16 + Width = 705 + Height = 409 + Hint = 'imagePanel1' + HelpKeyword = 'ImagePanel' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Dialog' + Font.Style = [fsBold] + Foreground = 3355443 + Background = clBtnFace + Border.BorderType = NoBorder + Border.LineColor = clBlack + Border.LineThickness = 0 + Border.LineRounded = False + Border.EtchHighlightColor = clBlack + Border.EtchShadowColor = clBlack + Border.Etchtype = 0 + Border.BevelHighlightColor = clBlack + Border.BevelShadowColor = clBlack + Border.Beveltype = 0 + Border.MatteColor = clBlack + Border.MatteTop = 0 + Border.MatteLeft = 0 + Border.MatteBottom = 0 + Border.MatteRight = 0 + end +end diff --git a/03_vorlagen_tauschordner/03_javaeditor/alg12_balkendiagramm_csv/Picture.java b/03_vorlagen_tauschordner/03_javaeditor/alg12_balkendiagramm_csv/Picture.java new file mode 100644 index 0000000..8df3d55 --- /dev/null +++ b/03_vorlagen_tauschordner/03_javaeditor/alg12_balkendiagramm_csv/Picture.java @@ -0,0 +1,699 @@ +import java.awt.image.*; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.BasicStroke; +import java.util.Vector; +import javax.imageio.*; +import java.io.*; +import java.awt.*; +import javax.swing.*; +import java.util.Random; +import java.awt.geom.AffineTransform; +/** + * + * Bildklasse für die Simulation von Processing-Befehlen + * + * Diese Klasse stellt ein BufferedImage bereit, in das mit Processing-Befehlen gezeichnet + * werden kann. + * Zusätzlich kann ein Bildanzeiger über jede Änderung des Bildes informiert werden, + * um "Zurück"-Befehle zu ermöglichen. Der Bildanzeiger ist entweder eine normale Java + * ScrollPane oder ein Actor aus Greenfoot. + * Die Dokumentation der einzelnen Zeichenmethoden ist der Processing-Reference + * (https://processing.org/reference/ steht unter CC-Lizenz: https://creativecommons.org/) + * entnommen und mit Deepl.com ins Deutsche übersetzt. + * + * @version 1.0 from 23.01.2019 + * @author Thomas Schaller (ZPG Informatik Klasse 9) + */ + +public class Picture{ + + // Einstellungmöglichkeiten für das Zeichnen von Rechtecken und Ellipsen + // RADIUS = Mittelpunkt+Radius wird gegeben, CENTER = Mittelpunkt und Breite/Höhe wird gegeben, + // CORNER = Linke obere Ecke + Breite/Höhe, CORNERS = Linke obere und rechte untere Ecke + public static final int RADIUS = 1; + public static final int CENTER = 2; + public static final int CORNER = 3; + public static final int CORNERS = 4; + + // gespeichertes Bild, + private BufferedImage image; + + // aktuelle Farbeinstellungen + private Color background; + private Color pencolor; + private Color fillcolor; + + // aktuelle Stiftdicke + private double stroke; + + // akkteller Koordinatenmodus von Rechtecken und Ellipsen + private int ellipseMode = CENTER; + private int rectMode = CORNER; + + // aktueller Font + private Font textfont = null; + + // muss ein Bildanzeiger benachrichtigt werden + private PictureViewer observer = null; + private boolean autorefresh = true; + + /** + * Erzeugt ein Bild mit Standardgröße 500x400 + */ + public Picture() { + this(500,400); + } + + /** + * Erzeugt ein Bild der angegeben Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public Picture(int width, int height) { + this(width,height, "D0D0D0"); + } + + /** + * Erzeugt ein Bild aus einer Datei + * @param filename Dateiname des Bildes + */ + public Picture(String filename) { + load(filename); + } + + /** + * Erzeugt ein Bild der angegebenen Größe mit festgelegtem Hintergrund + * @param width Breite des Bildes + * @param height Höhe des Bildes + * @param background Farbe des Hintergrunds + */ + public Picture(int width, int height, String background) { + this.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + this.background = decode(background); + this.pencolor = new Color(0,0,0); + this.stroke = 1; + this.fillcolor = null; + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(this.background); + g.fillRect(0,0,width-1, height-1); + } + + /** + * Legt fest, wer das Bild anzeigt. + * Diese ermöglicht die Benachrichtung des Observers, wenn sich das Bild ändert. + * @param observer Anzeiger des Bildes + */ + + public void setObserver(PictureViewer observer) { + this.observer= observer; + } + + /** + * Direktes Setzen des Bildes (für interne Zwecke) + * @param b Bild, das gespeichert werden soll. + */ + public void setImage(BufferedImage b) { + image = b; + } + + /** + * Direktes Abfragen des Bildes (für interne Zwecke) + * @return Bild, das gerade gespeichert ist. + */ + public BufferedImage getImage() { + return image; + } + + /** + * Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + * Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + * der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu. + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public void size(int width, int height){ + pushImage(); + this.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(background); + g.fillRect(0,0,width-1, height-1); + } + + /** + * Liefert die Breite des Bildes zurück. + * @return Breite des Bildes + */ + public int getWidth() { + return image.getWidth(); + } + + /** + * Liefert die Höhe des Bildes zurück. + * @return Höhe des Bildes + */ + public int getHeight() { + return image.getHeight(); + } + + + /** + * Erzeugt eine Kopie des Bildes und übergibt sie an den Observer (falls existent), damit dieser die Versionen speichern kann + */ + private void pushImage() { + if(observer != null) { + observer.pushImage(); + } + } + + + /** + * Legt fest, ob nach jedem Zeichenbefehl automatisch das Bild auch in + * der Oberfläche aktualisiert wird. Die Einstellung "false" beschleunigt + * das Zeichnen aufwändiger Bilder und verhindert "Flackern". + * Das Neuzeichnen kann durch die Methode "refresh" gezielt ausgelöst werden. + * @param autorefresh true = nach jedem Zeichenbefehl die Anzeige aktualisieren, false= nur durch die Methode refresh neu zeichnen + */ + public void setAutoRefresh(boolean autoRefresh) { + this.autorefresh = autoRefresh; + } + + + /** + * Auch die anzeigenden Klasse wird zum Neuzeichnen aufgefordert. + */ + private void repaint() { + if(observer != null && autorefresh) { + observer.repaint(); + } + } + + /** + * Auch die anzeigenden Klasse wird zum Neuzeichnen aufgefordert. + */ + public void refresh() { + if(observer != null) { + observer.repaint(); + } + } + + // ----------------------------------------- Zeichenfunktionen ----------------------------------------------- + /** + * Löscht den Inhalt des Bildes. + * Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt. + */ + + public void clear(){ + pushImage(); + image = new BufferedImage(image.getWidth(), image.getHeight(), image.getType()); + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(background); + g.fillRect(0,0,image.getWidth()-1, image.getHeight()-1); + repaint(); + } + + /** + * Konvertiert die in einem bestimmten Modus gegebenen Koordinaten in die Java-übliche Links_Oben_Breite_Höhe Version + * Die Änderungen werden direkt im Array vorgenommen + * @param coord Array mit vier Koordinateneinträgen im gegebenen Modus + * @param mode Modus der Koordinaten (CORNER, CORNERS, RADIUS oder CENTER) + */ + private void convert(int[] coord, int mode) { + switch(mode) { + case CORNER: break; + case CORNERS: coord[2] -= coord[0]; coord[3] -= coord[1]; break; + case RADIUS: coord[2] *= 2; coord[3] *=2; + case CENTER: coord[0] -= coord[2]/2; coord[1] -= coord[3]/2; + } + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + * Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + * Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void rectMode(int mode) { + rectMode = mode; + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + * Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + * Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als Breite und Höhe der Form. + * ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void ellipseMode(int mode) { + ellipseMode = mode; + } + + + + /** + * Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + * Um eine Linie einzufärben, verwenden Sie die {@link #stroke(int, int, int) stroke()} Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + * Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + * {@link #strokeWeight(double) strokeWeight()} geändert werden. + * @param x1 x-Koordinate des 1. Punktes + * @param y1 y-Koordinate des 1. Punktes + * @param x2 x-Koordinate des 2. Punktes + * @param y2 y-Koordinate des 2. Punktes + */ + public void line(int x1, int y1, int x2, int y2) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + if (stroke > 0) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawLine(x1, y1, x2, y2); + } + repaint(); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, rectMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillRect(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawRect(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, ellipseMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillOval(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawOval(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + int px[] = {x1, x2, x3}; + int py[] = {y1, y2, y3}; + polygon(px, py); + + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + + int px[] = {x1, x2, x3, x4}; + int py[] = {y1, y2, y3, y4}; + polygon(px, py); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + + public void polygon(int[] x, int[] y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(fillcolor != null) { + + g.setColor(fillcolor); + g.fillPolygon(x,y, y.length); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawPolygon(x, y, x.length); + } + repaint(); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + ellipse(x,y,1, 1); + + } + + // ----------------------------------------- Schriftdarstellung ----------------------------------------------- + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param s Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String s, int x, int y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(pencolor != null) { + g.setColor(fillcolor); + g.setStroke(new BasicStroke((float) stroke)); + g.setFont(textfont); + g.drawString(s, x, y); + } + repaint(); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + this.textfont = font; + } + + + // ----------------------------------------- Farbfestlegungen ----------------------------------------------- + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(String color) { + try{ + return new Color( + Integer.valueOf( color.substring( 0, 2 ), 16 ), + Integer.valueOf( color.substring( 2, 4 ), 16 ), + Integer.valueOf( color.substring( 4, 6 ), 16 ) ); + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(int color) { + try{ + if(color >=0 && color < 256) { + return new Color(color,color,color); + } else { + int r = color / 0x010000 % 0xFF; + int g = color / 0x000100 % 0xFF; + int b = color % 0xFF; + System.out.println(""+r+","+g+","+b); + return new Color(r, g, b ); + } + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + this.pencolor = decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + this.pencolor=decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + this.pencolor = new Color(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + this.pencolor = null; + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + this.stroke = width; + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + this.fillcolor = decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + this.fillcolor=decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + this.fillcolor = new Color(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + this.fillcolor = null; + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + if(c < 256) { + this.background=new Color(c,c,c); + } else { + int r = c / 0x010000; + int g = c / 0x000100 % 0xFF; + int b = c % 0xFF; + this.background= new Color(r, g, b ); + } + + this.clear(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + this.background=new Color(r,g,b); + this.clear(); + } + + +// ----------------------------------------- Dateioperationen ----------------------------------------------- + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + try{ + this.image = ImageIO.read(new File(filename)); + this.background = decode("D0D0D0"); + this.pencolor = new Color(0,0,0); + this.fillcolor = null; + this.stroke = 1; + this.repaint(); + + } catch(Exception e) { + System.out.println("Fehler beim Einlesen der Bilddatei"); + } + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + try{ + String[] fn = filename.split("\\."); + if (fn.length== 1) { + ImageIO.write(image, "PNG", new File(filename+".png")); + } else { + + if (fn.length == 2 && (fn[1].toUpperCase().equals("PNG") || + fn[1].toUpperCase().equals("GIF"))){ + ImageIO.write(image, fn[1], new File(filename)); + }else { + System.out.println("Unbekanntes Bildformat"); + } + } + + } catch(Exception e) { + System.out.println("Fehler beim Speichern"); + } + } + + +// ----------------------------------------- Sonstiges ----------------------------------------------- + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + + public Color[][] getPixelArray() { + Color[][] pixel = new Color[image.getWidth()][image.getHeight()]; + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + pixel[x][y] = new java.awt.Color(image.getRGB(x,y)); + } + } + return pixel; + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + size(pixel.length,pixel[0].length); + Graphics2D g = (Graphics2D) image.getGraphics(); + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + g.setColor(pixel[x][y]); + g.fillRect(x, y, 1, 1); + } + } + repaint(); + } + + /** + * Hilfsfunktion zum Verzögern der Ausgabe + * @param millis Wartezeit in Millisekunden + */ + public void delay(int millis) { + try{ + Thread.sleep(millis); + + } catch(Exception e) { + + } + + } + + + +} diff --git a/03_vorlagen_tauschordner/03_javaeditor/alg12_balkendiagramm_csv/PictureViewer.java b/03_vorlagen_tauschordner/03_javaeditor/alg12_balkendiagramm_csv/PictureViewer.java new file mode 100644 index 0000000..9e6b151 --- /dev/null +++ b/03_vorlagen_tauschordner/03_javaeditor/alg12_balkendiagramm_csv/PictureViewer.java @@ -0,0 +1,505 @@ +/** + * Zeigt ein Bild in einem Scrollbereich an. + * Es ist möglich das Bild zu zoomen und mehrere Versionen des Bildes zu speichern, um eine "Rückgängig" Operation durchzuführen. + * @author Thomas Schaller + * @version 1.0 vom 01.02.2019 + */ + +import java.awt.*; +import java.awt.event.*; +import javax.swing.*; +import java.awt.image.*; +import java.util.Vector; + +public class PictureViewer extends JScrollPane +{ + + // das aktuelle Bild + private Picture picture; + + // Bilder für den Züruck-Modus speichern + private static final int ANZ_BACK = 20; + private Vector history; + + // Zeichenfläche + private ImageIcon scrollImageIcon; + private JLabel imageLabel; + + // Zoom Faktor + private double zoomFactor; + public static final int FIT = -1; + public static final int NORMAL = 1; + + + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der Größe 1000x1000 + */ + public PictureViewer() { + this(1000,1000); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public PictureViewer(int width, int height) { + this(width,height, "D0D0D0"); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + * @param background Farbe des Hintergrunds als HEX-String (z.B. "FF3A45") + */ + public PictureViewer(int width, int height, String background) { + this(new Picture(width,height, background)); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild aus einer Bilddatei + * @param filename Name des Bildes + */ + public PictureViewer(String filename) { + this(new Picture(filename)); + } + + /** + * Erzeugt ein ScrollPanel und zeigt das Bild-Objekt an + * @param picture anzuzeigendes Bild + */ + public PictureViewer(Picture picture) + { + this.picture=picture; + + zoomFactor=1; + + scrollImageIcon = new ImageIcon(picture.getImage().getScaledInstance(picture.getImage().getWidth(), picture.getImage().getHeight(), Image.SCALE_FAST)); + imageLabel = new JLabel(scrollImageIcon); + imageLabel.setVerticalAlignment(JLabel.CENTER); + imageLabel.setHorizontalAlignment(JLabel.CENTER); + setViewportView(imageLabel); + + this.setBorder(BorderFactory.createLineBorder(Color.black)); + picture.setObserver(this); + history = new Vector(); + + } + + /** + * Setzt das anzuzeigende Bild neu + * @param picture anzuzeigendes Bild + */ + public void setImage(Picture picture) { + this.history = new Vector(); + this.picture = picture; + setZoom(NORMAL); + } + + /** + * Speichert das übergebene Bild in der History. + * @param b zu speicherndes Bild + */ + public void pushImage() { + if( this.ANZ_BACK > 0) { + if(history.size() == this.ANZ_BACK) { + history.removeElementAt(0); + } + + BufferedImage b = new BufferedImage(picture.getWidth(), picture.getHeight(), picture.getImage().getType()); + Graphics g = b.getGraphics(); + g.drawImage(picture.getImage(), 0, 0, null); + g.dispose(); + + history.add(b); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + private void popImage() { + int anz = history.size(); + if(anz>0) { + BufferedImage img = history.get(anz-1); + history.removeElementAt(anz-1); + picture.setImage(img); + setZoom(zoomFactor); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + public void back() { + popImage(); + } + + /** + * Setzt das angezeigt Bild neu und beachtet dabei den Zoomfaktor. + */ + public void repaint() { + if( picture != null) { + double factor= zoomFactor; + if (zoomFactor == FIT) { + double factorw = ((double) getWidth()-2) / picture.getWidth(); + double factorh = ((double) getHeight()-2) / picture.getHeight(); + factor = Math.min(factorw, factorh); + } + int width = (int) (picture.getWidth()*factor); + int height = (int) (picture.getHeight()*factor); + + + + scrollImageIcon.setImage(picture.getImage().getScaledInstance(width, height, Image.SCALE_DEFAULT)); + revalidate(); + } + } + + /** + * Setzt den Zoom-Faktor für das Bild. + * Als Zoomfaktor sind auch die Konstanten Bildanzeiger.FIT (auf Bildschirmgröße zoomen) und Bildanzeiger.NORMAL (100%) möglich. + * @param factor Zoomfaktor (1.0 = 100%). + */ + public void setZoom(double factor) + { + zoomFactor = factor; + repaint(); + } + + + // Wrappermethoden + /** + * Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + * Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + * der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu. + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public void size(int width, int height){ + picture.size(width, height); + } + + /** + * Liefert die Breite des Bildes zurück. + * @return Breite des Bildes + */ + public int getImageWidth() { + return picture.getWidth(); + } + + /** + * Liefert die Höhe des Bildes zurück. + * @return Höhe des Bildes + */ + public int getImageHeight() { + return picture.getHeight(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + picture.background(c); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + picture.background(r,g,b); + } + + /** + * Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + * Um eine Linie einzufärben, verwenden Sie die {@link #stroke(int, int, int) stroke()} Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + * Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + * {@link #strokeWeight(double) strokeWeight()} geändert werden. + * @param x1 x-Koordinate des 1. Punktes + * @param y1 y-Koordinate des 1. Punktes + * @param x2 x-Koordinate des 2. Punktes + * @param y2 y-Koordinate des 2. Punktes + */ + public void line(int x1, int y1, int x2, int y2) { + picture.line(x1,y1,x2,y2); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + picture.rect(a,b,c,d); + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + picture.ellipse(a,b,c,d); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + picture.triangle(x1,y1,x2,y2,x3,y3); + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + picture.quad(x1,y1,x2,y2,x3,y3,x4,y4); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + public void polygon(int[] x, int[] y) { + picture.polygon(x,y); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + picture.point(x,y); + + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + * Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + * Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void rectMode(int mode) { + picture.rectMode(mode); + } + + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + * Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + * Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als Breite und Höhe der Form. + * ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void ellipseMode(int mode) { + picture.ellipseMode(mode); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + picture.stroke(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + picture.noStroke(); + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + picture.strokeWeight(width); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + picture.fill(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + picture.noFill(); + } + + /** + * Löscht den Inhalt des Bildes. + * Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt. + */ + public void clear(){ + picture.clear(); + } + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + picture.load(filename); + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + picture.save(filename); + } + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param t Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String t, int x, int y) { + picture.text(t,x,y); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + picture.textFont(font); + } + + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + public Color[][] getPixelArray() { + return picture.getPixelArray(); + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + picture.setPixelArray(pixel); + } + + + +} diff --git a/03_vorlagen_tauschordner/03_javaeditor/alg12_balkendiagramm_csv/Table.java b/03_vorlagen_tauschordner/03_javaeditor/alg12_balkendiagramm_csv/Table.java new file mode 100644 index 0000000..ee5a211 --- /dev/null +++ b/03_vorlagen_tauschordner/03_javaeditor/alg12_balkendiagramm_csv/Table.java @@ -0,0 +1,894 @@ +/** + * Die Klasse Table vereinfacht den Zugriff auf CSV-Dateien. + * Die Klassen Table und TableRow ermöglichen einen einfachen Zugriff auf tabellenbasierte + * Dokumente. + * + * @author Thomas Schaller + * @version 1.0 vom 01.02.2019 + */ + +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.ArrayList; +import java.io.*; +import java.util.Scanner; + +import org.jdom.Document; +import org.jdom.Element; +import org.jdom.Attribute; +import org.jdom.JDOMException; +import org.jdom.input.SAXBuilder; +import org.jdom.output.XMLOutputter; +import org.jdom.output.Format; + +public class Table +{ + // Standardtrennzeichen für Spalten + private static final char DEFAULT_SEPARATOR = ';'; + // Standardmarkierung für Texte + private static final char DEFAULT_QUOTE = '"'; + // Standardtrennzeichen für Dezimalzahlen + private static final char DEFAULT_COMMA = ','; + + // mögliche Spaltentypen + private static final String UNKNOWN ="UNKOWN"; + private static final String INT = "INTEGER"; + private static final String DOUBLE = "DOUBLE"; + private static final String FLOAT = "FLOAT"; + + // interne Verwaltung des Dokuments als JDOM-Document-Objekt + private Document doc; + // Verweis auf Element für Kopfzeile + private Element header; + // Ende Attribute + + /** + * Erzeugt leeres Tabellen-Dokument. + */ + public Table() { + this.doc = new Document(); + doc.setRootElement(new Element("CSV-Data")); + this.header = new Element("Header"); + doc.getRootElement().addContent(header); + } + + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei und erstellt ein Tabellenobjekt mit seinen Werten. + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public Table(String filename, String options, char separator, char quote) { + loadCSV(filename, options, separator, quote); + } + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei und erstellt ein Tabellenobjekt mit seinen Werten (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + */ + public Table(String filename, String options) { + loadCSV(filename, options); + } + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei ohne Kopfzeile und erstellt ein Tabellenobjekt mit seinen Werten (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public Table(String filename) { + loadCSV(filename); + } + + // Anfang Methoden + /** + * Liest den Inhalt einer CSV-Datei ohne Kopfzeile (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public void loadCSV(String filename) { + loadCSV(filename, ""); + } + + /** + * Liest den Inhalt einer CSV-Datei (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + */ + public void loadCSV(String filename, String options) { + loadCSV(filename, options, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** + * Liest den Inhalt einer CSV-Datei. + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public void loadCSV(String filename, String options, char separator, char quote) { + doc = new Document(); + doc.setRootElement(new Element("CSV-Data")); + header = new Element("Header"); + doc.getRootElement().addContent(header); + try { + File f = new File(filename); + Scanner scanner = new Scanner(new File(filename)); + if(options.toLowerCase().contains("header") && scanner.hasNext()) { + List entries = parseLine(scanner.nextLine(), separator, quote); + int i= 0; + for(String s : entries) { + Element entry = new Element("Column"); + header.addContent(entry); + entry.setText(s); + entry.setAttribute("type", "unknown"); + i++; + } + } + + List cols = header.getChildren(); + + while (scanner.hasNext()) { + Element line = new Element("Row"); + doc.getRootElement().addContent(line); + List entries = parseLine(scanner.nextLine(), separator, quote); + int i= 0; + + for(String s : entries) { + + if(i==cols.size()) { + Element entry = new Element("Column"); + entry.setAttribute("type", "unknown"); + header.addContent(entry); + cols = header.getChildren(); + } + + Element entry = new Element("Entry"); + entry.setText(s); + line.addContent(entry); + i++; + } + } + scanner.close(); + + } catch (Exception e) { + System.out.println("Fehler beim Lesen der CSV-Datei"); + } + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei ohne Kopfzeile (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public void saveCSV(String filename) { + saveCSV(filename, ""); + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthalten, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile haben soll, + * dann lassen Sie einfach die Option "header" weg. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile haben soll. + * @param filename Dateiname der CSV-Datei. + */ + public void saveCSV(String filename, String options) { + saveCSV(filename, options, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei. + * Wenn die Datei eine Kopfzeile enthalten, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile haben soll, + * dann lassen Sie einfach die Option "header" weg. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile haben soll. + * @param filename Dateiname der CSV-Datei. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public void saveCSV(String filename, String options, char separator, char quote){ + try{ + File f = new File(filename); + PrintStream outputFile = new PrintStream (f); + System.out.println("Speicher in : "+f.getAbsolutePath()); + List columns = header.getChildren(); + String sq = ""+quote; + String ss = ""+separator; + if(quote =='"') sq = "\""; + if(separator =='"') ss = "\""; + + if(options.toLowerCase().contains("header")) { + String h = ""; + for(Element c : columns) { + h += ss + sq + c.getText()+sq; + } + outputFile.println(h.substring(1)); + } + for(int i = 0; i parseLine(String cvsLine) { + return parseLine(cvsLine, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** HIlfsfunktion für die Analyse einer Dateizeile + * @param cvsLine Zeile aus der Datei + * @param sparator Trennzeichen für die Spalten + * @return Liste von String für die einzelnen Spalten + */ + private List parseLine(String cvsLine, char separator) { + return parseLine(cvsLine, separator, DEFAULT_QUOTE); + } + + /** HIlfsfunktion für die Analyse einer Dateizeile + * @param cvsLine Zeile aus der Datei + * @param sparator Trennzeichen für die Spalten + * @param customQuote Kennung für Strings + * @return Liste von String für die einzelnen Spalten + */ + private List parseLine(String cvsLine, char separator, char customQuote) { + + List result = new ArrayList<>(); + + //if empty, return! + if (cvsLine == null && cvsLine.isEmpty()) { + return result; + } + + //ggf. Default-Value laden + if (customQuote == ' ') { + customQuote = DEFAULT_QUOTE; + } + + if (separator == ' ') { + separator = DEFAULT_SEPARATOR; + } + + StringBuffer curVal = new StringBuffer(); + boolean inQuotes = false; + boolean startCollectChar = false; + boolean doubleQuotesInColumn = false; + + char[] chars = cvsLine.toCharArray(); + + for (char ch : chars) { + + if (inQuotes) { // aktueller Text ist in Quotes eingeschlossen + startCollectChar = true; + + if (ch == customQuote) { // Quotes werden beendet, aber Achtung bei "" => Metazeichen + inQuotes = false; + if (ch == '\"') { + doubleQuotesInColumn = true; + } + + } else { + + if (ch == '\"' && !doubleQuotesInColumn) { + doubleQuotesInColumn = true; + } else { + curVal.append(ch); + doubleQuotesInColumn = false; + } + + } + } else { + if (ch == customQuote) { + + inQuotes = true; + + //Fixed : allow "" in empty quote enclosed + if (ch == '\"'){ + if(doubleQuotesInColumn) { + curVal.append('"'); + doubleQuotesInColumn = false; + } else doubleQuotesInColumn = true; + + + } + } + else { + doubleQuotesInColumn = false; + if (ch == separator) { + + result.add(curVal.toString()); + + curVal = new StringBuffer(); + startCollectChar = false; + + } else if (ch == '\r') { + //ignore LF characters + continue; + } else if (ch == '\n') { + //the end, break! + break; + } else { + curVal.append(ch); + } + } + } + + } + result.add(curVal.toString()); + return result; + } + + /** + * Sucht die Nummer einer durch Namen gegebenen Spalte. + * @param name Name der Spalte + * @return Nummer der Spalte + */ + + private int findColumnNumber(String name) { + List columns = header.getChildren(); + int i = 0; + for(Element c : columns) { + if (c.getText().toLowerCase().equals(name.toLowerCase())) { + return i; + + } + i++; + } + return -1; + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an. + */ + public void addColumn() { + Element entry = new Element("Column"); + entry.setAttribute("type", Table.UNKNOWN); + header.addContent(entry); + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an und benennt sie. + * @param title Bezeichnung der Spalte + */ + public void addColumn(String title) { + addColumn(); + Element nc = ((List)(header.getChildren())).get(header.getChildren().size()-1); + nc.setText(title); + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an und benennt und typisiert sie. + * @param title Bezeichnung der Spalte + * @param type Typ der Spalte (UNKNOWN, DOUBLE, INTEGER, FLOAT) + */ + public void addColumn(String title, String type) { + addColumn(title); + Element nc = ((List)(header.getChildren())).get(header.getChildren().size()-1); + nc.setAttribute("type", type); + } + + /** + * Löscht eine Spalte. + * @param i Nummer der Spalte. + */ + public void removeColumn(int i) { + List lines = doc.getRootElement().getChildren(); + for(Element l : lines) { + if(l.getChildren().size()>i) l.removeContent(i); + } + } + + /** + * Löscht eine Spalte + * @param name Name der Spalte + */ + public void removeColumn(String name) { + try{ + removeColumn(findColumnNumber(name)); + } catch(Exception e) { System.out.println("Unbekannter Spaltenname");} + } + + /** + * Liefert die Anzahl der Spalten in der Tabelle + * @return Anzahl der Spalten + */ + public int getColumnCount() { + return header.getChildren().size(); + } + + /** + * Liefert die Anzahl der Zeilen in der Tabelle + * @return Anzahl der Zeilen + */ + public int getRowCount() { + return doc.getRootElement().getChildren().size()-1; + } + + /** + * Löscht alle Zeilen der Tabelle. + * Die Spaltenüberschriften und Typen bleiben erhalten. + */ + public void clearRows() { + doc.getRootElement().removeChildren("Row"); + } + + /** + * Fügt eine neue Zeile an das Ende der Tabelle an. + * @return ein TableRow-Objekt für diese neue Zeile + */ + public TableRow addRow() { + Element row = new Element("Row"); + doc.getRootElement().addContent(row); + return new TableRow(doc, row); + } + + /** + * Löscht eine Zeile + * @param i Nummer der Zeile + */ + public void removeRow(int i) { + if(i rows = doc.getRootElement().getChildren(); + return new TableRow(doc, rows.get(i+1)); + } + return null; + } + + /** + * Liefert die ganze Tabelle als Array von TableRow-Objekten + * @return Array von TableRow-Objekten + */ + public TableRow[] rows() { + TableRow[] rows = new TableRow[getRowCount()]; + for(int i = 0; i < getRowCount(); i++) { + rows[i] = getRow(i); + } + return rows; + } + + /** + * Liefert den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param column Spaltennummer + * @return Wert der Zelle + */ + public int getInt(int row, int column) { + return getRow(row).getInt(column); + } + + /** + * Liefert den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param name Name der Spalte + * @return Wert der Zelle + */ + public int getInt(int row, String name) { + return getRow(row).getInt(name); + } + + /** + * Setzt den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param column Spaltennummer + * @param value neuer Wert der Zelle + */ + public void setInt(int row, int column,int value) { + getRow(row).setInt(column, value); + } + + /** + * Setzt den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(int row, String name, int value) { + getRow(row).setInt(name, value); + } + + /** + * Liefert alle Werte einer Zeile als Integer-Array. + * @param row Nummer der Zeile + * @return int-Array, dass alle Werte der Zeile enthält + */ + public int[] getIntRow(int row) { + try{ + TableRow trow = getRow(row); + int anz = getColumnCount(); + int[] r = new int[anz]; + for(int i=0; i) (header.getChildren())).get(i).getText(); + } else { + return ""; + } + } + + /** + * Liefert die Nummer einer Spalte + * @param name Name der Spalte + * @return Nummer der Spalte + */ + public int getColumn(String name) { + List columns = header.getChildren(); + int i = 0; + while (i < columns.size()) { + if (columns.get(i).getText().toLowerCase().equals(name.toLowerCase())) { + return i; + } + i++; + } // end of while + return -1; + } + + + /** + * Erzeugt eine neue Zeile mit i Spalten + * Wenn bisher nicht genügend Spalten vorhanden sind, werden automatisch neue Spalten hinzugefügt (auch zum Header) + * @param i Anzahl der Spalten + */ + private Element buildRow(int i) { + List columns = header.getChildren(); + Element entry=null; + for(int j=0; j<=i; j++) { + + if(j==columns.size()) { + Element h = new Element("Column"); + h.setAttribute("type", "unknown"); + header.addContent(h); + columns = header.getChildren(); + } + if(j==current.getChildren().size()) { + entry = new Element("Entry"); + current.addContent(entry); + + } + + } + return entry; + + } + + /** + * Erzeugt eine neue Zeile. + * Es werden genügend Spalten erzeugt, dass ein Wert in Spalte "name" eingetragen werden kann + * @param name Name der Spalte + */ + private Element buildRow(String name) { + List columns = header.getChildren(); + int i = 0; + for(Element c: columns) { + + if(c.getText().toLowerCase().equals(name.toLowerCase())) { + return buildRow(i); + } + i++; + } + return null; + + } + + /** + * Liefert den Wert einer Zelle als String + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public String getString(int i) { + if(i >= current.getContent().size()) return ""; + Element e = (Element) current.getContent(i) ; + if(e!=null) { + return e.getText(); + } else { + return ""; + } + } + + /** + * Liefert den Wert einer Zelle als String + * @param name Name der Spalte + * @return Wert der Zelle + */ + public String getString(String name) { + return getString(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als String + * @param i Nummer der Spalte + * @param text neuer Wert der Zelle + */ + public void setString(int i, String text) { + + Element e = buildRow(i); + if(e!=null) e.setText(text); + } + + /** + * Setzt den Wert einer Zelle als String + * @param name Name der Spalte + * @param text neuer Wert der Zelle + */ + public void setString(String name, String text) { + Element e = buildRow(name); + if(e!=null) e.setText(text); + } + + + /** + * Liefert den Wert einer Zelle als Int-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public int getInt(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Integer.parseInt(e.getText()); + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Int-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public int getInt(String name) { + return getInt(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Int-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(int i,int value) { + + Element e = buildRow(i); + if(e!=null) e.setText(""+value); + } + + /** + * Setzt den Wert einer Zelle als Int-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(String name, int value) { + Element e = buildRow(name); + if(e!=null) e.setText(""+value); + } + + /** + * Liefert den Wert einer Zelle als Float-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public float getFloat(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Float.parseFloat(e.getText().replace(",",".")); + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Float-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public float getFloat(String name) { + return getFloat(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Float-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setFloat(int i,float value) { + + Element e = buildRow(i); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Setzt den Wert einer Zelle als Float-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setFloat(String name, float value) { + Element e = buildRow(name); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Liefert den Wert einer Zelle als Double-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public double getDouble(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Double.parseDouble(e.getText().replace(",",".")); + + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Double-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public double getDouble(String name) { + return getDouble(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Double-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setDouble(int i,double value) { + + Element e = buildRow(i); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Setzt den Wert einer Zelle als Double-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setDouble(String name, double value) { + Element e = buildRow(name); + if(e!=null) e.setText(format.format(value)); + } + +} diff --git a/03_vorlagen_tauschordner/03_javaeditor/alg12_balkendiagramm_csv/XML.java b/03_vorlagen_tauschordner/03_javaeditor/alg12_balkendiagramm_csv/XML.java new file mode 100644 index 0000000..c06c490 --- /dev/null +++ b/03_vorlagen_tauschordner/03_javaeditor/alg12_balkendiagramm_csv/XML.java @@ -0,0 +1,637 @@ +/** + * Klasse zum Vereinfachten Zugriff auf XML-Dokumente + * Diese Klasse ist für den Einsatz in der Schule gedacht und soll den Schülern + * einen einfachen Zugriff auf XML-Dokumente ermöglichen. Die zur Verfügung + * stehenden Befehle sind wie in Processing realisiert. + * Dabei ist jeder Teilbaum des Dokuments wieder als XML-Objekt zugreifbar, das + * intern auf die gleiche XML-Dokumentstruktur zugreift. + * Dies ermöglicht bei unsachgemäßem Gebrauch die XML-Struktur zu zerstören. Im + * normalen Gebrauch sollte dies aber nicht relevant sein. + * + * Benötigt: jdom-1.1.3.jar + + * @author Thomas Schaller + * @version 1.0 vom 31.01.2019 + */ +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.ArrayList; +import java.io.*; + +import org.jdom.Document; +import org.jdom.Element; +import org.jdom.Attribute; +import org.jdom.JDOMException; +import org.jdom.input.SAXBuilder; +import org.jdom.output.XMLOutputter; +import org.jdom.output.Format; + +public class XML { + // Anfang Attribute + // XML-Dokumentstruktur + private Document doc; + // Zeiger auf das aktuelle Element + private Element current; + // Ende Attribute + + /** + * Erzeugt ein leeres XMLDokument + */ + public XML() { + this.doc = new Document(); + this.current = null; + } + + /** + * Erzeugt ein XML-Dokument aus einer Datei + * @param filename Dateiname der XML-Datei + */ + public XML(String filename) { + loadXML(filename); + } + + /** + * interner Konstruktor, um ein XML Objekt zu erzeugen, das auf einen bestimmten Knoten verweist + * @param doc die XML-Dokumentstruktur + * @param current Zeiger auf das aktuelle Element + */ + private XML(Document doc, Element current) { + this.doc = doc; + this.current = current; + } + + // Anfang Methoden + /** Öffnet das durch den Dateinamen gegebene Dokument + * @param filename Dateiname des XML-Files + */ + public void loadXML(String filename) { + doc = null; + File f = new File(filename); + + try { + // Das Dokument erstellen + SAXBuilder builder = new SAXBuilder(); + doc = builder.build(f); + + } catch (JDOMException e) { + e.printStackTrace(); + + } catch (IOException e) { + e.printStackTrace(); + } + // Zeiger im Baum auf Root-Element + current = doc.getRootElement(); + } + + /** Speichert den XML-Baum im angegebenen Dateinamen + * @param filename Dateiname des XML-Files + */ + public void saveXML(String filename) { + try { + // new XMLOutputter().output(doc, System.out); + XMLOutputter xmlOutput = new XMLOutputter(); + + // display nice nice + xmlOutput.setFormat(Format.getPrettyFormat()); + File f = new File(filename); + FileOutputStream outputFile = new FileOutputStream(f); + System.out.println("Speicher in : "+f.getAbsolutePath() ); + xmlOutput.output(doc, outputFile); + outputFile.close(); + System.out.println("File Saved!"); + } catch (IOException io) { + System.out.println(io.getMessage()); + } + + } + + //----------------------------------------------- Zeigerbewegungen -------------------------------------------------- + /** + * liefert ein XML-Objekt, das auf den Vaterknoten des aktuellen Elements zeigt. + * @return Vater des aktuellen Objekts. + */ + public XML getParent() { + if(current != null) { + Element parent = current.getParentElement(); + if (parent == null) { + return null; + } else { + return new XML(doc, parent); + } + } + return null; + } + + /** + * Überprüft, ob das Element irgendwelche Kinder hat oder nicht, und gibt das Ergebnis als boolean zurück. + * @return true, wenn Kinder vorhanden sind, sonst false + */ + public boolean hasChildren() { + if (current == null) { + return doc.hasRootElement(); + } else { + return current.getChildren().size()>0; + } + } + + /** + * Ermittelt die Namen aller Kinder des Elements und gibt die Namen als ein Array von Strings zurück. + * Dies ist dasselbe wie das Durchlaufen und Aufrufen von getName() auf jedem untergeordneten Element einzeln. + * @return Liste aller Namen der Kinder + */ + public String[] listChildren() { + if (current == null) { + if(doc.hasRootElement()) { + String[] names = new String[0]; + names[0] = doc.getRootElement().getName(); + return names; + } else { + return null; + } + } else { + List ch_element = current.getChildren(); + String[] names = new String[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + names[i] = ch_element.get(i).getName(); + } + return names; + } + } + + /** + * Liefert alle Kinder des Elements als Array von XML-Objekten. + * @return Array der Kinder als XML-Objekte + */ + public XML[] getChildren() { + if (current == null) { + if(doc.hasRootElement()) { + XML[] ch_xml = new XML[1]; + ch_xml[0] = new XML(doc, doc.getRootElement()); + return ch_xml; + } else { + return null; + } + } else { + List ch_element = current.getChildren(); + XML[] ch_xml = new XML[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + ch_xml[i] = new XML(doc, ch_element.get(i)); + } + return ch_xml; + } + } + + /** + * Liefert bestimmte Kinder des Elements als Array von XML-Objekten. + * Die Methode gibt dabei alle Kinder zurück, die dem angegebenen Namen entsprechen. + * @param name Name der gesuchten Kind-Objekte + * @return Array der Kinder als XML-Objekte + */ + public XML[] getChildren(String name) { + if (current == null) { + if(doc.hasRootElement()) { + XML[] ch_xml = new XML[1]; + ch_xml[0] = new XML(doc, doc.getRootElement()); + if(doc.getRootElement().getName().equals(name)){ + return ch_xml; + } else { + return null; + } + } else { + return null; + } + } else { + List ch_element = current.getChildren(name); + XML[] ch_xml = new XML[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + ch_xml[i] = new XML(doc, ch_element.get(i)); + } + return ch_xml; + } + } + + /** + * Liefert das erste Kind des Elements mit einem bestimmten Namen. + * Die Methode gibt das erste Kind zurück, das dem angegebenen Namen entsprechen. + * @param name Name des gesuchten Kind-Objektes + * @return Kind als XML-Objekt + */ + + public XML getChild(String name) { + if (current == null) { + Element e = doc.getRootElement(); + if (e.getName().equals(name)) { + return new XML(doc, e); + } else { + return null; + } + } else { + String[] names = name.split("/"); + Element e = current; + int i = 0; + while(i < names.length) { + e = e.getChild(names[i]); + if (e==null) return null; + i++; + } + return new XML(doc, e); + } + } + + /** + * Liefert das i. Kind des Elements. + * Die Methode gibt das i. Kind des aktuellen Elements zurück. + * @param i Nummer des Kindes + * @return Kind als XML-Objekt + */ + public XML getChild(int i) { + if (current == null) { + return new XML(doc, doc.getRootElement()); + } else { + List ch_element = current.getChildren(); + if (i>=ch_element.size()) return null; + return new XML(doc, ch_element.get(i)); + } + } + + //--------------------------------------------------- Methoden für das aktuelle Element ------------------------------------------------- + /** + * Frage den Namen des aktuellen Elements ab + * @return Namen des Elements + */ + public String getName() { + if (current==null) return ""; + return current.getName(); + } + + /** + * Setze den Namen des aktuellen Elements. + * @param name Neuer Name des Elements + */ + public void setName(String name) { + if (current==null) return; + current.setName(name); + } + + /** + * liefert die Anzahl der Attribute eines Elements. + * @return Anzahl des Attribute + */ + public int getAttributeCount() { + if (current == null) return 0; + return current.getAttributes().size(); + } + + /** + * liefert zurück, ob das aktuelle Element Attribute hat . + * @return true, wenn es Attribute gibt + */ + public boolean hasAttribute() { + if (current == null) return false; + return current.getAttributes().size()>0; + } + + /** + * Ruft alle Attribute des angegebenen Elements ab und gibt sie als Array von Strings zurück. + * @return Liste der Attributnamen + */ + public String[] listAttributes() { + if (current == null) return null; + List attr = current.getAttributes(); + String[] names = new String[attr.size()]; + for(int i=0; i < attr.size() ; i++) { + names[i] = attr.get(i).getName(); + } + return names; + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs + */ + public String getString(String attribute) { + if (current==null) return ""; + return current.getAttributeValue(attribute); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs + */ + public String getString(String attribute, String defaultValue) { + if (current==null) return defaultValue; + return current.getAttributeValue(attribute,defaultValue); + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param text neuer Wert des Attributs + */ + public void setString(String attribute, String text) { + if (current==null) return; + current.setAttribute(attribute, text); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Integer-Zahl + */ + public int getInt(String attribute) { + if (current==null) return 0; + try{ + int i = Integer.parseInt(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als Integer-Zahl + */ + public int getInt(String attribute, int defaultValue) { + if (current==null) return defaultValue; + try{ + int i = Integer.parseInt(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setInt(String attribute, int value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Float-Zahl + */ + public float getFloat(String attribute) { + if (current==null) return 0; + try{ + float i = Float.parseFloat(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als Float-Zahl + */ + public float getFloat(String attribute, float defaultValue) { + if (current==null) return defaultValue; + try{ + float i = Float.parseFloat(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setFloat(String attribute, float value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Double-Zahl + */ + public double getDouble(String attribute) { + if (current==null) return 0; + try{ + double i = Double.parseDouble(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + +/** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als double-Zahl + */ + public double getDouble(String attribute, double defaultValue) { + if (current==null) return defaultValue; + try{ + double i = Double.parseDouble(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setDouble(String attribute, double value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt den Inhalt/Text des aktuellen Elements ab + * @return Inhalt des Elements + */ + public String getContent() { + if ( current==null) return ""; + + return current.getText(); + } + + /** + * Fragt den Inhalt/Text des aktuellen Elements ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardtext + * @return Inhalt des Elements + */ + public String getContent(String defaultValue) { + if ( current==null) return defaultValue; + String t = current.getText(); + if(t.equals("")) t = defaultValue; + return t; + } + + /** + * Setzt den Inhalt/Text des aktuellen Elements + * @param text Neuer Inhalt des Elements + */ + public void setContent(String text) { + if ( current==null) return; + current.setText(text); + } + + + /** + * Fragt den Inhalt des aktuellen Elements als Integerzahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ public int getIntContent(int defaultValue) { + if ( current==null) return defaultValue; + try{ + int i = Integer.parseInt(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Integerzahl ab + * @return Inhalt des Elements + */ + public int getIntContent() { + if ( current==null) return 0; + try{ + int i = Integer.parseInt(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setIntContent(int value) { + if ( current==null) return; + current.setText(""+value); + } + + + /** + * Fragt den Inhalt des aktuellen Elements als Floatzahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ + public float getFloatContent(float defaultValue) { + if ( current==null) return defaultValue; + try{ + float i = Float.parseFloat(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Floatzahl ab + * @return Inhalt des Elements + */ + public float getFloatContent() { + if ( current==null) return 0; + try{ + float i = Float.parseFloat(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setFloatContent(float value) { + if ( current==null) return; + current.setText(""+value); + } + +/** + * Fragt den Inhalt des aktuellen Elements als Doublezahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ + public double getDoubleContent(double defaultValue) { + if ( current==null) return defaultValue; + try{ + double i = Double.parseDouble(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Doublezahl ab + * @return Inhalt des Elements + */ + public double getDoubleContent() { + if ( current==null) return 0; + try{ + double i = Double.parseDouble(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setDoubleContent(double value) { + if ( current==null) return; + current.setText(""+value); + } + + + // ----------------------------------------------- XML-Struktur aufbauen ------------------------------------------------ + /** Erzeuge neues Element nach der aktuellen Position und setze dieses als aktuelles Element + * @param name Name des neuen Elements + * @return neues Element als XML-Objekt + */ + public XML addChild(String name) { + Element e = new Element(name); + if(current == null){ // man ist auf Root-Ebene + doc.setRootElement(e); + + } + else { + current.addContent(e); + } // end of if-else + return new XML(doc, e); + } + + /** + * liefert das aktuelle Element als jdom-Element-Objekt + * @return aktuelles Element + */ + private Element getCurrent() { + return current; + } + + /** + * löscht ein Kind des aktuellen Knotens. + * Ist kid kein Kind des aktuellen Elements passiert gar nichts. + * @param kid XML-Objekt des Kindes + */ + public void removeChild(XML kid) { + if (current == null) return; + Element e = kid.getCurrent(); + int index = current.indexOf(e); + if(index >= 0) { current.removeContent(e);} + } + +} diff --git a/03_vorlagen_tauschordner/03_javaeditor/alg12_balkendiagramm_csv/jdom-1.1.3.jar b/03_vorlagen_tauschordner/03_javaeditor/alg12_balkendiagramm_csv/jdom-1.1.3.jar new file mode 100644 index 0000000..a287727 Binary files /dev/null and b/03_vorlagen_tauschordner/03_javaeditor/alg12_balkendiagramm_csv/jdom-1.1.3.jar differ diff --git a/03_vorlagen_tauschordner/03_javaeditor/alg12_balkendiagramm_csv/punkte.csv b/03_vorlagen_tauschordner/03_javaeditor/alg12_balkendiagramm_csv/punkte.csv new file mode 100644 index 0000000..d6e8dfd --- /dev/null +++ b/03_vorlagen_tauschordner/03_javaeditor/alg12_balkendiagramm_csv/punkte.csv @@ -0,0 +1,6 @@ +"Name","Punkte" +Niko,216 +Klaus,591 +Anna,857 +Lena,180 +Winfried,168 diff --git a/03_vorlagen_tauschordner/03_javaeditor/alg13_maximumsuche/Balkendiagramm.java b/03_vorlagen_tauschordner/03_javaeditor/alg13_maximumsuche/Balkendiagramm.java new file mode 100644 index 0000000..cc81941 --- /dev/null +++ b/03_vorlagen_tauschordner/03_javaeditor/alg13_maximumsuche/Balkendiagramm.java @@ -0,0 +1,154 @@ +import java.awt.Font; + +/** + * Balkendiagramm für int-Array, Zahlen werden aus CSV-Datei gelesen, Maximum der Werte wird bestimmt. + * Hinweis zur Benutzung: + * Start des Algorithmus: Klicke den Button Maximumsuche an. + * Start des automatischen Tests: Klicke den Button Testen an. Die Ausgabe erfolgt in der Konsole. + * + * @author Schaller + * @version 29.11.18 + */ +public class Balkendiagramm extends Picture + +{ + // Liste mit allen Werten //<>// + int[] zahlen; + String[] namen; + + // Hilfsvariablen für die Suche + // ------------------------------------------------------------------- + // ToDo: Hilfsvariablen erzeugen für aktuell größtes und aktuell + // untersuchtes Element + // ------------------------------------------------------------------- + // aktuell groesstes Element + // aktuell untersuchtes Element + int verzoegerung=1000; // Geschwindigkeit der Ausführung + + // Schriften + Font kleineSchrift; + Font grosseSchrift; + + public Balkendiagramm() { + size(1000, 700); + background(0); + kleineSchrift = new Font( Font.SANS_SERIF, Font.PLAIN, 12 ); + grosseSchrift = new Font( Font.SANS_SERIF, Font.PLAIN, 20 ); + + // Deaktiviere die automatische Neudarstellung nach einem Zeichenbefehl + setAutoRefresh(false); + + // CSV-Datei laden und anzeigen + ladeTabelle("punkte.csv"); + + zeichneBalken(); + } + + + + public void ladeTabelle(String name) { + // Tabelle aus CSV-Datei laden //<>// + Table csv = new Table(name, "header", ',', '"'); + + if (csv != null && csv.getColumnCount()==2) { + + // Initialisiere Arrays, in die alle Zeilen der Tabelle passen + zahlen = new int[csv.getRowCount()]; + namen = new String[csv.getRowCount()]; + + // Fülle die Arrays mit Werten aus der Tabelle + for (int i = 0; i < zahlen.length; i++) { + // Lies Wert aus der i. Zeile und der Spalte "Punkte" bzw. "Name" + zahlen[i] = csv.getInt(i, "Punkte"); + namen[i] = csv.getString(i, "Name"); + } + } + } + + public void zeichneBalken() { + + clear(); + + // Überschrift + fill(255,255,255); + textFont(grosseSchrift); + text("Punkte", 2, 20); + textFont(kleineSchrift); + + // Alle Einträge darstellen + if (zahlen != null) { + for (int i = 0; i< zahlen.length; i++) { + + fill(20,25,165); + // aktuelle Elemente farblich hervorheben + // ---------------------------------------------------------------------- + // ToDo: Falls i dem aktuell untersuchtem oder der aktuellen Maximal- + // position entspricht, muss eine andere Farbe gewählt werden + // ---------------------------------------------------------------------- + + // Balkendiagramm zeichnen + if (zahlen[i]>=0) rect(120, 25+i*15, zahlen[i]+1, 13); + + // Beschriftung + fill(255,255,255); + text(namen[i], 2, 35+i*15); + text(""+zahlen[i], 70, 35+i*15); + } + } + refresh(); + } + + + public int maximumsuche() { + // ------------------------------------------------------------------------------ + // ToDO: Implementiere die Maximumsuche, füge nach jeder Veränderung der + // Position des aktuellen Elements oder der Position des momentanen Maximums + // die Befehle: zeichneBalken(); und delay(verzoegerung); ein. + // Als Ergebnis soll die Methode die Position des Maximums zurückgeben + // Kommentiere die Maximumsuche + // ------------------------------------------------------------------------------ + //<>// + return -1; + } + + public void testen() { + // Testfall 1 + verzoegerung = 0; //<>// + ladeTabelle("testfall1.csv"); + int m1 = maximumsuche(); + if (m1 == 12) { + System.out.println("Maximum korrekt gefunden. In Datei testfall1.csv ist der größte Wert "+ zahlen[m1]+" von "+namen[m1]+" an Position "+m1); + } else { + System.out.println("Maximum in testfall.csv nicht gefunden. Du ermittelst "+m1+" richtig wäre 12"); + } + // Testfall 2: negative Zahlen + ladeTabelle("testfall2.csv"); + int m2 = maximumsuche(); + if (m2 == 3) { + System.out.println("Maximum korrekt gefunden. In Datei testfall2.csv ist der größte Wert "+ zahlen[m2]+" von "+namen[m2]+" an Position "+m2); + } else { + System.out.println("Maximum in testfall2.csv nicht gefunden. Du ermittelst "+m2+" richtig wäre 3"); + } + // Testfall 3: Nur 1 Element + ladeTabelle("testfall3.csv"); + int m3 = maximumsuche(); + if (m3 == 0) { + System.out.println("Maximum korrekt gefunden. In Datei testfall3.csv ist der größte Wert "+ zahlen[m3]+" von "+namen[m3]+" an Position "+m3); + } else { + System.out.println("Maximum in testfall3.csv nicht gefunden. Du ermittelst "+m3+" richtig wäre 0"); + } + // Testfall 4: Leere Liste + ladeTabelle("testfall4.csv"); + int m4 = maximumsuche(); + if (m4 == -1) { + System.out.println("Maximum korrekt gefunden. Da die Datei keine Spieler enthält wird -1 zurückgegeben."); + } else { + System.out.println("Maximum in testfall4.csv nicht gefunden. Du ermittelst "+m4+" richtig wäre -1, da die Datei leer ist."); + } + + } + + + + +} diff --git a/03_vorlagen_tauschordner/03_javaeditor/alg13_maximumsuche/BalkendiagrammGUI.java b/03_vorlagen_tauschordner/03_javaeditor/alg13_maximumsuche/BalkendiagrammGUI.java new file mode 100644 index 0000000..797c4cf --- /dev/null +++ b/03_vorlagen_tauschordner/03_javaeditor/alg13_maximumsuche/BalkendiagrammGUI.java @@ -0,0 +1,141 @@ +import java.awt.*; +import java.awt.event.*; +import javax.swing.*; +import javax.swing.event.*; + +/** + * + * description + * + * @version 1.0 from 06.10.2018 + * @author + */ + +public class BalkendiagrammGUI extends JFrame { + // Anfang Attribute + private JButton bZeichnen = new JButton(); + private PictureViewer imagePanel1 = new PictureViewer(); + + private JButton bMaximumsuche = new JButton(); + private JButton bTesten = new JButton(); + private Balkendiagramm bild; + private Picture b; + private Timer timer1 = new Timer(1000, null); + // Ende Attribute + + public BalkendiagrammGUI (String title) { + super (title); + setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); + int frameWidth = 768; + int frameHeight = 551; + setSize(frameWidth, frameHeight); + Dimension d = Toolkit.getDefaultToolkit().getScreenSize(); + int x = (d.width - getSize().width) / 2; + int y = (d.height - getSize().height) / 2; + setLocation(x, y); + Container cp = getContentPane(); + cp.setLayout(null); + // Anfang Komponenten + bZeichnen.setBounds(24, 456, 209, 33); + bZeichnen.setText("Balkendiagramm zeichnen"); + bZeichnen.setMargin(new Insets(2, 2, 2, 2)); + bZeichnen.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent evt) { + bZeichnen_ActionPerformed(evt); + } + }); + cp.add(bZeichnen); + imagePanel1.setBounds(24, 16, 705, 409); + cp.add(imagePanel1); + + bMaximumsuche.setBounds(280, 456, 201, 33); + bMaximumsuche.setText("Maximumsuche"); + bMaximumsuche.setMargin(new Insets(2, 2, 2, 2)); + bMaximumsuche.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent evt) { + bMaximumsuche_ActionPerformed(evt); + } + }); + cp.add(bMaximumsuche); + bTesten.setBounds(512, 456, 185, 33); + bTesten.setText("Testen"); + bTesten.setMargin(new Insets(2, 2, 2, 2)); + bTesten.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent evt) { + bTesten_ActionPerformed(evt); + } + }); + cp.add(bTesten); + timer1.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent evt) { + timer1_ActionPerformed(evt); + } + }); + b = new Picture(700,800); + imagePanel1.setImage(b); + b.setObserver(imagePanel1); + timer1.setRepeats(true); + timer1.setInitialDelay(0); + timer1.setDelay(100); + timer1.start(); + addWindowListener(new WindowAdapter() { + public void windowClosed(WindowEvent evt) { + BalkendiagrammGUI_WindowClosed(evt); + } + }); + // Ende Komponenten + setResizable(false); + setVisible(true); + } + + // Anfang Methoden + public void bZeichnen_ActionPerformed(ActionEvent evt) { + bild = new Balkendiagramm(); + imagePanel1.setImage(bild); + bild.setObserver(imagePanel1); + imagePanel1.getVerticalScrollBar().setValue(10); + imagePanel1.getVerticalScrollBar().setValue(0); + imagePanel1.getViewport().repaint(); + } // end of bZeichnen_ActionPerformed + + public void bMaximumsuche_ActionPerformed(ActionEvent evt) { + bild = new Balkendiagramm(); + imagePanel1.setImage(bild); + bild.setObserver(imagePanel1); + imagePanel1.getVerticalScrollBar().setValue(10); + imagePanel1.getVerticalScrollBar().setValue(0); + imagePanel1.getViewport().repaint(); + new Thread( new Runnable() { + @Override public void run() { + bild.maximumsuche(); + } +} ).start(); + } // end of bMaximumsuche_ActionPerformed + + public void bTesten_ActionPerformed(ActionEvent evt) { + bild = new Balkendiagramm(); + imagePanel1.setImage(bild); + bild.setObserver(imagePanel1); + imagePanel1.getVerticalScrollBar().setValue(10); + imagePanel1.getVerticalScrollBar().setValue(0); + imagePanel1.getViewport().repaint(); + bild.testen(); + } // end of bTesten_ActionPerformed + + public void timer1_ActionPerformed(ActionEvent evt) { + imagePanel1.getViewport().repaint(); + + } // end of timer1_ActionPerformed + + public void BalkendiagrammGUI_WindowClosed(WindowEvent evt) { + timer1.stop(); + + } // end of BalkendiagrammGUI_WindowClosed + + // Ende Methoden + + public static void main(String[] args) { + new BalkendiagrammGUI("BalkendiagrammGUI"); + } +} + diff --git a/03_vorlagen_tauschordner/03_javaeditor/alg13_maximumsuche/BalkendiagrammGUI.jfm b/03_vorlagen_tauschordner/03_javaeditor/alg13_maximumsuche/BalkendiagrammGUI.jfm new file mode 100644 index 0000000..bc71e44 --- /dev/null +++ b/03_vorlagen_tauschordner/03_javaeditor/alg13_maximumsuche/BalkendiagrammGUI.jfm @@ -0,0 +1,213 @@ +object BalkendiagrammGUI: TFGUIForm + Left = 761 + Top = 237 + BorderIcons = [biSystemMenu] + Caption = 'BalkendiagrammGUI' + ClientHeight = 512 + ClientWidth = 752 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -10 + Font.Name = 'MS Sans Serif' + Font.Style = [] + FormStyle = fsStayOnTop + OldCreateOrder = True + Position = poDesigned + ShowHint = True + Visible = True + OnClose = FormClose + OnCloseQuery = FormCloseQuery + OnResize = FormResize + FrameType = 5 + Resizable = False + Undecorated = False + Background = clBtnFace + windowClosed = 'BalkendiagrammGUI_WindowClosed' + PixelsPerInch = 96 + TextHeight = 13 + object bZeichnen: TJButton + Tag = 4 + Left = 24 + Top = 456 + Width = 209 + Height = 33 + Hint = 'jButton1' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Dialog' + Font.Style = [fsBold] + Foreground = 3355443 + Background = 15658734 + actionPerformed = 'bZeichnen_ActionPerformed' + Text = 'Balkendiagramm zeichnen' + Mnemonic = 0 + DisplayedMnemonicIndex = 0 + Selected = False + BorderPainted = True + FocusPainted = False + ContentAreaFilled = True + HorizontalAlignment = CENTER + VerticalAlignment = CENTER + HorizontalTextPosition = RIGHT + VerticalTextPosition = CENTER + IconTextGap = 4 + RolloverEnabled = False + Border.BorderType = NoBorder + Border.LineColor = clBlack + Border.LineThickness = 0 + Border.LineRounded = False + Border.EtchHighlightColor = clBlack + Border.EtchShadowColor = clBlack + Border.Etchtype = 0 + Border.BevelHighlightColor = clBlack + Border.BevelShadowColor = clBlack + Border.Beveltype = 0 + Border.MatteColor = clBlack + Border.MatteTop = 0 + Border.MatteLeft = 0 + Border.MatteBottom = 0 + Border.MatteRight = 0 + end + object imagePanel1: TJPanel + Tag = 38 + Left = 24 + Top = 16 + Width = 705 + Height = 409 + Hint = 'imagePanel1' + HelpKeyword = 'ImagePanel' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Dialog' + Font.Style = [fsBold] + Foreground = 3355443 + Background = clBtnFace + Border.BorderType = NoBorder + Border.LineColor = clBlack + Border.LineThickness = 0 + Border.LineRounded = False + Border.EtchHighlightColor = clBlack + Border.EtchShadowColor = clBlack + Border.Etchtype = 0 + Border.BevelHighlightColor = clBlack + Border.BevelShadowColor = clBlack + Border.Beveltype = 0 + Border.MatteColor = clBlack + Border.MatteTop = 0 + Border.MatteLeft = 0 + Border.MatteBottom = 0 + Border.MatteRight = 0 + end + object bMaximumsuche: TJButton + Tag = 4 + Left = 280 + Top = 456 + Width = 201 + Height = 33 + Hint = 'jButton1' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Dialog' + Font.Style = [fsBold] + Foreground = 3355443 + Background = 15658734 + actionPerformed = 'bMaximumsuche_ActionPerformed' + Text = 'Maximumsuche' + Mnemonic = 0 + DisplayedMnemonicIndex = 0 + Selected = False + BorderPainted = True + FocusPainted = False + ContentAreaFilled = True + HorizontalAlignment = CENTER + VerticalAlignment = CENTER + HorizontalTextPosition = RIGHT + VerticalTextPosition = CENTER + IconTextGap = 4 + RolloverEnabled = False + Border.BorderType = NoBorder + Border.LineColor = clBlack + Border.LineThickness = 0 + Border.LineRounded = False + Border.EtchHighlightColor = clBlack + Border.EtchShadowColor = clBlack + Border.Etchtype = 0 + Border.BevelHighlightColor = clBlack + Border.BevelShadowColor = clBlack + Border.Beveltype = 0 + Border.MatteColor = clBlack + Border.MatteTop = 0 + Border.MatteLeft = 0 + Border.MatteBottom = 0 + Border.MatteRight = 0 + end + object bTesten: TJButton + Tag = 4 + Left = 512 + Top = 456 + Width = 185 + Height = 33 + Hint = 'jButton2' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Dialog' + Font.Style = [fsBold] + Foreground = 3355443 + Background = 15658734 + actionPerformed = 'bTesten_ActionPerformed' + Text = 'Testen' + Mnemonic = 0 + DisplayedMnemonicIndex = 0 + Selected = False + BorderPainted = True + FocusPainted = False + ContentAreaFilled = True + HorizontalAlignment = CENTER + VerticalAlignment = CENTER + HorizontalTextPosition = RIGHT + VerticalTextPosition = CENTER + IconTextGap = 4 + RolloverEnabled = False + Border.BorderType = NoBorder + Border.LineColor = clBlack + Border.LineThickness = 0 + Border.LineRounded = False + Border.EtchHighlightColor = clBlack + Border.EtchShadowColor = clBlack + Border.Etchtype = 0 + Border.BevelHighlightColor = clBlack + Border.BevelShadowColor = clBlack + Border.Beveltype = 0 + Border.MatteColor = clBlack + Border.MatteTop = 0 + Border.MatteLeft = 0 + Border.MatteBottom = 0 + Border.MatteRight = 0 + end + object timer1: TTimer + Tag = 49 + Left = 712 + Top = 456 + Width = 33 + Height = 28 + Hint = 'timer1' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Dialog' + Font.Style = [fsBold] + Foreground = 3355443 + Background = 15658734 + actionPerformed = 'timer1_ActionPerformed' + Coalesce = False + Delay = 100 + InitialDelay = 0 + LogTimers = False + Repeats = True + end +end diff --git a/03_vorlagen_tauschordner/03_javaeditor/alg13_maximumsuche/Picture.java b/03_vorlagen_tauschordner/03_javaeditor/alg13_maximumsuche/Picture.java new file mode 100644 index 0000000..8df3d55 --- /dev/null +++ b/03_vorlagen_tauschordner/03_javaeditor/alg13_maximumsuche/Picture.java @@ -0,0 +1,699 @@ +import java.awt.image.*; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.BasicStroke; +import java.util.Vector; +import javax.imageio.*; +import java.io.*; +import java.awt.*; +import javax.swing.*; +import java.util.Random; +import java.awt.geom.AffineTransform; +/** + * + * Bildklasse für die Simulation von Processing-Befehlen + * + * Diese Klasse stellt ein BufferedImage bereit, in das mit Processing-Befehlen gezeichnet + * werden kann. + * Zusätzlich kann ein Bildanzeiger über jede Änderung des Bildes informiert werden, + * um "Zurück"-Befehle zu ermöglichen. Der Bildanzeiger ist entweder eine normale Java + * ScrollPane oder ein Actor aus Greenfoot. + * Die Dokumentation der einzelnen Zeichenmethoden ist der Processing-Reference + * (https://processing.org/reference/ steht unter CC-Lizenz: https://creativecommons.org/) + * entnommen und mit Deepl.com ins Deutsche übersetzt. + * + * @version 1.0 from 23.01.2019 + * @author Thomas Schaller (ZPG Informatik Klasse 9) + */ + +public class Picture{ + + // Einstellungmöglichkeiten für das Zeichnen von Rechtecken und Ellipsen + // RADIUS = Mittelpunkt+Radius wird gegeben, CENTER = Mittelpunkt und Breite/Höhe wird gegeben, + // CORNER = Linke obere Ecke + Breite/Höhe, CORNERS = Linke obere und rechte untere Ecke + public static final int RADIUS = 1; + public static final int CENTER = 2; + public static final int CORNER = 3; + public static final int CORNERS = 4; + + // gespeichertes Bild, + private BufferedImage image; + + // aktuelle Farbeinstellungen + private Color background; + private Color pencolor; + private Color fillcolor; + + // aktuelle Stiftdicke + private double stroke; + + // akkteller Koordinatenmodus von Rechtecken und Ellipsen + private int ellipseMode = CENTER; + private int rectMode = CORNER; + + // aktueller Font + private Font textfont = null; + + // muss ein Bildanzeiger benachrichtigt werden + private PictureViewer observer = null; + private boolean autorefresh = true; + + /** + * Erzeugt ein Bild mit Standardgröße 500x400 + */ + public Picture() { + this(500,400); + } + + /** + * Erzeugt ein Bild der angegeben Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public Picture(int width, int height) { + this(width,height, "D0D0D0"); + } + + /** + * Erzeugt ein Bild aus einer Datei + * @param filename Dateiname des Bildes + */ + public Picture(String filename) { + load(filename); + } + + /** + * Erzeugt ein Bild der angegebenen Größe mit festgelegtem Hintergrund + * @param width Breite des Bildes + * @param height Höhe des Bildes + * @param background Farbe des Hintergrunds + */ + public Picture(int width, int height, String background) { + this.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + this.background = decode(background); + this.pencolor = new Color(0,0,0); + this.stroke = 1; + this.fillcolor = null; + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(this.background); + g.fillRect(0,0,width-1, height-1); + } + + /** + * Legt fest, wer das Bild anzeigt. + * Diese ermöglicht die Benachrichtung des Observers, wenn sich das Bild ändert. + * @param observer Anzeiger des Bildes + */ + + public void setObserver(PictureViewer observer) { + this.observer= observer; + } + + /** + * Direktes Setzen des Bildes (für interne Zwecke) + * @param b Bild, das gespeichert werden soll. + */ + public void setImage(BufferedImage b) { + image = b; + } + + /** + * Direktes Abfragen des Bildes (für interne Zwecke) + * @return Bild, das gerade gespeichert ist. + */ + public BufferedImage getImage() { + return image; + } + + /** + * Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + * Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + * der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu. + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public void size(int width, int height){ + pushImage(); + this.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(background); + g.fillRect(0,0,width-1, height-1); + } + + /** + * Liefert die Breite des Bildes zurück. + * @return Breite des Bildes + */ + public int getWidth() { + return image.getWidth(); + } + + /** + * Liefert die Höhe des Bildes zurück. + * @return Höhe des Bildes + */ + public int getHeight() { + return image.getHeight(); + } + + + /** + * Erzeugt eine Kopie des Bildes und übergibt sie an den Observer (falls existent), damit dieser die Versionen speichern kann + */ + private void pushImage() { + if(observer != null) { + observer.pushImage(); + } + } + + + /** + * Legt fest, ob nach jedem Zeichenbefehl automatisch das Bild auch in + * der Oberfläche aktualisiert wird. Die Einstellung "false" beschleunigt + * das Zeichnen aufwändiger Bilder und verhindert "Flackern". + * Das Neuzeichnen kann durch die Methode "refresh" gezielt ausgelöst werden. + * @param autorefresh true = nach jedem Zeichenbefehl die Anzeige aktualisieren, false= nur durch die Methode refresh neu zeichnen + */ + public void setAutoRefresh(boolean autoRefresh) { + this.autorefresh = autoRefresh; + } + + + /** + * Auch die anzeigenden Klasse wird zum Neuzeichnen aufgefordert. + */ + private void repaint() { + if(observer != null && autorefresh) { + observer.repaint(); + } + } + + /** + * Auch die anzeigenden Klasse wird zum Neuzeichnen aufgefordert. + */ + public void refresh() { + if(observer != null) { + observer.repaint(); + } + } + + // ----------------------------------------- Zeichenfunktionen ----------------------------------------------- + /** + * Löscht den Inhalt des Bildes. + * Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt. + */ + + public void clear(){ + pushImage(); + image = new BufferedImage(image.getWidth(), image.getHeight(), image.getType()); + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(background); + g.fillRect(0,0,image.getWidth()-1, image.getHeight()-1); + repaint(); + } + + /** + * Konvertiert die in einem bestimmten Modus gegebenen Koordinaten in die Java-übliche Links_Oben_Breite_Höhe Version + * Die Änderungen werden direkt im Array vorgenommen + * @param coord Array mit vier Koordinateneinträgen im gegebenen Modus + * @param mode Modus der Koordinaten (CORNER, CORNERS, RADIUS oder CENTER) + */ + private void convert(int[] coord, int mode) { + switch(mode) { + case CORNER: break; + case CORNERS: coord[2] -= coord[0]; coord[3] -= coord[1]; break; + case RADIUS: coord[2] *= 2; coord[3] *=2; + case CENTER: coord[0] -= coord[2]/2; coord[1] -= coord[3]/2; + } + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + * Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + * Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void rectMode(int mode) { + rectMode = mode; + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + * Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + * Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als Breite und Höhe der Form. + * ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void ellipseMode(int mode) { + ellipseMode = mode; + } + + + + /** + * Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + * Um eine Linie einzufärben, verwenden Sie die {@link #stroke(int, int, int) stroke()} Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + * Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + * {@link #strokeWeight(double) strokeWeight()} geändert werden. + * @param x1 x-Koordinate des 1. Punktes + * @param y1 y-Koordinate des 1. Punktes + * @param x2 x-Koordinate des 2. Punktes + * @param y2 y-Koordinate des 2. Punktes + */ + public void line(int x1, int y1, int x2, int y2) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + if (stroke > 0) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawLine(x1, y1, x2, y2); + } + repaint(); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, rectMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillRect(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawRect(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, ellipseMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillOval(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawOval(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + int px[] = {x1, x2, x3}; + int py[] = {y1, y2, y3}; + polygon(px, py); + + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + + int px[] = {x1, x2, x3, x4}; + int py[] = {y1, y2, y3, y4}; + polygon(px, py); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + + public void polygon(int[] x, int[] y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(fillcolor != null) { + + g.setColor(fillcolor); + g.fillPolygon(x,y, y.length); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawPolygon(x, y, x.length); + } + repaint(); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + ellipse(x,y,1, 1); + + } + + // ----------------------------------------- Schriftdarstellung ----------------------------------------------- + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param s Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String s, int x, int y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(pencolor != null) { + g.setColor(fillcolor); + g.setStroke(new BasicStroke((float) stroke)); + g.setFont(textfont); + g.drawString(s, x, y); + } + repaint(); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + this.textfont = font; + } + + + // ----------------------------------------- Farbfestlegungen ----------------------------------------------- + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(String color) { + try{ + return new Color( + Integer.valueOf( color.substring( 0, 2 ), 16 ), + Integer.valueOf( color.substring( 2, 4 ), 16 ), + Integer.valueOf( color.substring( 4, 6 ), 16 ) ); + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(int color) { + try{ + if(color >=0 && color < 256) { + return new Color(color,color,color); + } else { + int r = color / 0x010000 % 0xFF; + int g = color / 0x000100 % 0xFF; + int b = color % 0xFF; + System.out.println(""+r+","+g+","+b); + return new Color(r, g, b ); + } + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + this.pencolor = decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + this.pencolor=decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + this.pencolor = new Color(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + this.pencolor = null; + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + this.stroke = width; + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + this.fillcolor = decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + this.fillcolor=decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + this.fillcolor = new Color(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + this.fillcolor = null; + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + if(c < 256) { + this.background=new Color(c,c,c); + } else { + int r = c / 0x010000; + int g = c / 0x000100 % 0xFF; + int b = c % 0xFF; + this.background= new Color(r, g, b ); + } + + this.clear(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + this.background=new Color(r,g,b); + this.clear(); + } + + +// ----------------------------------------- Dateioperationen ----------------------------------------------- + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + try{ + this.image = ImageIO.read(new File(filename)); + this.background = decode("D0D0D0"); + this.pencolor = new Color(0,0,0); + this.fillcolor = null; + this.stroke = 1; + this.repaint(); + + } catch(Exception e) { + System.out.println("Fehler beim Einlesen der Bilddatei"); + } + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + try{ + String[] fn = filename.split("\\."); + if (fn.length== 1) { + ImageIO.write(image, "PNG", new File(filename+".png")); + } else { + + if (fn.length == 2 && (fn[1].toUpperCase().equals("PNG") || + fn[1].toUpperCase().equals("GIF"))){ + ImageIO.write(image, fn[1], new File(filename)); + }else { + System.out.println("Unbekanntes Bildformat"); + } + } + + } catch(Exception e) { + System.out.println("Fehler beim Speichern"); + } + } + + +// ----------------------------------------- Sonstiges ----------------------------------------------- + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + + public Color[][] getPixelArray() { + Color[][] pixel = new Color[image.getWidth()][image.getHeight()]; + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + pixel[x][y] = new java.awt.Color(image.getRGB(x,y)); + } + } + return pixel; + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + size(pixel.length,pixel[0].length); + Graphics2D g = (Graphics2D) image.getGraphics(); + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + g.setColor(pixel[x][y]); + g.fillRect(x, y, 1, 1); + } + } + repaint(); + } + + /** + * Hilfsfunktion zum Verzögern der Ausgabe + * @param millis Wartezeit in Millisekunden + */ + public void delay(int millis) { + try{ + Thread.sleep(millis); + + } catch(Exception e) { + + } + + } + + + +} diff --git a/03_vorlagen_tauschordner/03_javaeditor/alg13_maximumsuche/PictureViewer.java b/03_vorlagen_tauschordner/03_javaeditor/alg13_maximumsuche/PictureViewer.java new file mode 100644 index 0000000..9e6b151 --- /dev/null +++ b/03_vorlagen_tauschordner/03_javaeditor/alg13_maximumsuche/PictureViewer.java @@ -0,0 +1,505 @@ +/** + * Zeigt ein Bild in einem Scrollbereich an. + * Es ist möglich das Bild zu zoomen und mehrere Versionen des Bildes zu speichern, um eine "Rückgängig" Operation durchzuführen. + * @author Thomas Schaller + * @version 1.0 vom 01.02.2019 + */ + +import java.awt.*; +import java.awt.event.*; +import javax.swing.*; +import java.awt.image.*; +import java.util.Vector; + +public class PictureViewer extends JScrollPane +{ + + // das aktuelle Bild + private Picture picture; + + // Bilder für den Züruck-Modus speichern + private static final int ANZ_BACK = 20; + private Vector history; + + // Zeichenfläche + private ImageIcon scrollImageIcon; + private JLabel imageLabel; + + // Zoom Faktor + private double zoomFactor; + public static final int FIT = -1; + public static final int NORMAL = 1; + + + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der Größe 1000x1000 + */ + public PictureViewer() { + this(1000,1000); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public PictureViewer(int width, int height) { + this(width,height, "D0D0D0"); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + * @param background Farbe des Hintergrunds als HEX-String (z.B. "FF3A45") + */ + public PictureViewer(int width, int height, String background) { + this(new Picture(width,height, background)); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild aus einer Bilddatei + * @param filename Name des Bildes + */ + public PictureViewer(String filename) { + this(new Picture(filename)); + } + + /** + * Erzeugt ein ScrollPanel und zeigt das Bild-Objekt an + * @param picture anzuzeigendes Bild + */ + public PictureViewer(Picture picture) + { + this.picture=picture; + + zoomFactor=1; + + scrollImageIcon = new ImageIcon(picture.getImage().getScaledInstance(picture.getImage().getWidth(), picture.getImage().getHeight(), Image.SCALE_FAST)); + imageLabel = new JLabel(scrollImageIcon); + imageLabel.setVerticalAlignment(JLabel.CENTER); + imageLabel.setHorizontalAlignment(JLabel.CENTER); + setViewportView(imageLabel); + + this.setBorder(BorderFactory.createLineBorder(Color.black)); + picture.setObserver(this); + history = new Vector(); + + } + + /** + * Setzt das anzuzeigende Bild neu + * @param picture anzuzeigendes Bild + */ + public void setImage(Picture picture) { + this.history = new Vector(); + this.picture = picture; + setZoom(NORMAL); + } + + /** + * Speichert das übergebene Bild in der History. + * @param b zu speicherndes Bild + */ + public void pushImage() { + if( this.ANZ_BACK > 0) { + if(history.size() == this.ANZ_BACK) { + history.removeElementAt(0); + } + + BufferedImage b = new BufferedImage(picture.getWidth(), picture.getHeight(), picture.getImage().getType()); + Graphics g = b.getGraphics(); + g.drawImage(picture.getImage(), 0, 0, null); + g.dispose(); + + history.add(b); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + private void popImage() { + int anz = history.size(); + if(anz>0) { + BufferedImage img = history.get(anz-1); + history.removeElementAt(anz-1); + picture.setImage(img); + setZoom(zoomFactor); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + public void back() { + popImage(); + } + + /** + * Setzt das angezeigt Bild neu und beachtet dabei den Zoomfaktor. + */ + public void repaint() { + if( picture != null) { + double factor= zoomFactor; + if (zoomFactor == FIT) { + double factorw = ((double) getWidth()-2) / picture.getWidth(); + double factorh = ((double) getHeight()-2) / picture.getHeight(); + factor = Math.min(factorw, factorh); + } + int width = (int) (picture.getWidth()*factor); + int height = (int) (picture.getHeight()*factor); + + + + scrollImageIcon.setImage(picture.getImage().getScaledInstance(width, height, Image.SCALE_DEFAULT)); + revalidate(); + } + } + + /** + * Setzt den Zoom-Faktor für das Bild. + * Als Zoomfaktor sind auch die Konstanten Bildanzeiger.FIT (auf Bildschirmgröße zoomen) und Bildanzeiger.NORMAL (100%) möglich. + * @param factor Zoomfaktor (1.0 = 100%). + */ + public void setZoom(double factor) + { + zoomFactor = factor; + repaint(); + } + + + // Wrappermethoden + /** + * Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + * Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + * der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu. + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public void size(int width, int height){ + picture.size(width, height); + } + + /** + * Liefert die Breite des Bildes zurück. + * @return Breite des Bildes + */ + public int getImageWidth() { + return picture.getWidth(); + } + + /** + * Liefert die Höhe des Bildes zurück. + * @return Höhe des Bildes + */ + public int getImageHeight() { + return picture.getHeight(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + picture.background(c); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + picture.background(r,g,b); + } + + /** + * Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + * Um eine Linie einzufärben, verwenden Sie die {@link #stroke(int, int, int) stroke()} Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + * Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + * {@link #strokeWeight(double) strokeWeight()} geändert werden. + * @param x1 x-Koordinate des 1. Punktes + * @param y1 y-Koordinate des 1. Punktes + * @param x2 x-Koordinate des 2. Punktes + * @param y2 y-Koordinate des 2. Punktes + */ + public void line(int x1, int y1, int x2, int y2) { + picture.line(x1,y1,x2,y2); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + picture.rect(a,b,c,d); + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + picture.ellipse(a,b,c,d); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + picture.triangle(x1,y1,x2,y2,x3,y3); + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + picture.quad(x1,y1,x2,y2,x3,y3,x4,y4); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + public void polygon(int[] x, int[] y) { + picture.polygon(x,y); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + picture.point(x,y); + + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + * Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + * Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void rectMode(int mode) { + picture.rectMode(mode); + } + + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + * Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + * Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als Breite und Höhe der Form. + * ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void ellipseMode(int mode) { + picture.ellipseMode(mode); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + picture.stroke(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + picture.noStroke(); + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + picture.strokeWeight(width); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + picture.fill(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + picture.noFill(); + } + + /** + * Löscht den Inhalt des Bildes. + * Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt. + */ + public void clear(){ + picture.clear(); + } + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + picture.load(filename); + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + picture.save(filename); + } + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param t Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String t, int x, int y) { + picture.text(t,x,y); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + picture.textFont(font); + } + + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + public Color[][] getPixelArray() { + return picture.getPixelArray(); + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + picture.setPixelArray(pixel); + } + + + +} diff --git a/03_vorlagen_tauschordner/03_javaeditor/alg13_maximumsuche/Table.java b/03_vorlagen_tauschordner/03_javaeditor/alg13_maximumsuche/Table.java new file mode 100644 index 0000000..ee5a211 --- /dev/null +++ b/03_vorlagen_tauschordner/03_javaeditor/alg13_maximumsuche/Table.java @@ -0,0 +1,894 @@ +/** + * Die Klasse Table vereinfacht den Zugriff auf CSV-Dateien. + * Die Klassen Table und TableRow ermöglichen einen einfachen Zugriff auf tabellenbasierte + * Dokumente. + * + * @author Thomas Schaller + * @version 1.0 vom 01.02.2019 + */ + +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.ArrayList; +import java.io.*; +import java.util.Scanner; + +import org.jdom.Document; +import org.jdom.Element; +import org.jdom.Attribute; +import org.jdom.JDOMException; +import org.jdom.input.SAXBuilder; +import org.jdom.output.XMLOutputter; +import org.jdom.output.Format; + +public class Table +{ + // Standardtrennzeichen für Spalten + private static final char DEFAULT_SEPARATOR = ';'; + // Standardmarkierung für Texte + private static final char DEFAULT_QUOTE = '"'; + // Standardtrennzeichen für Dezimalzahlen + private static final char DEFAULT_COMMA = ','; + + // mögliche Spaltentypen + private static final String UNKNOWN ="UNKOWN"; + private static final String INT = "INTEGER"; + private static final String DOUBLE = "DOUBLE"; + private static final String FLOAT = "FLOAT"; + + // interne Verwaltung des Dokuments als JDOM-Document-Objekt + private Document doc; + // Verweis auf Element für Kopfzeile + private Element header; + // Ende Attribute + + /** + * Erzeugt leeres Tabellen-Dokument. + */ + public Table() { + this.doc = new Document(); + doc.setRootElement(new Element("CSV-Data")); + this.header = new Element("Header"); + doc.getRootElement().addContent(header); + } + + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei und erstellt ein Tabellenobjekt mit seinen Werten. + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public Table(String filename, String options, char separator, char quote) { + loadCSV(filename, options, separator, quote); + } + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei und erstellt ein Tabellenobjekt mit seinen Werten (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + */ + public Table(String filename, String options) { + loadCSV(filename, options); + } + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei ohne Kopfzeile und erstellt ein Tabellenobjekt mit seinen Werten (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public Table(String filename) { + loadCSV(filename); + } + + // Anfang Methoden + /** + * Liest den Inhalt einer CSV-Datei ohne Kopfzeile (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public void loadCSV(String filename) { + loadCSV(filename, ""); + } + + /** + * Liest den Inhalt einer CSV-Datei (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + */ + public void loadCSV(String filename, String options) { + loadCSV(filename, options, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** + * Liest den Inhalt einer CSV-Datei. + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public void loadCSV(String filename, String options, char separator, char quote) { + doc = new Document(); + doc.setRootElement(new Element("CSV-Data")); + header = new Element("Header"); + doc.getRootElement().addContent(header); + try { + File f = new File(filename); + Scanner scanner = new Scanner(new File(filename)); + if(options.toLowerCase().contains("header") && scanner.hasNext()) { + List entries = parseLine(scanner.nextLine(), separator, quote); + int i= 0; + for(String s : entries) { + Element entry = new Element("Column"); + header.addContent(entry); + entry.setText(s); + entry.setAttribute("type", "unknown"); + i++; + } + } + + List cols = header.getChildren(); + + while (scanner.hasNext()) { + Element line = new Element("Row"); + doc.getRootElement().addContent(line); + List entries = parseLine(scanner.nextLine(), separator, quote); + int i= 0; + + for(String s : entries) { + + if(i==cols.size()) { + Element entry = new Element("Column"); + entry.setAttribute("type", "unknown"); + header.addContent(entry); + cols = header.getChildren(); + } + + Element entry = new Element("Entry"); + entry.setText(s); + line.addContent(entry); + i++; + } + } + scanner.close(); + + } catch (Exception e) { + System.out.println("Fehler beim Lesen der CSV-Datei"); + } + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei ohne Kopfzeile (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public void saveCSV(String filename) { + saveCSV(filename, ""); + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthalten, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile haben soll, + * dann lassen Sie einfach die Option "header" weg. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile haben soll. + * @param filename Dateiname der CSV-Datei. + */ + public void saveCSV(String filename, String options) { + saveCSV(filename, options, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei. + * Wenn die Datei eine Kopfzeile enthalten, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile haben soll, + * dann lassen Sie einfach die Option "header" weg. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile haben soll. + * @param filename Dateiname der CSV-Datei. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public void saveCSV(String filename, String options, char separator, char quote){ + try{ + File f = new File(filename); + PrintStream outputFile = new PrintStream (f); + System.out.println("Speicher in : "+f.getAbsolutePath()); + List columns = header.getChildren(); + String sq = ""+quote; + String ss = ""+separator; + if(quote =='"') sq = "\""; + if(separator =='"') ss = "\""; + + if(options.toLowerCase().contains("header")) { + String h = ""; + for(Element c : columns) { + h += ss + sq + c.getText()+sq; + } + outputFile.println(h.substring(1)); + } + for(int i = 0; i parseLine(String cvsLine) { + return parseLine(cvsLine, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** HIlfsfunktion für die Analyse einer Dateizeile + * @param cvsLine Zeile aus der Datei + * @param sparator Trennzeichen für die Spalten + * @return Liste von String für die einzelnen Spalten + */ + private List parseLine(String cvsLine, char separator) { + return parseLine(cvsLine, separator, DEFAULT_QUOTE); + } + + /** HIlfsfunktion für die Analyse einer Dateizeile + * @param cvsLine Zeile aus der Datei + * @param sparator Trennzeichen für die Spalten + * @param customQuote Kennung für Strings + * @return Liste von String für die einzelnen Spalten + */ + private List parseLine(String cvsLine, char separator, char customQuote) { + + List result = new ArrayList<>(); + + //if empty, return! + if (cvsLine == null && cvsLine.isEmpty()) { + return result; + } + + //ggf. Default-Value laden + if (customQuote == ' ') { + customQuote = DEFAULT_QUOTE; + } + + if (separator == ' ') { + separator = DEFAULT_SEPARATOR; + } + + StringBuffer curVal = new StringBuffer(); + boolean inQuotes = false; + boolean startCollectChar = false; + boolean doubleQuotesInColumn = false; + + char[] chars = cvsLine.toCharArray(); + + for (char ch : chars) { + + if (inQuotes) { // aktueller Text ist in Quotes eingeschlossen + startCollectChar = true; + + if (ch == customQuote) { // Quotes werden beendet, aber Achtung bei "" => Metazeichen + inQuotes = false; + if (ch == '\"') { + doubleQuotesInColumn = true; + } + + } else { + + if (ch == '\"' && !doubleQuotesInColumn) { + doubleQuotesInColumn = true; + } else { + curVal.append(ch); + doubleQuotesInColumn = false; + } + + } + } else { + if (ch == customQuote) { + + inQuotes = true; + + //Fixed : allow "" in empty quote enclosed + if (ch == '\"'){ + if(doubleQuotesInColumn) { + curVal.append('"'); + doubleQuotesInColumn = false; + } else doubleQuotesInColumn = true; + + + } + } + else { + doubleQuotesInColumn = false; + if (ch == separator) { + + result.add(curVal.toString()); + + curVal = new StringBuffer(); + startCollectChar = false; + + } else if (ch == '\r') { + //ignore LF characters + continue; + } else if (ch == '\n') { + //the end, break! + break; + } else { + curVal.append(ch); + } + } + } + + } + result.add(curVal.toString()); + return result; + } + + /** + * Sucht die Nummer einer durch Namen gegebenen Spalte. + * @param name Name der Spalte + * @return Nummer der Spalte + */ + + private int findColumnNumber(String name) { + List columns = header.getChildren(); + int i = 0; + for(Element c : columns) { + if (c.getText().toLowerCase().equals(name.toLowerCase())) { + return i; + + } + i++; + } + return -1; + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an. + */ + public void addColumn() { + Element entry = new Element("Column"); + entry.setAttribute("type", Table.UNKNOWN); + header.addContent(entry); + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an und benennt sie. + * @param title Bezeichnung der Spalte + */ + public void addColumn(String title) { + addColumn(); + Element nc = ((List)(header.getChildren())).get(header.getChildren().size()-1); + nc.setText(title); + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an und benennt und typisiert sie. + * @param title Bezeichnung der Spalte + * @param type Typ der Spalte (UNKNOWN, DOUBLE, INTEGER, FLOAT) + */ + public void addColumn(String title, String type) { + addColumn(title); + Element nc = ((List)(header.getChildren())).get(header.getChildren().size()-1); + nc.setAttribute("type", type); + } + + /** + * Löscht eine Spalte. + * @param i Nummer der Spalte. + */ + public void removeColumn(int i) { + List lines = doc.getRootElement().getChildren(); + for(Element l : lines) { + if(l.getChildren().size()>i) l.removeContent(i); + } + } + + /** + * Löscht eine Spalte + * @param name Name der Spalte + */ + public void removeColumn(String name) { + try{ + removeColumn(findColumnNumber(name)); + } catch(Exception e) { System.out.println("Unbekannter Spaltenname");} + } + + /** + * Liefert die Anzahl der Spalten in der Tabelle + * @return Anzahl der Spalten + */ + public int getColumnCount() { + return header.getChildren().size(); + } + + /** + * Liefert die Anzahl der Zeilen in der Tabelle + * @return Anzahl der Zeilen + */ + public int getRowCount() { + return doc.getRootElement().getChildren().size()-1; + } + + /** + * Löscht alle Zeilen der Tabelle. + * Die Spaltenüberschriften und Typen bleiben erhalten. + */ + public void clearRows() { + doc.getRootElement().removeChildren("Row"); + } + + /** + * Fügt eine neue Zeile an das Ende der Tabelle an. + * @return ein TableRow-Objekt für diese neue Zeile + */ + public TableRow addRow() { + Element row = new Element("Row"); + doc.getRootElement().addContent(row); + return new TableRow(doc, row); + } + + /** + * Löscht eine Zeile + * @param i Nummer der Zeile + */ + public void removeRow(int i) { + if(i rows = doc.getRootElement().getChildren(); + return new TableRow(doc, rows.get(i+1)); + } + return null; + } + + /** + * Liefert die ganze Tabelle als Array von TableRow-Objekten + * @return Array von TableRow-Objekten + */ + public TableRow[] rows() { + TableRow[] rows = new TableRow[getRowCount()]; + for(int i = 0; i < getRowCount(); i++) { + rows[i] = getRow(i); + } + return rows; + } + + /** + * Liefert den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param column Spaltennummer + * @return Wert der Zelle + */ + public int getInt(int row, int column) { + return getRow(row).getInt(column); + } + + /** + * Liefert den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param name Name der Spalte + * @return Wert der Zelle + */ + public int getInt(int row, String name) { + return getRow(row).getInt(name); + } + + /** + * Setzt den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param column Spaltennummer + * @param value neuer Wert der Zelle + */ + public void setInt(int row, int column,int value) { + getRow(row).setInt(column, value); + } + + /** + * Setzt den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(int row, String name, int value) { + getRow(row).setInt(name, value); + } + + /** + * Liefert alle Werte einer Zeile als Integer-Array. + * @param row Nummer der Zeile + * @return int-Array, dass alle Werte der Zeile enthält + */ + public int[] getIntRow(int row) { + try{ + TableRow trow = getRow(row); + int anz = getColumnCount(); + int[] r = new int[anz]; + for(int i=0; i) (header.getChildren())).get(i).getText(); + } else { + return ""; + } + } + + /** + * Liefert die Nummer einer Spalte + * @param name Name der Spalte + * @return Nummer der Spalte + */ + public int getColumn(String name) { + List columns = header.getChildren(); + int i = 0; + while (i < columns.size()) { + if (columns.get(i).getText().toLowerCase().equals(name.toLowerCase())) { + return i; + } + i++; + } // end of while + return -1; + } + + + /** + * Erzeugt eine neue Zeile mit i Spalten + * Wenn bisher nicht genügend Spalten vorhanden sind, werden automatisch neue Spalten hinzugefügt (auch zum Header) + * @param i Anzahl der Spalten + */ + private Element buildRow(int i) { + List columns = header.getChildren(); + Element entry=null; + for(int j=0; j<=i; j++) { + + if(j==columns.size()) { + Element h = new Element("Column"); + h.setAttribute("type", "unknown"); + header.addContent(h); + columns = header.getChildren(); + } + if(j==current.getChildren().size()) { + entry = new Element("Entry"); + current.addContent(entry); + + } + + } + return entry; + + } + + /** + * Erzeugt eine neue Zeile. + * Es werden genügend Spalten erzeugt, dass ein Wert in Spalte "name" eingetragen werden kann + * @param name Name der Spalte + */ + private Element buildRow(String name) { + List columns = header.getChildren(); + int i = 0; + for(Element c: columns) { + + if(c.getText().toLowerCase().equals(name.toLowerCase())) { + return buildRow(i); + } + i++; + } + return null; + + } + + /** + * Liefert den Wert einer Zelle als String + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public String getString(int i) { + if(i >= current.getContent().size()) return ""; + Element e = (Element) current.getContent(i) ; + if(e!=null) { + return e.getText(); + } else { + return ""; + } + } + + /** + * Liefert den Wert einer Zelle als String + * @param name Name der Spalte + * @return Wert der Zelle + */ + public String getString(String name) { + return getString(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als String + * @param i Nummer der Spalte + * @param text neuer Wert der Zelle + */ + public void setString(int i, String text) { + + Element e = buildRow(i); + if(e!=null) e.setText(text); + } + + /** + * Setzt den Wert einer Zelle als String + * @param name Name der Spalte + * @param text neuer Wert der Zelle + */ + public void setString(String name, String text) { + Element e = buildRow(name); + if(e!=null) e.setText(text); + } + + + /** + * Liefert den Wert einer Zelle als Int-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public int getInt(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Integer.parseInt(e.getText()); + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Int-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public int getInt(String name) { + return getInt(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Int-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(int i,int value) { + + Element e = buildRow(i); + if(e!=null) e.setText(""+value); + } + + /** + * Setzt den Wert einer Zelle als Int-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(String name, int value) { + Element e = buildRow(name); + if(e!=null) e.setText(""+value); + } + + /** + * Liefert den Wert einer Zelle als Float-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public float getFloat(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Float.parseFloat(e.getText().replace(",",".")); + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Float-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public float getFloat(String name) { + return getFloat(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Float-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setFloat(int i,float value) { + + Element e = buildRow(i); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Setzt den Wert einer Zelle als Float-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setFloat(String name, float value) { + Element e = buildRow(name); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Liefert den Wert einer Zelle als Double-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public double getDouble(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Double.parseDouble(e.getText().replace(",",".")); + + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Double-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public double getDouble(String name) { + return getDouble(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Double-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setDouble(int i,double value) { + + Element e = buildRow(i); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Setzt den Wert einer Zelle als Double-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setDouble(String name, double value) { + Element e = buildRow(name); + if(e!=null) e.setText(format.format(value)); + } + +} diff --git a/03_vorlagen_tauschordner/03_javaeditor/alg13_maximumsuche/XML.java b/03_vorlagen_tauschordner/03_javaeditor/alg13_maximumsuche/XML.java new file mode 100644 index 0000000..c06c490 --- /dev/null +++ b/03_vorlagen_tauschordner/03_javaeditor/alg13_maximumsuche/XML.java @@ -0,0 +1,637 @@ +/** + * Klasse zum Vereinfachten Zugriff auf XML-Dokumente + * Diese Klasse ist für den Einsatz in der Schule gedacht und soll den Schülern + * einen einfachen Zugriff auf XML-Dokumente ermöglichen. Die zur Verfügung + * stehenden Befehle sind wie in Processing realisiert. + * Dabei ist jeder Teilbaum des Dokuments wieder als XML-Objekt zugreifbar, das + * intern auf die gleiche XML-Dokumentstruktur zugreift. + * Dies ermöglicht bei unsachgemäßem Gebrauch die XML-Struktur zu zerstören. Im + * normalen Gebrauch sollte dies aber nicht relevant sein. + * + * Benötigt: jdom-1.1.3.jar + + * @author Thomas Schaller + * @version 1.0 vom 31.01.2019 + */ +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.ArrayList; +import java.io.*; + +import org.jdom.Document; +import org.jdom.Element; +import org.jdom.Attribute; +import org.jdom.JDOMException; +import org.jdom.input.SAXBuilder; +import org.jdom.output.XMLOutputter; +import org.jdom.output.Format; + +public class XML { + // Anfang Attribute + // XML-Dokumentstruktur + private Document doc; + // Zeiger auf das aktuelle Element + private Element current; + // Ende Attribute + + /** + * Erzeugt ein leeres XMLDokument + */ + public XML() { + this.doc = new Document(); + this.current = null; + } + + /** + * Erzeugt ein XML-Dokument aus einer Datei + * @param filename Dateiname der XML-Datei + */ + public XML(String filename) { + loadXML(filename); + } + + /** + * interner Konstruktor, um ein XML Objekt zu erzeugen, das auf einen bestimmten Knoten verweist + * @param doc die XML-Dokumentstruktur + * @param current Zeiger auf das aktuelle Element + */ + private XML(Document doc, Element current) { + this.doc = doc; + this.current = current; + } + + // Anfang Methoden + /** Öffnet das durch den Dateinamen gegebene Dokument + * @param filename Dateiname des XML-Files + */ + public void loadXML(String filename) { + doc = null; + File f = new File(filename); + + try { + // Das Dokument erstellen + SAXBuilder builder = new SAXBuilder(); + doc = builder.build(f); + + } catch (JDOMException e) { + e.printStackTrace(); + + } catch (IOException e) { + e.printStackTrace(); + } + // Zeiger im Baum auf Root-Element + current = doc.getRootElement(); + } + + /** Speichert den XML-Baum im angegebenen Dateinamen + * @param filename Dateiname des XML-Files + */ + public void saveXML(String filename) { + try { + // new XMLOutputter().output(doc, System.out); + XMLOutputter xmlOutput = new XMLOutputter(); + + // display nice nice + xmlOutput.setFormat(Format.getPrettyFormat()); + File f = new File(filename); + FileOutputStream outputFile = new FileOutputStream(f); + System.out.println("Speicher in : "+f.getAbsolutePath() ); + xmlOutput.output(doc, outputFile); + outputFile.close(); + System.out.println("File Saved!"); + } catch (IOException io) { + System.out.println(io.getMessage()); + } + + } + + //----------------------------------------------- Zeigerbewegungen -------------------------------------------------- + /** + * liefert ein XML-Objekt, das auf den Vaterknoten des aktuellen Elements zeigt. + * @return Vater des aktuellen Objekts. + */ + public XML getParent() { + if(current != null) { + Element parent = current.getParentElement(); + if (parent == null) { + return null; + } else { + return new XML(doc, parent); + } + } + return null; + } + + /** + * Überprüft, ob das Element irgendwelche Kinder hat oder nicht, und gibt das Ergebnis als boolean zurück. + * @return true, wenn Kinder vorhanden sind, sonst false + */ + public boolean hasChildren() { + if (current == null) { + return doc.hasRootElement(); + } else { + return current.getChildren().size()>0; + } + } + + /** + * Ermittelt die Namen aller Kinder des Elements und gibt die Namen als ein Array von Strings zurück. + * Dies ist dasselbe wie das Durchlaufen und Aufrufen von getName() auf jedem untergeordneten Element einzeln. + * @return Liste aller Namen der Kinder + */ + public String[] listChildren() { + if (current == null) { + if(doc.hasRootElement()) { + String[] names = new String[0]; + names[0] = doc.getRootElement().getName(); + return names; + } else { + return null; + } + } else { + List ch_element = current.getChildren(); + String[] names = new String[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + names[i] = ch_element.get(i).getName(); + } + return names; + } + } + + /** + * Liefert alle Kinder des Elements als Array von XML-Objekten. + * @return Array der Kinder als XML-Objekte + */ + public XML[] getChildren() { + if (current == null) { + if(doc.hasRootElement()) { + XML[] ch_xml = new XML[1]; + ch_xml[0] = new XML(doc, doc.getRootElement()); + return ch_xml; + } else { + return null; + } + } else { + List ch_element = current.getChildren(); + XML[] ch_xml = new XML[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + ch_xml[i] = new XML(doc, ch_element.get(i)); + } + return ch_xml; + } + } + + /** + * Liefert bestimmte Kinder des Elements als Array von XML-Objekten. + * Die Methode gibt dabei alle Kinder zurück, die dem angegebenen Namen entsprechen. + * @param name Name der gesuchten Kind-Objekte + * @return Array der Kinder als XML-Objekte + */ + public XML[] getChildren(String name) { + if (current == null) { + if(doc.hasRootElement()) { + XML[] ch_xml = new XML[1]; + ch_xml[0] = new XML(doc, doc.getRootElement()); + if(doc.getRootElement().getName().equals(name)){ + return ch_xml; + } else { + return null; + } + } else { + return null; + } + } else { + List ch_element = current.getChildren(name); + XML[] ch_xml = new XML[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + ch_xml[i] = new XML(doc, ch_element.get(i)); + } + return ch_xml; + } + } + + /** + * Liefert das erste Kind des Elements mit einem bestimmten Namen. + * Die Methode gibt das erste Kind zurück, das dem angegebenen Namen entsprechen. + * @param name Name des gesuchten Kind-Objektes + * @return Kind als XML-Objekt + */ + + public XML getChild(String name) { + if (current == null) { + Element e = doc.getRootElement(); + if (e.getName().equals(name)) { + return new XML(doc, e); + } else { + return null; + } + } else { + String[] names = name.split("/"); + Element e = current; + int i = 0; + while(i < names.length) { + e = e.getChild(names[i]); + if (e==null) return null; + i++; + } + return new XML(doc, e); + } + } + + /** + * Liefert das i. Kind des Elements. + * Die Methode gibt das i. Kind des aktuellen Elements zurück. + * @param i Nummer des Kindes + * @return Kind als XML-Objekt + */ + public XML getChild(int i) { + if (current == null) { + return new XML(doc, doc.getRootElement()); + } else { + List ch_element = current.getChildren(); + if (i>=ch_element.size()) return null; + return new XML(doc, ch_element.get(i)); + } + } + + //--------------------------------------------------- Methoden für das aktuelle Element ------------------------------------------------- + /** + * Frage den Namen des aktuellen Elements ab + * @return Namen des Elements + */ + public String getName() { + if (current==null) return ""; + return current.getName(); + } + + /** + * Setze den Namen des aktuellen Elements. + * @param name Neuer Name des Elements + */ + public void setName(String name) { + if (current==null) return; + current.setName(name); + } + + /** + * liefert die Anzahl der Attribute eines Elements. + * @return Anzahl des Attribute + */ + public int getAttributeCount() { + if (current == null) return 0; + return current.getAttributes().size(); + } + + /** + * liefert zurück, ob das aktuelle Element Attribute hat . + * @return true, wenn es Attribute gibt + */ + public boolean hasAttribute() { + if (current == null) return false; + return current.getAttributes().size()>0; + } + + /** + * Ruft alle Attribute des angegebenen Elements ab und gibt sie als Array von Strings zurück. + * @return Liste der Attributnamen + */ + public String[] listAttributes() { + if (current == null) return null; + List attr = current.getAttributes(); + String[] names = new String[attr.size()]; + for(int i=0; i < attr.size() ; i++) { + names[i] = attr.get(i).getName(); + } + return names; + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs + */ + public String getString(String attribute) { + if (current==null) return ""; + return current.getAttributeValue(attribute); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs + */ + public String getString(String attribute, String defaultValue) { + if (current==null) return defaultValue; + return current.getAttributeValue(attribute,defaultValue); + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param text neuer Wert des Attributs + */ + public void setString(String attribute, String text) { + if (current==null) return; + current.setAttribute(attribute, text); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Integer-Zahl + */ + public int getInt(String attribute) { + if (current==null) return 0; + try{ + int i = Integer.parseInt(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als Integer-Zahl + */ + public int getInt(String attribute, int defaultValue) { + if (current==null) return defaultValue; + try{ + int i = Integer.parseInt(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setInt(String attribute, int value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Float-Zahl + */ + public float getFloat(String attribute) { + if (current==null) return 0; + try{ + float i = Float.parseFloat(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als Float-Zahl + */ + public float getFloat(String attribute, float defaultValue) { + if (current==null) return defaultValue; + try{ + float i = Float.parseFloat(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setFloat(String attribute, float value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Double-Zahl + */ + public double getDouble(String attribute) { + if (current==null) return 0; + try{ + double i = Double.parseDouble(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + +/** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als double-Zahl + */ + public double getDouble(String attribute, double defaultValue) { + if (current==null) return defaultValue; + try{ + double i = Double.parseDouble(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setDouble(String attribute, double value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt den Inhalt/Text des aktuellen Elements ab + * @return Inhalt des Elements + */ + public String getContent() { + if ( current==null) return ""; + + return current.getText(); + } + + /** + * Fragt den Inhalt/Text des aktuellen Elements ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardtext + * @return Inhalt des Elements + */ + public String getContent(String defaultValue) { + if ( current==null) return defaultValue; + String t = current.getText(); + if(t.equals("")) t = defaultValue; + return t; + } + + /** + * Setzt den Inhalt/Text des aktuellen Elements + * @param text Neuer Inhalt des Elements + */ + public void setContent(String text) { + if ( current==null) return; + current.setText(text); + } + + + /** + * Fragt den Inhalt des aktuellen Elements als Integerzahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ public int getIntContent(int defaultValue) { + if ( current==null) return defaultValue; + try{ + int i = Integer.parseInt(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Integerzahl ab + * @return Inhalt des Elements + */ + public int getIntContent() { + if ( current==null) return 0; + try{ + int i = Integer.parseInt(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setIntContent(int value) { + if ( current==null) return; + current.setText(""+value); + } + + + /** + * Fragt den Inhalt des aktuellen Elements als Floatzahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ + public float getFloatContent(float defaultValue) { + if ( current==null) return defaultValue; + try{ + float i = Float.parseFloat(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Floatzahl ab + * @return Inhalt des Elements + */ + public float getFloatContent() { + if ( current==null) return 0; + try{ + float i = Float.parseFloat(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setFloatContent(float value) { + if ( current==null) return; + current.setText(""+value); + } + +/** + * Fragt den Inhalt des aktuellen Elements als Doublezahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ + public double getDoubleContent(double defaultValue) { + if ( current==null) return defaultValue; + try{ + double i = Double.parseDouble(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Doublezahl ab + * @return Inhalt des Elements + */ + public double getDoubleContent() { + if ( current==null) return 0; + try{ + double i = Double.parseDouble(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setDoubleContent(double value) { + if ( current==null) return; + current.setText(""+value); + } + + + // ----------------------------------------------- XML-Struktur aufbauen ------------------------------------------------ + /** Erzeuge neues Element nach der aktuellen Position und setze dieses als aktuelles Element + * @param name Name des neuen Elements + * @return neues Element als XML-Objekt + */ + public XML addChild(String name) { + Element e = new Element(name); + if(current == null){ // man ist auf Root-Ebene + doc.setRootElement(e); + + } + else { + current.addContent(e); + } // end of if-else + return new XML(doc, e); + } + + /** + * liefert das aktuelle Element als jdom-Element-Objekt + * @return aktuelles Element + */ + private Element getCurrent() { + return current; + } + + /** + * löscht ein Kind des aktuellen Knotens. + * Ist kid kein Kind des aktuellen Elements passiert gar nichts. + * @param kid XML-Objekt des Kindes + */ + public void removeChild(XML kid) { + if (current == null) return; + Element e = kid.getCurrent(); + int index = current.indexOf(e); + if(index >= 0) { current.removeContent(e);} + } + +} diff --git a/03_vorlagen_tauschordner/03_javaeditor/alg13_maximumsuche/jdom-1.1.3.jar b/03_vorlagen_tauschordner/03_javaeditor/alg13_maximumsuche/jdom-1.1.3.jar new file mode 100644 index 0000000..a287727 Binary files /dev/null and b/03_vorlagen_tauschordner/03_javaeditor/alg13_maximumsuche/jdom-1.1.3.jar differ diff --git a/03_vorlagen_tauschordner/03_javaeditor/alg13_maximumsuche/punkte.csv b/03_vorlagen_tauschordner/03_javaeditor/alg13_maximumsuche/punkte.csv new file mode 100644 index 0000000..d6e8dfd --- /dev/null +++ b/03_vorlagen_tauschordner/03_javaeditor/alg13_maximumsuche/punkte.csv @@ -0,0 +1,6 @@ +"Name","Punkte" +Niko,216 +Klaus,591 +Anna,857 +Lena,180 +Winfried,168 diff --git a/03_vorlagen_tauschordner/03_javaeditor/alg13_maximumsuche/testfall1.csv b/03_vorlagen_tauschordner/03_javaeditor/alg13_maximumsuche/testfall1.csv new file mode 100644 index 0000000..92c538f --- /dev/null +++ b/03_vorlagen_tauschordner/03_javaeditor/alg13_maximumsuche/testfall1.csv @@ -0,0 +1,20 @@ +"Name","Punkte" +Spieler1,0 +Spieler1,6 +Spieler2,19 +Spieler6,1 +Spieler4,45 +Spieler3,23 +Spieler3,12 +Spieler2,44 +Spieler1,72 +Spieler5,12 +Spieler6,4 +Spieler7,2 +Spieler4,98 +Spieler3,21 +Spieler3,12 +Spieler2,32 +Spieler1,12 +Spieler5,44 +Spieler3,12 diff --git a/03_vorlagen_tauschordner/03_javaeditor/alg13_maximumsuche/testfall2.csv b/03_vorlagen_tauschordner/03_javaeditor/alg13_maximumsuche/testfall2.csv new file mode 100644 index 0000000..091c003 --- /dev/null +++ b/03_vorlagen_tauschordner/03_javaeditor/alg13_maximumsuche/testfall2.csv @@ -0,0 +1,20 @@ +"Name","Punkte" +Spieler1,-5 +Spieler1,-6 +Spieler2,-19 +Spieler6,-1 +Spieler4,-45 +Spieler3,-23 +Spieler3,-12 +Spieler2,-44 +Spieler1,-72 +Spieler5,-12 +Spieler6,-4 +Spieler7,-2 +Spieler4,-98 +Spieler3,-21 +Spieler3,-12 +Spieler2,-32 +Spieler1,-12 +Spieler5,-44 +Spieler3,-12 diff --git a/03_vorlagen_tauschordner/03_javaeditor/alg13_maximumsuche/testfall3.csv b/03_vorlagen_tauschordner/03_javaeditor/alg13_maximumsuche/testfall3.csv new file mode 100644 index 0000000..3bc26b2 --- /dev/null +++ b/03_vorlagen_tauschordner/03_javaeditor/alg13_maximumsuche/testfall3.csv @@ -0,0 +1,2 @@ +"Name","Punkte" +Spieler1,45 diff --git a/03_vorlagen_tauschordner/03_javaeditor/alg13_maximumsuche/testfall4.csv b/03_vorlagen_tauschordner/03_javaeditor/alg13_maximumsuche/testfall4.csv new file mode 100644 index 0000000..e74e6d5 --- /dev/null +++ b/03_vorlagen_tauschordner/03_javaeditor/alg13_maximumsuche/testfall4.csv @@ -0,0 +1 @@ +"Name","Punkte" diff --git a/03_vorlagen_tauschordner/03_javaeditor/alg14a_zeitungsmeldung/Picture.java b/03_vorlagen_tauschordner/03_javaeditor/alg14a_zeitungsmeldung/Picture.java new file mode 100644 index 0000000..8df3d55 --- /dev/null +++ b/03_vorlagen_tauschordner/03_javaeditor/alg14a_zeitungsmeldung/Picture.java @@ -0,0 +1,699 @@ +import java.awt.image.*; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.BasicStroke; +import java.util.Vector; +import javax.imageio.*; +import java.io.*; +import java.awt.*; +import javax.swing.*; +import java.util.Random; +import java.awt.geom.AffineTransform; +/** + * + * Bildklasse für die Simulation von Processing-Befehlen + * + * Diese Klasse stellt ein BufferedImage bereit, in das mit Processing-Befehlen gezeichnet + * werden kann. + * Zusätzlich kann ein Bildanzeiger über jede Änderung des Bildes informiert werden, + * um "Zurück"-Befehle zu ermöglichen. Der Bildanzeiger ist entweder eine normale Java + * ScrollPane oder ein Actor aus Greenfoot. + * Die Dokumentation der einzelnen Zeichenmethoden ist der Processing-Reference + * (https://processing.org/reference/ steht unter CC-Lizenz: https://creativecommons.org/) + * entnommen und mit Deepl.com ins Deutsche übersetzt. + * + * @version 1.0 from 23.01.2019 + * @author Thomas Schaller (ZPG Informatik Klasse 9) + */ + +public class Picture{ + + // Einstellungmöglichkeiten für das Zeichnen von Rechtecken und Ellipsen + // RADIUS = Mittelpunkt+Radius wird gegeben, CENTER = Mittelpunkt und Breite/Höhe wird gegeben, + // CORNER = Linke obere Ecke + Breite/Höhe, CORNERS = Linke obere und rechte untere Ecke + public static final int RADIUS = 1; + public static final int CENTER = 2; + public static final int CORNER = 3; + public static final int CORNERS = 4; + + // gespeichertes Bild, + private BufferedImage image; + + // aktuelle Farbeinstellungen + private Color background; + private Color pencolor; + private Color fillcolor; + + // aktuelle Stiftdicke + private double stroke; + + // akkteller Koordinatenmodus von Rechtecken und Ellipsen + private int ellipseMode = CENTER; + private int rectMode = CORNER; + + // aktueller Font + private Font textfont = null; + + // muss ein Bildanzeiger benachrichtigt werden + private PictureViewer observer = null; + private boolean autorefresh = true; + + /** + * Erzeugt ein Bild mit Standardgröße 500x400 + */ + public Picture() { + this(500,400); + } + + /** + * Erzeugt ein Bild der angegeben Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public Picture(int width, int height) { + this(width,height, "D0D0D0"); + } + + /** + * Erzeugt ein Bild aus einer Datei + * @param filename Dateiname des Bildes + */ + public Picture(String filename) { + load(filename); + } + + /** + * Erzeugt ein Bild der angegebenen Größe mit festgelegtem Hintergrund + * @param width Breite des Bildes + * @param height Höhe des Bildes + * @param background Farbe des Hintergrunds + */ + public Picture(int width, int height, String background) { + this.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + this.background = decode(background); + this.pencolor = new Color(0,0,0); + this.stroke = 1; + this.fillcolor = null; + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(this.background); + g.fillRect(0,0,width-1, height-1); + } + + /** + * Legt fest, wer das Bild anzeigt. + * Diese ermöglicht die Benachrichtung des Observers, wenn sich das Bild ändert. + * @param observer Anzeiger des Bildes + */ + + public void setObserver(PictureViewer observer) { + this.observer= observer; + } + + /** + * Direktes Setzen des Bildes (für interne Zwecke) + * @param b Bild, das gespeichert werden soll. + */ + public void setImage(BufferedImage b) { + image = b; + } + + /** + * Direktes Abfragen des Bildes (für interne Zwecke) + * @return Bild, das gerade gespeichert ist. + */ + public BufferedImage getImage() { + return image; + } + + /** + * Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + * Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + * der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu. + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public void size(int width, int height){ + pushImage(); + this.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(background); + g.fillRect(0,0,width-1, height-1); + } + + /** + * Liefert die Breite des Bildes zurück. + * @return Breite des Bildes + */ + public int getWidth() { + return image.getWidth(); + } + + /** + * Liefert die Höhe des Bildes zurück. + * @return Höhe des Bildes + */ + public int getHeight() { + return image.getHeight(); + } + + + /** + * Erzeugt eine Kopie des Bildes und übergibt sie an den Observer (falls existent), damit dieser die Versionen speichern kann + */ + private void pushImage() { + if(observer != null) { + observer.pushImage(); + } + } + + + /** + * Legt fest, ob nach jedem Zeichenbefehl automatisch das Bild auch in + * der Oberfläche aktualisiert wird. Die Einstellung "false" beschleunigt + * das Zeichnen aufwändiger Bilder und verhindert "Flackern". + * Das Neuzeichnen kann durch die Methode "refresh" gezielt ausgelöst werden. + * @param autorefresh true = nach jedem Zeichenbefehl die Anzeige aktualisieren, false= nur durch die Methode refresh neu zeichnen + */ + public void setAutoRefresh(boolean autoRefresh) { + this.autorefresh = autoRefresh; + } + + + /** + * Auch die anzeigenden Klasse wird zum Neuzeichnen aufgefordert. + */ + private void repaint() { + if(observer != null && autorefresh) { + observer.repaint(); + } + } + + /** + * Auch die anzeigenden Klasse wird zum Neuzeichnen aufgefordert. + */ + public void refresh() { + if(observer != null) { + observer.repaint(); + } + } + + // ----------------------------------------- Zeichenfunktionen ----------------------------------------------- + /** + * Löscht den Inhalt des Bildes. + * Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt. + */ + + public void clear(){ + pushImage(); + image = new BufferedImage(image.getWidth(), image.getHeight(), image.getType()); + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(background); + g.fillRect(0,0,image.getWidth()-1, image.getHeight()-1); + repaint(); + } + + /** + * Konvertiert die in einem bestimmten Modus gegebenen Koordinaten in die Java-übliche Links_Oben_Breite_Höhe Version + * Die Änderungen werden direkt im Array vorgenommen + * @param coord Array mit vier Koordinateneinträgen im gegebenen Modus + * @param mode Modus der Koordinaten (CORNER, CORNERS, RADIUS oder CENTER) + */ + private void convert(int[] coord, int mode) { + switch(mode) { + case CORNER: break; + case CORNERS: coord[2] -= coord[0]; coord[3] -= coord[1]; break; + case RADIUS: coord[2] *= 2; coord[3] *=2; + case CENTER: coord[0] -= coord[2]/2; coord[1] -= coord[3]/2; + } + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + * Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + * Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void rectMode(int mode) { + rectMode = mode; + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + * Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + * Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als Breite und Höhe der Form. + * ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void ellipseMode(int mode) { + ellipseMode = mode; + } + + + + /** + * Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + * Um eine Linie einzufärben, verwenden Sie die {@link #stroke(int, int, int) stroke()} Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + * Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + * {@link #strokeWeight(double) strokeWeight()} geändert werden. + * @param x1 x-Koordinate des 1. Punktes + * @param y1 y-Koordinate des 1. Punktes + * @param x2 x-Koordinate des 2. Punktes + * @param y2 y-Koordinate des 2. Punktes + */ + public void line(int x1, int y1, int x2, int y2) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + if (stroke > 0) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawLine(x1, y1, x2, y2); + } + repaint(); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, rectMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillRect(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawRect(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, ellipseMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillOval(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawOval(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + int px[] = {x1, x2, x3}; + int py[] = {y1, y2, y3}; + polygon(px, py); + + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + + int px[] = {x1, x2, x3, x4}; + int py[] = {y1, y2, y3, y4}; + polygon(px, py); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + + public void polygon(int[] x, int[] y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(fillcolor != null) { + + g.setColor(fillcolor); + g.fillPolygon(x,y, y.length); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawPolygon(x, y, x.length); + } + repaint(); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + ellipse(x,y,1, 1); + + } + + // ----------------------------------------- Schriftdarstellung ----------------------------------------------- + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param s Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String s, int x, int y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(pencolor != null) { + g.setColor(fillcolor); + g.setStroke(new BasicStroke((float) stroke)); + g.setFont(textfont); + g.drawString(s, x, y); + } + repaint(); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + this.textfont = font; + } + + + // ----------------------------------------- Farbfestlegungen ----------------------------------------------- + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(String color) { + try{ + return new Color( + Integer.valueOf( color.substring( 0, 2 ), 16 ), + Integer.valueOf( color.substring( 2, 4 ), 16 ), + Integer.valueOf( color.substring( 4, 6 ), 16 ) ); + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(int color) { + try{ + if(color >=0 && color < 256) { + return new Color(color,color,color); + } else { + int r = color / 0x010000 % 0xFF; + int g = color / 0x000100 % 0xFF; + int b = color % 0xFF; + System.out.println(""+r+","+g+","+b); + return new Color(r, g, b ); + } + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + this.pencolor = decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + this.pencolor=decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + this.pencolor = new Color(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + this.pencolor = null; + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + this.stroke = width; + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + this.fillcolor = decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + this.fillcolor=decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + this.fillcolor = new Color(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + this.fillcolor = null; + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + if(c < 256) { + this.background=new Color(c,c,c); + } else { + int r = c / 0x010000; + int g = c / 0x000100 % 0xFF; + int b = c % 0xFF; + this.background= new Color(r, g, b ); + } + + this.clear(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + this.background=new Color(r,g,b); + this.clear(); + } + + +// ----------------------------------------- Dateioperationen ----------------------------------------------- + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + try{ + this.image = ImageIO.read(new File(filename)); + this.background = decode("D0D0D0"); + this.pencolor = new Color(0,0,0); + this.fillcolor = null; + this.stroke = 1; + this.repaint(); + + } catch(Exception e) { + System.out.println("Fehler beim Einlesen der Bilddatei"); + } + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + try{ + String[] fn = filename.split("\\."); + if (fn.length== 1) { + ImageIO.write(image, "PNG", new File(filename+".png")); + } else { + + if (fn.length == 2 && (fn[1].toUpperCase().equals("PNG") || + fn[1].toUpperCase().equals("GIF"))){ + ImageIO.write(image, fn[1], new File(filename)); + }else { + System.out.println("Unbekanntes Bildformat"); + } + } + + } catch(Exception e) { + System.out.println("Fehler beim Speichern"); + } + } + + +// ----------------------------------------- Sonstiges ----------------------------------------------- + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + + public Color[][] getPixelArray() { + Color[][] pixel = new Color[image.getWidth()][image.getHeight()]; + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + pixel[x][y] = new java.awt.Color(image.getRGB(x,y)); + } + } + return pixel; + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + size(pixel.length,pixel[0].length); + Graphics2D g = (Graphics2D) image.getGraphics(); + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + g.setColor(pixel[x][y]); + g.fillRect(x, y, 1, 1); + } + } + repaint(); + } + + /** + * Hilfsfunktion zum Verzögern der Ausgabe + * @param millis Wartezeit in Millisekunden + */ + public void delay(int millis) { + try{ + Thread.sleep(millis); + + } catch(Exception e) { + + } + + } + + + +} diff --git a/03_vorlagen_tauschordner/03_javaeditor/alg14a_zeitungsmeldung/PictureViewer.java b/03_vorlagen_tauschordner/03_javaeditor/alg14a_zeitungsmeldung/PictureViewer.java new file mode 100644 index 0000000..9e6b151 --- /dev/null +++ b/03_vorlagen_tauschordner/03_javaeditor/alg14a_zeitungsmeldung/PictureViewer.java @@ -0,0 +1,505 @@ +/** + * Zeigt ein Bild in einem Scrollbereich an. + * Es ist möglich das Bild zu zoomen und mehrere Versionen des Bildes zu speichern, um eine "Rückgängig" Operation durchzuführen. + * @author Thomas Schaller + * @version 1.0 vom 01.02.2019 + */ + +import java.awt.*; +import java.awt.event.*; +import javax.swing.*; +import java.awt.image.*; +import java.util.Vector; + +public class PictureViewer extends JScrollPane +{ + + // das aktuelle Bild + private Picture picture; + + // Bilder für den Züruck-Modus speichern + private static final int ANZ_BACK = 20; + private Vector history; + + // Zeichenfläche + private ImageIcon scrollImageIcon; + private JLabel imageLabel; + + // Zoom Faktor + private double zoomFactor; + public static final int FIT = -1; + public static final int NORMAL = 1; + + + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der Größe 1000x1000 + */ + public PictureViewer() { + this(1000,1000); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public PictureViewer(int width, int height) { + this(width,height, "D0D0D0"); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + * @param background Farbe des Hintergrunds als HEX-String (z.B. "FF3A45") + */ + public PictureViewer(int width, int height, String background) { + this(new Picture(width,height, background)); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild aus einer Bilddatei + * @param filename Name des Bildes + */ + public PictureViewer(String filename) { + this(new Picture(filename)); + } + + /** + * Erzeugt ein ScrollPanel und zeigt das Bild-Objekt an + * @param picture anzuzeigendes Bild + */ + public PictureViewer(Picture picture) + { + this.picture=picture; + + zoomFactor=1; + + scrollImageIcon = new ImageIcon(picture.getImage().getScaledInstance(picture.getImage().getWidth(), picture.getImage().getHeight(), Image.SCALE_FAST)); + imageLabel = new JLabel(scrollImageIcon); + imageLabel.setVerticalAlignment(JLabel.CENTER); + imageLabel.setHorizontalAlignment(JLabel.CENTER); + setViewportView(imageLabel); + + this.setBorder(BorderFactory.createLineBorder(Color.black)); + picture.setObserver(this); + history = new Vector(); + + } + + /** + * Setzt das anzuzeigende Bild neu + * @param picture anzuzeigendes Bild + */ + public void setImage(Picture picture) { + this.history = new Vector(); + this.picture = picture; + setZoom(NORMAL); + } + + /** + * Speichert das übergebene Bild in der History. + * @param b zu speicherndes Bild + */ + public void pushImage() { + if( this.ANZ_BACK > 0) { + if(history.size() == this.ANZ_BACK) { + history.removeElementAt(0); + } + + BufferedImage b = new BufferedImage(picture.getWidth(), picture.getHeight(), picture.getImage().getType()); + Graphics g = b.getGraphics(); + g.drawImage(picture.getImage(), 0, 0, null); + g.dispose(); + + history.add(b); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + private void popImage() { + int anz = history.size(); + if(anz>0) { + BufferedImage img = history.get(anz-1); + history.removeElementAt(anz-1); + picture.setImage(img); + setZoom(zoomFactor); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + public void back() { + popImage(); + } + + /** + * Setzt das angezeigt Bild neu und beachtet dabei den Zoomfaktor. + */ + public void repaint() { + if( picture != null) { + double factor= zoomFactor; + if (zoomFactor == FIT) { + double factorw = ((double) getWidth()-2) / picture.getWidth(); + double factorh = ((double) getHeight()-2) / picture.getHeight(); + factor = Math.min(factorw, factorh); + } + int width = (int) (picture.getWidth()*factor); + int height = (int) (picture.getHeight()*factor); + + + + scrollImageIcon.setImage(picture.getImage().getScaledInstance(width, height, Image.SCALE_DEFAULT)); + revalidate(); + } + } + + /** + * Setzt den Zoom-Faktor für das Bild. + * Als Zoomfaktor sind auch die Konstanten Bildanzeiger.FIT (auf Bildschirmgröße zoomen) und Bildanzeiger.NORMAL (100%) möglich. + * @param factor Zoomfaktor (1.0 = 100%). + */ + public void setZoom(double factor) + { + zoomFactor = factor; + repaint(); + } + + + // Wrappermethoden + /** + * Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + * Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + * der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu. + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public void size(int width, int height){ + picture.size(width, height); + } + + /** + * Liefert die Breite des Bildes zurück. + * @return Breite des Bildes + */ + public int getImageWidth() { + return picture.getWidth(); + } + + /** + * Liefert die Höhe des Bildes zurück. + * @return Höhe des Bildes + */ + public int getImageHeight() { + return picture.getHeight(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + picture.background(c); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + picture.background(r,g,b); + } + + /** + * Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + * Um eine Linie einzufärben, verwenden Sie die {@link #stroke(int, int, int) stroke()} Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + * Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + * {@link #strokeWeight(double) strokeWeight()} geändert werden. + * @param x1 x-Koordinate des 1. Punktes + * @param y1 y-Koordinate des 1. Punktes + * @param x2 x-Koordinate des 2. Punktes + * @param y2 y-Koordinate des 2. Punktes + */ + public void line(int x1, int y1, int x2, int y2) { + picture.line(x1,y1,x2,y2); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + picture.rect(a,b,c,d); + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + picture.ellipse(a,b,c,d); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + picture.triangle(x1,y1,x2,y2,x3,y3); + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + picture.quad(x1,y1,x2,y2,x3,y3,x4,y4); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + public void polygon(int[] x, int[] y) { + picture.polygon(x,y); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + picture.point(x,y); + + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + * Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + * Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void rectMode(int mode) { + picture.rectMode(mode); + } + + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + * Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + * Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als Breite und Höhe der Form. + * ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void ellipseMode(int mode) { + picture.ellipseMode(mode); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + picture.stroke(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + picture.noStroke(); + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + picture.strokeWeight(width); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + picture.fill(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + picture.noFill(); + } + + /** + * Löscht den Inhalt des Bildes. + * Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt. + */ + public void clear(){ + picture.clear(); + } + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + picture.load(filename); + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + picture.save(filename); + } + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param t Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String t, int x, int y) { + picture.text(t,x,y); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + picture.textFont(font); + } + + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + public Color[][] getPixelArray() { + return picture.getPixelArray(); + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + picture.setPixelArray(pixel); + } + + + +} diff --git a/03_vorlagen_tauschordner/03_javaeditor/alg14a_zeitungsmeldung/Table.java b/03_vorlagen_tauschordner/03_javaeditor/alg14a_zeitungsmeldung/Table.java new file mode 100644 index 0000000..ee5a211 --- /dev/null +++ b/03_vorlagen_tauschordner/03_javaeditor/alg14a_zeitungsmeldung/Table.java @@ -0,0 +1,894 @@ +/** + * Die Klasse Table vereinfacht den Zugriff auf CSV-Dateien. + * Die Klassen Table und TableRow ermöglichen einen einfachen Zugriff auf tabellenbasierte + * Dokumente. + * + * @author Thomas Schaller + * @version 1.0 vom 01.02.2019 + */ + +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.ArrayList; +import java.io.*; +import java.util.Scanner; + +import org.jdom.Document; +import org.jdom.Element; +import org.jdom.Attribute; +import org.jdom.JDOMException; +import org.jdom.input.SAXBuilder; +import org.jdom.output.XMLOutputter; +import org.jdom.output.Format; + +public class Table +{ + // Standardtrennzeichen für Spalten + private static final char DEFAULT_SEPARATOR = ';'; + // Standardmarkierung für Texte + private static final char DEFAULT_QUOTE = '"'; + // Standardtrennzeichen für Dezimalzahlen + private static final char DEFAULT_COMMA = ','; + + // mögliche Spaltentypen + private static final String UNKNOWN ="UNKOWN"; + private static final String INT = "INTEGER"; + private static final String DOUBLE = "DOUBLE"; + private static final String FLOAT = "FLOAT"; + + // interne Verwaltung des Dokuments als JDOM-Document-Objekt + private Document doc; + // Verweis auf Element für Kopfzeile + private Element header; + // Ende Attribute + + /** + * Erzeugt leeres Tabellen-Dokument. + */ + public Table() { + this.doc = new Document(); + doc.setRootElement(new Element("CSV-Data")); + this.header = new Element("Header"); + doc.getRootElement().addContent(header); + } + + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei und erstellt ein Tabellenobjekt mit seinen Werten. + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public Table(String filename, String options, char separator, char quote) { + loadCSV(filename, options, separator, quote); + } + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei und erstellt ein Tabellenobjekt mit seinen Werten (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + */ + public Table(String filename, String options) { + loadCSV(filename, options); + } + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei ohne Kopfzeile und erstellt ein Tabellenobjekt mit seinen Werten (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public Table(String filename) { + loadCSV(filename); + } + + // Anfang Methoden + /** + * Liest den Inhalt einer CSV-Datei ohne Kopfzeile (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public void loadCSV(String filename) { + loadCSV(filename, ""); + } + + /** + * Liest den Inhalt einer CSV-Datei (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + */ + public void loadCSV(String filename, String options) { + loadCSV(filename, options, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** + * Liest den Inhalt einer CSV-Datei. + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public void loadCSV(String filename, String options, char separator, char quote) { + doc = new Document(); + doc.setRootElement(new Element("CSV-Data")); + header = new Element("Header"); + doc.getRootElement().addContent(header); + try { + File f = new File(filename); + Scanner scanner = new Scanner(new File(filename)); + if(options.toLowerCase().contains("header") && scanner.hasNext()) { + List entries = parseLine(scanner.nextLine(), separator, quote); + int i= 0; + for(String s : entries) { + Element entry = new Element("Column"); + header.addContent(entry); + entry.setText(s); + entry.setAttribute("type", "unknown"); + i++; + } + } + + List cols = header.getChildren(); + + while (scanner.hasNext()) { + Element line = new Element("Row"); + doc.getRootElement().addContent(line); + List entries = parseLine(scanner.nextLine(), separator, quote); + int i= 0; + + for(String s : entries) { + + if(i==cols.size()) { + Element entry = new Element("Column"); + entry.setAttribute("type", "unknown"); + header.addContent(entry); + cols = header.getChildren(); + } + + Element entry = new Element("Entry"); + entry.setText(s); + line.addContent(entry); + i++; + } + } + scanner.close(); + + } catch (Exception e) { + System.out.println("Fehler beim Lesen der CSV-Datei"); + } + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei ohne Kopfzeile (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public void saveCSV(String filename) { + saveCSV(filename, ""); + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthalten, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile haben soll, + * dann lassen Sie einfach die Option "header" weg. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile haben soll. + * @param filename Dateiname der CSV-Datei. + */ + public void saveCSV(String filename, String options) { + saveCSV(filename, options, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei. + * Wenn die Datei eine Kopfzeile enthalten, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile haben soll, + * dann lassen Sie einfach die Option "header" weg. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile haben soll. + * @param filename Dateiname der CSV-Datei. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public void saveCSV(String filename, String options, char separator, char quote){ + try{ + File f = new File(filename); + PrintStream outputFile = new PrintStream (f); + System.out.println("Speicher in : "+f.getAbsolutePath()); + List columns = header.getChildren(); + String sq = ""+quote; + String ss = ""+separator; + if(quote =='"') sq = "\""; + if(separator =='"') ss = "\""; + + if(options.toLowerCase().contains("header")) { + String h = ""; + for(Element c : columns) { + h += ss + sq + c.getText()+sq; + } + outputFile.println(h.substring(1)); + } + for(int i = 0; i parseLine(String cvsLine) { + return parseLine(cvsLine, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** HIlfsfunktion für die Analyse einer Dateizeile + * @param cvsLine Zeile aus der Datei + * @param sparator Trennzeichen für die Spalten + * @return Liste von String für die einzelnen Spalten + */ + private List parseLine(String cvsLine, char separator) { + return parseLine(cvsLine, separator, DEFAULT_QUOTE); + } + + /** HIlfsfunktion für die Analyse einer Dateizeile + * @param cvsLine Zeile aus der Datei + * @param sparator Trennzeichen für die Spalten + * @param customQuote Kennung für Strings + * @return Liste von String für die einzelnen Spalten + */ + private List parseLine(String cvsLine, char separator, char customQuote) { + + List result = new ArrayList<>(); + + //if empty, return! + if (cvsLine == null && cvsLine.isEmpty()) { + return result; + } + + //ggf. Default-Value laden + if (customQuote == ' ') { + customQuote = DEFAULT_QUOTE; + } + + if (separator == ' ') { + separator = DEFAULT_SEPARATOR; + } + + StringBuffer curVal = new StringBuffer(); + boolean inQuotes = false; + boolean startCollectChar = false; + boolean doubleQuotesInColumn = false; + + char[] chars = cvsLine.toCharArray(); + + for (char ch : chars) { + + if (inQuotes) { // aktueller Text ist in Quotes eingeschlossen + startCollectChar = true; + + if (ch == customQuote) { // Quotes werden beendet, aber Achtung bei "" => Metazeichen + inQuotes = false; + if (ch == '\"') { + doubleQuotesInColumn = true; + } + + } else { + + if (ch == '\"' && !doubleQuotesInColumn) { + doubleQuotesInColumn = true; + } else { + curVal.append(ch); + doubleQuotesInColumn = false; + } + + } + } else { + if (ch == customQuote) { + + inQuotes = true; + + //Fixed : allow "" in empty quote enclosed + if (ch == '\"'){ + if(doubleQuotesInColumn) { + curVal.append('"'); + doubleQuotesInColumn = false; + } else doubleQuotesInColumn = true; + + + } + } + else { + doubleQuotesInColumn = false; + if (ch == separator) { + + result.add(curVal.toString()); + + curVal = new StringBuffer(); + startCollectChar = false; + + } else if (ch == '\r') { + //ignore LF characters + continue; + } else if (ch == '\n') { + //the end, break! + break; + } else { + curVal.append(ch); + } + } + } + + } + result.add(curVal.toString()); + return result; + } + + /** + * Sucht die Nummer einer durch Namen gegebenen Spalte. + * @param name Name der Spalte + * @return Nummer der Spalte + */ + + private int findColumnNumber(String name) { + List columns = header.getChildren(); + int i = 0; + for(Element c : columns) { + if (c.getText().toLowerCase().equals(name.toLowerCase())) { + return i; + + } + i++; + } + return -1; + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an. + */ + public void addColumn() { + Element entry = new Element("Column"); + entry.setAttribute("type", Table.UNKNOWN); + header.addContent(entry); + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an und benennt sie. + * @param title Bezeichnung der Spalte + */ + public void addColumn(String title) { + addColumn(); + Element nc = ((List)(header.getChildren())).get(header.getChildren().size()-1); + nc.setText(title); + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an und benennt und typisiert sie. + * @param title Bezeichnung der Spalte + * @param type Typ der Spalte (UNKNOWN, DOUBLE, INTEGER, FLOAT) + */ + public void addColumn(String title, String type) { + addColumn(title); + Element nc = ((List)(header.getChildren())).get(header.getChildren().size()-1); + nc.setAttribute("type", type); + } + + /** + * Löscht eine Spalte. + * @param i Nummer der Spalte. + */ + public void removeColumn(int i) { + List lines = doc.getRootElement().getChildren(); + for(Element l : lines) { + if(l.getChildren().size()>i) l.removeContent(i); + } + } + + /** + * Löscht eine Spalte + * @param name Name der Spalte + */ + public void removeColumn(String name) { + try{ + removeColumn(findColumnNumber(name)); + } catch(Exception e) { System.out.println("Unbekannter Spaltenname");} + } + + /** + * Liefert die Anzahl der Spalten in der Tabelle + * @return Anzahl der Spalten + */ + public int getColumnCount() { + return header.getChildren().size(); + } + + /** + * Liefert die Anzahl der Zeilen in der Tabelle + * @return Anzahl der Zeilen + */ + public int getRowCount() { + return doc.getRootElement().getChildren().size()-1; + } + + /** + * Löscht alle Zeilen der Tabelle. + * Die Spaltenüberschriften und Typen bleiben erhalten. + */ + public void clearRows() { + doc.getRootElement().removeChildren("Row"); + } + + /** + * Fügt eine neue Zeile an das Ende der Tabelle an. + * @return ein TableRow-Objekt für diese neue Zeile + */ + public TableRow addRow() { + Element row = new Element("Row"); + doc.getRootElement().addContent(row); + return new TableRow(doc, row); + } + + /** + * Löscht eine Zeile + * @param i Nummer der Zeile + */ + public void removeRow(int i) { + if(i rows = doc.getRootElement().getChildren(); + return new TableRow(doc, rows.get(i+1)); + } + return null; + } + + /** + * Liefert die ganze Tabelle als Array von TableRow-Objekten + * @return Array von TableRow-Objekten + */ + public TableRow[] rows() { + TableRow[] rows = new TableRow[getRowCount()]; + for(int i = 0; i < getRowCount(); i++) { + rows[i] = getRow(i); + } + return rows; + } + + /** + * Liefert den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param column Spaltennummer + * @return Wert der Zelle + */ + public int getInt(int row, int column) { + return getRow(row).getInt(column); + } + + /** + * Liefert den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param name Name der Spalte + * @return Wert der Zelle + */ + public int getInt(int row, String name) { + return getRow(row).getInt(name); + } + + /** + * Setzt den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param column Spaltennummer + * @param value neuer Wert der Zelle + */ + public void setInt(int row, int column,int value) { + getRow(row).setInt(column, value); + } + + /** + * Setzt den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(int row, String name, int value) { + getRow(row).setInt(name, value); + } + + /** + * Liefert alle Werte einer Zeile als Integer-Array. + * @param row Nummer der Zeile + * @return int-Array, dass alle Werte der Zeile enthält + */ + public int[] getIntRow(int row) { + try{ + TableRow trow = getRow(row); + int anz = getColumnCount(); + int[] r = new int[anz]; + for(int i=0; i) (header.getChildren())).get(i).getText(); + } else { + return ""; + } + } + + /** + * Liefert die Nummer einer Spalte + * @param name Name der Spalte + * @return Nummer der Spalte + */ + public int getColumn(String name) { + List columns = header.getChildren(); + int i = 0; + while (i < columns.size()) { + if (columns.get(i).getText().toLowerCase().equals(name.toLowerCase())) { + return i; + } + i++; + } // end of while + return -1; + } + + + /** + * Erzeugt eine neue Zeile mit i Spalten + * Wenn bisher nicht genügend Spalten vorhanden sind, werden automatisch neue Spalten hinzugefügt (auch zum Header) + * @param i Anzahl der Spalten + */ + private Element buildRow(int i) { + List columns = header.getChildren(); + Element entry=null; + for(int j=0; j<=i; j++) { + + if(j==columns.size()) { + Element h = new Element("Column"); + h.setAttribute("type", "unknown"); + header.addContent(h); + columns = header.getChildren(); + } + if(j==current.getChildren().size()) { + entry = new Element("Entry"); + current.addContent(entry); + + } + + } + return entry; + + } + + /** + * Erzeugt eine neue Zeile. + * Es werden genügend Spalten erzeugt, dass ein Wert in Spalte "name" eingetragen werden kann + * @param name Name der Spalte + */ + private Element buildRow(String name) { + List columns = header.getChildren(); + int i = 0; + for(Element c: columns) { + + if(c.getText().toLowerCase().equals(name.toLowerCase())) { + return buildRow(i); + } + i++; + } + return null; + + } + + /** + * Liefert den Wert einer Zelle als String + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public String getString(int i) { + if(i >= current.getContent().size()) return ""; + Element e = (Element) current.getContent(i) ; + if(e!=null) { + return e.getText(); + } else { + return ""; + } + } + + /** + * Liefert den Wert einer Zelle als String + * @param name Name der Spalte + * @return Wert der Zelle + */ + public String getString(String name) { + return getString(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als String + * @param i Nummer der Spalte + * @param text neuer Wert der Zelle + */ + public void setString(int i, String text) { + + Element e = buildRow(i); + if(e!=null) e.setText(text); + } + + /** + * Setzt den Wert einer Zelle als String + * @param name Name der Spalte + * @param text neuer Wert der Zelle + */ + public void setString(String name, String text) { + Element e = buildRow(name); + if(e!=null) e.setText(text); + } + + + /** + * Liefert den Wert einer Zelle als Int-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public int getInt(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Integer.parseInt(e.getText()); + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Int-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public int getInt(String name) { + return getInt(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Int-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(int i,int value) { + + Element e = buildRow(i); + if(e!=null) e.setText(""+value); + } + + /** + * Setzt den Wert einer Zelle als Int-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(String name, int value) { + Element e = buildRow(name); + if(e!=null) e.setText(""+value); + } + + /** + * Liefert den Wert einer Zelle als Float-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public float getFloat(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Float.parseFloat(e.getText().replace(",",".")); + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Float-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public float getFloat(String name) { + return getFloat(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Float-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setFloat(int i,float value) { + + Element e = buildRow(i); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Setzt den Wert einer Zelle als Float-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setFloat(String name, float value) { + Element e = buildRow(name); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Liefert den Wert einer Zelle als Double-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public double getDouble(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Double.parseDouble(e.getText().replace(",",".")); + + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Double-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public double getDouble(String name) { + return getDouble(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Double-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setDouble(int i,double value) { + + Element e = buildRow(i); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Setzt den Wert einer Zelle als Double-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setDouble(String name, double value) { + Element e = buildRow(name); + if(e!=null) e.setText(format.format(value)); + } + +} diff --git a/03_vorlagen_tauschordner/03_javaeditor/alg14a_zeitungsmeldung/XML.java b/03_vorlagen_tauschordner/03_javaeditor/alg14a_zeitungsmeldung/XML.java new file mode 100644 index 0000000..c06c490 --- /dev/null +++ b/03_vorlagen_tauschordner/03_javaeditor/alg14a_zeitungsmeldung/XML.java @@ -0,0 +1,637 @@ +/** + * Klasse zum Vereinfachten Zugriff auf XML-Dokumente + * Diese Klasse ist für den Einsatz in der Schule gedacht und soll den Schülern + * einen einfachen Zugriff auf XML-Dokumente ermöglichen. Die zur Verfügung + * stehenden Befehle sind wie in Processing realisiert. + * Dabei ist jeder Teilbaum des Dokuments wieder als XML-Objekt zugreifbar, das + * intern auf die gleiche XML-Dokumentstruktur zugreift. + * Dies ermöglicht bei unsachgemäßem Gebrauch die XML-Struktur zu zerstören. Im + * normalen Gebrauch sollte dies aber nicht relevant sein. + * + * Benötigt: jdom-1.1.3.jar + + * @author Thomas Schaller + * @version 1.0 vom 31.01.2019 + */ +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.ArrayList; +import java.io.*; + +import org.jdom.Document; +import org.jdom.Element; +import org.jdom.Attribute; +import org.jdom.JDOMException; +import org.jdom.input.SAXBuilder; +import org.jdom.output.XMLOutputter; +import org.jdom.output.Format; + +public class XML { + // Anfang Attribute + // XML-Dokumentstruktur + private Document doc; + // Zeiger auf das aktuelle Element + private Element current; + // Ende Attribute + + /** + * Erzeugt ein leeres XMLDokument + */ + public XML() { + this.doc = new Document(); + this.current = null; + } + + /** + * Erzeugt ein XML-Dokument aus einer Datei + * @param filename Dateiname der XML-Datei + */ + public XML(String filename) { + loadXML(filename); + } + + /** + * interner Konstruktor, um ein XML Objekt zu erzeugen, das auf einen bestimmten Knoten verweist + * @param doc die XML-Dokumentstruktur + * @param current Zeiger auf das aktuelle Element + */ + private XML(Document doc, Element current) { + this.doc = doc; + this.current = current; + } + + // Anfang Methoden + /** Öffnet das durch den Dateinamen gegebene Dokument + * @param filename Dateiname des XML-Files + */ + public void loadXML(String filename) { + doc = null; + File f = new File(filename); + + try { + // Das Dokument erstellen + SAXBuilder builder = new SAXBuilder(); + doc = builder.build(f); + + } catch (JDOMException e) { + e.printStackTrace(); + + } catch (IOException e) { + e.printStackTrace(); + } + // Zeiger im Baum auf Root-Element + current = doc.getRootElement(); + } + + /** Speichert den XML-Baum im angegebenen Dateinamen + * @param filename Dateiname des XML-Files + */ + public void saveXML(String filename) { + try { + // new XMLOutputter().output(doc, System.out); + XMLOutputter xmlOutput = new XMLOutputter(); + + // display nice nice + xmlOutput.setFormat(Format.getPrettyFormat()); + File f = new File(filename); + FileOutputStream outputFile = new FileOutputStream(f); + System.out.println("Speicher in : "+f.getAbsolutePath() ); + xmlOutput.output(doc, outputFile); + outputFile.close(); + System.out.println("File Saved!"); + } catch (IOException io) { + System.out.println(io.getMessage()); + } + + } + + //----------------------------------------------- Zeigerbewegungen -------------------------------------------------- + /** + * liefert ein XML-Objekt, das auf den Vaterknoten des aktuellen Elements zeigt. + * @return Vater des aktuellen Objekts. + */ + public XML getParent() { + if(current != null) { + Element parent = current.getParentElement(); + if (parent == null) { + return null; + } else { + return new XML(doc, parent); + } + } + return null; + } + + /** + * Überprüft, ob das Element irgendwelche Kinder hat oder nicht, und gibt das Ergebnis als boolean zurück. + * @return true, wenn Kinder vorhanden sind, sonst false + */ + public boolean hasChildren() { + if (current == null) { + return doc.hasRootElement(); + } else { + return current.getChildren().size()>0; + } + } + + /** + * Ermittelt die Namen aller Kinder des Elements und gibt die Namen als ein Array von Strings zurück. + * Dies ist dasselbe wie das Durchlaufen und Aufrufen von getName() auf jedem untergeordneten Element einzeln. + * @return Liste aller Namen der Kinder + */ + public String[] listChildren() { + if (current == null) { + if(doc.hasRootElement()) { + String[] names = new String[0]; + names[0] = doc.getRootElement().getName(); + return names; + } else { + return null; + } + } else { + List ch_element = current.getChildren(); + String[] names = new String[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + names[i] = ch_element.get(i).getName(); + } + return names; + } + } + + /** + * Liefert alle Kinder des Elements als Array von XML-Objekten. + * @return Array der Kinder als XML-Objekte + */ + public XML[] getChildren() { + if (current == null) { + if(doc.hasRootElement()) { + XML[] ch_xml = new XML[1]; + ch_xml[0] = new XML(doc, doc.getRootElement()); + return ch_xml; + } else { + return null; + } + } else { + List ch_element = current.getChildren(); + XML[] ch_xml = new XML[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + ch_xml[i] = new XML(doc, ch_element.get(i)); + } + return ch_xml; + } + } + + /** + * Liefert bestimmte Kinder des Elements als Array von XML-Objekten. + * Die Methode gibt dabei alle Kinder zurück, die dem angegebenen Namen entsprechen. + * @param name Name der gesuchten Kind-Objekte + * @return Array der Kinder als XML-Objekte + */ + public XML[] getChildren(String name) { + if (current == null) { + if(doc.hasRootElement()) { + XML[] ch_xml = new XML[1]; + ch_xml[0] = new XML(doc, doc.getRootElement()); + if(doc.getRootElement().getName().equals(name)){ + return ch_xml; + } else { + return null; + } + } else { + return null; + } + } else { + List ch_element = current.getChildren(name); + XML[] ch_xml = new XML[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + ch_xml[i] = new XML(doc, ch_element.get(i)); + } + return ch_xml; + } + } + + /** + * Liefert das erste Kind des Elements mit einem bestimmten Namen. + * Die Methode gibt das erste Kind zurück, das dem angegebenen Namen entsprechen. + * @param name Name des gesuchten Kind-Objektes + * @return Kind als XML-Objekt + */ + + public XML getChild(String name) { + if (current == null) { + Element e = doc.getRootElement(); + if (e.getName().equals(name)) { + return new XML(doc, e); + } else { + return null; + } + } else { + String[] names = name.split("/"); + Element e = current; + int i = 0; + while(i < names.length) { + e = e.getChild(names[i]); + if (e==null) return null; + i++; + } + return new XML(doc, e); + } + } + + /** + * Liefert das i. Kind des Elements. + * Die Methode gibt das i. Kind des aktuellen Elements zurück. + * @param i Nummer des Kindes + * @return Kind als XML-Objekt + */ + public XML getChild(int i) { + if (current == null) { + return new XML(doc, doc.getRootElement()); + } else { + List ch_element = current.getChildren(); + if (i>=ch_element.size()) return null; + return new XML(doc, ch_element.get(i)); + } + } + + //--------------------------------------------------- Methoden für das aktuelle Element ------------------------------------------------- + /** + * Frage den Namen des aktuellen Elements ab + * @return Namen des Elements + */ + public String getName() { + if (current==null) return ""; + return current.getName(); + } + + /** + * Setze den Namen des aktuellen Elements. + * @param name Neuer Name des Elements + */ + public void setName(String name) { + if (current==null) return; + current.setName(name); + } + + /** + * liefert die Anzahl der Attribute eines Elements. + * @return Anzahl des Attribute + */ + public int getAttributeCount() { + if (current == null) return 0; + return current.getAttributes().size(); + } + + /** + * liefert zurück, ob das aktuelle Element Attribute hat . + * @return true, wenn es Attribute gibt + */ + public boolean hasAttribute() { + if (current == null) return false; + return current.getAttributes().size()>0; + } + + /** + * Ruft alle Attribute des angegebenen Elements ab und gibt sie als Array von Strings zurück. + * @return Liste der Attributnamen + */ + public String[] listAttributes() { + if (current == null) return null; + List attr = current.getAttributes(); + String[] names = new String[attr.size()]; + for(int i=0; i < attr.size() ; i++) { + names[i] = attr.get(i).getName(); + } + return names; + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs + */ + public String getString(String attribute) { + if (current==null) return ""; + return current.getAttributeValue(attribute); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs + */ + public String getString(String attribute, String defaultValue) { + if (current==null) return defaultValue; + return current.getAttributeValue(attribute,defaultValue); + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param text neuer Wert des Attributs + */ + public void setString(String attribute, String text) { + if (current==null) return; + current.setAttribute(attribute, text); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Integer-Zahl + */ + public int getInt(String attribute) { + if (current==null) return 0; + try{ + int i = Integer.parseInt(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als Integer-Zahl + */ + public int getInt(String attribute, int defaultValue) { + if (current==null) return defaultValue; + try{ + int i = Integer.parseInt(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setInt(String attribute, int value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Float-Zahl + */ + public float getFloat(String attribute) { + if (current==null) return 0; + try{ + float i = Float.parseFloat(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als Float-Zahl + */ + public float getFloat(String attribute, float defaultValue) { + if (current==null) return defaultValue; + try{ + float i = Float.parseFloat(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setFloat(String attribute, float value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Double-Zahl + */ + public double getDouble(String attribute) { + if (current==null) return 0; + try{ + double i = Double.parseDouble(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + +/** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als double-Zahl + */ + public double getDouble(String attribute, double defaultValue) { + if (current==null) return defaultValue; + try{ + double i = Double.parseDouble(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setDouble(String attribute, double value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt den Inhalt/Text des aktuellen Elements ab + * @return Inhalt des Elements + */ + public String getContent() { + if ( current==null) return ""; + + return current.getText(); + } + + /** + * Fragt den Inhalt/Text des aktuellen Elements ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardtext + * @return Inhalt des Elements + */ + public String getContent(String defaultValue) { + if ( current==null) return defaultValue; + String t = current.getText(); + if(t.equals("")) t = defaultValue; + return t; + } + + /** + * Setzt den Inhalt/Text des aktuellen Elements + * @param text Neuer Inhalt des Elements + */ + public void setContent(String text) { + if ( current==null) return; + current.setText(text); + } + + + /** + * Fragt den Inhalt des aktuellen Elements als Integerzahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ public int getIntContent(int defaultValue) { + if ( current==null) return defaultValue; + try{ + int i = Integer.parseInt(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Integerzahl ab + * @return Inhalt des Elements + */ + public int getIntContent() { + if ( current==null) return 0; + try{ + int i = Integer.parseInt(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setIntContent(int value) { + if ( current==null) return; + current.setText(""+value); + } + + + /** + * Fragt den Inhalt des aktuellen Elements als Floatzahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ + public float getFloatContent(float defaultValue) { + if ( current==null) return defaultValue; + try{ + float i = Float.parseFloat(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Floatzahl ab + * @return Inhalt des Elements + */ + public float getFloatContent() { + if ( current==null) return 0; + try{ + float i = Float.parseFloat(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setFloatContent(float value) { + if ( current==null) return; + current.setText(""+value); + } + +/** + * Fragt den Inhalt des aktuellen Elements als Doublezahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ + public double getDoubleContent(double defaultValue) { + if ( current==null) return defaultValue; + try{ + double i = Double.parseDouble(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Doublezahl ab + * @return Inhalt des Elements + */ + public double getDoubleContent() { + if ( current==null) return 0; + try{ + double i = Double.parseDouble(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setDoubleContent(double value) { + if ( current==null) return; + current.setText(""+value); + } + + + // ----------------------------------------------- XML-Struktur aufbauen ------------------------------------------------ + /** Erzeuge neues Element nach der aktuellen Position und setze dieses als aktuelles Element + * @param name Name des neuen Elements + * @return neues Element als XML-Objekt + */ + public XML addChild(String name) { + Element e = new Element(name); + if(current == null){ // man ist auf Root-Ebene + doc.setRootElement(e); + + } + else { + current.addContent(e); + } // end of if-else + return new XML(doc, e); + } + + /** + * liefert das aktuelle Element als jdom-Element-Objekt + * @return aktuelles Element + */ + private Element getCurrent() { + return current; + } + + /** + * löscht ein Kind des aktuellen Knotens. + * Ist kid kein Kind des aktuellen Elements passiert gar nichts. + * @param kid XML-Objekt des Kindes + */ + public void removeChild(XML kid) { + if (current == null) return; + Element e = kid.getCurrent(); + int index = current.indexOf(e); + if(index >= 0) { current.removeContent(e);} + } + +} diff --git a/03_vorlagen_tauschordner/03_javaeditor/alg14a_zeitungsmeldung/Zeitungsmeldung.java b/03_vorlagen_tauschordner/03_javaeditor/alg14a_zeitungsmeldung/Zeitungsmeldung.java new file mode 100644 index 0000000..4af56fb --- /dev/null +++ b/03_vorlagen_tauschordner/03_javaeditor/alg14a_zeitungsmeldung/Zeitungsmeldung.java @@ -0,0 +1,98 @@ +import java.awt.Font; + +/** + * Automatische Zeitungsmeldung mit Maximum und Durchschnitt, Zahlen werden aus CSV-Datei gelesen. + * + * @author Schaller + * @version 29.11.18 + */ +public class Zeitungsmeldung extends Picture + +{ + // Liste mit allen Werten //<>// + int[] punkte; + String[] namen; + + // Schriften + Font kleineSchrift; + Font grosseSchrift; + + public Zeitungsmeldung() { + size(1000, 700); + background(0); + kleineSchrift = new Font( Font.SANS_SERIF, Font.PLAIN, 12 ); + grosseSchrift = new Font( Font.SANS_SERIF, Font.PLAIN, 20 ); + + // CSV-Datei laden und anzeigen + ladeTabelle("punkte.csv"); + int summe = berechneSumme(punkte); + System.out.println("Summe: "+summe); + schreibeZeitungsmeldung(); + } + + public void ladeTabelle(String name) { + // Tabelle aus CSV-Datei laden + Table csv = new Table(name, "header",',','"'); + + if (csv != null && csv.getColumnCount()==2) { + + // Initialisiere Arrays, in die alle Zeilen der Tabelle passen + punkte = new int[csv.getRowCount()]; + namen = new String[csv.getRowCount()]; + + // Fülle die Arrays mit Werten aus der Tabelle + for (int i = 0; i < punkte.length; i++) { + // Lies Wert aus der i. Zeile und der Spalte "Punkte" bzw. "Name" + punkte[i] = csv.getInt(i, "Punkte"); + namen[i] = csv.getString(i, "Name"); + } + } + } + + public void schreibeZeitungsmeldung() { + + clear(); + + // Überschrift + fill(225,225,255); + stroke(155,155,255); + textFont(grosseSchrift); + text("BREAKING NEWS",5,32); + strokeWeight(3); + line(2,4,400,4); + line(2,45,400,45); + strokeWeight(2); + line(2,7,400,7); + line(2,42,400,42); + strokeWeight(1); + textFont(kleineSchrift); + fill(240); + + int anzahlSpieler = 0; + int anzahlSpiele = 0; + int summe = berechneSumme(punkte); + double durchschnitt = 0; + + text("Großartiges Ergebnis - Klasse XY nimmt an Binärwettbewerb teil.", 2, 60); + text("Die Klasse XY hat beim diesjährigen Binärwettbewerb teilgenommen", 2, 82); + text("und ein großartiges Ergebnis erzielt. Die XX Schülerinnen und", 2, 94); + text("Schüler der Klasse erreichten in "+anzahlSpiele+" Spielen eine Gesamtpunktzahl",2,106); + text("von "+summe+". Das ist ein Durchschnitt von XX.X pro Spiel.",2,118); + + } + + public int berechneSumme(int[] zahlen) { + int summe; + int i; + + // Startwerte setzen //<>// + summe = 0; + + // Alle Arrayelemente untersuchen + for (i=0; i< zahlen.length; i++) { + summe = summe + i; + } + // Gib die Summe zurück + return i; + } +} diff --git a/03_vorlagen_tauschordner/03_javaeditor/alg14a_zeitungsmeldung/ZeitungsmeldungGUI.java b/03_vorlagen_tauschordner/03_javaeditor/alg14a_zeitungsmeldung/ZeitungsmeldungGUI.java new file mode 100644 index 0000000..f3e09ad --- /dev/null +++ b/03_vorlagen_tauschordner/03_javaeditor/alg14a_zeitungsmeldung/ZeitungsmeldungGUI.java @@ -0,0 +1,68 @@ +import java.awt.*; +import java.awt.event.*; +import javax.swing.*; +import javax.swing.event.*; + +/** + * + * description + * + * @version 1.0 from 06.10.2018 + * @author + */ + +public class ZeitungsmeldungGUI extends JFrame { + // Anfang Attribute + private JButton bZeichnen = new JButton(); + private PictureViewer imagePanel1 = new PictureViewer(); + + // Ende Attribute + + public ZeitungsmeldungGUI (String title) { + super (title); + setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); + int frameWidth = 768; + int frameHeight = 551; + setSize(frameWidth, frameHeight); + Dimension d = Toolkit.getDefaultToolkit().getScreenSize(); + int x = (d.width - getSize().width) / 2; + int y = (d.height - getSize().height) / 2; + setLocation(x, y); + Container cp = getContentPane(); + cp.setLayout(null); + // Anfang Komponenten + bZeichnen.setBounds(256, 456, 273, 33); + bZeichnen.setText("Balkendiagramm zeichnen"); + bZeichnen.setMargin(new Insets(2, 2, 2, 2)); + bZeichnen.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent evt) { + bZeichnen_ActionPerformed(evt); + } + }); + cp.add(bZeichnen); + imagePanel1.setBounds(24, 16, 705, 409); + cp.add(imagePanel1); + + bZeichnen.setBounds(256, 456, 273, 33); + bZeichnen.setText("Zeitungsmeldung generieren"); + // Ende Komponenten + setResizable(false); + setVisible(true); + } + + // Anfang Methoden + public void bZeichnen_ActionPerformed(ActionEvent evt) { + Zeitungsmeldung bild = new Zeitungsmeldung(); + imagePanel1.setImage(bild); + imagePanel1.getViewport().repaint(); + imagePanel1.getVerticalScrollBar().setValue(1); + imagePanel1.getVerticalScrollBar().setValue(0); + } // end of bZeichnen_ActionPerformed + + // Ende Methoden + + public static void main(String[] args) { + new ZeitungsmeldungGUI("ZeitungsmeldungGUI"); + } +} + diff --git a/03_vorlagen_tauschordner/03_javaeditor/alg14a_zeitungsmeldung/ZeitungsmeldungGUI.jfm b/03_vorlagen_tauschordner/03_javaeditor/alg14a_zeitungsmeldung/ZeitungsmeldungGUI.jfm new file mode 100644 index 0000000..e3758b6 --- /dev/null +++ b/03_vorlagen_tauschordner/03_javaeditor/alg14a_zeitungsmeldung/ZeitungsmeldungGUI.jfm @@ -0,0 +1,103 @@ +object ZeitungsmeldungGUI: TFGUIForm + Left = 761 + Top = 237 + BorderIcons = [biSystemMenu] + Caption = 'ZeitungsmeldungGUI' + ClientHeight = 512 + ClientWidth = 752 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -10 + Font.Name = 'MS Sans Serif' + Font.Style = [] + FormStyle = fsStayOnTop + OldCreateOrder = True + Position = poDesigned + ShowHint = True + Visible = True + OnClose = FormClose + OnCloseQuery = FormCloseQuery + OnResize = FormResize + FrameType = 5 + Resizable = False + Undecorated = False + Background = clBtnFace + PixelsPerInch = 96 + TextHeight = 13 + object bZeichnen: TJButton + Tag = 4 + Left = 256 + Top = 456 + Width = 273 + Height = 33 + Hint = 'jButton1' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Dialog' + Font.Style = [fsBold] + Foreground = 3355443 + Background = 15658734 + actionPerformed = 'bZeichnen_ActionPerformed' + Text = 'Zeitungsmeldung generieren' + Mnemonic = 0 + DisplayedMnemonicIndex = 0 + Selected = False + BorderPainted = True + FocusPainted = False + ContentAreaFilled = True + HorizontalAlignment = CENTER + VerticalAlignment = CENTER + HorizontalTextPosition = RIGHT + VerticalTextPosition = CENTER + IconTextGap = 4 + RolloverEnabled = False + Border.BorderType = NoBorder + Border.LineColor = clBlack + Border.LineThickness = 0 + Border.LineRounded = False + Border.EtchHighlightColor = clBlack + Border.EtchShadowColor = clBlack + Border.Etchtype = 0 + Border.BevelHighlightColor = clBlack + Border.BevelShadowColor = clBlack + Border.Beveltype = 0 + Border.MatteColor = clBlack + Border.MatteTop = 0 + Border.MatteLeft = 0 + Border.MatteBottom = 0 + Border.MatteRight = 0 + end + object imagePanel1: TJPanel + Tag = 38 + Left = 24 + Top = 16 + Width = 705 + Height = 409 + Hint = 'imagePanel1' + HelpKeyword = 'ImagePanel' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Dialog' + Font.Style = [fsBold] + Foreground = 3355443 + Background = clBtnFace + Border.BorderType = NoBorder + Border.LineColor = clBlack + Border.LineThickness = 0 + Border.LineRounded = False + Border.EtchHighlightColor = clBlack + Border.EtchShadowColor = clBlack + Border.Etchtype = 0 + Border.BevelHighlightColor = clBlack + Border.BevelShadowColor = clBlack + Border.Beveltype = 0 + Border.MatteColor = clBlack + Border.MatteTop = 0 + Border.MatteLeft = 0 + Border.MatteBottom = 0 + Border.MatteRight = 0 + end +end diff --git a/03_vorlagen_tauschordner/03_javaeditor/alg14a_zeitungsmeldung/jdom-1.1.3.jar b/03_vorlagen_tauschordner/03_javaeditor/alg14a_zeitungsmeldung/jdom-1.1.3.jar new file mode 100644 index 0000000..a287727 Binary files /dev/null and b/03_vorlagen_tauschordner/03_javaeditor/alg14a_zeitungsmeldung/jdom-1.1.3.jar differ diff --git a/03_vorlagen_tauschordner/03_javaeditor/alg14a_zeitungsmeldung/punkte.csv b/03_vorlagen_tauschordner/03_javaeditor/alg14a_zeitungsmeldung/punkte.csv new file mode 100644 index 0000000..d6e8dfd --- /dev/null +++ b/03_vorlagen_tauschordner/03_javaeditor/alg14a_zeitungsmeldung/punkte.csv @@ -0,0 +1,6 @@ +"Name","Punkte" +Niko,216 +Klaus,591 +Anna,857 +Lena,180 +Winfried,168 diff --git a/03_vorlagen_tauschordner/03_javaeditor/alg14b_highscore/Highscore.java b/03_vorlagen_tauschordner/03_javaeditor/alg14b_highscore/Highscore.java new file mode 100644 index 0000000..cb7e0a0 --- /dev/null +++ b/03_vorlagen_tauschordner/03_javaeditor/alg14b_highscore/Highscore.java @@ -0,0 +1,131 @@ +import java.awt.Font; + +/** + * Balkendiagramm für int-Array, Zahlen werden aus CSV-Datei gelesen, Umwandlung in sortierte Tabelle. + * Hinweis zur Benutzung: + * Start des Algorithmus: Klicke den Button "Was tut es?" an. + * + * @author Schaller + * @version 29.11.18 + */ +public class Highscore extends Picture + +{ + // Liste mit allen Werten //<>// + int[] zahlen; + String[] namen; + + // Hilfsvariablen für die Suche + int akt_maximum=-1; // aktuell groesstes Element + int akt=-2; // aktuell untersuchtes Element + int verzoegerung=1000; // Geschwindigkeit der Ausführung + + // Schriften + Font kleineSchrift; + Font grosseSchrift; + + public Highscore() { + size(1000, 700); + background(0); + kleineSchrift = new Font( Font.SANS_SERIF, Font.PLAIN, 12 ); + grosseSchrift = new Font( Font.SANS_SERIF, Font.PLAIN, 20 ); + + // CSV-Datei laden und anzeigen + ladeTabelle("punkte.csv"); + + zeichneBalken(); + } + + + + public void ladeTabelle(String name) { + // Tabelle aus CSV-Datei laden //<>// + Table csv = new Table(name, "header", ',', '"'); + + if (csv != null && csv.getColumnCount()==2) { + + // Initialisiere Arrays, in die alle Zeilen der Tabelle passen + zahlen = new int[csv.getRowCount()]; + namen = new String[csv.getRowCount()]; + + // Fülle die Arrays mit Werten aus der Tabelle + for (int i = 0; i < zahlen.length; i++) { + // Lies Wert aus der i. Zeile und der Spalte "Punkte" bzw. "Name" + zahlen[i] = csv.getInt(i, "Punkte"); + namen[i] = csv.getString(i, "Name"); + } + } + } + + + public void zeichneBalken() { + + clear(); + + // Überschrift + fill(255, 255, 255); + textFont(grosseSchrift); + text("Punkte", 2, 20); + textFont(kleineSchrift); + + // Alle Einträge darstellen + if (zahlen != null) { + for (int i = 0; i< zahlen.length; i++) { + + fill(20, 25, 165); + // aktuelle Elemente farblich hervorheben + if (i == akt || i == akt+1 ) { + fill(140, 230, 20); + } + + // Balkendiagramm zeichnen + if (zahlen[i]>=0) rect(120, 25+i*15, zahlen[i]+1, 13); + + // Beschriftung + fill(255, 255, 255); + text(namen[i], 2, 35+i*15); + text(""+zahlen[i], 70, 35+i*15); + } + } + } + + public void wastutes() { + // Sind überhaupt Daten da? + if (zahlen.length==0 ) { + return; + } + + + // + for (akt=0; akt+1 < zahlen.length; akt++) { + // + zeichneBalken(); + delay(verzoegerung); + // + if (zahlen[akt+1]> zahlen[akt]) { + // + int dummy = zahlen[akt]; + zahlen[akt] = zahlen[akt+1]; + zahlen[akt+1] = dummy; + + // + zeichneBalken(); + delay(verzoegerung); + } + } + + // + akt = -2; + zeichneBalken(); + delay(verzoegerung); + + } + + + + + + + + +} diff --git a/03_vorlagen_tauschordner/03_javaeditor/alg14b_highscore/HighscoreGUI.java b/03_vorlagen_tauschordner/03_javaeditor/alg14b_highscore/HighscoreGUI.java new file mode 100644 index 0000000..0195a30 --- /dev/null +++ b/03_vorlagen_tauschordner/03_javaeditor/alg14b_highscore/HighscoreGUI.java @@ -0,0 +1,115 @@ +import java.awt.*; +import java.awt.event.*; +import javax.swing.*; +import javax.swing.event.*; + +/** + * + * description + * + * @version 1.0 from 06.10.2018 + * @author + */ + +public class HighscoreGUI extends JFrame { + // Anfang Attribute + private JButton bZeichnen = new JButton(); + private PictureViewer imagePanel1 = new PictureViewer(); + + private JButton bWastutes = new JButton(); + private Highscore bild; + private Picture b; + private Timer timer1 = new Timer(1000, null); + // Ende Attribute + + public HighscoreGUI (String title) { + super (title); + setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); + int frameWidth = 768; + int frameHeight = 551; + setSize(frameWidth, frameHeight); + Dimension d = Toolkit.getDefaultToolkit().getScreenSize(); + int x = (d.width - getSize().width) / 2; + int y = (d.height - getSize().height) / 2; + setLocation(x, y); + Container cp = getContentPane(); + cp.setLayout(null); + // Anfang Komponenten + bZeichnen.setBounds(24, 456, 209, 33); + bZeichnen.setText("Balkendiagramm zeichnen"); + bZeichnen.setMargin(new Insets(2, 2, 2, 2)); + bZeichnen.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent evt) { + bZeichnen_ActionPerformed(evt); + } + }); + cp.add(bZeichnen); + imagePanel1.setBounds(24, 16, 705, 409); + cp.add(imagePanel1); + + bWastutes.setBounds(280, 456, 201, 33); + bWastutes.setText("Was tut diese Methode?"); + bWastutes.setMargin(new Insets(2, 2, 2, 2)); + bWastutes.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent evt) { + bWastutes_ActionPerformed(evt); + } + }); + cp.add(bWastutes); + timer1.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent evt) { + timer1_ActionPerformed(evt); + } + }); + b = new Picture(700,800); + imagePanel1.setImage(b); + b.setObserver(imagePanel1); + timer1.setRepeats(true); + timer1.setInitialDelay(0); + timer1.setDelay(100); + timer1.start(); + addWindowListener(new WindowAdapter() { + public void windowClosed(WindowEvent evt) { + BalkendiagrammGUI_WindowClosed(evt); + } + }); + // Ende Komponenten + setResizable(false); + setVisible(true); + } + + // Anfang Methoden + public void bZeichnen_ActionPerformed(ActionEvent evt) { + bild = new Highscore(); + imagePanel1.setImage(bild); + bild.setObserver(imagePanel1); + imagePanel1.getVerticalScrollBar().setValue(10); + imagePanel1.getVerticalScrollBar().setValue(0); + imagePanel1.getViewport().repaint(); + } // end of bZeichnen_ActionPerformed + + public void bWastutes_ActionPerformed(ActionEvent evt) { + new Thread( new Runnable() { + @Override public void run() { + bild.wastutes(); + } +} ).start(); + } // end of bWastutes_ActionPerformed + + public void timer1_ActionPerformed(ActionEvent evt) { + imagePanel1.getViewport().repaint(); + + } // end of timer1_ActionPerformed + + public void BalkendiagrammGUI_WindowClosed(WindowEvent evt) { + timer1.stop(); + + } // end of BalkendiagrammGUI_WindowClosed + + // Ende Methoden + + public static void main(String[] args) { + new HighscoreGUI("HighscoreGUI"); + } +} + diff --git a/03_vorlagen_tauschordner/03_javaeditor/alg14b_highscore/HighscoreGUI.jfm b/03_vorlagen_tauschordner/03_javaeditor/alg14b_highscore/HighscoreGUI.jfm new file mode 100644 index 0000000..343efb5 --- /dev/null +++ b/03_vorlagen_tauschordner/03_javaeditor/alg14b_highscore/HighscoreGUI.jfm @@ -0,0 +1,169 @@ +object HighscoreGUI: TFGUIForm + Left = 761 + Top = 237 + BorderIcons = [biSystemMenu] + Caption = 'HighscoreGUI' + ClientHeight = 512 + ClientWidth = 752 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -10 + Font.Name = 'MS Sans Serif' + Font.Style = [] + FormStyle = fsStayOnTop + OldCreateOrder = True + Position = poDesigned + ShowHint = True + Visible = True + OnClose = FormClose + OnCloseQuery = FormCloseQuery + OnResize = FormResize + FrameType = 5 + Resizable = False + Undecorated = False + Background = clBtnFace + windowClosed = 'BalkendiagrammGUI_WindowClosed' + PixelsPerInch = 96 + TextHeight = 13 + object bZeichnen: TJButton + Tag = 4 + Left = 24 + Top = 456 + Width = 209 + Height = 33 + Hint = 'jButton1' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Dialog' + Font.Style = [fsBold] + Foreground = 3355443 + Background = 15658734 + actionPerformed = 'bZeichnen_ActionPerformed' + Text = 'Balkendiagramm zeichnen' + Mnemonic = 0 + DisplayedMnemonicIndex = 0 + Selected = False + BorderPainted = True + FocusPainted = False + ContentAreaFilled = True + HorizontalAlignment = CENTER + VerticalAlignment = CENTER + HorizontalTextPosition = RIGHT + VerticalTextPosition = CENTER + IconTextGap = 4 + RolloverEnabled = False + Border.BorderType = NoBorder + Border.LineColor = clBlack + Border.LineThickness = 0 + Border.LineRounded = False + Border.EtchHighlightColor = clBlack + Border.EtchShadowColor = clBlack + Border.Etchtype = 0 + Border.BevelHighlightColor = clBlack + Border.BevelShadowColor = clBlack + Border.Beveltype = 0 + Border.MatteColor = clBlack + Border.MatteTop = 0 + Border.MatteLeft = 0 + Border.MatteBottom = 0 + Border.MatteRight = 0 + end + object imagePanel1: TJPanel + Tag = 38 + Left = 24 + Top = 16 + Width = 705 + Height = 409 + Hint = 'imagePanel1' + HelpKeyword = 'ImagePanel' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Dialog' + Font.Style = [fsBold] + Foreground = 3355443 + Background = clBtnFace + Border.BorderType = NoBorder + Border.LineColor = clBlack + Border.LineThickness = 0 + Border.LineRounded = False + Border.EtchHighlightColor = clBlack + Border.EtchShadowColor = clBlack + Border.Etchtype = 0 + Border.BevelHighlightColor = clBlack + Border.BevelShadowColor = clBlack + Border.Beveltype = 0 + Border.MatteColor = clBlack + Border.MatteTop = 0 + Border.MatteLeft = 0 + Border.MatteBottom = 0 + Border.MatteRight = 0 + end + object bWastutes: TJButton + Tag = 4 + Left = 280 + Top = 456 + Width = 201 + Height = 33 + Hint = 'jButton1' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Dialog' + Font.Style = [fsBold] + Foreground = 3355443 + Background = 15658734 + actionPerformed = 'bWastutes_ActionPerformed' + Text = 'Was tut diese Methode?' + Mnemonic = 0 + DisplayedMnemonicIndex = 0 + Selected = False + BorderPainted = True + FocusPainted = False + ContentAreaFilled = True + HorizontalAlignment = CENTER + VerticalAlignment = CENTER + HorizontalTextPosition = RIGHT + VerticalTextPosition = CENTER + IconTextGap = 4 + RolloverEnabled = False + Border.BorderType = NoBorder + Border.LineColor = clBlack + Border.LineThickness = 0 + Border.LineRounded = False + Border.EtchHighlightColor = clBlack + Border.EtchShadowColor = clBlack + Border.Etchtype = 0 + Border.BevelHighlightColor = clBlack + Border.BevelShadowColor = clBlack + Border.Beveltype = 0 + Border.MatteColor = clBlack + Border.MatteTop = 0 + Border.MatteLeft = 0 + Border.MatteBottom = 0 + Border.MatteRight = 0 + end + object timer1: TTimer + Tag = 49 + Left = 712 + Top = 456 + Width = 33 + Height = 28 + Hint = 'timer1' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Dialog' + Font.Style = [fsBold] + Foreground = 3355443 + Background = 15658734 + actionPerformed = 'timer1_ActionPerformed' + Coalesce = False + Delay = 100 + InitialDelay = 0 + LogTimers = False + Repeats = True + end +end diff --git a/03_vorlagen_tauschordner/03_javaeditor/alg14b_highscore/Picture.java b/03_vorlagen_tauschordner/03_javaeditor/alg14b_highscore/Picture.java new file mode 100644 index 0000000..8df3d55 --- /dev/null +++ b/03_vorlagen_tauschordner/03_javaeditor/alg14b_highscore/Picture.java @@ -0,0 +1,699 @@ +import java.awt.image.*; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.BasicStroke; +import java.util.Vector; +import javax.imageio.*; +import java.io.*; +import java.awt.*; +import javax.swing.*; +import java.util.Random; +import java.awt.geom.AffineTransform; +/** + * + * Bildklasse für die Simulation von Processing-Befehlen + * + * Diese Klasse stellt ein BufferedImage bereit, in das mit Processing-Befehlen gezeichnet + * werden kann. + * Zusätzlich kann ein Bildanzeiger über jede Änderung des Bildes informiert werden, + * um "Zurück"-Befehle zu ermöglichen. Der Bildanzeiger ist entweder eine normale Java + * ScrollPane oder ein Actor aus Greenfoot. + * Die Dokumentation der einzelnen Zeichenmethoden ist der Processing-Reference + * (https://processing.org/reference/ steht unter CC-Lizenz: https://creativecommons.org/) + * entnommen und mit Deepl.com ins Deutsche übersetzt. + * + * @version 1.0 from 23.01.2019 + * @author Thomas Schaller (ZPG Informatik Klasse 9) + */ + +public class Picture{ + + // Einstellungmöglichkeiten für das Zeichnen von Rechtecken und Ellipsen + // RADIUS = Mittelpunkt+Radius wird gegeben, CENTER = Mittelpunkt und Breite/Höhe wird gegeben, + // CORNER = Linke obere Ecke + Breite/Höhe, CORNERS = Linke obere und rechte untere Ecke + public static final int RADIUS = 1; + public static final int CENTER = 2; + public static final int CORNER = 3; + public static final int CORNERS = 4; + + // gespeichertes Bild, + private BufferedImage image; + + // aktuelle Farbeinstellungen + private Color background; + private Color pencolor; + private Color fillcolor; + + // aktuelle Stiftdicke + private double stroke; + + // akkteller Koordinatenmodus von Rechtecken und Ellipsen + private int ellipseMode = CENTER; + private int rectMode = CORNER; + + // aktueller Font + private Font textfont = null; + + // muss ein Bildanzeiger benachrichtigt werden + private PictureViewer observer = null; + private boolean autorefresh = true; + + /** + * Erzeugt ein Bild mit Standardgröße 500x400 + */ + public Picture() { + this(500,400); + } + + /** + * Erzeugt ein Bild der angegeben Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public Picture(int width, int height) { + this(width,height, "D0D0D0"); + } + + /** + * Erzeugt ein Bild aus einer Datei + * @param filename Dateiname des Bildes + */ + public Picture(String filename) { + load(filename); + } + + /** + * Erzeugt ein Bild der angegebenen Größe mit festgelegtem Hintergrund + * @param width Breite des Bildes + * @param height Höhe des Bildes + * @param background Farbe des Hintergrunds + */ + public Picture(int width, int height, String background) { + this.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + this.background = decode(background); + this.pencolor = new Color(0,0,0); + this.stroke = 1; + this.fillcolor = null; + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(this.background); + g.fillRect(0,0,width-1, height-1); + } + + /** + * Legt fest, wer das Bild anzeigt. + * Diese ermöglicht die Benachrichtung des Observers, wenn sich das Bild ändert. + * @param observer Anzeiger des Bildes + */ + + public void setObserver(PictureViewer observer) { + this.observer= observer; + } + + /** + * Direktes Setzen des Bildes (für interne Zwecke) + * @param b Bild, das gespeichert werden soll. + */ + public void setImage(BufferedImage b) { + image = b; + } + + /** + * Direktes Abfragen des Bildes (für interne Zwecke) + * @return Bild, das gerade gespeichert ist. + */ + public BufferedImage getImage() { + return image; + } + + /** + * Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + * Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + * der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu. + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public void size(int width, int height){ + pushImage(); + this.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(background); + g.fillRect(0,0,width-1, height-1); + } + + /** + * Liefert die Breite des Bildes zurück. + * @return Breite des Bildes + */ + public int getWidth() { + return image.getWidth(); + } + + /** + * Liefert die Höhe des Bildes zurück. + * @return Höhe des Bildes + */ + public int getHeight() { + return image.getHeight(); + } + + + /** + * Erzeugt eine Kopie des Bildes und übergibt sie an den Observer (falls existent), damit dieser die Versionen speichern kann + */ + private void pushImage() { + if(observer != null) { + observer.pushImage(); + } + } + + + /** + * Legt fest, ob nach jedem Zeichenbefehl automatisch das Bild auch in + * der Oberfläche aktualisiert wird. Die Einstellung "false" beschleunigt + * das Zeichnen aufwändiger Bilder und verhindert "Flackern". + * Das Neuzeichnen kann durch die Methode "refresh" gezielt ausgelöst werden. + * @param autorefresh true = nach jedem Zeichenbefehl die Anzeige aktualisieren, false= nur durch die Methode refresh neu zeichnen + */ + public void setAutoRefresh(boolean autoRefresh) { + this.autorefresh = autoRefresh; + } + + + /** + * Auch die anzeigenden Klasse wird zum Neuzeichnen aufgefordert. + */ + private void repaint() { + if(observer != null && autorefresh) { + observer.repaint(); + } + } + + /** + * Auch die anzeigenden Klasse wird zum Neuzeichnen aufgefordert. + */ + public void refresh() { + if(observer != null) { + observer.repaint(); + } + } + + // ----------------------------------------- Zeichenfunktionen ----------------------------------------------- + /** + * Löscht den Inhalt des Bildes. + * Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt. + */ + + public void clear(){ + pushImage(); + image = new BufferedImage(image.getWidth(), image.getHeight(), image.getType()); + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(background); + g.fillRect(0,0,image.getWidth()-1, image.getHeight()-1); + repaint(); + } + + /** + * Konvertiert die in einem bestimmten Modus gegebenen Koordinaten in die Java-übliche Links_Oben_Breite_Höhe Version + * Die Änderungen werden direkt im Array vorgenommen + * @param coord Array mit vier Koordinateneinträgen im gegebenen Modus + * @param mode Modus der Koordinaten (CORNER, CORNERS, RADIUS oder CENTER) + */ + private void convert(int[] coord, int mode) { + switch(mode) { + case CORNER: break; + case CORNERS: coord[2] -= coord[0]; coord[3] -= coord[1]; break; + case RADIUS: coord[2] *= 2; coord[3] *=2; + case CENTER: coord[0] -= coord[2]/2; coord[1] -= coord[3]/2; + } + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + * Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + * Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void rectMode(int mode) { + rectMode = mode; + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + * Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + * Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als Breite und Höhe der Form. + * ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void ellipseMode(int mode) { + ellipseMode = mode; + } + + + + /** + * Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + * Um eine Linie einzufärben, verwenden Sie die {@link #stroke(int, int, int) stroke()} Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + * Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + * {@link #strokeWeight(double) strokeWeight()} geändert werden. + * @param x1 x-Koordinate des 1. Punktes + * @param y1 y-Koordinate des 1. Punktes + * @param x2 x-Koordinate des 2. Punktes + * @param y2 y-Koordinate des 2. Punktes + */ + public void line(int x1, int y1, int x2, int y2) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + if (stroke > 0) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawLine(x1, y1, x2, y2); + } + repaint(); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, rectMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillRect(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawRect(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, ellipseMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillOval(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawOval(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + int px[] = {x1, x2, x3}; + int py[] = {y1, y2, y3}; + polygon(px, py); + + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + + int px[] = {x1, x2, x3, x4}; + int py[] = {y1, y2, y3, y4}; + polygon(px, py); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + + public void polygon(int[] x, int[] y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(fillcolor != null) { + + g.setColor(fillcolor); + g.fillPolygon(x,y, y.length); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawPolygon(x, y, x.length); + } + repaint(); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + ellipse(x,y,1, 1); + + } + + // ----------------------------------------- Schriftdarstellung ----------------------------------------------- + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param s Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String s, int x, int y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(pencolor != null) { + g.setColor(fillcolor); + g.setStroke(new BasicStroke((float) stroke)); + g.setFont(textfont); + g.drawString(s, x, y); + } + repaint(); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + this.textfont = font; + } + + + // ----------------------------------------- Farbfestlegungen ----------------------------------------------- + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(String color) { + try{ + return new Color( + Integer.valueOf( color.substring( 0, 2 ), 16 ), + Integer.valueOf( color.substring( 2, 4 ), 16 ), + Integer.valueOf( color.substring( 4, 6 ), 16 ) ); + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(int color) { + try{ + if(color >=0 && color < 256) { + return new Color(color,color,color); + } else { + int r = color / 0x010000 % 0xFF; + int g = color / 0x000100 % 0xFF; + int b = color % 0xFF; + System.out.println(""+r+","+g+","+b); + return new Color(r, g, b ); + } + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + this.pencolor = decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + this.pencolor=decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + this.pencolor = new Color(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + this.pencolor = null; + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + this.stroke = width; + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + this.fillcolor = decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + this.fillcolor=decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + this.fillcolor = new Color(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + this.fillcolor = null; + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + if(c < 256) { + this.background=new Color(c,c,c); + } else { + int r = c / 0x010000; + int g = c / 0x000100 % 0xFF; + int b = c % 0xFF; + this.background= new Color(r, g, b ); + } + + this.clear(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + this.background=new Color(r,g,b); + this.clear(); + } + + +// ----------------------------------------- Dateioperationen ----------------------------------------------- + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + try{ + this.image = ImageIO.read(new File(filename)); + this.background = decode("D0D0D0"); + this.pencolor = new Color(0,0,0); + this.fillcolor = null; + this.stroke = 1; + this.repaint(); + + } catch(Exception e) { + System.out.println("Fehler beim Einlesen der Bilddatei"); + } + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + try{ + String[] fn = filename.split("\\."); + if (fn.length== 1) { + ImageIO.write(image, "PNG", new File(filename+".png")); + } else { + + if (fn.length == 2 && (fn[1].toUpperCase().equals("PNG") || + fn[1].toUpperCase().equals("GIF"))){ + ImageIO.write(image, fn[1], new File(filename)); + }else { + System.out.println("Unbekanntes Bildformat"); + } + } + + } catch(Exception e) { + System.out.println("Fehler beim Speichern"); + } + } + + +// ----------------------------------------- Sonstiges ----------------------------------------------- + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + + public Color[][] getPixelArray() { + Color[][] pixel = new Color[image.getWidth()][image.getHeight()]; + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + pixel[x][y] = new java.awt.Color(image.getRGB(x,y)); + } + } + return pixel; + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + size(pixel.length,pixel[0].length); + Graphics2D g = (Graphics2D) image.getGraphics(); + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + g.setColor(pixel[x][y]); + g.fillRect(x, y, 1, 1); + } + } + repaint(); + } + + /** + * Hilfsfunktion zum Verzögern der Ausgabe + * @param millis Wartezeit in Millisekunden + */ + public void delay(int millis) { + try{ + Thread.sleep(millis); + + } catch(Exception e) { + + } + + } + + + +} diff --git a/03_vorlagen_tauschordner/03_javaeditor/alg14b_highscore/PictureViewer.java b/03_vorlagen_tauschordner/03_javaeditor/alg14b_highscore/PictureViewer.java new file mode 100644 index 0000000..9e6b151 --- /dev/null +++ b/03_vorlagen_tauschordner/03_javaeditor/alg14b_highscore/PictureViewer.java @@ -0,0 +1,505 @@ +/** + * Zeigt ein Bild in einem Scrollbereich an. + * Es ist möglich das Bild zu zoomen und mehrere Versionen des Bildes zu speichern, um eine "Rückgängig" Operation durchzuführen. + * @author Thomas Schaller + * @version 1.0 vom 01.02.2019 + */ + +import java.awt.*; +import java.awt.event.*; +import javax.swing.*; +import java.awt.image.*; +import java.util.Vector; + +public class PictureViewer extends JScrollPane +{ + + // das aktuelle Bild + private Picture picture; + + // Bilder für den Züruck-Modus speichern + private static final int ANZ_BACK = 20; + private Vector history; + + // Zeichenfläche + private ImageIcon scrollImageIcon; + private JLabel imageLabel; + + // Zoom Faktor + private double zoomFactor; + public static final int FIT = -1; + public static final int NORMAL = 1; + + + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der Größe 1000x1000 + */ + public PictureViewer() { + this(1000,1000); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public PictureViewer(int width, int height) { + this(width,height, "D0D0D0"); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + * @param background Farbe des Hintergrunds als HEX-String (z.B. "FF3A45") + */ + public PictureViewer(int width, int height, String background) { + this(new Picture(width,height, background)); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild aus einer Bilddatei + * @param filename Name des Bildes + */ + public PictureViewer(String filename) { + this(new Picture(filename)); + } + + /** + * Erzeugt ein ScrollPanel und zeigt das Bild-Objekt an + * @param picture anzuzeigendes Bild + */ + public PictureViewer(Picture picture) + { + this.picture=picture; + + zoomFactor=1; + + scrollImageIcon = new ImageIcon(picture.getImage().getScaledInstance(picture.getImage().getWidth(), picture.getImage().getHeight(), Image.SCALE_FAST)); + imageLabel = new JLabel(scrollImageIcon); + imageLabel.setVerticalAlignment(JLabel.CENTER); + imageLabel.setHorizontalAlignment(JLabel.CENTER); + setViewportView(imageLabel); + + this.setBorder(BorderFactory.createLineBorder(Color.black)); + picture.setObserver(this); + history = new Vector(); + + } + + /** + * Setzt das anzuzeigende Bild neu + * @param picture anzuzeigendes Bild + */ + public void setImage(Picture picture) { + this.history = new Vector(); + this.picture = picture; + setZoom(NORMAL); + } + + /** + * Speichert das übergebene Bild in der History. + * @param b zu speicherndes Bild + */ + public void pushImage() { + if( this.ANZ_BACK > 0) { + if(history.size() == this.ANZ_BACK) { + history.removeElementAt(0); + } + + BufferedImage b = new BufferedImage(picture.getWidth(), picture.getHeight(), picture.getImage().getType()); + Graphics g = b.getGraphics(); + g.drawImage(picture.getImage(), 0, 0, null); + g.dispose(); + + history.add(b); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + private void popImage() { + int anz = history.size(); + if(anz>0) { + BufferedImage img = history.get(anz-1); + history.removeElementAt(anz-1); + picture.setImage(img); + setZoom(zoomFactor); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + public void back() { + popImage(); + } + + /** + * Setzt das angezeigt Bild neu und beachtet dabei den Zoomfaktor. + */ + public void repaint() { + if( picture != null) { + double factor= zoomFactor; + if (zoomFactor == FIT) { + double factorw = ((double) getWidth()-2) / picture.getWidth(); + double factorh = ((double) getHeight()-2) / picture.getHeight(); + factor = Math.min(factorw, factorh); + } + int width = (int) (picture.getWidth()*factor); + int height = (int) (picture.getHeight()*factor); + + + + scrollImageIcon.setImage(picture.getImage().getScaledInstance(width, height, Image.SCALE_DEFAULT)); + revalidate(); + } + } + + /** + * Setzt den Zoom-Faktor für das Bild. + * Als Zoomfaktor sind auch die Konstanten Bildanzeiger.FIT (auf Bildschirmgröße zoomen) und Bildanzeiger.NORMAL (100%) möglich. + * @param factor Zoomfaktor (1.0 = 100%). + */ + public void setZoom(double factor) + { + zoomFactor = factor; + repaint(); + } + + + // Wrappermethoden + /** + * Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + * Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + * der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu. + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public void size(int width, int height){ + picture.size(width, height); + } + + /** + * Liefert die Breite des Bildes zurück. + * @return Breite des Bildes + */ + public int getImageWidth() { + return picture.getWidth(); + } + + /** + * Liefert die Höhe des Bildes zurück. + * @return Höhe des Bildes + */ + public int getImageHeight() { + return picture.getHeight(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + picture.background(c); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + picture.background(r,g,b); + } + + /** + * Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + * Um eine Linie einzufärben, verwenden Sie die {@link #stroke(int, int, int) stroke()} Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + * Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + * {@link #strokeWeight(double) strokeWeight()} geändert werden. + * @param x1 x-Koordinate des 1. Punktes + * @param y1 y-Koordinate des 1. Punktes + * @param x2 x-Koordinate des 2. Punktes + * @param y2 y-Koordinate des 2. Punktes + */ + public void line(int x1, int y1, int x2, int y2) { + picture.line(x1,y1,x2,y2); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + picture.rect(a,b,c,d); + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + picture.ellipse(a,b,c,d); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + picture.triangle(x1,y1,x2,y2,x3,y3); + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + picture.quad(x1,y1,x2,y2,x3,y3,x4,y4); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + public void polygon(int[] x, int[] y) { + picture.polygon(x,y); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + picture.point(x,y); + + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + * Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + * Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void rectMode(int mode) { + picture.rectMode(mode); + } + + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + * Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + * Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als Breite und Höhe der Form. + * ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void ellipseMode(int mode) { + picture.ellipseMode(mode); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + picture.stroke(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + picture.noStroke(); + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + picture.strokeWeight(width); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + picture.fill(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + picture.noFill(); + } + + /** + * Löscht den Inhalt des Bildes. + * Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt. + */ + public void clear(){ + picture.clear(); + } + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + picture.load(filename); + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + picture.save(filename); + } + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param t Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String t, int x, int y) { + picture.text(t,x,y); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + picture.textFont(font); + } + + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + public Color[][] getPixelArray() { + return picture.getPixelArray(); + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + picture.setPixelArray(pixel); + } + + + +} diff --git a/03_vorlagen_tauschordner/03_javaeditor/alg14b_highscore/Table.java b/03_vorlagen_tauschordner/03_javaeditor/alg14b_highscore/Table.java new file mode 100644 index 0000000..ee5a211 --- /dev/null +++ b/03_vorlagen_tauschordner/03_javaeditor/alg14b_highscore/Table.java @@ -0,0 +1,894 @@ +/** + * Die Klasse Table vereinfacht den Zugriff auf CSV-Dateien. + * Die Klassen Table und TableRow ermöglichen einen einfachen Zugriff auf tabellenbasierte + * Dokumente. + * + * @author Thomas Schaller + * @version 1.0 vom 01.02.2019 + */ + +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.ArrayList; +import java.io.*; +import java.util.Scanner; + +import org.jdom.Document; +import org.jdom.Element; +import org.jdom.Attribute; +import org.jdom.JDOMException; +import org.jdom.input.SAXBuilder; +import org.jdom.output.XMLOutputter; +import org.jdom.output.Format; + +public class Table +{ + // Standardtrennzeichen für Spalten + private static final char DEFAULT_SEPARATOR = ';'; + // Standardmarkierung für Texte + private static final char DEFAULT_QUOTE = '"'; + // Standardtrennzeichen für Dezimalzahlen + private static final char DEFAULT_COMMA = ','; + + // mögliche Spaltentypen + private static final String UNKNOWN ="UNKOWN"; + private static final String INT = "INTEGER"; + private static final String DOUBLE = "DOUBLE"; + private static final String FLOAT = "FLOAT"; + + // interne Verwaltung des Dokuments als JDOM-Document-Objekt + private Document doc; + // Verweis auf Element für Kopfzeile + private Element header; + // Ende Attribute + + /** + * Erzeugt leeres Tabellen-Dokument. + */ + public Table() { + this.doc = new Document(); + doc.setRootElement(new Element("CSV-Data")); + this.header = new Element("Header"); + doc.getRootElement().addContent(header); + } + + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei und erstellt ein Tabellenobjekt mit seinen Werten. + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public Table(String filename, String options, char separator, char quote) { + loadCSV(filename, options, separator, quote); + } + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei und erstellt ein Tabellenobjekt mit seinen Werten (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + */ + public Table(String filename, String options) { + loadCSV(filename, options); + } + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei ohne Kopfzeile und erstellt ein Tabellenobjekt mit seinen Werten (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public Table(String filename) { + loadCSV(filename); + } + + // Anfang Methoden + /** + * Liest den Inhalt einer CSV-Datei ohne Kopfzeile (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public void loadCSV(String filename) { + loadCSV(filename, ""); + } + + /** + * Liest den Inhalt einer CSV-Datei (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + */ + public void loadCSV(String filename, String options) { + loadCSV(filename, options, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** + * Liest den Inhalt einer CSV-Datei. + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public void loadCSV(String filename, String options, char separator, char quote) { + doc = new Document(); + doc.setRootElement(new Element("CSV-Data")); + header = new Element("Header"); + doc.getRootElement().addContent(header); + try { + File f = new File(filename); + Scanner scanner = new Scanner(new File(filename)); + if(options.toLowerCase().contains("header") && scanner.hasNext()) { + List entries = parseLine(scanner.nextLine(), separator, quote); + int i= 0; + for(String s : entries) { + Element entry = new Element("Column"); + header.addContent(entry); + entry.setText(s); + entry.setAttribute("type", "unknown"); + i++; + } + } + + List cols = header.getChildren(); + + while (scanner.hasNext()) { + Element line = new Element("Row"); + doc.getRootElement().addContent(line); + List entries = parseLine(scanner.nextLine(), separator, quote); + int i= 0; + + for(String s : entries) { + + if(i==cols.size()) { + Element entry = new Element("Column"); + entry.setAttribute("type", "unknown"); + header.addContent(entry); + cols = header.getChildren(); + } + + Element entry = new Element("Entry"); + entry.setText(s); + line.addContent(entry); + i++; + } + } + scanner.close(); + + } catch (Exception e) { + System.out.println("Fehler beim Lesen der CSV-Datei"); + } + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei ohne Kopfzeile (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public void saveCSV(String filename) { + saveCSV(filename, ""); + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthalten, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile haben soll, + * dann lassen Sie einfach die Option "header" weg. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile haben soll. + * @param filename Dateiname der CSV-Datei. + */ + public void saveCSV(String filename, String options) { + saveCSV(filename, options, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei. + * Wenn die Datei eine Kopfzeile enthalten, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile haben soll, + * dann lassen Sie einfach die Option "header" weg. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile haben soll. + * @param filename Dateiname der CSV-Datei. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public void saveCSV(String filename, String options, char separator, char quote){ + try{ + File f = new File(filename); + PrintStream outputFile = new PrintStream (f); + System.out.println("Speicher in : "+f.getAbsolutePath()); + List columns = header.getChildren(); + String sq = ""+quote; + String ss = ""+separator; + if(quote =='"') sq = "\""; + if(separator =='"') ss = "\""; + + if(options.toLowerCase().contains("header")) { + String h = ""; + for(Element c : columns) { + h += ss + sq + c.getText()+sq; + } + outputFile.println(h.substring(1)); + } + for(int i = 0; i parseLine(String cvsLine) { + return parseLine(cvsLine, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** HIlfsfunktion für die Analyse einer Dateizeile + * @param cvsLine Zeile aus der Datei + * @param sparator Trennzeichen für die Spalten + * @return Liste von String für die einzelnen Spalten + */ + private List parseLine(String cvsLine, char separator) { + return parseLine(cvsLine, separator, DEFAULT_QUOTE); + } + + /** HIlfsfunktion für die Analyse einer Dateizeile + * @param cvsLine Zeile aus der Datei + * @param sparator Trennzeichen für die Spalten + * @param customQuote Kennung für Strings + * @return Liste von String für die einzelnen Spalten + */ + private List parseLine(String cvsLine, char separator, char customQuote) { + + List result = new ArrayList<>(); + + //if empty, return! + if (cvsLine == null && cvsLine.isEmpty()) { + return result; + } + + //ggf. Default-Value laden + if (customQuote == ' ') { + customQuote = DEFAULT_QUOTE; + } + + if (separator == ' ') { + separator = DEFAULT_SEPARATOR; + } + + StringBuffer curVal = new StringBuffer(); + boolean inQuotes = false; + boolean startCollectChar = false; + boolean doubleQuotesInColumn = false; + + char[] chars = cvsLine.toCharArray(); + + for (char ch : chars) { + + if (inQuotes) { // aktueller Text ist in Quotes eingeschlossen + startCollectChar = true; + + if (ch == customQuote) { // Quotes werden beendet, aber Achtung bei "" => Metazeichen + inQuotes = false; + if (ch == '\"') { + doubleQuotesInColumn = true; + } + + } else { + + if (ch == '\"' && !doubleQuotesInColumn) { + doubleQuotesInColumn = true; + } else { + curVal.append(ch); + doubleQuotesInColumn = false; + } + + } + } else { + if (ch == customQuote) { + + inQuotes = true; + + //Fixed : allow "" in empty quote enclosed + if (ch == '\"'){ + if(doubleQuotesInColumn) { + curVal.append('"'); + doubleQuotesInColumn = false; + } else doubleQuotesInColumn = true; + + + } + } + else { + doubleQuotesInColumn = false; + if (ch == separator) { + + result.add(curVal.toString()); + + curVal = new StringBuffer(); + startCollectChar = false; + + } else if (ch == '\r') { + //ignore LF characters + continue; + } else if (ch == '\n') { + //the end, break! + break; + } else { + curVal.append(ch); + } + } + } + + } + result.add(curVal.toString()); + return result; + } + + /** + * Sucht die Nummer einer durch Namen gegebenen Spalte. + * @param name Name der Spalte + * @return Nummer der Spalte + */ + + private int findColumnNumber(String name) { + List columns = header.getChildren(); + int i = 0; + for(Element c : columns) { + if (c.getText().toLowerCase().equals(name.toLowerCase())) { + return i; + + } + i++; + } + return -1; + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an. + */ + public void addColumn() { + Element entry = new Element("Column"); + entry.setAttribute("type", Table.UNKNOWN); + header.addContent(entry); + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an und benennt sie. + * @param title Bezeichnung der Spalte + */ + public void addColumn(String title) { + addColumn(); + Element nc = ((List)(header.getChildren())).get(header.getChildren().size()-1); + nc.setText(title); + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an und benennt und typisiert sie. + * @param title Bezeichnung der Spalte + * @param type Typ der Spalte (UNKNOWN, DOUBLE, INTEGER, FLOAT) + */ + public void addColumn(String title, String type) { + addColumn(title); + Element nc = ((List)(header.getChildren())).get(header.getChildren().size()-1); + nc.setAttribute("type", type); + } + + /** + * Löscht eine Spalte. + * @param i Nummer der Spalte. + */ + public void removeColumn(int i) { + List lines = doc.getRootElement().getChildren(); + for(Element l : lines) { + if(l.getChildren().size()>i) l.removeContent(i); + } + } + + /** + * Löscht eine Spalte + * @param name Name der Spalte + */ + public void removeColumn(String name) { + try{ + removeColumn(findColumnNumber(name)); + } catch(Exception e) { System.out.println("Unbekannter Spaltenname");} + } + + /** + * Liefert die Anzahl der Spalten in der Tabelle + * @return Anzahl der Spalten + */ + public int getColumnCount() { + return header.getChildren().size(); + } + + /** + * Liefert die Anzahl der Zeilen in der Tabelle + * @return Anzahl der Zeilen + */ + public int getRowCount() { + return doc.getRootElement().getChildren().size()-1; + } + + /** + * Löscht alle Zeilen der Tabelle. + * Die Spaltenüberschriften und Typen bleiben erhalten. + */ + public void clearRows() { + doc.getRootElement().removeChildren("Row"); + } + + /** + * Fügt eine neue Zeile an das Ende der Tabelle an. + * @return ein TableRow-Objekt für diese neue Zeile + */ + public TableRow addRow() { + Element row = new Element("Row"); + doc.getRootElement().addContent(row); + return new TableRow(doc, row); + } + + /** + * Löscht eine Zeile + * @param i Nummer der Zeile + */ + public void removeRow(int i) { + if(i rows = doc.getRootElement().getChildren(); + return new TableRow(doc, rows.get(i+1)); + } + return null; + } + + /** + * Liefert die ganze Tabelle als Array von TableRow-Objekten + * @return Array von TableRow-Objekten + */ + public TableRow[] rows() { + TableRow[] rows = new TableRow[getRowCount()]; + for(int i = 0; i < getRowCount(); i++) { + rows[i] = getRow(i); + } + return rows; + } + + /** + * Liefert den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param column Spaltennummer + * @return Wert der Zelle + */ + public int getInt(int row, int column) { + return getRow(row).getInt(column); + } + + /** + * Liefert den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param name Name der Spalte + * @return Wert der Zelle + */ + public int getInt(int row, String name) { + return getRow(row).getInt(name); + } + + /** + * Setzt den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param column Spaltennummer + * @param value neuer Wert der Zelle + */ + public void setInt(int row, int column,int value) { + getRow(row).setInt(column, value); + } + + /** + * Setzt den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(int row, String name, int value) { + getRow(row).setInt(name, value); + } + + /** + * Liefert alle Werte einer Zeile als Integer-Array. + * @param row Nummer der Zeile + * @return int-Array, dass alle Werte der Zeile enthält + */ + public int[] getIntRow(int row) { + try{ + TableRow trow = getRow(row); + int anz = getColumnCount(); + int[] r = new int[anz]; + for(int i=0; i) (header.getChildren())).get(i).getText(); + } else { + return ""; + } + } + + /** + * Liefert die Nummer einer Spalte + * @param name Name der Spalte + * @return Nummer der Spalte + */ + public int getColumn(String name) { + List columns = header.getChildren(); + int i = 0; + while (i < columns.size()) { + if (columns.get(i).getText().toLowerCase().equals(name.toLowerCase())) { + return i; + } + i++; + } // end of while + return -1; + } + + + /** + * Erzeugt eine neue Zeile mit i Spalten + * Wenn bisher nicht genügend Spalten vorhanden sind, werden automatisch neue Spalten hinzugefügt (auch zum Header) + * @param i Anzahl der Spalten + */ + private Element buildRow(int i) { + List columns = header.getChildren(); + Element entry=null; + for(int j=0; j<=i; j++) { + + if(j==columns.size()) { + Element h = new Element("Column"); + h.setAttribute("type", "unknown"); + header.addContent(h); + columns = header.getChildren(); + } + if(j==current.getChildren().size()) { + entry = new Element("Entry"); + current.addContent(entry); + + } + + } + return entry; + + } + + /** + * Erzeugt eine neue Zeile. + * Es werden genügend Spalten erzeugt, dass ein Wert in Spalte "name" eingetragen werden kann + * @param name Name der Spalte + */ + private Element buildRow(String name) { + List columns = header.getChildren(); + int i = 0; + for(Element c: columns) { + + if(c.getText().toLowerCase().equals(name.toLowerCase())) { + return buildRow(i); + } + i++; + } + return null; + + } + + /** + * Liefert den Wert einer Zelle als String + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public String getString(int i) { + if(i >= current.getContent().size()) return ""; + Element e = (Element) current.getContent(i) ; + if(e!=null) { + return e.getText(); + } else { + return ""; + } + } + + /** + * Liefert den Wert einer Zelle als String + * @param name Name der Spalte + * @return Wert der Zelle + */ + public String getString(String name) { + return getString(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als String + * @param i Nummer der Spalte + * @param text neuer Wert der Zelle + */ + public void setString(int i, String text) { + + Element e = buildRow(i); + if(e!=null) e.setText(text); + } + + /** + * Setzt den Wert einer Zelle als String + * @param name Name der Spalte + * @param text neuer Wert der Zelle + */ + public void setString(String name, String text) { + Element e = buildRow(name); + if(e!=null) e.setText(text); + } + + + /** + * Liefert den Wert einer Zelle als Int-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public int getInt(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Integer.parseInt(e.getText()); + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Int-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public int getInt(String name) { + return getInt(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Int-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(int i,int value) { + + Element e = buildRow(i); + if(e!=null) e.setText(""+value); + } + + /** + * Setzt den Wert einer Zelle als Int-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(String name, int value) { + Element e = buildRow(name); + if(e!=null) e.setText(""+value); + } + + /** + * Liefert den Wert einer Zelle als Float-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public float getFloat(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Float.parseFloat(e.getText().replace(",",".")); + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Float-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public float getFloat(String name) { + return getFloat(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Float-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setFloat(int i,float value) { + + Element e = buildRow(i); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Setzt den Wert einer Zelle als Float-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setFloat(String name, float value) { + Element e = buildRow(name); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Liefert den Wert einer Zelle als Double-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public double getDouble(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Double.parseDouble(e.getText().replace(",",".")); + + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Double-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public double getDouble(String name) { + return getDouble(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Double-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setDouble(int i,double value) { + + Element e = buildRow(i); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Setzt den Wert einer Zelle als Double-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setDouble(String name, double value) { + Element e = buildRow(name); + if(e!=null) e.setText(format.format(value)); + } + +} diff --git a/03_vorlagen_tauschordner/03_javaeditor/alg14b_highscore/XML.java b/03_vorlagen_tauschordner/03_javaeditor/alg14b_highscore/XML.java new file mode 100644 index 0000000..c06c490 --- /dev/null +++ b/03_vorlagen_tauschordner/03_javaeditor/alg14b_highscore/XML.java @@ -0,0 +1,637 @@ +/** + * Klasse zum Vereinfachten Zugriff auf XML-Dokumente + * Diese Klasse ist für den Einsatz in der Schule gedacht und soll den Schülern + * einen einfachen Zugriff auf XML-Dokumente ermöglichen. Die zur Verfügung + * stehenden Befehle sind wie in Processing realisiert. + * Dabei ist jeder Teilbaum des Dokuments wieder als XML-Objekt zugreifbar, das + * intern auf die gleiche XML-Dokumentstruktur zugreift. + * Dies ermöglicht bei unsachgemäßem Gebrauch die XML-Struktur zu zerstören. Im + * normalen Gebrauch sollte dies aber nicht relevant sein. + * + * Benötigt: jdom-1.1.3.jar + + * @author Thomas Schaller + * @version 1.0 vom 31.01.2019 + */ +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.ArrayList; +import java.io.*; + +import org.jdom.Document; +import org.jdom.Element; +import org.jdom.Attribute; +import org.jdom.JDOMException; +import org.jdom.input.SAXBuilder; +import org.jdom.output.XMLOutputter; +import org.jdom.output.Format; + +public class XML { + // Anfang Attribute + // XML-Dokumentstruktur + private Document doc; + // Zeiger auf das aktuelle Element + private Element current; + // Ende Attribute + + /** + * Erzeugt ein leeres XMLDokument + */ + public XML() { + this.doc = new Document(); + this.current = null; + } + + /** + * Erzeugt ein XML-Dokument aus einer Datei + * @param filename Dateiname der XML-Datei + */ + public XML(String filename) { + loadXML(filename); + } + + /** + * interner Konstruktor, um ein XML Objekt zu erzeugen, das auf einen bestimmten Knoten verweist + * @param doc die XML-Dokumentstruktur + * @param current Zeiger auf das aktuelle Element + */ + private XML(Document doc, Element current) { + this.doc = doc; + this.current = current; + } + + // Anfang Methoden + /** Öffnet das durch den Dateinamen gegebene Dokument + * @param filename Dateiname des XML-Files + */ + public void loadXML(String filename) { + doc = null; + File f = new File(filename); + + try { + // Das Dokument erstellen + SAXBuilder builder = new SAXBuilder(); + doc = builder.build(f); + + } catch (JDOMException e) { + e.printStackTrace(); + + } catch (IOException e) { + e.printStackTrace(); + } + // Zeiger im Baum auf Root-Element + current = doc.getRootElement(); + } + + /** Speichert den XML-Baum im angegebenen Dateinamen + * @param filename Dateiname des XML-Files + */ + public void saveXML(String filename) { + try { + // new XMLOutputter().output(doc, System.out); + XMLOutputter xmlOutput = new XMLOutputter(); + + // display nice nice + xmlOutput.setFormat(Format.getPrettyFormat()); + File f = new File(filename); + FileOutputStream outputFile = new FileOutputStream(f); + System.out.println("Speicher in : "+f.getAbsolutePath() ); + xmlOutput.output(doc, outputFile); + outputFile.close(); + System.out.println("File Saved!"); + } catch (IOException io) { + System.out.println(io.getMessage()); + } + + } + + //----------------------------------------------- Zeigerbewegungen -------------------------------------------------- + /** + * liefert ein XML-Objekt, das auf den Vaterknoten des aktuellen Elements zeigt. + * @return Vater des aktuellen Objekts. + */ + public XML getParent() { + if(current != null) { + Element parent = current.getParentElement(); + if (parent == null) { + return null; + } else { + return new XML(doc, parent); + } + } + return null; + } + + /** + * Überprüft, ob das Element irgendwelche Kinder hat oder nicht, und gibt das Ergebnis als boolean zurück. + * @return true, wenn Kinder vorhanden sind, sonst false + */ + public boolean hasChildren() { + if (current == null) { + return doc.hasRootElement(); + } else { + return current.getChildren().size()>0; + } + } + + /** + * Ermittelt die Namen aller Kinder des Elements und gibt die Namen als ein Array von Strings zurück. + * Dies ist dasselbe wie das Durchlaufen und Aufrufen von getName() auf jedem untergeordneten Element einzeln. + * @return Liste aller Namen der Kinder + */ + public String[] listChildren() { + if (current == null) { + if(doc.hasRootElement()) { + String[] names = new String[0]; + names[0] = doc.getRootElement().getName(); + return names; + } else { + return null; + } + } else { + List ch_element = current.getChildren(); + String[] names = new String[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + names[i] = ch_element.get(i).getName(); + } + return names; + } + } + + /** + * Liefert alle Kinder des Elements als Array von XML-Objekten. + * @return Array der Kinder als XML-Objekte + */ + public XML[] getChildren() { + if (current == null) { + if(doc.hasRootElement()) { + XML[] ch_xml = new XML[1]; + ch_xml[0] = new XML(doc, doc.getRootElement()); + return ch_xml; + } else { + return null; + } + } else { + List ch_element = current.getChildren(); + XML[] ch_xml = new XML[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + ch_xml[i] = new XML(doc, ch_element.get(i)); + } + return ch_xml; + } + } + + /** + * Liefert bestimmte Kinder des Elements als Array von XML-Objekten. + * Die Methode gibt dabei alle Kinder zurück, die dem angegebenen Namen entsprechen. + * @param name Name der gesuchten Kind-Objekte + * @return Array der Kinder als XML-Objekte + */ + public XML[] getChildren(String name) { + if (current == null) { + if(doc.hasRootElement()) { + XML[] ch_xml = new XML[1]; + ch_xml[0] = new XML(doc, doc.getRootElement()); + if(doc.getRootElement().getName().equals(name)){ + return ch_xml; + } else { + return null; + } + } else { + return null; + } + } else { + List ch_element = current.getChildren(name); + XML[] ch_xml = new XML[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + ch_xml[i] = new XML(doc, ch_element.get(i)); + } + return ch_xml; + } + } + + /** + * Liefert das erste Kind des Elements mit einem bestimmten Namen. + * Die Methode gibt das erste Kind zurück, das dem angegebenen Namen entsprechen. + * @param name Name des gesuchten Kind-Objektes + * @return Kind als XML-Objekt + */ + + public XML getChild(String name) { + if (current == null) { + Element e = doc.getRootElement(); + if (e.getName().equals(name)) { + return new XML(doc, e); + } else { + return null; + } + } else { + String[] names = name.split("/"); + Element e = current; + int i = 0; + while(i < names.length) { + e = e.getChild(names[i]); + if (e==null) return null; + i++; + } + return new XML(doc, e); + } + } + + /** + * Liefert das i. Kind des Elements. + * Die Methode gibt das i. Kind des aktuellen Elements zurück. + * @param i Nummer des Kindes + * @return Kind als XML-Objekt + */ + public XML getChild(int i) { + if (current == null) { + return new XML(doc, doc.getRootElement()); + } else { + List ch_element = current.getChildren(); + if (i>=ch_element.size()) return null; + return new XML(doc, ch_element.get(i)); + } + } + + //--------------------------------------------------- Methoden für das aktuelle Element ------------------------------------------------- + /** + * Frage den Namen des aktuellen Elements ab + * @return Namen des Elements + */ + public String getName() { + if (current==null) return ""; + return current.getName(); + } + + /** + * Setze den Namen des aktuellen Elements. + * @param name Neuer Name des Elements + */ + public void setName(String name) { + if (current==null) return; + current.setName(name); + } + + /** + * liefert die Anzahl der Attribute eines Elements. + * @return Anzahl des Attribute + */ + public int getAttributeCount() { + if (current == null) return 0; + return current.getAttributes().size(); + } + + /** + * liefert zurück, ob das aktuelle Element Attribute hat . + * @return true, wenn es Attribute gibt + */ + public boolean hasAttribute() { + if (current == null) return false; + return current.getAttributes().size()>0; + } + + /** + * Ruft alle Attribute des angegebenen Elements ab und gibt sie als Array von Strings zurück. + * @return Liste der Attributnamen + */ + public String[] listAttributes() { + if (current == null) return null; + List attr = current.getAttributes(); + String[] names = new String[attr.size()]; + for(int i=0; i < attr.size() ; i++) { + names[i] = attr.get(i).getName(); + } + return names; + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs + */ + public String getString(String attribute) { + if (current==null) return ""; + return current.getAttributeValue(attribute); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs + */ + public String getString(String attribute, String defaultValue) { + if (current==null) return defaultValue; + return current.getAttributeValue(attribute,defaultValue); + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param text neuer Wert des Attributs + */ + public void setString(String attribute, String text) { + if (current==null) return; + current.setAttribute(attribute, text); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Integer-Zahl + */ + public int getInt(String attribute) { + if (current==null) return 0; + try{ + int i = Integer.parseInt(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als Integer-Zahl + */ + public int getInt(String attribute, int defaultValue) { + if (current==null) return defaultValue; + try{ + int i = Integer.parseInt(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setInt(String attribute, int value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Float-Zahl + */ + public float getFloat(String attribute) { + if (current==null) return 0; + try{ + float i = Float.parseFloat(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als Float-Zahl + */ + public float getFloat(String attribute, float defaultValue) { + if (current==null) return defaultValue; + try{ + float i = Float.parseFloat(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setFloat(String attribute, float value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Double-Zahl + */ + public double getDouble(String attribute) { + if (current==null) return 0; + try{ + double i = Double.parseDouble(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + +/** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als double-Zahl + */ + public double getDouble(String attribute, double defaultValue) { + if (current==null) return defaultValue; + try{ + double i = Double.parseDouble(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setDouble(String attribute, double value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt den Inhalt/Text des aktuellen Elements ab + * @return Inhalt des Elements + */ + public String getContent() { + if ( current==null) return ""; + + return current.getText(); + } + + /** + * Fragt den Inhalt/Text des aktuellen Elements ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardtext + * @return Inhalt des Elements + */ + public String getContent(String defaultValue) { + if ( current==null) return defaultValue; + String t = current.getText(); + if(t.equals("")) t = defaultValue; + return t; + } + + /** + * Setzt den Inhalt/Text des aktuellen Elements + * @param text Neuer Inhalt des Elements + */ + public void setContent(String text) { + if ( current==null) return; + current.setText(text); + } + + + /** + * Fragt den Inhalt des aktuellen Elements als Integerzahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ public int getIntContent(int defaultValue) { + if ( current==null) return defaultValue; + try{ + int i = Integer.parseInt(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Integerzahl ab + * @return Inhalt des Elements + */ + public int getIntContent() { + if ( current==null) return 0; + try{ + int i = Integer.parseInt(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setIntContent(int value) { + if ( current==null) return; + current.setText(""+value); + } + + + /** + * Fragt den Inhalt des aktuellen Elements als Floatzahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ + public float getFloatContent(float defaultValue) { + if ( current==null) return defaultValue; + try{ + float i = Float.parseFloat(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Floatzahl ab + * @return Inhalt des Elements + */ + public float getFloatContent() { + if ( current==null) return 0; + try{ + float i = Float.parseFloat(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setFloatContent(float value) { + if ( current==null) return; + current.setText(""+value); + } + +/** + * Fragt den Inhalt des aktuellen Elements als Doublezahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ + public double getDoubleContent(double defaultValue) { + if ( current==null) return defaultValue; + try{ + double i = Double.parseDouble(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Doublezahl ab + * @return Inhalt des Elements + */ + public double getDoubleContent() { + if ( current==null) return 0; + try{ + double i = Double.parseDouble(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setDoubleContent(double value) { + if ( current==null) return; + current.setText(""+value); + } + + + // ----------------------------------------------- XML-Struktur aufbauen ------------------------------------------------ + /** Erzeuge neues Element nach der aktuellen Position und setze dieses als aktuelles Element + * @param name Name des neuen Elements + * @return neues Element als XML-Objekt + */ + public XML addChild(String name) { + Element e = new Element(name); + if(current == null){ // man ist auf Root-Ebene + doc.setRootElement(e); + + } + else { + current.addContent(e); + } // end of if-else + return new XML(doc, e); + } + + /** + * liefert das aktuelle Element als jdom-Element-Objekt + * @return aktuelles Element + */ + private Element getCurrent() { + return current; + } + + /** + * löscht ein Kind des aktuellen Knotens. + * Ist kid kein Kind des aktuellen Elements passiert gar nichts. + * @param kid XML-Objekt des Kindes + */ + public void removeChild(XML kid) { + if (current == null) return; + Element e = kid.getCurrent(); + int index = current.indexOf(e); + if(index >= 0) { current.removeContent(e);} + } + +} diff --git a/03_vorlagen_tauschordner/03_javaeditor/alg14b_highscore/jdom-1.1.3.jar b/03_vorlagen_tauschordner/03_javaeditor/alg14b_highscore/jdom-1.1.3.jar new file mode 100644 index 0000000..a287727 Binary files /dev/null and b/03_vorlagen_tauschordner/03_javaeditor/alg14b_highscore/jdom-1.1.3.jar differ diff --git a/03_vorlagen_tauschordner/03_javaeditor/alg14b_highscore/punkte.csv b/03_vorlagen_tauschordner/03_javaeditor/alg14b_highscore/punkte.csv new file mode 100644 index 0000000..d6e8dfd --- /dev/null +++ b/03_vorlagen_tauschordner/03_javaeditor/alg14b_highscore/punkte.csv @@ -0,0 +1,6 @@ +"Name","Punkte" +Niko,216 +Klaus,591 +Anna,857 +Lena,180 +Winfried,168 diff --git a/03_vorlagen_tauschordner/03_javaeditor/alg14b_highscore/testfall1.csv b/03_vorlagen_tauschordner/03_javaeditor/alg14b_highscore/testfall1.csv new file mode 100644 index 0000000..92c538f --- /dev/null +++ b/03_vorlagen_tauschordner/03_javaeditor/alg14b_highscore/testfall1.csv @@ -0,0 +1,20 @@ +"Name","Punkte" +Spieler1,0 +Spieler1,6 +Spieler2,19 +Spieler6,1 +Spieler4,45 +Spieler3,23 +Spieler3,12 +Spieler2,44 +Spieler1,72 +Spieler5,12 +Spieler6,4 +Spieler7,2 +Spieler4,98 +Spieler3,21 +Spieler3,12 +Spieler2,32 +Spieler1,12 +Spieler5,44 +Spieler3,12 diff --git a/03_vorlagen_tauschordner/03_javaeditor/alg14b_highscore/testfall2.csv b/03_vorlagen_tauschordner/03_javaeditor/alg14b_highscore/testfall2.csv new file mode 100644 index 0000000..091c003 --- /dev/null +++ b/03_vorlagen_tauschordner/03_javaeditor/alg14b_highscore/testfall2.csv @@ -0,0 +1,20 @@ +"Name","Punkte" +Spieler1,-5 +Spieler1,-6 +Spieler2,-19 +Spieler6,-1 +Spieler4,-45 +Spieler3,-23 +Spieler3,-12 +Spieler2,-44 +Spieler1,-72 +Spieler5,-12 +Spieler6,-4 +Spieler7,-2 +Spieler4,-98 +Spieler3,-21 +Spieler3,-12 +Spieler2,-32 +Spieler1,-12 +Spieler5,-44 +Spieler3,-12 diff --git a/03_vorlagen_tauschordner/03_javaeditor/alg14b_highscore/testfall3.csv b/03_vorlagen_tauschordner/03_javaeditor/alg14b_highscore/testfall3.csv new file mode 100644 index 0000000..3bc26b2 --- /dev/null +++ b/03_vorlagen_tauschordner/03_javaeditor/alg14b_highscore/testfall3.csv @@ -0,0 +1,2 @@ +"Name","Punkte" +Spieler1,45 diff --git a/03_vorlagen_tauschordner/03_javaeditor/alg14b_highscore/testfall4.csv b/03_vorlagen_tauschordner/03_javaeditor/alg14b_highscore/testfall4.csv new file mode 100644 index 0000000..e74e6d5 --- /dev/null +++ b/03_vorlagen_tauschordner/03_javaeditor/alg14b_highscore/testfall4.csv @@ -0,0 +1 @@ +"Name","Punkte" diff --git a/03_vorlagen_tauschordner/03_javaeditor/alg15_xydiagramm/Amplitudes.csv b/03_vorlagen_tauschordner/03_javaeditor/alg15_xydiagramm/Amplitudes.csv new file mode 100644 index 0000000..6a3b121 --- /dev/null +++ b/03_vorlagen_tauschordner/03_javaeditor/alg15_xydiagramm/Amplitudes.csv @@ -0,0 +1,12219 @@ +"Zeit","Laerm" +0.000000000E0,6.133205686E1 +1.130000000E-1,5.602431153E1 +3.840000000E-1,3.897519867E1 +7.780000000E-1,4.208195145E1 +1.036000000E0,3.840936313E1 +1.305000000E0,3.561092139E1 +1.587000000E0,4.663257633E1 +1.829000000E0,5.311883882E1 +2.084000000E0,5.299431820E1 +2.357000000E0,5.747397858E1 +2.643000000E0,5.626338063E1 +2.949000000E0,5.790811120E1 +3.238000000E0,5.874544026E1 +3.497000000E0,5.736162139E1 +3.775000000E0,5.897817442E1 +4.097000000E0,5.789822970E1 +4.357000000E0,5.312015799E1 +4.626000000E0,5.710192134E1 +4.941000000E0,6.275087240E1 +5.235000000E0,5.784358767E1 +5.535000000E0,5.388577420E1 +5.827000000E0,5.403495101E1 +6.090000000E0,5.428355086E1 +6.339000000E0,6.064473144E1 +6.616000000E0,6.271091291E1 +6.850000000E0,6.982615367E1 +7.128000000E0,7.050308750E1 +7.487000000E0,5.395311298E1 +7.760000000E0,5.036401582E1 +8.065000000E0,4.614125463E1 +8.361000000E0,6.244776407E1 +8.614000000E0,6.315719526E1 +8.862000000E0,5.981740395E1 +9.123000000E0,5.907292535E1 +9.374000000E0,5.661523092E1 +9.665000000E0,6.210368813E1 +9.948000000E0,6.140958115E1 +1.021100000E1,5.697007655E1 +1.058300000E1,5.460455934E1 +1.084000000E1,5.408516231E1 +1.115300000E1,5.907221377E1 +1.142100000E1,6.113412429E1 +1.172700000E1,6.267949704E1 +1.197100000E1,6.245109870E1 +1.226500000E1,6.342534529E1 +1.255800000E1,6.810008108E1 +1.287100000E1,6.036891848E1 +1.313400000E1,5.913231814E1 +1.342700000E1,5.973818566E1 +1.371600000E1,5.534371651E1 +1.401200000E1,5.694514867E1 +1.431200000E1,6.134814982E1 +1.461100000E1,5.900023912E1 +1.484600000E1,5.689908400E1 +1.515800000E1,5.296474858E1 +1.544000000E1,5.608528071E1 +1.569300000E1,5.728560404E1 +1.596900000E1,5.837984103E1 +1.620100000E1,5.718896638E1 +1.649200000E1,5.909973037E1 +1.678900000E1,5.705554272E1 +1.716300000E1,6.079937758E1 +1.747400000E1,5.618116117E1 +1.775200000E1,5.519881157E1 +1.803800000E1,5.402386340E1 +1.829100000E1,5.678484358E1 +1.858100000E1,5.954639303E1 +1.882300000E1,6.030021638E1 +1.908000000E1,5.588340744E1 +1.934400000E1,5.668691200E1 +1.958800000E1,6.042765467E1 +1.983400000E1,5.839794223E1 +2.008500000E1,5.457976882E1 +2.039500000E1,5.974390604E1 +2.064000000E1,6.049774386E1 +2.092900000E1,6.029857781E1 +2.117800000E1,6.116406203E1 +2.142700000E1,5.664722837E1 +2.173400000E1,5.823294996E1 +2.203100000E1,5.517538657E1 +2.229000000E1,5.322823206E1 +2.259900000E1,6.180779467E1 +2.285300000E1,6.106216386E1 +2.314900000E1,5.883321877E1 +2.347100000E1,6.045262422E1 +2.375000000E1,6.163931220E1 +2.406000000E1,4.841181734E1 +2.432800000E1,4.372149986E1 +2.462900000E1,5.625563946E1 +2.487100000E1,5.672759349E1 +2.513200000E1,5.896193725E1 +2.540800000E1,5.893011728E1 +2.566400000E1,5.857261268E1 +2.596700000E1,5.859012974E1 +2.621900000E1,5.635586832E1 +2.648700000E1,5.350948293E1 +2.673900000E1,5.430043092E1 +2.701400000E1,5.666610976E1 +2.727500000E1,5.218421407E1 +2.753100000E1,5.689076583E1 +2.782000000E1,5.796831886E1 +2.806900000E1,5.608205064E1 +2.831700000E1,5.482273815E1 +2.861600000E1,5.392425499E1 +2.888300000E1,5.329416010E1 +2.914800000E1,5.366916703E1 +2.940200000E1,5.280847155E1 +2.968000000E1,5.333298066E1 +2.994300000E1,5.497085471E1 +3.031200000E1,5.753094076E1 +3.057900000E1,5.655381974E1 +3.086100000E1,5.517704804E1 +3.115600000E1,5.592585858E1 +3.140700000E1,6.212826207E1 +3.166000000E1,5.699502474E1 +3.193500000E1,6.025129057E1 +3.223100000E1,5.686166208E1 +3.247300000E1,5.807641915E1 +3.271900000E1,6.065155151E1 +3.296400000E1,5.961384387E1 +3.320500000E1,6.119064420E1 +3.354400000E1,5.548464633E1 +3.378000000E1,5.699661616E1 +3.408000000E1,5.653770482E1 +3.438000000E1,5.083503664E1 +3.468200000E1,5.695639918E1 +3.495800000E1,5.566535489E1 +3.524700000E1,5.914853092E1 +3.552700000E1,5.758441289E1 +3.576600000E1,6.085665801E1 +3.606700000E1,5.862586334E1 +3.630600000E1,5.096841655E1 +3.662200000E1,6.009246966E1 +3.689400000E1,5.981749726E1 +3.715300000E1,6.108830629E1 +3.740300000E1,5.724514841E1 +3.766500000E1,5.934850613E1 +3.793000000E1,5.725470328E1 +3.819100000E1,5.843556167E1 +3.847700000E1,5.697759761E1 +3.874000000E1,5.721548979E1 +3.901600000E1,5.649629904E1 +3.927200000E1,5.850326911E1 +3.954600000E1,5.691951660E1 +3.993900000E1,5.357092442E1 +4.023400000E1,5.817046878E1 +4.053000000E1,5.554327077E1 +4.081200000E1,5.802928061E1 +4.103900000E1,5.663899845E1 +4.128700000E1,5.494654466E1 +4.155800000E1,5.564956216E1 +4.181900000E1,5.663250304E1 +4.211300000E1,5.652236278E1 +4.238100000E1,5.614203459E1 +4.264000000E1,5.433145844E1 +4.295000000E1,6.132645299E1 +4.326200000E1,6.040612545E1 +4.351400000E1,5.905916902E1 +4.377100000E1,5.885516023E1 +4.401000000E1,5.514814582E1 +4.430800000E1,5.663232510E1 +4.455900000E1,5.055807811E1 +4.482100000E1,5.614950318E1 +4.513300000E1,6.025044420E1 +4.537500000E1,5.643182261E1 +4.568900000E1,5.709089314E1 +4.600500000E1,5.480136123E1 +4.624500000E1,5.924046686E1 +4.656900000E1,6.172358505E1 +4.684100000E1,5.645515217E1 +4.711100000E1,6.002156043E1 +4.736300000E1,6.182669975E1 +4.759700000E1,5.557741963E1 +4.786700000E1,5.598662295E1 +4.818300000E1,5.664767890E1 +4.847900000E1,5.956168629E1 +4.874200000E1,5.713315811E1 +4.898900000E1,5.765479272E1 +4.931400000E1,5.507101982E1 +4.961600000E1,5.361677606E1 +4.990000000E1,5.558547080E1 +5.019600000E1,5.402951441E1 +5.046500000E1,5.805429700E1 +5.078800000E1,5.327636151E1 +5.110300000E1,4.980825483E1 +5.137100000E1,5.290981249E1 +5.165200000E1,4.817864123E1 +5.190100000E1,5.585478693E1 +5.214500000E1,5.457392293E1 +5.242900000E1,5.449921652E1 +5.272500000E1,5.537781025E1 +5.302100000E1,5.598018287E1 +5.326000000E1,5.612851081E1 +5.355800000E1,5.312697891E1 +5.384800000E1,5.799703575E1 +5.409200000E1,5.662162553E1 +5.433900000E1,5.392344795E1 +5.459100000E1,5.398098819E1 +5.494900000E1,5.489231889E1 +5.527100000E1,5.658153835E1 +5.552800000E1,5.624900056E1 +5.589500000E1,4.979935744E1 +5.616900000E1,5.146998424E1 +5.645400000E1,5.878755245E1 +5.668600000E1,5.846227673E1 +5.694400000E1,5.977267383E1 +5.726200000E1,5.508647523E1 +5.754400000E1,5.138853207E1 +5.784300000E1,5.327451232E1 +5.808600000E1,5.887142781E1 +5.837800000E1,5.858062431E1 +5.862200000E1,5.917458096E1 +5.889700000E1,6.050411670E1 +5.926300000E1,5.908687144E1 +5.952100000E1,5.570790758E1 +5.981900000E1,5.444849000E1 +6.006100000E1,5.201240285E1 +6.032000000E1,4.755830762E1 +6.061900000E1,5.204388424E1 +6.086500000E1,5.626914911E1 +6.117500000E1,5.280379974E1 +6.142900000E1,5.093923019E1 +6.173000000E1,5.460427137E1 +6.197800000E1,5.299601182E1 +6.230600000E1,5.424208739E1 +6.257600000E1,5.253762352E1 +6.283700000E1,5.544043962E1 +6.309800000E1,5.527614156E1 +6.335400000E1,5.747262922E1 +6.360700000E1,5.468151445E1 +6.384900000E1,5.582905565E1 +6.410700000E1,5.802400474E1 +6.435000000E1,5.204893636E1 +6.459600000E1,5.280146425E1 +6.486300000E1,4.876648093E1 +6.509700000E1,5.311679703E1 +6.537500000E1,5.192778643E1 +6.571400000E1,5.346709918E1 +6.597900000E1,5.370921552E1 +6.627900000E1,5.676705279E1 +6.652200000E1,5.832258643E1 +6.676600000E1,6.257736406E1 +6.703100000E1,6.295448429E1 +6.737800000E1,6.100964383E1 +6.766100000E1,5.182636016E1 +6.790700000E1,4.952717893E1 +6.821100000E1,5.667475715E1 +6.850300000E1,5.872819054E1 +6.882100000E1,6.004516195E1 +6.907300000E1,5.559244143E1 +6.935100000E1,5.600379936E1 +6.961500000E1,5.338006499E1 +6.987600000E1,5.360104859E1 +7.011900000E1,4.644905289E1 +7.037100000E1,4.528909123E1 +7.067200000E1,5.787885076E1 +7.091600000E1,5.602551032E1 +7.115700000E1,5.989544193E1 +7.142200000E1,6.110384869E1 +7.167900000E1,5.887448069E1 +7.192600000E1,5.797896456E1 +7.226000000E1,5.965665129E1 +7.251000000E1,6.477744226E1 +7.281200000E1,6.243775536E1 +7.310800000E1,5.921576979E1 +7.335600000E1,6.629420582E1 +7.364100000E1,6.683725429E1 +7.392300000E1,5.758295449E1 +7.418800000E1,5.654909286E1 +7.448600000E1,5.881341247E1 +7.472100000E1,5.546609910E1 +7.498300000E1,5.586542777E1 +7.526600000E1,5.463216262E1 +7.558500000E1,5.947397496E1 +7.586200000E1,6.218459899E1 +7.609800000E1,6.134189272E1 +7.635800000E1,5.727526170E1 +7.666700000E1,5.579062978E1 +7.699300000E1,6.015063828E1 +7.729000000E1,6.022787424E1 +7.756300000E1,5.646982462E1 +7.782200000E1,6.005734442E1 +7.813200000E1,5.950776839E1 +7.842200000E1,6.314009710E1 +7.880400000E1,5.425753266E1 +7.910400000E1,5.909139002E1 +7.935300000E1,5.600377253E1 +7.962300000E1,6.036368528E1 +7.993700000E1,5.940415340E1 +8.018900000E1,6.102152187E1 +8.050000000E1,6.619104713E1 +8.074000000E1,6.149981675E1 +8.098900000E1,5.978899259E1 +8.123800000E1,5.963150500E1 +8.150300000E1,6.509054947E1 +8.181300000E1,6.387458039E1 +8.220700000E1,6.421798778E1 +8.246100000E1,6.092500605E1 +8.271900000E1,6.039313205E1 +8.297100000E1,5.885189543E1 +8.328000000E1,6.068901175E1 +8.355600000E1,6.531581124E1 +8.381900000E1,6.460984287E1 +8.407800000E1,6.281147078E1 +8.435000000E1,5.961599483E1 +8.463400000E1,5.915457491E1 +8.489200000E1,5.383227231E1 +8.513000000E1,5.278474817E1 +8.551100000E1,6.165964712E1 +8.574900000E1,6.442604107E1 +8.600700000E1,6.551005247E1 +8.626000000E1,6.660338206E1 +8.650900000E1,6.304014634E1 +8.676000000E1,6.488065719E1 +8.701800000E1,6.416881833E1 +8.728000000E1,5.892166498E1 +8.754500000E1,5.946249393E1 +8.785000000E1,6.506678358E1 +8.809400000E1,5.703264442E1 +8.840500000E1,6.164086486E1 +8.876300000E1,6.276173959E1 +8.906100000E1,5.818071871E1 +8.930500000E1,5.844394446E1 +8.956300000E1,5.657440647E1 +8.987400000E1,6.120356137E1 +9.011500000E1,6.094306560E1 +9.041100000E1,5.978472131E1 +9.065500000E1,6.008128664E1 +9.092400000E1,5.758286780E1 +9.123300000E1,5.353387594E1 +9.151600000E1,5.676204998E1 +9.183800000E1,5.245702159E1 +9.218200000E1,5.642589170E1 +9.243600000E1,5.542467479E1 +9.268000000E1,5.580829615E1 +9.297600000E1,5.148061441E1 +9.322800000E1,4.635974806E1 +9.353200000E1,5.465579762E1 +9.377300000E1,5.154999739E1 +9.402200000E1,5.544992474E1 +9.427900000E1,5.302390200E1 +9.453300000E1,5.127982623E1 +9.478800000E1,5.263086656E1 +9.503100000E1,5.128121484E1 +9.532100000E1,5.061466876E1 +9.557700000E1,5.328260476E1 +9.582800000E1,5.101663724E1 +9.607100000E1,5.400893265E1 +9.640400000E1,5.756552061E1 +9.665500000E1,5.665487755E1 +9.690400000E1,5.719000980E1 +9.715400000E1,5.593995548E1 +9.740400000E1,5.420194495E1 +9.771300000E1,4.867232074E1 +9.802100000E1,5.053798103E1 +9.830700000E1,4.874294948E1 +9.857500000E1,5.754515654E1 +9.883700000E1,5.863618568E1 +9.909700000E1,6.070195076E1 +9.935300000E1,5.434874196E1 +9.961300000E1,6.163600431E1 +9.987300000E1,5.555228218E1 +1.001200000E2,5.733850418E1 +1.003910000E2,6.133233800E1 +1.006620000E2,5.853313440E1 +1.009020000E2,5.435835494E1 +1.011680000E2,5.329891948E1 +1.014680000E2,5.356470018E1 +1.018410000E2,5.574288130E1 +1.021370000E2,5.927571979E1 +1.024000000E2,5.789956910E1 +1.026980000E2,6.081738139E1 +1.029540000E2,5.575615853E1 +1.032580000E2,5.337382111E1 +1.035140000E2,5.562761746E1 +1.038150000E2,5.905624776E1 +1.041040000E2,5.696105750E1 +1.043990000E2,6.170938149E1 +1.046370000E2,5.823687000E1 +1.049080000E2,6.066674703E1 +1.051740000E2,6.220969933E1 +1.054810000E2,5.755805236E1 +1.057660000E2,5.735691579E1 +1.060450000E2,5.761618087E1 +1.063040000E2,5.188413372E1 +1.065680000E2,5.643639822E1 +1.068740000E2,5.312430876E1 +1.071280000E2,5.924995828E1 +1.073900000E2,5.546187342E1 +1.076920000E2,5.474389270E1 +1.079790000E2,5.600814816E1 +1.082440000E2,5.561453096E1 +1.084980000E2,5.408559240E1 +1.087580000E2,5.622058302E1 +1.090160000E2,5.768852773E1 +1.092670000E2,5.516804842E1 +1.095340000E2,5.973626648E1 +1.098120000E2,6.403409511E1 +1.100690000E2,6.035201036E1 +1.103490000E2,5.940482770E1 +1.105950000E2,5.932126109E1 +1.108600000E2,5.859387697E1 +1.111460000E2,5.929800416E1 +1.114110000E2,5.930503134E1 +1.117890000E2,6.170536210E1 +1.120410000E2,6.214563711E1 +1.123490000E2,5.810151097E1 +1.126320000E2,5.823719807E1 +1.128910000E2,6.454485320E1 +1.131870000E2,6.755031626E1 +1.134560000E2,6.410743881E1 +1.137200000E2,5.913442857E1 +1.139870000E2,6.382823805E1 +1.142400000E2,5.859239523E1 +1.145180000E2,5.135859796E1 +1.147890000E2,5.294563188E1 +1.151440000E2,5.357868048E1 +1.154220000E2,5.561359505E1 +1.156620000E2,5.645675088E1 +1.159670000E2,5.879425595E1 +1.162610000E2,5.918610512E1 +1.164990000E2,6.083658676E1 +1.167470000E2,5.526645697E1 +1.169880000E2,5.471312988E1 +1.172910000E2,6.211796732E1 +1.175510000E2,5.417468648E1 +1.177930000E2,5.576739557E1 +1.180750000E2,5.912472365E1 +1.184660000E2,5.718213173E1 +1.187710000E2,5.747081312E1 +1.190170000E2,5.741742618E1 +1.192690000E2,5.379557814E1 +1.195330000E2,5.428733520E1 +1.197780000E2,6.177329402E1 +1.200450000E2,5.672333166E1 +1.203170000E2,5.584947723E1 +1.205670000E2,5.382665718E1 +1.208400000E2,5.443690083E1 +1.211280000E2,5.221565874E1 +1.214800000E2,5.516249741E1 +1.217540000E2,5.676279334E1 +1.220050000E2,5.303796336E1 +1.222680000E2,5.258840561E1 +1.225120000E2,5.671935607E1 +1.227660000E2,4.902892756E1 +1.230240000E2,4.264962220E1 +1.232830000E2,4.818154680E1 +1.235340000E2,5.204058636E1 +1.238430000E2,5.649936271E1 +1.241410000E2,5.396154490E1 +1.244200000E2,5.428877275E1 +1.246760000E2,4.778715710E1 +1.249500000E2,4.912370762E1 +1.252110000E2,5.114426735E1 +1.255020000E2,5.345096378E1 +1.257410000E2,5.581149074E1 +1.260430000E2,5.211774829E1 +1.263320000E2,5.470047014E1 +1.265660000E2,5.399085344E1 +1.268600000E2,5.981732528E1 +1.271210000E2,5.944116770E1 +1.273530000E2,5.668281238E1 +1.275970000E2,5.042419391E1 +1.279080000E2,5.014554177E1 +1.282260000E2,5.350461413E1 +1.285240000E2,5.453533258E1 +1.287780000E2,5.809919663E1 +1.290280000E2,5.729580956E1 +1.292980000E2,5.681749266E1 +1.296010000E2,5.542882864E1 +1.298980000E2,5.612046892E1 +1.302070000E2,6.074750886E1 +1.304620000E2,5.979349108E1 +1.307520000E2,5.806574219E1 +1.310590000E2,5.738881777E1 +1.314010000E2,5.595280312E1 +1.316630000E2,5.401154636E1 +1.319120000E2,5.499471091E1 +1.321620000E2,5.551354327E1 +1.324640000E2,6.567912108E1 +1.327650000E2,5.725129100E1 +1.330150000E2,6.452906176E1 +1.333160000E2,5.778565576E1 +1.335760000E2,6.242194617E1 +1.338200000E2,5.570863747E1 +1.340710000E2,5.755877138E1 +1.343660000E2,6.819206156E1 +1.346260000E2,6.094769164E1 +1.349310000E2,6.447198163E1 +1.351810000E2,5.482297950E1 +1.354630000E2,6.327012623E1 +1.357210000E2,5.723157337E1 +1.359770000E2,5.835004111E1 +1.362140000E2,6.413045068E1 +1.365290000E2,6.022343539E1 +1.368110000E2,5.969265006E1 +1.371070000E2,5.589766444E1 +1.373670000E2,6.089100679E1 +1.376970000E2,6.762783521E1 +1.379410000E2,5.740809854E1 +1.381870000E2,6.711182247E1 +1.384650000E2,6.290175574E1 +1.387060000E2,6.352322572E1 +1.390400000E2,5.897504025E1 +1.392980000E2,5.872568346E1 +1.396520000E2,5.582882684E1 +1.399140000E2,5.874428562E1 +1.402160000E2,5.275369064E1 +1.404650000E2,5.181123336E1 +1.407250000E2,4.758951485E1 +1.410550000E2,4.601470876E1 +1.413500000E2,5.203790008E1 +1.416310000E2,5.380793436E1 +1.418780000E2,5.006781735E1 +1.421580000E2,4.792469964E1 +1.424020000E2,5.136650820E1 +1.427060000E2,5.127969468E1 +1.430200000E2,5.304643312E1 +1.433210000E2,5.218299100E1 +1.436050000E2,5.568762266E1 +1.439010000E2,5.522696018E1 +1.442570000E2,5.919224289E1 +1.445880000E2,6.201398016E1 +1.448680000E2,5.750742223E1 +1.451160000E2,5.811963790E1 +1.454090000E2,5.695462128E1 +1.456560000E2,5.854812337E1 +1.458980000E2,5.886107911E1 +1.461720000E2,5.454171305E1 +1.464480000E2,5.674410925E1 +1.466770000E2,5.450912101E1 +1.469270000E2,5.953864028E1 +1.471790000E2,6.097527460E1 +1.475260000E2,5.825769450E1 +1.478290000E2,5.780473579E1 +1.480790000E2,6.185542851E1 +1.483350000E2,5.390929394E1 +1.486330000E2,5.400087479E1 +1.488750000E2,5.328656685E1 +1.491190000E2,5.599536596E1 +1.494200000E2,5.721648542E1 +1.497150000E2,5.787493165E1 +1.500380000E2,5.480047158E1 +1.503480000E2,5.002404450E1 +1.506590000E2,5.486151348E1 +1.509700000E2,6.245235750E1 +1.512360000E2,5.831236552E1 +1.514820000E2,6.253825815E1 +1.517260000E2,6.440134635E1 +1.520120000E2,5.646251942E1 +1.523080000E2,5.569851104E1 +1.525630000E2,5.574195002E1 +1.528610000E2,6.073633455E1 +1.531220000E2,5.704364811E1 +1.533960000E2,5.858521931E1 +1.536900000E2,6.334346239E1 +1.540080000E2,5.734505299E1 +1.542490000E2,6.522555977E1 +1.544980000E2,5.500712815E1 +1.547420000E2,5.698741268E1 +1.549830000E2,5.097374633E1 +1.552760000E2,5.421781291E1 +1.555100000E2,5.276919678E1 +1.558070000E2,5.444895965E1 +1.560410000E2,5.023818561E1 +1.563440000E2,5.460917302E1 +1.565880000E2,5.459938847E1 +1.568920000E2,5.843131092E1 +1.572210000E2,5.876667307E1 +1.574850000E2,5.735202828E1 +1.577300000E2,5.496399564E1 +1.580290000E2,5.249359356E1 +1.582920000E2,5.216967072E1 +1.585400000E2,5.506360532E1 +1.588040000E2,4.854470136E1 +1.590480000E2,5.455647594E1 +1.593040000E2,5.480802962E1 +1.595560000E2,5.117555202E1 +1.598230000E2,5.525001141E1 +1.600680000E2,6.028739680E1 +1.604080000E2,6.051466285E1 +1.606910000E2,5.941686107E1 +1.609450000E2,6.263789003E1 +1.611920000E2,5.862463866E1 +1.614980000E2,5.858673558E1 +1.617730000E2,5.766546261E1 +1.620210000E2,5.485521148E1 +1.623080000E2,5.814732367E1 +1.625850000E2,5.829863647E1 +1.628370000E2,5.473457172E1 +1.631510000E2,5.323729241E1 +1.634320000E2,5.795543593E1 +1.637670000E2,5.845831909E1 +1.640670000E2,5.883503284E1 +1.643040000E2,5.933733684E1 +1.645990000E2,5.316483696E1 +1.648620000E2,5.628275472E1 +1.651110000E2,5.612764782E1 +1.654290000E2,5.739409022E1 +1.657290000E2,5.275374209E1 +1.660100000E2,5.606330732E1 +1.662350000E2,4.973765069E1 +1.664840000E2,4.855931683E1 +1.667820000E2,4.830487304E1 +1.670210000E2,5.643349546E1 +1.672820000E2,5.752246312E1 +1.675830000E2,5.576545129E1 +1.678330000E2,5.583582770E1 +1.681390000E2,5.301617697E1 +1.684460000E2,5.088408561E1 +1.686990000E2,5.149775091E1 +1.690030000E2,6.019099852E1 +1.692410000E2,6.143998752E1 +1.695380000E2,6.183098470E1 +1.697780000E2,5.964256200E1 +1.701420000E2,5.648358262E1 +1.703870000E2,5.768033788E1 +1.706360000E2,5.037521789E1 +1.709530000E2,5.268785935E1 +1.712030000E2,5.850048969E1 +1.714650000E2,5.537813713E1 +1.717710000E2,5.989062491E1 +1.720770000E2,6.371629733E1 +1.723380000E2,5.413135778E1 +1.726060000E2,5.582389161E1 +1.729040000E2,6.344770094E1 +1.731770000E2,6.038125570E1 +1.735090000E2,5.229655017E1 +1.737830000E2,5.594074665E1 +1.740430000E2,6.258802116E1 +1.743030000E2,5.773122794E1 +1.745600000E2,5.533899998E1 +1.748290000E2,5.069657364E1 +1.750850000E2,6.285550191E1 +1.753480000E2,5.470504416E1 +1.756240000E2,5.746379759E1 +1.758870000E2,5.928233462E1 +1.761350000E2,5.214791610E1 +1.763840000E2,5.260177806E1 +1.767030000E2,4.844041050E1 +1.769490000E2,5.275717684E1 +1.772330000E2,5.436891746E1 +1.774780000E2,5.441421810E1 +1.777590000E2,5.485847839E1 +1.780320000E2,5.714239097E1 +1.782910000E2,6.028837304E1 +1.785470000E2,5.706420775E1 +1.788380000E2,5.509582512E1 +1.791200000E2,5.674185072E1 +1.794340000E2,5.437491314E1 +1.796940000E2,5.696592309E1 +1.799990000E2,5.344092263E1 +1.802540000E2,5.414345246E1 +1.804960000E2,5.421992498E1 +1.808400000E2,5.317024536E1 +1.811450000E2,5.422714635E1 +1.814530000E2,5.933207779E1 +1.817720000E2,5.916706050E1 +1.820730000E2,5.685980261E1 +1.824210000E2,5.521649456E1 +1.826850000E2,5.651993888E1 +1.829810000E2,5.707596711E1 +1.832810000E2,5.464130538E1 +1.836160000E2,5.364065008E1 +1.838600000E2,5.913078622E1 +1.841080000E2,5.695541400E1 +1.843520000E2,6.237274690E1 +1.846510000E2,6.017101966E1 +1.848950000E2,5.670915019E1 +1.851380000E2,5.651470649E1 +1.854400000E2,5.919691857E1 +1.857560000E2,5.752836475E1 +1.860680000E2,6.133052078E1 +1.863670000E2,6.001801442E1 +1.866740000E2,5.871186574E1 +1.869510000E2,5.858669373E1 +1.872240000E2,5.722343490E1 +1.875200000E2,5.725198568E1 +1.877700000E2,5.560524182E1 +1.880340000E2,5.419540118E1 +1.882980000E2,6.169219144E1 +1.885790000E2,5.704261604E1 +1.888700000E2,5.651125138E1 +1.891060000E2,5.778536485E1 +1.894110000E2,5.304160496E1 +1.896990000E2,5.105254388E1 +1.900460000E2,5.338626279E1 +1.902980000E2,5.090929652E1 +1.905360000E2,5.235399183E1 +1.907970000E2,5.429173243E1 +1.910620000E2,5.376238901E1 +1.913500000E2,6.411203098E1 +1.916020000E2,6.235211697E1 +1.919100000E2,5.719243884E1 +1.922140000E2,5.965550680E1 +1.925010000E2,5.850063986E1 +1.928110000E2,6.013906156E1 +1.930480000E2,5.912633730E1 +1.934000000E2,5.860712099E1 +1.936870000E2,5.944287516E1 +1.939980000E2,5.676076088E1 +1.942520000E2,5.712881871E1 +1.945490000E2,5.515631677E1 +1.948870000E2,5.670925955E1 +1.951320000E2,5.768263389E1 +1.954210000E2,5.735243887E1 +1.957290000E2,5.883798740E1 +1.960030000E2,5.654393164E1 +1.963340000E2,5.345251733E1 +1.966710000E2,5.034487882E1 +1.969060000E2,5.741493139E1 +1.971980000E2,5.877434013E1 +1.974210000E2,5.965387227E1 +1.977200000E2,6.306941384E1 +1.979730000E2,6.004201692E1 +1.982230000E2,6.106500017E1 +1.984800000E2,5.674857861E1 +1.987290000E2,6.020914127E1 +1.990680000E2,6.067289060E1 +1.993460000E2,5.996658083E1 +1.996390000E2,5.676340490E1 +1.999500000E2,5.612304129E1 +2.002130000E2,6.289766509E1 +2.005150000E2,5.720971103E1 +2.008280000E2,5.752136939E1 +2.010940000E2,6.058659890E1 +2.013440000E2,5.618430636E1 +2.016270000E2,6.056271249E1 +2.019400000E2,5.729198827E1 +2.022100000E2,5.793084452E1 +2.025070000E2,5.787194228E1 +2.027910000E2,5.959620014E1 +2.030940000E2,6.012062596E1 +2.033180000E2,6.276377758E1 +2.036210000E2,5.834405857E1 +2.039320000E2,5.545225289E1 +2.042050000E2,5.829439447E1 +2.044730000E2,5.799912649E1 +2.047970000E2,5.444896398E1 +2.050680000E2,5.743866699E1 +2.053150000E2,5.862448994E1 +2.055880000E2,5.778478934E1 +2.058890000E2,5.527981007E1 +2.061620000E2,5.742523507E1 +2.064580000E2,5.472188821E1 +2.067100000E2,6.202721053E1 +2.069630000E2,5.861698013E1 +2.072080000E2,6.294616718E1 +2.074730000E2,6.321186761E1 +2.077380000E2,5.776609523E1 +2.080390000E2,6.061292698E1 +2.083320000E2,5.857532480E1 +2.085870000E2,5.800369352E1 +2.088450000E2,5.977447345E1 +2.091070000E2,5.957010157E1 +2.093520000E2,6.145770306E1 +2.096060000E2,6.176056517E1 +2.098580000E2,6.033519811E1 +2.100970000E2,6.429628489E1 +2.103980000E2,6.215353584E1 +2.106470000E2,6.299048914E1 +2.109300000E2,6.133544133E1 +2.112010000E2,5.397487394E1 +2.114250000E2,5.313920655E1 +2.116740000E2,5.552710709E1 +2.119140000E2,5.692289703E1 +2.121730000E2,5.618691953E1 +2.124220000E2,5.402804715E1 +2.127170000E2,5.390450402E1 +2.129570000E2,5.652515030E1 +2.132580000E2,5.490504921E1 +2.135120000E2,5.485761082E1 +2.137850000E2,6.486277416E1 +2.140520000E2,6.121826472E1 +2.143580000E2,6.355465948E1 +2.146390000E2,5.534291145E1 +2.148790000E2,6.610858745E1 +2.151670000E2,5.617739728E1 +2.154670000E2,5.426651762E1 +2.157300000E2,5.840247716E1 +2.160830000E2,5.257749691E1 +2.163200000E2,6.345809118E1 +2.165810000E2,6.020490407E1 +2.168390000E2,5.603372378E1 +2.170870000E2,5.452432165E1 +2.173530000E2,5.679931822E1 +2.176220000E2,6.225558234E1 +2.179360000E2,5.991886985E1 +2.182430000E2,6.307902574E1 +2.184780000E2,6.764692456E1 +2.187700000E2,6.696013302E1 +2.190280000E2,6.419552300E1 +2.193390000E2,6.401831507E1 +2.196000000E2,6.317016249E1 +2.198590000E2,6.093052958E1 +2.201380000E2,6.446513941E1 +2.204220000E2,6.075454080E1 +2.206690000E2,6.712020778E1 +2.209300000E2,5.440050354E1 +2.212550000E2,5.627963451E1 +2.215550000E2,6.358778444E1 +2.217990000E2,5.793661873E1 +2.220730000E2,6.448679664E1 +2.223050000E2,5.844994198E1 +2.226510000E2,5.802583418E1 +2.229440000E2,5.848297014E1 +2.231840000E2,6.170695891E1 +2.234220000E2,6.201301769E1 +2.236630000E2,6.049179870E1 +2.239600000E2,6.316843106E1 +2.242020000E2,5.818837652E1 +2.245150000E2,6.411353278E1 +2.248330000E2,6.458398711E1 +2.250670000E2,6.303280227E1 +2.253240000E2,6.378696379E1 +2.255670000E2,6.157533943E1 +2.259260000E2,5.845901257E1 +2.261910000E2,5.623331182E1 +2.264460000E2,5.550822889E1 +2.267020000E2,5.907003722E1 +2.270220000E2,6.300043778E1 +2.273130000E2,5.934584116E1 +2.275640000E2,5.367094537E1 +2.278520000E2,6.260544714E1 +2.281140000E2,5.666507163E1 +2.283970000E2,6.099713971E1 +2.287020000E2,5.943082312E1 +2.289450000E2,6.095935321E1 +2.292950000E2,5.939706013E1 +2.296230000E2,5.612117806E1 +2.299220000E2,5.805831404E1 +2.301570000E2,5.496048372E1 +2.304070000E2,5.335836124E1 +2.306490000E2,5.043808989E1 +2.309270000E2,4.778025574E1 +2.311680000E2,4.613189565E1 +2.314100000E2,4.740314381E1 +2.316580000E2,5.230056147E1 +2.319150000E2,5.672989332E1 +2.321590000E2,6.081799709E1 +2.325030000E2,5.909736866E1 +2.327570000E2,5.528762811E1 +2.330520000E2,6.623131701E1 +2.333360000E2,6.376149752E1 +2.335730000E2,6.088376871E1 +2.338700000E2,6.235681388E1 +2.341160000E2,6.060610548E1 +2.343930000E2,5.779254532E1 +2.346370000E2,5.570043106E1 +2.349010000E2,6.172637016E1 +2.351520000E2,5.865545525E1 +2.354420000E2,6.250465685E1 +2.356850000E2,6.494272879E1 +2.359310000E2,6.075163542E1 +2.361840000E2,5.742858606E1 +2.364460000E2,5.756917813E1 +2.366990000E2,6.169927684E1 +2.370080000E2,5.540268710E1 +2.373040000E2,5.484088652E1 +2.376000000E2,5.732112773E1 +2.378800000E2,5.184194161E1 +2.381270000E2,5.604168635E1 +2.383910000E2,5.644051218E1 +2.387130000E2,6.049774032E1 +2.390290000E2,6.303013407E1 +2.392800000E2,6.115111046E1 +2.395770000E2,6.294174883E1 +2.398740000E2,6.716012591E1 +2.401880000E2,7.075117191E1 +2.404890000E2,6.435561631E1 +2.407550000E2,5.593172595E1 +2.410720000E2,5.781614361E1 +2.413350000E2,5.497792445E1 +2.416080000E2,5.569244646E1 +2.418870000E2,5.408109683E1 +2.421100000E2,5.687440525E1 +2.424230000E2,6.415333296E1 +2.427170000E2,6.528722740E1 +2.429900000E2,6.229384329E1 +2.432350000E2,5.452507698E1 +2.434960000E2,5.248331654E1 +2.437450000E2,5.069826347E1 +2.439880000E2,4.989889277E1 +2.442610000E2,5.196931346E1 +2.445130000E2,4.988417717E1 +2.448120000E2,5.950968466E1 +2.451200000E2,5.725324421E1 +2.454210000E2,5.902908729E1 +2.456980000E2,5.857784521E1 +2.459650000E2,5.154496059E1 +2.462670000E2,5.316738342E1 +2.465660000E2,5.681338179E1 +2.468580000E2,5.486468116E1 +2.471080000E2,5.378622946E1 +2.473840000E2,5.263910847E1 +2.477040000E2,5.102724000E1 +2.479590000E2,4.958128022E1 +2.482070000E2,5.621813465E1 +2.486190000E2,5.553111013E1 +2.489120000E2,5.711728514E1 +2.491630000E2,6.098223102E1 +2.494610000E2,5.812970142E1 +2.497290000E2,5.874411947E1 +2.500090000E2,6.058797235E1 +2.503160000E2,5.921850964E1 +2.506300000E2,5.825659244E1 +2.508940000E2,5.902074554E1 +2.512250000E2,5.857720223E1 +2.514860000E2,5.834259509E1 +2.517560000E2,5.664723408E1 +2.520110000E2,6.245873243E1 +2.522800000E2,6.018081628E1 +2.525490000E2,6.060905480E1 +2.527980000E2,6.098924059E1 +2.530310000E2,6.604497204E1 +2.532750000E2,5.762503683E1 +2.535750000E2,5.946675250E1 +2.538150000E2,5.696283688E1 +2.541120000E2,5.795434272E1 +2.543420000E2,5.641662406E1 +2.546470000E2,6.001503419E1 +2.549610000E2,5.913147779E1 +2.552050000E2,5.772050526E1 +2.554250000E2,5.986895040E1 +2.557400000E2,4.836792039E1 +2.560130000E2,4.818172752E1 +2.563450000E2,5.244597112E1 +2.566130000E2,5.174954560E1 +2.568650000E2,5.165225717E1 +2.571100000E2,4.865803315E1 +2.573530000E2,4.773689375E1 +2.576460000E2,5.375353685E1 +2.579030000E2,5.630041837E1 +2.582540000E2,5.390583403E1 +2.585030000E2,5.686416101E1 +2.588120000E2,5.880170204E1 +2.590630000E2,5.373023259E1 +2.593590000E2,6.009405077E1 +2.596120000E2,5.710673366E1 +2.598560000E2,5.891240789E1 +2.600990000E2,5.960890080E1 +2.603510000E2,6.728594423E1 +2.606060000E2,6.334340199E1 +2.609270000E2,6.082175509E1 +2.611830000E2,5.750083619E1 +2.615060000E2,5.667484133E1 +2.618070000E2,6.152760439E1 +2.620430000E2,5.697586540E1 +2.623440000E2,5.674189037E1 +2.625730000E2,5.539036876E1 +2.628210000E2,4.901745514E1 +2.631270000E2,5.264848299E1 +2.634230000E2,5.038277380E1 +2.636750000E2,5.149234245E1 +2.639170000E2,4.604207892E1 +2.641630000E2,5.735184247E1 +2.644630000E2,5.659523444E1 +2.648080000E2,5.697978691E1 +2.650640000E2,5.691301726E1 +2.653540000E2,5.696584583E1 +2.656480000E2,5.138210199E1 +2.659030000E2,5.345758564E1 +2.661640000E2,5.363588256E1 +2.664240000E2,5.471656895E1 +2.666720000E2,5.140760448E1 +2.669400000E2,5.329005020E1 +2.671940000E2,5.422388323E1 +2.674460000E2,5.133919880E1 +2.677140000E2,5.690801972E1 +2.681270000E2,5.964609863E1 +2.684030000E2,6.167901240E1 +2.686970000E2,5.297205648E1 +2.689350000E2,5.530010894E1 +2.692310000E2,5.450325538E1 +2.694700000E2,5.391690578E1 +2.697660000E2,5.420666075E1 +2.700010000E2,4.962510480E1 +2.702390000E2,5.010058679E1 +2.705460000E2,5.345147952E1 +2.708590000E2,5.574757195E1 +2.711770000E2,5.571208034E1 +2.714720000E2,5.288998421E1 +2.717170000E2,5.214438195E1 +2.720190000E2,5.232798978E1 +2.723080000E2,6.045263056E1 +2.725500000E2,5.870512300E1 +2.727930000E2,5.577911819E1 +2.730760000E2,5.501493048E1 +2.733800000E2,5.433475343E1 +2.736720000E2,5.293457700E1 +2.739070000E2,5.486483547E1 +2.741780000E2,6.008208952E1 +2.745050000E2,5.845984546E1 +2.748040000E2,5.900764997E1 +2.751070000E2,5.760203457E1 +2.754240000E2,5.795024632E1 +2.757280000E2,6.182748257E1 +2.760340000E2,5.683205968E1 +2.763350000E2,5.821402367E1 +2.766080000E2,5.520672517E1 +2.768980000E2,5.645892504E1 +2.772030000E2,5.463906896E1 +2.775200000E2,5.412722413E1 +2.777910000E2,5.268636730E1 +2.780870000E2,5.566734184E1 +2.783350000E2,5.745256931E1 +2.785810000E2,5.645167582E1 +2.788270000E2,5.925831320E1 +2.790840000E2,5.591320738E1 +2.793690000E2,5.632637646E1 +2.796200000E2,6.252281740E1 +2.799120000E2,5.547643277E1 +2.801570000E2,6.021611275E1 +2.804580000E2,5.732676882E1 +2.808110000E2,5.909573770E1 +2.810780000E2,6.005240162E1 +2.813300000E2,5.965022185E1 +2.815820000E2,6.135840817E1 +2.818790000E2,5.970629096E1 +2.821590000E2,5.879025140E1 +2.824010000E2,5.747324456E1 +2.826520000E2,5.726379384E1 +2.828950000E2,5.871306541E1 +2.831920000E2,6.188032415E1 +2.834710000E2,6.066582287E1 +2.837110000E2,5.950933244E1 +2.840350000E2,5.901018860E1 +2.843000000E2,5.761182729E1 +2.846050000E2,5.446909438E1 +2.848570000E2,5.349219985E1 +2.851700000E2,5.015518748E1 +2.854330000E2,5.374610595E1 +2.857270000E2,5.877223624E1 +2.860310000E2,5.644512377E1 +2.863080000E2,5.711327205E1 +2.865540000E2,5.655239592E1 +2.867930000E2,5.833716670E1 +2.871150000E2,5.417781453E1 +2.874030000E2,5.332227783E1 +2.876540000E2,5.146836736E1 +2.879540000E2,5.452228720E1 +2.881970000E2,5.025406823E1 +2.884910000E2,5.490648375E1 +2.887280000E2,5.506242221E1 +2.890210000E2,5.400927835E1 +2.892600000E2,5.781126179E1 +2.895430000E2,6.384283902E1 +2.898470000E2,6.340395874E1 +2.901430000E2,5.555395770E1 +2.904560000E2,5.514224078E1 +2.907530000E2,5.346566906E1 +2.910000000E2,5.948406902E1 +2.912590000E2,6.362292628E1 +2.915300000E2,6.175065463E1 +2.918240000E2,6.129817533E1 +2.920790000E2,6.317618325E1 +2.923350000E2,6.137933812E1 +2.926010000E2,5.620086793E1 +2.928740000E2,5.715913846E1 +2.931780000E2,7.028942499E1 +2.934620000E2,6.774357618E1 +2.937770000E2,6.989950413E1 +2.940270000E2,6.631119439E1 +2.943030000E2,6.956920703E1 +2.945570000E2,6.352936554E1 +2.948100000E2,6.981123112E1 +2.951150000E2,5.607171784E1 +2.953950000E2,5.394017247E1 +2.956980000E2,7.110851253E1 +2.959460000E2,6.978848906E1 +2.961900000E2,5.446752823E1 +2.965090000E2,6.309281755E1 +2.968110000E2,6.647752141E1 +2.971300000E2,6.773248230E1 +2.974240000E2,6.289421429E1 +2.977060000E2,5.998905240E1 +2.979500000E2,6.016152671E1 +2.981940000E2,5.851705490E1 +2.984880000E2,6.506323043E1 +2.987430000E2,5.702053645E1 +2.990110000E2,4.890963733E1 +2.993040000E2,5.105737182E1 +2.995650000E2,4.950865545E1 +2.998150000E2,4.713536225E1 +3.000860000E2,6.170154569E1 +3.003780000E2,5.697995513E1 +3.006750000E2,6.496205179E1 +3.009180000E2,5.585602045E1 +3.012120000E2,5.317421587E1 +3.015130000E2,5.532213468E1 +3.017840000E2,5.371543715E1 +3.020520000E2,6.741141038E1 +3.023220000E2,6.638671809E1 +3.025730000E2,5.833940482E1 +3.028700000E2,6.272205104E1 +3.031230000E2,6.150676490E1 +3.034050000E2,6.571826996E1 +3.036710000E2,6.387001854E1 +3.039460000E2,5.704179120E1 +3.042380000E2,5.452420344E1 +3.044730000E2,6.911436343E1 +3.047670000E2,6.747337761E1 +3.050070000E2,6.642457947E1 +3.053010000E2,6.704052830E1 +3.055360000E2,6.335116163E1 +3.058350000E2,6.452879154E1 +3.061310000E2,6.588892290E1 +3.064460000E2,6.065604325E1 +3.066970000E2,5.884139521E1 +3.069890000E2,6.115548360E1 +3.072650000E2,5.474220631E1 +3.075290000E2,5.525228633E1 +3.077890000E2,5.546520153E1 +3.080280000E2,5.799541194E1 +3.083270000E2,5.467819740E1 +3.086250000E2,5.227747322E1 +3.089260000E2,5.802220937E1 +3.091970000E2,5.383690373E1 +3.095040000E2,5.794687305E1 +3.097810000E2,5.426386053E1 +3.100000000E2,5.745164866E1 +3.103300000E2,5.475501144E1 +3.106240000E2,5.154802151E1 +3.108750000E2,5.434380726E1 +3.111540000E2,5.533246388E1 +3.114150000E2,5.554218476E1 +3.116740000E2,5.375334275E1 +3.119200000E2,5.727216331E1 +3.121680000E2,5.235396651E1 +3.124720000E2,6.207307801E1 +3.127180000E2,6.488896117E1 +3.130530000E2,6.168970511E1 +3.133080000E2,6.010687101E1 +3.135950000E2,6.305386662E1 +3.138880000E2,6.214030252E1 +3.141410000E2,5.907513997E1 +3.143960000E2,6.064308138E1 +3.146480000E2,6.195321339E1 +3.148870000E2,6.088765310E1 +3.151830000E2,5.906360624E1 +3.154280000E2,5.864981040E1 +3.157360000E2,5.824424792E1 +3.159750000E2,5.826399021E1 +3.163740000E2,6.051726612E1 +3.166320000E2,6.011967909E1 +3.168940000E2,5.577110603E1 +3.172010000E2,5.372586587E1 +3.174460000E2,5.537091967E1 +3.176890000E2,5.504912063E1 +3.179320000E2,5.264203521E1 +3.182150000E2,5.344854544E1 +3.184600000E2,5.656777951E1 +3.187200000E2,5.398435402E1 +3.189820000E2,5.410695962E1 +3.192460000E2,5.344168860E1 +3.195780000E2,5.697626360E1 +3.198350000E2,6.073105615E1 +3.200880000E2,6.621432780E1 +3.203460000E2,6.597785722E1 +3.205980000E2,5.907542432E1 +3.208920000E2,5.702769809E1 +3.211760000E2,6.207459825E1 +3.214520000E2,5.921715282E1 +3.217010000E2,5.501368146E1 +3.220030000E2,5.927746858E1 +3.223090000E2,5.878714279E1 +3.226530000E2,6.209253703E1 +3.229180000E2,5.801419316E1 +3.231660000E2,6.150680788E1 +3.234110000E2,5.950436139E1 +3.236660000E2,5.694006868E1 +3.239890000E2,5.964691948E1 +3.242420000E2,6.322261269E1 +3.245070000E2,5.967413832E1 +3.247540000E2,5.743115651E1 +3.250010000E2,5.693057833E1 +3.252760000E2,5.076009335E1 +3.255600000E2,5.432440321E1 +3.258270000E2,5.728583073E1 +3.262160000E2,6.158050311E1 +3.264570000E2,5.788548067E1 +3.267330000E2,5.661485397E1 +3.270280000E2,5.698735139E1 +3.272870000E2,5.428158234E1 +3.275550000E2,5.401192370E1 +3.278320000E2,5.894424302E1 +3.281050000E2,5.279140275E1 +3.283850000E2,5.366788524E1 +3.286760000E2,5.569462346E1 +3.289750000E2,5.484501656E1 +3.292730000E2,5.654335493E1 +3.295550000E2,5.483429560E1 +3.298560000E2,5.516099131E1 +3.301720000E2,5.150081287E1 +3.304560000E2,5.126263973E1 +3.307930000E2,4.943715566E1 +3.310330000E2,5.297477083E1 +3.312800000E2,4.994759883E1 +3.316030000E2,5.283028939E1 +3.318860000E2,5.150402936E1 +3.321790000E2,5.777668868E1 +3.325470000E2,5.446937149E1 +3.328030000E2,5.754474494E1 +3.330410000E2,5.437750931E1 +3.333210000E2,5.378201308E1 +3.335760000E2,5.486825362E1 +3.338240000E2,5.338123539E1 +3.340700000E2,5.704649160E1 +3.343740000E2,5.576563429E1 +3.346640000E2,5.503590574E1 +3.349650000E2,5.539431503E1 +3.352080000E2,5.782097549E1 +3.355080000E2,5.260852375E1 +3.358690000E2,6.012616228E1 +3.361400000E2,5.534922411E1 +3.363810000E2,5.436765301E1 +3.366230000E2,5.007736554E1 +3.368850000E2,5.304270830E1 +3.371340000E2,5.106682022E1 +3.373960000E2,5.491262243E1 +3.376890000E2,5.891119644E1 +3.379320000E2,5.554676164E1 +3.382420000E2,5.491809401E1 +3.385700000E2,6.003743295E1 +3.389490000E2,5.964265847E1 +3.392140000E2,6.009419780E1 +3.394780000E2,5.950800538E1 +3.397810000E2,5.514081916E1 +3.400260000E2,5.654810222E1 +3.403230000E2,5.919098275E1 +3.405600000E2,5.937137097E1 +3.408650000E2,5.885711760E1 +3.411560000E2,6.122434193E1 +3.414060000E2,6.101494213E1 +3.416650000E2,5.685059098E1 +3.419710000E2,4.988163583E1 +3.423360000E2,5.097871962E1 +3.426300000E2,6.097968551E1 +3.429260000E2,5.246223058E1 +3.431760000E2,5.140448000E1 +3.434570000E2,5.162147831E1 +3.436910000E2,5.437509469E1 +3.439650000E2,5.588289675E1 +3.442010000E2,5.342482218E1 +3.444930000E2,5.621155564E1 +3.447310000E2,5.753713233E1 +3.450340000E2,5.873821374E1 +3.453240000E2,5.674648484E1 +3.455770000E2,5.843857274E1 +3.458770000E2,6.170678128E1 +3.461770000E2,5.848319050E1 +3.464240000E2,5.996271814E1 +3.467290000E2,5.583139448E1 +3.470000000E2,5.558324990E1 +3.472360000E2,5.638821787E1 +3.474880000E2,6.015129432E1 +3.477550000E2,6.074195357E1 +3.480530000E2,6.258101891E1 +3.483260000E2,6.280209300E1 +3.486840000E2,5.935598721E1 +3.489370000E2,6.423635683E1 +3.492060000E2,7.026891453E1 +3.495130000E2,5.477771858E1 +3.498240000E2,6.143080763E1 +3.500700000E2,6.077206860E1 +3.503130000E2,5.816670512E1 +3.506030000E2,6.220374728E1 +3.509040000E2,6.435510927E1 +3.511560000E2,6.387906049E1 +3.514240000E2,6.324188625E1 +3.517710000E2,6.217871174E1 +3.520510000E2,6.349767138E1 +3.523000000E2,5.947763114E1 +3.525840000E2,5.623947938E1 +3.528810000E2,5.940245648E1 +3.531830000E2,5.323006485E1 +3.534790000E2,4.756673680E1 +3.537830000E2,5.761743216E1 +3.540870000E2,5.701856444E1 +3.543720000E2,5.507707077E1 +3.546320000E2,5.561457107E1 +3.549330000E2,6.036785424E1 +3.552860000E2,5.818319920E1 +3.555390000E2,5.636477080E1 +3.557840000E2,5.686236286E1 +3.560330000E2,6.137502104E1 +3.563290000E2,6.039421004E1 +3.565710000E2,5.873926214E1 +3.568160000E2,5.984737812E1 +3.570890000E2,5.898549785E1 +3.573200000E2,5.804358229E1 +3.576080000E2,5.178825198E1 +3.578380000E2,5.333798630E1 +3.581470000E2,5.663121054E1 +3.584860000E2,5.705169894E1 +3.587470000E2,5.488627438E1 +3.590020000E2,5.493171173E1 +3.592590000E2,5.280801534E1 +3.595110000E2,5.919356657E1 +3.597710000E2,6.061921525E1 +3.600770000E2,5.781838960E1 +3.603810000E2,5.824405535E1 +3.606410000E2,5.734273072E1 +3.608930000E2,5.860073318E1 +3.611440000E2,5.158577335E1 +3.614110000E2,5.569804167E1 +3.617550000E2,5.732029627E1 +3.620530000E2,5.599725951E1 +3.623260000E2,5.427140428E1 +3.625700000E2,5.439119305E1 +3.628680000E2,5.768088704E1 +3.631160000E2,5.322266305E1 +3.634170000E2,5.611257515E1 +3.637150000E2,5.466283243E1 +3.639540000E2,5.648497192E1 +3.642520000E2,5.982456496E1 +3.644910000E2,5.683499776E1 +3.648080000E2,5.424977228E1 +3.650550000E2,5.261749952E1 +3.653010000E2,5.976464589E1 +3.655400000E2,5.630627545E1 +3.658370000E2,5.855663855E1 +3.660660000E2,5.839517218E1 +3.663050000E2,5.701336937E1 +3.666100000E2,6.057417753E1 +3.668530000E2,5.660058929E1 +3.671060000E2,5.360906173E1 +3.673270000E2,5.766761713E1 +3.676020000E2,5.473947199E1 +3.679270000E2,5.730791892E1 +3.681990000E2,5.368134624E1 +3.685210000E2,5.122725302E1 +3.688180000E2,5.413949330E1 +3.690720000E2,5.953240184E1 +3.693650000E2,5.834363401E1 +3.696110000E2,4.952962201E1 +3.698620000E2,6.082605721E1 +3.701240000E2,5.541205242E1 +3.703840000E2,5.595936781E1 +3.706570000E2,5.751180267E1 +3.709050000E2,5.510413826E1 +3.712530000E2,5.236304209E1 +3.715330000E2,5.429686706E1 +3.717680000E2,5.365135821E1 +3.720680000E2,5.442146139E1 +3.723070000E2,5.193301537E1 +3.726070000E2,5.573089397E1 +3.728540000E2,5.084704353E1 +3.731070000E2,5.244752708E1 +3.734250000E2,5.501438711E1 +3.737160000E2,5.701937821E1 +3.739830000E2,5.913008265E1 +3.743030000E2,6.329763996E1 +3.745490000E2,5.828010903E1 +3.748110000E2,5.514928454E1 +3.750560000E2,5.535724603E1 +3.753250000E2,6.062318511E1 +3.756820000E2,5.853801057E1 +3.759720000E2,6.218740595E1 +3.762560000E2,6.130322227E1 +3.764780000E2,5.705598438E1 +3.767430000E2,5.675025411E1 +3.770350000E2,5.562309411E1 +3.773330000E2,6.171478403E1 +3.776660000E2,5.752069737E1 +3.779640000E2,5.869913239E1 +3.782130000E2,5.802158707E1 +3.785030000E2,5.920699755E1 +3.787580000E2,5.984700757E1 +3.790120000E2,5.874214142E1 +3.792820000E2,5.792329599E1 +3.795460000E2,6.240429581E1 +3.798520000E2,5.924961400E1 +3.800960000E2,5.655548581E1 +3.803510000E2,5.997047167E1 +3.806590000E2,5.894207932E1 +3.810310000E2,5.556916558E1 +3.813250000E2,5.709965860E1 +3.815810000E2,5.724657649E1 +3.818690000E2,5.634885250E1 +3.821660000E2,5.381597934E1 +3.824070000E2,5.409431797E1 +3.827020000E2,5.558304395E1 +3.829400000E2,5.836087965E1 +3.832380000E2,5.621848827E1 +3.834740000E2,5.756105430E1 +3.837670000E2,5.972981317E1 +3.840620000E2,6.110722903E1 +3.842970000E2,6.011338906E1 +3.846120000E2,6.632548976E1 +3.849300000E2,5.632542095E1 +3.852340000E2,5.660090160E1 +3.854760000E2,5.637042997E1 +3.857700000E2,6.483820819E1 +3.860160000E2,6.294386681E1 +3.862760000E2,6.248693097E1 +3.865740000E2,5.966646580E1 +3.868130000E2,5.884596060E1 +3.871230000E2,6.069045984E1 +3.874660000E2,5.535227762E1 +3.877260000E2,5.453589064E1 +3.879920000E2,5.803286513E1 +3.882920000E2,6.338575111E1 +3.885370000E2,6.297665471E1 +3.888380000E2,6.078963895E1 +3.890870000E2,6.078711186E1 +3.893350000E2,5.918580133E1 +3.896040000E2,5.645003340E1 +3.899070000E2,5.868887980E1 +3.901560000E2,5.816727924E1 +3.904840000E2,5.908711574E1 +3.907830000E2,5.165109059E1 +3.910410000E2,5.747977046E1 +3.913230000E2,5.600926578E1 +3.916170000E2,5.743239537E1 +3.918580000E2,5.999528635E1 +3.921650000E2,5.924448814E1 +3.924670000E2,6.347749271E1 +3.927590000E2,6.285842009E1 +3.929960000E2,6.439104552E1 +3.933010000E2,6.092208558E1 +3.935450000E2,5.889760176E1 +3.939100000E2,5.798312040E1 +3.941770000E2,5.909426563E1 +3.944250000E2,5.971090911E1 +3.946810000E2,5.379436409E1 +3.949270000E2,5.134339741E1 +3.951700000E2,5.739586279E1 +3.954270000E2,5.255911571E1 +3.956850000E2,5.149310319E1 +3.959500000E2,5.723685944E1 +3.962270000E2,5.622087783E1 +3.964720000E2,6.119098643E1 +3.967310000E2,6.249797436E1 +3.970320000E2,5.838309249E1 +3.973440000E2,5.720898847E1 +3.976100000E2,5.357982700E1 +3.978600000E2,5.091452983E1 +3.981070000E2,4.781274510E1 +3.983520000E2,4.684320786E1 +3.986530000E2,4.867937405E1 +3.988970000E2,4.947454895E1 +3.991740000E2,4.941937240E1 +3.994180000E2,5.206925818E1 +3.997200000E2,5.099596962E1 +3.999720000E2,5.059119317E1 +4.002350000E2,4.980275756E1 +4.004940000E2,5.514017077E1 +4.008060000E2,5.354499430E1 +4.011150000E2,5.377825353E1 +4.013980000E2,5.657928040E1 +4.016460000E2,6.437756844E1 +4.019070000E2,6.072529486E1 +4.021970000E2,5.876291143E1 +4.024430000E2,6.118567430E1 +4.027460000E2,5.925186578E1 +4.030590000E2,5.727531678E1 +4.033610000E2,6.211123432E1 +4.036680000E2,6.041950332E1 +4.039230000E2,6.161200416E1 +4.041780000E2,6.047480336E1 +4.044620000E2,5.905442986E1 +4.047060000E2,5.729915709E1 +4.049630000E2,6.020933408E1 +4.052500000E2,5.845152603E1 +4.055600000E2,5.814304967E1 +4.058210000E2,5.866194002E1 +4.060640000E2,5.736420578E1 +4.063180000E2,6.107395805E1 +4.065790000E2,5.985269852E1 +4.069480000E2,5.745859610E1 +4.072050000E2,5.693680110E1 +4.074960000E2,6.165201185E1 +4.077470000E2,6.131132241E1 +4.079970000E2,5.824414723E1 +4.083050000E2,5.958451387E1 +4.085600000E2,5.739792126E1 +4.088150000E2,5.573389816E1 +4.090850000E2,5.530698039E1 +4.093810000E2,5.634371531E1 +4.096660000E2,5.880658089E1 +4.099920000E2,5.804298004E1 +4.102870000E2,5.688352401E1 +4.106310000E2,5.573115839E1 +4.109280000E2,5.368053116E1 +4.112180000E2,5.474384188E1 +4.114650000E2,5.380195893E1 +4.117660000E2,5.718608674E1 +4.120140000E2,5.703743686E1 +4.122910000E2,5.985228158E1 +4.125620000E2,6.278694860E1 +4.128210000E2,5.839550633E1 +4.130600000E2,6.029373556E1 +4.133710000E2,5.711050636E1 +4.136150000E2,5.200468588E1 +4.138820000E2,5.769230508E1 +4.141370000E2,5.333759168E1 +4.143860000E2,5.632377961E1 +4.146570000E2,5.647744894E1 +4.149040000E2,5.667945226E1 +4.151840000E2,5.669404445E1 +4.154420000E2,6.072374556E1 +4.157420000E2,5.606444578E1 +4.159850000E2,5.623596320E1 +4.162830000E2,5.264542492E1 +4.165340000E2,5.359803767E1 +4.168600000E2,5.691340897E1 +4.171060000E2,5.636326143E1 +4.173490000E2,6.276141082E1 +4.176080000E2,6.197471417E1 +4.178580000E2,5.777170976E1 +4.181050000E2,5.407671770E1 +4.183760000E2,4.795453020E1 +4.186580000E2,5.871005652E1 +4.188870000E2,6.069158080E1 +4.191320000E2,6.112379328E1 +4.193750000E2,5.584116633E1 +4.196280000E2,6.302854070E1 +4.199610000E2,6.640457067E1 +4.202240000E2,6.337314603E1 +4.205160000E2,5.904470105E1 +4.208200000E2,5.799078909E1 +4.210810000E2,5.975635789E1 +4.213260000E2,6.334088587E1 +4.215900000E2,5.849627934E1 +4.218550000E2,5.894070219E1 +4.221030000E2,5.961371776E1 +4.223550000E2,5.281830949E1 +4.225970000E2,4.892580508E1 +4.229130000E2,5.950646935E1 +4.232610000E2,6.303011111E1 +4.235630000E2,6.030515180E1 +4.238060000E2,5.832387195E1 +4.240560000E2,6.126571743E1 +4.243280000E2,5.961805347E1 +4.245710000E2,5.916464366E1 +4.248300000E2,6.404431780E1 +4.251020000E2,6.161392817E1 +4.253630000E2,6.303875005E1 +4.256110000E2,6.294329578E1 +4.258560000E2,6.495739223E1 +4.261620000E2,6.352748415E1 +4.265140000E2,6.360144813E1 +4.267650000E2,6.320185268E1 +4.270250000E2,6.598206760E1 +4.272910000E2,5.736158392E1 +4.275300000E2,5.632655800E1 +4.277760000E2,5.626186588E1 +4.280650000E2,5.992298879E1 +4.283460000E2,5.976814640E1 +4.285960000E2,5.617047451E1 +4.288540000E2,5.410240194E1 +4.291290000E2,5.524345530E1 +4.293550000E2,5.025485629E1 +4.297050000E2,5.094849624E1 +4.299600000E2,5.349595208E1 +4.302230000E2,5.668766668E1 +4.304690000E2,5.470073040E1 +4.307330000E2,5.808421323E1 +4.310240000E2,5.815977776E1 +4.312740000E2,5.751031291E1 +4.315190000E2,6.045600028E1 +4.318300000E2,5.967896339E1 +4.320980000E2,5.746835753E1 +4.324020000E2,5.874054152E1 +4.327010000E2,5.770096959E1 +4.330460000E2,5.851412717E1 +4.333220000E2,5.970473393E1 +4.335930000E2,6.024030776E1 +4.338530000E2,5.564089573E1 +4.341340000E2,5.328000065E1 +4.343790000E2,5.522789934E1 +4.346930000E2,5.271905966E1 +4.349910000E2,5.685384424E1 +4.352400000E2,5.751176106E1 +4.355350000E2,5.654290580E1 +4.357760000E2,5.976937629E1 +4.360780000E2,5.445311615E1 +4.363520000E2,5.460006243E1 +4.366010000E2,5.402958946E1 +4.369120000E2,5.611325616E1 +4.371660000E2,5.675575065E1 +4.374120000E2,5.605818704E1 +4.377070000E2,5.614720111E1 +4.379470000E2,5.596280974E1 +4.382450000E2,5.764305460E1 +4.384820000E2,6.015340826E1 +4.387240000E2,6.073594369E1 +4.390310000E2,5.846982437E1 +4.393110000E2,5.837342754E1 +4.396160000E2,5.758988397E1 +4.398810000E2,5.375393273E1 +4.401700000E2,5.590416510E1 +4.404180000E2,5.649267014E1 +4.406570000E2,5.809884175E1 +4.409200000E2,5.934788425E1 +4.411750000E2,5.883690392E1 +4.414270000E2,5.465512306E1 +4.416780000E2,5.456039720E1 +4.419260000E2,6.053551690E1 +4.422020000E2,5.446896121E1 +4.425270000E2,5.304300238E1 +4.428480000E2,5.413537656E1 +4.431230000E2,5.590535088E1 +4.433740000E2,5.516889265E1 +4.436180000E2,5.375803139E1 +4.439250000E2,5.440731706E1 +4.441670000E2,5.378894171E1 +4.444170000E2,5.676009311E1 +4.447160000E2,5.433224316E1 +4.449620000E2,5.431777666E1 +4.452100000E2,5.220353562E1 +4.454560000E2,5.525232641E1 +4.456950000E2,5.348687858E1 +4.459900000E2,5.571408478E1 +4.462320000E2,5.590054486E1 +4.464840000E2,5.627503595E1 +4.467390000E2,5.824548232E1 +4.469910000E2,5.637049423E1 +4.472460000E2,5.754096885E1 +4.474930000E2,5.335865942E1 +4.477890000E2,5.765888938E1 +4.480780000E2,6.102087464E1 +4.483520000E2,6.006145593E1 +4.486510000E2,5.685958774E1 +4.489610000E2,5.748149351E1 +4.492370000E2,5.709623916E1 +4.495040000E2,5.821496279E1 +4.497570000E2,5.970222946E1 +4.500030000E2,5.750976802E1 +4.502380000E2,5.796549321E1 +4.505370000E2,5.665777454E1 +4.508330000E2,5.605038109E1 +4.510750000E2,5.504306522E1 +4.513230000E2,5.112487870E1 +4.515900000E2,5.559150914E1 +4.518300000E2,5.656933458E1 +4.520810000E2,6.082180135E1 +4.524470000E2,5.774965281E1 +4.527120000E2,5.847728207E1 +4.529730000E2,5.711434047E1 +4.532810000E2,5.503285278E1 +4.535670000E2,5.614330822E1 +4.538610000E2,6.211492489E1 +4.541040000E2,6.003078695E1 +4.543760000E2,5.766611466E1 +4.546280000E2,5.912518267E1 +4.549300000E2,5.969489895E1 +4.551760000E2,5.509558621E1 +4.554320000E2,5.963291683E1 +4.556950000E2,6.194656842E1 +4.559980000E2,6.032793642E1 +4.562390000E2,5.874022110E1 +4.565060000E2,6.016749735E1 +4.567480000E2,5.985596964E1 +4.570070000E2,5.588678859E1 +4.572660000E2,5.541792762E1 +4.575660000E2,4.969164404E1 +4.578050000E2,4.976271573E1 +4.581060000E2,5.634137812E1 +4.583500000E2,5.321783082E1 +4.586280000E2,5.816393976E1 +4.588870000E2,5.817726916E1 +4.591860000E2,5.398220140E1 +4.594690000E2,5.572842498E1 +4.597270000E2,5.759574297E1 +4.600290000E2,5.492384706E1 +4.602790000E2,5.570826682E1 +4.605780000E2,5.619496661E1 +4.608690000E2,5.993990435E1 +4.611730000E2,6.185390750E1 +4.614300000E2,6.125031183E1 +4.617390000E2,6.047450440E1 +4.621070000E2,5.913093195E1 +4.623500000E2,6.032535990E1 +4.626490000E2,5.803726699E1 +4.628910000E2,5.968748294E1 +4.631850000E2,5.792594347E1 +4.634330000E2,5.623910190E1 +4.636850000E2,6.026318401E1 +4.639240000E2,6.002593060E1 +4.641990000E2,5.694813724E1 +4.644200000E2,5.456998819E1 +4.646660000E2,5.683591124E1 +4.649070000E2,5.893829862E1 +4.652630000E2,5.637983039E1 +4.655160000E2,5.571226470E1 +4.657720000E2,5.582065666E1 +4.660510000E2,5.436378979E1 +4.663550000E2,5.697364508E1 +4.666350000E2,5.716664070E1 +4.668800000E2,6.098104772E1 +4.671260000E2,5.932872997E1 +4.673960000E2,5.573089336E1 +4.676430000E2,5.791664461E1 +4.678890000E2,5.589855895E1 +4.681490000E2,6.359324433E1 +4.685010000E2,5.902079393E1 +4.687870000E2,6.085500324E1 +4.690180000E2,6.401116813E1 +4.693190000E2,6.157634911E1 +4.695830000E2,6.068297160E1 +4.698370000E2,5.867738322E1 +4.701080000E2,6.069776659E1 +4.703530000E2,5.904983802E1 +4.706060000E2,5.642725313E1 +4.708480000E2,5.600286970E1 +4.711080000E2,5.678564623E1 +4.714020000E2,5.139543439E1 +4.717220000E2,5.924511995E1 +4.720300000E2,5.309180697E1 +4.722790000E2,5.295961103E1 +4.725820000E2,5.448425692E1 +4.728350000E2,5.346047841E1 +4.731210000E2,5.563518239E1 +4.733630000E2,5.630991562E1 +4.736070000E2,5.519344442E1 +4.738520000E2,5.696356709E1 +4.741150000E2,5.721588368E1 +4.743810000E2,5.556082681E1 +4.746430000E2,5.453201409E1 +4.749610000E2,5.621559396E1 +4.752460000E2,6.170975330E1 +4.755640000E2,6.352753975E1 +4.758660000E2,5.818774343E1 +4.761780000E2,6.177058435E1 +4.764630000E2,5.829511769E1 +4.766910000E2,5.658732029E1 +4.769520000E2,6.006113158E1 +4.772530000E2,6.022385702E1 +4.775200000E2,5.965858240E1 +4.778410000E2,5.970326758E1 +4.780960000E2,5.911597661E1 +4.783440000E2,5.656338446E1 +4.786020000E2,5.723922467E1 +4.788680000E2,5.700163516E1 +4.791490000E2,6.083416080E1 +4.794510000E2,5.899425763E1 +4.797630000E2,5.820674449E1 +4.800620000E2,5.648898879E1 +4.803380000E2,5.465743937E1 +4.806090000E2,5.006847009E1 +4.809050000E2,5.870050130E1 +4.811580000E2,5.878066343E1 +4.814060000E2,5.929414686E1 +4.817070000E2,5.758425183E1 +4.819760000E2,5.151398214E1 +4.822410000E2,5.772956896E1 +4.824880000E2,5.913153701E1 +4.827710000E2,5.814746383E1 +4.830140000E2,6.018356701E1 +4.832870000E2,5.985078792E1 +4.835070000E2,6.081307149E1 +4.837500000E2,5.810932132E1 +4.840440000E2,5.700769218E1 +4.842880000E2,5.815119989E1 +4.845920000E2,5.595850943E1 +4.849330000E2,5.891167795E1 +4.851960000E2,5.413833723E1 +4.854760000E2,6.184122004E1 +4.857700000E2,6.074653742E1 +4.860130000E2,6.033024099E1 +4.862530000E2,5.218562994E1 +4.865560000E2,5.902882093E1 +4.868150000E2,6.397338635E1 +4.870790000E2,6.543155406E1 +4.873440000E2,6.181389827E1 +4.876070000E2,6.381240883E1 +4.878770000E2,6.121521197E1 +4.882210000E2,5.780293585E1 +4.884640000E2,5.941826112E1 +4.887100000E2,6.118399944E1 +4.889830000E2,6.000089150E1 +4.892940000E2,5.873163787E1 +4.895350000E2,5.943116280E1 +4.897770000E2,5.867927357E1 +4.900230000E2,6.190584219E1 +4.903270000E2,6.313044892E1 +4.905550000E2,6.096660510E1 +4.907970000E2,5.773464228E1 +4.911090000E2,5.720144266E1 +4.914750000E2,5.797465536E1 +4.917410000E2,6.063197812E1 +4.920040000E2,5.799562897E1 +4.922950000E2,5.391853563E1 +4.925940000E2,6.053973121E1 +4.928320000E2,5.781822977E1 +4.931250000E2,6.541242849E1 +4.933660000E2,6.151252976E1 +4.936620000E2,5.962569242E1 +4.939140000E2,6.114162989E1 +4.941750000E2,6.074296596E1 +4.944160000E2,5.738425867E1 +4.947510000E2,6.084173002E1 +4.950140000E2,5.911448476E1 +4.953100000E2,6.076832164E1 +4.955530000E2,6.357047625E1 +4.958480000E2,6.344590866E1 +4.960850000E2,6.154350148E1 +4.963870000E2,5.815666478E1 +4.966770000E2,5.862350251E1 +4.969720000E2,5.162851816E1 +4.972640000E2,5.887916548E1 +4.975020000E2,6.130693279E1 +4.977480000E2,6.164914583E1 +4.980300000E2,5.689153252E1 +4.983240000E2,6.054571109E1 +4.985610000E2,5.779234792E1 +4.987980000E2,6.281334084E1 +4.991290000E2,6.074883772E1 +4.994230000E2,6.344972933E1 +4.996620000E2,6.040546490E1 +4.999570000E2,6.143019571E1 +5.002020000E2,6.117826214E1 +5.004980000E2,6.217883653E1 +5.007380000E2,6.294102819E1 +5.010930000E2,6.516475449E1 +5.013550000E2,6.119184016E1 +5.016670000E2,6.096554209E1 +5.019390000E2,6.197647057E1 +5.022530000E2,6.186754720E1 +5.025630000E2,5.954982776E1 +5.028510000E2,6.115486405E1 +5.031440000E2,6.348254173E1 +5.033820000E2,5.960570527E1 +5.036780000E2,5.977682583E1 +5.039180000E2,5.709696054E1 +5.042580000E2,6.265263203E1 +5.045140000E2,6.166583393E1 +5.047590000E2,6.184451596E1 +5.050170000E2,6.196658471E1 +5.053150000E2,6.014630927E1 +5.055610000E2,6.055201466E1 +5.058690000E2,6.189129858E1 +5.062120000E2,6.557808579E1 +5.064770000E2,6.080176744E1 +5.067370000E2,6.164107472E1 +5.069870000E2,6.497302078E1 +5.072490000E2,6.320126990E1 +5.076210000E2,6.073801439E1 +5.078780000E2,5.612097300E1 +5.081420000E2,5.978501024E1 +5.084360000E2,6.061444996E1 +5.086860000E2,6.272142993E1 +5.089270000E2,6.250458760E1 +5.092250000E2,5.860749180E1 +5.094720000E2,6.368373725E1 +5.097760000E2,6.005985592E1 +5.100780000E2,5.959557057E1 +5.103410000E2,6.085764000E1 +5.106360000E2,6.210563273E1 +5.109960000E2,6.125336704E1 +5.112590000E2,5.627814405E1 +5.115470000E2,6.253958528E1 +5.118480000E2,6.261683940E1 +5.120990000E2,5.782347554E1 +5.123560000E2,6.181201679E1 +5.126370000E2,6.425542150E1 +5.129400000E2,6.148973489E1 +5.132300000E2,6.230215374E1 +5.134720000E2,6.332855968E1 +5.137620000E2,5.875203916E1 +5.140950000E2,6.043073123E1 +5.143340000E2,5.829778385E1 +5.146280000E2,6.530539120E1 +5.148660000E2,5.725439078E1 +5.151580000E2,6.255661351E1 +5.153960000E2,6.412193683E1 +5.156410000E2,6.315775814E1 +5.158840000E2,6.025521775E1 +5.161460000E2,5.892698587E1 +5.164080000E2,5.956507822E1 +5.166610000E2,6.162757540E1 +5.169960000E2,6.009082976E1 +5.173360000E2,5.999682475E1 +5.176380000E2,6.121463264E1 +5.178750000E2,5.929809726E1 +5.181460000E2,5.746668369E1 +5.183810000E2,5.919113180E1 +5.186360000E2,5.827917213E1 +5.189280000E2,5.902314388E1 +5.192310000E2,6.116063950E1 +5.195310000E2,6.026149556E1 +5.198180000E2,5.851929656E1 +5.200920000E2,5.750929671E1 +5.204160000E2,5.729942637E1 +5.207470000E2,5.472104161E1 +5.210390000E2,6.169397748E1 +5.213450000E2,6.081589597E1 +5.216480000E2,6.278728872E1 +5.219550000E2,6.266319096E1 +5.222160000E2,6.478840582E1 +5.224820000E2,6.255888661E1 +5.227330000E2,6.119451713E1 +5.229970000E2,6.244953097E1 +5.232800000E2,6.000703556E1 +5.236020000E2,5.885323025E1 +5.239510000E2,5.826073845E1 +5.242570000E2,5.807287072E1 +5.245200000E2,5.931641295E1 +5.247800000E2,5.775994158E1 +5.250310000E2,6.167249992E1 +5.253010000E2,6.027694641E1 +5.255430000E2,6.329659774E1 +5.258240000E2,6.254377160E1 +5.261330000E2,6.489975363E1 +5.263840000E2,5.999325642E1 +5.266440000E2,5.885077446E1 +5.268920000E2,6.439829299E1 +5.272450000E2,6.165608373E1 +5.275110000E2,5.418048629E1 +5.277700000E2,5.656005066E1 +5.280170000E2,6.215252288E1 +5.283170000E2,5.743407158E1 +5.285650000E2,5.831214783E1 +5.288200000E2,6.066735547E1 +5.290820000E2,5.994603081E1 +5.293240000E2,5.951550591E1 +5.295810000E2,6.264700953E1 +5.298380000E2,5.736628274E1 +5.301360000E2,5.590406638E1 +5.304530000E2,6.041033291E1 +5.307000000E2,5.968691140E1 +5.309950000E2,5.730835182E1 +5.312390000E2,5.823026311E1 +5.315470000E2,5.871167442E1 +5.318430000E2,5.990765833E1 +5.321400000E2,6.387020611E1 +5.324510000E2,6.077699448E1 +5.326980000E2,5.895294298E1 +5.329820000E2,6.041997988E1 +5.333050000E2,5.806877757E1 +5.336110000E2,5.682362418E1 +5.340220000E2,5.915478638E1 +5.342790000E2,6.110946170E1 +5.345430000E2,5.735857105E1 +5.348060000E2,5.684014045E1 +5.350480000E2,6.043627860E1 +5.353500000E2,5.982929159E1 +5.356290000E2,5.986217314E1 +5.358770000E2,5.677131614E1 +5.361310000E2,5.763848566E1 +5.363810000E2,6.142463983E1 +5.366730000E2,5.634211854E1 +5.369290000E2,5.547608220E1 +5.372430000E2,5.920768747E1 +5.375170000E2,6.113406656E1 +5.377700000E2,6.208964505E1 +5.380710000E2,6.100572025E1 +5.383260000E2,6.352283467E1 +5.386320000E2,5.898993907E1 +5.389570000E2,5.503782412E1 +5.392560000E2,5.663453376E1 +5.395360000E2,6.406828344E1 +5.398060000E2,5.890955595E1 +5.400700000E2,6.046868424E1 +5.403380000E2,5.979639772E1 +5.406170000E2,5.838685694E1 +5.409120000E2,5.933573087E1 +5.411500000E2,5.970536072E1 +5.414430000E2,5.461931777E1 +5.417380000E2,5.891969668E1 +5.419780000E2,6.086182172E1 +5.422730000E2,5.706230292E1 +5.425150000E2,6.002937875E1 +5.428150000E2,5.733734968E1 +5.430520000E2,5.791730719E1 +5.433430000E2,5.451667439E1 +5.436740000E2,5.601232928E1 +5.439430000E2,6.067749331E1 +5.441960000E2,6.044443396E1 +5.445120000E2,6.332642539E1 +5.448320000E2,6.369907597E1 +5.451010000E2,6.327412880E1 +5.453640000E2,6.380509737E1 +5.456090000E2,6.199528902E1 +5.458550000E2,5.905332967E1 +5.461530000E2,5.748064798E1 +5.463920000E2,5.793139247E1 +5.466900000E2,5.931551966E1 +5.470480000E2,6.345498755E1 +5.473610000E2,5.881486603E1 +5.476220000E2,5.928200098E1 +5.478810000E2,5.577309321E1 +5.481470000E2,5.875325885E1 +5.483980000E2,6.007409743E1 +5.486490000E2,6.070612531E1 +5.488940000E2,5.934549940E1 +5.491520000E2,6.170511636E1 +5.494020000E2,6.376886521E1 +5.497010000E2,6.406587518E1 +5.499360000E2,6.365684538E1 +5.503130000E2,6.009406633E1 +5.505850000E2,6.014270409E1 +5.508500000E2,5.879153887E1 +5.511470000E2,5.883782525E1 +5.513760000E2,5.773432280E1 +5.516350000E2,5.966648889E1 +5.518940000E2,5.472606108E1 +5.521930000E2,5.682429497E1 +5.524670000E2,5.619181968E1 +5.527770000E2,5.997719307E1 +5.530460000E2,5.879335465E1 +5.533410000E2,5.983416170E1 +5.537120000E2,5.957041909E1 +5.539420000E2,5.952828793E1 +5.542510000E2,5.971645274E1 +5.545000000E2,6.419337448E1 +5.547730000E2,6.634363344E1 +5.550770000E2,6.285856457E1 +5.553760000E2,5.654671197E1 +5.556440000E2,5.530754918E1 +5.558640000E2,5.889159880E1 +5.561110000E2,6.213947417E1 +5.563520000E2,6.860243311E1 +5.566480000E2,6.647018679E1 +5.569110000E2,6.420604516E1 +5.571650000E2,6.703462967E1 +5.574140000E2,6.648783593E1 +5.576540000E2,6.634001782E1 +5.579350000E2,6.293734135E1 +5.581770000E2,6.205918741E1 +5.584760000E2,5.247262167E1 +5.587220000E2,5.338734169E1 +5.589670000E2,5.662276325E1 +5.592110000E2,5.533465633E1 +5.595080000E2,5.854271946E1 +5.597740000E2,5.660649413E1 +5.600260000E2,6.333844075E1 +5.602860000E2,6.255943536E1 +5.605830000E2,5.392304486E1 +5.608700000E2,5.760897506E1 +5.611660000E2,5.713086887E1 +5.614070000E2,5.720157535E1 +5.617060000E2,5.026592539E1 +5.619510000E2,5.140995344E1 +5.621950000E2,5.663266073E1 +5.624370000E2,5.202695689E1 +5.627360000E2,6.084568668E1 +5.630550000E2,6.179643015E1 +5.632960000E2,5.833759539E1 +5.635420000E2,5.518782498E1 +5.638400000E2,6.578433315E1 +5.640880000E2,5.706187099E1 +5.643850000E2,5.456571992E1 +5.646300000E2,5.536479424E1 +5.649270000E2,5.930541070E1 +5.651540000E2,6.023199994E1 +5.653960000E2,5.612469871E1 +5.656980000E2,5.462007842E1 +5.659410000E2,5.278259804E1 +5.662890000E2,6.064478329E1 +5.666290000E2,5.682964802E1 +5.669030000E2,5.787828261E1 +5.671980000E2,5.712595091E1 +5.674890000E2,5.729764361E1 +5.677450000E2,5.241850056E1 +5.679980000E2,5.377155525E1 +5.682380000E2,5.485418547E1 +5.684830000E2,5.503746434E1 +5.687810000E2,5.398954643E1 +5.690230000E2,5.401913169E1 +5.693270000E2,5.953896215E1 +5.695680000E2,5.626247467E1 +5.698640000E2,6.040491706E1 +5.701050000E2,5.781813181E1 +5.703620000E2,5.733744349E1 +5.706600000E2,5.669032177E1 +5.709140000E2,5.453731954E1 +5.711580000E2,6.235364316E1 +5.714280000E2,5.958044055E1 +5.716860000E2,5.875696014E1 +5.719750000E2,5.570465139E1 +5.722310000E2,4.865236791E1 +5.725580000E2,5.257975627E1 +5.727900000E2,4.975389893E1 +5.730890000E2,5.658508958E1 +5.733660000E2,5.542284648E1 +5.735960000E2,5.536199936E1 +5.738990000E2,5.813474916E1 +5.741540000E2,5.417788207E1 +5.744370000E2,5.704170918E1 +5.746710000E2,5.736828455E1 +5.749280000E2,5.450874678E1 +5.751790000E2,5.610950442E1 +5.754890000E2,5.919887582E1 +5.758690000E2,5.780639378E1 +5.761700000E2,5.709220641E1 +5.764190000E2,5.815359781E1 +5.767060000E2,5.734155824E1 +5.769500000E2,5.925323086E1 +5.772430000E2,6.084767221E1 +5.775370000E2,5.852024889E1 +5.777780000E2,5.822649765E1 +5.780770000E2,5.829089322E1 +5.783770000E2,5.915481192E1 +5.786460000E2,5.996430642E1 +5.789780000E2,6.016421415E1 +5.792520000E2,6.221052482E1 +5.795090000E2,5.533993101E1 +5.798230000E2,6.537257407E1 +5.801220000E2,6.068836920E1 +5.803770000E2,5.728273812E1 +5.806510000E2,5.648369901E1 +5.809070000E2,5.397363349E1 +5.811690000E2,5.755294689E1 +5.814510000E2,5.957149991E1 +5.816900000E2,5.963092636E1 +5.820650000E2,6.778811076E1 +5.823240000E2,6.247529404E1 +5.825840000E2,6.073516327E1 +5.828380000E2,6.039356998E1 +5.830970000E2,5.764504824E1 +5.833990000E2,6.041396176E1 +5.836470000E2,6.355942860E1 +5.838990000E2,5.785560268E1 +5.841390000E2,6.060017525E1 +5.844440000E2,6.032069521E1 +5.847010000E2,5.760371100E1 +5.849440000E2,5.491620812E1 +5.851990000E2,5.957978671E1 +5.855370000E2,6.103184032E1 +5.857970000E2,5.896875350E1 +5.861120000E2,6.008190546E1 +5.863990000E2,5.687378544E1 +5.866450000E2,5.874294643E1 +5.869410000E2,5.870806017E1 +5.871860000E2,5.809143232E1 +5.874740000E2,5.847828699E1 +5.877850000E2,5.846232778E1 +5.880500000E2,5.755876921E1 +5.883650000E2,5.609032758E1 +5.887050000E2,5.685283394E1 +5.889730000E2,5.945975832E1 +5.892710000E2,6.114741701E1 +5.895110000E2,6.316132147E1 +5.898100000E2,6.715155367E1 +5.900480000E2,6.367866992E1 +5.903470000E2,5.131949120E1 +5.905900000E2,5.646494575E1 +5.908880000E2,6.096218752E1 +5.911270000E2,6.089171796E1 +5.913720000E2,6.319522071E1 +5.916410000E2,6.016553529E1 +5.920560000E2,5.915189166E1 +5.923330000E2,5.776862186E1 +5.925640000E2,5.840366445E1 +5.927890000E2,5.978914182E1 +5.930440000E2,6.058699711E1 +5.932650000E2,6.012895387E1 +5.935140000E2,6.295025578E1 +5.937520000E2,6.280196012E1 +5.940110000E2,6.194014009E1 +5.943340000E2,6.483906300E1 +5.945870000E2,5.918257578E1 +5.948380000E2,5.620333930E1 +5.951900000E2,6.323403421E1 +5.954240000E2,6.183177681E1 +5.956620000E2,6.120300936E1 +5.959650000E2,5.836925111E1 +5.961890000E2,6.106023171E1 +5.964920000E2,6.153658324E1 +5.967310000E2,6.490772593E1 +5.969960000E2,6.274228676E1 +5.972520000E2,6.139008510E1 +5.975050000E2,6.281232833E1 +5.978180000E2,6.254982632E1 +5.980890000E2,6.205794184E1 +5.983900000E2,6.438771503E1 +5.986230000E2,6.052772463E1 +5.988520000E2,6.375966703E1 +5.991380000E2,5.869985301E1 +5.993860000E2,6.050357712E1 +5.996630000E2,5.547835745E1 +5.999280000E2,5.400421666E1 +6.001960000E2,5.668252186E1 +6.004880000E2,6.001970320E1 +6.007680000E2,6.056987745E1 +6.010550000E2,6.461211967E1 +6.014090000E2,6.399838195E1 +6.016840000E2,5.485596323E1 +6.019450000E2,5.731519087E1 +6.022080000E2,6.691878914E1 +6.024720000E2,6.479201876E1 +6.027260000E2,6.412847214E1 +6.029760000E2,6.025795068E1 +6.032190000E2,6.098133491E1 +6.035120000E2,5.689387521E1 +6.038040000E2,5.639928101E1 +6.041550000E2,5.328068252E1 +6.044370000E2,5.639829798E1 +6.046770000E2,5.892330560E1 +6.049510000E2,5.315638413E1 +6.051900000E2,5.740260439E1 +6.054620000E2,5.339391440E1 +6.057500000E2,5.310371918E1 +6.060710000E2,5.460903952E1 +6.063050000E2,5.407304270E1 +6.065540000E2,5.870790541E1 +6.068060000E2,5.576782972E1 +6.070790000E2,5.976954147E1 +6.074640000E2,6.181180531E1 +6.077240000E2,6.194364733E1 +6.080150000E2,6.794225297E1 +6.082590000E2,6.236601361E1 +6.085470000E2,6.002700779E1 +6.088450000E2,5.971993236E1 +6.090930000E2,5.954735434E1 +6.093460000E2,5.907202371E1 +6.095920000E2,5.993658420E1 +6.098910000E2,5.530332259E1 +6.101850000E2,5.531802018E1 +6.104220000E2,5.376885939E1 +6.107780000E2,5.735355871E1 +6.110210000E2,5.868610156E1 +6.112710000E2,5.312122754E1 +6.115670000E2,5.745102631E1 +6.118550000E2,5.535536940E1 +6.121540000E2,5.088728731E1 +6.123960000E2,5.266907791E1 +6.126860000E2,5.386493253E1 +6.130010000E2,5.670623073E1 +6.132810000E2,5.563278655E1 +6.135150000E2,5.267172926E1 +6.138540000E2,5.386148816E1 +6.141880000E2,5.716468210E1 +6.144880000E2,5.526918781E1 +6.147190000E2,5.659553915E1 +6.149610000E2,5.648341007E1 +6.152730000E2,5.711745846E1 +6.155520000E2,5.918800114E1 +6.158010000E2,5.642548609E1 +6.161000000E2,5.635896926E1 +6.163480000E2,5.899225051E1 +6.166180000E2,5.374343244E1 +6.168690000E2,4.891042404E1 +6.172050000E2,5.065835680E1 +6.174560000E2,5.685264653E1 +6.177340000E2,5.429270039E1 +6.179930000E2,5.499548313E1 +6.182940000E2,5.407177565E1 +6.185300000E2,5.356533799E1 +6.188300000E2,5.378190643E1 +6.191140000E2,5.189020817E1 +6.193870000E2,5.046647494E1 +6.196450000E2,5.501107364E1 +6.198910000E2,5.798814538E1 +6.201660000E2,5.360844474E1 +6.205080000E2,5.353935610E1 +6.208080000E2,5.620189936E1 +6.210820000E2,6.216008765E1 +6.213360000E2,5.767015155E1 +6.216520000E2,6.210101060E1 +6.219320000E2,5.928042926E1 +6.221800000E2,6.394496555E1 +6.224980000E2,5.872213561E1 +6.227430000E2,5.927091626E1 +6.230010000E2,5.235592166E1 +6.232430000E2,6.313120608E1 +6.235470000E2,6.005436888E1 +6.238480000E2,5.999836557E1 +6.240930000E2,5.879748041E1 +6.243920000E2,5.978277378E1 +6.246440000E2,6.050724590E1 +6.249480000E2,6.282777276E1 +6.252520000E2,6.080897043E1 +6.255640000E2,5.889462949E1 +6.258270000E2,5.550476615E1 +6.260730000E2,5.586785505E1 +6.263620000E2,6.576560120E1 +6.266590000E2,6.102361259E1 +6.270050000E2,6.110507706E1 +6.272870000E2,5.753592100E1 +6.275410000E2,6.297666729E1 +6.278490000E2,6.037594793E1 +6.281160000E2,5.849898506E1 +6.284180000E2,6.165631601E1 +6.287090000E2,6.096774109E1 +6.289510000E2,6.176590968E1 +6.292460000E2,5.947061017E1 +6.294820000E2,6.109202024E1 +6.297790000E2,5.322559935E1 +6.301160000E2,4.971181861E1 +6.303880000E2,5.533921521E1 +6.307250000E2,5.478410742E1 +6.310240000E2,5.647795083E1 +6.313200000E2,5.797504265E1 +6.315690000E2,5.403019222E1 +6.318640000E2,5.301910781E1 +6.321010000E2,5.096544207E1 +6.324030000E2,5.324435941E1 +6.326360000E2,5.447050361E1 +6.328960000E2,5.932781903E1 +6.331500000E2,5.967228428E1 +6.334640000E2,6.319489971E1 +6.337810000E2,5.820271574E1 +6.340710000E2,5.910289699E1 +6.343170000E2,5.681937370E1 +6.346260000E2,5.582227275E1 +6.349350000E2,5.745831651E1 +6.352100000E2,5.504019385E1 +6.354620000E2,5.072303887E1 +6.357190000E2,5.366082959E1 +6.359690000E2,5.380227314E1 +6.362560000E2,4.818205454E1 +6.365090000E2,5.989908626E1 +6.368780000E2,5.659012846E1 +6.371610000E2,5.593157997E1 +6.374460000E2,5.135237935E1 +6.377000000E2,5.687788515E1 +6.379550000E2,5.943975502E1 +6.382630000E2,6.290957992E1 +6.385230000E2,5.827099811E1 +6.387780000E2,5.686391746E1 +6.390620000E2,5.771790911E1 +6.393200000E2,5.390066131E1 +6.395830000E2,5.358231960E1 +6.398480000E2,5.564565007E1 +6.401490000E2,5.205482155E1 +6.404200000E2,5.852280051E1 +6.407340000E2,4.836326193E1 +6.409980000E2,5.905115701E1 +6.412560000E2,5.622349390E1 +6.415040000E2,5.891737338E1 +6.417460000E2,5.749377856E1 +6.420310000E2,5.414095183E1 +6.422680000E2,5.482109112E1 +6.425170000E2,5.202942051E1 +6.428000000E2,4.903409276E1 +6.431250000E2,5.495098254E1 +6.434650000E2,5.777911761E1 +6.437680000E2,5.329076638E1 +6.440080000E2,5.886592322E1 +6.443070000E2,5.661637111E1 +6.445560000E2,5.459133399E1 +6.448230000E2,4.858613706E1 +6.450990000E2,5.642020356E1 +6.453590000E2,5.634614530E1 +6.456240000E2,5.769024626E1 +6.458900000E2,6.037646239E1 +6.461470000E2,5.712013563E1 +6.464260000E2,5.393237723E1 +6.467570000E2,5.443825449E1 +6.469850000E2,5.464133184E1 +6.472460000E2,5.185343249E1 +6.475170000E2,5.670688718E1 +6.477900000E2,5.808659132E1 +6.480150000E2,5.879711687E1 +6.483250000E2,5.860991669E1 +6.485730000E2,5.600484597E1 +6.488230000E2,5.291438286E1 +6.491020000E2,5.869236753E1 +6.493260000E2,5.826316690E1 +6.496250000E2,5.619306699E1 +6.499850000E2,6.085970714E1 +6.502400000E2,6.051231588E1 +6.505400000E2,6.096601072E1 +6.507990000E2,6.197068990E1 +6.511180000E2,6.520817743E1 +6.513810000E2,6.377577246E1 +6.516860000E2,6.105485617E1 +6.519940000E2,5.890751001E1 +6.522910000E2,5.911253604E1 +6.525370000E2,6.291937986E1 +6.528540000E2,6.252638881E1 +6.532210000E2,6.337356348E1 +6.535270000E2,5.894334263E1 +6.537830000E2,5.754939005E1 +6.540930000E2,5.500698560E1 +6.543880000E2,5.014350898E1 +6.546880000E2,5.646260920E1 +6.549870000E2,5.951282585E1 +6.552920000E2,6.099782791E1 +6.555480000E2,6.065538365E1 +6.558100000E2,6.827371953E1 +6.560790000E2,6.035931154E1 +6.563820000E2,6.267306134E1 +6.566350000E2,5.826452213E1 +6.568970000E2,6.092938143E1 +6.572010000E2,6.534130041E1 +6.575130000E2,6.111837506E1 +6.577770000E2,5.826481723E1 +6.580330000E2,5.918147323E1 +6.582980000E2,6.100230752E1 +6.585510000E2,6.302217459E1 +6.588060000E2,5.754956715E1 +6.591080000E2,6.111201710E1 +6.593520000E2,6.017410469E1 +6.597040000E2,6.031944923E1 +6.599450000E2,5.943575512E1 +6.602120000E2,5.868776340E1 +6.605570000E2,5.940543513E1 +6.608500000E2,5.886327816E1 +6.610920000E2,5.770522648E1 +6.613840000E2,5.442777508E1 +6.616200000E2,5.394232060E1 +6.619220000E2,5.856638842E1 +6.622160000E2,5.742664400E1 +6.624600000E2,5.472498345E1 +6.627560000E2,5.672985390E1 +6.629770000E2,5.834702318E1 +6.632250000E2,5.907602823E1 +6.634810000E2,5.873031221E1 +6.637670000E2,5.757130737E1 +6.640040000E2,5.572185824E1 +6.643070000E2,5.959142979E1 +6.645480000E2,5.851623707E1 +6.648520000E2,5.856887935E1 +6.650940000E2,6.397218192E1 +6.653890000E2,5.963692586E1 +6.656210000E2,5.934207027E1 +6.659580000E2,5.667856430E1 +6.662640000E2,5.811017468E1 +6.665550000E2,5.505265787E1 +6.667990000E2,5.558350894E1 +6.671320000E2,6.063017800E1 +6.674000000E2,5.568411381E1 +6.676510000E2,5.981422062E1 +6.679580000E2,5.723024768E1 +6.682820000E2,5.036028104E1 +6.685240000E2,5.199205823E1 +6.687970000E2,5.367328475E1 +6.691280000E2,5.936914884E1 +6.693940000E2,5.657797691E1 +6.696490000E2,6.065879377E1 +6.699270000E2,5.657054255E1 +6.702000000E2,5.655716576E1 +6.704770000E2,5.823562265E1 +6.707350000E2,6.065030224E1 +6.710140000E2,6.110776530E1 +6.712700000E2,5.714357796E1 +6.715170000E2,5.604236164E1 +6.717930000E2,6.041748871E1 +6.721240000E2,6.019765334E1 +6.724270000E2,5.928602786E1 +6.727750000E2,5.973060669E1 +6.730710000E2,6.059869751E1 +6.733250000E2,6.116850166E1 +6.736400000E2,6.145214709E1 +6.738890000E2,6.020118097E1 +6.741670000E2,6.048579637E1 +6.744720000E2,6.225337088E1 +6.747550000E2,5.853636068E1 +6.750030000E2,5.999204871E1 +6.752840000E2,5.433989895E1 +6.755100000E2,5.847308735E1 +6.758420000E2,5.913726954E1 +6.760830000E2,6.049449503E1 +6.763830000E2,5.545572399E1 +6.766370000E2,6.246077536E1 +6.768920000E2,6.029598130E1 +6.771340000E2,6.005864514E1 +6.774230000E2,6.582269585E1 +6.776700000E2,6.255104294E1 +6.779140000E2,6.623711836E1 +6.781740000E2,6.684819787E1 +6.784850000E2,6.877250850E1 +6.787420000E2,6.157084767E1 +6.789860000E2,6.054068573E1 +6.793290000E2,6.069583213E1 +6.795810000E2,6.124898856E1 +6.798240000E2,6.136691849E1 +6.800900000E2,6.035594762E1 +6.803920000E2,5.654106541E1 +6.806920000E2,5.587565134E1 +6.809940000E2,5.642134155E1 +6.813020000E2,5.749983358E1 +6.815830000E2,5.576151961E1 +6.818120000E2,5.714589311E1 +6.820580000E2,5.969510914E1 +6.823020000E2,5.824123453E1 +6.825680000E2,5.779273115E1 +6.828630000E2,5.699644891E1 +6.831010000E2,5.900876644E1 +6.833500000E2,6.335540424E1 +6.835940000E2,6.280432027E1 +6.838340000E2,6.194675910E1 +6.841290000E2,5.801082069E1 +6.843650000E2,5.652506879E1 +6.846570000E2,5.895404856E1 +6.848910000E2,5.873705448E1 +6.851950000E2,5.589704153E1 +6.855380000E2,5.379672362E1 +6.857910000E2,6.287056471E1 +6.860900000E2,6.081817617E1 +6.863340000E2,6.807593043E1 +6.866320000E2,5.604389930E1 +6.868800000E2,6.712075434E1 +6.871750000E2,6.290238552E1 +6.874740000E2,6.473105179E1 +6.877330000E2,5.873835234E1 +6.880180000E2,5.800563858E1 +6.882620000E2,5.540095032E1 +6.885810000E2,6.197881428E1 +6.888280000E2,5.541258482E1 +6.890890000E2,5.558277465E1 +6.894010000E2,4.965923685E1 +6.897080000E2,4.860020107E1 +6.899730000E2,5.608167548E1 +6.902300000E2,5.381305593E1 +6.904990000E2,6.079286270E1 +6.908000000E2,6.446965644E1 +6.910380000E2,6.556266140E1 +6.913400000E2,5.418444209E1 +6.916350000E2,5.205102491E1 +6.919820000E2,5.812981404E1 +6.922410000E2,6.500705260E1 +6.925070000E2,6.149947285E1 +6.927750000E2,5.695315316E1 +6.930870000E2,5.775854948E1 +6.933870000E2,6.523399833E1 +6.936300000E2,6.692630865E1 +6.939270000E2,5.793447825E1 +6.942230000E2,5.746396110E1 +6.944770000E2,6.017975210E1 +6.947150000E2,5.956759439E1 +6.950320000E2,6.391288151E1 +6.953110000E2,6.484415086E1 +6.955650000E2,6.664209540E1 +6.958410000E2,6.746668632E1 +6.961050000E2,5.775664920E1 +6.964050000E2,6.383035698E1 +6.967020000E2,5.816763892E1 +6.969600000E2,6.921190909E1 +6.972400000E2,6.165047809E1 +6.975080000E2,5.666810057E1 +6.977540000E2,6.417546300E1 +6.980020000E2,5.788971486E1 +6.982730000E2,5.486922606E1 +6.985850000E2,5.576434723E1 +6.988820000E2,5.548978795E1 +6.991460000E2,5.886820316E1 +6.993970000E2,6.226406326E1 +6.996480000E2,5.601534080E1 +6.999400000E2,5.901385758E1 +7.002040000E2,5.720709772E1 +7.005120000E2,6.318399213E1 +7.007580000E2,6.338981741E1 +7.010170000E2,6.747312486E1 +7.012670000E2,5.788999692E1 +7.015450000E2,4.434465006E1 +7.018710000E2,6.439013955E1 +7.021480000E2,5.375342664E1 +7.023700000E2,6.398282027E1 +7.026160000E2,5.857909138E1 +7.029130000E2,5.670439641E1 +7.031590000E2,5.749786365E1 +7.034320000E2,5.181710985E1 +7.036770000E2,5.871535868E1 +7.039520000E2,5.470297527E1 +7.042240000E2,5.771822323E1 +7.044750000E2,5.236261523E1 +7.047130000E2,5.595332709E1 +7.050480000E2,5.576748295E1 +7.053040000E2,5.334869600E1 +7.055590000E2,5.337806625E1 +7.058180000E2,5.499892680E1 +7.060900000E2,5.490963435E1 +7.063980000E2,5.551078540E1 +7.066680000E2,5.358868238E1 +7.069300000E2,5.203182642E1 +7.071760000E2,5.771053387E1 +7.074630000E2,5.175835182E1 +7.077440000E2,5.402526598E1 +7.080400000E2,5.754717994E1 +7.083470000E2,6.103880587E1 +7.086400000E2,6.284824916E1 +7.088840000E2,6.674666322E1 +7.092010000E2,6.194114278E1 +7.094980000E2,5.796289911E1 +7.097580000E2,5.475547679E1 +7.100170000E2,5.804024708E1 +7.102650000E2,5.606423134E1 +7.105550000E2,5.319247933E1 +7.107930000E2,5.625991375E1 +7.110940000E2,5.589539698E1 +7.114730000E2,6.073460415E1 +7.117930000E2,6.208342045E1 +7.120530000E2,6.335117127E1 +7.123290000E2,5.821275565E1 +7.126280000E2,5.793160357E1 +7.128780000E2,5.509944006E1 +7.131790000E2,5.578357696E1 +7.134760000E2,5.632534225E1 +7.137350000E2,5.466315647E1 +7.140450000E2,5.914530785E1 +7.143020000E2,6.280432125E1 +7.146020000E2,6.333348539E1 +7.149790000E2,5.698482465E1 +7.152920000E2,5.474810308E1 +7.155370000E2,5.417920207E1 +7.157880000E2,6.392184792E1 +7.160720000E2,6.565549591E1 +7.163130000E2,6.082705714E1 +7.166120000E2,5.816285927E1 +7.168430000E2,5.809201859E1 +7.170930000E2,6.016105207E1 +7.173350000E2,5.162287691E1 +7.176230000E2,5.754317879E1 +7.179310000E2,6.166304542E1 +7.181770000E2,6.177004553E1 +7.184320000E2,6.274574776E1 +7.186900000E2,6.104994734E1 +7.189920000E2,5.735301480E1 +7.192340000E2,5.830205645E1 +7.194890000E2,6.212782217E1 +7.197420000E2,5.467685243E1 +7.200420000E2,5.313970583E1 +7.202920000E2,5.278680647E1 +7.205360000E2,5.474141102E1 +7.209140000E2,6.241771654E1 +7.212600000E2,6.394594172E1 +7.215560000E2,6.348358734E1 +7.217980000E2,6.112734048E1 +7.220450000E2,6.226451183E1 +7.222930000E2,6.534082516E1 +7.225960000E2,6.114019283E1 +7.228390000E2,6.421228964E1 +7.231230000E2,6.814847387E1 +7.233690000E2,6.275446304E1 +7.236190000E2,6.679153921E1 +7.239280000E2,6.537583699E1 +7.241850000E2,6.212976374E1 +7.245300000E2,6.553556935E1 +7.248220000E2,5.834030427E1 +7.250930000E2,5.992153646E1 +7.253380000E2,5.595099295E1 +7.256370000E2,5.720822528E1 +7.258800000E2,5.423516872E1 +7.261770000E2,5.906139652E1 +7.264140000E2,6.204477132E1 +7.267140000E2,6.368823365E1 +7.269550000E2,6.513672214E1 +7.272500000E2,6.364997971E1 +7.275370000E2,6.269941998E1 +7.278570000E2,5.948773609E1 +7.281020000E2,5.789544973E1 +7.283740000E2,6.305528689E1 +7.286400000E2,6.245554089E1 +7.289690000E2,6.033221518E1 +7.292310000E2,5.940071821E1 +7.294970000E2,6.176178101E1 +7.298020000E2,5.355172623E1 +7.300580000E2,5.535292187E1 +7.303150000E2,5.274398781E1 +7.305750000E2,5.399957194E1 +7.308780000E2,5.819691646E1 +7.312070000E2,5.434897588E1 +7.315090000E2,6.041787911E1 +7.317850000E2,5.617860881E1 +7.320560000E2,5.558770875E1 +7.323290000E2,5.151264449E1 +7.325860000E2,5.612143969E1 +7.328800000E2,5.405001557E1 +7.331120000E2,5.455354216E1 +7.334090000E2,5.716252136E1 +7.337070000E2,6.416157102E1 +7.339910000E2,6.098010142E1 +7.343020000E2,6.194029449E1 +7.346500000E2,6.091313037E1 +7.349540000E2,5.846954669E1 +7.352410000E2,5.743489407E1 +7.355320000E2,5.872669957E1 +7.357800000E2,5.859080967E1 +7.360560000E2,6.053269456E1 +7.363220000E2,6.117884455E1 +7.366590000E2,5.809887850E1 +7.369420000E2,5.453224539E1 +7.372510000E2,5.639337460E1 +7.375040000E2,5.373613181E1 +7.378630000E2,5.066236714E1 +7.381160000E2,4.653740377E1 +7.383650000E2,6.375011526E1 +7.386730000E2,6.282181577E1 +7.389830000E2,6.727660972E1 +7.392340000E2,6.413328322E1 +7.394790000E2,6.184881400E1 +7.397290000E2,6.430634497E1 +7.400250000E2,6.276256291E1 +7.402610000E2,6.297441350E1 +7.405590000E2,5.306586823E1 +7.408610000E2,5.403016569E1 +7.412260000E2,5.749263443E1 +7.415060000E2,5.657932114E1 +7.417820000E2,5.532222303E1 +7.420430000E2,5.911133378E1 +7.423450000E2,5.822379827E1 +7.426470000E2,6.311870884E1 +7.428860000E2,5.964121243E1 +7.431940000E2,5.708688763E1 +7.434960000E2,5.782189241E1 +7.437480000E2,5.745118469E1 +7.440380000E2,5.258772989E1 +7.442830000E2,5.325984780E1 +7.445410000E2,5.216709684E1 +7.447900000E2,5.485283680E1 +7.450520000E2,6.638751453E1 +7.453640000E2,6.256149725E1 +7.456370000E2,6.851667797E1 +7.459020000E2,6.356784575E1 +7.462040000E2,6.586178842E1 +7.464510000E2,6.099626883E1 +7.467420000E2,6.874341983E1 +7.470300000E2,5.690479739E1 +7.472670000E2,5.749513215E1 +7.475860000E2,5.743840209E1 +7.478480000E2,6.695338823E1 +7.481550000E2,6.575566103E1 +7.484170000E2,6.244751264E1 +7.486690000E2,6.206430480E1 +7.489520000E2,5.755143157E1 +7.492450000E2,6.343498072E1 +7.494820000E2,6.599354682E1 +7.497800000E2,5.994269627E1 +7.500210000E2,6.480563885E1 +7.503160000E2,5.962320355E1 +7.505550000E2,5.907805627E1 +7.508860000E2,5.452673237E1 +7.511450000E2,5.413358853E1 +7.514110000E2,5.786691992E1 +7.516870000E2,6.185088179E1 +7.519570000E2,5.432685780E1 +7.522050000E2,5.297819944E1 +7.524920000E2,5.290855554E1 +7.527910000E2,5.828859659E1 +7.530300000E2,5.880189294E1 +7.533360000E2,5.500578631E1 +7.535910000E2,5.476677878E1 +7.538330000E2,5.414240587E1 +7.541650000E2,5.332866170E1 +7.544620000E2,5.193802785E1 +7.547080000E2,5.242932681E1 +7.549590000E2,6.024921863E1 +7.552020000E2,5.537701523E1 +7.554960000E2,5.489617845E1 +7.557330000E2,5.384280286E1 +7.560410000E2,5.406125999E1 +7.562870000E2,5.246560959E1 +7.565320000E2,5.374729291E1 +7.567680000E2,5.542801483E1 +7.570630000E2,5.525770987E1 +7.573930000E2,5.847670432E1 +7.576660000E2,5.822188632E1 +7.579180000E2,5.822901451E1 +7.582040000E2,5.458975346E1 +7.584820000E2,5.438683247E1 +7.587800000E2,5.260449368E1 +7.590260000E2,5.371245859E1 +7.592870000E2,4.983203663E1 +7.595420000E2,5.018089077E1 +7.598380000E2,5.950969681E1 +7.601480000E2,5.769305363E1 +7.604800000E2,5.747567937E1 +7.607190000E2,5.446335810E1 +7.610040000E2,5.463229896E1 +7.612970000E2,5.644916160E1 +7.615560000E2,5.809520116E1 +7.618460000E2,5.406577519E1 +7.621050000E2,5.362277750E1 +7.623930000E2,5.868559294E1 +7.626230000E2,5.548744129E1 +7.628890000E2,5.613986675E1 +7.631890000E2,5.592058678E1 +7.634870000E2,5.947938191E1 +7.638120000E2,5.945990241E1 +7.640830000E2,5.354091788E1 +7.643270000E2,5.910847411E1 +7.645670000E2,6.112853730E1 +7.648120000E2,5.617469613E1 +7.650520000E2,5.678172470E1 +7.653190000E2,5.293731054E1 +7.655730000E2,5.571573154E1 +7.658430000E2,5.239475172E1 +7.660900000E2,5.710555790E1 +7.663840000E2,5.593714408E1 +7.666500000E2,5.506488062E1 +7.669100000E2,5.276148627E1 +7.671530000E2,5.087813070E1 +7.674500000E2,4.966858228E1 +7.677070000E2,4.690170064E1 +7.679870000E2,5.097718665E1 +7.682460000E2,5.173969669E1 +7.685220000E2,5.562988056E1 +7.687630000E2,5.194720020E1 +7.690630000E2,5.590118249E1 +7.693610000E2,5.613585205E1 +7.696030000E2,5.417299550E1 +7.698530000E2,5.925774948E1 +7.702010000E2,5.729895975E1 +7.704610000E2,5.765570707E1 +7.707610000E2,6.211008380E1 +7.710570000E2,5.846530012E1 +7.712970000E2,5.766544416E1 +7.715460000E2,5.716238768E1 +7.718080000E2,5.700535494E1 +7.720510000E2,5.592606747E1 +7.723260000E2,5.771214429E1 +7.725940000E2,5.753442175E1 +7.728830000E2,5.541298336E1 +7.731860000E2,5.137853822E1 +7.735420000E2,5.462649470E1 +7.738320000E2,5.454281912E1 +7.740820000E2,6.803752283E1 +7.743260000E2,6.852980541E1 +7.745820000E2,7.007631543E1 +7.748270000E2,7.009876218E1 +7.751160000E2,6.950363051E1 +7.753520000E2,6.338954984E1 +7.755910000E2,5.500200077E1 +7.758880000E2,5.358702362E1 +7.761340000E2,5.718303470E1 +7.763730000E2,5.887519420E1 +7.767050000E2,5.795457078E1 +7.769970000E2,5.796499201E1 +7.773000000E2,5.644912180E1 +7.775570000E2,5.804780214E1 +7.778740000E2,5.958528627E1 +7.781300000E2,5.635913866E1 +7.784430000E2,5.593106857E1 +7.787280000E2,6.063168213E1 +7.789960000E2,5.917208792E1 +7.792560000E2,5.719923422E1 +7.795050000E2,6.400429125E1 +7.797680000E2,5.733192807E1 +7.800440000E2,6.018331087E1 +7.803000000E2,6.350407169E1 +7.805530000E2,6.357762743E1 +7.808590000E2,6.772563953E1 +7.811430000E2,6.431848914E1 +7.814050000E2,5.710721917E1 +7.816950000E2,5.646111127E1 +7.819500000E2,5.564600214E1 +7.822050000E2,6.362802489E1 +7.824550000E2,6.278310471E1 +7.827010000E2,5.851995741E1 +7.829620000E2,5.759567059E1 +7.832630000E2,5.449669640E1 +7.835070000E2,6.040303881E1 +7.837500000E2,5.743841461E1 +7.839990000E2,6.096558185E1 +7.842840000E2,7.161293257E1 +7.845270000E2,7.417435903E1 +7.848410000E2,6.386070968E1 +7.851390000E2,6.234904760E1 +7.854350000E2,6.321731436E1 +7.856820000E2,6.294103551E1 +7.859780000E2,6.210337552E1 +7.862150000E2,6.765383904E1 +7.865650000E2,6.346682761E1 +7.868610000E2,6.221020232E1 +7.871280000E2,6.119530731E1 +7.873850000E2,5.314248269E1 +7.876880000E2,5.288680780E1 +7.879230000E2,5.064349321E1 +7.882230000E2,5.786336298E1 +7.884630000E2,5.341864841E1 +7.887250000E2,5.286568073E1 +7.890140000E2,5.272997567E1 +7.893180000E2,5.904110581E1 +7.896690000E2,5.748622391E1 +7.899200000E2,5.773986136E1 +7.902160000E2,5.480967078E1 +7.904710000E2,5.627241382E1 +7.907280000E2,5.456362797E1 +7.909900000E2,5.766408512E1 +7.912380000E2,5.413586400E1 +7.914940000E2,5.234403284E1 +7.917720000E2,5.190170354E1 +7.920440000E2,5.227759392E1 +7.923170000E2,4.410400383E1 +7.926220000E2,3.508270700E1 +7.929370000E2,3.887828085E1 +7.932030000E2,4.522069604E1 +7.934660000E2,4.928233980E1 +7.937420000E2,4.706401379E1 +7.940710000E2,4.988989997E1 +7.943700000E2,5.767827889E1 +7.946060000E2,5.506606719E1 +7.949050000E2,6.107887773E1 +7.952060000E2,5.849609892E1 +7.955030000E2,5.343173328E1 +7.957490000E2,5.007726003E1 +7.960580000E2,4.763873915E1 +7.963010000E2,5.045894898E1 +7.966040000E2,6.859700710E1 +7.968900000E2,6.734256534E1 +7.971550000E2,6.661489392E1 +7.974110000E2,6.556398865E1 +7.976580000E2,5.519705677E1 +7.979230000E2,5.503316479E1 +7.982060000E2,5.955770829E1 +7.984280000E2,5.777834711E1 +7.987260000E2,6.050467535E1 +7.989700000E2,5.583639573E1 +7.993330000E2,5.988908902E1 +7.995750000E2,5.875791040E1 +7.998670000E2,6.166637478E1 +8.001160000E2,5.690435901E1 +8.004160000E2,5.599911293E1 +8.006610000E2,5.889628547E1 +8.009180000E2,6.227540789E1 +8.011740000E2,6.572663811E1 +8.014300000E2,6.013467784E1 +8.016770000E2,6.250368579E1 +8.019910000E2,6.532292099E1 +8.023560000E2,5.377170031E1 +8.026370000E2,5.535595108E1 +8.029110000E2,5.147526495E1 +8.031720000E2,4.993046061E1 +8.034760000E2,6.394035794E1 +8.037260000E2,5.983119170E1 +8.040270000E2,5.967243802E1 +8.042930000E2,6.559340840E1 +8.046100000E2,5.262215496E1 +8.049160000E2,5.397812040E1 +8.051780000E2,5.680330381E1 +8.054740000E2,5.857171626E1 +8.058060000E2,5.577198454E1 +8.060880000E2,5.916891157E1 +8.063460000E2,6.120078548E1 +8.066060000E2,6.223167379E1 +8.069230000E2,6.161077093E1 +8.071720000E2,5.812180846E1 +8.074300000E2,5.665535607E1 +8.077230000E2,5.401482687E1 +8.079600000E2,5.631804256E1 +8.082610000E2,5.267806276E1 +8.085540000E2,5.766120113E1 +8.088100000E2,5.717509884E1 +8.091690000E2,5.698714543E1 +8.094130000E2,5.807918354E1 +8.096940000E2,5.364566959E1 +8.099320000E2,5.678502402E1 +8.102110000E2,5.494444844E1 +8.104710000E2,6.216218230E1 +8.107550000E2,5.504588420E1 +8.110030000E2,5.220186059E1 +8.112810000E2,5.338487037E1 +8.115430000E2,5.422122114E1 +8.118180000E2,6.217546099E1 +8.121430000E2,5.739027439E1 +8.124800000E2,5.218554734E1 +8.128080000E2,6.183667492E1 +8.130850000E2,6.028246668E1 +8.133620000E2,6.620979851E1 +8.135950000E2,5.810667246E1 +8.138630000E2,6.096670869E1 +8.141300000E2,5.149777407E1 +8.143960000E2,4.993954713E1 +8.146400000E2,5.196561010E1 +8.149350000E2,5.727966309E1 +8.151710000E2,5.489316784E1 +8.154100000E2,5.619291420E1 +8.157500000E2,5.425831711E1 +8.160430000E2,5.677079709E1 +8.163250000E2,5.289383275E1 +8.165600000E2,5.573749616E1 +8.168090000E2,5.211960412E1 +8.170840000E2,5.029895102E1 +8.173170000E2,5.085418245E1 +8.175630000E2,5.101392152E1 +8.178870000E2,5.228690479E1 +8.182130000E2,5.919931006E1 +8.184680000E2,5.288617356E1 +8.188320000E2,5.626269479E1 +8.191030000E2,6.124827198E1 +8.193870000E2,5.889071517E1 +8.196160000E2,5.957980623E1 +8.199180000E2,5.440069788E1 +8.201590000E2,5.524226830E1 +8.204560000E2,5.147688867E1 +8.206870000E2,5.390780082E1 +8.209820000E2,6.509870984E1 +8.212270000E2,6.421388309E1 +8.215230000E2,5.843840462E1 +8.218170000E2,5.422512027E1 +8.221280000E2,5.468614274E1 +8.223780000E2,5.922850585E1 +8.226710000E2,6.486031186E1 +8.229330000E2,6.154967201E1 +8.232420000E2,5.893257410E1 +8.235100000E2,6.020329639E1 +8.238290000E2,5.483779552E1 +8.240760000E2,5.692914998E1 +8.243280000E2,6.347347085E1 +8.245930000E2,5.345306004E1 +8.248670000E2,6.141647052E1 +8.252000000E2,5.672783001E1 +8.254550000E2,5.605661334E1 +8.257610000E2,5.699330885E1 +8.260410000E2,5.489256860E1 +8.263010000E2,6.262090025E1 +8.265830000E2,5.457719262E1 +8.268180000E2,5.416382407E1 +8.271260000E2,4.993919751E1 +8.273700000E2,5.569569056E1 +8.276330000E2,5.514364162E1 +8.278890000E2,5.653204472E1 +8.281470000E2,5.784406489E1 +8.284370000E2,5.752811490E1 +8.286720000E2,5.727510089E1 +8.289650000E2,5.900575965E1 +8.292510000E2,5.679022390E1 +8.294860000E2,5.722234118E1 +8.297350000E2,5.952638514E1 +8.300320000E2,5.925181191E1 +8.302740000E2,5.930148258E1 +8.305160000E2,5.668145507E1 +8.307730000E2,5.590492759E1 +8.310130000E2,6.302930486E1 +8.312510000E2,5.733539345E1 +8.315800000E2,5.620349253E1 +8.318910000E2,5.495250031E1 +8.322000000E2,5.501979251E1 +8.324620000E2,5.208226415E1 +8.327390000E2,5.765748383E1 +8.329950000E2,5.489193423E1 +8.332490000E2,5.593428331E1 +8.335720000E2,5.714652117E1 +8.338250000E2,5.832769426E1 +8.341370000E2,5.884156077E1 +8.344030000E2,5.840498509E1 +8.347020000E2,5.864505811E1 +8.350330000E2,6.356982434E1 +8.353340000E2,6.286445683E1 +8.355720000E2,5.657384439E1 +8.358940000E2,5.660970318E1 +8.361720000E2,5.918731584E1 +8.364160000E2,5.825788220E1 +8.366580000E2,5.592754487E1 +8.369110000E2,5.553717092E1 +8.371910000E2,5.495027293E1 +8.374510000E2,5.546329287E1 +8.377420000E2,5.746402701E1 +8.379890000E2,5.891922359E1 +8.383130000E2,6.522858798E1 +8.385710000E2,6.384617776E1 +8.388430000E2,5.435088619E1 +8.390670000E2,5.460135210E1 +8.393610000E2,5.982769627E1 +8.396020000E2,5.936265195E1 +8.398550000E2,6.034701146E1 +8.401470000E2,6.875861473E1 +8.403840000E2,6.968788985E1 +8.406760000E2,6.653493651E1 +8.409120000E2,6.664139767E1 +8.412200000E2,6.195236791E1 +8.415280000E2,5.759269564E1 +8.418110000E2,5.704906263E1 +8.420770000E2,5.199124728E1 +8.423350000E2,5.625309672E1 +8.426060000E2,5.627754144E1 +8.428710000E2,6.285304788E1 +8.431220000E2,6.089762622E1 +8.434160000E2,5.828079525E1 +8.436650000E2,5.581703965E1 +8.439650000E2,5.326092983E1 +8.442070000E2,5.247397640E1 +8.444500000E2,5.104216729E1 +8.447560000E2,4.981466747E1 +8.450730000E2,5.794387296E1 +8.453210000E2,6.103400827E1 +8.455680000E2,6.053778141E1 +8.458610000E2,5.413066164E1 +8.461240000E2,5.591468697E1 +8.463740000E2,5.289659812E1 +8.466770000E2,6.014390988E1 +8.469740000E2,5.713983843E1 +8.472340000E2,5.457406708E1 +8.474800000E2,5.848999564E1 +8.478210000E2,5.310404619E1 +8.481040000E2,5.463633704E1 +8.483620000E2,5.329096892E1 +8.486670000E2,5.667645304E1 +8.489890000E2,5.540515985E1 +8.492420000E2,5.014593999E1 +8.495060000E2,5.019949668E1 +8.497660000E2,4.724526190E1 +8.500410000E2,4.632701850E1 +8.502660000E2,4.436725745E1 +8.505710000E2,5.273585220E1 +8.508470000E2,5.232501704E1 +8.511370000E2,5.177389205E1 +8.513940000E2,5.236772038E1 +8.516560000E2,4.869019062E1 +8.518980000E2,5.254056589E1 +8.521620000E2,5.441215371E1 +8.524060000E2,5.431954181E1 +8.526720000E2,4.873515026E1 +8.529820000E2,5.253291311E1 +8.532350000E2,5.201920339E1 +8.535330000E2,5.083296820E1 +8.537750000E2,5.373650683E1 +8.540560000E2,6.162621210E1 +8.543710000E2,6.137876928E1 +8.546190000E2,6.347980201E1 +8.548850000E2,6.480134627E1 +8.551390000E2,6.344943059E1 +8.553830000E2,6.653758852E1 +8.556910000E2,6.821811094E1 +8.559900000E2,6.564040109E1 +8.562480000E2,6.310710880E1 +8.565060000E2,5.625485760E1 +8.567860000E2,5.886920329E1 +8.570590000E2,5.638007706E1 +8.573180000E2,5.477312089E1 +8.576670000E2,5.402637072E1 +8.579310000E2,5.282806817E1 +8.582400000E2,5.743205922E1 +8.584770000E2,5.608834078E1 +8.587730000E2,5.917700537E1 +8.590950000E2,5.757076232E1 +8.593390000E2,5.680975976E1 +8.596110000E2,5.316092446E1 +8.598560000E2,5.634389465E1 +8.601130000E2,5.912558361E1 +8.603880000E2,5.827706684E1 +8.606370000E2,5.580056474E1 +8.609720000E2,5.622551838E1 +8.612190000E2,5.816090597E1 +8.614650000E2,5.710633258E1 +8.617260000E2,6.762679027E1 +8.619970000E2,6.050550643E1 +8.622480000E2,6.017289530E1 +8.624960000E2,5.884551198E1 +8.627510000E2,5.823958631E1 +8.630120000E2,5.747421536E1 +8.632920000E2,5.891926612E1 +8.635810000E2,5.962176090E1 +8.638680000E2,5.932606834E1 +8.642430000E2,6.035939553E1 +8.645920000E2,5.892740034E1 +8.649090000E2,6.158225090E1 +8.651650000E2,5.941856931E1 +8.654560000E2,5.517726055E1 +8.656900000E2,5.573554393E1 +8.659400000E2,6.300977067E1 +8.662170000E2,6.346838855E1 +8.664760000E2,5.840482341E1 +8.667600000E2,5.656477763E1 +8.669980000E2,5.809371706E1 +8.672500000E2,5.957523428E1 +8.675890000E2,5.868790884E1 +8.678670000E2,6.643274765E1 +8.681530000E2,6.202304252E1 +8.684260000E2,6.167390940E1 +8.686760000E2,6.561664622E1 +8.689220000E2,6.221849135E1 +8.691620000E2,5.873701255E1 +8.694080000E2,5.721335717E1 +8.696600000E2,5.775578048E1 +8.699210000E2,6.139190630E1 +8.702060000E2,5.695582014E1 +8.705330000E2,5.285782467E1 +8.708800000E2,5.254436807E1 +8.711320000E2,5.941119733E1 +8.714840000E2,5.561687107E1 +8.717890000E2,5.226341013E1 +8.720340000E2,5.351737673E1 +8.723120000E2,5.581753669E1 +8.725450000E2,5.544476975E1 +8.727930000E2,5.112331517E1 +8.731050000E2,5.669948434E1 +8.733660000E2,5.553741274E1 +8.736450000E2,5.287392842E1 +8.738710000E2,5.342755356E1 +8.742030000E2,5.525376809E1 +8.745760000E2,5.790146612E1 +8.748470000E2,5.775550126E1 +8.750900000E2,5.828043309E1 +8.753860000E2,5.689517506E1 +8.756490000E2,5.836000549E1 +8.759170000E2,5.887049385E1 +8.761640000E2,5.731343570E1 +8.764240000E2,5.947081752E1 +8.766660000E2,5.735732777E1 +8.769150000E2,5.791222148E1 +8.771870000E2,5.217820200E1 +8.775110000E2,5.373516267E1 +8.777550000E2,5.639663701E1 +8.779960000E2,5.308435393E1 +8.782370000E2,5.327040257E1 +8.785510000E2,5.539866825E1 +8.788050000E2,5.451580533E1 +8.791100000E2,5.664888244E1 +8.793670000E2,5.439058144E1 +8.796110000E2,6.546629591E1 +8.799090000E2,6.080313073E1 +8.801560000E2,6.023654065E1 +8.804070000E2,5.547022044E1 +8.807450000E2,5.933402552E1 +8.809880000E2,6.073235462E1 +8.812850000E2,5.811897337E1 +8.815210000E2,5.670873426E1 +8.818240000E2,6.239450766E1 +8.821160000E2,6.033779387E1 +8.823610000E2,5.921328684E1 +8.826600000E2,5.808215882E1 +8.828910000E2,5.927124720E1 +8.831280000E2,5.254346564E1 +8.834120000E2,5.755316817E1 +8.837180000E2,5.815703318E1 +8.840150000E2,5.925974643E1 +8.842610000E2,5.406291788E1 +8.845520000E2,5.892672719E1 +8.847970000E2,6.343231596E1 +8.850390000E2,6.045689612E1 +8.853340000E2,5.903303339E1 +8.855810000E2,5.897514906E1 +8.858230000E2,5.682843230E1 +8.860690000E2,4.647265993E1 +8.863400000E2,5.617216143E1 +8.865730000E2,5.412892937E1 +8.869100000E2,6.210166513E1 +8.872070000E2,6.369099543E1 +8.874540000E2,6.052073025E1 +8.877480000E2,6.125108403E1 +8.879990000E2,6.087163347E1 +8.882550000E2,6.365510666E1 +8.885320000E2,5.341778352E1 +8.887600000E2,5.238943476E1 +8.890050000E2,6.378561240E1 +8.892460000E2,6.182956815E1 +8.895070000E2,6.027537659E1 +8.897770000E2,5.747996426E1 +8.901220000E2,5.606477689E1 +8.903620000E2,5.816493441E1 +8.907030000E2,5.740436721E1 +8.909540000E2,5.812990427E1 +8.912060000E2,5.757163286E1 +8.914520000E2,5.669306215E1 +8.917150000E2,5.593698617E1 +8.919580000E2,5.867011196E1 +8.922060000E2,6.001129970E1 +8.924480000E2,6.247831114E1 +8.927080000E2,5.501506807E1 +8.929550000E2,5.918039480E1 +8.932790000E2,5.750337148E1 +8.935260000E2,5.382626014E1 +8.937850000E2,5.632583646E1 +8.940370000E2,5.552393419E1 +8.943380000E2,5.417609473E1 +8.946050000E2,5.314873345E1 +8.948570000E2,5.537690953E1 +8.951790000E2,6.168371256E1 +8.954540000E2,6.142331687E1 +8.957690000E2,5.914263764E1 +8.960690000E2,6.039127428E1 +8.963670000E2,5.303465172E1 +8.966720000E2,5.819495208E1 +8.969200000E2,5.956457754E1 +8.972240000E2,5.554166388E1 +8.974940000E2,5.700583380E1 +8.978160000E2,5.525596264E1 +8.981210000E2,5.878997726E1 +8.983720000E2,5.661289659E1 +8.986510000E2,6.039909322E1 +8.988730000E2,5.569487247E1 +8.991240000E2,5.857026750E1 +8.993800000E2,6.116905404E1 +8.996580000E2,6.331625006E1 +8.998890000E2,5.612470465E1 +9.001440000E2,5.098243988E1 +9.004020000E2,5.779474181E1 +9.006650000E2,5.597754805E1 +9.009440000E2,5.706395638E1 +9.012380000E2,5.989184595E1 +9.015000000E2,5.905145002E1 +9.017620000E2,5.913397617E1 +9.020230000E2,5.831976398E1 +9.022900000E2,5.400731512E1 +9.025900000E2,6.547285797E1 +9.029050000E2,6.534571775E1 +9.032100000E2,5.428834230E1 +9.034580000E2,4.919896084E1 +9.037180000E2,5.326934205E1 +9.039740000E2,5.135684539E1 +9.042700000E2,5.784030554E1 +9.045180000E2,5.789711892E1 +9.048150000E2,5.501985460E1 +9.050680000E2,5.394185103E1 +9.053920000E2,5.504541187E1 +9.056620000E2,5.574384904E1 +9.059260000E2,5.198297704E1 +9.062920000E2,5.507423148E1 +9.065460000E2,5.073979477E1 +9.068090000E2,5.409355601E1 +9.071500000E2,5.842003605E1 +9.074380000E2,6.323761852E1 +9.076890000E2,5.475142925E1 +9.079510000E2,5.285089191E1 +9.082580000E2,6.228883476E1 +9.085110000E2,6.229139223E1 +9.087590000E2,5.849936549E1 +9.090220000E2,6.382664868E1 +9.092560000E2,5.234586511E1 +9.095720000E2,5.506613760E1 +9.098700000E2,5.883918884E1 +9.101180000E2,5.722745073E1 +9.103980000E2,6.006905181E1 +9.106670000E2,6.333821195E1 +9.109390000E2,5.997503412E1 +9.111770000E2,5.691091005E1 +9.114250000E2,5.629684565E1 +9.117070000E2,5.944947286E1 +9.119370000E2,5.757115704E1 +9.122030000E2,5.617546709E1 +9.125090000E2,5.506166951E1 +9.128480000E2,5.345826069E1 +9.131070000E2,5.586702127E1 +9.133900000E2,6.075354367E1 +9.137040000E2,5.668960998E1 +9.139920000E2,5.584388878E1 +9.142800000E2,5.668519299E1 +9.145740000E2,5.400550993E1 +9.148220000E2,5.668991412E1 +9.150670000E2,5.455006531E1 +9.153720000E2,5.750041942E1 +9.156590000E2,5.756327349E1 +9.159630000E2,5.822694927E1 +9.162110000E2,5.764545771E1 +9.164660000E2,5.716015909E1 +9.167560000E2,5.136001811E1 +9.170200000E2,4.706951064E1 +9.172710000E2,4.999131008E1 +9.175180000E2,5.619976433E1 +9.178030000E2,5.463675948E1 +9.180580000E2,4.995546642E1 +9.183000000E2,5.328928391E1 +9.185570000E2,4.808104957E1 +9.188650000E2,5.411517612E1 +9.191080000E2,5.672946344E1 +9.194270000E2,5.737096863E1 +9.196850000E2,5.974051238E1 +9.199830000E2,5.656564726E1 +9.202340000E2,5.709524531E1 +9.204810000E2,5.408385116E1 +9.208240000E2,5.414410830E1 +9.210650000E2,5.638214177E1 +9.213330000E2,5.753313030E1 +9.216130000E2,5.354803656E1 +9.219120000E2,6.191736419E1 +9.221480000E2,5.734366551E1 +9.224580000E2,5.684475304E1 +9.228030000E2,6.045431811E1 +9.230950000E2,5.973057312E1 +9.233960000E2,5.537690593E1 +9.236620000E2,5.411771801E1 +9.239600000E2,5.513839001E1 +9.242140000E2,5.699753068E1 +9.244670000E2,6.643461088E1 +9.247300000E2,6.062391899E1 +9.250330000E2,5.798096332E1 +9.253240000E2,6.347140522E1 +9.255740000E2,6.166496817E1 +9.259250000E2,6.190058171E1 +9.261820000E2,6.329204590E1 +9.264380000E2,6.389135880E1 +9.267030000E2,5.917517639E1 +9.269480000E2,5.809772267E1 +9.272170000E2,5.733235238E1 +9.274780000E2,5.226841119E1 +9.277860000E2,5.876554483E1 +9.280720000E2,6.281089568E1 +9.283510000E2,5.368859448E1 +9.286400000E2,5.449014251E1 +9.289370000E2,5.589991313E1 +9.292390000E2,5.452044152E1 +9.294860000E2,5.574135623E1 +9.297800000E2,5.656551806E1 +9.300200000E2,5.368800996E1 +9.302990000E2,5.374372369E1 +9.305490000E2,5.520696346E1 +9.308500000E2,5.642038107E1 +9.311480000E2,5.958603376E1 +9.314510000E2,5.775531382E1 +9.316980000E2,5.561486787E1 +9.319610000E2,5.826734748E1 +9.322700000E2,5.604871965E1 +9.325550000E2,5.170668645E1 +9.328670000E2,5.089285684E1 +9.331190000E2,4.724853188E1 +9.333790000E2,4.756075237E1 +9.336260000E2,5.199039629E1 +9.338890000E2,4.980140945E1 +9.341620000E2,5.530081877E1 +9.344120000E2,5.549144740E1 +9.347250000E2,5.515929093E1 +9.349780000E2,5.399104933E1 +9.352760000E2,5.325801117E1 +9.356240000E2,5.040008457E1 +9.359420000E2,5.360316460E1 +9.361890000E2,5.191591881E1 +9.364390000E2,5.324554606E1 +9.366970000E2,5.654671572E1 +9.370100000E2,5.711795620E1 +9.372590000E2,5.478625541E1 +9.375950000E2,5.667621371E1 +9.378550000E2,5.463565976E1 +9.381050000E2,5.398825590E1 +9.383580000E2,5.436030102E1 +9.386390000E2,5.091983440E1 +9.389120000E2,5.286705124E1 +9.391550000E2,5.236775571E1 +9.394300000E2,5.738794921E1 +9.397170000E2,5.727939554E1 +9.399750000E2,6.319402051E1 +9.402560000E2,5.468250624E1 +9.405530000E2,5.641852830E1 +9.408670000E2,6.200700436E1 +9.411390000E2,6.163446308E1 +9.413860000E2,7.148312536E1 +9.416340000E2,6.050927243E1 +9.419040000E2,5.667078757E1 +9.421350000E2,5.749142651E1 +9.424700000E2,5.240604485E1 +9.427760000E2,5.466454134E1 +9.430280000E2,6.082141946E1 +9.433300000E2,6.003969647E1 +9.436110000E2,6.121195378E1 +9.438460000E2,5.625129518E1 +9.441420000E2,5.911131348E1 +9.443880000E2,5.468317436E1 +9.446840000E2,6.009033853E1 +9.449440000E2,5.906624737E1 +9.452490000E2,5.464875325E1 +9.455970000E2,5.384566268E1 +9.458510000E2,5.044039840E1 +9.461140000E2,5.035886237E1 +9.463820000E2,5.734112986E1 +9.466620000E2,5.229112628E1 +9.469690000E2,6.028523542E1 +9.472250000E2,5.837101422E1 +9.475000000E2,5.619491985E1 +9.477970000E2,5.364209552E1 +9.480560000E2,5.511055516E1 +9.483560000E2,5.308396885E1 +9.486650000E2,5.587440008E1 +9.490640000E2,5.273632850E1 +9.493730000E2,6.231816715E1 +9.496570000E2,6.253734875E1 +9.499030000E2,5.554720788E1 +9.501460000E2,5.631566079E1 +9.503970000E2,5.626896653E1 +9.506490000E2,5.691941114E1 +9.508990000E2,5.116659255E1 +9.511440000E2,4.922875084E1 +9.514130000E2,5.936693495E1 +9.517070000E2,5.638156112E1 +9.520200000E2,5.180629212E1 +9.523780000E2,4.998674108E1 +9.526570000E2,4.841587788E1 +9.529100000E2,5.028896526E1 +9.531650000E2,4.965921907E1 +9.534690000E2,4.493319669E1 +9.537260000E2,4.598612712E1 +9.539740000E2,5.276251951E1 +9.542810000E2,4.126037796E1 +9.545830000E2,4.737114191E1 +9.548330000E2,4.411553821E1 +9.550850000E2,4.440050708E1 +9.553840000E2,5.260541790E1 +9.556980000E2,5.273901651E1 +9.559710000E2,5.383409632E1 +9.562220000E2,5.239354977E1 +9.564980000E2,4.759742823E1 +9.568040000E2,5.239869448E1 +9.570530000E2,5.238241691E1 +9.573300000E2,5.227349879E1 +9.575630000E2,5.272394727E1 +9.578410000E2,5.414710772E1 +9.580970000E2,5.325895305E1 +9.583410000E2,5.577122645E1 +9.586370000E2,5.015645058E1 +9.590040000E2,5.173028231E1 +9.593040000E2,5.447959265E1 +9.595640000E2,5.484713415E1 +9.598110000E2,5.470137539E1 +9.601060000E2,5.878769788E1 +9.603740000E2,5.851189839E1 +9.606810000E2,5.400762096E1 +9.609290000E2,5.749049444E1 +9.611870000E2,5.241750519E1 +9.614480000E2,4.979747952E1 +9.616960000E2,5.096881110E1 +9.620030000E2,5.149804171E1 +9.623180000E2,5.481599911E1 +9.625540000E2,5.138365056E1 +9.628240000E2,5.235851031E1 +9.630470000E2,4.871540913E1 +9.632880000E2,5.651540461E1 +9.635860000E2,5.650278128E1 +9.638210000E2,5.704973755E1 +9.641160000E2,5.757712252E1 +9.643960000E2,5.881159691E1 +9.646600000E2,5.355579494E1 +9.649750000E2,5.539751700E1 +9.652910000E2,4.797714339E1 +9.655520000E2,5.082548637E1 +9.658080000E2,5.579830605E1 +9.660780000E2,5.554406278E1 +9.663250000E2,5.354814316E1 +9.665660000E2,5.463107171E1 +9.668090000E2,5.368692433E1 +9.671300000E2,5.364867335E1 +9.674540000E2,5.468973775E1 +9.677060000E2,5.815904844E1 +9.680020000E2,5.598522308E1 +9.682480000E2,5.541083624E1 +9.685850000E2,5.512396132E1 +9.688400000E2,5.530796688E1 +9.691210000E2,5.433954611E1 +9.693810000E2,5.507440645E1 +9.696820000E2,5.086817906E1 +9.699140000E2,5.696191489E1 +9.701640000E2,5.845256581E1 +9.704420000E2,5.620226260E1 +9.706770000E2,5.629047170E1 +9.709750000E2,5.811655252E1 +9.712290000E2,5.703185419E1 +9.714900000E2,5.716734774E1 +9.718450000E2,5.493596869E1 +9.720910000E2,5.909437017E1 +9.723380000E2,5.710675060E1 +9.725910000E2,5.780279559E1 +9.728920000E2,5.860060144E1 +9.731360000E2,6.078900999E1 +9.734260000E2,5.852116194E1 +9.736640000E2,5.905899453E1 +9.739130000E2,5.636299630E1 +9.742090000E2,6.289355999E1 +9.744870000E2,6.167909115E1 +9.747290000E2,6.098057792E1 +9.750690000E2,5.906667343E1 +9.753320000E2,6.018572501E1 +9.756150000E2,5.718512970E1 +9.759100000E2,5.146063018E1 +9.761570000E2,5.733244632E1 +9.764050000E2,5.368365894E1 +9.766600000E2,5.486016267E1 +9.769150000E2,5.908582599E1 +9.771910000E2,5.733773036E1 +9.774400000E2,5.566361416E1 +9.777680000E2,5.819125256E1 +9.781220000E2,5.947694304E1 +9.783640000E2,6.140057637E1 +9.786330000E2,5.721849738E1 +9.788550000E2,5.617504209E1 +9.791010000E2,5.660293849E1 +9.793960000E2,5.174001770E1 +9.796880000E2,5.083474014E1 +9.799290000E2,5.184104339E1 +9.801850000E2,5.025385313E1 +9.804850000E2,5.286605500E1 +9.807270000E2,5.586849562E1 +9.809750000E2,5.666036754E1 +9.812950000E2,5.248500918E1 +9.815810000E2,5.416072977E1 +9.818360000E2,5.799655965E1 +9.821300000E2,5.801841935E1 +9.823770000E2,5.977514968E1 +9.826270000E2,5.676871456E1 +9.828850000E2,5.104814549E1 +9.831730000E2,5.834620153E1 +9.834010000E2,5.660640582E1 +9.836620000E2,5.686451748E1 +9.839750000E2,5.998440952E1 +9.842240000E2,5.556687478E1 +9.846000000E2,5.811069315E1 +9.848430000E2,5.843499893E1 +9.851250000E2,5.180956247E1 +9.853860000E2,5.206236639E1 +9.856480000E2,5.641840701E1 +9.859110000E2,5.518588565E1 +9.861920000E2,5.697237679E1 +9.864550000E2,5.411246614E1 +9.867510000E2,5.214533821E1 +9.869880000E2,5.642389575E1 +9.872440000E2,6.015294933E1 +9.875470000E2,5.809991100E1 +9.879150000E2,6.420044247E1 +9.881610000E2,6.042656173E1 +9.884280000E2,5.938959873E1 +9.886840000E2,6.059888233E1 +9.889870000E2,5.282749720E1 +9.892620000E2,5.638110380E1 +9.895440000E2,4.900409689E1 +9.897740000E2,4.971849802E1 +9.900320000E2,5.061428463E1 +9.903370000E2,5.829922071E1 +9.905860000E2,5.812083213E1 +9.908910000E2,5.500587720E1 +9.911860000E2,5.677481104E1 +9.914380000E2,5.502691141E1 +9.916830000E2,5.294500154E1 +9.919560000E2,5.700444986E1 +9.921770000E2,5.448756275E1 +9.924220000E2,5.785741234E1 +9.927280000E2,5.702180374E1 +9.929670000E2,6.013415875E1 +9.932080000E2,5.533496795E1 +9.934640000E2,5.695301526E1 +9.937440000E2,5.436173732E1 +9.940620000E2,5.092257074E1 +9.944480000E2,4.973000793E1 +9.946940000E2,4.871235512E1 +9.949410000E2,5.171412848E1 +9.951960000E2,5.643245777E1 +9.954520000E2,5.548819002E1 +9.957530000E2,5.694822585E1 +9.960600000E2,5.668072577E1 +9.963110000E2,5.547400320E1 +9.966010000E2,5.667137699E1 +9.968430000E2,5.866196066E1 +9.971120000E2,5.641527163E1 +9.974300000E2,5.505243365E1 +9.977140000E2,5.491253296E1 +9.979940000E2,5.642986287E1 +9.982400000E2,5.111113898E1 +9.985270000E2,5.228293633E1 +9.987770000E2,5.380023266E1 +9.990760000E2,5.259255492E1 +9.993610000E2,5.359948032E1 +9.996550000E2,5.817439497E1 +9.999080000E2,5.712087238E1 +1.000199000E3,6.016800470E1 +1.000435000E3,5.758076017E1 +1.000772000E3,5.328951429E1 +1.001047000E3,5.373102399E1 +1.001303000E3,5.905317642E1 +1.001622000E3,5.478240688E1 +1.001877000E3,5.648896451E1 +1.002173000E3,5.587033976E1 +1.002422000E3,5.995513955E1 +1.002724000E3,6.295760047E1 +1.003003000E3,5.978713154E1 +1.003261000E3,5.669754444E1 +1.003545000E3,5.577942906E1 +1.003827000E3,6.186873273E1 +1.004183000E3,6.253868639E1 +1.004493000E3,5.777226132E1 +1.004770000E3,6.482227668E1 +1.005072000E3,5.923751414E1 +1.005323000E3,5.644465637E1 +1.005601000E3,6.074750234E1 +1.005832000E3,5.683683327E1 +1.006147000E3,5.957418887E1 +1.006418000E3,6.134946851E1 +1.006713000E3,5.641852300E1 +1.006952000E3,5.637674327E1 +1.007310000E3,5.484290206E1 +1.007589000E3,6.426865013E1 +1.007886000E3,5.712036033E1 +1.008127000E3,5.768385080E1 +1.008427000E3,5.812466970E1 +1.008666000E3,6.112344783E1 +1.008973000E3,5.606588478E1 +1.009269000E3,5.809328667E1 +1.009507000E3,5.371315435E1 +1.009763000E3,5.527533595E1 +1.010003000E3,5.390597114E1 +1.010379000E3,5.652035402E1 +1.010658000E3,5.490058638E1 +1.010920000E3,5.927019017E1 +1.011197000E3,5.293113048E1 +1.011458000E3,5.179006266E1 +1.011718000E3,5.366462930E1 +1.011979000E3,5.569421827E1 +1.012229000E3,5.341899104E1 +1.012477000E3,4.863208748E1 +1.012772000E3,6.037154816E1 +1.013036000E3,5.430849576E1 +1.013284000E3,5.735938261E1 +1.013671000E3,5.526482118E1 +1.013957000E3,5.731780297E1 +1.014225000E3,5.205368153E1 +1.014486000E3,5.548863756E1 +1.014733000E3,5.265038263E1 +1.015033000E3,5.986876322E1 +1.015314000E3,5.130643680E1 +1.015590000E3,6.086878634E1 +1.015830000E3,5.798526739E1 +1.016137000E3,6.825745236E1 +1.016387000E3,5.828900876E1 +1.016655000E3,5.873097643E1 +1.017001000E3,6.454090665E1 +1.017329000E3,6.385512775E1 +1.017637000E3,6.691081911E1 +1.017938000E3,6.580217665E1 +1.018229000E3,6.485489311E1 +1.018470000E3,6.387101962E1 +1.018706000E3,6.616835921E1 +1.018997000E3,5.951737331E1 +1.019235000E3,5.386458503E1 +1.019536000E3,5.756977765E1 +1.019801000E3,5.811747841E1 +1.020064000E3,5.930001089E1 +1.020406000E3,5.469664450E1 +1.020673000E3,5.181220980E1 +1.020925000E3,5.483858346E1 +1.021232000E3,5.716842569E1 +1.021527000E3,5.738254897E1 +1.021762000E3,5.628034518E1 +1.022007000E3,5.850971228E1 +1.022258000E3,5.329919175E1 +1.022556000E3,5.482637446E1 +1.022813000E3,5.690503448E1 +1.023071000E3,5.317501594E1 +1.023336000E3,4.870888301E1 +1.023687000E3,6.132281620E1 +1.023965000E3,6.262505101E1 +1.024220000E3,6.180229149E1 +1.024496000E3,6.130993335E1 +1.024741000E3,6.231376381E1 +1.025040000E3,6.164360059E1 +1.025279000E3,5.910065798E1 +1.025533000E3,5.622173801E1 +1.025821000E3,5.290311975E1 +1.026116000E3,5.028293308E1 +1.026403000E3,5.581740437E1 +1.026664000E3,5.988277804E1 +1.027011000E3,5.730548262E1 +1.027305000E3,5.417769573E1 +1.027578000E3,5.250932185E1 +1.027819000E3,5.139919708E1 +1.028128000E3,5.061852216E1 +1.028380000E3,4.722292138E1 +1.028683000E3,5.983070917E1 +1.028956000E3,6.045269830E1 +1.029182000E3,5.777292957E1 +1.029431000E3,5.497807442E1 +1.029734000E3,5.533889528E1 +1.030063000E3,5.373558580E1 +1.030323000E3,5.600729212E1 +1.030620000E3,5.467159629E1 +1.030863000E3,5.246400101E1 +1.031110000E3,5.468037288E1 +1.031367000E3,5.850364516E1 +1.031646000E3,5.490958739E1 +1.031911000E3,5.866929845E1 +1.032210000E3,5.708288591E1 +1.032475000E3,5.498129629E1 +1.032736000E3,5.670272599E1 +1.032986000E3,5.317143219E1 +1.033315000E3,5.758413128E1 +1.033557000E3,6.361635596E1 +1.033846000E3,5.513973379E1 +1.034093000E3,5.215484095E1 +1.034399000E3,5.465926438E1 +1.034684000E3,5.588902955E1 +1.034978000E3,5.387672604E1 +1.035280000E3,5.595327755E1 +1.035543000E3,5.621513504E1 +1.035825000E3,5.991854954E1 +1.036079000E3,5.864640009E1 +1.036322000E3,6.072021936E1 +1.036666000E3,5.462749592E1 +1.036971000E3,5.329083651E1 +1.037264000E3,5.401214501E1 +1.037542000E3,5.242806591E1 +1.037843000E3,5.573267887E1 +1.038091000E3,5.224254554E1 +1.038380000E3,5.453929206E1 +1.038635000E3,5.371826859E1 +1.038891000E3,4.369246898E1 +1.039145000E3,4.547521933E1 +1.039418000E3,4.204639660E1 +1.039750000E3,4.426760298E1 +1.039990000E3,4.955659514E1 +1.040294000E3,4.960859899E1 +1.040560000E3,4.841380220E1 +1.040808000E3,4.914533708E1 +1.041104000E3,4.650609937E1 +1.041370000E3,4.849101938E1 +1.041622000E3,5.065930763E1 +1.041920000E3,4.744161935E1 +1.042161000E3,4.448519483E1 +1.042478000E3,4.726532690E1 +1.042725000E3,4.667923132E1 +1.043042000E3,4.704822757E1 +1.043307000E3,3.950691106E1 +1.043560000E3,5.249697508E1 +1.043835000E3,4.753687679E1 +1.044091000E3,4.843049138E1 +1.044350000E3,5.394643708E1 +1.044644000E3,4.769079035E1 +1.044887000E3,5.111291504E1 +1.045194000E3,5.247298633E1 +1.045445000E3,4.904344971E1 +1.045693000E3,4.405437847E1 +1.045988000E3,4.750888237E1 +1.046301000E3,4.305046000E1 +1.046518000E3,4.630901796E1 +1.046813000E3,4.756289225E1 +1.047053000E3,4.661089273E1 +1.047331000E3,6.143859736E1 +1.047566000E3,5.702483033E1 +1.047860000E3,5.015015196E1 +1.048098000E3,5.180675157E1 +1.048397000E3,4.645218330E1 +1.048640000E3,4.317726503E1 +1.048918000E3,4.962602549E1 +1.049159000E3,4.922447391E1 +1.049523000E3,4.310015818E1 +1.049767000E3,5.584844461E1 +1.050011000E3,5.550466055E1 +1.050294000E3,5.076679182E1 +1.050523000E3,4.777565498E1 +1.050776000E3,5.078379664E1 +1.051031000E3,4.412618688E1 +1.051298000E3,3.933148532E1 +1.051551000E3,4.240994962E1 +1.051799000E3,3.715036539E1 +1.052054000E3,4.541823437E1 +1.052312000E3,3.252240989E1 +1.052661000E3,4.298387800E1 +1.052922000E3,4.065675211E1 +1.053171000E3,3.851226965E1 +1.053417000E3,3.833414863E1 +1.053702000E3,3.734543870E1 +1.053967000E3,4.406198141E1 +1.054269000E3,3.397952572E1 +1.054518000E3,3.018425986E1 +1.054795000E3,2.659023927E1 +1.055055000E3,3.230579484E1 +1.055319000E3,4.027650377E1 +1.055588000E3,3.256611719E1 +1.055936000E3,3.203904394E1 +1.056189000E3,3.024692018E1 +1.056469000E3,4.044611203E1 +1.056698000E3,3.245705712E1 +1.056956000E3,5.087039919E1 +1.057201000E3,5.278557071E1 +1.057507000E3,6.996122129E1 +1.057766000E3,6.951439283E1 +1.058027000E3,6.731609209E1 +1.058291000E3,5.787293958E1 +1.058571000E3,5.774874245E1 +1.058801000E3,5.291748766E1 +1.059132000E3,4.352220528E1 +1.059391000E3,5.556254729E1 +1.059665000E3,5.339220405E1 +1.059951000E3,5.593145301E1 +1.060235000E3,5.299996372E1 +1.060492000E3,4.882317894E1 +1.060733000E3,3.790707311E1 +1.060975000E3,3.470192076E1 +1.061278000E3,4.481563830E1 +1.061519000E3,4.823008935E1 +1.061816000E3,4.719850269E1 +1.062076000E3,4.706381680E1 +1.062331000E3,4.530378435E1 +1.062576000E3,3.456809562E1 +1.062882000E3,3.742453964E1 +1.063154000E3,3.905594906E1 +1.063397000E3,3.672857244E1 +1.063694000E3,2.941779164E1 +1.063926000E3,2.995931983E1 +1.064168000E3,3.455311118E1 +1.064461000E3,3.254662869E1 +1.064708000E3,3.652583843E1 +1.065001000E3,5.229424666E1 +1.065352000E3,5.178814165E1 +1.065606000E3,4.798098259E1 +1.065854000E3,3.636652329E1 +1.066121000E3,4.558252535E1 +1.066366000E3,3.902840121E1 +1.066629000E3,3.106435508E1 +1.066887000E3,2.541330464E1 +1.067179000E3,3.474902335E1 +1.067449000E3,4.492275189E1 +1.067698000E3,3.860211372E1 +1.067955000E3,4.332670525E1 +1.068251000E3,5.147667691E1 +1.068546000E3,5.152069997E1 +1.068797000E3,4.540650098E1 +1.069105000E3,4.486446450E1 +1.069378000E3,4.196481867E1 +1.069632000E3,4.863200791E1 +1.069908000E3,3.878967071E1 +1.070151000E3,3.630888030E1 +1.070413000E3,2.964429880E1 +1.070682000E3,3.354707636E1 +1.070956000E3,4.008490969E1 +1.071248000E3,3.576577653E1 +1.071553000E3,4.349754488E1 +1.071886000E3,3.824859907E1 +1.072130000E3,3.455877689E1 +1.072406000E3,3.622999465E1 +1.072717000E3,3.637608237E1 +1.072984000E3,3.645219519E1 +1.073255000E3,4.353729148E1 +1.073603000E3,4.287473251E1 +1.073856000E3,4.842203791E1 +1.074097000E3,4.484407311E1 +1.074356000E3,4.397007110E1 +1.074628000E3,4.695884235E1 +1.074931000E3,4.627189963E1 +1.075264000E3,4.689571524E1 +1.075614000E3,5.203841291E1 +1.075923000E3,4.610184941E1 +1.076163000E3,4.404432471E1 +1.076475000E3,4.923215011E1 +1.076765000E3,4.466142180E1 +1.077062000E3,4.987282715E1 +1.077375000E3,4.461839454E1 +1.077687000E3,5.085403766E1 +1.077991000E3,4.674512295E1 +1.078232000E3,5.167180279E1 +1.078544000E3,4.780582457E1 +1.078939000E3,4.593914406E1 +1.079187000E3,4.061652220E1 +1.079434000E3,4.347669045E1 +1.079712000E3,4.326983820E1 +1.079966000E3,3.511950991E1 +1.080260000E3,4.755279745E1 +1.080506000E3,4.756343862E1 +1.080756000E3,4.779732167E1 +1.081049000E3,4.991962747E1 +1.081293000E3,5.213887128E1 +1.081586000E3,5.357624469E1 +1.081916000E3,5.141456645E1 +1.082165000E3,5.036532462E1 +1.082460000E3,4.962769973E1 +1.082696000E3,4.506404490E1 +1.082988000E3,4.537987312E1 +1.083220000E3,4.738457007E1 +1.083529000E3,4.698711193E1 +1.083769000E3,4.571430081E1 +1.084079000E3,4.980908007E1 +1.084324000E3,5.082282040E1 +1.084590000E3,5.406004268E1 +1.084876000E3,5.436375886E1 +1.085258000E3,5.361506257E1 +1.085509000E3,5.202937925E1 +1.085815000E3,5.324976969E1 +1.086057000E3,5.371445731E1 +1.086301000E3,5.282162917E1 +1.086550000E3,5.221281857E1 +1.086802000E3,5.263727375E1 +1.087126000E3,5.703022139E1 +1.087384000E3,5.519432869E1 +1.087646000E3,5.426647490E1 +1.087939000E3,5.407342864E1 +1.088175000E3,5.235924404E1 +1.088520000E3,4.681002832E1 +1.088812000E3,4.891237586E1 +1.089076000E3,4.699020733E1 +1.089350000E3,4.902871382E1 +1.089591000E3,5.078145117E1 +1.089837000E3,5.041791921E1 +1.090133000E3,4.603650794E1 +1.090430000E3,4.871755485E1 +1.090660000E3,5.111421073E1 +1.090911000E3,4.581894631E1 +1.091248000E3,4.988189917E1 +1.091630000E3,5.341365920E1 +1.091902000E3,4.962858025E1 +1.092183000E3,4.315344358E1 +1.092440000E3,4.664431132E1 +1.092683000E3,4.616459192E1 +1.092923000E3,4.765071496E1 +1.093171000E3,4.163360687E1 +1.093473000E3,4.537777608E1 +1.093714000E3,4.783603025E1 +1.094007000E3,4.845414260E1 +1.094261000E3,4.799870549E1 +1.094499000E3,4.651309815E1 +1.094792000E3,5.003648984E1 +1.095123000E3,5.202534254E1 +1.095372000E3,5.709400077E1 +1.095625000E3,5.694079106E1 +1.095896000E3,5.715452089E1 +1.096196000E3,5.523378380E1 +1.096438000E3,5.375558627E1 +1.096737000E3,5.665208041E1 +1.096991000E3,5.314654737E1 +1.097292000E3,5.142447849E1 +1.097557000E3,5.330628285E1 +1.097827000E3,5.512040694E1 +1.098167000E3,5.399583122E1 +1.098472000E3,5.540663813E1 +1.098720000E3,5.200546986E1 +1.098960000E3,4.676140326E1 +1.099243000E3,4.798657093E1 +1.099544000E3,4.841724285E1 +1.099804000E3,5.642371618E1 +1.100109000E3,5.409000726E1 +1.100381000E3,5.348646719E1 +1.100630000E3,5.346537578E1 +1.100927000E3,5.422782845E1 +1.101164000E3,5.395323822E1 +1.101495000E3,5.383967560E1 +1.101763000E3,5.667828538E1 +1.102044000E3,4.764690784E1 +1.102307000E3,5.353530254E1 +1.102613000E3,5.568430762E1 +1.102906000E3,5.431580275E1 +1.103147000E3,5.193331555E1 +1.103441000E3,5.040945762E1 +1.103677000E3,5.333005838E1 +1.103968000E3,4.947534745E1 +1.104272000E3,5.306270968E1 +1.104564000E3,5.537230515E1 +1.104799000E3,4.876041085E1 +1.105069000E3,5.109409535E1 +1.105330000E3,5.087734214E1 +1.105587000E3,5.225642483E1 +1.105838000E3,5.176680091E1 +1.106135000E3,5.535939212E1 +1.106380000E3,5.666892185E1 +1.106622000E3,5.658846562E1 +1.106895000E3,5.577897889E1 +1.107150000E3,5.157178717E1 +1.107431000E3,5.284488409E1 +1.107756000E3,5.415639955E1 +1.108002000E3,5.465643057E1 +1.108313000E3,4.654328988E1 +1.108563000E3,5.038890380E1 +1.108811000E3,4.602751738E1 +1.109073000E3,4.801243396E1 +1.109375000E3,4.782472616E1 +1.109667000E3,4.666447221E1 +1.109943000E3,5.156469126E1 +1.110192000E3,4.949682888E1 +1.110448000E3,4.919673339E1 +1.110752000E3,4.862521519E1 +1.111045000E3,5.122379655E1 +1.111295000E3,4.813892217E1 +1.111515000E3,4.901611396E1 +1.111761000E3,4.905664967E1 +1.112005000E3,4.647618514E1 +1.112265000E3,4.730688076E1 +1.112537000E3,5.039121351E1 +1.112793000E3,4.985611957E1 +1.113101000E3,5.474563863E1 +1.113387000E3,5.028870882E1 +1.113678000E3,5.073784750E1 +1.113952000E3,4.995138555E1 +1.114291000E3,4.790039203E1 +1.114554000E3,4.764335594E1 +1.114849000E3,5.057104591E1 +1.115096000E3,5.107398730E1 +1.115401000E3,4.800391913E1 +1.115672000E3,4.553282874E1 +1.115895000E3,4.569523337E1 +1.116194000E3,4.480844215E1 +1.116425000E3,4.772339962E1 +1.116664000E3,5.255452638E1 +1.116906000E3,4.927433934E1 +1.117202000E3,4.871369865E1 +1.117530000E3,4.928110420E1 +1.117840000E3,5.705383563E1 +1.118146000E3,4.880674861E1 +1.118418000E3,5.038180726E1 +1.118687000E3,5.145980404E1 +1.118950000E3,5.338008269E1 +1.119227000E3,5.227728425E1 +1.119468000E3,5.450689216E1 +1.119736000E3,5.844246451E1 +1.120049000E3,5.459398611E1 +1.120351000E3,5.526423567E1 +1.120605000E3,5.228963309E1 +1.120918000E3,5.598288902E1 +1.121182000E3,5.280889802E1 +1.121489000E3,4.974717420E1 +1.121729000E3,5.137523152E1 +1.121978000E3,5.052356297E1 +1.122235000E3,5.240368249E1 +1.122503000E3,4.826380791E1 +1.122775000E3,5.095403791E1 +1.123036000E3,5.799909934E1 +1.123291000E3,4.889512711E1 +1.123587000E3,5.622808486E1 +1.123874000E3,5.230369090E1 +1.124235000E3,5.081102316E1 +1.124544000E3,5.628773803E1 +1.124826000E3,5.810547372E1 +1.125153000E3,5.508029719E1 +1.125432000E3,5.576573503E1 +1.125722000E3,5.346022180E1 +1.125978000E3,5.279748306E1 +1.126234000E3,5.604802053E1 +1.126502000E3,5.937326657E1 +1.126804000E3,5.703447215E1 +1.127047000E3,5.520354594E1 +1.127314000E3,5.551787326E1 +1.127554000E3,5.740837773E1 +1.127843000E3,5.663015330E1 +1.128135000E3,5.649615150E1 +1.128380000E3,5.731556257E1 +1.128677000E3,6.079986861E1 +1.128914000E3,5.820128856E1 +1.129207000E3,6.091746513E1 +1.129442000E3,6.126941240E1 +1.129745000E3,4.541170906E1 +1.129980000E3,4.341485096E1 +1.130277000E3,4.833777967E1 +1.130573000E3,4.472710223E1 +1.130815000E3,5.059675199E1 +1.131062000E3,3.863826940E1 +1.131353000E3,4.925455740E1 +1.131589000E3,4.859989956E1 +1.131881000E3,5.113067908E1 +1.132117000E3,5.054542106E1 +1.132418000E3,4.827479925E1 +1.132654000E3,4.610884488E1 +1.132948000E3,4.879734536E1 +1.133241000E3,5.074680390E1 +1.133563000E3,5.119298220E1 +1.133864000E3,4.861265792E1 +1.134166000E3,5.001512903E1 +1.134452000E3,5.059053464E1 +1.134716000E3,4.999839479E1 +1.134967000E3,4.960069086E1 +1.135222000E3,5.320256888E1 +1.135494000E3,5.604818163E1 +1.135742000E3,5.625768045E1 +1.135999000E3,5.261645024E1 +1.136244000E3,5.105081932E1 +1.136501000E3,5.616444939E1 +1.136847000E3,5.624064264E1 +1.137105000E3,5.654097446E1 +1.137391000E3,5.807884104E1 +1.137717000E3,5.436169891E1 +1.137970000E3,5.763959225E1 +1.138239000E3,5.465216875E1 +1.138486000E3,5.094509116E1 +1.138731000E3,5.425415233E1 +1.138977000E3,5.143709697E1 +1.139259000E3,5.032545705E1 +1.139527000E3,5.906031130E1 +1.139800000E3,5.308709054E1 +1.140168000E3,5.407062541E1 +1.140423000E3,5.585261351E1 +1.140694000E3,5.463535881E1 +1.140949000E3,5.407603664E1 +1.141230000E3,5.495767686E1 +1.141512000E3,5.639433741E1 +1.141818000E3,5.555715330E1 +1.142072000E3,5.729232944E1 +1.142323000E3,5.553013253E1 +1.142578000E3,5.648251207E1 +1.142844000E3,5.786931075E1 +1.143143000E3,6.007493220E1 +1.143523000E3,5.752076543E1 +1.143836000E3,5.573324560E1 +1.144090000E3,5.641950784E1 +1.144396000E3,5.532270625E1 +1.144644000E3,5.561239732E1 +1.144940000E3,5.206707456E1 +1.145212000E3,5.092140902E1 +1.145511000E3,5.452891649E1 +1.145770000E3,5.331137977E1 +1.146042000E3,5.366568195E1 +1.146338000E3,5.227174013E1 +1.146650000E3,5.423955559E1 +1.146934000E3,5.781916580E1 +1.147218000E3,5.532962824E1 +1.147467000E3,5.502661676E1 +1.147687000E3,5.823979674E1 +1.147961000E3,5.538066560E1 +1.148276000E3,5.423260060E1 +1.148528000E3,5.197461977E1 +1.148799000E3,5.154724487E1 +1.149057000E3,5.473685923E1 +1.149367000E3,5.647867848E1 +1.149660000E3,5.489455072E1 +1.150037000E3,6.072892064E1 +1.150335000E3,5.543869835E1 +1.150594000E3,5.667713742E1 +1.150870000E3,5.818755157E1 +1.151164000E3,5.210849760E1 +1.151411000E3,5.095671455E1 +1.151703000E3,5.254983272E1 +1.152002000E3,5.585064224E1 +1.152253000E3,5.739007574E1 +1.152582000E3,5.895179917E1 +1.152860000E3,5.461317681E1 +1.153122000E3,5.345759293E1 +1.153381000E3,5.267971619E1 +1.153684000E3,6.006602205E1 +1.153986000E3,5.573552061E1 +1.154286000E3,5.518963618E1 +1.154531000E3,5.342922095E1 +1.154792000E3,5.257536969E1 +1.155139000E3,4.887945516E1 +1.155435000E3,4.702411688E1 +1.155680000E3,4.867646616E1 +1.155978000E3,4.811861077E1 +1.156361000E3,4.915586406E1 +1.156670000E3,5.033026069E1 +1.156976000E3,5.393908378E1 +1.157274000E3,5.295128205E1 +1.157524000E3,5.249671789E1 +1.157816000E3,5.314344994E1 +1.158052000E3,5.237342933E1 +1.158353000E3,5.300284286E1 +1.158590000E3,5.170068449E1 +1.158867000E3,5.174146304E1 +1.159147000E3,4.929588783E1 +1.159411000E3,5.699090425E1 +1.159752000E3,5.266690351E1 +1.160068000E3,5.746767577E1 +1.160360000E3,5.375850846E1 +1.160640000E3,5.373794020E1 +1.160985000E3,5.304914530E1 +1.161280000E3,5.198754593E1 +1.161525000E3,5.019848207E1 +1.161766000E3,5.164623609E1 +1.162020000E3,5.363319210E1 +1.162324000E3,5.439011044E1 +1.162564000E3,5.304648945E1 +1.162816000E3,5.174573718E1 +1.163177000E3,4.505755779E1 +1.163462000E3,4.894753105E1 +1.163738000E3,5.064933943E1 +1.164013000E3,5.245879056E1 +1.164255000E3,5.017914517E1 +1.164568000E3,5.189205429E1 +1.164823000E3,5.038961444E1 +1.165052000E3,5.072118593E1 +1.165297000E3,4.831662547E1 +1.165552000E3,5.050204887E1 +1.165808000E3,5.308107982E1 +1.166062000E3,4.878509871E1 +1.166392000E3,5.002605106E1 +1.166654000E3,5.320265697E1 +1.166911000E3,4.403273534E1 +1.167180000E3,5.161386051E1 +1.167455000E3,4.986209571E1 +1.167692000E3,4.993305836E1 +1.167973000E3,5.173621365E1 +1.168216000E3,5.385559129E1 +1.168491000E3,5.543019156E1 +1.168757000E3,5.019966657E1 +1.169035000E3,5.569516326E1 +1.169296000E3,5.216419082E1 +1.169676000E3,5.398731996E1 +1.169933000E3,5.465625282E1 +1.170197000E3,5.451774184E1 +1.170449000E3,5.328129322E1 +1.170705000E3,5.452639907E1 +1.170963000E3,5.713735254E1 +1.171272000E3,5.551413923E1 +1.171528000E3,5.604966001E1 +1.171779000E3,5.340478404E1 +1.172038000E3,5.107817821E1 +1.172291000E3,5.218990306E1 +1.172602000E3,4.830451720E1 +1.172964000E3,5.276802164E1 +1.173245000E3,5.191204687E1 +1.173527000E3,5.337367972E1 +1.173838000E3,5.462664550E1 +1.174090000E3,5.304724513E1 +1.174379000E3,5.193251440E1 +1.174628000E3,5.283915893E1 +1.174936000E3,5.036641160E1 +1.175236000E3,4.890810708E1 +1.175487000E3,4.805298565E1 +1.175750000E3,5.067335741E1 +1.176019000E3,4.961207397E1 +1.176335000E3,4.820862314E1 +1.176634000E3,5.328684116E1 +1.176883000E3,5.122009001E1 +1.177165000E3,5.878687770E1 +1.177412000E3,5.487235950E1 +1.177709000E3,5.224569426E1 +1.178006000E3,5.403405997E1 +1.178246000E3,5.388661901E1 +1.178490000E3,5.237426881E1 +1.178734000E3,5.372043820E1 +1.179050000E3,5.471170909E1 +1.179387000E3,5.129350436E1 +1.179686000E3,4.660070824E1 +1.179916000E3,4.541361068E1 +1.180159000E3,4.365576113E1 +1.180466000E3,4.771103553E1 +1.180756000E3,4.863237791E1 +1.181008000E3,5.534959697E1 +1.181314000E3,5.376444060E1 +1.181609000E3,5.130885425E1 +1.181851000E3,5.256948786E1 +1.182151000E3,5.321964637E1 +1.182393000E3,5.074776981E1 +1.182622000E3,4.979941250E1 +1.182873000E3,5.445637667E1 +1.183116000E3,4.449721128E1 +1.183420000E3,5.086906199E1 +1.183676000E3,5.067998506E1 +1.183927000E3,5.352019181E1 +1.184219000E3,4.851971310E1 +1.184517000E3,5.123853013E1 +1.184764000E3,5.278221141E1 +1.185010000E3,5.126409245E1 +1.185297000E3,5.249182764E1 +1.185665000E3,5.346599478E1 +1.185972000E3,5.052250297E1 +1.186225000E3,5.389354916E1 +1.186534000E3,5.372737626E1 +1.186796000E3,5.415645782E1 +1.187048000E3,5.441424865E1 +1.187317000E3,5.470553815E1 +1.187622000E3,5.559990781E1 +1.187913000E3,5.619293356E1 +1.188186000E3,4.869472445E1 +1.188442000E3,5.069948923E1 +1.188718000E3,5.296813397E1 +1.189051000E3,5.015003063E1 +1.189308000E3,5.110938827E1 +1.189570000E3,5.250182053E1 +1.189815000E3,5.240850659E1 +1.190062000E3,5.446862868E1 +1.190368000E3,5.270463767E1 +1.190629000E3,5.117539458E1 +1.190931000E3,5.543767536E1 +1.191207000E3,5.348622922E1 +1.191505000E3,5.112152946E1 +1.191761000E3,4.905277341E1 +1.192068000E3,5.456405848E1 +1.192487000E3,5.016322677E1 +1.192732000E3,4.971711263E1 +1.192976000E3,5.396031961E1 +1.193258000E3,5.018645567E1 +1.193531000E3,4.895586707E1 +1.193790000E3,5.442023654E1 +1.194055000E3,5.160697029E1 +1.194326000E3,4.822365107E1 +1.194605000E3,5.396633777E1 +1.194903000E3,5.031021734E1 +1.195141000E3,5.278015326E1 +1.195431000E3,4.949576105E1 +1.195801000E3,5.244682833E1 +1.196076000E3,5.508575727E1 +1.196371000E3,5.161802747E1 +1.196603000E3,5.716896987E1 +1.196858000E3,5.210002974E1 +1.197207000E3,5.483594793E1 +1.197503000E3,5.204828926E1 +1.197774000E3,5.339169315E1 +1.198054000E3,4.934781945E1 +1.198312000E3,5.918797425E1 +1.198559000E3,5.025254784E1 +1.198808000E3,5.317746302E1 +1.199152000E3,5.656715516E1 +1.199464000E3,5.448426177E1 +1.199717000E3,5.419526565E1 +1.199961000E3,5.304156540E1 +1.200219000E3,4.961182292E1 +1.200480000E3,5.259766625E1 +1.200730000E3,5.295115767E1 +1.201029000E3,5.365389524E1 +1.201288000E3,5.465027972E1 +1.201538000E3,5.131261505E1 +1.201807000E3,5.767453751E1 +1.202112000E3,5.316006082E1 +1.202485000E3,5.263333972E1 +1.202739000E3,4.966297173E1 +1.203041000E3,5.282706501E1 +1.203300000E3,4.950274237E1 +1.203539000E3,4.377779375E1 +1.203832000E3,5.274682795E1 +1.204077000E3,5.348405653E1 +1.204320000E3,5.647600154E1 +1.204615000E3,4.835002395E1 +1.204854000E3,4.440243109E1 +1.205149000E3,4.673035253E1 +1.205410000E3,4.901106802E1 +1.205666000E3,5.311033159E1 +1.205952000E3,5.020567211E1 +1.206248000E3,5.046889058E1 +1.206545000E3,6.150607502E1 +1.206779000E3,5.260331634E1 +1.207093000E3,5.183291791E1 +1.207367000E3,4.957331060E1 +1.207610000E3,5.139200370E1 +1.207857000E3,5.005726187E1 +1.208158000E3,4.979521937E1 +1.208398000E3,5.178137337E1 +1.208738000E3,4.632694184E1 +1.208994000E3,4.836915777E1 +1.209279000E3,4.869228435E1 +1.209528000E3,5.096507040E1 +1.209784000E3,4.718590489E1 +1.210053000E3,4.835967114E1 +1.210281000E3,4.725223201E1 +1.210542000E3,5.172958855E1 +1.210823000E3,5.546336112E1 +1.211051000E3,5.448218663E1 +1.211300000E3,5.371995163E1 +1.211551000E3,4.887559574E1 +1.211926000E3,4.975732945E1 +1.212205000E3,5.041543230E1 +1.212482000E3,4.863959509E1 +1.212730000E3,5.047232348E1 +1.212990000E3,4.824384094E1 +1.213232000E3,5.039377586E1 +1.213493000E3,4.517891187E1 +1.213814000E3,4.686032989E1 +1.214062000E3,4.852263494E1 +1.214337000E3,4.897277606E1 +1.214586000E3,4.662047985E1 +1.214832000E3,5.483925472E1 +1.215143000E3,5.677489998E1 +1.215372000E3,5.470688254E1 +1.215664000E3,5.408747991E1 +1.215962000E3,5.167832591E1 +1.216227000E3,5.463116224E1 +1.216504000E3,5.335564969E1 +1.216747000E3,4.832376612E1 +1.216996000E3,4.918538596E1 +1.217306000E3,5.329611015E1 +1.217618000E3,5.364881155E1 +1.217885000E3,5.087209115E1 +1.218149000E3,4.967310650E1 +1.218497000E3,4.842689624E1 +1.218801000E3,5.442588779E1 +1.219043000E3,5.338467746E1 +1.219349000E3,5.187371665E1 +1.219600000E3,4.992515182E1 +1.219883000E3,5.205809257E1 +1.220161000E3,5.374364962E1 +1.220471000E3,5.145920034E1 +1.220752000E3,5.112774200E1 +1.221009000E3,4.969936214E1 +1.221258000E3,4.906585252E1 +1.221519000E3,4.971022706E1 +1.221873000E3,5.039216656E1 +1.222125000E3,4.735018859E1 +1.222388000E3,5.025223930E1 +1.222647000E3,5.349102952E1 +1.222903000E3,5.894430216E1 +1.223210000E3,5.133834742E1 +1.223464000E3,5.378681025E1 +1.223708000E3,5.646161983E1 +1.223949000E3,5.127610878E1 +1.224189000E3,5.295211205E1 +1.224441000E3,5.074229414E1 +1.224698000E3,5.428527885E1 +1.225064000E3,6.064230054E1 +1.225333000E3,5.545461106E1 +1.225591000E3,5.085263163E1 +1.225847000E3,4.867332677E1 +1.226137000E3,4.828036819E1 +1.226394000E3,5.187031217E1 +1.226668000E3,4.691949774E1 +1.226931000E3,4.605300024E1 +1.227219000E3,4.319091646E1 +1.227493000E3,4.827268256E1 +1.227791000E3,4.873371181E1 +1.228031000E3,4.895629331E1 +1.228388000E3,4.831306026E1 +1.228651000E3,5.150144778E1 +1.228942000E3,5.210555115E1 +1.229190000E3,4.868630793E1 +1.229442000E3,5.072280558E1 +1.229686000E3,5.520857657E1 +1.229933000E3,5.597505745E1 +1.230228000E3,5.309096620E1 +1.230467000E3,5.340491117E1 +1.230765000E3,4.966814228E1 +1.231012000E3,4.811713105E1 +1.231316000E3,5.037869561E1 +1.231666000E3,4.768651081E1 +1.231948000E3,4.577834304E1 +1.232207000E3,4.455407567E1 +1.232510000E3,5.091422235E1 +1.232802000E3,4.990562511E1 +1.233047000E3,5.178152081E1 +1.233344000E3,5.312014577E1 +1.233592000E3,5.002236071E1 +1.233892000E3,5.158473192E1 +1.234173000E3,4.692863129E1 +1.234463000E3,4.643331531E1 +1.234792000E3,4.659156592E1 +1.235060000E3,4.662718910E1 +1.235313000E3,5.204491267E1 +1.235577000E3,5.165973487E1 +1.235837000E3,4.753691687E1 +1.236124000E3,5.179615379E1 +1.236401000E3,4.807409380E1 +1.236654000E3,5.474790946E1 +1.236923000E3,4.946475170E1 +1.237180000E3,4.949471083E1 +1.237426000E3,4.669168363E1 +1.237743000E3,5.529942944E1 +1.238061000E3,5.997488643E1 +1.238363000E3,5.302222406E1 +1.238611000E3,5.022506453E1 +1.238856000E3,4.864145193E1 +1.239102000E3,5.299123845E1 +1.239357000E3,4.682866815E1 +1.239657000E3,4.770894983E1 +1.239902000E3,4.813746372E1 +1.240150000E3,4.571771059E1 +1.240465000E3,5.354012247E1 +1.240765000E3,5.830707734E1 +1.241013000E3,5.483189048E1 +1.241344000E3,5.157405593E1 +1.241606000E3,5.072581437E1 +1.241868000E3,5.137979859E1 +1.242133000E3,4.849261303E1 +1.242396000E3,5.556107710E1 +1.242656000E3,4.958779284E1 +1.242959000E3,5.301548021E1 +1.243232000E3,5.475621292E1 +1.243501000E3,5.660789219E1 +1.243755000E3,5.350018163E1 +1.244010000E3,5.415674835E1 +1.244349000E3,5.699979568E1 +1.244717000E3,5.660044844E1 +1.245015000E3,5.808533709E1 +1.245259000E3,5.881859790E1 +1.245558000E3,5.728882886E1 +1.245808000E3,6.044308225E1 +1.246079000E3,5.893900513E1 +1.246326000E3,5.279872381E1 +1.246637000E3,5.769196864E1 +1.246935000E3,5.963088900E1 +1.247181000E3,5.367341836E1 +1.247508000E3,4.963645506E1 +1.247848000E3,5.265770489E1 +1.248115000E3,5.355743381E1 +1.248359000E3,4.891015342E1 +1.248659000E3,4.819353582E1 +1.248902000E3,4.966403220E1 +1.249199000E3,4.977495696E1 +1.249449000E3,5.715212626E1 +1.249708000E3,5.458337902E1 +1.249983000E3,4.910795823E1 +1.250282000E3,5.184902745E1 +1.250527000E3,5.416053460E1 +1.250777000E3,5.320773170E1 +1.251084000E3,5.422274265E1 +1.251342000E3,5.429456299E1 +1.251602000E3,5.910733722E1 +1.251866000E3,5.226490816E1 +1.252178000E3,5.191466859E1 +1.252452000E3,5.143339371E1 +1.252681000E3,5.066846779E1 +1.252975000E3,4.928639562E1 +1.253256000E3,4.916995298E1 +1.253528000E3,5.115941927E1 +1.253816000E3,4.850268402E1 +1.254063000E3,5.682920937E1 +1.254418000E3,5.583927157E1 +1.254700000E3,5.243405901E1 +1.254947000E3,5.411796563E1 +1.255215000E3,5.538314624E1 +1.255487000E3,5.447026824E1 +1.255748000E3,5.115232974E1 +1.256046000E3,5.273125350E1 +1.256281000E3,5.501639825E1 +1.256559000E3,5.470702619E1 +1.256867000E3,5.330168249E1 +1.257116000E3,5.680033697E1 +1.257361000E3,5.088137081E1 +1.257690000E3,4.771044205E1 +1.257935000E3,5.556188303E1 +1.258189000E3,5.821474305E1 +1.258460000E3,5.913083175E1 +1.258757000E3,5.624840253E1 +1.259001000E3,5.575040009E1 +1.259294000E3,5.295140054E1 +1.259581000E3,5.547885633E1 +1.259831000E3,5.659634167E1 +1.260084000E3,5.552607398E1 +1.260378000E3,5.399987136E1 +1.260676000E3,5.741946227E1 +1.260997000E3,5.622829253E1 +1.261272000E3,5.638519080E1 +1.261569000E3,5.222122782E1 +1.261810000E3,5.168558616E1 +1.262055000E3,5.937417075E1 +1.262351000E3,5.419990938E1 +1.262597000E3,5.469291977E1 +1.262893000E3,5.501007253E1 +1.263142000E3,5.356116387E1 +1.263421000E3,5.643294047E1 +1.263644000E3,5.627927149E1 +1.263964000E3,5.547827797E1 +1.264255000E3,5.434029164E1 +1.264552000E3,5.355134450E1 +1.264791000E3,5.268456483E1 +1.265090000E3,5.304298782E1 +1.265342000E3,5.292557941E1 +1.265637000E3,5.267823535E1 +1.265885000E3,5.076475521E1 +1.266186000E3,5.470463807E1 +1.266480000E3,5.369531663E1 +1.266727000E3,5.321314382E1 +1.267074000E3,5.430022488E1 +1.267386000E3,5.498366079E1 +1.267650000E3,5.373765381E1 +1.267926000E3,5.631680810E1 +1.268156000E3,5.314598601E1 +1.268459000E3,5.446778700E1 +1.268718000E3,5.461487175E1 +1.269029000E3,4.723979401E1 +1.269322000E3,5.050485841E1 +1.269602000E3,5.263446338E1 +1.269914000E3,5.195043172E1 +1.270180000E3,5.361139844E1 +1.270542000E3,5.127785292E1 +1.270796000E3,5.111084292E1 +1.271061000E3,5.030178225E1 +1.271329000E3,4.978955516E1 +1.271616000E3,5.398913319E1 +1.271862000E3,5.537806166E1 +1.272155000E3,5.301545016E1 +1.272407000E3,5.450597504E1 +1.272651000E3,5.090153644E1 +1.272906000E3,5.335437953E1 +1.273148000E3,4.673762491E1 +1.273392000E3,5.062539325E1 +1.273710000E3,5.110756444E1 +1.273960000E3,5.466659884E1 +1.274217000E3,5.158121780E1 +1.274511000E3,5.575560452E1 +1.274759000E3,5.536976579E1 +1.275054000E3,5.425250328E1 +1.275298000E3,5.448034930E1 +1.275544000E3,5.185016662E1 +1.275828000E3,5.206320816E1 +1.276126000E3,5.118466074E1 +1.276376000E3,4.943928704E1 +1.276707000E3,5.090592254E1 +1.276972000E3,5.767487174E1 +1.277251000E3,5.481331862E1 +1.277544000E3,5.385854096E1 +1.277810000E3,5.179333541E1 +1.278097000E3,5.161992279E1 +1.278344000E3,5.248655937E1 +1.278657000E3,5.064236034E1 +1.278927000E3,4.915402835E1 +1.279197000E3,5.321156971E1 +1.279471000E3,5.438812541E1 +1.279734000E3,5.482588411E1 +1.280065000E3,5.157318203E1 +1.280296000E3,5.173449962E1 +1.280546000E3,5.465953878E1 +1.280843000E3,5.457680704E1 +1.281077000E3,5.562152963E1 +1.281325000E3,5.460406982E1 +1.281570000E3,5.232421403E1 +1.281870000E3,5.207576719E1 +1.282135000E3,4.968186040E1 +1.282378000E3,5.237915347E1 +1.282628000E3,4.745539727E1 +1.282877000E3,5.255989147E1 +1.283195000E3,5.301690658E1 +1.283467000E3,5.283539029E1 +1.283717000E3,5.083105477E1 +1.283978000E3,4.559322742E1 +1.284235000E3,4.934435088E1 +1.284538000E3,5.265118466E1 +1.284812000E3,5.302155906E1 +1.285045000E3,5.294725202E1 +1.285352000E3,5.129236762E1 +1.285646000E3,5.402858483E1 +1.285898000E3,5.434527110E1 +1.286189000E3,5.525625388E1 +1.286515000E3,5.653073998E1 +1.286819000E3,5.704731902E1 +1.287101000E3,5.310035962E1 +1.287387000E3,5.474072190E1 +1.287649000E3,5.496979063E1 +1.287925000E3,5.528941101E1 +1.288193000E3,5.394330028E1 +1.288492000E3,4.829171318E1 +1.288740000E3,5.076324605E1 +1.289004000E3,4.673843249E1 +1.289280000E3,5.345749476E1 +1.289584000E3,4.955238815E1 +1.289923000E3,5.268555513E1 +1.290206000E3,5.092762320E1 +1.290445000E3,5.180504716E1 +1.290779000E3,5.421996562E1 +1.291081000E3,5.408565728E1 +1.291322000E3,5.466627749E1 +1.291622000E3,5.247549140E1 +1.291870000E3,5.438915347E1 +1.292125000E3,5.526358440E1 +1.292428000E3,5.407200655E1 +1.292723000E3,5.160593410E1 +1.293035000E3,5.231731426E1 +1.293342000E3,5.126765219E1 +1.293626000E3,4.802016847E1 +1.293922000E3,5.428603515E1 +1.294199000E3,5.305841291E1 +1.294451000E3,5.676250586E1 +1.294738000E3,5.921971496E1 +1.295005000E3,5.812051865E1 +1.295266000E3,5.671365947E1 +1.295512000E3,5.389157640E1 +1.295809000E3,5.417883641E1 +1.296087000E3,5.169085532E1 +1.296408000E3,5.027989141E1 +1.296704000E3,5.801273246E1 +1.296951000E3,5.777618357E1 +1.297241000E3,5.598217178E1 +1.297547000E3,5.590671112E1 +1.297806000E3,6.302454961E1 +1.298073000E3,5.716944646E1 +1.298330000E3,5.693666329E1 +1.298591000E3,5.374930006E1 +1.298851000E3,5.170089530E1 +1.299100000E3,6.243829367E1 +1.299340000E3,5.522680485E1 +1.299673000E3,5.451288060E1 +1.299933000E3,5.720613947E1 +1.300193000E3,5.131457759E1 +1.300510000E3,5.593393786E1 +1.300810000E3,5.344184529E1 +1.301099000E3,5.432320381E1 +1.301355000E3,5.294046944E1 +1.301602000E3,5.330691828E1 +1.301911000E3,4.899471979E1 +1.302175000E3,5.054546621E1 +1.302420000E3,4.914598102E1 +1.302706000E3,5.757950400E1 +1.303045000E3,5.798603958E1 +1.303343000E3,5.685278830E1 +1.303584000E3,5.272645619E1 +1.303869000E3,5.576083132E1 +1.304169000E3,5.311655900E1 +1.304414000E3,5.297304035E1 +1.304724000E3,6.119658997E1 +1.304998000E3,5.921259630E1 +1.305275000E3,5.974785927E1 +1.305567000E3,5.829108198E1 +1.305799000E3,5.656256791E1 +1.306151000E3,5.263150293E1 +1.306475000E3,5.719715846E1 +1.306754000E3,5.746813017E1 +1.307020000E3,6.063794361E1 +1.307320000E3,5.945639283E1 +1.307570000E3,5.898495898E1 +1.307856000E3,5.345744690E1 +1.308127000E3,5.882374416E1 +1.308390000E3,5.704844280E1 +1.308660000E3,6.230218860E1 +1.308982000E3,5.794977886E1 +1.309252000E3,5.609480230E1 +1.309620000E3,5.439173238E1 +1.309924000E3,5.804315704E1 +1.310253000E3,5.898090143E1 +1.310510000E3,5.933785859E1 +1.310826000E3,5.484966867E1 +1.311077000E3,5.841635068E1 +1.311358000E3,5.536029260E1 +1.311601000E3,5.555523834E1 +1.311895000E3,5.637714479E1 +1.312195000E3,5.253312652E1 +1.312445000E3,5.377927694E1 +1.312696000E3,5.757954833E1 +1.313038000E3,5.500733438E1 +1.313282000E3,5.367385274E1 +1.313558000E3,5.610715122E1 +1.313797000E3,5.528556803E1 +1.314063000E3,5.884958532E1 +1.314412000E3,5.458036035E1 +1.314671000E3,5.765344335E1 +1.314945000E3,5.139756723E1 +1.315223000E3,5.546002517E1 +1.315503000E3,5.608276603E1 +1.315733000E3,5.719791479E1 +1.315986000E3,5.413888898E1 +1.316329000E3,5.789500166E1 +1.316579000E3,5.404086097E1 +1.316819000E3,6.021843554E1 +1.317067000E3,5.929690830E1 +1.317365000E3,6.066063258E1 +1.317666000E3,5.465341745E1 +1.317917000E3,5.115712079E1 +1.318169000E3,4.986479689E1 +1.318470000E3,5.351977371E1 +1.318716000E3,5.614277654E1 +1.318987000E3,5.824140620E1 +1.319280000E3,5.863858703E1 +1.319646000E3,5.908977231E1 +1.319902000E3,5.867594430E1 +1.320142000E3,5.256185028E1 +1.320379000E3,5.916248935E1 +1.320672000E3,5.829134786E1 +1.320910000E3,5.729121950E1 +1.321203000E3,5.817253701E1 +1.321434000E3,5.958327052E1 +1.321726000E3,6.109571062E1 +1.321963000E3,6.309400740E1 +1.322263000E3,6.381431561E1 +1.322586000E3,6.124594205E1 +1.322839000E3,6.120886427E1 +1.323128000E3,5.624496406E1 +1.323377000E3,6.205845751E1 +1.323676000E3,6.248705287E1 +1.323968000E3,6.259357777E1 +1.324217000E3,6.168308921E1 +1.324496000E3,6.128297543E1 +1.324731000E3,5.975404370E1 +1.325024000E3,6.147148959E1 +1.325261000E3,6.101142333E1 +1.325573000E3,5.682124874E1 +1.325854000E3,5.869490284E1 +1.326149000E3,5.646663249E1 +1.326392000E3,5.662110608E1 +1.326643000E3,5.067702480E1 +1.326984000E3,5.759763927E1 +1.327264000E3,5.613584630E1 +1.327489000E3,5.826097161E1 +1.327735000E3,5.843702691E1 +1.328012000E3,5.352317094E1 +1.328253000E3,5.737674501E1 +1.328545000E3,5.736811408E1 +1.328911000E3,5.477233671E1 +1.329158000E3,5.481436604E1 +1.329403000E3,4.974322484E1 +1.329645000E3,5.490077996E1 +1.329890000E3,4.870505425E1 +1.330144000E3,4.955972956E1 +1.330428000E3,5.470042727E1 +1.330734000E3,5.618884112E1 +1.331026000E3,5.238151215E1 +1.331265000E3,5.344428978E1 +1.331515000E3,5.051963956E1 +1.331772000E3,5.068574448E1 +1.332120000E3,5.754233113E1 +1.332409000E3,5.498832674E1 +1.332740000E3,5.245036701E1 +1.333034000E3,5.885934606E1 +1.333286000E3,5.644915657E1 +1.333540000E3,5.532779852E1 +1.333784000E3,5.694511409E1 +1.334028000E3,5.553937724E1 +1.334302000E3,5.308286554E1 +1.334615000E3,5.140154995E1 +1.334876000E3,5.045296543E1 +1.335187000E3,5.631993217E1 +1.335451000E3,5.435091016E1 +1.335722000E3,5.624357652E1 +1.335986000E3,5.791043400E1 +1.336271000E3,5.847603086E1 +1.336545000E3,5.757219882E1 +1.336794000E3,6.070042624E1 +1.337072000E3,5.247827017E1 +1.337340000E3,5.208145921E1 +1.337609000E3,6.026756153E1 +1.337870000E3,6.012826199E1 +1.338134000E3,5.465450317E1 +1.338408000E3,5.768658418E1 +1.338755000E3,5.542991210E1 +1.339019000E3,5.279974580E1 +1.339289000E3,4.966927449E1 +1.339556000E3,4.563713389E1 +1.339804000E3,4.961972315E1 +1.340056000E3,5.287436972E1 +1.340316000E3,5.318950925E1 +1.340586000E3,5.037908496E1 +1.340881000E3,5.345184090E1 +1.341116000E3,5.016784238E1 +1.341407000E3,5.799295151E1 +1.341694000E3,5.875659808E1 +1.342051000E3,5.666657228E1 +1.342345000E3,5.241270038E1 +1.342638000E3,5.754780266E1 +1.342875000E3,5.669750570E1 +1.343177000E3,5.541629106E1 +1.343432000E3,5.556249818E1 +1.343726000E3,5.603182587E1 +1.343969000E3,5.961525777E1 +1.344257000E3,5.915223521E1 +1.344498000E3,5.820677933E1 +1.344777000E3,5.815031326E1 +1.345094000E3,5.733094423E1 +1.345363000E3,5.538469317E1 +1.345622000E3,6.270903439E1 +1.345877000E3,5.551461514E1 +1.346148000E3,5.750063996E1 +1.346395000E3,5.473739655E1 +1.346676000E3,5.131350753E1 +1.346958000E3,5.072615719E1 +1.347258000E3,4.882711207E1 +1.347518000E3,5.273988371E1 +1.347784000E3,6.269937361E1 +1.348040000E3,6.058958657E1 +1.348391000E3,5.894445662E1 +1.348716000E3,5.683213923E1 +1.348984000E3,5.875140523E1 +1.349236000E3,5.263650529E1 +1.349491000E3,4.630287352E1 +1.349847000E3,5.742006494E1 +1.350115000E3,6.486179330E1 +1.350358000E3,5.963871460E1 +1.350612000E3,5.220281373E1 +1.350868000E3,5.825229613E1 +1.351125000E3,5.822075100E1 +1.351374000E3,5.487419692E1 +1.351666000E3,5.461361208E1 +1.351934000E3,5.384511910E1 +1.352185000E3,5.782109838E1 +1.352440000E3,5.156901690E1 +1.352688000E3,5.262530942E1 +1.352990000E3,5.827406705E1 +1.353265000E3,6.164230870E1 +1.353493000E3,5.939319367E1 +1.353769000E3,5.491407227E1 +1.353989000E3,5.363390940E1 +1.354236000E3,5.108497673E1 +1.354516000E3,6.129017752E1 +1.354836000E3,5.594784457E1 +1.355095000E3,5.172378417E1 +1.355422000E3,5.975901259E1 +1.355685000E3,5.720857994E1 +1.355941000E3,5.600667557E1 +1.356197000E3,5.471836828E1 +1.356478000E3,5.319452565E1 +1.356745000E3,5.296912594E1 +1.357013000E3,5.811625635E1 +1.357280000E3,5.430511038E1 +1.357577000E3,5.277700001E1 +1.357824000E3,5.616769978E1 +1.358135000E3,5.406396803E1 +1.358401000E3,4.910300122E1 +1.358643000E3,5.077236009E1 +1.358892000E3,5.530877446E1 +1.359206000E3,5.787482939E1 +1.359485000E3,5.846197249E1 +1.359760000E3,6.103303991E1 +1.360055000E3,6.092009186E1 +1.360296000E3,5.979156049E1 +1.360590000E3,6.049263298E1 +1.360828000E3,5.895545308E1 +1.361114000E3,5.611946421E1 +1.361473000E3,5.480295831E1 +1.361726000E3,5.397626184E1 +1.361972000E3,5.443193027E1 +1.362314000E3,5.572591927E1 +1.362560000E3,5.224616115E1 +1.362808000E3,5.244486023E1 +1.363061000E3,5.179430466E1 +1.363307000E3,5.228822629E1 +1.363555000E3,5.248152719E1 +1.363850000E3,5.310816898E1 +1.364115000E3,5.586433987E1 +1.364397000E3,5.735023043E1 +1.364703000E3,6.002405491E1 +1.364950000E3,5.692273216E1 +1.365192000E3,5.941823705E1 +1.365459000E3,5.316793659E1 +1.365709000E3,5.869878442E1 +1.365953000E3,5.756526572E1 +1.366216000E3,5.687574379E1 +1.366491000E3,5.232478004E1 +1.366744000E3,5.424491879E1 +1.367001000E3,5.235481979E1 +1.367305000E3,5.164783122E1 +1.367588000E3,4.924997634E1 +1.367934000E3,4.924339558E1 +1.368196000E3,5.793398832E1 +1.368473000E3,5.529211657E1 +1.368719000E3,5.120874356E1 +1.368963000E3,5.470742612E1 +1.369285000E3,5.560989240E1 +1.369528000E3,5.197646059E1 +1.369822000E3,5.152328490E1 +1.370111000E3,5.791930576E1 +1.370416000E3,5.368811562E1 +1.370672000E3,5.769124019E1 +1.370919000E3,5.333549653E1 +1.371292000E3,5.847056292E1 +1.371551000E3,5.642894477E1 +1.371803000E3,5.817537921E1 +1.372074000E3,5.885584750E1 +1.372335000E3,5.395474736E1 +1.372602000E3,5.211537518E1 +1.372880000E3,4.924374923E1 +1.373126000E3,4.882665291E1 +1.373379000E3,5.483140316E1 +1.373636000E3,5.380197532E1 +1.373915000E3,5.629967483E1 +1.374251000E3,5.773524892E1 +1.374636000E3,6.271253195E1 +1.374894000E3,5.870587143E1 +1.375125000E3,5.496954916E1 +1.375369000E3,5.621931219E1 +1.375641000E3,5.700323462E1 +1.375912000E3,5.808968856E1 +1.376161000E3,5.697587873E1 +1.376437000E3,5.739415600E1 +1.376687000E3,5.874614285E1 +1.376941000E3,5.855325473E1 +1.377252000E3,5.287324040E1 +1.377495000E3,5.331405656E1 +1.377862000E3,5.163612814E1 +1.378109000E3,6.003152631E1 +1.378372000E3,6.448039849E1 +1.378641000E3,6.226927373E1 +1.378912000E3,6.355904277E1 +1.379208000E3,6.121718755E1 +1.379463000E3,6.371699462E1 +1.379738000E3,5.774542440E1 +1.380076000E3,5.579766677E1 +1.380318000E3,5.520595979E1 +1.380614000E3,5.395000262E1 +1.380855000E3,5.263752401E1 +1.381221000E3,5.267030150E1 +1.381492000E3,5.304251562E1 +1.381793000E3,4.959737221E1 +1.382100000E3,5.549829026E1 +1.382347000E3,5.821584994E1 +1.382642000E3,5.861199323E1 +1.382905000E3,5.256382895E1 +1.383164000E3,5.491877459E1 +1.383443000E3,5.644995893E1 +1.383702000E3,5.411249990E1 +1.383954000E3,5.324738213E1 +1.384305000E3,5.625052210E1 +1.384532000E3,6.070474662E1 +1.384789000E3,5.237062704E1 +1.385074000E3,5.442107865E1 +1.385361000E3,6.017483878E1 +1.385605000E3,6.237555822E1 +1.385869000E3,5.605951782E1 +1.386126000E3,6.511151133E1 +1.386382000E3,5.571785683E1 +1.386696000E3,5.398201636E1 +1.386954000E3,5.323734283E1 +1.387264000E3,5.635686029E1 +1.387623000E3,5.701357512E1 +1.387874000E3,5.632095063E1 +1.388187000E3,5.288354031E1 +1.388477000E3,5.152350906E1 +1.388761000E3,5.130627857E1 +1.388982000E3,4.918436870E1 +1.389239000E3,5.567775637E1 +1.389545000E3,5.465238648E1 +1.389786000E3,5.003079725E1 +1.390027000E3,5.504486936E1 +1.390282000E3,5.947272344E1 +1.390539000E3,6.106137952E1 +1.390892000E3,5.985290475E1 +1.391203000E3,5.500825546E1 +1.391507000E3,5.157102239E1 +1.391806000E3,5.517662265E1 +1.392108000E3,5.349243854E1 +1.392411000E3,5.386652866E1 +1.392707000E3,5.258839734E1 +1.392973000E3,5.376638351E1 +1.393221000E3,5.619475880E1 +1.393480000E3,5.846509931E1 +1.393767000E3,6.504346680E1 +1.394122000E3,5.865804348E1 +1.394392000E3,5.055217311E1 +1.394673000E3,4.837306759E1 +1.394931000E3,5.564689750E1 +1.395193000E3,5.416088817E1 +1.395489000E3,5.481584764E1 +1.395781000E3,5.356143065E1 +1.396078000E3,5.074158934E1 +1.396313000E3,5.177896206E1 +1.396618000E3,5.670327312E1 +1.396914000E3,6.043149132E1 +1.397246000E3,5.875453471E1 +1.397559000E3,5.725772305E1 +1.397842000E3,5.610169288E1 +1.398092000E3,6.098127982E1 +1.398354000E3,5.385330985E1 +1.398611000E3,5.345613584E1 +1.398873000E3,6.183897473E1 +1.399135000E3,5.898294985E1 +1.399399000E3,5.644599073E1 +1.399662000E3,6.288338842E1 +1.399923000E3,5.844786233E1 +1.400178000E3,6.145207907E1 +1.400438000E3,5.797678971E1 +1.400786000E3,5.805590691E1 +1.401082000E3,5.956739883E1 +1.401323000E3,5.537900496E1 +1.401618000E3,5.084213917E1 +1.401871000E3,4.807017206E1 +1.402118000E3,5.545233073E1 +1.402411000E3,5.516036366E1 +1.402644000E3,5.413431379E1 +1.402920000E3,5.388857626E1 +1.403209000E3,5.292068844E1 +1.403479000E3,5.775211983E1 +1.403718000E3,5.117484548E1 +1.404045000E3,5.912447648E1 +1.404295000E3,5.591921957E1 +1.404568000E3,5.565028551E1 +1.404828000E3,5.013398992E1 +1.405122000E3,5.465164253E1 +1.405364000E3,5.305211462E1 +1.405620000E3,5.755171154E1 +1.405929000E3,6.007655449E1 +1.406174000E3,5.899920387E1 +1.406463000E3,5.970773629E1 +1.406720000E3,5.770443308E1 +1.407009000E3,5.521297881E1 +1.407407000E3,5.604277064E1 +1.407677000E3,5.646208540E1 +1.407969000E3,4.906112006E1 +1.408239000E3,5.193830101E1 +1.408558000E3,4.835599484E1 +1.408830000E3,4.864558507E1 +1.409087000E3,5.566138381E1 +1.409349000E3,5.240816417E1 +1.409604000E3,4.366169359E1 +1.409843000E3,4.924613485E1 +1.410167000E3,5.289541091E1 +1.410462000E3,5.429333459E1 +1.410857000E3,5.232803186E1 +1.411115000E3,5.279391543E1 +1.411388000E3,5.698112108E1 +1.411689000E3,4.954635028E1 +1.411940000E3,5.347151392E1 +1.412202000E3,5.431542928E1 +1.412461000E3,5.708654506E1 +1.412712000E3,5.999867781E1 +1.412972000E3,5.836713300E1 +1.413243000E3,5.662529411E1 +1.413547000E3,5.760118844E1 +1.413790000E3,5.272334048E1 +1.414155000E3,5.585703000E1 +1.414407000E3,5.277217169E1 +1.414666000E3,5.575617717E1 +1.414970000E3,5.588142009E1 +1.415263000E3,5.043609445E1 +1.415519000E3,5.366091219E1 +1.415818000E3,6.729065738E1 +1.416082000E3,5.454700058E1 +1.416357000E3,5.542836481E1 +1.416608000E3,6.150002805E1 +1.416870000E3,5.918799699E1 +1.417164000E3,5.739551304E1 +1.417548000E3,5.312046747E1 +1.417864000E3,5.735989692E1 +1.418111000E3,5.463708503E1 +1.418368000E3,5.616594485E1 +1.418622000E3,5.674613857E1 +1.418880000E3,5.393284238E1 +1.419178000E3,5.477989298E1 +1.419414000E3,5.673628135E1 +1.419692000E3,5.246670124E1 +1.419935000E3,5.929492524E1 +1.420173000E3,5.718550468E1 +1.420417000E3,5.597503360E1 +1.420745000E3,5.209811810E1 +1.421016000E3,5.108820023E1 +1.421271000E3,5.704928631E1 +1.421524000E3,5.534619134E1 +1.421787000E3,5.298830069E1 +1.422048000E3,5.357926773E1 +1.422324000E3,5.150193558E1 +1.422590000E3,5.236977243E1 +1.422860000E3,5.598534631E1 +1.423111000E3,5.804712890E1 +1.423360000E3,5.584477369E1 +1.423617000E3,6.166819052E1 +1.423956000E3,6.217862533E1 +1.424239000E3,6.474885215E1 +1.424493000E3,6.561094566E1 +1.424771000E3,6.624921272E1 +1.425013000E3,6.269332683E1 +1.425310000E3,6.427501900E1 +1.425550000E3,6.406421996E1 +1.425806000E3,6.561696377E1 +1.426124000E3,5.757984813E1 +1.426392000E3,6.467113265E1 +1.426661000E3,6.110360998E1 +1.426971000E3,6.257935575E1 +1.427325000E3,6.059948571E1 +1.427600000E3,6.060080967E1 +1.427858000E3,6.129065918E1 +1.428157000E3,6.869907238E1 +1.428403000E3,6.216021300E1 +1.428668000E3,6.028715826E1 +1.428917000E3,5.215970407E1 +1.429175000E3,5.348756082E1 +1.429445000E3,5.866879342E1 +1.429775000E3,5.422412762E1 +1.430077000E3,5.967912654E1 +1.430370000E3,6.053958419E1 +1.430696000E3,5.642153628E1 +1.430959000E3,5.797803369E1 +1.431217000E3,5.265853131E1 +1.431545000E3,6.085541328E1 +1.431825000E3,6.579757863E1 +1.432095000E3,6.783858113E1 +1.432356000E3,6.680245969E1 +1.432609000E3,5.699539434E1 +1.432887000E3,5.495476405E1 +1.433146000E3,5.431336982E1 +1.433405000E3,5.468573805E1 +1.433768000E3,6.415525931E1 +1.434037000E3,5.996195649E1 +1.434305000E3,5.880144898E1 +1.434536000E3,5.062803370E1 +1.434794000E3,4.838886892E1 +1.435059000E3,4.852598648E1 +1.435348000E3,5.424758091E1 +1.435611000E3,6.028120001E1 +1.435845000E3,5.860165153E1 +1.436098000E3,5.820116177E1 +1.436348000E3,5.458976108E1 +1.436603000E3,5.748661459E1 +1.436983000E3,5.071157707E1 +1.437230000E3,5.187454119E1 +1.437505000E3,5.690962542E1 +1.437744000E3,5.898297949E1 +1.438006000E3,6.083548120E1 +1.438278000E3,4.929702369E1 +1.438556000E3,5.094464024E1 +1.438857000E3,5.451803318E1 +1.439157000E3,4.851675588E1 +1.439427000E3,4.781325912E1 +1.439724000E3,4.919544886E1 +1.439968000E3,4.662525194E1 +1.440374000E3,4.187537091E1 +1.440620000E3,5.083424523E1 +1.440895000E3,4.476479772E1 +1.441179000E3,5.236126827E1 +1.441495000E3,4.954212438E1 +1.441772000E3,5.444261950E1 +1.442048000E3,5.023278537E1 +1.442273000E3,4.640707667E1 +1.442557000E3,5.088583460E1 +1.442822000E3,5.041471443E1 +1.443067000E3,4.940152653E1 +1.443315000E3,4.834999124E1 +1.443550000E3,5.084173145E1 +1.443802000E3,4.674944421E1 +1.444118000E3,5.005548854E1 +1.444412000E3,4.880222753E1 +1.444695000E3,4.829349493E1 +1.444948000E3,4.815408858E1 +1.445231000E3,4.968297573E1 +1.445471000E3,5.263069989E1 +1.445763000E3,4.570389774E1 +1.446062000E3,4.674284816E1 +1.446364000E3,5.179136771E1 +1.446637000E3,5.007894257E1 +1.446884000E3,5.001285233E1 +1.447102000E3,5.063641057E1 +1.447373000E3,4.164946286E1 +1.447601000E3,3.981108666E1 +1.447894000E3,4.316358072E1 +1.448132000E3,5.465701871E1 +1.448431000E3,4.615144027E1 +1.448672000E3,4.353154230E1 +1.448965000E3,5.208221965E1 +1.449200000E3,5.530439334E1 +1.449496000E3,4.996075498E1 +1.449729000E3,5.218941020E1 +1.450060000E3,4.888890123E1 +1.450335000E3,5.030971329E1 +1.450629000E3,5.012870067E1 +1.450899000E3,4.847297804E1 +1.451151000E3,4.759762696E1 +1.451454000E3,4.978926902E1 +1.451751000E3,4.930919072E1 +1.452001000E3,5.004861581E1 +1.452285000E3,5.051309266E1 +1.452566000E3,4.810890055E1 +1.452826000E3,4.654354865E1 +1.453069000E3,4.761425190E1 +1.453369000E3,4.589508435E1 +1.453616000E3,4.954922405E1 +1.453886000E3,4.065983258E1 +1.454197000E3,4.220647307E1 +1.454513000E3,4.858310714E1 +1.454789000E3,5.196405012E1 +1.455012000E3,5.467685341E1 +1.455262000E3,5.753332593E1 +1.455513000E3,4.707036048E1 +1.455859000E3,3.942826471E1 +1.456237000E3,5.170062203E1 +1.456495000E3,6.022707597E1 +1.456743000E3,5.524301158E1 +1.456990000E3,5.482834451E1 +1.457257000E3,4.917995293E1 +1.457590000E3,4.739340640E1 +1.457831000E3,4.842051754E1 +1.458073000E3,6.166669432E1 +1.458329000E3,5.427876580E1 +1.458617000E3,4.896037674E1 +1.458889000E3,4.346397471E1 +1.459122000E3,4.481546196E1 +1.459424000E3,5.149740630E1 +1.459726000E3,4.614214660E1 +1.459975000E3,4.567227587E1 +1.460237000E3,5.348774305E1 +1.460488000E3,5.617792493E1 +1.460730000E3,5.122937085E1 +1.460971000E3,5.712815616E1 +1.461266000E3,5.592815325E1 +1.461504000E3,5.208026338E1 +1.461798000E3,5.368936290E1 +1.462033000E3,5.424431898E1 +1.462332000E3,5.229538114E1 +1.462686000E3,5.012562607E1 +1.462943000E3,5.517893002E1 +1.463292000E3,5.544440679E1 +1.463574000E3,5.195225561E1 +1.463851000E3,5.582804772E1 +1.464133000E3,5.163717454E1 +1.464392000E3,5.056978371E1 +1.464653000E3,5.085736348E1 +1.464931000E3,5.111025552E1 +1.465171000E3,5.008163028E1 +1.465468000E3,5.204681239E1 +1.465721000E3,4.873162615E1 +1.466070000E3,5.052420662E1 +1.466365000E3,5.115431116E1 +1.466626000E3,5.008089225E1 +1.466902000E3,5.455907242E1 +1.467123000E3,5.881328519E1 +1.467422000E3,5.654049662E1 +1.467665000E3,6.208900398E1 +1.467911000E3,5.573620080E1 +1.468210000E3,5.034178452E1 +1.468461000E3,4.644884091E1 +1.468716000E3,4.489036287E1 +1.469021000E3,4.555962209E1 +1.469437000E3,4.956164087E1 +1.469733000E3,5.014140659E1 +1.469995000E3,5.025508197E1 +1.470298000E3,4.976482928E1 +1.470552000E3,4.666552600E1 +1.470801000E3,5.164800320E1 +1.471107000E3,4.748865751E1 +1.471358000E3,5.068455306E1 +1.471623000E3,5.380657492E1 +1.471874000E3,4.918332364E1 +1.472155000E3,4.974368594E1 +1.472539000E3,5.519550202E1 +1.472795000E3,5.119649457E1 +1.473056000E3,5.406344748E1 +1.473370000E3,5.554928156E1 +1.473655000E3,5.458007948E1 +1.473895000E3,5.519923804E1 +1.474152000E3,5.580016483E1 +1.474437000E3,5.718813696E1 +1.474685000E3,5.734393611E1 +1.474960000E3,5.879862387E1 +1.475221000E3,5.602300215E1 +1.475474000E3,5.025640835E1 +1.475826000E3,5.543439402E1 +1.476071000E3,5.232164352E1 +1.476323000E3,5.898115961E1 +1.476584000E3,6.066467981E1 +1.476821000E3,5.071984472E1 +1.477123000E3,5.740447565E1 +1.477365000E3,5.959782608E1 +1.477662000E3,5.958620190E1 +1.477906000E3,5.753388342E1 +1.478144000E3,5.506848886E1 +1.478455000E3,5.769430513E1 +1.478723000E3,5.629679592E1 +1.478987000E3,5.649495967E1 +1.479262000E3,5.787253729E1 +1.479512000E3,5.216150167E1 +1.479813000E3,4.948302212E1 +1.480088000E3,5.080056078E1 +1.480342000E3,4.734041467E1 +1.480601000E3,4.440736689E1 +1.480866000E3,5.120725270E1 +1.481166000E3,5.053254929E1 +1.481466000E3,5.274685420E1 +1.481724000E3,5.071521067E1 +1.481973000E3,5.225995741E1 +1.482300000E3,5.133897759E1 +1.482575000E3,5.007250383E1 +1.482845000E3,5.042400131E1 +1.483101000E3,5.258901014E1 +1.483408000E3,5.618504625E1 +1.483668000E3,5.503349900E1 +1.483933000E3,4.974702245E1 +1.484194000E3,5.170781389E1 +1.484440000E3,5.072340799E1 +1.484707000E3,5.947536199E1 +1.485018000E3,5.467515596E1 +1.485306000E3,6.085614245E1 +1.485656000E3,5.990152864E1 +1.485935000E3,5.602550586E1 +1.486168000E3,5.561766537E1 +1.486422000E3,5.350876804E1 +1.486701000E3,5.699979875E1 +1.486960000E3,5.177464585E1 +1.487207000E3,5.249766501E1 +1.487486000E3,5.285366750E1 +1.487751000E3,5.316768095E1 +1.488002000E3,4.876639606E1 +1.488262000E3,5.179834313E1 +1.488516000E3,4.991892364E1 +1.488812000E3,5.156353661E1 +1.489125000E3,5.341434219E1 +1.489400000E3,5.426211096E1 +1.489675000E3,4.699672779E1 +1.489958000E3,5.361914521E1 +1.490219000E3,5.605827819E1 +1.490490000E3,5.089547448E1 +1.490772000E3,5.163564337E1 +1.491061000E3,5.841576784E1 +1.491309000E3,5.524417730E1 +1.491589000E3,5.450558122E1 +1.491873000E3,5.581032480E1 +1.492194000E3,5.802352567E1 +1.492448000E3,4.962366630E1 +1.492810000E3,5.873656508E1 +1.493058000E3,5.690804947E1 +1.493359000E3,5.262261274E1 +1.493674000E3,5.584655342E1 +1.493919000E3,5.542283425E1 +1.494163000E3,5.373884310E1 +1.494412000E3,5.084083433E1 +1.494678000E3,4.964027690E1 +1.494956000E3,5.125570040E1 +1.495204000E3,5.194895191E1 +1.495526000E3,4.961412488E1 +1.495784000E3,4.972405818E1 +1.496036000E3,4.777083448E1 +1.496283000E3,5.231556692E1 +1.496593000E3,5.894066851E1 +1.496842000E3,6.007182772E1 +1.497086000E3,6.003234807E1 +1.497358000E3,5.170627362E1 +1.497682000E3,5.564688341E1 +1.497937000E3,5.459086103E1 +1.498234000E3,5.654462748E1 +1.498530000E3,5.643601391E1 +1.498887000E3,5.593732695E1 +1.499182000E3,5.279859883E1 +1.499469000E3,5.063056157E1 +1.499723000E3,4.846330641E1 +1.499972000E3,5.696559719E1 +1.500236000E3,5.806291630E1 +1.500555000E3,5.485435177E1 +1.500851000E3,5.386376671E1 +1.501120000E3,5.529102258E1 +1.501400000E3,5.058415032E1 +1.501675000E3,5.420960743E1 +1.501928000E3,4.962388553E1 +1.502263000E3,5.167692375E1 +1.502567000E3,5.072695334E1 +1.502878000E3,5.319678523E1 +1.503119000E3,5.961199300E1 +1.503369000E3,5.299728366E1 +1.503631000E3,5.369404965E1 +1.503941000E3,5.426817134E1 +1.504209000E3,5.369336762E1 +1.504462000E3,5.246626497E1 +1.504724000E3,5.358557871E1 +1.505015000E3,4.957781391E1 +1.505279000E3,5.117668163E1 +1.505699000E3,5.216401891E1 +1.505963000E3,5.011348657E1 +1.506261000E3,5.259055540E1 +1.506507000E3,4.579432510E1 +1.506795000E3,4.877099475E1 +1.507032000E3,4.679595596E1 +1.507314000E3,5.136222565E1 +1.507549000E3,5.267101191E1 +1.507792000E3,5.244999525E1 +1.508074000E3,5.180561005E1 +1.508391000E3,5.030990700E1 +1.508607000E3,5.167226321E1 +1.508859000E3,5.218207738E1 +1.509151000E3,5.317725961E1 +1.509397000E3,5.318899610E1 +1.509689000E3,4.978257152E1 +1.509934000E3,5.032443800E1 +1.510228000E3,4.777293014E1 +1.510466000E3,4.646316587E1 +1.510767000E3,5.646850943E1 +1.511001000E3,5.638889819E1 +1.511293000E3,5.773758842E1 +1.511610000E3,5.580372922E1 +1.511900000E3,5.517502050E1 +1.512151000E3,5.684013484E1 +1.512393000E3,5.407249321E1 +1.512652000E3,5.725430710E1 +1.512902000E3,5.755876004E1 +1.513148000E3,5.492786930E1 +1.513404000E3,5.665177401E1 +1.513705000E3,5.675683028E1 +1.513957000E3,5.845897420E1 +1.514258000E3,5.334537973E1 +1.514488000E3,5.035361876E1 +1.514812000E3,4.886526824E1 +1.515059000E3,5.555156669E1 +1.515357000E3,5.401240780E1 +1.515600000E3,5.191330713E1 +1.515873000E3,5.158089375E1 +1.516102000E3,5.397456219E1 +1.516410000E3,5.205317520E1 +1.516679000E3,5.689433829E1 +1.516971000E3,5.397466306E1 +1.517230000E3,5.553699481E1 +1.517504000E3,5.550832571E1 +1.517763000E3,5.490604036E1 +1.518130000E3,5.129555301E1 +1.518403000E3,5.478479772E1 +1.518670000E3,5.687403653E1 +1.518921000E3,5.464295853E1 +1.519177000E3,5.713561839E1 +1.519461000E3,5.306473622E1 +1.519745000E3,5.320579073E1 +1.520002000E3,5.309385307E1 +1.520258000E3,5.058967996E1 +1.520552000E3,5.470724085E1 +1.520793000E3,5.303104936E1 +1.521156000E3,5.432496893E1 +1.521453000E3,5.594215604E1 +1.521721000E3,5.308545736E1 +1.521969000E3,5.327888421E1 +1.522220000E3,5.030915333E1 +1.522490000E3,5.230098434E1 +1.522776000E3,4.743827766E1 +1.523026000E3,5.464211349E1 +1.523327000E3,5.322537523E1 +1.523581000E3,5.154569729E1 +1.523826000E3,5.335950152E1 +1.524133000E3,5.482016506E1 +1.524417000E3,5.825411535E1 +1.524853000E3,5.879893849E1 +1.525179000E3,5.728744863E1 +1.525433000E3,5.737571640E1 +1.525696000E3,5.681107869E1 +1.525950000E3,5.695921586E1 +1.526210000E3,5.455429607E1 +1.526487000E3,5.808007225E1 +1.526729000E3,5.500512440E1 +1.527042000E3,5.476260812E1 +1.527339000E3,5.849962899E1 +1.527579000E3,5.719021529E1 +1.527910000E3,5.422226824E1 +1.528160000E3,5.266147572E1 +1.528411000E3,5.030747323E1 +1.528675000E3,5.057502492E1 +1.528920000E3,5.365292462E1 +1.529175000E3,5.444435151E1 +1.529423000E3,5.586906556E1 +1.529732000E3,5.808239082E1 +1.530030000E3,5.492304678E1 +1.530283000E3,5.727734117E1 +1.530542000E3,5.518682809E1 +1.530805000E3,5.838179726E1 +1.531133000E3,5.619103982E1 +1.531448000E3,5.705771680E1 +1.531738000E3,5.605732573E1 +1.531987000E3,5.497746164E1 +1.532293000E3,5.570350387E1 +1.532602000E3,5.687942595E1 +1.532873000E3,5.590365459E1 +1.533132000E3,5.379832162E1 +1.533387000E3,5.951317374E1 +1.533654000E3,5.728034638E1 +1.533915000E3,5.755019099E1 +1.534163000E3,5.625336618E1 +1.534512000E3,5.560455999E1 +1.534783000E3,5.186395468E1 +1.535086000E3,6.018952062E1 +1.535379000E3,5.360739703E1 +1.535619000E3,5.637744941E1 +1.535916000E3,5.710534601E1 +1.536153000E3,5.751101039E1 +1.536449000E3,5.888699469E1 +1.536688000E3,5.900809640E1 +1.536983000E3,5.539354346E1 +1.537218000E3,5.212761926E1 +1.537514000E3,6.113968309E1 +1.537773000E3,5.789795306E1 +1.538038000E3,6.065119472E1 +1.538356000E3,5.715251587E1 +1.538607000E3,5.728294892E1 +1.538911000E3,5.939537878E1 +1.539175000E3,5.879010449E1 +1.539417000E3,6.007594674E1 +1.539661000E3,5.983742076E1 +1.539908000E3,6.299497704E1 +1.540182000E3,6.042347696E1 +1.540457000E3,5.844914903E1 +1.540758000E3,5.775362746E1 +1.541037000E3,5.216165265E1 +1.541334000E3,5.255584969E1 +1.541593000E3,5.278098471E1 +1.541846000E3,5.581770981E1 +1.542092000E3,5.736301867E1 +1.542389000E3,5.733951694E1 +1.542623000E3,5.674705381E1 +1.542880000E3,5.506043774E1 +1.543125000E3,5.404728252E1 +1.543453000E3,5.428884791E1 +1.543732000E3,5.547580162E1 +1.544085000E3,5.471747417E1 +1.544346000E3,5.496243571E1 +1.544613000E3,5.288395526E1 +1.544860000E3,5.036194227E1 +1.545111000E3,5.124283852E1 +1.545413000E3,5.731432515E1 +1.545687000E3,5.663908688E1 +1.545955000E3,5.741659811E1 +1.546253000E3,5.084604561E1 +1.546502000E3,5.163330463E1 +1.546772000E3,4.777378739E1 +1.547025000E3,5.200725426E1 +1.547353000E3,5.049690945E1 +1.547625000E3,5.284766124E1 +1.547924000E3,5.396462244E1 +1.548148000E3,5.375524192E1 +1.548403000E3,5.670544075E1 +1.548716000E3,5.332369727E1 +1.548963000E3,5.544219871E1 +1.549238000E3,5.323430806E1 +1.549471000E3,5.180674965E1 +1.549727000E3,5.329467652E1 +1.550023000E3,5.080742485E1 +1.550310000E3,5.026906170E1 +1.550639000E3,5.582908231E1 +1.550905000E3,5.331150300E1 +1.551172000E3,5.186910180E1 +1.551471000E3,5.624561668E1 +1.551739000E3,5.555744845E1 +1.552012000E3,5.944044312E1 +1.552264000E3,6.002272858E1 +1.552531000E3,5.816546804E1 +1.552850000E3,5.936846960E1 +1.553097000E3,5.514794057E1 +1.553401000E3,5.160130424E1 +1.553757000E3,5.107783990E1 +1.554023000E3,5.871375450E1 +1.554276000E3,5.617325190E1 +1.554544000E3,5.736189521E1 +1.554800000E3,5.317828333E1 +1.555051000E3,5.715279916E1 +1.555321000E3,5.726931658E1 +1.555563000E3,5.567771069E1 +1.555823000E3,5.156101336E1 +1.556126000E3,5.688446569E1 +1.556378000E3,6.074118939E1 +1.556642000E3,5.974958265E1 +1.556918000E3,5.702757711E1 +1.557208000E3,5.874442787E1 +1.557457000E3,5.795683904E1 +1.557722000E3,6.039916355E1 +1.558025000E3,5.662755924E1 +1.558320000E3,5.332514547E1 +1.558595000E3,6.059700286E1 +1.558850000E3,5.775207016E1 +1.559098000E3,6.106988435E1 +1.559349000E3,6.039494527E1 +1.559644000E3,5.672405799E1 +1.559889000E3,5.814375710E1 +1.560135000E3,6.159401746E1 +1.560480000E3,5.397583636E1 +1.560770000E3,5.291692280E1 +1.561026000E3,5.439035965E1 +1.561320000E3,5.553984968E1 +1.561619000E3,5.808332247E1 +1.561927000E3,5.744100555E1 +1.562191000E3,5.636250023E1 +1.562451000E3,6.055150308E1 +1.562703000E3,5.624161562E1 +1.562979000E3,5.401048000E1 +1.563233000E3,5.588901558E1 +1.563595000E3,6.020828902E1 +1.563855000E3,6.586197618E1 +1.564143000E3,5.744692826E1 +1.564421000E3,5.175273280E1 +1.564681000E3,5.584828423E1 +1.564939000E3,5.622472521E1 +1.565190000E3,5.419184381E1 +1.565447000E3,4.818775863E1 +1.565701000E3,5.443344746E1 +1.565956000E3,4.960344337E1 +1.566224000E3,6.289868185E1 +1.566469000E3,6.499026885E1 +1.566794000E3,6.277031329E1 +1.567086000E3,5.336636778E1 +1.567405000E3,5.867761918E1 +1.567644000E3,5.135518394E1 +1.567909000E3,5.665720126E1 +1.568204000E3,5.915910399E1 +1.568455000E3,5.687790668E1 +1.568730000E3,5.815647569E1 +1.568976000E3,5.595761669E1 +1.569238000E3,5.367288589E1 +1.569491000E3,4.954593185E1 +1.569752000E3,5.199120702E1 +1.570099000E3,5.857172858E1 +1.570354000E3,5.533510860E1 +1.570614000E3,5.615291914E1 +1.570871000E3,4.816531300E1 +1.571136000E3,4.597509459E1 +1.571387000E3,5.454256971E1 +1.571722000E3,5.262076426E1 +1.572010000E3,5.108681545E1 +1.572285000E3,5.269091247E1 +1.572547000E3,4.898785412E1 +1.572807000E3,4.867008841E1 +1.573066000E3,5.306545801E1 +1.573313000E3,5.092331160E1 +1.573694000E3,5.549117670E1 +1.574009000E3,5.304099104E1 +1.574279000E3,5.377011563E1 +1.574520000E3,5.244694975E1 +1.574770000E3,5.542353961E1 +1.575031000E3,5.327330735E1 +1.575319000E3,5.123065406E1 +1.575617000E3,5.429517947E1 +1.575867000E3,5.443507599E1 +1.576132000E3,5.273613947E1 +1.576382000E3,5.717979407E1 +1.576705000E3,5.184816589E1 +1.576955000E3,4.851208329E1 +1.577250000E3,4.976440939E1 +1.577493000E3,5.236737582E1 +1.577737000E3,5.414723297E1 +1.577998000E3,5.490706774E1 +1.578342000E3,5.591011545E1 +1.578650000E3,5.689754115E1 +1.578906000E3,5.680987850E1 +1.579148000E3,5.379415708E1 +1.579394000E3,5.844713665E1 +1.579644000E3,4.927798375E1 +1.580006000E3,5.263100090E1 +1.580294000E3,5.410513055E1 +1.580548000E3,5.541047194E1 +1.580801000E3,5.058665778E1 +1.581070000E3,5.191468462E1 +1.581349000E3,4.623838572E1 +1.581601000E3,4.883886927E1 +1.581851000E3,4.951159763E1 +1.582152000E3,5.372806241E1 +1.582461000E3,4.077427406E1 +1.582742000E3,4.089897224E1 +1.582967000E3,4.661834708E1 +1.583330000E3,4.498181641E1 +1.583574000E3,4.413204165E1 +1.583835000E3,4.830731952E1 +1.584102000E3,5.133890730E1 +1.584385000E3,5.327819620E1 +1.584689000E3,5.148788947E1 +1.584935000E3,5.259351261E1 +1.585217000E3,5.210912674E1 +1.585449000E3,5.375523399E1 +1.585710000E3,5.030792675E1 +1.585957000E3,5.116594607E1 +1.586271000E3,5.729332409E1 +1.586601000E3,5.372439258E1 +1.586868000E3,5.283683191E1 +1.587111000E3,5.261490358E1 +1.587371000E3,5.394382083E1 +1.587617000E3,5.362104804E1 +1.587861000E3,5.192909002E1 +1.588111000E3,5.534291684E1 +1.588356000E3,5.529045875E1 +1.588616000E3,5.723903943E1 +1.588878000E3,5.769467674E1 +1.589116000E3,5.686991669E1 +1.589367000E3,5.472851050E1 +1.589709000E3,5.509501284E1 +1.589971000E3,6.218794924E1 +1.590276000E3,5.544714813E1 +1.590522000E3,5.587492513E1 +1.590770000E3,6.310127100E1 +1.591031000E3,6.016601681E1 +1.591331000E3,5.868635044E1 +1.591588000E3,5.739907262E1 +1.591847000E3,5.500154159E1 +1.592105000E3,5.382353142E1 +1.592358000E3,5.235465349E1 +1.592660000E3,5.432444683E1 +1.592979000E3,5.583837344E1 +1.593280000E3,5.890777444E1 +1.593531000E3,6.247008348E1 +1.593777000E3,5.524440051E1 +1.594082000E3,6.039849382E1 +1.594376000E3,5.779880973E1 +1.594616000E3,6.006977904E1 +1.594916000E3,6.157791897E1 +1.595158000E3,5.727348505E1 +1.595456000E3,6.219777130E1 +1.595702000E3,6.333776727E1 +1.596011000E3,6.315243887E1 +1.596287000E3,5.622487117E1 +1.596582000E3,4.999384026E1 +1.596838000E3,6.052096287E1 +1.597136000E3,5.730636753E1 +1.597383000E3,5.672770046E1 +1.597632000E3,5.282894107E1 +1.597943000E3,5.609826115E1 +1.598240000E3,5.950608691E1 +1.598483000E3,5.262580449E1 +1.598777000E3,5.638403375E1 +1.599039000E3,5.695994656E1 +1.599354000E3,5.595638462E1 +1.599677000E3,5.456948793E1 +1.599955000E3,5.641745933E1 +1.600254000E3,5.373490010E1 +1.600541000E3,5.613295480E1 +1.600824000E3,5.295628543E1 +1.601071000E3,5.036371368E1 +1.601313000E3,5.734560753E1 +1.601585000E3,5.869799540E1 +1.601832000E3,5.689867309E1 +1.602079000E3,5.521901034E1 +1.602376000E3,5.958743796E1 +1.602630000E3,5.697555749E1 +1.602881000E3,6.067520996E1 +1.603136000E3,6.296730837E1 +1.603381000E3,6.302345663E1 +1.603674000E3,5.614231839E1 +1.603920000E3,5.471880748E1 +1.604179000E3,6.025548138E1 +1.604432000E3,5.848975602E1 +1.604677000E3,6.051353275E1 +1.604988000E3,6.061163824E1 +1.605287000E3,5.127173554E1 +1.605535000E3,5.271948405E1 +1.605890000E3,5.457177629E1 +1.606143000E3,5.047420148E1 +1.606392000E3,5.197178768E1 +1.606684000E3,5.635777628E1 +1.606927000E3,5.691931577E1 +1.607165000E3,5.135114371E1 +1.607440000E3,5.173034620E1 +1.607734000E3,5.786109434E1 +1.607974000E3,5.620528212E1 +1.608236000E3,5.432552885E1 +1.608507000E3,5.036034087E1 +1.608763000E3,4.872303481E1 +1.609123000E3,5.516764205E1 +1.609377000E3,5.867465981E1 +1.609624000E3,5.634077767E1 +1.609869000E3,5.153316916E1 +1.610150000E3,5.212022412E1 +1.610428000E3,5.727395868E1 +1.610681000E3,5.443759521E1 +1.610944000E3,5.599199613E1 +1.611242000E3,5.709063131E1 +1.611495000E3,5.747461955E1 +1.611762000E3,5.445378087E1 +1.612040000E3,5.178206799E1 +1.612294000E3,5.347146008E1 +1.612548000E3,5.695533984E1 +1.612791000E3,5.852885666E1 +1.613050000E3,5.349710519E1 +1.613354000E3,5.482274130E1 +1.613598000E3,5.580201302E1 +1.613898000E3,5.533013655E1 +1.614151000E3,5.307302798E1 +1.614404000E3,5.034267096E1 +1.614651000E3,5.096368681E1 +1.614959000E3,5.358615730E1 +1.615202000E3,5.402822959E1 +1.615565000E3,5.173226008E1 +1.615815000E3,5.317238447E1 +1.616120000E3,5.490271856E1 +1.616406000E3,5.760350961E1 +1.616712000E3,5.516631401E1 +1.616950000E3,5.344247717E1 +1.617197000E3,5.105574764E1 +1.617480000E3,5.297874749E1 +1.617726000E3,5.181083735E1 +1.617978000E3,5.504462581E1 +1.618236000E3,5.652623382E1 +1.618484000E3,5.850281135E1 +1.618804000E3,5.207268405E1 +1.619061000E3,4.595989093E1 +1.619309000E3,5.832875112E1 +1.619574000E3,5.691639889E1 +1.619831000E3,5.277897330E1 +1.620092000E3,5.634285556E1 +1.620390000E3,5.782897026E1 +1.620660000E3,6.167326244E1 +1.620905000E3,5.736569246E1 +1.621145000E3,6.422841213E1 +1.621400000E3,6.037316593E1 +1.621649000E3,5.869946609E1 +1.622005000E3,6.007663283E1 +1.622308000E3,5.750286676E1 +1.622551000E3,5.315958033E1 +1.622849000E3,5.996646537E1 +1.623085000E3,6.310656156E1 +1.623382000E3,6.410911411E1 +1.623620000E3,6.559322950E1 +1.623914000E3,6.191537215E1 +1.624148000E3,6.509401862E1 +1.624441000E3,6.149444047E1 +1.624676000E3,5.887830140E1 +1.624914000E3,5.333395699E1 +1.625242000E3,5.080509527E1 +1.625531000E3,5.208999136E1 +1.625827000E3,4.936268455E1 +1.626072000E3,4.620940228E1 +1.626384000E3,4.812346411E1 +1.626678000E3,5.508818133E1 +1.626931000E3,5.929414420E1 +1.627193000E3,5.798382987E1 +1.627446000E3,5.695027340E1 +1.627690000E3,6.200547811E1 +1.627940000E3,5.895921781E1 +1.628278000E3,5.832121877E1 +1.628595000E3,5.727506493E1 +1.628914000E3,5.676841787E1 +1.629164000E3,5.904549933E1 +1.629453000E3,6.079247221E1 +1.629705000E3,5.978532207E1 +1.629973000E3,6.204876077E1 +1.630223000E3,6.278691878E1 +1.630527000E3,5.775584326E1 +1.630780000E3,5.715423799E1 +1.631076000E3,5.993810238E1 +1.631416000E3,5.945816984E1 +1.631690000E3,5.911038375E1 +1.631989000E3,6.401318161E1 +1.632251000E3,6.288325429E1 +1.632577000E3,6.142114348E1 +1.632857000E3,6.027735545E1 +1.633125000E3,6.058800698E1 +1.633410000E3,6.197295377E1 +1.633713000E3,5.649410931E1 +1.633983000E3,5.349526422E1 +1.634267000E3,5.160473432E1 +1.634550000E3,5.471426263E1 +1.634881000E3,5.381566790E1 +1.635145000E3,5.592472168E1 +1.635394000E3,5.502963456E1 +1.635636000E3,5.458091777E1 +1.635914000E3,5.361113418E1 +1.636211000E3,5.972112366E1 +1.636510000E3,6.134956919E1 +1.636770000E3,6.291498703E1 +1.637018000E3,6.051799303E1 +1.637272000E3,5.800319143E1 +1.637535000E3,6.099184952E1 +1.637791000E3,6.192072936E1 +1.638191000E3,5.592689657E1 +1.638462000E3,5.015193522E1 +1.638759000E3,5.662906295E1 +1.638997000E3,6.189212385E1 +1.639312000E3,5.656112303E1 +1.639618000E3,5.827187766E1 +1.639922000E3,5.894515280E1 +1.640188000E3,5.379936676E1 +1.640446000E3,5.498271927E1 +1.640705000E3,5.883708769E1 +1.641003000E3,5.515786146E1 +1.641329000E3,5.323855564E1 +1.641593000E3,5.000482182E1 +1.641876000E3,5.182077324E1 +1.642101000E3,5.319082569E1 +1.642344000E3,6.611850928E1 +1.642626000E3,5.190424983E1 +1.642867000E3,5.081734830E1 +1.643118000E3,5.711045841E1 +1.643458000E3,5.520016906E1 +1.643723000E3,5.247062228E1 +1.643997000E3,5.309157546E1 +1.644256000E3,5.339769460E1 +1.644621000E3,5.982216134E1 +1.644883000E3,5.915424673E1 +1.645133000E3,5.849263499E1 +1.645426000E3,5.826666974E1 +1.645723000E3,5.673329902E1 +1.645972000E3,5.580417722E1 +1.646244000E3,5.457004449E1 +1.646473000E3,5.835958867E1 +1.646716000E3,5.599398637E1 +1.646958000E3,5.928075116E1 +1.647232000E3,5.394053714E1 +1.647507000E3,5.853879118E1 +1.647858000E3,5.674494648E1 +1.648113000E3,5.640074652E1 +1.648414000E3,5.694867796E1 +1.648656000E3,5.573466688E1 +1.648962000E3,5.556104957E1 +1.649254000E3,5.770712773E1 +1.649548000E3,5.765349227E1 +1.649790000E3,5.583875333E1 +1.650054000E3,6.321152276E1 +1.650306000E3,5.966047080E1 +1.650600000E3,5.502015578E1 +1.650872000E3,5.066616477E1 +1.651172000E3,5.442335496E1 +1.651440000E3,5.956947456E1 +1.651736000E3,5.798320450E1 +1.651979000E3,5.739040713E1 +1.652228000E3,5.803662120E1 +1.652491000E3,6.146613872E1 +1.652750000E3,5.929116619E1 +1.653021000E3,5.936282359E1 +1.653288000E3,5.853226920E1 +1.653570000E3,5.954415072E1 +1.653872000E3,5.749576278E1 +1.654250000E3,5.567111200E1 +1.654518000E3,6.059415807E1 +1.654812000E3,5.855300274E1 +1.655081000E3,5.797601107E1 +1.655350000E3,6.029475669E1 +1.655647000E3,5.264118678E1 +1.655893000E3,5.715075800E1 +1.656153000E3,5.787679223E1 +1.656407000E3,6.038334743E1 +1.656655000E3,6.038245752E1 +1.656912000E3,5.475945603E1 +1.657171000E3,5.661674174E1 +1.657473000E3,5.618877186E1 +1.657717000E3,5.712918740E1 +1.657972000E3,5.834783502E1 +1.658283000E3,6.198115012E1 +1.658526000E3,5.639977894E1 +1.658788000E3,5.416850689E1 +1.659089000E3,5.679686188E1 +1.659335000E3,5.697270686E1 +1.659619000E3,5.371836804E1 +1.659873000E3,6.082252986E1 +1.660120000E3,6.285201132E1 +1.660416000E3,6.088574857E1 +1.660728000E3,6.109109391E1 +1.661004000E3,5.861240224E1 +1.661283000E3,6.123850168E1 +1.661519000E3,5.849447684E1 +1.661821000E3,5.472352136E1 +1.662065000E3,5.502625911E1 +1.662312000E3,5.606436387E1 +1.662565000E3,5.546236927E1 +1.662845000E3,6.075823181E1 +1.663075000E3,5.951357638E1 +1.663350000E3,5.956681026E1 +1.663575000E3,5.780116333E1 +1.663928000E3,6.184122024E1 +1.664178000E3,5.626291699E1 +1.664419000E3,5.635545931E1 +1.664671000E3,5.487242490E1 +1.664936000E3,5.392872477E1 +1.665237000E3,5.658170902E1 +1.665476000E3,5.449322435E1 +1.665752000E3,5.111063749E1 +1.665997000E3,5.288359358E1 +1.666249000E3,5.825102048E1 +1.666508000E3,6.087585373E1 +1.666750000E3,5.822210598E1 +1.667110000E3,6.320270923E1 +1.667355000E3,5.563170163E1 +1.667628000E3,5.240635194E1 +1.667875000E3,5.485055122E1 +1.668144000E3,5.590209292E1 +1.668402000E3,5.750031923E1 +1.668648000E3,5.301598344E1 +1.668896000E3,5.208077776E1 +1.669157000E3,5.024112467E1 +1.669414000E3,5.530220423E1 +1.669710000E3,5.585178295E1 +1.669955000E3,5.443268015E1 +1.670292000E3,5.292974908E1 +1.670566000E3,5.501741168E1 +1.670818000E3,5.190433464E1 +1.671077000E3,5.602388651E1 +1.671384000E3,5.384205522E1 +1.671688000E3,5.355394771E1 +1.671956000E3,4.896600257E1 +1.672212000E3,4.457728928E1 +1.672483000E3,5.407780485E1 +1.672726000E3,5.808535163E1 +1.672991000E3,5.497589856E1 +1.673269000E3,5.816061182E1 +1.673625000E3,5.457220472E1 +1.673896000E3,5.852786772E1 +1.674165000E3,5.615855966E1 +1.674439000E3,5.901141794E1 +1.674702000E3,5.821771493E1 +1.675040000E3,5.533746886E1 +1.675330000E3,5.469332456E1 +1.675631000E3,5.895976057E1 +1.675867000E3,5.565047570E1 +1.676161000E3,5.342216333E1 +1.676431000E3,5.339304237E1 +1.676716000E3,5.196130631E1 +1.677075000E3,5.500129023E1 +1.677346000E3,5.649474234E1 +1.677614000E3,5.620691351E1 +1.677867000E3,5.756400488E1 +1.678112000E3,5.571225073E1 +1.678362000E3,6.171466353E1 +1.678655000E3,5.523245256E1 +1.678909000E3,5.780473196E1 +1.679167000E3,5.918101801E1 +1.679536000E3,5.449831587E1 +1.679788000E3,5.278747036E1 +1.680072000E3,5.502423006E1 +1.680392000E3,5.603218813E1 +1.680667000E3,5.681691969E1 +1.680917000E3,5.574952817E1 +1.681227000E3,5.747793831E1 +1.681510000E3,5.831554727E1 +1.681811000E3,5.823344802E1 +1.682073000E3,5.677197169E1 +1.682402000E3,5.423243511E1 +1.682746000E3,5.568639423E1 +1.683007000E3,5.601571559E1 +1.683297000E3,5.788588795E1 +1.683563000E3,5.178162942E1 +1.683805000E3,5.244727762E1 +1.684102000E3,5.504021082E1 +1.684342000E3,5.312145782E1 +1.684637000E3,5.266466104E1 +1.684875000E3,5.430143327E1 +1.685171000E3,5.731848010E1 +1.685409000E3,5.314967575E1 +1.685703000E3,5.210480680E1 +1.685940000E3,5.447962472E1 +1.686242000E3,5.671930258E1 +1.686480000E3,5.298653153E1 +1.686837000E3,5.390672385E1 +1.687083000E3,5.256535993E1 +1.687387000E3,5.295433262E1 +1.687686000E3,4.693434793E1 +1.687930000E3,5.264001548E1 +1.688191000E3,4.696703102E1 +1.688514000E3,5.290693761E1 +1.688768000E3,5.572289252E1 +1.689025000E3,5.629476293E1 +1.689331000E3,5.221395629E1 +1.689585000E3,5.553268928E1 +1.689905000E3,5.392885939E1 +1.690136000E3,5.613018872E1 +1.690432000E3,5.323144022E1 +1.690690000E3,5.426457319E1 +1.690988000E3,5.869511223E1 +1.691244000E3,5.724931575E1 +1.691548000E3,5.702890727E1 +1.691819000E3,5.957894946E1 +1.692068000E3,5.833323285E1 +1.692367000E3,5.920896731E1 +1.692598000E3,5.809066040E1 +1.692847000E3,5.683194919E1 +1.693218000E3,5.880411413E1 +1.693536000E3,5.430005356E1 +1.693836000E3,5.347827494E1 +1.694082000E3,5.139526617E1 +1.694323000E3,6.486669482E1 +1.694607000E3,5.827670564E1 +1.694879000E3,5.749070135E1 +1.695112000E3,5.439297467E1 +1.695418000E3,5.591879208E1 +1.695720000E3,5.984156108E1 +1.695978000E3,5.763450389E1 +1.696238000E3,5.535113951E1 +1.696577000E3,5.468640858E1 +1.696840000E3,5.145216534E1 +1.697142000E3,5.633820526E1 +1.697434000E3,5.961813260E1 +1.697672000E3,5.761348305E1 +1.697970000E3,5.587832748E1 +1.698213000E3,5.615239979E1 +1.698514000E3,6.142159571E1 +1.698744000E3,5.868747140E1 +1.699038000E3,5.639074769E1 +1.699277000E3,5.843791784E1 +1.699602000E3,5.580904726E1 +1.699849000E3,5.188032815E1 +1.700148000E3,6.050592844E1 +1.700415000E3,5.851925341E1 +1.700742000E3,5.754370303E1 +1.700996000E3,5.792652906E1 +1.701265000E3,5.809754284E1 +1.701543000E3,5.435013872E1 +1.701827000E3,5.364293620E1 +1.702095000E3,5.742174876E1 +1.702342000E3,5.921232761E1 +1.702597000E3,5.246613397E1 +1.702852000E3,5.865178399E1 +1.703188000E3,6.209648540E1 +1.703456000E3,5.783126524E1 +1.703723000E3,6.129722089E1 +1.704021000E3,6.159059582E1 +1.704258000E3,6.290365934E1 +1.704500000E3,5.899658178E1 +1.704744000E3,5.570772177E1 +1.705020000E3,6.042975914E1 +1.705281000E3,6.063911519E1 +1.705578000E3,5.667741437E1 +1.705818000E3,5.616948640E1 +1.706065000E3,5.809228765E1 +1.706440000E3,6.194892333E1 +1.706707000E3,5.510896653E1 +1.706968000E3,5.648771637E1 +1.707226000E3,5.451026369E1 +1.707530000E3,5.655237570E1 +1.707813000E3,6.342687376E1 +1.708096000E3,5.687609223E1 +1.708345000E3,5.784030597E1 +1.708587000E3,5.696931166E1 +1.708832000E3,5.826055047E1 +1.709133000E3,6.171963981E1 +1.709444000E3,6.289993620E1 +1.709785000E3,6.196750111E1 +1.710095000E3,6.021872673E1 +1.710401000E3,5.493999514E1 +1.710645000E3,5.748920917E1 +1.710951000E3,5.990748875E1 +1.711204000E3,5.995493625E1 +1.711504000E3,5.608393688E1 +1.711807000E3,6.225697969E1 +1.712052000E3,6.005399346E1 +1.712297000E3,6.276583246E1 +1.712594000E3,6.409669700E1 +1.712952000E3,5.846223798E1 +1.713249000E3,6.222377893E1 +1.713511000E3,6.179119431E1 +1.713770000E3,6.687160955E1 +1.714020000E3,6.224215114E1 +1.714281000E3,6.460780580E1 +1.714608000E3,6.323149402E1 +1.714900000E3,5.890183616E1 +1.715139000E3,6.173404899E1 +1.715438000E3,6.193562982E1 +1.715674000E3,6.231645929E1 +1.715912000E3,5.798536661E1 +1.716293000E3,5.569607438E1 +1.716537000E3,6.131866955E1 +1.716790000E3,5.896584959E1 +1.717096000E3,5.693976131E1 +1.717346000E3,5.531403594E1 +1.717631000E3,5.794989861E1 +1.717933000E3,5.594899441E1 +1.718204000E3,5.601359132E1 +1.718501000E3,5.861037671E1 +1.718741000E3,6.432265266E1 +1.719043000E3,6.182586376E1 +1.719355000E3,6.076827417E1 +1.719645000E3,5.634225228E1 +1.719943000E3,5.935070169E1 +1.720188000E3,5.856877062E1 +1.720486000E3,5.761843709E1 +1.720741000E3,5.935030376E1 +1.720985000E3,5.413194972E1 +1.721289000E3,5.939733818E1 +1.721553000E3,5.617827250E1 +1.721847000E3,5.807085988E1 +1.722091000E3,5.877044817E1 +1.722445000E3,6.593854232E1 +1.722681000E3,6.027114564E1 +1.722973000E3,5.866411762E1 +1.723271000E3,5.588604319E1 +1.723508000E3,5.958751798E1 +1.723800000E3,6.077290351E1 +1.724039000E3,5.722905231E1 +1.724338000E3,5.619905124E1 +1.724576000E3,5.628809107E1 +1.724876000E3,5.560357878E1 +1.725168000E3,5.447509555E1 +1.725542000E3,5.278892866E1 +1.725841000E3,4.816211457E1 +1.726139000E3,4.622333411E1 +1.726399000E3,4.728231882E1 +1.726691000E3,5.101510224E1 +1.726947000E3,4.725933617E1 +1.727273000E3,5.333398449E1 +1.727569000E3,5.518583989E1 +1.727808000E3,5.719998093E1 +1.728061000E3,5.375072532E1 +1.728352000E3,5.631849408E1 +1.728644000E3,5.232994659E1 +1.729024000E3,5.045911420E1 +1.729295000E3,4.931808913E1 +1.729541000E3,4.866846016E1 +1.729788000E3,5.127644661E1 +1.730054000E3,4.769951033E1 +1.730296000E3,5.553885299E1 +1.730573000E3,5.629080236E1 +1.730816000E3,5.218818952E1 +1.731119000E3,5.112756333E1 +1.731379000E3,5.524890032E1 +1.731688000E3,5.530134621E1 +1.731949000E3,5.451831728E1 +1.732288000E3,5.380962689E1 +1.732589000E3,5.754684503E1 +1.732833000E3,5.184401682E1 +1.733102000E3,5.011373730E1 +1.733369000E3,5.541779655E1 +1.733647000E3,5.983699601E1 +1.733886000E3,6.131428317E1 +1.734163000E3,6.052345820E1 +1.734405000E3,5.852692054E1 +1.734659000E3,5.861191265E1 +1.734933000E3,5.957936529E1 +1.735219000E3,5.639739849E1 +1.735540000E3,5.207917019E1 +1.735832000E3,4.548490451E1 +1.736112000E3,5.219897691E1 +1.736384000E3,5.618314188E1 +1.736684000E3,5.720418785E1 +1.736946000E3,5.895068629E1 +1.737213000E3,5.652216932E1 +1.737468000E3,5.796687034E1 +1.737738000E3,5.591197017E1 +1.737996000E3,5.493985473E1 +1.738236000E3,5.752137274E1 +1.738586000E3,6.041563952E1 +1.738921000E3,6.199530447E1 +1.739167000E3,5.310800091E1 +1.739430000E3,5.600574849E1 +1.739683000E3,6.494981167E1 +1.739952000E3,6.157046745E1 +1.740293000E3,6.002681302E1 +1.740611000E3,5.943541790E1 +1.740910000E3,5.731619793E1 +1.741197000E3,5.885751119E1 +1.741508000E3,5.719237093E1 +1.741767000E3,5.958897825E1 +1.742034000E3,5.543499582E1 +1.742424000E3,5.632783570E1 +1.742688000E3,5.565042743E1 +1.742946000E3,5.622883854E1 +1.743204000E3,6.327777019E1 +1.743456000E3,5.663098185E1 +1.743721000E3,5.729384715E1 +1.743966000E3,6.200582057E1 +1.744273000E3,5.107652622E1 +1.744505000E3,5.491520459E1 +1.744752000E3,5.181266373E1 +1.745004000E3,5.014115745E1 +1.745297000E3,5.338585031E1 +1.745690000E3,5.654477286E1 +1.745966000E3,5.517036116E1 +1.746219000E3,5.200430375E1 +1.746475000E3,5.963355448E1 +1.746732000E3,5.854837006E1 +1.747002000E3,5.571277949E1 +1.747293000E3,5.825116458E1 +1.747522000E3,5.673248340E1 +1.747772000E3,5.683320783E1 +1.748035000E3,5.224053713E1 +1.748289000E3,5.713452273E1 +1.748568000E3,5.539076360E1 +1.748961000E3,6.015893340E1 +1.749211000E3,5.710921188E1 +1.749460000E3,6.114476082E1 +1.749715000E3,5.648052368E1 +1.749961000E3,5.897720288E1 +1.750207000E3,5.525435431E1 +1.750521000E3,5.447453139E1 +1.750765000E3,5.883968686E1 +1.751015000E3,5.450160052E1 +1.751290000E3,5.405183560E1 +1.751522000E3,5.501343440E1 +1.751848000E3,5.586635599E1 +1.752096000E3,5.631573217E1 +1.752372000E3,5.960964241E1 +1.752637000E3,5.320710483E1 +1.752941000E3,5.848434869E1 +1.753209000E3,5.619196315E1 +1.753510000E3,5.692291103E1 +1.753774000E3,5.505374149E1 +1.754051000E3,5.721759821E1 +1.754315000E3,5.539152446E1 +1.754625000E3,5.632890174E1 +1.754919000E3,5.918851802E1 +1.755262000E3,5.807294381E1 +1.755529000E3,5.748451885E1 +1.755827000E3,6.055251826E1 +1.756067000E3,6.208050524E1 +1.756367000E3,5.991655048E1 +1.756607000E3,6.073519941E1 +1.756900000E3,5.774998130E1 +1.757144000E3,5.751173009E1 +1.757417000E3,5.299288378E1 +1.757700000E3,5.913293772E1 +1.758005000E3,5.732040664E1 +1.758269000E3,6.221202462E1 +1.758585000E3,6.285457626E1 +1.758834000E3,5.870613535E1 +1.759137000E3,5.533279687E1 +1.759391000E3,5.194643865E1 +1.759644000E3,4.891449850E1 +1.759922000E3,4.784429271E1 +1.760236000E3,5.273391136E1 +1.760503000E3,5.475616990E1 +1.760758000E3,5.640096860E1 +1.761017000E3,5.329458627E1 +1.761282000E3,4.798672737E1 +1.761535000E3,5.532988346E1 +1.761794000E3,5.189579265E1 +1.762040000E3,5.068357941E1 +1.762299000E3,5.751972157E1 +1.762578000E3,5.430434207E1 +1.762831000E3,5.331943982E1 +1.763136000E3,5.699367350E1 +1.763409000E3,5.622858108E1 +1.763658000E3,5.631559008E1 +1.763910000E3,5.738562920E1 +1.764157000E3,6.030103345E1 +1.764400000E3,5.680309722E1 +1.764695000E3,5.703631315E1 +1.765017000E3,5.682945247E1 +1.765300000E3,5.317093897E1 +1.765575000E3,5.620624417E1 +1.765832000E3,5.550075987E1 +1.766100000E3,6.321349509E1 +1.766371000E3,5.938123887E1 +1.766635000E3,6.289622107E1 +1.766898000E3,5.890101653E1 +1.767155000E3,5.928826732E1 +1.767399000E3,5.872890625E1 +1.767638000E3,6.184345237E1 +1.767877000E3,6.131073260E1 +1.768211000E3,6.085041665E1 +1.768587000E3,6.015418617E1 +1.768835000E3,5.648473324E1 +1.769119000E3,5.746059957E1 +1.769380000E3,5.608054299E1 +1.769692000E3,6.542458852E1 +1.769998000E3,6.121618195E1 +1.770281000E3,5.842785672E1 +1.770536000E3,5.763776595E1 +1.770858000E3,5.630873419E1 +1.771133000E3,5.339704361E1 +1.771378000E3,5.463873835E1 +1.771723000E3,5.659388596E1 +1.772050000E3,5.449836230E1 +1.772294000E3,5.154616724E1 +1.772537000E3,5.082603581E1 +1.772795000E3,5.334183734E1 +1.773055000E3,5.096094928E1 +1.773365000E3,5.171061147E1 +1.773612000E3,5.477281719E1 +1.773878000E3,5.060909259E1 +1.774171000E3,5.285294921E1 +1.774452000E3,5.393730531E1 +1.774725000E3,5.333400186E1 +1.774980000E3,5.285705613E1 +1.775346000E3,5.719168586E1 +1.775663000E3,5.642193929E1 +1.775908000E3,4.659059970E1 +1.776150000E3,5.521168672E1 +1.776388000E3,5.693500665E1 +1.776630000E3,6.030483668E1 +1.776910000E3,5.944095915E1 +1.777153000E3,5.708951289E1 +1.777414000E3,5.291982189E1 +1.777666000E3,5.900042024E1 +1.777935000E3,6.010949926E1 +1.778229000E3,6.009411695E1 +1.778514000E3,5.804757181E1 +1.778758000E3,5.922775473E1 +1.779011000E3,6.063545461E1 +1.779277000E3,5.950242674E1 +1.779575000E3,6.057891518E1 +1.779819000E3,6.050018223E1 +1.780115000E3,5.965583098E1 +1.780361000E3,5.651792502E1 +1.780660000E3,5.814099422E1 +1.780904000E3,5.340077797E1 +1.781203000E3,5.734973286E1 +1.781481000E3,5.846278011E1 +1.781805000E3,5.369751607E1 +1.782048000E3,5.229063054E1 +1.782299000E3,5.345996994E1 +1.782583000E3,5.724353788E1 +1.782883000E3,5.610772411E1 +1.783181000E3,5.272586700E1 +1.783423000E3,5.272075137E1 +1.783692000E3,5.495532717E1 +1.783945000E3,5.594785882E1 +1.784202000E3,5.914935612E1 +1.784483000E3,6.427791570E1 +1.784735000E3,6.185652247E1 +1.785051000E3,6.178338943E1 +1.785352000E3,6.304285312E1 +1.785598000E3,5.699176354E1 +1.785897000E3,5.705567192E1 +1.786190000E3,5.975757470E1 +1.786467000E3,6.092866408E1 +1.786714000E3,5.771726615E1 +1.786984000E3,5.434727511E1 +1.787232000E3,5.250796794E1 +1.787486000E3,5.668884634E1 +1.787813000E3,5.600600547E1 +1.788061000E3,5.162213387E1 +1.788391000E3,5.782497792E1 +1.788636000E3,5.900804565E1 +1.788935000E3,6.056317474E1 +1.789175000E3,5.749029459E1 +1.789469000E3,6.053654612E1 +1.789714000E3,5.841478287E1 +1.789988000E3,5.700130118E1 +1.790219000E3,5.562837186E1 +1.790509000E3,5.430369658E1 +1.790806000E3,5.586895515E1 +1.791048000E3,5.809725956E1 +1.791409000E3,5.552827992E1 +1.791650000E3,5.534472171E1 +1.791981000E3,5.671474363E1 +1.792227000E3,5.716453332E1 +1.792522000E3,5.844249975E1 +1.792847000E3,5.961186667E1 +1.793109000E3,5.794833541E1 +1.793437000E3,5.832360597E1 +1.793698000E3,5.996001578E1 +1.793970000E3,5.849924827E1 +1.794223000E3,5.823551411E1 +1.794488000E3,5.480450178E1 +1.794819000E3,5.715609034E1 +1.795083000E3,5.418083703E1 +1.795329000E3,5.529883425E1 +1.795587000E3,5.729455769E1 +1.795853000E3,5.358946536E1 +1.796083000E3,5.534684059E1 +1.796374000E3,5.693696454E1 +1.796630000E3,5.642610016E1 +1.796927000E3,5.692548294E1 +1.797194000E3,5.931602223E1 +1.797469000E3,5.877569790E1 +1.797716000E3,5.527135197E1 +1.798053000E3,5.904674814E1 +1.798358000E3,5.655039196E1 +1.798612000E3,5.796779928E1 +1.798921000E3,5.499199210E1 +1.799185000E3,5.693837926E1 +1.799465000E3,6.235855457E1 +1.799695000E3,6.271612813E1 +1.799964000E3,6.118271582E1 +1.800233000E3,6.171552449E1 +1.800562000E3,6.293258336E1 +1.800818000E3,5.927940855E1 +1.801077000E3,5.836879001E1 +1.801406000E3,6.182854437E1 +1.801650000E3,5.918527405E1 +1.801894000E3,6.352260837E1 +1.802163000E3,6.142940723E1 +1.802385000E3,5.867772092E1 +1.802631000E3,5.916688243E1 +1.802927000E3,5.855222781E1 +1.803228000E3,6.125789004E1 +1.803533000E3,5.839377949E1 +1.803816000E3,5.705167204E1 +1.804057000E3,5.641730344E1 +1.804362000E3,6.771092582E1 +1.804585000E3,6.036461449E1 +1.804835000E3,6.742095194E1 +1.805132000E3,6.133151855E1 +1.805443000E3,6.658554202E1 +1.805718000E3,7.095511769E1 +1.806003000E3,7.330553664E1 +1.806290000E3,6.732809523E1 +1.806566000E3,6.106403544E1 +1.806844000E3,5.830930506E1 +1.807085000E3,6.610455401E1 +1.807442000E3,5.944325189E1 +1.807800000E3,5.667454347E1 +1.808044000E3,5.560521877E1 +1.808299000E3,5.488377812E1 +1.808542000E3,5.279721650E1 +1.808789000E3,4.834692654E1 +1.809029000E3,4.661669368E1 +1.809276000E3,5.501186804E1 +1.809526000E3,5.384830085E1 +1.809820000E3,5.526588307E1 +1.810084000E3,5.900458249E1 +1.810393000E3,5.557146256E1 +1.810647000E3,5.355619280E1 +1.811023000E3,5.627924000E1 +1.811283000E3,5.384503050E1 +1.811527000E3,5.309622401E1 +1.811816000E3,5.228523776E1 +1.812070000E3,5.317657142E1 +1.812328000E3,5.813846570E1 +1.812583000E3,5.621088360E1 +1.812927000E3,5.646965227E1 +1.813191000E3,5.322001188E1 +1.813436000E3,5.451886743E1 +1.813748000E3,5.558621720E1 +1.814006000E3,5.673920724E1 +1.814328000E3,5.582855401E1 +1.814591000E3,6.044196407E1 +1.814848000E3,5.769208427E1 +1.815109000E3,6.206015086E1 +1.815391000E3,5.918173335E1 +1.815660000E3,5.779702061E1 +1.815927000E3,6.516398742E1 +1.816218000E3,5.927869783E1 +1.816546000E3,6.320256740E1 +1.816802000E3,6.296743684E1 +1.817051000E3,5.869001212E1 +1.817329000E3,5.985536664E1 +1.817620000E3,5.435607380E1 +1.817905000E3,5.721703373E1 +1.818148000E3,6.314389823E1 +1.818376000E3,6.116752308E1 +1.818622000E3,5.773611736E1 +1.818863000E3,5.892899245E1 +1.819138000E3,5.791411351E1 +1.819457000E3,6.283307798E1 +1.819719000E3,5.805008540E1 +1.819967000E3,6.383011196E1 +1.820266000E3,5.915938870E1 +1.820515000E3,5.795811325E1 +1.820871000E3,5.730398564E1 +1.821113000E3,5.907223014E1 +1.821388000E3,5.566469845E1 +1.821612000E3,5.223652040E1 +1.821858000E3,5.461868826E1 +1.822118000E3,5.731142265E1 +1.822388000E3,5.743609212E1 +1.822672000E3,6.147918645E1 +1.822919000E3,6.109678537E1 +1.823167000E3,5.654516230E1 +1.823464000E3,6.010058675E1 +1.823716000E3,6.101649690E1 +1.824046000E3,5.741898993E1 +1.824372000E3,5.654969113E1 +1.824629000E3,5.489877253E1 +1.824894000E3,6.410593751E1 +1.825142000E3,5.923267903E1 +1.825399000E3,5.977300321E1 +1.825683000E3,5.945891570E1 +1.825907000E3,5.799474745E1 +1.826162000E3,5.485933719E1 +1.826447000E3,5.848818620E1 +1.826697000E3,5.937282663E1 +1.826944000E3,5.473647239E1 +1.827319000E3,5.611635619E1 +1.827649000E3,5.704234375E1 +1.827909000E3,5.174683398E1 +1.828172000E3,5.243070089E1 +1.828457000E3,5.835398328E1 +1.828710000E3,6.579711207E1 +1.828969000E3,6.063158540E1 +1.829218000E3,5.379307224E1 +1.829474000E3,5.791005982E1 +1.829779000E3,5.908028356E1 +1.830025000E3,5.476368407E1 +1.830307000E3,5.608145667E1 +1.830627000E3,5.417323034E1 +1.830843000E3,5.295530865E1 +1.831087000E3,5.335160491E1 +1.831385000E3,5.274441298E1 +1.831622000E3,5.307477504E1 +1.831918000E3,5.606159985E1 +1.832155000E3,6.009472302E1 +1.832471000E3,5.380117674E1 +1.832766000E3,5.382200579E1 +1.833012000E3,5.176006230E1 +1.833256000E3,5.956343573E1 +1.833577000E3,5.545935306E1 +1.833826000E3,5.528541848E1 +1.834083000E3,5.436381252E1 +1.834373000E3,5.684307553E1 +1.834669000E3,5.352399464E1 +1.834910000E3,5.651184236E1 +1.835208000E3,5.432875840E1 +1.835453000E3,5.442576527E1 +1.835752000E3,5.643309342E1 +1.836022000E3,5.781174029E1 +1.836293000E3,6.110602518E1 +1.836557000E3,5.591856301E1 +1.836932000E3,5.423752303E1 +1.837200000E3,5.716598850E1 +1.837455000E3,5.511743414E1 +1.837716000E3,5.819026063E1 +1.837988000E3,5.728773522E1 +1.838236000E3,5.959151016E1 +1.838540000E3,5.810767345E1 +1.838799000E3,5.779128856E1 +1.839096000E3,6.092094761E1 +1.839361000E3,5.957871329E1 +1.839608000E3,5.838702884E1 +1.839856000E3,5.927631822E1 +1.840242000E3,5.748386760E1 +1.840516000E3,5.957609475E1 +1.840759000E3,5.688693666E1 +1.841054000E3,5.883374773E1 +1.841320000E3,5.769470339E1 +1.841597000E3,5.894509733E1 +1.841885000E3,6.032854908E1 +1.842190000E3,5.891601570E1 +1.842444000E3,5.957860612E1 +1.842691000E3,5.968229576E1 +1.842933000E3,5.829247522E1 +1.843258000E3,6.183086549E1 +1.843539000E3,6.077794792E1 +1.843765000E3,5.928253866E1 +1.844002000E3,5.782805396E1 +1.844301000E3,5.975447959E1 +1.844589000E3,6.108169982E1 +1.844825000E3,5.915565503E1 +1.845116000E3,5.981302437E1 +1.845363000E3,6.019248645E1 +1.845636000E3,6.014223773E1 +1.845861000E3,6.160258605E1 +1.846139000E3,6.002388007E1 +1.846447000E3,6.004612452E1 +1.846706000E3,5.932487324E1 +1.846979000E3,5.718424575E1 +1.847284000E3,5.712987240E1 +1.847586000E3,5.557624595E1 +1.847888000E3,5.603981815E1 +1.848146000E3,5.769591687E1 +1.848418000E3,5.526085696E1 +1.848706000E3,5.815102401E1 +1.848972000E3,5.884177354E1 +1.849226000E3,5.853138751E1 +1.849515000E3,6.156208919E1 +1.849746000E3,6.064923427E1 +1.850008000E3,6.590305387E1 +1.850338000E3,5.853444981E1 +1.850640000E3,5.717447935E1 +1.850942000E3,5.680568615E1 +1.851242000E3,5.928468331E1 +1.851504000E3,5.798449444E1 +1.851757000E3,5.802619768E1 +1.852033000E3,5.998338312E1 +1.852296000E3,5.683616594E1 +1.852550000E3,5.692327884E1 +1.852886000E3,5.878610583E1 +1.853162000E3,5.538467470E1 +1.853432000E3,5.437085520E1 +1.853738000E3,5.469765317E1 +1.854038000E3,5.790268038E1 +1.854297000E3,5.836787866E1 +1.854582000E3,6.160807622E1 +1.854881000E3,5.878613196E1 +1.855158000E3,6.200103199E1 +1.855387000E3,6.087479870E1 +1.855688000E3,6.028304140E1 +1.855930000E3,6.159527875E1 +1.856226000E3,6.082174354E1 +1.856487000E3,5.932314061E1 +1.856744000E3,5.976570730E1 +1.857001000E3,5.473753247E1 +1.857299000E3,5.954612483E1 +1.857556000E3,6.052388497E1 +1.857849000E3,5.848282940E1 +1.858086000E3,5.879664566E1 +1.858384000E3,5.864589973E1 +1.858677000E3,5.659242719E1 +1.858917000E3,5.683870091E1 +1.859195000E3,5.582498919E1 +1.859427000E3,6.011873423E1 +1.859676000E3,5.796702396E1 +1.859911000E3,5.928400715E1 +1.860149000E3,5.826876733E1 +1.860396000E3,6.038481253E1 +1.860680000E3,6.030085568E1 +1.860944000E3,5.890166619E1 +1.861209000E3,6.654379171E1 +1.861519000E3,6.016187265E1 +1.861755000E3,6.139297542E1 +1.862049000E3,6.289106669E1 +1.862388000E3,5.872946965E1 +1.862675000E3,5.800836625E1 +1.862993000E3,5.701819685E1 +1.863248000E3,5.488359846E1 +1.863519000E3,5.747446133E1 +1.863768000E3,5.996388232E1 +1.864087000E3,5.686047813E1 +1.864334000E3,5.935760915E1 +1.864635000E3,6.438349972E1 +1.864894000E3,6.008599590E1 +1.865205000E3,5.995474236E1 +1.865502000E3,6.596906108E1 +1.865837000E3,6.091064347E1 +1.866114000E3,5.885056970E1 +1.866411000E3,6.474486832E1 +1.866666000E3,5.888758286E1 +1.866964000E3,6.138447683E1 +1.867211000E3,6.032596684E1 +1.867482000E3,5.848476935E1 +1.867736000E3,5.631330849E1 +1.867989000E3,5.927138373E1 +1.868246000E3,5.817171672E1 +1.868499000E3,5.358065381E1 +1.868763000E3,5.500264039E1 +1.869129000E3,5.663946315E1 +1.869384000E3,5.601392416E1 +1.869636000E3,5.640732154E1 +1.869947000E3,5.320213962E1 +1.870207000E3,4.907811811E1 +1.870470000E3,5.784153600E1 +1.870743000E3,5.988355074E1 +1.871011000E3,5.973830135E1 +1.871253000E3,5.769679044E1 +1.871519000E3,5.395770126E1 +1.871765000E3,5.751088186E1 +1.872011000E3,5.342275719E1 +1.872301000E3,5.638616310E1 +1.872563000E3,5.124369984E1 +1.872821000E3,5.357036185E1 +1.873129000E3,5.529809524E1 +1.873386000E3,5.442720524E1 +1.873650000E3,5.306298792E1 +1.873937000E3,5.703507672E1 +1.874184000E3,5.835246426E1 +1.874444000E3,5.638184247E1 +1.874707000E3,5.201779537E1 +1.874972000E3,5.217149520E1 +1.875244000E3,5.757612416E1 +1.875577000E3,5.387788750E1 +1.875865000E3,5.607108884E1 +1.876149000E3,5.692352283E1 +1.876407000E3,5.577296536E1 +1.876687000E3,5.259836493E1 +1.876982000E3,5.467571766E1 +1.877215000E3,5.256317748E1 +1.877521000E3,5.522593862E1 +1.877775000E3,5.432669245E1 +1.878036000E3,5.734031668E1 +1.878314000E3,6.027566119E1 +1.878587000E3,5.567003578E1 +1.878912000E3,5.307720644E1 +1.879176000E3,5.659939353E1 +1.879425000E3,5.110556861E1 +1.879723000E3,5.673190580E1 +1.879969000E3,5.437112204E1 +1.880274000E3,5.433297742E1 +1.880576000E3,5.585075865E1 +1.880875000E3,5.657006430E1 +1.881117000E3,5.701623858E1 +1.881424000E3,5.749679466E1 +1.881673000E3,5.623079196E1 +1.881986000E3,5.545187468E1 +1.882329000E3,5.781610131E1 +1.882611000E3,5.432916720E1 +1.882882000E3,4.940287270E1 +1.883127000E3,5.866223377E1 +1.883391000E3,5.654564177E1 +1.883644000E3,5.888782218E1 +1.883889000E3,5.586307703E1 +1.884148000E3,5.930725555E1 +1.884413000E3,5.963840788E1 +1.884660000E3,5.928611951E1 +1.884926000E3,5.621968819E1 +1.885181000E3,5.811455305E1 +1.885457000E3,5.585646129E1 +1.885714000E3,5.989591718E1 +1.885968000E3,6.058402104E1 +1.886267000E3,5.972100226E1 +1.886517000E3,6.220704457E1 +1.886832000E3,6.037773435E1 +1.887106000E3,6.039308032E1 +1.887385000E3,6.223647696E1 +1.887617000E3,5.854088114E1 +1.887876000E3,6.248517888E1 +1.888128000E3,6.222318884E1 +1.888437000E3,6.070320114E1 +1.888777000E3,5.817372188E1 +1.889076000E3,5.382250608E1 +1.889369000E3,7.004593531E1 +1.889616000E3,6.094415751E1 +1.889913000E3,5.455584628E1 +1.890163000E3,5.387250795E1 +1.890418000E3,5.219742496E1 +1.890714000E3,5.070715955E1 +1.890961000E3,5.362651533E1 +1.891207000E3,5.046817004E1 +1.891453000E3,5.129339201E1 +1.891764000E3,4.856730286E1 +1.892053000E3,5.220705734E1 +1.892321000E3,5.401068171E1 +1.892582000E3,5.109746146E1 +1.892834000E3,5.412675897E1 +1.893090000E3,5.347014573E1 +1.893340000E3,5.092720593E1 +1.893620000E3,5.341316175E1 +1.893886000E3,4.870918930E1 +1.894142000E3,4.929590175E1 +1.894389000E3,4.686294330E1 +1.894692000E3,5.100486031E1 +1.894995000E3,5.087478993E1 +1.895328000E3,4.940372977E1 +1.895606000E3,5.362468443E1 +1.895919000E3,5.608826750E1 +1.896241000E3,5.628756413E1 +1.896497000E3,5.817843169E1 +1.896749000E3,5.809119715E1 +1.897054000E3,5.469613872E1 +1.897287000E3,5.437807476E1 +1.897582000E3,5.794761863E1 +1.897897000E3,6.027023965E1 +1.898145000E3,5.913564460E1 +1.898511000E3,5.510014788E1 +1.898752000E3,5.499817732E1 +1.898999000E3,5.569220222E1 +1.899294000E3,5.368447548E1 +1.899547000E3,5.912109227E1 +1.899841000E3,6.076259223E1 +1.900104000E3,6.153129043E1 +1.900349000E3,5.679462536E1 +1.900634000E3,5.721135074E1 +1.900927000E3,5.674745728E1 +1.901166000E3,5.556227882E1 +1.901462000E3,4.994603734E1 +1.901841000E3,5.122656475E1 +1.902183000E3,5.127903645E1 +1.902436000E3,5.042064547E1 +1.902695000E3,5.425673681E1 +1.902998000E3,5.484388956E1 +1.903228000E3,5.322356297E1 +1.903483000E3,5.161093724E1 +1.903730000E3,5.302125687E1 +1.904019000E3,5.241958307E1 +1.904307000E3,5.116604316E1 +1.904614000E3,5.319513233E1 +1.904991000E3,5.530482451E1 +1.905243000E3,5.829713614E1 +1.905528000E3,4.891404960E1 +1.905774000E3,5.408250868E1 +1.906083000E3,5.272747143E1 +1.906381000E3,5.216068921E1 +1.906624000E3,5.292203291E1 +1.906885000E3,5.243548019E1 +1.907149000E3,4.981562618E1 +1.907448000E3,5.500279348E1 +1.907742000E3,5.481190601E1 +1.907999000E3,5.369800103E1 +1.908315000E3,6.390197571E1 +1.908579000E3,6.517990141E1 +1.908825000E3,5.822949910E1 +1.909064000E3,5.655728640E1 +1.909356000E3,5.292186662E1 +1.909600000E3,5.069372058E1 +1.909895000E3,5.368100654E1 +1.910138000E3,5.616508462E1 +1.910432000E3,6.285923815E1 +1.910670000E3,6.254266196E1 +1.910979000E3,5.628599605E1 +1.911260000E3,5.616383984E1 +1.911482000E3,5.074231882E1 +1.911728000E3,5.398858859E1 +1.911977000E3,5.585565083E1 +1.912237000E3,5.777112626E1 +1.912532000E3,6.036032129E1 +1.912783000E3,6.077032608E1 +1.913052000E3,5.839282786E1 +1.913316000E3,5.397912726E1 +1.913575000E3,5.582771928E1 +1.913848000E3,5.579334158E1 +1.914143000E3,5.778281485E1 +1.914450000E3,5.783459906E1 +1.914713000E3,6.199387267E1 +1.914943000E3,6.173706737E1 +1.915185000E3,5.621060236E1 +1.915433000E3,5.563784893E1 +1.915692000E3,5.470990272E1 +1.915951000E3,5.469960060E1 +1.916217000E3,6.171536544E1 +1.916470000E3,5.862130066E1 +1.916777000E3,5.839467924E1 +1.917028000E3,5.552209731E1 +1.917324000E3,5.763067987E1 +1.917687000E3,5.981653815E1 +1.917967000E3,5.790518789E1 +1.918210000E3,5.220287871E1 +1.918457000E3,5.707286116E1 +1.918759000E3,5.657529642E1 +1.918997000E3,6.000130629E1 +1.919241000E3,5.708419446E1 +1.919496000E3,5.749223221E1 +1.919768000E3,5.843781753E1 +1.920074000E3,5.671929683E1 +1.920373000E3,5.881070992E1 +1.920621000E3,5.603223824E1 +1.920956000E3,6.053511488E1 +1.921216000E3,5.525745837E1 +1.921476000E3,6.186721324E1 +1.921723000E3,6.214292360E1 +1.922025000E3,5.857206109E1 +1.922320000E3,5.934438900E1 +1.922561000E3,6.077867207E1 +1.922860000E3,5.578255978E1 +1.923099000E3,5.723807446E1 +1.923347000E3,5.785786452E1 +1.923636000E3,6.037753633E1 +1.923892000E3,6.106459696E1 +1.924223000E3,5.873119773E1 +1.924511000E3,5.862235861E1 +1.924814000E3,5.732521131E1 +1.925070000E3,5.161553090E1 +1.925373000E3,5.243351685E1 +1.925626000E3,5.041805469E1 +1.925919000E3,5.543714980E1 +1.926175000E3,5.338657816E1 +1.926425000E3,5.616854022E1 +1.926695000E3,5.699328540E1 +1.926965000E3,5.787312270E1 +1.927305000E3,5.558473925E1 +1.927614000E3,5.927685087E1 +1.927880000E3,6.254706193E1 +1.928125000E3,6.079427969E1 +1.928390000E3,5.412440784E1 +1.928634000E3,5.441834540E1 +1.928928000E3,5.220486428E1 +1.929215000E3,5.210908233E1 +1.929515000E3,5.352367419E1 +1.929766000E3,5.356350702E1 +1.930022000E3,5.184851991E1 +1.930322000E3,5.311742835E1 +1.930607000E3,5.453786592E1 +1.930870000E3,5.814140937E1 +1.931155000E3,5.779656646E1 +1.931440000E3,5.488757891E1 +1.931727000E3,5.385182390E1 +1.931981000E3,5.705491580E1 +1.932229000E3,5.576165296E1 +1.932491000E3,5.781333383E1 +1.932730000E3,5.616780300E1 +1.932971000E3,5.400230043E1 +1.933232000E3,5.518627884E1 +1.933510000E3,5.211300688E1 +1.933795000E3,5.292820587E1 +1.934127000E3,5.382097927E1 +1.934390000E3,6.102840439E1 +1.934671000E3,5.486275546E1 +1.934948000E3,5.206103103E1 +1.935198000E3,5.739150099E1 +1.935506000E3,5.310844778E1 +1.935756000E3,5.392681604E1 +1.936008000E3,5.250003264E1 +1.936256000E3,5.801399662E1 +1.936524000E3,5.696032820E1 +1.936785000E3,5.414492013E1 +1.937032000E3,5.536982174E1 +1.937391000E3,5.750979970E1 +1.937677000E3,5.370086514E1 +1.937972000E3,5.359409099E1 +1.938241000E3,4.663692517E1 +1.938508000E3,4.740501122E1 +1.938772000E3,4.812116539E1 +1.939051000E3,4.940260018E1 +1.939311000E3,5.211533825E1 +1.939553000E3,5.351181789E1 +1.939796000E3,5.597808269E1 +1.940081000E3,5.841474518E1 +1.940347000E3,5.900966915E1 +1.940680000E3,5.844032848E1 +1.940932000E3,6.047778057E1 +1.941187000E3,6.179458512E1 +1.941488000E3,5.569784051E1 +1.941730000E3,5.535681081E1 +1.941971000E3,5.409739450E1 +1.942227000E3,5.551927029E1 +1.942555000E3,5.259381649E1 +1.942855000E3,5.090743186E1 +1.943101000E3,5.330610416E1 +1.943383000E3,5.722147303E1 +1.943610000E3,5.564867598E1 +1.944013000E3,5.456395907E1 +1.944265000E3,5.442943523E1 +1.944557000E3,5.982581487E1 +1.944820000E3,5.751114261E1 +1.945081000E3,5.998630171E1 +1.945333000E3,5.908382499E1 +1.945646000E3,5.828329647E1 +1.945951000E3,5.602282904E1 +1.946199000E3,6.197108249E1 +1.946496000E3,5.533258874E1 +1.946770000E3,5.704060455E1 +1.947126000E3,5.457797110E1 +1.947363000E3,5.430717613E1 +1.947637000E3,5.940687974E1 +1.947953000E3,5.436076271E1 +1.948235000E3,5.660912008E1 +1.948550000E3,5.504399315E1 +1.948861000E3,5.464999644E1 +1.949122000E3,5.565806372E1 +1.949384000E3,5.190569146E1 +1.949646000E3,5.153937000E1 +1.949972000E3,5.628803963E1 +1.950248000E3,5.966716422E1 +1.950577000E3,5.820503815E1 +1.950822000E3,5.652058726E1 +1.951118000E3,5.802645793E1 +1.951349000E3,5.727916959E1 +1.951597000E3,5.784165576E1 +1.951900000E3,5.999225852E1 +1.952197000E3,6.048891831E1 +1.952433000E3,5.821794698E1 +1.952728000E3,5.416701806E1 +1.952964000E3,5.183738883E1 +1.953295000E3,5.384161890E1 +1.953675000E3,5.430376660E1 +1.953907000E3,5.257088063E1 +1.954151000E3,5.392186903E1 +1.954431000E3,6.167467738E1 +1.954678000E3,5.958790115E1 +1.954923000E3,5.822018477E1 +1.955185000E3,5.808448347E1 +1.955447000E3,5.733347749E1 +1.955703000E3,6.261390980E1 +1.956005000E3,5.829281758E1 +1.956246000E3,5.949056653E1 +1.956541000E3,5.839747914E1 +1.956810000E3,5.770882066E1 +1.957120000E3,5.690637302E1 +1.957421000E3,5.796705847E1 +1.957668000E3,5.867770180E1 +1.957936000E3,5.696585443E1 +1.958216000E3,5.738908049E1 +1.958463000E3,5.842272770E1 +1.958721000E3,5.966072568E1 +1.959033000E3,6.340725612E1 +1.959281000E3,6.193544465E1 +1.959566000E3,5.927164536E1 +1.959888000E3,6.146900670E1 +1.960249000E3,6.270186363E1 +1.960512000E3,5.695216686E1 +1.960779000E3,5.725758836E1 +1.961040000E3,5.788439963E1 +1.961303000E3,6.286977927E1 +1.961557000E3,6.361469653E1 +1.961802000E3,6.277422462E1 +1.962060000E3,6.032704022E1 +1.962310000E3,5.600516510E1 +1.962586000E3,6.188879617E1 +1.962805000E3,6.271522018E1 +1.963107000E3,6.025198847E1 +1.963453000E3,6.001529679E1 +1.963728000E3,5.375240125E1 +1.964036000E3,5.055228276E1 +1.964331000E3,5.257092943E1 +1.964568000E3,5.708661900E1 +1.964868000E3,5.629448239E1 +1.965178000E3,5.425890416E1 +1.965431000E3,5.575014937E1 +1.965679000E3,5.801461965E1 +1.965931000E3,5.400244473E1 +1.966191000E3,5.474887871E1 +1.966525000E3,5.196538635E1 +1.966783000E3,5.536524974E1 +1.967040000E3,5.974878933E1 +1.967338000E3,6.200932986E1 +1.967644000E3,6.295299888E1 +1.967909000E3,6.272635154E1 +1.968153000E3,5.902465660E1 +1.968474000E3,5.897159976E1 +1.968773000E3,5.506910037E1 +1.969014000E3,5.622897524E1 +1.969254000E3,5.457019516E1 +1.969505000E3,5.648049168E1 +1.969892000E3,5.656883155E1 +1.970152000E3,5.598423772E1 +1.970446000E3,5.186768597E1 +1.970726000E3,5.526177698E1 +1.971020000E3,5.810907246E1 +1.971304000E3,5.262875480E1 +1.971613000E3,5.141696402E1 +1.971915000E3,5.298264424E1 +1.972196000E3,5.641801556E1 +1.972483000E3,5.228737642E1 +1.972725000E3,5.649656740E1 +1.973036000E3,5.867645632E1 +1.973323000E3,5.679238187E1 +1.973633000E3,5.959682402E1 +1.973935000E3,5.617109756E1 +1.974236000E3,5.473085666E1 +1.974547000E3,5.589564412E1 +1.974836000E3,5.691193712E1 +1.975136000E3,5.808545953E1 +1.975385000E3,5.922478363E1 +1.975631000E3,5.707996013E1 +1.975881000E3,5.820923707E1 +1.976194000E3,5.897957095E1 +1.976453000E3,6.019944728E1 +1.976814000E3,6.472960186E1 +1.977076000E3,6.312075290E1 +1.977356000E3,5.886370461E1 +1.977618000E3,5.750754913E1 +1.977917000E3,5.531180501E1 +1.978189000E3,5.815410032E1 +1.978463000E3,5.735965971E1 +1.978732000E3,5.593071322E1 +1.978999000E3,5.835041964E1 +1.979245000E3,5.646810288E1 +1.979493000E3,5.392299875E1 +1.979902000E3,5.430590311E1 +1.980142000E3,5.447583546E1 +1.980384000E3,5.260389735E1 +1.980632000E3,5.537561423E1 +1.980873000E3,5.836960119E1 +1.981120000E3,5.425821286E1 +1.981389000E3,5.153336720E1 +1.981618000E3,5.420085973E1 +1.981915000E3,5.457985954E1 +1.982165000E3,5.637026749E1 +1.982404000E3,6.009656118E1 +1.982718000E3,5.903298531E1 +1.983029000E3,5.665152425E1 +1.983296000E3,5.778918758E1 +1.983538000E3,5.444374512E1 +1.983786000E3,5.619088618E1 +1.984047000E3,6.088482249E1 +1.984304000E3,5.678390940E1 +1.984575000E3,5.873820942E1 +1.984842000E3,6.004736340E1 +1.985142000E3,6.191465398E1 +1.985405000E3,6.154032648E1 +1.985653000E3,5.967034113E1 +1.985913000E3,5.855925349E1 +1.986211000E3,5.529356341E1 +1.986557000E3,5.823190054E1 +1.986847000E3,5.749679599E1 +1.987098000E3,5.855123449E1 +1.987369000E3,5.999203293E1 +1.987610000E3,6.139424716E1 +1.987876000E3,5.730078222E1 +1.988126000E3,5.649537684E1 +1.988425000E3,5.872458305E1 +1.988727000E3,5.704322852E1 +1.989024000E3,6.264447151E1 +1.989326000E3,5.763604303E1 +1.989641000E3,5.657919006E1 +1.989961000E3,5.706004491E1 +1.990255000E3,6.115159729E1 +1.990571000E3,5.721964371E1 +1.990829000E3,5.780420781E1 +1.991088000E3,5.782228640E1 +1.991353000E3,5.791642518E1 +1.991611000E3,5.820065680E1 +1.991935000E3,5.675756460E1 +1.992174000E3,5.720433643E1 +1.992482000E3,5.907701380E1 +1.992770000E3,5.791335620E1 +1.993107000E3,5.504589678E1 +1.993369000E3,6.117578252E1 +1.993619000E3,5.902046786E1 +1.993912000E3,6.024153080E1 +1.994216000E3,6.061721402E1 +1.994464000E3,6.185610038E1 +1.994715000E3,5.902440055E1 +1.995005000E3,6.112374185E1 +1.995249000E3,5.664710018E1 +1.995551000E3,5.841351492E1 +1.995787000E3,5.961393992E1 +1.996119000E3,5.614463215E1 +1.996387000E3,5.528223904E1 +1.996647000E3,5.706960328E1 +1.996947000E3,5.544195306E1 +1.997203000E3,5.747091679E1 +1.997452000E3,5.434233120E1 +1.997769000E3,5.794847441E1 +1.998019000E3,5.504963001E1 +1.998267000E3,5.470768853E1 +1.998498000E3,6.426300701E1 +1.998789000E3,6.070245213E1 +1.999090000E3,5.893271279E1 +1.999390000E3,5.873668669E1 +1.999698000E3,6.355663744E1 +1.999962000E3,6.500393379E1 +2.000214000E3,6.177640112E1 +2.000471000E3,6.122167361E1 +2.000775000E3,5.982616779E1 +2.001079000E3,5.944943300E1 +2.001339000E3,5.772707313E1 +2.001595000E3,5.934980117E1 +2.001862000E3,6.221301291E1 +2.002160000E3,6.098009785E1 +2.002491000E3,6.205877653E1 +2.002758000E3,5.978743388E1 +2.003062000E3,6.141065367E1 +2.003307000E3,6.146860620E1 +2.003555000E3,6.323368939E1 +2.003884000E3,6.072009355E1 +2.004185000E3,6.072017978E1 +2.004424000E3,6.079512782E1 +2.004673000E3,6.651000141E1 +2.004939000E3,6.185812181E1 +2.005202000E3,5.705353418E1 +2.005472000E3,5.820400818E1 +2.005800000E3,5.682542431E1 +2.006070000E3,6.224932691E1 +2.006350000E3,5.654791681E1 +2.006601000E3,6.160831985E1 +2.006857000E3,6.443497299E1 +2.007101000E3,6.091208862E1 +2.007395000E3,5.867323811E1 +2.007635000E3,5.850229824E1 +2.007945000E3,6.307832054E1 +2.008197000E3,5.931313312E1 +2.008453000E3,5.632990721E1 +2.008711000E3,5.662998085E1 +2.009032000E3,5.416655753E1 +2.009268000E3,6.273936844E1 +2.009521000E3,6.129068926E1 +2.009786000E3,6.485712301E1 +2.010037000E3,6.605690213E1 +2.010298000E3,6.243431425E1 +2.010541000E3,6.062714733E1 +2.010780000E3,6.369220544E1 +2.011082000E3,5.933701247E1 +2.011330000E3,6.141658123E1 +2.011605000E3,6.232326760E1 +2.011893000E3,5.983132844E1 +2.012226000E3,6.085684837E1 +2.012489000E3,5.844434641E1 +2.012752000E3,5.992485437E1 +2.013005000E3,5.745164278E1 +2.013272000E3,5.489362140E1 +2.013573000E3,5.734004331E1 +2.013861000E3,5.569303233E1 +2.014170000E3,5.619919203E1 +2.014467000E3,5.719248521E1 +2.014715000E3,5.898607642E1 +2.015015000E3,5.312334941E1 +2.015258000E3,4.707687024E1 +2.015594000E3,5.326213693E1 +2.015822000E3,4.977107581E1 +2.016071000E3,5.399380901E1 +2.016333000E3,5.528915982E1 +2.016634000E3,5.648344312E1 +2.016879000E3,5.853194276E1 +2.017143000E3,5.969968429E1 +2.017429000E3,6.121498547E1 +2.017723000E3,5.933414775E1 +2.017961000E3,6.375558171E1 +2.018248000E3,6.102538403E1 +2.018558000E3,6.066629858E1 +2.018830000E3,5.238394429E1 +2.019065000E3,5.528030903E1 +2.019316000E3,5.711235169E1 +2.019578000E3,6.069913503E1 +2.019847000E3,5.344730110E1 +2.020093000E3,5.593398360E1 +2.020413000E3,5.112453486E1 +2.020668000E3,5.529600172E1 +2.020922000E3,5.816841553E1 +2.021177000E3,6.105447683E1 +2.021449000E3,5.967528890E1 +2.021707000E3,5.677568689E1 +2.022115000E3,5.613246875E1 +2.022403000E3,5.846674311E1 +2.022679000E3,5.999468936E1 +2.022930000E3,6.268951545E1 +2.023232000E3,6.037378186E1 +2.023532000E3,6.123290650E1 +2.023784000E3,6.425880775E1 +2.024094000E3,6.043334594E1 +2.024356000E3,6.287321918E1 +2.024616000E3,6.178703582E1 +2.024868000E3,5.974424575E1 +2.025152000E3,5.863905018E1 +2.025429000E3,5.669082005E1 +2.025716000E3,6.192616195E1 +2.026008000E3,6.367561928E1 +2.026300000E3,6.061621393E1 +2.026543000E3,6.411900249E1 +2.026802000E3,6.060951858E1 +2.027066000E3,5.606119041E1 +2.027395000E3,5.099901519E1 +2.027693000E3,5.622472082E1 +2.027945000E3,5.354940616E1 +2.028237000E3,6.282566888E1 +2.028553000E3,5.775523802E1 +2.028868000E3,6.095006183E1 +2.029133000E3,6.333727439E1 +2.029399000E3,5.925545982E1 +2.029660000E3,6.045827699E1 +2.029962000E3,5.594587825E1 +2.030223000E3,5.708579081E1 +2.030478000E3,5.777704597E1 +2.030737000E3,5.406349508E1 +2.030990000E3,5.544037764E1 +2.031246000E3,5.912518025E1 +2.031508000E3,5.924806900E1 +2.031864000E3,6.105667153E1 +2.032110000E3,5.838466956E1 +2.032350000E3,5.923100201E1 +2.032598000E3,6.024290558E1 +2.032866000E3,5.971089342E1 +2.033112000E3,5.478665804E1 +2.033351000E3,5.966531235E1 +2.033644000E3,5.755565544E1 +2.033892000E3,5.982004182E1 +2.034190000E3,5.797424789E1 +2.034425000E3,5.856301863E1 +2.034717000E3,6.325478319E1 +2.035053000E3,6.168254294E1 +2.035364000E3,6.188857455E1 +2.035619000E3,6.156039581E1 +2.035901000E3,6.235770270E1 +2.036169000E3,6.262779828E1 +2.036471000E3,6.142542176E1 +2.036764000E3,5.923845966E1 +2.037022000E3,5.827266837E1 +2.037307000E3,6.314641141E1 +2.037615000E3,5.460230698E1 +2.037870000E3,5.396400232E1 +2.038120000E3,5.561122002E1 +2.038463000E3,5.928400391E1 +2.038767000E3,5.668934966E1 +2.039069000E3,5.831653467E1 +2.039316000E3,5.267103167E1 +2.039622000E3,5.557794232E1 +2.039859000E3,5.543606804E1 +2.040196000E3,5.836770370E1 +2.040499000E3,5.678092478E1 +2.040751000E3,5.612506795E1 +2.041024000E3,5.868430679E1 +2.041274000E3,5.264121586E1 +2.041581000E3,5.828774790E1 +2.041841000E3,5.647338053E1 +2.042088000E3,6.053709731E1 +2.042403000E3,5.614689861E1 +2.042691000E3,5.714845923E1 +2.042944000E3,5.256418368E1 +2.043191000E3,5.601486494E1 +2.043466000E3,5.810869150E1 +2.043715000E3,5.529893852E1 +2.043979000E3,5.708153712E1 +2.044245000E3,5.690179830E1 +2.044568000E3,5.994555064E1 +2.044825000E3,6.172126409E1 +2.045096000E3,6.015473895E1 +2.045377000E3,5.509344178E1 +2.045629000E3,5.568915719E1 +2.045902000E3,5.938619751E1 +2.046155000E3,5.534852098E1 +2.046409000E3,5.905391706E1 +2.046693000E3,5.250115201E1 +2.046947000E3,5.587771233E1 +2.047277000E3,5.599930929E1 +2.047517000E3,5.586822515E1 +2.047803000E3,5.740436533E1 +2.048105000E3,5.413600866E1 +2.048476000E3,5.595836709E1 +2.048737000E3,5.982743631E1 +2.048992000E3,6.001131240E1 +2.049305000E3,5.629713962E1 +2.049568000E3,5.505265617E1 +2.049904000E3,5.686004167E1 +2.050199000E3,6.078932545E1 +2.050470000E3,5.919030857E1 +2.050773000E3,5.640754436E1 +2.051052000E3,5.864124078E1 +2.051311000E3,5.683150656E1 +2.051642000E3,5.391893615E1 +2.051926000E3,4.513639699E1 +2.052174000E3,5.750824000E1 +2.052467000E3,5.945309138E1 +2.052703000E3,6.260915402E1 +2.052981000E3,6.017408744E1 +2.053276000E3,6.158293130E1 +2.053516000E3,6.279041899E1 +2.053759000E3,6.005362243E1 +2.054030000E3,5.776050932E1 +2.054357000E3,5.906607942E1 +2.054642000E3,6.002924771E1 +2.054978000E3,5.708591672E1 +2.055267000E3,5.932996992E1 +2.055552000E3,5.830703641E1 +2.055812000E3,5.428102985E1 +2.056063000E3,5.893384546E1 +2.056382000E3,6.028305726E1 +2.056682000E3,5.904357096E1 +2.056923000E3,6.015407432E1 +2.057171000E3,5.801677968E1 +2.057418000E3,6.561794532E1 +2.057665000E3,6.751214025E1 +2.057959000E3,5.899748641E1 +2.058279000E3,5.616162884E1 +2.058571000E3,5.813941707E1 +2.058834000E3,6.236684118E1 +2.059132000E3,6.058455193E1 +2.059376000E3,6.004963560E1 +2.059687000E3,6.255152045E1 +2.059984000E3,6.155697025E1 +2.060225000E3,6.124056229E1 +2.060517000E3,6.072549607E1 +2.060756000E3,6.119225814E1 +2.061060000E3,5.953618039E1 +2.061302000E3,5.869582322E1 +2.061578000E3,6.248269042E1 +2.061841000E3,6.070173510E1 +2.062089000E3,6.023992255E1 +2.062337000E3,5.848175462E1 +2.062607000E3,5.092907116E1 +2.062859000E3,5.442118268E1 +2.063124000E3,5.298599309E1 +2.063425000E3,6.030333428E1 +2.063671000E3,5.835700379E1 +2.063954000E3,5.943633389E1 +2.064268000E3,5.761479859E1 +2.064577000E3,5.520238299E1 +2.064822000E3,5.901822557E1 +2.065074000E3,5.705952734E1 +2.065339000E3,6.136116330E1 +2.065603000E3,5.746483296E1 +2.065865000E3,5.867757380E1 +2.066141000E3,5.709322981E1 +2.066441000E3,5.775131141E1 +2.066691000E3,5.886237327E1 +2.067036000E3,5.617972984E1 +2.067288000E3,5.802507148E1 +2.067560000E3,6.044497816E1 +2.067891000E3,5.450044868E1 +2.068148000E3,5.616761260E1 +2.068412000E3,6.243097888E1 +2.068673000E3,5.783788439E1 +2.068946000E3,5.764761585E1 +2.069196000E3,5.683737954E1 +2.069468000E3,5.609890848E1 +2.069778000E3,5.465619904E1 +2.070034000E3,5.368960846E1 +2.070328000E3,6.032893819E1 +2.070574000E3,5.862927742E1 +2.070842000E3,5.635830209E1 +2.071101000E3,5.822198053E1 +2.071339000E3,5.691346983E1 +2.071597000E3,5.865778618E1 +2.071860000E3,5.810560725E1 +2.072128000E3,5.968009174E1 +2.072425000E3,5.833852533E1 +2.072667000E3,5.784540163E1 +2.072934000E3,5.644439458E1 +2.073184000E3,5.178260396E1 +2.073488000E3,5.751445421E1 +2.073769000E3,5.974800721E1 +2.074068000E3,6.534291023E1 +2.074348000E3,6.371076652E1 +2.074624000E3,6.156132937E1 +2.074877000E3,6.012113548E1 +2.075119000E3,6.026351151E1 +2.075377000E3,6.142675581E1 +2.075661000E3,6.194478144E1 +2.075914000E3,6.183865569E1 +2.076267000E3,6.387512541E1 +2.076547000E3,6.077311287E1 +2.076803000E3,6.130963963E1 +2.077056000E3,5.862622582E1 +2.077295000E3,5.463497219E1 +2.077610000E3,5.484231095E1 +2.077891000E3,6.099801434E1 +2.078171000E3,5.475621164E1 +2.078466000E3,5.955577801E1 +2.078709000E3,5.720097088E1 +2.078954000E3,5.661944912E1 +2.079224000E3,5.443336360E1 +2.079503000E3,5.917559782E1 +2.079800000E3,5.424380486E1 +2.080057000E3,6.013762169E1 +2.080307000E3,6.100643768E1 +2.080558000E3,6.205128007E1 +2.080810000E3,6.007904071E1 +2.081092000E3,6.423414837E1 +2.081354000E3,5.938817614E1 +2.081601000E3,6.006860062E1 +2.081845000E3,5.833570272E1 +2.082143000E3,5.962915676E1 +2.082396000E3,5.844615966E1 +2.082663000E3,5.932060291E1 +2.082921000E3,6.037844323E1 +2.083227000E3,5.719168160E1 +2.083487000E3,5.597578938E1 +2.083743000E3,5.236775830E1 +2.084062000E3,5.471900653E1 +2.084318000E3,5.178371688E1 +2.084618000E3,5.707729304E1 +2.084858000E3,5.526812689E1 +2.085154000E3,5.716405930E1 +2.085391000E3,5.478798233E1 +2.085687000E3,5.496315929E1 +2.085932000E3,5.701239101E1 +2.086228000E3,5.776438308E1 +2.086467000E3,5.628202894E1 +2.086760000E3,5.042244376E1 +2.087015000E3,5.775963511E1 +2.087362000E3,4.982890988E1 +2.087671000E3,4.785672217E1 +2.087922000E3,4.762697394E1 +2.088178000E3,5.046726223E1 +2.088438000E3,4.890262424E1 +2.088711000E3,5.501277631E1 +2.088981000E3,5.666001705E1 +2.089249000E3,6.014252161E1 +2.089513000E3,5.925311989E1 +2.089806000E3,6.173820636E1 +2.090063000E3,5.350884215E1 +2.090366000E3,5.736408779E1 +2.090744000E3,5.450936109E1 +2.091005000E3,5.763377323E1 +2.091253000E3,6.042269191E1 +2.091515000E3,5.484903903E1 +2.091757000E3,5.882101591E1 +2.092028000E3,5.833139845E1 +2.092280000E3,5.703430671E1 +2.092527000E3,5.247783814E1 +2.092809000E3,5.233323676E1 +2.093037000E3,5.202869643E1 +2.093354000E3,5.628845797E1 +2.093634000E3,5.325396544E1 +2.094006000E3,5.654992892E1 +2.094280000E3,5.713253789E1 +2.094541000E3,5.967664240E1 +2.094800000E3,5.750232678E1 +2.095069000E3,5.544480371E1 +2.095333000E3,5.462176641E1 +2.095596000E3,5.811248949E1 +2.095853000E3,6.196847972E1 +2.096192000E3,5.842850461E1 +2.096488000E3,5.597774452E1 +2.096726000E3,5.601282925E1 +2.097104000E3,5.625832805E1 +2.097364000E3,5.315488909E1 +2.097602000E3,5.287250653E1 +2.097844000E3,5.523708836E1 +2.098081000E3,5.724292600E1 +2.098340000E3,5.659511238E1 +2.098670000E3,5.675324149E1 +2.098945000E3,5.485884276E1 +2.099219000E3,5.694143956E1 +2.099469000E3,5.561655413E1 +2.099765000E3,5.844909410E1 +2.100011000E3,6.135621316E1 +2.100343000E3,5.968766012E1 +2.100584000E3,5.173347950E1 +2.100832000E3,5.415548255E1 +2.101090000E3,5.271968845E1 +2.101339000E3,5.007174890E1 +2.101624000E3,5.279525002E1 +2.101895000E3,5.358558767E1 +2.102197000E3,5.559048142E1 +2.102438000E3,5.476305303E1 +2.102705000E3,5.237114911E1 +2.102947000E3,5.014972007E1 +2.103218000E3,4.895902935E1 +2.103469000E3,5.192053997E1 +2.103853000E3,4.647138436E1 +2.104101000E3,4.837766327E1 +2.104448000E3,5.088929287E1 +2.104740000E3,5.561591777E1 +2.104997000E3,5.440319534E1 +2.105260000E3,5.347164399E1 +2.105561000E3,5.151610441E1 +2.105813000E3,5.075382634E1 +2.106121000E3,5.244425755E1 +2.106357000E3,5.269617654E1 +2.106663000E3,5.149027406E1 +2.106954000E3,5.659456733E1 +2.107266000E3,5.282561460E1 +2.107606000E3,5.407918273E1 +2.107883000E3,5.643922092E1 +2.108164000E3,5.169657105E1 +2.108480000E3,5.713744586E1 +2.108748000E3,5.931186178E1 +2.109003000E3,5.645689600E1 +2.109252000E3,5.322874786E1 +2.109552000E3,5.363731782E1 +2.109821000E3,5.353815648E1 +2.110077000E3,5.445551750E1 +2.110418000E3,5.491110228E1 +2.110669000E3,5.291647814E1 +2.110921000E3,5.202914132E1 +2.111180000E3,5.363241827E1 +2.111479000E3,5.566624291E1 +2.111721000E3,5.645238247E1 +2.112027000E3,5.458458697E1 +2.112294000E3,5.469783372E1 +2.112597000E3,5.582449562E1 +2.112854000E3,5.595416398E1 +2.113105000E3,5.113785865E1 +2.113352000E3,6.248282803E1 +2.113711000E3,5.880495226E1 +2.113968000E3,5.941805617E1 +2.114248000E3,5.561632009E1 +2.114507000E3,5.501810850E1 +2.114754000E3,5.936291007E1 +2.115053000E3,6.127733734E1 +2.115321000E3,6.057491273E1 +2.115616000E3,6.127323198E1 +2.115893000E3,5.760488174E1 +2.116193000E3,6.030881831E1 +2.116434000E3,5.967518116E1 +2.116722000E3,5.720938908E1 +2.117066000E3,5.605932878E1 +2.117338000E3,6.068190844E1 +2.117598000E3,5.400374866E1 +2.117892000E3,5.332007667E1 +2.118133000E3,4.991979059E1 +2.118428000E3,5.700198654E1 +2.118666000E3,5.878418983E1 +2.118922000E3,5.703766890E1 +2.119230000E3,5.731012811E1 +2.119515000E3,5.865622099E1 +2.119741000E3,5.772295719E1 +2.120015000E3,5.851982083E1 +2.120322000E3,5.958645129E1 +2.120616000E3,6.233814130E1 +2.120861000E3,6.002711287E1 +2.121162000E3,5.939190004E1 +2.121437000E3,5.758195225E1 +2.121690000E3,5.564648712E1 +2.121946000E3,5.336629511E1 +2.122218000E3,5.199121426E1 +2.122476000E3,5.906368298E1 +2.122759000E3,5.917930836E1 +2.123014000E3,5.824882047E1 +2.123266000E3,5.770359270E1 +2.123492000E3,5.695638802E1 +2.123777000E3,5.720151485E1 +2.124027000E3,6.045411810E1 +2.124327000E3,5.540258870E1 +2.124575000E3,5.828000252E1 +2.124835000E3,5.500577731E1 +2.125106000E3,5.926473821E1 +2.125354000E3,5.472888078E1 +2.125611000E3,5.530970077E1 +2.125862000E3,5.595037084E1 +2.126117000E3,5.439239133E1 +2.126432000E3,5.961943996E1 +2.126692000E3,5.841091801E1 +2.126944000E3,5.863137443E1 +2.127282000E3,5.731398304E1 +2.127577000E3,5.665374527E1 +2.127843000E3,5.476493539E1 +2.128129000E3,5.580929465E1 +2.128437000E3,5.565551021E1 +2.128739000E3,5.869101147E1 +2.129026000E3,5.827114612E1 +2.129307000E3,5.507536074E1 +2.129577000E3,5.532393691E1 +2.129934000E3,5.233850306E1 +2.130215000E3,5.514372423E1 +2.130466000E3,5.757947445E1 +2.130714000E3,6.126034226E1 +2.131015000E3,6.074916673E1 +2.131279000E3,5.864911171E1 +2.131564000E3,5.680524431E1 +2.131825000E3,6.002252741E1 +2.132078000E3,5.953076168E1 +2.132390000E3,6.027427680E1 +2.132647000E3,5.955779136E1 +2.132902000E3,5.835756058E1 +2.133223000E3,6.286787860E1 +2.133471000E3,6.057291506E1 +2.133724000E3,5.893793659E1 +2.134002000E3,5.508555746E1 +2.134257000E3,5.619881839E1 +2.134512000E3,5.505764062E1 +2.134784000E3,5.808922162E1 +2.135054000E3,5.334583096E1 +2.135313000E3,5.298019930E1 +2.135595000E3,5.025342296E1 +2.135812000E3,5.409382682E1 +2.136057000E3,5.580950424E1 +2.136332000E3,5.523743716E1 +2.136661000E3,5.499005541E1 +2.136917000E3,5.745623005E1 +2.137196000E3,5.149169849E1 +2.137449000E3,5.261206885E1 +2.137711000E3,5.487518376E1 +2.138022000E3,5.898871991E1 +2.138270000E3,5.852026830E1 +2.138564000E3,5.868858262E1 +2.138802000E3,5.736353209E1 +2.139066000E3,5.529465652E1 +2.139332000E3,5.762578865E1 +2.139672000E3,5.790185487E1 +2.139930000E3,5.792373283E1 +2.140278000E3,5.597904656E1 +2.140535000E3,5.355980456E1 +2.140856000E3,5.411887429E1 +2.141146000E3,5.094976839E1 +2.141467000E3,5.658279242E1 +2.141735000E3,6.043792292E1 +2.142041000E3,5.996632022E1 +2.142276000E3,6.230155616E1 +2.142526000E3,6.102528468E1 +2.142783000E3,5.770338577E1 +2.143124000E3,5.827243883E1 +2.143406000E3,5.367650147E1 +2.143645000E3,5.777094487E1 +2.143915000E3,5.851595499E1 +2.144175000E3,5.573729509E1 +2.144454000E3,5.467626304E1 +2.144700000E3,5.699765591E1 +2.144968000E3,5.692170932E1 +2.145246000E3,6.030210344E1 +2.145550000E3,5.876913066E1 +2.145797000E3,5.698149837E1 +2.146042000E3,5.982717784E1 +2.146368000E3,5.905293636E1 +2.146676000E3,5.947032966E1 +2.146922000E3,5.910471730E1 +2.147225000E3,6.065874797E1 +2.147524000E3,5.680135408E1 +2.147831000E3,5.451199701E1 +2.148090000E3,5.301325775E1 +2.148365000E3,5.466040661E1 +2.148665000E3,5.658013689E1 +2.148952000E3,5.410667827E1 +2.149249000E3,5.788683658E1 +2.149597000E3,5.873903650E1 +2.149910000E3,5.314379433E1 +2.150150000E3,5.564952940E1 +2.150451000E3,6.000220607E1 +2.150691000E3,6.235870620E1 +2.150965000E3,6.387461990E1 +2.151194000E3,6.491001134E1 +2.151449000E3,5.932544814E1 +2.151756000E3,6.117684525E1 +2.152011000E3,6.059885605E1 +2.152282000E3,6.303246617E1 +2.152596000E3,6.399854390E1 +2.152961000E3,6.063746268E1 +2.153223000E3,6.122116723E1 +2.153495000E3,5.809397592E1 +2.153749000E3,5.903784259E1 +2.153999000E3,6.047826717E1 +2.154283000E3,5.846467986E1 +2.154537000E3,6.226879102E1 +2.154785000E3,5.980611807E1 +2.155079000E3,5.787450321E1 +2.155375000E3,5.676059962E1 +2.155616000E3,5.395823696E1 +2.155912000E3,5.953639288E1 +2.156221000E3,5.971614724E1 +2.156510000E3,6.039969801E1 +2.156758000E3,5.898776738E1 +2.157015000E3,6.100474003E1 +2.157289000E3,5.750129682E1 +2.157591000E3,5.995540643E1 +2.157844000E3,5.628303244E1 +2.158104000E3,5.892686601E1 +2.158366000E3,5.712884748E1 +2.158667000E3,5.727860760E1 +2.158932000E3,5.313556696E1 +2.159288000E3,5.635583768E1 +2.159555000E3,5.929473664E1 +2.159809000E3,5.396180560E1 +2.160112000E3,5.807023999E1 +2.160354000E3,5.639240346E1 +2.160608000E3,5.917728814E1 +2.160855000E3,5.429000157E1 +2.161130000E3,5.397827395E1 +2.161395000E3,5.647751800E1 +2.161656000E3,5.342605760E1 +2.162007000E3,5.324373839E1 +2.162263000E3,5.439383591E1 +2.162517000E3,5.727066505E1 +2.162888000E3,5.995593964E1 +2.163140000E3,6.130649482E1 +2.163392000E3,6.228130821E1 +2.163644000E3,6.279179388E1 +2.163938000E3,5.559527300E1 +2.164178000E3,5.200550071E1 +2.164481000E3,5.797363767E1 +2.164757000E3,5.902554678E1 +2.165040000E3,5.834647622E1 +2.165303000E3,5.713285380E1 +2.165575000E3,6.343633700E1 +2.165850000E3,5.896208706E1 +2.166219000E3,5.624501583E1 +2.166483000E3,5.696603075E1 +2.166769000E3,5.736978604E1 +2.167027000E3,5.837475894E1 +2.167278000E3,5.768129207E1 +2.167593000E3,5.660761865E1 +2.167856000E3,5.680076310E1 +2.168110000E3,5.883044450E1 +2.168385000E3,5.772028600E1 +2.168649000E3,5.342008664E1 +2.168914000E3,5.359113324E1 +2.169168000E3,5.849769703E1 +2.169536000E3,6.267181821E1 +2.169793000E3,5.719603223E1 +2.170040000E3,5.397233107E1 +2.170287000E3,4.861027503E1 +2.170579000E3,5.741564583E1 +2.170822000E3,6.207812430E1 +2.171115000E3,5.827753689E1 +2.171365000E3,6.042202215E1 +2.171629000E3,5.516417228E1 +2.171895000E3,4.912315476E1 +2.172163000E3,4.718316305E1 +2.172446000E3,5.363129541E1 +2.172813000E3,5.322378335E1 +2.173087000E3,5.228499961E1 +2.173349000E3,5.364722432E1 +2.173618000E3,5.964999675E1 +2.173917000E3,6.116591719E1 +2.174174000E3,5.668310324E1 +2.174436000E3,5.538937699E1 +2.174688000E3,5.539330891E1 +2.174944000E3,5.678019084E1 +2.175197000E3,5.655985061E1 +2.175490000E3,6.211643319E1 +2.175751000E3,5.899842059E1 +2.176153000E3,6.042080027E1 +2.176454000E3,5.956376587E1 +2.176730000E3,5.896716838E1 +2.177048000E3,5.729778676E1 +2.177305000E3,5.512323216E1 +2.177616000E3,5.573124529E1 +2.177883000E3,5.390669828E1 +2.178139000E3,5.435017850E1 +2.178403000E3,5.275779180E1 +2.178672000E3,5.469054235E1 +2.178938000E3,5.701832565E1 +2.179201000E3,6.063134316E1 +2.179540000E3,6.461030243E1 +2.179799000E3,6.345934666E1 +2.180043000E3,6.255021373E1 +2.180348000E3,6.265836689E1 +2.180640000E3,6.125083403E1 +2.180878000E3,5.721943432E1 +2.181125000E3,5.584429631E1 +2.181407000E3,5.679219567E1 +2.181647000E3,5.506189996E1 +2.181962000E3,5.950753578E1 +2.182227000E3,5.684863204E1 +2.182499000E3,5.318048388E1 +2.182825000E3,5.856807028E1 +2.183124000E3,6.201159961E1 +2.183360000E3,5.994279105E1 +2.183661000E3,6.155626338E1 +2.183904000E3,5.760612799E1 +2.184197000E3,5.557219911E1 +2.184436000E3,5.720299401E1 +2.184730000E3,5.496492062E1 +2.184965000E3,5.287669523E1 +2.185272000E3,5.534018340E1 +2.185572000E3,5.047897567E1 +2.185897000E3,5.289532450E1 +2.186149000E3,5.169587435E1 +2.186428000E3,5.811856565E1 +2.186722000E3,5.829930976E1 +2.187016000E3,5.767171180E1 +2.187297000E3,5.167293983E1 +2.187542000E3,5.634712904E1 +2.187793000E3,5.452173951E1 +2.188038000E3,5.242356157E1 +2.188332000E3,5.476946331E1 +2.188570000E3,5.506415879E1 +2.188807000E3,5.842757277E1 +2.189123000E3,5.579731569E1 +2.189400000E3,5.735467547E1 +2.189707000E3,5.510643622E1 +2.189947000E3,5.399605596E1 +2.190247000E3,5.231812124E1 +2.190482000E3,5.397423501E1 +2.190722000E3,5.467291530E1 +2.190972000E3,5.750340972E1 +2.191219000E3,5.451621797E1 +2.191527000E3,5.544744059E1 +2.191775000E3,5.570906247E1 +2.192040000E3,5.570238792E1 +2.192395000E3,5.704729905E1 +2.192674000E3,5.662202644E1 +2.192969000E3,6.130245708E1 +2.193206000E3,5.842239411E1 +2.193505000E3,5.813812757E1 +2.193745000E3,5.643123308E1 +2.194038000E3,5.810403241E1 +2.194275000E3,5.863690353E1 +2.194574000E3,5.519980518E1 +2.194810000E3,5.381530940E1 +2.195092000E3,5.781601666E1 +2.195335000E3,5.699265058E1 +2.195608000E3,5.477338243E1 +2.195929000E3,5.695412826E1 +2.196188000E3,5.575935497E1 +2.196439000E3,5.738570553E1 +2.196686000E3,6.194168224E1 +2.196969000E3,5.888525061E1 +2.197270000E3,5.830791470E1 +2.197516000E3,5.904778886E1 +2.197822000E3,5.987539712E1 +2.198117000E3,5.910637217E1 +2.198355000E3,5.676446576E1 +2.198673000E3,5.632729175E1 +2.198920000E3,5.826507178E1 +2.199227000E3,6.221847088E1 +2.199493000E3,6.023584539E1 +2.199739000E3,6.378124478E1 +2.199975000E3,6.457706819E1 +2.200218000E3,5.781084826E1 +2.200471000E3,5.833307765E1 +2.200715000E3,5.849295856E1 +2.200984000E3,5.695016071E1 +2.201255000E3,5.945608920E1 +2.201511000E3,5.923858391E1 +2.201821000E3,5.975381188E1 +2.202050000E3,5.657071344E1 +2.202297000E3,5.582353283E1 +2.202552000E3,5.634201272E1 +2.202803000E3,5.842061156E1 +2.203080000E3,5.511323996E1 +2.203339000E3,5.333816234E1 +2.203589000E3,5.586132206E1 +2.203867000E3,5.612282959E1 +2.204151000E3,5.390907932E1 +2.204405000E3,5.581501331E1 +2.204648000E3,5.691201261E1 +2.204938000E3,5.605209961E1 +2.205271000E3,5.337227455E1 +2.205520000E3,5.726868677E1 +2.205824000E3,5.678400386E1 +2.206068000E3,5.598615724E1 +2.206327000E3,6.245548090E1 +2.206634000E3,5.788335624E1 +2.206927000E3,5.672312442E1 +2.207166000E3,5.700846075E1 +2.207464000E3,5.693157148E1 +2.207703000E3,5.667671942E1 +2.207995000E3,5.655907845E1 +2.208344000E3,5.694003799E1 +2.208592000E3,5.812693102E1 +2.208844000E3,5.305590014E1 +2.209133000E3,5.963333488E1 +2.209376000E3,6.125764761E1 +2.209621000E3,5.708540532E1 +2.209865000E3,5.539532482E1 +2.210177000E3,6.086117928E1 +2.210432000E3,5.871599576E1 +2.210705000E3,5.720891289E1 +2.210929000E3,5.859137268E1 +2.211185000E3,5.492761595E1 +2.211566000E3,5.458369125E1 +2.211811000E3,5.704243717E1 +2.212094000E3,5.948204172E1 +2.212325000E3,5.442994388E1 +2.212570000E3,5.607391365E1 +2.212815000E3,5.349643391E1 +2.213089000E3,5.518134225E1 +2.213397000E3,5.879499176E1 +2.213659000E3,5.918920409E1 +2.213917000E3,6.317166487E1 +2.214205000E3,5.773325998E1 +2.214505000E3,6.021667659E1 +2.214834000E3,5.707564648E1 +2.215074000E3,5.411436798E1 +2.215412000E3,5.705541238E1 +2.215699000E3,6.721672427E1 +2.215946000E3,6.130402498E1 +2.216241000E3,5.914242022E1 +2.216493000E3,5.881747375E1 +2.216786000E3,5.920115687E1 +2.217030000E3,5.981753209E1 +2.217325000E3,5.379848698E1 +2.217566000E3,5.498057230E1 +2.217931000E3,5.647867672E1 +2.218210000E3,5.460935805E1 +2.218440000E3,5.579228446E1 +2.218740000E3,5.598523495E1 +2.218992000E3,5.501198671E1 +2.219248000E3,5.270876730E1 +2.219495000E3,5.711255338E1 +2.219767000E3,5.276578476E1 +2.220009000E3,6.171644376E1 +2.220307000E3,5.760035427E1 +2.220557000E3,6.039071701E1 +2.220820000E3,5.947563028E1 +2.221166000E3,5.781157464E1 +2.221459000E3,5.689764898E1 +2.221740000E3,5.361204154E1 +2.221998000E3,5.565584232E1 +2.222252000E3,6.236264054E1 +2.222508000E3,5.583706888E1 +2.222794000E3,5.998886151E1 +2.223038000E3,6.067027795E1 +2.223281000E3,5.953550256E1 +2.223512000E3,6.087865846E1 +2.223764000E3,5.880177247E1 +2.224056000E3,5.532032645E1 +2.224389000E3,5.110554887E1 +2.224697000E3,6.082114583E1 +2.224957000E3,6.332269799E1 +2.225225000E3,5.859152014E1 +2.225521000E3,6.312344162E1 +2.225760000E3,6.208500503E1 +2.226003000E3,6.030377984E1 +2.226280000E3,5.890306026E1 +2.226553000E3,6.412257006E1 +2.226813000E3,5.959239884E1 +2.227137000E3,5.603893495E1 +2.227460000E3,5.807576772E1 +2.227717000E3,6.034272760E1 +2.227950000E3,5.678924442E1 +2.228211000E3,5.767938832E1 +2.228489000E3,4.973605337E1 +2.228742000E3,5.227056153E1 +2.229007000E3,4.524576382E1 +2.229320000E3,5.163901012E1 +2.229633000E3,5.791269320E1 +2.229909000E3,5.832692980E1 +2.230223000E3,5.512940778E1 +2.230487000E3,5.639998631E1 +2.230845000E3,6.012111222E1 +2.231113000E3,6.632176219E1 +2.231407000E3,6.692769565E1 +2.231662000E3,6.409372191E1 +2.231945000E3,6.268702605E1 +2.232208000E3,6.192012265E1 +2.232460000E3,5.923306273E1 +2.232717000E3,5.726340446E1 +2.233005000E3,5.708270925E1 +2.233256000E3,6.172203942E1 +2.233510000E3,6.197059155E1 +2.233807000E3,6.691458644E1 +2.234160000E3,6.165007134E1 +2.234422000E3,6.172053486E1 +2.234714000E3,6.148833899E1 +2.234974000E3,6.190331921E1 +2.235253000E3,5.938090919E1 +2.235479000E3,6.223060920E1 +2.235722000E3,6.133640397E1 +2.236028000E3,6.400294095E1 +2.236269000E3,6.581462957E1 +2.236516000E3,6.094953675E1 +2.236828000E3,5.792232456E1 +2.237124000E3,5.750665846E1 +2.237367000E3,5.360734442E1 +2.237668000E3,5.239836763E1 +2.237914000E3,5.189659577E1 +2.238168000E3,5.779541581E1 +2.238431000E3,5.409030702E1 +2.238689000E3,5.064192938E1 +2.238941000E3,4.890244292E1 +2.239235000E3,4.958738332E1 +2.239486000E3,5.093509792E1 +2.239725000E3,5.421091975E1 +2.239970000E3,6.074883769E1 +2.240298000E3,5.611992467E1 +2.240604000E3,4.988071111E1 +2.240900000E3,4.952063126E1 +2.241187000E3,5.282005772E1 +2.241428000E3,5.672648648E1 +2.241685000E3,5.807464117E1 +2.241973000E3,5.565097745E1 +2.242224000E3,5.410363002E1 +2.242475000E3,5.548804216E1 +2.242720000E3,5.862108370E1 +2.242959000E3,5.101243713E1 +2.243259000E3,5.340920814E1 +2.243564000E3,5.471013043E1 +2.243801000E3,5.474536753E1 +2.244062000E3,5.454012147E1 +2.244333000E3,5.594751460E1 +2.244637000E3,5.486159050E1 +2.244913000E3,5.317501502E1 +2.245138000E3,5.100209753E1 +2.245397000E3,5.436827206E1 +2.245643000E3,5.483479867E1 +2.245916000E3,5.150486026E1 +2.246182000E3,5.049924887E1 +2.246449000E3,5.226067252E1 +2.246744000E3,5.389432372E1 +2.247057000E3,6.032791953E1 +2.247330000E3,5.966662928E1 +2.247666000E3,5.824962285E1 +2.247962000E3,5.700720490E1 +2.248202000E3,6.373200887E1 +2.248495000E3,6.648419927E1 +2.248743000E3,5.542652488E1 +2.249036000E3,5.256926371E1 +2.249272000E3,6.053195001E1 +2.249564000E3,4.959074314E1 +2.249800000E3,5.054384460E1 +2.250136000E3,5.008489809E1 +2.250431000E3,5.752384263E1 +2.250666000E3,5.367007636E1 +2.250931000E3,4.851936559E1 +2.251210000E3,4.965482987E1 +2.251497000E3,5.733244198E1 +2.251772000E3,5.370188093E1 +2.251997000E3,5.388650114E1 +2.252246000E3,5.331606518E1 +2.252516000E3,5.534782747E1 +2.252818000E3,5.271944154E1 +2.253047000E3,5.188974945E1 +2.253402000E3,5.040855384E1 +2.253689000E3,5.348452962E1 +2.253965000E3,5.685197701E1 +2.254240000E3,5.699151925E1 +2.254539000E3,5.217481719E1 +2.254794000E3,5.255063115E1 +2.255035000E3,5.258436032E1 +2.255283000E3,5.228429265E1 +2.255592000E3,5.187189315E1 +2.255851000E3,5.089851896E1 +2.256105000E3,5.323192817E1 +2.256387000E3,5.259240607E1 +2.256752000E3,5.489099725E1 +2.257016000E3,5.140699592E1 +2.257276000E3,5.478139635E1 +2.257600000E3,5.508183343E1 +2.257864000E3,5.539199709E1 +2.258160000E3,5.879728075E1 +2.258399000E3,6.145510373E1 +2.258645000E3,6.018082278E1 +2.258890000E3,6.203490998E1 +2.259131000E3,6.051201097E1 +2.259385000E3,5.741582229E1 +2.259629000E3,5.742200481E1 +2.259994000E3,5.205318956E1 +2.260295000E3,5.807019657E1 +2.260539000E3,5.843419178E1 +2.260841000E3,5.543595349E1 +2.261104000E3,5.208978608E1 +2.261348000E3,5.288295424E1 +2.261601000E3,5.593156434E1 +2.261856000E3,5.600009221E1 +2.262108000E3,5.581775464E1 +2.262358000E3,5.037081152E1 +2.262613000E3,5.059162693E1 +2.262916000E3,5.459372597E1 +2.263271000E3,5.581642194E1 +2.263548000E3,5.702582989E1 +2.263802000E3,5.531282217E1 +2.264049000E3,5.356460573E1 +2.264318000E3,5.682743962E1 +2.264564000E3,5.353127135E1 +2.264854000E3,5.962134934E1 +2.265080000E3,5.858968032E1 +2.265326000E3,5.681259568E1 +2.265625000E3,5.635120121E1 +2.265871000E3,5.433379551E1 +2.266211000E3,4.913835205E1 +2.266510000E3,5.243179137E1 +2.266783000E3,4.886918417E1 +2.267043000E3,4.774131335E1 +2.267292000E3,4.892025491E1 +2.267553000E3,4.710213612E1 +2.267796000E3,4.847827931E1 +2.268042000E3,5.624471818E1 +2.268281000E3,5.286977188E1 +2.268548000E3,5.683989489E1 +2.268800000E3,5.459251055E1 +2.269086000E3,5.272841607E1 +2.269389000E3,5.585343514E1 +2.269616000E3,5.452972356E1 +2.269865000E3,5.183250423E1 +2.270167000E3,4.733442261E1 +2.270442000E3,4.736450762E1 +2.270667000E3,4.430645798E1 +2.270915000E3,4.635257501E1 +2.271160000E3,4.914582650E1 +2.271407000E3,4.938157659E1 +2.271656000E3,4.788630853E1 +2.271896000E3,4.778446083E1 +2.272198000E3,5.081637081E1 +2.272482000E3,4.630509256E1 +2.272722000E3,4.551027932E1 +2.273048000E3,5.074623045E1 +2.273321000E3,4.689236254E1 +2.273562000E3,4.960242652E1 +2.273859000E3,5.310274016E1 +2.274104000E3,5.391997859E1 +2.274392000E3,4.854992165E1 +2.274648000E3,4.610161890E1 +2.274915000E3,5.325141064E1 +2.275196000E3,4.823989698E1 +2.275460000E3,5.167706762E1 +2.275772000E3,4.424461998E1 +2.276008000E3,4.957193490E1 +2.276258000E3,4.220429916E1 +2.276545000E3,4.614900045E1 +2.276809000E3,4.247109284E1 +2.277119000E3,5.104311310E1 +2.277385000E3,4.898949856E1 +2.277651000E3,5.033981280E1 +2.277920000E3,4.504255509E1 +2.278210000E3,4.851295637E1 +2.278452000E3,4.975001222E1 +2.278771000E3,5.198599663E1 +2.279101000E3,5.078534391E1 +2.279348000E3,5.056977572E1 +2.279614000E3,4.645427419E1 +2.279894000E3,4.837428182E1 +2.280121000E3,4.672417188E1 +2.280416000E3,4.338010131E1 +2.280671000E3,4.552410696E1 +2.280941000E3,4.107346609E1 +2.281195000E3,4.850760260E1 +2.281477000E3,4.449785068E1 +2.281730000E3,3.834743898E1 +2.282028000E3,3.160451104E1 +2.282275000E3,2.921367430E1 +2.282509000E3,3.929432216E1 +2.282771000E3,3.560833020E1 +2.283021000E3,4.204425230E1 +2.283277000E3,4.897505461E1 +2.283570000E3,4.492050546E1 +2.283802000E3,4.549624302E1 +2.284053000E3,4.703134831E1 +2.284302000E3,4.492779574E1 +2.284580000E3,5.573526523E1 +2.284888000E3,4.583204799E1 +2.285186000E3,3.987632497E1 +2.285426000E3,4.276483306E1 +2.285670000E3,4.196646636E1 +2.285974000E3,4.127295807E1 +2.286241000E3,3.392540836E1 +2.286513000E3,3.045281657E1 +2.286755000E3,3.056149566E1 +2.287058000E3,4.234115907E1 +2.287358000E3,4.148011807E1 +2.287615000E3,4.752316696E1 +2.287890000E3,4.261643768E1 +2.288186000E3,3.531031146E1 +2.288451000E3,3.336926272E1 +2.288830000E3,3.217663691E1 +2.289083000E3,3.280943829E1 +2.289350000E3,4.037024361E1 +2.289606000E3,4.463743016E1 +2.289870000E3,3.926930450E1 +2.290142000E3,3.549021170E1 +2.290376000E3,3.657210104E1 +2.290669000E3,3.609483404E1 +2.290917000E3,3.935001060E1 +2.291190000E3,3.968762383E1 +2.291417000E3,3.622062011E1 +2.291698000E3,5.052972627E1 +2.292019000E3,4.472329620E1 +2.292314000E3,3.528869928E1 +2.292580000E3,3.171318762E1 +2.292867000E3,3.293682859E1 +2.293112000E3,2.980662334E1 +2.293408000E3,3.108877030E1 +2.293645000E3,3.411108767E1 +2.293948000E3,2.929195023E1 +2.294231000E3,2.830259325E1 +2.294484000E3,2.905088910E1 +2.294732000E3,3.046102835E1 +2.295049000E3,2.679058069E1 +2.295347000E3,2.620731663E1 +2.295594000E3,3.509528145E1 +2.295836000E3,2.657946529E1 +2.296130000E3,2.511368258E1 +2.296378000E3,2.555955915E1 +2.296634000E3,2.785949260E1 +2.296875000E3,2.654407944E1 +2.297117000E3,3.658368449E1 +2.297412000E3,3.412054652E1 +2.297648000E3,3.448252102E1 +2.297956000E3,3.528486686E1 +2.298205000E3,3.265291425E1 +2.298494000E3,2.963788314E1 +2.298798000E3,3.350933300E1 +2.299085000E3,3.038301619E1 +2.299338000E3,3.357142506E1 +2.299610000E3,4.744800671E1 +2.299868000E3,3.435626076E1 +2.300142000E3,3.368274389E1 +2.300402000E3,2.881246111E1 +2.300655000E3,3.097762310E1 +2.300898000E3,2.947567056E1 +2.301182000E3,3.214187359E1 +2.301423000E3,3.421070745E1 +2.301786000E3,5.117970534E1 +2.302087000E3,5.037784077E1 +2.302335000E3,5.283937176E1 +2.302644000E3,5.164119106E1 +2.302941000E3,5.300709748E1 +2.303240000E3,4.713488810E1 +2.303488000E3,4.524114677E1 +2.303739000E3,3.080285972E1 +2.304022000E3,2.293405577E1 +2.304254000E3,2.235464386E1 +2.304552000E3,2.949911358E1 +2.304876000E3,4.141349798E1 +2.305182000E3,4.156611078E1 +2.305491000E3,4.347125429E1 +2.305797000E3,4.579894404E1 +2.306107000E3,4.646123013E1 +2.306358000E3,4.517240887E1 +2.306604000E3,5.308475174E1 +2.306870000E3,4.681256924E1 +2.307168000E3,2.942058533E1 +2.307450000E3,2.986114457E1 +2.307717000E3,3.195150356E1 +2.308031000E3,3.775567348E1 +2.308265000E3,3.823556499E1 +2.308570000E3,2.909536341E1 +2.308842000E3,3.096070220E1 +2.309098000E3,4.060687649E1 +2.309391000E3,4.820113946E1 +2.309687000E3,4.619079404E1 +2.309928000E3,4.304793785E1 +2.310216000E3,4.976144450E1 +2.310446000E3,4.779148829E1 +2.310686000E3,5.167703897E1 +2.310979000E3,3.773719280E1 +2.311248000E3,2.923821784E1 +2.311466000E3,2.654081756E1 +2.311763000E3,2.616593312E1 +2.312001000E3,2.460963519E1 +2.312285000E3,2.554564289E1 +2.312588000E3,3.572755404E1 +2.312856000E3,4.274835909E1 +2.313074000E3,4.355953935E1 +2.313375000E3,5.377727845E1 +2.313611000E3,5.435235813E1 +2.313893000E3,5.477010993E1 +2.314137000E3,5.142421895E1 +2.314483000E3,4.794670725E1 +2.314780000E3,5.149445419E1 +2.315019000E3,5.127618051E1 +2.315306000E3,4.939341348E1 +2.315533000E3,4.928824788E1 +2.315832000E3,4.617335031E1 +2.316069000E3,3.696469062E1 +2.316377000E3,4.552948924E1 +2.316627000E3,4.672923062E1 +2.316913000E3,4.504192742E1 +2.317215000E3,4.364234368E1 +2.317558000E3,4.231291453E1 +2.317853000E3,4.886663905E1 +2.318118000E3,4.492895691E1 +2.318412000E3,4.464681620E1 +2.318711000E3,4.698360224E1 +2.318950000E3,4.454369095E1 +2.319250000E3,4.409609939E1 +2.319494000E3,4.283121809E1 +2.319793000E3,4.398770219E1 +2.320040000E3,4.728522548E1 +2.320336000E3,4.533798443E1 +2.320660000E3,4.548359371E1 +2.320908000E3,4.366718291E1 +2.321152000E3,5.139935964E1 +2.321408000E3,4.747980864E1 +2.321709000E3,3.867643032E1 +2.321952000E3,4.294445900E1 +2.322196000E3,4.336333736E1 +2.322445000E3,3.890531131E1 +2.322682000E3,4.087281677E1 +2.322980000E3,3.979668464E1 +2.323225000E3,4.157042707E1 +2.323553000E3,4.515881082E1 +2.323886000E3,3.868360739E1 +2.324184000E3,4.839319184E1 +2.324428000E3,4.298284223E1 +2.324669000E3,4.433761346E1 +2.324987000E3,4.011512195E1 +2.325233000E3,3.478551365E1 +2.325486000E3,4.180203002E1 +2.325789000E3,4.323726184E1 +2.326086000E3,3.985791110E1 +2.326333000E3,3.946244529E1 +2.326667000E3,4.066537977E1 +2.326925000E3,3.986903649E1 +2.327223000E3,4.142461274E1 +2.327521000E3,3.461788217E1 +2.327778000E3,3.326602717E1 +2.328102000E3,4.357074645E1 +2.328367000E3,5.496493564E1 +2.328618000E3,4.413482695E1 +2.328920000E3,4.170999616E1 +2.329183000E3,4.107694173E1 +2.329486000E3,5.342371220E1 +2.329729000E3,5.103134188E1 +2.330028000E3,4.716459977E1 +2.330382000E3,4.916498276E1 +2.330642000E3,4.801561309E1 +2.330930000E3,4.860033329E1 +2.331211000E3,5.037441690E1 +2.331463000E3,5.227972551E1 +2.331719000E3,4.516533742E1 +2.331971000E3,4.623606604E1 +2.332268000E3,3.207985320E1 +2.332513000E3,3.485208029E1 +2.332801000E3,4.367306984E1 +2.333109000E3,4.764897626E1 +2.333397000E3,4.844411921E1 +2.333779000E3,4.624834459E1 +2.334088000E3,4.492130047E1 +2.334331000E3,4.172849812E1 +2.334618000E3,4.243441154E1 +2.334859000E3,4.155300890E1 +2.335165000E3,3.508017133E1 +2.335414000E3,3.102497597E1 +2.335689000E3,3.346102792E1 +2.335938000E3,2.980210924E1 +2.336237000E3,2.815695425E1 +2.336480000E3,4.530841757E1 +2.336824000E3,4.476742737E1 +2.337075000E3,4.460293889E1 +2.337332000E3,5.054872999E1 +2.337583000E3,4.962100100E1 +2.337845000E3,5.224787063E1 +2.338132000E3,4.845338775E1 +2.338374000E3,4.675501048E1 +2.338651000E3,4.806540095E1 +2.338903000E3,4.707869991E1 +2.339145000E3,4.747595477E1 +2.339395000E3,3.449909829E1 +2.339700000E3,4.619360178E1 +2.340033000E3,4.785644508E1 +2.340329000E3,4.721347586E1 +2.340579000E3,4.302992844E1 +2.340828000E3,4.629706327E1 +2.341122000E3,4.550319757E1 +2.341368000E3,4.510038554E1 +2.341611000E3,4.752886315E1 +2.341876000E3,4.524122211E1 +2.342135000E3,2.990386366E1 +2.342396000E3,3.647672774E1 +2.342679000E3,2.854891758E1 +2.342936000E3,3.995722191E1 +2.343310000E3,4.501906630E1 +2.343555000E3,4.872212276E1 +2.343839000E3,4.566863325E1 +2.344134000E3,3.946814595E1 +2.344384000E3,4.796193013E1 +2.344656000E3,4.858552009E1 +2.344961000E3,4.902627763E1 +2.345257000E3,4.467711671E1 +2.345498000E3,3.756709071E1 +2.345764000E3,2.964206509E1 +2.346064000E3,4.283044167E1 +2.346415000E3,4.191014925E1 +2.346743000E3,4.910031818E1 +2.347021000E3,5.022624274E1 +2.347337000E3,5.257970130E1 +2.347586000E3,4.764257555E1 +2.347831000E3,4.353349182E1 +2.348126000E3,4.318604201E1 +2.348436000E3,4.825752031E1 +2.348710000E3,4.464987037E1 +2.348968000E3,4.690302679E1 +2.349225000E3,4.464063657E1 +2.349495000E3,5.114524492E1 +2.349740000E3,4.345049547E1 +2.350133000E3,4.655800825E1 +2.350382000E3,4.419356370E1 +2.350688000E3,4.308388818E1 +2.350960000E3,4.964188075E1 +2.351269000E3,5.137042419E1 +2.351542000E3,4.751708919E1 +2.351836000E3,3.239228651E1 +2.352067000E3,3.331178705E1 +2.352357000E3,4.628654550E1 +2.352625000E3,4.653844798E1 +2.352938000E3,4.419734850E1 +2.353231000E3,3.771763539E1 +2.353458000E3,3.489550836E1 +2.353713000E3,2.965581776E1 +2.353962000E3,3.457100474E1 +2.354201000E3,3.291595658E1 +2.354446000E3,2.791603976E1 +2.354711000E3,3.307930362E1 +2.355027000E3,5.311162000E1 +2.355290000E3,4.688373373E1 +2.355581000E3,3.663543876E1 +2.355868000E3,2.834403560E1 +2.356176000E3,5.001680718E1 +2.356518000E3,5.349221251E1 +2.356780000E3,5.234097025E1 +2.357043000E3,4.476475434E1 +2.357349000E3,5.160193390E1 +2.357584000E3,4.375385010E1 +2.357840000E3,3.709166207E1 +2.358125000E3,2.927191182E1 +2.358378000E3,4.114289062E1 +2.358676000E3,4.266518399E1 +2.358921000E3,4.641380631E1 +2.359210000E3,4.551221179E1 +2.359545000E3,4.099683883E1 +2.359801000E3,5.202602500E1 +2.360072000E3,5.207875379E1 +2.360343000E3,4.670310433E1 +2.360619000E3,4.619168123E1 +2.360865000E3,4.348453495E1 +2.361113000E3,4.603882932E1 +2.361353000E3,4.061885274E1 +2.361649000E3,4.873355826E1 +2.361884000E3,4.796347566E1 +2.362174000E3,4.419543811E1 +2.362420000E3,4.412529768E1 +2.362674000E3,4.315515456E1 +2.363006000E3,3.718353950E1 +2.363303000E3,4.131746877E1 +2.363556000E3,3.462830696E1 +2.363825000E3,3.224809166E1 +2.364105000E3,2.946532539E1 +2.364420000E3,4.082560353E1 +2.364671000E3,4.169760242E1 +2.364916000E3,4.728483165E1 +2.365158000E3,4.384961396E1 +2.365493000E3,3.327447630E1 +2.365797000E3,2.406470586E1 +2.366141000E3,2.410271882E1 +2.366422000E3,4.124818432E1 +2.366699000E3,4.300386829E1 +2.366994000E3,4.592409288E1 +2.367239000E3,4.402074721E1 +2.367492000E3,4.331525310E1 +2.367744000E3,4.351543939E1 +2.368045000E3,4.861325913E1 +2.368277000E3,4.345520025E1 +2.368543000E3,5.037549285E1 +2.368790000E3,3.455268589E1 +2.369034000E3,3.454484220E1 +2.369300000E3,3.436570372E1 +2.369544000E3,3.180799867E1 +2.369820000E3,4.460893996E1 +2.370091000E3,5.635981603E1 +2.370383000E3,4.932803438E1 +2.370635000E3,5.123791361E1 +2.370939000E3,4.749913119E1 +2.371193000E3,4.606624254E1 +2.371498000E3,4.453668838E1 +2.371779000E3,4.424564317E1 +2.372081000E3,5.022357768E1 +2.372347000E3,4.983363592E1 +2.372720000E3,4.311987242E1 +2.372969000E3,4.071927446E1 +2.373234000E3,3.624584431E1 +2.373535000E3,3.338407859E1 +2.373777000E3,2.744030282E1 +2.374025000E3,4.017686066E1 +2.374281000E3,4.153799732E1 +2.374537000E3,5.163713220E1 +2.374786000E3,4.970373114E1 +2.375033000E3,4.601563593E1 +2.375284000E3,4.943210146E1 +2.375577000E3,5.208741018E1 +2.375935000E3,4.780129348E1 +2.376167000E3,4.632707744E1 +2.376478000E3,5.008962536E1 +2.376734000E3,4.691729314E1 +2.376987000E3,4.593220796E1 +2.377250000E3,4.703621615E1 +2.377550000E3,4.863501898E1 +2.377838000E3,4.747349412E1 +2.378102000E3,4.430216971E1 +2.378373000E3,5.038477253E1 +2.378648000E3,4.679597376E1 +2.378873000E3,3.998762784E1 +2.379232000E3,4.140472709E1 +2.379480000E3,3.803559367E1 +2.379735000E3,4.292956565E1 +2.379993000E3,3.275484639E1 +2.380260000E3,3.159298587E1 +2.380513000E3,3.066195183E1 +2.380756000E3,4.846258942E1 +2.381012000E3,4.617374426E1 +2.381278000E3,4.338282331E1 +2.381580000E3,2.990070560E1 +2.381878000E3,3.384826320E1 +2.382127000E3,4.352773294E1 +2.382476000E3,3.711143795E1 +2.382756000E3,4.818117865E1 +2.383001000E3,4.694356023E1 +2.383312000E3,4.713242320E1 +2.383556000E3,4.945634369E1 +2.383815000E3,3.710449888E1 +2.384109000E3,4.990714727E1 +2.384350000E3,5.101970483E1 +2.384663000E3,4.290224010E1 +2.384917000E3,3.958873166E1 +2.385203000E3,4.207919898E1 +2.385583000E3,3.937588823E1 +2.385864000E3,3.927490117E1 +2.386122000E3,3.708577985E1 +2.386378000E3,3.104425869E1 +2.386630000E3,2.579918418E1 +2.386935000E3,4.201717352E1 +2.387186000E3,4.469788103E1 +2.387445000E3,3.928301867E1 +2.387699000E3,4.425054811E1 +2.387999000E3,2.901032620E1 +2.388242000E3,2.431535493E1 +2.388542000E3,4.330806788E1 +2.388866000E3,4.587852948E1 +2.389138000E3,5.068663336E1 +2.389420000E3,5.151872270E1 +2.389764000E3,4.501157372E1 +2.390012000E3,4.508008781E1 +2.390288000E3,4.471818734E1 +2.390546000E3,4.453717168E1 +2.390828000E3,3.435610332E1 +2.391113000E3,3.644941891E1 +2.391398000E3,3.741409627E1 +2.391658000E3,4.311052254E1 +2.391963000E3,3.924877335E1 +2.392296000E3,3.956869731E1 +2.392537000E3,3.230149795E1 +2.392786000E3,2.941450360E1 +2.393103000E3,3.366208400E1 +2.393349000E3,2.633153711E1 +2.393653000E3,2.492589605E1 +2.393892000E3,3.518582310E1 +2.394201000E3,3.668564238E1 +2.394454000E3,3.528359554E1 +2.394744000E3,3.673717548E1 +2.395034000E3,2.851979476E1 +2.395378000E3,2.558396774E1 +2.395660000E3,3.919896752E1 +2.395930000E3,3.339597104E1 +2.396187000E3,3.351358057E1 +2.396431000E3,3.743420456E1 +2.396691000E3,4.220523227E1 +2.396991000E3,3.500233403E1 +2.397251000E3,3.475187142E1 +2.397513000E3,3.604068947E1 +2.397821000E3,4.628512725E1 +2.398126000E3,4.463943287E1 +2.398428000E3,4.311458163E1 +2.398781000E3,4.375329409E1 +2.399076000E3,3.749705009E1 +2.399316000E3,4.116349149E1 +2.399615000E3,4.694603167E1 +2.399852000E3,5.327851923E1 +2.400143000E3,5.028800274E1 +2.400380000E3,5.055607260E1 +2.400618000E3,4.184216649E1 +2.400901000E3,4.280576865E1 +2.401144000E3,4.285187037E1 +2.401437000E3,5.414729311E1 +2.401684000E3,5.760726428E1 +2.402102000E3,5.135939721E1 +2.402349000E3,5.519633184E1 +2.402608000E3,5.937895156E1 +2.402853000E3,5.722678447E1 +2.403146000E3,5.316891996E1 +2.403388000E3,5.231876976E1 +2.403684000E3,4.275047946E1 +2.403921000E3,4.497010821E1 +2.404216000E3,5.935375427E1 +2.404454000E3,5.736369919E1 +2.404707000E3,5.877823139E1 +2.404971000E3,6.138635894E1 +2.405219000E3,5.726046839E1 +2.405473000E3,5.213953550E1 +2.405771000E3,4.831408459E1 +2.406024000E3,5.195614478E1 +2.406276000E3,4.885485021E1 +2.406567000E3,4.806131720E1 +2.406866000E3,3.817379603E1 +2.407129000E3,3.496803230E1 +2.407401000E3,4.679161915E1 +2.407625000E3,4.456362030E1 +2.407878000E3,4.499112684E1 +2.408171000E3,4.695848411E1 +2.408491000E3,4.136053284E1 +2.408771000E3,3.435960184E1 +2.409033000E3,2.907775515E1 +2.409287000E3,3.179102298E1 +2.409536000E3,2.535492331E1 +2.409797000E3,2.893863695E1 +2.410015000E3,3.195695462E1 +2.410232000E3,2.883661354E1 +2.410481000E3,4.380812340E1 +2.410735000E3,5.435187737E1 +2.411017000E3,4.390478627E1 +2.411330000E3,4.136550501E1 +2.411572000E3,6.231552653E1 +2.411823000E3,4.988484474E1 +2.412072000E3,4.569499772E1 +2.412339000E3,5.207639469E1 +2.412605000E3,5.314724412E1 +2.412842000E3,5.014855129E1 +2.413111000E3,4.925815950E1 +2.413332000E3,5.545199009E1 +2.413608000E3,4.910878211E1 +2.413873000E3,5.481296501E1 +2.414229000E3,4.620355557E1 +2.414532000E3,4.757632406E1 +2.414792000E3,4.414835702E1 +2.415033000E3,4.178334533E1 +2.415296000E3,3.571558610E1 +2.415577000E3,3.622280285E1 +2.415839000E3,4.187963398E1 +2.416103000E3,4.120303067E1 +2.416426000E3,5.043875316E1 +2.416696000E3,4.738536839E1 +2.417006000E3,4.790698669E1 +2.417250000E3,4.717323409E1 +2.417613000E3,4.889624394E1 +2.417923000E3,4.615999302E1 +2.418209000E3,4.554232436E1 +2.418487000E3,4.963147342E1 +2.418748000E3,4.540077281E1 +2.419058000E3,4.402622058E1 +2.419355000E3,3.991430025E1 +2.419631000E3,5.699106589E1 +2.419880000E3,4.542610605E1 +2.420140000E3,5.871400849E1 +2.420387000E3,5.593691155E1 +2.420634000E3,5.642590944E1 +2.420987000E3,4.942882304E1 +2.421235000E3,5.122637091E1 +2.421504000E3,5.506353313E1 +2.421808000E3,4.974630362E1 +2.422098000E3,4.922446567E1 +2.422401000E3,4.711891494E1 +2.422653000E3,4.935851062E1 +2.422946000E3,5.223840607E1 +2.423180000E3,5.181747333E1 +2.423433000E3,5.106095739E1 +2.423699000E3,4.283067128E1 +2.424023000E3,4.620110870E1 +2.424283000E3,4.813646184E1 +2.424556000E3,4.673905704E1 +2.424833000E3,5.139038068E1 +2.425085000E3,4.187355918E1 +2.425330000E3,4.200690239E1 +2.425641000E3,4.094986905E1 +2.425891000E3,3.869951887E1 +2.426156000E3,4.295178440E1 +2.426411000E3,4.445235603E1 +2.426673000E3,4.180705342E1 +2.426915000E3,4.159918394E1 +2.427275000E3,5.193727105E1 +2.427528000E3,4.985744468E1 +2.427773000E3,5.143594155E1 +2.428021000E3,5.687627643E1 +2.428258000E3,4.984177159E1 +2.428554000E3,4.104898524E1 +2.428794000E3,3.740238657E1 +2.429102000E3,4.424577609E1 +2.429345000E3,5.022623751E1 +2.429627000E3,5.346928374E1 +2.429864000E3,4.448852620E1 +2.430156000E3,3.611387858E1 +2.430475000E3,3.592739777E1 +2.430726000E3,3.269867125E1 +2.431039000E3,4.089980433E1 +2.431331000E3,3.752068977E1 +2.431567000E3,3.972155082E1 +2.431870000E3,4.098289208E1 +2.432107000E3,4.068605974E1 +2.432406000E3,3.978950334E1 +2.432643000E3,3.435438837E1 +2.432933000E3,3.806187937E1 +2.433169000E3,3.613809925E1 +2.433407000E3,5.573542624E1 +2.433734000E3,4.812688919E1 +2.434035000E3,5.332611421E1 +2.434315000E3,5.453475878E1 +2.434557000E3,5.156731049E1 +2.434849000E3,4.452924889E1 +2.435086000E3,4.091217005E1 +2.435380000E3,3.495963916E1 +2.435633000E3,3.994418328E1 +2.435904000E3,5.345258512E1 +2.436200000E3,4.573029424E1 +2.436434000E3,4.666848361E1 +2.436802000E3,4.148612785E1 +2.437044000E3,3.785277445E1 +2.437301000E3,3.823545546E1 +2.437549000E3,3.883632471E1 +2.437839000E3,4.756553033E1 +2.438077000E3,4.282797221E1 +2.438369000E3,5.291874167E1 +2.438606000E3,5.394671897E1 +2.438862000E3,5.490926284E1 +2.439159000E3,5.465277565E1 +2.439395000E3,5.245345229E1 +2.439637000E3,4.823915254E1 +2.440022000E3,5.658050668E1 +2.440281000E3,5.255468157E1 +2.440546000E3,4.365897331E1 +2.440828000E3,4.187636724E1 +2.441125000E3,4.916172461E1 +2.441365000E3,5.038635874E1 +2.441645000E3,5.238005511E1 +2.441868000E3,4.979548238E1 +2.442114000E3,5.164563876E1 +2.442410000E3,4.795862612E1 +2.442694000E3,4.406311297E1 +2.442980000E3,4.461066687E1 +2.443265000E3,3.990213588E1 +2.443525000E3,4.270339676E1 +2.443815000E3,4.671533321E1 +2.444064000E3,4.922681237E1 +2.444311000E3,5.115751882E1 +2.444605000E3,4.659279655E1 +2.444851000E3,4.805254743E1 +2.445152000E3,4.646584218E1 +2.445447000E3,3.924248597E1 +2.445698000E3,3.657018775E1 +2.445976000E3,3.978585816E1 +2.446317000E3,5.134473527E1 +2.446569000E3,4.872028256E1 +2.446851000E3,4.793203365E1 +2.447088000E3,4.917648823E1 +2.447345000E3,4.514648035E1 +2.447599000E3,4.827609085E1 +2.447864000E3,5.009329877E1 +2.448138000E3,4.858127151E1 +2.448430000E3,4.885678900E1 +2.448726000E3,4.038666943E1 +2.448956000E3,3.788824065E1 +2.449214000E3,4.872306097E1 +2.449516000E3,5.112419798E1 +2.449767000E3,4.394357347E1 +2.450028000E3,5.187358067E1 +2.450298000E3,4.764520743E1 +2.450575000E3,5.323515688E1 +2.450844000E3,4.730661272E1 +2.451150000E3,5.022143967E1 +2.451400000E3,4.244080150E1 +2.451697000E3,4.540622562E1 +2.452002000E3,4.987171470E1 +2.452273000E3,4.928771096E1 +2.452519000E3,4.415614577E1 +2.452847000E3,4.529816891E1 +2.453138000E3,3.130480949E1 +2.453407000E3,3.727195618E1 +2.453707000E3,4.218798188E1 +2.453975000E3,3.196426842E1 +2.454240000E3,2.986758668E1 +2.454534000E3,4.365366219E1 +2.454795000E3,4.363233606E1 +2.455054000E3,4.576258560E1 +2.455297000E3,4.600510844E1 +2.455546000E3,5.143992334E1 +2.455816000E3,4.451792491E1 +2.456172000E3,3.834658463E1 +2.456438000E3,4.961865906E1 +2.456716000E3,4.301133302E1 +2.457025000E3,5.185950840E1 +2.457284000E3,4.578127088E1 +2.457582000E3,4.860789001E1 +2.457857000E3,4.548301241E1 +2.458087000E3,5.726595471E1 +2.458343000E3,4.581143143E1 +2.458590000E3,4.593076535E1 +2.458898000E3,4.646845677E1 +2.459143000E3,4.385664195E1 +2.459499000E3,3.921291428E1 +2.459756000E3,4.336490005E1 +2.460079000E3,5.059416731E1 +2.460323000E3,5.383728406E1 +2.460609000E3,4.336002656E1 +2.460894000E3,3.810358455E1 +2.461148000E3,4.341384577E1 +2.461406000E3,4.240002850E1 +2.461668000E3,4.220171306E1 +2.461957000E3,4.165441002E1 +2.462218000E3,4.110791112E1 +2.462543000E3,3.718059239E1 +2.462873000E3,4.490190793E1 +2.463162000E3,4.449127269E1 +2.463461000E3,5.110192526E1 +2.463709000E3,4.670759724E1 +2.464024000E3,4.554197086E1 +2.464345000E3,4.295638115E1 +2.464598000E3,4.260186095E1 +2.464844000E3,3.838281454E1 +2.465094000E3,4.864552318E1 +2.465348000E3,4.722694913E1 +2.465597000E3,5.723123112E1 +2.465970000E3,5.678247819E1 +2.466226000E3,5.304857482E1 +2.466490000E3,5.799491543E1 +2.466745000E3,5.566332539E1 +2.467000000E3,5.532803606E1 +2.467301000E3,5.480406224E1 +2.467518000E3,5.281426808E1 +2.467773000E3,5.319750336E1 +2.468030000E3,4.504180471E1 +2.468309000E3,4.011552860E1 +2.468536000E3,3.286668959E1 +2.468782000E3,5.187437917E1 +2.469159000E3,5.342027818E1 +2.469405000E3,4.655027014E1 +2.469685000E3,4.875434900E1 +2.469968000E3,4.400777727E1 +2.470228000E3,4.944370484E1 +2.470524000E3,4.819898526E1 +2.470826000E3,4.906267157E1 +2.471101000E3,4.559683511E1 +2.471407000E3,5.066052597E1 +2.471662000E3,5.052511938E1 +2.471933000E3,4.854316053E1 +2.472243000E3,4.720397127E1 +2.472513000E3,4.539713693E1 +2.472765000E3,4.504800702E1 +2.473077000E3,4.756996091E1 +2.473381000E3,4.502772911E1 +2.473668000E3,4.844141365E1 +2.473909000E3,4.718772198E1 +2.474176000E3,5.036014826E1 +2.474415000E3,4.734822430E1 +2.474659000E3,4.506554867E1 +2.474941000E3,4.590585801E1 +2.475227000E3,4.808550728E1 +2.475549000E3,4.744751902E1 +2.475816000E3,5.139502060E1 +2.476110000E3,4.565542501E1 +2.476367000E3,4.502651441E1 +2.476614000E3,4.529198411E1 +2.476876000E3,4.841642572E1 +2.477138000E3,4.904966766E1 +2.477430000E3,5.061185879E1 +2.477703000E3,4.805167318E1 +2.477973000E3,4.840268940E1 +2.478233000E3,4.609690512E1 +2.478491000E3,5.080806253E1 +2.478854000E3,4.929079330E1 +2.479112000E3,4.887431247E1 +2.479382000E3,4.582116343E1 +2.479677000E3,4.614295426E1 +2.479939000E3,5.004731017E1 +2.480247000E3,5.118895049E1 +2.480496000E3,4.750144805E1 +2.480785000E3,4.691637905E1 +2.481084000E3,4.575243018E1 +2.481328000E3,4.498034363E1 +2.481622000E3,5.049144453E1 +2.481951000E3,4.811617152E1 +2.482214000E3,4.600387593E1 +2.482494000E3,5.163944801E1 +2.482753000E3,4.933311419E1 +2.482991000E3,4.946534766E1 +2.483244000E3,4.580757204E1 +2.483487000E3,4.797573247E1 +2.483734000E3,4.560844100E1 +2.483990000E3,5.039329574E1 +2.484313000E3,5.052905321E1 +2.484577000E3,5.131938081E1 +2.484833000E3,4.901245069E1 +2.485113000E3,5.233648083E1 +2.485461000E3,5.215489758E1 +2.485749000E3,5.451606287E1 +2.486018000E3,5.043201098E1 +2.486334000E3,5.091085093E1 +2.486650000E3,4.972266732E1 +2.486916000E3,4.846864702E1 +2.487167000E3,4.843730663E1 +2.487412000E3,5.285205631E1 +2.487677000E3,5.695937588E1 +2.487965000E3,5.067248408E1 +2.488216000E3,4.955689254E1 +2.488580000E3,4.789771891E1 +2.488828000E3,4.640186686E1 +2.489150000E3,4.956289338E1 +2.489428000E3,4.916705799E1 +2.489718000E3,4.250319869E1 +2.489959000E3,4.211788948E1 +2.490259000E3,4.711467977E1 +2.490508000E3,5.336087879E1 +2.490805000E3,5.163346506E1 +2.491066000E3,5.303328317E1 +2.491377000E3,5.018594076E1 +2.491684000E3,4.569780009E1 +2.492029000E3,4.677168871E1 +2.492273000E3,4.586755987E1 +2.492522000E3,5.020047651E1 +2.492768000E3,4.585538278E1 +2.493006000E3,5.027464230E1 +2.493315000E3,4.719632652E1 +2.493608000E3,4.892998103E1 +2.493874000E3,4.659859577E1 +2.494131000E3,4.485377967E1 +2.494387000E3,4.661063763E1 +2.494635000E3,4.873112034E1 +2.494904000E3,5.011233058E1 +2.495259000E3,4.996207620E1 +2.495523000E3,5.026371938E1 +2.495789000E3,4.897334151E1 +2.496086000E3,4.919412247E1 +2.496330000E3,4.448238049E1 +2.496598000E3,5.779881243E1 +2.496845000E3,5.068443192E1 +2.497079000E3,5.452206946E1 +2.497328000E3,6.091811093E1 +2.497574000E3,5.545025588E1 +2.497819000E3,5.118451852E1 +2.498124000E3,5.647063434E1 +2.498436000E3,5.942897676E1 +2.498681000E3,6.063927987E1 +2.498932000E3,5.256584857E1 +2.499203000E3,5.942844343E1 +2.499465000E3,5.268198933E1 +2.499726000E3,5.561310022E1 +2.499989000E3,5.551348586E1 +2.500270000E3,5.728700965E1 +2.500550000E3,5.848024533E1 +2.500856000E3,5.545551244E1 +2.501156000E3,7.074712648E1 +2.501405000E3,6.649397556E1 +2.501727000E3,6.577106108E1 +2.501964000E3,5.791155905E1 +2.502223000E3,6.571272960E1 +2.502476000E3,5.223691777E1 +2.502731000E3,5.099379006E1 +2.502989000E3,4.996024440E1 +2.503265000E3,4.587573023E1 +2.503515000E3,6.660646739E1 +2.503792000E3,5.426812996E1 +2.504090000E3,4.221263073E1 +2.504348000E3,3.961359220E1 +2.504607000E3,3.317448387E1 +2.504957000E3,2.765634596E1 +2.505202000E3,5.260508289E1 +2.505444000E3,4.970766119E1 +2.505723000E3,5.961421356E1 +2.506010000E3,5.761735716E1 +2.506316000E3,4.386011183E1 +2.506629000E3,3.297646158E1 +2.506928000E3,3.461351567E1 +2.507171000E3,3.422494413E1 +2.507415000E3,3.898815557E1 +2.507661000E3,3.916714623E1 +2.507958000E3,4.409544564E1 +2.508199000E3,4.040812578E1 +2.508495000E3,4.100804729E1 +2.508767000E3,4.155083379E1 +2.509073000E3,4.256659126E1 +2.509346000E3,4.665111645E1 +2.509615000E3,4.785704834E1 +2.509926000E3,4.957995318E1 +2.510246000E3,5.281308228E1 +2.510533000E3,5.716195403E1 +2.510847000E3,5.384222007E1 +2.511087000E3,4.682850643E1 +2.511483000E3,5.585229854E1 +2.511769000E3,5.797880255E1 +2.512061000E3,5.008051045E1 +2.512305000E3,4.616221083E1 +2.512545000E3,5.837834308E1 +2.512782000E3,4.588894556E1 +2.513082000E3,5.827978204E1 +2.513321000E3,5.321307958E1 +2.513625000E3,5.419914666E1 +2.513860000E3,4.249936315E1 +2.514160000E3,5.093700871E1 +2.514505000E3,4.733309734E1 +2.514807000E3,5.739188753E1 +2.515049000E3,5.684870925E1 +2.515326000E3,5.429714525E1 +2.515551000E3,5.304528611E1 +2.515847000E3,6.048302750E1 +2.516097000E3,5.298092655E1 +2.516397000E3,5.664346713E1 +2.516634000E3,5.062362510E1 +2.516910000E3,5.059011404E1 +2.517165000E3,5.074931344E1 +2.517424000E3,5.193937267E1 +2.517672000E3,4.773080825E1 +2.517933000E3,4.886471101E1 +2.518191000E3,4.258084657E1 +2.518440000E3,4.144243799E1 +2.518697000E3,3.266068365E1 +2.518962000E3,3.662092465E1 +2.519211000E3,4.002326553E1 +2.519469000E3,5.193824268E1 +2.519821000E3,5.548381163E1 +2.520087000E3,5.245445808E1 +2.520336000E3,4.447536752E1 +2.520718000E3,5.931091731E1 +2.521010000E3,5.514928156E1 +2.521305000E3,5.194242569E1 +2.521541000E3,5.632439964E1 +2.521781000E3,4.768714929E1 +2.522074000E3,3.967116686E1 +2.522306000E3,3.457523914E1 +2.522554000E3,3.414939493E1 +2.522808000E3,3.034285017E1 +2.523103000E3,3.725639399E1 +2.523347000E3,5.824523011E1 +2.523645000E3,5.697741808E1 +2.524002000E3,5.995361389E1 +2.524244000E3,5.516819042E1 +2.524491000E3,5.520201782E1 +2.524765000E3,4.576677797E1 +2.524988000E3,5.785527848E1 +2.525299000E3,5.093237528E1 +2.525544000E3,4.090627494E1 +2.525822000E3,3.111750175E1 +2.526056000E3,2.764971736E1 +2.526311000E3,2.852524033E1 +2.526617000E3,3.508264660E1 +2.526905000E3,5.067917717E1 +2.527241000E3,4.646824007E1 +2.527487000E3,3.686495987E1 +2.527738000E3,3.822220480E1 +2.527988000E3,3.764348220E1 +2.528232000E3,4.278450517E1 +2.528563000E3,4.881983602E1 +2.528870000E3,4.048435148E1 +2.529125000E3,4.047282835E1 +2.529398000E3,4.602715630E1 +2.529632000E3,4.358719476E1 +2.529925000E3,4.185499728E1 +2.530224000E3,4.428160693E1 +2.530451000E3,5.370094630E1 +2.530771000E3,4.662369716E1 +2.531057000E3,4.486368653E1 +2.531322000E3,3.985753269E1 +2.531579000E3,3.868983993E1 +2.531842000E3,4.397673982E1 +2.532129000E3,4.465178920E1 +2.532379000E3,4.071629694E1 +2.532681000E3,3.700154265E1 +2.532925000E3,3.709745900E1 +2.533169000E3,3.856350220E1 +2.533454000E3,3.780017804E1 +2.533739000E3,4.079153270E1 +2.534053000E3,3.467337947E1 +2.534304000E3,3.872357849E1 +2.534571000E3,4.188092371E1 +2.534878000E3,4.226520735E1 +2.535180000E3,4.433351029E1 +2.535433000E3,4.196124368E1 +2.535679000E3,4.159710638E1 +2.535934000E3,4.131920574E1 +2.536230000E3,4.013333591E1 +2.536496000E3,3.861252617E1 +2.536812000E3,3.205810696E1 +2.537071000E3,3.900017908E1 +2.537321000E3,3.720890888E1 +2.537589000E3,3.571752088E1 +2.537899000E3,3.466875388E1 +2.538158000E3,3.490809444E1 +2.538414000E3,2.846246396E1 +2.538721000E3,3.471466025E1 +2.539000000E3,3.262267006E1 +2.539250000E3,2.900340615E1 +2.539526000E3,2.962734770E1 +2.539843000E3,4.051335289E1 +2.540219000E3,3.732414883E1 +2.540478000E3,3.212776280E1 +2.540731000E3,3.980002135E1 +2.541002000E3,4.402529692E1 +2.541305000E3,3.531142487E1 +2.541570000E3,4.157255463E1 +2.541892000E3,4.121686373E1 +2.542138000E3,3.512055425E1 +2.542435000E3,3.058422839E1 +2.542704000E3,3.860796470E1 +2.542951000E3,4.158955283E1 +2.543254000E3,4.126835549E1 +2.543598000E3,4.557459954E1 +2.543842000E3,4.195620726E1 +2.544088000E3,4.759905541E1 +2.544347000E3,4.089593512E1 +2.544592000E3,4.224934090E1 +2.544840000E3,3.548720999E1 +2.545141000E3,4.189266277E1 +2.545422000E3,4.058854606E1 +2.545652000E3,3.761551365E1 +2.545897000E3,3.643024250E1 +2.546173000E3,3.544845567E1 +2.546439000E3,3.816851754E1 +2.546779000E3,3.801212128E1 +2.547110000E3,3.288266257E1 +2.547379000E3,4.063952307E1 +2.547641000E3,4.765684387E1 +2.547893000E3,4.402640436E1 +2.548143000E3,4.172886183E1 +2.548441000E3,3.808222191E1 +2.548685000E3,3.637035664E1 +2.548962000E3,3.879815953E1 +2.549230000E3,5.433785228E1 +2.549540000E3,5.428002325E1 +2.549852000E3,5.430864003E1 +2.550121000E3,5.376325395E1 +2.550389000E3,5.250586376E1 +2.550641000E3,5.329413218E1 +2.550946000E3,3.817927317E1 +2.551218000E3,3.779289824E1 +2.551493000E3,4.904361964E1 +2.551759000E3,5.500168111E1 +2.552006000E3,4.745774118E1 +2.552261000E3,5.304049624E1 +2.552515000E3,4.933664563E1 +2.552779000E3,3.482983031E1 +2.553043000E3,3.914561037E1 +2.553378000E3,3.318943686E1 +2.553659000E3,2.674748735E1 +2.553917000E3,2.500565902E1 +2.554234000E3,3.331261434E1 +2.554489000E3,3.380079275E1 +2.554753000E3,3.632095841E1 +2.554996000E3,3.606888467E1 +2.555239000E3,4.759559903E1 +2.555541000E3,5.588542149E1 +2.555837000E3,5.768171500E1 +2.556076000E3,5.837962370E1 +2.556358000E3,5.761486260E1 +2.556647000E3,5.408185929E1 +2.556914000E3,5.624815374E1 +2.557248000E3,4.727853091E1 +2.557554000E3,3.999550071E1 +2.557822000E3,4.090986684E1 +2.558062000E3,3.411171601E1 +2.558302000E3,3.042998918E1 +2.558550000E3,3.392526215E1 +2.558807000E3,3.801243567E1 +2.559082000E3,4.390440101E1 +2.559357000E3,4.215163378E1 +2.559616000E3,4.616573562E1 +2.559972000E3,4.170066459E1 +2.560245000E3,2.972551911E1 +2.560517000E3,3.987643023E1 +2.560765000E3,4.046237199E1 +2.561011000E3,4.268708813E1 +2.561258000E3,4.450541644E1 +2.561531000E3,4.611922799E1 +2.561775000E3,4.492719317E1 +2.562027000E3,4.345851098E1 +2.562302000E3,5.022295857E1 +2.562533000E3,4.986016935E1 +2.562786000E3,3.932672790E1 +2.563211000E3,3.777119812E1 +2.563479000E3,4.577537823E1 +2.563731000E3,5.443473776E1 +2.563977000E3,5.947837126E1 +2.564252000E3,5.014881480E1 +2.564539000E3,4.884415531E1 +2.564781000E3,4.451698294E1 +2.565088000E3,3.693106642E1 +2.565361000E3,3.096881298E1 +2.565624000E3,2.635486448E1 +2.565885000E3,2.734213385E1 +2.566246000E3,3.979362654E1 +2.566493000E3,3.382738554E1 +2.566797000E3,3.469438245E1 +2.567097000E3,4.097528595E1 +2.567346000E3,4.285297734E1 +2.567644000E3,4.930003444E1 +2.567891000E3,4.540271843E1 +2.568170000E3,3.109775861E1 +2.568407000E3,2.738661195E1 +2.568701000E3,3.024785153E1 +2.568952000E3,3.235217301E1 +2.569220000E3,3.196941264E1 +2.569567000E3,4.299833718E1 +2.569862000E3,4.496000509E1 +2.570178000E3,4.562225815E1 +2.570442000E3,4.437451260E1 +2.570707000E3,3.949227756E1 +2.570950000E3,2.951847370E1 +2.571202000E3,3.800151296E1 +2.571472000E3,4.650517590E1 +2.571732000E3,3.967561664E1 +2.571975000E3,3.149456620E1 +2.572246000E3,5.234083710E1 +2.572527000E3,4.544839619E1 +2.572859000E3,4.436174777E1 +2.573168000E3,4.369290756E1 +2.573429000E3,4.420543128E1 +2.573728000E3,4.389854646E1 +2.573968000E3,4.580346210E1 +2.574268000E3,4.881141748E1 +2.574509000E3,4.708023256E1 +2.574802000E3,3.388696242E1 +2.575045000E3,2.922489212E1 +2.575339000E3,3.941924125E1 +2.575597000E3,4.733040375E1 +2.575906000E3,4.790376430E1 +2.576245000E3,4.328559785E1 +2.576517000E3,4.720947277E1 +2.576791000E3,4.076260480E1 +2.577092000E3,3.249905806E1 +2.577324000E3,3.886850876E1 +2.577566000E3,3.577483806E1 +2.577814000E3,4.105002685E1 +2.578080000E3,3.881208350E1 +2.578375000E3,5.720708534E1 +2.578624000E3,4.933084675E1 +2.578932000E3,5.989261963E1 +2.579254000E3,5.193127116E1 +2.579506000E3,4.843920497E1 +2.579747000E3,4.570821188E1 +2.580001000E3,4.446748829E1 +2.580244000E3,4.006228376E1 +2.580497000E3,2.933332862E1 +2.580745000E3,4.525678604E1 +2.580989000E3,4.717489692E1 +2.581288000E3,5.239736286E1 +2.581587000E3,5.268105849E1 +2.581851000E3,4.960616241E1 +2.582112000E3,4.637217789E1 +2.582361000E3,4.676379781E1 +2.582583000E3,4.083594902E1 +2.582903000E3,2.696140701E1 +2.583176000E3,2.668057590E1 +2.583429000E3,2.900886287E1 +2.583692000E3,2.732690452E1 +2.583951000E3,3.475308428E1 +2.584205000E3,4.782860484E1 +2.584480000E3,4.928978168E1 +2.584742000E3,3.697304160E1 +2.585017000E3,3.390321432E1 +2.585248000E3,4.818778278E1 +2.585552000E3,5.175969441E1 +2.585851000E3,4.752724055E1 +2.586108000E3,5.047732228E1 +2.586408000E3,5.003267867E1 +2.586651000E3,4.995698879E1 +2.586934000E3,4.985539117E1 +2.587202000E3,4.558719065E1 +2.587455000E3,4.973387236E1 +2.587702000E3,5.190737686E1 +2.587964000E3,4.955516560E1 +2.588211000E3,5.039526507E1 +2.588461000E3,3.897042435E1 +2.588748000E3,2.919124678E1 +2.589063000E3,3.061867322E1 +2.589398000E3,4.010104895E1 +2.589690000E3,3.640442215E1 +2.589998000E3,4.479952304E1 +2.590261000E3,4.757967128E1 +2.590558000E3,4.812333533E1 +2.590802000E3,4.603482331E1 +2.591083000E3,2.960043464E1 +2.591326000E3,3.684354753E1 +2.591591000E3,4.359182452E1 +2.591849000E3,4.788602237E1 +2.592228000E3,4.468031543E1 +2.592527000E3,3.894688899E1 +2.592778000E3,2.800490026E1 +2.593035000E3,4.310888325E1 +2.593333000E3,4.628339380E1 +2.593602000E3,4.440124594E1 +2.593883000E3,4.123163794E1 +2.594160000E3,3.127645239E1 +2.594429000E3,3.071812965E1 +2.594749000E3,4.618618296E1 +2.595070000E3,5.248181749E1 +2.595312000E3,4.786265879E1 +2.595668000E3,3.990233287E1 +2.595973000E3,4.173583037E1 +2.596256000E3,3.709278400E1 +2.596497000E3,3.229385861E1 +2.596813000E3,4.380573021E1 +2.597084000E3,4.783628282E1 +2.597325000E3,5.024593568E1 +2.597578000E3,5.102379549E1 +2.597828000E3,4.760481411E1 +2.598089000E3,3.822780835E1 +2.598387000E3,3.417342767E1 +2.598736000E3,2.863579065E1 +2.598981000E3,2.886228233E1 +2.599228000E3,2.855965247E1 +2.599493000E3,3.083396855E1 +2.599764000E3,3.581659374E1 +2.600032000E3,4.317647632E1 +2.600330000E3,4.853625621E1 +2.600623000E3,5.102467342E1 +2.600867000E3,4.877836926E1 +2.601112000E3,4.705612686E1 +2.601365000E3,4.889085742E1 +2.601612000E3,4.654488136E1 +2.601956000E3,4.055024190E1 +2.602220000E3,3.990851266E1 +2.602547000E3,3.648352551E1 +2.602794000E3,5.324982942E1 +2.603078000E3,5.268965363E1 +2.603338000E3,4.851189142E1 +2.603637000E3,5.135006473E1 +2.603925000E3,4.939301404E1 +2.604238000E3,5.337101389E1 +2.604488000E3,5.022765286E1 +2.604734000E3,5.253186666E1 +2.605064000E3,4.127453431E1 +2.605321000E3,4.114070867E1 +2.605572000E3,4.042282231E1 +2.605820000E3,4.255774466E1 +2.606073000E3,4.746726668E1 +2.606319000E3,4.761848671E1 +2.606565000E3,4.983628061E1 +2.606849000E3,3.046517787E1 +2.607082000E3,3.832211131E1 +2.607339000E3,4.741131966E1 +2.607609000E3,4.453335589E1 +2.607874000E3,3.545592153E1 +2.608197000E3,4.672891376E1 +2.608451000E3,4.755881287E1 +2.608706000E3,4.827652641E1 +2.608952000E3,4.727153141E1 +2.609226000E3,4.731450942E1 +2.609537000E3,3.981385402E1 +2.609784000E3,3.194698732E1 +2.610041000E3,3.314164027E1 +2.610283000E3,2.819786732E1 +2.610546000E3,2.664547785E1 +2.610857000E3,2.913544778E1 +2.611125000E3,3.961651759E1 +2.611432000E3,3.852777426E1 +2.611666000E3,3.205673146E1 +2.611951000E3,4.233182010E1 +2.612229000E3,3.378509898E1 +2.612454000E3,4.071755552E1 +2.612730000E3,5.018278065E1 +2.613050000E3,4.100034395E1 +2.613359000E3,3.892108016E1 +2.613628000E3,5.091321799E1 +2.613871000E3,4.336916838E1 +2.614108000E3,3.960788811E1 +2.614408000E3,3.948227358E1 +2.614722000E3,3.631863435E1 +2.614975000E3,4.057042340E1 +2.615256000E3,4.414132009E1 +2.615486000E3,4.180934435E1 +2.615750000E3,4.153999936E1 +2.615997000E3,3.521796466E1 +2.616260000E3,5.443854687E1 +2.616548000E3,5.408118563E1 +2.616842000E3,4.951275264E1 +2.617090000E3,5.182722031E1 +2.617344000E3,4.327522742E1 +2.617643000E3,5.375122422E1 +2.617975000E3,5.216635190E1 +2.618233000E3,4.126006713E1 +2.618497000E3,4.980260599E1 +2.618804000E3,4.655838197E1 +2.619044000E3,4.977945459E1 +2.619327000E3,4.875559075E1 +2.619562000E3,4.983226039E1 +2.619834000E3,4.741689273E1 +2.620075000E3,4.923498746E1 +2.620352000E3,4.923432072E1 +2.620664000E3,4.040876723E1 +2.620916000E3,3.889825840E1 +2.621142000E3,5.245081579E1 +2.621448000E3,4.684934794E1 +2.621687000E3,4.583906640E1 +2.621992000E3,4.366517623E1 +2.622230000E3,3.373873872E1 +2.622475000E3,3.701694694E1 +2.622750000E3,3.544967426E1 +2.623008000E3,3.363206222E1 +2.623285000E3,4.009589135E1 +2.623562000E3,4.408709562E1 +2.623825000E3,4.800133533E1 +2.624131000E3,4.855432282E1 +2.624414000E3,4.808187444E1 +2.624671000E3,5.252566194E1 +2.624932000E3,4.890333861E1 +2.625183000E3,4.370428781E1 +2.625430000E3,3.668118979E1 +2.625747000E3,4.353955331E1 +2.626003000E3,4.224026412E1 +2.626267000E3,4.311785789E1 +2.626514000E3,3.517806855E1 +2.626763000E3,3.981966751E1 +2.627025000E3,3.444602265E1 +2.627334000E3,3.341390757E1 +2.627660000E3,3.926570124E1 +2.627920000E3,4.341089288E1 +2.628216000E3,4.081134870E1 +2.628467000E3,3.912400300E1 +2.628730000E3,3.657553946E1 +2.629000000E3,3.072838888E1 +2.629284000E3,2.929703023E1 +2.629549000E3,3.378014550E1 +2.629844000E3,4.760306323E1 +2.630080000E3,4.024322042E1 +2.630373000E3,3.235913140E1 +2.630611000E3,3.920509877E1 +2.630919000E3,5.103841717E1 +2.631222000E3,5.813980805E1 +2.631514000E3,5.190256812E1 +2.631753000E3,4.653294376E1 +2.632054000E3,4.782140153E1 +2.632295000E3,4.977458693E1 +2.632592000E3,5.371197571E1 +2.632828000E3,5.056512655E1 +2.633140000E3,5.325824914E1 +2.633383000E3,4.973751947E1 +2.633632000E3,4.853342473E1 +2.633950000E3,3.905011010E1 +2.634254000E3,3.751700759E1 +2.634549000E3,5.292771607E1 +2.634786000E3,5.557450981E1 +2.635082000E3,4.974692283E1 +2.635319000E3,5.393938197E1 +2.635611000E3,4.675981835E1 +2.635848000E3,4.299614910E1 +2.636145000E3,3.756646750E1 +2.636395000E3,3.824353200E1 +2.636648000E3,3.045317917E1 +2.636942000E3,3.257931849E1 +2.637299000E3,3.010616025E1 +2.637599000E3,4.995329379E1 +2.637834000E3,4.824584689E1 +2.638071000E3,5.059212149E1 +2.638363000E3,5.330633429E1 +2.638612000E3,5.343612136E1 +2.638897000E3,4.755550111E1 +2.639122000E3,4.119881812E1 +2.639362000E3,3.902726568E1 +2.639659000E3,4.451944661E1 +2.639896000E3,4.587471035E1 +2.640164000E3,4.115502802E1 +2.640409000E3,4.505311495E1 +2.640656000E3,4.913968689E1 +2.640951000E3,5.110923180E1 +2.641208000E3,4.281604120E1 +2.641505000E3,4.825854961E1 +2.641748000E3,4.861588211E1 +2.642059000E3,4.450542116E1 +2.642304000E3,4.274821036E1 +2.642556000E3,3.503446158E1 +2.642862000E3,4.080900103E1 +2.643164000E3,4.152079562E1 +2.643527000E3,3.935881933E1 +2.643833000E3,3.760570593E1 +2.644082000E3,3.959144469E1 +2.644327000E3,4.007918652E1 +2.644573000E3,4.288120719E1 +2.644814000E3,4.793099478E1 +2.645114000E3,4.424069452E1 +2.645391000E3,4.078427844E1 +2.645635000E3,3.902795236E1 +2.645871000E3,4.393773718E1 +2.646111000E3,4.085627764E1 +2.646355000E3,4.393316509E1 +2.646690000E3,4.428892908E1 +2.646958000E3,4.601464396E1 +2.647235000E3,4.300358696E1 +2.647474000E3,4.083829680E1 +2.647758000E3,5.406220971E1 +2.648003000E3,4.253716581E1 +2.648273000E3,4.506680000E1 +2.648514000E3,3.500046728E1 +2.648758000E3,3.537281462E1 +2.649004000E3,5.013819891E1 +2.649251000E3,5.388943830E1 +2.649556000E3,5.656370208E1 +2.649891000E3,5.696480404E1 +2.650216000E3,4.675400561E1 +2.650515000E3,4.179549274E1 +2.650777000E3,4.536624285E1 +2.651084000E3,4.297370528E1 +2.651336000E3,4.376785410E1 +2.651635000E3,3.354560746E1 +2.651881000E3,2.537939319E1 +2.652180000E3,3.168783420E1 +2.652481000E3,4.898553010E1 +2.652737000E3,5.438993966E1 +2.652992000E3,4.963834041E1 +2.653252000E3,4.227369117E1 +2.653502000E3,4.301436765E1 +2.653812000E3,3.649724292E1 +2.654061000E3,4.086211966E1 +2.654320000E3,3.223281741E1 +2.654605000E3,2.807672508E1 +2.654836000E3,2.764825285E1 +2.655100000E3,4.598866982E1 +2.655350000E3,4.383741939E1 +2.655590000E3,4.883555528E1 +2.655837000E3,4.815765811E1 +2.656131000E3,5.047261312E1 +2.656369000E3,5.124829846E1 +2.656626000E3,3.956134092E1 +2.656925000E3,3.503286763E1 +2.657200000E3,3.224209198E1 +2.657447000E3,4.294806319E1 +2.657761000E3,4.898454413E1 +2.658011000E3,5.320780356E1 +2.658286000E3,5.345186604E1 +2.658542000E3,4.849291145E1 +2.658789000E3,5.098648363E1 +2.659034000E3,4.892931203E1 +2.659289000E3,4.580698225E1 +2.659530000E3,3.709695762E1 +2.659834000E3,3.457925551E1 +2.660081000E3,3.855219813E1 +2.660383000E3,3.845534481E1 +2.660628000E3,4.619372518E1 +2.660921000E3,4.848307744E1 +2.661167000E3,4.790880967E1 +2.661464000E3,4.667520128E1 +2.661710000E3,4.098851532E1 +2.662006000E3,4.035468673E1 +2.662245000E3,3.753010710E1 +2.662592000E3,4.792080660E1 +2.662862000E3,4.709835917E1 +2.663123000E3,3.501409506E1 +2.663374000E3,3.240664296E1 +2.663631000E3,4.326696615E1 +2.663874000E3,4.411177933E1 +2.664133000E3,3.936378145E1 +2.664382000E3,3.443614227E1 +2.664648000E3,3.761654306E1 +2.664944000E3,5.164457484E1 +2.665198000E3,2.810669920E1 +2.665512000E3,2.931307063E1 +2.665876000E3,3.108643425E1 +2.666131000E3,3.278101889E1 +2.666439000E3,4.277860150E1 +2.666693000E3,4.213131936E1 +2.667002000E3,3.935849781E1 +2.667259000E3,4.137879880E1 +2.667575000E3,3.790565018E1 +2.667827000E3,3.845274836E1 +2.668153000E3,3.676763670E1 +2.668452000E3,3.751975183E1 +2.668696000E3,3.224848897E1 +2.669023000E3,3.611134142E1 +2.669316000E3,4.467495655E1 +2.669607000E3,4.735906080E1 +2.669885000E3,5.159453510E1 +2.670167000E3,5.321308782E1 +2.670485000E3,5.282242631E1 +2.670747000E3,5.127719277E1 +2.670997000E3,4.902251972E1 +2.671243000E3,4.450532678E1 +2.671540000E3,3.864078148E1 +2.671788000E3,3.720620343E1 +2.672044000E3,4.496142790E1 +2.672357000E3,4.705640535E1 +2.672617000E3,3.890316941E1 +2.672864000E3,4.027639889E1 +2.673159000E3,4.202335245E1 +2.673421000E3,4.285452583E1 +2.673720000E3,3.626679930E1 +2.673964000E3,4.670395357E1 +2.674210000E3,4.915586670E1 +2.674514000E3,5.353785994E1 +2.674811000E3,5.414016767E1 +2.675048000E3,5.591079353E1 +2.675364000E3,3.844031623E1 +2.675661000E3,3.124520008E1 +2.675946000E3,3.566755596E1 +2.676189000E3,3.490423263E1 +2.676498000E3,5.070292882E1 +2.676799000E3,5.356134163E1 +2.677047000E3,5.161634227E1 +2.677305000E3,5.185439004E1 +2.677581000E3,5.315585532E1 +2.677832000E3,4.418578879E1 +2.678087000E3,3.972693415E1 +2.678335000E3,4.338465258E1 +2.678650000E3,5.168404535E1 +2.678934000E3,4.984483773E1 +2.679249000E3,4.977401184E1 +2.679507000E3,5.044345616E1 +2.679823000E3,4.232585634E1 +2.680128000E3,3.026551109E1 +2.680400000E3,3.009656886E1 +2.680660000E3,4.894119824E1 +2.680913000E3,4.712312643E1 +2.681208000E3,4.239602863E1 +2.681477000E3,4.875338950E1 +2.681768000E3,4.887945421E1 +2.682128000E3,4.379352407E1 +2.682394000E3,4.073494394E1 +2.682637000E3,3.685872977E1 +2.682895000E3,2.883047793E1 +2.683163000E3,3.769147996E1 +2.683455000E3,3.713975885E1 +2.683749000E3,4.855681627E1 +2.683994000E3,4.936430656E1 +2.684290000E3,5.303947120E1 +2.684540000E3,5.031092673E1 +2.684833000E3,4.783130186E1 +2.685073000E3,4.898734587E1 +2.685348000E3,4.686166956E1 +2.685598000E3,4.244245178E1 +2.685917000E3,3.872119900E1 +2.686161000E3,4.891396583E1 +2.686434000E3,4.491629365E1 +2.686687000E3,3.588391777E1 +2.686952000E3,3.156965948E1 +2.687206000E3,3.184725563E1 +2.687480000E3,3.153561496E1 +2.687733000E3,3.669659228E1 +2.688049000E3,3.507922771E1 +2.688340000E3,3.251056517E1 +2.688645000E3,4.079174670E1 +2.688915000E3,4.837277005E1 +2.689163000E3,4.669136560E1 +2.689426000E3,3.659115086E1 +2.689751000E3,4.814125321E1 +2.689994000E3,4.721335081E1 +2.690235000E3,5.119773767E1 +2.690471000E3,4.584232122E1 +2.690738000E3,4.687969307E1 +2.691006000E3,4.116197132E1 +2.691312000E3,2.850019915E1 +2.691659000E3,3.175399572E1 +2.691948000E3,3.215115185E1 +2.692197000E3,2.655209633E1 +2.692466000E3,3.136629444E1 +2.692727000E3,2.928762690E1 +2.692976000E3,2.688909217E1 +2.693281000E3,3.350197248E1 +2.693518000E3,3.760267236E1 +2.693776000E3,3.194141055E1 +2.694032000E3,3.113878807E1 +2.694299000E3,2.830606211E1 +2.694602000E3,2.632227285E1 +2.694941000E3,2.736240000E1 +2.695184000E3,3.956118458E1 +2.695488000E3,4.069974415E1 +2.695732000E3,4.498590768E1 +2.696030000E3,3.370199172E1 +2.696300000E3,3.284857688E1 +2.696535000E3,2.919082343E1 +2.696815000E3,3.146626789E1 +2.697056000E3,2.968971947E1 +2.697354000E3,4.116455896E1 +2.697640000E3,5.055341773E1 +2.697888000E3,5.163434474E1 +2.698155000E3,4.792936353E1 +2.698456000E3,4.111753823E1 +2.698732000E3,4.594070701E1 +2.699031000E3,3.204472070E1 +2.699273000E3,2.836668859E1 +2.699578000E3,2.624009297E1 +2.699855000E3,2.719538340E1 +2.700110000E3,2.868563476E1 +2.700399000E3,2.757039916E1 +2.700662000E3,2.546630310E1 +2.700960000E3,2.981844134E1 +2.701310000E3,3.063471239E1 +2.701629000E3,4.014173680E1 +2.701894000E3,3.281157953E1 +2.702206000E3,4.268438101E1 +2.702448000E3,4.272045970E1 +2.702710000E3,4.782744516E1 +2.702984000E3,4.067538265E1 +2.703255000E3,3.821763448E1 +2.703566000E3,3.373237040E1 +2.703865000E3,2.762261654E1 +2.704108000E3,3.058182972E1 +2.704366000E3,4.157303269E1 +2.704695000E3,4.128988216E1 +2.705002000E3,3.725674585E1 +2.705260000E3,3.318881716E1 +2.705544000E3,3.512644750E1 +2.705774000E3,3.012622541E1 +2.706039000E3,3.307868989E1 +2.706297000E3,3.089854998E1 +2.706599000E3,2.870455364E1 +2.706901000E3,2.573473536E1 +2.707155000E3,2.708285982E1 +2.707419000E3,2.641018696E1 +2.707644000E3,2.532685142E1 +2.707945000E3,2.741320006E1 +2.708188000E3,2.764718970E1 +2.708460000E3,3.745935532E1 +2.708711000E3,4.292241509E1 +2.708955000E3,4.431523077E1 +2.709266000E3,3.812245251E1 +2.709534000E3,3.199637282E1 +2.709802000E3,3.030937111E1 +2.710049000E3,3.172341474E1 +2.710303000E3,4.706685853E1 +2.710610000E3,4.372593931E1 +2.710859000E3,4.298246415E1 +2.711196000E3,4.313732995E1 +2.711485000E3,3.646858634E1 +2.711745000E3,3.547356546E1 +2.712003000E3,4.802507202E1 +2.712259000E3,4.666185634E1 +2.712527000E3,4.298723738E1 +2.712813000E3,3.203029787E1 +2.713082000E3,2.721140687E1 +2.713344000E3,3.967881707E1 +2.713594000E3,5.017429445E1 +2.713859000E3,4.690730331E1 +2.714106000E3,4.892140969E1 +2.714475000E3,4.312346900E1 +2.714730000E3,4.926615820E1 +2.714984000E3,4.690558758E1 +2.715298000E3,3.116292546E1 +2.715563000E3,2.731472603E1 +2.715855000E3,3.029992609E1 +2.716160000E3,3.149201904E1 +2.716442000E3,2.826058660E1 +2.716703000E3,2.713282366E1 +2.716957000E3,3.659207256E1 +2.717253000E3,3.982143620E1 +2.717592000E3,4.316888996E1 +2.717851000E3,4.348787554E1 +2.718149000E3,4.336902207E1 +2.718464000E3,4.494305168E1 +2.718765000E3,4.280996114E1 +2.719042000E3,4.083199069E1 +2.719277000E3,3.924180447E1 +2.719573000E3,2.985025677E1 +2.719800000E3,2.924980764E1 +2.720042000E3,2.589394072E1 +2.720346000E3,2.996884267E1 +2.720607000E3,2.951796470E1 +2.720882000E3,2.762273017E1 +2.721181000E3,4.946261833E1 +2.721422000E3,4.848220411E1 +2.721736000E3,4.816357380E1 +2.722001000E3,5.238238407E1 +2.722305000E3,5.586118797E1 +2.722602000E3,5.474108905E1 +2.722856000E3,5.089156984E1 +2.723105000E3,4.900978141E1 +2.723369000E3,5.541376880E1 +2.723666000E3,4.827427134E1 +2.723997000E3,4.802338633E1 +2.724296000E3,3.537215093E1 +2.724548000E3,3.822637167E1 +2.724844000E3,3.388327957E1 +2.725086000E3,3.756611639E1 +2.725338000E3,4.489615211E1 +2.725635000E3,5.048833137E1 +2.725871000E3,4.298428385E1 +2.726174000E3,3.303114009E1 +2.726475000E3,4.527811220E1 +2.726764000E3,4.815487328E1 +2.727017000E3,4.761823346E1 +2.727328000E3,4.180028821E1 +2.727607000E3,4.512936944E1 +2.727849000E3,4.337880786E1 +2.728101000E3,4.031817829E1 +2.728401000E3,3.509684782E1 +2.728650000E3,4.495565250E1 +2.728895000E3,4.157595660E1 +2.729138000E3,5.008202715E1 +2.729381000E3,5.308960545E1 +2.729622000E3,4.943413955E1 +2.729917000E3,4.820467383E1 +2.730234000E3,5.168344618E1 +2.730544000E3,5.128425900E1 +2.730837000E3,5.242528085E1 +2.731075000E3,5.125548047E1 +2.731382000E3,5.027678189E1 +2.731625000E3,4.595108129E1 +2.731917000E3,5.425640288E1 +2.732229000E3,5.493458667E1 +2.732522000E3,5.383738769E1 +2.732781000E3,4.577468908E1 +2.733036000E3,4.877165484E1 +2.733337000E3,5.155317163E1 +2.733582000E3,4.868465804E1 +2.733904000E3,5.094377769E1 +2.734158000E3,4.778052408E1 +2.734485000E3,4.980696312E1 +2.734788000E3,5.229980528E1 +2.735043000E3,4.487473927E1 +2.735323000E3,5.405477376E1 +2.735550000E3,5.095910777E1 +2.735795000E3,4.081340338E1 +2.736110000E3,3.942379743E1 +2.736352000E3,4.377765131E1 +2.736599000E3,4.311237352E1 +2.736822000E3,4.659947655E1 +2.737071000E3,4.430846393E1 +2.737313000E3,4.579154087E1 +2.737577000E3,4.628223866E1 +2.737831000E3,3.937286623E1 +2.738094000E3,3.852847368E1 +2.738336000E3,3.907921933E1 +2.738583000E3,5.112703685E1 +2.738825000E3,4.827754167E1 +2.739100000E3,4.022366081E1 +2.739352000E3,3.342841986E1 +2.739649000E3,3.354947585E1 +2.740003000E3,2.967395260E1 +2.740259000E3,4.724158021E1 +2.740515000E3,4.406232704E1 +2.740781000E3,4.128290785E1 +2.741030000E3,3.766271195E1 +2.741274000E3,3.234308905E1 +2.741542000E3,5.345026714E1 +2.741790000E3,5.189834860E1 +2.742037000E3,4.310520052E1 +2.742373000E3,3.005340200E1 +2.742661000E3,3.957498865E1 +2.742905000E3,4.298992085E1 +2.743235000E3,3.914359224E1 +2.743487000E3,4.665969106E1 +2.743742000E3,4.569837618E1 +2.743989000E3,4.037243126E1 +2.744288000E3,4.393151618E1 +2.744525000E3,4.191552922E1 +2.744830000E3,3.855450094E1 +2.745068000E3,3.137426682E1 +2.745312000E3,3.988970586E1 +2.745595000E3,4.261856210E1 +2.745912000E3,4.545535941E1 +2.746178000E3,3.982007681E1 +2.746515000E3,3.873990925E1 +2.746799000E3,4.024486228E1 +2.747097000E3,3.778822068E1 +2.747346000E3,3.349647091E1 +2.747587000E3,3.949530039E1 +2.747884000E3,4.424971453E1 +2.748182000E3,4.109440717E1 +2.748426000E3,4.429824127E1 +2.748724000E3,3.941870140E1 +2.749014000E3,3.719766140E1 +2.749309000E3,3.407061301E1 +2.749659000E3,3.362708714E1 +2.749929000E3,4.111324363E1 +2.750185000E3,4.275268079E1 +2.750445000E3,5.624172952E1 +2.750726000E3,4.374037489E1 +2.750957000E3,4.189644016E1 +2.751207000E3,3.621210842E1 +2.751519000E3,4.177841495E1 +2.751770000E3,4.048458953E1 +2.752052000E3,3.923884976E1 +2.752303000E3,3.426258793E1 +2.752575000E3,3.252443323E1 +2.752926000E3,3.211416673E1 +2.753222000E3,3.245023971E1 +2.753483000E3,3.266068265E1 +2.753758000E3,4.004662592E1 +2.754054000E3,4.872983792E1 +2.754320000E3,5.041613029E1 +2.754567000E3,4.540589836E1 +2.754814000E3,3.042430240E1 +2.755080000E3,3.072459076E1 +2.755376000E3,3.998104284E1 +2.755642000E3,4.049850263E1 +2.755970000E3,4.294486763E1 +2.756315000E3,4.067196783E1 +2.756573000E3,4.772031632E1 +2.756825000E3,4.988707098E1 +2.757139000E3,4.555538995E1 +2.757388000E3,4.252022698E1 +2.757651000E3,3.810962452E1 +2.757917000E3,3.494795311E1 +2.758159000E3,3.247098224E1 +2.758413000E3,3.588027190E1 +2.758665000E3,3.200494843E1 +2.758920000E3,4.772506231E1 +2.759171000E3,3.775844318E1 +2.759507000E3,3.920116655E1 +2.759772000E3,4.528245497E1 +2.760086000E3,4.240466142E1 +2.760349000E3,4.544544837E1 +2.760652000E3,4.039389797E1 +2.760923000E3,3.896680017E1 +2.761194000E3,4.381534416E1 +2.761436000E3,4.424202471E1 +2.761681000E3,4.737958135E1 +2.761960000E3,4.213672401E1 +2.762194000E3,4.516117441E1 +2.762462000E3,4.279973284E1 +2.762806000E3,3.859577230E1 +2.763061000E3,4.880977241E1 +2.763403000E3,4.365184399E1 +2.763660000E3,3.848143477E1 +2.763932000E3,4.787104427E1 +2.764214000E3,3.823665924E1 +2.764451000E3,3.049392521E1 +2.764732000E3,3.086844430E1 +2.764975000E3,2.587396098E1 +2.765284000E3,3.362049288E1 +2.765536000E3,3.353664382E1 +2.765825000E3,5.140360254E1 +2.766193000E3,5.105178275E1 +2.766449000E3,5.027787452E1 +2.766756000E3,4.961194015E1 +2.766992000E3,4.473604482E1 +2.767290000E3,5.567849424E1 +2.767540000E3,5.366739238E1 +2.767788000E3,5.268444481E1 +2.768092000E3,4.378358357E1 +2.768389000E3,4.285786187E1 +2.768638000E3,3.838737205E1 +2.768928000E3,4.053738598E1 +2.769250000E3,3.914310468E1 +2.769517000E3,3.950994015E1 +2.769781000E3,4.085678781E1 +2.770095000E3,3.706118568E1 +2.770362000E3,3.878826243E1 +2.770640000E3,4.509160576E1 +2.770877000E3,4.395611401E1 +2.771129000E3,3.894826552E1 +2.771368000E3,3.783168139E1 +2.771620000E3,3.074559821E1 +2.771881000E3,4.191911052E1 +2.772136000E3,4.492008577E1 +2.772447000E3,3.666714779E1 +2.772710000E3,4.135207765E1 +2.772994000E3,4.645886813E1 +2.773238000E3,5.078995440E1 +2.773478000E3,5.706152467E1 +2.773725000E3,5.135582573E1 +2.773990000E3,4.900548267E1 +2.774266000E3,5.275962483E1 +2.774567000E3,3.947101760E1 +2.774806000E3,4.078518654E1 +2.775113000E3,4.929998433E1 +2.775417000E3,4.396253608E1 +2.775784000E3,4.382194135E1 +2.776077000E3,4.131860223E1 +2.776341000E3,4.321133953E1 +2.776596000E3,3.942571045E1 +2.776881000E3,5.035254190E1 +2.777176000E3,5.596334670E1 +2.777432000E3,6.003222989E1 +2.777730000E3,5.139953750E1 +2.778036000E3,5.596001036E1 +2.778330000E3,5.632045587E1 +2.778567000E3,5.352711698E1 +2.778873000E3,5.160150080E1 +2.779243000E3,5.407354895E1 +2.779513000E3,5.151192380E1 +2.779810000E3,5.479493680E1 +2.780084000E3,5.006197117E1 +2.780351000E3,5.012247277E1 +2.780644000E3,4.598086802E1 +2.780884000E3,3.959492635E1 +2.781142000E3,3.571624227E1 +2.781421000E3,4.082207018E1 +2.781720000E3,5.162800696E1 +2.781984000E3,5.211692198E1 +2.782250000E3,5.017743125E1 +2.782617000E3,4.685740156E1 +2.782916000E3,4.348825959E1 +2.783213000E3,3.825858224E1 +2.783454000E3,4.923981343E1 +2.783750000E3,5.319160353E1 +2.783992000E3,4.967899375E1 +2.784288000E3,3.952802481E1 +2.784535000E3,3.328379343E1 +2.784779000E3,3.014350405E1 +2.785020000E3,3.405755755E1 +2.785313000E3,4.653255974E1 +2.785639000E3,4.571255084E1 +2.785896000E3,4.212654376E1 +2.786166000E3,4.635178938E1 +2.786421000E3,4.614547408E1 +2.786716000E3,4.279815144E1 +2.787018000E3,3.739201392E1 +2.787261000E3,4.297599275E1 +2.787569000E3,5.279236826E1 +2.787869000E3,4.385267374E1 +2.788181000E3,3.538660905E1 +2.788488000E3,4.283741498E1 +2.788738000E3,3.898018884E1 +2.789079000E3,4.417569536E1 +2.789327000E3,3.821417555E1 +2.789586000E3,4.124587088E1 +2.789850000E3,4.583617377E1 +2.790116000E3,4.758354441E1 +2.790413000E3,4.386951397E1 +2.790662000E3,4.527431896E1 +2.790956000E3,4.454979637E1 +2.791207000E3,4.019280914E1 +2.791465000E3,4.549375778E1 +2.791714000E3,4.076569420E1 +2.791963000E3,3.807465350E1 +2.792293000E3,5.201775254E1 +2.792550000E3,4.217772267E1 +2.792797000E3,5.472035384E1 +2.793107000E3,5.403984906E1 +2.793357000E3,5.591746790E1 +2.793622000E3,5.564159884E1 +2.793875000E3,5.646584479E1 +2.794118000E3,5.185594958E1 +2.794377000E3,4.895735059E1 +2.794636000E3,5.654557288E1 +2.794943000E3,5.012866956E1 +2.795254000E3,4.757016947E1 +2.795528000E3,5.211434220E1 +2.795790000E3,4.452402763E1 +2.796058000E3,4.290214665E1 +2.796307000E3,3.465820610E1 +2.796556000E3,4.339944359E1 +2.796852000E3,4.313164949E1 +2.797091000E3,5.438037991E1 +2.797389000E3,5.514175593E1 +2.797635000E3,4.928848190E1 +2.797924000E3,4.659784940E1 +2.798220000E3,4.998887096E1 +2.798537000E3,4.486399829E1 +2.798842000E3,4.885866840E1 +2.799091000E3,4.635335968E1 +2.799347000E3,4.504358299E1 +2.799594000E3,3.958005741E1 +2.799833000E3,4.827229253E1 +2.800082000E3,4.830536262E1 +2.800388000E3,4.659260793E1 +2.800673000E3,4.111758509E1 +2.800972000E3,4.464305855E1 +2.801233000E3,4.497276151E1 +2.801524000E3,3.374775892E1 +2.801884000E3,3.426238632E1 +2.802202000E3,3.521995684E1 +2.802451000E3,3.181302785E1 +2.802708000E3,2.794884084E1 +2.803019000E3,3.320140571E1 +2.803325000E3,3.478175393E1 +2.803626000E3,3.529465039E1 +2.803932000E3,3.962950189E1 +2.804222000E3,5.725685057E1 +2.804486000E3,5.740119524E1 +2.804784000E3,5.069347451E1 +2.805056000E3,5.047632669E1 +2.805376000E3,5.207930289E1 +2.805626000E3,5.264810014E1 +2.805887000E3,5.288954519E1 +2.806177000E3,4.457356662E1 +2.806431000E3,3.885566564E1 +2.806679000E3,3.768676842E1 +2.806944000E3,3.953483275E1 +2.807192000E3,4.348722722E1 +2.807514000E3,4.091620627E1 +2.807832000E3,4.192587435E1 +2.808086000E3,4.434501723E1 +2.808380000E3,4.393917252E1 +2.808686000E3,4.250763593E1 +2.809001000E3,4.146719312E1 +2.809249000E3,4.084508562E1 +2.809517000E3,4.466153637E1 +2.809817000E3,4.002274614E1 +2.810111000E3,4.310032831E1 +2.810375000E3,4.901386280E1 +2.810661000E3,4.607368963E1 +2.810927000E3,4.387647276E1 +2.811225000E3,5.143943484E1 +2.811469000E3,5.045193234E1 +2.811861000E3,4.363012565E1 +2.812115000E3,4.450854658E1 +2.812371000E3,4.453857946E1 +2.812631000E3,4.628101753E1 +2.812921000E3,4.634691523E1 +2.813212000E3,4.654803531E1 +2.813510000E3,4.718980060E1 +2.813758000E3,4.430765323E1 +2.814051000E3,4.322664022E1 +2.814349000E3,4.450224091E1 +2.814582000E3,4.170367724E1 +2.814868000E3,3.985315953E1 +2.815113000E3,5.280042862E1 +2.815400000E3,4.119993511E1 +2.815662000E3,4.251502783E1 +2.815937000E3,4.221594106E1 +2.816186000E3,4.475181393E1 +2.816425000E3,4.757705666E1 +2.816666000E3,4.971185267E1 +2.816968000E3,4.862141287E1 +2.817211000E3,4.713523003E1 +2.817492000E3,4.541478066E1 +2.817737000E3,4.363493262E1 +2.817996000E3,4.428814895E1 +2.818246000E3,4.395099122E1 +2.818516000E3,4.781334664E1 +2.818773000E3,4.439472962E1 +2.819027000E3,4.768107540E1 +2.819278000E3,4.535748265E1 +2.819523000E3,5.061196572E1 +2.819779000E3,4.816069594E1 +2.820044000E3,4.715573746E1 +2.820374000E3,4.919198579E1 +2.820635000E3,5.486134785E1 +2.820897000E3,4.845922458E1 +2.821173000E3,4.486224636E1 +2.821520000E3,4.543631827E1 +2.821781000E3,4.823449020E1 +2.822049000E3,4.622456265E1 +2.822354000E3,3.467019045E1 +2.822632000E3,3.820707315E1 +2.822892000E3,3.870865044E1 +2.823175000E3,3.526203974E1 +2.823424000E3,3.398332746E1 +2.823673000E3,4.060940798E1 +2.823924000E3,4.531267955E1 +2.824156000E3,4.823172894E1 +2.824426000E3,5.381643572E1 +2.824772000E3,5.219878503E1 +2.825053000E3,4.888255160E1 +2.825277000E3,4.023650802E1 +2.825526000E3,3.467455539E1 +2.825785000E3,3.818404386E1 +2.826078000E3,4.122702652E1 +2.826315000E3,3.713088668E1 +2.826619000E3,4.891468535E1 +2.826912000E3,5.266971981E1 +2.827148000E3,4.991025067E1 +2.827457000E3,5.435242869E1 +2.827718000E3,5.378448717E1 +2.828053000E3,5.171570017E1 +2.828327000E3,5.600593919E1 +2.828581000E3,5.175339102E1 +2.828821000E3,4.567582373E1 +2.829101000E3,3.417267221E1 +2.829337000E3,3.532670702E1 +2.829576000E3,4.323212593E1 +2.829823000E3,3.952189104E1 +2.830096000E3,4.372473758E1 +2.830363000E3,4.288959864E1 +2.830609000E3,3.903893871E1 +2.830954000E3,3.847274859E1 +2.831281000E3,4.911689413E1 +2.831539000E3,5.342672798E1 +2.831798000E3,5.558955965E1 +2.832091000E3,5.519004987E1 +2.832341000E3,5.877942264E1 +2.832589000E3,4.602825434E1 +2.832861000E3,3.380054471E1 +2.833107000E3,3.583644563E1 +2.833403000E3,4.160983164E1 +2.833653000E3,3.903662215E1 +2.833958000E3,3.879412363E1 +2.834222000E3,4.121083607E1 +2.834460000E3,4.235130104E1 +2.834723000E3,5.615135633E1 +2.834993000E3,5.355273371E1 +2.835271000E3,4.896976792E1 +2.835535000E3,5.132324538E1 +2.835792000E3,5.529277110E1 +2.836041000E3,5.163674064E1 +2.836366000E3,4.657927993E1 +2.836613000E3,4.238907241E1 +2.836875000E3,5.376683406E1 +2.837143000E3,5.052269952E1 +2.837398000E3,5.018740192E1 +2.837697000E3,4.680907883E1 +2.837961000E3,4.427452663E1 +2.838227000E3,3.300759096E1 +2.838490000E3,3.639504198E1 +2.838784000E3,4.617517315E1 +2.839084000E3,4.692063960E1 +2.839325000E3,4.445415179E1 +2.839620000E3,4.215561710E1 +2.839863000E3,4.433766229E1 +2.840168000E3,4.210423337E1 +2.840460000E3,3.873922427E1 +2.840768000E3,3.717852459E1 +2.841057000E3,3.957811826E1 +2.841313000E3,3.760389186E1 +2.841638000E3,4.310249633E1 +2.841921000E3,4.813095040E1 +2.842192000E3,4.623131926E1 +2.842444000E3,4.648620260E1 +2.842743000E3,4.620801315E1 +2.843027000E3,4.321069748E1 +2.843281000E3,4.205248893E1 +2.843587000E3,2.653536028E1 +2.843863000E3,2.940344619E1 +2.844270000E3,4.715941302E1 +2.844533000E3,4.512147604E1 +2.844793000E3,4.758865475E1 +2.845051000E3,4.853448129E1 +2.845325000E3,4.647479098E1 +2.845569000E3,4.600966189E1 +2.845842000E3,4.549543262E1 +2.846088000E3,4.262631529E1 +2.846347000E3,4.522394390E1 +2.846652000E3,4.657245211E1 +2.846924000E3,4.554651191E1 +2.847231000E3,4.501421864E1 +2.847609000E3,4.413715050E1 +2.847859000E3,3.641102730E1 +2.848158000E3,2.959594862E1 +2.848409000E3,3.229903797E1 +2.848684000E3,3.716282001E1 +2.848948000E3,4.864280315E1 +2.849195000E3,4.698625872E1 +2.849453000E3,4.475077374E1 +2.849725000E3,4.320130236E1 +2.850029000E3,4.052232702E1 +2.850286000E3,4.987213531E1 +2.850622000E3,4.470574790E1 +2.850953000E3,4.746715529E1 +2.851224000E3,4.817674396E1 +2.851475000E3,4.755384271E1 +2.851775000E3,4.606857790E1 +2.852037000E3,4.602549066E1 +2.852280000E3,4.107899882E1 +2.852578000E3,4.602936757E1 +2.852832000E3,4.594357604E1 +2.853123000E3,4.132874601E1 +2.853424000E3,3.891402985E1 +2.853676000E3,3.210431116E1 +2.854034000E3,4.148325967E1 +2.854336000E3,4.539420759E1 +2.854629000E3,3.813311910E1 +2.854857000E3,3.204826654E1 +2.855103000E3,4.042825728E1 +2.855348000E3,3.781799437E1 +2.855635000E3,3.485312778E1 +2.855901000E3,3.176423587E1 +2.856194000E3,3.286644404E1 +2.856446000E3,3.601261840E1 +2.856741000E3,3.056779431E1 +2.856990000E3,2.876904683E1 +2.857247000E3,2.336161379E1 +2.857525000E3,5.319777865E1 +2.857765000E3,4.924210585E1 +2.858030000E3,4.161506516E1 +2.858287000E3,3.471025819E1 +2.858592000E3,2.954431085E1 +2.858878000E3,3.551304021E1 +2.859146000E3,4.056554733E1 +2.859438000E3,4.716772205E1 +2.859749000E3,4.728214145E1 +2.860112000E3,4.333221553E1 +2.860355000E3,3.970290127E1 +2.860627000E3,4.675070996E1 +2.860922000E3,5.292655838E1 +2.861168000E3,5.560528000E1 +2.861448000E3,5.155203362E1 +2.861684000E3,4.854372910E1 +2.861981000E3,5.166225265E1 +2.862226000E3,5.239758268E1 +2.862536000E3,4.880079262E1 +2.862801000E3,5.860724491E1 +2.863049000E3,5.487085904E1 +2.863366000E3,4.477307493E1 +2.863622000E3,4.809216762E1 +2.863923000E3,4.128779228E1 +2.864180000E3,4.039902121E1 +2.864473000E3,3.763315716E1 +2.864758000E3,3.836830031E1 +2.865072000E3,3.562217561E1 +2.865375000E3,4.251016575E1 +2.865631000E3,3.959478231E1 +2.865894000E3,3.906491963E1 +2.866161000E3,3.169567809E1 +2.866409000E3,4.180907280E1 +2.866769000E3,5.009501966E1 +2.867095000E3,4.485052737E1 +2.867377000E3,4.543449817E1 +2.867634000E3,4.558186247E1 +2.867912000E3,3.310648260E1 +2.868160000E3,3.368680580E1 +2.868403000E3,3.259924908E1 +2.868652000E3,3.468868920E1 +2.868945000E3,3.811295096E1 +2.869214000E3,3.680532391E1 +2.869523000E3,4.480088276E1 +2.869800000E3,4.321197878E1 +2.870149000E3,3.870196995E1 +2.870426000E3,4.501549736E1 +2.870686000E3,3.869046251E1 +2.870998000E3,5.116138397E1 +2.871259000E3,4.565952095E1 +2.871545000E3,4.044036430E1 +2.871835000E3,3.776423584E1 +2.872146000E3,4.283314388E1 +2.872428000E3,4.822150076E1 +2.872666000E3,4.609488251E1 +2.872966000E3,4.199842198E1 +2.873258000E3,4.199452970E1 +2.873557000E3,4.094164548E1 +2.873868000E3,3.451929232E1 +2.874146000E3,3.725700957E1 +2.874378000E3,3.820854143E1 +2.874632000E3,3.261818797E1 +2.874949000E3,4.229639001E1 +2.875219000E3,4.314663650E1 +2.875496000E3,4.030472415E1 +2.875772000E3,3.740362597E1 +2.876082000E3,3.770704299E1 +2.876334000E3,4.016521241E1 +2.876600000E3,4.155568881E1 +2.876855000E3,3.864643482E1 +2.877164000E3,3.358142820E1 +2.877430000E3,2.988882280E1 +2.877698000E3,4.233125756E1 +2.877954000E3,4.245249096E1 +2.878273000E3,3.619646633E1 +2.878541000E3,3.199868066E1 +2.878801000E3,4.546979293E1 +2.879062000E3,5.523869784E1 +2.879342000E3,5.605267417E1 +2.879584000E3,5.653411529E1 +2.879928000E3,4.626290707E1 +2.880202000E3,3.540012043E1 +2.880447000E3,3.620700172E1 +2.880691000E3,2.922036878E1 +2.880938000E3,3.659816429E1 +2.881251000E3,4.145147882E1 +2.881527000E3,3.894444603E1 +2.881851000E3,3.741315407E1 +2.882112000E3,4.094962867E1 +2.882373000E3,4.333353585E1 +2.882625000E3,4.557565518E1 +2.882879000E3,4.308396997E1 +2.883145000E3,4.097722416E1 +2.883416000E3,3.927850137E1 +2.883669000E3,3.223716221E1 +2.883941000E3,3.004581442E1 +2.884209000E3,3.765685263E1 +2.884466000E3,3.878810543E1 +2.884718000E3,2.988953340E1 +2.884967000E3,3.346960294E1 +2.885221000E3,3.799647420E1 +2.885537000E3,3.116842616E1 +2.885796000E3,3.671552801E1 +2.886084000E3,4.459898232E1 +2.886404000E3,4.708370738E1 +2.886677000E3,5.036035843E1 +2.886979000E3,4.113513329E1 +2.887251000E3,3.503458684E1 +2.887528000E3,3.462090732E1 +2.887785000E3,4.001717165E1 +2.888037000E3,3.538133603E1 +2.888296000E3,3.662805649E1 +2.888547000E3,4.263542947E1 +2.888820000E3,4.431895872E1 +2.889079000E3,4.300413574E1 +2.889340000E3,4.173317530E1 +2.889582000E3,4.288275032E1 +2.889932000E3,3.944773526E1 +2.890197000E3,3.214266541E1 +2.890503000E3,3.060588708E1 +2.890777000E3,3.296322494E1 +2.891017000E3,3.394251803E1 +2.891320000E3,3.208741950E1 +2.891570000E3,3.441770910E1 +2.891849000E3,3.368561294E1 +2.892087000E3,3.475967611E1 +2.892337000E3,3.740055420E1 +2.892635000E3,3.542355307E1 +2.892981000E3,3.105741683E1 +2.893247000E3,3.245614761E1 +2.893513000E3,4.142391644E1 +2.893779000E3,4.497461971E1 +2.894029000E3,4.653178389E1 +2.894282000E3,4.703576342E1 +2.894540000E3,4.751169602E1 +2.894805000E3,4.201422178E1 +2.895062000E3,4.370261317E1 +2.895310000E3,4.660906406E1 +2.895596000E3,4.633159753E1 +2.895865000E3,4.381116332E1 +2.896155000E3,4.368523912E1 +2.896405000E3,4.747051902E1 +2.896651000E3,4.222577444E1 +2.896905000E3,4.572633660E1 +2.897184000E3,5.203776089E1 +2.897450000E3,5.010843836E1 +2.897744000E3,4.910530865E1 +2.898022000E3,4.664859833E1 +2.898308000E3,3.985336775E1 +2.898564000E3,3.683403533E1 +2.898812000E3,4.284820320E1 +2.899091000E3,4.286036404E1 +2.899396000E3,5.224070654E1 +2.899753000E3,4.568546748E1 +2.900018000E3,5.586433220E1 +2.900278000E3,4.514230837E1 +2.900559000E3,3.853422420E1 +2.900865000E3,3.299777990E1 +2.901139000E3,3.594596453E1 +2.901415000E3,2.896001699E1 +2.901650000E3,2.556794162E1 +2.901937000E3,2.525773120E1 +2.902206000E3,3.138035436E1 +2.902457000E3,3.725731802E1 +2.902816000E3,3.600302530E1 +2.903095000E3,3.476106384E1 +2.903340000E3,3.325569458E1 +2.903600000E3,3.217545002E1 +2.903858000E3,2.994578711E1 +2.904108000E3,3.277965280E1 +2.904372000E3,4.013450695E1 +2.904627000E3,3.103730297E1 +2.904913000E3,4.187502355E1 +2.905174000E3,3.591627686E1 +2.905452000E3,3.067277870E1 +2.905743000E3,2.813597523E1 +2.906004000E3,2.760542404E1 +2.906321000E3,3.327793113E1 +2.906579000E3,4.111963776E1 +2.906835000E3,4.309802180E1 +2.907113000E3,2.749088524E1 +2.907354000E3,2.269523459E1 +2.907657000E3,3.631225289E1 +2.907901000E3,4.146405590E1 +2.908156000E3,3.785670954E1 +2.908403000E3,4.498664409E1 +2.908675000E3,4.174614917E1 +2.908932000E3,4.632262643E1 +2.909189000E3,3.569839459E1 +2.909522000E3,4.635385444E1 +2.909802000E3,4.337190367E1 +2.910035000E3,3.796960383E1 +2.910287000E3,4.151951269E1 +2.910538000E3,4.245940710E1 +2.910795000E3,4.268454470E1 +2.911045000E3,4.280139929E1 +2.911335000E3,3.861780445E1 +2.911584000E3,4.028221299E1 +2.911885000E3,3.934408626E1 +2.912139000E3,3.091195323E1 +2.912386000E3,2.709027446E1 +2.912622000E3,2.721294148E1 +2.912915000E3,3.169063213E1 +2.913196000E3,3.663766462E1 +2.913461000E3,3.582442105E1 +2.913744000E3,2.742218375E1 +2.913990000E3,3.432349666E1 +2.914297000E3,4.586386591E1 +2.914575000E3,4.813383402E1 +2.914888000E3,5.016441505E1 +2.915190000E3,4.132593749E1 +2.915481000E3,3.992883324E1 +2.915827000E3,3.713218942E1 +2.916087000E3,4.862036940E1 +2.916351000E3,4.985137398E1 +2.916622000E3,5.126616609E1 +2.916881000E3,4.180876614E1 +2.917157000E3,4.057128207E1 +2.917418000E3,3.994520906E1 +2.917681000E3,3.719846748E1 +2.917964000E3,4.377214072E1 +2.918264000E3,4.081140664E1 +2.918518000E3,4.149712935E1 +2.918784000E3,3.965801174E1 +2.919127000E3,3.499332266E1 +2.919415000E3,3.454976163E1 +2.919745000E3,3.801205804E1 +2.920003000E3,4.266330834E1 +2.920244000E3,3.704497233E1 +2.920548000E3,3.869800412E1 +2.920840000E3,3.880762608E1 +2.921081000E3,3.967826348E1 +2.921325000E3,4.387098551E1 +2.921573000E3,3.795523909E1 +2.921876000E3,3.884773193E1 +2.922122000E3,3.949919351E1 +2.922481000E3,3.549368996E1 +2.922774000E3,5.176437750E1 +2.923023000E3,4.673969779E1 +2.923306000E3,3.729614967E1 +2.923573000E3,3.557242251E1 +2.923880000E3,5.351861504E1 +2.924155000E3,5.486661937E1 +2.924424000E3,5.693150230E1 +2.924735000E3,4.225245527E1 +2.924988000E3,4.082554353E1 +2.925252000E3,3.807826598E1 +2.925573000E3,3.587807510E1 +2.925935000E3,4.290242494E1 +2.926237000E3,3.960438869E1 +2.926496000E3,3.732088357E1 +2.926751000E3,3.216321546E1 +2.926991000E3,3.001846960E1 +2.927295000E3,3.634949804E1 +2.927531000E3,3.127042454E1 +2.927829000E3,3.158500209E1 +2.928073000E3,2.815993792E1 +2.928370000E3,2.793102526E1 +2.928613000E3,2.468786691E1 +2.928943000E3,2.345175993E1 +2.929256000E3,2.908559709E1 +2.929497000E3,2.580950455E1 +2.929819000E3,2.871707976E1 +2.930114000E3,2.977851279E1 +2.930374000E3,4.220437998E1 +2.930636000E3,3.122152770E1 +2.930945000E3,3.902308439E1 +2.931227000E3,3.648582434E1 +2.931474000E3,4.774090674E1 +2.931717000E3,4.487624905E1 +2.931963000E3,4.620728265E1 +2.932258000E3,4.011602626E1 +2.932585000E3,4.011469989E1 +2.932871000E3,4.531107143E1 +2.933117000E3,4.299757904E1 +2.933366000E3,4.255561828E1 +2.933662000E3,4.180851663E1 +2.933899000E3,3.354142728E1 +2.934139000E3,4.061788576E1 +2.934435000E3,3.190428864E1 +2.934678000E3,3.136545948E1 +2.934975000E3,3.172564299E1 +2.935227000E3,3.538616066E1 +2.935577000E3,3.227761247E1 +2.935826000E3,3.587578035E1 +2.936132000E3,2.830690319E1 +2.936391000E3,2.983281120E1 +2.936636000E3,3.198482114E1 +2.936936000E3,4.529436692E1 +2.937191000E3,3.904726622E1 +2.937498000E3,4.546792713E1 +2.937790000E3,4.178984789E1 +2.938055000E3,3.901507008E1 +2.938332000E3,3.530528642E1 +2.938634000E3,3.766035689E1 +2.939060000E3,5.595745424E1 +2.939318000E3,5.800941557E1 +2.939576000E3,5.061871726E1 +2.939836000E3,6.017617924E1 +2.940124000E3,5.889680612E1 +2.940380000E3,5.553527141E1 +2.940631000E3,4.982924060E1 +2.940889000E3,5.386899946E1 +2.941183000E3,5.511436312E1 +2.941477000E3,5.474658637E1 +2.941736000E3,5.669903896E1 +2.941985000E3,5.352207307E1 +2.942302000E3,5.089540084E1 +2.942556000E3,5.163069551E1 +2.942811000E3,4.946827448E1 +2.943144000E3,4.292332560E1 +2.943386000E3,4.769421745E1 +2.943625000E3,4.741300910E1 +2.943936000E3,4.918473310E1 +2.944182000E3,4.358732286E1 +2.944456000E3,4.338106770E1 +2.944722000E3,5.302068646E1 +2.945006000E3,4.800501219E1 +2.945370000E3,4.445792428E1 +2.945619000E3,3.768400599E1 +2.945867000E3,3.829540629E1 +2.946159000E3,3.766669508E1 +2.946411000E3,4.016839261E1 +2.946712000E3,4.041724233E1 +2.947009000E3,4.012217251E1 +2.947323000E3,3.568820570E1 +2.947568000E3,3.690839296E1 +2.947818000E3,4.813137033E1 +2.948084000E3,5.325274156E1 +2.948341000E3,5.892514859E1 +2.948730000E3,4.314585435E1 +2.948980000E3,4.049194134E1 +2.949257000E3,4.522053034E1 +2.949515000E3,4.263261915E1 +2.949826000E3,5.159034358E1 +2.950126000E3,4.094053529E1 +2.950370000E3,4.144504964E1 +2.950613000E3,4.584689520E1 +2.950933000E3,3.986259871E1 +2.951211000E3,5.835616238E1 +2.951492000E3,4.865922153E1 +2.951773000E3,4.646806952E1 +2.952049000E3,5.501145746E1 +2.952349000E3,5.395560549E1 +2.952606000E3,5.094776028E1 +2.952859000E3,5.987933082E1 +2.953123000E3,5.553863596E1 +2.953365000E3,6.056471643E1 +2.953626000E3,5.705129962E1 +2.953881000E3,5.620457969E1 +2.954143000E3,4.633104773E1 +2.954403000E3,4.542785483E1 +2.954666000E3,4.357363747E1 +2.954925000E3,5.905995366E1 +2.955255000E3,5.325307727E1 +2.955500000E3,6.730464031E1 +2.955795000E3,6.362836082E1 +2.956030000E3,6.057596417E1 +2.956332000E3,6.813918985E1 +2.956573000E3,6.403678903E1 +2.956871000E3,6.230635205E1 +2.957135000E3,6.746671531E1 +2.957401000E3,6.427695804E1 +2.957673000E3,5.206458526E1 +2.957933000E3,5.261265827E1 +2.958182000E3,4.877242183E1 +2.958552000E3,6.627461000E1 +2.958808000E3,6.741673158E1 +2.959062000E3,6.597614354E1 +2.959304000E3,6.540552328E1 +2.959551000E3,6.528289091E1 +2.959864000E3,5.830061674E1 +2.960121000E3,5.985112812E1 +2.960428000E3,6.090568068E1 +2.960720000E3,6.807446854E1 +2.960985000E3,6.930722199E1 +2.961226000E3,6.386100217E1 +2.961579000E3,6.028451745E1 +2.961849000E3,6.477814340E1 +2.962132000E3,6.837046944E1 +2.962373000E3,6.647209363E1 +2.962660000E3,6.694202205E1 +2.962967000E3,6.648756695E1 +2.963231000E3,6.482625001E1 +2.963518000E3,7.095796361E1 +2.963775000E3,6.454417662E1 +2.964062000E3,6.533171518E1 +2.964339000E3,6.471819922E1 +2.964629000E3,5.679367810E1 +2.964962000E3,5.573913208E1 +2.965271000E3,6.251351498E1 +2.965502000E3,6.071427502E1 +2.965745000E3,6.212696498E1 +2.966049000E3,5.601947939E1 +2.966292000E3,5.543203731E1 +2.966544000E3,5.440105204E1 +2.966807000E3,5.169354717E1 +2.967114000E3,5.098574914E1 +2.967354000E3,4.778774527E1 +2.967603000E3,5.527018336E1 +2.967874000E3,5.069142516E1 +2.968220000E3,5.540354927E1 +2.968470000E3,5.388190573E1 +2.968725000E3,5.648678631E1 +2.968994000E3,6.195289166E1 +2.969259000E3,5.924073062E1 +2.969526000E3,5.554902217E1 +2.969797000E3,6.073047002E1 +2.970049000E3,5.750580172E1 +2.970375000E3,6.205206850E1 +2.970685000E3,5.892672487E1 +2.971008000E3,5.603539479E1 +2.971306000E3,5.380141597E1 +2.971609000E3,6.182570937E1 +2.971860000E3,5.755792598E1 +2.972120000E3,7.094637252E1 +2.972374000E3,7.220321333E1 +2.972688000E3,6.074903881E1 +2.972946000E3,5.132390204E1 +2.973203000E3,5.555176793E1 +2.973482000E3,5.082163203E1 +2.973746000E3,6.668022761E1 +2.974024000E3,6.951681150E1 +2.974257000E3,6.170353739E1 +2.974507000E3,6.191784425E1 +2.974845000E3,6.249884739E1 +2.975129000E3,6.139715498E1 +2.975385000E3,5.458109058E1 +2.975684000E3,6.285593412E1 +2.975925000E3,6.801445640E1 +2.976223000E3,6.762358149E1 +2.976454000E3,6.007212586E1 +2.976698000E3,6.176376027E1 +2.976998000E3,5.489351528E1 +2.977244000E3,6.419682450E1 +2.977544000E3,6.335879864E1 +2.977813000E3,6.346249627E1 +2.978071000E3,6.122721977E1 +2.978303000E3,6.269343112E1 +2.978564000E3,5.719207644E1 +2.978818000E3,6.209398004E1 +2.979085000E3,6.570545323E1 +2.979335000E3,6.443300698E1 +2.979582000E3,6.395479352E1 +2.979841000E3,6.285971298E1 +2.980091000E3,6.452411240E1 +2.980337000E3,6.648403811E1 +2.980638000E3,6.146510082E1 +2.980898000E3,6.178604521E1 +2.981191000E3,5.906416732E1 +2.981418000E3,6.139524316E1 +2.981668000E3,6.754933795E1 +2.981958000E3,5.804633278E1 +2.982221000E3,5.544285219E1 +2.982480000E3,5.252390700E1 +2.982741000E3,5.442974682E1 +2.983009000E3,5.886662164E1 +2.983270000E3,6.039421332E1 +2.983532000E3,5.984826425E1 +2.983780000E3,6.038747451E1 +2.984020000E3,5.836799318E1 +2.984266000E3,6.011457774E1 +2.984654000E3,6.086793857E1 +2.984928000E3,6.104684994E1 +2.985246000E3,6.081085188E1 +2.985504000E3,6.338602633E1 +2.985771000E3,6.224702903E1 +2.986040000E3,5.771788346E1 +2.986351000E3,5.832375863E1 +2.986657000E3,6.179808645E1 +2.986893000E3,6.074067698E1 +2.987188000E3,5.763905723E1 +2.987459000E3,5.411975455E1 +2.987698000E3,5.609082395E1 +2.988020000E3,5.838775534E1 +2.988261000E3,5.545934196E1 +2.988564000E3,5.818253650E1 +2.988803000E3,5.693365858E1 +2.989084000E3,5.747877452E1 +2.989394000E3,6.108654481E1 +2.989646000E3,6.109521888E1 +2.989952000E3,5.453216708E1 +2.990235000E3,5.325056065E1 +2.990530000E3,5.226229633E1 +2.990796000E3,5.566734434E1 +2.991153000E3,5.983192138E1 +2.991409000E3,5.902282422E1 +2.991712000E3,6.553978750E1 +2.991962000E3,6.323109208E1 +2.992210000E3,6.430699278E1 +2.992477000E3,6.439502996E1 +2.992769000E3,5.882379749E1 +2.993024000E3,7.076998945E1 +2.993317000E3,6.710088514E1 +2.993554000E3,6.332152683E1 +2.993846000E3,6.013348006E1 +2.994081000E3,6.492156154E1 +2.994361000E3,6.054189638E1 +2.994671000E3,5.878685209E1 +2.994911000E3,6.363988355E1 +2.995218000E3,6.266127576E1 +2.995513000E3,6.231860976E1 +2.995750000E3,6.770663238E1 +2.996056000E3,6.411706706E1 +2.996346000E3,6.607053327E1 +2.996592000E3,6.231837938E1 +2.996884000E3,6.235557028E1 +2.997130000E3,6.626149607E1 +2.997386000E3,6.897456616E1 +2.997721000E3,6.896820400E1 +2.997984000E3,5.708709076E1 +2.998260000E3,5.465136518E1 +2.998532000E3,6.136090841E1 +2.998792000E3,6.427324700E1 +2.999047000E3,5.922924051E1 +2.999308000E3,5.964993479E1 +2.999619000E3,5.937495043E1 +2.999910000E3,6.345321013E1 +3.000196000E3,6.558504608E1 +3.000438000E3,6.566442906E1 +3.000721000E3,6.596782674E1 +3.001048000E3,6.493210478E1 +3.001299000E3,6.778071085E1 +3.001554000E3,5.810398860E1 +3.001834000E3,6.461256831E1 +3.002084000E3,5.637103240E1 +3.002332000E3,6.244497501E1 +3.002633000E3,5.749162406E1 +3.002980000E3,6.268391580E1 +3.003246000E3,6.122193913E1 +3.003572000E3,6.467185898E1 +3.003877000E3,6.239318427E1 +3.004266000E3,6.708558966E1 +3.004573000E3,6.293492178E1 +3.004871000E3,6.169168265E1 +3.005129000E3,5.944912128E1 +3.005404000E3,5.631628075E1 +3.005704000E3,6.080609102E1 +3.005964000E3,6.424565764E1 +3.006250000E3,6.447415860E1 +3.006481000E3,6.606824769E1 +3.006756000E3,6.337387069E1 +3.007004000E3,6.294291386E1 +3.007286000E3,6.430484746E1 +3.007612000E3,6.091848593E1 +3.007867000E3,6.343837854E1 +3.008169000E3,5.978702761E1 +3.008432000E3,5.965865421E1 +3.008675000E3,5.540362761E1 +3.008918000E3,5.443572137E1 +3.009202000E3,6.171389250E1 +3.009446000E3,6.487192568E1 +3.009738000E3,5.958143908E1 +3.009983000E3,6.189834719E1 +3.010232000E3,5.752745917E1 +3.010489000E3,6.339873723E1 +3.010846000E3,6.127984243E1 +3.011144000E3,6.065194767E1 +3.011387000E3,6.253646864E1 +3.011646000E3,6.179753794E1 +3.011925000E3,6.231808205E1 +3.012153000E3,6.101579519E1 +3.012442000E3,5.876502421E1 +3.012737000E3,5.809905793E1 +3.013015000E3,5.695141293E1 +3.013301000E3,5.973139928E1 +3.013577000E3,6.007240820E1 +3.013839000E3,7.136453087E1 +3.014063000E3,7.173892024E1 +3.014315000E3,6.885425335E1 +3.014559000E3,6.110376355E1 +3.014808000E3,6.296723224E1 +3.015075000E3,6.021879294E1 +3.015327000E3,6.012811489E1 +3.015577000E3,6.282613373E1 +3.015850000E3,6.884549735E1 +3.016115000E3,6.913958233E1 +3.016397000E3,6.608409337E1 +3.016648000E3,6.437779633E1 +3.016896000E3,6.412579817E1 +3.017253000E3,6.408373459E1 +3.017500000E3,6.487828946E1 +3.017743000E3,6.281964754E1 +3.018003000E3,6.153697843E1 +3.018258000E3,6.503307442E1 +3.018512000E3,6.508021131E1 +3.018791000E3,5.910017780E1 +3.019028000E3,5.757469918E1 +3.019325000E3,5.762978005E1 +3.019573000E3,5.366611226E1 +3.019824000E3,5.708763529E1 +3.020086000E3,5.488621207E1 +3.020437000E3,5.826722905E1 +3.020695000E3,5.951373108E1 +3.020968000E3,6.130623452E1 +3.021217000E3,6.025771329E1 +3.021490000E3,5.280103891E1 +3.021737000E3,6.123009986E1 +3.022037000E3,6.404958762E1 +3.022328000E3,6.469373641E1 +3.022599000E3,6.283727611E1 +3.022840000E3,6.248869497E1 +3.023123000E3,6.767270030E1 +3.023363000E3,6.436289402E1 +3.023706000E3,6.007121161E1 +3.023992000E3,6.067397941E1 +3.024255000E3,6.005092329E1 +3.024513000E3,6.146229561E1 +3.024803000E3,6.214304530E1 +3.025060000E3,6.107977952E1 +3.025317000E3,6.268440106E1 +3.025560000E3,5.744048190E1 +3.025823000E3,6.080102592E1 +3.026092000E3,6.359394744E1 +3.026384000E3,6.219604097E1 +3.026685000E3,6.296073955E1 +3.026912000E3,6.243574530E1 +3.027190000E3,6.540426031E1 +3.027426000E3,7.038009166E1 +3.027684000E3,7.133800291E1 +3.027943000E3,6.847497315E1 +3.028214000E3,7.049817235E1 +3.028486000E3,6.555713643E1 +3.028748000E3,6.762942526E1 +3.029008000E3,6.780082040E1 +3.029264000E3,6.644646205E1 +3.029533000E3,7.066497540E1 +3.029800000E3,6.700863421E1 +3.030174000E3,6.263767412E1 +3.030459000E3,5.937975562E1 +3.030697000E3,6.189133018E1 +3.030958000E3,6.479748496E1 +3.031218000E3,6.070421224E1 +3.031488000E3,5.567295684E1 +3.031754000E3,6.162939414E1 +3.032026000E3,6.462556380E1 +3.032293000E3,6.300561819E1 +3.032553000E3,6.320528504E1 +3.032852000E3,6.205536878E1 +3.033102000E3,7.179598993E1 +3.033490000E3,6.907149718E1 +3.033750000E3,6.110443799E1 +3.034008000E3,5.743025653E1 +3.034257000E3,5.714646515E1 +3.034505000E3,6.193634179E1 +3.034762000E3,6.511685208E1 +3.035034000E3,6.647840023E1 +3.035277000E3,6.637602928E1 +3.035534000E3,6.208743290E1 +3.035873000E3,6.158502662E1 +3.036127000E3,6.138896352E1 +3.036392000E3,5.988342330E1 +3.036737000E3,5.834272912E1 +3.036998000E3,6.504474047E1 +3.037253000E3,5.801637483E1 +3.037569000E3,6.208073459E1 +3.037831000E3,6.555093843E1 +3.038084000E3,6.686352963E1 +3.038356000E3,6.398821865E1 +3.038638000E3,6.053541888E1 +3.038927000E3,5.509282051E1 +3.039228000E3,6.213274835E1 +3.039473000E3,6.149105368E1 +3.039745000E3,6.097957376E1 +3.040056000E3,6.313145073E1 +3.040300000E3,6.749857058E1 +3.040549000E3,6.031561589E1 +3.040852000E3,5.991948868E1 +3.041110000E3,6.228314687E1 +3.041358000E3,6.281493679E1 +3.041621000E3,6.031124820E1 +3.041926000E3,6.035954468E1 +3.042177000E3,6.230627050E1 +3.042448000E3,5.381586458E1 +3.042741000E3,6.032611045E1 +3.043026000E3,5.796046788E1 +3.043304000E3,6.286261594E1 +3.043605000E3,6.188894569E1 +3.043848000E3,6.196336480E1 +3.044091000E3,6.506902622E1 +3.044345000E3,6.547913264E1 +3.044589000E3,6.701681380E1 +3.044849000E3,6.398074775E1 +3.045095000E3,6.102355933E1 +3.045350000E3,6.546609328E1 +3.045598000E3,6.626677347E1 +3.045845000E3,6.212155235E1 +3.046098000E3,6.475032486E1 +3.046433000E3,6.469401418E1 +3.046698000E3,6.335899573E1 +3.046970000E3,5.799459631E1 +3.047267000E3,5.777430210E1 +3.047527000E3,6.228044606E1 +3.047785000E3,5.521572273E1 +3.048044000E3,5.312506195E1 +3.048316000E3,5.877400717E1 +3.048592000E3,6.239358597E1 +3.048842000E3,6.019315355E1 +3.049164000E3,5.944515023E1 +3.049418000E3,6.571719967E1 +3.049752000E3,5.906077781E1 +3.050005000E3,6.269931225E1 +3.050242000E3,6.329267329E1 +3.050532000E3,6.094692628E1 +3.050797000E3,6.137608503E1 +3.051055000E3,6.019630450E1 +3.051299000E3,5.959056092E1 +3.051551000E3,6.195653625E1 +3.051802000E3,5.997942431E1 +3.052044000E3,6.071988649E1 +3.052348000E3,6.146559433E1 +3.052605000E3,6.320542640E1 +3.052903000E3,6.301314639E1 +3.053133000E3,6.491013087E1 +3.053386000E3,5.374424399E1 +3.053632000E3,5.337930652E1 +3.053925000E3,5.830420592E1 +3.054167000E3,5.827724976E1 +3.054414000E3,5.413373264E1 +3.054713000E3,5.438904566E1 +3.054952000E3,5.478972153E1 +3.055245000E3,6.026125791E1 +3.055545000E3,6.377000784E1 +3.055792000E3,6.273059884E1 +3.056116000E3,6.164463909E1 +3.056426000E3,6.310484015E1 +3.056665000E3,6.191865333E1 +3.056974000E3,6.044005004E1 +3.057225000E3,5.723160495E1 +3.057532000E3,6.482171923E1 +3.057799000E3,6.373654624E1 +3.058097000E3,6.579319958E1 +3.058333000E3,6.717439766E1 +3.058632000E3,6.244987186E1 +3.058874000E3,5.911459441E1 +3.059119000E3,6.246625617E1 +3.059514000E3,6.061929027E1 +3.059786000E3,6.141894857E1 +3.060044000E3,6.531006136E1 +3.060311000E3,6.745420282E1 +3.060564000E3,6.305040539E1 +3.060809000E3,6.250223063E1 +3.061063000E3,5.984183740E1 +3.061365000E3,6.201500936E1 +3.061610000E3,6.171968159E1 +3.061853000E3,5.636652524E1 +3.062137000E3,5.937450988E1 +3.062405000E3,5.424162977E1 +3.062724000E3,5.577353705E1 +3.062968000E3,6.265208868E1 +3.063225000E3,6.754657095E1 +3.063470000E3,6.259832443E1 +3.063731000E3,5.846954403E1 +3.063975000E3,5.735719718E1 +3.064220000E3,5.614657426E1 +3.064460000E3,5.493678071E1 +3.064711000E3,6.175770153E1 +3.064961000E3,6.502893325E1 +3.065266000E3,6.372557142E1 +3.065562000E3,6.165604672E1 +3.065921000E3,6.202265536E1 +3.066181000E3,5.894659424E1 +3.066427000E3,5.516515279E1 +3.066669000E3,5.227763917E1 +3.066911000E3,5.331294555E1 +3.067166000E3,5.535383534E1 +3.067460000E3,5.490405248E1 +3.067721000E3,5.927902794E1 +3.068030000E3,6.001209348E1 +3.068288000E3,5.925707402E1 +3.068553000E3,6.116769528E1 +3.068848000E3,5.907075037E1 +3.069160000E3,5.402384091E1 +3.069467000E3,6.078433547E1 +3.069706000E3,6.064305090E1 +3.069991000E3,6.099922555E1 +3.070247000E3,6.081028216E1 +3.070500000E3,6.857342881E1 +3.070795000E3,6.830085683E1 +3.071035000E3,7.092929468E1 +3.071334000E3,6.670654987E1 +3.071580000E3,6.198358410E1 +3.071845000E3,6.029427505E1 +3.072216000E3,6.271100503E1 +3.072476000E3,6.548403896E1 +3.072709000E3,6.655140024E1 +3.072958000E3,6.872933885E1 +3.073221000E3,6.840034062E1 +3.073524000E3,6.189262665E1 +3.073801000E3,6.315516618E1 +3.074029000E3,6.431689152E1 +3.074282000E3,7.008635825E1 +3.074531000E3,6.529488526E1 +3.074781000E3,5.362885622E1 +3.075079000E3,6.174622467E1 +3.075321000E3,6.106059522E1 +3.075569000E3,6.727558853E1 +3.075841000E3,6.068477373E1 +3.076089000E3,6.224550385E1 +3.076358000E3,6.049387981E1 +3.076618000E3,5.554290122E1 +3.076868000E3,5.232623619E1 +3.077136000E3,5.715980006E1 +3.077434000E3,6.112308912E1 +3.077738000E3,5.964598426E1 +3.077997000E3,5.774993649E1 +3.078301000E3,5.930552673E1 +3.078632000E3,6.204668908E1 +3.078903000E3,6.135182684E1 +3.079234000E3,6.010535577E1 +3.079530000E3,5.612975229E1 +3.079846000E3,5.894789721E1 +3.080130000E3,6.424282153E1 +3.080395000E3,6.696093787E1 +3.080696000E3,5.929656512E1 +3.080931000E3,5.577162965E1 +3.081168000E3,6.096321541E1 +3.081415000E3,6.147204445E1 +3.081708000E3,6.518353223E1 +3.082066000E3,6.565001970E1 +3.082347000E3,6.152216198E1 +3.082591000E3,6.232488129E1 +3.082884000E3,6.450829181E1 +3.083131000E3,6.727741702E1 +3.083373000E3,6.596172391E1 +3.083615000E3,6.588974420E1 +3.083909000E3,6.215985231E1 +3.084146000E3,5.417797447E1 +3.084444000E3,5.776086644E1 +3.084736000E3,6.145598006E1 +3.085067000E3,6.705675690E1 +3.085353000E3,7.032609091E1 +3.085621000E3,6.942809802E1 +3.085926000E3,6.673219093E1 +3.086170000E3,5.874483463E1 +3.086457000E3,6.163530440E1 +3.086730000E3,5.863155738E1 +3.086955000E3,5.804604701E1 +3.087247000E3,7.202263239E1 +3.087542000E3,6.907595594E1 +3.087796000E3,7.104760035E1 +3.088063000E3,6.060670654E1 +3.088371000E3,6.409876160E1 +3.088642000E3,6.504332531E1 +3.088891000E3,6.050178076E1 +3.089172000E3,5.988548041E1 +3.089448000E3,6.419311516E1 +3.089715000E3,6.072209436E1 +3.089992000E3,6.148544930E1 +3.090256000E3,6.667985585E1 +3.090551000E3,6.360479893E1 +3.090829000E3,6.675347002E1 +3.091081000E3,6.585951744E1 +3.091337000E3,5.998998345E1 +3.091582000E3,7.213751425E1 +3.091973000E3,7.002319175E1 +3.092225000E3,6.554991346E1 +3.092495000E3,5.438962824E1 +3.092757000E3,5.806427109E1 +3.093010000E3,5.611571138E1 +3.093290000E3,5.427298566E1 +3.093553000E3,6.332676554E1 +3.093801000E3,6.191283999E1 +3.094088000E3,6.222056485E1 +3.094383000E3,6.679558422E1 +3.094660000E3,6.396349695E1 +3.094980000E3,6.335657582E1 +3.095321000E3,6.368682935E1 +3.095574000E3,6.239728447E1 +3.095829000E3,6.560913932E1 +3.096083000E3,6.288470186E1 +3.096327000E3,6.063834800E1 +3.096611000E3,5.698542980E1 +3.096866000E3,6.214573666E1 +3.097125000E3,6.108001307E1 +3.097382000E3,6.098898235E1 +3.097639000E3,6.935379750E1 +3.097944000E3,6.076333803E1 +3.098235000E3,5.747447310E1 +3.098595000E3,5.896750888E1 +3.098845000E3,6.428262322E1 +3.099146000E3,6.073561603E1 +3.099435000E3,5.610862272E1 +3.099679000E3,5.808393750E1 +3.099971000E3,6.306244141E1 +3.100214000E3,6.493760740E1 +3.100511000E3,5.964091377E1 +3.100753000E3,5.949423253E1 +3.100995000E3,6.324186751E1 +3.101237000E3,6.294719776E1 +3.101481000E3,6.618420708E1 +3.101805000E3,6.039251647E1 +3.102105000E3,6.883376735E1 +3.102388000E3,6.215701199E1 +3.102635000E3,6.251944475E1 +3.102926000E3,6.387718652E1 +3.103175000E3,6.262879933E1 +3.103469000E3,6.094246273E1 +3.103717000E3,5.780442917E1 +3.104010000E3,5.805018882E1 +3.104245000E3,6.073911170E1 +3.104537000E3,5.820155990E1 +3.104880000E3,5.691870737E1 +3.105139000E3,5.609187778E1 +3.105418000E3,5.368790307E1 +3.105673000E3,5.733127796E1 +3.105933000E3,5.834617124E1 +3.106196000E3,5.665251568E1 +3.106447000E3,5.839993992E1 +3.106707000E3,5.765825797E1 +3.106989000E3,6.346036236E1 +3.107241000E3,6.088974139E1 +3.107536000E3,5.623231578E1 +3.107836000E3,5.905990454E1 +3.108208000E3,5.913546091E1 +3.108462000E3,5.921957697E1 +3.108732000E3,6.403378055E1 +3.109010000E3,6.829473891E1 +3.109237000E3,6.866131452E1 +3.109530000E3,5.759864554E1 +3.109769000E3,5.216447932E1 +3.110067000E3,5.887622687E1 +3.110356000E3,5.912152229E1 +3.110621000E3,6.343631440E1 +3.110862000E3,6.110189356E1 +3.111105000E3,5.925249209E1 +3.111441000E3,5.583559168E1 +3.111708000E3,6.397874973E1 +3.112049000E3,5.864630935E1 +3.112314000E3,5.876030726E1 +3.112620000E3,5.558460131E1 +3.112980000E3,5.336927775E1 +3.113232000E3,5.351895645E1 +3.113515000E3,4.932805120E1 +3.113763000E3,6.323075662E1 +3.114057000E3,6.375401647E1 +3.114318000E3,6.430798012E1 +3.114651000E3,6.745313705E1 +3.114909000E3,6.370697195E1 +3.115204000E3,6.719832935E1 +3.115517000E3,6.353352979E1 +3.115816000E3,6.421660294E1 +3.116074000E3,6.666449428E1 +3.116372000E3,6.209745804E1 +3.116612000E3,5.853853683E1 +3.116911000E3,6.153177442E1 +3.117151000E3,6.465277685E1 +3.117439000E3,6.054074617E1 +3.117698000E3,5.762180605E1 +3.118029000E3,5.904912096E1 +3.118292000E3,6.054469105E1 +3.118547000E3,6.570885599E1 +3.118854000E3,6.686989978E1 +3.119103000E3,6.506823644E1 +3.119359000E3,5.780133308E1 +3.119610000E3,5.983707630E1 +3.119896000E3,6.102798325E1 +3.120167000E3,5.940835035E1 +3.120446000E3,6.154008300E1 +3.120717000E3,6.031178539E1 +3.120969000E3,6.222997321E1 +3.121291000E3,6.676268308E1 +3.121532000E3,6.244629438E1 +3.121778000E3,6.014719673E1 +3.122038000E3,6.351124664E1 +3.122317000E3,5.786579019E1 +3.122607000E3,5.704033688E1 +3.122864000E3,5.941823253E1 +3.123160000E3,6.366298469E1 +3.123429000E3,6.545330590E1 +3.123678000E3,6.206143443E1 +3.123932000E3,6.250040348E1 +3.124250000E3,6.193784317E1 +3.124582000E3,6.679802083E1 +3.124888000E3,6.239911876E1 +3.125141000E3,6.227743005E1 +3.125407000E3,5.930162190E1 +3.125655000E3,5.692493613E1 +3.125897000E3,6.100851678E1 +3.126155000E3,6.356932883E1 +3.126470000E3,6.583742229E1 +3.126735000E3,6.828531785E1 +3.127049000E3,6.744954014E1 +3.127349000E3,6.892448306E1 +3.127620000E3,6.312172108E1 +3.127885000E3,6.549450530E1 +3.128150000E3,6.274114245E1 +3.128434000E3,5.987443555E1 +3.128694000E3,5.754092402E1 +3.128967000E3,6.140483336E1 +3.129224000E3,5.793735580E1 +3.129483000E3,5.640840091E1 +3.129735000E3,7.068460790E1 +3.130042000E3,6.831622259E1 +3.130308000E3,6.661131327E1 +3.130563000E3,7.032191033E1 +3.130897000E3,6.429012882E1 +3.131166000E3,6.890779868E1 +3.131427000E3,6.812897599E1 +3.131726000E3,6.440583932E1 +3.132039000E3,6.371305855E1 +3.132310000E3,6.071113649E1 +3.132582000E3,6.356904702E1 +3.132834000E3,6.335195410E1 +3.133078000E3,5.922748305E1 +3.133357000E3,5.790290676E1 +3.133581000E3,6.067150466E1 +3.133827000E3,5.936438225E1 +3.134075000E3,5.651144024E1 +3.134312000E3,5.707156804E1 +3.134564000E3,6.256442790E1 +3.134822000E3,5.680653319E1 +3.135099000E3,6.386946987E1 +3.135341000E3,6.183817556E1 +3.135588000E3,5.791592939E1 +3.135843000E3,5.415500200E1 +3.136159000E3,5.828393923E1 +3.136402000E3,5.584102234E1 +3.136645000E3,5.843965538E1 +3.136922000E3,6.032067675E1 +3.137231000E3,6.082235855E1 +3.137514000E3,6.216335250E1 +3.137763000E3,6.576895249E1 +3.138052000E3,5.935628673E1 +3.138348000E3,5.697436057E1 +3.138590000E3,6.713499986E1 +3.138833000E3,5.996032355E1 +3.139071000E3,6.566814076E1 +3.139366000E3,6.469315039E1 +3.139607000E3,6.414816039E1 +3.139901000E3,6.238348704E1 +3.140144000E3,5.975478602E1 +3.140477000E3,5.617333113E1 +3.140789000E3,6.140881460E1 +3.141038000E3,5.760925345E1 +3.141323000E3,5.813474075E1 +3.141616000E3,6.190304914E1 +3.141899000E3,5.853813516E1 +3.142123000E3,6.019478920E1 +3.142387000E3,5.824830032E1 +3.142639000E3,6.031650371E1 +3.142898000E3,5.874305926E1 +3.143211000E3,6.365997735E1 +3.143459000E3,6.182267241E1 +3.143814000E3,6.153305629E1 +3.144076000E3,6.040235966E1 +3.144345000E3,6.279707978E1 +3.144591000E3,6.261441373E1 +3.144837000E3,5.722591859E1 +3.145082000E3,5.791919274E1 +3.145387000E3,6.142016587E1 +3.145678000E3,5.996802308E1 +3.145994000E3,5.761245992E1 +3.146269000E3,5.915341256E1 +3.146531000E3,5.679987844E1 +3.146814000E3,6.228452904E1 +3.147163000E3,6.038592359E1 +3.147440000E3,6.662509726E1 +3.147705000E3,5.864713600E1 +3.147961000E3,6.383827006E1 +3.148228000E3,6.445939632E1 +3.148543000E3,6.206597752E1 +3.148800000E3,6.082056407E1 +3.149046000E3,5.872798480E1 +3.149340000E3,5.792404132E1 +3.149585000E3,5.917409009E1 +3.149845000E3,5.619795947E1 +3.150164000E3,6.447379623E1 +3.150501000E3,6.336546747E1 +3.150798000E3,6.022605646E1 +3.151059000E3,5.837139298E1 +3.151360000E3,5.721847889E1 +3.151614000E3,7.085699981E1 +3.151908000E3,6.031233854E1 +3.152206000E3,6.170839562E1 +3.152452000E3,6.336115962E1 +3.152697000E3,6.732286145E1 +3.152943000E3,6.043278366E1 +3.153235000E3,5.822950572E1 +3.153537000E3,6.155234216E1 +3.153813000E3,5.671966020E1 +3.154078000E3,5.613348243E1 +3.154333000E3,5.384913785E1 +3.154580000E3,5.739778382E1 +3.154869000E3,5.617144196E1 +3.155103000E3,5.699346940E1 +3.155351000E3,6.356393037E1 +3.155653000E3,5.483372318E1 +3.155949000E3,5.806865262E1 +3.156195000E3,5.725879338E1 +3.156459000E3,5.708272088E1 +3.156776000E3,5.736330762E1 +3.157028000E3,5.620178265E1 +3.157280000E3,5.557503250E1 +3.157521000E3,6.379766868E1 +3.157864000E3,6.175462639E1 +3.158113000E3,5.970375584E1 +3.158365000E3,5.482220327E1 +3.158625000E3,6.094938302E1 +3.158872000E3,6.189076140E1 +3.159128000E3,6.365906369E1 +3.159385000E3,6.365252593E1 +3.159699000E3,6.421784723E1 +3.160039000E3,5.952347777E1 +3.160337000E3,6.582170091E1 +3.160643000E3,6.400621400E1 +3.160905000E3,5.982923632E1 +3.161162000E3,5.912958512E1 +3.161449000E3,5.744161350E1 +3.161722000E3,6.208953034E1 +3.161984000E3,6.743490019E1 +3.162228000E3,5.893358785E1 +3.162506000E3,6.260442429E1 +3.162777000E3,6.054589944E1 +3.163072000E3,5.958101250E1 +3.163380000E3,5.756716970E1 +3.163623000E3,5.897741262E1 +3.163916000E3,5.199350029E1 +3.164173000E3,5.607364633E1 +3.164444000E3,6.846587546E1 +3.164756000E3,5.833953537E1 +3.165011000E3,6.699601536E1 +3.165255000E3,6.024033326E1 +3.165530000E3,5.636786936E1 +3.165825000E3,5.917346905E1 +3.166077000E3,5.684739711E1 +3.166343000E3,5.441684119E1 +3.166607000E3,5.708423030E1 +3.166871000E3,5.726160097E1 +3.167212000E3,5.795085756E1 +3.167513000E3,5.359033433E1 +3.167800000E3,5.481028168E1 +3.168051000E3,5.771426852E1 +3.168321000E3,5.720698183E1 +3.168574000E3,6.029484328E1 +3.168847000E3,6.594273179E1 +3.169141000E3,5.814954146E1 +3.169451000E3,5.741553332E1 +3.169717000E3,5.474949866E1 +3.170064000E3,5.858087337E1 +3.170388000E3,5.901398101E1 +3.170689000E3,6.599046976E1 +3.170942000E3,6.777823262E1 +3.171184000E3,6.339704259E1 +3.171437000E3,5.678237753E1 +3.171694000E3,6.067324941E1 +3.171975000E3,6.337570500E1 +3.172215000E3,6.060254578E1 +3.172509000E3,6.511602204E1 +3.172792000E3,6.491523998E1 +3.173086000E3,6.236437487E1 +3.173442000E3,6.132637014E1 +3.173725000E3,5.575670785E1 +3.173997000E3,5.450541115E1 +3.174243000E3,5.816223835E1 +3.174516000E3,5.991084873E1 +3.174771000E3,5.959264792E1 +3.175022000E3,6.001504494E1 +3.175268000E3,5.794233494E1 +3.175510000E3,5.875384007E1 +3.175752000E3,6.582497874E1 +3.176001000E3,6.385809704E1 +3.176310000E3,6.575292490E1 +3.176700000E3,6.328122862E1 +3.176947000E3,6.160374932E1 +3.177205000E3,6.233605233E1 +3.177480000E3,5.746120395E1 +3.177733000E3,5.491961653E1 +3.178002000E3,5.346590976E1 +3.178308000E3,4.910433719E1 +3.178598000E3,5.548086035E1 +3.178876000E3,5.834728013E1 +3.179129000E3,5.722852381E1 +3.179407000E3,5.371032540E1 +3.179686000E3,5.375017527E1 +3.180066000E3,5.741446005E1 +3.180325000E3,5.595914402E1 +3.180624000E3,5.784989425E1 +3.180867000E3,5.818330240E1 +3.181112000E3,5.651638359E1 +3.181407000E3,5.400925398E1 +3.181645000E3,5.134681346E1 +3.181939000E3,5.540645654E1 +3.182189000E3,5.603348674E1 +3.182489000E3,5.612576596E1 +3.182726000E3,5.412821683E1 +3.183072000E3,5.364995955E1 +3.183373000E3,5.685067634E1 +3.183631000E3,5.292396423E1 +3.183913000E3,5.037305724E1 +3.184139000E3,5.458652507E1 +3.184386000E3,5.336216390E1 +3.184625000E3,5.355204553E1 +3.184861000E3,5.798216811E1 +3.185170000E3,5.037998219E1 +3.185412000E3,5.253320042E1 +3.185661000E3,5.864558083E1 +3.185944000E3,5.568855775E1 +3.186307000E3,6.065674046E1 +3.186594000E3,5.486017232E1 +3.186846000E3,5.354898396E1 +3.187128000E3,5.606629368E1 +3.187373000E3,5.887335608E1 +3.187646000E3,5.932986575E1 +3.187996000E3,5.618144782E1 +3.188254000E3,5.279151533E1 +3.188538000E3,5.980979660E1 +3.188819000E3,5.959008295E1 +3.189058000E3,5.757326838E1 +3.189324000E3,5.814251633E1 +3.189681000E3,6.715432083E1 +3.189929000E3,5.659786492E1 +3.190183000E3,6.813933576E1 +3.190493000E3,6.423896785E1 +3.190762000E3,6.115594562E1 +3.191063000E3,6.466877383E1 +3.191295000E3,6.400176112E1 +3.191543000E3,6.061189134E1 +3.191813000E3,6.334758009E1 +3.192062000E3,6.268892194E1 +3.192384000E3,6.255649695E1 +3.192688000E3,6.440152216E1 +3.193095000E3,6.083356984E1 +3.193368000E3,5.702207605E1 +3.193630000E3,6.129862703E1 +3.193931000E3,6.511359313E1 +3.194208000E3,6.424113032E1 +3.194458000E3,6.277957456E1 +3.194751000E3,6.067489213E1 +3.195007000E3,6.044409325E1 +3.195267000E3,5.902485869E1 +3.195523000E3,5.940450479E1 +3.195769000E3,5.629667180E1 +3.196103000E3,5.773687048E1 +3.196362000E3,5.275604571E1 +3.196676000E3,5.321996877E1 +3.196932000E3,4.952922772E1 +3.197191000E3,5.411849627E1 +3.197458000E3,5.575997519E1 +3.197718000E3,5.782402980E1 +3.197982000E3,6.092045522E1 +3.198228000E3,6.504329265E1 +3.198474000E3,5.972589974E1 +3.198713000E3,5.816644178E1 +3.198958000E3,6.190720604E1 +3.199249000E3,6.026051864E1 +3.199481000E3,6.064697026E1 +3.199744000E3,5.715218400E1 +3.200003000E3,5.509276249E1 +3.200281000E3,5.035485844E1 +3.200607000E3,5.745123346E1 +3.200874000E3,5.874041571E1 +3.201157000E3,6.540993071E1 +3.201407000E3,6.592699897E1 +3.201730000E3,5.826687879E1 +3.201982000E3,5.966898415E1 +3.202228000E3,5.928022084E1 +3.202546000E3,5.492659239E1 +3.202811000E3,5.843773228E1 +3.203091000E3,5.615478265E1 +3.203365000E3,5.378265559E1 +3.203611000E3,5.724493737E1 +3.203868000E3,5.517839982E1 +3.204137000E3,5.166422622E1 +3.204439000E3,5.966362579E1 +3.204692000E3,5.837831137E1 +3.204952000E3,5.873474045E1 +3.205216000E3,6.025432286E1 +3.205460000E3,5.709891269E1 +3.205710000E3,5.946766606E1 +3.206062000E3,5.575402329E1 +3.206367000E3,5.597615265E1 +3.206620000E3,5.417374311E1 +3.206869000E3,5.785505194E1 +3.207152000E3,5.973144393E1 +3.207405000E3,5.494944595E1 +3.207684000E3,5.859159641E1 +3.207982000E3,5.909726368E1 +3.208273000E3,6.221796591E1 +3.208541000E3,6.248597715E1 +3.208787000E3,6.143432195E1 +3.209043000E3,5.767415987E1 +3.209357000E3,6.087003136E1 +3.209636000E3,5.816954701E1 +3.209920000E3,5.644196424E1 +3.210232000E3,5.726504339E1 +3.210505000E3,5.384487818E1 +3.210769000E3,6.092886049E1 +3.211044000E3,5.910647270E1 +3.211306000E3,5.855040927E1 +3.211560000E3,6.886189365E1 +3.211803000E3,6.193548709E1 +3.212075000E3,5.895667088E1 +3.212320000E3,5.613734816E1 +3.212669000E3,6.365011223E1 +3.212934000E3,6.616065582E1 +3.213195000E3,4.911720228E1 +3.213460000E3,5.429539168E1 +3.213713000E3,5.374714305E1 +3.213991000E3,5.505703483E1 +3.214231000E3,5.216197587E1 +3.214486000E3,6.958974683E1 +3.214787000E3,6.410499727E1 +3.215047000E3,5.795707420E1 +3.215308000E3,6.210641451E1 +3.215581000E3,5.724864620E1 +3.215943000E3,5.588397230E1 +3.216221000E3,5.281586206E1 +3.216477000E3,5.616597876E1 +3.216735000E3,7.016181845E1 +3.216992000E3,7.008234703E1 +3.217238000E3,6.883905131E1 +3.217482000E3,6.039428517E1 +3.217722000E3,6.572225500E1 +3.217971000E3,6.862082655E1 +3.218221000E3,6.392739620E1 +3.218481000E3,6.757625304E1 +3.218798000E3,6.468895575E1 +3.219137000E3,5.941097234E1 +3.219443000E3,6.639331379E1 +3.219715000E3,6.512137194E1 +3.219985000E3,6.137345425E1 +3.220244000E3,6.566739727E1 +3.220494000E3,5.684090738E1 +3.220758000E3,4.865476042E1 +3.221022000E3,5.571447424E1 +3.221324000E3,5.050200483E1 +3.221601000E3,5.262698993E1 +3.221858000E3,5.385544431E1 +3.222185000E3,5.793526709E1 +3.222548000E3,5.957102097E1 +3.222796000E3,5.026005559E1 +3.223068000E3,5.164515600E1 +3.223344000E3,6.575405490E1 +3.223598000E3,6.925353270E1 +3.223876000E3,5.909751181E1 +3.224152000E3,5.561020058E1 +3.224416000E3,5.257890354E1 +3.224662000E3,5.262446891E1 +3.224954000E3,5.599583257E1 +3.225202000E3,5.286294623E1 +3.225483000E3,5.049109924E1 +3.225830000E3,6.154494550E1 +3.226096000E3,5.433068412E1 +3.226350000E3,5.256602683E1 +3.226652000E3,5.283535150E1 +3.226989000E3,5.811852242E1 +3.227251000E3,5.842389129E1 +3.227505000E3,5.524471208E1 +3.227782000E3,6.207780754E1 +3.228053000E3,6.165130850E1 +3.228302000E3,5.818085510E1 +3.228557000E3,5.646455559E1 +3.228823000E3,5.903487317E1 +3.229201000E3,5.460588060E1 +3.229471000E3,5.534537953E1 +3.229720000E3,5.492103159E1 +3.229976000E3,5.474982433E1 +3.230276000E3,6.311967749E1 +3.230531000E3,6.144237593E1 +3.230845000E3,6.204497775E1 +3.231123000E3,6.192920277E1 +3.231382000E3,6.726064707E1 +3.231675000E3,5.951322284E1 +3.231970000E3,5.620608761E1 +3.232324000E3,5.597726308E1 +3.232555000E3,5.737347613E1 +3.232845000E3,5.515502781E1 +3.233172000E3,5.977186730E1 +3.233435000E3,6.131606000E1 +3.233742000E3,5.610580070E1 +3.234000000E3,5.978218601E1 +3.234272000E3,6.319970701E1 +3.234581000E3,5.608562509E1 +3.234862000E3,6.169746582E1 +3.235159000E3,6.105762669E1 +3.235416000E3,5.369522011E1 +3.235667000E3,6.580487109E1 +3.235906000E3,5.797374086E1 +3.236200000E3,6.981267784E1 +3.236445000E3,6.229515865E1 +3.236695000E3,6.858181426E1 +3.236976000E3,5.740787399E1 +3.237218000E3,5.455964692E1 +3.237457000E3,7.204325578E1 +3.237720000E3,6.142914611E1 +3.238013000E3,5.768794211E1 +3.238280000E3,5.732491467E1 +3.238580000E3,5.793744264E1 +3.238882000E3,5.626325471E1 +3.239149000E3,5.661724856E1 +3.239424000E3,6.969605219E1 +3.239726000E3,6.482965407E1 +3.239976000E3,5.947270091E1 +3.240278000E3,5.913422796E1 +3.240576000E3,5.630232959E1 +3.240877000E3,5.956366293E1 +3.241128000E3,6.177688280E1 +3.241391000E3,5.851951662E1 +3.241664000E3,5.959787493E1 +3.241944000E3,5.765523372E1 +3.242310000E3,5.961443978E1 +3.242602000E3,5.811194000E1 +3.242910000E3,5.765320401E1 +3.243188000E3,6.631148602E1 +3.243420000E3,6.916377121E1 +3.243673000E3,6.435158828E1 +3.243925000E3,6.486926440E1 +3.244170000E3,5.506348984E1 +3.244475000E3,6.702899260E1 +3.244772000E3,6.244838658E1 +3.245003000E3,6.057959417E1 +3.245328000E3,6.103137126E1 +3.245581000E3,5.723671640E1 +3.245864000E3,5.125127512E1 +3.246123000E3,5.748187394E1 +3.246395000E3,6.148075018E1 +3.246669000E3,6.226010686E1 +3.246940000E3,5.273573389E1 +3.247233000E3,5.462141876E1 +3.247482000E3,5.946160846E1 +3.247728000E3,6.623014757E1 +3.248041000E3,5.823129903E1 +3.248289000E3,5.689561843E1 +3.248538000E3,5.851473913E1 +3.248910000E3,5.778207994E1 +3.249187000E3,6.109108533E1 +3.249462000E3,6.368024039E1 +3.249726000E3,6.527718864E1 +3.249983000E3,5.855658653E1 +3.250281000E3,5.718860903E1 +3.250534000E3,5.946900486E1 +3.250785000E3,5.688578668E1 +3.251033000E3,5.444863300E1 +3.251316000E3,5.885016251E1 +3.251570000E3,6.172482417E1 +3.251833000E3,6.833245599E1 +3.252200000E3,6.656973280E1 +3.252441000E3,6.663686281E1 +3.252721000E3,6.380106140E1 +3.252991000E3,6.113258977E1 +3.253242000E3,7.270243700E1 +3.253457000E3,7.442711013E1 +3.253706000E3,7.097589831E1 +3.253999000E3,5.740107596E1 +3.254237000E3,5.407351324E1 +3.254532000E3,6.235563554E1 +3.254777000E3,6.148535018E1 +3.255085000E3,6.767985005E1 +3.255346000E3,5.893302101E1 +3.255628000E3,5.834235484E1 +3.255897000E3,6.152524318E1 +3.256146000E3,6.124474706E1 +3.256419000E3,5.928557591E1 +3.256642000E3,5.798678480E1 +3.256921000E3,5.800318977E1 +3.257149000E3,5.813391626E1 +3.257392000E3,6.200496820E1 +3.257645000E3,6.268368020E1 +3.257945000E3,6.783162804E1 +3.258296000E3,7.343015115E1 +3.258556000E3,7.258165803E1 +3.258805000E3,6.753466802E1 +3.259117000E3,7.134403593E1 +3.259421000E3,6.813653179E1 +3.259673000E3,6.449045726E1 +3.259939000E3,7.144310958E1 +3.260188000E3,6.619195201E1 +3.260438000E3,6.990193438E1 +3.260692000E3,6.791067771E1 +3.260944000E3,7.014061601E1 +3.261191000E3,7.271368424E1 +3.261532000E3,6.889323528E1 +3.261794000E3,6.087932672E1 +3.262047000E3,6.139975131E1 +3.262322000E3,6.684035582E1 +3.262586000E3,6.977079140E1 +3.262861000E3,6.711211223E1 +3.263137000E3,6.891542739E1 +3.263415000E3,6.450575202E1 +3.263671000E3,6.375083447E1 +3.263946000E3,6.525419018E1 +3.264250000E3,6.323969714E1 +3.264517000E3,7.351653517E1 +3.264813000E3,7.240916805E1 +3.265107000E3,6.991986455E1 +3.265349000E3,6.767718353E1 +3.265598000E3,7.020318016E1 +3.265847000E3,6.593396207E1 +3.266149000E3,6.776886494E1 +3.266400000E3,6.796917668E1 +3.266653000E3,6.234495715E1 +3.266897000E3,6.492303298E1 +3.267153000E3,6.551968402E1 +3.267398000E3,6.154456079E1 +3.267647000E3,6.087933145E1 +3.267896000E3,6.053677169E1 +3.268248000E3,6.893351216E1 +3.268513000E3,6.695525456E1 +3.268817000E3,6.263553940E1 +3.269070000E3,5.965971741E1 +3.269315000E3,6.136430702E1 +3.269582000E3,7.398506568E1 +3.269828000E3,7.145137487E1 +3.270128000E3,7.238266470E1 +3.270371000E3,7.289527120E1 +3.270623000E3,7.428636164E1 +3.270931000E3,7.248535741E1 +3.271185000E3,7.399445608E1 +3.271518000E3,7.355251323E1 +3.271795000E3,7.296660624E1 +3.272081000E3,7.131368475E1 +3.272358000E3,7.068792091E1 +3.272581000E3,6.623699177E1 +3.272835000E3,5.258987188E1 +3.273093000E3,6.044165509E1 +3.273337000E3,6.879817511E1 +3.273635000E3,6.970693453E1 +3.273931000E3,7.169623139E1 +3.274180000E3,7.112396098E1 +3.274428000E3,7.190035192E1 +3.274761000E3,7.089393329E1 +3.275038000E3,6.995869622E1 +3.275323000E3,6.900781199E1 +3.275569000E3,6.766263448E1 +3.275860000E3,6.881814388E1 +3.276116000E3,6.821596427E1 +3.276370000E3,6.896702672E1 +3.276649000E3,6.827119542E1 +3.276914000E3,6.795818984E1 +3.277171000E3,7.025945887E1 +3.277482000E3,6.685661764E1 +3.277741000E3,6.810082518E1 +3.278078000E3,6.902136690E1 +3.278358000E3,6.568611650E1 +3.278604000E3,7.123802039E1 +3.278848000E3,6.300940961E1 +3.279144000E3,6.292057856E1 +3.279382000E3,6.654167697E1 +3.279622000E3,6.808014942E1 +3.279917000E3,6.902808966E1 +3.280160000E3,6.685153426E1 +3.280471000E3,6.435621527E1 +3.280770000E3,6.765080490E1 +3.281059000E3,6.808248309E1 +3.281352000E3,6.477485011E1 +3.281602000E3,5.628454157E1 +3.281867000E3,5.800927668E1 +3.282130000E3,7.131716325E1 +3.282389000E3,7.355208108E1 +3.282663000E3,7.108584109E1 +3.282932000E3,5.710440961E1 +3.283191000E3,5.329699257E1 +3.283451000E3,5.003319724E1 +3.283709000E3,5.081704645E1 +3.284003000E3,5.075383483E1 +3.284259000E3,5.431712692E1 +3.284628000E3,5.277582101E1 +3.284917000E3,6.061307876E1 +3.285214000E3,6.168657926E1 +3.285472000E3,5.854988033E1 +3.285744000E3,4.913527641E1 +3.285999000E3,5.563664353E1 +3.286250000E3,5.841488419E1 +3.286517000E3,6.437604518E1 +3.286777000E3,6.124264602E1 +3.287035000E3,5.886049633E1 +3.287300000E3,6.196549102E1 +3.287630000E3,6.776239267E1 +3.287951000E3,6.702605133E1 +3.288259000E3,5.376695086E1 +3.288499000E3,5.095339550E1 +3.288807000E3,5.078317550E1 +3.289117000E3,5.659564827E1 +3.289411000E3,7.136818215E1 +3.289684000E3,6.629708396E1 +3.289982000E3,7.133804213E1 +3.290271000E3,6.994811010E1 +3.290544000E3,6.532422657E1 +3.290800000E3,6.451013008E1 +3.291132000E3,6.261305598E1 +3.291418000E3,6.696223022E1 +3.291676000E3,4.827412656E1 +3.291930000E3,4.724575587E1 +3.292202000E3,4.846609938E1 +3.292501000E3,5.276700476E1 +3.292822000E3,5.071547801E1 +3.293065000E3,4.944777186E1 +3.293349000E3,4.466809801E1 +3.293583000E3,4.432750067E1 +3.293832000E3,5.165471909E1 +3.294078000E3,4.606912616E1 +3.294427000E3,4.826074528E1 +3.294712000E3,4.434240888E1 +3.294985000E3,4.684583968E1 +3.295286000E3,5.104787864E1 +3.295548000E3,4.839146586E1 +3.295807000E3,5.479537456E1 +3.296066000E3,5.055213000E1 +3.296324000E3,3.933656037E1 +3.296585000E3,4.513652817E1 +3.296840000E3,4.805617654E1 +3.297099000E3,4.453428427E1 +3.297354000E3,5.205427791E1 +3.297705000E3,5.001223291E1 +3.297948000E3,5.342697607E1 +3.298200000E3,5.619467550E1 +3.298461000E3,5.565459347E1 +3.298738000E3,5.819577446E1 +3.298988000E3,5.077826383E1 +3.299236000E3,5.142261821E1 +3.299478000E3,5.610754709E1 +3.299775000E3,5.248015066E1 +3.300011000E3,4.742520943E1 +3.300325000E3,5.519481303E1 +3.300626000E3,4.628613419E1 +3.300959000E3,4.430731849E1 +3.301224000E3,4.380193782E1 +3.301473000E3,4.690647127E1 +3.301746000E3,4.845294386E1 +3.302057000E3,4.912389116E1 +3.302307000E3,5.155191791E1 +3.302563000E3,5.240902416E1 +3.302820000E3,4.677306339E1 +3.303083000E3,5.037145513E1 +3.303327000E3,4.506752152E1 +3.303573000E3,4.920686196E1 +3.303857000E3,4.935493485E1 +3.304189000E3,4.415801479E1 +3.304459000E3,4.423531181E1 +3.304768000E3,3.874162391E1 +3.305030000E3,4.189958295E1 +3.305333000E3,4.005870516E1 +3.305579000E3,5.072183491E1 +3.305843000E3,4.113754863E1 +3.306140000E3,5.548273149E1 +3.306383000E3,5.383424402E1 +3.306628000E3,5.205779319E1 +3.306877000E3,4.592085607E1 +3.307206000E3,5.092451979E1 +3.307449000E3,4.823039740E1 +3.307720000E3,5.026090042E1 +3.307982000E3,5.794901070E1 +3.308198000E3,5.239372011E1 +3.308502000E3,5.024517162E1 +3.308742000E3,4.253471720E1 +3.309044000E3,4.105523794E1 +3.309340000E3,3.028117703E1 +3.309596000E3,2.809150222E1 +3.309864000E3,2.626060468E1 +3.310135000E3,5.055452447E1 +3.310501000E3,7.199271156E1 +3.310777000E3,7.172468430E1 +3.311045000E3,7.282926204E1 +3.311313000E3,7.145580608E1 +3.311562000E3,7.218798353E1 +3.311867000E3,7.081603642E1 +3.312107000E3,7.122522782E1 +3.312348000E3,7.013128466E1 +3.312672000E3,7.138239962E1 +3.312976000E3,7.589001323E1 +3.313216000E3,6.988466628E1 +3.313506000E3,6.521999768E1 +3.313853000E3,5.781158269E1 +3.314129000E3,5.698768013E1 +3.314381000E3,5.954050680E1 +3.314636000E3,5.529467486E1 +3.314903000E3,6.884377149E1 +3.315163000E3,7.293133775E1 +3.315448000E3,7.186875504E1 +3.315697000E3,6.942752239E1 +3.315995000E3,6.899930460E1 +3.316247000E3,6.333687203E1 +3.316557000E3,6.820286469E1 +3.316856000E3,7.371764624E1 +3.317124000E3,7.475494405E1 +3.317411000E3,7.135849387E1 +3.317718000E3,5.726081152E1 +3.317965000E3,5.650406291E1 +3.318233000E3,4.901561410E1 +3.318490000E3,6.881993797E1 +3.318742000E3,7.251465406E1 +3.319010000E3,6.395213402E1 +3.319311000E3,7.197127027E1 +3.319615000E3,6.948849738E1 +3.319862000E3,6.664503435E1 +3.320187000E3,6.933008182E1 +3.320443000E3,6.121514242E1 +3.320753000E3,7.017439611E1 +3.321063000E3,7.393277725E1 +3.321329000E3,7.045535337E1 +3.321643000E3,6.985180357E1 +3.321896000E3,7.158196073E1 +3.322168000E3,6.999348148E1 +3.322483000E3,6.872091406E1 +3.322823000E3,6.386396976E1 +3.323116000E3,6.891641311E1 +3.323355000E3,6.790436633E1 +3.323733000E3,6.190629476E1 +3.324010000E3,6.307072034E1 +3.324306000E3,6.459812141E1 +3.324591000E3,6.928529051E1 +3.324846000E3,6.953301961E1 +3.325158000E3,6.946121501E1 +3.325471000E3,6.177266257E1 +3.325739000E3,6.057146439E1 +3.326000000E3,6.021658005E1 +3.326269000E3,6.588088303E1 +3.326536000E3,6.594068529E1 +3.326797000E3,5.957632846E1 +3.327117000E3,5.830018402E1 +3.327415000E3,5.952820917E1 +3.327678000E3,5.996997483E1 +3.327928000E3,6.374276040E1 +3.328204000E3,6.484785648E1 +3.328504000E3,6.253699213E1 +3.328743000E3,6.495848159E1 +3.329001000E3,6.390198219E1 +3.329317000E3,6.107203426E1 +3.329613000E3,6.678300135E1 +3.329901000E3,6.048531373E1 +3.330164000E3,6.806621622E1 +3.330501000E3,6.592361883E1 +3.330795000E3,6.652249790E1 +3.331059000E3,6.079261624E1 +3.331342000E3,7.055285274E1 +3.331620000E3,6.885169705E1 +3.331870000E3,6.676175072E1 +3.332125000E3,6.653456857E1 +3.332410000E3,6.539948315E1 +3.332658000E3,6.741723145E1 +3.332915000E3,5.982571500E1 +3.333236000E3,7.234399288E1 +3.333559000E3,7.555637810E1 +3.333801000E3,7.132946849E1 +3.334053000E3,7.012473325E1 +3.334345000E3,7.083313400E1 +3.334658000E3,6.159204912E1 +3.334951000E3,5.416652771E1 +3.335187000E3,5.331536045E1 +3.335488000E3,5.516853140E1 +3.335780000E3,5.755380245E1 +3.336028000E3,6.034949591E1 +3.336335000E3,5.933559907E1 +3.336577000E3,6.200660494E1 +3.336975000E3,6.752581884E1 +3.337230000E3,6.552308109E1 +3.337509000E3,6.043162012E1 +3.337804000E3,6.346167875E1 +3.338097000E3,5.762665769E1 +3.338354000E3,6.046465836E1 +3.338657000E3,5.841838084E1 +3.338937000E3,5.426549819E1 +3.339182000E3,5.312925890E1 +3.339425000E3,5.904532039E1 +3.339705000E3,5.548841740E1 +3.339970000E3,6.467955136E1 +3.340311000E3,6.518540616E1 +3.340567000E3,6.130157495E1 +3.340843000E3,4.234380604E1 +3.341102000E3,3.685811557E1 +3.341367000E3,5.229521155E1 +3.341631000E3,4.577123603E1 +3.341913000E3,5.522804687E1 +3.342191000E3,7.219670231E1 +3.342497000E3,6.138541536E1 +3.342739000E3,5.883033505E1 +3.342994000E3,5.692990468E1 +3.343272000E3,5.784770175E1 +3.343584000E3,5.851150722E1 +3.343847000E3,7.127137910E1 +3.344137000E3,7.004437015E1 +3.344432000E3,6.719880262E1 +3.344677000E3,6.266500726E1 +3.344966000E3,6.662051616E1 +3.345209000E3,6.259160849E1 +3.345462000E3,6.521765959E1 +3.345762000E3,6.373477950E1 +3.346056000E3,5.976833176E1 +3.346294000E3,5.557373783E1 +3.346597000E3,5.486821605E1 +3.346842000E3,4.854970484E1 +3.347096000E3,6.338774242E1 +3.347415000E3,6.646909489E1 +3.347712000E3,6.370164725E1 +3.347950000E3,6.577012972E1 +3.348257000E3,6.536203326E1 +3.348509000E3,5.777033235E1 +3.348799000E3,6.942121279E1 +3.349070000E3,6.552465655E1 +3.349329000E3,6.400867966E1 +3.349583000E3,5.955829212E1 +3.349911000E3,6.233007104E1 +3.350154000E3,7.360271557E1 +3.350432000E3,7.402471070E1 +3.350716000E3,7.225249055E1 +3.350966000E3,6.654334459E1 +3.351200000E3,6.590758849E1 +3.351507000E3,6.143698167E1 +3.351805000E3,7.197722167E1 +3.352079000E3,6.778594348E1 +3.352307000E3,5.712392879E1 +3.352566000E3,5.659236121E1 +3.352870000E3,5.352359430E1 +3.353127000E3,5.362353429E1 +3.353366000E3,5.964860406E1 +3.353638000E3,7.164177428E1 +3.353890000E3,6.730234717E1 +3.354173000E3,5.336089185E1 +3.354435000E3,4.770751864E1 +3.354689000E3,4.833001031E1 +3.354956000E3,4.464972004E1 +3.355220000E3,6.809720152E1 +3.355493000E3,7.032616040E1 +3.355723000E3,7.137092547E1 +3.356052000E3,7.106236065E1 +3.356287000E3,7.302101107E1 +3.356599000E3,6.868512076E1 +3.356867000E3,7.134905494E1 +3.357133000E3,7.032184319E1 +3.357463000E3,6.484515560E1 +3.357753000E3,5.949029357E1 +3.358081000E3,6.553405106E1 +3.358385000E3,5.460622041E1 +3.358634000E3,4.798111952E1 +3.358902000E3,5.356090224E1 +3.359186000E3,5.091993104E1 +3.359516000E3,5.980463665E1 +3.359805000E3,5.623340998E1 +3.360124000E3,4.885342740E1 +3.360404000E3,4.536632542E1 +3.360660000E3,5.726647509E1 +3.360941000E3,6.266477325E1 +3.361245000E3,5.265432523E1 +3.361521000E3,4.746518361E1 +3.361777000E3,5.341135388E1 +3.362038000E3,5.094337921E1 +3.362292000E3,5.832737886E1 +3.362616000E3,5.247742127E1 +3.363049000E3,5.123926483E1 +3.363313000E3,4.482127206E1 +3.363600000E3,4.813050338E1 +3.363848000E3,5.751744958E1 +3.364157000E3,5.045245795E1 diff --git a/03_vorlagen_tauschordner/03_javaeditor/alg15_xydiagramm/Picture.java b/03_vorlagen_tauschordner/03_javaeditor/alg15_xydiagramm/Picture.java new file mode 100644 index 0000000..8df3d55 --- /dev/null +++ b/03_vorlagen_tauschordner/03_javaeditor/alg15_xydiagramm/Picture.java @@ -0,0 +1,699 @@ +import java.awt.image.*; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.BasicStroke; +import java.util.Vector; +import javax.imageio.*; +import java.io.*; +import java.awt.*; +import javax.swing.*; +import java.util.Random; +import java.awt.geom.AffineTransform; +/** + * + * Bildklasse für die Simulation von Processing-Befehlen + * + * Diese Klasse stellt ein BufferedImage bereit, in das mit Processing-Befehlen gezeichnet + * werden kann. + * Zusätzlich kann ein Bildanzeiger über jede Änderung des Bildes informiert werden, + * um "Zurück"-Befehle zu ermöglichen. Der Bildanzeiger ist entweder eine normale Java + * ScrollPane oder ein Actor aus Greenfoot. + * Die Dokumentation der einzelnen Zeichenmethoden ist der Processing-Reference + * (https://processing.org/reference/ steht unter CC-Lizenz: https://creativecommons.org/) + * entnommen und mit Deepl.com ins Deutsche übersetzt. + * + * @version 1.0 from 23.01.2019 + * @author Thomas Schaller (ZPG Informatik Klasse 9) + */ + +public class Picture{ + + // Einstellungmöglichkeiten für das Zeichnen von Rechtecken und Ellipsen + // RADIUS = Mittelpunkt+Radius wird gegeben, CENTER = Mittelpunkt und Breite/Höhe wird gegeben, + // CORNER = Linke obere Ecke + Breite/Höhe, CORNERS = Linke obere und rechte untere Ecke + public static final int RADIUS = 1; + public static final int CENTER = 2; + public static final int CORNER = 3; + public static final int CORNERS = 4; + + // gespeichertes Bild, + private BufferedImage image; + + // aktuelle Farbeinstellungen + private Color background; + private Color pencolor; + private Color fillcolor; + + // aktuelle Stiftdicke + private double stroke; + + // akkteller Koordinatenmodus von Rechtecken und Ellipsen + private int ellipseMode = CENTER; + private int rectMode = CORNER; + + // aktueller Font + private Font textfont = null; + + // muss ein Bildanzeiger benachrichtigt werden + private PictureViewer observer = null; + private boolean autorefresh = true; + + /** + * Erzeugt ein Bild mit Standardgröße 500x400 + */ + public Picture() { + this(500,400); + } + + /** + * Erzeugt ein Bild der angegeben Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public Picture(int width, int height) { + this(width,height, "D0D0D0"); + } + + /** + * Erzeugt ein Bild aus einer Datei + * @param filename Dateiname des Bildes + */ + public Picture(String filename) { + load(filename); + } + + /** + * Erzeugt ein Bild der angegebenen Größe mit festgelegtem Hintergrund + * @param width Breite des Bildes + * @param height Höhe des Bildes + * @param background Farbe des Hintergrunds + */ + public Picture(int width, int height, String background) { + this.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + this.background = decode(background); + this.pencolor = new Color(0,0,0); + this.stroke = 1; + this.fillcolor = null; + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(this.background); + g.fillRect(0,0,width-1, height-1); + } + + /** + * Legt fest, wer das Bild anzeigt. + * Diese ermöglicht die Benachrichtung des Observers, wenn sich das Bild ändert. + * @param observer Anzeiger des Bildes + */ + + public void setObserver(PictureViewer observer) { + this.observer= observer; + } + + /** + * Direktes Setzen des Bildes (für interne Zwecke) + * @param b Bild, das gespeichert werden soll. + */ + public void setImage(BufferedImage b) { + image = b; + } + + /** + * Direktes Abfragen des Bildes (für interne Zwecke) + * @return Bild, das gerade gespeichert ist. + */ + public BufferedImage getImage() { + return image; + } + + /** + * Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + * Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + * der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu. + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public void size(int width, int height){ + pushImage(); + this.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(background); + g.fillRect(0,0,width-1, height-1); + } + + /** + * Liefert die Breite des Bildes zurück. + * @return Breite des Bildes + */ + public int getWidth() { + return image.getWidth(); + } + + /** + * Liefert die Höhe des Bildes zurück. + * @return Höhe des Bildes + */ + public int getHeight() { + return image.getHeight(); + } + + + /** + * Erzeugt eine Kopie des Bildes und übergibt sie an den Observer (falls existent), damit dieser die Versionen speichern kann + */ + private void pushImage() { + if(observer != null) { + observer.pushImage(); + } + } + + + /** + * Legt fest, ob nach jedem Zeichenbefehl automatisch das Bild auch in + * der Oberfläche aktualisiert wird. Die Einstellung "false" beschleunigt + * das Zeichnen aufwändiger Bilder und verhindert "Flackern". + * Das Neuzeichnen kann durch die Methode "refresh" gezielt ausgelöst werden. + * @param autorefresh true = nach jedem Zeichenbefehl die Anzeige aktualisieren, false= nur durch die Methode refresh neu zeichnen + */ + public void setAutoRefresh(boolean autoRefresh) { + this.autorefresh = autoRefresh; + } + + + /** + * Auch die anzeigenden Klasse wird zum Neuzeichnen aufgefordert. + */ + private void repaint() { + if(observer != null && autorefresh) { + observer.repaint(); + } + } + + /** + * Auch die anzeigenden Klasse wird zum Neuzeichnen aufgefordert. + */ + public void refresh() { + if(observer != null) { + observer.repaint(); + } + } + + // ----------------------------------------- Zeichenfunktionen ----------------------------------------------- + /** + * Löscht den Inhalt des Bildes. + * Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt. + */ + + public void clear(){ + pushImage(); + image = new BufferedImage(image.getWidth(), image.getHeight(), image.getType()); + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(background); + g.fillRect(0,0,image.getWidth()-1, image.getHeight()-1); + repaint(); + } + + /** + * Konvertiert die in einem bestimmten Modus gegebenen Koordinaten in die Java-übliche Links_Oben_Breite_Höhe Version + * Die Änderungen werden direkt im Array vorgenommen + * @param coord Array mit vier Koordinateneinträgen im gegebenen Modus + * @param mode Modus der Koordinaten (CORNER, CORNERS, RADIUS oder CENTER) + */ + private void convert(int[] coord, int mode) { + switch(mode) { + case CORNER: break; + case CORNERS: coord[2] -= coord[0]; coord[3] -= coord[1]; break; + case RADIUS: coord[2] *= 2; coord[3] *=2; + case CENTER: coord[0] -= coord[2]/2; coord[1] -= coord[3]/2; + } + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + * Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + * Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void rectMode(int mode) { + rectMode = mode; + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + * Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + * Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als Breite und Höhe der Form. + * ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void ellipseMode(int mode) { + ellipseMode = mode; + } + + + + /** + * Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + * Um eine Linie einzufärben, verwenden Sie die {@link #stroke(int, int, int) stroke()} Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + * Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + * {@link #strokeWeight(double) strokeWeight()} geändert werden. + * @param x1 x-Koordinate des 1. Punktes + * @param y1 y-Koordinate des 1. Punktes + * @param x2 x-Koordinate des 2. Punktes + * @param y2 y-Koordinate des 2. Punktes + */ + public void line(int x1, int y1, int x2, int y2) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + if (stroke > 0) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawLine(x1, y1, x2, y2); + } + repaint(); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, rectMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillRect(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawRect(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, ellipseMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillOval(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawOval(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + int px[] = {x1, x2, x3}; + int py[] = {y1, y2, y3}; + polygon(px, py); + + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + + int px[] = {x1, x2, x3, x4}; + int py[] = {y1, y2, y3, y4}; + polygon(px, py); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + + public void polygon(int[] x, int[] y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(fillcolor != null) { + + g.setColor(fillcolor); + g.fillPolygon(x,y, y.length); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawPolygon(x, y, x.length); + } + repaint(); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + ellipse(x,y,1, 1); + + } + + // ----------------------------------------- Schriftdarstellung ----------------------------------------------- + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param s Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String s, int x, int y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(pencolor != null) { + g.setColor(fillcolor); + g.setStroke(new BasicStroke((float) stroke)); + g.setFont(textfont); + g.drawString(s, x, y); + } + repaint(); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + this.textfont = font; + } + + + // ----------------------------------------- Farbfestlegungen ----------------------------------------------- + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(String color) { + try{ + return new Color( + Integer.valueOf( color.substring( 0, 2 ), 16 ), + Integer.valueOf( color.substring( 2, 4 ), 16 ), + Integer.valueOf( color.substring( 4, 6 ), 16 ) ); + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(int color) { + try{ + if(color >=0 && color < 256) { + return new Color(color,color,color); + } else { + int r = color / 0x010000 % 0xFF; + int g = color / 0x000100 % 0xFF; + int b = color % 0xFF; + System.out.println(""+r+","+g+","+b); + return new Color(r, g, b ); + } + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + this.pencolor = decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + this.pencolor=decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + this.pencolor = new Color(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + this.pencolor = null; + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + this.stroke = width; + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + this.fillcolor = decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + this.fillcolor=decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + this.fillcolor = new Color(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + this.fillcolor = null; + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + if(c < 256) { + this.background=new Color(c,c,c); + } else { + int r = c / 0x010000; + int g = c / 0x000100 % 0xFF; + int b = c % 0xFF; + this.background= new Color(r, g, b ); + } + + this.clear(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + this.background=new Color(r,g,b); + this.clear(); + } + + +// ----------------------------------------- Dateioperationen ----------------------------------------------- + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + try{ + this.image = ImageIO.read(new File(filename)); + this.background = decode("D0D0D0"); + this.pencolor = new Color(0,0,0); + this.fillcolor = null; + this.stroke = 1; + this.repaint(); + + } catch(Exception e) { + System.out.println("Fehler beim Einlesen der Bilddatei"); + } + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + try{ + String[] fn = filename.split("\\."); + if (fn.length== 1) { + ImageIO.write(image, "PNG", new File(filename+".png")); + } else { + + if (fn.length == 2 && (fn[1].toUpperCase().equals("PNG") || + fn[1].toUpperCase().equals("GIF"))){ + ImageIO.write(image, fn[1], new File(filename)); + }else { + System.out.println("Unbekanntes Bildformat"); + } + } + + } catch(Exception e) { + System.out.println("Fehler beim Speichern"); + } + } + + +// ----------------------------------------- Sonstiges ----------------------------------------------- + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + + public Color[][] getPixelArray() { + Color[][] pixel = new Color[image.getWidth()][image.getHeight()]; + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + pixel[x][y] = new java.awt.Color(image.getRGB(x,y)); + } + } + return pixel; + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + size(pixel.length,pixel[0].length); + Graphics2D g = (Graphics2D) image.getGraphics(); + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + g.setColor(pixel[x][y]); + g.fillRect(x, y, 1, 1); + } + } + repaint(); + } + + /** + * Hilfsfunktion zum Verzögern der Ausgabe + * @param millis Wartezeit in Millisekunden + */ + public void delay(int millis) { + try{ + Thread.sleep(millis); + + } catch(Exception e) { + + } + + } + + + +} diff --git a/03_vorlagen_tauschordner/03_javaeditor/alg15_xydiagramm/PictureViewer.java b/03_vorlagen_tauschordner/03_javaeditor/alg15_xydiagramm/PictureViewer.java new file mode 100644 index 0000000..9e6b151 --- /dev/null +++ b/03_vorlagen_tauschordner/03_javaeditor/alg15_xydiagramm/PictureViewer.java @@ -0,0 +1,505 @@ +/** + * Zeigt ein Bild in einem Scrollbereich an. + * Es ist möglich das Bild zu zoomen und mehrere Versionen des Bildes zu speichern, um eine "Rückgängig" Operation durchzuführen. + * @author Thomas Schaller + * @version 1.0 vom 01.02.2019 + */ + +import java.awt.*; +import java.awt.event.*; +import javax.swing.*; +import java.awt.image.*; +import java.util.Vector; + +public class PictureViewer extends JScrollPane +{ + + // das aktuelle Bild + private Picture picture; + + // Bilder für den Züruck-Modus speichern + private static final int ANZ_BACK = 20; + private Vector history; + + // Zeichenfläche + private ImageIcon scrollImageIcon; + private JLabel imageLabel; + + // Zoom Faktor + private double zoomFactor; + public static final int FIT = -1; + public static final int NORMAL = 1; + + + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der Größe 1000x1000 + */ + public PictureViewer() { + this(1000,1000); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public PictureViewer(int width, int height) { + this(width,height, "D0D0D0"); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + * @param background Farbe des Hintergrunds als HEX-String (z.B. "FF3A45") + */ + public PictureViewer(int width, int height, String background) { + this(new Picture(width,height, background)); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild aus einer Bilddatei + * @param filename Name des Bildes + */ + public PictureViewer(String filename) { + this(new Picture(filename)); + } + + /** + * Erzeugt ein ScrollPanel und zeigt das Bild-Objekt an + * @param picture anzuzeigendes Bild + */ + public PictureViewer(Picture picture) + { + this.picture=picture; + + zoomFactor=1; + + scrollImageIcon = new ImageIcon(picture.getImage().getScaledInstance(picture.getImage().getWidth(), picture.getImage().getHeight(), Image.SCALE_FAST)); + imageLabel = new JLabel(scrollImageIcon); + imageLabel.setVerticalAlignment(JLabel.CENTER); + imageLabel.setHorizontalAlignment(JLabel.CENTER); + setViewportView(imageLabel); + + this.setBorder(BorderFactory.createLineBorder(Color.black)); + picture.setObserver(this); + history = new Vector(); + + } + + /** + * Setzt das anzuzeigende Bild neu + * @param picture anzuzeigendes Bild + */ + public void setImage(Picture picture) { + this.history = new Vector(); + this.picture = picture; + setZoom(NORMAL); + } + + /** + * Speichert das übergebene Bild in der History. + * @param b zu speicherndes Bild + */ + public void pushImage() { + if( this.ANZ_BACK > 0) { + if(history.size() == this.ANZ_BACK) { + history.removeElementAt(0); + } + + BufferedImage b = new BufferedImage(picture.getWidth(), picture.getHeight(), picture.getImage().getType()); + Graphics g = b.getGraphics(); + g.drawImage(picture.getImage(), 0, 0, null); + g.dispose(); + + history.add(b); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + private void popImage() { + int anz = history.size(); + if(anz>0) { + BufferedImage img = history.get(anz-1); + history.removeElementAt(anz-1); + picture.setImage(img); + setZoom(zoomFactor); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + public void back() { + popImage(); + } + + /** + * Setzt das angezeigt Bild neu und beachtet dabei den Zoomfaktor. + */ + public void repaint() { + if( picture != null) { + double factor= zoomFactor; + if (zoomFactor == FIT) { + double factorw = ((double) getWidth()-2) / picture.getWidth(); + double factorh = ((double) getHeight()-2) / picture.getHeight(); + factor = Math.min(factorw, factorh); + } + int width = (int) (picture.getWidth()*factor); + int height = (int) (picture.getHeight()*factor); + + + + scrollImageIcon.setImage(picture.getImage().getScaledInstance(width, height, Image.SCALE_DEFAULT)); + revalidate(); + } + } + + /** + * Setzt den Zoom-Faktor für das Bild. + * Als Zoomfaktor sind auch die Konstanten Bildanzeiger.FIT (auf Bildschirmgröße zoomen) und Bildanzeiger.NORMAL (100%) möglich. + * @param factor Zoomfaktor (1.0 = 100%). + */ + public void setZoom(double factor) + { + zoomFactor = factor; + repaint(); + } + + + // Wrappermethoden + /** + * Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + * Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + * der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu. + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public void size(int width, int height){ + picture.size(width, height); + } + + /** + * Liefert die Breite des Bildes zurück. + * @return Breite des Bildes + */ + public int getImageWidth() { + return picture.getWidth(); + } + + /** + * Liefert die Höhe des Bildes zurück. + * @return Höhe des Bildes + */ + public int getImageHeight() { + return picture.getHeight(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + picture.background(c); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + picture.background(r,g,b); + } + + /** + * Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + * Um eine Linie einzufärben, verwenden Sie die {@link #stroke(int, int, int) stroke()} Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + * Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + * {@link #strokeWeight(double) strokeWeight()} geändert werden. + * @param x1 x-Koordinate des 1. Punktes + * @param y1 y-Koordinate des 1. Punktes + * @param x2 x-Koordinate des 2. Punktes + * @param y2 y-Koordinate des 2. Punktes + */ + public void line(int x1, int y1, int x2, int y2) { + picture.line(x1,y1,x2,y2); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + picture.rect(a,b,c,d); + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + picture.ellipse(a,b,c,d); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + picture.triangle(x1,y1,x2,y2,x3,y3); + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + picture.quad(x1,y1,x2,y2,x3,y3,x4,y4); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + public void polygon(int[] x, int[] y) { + picture.polygon(x,y); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + picture.point(x,y); + + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + * Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + * Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void rectMode(int mode) { + picture.rectMode(mode); + } + + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + * Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + * Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als Breite und Höhe der Form. + * ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void ellipseMode(int mode) { + picture.ellipseMode(mode); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + picture.stroke(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + picture.noStroke(); + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + picture.strokeWeight(width); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + picture.fill(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + picture.noFill(); + } + + /** + * Löscht den Inhalt des Bildes. + * Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt. + */ + public void clear(){ + picture.clear(); + } + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + picture.load(filename); + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + picture.save(filename); + } + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param t Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String t, int x, int y) { + picture.text(t,x,y); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + picture.textFont(font); + } + + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + public Color[][] getPixelArray() { + return picture.getPixelArray(); + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + picture.setPixelArray(pixel); + } + + + +} diff --git a/03_vorlagen_tauschordner/03_javaeditor/alg15_xydiagramm/Table.java b/03_vorlagen_tauschordner/03_javaeditor/alg15_xydiagramm/Table.java new file mode 100644 index 0000000..ee5a211 --- /dev/null +++ b/03_vorlagen_tauschordner/03_javaeditor/alg15_xydiagramm/Table.java @@ -0,0 +1,894 @@ +/** + * Die Klasse Table vereinfacht den Zugriff auf CSV-Dateien. + * Die Klassen Table und TableRow ermöglichen einen einfachen Zugriff auf tabellenbasierte + * Dokumente. + * + * @author Thomas Schaller + * @version 1.0 vom 01.02.2019 + */ + +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.ArrayList; +import java.io.*; +import java.util.Scanner; + +import org.jdom.Document; +import org.jdom.Element; +import org.jdom.Attribute; +import org.jdom.JDOMException; +import org.jdom.input.SAXBuilder; +import org.jdom.output.XMLOutputter; +import org.jdom.output.Format; + +public class Table +{ + // Standardtrennzeichen für Spalten + private static final char DEFAULT_SEPARATOR = ';'; + // Standardmarkierung für Texte + private static final char DEFAULT_QUOTE = '"'; + // Standardtrennzeichen für Dezimalzahlen + private static final char DEFAULT_COMMA = ','; + + // mögliche Spaltentypen + private static final String UNKNOWN ="UNKOWN"; + private static final String INT = "INTEGER"; + private static final String DOUBLE = "DOUBLE"; + private static final String FLOAT = "FLOAT"; + + // interne Verwaltung des Dokuments als JDOM-Document-Objekt + private Document doc; + // Verweis auf Element für Kopfzeile + private Element header; + // Ende Attribute + + /** + * Erzeugt leeres Tabellen-Dokument. + */ + public Table() { + this.doc = new Document(); + doc.setRootElement(new Element("CSV-Data")); + this.header = new Element("Header"); + doc.getRootElement().addContent(header); + } + + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei und erstellt ein Tabellenobjekt mit seinen Werten. + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public Table(String filename, String options, char separator, char quote) { + loadCSV(filename, options, separator, quote); + } + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei und erstellt ein Tabellenobjekt mit seinen Werten (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + */ + public Table(String filename, String options) { + loadCSV(filename, options); + } + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei ohne Kopfzeile und erstellt ein Tabellenobjekt mit seinen Werten (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public Table(String filename) { + loadCSV(filename); + } + + // Anfang Methoden + /** + * Liest den Inhalt einer CSV-Datei ohne Kopfzeile (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public void loadCSV(String filename) { + loadCSV(filename, ""); + } + + /** + * Liest den Inhalt einer CSV-Datei (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + */ + public void loadCSV(String filename, String options) { + loadCSV(filename, options, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** + * Liest den Inhalt einer CSV-Datei. + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public void loadCSV(String filename, String options, char separator, char quote) { + doc = new Document(); + doc.setRootElement(new Element("CSV-Data")); + header = new Element("Header"); + doc.getRootElement().addContent(header); + try { + File f = new File(filename); + Scanner scanner = new Scanner(new File(filename)); + if(options.toLowerCase().contains("header") && scanner.hasNext()) { + List entries = parseLine(scanner.nextLine(), separator, quote); + int i= 0; + for(String s : entries) { + Element entry = new Element("Column"); + header.addContent(entry); + entry.setText(s); + entry.setAttribute("type", "unknown"); + i++; + } + } + + List cols = header.getChildren(); + + while (scanner.hasNext()) { + Element line = new Element("Row"); + doc.getRootElement().addContent(line); + List entries = parseLine(scanner.nextLine(), separator, quote); + int i= 0; + + for(String s : entries) { + + if(i==cols.size()) { + Element entry = new Element("Column"); + entry.setAttribute("type", "unknown"); + header.addContent(entry); + cols = header.getChildren(); + } + + Element entry = new Element("Entry"); + entry.setText(s); + line.addContent(entry); + i++; + } + } + scanner.close(); + + } catch (Exception e) { + System.out.println("Fehler beim Lesen der CSV-Datei"); + } + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei ohne Kopfzeile (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public void saveCSV(String filename) { + saveCSV(filename, ""); + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthalten, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile haben soll, + * dann lassen Sie einfach die Option "header" weg. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile haben soll. + * @param filename Dateiname der CSV-Datei. + */ + public void saveCSV(String filename, String options) { + saveCSV(filename, options, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei. + * Wenn die Datei eine Kopfzeile enthalten, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile haben soll, + * dann lassen Sie einfach die Option "header" weg. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile haben soll. + * @param filename Dateiname der CSV-Datei. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public void saveCSV(String filename, String options, char separator, char quote){ + try{ + File f = new File(filename); + PrintStream outputFile = new PrintStream (f); + System.out.println("Speicher in : "+f.getAbsolutePath()); + List columns = header.getChildren(); + String sq = ""+quote; + String ss = ""+separator; + if(quote =='"') sq = "\""; + if(separator =='"') ss = "\""; + + if(options.toLowerCase().contains("header")) { + String h = ""; + for(Element c : columns) { + h += ss + sq + c.getText()+sq; + } + outputFile.println(h.substring(1)); + } + for(int i = 0; i parseLine(String cvsLine) { + return parseLine(cvsLine, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** HIlfsfunktion für die Analyse einer Dateizeile + * @param cvsLine Zeile aus der Datei + * @param sparator Trennzeichen für die Spalten + * @return Liste von String für die einzelnen Spalten + */ + private List parseLine(String cvsLine, char separator) { + return parseLine(cvsLine, separator, DEFAULT_QUOTE); + } + + /** HIlfsfunktion für die Analyse einer Dateizeile + * @param cvsLine Zeile aus der Datei + * @param sparator Trennzeichen für die Spalten + * @param customQuote Kennung für Strings + * @return Liste von String für die einzelnen Spalten + */ + private List parseLine(String cvsLine, char separator, char customQuote) { + + List result = new ArrayList<>(); + + //if empty, return! + if (cvsLine == null && cvsLine.isEmpty()) { + return result; + } + + //ggf. Default-Value laden + if (customQuote == ' ') { + customQuote = DEFAULT_QUOTE; + } + + if (separator == ' ') { + separator = DEFAULT_SEPARATOR; + } + + StringBuffer curVal = new StringBuffer(); + boolean inQuotes = false; + boolean startCollectChar = false; + boolean doubleQuotesInColumn = false; + + char[] chars = cvsLine.toCharArray(); + + for (char ch : chars) { + + if (inQuotes) { // aktueller Text ist in Quotes eingeschlossen + startCollectChar = true; + + if (ch == customQuote) { // Quotes werden beendet, aber Achtung bei "" => Metazeichen + inQuotes = false; + if (ch == '\"') { + doubleQuotesInColumn = true; + } + + } else { + + if (ch == '\"' && !doubleQuotesInColumn) { + doubleQuotesInColumn = true; + } else { + curVal.append(ch); + doubleQuotesInColumn = false; + } + + } + } else { + if (ch == customQuote) { + + inQuotes = true; + + //Fixed : allow "" in empty quote enclosed + if (ch == '\"'){ + if(doubleQuotesInColumn) { + curVal.append('"'); + doubleQuotesInColumn = false; + } else doubleQuotesInColumn = true; + + + } + } + else { + doubleQuotesInColumn = false; + if (ch == separator) { + + result.add(curVal.toString()); + + curVal = new StringBuffer(); + startCollectChar = false; + + } else if (ch == '\r') { + //ignore LF characters + continue; + } else if (ch == '\n') { + //the end, break! + break; + } else { + curVal.append(ch); + } + } + } + + } + result.add(curVal.toString()); + return result; + } + + /** + * Sucht die Nummer einer durch Namen gegebenen Spalte. + * @param name Name der Spalte + * @return Nummer der Spalte + */ + + private int findColumnNumber(String name) { + List columns = header.getChildren(); + int i = 0; + for(Element c : columns) { + if (c.getText().toLowerCase().equals(name.toLowerCase())) { + return i; + + } + i++; + } + return -1; + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an. + */ + public void addColumn() { + Element entry = new Element("Column"); + entry.setAttribute("type", Table.UNKNOWN); + header.addContent(entry); + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an und benennt sie. + * @param title Bezeichnung der Spalte + */ + public void addColumn(String title) { + addColumn(); + Element nc = ((List)(header.getChildren())).get(header.getChildren().size()-1); + nc.setText(title); + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an und benennt und typisiert sie. + * @param title Bezeichnung der Spalte + * @param type Typ der Spalte (UNKNOWN, DOUBLE, INTEGER, FLOAT) + */ + public void addColumn(String title, String type) { + addColumn(title); + Element nc = ((List)(header.getChildren())).get(header.getChildren().size()-1); + nc.setAttribute("type", type); + } + + /** + * Löscht eine Spalte. + * @param i Nummer der Spalte. + */ + public void removeColumn(int i) { + List lines = doc.getRootElement().getChildren(); + for(Element l : lines) { + if(l.getChildren().size()>i) l.removeContent(i); + } + } + + /** + * Löscht eine Spalte + * @param name Name der Spalte + */ + public void removeColumn(String name) { + try{ + removeColumn(findColumnNumber(name)); + } catch(Exception e) { System.out.println("Unbekannter Spaltenname");} + } + + /** + * Liefert die Anzahl der Spalten in der Tabelle + * @return Anzahl der Spalten + */ + public int getColumnCount() { + return header.getChildren().size(); + } + + /** + * Liefert die Anzahl der Zeilen in der Tabelle + * @return Anzahl der Zeilen + */ + public int getRowCount() { + return doc.getRootElement().getChildren().size()-1; + } + + /** + * Löscht alle Zeilen der Tabelle. + * Die Spaltenüberschriften und Typen bleiben erhalten. + */ + public void clearRows() { + doc.getRootElement().removeChildren("Row"); + } + + /** + * Fügt eine neue Zeile an das Ende der Tabelle an. + * @return ein TableRow-Objekt für diese neue Zeile + */ + public TableRow addRow() { + Element row = new Element("Row"); + doc.getRootElement().addContent(row); + return new TableRow(doc, row); + } + + /** + * Löscht eine Zeile + * @param i Nummer der Zeile + */ + public void removeRow(int i) { + if(i rows = doc.getRootElement().getChildren(); + return new TableRow(doc, rows.get(i+1)); + } + return null; + } + + /** + * Liefert die ganze Tabelle als Array von TableRow-Objekten + * @return Array von TableRow-Objekten + */ + public TableRow[] rows() { + TableRow[] rows = new TableRow[getRowCount()]; + for(int i = 0; i < getRowCount(); i++) { + rows[i] = getRow(i); + } + return rows; + } + + /** + * Liefert den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param column Spaltennummer + * @return Wert der Zelle + */ + public int getInt(int row, int column) { + return getRow(row).getInt(column); + } + + /** + * Liefert den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param name Name der Spalte + * @return Wert der Zelle + */ + public int getInt(int row, String name) { + return getRow(row).getInt(name); + } + + /** + * Setzt den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param column Spaltennummer + * @param value neuer Wert der Zelle + */ + public void setInt(int row, int column,int value) { + getRow(row).setInt(column, value); + } + + /** + * Setzt den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(int row, String name, int value) { + getRow(row).setInt(name, value); + } + + /** + * Liefert alle Werte einer Zeile als Integer-Array. + * @param row Nummer der Zeile + * @return int-Array, dass alle Werte der Zeile enthält + */ + public int[] getIntRow(int row) { + try{ + TableRow trow = getRow(row); + int anz = getColumnCount(); + int[] r = new int[anz]; + for(int i=0; i) (header.getChildren())).get(i).getText(); + } else { + return ""; + } + } + + /** + * Liefert die Nummer einer Spalte + * @param name Name der Spalte + * @return Nummer der Spalte + */ + public int getColumn(String name) { + List columns = header.getChildren(); + int i = 0; + while (i < columns.size()) { + if (columns.get(i).getText().toLowerCase().equals(name.toLowerCase())) { + return i; + } + i++; + } // end of while + return -1; + } + + + /** + * Erzeugt eine neue Zeile mit i Spalten + * Wenn bisher nicht genügend Spalten vorhanden sind, werden automatisch neue Spalten hinzugefügt (auch zum Header) + * @param i Anzahl der Spalten + */ + private Element buildRow(int i) { + List columns = header.getChildren(); + Element entry=null; + for(int j=0; j<=i; j++) { + + if(j==columns.size()) { + Element h = new Element("Column"); + h.setAttribute("type", "unknown"); + header.addContent(h); + columns = header.getChildren(); + } + if(j==current.getChildren().size()) { + entry = new Element("Entry"); + current.addContent(entry); + + } + + } + return entry; + + } + + /** + * Erzeugt eine neue Zeile. + * Es werden genügend Spalten erzeugt, dass ein Wert in Spalte "name" eingetragen werden kann + * @param name Name der Spalte + */ + private Element buildRow(String name) { + List columns = header.getChildren(); + int i = 0; + for(Element c: columns) { + + if(c.getText().toLowerCase().equals(name.toLowerCase())) { + return buildRow(i); + } + i++; + } + return null; + + } + + /** + * Liefert den Wert einer Zelle als String + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public String getString(int i) { + if(i >= current.getContent().size()) return ""; + Element e = (Element) current.getContent(i) ; + if(e!=null) { + return e.getText(); + } else { + return ""; + } + } + + /** + * Liefert den Wert einer Zelle als String + * @param name Name der Spalte + * @return Wert der Zelle + */ + public String getString(String name) { + return getString(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als String + * @param i Nummer der Spalte + * @param text neuer Wert der Zelle + */ + public void setString(int i, String text) { + + Element e = buildRow(i); + if(e!=null) e.setText(text); + } + + /** + * Setzt den Wert einer Zelle als String + * @param name Name der Spalte + * @param text neuer Wert der Zelle + */ + public void setString(String name, String text) { + Element e = buildRow(name); + if(e!=null) e.setText(text); + } + + + /** + * Liefert den Wert einer Zelle als Int-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public int getInt(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Integer.parseInt(e.getText()); + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Int-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public int getInt(String name) { + return getInt(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Int-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(int i,int value) { + + Element e = buildRow(i); + if(e!=null) e.setText(""+value); + } + + /** + * Setzt den Wert einer Zelle als Int-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(String name, int value) { + Element e = buildRow(name); + if(e!=null) e.setText(""+value); + } + + /** + * Liefert den Wert einer Zelle als Float-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public float getFloat(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Float.parseFloat(e.getText().replace(",",".")); + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Float-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public float getFloat(String name) { + return getFloat(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Float-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setFloat(int i,float value) { + + Element e = buildRow(i); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Setzt den Wert einer Zelle als Float-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setFloat(String name, float value) { + Element e = buildRow(name); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Liefert den Wert einer Zelle als Double-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public double getDouble(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Double.parseDouble(e.getText().replace(",",".")); + + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Double-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public double getDouble(String name) { + return getDouble(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Double-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setDouble(int i,double value) { + + Element e = buildRow(i); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Setzt den Wert einer Zelle als Double-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setDouble(String name, double value) { + Element e = buildRow(name); + if(e!=null) e.setText(format.format(value)); + } + +} diff --git a/03_vorlagen_tauschordner/03_javaeditor/alg15_xydiagramm/XML.java b/03_vorlagen_tauschordner/03_javaeditor/alg15_xydiagramm/XML.java new file mode 100644 index 0000000..c06c490 --- /dev/null +++ b/03_vorlagen_tauschordner/03_javaeditor/alg15_xydiagramm/XML.java @@ -0,0 +1,637 @@ +/** + * Klasse zum Vereinfachten Zugriff auf XML-Dokumente + * Diese Klasse ist für den Einsatz in der Schule gedacht und soll den Schülern + * einen einfachen Zugriff auf XML-Dokumente ermöglichen. Die zur Verfügung + * stehenden Befehle sind wie in Processing realisiert. + * Dabei ist jeder Teilbaum des Dokuments wieder als XML-Objekt zugreifbar, das + * intern auf die gleiche XML-Dokumentstruktur zugreift. + * Dies ermöglicht bei unsachgemäßem Gebrauch die XML-Struktur zu zerstören. Im + * normalen Gebrauch sollte dies aber nicht relevant sein. + * + * Benötigt: jdom-1.1.3.jar + + * @author Thomas Schaller + * @version 1.0 vom 31.01.2019 + */ +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.ArrayList; +import java.io.*; + +import org.jdom.Document; +import org.jdom.Element; +import org.jdom.Attribute; +import org.jdom.JDOMException; +import org.jdom.input.SAXBuilder; +import org.jdom.output.XMLOutputter; +import org.jdom.output.Format; + +public class XML { + // Anfang Attribute + // XML-Dokumentstruktur + private Document doc; + // Zeiger auf das aktuelle Element + private Element current; + // Ende Attribute + + /** + * Erzeugt ein leeres XMLDokument + */ + public XML() { + this.doc = new Document(); + this.current = null; + } + + /** + * Erzeugt ein XML-Dokument aus einer Datei + * @param filename Dateiname der XML-Datei + */ + public XML(String filename) { + loadXML(filename); + } + + /** + * interner Konstruktor, um ein XML Objekt zu erzeugen, das auf einen bestimmten Knoten verweist + * @param doc die XML-Dokumentstruktur + * @param current Zeiger auf das aktuelle Element + */ + private XML(Document doc, Element current) { + this.doc = doc; + this.current = current; + } + + // Anfang Methoden + /** Öffnet das durch den Dateinamen gegebene Dokument + * @param filename Dateiname des XML-Files + */ + public void loadXML(String filename) { + doc = null; + File f = new File(filename); + + try { + // Das Dokument erstellen + SAXBuilder builder = new SAXBuilder(); + doc = builder.build(f); + + } catch (JDOMException e) { + e.printStackTrace(); + + } catch (IOException e) { + e.printStackTrace(); + } + // Zeiger im Baum auf Root-Element + current = doc.getRootElement(); + } + + /** Speichert den XML-Baum im angegebenen Dateinamen + * @param filename Dateiname des XML-Files + */ + public void saveXML(String filename) { + try { + // new XMLOutputter().output(doc, System.out); + XMLOutputter xmlOutput = new XMLOutputter(); + + // display nice nice + xmlOutput.setFormat(Format.getPrettyFormat()); + File f = new File(filename); + FileOutputStream outputFile = new FileOutputStream(f); + System.out.println("Speicher in : "+f.getAbsolutePath() ); + xmlOutput.output(doc, outputFile); + outputFile.close(); + System.out.println("File Saved!"); + } catch (IOException io) { + System.out.println(io.getMessage()); + } + + } + + //----------------------------------------------- Zeigerbewegungen -------------------------------------------------- + /** + * liefert ein XML-Objekt, das auf den Vaterknoten des aktuellen Elements zeigt. + * @return Vater des aktuellen Objekts. + */ + public XML getParent() { + if(current != null) { + Element parent = current.getParentElement(); + if (parent == null) { + return null; + } else { + return new XML(doc, parent); + } + } + return null; + } + + /** + * Überprüft, ob das Element irgendwelche Kinder hat oder nicht, und gibt das Ergebnis als boolean zurück. + * @return true, wenn Kinder vorhanden sind, sonst false + */ + public boolean hasChildren() { + if (current == null) { + return doc.hasRootElement(); + } else { + return current.getChildren().size()>0; + } + } + + /** + * Ermittelt die Namen aller Kinder des Elements und gibt die Namen als ein Array von Strings zurück. + * Dies ist dasselbe wie das Durchlaufen und Aufrufen von getName() auf jedem untergeordneten Element einzeln. + * @return Liste aller Namen der Kinder + */ + public String[] listChildren() { + if (current == null) { + if(doc.hasRootElement()) { + String[] names = new String[0]; + names[0] = doc.getRootElement().getName(); + return names; + } else { + return null; + } + } else { + List ch_element = current.getChildren(); + String[] names = new String[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + names[i] = ch_element.get(i).getName(); + } + return names; + } + } + + /** + * Liefert alle Kinder des Elements als Array von XML-Objekten. + * @return Array der Kinder als XML-Objekte + */ + public XML[] getChildren() { + if (current == null) { + if(doc.hasRootElement()) { + XML[] ch_xml = new XML[1]; + ch_xml[0] = new XML(doc, doc.getRootElement()); + return ch_xml; + } else { + return null; + } + } else { + List ch_element = current.getChildren(); + XML[] ch_xml = new XML[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + ch_xml[i] = new XML(doc, ch_element.get(i)); + } + return ch_xml; + } + } + + /** + * Liefert bestimmte Kinder des Elements als Array von XML-Objekten. + * Die Methode gibt dabei alle Kinder zurück, die dem angegebenen Namen entsprechen. + * @param name Name der gesuchten Kind-Objekte + * @return Array der Kinder als XML-Objekte + */ + public XML[] getChildren(String name) { + if (current == null) { + if(doc.hasRootElement()) { + XML[] ch_xml = new XML[1]; + ch_xml[0] = new XML(doc, doc.getRootElement()); + if(doc.getRootElement().getName().equals(name)){ + return ch_xml; + } else { + return null; + } + } else { + return null; + } + } else { + List ch_element = current.getChildren(name); + XML[] ch_xml = new XML[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + ch_xml[i] = new XML(doc, ch_element.get(i)); + } + return ch_xml; + } + } + + /** + * Liefert das erste Kind des Elements mit einem bestimmten Namen. + * Die Methode gibt das erste Kind zurück, das dem angegebenen Namen entsprechen. + * @param name Name des gesuchten Kind-Objektes + * @return Kind als XML-Objekt + */ + + public XML getChild(String name) { + if (current == null) { + Element e = doc.getRootElement(); + if (e.getName().equals(name)) { + return new XML(doc, e); + } else { + return null; + } + } else { + String[] names = name.split("/"); + Element e = current; + int i = 0; + while(i < names.length) { + e = e.getChild(names[i]); + if (e==null) return null; + i++; + } + return new XML(doc, e); + } + } + + /** + * Liefert das i. Kind des Elements. + * Die Methode gibt das i. Kind des aktuellen Elements zurück. + * @param i Nummer des Kindes + * @return Kind als XML-Objekt + */ + public XML getChild(int i) { + if (current == null) { + return new XML(doc, doc.getRootElement()); + } else { + List ch_element = current.getChildren(); + if (i>=ch_element.size()) return null; + return new XML(doc, ch_element.get(i)); + } + } + + //--------------------------------------------------- Methoden für das aktuelle Element ------------------------------------------------- + /** + * Frage den Namen des aktuellen Elements ab + * @return Namen des Elements + */ + public String getName() { + if (current==null) return ""; + return current.getName(); + } + + /** + * Setze den Namen des aktuellen Elements. + * @param name Neuer Name des Elements + */ + public void setName(String name) { + if (current==null) return; + current.setName(name); + } + + /** + * liefert die Anzahl der Attribute eines Elements. + * @return Anzahl des Attribute + */ + public int getAttributeCount() { + if (current == null) return 0; + return current.getAttributes().size(); + } + + /** + * liefert zurück, ob das aktuelle Element Attribute hat . + * @return true, wenn es Attribute gibt + */ + public boolean hasAttribute() { + if (current == null) return false; + return current.getAttributes().size()>0; + } + + /** + * Ruft alle Attribute des angegebenen Elements ab und gibt sie als Array von Strings zurück. + * @return Liste der Attributnamen + */ + public String[] listAttributes() { + if (current == null) return null; + List attr = current.getAttributes(); + String[] names = new String[attr.size()]; + for(int i=0; i < attr.size() ; i++) { + names[i] = attr.get(i).getName(); + } + return names; + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs + */ + public String getString(String attribute) { + if (current==null) return ""; + return current.getAttributeValue(attribute); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs + */ + public String getString(String attribute, String defaultValue) { + if (current==null) return defaultValue; + return current.getAttributeValue(attribute,defaultValue); + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param text neuer Wert des Attributs + */ + public void setString(String attribute, String text) { + if (current==null) return; + current.setAttribute(attribute, text); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Integer-Zahl + */ + public int getInt(String attribute) { + if (current==null) return 0; + try{ + int i = Integer.parseInt(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als Integer-Zahl + */ + public int getInt(String attribute, int defaultValue) { + if (current==null) return defaultValue; + try{ + int i = Integer.parseInt(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setInt(String attribute, int value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Float-Zahl + */ + public float getFloat(String attribute) { + if (current==null) return 0; + try{ + float i = Float.parseFloat(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als Float-Zahl + */ + public float getFloat(String attribute, float defaultValue) { + if (current==null) return defaultValue; + try{ + float i = Float.parseFloat(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setFloat(String attribute, float value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Double-Zahl + */ + public double getDouble(String attribute) { + if (current==null) return 0; + try{ + double i = Double.parseDouble(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + +/** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als double-Zahl + */ + public double getDouble(String attribute, double defaultValue) { + if (current==null) return defaultValue; + try{ + double i = Double.parseDouble(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setDouble(String attribute, double value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt den Inhalt/Text des aktuellen Elements ab + * @return Inhalt des Elements + */ + public String getContent() { + if ( current==null) return ""; + + return current.getText(); + } + + /** + * Fragt den Inhalt/Text des aktuellen Elements ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardtext + * @return Inhalt des Elements + */ + public String getContent(String defaultValue) { + if ( current==null) return defaultValue; + String t = current.getText(); + if(t.equals("")) t = defaultValue; + return t; + } + + /** + * Setzt den Inhalt/Text des aktuellen Elements + * @param text Neuer Inhalt des Elements + */ + public void setContent(String text) { + if ( current==null) return; + current.setText(text); + } + + + /** + * Fragt den Inhalt des aktuellen Elements als Integerzahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ public int getIntContent(int defaultValue) { + if ( current==null) return defaultValue; + try{ + int i = Integer.parseInt(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Integerzahl ab + * @return Inhalt des Elements + */ + public int getIntContent() { + if ( current==null) return 0; + try{ + int i = Integer.parseInt(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setIntContent(int value) { + if ( current==null) return; + current.setText(""+value); + } + + + /** + * Fragt den Inhalt des aktuellen Elements als Floatzahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ + public float getFloatContent(float defaultValue) { + if ( current==null) return defaultValue; + try{ + float i = Float.parseFloat(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Floatzahl ab + * @return Inhalt des Elements + */ + public float getFloatContent() { + if ( current==null) return 0; + try{ + float i = Float.parseFloat(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setFloatContent(float value) { + if ( current==null) return; + current.setText(""+value); + } + +/** + * Fragt den Inhalt des aktuellen Elements als Doublezahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ + public double getDoubleContent(double defaultValue) { + if ( current==null) return defaultValue; + try{ + double i = Double.parseDouble(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Doublezahl ab + * @return Inhalt des Elements + */ + public double getDoubleContent() { + if ( current==null) return 0; + try{ + double i = Double.parseDouble(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setDoubleContent(double value) { + if ( current==null) return; + current.setText(""+value); + } + + + // ----------------------------------------------- XML-Struktur aufbauen ------------------------------------------------ + /** Erzeuge neues Element nach der aktuellen Position und setze dieses als aktuelles Element + * @param name Name des neuen Elements + * @return neues Element als XML-Objekt + */ + public XML addChild(String name) { + Element e = new Element(name); + if(current == null){ // man ist auf Root-Ebene + doc.setRootElement(e); + + } + else { + current.addContent(e); + } // end of if-else + return new XML(doc, e); + } + + /** + * liefert das aktuelle Element als jdom-Element-Objekt + * @return aktuelles Element + */ + private Element getCurrent() { + return current; + } + + /** + * löscht ein Kind des aktuellen Knotens. + * Ist kid kein Kind des aktuellen Elements passiert gar nichts. + * @param kid XML-Objekt des Kindes + */ + public void removeChild(XML kid) { + if (current == null) return; + Element e = kid.getCurrent(); + int index = current.indexOf(e); + if(index >= 0) { current.removeContent(e);} + } + +} diff --git a/03_vorlagen_tauschordner/03_javaeditor/alg15_xydiagramm/XYDiagramm.java b/03_vorlagen_tauschordner/03_javaeditor/alg15_xydiagramm/XYDiagramm.java new file mode 100644 index 0000000..fed3e26 --- /dev/null +++ b/03_vorlagen_tauschordner/03_javaeditor/alg15_xydiagramm/XYDiagramm.java @@ -0,0 +1,121 @@ +import java.awt.Font; + +/** + * XY-Diagramm für Schalldruckpegel, Zahlen werden aus CSV-Datei gelesen. + * + * @author Schaller + * @version 29.11.18 + */ + + +public class XYDiagramm extends Picture + +{ + // Liste mit allen Werten + int[] punkte; + String[] namen; + + // Hilfsvariablen für die Suche + int akt_maximum=-1; // aktuell groesstes Element + int akt=-1; // aktuell untersuchtes Element + int verzoegerung=0; // Geschwindigkeit der Ausführung + + // Schriften + Font kleineSchrift; + Font grosseSchrift; + + public XYDiagramm() { + size(1000, 700); + background(0); + kleineSchrift = new Font( Font.SANS_SERIF, Font.PLAIN, 12 ); + grosseSchrift = new Font( Font.SANS_SERIF, Font.PLAIN, 20 ); + + + // CSV-Datei laden und anzeigen + ladeTabelle("punkte.csv"); + stroke(250,250,200); + zeichneBalken(); + } + + public void ladeTabelle(String name) { + // Tabelle aus CSV-Datei laden + Table csv = new Table(name, "header",',','"'); + + if (csv != null && csv.getColumnCount()==2) { + + // Initialisiere Arrays, in die alle Zeilen der Tabelle passen + punkte = new int[csv.getRowCount()]; + namen = new String[csv.getRowCount()]; + + // Fülle die Arrays mit Werten aus der Tabelle + for (int i = 0; i < punkte.length; i++) { + // Lies Wert aus der i. Zeile und der Spalte "Punkte" bzw. "Name" + punkte[i] = csv.getInt(i, "Punkte"); + namen[i] = csv.getString(i, "Name"); + } + } + } + + public void zeichneBalken() { + + clear(); + + // Überschrift + fill(255, 255, 255); + textFont(grosseSchrift); + text("Punkte", 2, 20); + textFont(kleineSchrift); + + // Alle Einträge darstellen + if (punkte != null) { + for (int i = 0; i< punkte.length; i++) { + + fill(20, 25, 165); + // aktuelle Elemente farblich hervorheben + if (i == akt) { + fill(140,230,20); + } + if (i == akt_maximum) { + fill(230,60,140); + } + // Balkendiagramm zeichnen + if (punkte[i]>=0) rect(120, 25+i*15, punkte[i]+1, 13); + + // Beschriftung + fill(255, 255, 255); + text(namen[i], 2, 35+i*15); + text(""+punkte[i], 70, 35+i*15); + } + } + + + + } + + public int sucheMaximum(int[] zahlen) { + // Sind überhaupt Daten da? + if(zahlen.length==0 ) { //<>// + return -1; + } + + // Startwerte setzen + akt_maximum = 0; + akt = 1; + + // Alle Arrayelemente untersuchen + while (akt < zahlen.length) { + + // Neues größtes Element?? + if (zahlen[akt]> zahlen[akt_maximum]) { + // Dann merke dir das neue + akt_maximum = akt; + + } + akt = akt + 1; + } + // Gib Position des größten Elements zurück + return akt_maximum; + } + +} + diff --git a/03_vorlagen_tauschordner/03_javaeditor/alg15_xydiagramm/XYDiagrammGUI.java b/03_vorlagen_tauschordner/03_javaeditor/alg15_xydiagramm/XYDiagrammGUI.java new file mode 100644 index 0000000..9289b4a --- /dev/null +++ b/03_vorlagen_tauschordner/03_javaeditor/alg15_xydiagramm/XYDiagrammGUI.java @@ -0,0 +1,82 @@ +import java.awt.*; +import java.awt.event.*; +import javax.swing.*; +import javax.swing.event.*; + +/** + * + * description + * + * @version 1.0 from 06.10.2018 + * @author + */ + +public class XYDiagrammGUI extends JFrame { + // Anfang Attribute + private JButton bXYDiagrammzeichnen = new JButton(); + private PictureViewer imagePanel1 = new PictureViewer(); + + private XYDiagramm bild; + private Picture b; + // Ende Attribute + + public XYDiagrammGUI (String title) { + super (title); + setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); + int frameWidth = 768; + int frameHeight = 551; + setSize(frameWidth, frameHeight); + Dimension d = Toolkit.getDefaultToolkit().getScreenSize(); + int x = (d.width - getSize().width) / 2; + int y = (d.height - getSize().height) / 2; + setLocation(x, y); + Container cp = getContentPane(); + cp.setLayout(null); + // Anfang Komponenten + bXYDiagrammzeichnen.setBounds(280, 456, 209, 33); + bXYDiagrammzeichnen.setText("XY-Diagramm zeichnen"); + bXYDiagrammzeichnen.setMargin(new Insets(2, 2, 2, 2)); + bXYDiagrammzeichnen.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent evt) { + bXYDiagrammzeichnen_ActionPerformed(evt); + } + }); + cp.add(bXYDiagrammzeichnen); + imagePanel1.setBounds(24, 16, 705, 409); + cp.add(imagePanel1); + + b = new Picture(700,800); + imagePanel1.setImage(b); + b.setObserver(imagePanel1); + addWindowListener(new WindowAdapter() { + public void windowClosed(WindowEvent evt) { + BalkendiagrammGUI_WindowClosed(evt); + } + }); + // Ende Komponenten + setResizable(false); + setVisible(true); + } + + // Anfang Methoden + public void bXYDiagrammzeichnen_ActionPerformed(ActionEvent evt) { + bild = new XYDiagramm(); + imagePanel1.setImage(bild); + bild.setObserver(imagePanel1); + imagePanel1.getVerticalScrollBar().setValue(10); + imagePanel1.getVerticalScrollBar().setValue(0); + imagePanel1.getViewport().repaint(); + } // end of bXYDiagrammzeichnen_ActionPerformed + + public void BalkendiagrammGUI_WindowClosed(WindowEvent evt) { + + + } // end of BalkendiagrammGUI_WindowClosed + + // Ende Methoden + + public static void main(String[] args) { + new XYDiagrammGUI("XYDiagrammGUI"); + } +} + diff --git a/03_vorlagen_tauschordner/03_javaeditor/alg15_xydiagramm/XYDiagrammGUI.jfm b/03_vorlagen_tauschordner/03_javaeditor/alg15_xydiagramm/XYDiagrammGUI.jfm new file mode 100644 index 0000000..384f91e --- /dev/null +++ b/03_vorlagen_tauschordner/03_javaeditor/alg15_xydiagramm/XYDiagrammGUI.jfm @@ -0,0 +1,104 @@ +object XYDiagrammGUI: TFGUIForm + Left = 761 + Top = 237 + BorderIcons = [biSystemMenu] + Caption = 'XYDiagrammGUI' + ClientHeight = 512 + ClientWidth = 752 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -10 + Font.Name = 'MS Sans Serif' + Font.Style = [] + FormStyle = fsStayOnTop + OldCreateOrder = True + Position = poDesigned + ShowHint = True + Visible = True + OnClose = FormClose + OnCloseQuery = FormCloseQuery + OnResize = FormResize + FrameType = 5 + Resizable = False + Undecorated = False + Background = clBtnFace + windowClosed = 'BalkendiagrammGUI_WindowClosed' + PixelsPerInch = 96 + TextHeight = 13 + object bXYDiagrammzeichnen: TJButton + Tag = 4 + Left = 280 + Top = 456 + Width = 209 + Height = 33 + Hint = 'jButton1' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Dialog' + Font.Style = [fsBold] + Foreground = 3355443 + Background = 15658734 + actionPerformed = 'bXYDiagrammzeichnen_ActionPerformed' + Text = 'XY-Diagramm zeichnen' + Mnemonic = 0 + DisplayedMnemonicIndex = 0 + Selected = False + BorderPainted = True + FocusPainted = False + ContentAreaFilled = True + HorizontalAlignment = CENTER + VerticalAlignment = CENTER + HorizontalTextPosition = RIGHT + VerticalTextPosition = CENTER + IconTextGap = 4 + RolloverEnabled = False + Border.BorderType = NoBorder + Border.LineColor = clBlack + Border.LineThickness = 0 + Border.LineRounded = False + Border.EtchHighlightColor = clBlack + Border.EtchShadowColor = clBlack + Border.Etchtype = 0 + Border.BevelHighlightColor = clBlack + Border.BevelShadowColor = clBlack + Border.Beveltype = 0 + Border.MatteColor = clBlack + Border.MatteTop = 0 + Border.MatteLeft = 0 + Border.MatteBottom = 0 + Border.MatteRight = 0 + end + object imagePanel1: TJPanel + Tag = 38 + Left = 24 + Top = 16 + Width = 705 + Height = 409 + Hint = 'imagePanel1' + HelpKeyword = 'ImagePanel' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Dialog' + Font.Style = [fsBold] + Foreground = 3355443 + Background = clBtnFace + Border.BorderType = NoBorder + Border.LineColor = clBlack + Border.LineThickness = 0 + Border.LineRounded = False + Border.EtchHighlightColor = clBlack + Border.EtchShadowColor = clBlack + Border.Etchtype = 0 + Border.BevelHighlightColor = clBlack + Border.BevelShadowColor = clBlack + Border.Beveltype = 0 + Border.MatteColor = clBlack + Border.MatteTop = 0 + Border.MatteLeft = 0 + Border.MatteBottom = 0 + Border.MatteRight = 0 + end +end diff --git a/03_vorlagen_tauschordner/03_javaeditor/alg15_xydiagramm/jdom-1.1.3.jar b/03_vorlagen_tauschordner/03_javaeditor/alg15_xydiagramm/jdom-1.1.3.jar new file mode 100644 index 0000000..a287727 Binary files /dev/null and b/03_vorlagen_tauschordner/03_javaeditor/alg15_xydiagramm/jdom-1.1.3.jar differ diff --git a/03_vorlagen_tauschordner/03_javaeditor/alg15_xydiagramm/punkte.csv b/03_vorlagen_tauschordner/03_javaeditor/alg15_xydiagramm/punkte.csv new file mode 100644 index 0000000..d6e8dfd --- /dev/null +++ b/03_vorlagen_tauschordner/03_javaeditor/alg15_xydiagramm/punkte.csv @@ -0,0 +1,6 @@ +"Name","Punkte" +Niko,216 +Klaus,591 +Anna,857 +Lena,180 +Winfried,168 diff --git a/03_vorlagen_tauschordner/04_blueJ/+libs/jdom-1.1.3.jar b/03_vorlagen_tauschordner/04_blueJ/+libs/jdom-1.1.3.jar new file mode 100644 index 0000000..a287727 Binary files /dev/null and b/03_vorlagen_tauschordner/04_blueJ/+libs/jdom-1.1.3.jar differ diff --git a/03_vorlagen_tauschordner/04_blueJ/01_bluej_version.odt b/03_vorlagen_tauschordner/04_blueJ/01_bluej_version.odt new file mode 100644 index 0000000..534583a Binary files /dev/null and b/03_vorlagen_tauschordner/04_blueJ/01_bluej_version.odt differ diff --git a/03_vorlagen_tauschordner/04_blueJ/Balkendiagramm.java b/03_vorlagen_tauschordner/04_blueJ/Balkendiagramm.java new file mode 100644 index 0000000..61d1084 --- /dev/null +++ b/03_vorlagen_tauschordner/04_blueJ/Balkendiagramm.java @@ -0,0 +1,119 @@ +import imp.*; +import java.awt.Font; + +/** + * Beschreiben Sie hier die Klasse Balkendiagramm. + * + * @author (Ihr Name) + * @version (eine Versionsnummer oder ein Datum) + */ +public class Balkendiagramm extends Picture +{ + // Schriften + public Font kleineSchrift; + public Font grosseSchrift; + + // Liste mit allen Werten //<>// + int[] zahlen; + String[] namen; + + // Hilfsvariablen für die Suche + int akt_maximum=-1; // aktuell groesstes Element + int akt=-1; // aktuell untersuchtes Element + int verzoegerung=1000; // 1000 - Geschwindigkeit der Ausführung + + public Balkendiagramm() { + size(800, 600); + background(0); + kleineSchrift = new Font( Font.SANS_SERIF, Font.PLAIN, 12 ); + grosseSchrift = new Font( Font.SANS_SERIF, Font.PLAIN, 20 ); + showInFrame(); + // CSV-Datei laden und anzeigen + ladeTabelle("punkte.csv"); + zeichneBalken(true); + } + + public void ladeTabelle(String name) { + // Tabelle aus CSV-Datei laden + Table csv = new Table(name,"header",',','"'); + + // Initialisiere Arrays, in die alle Zeilen der Tabelle passen + zahlen = new int[csv.getRowCount()]; + namen = new String[csv.getRowCount()]; + + // Fuelle die Arrays mit Werten aus der Tabelle + for (int i = 0; i < zahlen.length; i++) { + // Lies Wert aus der i. Zeile und der Spalte "Punkte" bzw. "Name" + zahlen[i] = csv.getInt(i,"Punkte"); + namen[i] = csv.getString(i,"Name"); + } + } + + public void zeichneBalken(boolean vorherLoeschen) { + if (vorherLoeschen) { + akt = -1; + akt_maximum = -1; + clear(); + } + // Überschrift + fill(255,255,255); + textFont(grosseSchrift); + text("Punkte", 2, 20); + textFont(kleineSchrift); + // Alle Eintraege darstellen + if (zahlen != null) { + for (int i = 0; i< zahlen.length; i++) { + setAutoRefresh(false); + fill(20,25,165); + // aktuelle Elemente farblich hervorheben + if (i == akt) { + fill(140,230,20); + } + if (i == akt_maximum) { + fill(230,60,140); + } + // Balkendiagramm zeichnen + if (zahlen[i]>=0) rect(120, 25+i*15, zahlen[i]+1, 13); + // Beschriftung + fill(255,255,255); + text(namen[i], 2, 35+i*15); + text(""+zahlen[i], 70, 35+i*15); + setAutoRefresh(true); + forceRepaint(); + } + } + } + + public int maximumsuche() { + // Sind überhaupt Daten da? + if(zahlen.length==0 ) { //<>// + return -1; + } + + // Startwerte setzen + akt_maximum = 0; + akt = 1; + + // Alle Arrayelemente untersuchen + while (akt < zahlen.length) { + // Neu zeichnen, da akt neu gesetzt wurde + zeichneBalken(false); + delay(verzoegerung); + // Neues größtes Element?? + if (zahlen[akt]> zahlen[akt_maximum]) { + // Dann merke dir das neue + akt_maximum = akt; + // Zeichne Balken neu, da neues größtes Element + zeichneBalken(false); + delay(verzoegerung); + } + akt = akt + 1; + } + zeichneBalken(false); + delay(verzoegerung); + akt = -1; + zeichneBalken(false); + // Gib Position des größten Elements zurück + return akt_maximum; + } +} diff --git a/03_vorlagen_tauschordner/04_blueJ/Kaffeehaus.java b/03_vorlagen_tauschordner/04_blueJ/Kaffeehaus.java new file mode 100644 index 0000000..72ac14d --- /dev/null +++ b/03_vorlagen_tauschordner/04_blueJ/Kaffeehaus.java @@ -0,0 +1,49 @@ +import imp.*; + +public class Kaffeehaus extends Picture +{ + + public Kaffeehaus () { + setup(); + showInFrame(); + } + + // globale Variablen + int s = 40; // Seitenlänge der Quadrate bzw. Abstand der Parallelen + + int[] abstaende = {10, 20, 30, 20}; // Abstände des 1. Quadrates nach links + + void setup(){ + size(655, 406); + background(255); // Hintergrund weiß + setAutoRefresh(false); + parallelen(10); // Aufruf der Methode zum Zeichnen der Parallelen + zeichneAlleQuadrate(); // Aufruf der Methode zum Zeichnen der Quadrate + forceRepaint(); + } + + void empty() { + super.clear(); + } + + void parallelen(int anzahl){ // zeichnet 10 graue Parallelen + stroke(125); // Linienfarbe Graustufe + for (int i=0; i 0) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawLine(x1, y1, x2, y2); + } + repaint(); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmaessig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Hoehe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geaendert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Fuellfarbe des Rechtecks gewaehlt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geaendert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geaendert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geaendert werden). + * @param d meist die Hoehe des Rechtecks (kann durch rectMode() geaendert werden). + * + */ + public void rect(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, rectMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillRect(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawRect(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmaessig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Hoehe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geaendert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Fuellfarbe des Rechtecks gewaehlt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geaendert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geaendert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geaendert werden). + * @param d meist die Hoehe des Rechtecks (kann durch ellipseMode() geaendert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, ellipseMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillOval(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawOval(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Fuellfarbe des Rechtecks gewaehlt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + int px[] = {x1, x2, x3}; + int py[] = {y1, y2, y3}; + polygon(px, py); + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist aehnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschraenkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Fuellfarbe des Rechtecks gewaehlt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + int px[] = {x1, x2, x3, x4}; + int py[] = {y1, y2, y3, y4}; + polygon(px, py); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Fuellfarbe des Rechtecks gewaehlt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + + public void polygon(int[] x, int[] y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(fillcolor != null) { + + g.setColor(fillcolor); + g.fillPolygon(x,y, y.length); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawPolygon(x, y, x.length); + } + repaint(); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert fuer den Punkt, der zweite Wert ist der y-Wert fuer den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + ellipse(x,y,1, 1); + } + + // ----------------------------------------- Schriftdarstellung ----------------------------------------------- + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewaehlte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param s Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String s, int x, int y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + if(pencolor != null) { + g.setColor(fillcolor); + g.setStroke(new BasicStroke((float) stroke)); + g.setFont(textfont); + g.drawString(s, x, y); + } + repaint(); + } + + /** + * Legt die Schriftart fuer Textausgaben fest. + * Jeder uebliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + this.textfont = font; + } + + // ----------------------------------------- Farbfestlegungen ----------------------------------------------- + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(String color) { + try{ + return new Color( + Integer.valueOf( color.substring( 0, 2 ), 16 ), + Integer.valueOf( color.substring( 2, 4 ), 16 ), + Integer.valueOf( color.substring( 4, 6 ), 16 ) ); + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(int color) { + try{ + if(color >=0 && color < 256) { + return new Color(color,color,color); + } else { + int r = color / 0x010000 % 0xFF; + int g = color / 0x000100 % 0xFF; + int b = color % 0xFF; + // System.out.println(""+r+","+g+","+b); + return new Color(r, g, b ); + } + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Legt die Farbe fest, mit der Linien und Raender um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei fuer die roten, gruenen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + this.pencolor = decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Raender um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiss, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + this.pencolor=decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Raender um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Gruenanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + this.pencolor = new Color(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Raender um Formen gezeichnet werden soll. + */ + public void noStroke() { + this.pencolor = null; + } + + /** + * Legt die Breite des Strichs fuer Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + this.stroke = width; + } + + /** + * Legt die Farbe fest, mit der Formen gefuellt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei fuer die roten, gruenen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Fuellfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + this.fillcolor = decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefuellt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Fuellfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiss, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + this.fillcolor=decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefuellt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Fuellfarbe + * @param g Gruenanteil (0-255) der Fuellfarbe + * @param b Blauanteil (0-255) der Fuellfarbe + */ + public void fill(int r, int g, int b) { + this.fillcolor = new Color(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefuellt werden sollen. + */ + public void noFill() { + this.fillcolor = null; + } + + /** + * Die Funktion background() setzt die Farbe, die fuer den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht moeglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberflaeche zu verwenden. + * @param c Farbe fuer den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiss, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + if(c < 256) { + this.background=new Color(c,c,c); + } else { + int r = c / 0x010000; + int g = c / 0x000100 % 0xFF; + int b = c % 0xFF; + this.background= new Color(r, g, b ); + } + + this.clear(); + } + + /** + * Die Funktion background() setzt die Farbe, die fuer den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht moeglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberflaeche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Gruenanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + this.background=new Color(r,g,b); + this.clear(); + } + + // ----------------------------------------- Dateioperationen ----------------------------------------------- + /** + * Laedt ein Bild aus dem Dateisystem. + * Laedt ein Bild von einem Datentraeger und setzt Stiftfarbe und Fuellfarbe auf Standardwerte zurueck. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + try{ + this.image = ImageIO.read(new File(filename)); + this.background = decode("D0D0D0"); + this.pencolor = new Color(0,0,0); + this.fillcolor = null; + this.stroke = 1; + this.repaint(); + } catch(Exception e) { + System.out.println("Fehler beim Einlesen der Bilddatei"); + } + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datentraeger. Zulaessig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmaessig wird die Dateiendung .png ergaenzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + try{ + String[] fn = filename.split("\\."); + if (fn.length== 1) { + ImageIO.write(image, "PNG", new File(filename+".png")); + } else { + + if (fn.length == 2 && (fn[1].toUpperCase().equals("PNG") || + fn[1].toUpperCase().equals("GIF"))){ + ImageIO.write(image, fn[1], new File(filename)); + }else { + System.out.println("Unbekanntes Bildformat"); + } + } + } catch(Exception e) { + System.out.println("Fehler beim Speichern"); + } + } + + // ----------------------------------------- Sonstiges ----------------------------------------------- + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + + public Color[][] getPixelArray() { + Color[][] pixel = new Color[image.getWidth()][image.getHeight()]; + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + pixel[x][y] = new java.awt.Color(image.getRGB(x,y)); + } + } + return pixel; + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Groesse des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + size(pixel.length,pixel[0].length); + Graphics2D g = (Graphics2D) image.getGraphics(); + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + g.setColor(pixel[x][y]); + g.fillRect(x, y, 1, 1); + } + } + repaint(); + } + + /** + * Hilfsfunktion zum Verzoegern der Ausgabe + * @param millis Wartezeit in Millisekunden + */ + public void delay(int millis) { + try{ + Thread.sleep(millis); + } catch(Exception e) { + System.out.println("Fehler beim Verzoegern der Ausgabe"); + } + } +} \ No newline at end of file diff --git a/03_vorlagen_tauschordner/04_blueJ/imp/PictureViewer.java b/03_vorlagen_tauschordner/04_blueJ/imp/PictureViewer.java new file mode 100644 index 0000000..bfd987b --- /dev/null +++ b/03_vorlagen_tauschordner/04_blueJ/imp/PictureViewer.java @@ -0,0 +1,549 @@ +package imp; + +import java.awt.*; +import java.awt.event.*; +import java.awt.image.*; +import javax.swing.*; +import javax.swing.event.*; +import java.util.Vector; +import javax.imageio.*; +import java.io.*; + +/** + * Der PictureViewer ist ein Actor, der in der Lage ist ein + * Objekt der Klasse Picture anzuzeigen. Zusätzlich können + * mehrere Verarbeitungsschritte gespeichert werden, um ein + * "zurück"-Funktion zu ermöglichen. + * + * @author Thomas Schaller + * @version V1.0 vom 10.02.2019 + */ +public class PictureViewer extends JFrame +{ + public static final int FIT = -1; + public static final int NORMAL = 1; + + private static final int ANZ_BACK = 0; + + private double zoom; + protected Picture picture = null; + private Vector history; + private JLabel imagePane = new JLabel(); + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der Größe 500x400 + */ + public PictureViewer() { + this(800,500); + + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public PictureViewer(int width, int height) { + this(width,height, "D0D0D0"); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + * @param background Farbe des Hintergrunds als HEX-String (z.B. "FF3A45") + */ + public PictureViewer(int width, int height, String background) { + super(); + setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); + setSize(width, height); + Dimension d = Toolkit.getDefaultToolkit().getScreenSize(); + int x = (d.width - getSize().width); + int y = 0; + setLocation(x, y); + Container cp = getContentPane(); + cp.setLayout(null); + imagePane.setBounds(0,0,width,height); + cp.add(imagePane); + this.setVisible(true); + picture = new Picture(width,height, background); + picture.setObserver(this); + this.history = new Vector(); + this.zoom = NORMAL; + repaint(); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild aus einer Bilddatei + * @param filename Name des Bildes + */ + public PictureViewer(String filename) { + picture = new Picture(filename); + picture.setObserver(this); + this.history = new Vector(); + this.zoom = NORMAL; + + setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); + setSize(picture.getWidth(), picture.getHeight()); + Dimension d = Toolkit.getDefaultToolkit().getScreenSize(); + int x = (d.width - getSize().width); + int y = 0; + setLocation(x, y); + Container cp = getContentPane(); + cp.setLayout(null); + imagePane.setBounds(0,0,picture.getWidth(),picture.getHeight()); + cp.add(imagePane); + this.setVisible(true); + + repaint(); + } + + public PictureViewer(Picture p) { + picture = p; + picture.setObserver(this); + this.history = new Vector(); + this.zoom = NORMAL; + setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); + setSize(picture.getWidth(), picture.getHeight()); + Dimension d = Toolkit.getDefaultToolkit().getScreenSize(); + int x = (d.width - getSize().width); + int y = 0; + setLocation(x, y); + Container cp = getContentPane(); + cp.setLayout(null); + imagePane.setBounds(0,0,picture.getWidth(),picture.getHeight()); + cp.add(imagePane); + this.setVisible(true); + + repaint(); + } + + /** + * Speichert das übergebene Bild in der History. + * @param b zu speicherndes Bild + */ + public void pushImage() { + if( this.ANZ_BACK > 0) { + if(history.size() == this.ANZ_BACK) { + history.removeElementAt(0); + } + + BufferedImage b = new BufferedImage(picture.getWidth(), picture.getHeight(), picture.getImage().getType()); + Graphics g = b.getGraphics(); + g.drawImage(picture.getImage(), 0, 0, null); + g.dispose(); + + history.add(b); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + private void popImage() { + int anz = history.size(); + if(anz>0) { + BufferedImage i = history.get(anz-1); + history.removeElementAt(anz-1); + picture.setImage(i); + repaint(); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + public void back() { + popImage(); + } + + /** + * Setzt den Zoom-Faktor für das Bild. + * Als Zoomfaktor sind auch die Konstanten Bildanzeiger.FIT (auf Bildschirmgröße zoomen) und Bildanzeiger.NORMAL (100%) möglich. + * @param factor Zoomfaktor (1.0 = 100%). + */ + public void setZoom(double zoom) { + this.zoom = zoom; + repaint(); + } + + /** + * Setzt die automatische Neuanzeige des Bildes. + * Mit dieser Methode kann man einstellen, ob nach jedem Zeichenbefehl + * die Anzeige auf dem Bildschirm aktualisiert werden soll. Bei sehr + * vielen Zeichenbefehlen wird die Ausgabe dadurch sehr langsam. Es reicht + * eine Anzeige am Ende der Zeichenbefehle. Rufen Sie dann für das Neuzeichnen + * die Methode refresh() auf. + * @param autoRefresh true, wenn nach jedem Zeichenbefehl die Anzeige aktualisiert werden soll. + */ + public void setAutoRefresh(boolean autoRefresh) { + picture.setAutoRefresh(autoRefresh); + } + + /** + * Sorgt für die Aktualisierung der Bildschrimanzeige. Das aktuelle Bild + * wird dadurch angezeigt. Durch Einstellung von autoRefresh kann die + * Anzeige automatisiert werden. + */ + public void refresh() { + repaint(); + } + + /** + * Setzt das angezeigt Bild neu und beachtet dabei den Zoomfaktor. + */ + + public void repaint() { + //System.out.println("Test"+(z++)); + double faktor = zoom; + + if (zoom == FIT) { + double faktorw = (double) imagePane.getWidth() / picture.getWidth(); + double faktorh = (double) imagePane.getHeight() / picture.getHeight(); + faktor = Math.min(faktorw, faktorh); + } + int gfi_width = (int) (picture.getWidth()*faktor); + int gfi_height = (int) (picture.getHeight()*faktor); + + BufferedImage image = new BufferedImage(imagePane.getWidth(), imagePane.getHeight(), BufferedImage.TYPE_INT_ARGB); + Graphics2D g = (Graphics2D) image.getGraphics(); + g.drawImage(picture.getImage(),0,0,gfi_width, gfi_height, 0, 0, picture.getWidth(), picture.getHeight(), null); + g.setColor(new java.awt.Color(0,0,0)); + g.setStroke(new BasicStroke((float) 1)); + g.drawRect(0,0,gfi_width-1, gfi_height-1); + + imagePane.setIcon(new ImageIcon(image)); + imagePane.repaint(); + + } + + // Wrappermethoden + /** + * Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + * Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + * der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu. + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public void size(int width, int height){ + picture.size(width, height); + } + + /** + * Liefert die Breite des Bildes zurück. + * @return Breite des Bildes + */ + public int getImageWidth() { + return picture.getWidth(); + } + + /** + * Liefert die Höhe des Bildes zurück. + * @return Höhe des Bildes + */ + public int getImageHeight() { + return picture.getHeight(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + picture.background(c); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + picture.background(r,g,b); + } + + /** + * Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + * Um eine Linie einzufärben, verwenden Sie die {@link #stroke(int, int, int) stroke()} Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + * Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + * {@link #strokeWeight(double) strokeWeight()} geändert werden. + * @param x1 x-Koordinate des 1. Punktes + * @param y1 y-Koordinate des 1. Punktes + * @param x2 x-Koordinate des 2. Punktes + * @param y2 y-Koordinate des 2. Punktes + */ + public void line(int x1, int y1, int x2, int y2) { + picture.line(x1,y1,x2,y2); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + picture.rect(a,b,c,d); + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + picture.ellipse(a,b,c,d); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + picture.triangle(x1,y1,x2,y2,x3,y3); + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + picture.quad(x1,y1,x2,y2,x3,y3,x4,y4); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + public void polygon(int[] x, int[] y) { + picture.polygon(x,y); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + picture.point(x,y); + + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + * Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + * Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void rectMode(int mode) { + picture.rectMode(mode); + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + * Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + * Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als Breite und Höhe der Form. + * ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void ellipseMode(int mode) { + picture.ellipseMode(mode); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + picture.stroke(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + picture.noStroke(); + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + picture.strokeWeight(width); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + picture.fill(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + picture.noFill(); + } + + /** + * Löscht den Inhalt des Bildes. + * Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt. + */ + public void clear(){ + picture.clear(); + } + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + picture.load(filename); + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + picture.save(filename); + } + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param t Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String t, int x, int y) { + picture.text(t,x,y); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + picture.textFont(font); + } + + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + public Color[][] getPixelArray() { + return picture.getPixelArray(); + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + picture.setPixelArray(pixel); + } + +} diff --git a/03_vorlagen_tauschordner/04_blueJ/imp/Table.java b/03_vorlagen_tauschordner/04_blueJ/imp/Table.java new file mode 100644 index 0000000..5db2f11 --- /dev/null +++ b/03_vorlagen_tauschordner/04_blueJ/imp/Table.java @@ -0,0 +1,898 @@ +package imp; + + + +/** + * Die Klasse Table vereinfacht den Zugriff auf CSV-Dateien. + * Die Klassen Table und TableRow ermöglichen einen einfachen Zugriff auf tabellenbasierte + * Dokumente. + * + * @author Thomas Schaller + * @version 1.0 vom 01.02.2019 + */ + +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.ArrayList; +import java.io.*; +import java.util.Scanner; + +import org.jdom.Document; +import org.jdom.Element; +import org.jdom.Attribute; +import org.jdom.JDOMException; +import org.jdom.input.SAXBuilder; +import org.jdom.output.XMLOutputter; +import org.jdom.output.Format; + +public class Table +{ + // Standardtrennzeichen für Spalten + private static final char DEFAULT_SEPARATOR = ';'; + // Standardmarkierung für Texte + private static final char DEFAULT_QUOTE = '"'; + // Standardtrennzeichen für Dezimalzahlen + private static final char DEFAULT_COMMA = ','; + + // mögliche Spaltentypen + private static final String UNKNOWN ="UNKOWN"; + private static final String INT = "INTEGER"; + private static final String DOUBLE = "DOUBLE"; + private static final String FLOAT = "FLOAT"; + + // interne Verwaltung des Dokuments als JDOM-Document-Objekt + private Document doc; + // Verweis auf Element für Kopfzeile + private Element header; + // Ende Attribute + + /** + * Erzeugt leeres Tabellen-Dokument. + */ + public Table() { + this.doc = new Document(); + doc.setRootElement(new Element("CSV-Data")); + this.header = new Element("Header"); + doc.getRootElement().addContent(header); + } + + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei und erstellt ein Tabellenobjekt mit seinen Werten. + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public Table(String filename, String options, char separator, char quote) { + loadCSV(filename, options, separator, quote); + } + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei und erstellt ein Tabellenobjekt mit seinen Werten (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + */ + public Table(String filename, String options) { + loadCSV(filename, options); + } + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei ohne Kopfzeile und erstellt ein Tabellenobjekt mit seinen Werten (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public Table(String filename) { + loadCSV(filename); + } + + // Anfang Methoden + /** + * Liest den Inhalt einer CSV-Datei ohne Kopfzeile (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public void loadCSV(String filename) { + loadCSV(filename, ""); + } + + /** + * Liest den Inhalt einer CSV-Datei (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + */ + public void loadCSV(String filename, String options) { + loadCSV(filename, options, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** + * Liest den Inhalt einer CSV-Datei. + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public void loadCSV(String filename, String options, char separator, char quote) { + doc = new Document(); + doc.setRootElement(new Element("CSV-Data")); + header = new Element("Header"); + doc.getRootElement().addContent(header); + try { + File f = new File(filename); + Scanner scanner = new Scanner(new File(filename)); + if(options.toLowerCase().contains("header") && scanner.hasNext()) { + List entries = parseLine(scanner.nextLine(), separator, quote); + int i= 0; + for(String s : entries) { + Element entry = new Element("Column"); + header.addContent(entry); + entry.setText(s); + entry.setAttribute("type", "unknown"); + i++; + } + } + + List cols = header.getChildren(); + + while (scanner.hasNext()) { + Element line = new Element("Row"); + doc.getRootElement().addContent(line); + List entries = parseLine(scanner.nextLine(), separator, quote); + int i= 0; + + for(String s : entries) { + + if(i==cols.size()) { + Element entry = new Element("Column"); + entry.setAttribute("type", "unknown"); + header.addContent(entry); + cols = header.getChildren(); + } + + Element entry = new Element("Entry"); + entry.setText(s); + line.addContent(entry); + i++; + } + } + scanner.close(); + + } catch (Exception e) { + System.out.println("Fehler beim Lesen der CSV-Datei"); + } + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei ohne Kopfzeile (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public void saveCSV(String filename) { + saveCSV(filename, ""); + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthalten, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile haben soll, + * dann lassen Sie einfach die Option "header" weg. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile haben soll. + * @param filename Dateiname der CSV-Datei. + */ + public void saveCSV(String filename, String options) { + saveCSV(filename, options, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei. + * Wenn die Datei eine Kopfzeile enthalten, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile haben soll, + * dann lassen Sie einfach die Option "header" weg. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile haben soll. + * @param filename Dateiname der CSV-Datei. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public void saveCSV(String filename, String options, char separator, char quote){ + try{ + File f = new File(filename); + PrintStream outputFile = new PrintStream (f); + System.out.println("Speicher in : "+f.getAbsolutePath()); + List columns = header.getChildren(); + String sq = ""+quote; + String ss = ""+separator; + if(quote =='"') sq = "\""; + if(separator =='"') ss = "\""; + + if(options.toLowerCase().contains("header")) { + String h = ""; + for(Element c : columns) { + h += ss + sq + c.getText()+sq; + } + outputFile.println(h.substring(1)); + } + for(int i = 0; i parseLine(String cvsLine) { + return parseLine(cvsLine, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** HIlfsfunktion für die Analyse einer Dateizeile + * @param cvsLine Zeile aus der Datei + * @param sparator Trennzeichen für die Spalten + * @return Liste von String für die einzelnen Spalten + */ + private List parseLine(String cvsLine, char separator) { + return parseLine(cvsLine, separator, DEFAULT_QUOTE); + } + + /** HIlfsfunktion für die Analyse einer Dateizeile + * @param cvsLine Zeile aus der Datei + * @param sparator Trennzeichen für die Spalten + * @param customQuote Kennung für Strings + * @return Liste von String für die einzelnen Spalten + */ + private List parseLine(String cvsLine, char separator, char customQuote) { + + List result = new ArrayList<>(); + + //if empty, return! + if (cvsLine == null && cvsLine.isEmpty()) { + return result; + } + + //ggf. Default-Value laden + if (customQuote == ' ') { + customQuote = DEFAULT_QUOTE; + } + + if (separator == ' ') { + separator = DEFAULT_SEPARATOR; + } + + StringBuffer curVal = new StringBuffer(); + boolean inQuotes = false; + boolean startCollectChar = false; + boolean doubleQuotesInColumn = false; + + char[] chars = cvsLine.toCharArray(); + + for (char ch : chars) { + + if (inQuotes) { // aktueller Text ist in Quotes eingeschlossen + startCollectChar = true; + + if (ch == customQuote) { // Quotes werden beendet, aber Achtung bei "" => Metazeichen + inQuotes = false; + if (ch == '\"') { + doubleQuotesInColumn = true; + } + + } else { + + if (ch == '\"' && !doubleQuotesInColumn) { + doubleQuotesInColumn = true; + } else { + curVal.append(ch); + doubleQuotesInColumn = false; + } + + } + } else { + if (ch == customQuote) { + + inQuotes = true; + + //Fixed : allow "" in empty quote enclosed + if (ch == '\"'){ + if(doubleQuotesInColumn) { + curVal.append('"'); + doubleQuotesInColumn = false; + } else doubleQuotesInColumn = true; + + + } + } + else { + doubleQuotesInColumn = false; + if (ch == separator) { + + result.add(curVal.toString()); + + curVal = new StringBuffer(); + startCollectChar = false; + + } else if (ch == '\r') { + //ignore LF characters + continue; + } else if (ch == '\n') { + //the end, break! + break; + } else { + curVal.append(ch); + } + } + } + + } + result.add(curVal.toString()); + return result; + } + + /** + * Sucht die Nummer einer durch Namen gegebenen Spalte. + * @param name Name der Spalte + * @return Nummer der Spalte + */ + + private int findColumnNumber(String name) { + List columns = header.getChildren(); + int i = 0; + for(Element c : columns) { + if (c.getText().toLowerCase().equals(name.toLowerCase())) { + return i; + + } + i++; + } + return -1; + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an. + */ + public void addColumn() { + Element entry = new Element("Column"); + entry.setAttribute("type", Table.UNKNOWN); + header.addContent(entry); + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an und benennt sie. + * @param title Bezeichnung der Spalte + */ + public void addColumn(String title) { + addColumn(); + Element nc = ((List)(header.getChildren())).get(header.getChildren().size()-1); + nc.setText(title); + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an und benennt und typisiert sie. + * @param title Bezeichnung der Spalte + * @param type Typ der Spalte (UNKNOWN, DOUBLE, INTEGER, FLOAT) + */ + public void addColumn(String title, String type) { + addColumn(title); + Element nc = ((List)(header.getChildren())).get(header.getChildren().size()-1); + nc.setAttribute("type", type); + } + + /** + * Löscht eine Spalte. + * @param i Nummer der Spalte. + */ + public void removeColumn(int i) { + List lines = doc.getRootElement().getChildren(); + for(Element l : lines) { + if(l.getChildren().size()>i) l.removeContent(i); + } + } + + /** + * Löscht eine Spalte + * @param name Name der Spalte + */ + public void removeColumn(String name) { + try{ + removeColumn(findColumnNumber(name)); + } catch(Exception e) { System.out.println("Unbekannter Spaltenname");} + } + + /** + * Liefert die Anzahl der Spalten in der Tabelle + * @return Anzahl der Spalten + */ + public int getColumnCount() { + return header.getChildren().size(); + } + + /** + * Liefert die Anzahl der Zeilen in der Tabelle + * @return Anzahl der Zeilen + */ + public int getRowCount() { + return doc.getRootElement().getChildren().size()-1; + } + + /** + * Löscht alle Zeilen der Tabelle. + * Die Spaltenüberschriften und Typen bleiben erhalten. + */ + public void clearRows() { + doc.getRootElement().removeChildren("Row"); + } + + /** + * Fügt eine neue Zeile an das Ende der Tabelle an. + * @return ein TableRow-Objekt für diese neue Zeile + */ + public TableRow addRow() { + Element row = new Element("Row"); + doc.getRootElement().addContent(row); + return new TableRow(doc, row); + } + + /** + * Löscht eine Zeile + * @param i Nummer der Zeile + */ + public void removeRow(int i) { + if(i rows = doc.getRootElement().getChildren(); + return new TableRow(doc, rows.get(i+1)); + } + return null; + } + + /** + * Liefert die ganze Tabelle als Array von TableRow-Objekten + * @return Array von TableRow-Objekten + */ + public TableRow[] rows() { + TableRow[] rows = new TableRow[getRowCount()]; + for(int i = 0; i < getRowCount(); i++) { + rows[i] = getRow(i); + } + return rows; + } + + /** + * Liefert den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param column Spaltennummer + * @return Wert der Zelle + */ + public int getInt(int row, int column) { + return getRow(row).getInt(column); + } + + /** + * Liefert den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param name Name der Spalte + * @return Wert der Zelle + */ + public int getInt(int row, String name) { + return getRow(row).getInt(name); + } + + /** + * Setzt den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param column Spaltennummer + * @param value neuer Wert der Zelle + */ + public void setInt(int row, int column,int value) { + getRow(row).setInt(column, value); + } + + /** + * Setzt den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(int row, String name, int value) { + getRow(row).setInt(name, value); + } + + /** + * Liefert alle Werte einer Zeile als Integer-Array. + * @param row Nummer der Zeile + * @return int-Array, dass alle Werte der Zeile enthält + */ + public int[] getIntRow(int row) { + try{ + TableRow trow = getRow(row); + int anz = getColumnCount(); + int[] r = new int[anz]; + for(int i=0; i) (header.getChildren())).get(i).getText(); + } else { + return ""; + } + } + + /** + * Liefert die Nummer einer Spalte + * @param name Name der Spalte + * @return Nummer der Spalte + */ + public int getColumn(String name) { + List columns = header.getChildren(); + int i = 0; + while (i < columns.size()) { + if (columns.get(i).getText().toLowerCase().equals(name.toLowerCase())) { + return i; + } + i++; + } // end of while + return -1; + } + + + /** + * Erzeugt eine neue Zeile mit i Spalten + * Wenn bisher nicht genügend Spalten vorhanden sind, werden automatisch neue Spalten hinzugefügt (auch zum Header) + * @param i Anzahl der Spalten + */ + private Element buildRow(int i) { + List columns = header.getChildren(); + Element entry=null; + for(int j=0; j<=i; j++) { + + if(j==columns.size()) { + Element h = new Element("Column"); + h.setAttribute("type", "unknown"); + header.addContent(h); + columns = header.getChildren(); + } + if(j==current.getChildren().size()) { + entry = new Element("Entry"); + current.addContent(entry); + + } + + } + return entry; + + } + + /** + * Erzeugt eine neue Zeile. + * Es werden genügend Spalten erzeugt, dass ein Wert in Spalte "name" eingetragen werden kann + * @param name Name der Spalte + */ + private Element buildRow(String name) { + List columns = header.getChildren(); + int i = 0; + for(Element c: columns) { + + if(c.getText().toLowerCase().equals(name.toLowerCase())) { + return buildRow(i); + } + i++; + } + return null; + + } + + /** + * Liefert den Wert einer Zelle als String + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public String getString(int i) { + if(i >= current.getContent().size()) return ""; + Element e = (Element) current.getContent(i) ; + if(e!=null) { + return e.getText(); + } else { + return ""; + } + } + + /** + * Liefert den Wert einer Zelle als String + * @param name Name der Spalte + * @return Wert der Zelle + */ + public String getString(String name) { + return getString(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als String + * @param i Nummer der Spalte + * @param text neuer Wert der Zelle + */ + public void setString(int i, String text) { + + Element e = buildRow(i); + if(e!=null) e.setText(text); + } + + /** + * Setzt den Wert einer Zelle als String + * @param name Name der Spalte + * @param text neuer Wert der Zelle + */ + public void setString(String name, String text) { + Element e = buildRow(name); + if(e!=null) e.setText(text); + } + + + /** + * Liefert den Wert einer Zelle als Int-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public int getInt(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Integer.parseInt(e.getText()); + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Int-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public int getInt(String name) { + return getInt(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Int-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(int i,int value) { + + Element e = buildRow(i); + if(e!=null) e.setText(""+value); + } + + /** + * Setzt den Wert einer Zelle als Int-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(String name, int value) { + Element e = buildRow(name); + if(e!=null) e.setText(""+value); + } + + /** + * Liefert den Wert einer Zelle als Float-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public float getFloat(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Float.parseFloat(e.getText().replace(",",".")); + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Float-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public float getFloat(String name) { + return getFloat(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Float-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setFloat(int i,float value) { + + Element e = buildRow(i); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Setzt den Wert einer Zelle als Float-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setFloat(String name, float value) { + Element e = buildRow(name); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Liefert den Wert einer Zelle als Double-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public double getDouble(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Double.parseDouble(e.getText().replace(",",".")); + + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Double-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public double getDouble(String name) { + return getDouble(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Double-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setDouble(int i,double value) { + + Element e = buildRow(i); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Setzt den Wert einer Zelle als Double-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setDouble(String name, double value) { + Element e = buildRow(name); + if(e!=null) e.setText(format.format(value)); + } + +} diff --git a/03_vorlagen_tauschordner/04_blueJ/imp/XML.java b/03_vorlagen_tauschordner/04_blueJ/imp/XML.java new file mode 100644 index 0000000..aadbb8f --- /dev/null +++ b/03_vorlagen_tauschordner/04_blueJ/imp/XML.java @@ -0,0 +1,639 @@ +package imp; + +/** + * Klasse zum Vereinfachten Zugriff auf XML-Dokumente + * Diese Klasse ist für den Einsatz in der Schule gedacht und soll den Schülern + * einen einfachen Zugriff auf XML-Dokumente ermöglichen. Die zur Verfügung + * stehenden Befehle sind wie in Processing realisiert. + * Dabei ist jeder Teilbaum des Dokuments wieder als XML-Objekt zugreifbar, das + * intern auf die gleiche XML-Dokumentstruktur zugreift. + * Dies ermöglicht bei unsachgemäßem Gebrauch die XML-Struktur zu zerstören. Im + * normalen Gebrauch sollte dies aber nicht relevant sein. + * + * Benötigt: jdom-1.1.3.jar + + * @author Thomas Schaller + * @version 1.0 vom 31.01.2019 + */ +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.ArrayList; +import java.io.*; + +import org.jdom.Document; +import org.jdom.Element; +import org.jdom.Attribute; +import org.jdom.JDOMException; +import org.jdom.input.SAXBuilder; +import org.jdom.output.XMLOutputter; +import org.jdom.output.Format; + +public class XML { + // Anfang Attribute + // XML-Dokumentstruktur + private Document doc; + // Zeiger auf das aktuelle Element + private Element current; + // Ende Attribute + + /** + * Erzeugt ein leeres XMLDokument + */ + public XML() { + this.doc = new Document(); + this.current = null; + } + + /** + * Erzeugt ein XML-Dokument aus einer Datei + * @param filename Dateiname der XML-Datei + */ + public XML(String filename) { + loadXML(filename); + } + + /** + * interner Konstruktor, um ein XML Objekt zu erzeugen, das auf einen bestimmten Knoten verweist + * @param doc die XML-Dokumentstruktur + * @param current Zeiger auf das aktuelle Element + */ + private XML(Document doc, Element current) { + this.doc = doc; + this.current = current; + } + + // Anfang Methoden + /** Öffnet das durch den Dateinamen gegebene Dokument + * @param filename Dateiname des XML-Files + */ + public void loadXML(String filename) { + doc = null; + File f = new File(filename); + + try { + // Das Dokument erstellen + SAXBuilder builder = new SAXBuilder(); + doc = builder.build(f); + + } catch (JDOMException e) { + e.printStackTrace(); + + } catch (IOException e) { + e.printStackTrace(); + } + // Zeiger im Baum auf Root-Element + current = doc.getRootElement(); + } + + /** Speichert den XML-Baum im angegebenen Dateinamen + * @param filename Dateiname des XML-Files + */ + public void saveXML(String filename) { + try { + // new XMLOutputter().output(doc, System.out); + XMLOutputter xmlOutput = new XMLOutputter(); + + // display nice nice + xmlOutput.setFormat(Format.getPrettyFormat()); + File f = new File(filename); + FileOutputStream outputFile = new FileOutputStream(f); + System.out.println("Speicher in : "+f.getAbsolutePath() ); + xmlOutput.output(doc, outputFile); + outputFile.close(); + System.out.println("File Saved!"); + } catch (IOException io) { + System.out.println(io.getMessage()); + } + + } + + //----------------------------------------------- Zeigerbewegungen -------------------------------------------------- + /** + * liefert ein XML-Objekt, das auf den Vaterknoten des aktuellen Elements zeigt. + * @return Vater des aktuellen Objekts. + */ + public XML getParent() { + if(current != null) { + Element parent = current.getParentElement(); + if (parent == null) { + return null; + } else { + return new XML(doc, parent); + } + } + return null; + } + + /** + * Überprüft, ob das Element irgendwelche Kinder hat oder nicht, und gibt das Ergebnis als boolean zurück. + * @return true, wenn Kinder vorhanden sind, sonst false + */ + public boolean hasChildren() { + if (current == null) { + return doc.hasRootElement(); + } else { + return current.getChildren().size()>0; + } + } + + /** + * Ermittelt die Namen aller Kinder des Elements und gibt die Namen als ein Array von Strings zurück. + * Dies ist dasselbe wie das Durchlaufen und Aufrufen von getName() auf jedem untergeordneten Element einzeln. + * @return Liste aller Namen der Kinder + */ + public String[] listChildren() { + if (current == null) { + if(doc.hasRootElement()) { + String[] names = new String[0]; + names[0] = doc.getRootElement().getName(); + return names; + } else { + return null; + } + } else { + List ch_element = current.getChildren(); + String[] names = new String[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + names[i] = ch_element.get(i).getName(); + } + return names; + } + } + + /** + * Liefert alle Kinder des Elements als Array von XML-Objekten. + * @return Array der Kinder als XML-Objekte + */ + public XML[] getChildren() { + if (current == null) { + if(doc.hasRootElement()) { + XML[] ch_xml = new XML[1]; + ch_xml[0] = new XML(doc, doc.getRootElement()); + return ch_xml; + } else { + return null; + } + } else { + List ch_element = current.getChildren(); + XML[] ch_xml = new XML[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + ch_xml[i] = new XML(doc, ch_element.get(i)); + } + return ch_xml; + } + } + + /** + * Liefert bestimmte Kinder des Elements als Array von XML-Objekten. + * Die Methode gibt dabei alle Kinder zurück, die dem angegebenen Namen entsprechen. + * @param name Name der gesuchten Kind-Objekte + * @return Array der Kinder als XML-Objekte + */ + public XML[] getChildren(String name) { + if (current == null) { + if(doc.hasRootElement()) { + XML[] ch_xml = new XML[1]; + ch_xml[0] = new XML(doc, doc.getRootElement()); + if(doc.getRootElement().getName().equals(name)){ + return ch_xml; + } else { + return null; + } + } else { + return null; + } + } else { + List ch_element = current.getChildren(name); + XML[] ch_xml = new XML[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + ch_xml[i] = new XML(doc, ch_element.get(i)); + } + return ch_xml; + } + } + + /** + * Liefert das erste Kind des Elements mit einem bestimmten Namen. + * Die Methode gibt das erste Kind zurück, das dem angegebenen Namen entsprechen. + * @param name Name des gesuchten Kind-Objektes + * @return Kind als XML-Objekt + */ + + public XML getChild(String name) { + if (current == null) { + Element e = doc.getRootElement(); + if (e.getName().equals(name)) { + return new XML(doc, e); + } else { + return null; + } + } else { + String[] names = name.split("/"); + Element e = current; + int i = 0; + while(i < names.length) { + e = e.getChild(names[i]); + if (e==null) return null; + i++; + } + return new XML(doc, e); + } + } + + /** + * Liefert das i. Kind des Elements. + * Die Methode gibt das i. Kind des aktuellen Elements zurück. + * @param i Nummer des Kindes + * @return Kind als XML-Objekt + */ + public XML getChild(int i) { + if (current == null) { + return new XML(doc, doc.getRootElement()); + } else { + List ch_element = current.getChildren(); + if (i>=ch_element.size()) return null; + return new XML(doc, ch_element.get(i)); + } + } + + //--------------------------------------------------- Methoden für das aktuelle Element ------------------------------------------------- + /** + * Frage den Namen des aktuellen Elements ab + * @return Namen des Elements + */ + public String getName() { + if (current==null) return ""; + return current.getName(); + } + + /** + * Setze den Namen des aktuellen Elements. + * @param name Neuer Name des Elements + */ + public void setName(String name) { + if (current==null) return; + current.setName(name); + } + + /** + * liefert die Anzahl der Attribute eines Elements. + * @return Anzahl des Attribute + */ + public int getAttributeCount() { + if (current == null) return 0; + return current.getAttributes().size(); + } + + /** + * liefert zurück, ob das aktuelle Element Attribute hat . + * @return true, wenn es Attribute gibt + */ + public boolean hasAttribute() { + if (current == null) return false; + return current.getAttributes().size()>0; + } + + /** + * Ruft alle Attribute des angegebenen Elements ab und gibt sie als Array von Strings zurück. + * @return Liste der Attributnamen + */ + public String[] listAttributes() { + if (current == null) return null; + List attr = current.getAttributes(); + String[] names = new String[attr.size()]; + for(int i=0; i < attr.size() ; i++) { + names[i] = attr.get(i).getName(); + } + return names; + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs + */ + public String getString(String attribute) { + if (current==null) return ""; + return current.getAttributeValue(attribute); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs + */ + public String getString(String attribute, String defaultValue) { + if (current==null) return defaultValue; + return current.getAttributeValue(attribute,defaultValue); + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param text neuer Wert des Attributs + */ + public void setString(String attribute, String text) { + if (current==null) return; + current.setAttribute(attribute, text); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Integer-Zahl + */ + public int getInt(String attribute) { + if (current==null) return 0; + try{ + int i = Integer.parseInt(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als Integer-Zahl + */ + public int getInt(String attribute, int defaultValue) { + if (current==null) return defaultValue; + try{ + int i = Integer.parseInt(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setInt(String attribute, int value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Float-Zahl + */ + public float getFloat(String attribute) { + if (current==null) return 0; + try{ + float i = Float.parseFloat(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als Float-Zahl + */ + public float getFloat(String attribute, float defaultValue) { + if (current==null) return defaultValue; + try{ + float i = Float.parseFloat(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setFloat(String attribute, float value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Double-Zahl + */ + public double getDouble(String attribute) { + if (current==null) return 0; + try{ + double i = Double.parseDouble(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + +/** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als double-Zahl + */ + public double getDouble(String attribute, double defaultValue) { + if (current==null) return defaultValue; + try{ + double i = Double.parseDouble(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setDouble(String attribute, double value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt den Inhalt/Text des aktuellen Elements ab + * @return Inhalt des Elements + */ + public String getContent() { + if ( current==null) return ""; + + return current.getText(); + } + + /** + * Fragt den Inhalt/Text des aktuellen Elements ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardtext + * @return Inhalt des Elements + */ + public String getContent(String defaultValue) { + if ( current==null) return defaultValue; + String t = current.getText(); + if(t.equals("")) t = defaultValue; + return t; + } + + /** + * Setzt den Inhalt/Text des aktuellen Elements + * @param text Neuer Inhalt des Elements + */ + public void setContent(String text) { + if ( current==null) return; + current.setText(text); + } + + + /** + * Fragt den Inhalt des aktuellen Elements als Integerzahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ public int getIntContent(int defaultValue) { + if ( current==null) return defaultValue; + try{ + int i = Integer.parseInt(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Integerzahl ab + * @return Inhalt des Elements + */ + public int getIntContent() { + if ( current==null) return 0; + try{ + int i = Integer.parseInt(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setIntContent(int value) { + if ( current==null) return; + current.setText(""+value); + } + + + /** + * Fragt den Inhalt des aktuellen Elements als Floatzahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ + public float getFloatContent(float defaultValue) { + if ( current==null) return defaultValue; + try{ + float i = Float.parseFloat(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Floatzahl ab + * @return Inhalt des Elements + */ + public float getFloatContent() { + if ( current==null) return 0; + try{ + float i = Float.parseFloat(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setFloatContent(float value) { + if ( current==null) return; + current.setText(""+value); + } + +/** + * Fragt den Inhalt des aktuellen Elements als Doublezahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ + public double getDoubleContent(double defaultValue) { + if ( current==null) return defaultValue; + try{ + double i = Double.parseDouble(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Doublezahl ab + * @return Inhalt des Elements + */ + public double getDoubleContent() { + if ( current==null) return 0; + try{ + double i = Double.parseDouble(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setDoubleContent(double value) { + if ( current==null) return; + current.setText(""+value); + } + + + // ----------------------------------------------- XML-Struktur aufbauen ------------------------------------------------ + /** Erzeuge neues Element nach der aktuellen Position und setze dieses als aktuelles Element + * @param name Name des neuen Elements + * @return neues Element als XML-Objekt + */ + public XML addChild(String name) { + Element e = new Element(name); + if(current == null){ // man ist auf Root-Ebene + doc.setRootElement(e); + + } + else { + current.addContent(e); + } // end of if-else + return new XML(doc, e); + } + + /** + * liefert das aktuelle Element als jdom-Element-Objekt + * @return aktuelles Element + */ + private Element getCurrent() { + return current; + } + + /** + * löscht ein Kind des aktuellen Knotens. + * Ist kid kein Kind des aktuellen Elements passiert gar nichts. + * @param kid XML-Objekt des Kindes + */ + public void removeChild(XML kid) { + if (current == null) return; + Element e = kid.getCurrent(); + int index = current.indexOf(e); + if(index >= 0) { current.removeContent(e);} + } + +} diff --git a/03_vorlagen_tauschordner/04_blueJ/imp/package.bluej b/03_vorlagen_tauschordner/04_blueJ/imp/package.bluej new file mode 100644 index 0000000..a477889 --- /dev/null +++ b/03_vorlagen_tauschordner/04_blueJ/imp/package.bluej @@ -0,0 +1,64 @@ +#BlueJ package file +dependency1.from=Table +dependency1.to=TableRow +dependency1.type=UsesDependency +dependency2.from=Picture +dependency2.to=PictureViewer +dependency2.type=UsesDependency +dependency3.from=PictureViewer +dependency3.to=Picture +dependency3.type=UsesDependency +objectbench.height=89 +objectbench.width=565 +package.divider.horizontal=0.6 +package.divider.vertical=0.808 +package.editor.height=397 +package.editor.width=475 +package.editor.x=77 +package.editor.y=36 +package.frame.height=600 +package.frame.width=605 +package.numDependencies=3 +package.numTargets=5 +package.showExtends=true +package.showUses=true +readme.height=58 +readme.name=@README +readme.width=47 +readme.x=10 +readme.y=10 +target1.height=50 +target1.name=PictureViewer +target1.showInterface=false +target1.type=ClassTarget +target1.width=110 +target1.x=280 +target1.y=310 +target2.height=50 +target2.name=Table +target2.showInterface=false +target2.type=ClassTarget +target2.width=80 +target2.x=120 +target2.y=110 +target3.height=50 +target3.name=Picture +target3.showInterface=false +target3.type=ClassTarget +target3.width=80 +target3.x=180 +target3.y=250 +target4.height=50 +target4.name=XML +target4.showInterface=false +target4.type=ClassTarget +target4.width=80 +target4.x=220 +target4.y=130 +target5.height=50 +target5.name=TableRow +target5.showInterface=false +target5.type=ClassTarget +target5.width=90 +target5.x=220 +target5.y=60 diff --git a/03_vorlagen_tauschordner/04_blueJ/package.bluej b/03_vorlagen_tauschordner/04_blueJ/package.bluej new file mode 100644 index 0000000..ceee96e --- /dev/null +++ b/03_vorlagen_tauschordner/04_blueJ/package.bluej @@ -0,0 +1,45 @@ +#BlueJ package file +editor.fx.0.height=739 +editor.fx.0.width=816 +editor.fx.0.x=1011 +editor.fx.0.y=156 +objectbench.height=88 +objectbench.width=590 +package.divider.horizontal=0.6 +package.divider.vertical=0.81 +package.editor.height=398 +package.editor.width=500 +package.editor.x=644 +package.editor.y=145 +package.frame.height=600 +package.frame.width=630 +package.numDependencies=0 +package.numTargets=3 +package.showExtends=true +package.showUses=true +project.charset=UTF-8 +readme.height=58 +readme.name=@README +readme.width=47 +readme.x=10 +readme.y=10 +target1.height=50 +target1.name=Kaffeehaus +target1.showInterface=false +target1.type=ClassTarget +target1.width=90 +target1.x=190 +target1.y=110 +target2.height=50 +target2.name=Balkendiagramm +target2.showInterface=false +target2.type=ClassTarget +target2.width=130 +target2.x=30 +target2.y=110 +target3.height=62 +target3.name=imp +target3.type=PackageTarget +target3.width=80 +target3.x=80 +target3.y=10 diff --git a/03_vorlagen_tauschordner/04_blueJ/punkte.csv b/03_vorlagen_tauschordner/04_blueJ/punkte.csv new file mode 100644 index 0000000..d6e8dfd --- /dev/null +++ b/03_vorlagen_tauschordner/04_blueJ/punkte.csv @@ -0,0 +1,6 @@ +"Name","Punkte" +Niko,216 +Klaus,591 +Anna,857 +Lena,180 +Winfried,168 diff --git a/03_vorlagen_tauschordner/04_blueJ/testfall1.csv b/03_vorlagen_tauschordner/04_blueJ/testfall1.csv new file mode 100644 index 0000000..92c538f --- /dev/null +++ b/03_vorlagen_tauschordner/04_blueJ/testfall1.csv @@ -0,0 +1,20 @@ +"Name","Punkte" +Spieler1,0 +Spieler1,6 +Spieler2,19 +Spieler6,1 +Spieler4,45 +Spieler3,23 +Spieler3,12 +Spieler2,44 +Spieler1,72 +Spieler5,12 +Spieler6,4 +Spieler7,2 +Spieler4,98 +Spieler3,21 +Spieler3,12 +Spieler2,32 +Spieler1,12 +Spieler5,44 +Spieler3,12 diff --git a/03_vorlagen_tauschordner/04_blueJ/testfall2.csv b/03_vorlagen_tauschordner/04_blueJ/testfall2.csv new file mode 100644 index 0000000..091c003 --- /dev/null +++ b/03_vorlagen_tauschordner/04_blueJ/testfall2.csv @@ -0,0 +1,20 @@ +"Name","Punkte" +Spieler1,-5 +Spieler1,-6 +Spieler2,-19 +Spieler6,-1 +Spieler4,-45 +Spieler3,-23 +Spieler3,-12 +Spieler2,-44 +Spieler1,-72 +Spieler5,-12 +Spieler6,-4 +Spieler7,-2 +Spieler4,-98 +Spieler3,-21 +Spieler3,-12 +Spieler2,-32 +Spieler1,-12 +Spieler5,-44 +Spieler3,-12 diff --git a/03_vorlagen_tauschordner/04_blueJ/testfall3.csv b/03_vorlagen_tauschordner/04_blueJ/testfall3.csv new file mode 100644 index 0000000..3bc26b2 --- /dev/null +++ b/03_vorlagen_tauschordner/04_blueJ/testfall3.csv @@ -0,0 +1,2 @@ +"Name","Punkte" +Spieler1,45 diff --git a/03_vorlagen_tauschordner/04_blueJ/testfall4.csv b/03_vorlagen_tauschordner/04_blueJ/testfall4.csv new file mode 100644 index 0000000..e74e6d5 --- /dev/null +++ b/03_vorlagen_tauschordner/04_blueJ/testfall4.csv @@ -0,0 +1 @@ +"Name","Punkte" diff --git a/04_loesungen/01_processing/alg03b_figuren_loesung/figuren/figuren.pde b/04_loesungen/01_processing/alg03b_figuren_loesung/figuren/figuren.pde new file mode 100644 index 0000000..379f6f1 --- /dev/null +++ b/04_loesungen/01_processing/alg03b_figuren_loesung/figuren/figuren.pde @@ -0,0 +1,38 @@ + +void zeichneBildC() { + // Zeichne dir zunächst eine Skizze auf ein Blatt Papier und überlege dir, welche + // Werte du den Methoden rect(x,y,b,h) und ellipse(x,y,b,h) übergeben musst, + // dass Bild C gezeichnet wird + + // ***** hier kommen deine Anweisungen hin ************ + rect(10, 10, 100, 100); + + ellipse(60, 60, 80, 80); + ellipse(60, 60, 60, 60); + ellipse(60, 60, 40, 40); + + ellipse(60, 170, 100, 100); + + rect(30, 140, 60, 60); + rect(40, 150, 40, 40); + rect(50, 160, 20, 20); + + // ***** Ende der eigenen Anweisungen ********** +} + +void zeichneBildA() { + + ellipse(260, 60, 100, 100); + + rect(210, 110, 100, 100); + + triangle(210, 300, 310, 300, 260, 210); + +} + + +void setup() { + size(500, 350); // Festlegen der Fenstergröße + zeichneBildC(); // Aufruf deiner Methode + zeichneBildA(); +} diff --git a/04_loesungen/01_processing/alg04_figurC_mitSchleife_loesung/figurC_mitSchleife/figurC_mitSchleife.pde b/04_loesungen/01_processing/alg04_figurC_mitSchleife_loesung/figurC_mitSchleife/figurC_mitSchleife.pde new file mode 100644 index 0000000..7c96ed2 --- /dev/null +++ b/04_loesungen/01_processing/alg04_figurC_mitSchleife_loesung/figurC_mitSchleife/figurC_mitSchleife.pde @@ -0,0 +1,16 @@ +void zeichneBildC() { + rect(10, 10, 100, 100); + for (int i=0; i<=2; i++) { + ellipse(60, 60, 80-i*20, 80-i*20); + } + + ellipse(60, 170, 100, 100); + for (int i=0; i<=2; i++) { + rect(30+i*10, 140+i*10, 60-i*20, 60-i*20); + } +} + +void setup() { + size(120, 250); + zeichneBildC(); +} diff --git a/04_loesungen/01_processing/alg04_uebungen_loesung/zehn_quadrate/zehn_quadrate.pde b/04_loesungen/01_processing/alg04_uebungen_loesung/zehn_quadrate/zehn_quadrate.pde new file mode 100644 index 0000000..1027ef7 --- /dev/null +++ b/04_loesungen/01_processing/alg04_uebungen_loesung/zehn_quadrate/zehn_quadrate.pde @@ -0,0 +1,17 @@ +void zeichneQuadrate() { + for (int i=0; i<=9; i++) { + rect(30+i*30, 50, 30, 30); + } +} + +void zeichneKreise() { + for (int i=0; i<=19; i++) { + ellipse(200, 200, 200-i*10, 200-i*10); + } +} + +void setup() { + size(400, 400); + zeichneQuadrate(); + zeichneKreise(); +} diff --git a/04_loesungen/01_processing/alg04_uebungen_loesung/zehn_quadrate_differenziert/zehn_quadrate_differenziert.pde b/04_loesungen/01_processing/alg04_uebungen_loesung/zehn_quadrate_differenziert/zehn_quadrate_differenziert.pde new file mode 100644 index 0000000..1027ef7 --- /dev/null +++ b/04_loesungen/01_processing/alg04_uebungen_loesung/zehn_quadrate_differenziert/zehn_quadrate_differenziert.pde @@ -0,0 +1,17 @@ +void zeichneQuadrate() { + for (int i=0; i<=9; i++) { + rect(30+i*30, 50, 30, 30); + } +} + +void zeichneKreise() { + for (int i=0; i<=19; i++) { + ellipse(200, 200, 200-i*10, 200-i*10); + } +} + +void setup() { + size(400, 400); + zeichneQuadrate(); + zeichneKreise(); +} diff --git a/04_loesungen/01_processing/alg04_uebungen_loesung/zehn_quadrate_differenziert2/zehn_quadrate_differenziert2.pde b/04_loesungen/01_processing/alg04_uebungen_loesung/zehn_quadrate_differenziert2/zehn_quadrate_differenziert2.pde new file mode 100644 index 0000000..5bd086d --- /dev/null +++ b/04_loesungen/01_processing/alg04_uebungen_loesung/zehn_quadrate_differenziert2/zehn_quadrate_differenziert2.pde @@ -0,0 +1,17 @@ +void zeichneQuadrate(int anz, int s) { // Anzahl der Quadrate und Seitenlänge werden übergeben + for (int i=0; i<=anz-1; i++) { + rect(30+i*s, 50, s, s); + } +} + +void zeichneKreise(int anz, int d) { // Anzahl der Kreise und Abstand werden übergeben + for (int i=0; i<=anz-1; i++) { + ellipse(200, 200, 200-i*d, 200-i*d); + } +} + +void setup() { + size(800, 400); + zeichneQuadrate(20, 10); + zeichneKreise(10, 5); +} diff --git a/04_loesungen/01_processing/alg04_zaehlschleife_puzzle_loesung/puzzle/nummer1/nummer1.pde b/04_loesungen/01_processing/alg04_zaehlschleife_puzzle_loesung/puzzle/nummer1/nummer1.pde new file mode 100644 index 0000000..3f3c197 --- /dev/null +++ b/04_loesungen/01_processing/alg04_zaehlschleife_puzzle_loesung/puzzle/nummer1/nummer1.pde @@ -0,0 +1,10 @@ +void setup() { + + size(600, 300); + + // Nummer 1 + + for (int i=0; i<10; i++) { + ellipse(50+i*50, 50, 50, 50); + } +} diff --git a/04_loesungen/01_processing/alg04_zaehlschleife_puzzle_loesung/puzzle/nummer2/nummer2.pde b/04_loesungen/01_processing/alg04_zaehlschleife_puzzle_loesung/puzzle/nummer2/nummer2.pde new file mode 100644 index 0000000..9125767 --- /dev/null +++ b/04_loesungen/01_processing/alg04_zaehlschleife_puzzle_loesung/puzzle/nummer2/nummer2.pde @@ -0,0 +1,10 @@ +void setup() { + + size(600, 400); + + // Nummer 2 + + for (int i=0; i<10; i++) { + ellipse(50+i*50, 50+i*25, 50, 50); + } +} diff --git a/04_loesungen/01_processing/alg04_zaehlschleife_puzzle_loesung/puzzle/nummer3/nummer3.pde b/04_loesungen/01_processing/alg04_zaehlschleife_puzzle_loesung/puzzle/nummer3/nummer3.pde new file mode 100644 index 0000000..495a32a --- /dev/null +++ b/04_loesungen/01_processing/alg04_zaehlschleife_puzzle_loesung/puzzle/nummer3/nummer3.pde @@ -0,0 +1,10 @@ +void setup() { + + size(600, 400); + + // Nummer 3 + + for (int i=0; i<10; i++) { + ellipse(100, 100, 110-i*10, 110-i*10); + } +} diff --git a/04_loesungen/01_processing/alg04_zaehlschleife_puzzle_loesung/puzzle/nummer4/nummer4.pde b/04_loesungen/01_processing/alg04_zaehlschleife_puzzle_loesung/puzzle/nummer4/nummer4.pde new file mode 100644 index 0000000..dee7a40 --- /dev/null +++ b/04_loesungen/01_processing/alg04_zaehlschleife_puzzle_loesung/puzzle/nummer4/nummer4.pde @@ -0,0 +1,10 @@ +void setup() { + + size(600, 400); + + // Nummer 4 + + for (int i=0; i<20; i++) { + ellipse(100+i*10, 100+i*10, 200-i*10, 200-i*10); + } +} diff --git a/04_loesungen/01_processing/alg04_zaehlschleife_puzzle_loesung/puzzle/nummer5/nummer5.pde b/04_loesungen/01_processing/alg04_zaehlschleife_puzzle_loesung/puzzle/nummer5/nummer5.pde new file mode 100644 index 0000000..912d7be --- /dev/null +++ b/04_loesungen/01_processing/alg04_zaehlschleife_puzzle_loesung/puzzle/nummer5/nummer5.pde @@ -0,0 +1,10 @@ +void setup() { + + size(600, 400); + + // Nummer 5 + + for (int i=0; i<5; i++) { + rect(10+i*60, 10, 50, 40); + } +} diff --git a/04_loesungen/01_processing/alg04_zaehlschleife_puzzle_loesung/puzzle/nummer6/nummer6.pde b/04_loesungen/01_processing/alg04_zaehlschleife_puzzle_loesung/puzzle/nummer6/nummer6.pde new file mode 100644 index 0000000..46d675c --- /dev/null +++ b/04_loesungen/01_processing/alg04_zaehlschleife_puzzle_loesung/puzzle/nummer6/nummer6.pde @@ -0,0 +1,10 @@ +void setup() { + + size(600, 400); + + // Nummer 6 + + for (int i=0; i<5; i++) { + rect(10+i*60, 10+i*40, 50, 40); + } +} diff --git a/04_loesungen/01_processing/alg04_zaehlschleife_puzzle_loesung/puzzle/nummer7/nummer7.pde b/04_loesungen/01_processing/alg04_zaehlschleife_puzzle_loesung/puzzle/nummer7/nummer7.pde new file mode 100644 index 0000000..846e78d --- /dev/null +++ b/04_loesungen/01_processing/alg04_zaehlschleife_puzzle_loesung/puzzle/nummer7/nummer7.pde @@ -0,0 +1,10 @@ +void setup() { + + size(600, 400); + + // Nummer 7 + + for (int i=0; i<10; i++) { + rect(10, 10, 100-i*10, 100-i*10); + } +} diff --git a/04_loesungen/01_processing/alg04_zaehlschleife_puzzle_loesung/puzzle/puzzle.pde b/04_loesungen/01_processing/alg04_zaehlschleife_puzzle_loesung/puzzle/puzzle.pde new file mode 100644 index 0000000..01f8265 --- /dev/null +++ b/04_loesungen/01_processing/alg04_zaehlschleife_puzzle_loesung/puzzle/puzzle.pde @@ -0,0 +1,40 @@ +void setup(){ + + size(600,400); + + // Nummer 1 + for (int i=0; i<10; i++){ + ellipse(50+i*50,100,50,50); + } + + // Nummer 2 + for (int i=0; i<10; i++) { + ellipse(50+i*50, 50+i*25, 50, 50); + } + + // Nummer 3 + for (int i=0; i<10; i++) { + ellipse(100, 100, 110-i*10, 110-i*10); + } + + // Nummer 4 + for (int i=0; i<20; i++) { + ellipse(100+i*10, 100+i*10, 200-i*10, 200-i*10); + } + + // Nummer 5 + for (int i=0; i<5; i++) { + rect(10+i*60, 10, 50, 40); + } + + // Nummer 6 + for (int i=0; i<5; i++) { + rect(10+i*60, 10+i*40, 50, 40); + } + + // Nummer 7 + for (int i=0; i<10; i++) { + rect(10, 10, 100-i*10, 100-i*10); + } + +} diff --git a/04_loesungen/01_processing/alg04_zaehlschleife_puzzle_loesung/puzzle_alle/puzzle_alle.pde b/04_loesungen/01_processing/alg04_zaehlschleife_puzzle_loesung/puzzle_alle/puzzle_alle.pde new file mode 100644 index 0000000..c06daa6 --- /dev/null +++ b/04_loesungen/01_processing/alg04_zaehlschleife_puzzle_loesung/puzzle_alle/puzzle_alle.pde @@ -0,0 +1,47 @@ +void setup(){ + + size(1000,700); + + // Nummer 1 + + for (int i=0; i<10; i++){ + ellipse(50+i*50,100,50,50); + } + + // Nummer 2 + + for (int i=0; i<10; i++){ + ellipse(50+i*50,200+i*25,50,50); + } + + // Nummer 3 + + for (int i=0; i<10; i++){ + ellipse(200,400,110-i*10,110-i*10); + } + + // Nummer 4 + + for (int i=0; i<20; i++){ + ellipse(700+i*10,300+i*10,200-i*10,200-i*10); + } + + // Nummer 5 + + for (int i=0; i<5; i++){ + rect(10+i*60,500,50,40); + } + + // Nummer 6 + + for (int i=0; i<5; i++){ + rect(10+i*60, 500+i*40, 50,40); + } + + // Nummer 7 + + for (int i=0; i<10; i++){ + rect(500,500,100-i*10, 100-i*10); + } + +} diff --git a/04_loesungen/01_processing/alg05_kaffeehaus_loesungen/kaffeehaus/kaffeehaus.pde b/04_loesungen/01_processing/alg05_kaffeehaus_loesungen/kaffeehaus/kaffeehaus.pde new file mode 100644 index 0000000..69ec38f --- /dev/null +++ b/04_loesungen/01_processing/alg05_kaffeehaus_loesungen/kaffeehaus/kaffeehaus.pde @@ -0,0 +1,50 @@ +// globale Variablen +int s = 40; // Seitenlänge der Quadrate bzw. Abstand der Parallelen + +int[] abstaende = {10, 20, 30, 20, 10, 20, 30, 20, 10}; // Abstände des 1. Quadrates nach links + +void parallelen(){ // zeichnet 10 graue Parallelen + stroke(125); // Linienfarbe Graustufe + for (int i=0; i<=9; i++){ + line(0,5+i*s, 640, 5+i*s); + } +} + +void zeichneAlleQuadrate(){ + fill(0); // Füllfarbe schwarz + for (int j=0; j<=8; j++){ + for (int i=0; i<=7; i++){ + // rect(10+2*s*i,5+j*s,s,s); // Abstand bei allen Reihen gleich: d=10 + rect(abstaende[j]+2*s*i, 5+j*s, s, s); // Abstand wird jeweils aus dem Feld gelesen + } + } +} + +void setup(){ + size(640, 400); + background(255); // Hintergrund weiß + parallelen(); // Aufruf der Methode zum Zeichnen der Parallelen + zeichneAlleQuadrate(); + //zeichneQuadrate(); // Aufruf der Methode zum Zeichnen der Quadrate +} + + + + +void zeichneQuadrate(){ + fill(0); // Füllfarbe schwarz + // fülle die erste Reihe mit Quadraten + for (int i=0; i<=7; i++){ + rect(10+2*s*i,5,s,s); + } + + // fülle die zweite Reihe mit Quadraten + for (int i=0; i<=7; i++){ + rect(20+2*s*i,5+s,s,s); + } + + // fülle die dritte Reihe mit Quadraten + for (int i=0; i<=7; i++){ + rect(30+2*s*i,5+2*s,s,s); + } +} diff --git a/04_loesungen/01_processing/alg06_uebungen_loesungen/hermann_gitter_1/hermann_gitter_1.pde b/04_loesungen/01_processing/alg06_uebungen_loesungen/hermann_gitter_1/hermann_gitter_1.pde new file mode 100644 index 0000000..6e80e58 --- /dev/null +++ b/04_loesungen/01_processing/alg06_uebungen_loesungen/hermann_gitter_1/hermann_gitter_1.pde @@ -0,0 +1,20 @@ +// globale Variablen +int s = 30; // Seitenlaenge Quadrat +int a = 10; // Abstand Quadrate + +// Methode, die optische Täuschung zeichnet +void quadrate() { + fill(0); // Füllfarbe schwarz + for (int j=0; j<=6; j++) { + for (int i=0; i<=6; i++) { + rect(30+i*(s+a), 30+j*(s+a), s, s); + } + } +} + +// setup-Methode +void setup() { + size(500, 500); + background(255); // Hintergrund weiß + quadrate(); +} diff --git a/04_loesungen/01_processing/alg06_uebungen_loesungen/hermann_gitter_2/hermann_gitter_2.pde b/04_loesungen/01_processing/alg06_uebungen_loesungen/hermann_gitter_2/hermann_gitter_2.pde new file mode 100644 index 0000000..f981875 --- /dev/null +++ b/04_loesungen/01_processing/alg06_uebungen_loesungen/hermann_gitter_2/hermann_gitter_2.pde @@ -0,0 +1,33 @@ +// globale Variablen +int s = 50; // Seitenlaenge Quadrat +int a = 15; // Abstand Quadrate +int start = 30; // Abstand zum Rand + +// Methode, die schwarze Quadrate zeichnet +void quadrate() { + fill(0); + for (int i=0; i<=6; i++) { + for (int j=0; j<=6; j++) { + rect(start+j*(s+a), start+i*(s+a), s, s); + } + } +} + +// Methode, die weiße Kreise zeichnet +void kreise() { + fill(255); + noStroke(); // keine Umrandung + for (int j=0; j<6; j++) { + for (int i=0; i<6; i++) { + ellipse(start+s+a/2+(s+a)*i, start+s+a/2+(s+a)*j, a+2, a+2); + } + } +} + +// setup-Methode +void setup() { + size(500, 500); + background(66, 165, 250); // Hintergrundfarbe hellblau + quadrate(); + kreise(); +} diff --git a/04_loesungen/01_processing/alg07a_wellen1_loesungen/wellen1/wellen1.pde b/04_loesungen/01_processing/alg07a_wellen1_loesungen/wellen1/wellen1.pde new file mode 100644 index 0000000..04131e0 --- /dev/null +++ b/04_loesungen/01_processing/alg07a_wellen1_loesungen/wellen1/wellen1.pde @@ -0,0 +1,83 @@ +// globale Variable +int s = 40; // Seitenlänge der Quadrate + +void zeichneQuadrat(int x, int y, int farbe, boolean links) { + fill(farbe); // der übergebene Wert der Variable farbe wird als Füllfarbe übergeben + rect(x, y, s, s); // ein Quadrat mit Seitenlänge s wird an der Position (x|y) gezeichnet + + // Farbauswahl Kreise + if (farbe == 255) { // Quadrat ist weiß + fill(0); // Füllfarbe schwarz wird gewählt + } else { // Quadrat ist nicht weiß (schwarz) + fill(255); // Füllfarbe weiß wird gewählt + } + + // Zeichnen der beiden kleinen Kreise + ellipseMode(CORNERS); + noStroke(); + int d = s/4; + if (links == true) { + ellipse(x, y, x+d, y+d); // links oben + ellipse(x, y + 3*d, x+d, y+s); // links unten + } else { + ellipse(x + 3*d, y, x+s, y+d); // rechts oben + ellipse(x + 3*d, y + 3*d, x+ s, y+s); // rechts unten + } +} + +void alleQuadrate() { + noStroke(); + // erste Reihe + int aktuellefarbe = 255; // Farbe des ersten Quadrates ist weiß + for (int i=0; i<=7; i++) { + zeichneQuadrat(i*s, 0, aktuellefarbe, true); + // Farbwechsel für nächstes Quadrat + if (aktuellefarbe == 255) { + aktuellefarbe = 0; + } else { + aktuellefarbe = 255; + } + } + // zweite Reihe + aktuellefarbe = 0; // Farbe des ersten Quadrates ist schwarz + for (int i=0; i<=7; i++) { + zeichneQuadrat(i*s, s, aktuellefarbe, false); + // Farbwechsel für nächstes Quadrat + if (aktuellefarbe == 255) { + aktuellefarbe = 0; + } else { + aktuellefarbe = 255; + } + } + // dritte Reihe + aktuellefarbe = 255; // Farbe des ersten Quadrates ist weiß + for (int i=0; i<=7; i++) { + zeichneQuadrat(i*s, 2*s, aktuellefarbe, true); + // Farbwechsel für nächstes Quadrat + if (aktuellefarbe == 255) { + aktuellefarbe = 0; + } else { + aktuellefarbe = 255; + } + } + // vierte Reihe + aktuellefarbe = 0; // Farbe des ersten Quadrates ist schwarz + for (int i=0; i<=7; i++) { + zeichneQuadrat(i*s, 3*s, aktuellefarbe, false); + // Farbwechsel für nächstes Quadrat + if (aktuellefarbe == 255) { + aktuellefarbe = 0; + } else { + aktuellefarbe = 255; + } + } +} + +void setup() { + size(600, 400); + // Test Zeichnen zweier Quadrate + // zeichneQuadrat(100, 100, 0, true); + // zeichneQuadrat(100, 200, 255, false); + // Zeichnen der optischen Täuschung + alleQuadrate(); +} diff --git a/04_loesungen/01_processing/alg07a_wellen1_loesungen/wellen1_ab_aufgabe20/wellen1_ab_aufgabe20.pde b/04_loesungen/01_processing/alg07a_wellen1_loesungen/wellen1_ab_aufgabe20/wellen1_ab_aufgabe20.pde new file mode 100644 index 0000000..1caf4eb --- /dev/null +++ b/04_loesungen/01_processing/alg07a_wellen1_loesungen/wellen1_ab_aufgabe20/wellen1_ab_aufgabe20.pde @@ -0,0 +1,85 @@ +// globale Variable +int s = 40; // Seitenlänge der Quadrate +int a = 2; // Abstand Kreise - Quadratrand +int d = 20; // Abstand der optischen Täuschung zum Rand + +int farbwechsel (int farbe) { + if (farbe == 255) { // Farbe ist weiß + farbe = 0; + } else { // Farbe ist nicht weiß + farbe = 255; + } + return farbe; +} + + + +void zeichneQuadrat(int x, int y, int farbe, boolean links) { + fill(farbe); // der übergebene Wert der Variable farbe wird als Füllfarbe übergeben + rect(x, y, s, s); // ein Quadrat mit Seitenlänge s wird an der Position (x|y) gezeichnet + + // Farbauswahl Kreise + if (farbe == 255) { // Quadrat ist weiß + fill(0); // Füllfarbe schwarz wird gewählt + } else { // Quadrat ist nicht weiß (schwarz) + fill(255); // Füllfarbe weiß wird gewählt + } + + // Zeichnen der beiden kleinen Kreise + ellipseMode(CORNERS); + noStroke(); + int d = s/4; + if (links == true) { + ellipse(x+a, y+a, x+d+a, y+d+a); // links oben + ellipse(x+a, y + 3*d-a, x+d+a, y+s-a); // links unten + } else { + ellipse(x + 3*d-a, y+a, x+s-a, y+d+a); // rechts oben + ellipse(x + 3*d-a, y + 3*d-a, x+ s-a, y+s-a); // rechts unten + } +} + +void alleQuadrate() { + noStroke(); + int aktuellefarbe = 255; // Farbe des ersten Quadrates ist weiß + boolean pos_aktuell = true; // Kreise sind zunächst links + for (int j=0; j<=3; j++) { + for (int i=0; i<=7; i++) { + zeichneQuadrat(d + i*s, d + j*s, aktuellefarbe, pos_aktuell); + // Farbwechsel für nächstes Quadrat + if (aktuellefarbe == 255) { + aktuellefarbe = 0; + } else { + aktuellefarbe = 255; + } + } // end Zeichnen einer Reihe + // Wechsel Startfarbe + if (aktuellefarbe == 255) { + aktuellefarbe = 0; + } else { + aktuellefarbe = 255; + } + // Wechsel Position der Kreise + if (pos_aktuell == true) { + pos_aktuell = false; + } else { + pos_aktuell = true; + } + } + + //zeichne die drei Linien zwischen die Quadrate + for (int i=0; i<=2; i++) { + stroke(8, 250, 78); // Linienfarbe hellgrün + strokeWeight(2); + line(d, d + s + s*i, d + 8*s, d + s + s*i); + } +} + +void setup() { + size(600, 400); + background(#FAA317); + // Test Zeichnen zweier Quadrate + // zeichneQuadrat(100, 100, 0, true); + // zeichneQuadrat(100, 200, 255, false); + // Zeichnen der optischen Täuschung + alleQuadrate(); +} diff --git a/04_loesungen/01_processing/alg07a_wellen1_loesungen/wellen1_mit_farbwechsel/wellen1_mit_farbwechsel.pde b/04_loesungen/01_processing/alg07a_wellen1_loesungen/wellen1_mit_farbwechsel/wellen1_mit_farbwechsel.pde new file mode 100644 index 0000000..593cede --- /dev/null +++ b/04_loesungen/01_processing/alg07a_wellen1_loesungen/wellen1_mit_farbwechsel/wellen1_mit_farbwechsel.pde @@ -0,0 +1,68 @@ +// globale Variable +int s = 40; // Seitenlänge der Quadrate +int a = 2; // Abstand Kreise - Quadratrand +int d = 20; // Abstand der optischen Täuschung zum Rand + +int farbwechsel (int farbe) { + if (farbe == 255) { // Farbe ist weiß + farbe = 0; + } else { // Farbe ist nicht weiß + farbe = 255; + } + return farbe; +} + +void zeichneQuadrat(int x, int y, int farbe, boolean links) { + fill(farbe); // der übergebene Wert der Variable farbe wird als Füllfarbe übergeben + rect(x, y, s, s); // ein Quadrat mit Seitenlänge s wird an der Position (x|y) gezeichnet + + // Farbauswahl Kreise + fill(farbwechsel(farbe)); + + // Zeichnen der beiden kleinen Kreise + ellipseMode(CORNERS); + noStroke(); + int d = s/4; + if (links == true) { + ellipse(x+a, y+a, x+d+a, y+d+a); // links oben + ellipse(x+a, y + 3*d-a, x+d+a, y+s-a); // links unten + } else { + ellipse(x + 3*d-a, y+a, x+s-a, y+d+a); // rechts oben + ellipse(x + 3*d-a, y + 3*d-a, x+ s-a, y+s-a); // rechts unten + } +} + +void alleQuadrate() { + noStroke(); + int aktuellefarbe = 255; // Farbe des ersten Quadrates ist weiß + boolean pos_aktuell = true; // Kreise sind zunächst links + for (int j=0; j<=3; j++) { + for (int i=0; i<=7; i++) { + zeichneQuadrat(d + i*s, d + j*s, aktuellefarbe, pos_aktuell); + // Farbwechsel für nächstes Quadrat + aktuellefarbe = farbwechsel(aktuellefarbe); + } // end Zeichnen einer Reihe + // Wechsel Startfarbe + aktuellefarbe = farbwechsel(aktuellefarbe); + // Wechsel Position der Kreise + if (pos_aktuell == true) { + pos_aktuell = false; + } else { + pos_aktuell = true; + } + } + + //zeichne die drei Linien zwischen die Quadrate + for (int i=0; i<=2; i++) { + stroke(8, 250, 78); // Linienfarbe hellgrün + strokeWeight(2); + line(d, d + s + s*i, d + 8*s, d + s + s*i); + } +} + +void setup() { + size(600, 400); + background(#FAA317); + // Zeichnen der optischen Täuschung + alleQuadrate(); +} diff --git a/04_loesungen/01_processing/alg07b_wellen_uebungen_loesungen/wellen2_fest/wellen2_fest.pde b/04_loesungen/01_processing/alg07b_wellen_uebungen_loesungen/wellen2_fest/wellen2_fest.pde new file mode 100644 index 0000000..a41252c --- /dev/null +++ b/04_loesungen/01_processing/alg07b_wellen_uebungen_loesungen/wellen2_fest/wellen2_fest.pde @@ -0,0 +1,121 @@ +// globale Variable + +int s=40; // Seitenlaenge Quadrat +int k=10; // Seitenlaenge kleines Quadrat +int d=2; // Abstand kleine Quadrate zum Rand +int f=0; // Farbe: Start mit schwarz +int[][] feld ={{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 1, 5, 2, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 1, 1, 1, 5, 2, 2, 2, 0, 0, 0, 0}, + {0, 0, 0, 1, 1, 1, 1, 5, 2, 2, 2, 2, 0, 0, 0}, + {0, 0, 1, 1, 1, 1, 1, 5, 2, 2, 2, 2, 2, 0, 0}, + {0, 0, 1, 1, 1, 1, 1, 5, 2, 2, 2, 2, 2, 0, 0}, + {0, 1, 1, 1, 1, 1, 1, 5, 2, 2, 2, 2, 2, 2, 0}, + {0, 3, 3, 3, 3, 3, 3, 0, 4, 4, 4, 4, 4, 4, 0}, + {0, 2, 2, 2, 2, 2, 2, 6, 1, 1, 1, 1, 1, 1, 0}, + {0, 0, 2, 2, 2, 2, 2, 6, 1, 1, 1, 1, 1, 0, 0}, + {0, 0, 2, 2, 2, 2, 2, 6, 1, 1, 1, 1, 1, 0, 0}, + {0, 0, 0, 2, 2, 2, 2, 6, 1, 1, 1, 1, 0, 0, 0}, + {0, 0, 0, 0, 2, 2, 2, 6, 1, 1, 1, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 2, 6, 1, 0, 0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} +}; + +// setup-Methode +void setup() { + size(800, 800); + background(#F5E77C); + optischeTaeuschung(); +} + + +void optischeTaeuschung(){ + if(s/3 < k){ + k = s/3; + } + for (int i=0; i<=14; i++) { + for (int j=0; j<=14; j++) { + zeichneQuadrat(10+i*s, 10+j*s, f, feld[i][j]); + f=255-f; + } + } +} + + +void zeichneQuadrat(int posX, int posY, int farbe, int art) { + fill(farbe); + noStroke(); + rect(posX, posY, s, s); + + // Position der kleinen Quadrate festlegen + boolean lo=false; + boolean lu=false; + boolean ro=false; + boolean ru=false; + switch(art) { // geht natürlich auch mit einer normalen Verzweigung + case 0: + lo=false; + lu=false; + ro=false; + ru=false; + break; + case 1: + lo=false; + lu=true; + ro=true; + ru=false; + break; + case 2: + lo=true; + lu=false; + ro=false; + ru=true; + break; + case 3: + lo=false; + lu=true; + ro=false; + ru=true; + break; + case 4: + lo=true; + lu=false; + ro=true; + ru=false; + break; + case 5: + lo=false; + lu=false; + ro=true; + ru=true; + break; + case 6: + lo=true; + lu=true; + ro=false; + ru=false; + break; + } + + // "Farbe" der kleinen Quadrate innen + fill(255-farbe); // Wechsel zwischen weiß und schwarz + + zeichneKleineQuadrate(posX, posY, lo, lu, ro, ru); +} + +void zeichneKleineQuadrate(int X, int Y, boolean lo0, boolean lu0, boolean ro0, boolean ru0) { + noStroke(); + + if (lo0 == true) { + rect(X+d, Y+d, k, k); + } + if (lu0 == true) { + rect(X+d, Y+s-k-d, k, k); + } + if (ro0 == true) { + rect(X+s-k-d, Y+d, k, k); + } + if (ru0 == true) { + rect(X+s-k-d, Y+s-k-d, k, k); + } +} diff --git a/04_loesungen/01_processing/alg07b_wellen_uebungen_loesungen/wellen2_zufall/wellen2_zufall.pde b/04_loesungen/01_processing/alg07b_wellen_uebungen_loesungen/wellen2_zufall/wellen2_zufall.pde new file mode 100644 index 0000000..6410384 --- /dev/null +++ b/04_loesungen/01_processing/alg07b_wellen_uebungen_loesungen/wellen2_zufall/wellen2_zufall.pde @@ -0,0 +1,106 @@ +// globale Variablen + +int s=40; // Seitenlaenge Quadrat +int k=10; // Seitenlaenge kleines Quadrat +int d=2; // Abstand kleine Quadrate zum Rand +int f=0; // Farbe: Start mit schwarz + + +// setup-Methode +void setup() { + size(800, 800); + background(#F5E77C); + optischeTaeuschung(); +} + + +void optischeTaeuschung(){ + if(s/3 < k){ + k = s/3; + } + for (int i=0; i<=14; i++) { + for (int j=0; j<=14; j++) { + zeichneQuadrat(10+i*s, 10+j*s, f, round(random(0,6))); + f=255-f; + } + } +} + + +void zeichneQuadrat(int posX, int posY, int farbe, int art) { + fill(farbe); + noStroke(); + rect(posX, posY, s, s); + + // Position der kleinen Quadrate festlegen + boolean lo=false; + boolean lu=false; + boolean ro=false; + boolean ru=false; + switch(art) { // geht natürlich auch mit einer normalen Verzweigung + case 0: + lo=false; + lu=false; + ro=false; + ru=false; + break; + case 1: + lo=false; + lu=true; + ro=true; + ru=false; + break; + case 2: + lo=true; + lu=false; + ro=false; + ru=true; + break; + case 3: + lo=false; + lu=true; + ro=false; + ru=true; + break; + case 4: + lo=true; + lu=false; + ro=true; + ru=false; + break; + case 5: + lo=false; + lu=false; + ro=true; + ru=true; + break; + case 6: + lo=true; + lu=true; + ro=false; + ru=false; + break; + } + + // "Farbe" der kleinen Quadrate innen + fill(255-farbe); // Wechsel zwischen weiß und schwarz + + zeichneKleineQuadrate(posX, posY, lo, lu, ro, ru); +} + +void zeichneKleineQuadrate(int X, int Y, boolean lo0, boolean lu0, boolean ro0, boolean ru0) { + noStroke(); + + if (lo0 == true) { + rect(X+d, Y+d, k, k); + } + if (lu0 == true) { + rect(X+d, Y+s-k-d, k, k); + } + if (ro0 == true) { + rect(X+s-k-d, Y+d, k, k); + } + if (ru0 == true) { + rect(X+s-k-d, Y+s-k-d, k, k); + } +} diff --git a/04_loesungen/01_processing/alg07b_wellen_uebungen_loesungen/wellen_b1_alle_reihen/wellen_b1_alle_reihen.pde b/04_loesungen/01_processing/alg07b_wellen_uebungen_loesungen/wellen_b1_alle_reihen/wellen_b1_alle_reihen.pde new file mode 100644 index 0000000..894e003 --- /dev/null +++ b/04_loesungen/01_processing/alg07b_wellen_uebungen_loesungen/wellen_b1_alle_reihen/wellen_b1_alle_reihen.pde @@ -0,0 +1,50 @@ +// globale Variable +int s=30; // Seitenlänge der Quadrate +int d=5; // Abstand inneres Quadrat zum Rand +int weiss = 255; +int gruen = #1CAF38; + + +// setup-Methode +void setup() { + size(700, 700); + background(255); // weißer Hintergrund + alleQuadrate(); +} + +void zeichneQuadrat(int x, int y, int rahmenfarbe) { + + fill(rahmenfarbe); // Linienfarbe einstellen + noStroke(); + rect(x, y, s, s); // Zeichnen des hinteren Quadrates + + // Bestimmen der Farbe des inneren Quadrates + if (rahmenfarbe == weiss) { + fill(gruen); + } else { + fill(weiss); + } + + rect(x+d, y+d, s-2*d, s-2*d); // Zeichnen des inneren Quadrates +} + +void alleQuadrate(){ + int farbe = gruen; // Festlegen der ersten Rahmenfarbe + for (int j=0; j<12; j++) { // j zählt die Reihen + + for (int i=0; i<12; i++) { // i zählt die Quadrate in einer Reihe + zeichneQuadrat(30+i*s, 30+j*s, farbe); + if (farbe == gruen) { // du könntest hier wieder eine Methode Farbwechsel schreiben + farbe = weiss; + } else { + farbe = gruen; + } + } + // Wechsel der Farbe des ersten Quadrates für die nächste Reihe + if (farbe == gruen) { // du könntest hier wieder eine Methode Farbwechsel schreiben + farbe = weiss; + } else { + farbe = gruen; + } + } +} diff --git a/04_loesungen/01_processing/alg07b_wellen_uebungen_loesungen/wellen_b1_die_erste_reihe/wellen_b1_die_erste_reihe.pde b/04_loesungen/01_processing/alg07b_wellen_uebungen_loesungen/wellen_b1_die_erste_reihe/wellen_b1_die_erste_reihe.pde new file mode 100644 index 0000000..9447890 --- /dev/null +++ b/04_loesungen/01_processing/alg07b_wellen_uebungen_loesungen/wellen_b1_die_erste_reihe/wellen_b1_die_erste_reihe.pde @@ -0,0 +1,42 @@ +// globale Variable +int s=50; // Seitenlänge der Quadrate +int d=5; // Abstand inneres Quadrat zum Rand +int weiss = 255; +int gruen = #1CAF38; + + +// setup-Methode +void setup() { + size(700, 700); + background(255); // weißer Hintergrund + alleQuadrate(); +} + +void zeichneQuadrat(int x, int y, int rahmenfarbe) { + + fill(rahmenfarbe); // Linienfarbe einstellen + noStroke(); + rect(x, y, s, s); // Zeichnen des hinteren Quadrates + + // Bestimmen der Farbe des inneren Quadrates + if (rahmenfarbe == weiss) { + fill(gruen); + } else { + fill(weiss); + } + + rect(x+d, y+d, s-2*d, s-2*d); // Zeichnen des inneren Quadrates +} + +void alleQuadrate(){ + int farbe = gruen; // Festlegen der ersten Rahmenfarbe + // erste Reihe + for (int i=0; i<12; i++) { + zeichneQuadrat(30+i*s, 30, farbe); + if (farbe == gruen) { // du könntest hier wieder eine Methode Farbwechsel schreiben + farbe = weiss; + } else { + farbe = gruen; + } + } +} diff --git a/04_loesungen/01_processing/alg07b_wellen_uebungen_loesungen/wellen_b1_lsg_farbwechsel/wellen_b1_lsg_farbwechsel.pde b/04_loesungen/01_processing/alg07b_wellen_uebungen_loesungen/wellen_b1_lsg_farbwechsel/wellen_b1_lsg_farbwechsel.pde new file mode 100644 index 0000000..dddb983 --- /dev/null +++ b/04_loesungen/01_processing/alg07b_wellen_uebungen_loesungen/wellen_b1_lsg_farbwechsel/wellen_b1_lsg_farbwechsel.pde @@ -0,0 +1,46 @@ +// globale Variable +int s=30; // Seitenlänge der Quadrate +int d=5; // Abstand inneres Quadrat zum Rand +int weiss = 255; +int gruen = #1CAF38; + + +// setup-Methode +void setup() { + size(700, 700); + background(255); // weißer Hintergrund + alleQuadrate(); +} + +int farbwechsel(int farbe) { + if (farbe == weiss) { // Wechsel von weiß auf grün + return gruen; + } else { // Wechsel von grün auf weiß + return weiss; + } +} + +void zeichneQuadrat(int x, int y, int rahmenfarbe) { + + fill(rahmenfarbe); // Linienfarbe einstellen + noStroke(); + rect(x, y, s, s); // Zeichnen des hinteren Quadrates + + // Bestimmen der Farbe des inneren Quadrates + fill(farbwechsel(rahmenfarbe)); + + rect(x+d, y+d, s-2*d, s-2*d); // Zeichnen des inneren Quadrates +} + +void alleQuadrate(){ + int farbe = gruen; // Festlegen der ersten Rahmenfarbe + for (int j=0; j<12; j++) { // j zählt die Reihen + + for (int i=0; i<12; i++) { // i zählt die Quadrate in einer Reihe + zeichneQuadrat(30+i*s, 30+j*s, farbe); + farbe = farbwechsel(farbe); + } + // Wechsel der Farbe des ersten Quadrates für die nächste Reihe + farbe = farbwechsel(farbe); + } +} diff --git a/04_loesungen/01_processing/alg07b_wellen_uebungen_loesungen/wellen_b1_mit_while_schleife/wellen_b1_mit_while_schleife.pde b/04_loesungen/01_processing/alg07b_wellen_uebungen_loesungen/wellen_b1_mit_while_schleife/wellen_b1_mit_while_schleife.pde new file mode 100644 index 0000000..a01c19e --- /dev/null +++ b/04_loesungen/01_processing/alg07b_wellen_uebungen_loesungen/wellen_b1_mit_while_schleife/wellen_b1_mit_while_schleife.pde @@ -0,0 +1,52 @@ +// globale Variable +int s=30; // Seitenlänge der Quadrate +int d=5; // Abstand inneres Quadrat zum Rand +int weiss = 255; +int gruen = #1CAF38; + + +// setup-Methode +void setup() { + size(700, 700); + background(255); // weißer Hintergrund + alleQuadrate(); +} + +int farbwechsel(int farbe) { + if (farbe == weiss) { // Wechsel von weiß auf grün + return gruen; + } else { // Wechsel von grün auf weiß + return weiss; + } +} + +void zeichneQuadrat(int x, int y, int rahmenfarbe) { + + fill(rahmenfarbe); // Linienfarbe einstellen + noStroke(); + rect(x, y, s, s); // Zeichnen des hinteren Quadrates + + // Bestimmen der Farbe des inneren Quadrates + fill(farbwechsel(rahmenfarbe)); + + rect(x+d, y+d, s-2*d, s-2*d); // Zeichnen des inneren Quadrates +} + +void alleQuadrate(){ + int farbe = gruen; // Festlegen der ersten Rahmenfarbe + int pos_x = 0; + int pos_y = 0; + while (pos_y < 700) { // unterer Rand ist noch nicht erreicht + + while (pos_x < 700) { // rechter Rand ist noch nicht erreicht + zeichneQuadrat(pos_x, pos_y, farbe); + farbe = farbwechsel(farbe); + pos_x = pos_x + s; // verändern der x-Position um s + } + // Wechsel der Farbe des ersten Quadrates für die nächste Reihe + farbe = farbwechsel(farbe); + // x-Position wieder an linken Rand setzen + pos_x = 0; + pos_y = pos_y + s; // verändern der y-Position um s + } +} diff --git a/04_loesungen/01_processing/alg08a_weitere_uebungen_loesungen/alg08a_weitere_uebungen_loesungen.pde b/04_loesungen/01_processing/alg08a_weitere_uebungen_loesungen/alg08a_weitere_uebungen_loesungen.pde new file mode 100644 index 0000000..10f4090 --- /dev/null +++ b/04_loesungen/01_processing/alg08a_weitere_uebungen_loesungen/alg08a_weitere_uebungen_loesungen.pde @@ -0,0 +1,41 @@ +// globale Variablen +int e = 60; // Länge der waagrechten Diagonale der grauen Raute +int f = 35; // Länge der senkrechten Diagonale der grauen Raute + +int farbe1 = #3F71C4; // blau +int farbe2 = #54B966; // grün +int farbe3 = #969B96; // grau + +// setup-Methode +void setup() { + size(600, 400); + background(farbe3); + drei_d(); +} + +void viereck(int farbe, int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4){ + fill(farbe); + stroke(farbe); + quad(x1,y1,x2,y2,x3,y3,x4,y4); +} + +void drei_d() { + int x = 0; + int y = 0; + boolean ungerade = true; // es beginnt mit Farbe 1 - jede ungerade Reihe + while (y < height) { + while (x < width) { + viereck(farbe1, x,y,x+ e/2,y+f/2,x+e/2,y+3*f/2,x,y+f); + viereck(farbe2, x+ e/2,y+f/2,x+e/2,y+3*f/2,x+e,y+f,x+e,y); + x = x + e; + } + if (ungerade == true){ + ungerade = false; + x = -e/2; // erste sichtbare Farbe links ist Farbe 2 + } else { + ungerade = true; + x = 0; + } + y = y + 3*f/2; + } +} diff --git a/04_loesungen/01_processing/alg08b_weitere_uebungen_loesungen/alg08b_weitere_uebungen_loesungen.pde b/04_loesungen/01_processing/alg08b_weitere_uebungen_loesungen/alg08b_weitere_uebungen_loesungen.pde new file mode 100644 index 0000000..5912cdd --- /dev/null +++ b/04_loesungen/01_processing/alg08b_weitere_uebungen_loesungen/alg08b_weitere_uebungen_loesungen.pde @@ -0,0 +1,71 @@ +// globale Variablen +int breite = 40; // Breite der schwarzen Streifen +int hellblau = #07B0D8; // r=7, g=176, b=216 +int dunkelblau = #064590; // r=6, g=69, b=144 + +void schwarze_streifen() { + fill(0); // Füllfarbe schwarz + int pos = breite/2; // Abstand erster Streifen zum linken Rand + while (pos < width) { + rect(pos, 0, breite, height); + pos = pos + 2*breite; + } +} + +void blaue_streifen() { + int startfarbe = dunkelblau; + int farbe = startfarbe; + int d_nach_oben = breite; // Abstand zum oberen Rand + int d_nach_links = 0; // Abstand nach links + int farbe_raute = 0; + noStroke(); + while (d_nach_oben < height) { + while (d_nach_links < width) { + fill(farbe); + rect(d_nach_links, d_nach_oben, breite, breite); + vier_rauten(farbe_raute, d_nach_links + breite/2, d_nach_oben); // obere Rauten + vier_rauten(255-farbe_raute, d_nach_links + breite/2, d_nach_oben + breite); // untere + d_nach_links = d_nach_links + breite; + farbe = farbwechsel(farbe); + farbe_raute = 255 - farbe_raute; + } + d_nach_oben = d_nach_oben + breite + breite + breite/2; + d_nach_links = 0; + startfarbe = farbwechsel(startfarbe); + } +} + +int farbwechsel(int farbe0) { // ändert zwischen hell- und dunkelblau + int neuefarbe; + if (farbe0 == hellblau) { + neuefarbe = dunkelblau; + } else { + neuefarbe = hellblau; + } + return neuefarbe; +} + +void viereck(int farbe, int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + fill(farbe); + quad(x1,y1,x2,y2,x3,y3,x4,y4); +} + +void vier_rauten(int farbe, int x_m, int y_m) { + int a = 12; + noStroke(); + //Raute links + viereck(farbe, x_m-a, y_m, x_m - a/2, y_m-a/2, x_m, y_m, x_m - a/2, y_m+a/2); + //Raute unten + viereck(255-farbe, x_m, y_m, x_m - a/2, y_m + a/2, x_m, y_m + a, x_m + a/2, y_m + a/2); + //Raute rechts + viereck(farbe, x_m, y_m, x_m + a/2, y_m + a/2, x_m + a, y_m, x_m + a/2, y_m - a/2); + //Raute oben + viereck(255-farbe, x_m, y_m, x_m - a/2, y_m - a/2, x_m, y_m - a, x_m + a/2, y_m - a/2); +} + +void setup() { + size(600, 400); + background(255); // weißer Hintergrund + schwarze_streifen(); + blaue_streifen(); +} diff --git a/04_loesungen/01_processing/alg08c_weitere_uebungen_loesungen/alg08c_weitere_uebungen_loesungen.pde b/04_loesungen/01_processing/alg08c_weitere_uebungen_loesungen/alg08c_weitere_uebungen_loesungen.pde new file mode 100644 index 0000000..d528cb1 --- /dev/null +++ b/04_loesungen/01_processing/alg08c_weitere_uebungen_loesungen/alg08c_weitere_uebungen_loesungen.pde @@ -0,0 +1,55 @@ +// globale Variable + +int s=20; // Seitenlaenge Quadrat +int k=5; // Seitenlaenge kleines Quadrat +int d=1; // Abstand kleine Quadrate zum Rand + +void zeichneQuadrat(int x, int y, int farbe, boolean minus) { + fill(farbe); + noStroke(); + rect(x, y, s, s); + fill(255-farbe); // Farbwechsel zwischen weiß und schwarz + if (minus == true) { // links oben, rechts unten + rect(x+d, y+d, k, k); + rect(x+s-d-k, y+s-d-k, k, k); + } else { // links unten, rechts oben + rect(x+d, y+s-d-k, k, k); + rect(x+s-d-k, y+d, k, k); + } +} + +void optischeTaeuschung() { + int farbe_akt = 0; + // kompletter Hintergrund + for (int j=0; j<24; j++) { + for (int i=0; i<24; i++) { + zeichneQuadrat(i*s, j*s, farbe_akt, true); + farbe_akt = 255 - farbe_akt; + } + farbe_akt = 255 - farbe_akt; + } + // Mitte gefüllt mit schwarz - weiß... + for (int j=0; j<12; j++){ + for (int i=0; i<12; i++){ + fill(farbe_akt); + rect(6*s +i*s, 6*s+ j*s, s, s); + farbe_akt = 255 - farbe_akt; + } + farbe_akt = 255 - farbe_akt; + } + // innere Mitte + for (int j=0; j<10; j++) { + for (int i=0; i<10; i++) { + zeichneQuadrat(7*s+i*s, 7*s+ j*s, farbe_akt, false); + farbe_akt = 255 - farbe_akt; + } + farbe_akt = 255 - farbe_akt; + } + +} + +// setup-Methode +void setup() { + size(500, 500); + optischeTaeuschung(); +} diff --git a/04_loesungen/01_processing/alg08d_weitere_uebungen_loesungen/alg08d_weitere_uebungen_loesungen.pde b/04_loesungen/01_processing/alg08d_weitere_uebungen_loesungen/alg08d_weitere_uebungen_loesungen.pde new file mode 100644 index 0000000..e597427 --- /dev/null +++ b/04_loesungen/01_processing/alg08d_weitere_uebungen_loesungen/alg08d_weitere_uebungen_loesungen.pde @@ -0,0 +1,89 @@ +int rot = 0; +int blau = 0; +int gruen = 0; +int h_rot; +int h_blau; +int h_gruen; +boolean schnell = false; + +void setup() { + size(650, 150); + vorbereitung(); + //background(h_rot,h_gruen,h_blau); */ + noLoop(); +} + +void vorbereitung() { + h_rot = int(random(0, 255)); + h_gruen = int(random(0, 255)); + h_blau= int(random(0, 255)); + fill(h_rot, h_gruen, h_blau); + rect(25, 25, 100, 100); + fill(0); + text("Start mit Mausklick: Schrittweite 10", 150, 50); + text("Umschalten der Schrittweite von 10 auf 1 (und umgekehrt) durch Mausklick", 150, 75); + text("Erhöhen der Farbwerte durch Tastendruck: r - rot, g - grün, b - blau", 150, 100); + text("Überprüfen mit Leertaste: Ausgabe in der Konsole", 150, 125); +} + +void draw() { + noStroke(); + fill(rot, gruen, blau); + rect(50, 50, 50, 50); +} + +void ueberpruefen() { + String ausgabe_rot; + String ausgabe_gruen; + String ausgabe_blau; + if (rot>h_rot) { + ausgabe_rot = "zu viel rot"; + } else if (rot < h_rot) { + ausgabe_rot = "zu wenig rot"; + } else { + ausgabe_rot = "rot stimmt!"; + } + if (gruen>h_gruen) { + ausgabe_gruen = "zu viel grün"; + } else if (gruen < h_gruen) { + ausgabe_gruen = "zu wenig grün"; + } else { + ausgabe_gruen = "grün stimmt!"; + } + if (blau>h_blau) { + ausgabe_blau = "zu viel blau"; + } else if (blau < h_blau) { + ausgabe_blau = "zu wenig blau"; + } else { + ausgabe_blau = "blau stimmt!"; + } + println(ausgabe_rot+", "+ausgabe_gruen+", "+ausgabe_blau); +} + +void keyPressed() { + int d; + if (schnell == true) { + d=10; + } else { + d=1; + } + if (key == 32) { // Leertaste + ueberpruefen(); + } + if (key == 'r' || key == 'R') { + rot = (rot + d) % 255; + println("rot: "+rot+" richtig: "+h_rot); + } else if (key == 'g' || key == 'G') { + gruen = (gruen+d) % 255; + println("grün: "+gruen+" richtig: "+h_gruen); + } else if (key == 'b' || key == 'B') { + blau = (blau+d) % 255; + println("blau: "+blau+" richtig: "+h_blau); + } + redraw(); +} + +void mousePressed() { + schnell = ! schnell; + println(schnell); +} diff --git a/04_loesungen/01_processing/alg08e_android_weitere_uebungen_loesungen/AndroidManifest.xml b/04_loesungen/01_processing/alg08e_android_weitere_uebungen_loesungen/AndroidManifest.xml new file mode 100644 index 0000000..70da61d --- /dev/null +++ b/04_loesungen/01_processing/alg08e_android_weitere_uebungen_loesungen/AndroidManifest.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/04_loesungen/01_processing/alg08e_android_weitere_uebungen_loesungen/alg08e_android_weitere_uebungen_loesungen.pde b/04_loesungen/01_processing/alg08e_android_weitere_uebungen_loesungen/alg08e_android_weitere_uebungen_loesungen.pde new file mode 100644 index 0000000..520dcba --- /dev/null +++ b/04_loesungen/01_processing/alg08e_android_weitere_uebungen_loesungen/alg08e_android_weitere_uebungen_loesungen.pde @@ -0,0 +1,14 @@ + + +void setup() { + size(displayWidth, displayHeight); +} + +void draw() { +} + + +void mouseDragged() { + fill(int(random(0, 255)), int(random(0, 255)), int(random(0, 255))); + ellipse(pmouseX, pmouseY, 40, 40); +} diff --git a/04_loesungen/01_processing/alg08e_android_weitere_uebungen_loesungen/code/sketch.properties b/04_loesungen/01_processing/alg08e_android_weitere_uebungen_loesungen/code/sketch.properties new file mode 100644 index 0000000..993444e --- /dev/null +++ b/04_loesungen/01_processing/alg08e_android_weitere_uebungen_loesungen/code/sketch.properties @@ -0,0 +1,3 @@ +mode=Android +component=app +mode.id=processing.mode.android.AndroidMode diff --git a/04_loesungen/01_processing/alg08e_weitere_uebungen_loesungen/AndroidManifest.xml b/04_loesungen/01_processing/alg08e_weitere_uebungen_loesungen/AndroidManifest.xml new file mode 100644 index 0000000..a6dc32c --- /dev/null +++ b/04_loesungen/01_processing/alg08e_weitere_uebungen_loesungen/AndroidManifest.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + diff --git a/04_loesungen/01_processing/alg08e_weitere_uebungen_loesungen/alg08e_weitere_uebungen_loesungen.pde b/04_loesungen/01_processing/alg08e_weitere_uebungen_loesungen/alg08e_weitere_uebungen_loesungen.pde new file mode 100644 index 0000000..bb382a7 --- /dev/null +++ b/04_loesungen/01_processing/alg08e_weitere_uebungen_loesungen/alg08e_weitere_uebungen_loesungen.pde @@ -0,0 +1,17 @@ + +void setup() { + size(600, 400); +} + +void draw() { +} + +void mousePressed() { + fill(int(random(0, 255)), int(random(0, 255)), int(random(0, 255))); + ellipse(mouseX, mouseY, 40, 40); +} + +void mouseDragged() { + fill(int(random(0, 255)), int(random(0, 255)), int(random(0, 255))); + ellipse(mouseX, mouseY, 40, 40); +} diff --git a/04_loesungen/01_processing/alg08e_weitere_uebungen_loesungen/code/sketch.properties b/04_loesungen/01_processing/alg08e_weitere_uebungen_loesungen/code/sketch.properties new file mode 100644 index 0000000..674aa0a --- /dev/null +++ b/04_loesungen/01_processing/alg08e_weitere_uebungen_loesungen/code/sketch.properties @@ -0,0 +1,3 @@ +mode=Java +component=app +mode.id=processing.mode.java.JavaMode diff --git a/04_loesungen/01_processing/alg09_weitere_optische_taeuschungen/alg09a_loesung.pde b/04_loesungen/01_processing/alg09_weitere_optische_taeuschungen/alg09a_loesung.pde new file mode 100644 index 0000000..9eaf67a --- /dev/null +++ b/04_loesungen/01_processing/alg09_weitere_optische_taeuschungen/alg09a_loesung.pde @@ -0,0 +1,69 @@ +// globale Variablen +int s = 40; // Seitenlänge Quadrate +int hell = #B2B0C4; // r=7, g=176, b=216 +int dunkel = #9C98C1; // r=6, g=69, b=144 + + +int farbwechsel(int farbe0) { // ändert zwischen hell- und dunkel + int neuefarbe; + if (farbe0 == hell) { + neuefarbe = dunkel; + } else { + neuefarbe = hell; + } + return neuefarbe; +} + +void quadrate() { + int startfarbe = hell; + int farbe = startfarbe; + noStroke(); + for (int j=0; j<13; j++) { + for (int i=0; i< 13; i++) { + fill(farbe); + rect(i*s, j*s, s, s); + farbe = farbwechsel(farbe); + } + } +} + +void rauten(){ + int farbe_raute = 0; + for (int j=0;j<6; j++){ + for (int i=0; i<6; i++){ + vier_rauten(farbe_raute, (i+1)*s, (j+1)*s); // Quadrant 4 + vier_rauten(farbe_raute, (12-i)*s, (j+1)*s); // Quadrant 1 + vier_rauten(farbe_raute, (i+1)*s, (12-j)*s); // Quadrant 3 + vier_rauten(farbe_raute, (12-i)*s, (12-j)*s); // Quadrant 2 + farbe_raute = 255 - farbe_raute; + } + farbe_raute = 255 - farbe_raute; + } + +} + + +void viereck(int farbe, int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + fill(farbe); + quad(x1, y1, x2, y2, x3, y3, x4, y4); +} + +void vier_rauten(int farbe, int x_m, int y_m) { + int a = 8; + noStroke(); + //Raute links + viereck(farbe, x_m-a, y_m, x_m - a/2, y_m-a/2, x_m, y_m, x_m - a/2, y_m+a/2); + //Raute unten + viereck(255-farbe, x_m, y_m, x_m - a/2, y_m + a/2, x_m, y_m + a, x_m + a/2, y_m + a/2); + //Raute rechts + viereck(farbe, x_m, y_m, x_m + a/2, y_m + a/2, x_m + a, y_m, x_m + a/2, y_m - a/2); + //Raute oben + viereck(255-farbe, x_m, y_m, x_m - a/2, y_m - a/2, x_m, y_m - a, x_m + a/2, y_m - a/2); +} + +void setup() { + size(600, 600); + background(255); // weißer Hintergrund + quadrate(); + rauten(); +} diff --git a/04_loesungen/01_processing/alg09_weitere_optische_taeuschungen/alg09b_loesung.pde b/04_loesungen/01_processing/alg09_weitere_optische_taeuschungen/alg09b_loesung.pde new file mode 100644 index 0000000..f98e567 --- /dev/null +++ b/04_loesungen/01_processing/alg09_weitere_optische_taeuschungen/alg09b_loesung.pde @@ -0,0 +1,64 @@ +// globale Variablen +int s = 40; // Seitenlänge Quadrate +int hell = #E5A05A; // r=7, g=176, b=216 +int dunkel = #E57607; // r=6, g=69, b=144 + + +int farbwechsel(int farbe0) { // ändert zwischen hell- und dunkel + int neuefarbe; + if (farbe0 == hell) { + neuefarbe = dunkel; + } else { + neuefarbe = hell; + } + return neuefarbe; +} + +void quadrate_hintergrund() { + int startfarbe = dunkel; + int farbe = startfarbe; + noStroke(); + for (int j=0; j<11; j++) { + for (int i=0; i< 11; i++) { + fill(farbe); + rect(i*s, j*s, s, s); + farbe = farbwechsel(farbe); + } + } +} + +void quadrat_klein(int farbe, int x, int y, int seite) { + strokeWeight(3); + if (farbe == 255) { + stroke(hell); + fill(255); + } else { + stroke(dunkel); + fill(0); + } + rect(x, y, seite, seite); +} + +void quadrate_vordergrund() { + int s0 = s / 2; + int startfarbe = 0; + for (int j=0; j<10; j++) { + for (int i=0; i<10; i++) { + quadrat_klein(startfarbe, (i+1)*s-s0/2, (j+1)*s-s0/2, s0); + if (i!=4) { + startfarbe = 255 - startfarbe; + } + } + if (j==4){ + startfarbe = 255 - startfarbe; + } + } +} + + +void setup() { + size(440, 440); + background(255); // weißer Hintergrund + quadrate_hintergrund(); + quadrate_vordergrund(); +} diff --git a/04_loesungen/01_processing/alg09_weitere_optische_taeuschungen/alg09b_v2_loesung.pde b/04_loesungen/01_processing/alg09_weitere_optische_taeuschungen/alg09b_v2_loesung.pde new file mode 100644 index 0000000..2673533 --- /dev/null +++ b/04_loesungen/01_processing/alg09_weitere_optische_taeuschungen/alg09b_v2_loesung.pde @@ -0,0 +1,78 @@ +// globale Variablen +int s = 40; // Seitenlänge Quadrate +int hell = #E5A05A; // r=7, g=176, b=216 +int dunkel = #E57607; // r=6, g=69, b=144 + + +int farbwechsel(int farbe0) { // ändert zwischen hell- und dunkel + int neuefarbe; + if (farbe0 == hell) { + neuefarbe = dunkel; + } else { + neuefarbe = hell; + } + return neuefarbe; +} + +void quadrate_hintergrund() { + int startfarbe = dunkel; + int farbe = startfarbe; + noStroke(); + for (int j=0; j<11; j++) { + for (int i=0; i< 11; i++) { + fill(farbe); + rect(i*s, j*s, s, s); + farbe = farbwechsel(farbe); + } + } +} + +void quadrat_klein(int farbe, int x, int y, int seite) { + strokeWeight(3); + if (farbe == 255) { + stroke(hell); + fill(255); + } else { + stroke(dunkel); + fill(0); + } + rect(x, y, seite, seite); +} + +void quadrate_vordergrund() { + int s0 = s /2; + int startfarbe = 0; + for (int j=0; j<10; j++) { + for (int i=0; i<10; i++) { + + if (quadrat_zeichnen(i, j) == true) { + + quadrat_klein(startfarbe, (i+1)*s-s0/2, (j+1)*s-s0/2, s0); + } + if (i!=4) { + startfarbe = 255 - startfarbe; + } + } + if (j==4) { + startfarbe = 255 - startfarbe; + } + } +} + +boolean quadrat_zeichnen(int i0, int j0) { + boolean ergebnis = true; + + if (((j0==0 || j0==9) && (i0<3 || i0>6)) || ((j0<3 || j0>6) && (i0==0 || i0==9))) { + ergebnis = false; + } + + return ergebnis; +} + + +void setup() { + size(440, 440); + background(255); // weißer Hintergrund + quadrate_hintergrund(); + quadrate_vordergrund(); +} diff --git a/04_loesungen/01_processing/alg10_balkendiagramm_loesung/alg10_balkendiagramm_loesung.pde b/04_loesungen/01_processing/alg10_balkendiagramm_loesung/alg10_balkendiagramm_loesung.pde new file mode 100644 index 0000000..be06b45 --- /dev/null +++ b/04_loesungen/01_processing/alg10_balkendiagramm_loesung/alg10_balkendiagramm_loesung.pde @@ -0,0 +1,47 @@ +// Programm zur Darstellung eines Arrays als Balkendiagramm +// Autor: Thomas Schaller +// Version: 1.0 vom 12.02.2019 + + + // Liste mit allen Werten //<>// +int[] zahlen={45, 23, 123, 87, 98, 2, 1, 23, 23, 34}; + // Schriften +PFont kleineSchrift; +PFont grosseSchrift; + + +public void setup() { + // Zeichenfläche erzeugen + size(1000, 700); + background(0); + // Schriften laden + kleineSchrift = loadFont("KleineSchrift.vlw"); + grosseSchrift = loadFont("GrosseSchrift.vlw"); + // Balkendiagramm zeichnen + zeichneBalken(); +} + +public void zeichneBalken() { + + clear(); + + // Überschrift + fill(255,255,255); + textFont(grosseSchrift); + text("Balkendiagramm", 2, 20); + textFont(kleineSchrift); + + // Alle Einträge darstellen + for (int i = 0; i< zahlen.length; i++) { + + fill(20,30,170); + + // Balkendiagramm zeichnen + rect(120, 25+i*15, zahlen[i]+1, 13); + + // Beschriftung + fill(255,255,255); + text("i="+i, 2, 35+i*15); + text("zahlen["+i+"]="+zahlen[i], 30, 35+i*15); + } +} diff --git a/04_loesungen/01_processing/alg10_balkendiagramm_loesung/data/GrosseSchrift.vlw b/04_loesungen/01_processing/alg10_balkendiagramm_loesung/data/GrosseSchrift.vlw new file mode 100644 index 0000000..497c8c8 Binary files /dev/null and b/04_loesungen/01_processing/alg10_balkendiagramm_loesung/data/GrosseSchrift.vlw differ diff --git a/04_loesungen/01_processing/alg10_balkendiagramm_loesung/data/KleineSchrift.vlw b/04_loesungen/01_processing/alg10_balkendiagramm_loesung/data/KleineSchrift.vlw new file mode 100644 index 0000000..ab1241a Binary files /dev/null and b/04_loesungen/01_processing/alg10_balkendiagramm_loesung/data/KleineSchrift.vlw differ diff --git a/04_loesungen/01_processing/alg10_balkendiagramm_loesung2/alg10_balkendiagramm_loesung2.pde b/04_loesungen/01_processing/alg10_balkendiagramm_loesung2/alg10_balkendiagramm_loesung2.pde new file mode 100644 index 0000000..fed88c9 --- /dev/null +++ b/04_loesungen/01_processing/alg10_balkendiagramm_loesung2/alg10_balkendiagramm_loesung2.pde @@ -0,0 +1,48 @@ +// Programm zur Darstellung eines Arrays als Balkendiagramm +// Autor: Thomas Schaller +// Version: 1.0 vom 12.02.2019 + + // Liste mit allen Werten //<>// +int[] zahlen={45, 23, 123, 87, 98, 2, 1, 23, 23, 34}; + // Schriften +PFont kleineSchrift; +PFont grosseSchrift; + + +public void setup() { + // Zeichenfläche erzeugen + size(1000, 700); + background(0); + // Schriften laden + kleineSchrift = loadFont("KleineSchrift.vlw"); + grosseSchrift = loadFont("GrosseSchrift.vlw"); + // Balkendiagramm zeichnen + zeichneBalken(); +} + +public void zeichneBalken() { + + clear(); + + // Überschrift + fill(255,255,255); + textFont(grosseSchrift); + text("Balkendiagramm", 2, 20); + textFont(kleineSchrift); + + // Alle Einträge darstellen + if(zahlen != null) { + for (int i = 0; i< zahlen.length; i++) { + + fill(20,30,170); + + // Balkendiagramm zeichnen + if(zahlen[i]>=0) rect(120, 25+i*15, zahlen[i]+1, 13); + + // Beschriftung + fill(255,255,255); + text("i="+i, 2, 35+i*15); + text("zahlen["+i+"]="+zahlen[i], 30, 35+i*15); + } + } +} diff --git a/04_loesungen/01_processing/alg10_balkendiagramm_loesung2/data/GrosseSchrift.vlw b/04_loesungen/01_processing/alg10_balkendiagramm_loesung2/data/GrosseSchrift.vlw new file mode 100644 index 0000000..497c8c8 Binary files /dev/null and b/04_loesungen/01_processing/alg10_balkendiagramm_loesung2/data/GrosseSchrift.vlw differ diff --git a/04_loesungen/01_processing/alg10_balkendiagramm_loesung2/data/KleineSchrift.vlw b/04_loesungen/01_processing/alg10_balkendiagramm_loesung2/data/KleineSchrift.vlw new file mode 100644 index 0000000..ab1241a Binary files /dev/null and b/04_loesungen/01_processing/alg10_balkendiagramm_loesung2/data/KleineSchrift.vlw differ diff --git a/04_loesungen/01_processing/alg11_balkendiagramm_zufall_loesung/alg11_balkendiagramm_zufall_loesung.pde b/04_loesungen/01_processing/alg11_balkendiagramm_zufall_loesung/alg11_balkendiagramm_zufall_loesung.pde new file mode 100644 index 0000000..6ec2aa3 --- /dev/null +++ b/04_loesungen/01_processing/alg11_balkendiagramm_zufall_loesung/alg11_balkendiagramm_zufall_loesung.pde @@ -0,0 +1,67 @@ +/** + * Balkendiagramm für int-Array, Zahlen werden zufällig erzeugt. + * + * @author Schaller + * @version 29.11.18 + */ + + // Liste mit allen Werten //<>// +int[] zahlen; + // Schriften +PFont kleineSchrift; +PFont grosseSchrift; + + +public void setup() { + // Zeichenfläche erzeugen + size(1000, 700); + background(0); + // Schriften laden + kleineSchrift = loadFont("KleineSchrift.vlw"); + grosseSchrift = loadFont("GrosseSchrift.vlw"); + + // Zufallszahlen erzeugen und anzeigen + erzeugeZufallsarray(20); + zeichneBalken(); +} + +public int getZufallszahl(int min, int max) { + java.util.Random r = new java.util.Random(); + return r.nextInt(max-min+1)+min; +} + +public void erzeugeZufallsarray(int laenge) { + // Neues Array der richtigen Länge erzeugen + zahlen = new int[laenge]; + + // Jedes Element mit einer Zufallszahl belegen + for(int i= 0; i< laenge; i++) { + zahlen[i] = getZufallszahl(1, 300); + } +} + + +public void zeichneBalken() { + + clear(); + + // Überschrift + fill(255,255,255); + textFont(grosseSchrift); + text("Balkendiagramm", 2, 20); + textFont(kleineSchrift); + + // Alle Einträge darstellen + for (int i = 0; i< zahlen.length; i++) { + + fill(20,30,170); + + // Balkendiagramm zeichnen + rect(120, 25+i*15, zahlen[i]+1, 13); + + // Beschriftung + fill(255,255,255); + text("i="+i, 2, 35+i*15); + text("zahlen["+i+"]="+zahlen[i], 30, 35+i*15); + } +} diff --git a/04_loesungen/01_processing/alg11_balkendiagramm_zufall_loesung/data/GrosseSchrift.vlw b/04_loesungen/01_processing/alg11_balkendiagramm_zufall_loesung/data/GrosseSchrift.vlw new file mode 100644 index 0000000..497c8c8 Binary files /dev/null and b/04_loesungen/01_processing/alg11_balkendiagramm_zufall_loesung/data/GrosseSchrift.vlw differ diff --git a/04_loesungen/01_processing/alg11_balkendiagramm_zufall_loesung/data/KleineSchrift.vlw b/04_loesungen/01_processing/alg11_balkendiagramm_zufall_loesung/data/KleineSchrift.vlw new file mode 100644 index 0000000..ab1241a Binary files /dev/null and b/04_loesungen/01_processing/alg11_balkendiagramm_zufall_loesung/data/KleineSchrift.vlw differ diff --git a/04_loesungen/01_processing/alg11_balkendiagramm_zufall_loesung2/alg11_balkendiagramm_zufall_loesung2.pde b/04_loesungen/01_processing/alg11_balkendiagramm_zufall_loesung2/alg11_balkendiagramm_zufall_loesung2.pde new file mode 100644 index 0000000..2df9b92 --- /dev/null +++ b/04_loesungen/01_processing/alg11_balkendiagramm_zufall_loesung2/alg11_balkendiagramm_zufall_loesung2.pde @@ -0,0 +1,71 @@ +/** + * Balkendiagramm für int-Array, Zahlen werden zufällig erzeugt. + * + * @author Schaller + * @version 29.11.18 + */ + + // Liste mit allen Werten //<>// +int[] zahlen; + // Schriften +PFont kleineSchrift; +PFont grosseSchrift; + + +public void setup() { + // Zeichenfläche erzeugen + size(1000, 700); + background(0); + // Schriften laden + kleineSchrift = loadFont("KleineSchrift.vlw"); + grosseSchrift = loadFont("GrosseSchrift.vlw"); + + // Zufallszahlen erzeugen und anzeigen + erzeugeZufallsarray(20); + zeichneBalken(); +} + +public int getZufallszahl(int min, int max) { + java.util.Random r = new java.util.Random(); + return r.nextInt(max-min+1)+min; +} + +public void erzeugeZufallsarray(int laenge) { + if(laenge >= 0) { + // Neues Array der richtigen Länge erzeugen + zahlen = new int[laenge]; + + // Jedes Element mit einer Zufallszahl belegen + for(int i= 0; i< laenge; i++) { + zahlen[i] = getZufallszahl(1, 300); + } + } +} + + +public void zeichneBalken() { + + clear(); + + // Überschrift + fill(255,255,255); + textFont(grosseSchrift); + text("Balkendiagramm", 2, 20); + textFont(kleineSchrift); + + // Alle Einträge darstellen + if(zahlen != null) { + for (int i = 0; i< zahlen.length; i++) { + + fill(20,30,170); + + // Balkendiagramm zeichnen + if(zahlen[i]>=0) rect(120, 25+i*15, zahlen[i]+1, 13); + + // Beschriftung + fill(255,255,255); + text("i="+i, 2, 35+i*15); + text("zahlen["+i+"]="+zahlen[i], 30, 35+i*15); + } + } +} diff --git a/04_loesungen/01_processing/alg11_balkendiagramm_zufall_loesung2/data/GrosseSchrift.vlw b/04_loesungen/01_processing/alg11_balkendiagramm_zufall_loesung2/data/GrosseSchrift.vlw new file mode 100644 index 0000000..497c8c8 Binary files /dev/null and b/04_loesungen/01_processing/alg11_balkendiagramm_zufall_loesung2/data/GrosseSchrift.vlw differ diff --git a/04_loesungen/01_processing/alg11_balkendiagramm_zufall_loesung2/data/KleineSchrift.vlw b/04_loesungen/01_processing/alg11_balkendiagramm_zufall_loesung2/data/KleineSchrift.vlw new file mode 100644 index 0000000..ab1241a Binary files /dev/null and b/04_loesungen/01_processing/alg11_balkendiagramm_zufall_loesung2/data/KleineSchrift.vlw differ diff --git a/04_loesungen/01_processing/alg12_balkendiagramm_csv_loesung/alg12_balkendiagramm_csv_loesung.pde b/04_loesungen/01_processing/alg12_balkendiagramm_csv_loesung/alg12_balkendiagramm_csv_loesung.pde new file mode 100644 index 0000000..cb7d6b6 --- /dev/null +++ b/04_loesungen/01_processing/alg12_balkendiagramm_csv_loesung/alg12_balkendiagramm_csv_loesung.pde @@ -0,0 +1,71 @@ +/** + * Balkendiagramm für int-Array, Zahlen werden aus CSV-Datei gelesen. + * + * @author Schaller + * @version 29.11.18 + */ + + // Liste mit allen Werten //<>// +int[] zahlen; +String[] namen; + // Schriften +PFont kleineSchrift; +PFont grosseSchrift; + + +public void setup() { + // Zeichenfläche erzeugen + size(1000, 700); + background(0); + // Schriften laden + kleineSchrift = loadFont("KleineSchrift.vlw"); + grosseSchrift = loadFont("GrosseSchrift.vlw"); + + // CSV-Datei laden und anzeigen + ladeTabelle("punkte.csv"); + zeichneBalken(); +} + + +public void ladeTabelle(String name) { + // Tabelle aus CSV-Datei laden + Table csv = loadTable(name,"header,csv"); + + // Initialisiere Arrays, in die alle Zeilen der Tabelle passen + zahlen = new int[csv.getRowCount()]; + namen = new String[csv.getRowCount()]; + + // Fülle die Arrays mit Werten aus der Tabelle + for (int i = 0; i < zahlen.length; i++) { + // Lies Wert aus der i. Zeile und der Spalte "Punkte" bzw. "Name" + zahlen[i] = csv.getInt(i,"Punkte"); + namen[i] = csv.getString(i,"Name"); + } +} + + +public void zeichneBalken() { + + clear(); + + // Überschrift + fill(255,255,255); + textFont(grosseSchrift); + text("Punkte", 2, 20); + textFont(kleineSchrift); + + // Alle Einträge darstellen + + for (int i = 0; i< zahlen.length; i++) { + + fill(20,30,170); + + // Balkendiagramm zeichnen + rect(120, 25+i*15, zahlen[i]+1, 13); + + // Beschriftung + fill(255,255,255); + text(namen[i], 2, 35+i*15); + text(""+zahlen[i], 70, 35+i*15); + } +} diff --git a/04_loesungen/01_processing/alg12_balkendiagramm_csv_loesung/data/GrosseSchrift.vlw b/04_loesungen/01_processing/alg12_balkendiagramm_csv_loesung/data/GrosseSchrift.vlw new file mode 100644 index 0000000..497c8c8 Binary files /dev/null and b/04_loesungen/01_processing/alg12_balkendiagramm_csv_loesung/data/GrosseSchrift.vlw differ diff --git a/04_loesungen/01_processing/alg12_balkendiagramm_csv_loesung/data/KleineSchrift.vlw b/04_loesungen/01_processing/alg12_balkendiagramm_csv_loesung/data/KleineSchrift.vlw new file mode 100644 index 0000000..ab1241a Binary files /dev/null and b/04_loesungen/01_processing/alg12_balkendiagramm_csv_loesung/data/KleineSchrift.vlw differ diff --git a/04_loesungen/01_processing/alg12_balkendiagramm_csv_loesung/punkte.csv b/04_loesungen/01_processing/alg12_balkendiagramm_csv_loesung/punkte.csv new file mode 100644 index 0000000..d6e8dfd --- /dev/null +++ b/04_loesungen/01_processing/alg12_balkendiagramm_csv_loesung/punkte.csv @@ -0,0 +1,6 @@ +"Name","Punkte" +Niko,216 +Klaus,591 +Anna,857 +Lena,180 +Winfried,168 diff --git a/04_loesungen/01_processing/alg12_balkendiagramm_csv_loesung2/alg12_balkendiagramm_csv_loesung2.pde b/04_loesungen/01_processing/alg12_balkendiagramm_csv_loesung2/alg12_balkendiagramm_csv_loesung2.pde new file mode 100644 index 0000000..e1d2fbb --- /dev/null +++ b/04_loesungen/01_processing/alg12_balkendiagramm_csv_loesung2/alg12_balkendiagramm_csv_loesung2.pde @@ -0,0 +1,75 @@ +/** + * Balkendiagramm für int-Array, Zahlen werden aus CSV-Datei gelesen. + * + * @author Schaller + * @version 29.11.18 + */ + + // Liste mit allen Werten //<>// +int[] zahlen; +String[] namen; + // Schriften +PFont kleineSchrift; +PFont grosseSchrift; + + +public void setup() { + // Zeichenfläche erzeugen + size(1000, 700); + background(0); + // Schriften laden + kleineSchrift = loadFont("KleineSchrift.vlw"); + grosseSchrift = loadFont("GrosseSchrift.vlw"); + + // CSV-Datei laden und anzeigen + ladeTabelle("punkte.csv"); + zeichneBalken(); +} + + +public void ladeTabelle(String name) { + // Tabelle aus CSV-Datei laden + Table csv = loadTable(name,"header,csv"); + + if (csv != null && csv.getColumnCount()==2) { + + // Initialisiere Arrays, in die alle Zeilen der Tabelle passen + zahlen = new int[csv.getRowCount()]; + namen = new String[csv.getRowCount()]; + + // Fülle die Arrays mit Werten aus der Tabelle + for (int i = 0; i < zahlen.length; i++) { + // Lies Wert aus der i. Zeile und der Spalte "Punkte" bzw. "Name" + zahlen[i] = csv.getInt(i,"Punkte"); + namen[i] = csv.getString(i,"Name"); + } + } +} + + +public void zeichneBalken() { + + clear(); + + // Überschrift + fill(255,255,255); + textFont(grosseSchrift); + text("Punkte", 2, 20); + textFont(kleineSchrift); + + // Alle Einträge darstellen + if(zahlen != null) { + for (int i = 0; i< zahlen.length; i++) { + + fill(20,30,170); + + // Balkendiagramm zeichnen + if(zahlen[i]>=0) rect(120, 25+i*15, zahlen[i]+1, 13); + + // Beschriftung + fill(255,255,255); + text(namen[i], 2, 35+i*15); + text(""+zahlen[i], 70, 35+i*15); + } + } +} diff --git a/04_loesungen/01_processing/alg12_balkendiagramm_csv_loesung2/data/GrosseSchrift.vlw b/04_loesungen/01_processing/alg12_balkendiagramm_csv_loesung2/data/GrosseSchrift.vlw new file mode 100644 index 0000000..497c8c8 Binary files /dev/null and b/04_loesungen/01_processing/alg12_balkendiagramm_csv_loesung2/data/GrosseSchrift.vlw differ diff --git a/04_loesungen/01_processing/alg12_balkendiagramm_csv_loesung2/data/KleineSchrift.vlw b/04_loesungen/01_processing/alg12_balkendiagramm_csv_loesung2/data/KleineSchrift.vlw new file mode 100644 index 0000000..ab1241a Binary files /dev/null and b/04_loesungen/01_processing/alg12_balkendiagramm_csv_loesung2/data/KleineSchrift.vlw differ diff --git a/04_loesungen/01_processing/alg12_balkendiagramm_csv_loesung2/punkte.csv b/04_loesungen/01_processing/alg12_balkendiagramm_csv_loesung2/punkte.csv new file mode 100644 index 0000000..d6e8dfd --- /dev/null +++ b/04_loesungen/01_processing/alg12_balkendiagramm_csv_loesung2/punkte.csv @@ -0,0 +1,6 @@ +"Name","Punkte" +Niko,216 +Klaus,591 +Anna,857 +Lena,180 +Winfried,168 diff --git a/04_loesungen/01_processing/alg12_balkendiagramm_variante_xml/alg12_balkendiagramm_variante_xml.pde b/04_loesungen/01_processing/alg12_balkendiagramm_variante_xml/alg12_balkendiagramm_variante_xml.pde new file mode 100644 index 0000000..dc1ffde --- /dev/null +++ b/04_loesungen/01_processing/alg12_balkendiagramm_variante_xml/alg12_balkendiagramm_variante_xml.pde @@ -0,0 +1,69 @@ + // Liste mit allen Werten //<>// +int[] zahlen; +String[] namen; + + // Schriften +PFont kleineSchrift; +PFont grosseSchrift; + + +public void setup() { + // Zeichenfläche erzeugen + size(1000, 700); + background(0); + // Schriften laden + kleineSchrift = loadFont("KleineSchrift.vlw"); + grosseSchrift = loadFont("GrosseSchrift.vlw"); + + // CSV-Datei laden und anzeigen + ladeTabelle("punkte.xml"); + zeichneBalken(); +} + + +public void ladeTabelle(String name) { + // Tabelle aus XML-Datei laden + XML xml = loadXML(name); + XML[] rows = xml.getChildren("Row"); + + // Initialisiere Arrays, in die alle Zeilen passen + zahlen = new int[rows.length]; + namen = new String[rows.length]; + + // Fülle die Arrays mit Werten aus der Tabelle + for (int i = 0; i < zahlen.length; i++) { + // Lies Wert aus der i. Zeile und dort den Unterpunkten "Punkte" bzw. "Name" + XML eintragPunkte = rows[i].getChild("Punkte"); + XML eintragName = rows[i].getChild("Name"); + + zahlen[i] = eintragPunkte.getIntContent(); + namen[i] = eintragName.getContent(); + } +} + + +public void zeichneBalken() { + + clear(); + + // Überschrift + fill(255,255,255); + textFont(grosseSchrift); + text("Punkte", 2, 20); + textFont(kleineSchrift); + + // Alle Einträge darstellen + + for (int i = 0; i< zahlen.length; i++) { + + fill(20,30,170); + + // Balkendiagramm zeichnen + rect(120, 25+i*15, zahlen[i]+1, 13); + + // Beschriftung + fill(255,255,255); + text(namen[i], 2, 35+i*15); + text(""+zahlen[i], 70, 35+i*15); + } +} diff --git a/04_loesungen/01_processing/alg12_balkendiagramm_variante_xml/data/GrosseSchrift.vlw b/04_loesungen/01_processing/alg12_balkendiagramm_variante_xml/data/GrosseSchrift.vlw new file mode 100644 index 0000000..497c8c8 Binary files /dev/null and b/04_loesungen/01_processing/alg12_balkendiagramm_variante_xml/data/GrosseSchrift.vlw differ diff --git a/04_loesungen/01_processing/alg12_balkendiagramm_variante_xml/data/KleineSchrift.vlw b/04_loesungen/01_processing/alg12_balkendiagramm_variante_xml/data/KleineSchrift.vlw new file mode 100644 index 0000000..ab1241a Binary files /dev/null and b/04_loesungen/01_processing/alg12_balkendiagramm_variante_xml/data/KleineSchrift.vlw differ diff --git a/04_loesungen/01_processing/alg12_balkendiagramm_variante_xml/punkte.xml b/04_loesungen/01_processing/alg12_balkendiagramm_variante_xml/punkte.xml new file mode 100644 index 0000000..7740cc3 --- /dev/null +++ b/04_loesungen/01_processing/alg12_balkendiagramm_variante_xml/punkte.xml @@ -0,0 +1,28 @@ + + +
+ + +
+ + Nikolaus + 216 + + + Nikolaus + 591 + + + Nikolaus + 1057 + + + Nikolaus + 180 + + + Winfried + 168 + +
+ diff --git a/04_loesungen/01_processing/alg13_maximumsuche_loesung/alg13_maximumsuche_loesung.pde b/04_loesungen/01_processing/alg13_maximumsuche_loesung/alg13_maximumsuche_loesung.pde new file mode 100644 index 0000000..24c4508 --- /dev/null +++ b/04_loesungen/01_processing/alg13_maximumsuche_loesung/alg13_maximumsuche_loesung.pde @@ -0,0 +1,170 @@ +/** + * Balkendiagramm für int-Array, Zahlen werden aus CSV-Datei gelesen, Maximum der Werte wird bestimmt. + * Hinweis zur Benutzung: + * Klicke in das Zeichenfenster + * Animierte Suche mit Taste "a" + * Automatisches Testen mit Taste "t"* + * @author Schaller + * @version 29.11.18 + */ + +// Liste mit allen Werten +int[] zahlen; +String[] namen; + + +// Hilfsvariablen für die Suche +int akt_maximum=-1; // aktuell groesstes Element +int akt=-1; // aktuell untersuchtes Element +int verzoegerung=1000; // Geschwindigkeit der Ausführung + +// Schriften +PFont kleineSchrift; +PFont grosseSchrift; + + +public void setup() { + // Zeichenfläche erzeugen + size(1000, 700); + background(0); + // Schriften laden + kleineSchrift = loadFont("KleineSchrift.vlw"); + grosseSchrift = loadFont("GrosseSchrift.vlw"); + + // CSV-Datei laden und anzeigen + ladeTabelle("punkte.csv"); + zeichneBalken(); +} + +public void draw() { + zeichneBalken(); +} + +public void keyPressed() { + // Animierte Suche mit Taste "a" + if (key=='a') { + thread("maximumsuche"); + } + + // Automatisches Testen mit Taste "t" + if(key == 't') { + // Testfall 1 + verzoegerung = 0; //<>// + ladeTabelle("testfall1.csv"); + int m1 = maximumsuche(); + if (m1 == 12) { + System.out.println("Maximum korrekt gefunden. In Datei testfall1.csv ist der größte Wert "+ zahlen[m1]+" von "+namen[m1]+" an Position "+m1); + } else { + System.out.println("Maximum in testfall.csv nicht gefunden. Du ermittelst "+m1+" richtig wäre 12"); + } + // Testfall 2: negative Zahlen + ladeTabelle("testfall2.csv"); + int m2 = maximumsuche(); + if (m2 == 3) { + System.out.println("Maximum korrekt gefunden. In Datei testfall2.csv ist der größte Wert "+ zahlen[m2]+" von "+namen[m2]+" an Position "+m2); + } else { + System.out.println("Maximum in testfall2.csv nicht gefunden. Du ermittelst "+m2+" richtig wäre 3"); + } + // Testfall 3: Nur 1 Element + ladeTabelle("testfall3.csv"); + int m3 = maximumsuche(); + if (m3 == 0) { + System.out.println("Maximum korrekt gefunden. In Datei testfall3.csv ist der größte Wert "+ zahlen[m3]+" von "+namen[m3]+" an Position "+m3); + } else { + System.out.println("Maximum in testfall3.csv nicht gefunden. Du ermittelst "+m3+" richtig wäre 0"); + } + // Testfall 4: Leere Liste + ladeTabelle("testfall4.csv"); + int m4 = maximumsuche(); + if (m4 == -1) { + System.out.println("Maximum korrekt gefunden. Da die Datei keine Spieler enthält wird -1 zurückgegeben."); + } else { + System.out.println("Maximum in testfall4.csv nicht gefunden. Du ermittelst "+m4+" richtig wäre -1, da die Datei leer ist."); + } + } +} + + + +public void ladeTabelle(String name) { + // Tabelle aus CSV-Datei laden //<>// + Table csv = loadTable(name, "header,csv"); + + if (csv != null && csv.getColumnCount()==2) { + + // Initialisiere Arrays, in die alle Zeilen der Tabelle passen + zahlen = new int[csv.getRowCount()]; + namen = new String[csv.getRowCount()]; + + // Fülle die Arrays mit Werten aus der Tabelle + for (int i = 0; i < zahlen.length; i++) { + // Lies Wert aus der i. Zeile und der Spalte "Punkte" bzw. "Name" + zahlen[i] = csv.getInt(i, "Punkte"); + namen[i] = csv.getString(i, "Name"); + } + } +} + +public void zeichneBalken() { + + clear(); + + // Überschrift + fill(255,255,255); + textFont(grosseSchrift); + text("Punkte", 2, 20); + textFont(kleineSchrift); + + // Alle Einträge darstellen + if (zahlen != null) { + for (int i = 0; i< zahlen.length; i++) { + + fill(20,25,165); + // aktuelle Elemente farblich hervorheben + if (i == akt) { + fill(140,230,20); + } + if (i == akt_maximum) { + fill(230,60,140); + } + + // Balkendiagramm zeichnen + if (zahlen[i]>=0) rect(120, 25+i*15, zahlen[i]+1, 13); + + // Beschriftung + fill(255,255,255); + text(namen[i], 2, 35+i*15); + text(""+zahlen[i], 70, 35+i*15); + } + } +} + + +public int maximumsuche() { + // Sind überhaupt Daten da? + if(zahlen.length==0 ) { //<>// + return -1; + } + + // Startwerte setzen + akt_maximum = 0; + akt = 1; + + // Alle Arrayelemente untersuchen + while (akt < zahlen.length) { + // Neu zeichnen, da akt neu gesetzt wurde + redraw(); + delay(verzoegerung); + // Neues größtes Element?? + if (zahlen[akt]> zahlen[akt_maximum]) { + // Dann merke dir das neue + akt_maximum = akt; + // Zeichne Balken neu, da neues größtes Element + redraw(); + delay(verzoegerung); + } + akt = akt + 1; + } + // Gib Position des größten Elements zurück + return akt_maximum; +} diff --git a/04_loesungen/01_processing/alg13_maximumsuche_loesung/data/GrosseSchrift.vlw b/04_loesungen/01_processing/alg13_maximumsuche_loesung/data/GrosseSchrift.vlw new file mode 100644 index 0000000..497c8c8 Binary files /dev/null and b/04_loesungen/01_processing/alg13_maximumsuche_loesung/data/GrosseSchrift.vlw differ diff --git a/04_loesungen/01_processing/alg13_maximumsuche_loesung/data/KleineSchrift.vlw b/04_loesungen/01_processing/alg13_maximumsuche_loesung/data/KleineSchrift.vlw new file mode 100644 index 0000000..ab1241a Binary files /dev/null and b/04_loesungen/01_processing/alg13_maximumsuche_loesung/data/KleineSchrift.vlw differ diff --git a/04_loesungen/01_processing/alg13_maximumsuche_loesung/punkte.csv b/04_loesungen/01_processing/alg13_maximumsuche_loesung/punkte.csv new file mode 100644 index 0000000..d6e8dfd --- /dev/null +++ b/04_loesungen/01_processing/alg13_maximumsuche_loesung/punkte.csv @@ -0,0 +1,6 @@ +"Name","Punkte" +Niko,216 +Klaus,591 +Anna,857 +Lena,180 +Winfried,168 diff --git a/04_loesungen/01_processing/alg13_maximumsuche_loesung/testfall1.csv b/04_loesungen/01_processing/alg13_maximumsuche_loesung/testfall1.csv new file mode 100644 index 0000000..92c538f --- /dev/null +++ b/04_loesungen/01_processing/alg13_maximumsuche_loesung/testfall1.csv @@ -0,0 +1,20 @@ +"Name","Punkte" +Spieler1,0 +Spieler1,6 +Spieler2,19 +Spieler6,1 +Spieler4,45 +Spieler3,23 +Spieler3,12 +Spieler2,44 +Spieler1,72 +Spieler5,12 +Spieler6,4 +Spieler7,2 +Spieler4,98 +Spieler3,21 +Spieler3,12 +Spieler2,32 +Spieler1,12 +Spieler5,44 +Spieler3,12 diff --git a/04_loesungen/01_processing/alg13_maximumsuche_loesung/testfall2.csv b/04_loesungen/01_processing/alg13_maximumsuche_loesung/testfall2.csv new file mode 100644 index 0000000..091c003 --- /dev/null +++ b/04_loesungen/01_processing/alg13_maximumsuche_loesung/testfall2.csv @@ -0,0 +1,20 @@ +"Name","Punkte" +Spieler1,-5 +Spieler1,-6 +Spieler2,-19 +Spieler6,-1 +Spieler4,-45 +Spieler3,-23 +Spieler3,-12 +Spieler2,-44 +Spieler1,-72 +Spieler5,-12 +Spieler6,-4 +Spieler7,-2 +Spieler4,-98 +Spieler3,-21 +Spieler3,-12 +Spieler2,-32 +Spieler1,-12 +Spieler5,-44 +Spieler3,-12 diff --git a/04_loesungen/01_processing/alg13_maximumsuche_loesung/testfall3.csv b/04_loesungen/01_processing/alg13_maximumsuche_loesung/testfall3.csv new file mode 100644 index 0000000..3bc26b2 --- /dev/null +++ b/04_loesungen/01_processing/alg13_maximumsuche_loesung/testfall3.csv @@ -0,0 +1,2 @@ +"Name","Punkte" +Spieler1,45 diff --git a/04_loesungen/01_processing/alg13_maximumsuche_loesung/testfall4.csv b/04_loesungen/01_processing/alg13_maximumsuche_loesung/testfall4.csv new file mode 100644 index 0000000..e74e6d5 --- /dev/null +++ b/04_loesungen/01_processing/alg13_maximumsuche_loesung/testfall4.csv @@ -0,0 +1 @@ +"Name","Punkte" diff --git a/04_loesungen/01_processing/alg13_variante_minimumsuche_loesung/alg13_variante_minimumsuche_loesung.pde b/04_loesungen/01_processing/alg13_variante_minimumsuche_loesung/alg13_variante_minimumsuche_loesung.pde new file mode 100644 index 0000000..342ef79 --- /dev/null +++ b/04_loesungen/01_processing/alg13_variante_minimumsuche_loesung/alg13_variante_minimumsuche_loesung.pde @@ -0,0 +1,169 @@ +/** + * Balkendiagramm für int-Array, Zahlen werden aus CSV-Datei gelesen, Minimum der Werte wird bestimmt. + * Hinweis zur Benutzung: + * Klicke in das Zeichenfenster + * Animierte Suche mit Taste "a" + * Automatisches Testen mit Taste "t"* + * @author Schaller + * @version 29.11.18 + */ + + // Liste mit allen Werten +int[] zahlen; +String[] namen; + +// Hilfsvariablen für die Suche +int akt_minimum=-1; // aktuell groesstes Element +int akt=-1; // aktuell untersuchtes Element +int verzoegerung=1000; // Geschwindigkeit der Ausführung + +// Schriften +PFont kleineSchrift; +PFont grosseSchrift; + + +public void setup() { + // Zeichenfläche erzeugen + size(1000, 700); + background(0); + // Schriften laden + kleineSchrift = loadFont("KleineSchrift.vlw"); + grosseSchrift = loadFont("GrosseSchrift.vlw"); + + // CSV-Datei laden und anzeigen + ladeTabelle("punkte.csv"); + zeichneBalken(); +} + +public void draw() { + zeichneBalken(); +} + +public void keyPressed() { + // Animierte Suche mit Taste "a" + if (key=='a') { + thread("minimumsuche"); + } + + // Automatisches Testen mit Taste "t" + if(key == 't') { + // Testfall 1 + verzoegerung = 0; //<>// + ladeTabelle("testfall1.csv"); + int m1 = minimumsuche(); + if (m1 == 0) { + System.out.println("Minimum korrekt gefunden. In Datei testfall1.csv ist der größte Wert "+ zahlen[m1]+" von "+namen[m1]+" an Position "+m1); + } else { + System.out.println("Minimum in testfall.csv nicht gefunden. Du ermittelst "+m1+" richtig wäre 12"); + } + // Testfall 2: negative Zahlen + ladeTabelle("testfall2.csv"); + int m2 = minimumsuche(); + if (m2 == 12) { + System.out.println("Minimum korrekt gefunden. In Datei testfall2.csv ist der größte Wert "+ zahlen[m2]+" von "+namen[m2]+" an Position "+m2); + } else { + System.out.println("Minimum in testfall2.csv nicht gefunden. Du ermittelst "+m2+" richtig wäre 3"); + } + // Testfall 3: Nur 1 Element + ladeTabelle("testfall3.csv"); + int m3 = minimumsuche(); + if (m3 == 0) { + System.out.println("Minimum korrekt gefunden. In Datei testfall3.csv ist der größte Wert "+ zahlen[m3]+" von "+namen[m3]+" an Position "+m3); + } else { + System.out.println("Minimum in testfall3.csv nicht gefunden. Du ermittelst "+m3+" richtig wäre 0"); + } + // Testfall 4: Leere Liste + ladeTabelle("testfall4.csv"); + int m4 = minimumsuche(); + if (m4 == -1) { + System.out.println("Minimum korrekt gefunden. Da die Datei keine Spieler enthält wird -1 zurückgegeben."); + } else { + System.out.println("Minimum in testfall4.csv nicht gefunden. Du ermittelst "+m4+" richtig wäre -1, da die Datei leer ist."); + } + } +} + + + +public void ladeTabelle(String name) { + // Tabelle aus CSV-Datei laden //<>// + Table csv = loadTable(name, "header,csv"); + + if (csv != null && csv.getColumnCount()==2) { + + // Initialisiere Arrays, in die alle Zeilen der Tabelle passen + zahlen = new int[csv.getRowCount()]; + namen = new String[csv.getRowCount()]; + + // Fülle die Arrays mit Werten aus der Tabelle + for (int i = 0; i < zahlen.length; i++) { + // Lies Wert aus der i. Zeile und der Spalte "Punkte" bzw. "Name" + zahlen[i] = csv.getInt(i, "Punkte"); + namen[i] = csv.getString(i, "Name"); + } + } +} + +public void zeichneBalken() { + + clear(); + + // Überschrift + fill(255,255,255); + textFont(grosseSchrift); + text("Punkte", 2, 20); + textFont(kleineSchrift); + + // Alle Einträge darstellen + if (zahlen != null) { + for (int i = 0; i< zahlen.length; i++) { + + fill(20,25,165); + // aktuelle Elemente farblich hervorheben + if (i == akt) { + fill(140,230,20); + } + if (i == akt_minimum) { + fill(230,60,140); + } + + // Balkendiagramm zeichnen + if (zahlen[i]>=0) rect(120, 25+i*15, zahlen[i]+1, 13); + + // Beschriftung + fill(255,255,255); + text(namen[i], 2, 35+i*15); + text(zahlen[i], 70, 35+i*15); + } + } +} + + +public int minimumsuche() { + // Sind überhaupt Daten da? + if(zahlen.length==0 ) { //<>// + return -1; + } + + // Startwerte setzen + akt_minimum = 0; + akt = 1; + + // Alle Arrayelemente untersuchen + while (akt < zahlen.length) { + // Neu zeichnen, da akt neu gesetzt wurde + redraw(); + delay(verzoegerung); + // Neues kleinstes Element?? + if (zahlen[akt] < zahlen[akt_minimum]) { + // Dann merke dir das neue + akt_minimum = akt; + // Zeichne Balken neu, da neues kleinstes Element + redraw(); + delay(verzoegerung); + } + akt = akt + 1; + } + // Gib Position des kleinsten Elements zurück + return akt_minimum; +} diff --git a/04_loesungen/01_processing/alg13_variante_minimumsuche_loesung/data/GrosseSchrift.vlw b/04_loesungen/01_processing/alg13_variante_minimumsuche_loesung/data/GrosseSchrift.vlw new file mode 100644 index 0000000..497c8c8 Binary files /dev/null and b/04_loesungen/01_processing/alg13_variante_minimumsuche_loesung/data/GrosseSchrift.vlw differ diff --git a/04_loesungen/01_processing/alg13_variante_minimumsuche_loesung/data/KleineSchrift.vlw b/04_loesungen/01_processing/alg13_variante_minimumsuche_loesung/data/KleineSchrift.vlw new file mode 100644 index 0000000..ab1241a Binary files /dev/null and b/04_loesungen/01_processing/alg13_variante_minimumsuche_loesung/data/KleineSchrift.vlw differ diff --git a/04_loesungen/01_processing/alg13_variante_minimumsuche_loesung/punkte.csv b/04_loesungen/01_processing/alg13_variante_minimumsuche_loesung/punkte.csv new file mode 100644 index 0000000..d6e8dfd --- /dev/null +++ b/04_loesungen/01_processing/alg13_variante_minimumsuche_loesung/punkte.csv @@ -0,0 +1,6 @@ +"Name","Punkte" +Niko,216 +Klaus,591 +Anna,857 +Lena,180 +Winfried,168 diff --git a/04_loesungen/01_processing/alg13_variante_minimumsuche_loesung/testfall1.csv b/04_loesungen/01_processing/alg13_variante_minimumsuche_loesung/testfall1.csv new file mode 100644 index 0000000..92c538f --- /dev/null +++ b/04_loesungen/01_processing/alg13_variante_minimumsuche_loesung/testfall1.csv @@ -0,0 +1,20 @@ +"Name","Punkte" +Spieler1,0 +Spieler1,6 +Spieler2,19 +Spieler6,1 +Spieler4,45 +Spieler3,23 +Spieler3,12 +Spieler2,44 +Spieler1,72 +Spieler5,12 +Spieler6,4 +Spieler7,2 +Spieler4,98 +Spieler3,21 +Spieler3,12 +Spieler2,32 +Spieler1,12 +Spieler5,44 +Spieler3,12 diff --git a/04_loesungen/01_processing/alg13_variante_minimumsuche_loesung/testfall2.csv b/04_loesungen/01_processing/alg13_variante_minimumsuche_loesung/testfall2.csv new file mode 100644 index 0000000..091c003 --- /dev/null +++ b/04_loesungen/01_processing/alg13_variante_minimumsuche_loesung/testfall2.csv @@ -0,0 +1,20 @@ +"Name","Punkte" +Spieler1,-5 +Spieler1,-6 +Spieler2,-19 +Spieler6,-1 +Spieler4,-45 +Spieler3,-23 +Spieler3,-12 +Spieler2,-44 +Spieler1,-72 +Spieler5,-12 +Spieler6,-4 +Spieler7,-2 +Spieler4,-98 +Spieler3,-21 +Spieler3,-12 +Spieler2,-32 +Spieler1,-12 +Spieler5,-44 +Spieler3,-12 diff --git a/04_loesungen/01_processing/alg13_variante_minimumsuche_loesung/testfall3.csv b/04_loesungen/01_processing/alg13_variante_minimumsuche_loesung/testfall3.csv new file mode 100644 index 0000000..3bc26b2 --- /dev/null +++ b/04_loesungen/01_processing/alg13_variante_minimumsuche_loesung/testfall3.csv @@ -0,0 +1,2 @@ +"Name","Punkte" +Spieler1,45 diff --git a/04_loesungen/01_processing/alg13_variante_minimumsuche_loesung/testfall4.csv b/04_loesungen/01_processing/alg13_variante_minimumsuche_loesung/testfall4.csv new file mode 100644 index 0000000..e74e6d5 --- /dev/null +++ b/04_loesungen/01_processing/alg13_variante_minimumsuche_loesung/testfall4.csv @@ -0,0 +1 @@ +"Name","Punkte" diff --git a/04_loesungen/01_processing/alg14a_zeitungsmeldung_loesung/alg14a_zeitungsmeldung_loesung.pde b/04_loesungen/01_processing/alg14a_zeitungsmeldung_loesung/alg14a_zeitungsmeldung_loesung.pde new file mode 100644 index 0000000..e68fc05 --- /dev/null +++ b/04_loesungen/01_processing/alg14a_zeitungsmeldung_loesung/alg14a_zeitungsmeldung_loesung.pde @@ -0,0 +1,137 @@ +/** + * Automatische Zeitungsmeldung mit Maximum und Durchschnitt, Zahlen werden aus CSV-Datei gelesen. + * + * @author Schaller + * @version 29.11.18 + */ + +// Liste mit allen Werten +int[] punkte; +String[] namen; + +// Schriften +PFont kleineSchrift; +PFont grosseSchrift; + + +public void setup() { + // Zeichenfläche erzeugen + size(1000, 700); + background(0); + // Schriften laden + kleineSchrift = loadFont("KleineSchrift.vlw"); + grosseSchrift = loadFont("GrosseSchrift.vlw"); + + // CSV-Datei laden und anzeigen + ladeTabelle("punkte.csv"); + int summe = berechneSumme(punkte); + System.out.println("Summe: "+summe); + schreibeZeitungsmeldung(); +} + +public void ladeTabelle(String name) { //<>// + // Tabelle aus CSV-Datei laden //<>// + Table csv = loadTable(name, "header,csv"); + + if (csv != null && csv.getColumnCount()==2) { + + // Initialisiere Arrays, in die alle Zeilen der Tabelle passen + punkte = new int[csv.getRowCount()]; + namen = new String[csv.getRowCount()]; + + // Fülle die Arrays mit Werten aus der Tabelle + for (int i = 0; i < punkte.length; i++) { + // Lies Wert aus der i. Zeile und der Spalte "Punkte" bzw. "Name" + punkte[i] = csv.getInt(i, "Punkte"); + namen[i] = csv.getString(i, "Name"); + } + } +} + +public void schreibeZeitungsmeldung() { + + clear(); + + // Überschrift + fill(225,225,255); + stroke(155,155,255); + textFont(grosseSchrift); + text("BREAKING NEWS",5,32); + strokeWeight(3); + line(2,4,400,4); + line(2,45,400,45); + strokeWeight(2); + line(2,7,400,7); + line(2,42,400,42); + strokeWeight(1); + textFont(kleineSchrift); + fill(240); + + int anzahlSpieler = anzahlSpieler(namen); + int anzahlSpiele = punkte.length; + int summe = berechneSumme(punkte); + double durchschnitt = berechneDurchschnitt(punkte); + + text("Großartiges Ergebnis - Klasse XY nimmt an Binärwettbewerb teil.", 2, 60); + text("Die Klasse XY hat beim diesjährigen Binärwettbewerb teilgenommen", 2, 82); + text("und ein großartiges Ergebnis erzielt. Die "+anzahlSpieler+" Schülerinnen und", 2, 94); + text("Schüler der Klasse erreichten in "+anzahlSpiele+" Spielen eine Gesamtpunktzahl",2,106); + text("von "+summe+". Das ist ein Durchschnitt von "+durchschnitt+" pro Spiel.",2,118); + +} + + +public int berechneSumme(int[] zahlen) { + int summe; + + // Sind überhaupt Daten da? + if(zahlen.length==0 ) { //<>// + return -1; + } + + // Startwerte setzen + summe = 0; + + // Alle Arrayelemente untersuchen + for (int i=0; i< zahlen.length; i++) { + summe = summe + zahlen[i]; + } + // Gib die Summe zurück + return summe; +} + + +public double berechneDurchschnitt(int[] zahlen) { + double durchschnitt; + + // Berechne Durchschnitt aus der Summe + durchschnitt = (double) berechneSumme(zahlen)/zahlen.length; + + return durchschnitt; +} + +public int anzahlSpieler(String[] namen) { + int anzahl; + boolean gefunden; + // Startwerte setzen + anzahl = 0; + + // Nach jedem Namen suchen + for(int i=0; i< namen.length; i ++) { + // Prüfe, ob der i. Name ein neuer Name ist + // Kontrolliere dazu alle vorhergehenden, ob ein gleicher Name dabei ist. + gefunden = false; + for(int j=0; j < i; j++) { + // Wenn der Name gleich ist, dann merke dir das + if(namen[i].equals(namen[j])) { + gefunden = true; + } + } + // Wenn nach Kontrolle aller vorhergehender Namen der aktuelle nicht dabei + // ist, dann ist er neu und muss gezählt werden. + if (!gefunden) { + anzahl++; + } + } + return anzahl; +} diff --git a/04_loesungen/01_processing/alg14a_zeitungsmeldung_loesung/data/GrosseSchrift.vlw b/04_loesungen/01_processing/alg14a_zeitungsmeldung_loesung/data/GrosseSchrift.vlw new file mode 100644 index 0000000..497c8c8 Binary files /dev/null and b/04_loesungen/01_processing/alg14a_zeitungsmeldung_loesung/data/GrosseSchrift.vlw differ diff --git a/04_loesungen/01_processing/alg14a_zeitungsmeldung_loesung/data/KleineSchrift.vlw b/04_loesungen/01_processing/alg14a_zeitungsmeldung_loesung/data/KleineSchrift.vlw new file mode 100644 index 0000000..ab1241a Binary files /dev/null and b/04_loesungen/01_processing/alg14a_zeitungsmeldung_loesung/data/KleineSchrift.vlw differ diff --git a/04_loesungen/01_processing/alg14a_zeitungsmeldung_loesung/punkte.csv b/04_loesungen/01_processing/alg14a_zeitungsmeldung_loesung/punkte.csv new file mode 100644 index 0000000..d6e8dfd --- /dev/null +++ b/04_loesungen/01_processing/alg14a_zeitungsmeldung_loesung/punkte.csv @@ -0,0 +1,6 @@ +"Name","Punkte" +Niko,216 +Klaus,591 +Anna,857 +Lena,180 +Winfried,168 diff --git a/04_loesungen/01_processing/alg14a_zeitungsmeldung_loesung/testfall1.csv b/04_loesungen/01_processing/alg14a_zeitungsmeldung_loesung/testfall1.csv new file mode 100644 index 0000000..92c538f --- /dev/null +++ b/04_loesungen/01_processing/alg14a_zeitungsmeldung_loesung/testfall1.csv @@ -0,0 +1,20 @@ +"Name","Punkte" +Spieler1,0 +Spieler1,6 +Spieler2,19 +Spieler6,1 +Spieler4,45 +Spieler3,23 +Spieler3,12 +Spieler2,44 +Spieler1,72 +Spieler5,12 +Spieler6,4 +Spieler7,2 +Spieler4,98 +Spieler3,21 +Spieler3,12 +Spieler2,32 +Spieler1,12 +Spieler5,44 +Spieler3,12 diff --git a/04_loesungen/01_processing/alg14a_zeitungsmeldung_loesung/testfall2.csv b/04_loesungen/01_processing/alg14a_zeitungsmeldung_loesung/testfall2.csv new file mode 100644 index 0000000..091c003 --- /dev/null +++ b/04_loesungen/01_processing/alg14a_zeitungsmeldung_loesung/testfall2.csv @@ -0,0 +1,20 @@ +"Name","Punkte" +Spieler1,-5 +Spieler1,-6 +Spieler2,-19 +Spieler6,-1 +Spieler4,-45 +Spieler3,-23 +Spieler3,-12 +Spieler2,-44 +Spieler1,-72 +Spieler5,-12 +Spieler6,-4 +Spieler7,-2 +Spieler4,-98 +Spieler3,-21 +Spieler3,-12 +Spieler2,-32 +Spieler1,-12 +Spieler5,-44 +Spieler3,-12 diff --git a/04_loesungen/01_processing/alg14a_zeitungsmeldung_loesung/testfall3.csv b/04_loesungen/01_processing/alg14a_zeitungsmeldung_loesung/testfall3.csv new file mode 100644 index 0000000..3bc26b2 --- /dev/null +++ b/04_loesungen/01_processing/alg14a_zeitungsmeldung_loesung/testfall3.csv @@ -0,0 +1,2 @@ +"Name","Punkte" +Spieler1,45 diff --git a/04_loesungen/01_processing/alg14a_zeitungsmeldung_loesung/testfall4.csv b/04_loesungen/01_processing/alg14a_zeitungsmeldung_loesung/testfall4.csv new file mode 100644 index 0000000..e74e6d5 --- /dev/null +++ b/04_loesungen/01_processing/alg14a_zeitungsmeldung_loesung/testfall4.csv @@ -0,0 +1 @@ +"Name","Punkte" diff --git a/04_loesungen/01_processing/alg14b_highscoretabelle_loesung/alg14b_highscoretabelle_loesung.pde b/04_loesungen/01_processing/alg14b_highscoretabelle_loesung/alg14b_highscoretabelle_loesung.pde new file mode 100644 index 0000000..fcb31b1 --- /dev/null +++ b/04_loesungen/01_processing/alg14b_highscoretabelle_loesung/alg14b_highscoretabelle_loesung.pde @@ -0,0 +1,136 @@ + +/** + * Balkendiagramm für int-Array, Zahlen werden aus CSV-Datei gelesen, Umwandlung in sortierte Tabelle. + * Hinweis zur Benutzung: + * Klicke in das Zeichenfenster + * Start des Algorithmus "wastutes" mit Taste "a" + * @author Schaller + * @version 29.11.18 + */ + + +// Liste mit allen Werten //<>// //<>// //<>// +int[] zahlen; +String[] namen; + +// Hilfsvariablen für die Suche +int akt_maximum=-1; // aktuell groesstes Element +int akt=-2; // aktuell untersuchtes Element +int verzoegerung=1000; // Geschwindigkeit der Ausführung + +// Schriften +PFont kleineSchrift; +PFont grosseSchrift; + + +public void setup() { + // Zeichenfläche erzeugen + size(1000, 700); + background(0); + // Schriften laden + kleineSchrift = loadFont("KleineSchrift.vlw"); + grosseSchrift = loadFont("GrosseSchrift.vlw"); + + // CSV-Datei laden und anzeigen + ladeTabelle("punkte.csv"); + zeichneBalken(); +} + +public void draw() { + zeichneBalken(); +} + +public void keyPressed() { + // Animierte Suche mit Taste "a" + if (key=='a') { + thread("wastutes"); + } +} + + + +public void ladeTabelle(String name) { + // Tabelle aus CSV-Datei laden + Table csv = loadTable(name, "header,csv"); + + if (csv != null && csv.getColumnCount()==2) { + + // Initialisiere Arrays, in die alle Zeilen der Tabelle passen + zahlen = new int[csv.getRowCount()]; + namen = new String[csv.getRowCount()]; + + // Fülle die Arrays mit Werten aus der Tabelle + for (int i = 0; i < zahlen.length; i++) { + // Lies Wert aus der i. Zeile und der Spalte "Punkte" bzw. "Name" + zahlen[i] = csv.getInt(i, "Punkte"); + namen[i] = csv.getString(i, "Name"); + } + } +} + +public void zeichneBalken() { + + clear(); + + // Überschrift + fill(255, 255, 255); + textFont(grosseSchrift); + text("Punkte", 2, 20); + textFont(kleineSchrift); + + // Alle Einträge darstellen + if (zahlen != null) { + for (int i = 0; i< zahlen.length; i++) { + + fill(20, 25, 165); + // aktuelle Elemente farblich hervorheben + if (i == akt || i == akt+1 ) { + fill(140, 230, 20); + } + + // Balkendiagramm zeichnen + if (zahlen[i]>=0) rect(120, 25+i*15, zahlen[i]+1, 13); + + // Beschriftung + fill(255, 255, 255); + text(namen[i], 2, 35+i*15); + text(zahlen[i], 70, 35+i*15); + } + } +} + + +public void wastutes() { + // Sind überhaupt Daten da? + if (zahlen.length==0 ) { + return; + } + + + // Wiederholen den Durchlauf n-1 mal + for (int i = 1; i< zahlen.length; i++) { + // Durchlaufe alle Array-Elemente + for (akt=0; akt+1 < zahlen.length; akt++) { + // Neu zeichnen, da akt neu gesetzt wurde + redraw(); + delay(verzoegerung); + // Vergleiche mit Nachbarelement. Falsch sortiert? + if (zahlen[akt+1]> zahlen[akt]) { + // Dreieckstausch bei Zahlen und Namen + int dummy = zahlen[akt]; + zahlen[akt] = zahlen[akt+1]; + zahlen[akt+1] = dummy; + + String s = namen[akt]; + namen[akt] = namen[akt+1]; + namen[akt+1] = s; + + // Zeichne Balken neu, da getauscht wurde + redraw(); + delay(verzoegerung); + } + } + } + // Sortierung beendet + akt = -2; +} diff --git a/04_loesungen/01_processing/alg14b_highscoretabelle_loesung/data/GrosseSchrift.vlw b/04_loesungen/01_processing/alg14b_highscoretabelle_loesung/data/GrosseSchrift.vlw new file mode 100644 index 0000000..497c8c8 Binary files /dev/null and b/04_loesungen/01_processing/alg14b_highscoretabelle_loesung/data/GrosseSchrift.vlw differ diff --git a/04_loesungen/01_processing/alg14b_highscoretabelle_loesung/data/KleineSchrift.vlw b/04_loesungen/01_processing/alg14b_highscoretabelle_loesung/data/KleineSchrift.vlw new file mode 100644 index 0000000..ab1241a Binary files /dev/null and b/04_loesungen/01_processing/alg14b_highscoretabelle_loesung/data/KleineSchrift.vlw differ diff --git a/04_loesungen/01_processing/alg14b_highscoretabelle_loesung/punkte.csv b/04_loesungen/01_processing/alg14b_highscoretabelle_loesung/punkte.csv new file mode 100644 index 0000000..d6e8dfd --- /dev/null +++ b/04_loesungen/01_processing/alg14b_highscoretabelle_loesung/punkte.csv @@ -0,0 +1,6 @@ +"Name","Punkte" +Niko,216 +Klaus,591 +Anna,857 +Lena,180 +Winfried,168 diff --git a/04_loesungen/01_processing/alg14b_highscoretabelle_loesung/testfall1.csv b/04_loesungen/01_processing/alg14b_highscoretabelle_loesung/testfall1.csv new file mode 100644 index 0000000..92c538f --- /dev/null +++ b/04_loesungen/01_processing/alg14b_highscoretabelle_loesung/testfall1.csv @@ -0,0 +1,20 @@ +"Name","Punkte" +Spieler1,0 +Spieler1,6 +Spieler2,19 +Spieler6,1 +Spieler4,45 +Spieler3,23 +Spieler3,12 +Spieler2,44 +Spieler1,72 +Spieler5,12 +Spieler6,4 +Spieler7,2 +Spieler4,98 +Spieler3,21 +Spieler3,12 +Spieler2,32 +Spieler1,12 +Spieler5,44 +Spieler3,12 diff --git a/04_loesungen/01_processing/alg14b_highscoretabelle_loesung/testfall2.csv b/04_loesungen/01_processing/alg14b_highscoretabelle_loesung/testfall2.csv new file mode 100644 index 0000000..091c003 --- /dev/null +++ b/04_loesungen/01_processing/alg14b_highscoretabelle_loesung/testfall2.csv @@ -0,0 +1,20 @@ +"Name","Punkte" +Spieler1,-5 +Spieler1,-6 +Spieler2,-19 +Spieler6,-1 +Spieler4,-45 +Spieler3,-23 +Spieler3,-12 +Spieler2,-44 +Spieler1,-72 +Spieler5,-12 +Spieler6,-4 +Spieler7,-2 +Spieler4,-98 +Spieler3,-21 +Spieler3,-12 +Spieler2,-32 +Spieler1,-12 +Spieler5,-44 +Spieler3,-12 diff --git a/04_loesungen/01_processing/alg14b_highscoretabelle_loesung/testfall3.csv b/04_loesungen/01_processing/alg14b_highscoretabelle_loesung/testfall3.csv new file mode 100644 index 0000000..3bc26b2 --- /dev/null +++ b/04_loesungen/01_processing/alg14b_highscoretabelle_loesung/testfall3.csv @@ -0,0 +1,2 @@ +"Name","Punkte" +Spieler1,45 diff --git a/04_loesungen/01_processing/alg14b_highscoretabelle_loesung/testfall4.csv b/04_loesungen/01_processing/alg14b_highscoretabelle_loesung/testfall4.csv new file mode 100644 index 0000000..e74e6d5 --- /dev/null +++ b/04_loesungen/01_processing/alg14b_highscoretabelle_loesung/testfall4.csv @@ -0,0 +1 @@ +"Name","Punkte" diff --git a/04_loesungen/01_processing/alg15_xydiagramm_loesung_a1/Amplitudes.csv b/04_loesungen/01_processing/alg15_xydiagramm_loesung_a1/Amplitudes.csv new file mode 100644 index 0000000..bc2151b --- /dev/null +++ b/04_loesungen/01_processing/alg15_xydiagramm_loesung_a1/Amplitudes.csv @@ -0,0 +1,12219 @@ +"Time (s)","Sound pressure level (dB)" +0.000000000E0,6.133205686E1 +1.130000000E-1,5.602431153E1 +3.840000000E-1,3.897519867E1 +7.780000000E-1,4.208195145E1 +1.036000000E0,3.840936313E1 +1.305000000E0,3.561092139E1 +1.587000000E0,4.663257633E1 +1.829000000E0,5.311883882E1 +2.084000000E0,5.299431820E1 +2.357000000E0,5.747397858E1 +2.643000000E0,5.626338063E1 +2.949000000E0,5.790811120E1 +3.238000000E0,5.874544026E1 +3.497000000E0,5.736162139E1 +3.775000000E0,5.897817442E1 +4.097000000E0,5.789822970E1 +4.357000000E0,5.312015799E1 +4.626000000E0,5.710192134E1 +4.941000000E0,6.275087240E1 +5.235000000E0,5.784358767E1 +5.535000000E0,5.388577420E1 +5.827000000E0,5.403495101E1 +6.090000000E0,5.428355086E1 +6.339000000E0,6.064473144E1 +6.616000000E0,6.271091291E1 +6.850000000E0,6.982615367E1 +7.128000000E0,7.050308750E1 +7.487000000E0,5.395311298E1 +7.760000000E0,5.036401582E1 +8.065000000E0,4.614125463E1 +8.361000000E0,6.244776407E1 +8.614000000E0,6.315719526E1 +8.862000000E0,5.981740395E1 +9.123000000E0,5.907292535E1 +9.374000000E0,5.661523092E1 +9.665000000E0,6.210368813E1 +9.948000000E0,6.140958115E1 +1.021100000E1,5.697007655E1 +1.058300000E1,5.460455934E1 +1.084000000E1,5.408516231E1 +1.115300000E1,5.907221377E1 +1.142100000E1,6.113412429E1 +1.172700000E1,6.267949704E1 +1.197100000E1,6.245109870E1 +1.226500000E1,6.342534529E1 +1.255800000E1,6.810008108E1 +1.287100000E1,6.036891848E1 +1.313400000E1,5.913231814E1 +1.342700000E1,5.973818566E1 +1.371600000E1,5.534371651E1 +1.401200000E1,5.694514867E1 +1.431200000E1,6.134814982E1 +1.461100000E1,5.900023912E1 +1.484600000E1,5.689908400E1 +1.515800000E1,5.296474858E1 +1.544000000E1,5.608528071E1 +1.569300000E1,5.728560404E1 +1.596900000E1,5.837984103E1 +1.620100000E1,5.718896638E1 +1.649200000E1,5.909973037E1 +1.678900000E1,5.705554272E1 +1.716300000E1,6.079937758E1 +1.747400000E1,5.618116117E1 +1.775200000E1,5.519881157E1 +1.803800000E1,5.402386340E1 +1.829100000E1,5.678484358E1 +1.858100000E1,5.954639303E1 +1.882300000E1,6.030021638E1 +1.908000000E1,5.588340744E1 +1.934400000E1,5.668691200E1 +1.958800000E1,6.042765467E1 +1.983400000E1,5.839794223E1 +2.008500000E1,5.457976882E1 +2.039500000E1,5.974390604E1 +2.064000000E1,6.049774386E1 +2.092900000E1,6.029857781E1 +2.117800000E1,6.116406203E1 +2.142700000E1,5.664722837E1 +2.173400000E1,5.823294996E1 +2.203100000E1,5.517538657E1 +2.229000000E1,5.322823206E1 +2.259900000E1,6.180779467E1 +2.285300000E1,6.106216386E1 +2.314900000E1,5.883321877E1 +2.347100000E1,6.045262422E1 +2.375000000E1,6.163931220E1 +2.406000000E1,4.841181734E1 +2.432800000E1,4.372149986E1 +2.462900000E1,5.625563946E1 +2.487100000E1,5.672759349E1 +2.513200000E1,5.896193725E1 +2.540800000E1,5.893011728E1 +2.566400000E1,5.857261268E1 +2.596700000E1,5.859012974E1 +2.621900000E1,5.635586832E1 +2.648700000E1,5.350948293E1 +2.673900000E1,5.430043092E1 +2.701400000E1,5.666610976E1 +2.727500000E1,5.218421407E1 +2.753100000E1,5.689076583E1 +2.782000000E1,5.796831886E1 +2.806900000E1,5.608205064E1 +2.831700000E1,5.482273815E1 +2.861600000E1,5.392425499E1 +2.888300000E1,5.329416010E1 +2.914800000E1,5.366916703E1 +2.940200000E1,5.280847155E1 +2.968000000E1,5.333298066E1 +2.994300000E1,5.497085471E1 +3.031200000E1,5.753094076E1 +3.057900000E1,5.655381974E1 +3.086100000E1,5.517704804E1 +3.115600000E1,5.592585858E1 +3.140700000E1,6.212826207E1 +3.166000000E1,5.699502474E1 +3.193500000E1,6.025129057E1 +3.223100000E1,5.686166208E1 +3.247300000E1,5.807641915E1 +3.271900000E1,6.065155151E1 +3.296400000E1,5.961384387E1 +3.320500000E1,6.119064420E1 +3.354400000E1,5.548464633E1 +3.378000000E1,5.699661616E1 +3.408000000E1,5.653770482E1 +3.438000000E1,5.083503664E1 +3.468200000E1,5.695639918E1 +3.495800000E1,5.566535489E1 +3.524700000E1,5.914853092E1 +3.552700000E1,5.758441289E1 +3.576600000E1,6.085665801E1 +3.606700000E1,5.862586334E1 +3.630600000E1,5.096841655E1 +3.662200000E1,6.009246966E1 +3.689400000E1,5.981749726E1 +3.715300000E1,6.108830629E1 +3.740300000E1,5.724514841E1 +3.766500000E1,5.934850613E1 +3.793000000E1,5.725470328E1 +3.819100000E1,5.843556167E1 +3.847700000E1,5.697759761E1 +3.874000000E1,5.721548979E1 +3.901600000E1,5.649629904E1 +3.927200000E1,5.850326911E1 +3.954600000E1,5.691951660E1 +3.993900000E1,5.357092442E1 +4.023400000E1,5.817046878E1 +4.053000000E1,5.554327077E1 +4.081200000E1,5.802928061E1 +4.103900000E1,5.663899845E1 +4.128700000E1,5.494654466E1 +4.155800000E1,5.564956216E1 +4.181900000E1,5.663250304E1 +4.211300000E1,5.652236278E1 +4.238100000E1,5.614203459E1 +4.264000000E1,5.433145844E1 +4.295000000E1,6.132645299E1 +4.326200000E1,6.040612545E1 +4.351400000E1,5.905916902E1 +4.377100000E1,5.885516023E1 +4.401000000E1,5.514814582E1 +4.430800000E1,5.663232510E1 +4.455900000E1,5.055807811E1 +4.482100000E1,5.614950318E1 +4.513300000E1,6.025044420E1 +4.537500000E1,5.643182261E1 +4.568900000E1,5.709089314E1 +4.600500000E1,5.480136123E1 +4.624500000E1,5.924046686E1 +4.656900000E1,6.172358505E1 +4.684100000E1,5.645515217E1 +4.711100000E1,6.002156043E1 +4.736300000E1,6.182669975E1 +4.759700000E1,5.557741963E1 +4.786700000E1,5.598662295E1 +4.818300000E1,5.664767890E1 +4.847900000E1,5.956168629E1 +4.874200000E1,5.713315811E1 +4.898900000E1,5.765479272E1 +4.931400000E1,5.507101982E1 +4.961600000E1,5.361677606E1 +4.990000000E1,5.558547080E1 +5.019600000E1,5.402951441E1 +5.046500000E1,5.805429700E1 +5.078800000E1,5.327636151E1 +5.110300000E1,4.980825483E1 +5.137100000E1,5.290981249E1 +5.165200000E1,4.817864123E1 +5.190100000E1,5.585478693E1 +5.214500000E1,5.457392293E1 +5.242900000E1,5.449921652E1 +5.272500000E1,5.537781025E1 +5.302100000E1,5.598018287E1 +5.326000000E1,5.612851081E1 +5.355800000E1,5.312697891E1 +5.384800000E1,5.799703575E1 +5.409200000E1,5.662162553E1 +5.433900000E1,5.392344795E1 +5.459100000E1,5.398098819E1 +5.494900000E1,5.489231889E1 +5.527100000E1,5.658153835E1 +5.552800000E1,5.624900056E1 +5.589500000E1,4.979935744E1 +5.616900000E1,5.146998424E1 +5.645400000E1,5.878755245E1 +5.668600000E1,5.846227673E1 +5.694400000E1,5.977267383E1 +5.726200000E1,5.508647523E1 +5.754400000E1,5.138853207E1 +5.784300000E1,5.327451232E1 +5.808600000E1,5.887142781E1 +5.837800000E1,5.858062431E1 +5.862200000E1,5.917458096E1 +5.889700000E1,6.050411670E1 +5.926300000E1,5.908687144E1 +5.952100000E1,5.570790758E1 +5.981900000E1,5.444849000E1 +6.006100000E1,5.201240285E1 +6.032000000E1,4.755830762E1 +6.061900000E1,5.204388424E1 +6.086500000E1,5.626914911E1 +6.117500000E1,5.280379974E1 +6.142900000E1,5.093923019E1 +6.173000000E1,5.460427137E1 +6.197800000E1,5.299601182E1 +6.230600000E1,5.424208739E1 +6.257600000E1,5.253762352E1 +6.283700000E1,5.544043962E1 +6.309800000E1,5.527614156E1 +6.335400000E1,5.747262922E1 +6.360700000E1,5.468151445E1 +6.384900000E1,5.582905565E1 +6.410700000E1,5.802400474E1 +6.435000000E1,5.204893636E1 +6.459600000E1,5.280146425E1 +6.486300000E1,4.876648093E1 +6.509700000E1,5.311679703E1 +6.537500000E1,5.192778643E1 +6.571400000E1,5.346709918E1 +6.597900000E1,5.370921552E1 +6.627900000E1,5.676705279E1 +6.652200000E1,5.832258643E1 +6.676600000E1,6.257736406E1 +6.703100000E1,6.295448429E1 +6.737800000E1,6.100964383E1 +6.766100000E1,5.182636016E1 +6.790700000E1,4.952717893E1 +6.821100000E1,5.667475715E1 +6.850300000E1,5.872819054E1 +6.882100000E1,6.004516195E1 +6.907300000E1,5.559244143E1 +6.935100000E1,5.600379936E1 +6.961500000E1,5.338006499E1 +6.987600000E1,5.360104859E1 +7.011900000E1,4.644905289E1 +7.037100000E1,4.528909123E1 +7.067200000E1,5.787885076E1 +7.091600000E1,5.602551032E1 +7.115700000E1,5.989544193E1 +7.142200000E1,6.110384869E1 +7.167900000E1,5.887448069E1 +7.192600000E1,5.797896456E1 +7.226000000E1,5.965665129E1 +7.251000000E1,6.477744226E1 +7.281200000E1,6.243775536E1 +7.310800000E1,5.921576979E1 +7.335600000E1,6.629420582E1 +7.364100000E1,6.683725429E1 +7.392300000E1,5.758295449E1 +7.418800000E1,5.654909286E1 +7.448600000E1,5.881341247E1 +7.472100000E1,5.546609910E1 +7.498300000E1,5.586542777E1 +7.526600000E1,5.463216262E1 +7.558500000E1,5.947397496E1 +7.586200000E1,6.218459899E1 +7.609800000E1,6.134189272E1 +7.635800000E1,5.727526170E1 +7.666700000E1,5.579062978E1 +7.699300000E1,6.015063828E1 +7.729000000E1,6.022787424E1 +7.756300000E1,5.646982462E1 +7.782200000E1,6.005734442E1 +7.813200000E1,5.950776839E1 +7.842200000E1,6.314009710E1 +7.880400000E1,5.425753266E1 +7.910400000E1,5.909139002E1 +7.935300000E1,5.600377253E1 +7.962300000E1,6.036368528E1 +7.993700000E1,5.940415340E1 +8.018900000E1,6.102152187E1 +8.050000000E1,6.619104713E1 +8.074000000E1,6.149981675E1 +8.098900000E1,5.978899259E1 +8.123800000E1,5.963150500E1 +8.150300000E1,6.509054947E1 +8.181300000E1,6.387458039E1 +8.220700000E1,6.421798778E1 +8.246100000E1,6.092500605E1 +8.271900000E1,6.039313205E1 +8.297100000E1,5.885189543E1 +8.328000000E1,6.068901175E1 +8.355600000E1,6.531581124E1 +8.381900000E1,6.460984287E1 +8.407800000E1,6.281147078E1 +8.435000000E1,5.961599483E1 +8.463400000E1,5.915457491E1 +8.489200000E1,5.383227231E1 +8.513000000E1,5.278474817E1 +8.551100000E1,6.165964712E1 +8.574900000E1,6.442604107E1 +8.600700000E1,6.551005247E1 +8.626000000E1,6.660338206E1 +8.650900000E1,6.304014634E1 +8.676000000E1,6.488065719E1 +8.701800000E1,6.416881833E1 +8.728000000E1,5.892166498E1 +8.754500000E1,5.946249393E1 +8.785000000E1,6.506678358E1 +8.809400000E1,5.703264442E1 +8.840500000E1,6.164086486E1 +8.876300000E1,6.276173959E1 +8.906100000E1,5.818071871E1 +8.930500000E1,5.844394446E1 +8.956300000E1,5.657440647E1 +8.987400000E1,6.120356137E1 +9.011500000E1,6.094306560E1 +9.041100000E1,5.978472131E1 +9.065500000E1,6.008128664E1 +9.092400000E1,5.758286780E1 +9.123300000E1,5.353387594E1 +9.151600000E1,5.676204998E1 +9.183800000E1,5.245702159E1 +9.218200000E1,5.642589170E1 +9.243600000E1,5.542467479E1 +9.268000000E1,5.580829615E1 +9.297600000E1,5.148061441E1 +9.322800000E1,4.635974806E1 +9.353200000E1,5.465579762E1 +9.377300000E1,5.154999739E1 +9.402200000E1,5.544992474E1 +9.427900000E1,5.302390200E1 +9.453300000E1,5.127982623E1 +9.478800000E1,5.263086656E1 +9.503100000E1,5.128121484E1 +9.532100000E1,5.061466876E1 +9.557700000E1,5.328260476E1 +9.582800000E1,5.101663724E1 +9.607100000E1,5.400893265E1 +9.640400000E1,5.756552061E1 +9.665500000E1,5.665487755E1 +9.690400000E1,5.719000980E1 +9.715400000E1,5.593995548E1 +9.740400000E1,5.420194495E1 +9.771300000E1,4.867232074E1 +9.802100000E1,5.053798103E1 +9.830700000E1,4.874294948E1 +9.857500000E1,5.754515654E1 +9.883700000E1,5.863618568E1 +9.909700000E1,6.070195076E1 +9.935300000E1,5.434874196E1 +9.961300000E1,6.163600431E1 +9.987300000E1,5.555228218E1 +1.001200000E2,5.733850418E1 +1.003910000E2,6.133233800E1 +1.006620000E2,5.853313440E1 +1.009020000E2,5.435835494E1 +1.011680000E2,5.329891948E1 +1.014680000E2,5.356470018E1 +1.018410000E2,5.574288130E1 +1.021370000E2,5.927571979E1 +1.024000000E2,5.789956910E1 +1.026980000E2,6.081738139E1 +1.029540000E2,5.575615853E1 +1.032580000E2,5.337382111E1 +1.035140000E2,5.562761746E1 +1.038150000E2,5.905624776E1 +1.041040000E2,5.696105750E1 +1.043990000E2,6.170938149E1 +1.046370000E2,5.823687000E1 +1.049080000E2,6.066674703E1 +1.051740000E2,6.220969933E1 +1.054810000E2,5.755805236E1 +1.057660000E2,5.735691579E1 +1.060450000E2,5.761618087E1 +1.063040000E2,5.188413372E1 +1.065680000E2,5.643639822E1 +1.068740000E2,5.312430876E1 +1.071280000E2,5.924995828E1 +1.073900000E2,5.546187342E1 +1.076920000E2,5.474389270E1 +1.079790000E2,5.600814816E1 +1.082440000E2,5.561453096E1 +1.084980000E2,5.408559240E1 +1.087580000E2,5.622058302E1 +1.090160000E2,5.768852773E1 +1.092670000E2,5.516804842E1 +1.095340000E2,5.973626648E1 +1.098120000E2,6.403409511E1 +1.100690000E2,6.035201036E1 +1.103490000E2,5.940482770E1 +1.105950000E2,5.932126109E1 +1.108600000E2,5.859387697E1 +1.111460000E2,5.929800416E1 +1.114110000E2,5.930503134E1 +1.117890000E2,6.170536210E1 +1.120410000E2,6.214563711E1 +1.123490000E2,5.810151097E1 +1.126320000E2,5.823719807E1 +1.128910000E2,6.454485320E1 +1.131870000E2,6.755031626E1 +1.134560000E2,6.410743881E1 +1.137200000E2,5.913442857E1 +1.139870000E2,6.382823805E1 +1.142400000E2,5.859239523E1 +1.145180000E2,5.135859796E1 +1.147890000E2,5.294563188E1 +1.151440000E2,5.357868048E1 +1.154220000E2,5.561359505E1 +1.156620000E2,5.645675088E1 +1.159670000E2,5.879425595E1 +1.162610000E2,5.918610512E1 +1.164990000E2,6.083658676E1 +1.167470000E2,5.526645697E1 +1.169880000E2,5.471312988E1 +1.172910000E2,6.211796732E1 +1.175510000E2,5.417468648E1 +1.177930000E2,5.576739557E1 +1.180750000E2,5.912472365E1 +1.184660000E2,5.718213173E1 +1.187710000E2,5.747081312E1 +1.190170000E2,5.741742618E1 +1.192690000E2,5.379557814E1 +1.195330000E2,5.428733520E1 +1.197780000E2,6.177329402E1 +1.200450000E2,5.672333166E1 +1.203170000E2,5.584947723E1 +1.205670000E2,5.382665718E1 +1.208400000E2,5.443690083E1 +1.211280000E2,5.221565874E1 +1.214800000E2,5.516249741E1 +1.217540000E2,5.676279334E1 +1.220050000E2,5.303796336E1 +1.222680000E2,5.258840561E1 +1.225120000E2,5.671935607E1 +1.227660000E2,4.902892756E1 +1.230240000E2,4.264962220E1 +1.232830000E2,4.818154680E1 +1.235340000E2,5.204058636E1 +1.238430000E2,5.649936271E1 +1.241410000E2,5.396154490E1 +1.244200000E2,5.428877275E1 +1.246760000E2,4.778715710E1 +1.249500000E2,4.912370762E1 +1.252110000E2,5.114426735E1 +1.255020000E2,5.345096378E1 +1.257410000E2,5.581149074E1 +1.260430000E2,5.211774829E1 +1.263320000E2,5.470047014E1 +1.265660000E2,5.399085344E1 +1.268600000E2,5.981732528E1 +1.271210000E2,5.944116770E1 +1.273530000E2,5.668281238E1 +1.275970000E2,5.042419391E1 +1.279080000E2,5.014554177E1 +1.282260000E2,5.350461413E1 +1.285240000E2,5.453533258E1 +1.287780000E2,5.809919663E1 +1.290280000E2,5.729580956E1 +1.292980000E2,5.681749266E1 +1.296010000E2,5.542882864E1 +1.298980000E2,5.612046892E1 +1.302070000E2,6.074750886E1 +1.304620000E2,5.979349108E1 +1.307520000E2,5.806574219E1 +1.310590000E2,5.738881777E1 +1.314010000E2,5.595280312E1 +1.316630000E2,5.401154636E1 +1.319120000E2,5.499471091E1 +1.321620000E2,5.551354327E1 +1.324640000E2,6.567912108E1 +1.327650000E2,5.725129100E1 +1.330150000E2,6.452906176E1 +1.333160000E2,5.778565576E1 +1.335760000E2,6.242194617E1 +1.338200000E2,5.570863747E1 +1.340710000E2,5.755877138E1 +1.343660000E2,6.819206156E1 +1.346260000E2,6.094769164E1 +1.349310000E2,6.447198163E1 +1.351810000E2,5.482297950E1 +1.354630000E2,6.327012623E1 +1.357210000E2,5.723157337E1 +1.359770000E2,5.835004111E1 +1.362140000E2,6.413045068E1 +1.365290000E2,6.022343539E1 +1.368110000E2,5.969265006E1 +1.371070000E2,5.589766444E1 +1.373670000E2,6.089100679E1 +1.376970000E2,6.762783521E1 +1.379410000E2,5.740809854E1 +1.381870000E2,6.711182247E1 +1.384650000E2,6.290175574E1 +1.387060000E2,6.352322572E1 +1.390400000E2,5.897504025E1 +1.392980000E2,5.872568346E1 +1.396520000E2,5.582882684E1 +1.399140000E2,5.874428562E1 +1.402160000E2,5.275369064E1 +1.404650000E2,5.181123336E1 +1.407250000E2,4.758951485E1 +1.410550000E2,4.601470876E1 +1.413500000E2,5.203790008E1 +1.416310000E2,5.380793436E1 +1.418780000E2,5.006781735E1 +1.421580000E2,4.792469964E1 +1.424020000E2,5.136650820E1 +1.427060000E2,5.127969468E1 +1.430200000E2,5.304643312E1 +1.433210000E2,5.218299100E1 +1.436050000E2,5.568762266E1 +1.439010000E2,5.522696018E1 +1.442570000E2,5.919224289E1 +1.445880000E2,6.201398016E1 +1.448680000E2,5.750742223E1 +1.451160000E2,5.811963790E1 +1.454090000E2,5.695462128E1 +1.456560000E2,5.854812337E1 +1.458980000E2,5.886107911E1 +1.461720000E2,5.454171305E1 +1.464480000E2,5.674410925E1 +1.466770000E2,5.450912101E1 +1.469270000E2,5.953864028E1 +1.471790000E2,6.097527460E1 +1.475260000E2,5.825769450E1 +1.478290000E2,5.780473579E1 +1.480790000E2,6.185542851E1 +1.483350000E2,5.390929394E1 +1.486330000E2,5.400087479E1 +1.488750000E2,5.328656685E1 +1.491190000E2,5.599536596E1 +1.494200000E2,5.721648542E1 +1.497150000E2,5.787493165E1 +1.500380000E2,5.480047158E1 +1.503480000E2,5.002404450E1 +1.506590000E2,5.486151348E1 +1.509700000E2,6.245235750E1 +1.512360000E2,5.831236552E1 +1.514820000E2,6.253825815E1 +1.517260000E2,6.440134635E1 +1.520120000E2,5.646251942E1 +1.523080000E2,5.569851104E1 +1.525630000E2,5.574195002E1 +1.528610000E2,6.073633455E1 +1.531220000E2,5.704364811E1 +1.533960000E2,5.858521931E1 +1.536900000E2,6.334346239E1 +1.540080000E2,5.734505299E1 +1.542490000E2,6.522555977E1 +1.544980000E2,5.500712815E1 +1.547420000E2,5.698741268E1 +1.549830000E2,5.097374633E1 +1.552760000E2,5.421781291E1 +1.555100000E2,5.276919678E1 +1.558070000E2,5.444895965E1 +1.560410000E2,5.023818561E1 +1.563440000E2,5.460917302E1 +1.565880000E2,5.459938847E1 +1.568920000E2,5.843131092E1 +1.572210000E2,5.876667307E1 +1.574850000E2,5.735202828E1 +1.577300000E2,5.496399564E1 +1.580290000E2,5.249359356E1 +1.582920000E2,5.216967072E1 +1.585400000E2,5.506360532E1 +1.588040000E2,4.854470136E1 +1.590480000E2,5.455647594E1 +1.593040000E2,5.480802962E1 +1.595560000E2,5.117555202E1 +1.598230000E2,5.525001141E1 +1.600680000E2,6.028739680E1 +1.604080000E2,6.051466285E1 +1.606910000E2,5.941686107E1 +1.609450000E2,6.263789003E1 +1.611920000E2,5.862463866E1 +1.614980000E2,5.858673558E1 +1.617730000E2,5.766546261E1 +1.620210000E2,5.485521148E1 +1.623080000E2,5.814732367E1 +1.625850000E2,5.829863647E1 +1.628370000E2,5.473457172E1 +1.631510000E2,5.323729241E1 +1.634320000E2,5.795543593E1 +1.637670000E2,5.845831909E1 +1.640670000E2,5.883503284E1 +1.643040000E2,5.933733684E1 +1.645990000E2,5.316483696E1 +1.648620000E2,5.628275472E1 +1.651110000E2,5.612764782E1 +1.654290000E2,5.739409022E1 +1.657290000E2,5.275374209E1 +1.660100000E2,5.606330732E1 +1.662350000E2,4.973765069E1 +1.664840000E2,4.855931683E1 +1.667820000E2,4.830487304E1 +1.670210000E2,5.643349546E1 +1.672820000E2,5.752246312E1 +1.675830000E2,5.576545129E1 +1.678330000E2,5.583582770E1 +1.681390000E2,5.301617697E1 +1.684460000E2,5.088408561E1 +1.686990000E2,5.149775091E1 +1.690030000E2,6.019099852E1 +1.692410000E2,6.143998752E1 +1.695380000E2,6.183098470E1 +1.697780000E2,5.964256200E1 +1.701420000E2,5.648358262E1 +1.703870000E2,5.768033788E1 +1.706360000E2,5.037521789E1 +1.709530000E2,5.268785935E1 +1.712030000E2,5.850048969E1 +1.714650000E2,5.537813713E1 +1.717710000E2,5.989062491E1 +1.720770000E2,6.371629733E1 +1.723380000E2,5.413135778E1 +1.726060000E2,5.582389161E1 +1.729040000E2,6.344770094E1 +1.731770000E2,6.038125570E1 +1.735090000E2,5.229655017E1 +1.737830000E2,5.594074665E1 +1.740430000E2,6.258802116E1 +1.743030000E2,5.773122794E1 +1.745600000E2,5.533899998E1 +1.748290000E2,5.069657364E1 +1.750850000E2,6.285550191E1 +1.753480000E2,5.470504416E1 +1.756240000E2,5.746379759E1 +1.758870000E2,5.928233462E1 +1.761350000E2,5.214791610E1 +1.763840000E2,5.260177806E1 +1.767030000E2,4.844041050E1 +1.769490000E2,5.275717684E1 +1.772330000E2,5.436891746E1 +1.774780000E2,5.441421810E1 +1.777590000E2,5.485847839E1 +1.780320000E2,5.714239097E1 +1.782910000E2,6.028837304E1 +1.785470000E2,5.706420775E1 +1.788380000E2,5.509582512E1 +1.791200000E2,5.674185072E1 +1.794340000E2,5.437491314E1 +1.796940000E2,5.696592309E1 +1.799990000E2,5.344092263E1 +1.802540000E2,5.414345246E1 +1.804960000E2,5.421992498E1 +1.808400000E2,5.317024536E1 +1.811450000E2,5.422714635E1 +1.814530000E2,5.933207779E1 +1.817720000E2,5.916706050E1 +1.820730000E2,5.685980261E1 +1.824210000E2,5.521649456E1 +1.826850000E2,5.651993888E1 +1.829810000E2,5.707596711E1 +1.832810000E2,5.464130538E1 +1.836160000E2,5.364065008E1 +1.838600000E2,5.913078622E1 +1.841080000E2,5.695541400E1 +1.843520000E2,6.237274690E1 +1.846510000E2,6.017101966E1 +1.848950000E2,5.670915019E1 +1.851380000E2,5.651470649E1 +1.854400000E2,5.919691857E1 +1.857560000E2,5.752836475E1 +1.860680000E2,6.133052078E1 +1.863670000E2,6.001801442E1 +1.866740000E2,5.871186574E1 +1.869510000E2,5.858669373E1 +1.872240000E2,5.722343490E1 +1.875200000E2,5.725198568E1 +1.877700000E2,5.560524182E1 +1.880340000E2,5.419540118E1 +1.882980000E2,6.169219144E1 +1.885790000E2,5.704261604E1 +1.888700000E2,5.651125138E1 +1.891060000E2,5.778536485E1 +1.894110000E2,5.304160496E1 +1.896990000E2,5.105254388E1 +1.900460000E2,5.338626279E1 +1.902980000E2,5.090929652E1 +1.905360000E2,5.235399183E1 +1.907970000E2,5.429173243E1 +1.910620000E2,5.376238901E1 +1.913500000E2,6.411203098E1 +1.916020000E2,6.235211697E1 +1.919100000E2,5.719243884E1 +1.922140000E2,5.965550680E1 +1.925010000E2,5.850063986E1 +1.928110000E2,6.013906156E1 +1.930480000E2,5.912633730E1 +1.934000000E2,5.860712099E1 +1.936870000E2,5.944287516E1 +1.939980000E2,5.676076088E1 +1.942520000E2,5.712881871E1 +1.945490000E2,5.515631677E1 +1.948870000E2,5.670925955E1 +1.951320000E2,5.768263389E1 +1.954210000E2,5.735243887E1 +1.957290000E2,5.883798740E1 +1.960030000E2,5.654393164E1 +1.963340000E2,5.345251733E1 +1.966710000E2,5.034487882E1 +1.969060000E2,5.741493139E1 +1.971980000E2,5.877434013E1 +1.974210000E2,5.965387227E1 +1.977200000E2,6.306941384E1 +1.979730000E2,6.004201692E1 +1.982230000E2,6.106500017E1 +1.984800000E2,5.674857861E1 +1.987290000E2,6.020914127E1 +1.990680000E2,6.067289060E1 +1.993460000E2,5.996658083E1 +1.996390000E2,5.676340490E1 +1.999500000E2,5.612304129E1 +2.002130000E2,6.289766509E1 +2.005150000E2,5.720971103E1 +2.008280000E2,5.752136939E1 +2.010940000E2,6.058659890E1 +2.013440000E2,5.618430636E1 +2.016270000E2,6.056271249E1 +2.019400000E2,5.729198827E1 +2.022100000E2,5.793084452E1 +2.025070000E2,5.787194228E1 +2.027910000E2,5.959620014E1 +2.030940000E2,6.012062596E1 +2.033180000E2,6.276377758E1 +2.036210000E2,5.834405857E1 +2.039320000E2,5.545225289E1 +2.042050000E2,5.829439447E1 +2.044730000E2,5.799912649E1 +2.047970000E2,5.444896398E1 +2.050680000E2,5.743866699E1 +2.053150000E2,5.862448994E1 +2.055880000E2,5.778478934E1 +2.058890000E2,5.527981007E1 +2.061620000E2,5.742523507E1 +2.064580000E2,5.472188821E1 +2.067100000E2,6.202721053E1 +2.069630000E2,5.861698013E1 +2.072080000E2,6.294616718E1 +2.074730000E2,6.321186761E1 +2.077380000E2,5.776609523E1 +2.080390000E2,6.061292698E1 +2.083320000E2,5.857532480E1 +2.085870000E2,5.800369352E1 +2.088450000E2,5.977447345E1 +2.091070000E2,5.957010157E1 +2.093520000E2,6.145770306E1 +2.096060000E2,6.176056517E1 +2.098580000E2,6.033519811E1 +2.100970000E2,6.429628489E1 +2.103980000E2,6.215353584E1 +2.106470000E2,6.299048914E1 +2.109300000E2,6.133544133E1 +2.112010000E2,5.397487394E1 +2.114250000E2,5.313920655E1 +2.116740000E2,5.552710709E1 +2.119140000E2,5.692289703E1 +2.121730000E2,5.618691953E1 +2.124220000E2,5.402804715E1 +2.127170000E2,5.390450402E1 +2.129570000E2,5.652515030E1 +2.132580000E2,5.490504921E1 +2.135120000E2,5.485761082E1 +2.137850000E2,6.486277416E1 +2.140520000E2,6.121826472E1 +2.143580000E2,6.355465948E1 +2.146390000E2,5.534291145E1 +2.148790000E2,6.610858745E1 +2.151670000E2,5.617739728E1 +2.154670000E2,5.426651762E1 +2.157300000E2,5.840247716E1 +2.160830000E2,5.257749691E1 +2.163200000E2,6.345809118E1 +2.165810000E2,6.020490407E1 +2.168390000E2,5.603372378E1 +2.170870000E2,5.452432165E1 +2.173530000E2,5.679931822E1 +2.176220000E2,6.225558234E1 +2.179360000E2,5.991886985E1 +2.182430000E2,6.307902574E1 +2.184780000E2,6.764692456E1 +2.187700000E2,6.696013302E1 +2.190280000E2,6.419552300E1 +2.193390000E2,6.401831507E1 +2.196000000E2,6.317016249E1 +2.198590000E2,6.093052958E1 +2.201380000E2,6.446513941E1 +2.204220000E2,6.075454080E1 +2.206690000E2,6.712020778E1 +2.209300000E2,5.440050354E1 +2.212550000E2,5.627963451E1 +2.215550000E2,6.358778444E1 +2.217990000E2,5.793661873E1 +2.220730000E2,6.448679664E1 +2.223050000E2,5.844994198E1 +2.226510000E2,5.802583418E1 +2.229440000E2,5.848297014E1 +2.231840000E2,6.170695891E1 +2.234220000E2,6.201301769E1 +2.236630000E2,6.049179870E1 +2.239600000E2,6.316843106E1 +2.242020000E2,5.818837652E1 +2.245150000E2,6.411353278E1 +2.248330000E2,6.458398711E1 +2.250670000E2,6.303280227E1 +2.253240000E2,6.378696379E1 +2.255670000E2,6.157533943E1 +2.259260000E2,5.845901257E1 +2.261910000E2,5.623331182E1 +2.264460000E2,5.550822889E1 +2.267020000E2,5.907003722E1 +2.270220000E2,6.300043778E1 +2.273130000E2,5.934584116E1 +2.275640000E2,5.367094537E1 +2.278520000E2,6.260544714E1 +2.281140000E2,5.666507163E1 +2.283970000E2,6.099713971E1 +2.287020000E2,5.943082312E1 +2.289450000E2,6.095935321E1 +2.292950000E2,5.939706013E1 +2.296230000E2,5.612117806E1 +2.299220000E2,5.805831404E1 +2.301570000E2,5.496048372E1 +2.304070000E2,5.335836124E1 +2.306490000E2,5.043808989E1 +2.309270000E2,4.778025574E1 +2.311680000E2,4.613189565E1 +2.314100000E2,4.740314381E1 +2.316580000E2,5.230056147E1 +2.319150000E2,5.672989332E1 +2.321590000E2,6.081799709E1 +2.325030000E2,5.909736866E1 +2.327570000E2,5.528762811E1 +2.330520000E2,6.623131701E1 +2.333360000E2,6.376149752E1 +2.335730000E2,6.088376871E1 +2.338700000E2,6.235681388E1 +2.341160000E2,6.060610548E1 +2.343930000E2,5.779254532E1 +2.346370000E2,5.570043106E1 +2.349010000E2,6.172637016E1 +2.351520000E2,5.865545525E1 +2.354420000E2,6.250465685E1 +2.356850000E2,6.494272879E1 +2.359310000E2,6.075163542E1 +2.361840000E2,5.742858606E1 +2.364460000E2,5.756917813E1 +2.366990000E2,6.169927684E1 +2.370080000E2,5.540268710E1 +2.373040000E2,5.484088652E1 +2.376000000E2,5.732112773E1 +2.378800000E2,5.184194161E1 +2.381270000E2,5.604168635E1 +2.383910000E2,5.644051218E1 +2.387130000E2,6.049774032E1 +2.390290000E2,6.303013407E1 +2.392800000E2,6.115111046E1 +2.395770000E2,6.294174883E1 +2.398740000E2,6.716012591E1 +2.401880000E2,7.075117191E1 +2.404890000E2,6.435561631E1 +2.407550000E2,5.593172595E1 +2.410720000E2,5.781614361E1 +2.413350000E2,5.497792445E1 +2.416080000E2,5.569244646E1 +2.418870000E2,5.408109683E1 +2.421100000E2,5.687440525E1 +2.424230000E2,6.415333296E1 +2.427170000E2,6.528722740E1 +2.429900000E2,6.229384329E1 +2.432350000E2,5.452507698E1 +2.434960000E2,5.248331654E1 +2.437450000E2,5.069826347E1 +2.439880000E2,4.989889277E1 +2.442610000E2,5.196931346E1 +2.445130000E2,4.988417717E1 +2.448120000E2,5.950968466E1 +2.451200000E2,5.725324421E1 +2.454210000E2,5.902908729E1 +2.456980000E2,5.857784521E1 +2.459650000E2,5.154496059E1 +2.462670000E2,5.316738342E1 +2.465660000E2,5.681338179E1 +2.468580000E2,5.486468116E1 +2.471080000E2,5.378622946E1 +2.473840000E2,5.263910847E1 +2.477040000E2,5.102724000E1 +2.479590000E2,4.958128022E1 +2.482070000E2,5.621813465E1 +2.486190000E2,5.553111013E1 +2.489120000E2,5.711728514E1 +2.491630000E2,6.098223102E1 +2.494610000E2,5.812970142E1 +2.497290000E2,5.874411947E1 +2.500090000E2,6.058797235E1 +2.503160000E2,5.921850964E1 +2.506300000E2,5.825659244E1 +2.508940000E2,5.902074554E1 +2.512250000E2,5.857720223E1 +2.514860000E2,5.834259509E1 +2.517560000E2,5.664723408E1 +2.520110000E2,6.245873243E1 +2.522800000E2,6.018081628E1 +2.525490000E2,6.060905480E1 +2.527980000E2,6.098924059E1 +2.530310000E2,6.604497204E1 +2.532750000E2,5.762503683E1 +2.535750000E2,5.946675250E1 +2.538150000E2,5.696283688E1 +2.541120000E2,5.795434272E1 +2.543420000E2,5.641662406E1 +2.546470000E2,6.001503419E1 +2.549610000E2,5.913147779E1 +2.552050000E2,5.772050526E1 +2.554250000E2,5.986895040E1 +2.557400000E2,4.836792039E1 +2.560130000E2,4.818172752E1 +2.563450000E2,5.244597112E1 +2.566130000E2,5.174954560E1 +2.568650000E2,5.165225717E1 +2.571100000E2,4.865803315E1 +2.573530000E2,4.773689375E1 +2.576460000E2,5.375353685E1 +2.579030000E2,5.630041837E1 +2.582540000E2,5.390583403E1 +2.585030000E2,5.686416101E1 +2.588120000E2,5.880170204E1 +2.590630000E2,5.373023259E1 +2.593590000E2,6.009405077E1 +2.596120000E2,5.710673366E1 +2.598560000E2,5.891240789E1 +2.600990000E2,5.960890080E1 +2.603510000E2,6.728594423E1 +2.606060000E2,6.334340199E1 +2.609270000E2,6.082175509E1 +2.611830000E2,5.750083619E1 +2.615060000E2,5.667484133E1 +2.618070000E2,6.152760439E1 +2.620430000E2,5.697586540E1 +2.623440000E2,5.674189037E1 +2.625730000E2,5.539036876E1 +2.628210000E2,4.901745514E1 +2.631270000E2,5.264848299E1 +2.634230000E2,5.038277380E1 +2.636750000E2,5.149234245E1 +2.639170000E2,4.604207892E1 +2.641630000E2,5.735184247E1 +2.644630000E2,5.659523444E1 +2.648080000E2,5.697978691E1 +2.650640000E2,5.691301726E1 +2.653540000E2,5.696584583E1 +2.656480000E2,5.138210199E1 +2.659030000E2,5.345758564E1 +2.661640000E2,5.363588256E1 +2.664240000E2,5.471656895E1 +2.666720000E2,5.140760448E1 +2.669400000E2,5.329005020E1 +2.671940000E2,5.422388323E1 +2.674460000E2,5.133919880E1 +2.677140000E2,5.690801972E1 +2.681270000E2,5.964609863E1 +2.684030000E2,6.167901240E1 +2.686970000E2,5.297205648E1 +2.689350000E2,5.530010894E1 +2.692310000E2,5.450325538E1 +2.694700000E2,5.391690578E1 +2.697660000E2,5.420666075E1 +2.700010000E2,4.962510480E1 +2.702390000E2,5.010058679E1 +2.705460000E2,5.345147952E1 +2.708590000E2,5.574757195E1 +2.711770000E2,5.571208034E1 +2.714720000E2,5.288998421E1 +2.717170000E2,5.214438195E1 +2.720190000E2,5.232798978E1 +2.723080000E2,6.045263056E1 +2.725500000E2,5.870512300E1 +2.727930000E2,5.577911819E1 +2.730760000E2,5.501493048E1 +2.733800000E2,5.433475343E1 +2.736720000E2,5.293457700E1 +2.739070000E2,5.486483547E1 +2.741780000E2,6.008208952E1 +2.745050000E2,5.845984546E1 +2.748040000E2,5.900764997E1 +2.751070000E2,5.760203457E1 +2.754240000E2,5.795024632E1 +2.757280000E2,6.182748257E1 +2.760340000E2,5.683205968E1 +2.763350000E2,5.821402367E1 +2.766080000E2,5.520672517E1 +2.768980000E2,5.645892504E1 +2.772030000E2,5.463906896E1 +2.775200000E2,5.412722413E1 +2.777910000E2,5.268636730E1 +2.780870000E2,5.566734184E1 +2.783350000E2,5.745256931E1 +2.785810000E2,5.645167582E1 +2.788270000E2,5.925831320E1 +2.790840000E2,5.591320738E1 +2.793690000E2,5.632637646E1 +2.796200000E2,6.252281740E1 +2.799120000E2,5.547643277E1 +2.801570000E2,6.021611275E1 +2.804580000E2,5.732676882E1 +2.808110000E2,5.909573770E1 +2.810780000E2,6.005240162E1 +2.813300000E2,5.965022185E1 +2.815820000E2,6.135840817E1 +2.818790000E2,5.970629096E1 +2.821590000E2,5.879025140E1 +2.824010000E2,5.747324456E1 +2.826520000E2,5.726379384E1 +2.828950000E2,5.871306541E1 +2.831920000E2,6.188032415E1 +2.834710000E2,6.066582287E1 +2.837110000E2,5.950933244E1 +2.840350000E2,5.901018860E1 +2.843000000E2,5.761182729E1 +2.846050000E2,5.446909438E1 +2.848570000E2,5.349219985E1 +2.851700000E2,5.015518748E1 +2.854330000E2,5.374610595E1 +2.857270000E2,5.877223624E1 +2.860310000E2,5.644512377E1 +2.863080000E2,5.711327205E1 +2.865540000E2,5.655239592E1 +2.867930000E2,5.833716670E1 +2.871150000E2,5.417781453E1 +2.874030000E2,5.332227783E1 +2.876540000E2,5.146836736E1 +2.879540000E2,5.452228720E1 +2.881970000E2,5.025406823E1 +2.884910000E2,5.490648375E1 +2.887280000E2,5.506242221E1 +2.890210000E2,5.400927835E1 +2.892600000E2,5.781126179E1 +2.895430000E2,6.384283902E1 +2.898470000E2,6.340395874E1 +2.901430000E2,5.555395770E1 +2.904560000E2,5.514224078E1 +2.907530000E2,5.346566906E1 +2.910000000E2,5.948406902E1 +2.912590000E2,6.362292628E1 +2.915300000E2,6.175065463E1 +2.918240000E2,6.129817533E1 +2.920790000E2,6.317618325E1 +2.923350000E2,6.137933812E1 +2.926010000E2,5.620086793E1 +2.928740000E2,5.715913846E1 +2.931780000E2,7.028942499E1 +2.934620000E2,6.774357618E1 +2.937770000E2,6.989950413E1 +2.940270000E2,6.631119439E1 +2.943030000E2,6.956920703E1 +2.945570000E2,6.352936554E1 +2.948100000E2,6.981123112E1 +2.951150000E2,5.607171784E1 +2.953950000E2,5.394017247E1 +2.956980000E2,7.110851253E1 +2.959460000E2,6.978848906E1 +2.961900000E2,5.446752823E1 +2.965090000E2,6.309281755E1 +2.968110000E2,6.647752141E1 +2.971300000E2,6.773248230E1 +2.974240000E2,6.289421429E1 +2.977060000E2,5.998905240E1 +2.979500000E2,6.016152671E1 +2.981940000E2,5.851705490E1 +2.984880000E2,6.506323043E1 +2.987430000E2,5.702053645E1 +2.990110000E2,4.890963733E1 +2.993040000E2,5.105737182E1 +2.995650000E2,4.950865545E1 +2.998150000E2,4.713536225E1 +3.000860000E2,6.170154569E1 +3.003780000E2,5.697995513E1 +3.006750000E2,6.496205179E1 +3.009180000E2,5.585602045E1 +3.012120000E2,5.317421587E1 +3.015130000E2,5.532213468E1 +3.017840000E2,5.371543715E1 +3.020520000E2,6.741141038E1 +3.023220000E2,6.638671809E1 +3.025730000E2,5.833940482E1 +3.028700000E2,6.272205104E1 +3.031230000E2,6.150676490E1 +3.034050000E2,6.571826996E1 +3.036710000E2,6.387001854E1 +3.039460000E2,5.704179120E1 +3.042380000E2,5.452420344E1 +3.044730000E2,6.911436343E1 +3.047670000E2,6.747337761E1 +3.050070000E2,6.642457947E1 +3.053010000E2,6.704052830E1 +3.055360000E2,6.335116163E1 +3.058350000E2,6.452879154E1 +3.061310000E2,6.588892290E1 +3.064460000E2,6.065604325E1 +3.066970000E2,5.884139521E1 +3.069890000E2,6.115548360E1 +3.072650000E2,5.474220631E1 +3.075290000E2,5.525228633E1 +3.077890000E2,5.546520153E1 +3.080280000E2,5.799541194E1 +3.083270000E2,5.467819740E1 +3.086250000E2,5.227747322E1 +3.089260000E2,5.802220937E1 +3.091970000E2,5.383690373E1 +3.095040000E2,5.794687305E1 +3.097810000E2,5.426386053E1 +3.100000000E2,5.745164866E1 +3.103300000E2,5.475501144E1 +3.106240000E2,5.154802151E1 +3.108750000E2,5.434380726E1 +3.111540000E2,5.533246388E1 +3.114150000E2,5.554218476E1 +3.116740000E2,5.375334275E1 +3.119200000E2,5.727216331E1 +3.121680000E2,5.235396651E1 +3.124720000E2,6.207307801E1 +3.127180000E2,6.488896117E1 +3.130530000E2,6.168970511E1 +3.133080000E2,6.010687101E1 +3.135950000E2,6.305386662E1 +3.138880000E2,6.214030252E1 +3.141410000E2,5.907513997E1 +3.143960000E2,6.064308138E1 +3.146480000E2,6.195321339E1 +3.148870000E2,6.088765310E1 +3.151830000E2,5.906360624E1 +3.154280000E2,5.864981040E1 +3.157360000E2,5.824424792E1 +3.159750000E2,5.826399021E1 +3.163740000E2,6.051726612E1 +3.166320000E2,6.011967909E1 +3.168940000E2,5.577110603E1 +3.172010000E2,5.372586587E1 +3.174460000E2,5.537091967E1 +3.176890000E2,5.504912063E1 +3.179320000E2,5.264203521E1 +3.182150000E2,5.344854544E1 +3.184600000E2,5.656777951E1 +3.187200000E2,5.398435402E1 +3.189820000E2,5.410695962E1 +3.192460000E2,5.344168860E1 +3.195780000E2,5.697626360E1 +3.198350000E2,6.073105615E1 +3.200880000E2,6.621432780E1 +3.203460000E2,6.597785722E1 +3.205980000E2,5.907542432E1 +3.208920000E2,5.702769809E1 +3.211760000E2,6.207459825E1 +3.214520000E2,5.921715282E1 +3.217010000E2,5.501368146E1 +3.220030000E2,5.927746858E1 +3.223090000E2,5.878714279E1 +3.226530000E2,6.209253703E1 +3.229180000E2,5.801419316E1 +3.231660000E2,6.150680788E1 +3.234110000E2,5.950436139E1 +3.236660000E2,5.694006868E1 +3.239890000E2,5.964691948E1 +3.242420000E2,6.322261269E1 +3.245070000E2,5.967413832E1 +3.247540000E2,5.743115651E1 +3.250010000E2,5.693057833E1 +3.252760000E2,5.076009335E1 +3.255600000E2,5.432440321E1 +3.258270000E2,5.728583073E1 +3.262160000E2,6.158050311E1 +3.264570000E2,5.788548067E1 +3.267330000E2,5.661485397E1 +3.270280000E2,5.698735139E1 +3.272870000E2,5.428158234E1 +3.275550000E2,5.401192370E1 +3.278320000E2,5.894424302E1 +3.281050000E2,5.279140275E1 +3.283850000E2,5.366788524E1 +3.286760000E2,5.569462346E1 +3.289750000E2,5.484501656E1 +3.292730000E2,5.654335493E1 +3.295550000E2,5.483429560E1 +3.298560000E2,5.516099131E1 +3.301720000E2,5.150081287E1 +3.304560000E2,5.126263973E1 +3.307930000E2,4.943715566E1 +3.310330000E2,5.297477083E1 +3.312800000E2,4.994759883E1 +3.316030000E2,5.283028939E1 +3.318860000E2,5.150402936E1 +3.321790000E2,5.777668868E1 +3.325470000E2,5.446937149E1 +3.328030000E2,5.754474494E1 +3.330410000E2,5.437750931E1 +3.333210000E2,5.378201308E1 +3.335760000E2,5.486825362E1 +3.338240000E2,5.338123539E1 +3.340700000E2,5.704649160E1 +3.343740000E2,5.576563429E1 +3.346640000E2,5.503590574E1 +3.349650000E2,5.539431503E1 +3.352080000E2,5.782097549E1 +3.355080000E2,5.260852375E1 +3.358690000E2,6.012616228E1 +3.361400000E2,5.534922411E1 +3.363810000E2,5.436765301E1 +3.366230000E2,5.007736554E1 +3.368850000E2,5.304270830E1 +3.371340000E2,5.106682022E1 +3.373960000E2,5.491262243E1 +3.376890000E2,5.891119644E1 +3.379320000E2,5.554676164E1 +3.382420000E2,5.491809401E1 +3.385700000E2,6.003743295E1 +3.389490000E2,5.964265847E1 +3.392140000E2,6.009419780E1 +3.394780000E2,5.950800538E1 +3.397810000E2,5.514081916E1 +3.400260000E2,5.654810222E1 +3.403230000E2,5.919098275E1 +3.405600000E2,5.937137097E1 +3.408650000E2,5.885711760E1 +3.411560000E2,6.122434193E1 +3.414060000E2,6.101494213E1 +3.416650000E2,5.685059098E1 +3.419710000E2,4.988163583E1 +3.423360000E2,5.097871962E1 +3.426300000E2,6.097968551E1 +3.429260000E2,5.246223058E1 +3.431760000E2,5.140448000E1 +3.434570000E2,5.162147831E1 +3.436910000E2,5.437509469E1 +3.439650000E2,5.588289675E1 +3.442010000E2,5.342482218E1 +3.444930000E2,5.621155564E1 +3.447310000E2,5.753713233E1 +3.450340000E2,5.873821374E1 +3.453240000E2,5.674648484E1 +3.455770000E2,5.843857274E1 +3.458770000E2,6.170678128E1 +3.461770000E2,5.848319050E1 +3.464240000E2,5.996271814E1 +3.467290000E2,5.583139448E1 +3.470000000E2,5.558324990E1 +3.472360000E2,5.638821787E1 +3.474880000E2,6.015129432E1 +3.477550000E2,6.074195357E1 +3.480530000E2,6.258101891E1 +3.483260000E2,6.280209300E1 +3.486840000E2,5.935598721E1 +3.489370000E2,6.423635683E1 +3.492060000E2,7.026891453E1 +3.495130000E2,5.477771858E1 +3.498240000E2,6.143080763E1 +3.500700000E2,6.077206860E1 +3.503130000E2,5.816670512E1 +3.506030000E2,6.220374728E1 +3.509040000E2,6.435510927E1 +3.511560000E2,6.387906049E1 +3.514240000E2,6.324188625E1 +3.517710000E2,6.217871174E1 +3.520510000E2,6.349767138E1 +3.523000000E2,5.947763114E1 +3.525840000E2,5.623947938E1 +3.528810000E2,5.940245648E1 +3.531830000E2,5.323006485E1 +3.534790000E2,4.756673680E1 +3.537830000E2,5.761743216E1 +3.540870000E2,5.701856444E1 +3.543720000E2,5.507707077E1 +3.546320000E2,5.561457107E1 +3.549330000E2,6.036785424E1 +3.552860000E2,5.818319920E1 +3.555390000E2,5.636477080E1 +3.557840000E2,5.686236286E1 +3.560330000E2,6.137502104E1 +3.563290000E2,6.039421004E1 +3.565710000E2,5.873926214E1 +3.568160000E2,5.984737812E1 +3.570890000E2,5.898549785E1 +3.573200000E2,5.804358229E1 +3.576080000E2,5.178825198E1 +3.578380000E2,5.333798630E1 +3.581470000E2,5.663121054E1 +3.584860000E2,5.705169894E1 +3.587470000E2,5.488627438E1 +3.590020000E2,5.493171173E1 +3.592590000E2,5.280801534E1 +3.595110000E2,5.919356657E1 +3.597710000E2,6.061921525E1 +3.600770000E2,5.781838960E1 +3.603810000E2,5.824405535E1 +3.606410000E2,5.734273072E1 +3.608930000E2,5.860073318E1 +3.611440000E2,5.158577335E1 +3.614110000E2,5.569804167E1 +3.617550000E2,5.732029627E1 +3.620530000E2,5.599725951E1 +3.623260000E2,5.427140428E1 +3.625700000E2,5.439119305E1 +3.628680000E2,5.768088704E1 +3.631160000E2,5.322266305E1 +3.634170000E2,5.611257515E1 +3.637150000E2,5.466283243E1 +3.639540000E2,5.648497192E1 +3.642520000E2,5.982456496E1 +3.644910000E2,5.683499776E1 +3.648080000E2,5.424977228E1 +3.650550000E2,5.261749952E1 +3.653010000E2,5.976464589E1 +3.655400000E2,5.630627545E1 +3.658370000E2,5.855663855E1 +3.660660000E2,5.839517218E1 +3.663050000E2,5.701336937E1 +3.666100000E2,6.057417753E1 +3.668530000E2,5.660058929E1 +3.671060000E2,5.360906173E1 +3.673270000E2,5.766761713E1 +3.676020000E2,5.473947199E1 +3.679270000E2,5.730791892E1 +3.681990000E2,5.368134624E1 +3.685210000E2,5.122725302E1 +3.688180000E2,5.413949330E1 +3.690720000E2,5.953240184E1 +3.693650000E2,5.834363401E1 +3.696110000E2,4.952962201E1 +3.698620000E2,6.082605721E1 +3.701240000E2,5.541205242E1 +3.703840000E2,5.595936781E1 +3.706570000E2,5.751180267E1 +3.709050000E2,5.510413826E1 +3.712530000E2,5.236304209E1 +3.715330000E2,5.429686706E1 +3.717680000E2,5.365135821E1 +3.720680000E2,5.442146139E1 +3.723070000E2,5.193301537E1 +3.726070000E2,5.573089397E1 +3.728540000E2,5.084704353E1 +3.731070000E2,5.244752708E1 +3.734250000E2,5.501438711E1 +3.737160000E2,5.701937821E1 +3.739830000E2,5.913008265E1 +3.743030000E2,6.329763996E1 +3.745490000E2,5.828010903E1 +3.748110000E2,5.514928454E1 +3.750560000E2,5.535724603E1 +3.753250000E2,6.062318511E1 +3.756820000E2,5.853801057E1 +3.759720000E2,6.218740595E1 +3.762560000E2,6.130322227E1 +3.764780000E2,5.705598438E1 +3.767430000E2,5.675025411E1 +3.770350000E2,5.562309411E1 +3.773330000E2,6.171478403E1 +3.776660000E2,5.752069737E1 +3.779640000E2,5.869913239E1 +3.782130000E2,5.802158707E1 +3.785030000E2,5.920699755E1 +3.787580000E2,5.984700757E1 +3.790120000E2,5.874214142E1 +3.792820000E2,5.792329599E1 +3.795460000E2,6.240429581E1 +3.798520000E2,5.924961400E1 +3.800960000E2,5.655548581E1 +3.803510000E2,5.997047167E1 +3.806590000E2,5.894207932E1 +3.810310000E2,5.556916558E1 +3.813250000E2,5.709965860E1 +3.815810000E2,5.724657649E1 +3.818690000E2,5.634885250E1 +3.821660000E2,5.381597934E1 +3.824070000E2,5.409431797E1 +3.827020000E2,5.558304395E1 +3.829400000E2,5.836087965E1 +3.832380000E2,5.621848827E1 +3.834740000E2,5.756105430E1 +3.837670000E2,5.972981317E1 +3.840620000E2,6.110722903E1 +3.842970000E2,6.011338906E1 +3.846120000E2,6.632548976E1 +3.849300000E2,5.632542095E1 +3.852340000E2,5.660090160E1 +3.854760000E2,5.637042997E1 +3.857700000E2,6.483820819E1 +3.860160000E2,6.294386681E1 +3.862760000E2,6.248693097E1 +3.865740000E2,5.966646580E1 +3.868130000E2,5.884596060E1 +3.871230000E2,6.069045984E1 +3.874660000E2,5.535227762E1 +3.877260000E2,5.453589064E1 +3.879920000E2,5.803286513E1 +3.882920000E2,6.338575111E1 +3.885370000E2,6.297665471E1 +3.888380000E2,6.078963895E1 +3.890870000E2,6.078711186E1 +3.893350000E2,5.918580133E1 +3.896040000E2,5.645003340E1 +3.899070000E2,5.868887980E1 +3.901560000E2,5.816727924E1 +3.904840000E2,5.908711574E1 +3.907830000E2,5.165109059E1 +3.910410000E2,5.747977046E1 +3.913230000E2,5.600926578E1 +3.916170000E2,5.743239537E1 +3.918580000E2,5.999528635E1 +3.921650000E2,5.924448814E1 +3.924670000E2,6.347749271E1 +3.927590000E2,6.285842009E1 +3.929960000E2,6.439104552E1 +3.933010000E2,6.092208558E1 +3.935450000E2,5.889760176E1 +3.939100000E2,5.798312040E1 +3.941770000E2,5.909426563E1 +3.944250000E2,5.971090911E1 +3.946810000E2,5.379436409E1 +3.949270000E2,5.134339741E1 +3.951700000E2,5.739586279E1 +3.954270000E2,5.255911571E1 +3.956850000E2,5.149310319E1 +3.959500000E2,5.723685944E1 +3.962270000E2,5.622087783E1 +3.964720000E2,6.119098643E1 +3.967310000E2,6.249797436E1 +3.970320000E2,5.838309249E1 +3.973440000E2,5.720898847E1 +3.976100000E2,5.357982700E1 +3.978600000E2,5.091452983E1 +3.981070000E2,4.781274510E1 +3.983520000E2,4.684320786E1 +3.986530000E2,4.867937405E1 +3.988970000E2,4.947454895E1 +3.991740000E2,4.941937240E1 +3.994180000E2,5.206925818E1 +3.997200000E2,5.099596962E1 +3.999720000E2,5.059119317E1 +4.002350000E2,4.980275756E1 +4.004940000E2,5.514017077E1 +4.008060000E2,5.354499430E1 +4.011150000E2,5.377825353E1 +4.013980000E2,5.657928040E1 +4.016460000E2,6.437756844E1 +4.019070000E2,6.072529486E1 +4.021970000E2,5.876291143E1 +4.024430000E2,6.118567430E1 +4.027460000E2,5.925186578E1 +4.030590000E2,5.727531678E1 +4.033610000E2,6.211123432E1 +4.036680000E2,6.041950332E1 +4.039230000E2,6.161200416E1 +4.041780000E2,6.047480336E1 +4.044620000E2,5.905442986E1 +4.047060000E2,5.729915709E1 +4.049630000E2,6.020933408E1 +4.052500000E2,5.845152603E1 +4.055600000E2,5.814304967E1 +4.058210000E2,5.866194002E1 +4.060640000E2,5.736420578E1 +4.063180000E2,6.107395805E1 +4.065790000E2,5.985269852E1 +4.069480000E2,5.745859610E1 +4.072050000E2,5.693680110E1 +4.074960000E2,6.165201185E1 +4.077470000E2,6.131132241E1 +4.079970000E2,5.824414723E1 +4.083050000E2,5.958451387E1 +4.085600000E2,5.739792126E1 +4.088150000E2,5.573389816E1 +4.090850000E2,5.530698039E1 +4.093810000E2,5.634371531E1 +4.096660000E2,5.880658089E1 +4.099920000E2,5.804298004E1 +4.102870000E2,5.688352401E1 +4.106310000E2,5.573115839E1 +4.109280000E2,5.368053116E1 +4.112180000E2,5.474384188E1 +4.114650000E2,5.380195893E1 +4.117660000E2,5.718608674E1 +4.120140000E2,5.703743686E1 +4.122910000E2,5.985228158E1 +4.125620000E2,6.278694860E1 +4.128210000E2,5.839550633E1 +4.130600000E2,6.029373556E1 +4.133710000E2,5.711050636E1 +4.136150000E2,5.200468588E1 +4.138820000E2,5.769230508E1 +4.141370000E2,5.333759168E1 +4.143860000E2,5.632377961E1 +4.146570000E2,5.647744894E1 +4.149040000E2,5.667945226E1 +4.151840000E2,5.669404445E1 +4.154420000E2,6.072374556E1 +4.157420000E2,5.606444578E1 +4.159850000E2,5.623596320E1 +4.162830000E2,5.264542492E1 +4.165340000E2,5.359803767E1 +4.168600000E2,5.691340897E1 +4.171060000E2,5.636326143E1 +4.173490000E2,6.276141082E1 +4.176080000E2,6.197471417E1 +4.178580000E2,5.777170976E1 +4.181050000E2,5.407671770E1 +4.183760000E2,4.795453020E1 +4.186580000E2,5.871005652E1 +4.188870000E2,6.069158080E1 +4.191320000E2,6.112379328E1 +4.193750000E2,5.584116633E1 +4.196280000E2,6.302854070E1 +4.199610000E2,6.640457067E1 +4.202240000E2,6.337314603E1 +4.205160000E2,5.904470105E1 +4.208200000E2,5.799078909E1 +4.210810000E2,5.975635789E1 +4.213260000E2,6.334088587E1 +4.215900000E2,5.849627934E1 +4.218550000E2,5.894070219E1 +4.221030000E2,5.961371776E1 +4.223550000E2,5.281830949E1 +4.225970000E2,4.892580508E1 +4.229130000E2,5.950646935E1 +4.232610000E2,6.303011111E1 +4.235630000E2,6.030515180E1 +4.238060000E2,5.832387195E1 +4.240560000E2,6.126571743E1 +4.243280000E2,5.961805347E1 +4.245710000E2,5.916464366E1 +4.248300000E2,6.404431780E1 +4.251020000E2,6.161392817E1 +4.253630000E2,6.303875005E1 +4.256110000E2,6.294329578E1 +4.258560000E2,6.495739223E1 +4.261620000E2,6.352748415E1 +4.265140000E2,6.360144813E1 +4.267650000E2,6.320185268E1 +4.270250000E2,6.598206760E1 +4.272910000E2,5.736158392E1 +4.275300000E2,5.632655800E1 +4.277760000E2,5.626186588E1 +4.280650000E2,5.992298879E1 +4.283460000E2,5.976814640E1 +4.285960000E2,5.617047451E1 +4.288540000E2,5.410240194E1 +4.291290000E2,5.524345530E1 +4.293550000E2,5.025485629E1 +4.297050000E2,5.094849624E1 +4.299600000E2,5.349595208E1 +4.302230000E2,5.668766668E1 +4.304690000E2,5.470073040E1 +4.307330000E2,5.808421323E1 +4.310240000E2,5.815977776E1 +4.312740000E2,5.751031291E1 +4.315190000E2,6.045600028E1 +4.318300000E2,5.967896339E1 +4.320980000E2,5.746835753E1 +4.324020000E2,5.874054152E1 +4.327010000E2,5.770096959E1 +4.330460000E2,5.851412717E1 +4.333220000E2,5.970473393E1 +4.335930000E2,6.024030776E1 +4.338530000E2,5.564089573E1 +4.341340000E2,5.328000065E1 +4.343790000E2,5.522789934E1 +4.346930000E2,5.271905966E1 +4.349910000E2,5.685384424E1 +4.352400000E2,5.751176106E1 +4.355350000E2,5.654290580E1 +4.357760000E2,5.976937629E1 +4.360780000E2,5.445311615E1 +4.363520000E2,5.460006243E1 +4.366010000E2,5.402958946E1 +4.369120000E2,5.611325616E1 +4.371660000E2,5.675575065E1 +4.374120000E2,5.605818704E1 +4.377070000E2,5.614720111E1 +4.379470000E2,5.596280974E1 +4.382450000E2,5.764305460E1 +4.384820000E2,6.015340826E1 +4.387240000E2,6.073594369E1 +4.390310000E2,5.846982437E1 +4.393110000E2,5.837342754E1 +4.396160000E2,5.758988397E1 +4.398810000E2,5.375393273E1 +4.401700000E2,5.590416510E1 +4.404180000E2,5.649267014E1 +4.406570000E2,5.809884175E1 +4.409200000E2,5.934788425E1 +4.411750000E2,5.883690392E1 +4.414270000E2,5.465512306E1 +4.416780000E2,5.456039720E1 +4.419260000E2,6.053551690E1 +4.422020000E2,5.446896121E1 +4.425270000E2,5.304300238E1 +4.428480000E2,5.413537656E1 +4.431230000E2,5.590535088E1 +4.433740000E2,5.516889265E1 +4.436180000E2,5.375803139E1 +4.439250000E2,5.440731706E1 +4.441670000E2,5.378894171E1 +4.444170000E2,5.676009311E1 +4.447160000E2,5.433224316E1 +4.449620000E2,5.431777666E1 +4.452100000E2,5.220353562E1 +4.454560000E2,5.525232641E1 +4.456950000E2,5.348687858E1 +4.459900000E2,5.571408478E1 +4.462320000E2,5.590054486E1 +4.464840000E2,5.627503595E1 +4.467390000E2,5.824548232E1 +4.469910000E2,5.637049423E1 +4.472460000E2,5.754096885E1 +4.474930000E2,5.335865942E1 +4.477890000E2,5.765888938E1 +4.480780000E2,6.102087464E1 +4.483520000E2,6.006145593E1 +4.486510000E2,5.685958774E1 +4.489610000E2,5.748149351E1 +4.492370000E2,5.709623916E1 +4.495040000E2,5.821496279E1 +4.497570000E2,5.970222946E1 +4.500030000E2,5.750976802E1 +4.502380000E2,5.796549321E1 +4.505370000E2,5.665777454E1 +4.508330000E2,5.605038109E1 +4.510750000E2,5.504306522E1 +4.513230000E2,5.112487870E1 +4.515900000E2,5.559150914E1 +4.518300000E2,5.656933458E1 +4.520810000E2,6.082180135E1 +4.524470000E2,5.774965281E1 +4.527120000E2,5.847728207E1 +4.529730000E2,5.711434047E1 +4.532810000E2,5.503285278E1 +4.535670000E2,5.614330822E1 +4.538610000E2,6.211492489E1 +4.541040000E2,6.003078695E1 +4.543760000E2,5.766611466E1 +4.546280000E2,5.912518267E1 +4.549300000E2,5.969489895E1 +4.551760000E2,5.509558621E1 +4.554320000E2,5.963291683E1 +4.556950000E2,6.194656842E1 +4.559980000E2,6.032793642E1 +4.562390000E2,5.874022110E1 +4.565060000E2,6.016749735E1 +4.567480000E2,5.985596964E1 +4.570070000E2,5.588678859E1 +4.572660000E2,5.541792762E1 +4.575660000E2,4.969164404E1 +4.578050000E2,4.976271573E1 +4.581060000E2,5.634137812E1 +4.583500000E2,5.321783082E1 +4.586280000E2,5.816393976E1 +4.588870000E2,5.817726916E1 +4.591860000E2,5.398220140E1 +4.594690000E2,5.572842498E1 +4.597270000E2,5.759574297E1 +4.600290000E2,5.492384706E1 +4.602790000E2,5.570826682E1 +4.605780000E2,5.619496661E1 +4.608690000E2,5.993990435E1 +4.611730000E2,6.185390750E1 +4.614300000E2,6.125031183E1 +4.617390000E2,6.047450440E1 +4.621070000E2,5.913093195E1 +4.623500000E2,6.032535990E1 +4.626490000E2,5.803726699E1 +4.628910000E2,5.968748294E1 +4.631850000E2,5.792594347E1 +4.634330000E2,5.623910190E1 +4.636850000E2,6.026318401E1 +4.639240000E2,6.002593060E1 +4.641990000E2,5.694813724E1 +4.644200000E2,5.456998819E1 +4.646660000E2,5.683591124E1 +4.649070000E2,5.893829862E1 +4.652630000E2,5.637983039E1 +4.655160000E2,5.571226470E1 +4.657720000E2,5.582065666E1 +4.660510000E2,5.436378979E1 +4.663550000E2,5.697364508E1 +4.666350000E2,5.716664070E1 +4.668800000E2,6.098104772E1 +4.671260000E2,5.932872997E1 +4.673960000E2,5.573089336E1 +4.676430000E2,5.791664461E1 +4.678890000E2,5.589855895E1 +4.681490000E2,6.359324433E1 +4.685010000E2,5.902079393E1 +4.687870000E2,6.085500324E1 +4.690180000E2,6.401116813E1 +4.693190000E2,6.157634911E1 +4.695830000E2,6.068297160E1 +4.698370000E2,5.867738322E1 +4.701080000E2,6.069776659E1 +4.703530000E2,5.904983802E1 +4.706060000E2,5.642725313E1 +4.708480000E2,5.600286970E1 +4.711080000E2,5.678564623E1 +4.714020000E2,5.139543439E1 +4.717220000E2,5.924511995E1 +4.720300000E2,5.309180697E1 +4.722790000E2,5.295961103E1 +4.725820000E2,5.448425692E1 +4.728350000E2,5.346047841E1 +4.731210000E2,5.563518239E1 +4.733630000E2,5.630991562E1 +4.736070000E2,5.519344442E1 +4.738520000E2,5.696356709E1 +4.741150000E2,5.721588368E1 +4.743810000E2,5.556082681E1 +4.746430000E2,5.453201409E1 +4.749610000E2,5.621559396E1 +4.752460000E2,6.170975330E1 +4.755640000E2,6.352753975E1 +4.758660000E2,5.818774343E1 +4.761780000E2,6.177058435E1 +4.764630000E2,5.829511769E1 +4.766910000E2,5.658732029E1 +4.769520000E2,6.006113158E1 +4.772530000E2,6.022385702E1 +4.775200000E2,5.965858240E1 +4.778410000E2,5.970326758E1 +4.780960000E2,5.911597661E1 +4.783440000E2,5.656338446E1 +4.786020000E2,5.723922467E1 +4.788680000E2,5.700163516E1 +4.791490000E2,6.083416080E1 +4.794510000E2,5.899425763E1 +4.797630000E2,5.820674449E1 +4.800620000E2,5.648898879E1 +4.803380000E2,5.465743937E1 +4.806090000E2,5.006847009E1 +4.809050000E2,5.870050130E1 +4.811580000E2,5.878066343E1 +4.814060000E2,5.929414686E1 +4.817070000E2,5.758425183E1 +4.819760000E2,5.151398214E1 +4.822410000E2,5.772956896E1 +4.824880000E2,5.913153701E1 +4.827710000E2,5.814746383E1 +4.830140000E2,6.018356701E1 +4.832870000E2,5.985078792E1 +4.835070000E2,6.081307149E1 +4.837500000E2,5.810932132E1 +4.840440000E2,5.700769218E1 +4.842880000E2,5.815119989E1 +4.845920000E2,5.595850943E1 +4.849330000E2,5.891167795E1 +4.851960000E2,5.413833723E1 +4.854760000E2,6.184122004E1 +4.857700000E2,6.074653742E1 +4.860130000E2,6.033024099E1 +4.862530000E2,5.218562994E1 +4.865560000E2,5.902882093E1 +4.868150000E2,6.397338635E1 +4.870790000E2,6.543155406E1 +4.873440000E2,6.181389827E1 +4.876070000E2,6.381240883E1 +4.878770000E2,6.121521197E1 +4.882210000E2,5.780293585E1 +4.884640000E2,5.941826112E1 +4.887100000E2,6.118399944E1 +4.889830000E2,6.000089150E1 +4.892940000E2,5.873163787E1 +4.895350000E2,5.943116280E1 +4.897770000E2,5.867927357E1 +4.900230000E2,6.190584219E1 +4.903270000E2,6.313044892E1 +4.905550000E2,6.096660510E1 +4.907970000E2,5.773464228E1 +4.911090000E2,5.720144266E1 +4.914750000E2,5.797465536E1 +4.917410000E2,6.063197812E1 +4.920040000E2,5.799562897E1 +4.922950000E2,5.391853563E1 +4.925940000E2,6.053973121E1 +4.928320000E2,5.781822977E1 +4.931250000E2,6.541242849E1 +4.933660000E2,6.151252976E1 +4.936620000E2,5.962569242E1 +4.939140000E2,6.114162989E1 +4.941750000E2,6.074296596E1 +4.944160000E2,5.738425867E1 +4.947510000E2,6.084173002E1 +4.950140000E2,5.911448476E1 +4.953100000E2,6.076832164E1 +4.955530000E2,6.357047625E1 +4.958480000E2,6.344590866E1 +4.960850000E2,6.154350148E1 +4.963870000E2,5.815666478E1 +4.966770000E2,5.862350251E1 +4.969720000E2,5.162851816E1 +4.972640000E2,5.887916548E1 +4.975020000E2,6.130693279E1 +4.977480000E2,6.164914583E1 +4.980300000E2,5.689153252E1 +4.983240000E2,6.054571109E1 +4.985610000E2,5.779234792E1 +4.987980000E2,6.281334084E1 +4.991290000E2,6.074883772E1 +4.994230000E2,6.344972933E1 +4.996620000E2,6.040546490E1 +4.999570000E2,6.143019571E1 +5.002020000E2,6.117826214E1 +5.004980000E2,6.217883653E1 +5.007380000E2,6.294102819E1 +5.010930000E2,6.516475449E1 +5.013550000E2,6.119184016E1 +5.016670000E2,6.096554209E1 +5.019390000E2,6.197647057E1 +5.022530000E2,6.186754720E1 +5.025630000E2,5.954982776E1 +5.028510000E2,6.115486405E1 +5.031440000E2,6.348254173E1 +5.033820000E2,5.960570527E1 +5.036780000E2,5.977682583E1 +5.039180000E2,5.709696054E1 +5.042580000E2,6.265263203E1 +5.045140000E2,6.166583393E1 +5.047590000E2,6.184451596E1 +5.050170000E2,6.196658471E1 +5.053150000E2,6.014630927E1 +5.055610000E2,6.055201466E1 +5.058690000E2,6.189129858E1 +5.062120000E2,6.557808579E1 +5.064770000E2,6.080176744E1 +5.067370000E2,6.164107472E1 +5.069870000E2,6.497302078E1 +5.072490000E2,6.320126990E1 +5.076210000E2,6.073801439E1 +5.078780000E2,5.612097300E1 +5.081420000E2,5.978501024E1 +5.084360000E2,6.061444996E1 +5.086860000E2,6.272142993E1 +5.089270000E2,6.250458760E1 +5.092250000E2,5.860749180E1 +5.094720000E2,6.368373725E1 +5.097760000E2,6.005985592E1 +5.100780000E2,5.959557057E1 +5.103410000E2,6.085764000E1 +5.106360000E2,6.210563273E1 +5.109960000E2,6.125336704E1 +5.112590000E2,5.627814405E1 +5.115470000E2,6.253958528E1 +5.118480000E2,6.261683940E1 +5.120990000E2,5.782347554E1 +5.123560000E2,6.181201679E1 +5.126370000E2,6.425542150E1 +5.129400000E2,6.148973489E1 +5.132300000E2,6.230215374E1 +5.134720000E2,6.332855968E1 +5.137620000E2,5.875203916E1 +5.140950000E2,6.043073123E1 +5.143340000E2,5.829778385E1 +5.146280000E2,6.530539120E1 +5.148660000E2,5.725439078E1 +5.151580000E2,6.255661351E1 +5.153960000E2,6.412193683E1 +5.156410000E2,6.315775814E1 +5.158840000E2,6.025521775E1 +5.161460000E2,5.892698587E1 +5.164080000E2,5.956507822E1 +5.166610000E2,6.162757540E1 +5.169960000E2,6.009082976E1 +5.173360000E2,5.999682475E1 +5.176380000E2,6.121463264E1 +5.178750000E2,5.929809726E1 +5.181460000E2,5.746668369E1 +5.183810000E2,5.919113180E1 +5.186360000E2,5.827917213E1 +5.189280000E2,5.902314388E1 +5.192310000E2,6.116063950E1 +5.195310000E2,6.026149556E1 +5.198180000E2,5.851929656E1 +5.200920000E2,5.750929671E1 +5.204160000E2,5.729942637E1 +5.207470000E2,5.472104161E1 +5.210390000E2,6.169397748E1 +5.213450000E2,6.081589597E1 +5.216480000E2,6.278728872E1 +5.219550000E2,6.266319096E1 +5.222160000E2,6.478840582E1 +5.224820000E2,6.255888661E1 +5.227330000E2,6.119451713E1 +5.229970000E2,6.244953097E1 +5.232800000E2,6.000703556E1 +5.236020000E2,5.885323025E1 +5.239510000E2,5.826073845E1 +5.242570000E2,5.807287072E1 +5.245200000E2,5.931641295E1 +5.247800000E2,5.775994158E1 +5.250310000E2,6.167249992E1 +5.253010000E2,6.027694641E1 +5.255430000E2,6.329659774E1 +5.258240000E2,6.254377160E1 +5.261330000E2,6.489975363E1 +5.263840000E2,5.999325642E1 +5.266440000E2,5.885077446E1 +5.268920000E2,6.439829299E1 +5.272450000E2,6.165608373E1 +5.275110000E2,5.418048629E1 +5.277700000E2,5.656005066E1 +5.280170000E2,6.215252288E1 +5.283170000E2,5.743407158E1 +5.285650000E2,5.831214783E1 +5.288200000E2,6.066735547E1 +5.290820000E2,5.994603081E1 +5.293240000E2,5.951550591E1 +5.295810000E2,6.264700953E1 +5.298380000E2,5.736628274E1 +5.301360000E2,5.590406638E1 +5.304530000E2,6.041033291E1 +5.307000000E2,5.968691140E1 +5.309950000E2,5.730835182E1 +5.312390000E2,5.823026311E1 +5.315470000E2,5.871167442E1 +5.318430000E2,5.990765833E1 +5.321400000E2,6.387020611E1 +5.324510000E2,6.077699448E1 +5.326980000E2,5.895294298E1 +5.329820000E2,6.041997988E1 +5.333050000E2,5.806877757E1 +5.336110000E2,5.682362418E1 +5.340220000E2,5.915478638E1 +5.342790000E2,6.110946170E1 +5.345430000E2,5.735857105E1 +5.348060000E2,5.684014045E1 +5.350480000E2,6.043627860E1 +5.353500000E2,5.982929159E1 +5.356290000E2,5.986217314E1 +5.358770000E2,5.677131614E1 +5.361310000E2,5.763848566E1 +5.363810000E2,6.142463983E1 +5.366730000E2,5.634211854E1 +5.369290000E2,5.547608220E1 +5.372430000E2,5.920768747E1 +5.375170000E2,6.113406656E1 +5.377700000E2,6.208964505E1 +5.380710000E2,6.100572025E1 +5.383260000E2,6.352283467E1 +5.386320000E2,5.898993907E1 +5.389570000E2,5.503782412E1 +5.392560000E2,5.663453376E1 +5.395360000E2,6.406828344E1 +5.398060000E2,5.890955595E1 +5.400700000E2,6.046868424E1 +5.403380000E2,5.979639772E1 +5.406170000E2,5.838685694E1 +5.409120000E2,5.933573087E1 +5.411500000E2,5.970536072E1 +5.414430000E2,5.461931777E1 +5.417380000E2,5.891969668E1 +5.419780000E2,6.086182172E1 +5.422730000E2,5.706230292E1 +5.425150000E2,6.002937875E1 +5.428150000E2,5.733734968E1 +5.430520000E2,5.791730719E1 +5.433430000E2,5.451667439E1 +5.436740000E2,5.601232928E1 +5.439430000E2,6.067749331E1 +5.441960000E2,6.044443396E1 +5.445120000E2,6.332642539E1 +5.448320000E2,6.369907597E1 +5.451010000E2,6.327412880E1 +5.453640000E2,6.380509737E1 +5.456090000E2,6.199528902E1 +5.458550000E2,5.905332967E1 +5.461530000E2,5.748064798E1 +5.463920000E2,5.793139247E1 +5.466900000E2,5.931551966E1 +5.470480000E2,6.345498755E1 +5.473610000E2,5.881486603E1 +5.476220000E2,5.928200098E1 +5.478810000E2,5.577309321E1 +5.481470000E2,5.875325885E1 +5.483980000E2,6.007409743E1 +5.486490000E2,6.070612531E1 +5.488940000E2,5.934549940E1 +5.491520000E2,6.170511636E1 +5.494020000E2,6.376886521E1 +5.497010000E2,6.406587518E1 +5.499360000E2,6.365684538E1 +5.503130000E2,6.009406633E1 +5.505850000E2,6.014270409E1 +5.508500000E2,5.879153887E1 +5.511470000E2,5.883782525E1 +5.513760000E2,5.773432280E1 +5.516350000E2,5.966648889E1 +5.518940000E2,5.472606108E1 +5.521930000E2,5.682429497E1 +5.524670000E2,5.619181968E1 +5.527770000E2,5.997719307E1 +5.530460000E2,5.879335465E1 +5.533410000E2,5.983416170E1 +5.537120000E2,5.957041909E1 +5.539420000E2,5.952828793E1 +5.542510000E2,5.971645274E1 +5.545000000E2,6.419337448E1 +5.547730000E2,6.634363344E1 +5.550770000E2,6.285856457E1 +5.553760000E2,5.654671197E1 +5.556440000E2,5.530754918E1 +5.558640000E2,5.889159880E1 +5.561110000E2,6.213947417E1 +5.563520000E2,6.860243311E1 +5.566480000E2,6.647018679E1 +5.569110000E2,6.420604516E1 +5.571650000E2,6.703462967E1 +5.574140000E2,6.648783593E1 +5.576540000E2,6.634001782E1 +5.579350000E2,6.293734135E1 +5.581770000E2,6.205918741E1 +5.584760000E2,5.247262167E1 +5.587220000E2,5.338734169E1 +5.589670000E2,5.662276325E1 +5.592110000E2,5.533465633E1 +5.595080000E2,5.854271946E1 +5.597740000E2,5.660649413E1 +5.600260000E2,6.333844075E1 +5.602860000E2,6.255943536E1 +5.605830000E2,5.392304486E1 +5.608700000E2,5.760897506E1 +5.611660000E2,5.713086887E1 +5.614070000E2,5.720157535E1 +5.617060000E2,5.026592539E1 +5.619510000E2,5.140995344E1 +5.621950000E2,5.663266073E1 +5.624370000E2,5.202695689E1 +5.627360000E2,6.084568668E1 +5.630550000E2,6.179643015E1 +5.632960000E2,5.833759539E1 +5.635420000E2,5.518782498E1 +5.638400000E2,6.578433315E1 +5.640880000E2,5.706187099E1 +5.643850000E2,5.456571992E1 +5.646300000E2,5.536479424E1 +5.649270000E2,5.930541070E1 +5.651540000E2,6.023199994E1 +5.653960000E2,5.612469871E1 +5.656980000E2,5.462007842E1 +5.659410000E2,5.278259804E1 +5.662890000E2,6.064478329E1 +5.666290000E2,5.682964802E1 +5.669030000E2,5.787828261E1 +5.671980000E2,5.712595091E1 +5.674890000E2,5.729764361E1 +5.677450000E2,5.241850056E1 +5.679980000E2,5.377155525E1 +5.682380000E2,5.485418547E1 +5.684830000E2,5.503746434E1 +5.687810000E2,5.398954643E1 +5.690230000E2,5.401913169E1 +5.693270000E2,5.953896215E1 +5.695680000E2,5.626247467E1 +5.698640000E2,6.040491706E1 +5.701050000E2,5.781813181E1 +5.703620000E2,5.733744349E1 +5.706600000E2,5.669032177E1 +5.709140000E2,5.453731954E1 +5.711580000E2,6.235364316E1 +5.714280000E2,5.958044055E1 +5.716860000E2,5.875696014E1 +5.719750000E2,5.570465139E1 +5.722310000E2,4.865236791E1 +5.725580000E2,5.257975627E1 +5.727900000E2,4.975389893E1 +5.730890000E2,5.658508958E1 +5.733660000E2,5.542284648E1 +5.735960000E2,5.536199936E1 +5.738990000E2,5.813474916E1 +5.741540000E2,5.417788207E1 +5.744370000E2,5.704170918E1 +5.746710000E2,5.736828455E1 +5.749280000E2,5.450874678E1 +5.751790000E2,5.610950442E1 +5.754890000E2,5.919887582E1 +5.758690000E2,5.780639378E1 +5.761700000E2,5.709220641E1 +5.764190000E2,5.815359781E1 +5.767060000E2,5.734155824E1 +5.769500000E2,5.925323086E1 +5.772430000E2,6.084767221E1 +5.775370000E2,5.852024889E1 +5.777780000E2,5.822649765E1 +5.780770000E2,5.829089322E1 +5.783770000E2,5.915481192E1 +5.786460000E2,5.996430642E1 +5.789780000E2,6.016421415E1 +5.792520000E2,6.221052482E1 +5.795090000E2,5.533993101E1 +5.798230000E2,6.537257407E1 +5.801220000E2,6.068836920E1 +5.803770000E2,5.728273812E1 +5.806510000E2,5.648369901E1 +5.809070000E2,5.397363349E1 +5.811690000E2,5.755294689E1 +5.814510000E2,5.957149991E1 +5.816900000E2,5.963092636E1 +5.820650000E2,6.778811076E1 +5.823240000E2,6.247529404E1 +5.825840000E2,6.073516327E1 +5.828380000E2,6.039356998E1 +5.830970000E2,5.764504824E1 +5.833990000E2,6.041396176E1 +5.836470000E2,6.355942860E1 +5.838990000E2,5.785560268E1 +5.841390000E2,6.060017525E1 +5.844440000E2,6.032069521E1 +5.847010000E2,5.760371100E1 +5.849440000E2,5.491620812E1 +5.851990000E2,5.957978671E1 +5.855370000E2,6.103184032E1 +5.857970000E2,5.896875350E1 +5.861120000E2,6.008190546E1 +5.863990000E2,5.687378544E1 +5.866450000E2,5.874294643E1 +5.869410000E2,5.870806017E1 +5.871860000E2,5.809143232E1 +5.874740000E2,5.847828699E1 +5.877850000E2,5.846232778E1 +5.880500000E2,5.755876921E1 +5.883650000E2,5.609032758E1 +5.887050000E2,5.685283394E1 +5.889730000E2,5.945975832E1 +5.892710000E2,6.114741701E1 +5.895110000E2,6.316132147E1 +5.898100000E2,6.715155367E1 +5.900480000E2,6.367866992E1 +5.903470000E2,5.131949120E1 +5.905900000E2,5.646494575E1 +5.908880000E2,6.096218752E1 +5.911270000E2,6.089171796E1 +5.913720000E2,6.319522071E1 +5.916410000E2,6.016553529E1 +5.920560000E2,5.915189166E1 +5.923330000E2,5.776862186E1 +5.925640000E2,5.840366445E1 +5.927890000E2,5.978914182E1 +5.930440000E2,6.058699711E1 +5.932650000E2,6.012895387E1 +5.935140000E2,6.295025578E1 +5.937520000E2,6.280196012E1 +5.940110000E2,6.194014009E1 +5.943340000E2,6.483906300E1 +5.945870000E2,5.918257578E1 +5.948380000E2,5.620333930E1 +5.951900000E2,6.323403421E1 +5.954240000E2,6.183177681E1 +5.956620000E2,6.120300936E1 +5.959650000E2,5.836925111E1 +5.961890000E2,6.106023171E1 +5.964920000E2,6.153658324E1 +5.967310000E2,6.490772593E1 +5.969960000E2,6.274228676E1 +5.972520000E2,6.139008510E1 +5.975050000E2,6.281232833E1 +5.978180000E2,6.254982632E1 +5.980890000E2,6.205794184E1 +5.983900000E2,6.438771503E1 +5.986230000E2,6.052772463E1 +5.988520000E2,6.375966703E1 +5.991380000E2,5.869985301E1 +5.993860000E2,6.050357712E1 +5.996630000E2,5.547835745E1 +5.999280000E2,5.400421666E1 +6.001960000E2,5.668252186E1 +6.004880000E2,6.001970320E1 +6.007680000E2,6.056987745E1 +6.010550000E2,6.461211967E1 +6.014090000E2,6.399838195E1 +6.016840000E2,5.485596323E1 +6.019450000E2,5.731519087E1 +6.022080000E2,6.691878914E1 +6.024720000E2,6.479201876E1 +6.027260000E2,6.412847214E1 +6.029760000E2,6.025795068E1 +6.032190000E2,6.098133491E1 +6.035120000E2,5.689387521E1 +6.038040000E2,5.639928101E1 +6.041550000E2,5.328068252E1 +6.044370000E2,5.639829798E1 +6.046770000E2,5.892330560E1 +6.049510000E2,5.315638413E1 +6.051900000E2,5.740260439E1 +6.054620000E2,5.339391440E1 +6.057500000E2,5.310371918E1 +6.060710000E2,5.460903952E1 +6.063050000E2,5.407304270E1 +6.065540000E2,5.870790541E1 +6.068060000E2,5.576782972E1 +6.070790000E2,5.976954147E1 +6.074640000E2,6.181180531E1 +6.077240000E2,6.194364733E1 +6.080150000E2,6.794225297E1 +6.082590000E2,6.236601361E1 +6.085470000E2,6.002700779E1 +6.088450000E2,5.971993236E1 +6.090930000E2,5.954735434E1 +6.093460000E2,5.907202371E1 +6.095920000E2,5.993658420E1 +6.098910000E2,5.530332259E1 +6.101850000E2,5.531802018E1 +6.104220000E2,5.376885939E1 +6.107780000E2,5.735355871E1 +6.110210000E2,5.868610156E1 +6.112710000E2,5.312122754E1 +6.115670000E2,5.745102631E1 +6.118550000E2,5.535536940E1 +6.121540000E2,5.088728731E1 +6.123960000E2,5.266907791E1 +6.126860000E2,5.386493253E1 +6.130010000E2,5.670623073E1 +6.132810000E2,5.563278655E1 +6.135150000E2,5.267172926E1 +6.138540000E2,5.386148816E1 +6.141880000E2,5.716468210E1 +6.144880000E2,5.526918781E1 +6.147190000E2,5.659553915E1 +6.149610000E2,5.648341007E1 +6.152730000E2,5.711745846E1 +6.155520000E2,5.918800114E1 +6.158010000E2,5.642548609E1 +6.161000000E2,5.635896926E1 +6.163480000E2,5.899225051E1 +6.166180000E2,5.374343244E1 +6.168690000E2,4.891042404E1 +6.172050000E2,5.065835680E1 +6.174560000E2,5.685264653E1 +6.177340000E2,5.429270039E1 +6.179930000E2,5.499548313E1 +6.182940000E2,5.407177565E1 +6.185300000E2,5.356533799E1 +6.188300000E2,5.378190643E1 +6.191140000E2,5.189020817E1 +6.193870000E2,5.046647494E1 +6.196450000E2,5.501107364E1 +6.198910000E2,5.798814538E1 +6.201660000E2,5.360844474E1 +6.205080000E2,5.353935610E1 +6.208080000E2,5.620189936E1 +6.210820000E2,6.216008765E1 +6.213360000E2,5.767015155E1 +6.216520000E2,6.210101060E1 +6.219320000E2,5.928042926E1 +6.221800000E2,6.394496555E1 +6.224980000E2,5.872213561E1 +6.227430000E2,5.927091626E1 +6.230010000E2,5.235592166E1 +6.232430000E2,6.313120608E1 +6.235470000E2,6.005436888E1 +6.238480000E2,5.999836557E1 +6.240930000E2,5.879748041E1 +6.243920000E2,5.978277378E1 +6.246440000E2,6.050724590E1 +6.249480000E2,6.282777276E1 +6.252520000E2,6.080897043E1 +6.255640000E2,5.889462949E1 +6.258270000E2,5.550476615E1 +6.260730000E2,5.586785505E1 +6.263620000E2,6.576560120E1 +6.266590000E2,6.102361259E1 +6.270050000E2,6.110507706E1 +6.272870000E2,5.753592100E1 +6.275410000E2,6.297666729E1 +6.278490000E2,6.037594793E1 +6.281160000E2,5.849898506E1 +6.284180000E2,6.165631601E1 +6.287090000E2,6.096774109E1 +6.289510000E2,6.176590968E1 +6.292460000E2,5.947061017E1 +6.294820000E2,6.109202024E1 +6.297790000E2,5.322559935E1 +6.301160000E2,4.971181861E1 +6.303880000E2,5.533921521E1 +6.307250000E2,5.478410742E1 +6.310240000E2,5.647795083E1 +6.313200000E2,5.797504265E1 +6.315690000E2,5.403019222E1 +6.318640000E2,5.301910781E1 +6.321010000E2,5.096544207E1 +6.324030000E2,5.324435941E1 +6.326360000E2,5.447050361E1 +6.328960000E2,5.932781903E1 +6.331500000E2,5.967228428E1 +6.334640000E2,6.319489971E1 +6.337810000E2,5.820271574E1 +6.340710000E2,5.910289699E1 +6.343170000E2,5.681937370E1 +6.346260000E2,5.582227275E1 +6.349350000E2,5.745831651E1 +6.352100000E2,5.504019385E1 +6.354620000E2,5.072303887E1 +6.357190000E2,5.366082959E1 +6.359690000E2,5.380227314E1 +6.362560000E2,4.818205454E1 +6.365090000E2,5.989908626E1 +6.368780000E2,5.659012846E1 +6.371610000E2,5.593157997E1 +6.374460000E2,5.135237935E1 +6.377000000E2,5.687788515E1 +6.379550000E2,5.943975502E1 +6.382630000E2,6.290957992E1 +6.385230000E2,5.827099811E1 +6.387780000E2,5.686391746E1 +6.390620000E2,5.771790911E1 +6.393200000E2,5.390066131E1 +6.395830000E2,5.358231960E1 +6.398480000E2,5.564565007E1 +6.401490000E2,5.205482155E1 +6.404200000E2,5.852280051E1 +6.407340000E2,4.836326193E1 +6.409980000E2,5.905115701E1 +6.412560000E2,5.622349390E1 +6.415040000E2,5.891737338E1 +6.417460000E2,5.749377856E1 +6.420310000E2,5.414095183E1 +6.422680000E2,5.482109112E1 +6.425170000E2,5.202942051E1 +6.428000000E2,4.903409276E1 +6.431250000E2,5.495098254E1 +6.434650000E2,5.777911761E1 +6.437680000E2,5.329076638E1 +6.440080000E2,5.886592322E1 +6.443070000E2,5.661637111E1 +6.445560000E2,5.459133399E1 +6.448230000E2,4.858613706E1 +6.450990000E2,5.642020356E1 +6.453590000E2,5.634614530E1 +6.456240000E2,5.769024626E1 +6.458900000E2,6.037646239E1 +6.461470000E2,5.712013563E1 +6.464260000E2,5.393237723E1 +6.467570000E2,5.443825449E1 +6.469850000E2,5.464133184E1 +6.472460000E2,5.185343249E1 +6.475170000E2,5.670688718E1 +6.477900000E2,5.808659132E1 +6.480150000E2,5.879711687E1 +6.483250000E2,5.860991669E1 +6.485730000E2,5.600484597E1 +6.488230000E2,5.291438286E1 +6.491020000E2,5.869236753E1 +6.493260000E2,5.826316690E1 +6.496250000E2,5.619306699E1 +6.499850000E2,6.085970714E1 +6.502400000E2,6.051231588E1 +6.505400000E2,6.096601072E1 +6.507990000E2,6.197068990E1 +6.511180000E2,6.520817743E1 +6.513810000E2,6.377577246E1 +6.516860000E2,6.105485617E1 +6.519940000E2,5.890751001E1 +6.522910000E2,5.911253604E1 +6.525370000E2,6.291937986E1 +6.528540000E2,6.252638881E1 +6.532210000E2,6.337356348E1 +6.535270000E2,5.894334263E1 +6.537830000E2,5.754939005E1 +6.540930000E2,5.500698560E1 +6.543880000E2,5.014350898E1 +6.546880000E2,5.646260920E1 +6.549870000E2,5.951282585E1 +6.552920000E2,6.099782791E1 +6.555480000E2,6.065538365E1 +6.558100000E2,6.827371953E1 +6.560790000E2,6.035931154E1 +6.563820000E2,6.267306134E1 +6.566350000E2,5.826452213E1 +6.568970000E2,6.092938143E1 +6.572010000E2,6.534130041E1 +6.575130000E2,6.111837506E1 +6.577770000E2,5.826481723E1 +6.580330000E2,5.918147323E1 +6.582980000E2,6.100230752E1 +6.585510000E2,6.302217459E1 +6.588060000E2,5.754956715E1 +6.591080000E2,6.111201710E1 +6.593520000E2,6.017410469E1 +6.597040000E2,6.031944923E1 +6.599450000E2,5.943575512E1 +6.602120000E2,5.868776340E1 +6.605570000E2,5.940543513E1 +6.608500000E2,5.886327816E1 +6.610920000E2,5.770522648E1 +6.613840000E2,5.442777508E1 +6.616200000E2,5.394232060E1 +6.619220000E2,5.856638842E1 +6.622160000E2,5.742664400E1 +6.624600000E2,5.472498345E1 +6.627560000E2,5.672985390E1 +6.629770000E2,5.834702318E1 +6.632250000E2,5.907602823E1 +6.634810000E2,5.873031221E1 +6.637670000E2,5.757130737E1 +6.640040000E2,5.572185824E1 +6.643070000E2,5.959142979E1 +6.645480000E2,5.851623707E1 +6.648520000E2,5.856887935E1 +6.650940000E2,6.397218192E1 +6.653890000E2,5.963692586E1 +6.656210000E2,5.934207027E1 +6.659580000E2,5.667856430E1 +6.662640000E2,5.811017468E1 +6.665550000E2,5.505265787E1 +6.667990000E2,5.558350894E1 +6.671320000E2,6.063017800E1 +6.674000000E2,5.568411381E1 +6.676510000E2,5.981422062E1 +6.679580000E2,5.723024768E1 +6.682820000E2,5.036028104E1 +6.685240000E2,5.199205823E1 +6.687970000E2,5.367328475E1 +6.691280000E2,5.936914884E1 +6.693940000E2,5.657797691E1 +6.696490000E2,6.065879377E1 +6.699270000E2,5.657054255E1 +6.702000000E2,5.655716576E1 +6.704770000E2,5.823562265E1 +6.707350000E2,6.065030224E1 +6.710140000E2,6.110776530E1 +6.712700000E2,5.714357796E1 +6.715170000E2,5.604236164E1 +6.717930000E2,6.041748871E1 +6.721240000E2,6.019765334E1 +6.724270000E2,5.928602786E1 +6.727750000E2,5.973060669E1 +6.730710000E2,6.059869751E1 +6.733250000E2,6.116850166E1 +6.736400000E2,6.145214709E1 +6.738890000E2,6.020118097E1 +6.741670000E2,6.048579637E1 +6.744720000E2,6.225337088E1 +6.747550000E2,5.853636068E1 +6.750030000E2,5.999204871E1 +6.752840000E2,5.433989895E1 +6.755100000E2,5.847308735E1 +6.758420000E2,5.913726954E1 +6.760830000E2,6.049449503E1 +6.763830000E2,5.545572399E1 +6.766370000E2,6.246077536E1 +6.768920000E2,6.029598130E1 +6.771340000E2,6.005864514E1 +6.774230000E2,6.582269585E1 +6.776700000E2,6.255104294E1 +6.779140000E2,6.623711836E1 +6.781740000E2,6.684819787E1 +6.784850000E2,6.877250850E1 +6.787420000E2,6.157084767E1 +6.789860000E2,6.054068573E1 +6.793290000E2,6.069583213E1 +6.795810000E2,6.124898856E1 +6.798240000E2,6.136691849E1 +6.800900000E2,6.035594762E1 +6.803920000E2,5.654106541E1 +6.806920000E2,5.587565134E1 +6.809940000E2,5.642134155E1 +6.813020000E2,5.749983358E1 +6.815830000E2,5.576151961E1 +6.818120000E2,5.714589311E1 +6.820580000E2,5.969510914E1 +6.823020000E2,5.824123453E1 +6.825680000E2,5.779273115E1 +6.828630000E2,5.699644891E1 +6.831010000E2,5.900876644E1 +6.833500000E2,6.335540424E1 +6.835940000E2,6.280432027E1 +6.838340000E2,6.194675910E1 +6.841290000E2,5.801082069E1 +6.843650000E2,5.652506879E1 +6.846570000E2,5.895404856E1 +6.848910000E2,5.873705448E1 +6.851950000E2,5.589704153E1 +6.855380000E2,5.379672362E1 +6.857910000E2,6.287056471E1 +6.860900000E2,6.081817617E1 +6.863340000E2,6.807593043E1 +6.866320000E2,5.604389930E1 +6.868800000E2,6.712075434E1 +6.871750000E2,6.290238552E1 +6.874740000E2,6.473105179E1 +6.877330000E2,5.873835234E1 +6.880180000E2,5.800563858E1 +6.882620000E2,5.540095032E1 +6.885810000E2,6.197881428E1 +6.888280000E2,5.541258482E1 +6.890890000E2,5.558277465E1 +6.894010000E2,4.965923685E1 +6.897080000E2,4.860020107E1 +6.899730000E2,5.608167548E1 +6.902300000E2,5.381305593E1 +6.904990000E2,6.079286270E1 +6.908000000E2,6.446965644E1 +6.910380000E2,6.556266140E1 +6.913400000E2,5.418444209E1 +6.916350000E2,5.205102491E1 +6.919820000E2,5.812981404E1 +6.922410000E2,6.500705260E1 +6.925070000E2,6.149947285E1 +6.927750000E2,5.695315316E1 +6.930870000E2,5.775854948E1 +6.933870000E2,6.523399833E1 +6.936300000E2,6.692630865E1 +6.939270000E2,5.793447825E1 +6.942230000E2,5.746396110E1 +6.944770000E2,6.017975210E1 +6.947150000E2,5.956759439E1 +6.950320000E2,6.391288151E1 +6.953110000E2,6.484415086E1 +6.955650000E2,6.664209540E1 +6.958410000E2,6.746668632E1 +6.961050000E2,5.775664920E1 +6.964050000E2,6.383035698E1 +6.967020000E2,5.816763892E1 +6.969600000E2,6.921190909E1 +6.972400000E2,6.165047809E1 +6.975080000E2,5.666810057E1 +6.977540000E2,6.417546300E1 +6.980020000E2,5.788971486E1 +6.982730000E2,5.486922606E1 +6.985850000E2,5.576434723E1 +6.988820000E2,5.548978795E1 +6.991460000E2,5.886820316E1 +6.993970000E2,6.226406326E1 +6.996480000E2,5.601534080E1 +6.999400000E2,5.901385758E1 +7.002040000E2,5.720709772E1 +7.005120000E2,6.318399213E1 +7.007580000E2,6.338981741E1 +7.010170000E2,6.747312486E1 +7.012670000E2,5.788999692E1 +7.015450000E2,4.434465006E1 +7.018710000E2,6.439013955E1 +7.021480000E2,5.375342664E1 +7.023700000E2,6.398282027E1 +7.026160000E2,5.857909138E1 +7.029130000E2,5.670439641E1 +7.031590000E2,5.749786365E1 +7.034320000E2,5.181710985E1 +7.036770000E2,5.871535868E1 +7.039520000E2,5.470297527E1 +7.042240000E2,5.771822323E1 +7.044750000E2,5.236261523E1 +7.047130000E2,5.595332709E1 +7.050480000E2,5.576748295E1 +7.053040000E2,5.334869600E1 +7.055590000E2,5.337806625E1 +7.058180000E2,5.499892680E1 +7.060900000E2,5.490963435E1 +7.063980000E2,5.551078540E1 +7.066680000E2,5.358868238E1 +7.069300000E2,5.203182642E1 +7.071760000E2,5.771053387E1 +7.074630000E2,5.175835182E1 +7.077440000E2,5.402526598E1 +7.080400000E2,5.754717994E1 +7.083470000E2,6.103880587E1 +7.086400000E2,6.284824916E1 +7.088840000E2,6.674666322E1 +7.092010000E2,6.194114278E1 +7.094980000E2,5.796289911E1 +7.097580000E2,5.475547679E1 +7.100170000E2,5.804024708E1 +7.102650000E2,5.606423134E1 +7.105550000E2,5.319247933E1 +7.107930000E2,5.625991375E1 +7.110940000E2,5.589539698E1 +7.114730000E2,6.073460415E1 +7.117930000E2,6.208342045E1 +7.120530000E2,6.335117127E1 +7.123290000E2,5.821275565E1 +7.126280000E2,5.793160357E1 +7.128780000E2,5.509944006E1 +7.131790000E2,5.578357696E1 +7.134760000E2,5.632534225E1 +7.137350000E2,5.466315647E1 +7.140450000E2,5.914530785E1 +7.143020000E2,6.280432125E1 +7.146020000E2,6.333348539E1 +7.149790000E2,5.698482465E1 +7.152920000E2,5.474810308E1 +7.155370000E2,5.417920207E1 +7.157880000E2,6.392184792E1 +7.160720000E2,6.565549591E1 +7.163130000E2,6.082705714E1 +7.166120000E2,5.816285927E1 +7.168430000E2,5.809201859E1 +7.170930000E2,6.016105207E1 +7.173350000E2,5.162287691E1 +7.176230000E2,5.754317879E1 +7.179310000E2,6.166304542E1 +7.181770000E2,6.177004553E1 +7.184320000E2,6.274574776E1 +7.186900000E2,6.104994734E1 +7.189920000E2,5.735301480E1 +7.192340000E2,5.830205645E1 +7.194890000E2,6.212782217E1 +7.197420000E2,5.467685243E1 +7.200420000E2,5.313970583E1 +7.202920000E2,5.278680647E1 +7.205360000E2,5.474141102E1 +7.209140000E2,6.241771654E1 +7.212600000E2,6.394594172E1 +7.215560000E2,6.348358734E1 +7.217980000E2,6.112734048E1 +7.220450000E2,6.226451183E1 +7.222930000E2,6.534082516E1 +7.225960000E2,6.114019283E1 +7.228390000E2,6.421228964E1 +7.231230000E2,6.814847387E1 +7.233690000E2,6.275446304E1 +7.236190000E2,6.679153921E1 +7.239280000E2,6.537583699E1 +7.241850000E2,6.212976374E1 +7.245300000E2,6.553556935E1 +7.248220000E2,5.834030427E1 +7.250930000E2,5.992153646E1 +7.253380000E2,5.595099295E1 +7.256370000E2,5.720822528E1 +7.258800000E2,5.423516872E1 +7.261770000E2,5.906139652E1 +7.264140000E2,6.204477132E1 +7.267140000E2,6.368823365E1 +7.269550000E2,6.513672214E1 +7.272500000E2,6.364997971E1 +7.275370000E2,6.269941998E1 +7.278570000E2,5.948773609E1 +7.281020000E2,5.789544973E1 +7.283740000E2,6.305528689E1 +7.286400000E2,6.245554089E1 +7.289690000E2,6.033221518E1 +7.292310000E2,5.940071821E1 +7.294970000E2,6.176178101E1 +7.298020000E2,5.355172623E1 +7.300580000E2,5.535292187E1 +7.303150000E2,5.274398781E1 +7.305750000E2,5.399957194E1 +7.308780000E2,5.819691646E1 +7.312070000E2,5.434897588E1 +7.315090000E2,6.041787911E1 +7.317850000E2,5.617860881E1 +7.320560000E2,5.558770875E1 +7.323290000E2,5.151264449E1 +7.325860000E2,5.612143969E1 +7.328800000E2,5.405001557E1 +7.331120000E2,5.455354216E1 +7.334090000E2,5.716252136E1 +7.337070000E2,6.416157102E1 +7.339910000E2,6.098010142E1 +7.343020000E2,6.194029449E1 +7.346500000E2,6.091313037E1 +7.349540000E2,5.846954669E1 +7.352410000E2,5.743489407E1 +7.355320000E2,5.872669957E1 +7.357800000E2,5.859080967E1 +7.360560000E2,6.053269456E1 +7.363220000E2,6.117884455E1 +7.366590000E2,5.809887850E1 +7.369420000E2,5.453224539E1 +7.372510000E2,5.639337460E1 +7.375040000E2,5.373613181E1 +7.378630000E2,5.066236714E1 +7.381160000E2,4.653740377E1 +7.383650000E2,6.375011526E1 +7.386730000E2,6.282181577E1 +7.389830000E2,6.727660972E1 +7.392340000E2,6.413328322E1 +7.394790000E2,6.184881400E1 +7.397290000E2,6.430634497E1 +7.400250000E2,6.276256291E1 +7.402610000E2,6.297441350E1 +7.405590000E2,5.306586823E1 +7.408610000E2,5.403016569E1 +7.412260000E2,5.749263443E1 +7.415060000E2,5.657932114E1 +7.417820000E2,5.532222303E1 +7.420430000E2,5.911133378E1 +7.423450000E2,5.822379827E1 +7.426470000E2,6.311870884E1 +7.428860000E2,5.964121243E1 +7.431940000E2,5.708688763E1 +7.434960000E2,5.782189241E1 +7.437480000E2,5.745118469E1 +7.440380000E2,5.258772989E1 +7.442830000E2,5.325984780E1 +7.445410000E2,5.216709684E1 +7.447900000E2,5.485283680E1 +7.450520000E2,6.638751453E1 +7.453640000E2,6.256149725E1 +7.456370000E2,6.851667797E1 +7.459020000E2,6.356784575E1 +7.462040000E2,6.586178842E1 +7.464510000E2,6.099626883E1 +7.467420000E2,6.874341983E1 +7.470300000E2,5.690479739E1 +7.472670000E2,5.749513215E1 +7.475860000E2,5.743840209E1 +7.478480000E2,6.695338823E1 +7.481550000E2,6.575566103E1 +7.484170000E2,6.244751264E1 +7.486690000E2,6.206430480E1 +7.489520000E2,5.755143157E1 +7.492450000E2,6.343498072E1 +7.494820000E2,6.599354682E1 +7.497800000E2,5.994269627E1 +7.500210000E2,6.480563885E1 +7.503160000E2,5.962320355E1 +7.505550000E2,5.907805627E1 +7.508860000E2,5.452673237E1 +7.511450000E2,5.413358853E1 +7.514110000E2,5.786691992E1 +7.516870000E2,6.185088179E1 +7.519570000E2,5.432685780E1 +7.522050000E2,5.297819944E1 +7.524920000E2,5.290855554E1 +7.527910000E2,5.828859659E1 +7.530300000E2,5.880189294E1 +7.533360000E2,5.500578631E1 +7.535910000E2,5.476677878E1 +7.538330000E2,5.414240587E1 +7.541650000E2,5.332866170E1 +7.544620000E2,5.193802785E1 +7.547080000E2,5.242932681E1 +7.549590000E2,6.024921863E1 +7.552020000E2,5.537701523E1 +7.554960000E2,5.489617845E1 +7.557330000E2,5.384280286E1 +7.560410000E2,5.406125999E1 +7.562870000E2,5.246560959E1 +7.565320000E2,5.374729291E1 +7.567680000E2,5.542801483E1 +7.570630000E2,5.525770987E1 +7.573930000E2,5.847670432E1 +7.576660000E2,5.822188632E1 +7.579180000E2,5.822901451E1 +7.582040000E2,5.458975346E1 +7.584820000E2,5.438683247E1 +7.587800000E2,5.260449368E1 +7.590260000E2,5.371245859E1 +7.592870000E2,4.983203663E1 +7.595420000E2,5.018089077E1 +7.598380000E2,5.950969681E1 +7.601480000E2,5.769305363E1 +7.604800000E2,5.747567937E1 +7.607190000E2,5.446335810E1 +7.610040000E2,5.463229896E1 +7.612970000E2,5.644916160E1 +7.615560000E2,5.809520116E1 +7.618460000E2,5.406577519E1 +7.621050000E2,5.362277750E1 +7.623930000E2,5.868559294E1 +7.626230000E2,5.548744129E1 +7.628890000E2,5.613986675E1 +7.631890000E2,5.592058678E1 +7.634870000E2,5.947938191E1 +7.638120000E2,5.945990241E1 +7.640830000E2,5.354091788E1 +7.643270000E2,5.910847411E1 +7.645670000E2,6.112853730E1 +7.648120000E2,5.617469613E1 +7.650520000E2,5.678172470E1 +7.653190000E2,5.293731054E1 +7.655730000E2,5.571573154E1 +7.658430000E2,5.239475172E1 +7.660900000E2,5.710555790E1 +7.663840000E2,5.593714408E1 +7.666500000E2,5.506488062E1 +7.669100000E2,5.276148627E1 +7.671530000E2,5.087813070E1 +7.674500000E2,4.966858228E1 +7.677070000E2,4.690170064E1 +7.679870000E2,5.097718665E1 +7.682460000E2,5.173969669E1 +7.685220000E2,5.562988056E1 +7.687630000E2,5.194720020E1 +7.690630000E2,5.590118249E1 +7.693610000E2,5.613585205E1 +7.696030000E2,5.417299550E1 +7.698530000E2,5.925774948E1 +7.702010000E2,5.729895975E1 +7.704610000E2,5.765570707E1 +7.707610000E2,6.211008380E1 +7.710570000E2,5.846530012E1 +7.712970000E2,5.766544416E1 +7.715460000E2,5.716238768E1 +7.718080000E2,5.700535494E1 +7.720510000E2,5.592606747E1 +7.723260000E2,5.771214429E1 +7.725940000E2,5.753442175E1 +7.728830000E2,5.541298336E1 +7.731860000E2,5.137853822E1 +7.735420000E2,5.462649470E1 +7.738320000E2,5.454281912E1 +7.740820000E2,6.803752283E1 +7.743260000E2,6.852980541E1 +7.745820000E2,7.007631543E1 +7.748270000E2,7.009876218E1 +7.751160000E2,6.950363051E1 +7.753520000E2,6.338954984E1 +7.755910000E2,5.500200077E1 +7.758880000E2,5.358702362E1 +7.761340000E2,5.718303470E1 +7.763730000E2,5.887519420E1 +7.767050000E2,5.795457078E1 +7.769970000E2,5.796499201E1 +7.773000000E2,5.644912180E1 +7.775570000E2,5.804780214E1 +7.778740000E2,5.958528627E1 +7.781300000E2,5.635913866E1 +7.784430000E2,5.593106857E1 +7.787280000E2,6.063168213E1 +7.789960000E2,5.917208792E1 +7.792560000E2,5.719923422E1 +7.795050000E2,6.400429125E1 +7.797680000E2,5.733192807E1 +7.800440000E2,6.018331087E1 +7.803000000E2,6.350407169E1 +7.805530000E2,6.357762743E1 +7.808590000E2,6.772563953E1 +7.811430000E2,6.431848914E1 +7.814050000E2,5.710721917E1 +7.816950000E2,5.646111127E1 +7.819500000E2,5.564600214E1 +7.822050000E2,6.362802489E1 +7.824550000E2,6.278310471E1 +7.827010000E2,5.851995741E1 +7.829620000E2,5.759567059E1 +7.832630000E2,5.449669640E1 +7.835070000E2,6.040303881E1 +7.837500000E2,5.743841461E1 +7.839990000E2,6.096558185E1 +7.842840000E2,7.161293257E1 +7.845270000E2,7.417435903E1 +7.848410000E2,6.386070968E1 +7.851390000E2,6.234904760E1 +7.854350000E2,6.321731436E1 +7.856820000E2,6.294103551E1 +7.859780000E2,6.210337552E1 +7.862150000E2,6.765383904E1 +7.865650000E2,6.346682761E1 +7.868610000E2,6.221020232E1 +7.871280000E2,6.119530731E1 +7.873850000E2,5.314248269E1 +7.876880000E2,5.288680780E1 +7.879230000E2,5.064349321E1 +7.882230000E2,5.786336298E1 +7.884630000E2,5.341864841E1 +7.887250000E2,5.286568073E1 +7.890140000E2,5.272997567E1 +7.893180000E2,5.904110581E1 +7.896690000E2,5.748622391E1 +7.899200000E2,5.773986136E1 +7.902160000E2,5.480967078E1 +7.904710000E2,5.627241382E1 +7.907280000E2,5.456362797E1 +7.909900000E2,5.766408512E1 +7.912380000E2,5.413586400E1 +7.914940000E2,5.234403284E1 +7.917720000E2,5.190170354E1 +7.920440000E2,5.227759392E1 +7.923170000E2,4.410400383E1 +7.926220000E2,3.508270700E1 +7.929370000E2,3.887828085E1 +7.932030000E2,4.522069604E1 +7.934660000E2,4.928233980E1 +7.937420000E2,4.706401379E1 +7.940710000E2,4.988989997E1 +7.943700000E2,5.767827889E1 +7.946060000E2,5.506606719E1 +7.949050000E2,6.107887773E1 +7.952060000E2,5.849609892E1 +7.955030000E2,5.343173328E1 +7.957490000E2,5.007726003E1 +7.960580000E2,4.763873915E1 +7.963010000E2,5.045894898E1 +7.966040000E2,6.859700710E1 +7.968900000E2,6.734256534E1 +7.971550000E2,6.661489392E1 +7.974110000E2,6.556398865E1 +7.976580000E2,5.519705677E1 +7.979230000E2,5.503316479E1 +7.982060000E2,5.955770829E1 +7.984280000E2,5.777834711E1 +7.987260000E2,6.050467535E1 +7.989700000E2,5.583639573E1 +7.993330000E2,5.988908902E1 +7.995750000E2,5.875791040E1 +7.998670000E2,6.166637478E1 +8.001160000E2,5.690435901E1 +8.004160000E2,5.599911293E1 +8.006610000E2,5.889628547E1 +8.009180000E2,6.227540789E1 +8.011740000E2,6.572663811E1 +8.014300000E2,6.013467784E1 +8.016770000E2,6.250368579E1 +8.019910000E2,6.532292099E1 +8.023560000E2,5.377170031E1 +8.026370000E2,5.535595108E1 +8.029110000E2,5.147526495E1 +8.031720000E2,4.993046061E1 +8.034760000E2,6.394035794E1 +8.037260000E2,5.983119170E1 +8.040270000E2,5.967243802E1 +8.042930000E2,6.559340840E1 +8.046100000E2,5.262215496E1 +8.049160000E2,5.397812040E1 +8.051780000E2,5.680330381E1 +8.054740000E2,5.857171626E1 +8.058060000E2,5.577198454E1 +8.060880000E2,5.916891157E1 +8.063460000E2,6.120078548E1 +8.066060000E2,6.223167379E1 +8.069230000E2,6.161077093E1 +8.071720000E2,5.812180846E1 +8.074300000E2,5.665535607E1 +8.077230000E2,5.401482687E1 +8.079600000E2,5.631804256E1 +8.082610000E2,5.267806276E1 +8.085540000E2,5.766120113E1 +8.088100000E2,5.717509884E1 +8.091690000E2,5.698714543E1 +8.094130000E2,5.807918354E1 +8.096940000E2,5.364566959E1 +8.099320000E2,5.678502402E1 +8.102110000E2,5.494444844E1 +8.104710000E2,6.216218230E1 +8.107550000E2,5.504588420E1 +8.110030000E2,5.220186059E1 +8.112810000E2,5.338487037E1 +8.115430000E2,5.422122114E1 +8.118180000E2,6.217546099E1 +8.121430000E2,5.739027439E1 +8.124800000E2,5.218554734E1 +8.128080000E2,6.183667492E1 +8.130850000E2,6.028246668E1 +8.133620000E2,6.620979851E1 +8.135950000E2,5.810667246E1 +8.138630000E2,6.096670869E1 +8.141300000E2,5.149777407E1 +8.143960000E2,4.993954713E1 +8.146400000E2,5.196561010E1 +8.149350000E2,5.727966309E1 +8.151710000E2,5.489316784E1 +8.154100000E2,5.619291420E1 +8.157500000E2,5.425831711E1 +8.160430000E2,5.677079709E1 +8.163250000E2,5.289383275E1 +8.165600000E2,5.573749616E1 +8.168090000E2,5.211960412E1 +8.170840000E2,5.029895102E1 +8.173170000E2,5.085418245E1 +8.175630000E2,5.101392152E1 +8.178870000E2,5.228690479E1 +8.182130000E2,5.919931006E1 +8.184680000E2,5.288617356E1 +8.188320000E2,5.626269479E1 +8.191030000E2,6.124827198E1 +8.193870000E2,5.889071517E1 +8.196160000E2,5.957980623E1 +8.199180000E2,5.440069788E1 +8.201590000E2,5.524226830E1 +8.204560000E2,5.147688867E1 +8.206870000E2,5.390780082E1 +8.209820000E2,6.509870984E1 +8.212270000E2,6.421388309E1 +8.215230000E2,5.843840462E1 +8.218170000E2,5.422512027E1 +8.221280000E2,5.468614274E1 +8.223780000E2,5.922850585E1 +8.226710000E2,6.486031186E1 +8.229330000E2,6.154967201E1 +8.232420000E2,5.893257410E1 +8.235100000E2,6.020329639E1 +8.238290000E2,5.483779552E1 +8.240760000E2,5.692914998E1 +8.243280000E2,6.347347085E1 +8.245930000E2,5.345306004E1 +8.248670000E2,6.141647052E1 +8.252000000E2,5.672783001E1 +8.254550000E2,5.605661334E1 +8.257610000E2,5.699330885E1 +8.260410000E2,5.489256860E1 +8.263010000E2,6.262090025E1 +8.265830000E2,5.457719262E1 +8.268180000E2,5.416382407E1 +8.271260000E2,4.993919751E1 +8.273700000E2,5.569569056E1 +8.276330000E2,5.514364162E1 +8.278890000E2,5.653204472E1 +8.281470000E2,5.784406489E1 +8.284370000E2,5.752811490E1 +8.286720000E2,5.727510089E1 +8.289650000E2,5.900575965E1 +8.292510000E2,5.679022390E1 +8.294860000E2,5.722234118E1 +8.297350000E2,5.952638514E1 +8.300320000E2,5.925181191E1 +8.302740000E2,5.930148258E1 +8.305160000E2,5.668145507E1 +8.307730000E2,5.590492759E1 +8.310130000E2,6.302930486E1 +8.312510000E2,5.733539345E1 +8.315800000E2,5.620349253E1 +8.318910000E2,5.495250031E1 +8.322000000E2,5.501979251E1 +8.324620000E2,5.208226415E1 +8.327390000E2,5.765748383E1 +8.329950000E2,5.489193423E1 +8.332490000E2,5.593428331E1 +8.335720000E2,5.714652117E1 +8.338250000E2,5.832769426E1 +8.341370000E2,5.884156077E1 +8.344030000E2,5.840498509E1 +8.347020000E2,5.864505811E1 +8.350330000E2,6.356982434E1 +8.353340000E2,6.286445683E1 +8.355720000E2,5.657384439E1 +8.358940000E2,5.660970318E1 +8.361720000E2,5.918731584E1 +8.364160000E2,5.825788220E1 +8.366580000E2,5.592754487E1 +8.369110000E2,5.553717092E1 +8.371910000E2,5.495027293E1 +8.374510000E2,5.546329287E1 +8.377420000E2,5.746402701E1 +8.379890000E2,5.891922359E1 +8.383130000E2,6.522858798E1 +8.385710000E2,6.384617776E1 +8.388430000E2,5.435088619E1 +8.390670000E2,5.460135210E1 +8.393610000E2,5.982769627E1 +8.396020000E2,5.936265195E1 +8.398550000E2,6.034701146E1 +8.401470000E2,6.875861473E1 +8.403840000E2,6.968788985E1 +8.406760000E2,6.653493651E1 +8.409120000E2,6.664139767E1 +8.412200000E2,6.195236791E1 +8.415280000E2,5.759269564E1 +8.418110000E2,5.704906263E1 +8.420770000E2,5.199124728E1 +8.423350000E2,5.625309672E1 +8.426060000E2,5.627754144E1 +8.428710000E2,6.285304788E1 +8.431220000E2,6.089762622E1 +8.434160000E2,5.828079525E1 +8.436650000E2,5.581703965E1 +8.439650000E2,5.326092983E1 +8.442070000E2,5.247397640E1 +8.444500000E2,5.104216729E1 +8.447560000E2,4.981466747E1 +8.450730000E2,5.794387296E1 +8.453210000E2,6.103400827E1 +8.455680000E2,6.053778141E1 +8.458610000E2,5.413066164E1 +8.461240000E2,5.591468697E1 +8.463740000E2,5.289659812E1 +8.466770000E2,6.014390988E1 +8.469740000E2,5.713983843E1 +8.472340000E2,5.457406708E1 +8.474800000E2,5.848999564E1 +8.478210000E2,5.310404619E1 +8.481040000E2,5.463633704E1 +8.483620000E2,5.329096892E1 +8.486670000E2,5.667645304E1 +8.489890000E2,5.540515985E1 +8.492420000E2,5.014593999E1 +8.495060000E2,5.019949668E1 +8.497660000E2,4.724526190E1 +8.500410000E2,4.632701850E1 +8.502660000E2,4.436725745E1 +8.505710000E2,5.273585220E1 +8.508470000E2,5.232501704E1 +8.511370000E2,5.177389205E1 +8.513940000E2,5.236772038E1 +8.516560000E2,4.869019062E1 +8.518980000E2,5.254056589E1 +8.521620000E2,5.441215371E1 +8.524060000E2,5.431954181E1 +8.526720000E2,4.873515026E1 +8.529820000E2,5.253291311E1 +8.532350000E2,5.201920339E1 +8.535330000E2,5.083296820E1 +8.537750000E2,5.373650683E1 +8.540560000E2,6.162621210E1 +8.543710000E2,6.137876928E1 +8.546190000E2,6.347980201E1 +8.548850000E2,6.480134627E1 +8.551390000E2,6.344943059E1 +8.553830000E2,6.653758852E1 +8.556910000E2,6.821811094E1 +8.559900000E2,6.564040109E1 +8.562480000E2,6.310710880E1 +8.565060000E2,5.625485760E1 +8.567860000E2,5.886920329E1 +8.570590000E2,5.638007706E1 +8.573180000E2,5.477312089E1 +8.576670000E2,5.402637072E1 +8.579310000E2,5.282806817E1 +8.582400000E2,5.743205922E1 +8.584770000E2,5.608834078E1 +8.587730000E2,5.917700537E1 +8.590950000E2,5.757076232E1 +8.593390000E2,5.680975976E1 +8.596110000E2,5.316092446E1 +8.598560000E2,5.634389465E1 +8.601130000E2,5.912558361E1 +8.603880000E2,5.827706684E1 +8.606370000E2,5.580056474E1 +8.609720000E2,5.622551838E1 +8.612190000E2,5.816090597E1 +8.614650000E2,5.710633258E1 +8.617260000E2,6.762679027E1 +8.619970000E2,6.050550643E1 +8.622480000E2,6.017289530E1 +8.624960000E2,5.884551198E1 +8.627510000E2,5.823958631E1 +8.630120000E2,5.747421536E1 +8.632920000E2,5.891926612E1 +8.635810000E2,5.962176090E1 +8.638680000E2,5.932606834E1 +8.642430000E2,6.035939553E1 +8.645920000E2,5.892740034E1 +8.649090000E2,6.158225090E1 +8.651650000E2,5.941856931E1 +8.654560000E2,5.517726055E1 +8.656900000E2,5.573554393E1 +8.659400000E2,6.300977067E1 +8.662170000E2,6.346838855E1 +8.664760000E2,5.840482341E1 +8.667600000E2,5.656477763E1 +8.669980000E2,5.809371706E1 +8.672500000E2,5.957523428E1 +8.675890000E2,5.868790884E1 +8.678670000E2,6.643274765E1 +8.681530000E2,6.202304252E1 +8.684260000E2,6.167390940E1 +8.686760000E2,6.561664622E1 +8.689220000E2,6.221849135E1 +8.691620000E2,5.873701255E1 +8.694080000E2,5.721335717E1 +8.696600000E2,5.775578048E1 +8.699210000E2,6.139190630E1 +8.702060000E2,5.695582014E1 +8.705330000E2,5.285782467E1 +8.708800000E2,5.254436807E1 +8.711320000E2,5.941119733E1 +8.714840000E2,5.561687107E1 +8.717890000E2,5.226341013E1 +8.720340000E2,5.351737673E1 +8.723120000E2,5.581753669E1 +8.725450000E2,5.544476975E1 +8.727930000E2,5.112331517E1 +8.731050000E2,5.669948434E1 +8.733660000E2,5.553741274E1 +8.736450000E2,5.287392842E1 +8.738710000E2,5.342755356E1 +8.742030000E2,5.525376809E1 +8.745760000E2,5.790146612E1 +8.748470000E2,5.775550126E1 +8.750900000E2,5.828043309E1 +8.753860000E2,5.689517506E1 +8.756490000E2,5.836000549E1 +8.759170000E2,5.887049385E1 +8.761640000E2,5.731343570E1 +8.764240000E2,5.947081752E1 +8.766660000E2,5.735732777E1 +8.769150000E2,5.791222148E1 +8.771870000E2,5.217820200E1 +8.775110000E2,5.373516267E1 +8.777550000E2,5.639663701E1 +8.779960000E2,5.308435393E1 +8.782370000E2,5.327040257E1 +8.785510000E2,5.539866825E1 +8.788050000E2,5.451580533E1 +8.791100000E2,5.664888244E1 +8.793670000E2,5.439058144E1 +8.796110000E2,6.546629591E1 +8.799090000E2,6.080313073E1 +8.801560000E2,6.023654065E1 +8.804070000E2,5.547022044E1 +8.807450000E2,5.933402552E1 +8.809880000E2,6.073235462E1 +8.812850000E2,5.811897337E1 +8.815210000E2,5.670873426E1 +8.818240000E2,6.239450766E1 +8.821160000E2,6.033779387E1 +8.823610000E2,5.921328684E1 +8.826600000E2,5.808215882E1 +8.828910000E2,5.927124720E1 +8.831280000E2,5.254346564E1 +8.834120000E2,5.755316817E1 +8.837180000E2,5.815703318E1 +8.840150000E2,5.925974643E1 +8.842610000E2,5.406291788E1 +8.845520000E2,5.892672719E1 +8.847970000E2,6.343231596E1 +8.850390000E2,6.045689612E1 +8.853340000E2,5.903303339E1 +8.855810000E2,5.897514906E1 +8.858230000E2,5.682843230E1 +8.860690000E2,4.647265993E1 +8.863400000E2,5.617216143E1 +8.865730000E2,5.412892937E1 +8.869100000E2,6.210166513E1 +8.872070000E2,6.369099543E1 +8.874540000E2,6.052073025E1 +8.877480000E2,6.125108403E1 +8.879990000E2,6.087163347E1 +8.882550000E2,6.365510666E1 +8.885320000E2,5.341778352E1 +8.887600000E2,5.238943476E1 +8.890050000E2,6.378561240E1 +8.892460000E2,6.182956815E1 +8.895070000E2,6.027537659E1 +8.897770000E2,5.747996426E1 +8.901220000E2,5.606477689E1 +8.903620000E2,5.816493441E1 +8.907030000E2,5.740436721E1 +8.909540000E2,5.812990427E1 +8.912060000E2,5.757163286E1 +8.914520000E2,5.669306215E1 +8.917150000E2,5.593698617E1 +8.919580000E2,5.867011196E1 +8.922060000E2,6.001129970E1 +8.924480000E2,6.247831114E1 +8.927080000E2,5.501506807E1 +8.929550000E2,5.918039480E1 +8.932790000E2,5.750337148E1 +8.935260000E2,5.382626014E1 +8.937850000E2,5.632583646E1 +8.940370000E2,5.552393419E1 +8.943380000E2,5.417609473E1 +8.946050000E2,5.314873345E1 +8.948570000E2,5.537690953E1 +8.951790000E2,6.168371256E1 +8.954540000E2,6.142331687E1 +8.957690000E2,5.914263764E1 +8.960690000E2,6.039127428E1 +8.963670000E2,5.303465172E1 +8.966720000E2,5.819495208E1 +8.969200000E2,5.956457754E1 +8.972240000E2,5.554166388E1 +8.974940000E2,5.700583380E1 +8.978160000E2,5.525596264E1 +8.981210000E2,5.878997726E1 +8.983720000E2,5.661289659E1 +8.986510000E2,6.039909322E1 +8.988730000E2,5.569487247E1 +8.991240000E2,5.857026750E1 +8.993800000E2,6.116905404E1 +8.996580000E2,6.331625006E1 +8.998890000E2,5.612470465E1 +9.001440000E2,5.098243988E1 +9.004020000E2,5.779474181E1 +9.006650000E2,5.597754805E1 +9.009440000E2,5.706395638E1 +9.012380000E2,5.989184595E1 +9.015000000E2,5.905145002E1 +9.017620000E2,5.913397617E1 +9.020230000E2,5.831976398E1 +9.022900000E2,5.400731512E1 +9.025900000E2,6.547285797E1 +9.029050000E2,6.534571775E1 +9.032100000E2,5.428834230E1 +9.034580000E2,4.919896084E1 +9.037180000E2,5.326934205E1 +9.039740000E2,5.135684539E1 +9.042700000E2,5.784030554E1 +9.045180000E2,5.789711892E1 +9.048150000E2,5.501985460E1 +9.050680000E2,5.394185103E1 +9.053920000E2,5.504541187E1 +9.056620000E2,5.574384904E1 +9.059260000E2,5.198297704E1 +9.062920000E2,5.507423148E1 +9.065460000E2,5.073979477E1 +9.068090000E2,5.409355601E1 +9.071500000E2,5.842003605E1 +9.074380000E2,6.323761852E1 +9.076890000E2,5.475142925E1 +9.079510000E2,5.285089191E1 +9.082580000E2,6.228883476E1 +9.085110000E2,6.229139223E1 +9.087590000E2,5.849936549E1 +9.090220000E2,6.382664868E1 +9.092560000E2,5.234586511E1 +9.095720000E2,5.506613760E1 +9.098700000E2,5.883918884E1 +9.101180000E2,5.722745073E1 +9.103980000E2,6.006905181E1 +9.106670000E2,6.333821195E1 +9.109390000E2,5.997503412E1 +9.111770000E2,5.691091005E1 +9.114250000E2,5.629684565E1 +9.117070000E2,5.944947286E1 +9.119370000E2,5.757115704E1 +9.122030000E2,5.617546709E1 +9.125090000E2,5.506166951E1 +9.128480000E2,5.345826069E1 +9.131070000E2,5.586702127E1 +9.133900000E2,6.075354367E1 +9.137040000E2,5.668960998E1 +9.139920000E2,5.584388878E1 +9.142800000E2,5.668519299E1 +9.145740000E2,5.400550993E1 +9.148220000E2,5.668991412E1 +9.150670000E2,5.455006531E1 +9.153720000E2,5.750041942E1 +9.156590000E2,5.756327349E1 +9.159630000E2,5.822694927E1 +9.162110000E2,5.764545771E1 +9.164660000E2,5.716015909E1 +9.167560000E2,5.136001811E1 +9.170200000E2,4.706951064E1 +9.172710000E2,4.999131008E1 +9.175180000E2,5.619976433E1 +9.178030000E2,5.463675948E1 +9.180580000E2,4.995546642E1 +9.183000000E2,5.328928391E1 +9.185570000E2,4.808104957E1 +9.188650000E2,5.411517612E1 +9.191080000E2,5.672946344E1 +9.194270000E2,5.737096863E1 +9.196850000E2,5.974051238E1 +9.199830000E2,5.656564726E1 +9.202340000E2,5.709524531E1 +9.204810000E2,5.408385116E1 +9.208240000E2,5.414410830E1 +9.210650000E2,5.638214177E1 +9.213330000E2,5.753313030E1 +9.216130000E2,5.354803656E1 +9.219120000E2,6.191736419E1 +9.221480000E2,5.734366551E1 +9.224580000E2,5.684475304E1 +9.228030000E2,6.045431811E1 +9.230950000E2,5.973057312E1 +9.233960000E2,5.537690593E1 +9.236620000E2,5.411771801E1 +9.239600000E2,5.513839001E1 +9.242140000E2,5.699753068E1 +9.244670000E2,6.643461088E1 +9.247300000E2,6.062391899E1 +9.250330000E2,5.798096332E1 +9.253240000E2,6.347140522E1 +9.255740000E2,6.166496817E1 +9.259250000E2,6.190058171E1 +9.261820000E2,6.329204590E1 +9.264380000E2,6.389135880E1 +9.267030000E2,5.917517639E1 +9.269480000E2,5.809772267E1 +9.272170000E2,5.733235238E1 +9.274780000E2,5.226841119E1 +9.277860000E2,5.876554483E1 +9.280720000E2,6.281089568E1 +9.283510000E2,5.368859448E1 +9.286400000E2,5.449014251E1 +9.289370000E2,5.589991313E1 +9.292390000E2,5.452044152E1 +9.294860000E2,5.574135623E1 +9.297800000E2,5.656551806E1 +9.300200000E2,5.368800996E1 +9.302990000E2,5.374372369E1 +9.305490000E2,5.520696346E1 +9.308500000E2,5.642038107E1 +9.311480000E2,5.958603376E1 +9.314510000E2,5.775531382E1 +9.316980000E2,5.561486787E1 +9.319610000E2,5.826734748E1 +9.322700000E2,5.604871965E1 +9.325550000E2,5.170668645E1 +9.328670000E2,5.089285684E1 +9.331190000E2,4.724853188E1 +9.333790000E2,4.756075237E1 +9.336260000E2,5.199039629E1 +9.338890000E2,4.980140945E1 +9.341620000E2,5.530081877E1 +9.344120000E2,5.549144740E1 +9.347250000E2,5.515929093E1 +9.349780000E2,5.399104933E1 +9.352760000E2,5.325801117E1 +9.356240000E2,5.040008457E1 +9.359420000E2,5.360316460E1 +9.361890000E2,5.191591881E1 +9.364390000E2,5.324554606E1 +9.366970000E2,5.654671572E1 +9.370100000E2,5.711795620E1 +9.372590000E2,5.478625541E1 +9.375950000E2,5.667621371E1 +9.378550000E2,5.463565976E1 +9.381050000E2,5.398825590E1 +9.383580000E2,5.436030102E1 +9.386390000E2,5.091983440E1 +9.389120000E2,5.286705124E1 +9.391550000E2,5.236775571E1 +9.394300000E2,5.738794921E1 +9.397170000E2,5.727939554E1 +9.399750000E2,6.319402051E1 +9.402560000E2,5.468250624E1 +9.405530000E2,5.641852830E1 +9.408670000E2,6.200700436E1 +9.411390000E2,6.163446308E1 +9.413860000E2,7.148312536E1 +9.416340000E2,6.050927243E1 +9.419040000E2,5.667078757E1 +9.421350000E2,5.749142651E1 +9.424700000E2,5.240604485E1 +9.427760000E2,5.466454134E1 +9.430280000E2,6.082141946E1 +9.433300000E2,6.003969647E1 +9.436110000E2,6.121195378E1 +9.438460000E2,5.625129518E1 +9.441420000E2,5.911131348E1 +9.443880000E2,5.468317436E1 +9.446840000E2,6.009033853E1 +9.449440000E2,5.906624737E1 +9.452490000E2,5.464875325E1 +9.455970000E2,5.384566268E1 +9.458510000E2,5.044039840E1 +9.461140000E2,5.035886237E1 +9.463820000E2,5.734112986E1 +9.466620000E2,5.229112628E1 +9.469690000E2,6.028523542E1 +9.472250000E2,5.837101422E1 +9.475000000E2,5.619491985E1 +9.477970000E2,5.364209552E1 +9.480560000E2,5.511055516E1 +9.483560000E2,5.308396885E1 +9.486650000E2,5.587440008E1 +9.490640000E2,5.273632850E1 +9.493730000E2,6.231816715E1 +9.496570000E2,6.253734875E1 +9.499030000E2,5.554720788E1 +9.501460000E2,5.631566079E1 +9.503970000E2,5.626896653E1 +9.506490000E2,5.691941114E1 +9.508990000E2,5.116659255E1 +9.511440000E2,4.922875084E1 +9.514130000E2,5.936693495E1 +9.517070000E2,5.638156112E1 +9.520200000E2,5.180629212E1 +9.523780000E2,4.998674108E1 +9.526570000E2,4.841587788E1 +9.529100000E2,5.028896526E1 +9.531650000E2,4.965921907E1 +9.534690000E2,4.493319669E1 +9.537260000E2,4.598612712E1 +9.539740000E2,5.276251951E1 +9.542810000E2,4.126037796E1 +9.545830000E2,4.737114191E1 +9.548330000E2,4.411553821E1 +9.550850000E2,4.440050708E1 +9.553840000E2,5.260541790E1 +9.556980000E2,5.273901651E1 +9.559710000E2,5.383409632E1 +9.562220000E2,5.239354977E1 +9.564980000E2,4.759742823E1 +9.568040000E2,5.239869448E1 +9.570530000E2,5.238241691E1 +9.573300000E2,5.227349879E1 +9.575630000E2,5.272394727E1 +9.578410000E2,5.414710772E1 +9.580970000E2,5.325895305E1 +9.583410000E2,5.577122645E1 +9.586370000E2,5.015645058E1 +9.590040000E2,5.173028231E1 +9.593040000E2,5.447959265E1 +9.595640000E2,5.484713415E1 +9.598110000E2,5.470137539E1 +9.601060000E2,5.878769788E1 +9.603740000E2,5.851189839E1 +9.606810000E2,5.400762096E1 +9.609290000E2,5.749049444E1 +9.611870000E2,5.241750519E1 +9.614480000E2,4.979747952E1 +9.616960000E2,5.096881110E1 +9.620030000E2,5.149804171E1 +9.623180000E2,5.481599911E1 +9.625540000E2,5.138365056E1 +9.628240000E2,5.235851031E1 +9.630470000E2,4.871540913E1 +9.632880000E2,5.651540461E1 +9.635860000E2,5.650278128E1 +9.638210000E2,5.704973755E1 +9.641160000E2,5.757712252E1 +9.643960000E2,5.881159691E1 +9.646600000E2,5.355579494E1 +9.649750000E2,5.539751700E1 +9.652910000E2,4.797714339E1 +9.655520000E2,5.082548637E1 +9.658080000E2,5.579830605E1 +9.660780000E2,5.554406278E1 +9.663250000E2,5.354814316E1 +9.665660000E2,5.463107171E1 +9.668090000E2,5.368692433E1 +9.671300000E2,5.364867335E1 +9.674540000E2,5.468973775E1 +9.677060000E2,5.815904844E1 +9.680020000E2,5.598522308E1 +9.682480000E2,5.541083624E1 +9.685850000E2,5.512396132E1 +9.688400000E2,5.530796688E1 +9.691210000E2,5.433954611E1 +9.693810000E2,5.507440645E1 +9.696820000E2,5.086817906E1 +9.699140000E2,5.696191489E1 +9.701640000E2,5.845256581E1 +9.704420000E2,5.620226260E1 +9.706770000E2,5.629047170E1 +9.709750000E2,5.811655252E1 +9.712290000E2,5.703185419E1 +9.714900000E2,5.716734774E1 +9.718450000E2,5.493596869E1 +9.720910000E2,5.909437017E1 +9.723380000E2,5.710675060E1 +9.725910000E2,5.780279559E1 +9.728920000E2,5.860060144E1 +9.731360000E2,6.078900999E1 +9.734260000E2,5.852116194E1 +9.736640000E2,5.905899453E1 +9.739130000E2,5.636299630E1 +9.742090000E2,6.289355999E1 +9.744870000E2,6.167909115E1 +9.747290000E2,6.098057792E1 +9.750690000E2,5.906667343E1 +9.753320000E2,6.018572501E1 +9.756150000E2,5.718512970E1 +9.759100000E2,5.146063018E1 +9.761570000E2,5.733244632E1 +9.764050000E2,5.368365894E1 +9.766600000E2,5.486016267E1 +9.769150000E2,5.908582599E1 +9.771910000E2,5.733773036E1 +9.774400000E2,5.566361416E1 +9.777680000E2,5.819125256E1 +9.781220000E2,5.947694304E1 +9.783640000E2,6.140057637E1 +9.786330000E2,5.721849738E1 +9.788550000E2,5.617504209E1 +9.791010000E2,5.660293849E1 +9.793960000E2,5.174001770E1 +9.796880000E2,5.083474014E1 +9.799290000E2,5.184104339E1 +9.801850000E2,5.025385313E1 +9.804850000E2,5.286605500E1 +9.807270000E2,5.586849562E1 +9.809750000E2,5.666036754E1 +9.812950000E2,5.248500918E1 +9.815810000E2,5.416072977E1 +9.818360000E2,5.799655965E1 +9.821300000E2,5.801841935E1 +9.823770000E2,5.977514968E1 +9.826270000E2,5.676871456E1 +9.828850000E2,5.104814549E1 +9.831730000E2,5.834620153E1 +9.834010000E2,5.660640582E1 +9.836620000E2,5.686451748E1 +9.839750000E2,5.998440952E1 +9.842240000E2,5.556687478E1 +9.846000000E2,5.811069315E1 +9.848430000E2,5.843499893E1 +9.851250000E2,5.180956247E1 +9.853860000E2,5.206236639E1 +9.856480000E2,5.641840701E1 +9.859110000E2,5.518588565E1 +9.861920000E2,5.697237679E1 +9.864550000E2,5.411246614E1 +9.867510000E2,5.214533821E1 +9.869880000E2,5.642389575E1 +9.872440000E2,6.015294933E1 +9.875470000E2,5.809991100E1 +9.879150000E2,6.420044247E1 +9.881610000E2,6.042656173E1 +9.884280000E2,5.938959873E1 +9.886840000E2,6.059888233E1 +9.889870000E2,5.282749720E1 +9.892620000E2,5.638110380E1 +9.895440000E2,4.900409689E1 +9.897740000E2,4.971849802E1 +9.900320000E2,5.061428463E1 +9.903370000E2,5.829922071E1 +9.905860000E2,5.812083213E1 +9.908910000E2,5.500587720E1 +9.911860000E2,5.677481104E1 +9.914380000E2,5.502691141E1 +9.916830000E2,5.294500154E1 +9.919560000E2,5.700444986E1 +9.921770000E2,5.448756275E1 +9.924220000E2,5.785741234E1 +9.927280000E2,5.702180374E1 +9.929670000E2,6.013415875E1 +9.932080000E2,5.533496795E1 +9.934640000E2,5.695301526E1 +9.937440000E2,5.436173732E1 +9.940620000E2,5.092257074E1 +9.944480000E2,4.973000793E1 +9.946940000E2,4.871235512E1 +9.949410000E2,5.171412848E1 +9.951960000E2,5.643245777E1 +9.954520000E2,5.548819002E1 +9.957530000E2,5.694822585E1 +9.960600000E2,5.668072577E1 +9.963110000E2,5.547400320E1 +9.966010000E2,5.667137699E1 +9.968430000E2,5.866196066E1 +9.971120000E2,5.641527163E1 +9.974300000E2,5.505243365E1 +9.977140000E2,5.491253296E1 +9.979940000E2,5.642986287E1 +9.982400000E2,5.111113898E1 +9.985270000E2,5.228293633E1 +9.987770000E2,5.380023266E1 +9.990760000E2,5.259255492E1 +9.993610000E2,5.359948032E1 +9.996550000E2,5.817439497E1 +9.999080000E2,5.712087238E1 +1.000199000E3,6.016800470E1 +1.000435000E3,5.758076017E1 +1.000772000E3,5.328951429E1 +1.001047000E3,5.373102399E1 +1.001303000E3,5.905317642E1 +1.001622000E3,5.478240688E1 +1.001877000E3,5.648896451E1 +1.002173000E3,5.587033976E1 +1.002422000E3,5.995513955E1 +1.002724000E3,6.295760047E1 +1.003003000E3,5.978713154E1 +1.003261000E3,5.669754444E1 +1.003545000E3,5.577942906E1 +1.003827000E3,6.186873273E1 +1.004183000E3,6.253868639E1 +1.004493000E3,5.777226132E1 +1.004770000E3,6.482227668E1 +1.005072000E3,5.923751414E1 +1.005323000E3,5.644465637E1 +1.005601000E3,6.074750234E1 +1.005832000E3,5.683683327E1 +1.006147000E3,5.957418887E1 +1.006418000E3,6.134946851E1 +1.006713000E3,5.641852300E1 +1.006952000E3,5.637674327E1 +1.007310000E3,5.484290206E1 +1.007589000E3,6.426865013E1 +1.007886000E3,5.712036033E1 +1.008127000E3,5.768385080E1 +1.008427000E3,5.812466970E1 +1.008666000E3,6.112344783E1 +1.008973000E3,5.606588478E1 +1.009269000E3,5.809328667E1 +1.009507000E3,5.371315435E1 +1.009763000E3,5.527533595E1 +1.010003000E3,5.390597114E1 +1.010379000E3,5.652035402E1 +1.010658000E3,5.490058638E1 +1.010920000E3,5.927019017E1 +1.011197000E3,5.293113048E1 +1.011458000E3,5.179006266E1 +1.011718000E3,5.366462930E1 +1.011979000E3,5.569421827E1 +1.012229000E3,5.341899104E1 +1.012477000E3,4.863208748E1 +1.012772000E3,6.037154816E1 +1.013036000E3,5.430849576E1 +1.013284000E3,5.735938261E1 +1.013671000E3,5.526482118E1 +1.013957000E3,5.731780297E1 +1.014225000E3,5.205368153E1 +1.014486000E3,5.548863756E1 +1.014733000E3,5.265038263E1 +1.015033000E3,5.986876322E1 +1.015314000E3,5.130643680E1 +1.015590000E3,6.086878634E1 +1.015830000E3,5.798526739E1 +1.016137000E3,6.825745236E1 +1.016387000E3,5.828900876E1 +1.016655000E3,5.873097643E1 +1.017001000E3,6.454090665E1 +1.017329000E3,6.385512775E1 +1.017637000E3,6.691081911E1 +1.017938000E3,6.580217665E1 +1.018229000E3,6.485489311E1 +1.018470000E3,6.387101962E1 +1.018706000E3,6.616835921E1 +1.018997000E3,5.951737331E1 +1.019235000E3,5.386458503E1 +1.019536000E3,5.756977765E1 +1.019801000E3,5.811747841E1 +1.020064000E3,5.930001089E1 +1.020406000E3,5.469664450E1 +1.020673000E3,5.181220980E1 +1.020925000E3,5.483858346E1 +1.021232000E3,5.716842569E1 +1.021527000E3,5.738254897E1 +1.021762000E3,5.628034518E1 +1.022007000E3,5.850971228E1 +1.022258000E3,5.329919175E1 +1.022556000E3,5.482637446E1 +1.022813000E3,5.690503448E1 +1.023071000E3,5.317501594E1 +1.023336000E3,4.870888301E1 +1.023687000E3,6.132281620E1 +1.023965000E3,6.262505101E1 +1.024220000E3,6.180229149E1 +1.024496000E3,6.130993335E1 +1.024741000E3,6.231376381E1 +1.025040000E3,6.164360059E1 +1.025279000E3,5.910065798E1 +1.025533000E3,5.622173801E1 +1.025821000E3,5.290311975E1 +1.026116000E3,5.028293308E1 +1.026403000E3,5.581740437E1 +1.026664000E3,5.988277804E1 +1.027011000E3,5.730548262E1 +1.027305000E3,5.417769573E1 +1.027578000E3,5.250932185E1 +1.027819000E3,5.139919708E1 +1.028128000E3,5.061852216E1 +1.028380000E3,4.722292138E1 +1.028683000E3,5.983070917E1 +1.028956000E3,6.045269830E1 +1.029182000E3,5.777292957E1 +1.029431000E3,5.497807442E1 +1.029734000E3,5.533889528E1 +1.030063000E3,5.373558580E1 +1.030323000E3,5.600729212E1 +1.030620000E3,5.467159629E1 +1.030863000E3,5.246400101E1 +1.031110000E3,5.468037288E1 +1.031367000E3,5.850364516E1 +1.031646000E3,5.490958739E1 +1.031911000E3,5.866929845E1 +1.032210000E3,5.708288591E1 +1.032475000E3,5.498129629E1 +1.032736000E3,5.670272599E1 +1.032986000E3,5.317143219E1 +1.033315000E3,5.758413128E1 +1.033557000E3,6.361635596E1 +1.033846000E3,5.513973379E1 +1.034093000E3,5.215484095E1 +1.034399000E3,5.465926438E1 +1.034684000E3,5.588902955E1 +1.034978000E3,5.387672604E1 +1.035280000E3,5.595327755E1 +1.035543000E3,5.621513504E1 +1.035825000E3,5.991854954E1 +1.036079000E3,5.864640009E1 +1.036322000E3,6.072021936E1 +1.036666000E3,5.462749592E1 +1.036971000E3,5.329083651E1 +1.037264000E3,5.401214501E1 +1.037542000E3,5.242806591E1 +1.037843000E3,5.573267887E1 +1.038091000E3,5.224254554E1 +1.038380000E3,5.453929206E1 +1.038635000E3,5.371826859E1 +1.038891000E3,4.369246898E1 +1.039145000E3,4.547521933E1 +1.039418000E3,4.204639660E1 +1.039750000E3,4.426760298E1 +1.039990000E3,4.955659514E1 +1.040294000E3,4.960859899E1 +1.040560000E3,4.841380220E1 +1.040808000E3,4.914533708E1 +1.041104000E3,4.650609937E1 +1.041370000E3,4.849101938E1 +1.041622000E3,5.065930763E1 +1.041920000E3,4.744161935E1 +1.042161000E3,4.448519483E1 +1.042478000E3,4.726532690E1 +1.042725000E3,4.667923132E1 +1.043042000E3,4.704822757E1 +1.043307000E3,3.950691106E1 +1.043560000E3,5.249697508E1 +1.043835000E3,4.753687679E1 +1.044091000E3,4.843049138E1 +1.044350000E3,5.394643708E1 +1.044644000E3,4.769079035E1 +1.044887000E3,5.111291504E1 +1.045194000E3,5.247298633E1 +1.045445000E3,4.904344971E1 +1.045693000E3,4.405437847E1 +1.045988000E3,4.750888237E1 +1.046301000E3,4.305046000E1 +1.046518000E3,4.630901796E1 +1.046813000E3,4.756289225E1 +1.047053000E3,4.661089273E1 +1.047331000E3,6.143859736E1 +1.047566000E3,5.702483033E1 +1.047860000E3,5.015015196E1 +1.048098000E3,5.180675157E1 +1.048397000E3,4.645218330E1 +1.048640000E3,4.317726503E1 +1.048918000E3,4.962602549E1 +1.049159000E3,4.922447391E1 +1.049523000E3,4.310015818E1 +1.049767000E3,5.584844461E1 +1.050011000E3,5.550466055E1 +1.050294000E3,5.076679182E1 +1.050523000E3,4.777565498E1 +1.050776000E3,5.078379664E1 +1.051031000E3,4.412618688E1 +1.051298000E3,3.933148532E1 +1.051551000E3,4.240994962E1 +1.051799000E3,3.715036539E1 +1.052054000E3,4.541823437E1 +1.052312000E3,3.252240989E1 +1.052661000E3,4.298387800E1 +1.052922000E3,4.065675211E1 +1.053171000E3,3.851226965E1 +1.053417000E3,3.833414863E1 +1.053702000E3,3.734543870E1 +1.053967000E3,4.406198141E1 +1.054269000E3,3.397952572E1 +1.054518000E3,3.018425986E1 +1.054795000E3,2.659023927E1 +1.055055000E3,3.230579484E1 +1.055319000E3,4.027650377E1 +1.055588000E3,3.256611719E1 +1.055936000E3,3.203904394E1 +1.056189000E3,3.024692018E1 +1.056469000E3,4.044611203E1 +1.056698000E3,3.245705712E1 +1.056956000E3,5.087039919E1 +1.057201000E3,5.278557071E1 +1.057507000E3,6.996122129E1 +1.057766000E3,6.951439283E1 +1.058027000E3,6.731609209E1 +1.058291000E3,5.787293958E1 +1.058571000E3,5.774874245E1 +1.058801000E3,5.291748766E1 +1.059132000E3,4.352220528E1 +1.059391000E3,5.556254729E1 +1.059665000E3,5.339220405E1 +1.059951000E3,5.593145301E1 +1.060235000E3,5.299996372E1 +1.060492000E3,4.882317894E1 +1.060733000E3,3.790707311E1 +1.060975000E3,3.470192076E1 +1.061278000E3,4.481563830E1 +1.061519000E3,4.823008935E1 +1.061816000E3,4.719850269E1 +1.062076000E3,4.706381680E1 +1.062331000E3,4.530378435E1 +1.062576000E3,3.456809562E1 +1.062882000E3,3.742453964E1 +1.063154000E3,3.905594906E1 +1.063397000E3,3.672857244E1 +1.063694000E3,2.941779164E1 +1.063926000E3,2.995931983E1 +1.064168000E3,3.455311118E1 +1.064461000E3,3.254662869E1 +1.064708000E3,3.652583843E1 +1.065001000E3,5.229424666E1 +1.065352000E3,5.178814165E1 +1.065606000E3,4.798098259E1 +1.065854000E3,3.636652329E1 +1.066121000E3,4.558252535E1 +1.066366000E3,3.902840121E1 +1.066629000E3,3.106435508E1 +1.066887000E3,2.541330464E1 +1.067179000E3,3.474902335E1 +1.067449000E3,4.492275189E1 +1.067698000E3,3.860211372E1 +1.067955000E3,4.332670525E1 +1.068251000E3,5.147667691E1 +1.068546000E3,5.152069997E1 +1.068797000E3,4.540650098E1 +1.069105000E3,4.486446450E1 +1.069378000E3,4.196481867E1 +1.069632000E3,4.863200791E1 +1.069908000E3,3.878967071E1 +1.070151000E3,3.630888030E1 +1.070413000E3,2.964429880E1 +1.070682000E3,3.354707636E1 +1.070956000E3,4.008490969E1 +1.071248000E3,3.576577653E1 +1.071553000E3,4.349754488E1 +1.071886000E3,3.824859907E1 +1.072130000E3,3.455877689E1 +1.072406000E3,3.622999465E1 +1.072717000E3,3.637608237E1 +1.072984000E3,3.645219519E1 +1.073255000E3,4.353729148E1 +1.073603000E3,4.287473251E1 +1.073856000E3,4.842203791E1 +1.074097000E3,4.484407311E1 +1.074356000E3,4.397007110E1 +1.074628000E3,4.695884235E1 +1.074931000E3,4.627189963E1 +1.075264000E3,4.689571524E1 +1.075614000E3,5.203841291E1 +1.075923000E3,4.610184941E1 +1.076163000E3,4.404432471E1 +1.076475000E3,4.923215011E1 +1.076765000E3,4.466142180E1 +1.077062000E3,4.987282715E1 +1.077375000E3,4.461839454E1 +1.077687000E3,5.085403766E1 +1.077991000E3,4.674512295E1 +1.078232000E3,5.167180279E1 +1.078544000E3,4.780582457E1 +1.078939000E3,4.593914406E1 +1.079187000E3,4.061652220E1 +1.079434000E3,4.347669045E1 +1.079712000E3,4.326983820E1 +1.079966000E3,3.511950991E1 +1.080260000E3,4.755279745E1 +1.080506000E3,4.756343862E1 +1.080756000E3,4.779732167E1 +1.081049000E3,4.991962747E1 +1.081293000E3,5.213887128E1 +1.081586000E3,5.357624469E1 +1.081916000E3,5.141456645E1 +1.082165000E3,5.036532462E1 +1.082460000E3,4.962769973E1 +1.082696000E3,4.506404490E1 +1.082988000E3,4.537987312E1 +1.083220000E3,4.738457007E1 +1.083529000E3,4.698711193E1 +1.083769000E3,4.571430081E1 +1.084079000E3,4.980908007E1 +1.084324000E3,5.082282040E1 +1.084590000E3,5.406004268E1 +1.084876000E3,5.436375886E1 +1.085258000E3,5.361506257E1 +1.085509000E3,5.202937925E1 +1.085815000E3,5.324976969E1 +1.086057000E3,5.371445731E1 +1.086301000E3,5.282162917E1 +1.086550000E3,5.221281857E1 +1.086802000E3,5.263727375E1 +1.087126000E3,5.703022139E1 +1.087384000E3,5.519432869E1 +1.087646000E3,5.426647490E1 +1.087939000E3,5.407342864E1 +1.088175000E3,5.235924404E1 +1.088520000E3,4.681002832E1 +1.088812000E3,4.891237586E1 +1.089076000E3,4.699020733E1 +1.089350000E3,4.902871382E1 +1.089591000E3,5.078145117E1 +1.089837000E3,5.041791921E1 +1.090133000E3,4.603650794E1 +1.090430000E3,4.871755485E1 +1.090660000E3,5.111421073E1 +1.090911000E3,4.581894631E1 +1.091248000E3,4.988189917E1 +1.091630000E3,5.341365920E1 +1.091902000E3,4.962858025E1 +1.092183000E3,4.315344358E1 +1.092440000E3,4.664431132E1 +1.092683000E3,4.616459192E1 +1.092923000E3,4.765071496E1 +1.093171000E3,4.163360687E1 +1.093473000E3,4.537777608E1 +1.093714000E3,4.783603025E1 +1.094007000E3,4.845414260E1 +1.094261000E3,4.799870549E1 +1.094499000E3,4.651309815E1 +1.094792000E3,5.003648984E1 +1.095123000E3,5.202534254E1 +1.095372000E3,5.709400077E1 +1.095625000E3,5.694079106E1 +1.095896000E3,5.715452089E1 +1.096196000E3,5.523378380E1 +1.096438000E3,5.375558627E1 +1.096737000E3,5.665208041E1 +1.096991000E3,5.314654737E1 +1.097292000E3,5.142447849E1 +1.097557000E3,5.330628285E1 +1.097827000E3,5.512040694E1 +1.098167000E3,5.399583122E1 +1.098472000E3,5.540663813E1 +1.098720000E3,5.200546986E1 +1.098960000E3,4.676140326E1 +1.099243000E3,4.798657093E1 +1.099544000E3,4.841724285E1 +1.099804000E3,5.642371618E1 +1.100109000E3,5.409000726E1 +1.100381000E3,5.348646719E1 +1.100630000E3,5.346537578E1 +1.100927000E3,5.422782845E1 +1.101164000E3,5.395323822E1 +1.101495000E3,5.383967560E1 +1.101763000E3,5.667828538E1 +1.102044000E3,4.764690784E1 +1.102307000E3,5.353530254E1 +1.102613000E3,5.568430762E1 +1.102906000E3,5.431580275E1 +1.103147000E3,5.193331555E1 +1.103441000E3,5.040945762E1 +1.103677000E3,5.333005838E1 +1.103968000E3,4.947534745E1 +1.104272000E3,5.306270968E1 +1.104564000E3,5.537230515E1 +1.104799000E3,4.876041085E1 +1.105069000E3,5.109409535E1 +1.105330000E3,5.087734214E1 +1.105587000E3,5.225642483E1 +1.105838000E3,5.176680091E1 +1.106135000E3,5.535939212E1 +1.106380000E3,5.666892185E1 +1.106622000E3,5.658846562E1 +1.106895000E3,5.577897889E1 +1.107150000E3,5.157178717E1 +1.107431000E3,5.284488409E1 +1.107756000E3,5.415639955E1 +1.108002000E3,5.465643057E1 +1.108313000E3,4.654328988E1 +1.108563000E3,5.038890380E1 +1.108811000E3,4.602751738E1 +1.109073000E3,4.801243396E1 +1.109375000E3,4.782472616E1 +1.109667000E3,4.666447221E1 +1.109943000E3,5.156469126E1 +1.110192000E3,4.949682888E1 +1.110448000E3,4.919673339E1 +1.110752000E3,4.862521519E1 +1.111045000E3,5.122379655E1 +1.111295000E3,4.813892217E1 +1.111515000E3,4.901611396E1 +1.111761000E3,4.905664967E1 +1.112005000E3,4.647618514E1 +1.112265000E3,4.730688076E1 +1.112537000E3,5.039121351E1 +1.112793000E3,4.985611957E1 +1.113101000E3,5.474563863E1 +1.113387000E3,5.028870882E1 +1.113678000E3,5.073784750E1 +1.113952000E3,4.995138555E1 +1.114291000E3,4.790039203E1 +1.114554000E3,4.764335594E1 +1.114849000E3,5.057104591E1 +1.115096000E3,5.107398730E1 +1.115401000E3,4.800391913E1 +1.115672000E3,4.553282874E1 +1.115895000E3,4.569523337E1 +1.116194000E3,4.480844215E1 +1.116425000E3,4.772339962E1 +1.116664000E3,5.255452638E1 +1.116906000E3,4.927433934E1 +1.117202000E3,4.871369865E1 +1.117530000E3,4.928110420E1 +1.117840000E3,5.705383563E1 +1.118146000E3,4.880674861E1 +1.118418000E3,5.038180726E1 +1.118687000E3,5.145980404E1 +1.118950000E3,5.338008269E1 +1.119227000E3,5.227728425E1 +1.119468000E3,5.450689216E1 +1.119736000E3,5.844246451E1 +1.120049000E3,5.459398611E1 +1.120351000E3,5.526423567E1 +1.120605000E3,5.228963309E1 +1.120918000E3,5.598288902E1 +1.121182000E3,5.280889802E1 +1.121489000E3,4.974717420E1 +1.121729000E3,5.137523152E1 +1.121978000E3,5.052356297E1 +1.122235000E3,5.240368249E1 +1.122503000E3,4.826380791E1 +1.122775000E3,5.095403791E1 +1.123036000E3,5.799909934E1 +1.123291000E3,4.889512711E1 +1.123587000E3,5.622808486E1 +1.123874000E3,5.230369090E1 +1.124235000E3,5.081102316E1 +1.124544000E3,5.628773803E1 +1.124826000E3,5.810547372E1 +1.125153000E3,5.508029719E1 +1.125432000E3,5.576573503E1 +1.125722000E3,5.346022180E1 +1.125978000E3,5.279748306E1 +1.126234000E3,5.604802053E1 +1.126502000E3,5.937326657E1 +1.126804000E3,5.703447215E1 +1.127047000E3,5.520354594E1 +1.127314000E3,5.551787326E1 +1.127554000E3,5.740837773E1 +1.127843000E3,5.663015330E1 +1.128135000E3,5.649615150E1 +1.128380000E3,5.731556257E1 +1.128677000E3,6.079986861E1 +1.128914000E3,5.820128856E1 +1.129207000E3,6.091746513E1 +1.129442000E3,6.126941240E1 +1.129745000E3,4.541170906E1 +1.129980000E3,4.341485096E1 +1.130277000E3,4.833777967E1 +1.130573000E3,4.472710223E1 +1.130815000E3,5.059675199E1 +1.131062000E3,3.863826940E1 +1.131353000E3,4.925455740E1 +1.131589000E3,4.859989956E1 +1.131881000E3,5.113067908E1 +1.132117000E3,5.054542106E1 +1.132418000E3,4.827479925E1 +1.132654000E3,4.610884488E1 +1.132948000E3,4.879734536E1 +1.133241000E3,5.074680390E1 +1.133563000E3,5.119298220E1 +1.133864000E3,4.861265792E1 +1.134166000E3,5.001512903E1 +1.134452000E3,5.059053464E1 +1.134716000E3,4.999839479E1 +1.134967000E3,4.960069086E1 +1.135222000E3,5.320256888E1 +1.135494000E3,5.604818163E1 +1.135742000E3,5.625768045E1 +1.135999000E3,5.261645024E1 +1.136244000E3,5.105081932E1 +1.136501000E3,5.616444939E1 +1.136847000E3,5.624064264E1 +1.137105000E3,5.654097446E1 +1.137391000E3,5.807884104E1 +1.137717000E3,5.436169891E1 +1.137970000E3,5.763959225E1 +1.138239000E3,5.465216875E1 +1.138486000E3,5.094509116E1 +1.138731000E3,5.425415233E1 +1.138977000E3,5.143709697E1 +1.139259000E3,5.032545705E1 +1.139527000E3,5.906031130E1 +1.139800000E3,5.308709054E1 +1.140168000E3,5.407062541E1 +1.140423000E3,5.585261351E1 +1.140694000E3,5.463535881E1 +1.140949000E3,5.407603664E1 +1.141230000E3,5.495767686E1 +1.141512000E3,5.639433741E1 +1.141818000E3,5.555715330E1 +1.142072000E3,5.729232944E1 +1.142323000E3,5.553013253E1 +1.142578000E3,5.648251207E1 +1.142844000E3,5.786931075E1 +1.143143000E3,6.007493220E1 +1.143523000E3,5.752076543E1 +1.143836000E3,5.573324560E1 +1.144090000E3,5.641950784E1 +1.144396000E3,5.532270625E1 +1.144644000E3,5.561239732E1 +1.144940000E3,5.206707456E1 +1.145212000E3,5.092140902E1 +1.145511000E3,5.452891649E1 +1.145770000E3,5.331137977E1 +1.146042000E3,5.366568195E1 +1.146338000E3,5.227174013E1 +1.146650000E3,5.423955559E1 +1.146934000E3,5.781916580E1 +1.147218000E3,5.532962824E1 +1.147467000E3,5.502661676E1 +1.147687000E3,5.823979674E1 +1.147961000E3,5.538066560E1 +1.148276000E3,5.423260060E1 +1.148528000E3,5.197461977E1 +1.148799000E3,5.154724487E1 +1.149057000E3,5.473685923E1 +1.149367000E3,5.647867848E1 +1.149660000E3,5.489455072E1 +1.150037000E3,6.072892064E1 +1.150335000E3,5.543869835E1 +1.150594000E3,5.667713742E1 +1.150870000E3,5.818755157E1 +1.151164000E3,5.210849760E1 +1.151411000E3,5.095671455E1 +1.151703000E3,5.254983272E1 +1.152002000E3,5.585064224E1 +1.152253000E3,5.739007574E1 +1.152582000E3,5.895179917E1 +1.152860000E3,5.461317681E1 +1.153122000E3,5.345759293E1 +1.153381000E3,5.267971619E1 +1.153684000E3,6.006602205E1 +1.153986000E3,5.573552061E1 +1.154286000E3,5.518963618E1 +1.154531000E3,5.342922095E1 +1.154792000E3,5.257536969E1 +1.155139000E3,4.887945516E1 +1.155435000E3,4.702411688E1 +1.155680000E3,4.867646616E1 +1.155978000E3,4.811861077E1 +1.156361000E3,4.915586406E1 +1.156670000E3,5.033026069E1 +1.156976000E3,5.393908378E1 +1.157274000E3,5.295128205E1 +1.157524000E3,5.249671789E1 +1.157816000E3,5.314344994E1 +1.158052000E3,5.237342933E1 +1.158353000E3,5.300284286E1 +1.158590000E3,5.170068449E1 +1.158867000E3,5.174146304E1 +1.159147000E3,4.929588783E1 +1.159411000E3,5.699090425E1 +1.159752000E3,5.266690351E1 +1.160068000E3,5.746767577E1 +1.160360000E3,5.375850846E1 +1.160640000E3,5.373794020E1 +1.160985000E3,5.304914530E1 +1.161280000E3,5.198754593E1 +1.161525000E3,5.019848207E1 +1.161766000E3,5.164623609E1 +1.162020000E3,5.363319210E1 +1.162324000E3,5.439011044E1 +1.162564000E3,5.304648945E1 +1.162816000E3,5.174573718E1 +1.163177000E3,4.505755779E1 +1.163462000E3,4.894753105E1 +1.163738000E3,5.064933943E1 +1.164013000E3,5.245879056E1 +1.164255000E3,5.017914517E1 +1.164568000E3,5.189205429E1 +1.164823000E3,5.038961444E1 +1.165052000E3,5.072118593E1 +1.165297000E3,4.831662547E1 +1.165552000E3,5.050204887E1 +1.165808000E3,5.308107982E1 +1.166062000E3,4.878509871E1 +1.166392000E3,5.002605106E1 +1.166654000E3,5.320265697E1 +1.166911000E3,4.403273534E1 +1.167180000E3,5.161386051E1 +1.167455000E3,4.986209571E1 +1.167692000E3,4.993305836E1 +1.167973000E3,5.173621365E1 +1.168216000E3,5.385559129E1 +1.168491000E3,5.543019156E1 +1.168757000E3,5.019966657E1 +1.169035000E3,5.569516326E1 +1.169296000E3,5.216419082E1 +1.169676000E3,5.398731996E1 +1.169933000E3,5.465625282E1 +1.170197000E3,5.451774184E1 +1.170449000E3,5.328129322E1 +1.170705000E3,5.452639907E1 +1.170963000E3,5.713735254E1 +1.171272000E3,5.551413923E1 +1.171528000E3,5.604966001E1 +1.171779000E3,5.340478404E1 +1.172038000E3,5.107817821E1 +1.172291000E3,5.218990306E1 +1.172602000E3,4.830451720E1 +1.172964000E3,5.276802164E1 +1.173245000E3,5.191204687E1 +1.173527000E3,5.337367972E1 +1.173838000E3,5.462664550E1 +1.174090000E3,5.304724513E1 +1.174379000E3,5.193251440E1 +1.174628000E3,5.283915893E1 +1.174936000E3,5.036641160E1 +1.175236000E3,4.890810708E1 +1.175487000E3,4.805298565E1 +1.175750000E3,5.067335741E1 +1.176019000E3,4.961207397E1 +1.176335000E3,4.820862314E1 +1.176634000E3,5.328684116E1 +1.176883000E3,5.122009001E1 +1.177165000E3,5.878687770E1 +1.177412000E3,5.487235950E1 +1.177709000E3,5.224569426E1 +1.178006000E3,5.403405997E1 +1.178246000E3,5.388661901E1 +1.178490000E3,5.237426881E1 +1.178734000E3,5.372043820E1 +1.179050000E3,5.471170909E1 +1.179387000E3,5.129350436E1 +1.179686000E3,4.660070824E1 +1.179916000E3,4.541361068E1 +1.180159000E3,4.365576113E1 +1.180466000E3,4.771103553E1 +1.180756000E3,4.863237791E1 +1.181008000E3,5.534959697E1 +1.181314000E3,5.376444060E1 +1.181609000E3,5.130885425E1 +1.181851000E3,5.256948786E1 +1.182151000E3,5.321964637E1 +1.182393000E3,5.074776981E1 +1.182622000E3,4.979941250E1 +1.182873000E3,5.445637667E1 +1.183116000E3,4.449721128E1 +1.183420000E3,5.086906199E1 +1.183676000E3,5.067998506E1 +1.183927000E3,5.352019181E1 +1.184219000E3,4.851971310E1 +1.184517000E3,5.123853013E1 +1.184764000E3,5.278221141E1 +1.185010000E3,5.126409245E1 +1.185297000E3,5.249182764E1 +1.185665000E3,5.346599478E1 +1.185972000E3,5.052250297E1 +1.186225000E3,5.389354916E1 +1.186534000E3,5.372737626E1 +1.186796000E3,5.415645782E1 +1.187048000E3,5.441424865E1 +1.187317000E3,5.470553815E1 +1.187622000E3,5.559990781E1 +1.187913000E3,5.619293356E1 +1.188186000E3,4.869472445E1 +1.188442000E3,5.069948923E1 +1.188718000E3,5.296813397E1 +1.189051000E3,5.015003063E1 +1.189308000E3,5.110938827E1 +1.189570000E3,5.250182053E1 +1.189815000E3,5.240850659E1 +1.190062000E3,5.446862868E1 +1.190368000E3,5.270463767E1 +1.190629000E3,5.117539458E1 +1.190931000E3,5.543767536E1 +1.191207000E3,5.348622922E1 +1.191505000E3,5.112152946E1 +1.191761000E3,4.905277341E1 +1.192068000E3,5.456405848E1 +1.192487000E3,5.016322677E1 +1.192732000E3,4.971711263E1 +1.192976000E3,5.396031961E1 +1.193258000E3,5.018645567E1 +1.193531000E3,4.895586707E1 +1.193790000E3,5.442023654E1 +1.194055000E3,5.160697029E1 +1.194326000E3,4.822365107E1 +1.194605000E3,5.396633777E1 +1.194903000E3,5.031021734E1 +1.195141000E3,5.278015326E1 +1.195431000E3,4.949576105E1 +1.195801000E3,5.244682833E1 +1.196076000E3,5.508575727E1 +1.196371000E3,5.161802747E1 +1.196603000E3,5.716896987E1 +1.196858000E3,5.210002974E1 +1.197207000E3,5.483594793E1 +1.197503000E3,5.204828926E1 +1.197774000E3,5.339169315E1 +1.198054000E3,4.934781945E1 +1.198312000E3,5.918797425E1 +1.198559000E3,5.025254784E1 +1.198808000E3,5.317746302E1 +1.199152000E3,5.656715516E1 +1.199464000E3,5.448426177E1 +1.199717000E3,5.419526565E1 +1.199961000E3,5.304156540E1 +1.200219000E3,4.961182292E1 +1.200480000E3,5.259766625E1 +1.200730000E3,5.295115767E1 +1.201029000E3,5.365389524E1 +1.201288000E3,5.465027972E1 +1.201538000E3,5.131261505E1 +1.201807000E3,5.767453751E1 +1.202112000E3,5.316006082E1 +1.202485000E3,5.263333972E1 +1.202739000E3,4.966297173E1 +1.203041000E3,5.282706501E1 +1.203300000E3,4.950274237E1 +1.203539000E3,4.377779375E1 +1.203832000E3,5.274682795E1 +1.204077000E3,5.348405653E1 +1.204320000E3,5.647600154E1 +1.204615000E3,4.835002395E1 +1.204854000E3,4.440243109E1 +1.205149000E3,4.673035253E1 +1.205410000E3,4.901106802E1 +1.205666000E3,5.311033159E1 +1.205952000E3,5.020567211E1 +1.206248000E3,5.046889058E1 +1.206545000E3,6.150607502E1 +1.206779000E3,5.260331634E1 +1.207093000E3,5.183291791E1 +1.207367000E3,4.957331060E1 +1.207610000E3,5.139200370E1 +1.207857000E3,5.005726187E1 +1.208158000E3,4.979521937E1 +1.208398000E3,5.178137337E1 +1.208738000E3,4.632694184E1 +1.208994000E3,4.836915777E1 +1.209279000E3,4.869228435E1 +1.209528000E3,5.096507040E1 +1.209784000E3,4.718590489E1 +1.210053000E3,4.835967114E1 +1.210281000E3,4.725223201E1 +1.210542000E3,5.172958855E1 +1.210823000E3,5.546336112E1 +1.211051000E3,5.448218663E1 +1.211300000E3,5.371995163E1 +1.211551000E3,4.887559574E1 +1.211926000E3,4.975732945E1 +1.212205000E3,5.041543230E1 +1.212482000E3,4.863959509E1 +1.212730000E3,5.047232348E1 +1.212990000E3,4.824384094E1 +1.213232000E3,5.039377586E1 +1.213493000E3,4.517891187E1 +1.213814000E3,4.686032989E1 +1.214062000E3,4.852263494E1 +1.214337000E3,4.897277606E1 +1.214586000E3,4.662047985E1 +1.214832000E3,5.483925472E1 +1.215143000E3,5.677489998E1 +1.215372000E3,5.470688254E1 +1.215664000E3,5.408747991E1 +1.215962000E3,5.167832591E1 +1.216227000E3,5.463116224E1 +1.216504000E3,5.335564969E1 +1.216747000E3,4.832376612E1 +1.216996000E3,4.918538596E1 +1.217306000E3,5.329611015E1 +1.217618000E3,5.364881155E1 +1.217885000E3,5.087209115E1 +1.218149000E3,4.967310650E1 +1.218497000E3,4.842689624E1 +1.218801000E3,5.442588779E1 +1.219043000E3,5.338467746E1 +1.219349000E3,5.187371665E1 +1.219600000E3,4.992515182E1 +1.219883000E3,5.205809257E1 +1.220161000E3,5.374364962E1 +1.220471000E3,5.145920034E1 +1.220752000E3,5.112774200E1 +1.221009000E3,4.969936214E1 +1.221258000E3,4.906585252E1 +1.221519000E3,4.971022706E1 +1.221873000E3,5.039216656E1 +1.222125000E3,4.735018859E1 +1.222388000E3,5.025223930E1 +1.222647000E3,5.349102952E1 +1.222903000E3,5.894430216E1 +1.223210000E3,5.133834742E1 +1.223464000E3,5.378681025E1 +1.223708000E3,5.646161983E1 +1.223949000E3,5.127610878E1 +1.224189000E3,5.295211205E1 +1.224441000E3,5.074229414E1 +1.224698000E3,5.428527885E1 +1.225064000E3,6.064230054E1 +1.225333000E3,5.545461106E1 +1.225591000E3,5.085263163E1 +1.225847000E3,4.867332677E1 +1.226137000E3,4.828036819E1 +1.226394000E3,5.187031217E1 +1.226668000E3,4.691949774E1 +1.226931000E3,4.605300024E1 +1.227219000E3,4.319091646E1 +1.227493000E3,4.827268256E1 +1.227791000E3,4.873371181E1 +1.228031000E3,4.895629331E1 +1.228388000E3,4.831306026E1 +1.228651000E3,5.150144778E1 +1.228942000E3,5.210555115E1 +1.229190000E3,4.868630793E1 +1.229442000E3,5.072280558E1 +1.229686000E3,5.520857657E1 +1.229933000E3,5.597505745E1 +1.230228000E3,5.309096620E1 +1.230467000E3,5.340491117E1 +1.230765000E3,4.966814228E1 +1.231012000E3,4.811713105E1 +1.231316000E3,5.037869561E1 +1.231666000E3,4.768651081E1 +1.231948000E3,4.577834304E1 +1.232207000E3,4.455407567E1 +1.232510000E3,5.091422235E1 +1.232802000E3,4.990562511E1 +1.233047000E3,5.178152081E1 +1.233344000E3,5.312014577E1 +1.233592000E3,5.002236071E1 +1.233892000E3,5.158473192E1 +1.234173000E3,4.692863129E1 +1.234463000E3,4.643331531E1 +1.234792000E3,4.659156592E1 +1.235060000E3,4.662718910E1 +1.235313000E3,5.204491267E1 +1.235577000E3,5.165973487E1 +1.235837000E3,4.753691687E1 +1.236124000E3,5.179615379E1 +1.236401000E3,4.807409380E1 +1.236654000E3,5.474790946E1 +1.236923000E3,4.946475170E1 +1.237180000E3,4.949471083E1 +1.237426000E3,4.669168363E1 +1.237743000E3,5.529942944E1 +1.238061000E3,5.997488643E1 +1.238363000E3,5.302222406E1 +1.238611000E3,5.022506453E1 +1.238856000E3,4.864145193E1 +1.239102000E3,5.299123845E1 +1.239357000E3,4.682866815E1 +1.239657000E3,4.770894983E1 +1.239902000E3,4.813746372E1 +1.240150000E3,4.571771059E1 +1.240465000E3,5.354012247E1 +1.240765000E3,5.830707734E1 +1.241013000E3,5.483189048E1 +1.241344000E3,5.157405593E1 +1.241606000E3,5.072581437E1 +1.241868000E3,5.137979859E1 +1.242133000E3,4.849261303E1 +1.242396000E3,5.556107710E1 +1.242656000E3,4.958779284E1 +1.242959000E3,5.301548021E1 +1.243232000E3,5.475621292E1 +1.243501000E3,5.660789219E1 +1.243755000E3,5.350018163E1 +1.244010000E3,5.415674835E1 +1.244349000E3,5.699979568E1 +1.244717000E3,5.660044844E1 +1.245015000E3,5.808533709E1 +1.245259000E3,5.881859790E1 +1.245558000E3,5.728882886E1 +1.245808000E3,6.044308225E1 +1.246079000E3,5.893900513E1 +1.246326000E3,5.279872381E1 +1.246637000E3,5.769196864E1 +1.246935000E3,5.963088900E1 +1.247181000E3,5.367341836E1 +1.247508000E3,4.963645506E1 +1.247848000E3,5.265770489E1 +1.248115000E3,5.355743381E1 +1.248359000E3,4.891015342E1 +1.248659000E3,4.819353582E1 +1.248902000E3,4.966403220E1 +1.249199000E3,4.977495696E1 +1.249449000E3,5.715212626E1 +1.249708000E3,5.458337902E1 +1.249983000E3,4.910795823E1 +1.250282000E3,5.184902745E1 +1.250527000E3,5.416053460E1 +1.250777000E3,5.320773170E1 +1.251084000E3,5.422274265E1 +1.251342000E3,5.429456299E1 +1.251602000E3,5.910733722E1 +1.251866000E3,5.226490816E1 +1.252178000E3,5.191466859E1 +1.252452000E3,5.143339371E1 +1.252681000E3,5.066846779E1 +1.252975000E3,4.928639562E1 +1.253256000E3,4.916995298E1 +1.253528000E3,5.115941927E1 +1.253816000E3,4.850268402E1 +1.254063000E3,5.682920937E1 +1.254418000E3,5.583927157E1 +1.254700000E3,5.243405901E1 +1.254947000E3,5.411796563E1 +1.255215000E3,5.538314624E1 +1.255487000E3,5.447026824E1 +1.255748000E3,5.115232974E1 +1.256046000E3,5.273125350E1 +1.256281000E3,5.501639825E1 +1.256559000E3,5.470702619E1 +1.256867000E3,5.330168249E1 +1.257116000E3,5.680033697E1 +1.257361000E3,5.088137081E1 +1.257690000E3,4.771044205E1 +1.257935000E3,5.556188303E1 +1.258189000E3,5.821474305E1 +1.258460000E3,5.913083175E1 +1.258757000E3,5.624840253E1 +1.259001000E3,5.575040009E1 +1.259294000E3,5.295140054E1 +1.259581000E3,5.547885633E1 +1.259831000E3,5.659634167E1 +1.260084000E3,5.552607398E1 +1.260378000E3,5.399987136E1 +1.260676000E3,5.741946227E1 +1.260997000E3,5.622829253E1 +1.261272000E3,5.638519080E1 +1.261569000E3,5.222122782E1 +1.261810000E3,5.168558616E1 +1.262055000E3,5.937417075E1 +1.262351000E3,5.419990938E1 +1.262597000E3,5.469291977E1 +1.262893000E3,5.501007253E1 +1.263142000E3,5.356116387E1 +1.263421000E3,5.643294047E1 +1.263644000E3,5.627927149E1 +1.263964000E3,5.547827797E1 +1.264255000E3,5.434029164E1 +1.264552000E3,5.355134450E1 +1.264791000E3,5.268456483E1 +1.265090000E3,5.304298782E1 +1.265342000E3,5.292557941E1 +1.265637000E3,5.267823535E1 +1.265885000E3,5.076475521E1 +1.266186000E3,5.470463807E1 +1.266480000E3,5.369531663E1 +1.266727000E3,5.321314382E1 +1.267074000E3,5.430022488E1 +1.267386000E3,5.498366079E1 +1.267650000E3,5.373765381E1 +1.267926000E3,5.631680810E1 +1.268156000E3,5.314598601E1 +1.268459000E3,5.446778700E1 +1.268718000E3,5.461487175E1 +1.269029000E3,4.723979401E1 +1.269322000E3,5.050485841E1 +1.269602000E3,5.263446338E1 +1.269914000E3,5.195043172E1 +1.270180000E3,5.361139844E1 +1.270542000E3,5.127785292E1 +1.270796000E3,5.111084292E1 +1.271061000E3,5.030178225E1 +1.271329000E3,4.978955516E1 +1.271616000E3,5.398913319E1 +1.271862000E3,5.537806166E1 +1.272155000E3,5.301545016E1 +1.272407000E3,5.450597504E1 +1.272651000E3,5.090153644E1 +1.272906000E3,5.335437953E1 +1.273148000E3,4.673762491E1 +1.273392000E3,5.062539325E1 +1.273710000E3,5.110756444E1 +1.273960000E3,5.466659884E1 +1.274217000E3,5.158121780E1 +1.274511000E3,5.575560452E1 +1.274759000E3,5.536976579E1 +1.275054000E3,5.425250328E1 +1.275298000E3,5.448034930E1 +1.275544000E3,5.185016662E1 +1.275828000E3,5.206320816E1 +1.276126000E3,5.118466074E1 +1.276376000E3,4.943928704E1 +1.276707000E3,5.090592254E1 +1.276972000E3,5.767487174E1 +1.277251000E3,5.481331862E1 +1.277544000E3,5.385854096E1 +1.277810000E3,5.179333541E1 +1.278097000E3,5.161992279E1 +1.278344000E3,5.248655937E1 +1.278657000E3,5.064236034E1 +1.278927000E3,4.915402835E1 +1.279197000E3,5.321156971E1 +1.279471000E3,5.438812541E1 +1.279734000E3,5.482588411E1 +1.280065000E3,5.157318203E1 +1.280296000E3,5.173449962E1 +1.280546000E3,5.465953878E1 +1.280843000E3,5.457680704E1 +1.281077000E3,5.562152963E1 +1.281325000E3,5.460406982E1 +1.281570000E3,5.232421403E1 +1.281870000E3,5.207576719E1 +1.282135000E3,4.968186040E1 +1.282378000E3,5.237915347E1 +1.282628000E3,4.745539727E1 +1.282877000E3,5.255989147E1 +1.283195000E3,5.301690658E1 +1.283467000E3,5.283539029E1 +1.283717000E3,5.083105477E1 +1.283978000E3,4.559322742E1 +1.284235000E3,4.934435088E1 +1.284538000E3,5.265118466E1 +1.284812000E3,5.302155906E1 +1.285045000E3,5.294725202E1 +1.285352000E3,5.129236762E1 +1.285646000E3,5.402858483E1 +1.285898000E3,5.434527110E1 +1.286189000E3,5.525625388E1 +1.286515000E3,5.653073998E1 +1.286819000E3,5.704731902E1 +1.287101000E3,5.310035962E1 +1.287387000E3,5.474072190E1 +1.287649000E3,5.496979063E1 +1.287925000E3,5.528941101E1 +1.288193000E3,5.394330028E1 +1.288492000E3,4.829171318E1 +1.288740000E3,5.076324605E1 +1.289004000E3,4.673843249E1 +1.289280000E3,5.345749476E1 +1.289584000E3,4.955238815E1 +1.289923000E3,5.268555513E1 +1.290206000E3,5.092762320E1 +1.290445000E3,5.180504716E1 +1.290779000E3,5.421996562E1 +1.291081000E3,5.408565728E1 +1.291322000E3,5.466627749E1 +1.291622000E3,5.247549140E1 +1.291870000E3,5.438915347E1 +1.292125000E3,5.526358440E1 +1.292428000E3,5.407200655E1 +1.292723000E3,5.160593410E1 +1.293035000E3,5.231731426E1 +1.293342000E3,5.126765219E1 +1.293626000E3,4.802016847E1 +1.293922000E3,5.428603515E1 +1.294199000E3,5.305841291E1 +1.294451000E3,5.676250586E1 +1.294738000E3,5.921971496E1 +1.295005000E3,5.812051865E1 +1.295266000E3,5.671365947E1 +1.295512000E3,5.389157640E1 +1.295809000E3,5.417883641E1 +1.296087000E3,5.169085532E1 +1.296408000E3,5.027989141E1 +1.296704000E3,5.801273246E1 +1.296951000E3,5.777618357E1 +1.297241000E3,5.598217178E1 +1.297547000E3,5.590671112E1 +1.297806000E3,6.302454961E1 +1.298073000E3,5.716944646E1 +1.298330000E3,5.693666329E1 +1.298591000E3,5.374930006E1 +1.298851000E3,5.170089530E1 +1.299100000E3,6.243829367E1 +1.299340000E3,5.522680485E1 +1.299673000E3,5.451288060E1 +1.299933000E3,5.720613947E1 +1.300193000E3,5.131457759E1 +1.300510000E3,5.593393786E1 +1.300810000E3,5.344184529E1 +1.301099000E3,5.432320381E1 +1.301355000E3,5.294046944E1 +1.301602000E3,5.330691828E1 +1.301911000E3,4.899471979E1 +1.302175000E3,5.054546621E1 +1.302420000E3,4.914598102E1 +1.302706000E3,5.757950400E1 +1.303045000E3,5.798603958E1 +1.303343000E3,5.685278830E1 +1.303584000E3,5.272645619E1 +1.303869000E3,5.576083132E1 +1.304169000E3,5.311655900E1 +1.304414000E3,5.297304035E1 +1.304724000E3,6.119658997E1 +1.304998000E3,5.921259630E1 +1.305275000E3,5.974785927E1 +1.305567000E3,5.829108198E1 +1.305799000E3,5.656256791E1 +1.306151000E3,5.263150293E1 +1.306475000E3,5.719715846E1 +1.306754000E3,5.746813017E1 +1.307020000E3,6.063794361E1 +1.307320000E3,5.945639283E1 +1.307570000E3,5.898495898E1 +1.307856000E3,5.345744690E1 +1.308127000E3,5.882374416E1 +1.308390000E3,5.704844280E1 +1.308660000E3,6.230218860E1 +1.308982000E3,5.794977886E1 +1.309252000E3,5.609480230E1 +1.309620000E3,5.439173238E1 +1.309924000E3,5.804315704E1 +1.310253000E3,5.898090143E1 +1.310510000E3,5.933785859E1 +1.310826000E3,5.484966867E1 +1.311077000E3,5.841635068E1 +1.311358000E3,5.536029260E1 +1.311601000E3,5.555523834E1 +1.311895000E3,5.637714479E1 +1.312195000E3,5.253312652E1 +1.312445000E3,5.377927694E1 +1.312696000E3,5.757954833E1 +1.313038000E3,5.500733438E1 +1.313282000E3,5.367385274E1 +1.313558000E3,5.610715122E1 +1.313797000E3,5.528556803E1 +1.314063000E3,5.884958532E1 +1.314412000E3,5.458036035E1 +1.314671000E3,5.765344335E1 +1.314945000E3,5.139756723E1 +1.315223000E3,5.546002517E1 +1.315503000E3,5.608276603E1 +1.315733000E3,5.719791479E1 +1.315986000E3,5.413888898E1 +1.316329000E3,5.789500166E1 +1.316579000E3,5.404086097E1 +1.316819000E3,6.021843554E1 +1.317067000E3,5.929690830E1 +1.317365000E3,6.066063258E1 +1.317666000E3,5.465341745E1 +1.317917000E3,5.115712079E1 +1.318169000E3,4.986479689E1 +1.318470000E3,5.351977371E1 +1.318716000E3,5.614277654E1 +1.318987000E3,5.824140620E1 +1.319280000E3,5.863858703E1 +1.319646000E3,5.908977231E1 +1.319902000E3,5.867594430E1 +1.320142000E3,5.256185028E1 +1.320379000E3,5.916248935E1 +1.320672000E3,5.829134786E1 +1.320910000E3,5.729121950E1 +1.321203000E3,5.817253701E1 +1.321434000E3,5.958327052E1 +1.321726000E3,6.109571062E1 +1.321963000E3,6.309400740E1 +1.322263000E3,6.381431561E1 +1.322586000E3,6.124594205E1 +1.322839000E3,6.120886427E1 +1.323128000E3,5.624496406E1 +1.323377000E3,6.205845751E1 +1.323676000E3,6.248705287E1 +1.323968000E3,6.259357777E1 +1.324217000E3,6.168308921E1 +1.324496000E3,6.128297543E1 +1.324731000E3,5.975404370E1 +1.325024000E3,6.147148959E1 +1.325261000E3,6.101142333E1 +1.325573000E3,5.682124874E1 +1.325854000E3,5.869490284E1 +1.326149000E3,5.646663249E1 +1.326392000E3,5.662110608E1 +1.326643000E3,5.067702480E1 +1.326984000E3,5.759763927E1 +1.327264000E3,5.613584630E1 +1.327489000E3,5.826097161E1 +1.327735000E3,5.843702691E1 +1.328012000E3,5.352317094E1 +1.328253000E3,5.737674501E1 +1.328545000E3,5.736811408E1 +1.328911000E3,5.477233671E1 +1.329158000E3,5.481436604E1 +1.329403000E3,4.974322484E1 +1.329645000E3,5.490077996E1 +1.329890000E3,4.870505425E1 +1.330144000E3,4.955972956E1 +1.330428000E3,5.470042727E1 +1.330734000E3,5.618884112E1 +1.331026000E3,5.238151215E1 +1.331265000E3,5.344428978E1 +1.331515000E3,5.051963956E1 +1.331772000E3,5.068574448E1 +1.332120000E3,5.754233113E1 +1.332409000E3,5.498832674E1 +1.332740000E3,5.245036701E1 +1.333034000E3,5.885934606E1 +1.333286000E3,5.644915657E1 +1.333540000E3,5.532779852E1 +1.333784000E3,5.694511409E1 +1.334028000E3,5.553937724E1 +1.334302000E3,5.308286554E1 +1.334615000E3,5.140154995E1 +1.334876000E3,5.045296543E1 +1.335187000E3,5.631993217E1 +1.335451000E3,5.435091016E1 +1.335722000E3,5.624357652E1 +1.335986000E3,5.791043400E1 +1.336271000E3,5.847603086E1 +1.336545000E3,5.757219882E1 +1.336794000E3,6.070042624E1 +1.337072000E3,5.247827017E1 +1.337340000E3,5.208145921E1 +1.337609000E3,6.026756153E1 +1.337870000E3,6.012826199E1 +1.338134000E3,5.465450317E1 +1.338408000E3,5.768658418E1 +1.338755000E3,5.542991210E1 +1.339019000E3,5.279974580E1 +1.339289000E3,4.966927449E1 +1.339556000E3,4.563713389E1 +1.339804000E3,4.961972315E1 +1.340056000E3,5.287436972E1 +1.340316000E3,5.318950925E1 +1.340586000E3,5.037908496E1 +1.340881000E3,5.345184090E1 +1.341116000E3,5.016784238E1 +1.341407000E3,5.799295151E1 +1.341694000E3,5.875659808E1 +1.342051000E3,5.666657228E1 +1.342345000E3,5.241270038E1 +1.342638000E3,5.754780266E1 +1.342875000E3,5.669750570E1 +1.343177000E3,5.541629106E1 +1.343432000E3,5.556249818E1 +1.343726000E3,5.603182587E1 +1.343969000E3,5.961525777E1 +1.344257000E3,5.915223521E1 +1.344498000E3,5.820677933E1 +1.344777000E3,5.815031326E1 +1.345094000E3,5.733094423E1 +1.345363000E3,5.538469317E1 +1.345622000E3,6.270903439E1 +1.345877000E3,5.551461514E1 +1.346148000E3,5.750063996E1 +1.346395000E3,5.473739655E1 +1.346676000E3,5.131350753E1 +1.346958000E3,5.072615719E1 +1.347258000E3,4.882711207E1 +1.347518000E3,5.273988371E1 +1.347784000E3,6.269937361E1 +1.348040000E3,6.058958657E1 +1.348391000E3,5.894445662E1 +1.348716000E3,5.683213923E1 +1.348984000E3,5.875140523E1 +1.349236000E3,5.263650529E1 +1.349491000E3,4.630287352E1 +1.349847000E3,5.742006494E1 +1.350115000E3,6.486179330E1 +1.350358000E3,5.963871460E1 +1.350612000E3,5.220281373E1 +1.350868000E3,5.825229613E1 +1.351125000E3,5.822075100E1 +1.351374000E3,5.487419692E1 +1.351666000E3,5.461361208E1 +1.351934000E3,5.384511910E1 +1.352185000E3,5.782109838E1 +1.352440000E3,5.156901690E1 +1.352688000E3,5.262530942E1 +1.352990000E3,5.827406705E1 +1.353265000E3,6.164230870E1 +1.353493000E3,5.939319367E1 +1.353769000E3,5.491407227E1 +1.353989000E3,5.363390940E1 +1.354236000E3,5.108497673E1 +1.354516000E3,6.129017752E1 +1.354836000E3,5.594784457E1 +1.355095000E3,5.172378417E1 +1.355422000E3,5.975901259E1 +1.355685000E3,5.720857994E1 +1.355941000E3,5.600667557E1 +1.356197000E3,5.471836828E1 +1.356478000E3,5.319452565E1 +1.356745000E3,5.296912594E1 +1.357013000E3,5.811625635E1 +1.357280000E3,5.430511038E1 +1.357577000E3,5.277700001E1 +1.357824000E3,5.616769978E1 +1.358135000E3,5.406396803E1 +1.358401000E3,4.910300122E1 +1.358643000E3,5.077236009E1 +1.358892000E3,5.530877446E1 +1.359206000E3,5.787482939E1 +1.359485000E3,5.846197249E1 +1.359760000E3,6.103303991E1 +1.360055000E3,6.092009186E1 +1.360296000E3,5.979156049E1 +1.360590000E3,6.049263298E1 +1.360828000E3,5.895545308E1 +1.361114000E3,5.611946421E1 +1.361473000E3,5.480295831E1 +1.361726000E3,5.397626184E1 +1.361972000E3,5.443193027E1 +1.362314000E3,5.572591927E1 +1.362560000E3,5.224616115E1 +1.362808000E3,5.244486023E1 +1.363061000E3,5.179430466E1 +1.363307000E3,5.228822629E1 +1.363555000E3,5.248152719E1 +1.363850000E3,5.310816898E1 +1.364115000E3,5.586433987E1 +1.364397000E3,5.735023043E1 +1.364703000E3,6.002405491E1 +1.364950000E3,5.692273216E1 +1.365192000E3,5.941823705E1 +1.365459000E3,5.316793659E1 +1.365709000E3,5.869878442E1 +1.365953000E3,5.756526572E1 +1.366216000E3,5.687574379E1 +1.366491000E3,5.232478004E1 +1.366744000E3,5.424491879E1 +1.367001000E3,5.235481979E1 +1.367305000E3,5.164783122E1 +1.367588000E3,4.924997634E1 +1.367934000E3,4.924339558E1 +1.368196000E3,5.793398832E1 +1.368473000E3,5.529211657E1 +1.368719000E3,5.120874356E1 +1.368963000E3,5.470742612E1 +1.369285000E3,5.560989240E1 +1.369528000E3,5.197646059E1 +1.369822000E3,5.152328490E1 +1.370111000E3,5.791930576E1 +1.370416000E3,5.368811562E1 +1.370672000E3,5.769124019E1 +1.370919000E3,5.333549653E1 +1.371292000E3,5.847056292E1 +1.371551000E3,5.642894477E1 +1.371803000E3,5.817537921E1 +1.372074000E3,5.885584750E1 +1.372335000E3,5.395474736E1 +1.372602000E3,5.211537518E1 +1.372880000E3,4.924374923E1 +1.373126000E3,4.882665291E1 +1.373379000E3,5.483140316E1 +1.373636000E3,5.380197532E1 +1.373915000E3,5.629967483E1 +1.374251000E3,5.773524892E1 +1.374636000E3,6.271253195E1 +1.374894000E3,5.870587143E1 +1.375125000E3,5.496954916E1 +1.375369000E3,5.621931219E1 +1.375641000E3,5.700323462E1 +1.375912000E3,5.808968856E1 +1.376161000E3,5.697587873E1 +1.376437000E3,5.739415600E1 +1.376687000E3,5.874614285E1 +1.376941000E3,5.855325473E1 +1.377252000E3,5.287324040E1 +1.377495000E3,5.331405656E1 +1.377862000E3,5.163612814E1 +1.378109000E3,6.003152631E1 +1.378372000E3,6.448039849E1 +1.378641000E3,6.226927373E1 +1.378912000E3,6.355904277E1 +1.379208000E3,6.121718755E1 +1.379463000E3,6.371699462E1 +1.379738000E3,5.774542440E1 +1.380076000E3,5.579766677E1 +1.380318000E3,5.520595979E1 +1.380614000E3,5.395000262E1 +1.380855000E3,5.263752401E1 +1.381221000E3,5.267030150E1 +1.381492000E3,5.304251562E1 +1.381793000E3,4.959737221E1 +1.382100000E3,5.549829026E1 +1.382347000E3,5.821584994E1 +1.382642000E3,5.861199323E1 +1.382905000E3,5.256382895E1 +1.383164000E3,5.491877459E1 +1.383443000E3,5.644995893E1 +1.383702000E3,5.411249990E1 +1.383954000E3,5.324738213E1 +1.384305000E3,5.625052210E1 +1.384532000E3,6.070474662E1 +1.384789000E3,5.237062704E1 +1.385074000E3,5.442107865E1 +1.385361000E3,6.017483878E1 +1.385605000E3,6.237555822E1 +1.385869000E3,5.605951782E1 +1.386126000E3,6.511151133E1 +1.386382000E3,5.571785683E1 +1.386696000E3,5.398201636E1 +1.386954000E3,5.323734283E1 +1.387264000E3,5.635686029E1 +1.387623000E3,5.701357512E1 +1.387874000E3,5.632095063E1 +1.388187000E3,5.288354031E1 +1.388477000E3,5.152350906E1 +1.388761000E3,5.130627857E1 +1.388982000E3,4.918436870E1 +1.389239000E3,5.567775637E1 +1.389545000E3,5.465238648E1 +1.389786000E3,5.003079725E1 +1.390027000E3,5.504486936E1 +1.390282000E3,5.947272344E1 +1.390539000E3,6.106137952E1 +1.390892000E3,5.985290475E1 +1.391203000E3,5.500825546E1 +1.391507000E3,5.157102239E1 +1.391806000E3,5.517662265E1 +1.392108000E3,5.349243854E1 +1.392411000E3,5.386652866E1 +1.392707000E3,5.258839734E1 +1.392973000E3,5.376638351E1 +1.393221000E3,5.619475880E1 +1.393480000E3,5.846509931E1 +1.393767000E3,6.504346680E1 +1.394122000E3,5.865804348E1 +1.394392000E3,5.055217311E1 +1.394673000E3,4.837306759E1 +1.394931000E3,5.564689750E1 +1.395193000E3,5.416088817E1 +1.395489000E3,5.481584764E1 +1.395781000E3,5.356143065E1 +1.396078000E3,5.074158934E1 +1.396313000E3,5.177896206E1 +1.396618000E3,5.670327312E1 +1.396914000E3,6.043149132E1 +1.397246000E3,5.875453471E1 +1.397559000E3,5.725772305E1 +1.397842000E3,5.610169288E1 +1.398092000E3,6.098127982E1 +1.398354000E3,5.385330985E1 +1.398611000E3,5.345613584E1 +1.398873000E3,6.183897473E1 +1.399135000E3,5.898294985E1 +1.399399000E3,5.644599073E1 +1.399662000E3,6.288338842E1 +1.399923000E3,5.844786233E1 +1.400178000E3,6.145207907E1 +1.400438000E3,5.797678971E1 +1.400786000E3,5.805590691E1 +1.401082000E3,5.956739883E1 +1.401323000E3,5.537900496E1 +1.401618000E3,5.084213917E1 +1.401871000E3,4.807017206E1 +1.402118000E3,5.545233073E1 +1.402411000E3,5.516036366E1 +1.402644000E3,5.413431379E1 +1.402920000E3,5.388857626E1 +1.403209000E3,5.292068844E1 +1.403479000E3,5.775211983E1 +1.403718000E3,5.117484548E1 +1.404045000E3,5.912447648E1 +1.404295000E3,5.591921957E1 +1.404568000E3,5.565028551E1 +1.404828000E3,5.013398992E1 +1.405122000E3,5.465164253E1 +1.405364000E3,5.305211462E1 +1.405620000E3,5.755171154E1 +1.405929000E3,6.007655449E1 +1.406174000E3,5.899920387E1 +1.406463000E3,5.970773629E1 +1.406720000E3,5.770443308E1 +1.407009000E3,5.521297881E1 +1.407407000E3,5.604277064E1 +1.407677000E3,5.646208540E1 +1.407969000E3,4.906112006E1 +1.408239000E3,5.193830101E1 +1.408558000E3,4.835599484E1 +1.408830000E3,4.864558507E1 +1.409087000E3,5.566138381E1 +1.409349000E3,5.240816417E1 +1.409604000E3,4.366169359E1 +1.409843000E3,4.924613485E1 +1.410167000E3,5.289541091E1 +1.410462000E3,5.429333459E1 +1.410857000E3,5.232803186E1 +1.411115000E3,5.279391543E1 +1.411388000E3,5.698112108E1 +1.411689000E3,4.954635028E1 +1.411940000E3,5.347151392E1 +1.412202000E3,5.431542928E1 +1.412461000E3,5.708654506E1 +1.412712000E3,5.999867781E1 +1.412972000E3,5.836713300E1 +1.413243000E3,5.662529411E1 +1.413547000E3,5.760118844E1 +1.413790000E3,5.272334048E1 +1.414155000E3,5.585703000E1 +1.414407000E3,5.277217169E1 +1.414666000E3,5.575617717E1 +1.414970000E3,5.588142009E1 +1.415263000E3,5.043609445E1 +1.415519000E3,5.366091219E1 +1.415818000E3,6.729065738E1 +1.416082000E3,5.454700058E1 +1.416357000E3,5.542836481E1 +1.416608000E3,6.150002805E1 +1.416870000E3,5.918799699E1 +1.417164000E3,5.739551304E1 +1.417548000E3,5.312046747E1 +1.417864000E3,5.735989692E1 +1.418111000E3,5.463708503E1 +1.418368000E3,5.616594485E1 +1.418622000E3,5.674613857E1 +1.418880000E3,5.393284238E1 +1.419178000E3,5.477989298E1 +1.419414000E3,5.673628135E1 +1.419692000E3,5.246670124E1 +1.419935000E3,5.929492524E1 +1.420173000E3,5.718550468E1 +1.420417000E3,5.597503360E1 +1.420745000E3,5.209811810E1 +1.421016000E3,5.108820023E1 +1.421271000E3,5.704928631E1 +1.421524000E3,5.534619134E1 +1.421787000E3,5.298830069E1 +1.422048000E3,5.357926773E1 +1.422324000E3,5.150193558E1 +1.422590000E3,5.236977243E1 +1.422860000E3,5.598534631E1 +1.423111000E3,5.804712890E1 +1.423360000E3,5.584477369E1 +1.423617000E3,6.166819052E1 +1.423956000E3,6.217862533E1 +1.424239000E3,6.474885215E1 +1.424493000E3,6.561094566E1 +1.424771000E3,6.624921272E1 +1.425013000E3,6.269332683E1 +1.425310000E3,6.427501900E1 +1.425550000E3,6.406421996E1 +1.425806000E3,6.561696377E1 +1.426124000E3,5.757984813E1 +1.426392000E3,6.467113265E1 +1.426661000E3,6.110360998E1 +1.426971000E3,6.257935575E1 +1.427325000E3,6.059948571E1 +1.427600000E3,6.060080967E1 +1.427858000E3,6.129065918E1 +1.428157000E3,6.869907238E1 +1.428403000E3,6.216021300E1 +1.428668000E3,6.028715826E1 +1.428917000E3,5.215970407E1 +1.429175000E3,5.348756082E1 +1.429445000E3,5.866879342E1 +1.429775000E3,5.422412762E1 +1.430077000E3,5.967912654E1 +1.430370000E3,6.053958419E1 +1.430696000E3,5.642153628E1 +1.430959000E3,5.797803369E1 +1.431217000E3,5.265853131E1 +1.431545000E3,6.085541328E1 +1.431825000E3,6.579757863E1 +1.432095000E3,6.783858113E1 +1.432356000E3,6.680245969E1 +1.432609000E3,5.699539434E1 +1.432887000E3,5.495476405E1 +1.433146000E3,5.431336982E1 +1.433405000E3,5.468573805E1 +1.433768000E3,6.415525931E1 +1.434037000E3,5.996195649E1 +1.434305000E3,5.880144898E1 +1.434536000E3,5.062803370E1 +1.434794000E3,4.838886892E1 +1.435059000E3,4.852598648E1 +1.435348000E3,5.424758091E1 +1.435611000E3,6.028120001E1 +1.435845000E3,5.860165153E1 +1.436098000E3,5.820116177E1 +1.436348000E3,5.458976108E1 +1.436603000E3,5.748661459E1 +1.436983000E3,5.071157707E1 +1.437230000E3,5.187454119E1 +1.437505000E3,5.690962542E1 +1.437744000E3,5.898297949E1 +1.438006000E3,6.083548120E1 +1.438278000E3,4.929702369E1 +1.438556000E3,5.094464024E1 +1.438857000E3,5.451803318E1 +1.439157000E3,4.851675588E1 +1.439427000E3,4.781325912E1 +1.439724000E3,4.919544886E1 +1.439968000E3,4.662525194E1 +1.440374000E3,4.187537091E1 +1.440620000E3,5.083424523E1 +1.440895000E3,4.476479772E1 +1.441179000E3,5.236126827E1 +1.441495000E3,4.954212438E1 +1.441772000E3,5.444261950E1 +1.442048000E3,5.023278537E1 +1.442273000E3,4.640707667E1 +1.442557000E3,5.088583460E1 +1.442822000E3,5.041471443E1 +1.443067000E3,4.940152653E1 +1.443315000E3,4.834999124E1 +1.443550000E3,5.084173145E1 +1.443802000E3,4.674944421E1 +1.444118000E3,5.005548854E1 +1.444412000E3,4.880222753E1 +1.444695000E3,4.829349493E1 +1.444948000E3,4.815408858E1 +1.445231000E3,4.968297573E1 +1.445471000E3,5.263069989E1 +1.445763000E3,4.570389774E1 +1.446062000E3,4.674284816E1 +1.446364000E3,5.179136771E1 +1.446637000E3,5.007894257E1 +1.446884000E3,5.001285233E1 +1.447102000E3,5.063641057E1 +1.447373000E3,4.164946286E1 +1.447601000E3,3.981108666E1 +1.447894000E3,4.316358072E1 +1.448132000E3,5.465701871E1 +1.448431000E3,4.615144027E1 +1.448672000E3,4.353154230E1 +1.448965000E3,5.208221965E1 +1.449200000E3,5.530439334E1 +1.449496000E3,4.996075498E1 +1.449729000E3,5.218941020E1 +1.450060000E3,4.888890123E1 +1.450335000E3,5.030971329E1 +1.450629000E3,5.012870067E1 +1.450899000E3,4.847297804E1 +1.451151000E3,4.759762696E1 +1.451454000E3,4.978926902E1 +1.451751000E3,4.930919072E1 +1.452001000E3,5.004861581E1 +1.452285000E3,5.051309266E1 +1.452566000E3,4.810890055E1 +1.452826000E3,4.654354865E1 +1.453069000E3,4.761425190E1 +1.453369000E3,4.589508435E1 +1.453616000E3,4.954922405E1 +1.453886000E3,4.065983258E1 +1.454197000E3,4.220647307E1 +1.454513000E3,4.858310714E1 +1.454789000E3,5.196405012E1 +1.455012000E3,5.467685341E1 +1.455262000E3,5.753332593E1 +1.455513000E3,4.707036048E1 +1.455859000E3,3.942826471E1 +1.456237000E3,5.170062203E1 +1.456495000E3,6.022707597E1 +1.456743000E3,5.524301158E1 +1.456990000E3,5.482834451E1 +1.457257000E3,4.917995293E1 +1.457590000E3,4.739340640E1 +1.457831000E3,4.842051754E1 +1.458073000E3,6.166669432E1 +1.458329000E3,5.427876580E1 +1.458617000E3,4.896037674E1 +1.458889000E3,4.346397471E1 +1.459122000E3,4.481546196E1 +1.459424000E3,5.149740630E1 +1.459726000E3,4.614214660E1 +1.459975000E3,4.567227587E1 +1.460237000E3,5.348774305E1 +1.460488000E3,5.617792493E1 +1.460730000E3,5.122937085E1 +1.460971000E3,5.712815616E1 +1.461266000E3,5.592815325E1 +1.461504000E3,5.208026338E1 +1.461798000E3,5.368936290E1 +1.462033000E3,5.424431898E1 +1.462332000E3,5.229538114E1 +1.462686000E3,5.012562607E1 +1.462943000E3,5.517893002E1 +1.463292000E3,5.544440679E1 +1.463574000E3,5.195225561E1 +1.463851000E3,5.582804772E1 +1.464133000E3,5.163717454E1 +1.464392000E3,5.056978371E1 +1.464653000E3,5.085736348E1 +1.464931000E3,5.111025552E1 +1.465171000E3,5.008163028E1 +1.465468000E3,5.204681239E1 +1.465721000E3,4.873162615E1 +1.466070000E3,5.052420662E1 +1.466365000E3,5.115431116E1 +1.466626000E3,5.008089225E1 +1.466902000E3,5.455907242E1 +1.467123000E3,5.881328519E1 +1.467422000E3,5.654049662E1 +1.467665000E3,6.208900398E1 +1.467911000E3,5.573620080E1 +1.468210000E3,5.034178452E1 +1.468461000E3,4.644884091E1 +1.468716000E3,4.489036287E1 +1.469021000E3,4.555962209E1 +1.469437000E3,4.956164087E1 +1.469733000E3,5.014140659E1 +1.469995000E3,5.025508197E1 +1.470298000E3,4.976482928E1 +1.470552000E3,4.666552600E1 +1.470801000E3,5.164800320E1 +1.471107000E3,4.748865751E1 +1.471358000E3,5.068455306E1 +1.471623000E3,5.380657492E1 +1.471874000E3,4.918332364E1 +1.472155000E3,4.974368594E1 +1.472539000E3,5.519550202E1 +1.472795000E3,5.119649457E1 +1.473056000E3,5.406344748E1 +1.473370000E3,5.554928156E1 +1.473655000E3,5.458007948E1 +1.473895000E3,5.519923804E1 +1.474152000E3,5.580016483E1 +1.474437000E3,5.718813696E1 +1.474685000E3,5.734393611E1 +1.474960000E3,5.879862387E1 +1.475221000E3,5.602300215E1 +1.475474000E3,5.025640835E1 +1.475826000E3,5.543439402E1 +1.476071000E3,5.232164352E1 +1.476323000E3,5.898115961E1 +1.476584000E3,6.066467981E1 +1.476821000E3,5.071984472E1 +1.477123000E3,5.740447565E1 +1.477365000E3,5.959782608E1 +1.477662000E3,5.958620190E1 +1.477906000E3,5.753388342E1 +1.478144000E3,5.506848886E1 +1.478455000E3,5.769430513E1 +1.478723000E3,5.629679592E1 +1.478987000E3,5.649495967E1 +1.479262000E3,5.787253729E1 +1.479512000E3,5.216150167E1 +1.479813000E3,4.948302212E1 +1.480088000E3,5.080056078E1 +1.480342000E3,4.734041467E1 +1.480601000E3,4.440736689E1 +1.480866000E3,5.120725270E1 +1.481166000E3,5.053254929E1 +1.481466000E3,5.274685420E1 +1.481724000E3,5.071521067E1 +1.481973000E3,5.225995741E1 +1.482300000E3,5.133897759E1 +1.482575000E3,5.007250383E1 +1.482845000E3,5.042400131E1 +1.483101000E3,5.258901014E1 +1.483408000E3,5.618504625E1 +1.483668000E3,5.503349900E1 +1.483933000E3,4.974702245E1 +1.484194000E3,5.170781389E1 +1.484440000E3,5.072340799E1 +1.484707000E3,5.947536199E1 +1.485018000E3,5.467515596E1 +1.485306000E3,6.085614245E1 +1.485656000E3,5.990152864E1 +1.485935000E3,5.602550586E1 +1.486168000E3,5.561766537E1 +1.486422000E3,5.350876804E1 +1.486701000E3,5.699979875E1 +1.486960000E3,5.177464585E1 +1.487207000E3,5.249766501E1 +1.487486000E3,5.285366750E1 +1.487751000E3,5.316768095E1 +1.488002000E3,4.876639606E1 +1.488262000E3,5.179834313E1 +1.488516000E3,4.991892364E1 +1.488812000E3,5.156353661E1 +1.489125000E3,5.341434219E1 +1.489400000E3,5.426211096E1 +1.489675000E3,4.699672779E1 +1.489958000E3,5.361914521E1 +1.490219000E3,5.605827819E1 +1.490490000E3,5.089547448E1 +1.490772000E3,5.163564337E1 +1.491061000E3,5.841576784E1 +1.491309000E3,5.524417730E1 +1.491589000E3,5.450558122E1 +1.491873000E3,5.581032480E1 +1.492194000E3,5.802352567E1 +1.492448000E3,4.962366630E1 +1.492810000E3,5.873656508E1 +1.493058000E3,5.690804947E1 +1.493359000E3,5.262261274E1 +1.493674000E3,5.584655342E1 +1.493919000E3,5.542283425E1 +1.494163000E3,5.373884310E1 +1.494412000E3,5.084083433E1 +1.494678000E3,4.964027690E1 +1.494956000E3,5.125570040E1 +1.495204000E3,5.194895191E1 +1.495526000E3,4.961412488E1 +1.495784000E3,4.972405818E1 +1.496036000E3,4.777083448E1 +1.496283000E3,5.231556692E1 +1.496593000E3,5.894066851E1 +1.496842000E3,6.007182772E1 +1.497086000E3,6.003234807E1 +1.497358000E3,5.170627362E1 +1.497682000E3,5.564688341E1 +1.497937000E3,5.459086103E1 +1.498234000E3,5.654462748E1 +1.498530000E3,5.643601391E1 +1.498887000E3,5.593732695E1 +1.499182000E3,5.279859883E1 +1.499469000E3,5.063056157E1 +1.499723000E3,4.846330641E1 +1.499972000E3,5.696559719E1 +1.500236000E3,5.806291630E1 +1.500555000E3,5.485435177E1 +1.500851000E3,5.386376671E1 +1.501120000E3,5.529102258E1 +1.501400000E3,5.058415032E1 +1.501675000E3,5.420960743E1 +1.501928000E3,4.962388553E1 +1.502263000E3,5.167692375E1 +1.502567000E3,5.072695334E1 +1.502878000E3,5.319678523E1 +1.503119000E3,5.961199300E1 +1.503369000E3,5.299728366E1 +1.503631000E3,5.369404965E1 +1.503941000E3,5.426817134E1 +1.504209000E3,5.369336762E1 +1.504462000E3,5.246626497E1 +1.504724000E3,5.358557871E1 +1.505015000E3,4.957781391E1 +1.505279000E3,5.117668163E1 +1.505699000E3,5.216401891E1 +1.505963000E3,5.011348657E1 +1.506261000E3,5.259055540E1 +1.506507000E3,4.579432510E1 +1.506795000E3,4.877099475E1 +1.507032000E3,4.679595596E1 +1.507314000E3,5.136222565E1 +1.507549000E3,5.267101191E1 +1.507792000E3,5.244999525E1 +1.508074000E3,5.180561005E1 +1.508391000E3,5.030990700E1 +1.508607000E3,5.167226321E1 +1.508859000E3,5.218207738E1 +1.509151000E3,5.317725961E1 +1.509397000E3,5.318899610E1 +1.509689000E3,4.978257152E1 +1.509934000E3,5.032443800E1 +1.510228000E3,4.777293014E1 +1.510466000E3,4.646316587E1 +1.510767000E3,5.646850943E1 +1.511001000E3,5.638889819E1 +1.511293000E3,5.773758842E1 +1.511610000E3,5.580372922E1 +1.511900000E3,5.517502050E1 +1.512151000E3,5.684013484E1 +1.512393000E3,5.407249321E1 +1.512652000E3,5.725430710E1 +1.512902000E3,5.755876004E1 +1.513148000E3,5.492786930E1 +1.513404000E3,5.665177401E1 +1.513705000E3,5.675683028E1 +1.513957000E3,5.845897420E1 +1.514258000E3,5.334537973E1 +1.514488000E3,5.035361876E1 +1.514812000E3,4.886526824E1 +1.515059000E3,5.555156669E1 +1.515357000E3,5.401240780E1 +1.515600000E3,5.191330713E1 +1.515873000E3,5.158089375E1 +1.516102000E3,5.397456219E1 +1.516410000E3,5.205317520E1 +1.516679000E3,5.689433829E1 +1.516971000E3,5.397466306E1 +1.517230000E3,5.553699481E1 +1.517504000E3,5.550832571E1 +1.517763000E3,5.490604036E1 +1.518130000E3,5.129555301E1 +1.518403000E3,5.478479772E1 +1.518670000E3,5.687403653E1 +1.518921000E3,5.464295853E1 +1.519177000E3,5.713561839E1 +1.519461000E3,5.306473622E1 +1.519745000E3,5.320579073E1 +1.520002000E3,5.309385307E1 +1.520258000E3,5.058967996E1 +1.520552000E3,5.470724085E1 +1.520793000E3,5.303104936E1 +1.521156000E3,5.432496893E1 +1.521453000E3,5.594215604E1 +1.521721000E3,5.308545736E1 +1.521969000E3,5.327888421E1 +1.522220000E3,5.030915333E1 +1.522490000E3,5.230098434E1 +1.522776000E3,4.743827766E1 +1.523026000E3,5.464211349E1 +1.523327000E3,5.322537523E1 +1.523581000E3,5.154569729E1 +1.523826000E3,5.335950152E1 +1.524133000E3,5.482016506E1 +1.524417000E3,5.825411535E1 +1.524853000E3,5.879893849E1 +1.525179000E3,5.728744863E1 +1.525433000E3,5.737571640E1 +1.525696000E3,5.681107869E1 +1.525950000E3,5.695921586E1 +1.526210000E3,5.455429607E1 +1.526487000E3,5.808007225E1 +1.526729000E3,5.500512440E1 +1.527042000E3,5.476260812E1 +1.527339000E3,5.849962899E1 +1.527579000E3,5.719021529E1 +1.527910000E3,5.422226824E1 +1.528160000E3,5.266147572E1 +1.528411000E3,5.030747323E1 +1.528675000E3,5.057502492E1 +1.528920000E3,5.365292462E1 +1.529175000E3,5.444435151E1 +1.529423000E3,5.586906556E1 +1.529732000E3,5.808239082E1 +1.530030000E3,5.492304678E1 +1.530283000E3,5.727734117E1 +1.530542000E3,5.518682809E1 +1.530805000E3,5.838179726E1 +1.531133000E3,5.619103982E1 +1.531448000E3,5.705771680E1 +1.531738000E3,5.605732573E1 +1.531987000E3,5.497746164E1 +1.532293000E3,5.570350387E1 +1.532602000E3,5.687942595E1 +1.532873000E3,5.590365459E1 +1.533132000E3,5.379832162E1 +1.533387000E3,5.951317374E1 +1.533654000E3,5.728034638E1 +1.533915000E3,5.755019099E1 +1.534163000E3,5.625336618E1 +1.534512000E3,5.560455999E1 +1.534783000E3,5.186395468E1 +1.535086000E3,6.018952062E1 +1.535379000E3,5.360739703E1 +1.535619000E3,5.637744941E1 +1.535916000E3,5.710534601E1 +1.536153000E3,5.751101039E1 +1.536449000E3,5.888699469E1 +1.536688000E3,5.900809640E1 +1.536983000E3,5.539354346E1 +1.537218000E3,5.212761926E1 +1.537514000E3,6.113968309E1 +1.537773000E3,5.789795306E1 +1.538038000E3,6.065119472E1 +1.538356000E3,5.715251587E1 +1.538607000E3,5.728294892E1 +1.538911000E3,5.939537878E1 +1.539175000E3,5.879010449E1 +1.539417000E3,6.007594674E1 +1.539661000E3,5.983742076E1 +1.539908000E3,6.299497704E1 +1.540182000E3,6.042347696E1 +1.540457000E3,5.844914903E1 +1.540758000E3,5.775362746E1 +1.541037000E3,5.216165265E1 +1.541334000E3,5.255584969E1 +1.541593000E3,5.278098471E1 +1.541846000E3,5.581770981E1 +1.542092000E3,5.736301867E1 +1.542389000E3,5.733951694E1 +1.542623000E3,5.674705381E1 +1.542880000E3,5.506043774E1 +1.543125000E3,5.404728252E1 +1.543453000E3,5.428884791E1 +1.543732000E3,5.547580162E1 +1.544085000E3,5.471747417E1 +1.544346000E3,5.496243571E1 +1.544613000E3,5.288395526E1 +1.544860000E3,5.036194227E1 +1.545111000E3,5.124283852E1 +1.545413000E3,5.731432515E1 +1.545687000E3,5.663908688E1 +1.545955000E3,5.741659811E1 +1.546253000E3,5.084604561E1 +1.546502000E3,5.163330463E1 +1.546772000E3,4.777378739E1 +1.547025000E3,5.200725426E1 +1.547353000E3,5.049690945E1 +1.547625000E3,5.284766124E1 +1.547924000E3,5.396462244E1 +1.548148000E3,5.375524192E1 +1.548403000E3,5.670544075E1 +1.548716000E3,5.332369727E1 +1.548963000E3,5.544219871E1 +1.549238000E3,5.323430806E1 +1.549471000E3,5.180674965E1 +1.549727000E3,5.329467652E1 +1.550023000E3,5.080742485E1 +1.550310000E3,5.026906170E1 +1.550639000E3,5.582908231E1 +1.550905000E3,5.331150300E1 +1.551172000E3,5.186910180E1 +1.551471000E3,5.624561668E1 +1.551739000E3,5.555744845E1 +1.552012000E3,5.944044312E1 +1.552264000E3,6.002272858E1 +1.552531000E3,5.816546804E1 +1.552850000E3,5.936846960E1 +1.553097000E3,5.514794057E1 +1.553401000E3,5.160130424E1 +1.553757000E3,5.107783990E1 +1.554023000E3,5.871375450E1 +1.554276000E3,5.617325190E1 +1.554544000E3,5.736189521E1 +1.554800000E3,5.317828333E1 +1.555051000E3,5.715279916E1 +1.555321000E3,5.726931658E1 +1.555563000E3,5.567771069E1 +1.555823000E3,5.156101336E1 +1.556126000E3,5.688446569E1 +1.556378000E3,6.074118939E1 +1.556642000E3,5.974958265E1 +1.556918000E3,5.702757711E1 +1.557208000E3,5.874442787E1 +1.557457000E3,5.795683904E1 +1.557722000E3,6.039916355E1 +1.558025000E3,5.662755924E1 +1.558320000E3,5.332514547E1 +1.558595000E3,6.059700286E1 +1.558850000E3,5.775207016E1 +1.559098000E3,6.106988435E1 +1.559349000E3,6.039494527E1 +1.559644000E3,5.672405799E1 +1.559889000E3,5.814375710E1 +1.560135000E3,6.159401746E1 +1.560480000E3,5.397583636E1 +1.560770000E3,5.291692280E1 +1.561026000E3,5.439035965E1 +1.561320000E3,5.553984968E1 +1.561619000E3,5.808332247E1 +1.561927000E3,5.744100555E1 +1.562191000E3,5.636250023E1 +1.562451000E3,6.055150308E1 +1.562703000E3,5.624161562E1 +1.562979000E3,5.401048000E1 +1.563233000E3,5.588901558E1 +1.563595000E3,6.020828902E1 +1.563855000E3,6.586197618E1 +1.564143000E3,5.744692826E1 +1.564421000E3,5.175273280E1 +1.564681000E3,5.584828423E1 +1.564939000E3,5.622472521E1 +1.565190000E3,5.419184381E1 +1.565447000E3,4.818775863E1 +1.565701000E3,5.443344746E1 +1.565956000E3,4.960344337E1 +1.566224000E3,6.289868185E1 +1.566469000E3,6.499026885E1 +1.566794000E3,6.277031329E1 +1.567086000E3,5.336636778E1 +1.567405000E3,5.867761918E1 +1.567644000E3,5.135518394E1 +1.567909000E3,5.665720126E1 +1.568204000E3,5.915910399E1 +1.568455000E3,5.687790668E1 +1.568730000E3,5.815647569E1 +1.568976000E3,5.595761669E1 +1.569238000E3,5.367288589E1 +1.569491000E3,4.954593185E1 +1.569752000E3,5.199120702E1 +1.570099000E3,5.857172858E1 +1.570354000E3,5.533510860E1 +1.570614000E3,5.615291914E1 +1.570871000E3,4.816531300E1 +1.571136000E3,4.597509459E1 +1.571387000E3,5.454256971E1 +1.571722000E3,5.262076426E1 +1.572010000E3,5.108681545E1 +1.572285000E3,5.269091247E1 +1.572547000E3,4.898785412E1 +1.572807000E3,4.867008841E1 +1.573066000E3,5.306545801E1 +1.573313000E3,5.092331160E1 +1.573694000E3,5.549117670E1 +1.574009000E3,5.304099104E1 +1.574279000E3,5.377011563E1 +1.574520000E3,5.244694975E1 +1.574770000E3,5.542353961E1 +1.575031000E3,5.327330735E1 +1.575319000E3,5.123065406E1 +1.575617000E3,5.429517947E1 +1.575867000E3,5.443507599E1 +1.576132000E3,5.273613947E1 +1.576382000E3,5.717979407E1 +1.576705000E3,5.184816589E1 +1.576955000E3,4.851208329E1 +1.577250000E3,4.976440939E1 +1.577493000E3,5.236737582E1 +1.577737000E3,5.414723297E1 +1.577998000E3,5.490706774E1 +1.578342000E3,5.591011545E1 +1.578650000E3,5.689754115E1 +1.578906000E3,5.680987850E1 +1.579148000E3,5.379415708E1 +1.579394000E3,5.844713665E1 +1.579644000E3,4.927798375E1 +1.580006000E3,5.263100090E1 +1.580294000E3,5.410513055E1 +1.580548000E3,5.541047194E1 +1.580801000E3,5.058665778E1 +1.581070000E3,5.191468462E1 +1.581349000E3,4.623838572E1 +1.581601000E3,4.883886927E1 +1.581851000E3,4.951159763E1 +1.582152000E3,5.372806241E1 +1.582461000E3,4.077427406E1 +1.582742000E3,4.089897224E1 +1.582967000E3,4.661834708E1 +1.583330000E3,4.498181641E1 +1.583574000E3,4.413204165E1 +1.583835000E3,4.830731952E1 +1.584102000E3,5.133890730E1 +1.584385000E3,5.327819620E1 +1.584689000E3,5.148788947E1 +1.584935000E3,5.259351261E1 +1.585217000E3,5.210912674E1 +1.585449000E3,5.375523399E1 +1.585710000E3,5.030792675E1 +1.585957000E3,5.116594607E1 +1.586271000E3,5.729332409E1 +1.586601000E3,5.372439258E1 +1.586868000E3,5.283683191E1 +1.587111000E3,5.261490358E1 +1.587371000E3,5.394382083E1 +1.587617000E3,5.362104804E1 +1.587861000E3,5.192909002E1 +1.588111000E3,5.534291684E1 +1.588356000E3,5.529045875E1 +1.588616000E3,5.723903943E1 +1.588878000E3,5.769467674E1 +1.589116000E3,5.686991669E1 +1.589367000E3,5.472851050E1 +1.589709000E3,5.509501284E1 +1.589971000E3,6.218794924E1 +1.590276000E3,5.544714813E1 +1.590522000E3,5.587492513E1 +1.590770000E3,6.310127100E1 +1.591031000E3,6.016601681E1 +1.591331000E3,5.868635044E1 +1.591588000E3,5.739907262E1 +1.591847000E3,5.500154159E1 +1.592105000E3,5.382353142E1 +1.592358000E3,5.235465349E1 +1.592660000E3,5.432444683E1 +1.592979000E3,5.583837344E1 +1.593280000E3,5.890777444E1 +1.593531000E3,6.247008348E1 +1.593777000E3,5.524440051E1 +1.594082000E3,6.039849382E1 +1.594376000E3,5.779880973E1 +1.594616000E3,6.006977904E1 +1.594916000E3,6.157791897E1 +1.595158000E3,5.727348505E1 +1.595456000E3,6.219777130E1 +1.595702000E3,6.333776727E1 +1.596011000E3,6.315243887E1 +1.596287000E3,5.622487117E1 +1.596582000E3,4.999384026E1 +1.596838000E3,6.052096287E1 +1.597136000E3,5.730636753E1 +1.597383000E3,5.672770046E1 +1.597632000E3,5.282894107E1 +1.597943000E3,5.609826115E1 +1.598240000E3,5.950608691E1 +1.598483000E3,5.262580449E1 +1.598777000E3,5.638403375E1 +1.599039000E3,5.695994656E1 +1.599354000E3,5.595638462E1 +1.599677000E3,5.456948793E1 +1.599955000E3,5.641745933E1 +1.600254000E3,5.373490010E1 +1.600541000E3,5.613295480E1 +1.600824000E3,5.295628543E1 +1.601071000E3,5.036371368E1 +1.601313000E3,5.734560753E1 +1.601585000E3,5.869799540E1 +1.601832000E3,5.689867309E1 +1.602079000E3,5.521901034E1 +1.602376000E3,5.958743796E1 +1.602630000E3,5.697555749E1 +1.602881000E3,6.067520996E1 +1.603136000E3,6.296730837E1 +1.603381000E3,6.302345663E1 +1.603674000E3,5.614231839E1 +1.603920000E3,5.471880748E1 +1.604179000E3,6.025548138E1 +1.604432000E3,5.848975602E1 +1.604677000E3,6.051353275E1 +1.604988000E3,6.061163824E1 +1.605287000E3,5.127173554E1 +1.605535000E3,5.271948405E1 +1.605890000E3,5.457177629E1 +1.606143000E3,5.047420148E1 +1.606392000E3,5.197178768E1 +1.606684000E3,5.635777628E1 +1.606927000E3,5.691931577E1 +1.607165000E3,5.135114371E1 +1.607440000E3,5.173034620E1 +1.607734000E3,5.786109434E1 +1.607974000E3,5.620528212E1 +1.608236000E3,5.432552885E1 +1.608507000E3,5.036034087E1 +1.608763000E3,4.872303481E1 +1.609123000E3,5.516764205E1 +1.609377000E3,5.867465981E1 +1.609624000E3,5.634077767E1 +1.609869000E3,5.153316916E1 +1.610150000E3,5.212022412E1 +1.610428000E3,5.727395868E1 +1.610681000E3,5.443759521E1 +1.610944000E3,5.599199613E1 +1.611242000E3,5.709063131E1 +1.611495000E3,5.747461955E1 +1.611762000E3,5.445378087E1 +1.612040000E3,5.178206799E1 +1.612294000E3,5.347146008E1 +1.612548000E3,5.695533984E1 +1.612791000E3,5.852885666E1 +1.613050000E3,5.349710519E1 +1.613354000E3,5.482274130E1 +1.613598000E3,5.580201302E1 +1.613898000E3,5.533013655E1 +1.614151000E3,5.307302798E1 +1.614404000E3,5.034267096E1 +1.614651000E3,5.096368681E1 +1.614959000E3,5.358615730E1 +1.615202000E3,5.402822959E1 +1.615565000E3,5.173226008E1 +1.615815000E3,5.317238447E1 +1.616120000E3,5.490271856E1 +1.616406000E3,5.760350961E1 +1.616712000E3,5.516631401E1 +1.616950000E3,5.344247717E1 +1.617197000E3,5.105574764E1 +1.617480000E3,5.297874749E1 +1.617726000E3,5.181083735E1 +1.617978000E3,5.504462581E1 +1.618236000E3,5.652623382E1 +1.618484000E3,5.850281135E1 +1.618804000E3,5.207268405E1 +1.619061000E3,4.595989093E1 +1.619309000E3,5.832875112E1 +1.619574000E3,5.691639889E1 +1.619831000E3,5.277897330E1 +1.620092000E3,5.634285556E1 +1.620390000E3,5.782897026E1 +1.620660000E3,6.167326244E1 +1.620905000E3,5.736569246E1 +1.621145000E3,6.422841213E1 +1.621400000E3,6.037316593E1 +1.621649000E3,5.869946609E1 +1.622005000E3,6.007663283E1 +1.622308000E3,5.750286676E1 +1.622551000E3,5.315958033E1 +1.622849000E3,5.996646537E1 +1.623085000E3,6.310656156E1 +1.623382000E3,6.410911411E1 +1.623620000E3,6.559322950E1 +1.623914000E3,6.191537215E1 +1.624148000E3,6.509401862E1 +1.624441000E3,6.149444047E1 +1.624676000E3,5.887830140E1 +1.624914000E3,5.333395699E1 +1.625242000E3,5.080509527E1 +1.625531000E3,5.208999136E1 +1.625827000E3,4.936268455E1 +1.626072000E3,4.620940228E1 +1.626384000E3,4.812346411E1 +1.626678000E3,5.508818133E1 +1.626931000E3,5.929414420E1 +1.627193000E3,5.798382987E1 +1.627446000E3,5.695027340E1 +1.627690000E3,6.200547811E1 +1.627940000E3,5.895921781E1 +1.628278000E3,5.832121877E1 +1.628595000E3,5.727506493E1 +1.628914000E3,5.676841787E1 +1.629164000E3,5.904549933E1 +1.629453000E3,6.079247221E1 +1.629705000E3,5.978532207E1 +1.629973000E3,6.204876077E1 +1.630223000E3,6.278691878E1 +1.630527000E3,5.775584326E1 +1.630780000E3,5.715423799E1 +1.631076000E3,5.993810238E1 +1.631416000E3,5.945816984E1 +1.631690000E3,5.911038375E1 +1.631989000E3,6.401318161E1 +1.632251000E3,6.288325429E1 +1.632577000E3,6.142114348E1 +1.632857000E3,6.027735545E1 +1.633125000E3,6.058800698E1 +1.633410000E3,6.197295377E1 +1.633713000E3,5.649410931E1 +1.633983000E3,5.349526422E1 +1.634267000E3,5.160473432E1 +1.634550000E3,5.471426263E1 +1.634881000E3,5.381566790E1 +1.635145000E3,5.592472168E1 +1.635394000E3,5.502963456E1 +1.635636000E3,5.458091777E1 +1.635914000E3,5.361113418E1 +1.636211000E3,5.972112366E1 +1.636510000E3,6.134956919E1 +1.636770000E3,6.291498703E1 +1.637018000E3,6.051799303E1 +1.637272000E3,5.800319143E1 +1.637535000E3,6.099184952E1 +1.637791000E3,6.192072936E1 +1.638191000E3,5.592689657E1 +1.638462000E3,5.015193522E1 +1.638759000E3,5.662906295E1 +1.638997000E3,6.189212385E1 +1.639312000E3,5.656112303E1 +1.639618000E3,5.827187766E1 +1.639922000E3,5.894515280E1 +1.640188000E3,5.379936676E1 +1.640446000E3,5.498271927E1 +1.640705000E3,5.883708769E1 +1.641003000E3,5.515786146E1 +1.641329000E3,5.323855564E1 +1.641593000E3,5.000482182E1 +1.641876000E3,5.182077324E1 +1.642101000E3,5.319082569E1 +1.642344000E3,6.611850928E1 +1.642626000E3,5.190424983E1 +1.642867000E3,5.081734830E1 +1.643118000E3,5.711045841E1 +1.643458000E3,5.520016906E1 +1.643723000E3,5.247062228E1 +1.643997000E3,5.309157546E1 +1.644256000E3,5.339769460E1 +1.644621000E3,5.982216134E1 +1.644883000E3,5.915424673E1 +1.645133000E3,5.849263499E1 +1.645426000E3,5.826666974E1 +1.645723000E3,5.673329902E1 +1.645972000E3,5.580417722E1 +1.646244000E3,5.457004449E1 +1.646473000E3,5.835958867E1 +1.646716000E3,5.599398637E1 +1.646958000E3,5.928075116E1 +1.647232000E3,5.394053714E1 +1.647507000E3,5.853879118E1 +1.647858000E3,5.674494648E1 +1.648113000E3,5.640074652E1 +1.648414000E3,5.694867796E1 +1.648656000E3,5.573466688E1 +1.648962000E3,5.556104957E1 +1.649254000E3,5.770712773E1 +1.649548000E3,5.765349227E1 +1.649790000E3,5.583875333E1 +1.650054000E3,6.321152276E1 +1.650306000E3,5.966047080E1 +1.650600000E3,5.502015578E1 +1.650872000E3,5.066616477E1 +1.651172000E3,5.442335496E1 +1.651440000E3,5.956947456E1 +1.651736000E3,5.798320450E1 +1.651979000E3,5.739040713E1 +1.652228000E3,5.803662120E1 +1.652491000E3,6.146613872E1 +1.652750000E3,5.929116619E1 +1.653021000E3,5.936282359E1 +1.653288000E3,5.853226920E1 +1.653570000E3,5.954415072E1 +1.653872000E3,5.749576278E1 +1.654250000E3,5.567111200E1 +1.654518000E3,6.059415807E1 +1.654812000E3,5.855300274E1 +1.655081000E3,5.797601107E1 +1.655350000E3,6.029475669E1 +1.655647000E3,5.264118678E1 +1.655893000E3,5.715075800E1 +1.656153000E3,5.787679223E1 +1.656407000E3,6.038334743E1 +1.656655000E3,6.038245752E1 +1.656912000E3,5.475945603E1 +1.657171000E3,5.661674174E1 +1.657473000E3,5.618877186E1 +1.657717000E3,5.712918740E1 +1.657972000E3,5.834783502E1 +1.658283000E3,6.198115012E1 +1.658526000E3,5.639977894E1 +1.658788000E3,5.416850689E1 +1.659089000E3,5.679686188E1 +1.659335000E3,5.697270686E1 +1.659619000E3,5.371836804E1 +1.659873000E3,6.082252986E1 +1.660120000E3,6.285201132E1 +1.660416000E3,6.088574857E1 +1.660728000E3,6.109109391E1 +1.661004000E3,5.861240224E1 +1.661283000E3,6.123850168E1 +1.661519000E3,5.849447684E1 +1.661821000E3,5.472352136E1 +1.662065000E3,5.502625911E1 +1.662312000E3,5.606436387E1 +1.662565000E3,5.546236927E1 +1.662845000E3,6.075823181E1 +1.663075000E3,5.951357638E1 +1.663350000E3,5.956681026E1 +1.663575000E3,5.780116333E1 +1.663928000E3,6.184122024E1 +1.664178000E3,5.626291699E1 +1.664419000E3,5.635545931E1 +1.664671000E3,5.487242490E1 +1.664936000E3,5.392872477E1 +1.665237000E3,5.658170902E1 +1.665476000E3,5.449322435E1 +1.665752000E3,5.111063749E1 +1.665997000E3,5.288359358E1 +1.666249000E3,5.825102048E1 +1.666508000E3,6.087585373E1 +1.666750000E3,5.822210598E1 +1.667110000E3,6.320270923E1 +1.667355000E3,5.563170163E1 +1.667628000E3,5.240635194E1 +1.667875000E3,5.485055122E1 +1.668144000E3,5.590209292E1 +1.668402000E3,5.750031923E1 +1.668648000E3,5.301598344E1 +1.668896000E3,5.208077776E1 +1.669157000E3,5.024112467E1 +1.669414000E3,5.530220423E1 +1.669710000E3,5.585178295E1 +1.669955000E3,5.443268015E1 +1.670292000E3,5.292974908E1 +1.670566000E3,5.501741168E1 +1.670818000E3,5.190433464E1 +1.671077000E3,5.602388651E1 +1.671384000E3,5.384205522E1 +1.671688000E3,5.355394771E1 +1.671956000E3,4.896600257E1 +1.672212000E3,4.457728928E1 +1.672483000E3,5.407780485E1 +1.672726000E3,5.808535163E1 +1.672991000E3,5.497589856E1 +1.673269000E3,5.816061182E1 +1.673625000E3,5.457220472E1 +1.673896000E3,5.852786772E1 +1.674165000E3,5.615855966E1 +1.674439000E3,5.901141794E1 +1.674702000E3,5.821771493E1 +1.675040000E3,5.533746886E1 +1.675330000E3,5.469332456E1 +1.675631000E3,5.895976057E1 +1.675867000E3,5.565047570E1 +1.676161000E3,5.342216333E1 +1.676431000E3,5.339304237E1 +1.676716000E3,5.196130631E1 +1.677075000E3,5.500129023E1 +1.677346000E3,5.649474234E1 +1.677614000E3,5.620691351E1 +1.677867000E3,5.756400488E1 +1.678112000E3,5.571225073E1 +1.678362000E3,6.171466353E1 +1.678655000E3,5.523245256E1 +1.678909000E3,5.780473196E1 +1.679167000E3,5.918101801E1 +1.679536000E3,5.449831587E1 +1.679788000E3,5.278747036E1 +1.680072000E3,5.502423006E1 +1.680392000E3,5.603218813E1 +1.680667000E3,5.681691969E1 +1.680917000E3,5.574952817E1 +1.681227000E3,5.747793831E1 +1.681510000E3,5.831554727E1 +1.681811000E3,5.823344802E1 +1.682073000E3,5.677197169E1 +1.682402000E3,5.423243511E1 +1.682746000E3,5.568639423E1 +1.683007000E3,5.601571559E1 +1.683297000E3,5.788588795E1 +1.683563000E3,5.178162942E1 +1.683805000E3,5.244727762E1 +1.684102000E3,5.504021082E1 +1.684342000E3,5.312145782E1 +1.684637000E3,5.266466104E1 +1.684875000E3,5.430143327E1 +1.685171000E3,5.731848010E1 +1.685409000E3,5.314967575E1 +1.685703000E3,5.210480680E1 +1.685940000E3,5.447962472E1 +1.686242000E3,5.671930258E1 +1.686480000E3,5.298653153E1 +1.686837000E3,5.390672385E1 +1.687083000E3,5.256535993E1 +1.687387000E3,5.295433262E1 +1.687686000E3,4.693434793E1 +1.687930000E3,5.264001548E1 +1.688191000E3,4.696703102E1 +1.688514000E3,5.290693761E1 +1.688768000E3,5.572289252E1 +1.689025000E3,5.629476293E1 +1.689331000E3,5.221395629E1 +1.689585000E3,5.553268928E1 +1.689905000E3,5.392885939E1 +1.690136000E3,5.613018872E1 +1.690432000E3,5.323144022E1 +1.690690000E3,5.426457319E1 +1.690988000E3,5.869511223E1 +1.691244000E3,5.724931575E1 +1.691548000E3,5.702890727E1 +1.691819000E3,5.957894946E1 +1.692068000E3,5.833323285E1 +1.692367000E3,5.920896731E1 +1.692598000E3,5.809066040E1 +1.692847000E3,5.683194919E1 +1.693218000E3,5.880411413E1 +1.693536000E3,5.430005356E1 +1.693836000E3,5.347827494E1 +1.694082000E3,5.139526617E1 +1.694323000E3,6.486669482E1 +1.694607000E3,5.827670564E1 +1.694879000E3,5.749070135E1 +1.695112000E3,5.439297467E1 +1.695418000E3,5.591879208E1 +1.695720000E3,5.984156108E1 +1.695978000E3,5.763450389E1 +1.696238000E3,5.535113951E1 +1.696577000E3,5.468640858E1 +1.696840000E3,5.145216534E1 +1.697142000E3,5.633820526E1 +1.697434000E3,5.961813260E1 +1.697672000E3,5.761348305E1 +1.697970000E3,5.587832748E1 +1.698213000E3,5.615239979E1 +1.698514000E3,6.142159571E1 +1.698744000E3,5.868747140E1 +1.699038000E3,5.639074769E1 +1.699277000E3,5.843791784E1 +1.699602000E3,5.580904726E1 +1.699849000E3,5.188032815E1 +1.700148000E3,6.050592844E1 +1.700415000E3,5.851925341E1 +1.700742000E3,5.754370303E1 +1.700996000E3,5.792652906E1 +1.701265000E3,5.809754284E1 +1.701543000E3,5.435013872E1 +1.701827000E3,5.364293620E1 +1.702095000E3,5.742174876E1 +1.702342000E3,5.921232761E1 +1.702597000E3,5.246613397E1 +1.702852000E3,5.865178399E1 +1.703188000E3,6.209648540E1 +1.703456000E3,5.783126524E1 +1.703723000E3,6.129722089E1 +1.704021000E3,6.159059582E1 +1.704258000E3,6.290365934E1 +1.704500000E3,5.899658178E1 +1.704744000E3,5.570772177E1 +1.705020000E3,6.042975914E1 +1.705281000E3,6.063911519E1 +1.705578000E3,5.667741437E1 +1.705818000E3,5.616948640E1 +1.706065000E3,5.809228765E1 +1.706440000E3,6.194892333E1 +1.706707000E3,5.510896653E1 +1.706968000E3,5.648771637E1 +1.707226000E3,5.451026369E1 +1.707530000E3,5.655237570E1 +1.707813000E3,6.342687376E1 +1.708096000E3,5.687609223E1 +1.708345000E3,5.784030597E1 +1.708587000E3,5.696931166E1 +1.708832000E3,5.826055047E1 +1.709133000E3,6.171963981E1 +1.709444000E3,6.289993620E1 +1.709785000E3,6.196750111E1 +1.710095000E3,6.021872673E1 +1.710401000E3,5.493999514E1 +1.710645000E3,5.748920917E1 +1.710951000E3,5.990748875E1 +1.711204000E3,5.995493625E1 +1.711504000E3,5.608393688E1 +1.711807000E3,6.225697969E1 +1.712052000E3,6.005399346E1 +1.712297000E3,6.276583246E1 +1.712594000E3,6.409669700E1 +1.712952000E3,5.846223798E1 +1.713249000E3,6.222377893E1 +1.713511000E3,6.179119431E1 +1.713770000E3,6.687160955E1 +1.714020000E3,6.224215114E1 +1.714281000E3,6.460780580E1 +1.714608000E3,6.323149402E1 +1.714900000E3,5.890183616E1 +1.715139000E3,6.173404899E1 +1.715438000E3,6.193562982E1 +1.715674000E3,6.231645929E1 +1.715912000E3,5.798536661E1 +1.716293000E3,5.569607438E1 +1.716537000E3,6.131866955E1 +1.716790000E3,5.896584959E1 +1.717096000E3,5.693976131E1 +1.717346000E3,5.531403594E1 +1.717631000E3,5.794989861E1 +1.717933000E3,5.594899441E1 +1.718204000E3,5.601359132E1 +1.718501000E3,5.861037671E1 +1.718741000E3,6.432265266E1 +1.719043000E3,6.182586376E1 +1.719355000E3,6.076827417E1 +1.719645000E3,5.634225228E1 +1.719943000E3,5.935070169E1 +1.720188000E3,5.856877062E1 +1.720486000E3,5.761843709E1 +1.720741000E3,5.935030376E1 +1.720985000E3,5.413194972E1 +1.721289000E3,5.939733818E1 +1.721553000E3,5.617827250E1 +1.721847000E3,5.807085988E1 +1.722091000E3,5.877044817E1 +1.722445000E3,6.593854232E1 +1.722681000E3,6.027114564E1 +1.722973000E3,5.866411762E1 +1.723271000E3,5.588604319E1 +1.723508000E3,5.958751798E1 +1.723800000E3,6.077290351E1 +1.724039000E3,5.722905231E1 +1.724338000E3,5.619905124E1 +1.724576000E3,5.628809107E1 +1.724876000E3,5.560357878E1 +1.725168000E3,5.447509555E1 +1.725542000E3,5.278892866E1 +1.725841000E3,4.816211457E1 +1.726139000E3,4.622333411E1 +1.726399000E3,4.728231882E1 +1.726691000E3,5.101510224E1 +1.726947000E3,4.725933617E1 +1.727273000E3,5.333398449E1 +1.727569000E3,5.518583989E1 +1.727808000E3,5.719998093E1 +1.728061000E3,5.375072532E1 +1.728352000E3,5.631849408E1 +1.728644000E3,5.232994659E1 +1.729024000E3,5.045911420E1 +1.729295000E3,4.931808913E1 +1.729541000E3,4.866846016E1 +1.729788000E3,5.127644661E1 +1.730054000E3,4.769951033E1 +1.730296000E3,5.553885299E1 +1.730573000E3,5.629080236E1 +1.730816000E3,5.218818952E1 +1.731119000E3,5.112756333E1 +1.731379000E3,5.524890032E1 +1.731688000E3,5.530134621E1 +1.731949000E3,5.451831728E1 +1.732288000E3,5.380962689E1 +1.732589000E3,5.754684503E1 +1.732833000E3,5.184401682E1 +1.733102000E3,5.011373730E1 +1.733369000E3,5.541779655E1 +1.733647000E3,5.983699601E1 +1.733886000E3,6.131428317E1 +1.734163000E3,6.052345820E1 +1.734405000E3,5.852692054E1 +1.734659000E3,5.861191265E1 +1.734933000E3,5.957936529E1 +1.735219000E3,5.639739849E1 +1.735540000E3,5.207917019E1 +1.735832000E3,4.548490451E1 +1.736112000E3,5.219897691E1 +1.736384000E3,5.618314188E1 +1.736684000E3,5.720418785E1 +1.736946000E3,5.895068629E1 +1.737213000E3,5.652216932E1 +1.737468000E3,5.796687034E1 +1.737738000E3,5.591197017E1 +1.737996000E3,5.493985473E1 +1.738236000E3,5.752137274E1 +1.738586000E3,6.041563952E1 +1.738921000E3,6.199530447E1 +1.739167000E3,5.310800091E1 +1.739430000E3,5.600574849E1 +1.739683000E3,6.494981167E1 +1.739952000E3,6.157046745E1 +1.740293000E3,6.002681302E1 +1.740611000E3,5.943541790E1 +1.740910000E3,5.731619793E1 +1.741197000E3,5.885751119E1 +1.741508000E3,5.719237093E1 +1.741767000E3,5.958897825E1 +1.742034000E3,5.543499582E1 +1.742424000E3,5.632783570E1 +1.742688000E3,5.565042743E1 +1.742946000E3,5.622883854E1 +1.743204000E3,6.327777019E1 +1.743456000E3,5.663098185E1 +1.743721000E3,5.729384715E1 +1.743966000E3,6.200582057E1 +1.744273000E3,5.107652622E1 +1.744505000E3,5.491520459E1 +1.744752000E3,5.181266373E1 +1.745004000E3,5.014115745E1 +1.745297000E3,5.338585031E1 +1.745690000E3,5.654477286E1 +1.745966000E3,5.517036116E1 +1.746219000E3,5.200430375E1 +1.746475000E3,5.963355448E1 +1.746732000E3,5.854837006E1 +1.747002000E3,5.571277949E1 +1.747293000E3,5.825116458E1 +1.747522000E3,5.673248340E1 +1.747772000E3,5.683320783E1 +1.748035000E3,5.224053713E1 +1.748289000E3,5.713452273E1 +1.748568000E3,5.539076360E1 +1.748961000E3,6.015893340E1 +1.749211000E3,5.710921188E1 +1.749460000E3,6.114476082E1 +1.749715000E3,5.648052368E1 +1.749961000E3,5.897720288E1 +1.750207000E3,5.525435431E1 +1.750521000E3,5.447453139E1 +1.750765000E3,5.883968686E1 +1.751015000E3,5.450160052E1 +1.751290000E3,5.405183560E1 +1.751522000E3,5.501343440E1 +1.751848000E3,5.586635599E1 +1.752096000E3,5.631573217E1 +1.752372000E3,5.960964241E1 +1.752637000E3,5.320710483E1 +1.752941000E3,5.848434869E1 +1.753209000E3,5.619196315E1 +1.753510000E3,5.692291103E1 +1.753774000E3,5.505374149E1 +1.754051000E3,5.721759821E1 +1.754315000E3,5.539152446E1 +1.754625000E3,5.632890174E1 +1.754919000E3,5.918851802E1 +1.755262000E3,5.807294381E1 +1.755529000E3,5.748451885E1 +1.755827000E3,6.055251826E1 +1.756067000E3,6.208050524E1 +1.756367000E3,5.991655048E1 +1.756607000E3,6.073519941E1 +1.756900000E3,5.774998130E1 +1.757144000E3,5.751173009E1 +1.757417000E3,5.299288378E1 +1.757700000E3,5.913293772E1 +1.758005000E3,5.732040664E1 +1.758269000E3,6.221202462E1 +1.758585000E3,6.285457626E1 +1.758834000E3,5.870613535E1 +1.759137000E3,5.533279687E1 +1.759391000E3,5.194643865E1 +1.759644000E3,4.891449850E1 +1.759922000E3,4.784429271E1 +1.760236000E3,5.273391136E1 +1.760503000E3,5.475616990E1 +1.760758000E3,5.640096860E1 +1.761017000E3,5.329458627E1 +1.761282000E3,4.798672737E1 +1.761535000E3,5.532988346E1 +1.761794000E3,5.189579265E1 +1.762040000E3,5.068357941E1 +1.762299000E3,5.751972157E1 +1.762578000E3,5.430434207E1 +1.762831000E3,5.331943982E1 +1.763136000E3,5.699367350E1 +1.763409000E3,5.622858108E1 +1.763658000E3,5.631559008E1 +1.763910000E3,5.738562920E1 +1.764157000E3,6.030103345E1 +1.764400000E3,5.680309722E1 +1.764695000E3,5.703631315E1 +1.765017000E3,5.682945247E1 +1.765300000E3,5.317093897E1 +1.765575000E3,5.620624417E1 +1.765832000E3,5.550075987E1 +1.766100000E3,6.321349509E1 +1.766371000E3,5.938123887E1 +1.766635000E3,6.289622107E1 +1.766898000E3,5.890101653E1 +1.767155000E3,5.928826732E1 +1.767399000E3,5.872890625E1 +1.767638000E3,6.184345237E1 +1.767877000E3,6.131073260E1 +1.768211000E3,6.085041665E1 +1.768587000E3,6.015418617E1 +1.768835000E3,5.648473324E1 +1.769119000E3,5.746059957E1 +1.769380000E3,5.608054299E1 +1.769692000E3,6.542458852E1 +1.769998000E3,6.121618195E1 +1.770281000E3,5.842785672E1 +1.770536000E3,5.763776595E1 +1.770858000E3,5.630873419E1 +1.771133000E3,5.339704361E1 +1.771378000E3,5.463873835E1 +1.771723000E3,5.659388596E1 +1.772050000E3,5.449836230E1 +1.772294000E3,5.154616724E1 +1.772537000E3,5.082603581E1 +1.772795000E3,5.334183734E1 +1.773055000E3,5.096094928E1 +1.773365000E3,5.171061147E1 +1.773612000E3,5.477281719E1 +1.773878000E3,5.060909259E1 +1.774171000E3,5.285294921E1 +1.774452000E3,5.393730531E1 +1.774725000E3,5.333400186E1 +1.774980000E3,5.285705613E1 +1.775346000E3,5.719168586E1 +1.775663000E3,5.642193929E1 +1.775908000E3,4.659059970E1 +1.776150000E3,5.521168672E1 +1.776388000E3,5.693500665E1 +1.776630000E3,6.030483668E1 +1.776910000E3,5.944095915E1 +1.777153000E3,5.708951289E1 +1.777414000E3,5.291982189E1 +1.777666000E3,5.900042024E1 +1.777935000E3,6.010949926E1 +1.778229000E3,6.009411695E1 +1.778514000E3,5.804757181E1 +1.778758000E3,5.922775473E1 +1.779011000E3,6.063545461E1 +1.779277000E3,5.950242674E1 +1.779575000E3,6.057891518E1 +1.779819000E3,6.050018223E1 +1.780115000E3,5.965583098E1 +1.780361000E3,5.651792502E1 +1.780660000E3,5.814099422E1 +1.780904000E3,5.340077797E1 +1.781203000E3,5.734973286E1 +1.781481000E3,5.846278011E1 +1.781805000E3,5.369751607E1 +1.782048000E3,5.229063054E1 +1.782299000E3,5.345996994E1 +1.782583000E3,5.724353788E1 +1.782883000E3,5.610772411E1 +1.783181000E3,5.272586700E1 +1.783423000E3,5.272075137E1 +1.783692000E3,5.495532717E1 +1.783945000E3,5.594785882E1 +1.784202000E3,5.914935612E1 +1.784483000E3,6.427791570E1 +1.784735000E3,6.185652247E1 +1.785051000E3,6.178338943E1 +1.785352000E3,6.304285312E1 +1.785598000E3,5.699176354E1 +1.785897000E3,5.705567192E1 +1.786190000E3,5.975757470E1 +1.786467000E3,6.092866408E1 +1.786714000E3,5.771726615E1 +1.786984000E3,5.434727511E1 +1.787232000E3,5.250796794E1 +1.787486000E3,5.668884634E1 +1.787813000E3,5.600600547E1 +1.788061000E3,5.162213387E1 +1.788391000E3,5.782497792E1 +1.788636000E3,5.900804565E1 +1.788935000E3,6.056317474E1 +1.789175000E3,5.749029459E1 +1.789469000E3,6.053654612E1 +1.789714000E3,5.841478287E1 +1.789988000E3,5.700130118E1 +1.790219000E3,5.562837186E1 +1.790509000E3,5.430369658E1 +1.790806000E3,5.586895515E1 +1.791048000E3,5.809725956E1 +1.791409000E3,5.552827992E1 +1.791650000E3,5.534472171E1 +1.791981000E3,5.671474363E1 +1.792227000E3,5.716453332E1 +1.792522000E3,5.844249975E1 +1.792847000E3,5.961186667E1 +1.793109000E3,5.794833541E1 +1.793437000E3,5.832360597E1 +1.793698000E3,5.996001578E1 +1.793970000E3,5.849924827E1 +1.794223000E3,5.823551411E1 +1.794488000E3,5.480450178E1 +1.794819000E3,5.715609034E1 +1.795083000E3,5.418083703E1 +1.795329000E3,5.529883425E1 +1.795587000E3,5.729455769E1 +1.795853000E3,5.358946536E1 +1.796083000E3,5.534684059E1 +1.796374000E3,5.693696454E1 +1.796630000E3,5.642610016E1 +1.796927000E3,5.692548294E1 +1.797194000E3,5.931602223E1 +1.797469000E3,5.877569790E1 +1.797716000E3,5.527135197E1 +1.798053000E3,5.904674814E1 +1.798358000E3,5.655039196E1 +1.798612000E3,5.796779928E1 +1.798921000E3,5.499199210E1 +1.799185000E3,5.693837926E1 +1.799465000E3,6.235855457E1 +1.799695000E3,6.271612813E1 +1.799964000E3,6.118271582E1 +1.800233000E3,6.171552449E1 +1.800562000E3,6.293258336E1 +1.800818000E3,5.927940855E1 +1.801077000E3,5.836879001E1 +1.801406000E3,6.182854437E1 +1.801650000E3,5.918527405E1 +1.801894000E3,6.352260837E1 +1.802163000E3,6.142940723E1 +1.802385000E3,5.867772092E1 +1.802631000E3,5.916688243E1 +1.802927000E3,5.855222781E1 +1.803228000E3,6.125789004E1 +1.803533000E3,5.839377949E1 +1.803816000E3,5.705167204E1 +1.804057000E3,5.641730344E1 +1.804362000E3,6.771092582E1 +1.804585000E3,6.036461449E1 +1.804835000E3,6.742095194E1 +1.805132000E3,6.133151855E1 +1.805443000E3,6.658554202E1 +1.805718000E3,7.095511769E1 +1.806003000E3,7.330553664E1 +1.806290000E3,6.732809523E1 +1.806566000E3,6.106403544E1 +1.806844000E3,5.830930506E1 +1.807085000E3,6.610455401E1 +1.807442000E3,5.944325189E1 +1.807800000E3,5.667454347E1 +1.808044000E3,5.560521877E1 +1.808299000E3,5.488377812E1 +1.808542000E3,5.279721650E1 +1.808789000E3,4.834692654E1 +1.809029000E3,4.661669368E1 +1.809276000E3,5.501186804E1 +1.809526000E3,5.384830085E1 +1.809820000E3,5.526588307E1 +1.810084000E3,5.900458249E1 +1.810393000E3,5.557146256E1 +1.810647000E3,5.355619280E1 +1.811023000E3,5.627924000E1 +1.811283000E3,5.384503050E1 +1.811527000E3,5.309622401E1 +1.811816000E3,5.228523776E1 +1.812070000E3,5.317657142E1 +1.812328000E3,5.813846570E1 +1.812583000E3,5.621088360E1 +1.812927000E3,5.646965227E1 +1.813191000E3,5.322001188E1 +1.813436000E3,5.451886743E1 +1.813748000E3,5.558621720E1 +1.814006000E3,5.673920724E1 +1.814328000E3,5.582855401E1 +1.814591000E3,6.044196407E1 +1.814848000E3,5.769208427E1 +1.815109000E3,6.206015086E1 +1.815391000E3,5.918173335E1 +1.815660000E3,5.779702061E1 +1.815927000E3,6.516398742E1 +1.816218000E3,5.927869783E1 +1.816546000E3,6.320256740E1 +1.816802000E3,6.296743684E1 +1.817051000E3,5.869001212E1 +1.817329000E3,5.985536664E1 +1.817620000E3,5.435607380E1 +1.817905000E3,5.721703373E1 +1.818148000E3,6.314389823E1 +1.818376000E3,6.116752308E1 +1.818622000E3,5.773611736E1 +1.818863000E3,5.892899245E1 +1.819138000E3,5.791411351E1 +1.819457000E3,6.283307798E1 +1.819719000E3,5.805008540E1 +1.819967000E3,6.383011196E1 +1.820266000E3,5.915938870E1 +1.820515000E3,5.795811325E1 +1.820871000E3,5.730398564E1 +1.821113000E3,5.907223014E1 +1.821388000E3,5.566469845E1 +1.821612000E3,5.223652040E1 +1.821858000E3,5.461868826E1 +1.822118000E3,5.731142265E1 +1.822388000E3,5.743609212E1 +1.822672000E3,6.147918645E1 +1.822919000E3,6.109678537E1 +1.823167000E3,5.654516230E1 +1.823464000E3,6.010058675E1 +1.823716000E3,6.101649690E1 +1.824046000E3,5.741898993E1 +1.824372000E3,5.654969113E1 +1.824629000E3,5.489877253E1 +1.824894000E3,6.410593751E1 +1.825142000E3,5.923267903E1 +1.825399000E3,5.977300321E1 +1.825683000E3,5.945891570E1 +1.825907000E3,5.799474745E1 +1.826162000E3,5.485933719E1 +1.826447000E3,5.848818620E1 +1.826697000E3,5.937282663E1 +1.826944000E3,5.473647239E1 +1.827319000E3,5.611635619E1 +1.827649000E3,5.704234375E1 +1.827909000E3,5.174683398E1 +1.828172000E3,5.243070089E1 +1.828457000E3,5.835398328E1 +1.828710000E3,6.579711207E1 +1.828969000E3,6.063158540E1 +1.829218000E3,5.379307224E1 +1.829474000E3,5.791005982E1 +1.829779000E3,5.908028356E1 +1.830025000E3,5.476368407E1 +1.830307000E3,5.608145667E1 +1.830627000E3,5.417323034E1 +1.830843000E3,5.295530865E1 +1.831087000E3,5.335160491E1 +1.831385000E3,5.274441298E1 +1.831622000E3,5.307477504E1 +1.831918000E3,5.606159985E1 +1.832155000E3,6.009472302E1 +1.832471000E3,5.380117674E1 +1.832766000E3,5.382200579E1 +1.833012000E3,5.176006230E1 +1.833256000E3,5.956343573E1 +1.833577000E3,5.545935306E1 +1.833826000E3,5.528541848E1 +1.834083000E3,5.436381252E1 +1.834373000E3,5.684307553E1 +1.834669000E3,5.352399464E1 +1.834910000E3,5.651184236E1 +1.835208000E3,5.432875840E1 +1.835453000E3,5.442576527E1 +1.835752000E3,5.643309342E1 +1.836022000E3,5.781174029E1 +1.836293000E3,6.110602518E1 +1.836557000E3,5.591856301E1 +1.836932000E3,5.423752303E1 +1.837200000E3,5.716598850E1 +1.837455000E3,5.511743414E1 +1.837716000E3,5.819026063E1 +1.837988000E3,5.728773522E1 +1.838236000E3,5.959151016E1 +1.838540000E3,5.810767345E1 +1.838799000E3,5.779128856E1 +1.839096000E3,6.092094761E1 +1.839361000E3,5.957871329E1 +1.839608000E3,5.838702884E1 +1.839856000E3,5.927631822E1 +1.840242000E3,5.748386760E1 +1.840516000E3,5.957609475E1 +1.840759000E3,5.688693666E1 +1.841054000E3,5.883374773E1 +1.841320000E3,5.769470339E1 +1.841597000E3,5.894509733E1 +1.841885000E3,6.032854908E1 +1.842190000E3,5.891601570E1 +1.842444000E3,5.957860612E1 +1.842691000E3,5.968229576E1 +1.842933000E3,5.829247522E1 +1.843258000E3,6.183086549E1 +1.843539000E3,6.077794792E1 +1.843765000E3,5.928253866E1 +1.844002000E3,5.782805396E1 +1.844301000E3,5.975447959E1 +1.844589000E3,6.108169982E1 +1.844825000E3,5.915565503E1 +1.845116000E3,5.981302437E1 +1.845363000E3,6.019248645E1 +1.845636000E3,6.014223773E1 +1.845861000E3,6.160258605E1 +1.846139000E3,6.002388007E1 +1.846447000E3,6.004612452E1 +1.846706000E3,5.932487324E1 +1.846979000E3,5.718424575E1 +1.847284000E3,5.712987240E1 +1.847586000E3,5.557624595E1 +1.847888000E3,5.603981815E1 +1.848146000E3,5.769591687E1 +1.848418000E3,5.526085696E1 +1.848706000E3,5.815102401E1 +1.848972000E3,5.884177354E1 +1.849226000E3,5.853138751E1 +1.849515000E3,6.156208919E1 +1.849746000E3,6.064923427E1 +1.850008000E3,6.590305387E1 +1.850338000E3,5.853444981E1 +1.850640000E3,5.717447935E1 +1.850942000E3,5.680568615E1 +1.851242000E3,5.928468331E1 +1.851504000E3,5.798449444E1 +1.851757000E3,5.802619768E1 +1.852033000E3,5.998338312E1 +1.852296000E3,5.683616594E1 +1.852550000E3,5.692327884E1 +1.852886000E3,5.878610583E1 +1.853162000E3,5.538467470E1 +1.853432000E3,5.437085520E1 +1.853738000E3,5.469765317E1 +1.854038000E3,5.790268038E1 +1.854297000E3,5.836787866E1 +1.854582000E3,6.160807622E1 +1.854881000E3,5.878613196E1 +1.855158000E3,6.200103199E1 +1.855387000E3,6.087479870E1 +1.855688000E3,6.028304140E1 +1.855930000E3,6.159527875E1 +1.856226000E3,6.082174354E1 +1.856487000E3,5.932314061E1 +1.856744000E3,5.976570730E1 +1.857001000E3,5.473753247E1 +1.857299000E3,5.954612483E1 +1.857556000E3,6.052388497E1 +1.857849000E3,5.848282940E1 +1.858086000E3,5.879664566E1 +1.858384000E3,5.864589973E1 +1.858677000E3,5.659242719E1 +1.858917000E3,5.683870091E1 +1.859195000E3,5.582498919E1 +1.859427000E3,6.011873423E1 +1.859676000E3,5.796702396E1 +1.859911000E3,5.928400715E1 +1.860149000E3,5.826876733E1 +1.860396000E3,6.038481253E1 +1.860680000E3,6.030085568E1 +1.860944000E3,5.890166619E1 +1.861209000E3,6.654379171E1 +1.861519000E3,6.016187265E1 +1.861755000E3,6.139297542E1 +1.862049000E3,6.289106669E1 +1.862388000E3,5.872946965E1 +1.862675000E3,5.800836625E1 +1.862993000E3,5.701819685E1 +1.863248000E3,5.488359846E1 +1.863519000E3,5.747446133E1 +1.863768000E3,5.996388232E1 +1.864087000E3,5.686047813E1 +1.864334000E3,5.935760915E1 +1.864635000E3,6.438349972E1 +1.864894000E3,6.008599590E1 +1.865205000E3,5.995474236E1 +1.865502000E3,6.596906108E1 +1.865837000E3,6.091064347E1 +1.866114000E3,5.885056970E1 +1.866411000E3,6.474486832E1 +1.866666000E3,5.888758286E1 +1.866964000E3,6.138447683E1 +1.867211000E3,6.032596684E1 +1.867482000E3,5.848476935E1 +1.867736000E3,5.631330849E1 +1.867989000E3,5.927138373E1 +1.868246000E3,5.817171672E1 +1.868499000E3,5.358065381E1 +1.868763000E3,5.500264039E1 +1.869129000E3,5.663946315E1 +1.869384000E3,5.601392416E1 +1.869636000E3,5.640732154E1 +1.869947000E3,5.320213962E1 +1.870207000E3,4.907811811E1 +1.870470000E3,5.784153600E1 +1.870743000E3,5.988355074E1 +1.871011000E3,5.973830135E1 +1.871253000E3,5.769679044E1 +1.871519000E3,5.395770126E1 +1.871765000E3,5.751088186E1 +1.872011000E3,5.342275719E1 +1.872301000E3,5.638616310E1 +1.872563000E3,5.124369984E1 +1.872821000E3,5.357036185E1 +1.873129000E3,5.529809524E1 +1.873386000E3,5.442720524E1 +1.873650000E3,5.306298792E1 +1.873937000E3,5.703507672E1 +1.874184000E3,5.835246426E1 +1.874444000E3,5.638184247E1 +1.874707000E3,5.201779537E1 +1.874972000E3,5.217149520E1 +1.875244000E3,5.757612416E1 +1.875577000E3,5.387788750E1 +1.875865000E3,5.607108884E1 +1.876149000E3,5.692352283E1 +1.876407000E3,5.577296536E1 +1.876687000E3,5.259836493E1 +1.876982000E3,5.467571766E1 +1.877215000E3,5.256317748E1 +1.877521000E3,5.522593862E1 +1.877775000E3,5.432669245E1 +1.878036000E3,5.734031668E1 +1.878314000E3,6.027566119E1 +1.878587000E3,5.567003578E1 +1.878912000E3,5.307720644E1 +1.879176000E3,5.659939353E1 +1.879425000E3,5.110556861E1 +1.879723000E3,5.673190580E1 +1.879969000E3,5.437112204E1 +1.880274000E3,5.433297742E1 +1.880576000E3,5.585075865E1 +1.880875000E3,5.657006430E1 +1.881117000E3,5.701623858E1 +1.881424000E3,5.749679466E1 +1.881673000E3,5.623079196E1 +1.881986000E3,5.545187468E1 +1.882329000E3,5.781610131E1 +1.882611000E3,5.432916720E1 +1.882882000E3,4.940287270E1 +1.883127000E3,5.866223377E1 +1.883391000E3,5.654564177E1 +1.883644000E3,5.888782218E1 +1.883889000E3,5.586307703E1 +1.884148000E3,5.930725555E1 +1.884413000E3,5.963840788E1 +1.884660000E3,5.928611951E1 +1.884926000E3,5.621968819E1 +1.885181000E3,5.811455305E1 +1.885457000E3,5.585646129E1 +1.885714000E3,5.989591718E1 +1.885968000E3,6.058402104E1 +1.886267000E3,5.972100226E1 +1.886517000E3,6.220704457E1 +1.886832000E3,6.037773435E1 +1.887106000E3,6.039308032E1 +1.887385000E3,6.223647696E1 +1.887617000E3,5.854088114E1 +1.887876000E3,6.248517888E1 +1.888128000E3,6.222318884E1 +1.888437000E3,6.070320114E1 +1.888777000E3,5.817372188E1 +1.889076000E3,5.382250608E1 +1.889369000E3,7.004593531E1 +1.889616000E3,6.094415751E1 +1.889913000E3,5.455584628E1 +1.890163000E3,5.387250795E1 +1.890418000E3,5.219742496E1 +1.890714000E3,5.070715955E1 +1.890961000E3,5.362651533E1 +1.891207000E3,5.046817004E1 +1.891453000E3,5.129339201E1 +1.891764000E3,4.856730286E1 +1.892053000E3,5.220705734E1 +1.892321000E3,5.401068171E1 +1.892582000E3,5.109746146E1 +1.892834000E3,5.412675897E1 +1.893090000E3,5.347014573E1 +1.893340000E3,5.092720593E1 +1.893620000E3,5.341316175E1 +1.893886000E3,4.870918930E1 +1.894142000E3,4.929590175E1 +1.894389000E3,4.686294330E1 +1.894692000E3,5.100486031E1 +1.894995000E3,5.087478993E1 +1.895328000E3,4.940372977E1 +1.895606000E3,5.362468443E1 +1.895919000E3,5.608826750E1 +1.896241000E3,5.628756413E1 +1.896497000E3,5.817843169E1 +1.896749000E3,5.809119715E1 +1.897054000E3,5.469613872E1 +1.897287000E3,5.437807476E1 +1.897582000E3,5.794761863E1 +1.897897000E3,6.027023965E1 +1.898145000E3,5.913564460E1 +1.898511000E3,5.510014788E1 +1.898752000E3,5.499817732E1 +1.898999000E3,5.569220222E1 +1.899294000E3,5.368447548E1 +1.899547000E3,5.912109227E1 +1.899841000E3,6.076259223E1 +1.900104000E3,6.153129043E1 +1.900349000E3,5.679462536E1 +1.900634000E3,5.721135074E1 +1.900927000E3,5.674745728E1 +1.901166000E3,5.556227882E1 +1.901462000E3,4.994603734E1 +1.901841000E3,5.122656475E1 +1.902183000E3,5.127903645E1 +1.902436000E3,5.042064547E1 +1.902695000E3,5.425673681E1 +1.902998000E3,5.484388956E1 +1.903228000E3,5.322356297E1 +1.903483000E3,5.161093724E1 +1.903730000E3,5.302125687E1 +1.904019000E3,5.241958307E1 +1.904307000E3,5.116604316E1 +1.904614000E3,5.319513233E1 +1.904991000E3,5.530482451E1 +1.905243000E3,5.829713614E1 +1.905528000E3,4.891404960E1 +1.905774000E3,5.408250868E1 +1.906083000E3,5.272747143E1 +1.906381000E3,5.216068921E1 +1.906624000E3,5.292203291E1 +1.906885000E3,5.243548019E1 +1.907149000E3,4.981562618E1 +1.907448000E3,5.500279348E1 +1.907742000E3,5.481190601E1 +1.907999000E3,5.369800103E1 +1.908315000E3,6.390197571E1 +1.908579000E3,6.517990141E1 +1.908825000E3,5.822949910E1 +1.909064000E3,5.655728640E1 +1.909356000E3,5.292186662E1 +1.909600000E3,5.069372058E1 +1.909895000E3,5.368100654E1 +1.910138000E3,5.616508462E1 +1.910432000E3,6.285923815E1 +1.910670000E3,6.254266196E1 +1.910979000E3,5.628599605E1 +1.911260000E3,5.616383984E1 +1.911482000E3,5.074231882E1 +1.911728000E3,5.398858859E1 +1.911977000E3,5.585565083E1 +1.912237000E3,5.777112626E1 +1.912532000E3,6.036032129E1 +1.912783000E3,6.077032608E1 +1.913052000E3,5.839282786E1 +1.913316000E3,5.397912726E1 +1.913575000E3,5.582771928E1 +1.913848000E3,5.579334158E1 +1.914143000E3,5.778281485E1 +1.914450000E3,5.783459906E1 +1.914713000E3,6.199387267E1 +1.914943000E3,6.173706737E1 +1.915185000E3,5.621060236E1 +1.915433000E3,5.563784893E1 +1.915692000E3,5.470990272E1 +1.915951000E3,5.469960060E1 +1.916217000E3,6.171536544E1 +1.916470000E3,5.862130066E1 +1.916777000E3,5.839467924E1 +1.917028000E3,5.552209731E1 +1.917324000E3,5.763067987E1 +1.917687000E3,5.981653815E1 +1.917967000E3,5.790518789E1 +1.918210000E3,5.220287871E1 +1.918457000E3,5.707286116E1 +1.918759000E3,5.657529642E1 +1.918997000E3,6.000130629E1 +1.919241000E3,5.708419446E1 +1.919496000E3,5.749223221E1 +1.919768000E3,5.843781753E1 +1.920074000E3,5.671929683E1 +1.920373000E3,5.881070992E1 +1.920621000E3,5.603223824E1 +1.920956000E3,6.053511488E1 +1.921216000E3,5.525745837E1 +1.921476000E3,6.186721324E1 +1.921723000E3,6.214292360E1 +1.922025000E3,5.857206109E1 +1.922320000E3,5.934438900E1 +1.922561000E3,6.077867207E1 +1.922860000E3,5.578255978E1 +1.923099000E3,5.723807446E1 +1.923347000E3,5.785786452E1 +1.923636000E3,6.037753633E1 +1.923892000E3,6.106459696E1 +1.924223000E3,5.873119773E1 +1.924511000E3,5.862235861E1 +1.924814000E3,5.732521131E1 +1.925070000E3,5.161553090E1 +1.925373000E3,5.243351685E1 +1.925626000E3,5.041805469E1 +1.925919000E3,5.543714980E1 +1.926175000E3,5.338657816E1 +1.926425000E3,5.616854022E1 +1.926695000E3,5.699328540E1 +1.926965000E3,5.787312270E1 +1.927305000E3,5.558473925E1 +1.927614000E3,5.927685087E1 +1.927880000E3,6.254706193E1 +1.928125000E3,6.079427969E1 +1.928390000E3,5.412440784E1 +1.928634000E3,5.441834540E1 +1.928928000E3,5.220486428E1 +1.929215000E3,5.210908233E1 +1.929515000E3,5.352367419E1 +1.929766000E3,5.356350702E1 +1.930022000E3,5.184851991E1 +1.930322000E3,5.311742835E1 +1.930607000E3,5.453786592E1 +1.930870000E3,5.814140937E1 +1.931155000E3,5.779656646E1 +1.931440000E3,5.488757891E1 +1.931727000E3,5.385182390E1 +1.931981000E3,5.705491580E1 +1.932229000E3,5.576165296E1 +1.932491000E3,5.781333383E1 +1.932730000E3,5.616780300E1 +1.932971000E3,5.400230043E1 +1.933232000E3,5.518627884E1 +1.933510000E3,5.211300688E1 +1.933795000E3,5.292820587E1 +1.934127000E3,5.382097927E1 +1.934390000E3,6.102840439E1 +1.934671000E3,5.486275546E1 +1.934948000E3,5.206103103E1 +1.935198000E3,5.739150099E1 +1.935506000E3,5.310844778E1 +1.935756000E3,5.392681604E1 +1.936008000E3,5.250003264E1 +1.936256000E3,5.801399662E1 +1.936524000E3,5.696032820E1 +1.936785000E3,5.414492013E1 +1.937032000E3,5.536982174E1 +1.937391000E3,5.750979970E1 +1.937677000E3,5.370086514E1 +1.937972000E3,5.359409099E1 +1.938241000E3,4.663692517E1 +1.938508000E3,4.740501122E1 +1.938772000E3,4.812116539E1 +1.939051000E3,4.940260018E1 +1.939311000E3,5.211533825E1 +1.939553000E3,5.351181789E1 +1.939796000E3,5.597808269E1 +1.940081000E3,5.841474518E1 +1.940347000E3,5.900966915E1 +1.940680000E3,5.844032848E1 +1.940932000E3,6.047778057E1 +1.941187000E3,6.179458512E1 +1.941488000E3,5.569784051E1 +1.941730000E3,5.535681081E1 +1.941971000E3,5.409739450E1 +1.942227000E3,5.551927029E1 +1.942555000E3,5.259381649E1 +1.942855000E3,5.090743186E1 +1.943101000E3,5.330610416E1 +1.943383000E3,5.722147303E1 +1.943610000E3,5.564867598E1 +1.944013000E3,5.456395907E1 +1.944265000E3,5.442943523E1 +1.944557000E3,5.982581487E1 +1.944820000E3,5.751114261E1 +1.945081000E3,5.998630171E1 +1.945333000E3,5.908382499E1 +1.945646000E3,5.828329647E1 +1.945951000E3,5.602282904E1 +1.946199000E3,6.197108249E1 +1.946496000E3,5.533258874E1 +1.946770000E3,5.704060455E1 +1.947126000E3,5.457797110E1 +1.947363000E3,5.430717613E1 +1.947637000E3,5.940687974E1 +1.947953000E3,5.436076271E1 +1.948235000E3,5.660912008E1 +1.948550000E3,5.504399315E1 +1.948861000E3,5.464999644E1 +1.949122000E3,5.565806372E1 +1.949384000E3,5.190569146E1 +1.949646000E3,5.153937000E1 +1.949972000E3,5.628803963E1 +1.950248000E3,5.966716422E1 +1.950577000E3,5.820503815E1 +1.950822000E3,5.652058726E1 +1.951118000E3,5.802645793E1 +1.951349000E3,5.727916959E1 +1.951597000E3,5.784165576E1 +1.951900000E3,5.999225852E1 +1.952197000E3,6.048891831E1 +1.952433000E3,5.821794698E1 +1.952728000E3,5.416701806E1 +1.952964000E3,5.183738883E1 +1.953295000E3,5.384161890E1 +1.953675000E3,5.430376660E1 +1.953907000E3,5.257088063E1 +1.954151000E3,5.392186903E1 +1.954431000E3,6.167467738E1 +1.954678000E3,5.958790115E1 +1.954923000E3,5.822018477E1 +1.955185000E3,5.808448347E1 +1.955447000E3,5.733347749E1 +1.955703000E3,6.261390980E1 +1.956005000E3,5.829281758E1 +1.956246000E3,5.949056653E1 +1.956541000E3,5.839747914E1 +1.956810000E3,5.770882066E1 +1.957120000E3,5.690637302E1 +1.957421000E3,5.796705847E1 +1.957668000E3,5.867770180E1 +1.957936000E3,5.696585443E1 +1.958216000E3,5.738908049E1 +1.958463000E3,5.842272770E1 +1.958721000E3,5.966072568E1 +1.959033000E3,6.340725612E1 +1.959281000E3,6.193544465E1 +1.959566000E3,5.927164536E1 +1.959888000E3,6.146900670E1 +1.960249000E3,6.270186363E1 +1.960512000E3,5.695216686E1 +1.960779000E3,5.725758836E1 +1.961040000E3,5.788439963E1 +1.961303000E3,6.286977927E1 +1.961557000E3,6.361469653E1 +1.961802000E3,6.277422462E1 +1.962060000E3,6.032704022E1 +1.962310000E3,5.600516510E1 +1.962586000E3,6.188879617E1 +1.962805000E3,6.271522018E1 +1.963107000E3,6.025198847E1 +1.963453000E3,6.001529679E1 +1.963728000E3,5.375240125E1 +1.964036000E3,5.055228276E1 +1.964331000E3,5.257092943E1 +1.964568000E3,5.708661900E1 +1.964868000E3,5.629448239E1 +1.965178000E3,5.425890416E1 +1.965431000E3,5.575014937E1 +1.965679000E3,5.801461965E1 +1.965931000E3,5.400244473E1 +1.966191000E3,5.474887871E1 +1.966525000E3,5.196538635E1 +1.966783000E3,5.536524974E1 +1.967040000E3,5.974878933E1 +1.967338000E3,6.200932986E1 +1.967644000E3,6.295299888E1 +1.967909000E3,6.272635154E1 +1.968153000E3,5.902465660E1 +1.968474000E3,5.897159976E1 +1.968773000E3,5.506910037E1 +1.969014000E3,5.622897524E1 +1.969254000E3,5.457019516E1 +1.969505000E3,5.648049168E1 +1.969892000E3,5.656883155E1 +1.970152000E3,5.598423772E1 +1.970446000E3,5.186768597E1 +1.970726000E3,5.526177698E1 +1.971020000E3,5.810907246E1 +1.971304000E3,5.262875480E1 +1.971613000E3,5.141696402E1 +1.971915000E3,5.298264424E1 +1.972196000E3,5.641801556E1 +1.972483000E3,5.228737642E1 +1.972725000E3,5.649656740E1 +1.973036000E3,5.867645632E1 +1.973323000E3,5.679238187E1 +1.973633000E3,5.959682402E1 +1.973935000E3,5.617109756E1 +1.974236000E3,5.473085666E1 +1.974547000E3,5.589564412E1 +1.974836000E3,5.691193712E1 +1.975136000E3,5.808545953E1 +1.975385000E3,5.922478363E1 +1.975631000E3,5.707996013E1 +1.975881000E3,5.820923707E1 +1.976194000E3,5.897957095E1 +1.976453000E3,6.019944728E1 +1.976814000E3,6.472960186E1 +1.977076000E3,6.312075290E1 +1.977356000E3,5.886370461E1 +1.977618000E3,5.750754913E1 +1.977917000E3,5.531180501E1 +1.978189000E3,5.815410032E1 +1.978463000E3,5.735965971E1 +1.978732000E3,5.593071322E1 +1.978999000E3,5.835041964E1 +1.979245000E3,5.646810288E1 +1.979493000E3,5.392299875E1 +1.979902000E3,5.430590311E1 +1.980142000E3,5.447583546E1 +1.980384000E3,5.260389735E1 +1.980632000E3,5.537561423E1 +1.980873000E3,5.836960119E1 +1.981120000E3,5.425821286E1 +1.981389000E3,5.153336720E1 +1.981618000E3,5.420085973E1 +1.981915000E3,5.457985954E1 +1.982165000E3,5.637026749E1 +1.982404000E3,6.009656118E1 +1.982718000E3,5.903298531E1 +1.983029000E3,5.665152425E1 +1.983296000E3,5.778918758E1 +1.983538000E3,5.444374512E1 +1.983786000E3,5.619088618E1 +1.984047000E3,6.088482249E1 +1.984304000E3,5.678390940E1 +1.984575000E3,5.873820942E1 +1.984842000E3,6.004736340E1 +1.985142000E3,6.191465398E1 +1.985405000E3,6.154032648E1 +1.985653000E3,5.967034113E1 +1.985913000E3,5.855925349E1 +1.986211000E3,5.529356341E1 +1.986557000E3,5.823190054E1 +1.986847000E3,5.749679599E1 +1.987098000E3,5.855123449E1 +1.987369000E3,5.999203293E1 +1.987610000E3,6.139424716E1 +1.987876000E3,5.730078222E1 +1.988126000E3,5.649537684E1 +1.988425000E3,5.872458305E1 +1.988727000E3,5.704322852E1 +1.989024000E3,6.264447151E1 +1.989326000E3,5.763604303E1 +1.989641000E3,5.657919006E1 +1.989961000E3,5.706004491E1 +1.990255000E3,6.115159729E1 +1.990571000E3,5.721964371E1 +1.990829000E3,5.780420781E1 +1.991088000E3,5.782228640E1 +1.991353000E3,5.791642518E1 +1.991611000E3,5.820065680E1 +1.991935000E3,5.675756460E1 +1.992174000E3,5.720433643E1 +1.992482000E3,5.907701380E1 +1.992770000E3,5.791335620E1 +1.993107000E3,5.504589678E1 +1.993369000E3,6.117578252E1 +1.993619000E3,5.902046786E1 +1.993912000E3,6.024153080E1 +1.994216000E3,6.061721402E1 +1.994464000E3,6.185610038E1 +1.994715000E3,5.902440055E1 +1.995005000E3,6.112374185E1 +1.995249000E3,5.664710018E1 +1.995551000E3,5.841351492E1 +1.995787000E3,5.961393992E1 +1.996119000E3,5.614463215E1 +1.996387000E3,5.528223904E1 +1.996647000E3,5.706960328E1 +1.996947000E3,5.544195306E1 +1.997203000E3,5.747091679E1 +1.997452000E3,5.434233120E1 +1.997769000E3,5.794847441E1 +1.998019000E3,5.504963001E1 +1.998267000E3,5.470768853E1 +1.998498000E3,6.426300701E1 +1.998789000E3,6.070245213E1 +1.999090000E3,5.893271279E1 +1.999390000E3,5.873668669E1 +1.999698000E3,6.355663744E1 +1.999962000E3,6.500393379E1 +2.000214000E3,6.177640112E1 +2.000471000E3,6.122167361E1 +2.000775000E3,5.982616779E1 +2.001079000E3,5.944943300E1 +2.001339000E3,5.772707313E1 +2.001595000E3,5.934980117E1 +2.001862000E3,6.221301291E1 +2.002160000E3,6.098009785E1 +2.002491000E3,6.205877653E1 +2.002758000E3,5.978743388E1 +2.003062000E3,6.141065367E1 +2.003307000E3,6.146860620E1 +2.003555000E3,6.323368939E1 +2.003884000E3,6.072009355E1 +2.004185000E3,6.072017978E1 +2.004424000E3,6.079512782E1 +2.004673000E3,6.651000141E1 +2.004939000E3,6.185812181E1 +2.005202000E3,5.705353418E1 +2.005472000E3,5.820400818E1 +2.005800000E3,5.682542431E1 +2.006070000E3,6.224932691E1 +2.006350000E3,5.654791681E1 +2.006601000E3,6.160831985E1 +2.006857000E3,6.443497299E1 +2.007101000E3,6.091208862E1 +2.007395000E3,5.867323811E1 +2.007635000E3,5.850229824E1 +2.007945000E3,6.307832054E1 +2.008197000E3,5.931313312E1 +2.008453000E3,5.632990721E1 +2.008711000E3,5.662998085E1 +2.009032000E3,5.416655753E1 +2.009268000E3,6.273936844E1 +2.009521000E3,6.129068926E1 +2.009786000E3,6.485712301E1 +2.010037000E3,6.605690213E1 +2.010298000E3,6.243431425E1 +2.010541000E3,6.062714733E1 +2.010780000E3,6.369220544E1 +2.011082000E3,5.933701247E1 +2.011330000E3,6.141658123E1 +2.011605000E3,6.232326760E1 +2.011893000E3,5.983132844E1 +2.012226000E3,6.085684837E1 +2.012489000E3,5.844434641E1 +2.012752000E3,5.992485437E1 +2.013005000E3,5.745164278E1 +2.013272000E3,5.489362140E1 +2.013573000E3,5.734004331E1 +2.013861000E3,5.569303233E1 +2.014170000E3,5.619919203E1 +2.014467000E3,5.719248521E1 +2.014715000E3,5.898607642E1 +2.015015000E3,5.312334941E1 +2.015258000E3,4.707687024E1 +2.015594000E3,5.326213693E1 +2.015822000E3,4.977107581E1 +2.016071000E3,5.399380901E1 +2.016333000E3,5.528915982E1 +2.016634000E3,5.648344312E1 +2.016879000E3,5.853194276E1 +2.017143000E3,5.969968429E1 +2.017429000E3,6.121498547E1 +2.017723000E3,5.933414775E1 +2.017961000E3,6.375558171E1 +2.018248000E3,6.102538403E1 +2.018558000E3,6.066629858E1 +2.018830000E3,5.238394429E1 +2.019065000E3,5.528030903E1 +2.019316000E3,5.711235169E1 +2.019578000E3,6.069913503E1 +2.019847000E3,5.344730110E1 +2.020093000E3,5.593398360E1 +2.020413000E3,5.112453486E1 +2.020668000E3,5.529600172E1 +2.020922000E3,5.816841553E1 +2.021177000E3,6.105447683E1 +2.021449000E3,5.967528890E1 +2.021707000E3,5.677568689E1 +2.022115000E3,5.613246875E1 +2.022403000E3,5.846674311E1 +2.022679000E3,5.999468936E1 +2.022930000E3,6.268951545E1 +2.023232000E3,6.037378186E1 +2.023532000E3,6.123290650E1 +2.023784000E3,6.425880775E1 +2.024094000E3,6.043334594E1 +2.024356000E3,6.287321918E1 +2.024616000E3,6.178703582E1 +2.024868000E3,5.974424575E1 +2.025152000E3,5.863905018E1 +2.025429000E3,5.669082005E1 +2.025716000E3,6.192616195E1 +2.026008000E3,6.367561928E1 +2.026300000E3,6.061621393E1 +2.026543000E3,6.411900249E1 +2.026802000E3,6.060951858E1 +2.027066000E3,5.606119041E1 +2.027395000E3,5.099901519E1 +2.027693000E3,5.622472082E1 +2.027945000E3,5.354940616E1 +2.028237000E3,6.282566888E1 +2.028553000E3,5.775523802E1 +2.028868000E3,6.095006183E1 +2.029133000E3,6.333727439E1 +2.029399000E3,5.925545982E1 +2.029660000E3,6.045827699E1 +2.029962000E3,5.594587825E1 +2.030223000E3,5.708579081E1 +2.030478000E3,5.777704597E1 +2.030737000E3,5.406349508E1 +2.030990000E3,5.544037764E1 +2.031246000E3,5.912518025E1 +2.031508000E3,5.924806900E1 +2.031864000E3,6.105667153E1 +2.032110000E3,5.838466956E1 +2.032350000E3,5.923100201E1 +2.032598000E3,6.024290558E1 +2.032866000E3,5.971089342E1 +2.033112000E3,5.478665804E1 +2.033351000E3,5.966531235E1 +2.033644000E3,5.755565544E1 +2.033892000E3,5.982004182E1 +2.034190000E3,5.797424789E1 +2.034425000E3,5.856301863E1 +2.034717000E3,6.325478319E1 +2.035053000E3,6.168254294E1 +2.035364000E3,6.188857455E1 +2.035619000E3,6.156039581E1 +2.035901000E3,6.235770270E1 +2.036169000E3,6.262779828E1 +2.036471000E3,6.142542176E1 +2.036764000E3,5.923845966E1 +2.037022000E3,5.827266837E1 +2.037307000E3,6.314641141E1 +2.037615000E3,5.460230698E1 +2.037870000E3,5.396400232E1 +2.038120000E3,5.561122002E1 +2.038463000E3,5.928400391E1 +2.038767000E3,5.668934966E1 +2.039069000E3,5.831653467E1 +2.039316000E3,5.267103167E1 +2.039622000E3,5.557794232E1 +2.039859000E3,5.543606804E1 +2.040196000E3,5.836770370E1 +2.040499000E3,5.678092478E1 +2.040751000E3,5.612506795E1 +2.041024000E3,5.868430679E1 +2.041274000E3,5.264121586E1 +2.041581000E3,5.828774790E1 +2.041841000E3,5.647338053E1 +2.042088000E3,6.053709731E1 +2.042403000E3,5.614689861E1 +2.042691000E3,5.714845923E1 +2.042944000E3,5.256418368E1 +2.043191000E3,5.601486494E1 +2.043466000E3,5.810869150E1 +2.043715000E3,5.529893852E1 +2.043979000E3,5.708153712E1 +2.044245000E3,5.690179830E1 +2.044568000E3,5.994555064E1 +2.044825000E3,6.172126409E1 +2.045096000E3,6.015473895E1 +2.045377000E3,5.509344178E1 +2.045629000E3,5.568915719E1 +2.045902000E3,5.938619751E1 +2.046155000E3,5.534852098E1 +2.046409000E3,5.905391706E1 +2.046693000E3,5.250115201E1 +2.046947000E3,5.587771233E1 +2.047277000E3,5.599930929E1 +2.047517000E3,5.586822515E1 +2.047803000E3,5.740436533E1 +2.048105000E3,5.413600866E1 +2.048476000E3,5.595836709E1 +2.048737000E3,5.982743631E1 +2.048992000E3,6.001131240E1 +2.049305000E3,5.629713962E1 +2.049568000E3,5.505265617E1 +2.049904000E3,5.686004167E1 +2.050199000E3,6.078932545E1 +2.050470000E3,5.919030857E1 +2.050773000E3,5.640754436E1 +2.051052000E3,5.864124078E1 +2.051311000E3,5.683150656E1 +2.051642000E3,5.391893615E1 +2.051926000E3,4.513639699E1 +2.052174000E3,5.750824000E1 +2.052467000E3,5.945309138E1 +2.052703000E3,6.260915402E1 +2.052981000E3,6.017408744E1 +2.053276000E3,6.158293130E1 +2.053516000E3,6.279041899E1 +2.053759000E3,6.005362243E1 +2.054030000E3,5.776050932E1 +2.054357000E3,5.906607942E1 +2.054642000E3,6.002924771E1 +2.054978000E3,5.708591672E1 +2.055267000E3,5.932996992E1 +2.055552000E3,5.830703641E1 +2.055812000E3,5.428102985E1 +2.056063000E3,5.893384546E1 +2.056382000E3,6.028305726E1 +2.056682000E3,5.904357096E1 +2.056923000E3,6.015407432E1 +2.057171000E3,5.801677968E1 +2.057418000E3,6.561794532E1 +2.057665000E3,6.751214025E1 +2.057959000E3,5.899748641E1 +2.058279000E3,5.616162884E1 +2.058571000E3,5.813941707E1 +2.058834000E3,6.236684118E1 +2.059132000E3,6.058455193E1 +2.059376000E3,6.004963560E1 +2.059687000E3,6.255152045E1 +2.059984000E3,6.155697025E1 +2.060225000E3,6.124056229E1 +2.060517000E3,6.072549607E1 +2.060756000E3,6.119225814E1 +2.061060000E3,5.953618039E1 +2.061302000E3,5.869582322E1 +2.061578000E3,6.248269042E1 +2.061841000E3,6.070173510E1 +2.062089000E3,6.023992255E1 +2.062337000E3,5.848175462E1 +2.062607000E3,5.092907116E1 +2.062859000E3,5.442118268E1 +2.063124000E3,5.298599309E1 +2.063425000E3,6.030333428E1 +2.063671000E3,5.835700379E1 +2.063954000E3,5.943633389E1 +2.064268000E3,5.761479859E1 +2.064577000E3,5.520238299E1 +2.064822000E3,5.901822557E1 +2.065074000E3,5.705952734E1 +2.065339000E3,6.136116330E1 +2.065603000E3,5.746483296E1 +2.065865000E3,5.867757380E1 +2.066141000E3,5.709322981E1 +2.066441000E3,5.775131141E1 +2.066691000E3,5.886237327E1 +2.067036000E3,5.617972984E1 +2.067288000E3,5.802507148E1 +2.067560000E3,6.044497816E1 +2.067891000E3,5.450044868E1 +2.068148000E3,5.616761260E1 +2.068412000E3,6.243097888E1 +2.068673000E3,5.783788439E1 +2.068946000E3,5.764761585E1 +2.069196000E3,5.683737954E1 +2.069468000E3,5.609890848E1 +2.069778000E3,5.465619904E1 +2.070034000E3,5.368960846E1 +2.070328000E3,6.032893819E1 +2.070574000E3,5.862927742E1 +2.070842000E3,5.635830209E1 +2.071101000E3,5.822198053E1 +2.071339000E3,5.691346983E1 +2.071597000E3,5.865778618E1 +2.071860000E3,5.810560725E1 +2.072128000E3,5.968009174E1 +2.072425000E3,5.833852533E1 +2.072667000E3,5.784540163E1 +2.072934000E3,5.644439458E1 +2.073184000E3,5.178260396E1 +2.073488000E3,5.751445421E1 +2.073769000E3,5.974800721E1 +2.074068000E3,6.534291023E1 +2.074348000E3,6.371076652E1 +2.074624000E3,6.156132937E1 +2.074877000E3,6.012113548E1 +2.075119000E3,6.026351151E1 +2.075377000E3,6.142675581E1 +2.075661000E3,6.194478144E1 +2.075914000E3,6.183865569E1 +2.076267000E3,6.387512541E1 +2.076547000E3,6.077311287E1 +2.076803000E3,6.130963963E1 +2.077056000E3,5.862622582E1 +2.077295000E3,5.463497219E1 +2.077610000E3,5.484231095E1 +2.077891000E3,6.099801434E1 +2.078171000E3,5.475621164E1 +2.078466000E3,5.955577801E1 +2.078709000E3,5.720097088E1 +2.078954000E3,5.661944912E1 +2.079224000E3,5.443336360E1 +2.079503000E3,5.917559782E1 +2.079800000E3,5.424380486E1 +2.080057000E3,6.013762169E1 +2.080307000E3,6.100643768E1 +2.080558000E3,6.205128007E1 +2.080810000E3,6.007904071E1 +2.081092000E3,6.423414837E1 +2.081354000E3,5.938817614E1 +2.081601000E3,6.006860062E1 +2.081845000E3,5.833570272E1 +2.082143000E3,5.962915676E1 +2.082396000E3,5.844615966E1 +2.082663000E3,5.932060291E1 +2.082921000E3,6.037844323E1 +2.083227000E3,5.719168160E1 +2.083487000E3,5.597578938E1 +2.083743000E3,5.236775830E1 +2.084062000E3,5.471900653E1 +2.084318000E3,5.178371688E1 +2.084618000E3,5.707729304E1 +2.084858000E3,5.526812689E1 +2.085154000E3,5.716405930E1 +2.085391000E3,5.478798233E1 +2.085687000E3,5.496315929E1 +2.085932000E3,5.701239101E1 +2.086228000E3,5.776438308E1 +2.086467000E3,5.628202894E1 +2.086760000E3,5.042244376E1 +2.087015000E3,5.775963511E1 +2.087362000E3,4.982890988E1 +2.087671000E3,4.785672217E1 +2.087922000E3,4.762697394E1 +2.088178000E3,5.046726223E1 +2.088438000E3,4.890262424E1 +2.088711000E3,5.501277631E1 +2.088981000E3,5.666001705E1 +2.089249000E3,6.014252161E1 +2.089513000E3,5.925311989E1 +2.089806000E3,6.173820636E1 +2.090063000E3,5.350884215E1 +2.090366000E3,5.736408779E1 +2.090744000E3,5.450936109E1 +2.091005000E3,5.763377323E1 +2.091253000E3,6.042269191E1 +2.091515000E3,5.484903903E1 +2.091757000E3,5.882101591E1 +2.092028000E3,5.833139845E1 +2.092280000E3,5.703430671E1 +2.092527000E3,5.247783814E1 +2.092809000E3,5.233323676E1 +2.093037000E3,5.202869643E1 +2.093354000E3,5.628845797E1 +2.093634000E3,5.325396544E1 +2.094006000E3,5.654992892E1 +2.094280000E3,5.713253789E1 +2.094541000E3,5.967664240E1 +2.094800000E3,5.750232678E1 +2.095069000E3,5.544480371E1 +2.095333000E3,5.462176641E1 +2.095596000E3,5.811248949E1 +2.095853000E3,6.196847972E1 +2.096192000E3,5.842850461E1 +2.096488000E3,5.597774452E1 +2.096726000E3,5.601282925E1 +2.097104000E3,5.625832805E1 +2.097364000E3,5.315488909E1 +2.097602000E3,5.287250653E1 +2.097844000E3,5.523708836E1 +2.098081000E3,5.724292600E1 +2.098340000E3,5.659511238E1 +2.098670000E3,5.675324149E1 +2.098945000E3,5.485884276E1 +2.099219000E3,5.694143956E1 +2.099469000E3,5.561655413E1 +2.099765000E3,5.844909410E1 +2.100011000E3,6.135621316E1 +2.100343000E3,5.968766012E1 +2.100584000E3,5.173347950E1 +2.100832000E3,5.415548255E1 +2.101090000E3,5.271968845E1 +2.101339000E3,5.007174890E1 +2.101624000E3,5.279525002E1 +2.101895000E3,5.358558767E1 +2.102197000E3,5.559048142E1 +2.102438000E3,5.476305303E1 +2.102705000E3,5.237114911E1 +2.102947000E3,5.014972007E1 +2.103218000E3,4.895902935E1 +2.103469000E3,5.192053997E1 +2.103853000E3,4.647138436E1 +2.104101000E3,4.837766327E1 +2.104448000E3,5.088929287E1 +2.104740000E3,5.561591777E1 +2.104997000E3,5.440319534E1 +2.105260000E3,5.347164399E1 +2.105561000E3,5.151610441E1 +2.105813000E3,5.075382634E1 +2.106121000E3,5.244425755E1 +2.106357000E3,5.269617654E1 +2.106663000E3,5.149027406E1 +2.106954000E3,5.659456733E1 +2.107266000E3,5.282561460E1 +2.107606000E3,5.407918273E1 +2.107883000E3,5.643922092E1 +2.108164000E3,5.169657105E1 +2.108480000E3,5.713744586E1 +2.108748000E3,5.931186178E1 +2.109003000E3,5.645689600E1 +2.109252000E3,5.322874786E1 +2.109552000E3,5.363731782E1 +2.109821000E3,5.353815648E1 +2.110077000E3,5.445551750E1 +2.110418000E3,5.491110228E1 +2.110669000E3,5.291647814E1 +2.110921000E3,5.202914132E1 +2.111180000E3,5.363241827E1 +2.111479000E3,5.566624291E1 +2.111721000E3,5.645238247E1 +2.112027000E3,5.458458697E1 +2.112294000E3,5.469783372E1 +2.112597000E3,5.582449562E1 +2.112854000E3,5.595416398E1 +2.113105000E3,5.113785865E1 +2.113352000E3,6.248282803E1 +2.113711000E3,5.880495226E1 +2.113968000E3,5.941805617E1 +2.114248000E3,5.561632009E1 +2.114507000E3,5.501810850E1 +2.114754000E3,5.936291007E1 +2.115053000E3,6.127733734E1 +2.115321000E3,6.057491273E1 +2.115616000E3,6.127323198E1 +2.115893000E3,5.760488174E1 +2.116193000E3,6.030881831E1 +2.116434000E3,5.967518116E1 +2.116722000E3,5.720938908E1 +2.117066000E3,5.605932878E1 +2.117338000E3,6.068190844E1 +2.117598000E3,5.400374866E1 +2.117892000E3,5.332007667E1 +2.118133000E3,4.991979059E1 +2.118428000E3,5.700198654E1 +2.118666000E3,5.878418983E1 +2.118922000E3,5.703766890E1 +2.119230000E3,5.731012811E1 +2.119515000E3,5.865622099E1 +2.119741000E3,5.772295719E1 +2.120015000E3,5.851982083E1 +2.120322000E3,5.958645129E1 +2.120616000E3,6.233814130E1 +2.120861000E3,6.002711287E1 +2.121162000E3,5.939190004E1 +2.121437000E3,5.758195225E1 +2.121690000E3,5.564648712E1 +2.121946000E3,5.336629511E1 +2.122218000E3,5.199121426E1 +2.122476000E3,5.906368298E1 +2.122759000E3,5.917930836E1 +2.123014000E3,5.824882047E1 +2.123266000E3,5.770359270E1 +2.123492000E3,5.695638802E1 +2.123777000E3,5.720151485E1 +2.124027000E3,6.045411810E1 +2.124327000E3,5.540258870E1 +2.124575000E3,5.828000252E1 +2.124835000E3,5.500577731E1 +2.125106000E3,5.926473821E1 +2.125354000E3,5.472888078E1 +2.125611000E3,5.530970077E1 +2.125862000E3,5.595037084E1 +2.126117000E3,5.439239133E1 +2.126432000E3,5.961943996E1 +2.126692000E3,5.841091801E1 +2.126944000E3,5.863137443E1 +2.127282000E3,5.731398304E1 +2.127577000E3,5.665374527E1 +2.127843000E3,5.476493539E1 +2.128129000E3,5.580929465E1 +2.128437000E3,5.565551021E1 +2.128739000E3,5.869101147E1 +2.129026000E3,5.827114612E1 +2.129307000E3,5.507536074E1 +2.129577000E3,5.532393691E1 +2.129934000E3,5.233850306E1 +2.130215000E3,5.514372423E1 +2.130466000E3,5.757947445E1 +2.130714000E3,6.126034226E1 +2.131015000E3,6.074916673E1 +2.131279000E3,5.864911171E1 +2.131564000E3,5.680524431E1 +2.131825000E3,6.002252741E1 +2.132078000E3,5.953076168E1 +2.132390000E3,6.027427680E1 +2.132647000E3,5.955779136E1 +2.132902000E3,5.835756058E1 +2.133223000E3,6.286787860E1 +2.133471000E3,6.057291506E1 +2.133724000E3,5.893793659E1 +2.134002000E3,5.508555746E1 +2.134257000E3,5.619881839E1 +2.134512000E3,5.505764062E1 +2.134784000E3,5.808922162E1 +2.135054000E3,5.334583096E1 +2.135313000E3,5.298019930E1 +2.135595000E3,5.025342296E1 +2.135812000E3,5.409382682E1 +2.136057000E3,5.580950424E1 +2.136332000E3,5.523743716E1 +2.136661000E3,5.499005541E1 +2.136917000E3,5.745623005E1 +2.137196000E3,5.149169849E1 +2.137449000E3,5.261206885E1 +2.137711000E3,5.487518376E1 +2.138022000E3,5.898871991E1 +2.138270000E3,5.852026830E1 +2.138564000E3,5.868858262E1 +2.138802000E3,5.736353209E1 +2.139066000E3,5.529465652E1 +2.139332000E3,5.762578865E1 +2.139672000E3,5.790185487E1 +2.139930000E3,5.792373283E1 +2.140278000E3,5.597904656E1 +2.140535000E3,5.355980456E1 +2.140856000E3,5.411887429E1 +2.141146000E3,5.094976839E1 +2.141467000E3,5.658279242E1 +2.141735000E3,6.043792292E1 +2.142041000E3,5.996632022E1 +2.142276000E3,6.230155616E1 +2.142526000E3,6.102528468E1 +2.142783000E3,5.770338577E1 +2.143124000E3,5.827243883E1 +2.143406000E3,5.367650147E1 +2.143645000E3,5.777094487E1 +2.143915000E3,5.851595499E1 +2.144175000E3,5.573729509E1 +2.144454000E3,5.467626304E1 +2.144700000E3,5.699765591E1 +2.144968000E3,5.692170932E1 +2.145246000E3,6.030210344E1 +2.145550000E3,5.876913066E1 +2.145797000E3,5.698149837E1 +2.146042000E3,5.982717784E1 +2.146368000E3,5.905293636E1 +2.146676000E3,5.947032966E1 +2.146922000E3,5.910471730E1 +2.147225000E3,6.065874797E1 +2.147524000E3,5.680135408E1 +2.147831000E3,5.451199701E1 +2.148090000E3,5.301325775E1 +2.148365000E3,5.466040661E1 +2.148665000E3,5.658013689E1 +2.148952000E3,5.410667827E1 +2.149249000E3,5.788683658E1 +2.149597000E3,5.873903650E1 +2.149910000E3,5.314379433E1 +2.150150000E3,5.564952940E1 +2.150451000E3,6.000220607E1 +2.150691000E3,6.235870620E1 +2.150965000E3,6.387461990E1 +2.151194000E3,6.491001134E1 +2.151449000E3,5.932544814E1 +2.151756000E3,6.117684525E1 +2.152011000E3,6.059885605E1 +2.152282000E3,6.303246617E1 +2.152596000E3,6.399854390E1 +2.152961000E3,6.063746268E1 +2.153223000E3,6.122116723E1 +2.153495000E3,5.809397592E1 +2.153749000E3,5.903784259E1 +2.153999000E3,6.047826717E1 +2.154283000E3,5.846467986E1 +2.154537000E3,6.226879102E1 +2.154785000E3,5.980611807E1 +2.155079000E3,5.787450321E1 +2.155375000E3,5.676059962E1 +2.155616000E3,5.395823696E1 +2.155912000E3,5.953639288E1 +2.156221000E3,5.971614724E1 +2.156510000E3,6.039969801E1 +2.156758000E3,5.898776738E1 +2.157015000E3,6.100474003E1 +2.157289000E3,5.750129682E1 +2.157591000E3,5.995540643E1 +2.157844000E3,5.628303244E1 +2.158104000E3,5.892686601E1 +2.158366000E3,5.712884748E1 +2.158667000E3,5.727860760E1 +2.158932000E3,5.313556696E1 +2.159288000E3,5.635583768E1 +2.159555000E3,5.929473664E1 +2.159809000E3,5.396180560E1 +2.160112000E3,5.807023999E1 +2.160354000E3,5.639240346E1 +2.160608000E3,5.917728814E1 +2.160855000E3,5.429000157E1 +2.161130000E3,5.397827395E1 +2.161395000E3,5.647751800E1 +2.161656000E3,5.342605760E1 +2.162007000E3,5.324373839E1 +2.162263000E3,5.439383591E1 +2.162517000E3,5.727066505E1 +2.162888000E3,5.995593964E1 +2.163140000E3,6.130649482E1 +2.163392000E3,6.228130821E1 +2.163644000E3,6.279179388E1 +2.163938000E3,5.559527300E1 +2.164178000E3,5.200550071E1 +2.164481000E3,5.797363767E1 +2.164757000E3,5.902554678E1 +2.165040000E3,5.834647622E1 +2.165303000E3,5.713285380E1 +2.165575000E3,6.343633700E1 +2.165850000E3,5.896208706E1 +2.166219000E3,5.624501583E1 +2.166483000E3,5.696603075E1 +2.166769000E3,5.736978604E1 +2.167027000E3,5.837475894E1 +2.167278000E3,5.768129207E1 +2.167593000E3,5.660761865E1 +2.167856000E3,5.680076310E1 +2.168110000E3,5.883044450E1 +2.168385000E3,5.772028600E1 +2.168649000E3,5.342008664E1 +2.168914000E3,5.359113324E1 +2.169168000E3,5.849769703E1 +2.169536000E3,6.267181821E1 +2.169793000E3,5.719603223E1 +2.170040000E3,5.397233107E1 +2.170287000E3,4.861027503E1 +2.170579000E3,5.741564583E1 +2.170822000E3,6.207812430E1 +2.171115000E3,5.827753689E1 +2.171365000E3,6.042202215E1 +2.171629000E3,5.516417228E1 +2.171895000E3,4.912315476E1 +2.172163000E3,4.718316305E1 +2.172446000E3,5.363129541E1 +2.172813000E3,5.322378335E1 +2.173087000E3,5.228499961E1 +2.173349000E3,5.364722432E1 +2.173618000E3,5.964999675E1 +2.173917000E3,6.116591719E1 +2.174174000E3,5.668310324E1 +2.174436000E3,5.538937699E1 +2.174688000E3,5.539330891E1 +2.174944000E3,5.678019084E1 +2.175197000E3,5.655985061E1 +2.175490000E3,6.211643319E1 +2.175751000E3,5.899842059E1 +2.176153000E3,6.042080027E1 +2.176454000E3,5.956376587E1 +2.176730000E3,5.896716838E1 +2.177048000E3,5.729778676E1 +2.177305000E3,5.512323216E1 +2.177616000E3,5.573124529E1 +2.177883000E3,5.390669828E1 +2.178139000E3,5.435017850E1 +2.178403000E3,5.275779180E1 +2.178672000E3,5.469054235E1 +2.178938000E3,5.701832565E1 +2.179201000E3,6.063134316E1 +2.179540000E3,6.461030243E1 +2.179799000E3,6.345934666E1 +2.180043000E3,6.255021373E1 +2.180348000E3,6.265836689E1 +2.180640000E3,6.125083403E1 +2.180878000E3,5.721943432E1 +2.181125000E3,5.584429631E1 +2.181407000E3,5.679219567E1 +2.181647000E3,5.506189996E1 +2.181962000E3,5.950753578E1 +2.182227000E3,5.684863204E1 +2.182499000E3,5.318048388E1 +2.182825000E3,5.856807028E1 +2.183124000E3,6.201159961E1 +2.183360000E3,5.994279105E1 +2.183661000E3,6.155626338E1 +2.183904000E3,5.760612799E1 +2.184197000E3,5.557219911E1 +2.184436000E3,5.720299401E1 +2.184730000E3,5.496492062E1 +2.184965000E3,5.287669523E1 +2.185272000E3,5.534018340E1 +2.185572000E3,5.047897567E1 +2.185897000E3,5.289532450E1 +2.186149000E3,5.169587435E1 +2.186428000E3,5.811856565E1 +2.186722000E3,5.829930976E1 +2.187016000E3,5.767171180E1 +2.187297000E3,5.167293983E1 +2.187542000E3,5.634712904E1 +2.187793000E3,5.452173951E1 +2.188038000E3,5.242356157E1 +2.188332000E3,5.476946331E1 +2.188570000E3,5.506415879E1 +2.188807000E3,5.842757277E1 +2.189123000E3,5.579731569E1 +2.189400000E3,5.735467547E1 +2.189707000E3,5.510643622E1 +2.189947000E3,5.399605596E1 +2.190247000E3,5.231812124E1 +2.190482000E3,5.397423501E1 +2.190722000E3,5.467291530E1 +2.190972000E3,5.750340972E1 +2.191219000E3,5.451621797E1 +2.191527000E3,5.544744059E1 +2.191775000E3,5.570906247E1 +2.192040000E3,5.570238792E1 +2.192395000E3,5.704729905E1 +2.192674000E3,5.662202644E1 +2.192969000E3,6.130245708E1 +2.193206000E3,5.842239411E1 +2.193505000E3,5.813812757E1 +2.193745000E3,5.643123308E1 +2.194038000E3,5.810403241E1 +2.194275000E3,5.863690353E1 +2.194574000E3,5.519980518E1 +2.194810000E3,5.381530940E1 +2.195092000E3,5.781601666E1 +2.195335000E3,5.699265058E1 +2.195608000E3,5.477338243E1 +2.195929000E3,5.695412826E1 +2.196188000E3,5.575935497E1 +2.196439000E3,5.738570553E1 +2.196686000E3,6.194168224E1 +2.196969000E3,5.888525061E1 +2.197270000E3,5.830791470E1 +2.197516000E3,5.904778886E1 +2.197822000E3,5.987539712E1 +2.198117000E3,5.910637217E1 +2.198355000E3,5.676446576E1 +2.198673000E3,5.632729175E1 +2.198920000E3,5.826507178E1 +2.199227000E3,6.221847088E1 +2.199493000E3,6.023584539E1 +2.199739000E3,6.378124478E1 +2.199975000E3,6.457706819E1 +2.200218000E3,5.781084826E1 +2.200471000E3,5.833307765E1 +2.200715000E3,5.849295856E1 +2.200984000E3,5.695016071E1 +2.201255000E3,5.945608920E1 +2.201511000E3,5.923858391E1 +2.201821000E3,5.975381188E1 +2.202050000E3,5.657071344E1 +2.202297000E3,5.582353283E1 +2.202552000E3,5.634201272E1 +2.202803000E3,5.842061156E1 +2.203080000E3,5.511323996E1 +2.203339000E3,5.333816234E1 +2.203589000E3,5.586132206E1 +2.203867000E3,5.612282959E1 +2.204151000E3,5.390907932E1 +2.204405000E3,5.581501331E1 +2.204648000E3,5.691201261E1 +2.204938000E3,5.605209961E1 +2.205271000E3,5.337227455E1 +2.205520000E3,5.726868677E1 +2.205824000E3,5.678400386E1 +2.206068000E3,5.598615724E1 +2.206327000E3,6.245548090E1 +2.206634000E3,5.788335624E1 +2.206927000E3,5.672312442E1 +2.207166000E3,5.700846075E1 +2.207464000E3,5.693157148E1 +2.207703000E3,5.667671942E1 +2.207995000E3,5.655907845E1 +2.208344000E3,5.694003799E1 +2.208592000E3,5.812693102E1 +2.208844000E3,5.305590014E1 +2.209133000E3,5.963333488E1 +2.209376000E3,6.125764761E1 +2.209621000E3,5.708540532E1 +2.209865000E3,5.539532482E1 +2.210177000E3,6.086117928E1 +2.210432000E3,5.871599576E1 +2.210705000E3,5.720891289E1 +2.210929000E3,5.859137268E1 +2.211185000E3,5.492761595E1 +2.211566000E3,5.458369125E1 +2.211811000E3,5.704243717E1 +2.212094000E3,5.948204172E1 +2.212325000E3,5.442994388E1 +2.212570000E3,5.607391365E1 +2.212815000E3,5.349643391E1 +2.213089000E3,5.518134225E1 +2.213397000E3,5.879499176E1 +2.213659000E3,5.918920409E1 +2.213917000E3,6.317166487E1 +2.214205000E3,5.773325998E1 +2.214505000E3,6.021667659E1 +2.214834000E3,5.707564648E1 +2.215074000E3,5.411436798E1 +2.215412000E3,5.705541238E1 +2.215699000E3,6.721672427E1 +2.215946000E3,6.130402498E1 +2.216241000E3,5.914242022E1 +2.216493000E3,5.881747375E1 +2.216786000E3,5.920115687E1 +2.217030000E3,5.981753209E1 +2.217325000E3,5.379848698E1 +2.217566000E3,5.498057230E1 +2.217931000E3,5.647867672E1 +2.218210000E3,5.460935805E1 +2.218440000E3,5.579228446E1 +2.218740000E3,5.598523495E1 +2.218992000E3,5.501198671E1 +2.219248000E3,5.270876730E1 +2.219495000E3,5.711255338E1 +2.219767000E3,5.276578476E1 +2.220009000E3,6.171644376E1 +2.220307000E3,5.760035427E1 +2.220557000E3,6.039071701E1 +2.220820000E3,5.947563028E1 +2.221166000E3,5.781157464E1 +2.221459000E3,5.689764898E1 +2.221740000E3,5.361204154E1 +2.221998000E3,5.565584232E1 +2.222252000E3,6.236264054E1 +2.222508000E3,5.583706888E1 +2.222794000E3,5.998886151E1 +2.223038000E3,6.067027795E1 +2.223281000E3,5.953550256E1 +2.223512000E3,6.087865846E1 +2.223764000E3,5.880177247E1 +2.224056000E3,5.532032645E1 +2.224389000E3,5.110554887E1 +2.224697000E3,6.082114583E1 +2.224957000E3,6.332269799E1 +2.225225000E3,5.859152014E1 +2.225521000E3,6.312344162E1 +2.225760000E3,6.208500503E1 +2.226003000E3,6.030377984E1 +2.226280000E3,5.890306026E1 +2.226553000E3,6.412257006E1 +2.226813000E3,5.959239884E1 +2.227137000E3,5.603893495E1 +2.227460000E3,5.807576772E1 +2.227717000E3,6.034272760E1 +2.227950000E3,5.678924442E1 +2.228211000E3,5.767938832E1 +2.228489000E3,4.973605337E1 +2.228742000E3,5.227056153E1 +2.229007000E3,4.524576382E1 +2.229320000E3,5.163901012E1 +2.229633000E3,5.791269320E1 +2.229909000E3,5.832692980E1 +2.230223000E3,5.512940778E1 +2.230487000E3,5.639998631E1 +2.230845000E3,6.012111222E1 +2.231113000E3,6.632176219E1 +2.231407000E3,6.692769565E1 +2.231662000E3,6.409372191E1 +2.231945000E3,6.268702605E1 +2.232208000E3,6.192012265E1 +2.232460000E3,5.923306273E1 +2.232717000E3,5.726340446E1 +2.233005000E3,5.708270925E1 +2.233256000E3,6.172203942E1 +2.233510000E3,6.197059155E1 +2.233807000E3,6.691458644E1 +2.234160000E3,6.165007134E1 +2.234422000E3,6.172053486E1 +2.234714000E3,6.148833899E1 +2.234974000E3,6.190331921E1 +2.235253000E3,5.938090919E1 +2.235479000E3,6.223060920E1 +2.235722000E3,6.133640397E1 +2.236028000E3,6.400294095E1 +2.236269000E3,6.581462957E1 +2.236516000E3,6.094953675E1 +2.236828000E3,5.792232456E1 +2.237124000E3,5.750665846E1 +2.237367000E3,5.360734442E1 +2.237668000E3,5.239836763E1 +2.237914000E3,5.189659577E1 +2.238168000E3,5.779541581E1 +2.238431000E3,5.409030702E1 +2.238689000E3,5.064192938E1 +2.238941000E3,4.890244292E1 +2.239235000E3,4.958738332E1 +2.239486000E3,5.093509792E1 +2.239725000E3,5.421091975E1 +2.239970000E3,6.074883769E1 +2.240298000E3,5.611992467E1 +2.240604000E3,4.988071111E1 +2.240900000E3,4.952063126E1 +2.241187000E3,5.282005772E1 +2.241428000E3,5.672648648E1 +2.241685000E3,5.807464117E1 +2.241973000E3,5.565097745E1 +2.242224000E3,5.410363002E1 +2.242475000E3,5.548804216E1 +2.242720000E3,5.862108370E1 +2.242959000E3,5.101243713E1 +2.243259000E3,5.340920814E1 +2.243564000E3,5.471013043E1 +2.243801000E3,5.474536753E1 +2.244062000E3,5.454012147E1 +2.244333000E3,5.594751460E1 +2.244637000E3,5.486159050E1 +2.244913000E3,5.317501502E1 +2.245138000E3,5.100209753E1 +2.245397000E3,5.436827206E1 +2.245643000E3,5.483479867E1 +2.245916000E3,5.150486026E1 +2.246182000E3,5.049924887E1 +2.246449000E3,5.226067252E1 +2.246744000E3,5.389432372E1 +2.247057000E3,6.032791953E1 +2.247330000E3,5.966662928E1 +2.247666000E3,5.824962285E1 +2.247962000E3,5.700720490E1 +2.248202000E3,6.373200887E1 +2.248495000E3,6.648419927E1 +2.248743000E3,5.542652488E1 +2.249036000E3,5.256926371E1 +2.249272000E3,6.053195001E1 +2.249564000E3,4.959074314E1 +2.249800000E3,5.054384460E1 +2.250136000E3,5.008489809E1 +2.250431000E3,5.752384263E1 +2.250666000E3,5.367007636E1 +2.250931000E3,4.851936559E1 +2.251210000E3,4.965482987E1 +2.251497000E3,5.733244198E1 +2.251772000E3,5.370188093E1 +2.251997000E3,5.388650114E1 +2.252246000E3,5.331606518E1 +2.252516000E3,5.534782747E1 +2.252818000E3,5.271944154E1 +2.253047000E3,5.188974945E1 +2.253402000E3,5.040855384E1 +2.253689000E3,5.348452962E1 +2.253965000E3,5.685197701E1 +2.254240000E3,5.699151925E1 +2.254539000E3,5.217481719E1 +2.254794000E3,5.255063115E1 +2.255035000E3,5.258436032E1 +2.255283000E3,5.228429265E1 +2.255592000E3,5.187189315E1 +2.255851000E3,5.089851896E1 +2.256105000E3,5.323192817E1 +2.256387000E3,5.259240607E1 +2.256752000E3,5.489099725E1 +2.257016000E3,5.140699592E1 +2.257276000E3,5.478139635E1 +2.257600000E3,5.508183343E1 +2.257864000E3,5.539199709E1 +2.258160000E3,5.879728075E1 +2.258399000E3,6.145510373E1 +2.258645000E3,6.018082278E1 +2.258890000E3,6.203490998E1 +2.259131000E3,6.051201097E1 +2.259385000E3,5.741582229E1 +2.259629000E3,5.742200481E1 +2.259994000E3,5.205318956E1 +2.260295000E3,5.807019657E1 +2.260539000E3,5.843419178E1 +2.260841000E3,5.543595349E1 +2.261104000E3,5.208978608E1 +2.261348000E3,5.288295424E1 +2.261601000E3,5.593156434E1 +2.261856000E3,5.600009221E1 +2.262108000E3,5.581775464E1 +2.262358000E3,5.037081152E1 +2.262613000E3,5.059162693E1 +2.262916000E3,5.459372597E1 +2.263271000E3,5.581642194E1 +2.263548000E3,5.702582989E1 +2.263802000E3,5.531282217E1 +2.264049000E3,5.356460573E1 +2.264318000E3,5.682743962E1 +2.264564000E3,5.353127135E1 +2.264854000E3,5.962134934E1 +2.265080000E3,5.858968032E1 +2.265326000E3,5.681259568E1 +2.265625000E3,5.635120121E1 +2.265871000E3,5.433379551E1 +2.266211000E3,4.913835205E1 +2.266510000E3,5.243179137E1 +2.266783000E3,4.886918417E1 +2.267043000E3,4.774131335E1 +2.267292000E3,4.892025491E1 +2.267553000E3,4.710213612E1 +2.267796000E3,4.847827931E1 +2.268042000E3,5.624471818E1 +2.268281000E3,5.286977188E1 +2.268548000E3,5.683989489E1 +2.268800000E3,5.459251055E1 +2.269086000E3,5.272841607E1 +2.269389000E3,5.585343514E1 +2.269616000E3,5.452972356E1 +2.269865000E3,5.183250423E1 +2.270167000E3,4.733442261E1 +2.270442000E3,4.736450762E1 +2.270667000E3,4.430645798E1 +2.270915000E3,4.635257501E1 +2.271160000E3,4.914582650E1 +2.271407000E3,4.938157659E1 +2.271656000E3,4.788630853E1 +2.271896000E3,4.778446083E1 +2.272198000E3,5.081637081E1 +2.272482000E3,4.630509256E1 +2.272722000E3,4.551027932E1 +2.273048000E3,5.074623045E1 +2.273321000E3,4.689236254E1 +2.273562000E3,4.960242652E1 +2.273859000E3,5.310274016E1 +2.274104000E3,5.391997859E1 +2.274392000E3,4.854992165E1 +2.274648000E3,4.610161890E1 +2.274915000E3,5.325141064E1 +2.275196000E3,4.823989698E1 +2.275460000E3,5.167706762E1 +2.275772000E3,4.424461998E1 +2.276008000E3,4.957193490E1 +2.276258000E3,4.220429916E1 +2.276545000E3,4.614900045E1 +2.276809000E3,4.247109284E1 +2.277119000E3,5.104311310E1 +2.277385000E3,4.898949856E1 +2.277651000E3,5.033981280E1 +2.277920000E3,4.504255509E1 +2.278210000E3,4.851295637E1 +2.278452000E3,4.975001222E1 +2.278771000E3,5.198599663E1 +2.279101000E3,5.078534391E1 +2.279348000E3,5.056977572E1 +2.279614000E3,4.645427419E1 +2.279894000E3,4.837428182E1 +2.280121000E3,4.672417188E1 +2.280416000E3,4.338010131E1 +2.280671000E3,4.552410696E1 +2.280941000E3,4.107346609E1 +2.281195000E3,4.850760260E1 +2.281477000E3,4.449785068E1 +2.281730000E3,3.834743898E1 +2.282028000E3,3.160451104E1 +2.282275000E3,2.921367430E1 +2.282509000E3,3.929432216E1 +2.282771000E3,3.560833020E1 +2.283021000E3,4.204425230E1 +2.283277000E3,4.897505461E1 +2.283570000E3,4.492050546E1 +2.283802000E3,4.549624302E1 +2.284053000E3,4.703134831E1 +2.284302000E3,4.492779574E1 +2.284580000E3,5.573526523E1 +2.284888000E3,4.583204799E1 +2.285186000E3,3.987632497E1 +2.285426000E3,4.276483306E1 +2.285670000E3,4.196646636E1 +2.285974000E3,4.127295807E1 +2.286241000E3,3.392540836E1 +2.286513000E3,3.045281657E1 +2.286755000E3,3.056149566E1 +2.287058000E3,4.234115907E1 +2.287358000E3,4.148011807E1 +2.287615000E3,4.752316696E1 +2.287890000E3,4.261643768E1 +2.288186000E3,3.531031146E1 +2.288451000E3,3.336926272E1 +2.288830000E3,3.217663691E1 +2.289083000E3,3.280943829E1 +2.289350000E3,4.037024361E1 +2.289606000E3,4.463743016E1 +2.289870000E3,3.926930450E1 +2.290142000E3,3.549021170E1 +2.290376000E3,3.657210104E1 +2.290669000E3,3.609483404E1 +2.290917000E3,3.935001060E1 +2.291190000E3,3.968762383E1 +2.291417000E3,3.622062011E1 +2.291698000E3,5.052972627E1 +2.292019000E3,4.472329620E1 +2.292314000E3,3.528869928E1 +2.292580000E3,3.171318762E1 +2.292867000E3,3.293682859E1 +2.293112000E3,2.980662334E1 +2.293408000E3,3.108877030E1 +2.293645000E3,3.411108767E1 +2.293948000E3,2.929195023E1 +2.294231000E3,2.830259325E1 +2.294484000E3,2.905088910E1 +2.294732000E3,3.046102835E1 +2.295049000E3,2.679058069E1 +2.295347000E3,2.620731663E1 +2.295594000E3,3.509528145E1 +2.295836000E3,2.657946529E1 +2.296130000E3,2.511368258E1 +2.296378000E3,2.555955915E1 +2.296634000E3,2.785949260E1 +2.296875000E3,2.654407944E1 +2.297117000E3,3.658368449E1 +2.297412000E3,3.412054652E1 +2.297648000E3,3.448252102E1 +2.297956000E3,3.528486686E1 +2.298205000E3,3.265291425E1 +2.298494000E3,2.963788314E1 +2.298798000E3,3.350933300E1 +2.299085000E3,3.038301619E1 +2.299338000E3,3.357142506E1 +2.299610000E3,4.744800671E1 +2.299868000E3,3.435626076E1 +2.300142000E3,3.368274389E1 +2.300402000E3,2.881246111E1 +2.300655000E3,3.097762310E1 +2.300898000E3,2.947567056E1 +2.301182000E3,3.214187359E1 +2.301423000E3,3.421070745E1 +2.301786000E3,5.117970534E1 +2.302087000E3,5.037784077E1 +2.302335000E3,5.283937176E1 +2.302644000E3,5.164119106E1 +2.302941000E3,5.300709748E1 +2.303240000E3,4.713488810E1 +2.303488000E3,4.524114677E1 +2.303739000E3,3.080285972E1 +2.304022000E3,2.293405577E1 +2.304254000E3,2.235464386E1 +2.304552000E3,2.949911358E1 +2.304876000E3,4.141349798E1 +2.305182000E3,4.156611078E1 +2.305491000E3,4.347125429E1 +2.305797000E3,4.579894404E1 +2.306107000E3,4.646123013E1 +2.306358000E3,4.517240887E1 +2.306604000E3,5.308475174E1 +2.306870000E3,4.681256924E1 +2.307168000E3,2.942058533E1 +2.307450000E3,2.986114457E1 +2.307717000E3,3.195150356E1 +2.308031000E3,3.775567348E1 +2.308265000E3,3.823556499E1 +2.308570000E3,2.909536341E1 +2.308842000E3,3.096070220E1 +2.309098000E3,4.060687649E1 +2.309391000E3,4.820113946E1 +2.309687000E3,4.619079404E1 +2.309928000E3,4.304793785E1 +2.310216000E3,4.976144450E1 +2.310446000E3,4.779148829E1 +2.310686000E3,5.167703897E1 +2.310979000E3,3.773719280E1 +2.311248000E3,2.923821784E1 +2.311466000E3,2.654081756E1 +2.311763000E3,2.616593312E1 +2.312001000E3,2.460963519E1 +2.312285000E3,2.554564289E1 +2.312588000E3,3.572755404E1 +2.312856000E3,4.274835909E1 +2.313074000E3,4.355953935E1 +2.313375000E3,5.377727845E1 +2.313611000E3,5.435235813E1 +2.313893000E3,5.477010993E1 +2.314137000E3,5.142421895E1 +2.314483000E3,4.794670725E1 +2.314780000E3,5.149445419E1 +2.315019000E3,5.127618051E1 +2.315306000E3,4.939341348E1 +2.315533000E3,4.928824788E1 +2.315832000E3,4.617335031E1 +2.316069000E3,3.696469062E1 +2.316377000E3,4.552948924E1 +2.316627000E3,4.672923062E1 +2.316913000E3,4.504192742E1 +2.317215000E3,4.364234368E1 +2.317558000E3,4.231291453E1 +2.317853000E3,4.886663905E1 +2.318118000E3,4.492895691E1 +2.318412000E3,4.464681620E1 +2.318711000E3,4.698360224E1 +2.318950000E3,4.454369095E1 +2.319250000E3,4.409609939E1 +2.319494000E3,4.283121809E1 +2.319793000E3,4.398770219E1 +2.320040000E3,4.728522548E1 +2.320336000E3,4.533798443E1 +2.320660000E3,4.548359371E1 +2.320908000E3,4.366718291E1 +2.321152000E3,5.139935964E1 +2.321408000E3,4.747980864E1 +2.321709000E3,3.867643032E1 +2.321952000E3,4.294445900E1 +2.322196000E3,4.336333736E1 +2.322445000E3,3.890531131E1 +2.322682000E3,4.087281677E1 +2.322980000E3,3.979668464E1 +2.323225000E3,4.157042707E1 +2.323553000E3,4.515881082E1 +2.323886000E3,3.868360739E1 +2.324184000E3,4.839319184E1 +2.324428000E3,4.298284223E1 +2.324669000E3,4.433761346E1 +2.324987000E3,4.011512195E1 +2.325233000E3,3.478551365E1 +2.325486000E3,4.180203002E1 +2.325789000E3,4.323726184E1 +2.326086000E3,3.985791110E1 +2.326333000E3,3.946244529E1 +2.326667000E3,4.066537977E1 +2.326925000E3,3.986903649E1 +2.327223000E3,4.142461274E1 +2.327521000E3,3.461788217E1 +2.327778000E3,3.326602717E1 +2.328102000E3,4.357074645E1 +2.328367000E3,5.496493564E1 +2.328618000E3,4.413482695E1 +2.328920000E3,4.170999616E1 +2.329183000E3,4.107694173E1 +2.329486000E3,5.342371220E1 +2.329729000E3,5.103134188E1 +2.330028000E3,4.716459977E1 +2.330382000E3,4.916498276E1 +2.330642000E3,4.801561309E1 +2.330930000E3,4.860033329E1 +2.331211000E3,5.037441690E1 +2.331463000E3,5.227972551E1 +2.331719000E3,4.516533742E1 +2.331971000E3,4.623606604E1 +2.332268000E3,3.207985320E1 +2.332513000E3,3.485208029E1 +2.332801000E3,4.367306984E1 +2.333109000E3,4.764897626E1 +2.333397000E3,4.844411921E1 +2.333779000E3,4.624834459E1 +2.334088000E3,4.492130047E1 +2.334331000E3,4.172849812E1 +2.334618000E3,4.243441154E1 +2.334859000E3,4.155300890E1 +2.335165000E3,3.508017133E1 +2.335414000E3,3.102497597E1 +2.335689000E3,3.346102792E1 +2.335938000E3,2.980210924E1 +2.336237000E3,2.815695425E1 +2.336480000E3,4.530841757E1 +2.336824000E3,4.476742737E1 +2.337075000E3,4.460293889E1 +2.337332000E3,5.054872999E1 +2.337583000E3,4.962100100E1 +2.337845000E3,5.224787063E1 +2.338132000E3,4.845338775E1 +2.338374000E3,4.675501048E1 +2.338651000E3,4.806540095E1 +2.338903000E3,4.707869991E1 +2.339145000E3,4.747595477E1 +2.339395000E3,3.449909829E1 +2.339700000E3,4.619360178E1 +2.340033000E3,4.785644508E1 +2.340329000E3,4.721347586E1 +2.340579000E3,4.302992844E1 +2.340828000E3,4.629706327E1 +2.341122000E3,4.550319757E1 +2.341368000E3,4.510038554E1 +2.341611000E3,4.752886315E1 +2.341876000E3,4.524122211E1 +2.342135000E3,2.990386366E1 +2.342396000E3,3.647672774E1 +2.342679000E3,2.854891758E1 +2.342936000E3,3.995722191E1 +2.343310000E3,4.501906630E1 +2.343555000E3,4.872212276E1 +2.343839000E3,4.566863325E1 +2.344134000E3,3.946814595E1 +2.344384000E3,4.796193013E1 +2.344656000E3,4.858552009E1 +2.344961000E3,4.902627763E1 +2.345257000E3,4.467711671E1 +2.345498000E3,3.756709071E1 +2.345764000E3,2.964206509E1 +2.346064000E3,4.283044167E1 +2.346415000E3,4.191014925E1 +2.346743000E3,4.910031818E1 +2.347021000E3,5.022624274E1 +2.347337000E3,5.257970130E1 +2.347586000E3,4.764257555E1 +2.347831000E3,4.353349182E1 +2.348126000E3,4.318604201E1 +2.348436000E3,4.825752031E1 +2.348710000E3,4.464987037E1 +2.348968000E3,4.690302679E1 +2.349225000E3,4.464063657E1 +2.349495000E3,5.114524492E1 +2.349740000E3,4.345049547E1 +2.350133000E3,4.655800825E1 +2.350382000E3,4.419356370E1 +2.350688000E3,4.308388818E1 +2.350960000E3,4.964188075E1 +2.351269000E3,5.137042419E1 +2.351542000E3,4.751708919E1 +2.351836000E3,3.239228651E1 +2.352067000E3,3.331178705E1 +2.352357000E3,4.628654550E1 +2.352625000E3,4.653844798E1 +2.352938000E3,4.419734850E1 +2.353231000E3,3.771763539E1 +2.353458000E3,3.489550836E1 +2.353713000E3,2.965581776E1 +2.353962000E3,3.457100474E1 +2.354201000E3,3.291595658E1 +2.354446000E3,2.791603976E1 +2.354711000E3,3.307930362E1 +2.355027000E3,5.311162000E1 +2.355290000E3,4.688373373E1 +2.355581000E3,3.663543876E1 +2.355868000E3,2.834403560E1 +2.356176000E3,5.001680718E1 +2.356518000E3,5.349221251E1 +2.356780000E3,5.234097025E1 +2.357043000E3,4.476475434E1 +2.357349000E3,5.160193390E1 +2.357584000E3,4.375385010E1 +2.357840000E3,3.709166207E1 +2.358125000E3,2.927191182E1 +2.358378000E3,4.114289062E1 +2.358676000E3,4.266518399E1 +2.358921000E3,4.641380631E1 +2.359210000E3,4.551221179E1 +2.359545000E3,4.099683883E1 +2.359801000E3,5.202602500E1 +2.360072000E3,5.207875379E1 +2.360343000E3,4.670310433E1 +2.360619000E3,4.619168123E1 +2.360865000E3,4.348453495E1 +2.361113000E3,4.603882932E1 +2.361353000E3,4.061885274E1 +2.361649000E3,4.873355826E1 +2.361884000E3,4.796347566E1 +2.362174000E3,4.419543811E1 +2.362420000E3,4.412529768E1 +2.362674000E3,4.315515456E1 +2.363006000E3,3.718353950E1 +2.363303000E3,4.131746877E1 +2.363556000E3,3.462830696E1 +2.363825000E3,3.224809166E1 +2.364105000E3,2.946532539E1 +2.364420000E3,4.082560353E1 +2.364671000E3,4.169760242E1 +2.364916000E3,4.728483165E1 +2.365158000E3,4.384961396E1 +2.365493000E3,3.327447630E1 +2.365797000E3,2.406470586E1 +2.366141000E3,2.410271882E1 +2.366422000E3,4.124818432E1 +2.366699000E3,4.300386829E1 +2.366994000E3,4.592409288E1 +2.367239000E3,4.402074721E1 +2.367492000E3,4.331525310E1 +2.367744000E3,4.351543939E1 +2.368045000E3,4.861325913E1 +2.368277000E3,4.345520025E1 +2.368543000E3,5.037549285E1 +2.368790000E3,3.455268589E1 +2.369034000E3,3.454484220E1 +2.369300000E3,3.436570372E1 +2.369544000E3,3.180799867E1 +2.369820000E3,4.460893996E1 +2.370091000E3,5.635981603E1 +2.370383000E3,4.932803438E1 +2.370635000E3,5.123791361E1 +2.370939000E3,4.749913119E1 +2.371193000E3,4.606624254E1 +2.371498000E3,4.453668838E1 +2.371779000E3,4.424564317E1 +2.372081000E3,5.022357768E1 +2.372347000E3,4.983363592E1 +2.372720000E3,4.311987242E1 +2.372969000E3,4.071927446E1 +2.373234000E3,3.624584431E1 +2.373535000E3,3.338407859E1 +2.373777000E3,2.744030282E1 +2.374025000E3,4.017686066E1 +2.374281000E3,4.153799732E1 +2.374537000E3,5.163713220E1 +2.374786000E3,4.970373114E1 +2.375033000E3,4.601563593E1 +2.375284000E3,4.943210146E1 +2.375577000E3,5.208741018E1 +2.375935000E3,4.780129348E1 +2.376167000E3,4.632707744E1 +2.376478000E3,5.008962536E1 +2.376734000E3,4.691729314E1 +2.376987000E3,4.593220796E1 +2.377250000E3,4.703621615E1 +2.377550000E3,4.863501898E1 +2.377838000E3,4.747349412E1 +2.378102000E3,4.430216971E1 +2.378373000E3,5.038477253E1 +2.378648000E3,4.679597376E1 +2.378873000E3,3.998762784E1 +2.379232000E3,4.140472709E1 +2.379480000E3,3.803559367E1 +2.379735000E3,4.292956565E1 +2.379993000E3,3.275484639E1 +2.380260000E3,3.159298587E1 +2.380513000E3,3.066195183E1 +2.380756000E3,4.846258942E1 +2.381012000E3,4.617374426E1 +2.381278000E3,4.338282331E1 +2.381580000E3,2.990070560E1 +2.381878000E3,3.384826320E1 +2.382127000E3,4.352773294E1 +2.382476000E3,3.711143795E1 +2.382756000E3,4.818117865E1 +2.383001000E3,4.694356023E1 +2.383312000E3,4.713242320E1 +2.383556000E3,4.945634369E1 +2.383815000E3,3.710449888E1 +2.384109000E3,4.990714727E1 +2.384350000E3,5.101970483E1 +2.384663000E3,4.290224010E1 +2.384917000E3,3.958873166E1 +2.385203000E3,4.207919898E1 +2.385583000E3,3.937588823E1 +2.385864000E3,3.927490117E1 +2.386122000E3,3.708577985E1 +2.386378000E3,3.104425869E1 +2.386630000E3,2.579918418E1 +2.386935000E3,4.201717352E1 +2.387186000E3,4.469788103E1 +2.387445000E3,3.928301867E1 +2.387699000E3,4.425054811E1 +2.387999000E3,2.901032620E1 +2.388242000E3,2.431535493E1 +2.388542000E3,4.330806788E1 +2.388866000E3,4.587852948E1 +2.389138000E3,5.068663336E1 +2.389420000E3,5.151872270E1 +2.389764000E3,4.501157372E1 +2.390012000E3,4.508008781E1 +2.390288000E3,4.471818734E1 +2.390546000E3,4.453717168E1 +2.390828000E3,3.435610332E1 +2.391113000E3,3.644941891E1 +2.391398000E3,3.741409627E1 +2.391658000E3,4.311052254E1 +2.391963000E3,3.924877335E1 +2.392296000E3,3.956869731E1 +2.392537000E3,3.230149795E1 +2.392786000E3,2.941450360E1 +2.393103000E3,3.366208400E1 +2.393349000E3,2.633153711E1 +2.393653000E3,2.492589605E1 +2.393892000E3,3.518582310E1 +2.394201000E3,3.668564238E1 +2.394454000E3,3.528359554E1 +2.394744000E3,3.673717548E1 +2.395034000E3,2.851979476E1 +2.395378000E3,2.558396774E1 +2.395660000E3,3.919896752E1 +2.395930000E3,3.339597104E1 +2.396187000E3,3.351358057E1 +2.396431000E3,3.743420456E1 +2.396691000E3,4.220523227E1 +2.396991000E3,3.500233403E1 +2.397251000E3,3.475187142E1 +2.397513000E3,3.604068947E1 +2.397821000E3,4.628512725E1 +2.398126000E3,4.463943287E1 +2.398428000E3,4.311458163E1 +2.398781000E3,4.375329409E1 +2.399076000E3,3.749705009E1 +2.399316000E3,4.116349149E1 +2.399615000E3,4.694603167E1 +2.399852000E3,5.327851923E1 +2.400143000E3,5.028800274E1 +2.400380000E3,5.055607260E1 +2.400618000E3,4.184216649E1 +2.400901000E3,4.280576865E1 +2.401144000E3,4.285187037E1 +2.401437000E3,5.414729311E1 +2.401684000E3,5.760726428E1 +2.402102000E3,5.135939721E1 +2.402349000E3,5.519633184E1 +2.402608000E3,5.937895156E1 +2.402853000E3,5.722678447E1 +2.403146000E3,5.316891996E1 +2.403388000E3,5.231876976E1 +2.403684000E3,4.275047946E1 +2.403921000E3,4.497010821E1 +2.404216000E3,5.935375427E1 +2.404454000E3,5.736369919E1 +2.404707000E3,5.877823139E1 +2.404971000E3,6.138635894E1 +2.405219000E3,5.726046839E1 +2.405473000E3,5.213953550E1 +2.405771000E3,4.831408459E1 +2.406024000E3,5.195614478E1 +2.406276000E3,4.885485021E1 +2.406567000E3,4.806131720E1 +2.406866000E3,3.817379603E1 +2.407129000E3,3.496803230E1 +2.407401000E3,4.679161915E1 +2.407625000E3,4.456362030E1 +2.407878000E3,4.499112684E1 +2.408171000E3,4.695848411E1 +2.408491000E3,4.136053284E1 +2.408771000E3,3.435960184E1 +2.409033000E3,2.907775515E1 +2.409287000E3,3.179102298E1 +2.409536000E3,2.535492331E1 +2.409797000E3,2.893863695E1 +2.410015000E3,3.195695462E1 +2.410232000E3,2.883661354E1 +2.410481000E3,4.380812340E1 +2.410735000E3,5.435187737E1 +2.411017000E3,4.390478627E1 +2.411330000E3,4.136550501E1 +2.411572000E3,6.231552653E1 +2.411823000E3,4.988484474E1 +2.412072000E3,4.569499772E1 +2.412339000E3,5.207639469E1 +2.412605000E3,5.314724412E1 +2.412842000E3,5.014855129E1 +2.413111000E3,4.925815950E1 +2.413332000E3,5.545199009E1 +2.413608000E3,4.910878211E1 +2.413873000E3,5.481296501E1 +2.414229000E3,4.620355557E1 +2.414532000E3,4.757632406E1 +2.414792000E3,4.414835702E1 +2.415033000E3,4.178334533E1 +2.415296000E3,3.571558610E1 +2.415577000E3,3.622280285E1 +2.415839000E3,4.187963398E1 +2.416103000E3,4.120303067E1 +2.416426000E3,5.043875316E1 +2.416696000E3,4.738536839E1 +2.417006000E3,4.790698669E1 +2.417250000E3,4.717323409E1 +2.417613000E3,4.889624394E1 +2.417923000E3,4.615999302E1 +2.418209000E3,4.554232436E1 +2.418487000E3,4.963147342E1 +2.418748000E3,4.540077281E1 +2.419058000E3,4.402622058E1 +2.419355000E3,3.991430025E1 +2.419631000E3,5.699106589E1 +2.419880000E3,4.542610605E1 +2.420140000E3,5.871400849E1 +2.420387000E3,5.593691155E1 +2.420634000E3,5.642590944E1 +2.420987000E3,4.942882304E1 +2.421235000E3,5.122637091E1 +2.421504000E3,5.506353313E1 +2.421808000E3,4.974630362E1 +2.422098000E3,4.922446567E1 +2.422401000E3,4.711891494E1 +2.422653000E3,4.935851062E1 +2.422946000E3,5.223840607E1 +2.423180000E3,5.181747333E1 +2.423433000E3,5.106095739E1 +2.423699000E3,4.283067128E1 +2.424023000E3,4.620110870E1 +2.424283000E3,4.813646184E1 +2.424556000E3,4.673905704E1 +2.424833000E3,5.139038068E1 +2.425085000E3,4.187355918E1 +2.425330000E3,4.200690239E1 +2.425641000E3,4.094986905E1 +2.425891000E3,3.869951887E1 +2.426156000E3,4.295178440E1 +2.426411000E3,4.445235603E1 +2.426673000E3,4.180705342E1 +2.426915000E3,4.159918394E1 +2.427275000E3,5.193727105E1 +2.427528000E3,4.985744468E1 +2.427773000E3,5.143594155E1 +2.428021000E3,5.687627643E1 +2.428258000E3,4.984177159E1 +2.428554000E3,4.104898524E1 +2.428794000E3,3.740238657E1 +2.429102000E3,4.424577609E1 +2.429345000E3,5.022623751E1 +2.429627000E3,5.346928374E1 +2.429864000E3,4.448852620E1 +2.430156000E3,3.611387858E1 +2.430475000E3,3.592739777E1 +2.430726000E3,3.269867125E1 +2.431039000E3,4.089980433E1 +2.431331000E3,3.752068977E1 +2.431567000E3,3.972155082E1 +2.431870000E3,4.098289208E1 +2.432107000E3,4.068605974E1 +2.432406000E3,3.978950334E1 +2.432643000E3,3.435438837E1 +2.432933000E3,3.806187937E1 +2.433169000E3,3.613809925E1 +2.433407000E3,5.573542624E1 +2.433734000E3,4.812688919E1 +2.434035000E3,5.332611421E1 +2.434315000E3,5.453475878E1 +2.434557000E3,5.156731049E1 +2.434849000E3,4.452924889E1 +2.435086000E3,4.091217005E1 +2.435380000E3,3.495963916E1 +2.435633000E3,3.994418328E1 +2.435904000E3,5.345258512E1 +2.436200000E3,4.573029424E1 +2.436434000E3,4.666848361E1 +2.436802000E3,4.148612785E1 +2.437044000E3,3.785277445E1 +2.437301000E3,3.823545546E1 +2.437549000E3,3.883632471E1 +2.437839000E3,4.756553033E1 +2.438077000E3,4.282797221E1 +2.438369000E3,5.291874167E1 +2.438606000E3,5.394671897E1 +2.438862000E3,5.490926284E1 +2.439159000E3,5.465277565E1 +2.439395000E3,5.245345229E1 +2.439637000E3,4.823915254E1 +2.440022000E3,5.658050668E1 +2.440281000E3,5.255468157E1 +2.440546000E3,4.365897331E1 +2.440828000E3,4.187636724E1 +2.441125000E3,4.916172461E1 +2.441365000E3,5.038635874E1 +2.441645000E3,5.238005511E1 +2.441868000E3,4.979548238E1 +2.442114000E3,5.164563876E1 +2.442410000E3,4.795862612E1 +2.442694000E3,4.406311297E1 +2.442980000E3,4.461066687E1 +2.443265000E3,3.990213588E1 +2.443525000E3,4.270339676E1 +2.443815000E3,4.671533321E1 +2.444064000E3,4.922681237E1 +2.444311000E3,5.115751882E1 +2.444605000E3,4.659279655E1 +2.444851000E3,4.805254743E1 +2.445152000E3,4.646584218E1 +2.445447000E3,3.924248597E1 +2.445698000E3,3.657018775E1 +2.445976000E3,3.978585816E1 +2.446317000E3,5.134473527E1 +2.446569000E3,4.872028256E1 +2.446851000E3,4.793203365E1 +2.447088000E3,4.917648823E1 +2.447345000E3,4.514648035E1 +2.447599000E3,4.827609085E1 +2.447864000E3,5.009329877E1 +2.448138000E3,4.858127151E1 +2.448430000E3,4.885678900E1 +2.448726000E3,4.038666943E1 +2.448956000E3,3.788824065E1 +2.449214000E3,4.872306097E1 +2.449516000E3,5.112419798E1 +2.449767000E3,4.394357347E1 +2.450028000E3,5.187358067E1 +2.450298000E3,4.764520743E1 +2.450575000E3,5.323515688E1 +2.450844000E3,4.730661272E1 +2.451150000E3,5.022143967E1 +2.451400000E3,4.244080150E1 +2.451697000E3,4.540622562E1 +2.452002000E3,4.987171470E1 +2.452273000E3,4.928771096E1 +2.452519000E3,4.415614577E1 +2.452847000E3,4.529816891E1 +2.453138000E3,3.130480949E1 +2.453407000E3,3.727195618E1 +2.453707000E3,4.218798188E1 +2.453975000E3,3.196426842E1 +2.454240000E3,2.986758668E1 +2.454534000E3,4.365366219E1 +2.454795000E3,4.363233606E1 +2.455054000E3,4.576258560E1 +2.455297000E3,4.600510844E1 +2.455546000E3,5.143992334E1 +2.455816000E3,4.451792491E1 +2.456172000E3,3.834658463E1 +2.456438000E3,4.961865906E1 +2.456716000E3,4.301133302E1 +2.457025000E3,5.185950840E1 +2.457284000E3,4.578127088E1 +2.457582000E3,4.860789001E1 +2.457857000E3,4.548301241E1 +2.458087000E3,5.726595471E1 +2.458343000E3,4.581143143E1 +2.458590000E3,4.593076535E1 +2.458898000E3,4.646845677E1 +2.459143000E3,4.385664195E1 +2.459499000E3,3.921291428E1 +2.459756000E3,4.336490005E1 +2.460079000E3,5.059416731E1 +2.460323000E3,5.383728406E1 +2.460609000E3,4.336002656E1 +2.460894000E3,3.810358455E1 +2.461148000E3,4.341384577E1 +2.461406000E3,4.240002850E1 +2.461668000E3,4.220171306E1 +2.461957000E3,4.165441002E1 +2.462218000E3,4.110791112E1 +2.462543000E3,3.718059239E1 +2.462873000E3,4.490190793E1 +2.463162000E3,4.449127269E1 +2.463461000E3,5.110192526E1 +2.463709000E3,4.670759724E1 +2.464024000E3,4.554197086E1 +2.464345000E3,4.295638115E1 +2.464598000E3,4.260186095E1 +2.464844000E3,3.838281454E1 +2.465094000E3,4.864552318E1 +2.465348000E3,4.722694913E1 +2.465597000E3,5.723123112E1 +2.465970000E3,5.678247819E1 +2.466226000E3,5.304857482E1 +2.466490000E3,5.799491543E1 +2.466745000E3,5.566332539E1 +2.467000000E3,5.532803606E1 +2.467301000E3,5.480406224E1 +2.467518000E3,5.281426808E1 +2.467773000E3,5.319750336E1 +2.468030000E3,4.504180471E1 +2.468309000E3,4.011552860E1 +2.468536000E3,3.286668959E1 +2.468782000E3,5.187437917E1 +2.469159000E3,5.342027818E1 +2.469405000E3,4.655027014E1 +2.469685000E3,4.875434900E1 +2.469968000E3,4.400777727E1 +2.470228000E3,4.944370484E1 +2.470524000E3,4.819898526E1 +2.470826000E3,4.906267157E1 +2.471101000E3,4.559683511E1 +2.471407000E3,5.066052597E1 +2.471662000E3,5.052511938E1 +2.471933000E3,4.854316053E1 +2.472243000E3,4.720397127E1 +2.472513000E3,4.539713693E1 +2.472765000E3,4.504800702E1 +2.473077000E3,4.756996091E1 +2.473381000E3,4.502772911E1 +2.473668000E3,4.844141365E1 +2.473909000E3,4.718772198E1 +2.474176000E3,5.036014826E1 +2.474415000E3,4.734822430E1 +2.474659000E3,4.506554867E1 +2.474941000E3,4.590585801E1 +2.475227000E3,4.808550728E1 +2.475549000E3,4.744751902E1 +2.475816000E3,5.139502060E1 +2.476110000E3,4.565542501E1 +2.476367000E3,4.502651441E1 +2.476614000E3,4.529198411E1 +2.476876000E3,4.841642572E1 +2.477138000E3,4.904966766E1 +2.477430000E3,5.061185879E1 +2.477703000E3,4.805167318E1 +2.477973000E3,4.840268940E1 +2.478233000E3,4.609690512E1 +2.478491000E3,5.080806253E1 +2.478854000E3,4.929079330E1 +2.479112000E3,4.887431247E1 +2.479382000E3,4.582116343E1 +2.479677000E3,4.614295426E1 +2.479939000E3,5.004731017E1 +2.480247000E3,5.118895049E1 +2.480496000E3,4.750144805E1 +2.480785000E3,4.691637905E1 +2.481084000E3,4.575243018E1 +2.481328000E3,4.498034363E1 +2.481622000E3,5.049144453E1 +2.481951000E3,4.811617152E1 +2.482214000E3,4.600387593E1 +2.482494000E3,5.163944801E1 +2.482753000E3,4.933311419E1 +2.482991000E3,4.946534766E1 +2.483244000E3,4.580757204E1 +2.483487000E3,4.797573247E1 +2.483734000E3,4.560844100E1 +2.483990000E3,5.039329574E1 +2.484313000E3,5.052905321E1 +2.484577000E3,5.131938081E1 +2.484833000E3,4.901245069E1 +2.485113000E3,5.233648083E1 +2.485461000E3,5.215489758E1 +2.485749000E3,5.451606287E1 +2.486018000E3,5.043201098E1 +2.486334000E3,5.091085093E1 +2.486650000E3,4.972266732E1 +2.486916000E3,4.846864702E1 +2.487167000E3,4.843730663E1 +2.487412000E3,5.285205631E1 +2.487677000E3,5.695937588E1 +2.487965000E3,5.067248408E1 +2.488216000E3,4.955689254E1 +2.488580000E3,4.789771891E1 +2.488828000E3,4.640186686E1 +2.489150000E3,4.956289338E1 +2.489428000E3,4.916705799E1 +2.489718000E3,4.250319869E1 +2.489959000E3,4.211788948E1 +2.490259000E3,4.711467977E1 +2.490508000E3,5.336087879E1 +2.490805000E3,5.163346506E1 +2.491066000E3,5.303328317E1 +2.491377000E3,5.018594076E1 +2.491684000E3,4.569780009E1 +2.492029000E3,4.677168871E1 +2.492273000E3,4.586755987E1 +2.492522000E3,5.020047651E1 +2.492768000E3,4.585538278E1 +2.493006000E3,5.027464230E1 +2.493315000E3,4.719632652E1 +2.493608000E3,4.892998103E1 +2.493874000E3,4.659859577E1 +2.494131000E3,4.485377967E1 +2.494387000E3,4.661063763E1 +2.494635000E3,4.873112034E1 +2.494904000E3,5.011233058E1 +2.495259000E3,4.996207620E1 +2.495523000E3,5.026371938E1 +2.495789000E3,4.897334151E1 +2.496086000E3,4.919412247E1 +2.496330000E3,4.448238049E1 +2.496598000E3,5.779881243E1 +2.496845000E3,5.068443192E1 +2.497079000E3,5.452206946E1 +2.497328000E3,6.091811093E1 +2.497574000E3,5.545025588E1 +2.497819000E3,5.118451852E1 +2.498124000E3,5.647063434E1 +2.498436000E3,5.942897676E1 +2.498681000E3,6.063927987E1 +2.498932000E3,5.256584857E1 +2.499203000E3,5.942844343E1 +2.499465000E3,5.268198933E1 +2.499726000E3,5.561310022E1 +2.499989000E3,5.551348586E1 +2.500270000E3,5.728700965E1 +2.500550000E3,5.848024533E1 +2.500856000E3,5.545551244E1 +2.501156000E3,7.074712648E1 +2.501405000E3,6.649397556E1 +2.501727000E3,6.577106108E1 +2.501964000E3,5.791155905E1 +2.502223000E3,6.571272960E1 +2.502476000E3,5.223691777E1 +2.502731000E3,5.099379006E1 +2.502989000E3,4.996024440E1 +2.503265000E3,4.587573023E1 +2.503515000E3,6.660646739E1 +2.503792000E3,5.426812996E1 +2.504090000E3,4.221263073E1 +2.504348000E3,3.961359220E1 +2.504607000E3,3.317448387E1 +2.504957000E3,2.765634596E1 +2.505202000E3,5.260508289E1 +2.505444000E3,4.970766119E1 +2.505723000E3,5.961421356E1 +2.506010000E3,5.761735716E1 +2.506316000E3,4.386011183E1 +2.506629000E3,3.297646158E1 +2.506928000E3,3.461351567E1 +2.507171000E3,3.422494413E1 +2.507415000E3,3.898815557E1 +2.507661000E3,3.916714623E1 +2.507958000E3,4.409544564E1 +2.508199000E3,4.040812578E1 +2.508495000E3,4.100804729E1 +2.508767000E3,4.155083379E1 +2.509073000E3,4.256659126E1 +2.509346000E3,4.665111645E1 +2.509615000E3,4.785704834E1 +2.509926000E3,4.957995318E1 +2.510246000E3,5.281308228E1 +2.510533000E3,5.716195403E1 +2.510847000E3,5.384222007E1 +2.511087000E3,4.682850643E1 +2.511483000E3,5.585229854E1 +2.511769000E3,5.797880255E1 +2.512061000E3,5.008051045E1 +2.512305000E3,4.616221083E1 +2.512545000E3,5.837834308E1 +2.512782000E3,4.588894556E1 +2.513082000E3,5.827978204E1 +2.513321000E3,5.321307958E1 +2.513625000E3,5.419914666E1 +2.513860000E3,4.249936315E1 +2.514160000E3,5.093700871E1 +2.514505000E3,4.733309734E1 +2.514807000E3,5.739188753E1 +2.515049000E3,5.684870925E1 +2.515326000E3,5.429714525E1 +2.515551000E3,5.304528611E1 +2.515847000E3,6.048302750E1 +2.516097000E3,5.298092655E1 +2.516397000E3,5.664346713E1 +2.516634000E3,5.062362510E1 +2.516910000E3,5.059011404E1 +2.517165000E3,5.074931344E1 +2.517424000E3,5.193937267E1 +2.517672000E3,4.773080825E1 +2.517933000E3,4.886471101E1 +2.518191000E3,4.258084657E1 +2.518440000E3,4.144243799E1 +2.518697000E3,3.266068365E1 +2.518962000E3,3.662092465E1 +2.519211000E3,4.002326553E1 +2.519469000E3,5.193824268E1 +2.519821000E3,5.548381163E1 +2.520087000E3,5.245445808E1 +2.520336000E3,4.447536752E1 +2.520718000E3,5.931091731E1 +2.521010000E3,5.514928156E1 +2.521305000E3,5.194242569E1 +2.521541000E3,5.632439964E1 +2.521781000E3,4.768714929E1 +2.522074000E3,3.967116686E1 +2.522306000E3,3.457523914E1 +2.522554000E3,3.414939493E1 +2.522808000E3,3.034285017E1 +2.523103000E3,3.725639399E1 +2.523347000E3,5.824523011E1 +2.523645000E3,5.697741808E1 +2.524002000E3,5.995361389E1 +2.524244000E3,5.516819042E1 +2.524491000E3,5.520201782E1 +2.524765000E3,4.576677797E1 +2.524988000E3,5.785527848E1 +2.525299000E3,5.093237528E1 +2.525544000E3,4.090627494E1 +2.525822000E3,3.111750175E1 +2.526056000E3,2.764971736E1 +2.526311000E3,2.852524033E1 +2.526617000E3,3.508264660E1 +2.526905000E3,5.067917717E1 +2.527241000E3,4.646824007E1 +2.527487000E3,3.686495987E1 +2.527738000E3,3.822220480E1 +2.527988000E3,3.764348220E1 +2.528232000E3,4.278450517E1 +2.528563000E3,4.881983602E1 +2.528870000E3,4.048435148E1 +2.529125000E3,4.047282835E1 +2.529398000E3,4.602715630E1 +2.529632000E3,4.358719476E1 +2.529925000E3,4.185499728E1 +2.530224000E3,4.428160693E1 +2.530451000E3,5.370094630E1 +2.530771000E3,4.662369716E1 +2.531057000E3,4.486368653E1 +2.531322000E3,3.985753269E1 +2.531579000E3,3.868983993E1 +2.531842000E3,4.397673982E1 +2.532129000E3,4.465178920E1 +2.532379000E3,4.071629694E1 +2.532681000E3,3.700154265E1 +2.532925000E3,3.709745900E1 +2.533169000E3,3.856350220E1 +2.533454000E3,3.780017804E1 +2.533739000E3,4.079153270E1 +2.534053000E3,3.467337947E1 +2.534304000E3,3.872357849E1 +2.534571000E3,4.188092371E1 +2.534878000E3,4.226520735E1 +2.535180000E3,4.433351029E1 +2.535433000E3,4.196124368E1 +2.535679000E3,4.159710638E1 +2.535934000E3,4.131920574E1 +2.536230000E3,4.013333591E1 +2.536496000E3,3.861252617E1 +2.536812000E3,3.205810696E1 +2.537071000E3,3.900017908E1 +2.537321000E3,3.720890888E1 +2.537589000E3,3.571752088E1 +2.537899000E3,3.466875388E1 +2.538158000E3,3.490809444E1 +2.538414000E3,2.846246396E1 +2.538721000E3,3.471466025E1 +2.539000000E3,3.262267006E1 +2.539250000E3,2.900340615E1 +2.539526000E3,2.962734770E1 +2.539843000E3,4.051335289E1 +2.540219000E3,3.732414883E1 +2.540478000E3,3.212776280E1 +2.540731000E3,3.980002135E1 +2.541002000E3,4.402529692E1 +2.541305000E3,3.531142487E1 +2.541570000E3,4.157255463E1 +2.541892000E3,4.121686373E1 +2.542138000E3,3.512055425E1 +2.542435000E3,3.058422839E1 +2.542704000E3,3.860796470E1 +2.542951000E3,4.158955283E1 +2.543254000E3,4.126835549E1 +2.543598000E3,4.557459954E1 +2.543842000E3,4.195620726E1 +2.544088000E3,4.759905541E1 +2.544347000E3,4.089593512E1 +2.544592000E3,4.224934090E1 +2.544840000E3,3.548720999E1 +2.545141000E3,4.189266277E1 +2.545422000E3,4.058854606E1 +2.545652000E3,3.761551365E1 +2.545897000E3,3.643024250E1 +2.546173000E3,3.544845567E1 +2.546439000E3,3.816851754E1 +2.546779000E3,3.801212128E1 +2.547110000E3,3.288266257E1 +2.547379000E3,4.063952307E1 +2.547641000E3,4.765684387E1 +2.547893000E3,4.402640436E1 +2.548143000E3,4.172886183E1 +2.548441000E3,3.808222191E1 +2.548685000E3,3.637035664E1 +2.548962000E3,3.879815953E1 +2.549230000E3,5.433785228E1 +2.549540000E3,5.428002325E1 +2.549852000E3,5.430864003E1 +2.550121000E3,5.376325395E1 +2.550389000E3,5.250586376E1 +2.550641000E3,5.329413218E1 +2.550946000E3,3.817927317E1 +2.551218000E3,3.779289824E1 +2.551493000E3,4.904361964E1 +2.551759000E3,5.500168111E1 +2.552006000E3,4.745774118E1 +2.552261000E3,5.304049624E1 +2.552515000E3,4.933664563E1 +2.552779000E3,3.482983031E1 +2.553043000E3,3.914561037E1 +2.553378000E3,3.318943686E1 +2.553659000E3,2.674748735E1 +2.553917000E3,2.500565902E1 +2.554234000E3,3.331261434E1 +2.554489000E3,3.380079275E1 +2.554753000E3,3.632095841E1 +2.554996000E3,3.606888467E1 +2.555239000E3,4.759559903E1 +2.555541000E3,5.588542149E1 +2.555837000E3,5.768171500E1 +2.556076000E3,5.837962370E1 +2.556358000E3,5.761486260E1 +2.556647000E3,5.408185929E1 +2.556914000E3,5.624815374E1 +2.557248000E3,4.727853091E1 +2.557554000E3,3.999550071E1 +2.557822000E3,4.090986684E1 +2.558062000E3,3.411171601E1 +2.558302000E3,3.042998918E1 +2.558550000E3,3.392526215E1 +2.558807000E3,3.801243567E1 +2.559082000E3,4.390440101E1 +2.559357000E3,4.215163378E1 +2.559616000E3,4.616573562E1 +2.559972000E3,4.170066459E1 +2.560245000E3,2.972551911E1 +2.560517000E3,3.987643023E1 +2.560765000E3,4.046237199E1 +2.561011000E3,4.268708813E1 +2.561258000E3,4.450541644E1 +2.561531000E3,4.611922799E1 +2.561775000E3,4.492719317E1 +2.562027000E3,4.345851098E1 +2.562302000E3,5.022295857E1 +2.562533000E3,4.986016935E1 +2.562786000E3,3.932672790E1 +2.563211000E3,3.777119812E1 +2.563479000E3,4.577537823E1 +2.563731000E3,5.443473776E1 +2.563977000E3,5.947837126E1 +2.564252000E3,5.014881480E1 +2.564539000E3,4.884415531E1 +2.564781000E3,4.451698294E1 +2.565088000E3,3.693106642E1 +2.565361000E3,3.096881298E1 +2.565624000E3,2.635486448E1 +2.565885000E3,2.734213385E1 +2.566246000E3,3.979362654E1 +2.566493000E3,3.382738554E1 +2.566797000E3,3.469438245E1 +2.567097000E3,4.097528595E1 +2.567346000E3,4.285297734E1 +2.567644000E3,4.930003444E1 +2.567891000E3,4.540271843E1 +2.568170000E3,3.109775861E1 +2.568407000E3,2.738661195E1 +2.568701000E3,3.024785153E1 +2.568952000E3,3.235217301E1 +2.569220000E3,3.196941264E1 +2.569567000E3,4.299833718E1 +2.569862000E3,4.496000509E1 +2.570178000E3,4.562225815E1 +2.570442000E3,4.437451260E1 +2.570707000E3,3.949227756E1 +2.570950000E3,2.951847370E1 +2.571202000E3,3.800151296E1 +2.571472000E3,4.650517590E1 +2.571732000E3,3.967561664E1 +2.571975000E3,3.149456620E1 +2.572246000E3,5.234083710E1 +2.572527000E3,4.544839619E1 +2.572859000E3,4.436174777E1 +2.573168000E3,4.369290756E1 +2.573429000E3,4.420543128E1 +2.573728000E3,4.389854646E1 +2.573968000E3,4.580346210E1 +2.574268000E3,4.881141748E1 +2.574509000E3,4.708023256E1 +2.574802000E3,3.388696242E1 +2.575045000E3,2.922489212E1 +2.575339000E3,3.941924125E1 +2.575597000E3,4.733040375E1 +2.575906000E3,4.790376430E1 +2.576245000E3,4.328559785E1 +2.576517000E3,4.720947277E1 +2.576791000E3,4.076260480E1 +2.577092000E3,3.249905806E1 +2.577324000E3,3.886850876E1 +2.577566000E3,3.577483806E1 +2.577814000E3,4.105002685E1 +2.578080000E3,3.881208350E1 +2.578375000E3,5.720708534E1 +2.578624000E3,4.933084675E1 +2.578932000E3,5.989261963E1 +2.579254000E3,5.193127116E1 +2.579506000E3,4.843920497E1 +2.579747000E3,4.570821188E1 +2.580001000E3,4.446748829E1 +2.580244000E3,4.006228376E1 +2.580497000E3,2.933332862E1 +2.580745000E3,4.525678604E1 +2.580989000E3,4.717489692E1 +2.581288000E3,5.239736286E1 +2.581587000E3,5.268105849E1 +2.581851000E3,4.960616241E1 +2.582112000E3,4.637217789E1 +2.582361000E3,4.676379781E1 +2.582583000E3,4.083594902E1 +2.582903000E3,2.696140701E1 +2.583176000E3,2.668057590E1 +2.583429000E3,2.900886287E1 +2.583692000E3,2.732690452E1 +2.583951000E3,3.475308428E1 +2.584205000E3,4.782860484E1 +2.584480000E3,4.928978168E1 +2.584742000E3,3.697304160E1 +2.585017000E3,3.390321432E1 +2.585248000E3,4.818778278E1 +2.585552000E3,5.175969441E1 +2.585851000E3,4.752724055E1 +2.586108000E3,5.047732228E1 +2.586408000E3,5.003267867E1 +2.586651000E3,4.995698879E1 +2.586934000E3,4.985539117E1 +2.587202000E3,4.558719065E1 +2.587455000E3,4.973387236E1 +2.587702000E3,5.190737686E1 +2.587964000E3,4.955516560E1 +2.588211000E3,5.039526507E1 +2.588461000E3,3.897042435E1 +2.588748000E3,2.919124678E1 +2.589063000E3,3.061867322E1 +2.589398000E3,4.010104895E1 +2.589690000E3,3.640442215E1 +2.589998000E3,4.479952304E1 +2.590261000E3,4.757967128E1 +2.590558000E3,4.812333533E1 +2.590802000E3,4.603482331E1 +2.591083000E3,2.960043464E1 +2.591326000E3,3.684354753E1 +2.591591000E3,4.359182452E1 +2.591849000E3,4.788602237E1 +2.592228000E3,4.468031543E1 +2.592527000E3,3.894688899E1 +2.592778000E3,2.800490026E1 +2.593035000E3,4.310888325E1 +2.593333000E3,4.628339380E1 +2.593602000E3,4.440124594E1 +2.593883000E3,4.123163794E1 +2.594160000E3,3.127645239E1 +2.594429000E3,3.071812965E1 +2.594749000E3,4.618618296E1 +2.595070000E3,5.248181749E1 +2.595312000E3,4.786265879E1 +2.595668000E3,3.990233287E1 +2.595973000E3,4.173583037E1 +2.596256000E3,3.709278400E1 +2.596497000E3,3.229385861E1 +2.596813000E3,4.380573021E1 +2.597084000E3,4.783628282E1 +2.597325000E3,5.024593568E1 +2.597578000E3,5.102379549E1 +2.597828000E3,4.760481411E1 +2.598089000E3,3.822780835E1 +2.598387000E3,3.417342767E1 +2.598736000E3,2.863579065E1 +2.598981000E3,2.886228233E1 +2.599228000E3,2.855965247E1 +2.599493000E3,3.083396855E1 +2.599764000E3,3.581659374E1 +2.600032000E3,4.317647632E1 +2.600330000E3,4.853625621E1 +2.600623000E3,5.102467342E1 +2.600867000E3,4.877836926E1 +2.601112000E3,4.705612686E1 +2.601365000E3,4.889085742E1 +2.601612000E3,4.654488136E1 +2.601956000E3,4.055024190E1 +2.602220000E3,3.990851266E1 +2.602547000E3,3.648352551E1 +2.602794000E3,5.324982942E1 +2.603078000E3,5.268965363E1 +2.603338000E3,4.851189142E1 +2.603637000E3,5.135006473E1 +2.603925000E3,4.939301404E1 +2.604238000E3,5.337101389E1 +2.604488000E3,5.022765286E1 +2.604734000E3,5.253186666E1 +2.605064000E3,4.127453431E1 +2.605321000E3,4.114070867E1 +2.605572000E3,4.042282231E1 +2.605820000E3,4.255774466E1 +2.606073000E3,4.746726668E1 +2.606319000E3,4.761848671E1 +2.606565000E3,4.983628061E1 +2.606849000E3,3.046517787E1 +2.607082000E3,3.832211131E1 +2.607339000E3,4.741131966E1 +2.607609000E3,4.453335589E1 +2.607874000E3,3.545592153E1 +2.608197000E3,4.672891376E1 +2.608451000E3,4.755881287E1 +2.608706000E3,4.827652641E1 +2.608952000E3,4.727153141E1 +2.609226000E3,4.731450942E1 +2.609537000E3,3.981385402E1 +2.609784000E3,3.194698732E1 +2.610041000E3,3.314164027E1 +2.610283000E3,2.819786732E1 +2.610546000E3,2.664547785E1 +2.610857000E3,2.913544778E1 +2.611125000E3,3.961651759E1 +2.611432000E3,3.852777426E1 +2.611666000E3,3.205673146E1 +2.611951000E3,4.233182010E1 +2.612229000E3,3.378509898E1 +2.612454000E3,4.071755552E1 +2.612730000E3,5.018278065E1 +2.613050000E3,4.100034395E1 +2.613359000E3,3.892108016E1 +2.613628000E3,5.091321799E1 +2.613871000E3,4.336916838E1 +2.614108000E3,3.960788811E1 +2.614408000E3,3.948227358E1 +2.614722000E3,3.631863435E1 +2.614975000E3,4.057042340E1 +2.615256000E3,4.414132009E1 +2.615486000E3,4.180934435E1 +2.615750000E3,4.153999936E1 +2.615997000E3,3.521796466E1 +2.616260000E3,5.443854687E1 +2.616548000E3,5.408118563E1 +2.616842000E3,4.951275264E1 +2.617090000E3,5.182722031E1 +2.617344000E3,4.327522742E1 +2.617643000E3,5.375122422E1 +2.617975000E3,5.216635190E1 +2.618233000E3,4.126006713E1 +2.618497000E3,4.980260599E1 +2.618804000E3,4.655838197E1 +2.619044000E3,4.977945459E1 +2.619327000E3,4.875559075E1 +2.619562000E3,4.983226039E1 +2.619834000E3,4.741689273E1 +2.620075000E3,4.923498746E1 +2.620352000E3,4.923432072E1 +2.620664000E3,4.040876723E1 +2.620916000E3,3.889825840E1 +2.621142000E3,5.245081579E1 +2.621448000E3,4.684934794E1 +2.621687000E3,4.583906640E1 +2.621992000E3,4.366517623E1 +2.622230000E3,3.373873872E1 +2.622475000E3,3.701694694E1 +2.622750000E3,3.544967426E1 +2.623008000E3,3.363206222E1 +2.623285000E3,4.009589135E1 +2.623562000E3,4.408709562E1 +2.623825000E3,4.800133533E1 +2.624131000E3,4.855432282E1 +2.624414000E3,4.808187444E1 +2.624671000E3,5.252566194E1 +2.624932000E3,4.890333861E1 +2.625183000E3,4.370428781E1 +2.625430000E3,3.668118979E1 +2.625747000E3,4.353955331E1 +2.626003000E3,4.224026412E1 +2.626267000E3,4.311785789E1 +2.626514000E3,3.517806855E1 +2.626763000E3,3.981966751E1 +2.627025000E3,3.444602265E1 +2.627334000E3,3.341390757E1 +2.627660000E3,3.926570124E1 +2.627920000E3,4.341089288E1 +2.628216000E3,4.081134870E1 +2.628467000E3,3.912400300E1 +2.628730000E3,3.657553946E1 +2.629000000E3,3.072838888E1 +2.629284000E3,2.929703023E1 +2.629549000E3,3.378014550E1 +2.629844000E3,4.760306323E1 +2.630080000E3,4.024322042E1 +2.630373000E3,3.235913140E1 +2.630611000E3,3.920509877E1 +2.630919000E3,5.103841717E1 +2.631222000E3,5.813980805E1 +2.631514000E3,5.190256812E1 +2.631753000E3,4.653294376E1 +2.632054000E3,4.782140153E1 +2.632295000E3,4.977458693E1 +2.632592000E3,5.371197571E1 +2.632828000E3,5.056512655E1 +2.633140000E3,5.325824914E1 +2.633383000E3,4.973751947E1 +2.633632000E3,4.853342473E1 +2.633950000E3,3.905011010E1 +2.634254000E3,3.751700759E1 +2.634549000E3,5.292771607E1 +2.634786000E3,5.557450981E1 +2.635082000E3,4.974692283E1 +2.635319000E3,5.393938197E1 +2.635611000E3,4.675981835E1 +2.635848000E3,4.299614910E1 +2.636145000E3,3.756646750E1 +2.636395000E3,3.824353200E1 +2.636648000E3,3.045317917E1 +2.636942000E3,3.257931849E1 +2.637299000E3,3.010616025E1 +2.637599000E3,4.995329379E1 +2.637834000E3,4.824584689E1 +2.638071000E3,5.059212149E1 +2.638363000E3,5.330633429E1 +2.638612000E3,5.343612136E1 +2.638897000E3,4.755550111E1 +2.639122000E3,4.119881812E1 +2.639362000E3,3.902726568E1 +2.639659000E3,4.451944661E1 +2.639896000E3,4.587471035E1 +2.640164000E3,4.115502802E1 +2.640409000E3,4.505311495E1 +2.640656000E3,4.913968689E1 +2.640951000E3,5.110923180E1 +2.641208000E3,4.281604120E1 +2.641505000E3,4.825854961E1 +2.641748000E3,4.861588211E1 +2.642059000E3,4.450542116E1 +2.642304000E3,4.274821036E1 +2.642556000E3,3.503446158E1 +2.642862000E3,4.080900103E1 +2.643164000E3,4.152079562E1 +2.643527000E3,3.935881933E1 +2.643833000E3,3.760570593E1 +2.644082000E3,3.959144469E1 +2.644327000E3,4.007918652E1 +2.644573000E3,4.288120719E1 +2.644814000E3,4.793099478E1 +2.645114000E3,4.424069452E1 +2.645391000E3,4.078427844E1 +2.645635000E3,3.902795236E1 +2.645871000E3,4.393773718E1 +2.646111000E3,4.085627764E1 +2.646355000E3,4.393316509E1 +2.646690000E3,4.428892908E1 +2.646958000E3,4.601464396E1 +2.647235000E3,4.300358696E1 +2.647474000E3,4.083829680E1 +2.647758000E3,5.406220971E1 +2.648003000E3,4.253716581E1 +2.648273000E3,4.506680000E1 +2.648514000E3,3.500046728E1 +2.648758000E3,3.537281462E1 +2.649004000E3,5.013819891E1 +2.649251000E3,5.388943830E1 +2.649556000E3,5.656370208E1 +2.649891000E3,5.696480404E1 +2.650216000E3,4.675400561E1 +2.650515000E3,4.179549274E1 +2.650777000E3,4.536624285E1 +2.651084000E3,4.297370528E1 +2.651336000E3,4.376785410E1 +2.651635000E3,3.354560746E1 +2.651881000E3,2.537939319E1 +2.652180000E3,3.168783420E1 +2.652481000E3,4.898553010E1 +2.652737000E3,5.438993966E1 +2.652992000E3,4.963834041E1 +2.653252000E3,4.227369117E1 +2.653502000E3,4.301436765E1 +2.653812000E3,3.649724292E1 +2.654061000E3,4.086211966E1 +2.654320000E3,3.223281741E1 +2.654605000E3,2.807672508E1 +2.654836000E3,2.764825285E1 +2.655100000E3,4.598866982E1 +2.655350000E3,4.383741939E1 +2.655590000E3,4.883555528E1 +2.655837000E3,4.815765811E1 +2.656131000E3,5.047261312E1 +2.656369000E3,5.124829846E1 +2.656626000E3,3.956134092E1 +2.656925000E3,3.503286763E1 +2.657200000E3,3.224209198E1 +2.657447000E3,4.294806319E1 +2.657761000E3,4.898454413E1 +2.658011000E3,5.320780356E1 +2.658286000E3,5.345186604E1 +2.658542000E3,4.849291145E1 +2.658789000E3,5.098648363E1 +2.659034000E3,4.892931203E1 +2.659289000E3,4.580698225E1 +2.659530000E3,3.709695762E1 +2.659834000E3,3.457925551E1 +2.660081000E3,3.855219813E1 +2.660383000E3,3.845534481E1 +2.660628000E3,4.619372518E1 +2.660921000E3,4.848307744E1 +2.661167000E3,4.790880967E1 +2.661464000E3,4.667520128E1 +2.661710000E3,4.098851532E1 +2.662006000E3,4.035468673E1 +2.662245000E3,3.753010710E1 +2.662592000E3,4.792080660E1 +2.662862000E3,4.709835917E1 +2.663123000E3,3.501409506E1 +2.663374000E3,3.240664296E1 +2.663631000E3,4.326696615E1 +2.663874000E3,4.411177933E1 +2.664133000E3,3.936378145E1 +2.664382000E3,3.443614227E1 +2.664648000E3,3.761654306E1 +2.664944000E3,5.164457484E1 +2.665198000E3,2.810669920E1 +2.665512000E3,2.931307063E1 +2.665876000E3,3.108643425E1 +2.666131000E3,3.278101889E1 +2.666439000E3,4.277860150E1 +2.666693000E3,4.213131936E1 +2.667002000E3,3.935849781E1 +2.667259000E3,4.137879880E1 +2.667575000E3,3.790565018E1 +2.667827000E3,3.845274836E1 +2.668153000E3,3.676763670E1 +2.668452000E3,3.751975183E1 +2.668696000E3,3.224848897E1 +2.669023000E3,3.611134142E1 +2.669316000E3,4.467495655E1 +2.669607000E3,4.735906080E1 +2.669885000E3,5.159453510E1 +2.670167000E3,5.321308782E1 +2.670485000E3,5.282242631E1 +2.670747000E3,5.127719277E1 +2.670997000E3,4.902251972E1 +2.671243000E3,4.450532678E1 +2.671540000E3,3.864078148E1 +2.671788000E3,3.720620343E1 +2.672044000E3,4.496142790E1 +2.672357000E3,4.705640535E1 +2.672617000E3,3.890316941E1 +2.672864000E3,4.027639889E1 +2.673159000E3,4.202335245E1 +2.673421000E3,4.285452583E1 +2.673720000E3,3.626679930E1 +2.673964000E3,4.670395357E1 +2.674210000E3,4.915586670E1 +2.674514000E3,5.353785994E1 +2.674811000E3,5.414016767E1 +2.675048000E3,5.591079353E1 +2.675364000E3,3.844031623E1 +2.675661000E3,3.124520008E1 +2.675946000E3,3.566755596E1 +2.676189000E3,3.490423263E1 +2.676498000E3,5.070292882E1 +2.676799000E3,5.356134163E1 +2.677047000E3,5.161634227E1 +2.677305000E3,5.185439004E1 +2.677581000E3,5.315585532E1 +2.677832000E3,4.418578879E1 +2.678087000E3,3.972693415E1 +2.678335000E3,4.338465258E1 +2.678650000E3,5.168404535E1 +2.678934000E3,4.984483773E1 +2.679249000E3,4.977401184E1 +2.679507000E3,5.044345616E1 +2.679823000E3,4.232585634E1 +2.680128000E3,3.026551109E1 +2.680400000E3,3.009656886E1 +2.680660000E3,4.894119824E1 +2.680913000E3,4.712312643E1 +2.681208000E3,4.239602863E1 +2.681477000E3,4.875338950E1 +2.681768000E3,4.887945421E1 +2.682128000E3,4.379352407E1 +2.682394000E3,4.073494394E1 +2.682637000E3,3.685872977E1 +2.682895000E3,2.883047793E1 +2.683163000E3,3.769147996E1 +2.683455000E3,3.713975885E1 +2.683749000E3,4.855681627E1 +2.683994000E3,4.936430656E1 +2.684290000E3,5.303947120E1 +2.684540000E3,5.031092673E1 +2.684833000E3,4.783130186E1 +2.685073000E3,4.898734587E1 +2.685348000E3,4.686166956E1 +2.685598000E3,4.244245178E1 +2.685917000E3,3.872119900E1 +2.686161000E3,4.891396583E1 +2.686434000E3,4.491629365E1 +2.686687000E3,3.588391777E1 +2.686952000E3,3.156965948E1 +2.687206000E3,3.184725563E1 +2.687480000E3,3.153561496E1 +2.687733000E3,3.669659228E1 +2.688049000E3,3.507922771E1 +2.688340000E3,3.251056517E1 +2.688645000E3,4.079174670E1 +2.688915000E3,4.837277005E1 +2.689163000E3,4.669136560E1 +2.689426000E3,3.659115086E1 +2.689751000E3,4.814125321E1 +2.689994000E3,4.721335081E1 +2.690235000E3,5.119773767E1 +2.690471000E3,4.584232122E1 +2.690738000E3,4.687969307E1 +2.691006000E3,4.116197132E1 +2.691312000E3,2.850019915E1 +2.691659000E3,3.175399572E1 +2.691948000E3,3.215115185E1 +2.692197000E3,2.655209633E1 +2.692466000E3,3.136629444E1 +2.692727000E3,2.928762690E1 +2.692976000E3,2.688909217E1 +2.693281000E3,3.350197248E1 +2.693518000E3,3.760267236E1 +2.693776000E3,3.194141055E1 +2.694032000E3,3.113878807E1 +2.694299000E3,2.830606211E1 +2.694602000E3,2.632227285E1 +2.694941000E3,2.736240000E1 +2.695184000E3,3.956118458E1 +2.695488000E3,4.069974415E1 +2.695732000E3,4.498590768E1 +2.696030000E3,3.370199172E1 +2.696300000E3,3.284857688E1 +2.696535000E3,2.919082343E1 +2.696815000E3,3.146626789E1 +2.697056000E3,2.968971947E1 +2.697354000E3,4.116455896E1 +2.697640000E3,5.055341773E1 +2.697888000E3,5.163434474E1 +2.698155000E3,4.792936353E1 +2.698456000E3,4.111753823E1 +2.698732000E3,4.594070701E1 +2.699031000E3,3.204472070E1 +2.699273000E3,2.836668859E1 +2.699578000E3,2.624009297E1 +2.699855000E3,2.719538340E1 +2.700110000E3,2.868563476E1 +2.700399000E3,2.757039916E1 +2.700662000E3,2.546630310E1 +2.700960000E3,2.981844134E1 +2.701310000E3,3.063471239E1 +2.701629000E3,4.014173680E1 +2.701894000E3,3.281157953E1 +2.702206000E3,4.268438101E1 +2.702448000E3,4.272045970E1 +2.702710000E3,4.782744516E1 +2.702984000E3,4.067538265E1 +2.703255000E3,3.821763448E1 +2.703566000E3,3.373237040E1 +2.703865000E3,2.762261654E1 +2.704108000E3,3.058182972E1 +2.704366000E3,4.157303269E1 +2.704695000E3,4.128988216E1 +2.705002000E3,3.725674585E1 +2.705260000E3,3.318881716E1 +2.705544000E3,3.512644750E1 +2.705774000E3,3.012622541E1 +2.706039000E3,3.307868989E1 +2.706297000E3,3.089854998E1 +2.706599000E3,2.870455364E1 +2.706901000E3,2.573473536E1 +2.707155000E3,2.708285982E1 +2.707419000E3,2.641018696E1 +2.707644000E3,2.532685142E1 +2.707945000E3,2.741320006E1 +2.708188000E3,2.764718970E1 +2.708460000E3,3.745935532E1 +2.708711000E3,4.292241509E1 +2.708955000E3,4.431523077E1 +2.709266000E3,3.812245251E1 +2.709534000E3,3.199637282E1 +2.709802000E3,3.030937111E1 +2.710049000E3,3.172341474E1 +2.710303000E3,4.706685853E1 +2.710610000E3,4.372593931E1 +2.710859000E3,4.298246415E1 +2.711196000E3,4.313732995E1 +2.711485000E3,3.646858634E1 +2.711745000E3,3.547356546E1 +2.712003000E3,4.802507202E1 +2.712259000E3,4.666185634E1 +2.712527000E3,4.298723738E1 +2.712813000E3,3.203029787E1 +2.713082000E3,2.721140687E1 +2.713344000E3,3.967881707E1 +2.713594000E3,5.017429445E1 +2.713859000E3,4.690730331E1 +2.714106000E3,4.892140969E1 +2.714475000E3,4.312346900E1 +2.714730000E3,4.926615820E1 +2.714984000E3,4.690558758E1 +2.715298000E3,3.116292546E1 +2.715563000E3,2.731472603E1 +2.715855000E3,3.029992609E1 +2.716160000E3,3.149201904E1 +2.716442000E3,2.826058660E1 +2.716703000E3,2.713282366E1 +2.716957000E3,3.659207256E1 +2.717253000E3,3.982143620E1 +2.717592000E3,4.316888996E1 +2.717851000E3,4.348787554E1 +2.718149000E3,4.336902207E1 +2.718464000E3,4.494305168E1 +2.718765000E3,4.280996114E1 +2.719042000E3,4.083199069E1 +2.719277000E3,3.924180447E1 +2.719573000E3,2.985025677E1 +2.719800000E3,2.924980764E1 +2.720042000E3,2.589394072E1 +2.720346000E3,2.996884267E1 +2.720607000E3,2.951796470E1 +2.720882000E3,2.762273017E1 +2.721181000E3,4.946261833E1 +2.721422000E3,4.848220411E1 +2.721736000E3,4.816357380E1 +2.722001000E3,5.238238407E1 +2.722305000E3,5.586118797E1 +2.722602000E3,5.474108905E1 +2.722856000E3,5.089156984E1 +2.723105000E3,4.900978141E1 +2.723369000E3,5.541376880E1 +2.723666000E3,4.827427134E1 +2.723997000E3,4.802338633E1 +2.724296000E3,3.537215093E1 +2.724548000E3,3.822637167E1 +2.724844000E3,3.388327957E1 +2.725086000E3,3.756611639E1 +2.725338000E3,4.489615211E1 +2.725635000E3,5.048833137E1 +2.725871000E3,4.298428385E1 +2.726174000E3,3.303114009E1 +2.726475000E3,4.527811220E1 +2.726764000E3,4.815487328E1 +2.727017000E3,4.761823346E1 +2.727328000E3,4.180028821E1 +2.727607000E3,4.512936944E1 +2.727849000E3,4.337880786E1 +2.728101000E3,4.031817829E1 +2.728401000E3,3.509684782E1 +2.728650000E3,4.495565250E1 +2.728895000E3,4.157595660E1 +2.729138000E3,5.008202715E1 +2.729381000E3,5.308960545E1 +2.729622000E3,4.943413955E1 +2.729917000E3,4.820467383E1 +2.730234000E3,5.168344618E1 +2.730544000E3,5.128425900E1 +2.730837000E3,5.242528085E1 +2.731075000E3,5.125548047E1 +2.731382000E3,5.027678189E1 +2.731625000E3,4.595108129E1 +2.731917000E3,5.425640288E1 +2.732229000E3,5.493458667E1 +2.732522000E3,5.383738769E1 +2.732781000E3,4.577468908E1 +2.733036000E3,4.877165484E1 +2.733337000E3,5.155317163E1 +2.733582000E3,4.868465804E1 +2.733904000E3,5.094377769E1 +2.734158000E3,4.778052408E1 +2.734485000E3,4.980696312E1 +2.734788000E3,5.229980528E1 +2.735043000E3,4.487473927E1 +2.735323000E3,5.405477376E1 +2.735550000E3,5.095910777E1 +2.735795000E3,4.081340338E1 +2.736110000E3,3.942379743E1 +2.736352000E3,4.377765131E1 +2.736599000E3,4.311237352E1 +2.736822000E3,4.659947655E1 +2.737071000E3,4.430846393E1 +2.737313000E3,4.579154087E1 +2.737577000E3,4.628223866E1 +2.737831000E3,3.937286623E1 +2.738094000E3,3.852847368E1 +2.738336000E3,3.907921933E1 +2.738583000E3,5.112703685E1 +2.738825000E3,4.827754167E1 +2.739100000E3,4.022366081E1 +2.739352000E3,3.342841986E1 +2.739649000E3,3.354947585E1 +2.740003000E3,2.967395260E1 +2.740259000E3,4.724158021E1 +2.740515000E3,4.406232704E1 +2.740781000E3,4.128290785E1 +2.741030000E3,3.766271195E1 +2.741274000E3,3.234308905E1 +2.741542000E3,5.345026714E1 +2.741790000E3,5.189834860E1 +2.742037000E3,4.310520052E1 +2.742373000E3,3.005340200E1 +2.742661000E3,3.957498865E1 +2.742905000E3,4.298992085E1 +2.743235000E3,3.914359224E1 +2.743487000E3,4.665969106E1 +2.743742000E3,4.569837618E1 +2.743989000E3,4.037243126E1 +2.744288000E3,4.393151618E1 +2.744525000E3,4.191552922E1 +2.744830000E3,3.855450094E1 +2.745068000E3,3.137426682E1 +2.745312000E3,3.988970586E1 +2.745595000E3,4.261856210E1 +2.745912000E3,4.545535941E1 +2.746178000E3,3.982007681E1 +2.746515000E3,3.873990925E1 +2.746799000E3,4.024486228E1 +2.747097000E3,3.778822068E1 +2.747346000E3,3.349647091E1 +2.747587000E3,3.949530039E1 +2.747884000E3,4.424971453E1 +2.748182000E3,4.109440717E1 +2.748426000E3,4.429824127E1 +2.748724000E3,3.941870140E1 +2.749014000E3,3.719766140E1 +2.749309000E3,3.407061301E1 +2.749659000E3,3.362708714E1 +2.749929000E3,4.111324363E1 +2.750185000E3,4.275268079E1 +2.750445000E3,5.624172952E1 +2.750726000E3,4.374037489E1 +2.750957000E3,4.189644016E1 +2.751207000E3,3.621210842E1 +2.751519000E3,4.177841495E1 +2.751770000E3,4.048458953E1 +2.752052000E3,3.923884976E1 +2.752303000E3,3.426258793E1 +2.752575000E3,3.252443323E1 +2.752926000E3,3.211416673E1 +2.753222000E3,3.245023971E1 +2.753483000E3,3.266068265E1 +2.753758000E3,4.004662592E1 +2.754054000E3,4.872983792E1 +2.754320000E3,5.041613029E1 +2.754567000E3,4.540589836E1 +2.754814000E3,3.042430240E1 +2.755080000E3,3.072459076E1 +2.755376000E3,3.998104284E1 +2.755642000E3,4.049850263E1 +2.755970000E3,4.294486763E1 +2.756315000E3,4.067196783E1 +2.756573000E3,4.772031632E1 +2.756825000E3,4.988707098E1 +2.757139000E3,4.555538995E1 +2.757388000E3,4.252022698E1 +2.757651000E3,3.810962452E1 +2.757917000E3,3.494795311E1 +2.758159000E3,3.247098224E1 +2.758413000E3,3.588027190E1 +2.758665000E3,3.200494843E1 +2.758920000E3,4.772506231E1 +2.759171000E3,3.775844318E1 +2.759507000E3,3.920116655E1 +2.759772000E3,4.528245497E1 +2.760086000E3,4.240466142E1 +2.760349000E3,4.544544837E1 +2.760652000E3,4.039389797E1 +2.760923000E3,3.896680017E1 +2.761194000E3,4.381534416E1 +2.761436000E3,4.424202471E1 +2.761681000E3,4.737958135E1 +2.761960000E3,4.213672401E1 +2.762194000E3,4.516117441E1 +2.762462000E3,4.279973284E1 +2.762806000E3,3.859577230E1 +2.763061000E3,4.880977241E1 +2.763403000E3,4.365184399E1 +2.763660000E3,3.848143477E1 +2.763932000E3,4.787104427E1 +2.764214000E3,3.823665924E1 +2.764451000E3,3.049392521E1 +2.764732000E3,3.086844430E1 +2.764975000E3,2.587396098E1 +2.765284000E3,3.362049288E1 +2.765536000E3,3.353664382E1 +2.765825000E3,5.140360254E1 +2.766193000E3,5.105178275E1 +2.766449000E3,5.027787452E1 +2.766756000E3,4.961194015E1 +2.766992000E3,4.473604482E1 +2.767290000E3,5.567849424E1 +2.767540000E3,5.366739238E1 +2.767788000E3,5.268444481E1 +2.768092000E3,4.378358357E1 +2.768389000E3,4.285786187E1 +2.768638000E3,3.838737205E1 +2.768928000E3,4.053738598E1 +2.769250000E3,3.914310468E1 +2.769517000E3,3.950994015E1 +2.769781000E3,4.085678781E1 +2.770095000E3,3.706118568E1 +2.770362000E3,3.878826243E1 +2.770640000E3,4.509160576E1 +2.770877000E3,4.395611401E1 +2.771129000E3,3.894826552E1 +2.771368000E3,3.783168139E1 +2.771620000E3,3.074559821E1 +2.771881000E3,4.191911052E1 +2.772136000E3,4.492008577E1 +2.772447000E3,3.666714779E1 +2.772710000E3,4.135207765E1 +2.772994000E3,4.645886813E1 +2.773238000E3,5.078995440E1 +2.773478000E3,5.706152467E1 +2.773725000E3,5.135582573E1 +2.773990000E3,4.900548267E1 +2.774266000E3,5.275962483E1 +2.774567000E3,3.947101760E1 +2.774806000E3,4.078518654E1 +2.775113000E3,4.929998433E1 +2.775417000E3,4.396253608E1 +2.775784000E3,4.382194135E1 +2.776077000E3,4.131860223E1 +2.776341000E3,4.321133953E1 +2.776596000E3,3.942571045E1 +2.776881000E3,5.035254190E1 +2.777176000E3,5.596334670E1 +2.777432000E3,6.003222989E1 +2.777730000E3,5.139953750E1 +2.778036000E3,5.596001036E1 +2.778330000E3,5.632045587E1 +2.778567000E3,5.352711698E1 +2.778873000E3,5.160150080E1 +2.779243000E3,5.407354895E1 +2.779513000E3,5.151192380E1 +2.779810000E3,5.479493680E1 +2.780084000E3,5.006197117E1 +2.780351000E3,5.012247277E1 +2.780644000E3,4.598086802E1 +2.780884000E3,3.959492635E1 +2.781142000E3,3.571624227E1 +2.781421000E3,4.082207018E1 +2.781720000E3,5.162800696E1 +2.781984000E3,5.211692198E1 +2.782250000E3,5.017743125E1 +2.782617000E3,4.685740156E1 +2.782916000E3,4.348825959E1 +2.783213000E3,3.825858224E1 +2.783454000E3,4.923981343E1 +2.783750000E3,5.319160353E1 +2.783992000E3,4.967899375E1 +2.784288000E3,3.952802481E1 +2.784535000E3,3.328379343E1 +2.784779000E3,3.014350405E1 +2.785020000E3,3.405755755E1 +2.785313000E3,4.653255974E1 +2.785639000E3,4.571255084E1 +2.785896000E3,4.212654376E1 +2.786166000E3,4.635178938E1 +2.786421000E3,4.614547408E1 +2.786716000E3,4.279815144E1 +2.787018000E3,3.739201392E1 +2.787261000E3,4.297599275E1 +2.787569000E3,5.279236826E1 +2.787869000E3,4.385267374E1 +2.788181000E3,3.538660905E1 +2.788488000E3,4.283741498E1 +2.788738000E3,3.898018884E1 +2.789079000E3,4.417569536E1 +2.789327000E3,3.821417555E1 +2.789586000E3,4.124587088E1 +2.789850000E3,4.583617377E1 +2.790116000E3,4.758354441E1 +2.790413000E3,4.386951397E1 +2.790662000E3,4.527431896E1 +2.790956000E3,4.454979637E1 +2.791207000E3,4.019280914E1 +2.791465000E3,4.549375778E1 +2.791714000E3,4.076569420E1 +2.791963000E3,3.807465350E1 +2.792293000E3,5.201775254E1 +2.792550000E3,4.217772267E1 +2.792797000E3,5.472035384E1 +2.793107000E3,5.403984906E1 +2.793357000E3,5.591746790E1 +2.793622000E3,5.564159884E1 +2.793875000E3,5.646584479E1 +2.794118000E3,5.185594958E1 +2.794377000E3,4.895735059E1 +2.794636000E3,5.654557288E1 +2.794943000E3,5.012866956E1 +2.795254000E3,4.757016947E1 +2.795528000E3,5.211434220E1 +2.795790000E3,4.452402763E1 +2.796058000E3,4.290214665E1 +2.796307000E3,3.465820610E1 +2.796556000E3,4.339944359E1 +2.796852000E3,4.313164949E1 +2.797091000E3,5.438037991E1 +2.797389000E3,5.514175593E1 +2.797635000E3,4.928848190E1 +2.797924000E3,4.659784940E1 +2.798220000E3,4.998887096E1 +2.798537000E3,4.486399829E1 +2.798842000E3,4.885866840E1 +2.799091000E3,4.635335968E1 +2.799347000E3,4.504358299E1 +2.799594000E3,3.958005741E1 +2.799833000E3,4.827229253E1 +2.800082000E3,4.830536262E1 +2.800388000E3,4.659260793E1 +2.800673000E3,4.111758509E1 +2.800972000E3,4.464305855E1 +2.801233000E3,4.497276151E1 +2.801524000E3,3.374775892E1 +2.801884000E3,3.426238632E1 +2.802202000E3,3.521995684E1 +2.802451000E3,3.181302785E1 +2.802708000E3,2.794884084E1 +2.803019000E3,3.320140571E1 +2.803325000E3,3.478175393E1 +2.803626000E3,3.529465039E1 +2.803932000E3,3.962950189E1 +2.804222000E3,5.725685057E1 +2.804486000E3,5.740119524E1 +2.804784000E3,5.069347451E1 +2.805056000E3,5.047632669E1 +2.805376000E3,5.207930289E1 +2.805626000E3,5.264810014E1 +2.805887000E3,5.288954519E1 +2.806177000E3,4.457356662E1 +2.806431000E3,3.885566564E1 +2.806679000E3,3.768676842E1 +2.806944000E3,3.953483275E1 +2.807192000E3,4.348722722E1 +2.807514000E3,4.091620627E1 +2.807832000E3,4.192587435E1 +2.808086000E3,4.434501723E1 +2.808380000E3,4.393917252E1 +2.808686000E3,4.250763593E1 +2.809001000E3,4.146719312E1 +2.809249000E3,4.084508562E1 +2.809517000E3,4.466153637E1 +2.809817000E3,4.002274614E1 +2.810111000E3,4.310032831E1 +2.810375000E3,4.901386280E1 +2.810661000E3,4.607368963E1 +2.810927000E3,4.387647276E1 +2.811225000E3,5.143943484E1 +2.811469000E3,5.045193234E1 +2.811861000E3,4.363012565E1 +2.812115000E3,4.450854658E1 +2.812371000E3,4.453857946E1 +2.812631000E3,4.628101753E1 +2.812921000E3,4.634691523E1 +2.813212000E3,4.654803531E1 +2.813510000E3,4.718980060E1 +2.813758000E3,4.430765323E1 +2.814051000E3,4.322664022E1 +2.814349000E3,4.450224091E1 +2.814582000E3,4.170367724E1 +2.814868000E3,3.985315953E1 +2.815113000E3,5.280042862E1 +2.815400000E3,4.119993511E1 +2.815662000E3,4.251502783E1 +2.815937000E3,4.221594106E1 +2.816186000E3,4.475181393E1 +2.816425000E3,4.757705666E1 +2.816666000E3,4.971185267E1 +2.816968000E3,4.862141287E1 +2.817211000E3,4.713523003E1 +2.817492000E3,4.541478066E1 +2.817737000E3,4.363493262E1 +2.817996000E3,4.428814895E1 +2.818246000E3,4.395099122E1 +2.818516000E3,4.781334664E1 +2.818773000E3,4.439472962E1 +2.819027000E3,4.768107540E1 +2.819278000E3,4.535748265E1 +2.819523000E3,5.061196572E1 +2.819779000E3,4.816069594E1 +2.820044000E3,4.715573746E1 +2.820374000E3,4.919198579E1 +2.820635000E3,5.486134785E1 +2.820897000E3,4.845922458E1 +2.821173000E3,4.486224636E1 +2.821520000E3,4.543631827E1 +2.821781000E3,4.823449020E1 +2.822049000E3,4.622456265E1 +2.822354000E3,3.467019045E1 +2.822632000E3,3.820707315E1 +2.822892000E3,3.870865044E1 +2.823175000E3,3.526203974E1 +2.823424000E3,3.398332746E1 +2.823673000E3,4.060940798E1 +2.823924000E3,4.531267955E1 +2.824156000E3,4.823172894E1 +2.824426000E3,5.381643572E1 +2.824772000E3,5.219878503E1 +2.825053000E3,4.888255160E1 +2.825277000E3,4.023650802E1 +2.825526000E3,3.467455539E1 +2.825785000E3,3.818404386E1 +2.826078000E3,4.122702652E1 +2.826315000E3,3.713088668E1 +2.826619000E3,4.891468535E1 +2.826912000E3,5.266971981E1 +2.827148000E3,4.991025067E1 +2.827457000E3,5.435242869E1 +2.827718000E3,5.378448717E1 +2.828053000E3,5.171570017E1 +2.828327000E3,5.600593919E1 +2.828581000E3,5.175339102E1 +2.828821000E3,4.567582373E1 +2.829101000E3,3.417267221E1 +2.829337000E3,3.532670702E1 +2.829576000E3,4.323212593E1 +2.829823000E3,3.952189104E1 +2.830096000E3,4.372473758E1 +2.830363000E3,4.288959864E1 +2.830609000E3,3.903893871E1 +2.830954000E3,3.847274859E1 +2.831281000E3,4.911689413E1 +2.831539000E3,5.342672798E1 +2.831798000E3,5.558955965E1 +2.832091000E3,5.519004987E1 +2.832341000E3,5.877942264E1 +2.832589000E3,4.602825434E1 +2.832861000E3,3.380054471E1 +2.833107000E3,3.583644563E1 +2.833403000E3,4.160983164E1 +2.833653000E3,3.903662215E1 +2.833958000E3,3.879412363E1 +2.834222000E3,4.121083607E1 +2.834460000E3,4.235130104E1 +2.834723000E3,5.615135633E1 +2.834993000E3,5.355273371E1 +2.835271000E3,4.896976792E1 +2.835535000E3,5.132324538E1 +2.835792000E3,5.529277110E1 +2.836041000E3,5.163674064E1 +2.836366000E3,4.657927993E1 +2.836613000E3,4.238907241E1 +2.836875000E3,5.376683406E1 +2.837143000E3,5.052269952E1 +2.837398000E3,5.018740192E1 +2.837697000E3,4.680907883E1 +2.837961000E3,4.427452663E1 +2.838227000E3,3.300759096E1 +2.838490000E3,3.639504198E1 +2.838784000E3,4.617517315E1 +2.839084000E3,4.692063960E1 +2.839325000E3,4.445415179E1 +2.839620000E3,4.215561710E1 +2.839863000E3,4.433766229E1 +2.840168000E3,4.210423337E1 +2.840460000E3,3.873922427E1 +2.840768000E3,3.717852459E1 +2.841057000E3,3.957811826E1 +2.841313000E3,3.760389186E1 +2.841638000E3,4.310249633E1 +2.841921000E3,4.813095040E1 +2.842192000E3,4.623131926E1 +2.842444000E3,4.648620260E1 +2.842743000E3,4.620801315E1 +2.843027000E3,4.321069748E1 +2.843281000E3,4.205248893E1 +2.843587000E3,2.653536028E1 +2.843863000E3,2.940344619E1 +2.844270000E3,4.715941302E1 +2.844533000E3,4.512147604E1 +2.844793000E3,4.758865475E1 +2.845051000E3,4.853448129E1 +2.845325000E3,4.647479098E1 +2.845569000E3,4.600966189E1 +2.845842000E3,4.549543262E1 +2.846088000E3,4.262631529E1 +2.846347000E3,4.522394390E1 +2.846652000E3,4.657245211E1 +2.846924000E3,4.554651191E1 +2.847231000E3,4.501421864E1 +2.847609000E3,4.413715050E1 +2.847859000E3,3.641102730E1 +2.848158000E3,2.959594862E1 +2.848409000E3,3.229903797E1 +2.848684000E3,3.716282001E1 +2.848948000E3,4.864280315E1 +2.849195000E3,4.698625872E1 +2.849453000E3,4.475077374E1 +2.849725000E3,4.320130236E1 +2.850029000E3,4.052232702E1 +2.850286000E3,4.987213531E1 +2.850622000E3,4.470574790E1 +2.850953000E3,4.746715529E1 +2.851224000E3,4.817674396E1 +2.851475000E3,4.755384271E1 +2.851775000E3,4.606857790E1 +2.852037000E3,4.602549066E1 +2.852280000E3,4.107899882E1 +2.852578000E3,4.602936757E1 +2.852832000E3,4.594357604E1 +2.853123000E3,4.132874601E1 +2.853424000E3,3.891402985E1 +2.853676000E3,3.210431116E1 +2.854034000E3,4.148325967E1 +2.854336000E3,4.539420759E1 +2.854629000E3,3.813311910E1 +2.854857000E3,3.204826654E1 +2.855103000E3,4.042825728E1 +2.855348000E3,3.781799437E1 +2.855635000E3,3.485312778E1 +2.855901000E3,3.176423587E1 +2.856194000E3,3.286644404E1 +2.856446000E3,3.601261840E1 +2.856741000E3,3.056779431E1 +2.856990000E3,2.876904683E1 +2.857247000E3,2.336161379E1 +2.857525000E3,5.319777865E1 +2.857765000E3,4.924210585E1 +2.858030000E3,4.161506516E1 +2.858287000E3,3.471025819E1 +2.858592000E3,2.954431085E1 +2.858878000E3,3.551304021E1 +2.859146000E3,4.056554733E1 +2.859438000E3,4.716772205E1 +2.859749000E3,4.728214145E1 +2.860112000E3,4.333221553E1 +2.860355000E3,3.970290127E1 +2.860627000E3,4.675070996E1 +2.860922000E3,5.292655838E1 +2.861168000E3,5.560528000E1 +2.861448000E3,5.155203362E1 +2.861684000E3,4.854372910E1 +2.861981000E3,5.166225265E1 +2.862226000E3,5.239758268E1 +2.862536000E3,4.880079262E1 +2.862801000E3,5.860724491E1 +2.863049000E3,5.487085904E1 +2.863366000E3,4.477307493E1 +2.863622000E3,4.809216762E1 +2.863923000E3,4.128779228E1 +2.864180000E3,4.039902121E1 +2.864473000E3,3.763315716E1 +2.864758000E3,3.836830031E1 +2.865072000E3,3.562217561E1 +2.865375000E3,4.251016575E1 +2.865631000E3,3.959478231E1 +2.865894000E3,3.906491963E1 +2.866161000E3,3.169567809E1 +2.866409000E3,4.180907280E1 +2.866769000E3,5.009501966E1 +2.867095000E3,4.485052737E1 +2.867377000E3,4.543449817E1 +2.867634000E3,4.558186247E1 +2.867912000E3,3.310648260E1 +2.868160000E3,3.368680580E1 +2.868403000E3,3.259924908E1 +2.868652000E3,3.468868920E1 +2.868945000E3,3.811295096E1 +2.869214000E3,3.680532391E1 +2.869523000E3,4.480088276E1 +2.869800000E3,4.321197878E1 +2.870149000E3,3.870196995E1 +2.870426000E3,4.501549736E1 +2.870686000E3,3.869046251E1 +2.870998000E3,5.116138397E1 +2.871259000E3,4.565952095E1 +2.871545000E3,4.044036430E1 +2.871835000E3,3.776423584E1 +2.872146000E3,4.283314388E1 +2.872428000E3,4.822150076E1 +2.872666000E3,4.609488251E1 +2.872966000E3,4.199842198E1 +2.873258000E3,4.199452970E1 +2.873557000E3,4.094164548E1 +2.873868000E3,3.451929232E1 +2.874146000E3,3.725700957E1 +2.874378000E3,3.820854143E1 +2.874632000E3,3.261818797E1 +2.874949000E3,4.229639001E1 +2.875219000E3,4.314663650E1 +2.875496000E3,4.030472415E1 +2.875772000E3,3.740362597E1 +2.876082000E3,3.770704299E1 +2.876334000E3,4.016521241E1 +2.876600000E3,4.155568881E1 +2.876855000E3,3.864643482E1 +2.877164000E3,3.358142820E1 +2.877430000E3,2.988882280E1 +2.877698000E3,4.233125756E1 +2.877954000E3,4.245249096E1 +2.878273000E3,3.619646633E1 +2.878541000E3,3.199868066E1 +2.878801000E3,4.546979293E1 +2.879062000E3,5.523869784E1 +2.879342000E3,5.605267417E1 +2.879584000E3,5.653411529E1 +2.879928000E3,4.626290707E1 +2.880202000E3,3.540012043E1 +2.880447000E3,3.620700172E1 +2.880691000E3,2.922036878E1 +2.880938000E3,3.659816429E1 +2.881251000E3,4.145147882E1 +2.881527000E3,3.894444603E1 +2.881851000E3,3.741315407E1 +2.882112000E3,4.094962867E1 +2.882373000E3,4.333353585E1 +2.882625000E3,4.557565518E1 +2.882879000E3,4.308396997E1 +2.883145000E3,4.097722416E1 +2.883416000E3,3.927850137E1 +2.883669000E3,3.223716221E1 +2.883941000E3,3.004581442E1 +2.884209000E3,3.765685263E1 +2.884466000E3,3.878810543E1 +2.884718000E3,2.988953340E1 +2.884967000E3,3.346960294E1 +2.885221000E3,3.799647420E1 +2.885537000E3,3.116842616E1 +2.885796000E3,3.671552801E1 +2.886084000E3,4.459898232E1 +2.886404000E3,4.708370738E1 +2.886677000E3,5.036035843E1 +2.886979000E3,4.113513329E1 +2.887251000E3,3.503458684E1 +2.887528000E3,3.462090732E1 +2.887785000E3,4.001717165E1 +2.888037000E3,3.538133603E1 +2.888296000E3,3.662805649E1 +2.888547000E3,4.263542947E1 +2.888820000E3,4.431895872E1 +2.889079000E3,4.300413574E1 +2.889340000E3,4.173317530E1 +2.889582000E3,4.288275032E1 +2.889932000E3,3.944773526E1 +2.890197000E3,3.214266541E1 +2.890503000E3,3.060588708E1 +2.890777000E3,3.296322494E1 +2.891017000E3,3.394251803E1 +2.891320000E3,3.208741950E1 +2.891570000E3,3.441770910E1 +2.891849000E3,3.368561294E1 +2.892087000E3,3.475967611E1 +2.892337000E3,3.740055420E1 +2.892635000E3,3.542355307E1 +2.892981000E3,3.105741683E1 +2.893247000E3,3.245614761E1 +2.893513000E3,4.142391644E1 +2.893779000E3,4.497461971E1 +2.894029000E3,4.653178389E1 +2.894282000E3,4.703576342E1 +2.894540000E3,4.751169602E1 +2.894805000E3,4.201422178E1 +2.895062000E3,4.370261317E1 +2.895310000E3,4.660906406E1 +2.895596000E3,4.633159753E1 +2.895865000E3,4.381116332E1 +2.896155000E3,4.368523912E1 +2.896405000E3,4.747051902E1 +2.896651000E3,4.222577444E1 +2.896905000E3,4.572633660E1 +2.897184000E3,5.203776089E1 +2.897450000E3,5.010843836E1 +2.897744000E3,4.910530865E1 +2.898022000E3,4.664859833E1 +2.898308000E3,3.985336775E1 +2.898564000E3,3.683403533E1 +2.898812000E3,4.284820320E1 +2.899091000E3,4.286036404E1 +2.899396000E3,5.224070654E1 +2.899753000E3,4.568546748E1 +2.900018000E3,5.586433220E1 +2.900278000E3,4.514230837E1 +2.900559000E3,3.853422420E1 +2.900865000E3,3.299777990E1 +2.901139000E3,3.594596453E1 +2.901415000E3,2.896001699E1 +2.901650000E3,2.556794162E1 +2.901937000E3,2.525773120E1 +2.902206000E3,3.138035436E1 +2.902457000E3,3.725731802E1 +2.902816000E3,3.600302530E1 +2.903095000E3,3.476106384E1 +2.903340000E3,3.325569458E1 +2.903600000E3,3.217545002E1 +2.903858000E3,2.994578711E1 +2.904108000E3,3.277965280E1 +2.904372000E3,4.013450695E1 +2.904627000E3,3.103730297E1 +2.904913000E3,4.187502355E1 +2.905174000E3,3.591627686E1 +2.905452000E3,3.067277870E1 +2.905743000E3,2.813597523E1 +2.906004000E3,2.760542404E1 +2.906321000E3,3.327793113E1 +2.906579000E3,4.111963776E1 +2.906835000E3,4.309802180E1 +2.907113000E3,2.749088524E1 +2.907354000E3,2.269523459E1 +2.907657000E3,3.631225289E1 +2.907901000E3,4.146405590E1 +2.908156000E3,3.785670954E1 +2.908403000E3,4.498664409E1 +2.908675000E3,4.174614917E1 +2.908932000E3,4.632262643E1 +2.909189000E3,3.569839459E1 +2.909522000E3,4.635385444E1 +2.909802000E3,4.337190367E1 +2.910035000E3,3.796960383E1 +2.910287000E3,4.151951269E1 +2.910538000E3,4.245940710E1 +2.910795000E3,4.268454470E1 +2.911045000E3,4.280139929E1 +2.911335000E3,3.861780445E1 +2.911584000E3,4.028221299E1 +2.911885000E3,3.934408626E1 +2.912139000E3,3.091195323E1 +2.912386000E3,2.709027446E1 +2.912622000E3,2.721294148E1 +2.912915000E3,3.169063213E1 +2.913196000E3,3.663766462E1 +2.913461000E3,3.582442105E1 +2.913744000E3,2.742218375E1 +2.913990000E3,3.432349666E1 +2.914297000E3,4.586386591E1 +2.914575000E3,4.813383402E1 +2.914888000E3,5.016441505E1 +2.915190000E3,4.132593749E1 +2.915481000E3,3.992883324E1 +2.915827000E3,3.713218942E1 +2.916087000E3,4.862036940E1 +2.916351000E3,4.985137398E1 +2.916622000E3,5.126616609E1 +2.916881000E3,4.180876614E1 +2.917157000E3,4.057128207E1 +2.917418000E3,3.994520906E1 +2.917681000E3,3.719846748E1 +2.917964000E3,4.377214072E1 +2.918264000E3,4.081140664E1 +2.918518000E3,4.149712935E1 +2.918784000E3,3.965801174E1 +2.919127000E3,3.499332266E1 +2.919415000E3,3.454976163E1 +2.919745000E3,3.801205804E1 +2.920003000E3,4.266330834E1 +2.920244000E3,3.704497233E1 +2.920548000E3,3.869800412E1 +2.920840000E3,3.880762608E1 +2.921081000E3,3.967826348E1 +2.921325000E3,4.387098551E1 +2.921573000E3,3.795523909E1 +2.921876000E3,3.884773193E1 +2.922122000E3,3.949919351E1 +2.922481000E3,3.549368996E1 +2.922774000E3,5.176437750E1 +2.923023000E3,4.673969779E1 +2.923306000E3,3.729614967E1 +2.923573000E3,3.557242251E1 +2.923880000E3,5.351861504E1 +2.924155000E3,5.486661937E1 +2.924424000E3,5.693150230E1 +2.924735000E3,4.225245527E1 +2.924988000E3,4.082554353E1 +2.925252000E3,3.807826598E1 +2.925573000E3,3.587807510E1 +2.925935000E3,4.290242494E1 +2.926237000E3,3.960438869E1 +2.926496000E3,3.732088357E1 +2.926751000E3,3.216321546E1 +2.926991000E3,3.001846960E1 +2.927295000E3,3.634949804E1 +2.927531000E3,3.127042454E1 +2.927829000E3,3.158500209E1 +2.928073000E3,2.815993792E1 +2.928370000E3,2.793102526E1 +2.928613000E3,2.468786691E1 +2.928943000E3,2.345175993E1 +2.929256000E3,2.908559709E1 +2.929497000E3,2.580950455E1 +2.929819000E3,2.871707976E1 +2.930114000E3,2.977851279E1 +2.930374000E3,4.220437998E1 +2.930636000E3,3.122152770E1 +2.930945000E3,3.902308439E1 +2.931227000E3,3.648582434E1 +2.931474000E3,4.774090674E1 +2.931717000E3,4.487624905E1 +2.931963000E3,4.620728265E1 +2.932258000E3,4.011602626E1 +2.932585000E3,4.011469989E1 +2.932871000E3,4.531107143E1 +2.933117000E3,4.299757904E1 +2.933366000E3,4.255561828E1 +2.933662000E3,4.180851663E1 +2.933899000E3,3.354142728E1 +2.934139000E3,4.061788576E1 +2.934435000E3,3.190428864E1 +2.934678000E3,3.136545948E1 +2.934975000E3,3.172564299E1 +2.935227000E3,3.538616066E1 +2.935577000E3,3.227761247E1 +2.935826000E3,3.587578035E1 +2.936132000E3,2.830690319E1 +2.936391000E3,2.983281120E1 +2.936636000E3,3.198482114E1 +2.936936000E3,4.529436692E1 +2.937191000E3,3.904726622E1 +2.937498000E3,4.546792713E1 +2.937790000E3,4.178984789E1 +2.938055000E3,3.901507008E1 +2.938332000E3,3.530528642E1 +2.938634000E3,3.766035689E1 +2.939060000E3,5.595745424E1 +2.939318000E3,5.800941557E1 +2.939576000E3,5.061871726E1 +2.939836000E3,6.017617924E1 +2.940124000E3,5.889680612E1 +2.940380000E3,5.553527141E1 +2.940631000E3,4.982924060E1 +2.940889000E3,5.386899946E1 +2.941183000E3,5.511436312E1 +2.941477000E3,5.474658637E1 +2.941736000E3,5.669903896E1 +2.941985000E3,5.352207307E1 +2.942302000E3,5.089540084E1 +2.942556000E3,5.163069551E1 +2.942811000E3,4.946827448E1 +2.943144000E3,4.292332560E1 +2.943386000E3,4.769421745E1 +2.943625000E3,4.741300910E1 +2.943936000E3,4.918473310E1 +2.944182000E3,4.358732286E1 +2.944456000E3,4.338106770E1 +2.944722000E3,5.302068646E1 +2.945006000E3,4.800501219E1 +2.945370000E3,4.445792428E1 +2.945619000E3,3.768400599E1 +2.945867000E3,3.829540629E1 +2.946159000E3,3.766669508E1 +2.946411000E3,4.016839261E1 +2.946712000E3,4.041724233E1 +2.947009000E3,4.012217251E1 +2.947323000E3,3.568820570E1 +2.947568000E3,3.690839296E1 +2.947818000E3,4.813137033E1 +2.948084000E3,5.325274156E1 +2.948341000E3,5.892514859E1 +2.948730000E3,4.314585435E1 +2.948980000E3,4.049194134E1 +2.949257000E3,4.522053034E1 +2.949515000E3,4.263261915E1 +2.949826000E3,5.159034358E1 +2.950126000E3,4.094053529E1 +2.950370000E3,4.144504964E1 +2.950613000E3,4.584689520E1 +2.950933000E3,3.986259871E1 +2.951211000E3,5.835616238E1 +2.951492000E3,4.865922153E1 +2.951773000E3,4.646806952E1 +2.952049000E3,5.501145746E1 +2.952349000E3,5.395560549E1 +2.952606000E3,5.094776028E1 +2.952859000E3,5.987933082E1 +2.953123000E3,5.553863596E1 +2.953365000E3,6.056471643E1 +2.953626000E3,5.705129962E1 +2.953881000E3,5.620457969E1 +2.954143000E3,4.633104773E1 +2.954403000E3,4.542785483E1 +2.954666000E3,4.357363747E1 +2.954925000E3,5.905995366E1 +2.955255000E3,5.325307727E1 +2.955500000E3,6.730464031E1 +2.955795000E3,6.362836082E1 +2.956030000E3,6.057596417E1 +2.956332000E3,6.813918985E1 +2.956573000E3,6.403678903E1 +2.956871000E3,6.230635205E1 +2.957135000E3,6.746671531E1 +2.957401000E3,6.427695804E1 +2.957673000E3,5.206458526E1 +2.957933000E3,5.261265827E1 +2.958182000E3,4.877242183E1 +2.958552000E3,6.627461000E1 +2.958808000E3,6.741673158E1 +2.959062000E3,6.597614354E1 +2.959304000E3,6.540552328E1 +2.959551000E3,6.528289091E1 +2.959864000E3,5.830061674E1 +2.960121000E3,5.985112812E1 +2.960428000E3,6.090568068E1 +2.960720000E3,6.807446854E1 +2.960985000E3,6.930722199E1 +2.961226000E3,6.386100217E1 +2.961579000E3,6.028451745E1 +2.961849000E3,6.477814340E1 +2.962132000E3,6.837046944E1 +2.962373000E3,6.647209363E1 +2.962660000E3,6.694202205E1 +2.962967000E3,6.648756695E1 +2.963231000E3,6.482625001E1 +2.963518000E3,7.095796361E1 +2.963775000E3,6.454417662E1 +2.964062000E3,6.533171518E1 +2.964339000E3,6.471819922E1 +2.964629000E3,5.679367810E1 +2.964962000E3,5.573913208E1 +2.965271000E3,6.251351498E1 +2.965502000E3,6.071427502E1 +2.965745000E3,6.212696498E1 +2.966049000E3,5.601947939E1 +2.966292000E3,5.543203731E1 +2.966544000E3,5.440105204E1 +2.966807000E3,5.169354717E1 +2.967114000E3,5.098574914E1 +2.967354000E3,4.778774527E1 +2.967603000E3,5.527018336E1 +2.967874000E3,5.069142516E1 +2.968220000E3,5.540354927E1 +2.968470000E3,5.388190573E1 +2.968725000E3,5.648678631E1 +2.968994000E3,6.195289166E1 +2.969259000E3,5.924073062E1 +2.969526000E3,5.554902217E1 +2.969797000E3,6.073047002E1 +2.970049000E3,5.750580172E1 +2.970375000E3,6.205206850E1 +2.970685000E3,5.892672487E1 +2.971008000E3,5.603539479E1 +2.971306000E3,5.380141597E1 +2.971609000E3,6.182570937E1 +2.971860000E3,5.755792598E1 +2.972120000E3,7.094637252E1 +2.972374000E3,7.220321333E1 +2.972688000E3,6.074903881E1 +2.972946000E3,5.132390204E1 +2.973203000E3,5.555176793E1 +2.973482000E3,5.082163203E1 +2.973746000E3,6.668022761E1 +2.974024000E3,6.951681150E1 +2.974257000E3,6.170353739E1 +2.974507000E3,6.191784425E1 +2.974845000E3,6.249884739E1 +2.975129000E3,6.139715498E1 +2.975385000E3,5.458109058E1 +2.975684000E3,6.285593412E1 +2.975925000E3,6.801445640E1 +2.976223000E3,6.762358149E1 +2.976454000E3,6.007212586E1 +2.976698000E3,6.176376027E1 +2.976998000E3,5.489351528E1 +2.977244000E3,6.419682450E1 +2.977544000E3,6.335879864E1 +2.977813000E3,6.346249627E1 +2.978071000E3,6.122721977E1 +2.978303000E3,6.269343112E1 +2.978564000E3,5.719207644E1 +2.978818000E3,6.209398004E1 +2.979085000E3,6.570545323E1 +2.979335000E3,6.443300698E1 +2.979582000E3,6.395479352E1 +2.979841000E3,6.285971298E1 +2.980091000E3,6.452411240E1 +2.980337000E3,6.648403811E1 +2.980638000E3,6.146510082E1 +2.980898000E3,6.178604521E1 +2.981191000E3,5.906416732E1 +2.981418000E3,6.139524316E1 +2.981668000E3,6.754933795E1 +2.981958000E3,5.804633278E1 +2.982221000E3,5.544285219E1 +2.982480000E3,5.252390700E1 +2.982741000E3,5.442974682E1 +2.983009000E3,5.886662164E1 +2.983270000E3,6.039421332E1 +2.983532000E3,5.984826425E1 +2.983780000E3,6.038747451E1 +2.984020000E3,5.836799318E1 +2.984266000E3,6.011457774E1 +2.984654000E3,6.086793857E1 +2.984928000E3,6.104684994E1 +2.985246000E3,6.081085188E1 +2.985504000E3,6.338602633E1 +2.985771000E3,6.224702903E1 +2.986040000E3,5.771788346E1 +2.986351000E3,5.832375863E1 +2.986657000E3,6.179808645E1 +2.986893000E3,6.074067698E1 +2.987188000E3,5.763905723E1 +2.987459000E3,5.411975455E1 +2.987698000E3,5.609082395E1 +2.988020000E3,5.838775534E1 +2.988261000E3,5.545934196E1 +2.988564000E3,5.818253650E1 +2.988803000E3,5.693365858E1 +2.989084000E3,5.747877452E1 +2.989394000E3,6.108654481E1 +2.989646000E3,6.109521888E1 +2.989952000E3,5.453216708E1 +2.990235000E3,5.325056065E1 +2.990530000E3,5.226229633E1 +2.990796000E3,5.566734434E1 +2.991153000E3,5.983192138E1 +2.991409000E3,5.902282422E1 +2.991712000E3,6.553978750E1 +2.991962000E3,6.323109208E1 +2.992210000E3,6.430699278E1 +2.992477000E3,6.439502996E1 +2.992769000E3,5.882379749E1 +2.993024000E3,7.076998945E1 +2.993317000E3,6.710088514E1 +2.993554000E3,6.332152683E1 +2.993846000E3,6.013348006E1 +2.994081000E3,6.492156154E1 +2.994361000E3,6.054189638E1 +2.994671000E3,5.878685209E1 +2.994911000E3,6.363988355E1 +2.995218000E3,6.266127576E1 +2.995513000E3,6.231860976E1 +2.995750000E3,6.770663238E1 +2.996056000E3,6.411706706E1 +2.996346000E3,6.607053327E1 +2.996592000E3,6.231837938E1 +2.996884000E3,6.235557028E1 +2.997130000E3,6.626149607E1 +2.997386000E3,6.897456616E1 +2.997721000E3,6.896820400E1 +2.997984000E3,5.708709076E1 +2.998260000E3,5.465136518E1 +2.998532000E3,6.136090841E1 +2.998792000E3,6.427324700E1 +2.999047000E3,5.922924051E1 +2.999308000E3,5.964993479E1 +2.999619000E3,5.937495043E1 +2.999910000E3,6.345321013E1 +3.000196000E3,6.558504608E1 +3.000438000E3,6.566442906E1 +3.000721000E3,6.596782674E1 +3.001048000E3,6.493210478E1 +3.001299000E3,6.778071085E1 +3.001554000E3,5.810398860E1 +3.001834000E3,6.461256831E1 +3.002084000E3,5.637103240E1 +3.002332000E3,6.244497501E1 +3.002633000E3,5.749162406E1 +3.002980000E3,6.268391580E1 +3.003246000E3,6.122193913E1 +3.003572000E3,6.467185898E1 +3.003877000E3,6.239318427E1 +3.004266000E3,6.708558966E1 +3.004573000E3,6.293492178E1 +3.004871000E3,6.169168265E1 +3.005129000E3,5.944912128E1 +3.005404000E3,5.631628075E1 +3.005704000E3,6.080609102E1 +3.005964000E3,6.424565764E1 +3.006250000E3,6.447415860E1 +3.006481000E3,6.606824769E1 +3.006756000E3,6.337387069E1 +3.007004000E3,6.294291386E1 +3.007286000E3,6.430484746E1 +3.007612000E3,6.091848593E1 +3.007867000E3,6.343837854E1 +3.008169000E3,5.978702761E1 +3.008432000E3,5.965865421E1 +3.008675000E3,5.540362761E1 +3.008918000E3,5.443572137E1 +3.009202000E3,6.171389250E1 +3.009446000E3,6.487192568E1 +3.009738000E3,5.958143908E1 +3.009983000E3,6.189834719E1 +3.010232000E3,5.752745917E1 +3.010489000E3,6.339873723E1 +3.010846000E3,6.127984243E1 +3.011144000E3,6.065194767E1 +3.011387000E3,6.253646864E1 +3.011646000E3,6.179753794E1 +3.011925000E3,6.231808205E1 +3.012153000E3,6.101579519E1 +3.012442000E3,5.876502421E1 +3.012737000E3,5.809905793E1 +3.013015000E3,5.695141293E1 +3.013301000E3,5.973139928E1 +3.013577000E3,6.007240820E1 +3.013839000E3,7.136453087E1 +3.014063000E3,7.173892024E1 +3.014315000E3,6.885425335E1 +3.014559000E3,6.110376355E1 +3.014808000E3,6.296723224E1 +3.015075000E3,6.021879294E1 +3.015327000E3,6.012811489E1 +3.015577000E3,6.282613373E1 +3.015850000E3,6.884549735E1 +3.016115000E3,6.913958233E1 +3.016397000E3,6.608409337E1 +3.016648000E3,6.437779633E1 +3.016896000E3,6.412579817E1 +3.017253000E3,6.408373459E1 +3.017500000E3,6.487828946E1 +3.017743000E3,6.281964754E1 +3.018003000E3,6.153697843E1 +3.018258000E3,6.503307442E1 +3.018512000E3,6.508021131E1 +3.018791000E3,5.910017780E1 +3.019028000E3,5.757469918E1 +3.019325000E3,5.762978005E1 +3.019573000E3,5.366611226E1 +3.019824000E3,5.708763529E1 +3.020086000E3,5.488621207E1 +3.020437000E3,5.826722905E1 +3.020695000E3,5.951373108E1 +3.020968000E3,6.130623452E1 +3.021217000E3,6.025771329E1 +3.021490000E3,5.280103891E1 +3.021737000E3,6.123009986E1 +3.022037000E3,6.404958762E1 +3.022328000E3,6.469373641E1 +3.022599000E3,6.283727611E1 +3.022840000E3,6.248869497E1 +3.023123000E3,6.767270030E1 +3.023363000E3,6.436289402E1 +3.023706000E3,6.007121161E1 +3.023992000E3,6.067397941E1 +3.024255000E3,6.005092329E1 +3.024513000E3,6.146229561E1 +3.024803000E3,6.214304530E1 +3.025060000E3,6.107977952E1 +3.025317000E3,6.268440106E1 +3.025560000E3,5.744048190E1 +3.025823000E3,6.080102592E1 +3.026092000E3,6.359394744E1 +3.026384000E3,6.219604097E1 +3.026685000E3,6.296073955E1 +3.026912000E3,6.243574530E1 +3.027190000E3,6.540426031E1 +3.027426000E3,7.038009166E1 +3.027684000E3,7.133800291E1 +3.027943000E3,6.847497315E1 +3.028214000E3,7.049817235E1 +3.028486000E3,6.555713643E1 +3.028748000E3,6.762942526E1 +3.029008000E3,6.780082040E1 +3.029264000E3,6.644646205E1 +3.029533000E3,7.066497540E1 +3.029800000E3,6.700863421E1 +3.030174000E3,6.263767412E1 +3.030459000E3,5.937975562E1 +3.030697000E3,6.189133018E1 +3.030958000E3,6.479748496E1 +3.031218000E3,6.070421224E1 +3.031488000E3,5.567295684E1 +3.031754000E3,6.162939414E1 +3.032026000E3,6.462556380E1 +3.032293000E3,6.300561819E1 +3.032553000E3,6.320528504E1 +3.032852000E3,6.205536878E1 +3.033102000E3,7.179598993E1 +3.033490000E3,6.907149718E1 +3.033750000E3,6.110443799E1 +3.034008000E3,5.743025653E1 +3.034257000E3,5.714646515E1 +3.034505000E3,6.193634179E1 +3.034762000E3,6.511685208E1 +3.035034000E3,6.647840023E1 +3.035277000E3,6.637602928E1 +3.035534000E3,6.208743290E1 +3.035873000E3,6.158502662E1 +3.036127000E3,6.138896352E1 +3.036392000E3,5.988342330E1 +3.036737000E3,5.834272912E1 +3.036998000E3,6.504474047E1 +3.037253000E3,5.801637483E1 +3.037569000E3,6.208073459E1 +3.037831000E3,6.555093843E1 +3.038084000E3,6.686352963E1 +3.038356000E3,6.398821865E1 +3.038638000E3,6.053541888E1 +3.038927000E3,5.509282051E1 +3.039228000E3,6.213274835E1 +3.039473000E3,6.149105368E1 +3.039745000E3,6.097957376E1 +3.040056000E3,6.313145073E1 +3.040300000E3,6.749857058E1 +3.040549000E3,6.031561589E1 +3.040852000E3,5.991948868E1 +3.041110000E3,6.228314687E1 +3.041358000E3,6.281493679E1 +3.041621000E3,6.031124820E1 +3.041926000E3,6.035954468E1 +3.042177000E3,6.230627050E1 +3.042448000E3,5.381586458E1 +3.042741000E3,6.032611045E1 +3.043026000E3,5.796046788E1 +3.043304000E3,6.286261594E1 +3.043605000E3,6.188894569E1 +3.043848000E3,6.196336480E1 +3.044091000E3,6.506902622E1 +3.044345000E3,6.547913264E1 +3.044589000E3,6.701681380E1 +3.044849000E3,6.398074775E1 +3.045095000E3,6.102355933E1 +3.045350000E3,6.546609328E1 +3.045598000E3,6.626677347E1 +3.045845000E3,6.212155235E1 +3.046098000E3,6.475032486E1 +3.046433000E3,6.469401418E1 +3.046698000E3,6.335899573E1 +3.046970000E3,5.799459631E1 +3.047267000E3,5.777430210E1 +3.047527000E3,6.228044606E1 +3.047785000E3,5.521572273E1 +3.048044000E3,5.312506195E1 +3.048316000E3,5.877400717E1 +3.048592000E3,6.239358597E1 +3.048842000E3,6.019315355E1 +3.049164000E3,5.944515023E1 +3.049418000E3,6.571719967E1 +3.049752000E3,5.906077781E1 +3.050005000E3,6.269931225E1 +3.050242000E3,6.329267329E1 +3.050532000E3,6.094692628E1 +3.050797000E3,6.137608503E1 +3.051055000E3,6.019630450E1 +3.051299000E3,5.959056092E1 +3.051551000E3,6.195653625E1 +3.051802000E3,5.997942431E1 +3.052044000E3,6.071988649E1 +3.052348000E3,6.146559433E1 +3.052605000E3,6.320542640E1 +3.052903000E3,6.301314639E1 +3.053133000E3,6.491013087E1 +3.053386000E3,5.374424399E1 +3.053632000E3,5.337930652E1 +3.053925000E3,5.830420592E1 +3.054167000E3,5.827724976E1 +3.054414000E3,5.413373264E1 +3.054713000E3,5.438904566E1 +3.054952000E3,5.478972153E1 +3.055245000E3,6.026125791E1 +3.055545000E3,6.377000784E1 +3.055792000E3,6.273059884E1 +3.056116000E3,6.164463909E1 +3.056426000E3,6.310484015E1 +3.056665000E3,6.191865333E1 +3.056974000E3,6.044005004E1 +3.057225000E3,5.723160495E1 +3.057532000E3,6.482171923E1 +3.057799000E3,6.373654624E1 +3.058097000E3,6.579319958E1 +3.058333000E3,6.717439766E1 +3.058632000E3,6.244987186E1 +3.058874000E3,5.911459441E1 +3.059119000E3,6.246625617E1 +3.059514000E3,6.061929027E1 +3.059786000E3,6.141894857E1 +3.060044000E3,6.531006136E1 +3.060311000E3,6.745420282E1 +3.060564000E3,6.305040539E1 +3.060809000E3,6.250223063E1 +3.061063000E3,5.984183740E1 +3.061365000E3,6.201500936E1 +3.061610000E3,6.171968159E1 +3.061853000E3,5.636652524E1 +3.062137000E3,5.937450988E1 +3.062405000E3,5.424162977E1 +3.062724000E3,5.577353705E1 +3.062968000E3,6.265208868E1 +3.063225000E3,6.754657095E1 +3.063470000E3,6.259832443E1 +3.063731000E3,5.846954403E1 +3.063975000E3,5.735719718E1 +3.064220000E3,5.614657426E1 +3.064460000E3,5.493678071E1 +3.064711000E3,6.175770153E1 +3.064961000E3,6.502893325E1 +3.065266000E3,6.372557142E1 +3.065562000E3,6.165604672E1 +3.065921000E3,6.202265536E1 +3.066181000E3,5.894659424E1 +3.066427000E3,5.516515279E1 +3.066669000E3,5.227763917E1 +3.066911000E3,5.331294555E1 +3.067166000E3,5.535383534E1 +3.067460000E3,5.490405248E1 +3.067721000E3,5.927902794E1 +3.068030000E3,6.001209348E1 +3.068288000E3,5.925707402E1 +3.068553000E3,6.116769528E1 +3.068848000E3,5.907075037E1 +3.069160000E3,5.402384091E1 +3.069467000E3,6.078433547E1 +3.069706000E3,6.064305090E1 +3.069991000E3,6.099922555E1 +3.070247000E3,6.081028216E1 +3.070500000E3,6.857342881E1 +3.070795000E3,6.830085683E1 +3.071035000E3,7.092929468E1 +3.071334000E3,6.670654987E1 +3.071580000E3,6.198358410E1 +3.071845000E3,6.029427505E1 +3.072216000E3,6.271100503E1 +3.072476000E3,6.548403896E1 +3.072709000E3,6.655140024E1 +3.072958000E3,6.872933885E1 +3.073221000E3,6.840034062E1 +3.073524000E3,6.189262665E1 +3.073801000E3,6.315516618E1 +3.074029000E3,6.431689152E1 +3.074282000E3,7.008635825E1 +3.074531000E3,6.529488526E1 +3.074781000E3,5.362885622E1 +3.075079000E3,6.174622467E1 +3.075321000E3,6.106059522E1 +3.075569000E3,6.727558853E1 +3.075841000E3,6.068477373E1 +3.076089000E3,6.224550385E1 +3.076358000E3,6.049387981E1 +3.076618000E3,5.554290122E1 +3.076868000E3,5.232623619E1 +3.077136000E3,5.715980006E1 +3.077434000E3,6.112308912E1 +3.077738000E3,5.964598426E1 +3.077997000E3,5.774993649E1 +3.078301000E3,5.930552673E1 +3.078632000E3,6.204668908E1 +3.078903000E3,6.135182684E1 +3.079234000E3,6.010535577E1 +3.079530000E3,5.612975229E1 +3.079846000E3,5.894789721E1 +3.080130000E3,6.424282153E1 +3.080395000E3,6.696093787E1 +3.080696000E3,5.929656512E1 +3.080931000E3,5.577162965E1 +3.081168000E3,6.096321541E1 +3.081415000E3,6.147204445E1 +3.081708000E3,6.518353223E1 +3.082066000E3,6.565001970E1 +3.082347000E3,6.152216198E1 +3.082591000E3,6.232488129E1 +3.082884000E3,6.450829181E1 +3.083131000E3,6.727741702E1 +3.083373000E3,6.596172391E1 +3.083615000E3,6.588974420E1 +3.083909000E3,6.215985231E1 +3.084146000E3,5.417797447E1 +3.084444000E3,5.776086644E1 +3.084736000E3,6.145598006E1 +3.085067000E3,6.705675690E1 +3.085353000E3,7.032609091E1 +3.085621000E3,6.942809802E1 +3.085926000E3,6.673219093E1 +3.086170000E3,5.874483463E1 +3.086457000E3,6.163530440E1 +3.086730000E3,5.863155738E1 +3.086955000E3,5.804604701E1 +3.087247000E3,7.202263239E1 +3.087542000E3,6.907595594E1 +3.087796000E3,7.104760035E1 +3.088063000E3,6.060670654E1 +3.088371000E3,6.409876160E1 +3.088642000E3,6.504332531E1 +3.088891000E3,6.050178076E1 +3.089172000E3,5.988548041E1 +3.089448000E3,6.419311516E1 +3.089715000E3,6.072209436E1 +3.089992000E3,6.148544930E1 +3.090256000E3,6.667985585E1 +3.090551000E3,6.360479893E1 +3.090829000E3,6.675347002E1 +3.091081000E3,6.585951744E1 +3.091337000E3,5.998998345E1 +3.091582000E3,7.213751425E1 +3.091973000E3,7.002319175E1 +3.092225000E3,6.554991346E1 +3.092495000E3,5.438962824E1 +3.092757000E3,5.806427109E1 +3.093010000E3,5.611571138E1 +3.093290000E3,5.427298566E1 +3.093553000E3,6.332676554E1 +3.093801000E3,6.191283999E1 +3.094088000E3,6.222056485E1 +3.094383000E3,6.679558422E1 +3.094660000E3,6.396349695E1 +3.094980000E3,6.335657582E1 +3.095321000E3,6.368682935E1 +3.095574000E3,6.239728447E1 +3.095829000E3,6.560913932E1 +3.096083000E3,6.288470186E1 +3.096327000E3,6.063834800E1 +3.096611000E3,5.698542980E1 +3.096866000E3,6.214573666E1 +3.097125000E3,6.108001307E1 +3.097382000E3,6.098898235E1 +3.097639000E3,6.935379750E1 +3.097944000E3,6.076333803E1 +3.098235000E3,5.747447310E1 +3.098595000E3,5.896750888E1 +3.098845000E3,6.428262322E1 +3.099146000E3,6.073561603E1 +3.099435000E3,5.610862272E1 +3.099679000E3,5.808393750E1 +3.099971000E3,6.306244141E1 +3.100214000E3,6.493760740E1 +3.100511000E3,5.964091377E1 +3.100753000E3,5.949423253E1 +3.100995000E3,6.324186751E1 +3.101237000E3,6.294719776E1 +3.101481000E3,6.618420708E1 +3.101805000E3,6.039251647E1 +3.102105000E3,6.883376735E1 +3.102388000E3,6.215701199E1 +3.102635000E3,6.251944475E1 +3.102926000E3,6.387718652E1 +3.103175000E3,6.262879933E1 +3.103469000E3,6.094246273E1 +3.103717000E3,5.780442917E1 +3.104010000E3,5.805018882E1 +3.104245000E3,6.073911170E1 +3.104537000E3,5.820155990E1 +3.104880000E3,5.691870737E1 +3.105139000E3,5.609187778E1 +3.105418000E3,5.368790307E1 +3.105673000E3,5.733127796E1 +3.105933000E3,5.834617124E1 +3.106196000E3,5.665251568E1 +3.106447000E3,5.839993992E1 +3.106707000E3,5.765825797E1 +3.106989000E3,6.346036236E1 +3.107241000E3,6.088974139E1 +3.107536000E3,5.623231578E1 +3.107836000E3,5.905990454E1 +3.108208000E3,5.913546091E1 +3.108462000E3,5.921957697E1 +3.108732000E3,6.403378055E1 +3.109010000E3,6.829473891E1 +3.109237000E3,6.866131452E1 +3.109530000E3,5.759864554E1 +3.109769000E3,5.216447932E1 +3.110067000E3,5.887622687E1 +3.110356000E3,5.912152229E1 +3.110621000E3,6.343631440E1 +3.110862000E3,6.110189356E1 +3.111105000E3,5.925249209E1 +3.111441000E3,5.583559168E1 +3.111708000E3,6.397874973E1 +3.112049000E3,5.864630935E1 +3.112314000E3,5.876030726E1 +3.112620000E3,5.558460131E1 +3.112980000E3,5.336927775E1 +3.113232000E3,5.351895645E1 +3.113515000E3,4.932805120E1 +3.113763000E3,6.323075662E1 +3.114057000E3,6.375401647E1 +3.114318000E3,6.430798012E1 +3.114651000E3,6.745313705E1 +3.114909000E3,6.370697195E1 +3.115204000E3,6.719832935E1 +3.115517000E3,6.353352979E1 +3.115816000E3,6.421660294E1 +3.116074000E3,6.666449428E1 +3.116372000E3,6.209745804E1 +3.116612000E3,5.853853683E1 +3.116911000E3,6.153177442E1 +3.117151000E3,6.465277685E1 +3.117439000E3,6.054074617E1 +3.117698000E3,5.762180605E1 +3.118029000E3,5.904912096E1 +3.118292000E3,6.054469105E1 +3.118547000E3,6.570885599E1 +3.118854000E3,6.686989978E1 +3.119103000E3,6.506823644E1 +3.119359000E3,5.780133308E1 +3.119610000E3,5.983707630E1 +3.119896000E3,6.102798325E1 +3.120167000E3,5.940835035E1 +3.120446000E3,6.154008300E1 +3.120717000E3,6.031178539E1 +3.120969000E3,6.222997321E1 +3.121291000E3,6.676268308E1 +3.121532000E3,6.244629438E1 +3.121778000E3,6.014719673E1 +3.122038000E3,6.351124664E1 +3.122317000E3,5.786579019E1 +3.122607000E3,5.704033688E1 +3.122864000E3,5.941823253E1 +3.123160000E3,6.366298469E1 +3.123429000E3,6.545330590E1 +3.123678000E3,6.206143443E1 +3.123932000E3,6.250040348E1 +3.124250000E3,6.193784317E1 +3.124582000E3,6.679802083E1 +3.124888000E3,6.239911876E1 +3.125141000E3,6.227743005E1 +3.125407000E3,5.930162190E1 +3.125655000E3,5.692493613E1 +3.125897000E3,6.100851678E1 +3.126155000E3,6.356932883E1 +3.126470000E3,6.583742229E1 +3.126735000E3,6.828531785E1 +3.127049000E3,6.744954014E1 +3.127349000E3,6.892448306E1 +3.127620000E3,6.312172108E1 +3.127885000E3,6.549450530E1 +3.128150000E3,6.274114245E1 +3.128434000E3,5.987443555E1 +3.128694000E3,5.754092402E1 +3.128967000E3,6.140483336E1 +3.129224000E3,5.793735580E1 +3.129483000E3,5.640840091E1 +3.129735000E3,7.068460790E1 +3.130042000E3,6.831622259E1 +3.130308000E3,6.661131327E1 +3.130563000E3,7.032191033E1 +3.130897000E3,6.429012882E1 +3.131166000E3,6.890779868E1 +3.131427000E3,6.812897599E1 +3.131726000E3,6.440583932E1 +3.132039000E3,6.371305855E1 +3.132310000E3,6.071113649E1 +3.132582000E3,6.356904702E1 +3.132834000E3,6.335195410E1 +3.133078000E3,5.922748305E1 +3.133357000E3,5.790290676E1 +3.133581000E3,6.067150466E1 +3.133827000E3,5.936438225E1 +3.134075000E3,5.651144024E1 +3.134312000E3,5.707156804E1 +3.134564000E3,6.256442790E1 +3.134822000E3,5.680653319E1 +3.135099000E3,6.386946987E1 +3.135341000E3,6.183817556E1 +3.135588000E3,5.791592939E1 +3.135843000E3,5.415500200E1 +3.136159000E3,5.828393923E1 +3.136402000E3,5.584102234E1 +3.136645000E3,5.843965538E1 +3.136922000E3,6.032067675E1 +3.137231000E3,6.082235855E1 +3.137514000E3,6.216335250E1 +3.137763000E3,6.576895249E1 +3.138052000E3,5.935628673E1 +3.138348000E3,5.697436057E1 +3.138590000E3,6.713499986E1 +3.138833000E3,5.996032355E1 +3.139071000E3,6.566814076E1 +3.139366000E3,6.469315039E1 +3.139607000E3,6.414816039E1 +3.139901000E3,6.238348704E1 +3.140144000E3,5.975478602E1 +3.140477000E3,5.617333113E1 +3.140789000E3,6.140881460E1 +3.141038000E3,5.760925345E1 +3.141323000E3,5.813474075E1 +3.141616000E3,6.190304914E1 +3.141899000E3,5.853813516E1 +3.142123000E3,6.019478920E1 +3.142387000E3,5.824830032E1 +3.142639000E3,6.031650371E1 +3.142898000E3,5.874305926E1 +3.143211000E3,6.365997735E1 +3.143459000E3,6.182267241E1 +3.143814000E3,6.153305629E1 +3.144076000E3,6.040235966E1 +3.144345000E3,6.279707978E1 +3.144591000E3,6.261441373E1 +3.144837000E3,5.722591859E1 +3.145082000E3,5.791919274E1 +3.145387000E3,6.142016587E1 +3.145678000E3,5.996802308E1 +3.145994000E3,5.761245992E1 +3.146269000E3,5.915341256E1 +3.146531000E3,5.679987844E1 +3.146814000E3,6.228452904E1 +3.147163000E3,6.038592359E1 +3.147440000E3,6.662509726E1 +3.147705000E3,5.864713600E1 +3.147961000E3,6.383827006E1 +3.148228000E3,6.445939632E1 +3.148543000E3,6.206597752E1 +3.148800000E3,6.082056407E1 +3.149046000E3,5.872798480E1 +3.149340000E3,5.792404132E1 +3.149585000E3,5.917409009E1 +3.149845000E3,5.619795947E1 +3.150164000E3,6.447379623E1 +3.150501000E3,6.336546747E1 +3.150798000E3,6.022605646E1 +3.151059000E3,5.837139298E1 +3.151360000E3,5.721847889E1 +3.151614000E3,7.085699981E1 +3.151908000E3,6.031233854E1 +3.152206000E3,6.170839562E1 +3.152452000E3,6.336115962E1 +3.152697000E3,6.732286145E1 +3.152943000E3,6.043278366E1 +3.153235000E3,5.822950572E1 +3.153537000E3,6.155234216E1 +3.153813000E3,5.671966020E1 +3.154078000E3,5.613348243E1 +3.154333000E3,5.384913785E1 +3.154580000E3,5.739778382E1 +3.154869000E3,5.617144196E1 +3.155103000E3,5.699346940E1 +3.155351000E3,6.356393037E1 +3.155653000E3,5.483372318E1 +3.155949000E3,5.806865262E1 +3.156195000E3,5.725879338E1 +3.156459000E3,5.708272088E1 +3.156776000E3,5.736330762E1 +3.157028000E3,5.620178265E1 +3.157280000E3,5.557503250E1 +3.157521000E3,6.379766868E1 +3.157864000E3,6.175462639E1 +3.158113000E3,5.970375584E1 +3.158365000E3,5.482220327E1 +3.158625000E3,6.094938302E1 +3.158872000E3,6.189076140E1 +3.159128000E3,6.365906369E1 +3.159385000E3,6.365252593E1 +3.159699000E3,6.421784723E1 +3.160039000E3,5.952347777E1 +3.160337000E3,6.582170091E1 +3.160643000E3,6.400621400E1 +3.160905000E3,5.982923632E1 +3.161162000E3,5.912958512E1 +3.161449000E3,5.744161350E1 +3.161722000E3,6.208953034E1 +3.161984000E3,6.743490019E1 +3.162228000E3,5.893358785E1 +3.162506000E3,6.260442429E1 +3.162777000E3,6.054589944E1 +3.163072000E3,5.958101250E1 +3.163380000E3,5.756716970E1 +3.163623000E3,5.897741262E1 +3.163916000E3,5.199350029E1 +3.164173000E3,5.607364633E1 +3.164444000E3,6.846587546E1 +3.164756000E3,5.833953537E1 +3.165011000E3,6.699601536E1 +3.165255000E3,6.024033326E1 +3.165530000E3,5.636786936E1 +3.165825000E3,5.917346905E1 +3.166077000E3,5.684739711E1 +3.166343000E3,5.441684119E1 +3.166607000E3,5.708423030E1 +3.166871000E3,5.726160097E1 +3.167212000E3,5.795085756E1 +3.167513000E3,5.359033433E1 +3.167800000E3,5.481028168E1 +3.168051000E3,5.771426852E1 +3.168321000E3,5.720698183E1 +3.168574000E3,6.029484328E1 +3.168847000E3,6.594273179E1 +3.169141000E3,5.814954146E1 +3.169451000E3,5.741553332E1 +3.169717000E3,5.474949866E1 +3.170064000E3,5.858087337E1 +3.170388000E3,5.901398101E1 +3.170689000E3,6.599046976E1 +3.170942000E3,6.777823262E1 +3.171184000E3,6.339704259E1 +3.171437000E3,5.678237753E1 +3.171694000E3,6.067324941E1 +3.171975000E3,6.337570500E1 +3.172215000E3,6.060254578E1 +3.172509000E3,6.511602204E1 +3.172792000E3,6.491523998E1 +3.173086000E3,6.236437487E1 +3.173442000E3,6.132637014E1 +3.173725000E3,5.575670785E1 +3.173997000E3,5.450541115E1 +3.174243000E3,5.816223835E1 +3.174516000E3,5.991084873E1 +3.174771000E3,5.959264792E1 +3.175022000E3,6.001504494E1 +3.175268000E3,5.794233494E1 +3.175510000E3,5.875384007E1 +3.175752000E3,6.582497874E1 +3.176001000E3,6.385809704E1 +3.176310000E3,6.575292490E1 +3.176700000E3,6.328122862E1 +3.176947000E3,6.160374932E1 +3.177205000E3,6.233605233E1 +3.177480000E3,5.746120395E1 +3.177733000E3,5.491961653E1 +3.178002000E3,5.346590976E1 +3.178308000E3,4.910433719E1 +3.178598000E3,5.548086035E1 +3.178876000E3,5.834728013E1 +3.179129000E3,5.722852381E1 +3.179407000E3,5.371032540E1 +3.179686000E3,5.375017527E1 +3.180066000E3,5.741446005E1 +3.180325000E3,5.595914402E1 +3.180624000E3,5.784989425E1 +3.180867000E3,5.818330240E1 +3.181112000E3,5.651638359E1 +3.181407000E3,5.400925398E1 +3.181645000E3,5.134681346E1 +3.181939000E3,5.540645654E1 +3.182189000E3,5.603348674E1 +3.182489000E3,5.612576596E1 +3.182726000E3,5.412821683E1 +3.183072000E3,5.364995955E1 +3.183373000E3,5.685067634E1 +3.183631000E3,5.292396423E1 +3.183913000E3,5.037305724E1 +3.184139000E3,5.458652507E1 +3.184386000E3,5.336216390E1 +3.184625000E3,5.355204553E1 +3.184861000E3,5.798216811E1 +3.185170000E3,5.037998219E1 +3.185412000E3,5.253320042E1 +3.185661000E3,5.864558083E1 +3.185944000E3,5.568855775E1 +3.186307000E3,6.065674046E1 +3.186594000E3,5.486017232E1 +3.186846000E3,5.354898396E1 +3.187128000E3,5.606629368E1 +3.187373000E3,5.887335608E1 +3.187646000E3,5.932986575E1 +3.187996000E3,5.618144782E1 +3.188254000E3,5.279151533E1 +3.188538000E3,5.980979660E1 +3.188819000E3,5.959008295E1 +3.189058000E3,5.757326838E1 +3.189324000E3,5.814251633E1 +3.189681000E3,6.715432083E1 +3.189929000E3,5.659786492E1 +3.190183000E3,6.813933576E1 +3.190493000E3,6.423896785E1 +3.190762000E3,6.115594562E1 +3.191063000E3,6.466877383E1 +3.191295000E3,6.400176112E1 +3.191543000E3,6.061189134E1 +3.191813000E3,6.334758009E1 +3.192062000E3,6.268892194E1 +3.192384000E3,6.255649695E1 +3.192688000E3,6.440152216E1 +3.193095000E3,6.083356984E1 +3.193368000E3,5.702207605E1 +3.193630000E3,6.129862703E1 +3.193931000E3,6.511359313E1 +3.194208000E3,6.424113032E1 +3.194458000E3,6.277957456E1 +3.194751000E3,6.067489213E1 +3.195007000E3,6.044409325E1 +3.195267000E3,5.902485869E1 +3.195523000E3,5.940450479E1 +3.195769000E3,5.629667180E1 +3.196103000E3,5.773687048E1 +3.196362000E3,5.275604571E1 +3.196676000E3,5.321996877E1 +3.196932000E3,4.952922772E1 +3.197191000E3,5.411849627E1 +3.197458000E3,5.575997519E1 +3.197718000E3,5.782402980E1 +3.197982000E3,6.092045522E1 +3.198228000E3,6.504329265E1 +3.198474000E3,5.972589974E1 +3.198713000E3,5.816644178E1 +3.198958000E3,6.190720604E1 +3.199249000E3,6.026051864E1 +3.199481000E3,6.064697026E1 +3.199744000E3,5.715218400E1 +3.200003000E3,5.509276249E1 +3.200281000E3,5.035485844E1 +3.200607000E3,5.745123346E1 +3.200874000E3,5.874041571E1 +3.201157000E3,6.540993071E1 +3.201407000E3,6.592699897E1 +3.201730000E3,5.826687879E1 +3.201982000E3,5.966898415E1 +3.202228000E3,5.928022084E1 +3.202546000E3,5.492659239E1 +3.202811000E3,5.843773228E1 +3.203091000E3,5.615478265E1 +3.203365000E3,5.378265559E1 +3.203611000E3,5.724493737E1 +3.203868000E3,5.517839982E1 +3.204137000E3,5.166422622E1 +3.204439000E3,5.966362579E1 +3.204692000E3,5.837831137E1 +3.204952000E3,5.873474045E1 +3.205216000E3,6.025432286E1 +3.205460000E3,5.709891269E1 +3.205710000E3,5.946766606E1 +3.206062000E3,5.575402329E1 +3.206367000E3,5.597615265E1 +3.206620000E3,5.417374311E1 +3.206869000E3,5.785505194E1 +3.207152000E3,5.973144393E1 +3.207405000E3,5.494944595E1 +3.207684000E3,5.859159641E1 +3.207982000E3,5.909726368E1 +3.208273000E3,6.221796591E1 +3.208541000E3,6.248597715E1 +3.208787000E3,6.143432195E1 +3.209043000E3,5.767415987E1 +3.209357000E3,6.087003136E1 +3.209636000E3,5.816954701E1 +3.209920000E3,5.644196424E1 +3.210232000E3,5.726504339E1 +3.210505000E3,5.384487818E1 +3.210769000E3,6.092886049E1 +3.211044000E3,5.910647270E1 +3.211306000E3,5.855040927E1 +3.211560000E3,6.886189365E1 +3.211803000E3,6.193548709E1 +3.212075000E3,5.895667088E1 +3.212320000E3,5.613734816E1 +3.212669000E3,6.365011223E1 +3.212934000E3,6.616065582E1 +3.213195000E3,4.911720228E1 +3.213460000E3,5.429539168E1 +3.213713000E3,5.374714305E1 +3.213991000E3,5.505703483E1 +3.214231000E3,5.216197587E1 +3.214486000E3,6.958974683E1 +3.214787000E3,6.410499727E1 +3.215047000E3,5.795707420E1 +3.215308000E3,6.210641451E1 +3.215581000E3,5.724864620E1 +3.215943000E3,5.588397230E1 +3.216221000E3,5.281586206E1 +3.216477000E3,5.616597876E1 +3.216735000E3,7.016181845E1 +3.216992000E3,7.008234703E1 +3.217238000E3,6.883905131E1 +3.217482000E3,6.039428517E1 +3.217722000E3,6.572225500E1 +3.217971000E3,6.862082655E1 +3.218221000E3,6.392739620E1 +3.218481000E3,6.757625304E1 +3.218798000E3,6.468895575E1 +3.219137000E3,5.941097234E1 +3.219443000E3,6.639331379E1 +3.219715000E3,6.512137194E1 +3.219985000E3,6.137345425E1 +3.220244000E3,6.566739727E1 +3.220494000E3,5.684090738E1 +3.220758000E3,4.865476042E1 +3.221022000E3,5.571447424E1 +3.221324000E3,5.050200483E1 +3.221601000E3,5.262698993E1 +3.221858000E3,5.385544431E1 +3.222185000E3,5.793526709E1 +3.222548000E3,5.957102097E1 +3.222796000E3,5.026005559E1 +3.223068000E3,5.164515600E1 +3.223344000E3,6.575405490E1 +3.223598000E3,6.925353270E1 +3.223876000E3,5.909751181E1 +3.224152000E3,5.561020058E1 +3.224416000E3,5.257890354E1 +3.224662000E3,5.262446891E1 +3.224954000E3,5.599583257E1 +3.225202000E3,5.286294623E1 +3.225483000E3,5.049109924E1 +3.225830000E3,6.154494550E1 +3.226096000E3,5.433068412E1 +3.226350000E3,5.256602683E1 +3.226652000E3,5.283535150E1 +3.226989000E3,5.811852242E1 +3.227251000E3,5.842389129E1 +3.227505000E3,5.524471208E1 +3.227782000E3,6.207780754E1 +3.228053000E3,6.165130850E1 +3.228302000E3,5.818085510E1 +3.228557000E3,5.646455559E1 +3.228823000E3,5.903487317E1 +3.229201000E3,5.460588060E1 +3.229471000E3,5.534537953E1 +3.229720000E3,5.492103159E1 +3.229976000E3,5.474982433E1 +3.230276000E3,6.311967749E1 +3.230531000E3,6.144237593E1 +3.230845000E3,6.204497775E1 +3.231123000E3,6.192920277E1 +3.231382000E3,6.726064707E1 +3.231675000E3,5.951322284E1 +3.231970000E3,5.620608761E1 +3.232324000E3,5.597726308E1 +3.232555000E3,5.737347613E1 +3.232845000E3,5.515502781E1 +3.233172000E3,5.977186730E1 +3.233435000E3,6.131606000E1 +3.233742000E3,5.610580070E1 +3.234000000E3,5.978218601E1 +3.234272000E3,6.319970701E1 +3.234581000E3,5.608562509E1 +3.234862000E3,6.169746582E1 +3.235159000E3,6.105762669E1 +3.235416000E3,5.369522011E1 +3.235667000E3,6.580487109E1 +3.235906000E3,5.797374086E1 +3.236200000E3,6.981267784E1 +3.236445000E3,6.229515865E1 +3.236695000E3,6.858181426E1 +3.236976000E3,5.740787399E1 +3.237218000E3,5.455964692E1 +3.237457000E3,7.204325578E1 +3.237720000E3,6.142914611E1 +3.238013000E3,5.768794211E1 +3.238280000E3,5.732491467E1 +3.238580000E3,5.793744264E1 +3.238882000E3,5.626325471E1 +3.239149000E3,5.661724856E1 +3.239424000E3,6.969605219E1 +3.239726000E3,6.482965407E1 +3.239976000E3,5.947270091E1 +3.240278000E3,5.913422796E1 +3.240576000E3,5.630232959E1 +3.240877000E3,5.956366293E1 +3.241128000E3,6.177688280E1 +3.241391000E3,5.851951662E1 +3.241664000E3,5.959787493E1 +3.241944000E3,5.765523372E1 +3.242310000E3,5.961443978E1 +3.242602000E3,5.811194000E1 +3.242910000E3,5.765320401E1 +3.243188000E3,6.631148602E1 +3.243420000E3,6.916377121E1 +3.243673000E3,6.435158828E1 +3.243925000E3,6.486926440E1 +3.244170000E3,5.506348984E1 +3.244475000E3,6.702899260E1 +3.244772000E3,6.244838658E1 +3.245003000E3,6.057959417E1 +3.245328000E3,6.103137126E1 +3.245581000E3,5.723671640E1 +3.245864000E3,5.125127512E1 +3.246123000E3,5.748187394E1 +3.246395000E3,6.148075018E1 +3.246669000E3,6.226010686E1 +3.246940000E3,5.273573389E1 +3.247233000E3,5.462141876E1 +3.247482000E3,5.946160846E1 +3.247728000E3,6.623014757E1 +3.248041000E3,5.823129903E1 +3.248289000E3,5.689561843E1 +3.248538000E3,5.851473913E1 +3.248910000E3,5.778207994E1 +3.249187000E3,6.109108533E1 +3.249462000E3,6.368024039E1 +3.249726000E3,6.527718864E1 +3.249983000E3,5.855658653E1 +3.250281000E3,5.718860903E1 +3.250534000E3,5.946900486E1 +3.250785000E3,5.688578668E1 +3.251033000E3,5.444863300E1 +3.251316000E3,5.885016251E1 +3.251570000E3,6.172482417E1 +3.251833000E3,6.833245599E1 +3.252200000E3,6.656973280E1 +3.252441000E3,6.663686281E1 +3.252721000E3,6.380106140E1 +3.252991000E3,6.113258977E1 +3.253242000E3,7.270243700E1 +3.253457000E3,7.442711013E1 +3.253706000E3,7.097589831E1 +3.253999000E3,5.740107596E1 +3.254237000E3,5.407351324E1 +3.254532000E3,6.235563554E1 +3.254777000E3,6.148535018E1 +3.255085000E3,6.767985005E1 +3.255346000E3,5.893302101E1 +3.255628000E3,5.834235484E1 +3.255897000E3,6.152524318E1 +3.256146000E3,6.124474706E1 +3.256419000E3,5.928557591E1 +3.256642000E3,5.798678480E1 +3.256921000E3,5.800318977E1 +3.257149000E3,5.813391626E1 +3.257392000E3,6.200496820E1 +3.257645000E3,6.268368020E1 +3.257945000E3,6.783162804E1 +3.258296000E3,7.343015115E1 +3.258556000E3,7.258165803E1 +3.258805000E3,6.753466802E1 +3.259117000E3,7.134403593E1 +3.259421000E3,6.813653179E1 +3.259673000E3,6.449045726E1 +3.259939000E3,7.144310958E1 +3.260188000E3,6.619195201E1 +3.260438000E3,6.990193438E1 +3.260692000E3,6.791067771E1 +3.260944000E3,7.014061601E1 +3.261191000E3,7.271368424E1 +3.261532000E3,6.889323528E1 +3.261794000E3,6.087932672E1 +3.262047000E3,6.139975131E1 +3.262322000E3,6.684035582E1 +3.262586000E3,6.977079140E1 +3.262861000E3,6.711211223E1 +3.263137000E3,6.891542739E1 +3.263415000E3,6.450575202E1 +3.263671000E3,6.375083447E1 +3.263946000E3,6.525419018E1 +3.264250000E3,6.323969714E1 +3.264517000E3,7.351653517E1 +3.264813000E3,7.240916805E1 +3.265107000E3,6.991986455E1 +3.265349000E3,6.767718353E1 +3.265598000E3,7.020318016E1 +3.265847000E3,6.593396207E1 +3.266149000E3,6.776886494E1 +3.266400000E3,6.796917668E1 +3.266653000E3,6.234495715E1 +3.266897000E3,6.492303298E1 +3.267153000E3,6.551968402E1 +3.267398000E3,6.154456079E1 +3.267647000E3,6.087933145E1 +3.267896000E3,6.053677169E1 +3.268248000E3,6.893351216E1 +3.268513000E3,6.695525456E1 +3.268817000E3,6.263553940E1 +3.269070000E3,5.965971741E1 +3.269315000E3,6.136430702E1 +3.269582000E3,7.398506568E1 +3.269828000E3,7.145137487E1 +3.270128000E3,7.238266470E1 +3.270371000E3,7.289527120E1 +3.270623000E3,7.428636164E1 +3.270931000E3,7.248535741E1 +3.271185000E3,7.399445608E1 +3.271518000E3,7.355251323E1 +3.271795000E3,7.296660624E1 +3.272081000E3,7.131368475E1 +3.272358000E3,7.068792091E1 +3.272581000E3,6.623699177E1 +3.272835000E3,5.258987188E1 +3.273093000E3,6.044165509E1 +3.273337000E3,6.879817511E1 +3.273635000E3,6.970693453E1 +3.273931000E3,7.169623139E1 +3.274180000E3,7.112396098E1 +3.274428000E3,7.190035192E1 +3.274761000E3,7.089393329E1 +3.275038000E3,6.995869622E1 +3.275323000E3,6.900781199E1 +3.275569000E3,6.766263448E1 +3.275860000E3,6.881814388E1 +3.276116000E3,6.821596427E1 +3.276370000E3,6.896702672E1 +3.276649000E3,6.827119542E1 +3.276914000E3,6.795818984E1 +3.277171000E3,7.025945887E1 +3.277482000E3,6.685661764E1 +3.277741000E3,6.810082518E1 +3.278078000E3,6.902136690E1 +3.278358000E3,6.568611650E1 +3.278604000E3,7.123802039E1 +3.278848000E3,6.300940961E1 +3.279144000E3,6.292057856E1 +3.279382000E3,6.654167697E1 +3.279622000E3,6.808014942E1 +3.279917000E3,6.902808966E1 +3.280160000E3,6.685153426E1 +3.280471000E3,6.435621527E1 +3.280770000E3,6.765080490E1 +3.281059000E3,6.808248309E1 +3.281352000E3,6.477485011E1 +3.281602000E3,5.628454157E1 +3.281867000E3,5.800927668E1 +3.282130000E3,7.131716325E1 +3.282389000E3,7.355208108E1 +3.282663000E3,7.108584109E1 +3.282932000E3,5.710440961E1 +3.283191000E3,5.329699257E1 +3.283451000E3,5.003319724E1 +3.283709000E3,5.081704645E1 +3.284003000E3,5.075383483E1 +3.284259000E3,5.431712692E1 +3.284628000E3,5.277582101E1 +3.284917000E3,6.061307876E1 +3.285214000E3,6.168657926E1 +3.285472000E3,5.854988033E1 +3.285744000E3,4.913527641E1 +3.285999000E3,5.563664353E1 +3.286250000E3,5.841488419E1 +3.286517000E3,6.437604518E1 +3.286777000E3,6.124264602E1 +3.287035000E3,5.886049633E1 +3.287300000E3,6.196549102E1 +3.287630000E3,6.776239267E1 +3.287951000E3,6.702605133E1 +3.288259000E3,5.376695086E1 +3.288499000E3,5.095339550E1 +3.288807000E3,5.078317550E1 +3.289117000E3,5.659564827E1 +3.289411000E3,7.136818215E1 +3.289684000E3,6.629708396E1 +3.289982000E3,7.133804213E1 +3.290271000E3,6.994811010E1 +3.290544000E3,6.532422657E1 +3.290800000E3,6.451013008E1 +3.291132000E3,6.261305598E1 +3.291418000E3,6.696223022E1 +3.291676000E3,4.827412656E1 +3.291930000E3,4.724575587E1 +3.292202000E3,4.846609938E1 +3.292501000E3,5.276700476E1 +3.292822000E3,5.071547801E1 +3.293065000E3,4.944777186E1 +3.293349000E3,4.466809801E1 +3.293583000E3,4.432750067E1 +3.293832000E3,5.165471909E1 +3.294078000E3,4.606912616E1 +3.294427000E3,4.826074528E1 +3.294712000E3,4.434240888E1 +3.294985000E3,4.684583968E1 +3.295286000E3,5.104787864E1 +3.295548000E3,4.839146586E1 +3.295807000E3,5.479537456E1 +3.296066000E3,5.055213000E1 +3.296324000E3,3.933656037E1 +3.296585000E3,4.513652817E1 +3.296840000E3,4.805617654E1 +3.297099000E3,4.453428427E1 +3.297354000E3,5.205427791E1 +3.297705000E3,5.001223291E1 +3.297948000E3,5.342697607E1 +3.298200000E3,5.619467550E1 +3.298461000E3,5.565459347E1 +3.298738000E3,5.819577446E1 +3.298988000E3,5.077826383E1 +3.299236000E3,5.142261821E1 +3.299478000E3,5.610754709E1 +3.299775000E3,5.248015066E1 +3.300011000E3,4.742520943E1 +3.300325000E3,5.519481303E1 +3.300626000E3,4.628613419E1 +3.300959000E3,4.430731849E1 +3.301224000E3,4.380193782E1 +3.301473000E3,4.690647127E1 +3.301746000E3,4.845294386E1 +3.302057000E3,4.912389116E1 +3.302307000E3,5.155191791E1 +3.302563000E3,5.240902416E1 +3.302820000E3,4.677306339E1 +3.303083000E3,5.037145513E1 +3.303327000E3,4.506752152E1 +3.303573000E3,4.920686196E1 +3.303857000E3,4.935493485E1 +3.304189000E3,4.415801479E1 +3.304459000E3,4.423531181E1 +3.304768000E3,3.874162391E1 +3.305030000E3,4.189958295E1 +3.305333000E3,4.005870516E1 +3.305579000E3,5.072183491E1 +3.305843000E3,4.113754863E1 +3.306140000E3,5.548273149E1 +3.306383000E3,5.383424402E1 +3.306628000E3,5.205779319E1 +3.306877000E3,4.592085607E1 +3.307206000E3,5.092451979E1 +3.307449000E3,4.823039740E1 +3.307720000E3,5.026090042E1 +3.307982000E3,5.794901070E1 +3.308198000E3,5.239372011E1 +3.308502000E3,5.024517162E1 +3.308742000E3,4.253471720E1 +3.309044000E3,4.105523794E1 +3.309340000E3,3.028117703E1 +3.309596000E3,2.809150222E1 +3.309864000E3,2.626060468E1 +3.310135000E3,5.055452447E1 +3.310501000E3,7.199271156E1 +3.310777000E3,7.172468430E1 +3.311045000E3,7.282926204E1 +3.311313000E3,7.145580608E1 +3.311562000E3,7.218798353E1 +3.311867000E3,7.081603642E1 +3.312107000E3,7.122522782E1 +3.312348000E3,7.013128466E1 +3.312672000E3,7.138239962E1 +3.312976000E3,7.589001323E1 +3.313216000E3,6.988466628E1 +3.313506000E3,6.521999768E1 +3.313853000E3,5.781158269E1 +3.314129000E3,5.698768013E1 +3.314381000E3,5.954050680E1 +3.314636000E3,5.529467486E1 +3.314903000E3,6.884377149E1 +3.315163000E3,7.293133775E1 +3.315448000E3,7.186875504E1 +3.315697000E3,6.942752239E1 +3.315995000E3,6.899930460E1 +3.316247000E3,6.333687203E1 +3.316557000E3,6.820286469E1 +3.316856000E3,7.371764624E1 +3.317124000E3,7.475494405E1 +3.317411000E3,7.135849387E1 +3.317718000E3,5.726081152E1 +3.317965000E3,5.650406291E1 +3.318233000E3,4.901561410E1 +3.318490000E3,6.881993797E1 +3.318742000E3,7.251465406E1 +3.319010000E3,6.395213402E1 +3.319311000E3,7.197127027E1 +3.319615000E3,6.948849738E1 +3.319862000E3,6.664503435E1 +3.320187000E3,6.933008182E1 +3.320443000E3,6.121514242E1 +3.320753000E3,7.017439611E1 +3.321063000E3,7.393277725E1 +3.321329000E3,7.045535337E1 +3.321643000E3,6.985180357E1 +3.321896000E3,7.158196073E1 +3.322168000E3,6.999348148E1 +3.322483000E3,6.872091406E1 +3.322823000E3,6.386396976E1 +3.323116000E3,6.891641311E1 +3.323355000E3,6.790436633E1 +3.323733000E3,6.190629476E1 +3.324010000E3,6.307072034E1 +3.324306000E3,6.459812141E1 +3.324591000E3,6.928529051E1 +3.324846000E3,6.953301961E1 +3.325158000E3,6.946121501E1 +3.325471000E3,6.177266257E1 +3.325739000E3,6.057146439E1 +3.326000000E3,6.021658005E1 +3.326269000E3,6.588088303E1 +3.326536000E3,6.594068529E1 +3.326797000E3,5.957632846E1 +3.327117000E3,5.830018402E1 +3.327415000E3,5.952820917E1 +3.327678000E3,5.996997483E1 +3.327928000E3,6.374276040E1 +3.328204000E3,6.484785648E1 +3.328504000E3,6.253699213E1 +3.328743000E3,6.495848159E1 +3.329001000E3,6.390198219E1 +3.329317000E3,6.107203426E1 +3.329613000E3,6.678300135E1 +3.329901000E3,6.048531373E1 +3.330164000E3,6.806621622E1 +3.330501000E3,6.592361883E1 +3.330795000E3,6.652249790E1 +3.331059000E3,6.079261624E1 +3.331342000E3,7.055285274E1 +3.331620000E3,6.885169705E1 +3.331870000E3,6.676175072E1 +3.332125000E3,6.653456857E1 +3.332410000E3,6.539948315E1 +3.332658000E3,6.741723145E1 +3.332915000E3,5.982571500E1 +3.333236000E3,7.234399288E1 +3.333559000E3,7.555637810E1 +3.333801000E3,7.132946849E1 +3.334053000E3,7.012473325E1 +3.334345000E3,7.083313400E1 +3.334658000E3,6.159204912E1 +3.334951000E3,5.416652771E1 +3.335187000E3,5.331536045E1 +3.335488000E3,5.516853140E1 +3.335780000E3,5.755380245E1 +3.336028000E3,6.034949591E1 +3.336335000E3,5.933559907E1 +3.336577000E3,6.200660494E1 +3.336975000E3,6.752581884E1 +3.337230000E3,6.552308109E1 +3.337509000E3,6.043162012E1 +3.337804000E3,6.346167875E1 +3.338097000E3,5.762665769E1 +3.338354000E3,6.046465836E1 +3.338657000E3,5.841838084E1 +3.338937000E3,5.426549819E1 +3.339182000E3,5.312925890E1 +3.339425000E3,5.904532039E1 +3.339705000E3,5.548841740E1 +3.339970000E3,6.467955136E1 +3.340311000E3,6.518540616E1 +3.340567000E3,6.130157495E1 +3.340843000E3,4.234380604E1 +3.341102000E3,3.685811557E1 +3.341367000E3,5.229521155E1 +3.341631000E3,4.577123603E1 +3.341913000E3,5.522804687E1 +3.342191000E3,7.219670231E1 +3.342497000E3,6.138541536E1 +3.342739000E3,5.883033505E1 +3.342994000E3,5.692990468E1 +3.343272000E3,5.784770175E1 +3.343584000E3,5.851150722E1 +3.343847000E3,7.127137910E1 +3.344137000E3,7.004437015E1 +3.344432000E3,6.719880262E1 +3.344677000E3,6.266500726E1 +3.344966000E3,6.662051616E1 +3.345209000E3,6.259160849E1 +3.345462000E3,6.521765959E1 +3.345762000E3,6.373477950E1 +3.346056000E3,5.976833176E1 +3.346294000E3,5.557373783E1 +3.346597000E3,5.486821605E1 +3.346842000E3,4.854970484E1 +3.347096000E3,6.338774242E1 +3.347415000E3,6.646909489E1 +3.347712000E3,6.370164725E1 +3.347950000E3,6.577012972E1 +3.348257000E3,6.536203326E1 +3.348509000E3,5.777033235E1 +3.348799000E3,6.942121279E1 +3.349070000E3,6.552465655E1 +3.349329000E3,6.400867966E1 +3.349583000E3,5.955829212E1 +3.349911000E3,6.233007104E1 +3.350154000E3,7.360271557E1 +3.350432000E3,7.402471070E1 +3.350716000E3,7.225249055E1 +3.350966000E3,6.654334459E1 +3.351200000E3,6.590758849E1 +3.351507000E3,6.143698167E1 +3.351805000E3,7.197722167E1 +3.352079000E3,6.778594348E1 +3.352307000E3,5.712392879E1 +3.352566000E3,5.659236121E1 +3.352870000E3,5.352359430E1 +3.353127000E3,5.362353429E1 +3.353366000E3,5.964860406E1 +3.353638000E3,7.164177428E1 +3.353890000E3,6.730234717E1 +3.354173000E3,5.336089185E1 +3.354435000E3,4.770751864E1 +3.354689000E3,4.833001031E1 +3.354956000E3,4.464972004E1 +3.355220000E3,6.809720152E1 +3.355493000E3,7.032616040E1 +3.355723000E3,7.137092547E1 +3.356052000E3,7.106236065E1 +3.356287000E3,7.302101107E1 +3.356599000E3,6.868512076E1 +3.356867000E3,7.134905494E1 +3.357133000E3,7.032184319E1 +3.357463000E3,6.484515560E1 +3.357753000E3,5.949029357E1 +3.358081000E3,6.553405106E1 +3.358385000E3,5.460622041E1 +3.358634000E3,4.798111952E1 +3.358902000E3,5.356090224E1 +3.359186000E3,5.091993104E1 +3.359516000E3,5.980463665E1 +3.359805000E3,5.623340998E1 +3.360124000E3,4.885342740E1 +3.360404000E3,4.536632542E1 +3.360660000E3,5.726647509E1 +3.360941000E3,6.266477325E1 +3.361245000E3,5.265432523E1 +3.361521000E3,4.746518361E1 +3.361777000E3,5.341135388E1 +3.362038000E3,5.094337921E1 +3.362292000E3,5.832737886E1 +3.362616000E3,5.247742127E1 +3.363049000E3,5.123926483E1 +3.363313000E3,4.482127206E1 +3.363600000E3,4.813050338E1 +3.363848000E3,5.751744958E1 +3.364157000E3,5.045245795E1 diff --git a/04_loesungen/01_processing/alg15_xydiagramm_loesung_a1/alg15_xydiagramm_loesung_a1.pde b/04_loesungen/01_processing/alg15_xydiagramm_loesung_a1/alg15_xydiagramm_loesung_a1.pde new file mode 100644 index 0000000..3f33c6c --- /dev/null +++ b/04_loesungen/01_processing/alg15_xydiagramm_loesung_a1/alg15_xydiagramm_loesung_a1.pde @@ -0,0 +1,114 @@ +/** + * XY-Diagramm für Schalldruckpegel, Zahlen werden aus CSV-Datei gelesen. + * + * @author Schaller + * @version 29.11.18 + */ + + // Liste mit allen Werten +double[] x_werte; +double[] y_werte; + +// Hilfsvariablen für die Suche +int akt_maximum=-1; // aktuell groesstes Element +int akt=-1; // aktuell untersuchtes Element +int verzoegerung=0; // Geschwindigkeit der Ausführung + +// Schriften +PFont kleineSchrift; +PFont grosseSchrift; + + +public void setup() { + // Zeichenfläche erzeugen + size(1000, 700); + background(0); + // Schriften laden + kleineSchrift = loadFont("KleineSchrift.vlw"); + grosseSchrift = loadFont("GrosseSchrift.vlw"); + + // CSV-Datei laden und anzeigen + ladeTabelle("Amplitudes.csv"); + stroke(250,250,200); + zeichneBalken(); +} + + //<>// +public void ladeTabelle(String name) { + // Tabelle aus CSV-Datei laden //<>// + Table csv = loadTable(name, "header,csv"); + + if (csv != null && csv.getColumnCount()==2) { + + // Initialisiere Arrays, in die alle Zeilen der Tabelle passen + x_werte = new double[csv.getRowCount()]; + y_werte = new double[csv.getRowCount()]; + + // Fülle die Arrays mit Werten aus der Tabelle + for (int i = 0; i < x_werte.length; i++) { + // Lies Wert aus der i. Zeile und der Spalte "Punkte" bzw. "Name" + x_werte[i] = csv.getDouble(i, "Time (s)"); + y_werte[i] = csv.getDouble(i, "Sound pressure level (dB)"); + } + } +} + +public void zeichneBalken() { + + + // Überschrift + fill(255,255,255); + textFont(grosseSchrift); + text("Lärmpegel", 2, 20); + textFont(kleineSchrift); + + // Alle Einträge darstellen + if (x_werte != null) { + for (int i = 0; i< x_werte.length; i++) { + + fill(20,25,165); + // aktuelle Elemente farblich hervorheben + if (i == akt) { + fill(140,230,20); + } + if (i == akt_maximum) { + fill(230,60,140); + } + + // Balkendiagramm zeichnen + int breite = (int) y_werte[i]; + if (x_werte[i]>=0) rect(160, 25+i*15, breite+1, 13); + + // Beschriftung + fill(255,255,255); + text(""+x_werte[i], 2, 35+i*15); + text(""+y_werte[i], 70, 35+i*15); + } + } +} + + +public int sucheMaximum(int[] zahlen) { + // Sind überhaupt Daten da? + if (zahlen.length==0 ) { + return -1; + } + + // Startwerte setzen + akt_maximum = 0; + akt = 1; + + // Alle Arrayelemente untersuchen + while (akt < zahlen.length) { + + // Neues größtes Element?? + if (zahlen[akt]> zahlen[akt_maximum]) { + // Dann merke dir das neue + akt_maximum = akt; + + } + akt = akt + 1; + } + // Gib Position des größten Elements zurück + return akt_maximum; +} //<>// diff --git a/04_loesungen/01_processing/alg15_xydiagramm_loesung_a1/data/GrosseSchrift.vlw b/04_loesungen/01_processing/alg15_xydiagramm_loesung_a1/data/GrosseSchrift.vlw new file mode 100644 index 0000000..497c8c8 Binary files /dev/null and b/04_loesungen/01_processing/alg15_xydiagramm_loesung_a1/data/GrosseSchrift.vlw differ diff --git a/04_loesungen/01_processing/alg15_xydiagramm_loesung_a1/data/KleineSchrift.vlw b/04_loesungen/01_processing/alg15_xydiagramm_loesung_a1/data/KleineSchrift.vlw new file mode 100644 index 0000000..ab1241a Binary files /dev/null and b/04_loesungen/01_processing/alg15_xydiagramm_loesung_a1/data/KleineSchrift.vlw differ diff --git a/04_loesungen/01_processing/alg15_xydiagramm_loesung_a1/punkte.csv b/04_loesungen/01_processing/alg15_xydiagramm_loesung_a1/punkte.csv new file mode 100644 index 0000000..d6e8dfd --- /dev/null +++ b/04_loesungen/01_processing/alg15_xydiagramm_loesung_a1/punkte.csv @@ -0,0 +1,6 @@ +"Name","Punkte" +Niko,216 +Klaus,591 +Anna,857 +Lena,180 +Winfried,168 diff --git a/04_loesungen/01_processing/alg15_xydiagramm_loesung_a2/Amplitudes.csv b/04_loesungen/01_processing/alg15_xydiagramm_loesung_a2/Amplitudes.csv new file mode 100644 index 0000000..bc2151b --- /dev/null +++ b/04_loesungen/01_processing/alg15_xydiagramm_loesung_a2/Amplitudes.csv @@ -0,0 +1,12219 @@ +"Time (s)","Sound pressure level (dB)" +0.000000000E0,6.133205686E1 +1.130000000E-1,5.602431153E1 +3.840000000E-1,3.897519867E1 +7.780000000E-1,4.208195145E1 +1.036000000E0,3.840936313E1 +1.305000000E0,3.561092139E1 +1.587000000E0,4.663257633E1 +1.829000000E0,5.311883882E1 +2.084000000E0,5.299431820E1 +2.357000000E0,5.747397858E1 +2.643000000E0,5.626338063E1 +2.949000000E0,5.790811120E1 +3.238000000E0,5.874544026E1 +3.497000000E0,5.736162139E1 +3.775000000E0,5.897817442E1 +4.097000000E0,5.789822970E1 +4.357000000E0,5.312015799E1 +4.626000000E0,5.710192134E1 +4.941000000E0,6.275087240E1 +5.235000000E0,5.784358767E1 +5.535000000E0,5.388577420E1 +5.827000000E0,5.403495101E1 +6.090000000E0,5.428355086E1 +6.339000000E0,6.064473144E1 +6.616000000E0,6.271091291E1 +6.850000000E0,6.982615367E1 +7.128000000E0,7.050308750E1 +7.487000000E0,5.395311298E1 +7.760000000E0,5.036401582E1 +8.065000000E0,4.614125463E1 +8.361000000E0,6.244776407E1 +8.614000000E0,6.315719526E1 +8.862000000E0,5.981740395E1 +9.123000000E0,5.907292535E1 +9.374000000E0,5.661523092E1 +9.665000000E0,6.210368813E1 +9.948000000E0,6.140958115E1 +1.021100000E1,5.697007655E1 +1.058300000E1,5.460455934E1 +1.084000000E1,5.408516231E1 +1.115300000E1,5.907221377E1 +1.142100000E1,6.113412429E1 +1.172700000E1,6.267949704E1 +1.197100000E1,6.245109870E1 +1.226500000E1,6.342534529E1 +1.255800000E1,6.810008108E1 +1.287100000E1,6.036891848E1 +1.313400000E1,5.913231814E1 +1.342700000E1,5.973818566E1 +1.371600000E1,5.534371651E1 +1.401200000E1,5.694514867E1 +1.431200000E1,6.134814982E1 +1.461100000E1,5.900023912E1 +1.484600000E1,5.689908400E1 +1.515800000E1,5.296474858E1 +1.544000000E1,5.608528071E1 +1.569300000E1,5.728560404E1 +1.596900000E1,5.837984103E1 +1.620100000E1,5.718896638E1 +1.649200000E1,5.909973037E1 +1.678900000E1,5.705554272E1 +1.716300000E1,6.079937758E1 +1.747400000E1,5.618116117E1 +1.775200000E1,5.519881157E1 +1.803800000E1,5.402386340E1 +1.829100000E1,5.678484358E1 +1.858100000E1,5.954639303E1 +1.882300000E1,6.030021638E1 +1.908000000E1,5.588340744E1 +1.934400000E1,5.668691200E1 +1.958800000E1,6.042765467E1 +1.983400000E1,5.839794223E1 +2.008500000E1,5.457976882E1 +2.039500000E1,5.974390604E1 +2.064000000E1,6.049774386E1 +2.092900000E1,6.029857781E1 +2.117800000E1,6.116406203E1 +2.142700000E1,5.664722837E1 +2.173400000E1,5.823294996E1 +2.203100000E1,5.517538657E1 +2.229000000E1,5.322823206E1 +2.259900000E1,6.180779467E1 +2.285300000E1,6.106216386E1 +2.314900000E1,5.883321877E1 +2.347100000E1,6.045262422E1 +2.375000000E1,6.163931220E1 +2.406000000E1,4.841181734E1 +2.432800000E1,4.372149986E1 +2.462900000E1,5.625563946E1 +2.487100000E1,5.672759349E1 +2.513200000E1,5.896193725E1 +2.540800000E1,5.893011728E1 +2.566400000E1,5.857261268E1 +2.596700000E1,5.859012974E1 +2.621900000E1,5.635586832E1 +2.648700000E1,5.350948293E1 +2.673900000E1,5.430043092E1 +2.701400000E1,5.666610976E1 +2.727500000E1,5.218421407E1 +2.753100000E1,5.689076583E1 +2.782000000E1,5.796831886E1 +2.806900000E1,5.608205064E1 +2.831700000E1,5.482273815E1 +2.861600000E1,5.392425499E1 +2.888300000E1,5.329416010E1 +2.914800000E1,5.366916703E1 +2.940200000E1,5.280847155E1 +2.968000000E1,5.333298066E1 +2.994300000E1,5.497085471E1 +3.031200000E1,5.753094076E1 +3.057900000E1,5.655381974E1 +3.086100000E1,5.517704804E1 +3.115600000E1,5.592585858E1 +3.140700000E1,6.212826207E1 +3.166000000E1,5.699502474E1 +3.193500000E1,6.025129057E1 +3.223100000E1,5.686166208E1 +3.247300000E1,5.807641915E1 +3.271900000E1,6.065155151E1 +3.296400000E1,5.961384387E1 +3.320500000E1,6.119064420E1 +3.354400000E1,5.548464633E1 +3.378000000E1,5.699661616E1 +3.408000000E1,5.653770482E1 +3.438000000E1,5.083503664E1 +3.468200000E1,5.695639918E1 +3.495800000E1,5.566535489E1 +3.524700000E1,5.914853092E1 +3.552700000E1,5.758441289E1 +3.576600000E1,6.085665801E1 +3.606700000E1,5.862586334E1 +3.630600000E1,5.096841655E1 +3.662200000E1,6.009246966E1 +3.689400000E1,5.981749726E1 +3.715300000E1,6.108830629E1 +3.740300000E1,5.724514841E1 +3.766500000E1,5.934850613E1 +3.793000000E1,5.725470328E1 +3.819100000E1,5.843556167E1 +3.847700000E1,5.697759761E1 +3.874000000E1,5.721548979E1 +3.901600000E1,5.649629904E1 +3.927200000E1,5.850326911E1 +3.954600000E1,5.691951660E1 +3.993900000E1,5.357092442E1 +4.023400000E1,5.817046878E1 +4.053000000E1,5.554327077E1 +4.081200000E1,5.802928061E1 +4.103900000E1,5.663899845E1 +4.128700000E1,5.494654466E1 +4.155800000E1,5.564956216E1 +4.181900000E1,5.663250304E1 +4.211300000E1,5.652236278E1 +4.238100000E1,5.614203459E1 +4.264000000E1,5.433145844E1 +4.295000000E1,6.132645299E1 +4.326200000E1,6.040612545E1 +4.351400000E1,5.905916902E1 +4.377100000E1,5.885516023E1 +4.401000000E1,5.514814582E1 +4.430800000E1,5.663232510E1 +4.455900000E1,5.055807811E1 +4.482100000E1,5.614950318E1 +4.513300000E1,6.025044420E1 +4.537500000E1,5.643182261E1 +4.568900000E1,5.709089314E1 +4.600500000E1,5.480136123E1 +4.624500000E1,5.924046686E1 +4.656900000E1,6.172358505E1 +4.684100000E1,5.645515217E1 +4.711100000E1,6.002156043E1 +4.736300000E1,6.182669975E1 +4.759700000E1,5.557741963E1 +4.786700000E1,5.598662295E1 +4.818300000E1,5.664767890E1 +4.847900000E1,5.956168629E1 +4.874200000E1,5.713315811E1 +4.898900000E1,5.765479272E1 +4.931400000E1,5.507101982E1 +4.961600000E1,5.361677606E1 +4.990000000E1,5.558547080E1 +5.019600000E1,5.402951441E1 +5.046500000E1,5.805429700E1 +5.078800000E1,5.327636151E1 +5.110300000E1,4.980825483E1 +5.137100000E1,5.290981249E1 +5.165200000E1,4.817864123E1 +5.190100000E1,5.585478693E1 +5.214500000E1,5.457392293E1 +5.242900000E1,5.449921652E1 +5.272500000E1,5.537781025E1 +5.302100000E1,5.598018287E1 +5.326000000E1,5.612851081E1 +5.355800000E1,5.312697891E1 +5.384800000E1,5.799703575E1 +5.409200000E1,5.662162553E1 +5.433900000E1,5.392344795E1 +5.459100000E1,5.398098819E1 +5.494900000E1,5.489231889E1 +5.527100000E1,5.658153835E1 +5.552800000E1,5.624900056E1 +5.589500000E1,4.979935744E1 +5.616900000E1,5.146998424E1 +5.645400000E1,5.878755245E1 +5.668600000E1,5.846227673E1 +5.694400000E1,5.977267383E1 +5.726200000E1,5.508647523E1 +5.754400000E1,5.138853207E1 +5.784300000E1,5.327451232E1 +5.808600000E1,5.887142781E1 +5.837800000E1,5.858062431E1 +5.862200000E1,5.917458096E1 +5.889700000E1,6.050411670E1 +5.926300000E1,5.908687144E1 +5.952100000E1,5.570790758E1 +5.981900000E1,5.444849000E1 +6.006100000E1,5.201240285E1 +6.032000000E1,4.755830762E1 +6.061900000E1,5.204388424E1 +6.086500000E1,5.626914911E1 +6.117500000E1,5.280379974E1 +6.142900000E1,5.093923019E1 +6.173000000E1,5.460427137E1 +6.197800000E1,5.299601182E1 +6.230600000E1,5.424208739E1 +6.257600000E1,5.253762352E1 +6.283700000E1,5.544043962E1 +6.309800000E1,5.527614156E1 +6.335400000E1,5.747262922E1 +6.360700000E1,5.468151445E1 +6.384900000E1,5.582905565E1 +6.410700000E1,5.802400474E1 +6.435000000E1,5.204893636E1 +6.459600000E1,5.280146425E1 +6.486300000E1,4.876648093E1 +6.509700000E1,5.311679703E1 +6.537500000E1,5.192778643E1 +6.571400000E1,5.346709918E1 +6.597900000E1,5.370921552E1 +6.627900000E1,5.676705279E1 +6.652200000E1,5.832258643E1 +6.676600000E1,6.257736406E1 +6.703100000E1,6.295448429E1 +6.737800000E1,6.100964383E1 +6.766100000E1,5.182636016E1 +6.790700000E1,4.952717893E1 +6.821100000E1,5.667475715E1 +6.850300000E1,5.872819054E1 +6.882100000E1,6.004516195E1 +6.907300000E1,5.559244143E1 +6.935100000E1,5.600379936E1 +6.961500000E1,5.338006499E1 +6.987600000E1,5.360104859E1 +7.011900000E1,4.644905289E1 +7.037100000E1,4.528909123E1 +7.067200000E1,5.787885076E1 +7.091600000E1,5.602551032E1 +7.115700000E1,5.989544193E1 +7.142200000E1,6.110384869E1 +7.167900000E1,5.887448069E1 +7.192600000E1,5.797896456E1 +7.226000000E1,5.965665129E1 +7.251000000E1,6.477744226E1 +7.281200000E1,6.243775536E1 +7.310800000E1,5.921576979E1 +7.335600000E1,6.629420582E1 +7.364100000E1,6.683725429E1 +7.392300000E1,5.758295449E1 +7.418800000E1,5.654909286E1 +7.448600000E1,5.881341247E1 +7.472100000E1,5.546609910E1 +7.498300000E1,5.586542777E1 +7.526600000E1,5.463216262E1 +7.558500000E1,5.947397496E1 +7.586200000E1,6.218459899E1 +7.609800000E1,6.134189272E1 +7.635800000E1,5.727526170E1 +7.666700000E1,5.579062978E1 +7.699300000E1,6.015063828E1 +7.729000000E1,6.022787424E1 +7.756300000E1,5.646982462E1 +7.782200000E1,6.005734442E1 +7.813200000E1,5.950776839E1 +7.842200000E1,6.314009710E1 +7.880400000E1,5.425753266E1 +7.910400000E1,5.909139002E1 +7.935300000E1,5.600377253E1 +7.962300000E1,6.036368528E1 +7.993700000E1,5.940415340E1 +8.018900000E1,6.102152187E1 +8.050000000E1,6.619104713E1 +8.074000000E1,6.149981675E1 +8.098900000E1,5.978899259E1 +8.123800000E1,5.963150500E1 +8.150300000E1,6.509054947E1 +8.181300000E1,6.387458039E1 +8.220700000E1,6.421798778E1 +8.246100000E1,6.092500605E1 +8.271900000E1,6.039313205E1 +8.297100000E1,5.885189543E1 +8.328000000E1,6.068901175E1 +8.355600000E1,6.531581124E1 +8.381900000E1,6.460984287E1 +8.407800000E1,6.281147078E1 +8.435000000E1,5.961599483E1 +8.463400000E1,5.915457491E1 +8.489200000E1,5.383227231E1 +8.513000000E1,5.278474817E1 +8.551100000E1,6.165964712E1 +8.574900000E1,6.442604107E1 +8.600700000E1,6.551005247E1 +8.626000000E1,6.660338206E1 +8.650900000E1,6.304014634E1 +8.676000000E1,6.488065719E1 +8.701800000E1,6.416881833E1 +8.728000000E1,5.892166498E1 +8.754500000E1,5.946249393E1 +8.785000000E1,6.506678358E1 +8.809400000E1,5.703264442E1 +8.840500000E1,6.164086486E1 +8.876300000E1,6.276173959E1 +8.906100000E1,5.818071871E1 +8.930500000E1,5.844394446E1 +8.956300000E1,5.657440647E1 +8.987400000E1,6.120356137E1 +9.011500000E1,6.094306560E1 +9.041100000E1,5.978472131E1 +9.065500000E1,6.008128664E1 +9.092400000E1,5.758286780E1 +9.123300000E1,5.353387594E1 +9.151600000E1,5.676204998E1 +9.183800000E1,5.245702159E1 +9.218200000E1,5.642589170E1 +9.243600000E1,5.542467479E1 +9.268000000E1,5.580829615E1 +9.297600000E1,5.148061441E1 +9.322800000E1,4.635974806E1 +9.353200000E1,5.465579762E1 +9.377300000E1,5.154999739E1 +9.402200000E1,5.544992474E1 +9.427900000E1,5.302390200E1 +9.453300000E1,5.127982623E1 +9.478800000E1,5.263086656E1 +9.503100000E1,5.128121484E1 +9.532100000E1,5.061466876E1 +9.557700000E1,5.328260476E1 +9.582800000E1,5.101663724E1 +9.607100000E1,5.400893265E1 +9.640400000E1,5.756552061E1 +9.665500000E1,5.665487755E1 +9.690400000E1,5.719000980E1 +9.715400000E1,5.593995548E1 +9.740400000E1,5.420194495E1 +9.771300000E1,4.867232074E1 +9.802100000E1,5.053798103E1 +9.830700000E1,4.874294948E1 +9.857500000E1,5.754515654E1 +9.883700000E1,5.863618568E1 +9.909700000E1,6.070195076E1 +9.935300000E1,5.434874196E1 +9.961300000E1,6.163600431E1 +9.987300000E1,5.555228218E1 +1.001200000E2,5.733850418E1 +1.003910000E2,6.133233800E1 +1.006620000E2,5.853313440E1 +1.009020000E2,5.435835494E1 +1.011680000E2,5.329891948E1 +1.014680000E2,5.356470018E1 +1.018410000E2,5.574288130E1 +1.021370000E2,5.927571979E1 +1.024000000E2,5.789956910E1 +1.026980000E2,6.081738139E1 +1.029540000E2,5.575615853E1 +1.032580000E2,5.337382111E1 +1.035140000E2,5.562761746E1 +1.038150000E2,5.905624776E1 +1.041040000E2,5.696105750E1 +1.043990000E2,6.170938149E1 +1.046370000E2,5.823687000E1 +1.049080000E2,6.066674703E1 +1.051740000E2,6.220969933E1 +1.054810000E2,5.755805236E1 +1.057660000E2,5.735691579E1 +1.060450000E2,5.761618087E1 +1.063040000E2,5.188413372E1 +1.065680000E2,5.643639822E1 +1.068740000E2,5.312430876E1 +1.071280000E2,5.924995828E1 +1.073900000E2,5.546187342E1 +1.076920000E2,5.474389270E1 +1.079790000E2,5.600814816E1 +1.082440000E2,5.561453096E1 +1.084980000E2,5.408559240E1 +1.087580000E2,5.622058302E1 +1.090160000E2,5.768852773E1 +1.092670000E2,5.516804842E1 +1.095340000E2,5.973626648E1 +1.098120000E2,6.403409511E1 +1.100690000E2,6.035201036E1 +1.103490000E2,5.940482770E1 +1.105950000E2,5.932126109E1 +1.108600000E2,5.859387697E1 +1.111460000E2,5.929800416E1 +1.114110000E2,5.930503134E1 +1.117890000E2,6.170536210E1 +1.120410000E2,6.214563711E1 +1.123490000E2,5.810151097E1 +1.126320000E2,5.823719807E1 +1.128910000E2,6.454485320E1 +1.131870000E2,6.755031626E1 +1.134560000E2,6.410743881E1 +1.137200000E2,5.913442857E1 +1.139870000E2,6.382823805E1 +1.142400000E2,5.859239523E1 +1.145180000E2,5.135859796E1 +1.147890000E2,5.294563188E1 +1.151440000E2,5.357868048E1 +1.154220000E2,5.561359505E1 +1.156620000E2,5.645675088E1 +1.159670000E2,5.879425595E1 +1.162610000E2,5.918610512E1 +1.164990000E2,6.083658676E1 +1.167470000E2,5.526645697E1 +1.169880000E2,5.471312988E1 +1.172910000E2,6.211796732E1 +1.175510000E2,5.417468648E1 +1.177930000E2,5.576739557E1 +1.180750000E2,5.912472365E1 +1.184660000E2,5.718213173E1 +1.187710000E2,5.747081312E1 +1.190170000E2,5.741742618E1 +1.192690000E2,5.379557814E1 +1.195330000E2,5.428733520E1 +1.197780000E2,6.177329402E1 +1.200450000E2,5.672333166E1 +1.203170000E2,5.584947723E1 +1.205670000E2,5.382665718E1 +1.208400000E2,5.443690083E1 +1.211280000E2,5.221565874E1 +1.214800000E2,5.516249741E1 +1.217540000E2,5.676279334E1 +1.220050000E2,5.303796336E1 +1.222680000E2,5.258840561E1 +1.225120000E2,5.671935607E1 +1.227660000E2,4.902892756E1 +1.230240000E2,4.264962220E1 +1.232830000E2,4.818154680E1 +1.235340000E2,5.204058636E1 +1.238430000E2,5.649936271E1 +1.241410000E2,5.396154490E1 +1.244200000E2,5.428877275E1 +1.246760000E2,4.778715710E1 +1.249500000E2,4.912370762E1 +1.252110000E2,5.114426735E1 +1.255020000E2,5.345096378E1 +1.257410000E2,5.581149074E1 +1.260430000E2,5.211774829E1 +1.263320000E2,5.470047014E1 +1.265660000E2,5.399085344E1 +1.268600000E2,5.981732528E1 +1.271210000E2,5.944116770E1 +1.273530000E2,5.668281238E1 +1.275970000E2,5.042419391E1 +1.279080000E2,5.014554177E1 +1.282260000E2,5.350461413E1 +1.285240000E2,5.453533258E1 +1.287780000E2,5.809919663E1 +1.290280000E2,5.729580956E1 +1.292980000E2,5.681749266E1 +1.296010000E2,5.542882864E1 +1.298980000E2,5.612046892E1 +1.302070000E2,6.074750886E1 +1.304620000E2,5.979349108E1 +1.307520000E2,5.806574219E1 +1.310590000E2,5.738881777E1 +1.314010000E2,5.595280312E1 +1.316630000E2,5.401154636E1 +1.319120000E2,5.499471091E1 +1.321620000E2,5.551354327E1 +1.324640000E2,6.567912108E1 +1.327650000E2,5.725129100E1 +1.330150000E2,6.452906176E1 +1.333160000E2,5.778565576E1 +1.335760000E2,6.242194617E1 +1.338200000E2,5.570863747E1 +1.340710000E2,5.755877138E1 +1.343660000E2,6.819206156E1 +1.346260000E2,6.094769164E1 +1.349310000E2,6.447198163E1 +1.351810000E2,5.482297950E1 +1.354630000E2,6.327012623E1 +1.357210000E2,5.723157337E1 +1.359770000E2,5.835004111E1 +1.362140000E2,6.413045068E1 +1.365290000E2,6.022343539E1 +1.368110000E2,5.969265006E1 +1.371070000E2,5.589766444E1 +1.373670000E2,6.089100679E1 +1.376970000E2,6.762783521E1 +1.379410000E2,5.740809854E1 +1.381870000E2,6.711182247E1 +1.384650000E2,6.290175574E1 +1.387060000E2,6.352322572E1 +1.390400000E2,5.897504025E1 +1.392980000E2,5.872568346E1 +1.396520000E2,5.582882684E1 +1.399140000E2,5.874428562E1 +1.402160000E2,5.275369064E1 +1.404650000E2,5.181123336E1 +1.407250000E2,4.758951485E1 +1.410550000E2,4.601470876E1 +1.413500000E2,5.203790008E1 +1.416310000E2,5.380793436E1 +1.418780000E2,5.006781735E1 +1.421580000E2,4.792469964E1 +1.424020000E2,5.136650820E1 +1.427060000E2,5.127969468E1 +1.430200000E2,5.304643312E1 +1.433210000E2,5.218299100E1 +1.436050000E2,5.568762266E1 +1.439010000E2,5.522696018E1 +1.442570000E2,5.919224289E1 +1.445880000E2,6.201398016E1 +1.448680000E2,5.750742223E1 +1.451160000E2,5.811963790E1 +1.454090000E2,5.695462128E1 +1.456560000E2,5.854812337E1 +1.458980000E2,5.886107911E1 +1.461720000E2,5.454171305E1 +1.464480000E2,5.674410925E1 +1.466770000E2,5.450912101E1 +1.469270000E2,5.953864028E1 +1.471790000E2,6.097527460E1 +1.475260000E2,5.825769450E1 +1.478290000E2,5.780473579E1 +1.480790000E2,6.185542851E1 +1.483350000E2,5.390929394E1 +1.486330000E2,5.400087479E1 +1.488750000E2,5.328656685E1 +1.491190000E2,5.599536596E1 +1.494200000E2,5.721648542E1 +1.497150000E2,5.787493165E1 +1.500380000E2,5.480047158E1 +1.503480000E2,5.002404450E1 +1.506590000E2,5.486151348E1 +1.509700000E2,6.245235750E1 +1.512360000E2,5.831236552E1 +1.514820000E2,6.253825815E1 +1.517260000E2,6.440134635E1 +1.520120000E2,5.646251942E1 +1.523080000E2,5.569851104E1 +1.525630000E2,5.574195002E1 +1.528610000E2,6.073633455E1 +1.531220000E2,5.704364811E1 +1.533960000E2,5.858521931E1 +1.536900000E2,6.334346239E1 +1.540080000E2,5.734505299E1 +1.542490000E2,6.522555977E1 +1.544980000E2,5.500712815E1 +1.547420000E2,5.698741268E1 +1.549830000E2,5.097374633E1 +1.552760000E2,5.421781291E1 +1.555100000E2,5.276919678E1 +1.558070000E2,5.444895965E1 +1.560410000E2,5.023818561E1 +1.563440000E2,5.460917302E1 +1.565880000E2,5.459938847E1 +1.568920000E2,5.843131092E1 +1.572210000E2,5.876667307E1 +1.574850000E2,5.735202828E1 +1.577300000E2,5.496399564E1 +1.580290000E2,5.249359356E1 +1.582920000E2,5.216967072E1 +1.585400000E2,5.506360532E1 +1.588040000E2,4.854470136E1 +1.590480000E2,5.455647594E1 +1.593040000E2,5.480802962E1 +1.595560000E2,5.117555202E1 +1.598230000E2,5.525001141E1 +1.600680000E2,6.028739680E1 +1.604080000E2,6.051466285E1 +1.606910000E2,5.941686107E1 +1.609450000E2,6.263789003E1 +1.611920000E2,5.862463866E1 +1.614980000E2,5.858673558E1 +1.617730000E2,5.766546261E1 +1.620210000E2,5.485521148E1 +1.623080000E2,5.814732367E1 +1.625850000E2,5.829863647E1 +1.628370000E2,5.473457172E1 +1.631510000E2,5.323729241E1 +1.634320000E2,5.795543593E1 +1.637670000E2,5.845831909E1 +1.640670000E2,5.883503284E1 +1.643040000E2,5.933733684E1 +1.645990000E2,5.316483696E1 +1.648620000E2,5.628275472E1 +1.651110000E2,5.612764782E1 +1.654290000E2,5.739409022E1 +1.657290000E2,5.275374209E1 +1.660100000E2,5.606330732E1 +1.662350000E2,4.973765069E1 +1.664840000E2,4.855931683E1 +1.667820000E2,4.830487304E1 +1.670210000E2,5.643349546E1 +1.672820000E2,5.752246312E1 +1.675830000E2,5.576545129E1 +1.678330000E2,5.583582770E1 +1.681390000E2,5.301617697E1 +1.684460000E2,5.088408561E1 +1.686990000E2,5.149775091E1 +1.690030000E2,6.019099852E1 +1.692410000E2,6.143998752E1 +1.695380000E2,6.183098470E1 +1.697780000E2,5.964256200E1 +1.701420000E2,5.648358262E1 +1.703870000E2,5.768033788E1 +1.706360000E2,5.037521789E1 +1.709530000E2,5.268785935E1 +1.712030000E2,5.850048969E1 +1.714650000E2,5.537813713E1 +1.717710000E2,5.989062491E1 +1.720770000E2,6.371629733E1 +1.723380000E2,5.413135778E1 +1.726060000E2,5.582389161E1 +1.729040000E2,6.344770094E1 +1.731770000E2,6.038125570E1 +1.735090000E2,5.229655017E1 +1.737830000E2,5.594074665E1 +1.740430000E2,6.258802116E1 +1.743030000E2,5.773122794E1 +1.745600000E2,5.533899998E1 +1.748290000E2,5.069657364E1 +1.750850000E2,6.285550191E1 +1.753480000E2,5.470504416E1 +1.756240000E2,5.746379759E1 +1.758870000E2,5.928233462E1 +1.761350000E2,5.214791610E1 +1.763840000E2,5.260177806E1 +1.767030000E2,4.844041050E1 +1.769490000E2,5.275717684E1 +1.772330000E2,5.436891746E1 +1.774780000E2,5.441421810E1 +1.777590000E2,5.485847839E1 +1.780320000E2,5.714239097E1 +1.782910000E2,6.028837304E1 +1.785470000E2,5.706420775E1 +1.788380000E2,5.509582512E1 +1.791200000E2,5.674185072E1 +1.794340000E2,5.437491314E1 +1.796940000E2,5.696592309E1 +1.799990000E2,5.344092263E1 +1.802540000E2,5.414345246E1 +1.804960000E2,5.421992498E1 +1.808400000E2,5.317024536E1 +1.811450000E2,5.422714635E1 +1.814530000E2,5.933207779E1 +1.817720000E2,5.916706050E1 +1.820730000E2,5.685980261E1 +1.824210000E2,5.521649456E1 +1.826850000E2,5.651993888E1 +1.829810000E2,5.707596711E1 +1.832810000E2,5.464130538E1 +1.836160000E2,5.364065008E1 +1.838600000E2,5.913078622E1 +1.841080000E2,5.695541400E1 +1.843520000E2,6.237274690E1 +1.846510000E2,6.017101966E1 +1.848950000E2,5.670915019E1 +1.851380000E2,5.651470649E1 +1.854400000E2,5.919691857E1 +1.857560000E2,5.752836475E1 +1.860680000E2,6.133052078E1 +1.863670000E2,6.001801442E1 +1.866740000E2,5.871186574E1 +1.869510000E2,5.858669373E1 +1.872240000E2,5.722343490E1 +1.875200000E2,5.725198568E1 +1.877700000E2,5.560524182E1 +1.880340000E2,5.419540118E1 +1.882980000E2,6.169219144E1 +1.885790000E2,5.704261604E1 +1.888700000E2,5.651125138E1 +1.891060000E2,5.778536485E1 +1.894110000E2,5.304160496E1 +1.896990000E2,5.105254388E1 +1.900460000E2,5.338626279E1 +1.902980000E2,5.090929652E1 +1.905360000E2,5.235399183E1 +1.907970000E2,5.429173243E1 +1.910620000E2,5.376238901E1 +1.913500000E2,6.411203098E1 +1.916020000E2,6.235211697E1 +1.919100000E2,5.719243884E1 +1.922140000E2,5.965550680E1 +1.925010000E2,5.850063986E1 +1.928110000E2,6.013906156E1 +1.930480000E2,5.912633730E1 +1.934000000E2,5.860712099E1 +1.936870000E2,5.944287516E1 +1.939980000E2,5.676076088E1 +1.942520000E2,5.712881871E1 +1.945490000E2,5.515631677E1 +1.948870000E2,5.670925955E1 +1.951320000E2,5.768263389E1 +1.954210000E2,5.735243887E1 +1.957290000E2,5.883798740E1 +1.960030000E2,5.654393164E1 +1.963340000E2,5.345251733E1 +1.966710000E2,5.034487882E1 +1.969060000E2,5.741493139E1 +1.971980000E2,5.877434013E1 +1.974210000E2,5.965387227E1 +1.977200000E2,6.306941384E1 +1.979730000E2,6.004201692E1 +1.982230000E2,6.106500017E1 +1.984800000E2,5.674857861E1 +1.987290000E2,6.020914127E1 +1.990680000E2,6.067289060E1 +1.993460000E2,5.996658083E1 +1.996390000E2,5.676340490E1 +1.999500000E2,5.612304129E1 +2.002130000E2,6.289766509E1 +2.005150000E2,5.720971103E1 +2.008280000E2,5.752136939E1 +2.010940000E2,6.058659890E1 +2.013440000E2,5.618430636E1 +2.016270000E2,6.056271249E1 +2.019400000E2,5.729198827E1 +2.022100000E2,5.793084452E1 +2.025070000E2,5.787194228E1 +2.027910000E2,5.959620014E1 +2.030940000E2,6.012062596E1 +2.033180000E2,6.276377758E1 +2.036210000E2,5.834405857E1 +2.039320000E2,5.545225289E1 +2.042050000E2,5.829439447E1 +2.044730000E2,5.799912649E1 +2.047970000E2,5.444896398E1 +2.050680000E2,5.743866699E1 +2.053150000E2,5.862448994E1 +2.055880000E2,5.778478934E1 +2.058890000E2,5.527981007E1 +2.061620000E2,5.742523507E1 +2.064580000E2,5.472188821E1 +2.067100000E2,6.202721053E1 +2.069630000E2,5.861698013E1 +2.072080000E2,6.294616718E1 +2.074730000E2,6.321186761E1 +2.077380000E2,5.776609523E1 +2.080390000E2,6.061292698E1 +2.083320000E2,5.857532480E1 +2.085870000E2,5.800369352E1 +2.088450000E2,5.977447345E1 +2.091070000E2,5.957010157E1 +2.093520000E2,6.145770306E1 +2.096060000E2,6.176056517E1 +2.098580000E2,6.033519811E1 +2.100970000E2,6.429628489E1 +2.103980000E2,6.215353584E1 +2.106470000E2,6.299048914E1 +2.109300000E2,6.133544133E1 +2.112010000E2,5.397487394E1 +2.114250000E2,5.313920655E1 +2.116740000E2,5.552710709E1 +2.119140000E2,5.692289703E1 +2.121730000E2,5.618691953E1 +2.124220000E2,5.402804715E1 +2.127170000E2,5.390450402E1 +2.129570000E2,5.652515030E1 +2.132580000E2,5.490504921E1 +2.135120000E2,5.485761082E1 +2.137850000E2,6.486277416E1 +2.140520000E2,6.121826472E1 +2.143580000E2,6.355465948E1 +2.146390000E2,5.534291145E1 +2.148790000E2,6.610858745E1 +2.151670000E2,5.617739728E1 +2.154670000E2,5.426651762E1 +2.157300000E2,5.840247716E1 +2.160830000E2,5.257749691E1 +2.163200000E2,6.345809118E1 +2.165810000E2,6.020490407E1 +2.168390000E2,5.603372378E1 +2.170870000E2,5.452432165E1 +2.173530000E2,5.679931822E1 +2.176220000E2,6.225558234E1 +2.179360000E2,5.991886985E1 +2.182430000E2,6.307902574E1 +2.184780000E2,6.764692456E1 +2.187700000E2,6.696013302E1 +2.190280000E2,6.419552300E1 +2.193390000E2,6.401831507E1 +2.196000000E2,6.317016249E1 +2.198590000E2,6.093052958E1 +2.201380000E2,6.446513941E1 +2.204220000E2,6.075454080E1 +2.206690000E2,6.712020778E1 +2.209300000E2,5.440050354E1 +2.212550000E2,5.627963451E1 +2.215550000E2,6.358778444E1 +2.217990000E2,5.793661873E1 +2.220730000E2,6.448679664E1 +2.223050000E2,5.844994198E1 +2.226510000E2,5.802583418E1 +2.229440000E2,5.848297014E1 +2.231840000E2,6.170695891E1 +2.234220000E2,6.201301769E1 +2.236630000E2,6.049179870E1 +2.239600000E2,6.316843106E1 +2.242020000E2,5.818837652E1 +2.245150000E2,6.411353278E1 +2.248330000E2,6.458398711E1 +2.250670000E2,6.303280227E1 +2.253240000E2,6.378696379E1 +2.255670000E2,6.157533943E1 +2.259260000E2,5.845901257E1 +2.261910000E2,5.623331182E1 +2.264460000E2,5.550822889E1 +2.267020000E2,5.907003722E1 +2.270220000E2,6.300043778E1 +2.273130000E2,5.934584116E1 +2.275640000E2,5.367094537E1 +2.278520000E2,6.260544714E1 +2.281140000E2,5.666507163E1 +2.283970000E2,6.099713971E1 +2.287020000E2,5.943082312E1 +2.289450000E2,6.095935321E1 +2.292950000E2,5.939706013E1 +2.296230000E2,5.612117806E1 +2.299220000E2,5.805831404E1 +2.301570000E2,5.496048372E1 +2.304070000E2,5.335836124E1 +2.306490000E2,5.043808989E1 +2.309270000E2,4.778025574E1 +2.311680000E2,4.613189565E1 +2.314100000E2,4.740314381E1 +2.316580000E2,5.230056147E1 +2.319150000E2,5.672989332E1 +2.321590000E2,6.081799709E1 +2.325030000E2,5.909736866E1 +2.327570000E2,5.528762811E1 +2.330520000E2,6.623131701E1 +2.333360000E2,6.376149752E1 +2.335730000E2,6.088376871E1 +2.338700000E2,6.235681388E1 +2.341160000E2,6.060610548E1 +2.343930000E2,5.779254532E1 +2.346370000E2,5.570043106E1 +2.349010000E2,6.172637016E1 +2.351520000E2,5.865545525E1 +2.354420000E2,6.250465685E1 +2.356850000E2,6.494272879E1 +2.359310000E2,6.075163542E1 +2.361840000E2,5.742858606E1 +2.364460000E2,5.756917813E1 +2.366990000E2,6.169927684E1 +2.370080000E2,5.540268710E1 +2.373040000E2,5.484088652E1 +2.376000000E2,5.732112773E1 +2.378800000E2,5.184194161E1 +2.381270000E2,5.604168635E1 +2.383910000E2,5.644051218E1 +2.387130000E2,6.049774032E1 +2.390290000E2,6.303013407E1 +2.392800000E2,6.115111046E1 +2.395770000E2,6.294174883E1 +2.398740000E2,6.716012591E1 +2.401880000E2,7.075117191E1 +2.404890000E2,6.435561631E1 +2.407550000E2,5.593172595E1 +2.410720000E2,5.781614361E1 +2.413350000E2,5.497792445E1 +2.416080000E2,5.569244646E1 +2.418870000E2,5.408109683E1 +2.421100000E2,5.687440525E1 +2.424230000E2,6.415333296E1 +2.427170000E2,6.528722740E1 +2.429900000E2,6.229384329E1 +2.432350000E2,5.452507698E1 +2.434960000E2,5.248331654E1 +2.437450000E2,5.069826347E1 +2.439880000E2,4.989889277E1 +2.442610000E2,5.196931346E1 +2.445130000E2,4.988417717E1 +2.448120000E2,5.950968466E1 +2.451200000E2,5.725324421E1 +2.454210000E2,5.902908729E1 +2.456980000E2,5.857784521E1 +2.459650000E2,5.154496059E1 +2.462670000E2,5.316738342E1 +2.465660000E2,5.681338179E1 +2.468580000E2,5.486468116E1 +2.471080000E2,5.378622946E1 +2.473840000E2,5.263910847E1 +2.477040000E2,5.102724000E1 +2.479590000E2,4.958128022E1 +2.482070000E2,5.621813465E1 +2.486190000E2,5.553111013E1 +2.489120000E2,5.711728514E1 +2.491630000E2,6.098223102E1 +2.494610000E2,5.812970142E1 +2.497290000E2,5.874411947E1 +2.500090000E2,6.058797235E1 +2.503160000E2,5.921850964E1 +2.506300000E2,5.825659244E1 +2.508940000E2,5.902074554E1 +2.512250000E2,5.857720223E1 +2.514860000E2,5.834259509E1 +2.517560000E2,5.664723408E1 +2.520110000E2,6.245873243E1 +2.522800000E2,6.018081628E1 +2.525490000E2,6.060905480E1 +2.527980000E2,6.098924059E1 +2.530310000E2,6.604497204E1 +2.532750000E2,5.762503683E1 +2.535750000E2,5.946675250E1 +2.538150000E2,5.696283688E1 +2.541120000E2,5.795434272E1 +2.543420000E2,5.641662406E1 +2.546470000E2,6.001503419E1 +2.549610000E2,5.913147779E1 +2.552050000E2,5.772050526E1 +2.554250000E2,5.986895040E1 +2.557400000E2,4.836792039E1 +2.560130000E2,4.818172752E1 +2.563450000E2,5.244597112E1 +2.566130000E2,5.174954560E1 +2.568650000E2,5.165225717E1 +2.571100000E2,4.865803315E1 +2.573530000E2,4.773689375E1 +2.576460000E2,5.375353685E1 +2.579030000E2,5.630041837E1 +2.582540000E2,5.390583403E1 +2.585030000E2,5.686416101E1 +2.588120000E2,5.880170204E1 +2.590630000E2,5.373023259E1 +2.593590000E2,6.009405077E1 +2.596120000E2,5.710673366E1 +2.598560000E2,5.891240789E1 +2.600990000E2,5.960890080E1 +2.603510000E2,6.728594423E1 +2.606060000E2,6.334340199E1 +2.609270000E2,6.082175509E1 +2.611830000E2,5.750083619E1 +2.615060000E2,5.667484133E1 +2.618070000E2,6.152760439E1 +2.620430000E2,5.697586540E1 +2.623440000E2,5.674189037E1 +2.625730000E2,5.539036876E1 +2.628210000E2,4.901745514E1 +2.631270000E2,5.264848299E1 +2.634230000E2,5.038277380E1 +2.636750000E2,5.149234245E1 +2.639170000E2,4.604207892E1 +2.641630000E2,5.735184247E1 +2.644630000E2,5.659523444E1 +2.648080000E2,5.697978691E1 +2.650640000E2,5.691301726E1 +2.653540000E2,5.696584583E1 +2.656480000E2,5.138210199E1 +2.659030000E2,5.345758564E1 +2.661640000E2,5.363588256E1 +2.664240000E2,5.471656895E1 +2.666720000E2,5.140760448E1 +2.669400000E2,5.329005020E1 +2.671940000E2,5.422388323E1 +2.674460000E2,5.133919880E1 +2.677140000E2,5.690801972E1 +2.681270000E2,5.964609863E1 +2.684030000E2,6.167901240E1 +2.686970000E2,5.297205648E1 +2.689350000E2,5.530010894E1 +2.692310000E2,5.450325538E1 +2.694700000E2,5.391690578E1 +2.697660000E2,5.420666075E1 +2.700010000E2,4.962510480E1 +2.702390000E2,5.010058679E1 +2.705460000E2,5.345147952E1 +2.708590000E2,5.574757195E1 +2.711770000E2,5.571208034E1 +2.714720000E2,5.288998421E1 +2.717170000E2,5.214438195E1 +2.720190000E2,5.232798978E1 +2.723080000E2,6.045263056E1 +2.725500000E2,5.870512300E1 +2.727930000E2,5.577911819E1 +2.730760000E2,5.501493048E1 +2.733800000E2,5.433475343E1 +2.736720000E2,5.293457700E1 +2.739070000E2,5.486483547E1 +2.741780000E2,6.008208952E1 +2.745050000E2,5.845984546E1 +2.748040000E2,5.900764997E1 +2.751070000E2,5.760203457E1 +2.754240000E2,5.795024632E1 +2.757280000E2,6.182748257E1 +2.760340000E2,5.683205968E1 +2.763350000E2,5.821402367E1 +2.766080000E2,5.520672517E1 +2.768980000E2,5.645892504E1 +2.772030000E2,5.463906896E1 +2.775200000E2,5.412722413E1 +2.777910000E2,5.268636730E1 +2.780870000E2,5.566734184E1 +2.783350000E2,5.745256931E1 +2.785810000E2,5.645167582E1 +2.788270000E2,5.925831320E1 +2.790840000E2,5.591320738E1 +2.793690000E2,5.632637646E1 +2.796200000E2,6.252281740E1 +2.799120000E2,5.547643277E1 +2.801570000E2,6.021611275E1 +2.804580000E2,5.732676882E1 +2.808110000E2,5.909573770E1 +2.810780000E2,6.005240162E1 +2.813300000E2,5.965022185E1 +2.815820000E2,6.135840817E1 +2.818790000E2,5.970629096E1 +2.821590000E2,5.879025140E1 +2.824010000E2,5.747324456E1 +2.826520000E2,5.726379384E1 +2.828950000E2,5.871306541E1 +2.831920000E2,6.188032415E1 +2.834710000E2,6.066582287E1 +2.837110000E2,5.950933244E1 +2.840350000E2,5.901018860E1 +2.843000000E2,5.761182729E1 +2.846050000E2,5.446909438E1 +2.848570000E2,5.349219985E1 +2.851700000E2,5.015518748E1 +2.854330000E2,5.374610595E1 +2.857270000E2,5.877223624E1 +2.860310000E2,5.644512377E1 +2.863080000E2,5.711327205E1 +2.865540000E2,5.655239592E1 +2.867930000E2,5.833716670E1 +2.871150000E2,5.417781453E1 +2.874030000E2,5.332227783E1 +2.876540000E2,5.146836736E1 +2.879540000E2,5.452228720E1 +2.881970000E2,5.025406823E1 +2.884910000E2,5.490648375E1 +2.887280000E2,5.506242221E1 +2.890210000E2,5.400927835E1 +2.892600000E2,5.781126179E1 +2.895430000E2,6.384283902E1 +2.898470000E2,6.340395874E1 +2.901430000E2,5.555395770E1 +2.904560000E2,5.514224078E1 +2.907530000E2,5.346566906E1 +2.910000000E2,5.948406902E1 +2.912590000E2,6.362292628E1 +2.915300000E2,6.175065463E1 +2.918240000E2,6.129817533E1 +2.920790000E2,6.317618325E1 +2.923350000E2,6.137933812E1 +2.926010000E2,5.620086793E1 +2.928740000E2,5.715913846E1 +2.931780000E2,7.028942499E1 +2.934620000E2,6.774357618E1 +2.937770000E2,6.989950413E1 +2.940270000E2,6.631119439E1 +2.943030000E2,6.956920703E1 +2.945570000E2,6.352936554E1 +2.948100000E2,6.981123112E1 +2.951150000E2,5.607171784E1 +2.953950000E2,5.394017247E1 +2.956980000E2,7.110851253E1 +2.959460000E2,6.978848906E1 +2.961900000E2,5.446752823E1 +2.965090000E2,6.309281755E1 +2.968110000E2,6.647752141E1 +2.971300000E2,6.773248230E1 +2.974240000E2,6.289421429E1 +2.977060000E2,5.998905240E1 +2.979500000E2,6.016152671E1 +2.981940000E2,5.851705490E1 +2.984880000E2,6.506323043E1 +2.987430000E2,5.702053645E1 +2.990110000E2,4.890963733E1 +2.993040000E2,5.105737182E1 +2.995650000E2,4.950865545E1 +2.998150000E2,4.713536225E1 +3.000860000E2,6.170154569E1 +3.003780000E2,5.697995513E1 +3.006750000E2,6.496205179E1 +3.009180000E2,5.585602045E1 +3.012120000E2,5.317421587E1 +3.015130000E2,5.532213468E1 +3.017840000E2,5.371543715E1 +3.020520000E2,6.741141038E1 +3.023220000E2,6.638671809E1 +3.025730000E2,5.833940482E1 +3.028700000E2,6.272205104E1 +3.031230000E2,6.150676490E1 +3.034050000E2,6.571826996E1 +3.036710000E2,6.387001854E1 +3.039460000E2,5.704179120E1 +3.042380000E2,5.452420344E1 +3.044730000E2,6.911436343E1 +3.047670000E2,6.747337761E1 +3.050070000E2,6.642457947E1 +3.053010000E2,6.704052830E1 +3.055360000E2,6.335116163E1 +3.058350000E2,6.452879154E1 +3.061310000E2,6.588892290E1 +3.064460000E2,6.065604325E1 +3.066970000E2,5.884139521E1 +3.069890000E2,6.115548360E1 +3.072650000E2,5.474220631E1 +3.075290000E2,5.525228633E1 +3.077890000E2,5.546520153E1 +3.080280000E2,5.799541194E1 +3.083270000E2,5.467819740E1 +3.086250000E2,5.227747322E1 +3.089260000E2,5.802220937E1 +3.091970000E2,5.383690373E1 +3.095040000E2,5.794687305E1 +3.097810000E2,5.426386053E1 +3.100000000E2,5.745164866E1 +3.103300000E2,5.475501144E1 +3.106240000E2,5.154802151E1 +3.108750000E2,5.434380726E1 +3.111540000E2,5.533246388E1 +3.114150000E2,5.554218476E1 +3.116740000E2,5.375334275E1 +3.119200000E2,5.727216331E1 +3.121680000E2,5.235396651E1 +3.124720000E2,6.207307801E1 +3.127180000E2,6.488896117E1 +3.130530000E2,6.168970511E1 +3.133080000E2,6.010687101E1 +3.135950000E2,6.305386662E1 +3.138880000E2,6.214030252E1 +3.141410000E2,5.907513997E1 +3.143960000E2,6.064308138E1 +3.146480000E2,6.195321339E1 +3.148870000E2,6.088765310E1 +3.151830000E2,5.906360624E1 +3.154280000E2,5.864981040E1 +3.157360000E2,5.824424792E1 +3.159750000E2,5.826399021E1 +3.163740000E2,6.051726612E1 +3.166320000E2,6.011967909E1 +3.168940000E2,5.577110603E1 +3.172010000E2,5.372586587E1 +3.174460000E2,5.537091967E1 +3.176890000E2,5.504912063E1 +3.179320000E2,5.264203521E1 +3.182150000E2,5.344854544E1 +3.184600000E2,5.656777951E1 +3.187200000E2,5.398435402E1 +3.189820000E2,5.410695962E1 +3.192460000E2,5.344168860E1 +3.195780000E2,5.697626360E1 +3.198350000E2,6.073105615E1 +3.200880000E2,6.621432780E1 +3.203460000E2,6.597785722E1 +3.205980000E2,5.907542432E1 +3.208920000E2,5.702769809E1 +3.211760000E2,6.207459825E1 +3.214520000E2,5.921715282E1 +3.217010000E2,5.501368146E1 +3.220030000E2,5.927746858E1 +3.223090000E2,5.878714279E1 +3.226530000E2,6.209253703E1 +3.229180000E2,5.801419316E1 +3.231660000E2,6.150680788E1 +3.234110000E2,5.950436139E1 +3.236660000E2,5.694006868E1 +3.239890000E2,5.964691948E1 +3.242420000E2,6.322261269E1 +3.245070000E2,5.967413832E1 +3.247540000E2,5.743115651E1 +3.250010000E2,5.693057833E1 +3.252760000E2,5.076009335E1 +3.255600000E2,5.432440321E1 +3.258270000E2,5.728583073E1 +3.262160000E2,6.158050311E1 +3.264570000E2,5.788548067E1 +3.267330000E2,5.661485397E1 +3.270280000E2,5.698735139E1 +3.272870000E2,5.428158234E1 +3.275550000E2,5.401192370E1 +3.278320000E2,5.894424302E1 +3.281050000E2,5.279140275E1 +3.283850000E2,5.366788524E1 +3.286760000E2,5.569462346E1 +3.289750000E2,5.484501656E1 +3.292730000E2,5.654335493E1 +3.295550000E2,5.483429560E1 +3.298560000E2,5.516099131E1 +3.301720000E2,5.150081287E1 +3.304560000E2,5.126263973E1 +3.307930000E2,4.943715566E1 +3.310330000E2,5.297477083E1 +3.312800000E2,4.994759883E1 +3.316030000E2,5.283028939E1 +3.318860000E2,5.150402936E1 +3.321790000E2,5.777668868E1 +3.325470000E2,5.446937149E1 +3.328030000E2,5.754474494E1 +3.330410000E2,5.437750931E1 +3.333210000E2,5.378201308E1 +3.335760000E2,5.486825362E1 +3.338240000E2,5.338123539E1 +3.340700000E2,5.704649160E1 +3.343740000E2,5.576563429E1 +3.346640000E2,5.503590574E1 +3.349650000E2,5.539431503E1 +3.352080000E2,5.782097549E1 +3.355080000E2,5.260852375E1 +3.358690000E2,6.012616228E1 +3.361400000E2,5.534922411E1 +3.363810000E2,5.436765301E1 +3.366230000E2,5.007736554E1 +3.368850000E2,5.304270830E1 +3.371340000E2,5.106682022E1 +3.373960000E2,5.491262243E1 +3.376890000E2,5.891119644E1 +3.379320000E2,5.554676164E1 +3.382420000E2,5.491809401E1 +3.385700000E2,6.003743295E1 +3.389490000E2,5.964265847E1 +3.392140000E2,6.009419780E1 +3.394780000E2,5.950800538E1 +3.397810000E2,5.514081916E1 +3.400260000E2,5.654810222E1 +3.403230000E2,5.919098275E1 +3.405600000E2,5.937137097E1 +3.408650000E2,5.885711760E1 +3.411560000E2,6.122434193E1 +3.414060000E2,6.101494213E1 +3.416650000E2,5.685059098E1 +3.419710000E2,4.988163583E1 +3.423360000E2,5.097871962E1 +3.426300000E2,6.097968551E1 +3.429260000E2,5.246223058E1 +3.431760000E2,5.140448000E1 +3.434570000E2,5.162147831E1 +3.436910000E2,5.437509469E1 +3.439650000E2,5.588289675E1 +3.442010000E2,5.342482218E1 +3.444930000E2,5.621155564E1 +3.447310000E2,5.753713233E1 +3.450340000E2,5.873821374E1 +3.453240000E2,5.674648484E1 +3.455770000E2,5.843857274E1 +3.458770000E2,6.170678128E1 +3.461770000E2,5.848319050E1 +3.464240000E2,5.996271814E1 +3.467290000E2,5.583139448E1 +3.470000000E2,5.558324990E1 +3.472360000E2,5.638821787E1 +3.474880000E2,6.015129432E1 +3.477550000E2,6.074195357E1 +3.480530000E2,6.258101891E1 +3.483260000E2,6.280209300E1 +3.486840000E2,5.935598721E1 +3.489370000E2,6.423635683E1 +3.492060000E2,7.026891453E1 +3.495130000E2,5.477771858E1 +3.498240000E2,6.143080763E1 +3.500700000E2,6.077206860E1 +3.503130000E2,5.816670512E1 +3.506030000E2,6.220374728E1 +3.509040000E2,6.435510927E1 +3.511560000E2,6.387906049E1 +3.514240000E2,6.324188625E1 +3.517710000E2,6.217871174E1 +3.520510000E2,6.349767138E1 +3.523000000E2,5.947763114E1 +3.525840000E2,5.623947938E1 +3.528810000E2,5.940245648E1 +3.531830000E2,5.323006485E1 +3.534790000E2,4.756673680E1 +3.537830000E2,5.761743216E1 +3.540870000E2,5.701856444E1 +3.543720000E2,5.507707077E1 +3.546320000E2,5.561457107E1 +3.549330000E2,6.036785424E1 +3.552860000E2,5.818319920E1 +3.555390000E2,5.636477080E1 +3.557840000E2,5.686236286E1 +3.560330000E2,6.137502104E1 +3.563290000E2,6.039421004E1 +3.565710000E2,5.873926214E1 +3.568160000E2,5.984737812E1 +3.570890000E2,5.898549785E1 +3.573200000E2,5.804358229E1 +3.576080000E2,5.178825198E1 +3.578380000E2,5.333798630E1 +3.581470000E2,5.663121054E1 +3.584860000E2,5.705169894E1 +3.587470000E2,5.488627438E1 +3.590020000E2,5.493171173E1 +3.592590000E2,5.280801534E1 +3.595110000E2,5.919356657E1 +3.597710000E2,6.061921525E1 +3.600770000E2,5.781838960E1 +3.603810000E2,5.824405535E1 +3.606410000E2,5.734273072E1 +3.608930000E2,5.860073318E1 +3.611440000E2,5.158577335E1 +3.614110000E2,5.569804167E1 +3.617550000E2,5.732029627E1 +3.620530000E2,5.599725951E1 +3.623260000E2,5.427140428E1 +3.625700000E2,5.439119305E1 +3.628680000E2,5.768088704E1 +3.631160000E2,5.322266305E1 +3.634170000E2,5.611257515E1 +3.637150000E2,5.466283243E1 +3.639540000E2,5.648497192E1 +3.642520000E2,5.982456496E1 +3.644910000E2,5.683499776E1 +3.648080000E2,5.424977228E1 +3.650550000E2,5.261749952E1 +3.653010000E2,5.976464589E1 +3.655400000E2,5.630627545E1 +3.658370000E2,5.855663855E1 +3.660660000E2,5.839517218E1 +3.663050000E2,5.701336937E1 +3.666100000E2,6.057417753E1 +3.668530000E2,5.660058929E1 +3.671060000E2,5.360906173E1 +3.673270000E2,5.766761713E1 +3.676020000E2,5.473947199E1 +3.679270000E2,5.730791892E1 +3.681990000E2,5.368134624E1 +3.685210000E2,5.122725302E1 +3.688180000E2,5.413949330E1 +3.690720000E2,5.953240184E1 +3.693650000E2,5.834363401E1 +3.696110000E2,4.952962201E1 +3.698620000E2,6.082605721E1 +3.701240000E2,5.541205242E1 +3.703840000E2,5.595936781E1 +3.706570000E2,5.751180267E1 +3.709050000E2,5.510413826E1 +3.712530000E2,5.236304209E1 +3.715330000E2,5.429686706E1 +3.717680000E2,5.365135821E1 +3.720680000E2,5.442146139E1 +3.723070000E2,5.193301537E1 +3.726070000E2,5.573089397E1 +3.728540000E2,5.084704353E1 +3.731070000E2,5.244752708E1 +3.734250000E2,5.501438711E1 +3.737160000E2,5.701937821E1 +3.739830000E2,5.913008265E1 +3.743030000E2,6.329763996E1 +3.745490000E2,5.828010903E1 +3.748110000E2,5.514928454E1 +3.750560000E2,5.535724603E1 +3.753250000E2,6.062318511E1 +3.756820000E2,5.853801057E1 +3.759720000E2,6.218740595E1 +3.762560000E2,6.130322227E1 +3.764780000E2,5.705598438E1 +3.767430000E2,5.675025411E1 +3.770350000E2,5.562309411E1 +3.773330000E2,6.171478403E1 +3.776660000E2,5.752069737E1 +3.779640000E2,5.869913239E1 +3.782130000E2,5.802158707E1 +3.785030000E2,5.920699755E1 +3.787580000E2,5.984700757E1 +3.790120000E2,5.874214142E1 +3.792820000E2,5.792329599E1 +3.795460000E2,6.240429581E1 +3.798520000E2,5.924961400E1 +3.800960000E2,5.655548581E1 +3.803510000E2,5.997047167E1 +3.806590000E2,5.894207932E1 +3.810310000E2,5.556916558E1 +3.813250000E2,5.709965860E1 +3.815810000E2,5.724657649E1 +3.818690000E2,5.634885250E1 +3.821660000E2,5.381597934E1 +3.824070000E2,5.409431797E1 +3.827020000E2,5.558304395E1 +3.829400000E2,5.836087965E1 +3.832380000E2,5.621848827E1 +3.834740000E2,5.756105430E1 +3.837670000E2,5.972981317E1 +3.840620000E2,6.110722903E1 +3.842970000E2,6.011338906E1 +3.846120000E2,6.632548976E1 +3.849300000E2,5.632542095E1 +3.852340000E2,5.660090160E1 +3.854760000E2,5.637042997E1 +3.857700000E2,6.483820819E1 +3.860160000E2,6.294386681E1 +3.862760000E2,6.248693097E1 +3.865740000E2,5.966646580E1 +3.868130000E2,5.884596060E1 +3.871230000E2,6.069045984E1 +3.874660000E2,5.535227762E1 +3.877260000E2,5.453589064E1 +3.879920000E2,5.803286513E1 +3.882920000E2,6.338575111E1 +3.885370000E2,6.297665471E1 +3.888380000E2,6.078963895E1 +3.890870000E2,6.078711186E1 +3.893350000E2,5.918580133E1 +3.896040000E2,5.645003340E1 +3.899070000E2,5.868887980E1 +3.901560000E2,5.816727924E1 +3.904840000E2,5.908711574E1 +3.907830000E2,5.165109059E1 +3.910410000E2,5.747977046E1 +3.913230000E2,5.600926578E1 +3.916170000E2,5.743239537E1 +3.918580000E2,5.999528635E1 +3.921650000E2,5.924448814E1 +3.924670000E2,6.347749271E1 +3.927590000E2,6.285842009E1 +3.929960000E2,6.439104552E1 +3.933010000E2,6.092208558E1 +3.935450000E2,5.889760176E1 +3.939100000E2,5.798312040E1 +3.941770000E2,5.909426563E1 +3.944250000E2,5.971090911E1 +3.946810000E2,5.379436409E1 +3.949270000E2,5.134339741E1 +3.951700000E2,5.739586279E1 +3.954270000E2,5.255911571E1 +3.956850000E2,5.149310319E1 +3.959500000E2,5.723685944E1 +3.962270000E2,5.622087783E1 +3.964720000E2,6.119098643E1 +3.967310000E2,6.249797436E1 +3.970320000E2,5.838309249E1 +3.973440000E2,5.720898847E1 +3.976100000E2,5.357982700E1 +3.978600000E2,5.091452983E1 +3.981070000E2,4.781274510E1 +3.983520000E2,4.684320786E1 +3.986530000E2,4.867937405E1 +3.988970000E2,4.947454895E1 +3.991740000E2,4.941937240E1 +3.994180000E2,5.206925818E1 +3.997200000E2,5.099596962E1 +3.999720000E2,5.059119317E1 +4.002350000E2,4.980275756E1 +4.004940000E2,5.514017077E1 +4.008060000E2,5.354499430E1 +4.011150000E2,5.377825353E1 +4.013980000E2,5.657928040E1 +4.016460000E2,6.437756844E1 +4.019070000E2,6.072529486E1 +4.021970000E2,5.876291143E1 +4.024430000E2,6.118567430E1 +4.027460000E2,5.925186578E1 +4.030590000E2,5.727531678E1 +4.033610000E2,6.211123432E1 +4.036680000E2,6.041950332E1 +4.039230000E2,6.161200416E1 +4.041780000E2,6.047480336E1 +4.044620000E2,5.905442986E1 +4.047060000E2,5.729915709E1 +4.049630000E2,6.020933408E1 +4.052500000E2,5.845152603E1 +4.055600000E2,5.814304967E1 +4.058210000E2,5.866194002E1 +4.060640000E2,5.736420578E1 +4.063180000E2,6.107395805E1 +4.065790000E2,5.985269852E1 +4.069480000E2,5.745859610E1 +4.072050000E2,5.693680110E1 +4.074960000E2,6.165201185E1 +4.077470000E2,6.131132241E1 +4.079970000E2,5.824414723E1 +4.083050000E2,5.958451387E1 +4.085600000E2,5.739792126E1 +4.088150000E2,5.573389816E1 +4.090850000E2,5.530698039E1 +4.093810000E2,5.634371531E1 +4.096660000E2,5.880658089E1 +4.099920000E2,5.804298004E1 +4.102870000E2,5.688352401E1 +4.106310000E2,5.573115839E1 +4.109280000E2,5.368053116E1 +4.112180000E2,5.474384188E1 +4.114650000E2,5.380195893E1 +4.117660000E2,5.718608674E1 +4.120140000E2,5.703743686E1 +4.122910000E2,5.985228158E1 +4.125620000E2,6.278694860E1 +4.128210000E2,5.839550633E1 +4.130600000E2,6.029373556E1 +4.133710000E2,5.711050636E1 +4.136150000E2,5.200468588E1 +4.138820000E2,5.769230508E1 +4.141370000E2,5.333759168E1 +4.143860000E2,5.632377961E1 +4.146570000E2,5.647744894E1 +4.149040000E2,5.667945226E1 +4.151840000E2,5.669404445E1 +4.154420000E2,6.072374556E1 +4.157420000E2,5.606444578E1 +4.159850000E2,5.623596320E1 +4.162830000E2,5.264542492E1 +4.165340000E2,5.359803767E1 +4.168600000E2,5.691340897E1 +4.171060000E2,5.636326143E1 +4.173490000E2,6.276141082E1 +4.176080000E2,6.197471417E1 +4.178580000E2,5.777170976E1 +4.181050000E2,5.407671770E1 +4.183760000E2,4.795453020E1 +4.186580000E2,5.871005652E1 +4.188870000E2,6.069158080E1 +4.191320000E2,6.112379328E1 +4.193750000E2,5.584116633E1 +4.196280000E2,6.302854070E1 +4.199610000E2,6.640457067E1 +4.202240000E2,6.337314603E1 +4.205160000E2,5.904470105E1 +4.208200000E2,5.799078909E1 +4.210810000E2,5.975635789E1 +4.213260000E2,6.334088587E1 +4.215900000E2,5.849627934E1 +4.218550000E2,5.894070219E1 +4.221030000E2,5.961371776E1 +4.223550000E2,5.281830949E1 +4.225970000E2,4.892580508E1 +4.229130000E2,5.950646935E1 +4.232610000E2,6.303011111E1 +4.235630000E2,6.030515180E1 +4.238060000E2,5.832387195E1 +4.240560000E2,6.126571743E1 +4.243280000E2,5.961805347E1 +4.245710000E2,5.916464366E1 +4.248300000E2,6.404431780E1 +4.251020000E2,6.161392817E1 +4.253630000E2,6.303875005E1 +4.256110000E2,6.294329578E1 +4.258560000E2,6.495739223E1 +4.261620000E2,6.352748415E1 +4.265140000E2,6.360144813E1 +4.267650000E2,6.320185268E1 +4.270250000E2,6.598206760E1 +4.272910000E2,5.736158392E1 +4.275300000E2,5.632655800E1 +4.277760000E2,5.626186588E1 +4.280650000E2,5.992298879E1 +4.283460000E2,5.976814640E1 +4.285960000E2,5.617047451E1 +4.288540000E2,5.410240194E1 +4.291290000E2,5.524345530E1 +4.293550000E2,5.025485629E1 +4.297050000E2,5.094849624E1 +4.299600000E2,5.349595208E1 +4.302230000E2,5.668766668E1 +4.304690000E2,5.470073040E1 +4.307330000E2,5.808421323E1 +4.310240000E2,5.815977776E1 +4.312740000E2,5.751031291E1 +4.315190000E2,6.045600028E1 +4.318300000E2,5.967896339E1 +4.320980000E2,5.746835753E1 +4.324020000E2,5.874054152E1 +4.327010000E2,5.770096959E1 +4.330460000E2,5.851412717E1 +4.333220000E2,5.970473393E1 +4.335930000E2,6.024030776E1 +4.338530000E2,5.564089573E1 +4.341340000E2,5.328000065E1 +4.343790000E2,5.522789934E1 +4.346930000E2,5.271905966E1 +4.349910000E2,5.685384424E1 +4.352400000E2,5.751176106E1 +4.355350000E2,5.654290580E1 +4.357760000E2,5.976937629E1 +4.360780000E2,5.445311615E1 +4.363520000E2,5.460006243E1 +4.366010000E2,5.402958946E1 +4.369120000E2,5.611325616E1 +4.371660000E2,5.675575065E1 +4.374120000E2,5.605818704E1 +4.377070000E2,5.614720111E1 +4.379470000E2,5.596280974E1 +4.382450000E2,5.764305460E1 +4.384820000E2,6.015340826E1 +4.387240000E2,6.073594369E1 +4.390310000E2,5.846982437E1 +4.393110000E2,5.837342754E1 +4.396160000E2,5.758988397E1 +4.398810000E2,5.375393273E1 +4.401700000E2,5.590416510E1 +4.404180000E2,5.649267014E1 +4.406570000E2,5.809884175E1 +4.409200000E2,5.934788425E1 +4.411750000E2,5.883690392E1 +4.414270000E2,5.465512306E1 +4.416780000E2,5.456039720E1 +4.419260000E2,6.053551690E1 +4.422020000E2,5.446896121E1 +4.425270000E2,5.304300238E1 +4.428480000E2,5.413537656E1 +4.431230000E2,5.590535088E1 +4.433740000E2,5.516889265E1 +4.436180000E2,5.375803139E1 +4.439250000E2,5.440731706E1 +4.441670000E2,5.378894171E1 +4.444170000E2,5.676009311E1 +4.447160000E2,5.433224316E1 +4.449620000E2,5.431777666E1 +4.452100000E2,5.220353562E1 +4.454560000E2,5.525232641E1 +4.456950000E2,5.348687858E1 +4.459900000E2,5.571408478E1 +4.462320000E2,5.590054486E1 +4.464840000E2,5.627503595E1 +4.467390000E2,5.824548232E1 +4.469910000E2,5.637049423E1 +4.472460000E2,5.754096885E1 +4.474930000E2,5.335865942E1 +4.477890000E2,5.765888938E1 +4.480780000E2,6.102087464E1 +4.483520000E2,6.006145593E1 +4.486510000E2,5.685958774E1 +4.489610000E2,5.748149351E1 +4.492370000E2,5.709623916E1 +4.495040000E2,5.821496279E1 +4.497570000E2,5.970222946E1 +4.500030000E2,5.750976802E1 +4.502380000E2,5.796549321E1 +4.505370000E2,5.665777454E1 +4.508330000E2,5.605038109E1 +4.510750000E2,5.504306522E1 +4.513230000E2,5.112487870E1 +4.515900000E2,5.559150914E1 +4.518300000E2,5.656933458E1 +4.520810000E2,6.082180135E1 +4.524470000E2,5.774965281E1 +4.527120000E2,5.847728207E1 +4.529730000E2,5.711434047E1 +4.532810000E2,5.503285278E1 +4.535670000E2,5.614330822E1 +4.538610000E2,6.211492489E1 +4.541040000E2,6.003078695E1 +4.543760000E2,5.766611466E1 +4.546280000E2,5.912518267E1 +4.549300000E2,5.969489895E1 +4.551760000E2,5.509558621E1 +4.554320000E2,5.963291683E1 +4.556950000E2,6.194656842E1 +4.559980000E2,6.032793642E1 +4.562390000E2,5.874022110E1 +4.565060000E2,6.016749735E1 +4.567480000E2,5.985596964E1 +4.570070000E2,5.588678859E1 +4.572660000E2,5.541792762E1 +4.575660000E2,4.969164404E1 +4.578050000E2,4.976271573E1 +4.581060000E2,5.634137812E1 +4.583500000E2,5.321783082E1 +4.586280000E2,5.816393976E1 +4.588870000E2,5.817726916E1 +4.591860000E2,5.398220140E1 +4.594690000E2,5.572842498E1 +4.597270000E2,5.759574297E1 +4.600290000E2,5.492384706E1 +4.602790000E2,5.570826682E1 +4.605780000E2,5.619496661E1 +4.608690000E2,5.993990435E1 +4.611730000E2,6.185390750E1 +4.614300000E2,6.125031183E1 +4.617390000E2,6.047450440E1 +4.621070000E2,5.913093195E1 +4.623500000E2,6.032535990E1 +4.626490000E2,5.803726699E1 +4.628910000E2,5.968748294E1 +4.631850000E2,5.792594347E1 +4.634330000E2,5.623910190E1 +4.636850000E2,6.026318401E1 +4.639240000E2,6.002593060E1 +4.641990000E2,5.694813724E1 +4.644200000E2,5.456998819E1 +4.646660000E2,5.683591124E1 +4.649070000E2,5.893829862E1 +4.652630000E2,5.637983039E1 +4.655160000E2,5.571226470E1 +4.657720000E2,5.582065666E1 +4.660510000E2,5.436378979E1 +4.663550000E2,5.697364508E1 +4.666350000E2,5.716664070E1 +4.668800000E2,6.098104772E1 +4.671260000E2,5.932872997E1 +4.673960000E2,5.573089336E1 +4.676430000E2,5.791664461E1 +4.678890000E2,5.589855895E1 +4.681490000E2,6.359324433E1 +4.685010000E2,5.902079393E1 +4.687870000E2,6.085500324E1 +4.690180000E2,6.401116813E1 +4.693190000E2,6.157634911E1 +4.695830000E2,6.068297160E1 +4.698370000E2,5.867738322E1 +4.701080000E2,6.069776659E1 +4.703530000E2,5.904983802E1 +4.706060000E2,5.642725313E1 +4.708480000E2,5.600286970E1 +4.711080000E2,5.678564623E1 +4.714020000E2,5.139543439E1 +4.717220000E2,5.924511995E1 +4.720300000E2,5.309180697E1 +4.722790000E2,5.295961103E1 +4.725820000E2,5.448425692E1 +4.728350000E2,5.346047841E1 +4.731210000E2,5.563518239E1 +4.733630000E2,5.630991562E1 +4.736070000E2,5.519344442E1 +4.738520000E2,5.696356709E1 +4.741150000E2,5.721588368E1 +4.743810000E2,5.556082681E1 +4.746430000E2,5.453201409E1 +4.749610000E2,5.621559396E1 +4.752460000E2,6.170975330E1 +4.755640000E2,6.352753975E1 +4.758660000E2,5.818774343E1 +4.761780000E2,6.177058435E1 +4.764630000E2,5.829511769E1 +4.766910000E2,5.658732029E1 +4.769520000E2,6.006113158E1 +4.772530000E2,6.022385702E1 +4.775200000E2,5.965858240E1 +4.778410000E2,5.970326758E1 +4.780960000E2,5.911597661E1 +4.783440000E2,5.656338446E1 +4.786020000E2,5.723922467E1 +4.788680000E2,5.700163516E1 +4.791490000E2,6.083416080E1 +4.794510000E2,5.899425763E1 +4.797630000E2,5.820674449E1 +4.800620000E2,5.648898879E1 +4.803380000E2,5.465743937E1 +4.806090000E2,5.006847009E1 +4.809050000E2,5.870050130E1 +4.811580000E2,5.878066343E1 +4.814060000E2,5.929414686E1 +4.817070000E2,5.758425183E1 +4.819760000E2,5.151398214E1 +4.822410000E2,5.772956896E1 +4.824880000E2,5.913153701E1 +4.827710000E2,5.814746383E1 +4.830140000E2,6.018356701E1 +4.832870000E2,5.985078792E1 +4.835070000E2,6.081307149E1 +4.837500000E2,5.810932132E1 +4.840440000E2,5.700769218E1 +4.842880000E2,5.815119989E1 +4.845920000E2,5.595850943E1 +4.849330000E2,5.891167795E1 +4.851960000E2,5.413833723E1 +4.854760000E2,6.184122004E1 +4.857700000E2,6.074653742E1 +4.860130000E2,6.033024099E1 +4.862530000E2,5.218562994E1 +4.865560000E2,5.902882093E1 +4.868150000E2,6.397338635E1 +4.870790000E2,6.543155406E1 +4.873440000E2,6.181389827E1 +4.876070000E2,6.381240883E1 +4.878770000E2,6.121521197E1 +4.882210000E2,5.780293585E1 +4.884640000E2,5.941826112E1 +4.887100000E2,6.118399944E1 +4.889830000E2,6.000089150E1 +4.892940000E2,5.873163787E1 +4.895350000E2,5.943116280E1 +4.897770000E2,5.867927357E1 +4.900230000E2,6.190584219E1 +4.903270000E2,6.313044892E1 +4.905550000E2,6.096660510E1 +4.907970000E2,5.773464228E1 +4.911090000E2,5.720144266E1 +4.914750000E2,5.797465536E1 +4.917410000E2,6.063197812E1 +4.920040000E2,5.799562897E1 +4.922950000E2,5.391853563E1 +4.925940000E2,6.053973121E1 +4.928320000E2,5.781822977E1 +4.931250000E2,6.541242849E1 +4.933660000E2,6.151252976E1 +4.936620000E2,5.962569242E1 +4.939140000E2,6.114162989E1 +4.941750000E2,6.074296596E1 +4.944160000E2,5.738425867E1 +4.947510000E2,6.084173002E1 +4.950140000E2,5.911448476E1 +4.953100000E2,6.076832164E1 +4.955530000E2,6.357047625E1 +4.958480000E2,6.344590866E1 +4.960850000E2,6.154350148E1 +4.963870000E2,5.815666478E1 +4.966770000E2,5.862350251E1 +4.969720000E2,5.162851816E1 +4.972640000E2,5.887916548E1 +4.975020000E2,6.130693279E1 +4.977480000E2,6.164914583E1 +4.980300000E2,5.689153252E1 +4.983240000E2,6.054571109E1 +4.985610000E2,5.779234792E1 +4.987980000E2,6.281334084E1 +4.991290000E2,6.074883772E1 +4.994230000E2,6.344972933E1 +4.996620000E2,6.040546490E1 +4.999570000E2,6.143019571E1 +5.002020000E2,6.117826214E1 +5.004980000E2,6.217883653E1 +5.007380000E2,6.294102819E1 +5.010930000E2,6.516475449E1 +5.013550000E2,6.119184016E1 +5.016670000E2,6.096554209E1 +5.019390000E2,6.197647057E1 +5.022530000E2,6.186754720E1 +5.025630000E2,5.954982776E1 +5.028510000E2,6.115486405E1 +5.031440000E2,6.348254173E1 +5.033820000E2,5.960570527E1 +5.036780000E2,5.977682583E1 +5.039180000E2,5.709696054E1 +5.042580000E2,6.265263203E1 +5.045140000E2,6.166583393E1 +5.047590000E2,6.184451596E1 +5.050170000E2,6.196658471E1 +5.053150000E2,6.014630927E1 +5.055610000E2,6.055201466E1 +5.058690000E2,6.189129858E1 +5.062120000E2,6.557808579E1 +5.064770000E2,6.080176744E1 +5.067370000E2,6.164107472E1 +5.069870000E2,6.497302078E1 +5.072490000E2,6.320126990E1 +5.076210000E2,6.073801439E1 +5.078780000E2,5.612097300E1 +5.081420000E2,5.978501024E1 +5.084360000E2,6.061444996E1 +5.086860000E2,6.272142993E1 +5.089270000E2,6.250458760E1 +5.092250000E2,5.860749180E1 +5.094720000E2,6.368373725E1 +5.097760000E2,6.005985592E1 +5.100780000E2,5.959557057E1 +5.103410000E2,6.085764000E1 +5.106360000E2,6.210563273E1 +5.109960000E2,6.125336704E1 +5.112590000E2,5.627814405E1 +5.115470000E2,6.253958528E1 +5.118480000E2,6.261683940E1 +5.120990000E2,5.782347554E1 +5.123560000E2,6.181201679E1 +5.126370000E2,6.425542150E1 +5.129400000E2,6.148973489E1 +5.132300000E2,6.230215374E1 +5.134720000E2,6.332855968E1 +5.137620000E2,5.875203916E1 +5.140950000E2,6.043073123E1 +5.143340000E2,5.829778385E1 +5.146280000E2,6.530539120E1 +5.148660000E2,5.725439078E1 +5.151580000E2,6.255661351E1 +5.153960000E2,6.412193683E1 +5.156410000E2,6.315775814E1 +5.158840000E2,6.025521775E1 +5.161460000E2,5.892698587E1 +5.164080000E2,5.956507822E1 +5.166610000E2,6.162757540E1 +5.169960000E2,6.009082976E1 +5.173360000E2,5.999682475E1 +5.176380000E2,6.121463264E1 +5.178750000E2,5.929809726E1 +5.181460000E2,5.746668369E1 +5.183810000E2,5.919113180E1 +5.186360000E2,5.827917213E1 +5.189280000E2,5.902314388E1 +5.192310000E2,6.116063950E1 +5.195310000E2,6.026149556E1 +5.198180000E2,5.851929656E1 +5.200920000E2,5.750929671E1 +5.204160000E2,5.729942637E1 +5.207470000E2,5.472104161E1 +5.210390000E2,6.169397748E1 +5.213450000E2,6.081589597E1 +5.216480000E2,6.278728872E1 +5.219550000E2,6.266319096E1 +5.222160000E2,6.478840582E1 +5.224820000E2,6.255888661E1 +5.227330000E2,6.119451713E1 +5.229970000E2,6.244953097E1 +5.232800000E2,6.000703556E1 +5.236020000E2,5.885323025E1 +5.239510000E2,5.826073845E1 +5.242570000E2,5.807287072E1 +5.245200000E2,5.931641295E1 +5.247800000E2,5.775994158E1 +5.250310000E2,6.167249992E1 +5.253010000E2,6.027694641E1 +5.255430000E2,6.329659774E1 +5.258240000E2,6.254377160E1 +5.261330000E2,6.489975363E1 +5.263840000E2,5.999325642E1 +5.266440000E2,5.885077446E1 +5.268920000E2,6.439829299E1 +5.272450000E2,6.165608373E1 +5.275110000E2,5.418048629E1 +5.277700000E2,5.656005066E1 +5.280170000E2,6.215252288E1 +5.283170000E2,5.743407158E1 +5.285650000E2,5.831214783E1 +5.288200000E2,6.066735547E1 +5.290820000E2,5.994603081E1 +5.293240000E2,5.951550591E1 +5.295810000E2,6.264700953E1 +5.298380000E2,5.736628274E1 +5.301360000E2,5.590406638E1 +5.304530000E2,6.041033291E1 +5.307000000E2,5.968691140E1 +5.309950000E2,5.730835182E1 +5.312390000E2,5.823026311E1 +5.315470000E2,5.871167442E1 +5.318430000E2,5.990765833E1 +5.321400000E2,6.387020611E1 +5.324510000E2,6.077699448E1 +5.326980000E2,5.895294298E1 +5.329820000E2,6.041997988E1 +5.333050000E2,5.806877757E1 +5.336110000E2,5.682362418E1 +5.340220000E2,5.915478638E1 +5.342790000E2,6.110946170E1 +5.345430000E2,5.735857105E1 +5.348060000E2,5.684014045E1 +5.350480000E2,6.043627860E1 +5.353500000E2,5.982929159E1 +5.356290000E2,5.986217314E1 +5.358770000E2,5.677131614E1 +5.361310000E2,5.763848566E1 +5.363810000E2,6.142463983E1 +5.366730000E2,5.634211854E1 +5.369290000E2,5.547608220E1 +5.372430000E2,5.920768747E1 +5.375170000E2,6.113406656E1 +5.377700000E2,6.208964505E1 +5.380710000E2,6.100572025E1 +5.383260000E2,6.352283467E1 +5.386320000E2,5.898993907E1 +5.389570000E2,5.503782412E1 +5.392560000E2,5.663453376E1 +5.395360000E2,6.406828344E1 +5.398060000E2,5.890955595E1 +5.400700000E2,6.046868424E1 +5.403380000E2,5.979639772E1 +5.406170000E2,5.838685694E1 +5.409120000E2,5.933573087E1 +5.411500000E2,5.970536072E1 +5.414430000E2,5.461931777E1 +5.417380000E2,5.891969668E1 +5.419780000E2,6.086182172E1 +5.422730000E2,5.706230292E1 +5.425150000E2,6.002937875E1 +5.428150000E2,5.733734968E1 +5.430520000E2,5.791730719E1 +5.433430000E2,5.451667439E1 +5.436740000E2,5.601232928E1 +5.439430000E2,6.067749331E1 +5.441960000E2,6.044443396E1 +5.445120000E2,6.332642539E1 +5.448320000E2,6.369907597E1 +5.451010000E2,6.327412880E1 +5.453640000E2,6.380509737E1 +5.456090000E2,6.199528902E1 +5.458550000E2,5.905332967E1 +5.461530000E2,5.748064798E1 +5.463920000E2,5.793139247E1 +5.466900000E2,5.931551966E1 +5.470480000E2,6.345498755E1 +5.473610000E2,5.881486603E1 +5.476220000E2,5.928200098E1 +5.478810000E2,5.577309321E1 +5.481470000E2,5.875325885E1 +5.483980000E2,6.007409743E1 +5.486490000E2,6.070612531E1 +5.488940000E2,5.934549940E1 +5.491520000E2,6.170511636E1 +5.494020000E2,6.376886521E1 +5.497010000E2,6.406587518E1 +5.499360000E2,6.365684538E1 +5.503130000E2,6.009406633E1 +5.505850000E2,6.014270409E1 +5.508500000E2,5.879153887E1 +5.511470000E2,5.883782525E1 +5.513760000E2,5.773432280E1 +5.516350000E2,5.966648889E1 +5.518940000E2,5.472606108E1 +5.521930000E2,5.682429497E1 +5.524670000E2,5.619181968E1 +5.527770000E2,5.997719307E1 +5.530460000E2,5.879335465E1 +5.533410000E2,5.983416170E1 +5.537120000E2,5.957041909E1 +5.539420000E2,5.952828793E1 +5.542510000E2,5.971645274E1 +5.545000000E2,6.419337448E1 +5.547730000E2,6.634363344E1 +5.550770000E2,6.285856457E1 +5.553760000E2,5.654671197E1 +5.556440000E2,5.530754918E1 +5.558640000E2,5.889159880E1 +5.561110000E2,6.213947417E1 +5.563520000E2,6.860243311E1 +5.566480000E2,6.647018679E1 +5.569110000E2,6.420604516E1 +5.571650000E2,6.703462967E1 +5.574140000E2,6.648783593E1 +5.576540000E2,6.634001782E1 +5.579350000E2,6.293734135E1 +5.581770000E2,6.205918741E1 +5.584760000E2,5.247262167E1 +5.587220000E2,5.338734169E1 +5.589670000E2,5.662276325E1 +5.592110000E2,5.533465633E1 +5.595080000E2,5.854271946E1 +5.597740000E2,5.660649413E1 +5.600260000E2,6.333844075E1 +5.602860000E2,6.255943536E1 +5.605830000E2,5.392304486E1 +5.608700000E2,5.760897506E1 +5.611660000E2,5.713086887E1 +5.614070000E2,5.720157535E1 +5.617060000E2,5.026592539E1 +5.619510000E2,5.140995344E1 +5.621950000E2,5.663266073E1 +5.624370000E2,5.202695689E1 +5.627360000E2,6.084568668E1 +5.630550000E2,6.179643015E1 +5.632960000E2,5.833759539E1 +5.635420000E2,5.518782498E1 +5.638400000E2,6.578433315E1 +5.640880000E2,5.706187099E1 +5.643850000E2,5.456571992E1 +5.646300000E2,5.536479424E1 +5.649270000E2,5.930541070E1 +5.651540000E2,6.023199994E1 +5.653960000E2,5.612469871E1 +5.656980000E2,5.462007842E1 +5.659410000E2,5.278259804E1 +5.662890000E2,6.064478329E1 +5.666290000E2,5.682964802E1 +5.669030000E2,5.787828261E1 +5.671980000E2,5.712595091E1 +5.674890000E2,5.729764361E1 +5.677450000E2,5.241850056E1 +5.679980000E2,5.377155525E1 +5.682380000E2,5.485418547E1 +5.684830000E2,5.503746434E1 +5.687810000E2,5.398954643E1 +5.690230000E2,5.401913169E1 +5.693270000E2,5.953896215E1 +5.695680000E2,5.626247467E1 +5.698640000E2,6.040491706E1 +5.701050000E2,5.781813181E1 +5.703620000E2,5.733744349E1 +5.706600000E2,5.669032177E1 +5.709140000E2,5.453731954E1 +5.711580000E2,6.235364316E1 +5.714280000E2,5.958044055E1 +5.716860000E2,5.875696014E1 +5.719750000E2,5.570465139E1 +5.722310000E2,4.865236791E1 +5.725580000E2,5.257975627E1 +5.727900000E2,4.975389893E1 +5.730890000E2,5.658508958E1 +5.733660000E2,5.542284648E1 +5.735960000E2,5.536199936E1 +5.738990000E2,5.813474916E1 +5.741540000E2,5.417788207E1 +5.744370000E2,5.704170918E1 +5.746710000E2,5.736828455E1 +5.749280000E2,5.450874678E1 +5.751790000E2,5.610950442E1 +5.754890000E2,5.919887582E1 +5.758690000E2,5.780639378E1 +5.761700000E2,5.709220641E1 +5.764190000E2,5.815359781E1 +5.767060000E2,5.734155824E1 +5.769500000E2,5.925323086E1 +5.772430000E2,6.084767221E1 +5.775370000E2,5.852024889E1 +5.777780000E2,5.822649765E1 +5.780770000E2,5.829089322E1 +5.783770000E2,5.915481192E1 +5.786460000E2,5.996430642E1 +5.789780000E2,6.016421415E1 +5.792520000E2,6.221052482E1 +5.795090000E2,5.533993101E1 +5.798230000E2,6.537257407E1 +5.801220000E2,6.068836920E1 +5.803770000E2,5.728273812E1 +5.806510000E2,5.648369901E1 +5.809070000E2,5.397363349E1 +5.811690000E2,5.755294689E1 +5.814510000E2,5.957149991E1 +5.816900000E2,5.963092636E1 +5.820650000E2,6.778811076E1 +5.823240000E2,6.247529404E1 +5.825840000E2,6.073516327E1 +5.828380000E2,6.039356998E1 +5.830970000E2,5.764504824E1 +5.833990000E2,6.041396176E1 +5.836470000E2,6.355942860E1 +5.838990000E2,5.785560268E1 +5.841390000E2,6.060017525E1 +5.844440000E2,6.032069521E1 +5.847010000E2,5.760371100E1 +5.849440000E2,5.491620812E1 +5.851990000E2,5.957978671E1 +5.855370000E2,6.103184032E1 +5.857970000E2,5.896875350E1 +5.861120000E2,6.008190546E1 +5.863990000E2,5.687378544E1 +5.866450000E2,5.874294643E1 +5.869410000E2,5.870806017E1 +5.871860000E2,5.809143232E1 +5.874740000E2,5.847828699E1 +5.877850000E2,5.846232778E1 +5.880500000E2,5.755876921E1 +5.883650000E2,5.609032758E1 +5.887050000E2,5.685283394E1 +5.889730000E2,5.945975832E1 +5.892710000E2,6.114741701E1 +5.895110000E2,6.316132147E1 +5.898100000E2,6.715155367E1 +5.900480000E2,6.367866992E1 +5.903470000E2,5.131949120E1 +5.905900000E2,5.646494575E1 +5.908880000E2,6.096218752E1 +5.911270000E2,6.089171796E1 +5.913720000E2,6.319522071E1 +5.916410000E2,6.016553529E1 +5.920560000E2,5.915189166E1 +5.923330000E2,5.776862186E1 +5.925640000E2,5.840366445E1 +5.927890000E2,5.978914182E1 +5.930440000E2,6.058699711E1 +5.932650000E2,6.012895387E1 +5.935140000E2,6.295025578E1 +5.937520000E2,6.280196012E1 +5.940110000E2,6.194014009E1 +5.943340000E2,6.483906300E1 +5.945870000E2,5.918257578E1 +5.948380000E2,5.620333930E1 +5.951900000E2,6.323403421E1 +5.954240000E2,6.183177681E1 +5.956620000E2,6.120300936E1 +5.959650000E2,5.836925111E1 +5.961890000E2,6.106023171E1 +5.964920000E2,6.153658324E1 +5.967310000E2,6.490772593E1 +5.969960000E2,6.274228676E1 +5.972520000E2,6.139008510E1 +5.975050000E2,6.281232833E1 +5.978180000E2,6.254982632E1 +5.980890000E2,6.205794184E1 +5.983900000E2,6.438771503E1 +5.986230000E2,6.052772463E1 +5.988520000E2,6.375966703E1 +5.991380000E2,5.869985301E1 +5.993860000E2,6.050357712E1 +5.996630000E2,5.547835745E1 +5.999280000E2,5.400421666E1 +6.001960000E2,5.668252186E1 +6.004880000E2,6.001970320E1 +6.007680000E2,6.056987745E1 +6.010550000E2,6.461211967E1 +6.014090000E2,6.399838195E1 +6.016840000E2,5.485596323E1 +6.019450000E2,5.731519087E1 +6.022080000E2,6.691878914E1 +6.024720000E2,6.479201876E1 +6.027260000E2,6.412847214E1 +6.029760000E2,6.025795068E1 +6.032190000E2,6.098133491E1 +6.035120000E2,5.689387521E1 +6.038040000E2,5.639928101E1 +6.041550000E2,5.328068252E1 +6.044370000E2,5.639829798E1 +6.046770000E2,5.892330560E1 +6.049510000E2,5.315638413E1 +6.051900000E2,5.740260439E1 +6.054620000E2,5.339391440E1 +6.057500000E2,5.310371918E1 +6.060710000E2,5.460903952E1 +6.063050000E2,5.407304270E1 +6.065540000E2,5.870790541E1 +6.068060000E2,5.576782972E1 +6.070790000E2,5.976954147E1 +6.074640000E2,6.181180531E1 +6.077240000E2,6.194364733E1 +6.080150000E2,6.794225297E1 +6.082590000E2,6.236601361E1 +6.085470000E2,6.002700779E1 +6.088450000E2,5.971993236E1 +6.090930000E2,5.954735434E1 +6.093460000E2,5.907202371E1 +6.095920000E2,5.993658420E1 +6.098910000E2,5.530332259E1 +6.101850000E2,5.531802018E1 +6.104220000E2,5.376885939E1 +6.107780000E2,5.735355871E1 +6.110210000E2,5.868610156E1 +6.112710000E2,5.312122754E1 +6.115670000E2,5.745102631E1 +6.118550000E2,5.535536940E1 +6.121540000E2,5.088728731E1 +6.123960000E2,5.266907791E1 +6.126860000E2,5.386493253E1 +6.130010000E2,5.670623073E1 +6.132810000E2,5.563278655E1 +6.135150000E2,5.267172926E1 +6.138540000E2,5.386148816E1 +6.141880000E2,5.716468210E1 +6.144880000E2,5.526918781E1 +6.147190000E2,5.659553915E1 +6.149610000E2,5.648341007E1 +6.152730000E2,5.711745846E1 +6.155520000E2,5.918800114E1 +6.158010000E2,5.642548609E1 +6.161000000E2,5.635896926E1 +6.163480000E2,5.899225051E1 +6.166180000E2,5.374343244E1 +6.168690000E2,4.891042404E1 +6.172050000E2,5.065835680E1 +6.174560000E2,5.685264653E1 +6.177340000E2,5.429270039E1 +6.179930000E2,5.499548313E1 +6.182940000E2,5.407177565E1 +6.185300000E2,5.356533799E1 +6.188300000E2,5.378190643E1 +6.191140000E2,5.189020817E1 +6.193870000E2,5.046647494E1 +6.196450000E2,5.501107364E1 +6.198910000E2,5.798814538E1 +6.201660000E2,5.360844474E1 +6.205080000E2,5.353935610E1 +6.208080000E2,5.620189936E1 +6.210820000E2,6.216008765E1 +6.213360000E2,5.767015155E1 +6.216520000E2,6.210101060E1 +6.219320000E2,5.928042926E1 +6.221800000E2,6.394496555E1 +6.224980000E2,5.872213561E1 +6.227430000E2,5.927091626E1 +6.230010000E2,5.235592166E1 +6.232430000E2,6.313120608E1 +6.235470000E2,6.005436888E1 +6.238480000E2,5.999836557E1 +6.240930000E2,5.879748041E1 +6.243920000E2,5.978277378E1 +6.246440000E2,6.050724590E1 +6.249480000E2,6.282777276E1 +6.252520000E2,6.080897043E1 +6.255640000E2,5.889462949E1 +6.258270000E2,5.550476615E1 +6.260730000E2,5.586785505E1 +6.263620000E2,6.576560120E1 +6.266590000E2,6.102361259E1 +6.270050000E2,6.110507706E1 +6.272870000E2,5.753592100E1 +6.275410000E2,6.297666729E1 +6.278490000E2,6.037594793E1 +6.281160000E2,5.849898506E1 +6.284180000E2,6.165631601E1 +6.287090000E2,6.096774109E1 +6.289510000E2,6.176590968E1 +6.292460000E2,5.947061017E1 +6.294820000E2,6.109202024E1 +6.297790000E2,5.322559935E1 +6.301160000E2,4.971181861E1 +6.303880000E2,5.533921521E1 +6.307250000E2,5.478410742E1 +6.310240000E2,5.647795083E1 +6.313200000E2,5.797504265E1 +6.315690000E2,5.403019222E1 +6.318640000E2,5.301910781E1 +6.321010000E2,5.096544207E1 +6.324030000E2,5.324435941E1 +6.326360000E2,5.447050361E1 +6.328960000E2,5.932781903E1 +6.331500000E2,5.967228428E1 +6.334640000E2,6.319489971E1 +6.337810000E2,5.820271574E1 +6.340710000E2,5.910289699E1 +6.343170000E2,5.681937370E1 +6.346260000E2,5.582227275E1 +6.349350000E2,5.745831651E1 +6.352100000E2,5.504019385E1 +6.354620000E2,5.072303887E1 +6.357190000E2,5.366082959E1 +6.359690000E2,5.380227314E1 +6.362560000E2,4.818205454E1 +6.365090000E2,5.989908626E1 +6.368780000E2,5.659012846E1 +6.371610000E2,5.593157997E1 +6.374460000E2,5.135237935E1 +6.377000000E2,5.687788515E1 +6.379550000E2,5.943975502E1 +6.382630000E2,6.290957992E1 +6.385230000E2,5.827099811E1 +6.387780000E2,5.686391746E1 +6.390620000E2,5.771790911E1 +6.393200000E2,5.390066131E1 +6.395830000E2,5.358231960E1 +6.398480000E2,5.564565007E1 +6.401490000E2,5.205482155E1 +6.404200000E2,5.852280051E1 +6.407340000E2,4.836326193E1 +6.409980000E2,5.905115701E1 +6.412560000E2,5.622349390E1 +6.415040000E2,5.891737338E1 +6.417460000E2,5.749377856E1 +6.420310000E2,5.414095183E1 +6.422680000E2,5.482109112E1 +6.425170000E2,5.202942051E1 +6.428000000E2,4.903409276E1 +6.431250000E2,5.495098254E1 +6.434650000E2,5.777911761E1 +6.437680000E2,5.329076638E1 +6.440080000E2,5.886592322E1 +6.443070000E2,5.661637111E1 +6.445560000E2,5.459133399E1 +6.448230000E2,4.858613706E1 +6.450990000E2,5.642020356E1 +6.453590000E2,5.634614530E1 +6.456240000E2,5.769024626E1 +6.458900000E2,6.037646239E1 +6.461470000E2,5.712013563E1 +6.464260000E2,5.393237723E1 +6.467570000E2,5.443825449E1 +6.469850000E2,5.464133184E1 +6.472460000E2,5.185343249E1 +6.475170000E2,5.670688718E1 +6.477900000E2,5.808659132E1 +6.480150000E2,5.879711687E1 +6.483250000E2,5.860991669E1 +6.485730000E2,5.600484597E1 +6.488230000E2,5.291438286E1 +6.491020000E2,5.869236753E1 +6.493260000E2,5.826316690E1 +6.496250000E2,5.619306699E1 +6.499850000E2,6.085970714E1 +6.502400000E2,6.051231588E1 +6.505400000E2,6.096601072E1 +6.507990000E2,6.197068990E1 +6.511180000E2,6.520817743E1 +6.513810000E2,6.377577246E1 +6.516860000E2,6.105485617E1 +6.519940000E2,5.890751001E1 +6.522910000E2,5.911253604E1 +6.525370000E2,6.291937986E1 +6.528540000E2,6.252638881E1 +6.532210000E2,6.337356348E1 +6.535270000E2,5.894334263E1 +6.537830000E2,5.754939005E1 +6.540930000E2,5.500698560E1 +6.543880000E2,5.014350898E1 +6.546880000E2,5.646260920E1 +6.549870000E2,5.951282585E1 +6.552920000E2,6.099782791E1 +6.555480000E2,6.065538365E1 +6.558100000E2,6.827371953E1 +6.560790000E2,6.035931154E1 +6.563820000E2,6.267306134E1 +6.566350000E2,5.826452213E1 +6.568970000E2,6.092938143E1 +6.572010000E2,6.534130041E1 +6.575130000E2,6.111837506E1 +6.577770000E2,5.826481723E1 +6.580330000E2,5.918147323E1 +6.582980000E2,6.100230752E1 +6.585510000E2,6.302217459E1 +6.588060000E2,5.754956715E1 +6.591080000E2,6.111201710E1 +6.593520000E2,6.017410469E1 +6.597040000E2,6.031944923E1 +6.599450000E2,5.943575512E1 +6.602120000E2,5.868776340E1 +6.605570000E2,5.940543513E1 +6.608500000E2,5.886327816E1 +6.610920000E2,5.770522648E1 +6.613840000E2,5.442777508E1 +6.616200000E2,5.394232060E1 +6.619220000E2,5.856638842E1 +6.622160000E2,5.742664400E1 +6.624600000E2,5.472498345E1 +6.627560000E2,5.672985390E1 +6.629770000E2,5.834702318E1 +6.632250000E2,5.907602823E1 +6.634810000E2,5.873031221E1 +6.637670000E2,5.757130737E1 +6.640040000E2,5.572185824E1 +6.643070000E2,5.959142979E1 +6.645480000E2,5.851623707E1 +6.648520000E2,5.856887935E1 +6.650940000E2,6.397218192E1 +6.653890000E2,5.963692586E1 +6.656210000E2,5.934207027E1 +6.659580000E2,5.667856430E1 +6.662640000E2,5.811017468E1 +6.665550000E2,5.505265787E1 +6.667990000E2,5.558350894E1 +6.671320000E2,6.063017800E1 +6.674000000E2,5.568411381E1 +6.676510000E2,5.981422062E1 +6.679580000E2,5.723024768E1 +6.682820000E2,5.036028104E1 +6.685240000E2,5.199205823E1 +6.687970000E2,5.367328475E1 +6.691280000E2,5.936914884E1 +6.693940000E2,5.657797691E1 +6.696490000E2,6.065879377E1 +6.699270000E2,5.657054255E1 +6.702000000E2,5.655716576E1 +6.704770000E2,5.823562265E1 +6.707350000E2,6.065030224E1 +6.710140000E2,6.110776530E1 +6.712700000E2,5.714357796E1 +6.715170000E2,5.604236164E1 +6.717930000E2,6.041748871E1 +6.721240000E2,6.019765334E1 +6.724270000E2,5.928602786E1 +6.727750000E2,5.973060669E1 +6.730710000E2,6.059869751E1 +6.733250000E2,6.116850166E1 +6.736400000E2,6.145214709E1 +6.738890000E2,6.020118097E1 +6.741670000E2,6.048579637E1 +6.744720000E2,6.225337088E1 +6.747550000E2,5.853636068E1 +6.750030000E2,5.999204871E1 +6.752840000E2,5.433989895E1 +6.755100000E2,5.847308735E1 +6.758420000E2,5.913726954E1 +6.760830000E2,6.049449503E1 +6.763830000E2,5.545572399E1 +6.766370000E2,6.246077536E1 +6.768920000E2,6.029598130E1 +6.771340000E2,6.005864514E1 +6.774230000E2,6.582269585E1 +6.776700000E2,6.255104294E1 +6.779140000E2,6.623711836E1 +6.781740000E2,6.684819787E1 +6.784850000E2,6.877250850E1 +6.787420000E2,6.157084767E1 +6.789860000E2,6.054068573E1 +6.793290000E2,6.069583213E1 +6.795810000E2,6.124898856E1 +6.798240000E2,6.136691849E1 +6.800900000E2,6.035594762E1 +6.803920000E2,5.654106541E1 +6.806920000E2,5.587565134E1 +6.809940000E2,5.642134155E1 +6.813020000E2,5.749983358E1 +6.815830000E2,5.576151961E1 +6.818120000E2,5.714589311E1 +6.820580000E2,5.969510914E1 +6.823020000E2,5.824123453E1 +6.825680000E2,5.779273115E1 +6.828630000E2,5.699644891E1 +6.831010000E2,5.900876644E1 +6.833500000E2,6.335540424E1 +6.835940000E2,6.280432027E1 +6.838340000E2,6.194675910E1 +6.841290000E2,5.801082069E1 +6.843650000E2,5.652506879E1 +6.846570000E2,5.895404856E1 +6.848910000E2,5.873705448E1 +6.851950000E2,5.589704153E1 +6.855380000E2,5.379672362E1 +6.857910000E2,6.287056471E1 +6.860900000E2,6.081817617E1 +6.863340000E2,6.807593043E1 +6.866320000E2,5.604389930E1 +6.868800000E2,6.712075434E1 +6.871750000E2,6.290238552E1 +6.874740000E2,6.473105179E1 +6.877330000E2,5.873835234E1 +6.880180000E2,5.800563858E1 +6.882620000E2,5.540095032E1 +6.885810000E2,6.197881428E1 +6.888280000E2,5.541258482E1 +6.890890000E2,5.558277465E1 +6.894010000E2,4.965923685E1 +6.897080000E2,4.860020107E1 +6.899730000E2,5.608167548E1 +6.902300000E2,5.381305593E1 +6.904990000E2,6.079286270E1 +6.908000000E2,6.446965644E1 +6.910380000E2,6.556266140E1 +6.913400000E2,5.418444209E1 +6.916350000E2,5.205102491E1 +6.919820000E2,5.812981404E1 +6.922410000E2,6.500705260E1 +6.925070000E2,6.149947285E1 +6.927750000E2,5.695315316E1 +6.930870000E2,5.775854948E1 +6.933870000E2,6.523399833E1 +6.936300000E2,6.692630865E1 +6.939270000E2,5.793447825E1 +6.942230000E2,5.746396110E1 +6.944770000E2,6.017975210E1 +6.947150000E2,5.956759439E1 +6.950320000E2,6.391288151E1 +6.953110000E2,6.484415086E1 +6.955650000E2,6.664209540E1 +6.958410000E2,6.746668632E1 +6.961050000E2,5.775664920E1 +6.964050000E2,6.383035698E1 +6.967020000E2,5.816763892E1 +6.969600000E2,6.921190909E1 +6.972400000E2,6.165047809E1 +6.975080000E2,5.666810057E1 +6.977540000E2,6.417546300E1 +6.980020000E2,5.788971486E1 +6.982730000E2,5.486922606E1 +6.985850000E2,5.576434723E1 +6.988820000E2,5.548978795E1 +6.991460000E2,5.886820316E1 +6.993970000E2,6.226406326E1 +6.996480000E2,5.601534080E1 +6.999400000E2,5.901385758E1 +7.002040000E2,5.720709772E1 +7.005120000E2,6.318399213E1 +7.007580000E2,6.338981741E1 +7.010170000E2,6.747312486E1 +7.012670000E2,5.788999692E1 +7.015450000E2,4.434465006E1 +7.018710000E2,6.439013955E1 +7.021480000E2,5.375342664E1 +7.023700000E2,6.398282027E1 +7.026160000E2,5.857909138E1 +7.029130000E2,5.670439641E1 +7.031590000E2,5.749786365E1 +7.034320000E2,5.181710985E1 +7.036770000E2,5.871535868E1 +7.039520000E2,5.470297527E1 +7.042240000E2,5.771822323E1 +7.044750000E2,5.236261523E1 +7.047130000E2,5.595332709E1 +7.050480000E2,5.576748295E1 +7.053040000E2,5.334869600E1 +7.055590000E2,5.337806625E1 +7.058180000E2,5.499892680E1 +7.060900000E2,5.490963435E1 +7.063980000E2,5.551078540E1 +7.066680000E2,5.358868238E1 +7.069300000E2,5.203182642E1 +7.071760000E2,5.771053387E1 +7.074630000E2,5.175835182E1 +7.077440000E2,5.402526598E1 +7.080400000E2,5.754717994E1 +7.083470000E2,6.103880587E1 +7.086400000E2,6.284824916E1 +7.088840000E2,6.674666322E1 +7.092010000E2,6.194114278E1 +7.094980000E2,5.796289911E1 +7.097580000E2,5.475547679E1 +7.100170000E2,5.804024708E1 +7.102650000E2,5.606423134E1 +7.105550000E2,5.319247933E1 +7.107930000E2,5.625991375E1 +7.110940000E2,5.589539698E1 +7.114730000E2,6.073460415E1 +7.117930000E2,6.208342045E1 +7.120530000E2,6.335117127E1 +7.123290000E2,5.821275565E1 +7.126280000E2,5.793160357E1 +7.128780000E2,5.509944006E1 +7.131790000E2,5.578357696E1 +7.134760000E2,5.632534225E1 +7.137350000E2,5.466315647E1 +7.140450000E2,5.914530785E1 +7.143020000E2,6.280432125E1 +7.146020000E2,6.333348539E1 +7.149790000E2,5.698482465E1 +7.152920000E2,5.474810308E1 +7.155370000E2,5.417920207E1 +7.157880000E2,6.392184792E1 +7.160720000E2,6.565549591E1 +7.163130000E2,6.082705714E1 +7.166120000E2,5.816285927E1 +7.168430000E2,5.809201859E1 +7.170930000E2,6.016105207E1 +7.173350000E2,5.162287691E1 +7.176230000E2,5.754317879E1 +7.179310000E2,6.166304542E1 +7.181770000E2,6.177004553E1 +7.184320000E2,6.274574776E1 +7.186900000E2,6.104994734E1 +7.189920000E2,5.735301480E1 +7.192340000E2,5.830205645E1 +7.194890000E2,6.212782217E1 +7.197420000E2,5.467685243E1 +7.200420000E2,5.313970583E1 +7.202920000E2,5.278680647E1 +7.205360000E2,5.474141102E1 +7.209140000E2,6.241771654E1 +7.212600000E2,6.394594172E1 +7.215560000E2,6.348358734E1 +7.217980000E2,6.112734048E1 +7.220450000E2,6.226451183E1 +7.222930000E2,6.534082516E1 +7.225960000E2,6.114019283E1 +7.228390000E2,6.421228964E1 +7.231230000E2,6.814847387E1 +7.233690000E2,6.275446304E1 +7.236190000E2,6.679153921E1 +7.239280000E2,6.537583699E1 +7.241850000E2,6.212976374E1 +7.245300000E2,6.553556935E1 +7.248220000E2,5.834030427E1 +7.250930000E2,5.992153646E1 +7.253380000E2,5.595099295E1 +7.256370000E2,5.720822528E1 +7.258800000E2,5.423516872E1 +7.261770000E2,5.906139652E1 +7.264140000E2,6.204477132E1 +7.267140000E2,6.368823365E1 +7.269550000E2,6.513672214E1 +7.272500000E2,6.364997971E1 +7.275370000E2,6.269941998E1 +7.278570000E2,5.948773609E1 +7.281020000E2,5.789544973E1 +7.283740000E2,6.305528689E1 +7.286400000E2,6.245554089E1 +7.289690000E2,6.033221518E1 +7.292310000E2,5.940071821E1 +7.294970000E2,6.176178101E1 +7.298020000E2,5.355172623E1 +7.300580000E2,5.535292187E1 +7.303150000E2,5.274398781E1 +7.305750000E2,5.399957194E1 +7.308780000E2,5.819691646E1 +7.312070000E2,5.434897588E1 +7.315090000E2,6.041787911E1 +7.317850000E2,5.617860881E1 +7.320560000E2,5.558770875E1 +7.323290000E2,5.151264449E1 +7.325860000E2,5.612143969E1 +7.328800000E2,5.405001557E1 +7.331120000E2,5.455354216E1 +7.334090000E2,5.716252136E1 +7.337070000E2,6.416157102E1 +7.339910000E2,6.098010142E1 +7.343020000E2,6.194029449E1 +7.346500000E2,6.091313037E1 +7.349540000E2,5.846954669E1 +7.352410000E2,5.743489407E1 +7.355320000E2,5.872669957E1 +7.357800000E2,5.859080967E1 +7.360560000E2,6.053269456E1 +7.363220000E2,6.117884455E1 +7.366590000E2,5.809887850E1 +7.369420000E2,5.453224539E1 +7.372510000E2,5.639337460E1 +7.375040000E2,5.373613181E1 +7.378630000E2,5.066236714E1 +7.381160000E2,4.653740377E1 +7.383650000E2,6.375011526E1 +7.386730000E2,6.282181577E1 +7.389830000E2,6.727660972E1 +7.392340000E2,6.413328322E1 +7.394790000E2,6.184881400E1 +7.397290000E2,6.430634497E1 +7.400250000E2,6.276256291E1 +7.402610000E2,6.297441350E1 +7.405590000E2,5.306586823E1 +7.408610000E2,5.403016569E1 +7.412260000E2,5.749263443E1 +7.415060000E2,5.657932114E1 +7.417820000E2,5.532222303E1 +7.420430000E2,5.911133378E1 +7.423450000E2,5.822379827E1 +7.426470000E2,6.311870884E1 +7.428860000E2,5.964121243E1 +7.431940000E2,5.708688763E1 +7.434960000E2,5.782189241E1 +7.437480000E2,5.745118469E1 +7.440380000E2,5.258772989E1 +7.442830000E2,5.325984780E1 +7.445410000E2,5.216709684E1 +7.447900000E2,5.485283680E1 +7.450520000E2,6.638751453E1 +7.453640000E2,6.256149725E1 +7.456370000E2,6.851667797E1 +7.459020000E2,6.356784575E1 +7.462040000E2,6.586178842E1 +7.464510000E2,6.099626883E1 +7.467420000E2,6.874341983E1 +7.470300000E2,5.690479739E1 +7.472670000E2,5.749513215E1 +7.475860000E2,5.743840209E1 +7.478480000E2,6.695338823E1 +7.481550000E2,6.575566103E1 +7.484170000E2,6.244751264E1 +7.486690000E2,6.206430480E1 +7.489520000E2,5.755143157E1 +7.492450000E2,6.343498072E1 +7.494820000E2,6.599354682E1 +7.497800000E2,5.994269627E1 +7.500210000E2,6.480563885E1 +7.503160000E2,5.962320355E1 +7.505550000E2,5.907805627E1 +7.508860000E2,5.452673237E1 +7.511450000E2,5.413358853E1 +7.514110000E2,5.786691992E1 +7.516870000E2,6.185088179E1 +7.519570000E2,5.432685780E1 +7.522050000E2,5.297819944E1 +7.524920000E2,5.290855554E1 +7.527910000E2,5.828859659E1 +7.530300000E2,5.880189294E1 +7.533360000E2,5.500578631E1 +7.535910000E2,5.476677878E1 +7.538330000E2,5.414240587E1 +7.541650000E2,5.332866170E1 +7.544620000E2,5.193802785E1 +7.547080000E2,5.242932681E1 +7.549590000E2,6.024921863E1 +7.552020000E2,5.537701523E1 +7.554960000E2,5.489617845E1 +7.557330000E2,5.384280286E1 +7.560410000E2,5.406125999E1 +7.562870000E2,5.246560959E1 +7.565320000E2,5.374729291E1 +7.567680000E2,5.542801483E1 +7.570630000E2,5.525770987E1 +7.573930000E2,5.847670432E1 +7.576660000E2,5.822188632E1 +7.579180000E2,5.822901451E1 +7.582040000E2,5.458975346E1 +7.584820000E2,5.438683247E1 +7.587800000E2,5.260449368E1 +7.590260000E2,5.371245859E1 +7.592870000E2,4.983203663E1 +7.595420000E2,5.018089077E1 +7.598380000E2,5.950969681E1 +7.601480000E2,5.769305363E1 +7.604800000E2,5.747567937E1 +7.607190000E2,5.446335810E1 +7.610040000E2,5.463229896E1 +7.612970000E2,5.644916160E1 +7.615560000E2,5.809520116E1 +7.618460000E2,5.406577519E1 +7.621050000E2,5.362277750E1 +7.623930000E2,5.868559294E1 +7.626230000E2,5.548744129E1 +7.628890000E2,5.613986675E1 +7.631890000E2,5.592058678E1 +7.634870000E2,5.947938191E1 +7.638120000E2,5.945990241E1 +7.640830000E2,5.354091788E1 +7.643270000E2,5.910847411E1 +7.645670000E2,6.112853730E1 +7.648120000E2,5.617469613E1 +7.650520000E2,5.678172470E1 +7.653190000E2,5.293731054E1 +7.655730000E2,5.571573154E1 +7.658430000E2,5.239475172E1 +7.660900000E2,5.710555790E1 +7.663840000E2,5.593714408E1 +7.666500000E2,5.506488062E1 +7.669100000E2,5.276148627E1 +7.671530000E2,5.087813070E1 +7.674500000E2,4.966858228E1 +7.677070000E2,4.690170064E1 +7.679870000E2,5.097718665E1 +7.682460000E2,5.173969669E1 +7.685220000E2,5.562988056E1 +7.687630000E2,5.194720020E1 +7.690630000E2,5.590118249E1 +7.693610000E2,5.613585205E1 +7.696030000E2,5.417299550E1 +7.698530000E2,5.925774948E1 +7.702010000E2,5.729895975E1 +7.704610000E2,5.765570707E1 +7.707610000E2,6.211008380E1 +7.710570000E2,5.846530012E1 +7.712970000E2,5.766544416E1 +7.715460000E2,5.716238768E1 +7.718080000E2,5.700535494E1 +7.720510000E2,5.592606747E1 +7.723260000E2,5.771214429E1 +7.725940000E2,5.753442175E1 +7.728830000E2,5.541298336E1 +7.731860000E2,5.137853822E1 +7.735420000E2,5.462649470E1 +7.738320000E2,5.454281912E1 +7.740820000E2,6.803752283E1 +7.743260000E2,6.852980541E1 +7.745820000E2,7.007631543E1 +7.748270000E2,7.009876218E1 +7.751160000E2,6.950363051E1 +7.753520000E2,6.338954984E1 +7.755910000E2,5.500200077E1 +7.758880000E2,5.358702362E1 +7.761340000E2,5.718303470E1 +7.763730000E2,5.887519420E1 +7.767050000E2,5.795457078E1 +7.769970000E2,5.796499201E1 +7.773000000E2,5.644912180E1 +7.775570000E2,5.804780214E1 +7.778740000E2,5.958528627E1 +7.781300000E2,5.635913866E1 +7.784430000E2,5.593106857E1 +7.787280000E2,6.063168213E1 +7.789960000E2,5.917208792E1 +7.792560000E2,5.719923422E1 +7.795050000E2,6.400429125E1 +7.797680000E2,5.733192807E1 +7.800440000E2,6.018331087E1 +7.803000000E2,6.350407169E1 +7.805530000E2,6.357762743E1 +7.808590000E2,6.772563953E1 +7.811430000E2,6.431848914E1 +7.814050000E2,5.710721917E1 +7.816950000E2,5.646111127E1 +7.819500000E2,5.564600214E1 +7.822050000E2,6.362802489E1 +7.824550000E2,6.278310471E1 +7.827010000E2,5.851995741E1 +7.829620000E2,5.759567059E1 +7.832630000E2,5.449669640E1 +7.835070000E2,6.040303881E1 +7.837500000E2,5.743841461E1 +7.839990000E2,6.096558185E1 +7.842840000E2,7.161293257E1 +7.845270000E2,7.417435903E1 +7.848410000E2,6.386070968E1 +7.851390000E2,6.234904760E1 +7.854350000E2,6.321731436E1 +7.856820000E2,6.294103551E1 +7.859780000E2,6.210337552E1 +7.862150000E2,6.765383904E1 +7.865650000E2,6.346682761E1 +7.868610000E2,6.221020232E1 +7.871280000E2,6.119530731E1 +7.873850000E2,5.314248269E1 +7.876880000E2,5.288680780E1 +7.879230000E2,5.064349321E1 +7.882230000E2,5.786336298E1 +7.884630000E2,5.341864841E1 +7.887250000E2,5.286568073E1 +7.890140000E2,5.272997567E1 +7.893180000E2,5.904110581E1 +7.896690000E2,5.748622391E1 +7.899200000E2,5.773986136E1 +7.902160000E2,5.480967078E1 +7.904710000E2,5.627241382E1 +7.907280000E2,5.456362797E1 +7.909900000E2,5.766408512E1 +7.912380000E2,5.413586400E1 +7.914940000E2,5.234403284E1 +7.917720000E2,5.190170354E1 +7.920440000E2,5.227759392E1 +7.923170000E2,4.410400383E1 +7.926220000E2,3.508270700E1 +7.929370000E2,3.887828085E1 +7.932030000E2,4.522069604E1 +7.934660000E2,4.928233980E1 +7.937420000E2,4.706401379E1 +7.940710000E2,4.988989997E1 +7.943700000E2,5.767827889E1 +7.946060000E2,5.506606719E1 +7.949050000E2,6.107887773E1 +7.952060000E2,5.849609892E1 +7.955030000E2,5.343173328E1 +7.957490000E2,5.007726003E1 +7.960580000E2,4.763873915E1 +7.963010000E2,5.045894898E1 +7.966040000E2,6.859700710E1 +7.968900000E2,6.734256534E1 +7.971550000E2,6.661489392E1 +7.974110000E2,6.556398865E1 +7.976580000E2,5.519705677E1 +7.979230000E2,5.503316479E1 +7.982060000E2,5.955770829E1 +7.984280000E2,5.777834711E1 +7.987260000E2,6.050467535E1 +7.989700000E2,5.583639573E1 +7.993330000E2,5.988908902E1 +7.995750000E2,5.875791040E1 +7.998670000E2,6.166637478E1 +8.001160000E2,5.690435901E1 +8.004160000E2,5.599911293E1 +8.006610000E2,5.889628547E1 +8.009180000E2,6.227540789E1 +8.011740000E2,6.572663811E1 +8.014300000E2,6.013467784E1 +8.016770000E2,6.250368579E1 +8.019910000E2,6.532292099E1 +8.023560000E2,5.377170031E1 +8.026370000E2,5.535595108E1 +8.029110000E2,5.147526495E1 +8.031720000E2,4.993046061E1 +8.034760000E2,6.394035794E1 +8.037260000E2,5.983119170E1 +8.040270000E2,5.967243802E1 +8.042930000E2,6.559340840E1 +8.046100000E2,5.262215496E1 +8.049160000E2,5.397812040E1 +8.051780000E2,5.680330381E1 +8.054740000E2,5.857171626E1 +8.058060000E2,5.577198454E1 +8.060880000E2,5.916891157E1 +8.063460000E2,6.120078548E1 +8.066060000E2,6.223167379E1 +8.069230000E2,6.161077093E1 +8.071720000E2,5.812180846E1 +8.074300000E2,5.665535607E1 +8.077230000E2,5.401482687E1 +8.079600000E2,5.631804256E1 +8.082610000E2,5.267806276E1 +8.085540000E2,5.766120113E1 +8.088100000E2,5.717509884E1 +8.091690000E2,5.698714543E1 +8.094130000E2,5.807918354E1 +8.096940000E2,5.364566959E1 +8.099320000E2,5.678502402E1 +8.102110000E2,5.494444844E1 +8.104710000E2,6.216218230E1 +8.107550000E2,5.504588420E1 +8.110030000E2,5.220186059E1 +8.112810000E2,5.338487037E1 +8.115430000E2,5.422122114E1 +8.118180000E2,6.217546099E1 +8.121430000E2,5.739027439E1 +8.124800000E2,5.218554734E1 +8.128080000E2,6.183667492E1 +8.130850000E2,6.028246668E1 +8.133620000E2,6.620979851E1 +8.135950000E2,5.810667246E1 +8.138630000E2,6.096670869E1 +8.141300000E2,5.149777407E1 +8.143960000E2,4.993954713E1 +8.146400000E2,5.196561010E1 +8.149350000E2,5.727966309E1 +8.151710000E2,5.489316784E1 +8.154100000E2,5.619291420E1 +8.157500000E2,5.425831711E1 +8.160430000E2,5.677079709E1 +8.163250000E2,5.289383275E1 +8.165600000E2,5.573749616E1 +8.168090000E2,5.211960412E1 +8.170840000E2,5.029895102E1 +8.173170000E2,5.085418245E1 +8.175630000E2,5.101392152E1 +8.178870000E2,5.228690479E1 +8.182130000E2,5.919931006E1 +8.184680000E2,5.288617356E1 +8.188320000E2,5.626269479E1 +8.191030000E2,6.124827198E1 +8.193870000E2,5.889071517E1 +8.196160000E2,5.957980623E1 +8.199180000E2,5.440069788E1 +8.201590000E2,5.524226830E1 +8.204560000E2,5.147688867E1 +8.206870000E2,5.390780082E1 +8.209820000E2,6.509870984E1 +8.212270000E2,6.421388309E1 +8.215230000E2,5.843840462E1 +8.218170000E2,5.422512027E1 +8.221280000E2,5.468614274E1 +8.223780000E2,5.922850585E1 +8.226710000E2,6.486031186E1 +8.229330000E2,6.154967201E1 +8.232420000E2,5.893257410E1 +8.235100000E2,6.020329639E1 +8.238290000E2,5.483779552E1 +8.240760000E2,5.692914998E1 +8.243280000E2,6.347347085E1 +8.245930000E2,5.345306004E1 +8.248670000E2,6.141647052E1 +8.252000000E2,5.672783001E1 +8.254550000E2,5.605661334E1 +8.257610000E2,5.699330885E1 +8.260410000E2,5.489256860E1 +8.263010000E2,6.262090025E1 +8.265830000E2,5.457719262E1 +8.268180000E2,5.416382407E1 +8.271260000E2,4.993919751E1 +8.273700000E2,5.569569056E1 +8.276330000E2,5.514364162E1 +8.278890000E2,5.653204472E1 +8.281470000E2,5.784406489E1 +8.284370000E2,5.752811490E1 +8.286720000E2,5.727510089E1 +8.289650000E2,5.900575965E1 +8.292510000E2,5.679022390E1 +8.294860000E2,5.722234118E1 +8.297350000E2,5.952638514E1 +8.300320000E2,5.925181191E1 +8.302740000E2,5.930148258E1 +8.305160000E2,5.668145507E1 +8.307730000E2,5.590492759E1 +8.310130000E2,6.302930486E1 +8.312510000E2,5.733539345E1 +8.315800000E2,5.620349253E1 +8.318910000E2,5.495250031E1 +8.322000000E2,5.501979251E1 +8.324620000E2,5.208226415E1 +8.327390000E2,5.765748383E1 +8.329950000E2,5.489193423E1 +8.332490000E2,5.593428331E1 +8.335720000E2,5.714652117E1 +8.338250000E2,5.832769426E1 +8.341370000E2,5.884156077E1 +8.344030000E2,5.840498509E1 +8.347020000E2,5.864505811E1 +8.350330000E2,6.356982434E1 +8.353340000E2,6.286445683E1 +8.355720000E2,5.657384439E1 +8.358940000E2,5.660970318E1 +8.361720000E2,5.918731584E1 +8.364160000E2,5.825788220E1 +8.366580000E2,5.592754487E1 +8.369110000E2,5.553717092E1 +8.371910000E2,5.495027293E1 +8.374510000E2,5.546329287E1 +8.377420000E2,5.746402701E1 +8.379890000E2,5.891922359E1 +8.383130000E2,6.522858798E1 +8.385710000E2,6.384617776E1 +8.388430000E2,5.435088619E1 +8.390670000E2,5.460135210E1 +8.393610000E2,5.982769627E1 +8.396020000E2,5.936265195E1 +8.398550000E2,6.034701146E1 +8.401470000E2,6.875861473E1 +8.403840000E2,6.968788985E1 +8.406760000E2,6.653493651E1 +8.409120000E2,6.664139767E1 +8.412200000E2,6.195236791E1 +8.415280000E2,5.759269564E1 +8.418110000E2,5.704906263E1 +8.420770000E2,5.199124728E1 +8.423350000E2,5.625309672E1 +8.426060000E2,5.627754144E1 +8.428710000E2,6.285304788E1 +8.431220000E2,6.089762622E1 +8.434160000E2,5.828079525E1 +8.436650000E2,5.581703965E1 +8.439650000E2,5.326092983E1 +8.442070000E2,5.247397640E1 +8.444500000E2,5.104216729E1 +8.447560000E2,4.981466747E1 +8.450730000E2,5.794387296E1 +8.453210000E2,6.103400827E1 +8.455680000E2,6.053778141E1 +8.458610000E2,5.413066164E1 +8.461240000E2,5.591468697E1 +8.463740000E2,5.289659812E1 +8.466770000E2,6.014390988E1 +8.469740000E2,5.713983843E1 +8.472340000E2,5.457406708E1 +8.474800000E2,5.848999564E1 +8.478210000E2,5.310404619E1 +8.481040000E2,5.463633704E1 +8.483620000E2,5.329096892E1 +8.486670000E2,5.667645304E1 +8.489890000E2,5.540515985E1 +8.492420000E2,5.014593999E1 +8.495060000E2,5.019949668E1 +8.497660000E2,4.724526190E1 +8.500410000E2,4.632701850E1 +8.502660000E2,4.436725745E1 +8.505710000E2,5.273585220E1 +8.508470000E2,5.232501704E1 +8.511370000E2,5.177389205E1 +8.513940000E2,5.236772038E1 +8.516560000E2,4.869019062E1 +8.518980000E2,5.254056589E1 +8.521620000E2,5.441215371E1 +8.524060000E2,5.431954181E1 +8.526720000E2,4.873515026E1 +8.529820000E2,5.253291311E1 +8.532350000E2,5.201920339E1 +8.535330000E2,5.083296820E1 +8.537750000E2,5.373650683E1 +8.540560000E2,6.162621210E1 +8.543710000E2,6.137876928E1 +8.546190000E2,6.347980201E1 +8.548850000E2,6.480134627E1 +8.551390000E2,6.344943059E1 +8.553830000E2,6.653758852E1 +8.556910000E2,6.821811094E1 +8.559900000E2,6.564040109E1 +8.562480000E2,6.310710880E1 +8.565060000E2,5.625485760E1 +8.567860000E2,5.886920329E1 +8.570590000E2,5.638007706E1 +8.573180000E2,5.477312089E1 +8.576670000E2,5.402637072E1 +8.579310000E2,5.282806817E1 +8.582400000E2,5.743205922E1 +8.584770000E2,5.608834078E1 +8.587730000E2,5.917700537E1 +8.590950000E2,5.757076232E1 +8.593390000E2,5.680975976E1 +8.596110000E2,5.316092446E1 +8.598560000E2,5.634389465E1 +8.601130000E2,5.912558361E1 +8.603880000E2,5.827706684E1 +8.606370000E2,5.580056474E1 +8.609720000E2,5.622551838E1 +8.612190000E2,5.816090597E1 +8.614650000E2,5.710633258E1 +8.617260000E2,6.762679027E1 +8.619970000E2,6.050550643E1 +8.622480000E2,6.017289530E1 +8.624960000E2,5.884551198E1 +8.627510000E2,5.823958631E1 +8.630120000E2,5.747421536E1 +8.632920000E2,5.891926612E1 +8.635810000E2,5.962176090E1 +8.638680000E2,5.932606834E1 +8.642430000E2,6.035939553E1 +8.645920000E2,5.892740034E1 +8.649090000E2,6.158225090E1 +8.651650000E2,5.941856931E1 +8.654560000E2,5.517726055E1 +8.656900000E2,5.573554393E1 +8.659400000E2,6.300977067E1 +8.662170000E2,6.346838855E1 +8.664760000E2,5.840482341E1 +8.667600000E2,5.656477763E1 +8.669980000E2,5.809371706E1 +8.672500000E2,5.957523428E1 +8.675890000E2,5.868790884E1 +8.678670000E2,6.643274765E1 +8.681530000E2,6.202304252E1 +8.684260000E2,6.167390940E1 +8.686760000E2,6.561664622E1 +8.689220000E2,6.221849135E1 +8.691620000E2,5.873701255E1 +8.694080000E2,5.721335717E1 +8.696600000E2,5.775578048E1 +8.699210000E2,6.139190630E1 +8.702060000E2,5.695582014E1 +8.705330000E2,5.285782467E1 +8.708800000E2,5.254436807E1 +8.711320000E2,5.941119733E1 +8.714840000E2,5.561687107E1 +8.717890000E2,5.226341013E1 +8.720340000E2,5.351737673E1 +8.723120000E2,5.581753669E1 +8.725450000E2,5.544476975E1 +8.727930000E2,5.112331517E1 +8.731050000E2,5.669948434E1 +8.733660000E2,5.553741274E1 +8.736450000E2,5.287392842E1 +8.738710000E2,5.342755356E1 +8.742030000E2,5.525376809E1 +8.745760000E2,5.790146612E1 +8.748470000E2,5.775550126E1 +8.750900000E2,5.828043309E1 +8.753860000E2,5.689517506E1 +8.756490000E2,5.836000549E1 +8.759170000E2,5.887049385E1 +8.761640000E2,5.731343570E1 +8.764240000E2,5.947081752E1 +8.766660000E2,5.735732777E1 +8.769150000E2,5.791222148E1 +8.771870000E2,5.217820200E1 +8.775110000E2,5.373516267E1 +8.777550000E2,5.639663701E1 +8.779960000E2,5.308435393E1 +8.782370000E2,5.327040257E1 +8.785510000E2,5.539866825E1 +8.788050000E2,5.451580533E1 +8.791100000E2,5.664888244E1 +8.793670000E2,5.439058144E1 +8.796110000E2,6.546629591E1 +8.799090000E2,6.080313073E1 +8.801560000E2,6.023654065E1 +8.804070000E2,5.547022044E1 +8.807450000E2,5.933402552E1 +8.809880000E2,6.073235462E1 +8.812850000E2,5.811897337E1 +8.815210000E2,5.670873426E1 +8.818240000E2,6.239450766E1 +8.821160000E2,6.033779387E1 +8.823610000E2,5.921328684E1 +8.826600000E2,5.808215882E1 +8.828910000E2,5.927124720E1 +8.831280000E2,5.254346564E1 +8.834120000E2,5.755316817E1 +8.837180000E2,5.815703318E1 +8.840150000E2,5.925974643E1 +8.842610000E2,5.406291788E1 +8.845520000E2,5.892672719E1 +8.847970000E2,6.343231596E1 +8.850390000E2,6.045689612E1 +8.853340000E2,5.903303339E1 +8.855810000E2,5.897514906E1 +8.858230000E2,5.682843230E1 +8.860690000E2,4.647265993E1 +8.863400000E2,5.617216143E1 +8.865730000E2,5.412892937E1 +8.869100000E2,6.210166513E1 +8.872070000E2,6.369099543E1 +8.874540000E2,6.052073025E1 +8.877480000E2,6.125108403E1 +8.879990000E2,6.087163347E1 +8.882550000E2,6.365510666E1 +8.885320000E2,5.341778352E1 +8.887600000E2,5.238943476E1 +8.890050000E2,6.378561240E1 +8.892460000E2,6.182956815E1 +8.895070000E2,6.027537659E1 +8.897770000E2,5.747996426E1 +8.901220000E2,5.606477689E1 +8.903620000E2,5.816493441E1 +8.907030000E2,5.740436721E1 +8.909540000E2,5.812990427E1 +8.912060000E2,5.757163286E1 +8.914520000E2,5.669306215E1 +8.917150000E2,5.593698617E1 +8.919580000E2,5.867011196E1 +8.922060000E2,6.001129970E1 +8.924480000E2,6.247831114E1 +8.927080000E2,5.501506807E1 +8.929550000E2,5.918039480E1 +8.932790000E2,5.750337148E1 +8.935260000E2,5.382626014E1 +8.937850000E2,5.632583646E1 +8.940370000E2,5.552393419E1 +8.943380000E2,5.417609473E1 +8.946050000E2,5.314873345E1 +8.948570000E2,5.537690953E1 +8.951790000E2,6.168371256E1 +8.954540000E2,6.142331687E1 +8.957690000E2,5.914263764E1 +8.960690000E2,6.039127428E1 +8.963670000E2,5.303465172E1 +8.966720000E2,5.819495208E1 +8.969200000E2,5.956457754E1 +8.972240000E2,5.554166388E1 +8.974940000E2,5.700583380E1 +8.978160000E2,5.525596264E1 +8.981210000E2,5.878997726E1 +8.983720000E2,5.661289659E1 +8.986510000E2,6.039909322E1 +8.988730000E2,5.569487247E1 +8.991240000E2,5.857026750E1 +8.993800000E2,6.116905404E1 +8.996580000E2,6.331625006E1 +8.998890000E2,5.612470465E1 +9.001440000E2,5.098243988E1 +9.004020000E2,5.779474181E1 +9.006650000E2,5.597754805E1 +9.009440000E2,5.706395638E1 +9.012380000E2,5.989184595E1 +9.015000000E2,5.905145002E1 +9.017620000E2,5.913397617E1 +9.020230000E2,5.831976398E1 +9.022900000E2,5.400731512E1 +9.025900000E2,6.547285797E1 +9.029050000E2,6.534571775E1 +9.032100000E2,5.428834230E1 +9.034580000E2,4.919896084E1 +9.037180000E2,5.326934205E1 +9.039740000E2,5.135684539E1 +9.042700000E2,5.784030554E1 +9.045180000E2,5.789711892E1 +9.048150000E2,5.501985460E1 +9.050680000E2,5.394185103E1 +9.053920000E2,5.504541187E1 +9.056620000E2,5.574384904E1 +9.059260000E2,5.198297704E1 +9.062920000E2,5.507423148E1 +9.065460000E2,5.073979477E1 +9.068090000E2,5.409355601E1 +9.071500000E2,5.842003605E1 +9.074380000E2,6.323761852E1 +9.076890000E2,5.475142925E1 +9.079510000E2,5.285089191E1 +9.082580000E2,6.228883476E1 +9.085110000E2,6.229139223E1 +9.087590000E2,5.849936549E1 +9.090220000E2,6.382664868E1 +9.092560000E2,5.234586511E1 +9.095720000E2,5.506613760E1 +9.098700000E2,5.883918884E1 +9.101180000E2,5.722745073E1 +9.103980000E2,6.006905181E1 +9.106670000E2,6.333821195E1 +9.109390000E2,5.997503412E1 +9.111770000E2,5.691091005E1 +9.114250000E2,5.629684565E1 +9.117070000E2,5.944947286E1 +9.119370000E2,5.757115704E1 +9.122030000E2,5.617546709E1 +9.125090000E2,5.506166951E1 +9.128480000E2,5.345826069E1 +9.131070000E2,5.586702127E1 +9.133900000E2,6.075354367E1 +9.137040000E2,5.668960998E1 +9.139920000E2,5.584388878E1 +9.142800000E2,5.668519299E1 +9.145740000E2,5.400550993E1 +9.148220000E2,5.668991412E1 +9.150670000E2,5.455006531E1 +9.153720000E2,5.750041942E1 +9.156590000E2,5.756327349E1 +9.159630000E2,5.822694927E1 +9.162110000E2,5.764545771E1 +9.164660000E2,5.716015909E1 +9.167560000E2,5.136001811E1 +9.170200000E2,4.706951064E1 +9.172710000E2,4.999131008E1 +9.175180000E2,5.619976433E1 +9.178030000E2,5.463675948E1 +9.180580000E2,4.995546642E1 +9.183000000E2,5.328928391E1 +9.185570000E2,4.808104957E1 +9.188650000E2,5.411517612E1 +9.191080000E2,5.672946344E1 +9.194270000E2,5.737096863E1 +9.196850000E2,5.974051238E1 +9.199830000E2,5.656564726E1 +9.202340000E2,5.709524531E1 +9.204810000E2,5.408385116E1 +9.208240000E2,5.414410830E1 +9.210650000E2,5.638214177E1 +9.213330000E2,5.753313030E1 +9.216130000E2,5.354803656E1 +9.219120000E2,6.191736419E1 +9.221480000E2,5.734366551E1 +9.224580000E2,5.684475304E1 +9.228030000E2,6.045431811E1 +9.230950000E2,5.973057312E1 +9.233960000E2,5.537690593E1 +9.236620000E2,5.411771801E1 +9.239600000E2,5.513839001E1 +9.242140000E2,5.699753068E1 +9.244670000E2,6.643461088E1 +9.247300000E2,6.062391899E1 +9.250330000E2,5.798096332E1 +9.253240000E2,6.347140522E1 +9.255740000E2,6.166496817E1 +9.259250000E2,6.190058171E1 +9.261820000E2,6.329204590E1 +9.264380000E2,6.389135880E1 +9.267030000E2,5.917517639E1 +9.269480000E2,5.809772267E1 +9.272170000E2,5.733235238E1 +9.274780000E2,5.226841119E1 +9.277860000E2,5.876554483E1 +9.280720000E2,6.281089568E1 +9.283510000E2,5.368859448E1 +9.286400000E2,5.449014251E1 +9.289370000E2,5.589991313E1 +9.292390000E2,5.452044152E1 +9.294860000E2,5.574135623E1 +9.297800000E2,5.656551806E1 +9.300200000E2,5.368800996E1 +9.302990000E2,5.374372369E1 +9.305490000E2,5.520696346E1 +9.308500000E2,5.642038107E1 +9.311480000E2,5.958603376E1 +9.314510000E2,5.775531382E1 +9.316980000E2,5.561486787E1 +9.319610000E2,5.826734748E1 +9.322700000E2,5.604871965E1 +9.325550000E2,5.170668645E1 +9.328670000E2,5.089285684E1 +9.331190000E2,4.724853188E1 +9.333790000E2,4.756075237E1 +9.336260000E2,5.199039629E1 +9.338890000E2,4.980140945E1 +9.341620000E2,5.530081877E1 +9.344120000E2,5.549144740E1 +9.347250000E2,5.515929093E1 +9.349780000E2,5.399104933E1 +9.352760000E2,5.325801117E1 +9.356240000E2,5.040008457E1 +9.359420000E2,5.360316460E1 +9.361890000E2,5.191591881E1 +9.364390000E2,5.324554606E1 +9.366970000E2,5.654671572E1 +9.370100000E2,5.711795620E1 +9.372590000E2,5.478625541E1 +9.375950000E2,5.667621371E1 +9.378550000E2,5.463565976E1 +9.381050000E2,5.398825590E1 +9.383580000E2,5.436030102E1 +9.386390000E2,5.091983440E1 +9.389120000E2,5.286705124E1 +9.391550000E2,5.236775571E1 +9.394300000E2,5.738794921E1 +9.397170000E2,5.727939554E1 +9.399750000E2,6.319402051E1 +9.402560000E2,5.468250624E1 +9.405530000E2,5.641852830E1 +9.408670000E2,6.200700436E1 +9.411390000E2,6.163446308E1 +9.413860000E2,7.148312536E1 +9.416340000E2,6.050927243E1 +9.419040000E2,5.667078757E1 +9.421350000E2,5.749142651E1 +9.424700000E2,5.240604485E1 +9.427760000E2,5.466454134E1 +9.430280000E2,6.082141946E1 +9.433300000E2,6.003969647E1 +9.436110000E2,6.121195378E1 +9.438460000E2,5.625129518E1 +9.441420000E2,5.911131348E1 +9.443880000E2,5.468317436E1 +9.446840000E2,6.009033853E1 +9.449440000E2,5.906624737E1 +9.452490000E2,5.464875325E1 +9.455970000E2,5.384566268E1 +9.458510000E2,5.044039840E1 +9.461140000E2,5.035886237E1 +9.463820000E2,5.734112986E1 +9.466620000E2,5.229112628E1 +9.469690000E2,6.028523542E1 +9.472250000E2,5.837101422E1 +9.475000000E2,5.619491985E1 +9.477970000E2,5.364209552E1 +9.480560000E2,5.511055516E1 +9.483560000E2,5.308396885E1 +9.486650000E2,5.587440008E1 +9.490640000E2,5.273632850E1 +9.493730000E2,6.231816715E1 +9.496570000E2,6.253734875E1 +9.499030000E2,5.554720788E1 +9.501460000E2,5.631566079E1 +9.503970000E2,5.626896653E1 +9.506490000E2,5.691941114E1 +9.508990000E2,5.116659255E1 +9.511440000E2,4.922875084E1 +9.514130000E2,5.936693495E1 +9.517070000E2,5.638156112E1 +9.520200000E2,5.180629212E1 +9.523780000E2,4.998674108E1 +9.526570000E2,4.841587788E1 +9.529100000E2,5.028896526E1 +9.531650000E2,4.965921907E1 +9.534690000E2,4.493319669E1 +9.537260000E2,4.598612712E1 +9.539740000E2,5.276251951E1 +9.542810000E2,4.126037796E1 +9.545830000E2,4.737114191E1 +9.548330000E2,4.411553821E1 +9.550850000E2,4.440050708E1 +9.553840000E2,5.260541790E1 +9.556980000E2,5.273901651E1 +9.559710000E2,5.383409632E1 +9.562220000E2,5.239354977E1 +9.564980000E2,4.759742823E1 +9.568040000E2,5.239869448E1 +9.570530000E2,5.238241691E1 +9.573300000E2,5.227349879E1 +9.575630000E2,5.272394727E1 +9.578410000E2,5.414710772E1 +9.580970000E2,5.325895305E1 +9.583410000E2,5.577122645E1 +9.586370000E2,5.015645058E1 +9.590040000E2,5.173028231E1 +9.593040000E2,5.447959265E1 +9.595640000E2,5.484713415E1 +9.598110000E2,5.470137539E1 +9.601060000E2,5.878769788E1 +9.603740000E2,5.851189839E1 +9.606810000E2,5.400762096E1 +9.609290000E2,5.749049444E1 +9.611870000E2,5.241750519E1 +9.614480000E2,4.979747952E1 +9.616960000E2,5.096881110E1 +9.620030000E2,5.149804171E1 +9.623180000E2,5.481599911E1 +9.625540000E2,5.138365056E1 +9.628240000E2,5.235851031E1 +9.630470000E2,4.871540913E1 +9.632880000E2,5.651540461E1 +9.635860000E2,5.650278128E1 +9.638210000E2,5.704973755E1 +9.641160000E2,5.757712252E1 +9.643960000E2,5.881159691E1 +9.646600000E2,5.355579494E1 +9.649750000E2,5.539751700E1 +9.652910000E2,4.797714339E1 +9.655520000E2,5.082548637E1 +9.658080000E2,5.579830605E1 +9.660780000E2,5.554406278E1 +9.663250000E2,5.354814316E1 +9.665660000E2,5.463107171E1 +9.668090000E2,5.368692433E1 +9.671300000E2,5.364867335E1 +9.674540000E2,5.468973775E1 +9.677060000E2,5.815904844E1 +9.680020000E2,5.598522308E1 +9.682480000E2,5.541083624E1 +9.685850000E2,5.512396132E1 +9.688400000E2,5.530796688E1 +9.691210000E2,5.433954611E1 +9.693810000E2,5.507440645E1 +9.696820000E2,5.086817906E1 +9.699140000E2,5.696191489E1 +9.701640000E2,5.845256581E1 +9.704420000E2,5.620226260E1 +9.706770000E2,5.629047170E1 +9.709750000E2,5.811655252E1 +9.712290000E2,5.703185419E1 +9.714900000E2,5.716734774E1 +9.718450000E2,5.493596869E1 +9.720910000E2,5.909437017E1 +9.723380000E2,5.710675060E1 +9.725910000E2,5.780279559E1 +9.728920000E2,5.860060144E1 +9.731360000E2,6.078900999E1 +9.734260000E2,5.852116194E1 +9.736640000E2,5.905899453E1 +9.739130000E2,5.636299630E1 +9.742090000E2,6.289355999E1 +9.744870000E2,6.167909115E1 +9.747290000E2,6.098057792E1 +9.750690000E2,5.906667343E1 +9.753320000E2,6.018572501E1 +9.756150000E2,5.718512970E1 +9.759100000E2,5.146063018E1 +9.761570000E2,5.733244632E1 +9.764050000E2,5.368365894E1 +9.766600000E2,5.486016267E1 +9.769150000E2,5.908582599E1 +9.771910000E2,5.733773036E1 +9.774400000E2,5.566361416E1 +9.777680000E2,5.819125256E1 +9.781220000E2,5.947694304E1 +9.783640000E2,6.140057637E1 +9.786330000E2,5.721849738E1 +9.788550000E2,5.617504209E1 +9.791010000E2,5.660293849E1 +9.793960000E2,5.174001770E1 +9.796880000E2,5.083474014E1 +9.799290000E2,5.184104339E1 +9.801850000E2,5.025385313E1 +9.804850000E2,5.286605500E1 +9.807270000E2,5.586849562E1 +9.809750000E2,5.666036754E1 +9.812950000E2,5.248500918E1 +9.815810000E2,5.416072977E1 +9.818360000E2,5.799655965E1 +9.821300000E2,5.801841935E1 +9.823770000E2,5.977514968E1 +9.826270000E2,5.676871456E1 +9.828850000E2,5.104814549E1 +9.831730000E2,5.834620153E1 +9.834010000E2,5.660640582E1 +9.836620000E2,5.686451748E1 +9.839750000E2,5.998440952E1 +9.842240000E2,5.556687478E1 +9.846000000E2,5.811069315E1 +9.848430000E2,5.843499893E1 +9.851250000E2,5.180956247E1 +9.853860000E2,5.206236639E1 +9.856480000E2,5.641840701E1 +9.859110000E2,5.518588565E1 +9.861920000E2,5.697237679E1 +9.864550000E2,5.411246614E1 +9.867510000E2,5.214533821E1 +9.869880000E2,5.642389575E1 +9.872440000E2,6.015294933E1 +9.875470000E2,5.809991100E1 +9.879150000E2,6.420044247E1 +9.881610000E2,6.042656173E1 +9.884280000E2,5.938959873E1 +9.886840000E2,6.059888233E1 +9.889870000E2,5.282749720E1 +9.892620000E2,5.638110380E1 +9.895440000E2,4.900409689E1 +9.897740000E2,4.971849802E1 +9.900320000E2,5.061428463E1 +9.903370000E2,5.829922071E1 +9.905860000E2,5.812083213E1 +9.908910000E2,5.500587720E1 +9.911860000E2,5.677481104E1 +9.914380000E2,5.502691141E1 +9.916830000E2,5.294500154E1 +9.919560000E2,5.700444986E1 +9.921770000E2,5.448756275E1 +9.924220000E2,5.785741234E1 +9.927280000E2,5.702180374E1 +9.929670000E2,6.013415875E1 +9.932080000E2,5.533496795E1 +9.934640000E2,5.695301526E1 +9.937440000E2,5.436173732E1 +9.940620000E2,5.092257074E1 +9.944480000E2,4.973000793E1 +9.946940000E2,4.871235512E1 +9.949410000E2,5.171412848E1 +9.951960000E2,5.643245777E1 +9.954520000E2,5.548819002E1 +9.957530000E2,5.694822585E1 +9.960600000E2,5.668072577E1 +9.963110000E2,5.547400320E1 +9.966010000E2,5.667137699E1 +9.968430000E2,5.866196066E1 +9.971120000E2,5.641527163E1 +9.974300000E2,5.505243365E1 +9.977140000E2,5.491253296E1 +9.979940000E2,5.642986287E1 +9.982400000E2,5.111113898E1 +9.985270000E2,5.228293633E1 +9.987770000E2,5.380023266E1 +9.990760000E2,5.259255492E1 +9.993610000E2,5.359948032E1 +9.996550000E2,5.817439497E1 +9.999080000E2,5.712087238E1 +1.000199000E3,6.016800470E1 +1.000435000E3,5.758076017E1 +1.000772000E3,5.328951429E1 +1.001047000E3,5.373102399E1 +1.001303000E3,5.905317642E1 +1.001622000E3,5.478240688E1 +1.001877000E3,5.648896451E1 +1.002173000E3,5.587033976E1 +1.002422000E3,5.995513955E1 +1.002724000E3,6.295760047E1 +1.003003000E3,5.978713154E1 +1.003261000E3,5.669754444E1 +1.003545000E3,5.577942906E1 +1.003827000E3,6.186873273E1 +1.004183000E3,6.253868639E1 +1.004493000E3,5.777226132E1 +1.004770000E3,6.482227668E1 +1.005072000E3,5.923751414E1 +1.005323000E3,5.644465637E1 +1.005601000E3,6.074750234E1 +1.005832000E3,5.683683327E1 +1.006147000E3,5.957418887E1 +1.006418000E3,6.134946851E1 +1.006713000E3,5.641852300E1 +1.006952000E3,5.637674327E1 +1.007310000E3,5.484290206E1 +1.007589000E3,6.426865013E1 +1.007886000E3,5.712036033E1 +1.008127000E3,5.768385080E1 +1.008427000E3,5.812466970E1 +1.008666000E3,6.112344783E1 +1.008973000E3,5.606588478E1 +1.009269000E3,5.809328667E1 +1.009507000E3,5.371315435E1 +1.009763000E3,5.527533595E1 +1.010003000E3,5.390597114E1 +1.010379000E3,5.652035402E1 +1.010658000E3,5.490058638E1 +1.010920000E3,5.927019017E1 +1.011197000E3,5.293113048E1 +1.011458000E3,5.179006266E1 +1.011718000E3,5.366462930E1 +1.011979000E3,5.569421827E1 +1.012229000E3,5.341899104E1 +1.012477000E3,4.863208748E1 +1.012772000E3,6.037154816E1 +1.013036000E3,5.430849576E1 +1.013284000E3,5.735938261E1 +1.013671000E3,5.526482118E1 +1.013957000E3,5.731780297E1 +1.014225000E3,5.205368153E1 +1.014486000E3,5.548863756E1 +1.014733000E3,5.265038263E1 +1.015033000E3,5.986876322E1 +1.015314000E3,5.130643680E1 +1.015590000E3,6.086878634E1 +1.015830000E3,5.798526739E1 +1.016137000E3,6.825745236E1 +1.016387000E3,5.828900876E1 +1.016655000E3,5.873097643E1 +1.017001000E3,6.454090665E1 +1.017329000E3,6.385512775E1 +1.017637000E3,6.691081911E1 +1.017938000E3,6.580217665E1 +1.018229000E3,6.485489311E1 +1.018470000E3,6.387101962E1 +1.018706000E3,6.616835921E1 +1.018997000E3,5.951737331E1 +1.019235000E3,5.386458503E1 +1.019536000E3,5.756977765E1 +1.019801000E3,5.811747841E1 +1.020064000E3,5.930001089E1 +1.020406000E3,5.469664450E1 +1.020673000E3,5.181220980E1 +1.020925000E3,5.483858346E1 +1.021232000E3,5.716842569E1 +1.021527000E3,5.738254897E1 +1.021762000E3,5.628034518E1 +1.022007000E3,5.850971228E1 +1.022258000E3,5.329919175E1 +1.022556000E3,5.482637446E1 +1.022813000E3,5.690503448E1 +1.023071000E3,5.317501594E1 +1.023336000E3,4.870888301E1 +1.023687000E3,6.132281620E1 +1.023965000E3,6.262505101E1 +1.024220000E3,6.180229149E1 +1.024496000E3,6.130993335E1 +1.024741000E3,6.231376381E1 +1.025040000E3,6.164360059E1 +1.025279000E3,5.910065798E1 +1.025533000E3,5.622173801E1 +1.025821000E3,5.290311975E1 +1.026116000E3,5.028293308E1 +1.026403000E3,5.581740437E1 +1.026664000E3,5.988277804E1 +1.027011000E3,5.730548262E1 +1.027305000E3,5.417769573E1 +1.027578000E3,5.250932185E1 +1.027819000E3,5.139919708E1 +1.028128000E3,5.061852216E1 +1.028380000E3,4.722292138E1 +1.028683000E3,5.983070917E1 +1.028956000E3,6.045269830E1 +1.029182000E3,5.777292957E1 +1.029431000E3,5.497807442E1 +1.029734000E3,5.533889528E1 +1.030063000E3,5.373558580E1 +1.030323000E3,5.600729212E1 +1.030620000E3,5.467159629E1 +1.030863000E3,5.246400101E1 +1.031110000E3,5.468037288E1 +1.031367000E3,5.850364516E1 +1.031646000E3,5.490958739E1 +1.031911000E3,5.866929845E1 +1.032210000E3,5.708288591E1 +1.032475000E3,5.498129629E1 +1.032736000E3,5.670272599E1 +1.032986000E3,5.317143219E1 +1.033315000E3,5.758413128E1 +1.033557000E3,6.361635596E1 +1.033846000E3,5.513973379E1 +1.034093000E3,5.215484095E1 +1.034399000E3,5.465926438E1 +1.034684000E3,5.588902955E1 +1.034978000E3,5.387672604E1 +1.035280000E3,5.595327755E1 +1.035543000E3,5.621513504E1 +1.035825000E3,5.991854954E1 +1.036079000E3,5.864640009E1 +1.036322000E3,6.072021936E1 +1.036666000E3,5.462749592E1 +1.036971000E3,5.329083651E1 +1.037264000E3,5.401214501E1 +1.037542000E3,5.242806591E1 +1.037843000E3,5.573267887E1 +1.038091000E3,5.224254554E1 +1.038380000E3,5.453929206E1 +1.038635000E3,5.371826859E1 +1.038891000E3,4.369246898E1 +1.039145000E3,4.547521933E1 +1.039418000E3,4.204639660E1 +1.039750000E3,4.426760298E1 +1.039990000E3,4.955659514E1 +1.040294000E3,4.960859899E1 +1.040560000E3,4.841380220E1 +1.040808000E3,4.914533708E1 +1.041104000E3,4.650609937E1 +1.041370000E3,4.849101938E1 +1.041622000E3,5.065930763E1 +1.041920000E3,4.744161935E1 +1.042161000E3,4.448519483E1 +1.042478000E3,4.726532690E1 +1.042725000E3,4.667923132E1 +1.043042000E3,4.704822757E1 +1.043307000E3,3.950691106E1 +1.043560000E3,5.249697508E1 +1.043835000E3,4.753687679E1 +1.044091000E3,4.843049138E1 +1.044350000E3,5.394643708E1 +1.044644000E3,4.769079035E1 +1.044887000E3,5.111291504E1 +1.045194000E3,5.247298633E1 +1.045445000E3,4.904344971E1 +1.045693000E3,4.405437847E1 +1.045988000E3,4.750888237E1 +1.046301000E3,4.305046000E1 +1.046518000E3,4.630901796E1 +1.046813000E3,4.756289225E1 +1.047053000E3,4.661089273E1 +1.047331000E3,6.143859736E1 +1.047566000E3,5.702483033E1 +1.047860000E3,5.015015196E1 +1.048098000E3,5.180675157E1 +1.048397000E3,4.645218330E1 +1.048640000E3,4.317726503E1 +1.048918000E3,4.962602549E1 +1.049159000E3,4.922447391E1 +1.049523000E3,4.310015818E1 +1.049767000E3,5.584844461E1 +1.050011000E3,5.550466055E1 +1.050294000E3,5.076679182E1 +1.050523000E3,4.777565498E1 +1.050776000E3,5.078379664E1 +1.051031000E3,4.412618688E1 +1.051298000E3,3.933148532E1 +1.051551000E3,4.240994962E1 +1.051799000E3,3.715036539E1 +1.052054000E3,4.541823437E1 +1.052312000E3,3.252240989E1 +1.052661000E3,4.298387800E1 +1.052922000E3,4.065675211E1 +1.053171000E3,3.851226965E1 +1.053417000E3,3.833414863E1 +1.053702000E3,3.734543870E1 +1.053967000E3,4.406198141E1 +1.054269000E3,3.397952572E1 +1.054518000E3,3.018425986E1 +1.054795000E3,2.659023927E1 +1.055055000E3,3.230579484E1 +1.055319000E3,4.027650377E1 +1.055588000E3,3.256611719E1 +1.055936000E3,3.203904394E1 +1.056189000E3,3.024692018E1 +1.056469000E3,4.044611203E1 +1.056698000E3,3.245705712E1 +1.056956000E3,5.087039919E1 +1.057201000E3,5.278557071E1 +1.057507000E3,6.996122129E1 +1.057766000E3,6.951439283E1 +1.058027000E3,6.731609209E1 +1.058291000E3,5.787293958E1 +1.058571000E3,5.774874245E1 +1.058801000E3,5.291748766E1 +1.059132000E3,4.352220528E1 +1.059391000E3,5.556254729E1 +1.059665000E3,5.339220405E1 +1.059951000E3,5.593145301E1 +1.060235000E3,5.299996372E1 +1.060492000E3,4.882317894E1 +1.060733000E3,3.790707311E1 +1.060975000E3,3.470192076E1 +1.061278000E3,4.481563830E1 +1.061519000E3,4.823008935E1 +1.061816000E3,4.719850269E1 +1.062076000E3,4.706381680E1 +1.062331000E3,4.530378435E1 +1.062576000E3,3.456809562E1 +1.062882000E3,3.742453964E1 +1.063154000E3,3.905594906E1 +1.063397000E3,3.672857244E1 +1.063694000E3,2.941779164E1 +1.063926000E3,2.995931983E1 +1.064168000E3,3.455311118E1 +1.064461000E3,3.254662869E1 +1.064708000E3,3.652583843E1 +1.065001000E3,5.229424666E1 +1.065352000E3,5.178814165E1 +1.065606000E3,4.798098259E1 +1.065854000E3,3.636652329E1 +1.066121000E3,4.558252535E1 +1.066366000E3,3.902840121E1 +1.066629000E3,3.106435508E1 +1.066887000E3,2.541330464E1 +1.067179000E3,3.474902335E1 +1.067449000E3,4.492275189E1 +1.067698000E3,3.860211372E1 +1.067955000E3,4.332670525E1 +1.068251000E3,5.147667691E1 +1.068546000E3,5.152069997E1 +1.068797000E3,4.540650098E1 +1.069105000E3,4.486446450E1 +1.069378000E3,4.196481867E1 +1.069632000E3,4.863200791E1 +1.069908000E3,3.878967071E1 +1.070151000E3,3.630888030E1 +1.070413000E3,2.964429880E1 +1.070682000E3,3.354707636E1 +1.070956000E3,4.008490969E1 +1.071248000E3,3.576577653E1 +1.071553000E3,4.349754488E1 +1.071886000E3,3.824859907E1 +1.072130000E3,3.455877689E1 +1.072406000E3,3.622999465E1 +1.072717000E3,3.637608237E1 +1.072984000E3,3.645219519E1 +1.073255000E3,4.353729148E1 +1.073603000E3,4.287473251E1 +1.073856000E3,4.842203791E1 +1.074097000E3,4.484407311E1 +1.074356000E3,4.397007110E1 +1.074628000E3,4.695884235E1 +1.074931000E3,4.627189963E1 +1.075264000E3,4.689571524E1 +1.075614000E3,5.203841291E1 +1.075923000E3,4.610184941E1 +1.076163000E3,4.404432471E1 +1.076475000E3,4.923215011E1 +1.076765000E3,4.466142180E1 +1.077062000E3,4.987282715E1 +1.077375000E3,4.461839454E1 +1.077687000E3,5.085403766E1 +1.077991000E3,4.674512295E1 +1.078232000E3,5.167180279E1 +1.078544000E3,4.780582457E1 +1.078939000E3,4.593914406E1 +1.079187000E3,4.061652220E1 +1.079434000E3,4.347669045E1 +1.079712000E3,4.326983820E1 +1.079966000E3,3.511950991E1 +1.080260000E3,4.755279745E1 +1.080506000E3,4.756343862E1 +1.080756000E3,4.779732167E1 +1.081049000E3,4.991962747E1 +1.081293000E3,5.213887128E1 +1.081586000E3,5.357624469E1 +1.081916000E3,5.141456645E1 +1.082165000E3,5.036532462E1 +1.082460000E3,4.962769973E1 +1.082696000E3,4.506404490E1 +1.082988000E3,4.537987312E1 +1.083220000E3,4.738457007E1 +1.083529000E3,4.698711193E1 +1.083769000E3,4.571430081E1 +1.084079000E3,4.980908007E1 +1.084324000E3,5.082282040E1 +1.084590000E3,5.406004268E1 +1.084876000E3,5.436375886E1 +1.085258000E3,5.361506257E1 +1.085509000E3,5.202937925E1 +1.085815000E3,5.324976969E1 +1.086057000E3,5.371445731E1 +1.086301000E3,5.282162917E1 +1.086550000E3,5.221281857E1 +1.086802000E3,5.263727375E1 +1.087126000E3,5.703022139E1 +1.087384000E3,5.519432869E1 +1.087646000E3,5.426647490E1 +1.087939000E3,5.407342864E1 +1.088175000E3,5.235924404E1 +1.088520000E3,4.681002832E1 +1.088812000E3,4.891237586E1 +1.089076000E3,4.699020733E1 +1.089350000E3,4.902871382E1 +1.089591000E3,5.078145117E1 +1.089837000E3,5.041791921E1 +1.090133000E3,4.603650794E1 +1.090430000E3,4.871755485E1 +1.090660000E3,5.111421073E1 +1.090911000E3,4.581894631E1 +1.091248000E3,4.988189917E1 +1.091630000E3,5.341365920E1 +1.091902000E3,4.962858025E1 +1.092183000E3,4.315344358E1 +1.092440000E3,4.664431132E1 +1.092683000E3,4.616459192E1 +1.092923000E3,4.765071496E1 +1.093171000E3,4.163360687E1 +1.093473000E3,4.537777608E1 +1.093714000E3,4.783603025E1 +1.094007000E3,4.845414260E1 +1.094261000E3,4.799870549E1 +1.094499000E3,4.651309815E1 +1.094792000E3,5.003648984E1 +1.095123000E3,5.202534254E1 +1.095372000E3,5.709400077E1 +1.095625000E3,5.694079106E1 +1.095896000E3,5.715452089E1 +1.096196000E3,5.523378380E1 +1.096438000E3,5.375558627E1 +1.096737000E3,5.665208041E1 +1.096991000E3,5.314654737E1 +1.097292000E3,5.142447849E1 +1.097557000E3,5.330628285E1 +1.097827000E3,5.512040694E1 +1.098167000E3,5.399583122E1 +1.098472000E3,5.540663813E1 +1.098720000E3,5.200546986E1 +1.098960000E3,4.676140326E1 +1.099243000E3,4.798657093E1 +1.099544000E3,4.841724285E1 +1.099804000E3,5.642371618E1 +1.100109000E3,5.409000726E1 +1.100381000E3,5.348646719E1 +1.100630000E3,5.346537578E1 +1.100927000E3,5.422782845E1 +1.101164000E3,5.395323822E1 +1.101495000E3,5.383967560E1 +1.101763000E3,5.667828538E1 +1.102044000E3,4.764690784E1 +1.102307000E3,5.353530254E1 +1.102613000E3,5.568430762E1 +1.102906000E3,5.431580275E1 +1.103147000E3,5.193331555E1 +1.103441000E3,5.040945762E1 +1.103677000E3,5.333005838E1 +1.103968000E3,4.947534745E1 +1.104272000E3,5.306270968E1 +1.104564000E3,5.537230515E1 +1.104799000E3,4.876041085E1 +1.105069000E3,5.109409535E1 +1.105330000E3,5.087734214E1 +1.105587000E3,5.225642483E1 +1.105838000E3,5.176680091E1 +1.106135000E3,5.535939212E1 +1.106380000E3,5.666892185E1 +1.106622000E3,5.658846562E1 +1.106895000E3,5.577897889E1 +1.107150000E3,5.157178717E1 +1.107431000E3,5.284488409E1 +1.107756000E3,5.415639955E1 +1.108002000E3,5.465643057E1 +1.108313000E3,4.654328988E1 +1.108563000E3,5.038890380E1 +1.108811000E3,4.602751738E1 +1.109073000E3,4.801243396E1 +1.109375000E3,4.782472616E1 +1.109667000E3,4.666447221E1 +1.109943000E3,5.156469126E1 +1.110192000E3,4.949682888E1 +1.110448000E3,4.919673339E1 +1.110752000E3,4.862521519E1 +1.111045000E3,5.122379655E1 +1.111295000E3,4.813892217E1 +1.111515000E3,4.901611396E1 +1.111761000E3,4.905664967E1 +1.112005000E3,4.647618514E1 +1.112265000E3,4.730688076E1 +1.112537000E3,5.039121351E1 +1.112793000E3,4.985611957E1 +1.113101000E3,5.474563863E1 +1.113387000E3,5.028870882E1 +1.113678000E3,5.073784750E1 +1.113952000E3,4.995138555E1 +1.114291000E3,4.790039203E1 +1.114554000E3,4.764335594E1 +1.114849000E3,5.057104591E1 +1.115096000E3,5.107398730E1 +1.115401000E3,4.800391913E1 +1.115672000E3,4.553282874E1 +1.115895000E3,4.569523337E1 +1.116194000E3,4.480844215E1 +1.116425000E3,4.772339962E1 +1.116664000E3,5.255452638E1 +1.116906000E3,4.927433934E1 +1.117202000E3,4.871369865E1 +1.117530000E3,4.928110420E1 +1.117840000E3,5.705383563E1 +1.118146000E3,4.880674861E1 +1.118418000E3,5.038180726E1 +1.118687000E3,5.145980404E1 +1.118950000E3,5.338008269E1 +1.119227000E3,5.227728425E1 +1.119468000E3,5.450689216E1 +1.119736000E3,5.844246451E1 +1.120049000E3,5.459398611E1 +1.120351000E3,5.526423567E1 +1.120605000E3,5.228963309E1 +1.120918000E3,5.598288902E1 +1.121182000E3,5.280889802E1 +1.121489000E3,4.974717420E1 +1.121729000E3,5.137523152E1 +1.121978000E3,5.052356297E1 +1.122235000E3,5.240368249E1 +1.122503000E3,4.826380791E1 +1.122775000E3,5.095403791E1 +1.123036000E3,5.799909934E1 +1.123291000E3,4.889512711E1 +1.123587000E3,5.622808486E1 +1.123874000E3,5.230369090E1 +1.124235000E3,5.081102316E1 +1.124544000E3,5.628773803E1 +1.124826000E3,5.810547372E1 +1.125153000E3,5.508029719E1 +1.125432000E3,5.576573503E1 +1.125722000E3,5.346022180E1 +1.125978000E3,5.279748306E1 +1.126234000E3,5.604802053E1 +1.126502000E3,5.937326657E1 +1.126804000E3,5.703447215E1 +1.127047000E3,5.520354594E1 +1.127314000E3,5.551787326E1 +1.127554000E3,5.740837773E1 +1.127843000E3,5.663015330E1 +1.128135000E3,5.649615150E1 +1.128380000E3,5.731556257E1 +1.128677000E3,6.079986861E1 +1.128914000E3,5.820128856E1 +1.129207000E3,6.091746513E1 +1.129442000E3,6.126941240E1 +1.129745000E3,4.541170906E1 +1.129980000E3,4.341485096E1 +1.130277000E3,4.833777967E1 +1.130573000E3,4.472710223E1 +1.130815000E3,5.059675199E1 +1.131062000E3,3.863826940E1 +1.131353000E3,4.925455740E1 +1.131589000E3,4.859989956E1 +1.131881000E3,5.113067908E1 +1.132117000E3,5.054542106E1 +1.132418000E3,4.827479925E1 +1.132654000E3,4.610884488E1 +1.132948000E3,4.879734536E1 +1.133241000E3,5.074680390E1 +1.133563000E3,5.119298220E1 +1.133864000E3,4.861265792E1 +1.134166000E3,5.001512903E1 +1.134452000E3,5.059053464E1 +1.134716000E3,4.999839479E1 +1.134967000E3,4.960069086E1 +1.135222000E3,5.320256888E1 +1.135494000E3,5.604818163E1 +1.135742000E3,5.625768045E1 +1.135999000E3,5.261645024E1 +1.136244000E3,5.105081932E1 +1.136501000E3,5.616444939E1 +1.136847000E3,5.624064264E1 +1.137105000E3,5.654097446E1 +1.137391000E3,5.807884104E1 +1.137717000E3,5.436169891E1 +1.137970000E3,5.763959225E1 +1.138239000E3,5.465216875E1 +1.138486000E3,5.094509116E1 +1.138731000E3,5.425415233E1 +1.138977000E3,5.143709697E1 +1.139259000E3,5.032545705E1 +1.139527000E3,5.906031130E1 +1.139800000E3,5.308709054E1 +1.140168000E3,5.407062541E1 +1.140423000E3,5.585261351E1 +1.140694000E3,5.463535881E1 +1.140949000E3,5.407603664E1 +1.141230000E3,5.495767686E1 +1.141512000E3,5.639433741E1 +1.141818000E3,5.555715330E1 +1.142072000E3,5.729232944E1 +1.142323000E3,5.553013253E1 +1.142578000E3,5.648251207E1 +1.142844000E3,5.786931075E1 +1.143143000E3,6.007493220E1 +1.143523000E3,5.752076543E1 +1.143836000E3,5.573324560E1 +1.144090000E3,5.641950784E1 +1.144396000E3,5.532270625E1 +1.144644000E3,5.561239732E1 +1.144940000E3,5.206707456E1 +1.145212000E3,5.092140902E1 +1.145511000E3,5.452891649E1 +1.145770000E3,5.331137977E1 +1.146042000E3,5.366568195E1 +1.146338000E3,5.227174013E1 +1.146650000E3,5.423955559E1 +1.146934000E3,5.781916580E1 +1.147218000E3,5.532962824E1 +1.147467000E3,5.502661676E1 +1.147687000E3,5.823979674E1 +1.147961000E3,5.538066560E1 +1.148276000E3,5.423260060E1 +1.148528000E3,5.197461977E1 +1.148799000E3,5.154724487E1 +1.149057000E3,5.473685923E1 +1.149367000E3,5.647867848E1 +1.149660000E3,5.489455072E1 +1.150037000E3,6.072892064E1 +1.150335000E3,5.543869835E1 +1.150594000E3,5.667713742E1 +1.150870000E3,5.818755157E1 +1.151164000E3,5.210849760E1 +1.151411000E3,5.095671455E1 +1.151703000E3,5.254983272E1 +1.152002000E3,5.585064224E1 +1.152253000E3,5.739007574E1 +1.152582000E3,5.895179917E1 +1.152860000E3,5.461317681E1 +1.153122000E3,5.345759293E1 +1.153381000E3,5.267971619E1 +1.153684000E3,6.006602205E1 +1.153986000E3,5.573552061E1 +1.154286000E3,5.518963618E1 +1.154531000E3,5.342922095E1 +1.154792000E3,5.257536969E1 +1.155139000E3,4.887945516E1 +1.155435000E3,4.702411688E1 +1.155680000E3,4.867646616E1 +1.155978000E3,4.811861077E1 +1.156361000E3,4.915586406E1 +1.156670000E3,5.033026069E1 +1.156976000E3,5.393908378E1 +1.157274000E3,5.295128205E1 +1.157524000E3,5.249671789E1 +1.157816000E3,5.314344994E1 +1.158052000E3,5.237342933E1 +1.158353000E3,5.300284286E1 +1.158590000E3,5.170068449E1 +1.158867000E3,5.174146304E1 +1.159147000E3,4.929588783E1 +1.159411000E3,5.699090425E1 +1.159752000E3,5.266690351E1 +1.160068000E3,5.746767577E1 +1.160360000E3,5.375850846E1 +1.160640000E3,5.373794020E1 +1.160985000E3,5.304914530E1 +1.161280000E3,5.198754593E1 +1.161525000E3,5.019848207E1 +1.161766000E3,5.164623609E1 +1.162020000E3,5.363319210E1 +1.162324000E3,5.439011044E1 +1.162564000E3,5.304648945E1 +1.162816000E3,5.174573718E1 +1.163177000E3,4.505755779E1 +1.163462000E3,4.894753105E1 +1.163738000E3,5.064933943E1 +1.164013000E3,5.245879056E1 +1.164255000E3,5.017914517E1 +1.164568000E3,5.189205429E1 +1.164823000E3,5.038961444E1 +1.165052000E3,5.072118593E1 +1.165297000E3,4.831662547E1 +1.165552000E3,5.050204887E1 +1.165808000E3,5.308107982E1 +1.166062000E3,4.878509871E1 +1.166392000E3,5.002605106E1 +1.166654000E3,5.320265697E1 +1.166911000E3,4.403273534E1 +1.167180000E3,5.161386051E1 +1.167455000E3,4.986209571E1 +1.167692000E3,4.993305836E1 +1.167973000E3,5.173621365E1 +1.168216000E3,5.385559129E1 +1.168491000E3,5.543019156E1 +1.168757000E3,5.019966657E1 +1.169035000E3,5.569516326E1 +1.169296000E3,5.216419082E1 +1.169676000E3,5.398731996E1 +1.169933000E3,5.465625282E1 +1.170197000E3,5.451774184E1 +1.170449000E3,5.328129322E1 +1.170705000E3,5.452639907E1 +1.170963000E3,5.713735254E1 +1.171272000E3,5.551413923E1 +1.171528000E3,5.604966001E1 +1.171779000E3,5.340478404E1 +1.172038000E3,5.107817821E1 +1.172291000E3,5.218990306E1 +1.172602000E3,4.830451720E1 +1.172964000E3,5.276802164E1 +1.173245000E3,5.191204687E1 +1.173527000E3,5.337367972E1 +1.173838000E3,5.462664550E1 +1.174090000E3,5.304724513E1 +1.174379000E3,5.193251440E1 +1.174628000E3,5.283915893E1 +1.174936000E3,5.036641160E1 +1.175236000E3,4.890810708E1 +1.175487000E3,4.805298565E1 +1.175750000E3,5.067335741E1 +1.176019000E3,4.961207397E1 +1.176335000E3,4.820862314E1 +1.176634000E3,5.328684116E1 +1.176883000E3,5.122009001E1 +1.177165000E3,5.878687770E1 +1.177412000E3,5.487235950E1 +1.177709000E3,5.224569426E1 +1.178006000E3,5.403405997E1 +1.178246000E3,5.388661901E1 +1.178490000E3,5.237426881E1 +1.178734000E3,5.372043820E1 +1.179050000E3,5.471170909E1 +1.179387000E3,5.129350436E1 +1.179686000E3,4.660070824E1 +1.179916000E3,4.541361068E1 +1.180159000E3,4.365576113E1 +1.180466000E3,4.771103553E1 +1.180756000E3,4.863237791E1 +1.181008000E3,5.534959697E1 +1.181314000E3,5.376444060E1 +1.181609000E3,5.130885425E1 +1.181851000E3,5.256948786E1 +1.182151000E3,5.321964637E1 +1.182393000E3,5.074776981E1 +1.182622000E3,4.979941250E1 +1.182873000E3,5.445637667E1 +1.183116000E3,4.449721128E1 +1.183420000E3,5.086906199E1 +1.183676000E3,5.067998506E1 +1.183927000E3,5.352019181E1 +1.184219000E3,4.851971310E1 +1.184517000E3,5.123853013E1 +1.184764000E3,5.278221141E1 +1.185010000E3,5.126409245E1 +1.185297000E3,5.249182764E1 +1.185665000E3,5.346599478E1 +1.185972000E3,5.052250297E1 +1.186225000E3,5.389354916E1 +1.186534000E3,5.372737626E1 +1.186796000E3,5.415645782E1 +1.187048000E3,5.441424865E1 +1.187317000E3,5.470553815E1 +1.187622000E3,5.559990781E1 +1.187913000E3,5.619293356E1 +1.188186000E3,4.869472445E1 +1.188442000E3,5.069948923E1 +1.188718000E3,5.296813397E1 +1.189051000E3,5.015003063E1 +1.189308000E3,5.110938827E1 +1.189570000E3,5.250182053E1 +1.189815000E3,5.240850659E1 +1.190062000E3,5.446862868E1 +1.190368000E3,5.270463767E1 +1.190629000E3,5.117539458E1 +1.190931000E3,5.543767536E1 +1.191207000E3,5.348622922E1 +1.191505000E3,5.112152946E1 +1.191761000E3,4.905277341E1 +1.192068000E3,5.456405848E1 +1.192487000E3,5.016322677E1 +1.192732000E3,4.971711263E1 +1.192976000E3,5.396031961E1 +1.193258000E3,5.018645567E1 +1.193531000E3,4.895586707E1 +1.193790000E3,5.442023654E1 +1.194055000E3,5.160697029E1 +1.194326000E3,4.822365107E1 +1.194605000E3,5.396633777E1 +1.194903000E3,5.031021734E1 +1.195141000E3,5.278015326E1 +1.195431000E3,4.949576105E1 +1.195801000E3,5.244682833E1 +1.196076000E3,5.508575727E1 +1.196371000E3,5.161802747E1 +1.196603000E3,5.716896987E1 +1.196858000E3,5.210002974E1 +1.197207000E3,5.483594793E1 +1.197503000E3,5.204828926E1 +1.197774000E3,5.339169315E1 +1.198054000E3,4.934781945E1 +1.198312000E3,5.918797425E1 +1.198559000E3,5.025254784E1 +1.198808000E3,5.317746302E1 +1.199152000E3,5.656715516E1 +1.199464000E3,5.448426177E1 +1.199717000E3,5.419526565E1 +1.199961000E3,5.304156540E1 +1.200219000E3,4.961182292E1 +1.200480000E3,5.259766625E1 +1.200730000E3,5.295115767E1 +1.201029000E3,5.365389524E1 +1.201288000E3,5.465027972E1 +1.201538000E3,5.131261505E1 +1.201807000E3,5.767453751E1 +1.202112000E3,5.316006082E1 +1.202485000E3,5.263333972E1 +1.202739000E3,4.966297173E1 +1.203041000E3,5.282706501E1 +1.203300000E3,4.950274237E1 +1.203539000E3,4.377779375E1 +1.203832000E3,5.274682795E1 +1.204077000E3,5.348405653E1 +1.204320000E3,5.647600154E1 +1.204615000E3,4.835002395E1 +1.204854000E3,4.440243109E1 +1.205149000E3,4.673035253E1 +1.205410000E3,4.901106802E1 +1.205666000E3,5.311033159E1 +1.205952000E3,5.020567211E1 +1.206248000E3,5.046889058E1 +1.206545000E3,6.150607502E1 +1.206779000E3,5.260331634E1 +1.207093000E3,5.183291791E1 +1.207367000E3,4.957331060E1 +1.207610000E3,5.139200370E1 +1.207857000E3,5.005726187E1 +1.208158000E3,4.979521937E1 +1.208398000E3,5.178137337E1 +1.208738000E3,4.632694184E1 +1.208994000E3,4.836915777E1 +1.209279000E3,4.869228435E1 +1.209528000E3,5.096507040E1 +1.209784000E3,4.718590489E1 +1.210053000E3,4.835967114E1 +1.210281000E3,4.725223201E1 +1.210542000E3,5.172958855E1 +1.210823000E3,5.546336112E1 +1.211051000E3,5.448218663E1 +1.211300000E3,5.371995163E1 +1.211551000E3,4.887559574E1 +1.211926000E3,4.975732945E1 +1.212205000E3,5.041543230E1 +1.212482000E3,4.863959509E1 +1.212730000E3,5.047232348E1 +1.212990000E3,4.824384094E1 +1.213232000E3,5.039377586E1 +1.213493000E3,4.517891187E1 +1.213814000E3,4.686032989E1 +1.214062000E3,4.852263494E1 +1.214337000E3,4.897277606E1 +1.214586000E3,4.662047985E1 +1.214832000E3,5.483925472E1 +1.215143000E3,5.677489998E1 +1.215372000E3,5.470688254E1 +1.215664000E3,5.408747991E1 +1.215962000E3,5.167832591E1 +1.216227000E3,5.463116224E1 +1.216504000E3,5.335564969E1 +1.216747000E3,4.832376612E1 +1.216996000E3,4.918538596E1 +1.217306000E3,5.329611015E1 +1.217618000E3,5.364881155E1 +1.217885000E3,5.087209115E1 +1.218149000E3,4.967310650E1 +1.218497000E3,4.842689624E1 +1.218801000E3,5.442588779E1 +1.219043000E3,5.338467746E1 +1.219349000E3,5.187371665E1 +1.219600000E3,4.992515182E1 +1.219883000E3,5.205809257E1 +1.220161000E3,5.374364962E1 +1.220471000E3,5.145920034E1 +1.220752000E3,5.112774200E1 +1.221009000E3,4.969936214E1 +1.221258000E3,4.906585252E1 +1.221519000E3,4.971022706E1 +1.221873000E3,5.039216656E1 +1.222125000E3,4.735018859E1 +1.222388000E3,5.025223930E1 +1.222647000E3,5.349102952E1 +1.222903000E3,5.894430216E1 +1.223210000E3,5.133834742E1 +1.223464000E3,5.378681025E1 +1.223708000E3,5.646161983E1 +1.223949000E3,5.127610878E1 +1.224189000E3,5.295211205E1 +1.224441000E3,5.074229414E1 +1.224698000E3,5.428527885E1 +1.225064000E3,6.064230054E1 +1.225333000E3,5.545461106E1 +1.225591000E3,5.085263163E1 +1.225847000E3,4.867332677E1 +1.226137000E3,4.828036819E1 +1.226394000E3,5.187031217E1 +1.226668000E3,4.691949774E1 +1.226931000E3,4.605300024E1 +1.227219000E3,4.319091646E1 +1.227493000E3,4.827268256E1 +1.227791000E3,4.873371181E1 +1.228031000E3,4.895629331E1 +1.228388000E3,4.831306026E1 +1.228651000E3,5.150144778E1 +1.228942000E3,5.210555115E1 +1.229190000E3,4.868630793E1 +1.229442000E3,5.072280558E1 +1.229686000E3,5.520857657E1 +1.229933000E3,5.597505745E1 +1.230228000E3,5.309096620E1 +1.230467000E3,5.340491117E1 +1.230765000E3,4.966814228E1 +1.231012000E3,4.811713105E1 +1.231316000E3,5.037869561E1 +1.231666000E3,4.768651081E1 +1.231948000E3,4.577834304E1 +1.232207000E3,4.455407567E1 +1.232510000E3,5.091422235E1 +1.232802000E3,4.990562511E1 +1.233047000E3,5.178152081E1 +1.233344000E3,5.312014577E1 +1.233592000E3,5.002236071E1 +1.233892000E3,5.158473192E1 +1.234173000E3,4.692863129E1 +1.234463000E3,4.643331531E1 +1.234792000E3,4.659156592E1 +1.235060000E3,4.662718910E1 +1.235313000E3,5.204491267E1 +1.235577000E3,5.165973487E1 +1.235837000E3,4.753691687E1 +1.236124000E3,5.179615379E1 +1.236401000E3,4.807409380E1 +1.236654000E3,5.474790946E1 +1.236923000E3,4.946475170E1 +1.237180000E3,4.949471083E1 +1.237426000E3,4.669168363E1 +1.237743000E3,5.529942944E1 +1.238061000E3,5.997488643E1 +1.238363000E3,5.302222406E1 +1.238611000E3,5.022506453E1 +1.238856000E3,4.864145193E1 +1.239102000E3,5.299123845E1 +1.239357000E3,4.682866815E1 +1.239657000E3,4.770894983E1 +1.239902000E3,4.813746372E1 +1.240150000E3,4.571771059E1 +1.240465000E3,5.354012247E1 +1.240765000E3,5.830707734E1 +1.241013000E3,5.483189048E1 +1.241344000E3,5.157405593E1 +1.241606000E3,5.072581437E1 +1.241868000E3,5.137979859E1 +1.242133000E3,4.849261303E1 +1.242396000E3,5.556107710E1 +1.242656000E3,4.958779284E1 +1.242959000E3,5.301548021E1 +1.243232000E3,5.475621292E1 +1.243501000E3,5.660789219E1 +1.243755000E3,5.350018163E1 +1.244010000E3,5.415674835E1 +1.244349000E3,5.699979568E1 +1.244717000E3,5.660044844E1 +1.245015000E3,5.808533709E1 +1.245259000E3,5.881859790E1 +1.245558000E3,5.728882886E1 +1.245808000E3,6.044308225E1 +1.246079000E3,5.893900513E1 +1.246326000E3,5.279872381E1 +1.246637000E3,5.769196864E1 +1.246935000E3,5.963088900E1 +1.247181000E3,5.367341836E1 +1.247508000E3,4.963645506E1 +1.247848000E3,5.265770489E1 +1.248115000E3,5.355743381E1 +1.248359000E3,4.891015342E1 +1.248659000E3,4.819353582E1 +1.248902000E3,4.966403220E1 +1.249199000E3,4.977495696E1 +1.249449000E3,5.715212626E1 +1.249708000E3,5.458337902E1 +1.249983000E3,4.910795823E1 +1.250282000E3,5.184902745E1 +1.250527000E3,5.416053460E1 +1.250777000E3,5.320773170E1 +1.251084000E3,5.422274265E1 +1.251342000E3,5.429456299E1 +1.251602000E3,5.910733722E1 +1.251866000E3,5.226490816E1 +1.252178000E3,5.191466859E1 +1.252452000E3,5.143339371E1 +1.252681000E3,5.066846779E1 +1.252975000E3,4.928639562E1 +1.253256000E3,4.916995298E1 +1.253528000E3,5.115941927E1 +1.253816000E3,4.850268402E1 +1.254063000E3,5.682920937E1 +1.254418000E3,5.583927157E1 +1.254700000E3,5.243405901E1 +1.254947000E3,5.411796563E1 +1.255215000E3,5.538314624E1 +1.255487000E3,5.447026824E1 +1.255748000E3,5.115232974E1 +1.256046000E3,5.273125350E1 +1.256281000E3,5.501639825E1 +1.256559000E3,5.470702619E1 +1.256867000E3,5.330168249E1 +1.257116000E3,5.680033697E1 +1.257361000E3,5.088137081E1 +1.257690000E3,4.771044205E1 +1.257935000E3,5.556188303E1 +1.258189000E3,5.821474305E1 +1.258460000E3,5.913083175E1 +1.258757000E3,5.624840253E1 +1.259001000E3,5.575040009E1 +1.259294000E3,5.295140054E1 +1.259581000E3,5.547885633E1 +1.259831000E3,5.659634167E1 +1.260084000E3,5.552607398E1 +1.260378000E3,5.399987136E1 +1.260676000E3,5.741946227E1 +1.260997000E3,5.622829253E1 +1.261272000E3,5.638519080E1 +1.261569000E3,5.222122782E1 +1.261810000E3,5.168558616E1 +1.262055000E3,5.937417075E1 +1.262351000E3,5.419990938E1 +1.262597000E3,5.469291977E1 +1.262893000E3,5.501007253E1 +1.263142000E3,5.356116387E1 +1.263421000E3,5.643294047E1 +1.263644000E3,5.627927149E1 +1.263964000E3,5.547827797E1 +1.264255000E3,5.434029164E1 +1.264552000E3,5.355134450E1 +1.264791000E3,5.268456483E1 +1.265090000E3,5.304298782E1 +1.265342000E3,5.292557941E1 +1.265637000E3,5.267823535E1 +1.265885000E3,5.076475521E1 +1.266186000E3,5.470463807E1 +1.266480000E3,5.369531663E1 +1.266727000E3,5.321314382E1 +1.267074000E3,5.430022488E1 +1.267386000E3,5.498366079E1 +1.267650000E3,5.373765381E1 +1.267926000E3,5.631680810E1 +1.268156000E3,5.314598601E1 +1.268459000E3,5.446778700E1 +1.268718000E3,5.461487175E1 +1.269029000E3,4.723979401E1 +1.269322000E3,5.050485841E1 +1.269602000E3,5.263446338E1 +1.269914000E3,5.195043172E1 +1.270180000E3,5.361139844E1 +1.270542000E3,5.127785292E1 +1.270796000E3,5.111084292E1 +1.271061000E3,5.030178225E1 +1.271329000E3,4.978955516E1 +1.271616000E3,5.398913319E1 +1.271862000E3,5.537806166E1 +1.272155000E3,5.301545016E1 +1.272407000E3,5.450597504E1 +1.272651000E3,5.090153644E1 +1.272906000E3,5.335437953E1 +1.273148000E3,4.673762491E1 +1.273392000E3,5.062539325E1 +1.273710000E3,5.110756444E1 +1.273960000E3,5.466659884E1 +1.274217000E3,5.158121780E1 +1.274511000E3,5.575560452E1 +1.274759000E3,5.536976579E1 +1.275054000E3,5.425250328E1 +1.275298000E3,5.448034930E1 +1.275544000E3,5.185016662E1 +1.275828000E3,5.206320816E1 +1.276126000E3,5.118466074E1 +1.276376000E3,4.943928704E1 +1.276707000E3,5.090592254E1 +1.276972000E3,5.767487174E1 +1.277251000E3,5.481331862E1 +1.277544000E3,5.385854096E1 +1.277810000E3,5.179333541E1 +1.278097000E3,5.161992279E1 +1.278344000E3,5.248655937E1 +1.278657000E3,5.064236034E1 +1.278927000E3,4.915402835E1 +1.279197000E3,5.321156971E1 +1.279471000E3,5.438812541E1 +1.279734000E3,5.482588411E1 +1.280065000E3,5.157318203E1 +1.280296000E3,5.173449962E1 +1.280546000E3,5.465953878E1 +1.280843000E3,5.457680704E1 +1.281077000E3,5.562152963E1 +1.281325000E3,5.460406982E1 +1.281570000E3,5.232421403E1 +1.281870000E3,5.207576719E1 +1.282135000E3,4.968186040E1 +1.282378000E3,5.237915347E1 +1.282628000E3,4.745539727E1 +1.282877000E3,5.255989147E1 +1.283195000E3,5.301690658E1 +1.283467000E3,5.283539029E1 +1.283717000E3,5.083105477E1 +1.283978000E3,4.559322742E1 +1.284235000E3,4.934435088E1 +1.284538000E3,5.265118466E1 +1.284812000E3,5.302155906E1 +1.285045000E3,5.294725202E1 +1.285352000E3,5.129236762E1 +1.285646000E3,5.402858483E1 +1.285898000E3,5.434527110E1 +1.286189000E3,5.525625388E1 +1.286515000E3,5.653073998E1 +1.286819000E3,5.704731902E1 +1.287101000E3,5.310035962E1 +1.287387000E3,5.474072190E1 +1.287649000E3,5.496979063E1 +1.287925000E3,5.528941101E1 +1.288193000E3,5.394330028E1 +1.288492000E3,4.829171318E1 +1.288740000E3,5.076324605E1 +1.289004000E3,4.673843249E1 +1.289280000E3,5.345749476E1 +1.289584000E3,4.955238815E1 +1.289923000E3,5.268555513E1 +1.290206000E3,5.092762320E1 +1.290445000E3,5.180504716E1 +1.290779000E3,5.421996562E1 +1.291081000E3,5.408565728E1 +1.291322000E3,5.466627749E1 +1.291622000E3,5.247549140E1 +1.291870000E3,5.438915347E1 +1.292125000E3,5.526358440E1 +1.292428000E3,5.407200655E1 +1.292723000E3,5.160593410E1 +1.293035000E3,5.231731426E1 +1.293342000E3,5.126765219E1 +1.293626000E3,4.802016847E1 +1.293922000E3,5.428603515E1 +1.294199000E3,5.305841291E1 +1.294451000E3,5.676250586E1 +1.294738000E3,5.921971496E1 +1.295005000E3,5.812051865E1 +1.295266000E3,5.671365947E1 +1.295512000E3,5.389157640E1 +1.295809000E3,5.417883641E1 +1.296087000E3,5.169085532E1 +1.296408000E3,5.027989141E1 +1.296704000E3,5.801273246E1 +1.296951000E3,5.777618357E1 +1.297241000E3,5.598217178E1 +1.297547000E3,5.590671112E1 +1.297806000E3,6.302454961E1 +1.298073000E3,5.716944646E1 +1.298330000E3,5.693666329E1 +1.298591000E3,5.374930006E1 +1.298851000E3,5.170089530E1 +1.299100000E3,6.243829367E1 +1.299340000E3,5.522680485E1 +1.299673000E3,5.451288060E1 +1.299933000E3,5.720613947E1 +1.300193000E3,5.131457759E1 +1.300510000E3,5.593393786E1 +1.300810000E3,5.344184529E1 +1.301099000E3,5.432320381E1 +1.301355000E3,5.294046944E1 +1.301602000E3,5.330691828E1 +1.301911000E3,4.899471979E1 +1.302175000E3,5.054546621E1 +1.302420000E3,4.914598102E1 +1.302706000E3,5.757950400E1 +1.303045000E3,5.798603958E1 +1.303343000E3,5.685278830E1 +1.303584000E3,5.272645619E1 +1.303869000E3,5.576083132E1 +1.304169000E3,5.311655900E1 +1.304414000E3,5.297304035E1 +1.304724000E3,6.119658997E1 +1.304998000E3,5.921259630E1 +1.305275000E3,5.974785927E1 +1.305567000E3,5.829108198E1 +1.305799000E3,5.656256791E1 +1.306151000E3,5.263150293E1 +1.306475000E3,5.719715846E1 +1.306754000E3,5.746813017E1 +1.307020000E3,6.063794361E1 +1.307320000E3,5.945639283E1 +1.307570000E3,5.898495898E1 +1.307856000E3,5.345744690E1 +1.308127000E3,5.882374416E1 +1.308390000E3,5.704844280E1 +1.308660000E3,6.230218860E1 +1.308982000E3,5.794977886E1 +1.309252000E3,5.609480230E1 +1.309620000E3,5.439173238E1 +1.309924000E3,5.804315704E1 +1.310253000E3,5.898090143E1 +1.310510000E3,5.933785859E1 +1.310826000E3,5.484966867E1 +1.311077000E3,5.841635068E1 +1.311358000E3,5.536029260E1 +1.311601000E3,5.555523834E1 +1.311895000E3,5.637714479E1 +1.312195000E3,5.253312652E1 +1.312445000E3,5.377927694E1 +1.312696000E3,5.757954833E1 +1.313038000E3,5.500733438E1 +1.313282000E3,5.367385274E1 +1.313558000E3,5.610715122E1 +1.313797000E3,5.528556803E1 +1.314063000E3,5.884958532E1 +1.314412000E3,5.458036035E1 +1.314671000E3,5.765344335E1 +1.314945000E3,5.139756723E1 +1.315223000E3,5.546002517E1 +1.315503000E3,5.608276603E1 +1.315733000E3,5.719791479E1 +1.315986000E3,5.413888898E1 +1.316329000E3,5.789500166E1 +1.316579000E3,5.404086097E1 +1.316819000E3,6.021843554E1 +1.317067000E3,5.929690830E1 +1.317365000E3,6.066063258E1 +1.317666000E3,5.465341745E1 +1.317917000E3,5.115712079E1 +1.318169000E3,4.986479689E1 +1.318470000E3,5.351977371E1 +1.318716000E3,5.614277654E1 +1.318987000E3,5.824140620E1 +1.319280000E3,5.863858703E1 +1.319646000E3,5.908977231E1 +1.319902000E3,5.867594430E1 +1.320142000E3,5.256185028E1 +1.320379000E3,5.916248935E1 +1.320672000E3,5.829134786E1 +1.320910000E3,5.729121950E1 +1.321203000E3,5.817253701E1 +1.321434000E3,5.958327052E1 +1.321726000E3,6.109571062E1 +1.321963000E3,6.309400740E1 +1.322263000E3,6.381431561E1 +1.322586000E3,6.124594205E1 +1.322839000E3,6.120886427E1 +1.323128000E3,5.624496406E1 +1.323377000E3,6.205845751E1 +1.323676000E3,6.248705287E1 +1.323968000E3,6.259357777E1 +1.324217000E3,6.168308921E1 +1.324496000E3,6.128297543E1 +1.324731000E3,5.975404370E1 +1.325024000E3,6.147148959E1 +1.325261000E3,6.101142333E1 +1.325573000E3,5.682124874E1 +1.325854000E3,5.869490284E1 +1.326149000E3,5.646663249E1 +1.326392000E3,5.662110608E1 +1.326643000E3,5.067702480E1 +1.326984000E3,5.759763927E1 +1.327264000E3,5.613584630E1 +1.327489000E3,5.826097161E1 +1.327735000E3,5.843702691E1 +1.328012000E3,5.352317094E1 +1.328253000E3,5.737674501E1 +1.328545000E3,5.736811408E1 +1.328911000E3,5.477233671E1 +1.329158000E3,5.481436604E1 +1.329403000E3,4.974322484E1 +1.329645000E3,5.490077996E1 +1.329890000E3,4.870505425E1 +1.330144000E3,4.955972956E1 +1.330428000E3,5.470042727E1 +1.330734000E3,5.618884112E1 +1.331026000E3,5.238151215E1 +1.331265000E3,5.344428978E1 +1.331515000E3,5.051963956E1 +1.331772000E3,5.068574448E1 +1.332120000E3,5.754233113E1 +1.332409000E3,5.498832674E1 +1.332740000E3,5.245036701E1 +1.333034000E3,5.885934606E1 +1.333286000E3,5.644915657E1 +1.333540000E3,5.532779852E1 +1.333784000E3,5.694511409E1 +1.334028000E3,5.553937724E1 +1.334302000E3,5.308286554E1 +1.334615000E3,5.140154995E1 +1.334876000E3,5.045296543E1 +1.335187000E3,5.631993217E1 +1.335451000E3,5.435091016E1 +1.335722000E3,5.624357652E1 +1.335986000E3,5.791043400E1 +1.336271000E3,5.847603086E1 +1.336545000E3,5.757219882E1 +1.336794000E3,6.070042624E1 +1.337072000E3,5.247827017E1 +1.337340000E3,5.208145921E1 +1.337609000E3,6.026756153E1 +1.337870000E3,6.012826199E1 +1.338134000E3,5.465450317E1 +1.338408000E3,5.768658418E1 +1.338755000E3,5.542991210E1 +1.339019000E3,5.279974580E1 +1.339289000E3,4.966927449E1 +1.339556000E3,4.563713389E1 +1.339804000E3,4.961972315E1 +1.340056000E3,5.287436972E1 +1.340316000E3,5.318950925E1 +1.340586000E3,5.037908496E1 +1.340881000E3,5.345184090E1 +1.341116000E3,5.016784238E1 +1.341407000E3,5.799295151E1 +1.341694000E3,5.875659808E1 +1.342051000E3,5.666657228E1 +1.342345000E3,5.241270038E1 +1.342638000E3,5.754780266E1 +1.342875000E3,5.669750570E1 +1.343177000E3,5.541629106E1 +1.343432000E3,5.556249818E1 +1.343726000E3,5.603182587E1 +1.343969000E3,5.961525777E1 +1.344257000E3,5.915223521E1 +1.344498000E3,5.820677933E1 +1.344777000E3,5.815031326E1 +1.345094000E3,5.733094423E1 +1.345363000E3,5.538469317E1 +1.345622000E3,6.270903439E1 +1.345877000E3,5.551461514E1 +1.346148000E3,5.750063996E1 +1.346395000E3,5.473739655E1 +1.346676000E3,5.131350753E1 +1.346958000E3,5.072615719E1 +1.347258000E3,4.882711207E1 +1.347518000E3,5.273988371E1 +1.347784000E3,6.269937361E1 +1.348040000E3,6.058958657E1 +1.348391000E3,5.894445662E1 +1.348716000E3,5.683213923E1 +1.348984000E3,5.875140523E1 +1.349236000E3,5.263650529E1 +1.349491000E3,4.630287352E1 +1.349847000E3,5.742006494E1 +1.350115000E3,6.486179330E1 +1.350358000E3,5.963871460E1 +1.350612000E3,5.220281373E1 +1.350868000E3,5.825229613E1 +1.351125000E3,5.822075100E1 +1.351374000E3,5.487419692E1 +1.351666000E3,5.461361208E1 +1.351934000E3,5.384511910E1 +1.352185000E3,5.782109838E1 +1.352440000E3,5.156901690E1 +1.352688000E3,5.262530942E1 +1.352990000E3,5.827406705E1 +1.353265000E3,6.164230870E1 +1.353493000E3,5.939319367E1 +1.353769000E3,5.491407227E1 +1.353989000E3,5.363390940E1 +1.354236000E3,5.108497673E1 +1.354516000E3,6.129017752E1 +1.354836000E3,5.594784457E1 +1.355095000E3,5.172378417E1 +1.355422000E3,5.975901259E1 +1.355685000E3,5.720857994E1 +1.355941000E3,5.600667557E1 +1.356197000E3,5.471836828E1 +1.356478000E3,5.319452565E1 +1.356745000E3,5.296912594E1 +1.357013000E3,5.811625635E1 +1.357280000E3,5.430511038E1 +1.357577000E3,5.277700001E1 +1.357824000E3,5.616769978E1 +1.358135000E3,5.406396803E1 +1.358401000E3,4.910300122E1 +1.358643000E3,5.077236009E1 +1.358892000E3,5.530877446E1 +1.359206000E3,5.787482939E1 +1.359485000E3,5.846197249E1 +1.359760000E3,6.103303991E1 +1.360055000E3,6.092009186E1 +1.360296000E3,5.979156049E1 +1.360590000E3,6.049263298E1 +1.360828000E3,5.895545308E1 +1.361114000E3,5.611946421E1 +1.361473000E3,5.480295831E1 +1.361726000E3,5.397626184E1 +1.361972000E3,5.443193027E1 +1.362314000E3,5.572591927E1 +1.362560000E3,5.224616115E1 +1.362808000E3,5.244486023E1 +1.363061000E3,5.179430466E1 +1.363307000E3,5.228822629E1 +1.363555000E3,5.248152719E1 +1.363850000E3,5.310816898E1 +1.364115000E3,5.586433987E1 +1.364397000E3,5.735023043E1 +1.364703000E3,6.002405491E1 +1.364950000E3,5.692273216E1 +1.365192000E3,5.941823705E1 +1.365459000E3,5.316793659E1 +1.365709000E3,5.869878442E1 +1.365953000E3,5.756526572E1 +1.366216000E3,5.687574379E1 +1.366491000E3,5.232478004E1 +1.366744000E3,5.424491879E1 +1.367001000E3,5.235481979E1 +1.367305000E3,5.164783122E1 +1.367588000E3,4.924997634E1 +1.367934000E3,4.924339558E1 +1.368196000E3,5.793398832E1 +1.368473000E3,5.529211657E1 +1.368719000E3,5.120874356E1 +1.368963000E3,5.470742612E1 +1.369285000E3,5.560989240E1 +1.369528000E3,5.197646059E1 +1.369822000E3,5.152328490E1 +1.370111000E3,5.791930576E1 +1.370416000E3,5.368811562E1 +1.370672000E3,5.769124019E1 +1.370919000E3,5.333549653E1 +1.371292000E3,5.847056292E1 +1.371551000E3,5.642894477E1 +1.371803000E3,5.817537921E1 +1.372074000E3,5.885584750E1 +1.372335000E3,5.395474736E1 +1.372602000E3,5.211537518E1 +1.372880000E3,4.924374923E1 +1.373126000E3,4.882665291E1 +1.373379000E3,5.483140316E1 +1.373636000E3,5.380197532E1 +1.373915000E3,5.629967483E1 +1.374251000E3,5.773524892E1 +1.374636000E3,6.271253195E1 +1.374894000E3,5.870587143E1 +1.375125000E3,5.496954916E1 +1.375369000E3,5.621931219E1 +1.375641000E3,5.700323462E1 +1.375912000E3,5.808968856E1 +1.376161000E3,5.697587873E1 +1.376437000E3,5.739415600E1 +1.376687000E3,5.874614285E1 +1.376941000E3,5.855325473E1 +1.377252000E3,5.287324040E1 +1.377495000E3,5.331405656E1 +1.377862000E3,5.163612814E1 +1.378109000E3,6.003152631E1 +1.378372000E3,6.448039849E1 +1.378641000E3,6.226927373E1 +1.378912000E3,6.355904277E1 +1.379208000E3,6.121718755E1 +1.379463000E3,6.371699462E1 +1.379738000E3,5.774542440E1 +1.380076000E3,5.579766677E1 +1.380318000E3,5.520595979E1 +1.380614000E3,5.395000262E1 +1.380855000E3,5.263752401E1 +1.381221000E3,5.267030150E1 +1.381492000E3,5.304251562E1 +1.381793000E3,4.959737221E1 +1.382100000E3,5.549829026E1 +1.382347000E3,5.821584994E1 +1.382642000E3,5.861199323E1 +1.382905000E3,5.256382895E1 +1.383164000E3,5.491877459E1 +1.383443000E3,5.644995893E1 +1.383702000E3,5.411249990E1 +1.383954000E3,5.324738213E1 +1.384305000E3,5.625052210E1 +1.384532000E3,6.070474662E1 +1.384789000E3,5.237062704E1 +1.385074000E3,5.442107865E1 +1.385361000E3,6.017483878E1 +1.385605000E3,6.237555822E1 +1.385869000E3,5.605951782E1 +1.386126000E3,6.511151133E1 +1.386382000E3,5.571785683E1 +1.386696000E3,5.398201636E1 +1.386954000E3,5.323734283E1 +1.387264000E3,5.635686029E1 +1.387623000E3,5.701357512E1 +1.387874000E3,5.632095063E1 +1.388187000E3,5.288354031E1 +1.388477000E3,5.152350906E1 +1.388761000E3,5.130627857E1 +1.388982000E3,4.918436870E1 +1.389239000E3,5.567775637E1 +1.389545000E3,5.465238648E1 +1.389786000E3,5.003079725E1 +1.390027000E3,5.504486936E1 +1.390282000E3,5.947272344E1 +1.390539000E3,6.106137952E1 +1.390892000E3,5.985290475E1 +1.391203000E3,5.500825546E1 +1.391507000E3,5.157102239E1 +1.391806000E3,5.517662265E1 +1.392108000E3,5.349243854E1 +1.392411000E3,5.386652866E1 +1.392707000E3,5.258839734E1 +1.392973000E3,5.376638351E1 +1.393221000E3,5.619475880E1 +1.393480000E3,5.846509931E1 +1.393767000E3,6.504346680E1 +1.394122000E3,5.865804348E1 +1.394392000E3,5.055217311E1 +1.394673000E3,4.837306759E1 +1.394931000E3,5.564689750E1 +1.395193000E3,5.416088817E1 +1.395489000E3,5.481584764E1 +1.395781000E3,5.356143065E1 +1.396078000E3,5.074158934E1 +1.396313000E3,5.177896206E1 +1.396618000E3,5.670327312E1 +1.396914000E3,6.043149132E1 +1.397246000E3,5.875453471E1 +1.397559000E3,5.725772305E1 +1.397842000E3,5.610169288E1 +1.398092000E3,6.098127982E1 +1.398354000E3,5.385330985E1 +1.398611000E3,5.345613584E1 +1.398873000E3,6.183897473E1 +1.399135000E3,5.898294985E1 +1.399399000E3,5.644599073E1 +1.399662000E3,6.288338842E1 +1.399923000E3,5.844786233E1 +1.400178000E3,6.145207907E1 +1.400438000E3,5.797678971E1 +1.400786000E3,5.805590691E1 +1.401082000E3,5.956739883E1 +1.401323000E3,5.537900496E1 +1.401618000E3,5.084213917E1 +1.401871000E3,4.807017206E1 +1.402118000E3,5.545233073E1 +1.402411000E3,5.516036366E1 +1.402644000E3,5.413431379E1 +1.402920000E3,5.388857626E1 +1.403209000E3,5.292068844E1 +1.403479000E3,5.775211983E1 +1.403718000E3,5.117484548E1 +1.404045000E3,5.912447648E1 +1.404295000E3,5.591921957E1 +1.404568000E3,5.565028551E1 +1.404828000E3,5.013398992E1 +1.405122000E3,5.465164253E1 +1.405364000E3,5.305211462E1 +1.405620000E3,5.755171154E1 +1.405929000E3,6.007655449E1 +1.406174000E3,5.899920387E1 +1.406463000E3,5.970773629E1 +1.406720000E3,5.770443308E1 +1.407009000E3,5.521297881E1 +1.407407000E3,5.604277064E1 +1.407677000E3,5.646208540E1 +1.407969000E3,4.906112006E1 +1.408239000E3,5.193830101E1 +1.408558000E3,4.835599484E1 +1.408830000E3,4.864558507E1 +1.409087000E3,5.566138381E1 +1.409349000E3,5.240816417E1 +1.409604000E3,4.366169359E1 +1.409843000E3,4.924613485E1 +1.410167000E3,5.289541091E1 +1.410462000E3,5.429333459E1 +1.410857000E3,5.232803186E1 +1.411115000E3,5.279391543E1 +1.411388000E3,5.698112108E1 +1.411689000E3,4.954635028E1 +1.411940000E3,5.347151392E1 +1.412202000E3,5.431542928E1 +1.412461000E3,5.708654506E1 +1.412712000E3,5.999867781E1 +1.412972000E3,5.836713300E1 +1.413243000E3,5.662529411E1 +1.413547000E3,5.760118844E1 +1.413790000E3,5.272334048E1 +1.414155000E3,5.585703000E1 +1.414407000E3,5.277217169E1 +1.414666000E3,5.575617717E1 +1.414970000E3,5.588142009E1 +1.415263000E3,5.043609445E1 +1.415519000E3,5.366091219E1 +1.415818000E3,6.729065738E1 +1.416082000E3,5.454700058E1 +1.416357000E3,5.542836481E1 +1.416608000E3,6.150002805E1 +1.416870000E3,5.918799699E1 +1.417164000E3,5.739551304E1 +1.417548000E3,5.312046747E1 +1.417864000E3,5.735989692E1 +1.418111000E3,5.463708503E1 +1.418368000E3,5.616594485E1 +1.418622000E3,5.674613857E1 +1.418880000E3,5.393284238E1 +1.419178000E3,5.477989298E1 +1.419414000E3,5.673628135E1 +1.419692000E3,5.246670124E1 +1.419935000E3,5.929492524E1 +1.420173000E3,5.718550468E1 +1.420417000E3,5.597503360E1 +1.420745000E3,5.209811810E1 +1.421016000E3,5.108820023E1 +1.421271000E3,5.704928631E1 +1.421524000E3,5.534619134E1 +1.421787000E3,5.298830069E1 +1.422048000E3,5.357926773E1 +1.422324000E3,5.150193558E1 +1.422590000E3,5.236977243E1 +1.422860000E3,5.598534631E1 +1.423111000E3,5.804712890E1 +1.423360000E3,5.584477369E1 +1.423617000E3,6.166819052E1 +1.423956000E3,6.217862533E1 +1.424239000E3,6.474885215E1 +1.424493000E3,6.561094566E1 +1.424771000E3,6.624921272E1 +1.425013000E3,6.269332683E1 +1.425310000E3,6.427501900E1 +1.425550000E3,6.406421996E1 +1.425806000E3,6.561696377E1 +1.426124000E3,5.757984813E1 +1.426392000E3,6.467113265E1 +1.426661000E3,6.110360998E1 +1.426971000E3,6.257935575E1 +1.427325000E3,6.059948571E1 +1.427600000E3,6.060080967E1 +1.427858000E3,6.129065918E1 +1.428157000E3,6.869907238E1 +1.428403000E3,6.216021300E1 +1.428668000E3,6.028715826E1 +1.428917000E3,5.215970407E1 +1.429175000E3,5.348756082E1 +1.429445000E3,5.866879342E1 +1.429775000E3,5.422412762E1 +1.430077000E3,5.967912654E1 +1.430370000E3,6.053958419E1 +1.430696000E3,5.642153628E1 +1.430959000E3,5.797803369E1 +1.431217000E3,5.265853131E1 +1.431545000E3,6.085541328E1 +1.431825000E3,6.579757863E1 +1.432095000E3,6.783858113E1 +1.432356000E3,6.680245969E1 +1.432609000E3,5.699539434E1 +1.432887000E3,5.495476405E1 +1.433146000E3,5.431336982E1 +1.433405000E3,5.468573805E1 +1.433768000E3,6.415525931E1 +1.434037000E3,5.996195649E1 +1.434305000E3,5.880144898E1 +1.434536000E3,5.062803370E1 +1.434794000E3,4.838886892E1 +1.435059000E3,4.852598648E1 +1.435348000E3,5.424758091E1 +1.435611000E3,6.028120001E1 +1.435845000E3,5.860165153E1 +1.436098000E3,5.820116177E1 +1.436348000E3,5.458976108E1 +1.436603000E3,5.748661459E1 +1.436983000E3,5.071157707E1 +1.437230000E3,5.187454119E1 +1.437505000E3,5.690962542E1 +1.437744000E3,5.898297949E1 +1.438006000E3,6.083548120E1 +1.438278000E3,4.929702369E1 +1.438556000E3,5.094464024E1 +1.438857000E3,5.451803318E1 +1.439157000E3,4.851675588E1 +1.439427000E3,4.781325912E1 +1.439724000E3,4.919544886E1 +1.439968000E3,4.662525194E1 +1.440374000E3,4.187537091E1 +1.440620000E3,5.083424523E1 +1.440895000E3,4.476479772E1 +1.441179000E3,5.236126827E1 +1.441495000E3,4.954212438E1 +1.441772000E3,5.444261950E1 +1.442048000E3,5.023278537E1 +1.442273000E3,4.640707667E1 +1.442557000E3,5.088583460E1 +1.442822000E3,5.041471443E1 +1.443067000E3,4.940152653E1 +1.443315000E3,4.834999124E1 +1.443550000E3,5.084173145E1 +1.443802000E3,4.674944421E1 +1.444118000E3,5.005548854E1 +1.444412000E3,4.880222753E1 +1.444695000E3,4.829349493E1 +1.444948000E3,4.815408858E1 +1.445231000E3,4.968297573E1 +1.445471000E3,5.263069989E1 +1.445763000E3,4.570389774E1 +1.446062000E3,4.674284816E1 +1.446364000E3,5.179136771E1 +1.446637000E3,5.007894257E1 +1.446884000E3,5.001285233E1 +1.447102000E3,5.063641057E1 +1.447373000E3,4.164946286E1 +1.447601000E3,3.981108666E1 +1.447894000E3,4.316358072E1 +1.448132000E3,5.465701871E1 +1.448431000E3,4.615144027E1 +1.448672000E3,4.353154230E1 +1.448965000E3,5.208221965E1 +1.449200000E3,5.530439334E1 +1.449496000E3,4.996075498E1 +1.449729000E3,5.218941020E1 +1.450060000E3,4.888890123E1 +1.450335000E3,5.030971329E1 +1.450629000E3,5.012870067E1 +1.450899000E3,4.847297804E1 +1.451151000E3,4.759762696E1 +1.451454000E3,4.978926902E1 +1.451751000E3,4.930919072E1 +1.452001000E3,5.004861581E1 +1.452285000E3,5.051309266E1 +1.452566000E3,4.810890055E1 +1.452826000E3,4.654354865E1 +1.453069000E3,4.761425190E1 +1.453369000E3,4.589508435E1 +1.453616000E3,4.954922405E1 +1.453886000E3,4.065983258E1 +1.454197000E3,4.220647307E1 +1.454513000E3,4.858310714E1 +1.454789000E3,5.196405012E1 +1.455012000E3,5.467685341E1 +1.455262000E3,5.753332593E1 +1.455513000E3,4.707036048E1 +1.455859000E3,3.942826471E1 +1.456237000E3,5.170062203E1 +1.456495000E3,6.022707597E1 +1.456743000E3,5.524301158E1 +1.456990000E3,5.482834451E1 +1.457257000E3,4.917995293E1 +1.457590000E3,4.739340640E1 +1.457831000E3,4.842051754E1 +1.458073000E3,6.166669432E1 +1.458329000E3,5.427876580E1 +1.458617000E3,4.896037674E1 +1.458889000E3,4.346397471E1 +1.459122000E3,4.481546196E1 +1.459424000E3,5.149740630E1 +1.459726000E3,4.614214660E1 +1.459975000E3,4.567227587E1 +1.460237000E3,5.348774305E1 +1.460488000E3,5.617792493E1 +1.460730000E3,5.122937085E1 +1.460971000E3,5.712815616E1 +1.461266000E3,5.592815325E1 +1.461504000E3,5.208026338E1 +1.461798000E3,5.368936290E1 +1.462033000E3,5.424431898E1 +1.462332000E3,5.229538114E1 +1.462686000E3,5.012562607E1 +1.462943000E3,5.517893002E1 +1.463292000E3,5.544440679E1 +1.463574000E3,5.195225561E1 +1.463851000E3,5.582804772E1 +1.464133000E3,5.163717454E1 +1.464392000E3,5.056978371E1 +1.464653000E3,5.085736348E1 +1.464931000E3,5.111025552E1 +1.465171000E3,5.008163028E1 +1.465468000E3,5.204681239E1 +1.465721000E3,4.873162615E1 +1.466070000E3,5.052420662E1 +1.466365000E3,5.115431116E1 +1.466626000E3,5.008089225E1 +1.466902000E3,5.455907242E1 +1.467123000E3,5.881328519E1 +1.467422000E3,5.654049662E1 +1.467665000E3,6.208900398E1 +1.467911000E3,5.573620080E1 +1.468210000E3,5.034178452E1 +1.468461000E3,4.644884091E1 +1.468716000E3,4.489036287E1 +1.469021000E3,4.555962209E1 +1.469437000E3,4.956164087E1 +1.469733000E3,5.014140659E1 +1.469995000E3,5.025508197E1 +1.470298000E3,4.976482928E1 +1.470552000E3,4.666552600E1 +1.470801000E3,5.164800320E1 +1.471107000E3,4.748865751E1 +1.471358000E3,5.068455306E1 +1.471623000E3,5.380657492E1 +1.471874000E3,4.918332364E1 +1.472155000E3,4.974368594E1 +1.472539000E3,5.519550202E1 +1.472795000E3,5.119649457E1 +1.473056000E3,5.406344748E1 +1.473370000E3,5.554928156E1 +1.473655000E3,5.458007948E1 +1.473895000E3,5.519923804E1 +1.474152000E3,5.580016483E1 +1.474437000E3,5.718813696E1 +1.474685000E3,5.734393611E1 +1.474960000E3,5.879862387E1 +1.475221000E3,5.602300215E1 +1.475474000E3,5.025640835E1 +1.475826000E3,5.543439402E1 +1.476071000E3,5.232164352E1 +1.476323000E3,5.898115961E1 +1.476584000E3,6.066467981E1 +1.476821000E3,5.071984472E1 +1.477123000E3,5.740447565E1 +1.477365000E3,5.959782608E1 +1.477662000E3,5.958620190E1 +1.477906000E3,5.753388342E1 +1.478144000E3,5.506848886E1 +1.478455000E3,5.769430513E1 +1.478723000E3,5.629679592E1 +1.478987000E3,5.649495967E1 +1.479262000E3,5.787253729E1 +1.479512000E3,5.216150167E1 +1.479813000E3,4.948302212E1 +1.480088000E3,5.080056078E1 +1.480342000E3,4.734041467E1 +1.480601000E3,4.440736689E1 +1.480866000E3,5.120725270E1 +1.481166000E3,5.053254929E1 +1.481466000E3,5.274685420E1 +1.481724000E3,5.071521067E1 +1.481973000E3,5.225995741E1 +1.482300000E3,5.133897759E1 +1.482575000E3,5.007250383E1 +1.482845000E3,5.042400131E1 +1.483101000E3,5.258901014E1 +1.483408000E3,5.618504625E1 +1.483668000E3,5.503349900E1 +1.483933000E3,4.974702245E1 +1.484194000E3,5.170781389E1 +1.484440000E3,5.072340799E1 +1.484707000E3,5.947536199E1 +1.485018000E3,5.467515596E1 +1.485306000E3,6.085614245E1 +1.485656000E3,5.990152864E1 +1.485935000E3,5.602550586E1 +1.486168000E3,5.561766537E1 +1.486422000E3,5.350876804E1 +1.486701000E3,5.699979875E1 +1.486960000E3,5.177464585E1 +1.487207000E3,5.249766501E1 +1.487486000E3,5.285366750E1 +1.487751000E3,5.316768095E1 +1.488002000E3,4.876639606E1 +1.488262000E3,5.179834313E1 +1.488516000E3,4.991892364E1 +1.488812000E3,5.156353661E1 +1.489125000E3,5.341434219E1 +1.489400000E3,5.426211096E1 +1.489675000E3,4.699672779E1 +1.489958000E3,5.361914521E1 +1.490219000E3,5.605827819E1 +1.490490000E3,5.089547448E1 +1.490772000E3,5.163564337E1 +1.491061000E3,5.841576784E1 +1.491309000E3,5.524417730E1 +1.491589000E3,5.450558122E1 +1.491873000E3,5.581032480E1 +1.492194000E3,5.802352567E1 +1.492448000E3,4.962366630E1 +1.492810000E3,5.873656508E1 +1.493058000E3,5.690804947E1 +1.493359000E3,5.262261274E1 +1.493674000E3,5.584655342E1 +1.493919000E3,5.542283425E1 +1.494163000E3,5.373884310E1 +1.494412000E3,5.084083433E1 +1.494678000E3,4.964027690E1 +1.494956000E3,5.125570040E1 +1.495204000E3,5.194895191E1 +1.495526000E3,4.961412488E1 +1.495784000E3,4.972405818E1 +1.496036000E3,4.777083448E1 +1.496283000E3,5.231556692E1 +1.496593000E3,5.894066851E1 +1.496842000E3,6.007182772E1 +1.497086000E3,6.003234807E1 +1.497358000E3,5.170627362E1 +1.497682000E3,5.564688341E1 +1.497937000E3,5.459086103E1 +1.498234000E3,5.654462748E1 +1.498530000E3,5.643601391E1 +1.498887000E3,5.593732695E1 +1.499182000E3,5.279859883E1 +1.499469000E3,5.063056157E1 +1.499723000E3,4.846330641E1 +1.499972000E3,5.696559719E1 +1.500236000E3,5.806291630E1 +1.500555000E3,5.485435177E1 +1.500851000E3,5.386376671E1 +1.501120000E3,5.529102258E1 +1.501400000E3,5.058415032E1 +1.501675000E3,5.420960743E1 +1.501928000E3,4.962388553E1 +1.502263000E3,5.167692375E1 +1.502567000E3,5.072695334E1 +1.502878000E3,5.319678523E1 +1.503119000E3,5.961199300E1 +1.503369000E3,5.299728366E1 +1.503631000E3,5.369404965E1 +1.503941000E3,5.426817134E1 +1.504209000E3,5.369336762E1 +1.504462000E3,5.246626497E1 +1.504724000E3,5.358557871E1 +1.505015000E3,4.957781391E1 +1.505279000E3,5.117668163E1 +1.505699000E3,5.216401891E1 +1.505963000E3,5.011348657E1 +1.506261000E3,5.259055540E1 +1.506507000E3,4.579432510E1 +1.506795000E3,4.877099475E1 +1.507032000E3,4.679595596E1 +1.507314000E3,5.136222565E1 +1.507549000E3,5.267101191E1 +1.507792000E3,5.244999525E1 +1.508074000E3,5.180561005E1 +1.508391000E3,5.030990700E1 +1.508607000E3,5.167226321E1 +1.508859000E3,5.218207738E1 +1.509151000E3,5.317725961E1 +1.509397000E3,5.318899610E1 +1.509689000E3,4.978257152E1 +1.509934000E3,5.032443800E1 +1.510228000E3,4.777293014E1 +1.510466000E3,4.646316587E1 +1.510767000E3,5.646850943E1 +1.511001000E3,5.638889819E1 +1.511293000E3,5.773758842E1 +1.511610000E3,5.580372922E1 +1.511900000E3,5.517502050E1 +1.512151000E3,5.684013484E1 +1.512393000E3,5.407249321E1 +1.512652000E3,5.725430710E1 +1.512902000E3,5.755876004E1 +1.513148000E3,5.492786930E1 +1.513404000E3,5.665177401E1 +1.513705000E3,5.675683028E1 +1.513957000E3,5.845897420E1 +1.514258000E3,5.334537973E1 +1.514488000E3,5.035361876E1 +1.514812000E3,4.886526824E1 +1.515059000E3,5.555156669E1 +1.515357000E3,5.401240780E1 +1.515600000E3,5.191330713E1 +1.515873000E3,5.158089375E1 +1.516102000E3,5.397456219E1 +1.516410000E3,5.205317520E1 +1.516679000E3,5.689433829E1 +1.516971000E3,5.397466306E1 +1.517230000E3,5.553699481E1 +1.517504000E3,5.550832571E1 +1.517763000E3,5.490604036E1 +1.518130000E3,5.129555301E1 +1.518403000E3,5.478479772E1 +1.518670000E3,5.687403653E1 +1.518921000E3,5.464295853E1 +1.519177000E3,5.713561839E1 +1.519461000E3,5.306473622E1 +1.519745000E3,5.320579073E1 +1.520002000E3,5.309385307E1 +1.520258000E3,5.058967996E1 +1.520552000E3,5.470724085E1 +1.520793000E3,5.303104936E1 +1.521156000E3,5.432496893E1 +1.521453000E3,5.594215604E1 +1.521721000E3,5.308545736E1 +1.521969000E3,5.327888421E1 +1.522220000E3,5.030915333E1 +1.522490000E3,5.230098434E1 +1.522776000E3,4.743827766E1 +1.523026000E3,5.464211349E1 +1.523327000E3,5.322537523E1 +1.523581000E3,5.154569729E1 +1.523826000E3,5.335950152E1 +1.524133000E3,5.482016506E1 +1.524417000E3,5.825411535E1 +1.524853000E3,5.879893849E1 +1.525179000E3,5.728744863E1 +1.525433000E3,5.737571640E1 +1.525696000E3,5.681107869E1 +1.525950000E3,5.695921586E1 +1.526210000E3,5.455429607E1 +1.526487000E3,5.808007225E1 +1.526729000E3,5.500512440E1 +1.527042000E3,5.476260812E1 +1.527339000E3,5.849962899E1 +1.527579000E3,5.719021529E1 +1.527910000E3,5.422226824E1 +1.528160000E3,5.266147572E1 +1.528411000E3,5.030747323E1 +1.528675000E3,5.057502492E1 +1.528920000E3,5.365292462E1 +1.529175000E3,5.444435151E1 +1.529423000E3,5.586906556E1 +1.529732000E3,5.808239082E1 +1.530030000E3,5.492304678E1 +1.530283000E3,5.727734117E1 +1.530542000E3,5.518682809E1 +1.530805000E3,5.838179726E1 +1.531133000E3,5.619103982E1 +1.531448000E3,5.705771680E1 +1.531738000E3,5.605732573E1 +1.531987000E3,5.497746164E1 +1.532293000E3,5.570350387E1 +1.532602000E3,5.687942595E1 +1.532873000E3,5.590365459E1 +1.533132000E3,5.379832162E1 +1.533387000E3,5.951317374E1 +1.533654000E3,5.728034638E1 +1.533915000E3,5.755019099E1 +1.534163000E3,5.625336618E1 +1.534512000E3,5.560455999E1 +1.534783000E3,5.186395468E1 +1.535086000E3,6.018952062E1 +1.535379000E3,5.360739703E1 +1.535619000E3,5.637744941E1 +1.535916000E3,5.710534601E1 +1.536153000E3,5.751101039E1 +1.536449000E3,5.888699469E1 +1.536688000E3,5.900809640E1 +1.536983000E3,5.539354346E1 +1.537218000E3,5.212761926E1 +1.537514000E3,6.113968309E1 +1.537773000E3,5.789795306E1 +1.538038000E3,6.065119472E1 +1.538356000E3,5.715251587E1 +1.538607000E3,5.728294892E1 +1.538911000E3,5.939537878E1 +1.539175000E3,5.879010449E1 +1.539417000E3,6.007594674E1 +1.539661000E3,5.983742076E1 +1.539908000E3,6.299497704E1 +1.540182000E3,6.042347696E1 +1.540457000E3,5.844914903E1 +1.540758000E3,5.775362746E1 +1.541037000E3,5.216165265E1 +1.541334000E3,5.255584969E1 +1.541593000E3,5.278098471E1 +1.541846000E3,5.581770981E1 +1.542092000E3,5.736301867E1 +1.542389000E3,5.733951694E1 +1.542623000E3,5.674705381E1 +1.542880000E3,5.506043774E1 +1.543125000E3,5.404728252E1 +1.543453000E3,5.428884791E1 +1.543732000E3,5.547580162E1 +1.544085000E3,5.471747417E1 +1.544346000E3,5.496243571E1 +1.544613000E3,5.288395526E1 +1.544860000E3,5.036194227E1 +1.545111000E3,5.124283852E1 +1.545413000E3,5.731432515E1 +1.545687000E3,5.663908688E1 +1.545955000E3,5.741659811E1 +1.546253000E3,5.084604561E1 +1.546502000E3,5.163330463E1 +1.546772000E3,4.777378739E1 +1.547025000E3,5.200725426E1 +1.547353000E3,5.049690945E1 +1.547625000E3,5.284766124E1 +1.547924000E3,5.396462244E1 +1.548148000E3,5.375524192E1 +1.548403000E3,5.670544075E1 +1.548716000E3,5.332369727E1 +1.548963000E3,5.544219871E1 +1.549238000E3,5.323430806E1 +1.549471000E3,5.180674965E1 +1.549727000E3,5.329467652E1 +1.550023000E3,5.080742485E1 +1.550310000E3,5.026906170E1 +1.550639000E3,5.582908231E1 +1.550905000E3,5.331150300E1 +1.551172000E3,5.186910180E1 +1.551471000E3,5.624561668E1 +1.551739000E3,5.555744845E1 +1.552012000E3,5.944044312E1 +1.552264000E3,6.002272858E1 +1.552531000E3,5.816546804E1 +1.552850000E3,5.936846960E1 +1.553097000E3,5.514794057E1 +1.553401000E3,5.160130424E1 +1.553757000E3,5.107783990E1 +1.554023000E3,5.871375450E1 +1.554276000E3,5.617325190E1 +1.554544000E3,5.736189521E1 +1.554800000E3,5.317828333E1 +1.555051000E3,5.715279916E1 +1.555321000E3,5.726931658E1 +1.555563000E3,5.567771069E1 +1.555823000E3,5.156101336E1 +1.556126000E3,5.688446569E1 +1.556378000E3,6.074118939E1 +1.556642000E3,5.974958265E1 +1.556918000E3,5.702757711E1 +1.557208000E3,5.874442787E1 +1.557457000E3,5.795683904E1 +1.557722000E3,6.039916355E1 +1.558025000E3,5.662755924E1 +1.558320000E3,5.332514547E1 +1.558595000E3,6.059700286E1 +1.558850000E3,5.775207016E1 +1.559098000E3,6.106988435E1 +1.559349000E3,6.039494527E1 +1.559644000E3,5.672405799E1 +1.559889000E3,5.814375710E1 +1.560135000E3,6.159401746E1 +1.560480000E3,5.397583636E1 +1.560770000E3,5.291692280E1 +1.561026000E3,5.439035965E1 +1.561320000E3,5.553984968E1 +1.561619000E3,5.808332247E1 +1.561927000E3,5.744100555E1 +1.562191000E3,5.636250023E1 +1.562451000E3,6.055150308E1 +1.562703000E3,5.624161562E1 +1.562979000E3,5.401048000E1 +1.563233000E3,5.588901558E1 +1.563595000E3,6.020828902E1 +1.563855000E3,6.586197618E1 +1.564143000E3,5.744692826E1 +1.564421000E3,5.175273280E1 +1.564681000E3,5.584828423E1 +1.564939000E3,5.622472521E1 +1.565190000E3,5.419184381E1 +1.565447000E3,4.818775863E1 +1.565701000E3,5.443344746E1 +1.565956000E3,4.960344337E1 +1.566224000E3,6.289868185E1 +1.566469000E3,6.499026885E1 +1.566794000E3,6.277031329E1 +1.567086000E3,5.336636778E1 +1.567405000E3,5.867761918E1 +1.567644000E3,5.135518394E1 +1.567909000E3,5.665720126E1 +1.568204000E3,5.915910399E1 +1.568455000E3,5.687790668E1 +1.568730000E3,5.815647569E1 +1.568976000E3,5.595761669E1 +1.569238000E3,5.367288589E1 +1.569491000E3,4.954593185E1 +1.569752000E3,5.199120702E1 +1.570099000E3,5.857172858E1 +1.570354000E3,5.533510860E1 +1.570614000E3,5.615291914E1 +1.570871000E3,4.816531300E1 +1.571136000E3,4.597509459E1 +1.571387000E3,5.454256971E1 +1.571722000E3,5.262076426E1 +1.572010000E3,5.108681545E1 +1.572285000E3,5.269091247E1 +1.572547000E3,4.898785412E1 +1.572807000E3,4.867008841E1 +1.573066000E3,5.306545801E1 +1.573313000E3,5.092331160E1 +1.573694000E3,5.549117670E1 +1.574009000E3,5.304099104E1 +1.574279000E3,5.377011563E1 +1.574520000E3,5.244694975E1 +1.574770000E3,5.542353961E1 +1.575031000E3,5.327330735E1 +1.575319000E3,5.123065406E1 +1.575617000E3,5.429517947E1 +1.575867000E3,5.443507599E1 +1.576132000E3,5.273613947E1 +1.576382000E3,5.717979407E1 +1.576705000E3,5.184816589E1 +1.576955000E3,4.851208329E1 +1.577250000E3,4.976440939E1 +1.577493000E3,5.236737582E1 +1.577737000E3,5.414723297E1 +1.577998000E3,5.490706774E1 +1.578342000E3,5.591011545E1 +1.578650000E3,5.689754115E1 +1.578906000E3,5.680987850E1 +1.579148000E3,5.379415708E1 +1.579394000E3,5.844713665E1 +1.579644000E3,4.927798375E1 +1.580006000E3,5.263100090E1 +1.580294000E3,5.410513055E1 +1.580548000E3,5.541047194E1 +1.580801000E3,5.058665778E1 +1.581070000E3,5.191468462E1 +1.581349000E3,4.623838572E1 +1.581601000E3,4.883886927E1 +1.581851000E3,4.951159763E1 +1.582152000E3,5.372806241E1 +1.582461000E3,4.077427406E1 +1.582742000E3,4.089897224E1 +1.582967000E3,4.661834708E1 +1.583330000E3,4.498181641E1 +1.583574000E3,4.413204165E1 +1.583835000E3,4.830731952E1 +1.584102000E3,5.133890730E1 +1.584385000E3,5.327819620E1 +1.584689000E3,5.148788947E1 +1.584935000E3,5.259351261E1 +1.585217000E3,5.210912674E1 +1.585449000E3,5.375523399E1 +1.585710000E3,5.030792675E1 +1.585957000E3,5.116594607E1 +1.586271000E3,5.729332409E1 +1.586601000E3,5.372439258E1 +1.586868000E3,5.283683191E1 +1.587111000E3,5.261490358E1 +1.587371000E3,5.394382083E1 +1.587617000E3,5.362104804E1 +1.587861000E3,5.192909002E1 +1.588111000E3,5.534291684E1 +1.588356000E3,5.529045875E1 +1.588616000E3,5.723903943E1 +1.588878000E3,5.769467674E1 +1.589116000E3,5.686991669E1 +1.589367000E3,5.472851050E1 +1.589709000E3,5.509501284E1 +1.589971000E3,6.218794924E1 +1.590276000E3,5.544714813E1 +1.590522000E3,5.587492513E1 +1.590770000E3,6.310127100E1 +1.591031000E3,6.016601681E1 +1.591331000E3,5.868635044E1 +1.591588000E3,5.739907262E1 +1.591847000E3,5.500154159E1 +1.592105000E3,5.382353142E1 +1.592358000E3,5.235465349E1 +1.592660000E3,5.432444683E1 +1.592979000E3,5.583837344E1 +1.593280000E3,5.890777444E1 +1.593531000E3,6.247008348E1 +1.593777000E3,5.524440051E1 +1.594082000E3,6.039849382E1 +1.594376000E3,5.779880973E1 +1.594616000E3,6.006977904E1 +1.594916000E3,6.157791897E1 +1.595158000E3,5.727348505E1 +1.595456000E3,6.219777130E1 +1.595702000E3,6.333776727E1 +1.596011000E3,6.315243887E1 +1.596287000E3,5.622487117E1 +1.596582000E3,4.999384026E1 +1.596838000E3,6.052096287E1 +1.597136000E3,5.730636753E1 +1.597383000E3,5.672770046E1 +1.597632000E3,5.282894107E1 +1.597943000E3,5.609826115E1 +1.598240000E3,5.950608691E1 +1.598483000E3,5.262580449E1 +1.598777000E3,5.638403375E1 +1.599039000E3,5.695994656E1 +1.599354000E3,5.595638462E1 +1.599677000E3,5.456948793E1 +1.599955000E3,5.641745933E1 +1.600254000E3,5.373490010E1 +1.600541000E3,5.613295480E1 +1.600824000E3,5.295628543E1 +1.601071000E3,5.036371368E1 +1.601313000E3,5.734560753E1 +1.601585000E3,5.869799540E1 +1.601832000E3,5.689867309E1 +1.602079000E3,5.521901034E1 +1.602376000E3,5.958743796E1 +1.602630000E3,5.697555749E1 +1.602881000E3,6.067520996E1 +1.603136000E3,6.296730837E1 +1.603381000E3,6.302345663E1 +1.603674000E3,5.614231839E1 +1.603920000E3,5.471880748E1 +1.604179000E3,6.025548138E1 +1.604432000E3,5.848975602E1 +1.604677000E3,6.051353275E1 +1.604988000E3,6.061163824E1 +1.605287000E3,5.127173554E1 +1.605535000E3,5.271948405E1 +1.605890000E3,5.457177629E1 +1.606143000E3,5.047420148E1 +1.606392000E3,5.197178768E1 +1.606684000E3,5.635777628E1 +1.606927000E3,5.691931577E1 +1.607165000E3,5.135114371E1 +1.607440000E3,5.173034620E1 +1.607734000E3,5.786109434E1 +1.607974000E3,5.620528212E1 +1.608236000E3,5.432552885E1 +1.608507000E3,5.036034087E1 +1.608763000E3,4.872303481E1 +1.609123000E3,5.516764205E1 +1.609377000E3,5.867465981E1 +1.609624000E3,5.634077767E1 +1.609869000E3,5.153316916E1 +1.610150000E3,5.212022412E1 +1.610428000E3,5.727395868E1 +1.610681000E3,5.443759521E1 +1.610944000E3,5.599199613E1 +1.611242000E3,5.709063131E1 +1.611495000E3,5.747461955E1 +1.611762000E3,5.445378087E1 +1.612040000E3,5.178206799E1 +1.612294000E3,5.347146008E1 +1.612548000E3,5.695533984E1 +1.612791000E3,5.852885666E1 +1.613050000E3,5.349710519E1 +1.613354000E3,5.482274130E1 +1.613598000E3,5.580201302E1 +1.613898000E3,5.533013655E1 +1.614151000E3,5.307302798E1 +1.614404000E3,5.034267096E1 +1.614651000E3,5.096368681E1 +1.614959000E3,5.358615730E1 +1.615202000E3,5.402822959E1 +1.615565000E3,5.173226008E1 +1.615815000E3,5.317238447E1 +1.616120000E3,5.490271856E1 +1.616406000E3,5.760350961E1 +1.616712000E3,5.516631401E1 +1.616950000E3,5.344247717E1 +1.617197000E3,5.105574764E1 +1.617480000E3,5.297874749E1 +1.617726000E3,5.181083735E1 +1.617978000E3,5.504462581E1 +1.618236000E3,5.652623382E1 +1.618484000E3,5.850281135E1 +1.618804000E3,5.207268405E1 +1.619061000E3,4.595989093E1 +1.619309000E3,5.832875112E1 +1.619574000E3,5.691639889E1 +1.619831000E3,5.277897330E1 +1.620092000E3,5.634285556E1 +1.620390000E3,5.782897026E1 +1.620660000E3,6.167326244E1 +1.620905000E3,5.736569246E1 +1.621145000E3,6.422841213E1 +1.621400000E3,6.037316593E1 +1.621649000E3,5.869946609E1 +1.622005000E3,6.007663283E1 +1.622308000E3,5.750286676E1 +1.622551000E3,5.315958033E1 +1.622849000E3,5.996646537E1 +1.623085000E3,6.310656156E1 +1.623382000E3,6.410911411E1 +1.623620000E3,6.559322950E1 +1.623914000E3,6.191537215E1 +1.624148000E3,6.509401862E1 +1.624441000E3,6.149444047E1 +1.624676000E3,5.887830140E1 +1.624914000E3,5.333395699E1 +1.625242000E3,5.080509527E1 +1.625531000E3,5.208999136E1 +1.625827000E3,4.936268455E1 +1.626072000E3,4.620940228E1 +1.626384000E3,4.812346411E1 +1.626678000E3,5.508818133E1 +1.626931000E3,5.929414420E1 +1.627193000E3,5.798382987E1 +1.627446000E3,5.695027340E1 +1.627690000E3,6.200547811E1 +1.627940000E3,5.895921781E1 +1.628278000E3,5.832121877E1 +1.628595000E3,5.727506493E1 +1.628914000E3,5.676841787E1 +1.629164000E3,5.904549933E1 +1.629453000E3,6.079247221E1 +1.629705000E3,5.978532207E1 +1.629973000E3,6.204876077E1 +1.630223000E3,6.278691878E1 +1.630527000E3,5.775584326E1 +1.630780000E3,5.715423799E1 +1.631076000E3,5.993810238E1 +1.631416000E3,5.945816984E1 +1.631690000E3,5.911038375E1 +1.631989000E3,6.401318161E1 +1.632251000E3,6.288325429E1 +1.632577000E3,6.142114348E1 +1.632857000E3,6.027735545E1 +1.633125000E3,6.058800698E1 +1.633410000E3,6.197295377E1 +1.633713000E3,5.649410931E1 +1.633983000E3,5.349526422E1 +1.634267000E3,5.160473432E1 +1.634550000E3,5.471426263E1 +1.634881000E3,5.381566790E1 +1.635145000E3,5.592472168E1 +1.635394000E3,5.502963456E1 +1.635636000E3,5.458091777E1 +1.635914000E3,5.361113418E1 +1.636211000E3,5.972112366E1 +1.636510000E3,6.134956919E1 +1.636770000E3,6.291498703E1 +1.637018000E3,6.051799303E1 +1.637272000E3,5.800319143E1 +1.637535000E3,6.099184952E1 +1.637791000E3,6.192072936E1 +1.638191000E3,5.592689657E1 +1.638462000E3,5.015193522E1 +1.638759000E3,5.662906295E1 +1.638997000E3,6.189212385E1 +1.639312000E3,5.656112303E1 +1.639618000E3,5.827187766E1 +1.639922000E3,5.894515280E1 +1.640188000E3,5.379936676E1 +1.640446000E3,5.498271927E1 +1.640705000E3,5.883708769E1 +1.641003000E3,5.515786146E1 +1.641329000E3,5.323855564E1 +1.641593000E3,5.000482182E1 +1.641876000E3,5.182077324E1 +1.642101000E3,5.319082569E1 +1.642344000E3,6.611850928E1 +1.642626000E3,5.190424983E1 +1.642867000E3,5.081734830E1 +1.643118000E3,5.711045841E1 +1.643458000E3,5.520016906E1 +1.643723000E3,5.247062228E1 +1.643997000E3,5.309157546E1 +1.644256000E3,5.339769460E1 +1.644621000E3,5.982216134E1 +1.644883000E3,5.915424673E1 +1.645133000E3,5.849263499E1 +1.645426000E3,5.826666974E1 +1.645723000E3,5.673329902E1 +1.645972000E3,5.580417722E1 +1.646244000E3,5.457004449E1 +1.646473000E3,5.835958867E1 +1.646716000E3,5.599398637E1 +1.646958000E3,5.928075116E1 +1.647232000E3,5.394053714E1 +1.647507000E3,5.853879118E1 +1.647858000E3,5.674494648E1 +1.648113000E3,5.640074652E1 +1.648414000E3,5.694867796E1 +1.648656000E3,5.573466688E1 +1.648962000E3,5.556104957E1 +1.649254000E3,5.770712773E1 +1.649548000E3,5.765349227E1 +1.649790000E3,5.583875333E1 +1.650054000E3,6.321152276E1 +1.650306000E3,5.966047080E1 +1.650600000E3,5.502015578E1 +1.650872000E3,5.066616477E1 +1.651172000E3,5.442335496E1 +1.651440000E3,5.956947456E1 +1.651736000E3,5.798320450E1 +1.651979000E3,5.739040713E1 +1.652228000E3,5.803662120E1 +1.652491000E3,6.146613872E1 +1.652750000E3,5.929116619E1 +1.653021000E3,5.936282359E1 +1.653288000E3,5.853226920E1 +1.653570000E3,5.954415072E1 +1.653872000E3,5.749576278E1 +1.654250000E3,5.567111200E1 +1.654518000E3,6.059415807E1 +1.654812000E3,5.855300274E1 +1.655081000E3,5.797601107E1 +1.655350000E3,6.029475669E1 +1.655647000E3,5.264118678E1 +1.655893000E3,5.715075800E1 +1.656153000E3,5.787679223E1 +1.656407000E3,6.038334743E1 +1.656655000E3,6.038245752E1 +1.656912000E3,5.475945603E1 +1.657171000E3,5.661674174E1 +1.657473000E3,5.618877186E1 +1.657717000E3,5.712918740E1 +1.657972000E3,5.834783502E1 +1.658283000E3,6.198115012E1 +1.658526000E3,5.639977894E1 +1.658788000E3,5.416850689E1 +1.659089000E3,5.679686188E1 +1.659335000E3,5.697270686E1 +1.659619000E3,5.371836804E1 +1.659873000E3,6.082252986E1 +1.660120000E3,6.285201132E1 +1.660416000E3,6.088574857E1 +1.660728000E3,6.109109391E1 +1.661004000E3,5.861240224E1 +1.661283000E3,6.123850168E1 +1.661519000E3,5.849447684E1 +1.661821000E3,5.472352136E1 +1.662065000E3,5.502625911E1 +1.662312000E3,5.606436387E1 +1.662565000E3,5.546236927E1 +1.662845000E3,6.075823181E1 +1.663075000E3,5.951357638E1 +1.663350000E3,5.956681026E1 +1.663575000E3,5.780116333E1 +1.663928000E3,6.184122024E1 +1.664178000E3,5.626291699E1 +1.664419000E3,5.635545931E1 +1.664671000E3,5.487242490E1 +1.664936000E3,5.392872477E1 +1.665237000E3,5.658170902E1 +1.665476000E3,5.449322435E1 +1.665752000E3,5.111063749E1 +1.665997000E3,5.288359358E1 +1.666249000E3,5.825102048E1 +1.666508000E3,6.087585373E1 +1.666750000E3,5.822210598E1 +1.667110000E3,6.320270923E1 +1.667355000E3,5.563170163E1 +1.667628000E3,5.240635194E1 +1.667875000E3,5.485055122E1 +1.668144000E3,5.590209292E1 +1.668402000E3,5.750031923E1 +1.668648000E3,5.301598344E1 +1.668896000E3,5.208077776E1 +1.669157000E3,5.024112467E1 +1.669414000E3,5.530220423E1 +1.669710000E3,5.585178295E1 +1.669955000E3,5.443268015E1 +1.670292000E3,5.292974908E1 +1.670566000E3,5.501741168E1 +1.670818000E3,5.190433464E1 +1.671077000E3,5.602388651E1 +1.671384000E3,5.384205522E1 +1.671688000E3,5.355394771E1 +1.671956000E3,4.896600257E1 +1.672212000E3,4.457728928E1 +1.672483000E3,5.407780485E1 +1.672726000E3,5.808535163E1 +1.672991000E3,5.497589856E1 +1.673269000E3,5.816061182E1 +1.673625000E3,5.457220472E1 +1.673896000E3,5.852786772E1 +1.674165000E3,5.615855966E1 +1.674439000E3,5.901141794E1 +1.674702000E3,5.821771493E1 +1.675040000E3,5.533746886E1 +1.675330000E3,5.469332456E1 +1.675631000E3,5.895976057E1 +1.675867000E3,5.565047570E1 +1.676161000E3,5.342216333E1 +1.676431000E3,5.339304237E1 +1.676716000E3,5.196130631E1 +1.677075000E3,5.500129023E1 +1.677346000E3,5.649474234E1 +1.677614000E3,5.620691351E1 +1.677867000E3,5.756400488E1 +1.678112000E3,5.571225073E1 +1.678362000E3,6.171466353E1 +1.678655000E3,5.523245256E1 +1.678909000E3,5.780473196E1 +1.679167000E3,5.918101801E1 +1.679536000E3,5.449831587E1 +1.679788000E3,5.278747036E1 +1.680072000E3,5.502423006E1 +1.680392000E3,5.603218813E1 +1.680667000E3,5.681691969E1 +1.680917000E3,5.574952817E1 +1.681227000E3,5.747793831E1 +1.681510000E3,5.831554727E1 +1.681811000E3,5.823344802E1 +1.682073000E3,5.677197169E1 +1.682402000E3,5.423243511E1 +1.682746000E3,5.568639423E1 +1.683007000E3,5.601571559E1 +1.683297000E3,5.788588795E1 +1.683563000E3,5.178162942E1 +1.683805000E3,5.244727762E1 +1.684102000E3,5.504021082E1 +1.684342000E3,5.312145782E1 +1.684637000E3,5.266466104E1 +1.684875000E3,5.430143327E1 +1.685171000E3,5.731848010E1 +1.685409000E3,5.314967575E1 +1.685703000E3,5.210480680E1 +1.685940000E3,5.447962472E1 +1.686242000E3,5.671930258E1 +1.686480000E3,5.298653153E1 +1.686837000E3,5.390672385E1 +1.687083000E3,5.256535993E1 +1.687387000E3,5.295433262E1 +1.687686000E3,4.693434793E1 +1.687930000E3,5.264001548E1 +1.688191000E3,4.696703102E1 +1.688514000E3,5.290693761E1 +1.688768000E3,5.572289252E1 +1.689025000E3,5.629476293E1 +1.689331000E3,5.221395629E1 +1.689585000E3,5.553268928E1 +1.689905000E3,5.392885939E1 +1.690136000E3,5.613018872E1 +1.690432000E3,5.323144022E1 +1.690690000E3,5.426457319E1 +1.690988000E3,5.869511223E1 +1.691244000E3,5.724931575E1 +1.691548000E3,5.702890727E1 +1.691819000E3,5.957894946E1 +1.692068000E3,5.833323285E1 +1.692367000E3,5.920896731E1 +1.692598000E3,5.809066040E1 +1.692847000E3,5.683194919E1 +1.693218000E3,5.880411413E1 +1.693536000E3,5.430005356E1 +1.693836000E3,5.347827494E1 +1.694082000E3,5.139526617E1 +1.694323000E3,6.486669482E1 +1.694607000E3,5.827670564E1 +1.694879000E3,5.749070135E1 +1.695112000E3,5.439297467E1 +1.695418000E3,5.591879208E1 +1.695720000E3,5.984156108E1 +1.695978000E3,5.763450389E1 +1.696238000E3,5.535113951E1 +1.696577000E3,5.468640858E1 +1.696840000E3,5.145216534E1 +1.697142000E3,5.633820526E1 +1.697434000E3,5.961813260E1 +1.697672000E3,5.761348305E1 +1.697970000E3,5.587832748E1 +1.698213000E3,5.615239979E1 +1.698514000E3,6.142159571E1 +1.698744000E3,5.868747140E1 +1.699038000E3,5.639074769E1 +1.699277000E3,5.843791784E1 +1.699602000E3,5.580904726E1 +1.699849000E3,5.188032815E1 +1.700148000E3,6.050592844E1 +1.700415000E3,5.851925341E1 +1.700742000E3,5.754370303E1 +1.700996000E3,5.792652906E1 +1.701265000E3,5.809754284E1 +1.701543000E3,5.435013872E1 +1.701827000E3,5.364293620E1 +1.702095000E3,5.742174876E1 +1.702342000E3,5.921232761E1 +1.702597000E3,5.246613397E1 +1.702852000E3,5.865178399E1 +1.703188000E3,6.209648540E1 +1.703456000E3,5.783126524E1 +1.703723000E3,6.129722089E1 +1.704021000E3,6.159059582E1 +1.704258000E3,6.290365934E1 +1.704500000E3,5.899658178E1 +1.704744000E3,5.570772177E1 +1.705020000E3,6.042975914E1 +1.705281000E3,6.063911519E1 +1.705578000E3,5.667741437E1 +1.705818000E3,5.616948640E1 +1.706065000E3,5.809228765E1 +1.706440000E3,6.194892333E1 +1.706707000E3,5.510896653E1 +1.706968000E3,5.648771637E1 +1.707226000E3,5.451026369E1 +1.707530000E3,5.655237570E1 +1.707813000E3,6.342687376E1 +1.708096000E3,5.687609223E1 +1.708345000E3,5.784030597E1 +1.708587000E3,5.696931166E1 +1.708832000E3,5.826055047E1 +1.709133000E3,6.171963981E1 +1.709444000E3,6.289993620E1 +1.709785000E3,6.196750111E1 +1.710095000E3,6.021872673E1 +1.710401000E3,5.493999514E1 +1.710645000E3,5.748920917E1 +1.710951000E3,5.990748875E1 +1.711204000E3,5.995493625E1 +1.711504000E3,5.608393688E1 +1.711807000E3,6.225697969E1 +1.712052000E3,6.005399346E1 +1.712297000E3,6.276583246E1 +1.712594000E3,6.409669700E1 +1.712952000E3,5.846223798E1 +1.713249000E3,6.222377893E1 +1.713511000E3,6.179119431E1 +1.713770000E3,6.687160955E1 +1.714020000E3,6.224215114E1 +1.714281000E3,6.460780580E1 +1.714608000E3,6.323149402E1 +1.714900000E3,5.890183616E1 +1.715139000E3,6.173404899E1 +1.715438000E3,6.193562982E1 +1.715674000E3,6.231645929E1 +1.715912000E3,5.798536661E1 +1.716293000E3,5.569607438E1 +1.716537000E3,6.131866955E1 +1.716790000E3,5.896584959E1 +1.717096000E3,5.693976131E1 +1.717346000E3,5.531403594E1 +1.717631000E3,5.794989861E1 +1.717933000E3,5.594899441E1 +1.718204000E3,5.601359132E1 +1.718501000E3,5.861037671E1 +1.718741000E3,6.432265266E1 +1.719043000E3,6.182586376E1 +1.719355000E3,6.076827417E1 +1.719645000E3,5.634225228E1 +1.719943000E3,5.935070169E1 +1.720188000E3,5.856877062E1 +1.720486000E3,5.761843709E1 +1.720741000E3,5.935030376E1 +1.720985000E3,5.413194972E1 +1.721289000E3,5.939733818E1 +1.721553000E3,5.617827250E1 +1.721847000E3,5.807085988E1 +1.722091000E3,5.877044817E1 +1.722445000E3,6.593854232E1 +1.722681000E3,6.027114564E1 +1.722973000E3,5.866411762E1 +1.723271000E3,5.588604319E1 +1.723508000E3,5.958751798E1 +1.723800000E3,6.077290351E1 +1.724039000E3,5.722905231E1 +1.724338000E3,5.619905124E1 +1.724576000E3,5.628809107E1 +1.724876000E3,5.560357878E1 +1.725168000E3,5.447509555E1 +1.725542000E3,5.278892866E1 +1.725841000E3,4.816211457E1 +1.726139000E3,4.622333411E1 +1.726399000E3,4.728231882E1 +1.726691000E3,5.101510224E1 +1.726947000E3,4.725933617E1 +1.727273000E3,5.333398449E1 +1.727569000E3,5.518583989E1 +1.727808000E3,5.719998093E1 +1.728061000E3,5.375072532E1 +1.728352000E3,5.631849408E1 +1.728644000E3,5.232994659E1 +1.729024000E3,5.045911420E1 +1.729295000E3,4.931808913E1 +1.729541000E3,4.866846016E1 +1.729788000E3,5.127644661E1 +1.730054000E3,4.769951033E1 +1.730296000E3,5.553885299E1 +1.730573000E3,5.629080236E1 +1.730816000E3,5.218818952E1 +1.731119000E3,5.112756333E1 +1.731379000E3,5.524890032E1 +1.731688000E3,5.530134621E1 +1.731949000E3,5.451831728E1 +1.732288000E3,5.380962689E1 +1.732589000E3,5.754684503E1 +1.732833000E3,5.184401682E1 +1.733102000E3,5.011373730E1 +1.733369000E3,5.541779655E1 +1.733647000E3,5.983699601E1 +1.733886000E3,6.131428317E1 +1.734163000E3,6.052345820E1 +1.734405000E3,5.852692054E1 +1.734659000E3,5.861191265E1 +1.734933000E3,5.957936529E1 +1.735219000E3,5.639739849E1 +1.735540000E3,5.207917019E1 +1.735832000E3,4.548490451E1 +1.736112000E3,5.219897691E1 +1.736384000E3,5.618314188E1 +1.736684000E3,5.720418785E1 +1.736946000E3,5.895068629E1 +1.737213000E3,5.652216932E1 +1.737468000E3,5.796687034E1 +1.737738000E3,5.591197017E1 +1.737996000E3,5.493985473E1 +1.738236000E3,5.752137274E1 +1.738586000E3,6.041563952E1 +1.738921000E3,6.199530447E1 +1.739167000E3,5.310800091E1 +1.739430000E3,5.600574849E1 +1.739683000E3,6.494981167E1 +1.739952000E3,6.157046745E1 +1.740293000E3,6.002681302E1 +1.740611000E3,5.943541790E1 +1.740910000E3,5.731619793E1 +1.741197000E3,5.885751119E1 +1.741508000E3,5.719237093E1 +1.741767000E3,5.958897825E1 +1.742034000E3,5.543499582E1 +1.742424000E3,5.632783570E1 +1.742688000E3,5.565042743E1 +1.742946000E3,5.622883854E1 +1.743204000E3,6.327777019E1 +1.743456000E3,5.663098185E1 +1.743721000E3,5.729384715E1 +1.743966000E3,6.200582057E1 +1.744273000E3,5.107652622E1 +1.744505000E3,5.491520459E1 +1.744752000E3,5.181266373E1 +1.745004000E3,5.014115745E1 +1.745297000E3,5.338585031E1 +1.745690000E3,5.654477286E1 +1.745966000E3,5.517036116E1 +1.746219000E3,5.200430375E1 +1.746475000E3,5.963355448E1 +1.746732000E3,5.854837006E1 +1.747002000E3,5.571277949E1 +1.747293000E3,5.825116458E1 +1.747522000E3,5.673248340E1 +1.747772000E3,5.683320783E1 +1.748035000E3,5.224053713E1 +1.748289000E3,5.713452273E1 +1.748568000E3,5.539076360E1 +1.748961000E3,6.015893340E1 +1.749211000E3,5.710921188E1 +1.749460000E3,6.114476082E1 +1.749715000E3,5.648052368E1 +1.749961000E3,5.897720288E1 +1.750207000E3,5.525435431E1 +1.750521000E3,5.447453139E1 +1.750765000E3,5.883968686E1 +1.751015000E3,5.450160052E1 +1.751290000E3,5.405183560E1 +1.751522000E3,5.501343440E1 +1.751848000E3,5.586635599E1 +1.752096000E3,5.631573217E1 +1.752372000E3,5.960964241E1 +1.752637000E3,5.320710483E1 +1.752941000E3,5.848434869E1 +1.753209000E3,5.619196315E1 +1.753510000E3,5.692291103E1 +1.753774000E3,5.505374149E1 +1.754051000E3,5.721759821E1 +1.754315000E3,5.539152446E1 +1.754625000E3,5.632890174E1 +1.754919000E3,5.918851802E1 +1.755262000E3,5.807294381E1 +1.755529000E3,5.748451885E1 +1.755827000E3,6.055251826E1 +1.756067000E3,6.208050524E1 +1.756367000E3,5.991655048E1 +1.756607000E3,6.073519941E1 +1.756900000E3,5.774998130E1 +1.757144000E3,5.751173009E1 +1.757417000E3,5.299288378E1 +1.757700000E3,5.913293772E1 +1.758005000E3,5.732040664E1 +1.758269000E3,6.221202462E1 +1.758585000E3,6.285457626E1 +1.758834000E3,5.870613535E1 +1.759137000E3,5.533279687E1 +1.759391000E3,5.194643865E1 +1.759644000E3,4.891449850E1 +1.759922000E3,4.784429271E1 +1.760236000E3,5.273391136E1 +1.760503000E3,5.475616990E1 +1.760758000E3,5.640096860E1 +1.761017000E3,5.329458627E1 +1.761282000E3,4.798672737E1 +1.761535000E3,5.532988346E1 +1.761794000E3,5.189579265E1 +1.762040000E3,5.068357941E1 +1.762299000E3,5.751972157E1 +1.762578000E3,5.430434207E1 +1.762831000E3,5.331943982E1 +1.763136000E3,5.699367350E1 +1.763409000E3,5.622858108E1 +1.763658000E3,5.631559008E1 +1.763910000E3,5.738562920E1 +1.764157000E3,6.030103345E1 +1.764400000E3,5.680309722E1 +1.764695000E3,5.703631315E1 +1.765017000E3,5.682945247E1 +1.765300000E3,5.317093897E1 +1.765575000E3,5.620624417E1 +1.765832000E3,5.550075987E1 +1.766100000E3,6.321349509E1 +1.766371000E3,5.938123887E1 +1.766635000E3,6.289622107E1 +1.766898000E3,5.890101653E1 +1.767155000E3,5.928826732E1 +1.767399000E3,5.872890625E1 +1.767638000E3,6.184345237E1 +1.767877000E3,6.131073260E1 +1.768211000E3,6.085041665E1 +1.768587000E3,6.015418617E1 +1.768835000E3,5.648473324E1 +1.769119000E3,5.746059957E1 +1.769380000E3,5.608054299E1 +1.769692000E3,6.542458852E1 +1.769998000E3,6.121618195E1 +1.770281000E3,5.842785672E1 +1.770536000E3,5.763776595E1 +1.770858000E3,5.630873419E1 +1.771133000E3,5.339704361E1 +1.771378000E3,5.463873835E1 +1.771723000E3,5.659388596E1 +1.772050000E3,5.449836230E1 +1.772294000E3,5.154616724E1 +1.772537000E3,5.082603581E1 +1.772795000E3,5.334183734E1 +1.773055000E3,5.096094928E1 +1.773365000E3,5.171061147E1 +1.773612000E3,5.477281719E1 +1.773878000E3,5.060909259E1 +1.774171000E3,5.285294921E1 +1.774452000E3,5.393730531E1 +1.774725000E3,5.333400186E1 +1.774980000E3,5.285705613E1 +1.775346000E3,5.719168586E1 +1.775663000E3,5.642193929E1 +1.775908000E3,4.659059970E1 +1.776150000E3,5.521168672E1 +1.776388000E3,5.693500665E1 +1.776630000E3,6.030483668E1 +1.776910000E3,5.944095915E1 +1.777153000E3,5.708951289E1 +1.777414000E3,5.291982189E1 +1.777666000E3,5.900042024E1 +1.777935000E3,6.010949926E1 +1.778229000E3,6.009411695E1 +1.778514000E3,5.804757181E1 +1.778758000E3,5.922775473E1 +1.779011000E3,6.063545461E1 +1.779277000E3,5.950242674E1 +1.779575000E3,6.057891518E1 +1.779819000E3,6.050018223E1 +1.780115000E3,5.965583098E1 +1.780361000E3,5.651792502E1 +1.780660000E3,5.814099422E1 +1.780904000E3,5.340077797E1 +1.781203000E3,5.734973286E1 +1.781481000E3,5.846278011E1 +1.781805000E3,5.369751607E1 +1.782048000E3,5.229063054E1 +1.782299000E3,5.345996994E1 +1.782583000E3,5.724353788E1 +1.782883000E3,5.610772411E1 +1.783181000E3,5.272586700E1 +1.783423000E3,5.272075137E1 +1.783692000E3,5.495532717E1 +1.783945000E3,5.594785882E1 +1.784202000E3,5.914935612E1 +1.784483000E3,6.427791570E1 +1.784735000E3,6.185652247E1 +1.785051000E3,6.178338943E1 +1.785352000E3,6.304285312E1 +1.785598000E3,5.699176354E1 +1.785897000E3,5.705567192E1 +1.786190000E3,5.975757470E1 +1.786467000E3,6.092866408E1 +1.786714000E3,5.771726615E1 +1.786984000E3,5.434727511E1 +1.787232000E3,5.250796794E1 +1.787486000E3,5.668884634E1 +1.787813000E3,5.600600547E1 +1.788061000E3,5.162213387E1 +1.788391000E3,5.782497792E1 +1.788636000E3,5.900804565E1 +1.788935000E3,6.056317474E1 +1.789175000E3,5.749029459E1 +1.789469000E3,6.053654612E1 +1.789714000E3,5.841478287E1 +1.789988000E3,5.700130118E1 +1.790219000E3,5.562837186E1 +1.790509000E3,5.430369658E1 +1.790806000E3,5.586895515E1 +1.791048000E3,5.809725956E1 +1.791409000E3,5.552827992E1 +1.791650000E3,5.534472171E1 +1.791981000E3,5.671474363E1 +1.792227000E3,5.716453332E1 +1.792522000E3,5.844249975E1 +1.792847000E3,5.961186667E1 +1.793109000E3,5.794833541E1 +1.793437000E3,5.832360597E1 +1.793698000E3,5.996001578E1 +1.793970000E3,5.849924827E1 +1.794223000E3,5.823551411E1 +1.794488000E3,5.480450178E1 +1.794819000E3,5.715609034E1 +1.795083000E3,5.418083703E1 +1.795329000E3,5.529883425E1 +1.795587000E3,5.729455769E1 +1.795853000E3,5.358946536E1 +1.796083000E3,5.534684059E1 +1.796374000E3,5.693696454E1 +1.796630000E3,5.642610016E1 +1.796927000E3,5.692548294E1 +1.797194000E3,5.931602223E1 +1.797469000E3,5.877569790E1 +1.797716000E3,5.527135197E1 +1.798053000E3,5.904674814E1 +1.798358000E3,5.655039196E1 +1.798612000E3,5.796779928E1 +1.798921000E3,5.499199210E1 +1.799185000E3,5.693837926E1 +1.799465000E3,6.235855457E1 +1.799695000E3,6.271612813E1 +1.799964000E3,6.118271582E1 +1.800233000E3,6.171552449E1 +1.800562000E3,6.293258336E1 +1.800818000E3,5.927940855E1 +1.801077000E3,5.836879001E1 +1.801406000E3,6.182854437E1 +1.801650000E3,5.918527405E1 +1.801894000E3,6.352260837E1 +1.802163000E3,6.142940723E1 +1.802385000E3,5.867772092E1 +1.802631000E3,5.916688243E1 +1.802927000E3,5.855222781E1 +1.803228000E3,6.125789004E1 +1.803533000E3,5.839377949E1 +1.803816000E3,5.705167204E1 +1.804057000E3,5.641730344E1 +1.804362000E3,6.771092582E1 +1.804585000E3,6.036461449E1 +1.804835000E3,6.742095194E1 +1.805132000E3,6.133151855E1 +1.805443000E3,6.658554202E1 +1.805718000E3,7.095511769E1 +1.806003000E3,7.330553664E1 +1.806290000E3,6.732809523E1 +1.806566000E3,6.106403544E1 +1.806844000E3,5.830930506E1 +1.807085000E3,6.610455401E1 +1.807442000E3,5.944325189E1 +1.807800000E3,5.667454347E1 +1.808044000E3,5.560521877E1 +1.808299000E3,5.488377812E1 +1.808542000E3,5.279721650E1 +1.808789000E3,4.834692654E1 +1.809029000E3,4.661669368E1 +1.809276000E3,5.501186804E1 +1.809526000E3,5.384830085E1 +1.809820000E3,5.526588307E1 +1.810084000E3,5.900458249E1 +1.810393000E3,5.557146256E1 +1.810647000E3,5.355619280E1 +1.811023000E3,5.627924000E1 +1.811283000E3,5.384503050E1 +1.811527000E3,5.309622401E1 +1.811816000E3,5.228523776E1 +1.812070000E3,5.317657142E1 +1.812328000E3,5.813846570E1 +1.812583000E3,5.621088360E1 +1.812927000E3,5.646965227E1 +1.813191000E3,5.322001188E1 +1.813436000E3,5.451886743E1 +1.813748000E3,5.558621720E1 +1.814006000E3,5.673920724E1 +1.814328000E3,5.582855401E1 +1.814591000E3,6.044196407E1 +1.814848000E3,5.769208427E1 +1.815109000E3,6.206015086E1 +1.815391000E3,5.918173335E1 +1.815660000E3,5.779702061E1 +1.815927000E3,6.516398742E1 +1.816218000E3,5.927869783E1 +1.816546000E3,6.320256740E1 +1.816802000E3,6.296743684E1 +1.817051000E3,5.869001212E1 +1.817329000E3,5.985536664E1 +1.817620000E3,5.435607380E1 +1.817905000E3,5.721703373E1 +1.818148000E3,6.314389823E1 +1.818376000E3,6.116752308E1 +1.818622000E3,5.773611736E1 +1.818863000E3,5.892899245E1 +1.819138000E3,5.791411351E1 +1.819457000E3,6.283307798E1 +1.819719000E3,5.805008540E1 +1.819967000E3,6.383011196E1 +1.820266000E3,5.915938870E1 +1.820515000E3,5.795811325E1 +1.820871000E3,5.730398564E1 +1.821113000E3,5.907223014E1 +1.821388000E3,5.566469845E1 +1.821612000E3,5.223652040E1 +1.821858000E3,5.461868826E1 +1.822118000E3,5.731142265E1 +1.822388000E3,5.743609212E1 +1.822672000E3,6.147918645E1 +1.822919000E3,6.109678537E1 +1.823167000E3,5.654516230E1 +1.823464000E3,6.010058675E1 +1.823716000E3,6.101649690E1 +1.824046000E3,5.741898993E1 +1.824372000E3,5.654969113E1 +1.824629000E3,5.489877253E1 +1.824894000E3,6.410593751E1 +1.825142000E3,5.923267903E1 +1.825399000E3,5.977300321E1 +1.825683000E3,5.945891570E1 +1.825907000E3,5.799474745E1 +1.826162000E3,5.485933719E1 +1.826447000E3,5.848818620E1 +1.826697000E3,5.937282663E1 +1.826944000E3,5.473647239E1 +1.827319000E3,5.611635619E1 +1.827649000E3,5.704234375E1 +1.827909000E3,5.174683398E1 +1.828172000E3,5.243070089E1 +1.828457000E3,5.835398328E1 +1.828710000E3,6.579711207E1 +1.828969000E3,6.063158540E1 +1.829218000E3,5.379307224E1 +1.829474000E3,5.791005982E1 +1.829779000E3,5.908028356E1 +1.830025000E3,5.476368407E1 +1.830307000E3,5.608145667E1 +1.830627000E3,5.417323034E1 +1.830843000E3,5.295530865E1 +1.831087000E3,5.335160491E1 +1.831385000E3,5.274441298E1 +1.831622000E3,5.307477504E1 +1.831918000E3,5.606159985E1 +1.832155000E3,6.009472302E1 +1.832471000E3,5.380117674E1 +1.832766000E3,5.382200579E1 +1.833012000E3,5.176006230E1 +1.833256000E3,5.956343573E1 +1.833577000E3,5.545935306E1 +1.833826000E3,5.528541848E1 +1.834083000E3,5.436381252E1 +1.834373000E3,5.684307553E1 +1.834669000E3,5.352399464E1 +1.834910000E3,5.651184236E1 +1.835208000E3,5.432875840E1 +1.835453000E3,5.442576527E1 +1.835752000E3,5.643309342E1 +1.836022000E3,5.781174029E1 +1.836293000E3,6.110602518E1 +1.836557000E3,5.591856301E1 +1.836932000E3,5.423752303E1 +1.837200000E3,5.716598850E1 +1.837455000E3,5.511743414E1 +1.837716000E3,5.819026063E1 +1.837988000E3,5.728773522E1 +1.838236000E3,5.959151016E1 +1.838540000E3,5.810767345E1 +1.838799000E3,5.779128856E1 +1.839096000E3,6.092094761E1 +1.839361000E3,5.957871329E1 +1.839608000E3,5.838702884E1 +1.839856000E3,5.927631822E1 +1.840242000E3,5.748386760E1 +1.840516000E3,5.957609475E1 +1.840759000E3,5.688693666E1 +1.841054000E3,5.883374773E1 +1.841320000E3,5.769470339E1 +1.841597000E3,5.894509733E1 +1.841885000E3,6.032854908E1 +1.842190000E3,5.891601570E1 +1.842444000E3,5.957860612E1 +1.842691000E3,5.968229576E1 +1.842933000E3,5.829247522E1 +1.843258000E3,6.183086549E1 +1.843539000E3,6.077794792E1 +1.843765000E3,5.928253866E1 +1.844002000E3,5.782805396E1 +1.844301000E3,5.975447959E1 +1.844589000E3,6.108169982E1 +1.844825000E3,5.915565503E1 +1.845116000E3,5.981302437E1 +1.845363000E3,6.019248645E1 +1.845636000E3,6.014223773E1 +1.845861000E3,6.160258605E1 +1.846139000E3,6.002388007E1 +1.846447000E3,6.004612452E1 +1.846706000E3,5.932487324E1 +1.846979000E3,5.718424575E1 +1.847284000E3,5.712987240E1 +1.847586000E3,5.557624595E1 +1.847888000E3,5.603981815E1 +1.848146000E3,5.769591687E1 +1.848418000E3,5.526085696E1 +1.848706000E3,5.815102401E1 +1.848972000E3,5.884177354E1 +1.849226000E3,5.853138751E1 +1.849515000E3,6.156208919E1 +1.849746000E3,6.064923427E1 +1.850008000E3,6.590305387E1 +1.850338000E3,5.853444981E1 +1.850640000E3,5.717447935E1 +1.850942000E3,5.680568615E1 +1.851242000E3,5.928468331E1 +1.851504000E3,5.798449444E1 +1.851757000E3,5.802619768E1 +1.852033000E3,5.998338312E1 +1.852296000E3,5.683616594E1 +1.852550000E3,5.692327884E1 +1.852886000E3,5.878610583E1 +1.853162000E3,5.538467470E1 +1.853432000E3,5.437085520E1 +1.853738000E3,5.469765317E1 +1.854038000E3,5.790268038E1 +1.854297000E3,5.836787866E1 +1.854582000E3,6.160807622E1 +1.854881000E3,5.878613196E1 +1.855158000E3,6.200103199E1 +1.855387000E3,6.087479870E1 +1.855688000E3,6.028304140E1 +1.855930000E3,6.159527875E1 +1.856226000E3,6.082174354E1 +1.856487000E3,5.932314061E1 +1.856744000E3,5.976570730E1 +1.857001000E3,5.473753247E1 +1.857299000E3,5.954612483E1 +1.857556000E3,6.052388497E1 +1.857849000E3,5.848282940E1 +1.858086000E3,5.879664566E1 +1.858384000E3,5.864589973E1 +1.858677000E3,5.659242719E1 +1.858917000E3,5.683870091E1 +1.859195000E3,5.582498919E1 +1.859427000E3,6.011873423E1 +1.859676000E3,5.796702396E1 +1.859911000E3,5.928400715E1 +1.860149000E3,5.826876733E1 +1.860396000E3,6.038481253E1 +1.860680000E3,6.030085568E1 +1.860944000E3,5.890166619E1 +1.861209000E3,6.654379171E1 +1.861519000E3,6.016187265E1 +1.861755000E3,6.139297542E1 +1.862049000E3,6.289106669E1 +1.862388000E3,5.872946965E1 +1.862675000E3,5.800836625E1 +1.862993000E3,5.701819685E1 +1.863248000E3,5.488359846E1 +1.863519000E3,5.747446133E1 +1.863768000E3,5.996388232E1 +1.864087000E3,5.686047813E1 +1.864334000E3,5.935760915E1 +1.864635000E3,6.438349972E1 +1.864894000E3,6.008599590E1 +1.865205000E3,5.995474236E1 +1.865502000E3,6.596906108E1 +1.865837000E3,6.091064347E1 +1.866114000E3,5.885056970E1 +1.866411000E3,6.474486832E1 +1.866666000E3,5.888758286E1 +1.866964000E3,6.138447683E1 +1.867211000E3,6.032596684E1 +1.867482000E3,5.848476935E1 +1.867736000E3,5.631330849E1 +1.867989000E3,5.927138373E1 +1.868246000E3,5.817171672E1 +1.868499000E3,5.358065381E1 +1.868763000E3,5.500264039E1 +1.869129000E3,5.663946315E1 +1.869384000E3,5.601392416E1 +1.869636000E3,5.640732154E1 +1.869947000E3,5.320213962E1 +1.870207000E3,4.907811811E1 +1.870470000E3,5.784153600E1 +1.870743000E3,5.988355074E1 +1.871011000E3,5.973830135E1 +1.871253000E3,5.769679044E1 +1.871519000E3,5.395770126E1 +1.871765000E3,5.751088186E1 +1.872011000E3,5.342275719E1 +1.872301000E3,5.638616310E1 +1.872563000E3,5.124369984E1 +1.872821000E3,5.357036185E1 +1.873129000E3,5.529809524E1 +1.873386000E3,5.442720524E1 +1.873650000E3,5.306298792E1 +1.873937000E3,5.703507672E1 +1.874184000E3,5.835246426E1 +1.874444000E3,5.638184247E1 +1.874707000E3,5.201779537E1 +1.874972000E3,5.217149520E1 +1.875244000E3,5.757612416E1 +1.875577000E3,5.387788750E1 +1.875865000E3,5.607108884E1 +1.876149000E3,5.692352283E1 +1.876407000E3,5.577296536E1 +1.876687000E3,5.259836493E1 +1.876982000E3,5.467571766E1 +1.877215000E3,5.256317748E1 +1.877521000E3,5.522593862E1 +1.877775000E3,5.432669245E1 +1.878036000E3,5.734031668E1 +1.878314000E3,6.027566119E1 +1.878587000E3,5.567003578E1 +1.878912000E3,5.307720644E1 +1.879176000E3,5.659939353E1 +1.879425000E3,5.110556861E1 +1.879723000E3,5.673190580E1 +1.879969000E3,5.437112204E1 +1.880274000E3,5.433297742E1 +1.880576000E3,5.585075865E1 +1.880875000E3,5.657006430E1 +1.881117000E3,5.701623858E1 +1.881424000E3,5.749679466E1 +1.881673000E3,5.623079196E1 +1.881986000E3,5.545187468E1 +1.882329000E3,5.781610131E1 +1.882611000E3,5.432916720E1 +1.882882000E3,4.940287270E1 +1.883127000E3,5.866223377E1 +1.883391000E3,5.654564177E1 +1.883644000E3,5.888782218E1 +1.883889000E3,5.586307703E1 +1.884148000E3,5.930725555E1 +1.884413000E3,5.963840788E1 +1.884660000E3,5.928611951E1 +1.884926000E3,5.621968819E1 +1.885181000E3,5.811455305E1 +1.885457000E3,5.585646129E1 +1.885714000E3,5.989591718E1 +1.885968000E3,6.058402104E1 +1.886267000E3,5.972100226E1 +1.886517000E3,6.220704457E1 +1.886832000E3,6.037773435E1 +1.887106000E3,6.039308032E1 +1.887385000E3,6.223647696E1 +1.887617000E3,5.854088114E1 +1.887876000E3,6.248517888E1 +1.888128000E3,6.222318884E1 +1.888437000E3,6.070320114E1 +1.888777000E3,5.817372188E1 +1.889076000E3,5.382250608E1 +1.889369000E3,7.004593531E1 +1.889616000E3,6.094415751E1 +1.889913000E3,5.455584628E1 +1.890163000E3,5.387250795E1 +1.890418000E3,5.219742496E1 +1.890714000E3,5.070715955E1 +1.890961000E3,5.362651533E1 +1.891207000E3,5.046817004E1 +1.891453000E3,5.129339201E1 +1.891764000E3,4.856730286E1 +1.892053000E3,5.220705734E1 +1.892321000E3,5.401068171E1 +1.892582000E3,5.109746146E1 +1.892834000E3,5.412675897E1 +1.893090000E3,5.347014573E1 +1.893340000E3,5.092720593E1 +1.893620000E3,5.341316175E1 +1.893886000E3,4.870918930E1 +1.894142000E3,4.929590175E1 +1.894389000E3,4.686294330E1 +1.894692000E3,5.100486031E1 +1.894995000E3,5.087478993E1 +1.895328000E3,4.940372977E1 +1.895606000E3,5.362468443E1 +1.895919000E3,5.608826750E1 +1.896241000E3,5.628756413E1 +1.896497000E3,5.817843169E1 +1.896749000E3,5.809119715E1 +1.897054000E3,5.469613872E1 +1.897287000E3,5.437807476E1 +1.897582000E3,5.794761863E1 +1.897897000E3,6.027023965E1 +1.898145000E3,5.913564460E1 +1.898511000E3,5.510014788E1 +1.898752000E3,5.499817732E1 +1.898999000E3,5.569220222E1 +1.899294000E3,5.368447548E1 +1.899547000E3,5.912109227E1 +1.899841000E3,6.076259223E1 +1.900104000E3,6.153129043E1 +1.900349000E3,5.679462536E1 +1.900634000E3,5.721135074E1 +1.900927000E3,5.674745728E1 +1.901166000E3,5.556227882E1 +1.901462000E3,4.994603734E1 +1.901841000E3,5.122656475E1 +1.902183000E3,5.127903645E1 +1.902436000E3,5.042064547E1 +1.902695000E3,5.425673681E1 +1.902998000E3,5.484388956E1 +1.903228000E3,5.322356297E1 +1.903483000E3,5.161093724E1 +1.903730000E3,5.302125687E1 +1.904019000E3,5.241958307E1 +1.904307000E3,5.116604316E1 +1.904614000E3,5.319513233E1 +1.904991000E3,5.530482451E1 +1.905243000E3,5.829713614E1 +1.905528000E3,4.891404960E1 +1.905774000E3,5.408250868E1 +1.906083000E3,5.272747143E1 +1.906381000E3,5.216068921E1 +1.906624000E3,5.292203291E1 +1.906885000E3,5.243548019E1 +1.907149000E3,4.981562618E1 +1.907448000E3,5.500279348E1 +1.907742000E3,5.481190601E1 +1.907999000E3,5.369800103E1 +1.908315000E3,6.390197571E1 +1.908579000E3,6.517990141E1 +1.908825000E3,5.822949910E1 +1.909064000E3,5.655728640E1 +1.909356000E3,5.292186662E1 +1.909600000E3,5.069372058E1 +1.909895000E3,5.368100654E1 +1.910138000E3,5.616508462E1 +1.910432000E3,6.285923815E1 +1.910670000E3,6.254266196E1 +1.910979000E3,5.628599605E1 +1.911260000E3,5.616383984E1 +1.911482000E3,5.074231882E1 +1.911728000E3,5.398858859E1 +1.911977000E3,5.585565083E1 +1.912237000E3,5.777112626E1 +1.912532000E3,6.036032129E1 +1.912783000E3,6.077032608E1 +1.913052000E3,5.839282786E1 +1.913316000E3,5.397912726E1 +1.913575000E3,5.582771928E1 +1.913848000E3,5.579334158E1 +1.914143000E3,5.778281485E1 +1.914450000E3,5.783459906E1 +1.914713000E3,6.199387267E1 +1.914943000E3,6.173706737E1 +1.915185000E3,5.621060236E1 +1.915433000E3,5.563784893E1 +1.915692000E3,5.470990272E1 +1.915951000E3,5.469960060E1 +1.916217000E3,6.171536544E1 +1.916470000E3,5.862130066E1 +1.916777000E3,5.839467924E1 +1.917028000E3,5.552209731E1 +1.917324000E3,5.763067987E1 +1.917687000E3,5.981653815E1 +1.917967000E3,5.790518789E1 +1.918210000E3,5.220287871E1 +1.918457000E3,5.707286116E1 +1.918759000E3,5.657529642E1 +1.918997000E3,6.000130629E1 +1.919241000E3,5.708419446E1 +1.919496000E3,5.749223221E1 +1.919768000E3,5.843781753E1 +1.920074000E3,5.671929683E1 +1.920373000E3,5.881070992E1 +1.920621000E3,5.603223824E1 +1.920956000E3,6.053511488E1 +1.921216000E3,5.525745837E1 +1.921476000E3,6.186721324E1 +1.921723000E3,6.214292360E1 +1.922025000E3,5.857206109E1 +1.922320000E3,5.934438900E1 +1.922561000E3,6.077867207E1 +1.922860000E3,5.578255978E1 +1.923099000E3,5.723807446E1 +1.923347000E3,5.785786452E1 +1.923636000E3,6.037753633E1 +1.923892000E3,6.106459696E1 +1.924223000E3,5.873119773E1 +1.924511000E3,5.862235861E1 +1.924814000E3,5.732521131E1 +1.925070000E3,5.161553090E1 +1.925373000E3,5.243351685E1 +1.925626000E3,5.041805469E1 +1.925919000E3,5.543714980E1 +1.926175000E3,5.338657816E1 +1.926425000E3,5.616854022E1 +1.926695000E3,5.699328540E1 +1.926965000E3,5.787312270E1 +1.927305000E3,5.558473925E1 +1.927614000E3,5.927685087E1 +1.927880000E3,6.254706193E1 +1.928125000E3,6.079427969E1 +1.928390000E3,5.412440784E1 +1.928634000E3,5.441834540E1 +1.928928000E3,5.220486428E1 +1.929215000E3,5.210908233E1 +1.929515000E3,5.352367419E1 +1.929766000E3,5.356350702E1 +1.930022000E3,5.184851991E1 +1.930322000E3,5.311742835E1 +1.930607000E3,5.453786592E1 +1.930870000E3,5.814140937E1 +1.931155000E3,5.779656646E1 +1.931440000E3,5.488757891E1 +1.931727000E3,5.385182390E1 +1.931981000E3,5.705491580E1 +1.932229000E3,5.576165296E1 +1.932491000E3,5.781333383E1 +1.932730000E3,5.616780300E1 +1.932971000E3,5.400230043E1 +1.933232000E3,5.518627884E1 +1.933510000E3,5.211300688E1 +1.933795000E3,5.292820587E1 +1.934127000E3,5.382097927E1 +1.934390000E3,6.102840439E1 +1.934671000E3,5.486275546E1 +1.934948000E3,5.206103103E1 +1.935198000E3,5.739150099E1 +1.935506000E3,5.310844778E1 +1.935756000E3,5.392681604E1 +1.936008000E3,5.250003264E1 +1.936256000E3,5.801399662E1 +1.936524000E3,5.696032820E1 +1.936785000E3,5.414492013E1 +1.937032000E3,5.536982174E1 +1.937391000E3,5.750979970E1 +1.937677000E3,5.370086514E1 +1.937972000E3,5.359409099E1 +1.938241000E3,4.663692517E1 +1.938508000E3,4.740501122E1 +1.938772000E3,4.812116539E1 +1.939051000E3,4.940260018E1 +1.939311000E3,5.211533825E1 +1.939553000E3,5.351181789E1 +1.939796000E3,5.597808269E1 +1.940081000E3,5.841474518E1 +1.940347000E3,5.900966915E1 +1.940680000E3,5.844032848E1 +1.940932000E3,6.047778057E1 +1.941187000E3,6.179458512E1 +1.941488000E3,5.569784051E1 +1.941730000E3,5.535681081E1 +1.941971000E3,5.409739450E1 +1.942227000E3,5.551927029E1 +1.942555000E3,5.259381649E1 +1.942855000E3,5.090743186E1 +1.943101000E3,5.330610416E1 +1.943383000E3,5.722147303E1 +1.943610000E3,5.564867598E1 +1.944013000E3,5.456395907E1 +1.944265000E3,5.442943523E1 +1.944557000E3,5.982581487E1 +1.944820000E3,5.751114261E1 +1.945081000E3,5.998630171E1 +1.945333000E3,5.908382499E1 +1.945646000E3,5.828329647E1 +1.945951000E3,5.602282904E1 +1.946199000E3,6.197108249E1 +1.946496000E3,5.533258874E1 +1.946770000E3,5.704060455E1 +1.947126000E3,5.457797110E1 +1.947363000E3,5.430717613E1 +1.947637000E3,5.940687974E1 +1.947953000E3,5.436076271E1 +1.948235000E3,5.660912008E1 +1.948550000E3,5.504399315E1 +1.948861000E3,5.464999644E1 +1.949122000E3,5.565806372E1 +1.949384000E3,5.190569146E1 +1.949646000E3,5.153937000E1 +1.949972000E3,5.628803963E1 +1.950248000E3,5.966716422E1 +1.950577000E3,5.820503815E1 +1.950822000E3,5.652058726E1 +1.951118000E3,5.802645793E1 +1.951349000E3,5.727916959E1 +1.951597000E3,5.784165576E1 +1.951900000E3,5.999225852E1 +1.952197000E3,6.048891831E1 +1.952433000E3,5.821794698E1 +1.952728000E3,5.416701806E1 +1.952964000E3,5.183738883E1 +1.953295000E3,5.384161890E1 +1.953675000E3,5.430376660E1 +1.953907000E3,5.257088063E1 +1.954151000E3,5.392186903E1 +1.954431000E3,6.167467738E1 +1.954678000E3,5.958790115E1 +1.954923000E3,5.822018477E1 +1.955185000E3,5.808448347E1 +1.955447000E3,5.733347749E1 +1.955703000E3,6.261390980E1 +1.956005000E3,5.829281758E1 +1.956246000E3,5.949056653E1 +1.956541000E3,5.839747914E1 +1.956810000E3,5.770882066E1 +1.957120000E3,5.690637302E1 +1.957421000E3,5.796705847E1 +1.957668000E3,5.867770180E1 +1.957936000E3,5.696585443E1 +1.958216000E3,5.738908049E1 +1.958463000E3,5.842272770E1 +1.958721000E3,5.966072568E1 +1.959033000E3,6.340725612E1 +1.959281000E3,6.193544465E1 +1.959566000E3,5.927164536E1 +1.959888000E3,6.146900670E1 +1.960249000E3,6.270186363E1 +1.960512000E3,5.695216686E1 +1.960779000E3,5.725758836E1 +1.961040000E3,5.788439963E1 +1.961303000E3,6.286977927E1 +1.961557000E3,6.361469653E1 +1.961802000E3,6.277422462E1 +1.962060000E3,6.032704022E1 +1.962310000E3,5.600516510E1 +1.962586000E3,6.188879617E1 +1.962805000E3,6.271522018E1 +1.963107000E3,6.025198847E1 +1.963453000E3,6.001529679E1 +1.963728000E3,5.375240125E1 +1.964036000E3,5.055228276E1 +1.964331000E3,5.257092943E1 +1.964568000E3,5.708661900E1 +1.964868000E3,5.629448239E1 +1.965178000E3,5.425890416E1 +1.965431000E3,5.575014937E1 +1.965679000E3,5.801461965E1 +1.965931000E3,5.400244473E1 +1.966191000E3,5.474887871E1 +1.966525000E3,5.196538635E1 +1.966783000E3,5.536524974E1 +1.967040000E3,5.974878933E1 +1.967338000E3,6.200932986E1 +1.967644000E3,6.295299888E1 +1.967909000E3,6.272635154E1 +1.968153000E3,5.902465660E1 +1.968474000E3,5.897159976E1 +1.968773000E3,5.506910037E1 +1.969014000E3,5.622897524E1 +1.969254000E3,5.457019516E1 +1.969505000E3,5.648049168E1 +1.969892000E3,5.656883155E1 +1.970152000E3,5.598423772E1 +1.970446000E3,5.186768597E1 +1.970726000E3,5.526177698E1 +1.971020000E3,5.810907246E1 +1.971304000E3,5.262875480E1 +1.971613000E3,5.141696402E1 +1.971915000E3,5.298264424E1 +1.972196000E3,5.641801556E1 +1.972483000E3,5.228737642E1 +1.972725000E3,5.649656740E1 +1.973036000E3,5.867645632E1 +1.973323000E3,5.679238187E1 +1.973633000E3,5.959682402E1 +1.973935000E3,5.617109756E1 +1.974236000E3,5.473085666E1 +1.974547000E3,5.589564412E1 +1.974836000E3,5.691193712E1 +1.975136000E3,5.808545953E1 +1.975385000E3,5.922478363E1 +1.975631000E3,5.707996013E1 +1.975881000E3,5.820923707E1 +1.976194000E3,5.897957095E1 +1.976453000E3,6.019944728E1 +1.976814000E3,6.472960186E1 +1.977076000E3,6.312075290E1 +1.977356000E3,5.886370461E1 +1.977618000E3,5.750754913E1 +1.977917000E3,5.531180501E1 +1.978189000E3,5.815410032E1 +1.978463000E3,5.735965971E1 +1.978732000E3,5.593071322E1 +1.978999000E3,5.835041964E1 +1.979245000E3,5.646810288E1 +1.979493000E3,5.392299875E1 +1.979902000E3,5.430590311E1 +1.980142000E3,5.447583546E1 +1.980384000E3,5.260389735E1 +1.980632000E3,5.537561423E1 +1.980873000E3,5.836960119E1 +1.981120000E3,5.425821286E1 +1.981389000E3,5.153336720E1 +1.981618000E3,5.420085973E1 +1.981915000E3,5.457985954E1 +1.982165000E3,5.637026749E1 +1.982404000E3,6.009656118E1 +1.982718000E3,5.903298531E1 +1.983029000E3,5.665152425E1 +1.983296000E3,5.778918758E1 +1.983538000E3,5.444374512E1 +1.983786000E3,5.619088618E1 +1.984047000E3,6.088482249E1 +1.984304000E3,5.678390940E1 +1.984575000E3,5.873820942E1 +1.984842000E3,6.004736340E1 +1.985142000E3,6.191465398E1 +1.985405000E3,6.154032648E1 +1.985653000E3,5.967034113E1 +1.985913000E3,5.855925349E1 +1.986211000E3,5.529356341E1 +1.986557000E3,5.823190054E1 +1.986847000E3,5.749679599E1 +1.987098000E3,5.855123449E1 +1.987369000E3,5.999203293E1 +1.987610000E3,6.139424716E1 +1.987876000E3,5.730078222E1 +1.988126000E3,5.649537684E1 +1.988425000E3,5.872458305E1 +1.988727000E3,5.704322852E1 +1.989024000E3,6.264447151E1 +1.989326000E3,5.763604303E1 +1.989641000E3,5.657919006E1 +1.989961000E3,5.706004491E1 +1.990255000E3,6.115159729E1 +1.990571000E3,5.721964371E1 +1.990829000E3,5.780420781E1 +1.991088000E3,5.782228640E1 +1.991353000E3,5.791642518E1 +1.991611000E3,5.820065680E1 +1.991935000E3,5.675756460E1 +1.992174000E3,5.720433643E1 +1.992482000E3,5.907701380E1 +1.992770000E3,5.791335620E1 +1.993107000E3,5.504589678E1 +1.993369000E3,6.117578252E1 +1.993619000E3,5.902046786E1 +1.993912000E3,6.024153080E1 +1.994216000E3,6.061721402E1 +1.994464000E3,6.185610038E1 +1.994715000E3,5.902440055E1 +1.995005000E3,6.112374185E1 +1.995249000E3,5.664710018E1 +1.995551000E3,5.841351492E1 +1.995787000E3,5.961393992E1 +1.996119000E3,5.614463215E1 +1.996387000E3,5.528223904E1 +1.996647000E3,5.706960328E1 +1.996947000E3,5.544195306E1 +1.997203000E3,5.747091679E1 +1.997452000E3,5.434233120E1 +1.997769000E3,5.794847441E1 +1.998019000E3,5.504963001E1 +1.998267000E3,5.470768853E1 +1.998498000E3,6.426300701E1 +1.998789000E3,6.070245213E1 +1.999090000E3,5.893271279E1 +1.999390000E3,5.873668669E1 +1.999698000E3,6.355663744E1 +1.999962000E3,6.500393379E1 +2.000214000E3,6.177640112E1 +2.000471000E3,6.122167361E1 +2.000775000E3,5.982616779E1 +2.001079000E3,5.944943300E1 +2.001339000E3,5.772707313E1 +2.001595000E3,5.934980117E1 +2.001862000E3,6.221301291E1 +2.002160000E3,6.098009785E1 +2.002491000E3,6.205877653E1 +2.002758000E3,5.978743388E1 +2.003062000E3,6.141065367E1 +2.003307000E3,6.146860620E1 +2.003555000E3,6.323368939E1 +2.003884000E3,6.072009355E1 +2.004185000E3,6.072017978E1 +2.004424000E3,6.079512782E1 +2.004673000E3,6.651000141E1 +2.004939000E3,6.185812181E1 +2.005202000E3,5.705353418E1 +2.005472000E3,5.820400818E1 +2.005800000E3,5.682542431E1 +2.006070000E3,6.224932691E1 +2.006350000E3,5.654791681E1 +2.006601000E3,6.160831985E1 +2.006857000E3,6.443497299E1 +2.007101000E3,6.091208862E1 +2.007395000E3,5.867323811E1 +2.007635000E3,5.850229824E1 +2.007945000E3,6.307832054E1 +2.008197000E3,5.931313312E1 +2.008453000E3,5.632990721E1 +2.008711000E3,5.662998085E1 +2.009032000E3,5.416655753E1 +2.009268000E3,6.273936844E1 +2.009521000E3,6.129068926E1 +2.009786000E3,6.485712301E1 +2.010037000E3,6.605690213E1 +2.010298000E3,6.243431425E1 +2.010541000E3,6.062714733E1 +2.010780000E3,6.369220544E1 +2.011082000E3,5.933701247E1 +2.011330000E3,6.141658123E1 +2.011605000E3,6.232326760E1 +2.011893000E3,5.983132844E1 +2.012226000E3,6.085684837E1 +2.012489000E3,5.844434641E1 +2.012752000E3,5.992485437E1 +2.013005000E3,5.745164278E1 +2.013272000E3,5.489362140E1 +2.013573000E3,5.734004331E1 +2.013861000E3,5.569303233E1 +2.014170000E3,5.619919203E1 +2.014467000E3,5.719248521E1 +2.014715000E3,5.898607642E1 +2.015015000E3,5.312334941E1 +2.015258000E3,4.707687024E1 +2.015594000E3,5.326213693E1 +2.015822000E3,4.977107581E1 +2.016071000E3,5.399380901E1 +2.016333000E3,5.528915982E1 +2.016634000E3,5.648344312E1 +2.016879000E3,5.853194276E1 +2.017143000E3,5.969968429E1 +2.017429000E3,6.121498547E1 +2.017723000E3,5.933414775E1 +2.017961000E3,6.375558171E1 +2.018248000E3,6.102538403E1 +2.018558000E3,6.066629858E1 +2.018830000E3,5.238394429E1 +2.019065000E3,5.528030903E1 +2.019316000E3,5.711235169E1 +2.019578000E3,6.069913503E1 +2.019847000E3,5.344730110E1 +2.020093000E3,5.593398360E1 +2.020413000E3,5.112453486E1 +2.020668000E3,5.529600172E1 +2.020922000E3,5.816841553E1 +2.021177000E3,6.105447683E1 +2.021449000E3,5.967528890E1 +2.021707000E3,5.677568689E1 +2.022115000E3,5.613246875E1 +2.022403000E3,5.846674311E1 +2.022679000E3,5.999468936E1 +2.022930000E3,6.268951545E1 +2.023232000E3,6.037378186E1 +2.023532000E3,6.123290650E1 +2.023784000E3,6.425880775E1 +2.024094000E3,6.043334594E1 +2.024356000E3,6.287321918E1 +2.024616000E3,6.178703582E1 +2.024868000E3,5.974424575E1 +2.025152000E3,5.863905018E1 +2.025429000E3,5.669082005E1 +2.025716000E3,6.192616195E1 +2.026008000E3,6.367561928E1 +2.026300000E3,6.061621393E1 +2.026543000E3,6.411900249E1 +2.026802000E3,6.060951858E1 +2.027066000E3,5.606119041E1 +2.027395000E3,5.099901519E1 +2.027693000E3,5.622472082E1 +2.027945000E3,5.354940616E1 +2.028237000E3,6.282566888E1 +2.028553000E3,5.775523802E1 +2.028868000E3,6.095006183E1 +2.029133000E3,6.333727439E1 +2.029399000E3,5.925545982E1 +2.029660000E3,6.045827699E1 +2.029962000E3,5.594587825E1 +2.030223000E3,5.708579081E1 +2.030478000E3,5.777704597E1 +2.030737000E3,5.406349508E1 +2.030990000E3,5.544037764E1 +2.031246000E3,5.912518025E1 +2.031508000E3,5.924806900E1 +2.031864000E3,6.105667153E1 +2.032110000E3,5.838466956E1 +2.032350000E3,5.923100201E1 +2.032598000E3,6.024290558E1 +2.032866000E3,5.971089342E1 +2.033112000E3,5.478665804E1 +2.033351000E3,5.966531235E1 +2.033644000E3,5.755565544E1 +2.033892000E3,5.982004182E1 +2.034190000E3,5.797424789E1 +2.034425000E3,5.856301863E1 +2.034717000E3,6.325478319E1 +2.035053000E3,6.168254294E1 +2.035364000E3,6.188857455E1 +2.035619000E3,6.156039581E1 +2.035901000E3,6.235770270E1 +2.036169000E3,6.262779828E1 +2.036471000E3,6.142542176E1 +2.036764000E3,5.923845966E1 +2.037022000E3,5.827266837E1 +2.037307000E3,6.314641141E1 +2.037615000E3,5.460230698E1 +2.037870000E3,5.396400232E1 +2.038120000E3,5.561122002E1 +2.038463000E3,5.928400391E1 +2.038767000E3,5.668934966E1 +2.039069000E3,5.831653467E1 +2.039316000E3,5.267103167E1 +2.039622000E3,5.557794232E1 +2.039859000E3,5.543606804E1 +2.040196000E3,5.836770370E1 +2.040499000E3,5.678092478E1 +2.040751000E3,5.612506795E1 +2.041024000E3,5.868430679E1 +2.041274000E3,5.264121586E1 +2.041581000E3,5.828774790E1 +2.041841000E3,5.647338053E1 +2.042088000E3,6.053709731E1 +2.042403000E3,5.614689861E1 +2.042691000E3,5.714845923E1 +2.042944000E3,5.256418368E1 +2.043191000E3,5.601486494E1 +2.043466000E3,5.810869150E1 +2.043715000E3,5.529893852E1 +2.043979000E3,5.708153712E1 +2.044245000E3,5.690179830E1 +2.044568000E3,5.994555064E1 +2.044825000E3,6.172126409E1 +2.045096000E3,6.015473895E1 +2.045377000E3,5.509344178E1 +2.045629000E3,5.568915719E1 +2.045902000E3,5.938619751E1 +2.046155000E3,5.534852098E1 +2.046409000E3,5.905391706E1 +2.046693000E3,5.250115201E1 +2.046947000E3,5.587771233E1 +2.047277000E3,5.599930929E1 +2.047517000E3,5.586822515E1 +2.047803000E3,5.740436533E1 +2.048105000E3,5.413600866E1 +2.048476000E3,5.595836709E1 +2.048737000E3,5.982743631E1 +2.048992000E3,6.001131240E1 +2.049305000E3,5.629713962E1 +2.049568000E3,5.505265617E1 +2.049904000E3,5.686004167E1 +2.050199000E3,6.078932545E1 +2.050470000E3,5.919030857E1 +2.050773000E3,5.640754436E1 +2.051052000E3,5.864124078E1 +2.051311000E3,5.683150656E1 +2.051642000E3,5.391893615E1 +2.051926000E3,4.513639699E1 +2.052174000E3,5.750824000E1 +2.052467000E3,5.945309138E1 +2.052703000E3,6.260915402E1 +2.052981000E3,6.017408744E1 +2.053276000E3,6.158293130E1 +2.053516000E3,6.279041899E1 +2.053759000E3,6.005362243E1 +2.054030000E3,5.776050932E1 +2.054357000E3,5.906607942E1 +2.054642000E3,6.002924771E1 +2.054978000E3,5.708591672E1 +2.055267000E3,5.932996992E1 +2.055552000E3,5.830703641E1 +2.055812000E3,5.428102985E1 +2.056063000E3,5.893384546E1 +2.056382000E3,6.028305726E1 +2.056682000E3,5.904357096E1 +2.056923000E3,6.015407432E1 +2.057171000E3,5.801677968E1 +2.057418000E3,6.561794532E1 +2.057665000E3,6.751214025E1 +2.057959000E3,5.899748641E1 +2.058279000E3,5.616162884E1 +2.058571000E3,5.813941707E1 +2.058834000E3,6.236684118E1 +2.059132000E3,6.058455193E1 +2.059376000E3,6.004963560E1 +2.059687000E3,6.255152045E1 +2.059984000E3,6.155697025E1 +2.060225000E3,6.124056229E1 +2.060517000E3,6.072549607E1 +2.060756000E3,6.119225814E1 +2.061060000E3,5.953618039E1 +2.061302000E3,5.869582322E1 +2.061578000E3,6.248269042E1 +2.061841000E3,6.070173510E1 +2.062089000E3,6.023992255E1 +2.062337000E3,5.848175462E1 +2.062607000E3,5.092907116E1 +2.062859000E3,5.442118268E1 +2.063124000E3,5.298599309E1 +2.063425000E3,6.030333428E1 +2.063671000E3,5.835700379E1 +2.063954000E3,5.943633389E1 +2.064268000E3,5.761479859E1 +2.064577000E3,5.520238299E1 +2.064822000E3,5.901822557E1 +2.065074000E3,5.705952734E1 +2.065339000E3,6.136116330E1 +2.065603000E3,5.746483296E1 +2.065865000E3,5.867757380E1 +2.066141000E3,5.709322981E1 +2.066441000E3,5.775131141E1 +2.066691000E3,5.886237327E1 +2.067036000E3,5.617972984E1 +2.067288000E3,5.802507148E1 +2.067560000E3,6.044497816E1 +2.067891000E3,5.450044868E1 +2.068148000E3,5.616761260E1 +2.068412000E3,6.243097888E1 +2.068673000E3,5.783788439E1 +2.068946000E3,5.764761585E1 +2.069196000E3,5.683737954E1 +2.069468000E3,5.609890848E1 +2.069778000E3,5.465619904E1 +2.070034000E3,5.368960846E1 +2.070328000E3,6.032893819E1 +2.070574000E3,5.862927742E1 +2.070842000E3,5.635830209E1 +2.071101000E3,5.822198053E1 +2.071339000E3,5.691346983E1 +2.071597000E3,5.865778618E1 +2.071860000E3,5.810560725E1 +2.072128000E3,5.968009174E1 +2.072425000E3,5.833852533E1 +2.072667000E3,5.784540163E1 +2.072934000E3,5.644439458E1 +2.073184000E3,5.178260396E1 +2.073488000E3,5.751445421E1 +2.073769000E3,5.974800721E1 +2.074068000E3,6.534291023E1 +2.074348000E3,6.371076652E1 +2.074624000E3,6.156132937E1 +2.074877000E3,6.012113548E1 +2.075119000E3,6.026351151E1 +2.075377000E3,6.142675581E1 +2.075661000E3,6.194478144E1 +2.075914000E3,6.183865569E1 +2.076267000E3,6.387512541E1 +2.076547000E3,6.077311287E1 +2.076803000E3,6.130963963E1 +2.077056000E3,5.862622582E1 +2.077295000E3,5.463497219E1 +2.077610000E3,5.484231095E1 +2.077891000E3,6.099801434E1 +2.078171000E3,5.475621164E1 +2.078466000E3,5.955577801E1 +2.078709000E3,5.720097088E1 +2.078954000E3,5.661944912E1 +2.079224000E3,5.443336360E1 +2.079503000E3,5.917559782E1 +2.079800000E3,5.424380486E1 +2.080057000E3,6.013762169E1 +2.080307000E3,6.100643768E1 +2.080558000E3,6.205128007E1 +2.080810000E3,6.007904071E1 +2.081092000E3,6.423414837E1 +2.081354000E3,5.938817614E1 +2.081601000E3,6.006860062E1 +2.081845000E3,5.833570272E1 +2.082143000E3,5.962915676E1 +2.082396000E3,5.844615966E1 +2.082663000E3,5.932060291E1 +2.082921000E3,6.037844323E1 +2.083227000E3,5.719168160E1 +2.083487000E3,5.597578938E1 +2.083743000E3,5.236775830E1 +2.084062000E3,5.471900653E1 +2.084318000E3,5.178371688E1 +2.084618000E3,5.707729304E1 +2.084858000E3,5.526812689E1 +2.085154000E3,5.716405930E1 +2.085391000E3,5.478798233E1 +2.085687000E3,5.496315929E1 +2.085932000E3,5.701239101E1 +2.086228000E3,5.776438308E1 +2.086467000E3,5.628202894E1 +2.086760000E3,5.042244376E1 +2.087015000E3,5.775963511E1 +2.087362000E3,4.982890988E1 +2.087671000E3,4.785672217E1 +2.087922000E3,4.762697394E1 +2.088178000E3,5.046726223E1 +2.088438000E3,4.890262424E1 +2.088711000E3,5.501277631E1 +2.088981000E3,5.666001705E1 +2.089249000E3,6.014252161E1 +2.089513000E3,5.925311989E1 +2.089806000E3,6.173820636E1 +2.090063000E3,5.350884215E1 +2.090366000E3,5.736408779E1 +2.090744000E3,5.450936109E1 +2.091005000E3,5.763377323E1 +2.091253000E3,6.042269191E1 +2.091515000E3,5.484903903E1 +2.091757000E3,5.882101591E1 +2.092028000E3,5.833139845E1 +2.092280000E3,5.703430671E1 +2.092527000E3,5.247783814E1 +2.092809000E3,5.233323676E1 +2.093037000E3,5.202869643E1 +2.093354000E3,5.628845797E1 +2.093634000E3,5.325396544E1 +2.094006000E3,5.654992892E1 +2.094280000E3,5.713253789E1 +2.094541000E3,5.967664240E1 +2.094800000E3,5.750232678E1 +2.095069000E3,5.544480371E1 +2.095333000E3,5.462176641E1 +2.095596000E3,5.811248949E1 +2.095853000E3,6.196847972E1 +2.096192000E3,5.842850461E1 +2.096488000E3,5.597774452E1 +2.096726000E3,5.601282925E1 +2.097104000E3,5.625832805E1 +2.097364000E3,5.315488909E1 +2.097602000E3,5.287250653E1 +2.097844000E3,5.523708836E1 +2.098081000E3,5.724292600E1 +2.098340000E3,5.659511238E1 +2.098670000E3,5.675324149E1 +2.098945000E3,5.485884276E1 +2.099219000E3,5.694143956E1 +2.099469000E3,5.561655413E1 +2.099765000E3,5.844909410E1 +2.100011000E3,6.135621316E1 +2.100343000E3,5.968766012E1 +2.100584000E3,5.173347950E1 +2.100832000E3,5.415548255E1 +2.101090000E3,5.271968845E1 +2.101339000E3,5.007174890E1 +2.101624000E3,5.279525002E1 +2.101895000E3,5.358558767E1 +2.102197000E3,5.559048142E1 +2.102438000E3,5.476305303E1 +2.102705000E3,5.237114911E1 +2.102947000E3,5.014972007E1 +2.103218000E3,4.895902935E1 +2.103469000E3,5.192053997E1 +2.103853000E3,4.647138436E1 +2.104101000E3,4.837766327E1 +2.104448000E3,5.088929287E1 +2.104740000E3,5.561591777E1 +2.104997000E3,5.440319534E1 +2.105260000E3,5.347164399E1 +2.105561000E3,5.151610441E1 +2.105813000E3,5.075382634E1 +2.106121000E3,5.244425755E1 +2.106357000E3,5.269617654E1 +2.106663000E3,5.149027406E1 +2.106954000E3,5.659456733E1 +2.107266000E3,5.282561460E1 +2.107606000E3,5.407918273E1 +2.107883000E3,5.643922092E1 +2.108164000E3,5.169657105E1 +2.108480000E3,5.713744586E1 +2.108748000E3,5.931186178E1 +2.109003000E3,5.645689600E1 +2.109252000E3,5.322874786E1 +2.109552000E3,5.363731782E1 +2.109821000E3,5.353815648E1 +2.110077000E3,5.445551750E1 +2.110418000E3,5.491110228E1 +2.110669000E3,5.291647814E1 +2.110921000E3,5.202914132E1 +2.111180000E3,5.363241827E1 +2.111479000E3,5.566624291E1 +2.111721000E3,5.645238247E1 +2.112027000E3,5.458458697E1 +2.112294000E3,5.469783372E1 +2.112597000E3,5.582449562E1 +2.112854000E3,5.595416398E1 +2.113105000E3,5.113785865E1 +2.113352000E3,6.248282803E1 +2.113711000E3,5.880495226E1 +2.113968000E3,5.941805617E1 +2.114248000E3,5.561632009E1 +2.114507000E3,5.501810850E1 +2.114754000E3,5.936291007E1 +2.115053000E3,6.127733734E1 +2.115321000E3,6.057491273E1 +2.115616000E3,6.127323198E1 +2.115893000E3,5.760488174E1 +2.116193000E3,6.030881831E1 +2.116434000E3,5.967518116E1 +2.116722000E3,5.720938908E1 +2.117066000E3,5.605932878E1 +2.117338000E3,6.068190844E1 +2.117598000E3,5.400374866E1 +2.117892000E3,5.332007667E1 +2.118133000E3,4.991979059E1 +2.118428000E3,5.700198654E1 +2.118666000E3,5.878418983E1 +2.118922000E3,5.703766890E1 +2.119230000E3,5.731012811E1 +2.119515000E3,5.865622099E1 +2.119741000E3,5.772295719E1 +2.120015000E3,5.851982083E1 +2.120322000E3,5.958645129E1 +2.120616000E3,6.233814130E1 +2.120861000E3,6.002711287E1 +2.121162000E3,5.939190004E1 +2.121437000E3,5.758195225E1 +2.121690000E3,5.564648712E1 +2.121946000E3,5.336629511E1 +2.122218000E3,5.199121426E1 +2.122476000E3,5.906368298E1 +2.122759000E3,5.917930836E1 +2.123014000E3,5.824882047E1 +2.123266000E3,5.770359270E1 +2.123492000E3,5.695638802E1 +2.123777000E3,5.720151485E1 +2.124027000E3,6.045411810E1 +2.124327000E3,5.540258870E1 +2.124575000E3,5.828000252E1 +2.124835000E3,5.500577731E1 +2.125106000E3,5.926473821E1 +2.125354000E3,5.472888078E1 +2.125611000E3,5.530970077E1 +2.125862000E3,5.595037084E1 +2.126117000E3,5.439239133E1 +2.126432000E3,5.961943996E1 +2.126692000E3,5.841091801E1 +2.126944000E3,5.863137443E1 +2.127282000E3,5.731398304E1 +2.127577000E3,5.665374527E1 +2.127843000E3,5.476493539E1 +2.128129000E3,5.580929465E1 +2.128437000E3,5.565551021E1 +2.128739000E3,5.869101147E1 +2.129026000E3,5.827114612E1 +2.129307000E3,5.507536074E1 +2.129577000E3,5.532393691E1 +2.129934000E3,5.233850306E1 +2.130215000E3,5.514372423E1 +2.130466000E3,5.757947445E1 +2.130714000E3,6.126034226E1 +2.131015000E3,6.074916673E1 +2.131279000E3,5.864911171E1 +2.131564000E3,5.680524431E1 +2.131825000E3,6.002252741E1 +2.132078000E3,5.953076168E1 +2.132390000E3,6.027427680E1 +2.132647000E3,5.955779136E1 +2.132902000E3,5.835756058E1 +2.133223000E3,6.286787860E1 +2.133471000E3,6.057291506E1 +2.133724000E3,5.893793659E1 +2.134002000E3,5.508555746E1 +2.134257000E3,5.619881839E1 +2.134512000E3,5.505764062E1 +2.134784000E3,5.808922162E1 +2.135054000E3,5.334583096E1 +2.135313000E3,5.298019930E1 +2.135595000E3,5.025342296E1 +2.135812000E3,5.409382682E1 +2.136057000E3,5.580950424E1 +2.136332000E3,5.523743716E1 +2.136661000E3,5.499005541E1 +2.136917000E3,5.745623005E1 +2.137196000E3,5.149169849E1 +2.137449000E3,5.261206885E1 +2.137711000E3,5.487518376E1 +2.138022000E3,5.898871991E1 +2.138270000E3,5.852026830E1 +2.138564000E3,5.868858262E1 +2.138802000E3,5.736353209E1 +2.139066000E3,5.529465652E1 +2.139332000E3,5.762578865E1 +2.139672000E3,5.790185487E1 +2.139930000E3,5.792373283E1 +2.140278000E3,5.597904656E1 +2.140535000E3,5.355980456E1 +2.140856000E3,5.411887429E1 +2.141146000E3,5.094976839E1 +2.141467000E3,5.658279242E1 +2.141735000E3,6.043792292E1 +2.142041000E3,5.996632022E1 +2.142276000E3,6.230155616E1 +2.142526000E3,6.102528468E1 +2.142783000E3,5.770338577E1 +2.143124000E3,5.827243883E1 +2.143406000E3,5.367650147E1 +2.143645000E3,5.777094487E1 +2.143915000E3,5.851595499E1 +2.144175000E3,5.573729509E1 +2.144454000E3,5.467626304E1 +2.144700000E3,5.699765591E1 +2.144968000E3,5.692170932E1 +2.145246000E3,6.030210344E1 +2.145550000E3,5.876913066E1 +2.145797000E3,5.698149837E1 +2.146042000E3,5.982717784E1 +2.146368000E3,5.905293636E1 +2.146676000E3,5.947032966E1 +2.146922000E3,5.910471730E1 +2.147225000E3,6.065874797E1 +2.147524000E3,5.680135408E1 +2.147831000E3,5.451199701E1 +2.148090000E3,5.301325775E1 +2.148365000E3,5.466040661E1 +2.148665000E3,5.658013689E1 +2.148952000E3,5.410667827E1 +2.149249000E3,5.788683658E1 +2.149597000E3,5.873903650E1 +2.149910000E3,5.314379433E1 +2.150150000E3,5.564952940E1 +2.150451000E3,6.000220607E1 +2.150691000E3,6.235870620E1 +2.150965000E3,6.387461990E1 +2.151194000E3,6.491001134E1 +2.151449000E3,5.932544814E1 +2.151756000E3,6.117684525E1 +2.152011000E3,6.059885605E1 +2.152282000E3,6.303246617E1 +2.152596000E3,6.399854390E1 +2.152961000E3,6.063746268E1 +2.153223000E3,6.122116723E1 +2.153495000E3,5.809397592E1 +2.153749000E3,5.903784259E1 +2.153999000E3,6.047826717E1 +2.154283000E3,5.846467986E1 +2.154537000E3,6.226879102E1 +2.154785000E3,5.980611807E1 +2.155079000E3,5.787450321E1 +2.155375000E3,5.676059962E1 +2.155616000E3,5.395823696E1 +2.155912000E3,5.953639288E1 +2.156221000E3,5.971614724E1 +2.156510000E3,6.039969801E1 +2.156758000E3,5.898776738E1 +2.157015000E3,6.100474003E1 +2.157289000E3,5.750129682E1 +2.157591000E3,5.995540643E1 +2.157844000E3,5.628303244E1 +2.158104000E3,5.892686601E1 +2.158366000E3,5.712884748E1 +2.158667000E3,5.727860760E1 +2.158932000E3,5.313556696E1 +2.159288000E3,5.635583768E1 +2.159555000E3,5.929473664E1 +2.159809000E3,5.396180560E1 +2.160112000E3,5.807023999E1 +2.160354000E3,5.639240346E1 +2.160608000E3,5.917728814E1 +2.160855000E3,5.429000157E1 +2.161130000E3,5.397827395E1 +2.161395000E3,5.647751800E1 +2.161656000E3,5.342605760E1 +2.162007000E3,5.324373839E1 +2.162263000E3,5.439383591E1 +2.162517000E3,5.727066505E1 +2.162888000E3,5.995593964E1 +2.163140000E3,6.130649482E1 +2.163392000E3,6.228130821E1 +2.163644000E3,6.279179388E1 +2.163938000E3,5.559527300E1 +2.164178000E3,5.200550071E1 +2.164481000E3,5.797363767E1 +2.164757000E3,5.902554678E1 +2.165040000E3,5.834647622E1 +2.165303000E3,5.713285380E1 +2.165575000E3,6.343633700E1 +2.165850000E3,5.896208706E1 +2.166219000E3,5.624501583E1 +2.166483000E3,5.696603075E1 +2.166769000E3,5.736978604E1 +2.167027000E3,5.837475894E1 +2.167278000E3,5.768129207E1 +2.167593000E3,5.660761865E1 +2.167856000E3,5.680076310E1 +2.168110000E3,5.883044450E1 +2.168385000E3,5.772028600E1 +2.168649000E3,5.342008664E1 +2.168914000E3,5.359113324E1 +2.169168000E3,5.849769703E1 +2.169536000E3,6.267181821E1 +2.169793000E3,5.719603223E1 +2.170040000E3,5.397233107E1 +2.170287000E3,4.861027503E1 +2.170579000E3,5.741564583E1 +2.170822000E3,6.207812430E1 +2.171115000E3,5.827753689E1 +2.171365000E3,6.042202215E1 +2.171629000E3,5.516417228E1 +2.171895000E3,4.912315476E1 +2.172163000E3,4.718316305E1 +2.172446000E3,5.363129541E1 +2.172813000E3,5.322378335E1 +2.173087000E3,5.228499961E1 +2.173349000E3,5.364722432E1 +2.173618000E3,5.964999675E1 +2.173917000E3,6.116591719E1 +2.174174000E3,5.668310324E1 +2.174436000E3,5.538937699E1 +2.174688000E3,5.539330891E1 +2.174944000E3,5.678019084E1 +2.175197000E3,5.655985061E1 +2.175490000E3,6.211643319E1 +2.175751000E3,5.899842059E1 +2.176153000E3,6.042080027E1 +2.176454000E3,5.956376587E1 +2.176730000E3,5.896716838E1 +2.177048000E3,5.729778676E1 +2.177305000E3,5.512323216E1 +2.177616000E3,5.573124529E1 +2.177883000E3,5.390669828E1 +2.178139000E3,5.435017850E1 +2.178403000E3,5.275779180E1 +2.178672000E3,5.469054235E1 +2.178938000E3,5.701832565E1 +2.179201000E3,6.063134316E1 +2.179540000E3,6.461030243E1 +2.179799000E3,6.345934666E1 +2.180043000E3,6.255021373E1 +2.180348000E3,6.265836689E1 +2.180640000E3,6.125083403E1 +2.180878000E3,5.721943432E1 +2.181125000E3,5.584429631E1 +2.181407000E3,5.679219567E1 +2.181647000E3,5.506189996E1 +2.181962000E3,5.950753578E1 +2.182227000E3,5.684863204E1 +2.182499000E3,5.318048388E1 +2.182825000E3,5.856807028E1 +2.183124000E3,6.201159961E1 +2.183360000E3,5.994279105E1 +2.183661000E3,6.155626338E1 +2.183904000E3,5.760612799E1 +2.184197000E3,5.557219911E1 +2.184436000E3,5.720299401E1 +2.184730000E3,5.496492062E1 +2.184965000E3,5.287669523E1 +2.185272000E3,5.534018340E1 +2.185572000E3,5.047897567E1 +2.185897000E3,5.289532450E1 +2.186149000E3,5.169587435E1 +2.186428000E3,5.811856565E1 +2.186722000E3,5.829930976E1 +2.187016000E3,5.767171180E1 +2.187297000E3,5.167293983E1 +2.187542000E3,5.634712904E1 +2.187793000E3,5.452173951E1 +2.188038000E3,5.242356157E1 +2.188332000E3,5.476946331E1 +2.188570000E3,5.506415879E1 +2.188807000E3,5.842757277E1 +2.189123000E3,5.579731569E1 +2.189400000E3,5.735467547E1 +2.189707000E3,5.510643622E1 +2.189947000E3,5.399605596E1 +2.190247000E3,5.231812124E1 +2.190482000E3,5.397423501E1 +2.190722000E3,5.467291530E1 +2.190972000E3,5.750340972E1 +2.191219000E3,5.451621797E1 +2.191527000E3,5.544744059E1 +2.191775000E3,5.570906247E1 +2.192040000E3,5.570238792E1 +2.192395000E3,5.704729905E1 +2.192674000E3,5.662202644E1 +2.192969000E3,6.130245708E1 +2.193206000E3,5.842239411E1 +2.193505000E3,5.813812757E1 +2.193745000E3,5.643123308E1 +2.194038000E3,5.810403241E1 +2.194275000E3,5.863690353E1 +2.194574000E3,5.519980518E1 +2.194810000E3,5.381530940E1 +2.195092000E3,5.781601666E1 +2.195335000E3,5.699265058E1 +2.195608000E3,5.477338243E1 +2.195929000E3,5.695412826E1 +2.196188000E3,5.575935497E1 +2.196439000E3,5.738570553E1 +2.196686000E3,6.194168224E1 +2.196969000E3,5.888525061E1 +2.197270000E3,5.830791470E1 +2.197516000E3,5.904778886E1 +2.197822000E3,5.987539712E1 +2.198117000E3,5.910637217E1 +2.198355000E3,5.676446576E1 +2.198673000E3,5.632729175E1 +2.198920000E3,5.826507178E1 +2.199227000E3,6.221847088E1 +2.199493000E3,6.023584539E1 +2.199739000E3,6.378124478E1 +2.199975000E3,6.457706819E1 +2.200218000E3,5.781084826E1 +2.200471000E3,5.833307765E1 +2.200715000E3,5.849295856E1 +2.200984000E3,5.695016071E1 +2.201255000E3,5.945608920E1 +2.201511000E3,5.923858391E1 +2.201821000E3,5.975381188E1 +2.202050000E3,5.657071344E1 +2.202297000E3,5.582353283E1 +2.202552000E3,5.634201272E1 +2.202803000E3,5.842061156E1 +2.203080000E3,5.511323996E1 +2.203339000E3,5.333816234E1 +2.203589000E3,5.586132206E1 +2.203867000E3,5.612282959E1 +2.204151000E3,5.390907932E1 +2.204405000E3,5.581501331E1 +2.204648000E3,5.691201261E1 +2.204938000E3,5.605209961E1 +2.205271000E3,5.337227455E1 +2.205520000E3,5.726868677E1 +2.205824000E3,5.678400386E1 +2.206068000E3,5.598615724E1 +2.206327000E3,6.245548090E1 +2.206634000E3,5.788335624E1 +2.206927000E3,5.672312442E1 +2.207166000E3,5.700846075E1 +2.207464000E3,5.693157148E1 +2.207703000E3,5.667671942E1 +2.207995000E3,5.655907845E1 +2.208344000E3,5.694003799E1 +2.208592000E3,5.812693102E1 +2.208844000E3,5.305590014E1 +2.209133000E3,5.963333488E1 +2.209376000E3,6.125764761E1 +2.209621000E3,5.708540532E1 +2.209865000E3,5.539532482E1 +2.210177000E3,6.086117928E1 +2.210432000E3,5.871599576E1 +2.210705000E3,5.720891289E1 +2.210929000E3,5.859137268E1 +2.211185000E3,5.492761595E1 +2.211566000E3,5.458369125E1 +2.211811000E3,5.704243717E1 +2.212094000E3,5.948204172E1 +2.212325000E3,5.442994388E1 +2.212570000E3,5.607391365E1 +2.212815000E3,5.349643391E1 +2.213089000E3,5.518134225E1 +2.213397000E3,5.879499176E1 +2.213659000E3,5.918920409E1 +2.213917000E3,6.317166487E1 +2.214205000E3,5.773325998E1 +2.214505000E3,6.021667659E1 +2.214834000E3,5.707564648E1 +2.215074000E3,5.411436798E1 +2.215412000E3,5.705541238E1 +2.215699000E3,6.721672427E1 +2.215946000E3,6.130402498E1 +2.216241000E3,5.914242022E1 +2.216493000E3,5.881747375E1 +2.216786000E3,5.920115687E1 +2.217030000E3,5.981753209E1 +2.217325000E3,5.379848698E1 +2.217566000E3,5.498057230E1 +2.217931000E3,5.647867672E1 +2.218210000E3,5.460935805E1 +2.218440000E3,5.579228446E1 +2.218740000E3,5.598523495E1 +2.218992000E3,5.501198671E1 +2.219248000E3,5.270876730E1 +2.219495000E3,5.711255338E1 +2.219767000E3,5.276578476E1 +2.220009000E3,6.171644376E1 +2.220307000E3,5.760035427E1 +2.220557000E3,6.039071701E1 +2.220820000E3,5.947563028E1 +2.221166000E3,5.781157464E1 +2.221459000E3,5.689764898E1 +2.221740000E3,5.361204154E1 +2.221998000E3,5.565584232E1 +2.222252000E3,6.236264054E1 +2.222508000E3,5.583706888E1 +2.222794000E3,5.998886151E1 +2.223038000E3,6.067027795E1 +2.223281000E3,5.953550256E1 +2.223512000E3,6.087865846E1 +2.223764000E3,5.880177247E1 +2.224056000E3,5.532032645E1 +2.224389000E3,5.110554887E1 +2.224697000E3,6.082114583E1 +2.224957000E3,6.332269799E1 +2.225225000E3,5.859152014E1 +2.225521000E3,6.312344162E1 +2.225760000E3,6.208500503E1 +2.226003000E3,6.030377984E1 +2.226280000E3,5.890306026E1 +2.226553000E3,6.412257006E1 +2.226813000E3,5.959239884E1 +2.227137000E3,5.603893495E1 +2.227460000E3,5.807576772E1 +2.227717000E3,6.034272760E1 +2.227950000E3,5.678924442E1 +2.228211000E3,5.767938832E1 +2.228489000E3,4.973605337E1 +2.228742000E3,5.227056153E1 +2.229007000E3,4.524576382E1 +2.229320000E3,5.163901012E1 +2.229633000E3,5.791269320E1 +2.229909000E3,5.832692980E1 +2.230223000E3,5.512940778E1 +2.230487000E3,5.639998631E1 +2.230845000E3,6.012111222E1 +2.231113000E3,6.632176219E1 +2.231407000E3,6.692769565E1 +2.231662000E3,6.409372191E1 +2.231945000E3,6.268702605E1 +2.232208000E3,6.192012265E1 +2.232460000E3,5.923306273E1 +2.232717000E3,5.726340446E1 +2.233005000E3,5.708270925E1 +2.233256000E3,6.172203942E1 +2.233510000E3,6.197059155E1 +2.233807000E3,6.691458644E1 +2.234160000E3,6.165007134E1 +2.234422000E3,6.172053486E1 +2.234714000E3,6.148833899E1 +2.234974000E3,6.190331921E1 +2.235253000E3,5.938090919E1 +2.235479000E3,6.223060920E1 +2.235722000E3,6.133640397E1 +2.236028000E3,6.400294095E1 +2.236269000E3,6.581462957E1 +2.236516000E3,6.094953675E1 +2.236828000E3,5.792232456E1 +2.237124000E3,5.750665846E1 +2.237367000E3,5.360734442E1 +2.237668000E3,5.239836763E1 +2.237914000E3,5.189659577E1 +2.238168000E3,5.779541581E1 +2.238431000E3,5.409030702E1 +2.238689000E3,5.064192938E1 +2.238941000E3,4.890244292E1 +2.239235000E3,4.958738332E1 +2.239486000E3,5.093509792E1 +2.239725000E3,5.421091975E1 +2.239970000E3,6.074883769E1 +2.240298000E3,5.611992467E1 +2.240604000E3,4.988071111E1 +2.240900000E3,4.952063126E1 +2.241187000E3,5.282005772E1 +2.241428000E3,5.672648648E1 +2.241685000E3,5.807464117E1 +2.241973000E3,5.565097745E1 +2.242224000E3,5.410363002E1 +2.242475000E3,5.548804216E1 +2.242720000E3,5.862108370E1 +2.242959000E3,5.101243713E1 +2.243259000E3,5.340920814E1 +2.243564000E3,5.471013043E1 +2.243801000E3,5.474536753E1 +2.244062000E3,5.454012147E1 +2.244333000E3,5.594751460E1 +2.244637000E3,5.486159050E1 +2.244913000E3,5.317501502E1 +2.245138000E3,5.100209753E1 +2.245397000E3,5.436827206E1 +2.245643000E3,5.483479867E1 +2.245916000E3,5.150486026E1 +2.246182000E3,5.049924887E1 +2.246449000E3,5.226067252E1 +2.246744000E3,5.389432372E1 +2.247057000E3,6.032791953E1 +2.247330000E3,5.966662928E1 +2.247666000E3,5.824962285E1 +2.247962000E3,5.700720490E1 +2.248202000E3,6.373200887E1 +2.248495000E3,6.648419927E1 +2.248743000E3,5.542652488E1 +2.249036000E3,5.256926371E1 +2.249272000E3,6.053195001E1 +2.249564000E3,4.959074314E1 +2.249800000E3,5.054384460E1 +2.250136000E3,5.008489809E1 +2.250431000E3,5.752384263E1 +2.250666000E3,5.367007636E1 +2.250931000E3,4.851936559E1 +2.251210000E3,4.965482987E1 +2.251497000E3,5.733244198E1 +2.251772000E3,5.370188093E1 +2.251997000E3,5.388650114E1 +2.252246000E3,5.331606518E1 +2.252516000E3,5.534782747E1 +2.252818000E3,5.271944154E1 +2.253047000E3,5.188974945E1 +2.253402000E3,5.040855384E1 +2.253689000E3,5.348452962E1 +2.253965000E3,5.685197701E1 +2.254240000E3,5.699151925E1 +2.254539000E3,5.217481719E1 +2.254794000E3,5.255063115E1 +2.255035000E3,5.258436032E1 +2.255283000E3,5.228429265E1 +2.255592000E3,5.187189315E1 +2.255851000E3,5.089851896E1 +2.256105000E3,5.323192817E1 +2.256387000E3,5.259240607E1 +2.256752000E3,5.489099725E1 +2.257016000E3,5.140699592E1 +2.257276000E3,5.478139635E1 +2.257600000E3,5.508183343E1 +2.257864000E3,5.539199709E1 +2.258160000E3,5.879728075E1 +2.258399000E3,6.145510373E1 +2.258645000E3,6.018082278E1 +2.258890000E3,6.203490998E1 +2.259131000E3,6.051201097E1 +2.259385000E3,5.741582229E1 +2.259629000E3,5.742200481E1 +2.259994000E3,5.205318956E1 +2.260295000E3,5.807019657E1 +2.260539000E3,5.843419178E1 +2.260841000E3,5.543595349E1 +2.261104000E3,5.208978608E1 +2.261348000E3,5.288295424E1 +2.261601000E3,5.593156434E1 +2.261856000E3,5.600009221E1 +2.262108000E3,5.581775464E1 +2.262358000E3,5.037081152E1 +2.262613000E3,5.059162693E1 +2.262916000E3,5.459372597E1 +2.263271000E3,5.581642194E1 +2.263548000E3,5.702582989E1 +2.263802000E3,5.531282217E1 +2.264049000E3,5.356460573E1 +2.264318000E3,5.682743962E1 +2.264564000E3,5.353127135E1 +2.264854000E3,5.962134934E1 +2.265080000E3,5.858968032E1 +2.265326000E3,5.681259568E1 +2.265625000E3,5.635120121E1 +2.265871000E3,5.433379551E1 +2.266211000E3,4.913835205E1 +2.266510000E3,5.243179137E1 +2.266783000E3,4.886918417E1 +2.267043000E3,4.774131335E1 +2.267292000E3,4.892025491E1 +2.267553000E3,4.710213612E1 +2.267796000E3,4.847827931E1 +2.268042000E3,5.624471818E1 +2.268281000E3,5.286977188E1 +2.268548000E3,5.683989489E1 +2.268800000E3,5.459251055E1 +2.269086000E3,5.272841607E1 +2.269389000E3,5.585343514E1 +2.269616000E3,5.452972356E1 +2.269865000E3,5.183250423E1 +2.270167000E3,4.733442261E1 +2.270442000E3,4.736450762E1 +2.270667000E3,4.430645798E1 +2.270915000E3,4.635257501E1 +2.271160000E3,4.914582650E1 +2.271407000E3,4.938157659E1 +2.271656000E3,4.788630853E1 +2.271896000E3,4.778446083E1 +2.272198000E3,5.081637081E1 +2.272482000E3,4.630509256E1 +2.272722000E3,4.551027932E1 +2.273048000E3,5.074623045E1 +2.273321000E3,4.689236254E1 +2.273562000E3,4.960242652E1 +2.273859000E3,5.310274016E1 +2.274104000E3,5.391997859E1 +2.274392000E3,4.854992165E1 +2.274648000E3,4.610161890E1 +2.274915000E3,5.325141064E1 +2.275196000E3,4.823989698E1 +2.275460000E3,5.167706762E1 +2.275772000E3,4.424461998E1 +2.276008000E3,4.957193490E1 +2.276258000E3,4.220429916E1 +2.276545000E3,4.614900045E1 +2.276809000E3,4.247109284E1 +2.277119000E3,5.104311310E1 +2.277385000E3,4.898949856E1 +2.277651000E3,5.033981280E1 +2.277920000E3,4.504255509E1 +2.278210000E3,4.851295637E1 +2.278452000E3,4.975001222E1 +2.278771000E3,5.198599663E1 +2.279101000E3,5.078534391E1 +2.279348000E3,5.056977572E1 +2.279614000E3,4.645427419E1 +2.279894000E3,4.837428182E1 +2.280121000E3,4.672417188E1 +2.280416000E3,4.338010131E1 +2.280671000E3,4.552410696E1 +2.280941000E3,4.107346609E1 +2.281195000E3,4.850760260E1 +2.281477000E3,4.449785068E1 +2.281730000E3,3.834743898E1 +2.282028000E3,3.160451104E1 +2.282275000E3,2.921367430E1 +2.282509000E3,3.929432216E1 +2.282771000E3,3.560833020E1 +2.283021000E3,4.204425230E1 +2.283277000E3,4.897505461E1 +2.283570000E3,4.492050546E1 +2.283802000E3,4.549624302E1 +2.284053000E3,4.703134831E1 +2.284302000E3,4.492779574E1 +2.284580000E3,5.573526523E1 +2.284888000E3,4.583204799E1 +2.285186000E3,3.987632497E1 +2.285426000E3,4.276483306E1 +2.285670000E3,4.196646636E1 +2.285974000E3,4.127295807E1 +2.286241000E3,3.392540836E1 +2.286513000E3,3.045281657E1 +2.286755000E3,3.056149566E1 +2.287058000E3,4.234115907E1 +2.287358000E3,4.148011807E1 +2.287615000E3,4.752316696E1 +2.287890000E3,4.261643768E1 +2.288186000E3,3.531031146E1 +2.288451000E3,3.336926272E1 +2.288830000E3,3.217663691E1 +2.289083000E3,3.280943829E1 +2.289350000E3,4.037024361E1 +2.289606000E3,4.463743016E1 +2.289870000E3,3.926930450E1 +2.290142000E3,3.549021170E1 +2.290376000E3,3.657210104E1 +2.290669000E3,3.609483404E1 +2.290917000E3,3.935001060E1 +2.291190000E3,3.968762383E1 +2.291417000E3,3.622062011E1 +2.291698000E3,5.052972627E1 +2.292019000E3,4.472329620E1 +2.292314000E3,3.528869928E1 +2.292580000E3,3.171318762E1 +2.292867000E3,3.293682859E1 +2.293112000E3,2.980662334E1 +2.293408000E3,3.108877030E1 +2.293645000E3,3.411108767E1 +2.293948000E3,2.929195023E1 +2.294231000E3,2.830259325E1 +2.294484000E3,2.905088910E1 +2.294732000E3,3.046102835E1 +2.295049000E3,2.679058069E1 +2.295347000E3,2.620731663E1 +2.295594000E3,3.509528145E1 +2.295836000E3,2.657946529E1 +2.296130000E3,2.511368258E1 +2.296378000E3,2.555955915E1 +2.296634000E3,2.785949260E1 +2.296875000E3,2.654407944E1 +2.297117000E3,3.658368449E1 +2.297412000E3,3.412054652E1 +2.297648000E3,3.448252102E1 +2.297956000E3,3.528486686E1 +2.298205000E3,3.265291425E1 +2.298494000E3,2.963788314E1 +2.298798000E3,3.350933300E1 +2.299085000E3,3.038301619E1 +2.299338000E3,3.357142506E1 +2.299610000E3,4.744800671E1 +2.299868000E3,3.435626076E1 +2.300142000E3,3.368274389E1 +2.300402000E3,2.881246111E1 +2.300655000E3,3.097762310E1 +2.300898000E3,2.947567056E1 +2.301182000E3,3.214187359E1 +2.301423000E3,3.421070745E1 +2.301786000E3,5.117970534E1 +2.302087000E3,5.037784077E1 +2.302335000E3,5.283937176E1 +2.302644000E3,5.164119106E1 +2.302941000E3,5.300709748E1 +2.303240000E3,4.713488810E1 +2.303488000E3,4.524114677E1 +2.303739000E3,3.080285972E1 +2.304022000E3,2.293405577E1 +2.304254000E3,2.235464386E1 +2.304552000E3,2.949911358E1 +2.304876000E3,4.141349798E1 +2.305182000E3,4.156611078E1 +2.305491000E3,4.347125429E1 +2.305797000E3,4.579894404E1 +2.306107000E3,4.646123013E1 +2.306358000E3,4.517240887E1 +2.306604000E3,5.308475174E1 +2.306870000E3,4.681256924E1 +2.307168000E3,2.942058533E1 +2.307450000E3,2.986114457E1 +2.307717000E3,3.195150356E1 +2.308031000E3,3.775567348E1 +2.308265000E3,3.823556499E1 +2.308570000E3,2.909536341E1 +2.308842000E3,3.096070220E1 +2.309098000E3,4.060687649E1 +2.309391000E3,4.820113946E1 +2.309687000E3,4.619079404E1 +2.309928000E3,4.304793785E1 +2.310216000E3,4.976144450E1 +2.310446000E3,4.779148829E1 +2.310686000E3,5.167703897E1 +2.310979000E3,3.773719280E1 +2.311248000E3,2.923821784E1 +2.311466000E3,2.654081756E1 +2.311763000E3,2.616593312E1 +2.312001000E3,2.460963519E1 +2.312285000E3,2.554564289E1 +2.312588000E3,3.572755404E1 +2.312856000E3,4.274835909E1 +2.313074000E3,4.355953935E1 +2.313375000E3,5.377727845E1 +2.313611000E3,5.435235813E1 +2.313893000E3,5.477010993E1 +2.314137000E3,5.142421895E1 +2.314483000E3,4.794670725E1 +2.314780000E3,5.149445419E1 +2.315019000E3,5.127618051E1 +2.315306000E3,4.939341348E1 +2.315533000E3,4.928824788E1 +2.315832000E3,4.617335031E1 +2.316069000E3,3.696469062E1 +2.316377000E3,4.552948924E1 +2.316627000E3,4.672923062E1 +2.316913000E3,4.504192742E1 +2.317215000E3,4.364234368E1 +2.317558000E3,4.231291453E1 +2.317853000E3,4.886663905E1 +2.318118000E3,4.492895691E1 +2.318412000E3,4.464681620E1 +2.318711000E3,4.698360224E1 +2.318950000E3,4.454369095E1 +2.319250000E3,4.409609939E1 +2.319494000E3,4.283121809E1 +2.319793000E3,4.398770219E1 +2.320040000E3,4.728522548E1 +2.320336000E3,4.533798443E1 +2.320660000E3,4.548359371E1 +2.320908000E3,4.366718291E1 +2.321152000E3,5.139935964E1 +2.321408000E3,4.747980864E1 +2.321709000E3,3.867643032E1 +2.321952000E3,4.294445900E1 +2.322196000E3,4.336333736E1 +2.322445000E3,3.890531131E1 +2.322682000E3,4.087281677E1 +2.322980000E3,3.979668464E1 +2.323225000E3,4.157042707E1 +2.323553000E3,4.515881082E1 +2.323886000E3,3.868360739E1 +2.324184000E3,4.839319184E1 +2.324428000E3,4.298284223E1 +2.324669000E3,4.433761346E1 +2.324987000E3,4.011512195E1 +2.325233000E3,3.478551365E1 +2.325486000E3,4.180203002E1 +2.325789000E3,4.323726184E1 +2.326086000E3,3.985791110E1 +2.326333000E3,3.946244529E1 +2.326667000E3,4.066537977E1 +2.326925000E3,3.986903649E1 +2.327223000E3,4.142461274E1 +2.327521000E3,3.461788217E1 +2.327778000E3,3.326602717E1 +2.328102000E3,4.357074645E1 +2.328367000E3,5.496493564E1 +2.328618000E3,4.413482695E1 +2.328920000E3,4.170999616E1 +2.329183000E3,4.107694173E1 +2.329486000E3,5.342371220E1 +2.329729000E3,5.103134188E1 +2.330028000E3,4.716459977E1 +2.330382000E3,4.916498276E1 +2.330642000E3,4.801561309E1 +2.330930000E3,4.860033329E1 +2.331211000E3,5.037441690E1 +2.331463000E3,5.227972551E1 +2.331719000E3,4.516533742E1 +2.331971000E3,4.623606604E1 +2.332268000E3,3.207985320E1 +2.332513000E3,3.485208029E1 +2.332801000E3,4.367306984E1 +2.333109000E3,4.764897626E1 +2.333397000E3,4.844411921E1 +2.333779000E3,4.624834459E1 +2.334088000E3,4.492130047E1 +2.334331000E3,4.172849812E1 +2.334618000E3,4.243441154E1 +2.334859000E3,4.155300890E1 +2.335165000E3,3.508017133E1 +2.335414000E3,3.102497597E1 +2.335689000E3,3.346102792E1 +2.335938000E3,2.980210924E1 +2.336237000E3,2.815695425E1 +2.336480000E3,4.530841757E1 +2.336824000E3,4.476742737E1 +2.337075000E3,4.460293889E1 +2.337332000E3,5.054872999E1 +2.337583000E3,4.962100100E1 +2.337845000E3,5.224787063E1 +2.338132000E3,4.845338775E1 +2.338374000E3,4.675501048E1 +2.338651000E3,4.806540095E1 +2.338903000E3,4.707869991E1 +2.339145000E3,4.747595477E1 +2.339395000E3,3.449909829E1 +2.339700000E3,4.619360178E1 +2.340033000E3,4.785644508E1 +2.340329000E3,4.721347586E1 +2.340579000E3,4.302992844E1 +2.340828000E3,4.629706327E1 +2.341122000E3,4.550319757E1 +2.341368000E3,4.510038554E1 +2.341611000E3,4.752886315E1 +2.341876000E3,4.524122211E1 +2.342135000E3,2.990386366E1 +2.342396000E3,3.647672774E1 +2.342679000E3,2.854891758E1 +2.342936000E3,3.995722191E1 +2.343310000E3,4.501906630E1 +2.343555000E3,4.872212276E1 +2.343839000E3,4.566863325E1 +2.344134000E3,3.946814595E1 +2.344384000E3,4.796193013E1 +2.344656000E3,4.858552009E1 +2.344961000E3,4.902627763E1 +2.345257000E3,4.467711671E1 +2.345498000E3,3.756709071E1 +2.345764000E3,2.964206509E1 +2.346064000E3,4.283044167E1 +2.346415000E3,4.191014925E1 +2.346743000E3,4.910031818E1 +2.347021000E3,5.022624274E1 +2.347337000E3,5.257970130E1 +2.347586000E3,4.764257555E1 +2.347831000E3,4.353349182E1 +2.348126000E3,4.318604201E1 +2.348436000E3,4.825752031E1 +2.348710000E3,4.464987037E1 +2.348968000E3,4.690302679E1 +2.349225000E3,4.464063657E1 +2.349495000E3,5.114524492E1 +2.349740000E3,4.345049547E1 +2.350133000E3,4.655800825E1 +2.350382000E3,4.419356370E1 +2.350688000E3,4.308388818E1 +2.350960000E3,4.964188075E1 +2.351269000E3,5.137042419E1 +2.351542000E3,4.751708919E1 +2.351836000E3,3.239228651E1 +2.352067000E3,3.331178705E1 +2.352357000E3,4.628654550E1 +2.352625000E3,4.653844798E1 +2.352938000E3,4.419734850E1 +2.353231000E3,3.771763539E1 +2.353458000E3,3.489550836E1 +2.353713000E3,2.965581776E1 +2.353962000E3,3.457100474E1 +2.354201000E3,3.291595658E1 +2.354446000E3,2.791603976E1 +2.354711000E3,3.307930362E1 +2.355027000E3,5.311162000E1 +2.355290000E3,4.688373373E1 +2.355581000E3,3.663543876E1 +2.355868000E3,2.834403560E1 +2.356176000E3,5.001680718E1 +2.356518000E3,5.349221251E1 +2.356780000E3,5.234097025E1 +2.357043000E3,4.476475434E1 +2.357349000E3,5.160193390E1 +2.357584000E3,4.375385010E1 +2.357840000E3,3.709166207E1 +2.358125000E3,2.927191182E1 +2.358378000E3,4.114289062E1 +2.358676000E3,4.266518399E1 +2.358921000E3,4.641380631E1 +2.359210000E3,4.551221179E1 +2.359545000E3,4.099683883E1 +2.359801000E3,5.202602500E1 +2.360072000E3,5.207875379E1 +2.360343000E3,4.670310433E1 +2.360619000E3,4.619168123E1 +2.360865000E3,4.348453495E1 +2.361113000E3,4.603882932E1 +2.361353000E3,4.061885274E1 +2.361649000E3,4.873355826E1 +2.361884000E3,4.796347566E1 +2.362174000E3,4.419543811E1 +2.362420000E3,4.412529768E1 +2.362674000E3,4.315515456E1 +2.363006000E3,3.718353950E1 +2.363303000E3,4.131746877E1 +2.363556000E3,3.462830696E1 +2.363825000E3,3.224809166E1 +2.364105000E3,2.946532539E1 +2.364420000E3,4.082560353E1 +2.364671000E3,4.169760242E1 +2.364916000E3,4.728483165E1 +2.365158000E3,4.384961396E1 +2.365493000E3,3.327447630E1 +2.365797000E3,2.406470586E1 +2.366141000E3,2.410271882E1 +2.366422000E3,4.124818432E1 +2.366699000E3,4.300386829E1 +2.366994000E3,4.592409288E1 +2.367239000E3,4.402074721E1 +2.367492000E3,4.331525310E1 +2.367744000E3,4.351543939E1 +2.368045000E3,4.861325913E1 +2.368277000E3,4.345520025E1 +2.368543000E3,5.037549285E1 +2.368790000E3,3.455268589E1 +2.369034000E3,3.454484220E1 +2.369300000E3,3.436570372E1 +2.369544000E3,3.180799867E1 +2.369820000E3,4.460893996E1 +2.370091000E3,5.635981603E1 +2.370383000E3,4.932803438E1 +2.370635000E3,5.123791361E1 +2.370939000E3,4.749913119E1 +2.371193000E3,4.606624254E1 +2.371498000E3,4.453668838E1 +2.371779000E3,4.424564317E1 +2.372081000E3,5.022357768E1 +2.372347000E3,4.983363592E1 +2.372720000E3,4.311987242E1 +2.372969000E3,4.071927446E1 +2.373234000E3,3.624584431E1 +2.373535000E3,3.338407859E1 +2.373777000E3,2.744030282E1 +2.374025000E3,4.017686066E1 +2.374281000E3,4.153799732E1 +2.374537000E3,5.163713220E1 +2.374786000E3,4.970373114E1 +2.375033000E3,4.601563593E1 +2.375284000E3,4.943210146E1 +2.375577000E3,5.208741018E1 +2.375935000E3,4.780129348E1 +2.376167000E3,4.632707744E1 +2.376478000E3,5.008962536E1 +2.376734000E3,4.691729314E1 +2.376987000E3,4.593220796E1 +2.377250000E3,4.703621615E1 +2.377550000E3,4.863501898E1 +2.377838000E3,4.747349412E1 +2.378102000E3,4.430216971E1 +2.378373000E3,5.038477253E1 +2.378648000E3,4.679597376E1 +2.378873000E3,3.998762784E1 +2.379232000E3,4.140472709E1 +2.379480000E3,3.803559367E1 +2.379735000E3,4.292956565E1 +2.379993000E3,3.275484639E1 +2.380260000E3,3.159298587E1 +2.380513000E3,3.066195183E1 +2.380756000E3,4.846258942E1 +2.381012000E3,4.617374426E1 +2.381278000E3,4.338282331E1 +2.381580000E3,2.990070560E1 +2.381878000E3,3.384826320E1 +2.382127000E3,4.352773294E1 +2.382476000E3,3.711143795E1 +2.382756000E3,4.818117865E1 +2.383001000E3,4.694356023E1 +2.383312000E3,4.713242320E1 +2.383556000E3,4.945634369E1 +2.383815000E3,3.710449888E1 +2.384109000E3,4.990714727E1 +2.384350000E3,5.101970483E1 +2.384663000E3,4.290224010E1 +2.384917000E3,3.958873166E1 +2.385203000E3,4.207919898E1 +2.385583000E3,3.937588823E1 +2.385864000E3,3.927490117E1 +2.386122000E3,3.708577985E1 +2.386378000E3,3.104425869E1 +2.386630000E3,2.579918418E1 +2.386935000E3,4.201717352E1 +2.387186000E3,4.469788103E1 +2.387445000E3,3.928301867E1 +2.387699000E3,4.425054811E1 +2.387999000E3,2.901032620E1 +2.388242000E3,2.431535493E1 +2.388542000E3,4.330806788E1 +2.388866000E3,4.587852948E1 +2.389138000E3,5.068663336E1 +2.389420000E3,5.151872270E1 +2.389764000E3,4.501157372E1 +2.390012000E3,4.508008781E1 +2.390288000E3,4.471818734E1 +2.390546000E3,4.453717168E1 +2.390828000E3,3.435610332E1 +2.391113000E3,3.644941891E1 +2.391398000E3,3.741409627E1 +2.391658000E3,4.311052254E1 +2.391963000E3,3.924877335E1 +2.392296000E3,3.956869731E1 +2.392537000E3,3.230149795E1 +2.392786000E3,2.941450360E1 +2.393103000E3,3.366208400E1 +2.393349000E3,2.633153711E1 +2.393653000E3,2.492589605E1 +2.393892000E3,3.518582310E1 +2.394201000E3,3.668564238E1 +2.394454000E3,3.528359554E1 +2.394744000E3,3.673717548E1 +2.395034000E3,2.851979476E1 +2.395378000E3,2.558396774E1 +2.395660000E3,3.919896752E1 +2.395930000E3,3.339597104E1 +2.396187000E3,3.351358057E1 +2.396431000E3,3.743420456E1 +2.396691000E3,4.220523227E1 +2.396991000E3,3.500233403E1 +2.397251000E3,3.475187142E1 +2.397513000E3,3.604068947E1 +2.397821000E3,4.628512725E1 +2.398126000E3,4.463943287E1 +2.398428000E3,4.311458163E1 +2.398781000E3,4.375329409E1 +2.399076000E3,3.749705009E1 +2.399316000E3,4.116349149E1 +2.399615000E3,4.694603167E1 +2.399852000E3,5.327851923E1 +2.400143000E3,5.028800274E1 +2.400380000E3,5.055607260E1 +2.400618000E3,4.184216649E1 +2.400901000E3,4.280576865E1 +2.401144000E3,4.285187037E1 +2.401437000E3,5.414729311E1 +2.401684000E3,5.760726428E1 +2.402102000E3,5.135939721E1 +2.402349000E3,5.519633184E1 +2.402608000E3,5.937895156E1 +2.402853000E3,5.722678447E1 +2.403146000E3,5.316891996E1 +2.403388000E3,5.231876976E1 +2.403684000E3,4.275047946E1 +2.403921000E3,4.497010821E1 +2.404216000E3,5.935375427E1 +2.404454000E3,5.736369919E1 +2.404707000E3,5.877823139E1 +2.404971000E3,6.138635894E1 +2.405219000E3,5.726046839E1 +2.405473000E3,5.213953550E1 +2.405771000E3,4.831408459E1 +2.406024000E3,5.195614478E1 +2.406276000E3,4.885485021E1 +2.406567000E3,4.806131720E1 +2.406866000E3,3.817379603E1 +2.407129000E3,3.496803230E1 +2.407401000E3,4.679161915E1 +2.407625000E3,4.456362030E1 +2.407878000E3,4.499112684E1 +2.408171000E3,4.695848411E1 +2.408491000E3,4.136053284E1 +2.408771000E3,3.435960184E1 +2.409033000E3,2.907775515E1 +2.409287000E3,3.179102298E1 +2.409536000E3,2.535492331E1 +2.409797000E3,2.893863695E1 +2.410015000E3,3.195695462E1 +2.410232000E3,2.883661354E1 +2.410481000E3,4.380812340E1 +2.410735000E3,5.435187737E1 +2.411017000E3,4.390478627E1 +2.411330000E3,4.136550501E1 +2.411572000E3,6.231552653E1 +2.411823000E3,4.988484474E1 +2.412072000E3,4.569499772E1 +2.412339000E3,5.207639469E1 +2.412605000E3,5.314724412E1 +2.412842000E3,5.014855129E1 +2.413111000E3,4.925815950E1 +2.413332000E3,5.545199009E1 +2.413608000E3,4.910878211E1 +2.413873000E3,5.481296501E1 +2.414229000E3,4.620355557E1 +2.414532000E3,4.757632406E1 +2.414792000E3,4.414835702E1 +2.415033000E3,4.178334533E1 +2.415296000E3,3.571558610E1 +2.415577000E3,3.622280285E1 +2.415839000E3,4.187963398E1 +2.416103000E3,4.120303067E1 +2.416426000E3,5.043875316E1 +2.416696000E3,4.738536839E1 +2.417006000E3,4.790698669E1 +2.417250000E3,4.717323409E1 +2.417613000E3,4.889624394E1 +2.417923000E3,4.615999302E1 +2.418209000E3,4.554232436E1 +2.418487000E3,4.963147342E1 +2.418748000E3,4.540077281E1 +2.419058000E3,4.402622058E1 +2.419355000E3,3.991430025E1 +2.419631000E3,5.699106589E1 +2.419880000E3,4.542610605E1 +2.420140000E3,5.871400849E1 +2.420387000E3,5.593691155E1 +2.420634000E3,5.642590944E1 +2.420987000E3,4.942882304E1 +2.421235000E3,5.122637091E1 +2.421504000E3,5.506353313E1 +2.421808000E3,4.974630362E1 +2.422098000E3,4.922446567E1 +2.422401000E3,4.711891494E1 +2.422653000E3,4.935851062E1 +2.422946000E3,5.223840607E1 +2.423180000E3,5.181747333E1 +2.423433000E3,5.106095739E1 +2.423699000E3,4.283067128E1 +2.424023000E3,4.620110870E1 +2.424283000E3,4.813646184E1 +2.424556000E3,4.673905704E1 +2.424833000E3,5.139038068E1 +2.425085000E3,4.187355918E1 +2.425330000E3,4.200690239E1 +2.425641000E3,4.094986905E1 +2.425891000E3,3.869951887E1 +2.426156000E3,4.295178440E1 +2.426411000E3,4.445235603E1 +2.426673000E3,4.180705342E1 +2.426915000E3,4.159918394E1 +2.427275000E3,5.193727105E1 +2.427528000E3,4.985744468E1 +2.427773000E3,5.143594155E1 +2.428021000E3,5.687627643E1 +2.428258000E3,4.984177159E1 +2.428554000E3,4.104898524E1 +2.428794000E3,3.740238657E1 +2.429102000E3,4.424577609E1 +2.429345000E3,5.022623751E1 +2.429627000E3,5.346928374E1 +2.429864000E3,4.448852620E1 +2.430156000E3,3.611387858E1 +2.430475000E3,3.592739777E1 +2.430726000E3,3.269867125E1 +2.431039000E3,4.089980433E1 +2.431331000E3,3.752068977E1 +2.431567000E3,3.972155082E1 +2.431870000E3,4.098289208E1 +2.432107000E3,4.068605974E1 +2.432406000E3,3.978950334E1 +2.432643000E3,3.435438837E1 +2.432933000E3,3.806187937E1 +2.433169000E3,3.613809925E1 +2.433407000E3,5.573542624E1 +2.433734000E3,4.812688919E1 +2.434035000E3,5.332611421E1 +2.434315000E3,5.453475878E1 +2.434557000E3,5.156731049E1 +2.434849000E3,4.452924889E1 +2.435086000E3,4.091217005E1 +2.435380000E3,3.495963916E1 +2.435633000E3,3.994418328E1 +2.435904000E3,5.345258512E1 +2.436200000E3,4.573029424E1 +2.436434000E3,4.666848361E1 +2.436802000E3,4.148612785E1 +2.437044000E3,3.785277445E1 +2.437301000E3,3.823545546E1 +2.437549000E3,3.883632471E1 +2.437839000E3,4.756553033E1 +2.438077000E3,4.282797221E1 +2.438369000E3,5.291874167E1 +2.438606000E3,5.394671897E1 +2.438862000E3,5.490926284E1 +2.439159000E3,5.465277565E1 +2.439395000E3,5.245345229E1 +2.439637000E3,4.823915254E1 +2.440022000E3,5.658050668E1 +2.440281000E3,5.255468157E1 +2.440546000E3,4.365897331E1 +2.440828000E3,4.187636724E1 +2.441125000E3,4.916172461E1 +2.441365000E3,5.038635874E1 +2.441645000E3,5.238005511E1 +2.441868000E3,4.979548238E1 +2.442114000E3,5.164563876E1 +2.442410000E3,4.795862612E1 +2.442694000E3,4.406311297E1 +2.442980000E3,4.461066687E1 +2.443265000E3,3.990213588E1 +2.443525000E3,4.270339676E1 +2.443815000E3,4.671533321E1 +2.444064000E3,4.922681237E1 +2.444311000E3,5.115751882E1 +2.444605000E3,4.659279655E1 +2.444851000E3,4.805254743E1 +2.445152000E3,4.646584218E1 +2.445447000E3,3.924248597E1 +2.445698000E3,3.657018775E1 +2.445976000E3,3.978585816E1 +2.446317000E3,5.134473527E1 +2.446569000E3,4.872028256E1 +2.446851000E3,4.793203365E1 +2.447088000E3,4.917648823E1 +2.447345000E3,4.514648035E1 +2.447599000E3,4.827609085E1 +2.447864000E3,5.009329877E1 +2.448138000E3,4.858127151E1 +2.448430000E3,4.885678900E1 +2.448726000E3,4.038666943E1 +2.448956000E3,3.788824065E1 +2.449214000E3,4.872306097E1 +2.449516000E3,5.112419798E1 +2.449767000E3,4.394357347E1 +2.450028000E3,5.187358067E1 +2.450298000E3,4.764520743E1 +2.450575000E3,5.323515688E1 +2.450844000E3,4.730661272E1 +2.451150000E3,5.022143967E1 +2.451400000E3,4.244080150E1 +2.451697000E3,4.540622562E1 +2.452002000E3,4.987171470E1 +2.452273000E3,4.928771096E1 +2.452519000E3,4.415614577E1 +2.452847000E3,4.529816891E1 +2.453138000E3,3.130480949E1 +2.453407000E3,3.727195618E1 +2.453707000E3,4.218798188E1 +2.453975000E3,3.196426842E1 +2.454240000E3,2.986758668E1 +2.454534000E3,4.365366219E1 +2.454795000E3,4.363233606E1 +2.455054000E3,4.576258560E1 +2.455297000E3,4.600510844E1 +2.455546000E3,5.143992334E1 +2.455816000E3,4.451792491E1 +2.456172000E3,3.834658463E1 +2.456438000E3,4.961865906E1 +2.456716000E3,4.301133302E1 +2.457025000E3,5.185950840E1 +2.457284000E3,4.578127088E1 +2.457582000E3,4.860789001E1 +2.457857000E3,4.548301241E1 +2.458087000E3,5.726595471E1 +2.458343000E3,4.581143143E1 +2.458590000E3,4.593076535E1 +2.458898000E3,4.646845677E1 +2.459143000E3,4.385664195E1 +2.459499000E3,3.921291428E1 +2.459756000E3,4.336490005E1 +2.460079000E3,5.059416731E1 +2.460323000E3,5.383728406E1 +2.460609000E3,4.336002656E1 +2.460894000E3,3.810358455E1 +2.461148000E3,4.341384577E1 +2.461406000E3,4.240002850E1 +2.461668000E3,4.220171306E1 +2.461957000E3,4.165441002E1 +2.462218000E3,4.110791112E1 +2.462543000E3,3.718059239E1 +2.462873000E3,4.490190793E1 +2.463162000E3,4.449127269E1 +2.463461000E3,5.110192526E1 +2.463709000E3,4.670759724E1 +2.464024000E3,4.554197086E1 +2.464345000E3,4.295638115E1 +2.464598000E3,4.260186095E1 +2.464844000E3,3.838281454E1 +2.465094000E3,4.864552318E1 +2.465348000E3,4.722694913E1 +2.465597000E3,5.723123112E1 +2.465970000E3,5.678247819E1 +2.466226000E3,5.304857482E1 +2.466490000E3,5.799491543E1 +2.466745000E3,5.566332539E1 +2.467000000E3,5.532803606E1 +2.467301000E3,5.480406224E1 +2.467518000E3,5.281426808E1 +2.467773000E3,5.319750336E1 +2.468030000E3,4.504180471E1 +2.468309000E3,4.011552860E1 +2.468536000E3,3.286668959E1 +2.468782000E3,5.187437917E1 +2.469159000E3,5.342027818E1 +2.469405000E3,4.655027014E1 +2.469685000E3,4.875434900E1 +2.469968000E3,4.400777727E1 +2.470228000E3,4.944370484E1 +2.470524000E3,4.819898526E1 +2.470826000E3,4.906267157E1 +2.471101000E3,4.559683511E1 +2.471407000E3,5.066052597E1 +2.471662000E3,5.052511938E1 +2.471933000E3,4.854316053E1 +2.472243000E3,4.720397127E1 +2.472513000E3,4.539713693E1 +2.472765000E3,4.504800702E1 +2.473077000E3,4.756996091E1 +2.473381000E3,4.502772911E1 +2.473668000E3,4.844141365E1 +2.473909000E3,4.718772198E1 +2.474176000E3,5.036014826E1 +2.474415000E3,4.734822430E1 +2.474659000E3,4.506554867E1 +2.474941000E3,4.590585801E1 +2.475227000E3,4.808550728E1 +2.475549000E3,4.744751902E1 +2.475816000E3,5.139502060E1 +2.476110000E3,4.565542501E1 +2.476367000E3,4.502651441E1 +2.476614000E3,4.529198411E1 +2.476876000E3,4.841642572E1 +2.477138000E3,4.904966766E1 +2.477430000E3,5.061185879E1 +2.477703000E3,4.805167318E1 +2.477973000E3,4.840268940E1 +2.478233000E3,4.609690512E1 +2.478491000E3,5.080806253E1 +2.478854000E3,4.929079330E1 +2.479112000E3,4.887431247E1 +2.479382000E3,4.582116343E1 +2.479677000E3,4.614295426E1 +2.479939000E3,5.004731017E1 +2.480247000E3,5.118895049E1 +2.480496000E3,4.750144805E1 +2.480785000E3,4.691637905E1 +2.481084000E3,4.575243018E1 +2.481328000E3,4.498034363E1 +2.481622000E3,5.049144453E1 +2.481951000E3,4.811617152E1 +2.482214000E3,4.600387593E1 +2.482494000E3,5.163944801E1 +2.482753000E3,4.933311419E1 +2.482991000E3,4.946534766E1 +2.483244000E3,4.580757204E1 +2.483487000E3,4.797573247E1 +2.483734000E3,4.560844100E1 +2.483990000E3,5.039329574E1 +2.484313000E3,5.052905321E1 +2.484577000E3,5.131938081E1 +2.484833000E3,4.901245069E1 +2.485113000E3,5.233648083E1 +2.485461000E3,5.215489758E1 +2.485749000E3,5.451606287E1 +2.486018000E3,5.043201098E1 +2.486334000E3,5.091085093E1 +2.486650000E3,4.972266732E1 +2.486916000E3,4.846864702E1 +2.487167000E3,4.843730663E1 +2.487412000E3,5.285205631E1 +2.487677000E3,5.695937588E1 +2.487965000E3,5.067248408E1 +2.488216000E3,4.955689254E1 +2.488580000E3,4.789771891E1 +2.488828000E3,4.640186686E1 +2.489150000E3,4.956289338E1 +2.489428000E3,4.916705799E1 +2.489718000E3,4.250319869E1 +2.489959000E3,4.211788948E1 +2.490259000E3,4.711467977E1 +2.490508000E3,5.336087879E1 +2.490805000E3,5.163346506E1 +2.491066000E3,5.303328317E1 +2.491377000E3,5.018594076E1 +2.491684000E3,4.569780009E1 +2.492029000E3,4.677168871E1 +2.492273000E3,4.586755987E1 +2.492522000E3,5.020047651E1 +2.492768000E3,4.585538278E1 +2.493006000E3,5.027464230E1 +2.493315000E3,4.719632652E1 +2.493608000E3,4.892998103E1 +2.493874000E3,4.659859577E1 +2.494131000E3,4.485377967E1 +2.494387000E3,4.661063763E1 +2.494635000E3,4.873112034E1 +2.494904000E3,5.011233058E1 +2.495259000E3,4.996207620E1 +2.495523000E3,5.026371938E1 +2.495789000E3,4.897334151E1 +2.496086000E3,4.919412247E1 +2.496330000E3,4.448238049E1 +2.496598000E3,5.779881243E1 +2.496845000E3,5.068443192E1 +2.497079000E3,5.452206946E1 +2.497328000E3,6.091811093E1 +2.497574000E3,5.545025588E1 +2.497819000E3,5.118451852E1 +2.498124000E3,5.647063434E1 +2.498436000E3,5.942897676E1 +2.498681000E3,6.063927987E1 +2.498932000E3,5.256584857E1 +2.499203000E3,5.942844343E1 +2.499465000E3,5.268198933E1 +2.499726000E3,5.561310022E1 +2.499989000E3,5.551348586E1 +2.500270000E3,5.728700965E1 +2.500550000E3,5.848024533E1 +2.500856000E3,5.545551244E1 +2.501156000E3,7.074712648E1 +2.501405000E3,6.649397556E1 +2.501727000E3,6.577106108E1 +2.501964000E3,5.791155905E1 +2.502223000E3,6.571272960E1 +2.502476000E3,5.223691777E1 +2.502731000E3,5.099379006E1 +2.502989000E3,4.996024440E1 +2.503265000E3,4.587573023E1 +2.503515000E3,6.660646739E1 +2.503792000E3,5.426812996E1 +2.504090000E3,4.221263073E1 +2.504348000E3,3.961359220E1 +2.504607000E3,3.317448387E1 +2.504957000E3,2.765634596E1 +2.505202000E3,5.260508289E1 +2.505444000E3,4.970766119E1 +2.505723000E3,5.961421356E1 +2.506010000E3,5.761735716E1 +2.506316000E3,4.386011183E1 +2.506629000E3,3.297646158E1 +2.506928000E3,3.461351567E1 +2.507171000E3,3.422494413E1 +2.507415000E3,3.898815557E1 +2.507661000E3,3.916714623E1 +2.507958000E3,4.409544564E1 +2.508199000E3,4.040812578E1 +2.508495000E3,4.100804729E1 +2.508767000E3,4.155083379E1 +2.509073000E3,4.256659126E1 +2.509346000E3,4.665111645E1 +2.509615000E3,4.785704834E1 +2.509926000E3,4.957995318E1 +2.510246000E3,5.281308228E1 +2.510533000E3,5.716195403E1 +2.510847000E3,5.384222007E1 +2.511087000E3,4.682850643E1 +2.511483000E3,5.585229854E1 +2.511769000E3,5.797880255E1 +2.512061000E3,5.008051045E1 +2.512305000E3,4.616221083E1 +2.512545000E3,5.837834308E1 +2.512782000E3,4.588894556E1 +2.513082000E3,5.827978204E1 +2.513321000E3,5.321307958E1 +2.513625000E3,5.419914666E1 +2.513860000E3,4.249936315E1 +2.514160000E3,5.093700871E1 +2.514505000E3,4.733309734E1 +2.514807000E3,5.739188753E1 +2.515049000E3,5.684870925E1 +2.515326000E3,5.429714525E1 +2.515551000E3,5.304528611E1 +2.515847000E3,6.048302750E1 +2.516097000E3,5.298092655E1 +2.516397000E3,5.664346713E1 +2.516634000E3,5.062362510E1 +2.516910000E3,5.059011404E1 +2.517165000E3,5.074931344E1 +2.517424000E3,5.193937267E1 +2.517672000E3,4.773080825E1 +2.517933000E3,4.886471101E1 +2.518191000E3,4.258084657E1 +2.518440000E3,4.144243799E1 +2.518697000E3,3.266068365E1 +2.518962000E3,3.662092465E1 +2.519211000E3,4.002326553E1 +2.519469000E3,5.193824268E1 +2.519821000E3,5.548381163E1 +2.520087000E3,5.245445808E1 +2.520336000E3,4.447536752E1 +2.520718000E3,5.931091731E1 +2.521010000E3,5.514928156E1 +2.521305000E3,5.194242569E1 +2.521541000E3,5.632439964E1 +2.521781000E3,4.768714929E1 +2.522074000E3,3.967116686E1 +2.522306000E3,3.457523914E1 +2.522554000E3,3.414939493E1 +2.522808000E3,3.034285017E1 +2.523103000E3,3.725639399E1 +2.523347000E3,5.824523011E1 +2.523645000E3,5.697741808E1 +2.524002000E3,5.995361389E1 +2.524244000E3,5.516819042E1 +2.524491000E3,5.520201782E1 +2.524765000E3,4.576677797E1 +2.524988000E3,5.785527848E1 +2.525299000E3,5.093237528E1 +2.525544000E3,4.090627494E1 +2.525822000E3,3.111750175E1 +2.526056000E3,2.764971736E1 +2.526311000E3,2.852524033E1 +2.526617000E3,3.508264660E1 +2.526905000E3,5.067917717E1 +2.527241000E3,4.646824007E1 +2.527487000E3,3.686495987E1 +2.527738000E3,3.822220480E1 +2.527988000E3,3.764348220E1 +2.528232000E3,4.278450517E1 +2.528563000E3,4.881983602E1 +2.528870000E3,4.048435148E1 +2.529125000E3,4.047282835E1 +2.529398000E3,4.602715630E1 +2.529632000E3,4.358719476E1 +2.529925000E3,4.185499728E1 +2.530224000E3,4.428160693E1 +2.530451000E3,5.370094630E1 +2.530771000E3,4.662369716E1 +2.531057000E3,4.486368653E1 +2.531322000E3,3.985753269E1 +2.531579000E3,3.868983993E1 +2.531842000E3,4.397673982E1 +2.532129000E3,4.465178920E1 +2.532379000E3,4.071629694E1 +2.532681000E3,3.700154265E1 +2.532925000E3,3.709745900E1 +2.533169000E3,3.856350220E1 +2.533454000E3,3.780017804E1 +2.533739000E3,4.079153270E1 +2.534053000E3,3.467337947E1 +2.534304000E3,3.872357849E1 +2.534571000E3,4.188092371E1 +2.534878000E3,4.226520735E1 +2.535180000E3,4.433351029E1 +2.535433000E3,4.196124368E1 +2.535679000E3,4.159710638E1 +2.535934000E3,4.131920574E1 +2.536230000E3,4.013333591E1 +2.536496000E3,3.861252617E1 +2.536812000E3,3.205810696E1 +2.537071000E3,3.900017908E1 +2.537321000E3,3.720890888E1 +2.537589000E3,3.571752088E1 +2.537899000E3,3.466875388E1 +2.538158000E3,3.490809444E1 +2.538414000E3,2.846246396E1 +2.538721000E3,3.471466025E1 +2.539000000E3,3.262267006E1 +2.539250000E3,2.900340615E1 +2.539526000E3,2.962734770E1 +2.539843000E3,4.051335289E1 +2.540219000E3,3.732414883E1 +2.540478000E3,3.212776280E1 +2.540731000E3,3.980002135E1 +2.541002000E3,4.402529692E1 +2.541305000E3,3.531142487E1 +2.541570000E3,4.157255463E1 +2.541892000E3,4.121686373E1 +2.542138000E3,3.512055425E1 +2.542435000E3,3.058422839E1 +2.542704000E3,3.860796470E1 +2.542951000E3,4.158955283E1 +2.543254000E3,4.126835549E1 +2.543598000E3,4.557459954E1 +2.543842000E3,4.195620726E1 +2.544088000E3,4.759905541E1 +2.544347000E3,4.089593512E1 +2.544592000E3,4.224934090E1 +2.544840000E3,3.548720999E1 +2.545141000E3,4.189266277E1 +2.545422000E3,4.058854606E1 +2.545652000E3,3.761551365E1 +2.545897000E3,3.643024250E1 +2.546173000E3,3.544845567E1 +2.546439000E3,3.816851754E1 +2.546779000E3,3.801212128E1 +2.547110000E3,3.288266257E1 +2.547379000E3,4.063952307E1 +2.547641000E3,4.765684387E1 +2.547893000E3,4.402640436E1 +2.548143000E3,4.172886183E1 +2.548441000E3,3.808222191E1 +2.548685000E3,3.637035664E1 +2.548962000E3,3.879815953E1 +2.549230000E3,5.433785228E1 +2.549540000E3,5.428002325E1 +2.549852000E3,5.430864003E1 +2.550121000E3,5.376325395E1 +2.550389000E3,5.250586376E1 +2.550641000E3,5.329413218E1 +2.550946000E3,3.817927317E1 +2.551218000E3,3.779289824E1 +2.551493000E3,4.904361964E1 +2.551759000E3,5.500168111E1 +2.552006000E3,4.745774118E1 +2.552261000E3,5.304049624E1 +2.552515000E3,4.933664563E1 +2.552779000E3,3.482983031E1 +2.553043000E3,3.914561037E1 +2.553378000E3,3.318943686E1 +2.553659000E3,2.674748735E1 +2.553917000E3,2.500565902E1 +2.554234000E3,3.331261434E1 +2.554489000E3,3.380079275E1 +2.554753000E3,3.632095841E1 +2.554996000E3,3.606888467E1 +2.555239000E3,4.759559903E1 +2.555541000E3,5.588542149E1 +2.555837000E3,5.768171500E1 +2.556076000E3,5.837962370E1 +2.556358000E3,5.761486260E1 +2.556647000E3,5.408185929E1 +2.556914000E3,5.624815374E1 +2.557248000E3,4.727853091E1 +2.557554000E3,3.999550071E1 +2.557822000E3,4.090986684E1 +2.558062000E3,3.411171601E1 +2.558302000E3,3.042998918E1 +2.558550000E3,3.392526215E1 +2.558807000E3,3.801243567E1 +2.559082000E3,4.390440101E1 +2.559357000E3,4.215163378E1 +2.559616000E3,4.616573562E1 +2.559972000E3,4.170066459E1 +2.560245000E3,2.972551911E1 +2.560517000E3,3.987643023E1 +2.560765000E3,4.046237199E1 +2.561011000E3,4.268708813E1 +2.561258000E3,4.450541644E1 +2.561531000E3,4.611922799E1 +2.561775000E3,4.492719317E1 +2.562027000E3,4.345851098E1 +2.562302000E3,5.022295857E1 +2.562533000E3,4.986016935E1 +2.562786000E3,3.932672790E1 +2.563211000E3,3.777119812E1 +2.563479000E3,4.577537823E1 +2.563731000E3,5.443473776E1 +2.563977000E3,5.947837126E1 +2.564252000E3,5.014881480E1 +2.564539000E3,4.884415531E1 +2.564781000E3,4.451698294E1 +2.565088000E3,3.693106642E1 +2.565361000E3,3.096881298E1 +2.565624000E3,2.635486448E1 +2.565885000E3,2.734213385E1 +2.566246000E3,3.979362654E1 +2.566493000E3,3.382738554E1 +2.566797000E3,3.469438245E1 +2.567097000E3,4.097528595E1 +2.567346000E3,4.285297734E1 +2.567644000E3,4.930003444E1 +2.567891000E3,4.540271843E1 +2.568170000E3,3.109775861E1 +2.568407000E3,2.738661195E1 +2.568701000E3,3.024785153E1 +2.568952000E3,3.235217301E1 +2.569220000E3,3.196941264E1 +2.569567000E3,4.299833718E1 +2.569862000E3,4.496000509E1 +2.570178000E3,4.562225815E1 +2.570442000E3,4.437451260E1 +2.570707000E3,3.949227756E1 +2.570950000E3,2.951847370E1 +2.571202000E3,3.800151296E1 +2.571472000E3,4.650517590E1 +2.571732000E3,3.967561664E1 +2.571975000E3,3.149456620E1 +2.572246000E3,5.234083710E1 +2.572527000E3,4.544839619E1 +2.572859000E3,4.436174777E1 +2.573168000E3,4.369290756E1 +2.573429000E3,4.420543128E1 +2.573728000E3,4.389854646E1 +2.573968000E3,4.580346210E1 +2.574268000E3,4.881141748E1 +2.574509000E3,4.708023256E1 +2.574802000E3,3.388696242E1 +2.575045000E3,2.922489212E1 +2.575339000E3,3.941924125E1 +2.575597000E3,4.733040375E1 +2.575906000E3,4.790376430E1 +2.576245000E3,4.328559785E1 +2.576517000E3,4.720947277E1 +2.576791000E3,4.076260480E1 +2.577092000E3,3.249905806E1 +2.577324000E3,3.886850876E1 +2.577566000E3,3.577483806E1 +2.577814000E3,4.105002685E1 +2.578080000E3,3.881208350E1 +2.578375000E3,5.720708534E1 +2.578624000E3,4.933084675E1 +2.578932000E3,5.989261963E1 +2.579254000E3,5.193127116E1 +2.579506000E3,4.843920497E1 +2.579747000E3,4.570821188E1 +2.580001000E3,4.446748829E1 +2.580244000E3,4.006228376E1 +2.580497000E3,2.933332862E1 +2.580745000E3,4.525678604E1 +2.580989000E3,4.717489692E1 +2.581288000E3,5.239736286E1 +2.581587000E3,5.268105849E1 +2.581851000E3,4.960616241E1 +2.582112000E3,4.637217789E1 +2.582361000E3,4.676379781E1 +2.582583000E3,4.083594902E1 +2.582903000E3,2.696140701E1 +2.583176000E3,2.668057590E1 +2.583429000E3,2.900886287E1 +2.583692000E3,2.732690452E1 +2.583951000E3,3.475308428E1 +2.584205000E3,4.782860484E1 +2.584480000E3,4.928978168E1 +2.584742000E3,3.697304160E1 +2.585017000E3,3.390321432E1 +2.585248000E3,4.818778278E1 +2.585552000E3,5.175969441E1 +2.585851000E3,4.752724055E1 +2.586108000E3,5.047732228E1 +2.586408000E3,5.003267867E1 +2.586651000E3,4.995698879E1 +2.586934000E3,4.985539117E1 +2.587202000E3,4.558719065E1 +2.587455000E3,4.973387236E1 +2.587702000E3,5.190737686E1 +2.587964000E3,4.955516560E1 +2.588211000E3,5.039526507E1 +2.588461000E3,3.897042435E1 +2.588748000E3,2.919124678E1 +2.589063000E3,3.061867322E1 +2.589398000E3,4.010104895E1 +2.589690000E3,3.640442215E1 +2.589998000E3,4.479952304E1 +2.590261000E3,4.757967128E1 +2.590558000E3,4.812333533E1 +2.590802000E3,4.603482331E1 +2.591083000E3,2.960043464E1 +2.591326000E3,3.684354753E1 +2.591591000E3,4.359182452E1 +2.591849000E3,4.788602237E1 +2.592228000E3,4.468031543E1 +2.592527000E3,3.894688899E1 +2.592778000E3,2.800490026E1 +2.593035000E3,4.310888325E1 +2.593333000E3,4.628339380E1 +2.593602000E3,4.440124594E1 +2.593883000E3,4.123163794E1 +2.594160000E3,3.127645239E1 +2.594429000E3,3.071812965E1 +2.594749000E3,4.618618296E1 +2.595070000E3,5.248181749E1 +2.595312000E3,4.786265879E1 +2.595668000E3,3.990233287E1 +2.595973000E3,4.173583037E1 +2.596256000E3,3.709278400E1 +2.596497000E3,3.229385861E1 +2.596813000E3,4.380573021E1 +2.597084000E3,4.783628282E1 +2.597325000E3,5.024593568E1 +2.597578000E3,5.102379549E1 +2.597828000E3,4.760481411E1 +2.598089000E3,3.822780835E1 +2.598387000E3,3.417342767E1 +2.598736000E3,2.863579065E1 +2.598981000E3,2.886228233E1 +2.599228000E3,2.855965247E1 +2.599493000E3,3.083396855E1 +2.599764000E3,3.581659374E1 +2.600032000E3,4.317647632E1 +2.600330000E3,4.853625621E1 +2.600623000E3,5.102467342E1 +2.600867000E3,4.877836926E1 +2.601112000E3,4.705612686E1 +2.601365000E3,4.889085742E1 +2.601612000E3,4.654488136E1 +2.601956000E3,4.055024190E1 +2.602220000E3,3.990851266E1 +2.602547000E3,3.648352551E1 +2.602794000E3,5.324982942E1 +2.603078000E3,5.268965363E1 +2.603338000E3,4.851189142E1 +2.603637000E3,5.135006473E1 +2.603925000E3,4.939301404E1 +2.604238000E3,5.337101389E1 +2.604488000E3,5.022765286E1 +2.604734000E3,5.253186666E1 +2.605064000E3,4.127453431E1 +2.605321000E3,4.114070867E1 +2.605572000E3,4.042282231E1 +2.605820000E3,4.255774466E1 +2.606073000E3,4.746726668E1 +2.606319000E3,4.761848671E1 +2.606565000E3,4.983628061E1 +2.606849000E3,3.046517787E1 +2.607082000E3,3.832211131E1 +2.607339000E3,4.741131966E1 +2.607609000E3,4.453335589E1 +2.607874000E3,3.545592153E1 +2.608197000E3,4.672891376E1 +2.608451000E3,4.755881287E1 +2.608706000E3,4.827652641E1 +2.608952000E3,4.727153141E1 +2.609226000E3,4.731450942E1 +2.609537000E3,3.981385402E1 +2.609784000E3,3.194698732E1 +2.610041000E3,3.314164027E1 +2.610283000E3,2.819786732E1 +2.610546000E3,2.664547785E1 +2.610857000E3,2.913544778E1 +2.611125000E3,3.961651759E1 +2.611432000E3,3.852777426E1 +2.611666000E3,3.205673146E1 +2.611951000E3,4.233182010E1 +2.612229000E3,3.378509898E1 +2.612454000E3,4.071755552E1 +2.612730000E3,5.018278065E1 +2.613050000E3,4.100034395E1 +2.613359000E3,3.892108016E1 +2.613628000E3,5.091321799E1 +2.613871000E3,4.336916838E1 +2.614108000E3,3.960788811E1 +2.614408000E3,3.948227358E1 +2.614722000E3,3.631863435E1 +2.614975000E3,4.057042340E1 +2.615256000E3,4.414132009E1 +2.615486000E3,4.180934435E1 +2.615750000E3,4.153999936E1 +2.615997000E3,3.521796466E1 +2.616260000E3,5.443854687E1 +2.616548000E3,5.408118563E1 +2.616842000E3,4.951275264E1 +2.617090000E3,5.182722031E1 +2.617344000E3,4.327522742E1 +2.617643000E3,5.375122422E1 +2.617975000E3,5.216635190E1 +2.618233000E3,4.126006713E1 +2.618497000E3,4.980260599E1 +2.618804000E3,4.655838197E1 +2.619044000E3,4.977945459E1 +2.619327000E3,4.875559075E1 +2.619562000E3,4.983226039E1 +2.619834000E3,4.741689273E1 +2.620075000E3,4.923498746E1 +2.620352000E3,4.923432072E1 +2.620664000E3,4.040876723E1 +2.620916000E3,3.889825840E1 +2.621142000E3,5.245081579E1 +2.621448000E3,4.684934794E1 +2.621687000E3,4.583906640E1 +2.621992000E3,4.366517623E1 +2.622230000E3,3.373873872E1 +2.622475000E3,3.701694694E1 +2.622750000E3,3.544967426E1 +2.623008000E3,3.363206222E1 +2.623285000E3,4.009589135E1 +2.623562000E3,4.408709562E1 +2.623825000E3,4.800133533E1 +2.624131000E3,4.855432282E1 +2.624414000E3,4.808187444E1 +2.624671000E3,5.252566194E1 +2.624932000E3,4.890333861E1 +2.625183000E3,4.370428781E1 +2.625430000E3,3.668118979E1 +2.625747000E3,4.353955331E1 +2.626003000E3,4.224026412E1 +2.626267000E3,4.311785789E1 +2.626514000E3,3.517806855E1 +2.626763000E3,3.981966751E1 +2.627025000E3,3.444602265E1 +2.627334000E3,3.341390757E1 +2.627660000E3,3.926570124E1 +2.627920000E3,4.341089288E1 +2.628216000E3,4.081134870E1 +2.628467000E3,3.912400300E1 +2.628730000E3,3.657553946E1 +2.629000000E3,3.072838888E1 +2.629284000E3,2.929703023E1 +2.629549000E3,3.378014550E1 +2.629844000E3,4.760306323E1 +2.630080000E3,4.024322042E1 +2.630373000E3,3.235913140E1 +2.630611000E3,3.920509877E1 +2.630919000E3,5.103841717E1 +2.631222000E3,5.813980805E1 +2.631514000E3,5.190256812E1 +2.631753000E3,4.653294376E1 +2.632054000E3,4.782140153E1 +2.632295000E3,4.977458693E1 +2.632592000E3,5.371197571E1 +2.632828000E3,5.056512655E1 +2.633140000E3,5.325824914E1 +2.633383000E3,4.973751947E1 +2.633632000E3,4.853342473E1 +2.633950000E3,3.905011010E1 +2.634254000E3,3.751700759E1 +2.634549000E3,5.292771607E1 +2.634786000E3,5.557450981E1 +2.635082000E3,4.974692283E1 +2.635319000E3,5.393938197E1 +2.635611000E3,4.675981835E1 +2.635848000E3,4.299614910E1 +2.636145000E3,3.756646750E1 +2.636395000E3,3.824353200E1 +2.636648000E3,3.045317917E1 +2.636942000E3,3.257931849E1 +2.637299000E3,3.010616025E1 +2.637599000E3,4.995329379E1 +2.637834000E3,4.824584689E1 +2.638071000E3,5.059212149E1 +2.638363000E3,5.330633429E1 +2.638612000E3,5.343612136E1 +2.638897000E3,4.755550111E1 +2.639122000E3,4.119881812E1 +2.639362000E3,3.902726568E1 +2.639659000E3,4.451944661E1 +2.639896000E3,4.587471035E1 +2.640164000E3,4.115502802E1 +2.640409000E3,4.505311495E1 +2.640656000E3,4.913968689E1 +2.640951000E3,5.110923180E1 +2.641208000E3,4.281604120E1 +2.641505000E3,4.825854961E1 +2.641748000E3,4.861588211E1 +2.642059000E3,4.450542116E1 +2.642304000E3,4.274821036E1 +2.642556000E3,3.503446158E1 +2.642862000E3,4.080900103E1 +2.643164000E3,4.152079562E1 +2.643527000E3,3.935881933E1 +2.643833000E3,3.760570593E1 +2.644082000E3,3.959144469E1 +2.644327000E3,4.007918652E1 +2.644573000E3,4.288120719E1 +2.644814000E3,4.793099478E1 +2.645114000E3,4.424069452E1 +2.645391000E3,4.078427844E1 +2.645635000E3,3.902795236E1 +2.645871000E3,4.393773718E1 +2.646111000E3,4.085627764E1 +2.646355000E3,4.393316509E1 +2.646690000E3,4.428892908E1 +2.646958000E3,4.601464396E1 +2.647235000E3,4.300358696E1 +2.647474000E3,4.083829680E1 +2.647758000E3,5.406220971E1 +2.648003000E3,4.253716581E1 +2.648273000E3,4.506680000E1 +2.648514000E3,3.500046728E1 +2.648758000E3,3.537281462E1 +2.649004000E3,5.013819891E1 +2.649251000E3,5.388943830E1 +2.649556000E3,5.656370208E1 +2.649891000E3,5.696480404E1 +2.650216000E3,4.675400561E1 +2.650515000E3,4.179549274E1 +2.650777000E3,4.536624285E1 +2.651084000E3,4.297370528E1 +2.651336000E3,4.376785410E1 +2.651635000E3,3.354560746E1 +2.651881000E3,2.537939319E1 +2.652180000E3,3.168783420E1 +2.652481000E3,4.898553010E1 +2.652737000E3,5.438993966E1 +2.652992000E3,4.963834041E1 +2.653252000E3,4.227369117E1 +2.653502000E3,4.301436765E1 +2.653812000E3,3.649724292E1 +2.654061000E3,4.086211966E1 +2.654320000E3,3.223281741E1 +2.654605000E3,2.807672508E1 +2.654836000E3,2.764825285E1 +2.655100000E3,4.598866982E1 +2.655350000E3,4.383741939E1 +2.655590000E3,4.883555528E1 +2.655837000E3,4.815765811E1 +2.656131000E3,5.047261312E1 +2.656369000E3,5.124829846E1 +2.656626000E3,3.956134092E1 +2.656925000E3,3.503286763E1 +2.657200000E3,3.224209198E1 +2.657447000E3,4.294806319E1 +2.657761000E3,4.898454413E1 +2.658011000E3,5.320780356E1 +2.658286000E3,5.345186604E1 +2.658542000E3,4.849291145E1 +2.658789000E3,5.098648363E1 +2.659034000E3,4.892931203E1 +2.659289000E3,4.580698225E1 +2.659530000E3,3.709695762E1 +2.659834000E3,3.457925551E1 +2.660081000E3,3.855219813E1 +2.660383000E3,3.845534481E1 +2.660628000E3,4.619372518E1 +2.660921000E3,4.848307744E1 +2.661167000E3,4.790880967E1 +2.661464000E3,4.667520128E1 +2.661710000E3,4.098851532E1 +2.662006000E3,4.035468673E1 +2.662245000E3,3.753010710E1 +2.662592000E3,4.792080660E1 +2.662862000E3,4.709835917E1 +2.663123000E3,3.501409506E1 +2.663374000E3,3.240664296E1 +2.663631000E3,4.326696615E1 +2.663874000E3,4.411177933E1 +2.664133000E3,3.936378145E1 +2.664382000E3,3.443614227E1 +2.664648000E3,3.761654306E1 +2.664944000E3,5.164457484E1 +2.665198000E3,2.810669920E1 +2.665512000E3,2.931307063E1 +2.665876000E3,3.108643425E1 +2.666131000E3,3.278101889E1 +2.666439000E3,4.277860150E1 +2.666693000E3,4.213131936E1 +2.667002000E3,3.935849781E1 +2.667259000E3,4.137879880E1 +2.667575000E3,3.790565018E1 +2.667827000E3,3.845274836E1 +2.668153000E3,3.676763670E1 +2.668452000E3,3.751975183E1 +2.668696000E3,3.224848897E1 +2.669023000E3,3.611134142E1 +2.669316000E3,4.467495655E1 +2.669607000E3,4.735906080E1 +2.669885000E3,5.159453510E1 +2.670167000E3,5.321308782E1 +2.670485000E3,5.282242631E1 +2.670747000E3,5.127719277E1 +2.670997000E3,4.902251972E1 +2.671243000E3,4.450532678E1 +2.671540000E3,3.864078148E1 +2.671788000E3,3.720620343E1 +2.672044000E3,4.496142790E1 +2.672357000E3,4.705640535E1 +2.672617000E3,3.890316941E1 +2.672864000E3,4.027639889E1 +2.673159000E3,4.202335245E1 +2.673421000E3,4.285452583E1 +2.673720000E3,3.626679930E1 +2.673964000E3,4.670395357E1 +2.674210000E3,4.915586670E1 +2.674514000E3,5.353785994E1 +2.674811000E3,5.414016767E1 +2.675048000E3,5.591079353E1 +2.675364000E3,3.844031623E1 +2.675661000E3,3.124520008E1 +2.675946000E3,3.566755596E1 +2.676189000E3,3.490423263E1 +2.676498000E3,5.070292882E1 +2.676799000E3,5.356134163E1 +2.677047000E3,5.161634227E1 +2.677305000E3,5.185439004E1 +2.677581000E3,5.315585532E1 +2.677832000E3,4.418578879E1 +2.678087000E3,3.972693415E1 +2.678335000E3,4.338465258E1 +2.678650000E3,5.168404535E1 +2.678934000E3,4.984483773E1 +2.679249000E3,4.977401184E1 +2.679507000E3,5.044345616E1 +2.679823000E3,4.232585634E1 +2.680128000E3,3.026551109E1 +2.680400000E3,3.009656886E1 +2.680660000E3,4.894119824E1 +2.680913000E3,4.712312643E1 +2.681208000E3,4.239602863E1 +2.681477000E3,4.875338950E1 +2.681768000E3,4.887945421E1 +2.682128000E3,4.379352407E1 +2.682394000E3,4.073494394E1 +2.682637000E3,3.685872977E1 +2.682895000E3,2.883047793E1 +2.683163000E3,3.769147996E1 +2.683455000E3,3.713975885E1 +2.683749000E3,4.855681627E1 +2.683994000E3,4.936430656E1 +2.684290000E3,5.303947120E1 +2.684540000E3,5.031092673E1 +2.684833000E3,4.783130186E1 +2.685073000E3,4.898734587E1 +2.685348000E3,4.686166956E1 +2.685598000E3,4.244245178E1 +2.685917000E3,3.872119900E1 +2.686161000E3,4.891396583E1 +2.686434000E3,4.491629365E1 +2.686687000E3,3.588391777E1 +2.686952000E3,3.156965948E1 +2.687206000E3,3.184725563E1 +2.687480000E3,3.153561496E1 +2.687733000E3,3.669659228E1 +2.688049000E3,3.507922771E1 +2.688340000E3,3.251056517E1 +2.688645000E3,4.079174670E1 +2.688915000E3,4.837277005E1 +2.689163000E3,4.669136560E1 +2.689426000E3,3.659115086E1 +2.689751000E3,4.814125321E1 +2.689994000E3,4.721335081E1 +2.690235000E3,5.119773767E1 +2.690471000E3,4.584232122E1 +2.690738000E3,4.687969307E1 +2.691006000E3,4.116197132E1 +2.691312000E3,2.850019915E1 +2.691659000E3,3.175399572E1 +2.691948000E3,3.215115185E1 +2.692197000E3,2.655209633E1 +2.692466000E3,3.136629444E1 +2.692727000E3,2.928762690E1 +2.692976000E3,2.688909217E1 +2.693281000E3,3.350197248E1 +2.693518000E3,3.760267236E1 +2.693776000E3,3.194141055E1 +2.694032000E3,3.113878807E1 +2.694299000E3,2.830606211E1 +2.694602000E3,2.632227285E1 +2.694941000E3,2.736240000E1 +2.695184000E3,3.956118458E1 +2.695488000E3,4.069974415E1 +2.695732000E3,4.498590768E1 +2.696030000E3,3.370199172E1 +2.696300000E3,3.284857688E1 +2.696535000E3,2.919082343E1 +2.696815000E3,3.146626789E1 +2.697056000E3,2.968971947E1 +2.697354000E3,4.116455896E1 +2.697640000E3,5.055341773E1 +2.697888000E3,5.163434474E1 +2.698155000E3,4.792936353E1 +2.698456000E3,4.111753823E1 +2.698732000E3,4.594070701E1 +2.699031000E3,3.204472070E1 +2.699273000E3,2.836668859E1 +2.699578000E3,2.624009297E1 +2.699855000E3,2.719538340E1 +2.700110000E3,2.868563476E1 +2.700399000E3,2.757039916E1 +2.700662000E3,2.546630310E1 +2.700960000E3,2.981844134E1 +2.701310000E3,3.063471239E1 +2.701629000E3,4.014173680E1 +2.701894000E3,3.281157953E1 +2.702206000E3,4.268438101E1 +2.702448000E3,4.272045970E1 +2.702710000E3,4.782744516E1 +2.702984000E3,4.067538265E1 +2.703255000E3,3.821763448E1 +2.703566000E3,3.373237040E1 +2.703865000E3,2.762261654E1 +2.704108000E3,3.058182972E1 +2.704366000E3,4.157303269E1 +2.704695000E3,4.128988216E1 +2.705002000E3,3.725674585E1 +2.705260000E3,3.318881716E1 +2.705544000E3,3.512644750E1 +2.705774000E3,3.012622541E1 +2.706039000E3,3.307868989E1 +2.706297000E3,3.089854998E1 +2.706599000E3,2.870455364E1 +2.706901000E3,2.573473536E1 +2.707155000E3,2.708285982E1 +2.707419000E3,2.641018696E1 +2.707644000E3,2.532685142E1 +2.707945000E3,2.741320006E1 +2.708188000E3,2.764718970E1 +2.708460000E3,3.745935532E1 +2.708711000E3,4.292241509E1 +2.708955000E3,4.431523077E1 +2.709266000E3,3.812245251E1 +2.709534000E3,3.199637282E1 +2.709802000E3,3.030937111E1 +2.710049000E3,3.172341474E1 +2.710303000E3,4.706685853E1 +2.710610000E3,4.372593931E1 +2.710859000E3,4.298246415E1 +2.711196000E3,4.313732995E1 +2.711485000E3,3.646858634E1 +2.711745000E3,3.547356546E1 +2.712003000E3,4.802507202E1 +2.712259000E3,4.666185634E1 +2.712527000E3,4.298723738E1 +2.712813000E3,3.203029787E1 +2.713082000E3,2.721140687E1 +2.713344000E3,3.967881707E1 +2.713594000E3,5.017429445E1 +2.713859000E3,4.690730331E1 +2.714106000E3,4.892140969E1 +2.714475000E3,4.312346900E1 +2.714730000E3,4.926615820E1 +2.714984000E3,4.690558758E1 +2.715298000E3,3.116292546E1 +2.715563000E3,2.731472603E1 +2.715855000E3,3.029992609E1 +2.716160000E3,3.149201904E1 +2.716442000E3,2.826058660E1 +2.716703000E3,2.713282366E1 +2.716957000E3,3.659207256E1 +2.717253000E3,3.982143620E1 +2.717592000E3,4.316888996E1 +2.717851000E3,4.348787554E1 +2.718149000E3,4.336902207E1 +2.718464000E3,4.494305168E1 +2.718765000E3,4.280996114E1 +2.719042000E3,4.083199069E1 +2.719277000E3,3.924180447E1 +2.719573000E3,2.985025677E1 +2.719800000E3,2.924980764E1 +2.720042000E3,2.589394072E1 +2.720346000E3,2.996884267E1 +2.720607000E3,2.951796470E1 +2.720882000E3,2.762273017E1 +2.721181000E3,4.946261833E1 +2.721422000E3,4.848220411E1 +2.721736000E3,4.816357380E1 +2.722001000E3,5.238238407E1 +2.722305000E3,5.586118797E1 +2.722602000E3,5.474108905E1 +2.722856000E3,5.089156984E1 +2.723105000E3,4.900978141E1 +2.723369000E3,5.541376880E1 +2.723666000E3,4.827427134E1 +2.723997000E3,4.802338633E1 +2.724296000E3,3.537215093E1 +2.724548000E3,3.822637167E1 +2.724844000E3,3.388327957E1 +2.725086000E3,3.756611639E1 +2.725338000E3,4.489615211E1 +2.725635000E3,5.048833137E1 +2.725871000E3,4.298428385E1 +2.726174000E3,3.303114009E1 +2.726475000E3,4.527811220E1 +2.726764000E3,4.815487328E1 +2.727017000E3,4.761823346E1 +2.727328000E3,4.180028821E1 +2.727607000E3,4.512936944E1 +2.727849000E3,4.337880786E1 +2.728101000E3,4.031817829E1 +2.728401000E3,3.509684782E1 +2.728650000E3,4.495565250E1 +2.728895000E3,4.157595660E1 +2.729138000E3,5.008202715E1 +2.729381000E3,5.308960545E1 +2.729622000E3,4.943413955E1 +2.729917000E3,4.820467383E1 +2.730234000E3,5.168344618E1 +2.730544000E3,5.128425900E1 +2.730837000E3,5.242528085E1 +2.731075000E3,5.125548047E1 +2.731382000E3,5.027678189E1 +2.731625000E3,4.595108129E1 +2.731917000E3,5.425640288E1 +2.732229000E3,5.493458667E1 +2.732522000E3,5.383738769E1 +2.732781000E3,4.577468908E1 +2.733036000E3,4.877165484E1 +2.733337000E3,5.155317163E1 +2.733582000E3,4.868465804E1 +2.733904000E3,5.094377769E1 +2.734158000E3,4.778052408E1 +2.734485000E3,4.980696312E1 +2.734788000E3,5.229980528E1 +2.735043000E3,4.487473927E1 +2.735323000E3,5.405477376E1 +2.735550000E3,5.095910777E1 +2.735795000E3,4.081340338E1 +2.736110000E3,3.942379743E1 +2.736352000E3,4.377765131E1 +2.736599000E3,4.311237352E1 +2.736822000E3,4.659947655E1 +2.737071000E3,4.430846393E1 +2.737313000E3,4.579154087E1 +2.737577000E3,4.628223866E1 +2.737831000E3,3.937286623E1 +2.738094000E3,3.852847368E1 +2.738336000E3,3.907921933E1 +2.738583000E3,5.112703685E1 +2.738825000E3,4.827754167E1 +2.739100000E3,4.022366081E1 +2.739352000E3,3.342841986E1 +2.739649000E3,3.354947585E1 +2.740003000E3,2.967395260E1 +2.740259000E3,4.724158021E1 +2.740515000E3,4.406232704E1 +2.740781000E3,4.128290785E1 +2.741030000E3,3.766271195E1 +2.741274000E3,3.234308905E1 +2.741542000E3,5.345026714E1 +2.741790000E3,5.189834860E1 +2.742037000E3,4.310520052E1 +2.742373000E3,3.005340200E1 +2.742661000E3,3.957498865E1 +2.742905000E3,4.298992085E1 +2.743235000E3,3.914359224E1 +2.743487000E3,4.665969106E1 +2.743742000E3,4.569837618E1 +2.743989000E3,4.037243126E1 +2.744288000E3,4.393151618E1 +2.744525000E3,4.191552922E1 +2.744830000E3,3.855450094E1 +2.745068000E3,3.137426682E1 +2.745312000E3,3.988970586E1 +2.745595000E3,4.261856210E1 +2.745912000E3,4.545535941E1 +2.746178000E3,3.982007681E1 +2.746515000E3,3.873990925E1 +2.746799000E3,4.024486228E1 +2.747097000E3,3.778822068E1 +2.747346000E3,3.349647091E1 +2.747587000E3,3.949530039E1 +2.747884000E3,4.424971453E1 +2.748182000E3,4.109440717E1 +2.748426000E3,4.429824127E1 +2.748724000E3,3.941870140E1 +2.749014000E3,3.719766140E1 +2.749309000E3,3.407061301E1 +2.749659000E3,3.362708714E1 +2.749929000E3,4.111324363E1 +2.750185000E3,4.275268079E1 +2.750445000E3,5.624172952E1 +2.750726000E3,4.374037489E1 +2.750957000E3,4.189644016E1 +2.751207000E3,3.621210842E1 +2.751519000E3,4.177841495E1 +2.751770000E3,4.048458953E1 +2.752052000E3,3.923884976E1 +2.752303000E3,3.426258793E1 +2.752575000E3,3.252443323E1 +2.752926000E3,3.211416673E1 +2.753222000E3,3.245023971E1 +2.753483000E3,3.266068265E1 +2.753758000E3,4.004662592E1 +2.754054000E3,4.872983792E1 +2.754320000E3,5.041613029E1 +2.754567000E3,4.540589836E1 +2.754814000E3,3.042430240E1 +2.755080000E3,3.072459076E1 +2.755376000E3,3.998104284E1 +2.755642000E3,4.049850263E1 +2.755970000E3,4.294486763E1 +2.756315000E3,4.067196783E1 +2.756573000E3,4.772031632E1 +2.756825000E3,4.988707098E1 +2.757139000E3,4.555538995E1 +2.757388000E3,4.252022698E1 +2.757651000E3,3.810962452E1 +2.757917000E3,3.494795311E1 +2.758159000E3,3.247098224E1 +2.758413000E3,3.588027190E1 +2.758665000E3,3.200494843E1 +2.758920000E3,4.772506231E1 +2.759171000E3,3.775844318E1 +2.759507000E3,3.920116655E1 +2.759772000E3,4.528245497E1 +2.760086000E3,4.240466142E1 +2.760349000E3,4.544544837E1 +2.760652000E3,4.039389797E1 +2.760923000E3,3.896680017E1 +2.761194000E3,4.381534416E1 +2.761436000E3,4.424202471E1 +2.761681000E3,4.737958135E1 +2.761960000E3,4.213672401E1 +2.762194000E3,4.516117441E1 +2.762462000E3,4.279973284E1 +2.762806000E3,3.859577230E1 +2.763061000E3,4.880977241E1 +2.763403000E3,4.365184399E1 +2.763660000E3,3.848143477E1 +2.763932000E3,4.787104427E1 +2.764214000E3,3.823665924E1 +2.764451000E3,3.049392521E1 +2.764732000E3,3.086844430E1 +2.764975000E3,2.587396098E1 +2.765284000E3,3.362049288E1 +2.765536000E3,3.353664382E1 +2.765825000E3,5.140360254E1 +2.766193000E3,5.105178275E1 +2.766449000E3,5.027787452E1 +2.766756000E3,4.961194015E1 +2.766992000E3,4.473604482E1 +2.767290000E3,5.567849424E1 +2.767540000E3,5.366739238E1 +2.767788000E3,5.268444481E1 +2.768092000E3,4.378358357E1 +2.768389000E3,4.285786187E1 +2.768638000E3,3.838737205E1 +2.768928000E3,4.053738598E1 +2.769250000E3,3.914310468E1 +2.769517000E3,3.950994015E1 +2.769781000E3,4.085678781E1 +2.770095000E3,3.706118568E1 +2.770362000E3,3.878826243E1 +2.770640000E3,4.509160576E1 +2.770877000E3,4.395611401E1 +2.771129000E3,3.894826552E1 +2.771368000E3,3.783168139E1 +2.771620000E3,3.074559821E1 +2.771881000E3,4.191911052E1 +2.772136000E3,4.492008577E1 +2.772447000E3,3.666714779E1 +2.772710000E3,4.135207765E1 +2.772994000E3,4.645886813E1 +2.773238000E3,5.078995440E1 +2.773478000E3,5.706152467E1 +2.773725000E3,5.135582573E1 +2.773990000E3,4.900548267E1 +2.774266000E3,5.275962483E1 +2.774567000E3,3.947101760E1 +2.774806000E3,4.078518654E1 +2.775113000E3,4.929998433E1 +2.775417000E3,4.396253608E1 +2.775784000E3,4.382194135E1 +2.776077000E3,4.131860223E1 +2.776341000E3,4.321133953E1 +2.776596000E3,3.942571045E1 +2.776881000E3,5.035254190E1 +2.777176000E3,5.596334670E1 +2.777432000E3,6.003222989E1 +2.777730000E3,5.139953750E1 +2.778036000E3,5.596001036E1 +2.778330000E3,5.632045587E1 +2.778567000E3,5.352711698E1 +2.778873000E3,5.160150080E1 +2.779243000E3,5.407354895E1 +2.779513000E3,5.151192380E1 +2.779810000E3,5.479493680E1 +2.780084000E3,5.006197117E1 +2.780351000E3,5.012247277E1 +2.780644000E3,4.598086802E1 +2.780884000E3,3.959492635E1 +2.781142000E3,3.571624227E1 +2.781421000E3,4.082207018E1 +2.781720000E3,5.162800696E1 +2.781984000E3,5.211692198E1 +2.782250000E3,5.017743125E1 +2.782617000E3,4.685740156E1 +2.782916000E3,4.348825959E1 +2.783213000E3,3.825858224E1 +2.783454000E3,4.923981343E1 +2.783750000E3,5.319160353E1 +2.783992000E3,4.967899375E1 +2.784288000E3,3.952802481E1 +2.784535000E3,3.328379343E1 +2.784779000E3,3.014350405E1 +2.785020000E3,3.405755755E1 +2.785313000E3,4.653255974E1 +2.785639000E3,4.571255084E1 +2.785896000E3,4.212654376E1 +2.786166000E3,4.635178938E1 +2.786421000E3,4.614547408E1 +2.786716000E3,4.279815144E1 +2.787018000E3,3.739201392E1 +2.787261000E3,4.297599275E1 +2.787569000E3,5.279236826E1 +2.787869000E3,4.385267374E1 +2.788181000E3,3.538660905E1 +2.788488000E3,4.283741498E1 +2.788738000E3,3.898018884E1 +2.789079000E3,4.417569536E1 +2.789327000E3,3.821417555E1 +2.789586000E3,4.124587088E1 +2.789850000E3,4.583617377E1 +2.790116000E3,4.758354441E1 +2.790413000E3,4.386951397E1 +2.790662000E3,4.527431896E1 +2.790956000E3,4.454979637E1 +2.791207000E3,4.019280914E1 +2.791465000E3,4.549375778E1 +2.791714000E3,4.076569420E1 +2.791963000E3,3.807465350E1 +2.792293000E3,5.201775254E1 +2.792550000E3,4.217772267E1 +2.792797000E3,5.472035384E1 +2.793107000E3,5.403984906E1 +2.793357000E3,5.591746790E1 +2.793622000E3,5.564159884E1 +2.793875000E3,5.646584479E1 +2.794118000E3,5.185594958E1 +2.794377000E3,4.895735059E1 +2.794636000E3,5.654557288E1 +2.794943000E3,5.012866956E1 +2.795254000E3,4.757016947E1 +2.795528000E3,5.211434220E1 +2.795790000E3,4.452402763E1 +2.796058000E3,4.290214665E1 +2.796307000E3,3.465820610E1 +2.796556000E3,4.339944359E1 +2.796852000E3,4.313164949E1 +2.797091000E3,5.438037991E1 +2.797389000E3,5.514175593E1 +2.797635000E3,4.928848190E1 +2.797924000E3,4.659784940E1 +2.798220000E3,4.998887096E1 +2.798537000E3,4.486399829E1 +2.798842000E3,4.885866840E1 +2.799091000E3,4.635335968E1 +2.799347000E3,4.504358299E1 +2.799594000E3,3.958005741E1 +2.799833000E3,4.827229253E1 +2.800082000E3,4.830536262E1 +2.800388000E3,4.659260793E1 +2.800673000E3,4.111758509E1 +2.800972000E3,4.464305855E1 +2.801233000E3,4.497276151E1 +2.801524000E3,3.374775892E1 +2.801884000E3,3.426238632E1 +2.802202000E3,3.521995684E1 +2.802451000E3,3.181302785E1 +2.802708000E3,2.794884084E1 +2.803019000E3,3.320140571E1 +2.803325000E3,3.478175393E1 +2.803626000E3,3.529465039E1 +2.803932000E3,3.962950189E1 +2.804222000E3,5.725685057E1 +2.804486000E3,5.740119524E1 +2.804784000E3,5.069347451E1 +2.805056000E3,5.047632669E1 +2.805376000E3,5.207930289E1 +2.805626000E3,5.264810014E1 +2.805887000E3,5.288954519E1 +2.806177000E3,4.457356662E1 +2.806431000E3,3.885566564E1 +2.806679000E3,3.768676842E1 +2.806944000E3,3.953483275E1 +2.807192000E3,4.348722722E1 +2.807514000E3,4.091620627E1 +2.807832000E3,4.192587435E1 +2.808086000E3,4.434501723E1 +2.808380000E3,4.393917252E1 +2.808686000E3,4.250763593E1 +2.809001000E3,4.146719312E1 +2.809249000E3,4.084508562E1 +2.809517000E3,4.466153637E1 +2.809817000E3,4.002274614E1 +2.810111000E3,4.310032831E1 +2.810375000E3,4.901386280E1 +2.810661000E3,4.607368963E1 +2.810927000E3,4.387647276E1 +2.811225000E3,5.143943484E1 +2.811469000E3,5.045193234E1 +2.811861000E3,4.363012565E1 +2.812115000E3,4.450854658E1 +2.812371000E3,4.453857946E1 +2.812631000E3,4.628101753E1 +2.812921000E3,4.634691523E1 +2.813212000E3,4.654803531E1 +2.813510000E3,4.718980060E1 +2.813758000E3,4.430765323E1 +2.814051000E3,4.322664022E1 +2.814349000E3,4.450224091E1 +2.814582000E3,4.170367724E1 +2.814868000E3,3.985315953E1 +2.815113000E3,5.280042862E1 +2.815400000E3,4.119993511E1 +2.815662000E3,4.251502783E1 +2.815937000E3,4.221594106E1 +2.816186000E3,4.475181393E1 +2.816425000E3,4.757705666E1 +2.816666000E3,4.971185267E1 +2.816968000E3,4.862141287E1 +2.817211000E3,4.713523003E1 +2.817492000E3,4.541478066E1 +2.817737000E3,4.363493262E1 +2.817996000E3,4.428814895E1 +2.818246000E3,4.395099122E1 +2.818516000E3,4.781334664E1 +2.818773000E3,4.439472962E1 +2.819027000E3,4.768107540E1 +2.819278000E3,4.535748265E1 +2.819523000E3,5.061196572E1 +2.819779000E3,4.816069594E1 +2.820044000E3,4.715573746E1 +2.820374000E3,4.919198579E1 +2.820635000E3,5.486134785E1 +2.820897000E3,4.845922458E1 +2.821173000E3,4.486224636E1 +2.821520000E3,4.543631827E1 +2.821781000E3,4.823449020E1 +2.822049000E3,4.622456265E1 +2.822354000E3,3.467019045E1 +2.822632000E3,3.820707315E1 +2.822892000E3,3.870865044E1 +2.823175000E3,3.526203974E1 +2.823424000E3,3.398332746E1 +2.823673000E3,4.060940798E1 +2.823924000E3,4.531267955E1 +2.824156000E3,4.823172894E1 +2.824426000E3,5.381643572E1 +2.824772000E3,5.219878503E1 +2.825053000E3,4.888255160E1 +2.825277000E3,4.023650802E1 +2.825526000E3,3.467455539E1 +2.825785000E3,3.818404386E1 +2.826078000E3,4.122702652E1 +2.826315000E3,3.713088668E1 +2.826619000E3,4.891468535E1 +2.826912000E3,5.266971981E1 +2.827148000E3,4.991025067E1 +2.827457000E3,5.435242869E1 +2.827718000E3,5.378448717E1 +2.828053000E3,5.171570017E1 +2.828327000E3,5.600593919E1 +2.828581000E3,5.175339102E1 +2.828821000E3,4.567582373E1 +2.829101000E3,3.417267221E1 +2.829337000E3,3.532670702E1 +2.829576000E3,4.323212593E1 +2.829823000E3,3.952189104E1 +2.830096000E3,4.372473758E1 +2.830363000E3,4.288959864E1 +2.830609000E3,3.903893871E1 +2.830954000E3,3.847274859E1 +2.831281000E3,4.911689413E1 +2.831539000E3,5.342672798E1 +2.831798000E3,5.558955965E1 +2.832091000E3,5.519004987E1 +2.832341000E3,5.877942264E1 +2.832589000E3,4.602825434E1 +2.832861000E3,3.380054471E1 +2.833107000E3,3.583644563E1 +2.833403000E3,4.160983164E1 +2.833653000E3,3.903662215E1 +2.833958000E3,3.879412363E1 +2.834222000E3,4.121083607E1 +2.834460000E3,4.235130104E1 +2.834723000E3,5.615135633E1 +2.834993000E3,5.355273371E1 +2.835271000E3,4.896976792E1 +2.835535000E3,5.132324538E1 +2.835792000E3,5.529277110E1 +2.836041000E3,5.163674064E1 +2.836366000E3,4.657927993E1 +2.836613000E3,4.238907241E1 +2.836875000E3,5.376683406E1 +2.837143000E3,5.052269952E1 +2.837398000E3,5.018740192E1 +2.837697000E3,4.680907883E1 +2.837961000E3,4.427452663E1 +2.838227000E3,3.300759096E1 +2.838490000E3,3.639504198E1 +2.838784000E3,4.617517315E1 +2.839084000E3,4.692063960E1 +2.839325000E3,4.445415179E1 +2.839620000E3,4.215561710E1 +2.839863000E3,4.433766229E1 +2.840168000E3,4.210423337E1 +2.840460000E3,3.873922427E1 +2.840768000E3,3.717852459E1 +2.841057000E3,3.957811826E1 +2.841313000E3,3.760389186E1 +2.841638000E3,4.310249633E1 +2.841921000E3,4.813095040E1 +2.842192000E3,4.623131926E1 +2.842444000E3,4.648620260E1 +2.842743000E3,4.620801315E1 +2.843027000E3,4.321069748E1 +2.843281000E3,4.205248893E1 +2.843587000E3,2.653536028E1 +2.843863000E3,2.940344619E1 +2.844270000E3,4.715941302E1 +2.844533000E3,4.512147604E1 +2.844793000E3,4.758865475E1 +2.845051000E3,4.853448129E1 +2.845325000E3,4.647479098E1 +2.845569000E3,4.600966189E1 +2.845842000E3,4.549543262E1 +2.846088000E3,4.262631529E1 +2.846347000E3,4.522394390E1 +2.846652000E3,4.657245211E1 +2.846924000E3,4.554651191E1 +2.847231000E3,4.501421864E1 +2.847609000E3,4.413715050E1 +2.847859000E3,3.641102730E1 +2.848158000E3,2.959594862E1 +2.848409000E3,3.229903797E1 +2.848684000E3,3.716282001E1 +2.848948000E3,4.864280315E1 +2.849195000E3,4.698625872E1 +2.849453000E3,4.475077374E1 +2.849725000E3,4.320130236E1 +2.850029000E3,4.052232702E1 +2.850286000E3,4.987213531E1 +2.850622000E3,4.470574790E1 +2.850953000E3,4.746715529E1 +2.851224000E3,4.817674396E1 +2.851475000E3,4.755384271E1 +2.851775000E3,4.606857790E1 +2.852037000E3,4.602549066E1 +2.852280000E3,4.107899882E1 +2.852578000E3,4.602936757E1 +2.852832000E3,4.594357604E1 +2.853123000E3,4.132874601E1 +2.853424000E3,3.891402985E1 +2.853676000E3,3.210431116E1 +2.854034000E3,4.148325967E1 +2.854336000E3,4.539420759E1 +2.854629000E3,3.813311910E1 +2.854857000E3,3.204826654E1 +2.855103000E3,4.042825728E1 +2.855348000E3,3.781799437E1 +2.855635000E3,3.485312778E1 +2.855901000E3,3.176423587E1 +2.856194000E3,3.286644404E1 +2.856446000E3,3.601261840E1 +2.856741000E3,3.056779431E1 +2.856990000E3,2.876904683E1 +2.857247000E3,2.336161379E1 +2.857525000E3,5.319777865E1 +2.857765000E3,4.924210585E1 +2.858030000E3,4.161506516E1 +2.858287000E3,3.471025819E1 +2.858592000E3,2.954431085E1 +2.858878000E3,3.551304021E1 +2.859146000E3,4.056554733E1 +2.859438000E3,4.716772205E1 +2.859749000E3,4.728214145E1 +2.860112000E3,4.333221553E1 +2.860355000E3,3.970290127E1 +2.860627000E3,4.675070996E1 +2.860922000E3,5.292655838E1 +2.861168000E3,5.560528000E1 +2.861448000E3,5.155203362E1 +2.861684000E3,4.854372910E1 +2.861981000E3,5.166225265E1 +2.862226000E3,5.239758268E1 +2.862536000E3,4.880079262E1 +2.862801000E3,5.860724491E1 +2.863049000E3,5.487085904E1 +2.863366000E3,4.477307493E1 +2.863622000E3,4.809216762E1 +2.863923000E3,4.128779228E1 +2.864180000E3,4.039902121E1 +2.864473000E3,3.763315716E1 +2.864758000E3,3.836830031E1 +2.865072000E3,3.562217561E1 +2.865375000E3,4.251016575E1 +2.865631000E3,3.959478231E1 +2.865894000E3,3.906491963E1 +2.866161000E3,3.169567809E1 +2.866409000E3,4.180907280E1 +2.866769000E3,5.009501966E1 +2.867095000E3,4.485052737E1 +2.867377000E3,4.543449817E1 +2.867634000E3,4.558186247E1 +2.867912000E3,3.310648260E1 +2.868160000E3,3.368680580E1 +2.868403000E3,3.259924908E1 +2.868652000E3,3.468868920E1 +2.868945000E3,3.811295096E1 +2.869214000E3,3.680532391E1 +2.869523000E3,4.480088276E1 +2.869800000E3,4.321197878E1 +2.870149000E3,3.870196995E1 +2.870426000E3,4.501549736E1 +2.870686000E3,3.869046251E1 +2.870998000E3,5.116138397E1 +2.871259000E3,4.565952095E1 +2.871545000E3,4.044036430E1 +2.871835000E3,3.776423584E1 +2.872146000E3,4.283314388E1 +2.872428000E3,4.822150076E1 +2.872666000E3,4.609488251E1 +2.872966000E3,4.199842198E1 +2.873258000E3,4.199452970E1 +2.873557000E3,4.094164548E1 +2.873868000E3,3.451929232E1 +2.874146000E3,3.725700957E1 +2.874378000E3,3.820854143E1 +2.874632000E3,3.261818797E1 +2.874949000E3,4.229639001E1 +2.875219000E3,4.314663650E1 +2.875496000E3,4.030472415E1 +2.875772000E3,3.740362597E1 +2.876082000E3,3.770704299E1 +2.876334000E3,4.016521241E1 +2.876600000E3,4.155568881E1 +2.876855000E3,3.864643482E1 +2.877164000E3,3.358142820E1 +2.877430000E3,2.988882280E1 +2.877698000E3,4.233125756E1 +2.877954000E3,4.245249096E1 +2.878273000E3,3.619646633E1 +2.878541000E3,3.199868066E1 +2.878801000E3,4.546979293E1 +2.879062000E3,5.523869784E1 +2.879342000E3,5.605267417E1 +2.879584000E3,5.653411529E1 +2.879928000E3,4.626290707E1 +2.880202000E3,3.540012043E1 +2.880447000E3,3.620700172E1 +2.880691000E3,2.922036878E1 +2.880938000E3,3.659816429E1 +2.881251000E3,4.145147882E1 +2.881527000E3,3.894444603E1 +2.881851000E3,3.741315407E1 +2.882112000E3,4.094962867E1 +2.882373000E3,4.333353585E1 +2.882625000E3,4.557565518E1 +2.882879000E3,4.308396997E1 +2.883145000E3,4.097722416E1 +2.883416000E3,3.927850137E1 +2.883669000E3,3.223716221E1 +2.883941000E3,3.004581442E1 +2.884209000E3,3.765685263E1 +2.884466000E3,3.878810543E1 +2.884718000E3,2.988953340E1 +2.884967000E3,3.346960294E1 +2.885221000E3,3.799647420E1 +2.885537000E3,3.116842616E1 +2.885796000E3,3.671552801E1 +2.886084000E3,4.459898232E1 +2.886404000E3,4.708370738E1 +2.886677000E3,5.036035843E1 +2.886979000E3,4.113513329E1 +2.887251000E3,3.503458684E1 +2.887528000E3,3.462090732E1 +2.887785000E3,4.001717165E1 +2.888037000E3,3.538133603E1 +2.888296000E3,3.662805649E1 +2.888547000E3,4.263542947E1 +2.888820000E3,4.431895872E1 +2.889079000E3,4.300413574E1 +2.889340000E3,4.173317530E1 +2.889582000E3,4.288275032E1 +2.889932000E3,3.944773526E1 +2.890197000E3,3.214266541E1 +2.890503000E3,3.060588708E1 +2.890777000E3,3.296322494E1 +2.891017000E3,3.394251803E1 +2.891320000E3,3.208741950E1 +2.891570000E3,3.441770910E1 +2.891849000E3,3.368561294E1 +2.892087000E3,3.475967611E1 +2.892337000E3,3.740055420E1 +2.892635000E3,3.542355307E1 +2.892981000E3,3.105741683E1 +2.893247000E3,3.245614761E1 +2.893513000E3,4.142391644E1 +2.893779000E3,4.497461971E1 +2.894029000E3,4.653178389E1 +2.894282000E3,4.703576342E1 +2.894540000E3,4.751169602E1 +2.894805000E3,4.201422178E1 +2.895062000E3,4.370261317E1 +2.895310000E3,4.660906406E1 +2.895596000E3,4.633159753E1 +2.895865000E3,4.381116332E1 +2.896155000E3,4.368523912E1 +2.896405000E3,4.747051902E1 +2.896651000E3,4.222577444E1 +2.896905000E3,4.572633660E1 +2.897184000E3,5.203776089E1 +2.897450000E3,5.010843836E1 +2.897744000E3,4.910530865E1 +2.898022000E3,4.664859833E1 +2.898308000E3,3.985336775E1 +2.898564000E3,3.683403533E1 +2.898812000E3,4.284820320E1 +2.899091000E3,4.286036404E1 +2.899396000E3,5.224070654E1 +2.899753000E3,4.568546748E1 +2.900018000E3,5.586433220E1 +2.900278000E3,4.514230837E1 +2.900559000E3,3.853422420E1 +2.900865000E3,3.299777990E1 +2.901139000E3,3.594596453E1 +2.901415000E3,2.896001699E1 +2.901650000E3,2.556794162E1 +2.901937000E3,2.525773120E1 +2.902206000E3,3.138035436E1 +2.902457000E3,3.725731802E1 +2.902816000E3,3.600302530E1 +2.903095000E3,3.476106384E1 +2.903340000E3,3.325569458E1 +2.903600000E3,3.217545002E1 +2.903858000E3,2.994578711E1 +2.904108000E3,3.277965280E1 +2.904372000E3,4.013450695E1 +2.904627000E3,3.103730297E1 +2.904913000E3,4.187502355E1 +2.905174000E3,3.591627686E1 +2.905452000E3,3.067277870E1 +2.905743000E3,2.813597523E1 +2.906004000E3,2.760542404E1 +2.906321000E3,3.327793113E1 +2.906579000E3,4.111963776E1 +2.906835000E3,4.309802180E1 +2.907113000E3,2.749088524E1 +2.907354000E3,2.269523459E1 +2.907657000E3,3.631225289E1 +2.907901000E3,4.146405590E1 +2.908156000E3,3.785670954E1 +2.908403000E3,4.498664409E1 +2.908675000E3,4.174614917E1 +2.908932000E3,4.632262643E1 +2.909189000E3,3.569839459E1 +2.909522000E3,4.635385444E1 +2.909802000E3,4.337190367E1 +2.910035000E3,3.796960383E1 +2.910287000E3,4.151951269E1 +2.910538000E3,4.245940710E1 +2.910795000E3,4.268454470E1 +2.911045000E3,4.280139929E1 +2.911335000E3,3.861780445E1 +2.911584000E3,4.028221299E1 +2.911885000E3,3.934408626E1 +2.912139000E3,3.091195323E1 +2.912386000E3,2.709027446E1 +2.912622000E3,2.721294148E1 +2.912915000E3,3.169063213E1 +2.913196000E3,3.663766462E1 +2.913461000E3,3.582442105E1 +2.913744000E3,2.742218375E1 +2.913990000E3,3.432349666E1 +2.914297000E3,4.586386591E1 +2.914575000E3,4.813383402E1 +2.914888000E3,5.016441505E1 +2.915190000E3,4.132593749E1 +2.915481000E3,3.992883324E1 +2.915827000E3,3.713218942E1 +2.916087000E3,4.862036940E1 +2.916351000E3,4.985137398E1 +2.916622000E3,5.126616609E1 +2.916881000E3,4.180876614E1 +2.917157000E3,4.057128207E1 +2.917418000E3,3.994520906E1 +2.917681000E3,3.719846748E1 +2.917964000E3,4.377214072E1 +2.918264000E3,4.081140664E1 +2.918518000E3,4.149712935E1 +2.918784000E3,3.965801174E1 +2.919127000E3,3.499332266E1 +2.919415000E3,3.454976163E1 +2.919745000E3,3.801205804E1 +2.920003000E3,4.266330834E1 +2.920244000E3,3.704497233E1 +2.920548000E3,3.869800412E1 +2.920840000E3,3.880762608E1 +2.921081000E3,3.967826348E1 +2.921325000E3,4.387098551E1 +2.921573000E3,3.795523909E1 +2.921876000E3,3.884773193E1 +2.922122000E3,3.949919351E1 +2.922481000E3,3.549368996E1 +2.922774000E3,5.176437750E1 +2.923023000E3,4.673969779E1 +2.923306000E3,3.729614967E1 +2.923573000E3,3.557242251E1 +2.923880000E3,5.351861504E1 +2.924155000E3,5.486661937E1 +2.924424000E3,5.693150230E1 +2.924735000E3,4.225245527E1 +2.924988000E3,4.082554353E1 +2.925252000E3,3.807826598E1 +2.925573000E3,3.587807510E1 +2.925935000E3,4.290242494E1 +2.926237000E3,3.960438869E1 +2.926496000E3,3.732088357E1 +2.926751000E3,3.216321546E1 +2.926991000E3,3.001846960E1 +2.927295000E3,3.634949804E1 +2.927531000E3,3.127042454E1 +2.927829000E3,3.158500209E1 +2.928073000E3,2.815993792E1 +2.928370000E3,2.793102526E1 +2.928613000E3,2.468786691E1 +2.928943000E3,2.345175993E1 +2.929256000E3,2.908559709E1 +2.929497000E3,2.580950455E1 +2.929819000E3,2.871707976E1 +2.930114000E3,2.977851279E1 +2.930374000E3,4.220437998E1 +2.930636000E3,3.122152770E1 +2.930945000E3,3.902308439E1 +2.931227000E3,3.648582434E1 +2.931474000E3,4.774090674E1 +2.931717000E3,4.487624905E1 +2.931963000E3,4.620728265E1 +2.932258000E3,4.011602626E1 +2.932585000E3,4.011469989E1 +2.932871000E3,4.531107143E1 +2.933117000E3,4.299757904E1 +2.933366000E3,4.255561828E1 +2.933662000E3,4.180851663E1 +2.933899000E3,3.354142728E1 +2.934139000E3,4.061788576E1 +2.934435000E3,3.190428864E1 +2.934678000E3,3.136545948E1 +2.934975000E3,3.172564299E1 +2.935227000E3,3.538616066E1 +2.935577000E3,3.227761247E1 +2.935826000E3,3.587578035E1 +2.936132000E3,2.830690319E1 +2.936391000E3,2.983281120E1 +2.936636000E3,3.198482114E1 +2.936936000E3,4.529436692E1 +2.937191000E3,3.904726622E1 +2.937498000E3,4.546792713E1 +2.937790000E3,4.178984789E1 +2.938055000E3,3.901507008E1 +2.938332000E3,3.530528642E1 +2.938634000E3,3.766035689E1 +2.939060000E3,5.595745424E1 +2.939318000E3,5.800941557E1 +2.939576000E3,5.061871726E1 +2.939836000E3,6.017617924E1 +2.940124000E3,5.889680612E1 +2.940380000E3,5.553527141E1 +2.940631000E3,4.982924060E1 +2.940889000E3,5.386899946E1 +2.941183000E3,5.511436312E1 +2.941477000E3,5.474658637E1 +2.941736000E3,5.669903896E1 +2.941985000E3,5.352207307E1 +2.942302000E3,5.089540084E1 +2.942556000E3,5.163069551E1 +2.942811000E3,4.946827448E1 +2.943144000E3,4.292332560E1 +2.943386000E3,4.769421745E1 +2.943625000E3,4.741300910E1 +2.943936000E3,4.918473310E1 +2.944182000E3,4.358732286E1 +2.944456000E3,4.338106770E1 +2.944722000E3,5.302068646E1 +2.945006000E3,4.800501219E1 +2.945370000E3,4.445792428E1 +2.945619000E3,3.768400599E1 +2.945867000E3,3.829540629E1 +2.946159000E3,3.766669508E1 +2.946411000E3,4.016839261E1 +2.946712000E3,4.041724233E1 +2.947009000E3,4.012217251E1 +2.947323000E3,3.568820570E1 +2.947568000E3,3.690839296E1 +2.947818000E3,4.813137033E1 +2.948084000E3,5.325274156E1 +2.948341000E3,5.892514859E1 +2.948730000E3,4.314585435E1 +2.948980000E3,4.049194134E1 +2.949257000E3,4.522053034E1 +2.949515000E3,4.263261915E1 +2.949826000E3,5.159034358E1 +2.950126000E3,4.094053529E1 +2.950370000E3,4.144504964E1 +2.950613000E3,4.584689520E1 +2.950933000E3,3.986259871E1 +2.951211000E3,5.835616238E1 +2.951492000E3,4.865922153E1 +2.951773000E3,4.646806952E1 +2.952049000E3,5.501145746E1 +2.952349000E3,5.395560549E1 +2.952606000E3,5.094776028E1 +2.952859000E3,5.987933082E1 +2.953123000E3,5.553863596E1 +2.953365000E3,6.056471643E1 +2.953626000E3,5.705129962E1 +2.953881000E3,5.620457969E1 +2.954143000E3,4.633104773E1 +2.954403000E3,4.542785483E1 +2.954666000E3,4.357363747E1 +2.954925000E3,5.905995366E1 +2.955255000E3,5.325307727E1 +2.955500000E3,6.730464031E1 +2.955795000E3,6.362836082E1 +2.956030000E3,6.057596417E1 +2.956332000E3,6.813918985E1 +2.956573000E3,6.403678903E1 +2.956871000E3,6.230635205E1 +2.957135000E3,6.746671531E1 +2.957401000E3,6.427695804E1 +2.957673000E3,5.206458526E1 +2.957933000E3,5.261265827E1 +2.958182000E3,4.877242183E1 +2.958552000E3,6.627461000E1 +2.958808000E3,6.741673158E1 +2.959062000E3,6.597614354E1 +2.959304000E3,6.540552328E1 +2.959551000E3,6.528289091E1 +2.959864000E3,5.830061674E1 +2.960121000E3,5.985112812E1 +2.960428000E3,6.090568068E1 +2.960720000E3,6.807446854E1 +2.960985000E3,6.930722199E1 +2.961226000E3,6.386100217E1 +2.961579000E3,6.028451745E1 +2.961849000E3,6.477814340E1 +2.962132000E3,6.837046944E1 +2.962373000E3,6.647209363E1 +2.962660000E3,6.694202205E1 +2.962967000E3,6.648756695E1 +2.963231000E3,6.482625001E1 +2.963518000E3,7.095796361E1 +2.963775000E3,6.454417662E1 +2.964062000E3,6.533171518E1 +2.964339000E3,6.471819922E1 +2.964629000E3,5.679367810E1 +2.964962000E3,5.573913208E1 +2.965271000E3,6.251351498E1 +2.965502000E3,6.071427502E1 +2.965745000E3,6.212696498E1 +2.966049000E3,5.601947939E1 +2.966292000E3,5.543203731E1 +2.966544000E3,5.440105204E1 +2.966807000E3,5.169354717E1 +2.967114000E3,5.098574914E1 +2.967354000E3,4.778774527E1 +2.967603000E3,5.527018336E1 +2.967874000E3,5.069142516E1 +2.968220000E3,5.540354927E1 +2.968470000E3,5.388190573E1 +2.968725000E3,5.648678631E1 +2.968994000E3,6.195289166E1 +2.969259000E3,5.924073062E1 +2.969526000E3,5.554902217E1 +2.969797000E3,6.073047002E1 +2.970049000E3,5.750580172E1 +2.970375000E3,6.205206850E1 +2.970685000E3,5.892672487E1 +2.971008000E3,5.603539479E1 +2.971306000E3,5.380141597E1 +2.971609000E3,6.182570937E1 +2.971860000E3,5.755792598E1 +2.972120000E3,7.094637252E1 +2.972374000E3,7.220321333E1 +2.972688000E3,6.074903881E1 +2.972946000E3,5.132390204E1 +2.973203000E3,5.555176793E1 +2.973482000E3,5.082163203E1 +2.973746000E3,6.668022761E1 +2.974024000E3,6.951681150E1 +2.974257000E3,6.170353739E1 +2.974507000E3,6.191784425E1 +2.974845000E3,6.249884739E1 +2.975129000E3,6.139715498E1 +2.975385000E3,5.458109058E1 +2.975684000E3,6.285593412E1 +2.975925000E3,6.801445640E1 +2.976223000E3,6.762358149E1 +2.976454000E3,6.007212586E1 +2.976698000E3,6.176376027E1 +2.976998000E3,5.489351528E1 +2.977244000E3,6.419682450E1 +2.977544000E3,6.335879864E1 +2.977813000E3,6.346249627E1 +2.978071000E3,6.122721977E1 +2.978303000E3,6.269343112E1 +2.978564000E3,5.719207644E1 +2.978818000E3,6.209398004E1 +2.979085000E3,6.570545323E1 +2.979335000E3,6.443300698E1 +2.979582000E3,6.395479352E1 +2.979841000E3,6.285971298E1 +2.980091000E3,6.452411240E1 +2.980337000E3,6.648403811E1 +2.980638000E3,6.146510082E1 +2.980898000E3,6.178604521E1 +2.981191000E3,5.906416732E1 +2.981418000E3,6.139524316E1 +2.981668000E3,6.754933795E1 +2.981958000E3,5.804633278E1 +2.982221000E3,5.544285219E1 +2.982480000E3,5.252390700E1 +2.982741000E3,5.442974682E1 +2.983009000E3,5.886662164E1 +2.983270000E3,6.039421332E1 +2.983532000E3,5.984826425E1 +2.983780000E3,6.038747451E1 +2.984020000E3,5.836799318E1 +2.984266000E3,6.011457774E1 +2.984654000E3,6.086793857E1 +2.984928000E3,6.104684994E1 +2.985246000E3,6.081085188E1 +2.985504000E3,6.338602633E1 +2.985771000E3,6.224702903E1 +2.986040000E3,5.771788346E1 +2.986351000E3,5.832375863E1 +2.986657000E3,6.179808645E1 +2.986893000E3,6.074067698E1 +2.987188000E3,5.763905723E1 +2.987459000E3,5.411975455E1 +2.987698000E3,5.609082395E1 +2.988020000E3,5.838775534E1 +2.988261000E3,5.545934196E1 +2.988564000E3,5.818253650E1 +2.988803000E3,5.693365858E1 +2.989084000E3,5.747877452E1 +2.989394000E3,6.108654481E1 +2.989646000E3,6.109521888E1 +2.989952000E3,5.453216708E1 +2.990235000E3,5.325056065E1 +2.990530000E3,5.226229633E1 +2.990796000E3,5.566734434E1 +2.991153000E3,5.983192138E1 +2.991409000E3,5.902282422E1 +2.991712000E3,6.553978750E1 +2.991962000E3,6.323109208E1 +2.992210000E3,6.430699278E1 +2.992477000E3,6.439502996E1 +2.992769000E3,5.882379749E1 +2.993024000E3,7.076998945E1 +2.993317000E3,6.710088514E1 +2.993554000E3,6.332152683E1 +2.993846000E3,6.013348006E1 +2.994081000E3,6.492156154E1 +2.994361000E3,6.054189638E1 +2.994671000E3,5.878685209E1 +2.994911000E3,6.363988355E1 +2.995218000E3,6.266127576E1 +2.995513000E3,6.231860976E1 +2.995750000E3,6.770663238E1 +2.996056000E3,6.411706706E1 +2.996346000E3,6.607053327E1 +2.996592000E3,6.231837938E1 +2.996884000E3,6.235557028E1 +2.997130000E3,6.626149607E1 +2.997386000E3,6.897456616E1 +2.997721000E3,6.896820400E1 +2.997984000E3,5.708709076E1 +2.998260000E3,5.465136518E1 +2.998532000E3,6.136090841E1 +2.998792000E3,6.427324700E1 +2.999047000E3,5.922924051E1 +2.999308000E3,5.964993479E1 +2.999619000E3,5.937495043E1 +2.999910000E3,6.345321013E1 +3.000196000E3,6.558504608E1 +3.000438000E3,6.566442906E1 +3.000721000E3,6.596782674E1 +3.001048000E3,6.493210478E1 +3.001299000E3,6.778071085E1 +3.001554000E3,5.810398860E1 +3.001834000E3,6.461256831E1 +3.002084000E3,5.637103240E1 +3.002332000E3,6.244497501E1 +3.002633000E3,5.749162406E1 +3.002980000E3,6.268391580E1 +3.003246000E3,6.122193913E1 +3.003572000E3,6.467185898E1 +3.003877000E3,6.239318427E1 +3.004266000E3,6.708558966E1 +3.004573000E3,6.293492178E1 +3.004871000E3,6.169168265E1 +3.005129000E3,5.944912128E1 +3.005404000E3,5.631628075E1 +3.005704000E3,6.080609102E1 +3.005964000E3,6.424565764E1 +3.006250000E3,6.447415860E1 +3.006481000E3,6.606824769E1 +3.006756000E3,6.337387069E1 +3.007004000E3,6.294291386E1 +3.007286000E3,6.430484746E1 +3.007612000E3,6.091848593E1 +3.007867000E3,6.343837854E1 +3.008169000E3,5.978702761E1 +3.008432000E3,5.965865421E1 +3.008675000E3,5.540362761E1 +3.008918000E3,5.443572137E1 +3.009202000E3,6.171389250E1 +3.009446000E3,6.487192568E1 +3.009738000E3,5.958143908E1 +3.009983000E3,6.189834719E1 +3.010232000E3,5.752745917E1 +3.010489000E3,6.339873723E1 +3.010846000E3,6.127984243E1 +3.011144000E3,6.065194767E1 +3.011387000E3,6.253646864E1 +3.011646000E3,6.179753794E1 +3.011925000E3,6.231808205E1 +3.012153000E3,6.101579519E1 +3.012442000E3,5.876502421E1 +3.012737000E3,5.809905793E1 +3.013015000E3,5.695141293E1 +3.013301000E3,5.973139928E1 +3.013577000E3,6.007240820E1 +3.013839000E3,7.136453087E1 +3.014063000E3,7.173892024E1 +3.014315000E3,6.885425335E1 +3.014559000E3,6.110376355E1 +3.014808000E3,6.296723224E1 +3.015075000E3,6.021879294E1 +3.015327000E3,6.012811489E1 +3.015577000E3,6.282613373E1 +3.015850000E3,6.884549735E1 +3.016115000E3,6.913958233E1 +3.016397000E3,6.608409337E1 +3.016648000E3,6.437779633E1 +3.016896000E3,6.412579817E1 +3.017253000E3,6.408373459E1 +3.017500000E3,6.487828946E1 +3.017743000E3,6.281964754E1 +3.018003000E3,6.153697843E1 +3.018258000E3,6.503307442E1 +3.018512000E3,6.508021131E1 +3.018791000E3,5.910017780E1 +3.019028000E3,5.757469918E1 +3.019325000E3,5.762978005E1 +3.019573000E3,5.366611226E1 +3.019824000E3,5.708763529E1 +3.020086000E3,5.488621207E1 +3.020437000E3,5.826722905E1 +3.020695000E3,5.951373108E1 +3.020968000E3,6.130623452E1 +3.021217000E3,6.025771329E1 +3.021490000E3,5.280103891E1 +3.021737000E3,6.123009986E1 +3.022037000E3,6.404958762E1 +3.022328000E3,6.469373641E1 +3.022599000E3,6.283727611E1 +3.022840000E3,6.248869497E1 +3.023123000E3,6.767270030E1 +3.023363000E3,6.436289402E1 +3.023706000E3,6.007121161E1 +3.023992000E3,6.067397941E1 +3.024255000E3,6.005092329E1 +3.024513000E3,6.146229561E1 +3.024803000E3,6.214304530E1 +3.025060000E3,6.107977952E1 +3.025317000E3,6.268440106E1 +3.025560000E3,5.744048190E1 +3.025823000E3,6.080102592E1 +3.026092000E3,6.359394744E1 +3.026384000E3,6.219604097E1 +3.026685000E3,6.296073955E1 +3.026912000E3,6.243574530E1 +3.027190000E3,6.540426031E1 +3.027426000E3,7.038009166E1 +3.027684000E3,7.133800291E1 +3.027943000E3,6.847497315E1 +3.028214000E3,7.049817235E1 +3.028486000E3,6.555713643E1 +3.028748000E3,6.762942526E1 +3.029008000E3,6.780082040E1 +3.029264000E3,6.644646205E1 +3.029533000E3,7.066497540E1 +3.029800000E3,6.700863421E1 +3.030174000E3,6.263767412E1 +3.030459000E3,5.937975562E1 +3.030697000E3,6.189133018E1 +3.030958000E3,6.479748496E1 +3.031218000E3,6.070421224E1 +3.031488000E3,5.567295684E1 +3.031754000E3,6.162939414E1 +3.032026000E3,6.462556380E1 +3.032293000E3,6.300561819E1 +3.032553000E3,6.320528504E1 +3.032852000E3,6.205536878E1 +3.033102000E3,7.179598993E1 +3.033490000E3,6.907149718E1 +3.033750000E3,6.110443799E1 +3.034008000E3,5.743025653E1 +3.034257000E3,5.714646515E1 +3.034505000E3,6.193634179E1 +3.034762000E3,6.511685208E1 +3.035034000E3,6.647840023E1 +3.035277000E3,6.637602928E1 +3.035534000E3,6.208743290E1 +3.035873000E3,6.158502662E1 +3.036127000E3,6.138896352E1 +3.036392000E3,5.988342330E1 +3.036737000E3,5.834272912E1 +3.036998000E3,6.504474047E1 +3.037253000E3,5.801637483E1 +3.037569000E3,6.208073459E1 +3.037831000E3,6.555093843E1 +3.038084000E3,6.686352963E1 +3.038356000E3,6.398821865E1 +3.038638000E3,6.053541888E1 +3.038927000E3,5.509282051E1 +3.039228000E3,6.213274835E1 +3.039473000E3,6.149105368E1 +3.039745000E3,6.097957376E1 +3.040056000E3,6.313145073E1 +3.040300000E3,6.749857058E1 +3.040549000E3,6.031561589E1 +3.040852000E3,5.991948868E1 +3.041110000E3,6.228314687E1 +3.041358000E3,6.281493679E1 +3.041621000E3,6.031124820E1 +3.041926000E3,6.035954468E1 +3.042177000E3,6.230627050E1 +3.042448000E3,5.381586458E1 +3.042741000E3,6.032611045E1 +3.043026000E3,5.796046788E1 +3.043304000E3,6.286261594E1 +3.043605000E3,6.188894569E1 +3.043848000E3,6.196336480E1 +3.044091000E3,6.506902622E1 +3.044345000E3,6.547913264E1 +3.044589000E3,6.701681380E1 +3.044849000E3,6.398074775E1 +3.045095000E3,6.102355933E1 +3.045350000E3,6.546609328E1 +3.045598000E3,6.626677347E1 +3.045845000E3,6.212155235E1 +3.046098000E3,6.475032486E1 +3.046433000E3,6.469401418E1 +3.046698000E3,6.335899573E1 +3.046970000E3,5.799459631E1 +3.047267000E3,5.777430210E1 +3.047527000E3,6.228044606E1 +3.047785000E3,5.521572273E1 +3.048044000E3,5.312506195E1 +3.048316000E3,5.877400717E1 +3.048592000E3,6.239358597E1 +3.048842000E3,6.019315355E1 +3.049164000E3,5.944515023E1 +3.049418000E3,6.571719967E1 +3.049752000E3,5.906077781E1 +3.050005000E3,6.269931225E1 +3.050242000E3,6.329267329E1 +3.050532000E3,6.094692628E1 +3.050797000E3,6.137608503E1 +3.051055000E3,6.019630450E1 +3.051299000E3,5.959056092E1 +3.051551000E3,6.195653625E1 +3.051802000E3,5.997942431E1 +3.052044000E3,6.071988649E1 +3.052348000E3,6.146559433E1 +3.052605000E3,6.320542640E1 +3.052903000E3,6.301314639E1 +3.053133000E3,6.491013087E1 +3.053386000E3,5.374424399E1 +3.053632000E3,5.337930652E1 +3.053925000E3,5.830420592E1 +3.054167000E3,5.827724976E1 +3.054414000E3,5.413373264E1 +3.054713000E3,5.438904566E1 +3.054952000E3,5.478972153E1 +3.055245000E3,6.026125791E1 +3.055545000E3,6.377000784E1 +3.055792000E3,6.273059884E1 +3.056116000E3,6.164463909E1 +3.056426000E3,6.310484015E1 +3.056665000E3,6.191865333E1 +3.056974000E3,6.044005004E1 +3.057225000E3,5.723160495E1 +3.057532000E3,6.482171923E1 +3.057799000E3,6.373654624E1 +3.058097000E3,6.579319958E1 +3.058333000E3,6.717439766E1 +3.058632000E3,6.244987186E1 +3.058874000E3,5.911459441E1 +3.059119000E3,6.246625617E1 +3.059514000E3,6.061929027E1 +3.059786000E3,6.141894857E1 +3.060044000E3,6.531006136E1 +3.060311000E3,6.745420282E1 +3.060564000E3,6.305040539E1 +3.060809000E3,6.250223063E1 +3.061063000E3,5.984183740E1 +3.061365000E3,6.201500936E1 +3.061610000E3,6.171968159E1 +3.061853000E3,5.636652524E1 +3.062137000E3,5.937450988E1 +3.062405000E3,5.424162977E1 +3.062724000E3,5.577353705E1 +3.062968000E3,6.265208868E1 +3.063225000E3,6.754657095E1 +3.063470000E3,6.259832443E1 +3.063731000E3,5.846954403E1 +3.063975000E3,5.735719718E1 +3.064220000E3,5.614657426E1 +3.064460000E3,5.493678071E1 +3.064711000E3,6.175770153E1 +3.064961000E3,6.502893325E1 +3.065266000E3,6.372557142E1 +3.065562000E3,6.165604672E1 +3.065921000E3,6.202265536E1 +3.066181000E3,5.894659424E1 +3.066427000E3,5.516515279E1 +3.066669000E3,5.227763917E1 +3.066911000E3,5.331294555E1 +3.067166000E3,5.535383534E1 +3.067460000E3,5.490405248E1 +3.067721000E3,5.927902794E1 +3.068030000E3,6.001209348E1 +3.068288000E3,5.925707402E1 +3.068553000E3,6.116769528E1 +3.068848000E3,5.907075037E1 +3.069160000E3,5.402384091E1 +3.069467000E3,6.078433547E1 +3.069706000E3,6.064305090E1 +3.069991000E3,6.099922555E1 +3.070247000E3,6.081028216E1 +3.070500000E3,6.857342881E1 +3.070795000E3,6.830085683E1 +3.071035000E3,7.092929468E1 +3.071334000E3,6.670654987E1 +3.071580000E3,6.198358410E1 +3.071845000E3,6.029427505E1 +3.072216000E3,6.271100503E1 +3.072476000E3,6.548403896E1 +3.072709000E3,6.655140024E1 +3.072958000E3,6.872933885E1 +3.073221000E3,6.840034062E1 +3.073524000E3,6.189262665E1 +3.073801000E3,6.315516618E1 +3.074029000E3,6.431689152E1 +3.074282000E3,7.008635825E1 +3.074531000E3,6.529488526E1 +3.074781000E3,5.362885622E1 +3.075079000E3,6.174622467E1 +3.075321000E3,6.106059522E1 +3.075569000E3,6.727558853E1 +3.075841000E3,6.068477373E1 +3.076089000E3,6.224550385E1 +3.076358000E3,6.049387981E1 +3.076618000E3,5.554290122E1 +3.076868000E3,5.232623619E1 +3.077136000E3,5.715980006E1 +3.077434000E3,6.112308912E1 +3.077738000E3,5.964598426E1 +3.077997000E3,5.774993649E1 +3.078301000E3,5.930552673E1 +3.078632000E3,6.204668908E1 +3.078903000E3,6.135182684E1 +3.079234000E3,6.010535577E1 +3.079530000E3,5.612975229E1 +3.079846000E3,5.894789721E1 +3.080130000E3,6.424282153E1 +3.080395000E3,6.696093787E1 +3.080696000E3,5.929656512E1 +3.080931000E3,5.577162965E1 +3.081168000E3,6.096321541E1 +3.081415000E3,6.147204445E1 +3.081708000E3,6.518353223E1 +3.082066000E3,6.565001970E1 +3.082347000E3,6.152216198E1 +3.082591000E3,6.232488129E1 +3.082884000E3,6.450829181E1 +3.083131000E3,6.727741702E1 +3.083373000E3,6.596172391E1 +3.083615000E3,6.588974420E1 +3.083909000E3,6.215985231E1 +3.084146000E3,5.417797447E1 +3.084444000E3,5.776086644E1 +3.084736000E3,6.145598006E1 +3.085067000E3,6.705675690E1 +3.085353000E3,7.032609091E1 +3.085621000E3,6.942809802E1 +3.085926000E3,6.673219093E1 +3.086170000E3,5.874483463E1 +3.086457000E3,6.163530440E1 +3.086730000E3,5.863155738E1 +3.086955000E3,5.804604701E1 +3.087247000E3,7.202263239E1 +3.087542000E3,6.907595594E1 +3.087796000E3,7.104760035E1 +3.088063000E3,6.060670654E1 +3.088371000E3,6.409876160E1 +3.088642000E3,6.504332531E1 +3.088891000E3,6.050178076E1 +3.089172000E3,5.988548041E1 +3.089448000E3,6.419311516E1 +3.089715000E3,6.072209436E1 +3.089992000E3,6.148544930E1 +3.090256000E3,6.667985585E1 +3.090551000E3,6.360479893E1 +3.090829000E3,6.675347002E1 +3.091081000E3,6.585951744E1 +3.091337000E3,5.998998345E1 +3.091582000E3,7.213751425E1 +3.091973000E3,7.002319175E1 +3.092225000E3,6.554991346E1 +3.092495000E3,5.438962824E1 +3.092757000E3,5.806427109E1 +3.093010000E3,5.611571138E1 +3.093290000E3,5.427298566E1 +3.093553000E3,6.332676554E1 +3.093801000E3,6.191283999E1 +3.094088000E3,6.222056485E1 +3.094383000E3,6.679558422E1 +3.094660000E3,6.396349695E1 +3.094980000E3,6.335657582E1 +3.095321000E3,6.368682935E1 +3.095574000E3,6.239728447E1 +3.095829000E3,6.560913932E1 +3.096083000E3,6.288470186E1 +3.096327000E3,6.063834800E1 +3.096611000E3,5.698542980E1 +3.096866000E3,6.214573666E1 +3.097125000E3,6.108001307E1 +3.097382000E3,6.098898235E1 +3.097639000E3,6.935379750E1 +3.097944000E3,6.076333803E1 +3.098235000E3,5.747447310E1 +3.098595000E3,5.896750888E1 +3.098845000E3,6.428262322E1 +3.099146000E3,6.073561603E1 +3.099435000E3,5.610862272E1 +3.099679000E3,5.808393750E1 +3.099971000E3,6.306244141E1 +3.100214000E3,6.493760740E1 +3.100511000E3,5.964091377E1 +3.100753000E3,5.949423253E1 +3.100995000E3,6.324186751E1 +3.101237000E3,6.294719776E1 +3.101481000E3,6.618420708E1 +3.101805000E3,6.039251647E1 +3.102105000E3,6.883376735E1 +3.102388000E3,6.215701199E1 +3.102635000E3,6.251944475E1 +3.102926000E3,6.387718652E1 +3.103175000E3,6.262879933E1 +3.103469000E3,6.094246273E1 +3.103717000E3,5.780442917E1 +3.104010000E3,5.805018882E1 +3.104245000E3,6.073911170E1 +3.104537000E3,5.820155990E1 +3.104880000E3,5.691870737E1 +3.105139000E3,5.609187778E1 +3.105418000E3,5.368790307E1 +3.105673000E3,5.733127796E1 +3.105933000E3,5.834617124E1 +3.106196000E3,5.665251568E1 +3.106447000E3,5.839993992E1 +3.106707000E3,5.765825797E1 +3.106989000E3,6.346036236E1 +3.107241000E3,6.088974139E1 +3.107536000E3,5.623231578E1 +3.107836000E3,5.905990454E1 +3.108208000E3,5.913546091E1 +3.108462000E3,5.921957697E1 +3.108732000E3,6.403378055E1 +3.109010000E3,6.829473891E1 +3.109237000E3,6.866131452E1 +3.109530000E3,5.759864554E1 +3.109769000E3,5.216447932E1 +3.110067000E3,5.887622687E1 +3.110356000E3,5.912152229E1 +3.110621000E3,6.343631440E1 +3.110862000E3,6.110189356E1 +3.111105000E3,5.925249209E1 +3.111441000E3,5.583559168E1 +3.111708000E3,6.397874973E1 +3.112049000E3,5.864630935E1 +3.112314000E3,5.876030726E1 +3.112620000E3,5.558460131E1 +3.112980000E3,5.336927775E1 +3.113232000E3,5.351895645E1 +3.113515000E3,4.932805120E1 +3.113763000E3,6.323075662E1 +3.114057000E3,6.375401647E1 +3.114318000E3,6.430798012E1 +3.114651000E3,6.745313705E1 +3.114909000E3,6.370697195E1 +3.115204000E3,6.719832935E1 +3.115517000E3,6.353352979E1 +3.115816000E3,6.421660294E1 +3.116074000E3,6.666449428E1 +3.116372000E3,6.209745804E1 +3.116612000E3,5.853853683E1 +3.116911000E3,6.153177442E1 +3.117151000E3,6.465277685E1 +3.117439000E3,6.054074617E1 +3.117698000E3,5.762180605E1 +3.118029000E3,5.904912096E1 +3.118292000E3,6.054469105E1 +3.118547000E3,6.570885599E1 +3.118854000E3,6.686989978E1 +3.119103000E3,6.506823644E1 +3.119359000E3,5.780133308E1 +3.119610000E3,5.983707630E1 +3.119896000E3,6.102798325E1 +3.120167000E3,5.940835035E1 +3.120446000E3,6.154008300E1 +3.120717000E3,6.031178539E1 +3.120969000E3,6.222997321E1 +3.121291000E3,6.676268308E1 +3.121532000E3,6.244629438E1 +3.121778000E3,6.014719673E1 +3.122038000E3,6.351124664E1 +3.122317000E3,5.786579019E1 +3.122607000E3,5.704033688E1 +3.122864000E3,5.941823253E1 +3.123160000E3,6.366298469E1 +3.123429000E3,6.545330590E1 +3.123678000E3,6.206143443E1 +3.123932000E3,6.250040348E1 +3.124250000E3,6.193784317E1 +3.124582000E3,6.679802083E1 +3.124888000E3,6.239911876E1 +3.125141000E3,6.227743005E1 +3.125407000E3,5.930162190E1 +3.125655000E3,5.692493613E1 +3.125897000E3,6.100851678E1 +3.126155000E3,6.356932883E1 +3.126470000E3,6.583742229E1 +3.126735000E3,6.828531785E1 +3.127049000E3,6.744954014E1 +3.127349000E3,6.892448306E1 +3.127620000E3,6.312172108E1 +3.127885000E3,6.549450530E1 +3.128150000E3,6.274114245E1 +3.128434000E3,5.987443555E1 +3.128694000E3,5.754092402E1 +3.128967000E3,6.140483336E1 +3.129224000E3,5.793735580E1 +3.129483000E3,5.640840091E1 +3.129735000E3,7.068460790E1 +3.130042000E3,6.831622259E1 +3.130308000E3,6.661131327E1 +3.130563000E3,7.032191033E1 +3.130897000E3,6.429012882E1 +3.131166000E3,6.890779868E1 +3.131427000E3,6.812897599E1 +3.131726000E3,6.440583932E1 +3.132039000E3,6.371305855E1 +3.132310000E3,6.071113649E1 +3.132582000E3,6.356904702E1 +3.132834000E3,6.335195410E1 +3.133078000E3,5.922748305E1 +3.133357000E3,5.790290676E1 +3.133581000E3,6.067150466E1 +3.133827000E3,5.936438225E1 +3.134075000E3,5.651144024E1 +3.134312000E3,5.707156804E1 +3.134564000E3,6.256442790E1 +3.134822000E3,5.680653319E1 +3.135099000E3,6.386946987E1 +3.135341000E3,6.183817556E1 +3.135588000E3,5.791592939E1 +3.135843000E3,5.415500200E1 +3.136159000E3,5.828393923E1 +3.136402000E3,5.584102234E1 +3.136645000E3,5.843965538E1 +3.136922000E3,6.032067675E1 +3.137231000E3,6.082235855E1 +3.137514000E3,6.216335250E1 +3.137763000E3,6.576895249E1 +3.138052000E3,5.935628673E1 +3.138348000E3,5.697436057E1 +3.138590000E3,6.713499986E1 +3.138833000E3,5.996032355E1 +3.139071000E3,6.566814076E1 +3.139366000E3,6.469315039E1 +3.139607000E3,6.414816039E1 +3.139901000E3,6.238348704E1 +3.140144000E3,5.975478602E1 +3.140477000E3,5.617333113E1 +3.140789000E3,6.140881460E1 +3.141038000E3,5.760925345E1 +3.141323000E3,5.813474075E1 +3.141616000E3,6.190304914E1 +3.141899000E3,5.853813516E1 +3.142123000E3,6.019478920E1 +3.142387000E3,5.824830032E1 +3.142639000E3,6.031650371E1 +3.142898000E3,5.874305926E1 +3.143211000E3,6.365997735E1 +3.143459000E3,6.182267241E1 +3.143814000E3,6.153305629E1 +3.144076000E3,6.040235966E1 +3.144345000E3,6.279707978E1 +3.144591000E3,6.261441373E1 +3.144837000E3,5.722591859E1 +3.145082000E3,5.791919274E1 +3.145387000E3,6.142016587E1 +3.145678000E3,5.996802308E1 +3.145994000E3,5.761245992E1 +3.146269000E3,5.915341256E1 +3.146531000E3,5.679987844E1 +3.146814000E3,6.228452904E1 +3.147163000E3,6.038592359E1 +3.147440000E3,6.662509726E1 +3.147705000E3,5.864713600E1 +3.147961000E3,6.383827006E1 +3.148228000E3,6.445939632E1 +3.148543000E3,6.206597752E1 +3.148800000E3,6.082056407E1 +3.149046000E3,5.872798480E1 +3.149340000E3,5.792404132E1 +3.149585000E3,5.917409009E1 +3.149845000E3,5.619795947E1 +3.150164000E3,6.447379623E1 +3.150501000E3,6.336546747E1 +3.150798000E3,6.022605646E1 +3.151059000E3,5.837139298E1 +3.151360000E3,5.721847889E1 +3.151614000E3,7.085699981E1 +3.151908000E3,6.031233854E1 +3.152206000E3,6.170839562E1 +3.152452000E3,6.336115962E1 +3.152697000E3,6.732286145E1 +3.152943000E3,6.043278366E1 +3.153235000E3,5.822950572E1 +3.153537000E3,6.155234216E1 +3.153813000E3,5.671966020E1 +3.154078000E3,5.613348243E1 +3.154333000E3,5.384913785E1 +3.154580000E3,5.739778382E1 +3.154869000E3,5.617144196E1 +3.155103000E3,5.699346940E1 +3.155351000E3,6.356393037E1 +3.155653000E3,5.483372318E1 +3.155949000E3,5.806865262E1 +3.156195000E3,5.725879338E1 +3.156459000E3,5.708272088E1 +3.156776000E3,5.736330762E1 +3.157028000E3,5.620178265E1 +3.157280000E3,5.557503250E1 +3.157521000E3,6.379766868E1 +3.157864000E3,6.175462639E1 +3.158113000E3,5.970375584E1 +3.158365000E3,5.482220327E1 +3.158625000E3,6.094938302E1 +3.158872000E3,6.189076140E1 +3.159128000E3,6.365906369E1 +3.159385000E3,6.365252593E1 +3.159699000E3,6.421784723E1 +3.160039000E3,5.952347777E1 +3.160337000E3,6.582170091E1 +3.160643000E3,6.400621400E1 +3.160905000E3,5.982923632E1 +3.161162000E3,5.912958512E1 +3.161449000E3,5.744161350E1 +3.161722000E3,6.208953034E1 +3.161984000E3,6.743490019E1 +3.162228000E3,5.893358785E1 +3.162506000E3,6.260442429E1 +3.162777000E3,6.054589944E1 +3.163072000E3,5.958101250E1 +3.163380000E3,5.756716970E1 +3.163623000E3,5.897741262E1 +3.163916000E3,5.199350029E1 +3.164173000E3,5.607364633E1 +3.164444000E3,6.846587546E1 +3.164756000E3,5.833953537E1 +3.165011000E3,6.699601536E1 +3.165255000E3,6.024033326E1 +3.165530000E3,5.636786936E1 +3.165825000E3,5.917346905E1 +3.166077000E3,5.684739711E1 +3.166343000E3,5.441684119E1 +3.166607000E3,5.708423030E1 +3.166871000E3,5.726160097E1 +3.167212000E3,5.795085756E1 +3.167513000E3,5.359033433E1 +3.167800000E3,5.481028168E1 +3.168051000E3,5.771426852E1 +3.168321000E3,5.720698183E1 +3.168574000E3,6.029484328E1 +3.168847000E3,6.594273179E1 +3.169141000E3,5.814954146E1 +3.169451000E3,5.741553332E1 +3.169717000E3,5.474949866E1 +3.170064000E3,5.858087337E1 +3.170388000E3,5.901398101E1 +3.170689000E3,6.599046976E1 +3.170942000E3,6.777823262E1 +3.171184000E3,6.339704259E1 +3.171437000E3,5.678237753E1 +3.171694000E3,6.067324941E1 +3.171975000E3,6.337570500E1 +3.172215000E3,6.060254578E1 +3.172509000E3,6.511602204E1 +3.172792000E3,6.491523998E1 +3.173086000E3,6.236437487E1 +3.173442000E3,6.132637014E1 +3.173725000E3,5.575670785E1 +3.173997000E3,5.450541115E1 +3.174243000E3,5.816223835E1 +3.174516000E3,5.991084873E1 +3.174771000E3,5.959264792E1 +3.175022000E3,6.001504494E1 +3.175268000E3,5.794233494E1 +3.175510000E3,5.875384007E1 +3.175752000E3,6.582497874E1 +3.176001000E3,6.385809704E1 +3.176310000E3,6.575292490E1 +3.176700000E3,6.328122862E1 +3.176947000E3,6.160374932E1 +3.177205000E3,6.233605233E1 +3.177480000E3,5.746120395E1 +3.177733000E3,5.491961653E1 +3.178002000E3,5.346590976E1 +3.178308000E3,4.910433719E1 +3.178598000E3,5.548086035E1 +3.178876000E3,5.834728013E1 +3.179129000E3,5.722852381E1 +3.179407000E3,5.371032540E1 +3.179686000E3,5.375017527E1 +3.180066000E3,5.741446005E1 +3.180325000E3,5.595914402E1 +3.180624000E3,5.784989425E1 +3.180867000E3,5.818330240E1 +3.181112000E3,5.651638359E1 +3.181407000E3,5.400925398E1 +3.181645000E3,5.134681346E1 +3.181939000E3,5.540645654E1 +3.182189000E3,5.603348674E1 +3.182489000E3,5.612576596E1 +3.182726000E3,5.412821683E1 +3.183072000E3,5.364995955E1 +3.183373000E3,5.685067634E1 +3.183631000E3,5.292396423E1 +3.183913000E3,5.037305724E1 +3.184139000E3,5.458652507E1 +3.184386000E3,5.336216390E1 +3.184625000E3,5.355204553E1 +3.184861000E3,5.798216811E1 +3.185170000E3,5.037998219E1 +3.185412000E3,5.253320042E1 +3.185661000E3,5.864558083E1 +3.185944000E3,5.568855775E1 +3.186307000E3,6.065674046E1 +3.186594000E3,5.486017232E1 +3.186846000E3,5.354898396E1 +3.187128000E3,5.606629368E1 +3.187373000E3,5.887335608E1 +3.187646000E3,5.932986575E1 +3.187996000E3,5.618144782E1 +3.188254000E3,5.279151533E1 +3.188538000E3,5.980979660E1 +3.188819000E3,5.959008295E1 +3.189058000E3,5.757326838E1 +3.189324000E3,5.814251633E1 +3.189681000E3,6.715432083E1 +3.189929000E3,5.659786492E1 +3.190183000E3,6.813933576E1 +3.190493000E3,6.423896785E1 +3.190762000E3,6.115594562E1 +3.191063000E3,6.466877383E1 +3.191295000E3,6.400176112E1 +3.191543000E3,6.061189134E1 +3.191813000E3,6.334758009E1 +3.192062000E3,6.268892194E1 +3.192384000E3,6.255649695E1 +3.192688000E3,6.440152216E1 +3.193095000E3,6.083356984E1 +3.193368000E3,5.702207605E1 +3.193630000E3,6.129862703E1 +3.193931000E3,6.511359313E1 +3.194208000E3,6.424113032E1 +3.194458000E3,6.277957456E1 +3.194751000E3,6.067489213E1 +3.195007000E3,6.044409325E1 +3.195267000E3,5.902485869E1 +3.195523000E3,5.940450479E1 +3.195769000E3,5.629667180E1 +3.196103000E3,5.773687048E1 +3.196362000E3,5.275604571E1 +3.196676000E3,5.321996877E1 +3.196932000E3,4.952922772E1 +3.197191000E3,5.411849627E1 +3.197458000E3,5.575997519E1 +3.197718000E3,5.782402980E1 +3.197982000E3,6.092045522E1 +3.198228000E3,6.504329265E1 +3.198474000E3,5.972589974E1 +3.198713000E3,5.816644178E1 +3.198958000E3,6.190720604E1 +3.199249000E3,6.026051864E1 +3.199481000E3,6.064697026E1 +3.199744000E3,5.715218400E1 +3.200003000E3,5.509276249E1 +3.200281000E3,5.035485844E1 +3.200607000E3,5.745123346E1 +3.200874000E3,5.874041571E1 +3.201157000E3,6.540993071E1 +3.201407000E3,6.592699897E1 +3.201730000E3,5.826687879E1 +3.201982000E3,5.966898415E1 +3.202228000E3,5.928022084E1 +3.202546000E3,5.492659239E1 +3.202811000E3,5.843773228E1 +3.203091000E3,5.615478265E1 +3.203365000E3,5.378265559E1 +3.203611000E3,5.724493737E1 +3.203868000E3,5.517839982E1 +3.204137000E3,5.166422622E1 +3.204439000E3,5.966362579E1 +3.204692000E3,5.837831137E1 +3.204952000E3,5.873474045E1 +3.205216000E3,6.025432286E1 +3.205460000E3,5.709891269E1 +3.205710000E3,5.946766606E1 +3.206062000E3,5.575402329E1 +3.206367000E3,5.597615265E1 +3.206620000E3,5.417374311E1 +3.206869000E3,5.785505194E1 +3.207152000E3,5.973144393E1 +3.207405000E3,5.494944595E1 +3.207684000E3,5.859159641E1 +3.207982000E3,5.909726368E1 +3.208273000E3,6.221796591E1 +3.208541000E3,6.248597715E1 +3.208787000E3,6.143432195E1 +3.209043000E3,5.767415987E1 +3.209357000E3,6.087003136E1 +3.209636000E3,5.816954701E1 +3.209920000E3,5.644196424E1 +3.210232000E3,5.726504339E1 +3.210505000E3,5.384487818E1 +3.210769000E3,6.092886049E1 +3.211044000E3,5.910647270E1 +3.211306000E3,5.855040927E1 +3.211560000E3,6.886189365E1 +3.211803000E3,6.193548709E1 +3.212075000E3,5.895667088E1 +3.212320000E3,5.613734816E1 +3.212669000E3,6.365011223E1 +3.212934000E3,6.616065582E1 +3.213195000E3,4.911720228E1 +3.213460000E3,5.429539168E1 +3.213713000E3,5.374714305E1 +3.213991000E3,5.505703483E1 +3.214231000E3,5.216197587E1 +3.214486000E3,6.958974683E1 +3.214787000E3,6.410499727E1 +3.215047000E3,5.795707420E1 +3.215308000E3,6.210641451E1 +3.215581000E3,5.724864620E1 +3.215943000E3,5.588397230E1 +3.216221000E3,5.281586206E1 +3.216477000E3,5.616597876E1 +3.216735000E3,7.016181845E1 +3.216992000E3,7.008234703E1 +3.217238000E3,6.883905131E1 +3.217482000E3,6.039428517E1 +3.217722000E3,6.572225500E1 +3.217971000E3,6.862082655E1 +3.218221000E3,6.392739620E1 +3.218481000E3,6.757625304E1 +3.218798000E3,6.468895575E1 +3.219137000E3,5.941097234E1 +3.219443000E3,6.639331379E1 +3.219715000E3,6.512137194E1 +3.219985000E3,6.137345425E1 +3.220244000E3,6.566739727E1 +3.220494000E3,5.684090738E1 +3.220758000E3,4.865476042E1 +3.221022000E3,5.571447424E1 +3.221324000E3,5.050200483E1 +3.221601000E3,5.262698993E1 +3.221858000E3,5.385544431E1 +3.222185000E3,5.793526709E1 +3.222548000E3,5.957102097E1 +3.222796000E3,5.026005559E1 +3.223068000E3,5.164515600E1 +3.223344000E3,6.575405490E1 +3.223598000E3,6.925353270E1 +3.223876000E3,5.909751181E1 +3.224152000E3,5.561020058E1 +3.224416000E3,5.257890354E1 +3.224662000E3,5.262446891E1 +3.224954000E3,5.599583257E1 +3.225202000E3,5.286294623E1 +3.225483000E3,5.049109924E1 +3.225830000E3,6.154494550E1 +3.226096000E3,5.433068412E1 +3.226350000E3,5.256602683E1 +3.226652000E3,5.283535150E1 +3.226989000E3,5.811852242E1 +3.227251000E3,5.842389129E1 +3.227505000E3,5.524471208E1 +3.227782000E3,6.207780754E1 +3.228053000E3,6.165130850E1 +3.228302000E3,5.818085510E1 +3.228557000E3,5.646455559E1 +3.228823000E3,5.903487317E1 +3.229201000E3,5.460588060E1 +3.229471000E3,5.534537953E1 +3.229720000E3,5.492103159E1 +3.229976000E3,5.474982433E1 +3.230276000E3,6.311967749E1 +3.230531000E3,6.144237593E1 +3.230845000E3,6.204497775E1 +3.231123000E3,6.192920277E1 +3.231382000E3,6.726064707E1 +3.231675000E3,5.951322284E1 +3.231970000E3,5.620608761E1 +3.232324000E3,5.597726308E1 +3.232555000E3,5.737347613E1 +3.232845000E3,5.515502781E1 +3.233172000E3,5.977186730E1 +3.233435000E3,6.131606000E1 +3.233742000E3,5.610580070E1 +3.234000000E3,5.978218601E1 +3.234272000E3,6.319970701E1 +3.234581000E3,5.608562509E1 +3.234862000E3,6.169746582E1 +3.235159000E3,6.105762669E1 +3.235416000E3,5.369522011E1 +3.235667000E3,6.580487109E1 +3.235906000E3,5.797374086E1 +3.236200000E3,6.981267784E1 +3.236445000E3,6.229515865E1 +3.236695000E3,6.858181426E1 +3.236976000E3,5.740787399E1 +3.237218000E3,5.455964692E1 +3.237457000E3,7.204325578E1 +3.237720000E3,6.142914611E1 +3.238013000E3,5.768794211E1 +3.238280000E3,5.732491467E1 +3.238580000E3,5.793744264E1 +3.238882000E3,5.626325471E1 +3.239149000E3,5.661724856E1 +3.239424000E3,6.969605219E1 +3.239726000E3,6.482965407E1 +3.239976000E3,5.947270091E1 +3.240278000E3,5.913422796E1 +3.240576000E3,5.630232959E1 +3.240877000E3,5.956366293E1 +3.241128000E3,6.177688280E1 +3.241391000E3,5.851951662E1 +3.241664000E3,5.959787493E1 +3.241944000E3,5.765523372E1 +3.242310000E3,5.961443978E1 +3.242602000E3,5.811194000E1 +3.242910000E3,5.765320401E1 +3.243188000E3,6.631148602E1 +3.243420000E3,6.916377121E1 +3.243673000E3,6.435158828E1 +3.243925000E3,6.486926440E1 +3.244170000E3,5.506348984E1 +3.244475000E3,6.702899260E1 +3.244772000E3,6.244838658E1 +3.245003000E3,6.057959417E1 +3.245328000E3,6.103137126E1 +3.245581000E3,5.723671640E1 +3.245864000E3,5.125127512E1 +3.246123000E3,5.748187394E1 +3.246395000E3,6.148075018E1 +3.246669000E3,6.226010686E1 +3.246940000E3,5.273573389E1 +3.247233000E3,5.462141876E1 +3.247482000E3,5.946160846E1 +3.247728000E3,6.623014757E1 +3.248041000E3,5.823129903E1 +3.248289000E3,5.689561843E1 +3.248538000E3,5.851473913E1 +3.248910000E3,5.778207994E1 +3.249187000E3,6.109108533E1 +3.249462000E3,6.368024039E1 +3.249726000E3,6.527718864E1 +3.249983000E3,5.855658653E1 +3.250281000E3,5.718860903E1 +3.250534000E3,5.946900486E1 +3.250785000E3,5.688578668E1 +3.251033000E3,5.444863300E1 +3.251316000E3,5.885016251E1 +3.251570000E3,6.172482417E1 +3.251833000E3,6.833245599E1 +3.252200000E3,6.656973280E1 +3.252441000E3,6.663686281E1 +3.252721000E3,6.380106140E1 +3.252991000E3,6.113258977E1 +3.253242000E3,7.270243700E1 +3.253457000E3,7.442711013E1 +3.253706000E3,7.097589831E1 +3.253999000E3,5.740107596E1 +3.254237000E3,5.407351324E1 +3.254532000E3,6.235563554E1 +3.254777000E3,6.148535018E1 +3.255085000E3,6.767985005E1 +3.255346000E3,5.893302101E1 +3.255628000E3,5.834235484E1 +3.255897000E3,6.152524318E1 +3.256146000E3,6.124474706E1 +3.256419000E3,5.928557591E1 +3.256642000E3,5.798678480E1 +3.256921000E3,5.800318977E1 +3.257149000E3,5.813391626E1 +3.257392000E3,6.200496820E1 +3.257645000E3,6.268368020E1 +3.257945000E3,6.783162804E1 +3.258296000E3,7.343015115E1 +3.258556000E3,7.258165803E1 +3.258805000E3,6.753466802E1 +3.259117000E3,7.134403593E1 +3.259421000E3,6.813653179E1 +3.259673000E3,6.449045726E1 +3.259939000E3,7.144310958E1 +3.260188000E3,6.619195201E1 +3.260438000E3,6.990193438E1 +3.260692000E3,6.791067771E1 +3.260944000E3,7.014061601E1 +3.261191000E3,7.271368424E1 +3.261532000E3,6.889323528E1 +3.261794000E3,6.087932672E1 +3.262047000E3,6.139975131E1 +3.262322000E3,6.684035582E1 +3.262586000E3,6.977079140E1 +3.262861000E3,6.711211223E1 +3.263137000E3,6.891542739E1 +3.263415000E3,6.450575202E1 +3.263671000E3,6.375083447E1 +3.263946000E3,6.525419018E1 +3.264250000E3,6.323969714E1 +3.264517000E3,7.351653517E1 +3.264813000E3,7.240916805E1 +3.265107000E3,6.991986455E1 +3.265349000E3,6.767718353E1 +3.265598000E3,7.020318016E1 +3.265847000E3,6.593396207E1 +3.266149000E3,6.776886494E1 +3.266400000E3,6.796917668E1 +3.266653000E3,6.234495715E1 +3.266897000E3,6.492303298E1 +3.267153000E3,6.551968402E1 +3.267398000E3,6.154456079E1 +3.267647000E3,6.087933145E1 +3.267896000E3,6.053677169E1 +3.268248000E3,6.893351216E1 +3.268513000E3,6.695525456E1 +3.268817000E3,6.263553940E1 +3.269070000E3,5.965971741E1 +3.269315000E3,6.136430702E1 +3.269582000E3,7.398506568E1 +3.269828000E3,7.145137487E1 +3.270128000E3,7.238266470E1 +3.270371000E3,7.289527120E1 +3.270623000E3,7.428636164E1 +3.270931000E3,7.248535741E1 +3.271185000E3,7.399445608E1 +3.271518000E3,7.355251323E1 +3.271795000E3,7.296660624E1 +3.272081000E3,7.131368475E1 +3.272358000E3,7.068792091E1 +3.272581000E3,6.623699177E1 +3.272835000E3,5.258987188E1 +3.273093000E3,6.044165509E1 +3.273337000E3,6.879817511E1 +3.273635000E3,6.970693453E1 +3.273931000E3,7.169623139E1 +3.274180000E3,7.112396098E1 +3.274428000E3,7.190035192E1 +3.274761000E3,7.089393329E1 +3.275038000E3,6.995869622E1 +3.275323000E3,6.900781199E1 +3.275569000E3,6.766263448E1 +3.275860000E3,6.881814388E1 +3.276116000E3,6.821596427E1 +3.276370000E3,6.896702672E1 +3.276649000E3,6.827119542E1 +3.276914000E3,6.795818984E1 +3.277171000E3,7.025945887E1 +3.277482000E3,6.685661764E1 +3.277741000E3,6.810082518E1 +3.278078000E3,6.902136690E1 +3.278358000E3,6.568611650E1 +3.278604000E3,7.123802039E1 +3.278848000E3,6.300940961E1 +3.279144000E3,6.292057856E1 +3.279382000E3,6.654167697E1 +3.279622000E3,6.808014942E1 +3.279917000E3,6.902808966E1 +3.280160000E3,6.685153426E1 +3.280471000E3,6.435621527E1 +3.280770000E3,6.765080490E1 +3.281059000E3,6.808248309E1 +3.281352000E3,6.477485011E1 +3.281602000E3,5.628454157E1 +3.281867000E3,5.800927668E1 +3.282130000E3,7.131716325E1 +3.282389000E3,7.355208108E1 +3.282663000E3,7.108584109E1 +3.282932000E3,5.710440961E1 +3.283191000E3,5.329699257E1 +3.283451000E3,5.003319724E1 +3.283709000E3,5.081704645E1 +3.284003000E3,5.075383483E1 +3.284259000E3,5.431712692E1 +3.284628000E3,5.277582101E1 +3.284917000E3,6.061307876E1 +3.285214000E3,6.168657926E1 +3.285472000E3,5.854988033E1 +3.285744000E3,4.913527641E1 +3.285999000E3,5.563664353E1 +3.286250000E3,5.841488419E1 +3.286517000E3,6.437604518E1 +3.286777000E3,6.124264602E1 +3.287035000E3,5.886049633E1 +3.287300000E3,6.196549102E1 +3.287630000E3,6.776239267E1 +3.287951000E3,6.702605133E1 +3.288259000E3,5.376695086E1 +3.288499000E3,5.095339550E1 +3.288807000E3,5.078317550E1 +3.289117000E3,5.659564827E1 +3.289411000E3,7.136818215E1 +3.289684000E3,6.629708396E1 +3.289982000E3,7.133804213E1 +3.290271000E3,6.994811010E1 +3.290544000E3,6.532422657E1 +3.290800000E3,6.451013008E1 +3.291132000E3,6.261305598E1 +3.291418000E3,6.696223022E1 +3.291676000E3,4.827412656E1 +3.291930000E3,4.724575587E1 +3.292202000E3,4.846609938E1 +3.292501000E3,5.276700476E1 +3.292822000E3,5.071547801E1 +3.293065000E3,4.944777186E1 +3.293349000E3,4.466809801E1 +3.293583000E3,4.432750067E1 +3.293832000E3,5.165471909E1 +3.294078000E3,4.606912616E1 +3.294427000E3,4.826074528E1 +3.294712000E3,4.434240888E1 +3.294985000E3,4.684583968E1 +3.295286000E3,5.104787864E1 +3.295548000E3,4.839146586E1 +3.295807000E3,5.479537456E1 +3.296066000E3,5.055213000E1 +3.296324000E3,3.933656037E1 +3.296585000E3,4.513652817E1 +3.296840000E3,4.805617654E1 +3.297099000E3,4.453428427E1 +3.297354000E3,5.205427791E1 +3.297705000E3,5.001223291E1 +3.297948000E3,5.342697607E1 +3.298200000E3,5.619467550E1 +3.298461000E3,5.565459347E1 +3.298738000E3,5.819577446E1 +3.298988000E3,5.077826383E1 +3.299236000E3,5.142261821E1 +3.299478000E3,5.610754709E1 +3.299775000E3,5.248015066E1 +3.300011000E3,4.742520943E1 +3.300325000E3,5.519481303E1 +3.300626000E3,4.628613419E1 +3.300959000E3,4.430731849E1 +3.301224000E3,4.380193782E1 +3.301473000E3,4.690647127E1 +3.301746000E3,4.845294386E1 +3.302057000E3,4.912389116E1 +3.302307000E3,5.155191791E1 +3.302563000E3,5.240902416E1 +3.302820000E3,4.677306339E1 +3.303083000E3,5.037145513E1 +3.303327000E3,4.506752152E1 +3.303573000E3,4.920686196E1 +3.303857000E3,4.935493485E1 +3.304189000E3,4.415801479E1 +3.304459000E3,4.423531181E1 +3.304768000E3,3.874162391E1 +3.305030000E3,4.189958295E1 +3.305333000E3,4.005870516E1 +3.305579000E3,5.072183491E1 +3.305843000E3,4.113754863E1 +3.306140000E3,5.548273149E1 +3.306383000E3,5.383424402E1 +3.306628000E3,5.205779319E1 +3.306877000E3,4.592085607E1 +3.307206000E3,5.092451979E1 +3.307449000E3,4.823039740E1 +3.307720000E3,5.026090042E1 +3.307982000E3,5.794901070E1 +3.308198000E3,5.239372011E1 +3.308502000E3,5.024517162E1 +3.308742000E3,4.253471720E1 +3.309044000E3,4.105523794E1 +3.309340000E3,3.028117703E1 +3.309596000E3,2.809150222E1 +3.309864000E3,2.626060468E1 +3.310135000E3,5.055452447E1 +3.310501000E3,7.199271156E1 +3.310777000E3,7.172468430E1 +3.311045000E3,7.282926204E1 +3.311313000E3,7.145580608E1 +3.311562000E3,7.218798353E1 +3.311867000E3,7.081603642E1 +3.312107000E3,7.122522782E1 +3.312348000E3,7.013128466E1 +3.312672000E3,7.138239962E1 +3.312976000E3,7.589001323E1 +3.313216000E3,6.988466628E1 +3.313506000E3,6.521999768E1 +3.313853000E3,5.781158269E1 +3.314129000E3,5.698768013E1 +3.314381000E3,5.954050680E1 +3.314636000E3,5.529467486E1 +3.314903000E3,6.884377149E1 +3.315163000E3,7.293133775E1 +3.315448000E3,7.186875504E1 +3.315697000E3,6.942752239E1 +3.315995000E3,6.899930460E1 +3.316247000E3,6.333687203E1 +3.316557000E3,6.820286469E1 +3.316856000E3,7.371764624E1 +3.317124000E3,7.475494405E1 +3.317411000E3,7.135849387E1 +3.317718000E3,5.726081152E1 +3.317965000E3,5.650406291E1 +3.318233000E3,4.901561410E1 +3.318490000E3,6.881993797E1 +3.318742000E3,7.251465406E1 +3.319010000E3,6.395213402E1 +3.319311000E3,7.197127027E1 +3.319615000E3,6.948849738E1 +3.319862000E3,6.664503435E1 +3.320187000E3,6.933008182E1 +3.320443000E3,6.121514242E1 +3.320753000E3,7.017439611E1 +3.321063000E3,7.393277725E1 +3.321329000E3,7.045535337E1 +3.321643000E3,6.985180357E1 +3.321896000E3,7.158196073E1 +3.322168000E3,6.999348148E1 +3.322483000E3,6.872091406E1 +3.322823000E3,6.386396976E1 +3.323116000E3,6.891641311E1 +3.323355000E3,6.790436633E1 +3.323733000E3,6.190629476E1 +3.324010000E3,6.307072034E1 +3.324306000E3,6.459812141E1 +3.324591000E3,6.928529051E1 +3.324846000E3,6.953301961E1 +3.325158000E3,6.946121501E1 +3.325471000E3,6.177266257E1 +3.325739000E3,6.057146439E1 +3.326000000E3,6.021658005E1 +3.326269000E3,6.588088303E1 +3.326536000E3,6.594068529E1 +3.326797000E3,5.957632846E1 +3.327117000E3,5.830018402E1 +3.327415000E3,5.952820917E1 +3.327678000E3,5.996997483E1 +3.327928000E3,6.374276040E1 +3.328204000E3,6.484785648E1 +3.328504000E3,6.253699213E1 +3.328743000E3,6.495848159E1 +3.329001000E3,6.390198219E1 +3.329317000E3,6.107203426E1 +3.329613000E3,6.678300135E1 +3.329901000E3,6.048531373E1 +3.330164000E3,6.806621622E1 +3.330501000E3,6.592361883E1 +3.330795000E3,6.652249790E1 +3.331059000E3,6.079261624E1 +3.331342000E3,7.055285274E1 +3.331620000E3,6.885169705E1 +3.331870000E3,6.676175072E1 +3.332125000E3,6.653456857E1 +3.332410000E3,6.539948315E1 +3.332658000E3,6.741723145E1 +3.332915000E3,5.982571500E1 +3.333236000E3,7.234399288E1 +3.333559000E3,7.555637810E1 +3.333801000E3,7.132946849E1 +3.334053000E3,7.012473325E1 +3.334345000E3,7.083313400E1 +3.334658000E3,6.159204912E1 +3.334951000E3,5.416652771E1 +3.335187000E3,5.331536045E1 +3.335488000E3,5.516853140E1 +3.335780000E3,5.755380245E1 +3.336028000E3,6.034949591E1 +3.336335000E3,5.933559907E1 +3.336577000E3,6.200660494E1 +3.336975000E3,6.752581884E1 +3.337230000E3,6.552308109E1 +3.337509000E3,6.043162012E1 +3.337804000E3,6.346167875E1 +3.338097000E3,5.762665769E1 +3.338354000E3,6.046465836E1 +3.338657000E3,5.841838084E1 +3.338937000E3,5.426549819E1 +3.339182000E3,5.312925890E1 +3.339425000E3,5.904532039E1 +3.339705000E3,5.548841740E1 +3.339970000E3,6.467955136E1 +3.340311000E3,6.518540616E1 +3.340567000E3,6.130157495E1 +3.340843000E3,4.234380604E1 +3.341102000E3,3.685811557E1 +3.341367000E3,5.229521155E1 +3.341631000E3,4.577123603E1 +3.341913000E3,5.522804687E1 +3.342191000E3,7.219670231E1 +3.342497000E3,6.138541536E1 +3.342739000E3,5.883033505E1 +3.342994000E3,5.692990468E1 +3.343272000E3,5.784770175E1 +3.343584000E3,5.851150722E1 +3.343847000E3,7.127137910E1 +3.344137000E3,7.004437015E1 +3.344432000E3,6.719880262E1 +3.344677000E3,6.266500726E1 +3.344966000E3,6.662051616E1 +3.345209000E3,6.259160849E1 +3.345462000E3,6.521765959E1 +3.345762000E3,6.373477950E1 +3.346056000E3,5.976833176E1 +3.346294000E3,5.557373783E1 +3.346597000E3,5.486821605E1 +3.346842000E3,4.854970484E1 +3.347096000E3,6.338774242E1 +3.347415000E3,6.646909489E1 +3.347712000E3,6.370164725E1 +3.347950000E3,6.577012972E1 +3.348257000E3,6.536203326E1 +3.348509000E3,5.777033235E1 +3.348799000E3,6.942121279E1 +3.349070000E3,6.552465655E1 +3.349329000E3,6.400867966E1 +3.349583000E3,5.955829212E1 +3.349911000E3,6.233007104E1 +3.350154000E3,7.360271557E1 +3.350432000E3,7.402471070E1 +3.350716000E3,7.225249055E1 +3.350966000E3,6.654334459E1 +3.351200000E3,6.590758849E1 +3.351507000E3,6.143698167E1 +3.351805000E3,7.197722167E1 +3.352079000E3,6.778594348E1 +3.352307000E3,5.712392879E1 +3.352566000E3,5.659236121E1 +3.352870000E3,5.352359430E1 +3.353127000E3,5.362353429E1 +3.353366000E3,5.964860406E1 +3.353638000E3,7.164177428E1 +3.353890000E3,6.730234717E1 +3.354173000E3,5.336089185E1 +3.354435000E3,4.770751864E1 +3.354689000E3,4.833001031E1 +3.354956000E3,4.464972004E1 +3.355220000E3,6.809720152E1 +3.355493000E3,7.032616040E1 +3.355723000E3,7.137092547E1 +3.356052000E3,7.106236065E1 +3.356287000E3,7.302101107E1 +3.356599000E3,6.868512076E1 +3.356867000E3,7.134905494E1 +3.357133000E3,7.032184319E1 +3.357463000E3,6.484515560E1 +3.357753000E3,5.949029357E1 +3.358081000E3,6.553405106E1 +3.358385000E3,5.460622041E1 +3.358634000E3,4.798111952E1 +3.358902000E3,5.356090224E1 +3.359186000E3,5.091993104E1 +3.359516000E3,5.980463665E1 +3.359805000E3,5.623340998E1 +3.360124000E3,4.885342740E1 +3.360404000E3,4.536632542E1 +3.360660000E3,5.726647509E1 +3.360941000E3,6.266477325E1 +3.361245000E3,5.265432523E1 +3.361521000E3,4.746518361E1 +3.361777000E3,5.341135388E1 +3.362038000E3,5.094337921E1 +3.362292000E3,5.832737886E1 +3.362616000E3,5.247742127E1 +3.363049000E3,5.123926483E1 +3.363313000E3,4.482127206E1 +3.363600000E3,4.813050338E1 +3.363848000E3,5.751744958E1 +3.364157000E3,5.045245795E1 diff --git a/04_loesungen/01_processing/alg15_xydiagramm_loesung_a2/alg15_xydiagramm_loesung_a2.pde b/04_loesungen/01_processing/alg15_xydiagramm_loesung_a2/alg15_xydiagramm_loesung_a2.pde new file mode 100644 index 0000000..a27c8be --- /dev/null +++ b/04_loesungen/01_processing/alg15_xydiagramm_loesung_a2/alg15_xydiagramm_loesung_a2.pde @@ -0,0 +1,108 @@ +/** + * XY-Diagramm für Schalldruckpegel, Zahlen werden aus CSV-Datei gelesen. + * + * @author Schaller + * @version 29.11.18 + */ + + // Liste mit allen Werten +double[] x_werte; +double[] y_werte; + +// Hilfsvariablen für die Suche +int akt_maximum=-1; // aktuell groesstes Element +int akt=-1; // aktuell untersuchtes Element +int verzoegerung=0; // Geschwindigkeit der Ausführung + +// Schriften +PFont kleineSchrift; +PFont grosseSchrift; + + +public void setup() { + // Zeichenfläche erzeugen + size(1000, 700); + background(0); + // Schriften laden + kleineSchrift = loadFont("KleineSchrift.vlw"); + grosseSchrift = loadFont("GrosseSchrift.vlw"); + + // CSV-Datei laden und anzeigen + ladeTabelle("Amplitudes.csv"); + stroke(250,250,200); + zeichneBalken(); +} + +public void draw() { + zeichneBalken(); +} + + //<>// +public void ladeTabelle(String name) { + // Tabelle aus CSV-Datei laden //<>// + Table csv = loadTable(name, "header,csv"); + + if (csv != null && csv.getColumnCount()==2) { + + // Initialisiere Arrays, in die alle Zeilen der Tabelle passen + x_werte = new double[csv.getRowCount()]; + y_werte = new double[csv.getRowCount()]; + + // Fülle die Arrays mit Werten aus der Tabelle + for (int i = 0; i < x_werte.length; i++) { + // Lies Wert aus der i. Zeile und der Spalte "Punkte" bzw. "Name" + x_werte[i] = csv.getDouble(i, "Time (s)"); + y_werte[i] = csv.getDouble(i, "Sound pressure level (dB)"); + } + } +} + +public void zeichneBalken() { + + + + // Überschrift + fill(255,255,255); + textFont(grosseSchrift); + text("Lärmpegel", 2, 20); + textFont(kleineSchrift); + + // Alle Einträge darstellen + if (x_werte != null) { + for (int i = 0; i< x_werte.length; i++) { + + fill(20,25,165); + + // Balkendiagramm zeichnen + int y = (int) y_werte[i]; + int x = (int) x_werte[i]; + point(x,y); + } + } +} + + +public int sucheMaximum(int[] zahlen) { + // Sind überhaupt Daten da? + if (zahlen.length==0 ) { + return -1; + } + + // Startwerte setzen + akt_maximum = 0; + akt = 1; + + // Alle Arrayelemente untersuchen + while (akt < zahlen.length) { + + // Neues größtes Element?? + if (zahlen[akt]> zahlen[akt_maximum]) { + // Dann merke dir das neue + akt_maximum = akt; + + } + akt = akt + 1; + } + // Gib Position des größten Elements zurück + return akt_maximum; +} //<>// diff --git a/04_loesungen/01_processing/alg15_xydiagramm_loesung_a2/data/GrosseSchrift.vlw b/04_loesungen/01_processing/alg15_xydiagramm_loesung_a2/data/GrosseSchrift.vlw new file mode 100644 index 0000000..497c8c8 Binary files /dev/null and b/04_loesungen/01_processing/alg15_xydiagramm_loesung_a2/data/GrosseSchrift.vlw differ diff --git a/04_loesungen/01_processing/alg15_xydiagramm_loesung_a2/data/KleineSchrift.vlw b/04_loesungen/01_processing/alg15_xydiagramm_loesung_a2/data/KleineSchrift.vlw new file mode 100644 index 0000000..ab1241a Binary files /dev/null and b/04_loesungen/01_processing/alg15_xydiagramm_loesung_a2/data/KleineSchrift.vlw differ diff --git a/04_loesungen/01_processing/alg15_xydiagramm_loesung_a2/punkte.csv b/04_loesungen/01_processing/alg15_xydiagramm_loesung_a2/punkte.csv new file mode 100644 index 0000000..d6e8dfd --- /dev/null +++ b/04_loesungen/01_processing/alg15_xydiagramm_loesung_a2/punkte.csv @@ -0,0 +1,6 @@ +"Name","Punkte" +Niko,216 +Klaus,591 +Anna,857 +Lena,180 +Winfried,168 diff --git a/04_loesungen/01_processing/alg15_xydiagramm_loesung_a3/Amplitudes.csv b/04_loesungen/01_processing/alg15_xydiagramm_loesung_a3/Amplitudes.csv new file mode 100644 index 0000000..bc2151b --- /dev/null +++ b/04_loesungen/01_processing/alg15_xydiagramm_loesung_a3/Amplitudes.csv @@ -0,0 +1,12219 @@ +"Time (s)","Sound pressure level (dB)" +0.000000000E0,6.133205686E1 +1.130000000E-1,5.602431153E1 +3.840000000E-1,3.897519867E1 +7.780000000E-1,4.208195145E1 +1.036000000E0,3.840936313E1 +1.305000000E0,3.561092139E1 +1.587000000E0,4.663257633E1 +1.829000000E0,5.311883882E1 +2.084000000E0,5.299431820E1 +2.357000000E0,5.747397858E1 +2.643000000E0,5.626338063E1 +2.949000000E0,5.790811120E1 +3.238000000E0,5.874544026E1 +3.497000000E0,5.736162139E1 +3.775000000E0,5.897817442E1 +4.097000000E0,5.789822970E1 +4.357000000E0,5.312015799E1 +4.626000000E0,5.710192134E1 +4.941000000E0,6.275087240E1 +5.235000000E0,5.784358767E1 +5.535000000E0,5.388577420E1 +5.827000000E0,5.403495101E1 +6.090000000E0,5.428355086E1 +6.339000000E0,6.064473144E1 +6.616000000E0,6.271091291E1 +6.850000000E0,6.982615367E1 +7.128000000E0,7.050308750E1 +7.487000000E0,5.395311298E1 +7.760000000E0,5.036401582E1 +8.065000000E0,4.614125463E1 +8.361000000E0,6.244776407E1 +8.614000000E0,6.315719526E1 +8.862000000E0,5.981740395E1 +9.123000000E0,5.907292535E1 +9.374000000E0,5.661523092E1 +9.665000000E0,6.210368813E1 +9.948000000E0,6.140958115E1 +1.021100000E1,5.697007655E1 +1.058300000E1,5.460455934E1 +1.084000000E1,5.408516231E1 +1.115300000E1,5.907221377E1 +1.142100000E1,6.113412429E1 +1.172700000E1,6.267949704E1 +1.197100000E1,6.245109870E1 +1.226500000E1,6.342534529E1 +1.255800000E1,6.810008108E1 +1.287100000E1,6.036891848E1 +1.313400000E1,5.913231814E1 +1.342700000E1,5.973818566E1 +1.371600000E1,5.534371651E1 +1.401200000E1,5.694514867E1 +1.431200000E1,6.134814982E1 +1.461100000E1,5.900023912E1 +1.484600000E1,5.689908400E1 +1.515800000E1,5.296474858E1 +1.544000000E1,5.608528071E1 +1.569300000E1,5.728560404E1 +1.596900000E1,5.837984103E1 +1.620100000E1,5.718896638E1 +1.649200000E1,5.909973037E1 +1.678900000E1,5.705554272E1 +1.716300000E1,6.079937758E1 +1.747400000E1,5.618116117E1 +1.775200000E1,5.519881157E1 +1.803800000E1,5.402386340E1 +1.829100000E1,5.678484358E1 +1.858100000E1,5.954639303E1 +1.882300000E1,6.030021638E1 +1.908000000E1,5.588340744E1 +1.934400000E1,5.668691200E1 +1.958800000E1,6.042765467E1 +1.983400000E1,5.839794223E1 +2.008500000E1,5.457976882E1 +2.039500000E1,5.974390604E1 +2.064000000E1,6.049774386E1 +2.092900000E1,6.029857781E1 +2.117800000E1,6.116406203E1 +2.142700000E1,5.664722837E1 +2.173400000E1,5.823294996E1 +2.203100000E1,5.517538657E1 +2.229000000E1,5.322823206E1 +2.259900000E1,6.180779467E1 +2.285300000E1,6.106216386E1 +2.314900000E1,5.883321877E1 +2.347100000E1,6.045262422E1 +2.375000000E1,6.163931220E1 +2.406000000E1,4.841181734E1 +2.432800000E1,4.372149986E1 +2.462900000E1,5.625563946E1 +2.487100000E1,5.672759349E1 +2.513200000E1,5.896193725E1 +2.540800000E1,5.893011728E1 +2.566400000E1,5.857261268E1 +2.596700000E1,5.859012974E1 +2.621900000E1,5.635586832E1 +2.648700000E1,5.350948293E1 +2.673900000E1,5.430043092E1 +2.701400000E1,5.666610976E1 +2.727500000E1,5.218421407E1 +2.753100000E1,5.689076583E1 +2.782000000E1,5.796831886E1 +2.806900000E1,5.608205064E1 +2.831700000E1,5.482273815E1 +2.861600000E1,5.392425499E1 +2.888300000E1,5.329416010E1 +2.914800000E1,5.366916703E1 +2.940200000E1,5.280847155E1 +2.968000000E1,5.333298066E1 +2.994300000E1,5.497085471E1 +3.031200000E1,5.753094076E1 +3.057900000E1,5.655381974E1 +3.086100000E1,5.517704804E1 +3.115600000E1,5.592585858E1 +3.140700000E1,6.212826207E1 +3.166000000E1,5.699502474E1 +3.193500000E1,6.025129057E1 +3.223100000E1,5.686166208E1 +3.247300000E1,5.807641915E1 +3.271900000E1,6.065155151E1 +3.296400000E1,5.961384387E1 +3.320500000E1,6.119064420E1 +3.354400000E1,5.548464633E1 +3.378000000E1,5.699661616E1 +3.408000000E1,5.653770482E1 +3.438000000E1,5.083503664E1 +3.468200000E1,5.695639918E1 +3.495800000E1,5.566535489E1 +3.524700000E1,5.914853092E1 +3.552700000E1,5.758441289E1 +3.576600000E1,6.085665801E1 +3.606700000E1,5.862586334E1 +3.630600000E1,5.096841655E1 +3.662200000E1,6.009246966E1 +3.689400000E1,5.981749726E1 +3.715300000E1,6.108830629E1 +3.740300000E1,5.724514841E1 +3.766500000E1,5.934850613E1 +3.793000000E1,5.725470328E1 +3.819100000E1,5.843556167E1 +3.847700000E1,5.697759761E1 +3.874000000E1,5.721548979E1 +3.901600000E1,5.649629904E1 +3.927200000E1,5.850326911E1 +3.954600000E1,5.691951660E1 +3.993900000E1,5.357092442E1 +4.023400000E1,5.817046878E1 +4.053000000E1,5.554327077E1 +4.081200000E1,5.802928061E1 +4.103900000E1,5.663899845E1 +4.128700000E1,5.494654466E1 +4.155800000E1,5.564956216E1 +4.181900000E1,5.663250304E1 +4.211300000E1,5.652236278E1 +4.238100000E1,5.614203459E1 +4.264000000E1,5.433145844E1 +4.295000000E1,6.132645299E1 +4.326200000E1,6.040612545E1 +4.351400000E1,5.905916902E1 +4.377100000E1,5.885516023E1 +4.401000000E1,5.514814582E1 +4.430800000E1,5.663232510E1 +4.455900000E1,5.055807811E1 +4.482100000E1,5.614950318E1 +4.513300000E1,6.025044420E1 +4.537500000E1,5.643182261E1 +4.568900000E1,5.709089314E1 +4.600500000E1,5.480136123E1 +4.624500000E1,5.924046686E1 +4.656900000E1,6.172358505E1 +4.684100000E1,5.645515217E1 +4.711100000E1,6.002156043E1 +4.736300000E1,6.182669975E1 +4.759700000E1,5.557741963E1 +4.786700000E1,5.598662295E1 +4.818300000E1,5.664767890E1 +4.847900000E1,5.956168629E1 +4.874200000E1,5.713315811E1 +4.898900000E1,5.765479272E1 +4.931400000E1,5.507101982E1 +4.961600000E1,5.361677606E1 +4.990000000E1,5.558547080E1 +5.019600000E1,5.402951441E1 +5.046500000E1,5.805429700E1 +5.078800000E1,5.327636151E1 +5.110300000E1,4.980825483E1 +5.137100000E1,5.290981249E1 +5.165200000E1,4.817864123E1 +5.190100000E1,5.585478693E1 +5.214500000E1,5.457392293E1 +5.242900000E1,5.449921652E1 +5.272500000E1,5.537781025E1 +5.302100000E1,5.598018287E1 +5.326000000E1,5.612851081E1 +5.355800000E1,5.312697891E1 +5.384800000E1,5.799703575E1 +5.409200000E1,5.662162553E1 +5.433900000E1,5.392344795E1 +5.459100000E1,5.398098819E1 +5.494900000E1,5.489231889E1 +5.527100000E1,5.658153835E1 +5.552800000E1,5.624900056E1 +5.589500000E1,4.979935744E1 +5.616900000E1,5.146998424E1 +5.645400000E1,5.878755245E1 +5.668600000E1,5.846227673E1 +5.694400000E1,5.977267383E1 +5.726200000E1,5.508647523E1 +5.754400000E1,5.138853207E1 +5.784300000E1,5.327451232E1 +5.808600000E1,5.887142781E1 +5.837800000E1,5.858062431E1 +5.862200000E1,5.917458096E1 +5.889700000E1,6.050411670E1 +5.926300000E1,5.908687144E1 +5.952100000E1,5.570790758E1 +5.981900000E1,5.444849000E1 +6.006100000E1,5.201240285E1 +6.032000000E1,4.755830762E1 +6.061900000E1,5.204388424E1 +6.086500000E1,5.626914911E1 +6.117500000E1,5.280379974E1 +6.142900000E1,5.093923019E1 +6.173000000E1,5.460427137E1 +6.197800000E1,5.299601182E1 +6.230600000E1,5.424208739E1 +6.257600000E1,5.253762352E1 +6.283700000E1,5.544043962E1 +6.309800000E1,5.527614156E1 +6.335400000E1,5.747262922E1 +6.360700000E1,5.468151445E1 +6.384900000E1,5.582905565E1 +6.410700000E1,5.802400474E1 +6.435000000E1,5.204893636E1 +6.459600000E1,5.280146425E1 +6.486300000E1,4.876648093E1 +6.509700000E1,5.311679703E1 +6.537500000E1,5.192778643E1 +6.571400000E1,5.346709918E1 +6.597900000E1,5.370921552E1 +6.627900000E1,5.676705279E1 +6.652200000E1,5.832258643E1 +6.676600000E1,6.257736406E1 +6.703100000E1,6.295448429E1 +6.737800000E1,6.100964383E1 +6.766100000E1,5.182636016E1 +6.790700000E1,4.952717893E1 +6.821100000E1,5.667475715E1 +6.850300000E1,5.872819054E1 +6.882100000E1,6.004516195E1 +6.907300000E1,5.559244143E1 +6.935100000E1,5.600379936E1 +6.961500000E1,5.338006499E1 +6.987600000E1,5.360104859E1 +7.011900000E1,4.644905289E1 +7.037100000E1,4.528909123E1 +7.067200000E1,5.787885076E1 +7.091600000E1,5.602551032E1 +7.115700000E1,5.989544193E1 +7.142200000E1,6.110384869E1 +7.167900000E1,5.887448069E1 +7.192600000E1,5.797896456E1 +7.226000000E1,5.965665129E1 +7.251000000E1,6.477744226E1 +7.281200000E1,6.243775536E1 +7.310800000E1,5.921576979E1 +7.335600000E1,6.629420582E1 +7.364100000E1,6.683725429E1 +7.392300000E1,5.758295449E1 +7.418800000E1,5.654909286E1 +7.448600000E1,5.881341247E1 +7.472100000E1,5.546609910E1 +7.498300000E1,5.586542777E1 +7.526600000E1,5.463216262E1 +7.558500000E1,5.947397496E1 +7.586200000E1,6.218459899E1 +7.609800000E1,6.134189272E1 +7.635800000E1,5.727526170E1 +7.666700000E1,5.579062978E1 +7.699300000E1,6.015063828E1 +7.729000000E1,6.022787424E1 +7.756300000E1,5.646982462E1 +7.782200000E1,6.005734442E1 +7.813200000E1,5.950776839E1 +7.842200000E1,6.314009710E1 +7.880400000E1,5.425753266E1 +7.910400000E1,5.909139002E1 +7.935300000E1,5.600377253E1 +7.962300000E1,6.036368528E1 +7.993700000E1,5.940415340E1 +8.018900000E1,6.102152187E1 +8.050000000E1,6.619104713E1 +8.074000000E1,6.149981675E1 +8.098900000E1,5.978899259E1 +8.123800000E1,5.963150500E1 +8.150300000E1,6.509054947E1 +8.181300000E1,6.387458039E1 +8.220700000E1,6.421798778E1 +8.246100000E1,6.092500605E1 +8.271900000E1,6.039313205E1 +8.297100000E1,5.885189543E1 +8.328000000E1,6.068901175E1 +8.355600000E1,6.531581124E1 +8.381900000E1,6.460984287E1 +8.407800000E1,6.281147078E1 +8.435000000E1,5.961599483E1 +8.463400000E1,5.915457491E1 +8.489200000E1,5.383227231E1 +8.513000000E1,5.278474817E1 +8.551100000E1,6.165964712E1 +8.574900000E1,6.442604107E1 +8.600700000E1,6.551005247E1 +8.626000000E1,6.660338206E1 +8.650900000E1,6.304014634E1 +8.676000000E1,6.488065719E1 +8.701800000E1,6.416881833E1 +8.728000000E1,5.892166498E1 +8.754500000E1,5.946249393E1 +8.785000000E1,6.506678358E1 +8.809400000E1,5.703264442E1 +8.840500000E1,6.164086486E1 +8.876300000E1,6.276173959E1 +8.906100000E1,5.818071871E1 +8.930500000E1,5.844394446E1 +8.956300000E1,5.657440647E1 +8.987400000E1,6.120356137E1 +9.011500000E1,6.094306560E1 +9.041100000E1,5.978472131E1 +9.065500000E1,6.008128664E1 +9.092400000E1,5.758286780E1 +9.123300000E1,5.353387594E1 +9.151600000E1,5.676204998E1 +9.183800000E1,5.245702159E1 +9.218200000E1,5.642589170E1 +9.243600000E1,5.542467479E1 +9.268000000E1,5.580829615E1 +9.297600000E1,5.148061441E1 +9.322800000E1,4.635974806E1 +9.353200000E1,5.465579762E1 +9.377300000E1,5.154999739E1 +9.402200000E1,5.544992474E1 +9.427900000E1,5.302390200E1 +9.453300000E1,5.127982623E1 +9.478800000E1,5.263086656E1 +9.503100000E1,5.128121484E1 +9.532100000E1,5.061466876E1 +9.557700000E1,5.328260476E1 +9.582800000E1,5.101663724E1 +9.607100000E1,5.400893265E1 +9.640400000E1,5.756552061E1 +9.665500000E1,5.665487755E1 +9.690400000E1,5.719000980E1 +9.715400000E1,5.593995548E1 +9.740400000E1,5.420194495E1 +9.771300000E1,4.867232074E1 +9.802100000E1,5.053798103E1 +9.830700000E1,4.874294948E1 +9.857500000E1,5.754515654E1 +9.883700000E1,5.863618568E1 +9.909700000E1,6.070195076E1 +9.935300000E1,5.434874196E1 +9.961300000E1,6.163600431E1 +9.987300000E1,5.555228218E1 +1.001200000E2,5.733850418E1 +1.003910000E2,6.133233800E1 +1.006620000E2,5.853313440E1 +1.009020000E2,5.435835494E1 +1.011680000E2,5.329891948E1 +1.014680000E2,5.356470018E1 +1.018410000E2,5.574288130E1 +1.021370000E2,5.927571979E1 +1.024000000E2,5.789956910E1 +1.026980000E2,6.081738139E1 +1.029540000E2,5.575615853E1 +1.032580000E2,5.337382111E1 +1.035140000E2,5.562761746E1 +1.038150000E2,5.905624776E1 +1.041040000E2,5.696105750E1 +1.043990000E2,6.170938149E1 +1.046370000E2,5.823687000E1 +1.049080000E2,6.066674703E1 +1.051740000E2,6.220969933E1 +1.054810000E2,5.755805236E1 +1.057660000E2,5.735691579E1 +1.060450000E2,5.761618087E1 +1.063040000E2,5.188413372E1 +1.065680000E2,5.643639822E1 +1.068740000E2,5.312430876E1 +1.071280000E2,5.924995828E1 +1.073900000E2,5.546187342E1 +1.076920000E2,5.474389270E1 +1.079790000E2,5.600814816E1 +1.082440000E2,5.561453096E1 +1.084980000E2,5.408559240E1 +1.087580000E2,5.622058302E1 +1.090160000E2,5.768852773E1 +1.092670000E2,5.516804842E1 +1.095340000E2,5.973626648E1 +1.098120000E2,6.403409511E1 +1.100690000E2,6.035201036E1 +1.103490000E2,5.940482770E1 +1.105950000E2,5.932126109E1 +1.108600000E2,5.859387697E1 +1.111460000E2,5.929800416E1 +1.114110000E2,5.930503134E1 +1.117890000E2,6.170536210E1 +1.120410000E2,6.214563711E1 +1.123490000E2,5.810151097E1 +1.126320000E2,5.823719807E1 +1.128910000E2,6.454485320E1 +1.131870000E2,6.755031626E1 +1.134560000E2,6.410743881E1 +1.137200000E2,5.913442857E1 +1.139870000E2,6.382823805E1 +1.142400000E2,5.859239523E1 +1.145180000E2,5.135859796E1 +1.147890000E2,5.294563188E1 +1.151440000E2,5.357868048E1 +1.154220000E2,5.561359505E1 +1.156620000E2,5.645675088E1 +1.159670000E2,5.879425595E1 +1.162610000E2,5.918610512E1 +1.164990000E2,6.083658676E1 +1.167470000E2,5.526645697E1 +1.169880000E2,5.471312988E1 +1.172910000E2,6.211796732E1 +1.175510000E2,5.417468648E1 +1.177930000E2,5.576739557E1 +1.180750000E2,5.912472365E1 +1.184660000E2,5.718213173E1 +1.187710000E2,5.747081312E1 +1.190170000E2,5.741742618E1 +1.192690000E2,5.379557814E1 +1.195330000E2,5.428733520E1 +1.197780000E2,6.177329402E1 +1.200450000E2,5.672333166E1 +1.203170000E2,5.584947723E1 +1.205670000E2,5.382665718E1 +1.208400000E2,5.443690083E1 +1.211280000E2,5.221565874E1 +1.214800000E2,5.516249741E1 +1.217540000E2,5.676279334E1 +1.220050000E2,5.303796336E1 +1.222680000E2,5.258840561E1 +1.225120000E2,5.671935607E1 +1.227660000E2,4.902892756E1 +1.230240000E2,4.264962220E1 +1.232830000E2,4.818154680E1 +1.235340000E2,5.204058636E1 +1.238430000E2,5.649936271E1 +1.241410000E2,5.396154490E1 +1.244200000E2,5.428877275E1 +1.246760000E2,4.778715710E1 +1.249500000E2,4.912370762E1 +1.252110000E2,5.114426735E1 +1.255020000E2,5.345096378E1 +1.257410000E2,5.581149074E1 +1.260430000E2,5.211774829E1 +1.263320000E2,5.470047014E1 +1.265660000E2,5.399085344E1 +1.268600000E2,5.981732528E1 +1.271210000E2,5.944116770E1 +1.273530000E2,5.668281238E1 +1.275970000E2,5.042419391E1 +1.279080000E2,5.014554177E1 +1.282260000E2,5.350461413E1 +1.285240000E2,5.453533258E1 +1.287780000E2,5.809919663E1 +1.290280000E2,5.729580956E1 +1.292980000E2,5.681749266E1 +1.296010000E2,5.542882864E1 +1.298980000E2,5.612046892E1 +1.302070000E2,6.074750886E1 +1.304620000E2,5.979349108E1 +1.307520000E2,5.806574219E1 +1.310590000E2,5.738881777E1 +1.314010000E2,5.595280312E1 +1.316630000E2,5.401154636E1 +1.319120000E2,5.499471091E1 +1.321620000E2,5.551354327E1 +1.324640000E2,6.567912108E1 +1.327650000E2,5.725129100E1 +1.330150000E2,6.452906176E1 +1.333160000E2,5.778565576E1 +1.335760000E2,6.242194617E1 +1.338200000E2,5.570863747E1 +1.340710000E2,5.755877138E1 +1.343660000E2,6.819206156E1 +1.346260000E2,6.094769164E1 +1.349310000E2,6.447198163E1 +1.351810000E2,5.482297950E1 +1.354630000E2,6.327012623E1 +1.357210000E2,5.723157337E1 +1.359770000E2,5.835004111E1 +1.362140000E2,6.413045068E1 +1.365290000E2,6.022343539E1 +1.368110000E2,5.969265006E1 +1.371070000E2,5.589766444E1 +1.373670000E2,6.089100679E1 +1.376970000E2,6.762783521E1 +1.379410000E2,5.740809854E1 +1.381870000E2,6.711182247E1 +1.384650000E2,6.290175574E1 +1.387060000E2,6.352322572E1 +1.390400000E2,5.897504025E1 +1.392980000E2,5.872568346E1 +1.396520000E2,5.582882684E1 +1.399140000E2,5.874428562E1 +1.402160000E2,5.275369064E1 +1.404650000E2,5.181123336E1 +1.407250000E2,4.758951485E1 +1.410550000E2,4.601470876E1 +1.413500000E2,5.203790008E1 +1.416310000E2,5.380793436E1 +1.418780000E2,5.006781735E1 +1.421580000E2,4.792469964E1 +1.424020000E2,5.136650820E1 +1.427060000E2,5.127969468E1 +1.430200000E2,5.304643312E1 +1.433210000E2,5.218299100E1 +1.436050000E2,5.568762266E1 +1.439010000E2,5.522696018E1 +1.442570000E2,5.919224289E1 +1.445880000E2,6.201398016E1 +1.448680000E2,5.750742223E1 +1.451160000E2,5.811963790E1 +1.454090000E2,5.695462128E1 +1.456560000E2,5.854812337E1 +1.458980000E2,5.886107911E1 +1.461720000E2,5.454171305E1 +1.464480000E2,5.674410925E1 +1.466770000E2,5.450912101E1 +1.469270000E2,5.953864028E1 +1.471790000E2,6.097527460E1 +1.475260000E2,5.825769450E1 +1.478290000E2,5.780473579E1 +1.480790000E2,6.185542851E1 +1.483350000E2,5.390929394E1 +1.486330000E2,5.400087479E1 +1.488750000E2,5.328656685E1 +1.491190000E2,5.599536596E1 +1.494200000E2,5.721648542E1 +1.497150000E2,5.787493165E1 +1.500380000E2,5.480047158E1 +1.503480000E2,5.002404450E1 +1.506590000E2,5.486151348E1 +1.509700000E2,6.245235750E1 +1.512360000E2,5.831236552E1 +1.514820000E2,6.253825815E1 +1.517260000E2,6.440134635E1 +1.520120000E2,5.646251942E1 +1.523080000E2,5.569851104E1 +1.525630000E2,5.574195002E1 +1.528610000E2,6.073633455E1 +1.531220000E2,5.704364811E1 +1.533960000E2,5.858521931E1 +1.536900000E2,6.334346239E1 +1.540080000E2,5.734505299E1 +1.542490000E2,6.522555977E1 +1.544980000E2,5.500712815E1 +1.547420000E2,5.698741268E1 +1.549830000E2,5.097374633E1 +1.552760000E2,5.421781291E1 +1.555100000E2,5.276919678E1 +1.558070000E2,5.444895965E1 +1.560410000E2,5.023818561E1 +1.563440000E2,5.460917302E1 +1.565880000E2,5.459938847E1 +1.568920000E2,5.843131092E1 +1.572210000E2,5.876667307E1 +1.574850000E2,5.735202828E1 +1.577300000E2,5.496399564E1 +1.580290000E2,5.249359356E1 +1.582920000E2,5.216967072E1 +1.585400000E2,5.506360532E1 +1.588040000E2,4.854470136E1 +1.590480000E2,5.455647594E1 +1.593040000E2,5.480802962E1 +1.595560000E2,5.117555202E1 +1.598230000E2,5.525001141E1 +1.600680000E2,6.028739680E1 +1.604080000E2,6.051466285E1 +1.606910000E2,5.941686107E1 +1.609450000E2,6.263789003E1 +1.611920000E2,5.862463866E1 +1.614980000E2,5.858673558E1 +1.617730000E2,5.766546261E1 +1.620210000E2,5.485521148E1 +1.623080000E2,5.814732367E1 +1.625850000E2,5.829863647E1 +1.628370000E2,5.473457172E1 +1.631510000E2,5.323729241E1 +1.634320000E2,5.795543593E1 +1.637670000E2,5.845831909E1 +1.640670000E2,5.883503284E1 +1.643040000E2,5.933733684E1 +1.645990000E2,5.316483696E1 +1.648620000E2,5.628275472E1 +1.651110000E2,5.612764782E1 +1.654290000E2,5.739409022E1 +1.657290000E2,5.275374209E1 +1.660100000E2,5.606330732E1 +1.662350000E2,4.973765069E1 +1.664840000E2,4.855931683E1 +1.667820000E2,4.830487304E1 +1.670210000E2,5.643349546E1 +1.672820000E2,5.752246312E1 +1.675830000E2,5.576545129E1 +1.678330000E2,5.583582770E1 +1.681390000E2,5.301617697E1 +1.684460000E2,5.088408561E1 +1.686990000E2,5.149775091E1 +1.690030000E2,6.019099852E1 +1.692410000E2,6.143998752E1 +1.695380000E2,6.183098470E1 +1.697780000E2,5.964256200E1 +1.701420000E2,5.648358262E1 +1.703870000E2,5.768033788E1 +1.706360000E2,5.037521789E1 +1.709530000E2,5.268785935E1 +1.712030000E2,5.850048969E1 +1.714650000E2,5.537813713E1 +1.717710000E2,5.989062491E1 +1.720770000E2,6.371629733E1 +1.723380000E2,5.413135778E1 +1.726060000E2,5.582389161E1 +1.729040000E2,6.344770094E1 +1.731770000E2,6.038125570E1 +1.735090000E2,5.229655017E1 +1.737830000E2,5.594074665E1 +1.740430000E2,6.258802116E1 +1.743030000E2,5.773122794E1 +1.745600000E2,5.533899998E1 +1.748290000E2,5.069657364E1 +1.750850000E2,6.285550191E1 +1.753480000E2,5.470504416E1 +1.756240000E2,5.746379759E1 +1.758870000E2,5.928233462E1 +1.761350000E2,5.214791610E1 +1.763840000E2,5.260177806E1 +1.767030000E2,4.844041050E1 +1.769490000E2,5.275717684E1 +1.772330000E2,5.436891746E1 +1.774780000E2,5.441421810E1 +1.777590000E2,5.485847839E1 +1.780320000E2,5.714239097E1 +1.782910000E2,6.028837304E1 +1.785470000E2,5.706420775E1 +1.788380000E2,5.509582512E1 +1.791200000E2,5.674185072E1 +1.794340000E2,5.437491314E1 +1.796940000E2,5.696592309E1 +1.799990000E2,5.344092263E1 +1.802540000E2,5.414345246E1 +1.804960000E2,5.421992498E1 +1.808400000E2,5.317024536E1 +1.811450000E2,5.422714635E1 +1.814530000E2,5.933207779E1 +1.817720000E2,5.916706050E1 +1.820730000E2,5.685980261E1 +1.824210000E2,5.521649456E1 +1.826850000E2,5.651993888E1 +1.829810000E2,5.707596711E1 +1.832810000E2,5.464130538E1 +1.836160000E2,5.364065008E1 +1.838600000E2,5.913078622E1 +1.841080000E2,5.695541400E1 +1.843520000E2,6.237274690E1 +1.846510000E2,6.017101966E1 +1.848950000E2,5.670915019E1 +1.851380000E2,5.651470649E1 +1.854400000E2,5.919691857E1 +1.857560000E2,5.752836475E1 +1.860680000E2,6.133052078E1 +1.863670000E2,6.001801442E1 +1.866740000E2,5.871186574E1 +1.869510000E2,5.858669373E1 +1.872240000E2,5.722343490E1 +1.875200000E2,5.725198568E1 +1.877700000E2,5.560524182E1 +1.880340000E2,5.419540118E1 +1.882980000E2,6.169219144E1 +1.885790000E2,5.704261604E1 +1.888700000E2,5.651125138E1 +1.891060000E2,5.778536485E1 +1.894110000E2,5.304160496E1 +1.896990000E2,5.105254388E1 +1.900460000E2,5.338626279E1 +1.902980000E2,5.090929652E1 +1.905360000E2,5.235399183E1 +1.907970000E2,5.429173243E1 +1.910620000E2,5.376238901E1 +1.913500000E2,6.411203098E1 +1.916020000E2,6.235211697E1 +1.919100000E2,5.719243884E1 +1.922140000E2,5.965550680E1 +1.925010000E2,5.850063986E1 +1.928110000E2,6.013906156E1 +1.930480000E2,5.912633730E1 +1.934000000E2,5.860712099E1 +1.936870000E2,5.944287516E1 +1.939980000E2,5.676076088E1 +1.942520000E2,5.712881871E1 +1.945490000E2,5.515631677E1 +1.948870000E2,5.670925955E1 +1.951320000E2,5.768263389E1 +1.954210000E2,5.735243887E1 +1.957290000E2,5.883798740E1 +1.960030000E2,5.654393164E1 +1.963340000E2,5.345251733E1 +1.966710000E2,5.034487882E1 +1.969060000E2,5.741493139E1 +1.971980000E2,5.877434013E1 +1.974210000E2,5.965387227E1 +1.977200000E2,6.306941384E1 +1.979730000E2,6.004201692E1 +1.982230000E2,6.106500017E1 +1.984800000E2,5.674857861E1 +1.987290000E2,6.020914127E1 +1.990680000E2,6.067289060E1 +1.993460000E2,5.996658083E1 +1.996390000E2,5.676340490E1 +1.999500000E2,5.612304129E1 +2.002130000E2,6.289766509E1 +2.005150000E2,5.720971103E1 +2.008280000E2,5.752136939E1 +2.010940000E2,6.058659890E1 +2.013440000E2,5.618430636E1 +2.016270000E2,6.056271249E1 +2.019400000E2,5.729198827E1 +2.022100000E2,5.793084452E1 +2.025070000E2,5.787194228E1 +2.027910000E2,5.959620014E1 +2.030940000E2,6.012062596E1 +2.033180000E2,6.276377758E1 +2.036210000E2,5.834405857E1 +2.039320000E2,5.545225289E1 +2.042050000E2,5.829439447E1 +2.044730000E2,5.799912649E1 +2.047970000E2,5.444896398E1 +2.050680000E2,5.743866699E1 +2.053150000E2,5.862448994E1 +2.055880000E2,5.778478934E1 +2.058890000E2,5.527981007E1 +2.061620000E2,5.742523507E1 +2.064580000E2,5.472188821E1 +2.067100000E2,6.202721053E1 +2.069630000E2,5.861698013E1 +2.072080000E2,6.294616718E1 +2.074730000E2,6.321186761E1 +2.077380000E2,5.776609523E1 +2.080390000E2,6.061292698E1 +2.083320000E2,5.857532480E1 +2.085870000E2,5.800369352E1 +2.088450000E2,5.977447345E1 +2.091070000E2,5.957010157E1 +2.093520000E2,6.145770306E1 +2.096060000E2,6.176056517E1 +2.098580000E2,6.033519811E1 +2.100970000E2,6.429628489E1 +2.103980000E2,6.215353584E1 +2.106470000E2,6.299048914E1 +2.109300000E2,6.133544133E1 +2.112010000E2,5.397487394E1 +2.114250000E2,5.313920655E1 +2.116740000E2,5.552710709E1 +2.119140000E2,5.692289703E1 +2.121730000E2,5.618691953E1 +2.124220000E2,5.402804715E1 +2.127170000E2,5.390450402E1 +2.129570000E2,5.652515030E1 +2.132580000E2,5.490504921E1 +2.135120000E2,5.485761082E1 +2.137850000E2,6.486277416E1 +2.140520000E2,6.121826472E1 +2.143580000E2,6.355465948E1 +2.146390000E2,5.534291145E1 +2.148790000E2,6.610858745E1 +2.151670000E2,5.617739728E1 +2.154670000E2,5.426651762E1 +2.157300000E2,5.840247716E1 +2.160830000E2,5.257749691E1 +2.163200000E2,6.345809118E1 +2.165810000E2,6.020490407E1 +2.168390000E2,5.603372378E1 +2.170870000E2,5.452432165E1 +2.173530000E2,5.679931822E1 +2.176220000E2,6.225558234E1 +2.179360000E2,5.991886985E1 +2.182430000E2,6.307902574E1 +2.184780000E2,6.764692456E1 +2.187700000E2,6.696013302E1 +2.190280000E2,6.419552300E1 +2.193390000E2,6.401831507E1 +2.196000000E2,6.317016249E1 +2.198590000E2,6.093052958E1 +2.201380000E2,6.446513941E1 +2.204220000E2,6.075454080E1 +2.206690000E2,6.712020778E1 +2.209300000E2,5.440050354E1 +2.212550000E2,5.627963451E1 +2.215550000E2,6.358778444E1 +2.217990000E2,5.793661873E1 +2.220730000E2,6.448679664E1 +2.223050000E2,5.844994198E1 +2.226510000E2,5.802583418E1 +2.229440000E2,5.848297014E1 +2.231840000E2,6.170695891E1 +2.234220000E2,6.201301769E1 +2.236630000E2,6.049179870E1 +2.239600000E2,6.316843106E1 +2.242020000E2,5.818837652E1 +2.245150000E2,6.411353278E1 +2.248330000E2,6.458398711E1 +2.250670000E2,6.303280227E1 +2.253240000E2,6.378696379E1 +2.255670000E2,6.157533943E1 +2.259260000E2,5.845901257E1 +2.261910000E2,5.623331182E1 +2.264460000E2,5.550822889E1 +2.267020000E2,5.907003722E1 +2.270220000E2,6.300043778E1 +2.273130000E2,5.934584116E1 +2.275640000E2,5.367094537E1 +2.278520000E2,6.260544714E1 +2.281140000E2,5.666507163E1 +2.283970000E2,6.099713971E1 +2.287020000E2,5.943082312E1 +2.289450000E2,6.095935321E1 +2.292950000E2,5.939706013E1 +2.296230000E2,5.612117806E1 +2.299220000E2,5.805831404E1 +2.301570000E2,5.496048372E1 +2.304070000E2,5.335836124E1 +2.306490000E2,5.043808989E1 +2.309270000E2,4.778025574E1 +2.311680000E2,4.613189565E1 +2.314100000E2,4.740314381E1 +2.316580000E2,5.230056147E1 +2.319150000E2,5.672989332E1 +2.321590000E2,6.081799709E1 +2.325030000E2,5.909736866E1 +2.327570000E2,5.528762811E1 +2.330520000E2,6.623131701E1 +2.333360000E2,6.376149752E1 +2.335730000E2,6.088376871E1 +2.338700000E2,6.235681388E1 +2.341160000E2,6.060610548E1 +2.343930000E2,5.779254532E1 +2.346370000E2,5.570043106E1 +2.349010000E2,6.172637016E1 +2.351520000E2,5.865545525E1 +2.354420000E2,6.250465685E1 +2.356850000E2,6.494272879E1 +2.359310000E2,6.075163542E1 +2.361840000E2,5.742858606E1 +2.364460000E2,5.756917813E1 +2.366990000E2,6.169927684E1 +2.370080000E2,5.540268710E1 +2.373040000E2,5.484088652E1 +2.376000000E2,5.732112773E1 +2.378800000E2,5.184194161E1 +2.381270000E2,5.604168635E1 +2.383910000E2,5.644051218E1 +2.387130000E2,6.049774032E1 +2.390290000E2,6.303013407E1 +2.392800000E2,6.115111046E1 +2.395770000E2,6.294174883E1 +2.398740000E2,6.716012591E1 +2.401880000E2,7.075117191E1 +2.404890000E2,6.435561631E1 +2.407550000E2,5.593172595E1 +2.410720000E2,5.781614361E1 +2.413350000E2,5.497792445E1 +2.416080000E2,5.569244646E1 +2.418870000E2,5.408109683E1 +2.421100000E2,5.687440525E1 +2.424230000E2,6.415333296E1 +2.427170000E2,6.528722740E1 +2.429900000E2,6.229384329E1 +2.432350000E2,5.452507698E1 +2.434960000E2,5.248331654E1 +2.437450000E2,5.069826347E1 +2.439880000E2,4.989889277E1 +2.442610000E2,5.196931346E1 +2.445130000E2,4.988417717E1 +2.448120000E2,5.950968466E1 +2.451200000E2,5.725324421E1 +2.454210000E2,5.902908729E1 +2.456980000E2,5.857784521E1 +2.459650000E2,5.154496059E1 +2.462670000E2,5.316738342E1 +2.465660000E2,5.681338179E1 +2.468580000E2,5.486468116E1 +2.471080000E2,5.378622946E1 +2.473840000E2,5.263910847E1 +2.477040000E2,5.102724000E1 +2.479590000E2,4.958128022E1 +2.482070000E2,5.621813465E1 +2.486190000E2,5.553111013E1 +2.489120000E2,5.711728514E1 +2.491630000E2,6.098223102E1 +2.494610000E2,5.812970142E1 +2.497290000E2,5.874411947E1 +2.500090000E2,6.058797235E1 +2.503160000E2,5.921850964E1 +2.506300000E2,5.825659244E1 +2.508940000E2,5.902074554E1 +2.512250000E2,5.857720223E1 +2.514860000E2,5.834259509E1 +2.517560000E2,5.664723408E1 +2.520110000E2,6.245873243E1 +2.522800000E2,6.018081628E1 +2.525490000E2,6.060905480E1 +2.527980000E2,6.098924059E1 +2.530310000E2,6.604497204E1 +2.532750000E2,5.762503683E1 +2.535750000E2,5.946675250E1 +2.538150000E2,5.696283688E1 +2.541120000E2,5.795434272E1 +2.543420000E2,5.641662406E1 +2.546470000E2,6.001503419E1 +2.549610000E2,5.913147779E1 +2.552050000E2,5.772050526E1 +2.554250000E2,5.986895040E1 +2.557400000E2,4.836792039E1 +2.560130000E2,4.818172752E1 +2.563450000E2,5.244597112E1 +2.566130000E2,5.174954560E1 +2.568650000E2,5.165225717E1 +2.571100000E2,4.865803315E1 +2.573530000E2,4.773689375E1 +2.576460000E2,5.375353685E1 +2.579030000E2,5.630041837E1 +2.582540000E2,5.390583403E1 +2.585030000E2,5.686416101E1 +2.588120000E2,5.880170204E1 +2.590630000E2,5.373023259E1 +2.593590000E2,6.009405077E1 +2.596120000E2,5.710673366E1 +2.598560000E2,5.891240789E1 +2.600990000E2,5.960890080E1 +2.603510000E2,6.728594423E1 +2.606060000E2,6.334340199E1 +2.609270000E2,6.082175509E1 +2.611830000E2,5.750083619E1 +2.615060000E2,5.667484133E1 +2.618070000E2,6.152760439E1 +2.620430000E2,5.697586540E1 +2.623440000E2,5.674189037E1 +2.625730000E2,5.539036876E1 +2.628210000E2,4.901745514E1 +2.631270000E2,5.264848299E1 +2.634230000E2,5.038277380E1 +2.636750000E2,5.149234245E1 +2.639170000E2,4.604207892E1 +2.641630000E2,5.735184247E1 +2.644630000E2,5.659523444E1 +2.648080000E2,5.697978691E1 +2.650640000E2,5.691301726E1 +2.653540000E2,5.696584583E1 +2.656480000E2,5.138210199E1 +2.659030000E2,5.345758564E1 +2.661640000E2,5.363588256E1 +2.664240000E2,5.471656895E1 +2.666720000E2,5.140760448E1 +2.669400000E2,5.329005020E1 +2.671940000E2,5.422388323E1 +2.674460000E2,5.133919880E1 +2.677140000E2,5.690801972E1 +2.681270000E2,5.964609863E1 +2.684030000E2,6.167901240E1 +2.686970000E2,5.297205648E1 +2.689350000E2,5.530010894E1 +2.692310000E2,5.450325538E1 +2.694700000E2,5.391690578E1 +2.697660000E2,5.420666075E1 +2.700010000E2,4.962510480E1 +2.702390000E2,5.010058679E1 +2.705460000E2,5.345147952E1 +2.708590000E2,5.574757195E1 +2.711770000E2,5.571208034E1 +2.714720000E2,5.288998421E1 +2.717170000E2,5.214438195E1 +2.720190000E2,5.232798978E1 +2.723080000E2,6.045263056E1 +2.725500000E2,5.870512300E1 +2.727930000E2,5.577911819E1 +2.730760000E2,5.501493048E1 +2.733800000E2,5.433475343E1 +2.736720000E2,5.293457700E1 +2.739070000E2,5.486483547E1 +2.741780000E2,6.008208952E1 +2.745050000E2,5.845984546E1 +2.748040000E2,5.900764997E1 +2.751070000E2,5.760203457E1 +2.754240000E2,5.795024632E1 +2.757280000E2,6.182748257E1 +2.760340000E2,5.683205968E1 +2.763350000E2,5.821402367E1 +2.766080000E2,5.520672517E1 +2.768980000E2,5.645892504E1 +2.772030000E2,5.463906896E1 +2.775200000E2,5.412722413E1 +2.777910000E2,5.268636730E1 +2.780870000E2,5.566734184E1 +2.783350000E2,5.745256931E1 +2.785810000E2,5.645167582E1 +2.788270000E2,5.925831320E1 +2.790840000E2,5.591320738E1 +2.793690000E2,5.632637646E1 +2.796200000E2,6.252281740E1 +2.799120000E2,5.547643277E1 +2.801570000E2,6.021611275E1 +2.804580000E2,5.732676882E1 +2.808110000E2,5.909573770E1 +2.810780000E2,6.005240162E1 +2.813300000E2,5.965022185E1 +2.815820000E2,6.135840817E1 +2.818790000E2,5.970629096E1 +2.821590000E2,5.879025140E1 +2.824010000E2,5.747324456E1 +2.826520000E2,5.726379384E1 +2.828950000E2,5.871306541E1 +2.831920000E2,6.188032415E1 +2.834710000E2,6.066582287E1 +2.837110000E2,5.950933244E1 +2.840350000E2,5.901018860E1 +2.843000000E2,5.761182729E1 +2.846050000E2,5.446909438E1 +2.848570000E2,5.349219985E1 +2.851700000E2,5.015518748E1 +2.854330000E2,5.374610595E1 +2.857270000E2,5.877223624E1 +2.860310000E2,5.644512377E1 +2.863080000E2,5.711327205E1 +2.865540000E2,5.655239592E1 +2.867930000E2,5.833716670E1 +2.871150000E2,5.417781453E1 +2.874030000E2,5.332227783E1 +2.876540000E2,5.146836736E1 +2.879540000E2,5.452228720E1 +2.881970000E2,5.025406823E1 +2.884910000E2,5.490648375E1 +2.887280000E2,5.506242221E1 +2.890210000E2,5.400927835E1 +2.892600000E2,5.781126179E1 +2.895430000E2,6.384283902E1 +2.898470000E2,6.340395874E1 +2.901430000E2,5.555395770E1 +2.904560000E2,5.514224078E1 +2.907530000E2,5.346566906E1 +2.910000000E2,5.948406902E1 +2.912590000E2,6.362292628E1 +2.915300000E2,6.175065463E1 +2.918240000E2,6.129817533E1 +2.920790000E2,6.317618325E1 +2.923350000E2,6.137933812E1 +2.926010000E2,5.620086793E1 +2.928740000E2,5.715913846E1 +2.931780000E2,7.028942499E1 +2.934620000E2,6.774357618E1 +2.937770000E2,6.989950413E1 +2.940270000E2,6.631119439E1 +2.943030000E2,6.956920703E1 +2.945570000E2,6.352936554E1 +2.948100000E2,6.981123112E1 +2.951150000E2,5.607171784E1 +2.953950000E2,5.394017247E1 +2.956980000E2,7.110851253E1 +2.959460000E2,6.978848906E1 +2.961900000E2,5.446752823E1 +2.965090000E2,6.309281755E1 +2.968110000E2,6.647752141E1 +2.971300000E2,6.773248230E1 +2.974240000E2,6.289421429E1 +2.977060000E2,5.998905240E1 +2.979500000E2,6.016152671E1 +2.981940000E2,5.851705490E1 +2.984880000E2,6.506323043E1 +2.987430000E2,5.702053645E1 +2.990110000E2,4.890963733E1 +2.993040000E2,5.105737182E1 +2.995650000E2,4.950865545E1 +2.998150000E2,4.713536225E1 +3.000860000E2,6.170154569E1 +3.003780000E2,5.697995513E1 +3.006750000E2,6.496205179E1 +3.009180000E2,5.585602045E1 +3.012120000E2,5.317421587E1 +3.015130000E2,5.532213468E1 +3.017840000E2,5.371543715E1 +3.020520000E2,6.741141038E1 +3.023220000E2,6.638671809E1 +3.025730000E2,5.833940482E1 +3.028700000E2,6.272205104E1 +3.031230000E2,6.150676490E1 +3.034050000E2,6.571826996E1 +3.036710000E2,6.387001854E1 +3.039460000E2,5.704179120E1 +3.042380000E2,5.452420344E1 +3.044730000E2,6.911436343E1 +3.047670000E2,6.747337761E1 +3.050070000E2,6.642457947E1 +3.053010000E2,6.704052830E1 +3.055360000E2,6.335116163E1 +3.058350000E2,6.452879154E1 +3.061310000E2,6.588892290E1 +3.064460000E2,6.065604325E1 +3.066970000E2,5.884139521E1 +3.069890000E2,6.115548360E1 +3.072650000E2,5.474220631E1 +3.075290000E2,5.525228633E1 +3.077890000E2,5.546520153E1 +3.080280000E2,5.799541194E1 +3.083270000E2,5.467819740E1 +3.086250000E2,5.227747322E1 +3.089260000E2,5.802220937E1 +3.091970000E2,5.383690373E1 +3.095040000E2,5.794687305E1 +3.097810000E2,5.426386053E1 +3.100000000E2,5.745164866E1 +3.103300000E2,5.475501144E1 +3.106240000E2,5.154802151E1 +3.108750000E2,5.434380726E1 +3.111540000E2,5.533246388E1 +3.114150000E2,5.554218476E1 +3.116740000E2,5.375334275E1 +3.119200000E2,5.727216331E1 +3.121680000E2,5.235396651E1 +3.124720000E2,6.207307801E1 +3.127180000E2,6.488896117E1 +3.130530000E2,6.168970511E1 +3.133080000E2,6.010687101E1 +3.135950000E2,6.305386662E1 +3.138880000E2,6.214030252E1 +3.141410000E2,5.907513997E1 +3.143960000E2,6.064308138E1 +3.146480000E2,6.195321339E1 +3.148870000E2,6.088765310E1 +3.151830000E2,5.906360624E1 +3.154280000E2,5.864981040E1 +3.157360000E2,5.824424792E1 +3.159750000E2,5.826399021E1 +3.163740000E2,6.051726612E1 +3.166320000E2,6.011967909E1 +3.168940000E2,5.577110603E1 +3.172010000E2,5.372586587E1 +3.174460000E2,5.537091967E1 +3.176890000E2,5.504912063E1 +3.179320000E2,5.264203521E1 +3.182150000E2,5.344854544E1 +3.184600000E2,5.656777951E1 +3.187200000E2,5.398435402E1 +3.189820000E2,5.410695962E1 +3.192460000E2,5.344168860E1 +3.195780000E2,5.697626360E1 +3.198350000E2,6.073105615E1 +3.200880000E2,6.621432780E1 +3.203460000E2,6.597785722E1 +3.205980000E2,5.907542432E1 +3.208920000E2,5.702769809E1 +3.211760000E2,6.207459825E1 +3.214520000E2,5.921715282E1 +3.217010000E2,5.501368146E1 +3.220030000E2,5.927746858E1 +3.223090000E2,5.878714279E1 +3.226530000E2,6.209253703E1 +3.229180000E2,5.801419316E1 +3.231660000E2,6.150680788E1 +3.234110000E2,5.950436139E1 +3.236660000E2,5.694006868E1 +3.239890000E2,5.964691948E1 +3.242420000E2,6.322261269E1 +3.245070000E2,5.967413832E1 +3.247540000E2,5.743115651E1 +3.250010000E2,5.693057833E1 +3.252760000E2,5.076009335E1 +3.255600000E2,5.432440321E1 +3.258270000E2,5.728583073E1 +3.262160000E2,6.158050311E1 +3.264570000E2,5.788548067E1 +3.267330000E2,5.661485397E1 +3.270280000E2,5.698735139E1 +3.272870000E2,5.428158234E1 +3.275550000E2,5.401192370E1 +3.278320000E2,5.894424302E1 +3.281050000E2,5.279140275E1 +3.283850000E2,5.366788524E1 +3.286760000E2,5.569462346E1 +3.289750000E2,5.484501656E1 +3.292730000E2,5.654335493E1 +3.295550000E2,5.483429560E1 +3.298560000E2,5.516099131E1 +3.301720000E2,5.150081287E1 +3.304560000E2,5.126263973E1 +3.307930000E2,4.943715566E1 +3.310330000E2,5.297477083E1 +3.312800000E2,4.994759883E1 +3.316030000E2,5.283028939E1 +3.318860000E2,5.150402936E1 +3.321790000E2,5.777668868E1 +3.325470000E2,5.446937149E1 +3.328030000E2,5.754474494E1 +3.330410000E2,5.437750931E1 +3.333210000E2,5.378201308E1 +3.335760000E2,5.486825362E1 +3.338240000E2,5.338123539E1 +3.340700000E2,5.704649160E1 +3.343740000E2,5.576563429E1 +3.346640000E2,5.503590574E1 +3.349650000E2,5.539431503E1 +3.352080000E2,5.782097549E1 +3.355080000E2,5.260852375E1 +3.358690000E2,6.012616228E1 +3.361400000E2,5.534922411E1 +3.363810000E2,5.436765301E1 +3.366230000E2,5.007736554E1 +3.368850000E2,5.304270830E1 +3.371340000E2,5.106682022E1 +3.373960000E2,5.491262243E1 +3.376890000E2,5.891119644E1 +3.379320000E2,5.554676164E1 +3.382420000E2,5.491809401E1 +3.385700000E2,6.003743295E1 +3.389490000E2,5.964265847E1 +3.392140000E2,6.009419780E1 +3.394780000E2,5.950800538E1 +3.397810000E2,5.514081916E1 +3.400260000E2,5.654810222E1 +3.403230000E2,5.919098275E1 +3.405600000E2,5.937137097E1 +3.408650000E2,5.885711760E1 +3.411560000E2,6.122434193E1 +3.414060000E2,6.101494213E1 +3.416650000E2,5.685059098E1 +3.419710000E2,4.988163583E1 +3.423360000E2,5.097871962E1 +3.426300000E2,6.097968551E1 +3.429260000E2,5.246223058E1 +3.431760000E2,5.140448000E1 +3.434570000E2,5.162147831E1 +3.436910000E2,5.437509469E1 +3.439650000E2,5.588289675E1 +3.442010000E2,5.342482218E1 +3.444930000E2,5.621155564E1 +3.447310000E2,5.753713233E1 +3.450340000E2,5.873821374E1 +3.453240000E2,5.674648484E1 +3.455770000E2,5.843857274E1 +3.458770000E2,6.170678128E1 +3.461770000E2,5.848319050E1 +3.464240000E2,5.996271814E1 +3.467290000E2,5.583139448E1 +3.470000000E2,5.558324990E1 +3.472360000E2,5.638821787E1 +3.474880000E2,6.015129432E1 +3.477550000E2,6.074195357E1 +3.480530000E2,6.258101891E1 +3.483260000E2,6.280209300E1 +3.486840000E2,5.935598721E1 +3.489370000E2,6.423635683E1 +3.492060000E2,7.026891453E1 +3.495130000E2,5.477771858E1 +3.498240000E2,6.143080763E1 +3.500700000E2,6.077206860E1 +3.503130000E2,5.816670512E1 +3.506030000E2,6.220374728E1 +3.509040000E2,6.435510927E1 +3.511560000E2,6.387906049E1 +3.514240000E2,6.324188625E1 +3.517710000E2,6.217871174E1 +3.520510000E2,6.349767138E1 +3.523000000E2,5.947763114E1 +3.525840000E2,5.623947938E1 +3.528810000E2,5.940245648E1 +3.531830000E2,5.323006485E1 +3.534790000E2,4.756673680E1 +3.537830000E2,5.761743216E1 +3.540870000E2,5.701856444E1 +3.543720000E2,5.507707077E1 +3.546320000E2,5.561457107E1 +3.549330000E2,6.036785424E1 +3.552860000E2,5.818319920E1 +3.555390000E2,5.636477080E1 +3.557840000E2,5.686236286E1 +3.560330000E2,6.137502104E1 +3.563290000E2,6.039421004E1 +3.565710000E2,5.873926214E1 +3.568160000E2,5.984737812E1 +3.570890000E2,5.898549785E1 +3.573200000E2,5.804358229E1 +3.576080000E2,5.178825198E1 +3.578380000E2,5.333798630E1 +3.581470000E2,5.663121054E1 +3.584860000E2,5.705169894E1 +3.587470000E2,5.488627438E1 +3.590020000E2,5.493171173E1 +3.592590000E2,5.280801534E1 +3.595110000E2,5.919356657E1 +3.597710000E2,6.061921525E1 +3.600770000E2,5.781838960E1 +3.603810000E2,5.824405535E1 +3.606410000E2,5.734273072E1 +3.608930000E2,5.860073318E1 +3.611440000E2,5.158577335E1 +3.614110000E2,5.569804167E1 +3.617550000E2,5.732029627E1 +3.620530000E2,5.599725951E1 +3.623260000E2,5.427140428E1 +3.625700000E2,5.439119305E1 +3.628680000E2,5.768088704E1 +3.631160000E2,5.322266305E1 +3.634170000E2,5.611257515E1 +3.637150000E2,5.466283243E1 +3.639540000E2,5.648497192E1 +3.642520000E2,5.982456496E1 +3.644910000E2,5.683499776E1 +3.648080000E2,5.424977228E1 +3.650550000E2,5.261749952E1 +3.653010000E2,5.976464589E1 +3.655400000E2,5.630627545E1 +3.658370000E2,5.855663855E1 +3.660660000E2,5.839517218E1 +3.663050000E2,5.701336937E1 +3.666100000E2,6.057417753E1 +3.668530000E2,5.660058929E1 +3.671060000E2,5.360906173E1 +3.673270000E2,5.766761713E1 +3.676020000E2,5.473947199E1 +3.679270000E2,5.730791892E1 +3.681990000E2,5.368134624E1 +3.685210000E2,5.122725302E1 +3.688180000E2,5.413949330E1 +3.690720000E2,5.953240184E1 +3.693650000E2,5.834363401E1 +3.696110000E2,4.952962201E1 +3.698620000E2,6.082605721E1 +3.701240000E2,5.541205242E1 +3.703840000E2,5.595936781E1 +3.706570000E2,5.751180267E1 +3.709050000E2,5.510413826E1 +3.712530000E2,5.236304209E1 +3.715330000E2,5.429686706E1 +3.717680000E2,5.365135821E1 +3.720680000E2,5.442146139E1 +3.723070000E2,5.193301537E1 +3.726070000E2,5.573089397E1 +3.728540000E2,5.084704353E1 +3.731070000E2,5.244752708E1 +3.734250000E2,5.501438711E1 +3.737160000E2,5.701937821E1 +3.739830000E2,5.913008265E1 +3.743030000E2,6.329763996E1 +3.745490000E2,5.828010903E1 +3.748110000E2,5.514928454E1 +3.750560000E2,5.535724603E1 +3.753250000E2,6.062318511E1 +3.756820000E2,5.853801057E1 +3.759720000E2,6.218740595E1 +3.762560000E2,6.130322227E1 +3.764780000E2,5.705598438E1 +3.767430000E2,5.675025411E1 +3.770350000E2,5.562309411E1 +3.773330000E2,6.171478403E1 +3.776660000E2,5.752069737E1 +3.779640000E2,5.869913239E1 +3.782130000E2,5.802158707E1 +3.785030000E2,5.920699755E1 +3.787580000E2,5.984700757E1 +3.790120000E2,5.874214142E1 +3.792820000E2,5.792329599E1 +3.795460000E2,6.240429581E1 +3.798520000E2,5.924961400E1 +3.800960000E2,5.655548581E1 +3.803510000E2,5.997047167E1 +3.806590000E2,5.894207932E1 +3.810310000E2,5.556916558E1 +3.813250000E2,5.709965860E1 +3.815810000E2,5.724657649E1 +3.818690000E2,5.634885250E1 +3.821660000E2,5.381597934E1 +3.824070000E2,5.409431797E1 +3.827020000E2,5.558304395E1 +3.829400000E2,5.836087965E1 +3.832380000E2,5.621848827E1 +3.834740000E2,5.756105430E1 +3.837670000E2,5.972981317E1 +3.840620000E2,6.110722903E1 +3.842970000E2,6.011338906E1 +3.846120000E2,6.632548976E1 +3.849300000E2,5.632542095E1 +3.852340000E2,5.660090160E1 +3.854760000E2,5.637042997E1 +3.857700000E2,6.483820819E1 +3.860160000E2,6.294386681E1 +3.862760000E2,6.248693097E1 +3.865740000E2,5.966646580E1 +3.868130000E2,5.884596060E1 +3.871230000E2,6.069045984E1 +3.874660000E2,5.535227762E1 +3.877260000E2,5.453589064E1 +3.879920000E2,5.803286513E1 +3.882920000E2,6.338575111E1 +3.885370000E2,6.297665471E1 +3.888380000E2,6.078963895E1 +3.890870000E2,6.078711186E1 +3.893350000E2,5.918580133E1 +3.896040000E2,5.645003340E1 +3.899070000E2,5.868887980E1 +3.901560000E2,5.816727924E1 +3.904840000E2,5.908711574E1 +3.907830000E2,5.165109059E1 +3.910410000E2,5.747977046E1 +3.913230000E2,5.600926578E1 +3.916170000E2,5.743239537E1 +3.918580000E2,5.999528635E1 +3.921650000E2,5.924448814E1 +3.924670000E2,6.347749271E1 +3.927590000E2,6.285842009E1 +3.929960000E2,6.439104552E1 +3.933010000E2,6.092208558E1 +3.935450000E2,5.889760176E1 +3.939100000E2,5.798312040E1 +3.941770000E2,5.909426563E1 +3.944250000E2,5.971090911E1 +3.946810000E2,5.379436409E1 +3.949270000E2,5.134339741E1 +3.951700000E2,5.739586279E1 +3.954270000E2,5.255911571E1 +3.956850000E2,5.149310319E1 +3.959500000E2,5.723685944E1 +3.962270000E2,5.622087783E1 +3.964720000E2,6.119098643E1 +3.967310000E2,6.249797436E1 +3.970320000E2,5.838309249E1 +3.973440000E2,5.720898847E1 +3.976100000E2,5.357982700E1 +3.978600000E2,5.091452983E1 +3.981070000E2,4.781274510E1 +3.983520000E2,4.684320786E1 +3.986530000E2,4.867937405E1 +3.988970000E2,4.947454895E1 +3.991740000E2,4.941937240E1 +3.994180000E2,5.206925818E1 +3.997200000E2,5.099596962E1 +3.999720000E2,5.059119317E1 +4.002350000E2,4.980275756E1 +4.004940000E2,5.514017077E1 +4.008060000E2,5.354499430E1 +4.011150000E2,5.377825353E1 +4.013980000E2,5.657928040E1 +4.016460000E2,6.437756844E1 +4.019070000E2,6.072529486E1 +4.021970000E2,5.876291143E1 +4.024430000E2,6.118567430E1 +4.027460000E2,5.925186578E1 +4.030590000E2,5.727531678E1 +4.033610000E2,6.211123432E1 +4.036680000E2,6.041950332E1 +4.039230000E2,6.161200416E1 +4.041780000E2,6.047480336E1 +4.044620000E2,5.905442986E1 +4.047060000E2,5.729915709E1 +4.049630000E2,6.020933408E1 +4.052500000E2,5.845152603E1 +4.055600000E2,5.814304967E1 +4.058210000E2,5.866194002E1 +4.060640000E2,5.736420578E1 +4.063180000E2,6.107395805E1 +4.065790000E2,5.985269852E1 +4.069480000E2,5.745859610E1 +4.072050000E2,5.693680110E1 +4.074960000E2,6.165201185E1 +4.077470000E2,6.131132241E1 +4.079970000E2,5.824414723E1 +4.083050000E2,5.958451387E1 +4.085600000E2,5.739792126E1 +4.088150000E2,5.573389816E1 +4.090850000E2,5.530698039E1 +4.093810000E2,5.634371531E1 +4.096660000E2,5.880658089E1 +4.099920000E2,5.804298004E1 +4.102870000E2,5.688352401E1 +4.106310000E2,5.573115839E1 +4.109280000E2,5.368053116E1 +4.112180000E2,5.474384188E1 +4.114650000E2,5.380195893E1 +4.117660000E2,5.718608674E1 +4.120140000E2,5.703743686E1 +4.122910000E2,5.985228158E1 +4.125620000E2,6.278694860E1 +4.128210000E2,5.839550633E1 +4.130600000E2,6.029373556E1 +4.133710000E2,5.711050636E1 +4.136150000E2,5.200468588E1 +4.138820000E2,5.769230508E1 +4.141370000E2,5.333759168E1 +4.143860000E2,5.632377961E1 +4.146570000E2,5.647744894E1 +4.149040000E2,5.667945226E1 +4.151840000E2,5.669404445E1 +4.154420000E2,6.072374556E1 +4.157420000E2,5.606444578E1 +4.159850000E2,5.623596320E1 +4.162830000E2,5.264542492E1 +4.165340000E2,5.359803767E1 +4.168600000E2,5.691340897E1 +4.171060000E2,5.636326143E1 +4.173490000E2,6.276141082E1 +4.176080000E2,6.197471417E1 +4.178580000E2,5.777170976E1 +4.181050000E2,5.407671770E1 +4.183760000E2,4.795453020E1 +4.186580000E2,5.871005652E1 +4.188870000E2,6.069158080E1 +4.191320000E2,6.112379328E1 +4.193750000E2,5.584116633E1 +4.196280000E2,6.302854070E1 +4.199610000E2,6.640457067E1 +4.202240000E2,6.337314603E1 +4.205160000E2,5.904470105E1 +4.208200000E2,5.799078909E1 +4.210810000E2,5.975635789E1 +4.213260000E2,6.334088587E1 +4.215900000E2,5.849627934E1 +4.218550000E2,5.894070219E1 +4.221030000E2,5.961371776E1 +4.223550000E2,5.281830949E1 +4.225970000E2,4.892580508E1 +4.229130000E2,5.950646935E1 +4.232610000E2,6.303011111E1 +4.235630000E2,6.030515180E1 +4.238060000E2,5.832387195E1 +4.240560000E2,6.126571743E1 +4.243280000E2,5.961805347E1 +4.245710000E2,5.916464366E1 +4.248300000E2,6.404431780E1 +4.251020000E2,6.161392817E1 +4.253630000E2,6.303875005E1 +4.256110000E2,6.294329578E1 +4.258560000E2,6.495739223E1 +4.261620000E2,6.352748415E1 +4.265140000E2,6.360144813E1 +4.267650000E2,6.320185268E1 +4.270250000E2,6.598206760E1 +4.272910000E2,5.736158392E1 +4.275300000E2,5.632655800E1 +4.277760000E2,5.626186588E1 +4.280650000E2,5.992298879E1 +4.283460000E2,5.976814640E1 +4.285960000E2,5.617047451E1 +4.288540000E2,5.410240194E1 +4.291290000E2,5.524345530E1 +4.293550000E2,5.025485629E1 +4.297050000E2,5.094849624E1 +4.299600000E2,5.349595208E1 +4.302230000E2,5.668766668E1 +4.304690000E2,5.470073040E1 +4.307330000E2,5.808421323E1 +4.310240000E2,5.815977776E1 +4.312740000E2,5.751031291E1 +4.315190000E2,6.045600028E1 +4.318300000E2,5.967896339E1 +4.320980000E2,5.746835753E1 +4.324020000E2,5.874054152E1 +4.327010000E2,5.770096959E1 +4.330460000E2,5.851412717E1 +4.333220000E2,5.970473393E1 +4.335930000E2,6.024030776E1 +4.338530000E2,5.564089573E1 +4.341340000E2,5.328000065E1 +4.343790000E2,5.522789934E1 +4.346930000E2,5.271905966E1 +4.349910000E2,5.685384424E1 +4.352400000E2,5.751176106E1 +4.355350000E2,5.654290580E1 +4.357760000E2,5.976937629E1 +4.360780000E2,5.445311615E1 +4.363520000E2,5.460006243E1 +4.366010000E2,5.402958946E1 +4.369120000E2,5.611325616E1 +4.371660000E2,5.675575065E1 +4.374120000E2,5.605818704E1 +4.377070000E2,5.614720111E1 +4.379470000E2,5.596280974E1 +4.382450000E2,5.764305460E1 +4.384820000E2,6.015340826E1 +4.387240000E2,6.073594369E1 +4.390310000E2,5.846982437E1 +4.393110000E2,5.837342754E1 +4.396160000E2,5.758988397E1 +4.398810000E2,5.375393273E1 +4.401700000E2,5.590416510E1 +4.404180000E2,5.649267014E1 +4.406570000E2,5.809884175E1 +4.409200000E2,5.934788425E1 +4.411750000E2,5.883690392E1 +4.414270000E2,5.465512306E1 +4.416780000E2,5.456039720E1 +4.419260000E2,6.053551690E1 +4.422020000E2,5.446896121E1 +4.425270000E2,5.304300238E1 +4.428480000E2,5.413537656E1 +4.431230000E2,5.590535088E1 +4.433740000E2,5.516889265E1 +4.436180000E2,5.375803139E1 +4.439250000E2,5.440731706E1 +4.441670000E2,5.378894171E1 +4.444170000E2,5.676009311E1 +4.447160000E2,5.433224316E1 +4.449620000E2,5.431777666E1 +4.452100000E2,5.220353562E1 +4.454560000E2,5.525232641E1 +4.456950000E2,5.348687858E1 +4.459900000E2,5.571408478E1 +4.462320000E2,5.590054486E1 +4.464840000E2,5.627503595E1 +4.467390000E2,5.824548232E1 +4.469910000E2,5.637049423E1 +4.472460000E2,5.754096885E1 +4.474930000E2,5.335865942E1 +4.477890000E2,5.765888938E1 +4.480780000E2,6.102087464E1 +4.483520000E2,6.006145593E1 +4.486510000E2,5.685958774E1 +4.489610000E2,5.748149351E1 +4.492370000E2,5.709623916E1 +4.495040000E2,5.821496279E1 +4.497570000E2,5.970222946E1 +4.500030000E2,5.750976802E1 +4.502380000E2,5.796549321E1 +4.505370000E2,5.665777454E1 +4.508330000E2,5.605038109E1 +4.510750000E2,5.504306522E1 +4.513230000E2,5.112487870E1 +4.515900000E2,5.559150914E1 +4.518300000E2,5.656933458E1 +4.520810000E2,6.082180135E1 +4.524470000E2,5.774965281E1 +4.527120000E2,5.847728207E1 +4.529730000E2,5.711434047E1 +4.532810000E2,5.503285278E1 +4.535670000E2,5.614330822E1 +4.538610000E2,6.211492489E1 +4.541040000E2,6.003078695E1 +4.543760000E2,5.766611466E1 +4.546280000E2,5.912518267E1 +4.549300000E2,5.969489895E1 +4.551760000E2,5.509558621E1 +4.554320000E2,5.963291683E1 +4.556950000E2,6.194656842E1 +4.559980000E2,6.032793642E1 +4.562390000E2,5.874022110E1 +4.565060000E2,6.016749735E1 +4.567480000E2,5.985596964E1 +4.570070000E2,5.588678859E1 +4.572660000E2,5.541792762E1 +4.575660000E2,4.969164404E1 +4.578050000E2,4.976271573E1 +4.581060000E2,5.634137812E1 +4.583500000E2,5.321783082E1 +4.586280000E2,5.816393976E1 +4.588870000E2,5.817726916E1 +4.591860000E2,5.398220140E1 +4.594690000E2,5.572842498E1 +4.597270000E2,5.759574297E1 +4.600290000E2,5.492384706E1 +4.602790000E2,5.570826682E1 +4.605780000E2,5.619496661E1 +4.608690000E2,5.993990435E1 +4.611730000E2,6.185390750E1 +4.614300000E2,6.125031183E1 +4.617390000E2,6.047450440E1 +4.621070000E2,5.913093195E1 +4.623500000E2,6.032535990E1 +4.626490000E2,5.803726699E1 +4.628910000E2,5.968748294E1 +4.631850000E2,5.792594347E1 +4.634330000E2,5.623910190E1 +4.636850000E2,6.026318401E1 +4.639240000E2,6.002593060E1 +4.641990000E2,5.694813724E1 +4.644200000E2,5.456998819E1 +4.646660000E2,5.683591124E1 +4.649070000E2,5.893829862E1 +4.652630000E2,5.637983039E1 +4.655160000E2,5.571226470E1 +4.657720000E2,5.582065666E1 +4.660510000E2,5.436378979E1 +4.663550000E2,5.697364508E1 +4.666350000E2,5.716664070E1 +4.668800000E2,6.098104772E1 +4.671260000E2,5.932872997E1 +4.673960000E2,5.573089336E1 +4.676430000E2,5.791664461E1 +4.678890000E2,5.589855895E1 +4.681490000E2,6.359324433E1 +4.685010000E2,5.902079393E1 +4.687870000E2,6.085500324E1 +4.690180000E2,6.401116813E1 +4.693190000E2,6.157634911E1 +4.695830000E2,6.068297160E1 +4.698370000E2,5.867738322E1 +4.701080000E2,6.069776659E1 +4.703530000E2,5.904983802E1 +4.706060000E2,5.642725313E1 +4.708480000E2,5.600286970E1 +4.711080000E2,5.678564623E1 +4.714020000E2,5.139543439E1 +4.717220000E2,5.924511995E1 +4.720300000E2,5.309180697E1 +4.722790000E2,5.295961103E1 +4.725820000E2,5.448425692E1 +4.728350000E2,5.346047841E1 +4.731210000E2,5.563518239E1 +4.733630000E2,5.630991562E1 +4.736070000E2,5.519344442E1 +4.738520000E2,5.696356709E1 +4.741150000E2,5.721588368E1 +4.743810000E2,5.556082681E1 +4.746430000E2,5.453201409E1 +4.749610000E2,5.621559396E1 +4.752460000E2,6.170975330E1 +4.755640000E2,6.352753975E1 +4.758660000E2,5.818774343E1 +4.761780000E2,6.177058435E1 +4.764630000E2,5.829511769E1 +4.766910000E2,5.658732029E1 +4.769520000E2,6.006113158E1 +4.772530000E2,6.022385702E1 +4.775200000E2,5.965858240E1 +4.778410000E2,5.970326758E1 +4.780960000E2,5.911597661E1 +4.783440000E2,5.656338446E1 +4.786020000E2,5.723922467E1 +4.788680000E2,5.700163516E1 +4.791490000E2,6.083416080E1 +4.794510000E2,5.899425763E1 +4.797630000E2,5.820674449E1 +4.800620000E2,5.648898879E1 +4.803380000E2,5.465743937E1 +4.806090000E2,5.006847009E1 +4.809050000E2,5.870050130E1 +4.811580000E2,5.878066343E1 +4.814060000E2,5.929414686E1 +4.817070000E2,5.758425183E1 +4.819760000E2,5.151398214E1 +4.822410000E2,5.772956896E1 +4.824880000E2,5.913153701E1 +4.827710000E2,5.814746383E1 +4.830140000E2,6.018356701E1 +4.832870000E2,5.985078792E1 +4.835070000E2,6.081307149E1 +4.837500000E2,5.810932132E1 +4.840440000E2,5.700769218E1 +4.842880000E2,5.815119989E1 +4.845920000E2,5.595850943E1 +4.849330000E2,5.891167795E1 +4.851960000E2,5.413833723E1 +4.854760000E2,6.184122004E1 +4.857700000E2,6.074653742E1 +4.860130000E2,6.033024099E1 +4.862530000E2,5.218562994E1 +4.865560000E2,5.902882093E1 +4.868150000E2,6.397338635E1 +4.870790000E2,6.543155406E1 +4.873440000E2,6.181389827E1 +4.876070000E2,6.381240883E1 +4.878770000E2,6.121521197E1 +4.882210000E2,5.780293585E1 +4.884640000E2,5.941826112E1 +4.887100000E2,6.118399944E1 +4.889830000E2,6.000089150E1 +4.892940000E2,5.873163787E1 +4.895350000E2,5.943116280E1 +4.897770000E2,5.867927357E1 +4.900230000E2,6.190584219E1 +4.903270000E2,6.313044892E1 +4.905550000E2,6.096660510E1 +4.907970000E2,5.773464228E1 +4.911090000E2,5.720144266E1 +4.914750000E2,5.797465536E1 +4.917410000E2,6.063197812E1 +4.920040000E2,5.799562897E1 +4.922950000E2,5.391853563E1 +4.925940000E2,6.053973121E1 +4.928320000E2,5.781822977E1 +4.931250000E2,6.541242849E1 +4.933660000E2,6.151252976E1 +4.936620000E2,5.962569242E1 +4.939140000E2,6.114162989E1 +4.941750000E2,6.074296596E1 +4.944160000E2,5.738425867E1 +4.947510000E2,6.084173002E1 +4.950140000E2,5.911448476E1 +4.953100000E2,6.076832164E1 +4.955530000E2,6.357047625E1 +4.958480000E2,6.344590866E1 +4.960850000E2,6.154350148E1 +4.963870000E2,5.815666478E1 +4.966770000E2,5.862350251E1 +4.969720000E2,5.162851816E1 +4.972640000E2,5.887916548E1 +4.975020000E2,6.130693279E1 +4.977480000E2,6.164914583E1 +4.980300000E2,5.689153252E1 +4.983240000E2,6.054571109E1 +4.985610000E2,5.779234792E1 +4.987980000E2,6.281334084E1 +4.991290000E2,6.074883772E1 +4.994230000E2,6.344972933E1 +4.996620000E2,6.040546490E1 +4.999570000E2,6.143019571E1 +5.002020000E2,6.117826214E1 +5.004980000E2,6.217883653E1 +5.007380000E2,6.294102819E1 +5.010930000E2,6.516475449E1 +5.013550000E2,6.119184016E1 +5.016670000E2,6.096554209E1 +5.019390000E2,6.197647057E1 +5.022530000E2,6.186754720E1 +5.025630000E2,5.954982776E1 +5.028510000E2,6.115486405E1 +5.031440000E2,6.348254173E1 +5.033820000E2,5.960570527E1 +5.036780000E2,5.977682583E1 +5.039180000E2,5.709696054E1 +5.042580000E2,6.265263203E1 +5.045140000E2,6.166583393E1 +5.047590000E2,6.184451596E1 +5.050170000E2,6.196658471E1 +5.053150000E2,6.014630927E1 +5.055610000E2,6.055201466E1 +5.058690000E2,6.189129858E1 +5.062120000E2,6.557808579E1 +5.064770000E2,6.080176744E1 +5.067370000E2,6.164107472E1 +5.069870000E2,6.497302078E1 +5.072490000E2,6.320126990E1 +5.076210000E2,6.073801439E1 +5.078780000E2,5.612097300E1 +5.081420000E2,5.978501024E1 +5.084360000E2,6.061444996E1 +5.086860000E2,6.272142993E1 +5.089270000E2,6.250458760E1 +5.092250000E2,5.860749180E1 +5.094720000E2,6.368373725E1 +5.097760000E2,6.005985592E1 +5.100780000E2,5.959557057E1 +5.103410000E2,6.085764000E1 +5.106360000E2,6.210563273E1 +5.109960000E2,6.125336704E1 +5.112590000E2,5.627814405E1 +5.115470000E2,6.253958528E1 +5.118480000E2,6.261683940E1 +5.120990000E2,5.782347554E1 +5.123560000E2,6.181201679E1 +5.126370000E2,6.425542150E1 +5.129400000E2,6.148973489E1 +5.132300000E2,6.230215374E1 +5.134720000E2,6.332855968E1 +5.137620000E2,5.875203916E1 +5.140950000E2,6.043073123E1 +5.143340000E2,5.829778385E1 +5.146280000E2,6.530539120E1 +5.148660000E2,5.725439078E1 +5.151580000E2,6.255661351E1 +5.153960000E2,6.412193683E1 +5.156410000E2,6.315775814E1 +5.158840000E2,6.025521775E1 +5.161460000E2,5.892698587E1 +5.164080000E2,5.956507822E1 +5.166610000E2,6.162757540E1 +5.169960000E2,6.009082976E1 +5.173360000E2,5.999682475E1 +5.176380000E2,6.121463264E1 +5.178750000E2,5.929809726E1 +5.181460000E2,5.746668369E1 +5.183810000E2,5.919113180E1 +5.186360000E2,5.827917213E1 +5.189280000E2,5.902314388E1 +5.192310000E2,6.116063950E1 +5.195310000E2,6.026149556E1 +5.198180000E2,5.851929656E1 +5.200920000E2,5.750929671E1 +5.204160000E2,5.729942637E1 +5.207470000E2,5.472104161E1 +5.210390000E2,6.169397748E1 +5.213450000E2,6.081589597E1 +5.216480000E2,6.278728872E1 +5.219550000E2,6.266319096E1 +5.222160000E2,6.478840582E1 +5.224820000E2,6.255888661E1 +5.227330000E2,6.119451713E1 +5.229970000E2,6.244953097E1 +5.232800000E2,6.000703556E1 +5.236020000E2,5.885323025E1 +5.239510000E2,5.826073845E1 +5.242570000E2,5.807287072E1 +5.245200000E2,5.931641295E1 +5.247800000E2,5.775994158E1 +5.250310000E2,6.167249992E1 +5.253010000E2,6.027694641E1 +5.255430000E2,6.329659774E1 +5.258240000E2,6.254377160E1 +5.261330000E2,6.489975363E1 +5.263840000E2,5.999325642E1 +5.266440000E2,5.885077446E1 +5.268920000E2,6.439829299E1 +5.272450000E2,6.165608373E1 +5.275110000E2,5.418048629E1 +5.277700000E2,5.656005066E1 +5.280170000E2,6.215252288E1 +5.283170000E2,5.743407158E1 +5.285650000E2,5.831214783E1 +5.288200000E2,6.066735547E1 +5.290820000E2,5.994603081E1 +5.293240000E2,5.951550591E1 +5.295810000E2,6.264700953E1 +5.298380000E2,5.736628274E1 +5.301360000E2,5.590406638E1 +5.304530000E2,6.041033291E1 +5.307000000E2,5.968691140E1 +5.309950000E2,5.730835182E1 +5.312390000E2,5.823026311E1 +5.315470000E2,5.871167442E1 +5.318430000E2,5.990765833E1 +5.321400000E2,6.387020611E1 +5.324510000E2,6.077699448E1 +5.326980000E2,5.895294298E1 +5.329820000E2,6.041997988E1 +5.333050000E2,5.806877757E1 +5.336110000E2,5.682362418E1 +5.340220000E2,5.915478638E1 +5.342790000E2,6.110946170E1 +5.345430000E2,5.735857105E1 +5.348060000E2,5.684014045E1 +5.350480000E2,6.043627860E1 +5.353500000E2,5.982929159E1 +5.356290000E2,5.986217314E1 +5.358770000E2,5.677131614E1 +5.361310000E2,5.763848566E1 +5.363810000E2,6.142463983E1 +5.366730000E2,5.634211854E1 +5.369290000E2,5.547608220E1 +5.372430000E2,5.920768747E1 +5.375170000E2,6.113406656E1 +5.377700000E2,6.208964505E1 +5.380710000E2,6.100572025E1 +5.383260000E2,6.352283467E1 +5.386320000E2,5.898993907E1 +5.389570000E2,5.503782412E1 +5.392560000E2,5.663453376E1 +5.395360000E2,6.406828344E1 +5.398060000E2,5.890955595E1 +5.400700000E2,6.046868424E1 +5.403380000E2,5.979639772E1 +5.406170000E2,5.838685694E1 +5.409120000E2,5.933573087E1 +5.411500000E2,5.970536072E1 +5.414430000E2,5.461931777E1 +5.417380000E2,5.891969668E1 +5.419780000E2,6.086182172E1 +5.422730000E2,5.706230292E1 +5.425150000E2,6.002937875E1 +5.428150000E2,5.733734968E1 +5.430520000E2,5.791730719E1 +5.433430000E2,5.451667439E1 +5.436740000E2,5.601232928E1 +5.439430000E2,6.067749331E1 +5.441960000E2,6.044443396E1 +5.445120000E2,6.332642539E1 +5.448320000E2,6.369907597E1 +5.451010000E2,6.327412880E1 +5.453640000E2,6.380509737E1 +5.456090000E2,6.199528902E1 +5.458550000E2,5.905332967E1 +5.461530000E2,5.748064798E1 +5.463920000E2,5.793139247E1 +5.466900000E2,5.931551966E1 +5.470480000E2,6.345498755E1 +5.473610000E2,5.881486603E1 +5.476220000E2,5.928200098E1 +5.478810000E2,5.577309321E1 +5.481470000E2,5.875325885E1 +5.483980000E2,6.007409743E1 +5.486490000E2,6.070612531E1 +5.488940000E2,5.934549940E1 +5.491520000E2,6.170511636E1 +5.494020000E2,6.376886521E1 +5.497010000E2,6.406587518E1 +5.499360000E2,6.365684538E1 +5.503130000E2,6.009406633E1 +5.505850000E2,6.014270409E1 +5.508500000E2,5.879153887E1 +5.511470000E2,5.883782525E1 +5.513760000E2,5.773432280E1 +5.516350000E2,5.966648889E1 +5.518940000E2,5.472606108E1 +5.521930000E2,5.682429497E1 +5.524670000E2,5.619181968E1 +5.527770000E2,5.997719307E1 +5.530460000E2,5.879335465E1 +5.533410000E2,5.983416170E1 +5.537120000E2,5.957041909E1 +5.539420000E2,5.952828793E1 +5.542510000E2,5.971645274E1 +5.545000000E2,6.419337448E1 +5.547730000E2,6.634363344E1 +5.550770000E2,6.285856457E1 +5.553760000E2,5.654671197E1 +5.556440000E2,5.530754918E1 +5.558640000E2,5.889159880E1 +5.561110000E2,6.213947417E1 +5.563520000E2,6.860243311E1 +5.566480000E2,6.647018679E1 +5.569110000E2,6.420604516E1 +5.571650000E2,6.703462967E1 +5.574140000E2,6.648783593E1 +5.576540000E2,6.634001782E1 +5.579350000E2,6.293734135E1 +5.581770000E2,6.205918741E1 +5.584760000E2,5.247262167E1 +5.587220000E2,5.338734169E1 +5.589670000E2,5.662276325E1 +5.592110000E2,5.533465633E1 +5.595080000E2,5.854271946E1 +5.597740000E2,5.660649413E1 +5.600260000E2,6.333844075E1 +5.602860000E2,6.255943536E1 +5.605830000E2,5.392304486E1 +5.608700000E2,5.760897506E1 +5.611660000E2,5.713086887E1 +5.614070000E2,5.720157535E1 +5.617060000E2,5.026592539E1 +5.619510000E2,5.140995344E1 +5.621950000E2,5.663266073E1 +5.624370000E2,5.202695689E1 +5.627360000E2,6.084568668E1 +5.630550000E2,6.179643015E1 +5.632960000E2,5.833759539E1 +5.635420000E2,5.518782498E1 +5.638400000E2,6.578433315E1 +5.640880000E2,5.706187099E1 +5.643850000E2,5.456571992E1 +5.646300000E2,5.536479424E1 +5.649270000E2,5.930541070E1 +5.651540000E2,6.023199994E1 +5.653960000E2,5.612469871E1 +5.656980000E2,5.462007842E1 +5.659410000E2,5.278259804E1 +5.662890000E2,6.064478329E1 +5.666290000E2,5.682964802E1 +5.669030000E2,5.787828261E1 +5.671980000E2,5.712595091E1 +5.674890000E2,5.729764361E1 +5.677450000E2,5.241850056E1 +5.679980000E2,5.377155525E1 +5.682380000E2,5.485418547E1 +5.684830000E2,5.503746434E1 +5.687810000E2,5.398954643E1 +5.690230000E2,5.401913169E1 +5.693270000E2,5.953896215E1 +5.695680000E2,5.626247467E1 +5.698640000E2,6.040491706E1 +5.701050000E2,5.781813181E1 +5.703620000E2,5.733744349E1 +5.706600000E2,5.669032177E1 +5.709140000E2,5.453731954E1 +5.711580000E2,6.235364316E1 +5.714280000E2,5.958044055E1 +5.716860000E2,5.875696014E1 +5.719750000E2,5.570465139E1 +5.722310000E2,4.865236791E1 +5.725580000E2,5.257975627E1 +5.727900000E2,4.975389893E1 +5.730890000E2,5.658508958E1 +5.733660000E2,5.542284648E1 +5.735960000E2,5.536199936E1 +5.738990000E2,5.813474916E1 +5.741540000E2,5.417788207E1 +5.744370000E2,5.704170918E1 +5.746710000E2,5.736828455E1 +5.749280000E2,5.450874678E1 +5.751790000E2,5.610950442E1 +5.754890000E2,5.919887582E1 +5.758690000E2,5.780639378E1 +5.761700000E2,5.709220641E1 +5.764190000E2,5.815359781E1 +5.767060000E2,5.734155824E1 +5.769500000E2,5.925323086E1 +5.772430000E2,6.084767221E1 +5.775370000E2,5.852024889E1 +5.777780000E2,5.822649765E1 +5.780770000E2,5.829089322E1 +5.783770000E2,5.915481192E1 +5.786460000E2,5.996430642E1 +5.789780000E2,6.016421415E1 +5.792520000E2,6.221052482E1 +5.795090000E2,5.533993101E1 +5.798230000E2,6.537257407E1 +5.801220000E2,6.068836920E1 +5.803770000E2,5.728273812E1 +5.806510000E2,5.648369901E1 +5.809070000E2,5.397363349E1 +5.811690000E2,5.755294689E1 +5.814510000E2,5.957149991E1 +5.816900000E2,5.963092636E1 +5.820650000E2,6.778811076E1 +5.823240000E2,6.247529404E1 +5.825840000E2,6.073516327E1 +5.828380000E2,6.039356998E1 +5.830970000E2,5.764504824E1 +5.833990000E2,6.041396176E1 +5.836470000E2,6.355942860E1 +5.838990000E2,5.785560268E1 +5.841390000E2,6.060017525E1 +5.844440000E2,6.032069521E1 +5.847010000E2,5.760371100E1 +5.849440000E2,5.491620812E1 +5.851990000E2,5.957978671E1 +5.855370000E2,6.103184032E1 +5.857970000E2,5.896875350E1 +5.861120000E2,6.008190546E1 +5.863990000E2,5.687378544E1 +5.866450000E2,5.874294643E1 +5.869410000E2,5.870806017E1 +5.871860000E2,5.809143232E1 +5.874740000E2,5.847828699E1 +5.877850000E2,5.846232778E1 +5.880500000E2,5.755876921E1 +5.883650000E2,5.609032758E1 +5.887050000E2,5.685283394E1 +5.889730000E2,5.945975832E1 +5.892710000E2,6.114741701E1 +5.895110000E2,6.316132147E1 +5.898100000E2,6.715155367E1 +5.900480000E2,6.367866992E1 +5.903470000E2,5.131949120E1 +5.905900000E2,5.646494575E1 +5.908880000E2,6.096218752E1 +5.911270000E2,6.089171796E1 +5.913720000E2,6.319522071E1 +5.916410000E2,6.016553529E1 +5.920560000E2,5.915189166E1 +5.923330000E2,5.776862186E1 +5.925640000E2,5.840366445E1 +5.927890000E2,5.978914182E1 +5.930440000E2,6.058699711E1 +5.932650000E2,6.012895387E1 +5.935140000E2,6.295025578E1 +5.937520000E2,6.280196012E1 +5.940110000E2,6.194014009E1 +5.943340000E2,6.483906300E1 +5.945870000E2,5.918257578E1 +5.948380000E2,5.620333930E1 +5.951900000E2,6.323403421E1 +5.954240000E2,6.183177681E1 +5.956620000E2,6.120300936E1 +5.959650000E2,5.836925111E1 +5.961890000E2,6.106023171E1 +5.964920000E2,6.153658324E1 +5.967310000E2,6.490772593E1 +5.969960000E2,6.274228676E1 +5.972520000E2,6.139008510E1 +5.975050000E2,6.281232833E1 +5.978180000E2,6.254982632E1 +5.980890000E2,6.205794184E1 +5.983900000E2,6.438771503E1 +5.986230000E2,6.052772463E1 +5.988520000E2,6.375966703E1 +5.991380000E2,5.869985301E1 +5.993860000E2,6.050357712E1 +5.996630000E2,5.547835745E1 +5.999280000E2,5.400421666E1 +6.001960000E2,5.668252186E1 +6.004880000E2,6.001970320E1 +6.007680000E2,6.056987745E1 +6.010550000E2,6.461211967E1 +6.014090000E2,6.399838195E1 +6.016840000E2,5.485596323E1 +6.019450000E2,5.731519087E1 +6.022080000E2,6.691878914E1 +6.024720000E2,6.479201876E1 +6.027260000E2,6.412847214E1 +6.029760000E2,6.025795068E1 +6.032190000E2,6.098133491E1 +6.035120000E2,5.689387521E1 +6.038040000E2,5.639928101E1 +6.041550000E2,5.328068252E1 +6.044370000E2,5.639829798E1 +6.046770000E2,5.892330560E1 +6.049510000E2,5.315638413E1 +6.051900000E2,5.740260439E1 +6.054620000E2,5.339391440E1 +6.057500000E2,5.310371918E1 +6.060710000E2,5.460903952E1 +6.063050000E2,5.407304270E1 +6.065540000E2,5.870790541E1 +6.068060000E2,5.576782972E1 +6.070790000E2,5.976954147E1 +6.074640000E2,6.181180531E1 +6.077240000E2,6.194364733E1 +6.080150000E2,6.794225297E1 +6.082590000E2,6.236601361E1 +6.085470000E2,6.002700779E1 +6.088450000E2,5.971993236E1 +6.090930000E2,5.954735434E1 +6.093460000E2,5.907202371E1 +6.095920000E2,5.993658420E1 +6.098910000E2,5.530332259E1 +6.101850000E2,5.531802018E1 +6.104220000E2,5.376885939E1 +6.107780000E2,5.735355871E1 +6.110210000E2,5.868610156E1 +6.112710000E2,5.312122754E1 +6.115670000E2,5.745102631E1 +6.118550000E2,5.535536940E1 +6.121540000E2,5.088728731E1 +6.123960000E2,5.266907791E1 +6.126860000E2,5.386493253E1 +6.130010000E2,5.670623073E1 +6.132810000E2,5.563278655E1 +6.135150000E2,5.267172926E1 +6.138540000E2,5.386148816E1 +6.141880000E2,5.716468210E1 +6.144880000E2,5.526918781E1 +6.147190000E2,5.659553915E1 +6.149610000E2,5.648341007E1 +6.152730000E2,5.711745846E1 +6.155520000E2,5.918800114E1 +6.158010000E2,5.642548609E1 +6.161000000E2,5.635896926E1 +6.163480000E2,5.899225051E1 +6.166180000E2,5.374343244E1 +6.168690000E2,4.891042404E1 +6.172050000E2,5.065835680E1 +6.174560000E2,5.685264653E1 +6.177340000E2,5.429270039E1 +6.179930000E2,5.499548313E1 +6.182940000E2,5.407177565E1 +6.185300000E2,5.356533799E1 +6.188300000E2,5.378190643E1 +6.191140000E2,5.189020817E1 +6.193870000E2,5.046647494E1 +6.196450000E2,5.501107364E1 +6.198910000E2,5.798814538E1 +6.201660000E2,5.360844474E1 +6.205080000E2,5.353935610E1 +6.208080000E2,5.620189936E1 +6.210820000E2,6.216008765E1 +6.213360000E2,5.767015155E1 +6.216520000E2,6.210101060E1 +6.219320000E2,5.928042926E1 +6.221800000E2,6.394496555E1 +6.224980000E2,5.872213561E1 +6.227430000E2,5.927091626E1 +6.230010000E2,5.235592166E1 +6.232430000E2,6.313120608E1 +6.235470000E2,6.005436888E1 +6.238480000E2,5.999836557E1 +6.240930000E2,5.879748041E1 +6.243920000E2,5.978277378E1 +6.246440000E2,6.050724590E1 +6.249480000E2,6.282777276E1 +6.252520000E2,6.080897043E1 +6.255640000E2,5.889462949E1 +6.258270000E2,5.550476615E1 +6.260730000E2,5.586785505E1 +6.263620000E2,6.576560120E1 +6.266590000E2,6.102361259E1 +6.270050000E2,6.110507706E1 +6.272870000E2,5.753592100E1 +6.275410000E2,6.297666729E1 +6.278490000E2,6.037594793E1 +6.281160000E2,5.849898506E1 +6.284180000E2,6.165631601E1 +6.287090000E2,6.096774109E1 +6.289510000E2,6.176590968E1 +6.292460000E2,5.947061017E1 +6.294820000E2,6.109202024E1 +6.297790000E2,5.322559935E1 +6.301160000E2,4.971181861E1 +6.303880000E2,5.533921521E1 +6.307250000E2,5.478410742E1 +6.310240000E2,5.647795083E1 +6.313200000E2,5.797504265E1 +6.315690000E2,5.403019222E1 +6.318640000E2,5.301910781E1 +6.321010000E2,5.096544207E1 +6.324030000E2,5.324435941E1 +6.326360000E2,5.447050361E1 +6.328960000E2,5.932781903E1 +6.331500000E2,5.967228428E1 +6.334640000E2,6.319489971E1 +6.337810000E2,5.820271574E1 +6.340710000E2,5.910289699E1 +6.343170000E2,5.681937370E1 +6.346260000E2,5.582227275E1 +6.349350000E2,5.745831651E1 +6.352100000E2,5.504019385E1 +6.354620000E2,5.072303887E1 +6.357190000E2,5.366082959E1 +6.359690000E2,5.380227314E1 +6.362560000E2,4.818205454E1 +6.365090000E2,5.989908626E1 +6.368780000E2,5.659012846E1 +6.371610000E2,5.593157997E1 +6.374460000E2,5.135237935E1 +6.377000000E2,5.687788515E1 +6.379550000E2,5.943975502E1 +6.382630000E2,6.290957992E1 +6.385230000E2,5.827099811E1 +6.387780000E2,5.686391746E1 +6.390620000E2,5.771790911E1 +6.393200000E2,5.390066131E1 +6.395830000E2,5.358231960E1 +6.398480000E2,5.564565007E1 +6.401490000E2,5.205482155E1 +6.404200000E2,5.852280051E1 +6.407340000E2,4.836326193E1 +6.409980000E2,5.905115701E1 +6.412560000E2,5.622349390E1 +6.415040000E2,5.891737338E1 +6.417460000E2,5.749377856E1 +6.420310000E2,5.414095183E1 +6.422680000E2,5.482109112E1 +6.425170000E2,5.202942051E1 +6.428000000E2,4.903409276E1 +6.431250000E2,5.495098254E1 +6.434650000E2,5.777911761E1 +6.437680000E2,5.329076638E1 +6.440080000E2,5.886592322E1 +6.443070000E2,5.661637111E1 +6.445560000E2,5.459133399E1 +6.448230000E2,4.858613706E1 +6.450990000E2,5.642020356E1 +6.453590000E2,5.634614530E1 +6.456240000E2,5.769024626E1 +6.458900000E2,6.037646239E1 +6.461470000E2,5.712013563E1 +6.464260000E2,5.393237723E1 +6.467570000E2,5.443825449E1 +6.469850000E2,5.464133184E1 +6.472460000E2,5.185343249E1 +6.475170000E2,5.670688718E1 +6.477900000E2,5.808659132E1 +6.480150000E2,5.879711687E1 +6.483250000E2,5.860991669E1 +6.485730000E2,5.600484597E1 +6.488230000E2,5.291438286E1 +6.491020000E2,5.869236753E1 +6.493260000E2,5.826316690E1 +6.496250000E2,5.619306699E1 +6.499850000E2,6.085970714E1 +6.502400000E2,6.051231588E1 +6.505400000E2,6.096601072E1 +6.507990000E2,6.197068990E1 +6.511180000E2,6.520817743E1 +6.513810000E2,6.377577246E1 +6.516860000E2,6.105485617E1 +6.519940000E2,5.890751001E1 +6.522910000E2,5.911253604E1 +6.525370000E2,6.291937986E1 +6.528540000E2,6.252638881E1 +6.532210000E2,6.337356348E1 +6.535270000E2,5.894334263E1 +6.537830000E2,5.754939005E1 +6.540930000E2,5.500698560E1 +6.543880000E2,5.014350898E1 +6.546880000E2,5.646260920E1 +6.549870000E2,5.951282585E1 +6.552920000E2,6.099782791E1 +6.555480000E2,6.065538365E1 +6.558100000E2,6.827371953E1 +6.560790000E2,6.035931154E1 +6.563820000E2,6.267306134E1 +6.566350000E2,5.826452213E1 +6.568970000E2,6.092938143E1 +6.572010000E2,6.534130041E1 +6.575130000E2,6.111837506E1 +6.577770000E2,5.826481723E1 +6.580330000E2,5.918147323E1 +6.582980000E2,6.100230752E1 +6.585510000E2,6.302217459E1 +6.588060000E2,5.754956715E1 +6.591080000E2,6.111201710E1 +6.593520000E2,6.017410469E1 +6.597040000E2,6.031944923E1 +6.599450000E2,5.943575512E1 +6.602120000E2,5.868776340E1 +6.605570000E2,5.940543513E1 +6.608500000E2,5.886327816E1 +6.610920000E2,5.770522648E1 +6.613840000E2,5.442777508E1 +6.616200000E2,5.394232060E1 +6.619220000E2,5.856638842E1 +6.622160000E2,5.742664400E1 +6.624600000E2,5.472498345E1 +6.627560000E2,5.672985390E1 +6.629770000E2,5.834702318E1 +6.632250000E2,5.907602823E1 +6.634810000E2,5.873031221E1 +6.637670000E2,5.757130737E1 +6.640040000E2,5.572185824E1 +6.643070000E2,5.959142979E1 +6.645480000E2,5.851623707E1 +6.648520000E2,5.856887935E1 +6.650940000E2,6.397218192E1 +6.653890000E2,5.963692586E1 +6.656210000E2,5.934207027E1 +6.659580000E2,5.667856430E1 +6.662640000E2,5.811017468E1 +6.665550000E2,5.505265787E1 +6.667990000E2,5.558350894E1 +6.671320000E2,6.063017800E1 +6.674000000E2,5.568411381E1 +6.676510000E2,5.981422062E1 +6.679580000E2,5.723024768E1 +6.682820000E2,5.036028104E1 +6.685240000E2,5.199205823E1 +6.687970000E2,5.367328475E1 +6.691280000E2,5.936914884E1 +6.693940000E2,5.657797691E1 +6.696490000E2,6.065879377E1 +6.699270000E2,5.657054255E1 +6.702000000E2,5.655716576E1 +6.704770000E2,5.823562265E1 +6.707350000E2,6.065030224E1 +6.710140000E2,6.110776530E1 +6.712700000E2,5.714357796E1 +6.715170000E2,5.604236164E1 +6.717930000E2,6.041748871E1 +6.721240000E2,6.019765334E1 +6.724270000E2,5.928602786E1 +6.727750000E2,5.973060669E1 +6.730710000E2,6.059869751E1 +6.733250000E2,6.116850166E1 +6.736400000E2,6.145214709E1 +6.738890000E2,6.020118097E1 +6.741670000E2,6.048579637E1 +6.744720000E2,6.225337088E1 +6.747550000E2,5.853636068E1 +6.750030000E2,5.999204871E1 +6.752840000E2,5.433989895E1 +6.755100000E2,5.847308735E1 +6.758420000E2,5.913726954E1 +6.760830000E2,6.049449503E1 +6.763830000E2,5.545572399E1 +6.766370000E2,6.246077536E1 +6.768920000E2,6.029598130E1 +6.771340000E2,6.005864514E1 +6.774230000E2,6.582269585E1 +6.776700000E2,6.255104294E1 +6.779140000E2,6.623711836E1 +6.781740000E2,6.684819787E1 +6.784850000E2,6.877250850E1 +6.787420000E2,6.157084767E1 +6.789860000E2,6.054068573E1 +6.793290000E2,6.069583213E1 +6.795810000E2,6.124898856E1 +6.798240000E2,6.136691849E1 +6.800900000E2,6.035594762E1 +6.803920000E2,5.654106541E1 +6.806920000E2,5.587565134E1 +6.809940000E2,5.642134155E1 +6.813020000E2,5.749983358E1 +6.815830000E2,5.576151961E1 +6.818120000E2,5.714589311E1 +6.820580000E2,5.969510914E1 +6.823020000E2,5.824123453E1 +6.825680000E2,5.779273115E1 +6.828630000E2,5.699644891E1 +6.831010000E2,5.900876644E1 +6.833500000E2,6.335540424E1 +6.835940000E2,6.280432027E1 +6.838340000E2,6.194675910E1 +6.841290000E2,5.801082069E1 +6.843650000E2,5.652506879E1 +6.846570000E2,5.895404856E1 +6.848910000E2,5.873705448E1 +6.851950000E2,5.589704153E1 +6.855380000E2,5.379672362E1 +6.857910000E2,6.287056471E1 +6.860900000E2,6.081817617E1 +6.863340000E2,6.807593043E1 +6.866320000E2,5.604389930E1 +6.868800000E2,6.712075434E1 +6.871750000E2,6.290238552E1 +6.874740000E2,6.473105179E1 +6.877330000E2,5.873835234E1 +6.880180000E2,5.800563858E1 +6.882620000E2,5.540095032E1 +6.885810000E2,6.197881428E1 +6.888280000E2,5.541258482E1 +6.890890000E2,5.558277465E1 +6.894010000E2,4.965923685E1 +6.897080000E2,4.860020107E1 +6.899730000E2,5.608167548E1 +6.902300000E2,5.381305593E1 +6.904990000E2,6.079286270E1 +6.908000000E2,6.446965644E1 +6.910380000E2,6.556266140E1 +6.913400000E2,5.418444209E1 +6.916350000E2,5.205102491E1 +6.919820000E2,5.812981404E1 +6.922410000E2,6.500705260E1 +6.925070000E2,6.149947285E1 +6.927750000E2,5.695315316E1 +6.930870000E2,5.775854948E1 +6.933870000E2,6.523399833E1 +6.936300000E2,6.692630865E1 +6.939270000E2,5.793447825E1 +6.942230000E2,5.746396110E1 +6.944770000E2,6.017975210E1 +6.947150000E2,5.956759439E1 +6.950320000E2,6.391288151E1 +6.953110000E2,6.484415086E1 +6.955650000E2,6.664209540E1 +6.958410000E2,6.746668632E1 +6.961050000E2,5.775664920E1 +6.964050000E2,6.383035698E1 +6.967020000E2,5.816763892E1 +6.969600000E2,6.921190909E1 +6.972400000E2,6.165047809E1 +6.975080000E2,5.666810057E1 +6.977540000E2,6.417546300E1 +6.980020000E2,5.788971486E1 +6.982730000E2,5.486922606E1 +6.985850000E2,5.576434723E1 +6.988820000E2,5.548978795E1 +6.991460000E2,5.886820316E1 +6.993970000E2,6.226406326E1 +6.996480000E2,5.601534080E1 +6.999400000E2,5.901385758E1 +7.002040000E2,5.720709772E1 +7.005120000E2,6.318399213E1 +7.007580000E2,6.338981741E1 +7.010170000E2,6.747312486E1 +7.012670000E2,5.788999692E1 +7.015450000E2,4.434465006E1 +7.018710000E2,6.439013955E1 +7.021480000E2,5.375342664E1 +7.023700000E2,6.398282027E1 +7.026160000E2,5.857909138E1 +7.029130000E2,5.670439641E1 +7.031590000E2,5.749786365E1 +7.034320000E2,5.181710985E1 +7.036770000E2,5.871535868E1 +7.039520000E2,5.470297527E1 +7.042240000E2,5.771822323E1 +7.044750000E2,5.236261523E1 +7.047130000E2,5.595332709E1 +7.050480000E2,5.576748295E1 +7.053040000E2,5.334869600E1 +7.055590000E2,5.337806625E1 +7.058180000E2,5.499892680E1 +7.060900000E2,5.490963435E1 +7.063980000E2,5.551078540E1 +7.066680000E2,5.358868238E1 +7.069300000E2,5.203182642E1 +7.071760000E2,5.771053387E1 +7.074630000E2,5.175835182E1 +7.077440000E2,5.402526598E1 +7.080400000E2,5.754717994E1 +7.083470000E2,6.103880587E1 +7.086400000E2,6.284824916E1 +7.088840000E2,6.674666322E1 +7.092010000E2,6.194114278E1 +7.094980000E2,5.796289911E1 +7.097580000E2,5.475547679E1 +7.100170000E2,5.804024708E1 +7.102650000E2,5.606423134E1 +7.105550000E2,5.319247933E1 +7.107930000E2,5.625991375E1 +7.110940000E2,5.589539698E1 +7.114730000E2,6.073460415E1 +7.117930000E2,6.208342045E1 +7.120530000E2,6.335117127E1 +7.123290000E2,5.821275565E1 +7.126280000E2,5.793160357E1 +7.128780000E2,5.509944006E1 +7.131790000E2,5.578357696E1 +7.134760000E2,5.632534225E1 +7.137350000E2,5.466315647E1 +7.140450000E2,5.914530785E1 +7.143020000E2,6.280432125E1 +7.146020000E2,6.333348539E1 +7.149790000E2,5.698482465E1 +7.152920000E2,5.474810308E1 +7.155370000E2,5.417920207E1 +7.157880000E2,6.392184792E1 +7.160720000E2,6.565549591E1 +7.163130000E2,6.082705714E1 +7.166120000E2,5.816285927E1 +7.168430000E2,5.809201859E1 +7.170930000E2,6.016105207E1 +7.173350000E2,5.162287691E1 +7.176230000E2,5.754317879E1 +7.179310000E2,6.166304542E1 +7.181770000E2,6.177004553E1 +7.184320000E2,6.274574776E1 +7.186900000E2,6.104994734E1 +7.189920000E2,5.735301480E1 +7.192340000E2,5.830205645E1 +7.194890000E2,6.212782217E1 +7.197420000E2,5.467685243E1 +7.200420000E2,5.313970583E1 +7.202920000E2,5.278680647E1 +7.205360000E2,5.474141102E1 +7.209140000E2,6.241771654E1 +7.212600000E2,6.394594172E1 +7.215560000E2,6.348358734E1 +7.217980000E2,6.112734048E1 +7.220450000E2,6.226451183E1 +7.222930000E2,6.534082516E1 +7.225960000E2,6.114019283E1 +7.228390000E2,6.421228964E1 +7.231230000E2,6.814847387E1 +7.233690000E2,6.275446304E1 +7.236190000E2,6.679153921E1 +7.239280000E2,6.537583699E1 +7.241850000E2,6.212976374E1 +7.245300000E2,6.553556935E1 +7.248220000E2,5.834030427E1 +7.250930000E2,5.992153646E1 +7.253380000E2,5.595099295E1 +7.256370000E2,5.720822528E1 +7.258800000E2,5.423516872E1 +7.261770000E2,5.906139652E1 +7.264140000E2,6.204477132E1 +7.267140000E2,6.368823365E1 +7.269550000E2,6.513672214E1 +7.272500000E2,6.364997971E1 +7.275370000E2,6.269941998E1 +7.278570000E2,5.948773609E1 +7.281020000E2,5.789544973E1 +7.283740000E2,6.305528689E1 +7.286400000E2,6.245554089E1 +7.289690000E2,6.033221518E1 +7.292310000E2,5.940071821E1 +7.294970000E2,6.176178101E1 +7.298020000E2,5.355172623E1 +7.300580000E2,5.535292187E1 +7.303150000E2,5.274398781E1 +7.305750000E2,5.399957194E1 +7.308780000E2,5.819691646E1 +7.312070000E2,5.434897588E1 +7.315090000E2,6.041787911E1 +7.317850000E2,5.617860881E1 +7.320560000E2,5.558770875E1 +7.323290000E2,5.151264449E1 +7.325860000E2,5.612143969E1 +7.328800000E2,5.405001557E1 +7.331120000E2,5.455354216E1 +7.334090000E2,5.716252136E1 +7.337070000E2,6.416157102E1 +7.339910000E2,6.098010142E1 +7.343020000E2,6.194029449E1 +7.346500000E2,6.091313037E1 +7.349540000E2,5.846954669E1 +7.352410000E2,5.743489407E1 +7.355320000E2,5.872669957E1 +7.357800000E2,5.859080967E1 +7.360560000E2,6.053269456E1 +7.363220000E2,6.117884455E1 +7.366590000E2,5.809887850E1 +7.369420000E2,5.453224539E1 +7.372510000E2,5.639337460E1 +7.375040000E2,5.373613181E1 +7.378630000E2,5.066236714E1 +7.381160000E2,4.653740377E1 +7.383650000E2,6.375011526E1 +7.386730000E2,6.282181577E1 +7.389830000E2,6.727660972E1 +7.392340000E2,6.413328322E1 +7.394790000E2,6.184881400E1 +7.397290000E2,6.430634497E1 +7.400250000E2,6.276256291E1 +7.402610000E2,6.297441350E1 +7.405590000E2,5.306586823E1 +7.408610000E2,5.403016569E1 +7.412260000E2,5.749263443E1 +7.415060000E2,5.657932114E1 +7.417820000E2,5.532222303E1 +7.420430000E2,5.911133378E1 +7.423450000E2,5.822379827E1 +7.426470000E2,6.311870884E1 +7.428860000E2,5.964121243E1 +7.431940000E2,5.708688763E1 +7.434960000E2,5.782189241E1 +7.437480000E2,5.745118469E1 +7.440380000E2,5.258772989E1 +7.442830000E2,5.325984780E1 +7.445410000E2,5.216709684E1 +7.447900000E2,5.485283680E1 +7.450520000E2,6.638751453E1 +7.453640000E2,6.256149725E1 +7.456370000E2,6.851667797E1 +7.459020000E2,6.356784575E1 +7.462040000E2,6.586178842E1 +7.464510000E2,6.099626883E1 +7.467420000E2,6.874341983E1 +7.470300000E2,5.690479739E1 +7.472670000E2,5.749513215E1 +7.475860000E2,5.743840209E1 +7.478480000E2,6.695338823E1 +7.481550000E2,6.575566103E1 +7.484170000E2,6.244751264E1 +7.486690000E2,6.206430480E1 +7.489520000E2,5.755143157E1 +7.492450000E2,6.343498072E1 +7.494820000E2,6.599354682E1 +7.497800000E2,5.994269627E1 +7.500210000E2,6.480563885E1 +7.503160000E2,5.962320355E1 +7.505550000E2,5.907805627E1 +7.508860000E2,5.452673237E1 +7.511450000E2,5.413358853E1 +7.514110000E2,5.786691992E1 +7.516870000E2,6.185088179E1 +7.519570000E2,5.432685780E1 +7.522050000E2,5.297819944E1 +7.524920000E2,5.290855554E1 +7.527910000E2,5.828859659E1 +7.530300000E2,5.880189294E1 +7.533360000E2,5.500578631E1 +7.535910000E2,5.476677878E1 +7.538330000E2,5.414240587E1 +7.541650000E2,5.332866170E1 +7.544620000E2,5.193802785E1 +7.547080000E2,5.242932681E1 +7.549590000E2,6.024921863E1 +7.552020000E2,5.537701523E1 +7.554960000E2,5.489617845E1 +7.557330000E2,5.384280286E1 +7.560410000E2,5.406125999E1 +7.562870000E2,5.246560959E1 +7.565320000E2,5.374729291E1 +7.567680000E2,5.542801483E1 +7.570630000E2,5.525770987E1 +7.573930000E2,5.847670432E1 +7.576660000E2,5.822188632E1 +7.579180000E2,5.822901451E1 +7.582040000E2,5.458975346E1 +7.584820000E2,5.438683247E1 +7.587800000E2,5.260449368E1 +7.590260000E2,5.371245859E1 +7.592870000E2,4.983203663E1 +7.595420000E2,5.018089077E1 +7.598380000E2,5.950969681E1 +7.601480000E2,5.769305363E1 +7.604800000E2,5.747567937E1 +7.607190000E2,5.446335810E1 +7.610040000E2,5.463229896E1 +7.612970000E2,5.644916160E1 +7.615560000E2,5.809520116E1 +7.618460000E2,5.406577519E1 +7.621050000E2,5.362277750E1 +7.623930000E2,5.868559294E1 +7.626230000E2,5.548744129E1 +7.628890000E2,5.613986675E1 +7.631890000E2,5.592058678E1 +7.634870000E2,5.947938191E1 +7.638120000E2,5.945990241E1 +7.640830000E2,5.354091788E1 +7.643270000E2,5.910847411E1 +7.645670000E2,6.112853730E1 +7.648120000E2,5.617469613E1 +7.650520000E2,5.678172470E1 +7.653190000E2,5.293731054E1 +7.655730000E2,5.571573154E1 +7.658430000E2,5.239475172E1 +7.660900000E2,5.710555790E1 +7.663840000E2,5.593714408E1 +7.666500000E2,5.506488062E1 +7.669100000E2,5.276148627E1 +7.671530000E2,5.087813070E1 +7.674500000E2,4.966858228E1 +7.677070000E2,4.690170064E1 +7.679870000E2,5.097718665E1 +7.682460000E2,5.173969669E1 +7.685220000E2,5.562988056E1 +7.687630000E2,5.194720020E1 +7.690630000E2,5.590118249E1 +7.693610000E2,5.613585205E1 +7.696030000E2,5.417299550E1 +7.698530000E2,5.925774948E1 +7.702010000E2,5.729895975E1 +7.704610000E2,5.765570707E1 +7.707610000E2,6.211008380E1 +7.710570000E2,5.846530012E1 +7.712970000E2,5.766544416E1 +7.715460000E2,5.716238768E1 +7.718080000E2,5.700535494E1 +7.720510000E2,5.592606747E1 +7.723260000E2,5.771214429E1 +7.725940000E2,5.753442175E1 +7.728830000E2,5.541298336E1 +7.731860000E2,5.137853822E1 +7.735420000E2,5.462649470E1 +7.738320000E2,5.454281912E1 +7.740820000E2,6.803752283E1 +7.743260000E2,6.852980541E1 +7.745820000E2,7.007631543E1 +7.748270000E2,7.009876218E1 +7.751160000E2,6.950363051E1 +7.753520000E2,6.338954984E1 +7.755910000E2,5.500200077E1 +7.758880000E2,5.358702362E1 +7.761340000E2,5.718303470E1 +7.763730000E2,5.887519420E1 +7.767050000E2,5.795457078E1 +7.769970000E2,5.796499201E1 +7.773000000E2,5.644912180E1 +7.775570000E2,5.804780214E1 +7.778740000E2,5.958528627E1 +7.781300000E2,5.635913866E1 +7.784430000E2,5.593106857E1 +7.787280000E2,6.063168213E1 +7.789960000E2,5.917208792E1 +7.792560000E2,5.719923422E1 +7.795050000E2,6.400429125E1 +7.797680000E2,5.733192807E1 +7.800440000E2,6.018331087E1 +7.803000000E2,6.350407169E1 +7.805530000E2,6.357762743E1 +7.808590000E2,6.772563953E1 +7.811430000E2,6.431848914E1 +7.814050000E2,5.710721917E1 +7.816950000E2,5.646111127E1 +7.819500000E2,5.564600214E1 +7.822050000E2,6.362802489E1 +7.824550000E2,6.278310471E1 +7.827010000E2,5.851995741E1 +7.829620000E2,5.759567059E1 +7.832630000E2,5.449669640E1 +7.835070000E2,6.040303881E1 +7.837500000E2,5.743841461E1 +7.839990000E2,6.096558185E1 +7.842840000E2,7.161293257E1 +7.845270000E2,7.417435903E1 +7.848410000E2,6.386070968E1 +7.851390000E2,6.234904760E1 +7.854350000E2,6.321731436E1 +7.856820000E2,6.294103551E1 +7.859780000E2,6.210337552E1 +7.862150000E2,6.765383904E1 +7.865650000E2,6.346682761E1 +7.868610000E2,6.221020232E1 +7.871280000E2,6.119530731E1 +7.873850000E2,5.314248269E1 +7.876880000E2,5.288680780E1 +7.879230000E2,5.064349321E1 +7.882230000E2,5.786336298E1 +7.884630000E2,5.341864841E1 +7.887250000E2,5.286568073E1 +7.890140000E2,5.272997567E1 +7.893180000E2,5.904110581E1 +7.896690000E2,5.748622391E1 +7.899200000E2,5.773986136E1 +7.902160000E2,5.480967078E1 +7.904710000E2,5.627241382E1 +7.907280000E2,5.456362797E1 +7.909900000E2,5.766408512E1 +7.912380000E2,5.413586400E1 +7.914940000E2,5.234403284E1 +7.917720000E2,5.190170354E1 +7.920440000E2,5.227759392E1 +7.923170000E2,4.410400383E1 +7.926220000E2,3.508270700E1 +7.929370000E2,3.887828085E1 +7.932030000E2,4.522069604E1 +7.934660000E2,4.928233980E1 +7.937420000E2,4.706401379E1 +7.940710000E2,4.988989997E1 +7.943700000E2,5.767827889E1 +7.946060000E2,5.506606719E1 +7.949050000E2,6.107887773E1 +7.952060000E2,5.849609892E1 +7.955030000E2,5.343173328E1 +7.957490000E2,5.007726003E1 +7.960580000E2,4.763873915E1 +7.963010000E2,5.045894898E1 +7.966040000E2,6.859700710E1 +7.968900000E2,6.734256534E1 +7.971550000E2,6.661489392E1 +7.974110000E2,6.556398865E1 +7.976580000E2,5.519705677E1 +7.979230000E2,5.503316479E1 +7.982060000E2,5.955770829E1 +7.984280000E2,5.777834711E1 +7.987260000E2,6.050467535E1 +7.989700000E2,5.583639573E1 +7.993330000E2,5.988908902E1 +7.995750000E2,5.875791040E1 +7.998670000E2,6.166637478E1 +8.001160000E2,5.690435901E1 +8.004160000E2,5.599911293E1 +8.006610000E2,5.889628547E1 +8.009180000E2,6.227540789E1 +8.011740000E2,6.572663811E1 +8.014300000E2,6.013467784E1 +8.016770000E2,6.250368579E1 +8.019910000E2,6.532292099E1 +8.023560000E2,5.377170031E1 +8.026370000E2,5.535595108E1 +8.029110000E2,5.147526495E1 +8.031720000E2,4.993046061E1 +8.034760000E2,6.394035794E1 +8.037260000E2,5.983119170E1 +8.040270000E2,5.967243802E1 +8.042930000E2,6.559340840E1 +8.046100000E2,5.262215496E1 +8.049160000E2,5.397812040E1 +8.051780000E2,5.680330381E1 +8.054740000E2,5.857171626E1 +8.058060000E2,5.577198454E1 +8.060880000E2,5.916891157E1 +8.063460000E2,6.120078548E1 +8.066060000E2,6.223167379E1 +8.069230000E2,6.161077093E1 +8.071720000E2,5.812180846E1 +8.074300000E2,5.665535607E1 +8.077230000E2,5.401482687E1 +8.079600000E2,5.631804256E1 +8.082610000E2,5.267806276E1 +8.085540000E2,5.766120113E1 +8.088100000E2,5.717509884E1 +8.091690000E2,5.698714543E1 +8.094130000E2,5.807918354E1 +8.096940000E2,5.364566959E1 +8.099320000E2,5.678502402E1 +8.102110000E2,5.494444844E1 +8.104710000E2,6.216218230E1 +8.107550000E2,5.504588420E1 +8.110030000E2,5.220186059E1 +8.112810000E2,5.338487037E1 +8.115430000E2,5.422122114E1 +8.118180000E2,6.217546099E1 +8.121430000E2,5.739027439E1 +8.124800000E2,5.218554734E1 +8.128080000E2,6.183667492E1 +8.130850000E2,6.028246668E1 +8.133620000E2,6.620979851E1 +8.135950000E2,5.810667246E1 +8.138630000E2,6.096670869E1 +8.141300000E2,5.149777407E1 +8.143960000E2,4.993954713E1 +8.146400000E2,5.196561010E1 +8.149350000E2,5.727966309E1 +8.151710000E2,5.489316784E1 +8.154100000E2,5.619291420E1 +8.157500000E2,5.425831711E1 +8.160430000E2,5.677079709E1 +8.163250000E2,5.289383275E1 +8.165600000E2,5.573749616E1 +8.168090000E2,5.211960412E1 +8.170840000E2,5.029895102E1 +8.173170000E2,5.085418245E1 +8.175630000E2,5.101392152E1 +8.178870000E2,5.228690479E1 +8.182130000E2,5.919931006E1 +8.184680000E2,5.288617356E1 +8.188320000E2,5.626269479E1 +8.191030000E2,6.124827198E1 +8.193870000E2,5.889071517E1 +8.196160000E2,5.957980623E1 +8.199180000E2,5.440069788E1 +8.201590000E2,5.524226830E1 +8.204560000E2,5.147688867E1 +8.206870000E2,5.390780082E1 +8.209820000E2,6.509870984E1 +8.212270000E2,6.421388309E1 +8.215230000E2,5.843840462E1 +8.218170000E2,5.422512027E1 +8.221280000E2,5.468614274E1 +8.223780000E2,5.922850585E1 +8.226710000E2,6.486031186E1 +8.229330000E2,6.154967201E1 +8.232420000E2,5.893257410E1 +8.235100000E2,6.020329639E1 +8.238290000E2,5.483779552E1 +8.240760000E2,5.692914998E1 +8.243280000E2,6.347347085E1 +8.245930000E2,5.345306004E1 +8.248670000E2,6.141647052E1 +8.252000000E2,5.672783001E1 +8.254550000E2,5.605661334E1 +8.257610000E2,5.699330885E1 +8.260410000E2,5.489256860E1 +8.263010000E2,6.262090025E1 +8.265830000E2,5.457719262E1 +8.268180000E2,5.416382407E1 +8.271260000E2,4.993919751E1 +8.273700000E2,5.569569056E1 +8.276330000E2,5.514364162E1 +8.278890000E2,5.653204472E1 +8.281470000E2,5.784406489E1 +8.284370000E2,5.752811490E1 +8.286720000E2,5.727510089E1 +8.289650000E2,5.900575965E1 +8.292510000E2,5.679022390E1 +8.294860000E2,5.722234118E1 +8.297350000E2,5.952638514E1 +8.300320000E2,5.925181191E1 +8.302740000E2,5.930148258E1 +8.305160000E2,5.668145507E1 +8.307730000E2,5.590492759E1 +8.310130000E2,6.302930486E1 +8.312510000E2,5.733539345E1 +8.315800000E2,5.620349253E1 +8.318910000E2,5.495250031E1 +8.322000000E2,5.501979251E1 +8.324620000E2,5.208226415E1 +8.327390000E2,5.765748383E1 +8.329950000E2,5.489193423E1 +8.332490000E2,5.593428331E1 +8.335720000E2,5.714652117E1 +8.338250000E2,5.832769426E1 +8.341370000E2,5.884156077E1 +8.344030000E2,5.840498509E1 +8.347020000E2,5.864505811E1 +8.350330000E2,6.356982434E1 +8.353340000E2,6.286445683E1 +8.355720000E2,5.657384439E1 +8.358940000E2,5.660970318E1 +8.361720000E2,5.918731584E1 +8.364160000E2,5.825788220E1 +8.366580000E2,5.592754487E1 +8.369110000E2,5.553717092E1 +8.371910000E2,5.495027293E1 +8.374510000E2,5.546329287E1 +8.377420000E2,5.746402701E1 +8.379890000E2,5.891922359E1 +8.383130000E2,6.522858798E1 +8.385710000E2,6.384617776E1 +8.388430000E2,5.435088619E1 +8.390670000E2,5.460135210E1 +8.393610000E2,5.982769627E1 +8.396020000E2,5.936265195E1 +8.398550000E2,6.034701146E1 +8.401470000E2,6.875861473E1 +8.403840000E2,6.968788985E1 +8.406760000E2,6.653493651E1 +8.409120000E2,6.664139767E1 +8.412200000E2,6.195236791E1 +8.415280000E2,5.759269564E1 +8.418110000E2,5.704906263E1 +8.420770000E2,5.199124728E1 +8.423350000E2,5.625309672E1 +8.426060000E2,5.627754144E1 +8.428710000E2,6.285304788E1 +8.431220000E2,6.089762622E1 +8.434160000E2,5.828079525E1 +8.436650000E2,5.581703965E1 +8.439650000E2,5.326092983E1 +8.442070000E2,5.247397640E1 +8.444500000E2,5.104216729E1 +8.447560000E2,4.981466747E1 +8.450730000E2,5.794387296E1 +8.453210000E2,6.103400827E1 +8.455680000E2,6.053778141E1 +8.458610000E2,5.413066164E1 +8.461240000E2,5.591468697E1 +8.463740000E2,5.289659812E1 +8.466770000E2,6.014390988E1 +8.469740000E2,5.713983843E1 +8.472340000E2,5.457406708E1 +8.474800000E2,5.848999564E1 +8.478210000E2,5.310404619E1 +8.481040000E2,5.463633704E1 +8.483620000E2,5.329096892E1 +8.486670000E2,5.667645304E1 +8.489890000E2,5.540515985E1 +8.492420000E2,5.014593999E1 +8.495060000E2,5.019949668E1 +8.497660000E2,4.724526190E1 +8.500410000E2,4.632701850E1 +8.502660000E2,4.436725745E1 +8.505710000E2,5.273585220E1 +8.508470000E2,5.232501704E1 +8.511370000E2,5.177389205E1 +8.513940000E2,5.236772038E1 +8.516560000E2,4.869019062E1 +8.518980000E2,5.254056589E1 +8.521620000E2,5.441215371E1 +8.524060000E2,5.431954181E1 +8.526720000E2,4.873515026E1 +8.529820000E2,5.253291311E1 +8.532350000E2,5.201920339E1 +8.535330000E2,5.083296820E1 +8.537750000E2,5.373650683E1 +8.540560000E2,6.162621210E1 +8.543710000E2,6.137876928E1 +8.546190000E2,6.347980201E1 +8.548850000E2,6.480134627E1 +8.551390000E2,6.344943059E1 +8.553830000E2,6.653758852E1 +8.556910000E2,6.821811094E1 +8.559900000E2,6.564040109E1 +8.562480000E2,6.310710880E1 +8.565060000E2,5.625485760E1 +8.567860000E2,5.886920329E1 +8.570590000E2,5.638007706E1 +8.573180000E2,5.477312089E1 +8.576670000E2,5.402637072E1 +8.579310000E2,5.282806817E1 +8.582400000E2,5.743205922E1 +8.584770000E2,5.608834078E1 +8.587730000E2,5.917700537E1 +8.590950000E2,5.757076232E1 +8.593390000E2,5.680975976E1 +8.596110000E2,5.316092446E1 +8.598560000E2,5.634389465E1 +8.601130000E2,5.912558361E1 +8.603880000E2,5.827706684E1 +8.606370000E2,5.580056474E1 +8.609720000E2,5.622551838E1 +8.612190000E2,5.816090597E1 +8.614650000E2,5.710633258E1 +8.617260000E2,6.762679027E1 +8.619970000E2,6.050550643E1 +8.622480000E2,6.017289530E1 +8.624960000E2,5.884551198E1 +8.627510000E2,5.823958631E1 +8.630120000E2,5.747421536E1 +8.632920000E2,5.891926612E1 +8.635810000E2,5.962176090E1 +8.638680000E2,5.932606834E1 +8.642430000E2,6.035939553E1 +8.645920000E2,5.892740034E1 +8.649090000E2,6.158225090E1 +8.651650000E2,5.941856931E1 +8.654560000E2,5.517726055E1 +8.656900000E2,5.573554393E1 +8.659400000E2,6.300977067E1 +8.662170000E2,6.346838855E1 +8.664760000E2,5.840482341E1 +8.667600000E2,5.656477763E1 +8.669980000E2,5.809371706E1 +8.672500000E2,5.957523428E1 +8.675890000E2,5.868790884E1 +8.678670000E2,6.643274765E1 +8.681530000E2,6.202304252E1 +8.684260000E2,6.167390940E1 +8.686760000E2,6.561664622E1 +8.689220000E2,6.221849135E1 +8.691620000E2,5.873701255E1 +8.694080000E2,5.721335717E1 +8.696600000E2,5.775578048E1 +8.699210000E2,6.139190630E1 +8.702060000E2,5.695582014E1 +8.705330000E2,5.285782467E1 +8.708800000E2,5.254436807E1 +8.711320000E2,5.941119733E1 +8.714840000E2,5.561687107E1 +8.717890000E2,5.226341013E1 +8.720340000E2,5.351737673E1 +8.723120000E2,5.581753669E1 +8.725450000E2,5.544476975E1 +8.727930000E2,5.112331517E1 +8.731050000E2,5.669948434E1 +8.733660000E2,5.553741274E1 +8.736450000E2,5.287392842E1 +8.738710000E2,5.342755356E1 +8.742030000E2,5.525376809E1 +8.745760000E2,5.790146612E1 +8.748470000E2,5.775550126E1 +8.750900000E2,5.828043309E1 +8.753860000E2,5.689517506E1 +8.756490000E2,5.836000549E1 +8.759170000E2,5.887049385E1 +8.761640000E2,5.731343570E1 +8.764240000E2,5.947081752E1 +8.766660000E2,5.735732777E1 +8.769150000E2,5.791222148E1 +8.771870000E2,5.217820200E1 +8.775110000E2,5.373516267E1 +8.777550000E2,5.639663701E1 +8.779960000E2,5.308435393E1 +8.782370000E2,5.327040257E1 +8.785510000E2,5.539866825E1 +8.788050000E2,5.451580533E1 +8.791100000E2,5.664888244E1 +8.793670000E2,5.439058144E1 +8.796110000E2,6.546629591E1 +8.799090000E2,6.080313073E1 +8.801560000E2,6.023654065E1 +8.804070000E2,5.547022044E1 +8.807450000E2,5.933402552E1 +8.809880000E2,6.073235462E1 +8.812850000E2,5.811897337E1 +8.815210000E2,5.670873426E1 +8.818240000E2,6.239450766E1 +8.821160000E2,6.033779387E1 +8.823610000E2,5.921328684E1 +8.826600000E2,5.808215882E1 +8.828910000E2,5.927124720E1 +8.831280000E2,5.254346564E1 +8.834120000E2,5.755316817E1 +8.837180000E2,5.815703318E1 +8.840150000E2,5.925974643E1 +8.842610000E2,5.406291788E1 +8.845520000E2,5.892672719E1 +8.847970000E2,6.343231596E1 +8.850390000E2,6.045689612E1 +8.853340000E2,5.903303339E1 +8.855810000E2,5.897514906E1 +8.858230000E2,5.682843230E1 +8.860690000E2,4.647265993E1 +8.863400000E2,5.617216143E1 +8.865730000E2,5.412892937E1 +8.869100000E2,6.210166513E1 +8.872070000E2,6.369099543E1 +8.874540000E2,6.052073025E1 +8.877480000E2,6.125108403E1 +8.879990000E2,6.087163347E1 +8.882550000E2,6.365510666E1 +8.885320000E2,5.341778352E1 +8.887600000E2,5.238943476E1 +8.890050000E2,6.378561240E1 +8.892460000E2,6.182956815E1 +8.895070000E2,6.027537659E1 +8.897770000E2,5.747996426E1 +8.901220000E2,5.606477689E1 +8.903620000E2,5.816493441E1 +8.907030000E2,5.740436721E1 +8.909540000E2,5.812990427E1 +8.912060000E2,5.757163286E1 +8.914520000E2,5.669306215E1 +8.917150000E2,5.593698617E1 +8.919580000E2,5.867011196E1 +8.922060000E2,6.001129970E1 +8.924480000E2,6.247831114E1 +8.927080000E2,5.501506807E1 +8.929550000E2,5.918039480E1 +8.932790000E2,5.750337148E1 +8.935260000E2,5.382626014E1 +8.937850000E2,5.632583646E1 +8.940370000E2,5.552393419E1 +8.943380000E2,5.417609473E1 +8.946050000E2,5.314873345E1 +8.948570000E2,5.537690953E1 +8.951790000E2,6.168371256E1 +8.954540000E2,6.142331687E1 +8.957690000E2,5.914263764E1 +8.960690000E2,6.039127428E1 +8.963670000E2,5.303465172E1 +8.966720000E2,5.819495208E1 +8.969200000E2,5.956457754E1 +8.972240000E2,5.554166388E1 +8.974940000E2,5.700583380E1 +8.978160000E2,5.525596264E1 +8.981210000E2,5.878997726E1 +8.983720000E2,5.661289659E1 +8.986510000E2,6.039909322E1 +8.988730000E2,5.569487247E1 +8.991240000E2,5.857026750E1 +8.993800000E2,6.116905404E1 +8.996580000E2,6.331625006E1 +8.998890000E2,5.612470465E1 +9.001440000E2,5.098243988E1 +9.004020000E2,5.779474181E1 +9.006650000E2,5.597754805E1 +9.009440000E2,5.706395638E1 +9.012380000E2,5.989184595E1 +9.015000000E2,5.905145002E1 +9.017620000E2,5.913397617E1 +9.020230000E2,5.831976398E1 +9.022900000E2,5.400731512E1 +9.025900000E2,6.547285797E1 +9.029050000E2,6.534571775E1 +9.032100000E2,5.428834230E1 +9.034580000E2,4.919896084E1 +9.037180000E2,5.326934205E1 +9.039740000E2,5.135684539E1 +9.042700000E2,5.784030554E1 +9.045180000E2,5.789711892E1 +9.048150000E2,5.501985460E1 +9.050680000E2,5.394185103E1 +9.053920000E2,5.504541187E1 +9.056620000E2,5.574384904E1 +9.059260000E2,5.198297704E1 +9.062920000E2,5.507423148E1 +9.065460000E2,5.073979477E1 +9.068090000E2,5.409355601E1 +9.071500000E2,5.842003605E1 +9.074380000E2,6.323761852E1 +9.076890000E2,5.475142925E1 +9.079510000E2,5.285089191E1 +9.082580000E2,6.228883476E1 +9.085110000E2,6.229139223E1 +9.087590000E2,5.849936549E1 +9.090220000E2,6.382664868E1 +9.092560000E2,5.234586511E1 +9.095720000E2,5.506613760E1 +9.098700000E2,5.883918884E1 +9.101180000E2,5.722745073E1 +9.103980000E2,6.006905181E1 +9.106670000E2,6.333821195E1 +9.109390000E2,5.997503412E1 +9.111770000E2,5.691091005E1 +9.114250000E2,5.629684565E1 +9.117070000E2,5.944947286E1 +9.119370000E2,5.757115704E1 +9.122030000E2,5.617546709E1 +9.125090000E2,5.506166951E1 +9.128480000E2,5.345826069E1 +9.131070000E2,5.586702127E1 +9.133900000E2,6.075354367E1 +9.137040000E2,5.668960998E1 +9.139920000E2,5.584388878E1 +9.142800000E2,5.668519299E1 +9.145740000E2,5.400550993E1 +9.148220000E2,5.668991412E1 +9.150670000E2,5.455006531E1 +9.153720000E2,5.750041942E1 +9.156590000E2,5.756327349E1 +9.159630000E2,5.822694927E1 +9.162110000E2,5.764545771E1 +9.164660000E2,5.716015909E1 +9.167560000E2,5.136001811E1 +9.170200000E2,4.706951064E1 +9.172710000E2,4.999131008E1 +9.175180000E2,5.619976433E1 +9.178030000E2,5.463675948E1 +9.180580000E2,4.995546642E1 +9.183000000E2,5.328928391E1 +9.185570000E2,4.808104957E1 +9.188650000E2,5.411517612E1 +9.191080000E2,5.672946344E1 +9.194270000E2,5.737096863E1 +9.196850000E2,5.974051238E1 +9.199830000E2,5.656564726E1 +9.202340000E2,5.709524531E1 +9.204810000E2,5.408385116E1 +9.208240000E2,5.414410830E1 +9.210650000E2,5.638214177E1 +9.213330000E2,5.753313030E1 +9.216130000E2,5.354803656E1 +9.219120000E2,6.191736419E1 +9.221480000E2,5.734366551E1 +9.224580000E2,5.684475304E1 +9.228030000E2,6.045431811E1 +9.230950000E2,5.973057312E1 +9.233960000E2,5.537690593E1 +9.236620000E2,5.411771801E1 +9.239600000E2,5.513839001E1 +9.242140000E2,5.699753068E1 +9.244670000E2,6.643461088E1 +9.247300000E2,6.062391899E1 +9.250330000E2,5.798096332E1 +9.253240000E2,6.347140522E1 +9.255740000E2,6.166496817E1 +9.259250000E2,6.190058171E1 +9.261820000E2,6.329204590E1 +9.264380000E2,6.389135880E1 +9.267030000E2,5.917517639E1 +9.269480000E2,5.809772267E1 +9.272170000E2,5.733235238E1 +9.274780000E2,5.226841119E1 +9.277860000E2,5.876554483E1 +9.280720000E2,6.281089568E1 +9.283510000E2,5.368859448E1 +9.286400000E2,5.449014251E1 +9.289370000E2,5.589991313E1 +9.292390000E2,5.452044152E1 +9.294860000E2,5.574135623E1 +9.297800000E2,5.656551806E1 +9.300200000E2,5.368800996E1 +9.302990000E2,5.374372369E1 +9.305490000E2,5.520696346E1 +9.308500000E2,5.642038107E1 +9.311480000E2,5.958603376E1 +9.314510000E2,5.775531382E1 +9.316980000E2,5.561486787E1 +9.319610000E2,5.826734748E1 +9.322700000E2,5.604871965E1 +9.325550000E2,5.170668645E1 +9.328670000E2,5.089285684E1 +9.331190000E2,4.724853188E1 +9.333790000E2,4.756075237E1 +9.336260000E2,5.199039629E1 +9.338890000E2,4.980140945E1 +9.341620000E2,5.530081877E1 +9.344120000E2,5.549144740E1 +9.347250000E2,5.515929093E1 +9.349780000E2,5.399104933E1 +9.352760000E2,5.325801117E1 +9.356240000E2,5.040008457E1 +9.359420000E2,5.360316460E1 +9.361890000E2,5.191591881E1 +9.364390000E2,5.324554606E1 +9.366970000E2,5.654671572E1 +9.370100000E2,5.711795620E1 +9.372590000E2,5.478625541E1 +9.375950000E2,5.667621371E1 +9.378550000E2,5.463565976E1 +9.381050000E2,5.398825590E1 +9.383580000E2,5.436030102E1 +9.386390000E2,5.091983440E1 +9.389120000E2,5.286705124E1 +9.391550000E2,5.236775571E1 +9.394300000E2,5.738794921E1 +9.397170000E2,5.727939554E1 +9.399750000E2,6.319402051E1 +9.402560000E2,5.468250624E1 +9.405530000E2,5.641852830E1 +9.408670000E2,6.200700436E1 +9.411390000E2,6.163446308E1 +9.413860000E2,7.148312536E1 +9.416340000E2,6.050927243E1 +9.419040000E2,5.667078757E1 +9.421350000E2,5.749142651E1 +9.424700000E2,5.240604485E1 +9.427760000E2,5.466454134E1 +9.430280000E2,6.082141946E1 +9.433300000E2,6.003969647E1 +9.436110000E2,6.121195378E1 +9.438460000E2,5.625129518E1 +9.441420000E2,5.911131348E1 +9.443880000E2,5.468317436E1 +9.446840000E2,6.009033853E1 +9.449440000E2,5.906624737E1 +9.452490000E2,5.464875325E1 +9.455970000E2,5.384566268E1 +9.458510000E2,5.044039840E1 +9.461140000E2,5.035886237E1 +9.463820000E2,5.734112986E1 +9.466620000E2,5.229112628E1 +9.469690000E2,6.028523542E1 +9.472250000E2,5.837101422E1 +9.475000000E2,5.619491985E1 +9.477970000E2,5.364209552E1 +9.480560000E2,5.511055516E1 +9.483560000E2,5.308396885E1 +9.486650000E2,5.587440008E1 +9.490640000E2,5.273632850E1 +9.493730000E2,6.231816715E1 +9.496570000E2,6.253734875E1 +9.499030000E2,5.554720788E1 +9.501460000E2,5.631566079E1 +9.503970000E2,5.626896653E1 +9.506490000E2,5.691941114E1 +9.508990000E2,5.116659255E1 +9.511440000E2,4.922875084E1 +9.514130000E2,5.936693495E1 +9.517070000E2,5.638156112E1 +9.520200000E2,5.180629212E1 +9.523780000E2,4.998674108E1 +9.526570000E2,4.841587788E1 +9.529100000E2,5.028896526E1 +9.531650000E2,4.965921907E1 +9.534690000E2,4.493319669E1 +9.537260000E2,4.598612712E1 +9.539740000E2,5.276251951E1 +9.542810000E2,4.126037796E1 +9.545830000E2,4.737114191E1 +9.548330000E2,4.411553821E1 +9.550850000E2,4.440050708E1 +9.553840000E2,5.260541790E1 +9.556980000E2,5.273901651E1 +9.559710000E2,5.383409632E1 +9.562220000E2,5.239354977E1 +9.564980000E2,4.759742823E1 +9.568040000E2,5.239869448E1 +9.570530000E2,5.238241691E1 +9.573300000E2,5.227349879E1 +9.575630000E2,5.272394727E1 +9.578410000E2,5.414710772E1 +9.580970000E2,5.325895305E1 +9.583410000E2,5.577122645E1 +9.586370000E2,5.015645058E1 +9.590040000E2,5.173028231E1 +9.593040000E2,5.447959265E1 +9.595640000E2,5.484713415E1 +9.598110000E2,5.470137539E1 +9.601060000E2,5.878769788E1 +9.603740000E2,5.851189839E1 +9.606810000E2,5.400762096E1 +9.609290000E2,5.749049444E1 +9.611870000E2,5.241750519E1 +9.614480000E2,4.979747952E1 +9.616960000E2,5.096881110E1 +9.620030000E2,5.149804171E1 +9.623180000E2,5.481599911E1 +9.625540000E2,5.138365056E1 +9.628240000E2,5.235851031E1 +9.630470000E2,4.871540913E1 +9.632880000E2,5.651540461E1 +9.635860000E2,5.650278128E1 +9.638210000E2,5.704973755E1 +9.641160000E2,5.757712252E1 +9.643960000E2,5.881159691E1 +9.646600000E2,5.355579494E1 +9.649750000E2,5.539751700E1 +9.652910000E2,4.797714339E1 +9.655520000E2,5.082548637E1 +9.658080000E2,5.579830605E1 +9.660780000E2,5.554406278E1 +9.663250000E2,5.354814316E1 +9.665660000E2,5.463107171E1 +9.668090000E2,5.368692433E1 +9.671300000E2,5.364867335E1 +9.674540000E2,5.468973775E1 +9.677060000E2,5.815904844E1 +9.680020000E2,5.598522308E1 +9.682480000E2,5.541083624E1 +9.685850000E2,5.512396132E1 +9.688400000E2,5.530796688E1 +9.691210000E2,5.433954611E1 +9.693810000E2,5.507440645E1 +9.696820000E2,5.086817906E1 +9.699140000E2,5.696191489E1 +9.701640000E2,5.845256581E1 +9.704420000E2,5.620226260E1 +9.706770000E2,5.629047170E1 +9.709750000E2,5.811655252E1 +9.712290000E2,5.703185419E1 +9.714900000E2,5.716734774E1 +9.718450000E2,5.493596869E1 +9.720910000E2,5.909437017E1 +9.723380000E2,5.710675060E1 +9.725910000E2,5.780279559E1 +9.728920000E2,5.860060144E1 +9.731360000E2,6.078900999E1 +9.734260000E2,5.852116194E1 +9.736640000E2,5.905899453E1 +9.739130000E2,5.636299630E1 +9.742090000E2,6.289355999E1 +9.744870000E2,6.167909115E1 +9.747290000E2,6.098057792E1 +9.750690000E2,5.906667343E1 +9.753320000E2,6.018572501E1 +9.756150000E2,5.718512970E1 +9.759100000E2,5.146063018E1 +9.761570000E2,5.733244632E1 +9.764050000E2,5.368365894E1 +9.766600000E2,5.486016267E1 +9.769150000E2,5.908582599E1 +9.771910000E2,5.733773036E1 +9.774400000E2,5.566361416E1 +9.777680000E2,5.819125256E1 +9.781220000E2,5.947694304E1 +9.783640000E2,6.140057637E1 +9.786330000E2,5.721849738E1 +9.788550000E2,5.617504209E1 +9.791010000E2,5.660293849E1 +9.793960000E2,5.174001770E1 +9.796880000E2,5.083474014E1 +9.799290000E2,5.184104339E1 +9.801850000E2,5.025385313E1 +9.804850000E2,5.286605500E1 +9.807270000E2,5.586849562E1 +9.809750000E2,5.666036754E1 +9.812950000E2,5.248500918E1 +9.815810000E2,5.416072977E1 +9.818360000E2,5.799655965E1 +9.821300000E2,5.801841935E1 +9.823770000E2,5.977514968E1 +9.826270000E2,5.676871456E1 +9.828850000E2,5.104814549E1 +9.831730000E2,5.834620153E1 +9.834010000E2,5.660640582E1 +9.836620000E2,5.686451748E1 +9.839750000E2,5.998440952E1 +9.842240000E2,5.556687478E1 +9.846000000E2,5.811069315E1 +9.848430000E2,5.843499893E1 +9.851250000E2,5.180956247E1 +9.853860000E2,5.206236639E1 +9.856480000E2,5.641840701E1 +9.859110000E2,5.518588565E1 +9.861920000E2,5.697237679E1 +9.864550000E2,5.411246614E1 +9.867510000E2,5.214533821E1 +9.869880000E2,5.642389575E1 +9.872440000E2,6.015294933E1 +9.875470000E2,5.809991100E1 +9.879150000E2,6.420044247E1 +9.881610000E2,6.042656173E1 +9.884280000E2,5.938959873E1 +9.886840000E2,6.059888233E1 +9.889870000E2,5.282749720E1 +9.892620000E2,5.638110380E1 +9.895440000E2,4.900409689E1 +9.897740000E2,4.971849802E1 +9.900320000E2,5.061428463E1 +9.903370000E2,5.829922071E1 +9.905860000E2,5.812083213E1 +9.908910000E2,5.500587720E1 +9.911860000E2,5.677481104E1 +9.914380000E2,5.502691141E1 +9.916830000E2,5.294500154E1 +9.919560000E2,5.700444986E1 +9.921770000E2,5.448756275E1 +9.924220000E2,5.785741234E1 +9.927280000E2,5.702180374E1 +9.929670000E2,6.013415875E1 +9.932080000E2,5.533496795E1 +9.934640000E2,5.695301526E1 +9.937440000E2,5.436173732E1 +9.940620000E2,5.092257074E1 +9.944480000E2,4.973000793E1 +9.946940000E2,4.871235512E1 +9.949410000E2,5.171412848E1 +9.951960000E2,5.643245777E1 +9.954520000E2,5.548819002E1 +9.957530000E2,5.694822585E1 +9.960600000E2,5.668072577E1 +9.963110000E2,5.547400320E1 +9.966010000E2,5.667137699E1 +9.968430000E2,5.866196066E1 +9.971120000E2,5.641527163E1 +9.974300000E2,5.505243365E1 +9.977140000E2,5.491253296E1 +9.979940000E2,5.642986287E1 +9.982400000E2,5.111113898E1 +9.985270000E2,5.228293633E1 +9.987770000E2,5.380023266E1 +9.990760000E2,5.259255492E1 +9.993610000E2,5.359948032E1 +9.996550000E2,5.817439497E1 +9.999080000E2,5.712087238E1 +1.000199000E3,6.016800470E1 +1.000435000E3,5.758076017E1 +1.000772000E3,5.328951429E1 +1.001047000E3,5.373102399E1 +1.001303000E3,5.905317642E1 +1.001622000E3,5.478240688E1 +1.001877000E3,5.648896451E1 +1.002173000E3,5.587033976E1 +1.002422000E3,5.995513955E1 +1.002724000E3,6.295760047E1 +1.003003000E3,5.978713154E1 +1.003261000E3,5.669754444E1 +1.003545000E3,5.577942906E1 +1.003827000E3,6.186873273E1 +1.004183000E3,6.253868639E1 +1.004493000E3,5.777226132E1 +1.004770000E3,6.482227668E1 +1.005072000E3,5.923751414E1 +1.005323000E3,5.644465637E1 +1.005601000E3,6.074750234E1 +1.005832000E3,5.683683327E1 +1.006147000E3,5.957418887E1 +1.006418000E3,6.134946851E1 +1.006713000E3,5.641852300E1 +1.006952000E3,5.637674327E1 +1.007310000E3,5.484290206E1 +1.007589000E3,6.426865013E1 +1.007886000E3,5.712036033E1 +1.008127000E3,5.768385080E1 +1.008427000E3,5.812466970E1 +1.008666000E3,6.112344783E1 +1.008973000E3,5.606588478E1 +1.009269000E3,5.809328667E1 +1.009507000E3,5.371315435E1 +1.009763000E3,5.527533595E1 +1.010003000E3,5.390597114E1 +1.010379000E3,5.652035402E1 +1.010658000E3,5.490058638E1 +1.010920000E3,5.927019017E1 +1.011197000E3,5.293113048E1 +1.011458000E3,5.179006266E1 +1.011718000E3,5.366462930E1 +1.011979000E3,5.569421827E1 +1.012229000E3,5.341899104E1 +1.012477000E3,4.863208748E1 +1.012772000E3,6.037154816E1 +1.013036000E3,5.430849576E1 +1.013284000E3,5.735938261E1 +1.013671000E3,5.526482118E1 +1.013957000E3,5.731780297E1 +1.014225000E3,5.205368153E1 +1.014486000E3,5.548863756E1 +1.014733000E3,5.265038263E1 +1.015033000E3,5.986876322E1 +1.015314000E3,5.130643680E1 +1.015590000E3,6.086878634E1 +1.015830000E3,5.798526739E1 +1.016137000E3,6.825745236E1 +1.016387000E3,5.828900876E1 +1.016655000E3,5.873097643E1 +1.017001000E3,6.454090665E1 +1.017329000E3,6.385512775E1 +1.017637000E3,6.691081911E1 +1.017938000E3,6.580217665E1 +1.018229000E3,6.485489311E1 +1.018470000E3,6.387101962E1 +1.018706000E3,6.616835921E1 +1.018997000E3,5.951737331E1 +1.019235000E3,5.386458503E1 +1.019536000E3,5.756977765E1 +1.019801000E3,5.811747841E1 +1.020064000E3,5.930001089E1 +1.020406000E3,5.469664450E1 +1.020673000E3,5.181220980E1 +1.020925000E3,5.483858346E1 +1.021232000E3,5.716842569E1 +1.021527000E3,5.738254897E1 +1.021762000E3,5.628034518E1 +1.022007000E3,5.850971228E1 +1.022258000E3,5.329919175E1 +1.022556000E3,5.482637446E1 +1.022813000E3,5.690503448E1 +1.023071000E3,5.317501594E1 +1.023336000E3,4.870888301E1 +1.023687000E3,6.132281620E1 +1.023965000E3,6.262505101E1 +1.024220000E3,6.180229149E1 +1.024496000E3,6.130993335E1 +1.024741000E3,6.231376381E1 +1.025040000E3,6.164360059E1 +1.025279000E3,5.910065798E1 +1.025533000E3,5.622173801E1 +1.025821000E3,5.290311975E1 +1.026116000E3,5.028293308E1 +1.026403000E3,5.581740437E1 +1.026664000E3,5.988277804E1 +1.027011000E3,5.730548262E1 +1.027305000E3,5.417769573E1 +1.027578000E3,5.250932185E1 +1.027819000E3,5.139919708E1 +1.028128000E3,5.061852216E1 +1.028380000E3,4.722292138E1 +1.028683000E3,5.983070917E1 +1.028956000E3,6.045269830E1 +1.029182000E3,5.777292957E1 +1.029431000E3,5.497807442E1 +1.029734000E3,5.533889528E1 +1.030063000E3,5.373558580E1 +1.030323000E3,5.600729212E1 +1.030620000E3,5.467159629E1 +1.030863000E3,5.246400101E1 +1.031110000E3,5.468037288E1 +1.031367000E3,5.850364516E1 +1.031646000E3,5.490958739E1 +1.031911000E3,5.866929845E1 +1.032210000E3,5.708288591E1 +1.032475000E3,5.498129629E1 +1.032736000E3,5.670272599E1 +1.032986000E3,5.317143219E1 +1.033315000E3,5.758413128E1 +1.033557000E3,6.361635596E1 +1.033846000E3,5.513973379E1 +1.034093000E3,5.215484095E1 +1.034399000E3,5.465926438E1 +1.034684000E3,5.588902955E1 +1.034978000E3,5.387672604E1 +1.035280000E3,5.595327755E1 +1.035543000E3,5.621513504E1 +1.035825000E3,5.991854954E1 +1.036079000E3,5.864640009E1 +1.036322000E3,6.072021936E1 +1.036666000E3,5.462749592E1 +1.036971000E3,5.329083651E1 +1.037264000E3,5.401214501E1 +1.037542000E3,5.242806591E1 +1.037843000E3,5.573267887E1 +1.038091000E3,5.224254554E1 +1.038380000E3,5.453929206E1 +1.038635000E3,5.371826859E1 +1.038891000E3,4.369246898E1 +1.039145000E3,4.547521933E1 +1.039418000E3,4.204639660E1 +1.039750000E3,4.426760298E1 +1.039990000E3,4.955659514E1 +1.040294000E3,4.960859899E1 +1.040560000E3,4.841380220E1 +1.040808000E3,4.914533708E1 +1.041104000E3,4.650609937E1 +1.041370000E3,4.849101938E1 +1.041622000E3,5.065930763E1 +1.041920000E3,4.744161935E1 +1.042161000E3,4.448519483E1 +1.042478000E3,4.726532690E1 +1.042725000E3,4.667923132E1 +1.043042000E3,4.704822757E1 +1.043307000E3,3.950691106E1 +1.043560000E3,5.249697508E1 +1.043835000E3,4.753687679E1 +1.044091000E3,4.843049138E1 +1.044350000E3,5.394643708E1 +1.044644000E3,4.769079035E1 +1.044887000E3,5.111291504E1 +1.045194000E3,5.247298633E1 +1.045445000E3,4.904344971E1 +1.045693000E3,4.405437847E1 +1.045988000E3,4.750888237E1 +1.046301000E3,4.305046000E1 +1.046518000E3,4.630901796E1 +1.046813000E3,4.756289225E1 +1.047053000E3,4.661089273E1 +1.047331000E3,6.143859736E1 +1.047566000E3,5.702483033E1 +1.047860000E3,5.015015196E1 +1.048098000E3,5.180675157E1 +1.048397000E3,4.645218330E1 +1.048640000E3,4.317726503E1 +1.048918000E3,4.962602549E1 +1.049159000E3,4.922447391E1 +1.049523000E3,4.310015818E1 +1.049767000E3,5.584844461E1 +1.050011000E3,5.550466055E1 +1.050294000E3,5.076679182E1 +1.050523000E3,4.777565498E1 +1.050776000E3,5.078379664E1 +1.051031000E3,4.412618688E1 +1.051298000E3,3.933148532E1 +1.051551000E3,4.240994962E1 +1.051799000E3,3.715036539E1 +1.052054000E3,4.541823437E1 +1.052312000E3,3.252240989E1 +1.052661000E3,4.298387800E1 +1.052922000E3,4.065675211E1 +1.053171000E3,3.851226965E1 +1.053417000E3,3.833414863E1 +1.053702000E3,3.734543870E1 +1.053967000E3,4.406198141E1 +1.054269000E3,3.397952572E1 +1.054518000E3,3.018425986E1 +1.054795000E3,2.659023927E1 +1.055055000E3,3.230579484E1 +1.055319000E3,4.027650377E1 +1.055588000E3,3.256611719E1 +1.055936000E3,3.203904394E1 +1.056189000E3,3.024692018E1 +1.056469000E3,4.044611203E1 +1.056698000E3,3.245705712E1 +1.056956000E3,5.087039919E1 +1.057201000E3,5.278557071E1 +1.057507000E3,6.996122129E1 +1.057766000E3,6.951439283E1 +1.058027000E3,6.731609209E1 +1.058291000E3,5.787293958E1 +1.058571000E3,5.774874245E1 +1.058801000E3,5.291748766E1 +1.059132000E3,4.352220528E1 +1.059391000E3,5.556254729E1 +1.059665000E3,5.339220405E1 +1.059951000E3,5.593145301E1 +1.060235000E3,5.299996372E1 +1.060492000E3,4.882317894E1 +1.060733000E3,3.790707311E1 +1.060975000E3,3.470192076E1 +1.061278000E3,4.481563830E1 +1.061519000E3,4.823008935E1 +1.061816000E3,4.719850269E1 +1.062076000E3,4.706381680E1 +1.062331000E3,4.530378435E1 +1.062576000E3,3.456809562E1 +1.062882000E3,3.742453964E1 +1.063154000E3,3.905594906E1 +1.063397000E3,3.672857244E1 +1.063694000E3,2.941779164E1 +1.063926000E3,2.995931983E1 +1.064168000E3,3.455311118E1 +1.064461000E3,3.254662869E1 +1.064708000E3,3.652583843E1 +1.065001000E3,5.229424666E1 +1.065352000E3,5.178814165E1 +1.065606000E3,4.798098259E1 +1.065854000E3,3.636652329E1 +1.066121000E3,4.558252535E1 +1.066366000E3,3.902840121E1 +1.066629000E3,3.106435508E1 +1.066887000E3,2.541330464E1 +1.067179000E3,3.474902335E1 +1.067449000E3,4.492275189E1 +1.067698000E3,3.860211372E1 +1.067955000E3,4.332670525E1 +1.068251000E3,5.147667691E1 +1.068546000E3,5.152069997E1 +1.068797000E3,4.540650098E1 +1.069105000E3,4.486446450E1 +1.069378000E3,4.196481867E1 +1.069632000E3,4.863200791E1 +1.069908000E3,3.878967071E1 +1.070151000E3,3.630888030E1 +1.070413000E3,2.964429880E1 +1.070682000E3,3.354707636E1 +1.070956000E3,4.008490969E1 +1.071248000E3,3.576577653E1 +1.071553000E3,4.349754488E1 +1.071886000E3,3.824859907E1 +1.072130000E3,3.455877689E1 +1.072406000E3,3.622999465E1 +1.072717000E3,3.637608237E1 +1.072984000E3,3.645219519E1 +1.073255000E3,4.353729148E1 +1.073603000E3,4.287473251E1 +1.073856000E3,4.842203791E1 +1.074097000E3,4.484407311E1 +1.074356000E3,4.397007110E1 +1.074628000E3,4.695884235E1 +1.074931000E3,4.627189963E1 +1.075264000E3,4.689571524E1 +1.075614000E3,5.203841291E1 +1.075923000E3,4.610184941E1 +1.076163000E3,4.404432471E1 +1.076475000E3,4.923215011E1 +1.076765000E3,4.466142180E1 +1.077062000E3,4.987282715E1 +1.077375000E3,4.461839454E1 +1.077687000E3,5.085403766E1 +1.077991000E3,4.674512295E1 +1.078232000E3,5.167180279E1 +1.078544000E3,4.780582457E1 +1.078939000E3,4.593914406E1 +1.079187000E3,4.061652220E1 +1.079434000E3,4.347669045E1 +1.079712000E3,4.326983820E1 +1.079966000E3,3.511950991E1 +1.080260000E3,4.755279745E1 +1.080506000E3,4.756343862E1 +1.080756000E3,4.779732167E1 +1.081049000E3,4.991962747E1 +1.081293000E3,5.213887128E1 +1.081586000E3,5.357624469E1 +1.081916000E3,5.141456645E1 +1.082165000E3,5.036532462E1 +1.082460000E3,4.962769973E1 +1.082696000E3,4.506404490E1 +1.082988000E3,4.537987312E1 +1.083220000E3,4.738457007E1 +1.083529000E3,4.698711193E1 +1.083769000E3,4.571430081E1 +1.084079000E3,4.980908007E1 +1.084324000E3,5.082282040E1 +1.084590000E3,5.406004268E1 +1.084876000E3,5.436375886E1 +1.085258000E3,5.361506257E1 +1.085509000E3,5.202937925E1 +1.085815000E3,5.324976969E1 +1.086057000E3,5.371445731E1 +1.086301000E3,5.282162917E1 +1.086550000E3,5.221281857E1 +1.086802000E3,5.263727375E1 +1.087126000E3,5.703022139E1 +1.087384000E3,5.519432869E1 +1.087646000E3,5.426647490E1 +1.087939000E3,5.407342864E1 +1.088175000E3,5.235924404E1 +1.088520000E3,4.681002832E1 +1.088812000E3,4.891237586E1 +1.089076000E3,4.699020733E1 +1.089350000E3,4.902871382E1 +1.089591000E3,5.078145117E1 +1.089837000E3,5.041791921E1 +1.090133000E3,4.603650794E1 +1.090430000E3,4.871755485E1 +1.090660000E3,5.111421073E1 +1.090911000E3,4.581894631E1 +1.091248000E3,4.988189917E1 +1.091630000E3,5.341365920E1 +1.091902000E3,4.962858025E1 +1.092183000E3,4.315344358E1 +1.092440000E3,4.664431132E1 +1.092683000E3,4.616459192E1 +1.092923000E3,4.765071496E1 +1.093171000E3,4.163360687E1 +1.093473000E3,4.537777608E1 +1.093714000E3,4.783603025E1 +1.094007000E3,4.845414260E1 +1.094261000E3,4.799870549E1 +1.094499000E3,4.651309815E1 +1.094792000E3,5.003648984E1 +1.095123000E3,5.202534254E1 +1.095372000E3,5.709400077E1 +1.095625000E3,5.694079106E1 +1.095896000E3,5.715452089E1 +1.096196000E3,5.523378380E1 +1.096438000E3,5.375558627E1 +1.096737000E3,5.665208041E1 +1.096991000E3,5.314654737E1 +1.097292000E3,5.142447849E1 +1.097557000E3,5.330628285E1 +1.097827000E3,5.512040694E1 +1.098167000E3,5.399583122E1 +1.098472000E3,5.540663813E1 +1.098720000E3,5.200546986E1 +1.098960000E3,4.676140326E1 +1.099243000E3,4.798657093E1 +1.099544000E3,4.841724285E1 +1.099804000E3,5.642371618E1 +1.100109000E3,5.409000726E1 +1.100381000E3,5.348646719E1 +1.100630000E3,5.346537578E1 +1.100927000E3,5.422782845E1 +1.101164000E3,5.395323822E1 +1.101495000E3,5.383967560E1 +1.101763000E3,5.667828538E1 +1.102044000E3,4.764690784E1 +1.102307000E3,5.353530254E1 +1.102613000E3,5.568430762E1 +1.102906000E3,5.431580275E1 +1.103147000E3,5.193331555E1 +1.103441000E3,5.040945762E1 +1.103677000E3,5.333005838E1 +1.103968000E3,4.947534745E1 +1.104272000E3,5.306270968E1 +1.104564000E3,5.537230515E1 +1.104799000E3,4.876041085E1 +1.105069000E3,5.109409535E1 +1.105330000E3,5.087734214E1 +1.105587000E3,5.225642483E1 +1.105838000E3,5.176680091E1 +1.106135000E3,5.535939212E1 +1.106380000E3,5.666892185E1 +1.106622000E3,5.658846562E1 +1.106895000E3,5.577897889E1 +1.107150000E3,5.157178717E1 +1.107431000E3,5.284488409E1 +1.107756000E3,5.415639955E1 +1.108002000E3,5.465643057E1 +1.108313000E3,4.654328988E1 +1.108563000E3,5.038890380E1 +1.108811000E3,4.602751738E1 +1.109073000E3,4.801243396E1 +1.109375000E3,4.782472616E1 +1.109667000E3,4.666447221E1 +1.109943000E3,5.156469126E1 +1.110192000E3,4.949682888E1 +1.110448000E3,4.919673339E1 +1.110752000E3,4.862521519E1 +1.111045000E3,5.122379655E1 +1.111295000E3,4.813892217E1 +1.111515000E3,4.901611396E1 +1.111761000E3,4.905664967E1 +1.112005000E3,4.647618514E1 +1.112265000E3,4.730688076E1 +1.112537000E3,5.039121351E1 +1.112793000E3,4.985611957E1 +1.113101000E3,5.474563863E1 +1.113387000E3,5.028870882E1 +1.113678000E3,5.073784750E1 +1.113952000E3,4.995138555E1 +1.114291000E3,4.790039203E1 +1.114554000E3,4.764335594E1 +1.114849000E3,5.057104591E1 +1.115096000E3,5.107398730E1 +1.115401000E3,4.800391913E1 +1.115672000E3,4.553282874E1 +1.115895000E3,4.569523337E1 +1.116194000E3,4.480844215E1 +1.116425000E3,4.772339962E1 +1.116664000E3,5.255452638E1 +1.116906000E3,4.927433934E1 +1.117202000E3,4.871369865E1 +1.117530000E3,4.928110420E1 +1.117840000E3,5.705383563E1 +1.118146000E3,4.880674861E1 +1.118418000E3,5.038180726E1 +1.118687000E3,5.145980404E1 +1.118950000E3,5.338008269E1 +1.119227000E3,5.227728425E1 +1.119468000E3,5.450689216E1 +1.119736000E3,5.844246451E1 +1.120049000E3,5.459398611E1 +1.120351000E3,5.526423567E1 +1.120605000E3,5.228963309E1 +1.120918000E3,5.598288902E1 +1.121182000E3,5.280889802E1 +1.121489000E3,4.974717420E1 +1.121729000E3,5.137523152E1 +1.121978000E3,5.052356297E1 +1.122235000E3,5.240368249E1 +1.122503000E3,4.826380791E1 +1.122775000E3,5.095403791E1 +1.123036000E3,5.799909934E1 +1.123291000E3,4.889512711E1 +1.123587000E3,5.622808486E1 +1.123874000E3,5.230369090E1 +1.124235000E3,5.081102316E1 +1.124544000E3,5.628773803E1 +1.124826000E3,5.810547372E1 +1.125153000E3,5.508029719E1 +1.125432000E3,5.576573503E1 +1.125722000E3,5.346022180E1 +1.125978000E3,5.279748306E1 +1.126234000E3,5.604802053E1 +1.126502000E3,5.937326657E1 +1.126804000E3,5.703447215E1 +1.127047000E3,5.520354594E1 +1.127314000E3,5.551787326E1 +1.127554000E3,5.740837773E1 +1.127843000E3,5.663015330E1 +1.128135000E3,5.649615150E1 +1.128380000E3,5.731556257E1 +1.128677000E3,6.079986861E1 +1.128914000E3,5.820128856E1 +1.129207000E3,6.091746513E1 +1.129442000E3,6.126941240E1 +1.129745000E3,4.541170906E1 +1.129980000E3,4.341485096E1 +1.130277000E3,4.833777967E1 +1.130573000E3,4.472710223E1 +1.130815000E3,5.059675199E1 +1.131062000E3,3.863826940E1 +1.131353000E3,4.925455740E1 +1.131589000E3,4.859989956E1 +1.131881000E3,5.113067908E1 +1.132117000E3,5.054542106E1 +1.132418000E3,4.827479925E1 +1.132654000E3,4.610884488E1 +1.132948000E3,4.879734536E1 +1.133241000E3,5.074680390E1 +1.133563000E3,5.119298220E1 +1.133864000E3,4.861265792E1 +1.134166000E3,5.001512903E1 +1.134452000E3,5.059053464E1 +1.134716000E3,4.999839479E1 +1.134967000E3,4.960069086E1 +1.135222000E3,5.320256888E1 +1.135494000E3,5.604818163E1 +1.135742000E3,5.625768045E1 +1.135999000E3,5.261645024E1 +1.136244000E3,5.105081932E1 +1.136501000E3,5.616444939E1 +1.136847000E3,5.624064264E1 +1.137105000E3,5.654097446E1 +1.137391000E3,5.807884104E1 +1.137717000E3,5.436169891E1 +1.137970000E3,5.763959225E1 +1.138239000E3,5.465216875E1 +1.138486000E3,5.094509116E1 +1.138731000E3,5.425415233E1 +1.138977000E3,5.143709697E1 +1.139259000E3,5.032545705E1 +1.139527000E3,5.906031130E1 +1.139800000E3,5.308709054E1 +1.140168000E3,5.407062541E1 +1.140423000E3,5.585261351E1 +1.140694000E3,5.463535881E1 +1.140949000E3,5.407603664E1 +1.141230000E3,5.495767686E1 +1.141512000E3,5.639433741E1 +1.141818000E3,5.555715330E1 +1.142072000E3,5.729232944E1 +1.142323000E3,5.553013253E1 +1.142578000E3,5.648251207E1 +1.142844000E3,5.786931075E1 +1.143143000E3,6.007493220E1 +1.143523000E3,5.752076543E1 +1.143836000E3,5.573324560E1 +1.144090000E3,5.641950784E1 +1.144396000E3,5.532270625E1 +1.144644000E3,5.561239732E1 +1.144940000E3,5.206707456E1 +1.145212000E3,5.092140902E1 +1.145511000E3,5.452891649E1 +1.145770000E3,5.331137977E1 +1.146042000E3,5.366568195E1 +1.146338000E3,5.227174013E1 +1.146650000E3,5.423955559E1 +1.146934000E3,5.781916580E1 +1.147218000E3,5.532962824E1 +1.147467000E3,5.502661676E1 +1.147687000E3,5.823979674E1 +1.147961000E3,5.538066560E1 +1.148276000E3,5.423260060E1 +1.148528000E3,5.197461977E1 +1.148799000E3,5.154724487E1 +1.149057000E3,5.473685923E1 +1.149367000E3,5.647867848E1 +1.149660000E3,5.489455072E1 +1.150037000E3,6.072892064E1 +1.150335000E3,5.543869835E1 +1.150594000E3,5.667713742E1 +1.150870000E3,5.818755157E1 +1.151164000E3,5.210849760E1 +1.151411000E3,5.095671455E1 +1.151703000E3,5.254983272E1 +1.152002000E3,5.585064224E1 +1.152253000E3,5.739007574E1 +1.152582000E3,5.895179917E1 +1.152860000E3,5.461317681E1 +1.153122000E3,5.345759293E1 +1.153381000E3,5.267971619E1 +1.153684000E3,6.006602205E1 +1.153986000E3,5.573552061E1 +1.154286000E3,5.518963618E1 +1.154531000E3,5.342922095E1 +1.154792000E3,5.257536969E1 +1.155139000E3,4.887945516E1 +1.155435000E3,4.702411688E1 +1.155680000E3,4.867646616E1 +1.155978000E3,4.811861077E1 +1.156361000E3,4.915586406E1 +1.156670000E3,5.033026069E1 +1.156976000E3,5.393908378E1 +1.157274000E3,5.295128205E1 +1.157524000E3,5.249671789E1 +1.157816000E3,5.314344994E1 +1.158052000E3,5.237342933E1 +1.158353000E3,5.300284286E1 +1.158590000E3,5.170068449E1 +1.158867000E3,5.174146304E1 +1.159147000E3,4.929588783E1 +1.159411000E3,5.699090425E1 +1.159752000E3,5.266690351E1 +1.160068000E3,5.746767577E1 +1.160360000E3,5.375850846E1 +1.160640000E3,5.373794020E1 +1.160985000E3,5.304914530E1 +1.161280000E3,5.198754593E1 +1.161525000E3,5.019848207E1 +1.161766000E3,5.164623609E1 +1.162020000E3,5.363319210E1 +1.162324000E3,5.439011044E1 +1.162564000E3,5.304648945E1 +1.162816000E3,5.174573718E1 +1.163177000E3,4.505755779E1 +1.163462000E3,4.894753105E1 +1.163738000E3,5.064933943E1 +1.164013000E3,5.245879056E1 +1.164255000E3,5.017914517E1 +1.164568000E3,5.189205429E1 +1.164823000E3,5.038961444E1 +1.165052000E3,5.072118593E1 +1.165297000E3,4.831662547E1 +1.165552000E3,5.050204887E1 +1.165808000E3,5.308107982E1 +1.166062000E3,4.878509871E1 +1.166392000E3,5.002605106E1 +1.166654000E3,5.320265697E1 +1.166911000E3,4.403273534E1 +1.167180000E3,5.161386051E1 +1.167455000E3,4.986209571E1 +1.167692000E3,4.993305836E1 +1.167973000E3,5.173621365E1 +1.168216000E3,5.385559129E1 +1.168491000E3,5.543019156E1 +1.168757000E3,5.019966657E1 +1.169035000E3,5.569516326E1 +1.169296000E3,5.216419082E1 +1.169676000E3,5.398731996E1 +1.169933000E3,5.465625282E1 +1.170197000E3,5.451774184E1 +1.170449000E3,5.328129322E1 +1.170705000E3,5.452639907E1 +1.170963000E3,5.713735254E1 +1.171272000E3,5.551413923E1 +1.171528000E3,5.604966001E1 +1.171779000E3,5.340478404E1 +1.172038000E3,5.107817821E1 +1.172291000E3,5.218990306E1 +1.172602000E3,4.830451720E1 +1.172964000E3,5.276802164E1 +1.173245000E3,5.191204687E1 +1.173527000E3,5.337367972E1 +1.173838000E3,5.462664550E1 +1.174090000E3,5.304724513E1 +1.174379000E3,5.193251440E1 +1.174628000E3,5.283915893E1 +1.174936000E3,5.036641160E1 +1.175236000E3,4.890810708E1 +1.175487000E3,4.805298565E1 +1.175750000E3,5.067335741E1 +1.176019000E3,4.961207397E1 +1.176335000E3,4.820862314E1 +1.176634000E3,5.328684116E1 +1.176883000E3,5.122009001E1 +1.177165000E3,5.878687770E1 +1.177412000E3,5.487235950E1 +1.177709000E3,5.224569426E1 +1.178006000E3,5.403405997E1 +1.178246000E3,5.388661901E1 +1.178490000E3,5.237426881E1 +1.178734000E3,5.372043820E1 +1.179050000E3,5.471170909E1 +1.179387000E3,5.129350436E1 +1.179686000E3,4.660070824E1 +1.179916000E3,4.541361068E1 +1.180159000E3,4.365576113E1 +1.180466000E3,4.771103553E1 +1.180756000E3,4.863237791E1 +1.181008000E3,5.534959697E1 +1.181314000E3,5.376444060E1 +1.181609000E3,5.130885425E1 +1.181851000E3,5.256948786E1 +1.182151000E3,5.321964637E1 +1.182393000E3,5.074776981E1 +1.182622000E3,4.979941250E1 +1.182873000E3,5.445637667E1 +1.183116000E3,4.449721128E1 +1.183420000E3,5.086906199E1 +1.183676000E3,5.067998506E1 +1.183927000E3,5.352019181E1 +1.184219000E3,4.851971310E1 +1.184517000E3,5.123853013E1 +1.184764000E3,5.278221141E1 +1.185010000E3,5.126409245E1 +1.185297000E3,5.249182764E1 +1.185665000E3,5.346599478E1 +1.185972000E3,5.052250297E1 +1.186225000E3,5.389354916E1 +1.186534000E3,5.372737626E1 +1.186796000E3,5.415645782E1 +1.187048000E3,5.441424865E1 +1.187317000E3,5.470553815E1 +1.187622000E3,5.559990781E1 +1.187913000E3,5.619293356E1 +1.188186000E3,4.869472445E1 +1.188442000E3,5.069948923E1 +1.188718000E3,5.296813397E1 +1.189051000E3,5.015003063E1 +1.189308000E3,5.110938827E1 +1.189570000E3,5.250182053E1 +1.189815000E3,5.240850659E1 +1.190062000E3,5.446862868E1 +1.190368000E3,5.270463767E1 +1.190629000E3,5.117539458E1 +1.190931000E3,5.543767536E1 +1.191207000E3,5.348622922E1 +1.191505000E3,5.112152946E1 +1.191761000E3,4.905277341E1 +1.192068000E3,5.456405848E1 +1.192487000E3,5.016322677E1 +1.192732000E3,4.971711263E1 +1.192976000E3,5.396031961E1 +1.193258000E3,5.018645567E1 +1.193531000E3,4.895586707E1 +1.193790000E3,5.442023654E1 +1.194055000E3,5.160697029E1 +1.194326000E3,4.822365107E1 +1.194605000E3,5.396633777E1 +1.194903000E3,5.031021734E1 +1.195141000E3,5.278015326E1 +1.195431000E3,4.949576105E1 +1.195801000E3,5.244682833E1 +1.196076000E3,5.508575727E1 +1.196371000E3,5.161802747E1 +1.196603000E3,5.716896987E1 +1.196858000E3,5.210002974E1 +1.197207000E3,5.483594793E1 +1.197503000E3,5.204828926E1 +1.197774000E3,5.339169315E1 +1.198054000E3,4.934781945E1 +1.198312000E3,5.918797425E1 +1.198559000E3,5.025254784E1 +1.198808000E3,5.317746302E1 +1.199152000E3,5.656715516E1 +1.199464000E3,5.448426177E1 +1.199717000E3,5.419526565E1 +1.199961000E3,5.304156540E1 +1.200219000E3,4.961182292E1 +1.200480000E3,5.259766625E1 +1.200730000E3,5.295115767E1 +1.201029000E3,5.365389524E1 +1.201288000E3,5.465027972E1 +1.201538000E3,5.131261505E1 +1.201807000E3,5.767453751E1 +1.202112000E3,5.316006082E1 +1.202485000E3,5.263333972E1 +1.202739000E3,4.966297173E1 +1.203041000E3,5.282706501E1 +1.203300000E3,4.950274237E1 +1.203539000E3,4.377779375E1 +1.203832000E3,5.274682795E1 +1.204077000E3,5.348405653E1 +1.204320000E3,5.647600154E1 +1.204615000E3,4.835002395E1 +1.204854000E3,4.440243109E1 +1.205149000E3,4.673035253E1 +1.205410000E3,4.901106802E1 +1.205666000E3,5.311033159E1 +1.205952000E3,5.020567211E1 +1.206248000E3,5.046889058E1 +1.206545000E3,6.150607502E1 +1.206779000E3,5.260331634E1 +1.207093000E3,5.183291791E1 +1.207367000E3,4.957331060E1 +1.207610000E3,5.139200370E1 +1.207857000E3,5.005726187E1 +1.208158000E3,4.979521937E1 +1.208398000E3,5.178137337E1 +1.208738000E3,4.632694184E1 +1.208994000E3,4.836915777E1 +1.209279000E3,4.869228435E1 +1.209528000E3,5.096507040E1 +1.209784000E3,4.718590489E1 +1.210053000E3,4.835967114E1 +1.210281000E3,4.725223201E1 +1.210542000E3,5.172958855E1 +1.210823000E3,5.546336112E1 +1.211051000E3,5.448218663E1 +1.211300000E3,5.371995163E1 +1.211551000E3,4.887559574E1 +1.211926000E3,4.975732945E1 +1.212205000E3,5.041543230E1 +1.212482000E3,4.863959509E1 +1.212730000E3,5.047232348E1 +1.212990000E3,4.824384094E1 +1.213232000E3,5.039377586E1 +1.213493000E3,4.517891187E1 +1.213814000E3,4.686032989E1 +1.214062000E3,4.852263494E1 +1.214337000E3,4.897277606E1 +1.214586000E3,4.662047985E1 +1.214832000E3,5.483925472E1 +1.215143000E3,5.677489998E1 +1.215372000E3,5.470688254E1 +1.215664000E3,5.408747991E1 +1.215962000E3,5.167832591E1 +1.216227000E3,5.463116224E1 +1.216504000E3,5.335564969E1 +1.216747000E3,4.832376612E1 +1.216996000E3,4.918538596E1 +1.217306000E3,5.329611015E1 +1.217618000E3,5.364881155E1 +1.217885000E3,5.087209115E1 +1.218149000E3,4.967310650E1 +1.218497000E3,4.842689624E1 +1.218801000E3,5.442588779E1 +1.219043000E3,5.338467746E1 +1.219349000E3,5.187371665E1 +1.219600000E3,4.992515182E1 +1.219883000E3,5.205809257E1 +1.220161000E3,5.374364962E1 +1.220471000E3,5.145920034E1 +1.220752000E3,5.112774200E1 +1.221009000E3,4.969936214E1 +1.221258000E3,4.906585252E1 +1.221519000E3,4.971022706E1 +1.221873000E3,5.039216656E1 +1.222125000E3,4.735018859E1 +1.222388000E3,5.025223930E1 +1.222647000E3,5.349102952E1 +1.222903000E3,5.894430216E1 +1.223210000E3,5.133834742E1 +1.223464000E3,5.378681025E1 +1.223708000E3,5.646161983E1 +1.223949000E3,5.127610878E1 +1.224189000E3,5.295211205E1 +1.224441000E3,5.074229414E1 +1.224698000E3,5.428527885E1 +1.225064000E3,6.064230054E1 +1.225333000E3,5.545461106E1 +1.225591000E3,5.085263163E1 +1.225847000E3,4.867332677E1 +1.226137000E3,4.828036819E1 +1.226394000E3,5.187031217E1 +1.226668000E3,4.691949774E1 +1.226931000E3,4.605300024E1 +1.227219000E3,4.319091646E1 +1.227493000E3,4.827268256E1 +1.227791000E3,4.873371181E1 +1.228031000E3,4.895629331E1 +1.228388000E3,4.831306026E1 +1.228651000E3,5.150144778E1 +1.228942000E3,5.210555115E1 +1.229190000E3,4.868630793E1 +1.229442000E3,5.072280558E1 +1.229686000E3,5.520857657E1 +1.229933000E3,5.597505745E1 +1.230228000E3,5.309096620E1 +1.230467000E3,5.340491117E1 +1.230765000E3,4.966814228E1 +1.231012000E3,4.811713105E1 +1.231316000E3,5.037869561E1 +1.231666000E3,4.768651081E1 +1.231948000E3,4.577834304E1 +1.232207000E3,4.455407567E1 +1.232510000E3,5.091422235E1 +1.232802000E3,4.990562511E1 +1.233047000E3,5.178152081E1 +1.233344000E3,5.312014577E1 +1.233592000E3,5.002236071E1 +1.233892000E3,5.158473192E1 +1.234173000E3,4.692863129E1 +1.234463000E3,4.643331531E1 +1.234792000E3,4.659156592E1 +1.235060000E3,4.662718910E1 +1.235313000E3,5.204491267E1 +1.235577000E3,5.165973487E1 +1.235837000E3,4.753691687E1 +1.236124000E3,5.179615379E1 +1.236401000E3,4.807409380E1 +1.236654000E3,5.474790946E1 +1.236923000E3,4.946475170E1 +1.237180000E3,4.949471083E1 +1.237426000E3,4.669168363E1 +1.237743000E3,5.529942944E1 +1.238061000E3,5.997488643E1 +1.238363000E3,5.302222406E1 +1.238611000E3,5.022506453E1 +1.238856000E3,4.864145193E1 +1.239102000E3,5.299123845E1 +1.239357000E3,4.682866815E1 +1.239657000E3,4.770894983E1 +1.239902000E3,4.813746372E1 +1.240150000E3,4.571771059E1 +1.240465000E3,5.354012247E1 +1.240765000E3,5.830707734E1 +1.241013000E3,5.483189048E1 +1.241344000E3,5.157405593E1 +1.241606000E3,5.072581437E1 +1.241868000E3,5.137979859E1 +1.242133000E3,4.849261303E1 +1.242396000E3,5.556107710E1 +1.242656000E3,4.958779284E1 +1.242959000E3,5.301548021E1 +1.243232000E3,5.475621292E1 +1.243501000E3,5.660789219E1 +1.243755000E3,5.350018163E1 +1.244010000E3,5.415674835E1 +1.244349000E3,5.699979568E1 +1.244717000E3,5.660044844E1 +1.245015000E3,5.808533709E1 +1.245259000E3,5.881859790E1 +1.245558000E3,5.728882886E1 +1.245808000E3,6.044308225E1 +1.246079000E3,5.893900513E1 +1.246326000E3,5.279872381E1 +1.246637000E3,5.769196864E1 +1.246935000E3,5.963088900E1 +1.247181000E3,5.367341836E1 +1.247508000E3,4.963645506E1 +1.247848000E3,5.265770489E1 +1.248115000E3,5.355743381E1 +1.248359000E3,4.891015342E1 +1.248659000E3,4.819353582E1 +1.248902000E3,4.966403220E1 +1.249199000E3,4.977495696E1 +1.249449000E3,5.715212626E1 +1.249708000E3,5.458337902E1 +1.249983000E3,4.910795823E1 +1.250282000E3,5.184902745E1 +1.250527000E3,5.416053460E1 +1.250777000E3,5.320773170E1 +1.251084000E3,5.422274265E1 +1.251342000E3,5.429456299E1 +1.251602000E3,5.910733722E1 +1.251866000E3,5.226490816E1 +1.252178000E3,5.191466859E1 +1.252452000E3,5.143339371E1 +1.252681000E3,5.066846779E1 +1.252975000E3,4.928639562E1 +1.253256000E3,4.916995298E1 +1.253528000E3,5.115941927E1 +1.253816000E3,4.850268402E1 +1.254063000E3,5.682920937E1 +1.254418000E3,5.583927157E1 +1.254700000E3,5.243405901E1 +1.254947000E3,5.411796563E1 +1.255215000E3,5.538314624E1 +1.255487000E3,5.447026824E1 +1.255748000E3,5.115232974E1 +1.256046000E3,5.273125350E1 +1.256281000E3,5.501639825E1 +1.256559000E3,5.470702619E1 +1.256867000E3,5.330168249E1 +1.257116000E3,5.680033697E1 +1.257361000E3,5.088137081E1 +1.257690000E3,4.771044205E1 +1.257935000E3,5.556188303E1 +1.258189000E3,5.821474305E1 +1.258460000E3,5.913083175E1 +1.258757000E3,5.624840253E1 +1.259001000E3,5.575040009E1 +1.259294000E3,5.295140054E1 +1.259581000E3,5.547885633E1 +1.259831000E3,5.659634167E1 +1.260084000E3,5.552607398E1 +1.260378000E3,5.399987136E1 +1.260676000E3,5.741946227E1 +1.260997000E3,5.622829253E1 +1.261272000E3,5.638519080E1 +1.261569000E3,5.222122782E1 +1.261810000E3,5.168558616E1 +1.262055000E3,5.937417075E1 +1.262351000E3,5.419990938E1 +1.262597000E3,5.469291977E1 +1.262893000E3,5.501007253E1 +1.263142000E3,5.356116387E1 +1.263421000E3,5.643294047E1 +1.263644000E3,5.627927149E1 +1.263964000E3,5.547827797E1 +1.264255000E3,5.434029164E1 +1.264552000E3,5.355134450E1 +1.264791000E3,5.268456483E1 +1.265090000E3,5.304298782E1 +1.265342000E3,5.292557941E1 +1.265637000E3,5.267823535E1 +1.265885000E3,5.076475521E1 +1.266186000E3,5.470463807E1 +1.266480000E3,5.369531663E1 +1.266727000E3,5.321314382E1 +1.267074000E3,5.430022488E1 +1.267386000E3,5.498366079E1 +1.267650000E3,5.373765381E1 +1.267926000E3,5.631680810E1 +1.268156000E3,5.314598601E1 +1.268459000E3,5.446778700E1 +1.268718000E3,5.461487175E1 +1.269029000E3,4.723979401E1 +1.269322000E3,5.050485841E1 +1.269602000E3,5.263446338E1 +1.269914000E3,5.195043172E1 +1.270180000E3,5.361139844E1 +1.270542000E3,5.127785292E1 +1.270796000E3,5.111084292E1 +1.271061000E3,5.030178225E1 +1.271329000E3,4.978955516E1 +1.271616000E3,5.398913319E1 +1.271862000E3,5.537806166E1 +1.272155000E3,5.301545016E1 +1.272407000E3,5.450597504E1 +1.272651000E3,5.090153644E1 +1.272906000E3,5.335437953E1 +1.273148000E3,4.673762491E1 +1.273392000E3,5.062539325E1 +1.273710000E3,5.110756444E1 +1.273960000E3,5.466659884E1 +1.274217000E3,5.158121780E1 +1.274511000E3,5.575560452E1 +1.274759000E3,5.536976579E1 +1.275054000E3,5.425250328E1 +1.275298000E3,5.448034930E1 +1.275544000E3,5.185016662E1 +1.275828000E3,5.206320816E1 +1.276126000E3,5.118466074E1 +1.276376000E3,4.943928704E1 +1.276707000E3,5.090592254E1 +1.276972000E3,5.767487174E1 +1.277251000E3,5.481331862E1 +1.277544000E3,5.385854096E1 +1.277810000E3,5.179333541E1 +1.278097000E3,5.161992279E1 +1.278344000E3,5.248655937E1 +1.278657000E3,5.064236034E1 +1.278927000E3,4.915402835E1 +1.279197000E3,5.321156971E1 +1.279471000E3,5.438812541E1 +1.279734000E3,5.482588411E1 +1.280065000E3,5.157318203E1 +1.280296000E3,5.173449962E1 +1.280546000E3,5.465953878E1 +1.280843000E3,5.457680704E1 +1.281077000E3,5.562152963E1 +1.281325000E3,5.460406982E1 +1.281570000E3,5.232421403E1 +1.281870000E3,5.207576719E1 +1.282135000E3,4.968186040E1 +1.282378000E3,5.237915347E1 +1.282628000E3,4.745539727E1 +1.282877000E3,5.255989147E1 +1.283195000E3,5.301690658E1 +1.283467000E3,5.283539029E1 +1.283717000E3,5.083105477E1 +1.283978000E3,4.559322742E1 +1.284235000E3,4.934435088E1 +1.284538000E3,5.265118466E1 +1.284812000E3,5.302155906E1 +1.285045000E3,5.294725202E1 +1.285352000E3,5.129236762E1 +1.285646000E3,5.402858483E1 +1.285898000E3,5.434527110E1 +1.286189000E3,5.525625388E1 +1.286515000E3,5.653073998E1 +1.286819000E3,5.704731902E1 +1.287101000E3,5.310035962E1 +1.287387000E3,5.474072190E1 +1.287649000E3,5.496979063E1 +1.287925000E3,5.528941101E1 +1.288193000E3,5.394330028E1 +1.288492000E3,4.829171318E1 +1.288740000E3,5.076324605E1 +1.289004000E3,4.673843249E1 +1.289280000E3,5.345749476E1 +1.289584000E3,4.955238815E1 +1.289923000E3,5.268555513E1 +1.290206000E3,5.092762320E1 +1.290445000E3,5.180504716E1 +1.290779000E3,5.421996562E1 +1.291081000E3,5.408565728E1 +1.291322000E3,5.466627749E1 +1.291622000E3,5.247549140E1 +1.291870000E3,5.438915347E1 +1.292125000E3,5.526358440E1 +1.292428000E3,5.407200655E1 +1.292723000E3,5.160593410E1 +1.293035000E3,5.231731426E1 +1.293342000E3,5.126765219E1 +1.293626000E3,4.802016847E1 +1.293922000E3,5.428603515E1 +1.294199000E3,5.305841291E1 +1.294451000E3,5.676250586E1 +1.294738000E3,5.921971496E1 +1.295005000E3,5.812051865E1 +1.295266000E3,5.671365947E1 +1.295512000E3,5.389157640E1 +1.295809000E3,5.417883641E1 +1.296087000E3,5.169085532E1 +1.296408000E3,5.027989141E1 +1.296704000E3,5.801273246E1 +1.296951000E3,5.777618357E1 +1.297241000E3,5.598217178E1 +1.297547000E3,5.590671112E1 +1.297806000E3,6.302454961E1 +1.298073000E3,5.716944646E1 +1.298330000E3,5.693666329E1 +1.298591000E3,5.374930006E1 +1.298851000E3,5.170089530E1 +1.299100000E3,6.243829367E1 +1.299340000E3,5.522680485E1 +1.299673000E3,5.451288060E1 +1.299933000E3,5.720613947E1 +1.300193000E3,5.131457759E1 +1.300510000E3,5.593393786E1 +1.300810000E3,5.344184529E1 +1.301099000E3,5.432320381E1 +1.301355000E3,5.294046944E1 +1.301602000E3,5.330691828E1 +1.301911000E3,4.899471979E1 +1.302175000E3,5.054546621E1 +1.302420000E3,4.914598102E1 +1.302706000E3,5.757950400E1 +1.303045000E3,5.798603958E1 +1.303343000E3,5.685278830E1 +1.303584000E3,5.272645619E1 +1.303869000E3,5.576083132E1 +1.304169000E3,5.311655900E1 +1.304414000E3,5.297304035E1 +1.304724000E3,6.119658997E1 +1.304998000E3,5.921259630E1 +1.305275000E3,5.974785927E1 +1.305567000E3,5.829108198E1 +1.305799000E3,5.656256791E1 +1.306151000E3,5.263150293E1 +1.306475000E3,5.719715846E1 +1.306754000E3,5.746813017E1 +1.307020000E3,6.063794361E1 +1.307320000E3,5.945639283E1 +1.307570000E3,5.898495898E1 +1.307856000E3,5.345744690E1 +1.308127000E3,5.882374416E1 +1.308390000E3,5.704844280E1 +1.308660000E3,6.230218860E1 +1.308982000E3,5.794977886E1 +1.309252000E3,5.609480230E1 +1.309620000E3,5.439173238E1 +1.309924000E3,5.804315704E1 +1.310253000E3,5.898090143E1 +1.310510000E3,5.933785859E1 +1.310826000E3,5.484966867E1 +1.311077000E3,5.841635068E1 +1.311358000E3,5.536029260E1 +1.311601000E3,5.555523834E1 +1.311895000E3,5.637714479E1 +1.312195000E3,5.253312652E1 +1.312445000E3,5.377927694E1 +1.312696000E3,5.757954833E1 +1.313038000E3,5.500733438E1 +1.313282000E3,5.367385274E1 +1.313558000E3,5.610715122E1 +1.313797000E3,5.528556803E1 +1.314063000E3,5.884958532E1 +1.314412000E3,5.458036035E1 +1.314671000E3,5.765344335E1 +1.314945000E3,5.139756723E1 +1.315223000E3,5.546002517E1 +1.315503000E3,5.608276603E1 +1.315733000E3,5.719791479E1 +1.315986000E3,5.413888898E1 +1.316329000E3,5.789500166E1 +1.316579000E3,5.404086097E1 +1.316819000E3,6.021843554E1 +1.317067000E3,5.929690830E1 +1.317365000E3,6.066063258E1 +1.317666000E3,5.465341745E1 +1.317917000E3,5.115712079E1 +1.318169000E3,4.986479689E1 +1.318470000E3,5.351977371E1 +1.318716000E3,5.614277654E1 +1.318987000E3,5.824140620E1 +1.319280000E3,5.863858703E1 +1.319646000E3,5.908977231E1 +1.319902000E3,5.867594430E1 +1.320142000E3,5.256185028E1 +1.320379000E3,5.916248935E1 +1.320672000E3,5.829134786E1 +1.320910000E3,5.729121950E1 +1.321203000E3,5.817253701E1 +1.321434000E3,5.958327052E1 +1.321726000E3,6.109571062E1 +1.321963000E3,6.309400740E1 +1.322263000E3,6.381431561E1 +1.322586000E3,6.124594205E1 +1.322839000E3,6.120886427E1 +1.323128000E3,5.624496406E1 +1.323377000E3,6.205845751E1 +1.323676000E3,6.248705287E1 +1.323968000E3,6.259357777E1 +1.324217000E3,6.168308921E1 +1.324496000E3,6.128297543E1 +1.324731000E3,5.975404370E1 +1.325024000E3,6.147148959E1 +1.325261000E3,6.101142333E1 +1.325573000E3,5.682124874E1 +1.325854000E3,5.869490284E1 +1.326149000E3,5.646663249E1 +1.326392000E3,5.662110608E1 +1.326643000E3,5.067702480E1 +1.326984000E3,5.759763927E1 +1.327264000E3,5.613584630E1 +1.327489000E3,5.826097161E1 +1.327735000E3,5.843702691E1 +1.328012000E3,5.352317094E1 +1.328253000E3,5.737674501E1 +1.328545000E3,5.736811408E1 +1.328911000E3,5.477233671E1 +1.329158000E3,5.481436604E1 +1.329403000E3,4.974322484E1 +1.329645000E3,5.490077996E1 +1.329890000E3,4.870505425E1 +1.330144000E3,4.955972956E1 +1.330428000E3,5.470042727E1 +1.330734000E3,5.618884112E1 +1.331026000E3,5.238151215E1 +1.331265000E3,5.344428978E1 +1.331515000E3,5.051963956E1 +1.331772000E3,5.068574448E1 +1.332120000E3,5.754233113E1 +1.332409000E3,5.498832674E1 +1.332740000E3,5.245036701E1 +1.333034000E3,5.885934606E1 +1.333286000E3,5.644915657E1 +1.333540000E3,5.532779852E1 +1.333784000E3,5.694511409E1 +1.334028000E3,5.553937724E1 +1.334302000E3,5.308286554E1 +1.334615000E3,5.140154995E1 +1.334876000E3,5.045296543E1 +1.335187000E3,5.631993217E1 +1.335451000E3,5.435091016E1 +1.335722000E3,5.624357652E1 +1.335986000E3,5.791043400E1 +1.336271000E3,5.847603086E1 +1.336545000E3,5.757219882E1 +1.336794000E3,6.070042624E1 +1.337072000E3,5.247827017E1 +1.337340000E3,5.208145921E1 +1.337609000E3,6.026756153E1 +1.337870000E3,6.012826199E1 +1.338134000E3,5.465450317E1 +1.338408000E3,5.768658418E1 +1.338755000E3,5.542991210E1 +1.339019000E3,5.279974580E1 +1.339289000E3,4.966927449E1 +1.339556000E3,4.563713389E1 +1.339804000E3,4.961972315E1 +1.340056000E3,5.287436972E1 +1.340316000E3,5.318950925E1 +1.340586000E3,5.037908496E1 +1.340881000E3,5.345184090E1 +1.341116000E3,5.016784238E1 +1.341407000E3,5.799295151E1 +1.341694000E3,5.875659808E1 +1.342051000E3,5.666657228E1 +1.342345000E3,5.241270038E1 +1.342638000E3,5.754780266E1 +1.342875000E3,5.669750570E1 +1.343177000E3,5.541629106E1 +1.343432000E3,5.556249818E1 +1.343726000E3,5.603182587E1 +1.343969000E3,5.961525777E1 +1.344257000E3,5.915223521E1 +1.344498000E3,5.820677933E1 +1.344777000E3,5.815031326E1 +1.345094000E3,5.733094423E1 +1.345363000E3,5.538469317E1 +1.345622000E3,6.270903439E1 +1.345877000E3,5.551461514E1 +1.346148000E3,5.750063996E1 +1.346395000E3,5.473739655E1 +1.346676000E3,5.131350753E1 +1.346958000E3,5.072615719E1 +1.347258000E3,4.882711207E1 +1.347518000E3,5.273988371E1 +1.347784000E3,6.269937361E1 +1.348040000E3,6.058958657E1 +1.348391000E3,5.894445662E1 +1.348716000E3,5.683213923E1 +1.348984000E3,5.875140523E1 +1.349236000E3,5.263650529E1 +1.349491000E3,4.630287352E1 +1.349847000E3,5.742006494E1 +1.350115000E3,6.486179330E1 +1.350358000E3,5.963871460E1 +1.350612000E3,5.220281373E1 +1.350868000E3,5.825229613E1 +1.351125000E3,5.822075100E1 +1.351374000E3,5.487419692E1 +1.351666000E3,5.461361208E1 +1.351934000E3,5.384511910E1 +1.352185000E3,5.782109838E1 +1.352440000E3,5.156901690E1 +1.352688000E3,5.262530942E1 +1.352990000E3,5.827406705E1 +1.353265000E3,6.164230870E1 +1.353493000E3,5.939319367E1 +1.353769000E3,5.491407227E1 +1.353989000E3,5.363390940E1 +1.354236000E3,5.108497673E1 +1.354516000E3,6.129017752E1 +1.354836000E3,5.594784457E1 +1.355095000E3,5.172378417E1 +1.355422000E3,5.975901259E1 +1.355685000E3,5.720857994E1 +1.355941000E3,5.600667557E1 +1.356197000E3,5.471836828E1 +1.356478000E3,5.319452565E1 +1.356745000E3,5.296912594E1 +1.357013000E3,5.811625635E1 +1.357280000E3,5.430511038E1 +1.357577000E3,5.277700001E1 +1.357824000E3,5.616769978E1 +1.358135000E3,5.406396803E1 +1.358401000E3,4.910300122E1 +1.358643000E3,5.077236009E1 +1.358892000E3,5.530877446E1 +1.359206000E3,5.787482939E1 +1.359485000E3,5.846197249E1 +1.359760000E3,6.103303991E1 +1.360055000E3,6.092009186E1 +1.360296000E3,5.979156049E1 +1.360590000E3,6.049263298E1 +1.360828000E3,5.895545308E1 +1.361114000E3,5.611946421E1 +1.361473000E3,5.480295831E1 +1.361726000E3,5.397626184E1 +1.361972000E3,5.443193027E1 +1.362314000E3,5.572591927E1 +1.362560000E3,5.224616115E1 +1.362808000E3,5.244486023E1 +1.363061000E3,5.179430466E1 +1.363307000E3,5.228822629E1 +1.363555000E3,5.248152719E1 +1.363850000E3,5.310816898E1 +1.364115000E3,5.586433987E1 +1.364397000E3,5.735023043E1 +1.364703000E3,6.002405491E1 +1.364950000E3,5.692273216E1 +1.365192000E3,5.941823705E1 +1.365459000E3,5.316793659E1 +1.365709000E3,5.869878442E1 +1.365953000E3,5.756526572E1 +1.366216000E3,5.687574379E1 +1.366491000E3,5.232478004E1 +1.366744000E3,5.424491879E1 +1.367001000E3,5.235481979E1 +1.367305000E3,5.164783122E1 +1.367588000E3,4.924997634E1 +1.367934000E3,4.924339558E1 +1.368196000E3,5.793398832E1 +1.368473000E3,5.529211657E1 +1.368719000E3,5.120874356E1 +1.368963000E3,5.470742612E1 +1.369285000E3,5.560989240E1 +1.369528000E3,5.197646059E1 +1.369822000E3,5.152328490E1 +1.370111000E3,5.791930576E1 +1.370416000E3,5.368811562E1 +1.370672000E3,5.769124019E1 +1.370919000E3,5.333549653E1 +1.371292000E3,5.847056292E1 +1.371551000E3,5.642894477E1 +1.371803000E3,5.817537921E1 +1.372074000E3,5.885584750E1 +1.372335000E3,5.395474736E1 +1.372602000E3,5.211537518E1 +1.372880000E3,4.924374923E1 +1.373126000E3,4.882665291E1 +1.373379000E3,5.483140316E1 +1.373636000E3,5.380197532E1 +1.373915000E3,5.629967483E1 +1.374251000E3,5.773524892E1 +1.374636000E3,6.271253195E1 +1.374894000E3,5.870587143E1 +1.375125000E3,5.496954916E1 +1.375369000E3,5.621931219E1 +1.375641000E3,5.700323462E1 +1.375912000E3,5.808968856E1 +1.376161000E3,5.697587873E1 +1.376437000E3,5.739415600E1 +1.376687000E3,5.874614285E1 +1.376941000E3,5.855325473E1 +1.377252000E3,5.287324040E1 +1.377495000E3,5.331405656E1 +1.377862000E3,5.163612814E1 +1.378109000E3,6.003152631E1 +1.378372000E3,6.448039849E1 +1.378641000E3,6.226927373E1 +1.378912000E3,6.355904277E1 +1.379208000E3,6.121718755E1 +1.379463000E3,6.371699462E1 +1.379738000E3,5.774542440E1 +1.380076000E3,5.579766677E1 +1.380318000E3,5.520595979E1 +1.380614000E3,5.395000262E1 +1.380855000E3,5.263752401E1 +1.381221000E3,5.267030150E1 +1.381492000E3,5.304251562E1 +1.381793000E3,4.959737221E1 +1.382100000E3,5.549829026E1 +1.382347000E3,5.821584994E1 +1.382642000E3,5.861199323E1 +1.382905000E3,5.256382895E1 +1.383164000E3,5.491877459E1 +1.383443000E3,5.644995893E1 +1.383702000E3,5.411249990E1 +1.383954000E3,5.324738213E1 +1.384305000E3,5.625052210E1 +1.384532000E3,6.070474662E1 +1.384789000E3,5.237062704E1 +1.385074000E3,5.442107865E1 +1.385361000E3,6.017483878E1 +1.385605000E3,6.237555822E1 +1.385869000E3,5.605951782E1 +1.386126000E3,6.511151133E1 +1.386382000E3,5.571785683E1 +1.386696000E3,5.398201636E1 +1.386954000E3,5.323734283E1 +1.387264000E3,5.635686029E1 +1.387623000E3,5.701357512E1 +1.387874000E3,5.632095063E1 +1.388187000E3,5.288354031E1 +1.388477000E3,5.152350906E1 +1.388761000E3,5.130627857E1 +1.388982000E3,4.918436870E1 +1.389239000E3,5.567775637E1 +1.389545000E3,5.465238648E1 +1.389786000E3,5.003079725E1 +1.390027000E3,5.504486936E1 +1.390282000E3,5.947272344E1 +1.390539000E3,6.106137952E1 +1.390892000E3,5.985290475E1 +1.391203000E3,5.500825546E1 +1.391507000E3,5.157102239E1 +1.391806000E3,5.517662265E1 +1.392108000E3,5.349243854E1 +1.392411000E3,5.386652866E1 +1.392707000E3,5.258839734E1 +1.392973000E3,5.376638351E1 +1.393221000E3,5.619475880E1 +1.393480000E3,5.846509931E1 +1.393767000E3,6.504346680E1 +1.394122000E3,5.865804348E1 +1.394392000E3,5.055217311E1 +1.394673000E3,4.837306759E1 +1.394931000E3,5.564689750E1 +1.395193000E3,5.416088817E1 +1.395489000E3,5.481584764E1 +1.395781000E3,5.356143065E1 +1.396078000E3,5.074158934E1 +1.396313000E3,5.177896206E1 +1.396618000E3,5.670327312E1 +1.396914000E3,6.043149132E1 +1.397246000E3,5.875453471E1 +1.397559000E3,5.725772305E1 +1.397842000E3,5.610169288E1 +1.398092000E3,6.098127982E1 +1.398354000E3,5.385330985E1 +1.398611000E3,5.345613584E1 +1.398873000E3,6.183897473E1 +1.399135000E3,5.898294985E1 +1.399399000E3,5.644599073E1 +1.399662000E3,6.288338842E1 +1.399923000E3,5.844786233E1 +1.400178000E3,6.145207907E1 +1.400438000E3,5.797678971E1 +1.400786000E3,5.805590691E1 +1.401082000E3,5.956739883E1 +1.401323000E3,5.537900496E1 +1.401618000E3,5.084213917E1 +1.401871000E3,4.807017206E1 +1.402118000E3,5.545233073E1 +1.402411000E3,5.516036366E1 +1.402644000E3,5.413431379E1 +1.402920000E3,5.388857626E1 +1.403209000E3,5.292068844E1 +1.403479000E3,5.775211983E1 +1.403718000E3,5.117484548E1 +1.404045000E3,5.912447648E1 +1.404295000E3,5.591921957E1 +1.404568000E3,5.565028551E1 +1.404828000E3,5.013398992E1 +1.405122000E3,5.465164253E1 +1.405364000E3,5.305211462E1 +1.405620000E3,5.755171154E1 +1.405929000E3,6.007655449E1 +1.406174000E3,5.899920387E1 +1.406463000E3,5.970773629E1 +1.406720000E3,5.770443308E1 +1.407009000E3,5.521297881E1 +1.407407000E3,5.604277064E1 +1.407677000E3,5.646208540E1 +1.407969000E3,4.906112006E1 +1.408239000E3,5.193830101E1 +1.408558000E3,4.835599484E1 +1.408830000E3,4.864558507E1 +1.409087000E3,5.566138381E1 +1.409349000E3,5.240816417E1 +1.409604000E3,4.366169359E1 +1.409843000E3,4.924613485E1 +1.410167000E3,5.289541091E1 +1.410462000E3,5.429333459E1 +1.410857000E3,5.232803186E1 +1.411115000E3,5.279391543E1 +1.411388000E3,5.698112108E1 +1.411689000E3,4.954635028E1 +1.411940000E3,5.347151392E1 +1.412202000E3,5.431542928E1 +1.412461000E3,5.708654506E1 +1.412712000E3,5.999867781E1 +1.412972000E3,5.836713300E1 +1.413243000E3,5.662529411E1 +1.413547000E3,5.760118844E1 +1.413790000E3,5.272334048E1 +1.414155000E3,5.585703000E1 +1.414407000E3,5.277217169E1 +1.414666000E3,5.575617717E1 +1.414970000E3,5.588142009E1 +1.415263000E3,5.043609445E1 +1.415519000E3,5.366091219E1 +1.415818000E3,6.729065738E1 +1.416082000E3,5.454700058E1 +1.416357000E3,5.542836481E1 +1.416608000E3,6.150002805E1 +1.416870000E3,5.918799699E1 +1.417164000E3,5.739551304E1 +1.417548000E3,5.312046747E1 +1.417864000E3,5.735989692E1 +1.418111000E3,5.463708503E1 +1.418368000E3,5.616594485E1 +1.418622000E3,5.674613857E1 +1.418880000E3,5.393284238E1 +1.419178000E3,5.477989298E1 +1.419414000E3,5.673628135E1 +1.419692000E3,5.246670124E1 +1.419935000E3,5.929492524E1 +1.420173000E3,5.718550468E1 +1.420417000E3,5.597503360E1 +1.420745000E3,5.209811810E1 +1.421016000E3,5.108820023E1 +1.421271000E3,5.704928631E1 +1.421524000E3,5.534619134E1 +1.421787000E3,5.298830069E1 +1.422048000E3,5.357926773E1 +1.422324000E3,5.150193558E1 +1.422590000E3,5.236977243E1 +1.422860000E3,5.598534631E1 +1.423111000E3,5.804712890E1 +1.423360000E3,5.584477369E1 +1.423617000E3,6.166819052E1 +1.423956000E3,6.217862533E1 +1.424239000E3,6.474885215E1 +1.424493000E3,6.561094566E1 +1.424771000E3,6.624921272E1 +1.425013000E3,6.269332683E1 +1.425310000E3,6.427501900E1 +1.425550000E3,6.406421996E1 +1.425806000E3,6.561696377E1 +1.426124000E3,5.757984813E1 +1.426392000E3,6.467113265E1 +1.426661000E3,6.110360998E1 +1.426971000E3,6.257935575E1 +1.427325000E3,6.059948571E1 +1.427600000E3,6.060080967E1 +1.427858000E3,6.129065918E1 +1.428157000E3,6.869907238E1 +1.428403000E3,6.216021300E1 +1.428668000E3,6.028715826E1 +1.428917000E3,5.215970407E1 +1.429175000E3,5.348756082E1 +1.429445000E3,5.866879342E1 +1.429775000E3,5.422412762E1 +1.430077000E3,5.967912654E1 +1.430370000E3,6.053958419E1 +1.430696000E3,5.642153628E1 +1.430959000E3,5.797803369E1 +1.431217000E3,5.265853131E1 +1.431545000E3,6.085541328E1 +1.431825000E3,6.579757863E1 +1.432095000E3,6.783858113E1 +1.432356000E3,6.680245969E1 +1.432609000E3,5.699539434E1 +1.432887000E3,5.495476405E1 +1.433146000E3,5.431336982E1 +1.433405000E3,5.468573805E1 +1.433768000E3,6.415525931E1 +1.434037000E3,5.996195649E1 +1.434305000E3,5.880144898E1 +1.434536000E3,5.062803370E1 +1.434794000E3,4.838886892E1 +1.435059000E3,4.852598648E1 +1.435348000E3,5.424758091E1 +1.435611000E3,6.028120001E1 +1.435845000E3,5.860165153E1 +1.436098000E3,5.820116177E1 +1.436348000E3,5.458976108E1 +1.436603000E3,5.748661459E1 +1.436983000E3,5.071157707E1 +1.437230000E3,5.187454119E1 +1.437505000E3,5.690962542E1 +1.437744000E3,5.898297949E1 +1.438006000E3,6.083548120E1 +1.438278000E3,4.929702369E1 +1.438556000E3,5.094464024E1 +1.438857000E3,5.451803318E1 +1.439157000E3,4.851675588E1 +1.439427000E3,4.781325912E1 +1.439724000E3,4.919544886E1 +1.439968000E3,4.662525194E1 +1.440374000E3,4.187537091E1 +1.440620000E3,5.083424523E1 +1.440895000E3,4.476479772E1 +1.441179000E3,5.236126827E1 +1.441495000E3,4.954212438E1 +1.441772000E3,5.444261950E1 +1.442048000E3,5.023278537E1 +1.442273000E3,4.640707667E1 +1.442557000E3,5.088583460E1 +1.442822000E3,5.041471443E1 +1.443067000E3,4.940152653E1 +1.443315000E3,4.834999124E1 +1.443550000E3,5.084173145E1 +1.443802000E3,4.674944421E1 +1.444118000E3,5.005548854E1 +1.444412000E3,4.880222753E1 +1.444695000E3,4.829349493E1 +1.444948000E3,4.815408858E1 +1.445231000E3,4.968297573E1 +1.445471000E3,5.263069989E1 +1.445763000E3,4.570389774E1 +1.446062000E3,4.674284816E1 +1.446364000E3,5.179136771E1 +1.446637000E3,5.007894257E1 +1.446884000E3,5.001285233E1 +1.447102000E3,5.063641057E1 +1.447373000E3,4.164946286E1 +1.447601000E3,3.981108666E1 +1.447894000E3,4.316358072E1 +1.448132000E3,5.465701871E1 +1.448431000E3,4.615144027E1 +1.448672000E3,4.353154230E1 +1.448965000E3,5.208221965E1 +1.449200000E3,5.530439334E1 +1.449496000E3,4.996075498E1 +1.449729000E3,5.218941020E1 +1.450060000E3,4.888890123E1 +1.450335000E3,5.030971329E1 +1.450629000E3,5.012870067E1 +1.450899000E3,4.847297804E1 +1.451151000E3,4.759762696E1 +1.451454000E3,4.978926902E1 +1.451751000E3,4.930919072E1 +1.452001000E3,5.004861581E1 +1.452285000E3,5.051309266E1 +1.452566000E3,4.810890055E1 +1.452826000E3,4.654354865E1 +1.453069000E3,4.761425190E1 +1.453369000E3,4.589508435E1 +1.453616000E3,4.954922405E1 +1.453886000E3,4.065983258E1 +1.454197000E3,4.220647307E1 +1.454513000E3,4.858310714E1 +1.454789000E3,5.196405012E1 +1.455012000E3,5.467685341E1 +1.455262000E3,5.753332593E1 +1.455513000E3,4.707036048E1 +1.455859000E3,3.942826471E1 +1.456237000E3,5.170062203E1 +1.456495000E3,6.022707597E1 +1.456743000E3,5.524301158E1 +1.456990000E3,5.482834451E1 +1.457257000E3,4.917995293E1 +1.457590000E3,4.739340640E1 +1.457831000E3,4.842051754E1 +1.458073000E3,6.166669432E1 +1.458329000E3,5.427876580E1 +1.458617000E3,4.896037674E1 +1.458889000E3,4.346397471E1 +1.459122000E3,4.481546196E1 +1.459424000E3,5.149740630E1 +1.459726000E3,4.614214660E1 +1.459975000E3,4.567227587E1 +1.460237000E3,5.348774305E1 +1.460488000E3,5.617792493E1 +1.460730000E3,5.122937085E1 +1.460971000E3,5.712815616E1 +1.461266000E3,5.592815325E1 +1.461504000E3,5.208026338E1 +1.461798000E3,5.368936290E1 +1.462033000E3,5.424431898E1 +1.462332000E3,5.229538114E1 +1.462686000E3,5.012562607E1 +1.462943000E3,5.517893002E1 +1.463292000E3,5.544440679E1 +1.463574000E3,5.195225561E1 +1.463851000E3,5.582804772E1 +1.464133000E3,5.163717454E1 +1.464392000E3,5.056978371E1 +1.464653000E3,5.085736348E1 +1.464931000E3,5.111025552E1 +1.465171000E3,5.008163028E1 +1.465468000E3,5.204681239E1 +1.465721000E3,4.873162615E1 +1.466070000E3,5.052420662E1 +1.466365000E3,5.115431116E1 +1.466626000E3,5.008089225E1 +1.466902000E3,5.455907242E1 +1.467123000E3,5.881328519E1 +1.467422000E3,5.654049662E1 +1.467665000E3,6.208900398E1 +1.467911000E3,5.573620080E1 +1.468210000E3,5.034178452E1 +1.468461000E3,4.644884091E1 +1.468716000E3,4.489036287E1 +1.469021000E3,4.555962209E1 +1.469437000E3,4.956164087E1 +1.469733000E3,5.014140659E1 +1.469995000E3,5.025508197E1 +1.470298000E3,4.976482928E1 +1.470552000E3,4.666552600E1 +1.470801000E3,5.164800320E1 +1.471107000E3,4.748865751E1 +1.471358000E3,5.068455306E1 +1.471623000E3,5.380657492E1 +1.471874000E3,4.918332364E1 +1.472155000E3,4.974368594E1 +1.472539000E3,5.519550202E1 +1.472795000E3,5.119649457E1 +1.473056000E3,5.406344748E1 +1.473370000E3,5.554928156E1 +1.473655000E3,5.458007948E1 +1.473895000E3,5.519923804E1 +1.474152000E3,5.580016483E1 +1.474437000E3,5.718813696E1 +1.474685000E3,5.734393611E1 +1.474960000E3,5.879862387E1 +1.475221000E3,5.602300215E1 +1.475474000E3,5.025640835E1 +1.475826000E3,5.543439402E1 +1.476071000E3,5.232164352E1 +1.476323000E3,5.898115961E1 +1.476584000E3,6.066467981E1 +1.476821000E3,5.071984472E1 +1.477123000E3,5.740447565E1 +1.477365000E3,5.959782608E1 +1.477662000E3,5.958620190E1 +1.477906000E3,5.753388342E1 +1.478144000E3,5.506848886E1 +1.478455000E3,5.769430513E1 +1.478723000E3,5.629679592E1 +1.478987000E3,5.649495967E1 +1.479262000E3,5.787253729E1 +1.479512000E3,5.216150167E1 +1.479813000E3,4.948302212E1 +1.480088000E3,5.080056078E1 +1.480342000E3,4.734041467E1 +1.480601000E3,4.440736689E1 +1.480866000E3,5.120725270E1 +1.481166000E3,5.053254929E1 +1.481466000E3,5.274685420E1 +1.481724000E3,5.071521067E1 +1.481973000E3,5.225995741E1 +1.482300000E3,5.133897759E1 +1.482575000E3,5.007250383E1 +1.482845000E3,5.042400131E1 +1.483101000E3,5.258901014E1 +1.483408000E3,5.618504625E1 +1.483668000E3,5.503349900E1 +1.483933000E3,4.974702245E1 +1.484194000E3,5.170781389E1 +1.484440000E3,5.072340799E1 +1.484707000E3,5.947536199E1 +1.485018000E3,5.467515596E1 +1.485306000E3,6.085614245E1 +1.485656000E3,5.990152864E1 +1.485935000E3,5.602550586E1 +1.486168000E3,5.561766537E1 +1.486422000E3,5.350876804E1 +1.486701000E3,5.699979875E1 +1.486960000E3,5.177464585E1 +1.487207000E3,5.249766501E1 +1.487486000E3,5.285366750E1 +1.487751000E3,5.316768095E1 +1.488002000E3,4.876639606E1 +1.488262000E3,5.179834313E1 +1.488516000E3,4.991892364E1 +1.488812000E3,5.156353661E1 +1.489125000E3,5.341434219E1 +1.489400000E3,5.426211096E1 +1.489675000E3,4.699672779E1 +1.489958000E3,5.361914521E1 +1.490219000E3,5.605827819E1 +1.490490000E3,5.089547448E1 +1.490772000E3,5.163564337E1 +1.491061000E3,5.841576784E1 +1.491309000E3,5.524417730E1 +1.491589000E3,5.450558122E1 +1.491873000E3,5.581032480E1 +1.492194000E3,5.802352567E1 +1.492448000E3,4.962366630E1 +1.492810000E3,5.873656508E1 +1.493058000E3,5.690804947E1 +1.493359000E3,5.262261274E1 +1.493674000E3,5.584655342E1 +1.493919000E3,5.542283425E1 +1.494163000E3,5.373884310E1 +1.494412000E3,5.084083433E1 +1.494678000E3,4.964027690E1 +1.494956000E3,5.125570040E1 +1.495204000E3,5.194895191E1 +1.495526000E3,4.961412488E1 +1.495784000E3,4.972405818E1 +1.496036000E3,4.777083448E1 +1.496283000E3,5.231556692E1 +1.496593000E3,5.894066851E1 +1.496842000E3,6.007182772E1 +1.497086000E3,6.003234807E1 +1.497358000E3,5.170627362E1 +1.497682000E3,5.564688341E1 +1.497937000E3,5.459086103E1 +1.498234000E3,5.654462748E1 +1.498530000E3,5.643601391E1 +1.498887000E3,5.593732695E1 +1.499182000E3,5.279859883E1 +1.499469000E3,5.063056157E1 +1.499723000E3,4.846330641E1 +1.499972000E3,5.696559719E1 +1.500236000E3,5.806291630E1 +1.500555000E3,5.485435177E1 +1.500851000E3,5.386376671E1 +1.501120000E3,5.529102258E1 +1.501400000E3,5.058415032E1 +1.501675000E3,5.420960743E1 +1.501928000E3,4.962388553E1 +1.502263000E3,5.167692375E1 +1.502567000E3,5.072695334E1 +1.502878000E3,5.319678523E1 +1.503119000E3,5.961199300E1 +1.503369000E3,5.299728366E1 +1.503631000E3,5.369404965E1 +1.503941000E3,5.426817134E1 +1.504209000E3,5.369336762E1 +1.504462000E3,5.246626497E1 +1.504724000E3,5.358557871E1 +1.505015000E3,4.957781391E1 +1.505279000E3,5.117668163E1 +1.505699000E3,5.216401891E1 +1.505963000E3,5.011348657E1 +1.506261000E3,5.259055540E1 +1.506507000E3,4.579432510E1 +1.506795000E3,4.877099475E1 +1.507032000E3,4.679595596E1 +1.507314000E3,5.136222565E1 +1.507549000E3,5.267101191E1 +1.507792000E3,5.244999525E1 +1.508074000E3,5.180561005E1 +1.508391000E3,5.030990700E1 +1.508607000E3,5.167226321E1 +1.508859000E3,5.218207738E1 +1.509151000E3,5.317725961E1 +1.509397000E3,5.318899610E1 +1.509689000E3,4.978257152E1 +1.509934000E3,5.032443800E1 +1.510228000E3,4.777293014E1 +1.510466000E3,4.646316587E1 +1.510767000E3,5.646850943E1 +1.511001000E3,5.638889819E1 +1.511293000E3,5.773758842E1 +1.511610000E3,5.580372922E1 +1.511900000E3,5.517502050E1 +1.512151000E3,5.684013484E1 +1.512393000E3,5.407249321E1 +1.512652000E3,5.725430710E1 +1.512902000E3,5.755876004E1 +1.513148000E3,5.492786930E1 +1.513404000E3,5.665177401E1 +1.513705000E3,5.675683028E1 +1.513957000E3,5.845897420E1 +1.514258000E3,5.334537973E1 +1.514488000E3,5.035361876E1 +1.514812000E3,4.886526824E1 +1.515059000E3,5.555156669E1 +1.515357000E3,5.401240780E1 +1.515600000E3,5.191330713E1 +1.515873000E3,5.158089375E1 +1.516102000E3,5.397456219E1 +1.516410000E3,5.205317520E1 +1.516679000E3,5.689433829E1 +1.516971000E3,5.397466306E1 +1.517230000E3,5.553699481E1 +1.517504000E3,5.550832571E1 +1.517763000E3,5.490604036E1 +1.518130000E3,5.129555301E1 +1.518403000E3,5.478479772E1 +1.518670000E3,5.687403653E1 +1.518921000E3,5.464295853E1 +1.519177000E3,5.713561839E1 +1.519461000E3,5.306473622E1 +1.519745000E3,5.320579073E1 +1.520002000E3,5.309385307E1 +1.520258000E3,5.058967996E1 +1.520552000E3,5.470724085E1 +1.520793000E3,5.303104936E1 +1.521156000E3,5.432496893E1 +1.521453000E3,5.594215604E1 +1.521721000E3,5.308545736E1 +1.521969000E3,5.327888421E1 +1.522220000E3,5.030915333E1 +1.522490000E3,5.230098434E1 +1.522776000E3,4.743827766E1 +1.523026000E3,5.464211349E1 +1.523327000E3,5.322537523E1 +1.523581000E3,5.154569729E1 +1.523826000E3,5.335950152E1 +1.524133000E3,5.482016506E1 +1.524417000E3,5.825411535E1 +1.524853000E3,5.879893849E1 +1.525179000E3,5.728744863E1 +1.525433000E3,5.737571640E1 +1.525696000E3,5.681107869E1 +1.525950000E3,5.695921586E1 +1.526210000E3,5.455429607E1 +1.526487000E3,5.808007225E1 +1.526729000E3,5.500512440E1 +1.527042000E3,5.476260812E1 +1.527339000E3,5.849962899E1 +1.527579000E3,5.719021529E1 +1.527910000E3,5.422226824E1 +1.528160000E3,5.266147572E1 +1.528411000E3,5.030747323E1 +1.528675000E3,5.057502492E1 +1.528920000E3,5.365292462E1 +1.529175000E3,5.444435151E1 +1.529423000E3,5.586906556E1 +1.529732000E3,5.808239082E1 +1.530030000E3,5.492304678E1 +1.530283000E3,5.727734117E1 +1.530542000E3,5.518682809E1 +1.530805000E3,5.838179726E1 +1.531133000E3,5.619103982E1 +1.531448000E3,5.705771680E1 +1.531738000E3,5.605732573E1 +1.531987000E3,5.497746164E1 +1.532293000E3,5.570350387E1 +1.532602000E3,5.687942595E1 +1.532873000E3,5.590365459E1 +1.533132000E3,5.379832162E1 +1.533387000E3,5.951317374E1 +1.533654000E3,5.728034638E1 +1.533915000E3,5.755019099E1 +1.534163000E3,5.625336618E1 +1.534512000E3,5.560455999E1 +1.534783000E3,5.186395468E1 +1.535086000E3,6.018952062E1 +1.535379000E3,5.360739703E1 +1.535619000E3,5.637744941E1 +1.535916000E3,5.710534601E1 +1.536153000E3,5.751101039E1 +1.536449000E3,5.888699469E1 +1.536688000E3,5.900809640E1 +1.536983000E3,5.539354346E1 +1.537218000E3,5.212761926E1 +1.537514000E3,6.113968309E1 +1.537773000E3,5.789795306E1 +1.538038000E3,6.065119472E1 +1.538356000E3,5.715251587E1 +1.538607000E3,5.728294892E1 +1.538911000E3,5.939537878E1 +1.539175000E3,5.879010449E1 +1.539417000E3,6.007594674E1 +1.539661000E3,5.983742076E1 +1.539908000E3,6.299497704E1 +1.540182000E3,6.042347696E1 +1.540457000E3,5.844914903E1 +1.540758000E3,5.775362746E1 +1.541037000E3,5.216165265E1 +1.541334000E3,5.255584969E1 +1.541593000E3,5.278098471E1 +1.541846000E3,5.581770981E1 +1.542092000E3,5.736301867E1 +1.542389000E3,5.733951694E1 +1.542623000E3,5.674705381E1 +1.542880000E3,5.506043774E1 +1.543125000E3,5.404728252E1 +1.543453000E3,5.428884791E1 +1.543732000E3,5.547580162E1 +1.544085000E3,5.471747417E1 +1.544346000E3,5.496243571E1 +1.544613000E3,5.288395526E1 +1.544860000E3,5.036194227E1 +1.545111000E3,5.124283852E1 +1.545413000E3,5.731432515E1 +1.545687000E3,5.663908688E1 +1.545955000E3,5.741659811E1 +1.546253000E3,5.084604561E1 +1.546502000E3,5.163330463E1 +1.546772000E3,4.777378739E1 +1.547025000E3,5.200725426E1 +1.547353000E3,5.049690945E1 +1.547625000E3,5.284766124E1 +1.547924000E3,5.396462244E1 +1.548148000E3,5.375524192E1 +1.548403000E3,5.670544075E1 +1.548716000E3,5.332369727E1 +1.548963000E3,5.544219871E1 +1.549238000E3,5.323430806E1 +1.549471000E3,5.180674965E1 +1.549727000E3,5.329467652E1 +1.550023000E3,5.080742485E1 +1.550310000E3,5.026906170E1 +1.550639000E3,5.582908231E1 +1.550905000E3,5.331150300E1 +1.551172000E3,5.186910180E1 +1.551471000E3,5.624561668E1 +1.551739000E3,5.555744845E1 +1.552012000E3,5.944044312E1 +1.552264000E3,6.002272858E1 +1.552531000E3,5.816546804E1 +1.552850000E3,5.936846960E1 +1.553097000E3,5.514794057E1 +1.553401000E3,5.160130424E1 +1.553757000E3,5.107783990E1 +1.554023000E3,5.871375450E1 +1.554276000E3,5.617325190E1 +1.554544000E3,5.736189521E1 +1.554800000E3,5.317828333E1 +1.555051000E3,5.715279916E1 +1.555321000E3,5.726931658E1 +1.555563000E3,5.567771069E1 +1.555823000E3,5.156101336E1 +1.556126000E3,5.688446569E1 +1.556378000E3,6.074118939E1 +1.556642000E3,5.974958265E1 +1.556918000E3,5.702757711E1 +1.557208000E3,5.874442787E1 +1.557457000E3,5.795683904E1 +1.557722000E3,6.039916355E1 +1.558025000E3,5.662755924E1 +1.558320000E3,5.332514547E1 +1.558595000E3,6.059700286E1 +1.558850000E3,5.775207016E1 +1.559098000E3,6.106988435E1 +1.559349000E3,6.039494527E1 +1.559644000E3,5.672405799E1 +1.559889000E3,5.814375710E1 +1.560135000E3,6.159401746E1 +1.560480000E3,5.397583636E1 +1.560770000E3,5.291692280E1 +1.561026000E3,5.439035965E1 +1.561320000E3,5.553984968E1 +1.561619000E3,5.808332247E1 +1.561927000E3,5.744100555E1 +1.562191000E3,5.636250023E1 +1.562451000E3,6.055150308E1 +1.562703000E3,5.624161562E1 +1.562979000E3,5.401048000E1 +1.563233000E3,5.588901558E1 +1.563595000E3,6.020828902E1 +1.563855000E3,6.586197618E1 +1.564143000E3,5.744692826E1 +1.564421000E3,5.175273280E1 +1.564681000E3,5.584828423E1 +1.564939000E3,5.622472521E1 +1.565190000E3,5.419184381E1 +1.565447000E3,4.818775863E1 +1.565701000E3,5.443344746E1 +1.565956000E3,4.960344337E1 +1.566224000E3,6.289868185E1 +1.566469000E3,6.499026885E1 +1.566794000E3,6.277031329E1 +1.567086000E3,5.336636778E1 +1.567405000E3,5.867761918E1 +1.567644000E3,5.135518394E1 +1.567909000E3,5.665720126E1 +1.568204000E3,5.915910399E1 +1.568455000E3,5.687790668E1 +1.568730000E3,5.815647569E1 +1.568976000E3,5.595761669E1 +1.569238000E3,5.367288589E1 +1.569491000E3,4.954593185E1 +1.569752000E3,5.199120702E1 +1.570099000E3,5.857172858E1 +1.570354000E3,5.533510860E1 +1.570614000E3,5.615291914E1 +1.570871000E3,4.816531300E1 +1.571136000E3,4.597509459E1 +1.571387000E3,5.454256971E1 +1.571722000E3,5.262076426E1 +1.572010000E3,5.108681545E1 +1.572285000E3,5.269091247E1 +1.572547000E3,4.898785412E1 +1.572807000E3,4.867008841E1 +1.573066000E3,5.306545801E1 +1.573313000E3,5.092331160E1 +1.573694000E3,5.549117670E1 +1.574009000E3,5.304099104E1 +1.574279000E3,5.377011563E1 +1.574520000E3,5.244694975E1 +1.574770000E3,5.542353961E1 +1.575031000E3,5.327330735E1 +1.575319000E3,5.123065406E1 +1.575617000E3,5.429517947E1 +1.575867000E3,5.443507599E1 +1.576132000E3,5.273613947E1 +1.576382000E3,5.717979407E1 +1.576705000E3,5.184816589E1 +1.576955000E3,4.851208329E1 +1.577250000E3,4.976440939E1 +1.577493000E3,5.236737582E1 +1.577737000E3,5.414723297E1 +1.577998000E3,5.490706774E1 +1.578342000E3,5.591011545E1 +1.578650000E3,5.689754115E1 +1.578906000E3,5.680987850E1 +1.579148000E3,5.379415708E1 +1.579394000E3,5.844713665E1 +1.579644000E3,4.927798375E1 +1.580006000E3,5.263100090E1 +1.580294000E3,5.410513055E1 +1.580548000E3,5.541047194E1 +1.580801000E3,5.058665778E1 +1.581070000E3,5.191468462E1 +1.581349000E3,4.623838572E1 +1.581601000E3,4.883886927E1 +1.581851000E3,4.951159763E1 +1.582152000E3,5.372806241E1 +1.582461000E3,4.077427406E1 +1.582742000E3,4.089897224E1 +1.582967000E3,4.661834708E1 +1.583330000E3,4.498181641E1 +1.583574000E3,4.413204165E1 +1.583835000E3,4.830731952E1 +1.584102000E3,5.133890730E1 +1.584385000E3,5.327819620E1 +1.584689000E3,5.148788947E1 +1.584935000E3,5.259351261E1 +1.585217000E3,5.210912674E1 +1.585449000E3,5.375523399E1 +1.585710000E3,5.030792675E1 +1.585957000E3,5.116594607E1 +1.586271000E3,5.729332409E1 +1.586601000E3,5.372439258E1 +1.586868000E3,5.283683191E1 +1.587111000E3,5.261490358E1 +1.587371000E3,5.394382083E1 +1.587617000E3,5.362104804E1 +1.587861000E3,5.192909002E1 +1.588111000E3,5.534291684E1 +1.588356000E3,5.529045875E1 +1.588616000E3,5.723903943E1 +1.588878000E3,5.769467674E1 +1.589116000E3,5.686991669E1 +1.589367000E3,5.472851050E1 +1.589709000E3,5.509501284E1 +1.589971000E3,6.218794924E1 +1.590276000E3,5.544714813E1 +1.590522000E3,5.587492513E1 +1.590770000E3,6.310127100E1 +1.591031000E3,6.016601681E1 +1.591331000E3,5.868635044E1 +1.591588000E3,5.739907262E1 +1.591847000E3,5.500154159E1 +1.592105000E3,5.382353142E1 +1.592358000E3,5.235465349E1 +1.592660000E3,5.432444683E1 +1.592979000E3,5.583837344E1 +1.593280000E3,5.890777444E1 +1.593531000E3,6.247008348E1 +1.593777000E3,5.524440051E1 +1.594082000E3,6.039849382E1 +1.594376000E3,5.779880973E1 +1.594616000E3,6.006977904E1 +1.594916000E3,6.157791897E1 +1.595158000E3,5.727348505E1 +1.595456000E3,6.219777130E1 +1.595702000E3,6.333776727E1 +1.596011000E3,6.315243887E1 +1.596287000E3,5.622487117E1 +1.596582000E3,4.999384026E1 +1.596838000E3,6.052096287E1 +1.597136000E3,5.730636753E1 +1.597383000E3,5.672770046E1 +1.597632000E3,5.282894107E1 +1.597943000E3,5.609826115E1 +1.598240000E3,5.950608691E1 +1.598483000E3,5.262580449E1 +1.598777000E3,5.638403375E1 +1.599039000E3,5.695994656E1 +1.599354000E3,5.595638462E1 +1.599677000E3,5.456948793E1 +1.599955000E3,5.641745933E1 +1.600254000E3,5.373490010E1 +1.600541000E3,5.613295480E1 +1.600824000E3,5.295628543E1 +1.601071000E3,5.036371368E1 +1.601313000E3,5.734560753E1 +1.601585000E3,5.869799540E1 +1.601832000E3,5.689867309E1 +1.602079000E3,5.521901034E1 +1.602376000E3,5.958743796E1 +1.602630000E3,5.697555749E1 +1.602881000E3,6.067520996E1 +1.603136000E3,6.296730837E1 +1.603381000E3,6.302345663E1 +1.603674000E3,5.614231839E1 +1.603920000E3,5.471880748E1 +1.604179000E3,6.025548138E1 +1.604432000E3,5.848975602E1 +1.604677000E3,6.051353275E1 +1.604988000E3,6.061163824E1 +1.605287000E3,5.127173554E1 +1.605535000E3,5.271948405E1 +1.605890000E3,5.457177629E1 +1.606143000E3,5.047420148E1 +1.606392000E3,5.197178768E1 +1.606684000E3,5.635777628E1 +1.606927000E3,5.691931577E1 +1.607165000E3,5.135114371E1 +1.607440000E3,5.173034620E1 +1.607734000E3,5.786109434E1 +1.607974000E3,5.620528212E1 +1.608236000E3,5.432552885E1 +1.608507000E3,5.036034087E1 +1.608763000E3,4.872303481E1 +1.609123000E3,5.516764205E1 +1.609377000E3,5.867465981E1 +1.609624000E3,5.634077767E1 +1.609869000E3,5.153316916E1 +1.610150000E3,5.212022412E1 +1.610428000E3,5.727395868E1 +1.610681000E3,5.443759521E1 +1.610944000E3,5.599199613E1 +1.611242000E3,5.709063131E1 +1.611495000E3,5.747461955E1 +1.611762000E3,5.445378087E1 +1.612040000E3,5.178206799E1 +1.612294000E3,5.347146008E1 +1.612548000E3,5.695533984E1 +1.612791000E3,5.852885666E1 +1.613050000E3,5.349710519E1 +1.613354000E3,5.482274130E1 +1.613598000E3,5.580201302E1 +1.613898000E3,5.533013655E1 +1.614151000E3,5.307302798E1 +1.614404000E3,5.034267096E1 +1.614651000E3,5.096368681E1 +1.614959000E3,5.358615730E1 +1.615202000E3,5.402822959E1 +1.615565000E3,5.173226008E1 +1.615815000E3,5.317238447E1 +1.616120000E3,5.490271856E1 +1.616406000E3,5.760350961E1 +1.616712000E3,5.516631401E1 +1.616950000E3,5.344247717E1 +1.617197000E3,5.105574764E1 +1.617480000E3,5.297874749E1 +1.617726000E3,5.181083735E1 +1.617978000E3,5.504462581E1 +1.618236000E3,5.652623382E1 +1.618484000E3,5.850281135E1 +1.618804000E3,5.207268405E1 +1.619061000E3,4.595989093E1 +1.619309000E3,5.832875112E1 +1.619574000E3,5.691639889E1 +1.619831000E3,5.277897330E1 +1.620092000E3,5.634285556E1 +1.620390000E3,5.782897026E1 +1.620660000E3,6.167326244E1 +1.620905000E3,5.736569246E1 +1.621145000E3,6.422841213E1 +1.621400000E3,6.037316593E1 +1.621649000E3,5.869946609E1 +1.622005000E3,6.007663283E1 +1.622308000E3,5.750286676E1 +1.622551000E3,5.315958033E1 +1.622849000E3,5.996646537E1 +1.623085000E3,6.310656156E1 +1.623382000E3,6.410911411E1 +1.623620000E3,6.559322950E1 +1.623914000E3,6.191537215E1 +1.624148000E3,6.509401862E1 +1.624441000E3,6.149444047E1 +1.624676000E3,5.887830140E1 +1.624914000E3,5.333395699E1 +1.625242000E3,5.080509527E1 +1.625531000E3,5.208999136E1 +1.625827000E3,4.936268455E1 +1.626072000E3,4.620940228E1 +1.626384000E3,4.812346411E1 +1.626678000E3,5.508818133E1 +1.626931000E3,5.929414420E1 +1.627193000E3,5.798382987E1 +1.627446000E3,5.695027340E1 +1.627690000E3,6.200547811E1 +1.627940000E3,5.895921781E1 +1.628278000E3,5.832121877E1 +1.628595000E3,5.727506493E1 +1.628914000E3,5.676841787E1 +1.629164000E3,5.904549933E1 +1.629453000E3,6.079247221E1 +1.629705000E3,5.978532207E1 +1.629973000E3,6.204876077E1 +1.630223000E3,6.278691878E1 +1.630527000E3,5.775584326E1 +1.630780000E3,5.715423799E1 +1.631076000E3,5.993810238E1 +1.631416000E3,5.945816984E1 +1.631690000E3,5.911038375E1 +1.631989000E3,6.401318161E1 +1.632251000E3,6.288325429E1 +1.632577000E3,6.142114348E1 +1.632857000E3,6.027735545E1 +1.633125000E3,6.058800698E1 +1.633410000E3,6.197295377E1 +1.633713000E3,5.649410931E1 +1.633983000E3,5.349526422E1 +1.634267000E3,5.160473432E1 +1.634550000E3,5.471426263E1 +1.634881000E3,5.381566790E1 +1.635145000E3,5.592472168E1 +1.635394000E3,5.502963456E1 +1.635636000E3,5.458091777E1 +1.635914000E3,5.361113418E1 +1.636211000E3,5.972112366E1 +1.636510000E3,6.134956919E1 +1.636770000E3,6.291498703E1 +1.637018000E3,6.051799303E1 +1.637272000E3,5.800319143E1 +1.637535000E3,6.099184952E1 +1.637791000E3,6.192072936E1 +1.638191000E3,5.592689657E1 +1.638462000E3,5.015193522E1 +1.638759000E3,5.662906295E1 +1.638997000E3,6.189212385E1 +1.639312000E3,5.656112303E1 +1.639618000E3,5.827187766E1 +1.639922000E3,5.894515280E1 +1.640188000E3,5.379936676E1 +1.640446000E3,5.498271927E1 +1.640705000E3,5.883708769E1 +1.641003000E3,5.515786146E1 +1.641329000E3,5.323855564E1 +1.641593000E3,5.000482182E1 +1.641876000E3,5.182077324E1 +1.642101000E3,5.319082569E1 +1.642344000E3,6.611850928E1 +1.642626000E3,5.190424983E1 +1.642867000E3,5.081734830E1 +1.643118000E3,5.711045841E1 +1.643458000E3,5.520016906E1 +1.643723000E3,5.247062228E1 +1.643997000E3,5.309157546E1 +1.644256000E3,5.339769460E1 +1.644621000E3,5.982216134E1 +1.644883000E3,5.915424673E1 +1.645133000E3,5.849263499E1 +1.645426000E3,5.826666974E1 +1.645723000E3,5.673329902E1 +1.645972000E3,5.580417722E1 +1.646244000E3,5.457004449E1 +1.646473000E3,5.835958867E1 +1.646716000E3,5.599398637E1 +1.646958000E3,5.928075116E1 +1.647232000E3,5.394053714E1 +1.647507000E3,5.853879118E1 +1.647858000E3,5.674494648E1 +1.648113000E3,5.640074652E1 +1.648414000E3,5.694867796E1 +1.648656000E3,5.573466688E1 +1.648962000E3,5.556104957E1 +1.649254000E3,5.770712773E1 +1.649548000E3,5.765349227E1 +1.649790000E3,5.583875333E1 +1.650054000E3,6.321152276E1 +1.650306000E3,5.966047080E1 +1.650600000E3,5.502015578E1 +1.650872000E3,5.066616477E1 +1.651172000E3,5.442335496E1 +1.651440000E3,5.956947456E1 +1.651736000E3,5.798320450E1 +1.651979000E3,5.739040713E1 +1.652228000E3,5.803662120E1 +1.652491000E3,6.146613872E1 +1.652750000E3,5.929116619E1 +1.653021000E3,5.936282359E1 +1.653288000E3,5.853226920E1 +1.653570000E3,5.954415072E1 +1.653872000E3,5.749576278E1 +1.654250000E3,5.567111200E1 +1.654518000E3,6.059415807E1 +1.654812000E3,5.855300274E1 +1.655081000E3,5.797601107E1 +1.655350000E3,6.029475669E1 +1.655647000E3,5.264118678E1 +1.655893000E3,5.715075800E1 +1.656153000E3,5.787679223E1 +1.656407000E3,6.038334743E1 +1.656655000E3,6.038245752E1 +1.656912000E3,5.475945603E1 +1.657171000E3,5.661674174E1 +1.657473000E3,5.618877186E1 +1.657717000E3,5.712918740E1 +1.657972000E3,5.834783502E1 +1.658283000E3,6.198115012E1 +1.658526000E3,5.639977894E1 +1.658788000E3,5.416850689E1 +1.659089000E3,5.679686188E1 +1.659335000E3,5.697270686E1 +1.659619000E3,5.371836804E1 +1.659873000E3,6.082252986E1 +1.660120000E3,6.285201132E1 +1.660416000E3,6.088574857E1 +1.660728000E3,6.109109391E1 +1.661004000E3,5.861240224E1 +1.661283000E3,6.123850168E1 +1.661519000E3,5.849447684E1 +1.661821000E3,5.472352136E1 +1.662065000E3,5.502625911E1 +1.662312000E3,5.606436387E1 +1.662565000E3,5.546236927E1 +1.662845000E3,6.075823181E1 +1.663075000E3,5.951357638E1 +1.663350000E3,5.956681026E1 +1.663575000E3,5.780116333E1 +1.663928000E3,6.184122024E1 +1.664178000E3,5.626291699E1 +1.664419000E3,5.635545931E1 +1.664671000E3,5.487242490E1 +1.664936000E3,5.392872477E1 +1.665237000E3,5.658170902E1 +1.665476000E3,5.449322435E1 +1.665752000E3,5.111063749E1 +1.665997000E3,5.288359358E1 +1.666249000E3,5.825102048E1 +1.666508000E3,6.087585373E1 +1.666750000E3,5.822210598E1 +1.667110000E3,6.320270923E1 +1.667355000E3,5.563170163E1 +1.667628000E3,5.240635194E1 +1.667875000E3,5.485055122E1 +1.668144000E3,5.590209292E1 +1.668402000E3,5.750031923E1 +1.668648000E3,5.301598344E1 +1.668896000E3,5.208077776E1 +1.669157000E3,5.024112467E1 +1.669414000E3,5.530220423E1 +1.669710000E3,5.585178295E1 +1.669955000E3,5.443268015E1 +1.670292000E3,5.292974908E1 +1.670566000E3,5.501741168E1 +1.670818000E3,5.190433464E1 +1.671077000E3,5.602388651E1 +1.671384000E3,5.384205522E1 +1.671688000E3,5.355394771E1 +1.671956000E3,4.896600257E1 +1.672212000E3,4.457728928E1 +1.672483000E3,5.407780485E1 +1.672726000E3,5.808535163E1 +1.672991000E3,5.497589856E1 +1.673269000E3,5.816061182E1 +1.673625000E3,5.457220472E1 +1.673896000E3,5.852786772E1 +1.674165000E3,5.615855966E1 +1.674439000E3,5.901141794E1 +1.674702000E3,5.821771493E1 +1.675040000E3,5.533746886E1 +1.675330000E3,5.469332456E1 +1.675631000E3,5.895976057E1 +1.675867000E3,5.565047570E1 +1.676161000E3,5.342216333E1 +1.676431000E3,5.339304237E1 +1.676716000E3,5.196130631E1 +1.677075000E3,5.500129023E1 +1.677346000E3,5.649474234E1 +1.677614000E3,5.620691351E1 +1.677867000E3,5.756400488E1 +1.678112000E3,5.571225073E1 +1.678362000E3,6.171466353E1 +1.678655000E3,5.523245256E1 +1.678909000E3,5.780473196E1 +1.679167000E3,5.918101801E1 +1.679536000E3,5.449831587E1 +1.679788000E3,5.278747036E1 +1.680072000E3,5.502423006E1 +1.680392000E3,5.603218813E1 +1.680667000E3,5.681691969E1 +1.680917000E3,5.574952817E1 +1.681227000E3,5.747793831E1 +1.681510000E3,5.831554727E1 +1.681811000E3,5.823344802E1 +1.682073000E3,5.677197169E1 +1.682402000E3,5.423243511E1 +1.682746000E3,5.568639423E1 +1.683007000E3,5.601571559E1 +1.683297000E3,5.788588795E1 +1.683563000E3,5.178162942E1 +1.683805000E3,5.244727762E1 +1.684102000E3,5.504021082E1 +1.684342000E3,5.312145782E1 +1.684637000E3,5.266466104E1 +1.684875000E3,5.430143327E1 +1.685171000E3,5.731848010E1 +1.685409000E3,5.314967575E1 +1.685703000E3,5.210480680E1 +1.685940000E3,5.447962472E1 +1.686242000E3,5.671930258E1 +1.686480000E3,5.298653153E1 +1.686837000E3,5.390672385E1 +1.687083000E3,5.256535993E1 +1.687387000E3,5.295433262E1 +1.687686000E3,4.693434793E1 +1.687930000E3,5.264001548E1 +1.688191000E3,4.696703102E1 +1.688514000E3,5.290693761E1 +1.688768000E3,5.572289252E1 +1.689025000E3,5.629476293E1 +1.689331000E3,5.221395629E1 +1.689585000E3,5.553268928E1 +1.689905000E3,5.392885939E1 +1.690136000E3,5.613018872E1 +1.690432000E3,5.323144022E1 +1.690690000E3,5.426457319E1 +1.690988000E3,5.869511223E1 +1.691244000E3,5.724931575E1 +1.691548000E3,5.702890727E1 +1.691819000E3,5.957894946E1 +1.692068000E3,5.833323285E1 +1.692367000E3,5.920896731E1 +1.692598000E3,5.809066040E1 +1.692847000E3,5.683194919E1 +1.693218000E3,5.880411413E1 +1.693536000E3,5.430005356E1 +1.693836000E3,5.347827494E1 +1.694082000E3,5.139526617E1 +1.694323000E3,6.486669482E1 +1.694607000E3,5.827670564E1 +1.694879000E3,5.749070135E1 +1.695112000E3,5.439297467E1 +1.695418000E3,5.591879208E1 +1.695720000E3,5.984156108E1 +1.695978000E3,5.763450389E1 +1.696238000E3,5.535113951E1 +1.696577000E3,5.468640858E1 +1.696840000E3,5.145216534E1 +1.697142000E3,5.633820526E1 +1.697434000E3,5.961813260E1 +1.697672000E3,5.761348305E1 +1.697970000E3,5.587832748E1 +1.698213000E3,5.615239979E1 +1.698514000E3,6.142159571E1 +1.698744000E3,5.868747140E1 +1.699038000E3,5.639074769E1 +1.699277000E3,5.843791784E1 +1.699602000E3,5.580904726E1 +1.699849000E3,5.188032815E1 +1.700148000E3,6.050592844E1 +1.700415000E3,5.851925341E1 +1.700742000E3,5.754370303E1 +1.700996000E3,5.792652906E1 +1.701265000E3,5.809754284E1 +1.701543000E3,5.435013872E1 +1.701827000E3,5.364293620E1 +1.702095000E3,5.742174876E1 +1.702342000E3,5.921232761E1 +1.702597000E3,5.246613397E1 +1.702852000E3,5.865178399E1 +1.703188000E3,6.209648540E1 +1.703456000E3,5.783126524E1 +1.703723000E3,6.129722089E1 +1.704021000E3,6.159059582E1 +1.704258000E3,6.290365934E1 +1.704500000E3,5.899658178E1 +1.704744000E3,5.570772177E1 +1.705020000E3,6.042975914E1 +1.705281000E3,6.063911519E1 +1.705578000E3,5.667741437E1 +1.705818000E3,5.616948640E1 +1.706065000E3,5.809228765E1 +1.706440000E3,6.194892333E1 +1.706707000E3,5.510896653E1 +1.706968000E3,5.648771637E1 +1.707226000E3,5.451026369E1 +1.707530000E3,5.655237570E1 +1.707813000E3,6.342687376E1 +1.708096000E3,5.687609223E1 +1.708345000E3,5.784030597E1 +1.708587000E3,5.696931166E1 +1.708832000E3,5.826055047E1 +1.709133000E3,6.171963981E1 +1.709444000E3,6.289993620E1 +1.709785000E3,6.196750111E1 +1.710095000E3,6.021872673E1 +1.710401000E3,5.493999514E1 +1.710645000E3,5.748920917E1 +1.710951000E3,5.990748875E1 +1.711204000E3,5.995493625E1 +1.711504000E3,5.608393688E1 +1.711807000E3,6.225697969E1 +1.712052000E3,6.005399346E1 +1.712297000E3,6.276583246E1 +1.712594000E3,6.409669700E1 +1.712952000E3,5.846223798E1 +1.713249000E3,6.222377893E1 +1.713511000E3,6.179119431E1 +1.713770000E3,6.687160955E1 +1.714020000E3,6.224215114E1 +1.714281000E3,6.460780580E1 +1.714608000E3,6.323149402E1 +1.714900000E3,5.890183616E1 +1.715139000E3,6.173404899E1 +1.715438000E3,6.193562982E1 +1.715674000E3,6.231645929E1 +1.715912000E3,5.798536661E1 +1.716293000E3,5.569607438E1 +1.716537000E3,6.131866955E1 +1.716790000E3,5.896584959E1 +1.717096000E3,5.693976131E1 +1.717346000E3,5.531403594E1 +1.717631000E3,5.794989861E1 +1.717933000E3,5.594899441E1 +1.718204000E3,5.601359132E1 +1.718501000E3,5.861037671E1 +1.718741000E3,6.432265266E1 +1.719043000E3,6.182586376E1 +1.719355000E3,6.076827417E1 +1.719645000E3,5.634225228E1 +1.719943000E3,5.935070169E1 +1.720188000E3,5.856877062E1 +1.720486000E3,5.761843709E1 +1.720741000E3,5.935030376E1 +1.720985000E3,5.413194972E1 +1.721289000E3,5.939733818E1 +1.721553000E3,5.617827250E1 +1.721847000E3,5.807085988E1 +1.722091000E3,5.877044817E1 +1.722445000E3,6.593854232E1 +1.722681000E3,6.027114564E1 +1.722973000E3,5.866411762E1 +1.723271000E3,5.588604319E1 +1.723508000E3,5.958751798E1 +1.723800000E3,6.077290351E1 +1.724039000E3,5.722905231E1 +1.724338000E3,5.619905124E1 +1.724576000E3,5.628809107E1 +1.724876000E3,5.560357878E1 +1.725168000E3,5.447509555E1 +1.725542000E3,5.278892866E1 +1.725841000E3,4.816211457E1 +1.726139000E3,4.622333411E1 +1.726399000E3,4.728231882E1 +1.726691000E3,5.101510224E1 +1.726947000E3,4.725933617E1 +1.727273000E3,5.333398449E1 +1.727569000E3,5.518583989E1 +1.727808000E3,5.719998093E1 +1.728061000E3,5.375072532E1 +1.728352000E3,5.631849408E1 +1.728644000E3,5.232994659E1 +1.729024000E3,5.045911420E1 +1.729295000E3,4.931808913E1 +1.729541000E3,4.866846016E1 +1.729788000E3,5.127644661E1 +1.730054000E3,4.769951033E1 +1.730296000E3,5.553885299E1 +1.730573000E3,5.629080236E1 +1.730816000E3,5.218818952E1 +1.731119000E3,5.112756333E1 +1.731379000E3,5.524890032E1 +1.731688000E3,5.530134621E1 +1.731949000E3,5.451831728E1 +1.732288000E3,5.380962689E1 +1.732589000E3,5.754684503E1 +1.732833000E3,5.184401682E1 +1.733102000E3,5.011373730E1 +1.733369000E3,5.541779655E1 +1.733647000E3,5.983699601E1 +1.733886000E3,6.131428317E1 +1.734163000E3,6.052345820E1 +1.734405000E3,5.852692054E1 +1.734659000E3,5.861191265E1 +1.734933000E3,5.957936529E1 +1.735219000E3,5.639739849E1 +1.735540000E3,5.207917019E1 +1.735832000E3,4.548490451E1 +1.736112000E3,5.219897691E1 +1.736384000E3,5.618314188E1 +1.736684000E3,5.720418785E1 +1.736946000E3,5.895068629E1 +1.737213000E3,5.652216932E1 +1.737468000E3,5.796687034E1 +1.737738000E3,5.591197017E1 +1.737996000E3,5.493985473E1 +1.738236000E3,5.752137274E1 +1.738586000E3,6.041563952E1 +1.738921000E3,6.199530447E1 +1.739167000E3,5.310800091E1 +1.739430000E3,5.600574849E1 +1.739683000E3,6.494981167E1 +1.739952000E3,6.157046745E1 +1.740293000E3,6.002681302E1 +1.740611000E3,5.943541790E1 +1.740910000E3,5.731619793E1 +1.741197000E3,5.885751119E1 +1.741508000E3,5.719237093E1 +1.741767000E3,5.958897825E1 +1.742034000E3,5.543499582E1 +1.742424000E3,5.632783570E1 +1.742688000E3,5.565042743E1 +1.742946000E3,5.622883854E1 +1.743204000E3,6.327777019E1 +1.743456000E3,5.663098185E1 +1.743721000E3,5.729384715E1 +1.743966000E3,6.200582057E1 +1.744273000E3,5.107652622E1 +1.744505000E3,5.491520459E1 +1.744752000E3,5.181266373E1 +1.745004000E3,5.014115745E1 +1.745297000E3,5.338585031E1 +1.745690000E3,5.654477286E1 +1.745966000E3,5.517036116E1 +1.746219000E3,5.200430375E1 +1.746475000E3,5.963355448E1 +1.746732000E3,5.854837006E1 +1.747002000E3,5.571277949E1 +1.747293000E3,5.825116458E1 +1.747522000E3,5.673248340E1 +1.747772000E3,5.683320783E1 +1.748035000E3,5.224053713E1 +1.748289000E3,5.713452273E1 +1.748568000E3,5.539076360E1 +1.748961000E3,6.015893340E1 +1.749211000E3,5.710921188E1 +1.749460000E3,6.114476082E1 +1.749715000E3,5.648052368E1 +1.749961000E3,5.897720288E1 +1.750207000E3,5.525435431E1 +1.750521000E3,5.447453139E1 +1.750765000E3,5.883968686E1 +1.751015000E3,5.450160052E1 +1.751290000E3,5.405183560E1 +1.751522000E3,5.501343440E1 +1.751848000E3,5.586635599E1 +1.752096000E3,5.631573217E1 +1.752372000E3,5.960964241E1 +1.752637000E3,5.320710483E1 +1.752941000E3,5.848434869E1 +1.753209000E3,5.619196315E1 +1.753510000E3,5.692291103E1 +1.753774000E3,5.505374149E1 +1.754051000E3,5.721759821E1 +1.754315000E3,5.539152446E1 +1.754625000E3,5.632890174E1 +1.754919000E3,5.918851802E1 +1.755262000E3,5.807294381E1 +1.755529000E3,5.748451885E1 +1.755827000E3,6.055251826E1 +1.756067000E3,6.208050524E1 +1.756367000E3,5.991655048E1 +1.756607000E3,6.073519941E1 +1.756900000E3,5.774998130E1 +1.757144000E3,5.751173009E1 +1.757417000E3,5.299288378E1 +1.757700000E3,5.913293772E1 +1.758005000E3,5.732040664E1 +1.758269000E3,6.221202462E1 +1.758585000E3,6.285457626E1 +1.758834000E3,5.870613535E1 +1.759137000E3,5.533279687E1 +1.759391000E3,5.194643865E1 +1.759644000E3,4.891449850E1 +1.759922000E3,4.784429271E1 +1.760236000E3,5.273391136E1 +1.760503000E3,5.475616990E1 +1.760758000E3,5.640096860E1 +1.761017000E3,5.329458627E1 +1.761282000E3,4.798672737E1 +1.761535000E3,5.532988346E1 +1.761794000E3,5.189579265E1 +1.762040000E3,5.068357941E1 +1.762299000E3,5.751972157E1 +1.762578000E3,5.430434207E1 +1.762831000E3,5.331943982E1 +1.763136000E3,5.699367350E1 +1.763409000E3,5.622858108E1 +1.763658000E3,5.631559008E1 +1.763910000E3,5.738562920E1 +1.764157000E3,6.030103345E1 +1.764400000E3,5.680309722E1 +1.764695000E3,5.703631315E1 +1.765017000E3,5.682945247E1 +1.765300000E3,5.317093897E1 +1.765575000E3,5.620624417E1 +1.765832000E3,5.550075987E1 +1.766100000E3,6.321349509E1 +1.766371000E3,5.938123887E1 +1.766635000E3,6.289622107E1 +1.766898000E3,5.890101653E1 +1.767155000E3,5.928826732E1 +1.767399000E3,5.872890625E1 +1.767638000E3,6.184345237E1 +1.767877000E3,6.131073260E1 +1.768211000E3,6.085041665E1 +1.768587000E3,6.015418617E1 +1.768835000E3,5.648473324E1 +1.769119000E3,5.746059957E1 +1.769380000E3,5.608054299E1 +1.769692000E3,6.542458852E1 +1.769998000E3,6.121618195E1 +1.770281000E3,5.842785672E1 +1.770536000E3,5.763776595E1 +1.770858000E3,5.630873419E1 +1.771133000E3,5.339704361E1 +1.771378000E3,5.463873835E1 +1.771723000E3,5.659388596E1 +1.772050000E3,5.449836230E1 +1.772294000E3,5.154616724E1 +1.772537000E3,5.082603581E1 +1.772795000E3,5.334183734E1 +1.773055000E3,5.096094928E1 +1.773365000E3,5.171061147E1 +1.773612000E3,5.477281719E1 +1.773878000E3,5.060909259E1 +1.774171000E3,5.285294921E1 +1.774452000E3,5.393730531E1 +1.774725000E3,5.333400186E1 +1.774980000E3,5.285705613E1 +1.775346000E3,5.719168586E1 +1.775663000E3,5.642193929E1 +1.775908000E3,4.659059970E1 +1.776150000E3,5.521168672E1 +1.776388000E3,5.693500665E1 +1.776630000E3,6.030483668E1 +1.776910000E3,5.944095915E1 +1.777153000E3,5.708951289E1 +1.777414000E3,5.291982189E1 +1.777666000E3,5.900042024E1 +1.777935000E3,6.010949926E1 +1.778229000E3,6.009411695E1 +1.778514000E3,5.804757181E1 +1.778758000E3,5.922775473E1 +1.779011000E3,6.063545461E1 +1.779277000E3,5.950242674E1 +1.779575000E3,6.057891518E1 +1.779819000E3,6.050018223E1 +1.780115000E3,5.965583098E1 +1.780361000E3,5.651792502E1 +1.780660000E3,5.814099422E1 +1.780904000E3,5.340077797E1 +1.781203000E3,5.734973286E1 +1.781481000E3,5.846278011E1 +1.781805000E3,5.369751607E1 +1.782048000E3,5.229063054E1 +1.782299000E3,5.345996994E1 +1.782583000E3,5.724353788E1 +1.782883000E3,5.610772411E1 +1.783181000E3,5.272586700E1 +1.783423000E3,5.272075137E1 +1.783692000E3,5.495532717E1 +1.783945000E3,5.594785882E1 +1.784202000E3,5.914935612E1 +1.784483000E3,6.427791570E1 +1.784735000E3,6.185652247E1 +1.785051000E3,6.178338943E1 +1.785352000E3,6.304285312E1 +1.785598000E3,5.699176354E1 +1.785897000E3,5.705567192E1 +1.786190000E3,5.975757470E1 +1.786467000E3,6.092866408E1 +1.786714000E3,5.771726615E1 +1.786984000E3,5.434727511E1 +1.787232000E3,5.250796794E1 +1.787486000E3,5.668884634E1 +1.787813000E3,5.600600547E1 +1.788061000E3,5.162213387E1 +1.788391000E3,5.782497792E1 +1.788636000E3,5.900804565E1 +1.788935000E3,6.056317474E1 +1.789175000E3,5.749029459E1 +1.789469000E3,6.053654612E1 +1.789714000E3,5.841478287E1 +1.789988000E3,5.700130118E1 +1.790219000E3,5.562837186E1 +1.790509000E3,5.430369658E1 +1.790806000E3,5.586895515E1 +1.791048000E3,5.809725956E1 +1.791409000E3,5.552827992E1 +1.791650000E3,5.534472171E1 +1.791981000E3,5.671474363E1 +1.792227000E3,5.716453332E1 +1.792522000E3,5.844249975E1 +1.792847000E3,5.961186667E1 +1.793109000E3,5.794833541E1 +1.793437000E3,5.832360597E1 +1.793698000E3,5.996001578E1 +1.793970000E3,5.849924827E1 +1.794223000E3,5.823551411E1 +1.794488000E3,5.480450178E1 +1.794819000E3,5.715609034E1 +1.795083000E3,5.418083703E1 +1.795329000E3,5.529883425E1 +1.795587000E3,5.729455769E1 +1.795853000E3,5.358946536E1 +1.796083000E3,5.534684059E1 +1.796374000E3,5.693696454E1 +1.796630000E3,5.642610016E1 +1.796927000E3,5.692548294E1 +1.797194000E3,5.931602223E1 +1.797469000E3,5.877569790E1 +1.797716000E3,5.527135197E1 +1.798053000E3,5.904674814E1 +1.798358000E3,5.655039196E1 +1.798612000E3,5.796779928E1 +1.798921000E3,5.499199210E1 +1.799185000E3,5.693837926E1 +1.799465000E3,6.235855457E1 +1.799695000E3,6.271612813E1 +1.799964000E3,6.118271582E1 +1.800233000E3,6.171552449E1 +1.800562000E3,6.293258336E1 +1.800818000E3,5.927940855E1 +1.801077000E3,5.836879001E1 +1.801406000E3,6.182854437E1 +1.801650000E3,5.918527405E1 +1.801894000E3,6.352260837E1 +1.802163000E3,6.142940723E1 +1.802385000E3,5.867772092E1 +1.802631000E3,5.916688243E1 +1.802927000E3,5.855222781E1 +1.803228000E3,6.125789004E1 +1.803533000E3,5.839377949E1 +1.803816000E3,5.705167204E1 +1.804057000E3,5.641730344E1 +1.804362000E3,6.771092582E1 +1.804585000E3,6.036461449E1 +1.804835000E3,6.742095194E1 +1.805132000E3,6.133151855E1 +1.805443000E3,6.658554202E1 +1.805718000E3,7.095511769E1 +1.806003000E3,7.330553664E1 +1.806290000E3,6.732809523E1 +1.806566000E3,6.106403544E1 +1.806844000E3,5.830930506E1 +1.807085000E3,6.610455401E1 +1.807442000E3,5.944325189E1 +1.807800000E3,5.667454347E1 +1.808044000E3,5.560521877E1 +1.808299000E3,5.488377812E1 +1.808542000E3,5.279721650E1 +1.808789000E3,4.834692654E1 +1.809029000E3,4.661669368E1 +1.809276000E3,5.501186804E1 +1.809526000E3,5.384830085E1 +1.809820000E3,5.526588307E1 +1.810084000E3,5.900458249E1 +1.810393000E3,5.557146256E1 +1.810647000E3,5.355619280E1 +1.811023000E3,5.627924000E1 +1.811283000E3,5.384503050E1 +1.811527000E3,5.309622401E1 +1.811816000E3,5.228523776E1 +1.812070000E3,5.317657142E1 +1.812328000E3,5.813846570E1 +1.812583000E3,5.621088360E1 +1.812927000E3,5.646965227E1 +1.813191000E3,5.322001188E1 +1.813436000E3,5.451886743E1 +1.813748000E3,5.558621720E1 +1.814006000E3,5.673920724E1 +1.814328000E3,5.582855401E1 +1.814591000E3,6.044196407E1 +1.814848000E3,5.769208427E1 +1.815109000E3,6.206015086E1 +1.815391000E3,5.918173335E1 +1.815660000E3,5.779702061E1 +1.815927000E3,6.516398742E1 +1.816218000E3,5.927869783E1 +1.816546000E3,6.320256740E1 +1.816802000E3,6.296743684E1 +1.817051000E3,5.869001212E1 +1.817329000E3,5.985536664E1 +1.817620000E3,5.435607380E1 +1.817905000E3,5.721703373E1 +1.818148000E3,6.314389823E1 +1.818376000E3,6.116752308E1 +1.818622000E3,5.773611736E1 +1.818863000E3,5.892899245E1 +1.819138000E3,5.791411351E1 +1.819457000E3,6.283307798E1 +1.819719000E3,5.805008540E1 +1.819967000E3,6.383011196E1 +1.820266000E3,5.915938870E1 +1.820515000E3,5.795811325E1 +1.820871000E3,5.730398564E1 +1.821113000E3,5.907223014E1 +1.821388000E3,5.566469845E1 +1.821612000E3,5.223652040E1 +1.821858000E3,5.461868826E1 +1.822118000E3,5.731142265E1 +1.822388000E3,5.743609212E1 +1.822672000E3,6.147918645E1 +1.822919000E3,6.109678537E1 +1.823167000E3,5.654516230E1 +1.823464000E3,6.010058675E1 +1.823716000E3,6.101649690E1 +1.824046000E3,5.741898993E1 +1.824372000E3,5.654969113E1 +1.824629000E3,5.489877253E1 +1.824894000E3,6.410593751E1 +1.825142000E3,5.923267903E1 +1.825399000E3,5.977300321E1 +1.825683000E3,5.945891570E1 +1.825907000E3,5.799474745E1 +1.826162000E3,5.485933719E1 +1.826447000E3,5.848818620E1 +1.826697000E3,5.937282663E1 +1.826944000E3,5.473647239E1 +1.827319000E3,5.611635619E1 +1.827649000E3,5.704234375E1 +1.827909000E3,5.174683398E1 +1.828172000E3,5.243070089E1 +1.828457000E3,5.835398328E1 +1.828710000E3,6.579711207E1 +1.828969000E3,6.063158540E1 +1.829218000E3,5.379307224E1 +1.829474000E3,5.791005982E1 +1.829779000E3,5.908028356E1 +1.830025000E3,5.476368407E1 +1.830307000E3,5.608145667E1 +1.830627000E3,5.417323034E1 +1.830843000E3,5.295530865E1 +1.831087000E3,5.335160491E1 +1.831385000E3,5.274441298E1 +1.831622000E3,5.307477504E1 +1.831918000E3,5.606159985E1 +1.832155000E3,6.009472302E1 +1.832471000E3,5.380117674E1 +1.832766000E3,5.382200579E1 +1.833012000E3,5.176006230E1 +1.833256000E3,5.956343573E1 +1.833577000E3,5.545935306E1 +1.833826000E3,5.528541848E1 +1.834083000E3,5.436381252E1 +1.834373000E3,5.684307553E1 +1.834669000E3,5.352399464E1 +1.834910000E3,5.651184236E1 +1.835208000E3,5.432875840E1 +1.835453000E3,5.442576527E1 +1.835752000E3,5.643309342E1 +1.836022000E3,5.781174029E1 +1.836293000E3,6.110602518E1 +1.836557000E3,5.591856301E1 +1.836932000E3,5.423752303E1 +1.837200000E3,5.716598850E1 +1.837455000E3,5.511743414E1 +1.837716000E3,5.819026063E1 +1.837988000E3,5.728773522E1 +1.838236000E3,5.959151016E1 +1.838540000E3,5.810767345E1 +1.838799000E3,5.779128856E1 +1.839096000E3,6.092094761E1 +1.839361000E3,5.957871329E1 +1.839608000E3,5.838702884E1 +1.839856000E3,5.927631822E1 +1.840242000E3,5.748386760E1 +1.840516000E3,5.957609475E1 +1.840759000E3,5.688693666E1 +1.841054000E3,5.883374773E1 +1.841320000E3,5.769470339E1 +1.841597000E3,5.894509733E1 +1.841885000E3,6.032854908E1 +1.842190000E3,5.891601570E1 +1.842444000E3,5.957860612E1 +1.842691000E3,5.968229576E1 +1.842933000E3,5.829247522E1 +1.843258000E3,6.183086549E1 +1.843539000E3,6.077794792E1 +1.843765000E3,5.928253866E1 +1.844002000E3,5.782805396E1 +1.844301000E3,5.975447959E1 +1.844589000E3,6.108169982E1 +1.844825000E3,5.915565503E1 +1.845116000E3,5.981302437E1 +1.845363000E3,6.019248645E1 +1.845636000E3,6.014223773E1 +1.845861000E3,6.160258605E1 +1.846139000E3,6.002388007E1 +1.846447000E3,6.004612452E1 +1.846706000E3,5.932487324E1 +1.846979000E3,5.718424575E1 +1.847284000E3,5.712987240E1 +1.847586000E3,5.557624595E1 +1.847888000E3,5.603981815E1 +1.848146000E3,5.769591687E1 +1.848418000E3,5.526085696E1 +1.848706000E3,5.815102401E1 +1.848972000E3,5.884177354E1 +1.849226000E3,5.853138751E1 +1.849515000E3,6.156208919E1 +1.849746000E3,6.064923427E1 +1.850008000E3,6.590305387E1 +1.850338000E3,5.853444981E1 +1.850640000E3,5.717447935E1 +1.850942000E3,5.680568615E1 +1.851242000E3,5.928468331E1 +1.851504000E3,5.798449444E1 +1.851757000E3,5.802619768E1 +1.852033000E3,5.998338312E1 +1.852296000E3,5.683616594E1 +1.852550000E3,5.692327884E1 +1.852886000E3,5.878610583E1 +1.853162000E3,5.538467470E1 +1.853432000E3,5.437085520E1 +1.853738000E3,5.469765317E1 +1.854038000E3,5.790268038E1 +1.854297000E3,5.836787866E1 +1.854582000E3,6.160807622E1 +1.854881000E3,5.878613196E1 +1.855158000E3,6.200103199E1 +1.855387000E3,6.087479870E1 +1.855688000E3,6.028304140E1 +1.855930000E3,6.159527875E1 +1.856226000E3,6.082174354E1 +1.856487000E3,5.932314061E1 +1.856744000E3,5.976570730E1 +1.857001000E3,5.473753247E1 +1.857299000E3,5.954612483E1 +1.857556000E3,6.052388497E1 +1.857849000E3,5.848282940E1 +1.858086000E3,5.879664566E1 +1.858384000E3,5.864589973E1 +1.858677000E3,5.659242719E1 +1.858917000E3,5.683870091E1 +1.859195000E3,5.582498919E1 +1.859427000E3,6.011873423E1 +1.859676000E3,5.796702396E1 +1.859911000E3,5.928400715E1 +1.860149000E3,5.826876733E1 +1.860396000E3,6.038481253E1 +1.860680000E3,6.030085568E1 +1.860944000E3,5.890166619E1 +1.861209000E3,6.654379171E1 +1.861519000E3,6.016187265E1 +1.861755000E3,6.139297542E1 +1.862049000E3,6.289106669E1 +1.862388000E3,5.872946965E1 +1.862675000E3,5.800836625E1 +1.862993000E3,5.701819685E1 +1.863248000E3,5.488359846E1 +1.863519000E3,5.747446133E1 +1.863768000E3,5.996388232E1 +1.864087000E3,5.686047813E1 +1.864334000E3,5.935760915E1 +1.864635000E3,6.438349972E1 +1.864894000E3,6.008599590E1 +1.865205000E3,5.995474236E1 +1.865502000E3,6.596906108E1 +1.865837000E3,6.091064347E1 +1.866114000E3,5.885056970E1 +1.866411000E3,6.474486832E1 +1.866666000E3,5.888758286E1 +1.866964000E3,6.138447683E1 +1.867211000E3,6.032596684E1 +1.867482000E3,5.848476935E1 +1.867736000E3,5.631330849E1 +1.867989000E3,5.927138373E1 +1.868246000E3,5.817171672E1 +1.868499000E3,5.358065381E1 +1.868763000E3,5.500264039E1 +1.869129000E3,5.663946315E1 +1.869384000E3,5.601392416E1 +1.869636000E3,5.640732154E1 +1.869947000E3,5.320213962E1 +1.870207000E3,4.907811811E1 +1.870470000E3,5.784153600E1 +1.870743000E3,5.988355074E1 +1.871011000E3,5.973830135E1 +1.871253000E3,5.769679044E1 +1.871519000E3,5.395770126E1 +1.871765000E3,5.751088186E1 +1.872011000E3,5.342275719E1 +1.872301000E3,5.638616310E1 +1.872563000E3,5.124369984E1 +1.872821000E3,5.357036185E1 +1.873129000E3,5.529809524E1 +1.873386000E3,5.442720524E1 +1.873650000E3,5.306298792E1 +1.873937000E3,5.703507672E1 +1.874184000E3,5.835246426E1 +1.874444000E3,5.638184247E1 +1.874707000E3,5.201779537E1 +1.874972000E3,5.217149520E1 +1.875244000E3,5.757612416E1 +1.875577000E3,5.387788750E1 +1.875865000E3,5.607108884E1 +1.876149000E3,5.692352283E1 +1.876407000E3,5.577296536E1 +1.876687000E3,5.259836493E1 +1.876982000E3,5.467571766E1 +1.877215000E3,5.256317748E1 +1.877521000E3,5.522593862E1 +1.877775000E3,5.432669245E1 +1.878036000E3,5.734031668E1 +1.878314000E3,6.027566119E1 +1.878587000E3,5.567003578E1 +1.878912000E3,5.307720644E1 +1.879176000E3,5.659939353E1 +1.879425000E3,5.110556861E1 +1.879723000E3,5.673190580E1 +1.879969000E3,5.437112204E1 +1.880274000E3,5.433297742E1 +1.880576000E3,5.585075865E1 +1.880875000E3,5.657006430E1 +1.881117000E3,5.701623858E1 +1.881424000E3,5.749679466E1 +1.881673000E3,5.623079196E1 +1.881986000E3,5.545187468E1 +1.882329000E3,5.781610131E1 +1.882611000E3,5.432916720E1 +1.882882000E3,4.940287270E1 +1.883127000E3,5.866223377E1 +1.883391000E3,5.654564177E1 +1.883644000E3,5.888782218E1 +1.883889000E3,5.586307703E1 +1.884148000E3,5.930725555E1 +1.884413000E3,5.963840788E1 +1.884660000E3,5.928611951E1 +1.884926000E3,5.621968819E1 +1.885181000E3,5.811455305E1 +1.885457000E3,5.585646129E1 +1.885714000E3,5.989591718E1 +1.885968000E3,6.058402104E1 +1.886267000E3,5.972100226E1 +1.886517000E3,6.220704457E1 +1.886832000E3,6.037773435E1 +1.887106000E3,6.039308032E1 +1.887385000E3,6.223647696E1 +1.887617000E3,5.854088114E1 +1.887876000E3,6.248517888E1 +1.888128000E3,6.222318884E1 +1.888437000E3,6.070320114E1 +1.888777000E3,5.817372188E1 +1.889076000E3,5.382250608E1 +1.889369000E3,7.004593531E1 +1.889616000E3,6.094415751E1 +1.889913000E3,5.455584628E1 +1.890163000E3,5.387250795E1 +1.890418000E3,5.219742496E1 +1.890714000E3,5.070715955E1 +1.890961000E3,5.362651533E1 +1.891207000E3,5.046817004E1 +1.891453000E3,5.129339201E1 +1.891764000E3,4.856730286E1 +1.892053000E3,5.220705734E1 +1.892321000E3,5.401068171E1 +1.892582000E3,5.109746146E1 +1.892834000E3,5.412675897E1 +1.893090000E3,5.347014573E1 +1.893340000E3,5.092720593E1 +1.893620000E3,5.341316175E1 +1.893886000E3,4.870918930E1 +1.894142000E3,4.929590175E1 +1.894389000E3,4.686294330E1 +1.894692000E3,5.100486031E1 +1.894995000E3,5.087478993E1 +1.895328000E3,4.940372977E1 +1.895606000E3,5.362468443E1 +1.895919000E3,5.608826750E1 +1.896241000E3,5.628756413E1 +1.896497000E3,5.817843169E1 +1.896749000E3,5.809119715E1 +1.897054000E3,5.469613872E1 +1.897287000E3,5.437807476E1 +1.897582000E3,5.794761863E1 +1.897897000E3,6.027023965E1 +1.898145000E3,5.913564460E1 +1.898511000E3,5.510014788E1 +1.898752000E3,5.499817732E1 +1.898999000E3,5.569220222E1 +1.899294000E3,5.368447548E1 +1.899547000E3,5.912109227E1 +1.899841000E3,6.076259223E1 +1.900104000E3,6.153129043E1 +1.900349000E3,5.679462536E1 +1.900634000E3,5.721135074E1 +1.900927000E3,5.674745728E1 +1.901166000E3,5.556227882E1 +1.901462000E3,4.994603734E1 +1.901841000E3,5.122656475E1 +1.902183000E3,5.127903645E1 +1.902436000E3,5.042064547E1 +1.902695000E3,5.425673681E1 +1.902998000E3,5.484388956E1 +1.903228000E3,5.322356297E1 +1.903483000E3,5.161093724E1 +1.903730000E3,5.302125687E1 +1.904019000E3,5.241958307E1 +1.904307000E3,5.116604316E1 +1.904614000E3,5.319513233E1 +1.904991000E3,5.530482451E1 +1.905243000E3,5.829713614E1 +1.905528000E3,4.891404960E1 +1.905774000E3,5.408250868E1 +1.906083000E3,5.272747143E1 +1.906381000E3,5.216068921E1 +1.906624000E3,5.292203291E1 +1.906885000E3,5.243548019E1 +1.907149000E3,4.981562618E1 +1.907448000E3,5.500279348E1 +1.907742000E3,5.481190601E1 +1.907999000E3,5.369800103E1 +1.908315000E3,6.390197571E1 +1.908579000E3,6.517990141E1 +1.908825000E3,5.822949910E1 +1.909064000E3,5.655728640E1 +1.909356000E3,5.292186662E1 +1.909600000E3,5.069372058E1 +1.909895000E3,5.368100654E1 +1.910138000E3,5.616508462E1 +1.910432000E3,6.285923815E1 +1.910670000E3,6.254266196E1 +1.910979000E3,5.628599605E1 +1.911260000E3,5.616383984E1 +1.911482000E3,5.074231882E1 +1.911728000E3,5.398858859E1 +1.911977000E3,5.585565083E1 +1.912237000E3,5.777112626E1 +1.912532000E3,6.036032129E1 +1.912783000E3,6.077032608E1 +1.913052000E3,5.839282786E1 +1.913316000E3,5.397912726E1 +1.913575000E3,5.582771928E1 +1.913848000E3,5.579334158E1 +1.914143000E3,5.778281485E1 +1.914450000E3,5.783459906E1 +1.914713000E3,6.199387267E1 +1.914943000E3,6.173706737E1 +1.915185000E3,5.621060236E1 +1.915433000E3,5.563784893E1 +1.915692000E3,5.470990272E1 +1.915951000E3,5.469960060E1 +1.916217000E3,6.171536544E1 +1.916470000E3,5.862130066E1 +1.916777000E3,5.839467924E1 +1.917028000E3,5.552209731E1 +1.917324000E3,5.763067987E1 +1.917687000E3,5.981653815E1 +1.917967000E3,5.790518789E1 +1.918210000E3,5.220287871E1 +1.918457000E3,5.707286116E1 +1.918759000E3,5.657529642E1 +1.918997000E3,6.000130629E1 +1.919241000E3,5.708419446E1 +1.919496000E3,5.749223221E1 +1.919768000E3,5.843781753E1 +1.920074000E3,5.671929683E1 +1.920373000E3,5.881070992E1 +1.920621000E3,5.603223824E1 +1.920956000E3,6.053511488E1 +1.921216000E3,5.525745837E1 +1.921476000E3,6.186721324E1 +1.921723000E3,6.214292360E1 +1.922025000E3,5.857206109E1 +1.922320000E3,5.934438900E1 +1.922561000E3,6.077867207E1 +1.922860000E3,5.578255978E1 +1.923099000E3,5.723807446E1 +1.923347000E3,5.785786452E1 +1.923636000E3,6.037753633E1 +1.923892000E3,6.106459696E1 +1.924223000E3,5.873119773E1 +1.924511000E3,5.862235861E1 +1.924814000E3,5.732521131E1 +1.925070000E3,5.161553090E1 +1.925373000E3,5.243351685E1 +1.925626000E3,5.041805469E1 +1.925919000E3,5.543714980E1 +1.926175000E3,5.338657816E1 +1.926425000E3,5.616854022E1 +1.926695000E3,5.699328540E1 +1.926965000E3,5.787312270E1 +1.927305000E3,5.558473925E1 +1.927614000E3,5.927685087E1 +1.927880000E3,6.254706193E1 +1.928125000E3,6.079427969E1 +1.928390000E3,5.412440784E1 +1.928634000E3,5.441834540E1 +1.928928000E3,5.220486428E1 +1.929215000E3,5.210908233E1 +1.929515000E3,5.352367419E1 +1.929766000E3,5.356350702E1 +1.930022000E3,5.184851991E1 +1.930322000E3,5.311742835E1 +1.930607000E3,5.453786592E1 +1.930870000E3,5.814140937E1 +1.931155000E3,5.779656646E1 +1.931440000E3,5.488757891E1 +1.931727000E3,5.385182390E1 +1.931981000E3,5.705491580E1 +1.932229000E3,5.576165296E1 +1.932491000E3,5.781333383E1 +1.932730000E3,5.616780300E1 +1.932971000E3,5.400230043E1 +1.933232000E3,5.518627884E1 +1.933510000E3,5.211300688E1 +1.933795000E3,5.292820587E1 +1.934127000E3,5.382097927E1 +1.934390000E3,6.102840439E1 +1.934671000E3,5.486275546E1 +1.934948000E3,5.206103103E1 +1.935198000E3,5.739150099E1 +1.935506000E3,5.310844778E1 +1.935756000E3,5.392681604E1 +1.936008000E3,5.250003264E1 +1.936256000E3,5.801399662E1 +1.936524000E3,5.696032820E1 +1.936785000E3,5.414492013E1 +1.937032000E3,5.536982174E1 +1.937391000E3,5.750979970E1 +1.937677000E3,5.370086514E1 +1.937972000E3,5.359409099E1 +1.938241000E3,4.663692517E1 +1.938508000E3,4.740501122E1 +1.938772000E3,4.812116539E1 +1.939051000E3,4.940260018E1 +1.939311000E3,5.211533825E1 +1.939553000E3,5.351181789E1 +1.939796000E3,5.597808269E1 +1.940081000E3,5.841474518E1 +1.940347000E3,5.900966915E1 +1.940680000E3,5.844032848E1 +1.940932000E3,6.047778057E1 +1.941187000E3,6.179458512E1 +1.941488000E3,5.569784051E1 +1.941730000E3,5.535681081E1 +1.941971000E3,5.409739450E1 +1.942227000E3,5.551927029E1 +1.942555000E3,5.259381649E1 +1.942855000E3,5.090743186E1 +1.943101000E3,5.330610416E1 +1.943383000E3,5.722147303E1 +1.943610000E3,5.564867598E1 +1.944013000E3,5.456395907E1 +1.944265000E3,5.442943523E1 +1.944557000E3,5.982581487E1 +1.944820000E3,5.751114261E1 +1.945081000E3,5.998630171E1 +1.945333000E3,5.908382499E1 +1.945646000E3,5.828329647E1 +1.945951000E3,5.602282904E1 +1.946199000E3,6.197108249E1 +1.946496000E3,5.533258874E1 +1.946770000E3,5.704060455E1 +1.947126000E3,5.457797110E1 +1.947363000E3,5.430717613E1 +1.947637000E3,5.940687974E1 +1.947953000E3,5.436076271E1 +1.948235000E3,5.660912008E1 +1.948550000E3,5.504399315E1 +1.948861000E3,5.464999644E1 +1.949122000E3,5.565806372E1 +1.949384000E3,5.190569146E1 +1.949646000E3,5.153937000E1 +1.949972000E3,5.628803963E1 +1.950248000E3,5.966716422E1 +1.950577000E3,5.820503815E1 +1.950822000E3,5.652058726E1 +1.951118000E3,5.802645793E1 +1.951349000E3,5.727916959E1 +1.951597000E3,5.784165576E1 +1.951900000E3,5.999225852E1 +1.952197000E3,6.048891831E1 +1.952433000E3,5.821794698E1 +1.952728000E3,5.416701806E1 +1.952964000E3,5.183738883E1 +1.953295000E3,5.384161890E1 +1.953675000E3,5.430376660E1 +1.953907000E3,5.257088063E1 +1.954151000E3,5.392186903E1 +1.954431000E3,6.167467738E1 +1.954678000E3,5.958790115E1 +1.954923000E3,5.822018477E1 +1.955185000E3,5.808448347E1 +1.955447000E3,5.733347749E1 +1.955703000E3,6.261390980E1 +1.956005000E3,5.829281758E1 +1.956246000E3,5.949056653E1 +1.956541000E3,5.839747914E1 +1.956810000E3,5.770882066E1 +1.957120000E3,5.690637302E1 +1.957421000E3,5.796705847E1 +1.957668000E3,5.867770180E1 +1.957936000E3,5.696585443E1 +1.958216000E3,5.738908049E1 +1.958463000E3,5.842272770E1 +1.958721000E3,5.966072568E1 +1.959033000E3,6.340725612E1 +1.959281000E3,6.193544465E1 +1.959566000E3,5.927164536E1 +1.959888000E3,6.146900670E1 +1.960249000E3,6.270186363E1 +1.960512000E3,5.695216686E1 +1.960779000E3,5.725758836E1 +1.961040000E3,5.788439963E1 +1.961303000E3,6.286977927E1 +1.961557000E3,6.361469653E1 +1.961802000E3,6.277422462E1 +1.962060000E3,6.032704022E1 +1.962310000E3,5.600516510E1 +1.962586000E3,6.188879617E1 +1.962805000E3,6.271522018E1 +1.963107000E3,6.025198847E1 +1.963453000E3,6.001529679E1 +1.963728000E3,5.375240125E1 +1.964036000E3,5.055228276E1 +1.964331000E3,5.257092943E1 +1.964568000E3,5.708661900E1 +1.964868000E3,5.629448239E1 +1.965178000E3,5.425890416E1 +1.965431000E3,5.575014937E1 +1.965679000E3,5.801461965E1 +1.965931000E3,5.400244473E1 +1.966191000E3,5.474887871E1 +1.966525000E3,5.196538635E1 +1.966783000E3,5.536524974E1 +1.967040000E3,5.974878933E1 +1.967338000E3,6.200932986E1 +1.967644000E3,6.295299888E1 +1.967909000E3,6.272635154E1 +1.968153000E3,5.902465660E1 +1.968474000E3,5.897159976E1 +1.968773000E3,5.506910037E1 +1.969014000E3,5.622897524E1 +1.969254000E3,5.457019516E1 +1.969505000E3,5.648049168E1 +1.969892000E3,5.656883155E1 +1.970152000E3,5.598423772E1 +1.970446000E3,5.186768597E1 +1.970726000E3,5.526177698E1 +1.971020000E3,5.810907246E1 +1.971304000E3,5.262875480E1 +1.971613000E3,5.141696402E1 +1.971915000E3,5.298264424E1 +1.972196000E3,5.641801556E1 +1.972483000E3,5.228737642E1 +1.972725000E3,5.649656740E1 +1.973036000E3,5.867645632E1 +1.973323000E3,5.679238187E1 +1.973633000E3,5.959682402E1 +1.973935000E3,5.617109756E1 +1.974236000E3,5.473085666E1 +1.974547000E3,5.589564412E1 +1.974836000E3,5.691193712E1 +1.975136000E3,5.808545953E1 +1.975385000E3,5.922478363E1 +1.975631000E3,5.707996013E1 +1.975881000E3,5.820923707E1 +1.976194000E3,5.897957095E1 +1.976453000E3,6.019944728E1 +1.976814000E3,6.472960186E1 +1.977076000E3,6.312075290E1 +1.977356000E3,5.886370461E1 +1.977618000E3,5.750754913E1 +1.977917000E3,5.531180501E1 +1.978189000E3,5.815410032E1 +1.978463000E3,5.735965971E1 +1.978732000E3,5.593071322E1 +1.978999000E3,5.835041964E1 +1.979245000E3,5.646810288E1 +1.979493000E3,5.392299875E1 +1.979902000E3,5.430590311E1 +1.980142000E3,5.447583546E1 +1.980384000E3,5.260389735E1 +1.980632000E3,5.537561423E1 +1.980873000E3,5.836960119E1 +1.981120000E3,5.425821286E1 +1.981389000E3,5.153336720E1 +1.981618000E3,5.420085973E1 +1.981915000E3,5.457985954E1 +1.982165000E3,5.637026749E1 +1.982404000E3,6.009656118E1 +1.982718000E3,5.903298531E1 +1.983029000E3,5.665152425E1 +1.983296000E3,5.778918758E1 +1.983538000E3,5.444374512E1 +1.983786000E3,5.619088618E1 +1.984047000E3,6.088482249E1 +1.984304000E3,5.678390940E1 +1.984575000E3,5.873820942E1 +1.984842000E3,6.004736340E1 +1.985142000E3,6.191465398E1 +1.985405000E3,6.154032648E1 +1.985653000E3,5.967034113E1 +1.985913000E3,5.855925349E1 +1.986211000E3,5.529356341E1 +1.986557000E3,5.823190054E1 +1.986847000E3,5.749679599E1 +1.987098000E3,5.855123449E1 +1.987369000E3,5.999203293E1 +1.987610000E3,6.139424716E1 +1.987876000E3,5.730078222E1 +1.988126000E3,5.649537684E1 +1.988425000E3,5.872458305E1 +1.988727000E3,5.704322852E1 +1.989024000E3,6.264447151E1 +1.989326000E3,5.763604303E1 +1.989641000E3,5.657919006E1 +1.989961000E3,5.706004491E1 +1.990255000E3,6.115159729E1 +1.990571000E3,5.721964371E1 +1.990829000E3,5.780420781E1 +1.991088000E3,5.782228640E1 +1.991353000E3,5.791642518E1 +1.991611000E3,5.820065680E1 +1.991935000E3,5.675756460E1 +1.992174000E3,5.720433643E1 +1.992482000E3,5.907701380E1 +1.992770000E3,5.791335620E1 +1.993107000E3,5.504589678E1 +1.993369000E3,6.117578252E1 +1.993619000E3,5.902046786E1 +1.993912000E3,6.024153080E1 +1.994216000E3,6.061721402E1 +1.994464000E3,6.185610038E1 +1.994715000E3,5.902440055E1 +1.995005000E3,6.112374185E1 +1.995249000E3,5.664710018E1 +1.995551000E3,5.841351492E1 +1.995787000E3,5.961393992E1 +1.996119000E3,5.614463215E1 +1.996387000E3,5.528223904E1 +1.996647000E3,5.706960328E1 +1.996947000E3,5.544195306E1 +1.997203000E3,5.747091679E1 +1.997452000E3,5.434233120E1 +1.997769000E3,5.794847441E1 +1.998019000E3,5.504963001E1 +1.998267000E3,5.470768853E1 +1.998498000E3,6.426300701E1 +1.998789000E3,6.070245213E1 +1.999090000E3,5.893271279E1 +1.999390000E3,5.873668669E1 +1.999698000E3,6.355663744E1 +1.999962000E3,6.500393379E1 +2.000214000E3,6.177640112E1 +2.000471000E3,6.122167361E1 +2.000775000E3,5.982616779E1 +2.001079000E3,5.944943300E1 +2.001339000E3,5.772707313E1 +2.001595000E3,5.934980117E1 +2.001862000E3,6.221301291E1 +2.002160000E3,6.098009785E1 +2.002491000E3,6.205877653E1 +2.002758000E3,5.978743388E1 +2.003062000E3,6.141065367E1 +2.003307000E3,6.146860620E1 +2.003555000E3,6.323368939E1 +2.003884000E3,6.072009355E1 +2.004185000E3,6.072017978E1 +2.004424000E3,6.079512782E1 +2.004673000E3,6.651000141E1 +2.004939000E3,6.185812181E1 +2.005202000E3,5.705353418E1 +2.005472000E3,5.820400818E1 +2.005800000E3,5.682542431E1 +2.006070000E3,6.224932691E1 +2.006350000E3,5.654791681E1 +2.006601000E3,6.160831985E1 +2.006857000E3,6.443497299E1 +2.007101000E3,6.091208862E1 +2.007395000E3,5.867323811E1 +2.007635000E3,5.850229824E1 +2.007945000E3,6.307832054E1 +2.008197000E3,5.931313312E1 +2.008453000E3,5.632990721E1 +2.008711000E3,5.662998085E1 +2.009032000E3,5.416655753E1 +2.009268000E3,6.273936844E1 +2.009521000E3,6.129068926E1 +2.009786000E3,6.485712301E1 +2.010037000E3,6.605690213E1 +2.010298000E3,6.243431425E1 +2.010541000E3,6.062714733E1 +2.010780000E3,6.369220544E1 +2.011082000E3,5.933701247E1 +2.011330000E3,6.141658123E1 +2.011605000E3,6.232326760E1 +2.011893000E3,5.983132844E1 +2.012226000E3,6.085684837E1 +2.012489000E3,5.844434641E1 +2.012752000E3,5.992485437E1 +2.013005000E3,5.745164278E1 +2.013272000E3,5.489362140E1 +2.013573000E3,5.734004331E1 +2.013861000E3,5.569303233E1 +2.014170000E3,5.619919203E1 +2.014467000E3,5.719248521E1 +2.014715000E3,5.898607642E1 +2.015015000E3,5.312334941E1 +2.015258000E3,4.707687024E1 +2.015594000E3,5.326213693E1 +2.015822000E3,4.977107581E1 +2.016071000E3,5.399380901E1 +2.016333000E3,5.528915982E1 +2.016634000E3,5.648344312E1 +2.016879000E3,5.853194276E1 +2.017143000E3,5.969968429E1 +2.017429000E3,6.121498547E1 +2.017723000E3,5.933414775E1 +2.017961000E3,6.375558171E1 +2.018248000E3,6.102538403E1 +2.018558000E3,6.066629858E1 +2.018830000E3,5.238394429E1 +2.019065000E3,5.528030903E1 +2.019316000E3,5.711235169E1 +2.019578000E3,6.069913503E1 +2.019847000E3,5.344730110E1 +2.020093000E3,5.593398360E1 +2.020413000E3,5.112453486E1 +2.020668000E3,5.529600172E1 +2.020922000E3,5.816841553E1 +2.021177000E3,6.105447683E1 +2.021449000E3,5.967528890E1 +2.021707000E3,5.677568689E1 +2.022115000E3,5.613246875E1 +2.022403000E3,5.846674311E1 +2.022679000E3,5.999468936E1 +2.022930000E3,6.268951545E1 +2.023232000E3,6.037378186E1 +2.023532000E3,6.123290650E1 +2.023784000E3,6.425880775E1 +2.024094000E3,6.043334594E1 +2.024356000E3,6.287321918E1 +2.024616000E3,6.178703582E1 +2.024868000E3,5.974424575E1 +2.025152000E3,5.863905018E1 +2.025429000E3,5.669082005E1 +2.025716000E3,6.192616195E1 +2.026008000E3,6.367561928E1 +2.026300000E3,6.061621393E1 +2.026543000E3,6.411900249E1 +2.026802000E3,6.060951858E1 +2.027066000E3,5.606119041E1 +2.027395000E3,5.099901519E1 +2.027693000E3,5.622472082E1 +2.027945000E3,5.354940616E1 +2.028237000E3,6.282566888E1 +2.028553000E3,5.775523802E1 +2.028868000E3,6.095006183E1 +2.029133000E3,6.333727439E1 +2.029399000E3,5.925545982E1 +2.029660000E3,6.045827699E1 +2.029962000E3,5.594587825E1 +2.030223000E3,5.708579081E1 +2.030478000E3,5.777704597E1 +2.030737000E3,5.406349508E1 +2.030990000E3,5.544037764E1 +2.031246000E3,5.912518025E1 +2.031508000E3,5.924806900E1 +2.031864000E3,6.105667153E1 +2.032110000E3,5.838466956E1 +2.032350000E3,5.923100201E1 +2.032598000E3,6.024290558E1 +2.032866000E3,5.971089342E1 +2.033112000E3,5.478665804E1 +2.033351000E3,5.966531235E1 +2.033644000E3,5.755565544E1 +2.033892000E3,5.982004182E1 +2.034190000E3,5.797424789E1 +2.034425000E3,5.856301863E1 +2.034717000E3,6.325478319E1 +2.035053000E3,6.168254294E1 +2.035364000E3,6.188857455E1 +2.035619000E3,6.156039581E1 +2.035901000E3,6.235770270E1 +2.036169000E3,6.262779828E1 +2.036471000E3,6.142542176E1 +2.036764000E3,5.923845966E1 +2.037022000E3,5.827266837E1 +2.037307000E3,6.314641141E1 +2.037615000E3,5.460230698E1 +2.037870000E3,5.396400232E1 +2.038120000E3,5.561122002E1 +2.038463000E3,5.928400391E1 +2.038767000E3,5.668934966E1 +2.039069000E3,5.831653467E1 +2.039316000E3,5.267103167E1 +2.039622000E3,5.557794232E1 +2.039859000E3,5.543606804E1 +2.040196000E3,5.836770370E1 +2.040499000E3,5.678092478E1 +2.040751000E3,5.612506795E1 +2.041024000E3,5.868430679E1 +2.041274000E3,5.264121586E1 +2.041581000E3,5.828774790E1 +2.041841000E3,5.647338053E1 +2.042088000E3,6.053709731E1 +2.042403000E3,5.614689861E1 +2.042691000E3,5.714845923E1 +2.042944000E3,5.256418368E1 +2.043191000E3,5.601486494E1 +2.043466000E3,5.810869150E1 +2.043715000E3,5.529893852E1 +2.043979000E3,5.708153712E1 +2.044245000E3,5.690179830E1 +2.044568000E3,5.994555064E1 +2.044825000E3,6.172126409E1 +2.045096000E3,6.015473895E1 +2.045377000E3,5.509344178E1 +2.045629000E3,5.568915719E1 +2.045902000E3,5.938619751E1 +2.046155000E3,5.534852098E1 +2.046409000E3,5.905391706E1 +2.046693000E3,5.250115201E1 +2.046947000E3,5.587771233E1 +2.047277000E3,5.599930929E1 +2.047517000E3,5.586822515E1 +2.047803000E3,5.740436533E1 +2.048105000E3,5.413600866E1 +2.048476000E3,5.595836709E1 +2.048737000E3,5.982743631E1 +2.048992000E3,6.001131240E1 +2.049305000E3,5.629713962E1 +2.049568000E3,5.505265617E1 +2.049904000E3,5.686004167E1 +2.050199000E3,6.078932545E1 +2.050470000E3,5.919030857E1 +2.050773000E3,5.640754436E1 +2.051052000E3,5.864124078E1 +2.051311000E3,5.683150656E1 +2.051642000E3,5.391893615E1 +2.051926000E3,4.513639699E1 +2.052174000E3,5.750824000E1 +2.052467000E3,5.945309138E1 +2.052703000E3,6.260915402E1 +2.052981000E3,6.017408744E1 +2.053276000E3,6.158293130E1 +2.053516000E3,6.279041899E1 +2.053759000E3,6.005362243E1 +2.054030000E3,5.776050932E1 +2.054357000E3,5.906607942E1 +2.054642000E3,6.002924771E1 +2.054978000E3,5.708591672E1 +2.055267000E3,5.932996992E1 +2.055552000E3,5.830703641E1 +2.055812000E3,5.428102985E1 +2.056063000E3,5.893384546E1 +2.056382000E3,6.028305726E1 +2.056682000E3,5.904357096E1 +2.056923000E3,6.015407432E1 +2.057171000E3,5.801677968E1 +2.057418000E3,6.561794532E1 +2.057665000E3,6.751214025E1 +2.057959000E3,5.899748641E1 +2.058279000E3,5.616162884E1 +2.058571000E3,5.813941707E1 +2.058834000E3,6.236684118E1 +2.059132000E3,6.058455193E1 +2.059376000E3,6.004963560E1 +2.059687000E3,6.255152045E1 +2.059984000E3,6.155697025E1 +2.060225000E3,6.124056229E1 +2.060517000E3,6.072549607E1 +2.060756000E3,6.119225814E1 +2.061060000E3,5.953618039E1 +2.061302000E3,5.869582322E1 +2.061578000E3,6.248269042E1 +2.061841000E3,6.070173510E1 +2.062089000E3,6.023992255E1 +2.062337000E3,5.848175462E1 +2.062607000E3,5.092907116E1 +2.062859000E3,5.442118268E1 +2.063124000E3,5.298599309E1 +2.063425000E3,6.030333428E1 +2.063671000E3,5.835700379E1 +2.063954000E3,5.943633389E1 +2.064268000E3,5.761479859E1 +2.064577000E3,5.520238299E1 +2.064822000E3,5.901822557E1 +2.065074000E3,5.705952734E1 +2.065339000E3,6.136116330E1 +2.065603000E3,5.746483296E1 +2.065865000E3,5.867757380E1 +2.066141000E3,5.709322981E1 +2.066441000E3,5.775131141E1 +2.066691000E3,5.886237327E1 +2.067036000E3,5.617972984E1 +2.067288000E3,5.802507148E1 +2.067560000E3,6.044497816E1 +2.067891000E3,5.450044868E1 +2.068148000E3,5.616761260E1 +2.068412000E3,6.243097888E1 +2.068673000E3,5.783788439E1 +2.068946000E3,5.764761585E1 +2.069196000E3,5.683737954E1 +2.069468000E3,5.609890848E1 +2.069778000E3,5.465619904E1 +2.070034000E3,5.368960846E1 +2.070328000E3,6.032893819E1 +2.070574000E3,5.862927742E1 +2.070842000E3,5.635830209E1 +2.071101000E3,5.822198053E1 +2.071339000E3,5.691346983E1 +2.071597000E3,5.865778618E1 +2.071860000E3,5.810560725E1 +2.072128000E3,5.968009174E1 +2.072425000E3,5.833852533E1 +2.072667000E3,5.784540163E1 +2.072934000E3,5.644439458E1 +2.073184000E3,5.178260396E1 +2.073488000E3,5.751445421E1 +2.073769000E3,5.974800721E1 +2.074068000E3,6.534291023E1 +2.074348000E3,6.371076652E1 +2.074624000E3,6.156132937E1 +2.074877000E3,6.012113548E1 +2.075119000E3,6.026351151E1 +2.075377000E3,6.142675581E1 +2.075661000E3,6.194478144E1 +2.075914000E3,6.183865569E1 +2.076267000E3,6.387512541E1 +2.076547000E3,6.077311287E1 +2.076803000E3,6.130963963E1 +2.077056000E3,5.862622582E1 +2.077295000E3,5.463497219E1 +2.077610000E3,5.484231095E1 +2.077891000E3,6.099801434E1 +2.078171000E3,5.475621164E1 +2.078466000E3,5.955577801E1 +2.078709000E3,5.720097088E1 +2.078954000E3,5.661944912E1 +2.079224000E3,5.443336360E1 +2.079503000E3,5.917559782E1 +2.079800000E3,5.424380486E1 +2.080057000E3,6.013762169E1 +2.080307000E3,6.100643768E1 +2.080558000E3,6.205128007E1 +2.080810000E3,6.007904071E1 +2.081092000E3,6.423414837E1 +2.081354000E3,5.938817614E1 +2.081601000E3,6.006860062E1 +2.081845000E3,5.833570272E1 +2.082143000E3,5.962915676E1 +2.082396000E3,5.844615966E1 +2.082663000E3,5.932060291E1 +2.082921000E3,6.037844323E1 +2.083227000E3,5.719168160E1 +2.083487000E3,5.597578938E1 +2.083743000E3,5.236775830E1 +2.084062000E3,5.471900653E1 +2.084318000E3,5.178371688E1 +2.084618000E3,5.707729304E1 +2.084858000E3,5.526812689E1 +2.085154000E3,5.716405930E1 +2.085391000E3,5.478798233E1 +2.085687000E3,5.496315929E1 +2.085932000E3,5.701239101E1 +2.086228000E3,5.776438308E1 +2.086467000E3,5.628202894E1 +2.086760000E3,5.042244376E1 +2.087015000E3,5.775963511E1 +2.087362000E3,4.982890988E1 +2.087671000E3,4.785672217E1 +2.087922000E3,4.762697394E1 +2.088178000E3,5.046726223E1 +2.088438000E3,4.890262424E1 +2.088711000E3,5.501277631E1 +2.088981000E3,5.666001705E1 +2.089249000E3,6.014252161E1 +2.089513000E3,5.925311989E1 +2.089806000E3,6.173820636E1 +2.090063000E3,5.350884215E1 +2.090366000E3,5.736408779E1 +2.090744000E3,5.450936109E1 +2.091005000E3,5.763377323E1 +2.091253000E3,6.042269191E1 +2.091515000E3,5.484903903E1 +2.091757000E3,5.882101591E1 +2.092028000E3,5.833139845E1 +2.092280000E3,5.703430671E1 +2.092527000E3,5.247783814E1 +2.092809000E3,5.233323676E1 +2.093037000E3,5.202869643E1 +2.093354000E3,5.628845797E1 +2.093634000E3,5.325396544E1 +2.094006000E3,5.654992892E1 +2.094280000E3,5.713253789E1 +2.094541000E3,5.967664240E1 +2.094800000E3,5.750232678E1 +2.095069000E3,5.544480371E1 +2.095333000E3,5.462176641E1 +2.095596000E3,5.811248949E1 +2.095853000E3,6.196847972E1 +2.096192000E3,5.842850461E1 +2.096488000E3,5.597774452E1 +2.096726000E3,5.601282925E1 +2.097104000E3,5.625832805E1 +2.097364000E3,5.315488909E1 +2.097602000E3,5.287250653E1 +2.097844000E3,5.523708836E1 +2.098081000E3,5.724292600E1 +2.098340000E3,5.659511238E1 +2.098670000E3,5.675324149E1 +2.098945000E3,5.485884276E1 +2.099219000E3,5.694143956E1 +2.099469000E3,5.561655413E1 +2.099765000E3,5.844909410E1 +2.100011000E3,6.135621316E1 +2.100343000E3,5.968766012E1 +2.100584000E3,5.173347950E1 +2.100832000E3,5.415548255E1 +2.101090000E3,5.271968845E1 +2.101339000E3,5.007174890E1 +2.101624000E3,5.279525002E1 +2.101895000E3,5.358558767E1 +2.102197000E3,5.559048142E1 +2.102438000E3,5.476305303E1 +2.102705000E3,5.237114911E1 +2.102947000E3,5.014972007E1 +2.103218000E3,4.895902935E1 +2.103469000E3,5.192053997E1 +2.103853000E3,4.647138436E1 +2.104101000E3,4.837766327E1 +2.104448000E3,5.088929287E1 +2.104740000E3,5.561591777E1 +2.104997000E3,5.440319534E1 +2.105260000E3,5.347164399E1 +2.105561000E3,5.151610441E1 +2.105813000E3,5.075382634E1 +2.106121000E3,5.244425755E1 +2.106357000E3,5.269617654E1 +2.106663000E3,5.149027406E1 +2.106954000E3,5.659456733E1 +2.107266000E3,5.282561460E1 +2.107606000E3,5.407918273E1 +2.107883000E3,5.643922092E1 +2.108164000E3,5.169657105E1 +2.108480000E3,5.713744586E1 +2.108748000E3,5.931186178E1 +2.109003000E3,5.645689600E1 +2.109252000E3,5.322874786E1 +2.109552000E3,5.363731782E1 +2.109821000E3,5.353815648E1 +2.110077000E3,5.445551750E1 +2.110418000E3,5.491110228E1 +2.110669000E3,5.291647814E1 +2.110921000E3,5.202914132E1 +2.111180000E3,5.363241827E1 +2.111479000E3,5.566624291E1 +2.111721000E3,5.645238247E1 +2.112027000E3,5.458458697E1 +2.112294000E3,5.469783372E1 +2.112597000E3,5.582449562E1 +2.112854000E3,5.595416398E1 +2.113105000E3,5.113785865E1 +2.113352000E3,6.248282803E1 +2.113711000E3,5.880495226E1 +2.113968000E3,5.941805617E1 +2.114248000E3,5.561632009E1 +2.114507000E3,5.501810850E1 +2.114754000E3,5.936291007E1 +2.115053000E3,6.127733734E1 +2.115321000E3,6.057491273E1 +2.115616000E3,6.127323198E1 +2.115893000E3,5.760488174E1 +2.116193000E3,6.030881831E1 +2.116434000E3,5.967518116E1 +2.116722000E3,5.720938908E1 +2.117066000E3,5.605932878E1 +2.117338000E3,6.068190844E1 +2.117598000E3,5.400374866E1 +2.117892000E3,5.332007667E1 +2.118133000E3,4.991979059E1 +2.118428000E3,5.700198654E1 +2.118666000E3,5.878418983E1 +2.118922000E3,5.703766890E1 +2.119230000E3,5.731012811E1 +2.119515000E3,5.865622099E1 +2.119741000E3,5.772295719E1 +2.120015000E3,5.851982083E1 +2.120322000E3,5.958645129E1 +2.120616000E3,6.233814130E1 +2.120861000E3,6.002711287E1 +2.121162000E3,5.939190004E1 +2.121437000E3,5.758195225E1 +2.121690000E3,5.564648712E1 +2.121946000E3,5.336629511E1 +2.122218000E3,5.199121426E1 +2.122476000E3,5.906368298E1 +2.122759000E3,5.917930836E1 +2.123014000E3,5.824882047E1 +2.123266000E3,5.770359270E1 +2.123492000E3,5.695638802E1 +2.123777000E3,5.720151485E1 +2.124027000E3,6.045411810E1 +2.124327000E3,5.540258870E1 +2.124575000E3,5.828000252E1 +2.124835000E3,5.500577731E1 +2.125106000E3,5.926473821E1 +2.125354000E3,5.472888078E1 +2.125611000E3,5.530970077E1 +2.125862000E3,5.595037084E1 +2.126117000E3,5.439239133E1 +2.126432000E3,5.961943996E1 +2.126692000E3,5.841091801E1 +2.126944000E3,5.863137443E1 +2.127282000E3,5.731398304E1 +2.127577000E3,5.665374527E1 +2.127843000E3,5.476493539E1 +2.128129000E3,5.580929465E1 +2.128437000E3,5.565551021E1 +2.128739000E3,5.869101147E1 +2.129026000E3,5.827114612E1 +2.129307000E3,5.507536074E1 +2.129577000E3,5.532393691E1 +2.129934000E3,5.233850306E1 +2.130215000E3,5.514372423E1 +2.130466000E3,5.757947445E1 +2.130714000E3,6.126034226E1 +2.131015000E3,6.074916673E1 +2.131279000E3,5.864911171E1 +2.131564000E3,5.680524431E1 +2.131825000E3,6.002252741E1 +2.132078000E3,5.953076168E1 +2.132390000E3,6.027427680E1 +2.132647000E3,5.955779136E1 +2.132902000E3,5.835756058E1 +2.133223000E3,6.286787860E1 +2.133471000E3,6.057291506E1 +2.133724000E3,5.893793659E1 +2.134002000E3,5.508555746E1 +2.134257000E3,5.619881839E1 +2.134512000E3,5.505764062E1 +2.134784000E3,5.808922162E1 +2.135054000E3,5.334583096E1 +2.135313000E3,5.298019930E1 +2.135595000E3,5.025342296E1 +2.135812000E3,5.409382682E1 +2.136057000E3,5.580950424E1 +2.136332000E3,5.523743716E1 +2.136661000E3,5.499005541E1 +2.136917000E3,5.745623005E1 +2.137196000E3,5.149169849E1 +2.137449000E3,5.261206885E1 +2.137711000E3,5.487518376E1 +2.138022000E3,5.898871991E1 +2.138270000E3,5.852026830E1 +2.138564000E3,5.868858262E1 +2.138802000E3,5.736353209E1 +2.139066000E3,5.529465652E1 +2.139332000E3,5.762578865E1 +2.139672000E3,5.790185487E1 +2.139930000E3,5.792373283E1 +2.140278000E3,5.597904656E1 +2.140535000E3,5.355980456E1 +2.140856000E3,5.411887429E1 +2.141146000E3,5.094976839E1 +2.141467000E3,5.658279242E1 +2.141735000E3,6.043792292E1 +2.142041000E3,5.996632022E1 +2.142276000E3,6.230155616E1 +2.142526000E3,6.102528468E1 +2.142783000E3,5.770338577E1 +2.143124000E3,5.827243883E1 +2.143406000E3,5.367650147E1 +2.143645000E3,5.777094487E1 +2.143915000E3,5.851595499E1 +2.144175000E3,5.573729509E1 +2.144454000E3,5.467626304E1 +2.144700000E3,5.699765591E1 +2.144968000E3,5.692170932E1 +2.145246000E3,6.030210344E1 +2.145550000E3,5.876913066E1 +2.145797000E3,5.698149837E1 +2.146042000E3,5.982717784E1 +2.146368000E3,5.905293636E1 +2.146676000E3,5.947032966E1 +2.146922000E3,5.910471730E1 +2.147225000E3,6.065874797E1 +2.147524000E3,5.680135408E1 +2.147831000E3,5.451199701E1 +2.148090000E3,5.301325775E1 +2.148365000E3,5.466040661E1 +2.148665000E3,5.658013689E1 +2.148952000E3,5.410667827E1 +2.149249000E3,5.788683658E1 +2.149597000E3,5.873903650E1 +2.149910000E3,5.314379433E1 +2.150150000E3,5.564952940E1 +2.150451000E3,6.000220607E1 +2.150691000E3,6.235870620E1 +2.150965000E3,6.387461990E1 +2.151194000E3,6.491001134E1 +2.151449000E3,5.932544814E1 +2.151756000E3,6.117684525E1 +2.152011000E3,6.059885605E1 +2.152282000E3,6.303246617E1 +2.152596000E3,6.399854390E1 +2.152961000E3,6.063746268E1 +2.153223000E3,6.122116723E1 +2.153495000E3,5.809397592E1 +2.153749000E3,5.903784259E1 +2.153999000E3,6.047826717E1 +2.154283000E3,5.846467986E1 +2.154537000E3,6.226879102E1 +2.154785000E3,5.980611807E1 +2.155079000E3,5.787450321E1 +2.155375000E3,5.676059962E1 +2.155616000E3,5.395823696E1 +2.155912000E3,5.953639288E1 +2.156221000E3,5.971614724E1 +2.156510000E3,6.039969801E1 +2.156758000E3,5.898776738E1 +2.157015000E3,6.100474003E1 +2.157289000E3,5.750129682E1 +2.157591000E3,5.995540643E1 +2.157844000E3,5.628303244E1 +2.158104000E3,5.892686601E1 +2.158366000E3,5.712884748E1 +2.158667000E3,5.727860760E1 +2.158932000E3,5.313556696E1 +2.159288000E3,5.635583768E1 +2.159555000E3,5.929473664E1 +2.159809000E3,5.396180560E1 +2.160112000E3,5.807023999E1 +2.160354000E3,5.639240346E1 +2.160608000E3,5.917728814E1 +2.160855000E3,5.429000157E1 +2.161130000E3,5.397827395E1 +2.161395000E3,5.647751800E1 +2.161656000E3,5.342605760E1 +2.162007000E3,5.324373839E1 +2.162263000E3,5.439383591E1 +2.162517000E3,5.727066505E1 +2.162888000E3,5.995593964E1 +2.163140000E3,6.130649482E1 +2.163392000E3,6.228130821E1 +2.163644000E3,6.279179388E1 +2.163938000E3,5.559527300E1 +2.164178000E3,5.200550071E1 +2.164481000E3,5.797363767E1 +2.164757000E3,5.902554678E1 +2.165040000E3,5.834647622E1 +2.165303000E3,5.713285380E1 +2.165575000E3,6.343633700E1 +2.165850000E3,5.896208706E1 +2.166219000E3,5.624501583E1 +2.166483000E3,5.696603075E1 +2.166769000E3,5.736978604E1 +2.167027000E3,5.837475894E1 +2.167278000E3,5.768129207E1 +2.167593000E3,5.660761865E1 +2.167856000E3,5.680076310E1 +2.168110000E3,5.883044450E1 +2.168385000E3,5.772028600E1 +2.168649000E3,5.342008664E1 +2.168914000E3,5.359113324E1 +2.169168000E3,5.849769703E1 +2.169536000E3,6.267181821E1 +2.169793000E3,5.719603223E1 +2.170040000E3,5.397233107E1 +2.170287000E3,4.861027503E1 +2.170579000E3,5.741564583E1 +2.170822000E3,6.207812430E1 +2.171115000E3,5.827753689E1 +2.171365000E3,6.042202215E1 +2.171629000E3,5.516417228E1 +2.171895000E3,4.912315476E1 +2.172163000E3,4.718316305E1 +2.172446000E3,5.363129541E1 +2.172813000E3,5.322378335E1 +2.173087000E3,5.228499961E1 +2.173349000E3,5.364722432E1 +2.173618000E3,5.964999675E1 +2.173917000E3,6.116591719E1 +2.174174000E3,5.668310324E1 +2.174436000E3,5.538937699E1 +2.174688000E3,5.539330891E1 +2.174944000E3,5.678019084E1 +2.175197000E3,5.655985061E1 +2.175490000E3,6.211643319E1 +2.175751000E3,5.899842059E1 +2.176153000E3,6.042080027E1 +2.176454000E3,5.956376587E1 +2.176730000E3,5.896716838E1 +2.177048000E3,5.729778676E1 +2.177305000E3,5.512323216E1 +2.177616000E3,5.573124529E1 +2.177883000E3,5.390669828E1 +2.178139000E3,5.435017850E1 +2.178403000E3,5.275779180E1 +2.178672000E3,5.469054235E1 +2.178938000E3,5.701832565E1 +2.179201000E3,6.063134316E1 +2.179540000E3,6.461030243E1 +2.179799000E3,6.345934666E1 +2.180043000E3,6.255021373E1 +2.180348000E3,6.265836689E1 +2.180640000E3,6.125083403E1 +2.180878000E3,5.721943432E1 +2.181125000E3,5.584429631E1 +2.181407000E3,5.679219567E1 +2.181647000E3,5.506189996E1 +2.181962000E3,5.950753578E1 +2.182227000E3,5.684863204E1 +2.182499000E3,5.318048388E1 +2.182825000E3,5.856807028E1 +2.183124000E3,6.201159961E1 +2.183360000E3,5.994279105E1 +2.183661000E3,6.155626338E1 +2.183904000E3,5.760612799E1 +2.184197000E3,5.557219911E1 +2.184436000E3,5.720299401E1 +2.184730000E3,5.496492062E1 +2.184965000E3,5.287669523E1 +2.185272000E3,5.534018340E1 +2.185572000E3,5.047897567E1 +2.185897000E3,5.289532450E1 +2.186149000E3,5.169587435E1 +2.186428000E3,5.811856565E1 +2.186722000E3,5.829930976E1 +2.187016000E3,5.767171180E1 +2.187297000E3,5.167293983E1 +2.187542000E3,5.634712904E1 +2.187793000E3,5.452173951E1 +2.188038000E3,5.242356157E1 +2.188332000E3,5.476946331E1 +2.188570000E3,5.506415879E1 +2.188807000E3,5.842757277E1 +2.189123000E3,5.579731569E1 +2.189400000E3,5.735467547E1 +2.189707000E3,5.510643622E1 +2.189947000E3,5.399605596E1 +2.190247000E3,5.231812124E1 +2.190482000E3,5.397423501E1 +2.190722000E3,5.467291530E1 +2.190972000E3,5.750340972E1 +2.191219000E3,5.451621797E1 +2.191527000E3,5.544744059E1 +2.191775000E3,5.570906247E1 +2.192040000E3,5.570238792E1 +2.192395000E3,5.704729905E1 +2.192674000E3,5.662202644E1 +2.192969000E3,6.130245708E1 +2.193206000E3,5.842239411E1 +2.193505000E3,5.813812757E1 +2.193745000E3,5.643123308E1 +2.194038000E3,5.810403241E1 +2.194275000E3,5.863690353E1 +2.194574000E3,5.519980518E1 +2.194810000E3,5.381530940E1 +2.195092000E3,5.781601666E1 +2.195335000E3,5.699265058E1 +2.195608000E3,5.477338243E1 +2.195929000E3,5.695412826E1 +2.196188000E3,5.575935497E1 +2.196439000E3,5.738570553E1 +2.196686000E3,6.194168224E1 +2.196969000E3,5.888525061E1 +2.197270000E3,5.830791470E1 +2.197516000E3,5.904778886E1 +2.197822000E3,5.987539712E1 +2.198117000E3,5.910637217E1 +2.198355000E3,5.676446576E1 +2.198673000E3,5.632729175E1 +2.198920000E3,5.826507178E1 +2.199227000E3,6.221847088E1 +2.199493000E3,6.023584539E1 +2.199739000E3,6.378124478E1 +2.199975000E3,6.457706819E1 +2.200218000E3,5.781084826E1 +2.200471000E3,5.833307765E1 +2.200715000E3,5.849295856E1 +2.200984000E3,5.695016071E1 +2.201255000E3,5.945608920E1 +2.201511000E3,5.923858391E1 +2.201821000E3,5.975381188E1 +2.202050000E3,5.657071344E1 +2.202297000E3,5.582353283E1 +2.202552000E3,5.634201272E1 +2.202803000E3,5.842061156E1 +2.203080000E3,5.511323996E1 +2.203339000E3,5.333816234E1 +2.203589000E3,5.586132206E1 +2.203867000E3,5.612282959E1 +2.204151000E3,5.390907932E1 +2.204405000E3,5.581501331E1 +2.204648000E3,5.691201261E1 +2.204938000E3,5.605209961E1 +2.205271000E3,5.337227455E1 +2.205520000E3,5.726868677E1 +2.205824000E3,5.678400386E1 +2.206068000E3,5.598615724E1 +2.206327000E3,6.245548090E1 +2.206634000E3,5.788335624E1 +2.206927000E3,5.672312442E1 +2.207166000E3,5.700846075E1 +2.207464000E3,5.693157148E1 +2.207703000E3,5.667671942E1 +2.207995000E3,5.655907845E1 +2.208344000E3,5.694003799E1 +2.208592000E3,5.812693102E1 +2.208844000E3,5.305590014E1 +2.209133000E3,5.963333488E1 +2.209376000E3,6.125764761E1 +2.209621000E3,5.708540532E1 +2.209865000E3,5.539532482E1 +2.210177000E3,6.086117928E1 +2.210432000E3,5.871599576E1 +2.210705000E3,5.720891289E1 +2.210929000E3,5.859137268E1 +2.211185000E3,5.492761595E1 +2.211566000E3,5.458369125E1 +2.211811000E3,5.704243717E1 +2.212094000E3,5.948204172E1 +2.212325000E3,5.442994388E1 +2.212570000E3,5.607391365E1 +2.212815000E3,5.349643391E1 +2.213089000E3,5.518134225E1 +2.213397000E3,5.879499176E1 +2.213659000E3,5.918920409E1 +2.213917000E3,6.317166487E1 +2.214205000E3,5.773325998E1 +2.214505000E3,6.021667659E1 +2.214834000E3,5.707564648E1 +2.215074000E3,5.411436798E1 +2.215412000E3,5.705541238E1 +2.215699000E3,6.721672427E1 +2.215946000E3,6.130402498E1 +2.216241000E3,5.914242022E1 +2.216493000E3,5.881747375E1 +2.216786000E3,5.920115687E1 +2.217030000E3,5.981753209E1 +2.217325000E3,5.379848698E1 +2.217566000E3,5.498057230E1 +2.217931000E3,5.647867672E1 +2.218210000E3,5.460935805E1 +2.218440000E3,5.579228446E1 +2.218740000E3,5.598523495E1 +2.218992000E3,5.501198671E1 +2.219248000E3,5.270876730E1 +2.219495000E3,5.711255338E1 +2.219767000E3,5.276578476E1 +2.220009000E3,6.171644376E1 +2.220307000E3,5.760035427E1 +2.220557000E3,6.039071701E1 +2.220820000E3,5.947563028E1 +2.221166000E3,5.781157464E1 +2.221459000E3,5.689764898E1 +2.221740000E3,5.361204154E1 +2.221998000E3,5.565584232E1 +2.222252000E3,6.236264054E1 +2.222508000E3,5.583706888E1 +2.222794000E3,5.998886151E1 +2.223038000E3,6.067027795E1 +2.223281000E3,5.953550256E1 +2.223512000E3,6.087865846E1 +2.223764000E3,5.880177247E1 +2.224056000E3,5.532032645E1 +2.224389000E3,5.110554887E1 +2.224697000E3,6.082114583E1 +2.224957000E3,6.332269799E1 +2.225225000E3,5.859152014E1 +2.225521000E3,6.312344162E1 +2.225760000E3,6.208500503E1 +2.226003000E3,6.030377984E1 +2.226280000E3,5.890306026E1 +2.226553000E3,6.412257006E1 +2.226813000E3,5.959239884E1 +2.227137000E3,5.603893495E1 +2.227460000E3,5.807576772E1 +2.227717000E3,6.034272760E1 +2.227950000E3,5.678924442E1 +2.228211000E3,5.767938832E1 +2.228489000E3,4.973605337E1 +2.228742000E3,5.227056153E1 +2.229007000E3,4.524576382E1 +2.229320000E3,5.163901012E1 +2.229633000E3,5.791269320E1 +2.229909000E3,5.832692980E1 +2.230223000E3,5.512940778E1 +2.230487000E3,5.639998631E1 +2.230845000E3,6.012111222E1 +2.231113000E3,6.632176219E1 +2.231407000E3,6.692769565E1 +2.231662000E3,6.409372191E1 +2.231945000E3,6.268702605E1 +2.232208000E3,6.192012265E1 +2.232460000E3,5.923306273E1 +2.232717000E3,5.726340446E1 +2.233005000E3,5.708270925E1 +2.233256000E3,6.172203942E1 +2.233510000E3,6.197059155E1 +2.233807000E3,6.691458644E1 +2.234160000E3,6.165007134E1 +2.234422000E3,6.172053486E1 +2.234714000E3,6.148833899E1 +2.234974000E3,6.190331921E1 +2.235253000E3,5.938090919E1 +2.235479000E3,6.223060920E1 +2.235722000E3,6.133640397E1 +2.236028000E3,6.400294095E1 +2.236269000E3,6.581462957E1 +2.236516000E3,6.094953675E1 +2.236828000E3,5.792232456E1 +2.237124000E3,5.750665846E1 +2.237367000E3,5.360734442E1 +2.237668000E3,5.239836763E1 +2.237914000E3,5.189659577E1 +2.238168000E3,5.779541581E1 +2.238431000E3,5.409030702E1 +2.238689000E3,5.064192938E1 +2.238941000E3,4.890244292E1 +2.239235000E3,4.958738332E1 +2.239486000E3,5.093509792E1 +2.239725000E3,5.421091975E1 +2.239970000E3,6.074883769E1 +2.240298000E3,5.611992467E1 +2.240604000E3,4.988071111E1 +2.240900000E3,4.952063126E1 +2.241187000E3,5.282005772E1 +2.241428000E3,5.672648648E1 +2.241685000E3,5.807464117E1 +2.241973000E3,5.565097745E1 +2.242224000E3,5.410363002E1 +2.242475000E3,5.548804216E1 +2.242720000E3,5.862108370E1 +2.242959000E3,5.101243713E1 +2.243259000E3,5.340920814E1 +2.243564000E3,5.471013043E1 +2.243801000E3,5.474536753E1 +2.244062000E3,5.454012147E1 +2.244333000E3,5.594751460E1 +2.244637000E3,5.486159050E1 +2.244913000E3,5.317501502E1 +2.245138000E3,5.100209753E1 +2.245397000E3,5.436827206E1 +2.245643000E3,5.483479867E1 +2.245916000E3,5.150486026E1 +2.246182000E3,5.049924887E1 +2.246449000E3,5.226067252E1 +2.246744000E3,5.389432372E1 +2.247057000E3,6.032791953E1 +2.247330000E3,5.966662928E1 +2.247666000E3,5.824962285E1 +2.247962000E3,5.700720490E1 +2.248202000E3,6.373200887E1 +2.248495000E3,6.648419927E1 +2.248743000E3,5.542652488E1 +2.249036000E3,5.256926371E1 +2.249272000E3,6.053195001E1 +2.249564000E3,4.959074314E1 +2.249800000E3,5.054384460E1 +2.250136000E3,5.008489809E1 +2.250431000E3,5.752384263E1 +2.250666000E3,5.367007636E1 +2.250931000E3,4.851936559E1 +2.251210000E3,4.965482987E1 +2.251497000E3,5.733244198E1 +2.251772000E3,5.370188093E1 +2.251997000E3,5.388650114E1 +2.252246000E3,5.331606518E1 +2.252516000E3,5.534782747E1 +2.252818000E3,5.271944154E1 +2.253047000E3,5.188974945E1 +2.253402000E3,5.040855384E1 +2.253689000E3,5.348452962E1 +2.253965000E3,5.685197701E1 +2.254240000E3,5.699151925E1 +2.254539000E3,5.217481719E1 +2.254794000E3,5.255063115E1 +2.255035000E3,5.258436032E1 +2.255283000E3,5.228429265E1 +2.255592000E3,5.187189315E1 +2.255851000E3,5.089851896E1 +2.256105000E3,5.323192817E1 +2.256387000E3,5.259240607E1 +2.256752000E3,5.489099725E1 +2.257016000E3,5.140699592E1 +2.257276000E3,5.478139635E1 +2.257600000E3,5.508183343E1 +2.257864000E3,5.539199709E1 +2.258160000E3,5.879728075E1 +2.258399000E3,6.145510373E1 +2.258645000E3,6.018082278E1 +2.258890000E3,6.203490998E1 +2.259131000E3,6.051201097E1 +2.259385000E3,5.741582229E1 +2.259629000E3,5.742200481E1 +2.259994000E3,5.205318956E1 +2.260295000E3,5.807019657E1 +2.260539000E3,5.843419178E1 +2.260841000E3,5.543595349E1 +2.261104000E3,5.208978608E1 +2.261348000E3,5.288295424E1 +2.261601000E3,5.593156434E1 +2.261856000E3,5.600009221E1 +2.262108000E3,5.581775464E1 +2.262358000E3,5.037081152E1 +2.262613000E3,5.059162693E1 +2.262916000E3,5.459372597E1 +2.263271000E3,5.581642194E1 +2.263548000E3,5.702582989E1 +2.263802000E3,5.531282217E1 +2.264049000E3,5.356460573E1 +2.264318000E3,5.682743962E1 +2.264564000E3,5.353127135E1 +2.264854000E3,5.962134934E1 +2.265080000E3,5.858968032E1 +2.265326000E3,5.681259568E1 +2.265625000E3,5.635120121E1 +2.265871000E3,5.433379551E1 +2.266211000E3,4.913835205E1 +2.266510000E3,5.243179137E1 +2.266783000E3,4.886918417E1 +2.267043000E3,4.774131335E1 +2.267292000E3,4.892025491E1 +2.267553000E3,4.710213612E1 +2.267796000E3,4.847827931E1 +2.268042000E3,5.624471818E1 +2.268281000E3,5.286977188E1 +2.268548000E3,5.683989489E1 +2.268800000E3,5.459251055E1 +2.269086000E3,5.272841607E1 +2.269389000E3,5.585343514E1 +2.269616000E3,5.452972356E1 +2.269865000E3,5.183250423E1 +2.270167000E3,4.733442261E1 +2.270442000E3,4.736450762E1 +2.270667000E3,4.430645798E1 +2.270915000E3,4.635257501E1 +2.271160000E3,4.914582650E1 +2.271407000E3,4.938157659E1 +2.271656000E3,4.788630853E1 +2.271896000E3,4.778446083E1 +2.272198000E3,5.081637081E1 +2.272482000E3,4.630509256E1 +2.272722000E3,4.551027932E1 +2.273048000E3,5.074623045E1 +2.273321000E3,4.689236254E1 +2.273562000E3,4.960242652E1 +2.273859000E3,5.310274016E1 +2.274104000E3,5.391997859E1 +2.274392000E3,4.854992165E1 +2.274648000E3,4.610161890E1 +2.274915000E3,5.325141064E1 +2.275196000E3,4.823989698E1 +2.275460000E3,5.167706762E1 +2.275772000E3,4.424461998E1 +2.276008000E3,4.957193490E1 +2.276258000E3,4.220429916E1 +2.276545000E3,4.614900045E1 +2.276809000E3,4.247109284E1 +2.277119000E3,5.104311310E1 +2.277385000E3,4.898949856E1 +2.277651000E3,5.033981280E1 +2.277920000E3,4.504255509E1 +2.278210000E3,4.851295637E1 +2.278452000E3,4.975001222E1 +2.278771000E3,5.198599663E1 +2.279101000E3,5.078534391E1 +2.279348000E3,5.056977572E1 +2.279614000E3,4.645427419E1 +2.279894000E3,4.837428182E1 +2.280121000E3,4.672417188E1 +2.280416000E3,4.338010131E1 +2.280671000E3,4.552410696E1 +2.280941000E3,4.107346609E1 +2.281195000E3,4.850760260E1 +2.281477000E3,4.449785068E1 +2.281730000E3,3.834743898E1 +2.282028000E3,3.160451104E1 +2.282275000E3,2.921367430E1 +2.282509000E3,3.929432216E1 +2.282771000E3,3.560833020E1 +2.283021000E3,4.204425230E1 +2.283277000E3,4.897505461E1 +2.283570000E3,4.492050546E1 +2.283802000E3,4.549624302E1 +2.284053000E3,4.703134831E1 +2.284302000E3,4.492779574E1 +2.284580000E3,5.573526523E1 +2.284888000E3,4.583204799E1 +2.285186000E3,3.987632497E1 +2.285426000E3,4.276483306E1 +2.285670000E3,4.196646636E1 +2.285974000E3,4.127295807E1 +2.286241000E3,3.392540836E1 +2.286513000E3,3.045281657E1 +2.286755000E3,3.056149566E1 +2.287058000E3,4.234115907E1 +2.287358000E3,4.148011807E1 +2.287615000E3,4.752316696E1 +2.287890000E3,4.261643768E1 +2.288186000E3,3.531031146E1 +2.288451000E3,3.336926272E1 +2.288830000E3,3.217663691E1 +2.289083000E3,3.280943829E1 +2.289350000E3,4.037024361E1 +2.289606000E3,4.463743016E1 +2.289870000E3,3.926930450E1 +2.290142000E3,3.549021170E1 +2.290376000E3,3.657210104E1 +2.290669000E3,3.609483404E1 +2.290917000E3,3.935001060E1 +2.291190000E3,3.968762383E1 +2.291417000E3,3.622062011E1 +2.291698000E3,5.052972627E1 +2.292019000E3,4.472329620E1 +2.292314000E3,3.528869928E1 +2.292580000E3,3.171318762E1 +2.292867000E3,3.293682859E1 +2.293112000E3,2.980662334E1 +2.293408000E3,3.108877030E1 +2.293645000E3,3.411108767E1 +2.293948000E3,2.929195023E1 +2.294231000E3,2.830259325E1 +2.294484000E3,2.905088910E1 +2.294732000E3,3.046102835E1 +2.295049000E3,2.679058069E1 +2.295347000E3,2.620731663E1 +2.295594000E3,3.509528145E1 +2.295836000E3,2.657946529E1 +2.296130000E3,2.511368258E1 +2.296378000E3,2.555955915E1 +2.296634000E3,2.785949260E1 +2.296875000E3,2.654407944E1 +2.297117000E3,3.658368449E1 +2.297412000E3,3.412054652E1 +2.297648000E3,3.448252102E1 +2.297956000E3,3.528486686E1 +2.298205000E3,3.265291425E1 +2.298494000E3,2.963788314E1 +2.298798000E3,3.350933300E1 +2.299085000E3,3.038301619E1 +2.299338000E3,3.357142506E1 +2.299610000E3,4.744800671E1 +2.299868000E3,3.435626076E1 +2.300142000E3,3.368274389E1 +2.300402000E3,2.881246111E1 +2.300655000E3,3.097762310E1 +2.300898000E3,2.947567056E1 +2.301182000E3,3.214187359E1 +2.301423000E3,3.421070745E1 +2.301786000E3,5.117970534E1 +2.302087000E3,5.037784077E1 +2.302335000E3,5.283937176E1 +2.302644000E3,5.164119106E1 +2.302941000E3,5.300709748E1 +2.303240000E3,4.713488810E1 +2.303488000E3,4.524114677E1 +2.303739000E3,3.080285972E1 +2.304022000E3,2.293405577E1 +2.304254000E3,2.235464386E1 +2.304552000E3,2.949911358E1 +2.304876000E3,4.141349798E1 +2.305182000E3,4.156611078E1 +2.305491000E3,4.347125429E1 +2.305797000E3,4.579894404E1 +2.306107000E3,4.646123013E1 +2.306358000E3,4.517240887E1 +2.306604000E3,5.308475174E1 +2.306870000E3,4.681256924E1 +2.307168000E3,2.942058533E1 +2.307450000E3,2.986114457E1 +2.307717000E3,3.195150356E1 +2.308031000E3,3.775567348E1 +2.308265000E3,3.823556499E1 +2.308570000E3,2.909536341E1 +2.308842000E3,3.096070220E1 +2.309098000E3,4.060687649E1 +2.309391000E3,4.820113946E1 +2.309687000E3,4.619079404E1 +2.309928000E3,4.304793785E1 +2.310216000E3,4.976144450E1 +2.310446000E3,4.779148829E1 +2.310686000E3,5.167703897E1 +2.310979000E3,3.773719280E1 +2.311248000E3,2.923821784E1 +2.311466000E3,2.654081756E1 +2.311763000E3,2.616593312E1 +2.312001000E3,2.460963519E1 +2.312285000E3,2.554564289E1 +2.312588000E3,3.572755404E1 +2.312856000E3,4.274835909E1 +2.313074000E3,4.355953935E1 +2.313375000E3,5.377727845E1 +2.313611000E3,5.435235813E1 +2.313893000E3,5.477010993E1 +2.314137000E3,5.142421895E1 +2.314483000E3,4.794670725E1 +2.314780000E3,5.149445419E1 +2.315019000E3,5.127618051E1 +2.315306000E3,4.939341348E1 +2.315533000E3,4.928824788E1 +2.315832000E3,4.617335031E1 +2.316069000E3,3.696469062E1 +2.316377000E3,4.552948924E1 +2.316627000E3,4.672923062E1 +2.316913000E3,4.504192742E1 +2.317215000E3,4.364234368E1 +2.317558000E3,4.231291453E1 +2.317853000E3,4.886663905E1 +2.318118000E3,4.492895691E1 +2.318412000E3,4.464681620E1 +2.318711000E3,4.698360224E1 +2.318950000E3,4.454369095E1 +2.319250000E3,4.409609939E1 +2.319494000E3,4.283121809E1 +2.319793000E3,4.398770219E1 +2.320040000E3,4.728522548E1 +2.320336000E3,4.533798443E1 +2.320660000E3,4.548359371E1 +2.320908000E3,4.366718291E1 +2.321152000E3,5.139935964E1 +2.321408000E3,4.747980864E1 +2.321709000E3,3.867643032E1 +2.321952000E3,4.294445900E1 +2.322196000E3,4.336333736E1 +2.322445000E3,3.890531131E1 +2.322682000E3,4.087281677E1 +2.322980000E3,3.979668464E1 +2.323225000E3,4.157042707E1 +2.323553000E3,4.515881082E1 +2.323886000E3,3.868360739E1 +2.324184000E3,4.839319184E1 +2.324428000E3,4.298284223E1 +2.324669000E3,4.433761346E1 +2.324987000E3,4.011512195E1 +2.325233000E3,3.478551365E1 +2.325486000E3,4.180203002E1 +2.325789000E3,4.323726184E1 +2.326086000E3,3.985791110E1 +2.326333000E3,3.946244529E1 +2.326667000E3,4.066537977E1 +2.326925000E3,3.986903649E1 +2.327223000E3,4.142461274E1 +2.327521000E3,3.461788217E1 +2.327778000E3,3.326602717E1 +2.328102000E3,4.357074645E1 +2.328367000E3,5.496493564E1 +2.328618000E3,4.413482695E1 +2.328920000E3,4.170999616E1 +2.329183000E3,4.107694173E1 +2.329486000E3,5.342371220E1 +2.329729000E3,5.103134188E1 +2.330028000E3,4.716459977E1 +2.330382000E3,4.916498276E1 +2.330642000E3,4.801561309E1 +2.330930000E3,4.860033329E1 +2.331211000E3,5.037441690E1 +2.331463000E3,5.227972551E1 +2.331719000E3,4.516533742E1 +2.331971000E3,4.623606604E1 +2.332268000E3,3.207985320E1 +2.332513000E3,3.485208029E1 +2.332801000E3,4.367306984E1 +2.333109000E3,4.764897626E1 +2.333397000E3,4.844411921E1 +2.333779000E3,4.624834459E1 +2.334088000E3,4.492130047E1 +2.334331000E3,4.172849812E1 +2.334618000E3,4.243441154E1 +2.334859000E3,4.155300890E1 +2.335165000E3,3.508017133E1 +2.335414000E3,3.102497597E1 +2.335689000E3,3.346102792E1 +2.335938000E3,2.980210924E1 +2.336237000E3,2.815695425E1 +2.336480000E3,4.530841757E1 +2.336824000E3,4.476742737E1 +2.337075000E3,4.460293889E1 +2.337332000E3,5.054872999E1 +2.337583000E3,4.962100100E1 +2.337845000E3,5.224787063E1 +2.338132000E3,4.845338775E1 +2.338374000E3,4.675501048E1 +2.338651000E3,4.806540095E1 +2.338903000E3,4.707869991E1 +2.339145000E3,4.747595477E1 +2.339395000E3,3.449909829E1 +2.339700000E3,4.619360178E1 +2.340033000E3,4.785644508E1 +2.340329000E3,4.721347586E1 +2.340579000E3,4.302992844E1 +2.340828000E3,4.629706327E1 +2.341122000E3,4.550319757E1 +2.341368000E3,4.510038554E1 +2.341611000E3,4.752886315E1 +2.341876000E3,4.524122211E1 +2.342135000E3,2.990386366E1 +2.342396000E3,3.647672774E1 +2.342679000E3,2.854891758E1 +2.342936000E3,3.995722191E1 +2.343310000E3,4.501906630E1 +2.343555000E3,4.872212276E1 +2.343839000E3,4.566863325E1 +2.344134000E3,3.946814595E1 +2.344384000E3,4.796193013E1 +2.344656000E3,4.858552009E1 +2.344961000E3,4.902627763E1 +2.345257000E3,4.467711671E1 +2.345498000E3,3.756709071E1 +2.345764000E3,2.964206509E1 +2.346064000E3,4.283044167E1 +2.346415000E3,4.191014925E1 +2.346743000E3,4.910031818E1 +2.347021000E3,5.022624274E1 +2.347337000E3,5.257970130E1 +2.347586000E3,4.764257555E1 +2.347831000E3,4.353349182E1 +2.348126000E3,4.318604201E1 +2.348436000E3,4.825752031E1 +2.348710000E3,4.464987037E1 +2.348968000E3,4.690302679E1 +2.349225000E3,4.464063657E1 +2.349495000E3,5.114524492E1 +2.349740000E3,4.345049547E1 +2.350133000E3,4.655800825E1 +2.350382000E3,4.419356370E1 +2.350688000E3,4.308388818E1 +2.350960000E3,4.964188075E1 +2.351269000E3,5.137042419E1 +2.351542000E3,4.751708919E1 +2.351836000E3,3.239228651E1 +2.352067000E3,3.331178705E1 +2.352357000E3,4.628654550E1 +2.352625000E3,4.653844798E1 +2.352938000E3,4.419734850E1 +2.353231000E3,3.771763539E1 +2.353458000E3,3.489550836E1 +2.353713000E3,2.965581776E1 +2.353962000E3,3.457100474E1 +2.354201000E3,3.291595658E1 +2.354446000E3,2.791603976E1 +2.354711000E3,3.307930362E1 +2.355027000E3,5.311162000E1 +2.355290000E3,4.688373373E1 +2.355581000E3,3.663543876E1 +2.355868000E3,2.834403560E1 +2.356176000E3,5.001680718E1 +2.356518000E3,5.349221251E1 +2.356780000E3,5.234097025E1 +2.357043000E3,4.476475434E1 +2.357349000E3,5.160193390E1 +2.357584000E3,4.375385010E1 +2.357840000E3,3.709166207E1 +2.358125000E3,2.927191182E1 +2.358378000E3,4.114289062E1 +2.358676000E3,4.266518399E1 +2.358921000E3,4.641380631E1 +2.359210000E3,4.551221179E1 +2.359545000E3,4.099683883E1 +2.359801000E3,5.202602500E1 +2.360072000E3,5.207875379E1 +2.360343000E3,4.670310433E1 +2.360619000E3,4.619168123E1 +2.360865000E3,4.348453495E1 +2.361113000E3,4.603882932E1 +2.361353000E3,4.061885274E1 +2.361649000E3,4.873355826E1 +2.361884000E3,4.796347566E1 +2.362174000E3,4.419543811E1 +2.362420000E3,4.412529768E1 +2.362674000E3,4.315515456E1 +2.363006000E3,3.718353950E1 +2.363303000E3,4.131746877E1 +2.363556000E3,3.462830696E1 +2.363825000E3,3.224809166E1 +2.364105000E3,2.946532539E1 +2.364420000E3,4.082560353E1 +2.364671000E3,4.169760242E1 +2.364916000E3,4.728483165E1 +2.365158000E3,4.384961396E1 +2.365493000E3,3.327447630E1 +2.365797000E3,2.406470586E1 +2.366141000E3,2.410271882E1 +2.366422000E3,4.124818432E1 +2.366699000E3,4.300386829E1 +2.366994000E3,4.592409288E1 +2.367239000E3,4.402074721E1 +2.367492000E3,4.331525310E1 +2.367744000E3,4.351543939E1 +2.368045000E3,4.861325913E1 +2.368277000E3,4.345520025E1 +2.368543000E3,5.037549285E1 +2.368790000E3,3.455268589E1 +2.369034000E3,3.454484220E1 +2.369300000E3,3.436570372E1 +2.369544000E3,3.180799867E1 +2.369820000E3,4.460893996E1 +2.370091000E3,5.635981603E1 +2.370383000E3,4.932803438E1 +2.370635000E3,5.123791361E1 +2.370939000E3,4.749913119E1 +2.371193000E3,4.606624254E1 +2.371498000E3,4.453668838E1 +2.371779000E3,4.424564317E1 +2.372081000E3,5.022357768E1 +2.372347000E3,4.983363592E1 +2.372720000E3,4.311987242E1 +2.372969000E3,4.071927446E1 +2.373234000E3,3.624584431E1 +2.373535000E3,3.338407859E1 +2.373777000E3,2.744030282E1 +2.374025000E3,4.017686066E1 +2.374281000E3,4.153799732E1 +2.374537000E3,5.163713220E1 +2.374786000E3,4.970373114E1 +2.375033000E3,4.601563593E1 +2.375284000E3,4.943210146E1 +2.375577000E3,5.208741018E1 +2.375935000E3,4.780129348E1 +2.376167000E3,4.632707744E1 +2.376478000E3,5.008962536E1 +2.376734000E3,4.691729314E1 +2.376987000E3,4.593220796E1 +2.377250000E3,4.703621615E1 +2.377550000E3,4.863501898E1 +2.377838000E3,4.747349412E1 +2.378102000E3,4.430216971E1 +2.378373000E3,5.038477253E1 +2.378648000E3,4.679597376E1 +2.378873000E3,3.998762784E1 +2.379232000E3,4.140472709E1 +2.379480000E3,3.803559367E1 +2.379735000E3,4.292956565E1 +2.379993000E3,3.275484639E1 +2.380260000E3,3.159298587E1 +2.380513000E3,3.066195183E1 +2.380756000E3,4.846258942E1 +2.381012000E3,4.617374426E1 +2.381278000E3,4.338282331E1 +2.381580000E3,2.990070560E1 +2.381878000E3,3.384826320E1 +2.382127000E3,4.352773294E1 +2.382476000E3,3.711143795E1 +2.382756000E3,4.818117865E1 +2.383001000E3,4.694356023E1 +2.383312000E3,4.713242320E1 +2.383556000E3,4.945634369E1 +2.383815000E3,3.710449888E1 +2.384109000E3,4.990714727E1 +2.384350000E3,5.101970483E1 +2.384663000E3,4.290224010E1 +2.384917000E3,3.958873166E1 +2.385203000E3,4.207919898E1 +2.385583000E3,3.937588823E1 +2.385864000E3,3.927490117E1 +2.386122000E3,3.708577985E1 +2.386378000E3,3.104425869E1 +2.386630000E3,2.579918418E1 +2.386935000E3,4.201717352E1 +2.387186000E3,4.469788103E1 +2.387445000E3,3.928301867E1 +2.387699000E3,4.425054811E1 +2.387999000E3,2.901032620E1 +2.388242000E3,2.431535493E1 +2.388542000E3,4.330806788E1 +2.388866000E3,4.587852948E1 +2.389138000E3,5.068663336E1 +2.389420000E3,5.151872270E1 +2.389764000E3,4.501157372E1 +2.390012000E3,4.508008781E1 +2.390288000E3,4.471818734E1 +2.390546000E3,4.453717168E1 +2.390828000E3,3.435610332E1 +2.391113000E3,3.644941891E1 +2.391398000E3,3.741409627E1 +2.391658000E3,4.311052254E1 +2.391963000E3,3.924877335E1 +2.392296000E3,3.956869731E1 +2.392537000E3,3.230149795E1 +2.392786000E3,2.941450360E1 +2.393103000E3,3.366208400E1 +2.393349000E3,2.633153711E1 +2.393653000E3,2.492589605E1 +2.393892000E3,3.518582310E1 +2.394201000E3,3.668564238E1 +2.394454000E3,3.528359554E1 +2.394744000E3,3.673717548E1 +2.395034000E3,2.851979476E1 +2.395378000E3,2.558396774E1 +2.395660000E3,3.919896752E1 +2.395930000E3,3.339597104E1 +2.396187000E3,3.351358057E1 +2.396431000E3,3.743420456E1 +2.396691000E3,4.220523227E1 +2.396991000E3,3.500233403E1 +2.397251000E3,3.475187142E1 +2.397513000E3,3.604068947E1 +2.397821000E3,4.628512725E1 +2.398126000E3,4.463943287E1 +2.398428000E3,4.311458163E1 +2.398781000E3,4.375329409E1 +2.399076000E3,3.749705009E1 +2.399316000E3,4.116349149E1 +2.399615000E3,4.694603167E1 +2.399852000E3,5.327851923E1 +2.400143000E3,5.028800274E1 +2.400380000E3,5.055607260E1 +2.400618000E3,4.184216649E1 +2.400901000E3,4.280576865E1 +2.401144000E3,4.285187037E1 +2.401437000E3,5.414729311E1 +2.401684000E3,5.760726428E1 +2.402102000E3,5.135939721E1 +2.402349000E3,5.519633184E1 +2.402608000E3,5.937895156E1 +2.402853000E3,5.722678447E1 +2.403146000E3,5.316891996E1 +2.403388000E3,5.231876976E1 +2.403684000E3,4.275047946E1 +2.403921000E3,4.497010821E1 +2.404216000E3,5.935375427E1 +2.404454000E3,5.736369919E1 +2.404707000E3,5.877823139E1 +2.404971000E3,6.138635894E1 +2.405219000E3,5.726046839E1 +2.405473000E3,5.213953550E1 +2.405771000E3,4.831408459E1 +2.406024000E3,5.195614478E1 +2.406276000E3,4.885485021E1 +2.406567000E3,4.806131720E1 +2.406866000E3,3.817379603E1 +2.407129000E3,3.496803230E1 +2.407401000E3,4.679161915E1 +2.407625000E3,4.456362030E1 +2.407878000E3,4.499112684E1 +2.408171000E3,4.695848411E1 +2.408491000E3,4.136053284E1 +2.408771000E3,3.435960184E1 +2.409033000E3,2.907775515E1 +2.409287000E3,3.179102298E1 +2.409536000E3,2.535492331E1 +2.409797000E3,2.893863695E1 +2.410015000E3,3.195695462E1 +2.410232000E3,2.883661354E1 +2.410481000E3,4.380812340E1 +2.410735000E3,5.435187737E1 +2.411017000E3,4.390478627E1 +2.411330000E3,4.136550501E1 +2.411572000E3,6.231552653E1 +2.411823000E3,4.988484474E1 +2.412072000E3,4.569499772E1 +2.412339000E3,5.207639469E1 +2.412605000E3,5.314724412E1 +2.412842000E3,5.014855129E1 +2.413111000E3,4.925815950E1 +2.413332000E3,5.545199009E1 +2.413608000E3,4.910878211E1 +2.413873000E3,5.481296501E1 +2.414229000E3,4.620355557E1 +2.414532000E3,4.757632406E1 +2.414792000E3,4.414835702E1 +2.415033000E3,4.178334533E1 +2.415296000E3,3.571558610E1 +2.415577000E3,3.622280285E1 +2.415839000E3,4.187963398E1 +2.416103000E3,4.120303067E1 +2.416426000E3,5.043875316E1 +2.416696000E3,4.738536839E1 +2.417006000E3,4.790698669E1 +2.417250000E3,4.717323409E1 +2.417613000E3,4.889624394E1 +2.417923000E3,4.615999302E1 +2.418209000E3,4.554232436E1 +2.418487000E3,4.963147342E1 +2.418748000E3,4.540077281E1 +2.419058000E3,4.402622058E1 +2.419355000E3,3.991430025E1 +2.419631000E3,5.699106589E1 +2.419880000E3,4.542610605E1 +2.420140000E3,5.871400849E1 +2.420387000E3,5.593691155E1 +2.420634000E3,5.642590944E1 +2.420987000E3,4.942882304E1 +2.421235000E3,5.122637091E1 +2.421504000E3,5.506353313E1 +2.421808000E3,4.974630362E1 +2.422098000E3,4.922446567E1 +2.422401000E3,4.711891494E1 +2.422653000E3,4.935851062E1 +2.422946000E3,5.223840607E1 +2.423180000E3,5.181747333E1 +2.423433000E3,5.106095739E1 +2.423699000E3,4.283067128E1 +2.424023000E3,4.620110870E1 +2.424283000E3,4.813646184E1 +2.424556000E3,4.673905704E1 +2.424833000E3,5.139038068E1 +2.425085000E3,4.187355918E1 +2.425330000E3,4.200690239E1 +2.425641000E3,4.094986905E1 +2.425891000E3,3.869951887E1 +2.426156000E3,4.295178440E1 +2.426411000E3,4.445235603E1 +2.426673000E3,4.180705342E1 +2.426915000E3,4.159918394E1 +2.427275000E3,5.193727105E1 +2.427528000E3,4.985744468E1 +2.427773000E3,5.143594155E1 +2.428021000E3,5.687627643E1 +2.428258000E3,4.984177159E1 +2.428554000E3,4.104898524E1 +2.428794000E3,3.740238657E1 +2.429102000E3,4.424577609E1 +2.429345000E3,5.022623751E1 +2.429627000E3,5.346928374E1 +2.429864000E3,4.448852620E1 +2.430156000E3,3.611387858E1 +2.430475000E3,3.592739777E1 +2.430726000E3,3.269867125E1 +2.431039000E3,4.089980433E1 +2.431331000E3,3.752068977E1 +2.431567000E3,3.972155082E1 +2.431870000E3,4.098289208E1 +2.432107000E3,4.068605974E1 +2.432406000E3,3.978950334E1 +2.432643000E3,3.435438837E1 +2.432933000E3,3.806187937E1 +2.433169000E3,3.613809925E1 +2.433407000E3,5.573542624E1 +2.433734000E3,4.812688919E1 +2.434035000E3,5.332611421E1 +2.434315000E3,5.453475878E1 +2.434557000E3,5.156731049E1 +2.434849000E3,4.452924889E1 +2.435086000E3,4.091217005E1 +2.435380000E3,3.495963916E1 +2.435633000E3,3.994418328E1 +2.435904000E3,5.345258512E1 +2.436200000E3,4.573029424E1 +2.436434000E3,4.666848361E1 +2.436802000E3,4.148612785E1 +2.437044000E3,3.785277445E1 +2.437301000E3,3.823545546E1 +2.437549000E3,3.883632471E1 +2.437839000E3,4.756553033E1 +2.438077000E3,4.282797221E1 +2.438369000E3,5.291874167E1 +2.438606000E3,5.394671897E1 +2.438862000E3,5.490926284E1 +2.439159000E3,5.465277565E1 +2.439395000E3,5.245345229E1 +2.439637000E3,4.823915254E1 +2.440022000E3,5.658050668E1 +2.440281000E3,5.255468157E1 +2.440546000E3,4.365897331E1 +2.440828000E3,4.187636724E1 +2.441125000E3,4.916172461E1 +2.441365000E3,5.038635874E1 +2.441645000E3,5.238005511E1 +2.441868000E3,4.979548238E1 +2.442114000E3,5.164563876E1 +2.442410000E3,4.795862612E1 +2.442694000E3,4.406311297E1 +2.442980000E3,4.461066687E1 +2.443265000E3,3.990213588E1 +2.443525000E3,4.270339676E1 +2.443815000E3,4.671533321E1 +2.444064000E3,4.922681237E1 +2.444311000E3,5.115751882E1 +2.444605000E3,4.659279655E1 +2.444851000E3,4.805254743E1 +2.445152000E3,4.646584218E1 +2.445447000E3,3.924248597E1 +2.445698000E3,3.657018775E1 +2.445976000E3,3.978585816E1 +2.446317000E3,5.134473527E1 +2.446569000E3,4.872028256E1 +2.446851000E3,4.793203365E1 +2.447088000E3,4.917648823E1 +2.447345000E3,4.514648035E1 +2.447599000E3,4.827609085E1 +2.447864000E3,5.009329877E1 +2.448138000E3,4.858127151E1 +2.448430000E3,4.885678900E1 +2.448726000E3,4.038666943E1 +2.448956000E3,3.788824065E1 +2.449214000E3,4.872306097E1 +2.449516000E3,5.112419798E1 +2.449767000E3,4.394357347E1 +2.450028000E3,5.187358067E1 +2.450298000E3,4.764520743E1 +2.450575000E3,5.323515688E1 +2.450844000E3,4.730661272E1 +2.451150000E3,5.022143967E1 +2.451400000E3,4.244080150E1 +2.451697000E3,4.540622562E1 +2.452002000E3,4.987171470E1 +2.452273000E3,4.928771096E1 +2.452519000E3,4.415614577E1 +2.452847000E3,4.529816891E1 +2.453138000E3,3.130480949E1 +2.453407000E3,3.727195618E1 +2.453707000E3,4.218798188E1 +2.453975000E3,3.196426842E1 +2.454240000E3,2.986758668E1 +2.454534000E3,4.365366219E1 +2.454795000E3,4.363233606E1 +2.455054000E3,4.576258560E1 +2.455297000E3,4.600510844E1 +2.455546000E3,5.143992334E1 +2.455816000E3,4.451792491E1 +2.456172000E3,3.834658463E1 +2.456438000E3,4.961865906E1 +2.456716000E3,4.301133302E1 +2.457025000E3,5.185950840E1 +2.457284000E3,4.578127088E1 +2.457582000E3,4.860789001E1 +2.457857000E3,4.548301241E1 +2.458087000E3,5.726595471E1 +2.458343000E3,4.581143143E1 +2.458590000E3,4.593076535E1 +2.458898000E3,4.646845677E1 +2.459143000E3,4.385664195E1 +2.459499000E3,3.921291428E1 +2.459756000E3,4.336490005E1 +2.460079000E3,5.059416731E1 +2.460323000E3,5.383728406E1 +2.460609000E3,4.336002656E1 +2.460894000E3,3.810358455E1 +2.461148000E3,4.341384577E1 +2.461406000E3,4.240002850E1 +2.461668000E3,4.220171306E1 +2.461957000E3,4.165441002E1 +2.462218000E3,4.110791112E1 +2.462543000E3,3.718059239E1 +2.462873000E3,4.490190793E1 +2.463162000E3,4.449127269E1 +2.463461000E3,5.110192526E1 +2.463709000E3,4.670759724E1 +2.464024000E3,4.554197086E1 +2.464345000E3,4.295638115E1 +2.464598000E3,4.260186095E1 +2.464844000E3,3.838281454E1 +2.465094000E3,4.864552318E1 +2.465348000E3,4.722694913E1 +2.465597000E3,5.723123112E1 +2.465970000E3,5.678247819E1 +2.466226000E3,5.304857482E1 +2.466490000E3,5.799491543E1 +2.466745000E3,5.566332539E1 +2.467000000E3,5.532803606E1 +2.467301000E3,5.480406224E1 +2.467518000E3,5.281426808E1 +2.467773000E3,5.319750336E1 +2.468030000E3,4.504180471E1 +2.468309000E3,4.011552860E1 +2.468536000E3,3.286668959E1 +2.468782000E3,5.187437917E1 +2.469159000E3,5.342027818E1 +2.469405000E3,4.655027014E1 +2.469685000E3,4.875434900E1 +2.469968000E3,4.400777727E1 +2.470228000E3,4.944370484E1 +2.470524000E3,4.819898526E1 +2.470826000E3,4.906267157E1 +2.471101000E3,4.559683511E1 +2.471407000E3,5.066052597E1 +2.471662000E3,5.052511938E1 +2.471933000E3,4.854316053E1 +2.472243000E3,4.720397127E1 +2.472513000E3,4.539713693E1 +2.472765000E3,4.504800702E1 +2.473077000E3,4.756996091E1 +2.473381000E3,4.502772911E1 +2.473668000E3,4.844141365E1 +2.473909000E3,4.718772198E1 +2.474176000E3,5.036014826E1 +2.474415000E3,4.734822430E1 +2.474659000E3,4.506554867E1 +2.474941000E3,4.590585801E1 +2.475227000E3,4.808550728E1 +2.475549000E3,4.744751902E1 +2.475816000E3,5.139502060E1 +2.476110000E3,4.565542501E1 +2.476367000E3,4.502651441E1 +2.476614000E3,4.529198411E1 +2.476876000E3,4.841642572E1 +2.477138000E3,4.904966766E1 +2.477430000E3,5.061185879E1 +2.477703000E3,4.805167318E1 +2.477973000E3,4.840268940E1 +2.478233000E3,4.609690512E1 +2.478491000E3,5.080806253E1 +2.478854000E3,4.929079330E1 +2.479112000E3,4.887431247E1 +2.479382000E3,4.582116343E1 +2.479677000E3,4.614295426E1 +2.479939000E3,5.004731017E1 +2.480247000E3,5.118895049E1 +2.480496000E3,4.750144805E1 +2.480785000E3,4.691637905E1 +2.481084000E3,4.575243018E1 +2.481328000E3,4.498034363E1 +2.481622000E3,5.049144453E1 +2.481951000E3,4.811617152E1 +2.482214000E3,4.600387593E1 +2.482494000E3,5.163944801E1 +2.482753000E3,4.933311419E1 +2.482991000E3,4.946534766E1 +2.483244000E3,4.580757204E1 +2.483487000E3,4.797573247E1 +2.483734000E3,4.560844100E1 +2.483990000E3,5.039329574E1 +2.484313000E3,5.052905321E1 +2.484577000E3,5.131938081E1 +2.484833000E3,4.901245069E1 +2.485113000E3,5.233648083E1 +2.485461000E3,5.215489758E1 +2.485749000E3,5.451606287E1 +2.486018000E3,5.043201098E1 +2.486334000E3,5.091085093E1 +2.486650000E3,4.972266732E1 +2.486916000E3,4.846864702E1 +2.487167000E3,4.843730663E1 +2.487412000E3,5.285205631E1 +2.487677000E3,5.695937588E1 +2.487965000E3,5.067248408E1 +2.488216000E3,4.955689254E1 +2.488580000E3,4.789771891E1 +2.488828000E3,4.640186686E1 +2.489150000E3,4.956289338E1 +2.489428000E3,4.916705799E1 +2.489718000E3,4.250319869E1 +2.489959000E3,4.211788948E1 +2.490259000E3,4.711467977E1 +2.490508000E3,5.336087879E1 +2.490805000E3,5.163346506E1 +2.491066000E3,5.303328317E1 +2.491377000E3,5.018594076E1 +2.491684000E3,4.569780009E1 +2.492029000E3,4.677168871E1 +2.492273000E3,4.586755987E1 +2.492522000E3,5.020047651E1 +2.492768000E3,4.585538278E1 +2.493006000E3,5.027464230E1 +2.493315000E3,4.719632652E1 +2.493608000E3,4.892998103E1 +2.493874000E3,4.659859577E1 +2.494131000E3,4.485377967E1 +2.494387000E3,4.661063763E1 +2.494635000E3,4.873112034E1 +2.494904000E3,5.011233058E1 +2.495259000E3,4.996207620E1 +2.495523000E3,5.026371938E1 +2.495789000E3,4.897334151E1 +2.496086000E3,4.919412247E1 +2.496330000E3,4.448238049E1 +2.496598000E3,5.779881243E1 +2.496845000E3,5.068443192E1 +2.497079000E3,5.452206946E1 +2.497328000E3,6.091811093E1 +2.497574000E3,5.545025588E1 +2.497819000E3,5.118451852E1 +2.498124000E3,5.647063434E1 +2.498436000E3,5.942897676E1 +2.498681000E3,6.063927987E1 +2.498932000E3,5.256584857E1 +2.499203000E3,5.942844343E1 +2.499465000E3,5.268198933E1 +2.499726000E3,5.561310022E1 +2.499989000E3,5.551348586E1 +2.500270000E3,5.728700965E1 +2.500550000E3,5.848024533E1 +2.500856000E3,5.545551244E1 +2.501156000E3,7.074712648E1 +2.501405000E3,6.649397556E1 +2.501727000E3,6.577106108E1 +2.501964000E3,5.791155905E1 +2.502223000E3,6.571272960E1 +2.502476000E3,5.223691777E1 +2.502731000E3,5.099379006E1 +2.502989000E3,4.996024440E1 +2.503265000E3,4.587573023E1 +2.503515000E3,6.660646739E1 +2.503792000E3,5.426812996E1 +2.504090000E3,4.221263073E1 +2.504348000E3,3.961359220E1 +2.504607000E3,3.317448387E1 +2.504957000E3,2.765634596E1 +2.505202000E3,5.260508289E1 +2.505444000E3,4.970766119E1 +2.505723000E3,5.961421356E1 +2.506010000E3,5.761735716E1 +2.506316000E3,4.386011183E1 +2.506629000E3,3.297646158E1 +2.506928000E3,3.461351567E1 +2.507171000E3,3.422494413E1 +2.507415000E3,3.898815557E1 +2.507661000E3,3.916714623E1 +2.507958000E3,4.409544564E1 +2.508199000E3,4.040812578E1 +2.508495000E3,4.100804729E1 +2.508767000E3,4.155083379E1 +2.509073000E3,4.256659126E1 +2.509346000E3,4.665111645E1 +2.509615000E3,4.785704834E1 +2.509926000E3,4.957995318E1 +2.510246000E3,5.281308228E1 +2.510533000E3,5.716195403E1 +2.510847000E3,5.384222007E1 +2.511087000E3,4.682850643E1 +2.511483000E3,5.585229854E1 +2.511769000E3,5.797880255E1 +2.512061000E3,5.008051045E1 +2.512305000E3,4.616221083E1 +2.512545000E3,5.837834308E1 +2.512782000E3,4.588894556E1 +2.513082000E3,5.827978204E1 +2.513321000E3,5.321307958E1 +2.513625000E3,5.419914666E1 +2.513860000E3,4.249936315E1 +2.514160000E3,5.093700871E1 +2.514505000E3,4.733309734E1 +2.514807000E3,5.739188753E1 +2.515049000E3,5.684870925E1 +2.515326000E3,5.429714525E1 +2.515551000E3,5.304528611E1 +2.515847000E3,6.048302750E1 +2.516097000E3,5.298092655E1 +2.516397000E3,5.664346713E1 +2.516634000E3,5.062362510E1 +2.516910000E3,5.059011404E1 +2.517165000E3,5.074931344E1 +2.517424000E3,5.193937267E1 +2.517672000E3,4.773080825E1 +2.517933000E3,4.886471101E1 +2.518191000E3,4.258084657E1 +2.518440000E3,4.144243799E1 +2.518697000E3,3.266068365E1 +2.518962000E3,3.662092465E1 +2.519211000E3,4.002326553E1 +2.519469000E3,5.193824268E1 +2.519821000E3,5.548381163E1 +2.520087000E3,5.245445808E1 +2.520336000E3,4.447536752E1 +2.520718000E3,5.931091731E1 +2.521010000E3,5.514928156E1 +2.521305000E3,5.194242569E1 +2.521541000E3,5.632439964E1 +2.521781000E3,4.768714929E1 +2.522074000E3,3.967116686E1 +2.522306000E3,3.457523914E1 +2.522554000E3,3.414939493E1 +2.522808000E3,3.034285017E1 +2.523103000E3,3.725639399E1 +2.523347000E3,5.824523011E1 +2.523645000E3,5.697741808E1 +2.524002000E3,5.995361389E1 +2.524244000E3,5.516819042E1 +2.524491000E3,5.520201782E1 +2.524765000E3,4.576677797E1 +2.524988000E3,5.785527848E1 +2.525299000E3,5.093237528E1 +2.525544000E3,4.090627494E1 +2.525822000E3,3.111750175E1 +2.526056000E3,2.764971736E1 +2.526311000E3,2.852524033E1 +2.526617000E3,3.508264660E1 +2.526905000E3,5.067917717E1 +2.527241000E3,4.646824007E1 +2.527487000E3,3.686495987E1 +2.527738000E3,3.822220480E1 +2.527988000E3,3.764348220E1 +2.528232000E3,4.278450517E1 +2.528563000E3,4.881983602E1 +2.528870000E3,4.048435148E1 +2.529125000E3,4.047282835E1 +2.529398000E3,4.602715630E1 +2.529632000E3,4.358719476E1 +2.529925000E3,4.185499728E1 +2.530224000E3,4.428160693E1 +2.530451000E3,5.370094630E1 +2.530771000E3,4.662369716E1 +2.531057000E3,4.486368653E1 +2.531322000E3,3.985753269E1 +2.531579000E3,3.868983993E1 +2.531842000E3,4.397673982E1 +2.532129000E3,4.465178920E1 +2.532379000E3,4.071629694E1 +2.532681000E3,3.700154265E1 +2.532925000E3,3.709745900E1 +2.533169000E3,3.856350220E1 +2.533454000E3,3.780017804E1 +2.533739000E3,4.079153270E1 +2.534053000E3,3.467337947E1 +2.534304000E3,3.872357849E1 +2.534571000E3,4.188092371E1 +2.534878000E3,4.226520735E1 +2.535180000E3,4.433351029E1 +2.535433000E3,4.196124368E1 +2.535679000E3,4.159710638E1 +2.535934000E3,4.131920574E1 +2.536230000E3,4.013333591E1 +2.536496000E3,3.861252617E1 +2.536812000E3,3.205810696E1 +2.537071000E3,3.900017908E1 +2.537321000E3,3.720890888E1 +2.537589000E3,3.571752088E1 +2.537899000E3,3.466875388E1 +2.538158000E3,3.490809444E1 +2.538414000E3,2.846246396E1 +2.538721000E3,3.471466025E1 +2.539000000E3,3.262267006E1 +2.539250000E3,2.900340615E1 +2.539526000E3,2.962734770E1 +2.539843000E3,4.051335289E1 +2.540219000E3,3.732414883E1 +2.540478000E3,3.212776280E1 +2.540731000E3,3.980002135E1 +2.541002000E3,4.402529692E1 +2.541305000E3,3.531142487E1 +2.541570000E3,4.157255463E1 +2.541892000E3,4.121686373E1 +2.542138000E3,3.512055425E1 +2.542435000E3,3.058422839E1 +2.542704000E3,3.860796470E1 +2.542951000E3,4.158955283E1 +2.543254000E3,4.126835549E1 +2.543598000E3,4.557459954E1 +2.543842000E3,4.195620726E1 +2.544088000E3,4.759905541E1 +2.544347000E3,4.089593512E1 +2.544592000E3,4.224934090E1 +2.544840000E3,3.548720999E1 +2.545141000E3,4.189266277E1 +2.545422000E3,4.058854606E1 +2.545652000E3,3.761551365E1 +2.545897000E3,3.643024250E1 +2.546173000E3,3.544845567E1 +2.546439000E3,3.816851754E1 +2.546779000E3,3.801212128E1 +2.547110000E3,3.288266257E1 +2.547379000E3,4.063952307E1 +2.547641000E3,4.765684387E1 +2.547893000E3,4.402640436E1 +2.548143000E3,4.172886183E1 +2.548441000E3,3.808222191E1 +2.548685000E3,3.637035664E1 +2.548962000E3,3.879815953E1 +2.549230000E3,5.433785228E1 +2.549540000E3,5.428002325E1 +2.549852000E3,5.430864003E1 +2.550121000E3,5.376325395E1 +2.550389000E3,5.250586376E1 +2.550641000E3,5.329413218E1 +2.550946000E3,3.817927317E1 +2.551218000E3,3.779289824E1 +2.551493000E3,4.904361964E1 +2.551759000E3,5.500168111E1 +2.552006000E3,4.745774118E1 +2.552261000E3,5.304049624E1 +2.552515000E3,4.933664563E1 +2.552779000E3,3.482983031E1 +2.553043000E3,3.914561037E1 +2.553378000E3,3.318943686E1 +2.553659000E3,2.674748735E1 +2.553917000E3,2.500565902E1 +2.554234000E3,3.331261434E1 +2.554489000E3,3.380079275E1 +2.554753000E3,3.632095841E1 +2.554996000E3,3.606888467E1 +2.555239000E3,4.759559903E1 +2.555541000E3,5.588542149E1 +2.555837000E3,5.768171500E1 +2.556076000E3,5.837962370E1 +2.556358000E3,5.761486260E1 +2.556647000E3,5.408185929E1 +2.556914000E3,5.624815374E1 +2.557248000E3,4.727853091E1 +2.557554000E3,3.999550071E1 +2.557822000E3,4.090986684E1 +2.558062000E3,3.411171601E1 +2.558302000E3,3.042998918E1 +2.558550000E3,3.392526215E1 +2.558807000E3,3.801243567E1 +2.559082000E3,4.390440101E1 +2.559357000E3,4.215163378E1 +2.559616000E3,4.616573562E1 +2.559972000E3,4.170066459E1 +2.560245000E3,2.972551911E1 +2.560517000E3,3.987643023E1 +2.560765000E3,4.046237199E1 +2.561011000E3,4.268708813E1 +2.561258000E3,4.450541644E1 +2.561531000E3,4.611922799E1 +2.561775000E3,4.492719317E1 +2.562027000E3,4.345851098E1 +2.562302000E3,5.022295857E1 +2.562533000E3,4.986016935E1 +2.562786000E3,3.932672790E1 +2.563211000E3,3.777119812E1 +2.563479000E3,4.577537823E1 +2.563731000E3,5.443473776E1 +2.563977000E3,5.947837126E1 +2.564252000E3,5.014881480E1 +2.564539000E3,4.884415531E1 +2.564781000E3,4.451698294E1 +2.565088000E3,3.693106642E1 +2.565361000E3,3.096881298E1 +2.565624000E3,2.635486448E1 +2.565885000E3,2.734213385E1 +2.566246000E3,3.979362654E1 +2.566493000E3,3.382738554E1 +2.566797000E3,3.469438245E1 +2.567097000E3,4.097528595E1 +2.567346000E3,4.285297734E1 +2.567644000E3,4.930003444E1 +2.567891000E3,4.540271843E1 +2.568170000E3,3.109775861E1 +2.568407000E3,2.738661195E1 +2.568701000E3,3.024785153E1 +2.568952000E3,3.235217301E1 +2.569220000E3,3.196941264E1 +2.569567000E3,4.299833718E1 +2.569862000E3,4.496000509E1 +2.570178000E3,4.562225815E1 +2.570442000E3,4.437451260E1 +2.570707000E3,3.949227756E1 +2.570950000E3,2.951847370E1 +2.571202000E3,3.800151296E1 +2.571472000E3,4.650517590E1 +2.571732000E3,3.967561664E1 +2.571975000E3,3.149456620E1 +2.572246000E3,5.234083710E1 +2.572527000E3,4.544839619E1 +2.572859000E3,4.436174777E1 +2.573168000E3,4.369290756E1 +2.573429000E3,4.420543128E1 +2.573728000E3,4.389854646E1 +2.573968000E3,4.580346210E1 +2.574268000E3,4.881141748E1 +2.574509000E3,4.708023256E1 +2.574802000E3,3.388696242E1 +2.575045000E3,2.922489212E1 +2.575339000E3,3.941924125E1 +2.575597000E3,4.733040375E1 +2.575906000E3,4.790376430E1 +2.576245000E3,4.328559785E1 +2.576517000E3,4.720947277E1 +2.576791000E3,4.076260480E1 +2.577092000E3,3.249905806E1 +2.577324000E3,3.886850876E1 +2.577566000E3,3.577483806E1 +2.577814000E3,4.105002685E1 +2.578080000E3,3.881208350E1 +2.578375000E3,5.720708534E1 +2.578624000E3,4.933084675E1 +2.578932000E3,5.989261963E1 +2.579254000E3,5.193127116E1 +2.579506000E3,4.843920497E1 +2.579747000E3,4.570821188E1 +2.580001000E3,4.446748829E1 +2.580244000E3,4.006228376E1 +2.580497000E3,2.933332862E1 +2.580745000E3,4.525678604E1 +2.580989000E3,4.717489692E1 +2.581288000E3,5.239736286E1 +2.581587000E3,5.268105849E1 +2.581851000E3,4.960616241E1 +2.582112000E3,4.637217789E1 +2.582361000E3,4.676379781E1 +2.582583000E3,4.083594902E1 +2.582903000E3,2.696140701E1 +2.583176000E3,2.668057590E1 +2.583429000E3,2.900886287E1 +2.583692000E3,2.732690452E1 +2.583951000E3,3.475308428E1 +2.584205000E3,4.782860484E1 +2.584480000E3,4.928978168E1 +2.584742000E3,3.697304160E1 +2.585017000E3,3.390321432E1 +2.585248000E3,4.818778278E1 +2.585552000E3,5.175969441E1 +2.585851000E3,4.752724055E1 +2.586108000E3,5.047732228E1 +2.586408000E3,5.003267867E1 +2.586651000E3,4.995698879E1 +2.586934000E3,4.985539117E1 +2.587202000E3,4.558719065E1 +2.587455000E3,4.973387236E1 +2.587702000E3,5.190737686E1 +2.587964000E3,4.955516560E1 +2.588211000E3,5.039526507E1 +2.588461000E3,3.897042435E1 +2.588748000E3,2.919124678E1 +2.589063000E3,3.061867322E1 +2.589398000E3,4.010104895E1 +2.589690000E3,3.640442215E1 +2.589998000E3,4.479952304E1 +2.590261000E3,4.757967128E1 +2.590558000E3,4.812333533E1 +2.590802000E3,4.603482331E1 +2.591083000E3,2.960043464E1 +2.591326000E3,3.684354753E1 +2.591591000E3,4.359182452E1 +2.591849000E3,4.788602237E1 +2.592228000E3,4.468031543E1 +2.592527000E3,3.894688899E1 +2.592778000E3,2.800490026E1 +2.593035000E3,4.310888325E1 +2.593333000E3,4.628339380E1 +2.593602000E3,4.440124594E1 +2.593883000E3,4.123163794E1 +2.594160000E3,3.127645239E1 +2.594429000E3,3.071812965E1 +2.594749000E3,4.618618296E1 +2.595070000E3,5.248181749E1 +2.595312000E3,4.786265879E1 +2.595668000E3,3.990233287E1 +2.595973000E3,4.173583037E1 +2.596256000E3,3.709278400E1 +2.596497000E3,3.229385861E1 +2.596813000E3,4.380573021E1 +2.597084000E3,4.783628282E1 +2.597325000E3,5.024593568E1 +2.597578000E3,5.102379549E1 +2.597828000E3,4.760481411E1 +2.598089000E3,3.822780835E1 +2.598387000E3,3.417342767E1 +2.598736000E3,2.863579065E1 +2.598981000E3,2.886228233E1 +2.599228000E3,2.855965247E1 +2.599493000E3,3.083396855E1 +2.599764000E3,3.581659374E1 +2.600032000E3,4.317647632E1 +2.600330000E3,4.853625621E1 +2.600623000E3,5.102467342E1 +2.600867000E3,4.877836926E1 +2.601112000E3,4.705612686E1 +2.601365000E3,4.889085742E1 +2.601612000E3,4.654488136E1 +2.601956000E3,4.055024190E1 +2.602220000E3,3.990851266E1 +2.602547000E3,3.648352551E1 +2.602794000E3,5.324982942E1 +2.603078000E3,5.268965363E1 +2.603338000E3,4.851189142E1 +2.603637000E3,5.135006473E1 +2.603925000E3,4.939301404E1 +2.604238000E3,5.337101389E1 +2.604488000E3,5.022765286E1 +2.604734000E3,5.253186666E1 +2.605064000E3,4.127453431E1 +2.605321000E3,4.114070867E1 +2.605572000E3,4.042282231E1 +2.605820000E3,4.255774466E1 +2.606073000E3,4.746726668E1 +2.606319000E3,4.761848671E1 +2.606565000E3,4.983628061E1 +2.606849000E3,3.046517787E1 +2.607082000E3,3.832211131E1 +2.607339000E3,4.741131966E1 +2.607609000E3,4.453335589E1 +2.607874000E3,3.545592153E1 +2.608197000E3,4.672891376E1 +2.608451000E3,4.755881287E1 +2.608706000E3,4.827652641E1 +2.608952000E3,4.727153141E1 +2.609226000E3,4.731450942E1 +2.609537000E3,3.981385402E1 +2.609784000E3,3.194698732E1 +2.610041000E3,3.314164027E1 +2.610283000E3,2.819786732E1 +2.610546000E3,2.664547785E1 +2.610857000E3,2.913544778E1 +2.611125000E3,3.961651759E1 +2.611432000E3,3.852777426E1 +2.611666000E3,3.205673146E1 +2.611951000E3,4.233182010E1 +2.612229000E3,3.378509898E1 +2.612454000E3,4.071755552E1 +2.612730000E3,5.018278065E1 +2.613050000E3,4.100034395E1 +2.613359000E3,3.892108016E1 +2.613628000E3,5.091321799E1 +2.613871000E3,4.336916838E1 +2.614108000E3,3.960788811E1 +2.614408000E3,3.948227358E1 +2.614722000E3,3.631863435E1 +2.614975000E3,4.057042340E1 +2.615256000E3,4.414132009E1 +2.615486000E3,4.180934435E1 +2.615750000E3,4.153999936E1 +2.615997000E3,3.521796466E1 +2.616260000E3,5.443854687E1 +2.616548000E3,5.408118563E1 +2.616842000E3,4.951275264E1 +2.617090000E3,5.182722031E1 +2.617344000E3,4.327522742E1 +2.617643000E3,5.375122422E1 +2.617975000E3,5.216635190E1 +2.618233000E3,4.126006713E1 +2.618497000E3,4.980260599E1 +2.618804000E3,4.655838197E1 +2.619044000E3,4.977945459E1 +2.619327000E3,4.875559075E1 +2.619562000E3,4.983226039E1 +2.619834000E3,4.741689273E1 +2.620075000E3,4.923498746E1 +2.620352000E3,4.923432072E1 +2.620664000E3,4.040876723E1 +2.620916000E3,3.889825840E1 +2.621142000E3,5.245081579E1 +2.621448000E3,4.684934794E1 +2.621687000E3,4.583906640E1 +2.621992000E3,4.366517623E1 +2.622230000E3,3.373873872E1 +2.622475000E3,3.701694694E1 +2.622750000E3,3.544967426E1 +2.623008000E3,3.363206222E1 +2.623285000E3,4.009589135E1 +2.623562000E3,4.408709562E1 +2.623825000E3,4.800133533E1 +2.624131000E3,4.855432282E1 +2.624414000E3,4.808187444E1 +2.624671000E3,5.252566194E1 +2.624932000E3,4.890333861E1 +2.625183000E3,4.370428781E1 +2.625430000E3,3.668118979E1 +2.625747000E3,4.353955331E1 +2.626003000E3,4.224026412E1 +2.626267000E3,4.311785789E1 +2.626514000E3,3.517806855E1 +2.626763000E3,3.981966751E1 +2.627025000E3,3.444602265E1 +2.627334000E3,3.341390757E1 +2.627660000E3,3.926570124E1 +2.627920000E3,4.341089288E1 +2.628216000E3,4.081134870E1 +2.628467000E3,3.912400300E1 +2.628730000E3,3.657553946E1 +2.629000000E3,3.072838888E1 +2.629284000E3,2.929703023E1 +2.629549000E3,3.378014550E1 +2.629844000E3,4.760306323E1 +2.630080000E3,4.024322042E1 +2.630373000E3,3.235913140E1 +2.630611000E3,3.920509877E1 +2.630919000E3,5.103841717E1 +2.631222000E3,5.813980805E1 +2.631514000E3,5.190256812E1 +2.631753000E3,4.653294376E1 +2.632054000E3,4.782140153E1 +2.632295000E3,4.977458693E1 +2.632592000E3,5.371197571E1 +2.632828000E3,5.056512655E1 +2.633140000E3,5.325824914E1 +2.633383000E3,4.973751947E1 +2.633632000E3,4.853342473E1 +2.633950000E3,3.905011010E1 +2.634254000E3,3.751700759E1 +2.634549000E3,5.292771607E1 +2.634786000E3,5.557450981E1 +2.635082000E3,4.974692283E1 +2.635319000E3,5.393938197E1 +2.635611000E3,4.675981835E1 +2.635848000E3,4.299614910E1 +2.636145000E3,3.756646750E1 +2.636395000E3,3.824353200E1 +2.636648000E3,3.045317917E1 +2.636942000E3,3.257931849E1 +2.637299000E3,3.010616025E1 +2.637599000E3,4.995329379E1 +2.637834000E3,4.824584689E1 +2.638071000E3,5.059212149E1 +2.638363000E3,5.330633429E1 +2.638612000E3,5.343612136E1 +2.638897000E3,4.755550111E1 +2.639122000E3,4.119881812E1 +2.639362000E3,3.902726568E1 +2.639659000E3,4.451944661E1 +2.639896000E3,4.587471035E1 +2.640164000E3,4.115502802E1 +2.640409000E3,4.505311495E1 +2.640656000E3,4.913968689E1 +2.640951000E3,5.110923180E1 +2.641208000E3,4.281604120E1 +2.641505000E3,4.825854961E1 +2.641748000E3,4.861588211E1 +2.642059000E3,4.450542116E1 +2.642304000E3,4.274821036E1 +2.642556000E3,3.503446158E1 +2.642862000E3,4.080900103E1 +2.643164000E3,4.152079562E1 +2.643527000E3,3.935881933E1 +2.643833000E3,3.760570593E1 +2.644082000E3,3.959144469E1 +2.644327000E3,4.007918652E1 +2.644573000E3,4.288120719E1 +2.644814000E3,4.793099478E1 +2.645114000E3,4.424069452E1 +2.645391000E3,4.078427844E1 +2.645635000E3,3.902795236E1 +2.645871000E3,4.393773718E1 +2.646111000E3,4.085627764E1 +2.646355000E3,4.393316509E1 +2.646690000E3,4.428892908E1 +2.646958000E3,4.601464396E1 +2.647235000E3,4.300358696E1 +2.647474000E3,4.083829680E1 +2.647758000E3,5.406220971E1 +2.648003000E3,4.253716581E1 +2.648273000E3,4.506680000E1 +2.648514000E3,3.500046728E1 +2.648758000E3,3.537281462E1 +2.649004000E3,5.013819891E1 +2.649251000E3,5.388943830E1 +2.649556000E3,5.656370208E1 +2.649891000E3,5.696480404E1 +2.650216000E3,4.675400561E1 +2.650515000E3,4.179549274E1 +2.650777000E3,4.536624285E1 +2.651084000E3,4.297370528E1 +2.651336000E3,4.376785410E1 +2.651635000E3,3.354560746E1 +2.651881000E3,2.537939319E1 +2.652180000E3,3.168783420E1 +2.652481000E3,4.898553010E1 +2.652737000E3,5.438993966E1 +2.652992000E3,4.963834041E1 +2.653252000E3,4.227369117E1 +2.653502000E3,4.301436765E1 +2.653812000E3,3.649724292E1 +2.654061000E3,4.086211966E1 +2.654320000E3,3.223281741E1 +2.654605000E3,2.807672508E1 +2.654836000E3,2.764825285E1 +2.655100000E3,4.598866982E1 +2.655350000E3,4.383741939E1 +2.655590000E3,4.883555528E1 +2.655837000E3,4.815765811E1 +2.656131000E3,5.047261312E1 +2.656369000E3,5.124829846E1 +2.656626000E3,3.956134092E1 +2.656925000E3,3.503286763E1 +2.657200000E3,3.224209198E1 +2.657447000E3,4.294806319E1 +2.657761000E3,4.898454413E1 +2.658011000E3,5.320780356E1 +2.658286000E3,5.345186604E1 +2.658542000E3,4.849291145E1 +2.658789000E3,5.098648363E1 +2.659034000E3,4.892931203E1 +2.659289000E3,4.580698225E1 +2.659530000E3,3.709695762E1 +2.659834000E3,3.457925551E1 +2.660081000E3,3.855219813E1 +2.660383000E3,3.845534481E1 +2.660628000E3,4.619372518E1 +2.660921000E3,4.848307744E1 +2.661167000E3,4.790880967E1 +2.661464000E3,4.667520128E1 +2.661710000E3,4.098851532E1 +2.662006000E3,4.035468673E1 +2.662245000E3,3.753010710E1 +2.662592000E3,4.792080660E1 +2.662862000E3,4.709835917E1 +2.663123000E3,3.501409506E1 +2.663374000E3,3.240664296E1 +2.663631000E3,4.326696615E1 +2.663874000E3,4.411177933E1 +2.664133000E3,3.936378145E1 +2.664382000E3,3.443614227E1 +2.664648000E3,3.761654306E1 +2.664944000E3,5.164457484E1 +2.665198000E3,2.810669920E1 +2.665512000E3,2.931307063E1 +2.665876000E3,3.108643425E1 +2.666131000E3,3.278101889E1 +2.666439000E3,4.277860150E1 +2.666693000E3,4.213131936E1 +2.667002000E3,3.935849781E1 +2.667259000E3,4.137879880E1 +2.667575000E3,3.790565018E1 +2.667827000E3,3.845274836E1 +2.668153000E3,3.676763670E1 +2.668452000E3,3.751975183E1 +2.668696000E3,3.224848897E1 +2.669023000E3,3.611134142E1 +2.669316000E3,4.467495655E1 +2.669607000E3,4.735906080E1 +2.669885000E3,5.159453510E1 +2.670167000E3,5.321308782E1 +2.670485000E3,5.282242631E1 +2.670747000E3,5.127719277E1 +2.670997000E3,4.902251972E1 +2.671243000E3,4.450532678E1 +2.671540000E3,3.864078148E1 +2.671788000E3,3.720620343E1 +2.672044000E3,4.496142790E1 +2.672357000E3,4.705640535E1 +2.672617000E3,3.890316941E1 +2.672864000E3,4.027639889E1 +2.673159000E3,4.202335245E1 +2.673421000E3,4.285452583E1 +2.673720000E3,3.626679930E1 +2.673964000E3,4.670395357E1 +2.674210000E3,4.915586670E1 +2.674514000E3,5.353785994E1 +2.674811000E3,5.414016767E1 +2.675048000E3,5.591079353E1 +2.675364000E3,3.844031623E1 +2.675661000E3,3.124520008E1 +2.675946000E3,3.566755596E1 +2.676189000E3,3.490423263E1 +2.676498000E3,5.070292882E1 +2.676799000E3,5.356134163E1 +2.677047000E3,5.161634227E1 +2.677305000E3,5.185439004E1 +2.677581000E3,5.315585532E1 +2.677832000E3,4.418578879E1 +2.678087000E3,3.972693415E1 +2.678335000E3,4.338465258E1 +2.678650000E3,5.168404535E1 +2.678934000E3,4.984483773E1 +2.679249000E3,4.977401184E1 +2.679507000E3,5.044345616E1 +2.679823000E3,4.232585634E1 +2.680128000E3,3.026551109E1 +2.680400000E3,3.009656886E1 +2.680660000E3,4.894119824E1 +2.680913000E3,4.712312643E1 +2.681208000E3,4.239602863E1 +2.681477000E3,4.875338950E1 +2.681768000E3,4.887945421E1 +2.682128000E3,4.379352407E1 +2.682394000E3,4.073494394E1 +2.682637000E3,3.685872977E1 +2.682895000E3,2.883047793E1 +2.683163000E3,3.769147996E1 +2.683455000E3,3.713975885E1 +2.683749000E3,4.855681627E1 +2.683994000E3,4.936430656E1 +2.684290000E3,5.303947120E1 +2.684540000E3,5.031092673E1 +2.684833000E3,4.783130186E1 +2.685073000E3,4.898734587E1 +2.685348000E3,4.686166956E1 +2.685598000E3,4.244245178E1 +2.685917000E3,3.872119900E1 +2.686161000E3,4.891396583E1 +2.686434000E3,4.491629365E1 +2.686687000E3,3.588391777E1 +2.686952000E3,3.156965948E1 +2.687206000E3,3.184725563E1 +2.687480000E3,3.153561496E1 +2.687733000E3,3.669659228E1 +2.688049000E3,3.507922771E1 +2.688340000E3,3.251056517E1 +2.688645000E3,4.079174670E1 +2.688915000E3,4.837277005E1 +2.689163000E3,4.669136560E1 +2.689426000E3,3.659115086E1 +2.689751000E3,4.814125321E1 +2.689994000E3,4.721335081E1 +2.690235000E3,5.119773767E1 +2.690471000E3,4.584232122E1 +2.690738000E3,4.687969307E1 +2.691006000E3,4.116197132E1 +2.691312000E3,2.850019915E1 +2.691659000E3,3.175399572E1 +2.691948000E3,3.215115185E1 +2.692197000E3,2.655209633E1 +2.692466000E3,3.136629444E1 +2.692727000E3,2.928762690E1 +2.692976000E3,2.688909217E1 +2.693281000E3,3.350197248E1 +2.693518000E3,3.760267236E1 +2.693776000E3,3.194141055E1 +2.694032000E3,3.113878807E1 +2.694299000E3,2.830606211E1 +2.694602000E3,2.632227285E1 +2.694941000E3,2.736240000E1 +2.695184000E3,3.956118458E1 +2.695488000E3,4.069974415E1 +2.695732000E3,4.498590768E1 +2.696030000E3,3.370199172E1 +2.696300000E3,3.284857688E1 +2.696535000E3,2.919082343E1 +2.696815000E3,3.146626789E1 +2.697056000E3,2.968971947E1 +2.697354000E3,4.116455896E1 +2.697640000E3,5.055341773E1 +2.697888000E3,5.163434474E1 +2.698155000E3,4.792936353E1 +2.698456000E3,4.111753823E1 +2.698732000E3,4.594070701E1 +2.699031000E3,3.204472070E1 +2.699273000E3,2.836668859E1 +2.699578000E3,2.624009297E1 +2.699855000E3,2.719538340E1 +2.700110000E3,2.868563476E1 +2.700399000E3,2.757039916E1 +2.700662000E3,2.546630310E1 +2.700960000E3,2.981844134E1 +2.701310000E3,3.063471239E1 +2.701629000E3,4.014173680E1 +2.701894000E3,3.281157953E1 +2.702206000E3,4.268438101E1 +2.702448000E3,4.272045970E1 +2.702710000E3,4.782744516E1 +2.702984000E3,4.067538265E1 +2.703255000E3,3.821763448E1 +2.703566000E3,3.373237040E1 +2.703865000E3,2.762261654E1 +2.704108000E3,3.058182972E1 +2.704366000E3,4.157303269E1 +2.704695000E3,4.128988216E1 +2.705002000E3,3.725674585E1 +2.705260000E3,3.318881716E1 +2.705544000E3,3.512644750E1 +2.705774000E3,3.012622541E1 +2.706039000E3,3.307868989E1 +2.706297000E3,3.089854998E1 +2.706599000E3,2.870455364E1 +2.706901000E3,2.573473536E1 +2.707155000E3,2.708285982E1 +2.707419000E3,2.641018696E1 +2.707644000E3,2.532685142E1 +2.707945000E3,2.741320006E1 +2.708188000E3,2.764718970E1 +2.708460000E3,3.745935532E1 +2.708711000E3,4.292241509E1 +2.708955000E3,4.431523077E1 +2.709266000E3,3.812245251E1 +2.709534000E3,3.199637282E1 +2.709802000E3,3.030937111E1 +2.710049000E3,3.172341474E1 +2.710303000E3,4.706685853E1 +2.710610000E3,4.372593931E1 +2.710859000E3,4.298246415E1 +2.711196000E3,4.313732995E1 +2.711485000E3,3.646858634E1 +2.711745000E3,3.547356546E1 +2.712003000E3,4.802507202E1 +2.712259000E3,4.666185634E1 +2.712527000E3,4.298723738E1 +2.712813000E3,3.203029787E1 +2.713082000E3,2.721140687E1 +2.713344000E3,3.967881707E1 +2.713594000E3,5.017429445E1 +2.713859000E3,4.690730331E1 +2.714106000E3,4.892140969E1 +2.714475000E3,4.312346900E1 +2.714730000E3,4.926615820E1 +2.714984000E3,4.690558758E1 +2.715298000E3,3.116292546E1 +2.715563000E3,2.731472603E1 +2.715855000E3,3.029992609E1 +2.716160000E3,3.149201904E1 +2.716442000E3,2.826058660E1 +2.716703000E3,2.713282366E1 +2.716957000E3,3.659207256E1 +2.717253000E3,3.982143620E1 +2.717592000E3,4.316888996E1 +2.717851000E3,4.348787554E1 +2.718149000E3,4.336902207E1 +2.718464000E3,4.494305168E1 +2.718765000E3,4.280996114E1 +2.719042000E3,4.083199069E1 +2.719277000E3,3.924180447E1 +2.719573000E3,2.985025677E1 +2.719800000E3,2.924980764E1 +2.720042000E3,2.589394072E1 +2.720346000E3,2.996884267E1 +2.720607000E3,2.951796470E1 +2.720882000E3,2.762273017E1 +2.721181000E3,4.946261833E1 +2.721422000E3,4.848220411E1 +2.721736000E3,4.816357380E1 +2.722001000E3,5.238238407E1 +2.722305000E3,5.586118797E1 +2.722602000E3,5.474108905E1 +2.722856000E3,5.089156984E1 +2.723105000E3,4.900978141E1 +2.723369000E3,5.541376880E1 +2.723666000E3,4.827427134E1 +2.723997000E3,4.802338633E1 +2.724296000E3,3.537215093E1 +2.724548000E3,3.822637167E1 +2.724844000E3,3.388327957E1 +2.725086000E3,3.756611639E1 +2.725338000E3,4.489615211E1 +2.725635000E3,5.048833137E1 +2.725871000E3,4.298428385E1 +2.726174000E3,3.303114009E1 +2.726475000E3,4.527811220E1 +2.726764000E3,4.815487328E1 +2.727017000E3,4.761823346E1 +2.727328000E3,4.180028821E1 +2.727607000E3,4.512936944E1 +2.727849000E3,4.337880786E1 +2.728101000E3,4.031817829E1 +2.728401000E3,3.509684782E1 +2.728650000E3,4.495565250E1 +2.728895000E3,4.157595660E1 +2.729138000E3,5.008202715E1 +2.729381000E3,5.308960545E1 +2.729622000E3,4.943413955E1 +2.729917000E3,4.820467383E1 +2.730234000E3,5.168344618E1 +2.730544000E3,5.128425900E1 +2.730837000E3,5.242528085E1 +2.731075000E3,5.125548047E1 +2.731382000E3,5.027678189E1 +2.731625000E3,4.595108129E1 +2.731917000E3,5.425640288E1 +2.732229000E3,5.493458667E1 +2.732522000E3,5.383738769E1 +2.732781000E3,4.577468908E1 +2.733036000E3,4.877165484E1 +2.733337000E3,5.155317163E1 +2.733582000E3,4.868465804E1 +2.733904000E3,5.094377769E1 +2.734158000E3,4.778052408E1 +2.734485000E3,4.980696312E1 +2.734788000E3,5.229980528E1 +2.735043000E3,4.487473927E1 +2.735323000E3,5.405477376E1 +2.735550000E3,5.095910777E1 +2.735795000E3,4.081340338E1 +2.736110000E3,3.942379743E1 +2.736352000E3,4.377765131E1 +2.736599000E3,4.311237352E1 +2.736822000E3,4.659947655E1 +2.737071000E3,4.430846393E1 +2.737313000E3,4.579154087E1 +2.737577000E3,4.628223866E1 +2.737831000E3,3.937286623E1 +2.738094000E3,3.852847368E1 +2.738336000E3,3.907921933E1 +2.738583000E3,5.112703685E1 +2.738825000E3,4.827754167E1 +2.739100000E3,4.022366081E1 +2.739352000E3,3.342841986E1 +2.739649000E3,3.354947585E1 +2.740003000E3,2.967395260E1 +2.740259000E3,4.724158021E1 +2.740515000E3,4.406232704E1 +2.740781000E3,4.128290785E1 +2.741030000E3,3.766271195E1 +2.741274000E3,3.234308905E1 +2.741542000E3,5.345026714E1 +2.741790000E3,5.189834860E1 +2.742037000E3,4.310520052E1 +2.742373000E3,3.005340200E1 +2.742661000E3,3.957498865E1 +2.742905000E3,4.298992085E1 +2.743235000E3,3.914359224E1 +2.743487000E3,4.665969106E1 +2.743742000E3,4.569837618E1 +2.743989000E3,4.037243126E1 +2.744288000E3,4.393151618E1 +2.744525000E3,4.191552922E1 +2.744830000E3,3.855450094E1 +2.745068000E3,3.137426682E1 +2.745312000E3,3.988970586E1 +2.745595000E3,4.261856210E1 +2.745912000E3,4.545535941E1 +2.746178000E3,3.982007681E1 +2.746515000E3,3.873990925E1 +2.746799000E3,4.024486228E1 +2.747097000E3,3.778822068E1 +2.747346000E3,3.349647091E1 +2.747587000E3,3.949530039E1 +2.747884000E3,4.424971453E1 +2.748182000E3,4.109440717E1 +2.748426000E3,4.429824127E1 +2.748724000E3,3.941870140E1 +2.749014000E3,3.719766140E1 +2.749309000E3,3.407061301E1 +2.749659000E3,3.362708714E1 +2.749929000E3,4.111324363E1 +2.750185000E3,4.275268079E1 +2.750445000E3,5.624172952E1 +2.750726000E3,4.374037489E1 +2.750957000E3,4.189644016E1 +2.751207000E3,3.621210842E1 +2.751519000E3,4.177841495E1 +2.751770000E3,4.048458953E1 +2.752052000E3,3.923884976E1 +2.752303000E3,3.426258793E1 +2.752575000E3,3.252443323E1 +2.752926000E3,3.211416673E1 +2.753222000E3,3.245023971E1 +2.753483000E3,3.266068265E1 +2.753758000E3,4.004662592E1 +2.754054000E3,4.872983792E1 +2.754320000E3,5.041613029E1 +2.754567000E3,4.540589836E1 +2.754814000E3,3.042430240E1 +2.755080000E3,3.072459076E1 +2.755376000E3,3.998104284E1 +2.755642000E3,4.049850263E1 +2.755970000E3,4.294486763E1 +2.756315000E3,4.067196783E1 +2.756573000E3,4.772031632E1 +2.756825000E3,4.988707098E1 +2.757139000E3,4.555538995E1 +2.757388000E3,4.252022698E1 +2.757651000E3,3.810962452E1 +2.757917000E3,3.494795311E1 +2.758159000E3,3.247098224E1 +2.758413000E3,3.588027190E1 +2.758665000E3,3.200494843E1 +2.758920000E3,4.772506231E1 +2.759171000E3,3.775844318E1 +2.759507000E3,3.920116655E1 +2.759772000E3,4.528245497E1 +2.760086000E3,4.240466142E1 +2.760349000E3,4.544544837E1 +2.760652000E3,4.039389797E1 +2.760923000E3,3.896680017E1 +2.761194000E3,4.381534416E1 +2.761436000E3,4.424202471E1 +2.761681000E3,4.737958135E1 +2.761960000E3,4.213672401E1 +2.762194000E3,4.516117441E1 +2.762462000E3,4.279973284E1 +2.762806000E3,3.859577230E1 +2.763061000E3,4.880977241E1 +2.763403000E3,4.365184399E1 +2.763660000E3,3.848143477E1 +2.763932000E3,4.787104427E1 +2.764214000E3,3.823665924E1 +2.764451000E3,3.049392521E1 +2.764732000E3,3.086844430E1 +2.764975000E3,2.587396098E1 +2.765284000E3,3.362049288E1 +2.765536000E3,3.353664382E1 +2.765825000E3,5.140360254E1 +2.766193000E3,5.105178275E1 +2.766449000E3,5.027787452E1 +2.766756000E3,4.961194015E1 +2.766992000E3,4.473604482E1 +2.767290000E3,5.567849424E1 +2.767540000E3,5.366739238E1 +2.767788000E3,5.268444481E1 +2.768092000E3,4.378358357E1 +2.768389000E3,4.285786187E1 +2.768638000E3,3.838737205E1 +2.768928000E3,4.053738598E1 +2.769250000E3,3.914310468E1 +2.769517000E3,3.950994015E1 +2.769781000E3,4.085678781E1 +2.770095000E3,3.706118568E1 +2.770362000E3,3.878826243E1 +2.770640000E3,4.509160576E1 +2.770877000E3,4.395611401E1 +2.771129000E3,3.894826552E1 +2.771368000E3,3.783168139E1 +2.771620000E3,3.074559821E1 +2.771881000E3,4.191911052E1 +2.772136000E3,4.492008577E1 +2.772447000E3,3.666714779E1 +2.772710000E3,4.135207765E1 +2.772994000E3,4.645886813E1 +2.773238000E3,5.078995440E1 +2.773478000E3,5.706152467E1 +2.773725000E3,5.135582573E1 +2.773990000E3,4.900548267E1 +2.774266000E3,5.275962483E1 +2.774567000E3,3.947101760E1 +2.774806000E3,4.078518654E1 +2.775113000E3,4.929998433E1 +2.775417000E3,4.396253608E1 +2.775784000E3,4.382194135E1 +2.776077000E3,4.131860223E1 +2.776341000E3,4.321133953E1 +2.776596000E3,3.942571045E1 +2.776881000E3,5.035254190E1 +2.777176000E3,5.596334670E1 +2.777432000E3,6.003222989E1 +2.777730000E3,5.139953750E1 +2.778036000E3,5.596001036E1 +2.778330000E3,5.632045587E1 +2.778567000E3,5.352711698E1 +2.778873000E3,5.160150080E1 +2.779243000E3,5.407354895E1 +2.779513000E3,5.151192380E1 +2.779810000E3,5.479493680E1 +2.780084000E3,5.006197117E1 +2.780351000E3,5.012247277E1 +2.780644000E3,4.598086802E1 +2.780884000E3,3.959492635E1 +2.781142000E3,3.571624227E1 +2.781421000E3,4.082207018E1 +2.781720000E3,5.162800696E1 +2.781984000E3,5.211692198E1 +2.782250000E3,5.017743125E1 +2.782617000E3,4.685740156E1 +2.782916000E3,4.348825959E1 +2.783213000E3,3.825858224E1 +2.783454000E3,4.923981343E1 +2.783750000E3,5.319160353E1 +2.783992000E3,4.967899375E1 +2.784288000E3,3.952802481E1 +2.784535000E3,3.328379343E1 +2.784779000E3,3.014350405E1 +2.785020000E3,3.405755755E1 +2.785313000E3,4.653255974E1 +2.785639000E3,4.571255084E1 +2.785896000E3,4.212654376E1 +2.786166000E3,4.635178938E1 +2.786421000E3,4.614547408E1 +2.786716000E3,4.279815144E1 +2.787018000E3,3.739201392E1 +2.787261000E3,4.297599275E1 +2.787569000E3,5.279236826E1 +2.787869000E3,4.385267374E1 +2.788181000E3,3.538660905E1 +2.788488000E3,4.283741498E1 +2.788738000E3,3.898018884E1 +2.789079000E3,4.417569536E1 +2.789327000E3,3.821417555E1 +2.789586000E3,4.124587088E1 +2.789850000E3,4.583617377E1 +2.790116000E3,4.758354441E1 +2.790413000E3,4.386951397E1 +2.790662000E3,4.527431896E1 +2.790956000E3,4.454979637E1 +2.791207000E3,4.019280914E1 +2.791465000E3,4.549375778E1 +2.791714000E3,4.076569420E1 +2.791963000E3,3.807465350E1 +2.792293000E3,5.201775254E1 +2.792550000E3,4.217772267E1 +2.792797000E3,5.472035384E1 +2.793107000E3,5.403984906E1 +2.793357000E3,5.591746790E1 +2.793622000E3,5.564159884E1 +2.793875000E3,5.646584479E1 +2.794118000E3,5.185594958E1 +2.794377000E3,4.895735059E1 +2.794636000E3,5.654557288E1 +2.794943000E3,5.012866956E1 +2.795254000E3,4.757016947E1 +2.795528000E3,5.211434220E1 +2.795790000E3,4.452402763E1 +2.796058000E3,4.290214665E1 +2.796307000E3,3.465820610E1 +2.796556000E3,4.339944359E1 +2.796852000E3,4.313164949E1 +2.797091000E3,5.438037991E1 +2.797389000E3,5.514175593E1 +2.797635000E3,4.928848190E1 +2.797924000E3,4.659784940E1 +2.798220000E3,4.998887096E1 +2.798537000E3,4.486399829E1 +2.798842000E3,4.885866840E1 +2.799091000E3,4.635335968E1 +2.799347000E3,4.504358299E1 +2.799594000E3,3.958005741E1 +2.799833000E3,4.827229253E1 +2.800082000E3,4.830536262E1 +2.800388000E3,4.659260793E1 +2.800673000E3,4.111758509E1 +2.800972000E3,4.464305855E1 +2.801233000E3,4.497276151E1 +2.801524000E3,3.374775892E1 +2.801884000E3,3.426238632E1 +2.802202000E3,3.521995684E1 +2.802451000E3,3.181302785E1 +2.802708000E3,2.794884084E1 +2.803019000E3,3.320140571E1 +2.803325000E3,3.478175393E1 +2.803626000E3,3.529465039E1 +2.803932000E3,3.962950189E1 +2.804222000E3,5.725685057E1 +2.804486000E3,5.740119524E1 +2.804784000E3,5.069347451E1 +2.805056000E3,5.047632669E1 +2.805376000E3,5.207930289E1 +2.805626000E3,5.264810014E1 +2.805887000E3,5.288954519E1 +2.806177000E3,4.457356662E1 +2.806431000E3,3.885566564E1 +2.806679000E3,3.768676842E1 +2.806944000E3,3.953483275E1 +2.807192000E3,4.348722722E1 +2.807514000E3,4.091620627E1 +2.807832000E3,4.192587435E1 +2.808086000E3,4.434501723E1 +2.808380000E3,4.393917252E1 +2.808686000E3,4.250763593E1 +2.809001000E3,4.146719312E1 +2.809249000E3,4.084508562E1 +2.809517000E3,4.466153637E1 +2.809817000E3,4.002274614E1 +2.810111000E3,4.310032831E1 +2.810375000E3,4.901386280E1 +2.810661000E3,4.607368963E1 +2.810927000E3,4.387647276E1 +2.811225000E3,5.143943484E1 +2.811469000E3,5.045193234E1 +2.811861000E3,4.363012565E1 +2.812115000E3,4.450854658E1 +2.812371000E3,4.453857946E1 +2.812631000E3,4.628101753E1 +2.812921000E3,4.634691523E1 +2.813212000E3,4.654803531E1 +2.813510000E3,4.718980060E1 +2.813758000E3,4.430765323E1 +2.814051000E3,4.322664022E1 +2.814349000E3,4.450224091E1 +2.814582000E3,4.170367724E1 +2.814868000E3,3.985315953E1 +2.815113000E3,5.280042862E1 +2.815400000E3,4.119993511E1 +2.815662000E3,4.251502783E1 +2.815937000E3,4.221594106E1 +2.816186000E3,4.475181393E1 +2.816425000E3,4.757705666E1 +2.816666000E3,4.971185267E1 +2.816968000E3,4.862141287E1 +2.817211000E3,4.713523003E1 +2.817492000E3,4.541478066E1 +2.817737000E3,4.363493262E1 +2.817996000E3,4.428814895E1 +2.818246000E3,4.395099122E1 +2.818516000E3,4.781334664E1 +2.818773000E3,4.439472962E1 +2.819027000E3,4.768107540E1 +2.819278000E3,4.535748265E1 +2.819523000E3,5.061196572E1 +2.819779000E3,4.816069594E1 +2.820044000E3,4.715573746E1 +2.820374000E3,4.919198579E1 +2.820635000E3,5.486134785E1 +2.820897000E3,4.845922458E1 +2.821173000E3,4.486224636E1 +2.821520000E3,4.543631827E1 +2.821781000E3,4.823449020E1 +2.822049000E3,4.622456265E1 +2.822354000E3,3.467019045E1 +2.822632000E3,3.820707315E1 +2.822892000E3,3.870865044E1 +2.823175000E3,3.526203974E1 +2.823424000E3,3.398332746E1 +2.823673000E3,4.060940798E1 +2.823924000E3,4.531267955E1 +2.824156000E3,4.823172894E1 +2.824426000E3,5.381643572E1 +2.824772000E3,5.219878503E1 +2.825053000E3,4.888255160E1 +2.825277000E3,4.023650802E1 +2.825526000E3,3.467455539E1 +2.825785000E3,3.818404386E1 +2.826078000E3,4.122702652E1 +2.826315000E3,3.713088668E1 +2.826619000E3,4.891468535E1 +2.826912000E3,5.266971981E1 +2.827148000E3,4.991025067E1 +2.827457000E3,5.435242869E1 +2.827718000E3,5.378448717E1 +2.828053000E3,5.171570017E1 +2.828327000E3,5.600593919E1 +2.828581000E3,5.175339102E1 +2.828821000E3,4.567582373E1 +2.829101000E3,3.417267221E1 +2.829337000E3,3.532670702E1 +2.829576000E3,4.323212593E1 +2.829823000E3,3.952189104E1 +2.830096000E3,4.372473758E1 +2.830363000E3,4.288959864E1 +2.830609000E3,3.903893871E1 +2.830954000E3,3.847274859E1 +2.831281000E3,4.911689413E1 +2.831539000E3,5.342672798E1 +2.831798000E3,5.558955965E1 +2.832091000E3,5.519004987E1 +2.832341000E3,5.877942264E1 +2.832589000E3,4.602825434E1 +2.832861000E3,3.380054471E1 +2.833107000E3,3.583644563E1 +2.833403000E3,4.160983164E1 +2.833653000E3,3.903662215E1 +2.833958000E3,3.879412363E1 +2.834222000E3,4.121083607E1 +2.834460000E3,4.235130104E1 +2.834723000E3,5.615135633E1 +2.834993000E3,5.355273371E1 +2.835271000E3,4.896976792E1 +2.835535000E3,5.132324538E1 +2.835792000E3,5.529277110E1 +2.836041000E3,5.163674064E1 +2.836366000E3,4.657927993E1 +2.836613000E3,4.238907241E1 +2.836875000E3,5.376683406E1 +2.837143000E3,5.052269952E1 +2.837398000E3,5.018740192E1 +2.837697000E3,4.680907883E1 +2.837961000E3,4.427452663E1 +2.838227000E3,3.300759096E1 +2.838490000E3,3.639504198E1 +2.838784000E3,4.617517315E1 +2.839084000E3,4.692063960E1 +2.839325000E3,4.445415179E1 +2.839620000E3,4.215561710E1 +2.839863000E3,4.433766229E1 +2.840168000E3,4.210423337E1 +2.840460000E3,3.873922427E1 +2.840768000E3,3.717852459E1 +2.841057000E3,3.957811826E1 +2.841313000E3,3.760389186E1 +2.841638000E3,4.310249633E1 +2.841921000E3,4.813095040E1 +2.842192000E3,4.623131926E1 +2.842444000E3,4.648620260E1 +2.842743000E3,4.620801315E1 +2.843027000E3,4.321069748E1 +2.843281000E3,4.205248893E1 +2.843587000E3,2.653536028E1 +2.843863000E3,2.940344619E1 +2.844270000E3,4.715941302E1 +2.844533000E3,4.512147604E1 +2.844793000E3,4.758865475E1 +2.845051000E3,4.853448129E1 +2.845325000E3,4.647479098E1 +2.845569000E3,4.600966189E1 +2.845842000E3,4.549543262E1 +2.846088000E3,4.262631529E1 +2.846347000E3,4.522394390E1 +2.846652000E3,4.657245211E1 +2.846924000E3,4.554651191E1 +2.847231000E3,4.501421864E1 +2.847609000E3,4.413715050E1 +2.847859000E3,3.641102730E1 +2.848158000E3,2.959594862E1 +2.848409000E3,3.229903797E1 +2.848684000E3,3.716282001E1 +2.848948000E3,4.864280315E1 +2.849195000E3,4.698625872E1 +2.849453000E3,4.475077374E1 +2.849725000E3,4.320130236E1 +2.850029000E3,4.052232702E1 +2.850286000E3,4.987213531E1 +2.850622000E3,4.470574790E1 +2.850953000E3,4.746715529E1 +2.851224000E3,4.817674396E1 +2.851475000E3,4.755384271E1 +2.851775000E3,4.606857790E1 +2.852037000E3,4.602549066E1 +2.852280000E3,4.107899882E1 +2.852578000E3,4.602936757E1 +2.852832000E3,4.594357604E1 +2.853123000E3,4.132874601E1 +2.853424000E3,3.891402985E1 +2.853676000E3,3.210431116E1 +2.854034000E3,4.148325967E1 +2.854336000E3,4.539420759E1 +2.854629000E3,3.813311910E1 +2.854857000E3,3.204826654E1 +2.855103000E3,4.042825728E1 +2.855348000E3,3.781799437E1 +2.855635000E3,3.485312778E1 +2.855901000E3,3.176423587E1 +2.856194000E3,3.286644404E1 +2.856446000E3,3.601261840E1 +2.856741000E3,3.056779431E1 +2.856990000E3,2.876904683E1 +2.857247000E3,2.336161379E1 +2.857525000E3,5.319777865E1 +2.857765000E3,4.924210585E1 +2.858030000E3,4.161506516E1 +2.858287000E3,3.471025819E1 +2.858592000E3,2.954431085E1 +2.858878000E3,3.551304021E1 +2.859146000E3,4.056554733E1 +2.859438000E3,4.716772205E1 +2.859749000E3,4.728214145E1 +2.860112000E3,4.333221553E1 +2.860355000E3,3.970290127E1 +2.860627000E3,4.675070996E1 +2.860922000E3,5.292655838E1 +2.861168000E3,5.560528000E1 +2.861448000E3,5.155203362E1 +2.861684000E3,4.854372910E1 +2.861981000E3,5.166225265E1 +2.862226000E3,5.239758268E1 +2.862536000E3,4.880079262E1 +2.862801000E3,5.860724491E1 +2.863049000E3,5.487085904E1 +2.863366000E3,4.477307493E1 +2.863622000E3,4.809216762E1 +2.863923000E3,4.128779228E1 +2.864180000E3,4.039902121E1 +2.864473000E3,3.763315716E1 +2.864758000E3,3.836830031E1 +2.865072000E3,3.562217561E1 +2.865375000E3,4.251016575E1 +2.865631000E3,3.959478231E1 +2.865894000E3,3.906491963E1 +2.866161000E3,3.169567809E1 +2.866409000E3,4.180907280E1 +2.866769000E3,5.009501966E1 +2.867095000E3,4.485052737E1 +2.867377000E3,4.543449817E1 +2.867634000E3,4.558186247E1 +2.867912000E3,3.310648260E1 +2.868160000E3,3.368680580E1 +2.868403000E3,3.259924908E1 +2.868652000E3,3.468868920E1 +2.868945000E3,3.811295096E1 +2.869214000E3,3.680532391E1 +2.869523000E3,4.480088276E1 +2.869800000E3,4.321197878E1 +2.870149000E3,3.870196995E1 +2.870426000E3,4.501549736E1 +2.870686000E3,3.869046251E1 +2.870998000E3,5.116138397E1 +2.871259000E3,4.565952095E1 +2.871545000E3,4.044036430E1 +2.871835000E3,3.776423584E1 +2.872146000E3,4.283314388E1 +2.872428000E3,4.822150076E1 +2.872666000E3,4.609488251E1 +2.872966000E3,4.199842198E1 +2.873258000E3,4.199452970E1 +2.873557000E3,4.094164548E1 +2.873868000E3,3.451929232E1 +2.874146000E3,3.725700957E1 +2.874378000E3,3.820854143E1 +2.874632000E3,3.261818797E1 +2.874949000E3,4.229639001E1 +2.875219000E3,4.314663650E1 +2.875496000E3,4.030472415E1 +2.875772000E3,3.740362597E1 +2.876082000E3,3.770704299E1 +2.876334000E3,4.016521241E1 +2.876600000E3,4.155568881E1 +2.876855000E3,3.864643482E1 +2.877164000E3,3.358142820E1 +2.877430000E3,2.988882280E1 +2.877698000E3,4.233125756E1 +2.877954000E3,4.245249096E1 +2.878273000E3,3.619646633E1 +2.878541000E3,3.199868066E1 +2.878801000E3,4.546979293E1 +2.879062000E3,5.523869784E1 +2.879342000E3,5.605267417E1 +2.879584000E3,5.653411529E1 +2.879928000E3,4.626290707E1 +2.880202000E3,3.540012043E1 +2.880447000E3,3.620700172E1 +2.880691000E3,2.922036878E1 +2.880938000E3,3.659816429E1 +2.881251000E3,4.145147882E1 +2.881527000E3,3.894444603E1 +2.881851000E3,3.741315407E1 +2.882112000E3,4.094962867E1 +2.882373000E3,4.333353585E1 +2.882625000E3,4.557565518E1 +2.882879000E3,4.308396997E1 +2.883145000E3,4.097722416E1 +2.883416000E3,3.927850137E1 +2.883669000E3,3.223716221E1 +2.883941000E3,3.004581442E1 +2.884209000E3,3.765685263E1 +2.884466000E3,3.878810543E1 +2.884718000E3,2.988953340E1 +2.884967000E3,3.346960294E1 +2.885221000E3,3.799647420E1 +2.885537000E3,3.116842616E1 +2.885796000E3,3.671552801E1 +2.886084000E3,4.459898232E1 +2.886404000E3,4.708370738E1 +2.886677000E3,5.036035843E1 +2.886979000E3,4.113513329E1 +2.887251000E3,3.503458684E1 +2.887528000E3,3.462090732E1 +2.887785000E3,4.001717165E1 +2.888037000E3,3.538133603E1 +2.888296000E3,3.662805649E1 +2.888547000E3,4.263542947E1 +2.888820000E3,4.431895872E1 +2.889079000E3,4.300413574E1 +2.889340000E3,4.173317530E1 +2.889582000E3,4.288275032E1 +2.889932000E3,3.944773526E1 +2.890197000E3,3.214266541E1 +2.890503000E3,3.060588708E1 +2.890777000E3,3.296322494E1 +2.891017000E3,3.394251803E1 +2.891320000E3,3.208741950E1 +2.891570000E3,3.441770910E1 +2.891849000E3,3.368561294E1 +2.892087000E3,3.475967611E1 +2.892337000E3,3.740055420E1 +2.892635000E3,3.542355307E1 +2.892981000E3,3.105741683E1 +2.893247000E3,3.245614761E1 +2.893513000E3,4.142391644E1 +2.893779000E3,4.497461971E1 +2.894029000E3,4.653178389E1 +2.894282000E3,4.703576342E1 +2.894540000E3,4.751169602E1 +2.894805000E3,4.201422178E1 +2.895062000E3,4.370261317E1 +2.895310000E3,4.660906406E1 +2.895596000E3,4.633159753E1 +2.895865000E3,4.381116332E1 +2.896155000E3,4.368523912E1 +2.896405000E3,4.747051902E1 +2.896651000E3,4.222577444E1 +2.896905000E3,4.572633660E1 +2.897184000E3,5.203776089E1 +2.897450000E3,5.010843836E1 +2.897744000E3,4.910530865E1 +2.898022000E3,4.664859833E1 +2.898308000E3,3.985336775E1 +2.898564000E3,3.683403533E1 +2.898812000E3,4.284820320E1 +2.899091000E3,4.286036404E1 +2.899396000E3,5.224070654E1 +2.899753000E3,4.568546748E1 +2.900018000E3,5.586433220E1 +2.900278000E3,4.514230837E1 +2.900559000E3,3.853422420E1 +2.900865000E3,3.299777990E1 +2.901139000E3,3.594596453E1 +2.901415000E3,2.896001699E1 +2.901650000E3,2.556794162E1 +2.901937000E3,2.525773120E1 +2.902206000E3,3.138035436E1 +2.902457000E3,3.725731802E1 +2.902816000E3,3.600302530E1 +2.903095000E3,3.476106384E1 +2.903340000E3,3.325569458E1 +2.903600000E3,3.217545002E1 +2.903858000E3,2.994578711E1 +2.904108000E3,3.277965280E1 +2.904372000E3,4.013450695E1 +2.904627000E3,3.103730297E1 +2.904913000E3,4.187502355E1 +2.905174000E3,3.591627686E1 +2.905452000E3,3.067277870E1 +2.905743000E3,2.813597523E1 +2.906004000E3,2.760542404E1 +2.906321000E3,3.327793113E1 +2.906579000E3,4.111963776E1 +2.906835000E3,4.309802180E1 +2.907113000E3,2.749088524E1 +2.907354000E3,2.269523459E1 +2.907657000E3,3.631225289E1 +2.907901000E3,4.146405590E1 +2.908156000E3,3.785670954E1 +2.908403000E3,4.498664409E1 +2.908675000E3,4.174614917E1 +2.908932000E3,4.632262643E1 +2.909189000E3,3.569839459E1 +2.909522000E3,4.635385444E1 +2.909802000E3,4.337190367E1 +2.910035000E3,3.796960383E1 +2.910287000E3,4.151951269E1 +2.910538000E3,4.245940710E1 +2.910795000E3,4.268454470E1 +2.911045000E3,4.280139929E1 +2.911335000E3,3.861780445E1 +2.911584000E3,4.028221299E1 +2.911885000E3,3.934408626E1 +2.912139000E3,3.091195323E1 +2.912386000E3,2.709027446E1 +2.912622000E3,2.721294148E1 +2.912915000E3,3.169063213E1 +2.913196000E3,3.663766462E1 +2.913461000E3,3.582442105E1 +2.913744000E3,2.742218375E1 +2.913990000E3,3.432349666E1 +2.914297000E3,4.586386591E1 +2.914575000E3,4.813383402E1 +2.914888000E3,5.016441505E1 +2.915190000E3,4.132593749E1 +2.915481000E3,3.992883324E1 +2.915827000E3,3.713218942E1 +2.916087000E3,4.862036940E1 +2.916351000E3,4.985137398E1 +2.916622000E3,5.126616609E1 +2.916881000E3,4.180876614E1 +2.917157000E3,4.057128207E1 +2.917418000E3,3.994520906E1 +2.917681000E3,3.719846748E1 +2.917964000E3,4.377214072E1 +2.918264000E3,4.081140664E1 +2.918518000E3,4.149712935E1 +2.918784000E3,3.965801174E1 +2.919127000E3,3.499332266E1 +2.919415000E3,3.454976163E1 +2.919745000E3,3.801205804E1 +2.920003000E3,4.266330834E1 +2.920244000E3,3.704497233E1 +2.920548000E3,3.869800412E1 +2.920840000E3,3.880762608E1 +2.921081000E3,3.967826348E1 +2.921325000E3,4.387098551E1 +2.921573000E3,3.795523909E1 +2.921876000E3,3.884773193E1 +2.922122000E3,3.949919351E1 +2.922481000E3,3.549368996E1 +2.922774000E3,5.176437750E1 +2.923023000E3,4.673969779E1 +2.923306000E3,3.729614967E1 +2.923573000E3,3.557242251E1 +2.923880000E3,5.351861504E1 +2.924155000E3,5.486661937E1 +2.924424000E3,5.693150230E1 +2.924735000E3,4.225245527E1 +2.924988000E3,4.082554353E1 +2.925252000E3,3.807826598E1 +2.925573000E3,3.587807510E1 +2.925935000E3,4.290242494E1 +2.926237000E3,3.960438869E1 +2.926496000E3,3.732088357E1 +2.926751000E3,3.216321546E1 +2.926991000E3,3.001846960E1 +2.927295000E3,3.634949804E1 +2.927531000E3,3.127042454E1 +2.927829000E3,3.158500209E1 +2.928073000E3,2.815993792E1 +2.928370000E3,2.793102526E1 +2.928613000E3,2.468786691E1 +2.928943000E3,2.345175993E1 +2.929256000E3,2.908559709E1 +2.929497000E3,2.580950455E1 +2.929819000E3,2.871707976E1 +2.930114000E3,2.977851279E1 +2.930374000E3,4.220437998E1 +2.930636000E3,3.122152770E1 +2.930945000E3,3.902308439E1 +2.931227000E3,3.648582434E1 +2.931474000E3,4.774090674E1 +2.931717000E3,4.487624905E1 +2.931963000E3,4.620728265E1 +2.932258000E3,4.011602626E1 +2.932585000E3,4.011469989E1 +2.932871000E3,4.531107143E1 +2.933117000E3,4.299757904E1 +2.933366000E3,4.255561828E1 +2.933662000E3,4.180851663E1 +2.933899000E3,3.354142728E1 +2.934139000E3,4.061788576E1 +2.934435000E3,3.190428864E1 +2.934678000E3,3.136545948E1 +2.934975000E3,3.172564299E1 +2.935227000E3,3.538616066E1 +2.935577000E3,3.227761247E1 +2.935826000E3,3.587578035E1 +2.936132000E3,2.830690319E1 +2.936391000E3,2.983281120E1 +2.936636000E3,3.198482114E1 +2.936936000E3,4.529436692E1 +2.937191000E3,3.904726622E1 +2.937498000E3,4.546792713E1 +2.937790000E3,4.178984789E1 +2.938055000E3,3.901507008E1 +2.938332000E3,3.530528642E1 +2.938634000E3,3.766035689E1 +2.939060000E3,5.595745424E1 +2.939318000E3,5.800941557E1 +2.939576000E3,5.061871726E1 +2.939836000E3,6.017617924E1 +2.940124000E3,5.889680612E1 +2.940380000E3,5.553527141E1 +2.940631000E3,4.982924060E1 +2.940889000E3,5.386899946E1 +2.941183000E3,5.511436312E1 +2.941477000E3,5.474658637E1 +2.941736000E3,5.669903896E1 +2.941985000E3,5.352207307E1 +2.942302000E3,5.089540084E1 +2.942556000E3,5.163069551E1 +2.942811000E3,4.946827448E1 +2.943144000E3,4.292332560E1 +2.943386000E3,4.769421745E1 +2.943625000E3,4.741300910E1 +2.943936000E3,4.918473310E1 +2.944182000E3,4.358732286E1 +2.944456000E3,4.338106770E1 +2.944722000E3,5.302068646E1 +2.945006000E3,4.800501219E1 +2.945370000E3,4.445792428E1 +2.945619000E3,3.768400599E1 +2.945867000E3,3.829540629E1 +2.946159000E3,3.766669508E1 +2.946411000E3,4.016839261E1 +2.946712000E3,4.041724233E1 +2.947009000E3,4.012217251E1 +2.947323000E3,3.568820570E1 +2.947568000E3,3.690839296E1 +2.947818000E3,4.813137033E1 +2.948084000E3,5.325274156E1 +2.948341000E3,5.892514859E1 +2.948730000E3,4.314585435E1 +2.948980000E3,4.049194134E1 +2.949257000E3,4.522053034E1 +2.949515000E3,4.263261915E1 +2.949826000E3,5.159034358E1 +2.950126000E3,4.094053529E1 +2.950370000E3,4.144504964E1 +2.950613000E3,4.584689520E1 +2.950933000E3,3.986259871E1 +2.951211000E3,5.835616238E1 +2.951492000E3,4.865922153E1 +2.951773000E3,4.646806952E1 +2.952049000E3,5.501145746E1 +2.952349000E3,5.395560549E1 +2.952606000E3,5.094776028E1 +2.952859000E3,5.987933082E1 +2.953123000E3,5.553863596E1 +2.953365000E3,6.056471643E1 +2.953626000E3,5.705129962E1 +2.953881000E3,5.620457969E1 +2.954143000E3,4.633104773E1 +2.954403000E3,4.542785483E1 +2.954666000E3,4.357363747E1 +2.954925000E3,5.905995366E1 +2.955255000E3,5.325307727E1 +2.955500000E3,6.730464031E1 +2.955795000E3,6.362836082E1 +2.956030000E3,6.057596417E1 +2.956332000E3,6.813918985E1 +2.956573000E3,6.403678903E1 +2.956871000E3,6.230635205E1 +2.957135000E3,6.746671531E1 +2.957401000E3,6.427695804E1 +2.957673000E3,5.206458526E1 +2.957933000E3,5.261265827E1 +2.958182000E3,4.877242183E1 +2.958552000E3,6.627461000E1 +2.958808000E3,6.741673158E1 +2.959062000E3,6.597614354E1 +2.959304000E3,6.540552328E1 +2.959551000E3,6.528289091E1 +2.959864000E3,5.830061674E1 +2.960121000E3,5.985112812E1 +2.960428000E3,6.090568068E1 +2.960720000E3,6.807446854E1 +2.960985000E3,6.930722199E1 +2.961226000E3,6.386100217E1 +2.961579000E3,6.028451745E1 +2.961849000E3,6.477814340E1 +2.962132000E3,6.837046944E1 +2.962373000E3,6.647209363E1 +2.962660000E3,6.694202205E1 +2.962967000E3,6.648756695E1 +2.963231000E3,6.482625001E1 +2.963518000E3,7.095796361E1 +2.963775000E3,6.454417662E1 +2.964062000E3,6.533171518E1 +2.964339000E3,6.471819922E1 +2.964629000E3,5.679367810E1 +2.964962000E3,5.573913208E1 +2.965271000E3,6.251351498E1 +2.965502000E3,6.071427502E1 +2.965745000E3,6.212696498E1 +2.966049000E3,5.601947939E1 +2.966292000E3,5.543203731E1 +2.966544000E3,5.440105204E1 +2.966807000E3,5.169354717E1 +2.967114000E3,5.098574914E1 +2.967354000E3,4.778774527E1 +2.967603000E3,5.527018336E1 +2.967874000E3,5.069142516E1 +2.968220000E3,5.540354927E1 +2.968470000E3,5.388190573E1 +2.968725000E3,5.648678631E1 +2.968994000E3,6.195289166E1 +2.969259000E3,5.924073062E1 +2.969526000E3,5.554902217E1 +2.969797000E3,6.073047002E1 +2.970049000E3,5.750580172E1 +2.970375000E3,6.205206850E1 +2.970685000E3,5.892672487E1 +2.971008000E3,5.603539479E1 +2.971306000E3,5.380141597E1 +2.971609000E3,6.182570937E1 +2.971860000E3,5.755792598E1 +2.972120000E3,7.094637252E1 +2.972374000E3,7.220321333E1 +2.972688000E3,6.074903881E1 +2.972946000E3,5.132390204E1 +2.973203000E3,5.555176793E1 +2.973482000E3,5.082163203E1 +2.973746000E3,6.668022761E1 +2.974024000E3,6.951681150E1 +2.974257000E3,6.170353739E1 +2.974507000E3,6.191784425E1 +2.974845000E3,6.249884739E1 +2.975129000E3,6.139715498E1 +2.975385000E3,5.458109058E1 +2.975684000E3,6.285593412E1 +2.975925000E3,6.801445640E1 +2.976223000E3,6.762358149E1 +2.976454000E3,6.007212586E1 +2.976698000E3,6.176376027E1 +2.976998000E3,5.489351528E1 +2.977244000E3,6.419682450E1 +2.977544000E3,6.335879864E1 +2.977813000E3,6.346249627E1 +2.978071000E3,6.122721977E1 +2.978303000E3,6.269343112E1 +2.978564000E3,5.719207644E1 +2.978818000E3,6.209398004E1 +2.979085000E3,6.570545323E1 +2.979335000E3,6.443300698E1 +2.979582000E3,6.395479352E1 +2.979841000E3,6.285971298E1 +2.980091000E3,6.452411240E1 +2.980337000E3,6.648403811E1 +2.980638000E3,6.146510082E1 +2.980898000E3,6.178604521E1 +2.981191000E3,5.906416732E1 +2.981418000E3,6.139524316E1 +2.981668000E3,6.754933795E1 +2.981958000E3,5.804633278E1 +2.982221000E3,5.544285219E1 +2.982480000E3,5.252390700E1 +2.982741000E3,5.442974682E1 +2.983009000E3,5.886662164E1 +2.983270000E3,6.039421332E1 +2.983532000E3,5.984826425E1 +2.983780000E3,6.038747451E1 +2.984020000E3,5.836799318E1 +2.984266000E3,6.011457774E1 +2.984654000E3,6.086793857E1 +2.984928000E3,6.104684994E1 +2.985246000E3,6.081085188E1 +2.985504000E3,6.338602633E1 +2.985771000E3,6.224702903E1 +2.986040000E3,5.771788346E1 +2.986351000E3,5.832375863E1 +2.986657000E3,6.179808645E1 +2.986893000E3,6.074067698E1 +2.987188000E3,5.763905723E1 +2.987459000E3,5.411975455E1 +2.987698000E3,5.609082395E1 +2.988020000E3,5.838775534E1 +2.988261000E3,5.545934196E1 +2.988564000E3,5.818253650E1 +2.988803000E3,5.693365858E1 +2.989084000E3,5.747877452E1 +2.989394000E3,6.108654481E1 +2.989646000E3,6.109521888E1 +2.989952000E3,5.453216708E1 +2.990235000E3,5.325056065E1 +2.990530000E3,5.226229633E1 +2.990796000E3,5.566734434E1 +2.991153000E3,5.983192138E1 +2.991409000E3,5.902282422E1 +2.991712000E3,6.553978750E1 +2.991962000E3,6.323109208E1 +2.992210000E3,6.430699278E1 +2.992477000E3,6.439502996E1 +2.992769000E3,5.882379749E1 +2.993024000E3,7.076998945E1 +2.993317000E3,6.710088514E1 +2.993554000E3,6.332152683E1 +2.993846000E3,6.013348006E1 +2.994081000E3,6.492156154E1 +2.994361000E3,6.054189638E1 +2.994671000E3,5.878685209E1 +2.994911000E3,6.363988355E1 +2.995218000E3,6.266127576E1 +2.995513000E3,6.231860976E1 +2.995750000E3,6.770663238E1 +2.996056000E3,6.411706706E1 +2.996346000E3,6.607053327E1 +2.996592000E3,6.231837938E1 +2.996884000E3,6.235557028E1 +2.997130000E3,6.626149607E1 +2.997386000E3,6.897456616E1 +2.997721000E3,6.896820400E1 +2.997984000E3,5.708709076E1 +2.998260000E3,5.465136518E1 +2.998532000E3,6.136090841E1 +2.998792000E3,6.427324700E1 +2.999047000E3,5.922924051E1 +2.999308000E3,5.964993479E1 +2.999619000E3,5.937495043E1 +2.999910000E3,6.345321013E1 +3.000196000E3,6.558504608E1 +3.000438000E3,6.566442906E1 +3.000721000E3,6.596782674E1 +3.001048000E3,6.493210478E1 +3.001299000E3,6.778071085E1 +3.001554000E3,5.810398860E1 +3.001834000E3,6.461256831E1 +3.002084000E3,5.637103240E1 +3.002332000E3,6.244497501E1 +3.002633000E3,5.749162406E1 +3.002980000E3,6.268391580E1 +3.003246000E3,6.122193913E1 +3.003572000E3,6.467185898E1 +3.003877000E3,6.239318427E1 +3.004266000E3,6.708558966E1 +3.004573000E3,6.293492178E1 +3.004871000E3,6.169168265E1 +3.005129000E3,5.944912128E1 +3.005404000E3,5.631628075E1 +3.005704000E3,6.080609102E1 +3.005964000E3,6.424565764E1 +3.006250000E3,6.447415860E1 +3.006481000E3,6.606824769E1 +3.006756000E3,6.337387069E1 +3.007004000E3,6.294291386E1 +3.007286000E3,6.430484746E1 +3.007612000E3,6.091848593E1 +3.007867000E3,6.343837854E1 +3.008169000E3,5.978702761E1 +3.008432000E3,5.965865421E1 +3.008675000E3,5.540362761E1 +3.008918000E3,5.443572137E1 +3.009202000E3,6.171389250E1 +3.009446000E3,6.487192568E1 +3.009738000E3,5.958143908E1 +3.009983000E3,6.189834719E1 +3.010232000E3,5.752745917E1 +3.010489000E3,6.339873723E1 +3.010846000E3,6.127984243E1 +3.011144000E3,6.065194767E1 +3.011387000E3,6.253646864E1 +3.011646000E3,6.179753794E1 +3.011925000E3,6.231808205E1 +3.012153000E3,6.101579519E1 +3.012442000E3,5.876502421E1 +3.012737000E3,5.809905793E1 +3.013015000E3,5.695141293E1 +3.013301000E3,5.973139928E1 +3.013577000E3,6.007240820E1 +3.013839000E3,7.136453087E1 +3.014063000E3,7.173892024E1 +3.014315000E3,6.885425335E1 +3.014559000E3,6.110376355E1 +3.014808000E3,6.296723224E1 +3.015075000E3,6.021879294E1 +3.015327000E3,6.012811489E1 +3.015577000E3,6.282613373E1 +3.015850000E3,6.884549735E1 +3.016115000E3,6.913958233E1 +3.016397000E3,6.608409337E1 +3.016648000E3,6.437779633E1 +3.016896000E3,6.412579817E1 +3.017253000E3,6.408373459E1 +3.017500000E3,6.487828946E1 +3.017743000E3,6.281964754E1 +3.018003000E3,6.153697843E1 +3.018258000E3,6.503307442E1 +3.018512000E3,6.508021131E1 +3.018791000E3,5.910017780E1 +3.019028000E3,5.757469918E1 +3.019325000E3,5.762978005E1 +3.019573000E3,5.366611226E1 +3.019824000E3,5.708763529E1 +3.020086000E3,5.488621207E1 +3.020437000E3,5.826722905E1 +3.020695000E3,5.951373108E1 +3.020968000E3,6.130623452E1 +3.021217000E3,6.025771329E1 +3.021490000E3,5.280103891E1 +3.021737000E3,6.123009986E1 +3.022037000E3,6.404958762E1 +3.022328000E3,6.469373641E1 +3.022599000E3,6.283727611E1 +3.022840000E3,6.248869497E1 +3.023123000E3,6.767270030E1 +3.023363000E3,6.436289402E1 +3.023706000E3,6.007121161E1 +3.023992000E3,6.067397941E1 +3.024255000E3,6.005092329E1 +3.024513000E3,6.146229561E1 +3.024803000E3,6.214304530E1 +3.025060000E3,6.107977952E1 +3.025317000E3,6.268440106E1 +3.025560000E3,5.744048190E1 +3.025823000E3,6.080102592E1 +3.026092000E3,6.359394744E1 +3.026384000E3,6.219604097E1 +3.026685000E3,6.296073955E1 +3.026912000E3,6.243574530E1 +3.027190000E3,6.540426031E1 +3.027426000E3,7.038009166E1 +3.027684000E3,7.133800291E1 +3.027943000E3,6.847497315E1 +3.028214000E3,7.049817235E1 +3.028486000E3,6.555713643E1 +3.028748000E3,6.762942526E1 +3.029008000E3,6.780082040E1 +3.029264000E3,6.644646205E1 +3.029533000E3,7.066497540E1 +3.029800000E3,6.700863421E1 +3.030174000E3,6.263767412E1 +3.030459000E3,5.937975562E1 +3.030697000E3,6.189133018E1 +3.030958000E3,6.479748496E1 +3.031218000E3,6.070421224E1 +3.031488000E3,5.567295684E1 +3.031754000E3,6.162939414E1 +3.032026000E3,6.462556380E1 +3.032293000E3,6.300561819E1 +3.032553000E3,6.320528504E1 +3.032852000E3,6.205536878E1 +3.033102000E3,7.179598993E1 +3.033490000E3,6.907149718E1 +3.033750000E3,6.110443799E1 +3.034008000E3,5.743025653E1 +3.034257000E3,5.714646515E1 +3.034505000E3,6.193634179E1 +3.034762000E3,6.511685208E1 +3.035034000E3,6.647840023E1 +3.035277000E3,6.637602928E1 +3.035534000E3,6.208743290E1 +3.035873000E3,6.158502662E1 +3.036127000E3,6.138896352E1 +3.036392000E3,5.988342330E1 +3.036737000E3,5.834272912E1 +3.036998000E3,6.504474047E1 +3.037253000E3,5.801637483E1 +3.037569000E3,6.208073459E1 +3.037831000E3,6.555093843E1 +3.038084000E3,6.686352963E1 +3.038356000E3,6.398821865E1 +3.038638000E3,6.053541888E1 +3.038927000E3,5.509282051E1 +3.039228000E3,6.213274835E1 +3.039473000E3,6.149105368E1 +3.039745000E3,6.097957376E1 +3.040056000E3,6.313145073E1 +3.040300000E3,6.749857058E1 +3.040549000E3,6.031561589E1 +3.040852000E3,5.991948868E1 +3.041110000E3,6.228314687E1 +3.041358000E3,6.281493679E1 +3.041621000E3,6.031124820E1 +3.041926000E3,6.035954468E1 +3.042177000E3,6.230627050E1 +3.042448000E3,5.381586458E1 +3.042741000E3,6.032611045E1 +3.043026000E3,5.796046788E1 +3.043304000E3,6.286261594E1 +3.043605000E3,6.188894569E1 +3.043848000E3,6.196336480E1 +3.044091000E3,6.506902622E1 +3.044345000E3,6.547913264E1 +3.044589000E3,6.701681380E1 +3.044849000E3,6.398074775E1 +3.045095000E3,6.102355933E1 +3.045350000E3,6.546609328E1 +3.045598000E3,6.626677347E1 +3.045845000E3,6.212155235E1 +3.046098000E3,6.475032486E1 +3.046433000E3,6.469401418E1 +3.046698000E3,6.335899573E1 +3.046970000E3,5.799459631E1 +3.047267000E3,5.777430210E1 +3.047527000E3,6.228044606E1 +3.047785000E3,5.521572273E1 +3.048044000E3,5.312506195E1 +3.048316000E3,5.877400717E1 +3.048592000E3,6.239358597E1 +3.048842000E3,6.019315355E1 +3.049164000E3,5.944515023E1 +3.049418000E3,6.571719967E1 +3.049752000E3,5.906077781E1 +3.050005000E3,6.269931225E1 +3.050242000E3,6.329267329E1 +3.050532000E3,6.094692628E1 +3.050797000E3,6.137608503E1 +3.051055000E3,6.019630450E1 +3.051299000E3,5.959056092E1 +3.051551000E3,6.195653625E1 +3.051802000E3,5.997942431E1 +3.052044000E3,6.071988649E1 +3.052348000E3,6.146559433E1 +3.052605000E3,6.320542640E1 +3.052903000E3,6.301314639E1 +3.053133000E3,6.491013087E1 +3.053386000E3,5.374424399E1 +3.053632000E3,5.337930652E1 +3.053925000E3,5.830420592E1 +3.054167000E3,5.827724976E1 +3.054414000E3,5.413373264E1 +3.054713000E3,5.438904566E1 +3.054952000E3,5.478972153E1 +3.055245000E3,6.026125791E1 +3.055545000E3,6.377000784E1 +3.055792000E3,6.273059884E1 +3.056116000E3,6.164463909E1 +3.056426000E3,6.310484015E1 +3.056665000E3,6.191865333E1 +3.056974000E3,6.044005004E1 +3.057225000E3,5.723160495E1 +3.057532000E3,6.482171923E1 +3.057799000E3,6.373654624E1 +3.058097000E3,6.579319958E1 +3.058333000E3,6.717439766E1 +3.058632000E3,6.244987186E1 +3.058874000E3,5.911459441E1 +3.059119000E3,6.246625617E1 +3.059514000E3,6.061929027E1 +3.059786000E3,6.141894857E1 +3.060044000E3,6.531006136E1 +3.060311000E3,6.745420282E1 +3.060564000E3,6.305040539E1 +3.060809000E3,6.250223063E1 +3.061063000E3,5.984183740E1 +3.061365000E3,6.201500936E1 +3.061610000E3,6.171968159E1 +3.061853000E3,5.636652524E1 +3.062137000E3,5.937450988E1 +3.062405000E3,5.424162977E1 +3.062724000E3,5.577353705E1 +3.062968000E3,6.265208868E1 +3.063225000E3,6.754657095E1 +3.063470000E3,6.259832443E1 +3.063731000E3,5.846954403E1 +3.063975000E3,5.735719718E1 +3.064220000E3,5.614657426E1 +3.064460000E3,5.493678071E1 +3.064711000E3,6.175770153E1 +3.064961000E3,6.502893325E1 +3.065266000E3,6.372557142E1 +3.065562000E3,6.165604672E1 +3.065921000E3,6.202265536E1 +3.066181000E3,5.894659424E1 +3.066427000E3,5.516515279E1 +3.066669000E3,5.227763917E1 +3.066911000E3,5.331294555E1 +3.067166000E3,5.535383534E1 +3.067460000E3,5.490405248E1 +3.067721000E3,5.927902794E1 +3.068030000E3,6.001209348E1 +3.068288000E3,5.925707402E1 +3.068553000E3,6.116769528E1 +3.068848000E3,5.907075037E1 +3.069160000E3,5.402384091E1 +3.069467000E3,6.078433547E1 +3.069706000E3,6.064305090E1 +3.069991000E3,6.099922555E1 +3.070247000E3,6.081028216E1 +3.070500000E3,6.857342881E1 +3.070795000E3,6.830085683E1 +3.071035000E3,7.092929468E1 +3.071334000E3,6.670654987E1 +3.071580000E3,6.198358410E1 +3.071845000E3,6.029427505E1 +3.072216000E3,6.271100503E1 +3.072476000E3,6.548403896E1 +3.072709000E3,6.655140024E1 +3.072958000E3,6.872933885E1 +3.073221000E3,6.840034062E1 +3.073524000E3,6.189262665E1 +3.073801000E3,6.315516618E1 +3.074029000E3,6.431689152E1 +3.074282000E3,7.008635825E1 +3.074531000E3,6.529488526E1 +3.074781000E3,5.362885622E1 +3.075079000E3,6.174622467E1 +3.075321000E3,6.106059522E1 +3.075569000E3,6.727558853E1 +3.075841000E3,6.068477373E1 +3.076089000E3,6.224550385E1 +3.076358000E3,6.049387981E1 +3.076618000E3,5.554290122E1 +3.076868000E3,5.232623619E1 +3.077136000E3,5.715980006E1 +3.077434000E3,6.112308912E1 +3.077738000E3,5.964598426E1 +3.077997000E3,5.774993649E1 +3.078301000E3,5.930552673E1 +3.078632000E3,6.204668908E1 +3.078903000E3,6.135182684E1 +3.079234000E3,6.010535577E1 +3.079530000E3,5.612975229E1 +3.079846000E3,5.894789721E1 +3.080130000E3,6.424282153E1 +3.080395000E3,6.696093787E1 +3.080696000E3,5.929656512E1 +3.080931000E3,5.577162965E1 +3.081168000E3,6.096321541E1 +3.081415000E3,6.147204445E1 +3.081708000E3,6.518353223E1 +3.082066000E3,6.565001970E1 +3.082347000E3,6.152216198E1 +3.082591000E3,6.232488129E1 +3.082884000E3,6.450829181E1 +3.083131000E3,6.727741702E1 +3.083373000E3,6.596172391E1 +3.083615000E3,6.588974420E1 +3.083909000E3,6.215985231E1 +3.084146000E3,5.417797447E1 +3.084444000E3,5.776086644E1 +3.084736000E3,6.145598006E1 +3.085067000E3,6.705675690E1 +3.085353000E3,7.032609091E1 +3.085621000E3,6.942809802E1 +3.085926000E3,6.673219093E1 +3.086170000E3,5.874483463E1 +3.086457000E3,6.163530440E1 +3.086730000E3,5.863155738E1 +3.086955000E3,5.804604701E1 +3.087247000E3,7.202263239E1 +3.087542000E3,6.907595594E1 +3.087796000E3,7.104760035E1 +3.088063000E3,6.060670654E1 +3.088371000E3,6.409876160E1 +3.088642000E3,6.504332531E1 +3.088891000E3,6.050178076E1 +3.089172000E3,5.988548041E1 +3.089448000E3,6.419311516E1 +3.089715000E3,6.072209436E1 +3.089992000E3,6.148544930E1 +3.090256000E3,6.667985585E1 +3.090551000E3,6.360479893E1 +3.090829000E3,6.675347002E1 +3.091081000E3,6.585951744E1 +3.091337000E3,5.998998345E1 +3.091582000E3,7.213751425E1 +3.091973000E3,7.002319175E1 +3.092225000E3,6.554991346E1 +3.092495000E3,5.438962824E1 +3.092757000E3,5.806427109E1 +3.093010000E3,5.611571138E1 +3.093290000E3,5.427298566E1 +3.093553000E3,6.332676554E1 +3.093801000E3,6.191283999E1 +3.094088000E3,6.222056485E1 +3.094383000E3,6.679558422E1 +3.094660000E3,6.396349695E1 +3.094980000E3,6.335657582E1 +3.095321000E3,6.368682935E1 +3.095574000E3,6.239728447E1 +3.095829000E3,6.560913932E1 +3.096083000E3,6.288470186E1 +3.096327000E3,6.063834800E1 +3.096611000E3,5.698542980E1 +3.096866000E3,6.214573666E1 +3.097125000E3,6.108001307E1 +3.097382000E3,6.098898235E1 +3.097639000E3,6.935379750E1 +3.097944000E3,6.076333803E1 +3.098235000E3,5.747447310E1 +3.098595000E3,5.896750888E1 +3.098845000E3,6.428262322E1 +3.099146000E3,6.073561603E1 +3.099435000E3,5.610862272E1 +3.099679000E3,5.808393750E1 +3.099971000E3,6.306244141E1 +3.100214000E3,6.493760740E1 +3.100511000E3,5.964091377E1 +3.100753000E3,5.949423253E1 +3.100995000E3,6.324186751E1 +3.101237000E3,6.294719776E1 +3.101481000E3,6.618420708E1 +3.101805000E3,6.039251647E1 +3.102105000E3,6.883376735E1 +3.102388000E3,6.215701199E1 +3.102635000E3,6.251944475E1 +3.102926000E3,6.387718652E1 +3.103175000E3,6.262879933E1 +3.103469000E3,6.094246273E1 +3.103717000E3,5.780442917E1 +3.104010000E3,5.805018882E1 +3.104245000E3,6.073911170E1 +3.104537000E3,5.820155990E1 +3.104880000E3,5.691870737E1 +3.105139000E3,5.609187778E1 +3.105418000E3,5.368790307E1 +3.105673000E3,5.733127796E1 +3.105933000E3,5.834617124E1 +3.106196000E3,5.665251568E1 +3.106447000E3,5.839993992E1 +3.106707000E3,5.765825797E1 +3.106989000E3,6.346036236E1 +3.107241000E3,6.088974139E1 +3.107536000E3,5.623231578E1 +3.107836000E3,5.905990454E1 +3.108208000E3,5.913546091E1 +3.108462000E3,5.921957697E1 +3.108732000E3,6.403378055E1 +3.109010000E3,6.829473891E1 +3.109237000E3,6.866131452E1 +3.109530000E3,5.759864554E1 +3.109769000E3,5.216447932E1 +3.110067000E3,5.887622687E1 +3.110356000E3,5.912152229E1 +3.110621000E3,6.343631440E1 +3.110862000E3,6.110189356E1 +3.111105000E3,5.925249209E1 +3.111441000E3,5.583559168E1 +3.111708000E3,6.397874973E1 +3.112049000E3,5.864630935E1 +3.112314000E3,5.876030726E1 +3.112620000E3,5.558460131E1 +3.112980000E3,5.336927775E1 +3.113232000E3,5.351895645E1 +3.113515000E3,4.932805120E1 +3.113763000E3,6.323075662E1 +3.114057000E3,6.375401647E1 +3.114318000E3,6.430798012E1 +3.114651000E3,6.745313705E1 +3.114909000E3,6.370697195E1 +3.115204000E3,6.719832935E1 +3.115517000E3,6.353352979E1 +3.115816000E3,6.421660294E1 +3.116074000E3,6.666449428E1 +3.116372000E3,6.209745804E1 +3.116612000E3,5.853853683E1 +3.116911000E3,6.153177442E1 +3.117151000E3,6.465277685E1 +3.117439000E3,6.054074617E1 +3.117698000E3,5.762180605E1 +3.118029000E3,5.904912096E1 +3.118292000E3,6.054469105E1 +3.118547000E3,6.570885599E1 +3.118854000E3,6.686989978E1 +3.119103000E3,6.506823644E1 +3.119359000E3,5.780133308E1 +3.119610000E3,5.983707630E1 +3.119896000E3,6.102798325E1 +3.120167000E3,5.940835035E1 +3.120446000E3,6.154008300E1 +3.120717000E3,6.031178539E1 +3.120969000E3,6.222997321E1 +3.121291000E3,6.676268308E1 +3.121532000E3,6.244629438E1 +3.121778000E3,6.014719673E1 +3.122038000E3,6.351124664E1 +3.122317000E3,5.786579019E1 +3.122607000E3,5.704033688E1 +3.122864000E3,5.941823253E1 +3.123160000E3,6.366298469E1 +3.123429000E3,6.545330590E1 +3.123678000E3,6.206143443E1 +3.123932000E3,6.250040348E1 +3.124250000E3,6.193784317E1 +3.124582000E3,6.679802083E1 +3.124888000E3,6.239911876E1 +3.125141000E3,6.227743005E1 +3.125407000E3,5.930162190E1 +3.125655000E3,5.692493613E1 +3.125897000E3,6.100851678E1 +3.126155000E3,6.356932883E1 +3.126470000E3,6.583742229E1 +3.126735000E3,6.828531785E1 +3.127049000E3,6.744954014E1 +3.127349000E3,6.892448306E1 +3.127620000E3,6.312172108E1 +3.127885000E3,6.549450530E1 +3.128150000E3,6.274114245E1 +3.128434000E3,5.987443555E1 +3.128694000E3,5.754092402E1 +3.128967000E3,6.140483336E1 +3.129224000E3,5.793735580E1 +3.129483000E3,5.640840091E1 +3.129735000E3,7.068460790E1 +3.130042000E3,6.831622259E1 +3.130308000E3,6.661131327E1 +3.130563000E3,7.032191033E1 +3.130897000E3,6.429012882E1 +3.131166000E3,6.890779868E1 +3.131427000E3,6.812897599E1 +3.131726000E3,6.440583932E1 +3.132039000E3,6.371305855E1 +3.132310000E3,6.071113649E1 +3.132582000E3,6.356904702E1 +3.132834000E3,6.335195410E1 +3.133078000E3,5.922748305E1 +3.133357000E3,5.790290676E1 +3.133581000E3,6.067150466E1 +3.133827000E3,5.936438225E1 +3.134075000E3,5.651144024E1 +3.134312000E3,5.707156804E1 +3.134564000E3,6.256442790E1 +3.134822000E3,5.680653319E1 +3.135099000E3,6.386946987E1 +3.135341000E3,6.183817556E1 +3.135588000E3,5.791592939E1 +3.135843000E3,5.415500200E1 +3.136159000E3,5.828393923E1 +3.136402000E3,5.584102234E1 +3.136645000E3,5.843965538E1 +3.136922000E3,6.032067675E1 +3.137231000E3,6.082235855E1 +3.137514000E3,6.216335250E1 +3.137763000E3,6.576895249E1 +3.138052000E3,5.935628673E1 +3.138348000E3,5.697436057E1 +3.138590000E3,6.713499986E1 +3.138833000E3,5.996032355E1 +3.139071000E3,6.566814076E1 +3.139366000E3,6.469315039E1 +3.139607000E3,6.414816039E1 +3.139901000E3,6.238348704E1 +3.140144000E3,5.975478602E1 +3.140477000E3,5.617333113E1 +3.140789000E3,6.140881460E1 +3.141038000E3,5.760925345E1 +3.141323000E3,5.813474075E1 +3.141616000E3,6.190304914E1 +3.141899000E3,5.853813516E1 +3.142123000E3,6.019478920E1 +3.142387000E3,5.824830032E1 +3.142639000E3,6.031650371E1 +3.142898000E3,5.874305926E1 +3.143211000E3,6.365997735E1 +3.143459000E3,6.182267241E1 +3.143814000E3,6.153305629E1 +3.144076000E3,6.040235966E1 +3.144345000E3,6.279707978E1 +3.144591000E3,6.261441373E1 +3.144837000E3,5.722591859E1 +3.145082000E3,5.791919274E1 +3.145387000E3,6.142016587E1 +3.145678000E3,5.996802308E1 +3.145994000E3,5.761245992E1 +3.146269000E3,5.915341256E1 +3.146531000E3,5.679987844E1 +3.146814000E3,6.228452904E1 +3.147163000E3,6.038592359E1 +3.147440000E3,6.662509726E1 +3.147705000E3,5.864713600E1 +3.147961000E3,6.383827006E1 +3.148228000E3,6.445939632E1 +3.148543000E3,6.206597752E1 +3.148800000E3,6.082056407E1 +3.149046000E3,5.872798480E1 +3.149340000E3,5.792404132E1 +3.149585000E3,5.917409009E1 +3.149845000E3,5.619795947E1 +3.150164000E3,6.447379623E1 +3.150501000E3,6.336546747E1 +3.150798000E3,6.022605646E1 +3.151059000E3,5.837139298E1 +3.151360000E3,5.721847889E1 +3.151614000E3,7.085699981E1 +3.151908000E3,6.031233854E1 +3.152206000E3,6.170839562E1 +3.152452000E3,6.336115962E1 +3.152697000E3,6.732286145E1 +3.152943000E3,6.043278366E1 +3.153235000E3,5.822950572E1 +3.153537000E3,6.155234216E1 +3.153813000E3,5.671966020E1 +3.154078000E3,5.613348243E1 +3.154333000E3,5.384913785E1 +3.154580000E3,5.739778382E1 +3.154869000E3,5.617144196E1 +3.155103000E3,5.699346940E1 +3.155351000E3,6.356393037E1 +3.155653000E3,5.483372318E1 +3.155949000E3,5.806865262E1 +3.156195000E3,5.725879338E1 +3.156459000E3,5.708272088E1 +3.156776000E3,5.736330762E1 +3.157028000E3,5.620178265E1 +3.157280000E3,5.557503250E1 +3.157521000E3,6.379766868E1 +3.157864000E3,6.175462639E1 +3.158113000E3,5.970375584E1 +3.158365000E3,5.482220327E1 +3.158625000E3,6.094938302E1 +3.158872000E3,6.189076140E1 +3.159128000E3,6.365906369E1 +3.159385000E3,6.365252593E1 +3.159699000E3,6.421784723E1 +3.160039000E3,5.952347777E1 +3.160337000E3,6.582170091E1 +3.160643000E3,6.400621400E1 +3.160905000E3,5.982923632E1 +3.161162000E3,5.912958512E1 +3.161449000E3,5.744161350E1 +3.161722000E3,6.208953034E1 +3.161984000E3,6.743490019E1 +3.162228000E3,5.893358785E1 +3.162506000E3,6.260442429E1 +3.162777000E3,6.054589944E1 +3.163072000E3,5.958101250E1 +3.163380000E3,5.756716970E1 +3.163623000E3,5.897741262E1 +3.163916000E3,5.199350029E1 +3.164173000E3,5.607364633E1 +3.164444000E3,6.846587546E1 +3.164756000E3,5.833953537E1 +3.165011000E3,6.699601536E1 +3.165255000E3,6.024033326E1 +3.165530000E3,5.636786936E1 +3.165825000E3,5.917346905E1 +3.166077000E3,5.684739711E1 +3.166343000E3,5.441684119E1 +3.166607000E3,5.708423030E1 +3.166871000E3,5.726160097E1 +3.167212000E3,5.795085756E1 +3.167513000E3,5.359033433E1 +3.167800000E3,5.481028168E1 +3.168051000E3,5.771426852E1 +3.168321000E3,5.720698183E1 +3.168574000E3,6.029484328E1 +3.168847000E3,6.594273179E1 +3.169141000E3,5.814954146E1 +3.169451000E3,5.741553332E1 +3.169717000E3,5.474949866E1 +3.170064000E3,5.858087337E1 +3.170388000E3,5.901398101E1 +3.170689000E3,6.599046976E1 +3.170942000E3,6.777823262E1 +3.171184000E3,6.339704259E1 +3.171437000E3,5.678237753E1 +3.171694000E3,6.067324941E1 +3.171975000E3,6.337570500E1 +3.172215000E3,6.060254578E1 +3.172509000E3,6.511602204E1 +3.172792000E3,6.491523998E1 +3.173086000E3,6.236437487E1 +3.173442000E3,6.132637014E1 +3.173725000E3,5.575670785E1 +3.173997000E3,5.450541115E1 +3.174243000E3,5.816223835E1 +3.174516000E3,5.991084873E1 +3.174771000E3,5.959264792E1 +3.175022000E3,6.001504494E1 +3.175268000E3,5.794233494E1 +3.175510000E3,5.875384007E1 +3.175752000E3,6.582497874E1 +3.176001000E3,6.385809704E1 +3.176310000E3,6.575292490E1 +3.176700000E3,6.328122862E1 +3.176947000E3,6.160374932E1 +3.177205000E3,6.233605233E1 +3.177480000E3,5.746120395E1 +3.177733000E3,5.491961653E1 +3.178002000E3,5.346590976E1 +3.178308000E3,4.910433719E1 +3.178598000E3,5.548086035E1 +3.178876000E3,5.834728013E1 +3.179129000E3,5.722852381E1 +3.179407000E3,5.371032540E1 +3.179686000E3,5.375017527E1 +3.180066000E3,5.741446005E1 +3.180325000E3,5.595914402E1 +3.180624000E3,5.784989425E1 +3.180867000E3,5.818330240E1 +3.181112000E3,5.651638359E1 +3.181407000E3,5.400925398E1 +3.181645000E3,5.134681346E1 +3.181939000E3,5.540645654E1 +3.182189000E3,5.603348674E1 +3.182489000E3,5.612576596E1 +3.182726000E3,5.412821683E1 +3.183072000E3,5.364995955E1 +3.183373000E3,5.685067634E1 +3.183631000E3,5.292396423E1 +3.183913000E3,5.037305724E1 +3.184139000E3,5.458652507E1 +3.184386000E3,5.336216390E1 +3.184625000E3,5.355204553E1 +3.184861000E3,5.798216811E1 +3.185170000E3,5.037998219E1 +3.185412000E3,5.253320042E1 +3.185661000E3,5.864558083E1 +3.185944000E3,5.568855775E1 +3.186307000E3,6.065674046E1 +3.186594000E3,5.486017232E1 +3.186846000E3,5.354898396E1 +3.187128000E3,5.606629368E1 +3.187373000E3,5.887335608E1 +3.187646000E3,5.932986575E1 +3.187996000E3,5.618144782E1 +3.188254000E3,5.279151533E1 +3.188538000E3,5.980979660E1 +3.188819000E3,5.959008295E1 +3.189058000E3,5.757326838E1 +3.189324000E3,5.814251633E1 +3.189681000E3,6.715432083E1 +3.189929000E3,5.659786492E1 +3.190183000E3,6.813933576E1 +3.190493000E3,6.423896785E1 +3.190762000E3,6.115594562E1 +3.191063000E3,6.466877383E1 +3.191295000E3,6.400176112E1 +3.191543000E3,6.061189134E1 +3.191813000E3,6.334758009E1 +3.192062000E3,6.268892194E1 +3.192384000E3,6.255649695E1 +3.192688000E3,6.440152216E1 +3.193095000E3,6.083356984E1 +3.193368000E3,5.702207605E1 +3.193630000E3,6.129862703E1 +3.193931000E3,6.511359313E1 +3.194208000E3,6.424113032E1 +3.194458000E3,6.277957456E1 +3.194751000E3,6.067489213E1 +3.195007000E3,6.044409325E1 +3.195267000E3,5.902485869E1 +3.195523000E3,5.940450479E1 +3.195769000E3,5.629667180E1 +3.196103000E3,5.773687048E1 +3.196362000E3,5.275604571E1 +3.196676000E3,5.321996877E1 +3.196932000E3,4.952922772E1 +3.197191000E3,5.411849627E1 +3.197458000E3,5.575997519E1 +3.197718000E3,5.782402980E1 +3.197982000E3,6.092045522E1 +3.198228000E3,6.504329265E1 +3.198474000E3,5.972589974E1 +3.198713000E3,5.816644178E1 +3.198958000E3,6.190720604E1 +3.199249000E3,6.026051864E1 +3.199481000E3,6.064697026E1 +3.199744000E3,5.715218400E1 +3.200003000E3,5.509276249E1 +3.200281000E3,5.035485844E1 +3.200607000E3,5.745123346E1 +3.200874000E3,5.874041571E1 +3.201157000E3,6.540993071E1 +3.201407000E3,6.592699897E1 +3.201730000E3,5.826687879E1 +3.201982000E3,5.966898415E1 +3.202228000E3,5.928022084E1 +3.202546000E3,5.492659239E1 +3.202811000E3,5.843773228E1 +3.203091000E3,5.615478265E1 +3.203365000E3,5.378265559E1 +3.203611000E3,5.724493737E1 +3.203868000E3,5.517839982E1 +3.204137000E3,5.166422622E1 +3.204439000E3,5.966362579E1 +3.204692000E3,5.837831137E1 +3.204952000E3,5.873474045E1 +3.205216000E3,6.025432286E1 +3.205460000E3,5.709891269E1 +3.205710000E3,5.946766606E1 +3.206062000E3,5.575402329E1 +3.206367000E3,5.597615265E1 +3.206620000E3,5.417374311E1 +3.206869000E3,5.785505194E1 +3.207152000E3,5.973144393E1 +3.207405000E3,5.494944595E1 +3.207684000E3,5.859159641E1 +3.207982000E3,5.909726368E1 +3.208273000E3,6.221796591E1 +3.208541000E3,6.248597715E1 +3.208787000E3,6.143432195E1 +3.209043000E3,5.767415987E1 +3.209357000E3,6.087003136E1 +3.209636000E3,5.816954701E1 +3.209920000E3,5.644196424E1 +3.210232000E3,5.726504339E1 +3.210505000E3,5.384487818E1 +3.210769000E3,6.092886049E1 +3.211044000E3,5.910647270E1 +3.211306000E3,5.855040927E1 +3.211560000E3,6.886189365E1 +3.211803000E3,6.193548709E1 +3.212075000E3,5.895667088E1 +3.212320000E3,5.613734816E1 +3.212669000E3,6.365011223E1 +3.212934000E3,6.616065582E1 +3.213195000E3,4.911720228E1 +3.213460000E3,5.429539168E1 +3.213713000E3,5.374714305E1 +3.213991000E3,5.505703483E1 +3.214231000E3,5.216197587E1 +3.214486000E3,6.958974683E1 +3.214787000E3,6.410499727E1 +3.215047000E3,5.795707420E1 +3.215308000E3,6.210641451E1 +3.215581000E3,5.724864620E1 +3.215943000E3,5.588397230E1 +3.216221000E3,5.281586206E1 +3.216477000E3,5.616597876E1 +3.216735000E3,7.016181845E1 +3.216992000E3,7.008234703E1 +3.217238000E3,6.883905131E1 +3.217482000E3,6.039428517E1 +3.217722000E3,6.572225500E1 +3.217971000E3,6.862082655E1 +3.218221000E3,6.392739620E1 +3.218481000E3,6.757625304E1 +3.218798000E3,6.468895575E1 +3.219137000E3,5.941097234E1 +3.219443000E3,6.639331379E1 +3.219715000E3,6.512137194E1 +3.219985000E3,6.137345425E1 +3.220244000E3,6.566739727E1 +3.220494000E3,5.684090738E1 +3.220758000E3,4.865476042E1 +3.221022000E3,5.571447424E1 +3.221324000E3,5.050200483E1 +3.221601000E3,5.262698993E1 +3.221858000E3,5.385544431E1 +3.222185000E3,5.793526709E1 +3.222548000E3,5.957102097E1 +3.222796000E3,5.026005559E1 +3.223068000E3,5.164515600E1 +3.223344000E3,6.575405490E1 +3.223598000E3,6.925353270E1 +3.223876000E3,5.909751181E1 +3.224152000E3,5.561020058E1 +3.224416000E3,5.257890354E1 +3.224662000E3,5.262446891E1 +3.224954000E3,5.599583257E1 +3.225202000E3,5.286294623E1 +3.225483000E3,5.049109924E1 +3.225830000E3,6.154494550E1 +3.226096000E3,5.433068412E1 +3.226350000E3,5.256602683E1 +3.226652000E3,5.283535150E1 +3.226989000E3,5.811852242E1 +3.227251000E3,5.842389129E1 +3.227505000E3,5.524471208E1 +3.227782000E3,6.207780754E1 +3.228053000E3,6.165130850E1 +3.228302000E3,5.818085510E1 +3.228557000E3,5.646455559E1 +3.228823000E3,5.903487317E1 +3.229201000E3,5.460588060E1 +3.229471000E3,5.534537953E1 +3.229720000E3,5.492103159E1 +3.229976000E3,5.474982433E1 +3.230276000E3,6.311967749E1 +3.230531000E3,6.144237593E1 +3.230845000E3,6.204497775E1 +3.231123000E3,6.192920277E1 +3.231382000E3,6.726064707E1 +3.231675000E3,5.951322284E1 +3.231970000E3,5.620608761E1 +3.232324000E3,5.597726308E1 +3.232555000E3,5.737347613E1 +3.232845000E3,5.515502781E1 +3.233172000E3,5.977186730E1 +3.233435000E3,6.131606000E1 +3.233742000E3,5.610580070E1 +3.234000000E3,5.978218601E1 +3.234272000E3,6.319970701E1 +3.234581000E3,5.608562509E1 +3.234862000E3,6.169746582E1 +3.235159000E3,6.105762669E1 +3.235416000E3,5.369522011E1 +3.235667000E3,6.580487109E1 +3.235906000E3,5.797374086E1 +3.236200000E3,6.981267784E1 +3.236445000E3,6.229515865E1 +3.236695000E3,6.858181426E1 +3.236976000E3,5.740787399E1 +3.237218000E3,5.455964692E1 +3.237457000E3,7.204325578E1 +3.237720000E3,6.142914611E1 +3.238013000E3,5.768794211E1 +3.238280000E3,5.732491467E1 +3.238580000E3,5.793744264E1 +3.238882000E3,5.626325471E1 +3.239149000E3,5.661724856E1 +3.239424000E3,6.969605219E1 +3.239726000E3,6.482965407E1 +3.239976000E3,5.947270091E1 +3.240278000E3,5.913422796E1 +3.240576000E3,5.630232959E1 +3.240877000E3,5.956366293E1 +3.241128000E3,6.177688280E1 +3.241391000E3,5.851951662E1 +3.241664000E3,5.959787493E1 +3.241944000E3,5.765523372E1 +3.242310000E3,5.961443978E1 +3.242602000E3,5.811194000E1 +3.242910000E3,5.765320401E1 +3.243188000E3,6.631148602E1 +3.243420000E3,6.916377121E1 +3.243673000E3,6.435158828E1 +3.243925000E3,6.486926440E1 +3.244170000E3,5.506348984E1 +3.244475000E3,6.702899260E1 +3.244772000E3,6.244838658E1 +3.245003000E3,6.057959417E1 +3.245328000E3,6.103137126E1 +3.245581000E3,5.723671640E1 +3.245864000E3,5.125127512E1 +3.246123000E3,5.748187394E1 +3.246395000E3,6.148075018E1 +3.246669000E3,6.226010686E1 +3.246940000E3,5.273573389E1 +3.247233000E3,5.462141876E1 +3.247482000E3,5.946160846E1 +3.247728000E3,6.623014757E1 +3.248041000E3,5.823129903E1 +3.248289000E3,5.689561843E1 +3.248538000E3,5.851473913E1 +3.248910000E3,5.778207994E1 +3.249187000E3,6.109108533E1 +3.249462000E3,6.368024039E1 +3.249726000E3,6.527718864E1 +3.249983000E3,5.855658653E1 +3.250281000E3,5.718860903E1 +3.250534000E3,5.946900486E1 +3.250785000E3,5.688578668E1 +3.251033000E3,5.444863300E1 +3.251316000E3,5.885016251E1 +3.251570000E3,6.172482417E1 +3.251833000E3,6.833245599E1 +3.252200000E3,6.656973280E1 +3.252441000E3,6.663686281E1 +3.252721000E3,6.380106140E1 +3.252991000E3,6.113258977E1 +3.253242000E3,7.270243700E1 +3.253457000E3,7.442711013E1 +3.253706000E3,7.097589831E1 +3.253999000E3,5.740107596E1 +3.254237000E3,5.407351324E1 +3.254532000E3,6.235563554E1 +3.254777000E3,6.148535018E1 +3.255085000E3,6.767985005E1 +3.255346000E3,5.893302101E1 +3.255628000E3,5.834235484E1 +3.255897000E3,6.152524318E1 +3.256146000E3,6.124474706E1 +3.256419000E3,5.928557591E1 +3.256642000E3,5.798678480E1 +3.256921000E3,5.800318977E1 +3.257149000E3,5.813391626E1 +3.257392000E3,6.200496820E1 +3.257645000E3,6.268368020E1 +3.257945000E3,6.783162804E1 +3.258296000E3,7.343015115E1 +3.258556000E3,7.258165803E1 +3.258805000E3,6.753466802E1 +3.259117000E3,7.134403593E1 +3.259421000E3,6.813653179E1 +3.259673000E3,6.449045726E1 +3.259939000E3,7.144310958E1 +3.260188000E3,6.619195201E1 +3.260438000E3,6.990193438E1 +3.260692000E3,6.791067771E1 +3.260944000E3,7.014061601E1 +3.261191000E3,7.271368424E1 +3.261532000E3,6.889323528E1 +3.261794000E3,6.087932672E1 +3.262047000E3,6.139975131E1 +3.262322000E3,6.684035582E1 +3.262586000E3,6.977079140E1 +3.262861000E3,6.711211223E1 +3.263137000E3,6.891542739E1 +3.263415000E3,6.450575202E1 +3.263671000E3,6.375083447E1 +3.263946000E3,6.525419018E1 +3.264250000E3,6.323969714E1 +3.264517000E3,7.351653517E1 +3.264813000E3,7.240916805E1 +3.265107000E3,6.991986455E1 +3.265349000E3,6.767718353E1 +3.265598000E3,7.020318016E1 +3.265847000E3,6.593396207E1 +3.266149000E3,6.776886494E1 +3.266400000E3,6.796917668E1 +3.266653000E3,6.234495715E1 +3.266897000E3,6.492303298E1 +3.267153000E3,6.551968402E1 +3.267398000E3,6.154456079E1 +3.267647000E3,6.087933145E1 +3.267896000E3,6.053677169E1 +3.268248000E3,6.893351216E1 +3.268513000E3,6.695525456E1 +3.268817000E3,6.263553940E1 +3.269070000E3,5.965971741E1 +3.269315000E3,6.136430702E1 +3.269582000E3,7.398506568E1 +3.269828000E3,7.145137487E1 +3.270128000E3,7.238266470E1 +3.270371000E3,7.289527120E1 +3.270623000E3,7.428636164E1 +3.270931000E3,7.248535741E1 +3.271185000E3,7.399445608E1 +3.271518000E3,7.355251323E1 +3.271795000E3,7.296660624E1 +3.272081000E3,7.131368475E1 +3.272358000E3,7.068792091E1 +3.272581000E3,6.623699177E1 +3.272835000E3,5.258987188E1 +3.273093000E3,6.044165509E1 +3.273337000E3,6.879817511E1 +3.273635000E3,6.970693453E1 +3.273931000E3,7.169623139E1 +3.274180000E3,7.112396098E1 +3.274428000E3,7.190035192E1 +3.274761000E3,7.089393329E1 +3.275038000E3,6.995869622E1 +3.275323000E3,6.900781199E1 +3.275569000E3,6.766263448E1 +3.275860000E3,6.881814388E1 +3.276116000E3,6.821596427E1 +3.276370000E3,6.896702672E1 +3.276649000E3,6.827119542E1 +3.276914000E3,6.795818984E1 +3.277171000E3,7.025945887E1 +3.277482000E3,6.685661764E1 +3.277741000E3,6.810082518E1 +3.278078000E3,6.902136690E1 +3.278358000E3,6.568611650E1 +3.278604000E3,7.123802039E1 +3.278848000E3,6.300940961E1 +3.279144000E3,6.292057856E1 +3.279382000E3,6.654167697E1 +3.279622000E3,6.808014942E1 +3.279917000E3,6.902808966E1 +3.280160000E3,6.685153426E1 +3.280471000E3,6.435621527E1 +3.280770000E3,6.765080490E1 +3.281059000E3,6.808248309E1 +3.281352000E3,6.477485011E1 +3.281602000E3,5.628454157E1 +3.281867000E3,5.800927668E1 +3.282130000E3,7.131716325E1 +3.282389000E3,7.355208108E1 +3.282663000E3,7.108584109E1 +3.282932000E3,5.710440961E1 +3.283191000E3,5.329699257E1 +3.283451000E3,5.003319724E1 +3.283709000E3,5.081704645E1 +3.284003000E3,5.075383483E1 +3.284259000E3,5.431712692E1 +3.284628000E3,5.277582101E1 +3.284917000E3,6.061307876E1 +3.285214000E3,6.168657926E1 +3.285472000E3,5.854988033E1 +3.285744000E3,4.913527641E1 +3.285999000E3,5.563664353E1 +3.286250000E3,5.841488419E1 +3.286517000E3,6.437604518E1 +3.286777000E3,6.124264602E1 +3.287035000E3,5.886049633E1 +3.287300000E3,6.196549102E1 +3.287630000E3,6.776239267E1 +3.287951000E3,6.702605133E1 +3.288259000E3,5.376695086E1 +3.288499000E3,5.095339550E1 +3.288807000E3,5.078317550E1 +3.289117000E3,5.659564827E1 +3.289411000E3,7.136818215E1 +3.289684000E3,6.629708396E1 +3.289982000E3,7.133804213E1 +3.290271000E3,6.994811010E1 +3.290544000E3,6.532422657E1 +3.290800000E3,6.451013008E1 +3.291132000E3,6.261305598E1 +3.291418000E3,6.696223022E1 +3.291676000E3,4.827412656E1 +3.291930000E3,4.724575587E1 +3.292202000E3,4.846609938E1 +3.292501000E3,5.276700476E1 +3.292822000E3,5.071547801E1 +3.293065000E3,4.944777186E1 +3.293349000E3,4.466809801E1 +3.293583000E3,4.432750067E1 +3.293832000E3,5.165471909E1 +3.294078000E3,4.606912616E1 +3.294427000E3,4.826074528E1 +3.294712000E3,4.434240888E1 +3.294985000E3,4.684583968E1 +3.295286000E3,5.104787864E1 +3.295548000E3,4.839146586E1 +3.295807000E3,5.479537456E1 +3.296066000E3,5.055213000E1 +3.296324000E3,3.933656037E1 +3.296585000E3,4.513652817E1 +3.296840000E3,4.805617654E1 +3.297099000E3,4.453428427E1 +3.297354000E3,5.205427791E1 +3.297705000E3,5.001223291E1 +3.297948000E3,5.342697607E1 +3.298200000E3,5.619467550E1 +3.298461000E3,5.565459347E1 +3.298738000E3,5.819577446E1 +3.298988000E3,5.077826383E1 +3.299236000E3,5.142261821E1 +3.299478000E3,5.610754709E1 +3.299775000E3,5.248015066E1 +3.300011000E3,4.742520943E1 +3.300325000E3,5.519481303E1 +3.300626000E3,4.628613419E1 +3.300959000E3,4.430731849E1 +3.301224000E3,4.380193782E1 +3.301473000E3,4.690647127E1 +3.301746000E3,4.845294386E1 +3.302057000E3,4.912389116E1 +3.302307000E3,5.155191791E1 +3.302563000E3,5.240902416E1 +3.302820000E3,4.677306339E1 +3.303083000E3,5.037145513E1 +3.303327000E3,4.506752152E1 +3.303573000E3,4.920686196E1 +3.303857000E3,4.935493485E1 +3.304189000E3,4.415801479E1 +3.304459000E3,4.423531181E1 +3.304768000E3,3.874162391E1 +3.305030000E3,4.189958295E1 +3.305333000E3,4.005870516E1 +3.305579000E3,5.072183491E1 +3.305843000E3,4.113754863E1 +3.306140000E3,5.548273149E1 +3.306383000E3,5.383424402E1 +3.306628000E3,5.205779319E1 +3.306877000E3,4.592085607E1 +3.307206000E3,5.092451979E1 +3.307449000E3,4.823039740E1 +3.307720000E3,5.026090042E1 +3.307982000E3,5.794901070E1 +3.308198000E3,5.239372011E1 +3.308502000E3,5.024517162E1 +3.308742000E3,4.253471720E1 +3.309044000E3,4.105523794E1 +3.309340000E3,3.028117703E1 +3.309596000E3,2.809150222E1 +3.309864000E3,2.626060468E1 +3.310135000E3,5.055452447E1 +3.310501000E3,7.199271156E1 +3.310777000E3,7.172468430E1 +3.311045000E3,7.282926204E1 +3.311313000E3,7.145580608E1 +3.311562000E3,7.218798353E1 +3.311867000E3,7.081603642E1 +3.312107000E3,7.122522782E1 +3.312348000E3,7.013128466E1 +3.312672000E3,7.138239962E1 +3.312976000E3,7.589001323E1 +3.313216000E3,6.988466628E1 +3.313506000E3,6.521999768E1 +3.313853000E3,5.781158269E1 +3.314129000E3,5.698768013E1 +3.314381000E3,5.954050680E1 +3.314636000E3,5.529467486E1 +3.314903000E3,6.884377149E1 +3.315163000E3,7.293133775E1 +3.315448000E3,7.186875504E1 +3.315697000E3,6.942752239E1 +3.315995000E3,6.899930460E1 +3.316247000E3,6.333687203E1 +3.316557000E3,6.820286469E1 +3.316856000E3,7.371764624E1 +3.317124000E3,7.475494405E1 +3.317411000E3,7.135849387E1 +3.317718000E3,5.726081152E1 +3.317965000E3,5.650406291E1 +3.318233000E3,4.901561410E1 +3.318490000E3,6.881993797E1 +3.318742000E3,7.251465406E1 +3.319010000E3,6.395213402E1 +3.319311000E3,7.197127027E1 +3.319615000E3,6.948849738E1 +3.319862000E3,6.664503435E1 +3.320187000E3,6.933008182E1 +3.320443000E3,6.121514242E1 +3.320753000E3,7.017439611E1 +3.321063000E3,7.393277725E1 +3.321329000E3,7.045535337E1 +3.321643000E3,6.985180357E1 +3.321896000E3,7.158196073E1 +3.322168000E3,6.999348148E1 +3.322483000E3,6.872091406E1 +3.322823000E3,6.386396976E1 +3.323116000E3,6.891641311E1 +3.323355000E3,6.790436633E1 +3.323733000E3,6.190629476E1 +3.324010000E3,6.307072034E1 +3.324306000E3,6.459812141E1 +3.324591000E3,6.928529051E1 +3.324846000E3,6.953301961E1 +3.325158000E3,6.946121501E1 +3.325471000E3,6.177266257E1 +3.325739000E3,6.057146439E1 +3.326000000E3,6.021658005E1 +3.326269000E3,6.588088303E1 +3.326536000E3,6.594068529E1 +3.326797000E3,5.957632846E1 +3.327117000E3,5.830018402E1 +3.327415000E3,5.952820917E1 +3.327678000E3,5.996997483E1 +3.327928000E3,6.374276040E1 +3.328204000E3,6.484785648E1 +3.328504000E3,6.253699213E1 +3.328743000E3,6.495848159E1 +3.329001000E3,6.390198219E1 +3.329317000E3,6.107203426E1 +3.329613000E3,6.678300135E1 +3.329901000E3,6.048531373E1 +3.330164000E3,6.806621622E1 +3.330501000E3,6.592361883E1 +3.330795000E3,6.652249790E1 +3.331059000E3,6.079261624E1 +3.331342000E3,7.055285274E1 +3.331620000E3,6.885169705E1 +3.331870000E3,6.676175072E1 +3.332125000E3,6.653456857E1 +3.332410000E3,6.539948315E1 +3.332658000E3,6.741723145E1 +3.332915000E3,5.982571500E1 +3.333236000E3,7.234399288E1 +3.333559000E3,7.555637810E1 +3.333801000E3,7.132946849E1 +3.334053000E3,7.012473325E1 +3.334345000E3,7.083313400E1 +3.334658000E3,6.159204912E1 +3.334951000E3,5.416652771E1 +3.335187000E3,5.331536045E1 +3.335488000E3,5.516853140E1 +3.335780000E3,5.755380245E1 +3.336028000E3,6.034949591E1 +3.336335000E3,5.933559907E1 +3.336577000E3,6.200660494E1 +3.336975000E3,6.752581884E1 +3.337230000E3,6.552308109E1 +3.337509000E3,6.043162012E1 +3.337804000E3,6.346167875E1 +3.338097000E3,5.762665769E1 +3.338354000E3,6.046465836E1 +3.338657000E3,5.841838084E1 +3.338937000E3,5.426549819E1 +3.339182000E3,5.312925890E1 +3.339425000E3,5.904532039E1 +3.339705000E3,5.548841740E1 +3.339970000E3,6.467955136E1 +3.340311000E3,6.518540616E1 +3.340567000E3,6.130157495E1 +3.340843000E3,4.234380604E1 +3.341102000E3,3.685811557E1 +3.341367000E3,5.229521155E1 +3.341631000E3,4.577123603E1 +3.341913000E3,5.522804687E1 +3.342191000E3,7.219670231E1 +3.342497000E3,6.138541536E1 +3.342739000E3,5.883033505E1 +3.342994000E3,5.692990468E1 +3.343272000E3,5.784770175E1 +3.343584000E3,5.851150722E1 +3.343847000E3,7.127137910E1 +3.344137000E3,7.004437015E1 +3.344432000E3,6.719880262E1 +3.344677000E3,6.266500726E1 +3.344966000E3,6.662051616E1 +3.345209000E3,6.259160849E1 +3.345462000E3,6.521765959E1 +3.345762000E3,6.373477950E1 +3.346056000E3,5.976833176E1 +3.346294000E3,5.557373783E1 +3.346597000E3,5.486821605E1 +3.346842000E3,4.854970484E1 +3.347096000E3,6.338774242E1 +3.347415000E3,6.646909489E1 +3.347712000E3,6.370164725E1 +3.347950000E3,6.577012972E1 +3.348257000E3,6.536203326E1 +3.348509000E3,5.777033235E1 +3.348799000E3,6.942121279E1 +3.349070000E3,6.552465655E1 +3.349329000E3,6.400867966E1 +3.349583000E3,5.955829212E1 +3.349911000E3,6.233007104E1 +3.350154000E3,7.360271557E1 +3.350432000E3,7.402471070E1 +3.350716000E3,7.225249055E1 +3.350966000E3,6.654334459E1 +3.351200000E3,6.590758849E1 +3.351507000E3,6.143698167E1 +3.351805000E3,7.197722167E1 +3.352079000E3,6.778594348E1 +3.352307000E3,5.712392879E1 +3.352566000E3,5.659236121E1 +3.352870000E3,5.352359430E1 +3.353127000E3,5.362353429E1 +3.353366000E3,5.964860406E1 +3.353638000E3,7.164177428E1 +3.353890000E3,6.730234717E1 +3.354173000E3,5.336089185E1 +3.354435000E3,4.770751864E1 +3.354689000E3,4.833001031E1 +3.354956000E3,4.464972004E1 +3.355220000E3,6.809720152E1 +3.355493000E3,7.032616040E1 +3.355723000E3,7.137092547E1 +3.356052000E3,7.106236065E1 +3.356287000E3,7.302101107E1 +3.356599000E3,6.868512076E1 +3.356867000E3,7.134905494E1 +3.357133000E3,7.032184319E1 +3.357463000E3,6.484515560E1 +3.357753000E3,5.949029357E1 +3.358081000E3,6.553405106E1 +3.358385000E3,5.460622041E1 +3.358634000E3,4.798111952E1 +3.358902000E3,5.356090224E1 +3.359186000E3,5.091993104E1 +3.359516000E3,5.980463665E1 +3.359805000E3,5.623340998E1 +3.360124000E3,4.885342740E1 +3.360404000E3,4.536632542E1 +3.360660000E3,5.726647509E1 +3.360941000E3,6.266477325E1 +3.361245000E3,5.265432523E1 +3.361521000E3,4.746518361E1 +3.361777000E3,5.341135388E1 +3.362038000E3,5.094337921E1 +3.362292000E3,5.832737886E1 +3.362616000E3,5.247742127E1 +3.363049000E3,5.123926483E1 +3.363313000E3,4.482127206E1 +3.363600000E3,4.813050338E1 +3.363848000E3,5.751744958E1 +3.364157000E3,5.045245795E1 diff --git a/04_loesungen/01_processing/alg15_xydiagramm_loesung_a3/alg15_xydiagramm_loesung_a3.pde b/04_loesungen/01_processing/alg15_xydiagramm_loesung_a3/alg15_xydiagramm_loesung_a3.pde new file mode 100644 index 0000000..9bb130c --- /dev/null +++ b/04_loesungen/01_processing/alg15_xydiagramm_loesung_a3/alg15_xydiagramm_loesung_a3.pde @@ -0,0 +1,116 @@ +/** + * XY-Diagramm für Schalldruckpegel, Zahlen werden aus CSV-Datei gelesen. + * + * @author Schaller + * @version 29.11.18 + */ + +// Liste mit allen Werten //<>// //<>// //<>// +double[] x_werte; +double[] y_werte; + +// Hilfsvariablen für die Suche +int akt_maximum=-1; // aktuell groesstes Element +int akt=-1; // aktuell untersuchtes Element +int verzoegerung=0; // Geschwindigkeit der Ausführung + +// Schriften +PFont kleineSchrift; +PFont grosseSchrift; + + +public void setup() { + // Zeichenfläche erzeugen + size(1000, 700); + background(0); + // Schriften laden + kleineSchrift = loadFont("KleineSchrift.vlw"); + grosseSchrift = loadFont("GrosseSchrift.vlw"); + + // CSV-Datei laden und anzeigen + ladeTabelle("Amplitudes.csv"); + stroke(250,250,200); + zeichneXYDiagramm(); +} + + +public void ladeTabelle(String name) { + // Tabelle aus CSV-Datei laden + Table csv = loadTable(name, "header,csv"); + + if (csv != null && csv.getColumnCount()==2) { + + // Initialisiere Arrays, in die alle Zeilen der Tabelle passen + x_werte = new double[csv.getRowCount()]; + y_werte = new double[csv.getRowCount()]; + + // Fülle die Arrays mit Werten aus der Tabelle + for (int i = 0; i < x_werte.length; i++) { + // Lies Wert aus der i. Zeile und der Spalte "Punkte" bzw. "Name" + x_werte[i] = csv.getDouble(i, "Time (s)"); + y_werte[i] = csv.getDouble(i, "Sound pressure level (dB)"); + } + } +} + +public void zeichneXYDiagramm() { + + + + // Überschrift + fill(255, 255, 255); + textFont(grosseSchrift); + text("Lärmpegel", 2, 20); + textFont(kleineSchrift); + + // Alle Einträge darstellen + + if (x_werte != null) { + // Maximum bestimmen + int max_x_pos = sucheMaximum(x_werte); + int max_y_pos = sucheMaximum(y_werte); + double max_x = x_werte[max_x_pos]; + double max_y = y_werte[max_y_pos]; + + // Skalierungsfaktoren + double faktor_x = 1000.0 / max_x; + double faktor_y = 700.0 / max_y; + + for (int i = 0; i< x_werte.length; i++) { + + // XY-Punktdiagramm zeichnen + int x = (int) (x_werte[i]*faktor_x); + int y = (int) (700- y_werte[i]*faktor_y); + System.out.println("x:"+x+"y:"+y); + + + point(x, y); + } + } +} + + +public int sucheMaximum(double[] zahlen) { + // Sind überhaupt Daten da? + if (zahlen.length==0 ) { + return -1; + } + + // Startwerte setzen + akt_maximum = 0; + akt = 1; + + // Alle Arrayelemente untersuchen + while (akt < zahlen.length) { + + // Neues größtes Element?? + if (zahlen[akt]> zahlen[akt_maximum]) { + // Dann merke dir das neue + akt_maximum = akt; + + } + akt = akt + 1; + } + // Gib Position des größten Elements zurück + return akt_maximum; +} diff --git a/04_loesungen/01_processing/alg15_xydiagramm_loesung_a3/data/GrosseSchrift.vlw b/04_loesungen/01_processing/alg15_xydiagramm_loesung_a3/data/GrosseSchrift.vlw new file mode 100644 index 0000000..497c8c8 Binary files /dev/null and b/04_loesungen/01_processing/alg15_xydiagramm_loesung_a3/data/GrosseSchrift.vlw differ diff --git a/04_loesungen/01_processing/alg15_xydiagramm_loesung_a3/data/KleineSchrift.vlw b/04_loesungen/01_processing/alg15_xydiagramm_loesung_a3/data/KleineSchrift.vlw new file mode 100644 index 0000000..ab1241a Binary files /dev/null and b/04_loesungen/01_processing/alg15_xydiagramm_loesung_a3/data/KleineSchrift.vlw differ diff --git a/04_loesungen/01_processing/alg15_xydiagramm_loesung_a3/punkte.csv b/04_loesungen/01_processing/alg15_xydiagramm_loesung_a3/punkte.csv new file mode 100644 index 0000000..f8ff7f2 --- /dev/null +++ b/04_loesungen/01_processing/alg15_xydiagramm_loesung_a3/punkte.csv @@ -0,0 +1,6 @@ +"Name","Punkte" +Nikolaus,216 +Nikolaus,591 +Nikolaus,1057 +Nikolaus,180 +Winfried,168 diff --git a/04_loesungen/01_processing/alg15_xydiagramm_loesung_a4/Amplitudes.csv b/04_loesungen/01_processing/alg15_xydiagramm_loesung_a4/Amplitudes.csv new file mode 100644 index 0000000..bc2151b --- /dev/null +++ b/04_loesungen/01_processing/alg15_xydiagramm_loesung_a4/Amplitudes.csv @@ -0,0 +1,12219 @@ +"Time (s)","Sound pressure level (dB)" +0.000000000E0,6.133205686E1 +1.130000000E-1,5.602431153E1 +3.840000000E-1,3.897519867E1 +7.780000000E-1,4.208195145E1 +1.036000000E0,3.840936313E1 +1.305000000E0,3.561092139E1 +1.587000000E0,4.663257633E1 +1.829000000E0,5.311883882E1 +2.084000000E0,5.299431820E1 +2.357000000E0,5.747397858E1 +2.643000000E0,5.626338063E1 +2.949000000E0,5.790811120E1 +3.238000000E0,5.874544026E1 +3.497000000E0,5.736162139E1 +3.775000000E0,5.897817442E1 +4.097000000E0,5.789822970E1 +4.357000000E0,5.312015799E1 +4.626000000E0,5.710192134E1 +4.941000000E0,6.275087240E1 +5.235000000E0,5.784358767E1 +5.535000000E0,5.388577420E1 +5.827000000E0,5.403495101E1 +6.090000000E0,5.428355086E1 +6.339000000E0,6.064473144E1 +6.616000000E0,6.271091291E1 +6.850000000E0,6.982615367E1 +7.128000000E0,7.050308750E1 +7.487000000E0,5.395311298E1 +7.760000000E0,5.036401582E1 +8.065000000E0,4.614125463E1 +8.361000000E0,6.244776407E1 +8.614000000E0,6.315719526E1 +8.862000000E0,5.981740395E1 +9.123000000E0,5.907292535E1 +9.374000000E0,5.661523092E1 +9.665000000E0,6.210368813E1 +9.948000000E0,6.140958115E1 +1.021100000E1,5.697007655E1 +1.058300000E1,5.460455934E1 +1.084000000E1,5.408516231E1 +1.115300000E1,5.907221377E1 +1.142100000E1,6.113412429E1 +1.172700000E1,6.267949704E1 +1.197100000E1,6.245109870E1 +1.226500000E1,6.342534529E1 +1.255800000E1,6.810008108E1 +1.287100000E1,6.036891848E1 +1.313400000E1,5.913231814E1 +1.342700000E1,5.973818566E1 +1.371600000E1,5.534371651E1 +1.401200000E1,5.694514867E1 +1.431200000E1,6.134814982E1 +1.461100000E1,5.900023912E1 +1.484600000E1,5.689908400E1 +1.515800000E1,5.296474858E1 +1.544000000E1,5.608528071E1 +1.569300000E1,5.728560404E1 +1.596900000E1,5.837984103E1 +1.620100000E1,5.718896638E1 +1.649200000E1,5.909973037E1 +1.678900000E1,5.705554272E1 +1.716300000E1,6.079937758E1 +1.747400000E1,5.618116117E1 +1.775200000E1,5.519881157E1 +1.803800000E1,5.402386340E1 +1.829100000E1,5.678484358E1 +1.858100000E1,5.954639303E1 +1.882300000E1,6.030021638E1 +1.908000000E1,5.588340744E1 +1.934400000E1,5.668691200E1 +1.958800000E1,6.042765467E1 +1.983400000E1,5.839794223E1 +2.008500000E1,5.457976882E1 +2.039500000E1,5.974390604E1 +2.064000000E1,6.049774386E1 +2.092900000E1,6.029857781E1 +2.117800000E1,6.116406203E1 +2.142700000E1,5.664722837E1 +2.173400000E1,5.823294996E1 +2.203100000E1,5.517538657E1 +2.229000000E1,5.322823206E1 +2.259900000E1,6.180779467E1 +2.285300000E1,6.106216386E1 +2.314900000E1,5.883321877E1 +2.347100000E1,6.045262422E1 +2.375000000E1,6.163931220E1 +2.406000000E1,4.841181734E1 +2.432800000E1,4.372149986E1 +2.462900000E1,5.625563946E1 +2.487100000E1,5.672759349E1 +2.513200000E1,5.896193725E1 +2.540800000E1,5.893011728E1 +2.566400000E1,5.857261268E1 +2.596700000E1,5.859012974E1 +2.621900000E1,5.635586832E1 +2.648700000E1,5.350948293E1 +2.673900000E1,5.430043092E1 +2.701400000E1,5.666610976E1 +2.727500000E1,5.218421407E1 +2.753100000E1,5.689076583E1 +2.782000000E1,5.796831886E1 +2.806900000E1,5.608205064E1 +2.831700000E1,5.482273815E1 +2.861600000E1,5.392425499E1 +2.888300000E1,5.329416010E1 +2.914800000E1,5.366916703E1 +2.940200000E1,5.280847155E1 +2.968000000E1,5.333298066E1 +2.994300000E1,5.497085471E1 +3.031200000E1,5.753094076E1 +3.057900000E1,5.655381974E1 +3.086100000E1,5.517704804E1 +3.115600000E1,5.592585858E1 +3.140700000E1,6.212826207E1 +3.166000000E1,5.699502474E1 +3.193500000E1,6.025129057E1 +3.223100000E1,5.686166208E1 +3.247300000E1,5.807641915E1 +3.271900000E1,6.065155151E1 +3.296400000E1,5.961384387E1 +3.320500000E1,6.119064420E1 +3.354400000E1,5.548464633E1 +3.378000000E1,5.699661616E1 +3.408000000E1,5.653770482E1 +3.438000000E1,5.083503664E1 +3.468200000E1,5.695639918E1 +3.495800000E1,5.566535489E1 +3.524700000E1,5.914853092E1 +3.552700000E1,5.758441289E1 +3.576600000E1,6.085665801E1 +3.606700000E1,5.862586334E1 +3.630600000E1,5.096841655E1 +3.662200000E1,6.009246966E1 +3.689400000E1,5.981749726E1 +3.715300000E1,6.108830629E1 +3.740300000E1,5.724514841E1 +3.766500000E1,5.934850613E1 +3.793000000E1,5.725470328E1 +3.819100000E1,5.843556167E1 +3.847700000E1,5.697759761E1 +3.874000000E1,5.721548979E1 +3.901600000E1,5.649629904E1 +3.927200000E1,5.850326911E1 +3.954600000E1,5.691951660E1 +3.993900000E1,5.357092442E1 +4.023400000E1,5.817046878E1 +4.053000000E1,5.554327077E1 +4.081200000E1,5.802928061E1 +4.103900000E1,5.663899845E1 +4.128700000E1,5.494654466E1 +4.155800000E1,5.564956216E1 +4.181900000E1,5.663250304E1 +4.211300000E1,5.652236278E1 +4.238100000E1,5.614203459E1 +4.264000000E1,5.433145844E1 +4.295000000E1,6.132645299E1 +4.326200000E1,6.040612545E1 +4.351400000E1,5.905916902E1 +4.377100000E1,5.885516023E1 +4.401000000E1,5.514814582E1 +4.430800000E1,5.663232510E1 +4.455900000E1,5.055807811E1 +4.482100000E1,5.614950318E1 +4.513300000E1,6.025044420E1 +4.537500000E1,5.643182261E1 +4.568900000E1,5.709089314E1 +4.600500000E1,5.480136123E1 +4.624500000E1,5.924046686E1 +4.656900000E1,6.172358505E1 +4.684100000E1,5.645515217E1 +4.711100000E1,6.002156043E1 +4.736300000E1,6.182669975E1 +4.759700000E1,5.557741963E1 +4.786700000E1,5.598662295E1 +4.818300000E1,5.664767890E1 +4.847900000E1,5.956168629E1 +4.874200000E1,5.713315811E1 +4.898900000E1,5.765479272E1 +4.931400000E1,5.507101982E1 +4.961600000E1,5.361677606E1 +4.990000000E1,5.558547080E1 +5.019600000E1,5.402951441E1 +5.046500000E1,5.805429700E1 +5.078800000E1,5.327636151E1 +5.110300000E1,4.980825483E1 +5.137100000E1,5.290981249E1 +5.165200000E1,4.817864123E1 +5.190100000E1,5.585478693E1 +5.214500000E1,5.457392293E1 +5.242900000E1,5.449921652E1 +5.272500000E1,5.537781025E1 +5.302100000E1,5.598018287E1 +5.326000000E1,5.612851081E1 +5.355800000E1,5.312697891E1 +5.384800000E1,5.799703575E1 +5.409200000E1,5.662162553E1 +5.433900000E1,5.392344795E1 +5.459100000E1,5.398098819E1 +5.494900000E1,5.489231889E1 +5.527100000E1,5.658153835E1 +5.552800000E1,5.624900056E1 +5.589500000E1,4.979935744E1 +5.616900000E1,5.146998424E1 +5.645400000E1,5.878755245E1 +5.668600000E1,5.846227673E1 +5.694400000E1,5.977267383E1 +5.726200000E1,5.508647523E1 +5.754400000E1,5.138853207E1 +5.784300000E1,5.327451232E1 +5.808600000E1,5.887142781E1 +5.837800000E1,5.858062431E1 +5.862200000E1,5.917458096E1 +5.889700000E1,6.050411670E1 +5.926300000E1,5.908687144E1 +5.952100000E1,5.570790758E1 +5.981900000E1,5.444849000E1 +6.006100000E1,5.201240285E1 +6.032000000E1,4.755830762E1 +6.061900000E1,5.204388424E1 +6.086500000E1,5.626914911E1 +6.117500000E1,5.280379974E1 +6.142900000E1,5.093923019E1 +6.173000000E1,5.460427137E1 +6.197800000E1,5.299601182E1 +6.230600000E1,5.424208739E1 +6.257600000E1,5.253762352E1 +6.283700000E1,5.544043962E1 +6.309800000E1,5.527614156E1 +6.335400000E1,5.747262922E1 +6.360700000E1,5.468151445E1 +6.384900000E1,5.582905565E1 +6.410700000E1,5.802400474E1 +6.435000000E1,5.204893636E1 +6.459600000E1,5.280146425E1 +6.486300000E1,4.876648093E1 +6.509700000E1,5.311679703E1 +6.537500000E1,5.192778643E1 +6.571400000E1,5.346709918E1 +6.597900000E1,5.370921552E1 +6.627900000E1,5.676705279E1 +6.652200000E1,5.832258643E1 +6.676600000E1,6.257736406E1 +6.703100000E1,6.295448429E1 +6.737800000E1,6.100964383E1 +6.766100000E1,5.182636016E1 +6.790700000E1,4.952717893E1 +6.821100000E1,5.667475715E1 +6.850300000E1,5.872819054E1 +6.882100000E1,6.004516195E1 +6.907300000E1,5.559244143E1 +6.935100000E1,5.600379936E1 +6.961500000E1,5.338006499E1 +6.987600000E1,5.360104859E1 +7.011900000E1,4.644905289E1 +7.037100000E1,4.528909123E1 +7.067200000E1,5.787885076E1 +7.091600000E1,5.602551032E1 +7.115700000E1,5.989544193E1 +7.142200000E1,6.110384869E1 +7.167900000E1,5.887448069E1 +7.192600000E1,5.797896456E1 +7.226000000E1,5.965665129E1 +7.251000000E1,6.477744226E1 +7.281200000E1,6.243775536E1 +7.310800000E1,5.921576979E1 +7.335600000E1,6.629420582E1 +7.364100000E1,6.683725429E1 +7.392300000E1,5.758295449E1 +7.418800000E1,5.654909286E1 +7.448600000E1,5.881341247E1 +7.472100000E1,5.546609910E1 +7.498300000E1,5.586542777E1 +7.526600000E1,5.463216262E1 +7.558500000E1,5.947397496E1 +7.586200000E1,6.218459899E1 +7.609800000E1,6.134189272E1 +7.635800000E1,5.727526170E1 +7.666700000E1,5.579062978E1 +7.699300000E1,6.015063828E1 +7.729000000E1,6.022787424E1 +7.756300000E1,5.646982462E1 +7.782200000E1,6.005734442E1 +7.813200000E1,5.950776839E1 +7.842200000E1,6.314009710E1 +7.880400000E1,5.425753266E1 +7.910400000E1,5.909139002E1 +7.935300000E1,5.600377253E1 +7.962300000E1,6.036368528E1 +7.993700000E1,5.940415340E1 +8.018900000E1,6.102152187E1 +8.050000000E1,6.619104713E1 +8.074000000E1,6.149981675E1 +8.098900000E1,5.978899259E1 +8.123800000E1,5.963150500E1 +8.150300000E1,6.509054947E1 +8.181300000E1,6.387458039E1 +8.220700000E1,6.421798778E1 +8.246100000E1,6.092500605E1 +8.271900000E1,6.039313205E1 +8.297100000E1,5.885189543E1 +8.328000000E1,6.068901175E1 +8.355600000E1,6.531581124E1 +8.381900000E1,6.460984287E1 +8.407800000E1,6.281147078E1 +8.435000000E1,5.961599483E1 +8.463400000E1,5.915457491E1 +8.489200000E1,5.383227231E1 +8.513000000E1,5.278474817E1 +8.551100000E1,6.165964712E1 +8.574900000E1,6.442604107E1 +8.600700000E1,6.551005247E1 +8.626000000E1,6.660338206E1 +8.650900000E1,6.304014634E1 +8.676000000E1,6.488065719E1 +8.701800000E1,6.416881833E1 +8.728000000E1,5.892166498E1 +8.754500000E1,5.946249393E1 +8.785000000E1,6.506678358E1 +8.809400000E1,5.703264442E1 +8.840500000E1,6.164086486E1 +8.876300000E1,6.276173959E1 +8.906100000E1,5.818071871E1 +8.930500000E1,5.844394446E1 +8.956300000E1,5.657440647E1 +8.987400000E1,6.120356137E1 +9.011500000E1,6.094306560E1 +9.041100000E1,5.978472131E1 +9.065500000E1,6.008128664E1 +9.092400000E1,5.758286780E1 +9.123300000E1,5.353387594E1 +9.151600000E1,5.676204998E1 +9.183800000E1,5.245702159E1 +9.218200000E1,5.642589170E1 +9.243600000E1,5.542467479E1 +9.268000000E1,5.580829615E1 +9.297600000E1,5.148061441E1 +9.322800000E1,4.635974806E1 +9.353200000E1,5.465579762E1 +9.377300000E1,5.154999739E1 +9.402200000E1,5.544992474E1 +9.427900000E1,5.302390200E1 +9.453300000E1,5.127982623E1 +9.478800000E1,5.263086656E1 +9.503100000E1,5.128121484E1 +9.532100000E1,5.061466876E1 +9.557700000E1,5.328260476E1 +9.582800000E1,5.101663724E1 +9.607100000E1,5.400893265E1 +9.640400000E1,5.756552061E1 +9.665500000E1,5.665487755E1 +9.690400000E1,5.719000980E1 +9.715400000E1,5.593995548E1 +9.740400000E1,5.420194495E1 +9.771300000E1,4.867232074E1 +9.802100000E1,5.053798103E1 +9.830700000E1,4.874294948E1 +9.857500000E1,5.754515654E1 +9.883700000E1,5.863618568E1 +9.909700000E1,6.070195076E1 +9.935300000E1,5.434874196E1 +9.961300000E1,6.163600431E1 +9.987300000E1,5.555228218E1 +1.001200000E2,5.733850418E1 +1.003910000E2,6.133233800E1 +1.006620000E2,5.853313440E1 +1.009020000E2,5.435835494E1 +1.011680000E2,5.329891948E1 +1.014680000E2,5.356470018E1 +1.018410000E2,5.574288130E1 +1.021370000E2,5.927571979E1 +1.024000000E2,5.789956910E1 +1.026980000E2,6.081738139E1 +1.029540000E2,5.575615853E1 +1.032580000E2,5.337382111E1 +1.035140000E2,5.562761746E1 +1.038150000E2,5.905624776E1 +1.041040000E2,5.696105750E1 +1.043990000E2,6.170938149E1 +1.046370000E2,5.823687000E1 +1.049080000E2,6.066674703E1 +1.051740000E2,6.220969933E1 +1.054810000E2,5.755805236E1 +1.057660000E2,5.735691579E1 +1.060450000E2,5.761618087E1 +1.063040000E2,5.188413372E1 +1.065680000E2,5.643639822E1 +1.068740000E2,5.312430876E1 +1.071280000E2,5.924995828E1 +1.073900000E2,5.546187342E1 +1.076920000E2,5.474389270E1 +1.079790000E2,5.600814816E1 +1.082440000E2,5.561453096E1 +1.084980000E2,5.408559240E1 +1.087580000E2,5.622058302E1 +1.090160000E2,5.768852773E1 +1.092670000E2,5.516804842E1 +1.095340000E2,5.973626648E1 +1.098120000E2,6.403409511E1 +1.100690000E2,6.035201036E1 +1.103490000E2,5.940482770E1 +1.105950000E2,5.932126109E1 +1.108600000E2,5.859387697E1 +1.111460000E2,5.929800416E1 +1.114110000E2,5.930503134E1 +1.117890000E2,6.170536210E1 +1.120410000E2,6.214563711E1 +1.123490000E2,5.810151097E1 +1.126320000E2,5.823719807E1 +1.128910000E2,6.454485320E1 +1.131870000E2,6.755031626E1 +1.134560000E2,6.410743881E1 +1.137200000E2,5.913442857E1 +1.139870000E2,6.382823805E1 +1.142400000E2,5.859239523E1 +1.145180000E2,5.135859796E1 +1.147890000E2,5.294563188E1 +1.151440000E2,5.357868048E1 +1.154220000E2,5.561359505E1 +1.156620000E2,5.645675088E1 +1.159670000E2,5.879425595E1 +1.162610000E2,5.918610512E1 +1.164990000E2,6.083658676E1 +1.167470000E2,5.526645697E1 +1.169880000E2,5.471312988E1 +1.172910000E2,6.211796732E1 +1.175510000E2,5.417468648E1 +1.177930000E2,5.576739557E1 +1.180750000E2,5.912472365E1 +1.184660000E2,5.718213173E1 +1.187710000E2,5.747081312E1 +1.190170000E2,5.741742618E1 +1.192690000E2,5.379557814E1 +1.195330000E2,5.428733520E1 +1.197780000E2,6.177329402E1 +1.200450000E2,5.672333166E1 +1.203170000E2,5.584947723E1 +1.205670000E2,5.382665718E1 +1.208400000E2,5.443690083E1 +1.211280000E2,5.221565874E1 +1.214800000E2,5.516249741E1 +1.217540000E2,5.676279334E1 +1.220050000E2,5.303796336E1 +1.222680000E2,5.258840561E1 +1.225120000E2,5.671935607E1 +1.227660000E2,4.902892756E1 +1.230240000E2,4.264962220E1 +1.232830000E2,4.818154680E1 +1.235340000E2,5.204058636E1 +1.238430000E2,5.649936271E1 +1.241410000E2,5.396154490E1 +1.244200000E2,5.428877275E1 +1.246760000E2,4.778715710E1 +1.249500000E2,4.912370762E1 +1.252110000E2,5.114426735E1 +1.255020000E2,5.345096378E1 +1.257410000E2,5.581149074E1 +1.260430000E2,5.211774829E1 +1.263320000E2,5.470047014E1 +1.265660000E2,5.399085344E1 +1.268600000E2,5.981732528E1 +1.271210000E2,5.944116770E1 +1.273530000E2,5.668281238E1 +1.275970000E2,5.042419391E1 +1.279080000E2,5.014554177E1 +1.282260000E2,5.350461413E1 +1.285240000E2,5.453533258E1 +1.287780000E2,5.809919663E1 +1.290280000E2,5.729580956E1 +1.292980000E2,5.681749266E1 +1.296010000E2,5.542882864E1 +1.298980000E2,5.612046892E1 +1.302070000E2,6.074750886E1 +1.304620000E2,5.979349108E1 +1.307520000E2,5.806574219E1 +1.310590000E2,5.738881777E1 +1.314010000E2,5.595280312E1 +1.316630000E2,5.401154636E1 +1.319120000E2,5.499471091E1 +1.321620000E2,5.551354327E1 +1.324640000E2,6.567912108E1 +1.327650000E2,5.725129100E1 +1.330150000E2,6.452906176E1 +1.333160000E2,5.778565576E1 +1.335760000E2,6.242194617E1 +1.338200000E2,5.570863747E1 +1.340710000E2,5.755877138E1 +1.343660000E2,6.819206156E1 +1.346260000E2,6.094769164E1 +1.349310000E2,6.447198163E1 +1.351810000E2,5.482297950E1 +1.354630000E2,6.327012623E1 +1.357210000E2,5.723157337E1 +1.359770000E2,5.835004111E1 +1.362140000E2,6.413045068E1 +1.365290000E2,6.022343539E1 +1.368110000E2,5.969265006E1 +1.371070000E2,5.589766444E1 +1.373670000E2,6.089100679E1 +1.376970000E2,6.762783521E1 +1.379410000E2,5.740809854E1 +1.381870000E2,6.711182247E1 +1.384650000E2,6.290175574E1 +1.387060000E2,6.352322572E1 +1.390400000E2,5.897504025E1 +1.392980000E2,5.872568346E1 +1.396520000E2,5.582882684E1 +1.399140000E2,5.874428562E1 +1.402160000E2,5.275369064E1 +1.404650000E2,5.181123336E1 +1.407250000E2,4.758951485E1 +1.410550000E2,4.601470876E1 +1.413500000E2,5.203790008E1 +1.416310000E2,5.380793436E1 +1.418780000E2,5.006781735E1 +1.421580000E2,4.792469964E1 +1.424020000E2,5.136650820E1 +1.427060000E2,5.127969468E1 +1.430200000E2,5.304643312E1 +1.433210000E2,5.218299100E1 +1.436050000E2,5.568762266E1 +1.439010000E2,5.522696018E1 +1.442570000E2,5.919224289E1 +1.445880000E2,6.201398016E1 +1.448680000E2,5.750742223E1 +1.451160000E2,5.811963790E1 +1.454090000E2,5.695462128E1 +1.456560000E2,5.854812337E1 +1.458980000E2,5.886107911E1 +1.461720000E2,5.454171305E1 +1.464480000E2,5.674410925E1 +1.466770000E2,5.450912101E1 +1.469270000E2,5.953864028E1 +1.471790000E2,6.097527460E1 +1.475260000E2,5.825769450E1 +1.478290000E2,5.780473579E1 +1.480790000E2,6.185542851E1 +1.483350000E2,5.390929394E1 +1.486330000E2,5.400087479E1 +1.488750000E2,5.328656685E1 +1.491190000E2,5.599536596E1 +1.494200000E2,5.721648542E1 +1.497150000E2,5.787493165E1 +1.500380000E2,5.480047158E1 +1.503480000E2,5.002404450E1 +1.506590000E2,5.486151348E1 +1.509700000E2,6.245235750E1 +1.512360000E2,5.831236552E1 +1.514820000E2,6.253825815E1 +1.517260000E2,6.440134635E1 +1.520120000E2,5.646251942E1 +1.523080000E2,5.569851104E1 +1.525630000E2,5.574195002E1 +1.528610000E2,6.073633455E1 +1.531220000E2,5.704364811E1 +1.533960000E2,5.858521931E1 +1.536900000E2,6.334346239E1 +1.540080000E2,5.734505299E1 +1.542490000E2,6.522555977E1 +1.544980000E2,5.500712815E1 +1.547420000E2,5.698741268E1 +1.549830000E2,5.097374633E1 +1.552760000E2,5.421781291E1 +1.555100000E2,5.276919678E1 +1.558070000E2,5.444895965E1 +1.560410000E2,5.023818561E1 +1.563440000E2,5.460917302E1 +1.565880000E2,5.459938847E1 +1.568920000E2,5.843131092E1 +1.572210000E2,5.876667307E1 +1.574850000E2,5.735202828E1 +1.577300000E2,5.496399564E1 +1.580290000E2,5.249359356E1 +1.582920000E2,5.216967072E1 +1.585400000E2,5.506360532E1 +1.588040000E2,4.854470136E1 +1.590480000E2,5.455647594E1 +1.593040000E2,5.480802962E1 +1.595560000E2,5.117555202E1 +1.598230000E2,5.525001141E1 +1.600680000E2,6.028739680E1 +1.604080000E2,6.051466285E1 +1.606910000E2,5.941686107E1 +1.609450000E2,6.263789003E1 +1.611920000E2,5.862463866E1 +1.614980000E2,5.858673558E1 +1.617730000E2,5.766546261E1 +1.620210000E2,5.485521148E1 +1.623080000E2,5.814732367E1 +1.625850000E2,5.829863647E1 +1.628370000E2,5.473457172E1 +1.631510000E2,5.323729241E1 +1.634320000E2,5.795543593E1 +1.637670000E2,5.845831909E1 +1.640670000E2,5.883503284E1 +1.643040000E2,5.933733684E1 +1.645990000E2,5.316483696E1 +1.648620000E2,5.628275472E1 +1.651110000E2,5.612764782E1 +1.654290000E2,5.739409022E1 +1.657290000E2,5.275374209E1 +1.660100000E2,5.606330732E1 +1.662350000E2,4.973765069E1 +1.664840000E2,4.855931683E1 +1.667820000E2,4.830487304E1 +1.670210000E2,5.643349546E1 +1.672820000E2,5.752246312E1 +1.675830000E2,5.576545129E1 +1.678330000E2,5.583582770E1 +1.681390000E2,5.301617697E1 +1.684460000E2,5.088408561E1 +1.686990000E2,5.149775091E1 +1.690030000E2,6.019099852E1 +1.692410000E2,6.143998752E1 +1.695380000E2,6.183098470E1 +1.697780000E2,5.964256200E1 +1.701420000E2,5.648358262E1 +1.703870000E2,5.768033788E1 +1.706360000E2,5.037521789E1 +1.709530000E2,5.268785935E1 +1.712030000E2,5.850048969E1 +1.714650000E2,5.537813713E1 +1.717710000E2,5.989062491E1 +1.720770000E2,6.371629733E1 +1.723380000E2,5.413135778E1 +1.726060000E2,5.582389161E1 +1.729040000E2,6.344770094E1 +1.731770000E2,6.038125570E1 +1.735090000E2,5.229655017E1 +1.737830000E2,5.594074665E1 +1.740430000E2,6.258802116E1 +1.743030000E2,5.773122794E1 +1.745600000E2,5.533899998E1 +1.748290000E2,5.069657364E1 +1.750850000E2,6.285550191E1 +1.753480000E2,5.470504416E1 +1.756240000E2,5.746379759E1 +1.758870000E2,5.928233462E1 +1.761350000E2,5.214791610E1 +1.763840000E2,5.260177806E1 +1.767030000E2,4.844041050E1 +1.769490000E2,5.275717684E1 +1.772330000E2,5.436891746E1 +1.774780000E2,5.441421810E1 +1.777590000E2,5.485847839E1 +1.780320000E2,5.714239097E1 +1.782910000E2,6.028837304E1 +1.785470000E2,5.706420775E1 +1.788380000E2,5.509582512E1 +1.791200000E2,5.674185072E1 +1.794340000E2,5.437491314E1 +1.796940000E2,5.696592309E1 +1.799990000E2,5.344092263E1 +1.802540000E2,5.414345246E1 +1.804960000E2,5.421992498E1 +1.808400000E2,5.317024536E1 +1.811450000E2,5.422714635E1 +1.814530000E2,5.933207779E1 +1.817720000E2,5.916706050E1 +1.820730000E2,5.685980261E1 +1.824210000E2,5.521649456E1 +1.826850000E2,5.651993888E1 +1.829810000E2,5.707596711E1 +1.832810000E2,5.464130538E1 +1.836160000E2,5.364065008E1 +1.838600000E2,5.913078622E1 +1.841080000E2,5.695541400E1 +1.843520000E2,6.237274690E1 +1.846510000E2,6.017101966E1 +1.848950000E2,5.670915019E1 +1.851380000E2,5.651470649E1 +1.854400000E2,5.919691857E1 +1.857560000E2,5.752836475E1 +1.860680000E2,6.133052078E1 +1.863670000E2,6.001801442E1 +1.866740000E2,5.871186574E1 +1.869510000E2,5.858669373E1 +1.872240000E2,5.722343490E1 +1.875200000E2,5.725198568E1 +1.877700000E2,5.560524182E1 +1.880340000E2,5.419540118E1 +1.882980000E2,6.169219144E1 +1.885790000E2,5.704261604E1 +1.888700000E2,5.651125138E1 +1.891060000E2,5.778536485E1 +1.894110000E2,5.304160496E1 +1.896990000E2,5.105254388E1 +1.900460000E2,5.338626279E1 +1.902980000E2,5.090929652E1 +1.905360000E2,5.235399183E1 +1.907970000E2,5.429173243E1 +1.910620000E2,5.376238901E1 +1.913500000E2,6.411203098E1 +1.916020000E2,6.235211697E1 +1.919100000E2,5.719243884E1 +1.922140000E2,5.965550680E1 +1.925010000E2,5.850063986E1 +1.928110000E2,6.013906156E1 +1.930480000E2,5.912633730E1 +1.934000000E2,5.860712099E1 +1.936870000E2,5.944287516E1 +1.939980000E2,5.676076088E1 +1.942520000E2,5.712881871E1 +1.945490000E2,5.515631677E1 +1.948870000E2,5.670925955E1 +1.951320000E2,5.768263389E1 +1.954210000E2,5.735243887E1 +1.957290000E2,5.883798740E1 +1.960030000E2,5.654393164E1 +1.963340000E2,5.345251733E1 +1.966710000E2,5.034487882E1 +1.969060000E2,5.741493139E1 +1.971980000E2,5.877434013E1 +1.974210000E2,5.965387227E1 +1.977200000E2,6.306941384E1 +1.979730000E2,6.004201692E1 +1.982230000E2,6.106500017E1 +1.984800000E2,5.674857861E1 +1.987290000E2,6.020914127E1 +1.990680000E2,6.067289060E1 +1.993460000E2,5.996658083E1 +1.996390000E2,5.676340490E1 +1.999500000E2,5.612304129E1 +2.002130000E2,6.289766509E1 +2.005150000E2,5.720971103E1 +2.008280000E2,5.752136939E1 +2.010940000E2,6.058659890E1 +2.013440000E2,5.618430636E1 +2.016270000E2,6.056271249E1 +2.019400000E2,5.729198827E1 +2.022100000E2,5.793084452E1 +2.025070000E2,5.787194228E1 +2.027910000E2,5.959620014E1 +2.030940000E2,6.012062596E1 +2.033180000E2,6.276377758E1 +2.036210000E2,5.834405857E1 +2.039320000E2,5.545225289E1 +2.042050000E2,5.829439447E1 +2.044730000E2,5.799912649E1 +2.047970000E2,5.444896398E1 +2.050680000E2,5.743866699E1 +2.053150000E2,5.862448994E1 +2.055880000E2,5.778478934E1 +2.058890000E2,5.527981007E1 +2.061620000E2,5.742523507E1 +2.064580000E2,5.472188821E1 +2.067100000E2,6.202721053E1 +2.069630000E2,5.861698013E1 +2.072080000E2,6.294616718E1 +2.074730000E2,6.321186761E1 +2.077380000E2,5.776609523E1 +2.080390000E2,6.061292698E1 +2.083320000E2,5.857532480E1 +2.085870000E2,5.800369352E1 +2.088450000E2,5.977447345E1 +2.091070000E2,5.957010157E1 +2.093520000E2,6.145770306E1 +2.096060000E2,6.176056517E1 +2.098580000E2,6.033519811E1 +2.100970000E2,6.429628489E1 +2.103980000E2,6.215353584E1 +2.106470000E2,6.299048914E1 +2.109300000E2,6.133544133E1 +2.112010000E2,5.397487394E1 +2.114250000E2,5.313920655E1 +2.116740000E2,5.552710709E1 +2.119140000E2,5.692289703E1 +2.121730000E2,5.618691953E1 +2.124220000E2,5.402804715E1 +2.127170000E2,5.390450402E1 +2.129570000E2,5.652515030E1 +2.132580000E2,5.490504921E1 +2.135120000E2,5.485761082E1 +2.137850000E2,6.486277416E1 +2.140520000E2,6.121826472E1 +2.143580000E2,6.355465948E1 +2.146390000E2,5.534291145E1 +2.148790000E2,6.610858745E1 +2.151670000E2,5.617739728E1 +2.154670000E2,5.426651762E1 +2.157300000E2,5.840247716E1 +2.160830000E2,5.257749691E1 +2.163200000E2,6.345809118E1 +2.165810000E2,6.020490407E1 +2.168390000E2,5.603372378E1 +2.170870000E2,5.452432165E1 +2.173530000E2,5.679931822E1 +2.176220000E2,6.225558234E1 +2.179360000E2,5.991886985E1 +2.182430000E2,6.307902574E1 +2.184780000E2,6.764692456E1 +2.187700000E2,6.696013302E1 +2.190280000E2,6.419552300E1 +2.193390000E2,6.401831507E1 +2.196000000E2,6.317016249E1 +2.198590000E2,6.093052958E1 +2.201380000E2,6.446513941E1 +2.204220000E2,6.075454080E1 +2.206690000E2,6.712020778E1 +2.209300000E2,5.440050354E1 +2.212550000E2,5.627963451E1 +2.215550000E2,6.358778444E1 +2.217990000E2,5.793661873E1 +2.220730000E2,6.448679664E1 +2.223050000E2,5.844994198E1 +2.226510000E2,5.802583418E1 +2.229440000E2,5.848297014E1 +2.231840000E2,6.170695891E1 +2.234220000E2,6.201301769E1 +2.236630000E2,6.049179870E1 +2.239600000E2,6.316843106E1 +2.242020000E2,5.818837652E1 +2.245150000E2,6.411353278E1 +2.248330000E2,6.458398711E1 +2.250670000E2,6.303280227E1 +2.253240000E2,6.378696379E1 +2.255670000E2,6.157533943E1 +2.259260000E2,5.845901257E1 +2.261910000E2,5.623331182E1 +2.264460000E2,5.550822889E1 +2.267020000E2,5.907003722E1 +2.270220000E2,6.300043778E1 +2.273130000E2,5.934584116E1 +2.275640000E2,5.367094537E1 +2.278520000E2,6.260544714E1 +2.281140000E2,5.666507163E1 +2.283970000E2,6.099713971E1 +2.287020000E2,5.943082312E1 +2.289450000E2,6.095935321E1 +2.292950000E2,5.939706013E1 +2.296230000E2,5.612117806E1 +2.299220000E2,5.805831404E1 +2.301570000E2,5.496048372E1 +2.304070000E2,5.335836124E1 +2.306490000E2,5.043808989E1 +2.309270000E2,4.778025574E1 +2.311680000E2,4.613189565E1 +2.314100000E2,4.740314381E1 +2.316580000E2,5.230056147E1 +2.319150000E2,5.672989332E1 +2.321590000E2,6.081799709E1 +2.325030000E2,5.909736866E1 +2.327570000E2,5.528762811E1 +2.330520000E2,6.623131701E1 +2.333360000E2,6.376149752E1 +2.335730000E2,6.088376871E1 +2.338700000E2,6.235681388E1 +2.341160000E2,6.060610548E1 +2.343930000E2,5.779254532E1 +2.346370000E2,5.570043106E1 +2.349010000E2,6.172637016E1 +2.351520000E2,5.865545525E1 +2.354420000E2,6.250465685E1 +2.356850000E2,6.494272879E1 +2.359310000E2,6.075163542E1 +2.361840000E2,5.742858606E1 +2.364460000E2,5.756917813E1 +2.366990000E2,6.169927684E1 +2.370080000E2,5.540268710E1 +2.373040000E2,5.484088652E1 +2.376000000E2,5.732112773E1 +2.378800000E2,5.184194161E1 +2.381270000E2,5.604168635E1 +2.383910000E2,5.644051218E1 +2.387130000E2,6.049774032E1 +2.390290000E2,6.303013407E1 +2.392800000E2,6.115111046E1 +2.395770000E2,6.294174883E1 +2.398740000E2,6.716012591E1 +2.401880000E2,7.075117191E1 +2.404890000E2,6.435561631E1 +2.407550000E2,5.593172595E1 +2.410720000E2,5.781614361E1 +2.413350000E2,5.497792445E1 +2.416080000E2,5.569244646E1 +2.418870000E2,5.408109683E1 +2.421100000E2,5.687440525E1 +2.424230000E2,6.415333296E1 +2.427170000E2,6.528722740E1 +2.429900000E2,6.229384329E1 +2.432350000E2,5.452507698E1 +2.434960000E2,5.248331654E1 +2.437450000E2,5.069826347E1 +2.439880000E2,4.989889277E1 +2.442610000E2,5.196931346E1 +2.445130000E2,4.988417717E1 +2.448120000E2,5.950968466E1 +2.451200000E2,5.725324421E1 +2.454210000E2,5.902908729E1 +2.456980000E2,5.857784521E1 +2.459650000E2,5.154496059E1 +2.462670000E2,5.316738342E1 +2.465660000E2,5.681338179E1 +2.468580000E2,5.486468116E1 +2.471080000E2,5.378622946E1 +2.473840000E2,5.263910847E1 +2.477040000E2,5.102724000E1 +2.479590000E2,4.958128022E1 +2.482070000E2,5.621813465E1 +2.486190000E2,5.553111013E1 +2.489120000E2,5.711728514E1 +2.491630000E2,6.098223102E1 +2.494610000E2,5.812970142E1 +2.497290000E2,5.874411947E1 +2.500090000E2,6.058797235E1 +2.503160000E2,5.921850964E1 +2.506300000E2,5.825659244E1 +2.508940000E2,5.902074554E1 +2.512250000E2,5.857720223E1 +2.514860000E2,5.834259509E1 +2.517560000E2,5.664723408E1 +2.520110000E2,6.245873243E1 +2.522800000E2,6.018081628E1 +2.525490000E2,6.060905480E1 +2.527980000E2,6.098924059E1 +2.530310000E2,6.604497204E1 +2.532750000E2,5.762503683E1 +2.535750000E2,5.946675250E1 +2.538150000E2,5.696283688E1 +2.541120000E2,5.795434272E1 +2.543420000E2,5.641662406E1 +2.546470000E2,6.001503419E1 +2.549610000E2,5.913147779E1 +2.552050000E2,5.772050526E1 +2.554250000E2,5.986895040E1 +2.557400000E2,4.836792039E1 +2.560130000E2,4.818172752E1 +2.563450000E2,5.244597112E1 +2.566130000E2,5.174954560E1 +2.568650000E2,5.165225717E1 +2.571100000E2,4.865803315E1 +2.573530000E2,4.773689375E1 +2.576460000E2,5.375353685E1 +2.579030000E2,5.630041837E1 +2.582540000E2,5.390583403E1 +2.585030000E2,5.686416101E1 +2.588120000E2,5.880170204E1 +2.590630000E2,5.373023259E1 +2.593590000E2,6.009405077E1 +2.596120000E2,5.710673366E1 +2.598560000E2,5.891240789E1 +2.600990000E2,5.960890080E1 +2.603510000E2,6.728594423E1 +2.606060000E2,6.334340199E1 +2.609270000E2,6.082175509E1 +2.611830000E2,5.750083619E1 +2.615060000E2,5.667484133E1 +2.618070000E2,6.152760439E1 +2.620430000E2,5.697586540E1 +2.623440000E2,5.674189037E1 +2.625730000E2,5.539036876E1 +2.628210000E2,4.901745514E1 +2.631270000E2,5.264848299E1 +2.634230000E2,5.038277380E1 +2.636750000E2,5.149234245E1 +2.639170000E2,4.604207892E1 +2.641630000E2,5.735184247E1 +2.644630000E2,5.659523444E1 +2.648080000E2,5.697978691E1 +2.650640000E2,5.691301726E1 +2.653540000E2,5.696584583E1 +2.656480000E2,5.138210199E1 +2.659030000E2,5.345758564E1 +2.661640000E2,5.363588256E1 +2.664240000E2,5.471656895E1 +2.666720000E2,5.140760448E1 +2.669400000E2,5.329005020E1 +2.671940000E2,5.422388323E1 +2.674460000E2,5.133919880E1 +2.677140000E2,5.690801972E1 +2.681270000E2,5.964609863E1 +2.684030000E2,6.167901240E1 +2.686970000E2,5.297205648E1 +2.689350000E2,5.530010894E1 +2.692310000E2,5.450325538E1 +2.694700000E2,5.391690578E1 +2.697660000E2,5.420666075E1 +2.700010000E2,4.962510480E1 +2.702390000E2,5.010058679E1 +2.705460000E2,5.345147952E1 +2.708590000E2,5.574757195E1 +2.711770000E2,5.571208034E1 +2.714720000E2,5.288998421E1 +2.717170000E2,5.214438195E1 +2.720190000E2,5.232798978E1 +2.723080000E2,6.045263056E1 +2.725500000E2,5.870512300E1 +2.727930000E2,5.577911819E1 +2.730760000E2,5.501493048E1 +2.733800000E2,5.433475343E1 +2.736720000E2,5.293457700E1 +2.739070000E2,5.486483547E1 +2.741780000E2,6.008208952E1 +2.745050000E2,5.845984546E1 +2.748040000E2,5.900764997E1 +2.751070000E2,5.760203457E1 +2.754240000E2,5.795024632E1 +2.757280000E2,6.182748257E1 +2.760340000E2,5.683205968E1 +2.763350000E2,5.821402367E1 +2.766080000E2,5.520672517E1 +2.768980000E2,5.645892504E1 +2.772030000E2,5.463906896E1 +2.775200000E2,5.412722413E1 +2.777910000E2,5.268636730E1 +2.780870000E2,5.566734184E1 +2.783350000E2,5.745256931E1 +2.785810000E2,5.645167582E1 +2.788270000E2,5.925831320E1 +2.790840000E2,5.591320738E1 +2.793690000E2,5.632637646E1 +2.796200000E2,6.252281740E1 +2.799120000E2,5.547643277E1 +2.801570000E2,6.021611275E1 +2.804580000E2,5.732676882E1 +2.808110000E2,5.909573770E1 +2.810780000E2,6.005240162E1 +2.813300000E2,5.965022185E1 +2.815820000E2,6.135840817E1 +2.818790000E2,5.970629096E1 +2.821590000E2,5.879025140E1 +2.824010000E2,5.747324456E1 +2.826520000E2,5.726379384E1 +2.828950000E2,5.871306541E1 +2.831920000E2,6.188032415E1 +2.834710000E2,6.066582287E1 +2.837110000E2,5.950933244E1 +2.840350000E2,5.901018860E1 +2.843000000E2,5.761182729E1 +2.846050000E2,5.446909438E1 +2.848570000E2,5.349219985E1 +2.851700000E2,5.015518748E1 +2.854330000E2,5.374610595E1 +2.857270000E2,5.877223624E1 +2.860310000E2,5.644512377E1 +2.863080000E2,5.711327205E1 +2.865540000E2,5.655239592E1 +2.867930000E2,5.833716670E1 +2.871150000E2,5.417781453E1 +2.874030000E2,5.332227783E1 +2.876540000E2,5.146836736E1 +2.879540000E2,5.452228720E1 +2.881970000E2,5.025406823E1 +2.884910000E2,5.490648375E1 +2.887280000E2,5.506242221E1 +2.890210000E2,5.400927835E1 +2.892600000E2,5.781126179E1 +2.895430000E2,6.384283902E1 +2.898470000E2,6.340395874E1 +2.901430000E2,5.555395770E1 +2.904560000E2,5.514224078E1 +2.907530000E2,5.346566906E1 +2.910000000E2,5.948406902E1 +2.912590000E2,6.362292628E1 +2.915300000E2,6.175065463E1 +2.918240000E2,6.129817533E1 +2.920790000E2,6.317618325E1 +2.923350000E2,6.137933812E1 +2.926010000E2,5.620086793E1 +2.928740000E2,5.715913846E1 +2.931780000E2,7.028942499E1 +2.934620000E2,6.774357618E1 +2.937770000E2,6.989950413E1 +2.940270000E2,6.631119439E1 +2.943030000E2,6.956920703E1 +2.945570000E2,6.352936554E1 +2.948100000E2,6.981123112E1 +2.951150000E2,5.607171784E1 +2.953950000E2,5.394017247E1 +2.956980000E2,7.110851253E1 +2.959460000E2,6.978848906E1 +2.961900000E2,5.446752823E1 +2.965090000E2,6.309281755E1 +2.968110000E2,6.647752141E1 +2.971300000E2,6.773248230E1 +2.974240000E2,6.289421429E1 +2.977060000E2,5.998905240E1 +2.979500000E2,6.016152671E1 +2.981940000E2,5.851705490E1 +2.984880000E2,6.506323043E1 +2.987430000E2,5.702053645E1 +2.990110000E2,4.890963733E1 +2.993040000E2,5.105737182E1 +2.995650000E2,4.950865545E1 +2.998150000E2,4.713536225E1 +3.000860000E2,6.170154569E1 +3.003780000E2,5.697995513E1 +3.006750000E2,6.496205179E1 +3.009180000E2,5.585602045E1 +3.012120000E2,5.317421587E1 +3.015130000E2,5.532213468E1 +3.017840000E2,5.371543715E1 +3.020520000E2,6.741141038E1 +3.023220000E2,6.638671809E1 +3.025730000E2,5.833940482E1 +3.028700000E2,6.272205104E1 +3.031230000E2,6.150676490E1 +3.034050000E2,6.571826996E1 +3.036710000E2,6.387001854E1 +3.039460000E2,5.704179120E1 +3.042380000E2,5.452420344E1 +3.044730000E2,6.911436343E1 +3.047670000E2,6.747337761E1 +3.050070000E2,6.642457947E1 +3.053010000E2,6.704052830E1 +3.055360000E2,6.335116163E1 +3.058350000E2,6.452879154E1 +3.061310000E2,6.588892290E1 +3.064460000E2,6.065604325E1 +3.066970000E2,5.884139521E1 +3.069890000E2,6.115548360E1 +3.072650000E2,5.474220631E1 +3.075290000E2,5.525228633E1 +3.077890000E2,5.546520153E1 +3.080280000E2,5.799541194E1 +3.083270000E2,5.467819740E1 +3.086250000E2,5.227747322E1 +3.089260000E2,5.802220937E1 +3.091970000E2,5.383690373E1 +3.095040000E2,5.794687305E1 +3.097810000E2,5.426386053E1 +3.100000000E2,5.745164866E1 +3.103300000E2,5.475501144E1 +3.106240000E2,5.154802151E1 +3.108750000E2,5.434380726E1 +3.111540000E2,5.533246388E1 +3.114150000E2,5.554218476E1 +3.116740000E2,5.375334275E1 +3.119200000E2,5.727216331E1 +3.121680000E2,5.235396651E1 +3.124720000E2,6.207307801E1 +3.127180000E2,6.488896117E1 +3.130530000E2,6.168970511E1 +3.133080000E2,6.010687101E1 +3.135950000E2,6.305386662E1 +3.138880000E2,6.214030252E1 +3.141410000E2,5.907513997E1 +3.143960000E2,6.064308138E1 +3.146480000E2,6.195321339E1 +3.148870000E2,6.088765310E1 +3.151830000E2,5.906360624E1 +3.154280000E2,5.864981040E1 +3.157360000E2,5.824424792E1 +3.159750000E2,5.826399021E1 +3.163740000E2,6.051726612E1 +3.166320000E2,6.011967909E1 +3.168940000E2,5.577110603E1 +3.172010000E2,5.372586587E1 +3.174460000E2,5.537091967E1 +3.176890000E2,5.504912063E1 +3.179320000E2,5.264203521E1 +3.182150000E2,5.344854544E1 +3.184600000E2,5.656777951E1 +3.187200000E2,5.398435402E1 +3.189820000E2,5.410695962E1 +3.192460000E2,5.344168860E1 +3.195780000E2,5.697626360E1 +3.198350000E2,6.073105615E1 +3.200880000E2,6.621432780E1 +3.203460000E2,6.597785722E1 +3.205980000E2,5.907542432E1 +3.208920000E2,5.702769809E1 +3.211760000E2,6.207459825E1 +3.214520000E2,5.921715282E1 +3.217010000E2,5.501368146E1 +3.220030000E2,5.927746858E1 +3.223090000E2,5.878714279E1 +3.226530000E2,6.209253703E1 +3.229180000E2,5.801419316E1 +3.231660000E2,6.150680788E1 +3.234110000E2,5.950436139E1 +3.236660000E2,5.694006868E1 +3.239890000E2,5.964691948E1 +3.242420000E2,6.322261269E1 +3.245070000E2,5.967413832E1 +3.247540000E2,5.743115651E1 +3.250010000E2,5.693057833E1 +3.252760000E2,5.076009335E1 +3.255600000E2,5.432440321E1 +3.258270000E2,5.728583073E1 +3.262160000E2,6.158050311E1 +3.264570000E2,5.788548067E1 +3.267330000E2,5.661485397E1 +3.270280000E2,5.698735139E1 +3.272870000E2,5.428158234E1 +3.275550000E2,5.401192370E1 +3.278320000E2,5.894424302E1 +3.281050000E2,5.279140275E1 +3.283850000E2,5.366788524E1 +3.286760000E2,5.569462346E1 +3.289750000E2,5.484501656E1 +3.292730000E2,5.654335493E1 +3.295550000E2,5.483429560E1 +3.298560000E2,5.516099131E1 +3.301720000E2,5.150081287E1 +3.304560000E2,5.126263973E1 +3.307930000E2,4.943715566E1 +3.310330000E2,5.297477083E1 +3.312800000E2,4.994759883E1 +3.316030000E2,5.283028939E1 +3.318860000E2,5.150402936E1 +3.321790000E2,5.777668868E1 +3.325470000E2,5.446937149E1 +3.328030000E2,5.754474494E1 +3.330410000E2,5.437750931E1 +3.333210000E2,5.378201308E1 +3.335760000E2,5.486825362E1 +3.338240000E2,5.338123539E1 +3.340700000E2,5.704649160E1 +3.343740000E2,5.576563429E1 +3.346640000E2,5.503590574E1 +3.349650000E2,5.539431503E1 +3.352080000E2,5.782097549E1 +3.355080000E2,5.260852375E1 +3.358690000E2,6.012616228E1 +3.361400000E2,5.534922411E1 +3.363810000E2,5.436765301E1 +3.366230000E2,5.007736554E1 +3.368850000E2,5.304270830E1 +3.371340000E2,5.106682022E1 +3.373960000E2,5.491262243E1 +3.376890000E2,5.891119644E1 +3.379320000E2,5.554676164E1 +3.382420000E2,5.491809401E1 +3.385700000E2,6.003743295E1 +3.389490000E2,5.964265847E1 +3.392140000E2,6.009419780E1 +3.394780000E2,5.950800538E1 +3.397810000E2,5.514081916E1 +3.400260000E2,5.654810222E1 +3.403230000E2,5.919098275E1 +3.405600000E2,5.937137097E1 +3.408650000E2,5.885711760E1 +3.411560000E2,6.122434193E1 +3.414060000E2,6.101494213E1 +3.416650000E2,5.685059098E1 +3.419710000E2,4.988163583E1 +3.423360000E2,5.097871962E1 +3.426300000E2,6.097968551E1 +3.429260000E2,5.246223058E1 +3.431760000E2,5.140448000E1 +3.434570000E2,5.162147831E1 +3.436910000E2,5.437509469E1 +3.439650000E2,5.588289675E1 +3.442010000E2,5.342482218E1 +3.444930000E2,5.621155564E1 +3.447310000E2,5.753713233E1 +3.450340000E2,5.873821374E1 +3.453240000E2,5.674648484E1 +3.455770000E2,5.843857274E1 +3.458770000E2,6.170678128E1 +3.461770000E2,5.848319050E1 +3.464240000E2,5.996271814E1 +3.467290000E2,5.583139448E1 +3.470000000E2,5.558324990E1 +3.472360000E2,5.638821787E1 +3.474880000E2,6.015129432E1 +3.477550000E2,6.074195357E1 +3.480530000E2,6.258101891E1 +3.483260000E2,6.280209300E1 +3.486840000E2,5.935598721E1 +3.489370000E2,6.423635683E1 +3.492060000E2,7.026891453E1 +3.495130000E2,5.477771858E1 +3.498240000E2,6.143080763E1 +3.500700000E2,6.077206860E1 +3.503130000E2,5.816670512E1 +3.506030000E2,6.220374728E1 +3.509040000E2,6.435510927E1 +3.511560000E2,6.387906049E1 +3.514240000E2,6.324188625E1 +3.517710000E2,6.217871174E1 +3.520510000E2,6.349767138E1 +3.523000000E2,5.947763114E1 +3.525840000E2,5.623947938E1 +3.528810000E2,5.940245648E1 +3.531830000E2,5.323006485E1 +3.534790000E2,4.756673680E1 +3.537830000E2,5.761743216E1 +3.540870000E2,5.701856444E1 +3.543720000E2,5.507707077E1 +3.546320000E2,5.561457107E1 +3.549330000E2,6.036785424E1 +3.552860000E2,5.818319920E1 +3.555390000E2,5.636477080E1 +3.557840000E2,5.686236286E1 +3.560330000E2,6.137502104E1 +3.563290000E2,6.039421004E1 +3.565710000E2,5.873926214E1 +3.568160000E2,5.984737812E1 +3.570890000E2,5.898549785E1 +3.573200000E2,5.804358229E1 +3.576080000E2,5.178825198E1 +3.578380000E2,5.333798630E1 +3.581470000E2,5.663121054E1 +3.584860000E2,5.705169894E1 +3.587470000E2,5.488627438E1 +3.590020000E2,5.493171173E1 +3.592590000E2,5.280801534E1 +3.595110000E2,5.919356657E1 +3.597710000E2,6.061921525E1 +3.600770000E2,5.781838960E1 +3.603810000E2,5.824405535E1 +3.606410000E2,5.734273072E1 +3.608930000E2,5.860073318E1 +3.611440000E2,5.158577335E1 +3.614110000E2,5.569804167E1 +3.617550000E2,5.732029627E1 +3.620530000E2,5.599725951E1 +3.623260000E2,5.427140428E1 +3.625700000E2,5.439119305E1 +3.628680000E2,5.768088704E1 +3.631160000E2,5.322266305E1 +3.634170000E2,5.611257515E1 +3.637150000E2,5.466283243E1 +3.639540000E2,5.648497192E1 +3.642520000E2,5.982456496E1 +3.644910000E2,5.683499776E1 +3.648080000E2,5.424977228E1 +3.650550000E2,5.261749952E1 +3.653010000E2,5.976464589E1 +3.655400000E2,5.630627545E1 +3.658370000E2,5.855663855E1 +3.660660000E2,5.839517218E1 +3.663050000E2,5.701336937E1 +3.666100000E2,6.057417753E1 +3.668530000E2,5.660058929E1 +3.671060000E2,5.360906173E1 +3.673270000E2,5.766761713E1 +3.676020000E2,5.473947199E1 +3.679270000E2,5.730791892E1 +3.681990000E2,5.368134624E1 +3.685210000E2,5.122725302E1 +3.688180000E2,5.413949330E1 +3.690720000E2,5.953240184E1 +3.693650000E2,5.834363401E1 +3.696110000E2,4.952962201E1 +3.698620000E2,6.082605721E1 +3.701240000E2,5.541205242E1 +3.703840000E2,5.595936781E1 +3.706570000E2,5.751180267E1 +3.709050000E2,5.510413826E1 +3.712530000E2,5.236304209E1 +3.715330000E2,5.429686706E1 +3.717680000E2,5.365135821E1 +3.720680000E2,5.442146139E1 +3.723070000E2,5.193301537E1 +3.726070000E2,5.573089397E1 +3.728540000E2,5.084704353E1 +3.731070000E2,5.244752708E1 +3.734250000E2,5.501438711E1 +3.737160000E2,5.701937821E1 +3.739830000E2,5.913008265E1 +3.743030000E2,6.329763996E1 +3.745490000E2,5.828010903E1 +3.748110000E2,5.514928454E1 +3.750560000E2,5.535724603E1 +3.753250000E2,6.062318511E1 +3.756820000E2,5.853801057E1 +3.759720000E2,6.218740595E1 +3.762560000E2,6.130322227E1 +3.764780000E2,5.705598438E1 +3.767430000E2,5.675025411E1 +3.770350000E2,5.562309411E1 +3.773330000E2,6.171478403E1 +3.776660000E2,5.752069737E1 +3.779640000E2,5.869913239E1 +3.782130000E2,5.802158707E1 +3.785030000E2,5.920699755E1 +3.787580000E2,5.984700757E1 +3.790120000E2,5.874214142E1 +3.792820000E2,5.792329599E1 +3.795460000E2,6.240429581E1 +3.798520000E2,5.924961400E1 +3.800960000E2,5.655548581E1 +3.803510000E2,5.997047167E1 +3.806590000E2,5.894207932E1 +3.810310000E2,5.556916558E1 +3.813250000E2,5.709965860E1 +3.815810000E2,5.724657649E1 +3.818690000E2,5.634885250E1 +3.821660000E2,5.381597934E1 +3.824070000E2,5.409431797E1 +3.827020000E2,5.558304395E1 +3.829400000E2,5.836087965E1 +3.832380000E2,5.621848827E1 +3.834740000E2,5.756105430E1 +3.837670000E2,5.972981317E1 +3.840620000E2,6.110722903E1 +3.842970000E2,6.011338906E1 +3.846120000E2,6.632548976E1 +3.849300000E2,5.632542095E1 +3.852340000E2,5.660090160E1 +3.854760000E2,5.637042997E1 +3.857700000E2,6.483820819E1 +3.860160000E2,6.294386681E1 +3.862760000E2,6.248693097E1 +3.865740000E2,5.966646580E1 +3.868130000E2,5.884596060E1 +3.871230000E2,6.069045984E1 +3.874660000E2,5.535227762E1 +3.877260000E2,5.453589064E1 +3.879920000E2,5.803286513E1 +3.882920000E2,6.338575111E1 +3.885370000E2,6.297665471E1 +3.888380000E2,6.078963895E1 +3.890870000E2,6.078711186E1 +3.893350000E2,5.918580133E1 +3.896040000E2,5.645003340E1 +3.899070000E2,5.868887980E1 +3.901560000E2,5.816727924E1 +3.904840000E2,5.908711574E1 +3.907830000E2,5.165109059E1 +3.910410000E2,5.747977046E1 +3.913230000E2,5.600926578E1 +3.916170000E2,5.743239537E1 +3.918580000E2,5.999528635E1 +3.921650000E2,5.924448814E1 +3.924670000E2,6.347749271E1 +3.927590000E2,6.285842009E1 +3.929960000E2,6.439104552E1 +3.933010000E2,6.092208558E1 +3.935450000E2,5.889760176E1 +3.939100000E2,5.798312040E1 +3.941770000E2,5.909426563E1 +3.944250000E2,5.971090911E1 +3.946810000E2,5.379436409E1 +3.949270000E2,5.134339741E1 +3.951700000E2,5.739586279E1 +3.954270000E2,5.255911571E1 +3.956850000E2,5.149310319E1 +3.959500000E2,5.723685944E1 +3.962270000E2,5.622087783E1 +3.964720000E2,6.119098643E1 +3.967310000E2,6.249797436E1 +3.970320000E2,5.838309249E1 +3.973440000E2,5.720898847E1 +3.976100000E2,5.357982700E1 +3.978600000E2,5.091452983E1 +3.981070000E2,4.781274510E1 +3.983520000E2,4.684320786E1 +3.986530000E2,4.867937405E1 +3.988970000E2,4.947454895E1 +3.991740000E2,4.941937240E1 +3.994180000E2,5.206925818E1 +3.997200000E2,5.099596962E1 +3.999720000E2,5.059119317E1 +4.002350000E2,4.980275756E1 +4.004940000E2,5.514017077E1 +4.008060000E2,5.354499430E1 +4.011150000E2,5.377825353E1 +4.013980000E2,5.657928040E1 +4.016460000E2,6.437756844E1 +4.019070000E2,6.072529486E1 +4.021970000E2,5.876291143E1 +4.024430000E2,6.118567430E1 +4.027460000E2,5.925186578E1 +4.030590000E2,5.727531678E1 +4.033610000E2,6.211123432E1 +4.036680000E2,6.041950332E1 +4.039230000E2,6.161200416E1 +4.041780000E2,6.047480336E1 +4.044620000E2,5.905442986E1 +4.047060000E2,5.729915709E1 +4.049630000E2,6.020933408E1 +4.052500000E2,5.845152603E1 +4.055600000E2,5.814304967E1 +4.058210000E2,5.866194002E1 +4.060640000E2,5.736420578E1 +4.063180000E2,6.107395805E1 +4.065790000E2,5.985269852E1 +4.069480000E2,5.745859610E1 +4.072050000E2,5.693680110E1 +4.074960000E2,6.165201185E1 +4.077470000E2,6.131132241E1 +4.079970000E2,5.824414723E1 +4.083050000E2,5.958451387E1 +4.085600000E2,5.739792126E1 +4.088150000E2,5.573389816E1 +4.090850000E2,5.530698039E1 +4.093810000E2,5.634371531E1 +4.096660000E2,5.880658089E1 +4.099920000E2,5.804298004E1 +4.102870000E2,5.688352401E1 +4.106310000E2,5.573115839E1 +4.109280000E2,5.368053116E1 +4.112180000E2,5.474384188E1 +4.114650000E2,5.380195893E1 +4.117660000E2,5.718608674E1 +4.120140000E2,5.703743686E1 +4.122910000E2,5.985228158E1 +4.125620000E2,6.278694860E1 +4.128210000E2,5.839550633E1 +4.130600000E2,6.029373556E1 +4.133710000E2,5.711050636E1 +4.136150000E2,5.200468588E1 +4.138820000E2,5.769230508E1 +4.141370000E2,5.333759168E1 +4.143860000E2,5.632377961E1 +4.146570000E2,5.647744894E1 +4.149040000E2,5.667945226E1 +4.151840000E2,5.669404445E1 +4.154420000E2,6.072374556E1 +4.157420000E2,5.606444578E1 +4.159850000E2,5.623596320E1 +4.162830000E2,5.264542492E1 +4.165340000E2,5.359803767E1 +4.168600000E2,5.691340897E1 +4.171060000E2,5.636326143E1 +4.173490000E2,6.276141082E1 +4.176080000E2,6.197471417E1 +4.178580000E2,5.777170976E1 +4.181050000E2,5.407671770E1 +4.183760000E2,4.795453020E1 +4.186580000E2,5.871005652E1 +4.188870000E2,6.069158080E1 +4.191320000E2,6.112379328E1 +4.193750000E2,5.584116633E1 +4.196280000E2,6.302854070E1 +4.199610000E2,6.640457067E1 +4.202240000E2,6.337314603E1 +4.205160000E2,5.904470105E1 +4.208200000E2,5.799078909E1 +4.210810000E2,5.975635789E1 +4.213260000E2,6.334088587E1 +4.215900000E2,5.849627934E1 +4.218550000E2,5.894070219E1 +4.221030000E2,5.961371776E1 +4.223550000E2,5.281830949E1 +4.225970000E2,4.892580508E1 +4.229130000E2,5.950646935E1 +4.232610000E2,6.303011111E1 +4.235630000E2,6.030515180E1 +4.238060000E2,5.832387195E1 +4.240560000E2,6.126571743E1 +4.243280000E2,5.961805347E1 +4.245710000E2,5.916464366E1 +4.248300000E2,6.404431780E1 +4.251020000E2,6.161392817E1 +4.253630000E2,6.303875005E1 +4.256110000E2,6.294329578E1 +4.258560000E2,6.495739223E1 +4.261620000E2,6.352748415E1 +4.265140000E2,6.360144813E1 +4.267650000E2,6.320185268E1 +4.270250000E2,6.598206760E1 +4.272910000E2,5.736158392E1 +4.275300000E2,5.632655800E1 +4.277760000E2,5.626186588E1 +4.280650000E2,5.992298879E1 +4.283460000E2,5.976814640E1 +4.285960000E2,5.617047451E1 +4.288540000E2,5.410240194E1 +4.291290000E2,5.524345530E1 +4.293550000E2,5.025485629E1 +4.297050000E2,5.094849624E1 +4.299600000E2,5.349595208E1 +4.302230000E2,5.668766668E1 +4.304690000E2,5.470073040E1 +4.307330000E2,5.808421323E1 +4.310240000E2,5.815977776E1 +4.312740000E2,5.751031291E1 +4.315190000E2,6.045600028E1 +4.318300000E2,5.967896339E1 +4.320980000E2,5.746835753E1 +4.324020000E2,5.874054152E1 +4.327010000E2,5.770096959E1 +4.330460000E2,5.851412717E1 +4.333220000E2,5.970473393E1 +4.335930000E2,6.024030776E1 +4.338530000E2,5.564089573E1 +4.341340000E2,5.328000065E1 +4.343790000E2,5.522789934E1 +4.346930000E2,5.271905966E1 +4.349910000E2,5.685384424E1 +4.352400000E2,5.751176106E1 +4.355350000E2,5.654290580E1 +4.357760000E2,5.976937629E1 +4.360780000E2,5.445311615E1 +4.363520000E2,5.460006243E1 +4.366010000E2,5.402958946E1 +4.369120000E2,5.611325616E1 +4.371660000E2,5.675575065E1 +4.374120000E2,5.605818704E1 +4.377070000E2,5.614720111E1 +4.379470000E2,5.596280974E1 +4.382450000E2,5.764305460E1 +4.384820000E2,6.015340826E1 +4.387240000E2,6.073594369E1 +4.390310000E2,5.846982437E1 +4.393110000E2,5.837342754E1 +4.396160000E2,5.758988397E1 +4.398810000E2,5.375393273E1 +4.401700000E2,5.590416510E1 +4.404180000E2,5.649267014E1 +4.406570000E2,5.809884175E1 +4.409200000E2,5.934788425E1 +4.411750000E2,5.883690392E1 +4.414270000E2,5.465512306E1 +4.416780000E2,5.456039720E1 +4.419260000E2,6.053551690E1 +4.422020000E2,5.446896121E1 +4.425270000E2,5.304300238E1 +4.428480000E2,5.413537656E1 +4.431230000E2,5.590535088E1 +4.433740000E2,5.516889265E1 +4.436180000E2,5.375803139E1 +4.439250000E2,5.440731706E1 +4.441670000E2,5.378894171E1 +4.444170000E2,5.676009311E1 +4.447160000E2,5.433224316E1 +4.449620000E2,5.431777666E1 +4.452100000E2,5.220353562E1 +4.454560000E2,5.525232641E1 +4.456950000E2,5.348687858E1 +4.459900000E2,5.571408478E1 +4.462320000E2,5.590054486E1 +4.464840000E2,5.627503595E1 +4.467390000E2,5.824548232E1 +4.469910000E2,5.637049423E1 +4.472460000E2,5.754096885E1 +4.474930000E2,5.335865942E1 +4.477890000E2,5.765888938E1 +4.480780000E2,6.102087464E1 +4.483520000E2,6.006145593E1 +4.486510000E2,5.685958774E1 +4.489610000E2,5.748149351E1 +4.492370000E2,5.709623916E1 +4.495040000E2,5.821496279E1 +4.497570000E2,5.970222946E1 +4.500030000E2,5.750976802E1 +4.502380000E2,5.796549321E1 +4.505370000E2,5.665777454E1 +4.508330000E2,5.605038109E1 +4.510750000E2,5.504306522E1 +4.513230000E2,5.112487870E1 +4.515900000E2,5.559150914E1 +4.518300000E2,5.656933458E1 +4.520810000E2,6.082180135E1 +4.524470000E2,5.774965281E1 +4.527120000E2,5.847728207E1 +4.529730000E2,5.711434047E1 +4.532810000E2,5.503285278E1 +4.535670000E2,5.614330822E1 +4.538610000E2,6.211492489E1 +4.541040000E2,6.003078695E1 +4.543760000E2,5.766611466E1 +4.546280000E2,5.912518267E1 +4.549300000E2,5.969489895E1 +4.551760000E2,5.509558621E1 +4.554320000E2,5.963291683E1 +4.556950000E2,6.194656842E1 +4.559980000E2,6.032793642E1 +4.562390000E2,5.874022110E1 +4.565060000E2,6.016749735E1 +4.567480000E2,5.985596964E1 +4.570070000E2,5.588678859E1 +4.572660000E2,5.541792762E1 +4.575660000E2,4.969164404E1 +4.578050000E2,4.976271573E1 +4.581060000E2,5.634137812E1 +4.583500000E2,5.321783082E1 +4.586280000E2,5.816393976E1 +4.588870000E2,5.817726916E1 +4.591860000E2,5.398220140E1 +4.594690000E2,5.572842498E1 +4.597270000E2,5.759574297E1 +4.600290000E2,5.492384706E1 +4.602790000E2,5.570826682E1 +4.605780000E2,5.619496661E1 +4.608690000E2,5.993990435E1 +4.611730000E2,6.185390750E1 +4.614300000E2,6.125031183E1 +4.617390000E2,6.047450440E1 +4.621070000E2,5.913093195E1 +4.623500000E2,6.032535990E1 +4.626490000E2,5.803726699E1 +4.628910000E2,5.968748294E1 +4.631850000E2,5.792594347E1 +4.634330000E2,5.623910190E1 +4.636850000E2,6.026318401E1 +4.639240000E2,6.002593060E1 +4.641990000E2,5.694813724E1 +4.644200000E2,5.456998819E1 +4.646660000E2,5.683591124E1 +4.649070000E2,5.893829862E1 +4.652630000E2,5.637983039E1 +4.655160000E2,5.571226470E1 +4.657720000E2,5.582065666E1 +4.660510000E2,5.436378979E1 +4.663550000E2,5.697364508E1 +4.666350000E2,5.716664070E1 +4.668800000E2,6.098104772E1 +4.671260000E2,5.932872997E1 +4.673960000E2,5.573089336E1 +4.676430000E2,5.791664461E1 +4.678890000E2,5.589855895E1 +4.681490000E2,6.359324433E1 +4.685010000E2,5.902079393E1 +4.687870000E2,6.085500324E1 +4.690180000E2,6.401116813E1 +4.693190000E2,6.157634911E1 +4.695830000E2,6.068297160E1 +4.698370000E2,5.867738322E1 +4.701080000E2,6.069776659E1 +4.703530000E2,5.904983802E1 +4.706060000E2,5.642725313E1 +4.708480000E2,5.600286970E1 +4.711080000E2,5.678564623E1 +4.714020000E2,5.139543439E1 +4.717220000E2,5.924511995E1 +4.720300000E2,5.309180697E1 +4.722790000E2,5.295961103E1 +4.725820000E2,5.448425692E1 +4.728350000E2,5.346047841E1 +4.731210000E2,5.563518239E1 +4.733630000E2,5.630991562E1 +4.736070000E2,5.519344442E1 +4.738520000E2,5.696356709E1 +4.741150000E2,5.721588368E1 +4.743810000E2,5.556082681E1 +4.746430000E2,5.453201409E1 +4.749610000E2,5.621559396E1 +4.752460000E2,6.170975330E1 +4.755640000E2,6.352753975E1 +4.758660000E2,5.818774343E1 +4.761780000E2,6.177058435E1 +4.764630000E2,5.829511769E1 +4.766910000E2,5.658732029E1 +4.769520000E2,6.006113158E1 +4.772530000E2,6.022385702E1 +4.775200000E2,5.965858240E1 +4.778410000E2,5.970326758E1 +4.780960000E2,5.911597661E1 +4.783440000E2,5.656338446E1 +4.786020000E2,5.723922467E1 +4.788680000E2,5.700163516E1 +4.791490000E2,6.083416080E1 +4.794510000E2,5.899425763E1 +4.797630000E2,5.820674449E1 +4.800620000E2,5.648898879E1 +4.803380000E2,5.465743937E1 +4.806090000E2,5.006847009E1 +4.809050000E2,5.870050130E1 +4.811580000E2,5.878066343E1 +4.814060000E2,5.929414686E1 +4.817070000E2,5.758425183E1 +4.819760000E2,5.151398214E1 +4.822410000E2,5.772956896E1 +4.824880000E2,5.913153701E1 +4.827710000E2,5.814746383E1 +4.830140000E2,6.018356701E1 +4.832870000E2,5.985078792E1 +4.835070000E2,6.081307149E1 +4.837500000E2,5.810932132E1 +4.840440000E2,5.700769218E1 +4.842880000E2,5.815119989E1 +4.845920000E2,5.595850943E1 +4.849330000E2,5.891167795E1 +4.851960000E2,5.413833723E1 +4.854760000E2,6.184122004E1 +4.857700000E2,6.074653742E1 +4.860130000E2,6.033024099E1 +4.862530000E2,5.218562994E1 +4.865560000E2,5.902882093E1 +4.868150000E2,6.397338635E1 +4.870790000E2,6.543155406E1 +4.873440000E2,6.181389827E1 +4.876070000E2,6.381240883E1 +4.878770000E2,6.121521197E1 +4.882210000E2,5.780293585E1 +4.884640000E2,5.941826112E1 +4.887100000E2,6.118399944E1 +4.889830000E2,6.000089150E1 +4.892940000E2,5.873163787E1 +4.895350000E2,5.943116280E1 +4.897770000E2,5.867927357E1 +4.900230000E2,6.190584219E1 +4.903270000E2,6.313044892E1 +4.905550000E2,6.096660510E1 +4.907970000E2,5.773464228E1 +4.911090000E2,5.720144266E1 +4.914750000E2,5.797465536E1 +4.917410000E2,6.063197812E1 +4.920040000E2,5.799562897E1 +4.922950000E2,5.391853563E1 +4.925940000E2,6.053973121E1 +4.928320000E2,5.781822977E1 +4.931250000E2,6.541242849E1 +4.933660000E2,6.151252976E1 +4.936620000E2,5.962569242E1 +4.939140000E2,6.114162989E1 +4.941750000E2,6.074296596E1 +4.944160000E2,5.738425867E1 +4.947510000E2,6.084173002E1 +4.950140000E2,5.911448476E1 +4.953100000E2,6.076832164E1 +4.955530000E2,6.357047625E1 +4.958480000E2,6.344590866E1 +4.960850000E2,6.154350148E1 +4.963870000E2,5.815666478E1 +4.966770000E2,5.862350251E1 +4.969720000E2,5.162851816E1 +4.972640000E2,5.887916548E1 +4.975020000E2,6.130693279E1 +4.977480000E2,6.164914583E1 +4.980300000E2,5.689153252E1 +4.983240000E2,6.054571109E1 +4.985610000E2,5.779234792E1 +4.987980000E2,6.281334084E1 +4.991290000E2,6.074883772E1 +4.994230000E2,6.344972933E1 +4.996620000E2,6.040546490E1 +4.999570000E2,6.143019571E1 +5.002020000E2,6.117826214E1 +5.004980000E2,6.217883653E1 +5.007380000E2,6.294102819E1 +5.010930000E2,6.516475449E1 +5.013550000E2,6.119184016E1 +5.016670000E2,6.096554209E1 +5.019390000E2,6.197647057E1 +5.022530000E2,6.186754720E1 +5.025630000E2,5.954982776E1 +5.028510000E2,6.115486405E1 +5.031440000E2,6.348254173E1 +5.033820000E2,5.960570527E1 +5.036780000E2,5.977682583E1 +5.039180000E2,5.709696054E1 +5.042580000E2,6.265263203E1 +5.045140000E2,6.166583393E1 +5.047590000E2,6.184451596E1 +5.050170000E2,6.196658471E1 +5.053150000E2,6.014630927E1 +5.055610000E2,6.055201466E1 +5.058690000E2,6.189129858E1 +5.062120000E2,6.557808579E1 +5.064770000E2,6.080176744E1 +5.067370000E2,6.164107472E1 +5.069870000E2,6.497302078E1 +5.072490000E2,6.320126990E1 +5.076210000E2,6.073801439E1 +5.078780000E2,5.612097300E1 +5.081420000E2,5.978501024E1 +5.084360000E2,6.061444996E1 +5.086860000E2,6.272142993E1 +5.089270000E2,6.250458760E1 +5.092250000E2,5.860749180E1 +5.094720000E2,6.368373725E1 +5.097760000E2,6.005985592E1 +5.100780000E2,5.959557057E1 +5.103410000E2,6.085764000E1 +5.106360000E2,6.210563273E1 +5.109960000E2,6.125336704E1 +5.112590000E2,5.627814405E1 +5.115470000E2,6.253958528E1 +5.118480000E2,6.261683940E1 +5.120990000E2,5.782347554E1 +5.123560000E2,6.181201679E1 +5.126370000E2,6.425542150E1 +5.129400000E2,6.148973489E1 +5.132300000E2,6.230215374E1 +5.134720000E2,6.332855968E1 +5.137620000E2,5.875203916E1 +5.140950000E2,6.043073123E1 +5.143340000E2,5.829778385E1 +5.146280000E2,6.530539120E1 +5.148660000E2,5.725439078E1 +5.151580000E2,6.255661351E1 +5.153960000E2,6.412193683E1 +5.156410000E2,6.315775814E1 +5.158840000E2,6.025521775E1 +5.161460000E2,5.892698587E1 +5.164080000E2,5.956507822E1 +5.166610000E2,6.162757540E1 +5.169960000E2,6.009082976E1 +5.173360000E2,5.999682475E1 +5.176380000E2,6.121463264E1 +5.178750000E2,5.929809726E1 +5.181460000E2,5.746668369E1 +5.183810000E2,5.919113180E1 +5.186360000E2,5.827917213E1 +5.189280000E2,5.902314388E1 +5.192310000E2,6.116063950E1 +5.195310000E2,6.026149556E1 +5.198180000E2,5.851929656E1 +5.200920000E2,5.750929671E1 +5.204160000E2,5.729942637E1 +5.207470000E2,5.472104161E1 +5.210390000E2,6.169397748E1 +5.213450000E2,6.081589597E1 +5.216480000E2,6.278728872E1 +5.219550000E2,6.266319096E1 +5.222160000E2,6.478840582E1 +5.224820000E2,6.255888661E1 +5.227330000E2,6.119451713E1 +5.229970000E2,6.244953097E1 +5.232800000E2,6.000703556E1 +5.236020000E2,5.885323025E1 +5.239510000E2,5.826073845E1 +5.242570000E2,5.807287072E1 +5.245200000E2,5.931641295E1 +5.247800000E2,5.775994158E1 +5.250310000E2,6.167249992E1 +5.253010000E2,6.027694641E1 +5.255430000E2,6.329659774E1 +5.258240000E2,6.254377160E1 +5.261330000E2,6.489975363E1 +5.263840000E2,5.999325642E1 +5.266440000E2,5.885077446E1 +5.268920000E2,6.439829299E1 +5.272450000E2,6.165608373E1 +5.275110000E2,5.418048629E1 +5.277700000E2,5.656005066E1 +5.280170000E2,6.215252288E1 +5.283170000E2,5.743407158E1 +5.285650000E2,5.831214783E1 +5.288200000E2,6.066735547E1 +5.290820000E2,5.994603081E1 +5.293240000E2,5.951550591E1 +5.295810000E2,6.264700953E1 +5.298380000E2,5.736628274E1 +5.301360000E2,5.590406638E1 +5.304530000E2,6.041033291E1 +5.307000000E2,5.968691140E1 +5.309950000E2,5.730835182E1 +5.312390000E2,5.823026311E1 +5.315470000E2,5.871167442E1 +5.318430000E2,5.990765833E1 +5.321400000E2,6.387020611E1 +5.324510000E2,6.077699448E1 +5.326980000E2,5.895294298E1 +5.329820000E2,6.041997988E1 +5.333050000E2,5.806877757E1 +5.336110000E2,5.682362418E1 +5.340220000E2,5.915478638E1 +5.342790000E2,6.110946170E1 +5.345430000E2,5.735857105E1 +5.348060000E2,5.684014045E1 +5.350480000E2,6.043627860E1 +5.353500000E2,5.982929159E1 +5.356290000E2,5.986217314E1 +5.358770000E2,5.677131614E1 +5.361310000E2,5.763848566E1 +5.363810000E2,6.142463983E1 +5.366730000E2,5.634211854E1 +5.369290000E2,5.547608220E1 +5.372430000E2,5.920768747E1 +5.375170000E2,6.113406656E1 +5.377700000E2,6.208964505E1 +5.380710000E2,6.100572025E1 +5.383260000E2,6.352283467E1 +5.386320000E2,5.898993907E1 +5.389570000E2,5.503782412E1 +5.392560000E2,5.663453376E1 +5.395360000E2,6.406828344E1 +5.398060000E2,5.890955595E1 +5.400700000E2,6.046868424E1 +5.403380000E2,5.979639772E1 +5.406170000E2,5.838685694E1 +5.409120000E2,5.933573087E1 +5.411500000E2,5.970536072E1 +5.414430000E2,5.461931777E1 +5.417380000E2,5.891969668E1 +5.419780000E2,6.086182172E1 +5.422730000E2,5.706230292E1 +5.425150000E2,6.002937875E1 +5.428150000E2,5.733734968E1 +5.430520000E2,5.791730719E1 +5.433430000E2,5.451667439E1 +5.436740000E2,5.601232928E1 +5.439430000E2,6.067749331E1 +5.441960000E2,6.044443396E1 +5.445120000E2,6.332642539E1 +5.448320000E2,6.369907597E1 +5.451010000E2,6.327412880E1 +5.453640000E2,6.380509737E1 +5.456090000E2,6.199528902E1 +5.458550000E2,5.905332967E1 +5.461530000E2,5.748064798E1 +5.463920000E2,5.793139247E1 +5.466900000E2,5.931551966E1 +5.470480000E2,6.345498755E1 +5.473610000E2,5.881486603E1 +5.476220000E2,5.928200098E1 +5.478810000E2,5.577309321E1 +5.481470000E2,5.875325885E1 +5.483980000E2,6.007409743E1 +5.486490000E2,6.070612531E1 +5.488940000E2,5.934549940E1 +5.491520000E2,6.170511636E1 +5.494020000E2,6.376886521E1 +5.497010000E2,6.406587518E1 +5.499360000E2,6.365684538E1 +5.503130000E2,6.009406633E1 +5.505850000E2,6.014270409E1 +5.508500000E2,5.879153887E1 +5.511470000E2,5.883782525E1 +5.513760000E2,5.773432280E1 +5.516350000E2,5.966648889E1 +5.518940000E2,5.472606108E1 +5.521930000E2,5.682429497E1 +5.524670000E2,5.619181968E1 +5.527770000E2,5.997719307E1 +5.530460000E2,5.879335465E1 +5.533410000E2,5.983416170E1 +5.537120000E2,5.957041909E1 +5.539420000E2,5.952828793E1 +5.542510000E2,5.971645274E1 +5.545000000E2,6.419337448E1 +5.547730000E2,6.634363344E1 +5.550770000E2,6.285856457E1 +5.553760000E2,5.654671197E1 +5.556440000E2,5.530754918E1 +5.558640000E2,5.889159880E1 +5.561110000E2,6.213947417E1 +5.563520000E2,6.860243311E1 +5.566480000E2,6.647018679E1 +5.569110000E2,6.420604516E1 +5.571650000E2,6.703462967E1 +5.574140000E2,6.648783593E1 +5.576540000E2,6.634001782E1 +5.579350000E2,6.293734135E1 +5.581770000E2,6.205918741E1 +5.584760000E2,5.247262167E1 +5.587220000E2,5.338734169E1 +5.589670000E2,5.662276325E1 +5.592110000E2,5.533465633E1 +5.595080000E2,5.854271946E1 +5.597740000E2,5.660649413E1 +5.600260000E2,6.333844075E1 +5.602860000E2,6.255943536E1 +5.605830000E2,5.392304486E1 +5.608700000E2,5.760897506E1 +5.611660000E2,5.713086887E1 +5.614070000E2,5.720157535E1 +5.617060000E2,5.026592539E1 +5.619510000E2,5.140995344E1 +5.621950000E2,5.663266073E1 +5.624370000E2,5.202695689E1 +5.627360000E2,6.084568668E1 +5.630550000E2,6.179643015E1 +5.632960000E2,5.833759539E1 +5.635420000E2,5.518782498E1 +5.638400000E2,6.578433315E1 +5.640880000E2,5.706187099E1 +5.643850000E2,5.456571992E1 +5.646300000E2,5.536479424E1 +5.649270000E2,5.930541070E1 +5.651540000E2,6.023199994E1 +5.653960000E2,5.612469871E1 +5.656980000E2,5.462007842E1 +5.659410000E2,5.278259804E1 +5.662890000E2,6.064478329E1 +5.666290000E2,5.682964802E1 +5.669030000E2,5.787828261E1 +5.671980000E2,5.712595091E1 +5.674890000E2,5.729764361E1 +5.677450000E2,5.241850056E1 +5.679980000E2,5.377155525E1 +5.682380000E2,5.485418547E1 +5.684830000E2,5.503746434E1 +5.687810000E2,5.398954643E1 +5.690230000E2,5.401913169E1 +5.693270000E2,5.953896215E1 +5.695680000E2,5.626247467E1 +5.698640000E2,6.040491706E1 +5.701050000E2,5.781813181E1 +5.703620000E2,5.733744349E1 +5.706600000E2,5.669032177E1 +5.709140000E2,5.453731954E1 +5.711580000E2,6.235364316E1 +5.714280000E2,5.958044055E1 +5.716860000E2,5.875696014E1 +5.719750000E2,5.570465139E1 +5.722310000E2,4.865236791E1 +5.725580000E2,5.257975627E1 +5.727900000E2,4.975389893E1 +5.730890000E2,5.658508958E1 +5.733660000E2,5.542284648E1 +5.735960000E2,5.536199936E1 +5.738990000E2,5.813474916E1 +5.741540000E2,5.417788207E1 +5.744370000E2,5.704170918E1 +5.746710000E2,5.736828455E1 +5.749280000E2,5.450874678E1 +5.751790000E2,5.610950442E1 +5.754890000E2,5.919887582E1 +5.758690000E2,5.780639378E1 +5.761700000E2,5.709220641E1 +5.764190000E2,5.815359781E1 +5.767060000E2,5.734155824E1 +5.769500000E2,5.925323086E1 +5.772430000E2,6.084767221E1 +5.775370000E2,5.852024889E1 +5.777780000E2,5.822649765E1 +5.780770000E2,5.829089322E1 +5.783770000E2,5.915481192E1 +5.786460000E2,5.996430642E1 +5.789780000E2,6.016421415E1 +5.792520000E2,6.221052482E1 +5.795090000E2,5.533993101E1 +5.798230000E2,6.537257407E1 +5.801220000E2,6.068836920E1 +5.803770000E2,5.728273812E1 +5.806510000E2,5.648369901E1 +5.809070000E2,5.397363349E1 +5.811690000E2,5.755294689E1 +5.814510000E2,5.957149991E1 +5.816900000E2,5.963092636E1 +5.820650000E2,6.778811076E1 +5.823240000E2,6.247529404E1 +5.825840000E2,6.073516327E1 +5.828380000E2,6.039356998E1 +5.830970000E2,5.764504824E1 +5.833990000E2,6.041396176E1 +5.836470000E2,6.355942860E1 +5.838990000E2,5.785560268E1 +5.841390000E2,6.060017525E1 +5.844440000E2,6.032069521E1 +5.847010000E2,5.760371100E1 +5.849440000E2,5.491620812E1 +5.851990000E2,5.957978671E1 +5.855370000E2,6.103184032E1 +5.857970000E2,5.896875350E1 +5.861120000E2,6.008190546E1 +5.863990000E2,5.687378544E1 +5.866450000E2,5.874294643E1 +5.869410000E2,5.870806017E1 +5.871860000E2,5.809143232E1 +5.874740000E2,5.847828699E1 +5.877850000E2,5.846232778E1 +5.880500000E2,5.755876921E1 +5.883650000E2,5.609032758E1 +5.887050000E2,5.685283394E1 +5.889730000E2,5.945975832E1 +5.892710000E2,6.114741701E1 +5.895110000E2,6.316132147E1 +5.898100000E2,6.715155367E1 +5.900480000E2,6.367866992E1 +5.903470000E2,5.131949120E1 +5.905900000E2,5.646494575E1 +5.908880000E2,6.096218752E1 +5.911270000E2,6.089171796E1 +5.913720000E2,6.319522071E1 +5.916410000E2,6.016553529E1 +5.920560000E2,5.915189166E1 +5.923330000E2,5.776862186E1 +5.925640000E2,5.840366445E1 +5.927890000E2,5.978914182E1 +5.930440000E2,6.058699711E1 +5.932650000E2,6.012895387E1 +5.935140000E2,6.295025578E1 +5.937520000E2,6.280196012E1 +5.940110000E2,6.194014009E1 +5.943340000E2,6.483906300E1 +5.945870000E2,5.918257578E1 +5.948380000E2,5.620333930E1 +5.951900000E2,6.323403421E1 +5.954240000E2,6.183177681E1 +5.956620000E2,6.120300936E1 +5.959650000E2,5.836925111E1 +5.961890000E2,6.106023171E1 +5.964920000E2,6.153658324E1 +5.967310000E2,6.490772593E1 +5.969960000E2,6.274228676E1 +5.972520000E2,6.139008510E1 +5.975050000E2,6.281232833E1 +5.978180000E2,6.254982632E1 +5.980890000E2,6.205794184E1 +5.983900000E2,6.438771503E1 +5.986230000E2,6.052772463E1 +5.988520000E2,6.375966703E1 +5.991380000E2,5.869985301E1 +5.993860000E2,6.050357712E1 +5.996630000E2,5.547835745E1 +5.999280000E2,5.400421666E1 +6.001960000E2,5.668252186E1 +6.004880000E2,6.001970320E1 +6.007680000E2,6.056987745E1 +6.010550000E2,6.461211967E1 +6.014090000E2,6.399838195E1 +6.016840000E2,5.485596323E1 +6.019450000E2,5.731519087E1 +6.022080000E2,6.691878914E1 +6.024720000E2,6.479201876E1 +6.027260000E2,6.412847214E1 +6.029760000E2,6.025795068E1 +6.032190000E2,6.098133491E1 +6.035120000E2,5.689387521E1 +6.038040000E2,5.639928101E1 +6.041550000E2,5.328068252E1 +6.044370000E2,5.639829798E1 +6.046770000E2,5.892330560E1 +6.049510000E2,5.315638413E1 +6.051900000E2,5.740260439E1 +6.054620000E2,5.339391440E1 +6.057500000E2,5.310371918E1 +6.060710000E2,5.460903952E1 +6.063050000E2,5.407304270E1 +6.065540000E2,5.870790541E1 +6.068060000E2,5.576782972E1 +6.070790000E2,5.976954147E1 +6.074640000E2,6.181180531E1 +6.077240000E2,6.194364733E1 +6.080150000E2,6.794225297E1 +6.082590000E2,6.236601361E1 +6.085470000E2,6.002700779E1 +6.088450000E2,5.971993236E1 +6.090930000E2,5.954735434E1 +6.093460000E2,5.907202371E1 +6.095920000E2,5.993658420E1 +6.098910000E2,5.530332259E1 +6.101850000E2,5.531802018E1 +6.104220000E2,5.376885939E1 +6.107780000E2,5.735355871E1 +6.110210000E2,5.868610156E1 +6.112710000E2,5.312122754E1 +6.115670000E2,5.745102631E1 +6.118550000E2,5.535536940E1 +6.121540000E2,5.088728731E1 +6.123960000E2,5.266907791E1 +6.126860000E2,5.386493253E1 +6.130010000E2,5.670623073E1 +6.132810000E2,5.563278655E1 +6.135150000E2,5.267172926E1 +6.138540000E2,5.386148816E1 +6.141880000E2,5.716468210E1 +6.144880000E2,5.526918781E1 +6.147190000E2,5.659553915E1 +6.149610000E2,5.648341007E1 +6.152730000E2,5.711745846E1 +6.155520000E2,5.918800114E1 +6.158010000E2,5.642548609E1 +6.161000000E2,5.635896926E1 +6.163480000E2,5.899225051E1 +6.166180000E2,5.374343244E1 +6.168690000E2,4.891042404E1 +6.172050000E2,5.065835680E1 +6.174560000E2,5.685264653E1 +6.177340000E2,5.429270039E1 +6.179930000E2,5.499548313E1 +6.182940000E2,5.407177565E1 +6.185300000E2,5.356533799E1 +6.188300000E2,5.378190643E1 +6.191140000E2,5.189020817E1 +6.193870000E2,5.046647494E1 +6.196450000E2,5.501107364E1 +6.198910000E2,5.798814538E1 +6.201660000E2,5.360844474E1 +6.205080000E2,5.353935610E1 +6.208080000E2,5.620189936E1 +6.210820000E2,6.216008765E1 +6.213360000E2,5.767015155E1 +6.216520000E2,6.210101060E1 +6.219320000E2,5.928042926E1 +6.221800000E2,6.394496555E1 +6.224980000E2,5.872213561E1 +6.227430000E2,5.927091626E1 +6.230010000E2,5.235592166E1 +6.232430000E2,6.313120608E1 +6.235470000E2,6.005436888E1 +6.238480000E2,5.999836557E1 +6.240930000E2,5.879748041E1 +6.243920000E2,5.978277378E1 +6.246440000E2,6.050724590E1 +6.249480000E2,6.282777276E1 +6.252520000E2,6.080897043E1 +6.255640000E2,5.889462949E1 +6.258270000E2,5.550476615E1 +6.260730000E2,5.586785505E1 +6.263620000E2,6.576560120E1 +6.266590000E2,6.102361259E1 +6.270050000E2,6.110507706E1 +6.272870000E2,5.753592100E1 +6.275410000E2,6.297666729E1 +6.278490000E2,6.037594793E1 +6.281160000E2,5.849898506E1 +6.284180000E2,6.165631601E1 +6.287090000E2,6.096774109E1 +6.289510000E2,6.176590968E1 +6.292460000E2,5.947061017E1 +6.294820000E2,6.109202024E1 +6.297790000E2,5.322559935E1 +6.301160000E2,4.971181861E1 +6.303880000E2,5.533921521E1 +6.307250000E2,5.478410742E1 +6.310240000E2,5.647795083E1 +6.313200000E2,5.797504265E1 +6.315690000E2,5.403019222E1 +6.318640000E2,5.301910781E1 +6.321010000E2,5.096544207E1 +6.324030000E2,5.324435941E1 +6.326360000E2,5.447050361E1 +6.328960000E2,5.932781903E1 +6.331500000E2,5.967228428E1 +6.334640000E2,6.319489971E1 +6.337810000E2,5.820271574E1 +6.340710000E2,5.910289699E1 +6.343170000E2,5.681937370E1 +6.346260000E2,5.582227275E1 +6.349350000E2,5.745831651E1 +6.352100000E2,5.504019385E1 +6.354620000E2,5.072303887E1 +6.357190000E2,5.366082959E1 +6.359690000E2,5.380227314E1 +6.362560000E2,4.818205454E1 +6.365090000E2,5.989908626E1 +6.368780000E2,5.659012846E1 +6.371610000E2,5.593157997E1 +6.374460000E2,5.135237935E1 +6.377000000E2,5.687788515E1 +6.379550000E2,5.943975502E1 +6.382630000E2,6.290957992E1 +6.385230000E2,5.827099811E1 +6.387780000E2,5.686391746E1 +6.390620000E2,5.771790911E1 +6.393200000E2,5.390066131E1 +6.395830000E2,5.358231960E1 +6.398480000E2,5.564565007E1 +6.401490000E2,5.205482155E1 +6.404200000E2,5.852280051E1 +6.407340000E2,4.836326193E1 +6.409980000E2,5.905115701E1 +6.412560000E2,5.622349390E1 +6.415040000E2,5.891737338E1 +6.417460000E2,5.749377856E1 +6.420310000E2,5.414095183E1 +6.422680000E2,5.482109112E1 +6.425170000E2,5.202942051E1 +6.428000000E2,4.903409276E1 +6.431250000E2,5.495098254E1 +6.434650000E2,5.777911761E1 +6.437680000E2,5.329076638E1 +6.440080000E2,5.886592322E1 +6.443070000E2,5.661637111E1 +6.445560000E2,5.459133399E1 +6.448230000E2,4.858613706E1 +6.450990000E2,5.642020356E1 +6.453590000E2,5.634614530E1 +6.456240000E2,5.769024626E1 +6.458900000E2,6.037646239E1 +6.461470000E2,5.712013563E1 +6.464260000E2,5.393237723E1 +6.467570000E2,5.443825449E1 +6.469850000E2,5.464133184E1 +6.472460000E2,5.185343249E1 +6.475170000E2,5.670688718E1 +6.477900000E2,5.808659132E1 +6.480150000E2,5.879711687E1 +6.483250000E2,5.860991669E1 +6.485730000E2,5.600484597E1 +6.488230000E2,5.291438286E1 +6.491020000E2,5.869236753E1 +6.493260000E2,5.826316690E1 +6.496250000E2,5.619306699E1 +6.499850000E2,6.085970714E1 +6.502400000E2,6.051231588E1 +6.505400000E2,6.096601072E1 +6.507990000E2,6.197068990E1 +6.511180000E2,6.520817743E1 +6.513810000E2,6.377577246E1 +6.516860000E2,6.105485617E1 +6.519940000E2,5.890751001E1 +6.522910000E2,5.911253604E1 +6.525370000E2,6.291937986E1 +6.528540000E2,6.252638881E1 +6.532210000E2,6.337356348E1 +6.535270000E2,5.894334263E1 +6.537830000E2,5.754939005E1 +6.540930000E2,5.500698560E1 +6.543880000E2,5.014350898E1 +6.546880000E2,5.646260920E1 +6.549870000E2,5.951282585E1 +6.552920000E2,6.099782791E1 +6.555480000E2,6.065538365E1 +6.558100000E2,6.827371953E1 +6.560790000E2,6.035931154E1 +6.563820000E2,6.267306134E1 +6.566350000E2,5.826452213E1 +6.568970000E2,6.092938143E1 +6.572010000E2,6.534130041E1 +6.575130000E2,6.111837506E1 +6.577770000E2,5.826481723E1 +6.580330000E2,5.918147323E1 +6.582980000E2,6.100230752E1 +6.585510000E2,6.302217459E1 +6.588060000E2,5.754956715E1 +6.591080000E2,6.111201710E1 +6.593520000E2,6.017410469E1 +6.597040000E2,6.031944923E1 +6.599450000E2,5.943575512E1 +6.602120000E2,5.868776340E1 +6.605570000E2,5.940543513E1 +6.608500000E2,5.886327816E1 +6.610920000E2,5.770522648E1 +6.613840000E2,5.442777508E1 +6.616200000E2,5.394232060E1 +6.619220000E2,5.856638842E1 +6.622160000E2,5.742664400E1 +6.624600000E2,5.472498345E1 +6.627560000E2,5.672985390E1 +6.629770000E2,5.834702318E1 +6.632250000E2,5.907602823E1 +6.634810000E2,5.873031221E1 +6.637670000E2,5.757130737E1 +6.640040000E2,5.572185824E1 +6.643070000E2,5.959142979E1 +6.645480000E2,5.851623707E1 +6.648520000E2,5.856887935E1 +6.650940000E2,6.397218192E1 +6.653890000E2,5.963692586E1 +6.656210000E2,5.934207027E1 +6.659580000E2,5.667856430E1 +6.662640000E2,5.811017468E1 +6.665550000E2,5.505265787E1 +6.667990000E2,5.558350894E1 +6.671320000E2,6.063017800E1 +6.674000000E2,5.568411381E1 +6.676510000E2,5.981422062E1 +6.679580000E2,5.723024768E1 +6.682820000E2,5.036028104E1 +6.685240000E2,5.199205823E1 +6.687970000E2,5.367328475E1 +6.691280000E2,5.936914884E1 +6.693940000E2,5.657797691E1 +6.696490000E2,6.065879377E1 +6.699270000E2,5.657054255E1 +6.702000000E2,5.655716576E1 +6.704770000E2,5.823562265E1 +6.707350000E2,6.065030224E1 +6.710140000E2,6.110776530E1 +6.712700000E2,5.714357796E1 +6.715170000E2,5.604236164E1 +6.717930000E2,6.041748871E1 +6.721240000E2,6.019765334E1 +6.724270000E2,5.928602786E1 +6.727750000E2,5.973060669E1 +6.730710000E2,6.059869751E1 +6.733250000E2,6.116850166E1 +6.736400000E2,6.145214709E1 +6.738890000E2,6.020118097E1 +6.741670000E2,6.048579637E1 +6.744720000E2,6.225337088E1 +6.747550000E2,5.853636068E1 +6.750030000E2,5.999204871E1 +6.752840000E2,5.433989895E1 +6.755100000E2,5.847308735E1 +6.758420000E2,5.913726954E1 +6.760830000E2,6.049449503E1 +6.763830000E2,5.545572399E1 +6.766370000E2,6.246077536E1 +6.768920000E2,6.029598130E1 +6.771340000E2,6.005864514E1 +6.774230000E2,6.582269585E1 +6.776700000E2,6.255104294E1 +6.779140000E2,6.623711836E1 +6.781740000E2,6.684819787E1 +6.784850000E2,6.877250850E1 +6.787420000E2,6.157084767E1 +6.789860000E2,6.054068573E1 +6.793290000E2,6.069583213E1 +6.795810000E2,6.124898856E1 +6.798240000E2,6.136691849E1 +6.800900000E2,6.035594762E1 +6.803920000E2,5.654106541E1 +6.806920000E2,5.587565134E1 +6.809940000E2,5.642134155E1 +6.813020000E2,5.749983358E1 +6.815830000E2,5.576151961E1 +6.818120000E2,5.714589311E1 +6.820580000E2,5.969510914E1 +6.823020000E2,5.824123453E1 +6.825680000E2,5.779273115E1 +6.828630000E2,5.699644891E1 +6.831010000E2,5.900876644E1 +6.833500000E2,6.335540424E1 +6.835940000E2,6.280432027E1 +6.838340000E2,6.194675910E1 +6.841290000E2,5.801082069E1 +6.843650000E2,5.652506879E1 +6.846570000E2,5.895404856E1 +6.848910000E2,5.873705448E1 +6.851950000E2,5.589704153E1 +6.855380000E2,5.379672362E1 +6.857910000E2,6.287056471E1 +6.860900000E2,6.081817617E1 +6.863340000E2,6.807593043E1 +6.866320000E2,5.604389930E1 +6.868800000E2,6.712075434E1 +6.871750000E2,6.290238552E1 +6.874740000E2,6.473105179E1 +6.877330000E2,5.873835234E1 +6.880180000E2,5.800563858E1 +6.882620000E2,5.540095032E1 +6.885810000E2,6.197881428E1 +6.888280000E2,5.541258482E1 +6.890890000E2,5.558277465E1 +6.894010000E2,4.965923685E1 +6.897080000E2,4.860020107E1 +6.899730000E2,5.608167548E1 +6.902300000E2,5.381305593E1 +6.904990000E2,6.079286270E1 +6.908000000E2,6.446965644E1 +6.910380000E2,6.556266140E1 +6.913400000E2,5.418444209E1 +6.916350000E2,5.205102491E1 +6.919820000E2,5.812981404E1 +6.922410000E2,6.500705260E1 +6.925070000E2,6.149947285E1 +6.927750000E2,5.695315316E1 +6.930870000E2,5.775854948E1 +6.933870000E2,6.523399833E1 +6.936300000E2,6.692630865E1 +6.939270000E2,5.793447825E1 +6.942230000E2,5.746396110E1 +6.944770000E2,6.017975210E1 +6.947150000E2,5.956759439E1 +6.950320000E2,6.391288151E1 +6.953110000E2,6.484415086E1 +6.955650000E2,6.664209540E1 +6.958410000E2,6.746668632E1 +6.961050000E2,5.775664920E1 +6.964050000E2,6.383035698E1 +6.967020000E2,5.816763892E1 +6.969600000E2,6.921190909E1 +6.972400000E2,6.165047809E1 +6.975080000E2,5.666810057E1 +6.977540000E2,6.417546300E1 +6.980020000E2,5.788971486E1 +6.982730000E2,5.486922606E1 +6.985850000E2,5.576434723E1 +6.988820000E2,5.548978795E1 +6.991460000E2,5.886820316E1 +6.993970000E2,6.226406326E1 +6.996480000E2,5.601534080E1 +6.999400000E2,5.901385758E1 +7.002040000E2,5.720709772E1 +7.005120000E2,6.318399213E1 +7.007580000E2,6.338981741E1 +7.010170000E2,6.747312486E1 +7.012670000E2,5.788999692E1 +7.015450000E2,4.434465006E1 +7.018710000E2,6.439013955E1 +7.021480000E2,5.375342664E1 +7.023700000E2,6.398282027E1 +7.026160000E2,5.857909138E1 +7.029130000E2,5.670439641E1 +7.031590000E2,5.749786365E1 +7.034320000E2,5.181710985E1 +7.036770000E2,5.871535868E1 +7.039520000E2,5.470297527E1 +7.042240000E2,5.771822323E1 +7.044750000E2,5.236261523E1 +7.047130000E2,5.595332709E1 +7.050480000E2,5.576748295E1 +7.053040000E2,5.334869600E1 +7.055590000E2,5.337806625E1 +7.058180000E2,5.499892680E1 +7.060900000E2,5.490963435E1 +7.063980000E2,5.551078540E1 +7.066680000E2,5.358868238E1 +7.069300000E2,5.203182642E1 +7.071760000E2,5.771053387E1 +7.074630000E2,5.175835182E1 +7.077440000E2,5.402526598E1 +7.080400000E2,5.754717994E1 +7.083470000E2,6.103880587E1 +7.086400000E2,6.284824916E1 +7.088840000E2,6.674666322E1 +7.092010000E2,6.194114278E1 +7.094980000E2,5.796289911E1 +7.097580000E2,5.475547679E1 +7.100170000E2,5.804024708E1 +7.102650000E2,5.606423134E1 +7.105550000E2,5.319247933E1 +7.107930000E2,5.625991375E1 +7.110940000E2,5.589539698E1 +7.114730000E2,6.073460415E1 +7.117930000E2,6.208342045E1 +7.120530000E2,6.335117127E1 +7.123290000E2,5.821275565E1 +7.126280000E2,5.793160357E1 +7.128780000E2,5.509944006E1 +7.131790000E2,5.578357696E1 +7.134760000E2,5.632534225E1 +7.137350000E2,5.466315647E1 +7.140450000E2,5.914530785E1 +7.143020000E2,6.280432125E1 +7.146020000E2,6.333348539E1 +7.149790000E2,5.698482465E1 +7.152920000E2,5.474810308E1 +7.155370000E2,5.417920207E1 +7.157880000E2,6.392184792E1 +7.160720000E2,6.565549591E1 +7.163130000E2,6.082705714E1 +7.166120000E2,5.816285927E1 +7.168430000E2,5.809201859E1 +7.170930000E2,6.016105207E1 +7.173350000E2,5.162287691E1 +7.176230000E2,5.754317879E1 +7.179310000E2,6.166304542E1 +7.181770000E2,6.177004553E1 +7.184320000E2,6.274574776E1 +7.186900000E2,6.104994734E1 +7.189920000E2,5.735301480E1 +7.192340000E2,5.830205645E1 +7.194890000E2,6.212782217E1 +7.197420000E2,5.467685243E1 +7.200420000E2,5.313970583E1 +7.202920000E2,5.278680647E1 +7.205360000E2,5.474141102E1 +7.209140000E2,6.241771654E1 +7.212600000E2,6.394594172E1 +7.215560000E2,6.348358734E1 +7.217980000E2,6.112734048E1 +7.220450000E2,6.226451183E1 +7.222930000E2,6.534082516E1 +7.225960000E2,6.114019283E1 +7.228390000E2,6.421228964E1 +7.231230000E2,6.814847387E1 +7.233690000E2,6.275446304E1 +7.236190000E2,6.679153921E1 +7.239280000E2,6.537583699E1 +7.241850000E2,6.212976374E1 +7.245300000E2,6.553556935E1 +7.248220000E2,5.834030427E1 +7.250930000E2,5.992153646E1 +7.253380000E2,5.595099295E1 +7.256370000E2,5.720822528E1 +7.258800000E2,5.423516872E1 +7.261770000E2,5.906139652E1 +7.264140000E2,6.204477132E1 +7.267140000E2,6.368823365E1 +7.269550000E2,6.513672214E1 +7.272500000E2,6.364997971E1 +7.275370000E2,6.269941998E1 +7.278570000E2,5.948773609E1 +7.281020000E2,5.789544973E1 +7.283740000E2,6.305528689E1 +7.286400000E2,6.245554089E1 +7.289690000E2,6.033221518E1 +7.292310000E2,5.940071821E1 +7.294970000E2,6.176178101E1 +7.298020000E2,5.355172623E1 +7.300580000E2,5.535292187E1 +7.303150000E2,5.274398781E1 +7.305750000E2,5.399957194E1 +7.308780000E2,5.819691646E1 +7.312070000E2,5.434897588E1 +7.315090000E2,6.041787911E1 +7.317850000E2,5.617860881E1 +7.320560000E2,5.558770875E1 +7.323290000E2,5.151264449E1 +7.325860000E2,5.612143969E1 +7.328800000E2,5.405001557E1 +7.331120000E2,5.455354216E1 +7.334090000E2,5.716252136E1 +7.337070000E2,6.416157102E1 +7.339910000E2,6.098010142E1 +7.343020000E2,6.194029449E1 +7.346500000E2,6.091313037E1 +7.349540000E2,5.846954669E1 +7.352410000E2,5.743489407E1 +7.355320000E2,5.872669957E1 +7.357800000E2,5.859080967E1 +7.360560000E2,6.053269456E1 +7.363220000E2,6.117884455E1 +7.366590000E2,5.809887850E1 +7.369420000E2,5.453224539E1 +7.372510000E2,5.639337460E1 +7.375040000E2,5.373613181E1 +7.378630000E2,5.066236714E1 +7.381160000E2,4.653740377E1 +7.383650000E2,6.375011526E1 +7.386730000E2,6.282181577E1 +7.389830000E2,6.727660972E1 +7.392340000E2,6.413328322E1 +7.394790000E2,6.184881400E1 +7.397290000E2,6.430634497E1 +7.400250000E2,6.276256291E1 +7.402610000E2,6.297441350E1 +7.405590000E2,5.306586823E1 +7.408610000E2,5.403016569E1 +7.412260000E2,5.749263443E1 +7.415060000E2,5.657932114E1 +7.417820000E2,5.532222303E1 +7.420430000E2,5.911133378E1 +7.423450000E2,5.822379827E1 +7.426470000E2,6.311870884E1 +7.428860000E2,5.964121243E1 +7.431940000E2,5.708688763E1 +7.434960000E2,5.782189241E1 +7.437480000E2,5.745118469E1 +7.440380000E2,5.258772989E1 +7.442830000E2,5.325984780E1 +7.445410000E2,5.216709684E1 +7.447900000E2,5.485283680E1 +7.450520000E2,6.638751453E1 +7.453640000E2,6.256149725E1 +7.456370000E2,6.851667797E1 +7.459020000E2,6.356784575E1 +7.462040000E2,6.586178842E1 +7.464510000E2,6.099626883E1 +7.467420000E2,6.874341983E1 +7.470300000E2,5.690479739E1 +7.472670000E2,5.749513215E1 +7.475860000E2,5.743840209E1 +7.478480000E2,6.695338823E1 +7.481550000E2,6.575566103E1 +7.484170000E2,6.244751264E1 +7.486690000E2,6.206430480E1 +7.489520000E2,5.755143157E1 +7.492450000E2,6.343498072E1 +7.494820000E2,6.599354682E1 +7.497800000E2,5.994269627E1 +7.500210000E2,6.480563885E1 +7.503160000E2,5.962320355E1 +7.505550000E2,5.907805627E1 +7.508860000E2,5.452673237E1 +7.511450000E2,5.413358853E1 +7.514110000E2,5.786691992E1 +7.516870000E2,6.185088179E1 +7.519570000E2,5.432685780E1 +7.522050000E2,5.297819944E1 +7.524920000E2,5.290855554E1 +7.527910000E2,5.828859659E1 +7.530300000E2,5.880189294E1 +7.533360000E2,5.500578631E1 +7.535910000E2,5.476677878E1 +7.538330000E2,5.414240587E1 +7.541650000E2,5.332866170E1 +7.544620000E2,5.193802785E1 +7.547080000E2,5.242932681E1 +7.549590000E2,6.024921863E1 +7.552020000E2,5.537701523E1 +7.554960000E2,5.489617845E1 +7.557330000E2,5.384280286E1 +7.560410000E2,5.406125999E1 +7.562870000E2,5.246560959E1 +7.565320000E2,5.374729291E1 +7.567680000E2,5.542801483E1 +7.570630000E2,5.525770987E1 +7.573930000E2,5.847670432E1 +7.576660000E2,5.822188632E1 +7.579180000E2,5.822901451E1 +7.582040000E2,5.458975346E1 +7.584820000E2,5.438683247E1 +7.587800000E2,5.260449368E1 +7.590260000E2,5.371245859E1 +7.592870000E2,4.983203663E1 +7.595420000E2,5.018089077E1 +7.598380000E2,5.950969681E1 +7.601480000E2,5.769305363E1 +7.604800000E2,5.747567937E1 +7.607190000E2,5.446335810E1 +7.610040000E2,5.463229896E1 +7.612970000E2,5.644916160E1 +7.615560000E2,5.809520116E1 +7.618460000E2,5.406577519E1 +7.621050000E2,5.362277750E1 +7.623930000E2,5.868559294E1 +7.626230000E2,5.548744129E1 +7.628890000E2,5.613986675E1 +7.631890000E2,5.592058678E1 +7.634870000E2,5.947938191E1 +7.638120000E2,5.945990241E1 +7.640830000E2,5.354091788E1 +7.643270000E2,5.910847411E1 +7.645670000E2,6.112853730E1 +7.648120000E2,5.617469613E1 +7.650520000E2,5.678172470E1 +7.653190000E2,5.293731054E1 +7.655730000E2,5.571573154E1 +7.658430000E2,5.239475172E1 +7.660900000E2,5.710555790E1 +7.663840000E2,5.593714408E1 +7.666500000E2,5.506488062E1 +7.669100000E2,5.276148627E1 +7.671530000E2,5.087813070E1 +7.674500000E2,4.966858228E1 +7.677070000E2,4.690170064E1 +7.679870000E2,5.097718665E1 +7.682460000E2,5.173969669E1 +7.685220000E2,5.562988056E1 +7.687630000E2,5.194720020E1 +7.690630000E2,5.590118249E1 +7.693610000E2,5.613585205E1 +7.696030000E2,5.417299550E1 +7.698530000E2,5.925774948E1 +7.702010000E2,5.729895975E1 +7.704610000E2,5.765570707E1 +7.707610000E2,6.211008380E1 +7.710570000E2,5.846530012E1 +7.712970000E2,5.766544416E1 +7.715460000E2,5.716238768E1 +7.718080000E2,5.700535494E1 +7.720510000E2,5.592606747E1 +7.723260000E2,5.771214429E1 +7.725940000E2,5.753442175E1 +7.728830000E2,5.541298336E1 +7.731860000E2,5.137853822E1 +7.735420000E2,5.462649470E1 +7.738320000E2,5.454281912E1 +7.740820000E2,6.803752283E1 +7.743260000E2,6.852980541E1 +7.745820000E2,7.007631543E1 +7.748270000E2,7.009876218E1 +7.751160000E2,6.950363051E1 +7.753520000E2,6.338954984E1 +7.755910000E2,5.500200077E1 +7.758880000E2,5.358702362E1 +7.761340000E2,5.718303470E1 +7.763730000E2,5.887519420E1 +7.767050000E2,5.795457078E1 +7.769970000E2,5.796499201E1 +7.773000000E2,5.644912180E1 +7.775570000E2,5.804780214E1 +7.778740000E2,5.958528627E1 +7.781300000E2,5.635913866E1 +7.784430000E2,5.593106857E1 +7.787280000E2,6.063168213E1 +7.789960000E2,5.917208792E1 +7.792560000E2,5.719923422E1 +7.795050000E2,6.400429125E1 +7.797680000E2,5.733192807E1 +7.800440000E2,6.018331087E1 +7.803000000E2,6.350407169E1 +7.805530000E2,6.357762743E1 +7.808590000E2,6.772563953E1 +7.811430000E2,6.431848914E1 +7.814050000E2,5.710721917E1 +7.816950000E2,5.646111127E1 +7.819500000E2,5.564600214E1 +7.822050000E2,6.362802489E1 +7.824550000E2,6.278310471E1 +7.827010000E2,5.851995741E1 +7.829620000E2,5.759567059E1 +7.832630000E2,5.449669640E1 +7.835070000E2,6.040303881E1 +7.837500000E2,5.743841461E1 +7.839990000E2,6.096558185E1 +7.842840000E2,7.161293257E1 +7.845270000E2,7.417435903E1 +7.848410000E2,6.386070968E1 +7.851390000E2,6.234904760E1 +7.854350000E2,6.321731436E1 +7.856820000E2,6.294103551E1 +7.859780000E2,6.210337552E1 +7.862150000E2,6.765383904E1 +7.865650000E2,6.346682761E1 +7.868610000E2,6.221020232E1 +7.871280000E2,6.119530731E1 +7.873850000E2,5.314248269E1 +7.876880000E2,5.288680780E1 +7.879230000E2,5.064349321E1 +7.882230000E2,5.786336298E1 +7.884630000E2,5.341864841E1 +7.887250000E2,5.286568073E1 +7.890140000E2,5.272997567E1 +7.893180000E2,5.904110581E1 +7.896690000E2,5.748622391E1 +7.899200000E2,5.773986136E1 +7.902160000E2,5.480967078E1 +7.904710000E2,5.627241382E1 +7.907280000E2,5.456362797E1 +7.909900000E2,5.766408512E1 +7.912380000E2,5.413586400E1 +7.914940000E2,5.234403284E1 +7.917720000E2,5.190170354E1 +7.920440000E2,5.227759392E1 +7.923170000E2,4.410400383E1 +7.926220000E2,3.508270700E1 +7.929370000E2,3.887828085E1 +7.932030000E2,4.522069604E1 +7.934660000E2,4.928233980E1 +7.937420000E2,4.706401379E1 +7.940710000E2,4.988989997E1 +7.943700000E2,5.767827889E1 +7.946060000E2,5.506606719E1 +7.949050000E2,6.107887773E1 +7.952060000E2,5.849609892E1 +7.955030000E2,5.343173328E1 +7.957490000E2,5.007726003E1 +7.960580000E2,4.763873915E1 +7.963010000E2,5.045894898E1 +7.966040000E2,6.859700710E1 +7.968900000E2,6.734256534E1 +7.971550000E2,6.661489392E1 +7.974110000E2,6.556398865E1 +7.976580000E2,5.519705677E1 +7.979230000E2,5.503316479E1 +7.982060000E2,5.955770829E1 +7.984280000E2,5.777834711E1 +7.987260000E2,6.050467535E1 +7.989700000E2,5.583639573E1 +7.993330000E2,5.988908902E1 +7.995750000E2,5.875791040E1 +7.998670000E2,6.166637478E1 +8.001160000E2,5.690435901E1 +8.004160000E2,5.599911293E1 +8.006610000E2,5.889628547E1 +8.009180000E2,6.227540789E1 +8.011740000E2,6.572663811E1 +8.014300000E2,6.013467784E1 +8.016770000E2,6.250368579E1 +8.019910000E2,6.532292099E1 +8.023560000E2,5.377170031E1 +8.026370000E2,5.535595108E1 +8.029110000E2,5.147526495E1 +8.031720000E2,4.993046061E1 +8.034760000E2,6.394035794E1 +8.037260000E2,5.983119170E1 +8.040270000E2,5.967243802E1 +8.042930000E2,6.559340840E1 +8.046100000E2,5.262215496E1 +8.049160000E2,5.397812040E1 +8.051780000E2,5.680330381E1 +8.054740000E2,5.857171626E1 +8.058060000E2,5.577198454E1 +8.060880000E2,5.916891157E1 +8.063460000E2,6.120078548E1 +8.066060000E2,6.223167379E1 +8.069230000E2,6.161077093E1 +8.071720000E2,5.812180846E1 +8.074300000E2,5.665535607E1 +8.077230000E2,5.401482687E1 +8.079600000E2,5.631804256E1 +8.082610000E2,5.267806276E1 +8.085540000E2,5.766120113E1 +8.088100000E2,5.717509884E1 +8.091690000E2,5.698714543E1 +8.094130000E2,5.807918354E1 +8.096940000E2,5.364566959E1 +8.099320000E2,5.678502402E1 +8.102110000E2,5.494444844E1 +8.104710000E2,6.216218230E1 +8.107550000E2,5.504588420E1 +8.110030000E2,5.220186059E1 +8.112810000E2,5.338487037E1 +8.115430000E2,5.422122114E1 +8.118180000E2,6.217546099E1 +8.121430000E2,5.739027439E1 +8.124800000E2,5.218554734E1 +8.128080000E2,6.183667492E1 +8.130850000E2,6.028246668E1 +8.133620000E2,6.620979851E1 +8.135950000E2,5.810667246E1 +8.138630000E2,6.096670869E1 +8.141300000E2,5.149777407E1 +8.143960000E2,4.993954713E1 +8.146400000E2,5.196561010E1 +8.149350000E2,5.727966309E1 +8.151710000E2,5.489316784E1 +8.154100000E2,5.619291420E1 +8.157500000E2,5.425831711E1 +8.160430000E2,5.677079709E1 +8.163250000E2,5.289383275E1 +8.165600000E2,5.573749616E1 +8.168090000E2,5.211960412E1 +8.170840000E2,5.029895102E1 +8.173170000E2,5.085418245E1 +8.175630000E2,5.101392152E1 +8.178870000E2,5.228690479E1 +8.182130000E2,5.919931006E1 +8.184680000E2,5.288617356E1 +8.188320000E2,5.626269479E1 +8.191030000E2,6.124827198E1 +8.193870000E2,5.889071517E1 +8.196160000E2,5.957980623E1 +8.199180000E2,5.440069788E1 +8.201590000E2,5.524226830E1 +8.204560000E2,5.147688867E1 +8.206870000E2,5.390780082E1 +8.209820000E2,6.509870984E1 +8.212270000E2,6.421388309E1 +8.215230000E2,5.843840462E1 +8.218170000E2,5.422512027E1 +8.221280000E2,5.468614274E1 +8.223780000E2,5.922850585E1 +8.226710000E2,6.486031186E1 +8.229330000E2,6.154967201E1 +8.232420000E2,5.893257410E1 +8.235100000E2,6.020329639E1 +8.238290000E2,5.483779552E1 +8.240760000E2,5.692914998E1 +8.243280000E2,6.347347085E1 +8.245930000E2,5.345306004E1 +8.248670000E2,6.141647052E1 +8.252000000E2,5.672783001E1 +8.254550000E2,5.605661334E1 +8.257610000E2,5.699330885E1 +8.260410000E2,5.489256860E1 +8.263010000E2,6.262090025E1 +8.265830000E2,5.457719262E1 +8.268180000E2,5.416382407E1 +8.271260000E2,4.993919751E1 +8.273700000E2,5.569569056E1 +8.276330000E2,5.514364162E1 +8.278890000E2,5.653204472E1 +8.281470000E2,5.784406489E1 +8.284370000E2,5.752811490E1 +8.286720000E2,5.727510089E1 +8.289650000E2,5.900575965E1 +8.292510000E2,5.679022390E1 +8.294860000E2,5.722234118E1 +8.297350000E2,5.952638514E1 +8.300320000E2,5.925181191E1 +8.302740000E2,5.930148258E1 +8.305160000E2,5.668145507E1 +8.307730000E2,5.590492759E1 +8.310130000E2,6.302930486E1 +8.312510000E2,5.733539345E1 +8.315800000E2,5.620349253E1 +8.318910000E2,5.495250031E1 +8.322000000E2,5.501979251E1 +8.324620000E2,5.208226415E1 +8.327390000E2,5.765748383E1 +8.329950000E2,5.489193423E1 +8.332490000E2,5.593428331E1 +8.335720000E2,5.714652117E1 +8.338250000E2,5.832769426E1 +8.341370000E2,5.884156077E1 +8.344030000E2,5.840498509E1 +8.347020000E2,5.864505811E1 +8.350330000E2,6.356982434E1 +8.353340000E2,6.286445683E1 +8.355720000E2,5.657384439E1 +8.358940000E2,5.660970318E1 +8.361720000E2,5.918731584E1 +8.364160000E2,5.825788220E1 +8.366580000E2,5.592754487E1 +8.369110000E2,5.553717092E1 +8.371910000E2,5.495027293E1 +8.374510000E2,5.546329287E1 +8.377420000E2,5.746402701E1 +8.379890000E2,5.891922359E1 +8.383130000E2,6.522858798E1 +8.385710000E2,6.384617776E1 +8.388430000E2,5.435088619E1 +8.390670000E2,5.460135210E1 +8.393610000E2,5.982769627E1 +8.396020000E2,5.936265195E1 +8.398550000E2,6.034701146E1 +8.401470000E2,6.875861473E1 +8.403840000E2,6.968788985E1 +8.406760000E2,6.653493651E1 +8.409120000E2,6.664139767E1 +8.412200000E2,6.195236791E1 +8.415280000E2,5.759269564E1 +8.418110000E2,5.704906263E1 +8.420770000E2,5.199124728E1 +8.423350000E2,5.625309672E1 +8.426060000E2,5.627754144E1 +8.428710000E2,6.285304788E1 +8.431220000E2,6.089762622E1 +8.434160000E2,5.828079525E1 +8.436650000E2,5.581703965E1 +8.439650000E2,5.326092983E1 +8.442070000E2,5.247397640E1 +8.444500000E2,5.104216729E1 +8.447560000E2,4.981466747E1 +8.450730000E2,5.794387296E1 +8.453210000E2,6.103400827E1 +8.455680000E2,6.053778141E1 +8.458610000E2,5.413066164E1 +8.461240000E2,5.591468697E1 +8.463740000E2,5.289659812E1 +8.466770000E2,6.014390988E1 +8.469740000E2,5.713983843E1 +8.472340000E2,5.457406708E1 +8.474800000E2,5.848999564E1 +8.478210000E2,5.310404619E1 +8.481040000E2,5.463633704E1 +8.483620000E2,5.329096892E1 +8.486670000E2,5.667645304E1 +8.489890000E2,5.540515985E1 +8.492420000E2,5.014593999E1 +8.495060000E2,5.019949668E1 +8.497660000E2,4.724526190E1 +8.500410000E2,4.632701850E1 +8.502660000E2,4.436725745E1 +8.505710000E2,5.273585220E1 +8.508470000E2,5.232501704E1 +8.511370000E2,5.177389205E1 +8.513940000E2,5.236772038E1 +8.516560000E2,4.869019062E1 +8.518980000E2,5.254056589E1 +8.521620000E2,5.441215371E1 +8.524060000E2,5.431954181E1 +8.526720000E2,4.873515026E1 +8.529820000E2,5.253291311E1 +8.532350000E2,5.201920339E1 +8.535330000E2,5.083296820E1 +8.537750000E2,5.373650683E1 +8.540560000E2,6.162621210E1 +8.543710000E2,6.137876928E1 +8.546190000E2,6.347980201E1 +8.548850000E2,6.480134627E1 +8.551390000E2,6.344943059E1 +8.553830000E2,6.653758852E1 +8.556910000E2,6.821811094E1 +8.559900000E2,6.564040109E1 +8.562480000E2,6.310710880E1 +8.565060000E2,5.625485760E1 +8.567860000E2,5.886920329E1 +8.570590000E2,5.638007706E1 +8.573180000E2,5.477312089E1 +8.576670000E2,5.402637072E1 +8.579310000E2,5.282806817E1 +8.582400000E2,5.743205922E1 +8.584770000E2,5.608834078E1 +8.587730000E2,5.917700537E1 +8.590950000E2,5.757076232E1 +8.593390000E2,5.680975976E1 +8.596110000E2,5.316092446E1 +8.598560000E2,5.634389465E1 +8.601130000E2,5.912558361E1 +8.603880000E2,5.827706684E1 +8.606370000E2,5.580056474E1 +8.609720000E2,5.622551838E1 +8.612190000E2,5.816090597E1 +8.614650000E2,5.710633258E1 +8.617260000E2,6.762679027E1 +8.619970000E2,6.050550643E1 +8.622480000E2,6.017289530E1 +8.624960000E2,5.884551198E1 +8.627510000E2,5.823958631E1 +8.630120000E2,5.747421536E1 +8.632920000E2,5.891926612E1 +8.635810000E2,5.962176090E1 +8.638680000E2,5.932606834E1 +8.642430000E2,6.035939553E1 +8.645920000E2,5.892740034E1 +8.649090000E2,6.158225090E1 +8.651650000E2,5.941856931E1 +8.654560000E2,5.517726055E1 +8.656900000E2,5.573554393E1 +8.659400000E2,6.300977067E1 +8.662170000E2,6.346838855E1 +8.664760000E2,5.840482341E1 +8.667600000E2,5.656477763E1 +8.669980000E2,5.809371706E1 +8.672500000E2,5.957523428E1 +8.675890000E2,5.868790884E1 +8.678670000E2,6.643274765E1 +8.681530000E2,6.202304252E1 +8.684260000E2,6.167390940E1 +8.686760000E2,6.561664622E1 +8.689220000E2,6.221849135E1 +8.691620000E2,5.873701255E1 +8.694080000E2,5.721335717E1 +8.696600000E2,5.775578048E1 +8.699210000E2,6.139190630E1 +8.702060000E2,5.695582014E1 +8.705330000E2,5.285782467E1 +8.708800000E2,5.254436807E1 +8.711320000E2,5.941119733E1 +8.714840000E2,5.561687107E1 +8.717890000E2,5.226341013E1 +8.720340000E2,5.351737673E1 +8.723120000E2,5.581753669E1 +8.725450000E2,5.544476975E1 +8.727930000E2,5.112331517E1 +8.731050000E2,5.669948434E1 +8.733660000E2,5.553741274E1 +8.736450000E2,5.287392842E1 +8.738710000E2,5.342755356E1 +8.742030000E2,5.525376809E1 +8.745760000E2,5.790146612E1 +8.748470000E2,5.775550126E1 +8.750900000E2,5.828043309E1 +8.753860000E2,5.689517506E1 +8.756490000E2,5.836000549E1 +8.759170000E2,5.887049385E1 +8.761640000E2,5.731343570E1 +8.764240000E2,5.947081752E1 +8.766660000E2,5.735732777E1 +8.769150000E2,5.791222148E1 +8.771870000E2,5.217820200E1 +8.775110000E2,5.373516267E1 +8.777550000E2,5.639663701E1 +8.779960000E2,5.308435393E1 +8.782370000E2,5.327040257E1 +8.785510000E2,5.539866825E1 +8.788050000E2,5.451580533E1 +8.791100000E2,5.664888244E1 +8.793670000E2,5.439058144E1 +8.796110000E2,6.546629591E1 +8.799090000E2,6.080313073E1 +8.801560000E2,6.023654065E1 +8.804070000E2,5.547022044E1 +8.807450000E2,5.933402552E1 +8.809880000E2,6.073235462E1 +8.812850000E2,5.811897337E1 +8.815210000E2,5.670873426E1 +8.818240000E2,6.239450766E1 +8.821160000E2,6.033779387E1 +8.823610000E2,5.921328684E1 +8.826600000E2,5.808215882E1 +8.828910000E2,5.927124720E1 +8.831280000E2,5.254346564E1 +8.834120000E2,5.755316817E1 +8.837180000E2,5.815703318E1 +8.840150000E2,5.925974643E1 +8.842610000E2,5.406291788E1 +8.845520000E2,5.892672719E1 +8.847970000E2,6.343231596E1 +8.850390000E2,6.045689612E1 +8.853340000E2,5.903303339E1 +8.855810000E2,5.897514906E1 +8.858230000E2,5.682843230E1 +8.860690000E2,4.647265993E1 +8.863400000E2,5.617216143E1 +8.865730000E2,5.412892937E1 +8.869100000E2,6.210166513E1 +8.872070000E2,6.369099543E1 +8.874540000E2,6.052073025E1 +8.877480000E2,6.125108403E1 +8.879990000E2,6.087163347E1 +8.882550000E2,6.365510666E1 +8.885320000E2,5.341778352E1 +8.887600000E2,5.238943476E1 +8.890050000E2,6.378561240E1 +8.892460000E2,6.182956815E1 +8.895070000E2,6.027537659E1 +8.897770000E2,5.747996426E1 +8.901220000E2,5.606477689E1 +8.903620000E2,5.816493441E1 +8.907030000E2,5.740436721E1 +8.909540000E2,5.812990427E1 +8.912060000E2,5.757163286E1 +8.914520000E2,5.669306215E1 +8.917150000E2,5.593698617E1 +8.919580000E2,5.867011196E1 +8.922060000E2,6.001129970E1 +8.924480000E2,6.247831114E1 +8.927080000E2,5.501506807E1 +8.929550000E2,5.918039480E1 +8.932790000E2,5.750337148E1 +8.935260000E2,5.382626014E1 +8.937850000E2,5.632583646E1 +8.940370000E2,5.552393419E1 +8.943380000E2,5.417609473E1 +8.946050000E2,5.314873345E1 +8.948570000E2,5.537690953E1 +8.951790000E2,6.168371256E1 +8.954540000E2,6.142331687E1 +8.957690000E2,5.914263764E1 +8.960690000E2,6.039127428E1 +8.963670000E2,5.303465172E1 +8.966720000E2,5.819495208E1 +8.969200000E2,5.956457754E1 +8.972240000E2,5.554166388E1 +8.974940000E2,5.700583380E1 +8.978160000E2,5.525596264E1 +8.981210000E2,5.878997726E1 +8.983720000E2,5.661289659E1 +8.986510000E2,6.039909322E1 +8.988730000E2,5.569487247E1 +8.991240000E2,5.857026750E1 +8.993800000E2,6.116905404E1 +8.996580000E2,6.331625006E1 +8.998890000E2,5.612470465E1 +9.001440000E2,5.098243988E1 +9.004020000E2,5.779474181E1 +9.006650000E2,5.597754805E1 +9.009440000E2,5.706395638E1 +9.012380000E2,5.989184595E1 +9.015000000E2,5.905145002E1 +9.017620000E2,5.913397617E1 +9.020230000E2,5.831976398E1 +9.022900000E2,5.400731512E1 +9.025900000E2,6.547285797E1 +9.029050000E2,6.534571775E1 +9.032100000E2,5.428834230E1 +9.034580000E2,4.919896084E1 +9.037180000E2,5.326934205E1 +9.039740000E2,5.135684539E1 +9.042700000E2,5.784030554E1 +9.045180000E2,5.789711892E1 +9.048150000E2,5.501985460E1 +9.050680000E2,5.394185103E1 +9.053920000E2,5.504541187E1 +9.056620000E2,5.574384904E1 +9.059260000E2,5.198297704E1 +9.062920000E2,5.507423148E1 +9.065460000E2,5.073979477E1 +9.068090000E2,5.409355601E1 +9.071500000E2,5.842003605E1 +9.074380000E2,6.323761852E1 +9.076890000E2,5.475142925E1 +9.079510000E2,5.285089191E1 +9.082580000E2,6.228883476E1 +9.085110000E2,6.229139223E1 +9.087590000E2,5.849936549E1 +9.090220000E2,6.382664868E1 +9.092560000E2,5.234586511E1 +9.095720000E2,5.506613760E1 +9.098700000E2,5.883918884E1 +9.101180000E2,5.722745073E1 +9.103980000E2,6.006905181E1 +9.106670000E2,6.333821195E1 +9.109390000E2,5.997503412E1 +9.111770000E2,5.691091005E1 +9.114250000E2,5.629684565E1 +9.117070000E2,5.944947286E1 +9.119370000E2,5.757115704E1 +9.122030000E2,5.617546709E1 +9.125090000E2,5.506166951E1 +9.128480000E2,5.345826069E1 +9.131070000E2,5.586702127E1 +9.133900000E2,6.075354367E1 +9.137040000E2,5.668960998E1 +9.139920000E2,5.584388878E1 +9.142800000E2,5.668519299E1 +9.145740000E2,5.400550993E1 +9.148220000E2,5.668991412E1 +9.150670000E2,5.455006531E1 +9.153720000E2,5.750041942E1 +9.156590000E2,5.756327349E1 +9.159630000E2,5.822694927E1 +9.162110000E2,5.764545771E1 +9.164660000E2,5.716015909E1 +9.167560000E2,5.136001811E1 +9.170200000E2,4.706951064E1 +9.172710000E2,4.999131008E1 +9.175180000E2,5.619976433E1 +9.178030000E2,5.463675948E1 +9.180580000E2,4.995546642E1 +9.183000000E2,5.328928391E1 +9.185570000E2,4.808104957E1 +9.188650000E2,5.411517612E1 +9.191080000E2,5.672946344E1 +9.194270000E2,5.737096863E1 +9.196850000E2,5.974051238E1 +9.199830000E2,5.656564726E1 +9.202340000E2,5.709524531E1 +9.204810000E2,5.408385116E1 +9.208240000E2,5.414410830E1 +9.210650000E2,5.638214177E1 +9.213330000E2,5.753313030E1 +9.216130000E2,5.354803656E1 +9.219120000E2,6.191736419E1 +9.221480000E2,5.734366551E1 +9.224580000E2,5.684475304E1 +9.228030000E2,6.045431811E1 +9.230950000E2,5.973057312E1 +9.233960000E2,5.537690593E1 +9.236620000E2,5.411771801E1 +9.239600000E2,5.513839001E1 +9.242140000E2,5.699753068E1 +9.244670000E2,6.643461088E1 +9.247300000E2,6.062391899E1 +9.250330000E2,5.798096332E1 +9.253240000E2,6.347140522E1 +9.255740000E2,6.166496817E1 +9.259250000E2,6.190058171E1 +9.261820000E2,6.329204590E1 +9.264380000E2,6.389135880E1 +9.267030000E2,5.917517639E1 +9.269480000E2,5.809772267E1 +9.272170000E2,5.733235238E1 +9.274780000E2,5.226841119E1 +9.277860000E2,5.876554483E1 +9.280720000E2,6.281089568E1 +9.283510000E2,5.368859448E1 +9.286400000E2,5.449014251E1 +9.289370000E2,5.589991313E1 +9.292390000E2,5.452044152E1 +9.294860000E2,5.574135623E1 +9.297800000E2,5.656551806E1 +9.300200000E2,5.368800996E1 +9.302990000E2,5.374372369E1 +9.305490000E2,5.520696346E1 +9.308500000E2,5.642038107E1 +9.311480000E2,5.958603376E1 +9.314510000E2,5.775531382E1 +9.316980000E2,5.561486787E1 +9.319610000E2,5.826734748E1 +9.322700000E2,5.604871965E1 +9.325550000E2,5.170668645E1 +9.328670000E2,5.089285684E1 +9.331190000E2,4.724853188E1 +9.333790000E2,4.756075237E1 +9.336260000E2,5.199039629E1 +9.338890000E2,4.980140945E1 +9.341620000E2,5.530081877E1 +9.344120000E2,5.549144740E1 +9.347250000E2,5.515929093E1 +9.349780000E2,5.399104933E1 +9.352760000E2,5.325801117E1 +9.356240000E2,5.040008457E1 +9.359420000E2,5.360316460E1 +9.361890000E2,5.191591881E1 +9.364390000E2,5.324554606E1 +9.366970000E2,5.654671572E1 +9.370100000E2,5.711795620E1 +9.372590000E2,5.478625541E1 +9.375950000E2,5.667621371E1 +9.378550000E2,5.463565976E1 +9.381050000E2,5.398825590E1 +9.383580000E2,5.436030102E1 +9.386390000E2,5.091983440E1 +9.389120000E2,5.286705124E1 +9.391550000E2,5.236775571E1 +9.394300000E2,5.738794921E1 +9.397170000E2,5.727939554E1 +9.399750000E2,6.319402051E1 +9.402560000E2,5.468250624E1 +9.405530000E2,5.641852830E1 +9.408670000E2,6.200700436E1 +9.411390000E2,6.163446308E1 +9.413860000E2,7.148312536E1 +9.416340000E2,6.050927243E1 +9.419040000E2,5.667078757E1 +9.421350000E2,5.749142651E1 +9.424700000E2,5.240604485E1 +9.427760000E2,5.466454134E1 +9.430280000E2,6.082141946E1 +9.433300000E2,6.003969647E1 +9.436110000E2,6.121195378E1 +9.438460000E2,5.625129518E1 +9.441420000E2,5.911131348E1 +9.443880000E2,5.468317436E1 +9.446840000E2,6.009033853E1 +9.449440000E2,5.906624737E1 +9.452490000E2,5.464875325E1 +9.455970000E2,5.384566268E1 +9.458510000E2,5.044039840E1 +9.461140000E2,5.035886237E1 +9.463820000E2,5.734112986E1 +9.466620000E2,5.229112628E1 +9.469690000E2,6.028523542E1 +9.472250000E2,5.837101422E1 +9.475000000E2,5.619491985E1 +9.477970000E2,5.364209552E1 +9.480560000E2,5.511055516E1 +9.483560000E2,5.308396885E1 +9.486650000E2,5.587440008E1 +9.490640000E2,5.273632850E1 +9.493730000E2,6.231816715E1 +9.496570000E2,6.253734875E1 +9.499030000E2,5.554720788E1 +9.501460000E2,5.631566079E1 +9.503970000E2,5.626896653E1 +9.506490000E2,5.691941114E1 +9.508990000E2,5.116659255E1 +9.511440000E2,4.922875084E1 +9.514130000E2,5.936693495E1 +9.517070000E2,5.638156112E1 +9.520200000E2,5.180629212E1 +9.523780000E2,4.998674108E1 +9.526570000E2,4.841587788E1 +9.529100000E2,5.028896526E1 +9.531650000E2,4.965921907E1 +9.534690000E2,4.493319669E1 +9.537260000E2,4.598612712E1 +9.539740000E2,5.276251951E1 +9.542810000E2,4.126037796E1 +9.545830000E2,4.737114191E1 +9.548330000E2,4.411553821E1 +9.550850000E2,4.440050708E1 +9.553840000E2,5.260541790E1 +9.556980000E2,5.273901651E1 +9.559710000E2,5.383409632E1 +9.562220000E2,5.239354977E1 +9.564980000E2,4.759742823E1 +9.568040000E2,5.239869448E1 +9.570530000E2,5.238241691E1 +9.573300000E2,5.227349879E1 +9.575630000E2,5.272394727E1 +9.578410000E2,5.414710772E1 +9.580970000E2,5.325895305E1 +9.583410000E2,5.577122645E1 +9.586370000E2,5.015645058E1 +9.590040000E2,5.173028231E1 +9.593040000E2,5.447959265E1 +9.595640000E2,5.484713415E1 +9.598110000E2,5.470137539E1 +9.601060000E2,5.878769788E1 +9.603740000E2,5.851189839E1 +9.606810000E2,5.400762096E1 +9.609290000E2,5.749049444E1 +9.611870000E2,5.241750519E1 +9.614480000E2,4.979747952E1 +9.616960000E2,5.096881110E1 +9.620030000E2,5.149804171E1 +9.623180000E2,5.481599911E1 +9.625540000E2,5.138365056E1 +9.628240000E2,5.235851031E1 +9.630470000E2,4.871540913E1 +9.632880000E2,5.651540461E1 +9.635860000E2,5.650278128E1 +9.638210000E2,5.704973755E1 +9.641160000E2,5.757712252E1 +9.643960000E2,5.881159691E1 +9.646600000E2,5.355579494E1 +9.649750000E2,5.539751700E1 +9.652910000E2,4.797714339E1 +9.655520000E2,5.082548637E1 +9.658080000E2,5.579830605E1 +9.660780000E2,5.554406278E1 +9.663250000E2,5.354814316E1 +9.665660000E2,5.463107171E1 +9.668090000E2,5.368692433E1 +9.671300000E2,5.364867335E1 +9.674540000E2,5.468973775E1 +9.677060000E2,5.815904844E1 +9.680020000E2,5.598522308E1 +9.682480000E2,5.541083624E1 +9.685850000E2,5.512396132E1 +9.688400000E2,5.530796688E1 +9.691210000E2,5.433954611E1 +9.693810000E2,5.507440645E1 +9.696820000E2,5.086817906E1 +9.699140000E2,5.696191489E1 +9.701640000E2,5.845256581E1 +9.704420000E2,5.620226260E1 +9.706770000E2,5.629047170E1 +9.709750000E2,5.811655252E1 +9.712290000E2,5.703185419E1 +9.714900000E2,5.716734774E1 +9.718450000E2,5.493596869E1 +9.720910000E2,5.909437017E1 +9.723380000E2,5.710675060E1 +9.725910000E2,5.780279559E1 +9.728920000E2,5.860060144E1 +9.731360000E2,6.078900999E1 +9.734260000E2,5.852116194E1 +9.736640000E2,5.905899453E1 +9.739130000E2,5.636299630E1 +9.742090000E2,6.289355999E1 +9.744870000E2,6.167909115E1 +9.747290000E2,6.098057792E1 +9.750690000E2,5.906667343E1 +9.753320000E2,6.018572501E1 +9.756150000E2,5.718512970E1 +9.759100000E2,5.146063018E1 +9.761570000E2,5.733244632E1 +9.764050000E2,5.368365894E1 +9.766600000E2,5.486016267E1 +9.769150000E2,5.908582599E1 +9.771910000E2,5.733773036E1 +9.774400000E2,5.566361416E1 +9.777680000E2,5.819125256E1 +9.781220000E2,5.947694304E1 +9.783640000E2,6.140057637E1 +9.786330000E2,5.721849738E1 +9.788550000E2,5.617504209E1 +9.791010000E2,5.660293849E1 +9.793960000E2,5.174001770E1 +9.796880000E2,5.083474014E1 +9.799290000E2,5.184104339E1 +9.801850000E2,5.025385313E1 +9.804850000E2,5.286605500E1 +9.807270000E2,5.586849562E1 +9.809750000E2,5.666036754E1 +9.812950000E2,5.248500918E1 +9.815810000E2,5.416072977E1 +9.818360000E2,5.799655965E1 +9.821300000E2,5.801841935E1 +9.823770000E2,5.977514968E1 +9.826270000E2,5.676871456E1 +9.828850000E2,5.104814549E1 +9.831730000E2,5.834620153E1 +9.834010000E2,5.660640582E1 +9.836620000E2,5.686451748E1 +9.839750000E2,5.998440952E1 +9.842240000E2,5.556687478E1 +9.846000000E2,5.811069315E1 +9.848430000E2,5.843499893E1 +9.851250000E2,5.180956247E1 +9.853860000E2,5.206236639E1 +9.856480000E2,5.641840701E1 +9.859110000E2,5.518588565E1 +9.861920000E2,5.697237679E1 +9.864550000E2,5.411246614E1 +9.867510000E2,5.214533821E1 +9.869880000E2,5.642389575E1 +9.872440000E2,6.015294933E1 +9.875470000E2,5.809991100E1 +9.879150000E2,6.420044247E1 +9.881610000E2,6.042656173E1 +9.884280000E2,5.938959873E1 +9.886840000E2,6.059888233E1 +9.889870000E2,5.282749720E1 +9.892620000E2,5.638110380E1 +9.895440000E2,4.900409689E1 +9.897740000E2,4.971849802E1 +9.900320000E2,5.061428463E1 +9.903370000E2,5.829922071E1 +9.905860000E2,5.812083213E1 +9.908910000E2,5.500587720E1 +9.911860000E2,5.677481104E1 +9.914380000E2,5.502691141E1 +9.916830000E2,5.294500154E1 +9.919560000E2,5.700444986E1 +9.921770000E2,5.448756275E1 +9.924220000E2,5.785741234E1 +9.927280000E2,5.702180374E1 +9.929670000E2,6.013415875E1 +9.932080000E2,5.533496795E1 +9.934640000E2,5.695301526E1 +9.937440000E2,5.436173732E1 +9.940620000E2,5.092257074E1 +9.944480000E2,4.973000793E1 +9.946940000E2,4.871235512E1 +9.949410000E2,5.171412848E1 +9.951960000E2,5.643245777E1 +9.954520000E2,5.548819002E1 +9.957530000E2,5.694822585E1 +9.960600000E2,5.668072577E1 +9.963110000E2,5.547400320E1 +9.966010000E2,5.667137699E1 +9.968430000E2,5.866196066E1 +9.971120000E2,5.641527163E1 +9.974300000E2,5.505243365E1 +9.977140000E2,5.491253296E1 +9.979940000E2,5.642986287E1 +9.982400000E2,5.111113898E1 +9.985270000E2,5.228293633E1 +9.987770000E2,5.380023266E1 +9.990760000E2,5.259255492E1 +9.993610000E2,5.359948032E1 +9.996550000E2,5.817439497E1 +9.999080000E2,5.712087238E1 +1.000199000E3,6.016800470E1 +1.000435000E3,5.758076017E1 +1.000772000E3,5.328951429E1 +1.001047000E3,5.373102399E1 +1.001303000E3,5.905317642E1 +1.001622000E3,5.478240688E1 +1.001877000E3,5.648896451E1 +1.002173000E3,5.587033976E1 +1.002422000E3,5.995513955E1 +1.002724000E3,6.295760047E1 +1.003003000E3,5.978713154E1 +1.003261000E3,5.669754444E1 +1.003545000E3,5.577942906E1 +1.003827000E3,6.186873273E1 +1.004183000E3,6.253868639E1 +1.004493000E3,5.777226132E1 +1.004770000E3,6.482227668E1 +1.005072000E3,5.923751414E1 +1.005323000E3,5.644465637E1 +1.005601000E3,6.074750234E1 +1.005832000E3,5.683683327E1 +1.006147000E3,5.957418887E1 +1.006418000E3,6.134946851E1 +1.006713000E3,5.641852300E1 +1.006952000E3,5.637674327E1 +1.007310000E3,5.484290206E1 +1.007589000E3,6.426865013E1 +1.007886000E3,5.712036033E1 +1.008127000E3,5.768385080E1 +1.008427000E3,5.812466970E1 +1.008666000E3,6.112344783E1 +1.008973000E3,5.606588478E1 +1.009269000E3,5.809328667E1 +1.009507000E3,5.371315435E1 +1.009763000E3,5.527533595E1 +1.010003000E3,5.390597114E1 +1.010379000E3,5.652035402E1 +1.010658000E3,5.490058638E1 +1.010920000E3,5.927019017E1 +1.011197000E3,5.293113048E1 +1.011458000E3,5.179006266E1 +1.011718000E3,5.366462930E1 +1.011979000E3,5.569421827E1 +1.012229000E3,5.341899104E1 +1.012477000E3,4.863208748E1 +1.012772000E3,6.037154816E1 +1.013036000E3,5.430849576E1 +1.013284000E3,5.735938261E1 +1.013671000E3,5.526482118E1 +1.013957000E3,5.731780297E1 +1.014225000E3,5.205368153E1 +1.014486000E3,5.548863756E1 +1.014733000E3,5.265038263E1 +1.015033000E3,5.986876322E1 +1.015314000E3,5.130643680E1 +1.015590000E3,6.086878634E1 +1.015830000E3,5.798526739E1 +1.016137000E3,6.825745236E1 +1.016387000E3,5.828900876E1 +1.016655000E3,5.873097643E1 +1.017001000E3,6.454090665E1 +1.017329000E3,6.385512775E1 +1.017637000E3,6.691081911E1 +1.017938000E3,6.580217665E1 +1.018229000E3,6.485489311E1 +1.018470000E3,6.387101962E1 +1.018706000E3,6.616835921E1 +1.018997000E3,5.951737331E1 +1.019235000E3,5.386458503E1 +1.019536000E3,5.756977765E1 +1.019801000E3,5.811747841E1 +1.020064000E3,5.930001089E1 +1.020406000E3,5.469664450E1 +1.020673000E3,5.181220980E1 +1.020925000E3,5.483858346E1 +1.021232000E3,5.716842569E1 +1.021527000E3,5.738254897E1 +1.021762000E3,5.628034518E1 +1.022007000E3,5.850971228E1 +1.022258000E3,5.329919175E1 +1.022556000E3,5.482637446E1 +1.022813000E3,5.690503448E1 +1.023071000E3,5.317501594E1 +1.023336000E3,4.870888301E1 +1.023687000E3,6.132281620E1 +1.023965000E3,6.262505101E1 +1.024220000E3,6.180229149E1 +1.024496000E3,6.130993335E1 +1.024741000E3,6.231376381E1 +1.025040000E3,6.164360059E1 +1.025279000E3,5.910065798E1 +1.025533000E3,5.622173801E1 +1.025821000E3,5.290311975E1 +1.026116000E3,5.028293308E1 +1.026403000E3,5.581740437E1 +1.026664000E3,5.988277804E1 +1.027011000E3,5.730548262E1 +1.027305000E3,5.417769573E1 +1.027578000E3,5.250932185E1 +1.027819000E3,5.139919708E1 +1.028128000E3,5.061852216E1 +1.028380000E3,4.722292138E1 +1.028683000E3,5.983070917E1 +1.028956000E3,6.045269830E1 +1.029182000E3,5.777292957E1 +1.029431000E3,5.497807442E1 +1.029734000E3,5.533889528E1 +1.030063000E3,5.373558580E1 +1.030323000E3,5.600729212E1 +1.030620000E3,5.467159629E1 +1.030863000E3,5.246400101E1 +1.031110000E3,5.468037288E1 +1.031367000E3,5.850364516E1 +1.031646000E3,5.490958739E1 +1.031911000E3,5.866929845E1 +1.032210000E3,5.708288591E1 +1.032475000E3,5.498129629E1 +1.032736000E3,5.670272599E1 +1.032986000E3,5.317143219E1 +1.033315000E3,5.758413128E1 +1.033557000E3,6.361635596E1 +1.033846000E3,5.513973379E1 +1.034093000E3,5.215484095E1 +1.034399000E3,5.465926438E1 +1.034684000E3,5.588902955E1 +1.034978000E3,5.387672604E1 +1.035280000E3,5.595327755E1 +1.035543000E3,5.621513504E1 +1.035825000E3,5.991854954E1 +1.036079000E3,5.864640009E1 +1.036322000E3,6.072021936E1 +1.036666000E3,5.462749592E1 +1.036971000E3,5.329083651E1 +1.037264000E3,5.401214501E1 +1.037542000E3,5.242806591E1 +1.037843000E3,5.573267887E1 +1.038091000E3,5.224254554E1 +1.038380000E3,5.453929206E1 +1.038635000E3,5.371826859E1 +1.038891000E3,4.369246898E1 +1.039145000E3,4.547521933E1 +1.039418000E3,4.204639660E1 +1.039750000E3,4.426760298E1 +1.039990000E3,4.955659514E1 +1.040294000E3,4.960859899E1 +1.040560000E3,4.841380220E1 +1.040808000E3,4.914533708E1 +1.041104000E3,4.650609937E1 +1.041370000E3,4.849101938E1 +1.041622000E3,5.065930763E1 +1.041920000E3,4.744161935E1 +1.042161000E3,4.448519483E1 +1.042478000E3,4.726532690E1 +1.042725000E3,4.667923132E1 +1.043042000E3,4.704822757E1 +1.043307000E3,3.950691106E1 +1.043560000E3,5.249697508E1 +1.043835000E3,4.753687679E1 +1.044091000E3,4.843049138E1 +1.044350000E3,5.394643708E1 +1.044644000E3,4.769079035E1 +1.044887000E3,5.111291504E1 +1.045194000E3,5.247298633E1 +1.045445000E3,4.904344971E1 +1.045693000E3,4.405437847E1 +1.045988000E3,4.750888237E1 +1.046301000E3,4.305046000E1 +1.046518000E3,4.630901796E1 +1.046813000E3,4.756289225E1 +1.047053000E3,4.661089273E1 +1.047331000E3,6.143859736E1 +1.047566000E3,5.702483033E1 +1.047860000E3,5.015015196E1 +1.048098000E3,5.180675157E1 +1.048397000E3,4.645218330E1 +1.048640000E3,4.317726503E1 +1.048918000E3,4.962602549E1 +1.049159000E3,4.922447391E1 +1.049523000E3,4.310015818E1 +1.049767000E3,5.584844461E1 +1.050011000E3,5.550466055E1 +1.050294000E3,5.076679182E1 +1.050523000E3,4.777565498E1 +1.050776000E3,5.078379664E1 +1.051031000E3,4.412618688E1 +1.051298000E3,3.933148532E1 +1.051551000E3,4.240994962E1 +1.051799000E3,3.715036539E1 +1.052054000E3,4.541823437E1 +1.052312000E3,3.252240989E1 +1.052661000E3,4.298387800E1 +1.052922000E3,4.065675211E1 +1.053171000E3,3.851226965E1 +1.053417000E3,3.833414863E1 +1.053702000E3,3.734543870E1 +1.053967000E3,4.406198141E1 +1.054269000E3,3.397952572E1 +1.054518000E3,3.018425986E1 +1.054795000E3,2.659023927E1 +1.055055000E3,3.230579484E1 +1.055319000E3,4.027650377E1 +1.055588000E3,3.256611719E1 +1.055936000E3,3.203904394E1 +1.056189000E3,3.024692018E1 +1.056469000E3,4.044611203E1 +1.056698000E3,3.245705712E1 +1.056956000E3,5.087039919E1 +1.057201000E3,5.278557071E1 +1.057507000E3,6.996122129E1 +1.057766000E3,6.951439283E1 +1.058027000E3,6.731609209E1 +1.058291000E3,5.787293958E1 +1.058571000E3,5.774874245E1 +1.058801000E3,5.291748766E1 +1.059132000E3,4.352220528E1 +1.059391000E3,5.556254729E1 +1.059665000E3,5.339220405E1 +1.059951000E3,5.593145301E1 +1.060235000E3,5.299996372E1 +1.060492000E3,4.882317894E1 +1.060733000E3,3.790707311E1 +1.060975000E3,3.470192076E1 +1.061278000E3,4.481563830E1 +1.061519000E3,4.823008935E1 +1.061816000E3,4.719850269E1 +1.062076000E3,4.706381680E1 +1.062331000E3,4.530378435E1 +1.062576000E3,3.456809562E1 +1.062882000E3,3.742453964E1 +1.063154000E3,3.905594906E1 +1.063397000E3,3.672857244E1 +1.063694000E3,2.941779164E1 +1.063926000E3,2.995931983E1 +1.064168000E3,3.455311118E1 +1.064461000E3,3.254662869E1 +1.064708000E3,3.652583843E1 +1.065001000E3,5.229424666E1 +1.065352000E3,5.178814165E1 +1.065606000E3,4.798098259E1 +1.065854000E3,3.636652329E1 +1.066121000E3,4.558252535E1 +1.066366000E3,3.902840121E1 +1.066629000E3,3.106435508E1 +1.066887000E3,2.541330464E1 +1.067179000E3,3.474902335E1 +1.067449000E3,4.492275189E1 +1.067698000E3,3.860211372E1 +1.067955000E3,4.332670525E1 +1.068251000E3,5.147667691E1 +1.068546000E3,5.152069997E1 +1.068797000E3,4.540650098E1 +1.069105000E3,4.486446450E1 +1.069378000E3,4.196481867E1 +1.069632000E3,4.863200791E1 +1.069908000E3,3.878967071E1 +1.070151000E3,3.630888030E1 +1.070413000E3,2.964429880E1 +1.070682000E3,3.354707636E1 +1.070956000E3,4.008490969E1 +1.071248000E3,3.576577653E1 +1.071553000E3,4.349754488E1 +1.071886000E3,3.824859907E1 +1.072130000E3,3.455877689E1 +1.072406000E3,3.622999465E1 +1.072717000E3,3.637608237E1 +1.072984000E3,3.645219519E1 +1.073255000E3,4.353729148E1 +1.073603000E3,4.287473251E1 +1.073856000E3,4.842203791E1 +1.074097000E3,4.484407311E1 +1.074356000E3,4.397007110E1 +1.074628000E3,4.695884235E1 +1.074931000E3,4.627189963E1 +1.075264000E3,4.689571524E1 +1.075614000E3,5.203841291E1 +1.075923000E3,4.610184941E1 +1.076163000E3,4.404432471E1 +1.076475000E3,4.923215011E1 +1.076765000E3,4.466142180E1 +1.077062000E3,4.987282715E1 +1.077375000E3,4.461839454E1 +1.077687000E3,5.085403766E1 +1.077991000E3,4.674512295E1 +1.078232000E3,5.167180279E1 +1.078544000E3,4.780582457E1 +1.078939000E3,4.593914406E1 +1.079187000E3,4.061652220E1 +1.079434000E3,4.347669045E1 +1.079712000E3,4.326983820E1 +1.079966000E3,3.511950991E1 +1.080260000E3,4.755279745E1 +1.080506000E3,4.756343862E1 +1.080756000E3,4.779732167E1 +1.081049000E3,4.991962747E1 +1.081293000E3,5.213887128E1 +1.081586000E3,5.357624469E1 +1.081916000E3,5.141456645E1 +1.082165000E3,5.036532462E1 +1.082460000E3,4.962769973E1 +1.082696000E3,4.506404490E1 +1.082988000E3,4.537987312E1 +1.083220000E3,4.738457007E1 +1.083529000E3,4.698711193E1 +1.083769000E3,4.571430081E1 +1.084079000E3,4.980908007E1 +1.084324000E3,5.082282040E1 +1.084590000E3,5.406004268E1 +1.084876000E3,5.436375886E1 +1.085258000E3,5.361506257E1 +1.085509000E3,5.202937925E1 +1.085815000E3,5.324976969E1 +1.086057000E3,5.371445731E1 +1.086301000E3,5.282162917E1 +1.086550000E3,5.221281857E1 +1.086802000E3,5.263727375E1 +1.087126000E3,5.703022139E1 +1.087384000E3,5.519432869E1 +1.087646000E3,5.426647490E1 +1.087939000E3,5.407342864E1 +1.088175000E3,5.235924404E1 +1.088520000E3,4.681002832E1 +1.088812000E3,4.891237586E1 +1.089076000E3,4.699020733E1 +1.089350000E3,4.902871382E1 +1.089591000E3,5.078145117E1 +1.089837000E3,5.041791921E1 +1.090133000E3,4.603650794E1 +1.090430000E3,4.871755485E1 +1.090660000E3,5.111421073E1 +1.090911000E3,4.581894631E1 +1.091248000E3,4.988189917E1 +1.091630000E3,5.341365920E1 +1.091902000E3,4.962858025E1 +1.092183000E3,4.315344358E1 +1.092440000E3,4.664431132E1 +1.092683000E3,4.616459192E1 +1.092923000E3,4.765071496E1 +1.093171000E3,4.163360687E1 +1.093473000E3,4.537777608E1 +1.093714000E3,4.783603025E1 +1.094007000E3,4.845414260E1 +1.094261000E3,4.799870549E1 +1.094499000E3,4.651309815E1 +1.094792000E3,5.003648984E1 +1.095123000E3,5.202534254E1 +1.095372000E3,5.709400077E1 +1.095625000E3,5.694079106E1 +1.095896000E3,5.715452089E1 +1.096196000E3,5.523378380E1 +1.096438000E3,5.375558627E1 +1.096737000E3,5.665208041E1 +1.096991000E3,5.314654737E1 +1.097292000E3,5.142447849E1 +1.097557000E3,5.330628285E1 +1.097827000E3,5.512040694E1 +1.098167000E3,5.399583122E1 +1.098472000E3,5.540663813E1 +1.098720000E3,5.200546986E1 +1.098960000E3,4.676140326E1 +1.099243000E3,4.798657093E1 +1.099544000E3,4.841724285E1 +1.099804000E3,5.642371618E1 +1.100109000E3,5.409000726E1 +1.100381000E3,5.348646719E1 +1.100630000E3,5.346537578E1 +1.100927000E3,5.422782845E1 +1.101164000E3,5.395323822E1 +1.101495000E3,5.383967560E1 +1.101763000E3,5.667828538E1 +1.102044000E3,4.764690784E1 +1.102307000E3,5.353530254E1 +1.102613000E3,5.568430762E1 +1.102906000E3,5.431580275E1 +1.103147000E3,5.193331555E1 +1.103441000E3,5.040945762E1 +1.103677000E3,5.333005838E1 +1.103968000E3,4.947534745E1 +1.104272000E3,5.306270968E1 +1.104564000E3,5.537230515E1 +1.104799000E3,4.876041085E1 +1.105069000E3,5.109409535E1 +1.105330000E3,5.087734214E1 +1.105587000E3,5.225642483E1 +1.105838000E3,5.176680091E1 +1.106135000E3,5.535939212E1 +1.106380000E3,5.666892185E1 +1.106622000E3,5.658846562E1 +1.106895000E3,5.577897889E1 +1.107150000E3,5.157178717E1 +1.107431000E3,5.284488409E1 +1.107756000E3,5.415639955E1 +1.108002000E3,5.465643057E1 +1.108313000E3,4.654328988E1 +1.108563000E3,5.038890380E1 +1.108811000E3,4.602751738E1 +1.109073000E3,4.801243396E1 +1.109375000E3,4.782472616E1 +1.109667000E3,4.666447221E1 +1.109943000E3,5.156469126E1 +1.110192000E3,4.949682888E1 +1.110448000E3,4.919673339E1 +1.110752000E3,4.862521519E1 +1.111045000E3,5.122379655E1 +1.111295000E3,4.813892217E1 +1.111515000E3,4.901611396E1 +1.111761000E3,4.905664967E1 +1.112005000E3,4.647618514E1 +1.112265000E3,4.730688076E1 +1.112537000E3,5.039121351E1 +1.112793000E3,4.985611957E1 +1.113101000E3,5.474563863E1 +1.113387000E3,5.028870882E1 +1.113678000E3,5.073784750E1 +1.113952000E3,4.995138555E1 +1.114291000E3,4.790039203E1 +1.114554000E3,4.764335594E1 +1.114849000E3,5.057104591E1 +1.115096000E3,5.107398730E1 +1.115401000E3,4.800391913E1 +1.115672000E3,4.553282874E1 +1.115895000E3,4.569523337E1 +1.116194000E3,4.480844215E1 +1.116425000E3,4.772339962E1 +1.116664000E3,5.255452638E1 +1.116906000E3,4.927433934E1 +1.117202000E3,4.871369865E1 +1.117530000E3,4.928110420E1 +1.117840000E3,5.705383563E1 +1.118146000E3,4.880674861E1 +1.118418000E3,5.038180726E1 +1.118687000E3,5.145980404E1 +1.118950000E3,5.338008269E1 +1.119227000E3,5.227728425E1 +1.119468000E3,5.450689216E1 +1.119736000E3,5.844246451E1 +1.120049000E3,5.459398611E1 +1.120351000E3,5.526423567E1 +1.120605000E3,5.228963309E1 +1.120918000E3,5.598288902E1 +1.121182000E3,5.280889802E1 +1.121489000E3,4.974717420E1 +1.121729000E3,5.137523152E1 +1.121978000E3,5.052356297E1 +1.122235000E3,5.240368249E1 +1.122503000E3,4.826380791E1 +1.122775000E3,5.095403791E1 +1.123036000E3,5.799909934E1 +1.123291000E3,4.889512711E1 +1.123587000E3,5.622808486E1 +1.123874000E3,5.230369090E1 +1.124235000E3,5.081102316E1 +1.124544000E3,5.628773803E1 +1.124826000E3,5.810547372E1 +1.125153000E3,5.508029719E1 +1.125432000E3,5.576573503E1 +1.125722000E3,5.346022180E1 +1.125978000E3,5.279748306E1 +1.126234000E3,5.604802053E1 +1.126502000E3,5.937326657E1 +1.126804000E3,5.703447215E1 +1.127047000E3,5.520354594E1 +1.127314000E3,5.551787326E1 +1.127554000E3,5.740837773E1 +1.127843000E3,5.663015330E1 +1.128135000E3,5.649615150E1 +1.128380000E3,5.731556257E1 +1.128677000E3,6.079986861E1 +1.128914000E3,5.820128856E1 +1.129207000E3,6.091746513E1 +1.129442000E3,6.126941240E1 +1.129745000E3,4.541170906E1 +1.129980000E3,4.341485096E1 +1.130277000E3,4.833777967E1 +1.130573000E3,4.472710223E1 +1.130815000E3,5.059675199E1 +1.131062000E3,3.863826940E1 +1.131353000E3,4.925455740E1 +1.131589000E3,4.859989956E1 +1.131881000E3,5.113067908E1 +1.132117000E3,5.054542106E1 +1.132418000E3,4.827479925E1 +1.132654000E3,4.610884488E1 +1.132948000E3,4.879734536E1 +1.133241000E3,5.074680390E1 +1.133563000E3,5.119298220E1 +1.133864000E3,4.861265792E1 +1.134166000E3,5.001512903E1 +1.134452000E3,5.059053464E1 +1.134716000E3,4.999839479E1 +1.134967000E3,4.960069086E1 +1.135222000E3,5.320256888E1 +1.135494000E3,5.604818163E1 +1.135742000E3,5.625768045E1 +1.135999000E3,5.261645024E1 +1.136244000E3,5.105081932E1 +1.136501000E3,5.616444939E1 +1.136847000E3,5.624064264E1 +1.137105000E3,5.654097446E1 +1.137391000E3,5.807884104E1 +1.137717000E3,5.436169891E1 +1.137970000E3,5.763959225E1 +1.138239000E3,5.465216875E1 +1.138486000E3,5.094509116E1 +1.138731000E3,5.425415233E1 +1.138977000E3,5.143709697E1 +1.139259000E3,5.032545705E1 +1.139527000E3,5.906031130E1 +1.139800000E3,5.308709054E1 +1.140168000E3,5.407062541E1 +1.140423000E3,5.585261351E1 +1.140694000E3,5.463535881E1 +1.140949000E3,5.407603664E1 +1.141230000E3,5.495767686E1 +1.141512000E3,5.639433741E1 +1.141818000E3,5.555715330E1 +1.142072000E3,5.729232944E1 +1.142323000E3,5.553013253E1 +1.142578000E3,5.648251207E1 +1.142844000E3,5.786931075E1 +1.143143000E3,6.007493220E1 +1.143523000E3,5.752076543E1 +1.143836000E3,5.573324560E1 +1.144090000E3,5.641950784E1 +1.144396000E3,5.532270625E1 +1.144644000E3,5.561239732E1 +1.144940000E3,5.206707456E1 +1.145212000E3,5.092140902E1 +1.145511000E3,5.452891649E1 +1.145770000E3,5.331137977E1 +1.146042000E3,5.366568195E1 +1.146338000E3,5.227174013E1 +1.146650000E3,5.423955559E1 +1.146934000E3,5.781916580E1 +1.147218000E3,5.532962824E1 +1.147467000E3,5.502661676E1 +1.147687000E3,5.823979674E1 +1.147961000E3,5.538066560E1 +1.148276000E3,5.423260060E1 +1.148528000E3,5.197461977E1 +1.148799000E3,5.154724487E1 +1.149057000E3,5.473685923E1 +1.149367000E3,5.647867848E1 +1.149660000E3,5.489455072E1 +1.150037000E3,6.072892064E1 +1.150335000E3,5.543869835E1 +1.150594000E3,5.667713742E1 +1.150870000E3,5.818755157E1 +1.151164000E3,5.210849760E1 +1.151411000E3,5.095671455E1 +1.151703000E3,5.254983272E1 +1.152002000E3,5.585064224E1 +1.152253000E3,5.739007574E1 +1.152582000E3,5.895179917E1 +1.152860000E3,5.461317681E1 +1.153122000E3,5.345759293E1 +1.153381000E3,5.267971619E1 +1.153684000E3,6.006602205E1 +1.153986000E3,5.573552061E1 +1.154286000E3,5.518963618E1 +1.154531000E3,5.342922095E1 +1.154792000E3,5.257536969E1 +1.155139000E3,4.887945516E1 +1.155435000E3,4.702411688E1 +1.155680000E3,4.867646616E1 +1.155978000E3,4.811861077E1 +1.156361000E3,4.915586406E1 +1.156670000E3,5.033026069E1 +1.156976000E3,5.393908378E1 +1.157274000E3,5.295128205E1 +1.157524000E3,5.249671789E1 +1.157816000E3,5.314344994E1 +1.158052000E3,5.237342933E1 +1.158353000E3,5.300284286E1 +1.158590000E3,5.170068449E1 +1.158867000E3,5.174146304E1 +1.159147000E3,4.929588783E1 +1.159411000E3,5.699090425E1 +1.159752000E3,5.266690351E1 +1.160068000E3,5.746767577E1 +1.160360000E3,5.375850846E1 +1.160640000E3,5.373794020E1 +1.160985000E3,5.304914530E1 +1.161280000E3,5.198754593E1 +1.161525000E3,5.019848207E1 +1.161766000E3,5.164623609E1 +1.162020000E3,5.363319210E1 +1.162324000E3,5.439011044E1 +1.162564000E3,5.304648945E1 +1.162816000E3,5.174573718E1 +1.163177000E3,4.505755779E1 +1.163462000E3,4.894753105E1 +1.163738000E3,5.064933943E1 +1.164013000E3,5.245879056E1 +1.164255000E3,5.017914517E1 +1.164568000E3,5.189205429E1 +1.164823000E3,5.038961444E1 +1.165052000E3,5.072118593E1 +1.165297000E3,4.831662547E1 +1.165552000E3,5.050204887E1 +1.165808000E3,5.308107982E1 +1.166062000E3,4.878509871E1 +1.166392000E3,5.002605106E1 +1.166654000E3,5.320265697E1 +1.166911000E3,4.403273534E1 +1.167180000E3,5.161386051E1 +1.167455000E3,4.986209571E1 +1.167692000E3,4.993305836E1 +1.167973000E3,5.173621365E1 +1.168216000E3,5.385559129E1 +1.168491000E3,5.543019156E1 +1.168757000E3,5.019966657E1 +1.169035000E3,5.569516326E1 +1.169296000E3,5.216419082E1 +1.169676000E3,5.398731996E1 +1.169933000E3,5.465625282E1 +1.170197000E3,5.451774184E1 +1.170449000E3,5.328129322E1 +1.170705000E3,5.452639907E1 +1.170963000E3,5.713735254E1 +1.171272000E3,5.551413923E1 +1.171528000E3,5.604966001E1 +1.171779000E3,5.340478404E1 +1.172038000E3,5.107817821E1 +1.172291000E3,5.218990306E1 +1.172602000E3,4.830451720E1 +1.172964000E3,5.276802164E1 +1.173245000E3,5.191204687E1 +1.173527000E3,5.337367972E1 +1.173838000E3,5.462664550E1 +1.174090000E3,5.304724513E1 +1.174379000E3,5.193251440E1 +1.174628000E3,5.283915893E1 +1.174936000E3,5.036641160E1 +1.175236000E3,4.890810708E1 +1.175487000E3,4.805298565E1 +1.175750000E3,5.067335741E1 +1.176019000E3,4.961207397E1 +1.176335000E3,4.820862314E1 +1.176634000E3,5.328684116E1 +1.176883000E3,5.122009001E1 +1.177165000E3,5.878687770E1 +1.177412000E3,5.487235950E1 +1.177709000E3,5.224569426E1 +1.178006000E3,5.403405997E1 +1.178246000E3,5.388661901E1 +1.178490000E3,5.237426881E1 +1.178734000E3,5.372043820E1 +1.179050000E3,5.471170909E1 +1.179387000E3,5.129350436E1 +1.179686000E3,4.660070824E1 +1.179916000E3,4.541361068E1 +1.180159000E3,4.365576113E1 +1.180466000E3,4.771103553E1 +1.180756000E3,4.863237791E1 +1.181008000E3,5.534959697E1 +1.181314000E3,5.376444060E1 +1.181609000E3,5.130885425E1 +1.181851000E3,5.256948786E1 +1.182151000E3,5.321964637E1 +1.182393000E3,5.074776981E1 +1.182622000E3,4.979941250E1 +1.182873000E3,5.445637667E1 +1.183116000E3,4.449721128E1 +1.183420000E3,5.086906199E1 +1.183676000E3,5.067998506E1 +1.183927000E3,5.352019181E1 +1.184219000E3,4.851971310E1 +1.184517000E3,5.123853013E1 +1.184764000E3,5.278221141E1 +1.185010000E3,5.126409245E1 +1.185297000E3,5.249182764E1 +1.185665000E3,5.346599478E1 +1.185972000E3,5.052250297E1 +1.186225000E3,5.389354916E1 +1.186534000E3,5.372737626E1 +1.186796000E3,5.415645782E1 +1.187048000E3,5.441424865E1 +1.187317000E3,5.470553815E1 +1.187622000E3,5.559990781E1 +1.187913000E3,5.619293356E1 +1.188186000E3,4.869472445E1 +1.188442000E3,5.069948923E1 +1.188718000E3,5.296813397E1 +1.189051000E3,5.015003063E1 +1.189308000E3,5.110938827E1 +1.189570000E3,5.250182053E1 +1.189815000E3,5.240850659E1 +1.190062000E3,5.446862868E1 +1.190368000E3,5.270463767E1 +1.190629000E3,5.117539458E1 +1.190931000E3,5.543767536E1 +1.191207000E3,5.348622922E1 +1.191505000E3,5.112152946E1 +1.191761000E3,4.905277341E1 +1.192068000E3,5.456405848E1 +1.192487000E3,5.016322677E1 +1.192732000E3,4.971711263E1 +1.192976000E3,5.396031961E1 +1.193258000E3,5.018645567E1 +1.193531000E3,4.895586707E1 +1.193790000E3,5.442023654E1 +1.194055000E3,5.160697029E1 +1.194326000E3,4.822365107E1 +1.194605000E3,5.396633777E1 +1.194903000E3,5.031021734E1 +1.195141000E3,5.278015326E1 +1.195431000E3,4.949576105E1 +1.195801000E3,5.244682833E1 +1.196076000E3,5.508575727E1 +1.196371000E3,5.161802747E1 +1.196603000E3,5.716896987E1 +1.196858000E3,5.210002974E1 +1.197207000E3,5.483594793E1 +1.197503000E3,5.204828926E1 +1.197774000E3,5.339169315E1 +1.198054000E3,4.934781945E1 +1.198312000E3,5.918797425E1 +1.198559000E3,5.025254784E1 +1.198808000E3,5.317746302E1 +1.199152000E3,5.656715516E1 +1.199464000E3,5.448426177E1 +1.199717000E3,5.419526565E1 +1.199961000E3,5.304156540E1 +1.200219000E3,4.961182292E1 +1.200480000E3,5.259766625E1 +1.200730000E3,5.295115767E1 +1.201029000E3,5.365389524E1 +1.201288000E3,5.465027972E1 +1.201538000E3,5.131261505E1 +1.201807000E3,5.767453751E1 +1.202112000E3,5.316006082E1 +1.202485000E3,5.263333972E1 +1.202739000E3,4.966297173E1 +1.203041000E3,5.282706501E1 +1.203300000E3,4.950274237E1 +1.203539000E3,4.377779375E1 +1.203832000E3,5.274682795E1 +1.204077000E3,5.348405653E1 +1.204320000E3,5.647600154E1 +1.204615000E3,4.835002395E1 +1.204854000E3,4.440243109E1 +1.205149000E3,4.673035253E1 +1.205410000E3,4.901106802E1 +1.205666000E3,5.311033159E1 +1.205952000E3,5.020567211E1 +1.206248000E3,5.046889058E1 +1.206545000E3,6.150607502E1 +1.206779000E3,5.260331634E1 +1.207093000E3,5.183291791E1 +1.207367000E3,4.957331060E1 +1.207610000E3,5.139200370E1 +1.207857000E3,5.005726187E1 +1.208158000E3,4.979521937E1 +1.208398000E3,5.178137337E1 +1.208738000E3,4.632694184E1 +1.208994000E3,4.836915777E1 +1.209279000E3,4.869228435E1 +1.209528000E3,5.096507040E1 +1.209784000E3,4.718590489E1 +1.210053000E3,4.835967114E1 +1.210281000E3,4.725223201E1 +1.210542000E3,5.172958855E1 +1.210823000E3,5.546336112E1 +1.211051000E3,5.448218663E1 +1.211300000E3,5.371995163E1 +1.211551000E3,4.887559574E1 +1.211926000E3,4.975732945E1 +1.212205000E3,5.041543230E1 +1.212482000E3,4.863959509E1 +1.212730000E3,5.047232348E1 +1.212990000E3,4.824384094E1 +1.213232000E3,5.039377586E1 +1.213493000E3,4.517891187E1 +1.213814000E3,4.686032989E1 +1.214062000E3,4.852263494E1 +1.214337000E3,4.897277606E1 +1.214586000E3,4.662047985E1 +1.214832000E3,5.483925472E1 +1.215143000E3,5.677489998E1 +1.215372000E3,5.470688254E1 +1.215664000E3,5.408747991E1 +1.215962000E3,5.167832591E1 +1.216227000E3,5.463116224E1 +1.216504000E3,5.335564969E1 +1.216747000E3,4.832376612E1 +1.216996000E3,4.918538596E1 +1.217306000E3,5.329611015E1 +1.217618000E3,5.364881155E1 +1.217885000E3,5.087209115E1 +1.218149000E3,4.967310650E1 +1.218497000E3,4.842689624E1 +1.218801000E3,5.442588779E1 +1.219043000E3,5.338467746E1 +1.219349000E3,5.187371665E1 +1.219600000E3,4.992515182E1 +1.219883000E3,5.205809257E1 +1.220161000E3,5.374364962E1 +1.220471000E3,5.145920034E1 +1.220752000E3,5.112774200E1 +1.221009000E3,4.969936214E1 +1.221258000E3,4.906585252E1 +1.221519000E3,4.971022706E1 +1.221873000E3,5.039216656E1 +1.222125000E3,4.735018859E1 +1.222388000E3,5.025223930E1 +1.222647000E3,5.349102952E1 +1.222903000E3,5.894430216E1 +1.223210000E3,5.133834742E1 +1.223464000E3,5.378681025E1 +1.223708000E3,5.646161983E1 +1.223949000E3,5.127610878E1 +1.224189000E3,5.295211205E1 +1.224441000E3,5.074229414E1 +1.224698000E3,5.428527885E1 +1.225064000E3,6.064230054E1 +1.225333000E3,5.545461106E1 +1.225591000E3,5.085263163E1 +1.225847000E3,4.867332677E1 +1.226137000E3,4.828036819E1 +1.226394000E3,5.187031217E1 +1.226668000E3,4.691949774E1 +1.226931000E3,4.605300024E1 +1.227219000E3,4.319091646E1 +1.227493000E3,4.827268256E1 +1.227791000E3,4.873371181E1 +1.228031000E3,4.895629331E1 +1.228388000E3,4.831306026E1 +1.228651000E3,5.150144778E1 +1.228942000E3,5.210555115E1 +1.229190000E3,4.868630793E1 +1.229442000E3,5.072280558E1 +1.229686000E3,5.520857657E1 +1.229933000E3,5.597505745E1 +1.230228000E3,5.309096620E1 +1.230467000E3,5.340491117E1 +1.230765000E3,4.966814228E1 +1.231012000E3,4.811713105E1 +1.231316000E3,5.037869561E1 +1.231666000E3,4.768651081E1 +1.231948000E3,4.577834304E1 +1.232207000E3,4.455407567E1 +1.232510000E3,5.091422235E1 +1.232802000E3,4.990562511E1 +1.233047000E3,5.178152081E1 +1.233344000E3,5.312014577E1 +1.233592000E3,5.002236071E1 +1.233892000E3,5.158473192E1 +1.234173000E3,4.692863129E1 +1.234463000E3,4.643331531E1 +1.234792000E3,4.659156592E1 +1.235060000E3,4.662718910E1 +1.235313000E3,5.204491267E1 +1.235577000E3,5.165973487E1 +1.235837000E3,4.753691687E1 +1.236124000E3,5.179615379E1 +1.236401000E3,4.807409380E1 +1.236654000E3,5.474790946E1 +1.236923000E3,4.946475170E1 +1.237180000E3,4.949471083E1 +1.237426000E3,4.669168363E1 +1.237743000E3,5.529942944E1 +1.238061000E3,5.997488643E1 +1.238363000E3,5.302222406E1 +1.238611000E3,5.022506453E1 +1.238856000E3,4.864145193E1 +1.239102000E3,5.299123845E1 +1.239357000E3,4.682866815E1 +1.239657000E3,4.770894983E1 +1.239902000E3,4.813746372E1 +1.240150000E3,4.571771059E1 +1.240465000E3,5.354012247E1 +1.240765000E3,5.830707734E1 +1.241013000E3,5.483189048E1 +1.241344000E3,5.157405593E1 +1.241606000E3,5.072581437E1 +1.241868000E3,5.137979859E1 +1.242133000E3,4.849261303E1 +1.242396000E3,5.556107710E1 +1.242656000E3,4.958779284E1 +1.242959000E3,5.301548021E1 +1.243232000E3,5.475621292E1 +1.243501000E3,5.660789219E1 +1.243755000E3,5.350018163E1 +1.244010000E3,5.415674835E1 +1.244349000E3,5.699979568E1 +1.244717000E3,5.660044844E1 +1.245015000E3,5.808533709E1 +1.245259000E3,5.881859790E1 +1.245558000E3,5.728882886E1 +1.245808000E3,6.044308225E1 +1.246079000E3,5.893900513E1 +1.246326000E3,5.279872381E1 +1.246637000E3,5.769196864E1 +1.246935000E3,5.963088900E1 +1.247181000E3,5.367341836E1 +1.247508000E3,4.963645506E1 +1.247848000E3,5.265770489E1 +1.248115000E3,5.355743381E1 +1.248359000E3,4.891015342E1 +1.248659000E3,4.819353582E1 +1.248902000E3,4.966403220E1 +1.249199000E3,4.977495696E1 +1.249449000E3,5.715212626E1 +1.249708000E3,5.458337902E1 +1.249983000E3,4.910795823E1 +1.250282000E3,5.184902745E1 +1.250527000E3,5.416053460E1 +1.250777000E3,5.320773170E1 +1.251084000E3,5.422274265E1 +1.251342000E3,5.429456299E1 +1.251602000E3,5.910733722E1 +1.251866000E3,5.226490816E1 +1.252178000E3,5.191466859E1 +1.252452000E3,5.143339371E1 +1.252681000E3,5.066846779E1 +1.252975000E3,4.928639562E1 +1.253256000E3,4.916995298E1 +1.253528000E3,5.115941927E1 +1.253816000E3,4.850268402E1 +1.254063000E3,5.682920937E1 +1.254418000E3,5.583927157E1 +1.254700000E3,5.243405901E1 +1.254947000E3,5.411796563E1 +1.255215000E3,5.538314624E1 +1.255487000E3,5.447026824E1 +1.255748000E3,5.115232974E1 +1.256046000E3,5.273125350E1 +1.256281000E3,5.501639825E1 +1.256559000E3,5.470702619E1 +1.256867000E3,5.330168249E1 +1.257116000E3,5.680033697E1 +1.257361000E3,5.088137081E1 +1.257690000E3,4.771044205E1 +1.257935000E3,5.556188303E1 +1.258189000E3,5.821474305E1 +1.258460000E3,5.913083175E1 +1.258757000E3,5.624840253E1 +1.259001000E3,5.575040009E1 +1.259294000E3,5.295140054E1 +1.259581000E3,5.547885633E1 +1.259831000E3,5.659634167E1 +1.260084000E3,5.552607398E1 +1.260378000E3,5.399987136E1 +1.260676000E3,5.741946227E1 +1.260997000E3,5.622829253E1 +1.261272000E3,5.638519080E1 +1.261569000E3,5.222122782E1 +1.261810000E3,5.168558616E1 +1.262055000E3,5.937417075E1 +1.262351000E3,5.419990938E1 +1.262597000E3,5.469291977E1 +1.262893000E3,5.501007253E1 +1.263142000E3,5.356116387E1 +1.263421000E3,5.643294047E1 +1.263644000E3,5.627927149E1 +1.263964000E3,5.547827797E1 +1.264255000E3,5.434029164E1 +1.264552000E3,5.355134450E1 +1.264791000E3,5.268456483E1 +1.265090000E3,5.304298782E1 +1.265342000E3,5.292557941E1 +1.265637000E3,5.267823535E1 +1.265885000E3,5.076475521E1 +1.266186000E3,5.470463807E1 +1.266480000E3,5.369531663E1 +1.266727000E3,5.321314382E1 +1.267074000E3,5.430022488E1 +1.267386000E3,5.498366079E1 +1.267650000E3,5.373765381E1 +1.267926000E3,5.631680810E1 +1.268156000E3,5.314598601E1 +1.268459000E3,5.446778700E1 +1.268718000E3,5.461487175E1 +1.269029000E3,4.723979401E1 +1.269322000E3,5.050485841E1 +1.269602000E3,5.263446338E1 +1.269914000E3,5.195043172E1 +1.270180000E3,5.361139844E1 +1.270542000E3,5.127785292E1 +1.270796000E3,5.111084292E1 +1.271061000E3,5.030178225E1 +1.271329000E3,4.978955516E1 +1.271616000E3,5.398913319E1 +1.271862000E3,5.537806166E1 +1.272155000E3,5.301545016E1 +1.272407000E3,5.450597504E1 +1.272651000E3,5.090153644E1 +1.272906000E3,5.335437953E1 +1.273148000E3,4.673762491E1 +1.273392000E3,5.062539325E1 +1.273710000E3,5.110756444E1 +1.273960000E3,5.466659884E1 +1.274217000E3,5.158121780E1 +1.274511000E3,5.575560452E1 +1.274759000E3,5.536976579E1 +1.275054000E3,5.425250328E1 +1.275298000E3,5.448034930E1 +1.275544000E3,5.185016662E1 +1.275828000E3,5.206320816E1 +1.276126000E3,5.118466074E1 +1.276376000E3,4.943928704E1 +1.276707000E3,5.090592254E1 +1.276972000E3,5.767487174E1 +1.277251000E3,5.481331862E1 +1.277544000E3,5.385854096E1 +1.277810000E3,5.179333541E1 +1.278097000E3,5.161992279E1 +1.278344000E3,5.248655937E1 +1.278657000E3,5.064236034E1 +1.278927000E3,4.915402835E1 +1.279197000E3,5.321156971E1 +1.279471000E3,5.438812541E1 +1.279734000E3,5.482588411E1 +1.280065000E3,5.157318203E1 +1.280296000E3,5.173449962E1 +1.280546000E3,5.465953878E1 +1.280843000E3,5.457680704E1 +1.281077000E3,5.562152963E1 +1.281325000E3,5.460406982E1 +1.281570000E3,5.232421403E1 +1.281870000E3,5.207576719E1 +1.282135000E3,4.968186040E1 +1.282378000E3,5.237915347E1 +1.282628000E3,4.745539727E1 +1.282877000E3,5.255989147E1 +1.283195000E3,5.301690658E1 +1.283467000E3,5.283539029E1 +1.283717000E3,5.083105477E1 +1.283978000E3,4.559322742E1 +1.284235000E3,4.934435088E1 +1.284538000E3,5.265118466E1 +1.284812000E3,5.302155906E1 +1.285045000E3,5.294725202E1 +1.285352000E3,5.129236762E1 +1.285646000E3,5.402858483E1 +1.285898000E3,5.434527110E1 +1.286189000E3,5.525625388E1 +1.286515000E3,5.653073998E1 +1.286819000E3,5.704731902E1 +1.287101000E3,5.310035962E1 +1.287387000E3,5.474072190E1 +1.287649000E3,5.496979063E1 +1.287925000E3,5.528941101E1 +1.288193000E3,5.394330028E1 +1.288492000E3,4.829171318E1 +1.288740000E3,5.076324605E1 +1.289004000E3,4.673843249E1 +1.289280000E3,5.345749476E1 +1.289584000E3,4.955238815E1 +1.289923000E3,5.268555513E1 +1.290206000E3,5.092762320E1 +1.290445000E3,5.180504716E1 +1.290779000E3,5.421996562E1 +1.291081000E3,5.408565728E1 +1.291322000E3,5.466627749E1 +1.291622000E3,5.247549140E1 +1.291870000E3,5.438915347E1 +1.292125000E3,5.526358440E1 +1.292428000E3,5.407200655E1 +1.292723000E3,5.160593410E1 +1.293035000E3,5.231731426E1 +1.293342000E3,5.126765219E1 +1.293626000E3,4.802016847E1 +1.293922000E3,5.428603515E1 +1.294199000E3,5.305841291E1 +1.294451000E3,5.676250586E1 +1.294738000E3,5.921971496E1 +1.295005000E3,5.812051865E1 +1.295266000E3,5.671365947E1 +1.295512000E3,5.389157640E1 +1.295809000E3,5.417883641E1 +1.296087000E3,5.169085532E1 +1.296408000E3,5.027989141E1 +1.296704000E3,5.801273246E1 +1.296951000E3,5.777618357E1 +1.297241000E3,5.598217178E1 +1.297547000E3,5.590671112E1 +1.297806000E3,6.302454961E1 +1.298073000E3,5.716944646E1 +1.298330000E3,5.693666329E1 +1.298591000E3,5.374930006E1 +1.298851000E3,5.170089530E1 +1.299100000E3,6.243829367E1 +1.299340000E3,5.522680485E1 +1.299673000E3,5.451288060E1 +1.299933000E3,5.720613947E1 +1.300193000E3,5.131457759E1 +1.300510000E3,5.593393786E1 +1.300810000E3,5.344184529E1 +1.301099000E3,5.432320381E1 +1.301355000E3,5.294046944E1 +1.301602000E3,5.330691828E1 +1.301911000E3,4.899471979E1 +1.302175000E3,5.054546621E1 +1.302420000E3,4.914598102E1 +1.302706000E3,5.757950400E1 +1.303045000E3,5.798603958E1 +1.303343000E3,5.685278830E1 +1.303584000E3,5.272645619E1 +1.303869000E3,5.576083132E1 +1.304169000E3,5.311655900E1 +1.304414000E3,5.297304035E1 +1.304724000E3,6.119658997E1 +1.304998000E3,5.921259630E1 +1.305275000E3,5.974785927E1 +1.305567000E3,5.829108198E1 +1.305799000E3,5.656256791E1 +1.306151000E3,5.263150293E1 +1.306475000E3,5.719715846E1 +1.306754000E3,5.746813017E1 +1.307020000E3,6.063794361E1 +1.307320000E3,5.945639283E1 +1.307570000E3,5.898495898E1 +1.307856000E3,5.345744690E1 +1.308127000E3,5.882374416E1 +1.308390000E3,5.704844280E1 +1.308660000E3,6.230218860E1 +1.308982000E3,5.794977886E1 +1.309252000E3,5.609480230E1 +1.309620000E3,5.439173238E1 +1.309924000E3,5.804315704E1 +1.310253000E3,5.898090143E1 +1.310510000E3,5.933785859E1 +1.310826000E3,5.484966867E1 +1.311077000E3,5.841635068E1 +1.311358000E3,5.536029260E1 +1.311601000E3,5.555523834E1 +1.311895000E3,5.637714479E1 +1.312195000E3,5.253312652E1 +1.312445000E3,5.377927694E1 +1.312696000E3,5.757954833E1 +1.313038000E3,5.500733438E1 +1.313282000E3,5.367385274E1 +1.313558000E3,5.610715122E1 +1.313797000E3,5.528556803E1 +1.314063000E3,5.884958532E1 +1.314412000E3,5.458036035E1 +1.314671000E3,5.765344335E1 +1.314945000E3,5.139756723E1 +1.315223000E3,5.546002517E1 +1.315503000E3,5.608276603E1 +1.315733000E3,5.719791479E1 +1.315986000E3,5.413888898E1 +1.316329000E3,5.789500166E1 +1.316579000E3,5.404086097E1 +1.316819000E3,6.021843554E1 +1.317067000E3,5.929690830E1 +1.317365000E3,6.066063258E1 +1.317666000E3,5.465341745E1 +1.317917000E3,5.115712079E1 +1.318169000E3,4.986479689E1 +1.318470000E3,5.351977371E1 +1.318716000E3,5.614277654E1 +1.318987000E3,5.824140620E1 +1.319280000E3,5.863858703E1 +1.319646000E3,5.908977231E1 +1.319902000E3,5.867594430E1 +1.320142000E3,5.256185028E1 +1.320379000E3,5.916248935E1 +1.320672000E3,5.829134786E1 +1.320910000E3,5.729121950E1 +1.321203000E3,5.817253701E1 +1.321434000E3,5.958327052E1 +1.321726000E3,6.109571062E1 +1.321963000E3,6.309400740E1 +1.322263000E3,6.381431561E1 +1.322586000E3,6.124594205E1 +1.322839000E3,6.120886427E1 +1.323128000E3,5.624496406E1 +1.323377000E3,6.205845751E1 +1.323676000E3,6.248705287E1 +1.323968000E3,6.259357777E1 +1.324217000E3,6.168308921E1 +1.324496000E3,6.128297543E1 +1.324731000E3,5.975404370E1 +1.325024000E3,6.147148959E1 +1.325261000E3,6.101142333E1 +1.325573000E3,5.682124874E1 +1.325854000E3,5.869490284E1 +1.326149000E3,5.646663249E1 +1.326392000E3,5.662110608E1 +1.326643000E3,5.067702480E1 +1.326984000E3,5.759763927E1 +1.327264000E3,5.613584630E1 +1.327489000E3,5.826097161E1 +1.327735000E3,5.843702691E1 +1.328012000E3,5.352317094E1 +1.328253000E3,5.737674501E1 +1.328545000E3,5.736811408E1 +1.328911000E3,5.477233671E1 +1.329158000E3,5.481436604E1 +1.329403000E3,4.974322484E1 +1.329645000E3,5.490077996E1 +1.329890000E3,4.870505425E1 +1.330144000E3,4.955972956E1 +1.330428000E3,5.470042727E1 +1.330734000E3,5.618884112E1 +1.331026000E3,5.238151215E1 +1.331265000E3,5.344428978E1 +1.331515000E3,5.051963956E1 +1.331772000E3,5.068574448E1 +1.332120000E3,5.754233113E1 +1.332409000E3,5.498832674E1 +1.332740000E3,5.245036701E1 +1.333034000E3,5.885934606E1 +1.333286000E3,5.644915657E1 +1.333540000E3,5.532779852E1 +1.333784000E3,5.694511409E1 +1.334028000E3,5.553937724E1 +1.334302000E3,5.308286554E1 +1.334615000E3,5.140154995E1 +1.334876000E3,5.045296543E1 +1.335187000E3,5.631993217E1 +1.335451000E3,5.435091016E1 +1.335722000E3,5.624357652E1 +1.335986000E3,5.791043400E1 +1.336271000E3,5.847603086E1 +1.336545000E3,5.757219882E1 +1.336794000E3,6.070042624E1 +1.337072000E3,5.247827017E1 +1.337340000E3,5.208145921E1 +1.337609000E3,6.026756153E1 +1.337870000E3,6.012826199E1 +1.338134000E3,5.465450317E1 +1.338408000E3,5.768658418E1 +1.338755000E3,5.542991210E1 +1.339019000E3,5.279974580E1 +1.339289000E3,4.966927449E1 +1.339556000E3,4.563713389E1 +1.339804000E3,4.961972315E1 +1.340056000E3,5.287436972E1 +1.340316000E3,5.318950925E1 +1.340586000E3,5.037908496E1 +1.340881000E3,5.345184090E1 +1.341116000E3,5.016784238E1 +1.341407000E3,5.799295151E1 +1.341694000E3,5.875659808E1 +1.342051000E3,5.666657228E1 +1.342345000E3,5.241270038E1 +1.342638000E3,5.754780266E1 +1.342875000E3,5.669750570E1 +1.343177000E3,5.541629106E1 +1.343432000E3,5.556249818E1 +1.343726000E3,5.603182587E1 +1.343969000E3,5.961525777E1 +1.344257000E3,5.915223521E1 +1.344498000E3,5.820677933E1 +1.344777000E3,5.815031326E1 +1.345094000E3,5.733094423E1 +1.345363000E3,5.538469317E1 +1.345622000E3,6.270903439E1 +1.345877000E3,5.551461514E1 +1.346148000E3,5.750063996E1 +1.346395000E3,5.473739655E1 +1.346676000E3,5.131350753E1 +1.346958000E3,5.072615719E1 +1.347258000E3,4.882711207E1 +1.347518000E3,5.273988371E1 +1.347784000E3,6.269937361E1 +1.348040000E3,6.058958657E1 +1.348391000E3,5.894445662E1 +1.348716000E3,5.683213923E1 +1.348984000E3,5.875140523E1 +1.349236000E3,5.263650529E1 +1.349491000E3,4.630287352E1 +1.349847000E3,5.742006494E1 +1.350115000E3,6.486179330E1 +1.350358000E3,5.963871460E1 +1.350612000E3,5.220281373E1 +1.350868000E3,5.825229613E1 +1.351125000E3,5.822075100E1 +1.351374000E3,5.487419692E1 +1.351666000E3,5.461361208E1 +1.351934000E3,5.384511910E1 +1.352185000E3,5.782109838E1 +1.352440000E3,5.156901690E1 +1.352688000E3,5.262530942E1 +1.352990000E3,5.827406705E1 +1.353265000E3,6.164230870E1 +1.353493000E3,5.939319367E1 +1.353769000E3,5.491407227E1 +1.353989000E3,5.363390940E1 +1.354236000E3,5.108497673E1 +1.354516000E3,6.129017752E1 +1.354836000E3,5.594784457E1 +1.355095000E3,5.172378417E1 +1.355422000E3,5.975901259E1 +1.355685000E3,5.720857994E1 +1.355941000E3,5.600667557E1 +1.356197000E3,5.471836828E1 +1.356478000E3,5.319452565E1 +1.356745000E3,5.296912594E1 +1.357013000E3,5.811625635E1 +1.357280000E3,5.430511038E1 +1.357577000E3,5.277700001E1 +1.357824000E3,5.616769978E1 +1.358135000E3,5.406396803E1 +1.358401000E3,4.910300122E1 +1.358643000E3,5.077236009E1 +1.358892000E3,5.530877446E1 +1.359206000E3,5.787482939E1 +1.359485000E3,5.846197249E1 +1.359760000E3,6.103303991E1 +1.360055000E3,6.092009186E1 +1.360296000E3,5.979156049E1 +1.360590000E3,6.049263298E1 +1.360828000E3,5.895545308E1 +1.361114000E3,5.611946421E1 +1.361473000E3,5.480295831E1 +1.361726000E3,5.397626184E1 +1.361972000E3,5.443193027E1 +1.362314000E3,5.572591927E1 +1.362560000E3,5.224616115E1 +1.362808000E3,5.244486023E1 +1.363061000E3,5.179430466E1 +1.363307000E3,5.228822629E1 +1.363555000E3,5.248152719E1 +1.363850000E3,5.310816898E1 +1.364115000E3,5.586433987E1 +1.364397000E3,5.735023043E1 +1.364703000E3,6.002405491E1 +1.364950000E3,5.692273216E1 +1.365192000E3,5.941823705E1 +1.365459000E3,5.316793659E1 +1.365709000E3,5.869878442E1 +1.365953000E3,5.756526572E1 +1.366216000E3,5.687574379E1 +1.366491000E3,5.232478004E1 +1.366744000E3,5.424491879E1 +1.367001000E3,5.235481979E1 +1.367305000E3,5.164783122E1 +1.367588000E3,4.924997634E1 +1.367934000E3,4.924339558E1 +1.368196000E3,5.793398832E1 +1.368473000E3,5.529211657E1 +1.368719000E3,5.120874356E1 +1.368963000E3,5.470742612E1 +1.369285000E3,5.560989240E1 +1.369528000E3,5.197646059E1 +1.369822000E3,5.152328490E1 +1.370111000E3,5.791930576E1 +1.370416000E3,5.368811562E1 +1.370672000E3,5.769124019E1 +1.370919000E3,5.333549653E1 +1.371292000E3,5.847056292E1 +1.371551000E3,5.642894477E1 +1.371803000E3,5.817537921E1 +1.372074000E3,5.885584750E1 +1.372335000E3,5.395474736E1 +1.372602000E3,5.211537518E1 +1.372880000E3,4.924374923E1 +1.373126000E3,4.882665291E1 +1.373379000E3,5.483140316E1 +1.373636000E3,5.380197532E1 +1.373915000E3,5.629967483E1 +1.374251000E3,5.773524892E1 +1.374636000E3,6.271253195E1 +1.374894000E3,5.870587143E1 +1.375125000E3,5.496954916E1 +1.375369000E3,5.621931219E1 +1.375641000E3,5.700323462E1 +1.375912000E3,5.808968856E1 +1.376161000E3,5.697587873E1 +1.376437000E3,5.739415600E1 +1.376687000E3,5.874614285E1 +1.376941000E3,5.855325473E1 +1.377252000E3,5.287324040E1 +1.377495000E3,5.331405656E1 +1.377862000E3,5.163612814E1 +1.378109000E3,6.003152631E1 +1.378372000E3,6.448039849E1 +1.378641000E3,6.226927373E1 +1.378912000E3,6.355904277E1 +1.379208000E3,6.121718755E1 +1.379463000E3,6.371699462E1 +1.379738000E3,5.774542440E1 +1.380076000E3,5.579766677E1 +1.380318000E3,5.520595979E1 +1.380614000E3,5.395000262E1 +1.380855000E3,5.263752401E1 +1.381221000E3,5.267030150E1 +1.381492000E3,5.304251562E1 +1.381793000E3,4.959737221E1 +1.382100000E3,5.549829026E1 +1.382347000E3,5.821584994E1 +1.382642000E3,5.861199323E1 +1.382905000E3,5.256382895E1 +1.383164000E3,5.491877459E1 +1.383443000E3,5.644995893E1 +1.383702000E3,5.411249990E1 +1.383954000E3,5.324738213E1 +1.384305000E3,5.625052210E1 +1.384532000E3,6.070474662E1 +1.384789000E3,5.237062704E1 +1.385074000E3,5.442107865E1 +1.385361000E3,6.017483878E1 +1.385605000E3,6.237555822E1 +1.385869000E3,5.605951782E1 +1.386126000E3,6.511151133E1 +1.386382000E3,5.571785683E1 +1.386696000E3,5.398201636E1 +1.386954000E3,5.323734283E1 +1.387264000E3,5.635686029E1 +1.387623000E3,5.701357512E1 +1.387874000E3,5.632095063E1 +1.388187000E3,5.288354031E1 +1.388477000E3,5.152350906E1 +1.388761000E3,5.130627857E1 +1.388982000E3,4.918436870E1 +1.389239000E3,5.567775637E1 +1.389545000E3,5.465238648E1 +1.389786000E3,5.003079725E1 +1.390027000E3,5.504486936E1 +1.390282000E3,5.947272344E1 +1.390539000E3,6.106137952E1 +1.390892000E3,5.985290475E1 +1.391203000E3,5.500825546E1 +1.391507000E3,5.157102239E1 +1.391806000E3,5.517662265E1 +1.392108000E3,5.349243854E1 +1.392411000E3,5.386652866E1 +1.392707000E3,5.258839734E1 +1.392973000E3,5.376638351E1 +1.393221000E3,5.619475880E1 +1.393480000E3,5.846509931E1 +1.393767000E3,6.504346680E1 +1.394122000E3,5.865804348E1 +1.394392000E3,5.055217311E1 +1.394673000E3,4.837306759E1 +1.394931000E3,5.564689750E1 +1.395193000E3,5.416088817E1 +1.395489000E3,5.481584764E1 +1.395781000E3,5.356143065E1 +1.396078000E3,5.074158934E1 +1.396313000E3,5.177896206E1 +1.396618000E3,5.670327312E1 +1.396914000E3,6.043149132E1 +1.397246000E3,5.875453471E1 +1.397559000E3,5.725772305E1 +1.397842000E3,5.610169288E1 +1.398092000E3,6.098127982E1 +1.398354000E3,5.385330985E1 +1.398611000E3,5.345613584E1 +1.398873000E3,6.183897473E1 +1.399135000E3,5.898294985E1 +1.399399000E3,5.644599073E1 +1.399662000E3,6.288338842E1 +1.399923000E3,5.844786233E1 +1.400178000E3,6.145207907E1 +1.400438000E3,5.797678971E1 +1.400786000E3,5.805590691E1 +1.401082000E3,5.956739883E1 +1.401323000E3,5.537900496E1 +1.401618000E3,5.084213917E1 +1.401871000E3,4.807017206E1 +1.402118000E3,5.545233073E1 +1.402411000E3,5.516036366E1 +1.402644000E3,5.413431379E1 +1.402920000E3,5.388857626E1 +1.403209000E3,5.292068844E1 +1.403479000E3,5.775211983E1 +1.403718000E3,5.117484548E1 +1.404045000E3,5.912447648E1 +1.404295000E3,5.591921957E1 +1.404568000E3,5.565028551E1 +1.404828000E3,5.013398992E1 +1.405122000E3,5.465164253E1 +1.405364000E3,5.305211462E1 +1.405620000E3,5.755171154E1 +1.405929000E3,6.007655449E1 +1.406174000E3,5.899920387E1 +1.406463000E3,5.970773629E1 +1.406720000E3,5.770443308E1 +1.407009000E3,5.521297881E1 +1.407407000E3,5.604277064E1 +1.407677000E3,5.646208540E1 +1.407969000E3,4.906112006E1 +1.408239000E3,5.193830101E1 +1.408558000E3,4.835599484E1 +1.408830000E3,4.864558507E1 +1.409087000E3,5.566138381E1 +1.409349000E3,5.240816417E1 +1.409604000E3,4.366169359E1 +1.409843000E3,4.924613485E1 +1.410167000E3,5.289541091E1 +1.410462000E3,5.429333459E1 +1.410857000E3,5.232803186E1 +1.411115000E3,5.279391543E1 +1.411388000E3,5.698112108E1 +1.411689000E3,4.954635028E1 +1.411940000E3,5.347151392E1 +1.412202000E3,5.431542928E1 +1.412461000E3,5.708654506E1 +1.412712000E3,5.999867781E1 +1.412972000E3,5.836713300E1 +1.413243000E3,5.662529411E1 +1.413547000E3,5.760118844E1 +1.413790000E3,5.272334048E1 +1.414155000E3,5.585703000E1 +1.414407000E3,5.277217169E1 +1.414666000E3,5.575617717E1 +1.414970000E3,5.588142009E1 +1.415263000E3,5.043609445E1 +1.415519000E3,5.366091219E1 +1.415818000E3,6.729065738E1 +1.416082000E3,5.454700058E1 +1.416357000E3,5.542836481E1 +1.416608000E3,6.150002805E1 +1.416870000E3,5.918799699E1 +1.417164000E3,5.739551304E1 +1.417548000E3,5.312046747E1 +1.417864000E3,5.735989692E1 +1.418111000E3,5.463708503E1 +1.418368000E3,5.616594485E1 +1.418622000E3,5.674613857E1 +1.418880000E3,5.393284238E1 +1.419178000E3,5.477989298E1 +1.419414000E3,5.673628135E1 +1.419692000E3,5.246670124E1 +1.419935000E3,5.929492524E1 +1.420173000E3,5.718550468E1 +1.420417000E3,5.597503360E1 +1.420745000E3,5.209811810E1 +1.421016000E3,5.108820023E1 +1.421271000E3,5.704928631E1 +1.421524000E3,5.534619134E1 +1.421787000E3,5.298830069E1 +1.422048000E3,5.357926773E1 +1.422324000E3,5.150193558E1 +1.422590000E3,5.236977243E1 +1.422860000E3,5.598534631E1 +1.423111000E3,5.804712890E1 +1.423360000E3,5.584477369E1 +1.423617000E3,6.166819052E1 +1.423956000E3,6.217862533E1 +1.424239000E3,6.474885215E1 +1.424493000E3,6.561094566E1 +1.424771000E3,6.624921272E1 +1.425013000E3,6.269332683E1 +1.425310000E3,6.427501900E1 +1.425550000E3,6.406421996E1 +1.425806000E3,6.561696377E1 +1.426124000E3,5.757984813E1 +1.426392000E3,6.467113265E1 +1.426661000E3,6.110360998E1 +1.426971000E3,6.257935575E1 +1.427325000E3,6.059948571E1 +1.427600000E3,6.060080967E1 +1.427858000E3,6.129065918E1 +1.428157000E3,6.869907238E1 +1.428403000E3,6.216021300E1 +1.428668000E3,6.028715826E1 +1.428917000E3,5.215970407E1 +1.429175000E3,5.348756082E1 +1.429445000E3,5.866879342E1 +1.429775000E3,5.422412762E1 +1.430077000E3,5.967912654E1 +1.430370000E3,6.053958419E1 +1.430696000E3,5.642153628E1 +1.430959000E3,5.797803369E1 +1.431217000E3,5.265853131E1 +1.431545000E3,6.085541328E1 +1.431825000E3,6.579757863E1 +1.432095000E3,6.783858113E1 +1.432356000E3,6.680245969E1 +1.432609000E3,5.699539434E1 +1.432887000E3,5.495476405E1 +1.433146000E3,5.431336982E1 +1.433405000E3,5.468573805E1 +1.433768000E3,6.415525931E1 +1.434037000E3,5.996195649E1 +1.434305000E3,5.880144898E1 +1.434536000E3,5.062803370E1 +1.434794000E3,4.838886892E1 +1.435059000E3,4.852598648E1 +1.435348000E3,5.424758091E1 +1.435611000E3,6.028120001E1 +1.435845000E3,5.860165153E1 +1.436098000E3,5.820116177E1 +1.436348000E3,5.458976108E1 +1.436603000E3,5.748661459E1 +1.436983000E3,5.071157707E1 +1.437230000E3,5.187454119E1 +1.437505000E3,5.690962542E1 +1.437744000E3,5.898297949E1 +1.438006000E3,6.083548120E1 +1.438278000E3,4.929702369E1 +1.438556000E3,5.094464024E1 +1.438857000E3,5.451803318E1 +1.439157000E3,4.851675588E1 +1.439427000E3,4.781325912E1 +1.439724000E3,4.919544886E1 +1.439968000E3,4.662525194E1 +1.440374000E3,4.187537091E1 +1.440620000E3,5.083424523E1 +1.440895000E3,4.476479772E1 +1.441179000E3,5.236126827E1 +1.441495000E3,4.954212438E1 +1.441772000E3,5.444261950E1 +1.442048000E3,5.023278537E1 +1.442273000E3,4.640707667E1 +1.442557000E3,5.088583460E1 +1.442822000E3,5.041471443E1 +1.443067000E3,4.940152653E1 +1.443315000E3,4.834999124E1 +1.443550000E3,5.084173145E1 +1.443802000E3,4.674944421E1 +1.444118000E3,5.005548854E1 +1.444412000E3,4.880222753E1 +1.444695000E3,4.829349493E1 +1.444948000E3,4.815408858E1 +1.445231000E3,4.968297573E1 +1.445471000E3,5.263069989E1 +1.445763000E3,4.570389774E1 +1.446062000E3,4.674284816E1 +1.446364000E3,5.179136771E1 +1.446637000E3,5.007894257E1 +1.446884000E3,5.001285233E1 +1.447102000E3,5.063641057E1 +1.447373000E3,4.164946286E1 +1.447601000E3,3.981108666E1 +1.447894000E3,4.316358072E1 +1.448132000E3,5.465701871E1 +1.448431000E3,4.615144027E1 +1.448672000E3,4.353154230E1 +1.448965000E3,5.208221965E1 +1.449200000E3,5.530439334E1 +1.449496000E3,4.996075498E1 +1.449729000E3,5.218941020E1 +1.450060000E3,4.888890123E1 +1.450335000E3,5.030971329E1 +1.450629000E3,5.012870067E1 +1.450899000E3,4.847297804E1 +1.451151000E3,4.759762696E1 +1.451454000E3,4.978926902E1 +1.451751000E3,4.930919072E1 +1.452001000E3,5.004861581E1 +1.452285000E3,5.051309266E1 +1.452566000E3,4.810890055E1 +1.452826000E3,4.654354865E1 +1.453069000E3,4.761425190E1 +1.453369000E3,4.589508435E1 +1.453616000E3,4.954922405E1 +1.453886000E3,4.065983258E1 +1.454197000E3,4.220647307E1 +1.454513000E3,4.858310714E1 +1.454789000E3,5.196405012E1 +1.455012000E3,5.467685341E1 +1.455262000E3,5.753332593E1 +1.455513000E3,4.707036048E1 +1.455859000E3,3.942826471E1 +1.456237000E3,5.170062203E1 +1.456495000E3,6.022707597E1 +1.456743000E3,5.524301158E1 +1.456990000E3,5.482834451E1 +1.457257000E3,4.917995293E1 +1.457590000E3,4.739340640E1 +1.457831000E3,4.842051754E1 +1.458073000E3,6.166669432E1 +1.458329000E3,5.427876580E1 +1.458617000E3,4.896037674E1 +1.458889000E3,4.346397471E1 +1.459122000E3,4.481546196E1 +1.459424000E3,5.149740630E1 +1.459726000E3,4.614214660E1 +1.459975000E3,4.567227587E1 +1.460237000E3,5.348774305E1 +1.460488000E3,5.617792493E1 +1.460730000E3,5.122937085E1 +1.460971000E3,5.712815616E1 +1.461266000E3,5.592815325E1 +1.461504000E3,5.208026338E1 +1.461798000E3,5.368936290E1 +1.462033000E3,5.424431898E1 +1.462332000E3,5.229538114E1 +1.462686000E3,5.012562607E1 +1.462943000E3,5.517893002E1 +1.463292000E3,5.544440679E1 +1.463574000E3,5.195225561E1 +1.463851000E3,5.582804772E1 +1.464133000E3,5.163717454E1 +1.464392000E3,5.056978371E1 +1.464653000E3,5.085736348E1 +1.464931000E3,5.111025552E1 +1.465171000E3,5.008163028E1 +1.465468000E3,5.204681239E1 +1.465721000E3,4.873162615E1 +1.466070000E3,5.052420662E1 +1.466365000E3,5.115431116E1 +1.466626000E3,5.008089225E1 +1.466902000E3,5.455907242E1 +1.467123000E3,5.881328519E1 +1.467422000E3,5.654049662E1 +1.467665000E3,6.208900398E1 +1.467911000E3,5.573620080E1 +1.468210000E3,5.034178452E1 +1.468461000E3,4.644884091E1 +1.468716000E3,4.489036287E1 +1.469021000E3,4.555962209E1 +1.469437000E3,4.956164087E1 +1.469733000E3,5.014140659E1 +1.469995000E3,5.025508197E1 +1.470298000E3,4.976482928E1 +1.470552000E3,4.666552600E1 +1.470801000E3,5.164800320E1 +1.471107000E3,4.748865751E1 +1.471358000E3,5.068455306E1 +1.471623000E3,5.380657492E1 +1.471874000E3,4.918332364E1 +1.472155000E3,4.974368594E1 +1.472539000E3,5.519550202E1 +1.472795000E3,5.119649457E1 +1.473056000E3,5.406344748E1 +1.473370000E3,5.554928156E1 +1.473655000E3,5.458007948E1 +1.473895000E3,5.519923804E1 +1.474152000E3,5.580016483E1 +1.474437000E3,5.718813696E1 +1.474685000E3,5.734393611E1 +1.474960000E3,5.879862387E1 +1.475221000E3,5.602300215E1 +1.475474000E3,5.025640835E1 +1.475826000E3,5.543439402E1 +1.476071000E3,5.232164352E1 +1.476323000E3,5.898115961E1 +1.476584000E3,6.066467981E1 +1.476821000E3,5.071984472E1 +1.477123000E3,5.740447565E1 +1.477365000E3,5.959782608E1 +1.477662000E3,5.958620190E1 +1.477906000E3,5.753388342E1 +1.478144000E3,5.506848886E1 +1.478455000E3,5.769430513E1 +1.478723000E3,5.629679592E1 +1.478987000E3,5.649495967E1 +1.479262000E3,5.787253729E1 +1.479512000E3,5.216150167E1 +1.479813000E3,4.948302212E1 +1.480088000E3,5.080056078E1 +1.480342000E3,4.734041467E1 +1.480601000E3,4.440736689E1 +1.480866000E3,5.120725270E1 +1.481166000E3,5.053254929E1 +1.481466000E3,5.274685420E1 +1.481724000E3,5.071521067E1 +1.481973000E3,5.225995741E1 +1.482300000E3,5.133897759E1 +1.482575000E3,5.007250383E1 +1.482845000E3,5.042400131E1 +1.483101000E3,5.258901014E1 +1.483408000E3,5.618504625E1 +1.483668000E3,5.503349900E1 +1.483933000E3,4.974702245E1 +1.484194000E3,5.170781389E1 +1.484440000E3,5.072340799E1 +1.484707000E3,5.947536199E1 +1.485018000E3,5.467515596E1 +1.485306000E3,6.085614245E1 +1.485656000E3,5.990152864E1 +1.485935000E3,5.602550586E1 +1.486168000E3,5.561766537E1 +1.486422000E3,5.350876804E1 +1.486701000E3,5.699979875E1 +1.486960000E3,5.177464585E1 +1.487207000E3,5.249766501E1 +1.487486000E3,5.285366750E1 +1.487751000E3,5.316768095E1 +1.488002000E3,4.876639606E1 +1.488262000E3,5.179834313E1 +1.488516000E3,4.991892364E1 +1.488812000E3,5.156353661E1 +1.489125000E3,5.341434219E1 +1.489400000E3,5.426211096E1 +1.489675000E3,4.699672779E1 +1.489958000E3,5.361914521E1 +1.490219000E3,5.605827819E1 +1.490490000E3,5.089547448E1 +1.490772000E3,5.163564337E1 +1.491061000E3,5.841576784E1 +1.491309000E3,5.524417730E1 +1.491589000E3,5.450558122E1 +1.491873000E3,5.581032480E1 +1.492194000E3,5.802352567E1 +1.492448000E3,4.962366630E1 +1.492810000E3,5.873656508E1 +1.493058000E3,5.690804947E1 +1.493359000E3,5.262261274E1 +1.493674000E3,5.584655342E1 +1.493919000E3,5.542283425E1 +1.494163000E3,5.373884310E1 +1.494412000E3,5.084083433E1 +1.494678000E3,4.964027690E1 +1.494956000E3,5.125570040E1 +1.495204000E3,5.194895191E1 +1.495526000E3,4.961412488E1 +1.495784000E3,4.972405818E1 +1.496036000E3,4.777083448E1 +1.496283000E3,5.231556692E1 +1.496593000E3,5.894066851E1 +1.496842000E3,6.007182772E1 +1.497086000E3,6.003234807E1 +1.497358000E3,5.170627362E1 +1.497682000E3,5.564688341E1 +1.497937000E3,5.459086103E1 +1.498234000E3,5.654462748E1 +1.498530000E3,5.643601391E1 +1.498887000E3,5.593732695E1 +1.499182000E3,5.279859883E1 +1.499469000E3,5.063056157E1 +1.499723000E3,4.846330641E1 +1.499972000E3,5.696559719E1 +1.500236000E3,5.806291630E1 +1.500555000E3,5.485435177E1 +1.500851000E3,5.386376671E1 +1.501120000E3,5.529102258E1 +1.501400000E3,5.058415032E1 +1.501675000E3,5.420960743E1 +1.501928000E3,4.962388553E1 +1.502263000E3,5.167692375E1 +1.502567000E3,5.072695334E1 +1.502878000E3,5.319678523E1 +1.503119000E3,5.961199300E1 +1.503369000E3,5.299728366E1 +1.503631000E3,5.369404965E1 +1.503941000E3,5.426817134E1 +1.504209000E3,5.369336762E1 +1.504462000E3,5.246626497E1 +1.504724000E3,5.358557871E1 +1.505015000E3,4.957781391E1 +1.505279000E3,5.117668163E1 +1.505699000E3,5.216401891E1 +1.505963000E3,5.011348657E1 +1.506261000E3,5.259055540E1 +1.506507000E3,4.579432510E1 +1.506795000E3,4.877099475E1 +1.507032000E3,4.679595596E1 +1.507314000E3,5.136222565E1 +1.507549000E3,5.267101191E1 +1.507792000E3,5.244999525E1 +1.508074000E3,5.180561005E1 +1.508391000E3,5.030990700E1 +1.508607000E3,5.167226321E1 +1.508859000E3,5.218207738E1 +1.509151000E3,5.317725961E1 +1.509397000E3,5.318899610E1 +1.509689000E3,4.978257152E1 +1.509934000E3,5.032443800E1 +1.510228000E3,4.777293014E1 +1.510466000E3,4.646316587E1 +1.510767000E3,5.646850943E1 +1.511001000E3,5.638889819E1 +1.511293000E3,5.773758842E1 +1.511610000E3,5.580372922E1 +1.511900000E3,5.517502050E1 +1.512151000E3,5.684013484E1 +1.512393000E3,5.407249321E1 +1.512652000E3,5.725430710E1 +1.512902000E3,5.755876004E1 +1.513148000E3,5.492786930E1 +1.513404000E3,5.665177401E1 +1.513705000E3,5.675683028E1 +1.513957000E3,5.845897420E1 +1.514258000E3,5.334537973E1 +1.514488000E3,5.035361876E1 +1.514812000E3,4.886526824E1 +1.515059000E3,5.555156669E1 +1.515357000E3,5.401240780E1 +1.515600000E3,5.191330713E1 +1.515873000E3,5.158089375E1 +1.516102000E3,5.397456219E1 +1.516410000E3,5.205317520E1 +1.516679000E3,5.689433829E1 +1.516971000E3,5.397466306E1 +1.517230000E3,5.553699481E1 +1.517504000E3,5.550832571E1 +1.517763000E3,5.490604036E1 +1.518130000E3,5.129555301E1 +1.518403000E3,5.478479772E1 +1.518670000E3,5.687403653E1 +1.518921000E3,5.464295853E1 +1.519177000E3,5.713561839E1 +1.519461000E3,5.306473622E1 +1.519745000E3,5.320579073E1 +1.520002000E3,5.309385307E1 +1.520258000E3,5.058967996E1 +1.520552000E3,5.470724085E1 +1.520793000E3,5.303104936E1 +1.521156000E3,5.432496893E1 +1.521453000E3,5.594215604E1 +1.521721000E3,5.308545736E1 +1.521969000E3,5.327888421E1 +1.522220000E3,5.030915333E1 +1.522490000E3,5.230098434E1 +1.522776000E3,4.743827766E1 +1.523026000E3,5.464211349E1 +1.523327000E3,5.322537523E1 +1.523581000E3,5.154569729E1 +1.523826000E3,5.335950152E1 +1.524133000E3,5.482016506E1 +1.524417000E3,5.825411535E1 +1.524853000E3,5.879893849E1 +1.525179000E3,5.728744863E1 +1.525433000E3,5.737571640E1 +1.525696000E3,5.681107869E1 +1.525950000E3,5.695921586E1 +1.526210000E3,5.455429607E1 +1.526487000E3,5.808007225E1 +1.526729000E3,5.500512440E1 +1.527042000E3,5.476260812E1 +1.527339000E3,5.849962899E1 +1.527579000E3,5.719021529E1 +1.527910000E3,5.422226824E1 +1.528160000E3,5.266147572E1 +1.528411000E3,5.030747323E1 +1.528675000E3,5.057502492E1 +1.528920000E3,5.365292462E1 +1.529175000E3,5.444435151E1 +1.529423000E3,5.586906556E1 +1.529732000E3,5.808239082E1 +1.530030000E3,5.492304678E1 +1.530283000E3,5.727734117E1 +1.530542000E3,5.518682809E1 +1.530805000E3,5.838179726E1 +1.531133000E3,5.619103982E1 +1.531448000E3,5.705771680E1 +1.531738000E3,5.605732573E1 +1.531987000E3,5.497746164E1 +1.532293000E3,5.570350387E1 +1.532602000E3,5.687942595E1 +1.532873000E3,5.590365459E1 +1.533132000E3,5.379832162E1 +1.533387000E3,5.951317374E1 +1.533654000E3,5.728034638E1 +1.533915000E3,5.755019099E1 +1.534163000E3,5.625336618E1 +1.534512000E3,5.560455999E1 +1.534783000E3,5.186395468E1 +1.535086000E3,6.018952062E1 +1.535379000E3,5.360739703E1 +1.535619000E3,5.637744941E1 +1.535916000E3,5.710534601E1 +1.536153000E3,5.751101039E1 +1.536449000E3,5.888699469E1 +1.536688000E3,5.900809640E1 +1.536983000E3,5.539354346E1 +1.537218000E3,5.212761926E1 +1.537514000E3,6.113968309E1 +1.537773000E3,5.789795306E1 +1.538038000E3,6.065119472E1 +1.538356000E3,5.715251587E1 +1.538607000E3,5.728294892E1 +1.538911000E3,5.939537878E1 +1.539175000E3,5.879010449E1 +1.539417000E3,6.007594674E1 +1.539661000E3,5.983742076E1 +1.539908000E3,6.299497704E1 +1.540182000E3,6.042347696E1 +1.540457000E3,5.844914903E1 +1.540758000E3,5.775362746E1 +1.541037000E3,5.216165265E1 +1.541334000E3,5.255584969E1 +1.541593000E3,5.278098471E1 +1.541846000E3,5.581770981E1 +1.542092000E3,5.736301867E1 +1.542389000E3,5.733951694E1 +1.542623000E3,5.674705381E1 +1.542880000E3,5.506043774E1 +1.543125000E3,5.404728252E1 +1.543453000E3,5.428884791E1 +1.543732000E3,5.547580162E1 +1.544085000E3,5.471747417E1 +1.544346000E3,5.496243571E1 +1.544613000E3,5.288395526E1 +1.544860000E3,5.036194227E1 +1.545111000E3,5.124283852E1 +1.545413000E3,5.731432515E1 +1.545687000E3,5.663908688E1 +1.545955000E3,5.741659811E1 +1.546253000E3,5.084604561E1 +1.546502000E3,5.163330463E1 +1.546772000E3,4.777378739E1 +1.547025000E3,5.200725426E1 +1.547353000E3,5.049690945E1 +1.547625000E3,5.284766124E1 +1.547924000E3,5.396462244E1 +1.548148000E3,5.375524192E1 +1.548403000E3,5.670544075E1 +1.548716000E3,5.332369727E1 +1.548963000E3,5.544219871E1 +1.549238000E3,5.323430806E1 +1.549471000E3,5.180674965E1 +1.549727000E3,5.329467652E1 +1.550023000E3,5.080742485E1 +1.550310000E3,5.026906170E1 +1.550639000E3,5.582908231E1 +1.550905000E3,5.331150300E1 +1.551172000E3,5.186910180E1 +1.551471000E3,5.624561668E1 +1.551739000E3,5.555744845E1 +1.552012000E3,5.944044312E1 +1.552264000E3,6.002272858E1 +1.552531000E3,5.816546804E1 +1.552850000E3,5.936846960E1 +1.553097000E3,5.514794057E1 +1.553401000E3,5.160130424E1 +1.553757000E3,5.107783990E1 +1.554023000E3,5.871375450E1 +1.554276000E3,5.617325190E1 +1.554544000E3,5.736189521E1 +1.554800000E3,5.317828333E1 +1.555051000E3,5.715279916E1 +1.555321000E3,5.726931658E1 +1.555563000E3,5.567771069E1 +1.555823000E3,5.156101336E1 +1.556126000E3,5.688446569E1 +1.556378000E3,6.074118939E1 +1.556642000E3,5.974958265E1 +1.556918000E3,5.702757711E1 +1.557208000E3,5.874442787E1 +1.557457000E3,5.795683904E1 +1.557722000E3,6.039916355E1 +1.558025000E3,5.662755924E1 +1.558320000E3,5.332514547E1 +1.558595000E3,6.059700286E1 +1.558850000E3,5.775207016E1 +1.559098000E3,6.106988435E1 +1.559349000E3,6.039494527E1 +1.559644000E3,5.672405799E1 +1.559889000E3,5.814375710E1 +1.560135000E3,6.159401746E1 +1.560480000E3,5.397583636E1 +1.560770000E3,5.291692280E1 +1.561026000E3,5.439035965E1 +1.561320000E3,5.553984968E1 +1.561619000E3,5.808332247E1 +1.561927000E3,5.744100555E1 +1.562191000E3,5.636250023E1 +1.562451000E3,6.055150308E1 +1.562703000E3,5.624161562E1 +1.562979000E3,5.401048000E1 +1.563233000E3,5.588901558E1 +1.563595000E3,6.020828902E1 +1.563855000E3,6.586197618E1 +1.564143000E3,5.744692826E1 +1.564421000E3,5.175273280E1 +1.564681000E3,5.584828423E1 +1.564939000E3,5.622472521E1 +1.565190000E3,5.419184381E1 +1.565447000E3,4.818775863E1 +1.565701000E3,5.443344746E1 +1.565956000E3,4.960344337E1 +1.566224000E3,6.289868185E1 +1.566469000E3,6.499026885E1 +1.566794000E3,6.277031329E1 +1.567086000E3,5.336636778E1 +1.567405000E3,5.867761918E1 +1.567644000E3,5.135518394E1 +1.567909000E3,5.665720126E1 +1.568204000E3,5.915910399E1 +1.568455000E3,5.687790668E1 +1.568730000E3,5.815647569E1 +1.568976000E3,5.595761669E1 +1.569238000E3,5.367288589E1 +1.569491000E3,4.954593185E1 +1.569752000E3,5.199120702E1 +1.570099000E3,5.857172858E1 +1.570354000E3,5.533510860E1 +1.570614000E3,5.615291914E1 +1.570871000E3,4.816531300E1 +1.571136000E3,4.597509459E1 +1.571387000E3,5.454256971E1 +1.571722000E3,5.262076426E1 +1.572010000E3,5.108681545E1 +1.572285000E3,5.269091247E1 +1.572547000E3,4.898785412E1 +1.572807000E3,4.867008841E1 +1.573066000E3,5.306545801E1 +1.573313000E3,5.092331160E1 +1.573694000E3,5.549117670E1 +1.574009000E3,5.304099104E1 +1.574279000E3,5.377011563E1 +1.574520000E3,5.244694975E1 +1.574770000E3,5.542353961E1 +1.575031000E3,5.327330735E1 +1.575319000E3,5.123065406E1 +1.575617000E3,5.429517947E1 +1.575867000E3,5.443507599E1 +1.576132000E3,5.273613947E1 +1.576382000E3,5.717979407E1 +1.576705000E3,5.184816589E1 +1.576955000E3,4.851208329E1 +1.577250000E3,4.976440939E1 +1.577493000E3,5.236737582E1 +1.577737000E3,5.414723297E1 +1.577998000E3,5.490706774E1 +1.578342000E3,5.591011545E1 +1.578650000E3,5.689754115E1 +1.578906000E3,5.680987850E1 +1.579148000E3,5.379415708E1 +1.579394000E3,5.844713665E1 +1.579644000E3,4.927798375E1 +1.580006000E3,5.263100090E1 +1.580294000E3,5.410513055E1 +1.580548000E3,5.541047194E1 +1.580801000E3,5.058665778E1 +1.581070000E3,5.191468462E1 +1.581349000E3,4.623838572E1 +1.581601000E3,4.883886927E1 +1.581851000E3,4.951159763E1 +1.582152000E3,5.372806241E1 +1.582461000E3,4.077427406E1 +1.582742000E3,4.089897224E1 +1.582967000E3,4.661834708E1 +1.583330000E3,4.498181641E1 +1.583574000E3,4.413204165E1 +1.583835000E3,4.830731952E1 +1.584102000E3,5.133890730E1 +1.584385000E3,5.327819620E1 +1.584689000E3,5.148788947E1 +1.584935000E3,5.259351261E1 +1.585217000E3,5.210912674E1 +1.585449000E3,5.375523399E1 +1.585710000E3,5.030792675E1 +1.585957000E3,5.116594607E1 +1.586271000E3,5.729332409E1 +1.586601000E3,5.372439258E1 +1.586868000E3,5.283683191E1 +1.587111000E3,5.261490358E1 +1.587371000E3,5.394382083E1 +1.587617000E3,5.362104804E1 +1.587861000E3,5.192909002E1 +1.588111000E3,5.534291684E1 +1.588356000E3,5.529045875E1 +1.588616000E3,5.723903943E1 +1.588878000E3,5.769467674E1 +1.589116000E3,5.686991669E1 +1.589367000E3,5.472851050E1 +1.589709000E3,5.509501284E1 +1.589971000E3,6.218794924E1 +1.590276000E3,5.544714813E1 +1.590522000E3,5.587492513E1 +1.590770000E3,6.310127100E1 +1.591031000E3,6.016601681E1 +1.591331000E3,5.868635044E1 +1.591588000E3,5.739907262E1 +1.591847000E3,5.500154159E1 +1.592105000E3,5.382353142E1 +1.592358000E3,5.235465349E1 +1.592660000E3,5.432444683E1 +1.592979000E3,5.583837344E1 +1.593280000E3,5.890777444E1 +1.593531000E3,6.247008348E1 +1.593777000E3,5.524440051E1 +1.594082000E3,6.039849382E1 +1.594376000E3,5.779880973E1 +1.594616000E3,6.006977904E1 +1.594916000E3,6.157791897E1 +1.595158000E3,5.727348505E1 +1.595456000E3,6.219777130E1 +1.595702000E3,6.333776727E1 +1.596011000E3,6.315243887E1 +1.596287000E3,5.622487117E1 +1.596582000E3,4.999384026E1 +1.596838000E3,6.052096287E1 +1.597136000E3,5.730636753E1 +1.597383000E3,5.672770046E1 +1.597632000E3,5.282894107E1 +1.597943000E3,5.609826115E1 +1.598240000E3,5.950608691E1 +1.598483000E3,5.262580449E1 +1.598777000E3,5.638403375E1 +1.599039000E3,5.695994656E1 +1.599354000E3,5.595638462E1 +1.599677000E3,5.456948793E1 +1.599955000E3,5.641745933E1 +1.600254000E3,5.373490010E1 +1.600541000E3,5.613295480E1 +1.600824000E3,5.295628543E1 +1.601071000E3,5.036371368E1 +1.601313000E3,5.734560753E1 +1.601585000E3,5.869799540E1 +1.601832000E3,5.689867309E1 +1.602079000E3,5.521901034E1 +1.602376000E3,5.958743796E1 +1.602630000E3,5.697555749E1 +1.602881000E3,6.067520996E1 +1.603136000E3,6.296730837E1 +1.603381000E3,6.302345663E1 +1.603674000E3,5.614231839E1 +1.603920000E3,5.471880748E1 +1.604179000E3,6.025548138E1 +1.604432000E3,5.848975602E1 +1.604677000E3,6.051353275E1 +1.604988000E3,6.061163824E1 +1.605287000E3,5.127173554E1 +1.605535000E3,5.271948405E1 +1.605890000E3,5.457177629E1 +1.606143000E3,5.047420148E1 +1.606392000E3,5.197178768E1 +1.606684000E3,5.635777628E1 +1.606927000E3,5.691931577E1 +1.607165000E3,5.135114371E1 +1.607440000E3,5.173034620E1 +1.607734000E3,5.786109434E1 +1.607974000E3,5.620528212E1 +1.608236000E3,5.432552885E1 +1.608507000E3,5.036034087E1 +1.608763000E3,4.872303481E1 +1.609123000E3,5.516764205E1 +1.609377000E3,5.867465981E1 +1.609624000E3,5.634077767E1 +1.609869000E3,5.153316916E1 +1.610150000E3,5.212022412E1 +1.610428000E3,5.727395868E1 +1.610681000E3,5.443759521E1 +1.610944000E3,5.599199613E1 +1.611242000E3,5.709063131E1 +1.611495000E3,5.747461955E1 +1.611762000E3,5.445378087E1 +1.612040000E3,5.178206799E1 +1.612294000E3,5.347146008E1 +1.612548000E3,5.695533984E1 +1.612791000E3,5.852885666E1 +1.613050000E3,5.349710519E1 +1.613354000E3,5.482274130E1 +1.613598000E3,5.580201302E1 +1.613898000E3,5.533013655E1 +1.614151000E3,5.307302798E1 +1.614404000E3,5.034267096E1 +1.614651000E3,5.096368681E1 +1.614959000E3,5.358615730E1 +1.615202000E3,5.402822959E1 +1.615565000E3,5.173226008E1 +1.615815000E3,5.317238447E1 +1.616120000E3,5.490271856E1 +1.616406000E3,5.760350961E1 +1.616712000E3,5.516631401E1 +1.616950000E3,5.344247717E1 +1.617197000E3,5.105574764E1 +1.617480000E3,5.297874749E1 +1.617726000E3,5.181083735E1 +1.617978000E3,5.504462581E1 +1.618236000E3,5.652623382E1 +1.618484000E3,5.850281135E1 +1.618804000E3,5.207268405E1 +1.619061000E3,4.595989093E1 +1.619309000E3,5.832875112E1 +1.619574000E3,5.691639889E1 +1.619831000E3,5.277897330E1 +1.620092000E3,5.634285556E1 +1.620390000E3,5.782897026E1 +1.620660000E3,6.167326244E1 +1.620905000E3,5.736569246E1 +1.621145000E3,6.422841213E1 +1.621400000E3,6.037316593E1 +1.621649000E3,5.869946609E1 +1.622005000E3,6.007663283E1 +1.622308000E3,5.750286676E1 +1.622551000E3,5.315958033E1 +1.622849000E3,5.996646537E1 +1.623085000E3,6.310656156E1 +1.623382000E3,6.410911411E1 +1.623620000E3,6.559322950E1 +1.623914000E3,6.191537215E1 +1.624148000E3,6.509401862E1 +1.624441000E3,6.149444047E1 +1.624676000E3,5.887830140E1 +1.624914000E3,5.333395699E1 +1.625242000E3,5.080509527E1 +1.625531000E3,5.208999136E1 +1.625827000E3,4.936268455E1 +1.626072000E3,4.620940228E1 +1.626384000E3,4.812346411E1 +1.626678000E3,5.508818133E1 +1.626931000E3,5.929414420E1 +1.627193000E3,5.798382987E1 +1.627446000E3,5.695027340E1 +1.627690000E3,6.200547811E1 +1.627940000E3,5.895921781E1 +1.628278000E3,5.832121877E1 +1.628595000E3,5.727506493E1 +1.628914000E3,5.676841787E1 +1.629164000E3,5.904549933E1 +1.629453000E3,6.079247221E1 +1.629705000E3,5.978532207E1 +1.629973000E3,6.204876077E1 +1.630223000E3,6.278691878E1 +1.630527000E3,5.775584326E1 +1.630780000E3,5.715423799E1 +1.631076000E3,5.993810238E1 +1.631416000E3,5.945816984E1 +1.631690000E3,5.911038375E1 +1.631989000E3,6.401318161E1 +1.632251000E3,6.288325429E1 +1.632577000E3,6.142114348E1 +1.632857000E3,6.027735545E1 +1.633125000E3,6.058800698E1 +1.633410000E3,6.197295377E1 +1.633713000E3,5.649410931E1 +1.633983000E3,5.349526422E1 +1.634267000E3,5.160473432E1 +1.634550000E3,5.471426263E1 +1.634881000E3,5.381566790E1 +1.635145000E3,5.592472168E1 +1.635394000E3,5.502963456E1 +1.635636000E3,5.458091777E1 +1.635914000E3,5.361113418E1 +1.636211000E3,5.972112366E1 +1.636510000E3,6.134956919E1 +1.636770000E3,6.291498703E1 +1.637018000E3,6.051799303E1 +1.637272000E3,5.800319143E1 +1.637535000E3,6.099184952E1 +1.637791000E3,6.192072936E1 +1.638191000E3,5.592689657E1 +1.638462000E3,5.015193522E1 +1.638759000E3,5.662906295E1 +1.638997000E3,6.189212385E1 +1.639312000E3,5.656112303E1 +1.639618000E3,5.827187766E1 +1.639922000E3,5.894515280E1 +1.640188000E3,5.379936676E1 +1.640446000E3,5.498271927E1 +1.640705000E3,5.883708769E1 +1.641003000E3,5.515786146E1 +1.641329000E3,5.323855564E1 +1.641593000E3,5.000482182E1 +1.641876000E3,5.182077324E1 +1.642101000E3,5.319082569E1 +1.642344000E3,6.611850928E1 +1.642626000E3,5.190424983E1 +1.642867000E3,5.081734830E1 +1.643118000E3,5.711045841E1 +1.643458000E3,5.520016906E1 +1.643723000E3,5.247062228E1 +1.643997000E3,5.309157546E1 +1.644256000E3,5.339769460E1 +1.644621000E3,5.982216134E1 +1.644883000E3,5.915424673E1 +1.645133000E3,5.849263499E1 +1.645426000E3,5.826666974E1 +1.645723000E3,5.673329902E1 +1.645972000E3,5.580417722E1 +1.646244000E3,5.457004449E1 +1.646473000E3,5.835958867E1 +1.646716000E3,5.599398637E1 +1.646958000E3,5.928075116E1 +1.647232000E3,5.394053714E1 +1.647507000E3,5.853879118E1 +1.647858000E3,5.674494648E1 +1.648113000E3,5.640074652E1 +1.648414000E3,5.694867796E1 +1.648656000E3,5.573466688E1 +1.648962000E3,5.556104957E1 +1.649254000E3,5.770712773E1 +1.649548000E3,5.765349227E1 +1.649790000E3,5.583875333E1 +1.650054000E3,6.321152276E1 +1.650306000E3,5.966047080E1 +1.650600000E3,5.502015578E1 +1.650872000E3,5.066616477E1 +1.651172000E3,5.442335496E1 +1.651440000E3,5.956947456E1 +1.651736000E3,5.798320450E1 +1.651979000E3,5.739040713E1 +1.652228000E3,5.803662120E1 +1.652491000E3,6.146613872E1 +1.652750000E3,5.929116619E1 +1.653021000E3,5.936282359E1 +1.653288000E3,5.853226920E1 +1.653570000E3,5.954415072E1 +1.653872000E3,5.749576278E1 +1.654250000E3,5.567111200E1 +1.654518000E3,6.059415807E1 +1.654812000E3,5.855300274E1 +1.655081000E3,5.797601107E1 +1.655350000E3,6.029475669E1 +1.655647000E3,5.264118678E1 +1.655893000E3,5.715075800E1 +1.656153000E3,5.787679223E1 +1.656407000E3,6.038334743E1 +1.656655000E3,6.038245752E1 +1.656912000E3,5.475945603E1 +1.657171000E3,5.661674174E1 +1.657473000E3,5.618877186E1 +1.657717000E3,5.712918740E1 +1.657972000E3,5.834783502E1 +1.658283000E3,6.198115012E1 +1.658526000E3,5.639977894E1 +1.658788000E3,5.416850689E1 +1.659089000E3,5.679686188E1 +1.659335000E3,5.697270686E1 +1.659619000E3,5.371836804E1 +1.659873000E3,6.082252986E1 +1.660120000E3,6.285201132E1 +1.660416000E3,6.088574857E1 +1.660728000E3,6.109109391E1 +1.661004000E3,5.861240224E1 +1.661283000E3,6.123850168E1 +1.661519000E3,5.849447684E1 +1.661821000E3,5.472352136E1 +1.662065000E3,5.502625911E1 +1.662312000E3,5.606436387E1 +1.662565000E3,5.546236927E1 +1.662845000E3,6.075823181E1 +1.663075000E3,5.951357638E1 +1.663350000E3,5.956681026E1 +1.663575000E3,5.780116333E1 +1.663928000E3,6.184122024E1 +1.664178000E3,5.626291699E1 +1.664419000E3,5.635545931E1 +1.664671000E3,5.487242490E1 +1.664936000E3,5.392872477E1 +1.665237000E3,5.658170902E1 +1.665476000E3,5.449322435E1 +1.665752000E3,5.111063749E1 +1.665997000E3,5.288359358E1 +1.666249000E3,5.825102048E1 +1.666508000E3,6.087585373E1 +1.666750000E3,5.822210598E1 +1.667110000E3,6.320270923E1 +1.667355000E3,5.563170163E1 +1.667628000E3,5.240635194E1 +1.667875000E3,5.485055122E1 +1.668144000E3,5.590209292E1 +1.668402000E3,5.750031923E1 +1.668648000E3,5.301598344E1 +1.668896000E3,5.208077776E1 +1.669157000E3,5.024112467E1 +1.669414000E3,5.530220423E1 +1.669710000E3,5.585178295E1 +1.669955000E3,5.443268015E1 +1.670292000E3,5.292974908E1 +1.670566000E3,5.501741168E1 +1.670818000E3,5.190433464E1 +1.671077000E3,5.602388651E1 +1.671384000E3,5.384205522E1 +1.671688000E3,5.355394771E1 +1.671956000E3,4.896600257E1 +1.672212000E3,4.457728928E1 +1.672483000E3,5.407780485E1 +1.672726000E3,5.808535163E1 +1.672991000E3,5.497589856E1 +1.673269000E3,5.816061182E1 +1.673625000E3,5.457220472E1 +1.673896000E3,5.852786772E1 +1.674165000E3,5.615855966E1 +1.674439000E3,5.901141794E1 +1.674702000E3,5.821771493E1 +1.675040000E3,5.533746886E1 +1.675330000E3,5.469332456E1 +1.675631000E3,5.895976057E1 +1.675867000E3,5.565047570E1 +1.676161000E3,5.342216333E1 +1.676431000E3,5.339304237E1 +1.676716000E3,5.196130631E1 +1.677075000E3,5.500129023E1 +1.677346000E3,5.649474234E1 +1.677614000E3,5.620691351E1 +1.677867000E3,5.756400488E1 +1.678112000E3,5.571225073E1 +1.678362000E3,6.171466353E1 +1.678655000E3,5.523245256E1 +1.678909000E3,5.780473196E1 +1.679167000E3,5.918101801E1 +1.679536000E3,5.449831587E1 +1.679788000E3,5.278747036E1 +1.680072000E3,5.502423006E1 +1.680392000E3,5.603218813E1 +1.680667000E3,5.681691969E1 +1.680917000E3,5.574952817E1 +1.681227000E3,5.747793831E1 +1.681510000E3,5.831554727E1 +1.681811000E3,5.823344802E1 +1.682073000E3,5.677197169E1 +1.682402000E3,5.423243511E1 +1.682746000E3,5.568639423E1 +1.683007000E3,5.601571559E1 +1.683297000E3,5.788588795E1 +1.683563000E3,5.178162942E1 +1.683805000E3,5.244727762E1 +1.684102000E3,5.504021082E1 +1.684342000E3,5.312145782E1 +1.684637000E3,5.266466104E1 +1.684875000E3,5.430143327E1 +1.685171000E3,5.731848010E1 +1.685409000E3,5.314967575E1 +1.685703000E3,5.210480680E1 +1.685940000E3,5.447962472E1 +1.686242000E3,5.671930258E1 +1.686480000E3,5.298653153E1 +1.686837000E3,5.390672385E1 +1.687083000E3,5.256535993E1 +1.687387000E3,5.295433262E1 +1.687686000E3,4.693434793E1 +1.687930000E3,5.264001548E1 +1.688191000E3,4.696703102E1 +1.688514000E3,5.290693761E1 +1.688768000E3,5.572289252E1 +1.689025000E3,5.629476293E1 +1.689331000E3,5.221395629E1 +1.689585000E3,5.553268928E1 +1.689905000E3,5.392885939E1 +1.690136000E3,5.613018872E1 +1.690432000E3,5.323144022E1 +1.690690000E3,5.426457319E1 +1.690988000E3,5.869511223E1 +1.691244000E3,5.724931575E1 +1.691548000E3,5.702890727E1 +1.691819000E3,5.957894946E1 +1.692068000E3,5.833323285E1 +1.692367000E3,5.920896731E1 +1.692598000E3,5.809066040E1 +1.692847000E3,5.683194919E1 +1.693218000E3,5.880411413E1 +1.693536000E3,5.430005356E1 +1.693836000E3,5.347827494E1 +1.694082000E3,5.139526617E1 +1.694323000E3,6.486669482E1 +1.694607000E3,5.827670564E1 +1.694879000E3,5.749070135E1 +1.695112000E3,5.439297467E1 +1.695418000E3,5.591879208E1 +1.695720000E3,5.984156108E1 +1.695978000E3,5.763450389E1 +1.696238000E3,5.535113951E1 +1.696577000E3,5.468640858E1 +1.696840000E3,5.145216534E1 +1.697142000E3,5.633820526E1 +1.697434000E3,5.961813260E1 +1.697672000E3,5.761348305E1 +1.697970000E3,5.587832748E1 +1.698213000E3,5.615239979E1 +1.698514000E3,6.142159571E1 +1.698744000E3,5.868747140E1 +1.699038000E3,5.639074769E1 +1.699277000E3,5.843791784E1 +1.699602000E3,5.580904726E1 +1.699849000E3,5.188032815E1 +1.700148000E3,6.050592844E1 +1.700415000E3,5.851925341E1 +1.700742000E3,5.754370303E1 +1.700996000E3,5.792652906E1 +1.701265000E3,5.809754284E1 +1.701543000E3,5.435013872E1 +1.701827000E3,5.364293620E1 +1.702095000E3,5.742174876E1 +1.702342000E3,5.921232761E1 +1.702597000E3,5.246613397E1 +1.702852000E3,5.865178399E1 +1.703188000E3,6.209648540E1 +1.703456000E3,5.783126524E1 +1.703723000E3,6.129722089E1 +1.704021000E3,6.159059582E1 +1.704258000E3,6.290365934E1 +1.704500000E3,5.899658178E1 +1.704744000E3,5.570772177E1 +1.705020000E3,6.042975914E1 +1.705281000E3,6.063911519E1 +1.705578000E3,5.667741437E1 +1.705818000E3,5.616948640E1 +1.706065000E3,5.809228765E1 +1.706440000E3,6.194892333E1 +1.706707000E3,5.510896653E1 +1.706968000E3,5.648771637E1 +1.707226000E3,5.451026369E1 +1.707530000E3,5.655237570E1 +1.707813000E3,6.342687376E1 +1.708096000E3,5.687609223E1 +1.708345000E3,5.784030597E1 +1.708587000E3,5.696931166E1 +1.708832000E3,5.826055047E1 +1.709133000E3,6.171963981E1 +1.709444000E3,6.289993620E1 +1.709785000E3,6.196750111E1 +1.710095000E3,6.021872673E1 +1.710401000E3,5.493999514E1 +1.710645000E3,5.748920917E1 +1.710951000E3,5.990748875E1 +1.711204000E3,5.995493625E1 +1.711504000E3,5.608393688E1 +1.711807000E3,6.225697969E1 +1.712052000E3,6.005399346E1 +1.712297000E3,6.276583246E1 +1.712594000E3,6.409669700E1 +1.712952000E3,5.846223798E1 +1.713249000E3,6.222377893E1 +1.713511000E3,6.179119431E1 +1.713770000E3,6.687160955E1 +1.714020000E3,6.224215114E1 +1.714281000E3,6.460780580E1 +1.714608000E3,6.323149402E1 +1.714900000E3,5.890183616E1 +1.715139000E3,6.173404899E1 +1.715438000E3,6.193562982E1 +1.715674000E3,6.231645929E1 +1.715912000E3,5.798536661E1 +1.716293000E3,5.569607438E1 +1.716537000E3,6.131866955E1 +1.716790000E3,5.896584959E1 +1.717096000E3,5.693976131E1 +1.717346000E3,5.531403594E1 +1.717631000E3,5.794989861E1 +1.717933000E3,5.594899441E1 +1.718204000E3,5.601359132E1 +1.718501000E3,5.861037671E1 +1.718741000E3,6.432265266E1 +1.719043000E3,6.182586376E1 +1.719355000E3,6.076827417E1 +1.719645000E3,5.634225228E1 +1.719943000E3,5.935070169E1 +1.720188000E3,5.856877062E1 +1.720486000E3,5.761843709E1 +1.720741000E3,5.935030376E1 +1.720985000E3,5.413194972E1 +1.721289000E3,5.939733818E1 +1.721553000E3,5.617827250E1 +1.721847000E3,5.807085988E1 +1.722091000E3,5.877044817E1 +1.722445000E3,6.593854232E1 +1.722681000E3,6.027114564E1 +1.722973000E3,5.866411762E1 +1.723271000E3,5.588604319E1 +1.723508000E3,5.958751798E1 +1.723800000E3,6.077290351E1 +1.724039000E3,5.722905231E1 +1.724338000E3,5.619905124E1 +1.724576000E3,5.628809107E1 +1.724876000E3,5.560357878E1 +1.725168000E3,5.447509555E1 +1.725542000E3,5.278892866E1 +1.725841000E3,4.816211457E1 +1.726139000E3,4.622333411E1 +1.726399000E3,4.728231882E1 +1.726691000E3,5.101510224E1 +1.726947000E3,4.725933617E1 +1.727273000E3,5.333398449E1 +1.727569000E3,5.518583989E1 +1.727808000E3,5.719998093E1 +1.728061000E3,5.375072532E1 +1.728352000E3,5.631849408E1 +1.728644000E3,5.232994659E1 +1.729024000E3,5.045911420E1 +1.729295000E3,4.931808913E1 +1.729541000E3,4.866846016E1 +1.729788000E3,5.127644661E1 +1.730054000E3,4.769951033E1 +1.730296000E3,5.553885299E1 +1.730573000E3,5.629080236E1 +1.730816000E3,5.218818952E1 +1.731119000E3,5.112756333E1 +1.731379000E3,5.524890032E1 +1.731688000E3,5.530134621E1 +1.731949000E3,5.451831728E1 +1.732288000E3,5.380962689E1 +1.732589000E3,5.754684503E1 +1.732833000E3,5.184401682E1 +1.733102000E3,5.011373730E1 +1.733369000E3,5.541779655E1 +1.733647000E3,5.983699601E1 +1.733886000E3,6.131428317E1 +1.734163000E3,6.052345820E1 +1.734405000E3,5.852692054E1 +1.734659000E3,5.861191265E1 +1.734933000E3,5.957936529E1 +1.735219000E3,5.639739849E1 +1.735540000E3,5.207917019E1 +1.735832000E3,4.548490451E1 +1.736112000E3,5.219897691E1 +1.736384000E3,5.618314188E1 +1.736684000E3,5.720418785E1 +1.736946000E3,5.895068629E1 +1.737213000E3,5.652216932E1 +1.737468000E3,5.796687034E1 +1.737738000E3,5.591197017E1 +1.737996000E3,5.493985473E1 +1.738236000E3,5.752137274E1 +1.738586000E3,6.041563952E1 +1.738921000E3,6.199530447E1 +1.739167000E3,5.310800091E1 +1.739430000E3,5.600574849E1 +1.739683000E3,6.494981167E1 +1.739952000E3,6.157046745E1 +1.740293000E3,6.002681302E1 +1.740611000E3,5.943541790E1 +1.740910000E3,5.731619793E1 +1.741197000E3,5.885751119E1 +1.741508000E3,5.719237093E1 +1.741767000E3,5.958897825E1 +1.742034000E3,5.543499582E1 +1.742424000E3,5.632783570E1 +1.742688000E3,5.565042743E1 +1.742946000E3,5.622883854E1 +1.743204000E3,6.327777019E1 +1.743456000E3,5.663098185E1 +1.743721000E3,5.729384715E1 +1.743966000E3,6.200582057E1 +1.744273000E3,5.107652622E1 +1.744505000E3,5.491520459E1 +1.744752000E3,5.181266373E1 +1.745004000E3,5.014115745E1 +1.745297000E3,5.338585031E1 +1.745690000E3,5.654477286E1 +1.745966000E3,5.517036116E1 +1.746219000E3,5.200430375E1 +1.746475000E3,5.963355448E1 +1.746732000E3,5.854837006E1 +1.747002000E3,5.571277949E1 +1.747293000E3,5.825116458E1 +1.747522000E3,5.673248340E1 +1.747772000E3,5.683320783E1 +1.748035000E3,5.224053713E1 +1.748289000E3,5.713452273E1 +1.748568000E3,5.539076360E1 +1.748961000E3,6.015893340E1 +1.749211000E3,5.710921188E1 +1.749460000E3,6.114476082E1 +1.749715000E3,5.648052368E1 +1.749961000E3,5.897720288E1 +1.750207000E3,5.525435431E1 +1.750521000E3,5.447453139E1 +1.750765000E3,5.883968686E1 +1.751015000E3,5.450160052E1 +1.751290000E3,5.405183560E1 +1.751522000E3,5.501343440E1 +1.751848000E3,5.586635599E1 +1.752096000E3,5.631573217E1 +1.752372000E3,5.960964241E1 +1.752637000E3,5.320710483E1 +1.752941000E3,5.848434869E1 +1.753209000E3,5.619196315E1 +1.753510000E3,5.692291103E1 +1.753774000E3,5.505374149E1 +1.754051000E3,5.721759821E1 +1.754315000E3,5.539152446E1 +1.754625000E3,5.632890174E1 +1.754919000E3,5.918851802E1 +1.755262000E3,5.807294381E1 +1.755529000E3,5.748451885E1 +1.755827000E3,6.055251826E1 +1.756067000E3,6.208050524E1 +1.756367000E3,5.991655048E1 +1.756607000E3,6.073519941E1 +1.756900000E3,5.774998130E1 +1.757144000E3,5.751173009E1 +1.757417000E3,5.299288378E1 +1.757700000E3,5.913293772E1 +1.758005000E3,5.732040664E1 +1.758269000E3,6.221202462E1 +1.758585000E3,6.285457626E1 +1.758834000E3,5.870613535E1 +1.759137000E3,5.533279687E1 +1.759391000E3,5.194643865E1 +1.759644000E3,4.891449850E1 +1.759922000E3,4.784429271E1 +1.760236000E3,5.273391136E1 +1.760503000E3,5.475616990E1 +1.760758000E3,5.640096860E1 +1.761017000E3,5.329458627E1 +1.761282000E3,4.798672737E1 +1.761535000E3,5.532988346E1 +1.761794000E3,5.189579265E1 +1.762040000E3,5.068357941E1 +1.762299000E3,5.751972157E1 +1.762578000E3,5.430434207E1 +1.762831000E3,5.331943982E1 +1.763136000E3,5.699367350E1 +1.763409000E3,5.622858108E1 +1.763658000E3,5.631559008E1 +1.763910000E3,5.738562920E1 +1.764157000E3,6.030103345E1 +1.764400000E3,5.680309722E1 +1.764695000E3,5.703631315E1 +1.765017000E3,5.682945247E1 +1.765300000E3,5.317093897E1 +1.765575000E3,5.620624417E1 +1.765832000E3,5.550075987E1 +1.766100000E3,6.321349509E1 +1.766371000E3,5.938123887E1 +1.766635000E3,6.289622107E1 +1.766898000E3,5.890101653E1 +1.767155000E3,5.928826732E1 +1.767399000E3,5.872890625E1 +1.767638000E3,6.184345237E1 +1.767877000E3,6.131073260E1 +1.768211000E3,6.085041665E1 +1.768587000E3,6.015418617E1 +1.768835000E3,5.648473324E1 +1.769119000E3,5.746059957E1 +1.769380000E3,5.608054299E1 +1.769692000E3,6.542458852E1 +1.769998000E3,6.121618195E1 +1.770281000E3,5.842785672E1 +1.770536000E3,5.763776595E1 +1.770858000E3,5.630873419E1 +1.771133000E3,5.339704361E1 +1.771378000E3,5.463873835E1 +1.771723000E3,5.659388596E1 +1.772050000E3,5.449836230E1 +1.772294000E3,5.154616724E1 +1.772537000E3,5.082603581E1 +1.772795000E3,5.334183734E1 +1.773055000E3,5.096094928E1 +1.773365000E3,5.171061147E1 +1.773612000E3,5.477281719E1 +1.773878000E3,5.060909259E1 +1.774171000E3,5.285294921E1 +1.774452000E3,5.393730531E1 +1.774725000E3,5.333400186E1 +1.774980000E3,5.285705613E1 +1.775346000E3,5.719168586E1 +1.775663000E3,5.642193929E1 +1.775908000E3,4.659059970E1 +1.776150000E3,5.521168672E1 +1.776388000E3,5.693500665E1 +1.776630000E3,6.030483668E1 +1.776910000E3,5.944095915E1 +1.777153000E3,5.708951289E1 +1.777414000E3,5.291982189E1 +1.777666000E3,5.900042024E1 +1.777935000E3,6.010949926E1 +1.778229000E3,6.009411695E1 +1.778514000E3,5.804757181E1 +1.778758000E3,5.922775473E1 +1.779011000E3,6.063545461E1 +1.779277000E3,5.950242674E1 +1.779575000E3,6.057891518E1 +1.779819000E3,6.050018223E1 +1.780115000E3,5.965583098E1 +1.780361000E3,5.651792502E1 +1.780660000E3,5.814099422E1 +1.780904000E3,5.340077797E1 +1.781203000E3,5.734973286E1 +1.781481000E3,5.846278011E1 +1.781805000E3,5.369751607E1 +1.782048000E3,5.229063054E1 +1.782299000E3,5.345996994E1 +1.782583000E3,5.724353788E1 +1.782883000E3,5.610772411E1 +1.783181000E3,5.272586700E1 +1.783423000E3,5.272075137E1 +1.783692000E3,5.495532717E1 +1.783945000E3,5.594785882E1 +1.784202000E3,5.914935612E1 +1.784483000E3,6.427791570E1 +1.784735000E3,6.185652247E1 +1.785051000E3,6.178338943E1 +1.785352000E3,6.304285312E1 +1.785598000E3,5.699176354E1 +1.785897000E3,5.705567192E1 +1.786190000E3,5.975757470E1 +1.786467000E3,6.092866408E1 +1.786714000E3,5.771726615E1 +1.786984000E3,5.434727511E1 +1.787232000E3,5.250796794E1 +1.787486000E3,5.668884634E1 +1.787813000E3,5.600600547E1 +1.788061000E3,5.162213387E1 +1.788391000E3,5.782497792E1 +1.788636000E3,5.900804565E1 +1.788935000E3,6.056317474E1 +1.789175000E3,5.749029459E1 +1.789469000E3,6.053654612E1 +1.789714000E3,5.841478287E1 +1.789988000E3,5.700130118E1 +1.790219000E3,5.562837186E1 +1.790509000E3,5.430369658E1 +1.790806000E3,5.586895515E1 +1.791048000E3,5.809725956E1 +1.791409000E3,5.552827992E1 +1.791650000E3,5.534472171E1 +1.791981000E3,5.671474363E1 +1.792227000E3,5.716453332E1 +1.792522000E3,5.844249975E1 +1.792847000E3,5.961186667E1 +1.793109000E3,5.794833541E1 +1.793437000E3,5.832360597E1 +1.793698000E3,5.996001578E1 +1.793970000E3,5.849924827E1 +1.794223000E3,5.823551411E1 +1.794488000E3,5.480450178E1 +1.794819000E3,5.715609034E1 +1.795083000E3,5.418083703E1 +1.795329000E3,5.529883425E1 +1.795587000E3,5.729455769E1 +1.795853000E3,5.358946536E1 +1.796083000E3,5.534684059E1 +1.796374000E3,5.693696454E1 +1.796630000E3,5.642610016E1 +1.796927000E3,5.692548294E1 +1.797194000E3,5.931602223E1 +1.797469000E3,5.877569790E1 +1.797716000E3,5.527135197E1 +1.798053000E3,5.904674814E1 +1.798358000E3,5.655039196E1 +1.798612000E3,5.796779928E1 +1.798921000E3,5.499199210E1 +1.799185000E3,5.693837926E1 +1.799465000E3,6.235855457E1 +1.799695000E3,6.271612813E1 +1.799964000E3,6.118271582E1 +1.800233000E3,6.171552449E1 +1.800562000E3,6.293258336E1 +1.800818000E3,5.927940855E1 +1.801077000E3,5.836879001E1 +1.801406000E3,6.182854437E1 +1.801650000E3,5.918527405E1 +1.801894000E3,6.352260837E1 +1.802163000E3,6.142940723E1 +1.802385000E3,5.867772092E1 +1.802631000E3,5.916688243E1 +1.802927000E3,5.855222781E1 +1.803228000E3,6.125789004E1 +1.803533000E3,5.839377949E1 +1.803816000E3,5.705167204E1 +1.804057000E3,5.641730344E1 +1.804362000E3,6.771092582E1 +1.804585000E3,6.036461449E1 +1.804835000E3,6.742095194E1 +1.805132000E3,6.133151855E1 +1.805443000E3,6.658554202E1 +1.805718000E3,7.095511769E1 +1.806003000E3,7.330553664E1 +1.806290000E3,6.732809523E1 +1.806566000E3,6.106403544E1 +1.806844000E3,5.830930506E1 +1.807085000E3,6.610455401E1 +1.807442000E3,5.944325189E1 +1.807800000E3,5.667454347E1 +1.808044000E3,5.560521877E1 +1.808299000E3,5.488377812E1 +1.808542000E3,5.279721650E1 +1.808789000E3,4.834692654E1 +1.809029000E3,4.661669368E1 +1.809276000E3,5.501186804E1 +1.809526000E3,5.384830085E1 +1.809820000E3,5.526588307E1 +1.810084000E3,5.900458249E1 +1.810393000E3,5.557146256E1 +1.810647000E3,5.355619280E1 +1.811023000E3,5.627924000E1 +1.811283000E3,5.384503050E1 +1.811527000E3,5.309622401E1 +1.811816000E3,5.228523776E1 +1.812070000E3,5.317657142E1 +1.812328000E3,5.813846570E1 +1.812583000E3,5.621088360E1 +1.812927000E3,5.646965227E1 +1.813191000E3,5.322001188E1 +1.813436000E3,5.451886743E1 +1.813748000E3,5.558621720E1 +1.814006000E3,5.673920724E1 +1.814328000E3,5.582855401E1 +1.814591000E3,6.044196407E1 +1.814848000E3,5.769208427E1 +1.815109000E3,6.206015086E1 +1.815391000E3,5.918173335E1 +1.815660000E3,5.779702061E1 +1.815927000E3,6.516398742E1 +1.816218000E3,5.927869783E1 +1.816546000E3,6.320256740E1 +1.816802000E3,6.296743684E1 +1.817051000E3,5.869001212E1 +1.817329000E3,5.985536664E1 +1.817620000E3,5.435607380E1 +1.817905000E3,5.721703373E1 +1.818148000E3,6.314389823E1 +1.818376000E3,6.116752308E1 +1.818622000E3,5.773611736E1 +1.818863000E3,5.892899245E1 +1.819138000E3,5.791411351E1 +1.819457000E3,6.283307798E1 +1.819719000E3,5.805008540E1 +1.819967000E3,6.383011196E1 +1.820266000E3,5.915938870E1 +1.820515000E3,5.795811325E1 +1.820871000E3,5.730398564E1 +1.821113000E3,5.907223014E1 +1.821388000E3,5.566469845E1 +1.821612000E3,5.223652040E1 +1.821858000E3,5.461868826E1 +1.822118000E3,5.731142265E1 +1.822388000E3,5.743609212E1 +1.822672000E3,6.147918645E1 +1.822919000E3,6.109678537E1 +1.823167000E3,5.654516230E1 +1.823464000E3,6.010058675E1 +1.823716000E3,6.101649690E1 +1.824046000E3,5.741898993E1 +1.824372000E3,5.654969113E1 +1.824629000E3,5.489877253E1 +1.824894000E3,6.410593751E1 +1.825142000E3,5.923267903E1 +1.825399000E3,5.977300321E1 +1.825683000E3,5.945891570E1 +1.825907000E3,5.799474745E1 +1.826162000E3,5.485933719E1 +1.826447000E3,5.848818620E1 +1.826697000E3,5.937282663E1 +1.826944000E3,5.473647239E1 +1.827319000E3,5.611635619E1 +1.827649000E3,5.704234375E1 +1.827909000E3,5.174683398E1 +1.828172000E3,5.243070089E1 +1.828457000E3,5.835398328E1 +1.828710000E3,6.579711207E1 +1.828969000E3,6.063158540E1 +1.829218000E3,5.379307224E1 +1.829474000E3,5.791005982E1 +1.829779000E3,5.908028356E1 +1.830025000E3,5.476368407E1 +1.830307000E3,5.608145667E1 +1.830627000E3,5.417323034E1 +1.830843000E3,5.295530865E1 +1.831087000E3,5.335160491E1 +1.831385000E3,5.274441298E1 +1.831622000E3,5.307477504E1 +1.831918000E3,5.606159985E1 +1.832155000E3,6.009472302E1 +1.832471000E3,5.380117674E1 +1.832766000E3,5.382200579E1 +1.833012000E3,5.176006230E1 +1.833256000E3,5.956343573E1 +1.833577000E3,5.545935306E1 +1.833826000E3,5.528541848E1 +1.834083000E3,5.436381252E1 +1.834373000E3,5.684307553E1 +1.834669000E3,5.352399464E1 +1.834910000E3,5.651184236E1 +1.835208000E3,5.432875840E1 +1.835453000E3,5.442576527E1 +1.835752000E3,5.643309342E1 +1.836022000E3,5.781174029E1 +1.836293000E3,6.110602518E1 +1.836557000E3,5.591856301E1 +1.836932000E3,5.423752303E1 +1.837200000E3,5.716598850E1 +1.837455000E3,5.511743414E1 +1.837716000E3,5.819026063E1 +1.837988000E3,5.728773522E1 +1.838236000E3,5.959151016E1 +1.838540000E3,5.810767345E1 +1.838799000E3,5.779128856E1 +1.839096000E3,6.092094761E1 +1.839361000E3,5.957871329E1 +1.839608000E3,5.838702884E1 +1.839856000E3,5.927631822E1 +1.840242000E3,5.748386760E1 +1.840516000E3,5.957609475E1 +1.840759000E3,5.688693666E1 +1.841054000E3,5.883374773E1 +1.841320000E3,5.769470339E1 +1.841597000E3,5.894509733E1 +1.841885000E3,6.032854908E1 +1.842190000E3,5.891601570E1 +1.842444000E3,5.957860612E1 +1.842691000E3,5.968229576E1 +1.842933000E3,5.829247522E1 +1.843258000E3,6.183086549E1 +1.843539000E3,6.077794792E1 +1.843765000E3,5.928253866E1 +1.844002000E3,5.782805396E1 +1.844301000E3,5.975447959E1 +1.844589000E3,6.108169982E1 +1.844825000E3,5.915565503E1 +1.845116000E3,5.981302437E1 +1.845363000E3,6.019248645E1 +1.845636000E3,6.014223773E1 +1.845861000E3,6.160258605E1 +1.846139000E3,6.002388007E1 +1.846447000E3,6.004612452E1 +1.846706000E3,5.932487324E1 +1.846979000E3,5.718424575E1 +1.847284000E3,5.712987240E1 +1.847586000E3,5.557624595E1 +1.847888000E3,5.603981815E1 +1.848146000E3,5.769591687E1 +1.848418000E3,5.526085696E1 +1.848706000E3,5.815102401E1 +1.848972000E3,5.884177354E1 +1.849226000E3,5.853138751E1 +1.849515000E3,6.156208919E1 +1.849746000E3,6.064923427E1 +1.850008000E3,6.590305387E1 +1.850338000E3,5.853444981E1 +1.850640000E3,5.717447935E1 +1.850942000E3,5.680568615E1 +1.851242000E3,5.928468331E1 +1.851504000E3,5.798449444E1 +1.851757000E3,5.802619768E1 +1.852033000E3,5.998338312E1 +1.852296000E3,5.683616594E1 +1.852550000E3,5.692327884E1 +1.852886000E3,5.878610583E1 +1.853162000E3,5.538467470E1 +1.853432000E3,5.437085520E1 +1.853738000E3,5.469765317E1 +1.854038000E3,5.790268038E1 +1.854297000E3,5.836787866E1 +1.854582000E3,6.160807622E1 +1.854881000E3,5.878613196E1 +1.855158000E3,6.200103199E1 +1.855387000E3,6.087479870E1 +1.855688000E3,6.028304140E1 +1.855930000E3,6.159527875E1 +1.856226000E3,6.082174354E1 +1.856487000E3,5.932314061E1 +1.856744000E3,5.976570730E1 +1.857001000E3,5.473753247E1 +1.857299000E3,5.954612483E1 +1.857556000E3,6.052388497E1 +1.857849000E3,5.848282940E1 +1.858086000E3,5.879664566E1 +1.858384000E3,5.864589973E1 +1.858677000E3,5.659242719E1 +1.858917000E3,5.683870091E1 +1.859195000E3,5.582498919E1 +1.859427000E3,6.011873423E1 +1.859676000E3,5.796702396E1 +1.859911000E3,5.928400715E1 +1.860149000E3,5.826876733E1 +1.860396000E3,6.038481253E1 +1.860680000E3,6.030085568E1 +1.860944000E3,5.890166619E1 +1.861209000E3,6.654379171E1 +1.861519000E3,6.016187265E1 +1.861755000E3,6.139297542E1 +1.862049000E3,6.289106669E1 +1.862388000E3,5.872946965E1 +1.862675000E3,5.800836625E1 +1.862993000E3,5.701819685E1 +1.863248000E3,5.488359846E1 +1.863519000E3,5.747446133E1 +1.863768000E3,5.996388232E1 +1.864087000E3,5.686047813E1 +1.864334000E3,5.935760915E1 +1.864635000E3,6.438349972E1 +1.864894000E3,6.008599590E1 +1.865205000E3,5.995474236E1 +1.865502000E3,6.596906108E1 +1.865837000E3,6.091064347E1 +1.866114000E3,5.885056970E1 +1.866411000E3,6.474486832E1 +1.866666000E3,5.888758286E1 +1.866964000E3,6.138447683E1 +1.867211000E3,6.032596684E1 +1.867482000E3,5.848476935E1 +1.867736000E3,5.631330849E1 +1.867989000E3,5.927138373E1 +1.868246000E3,5.817171672E1 +1.868499000E3,5.358065381E1 +1.868763000E3,5.500264039E1 +1.869129000E3,5.663946315E1 +1.869384000E3,5.601392416E1 +1.869636000E3,5.640732154E1 +1.869947000E3,5.320213962E1 +1.870207000E3,4.907811811E1 +1.870470000E3,5.784153600E1 +1.870743000E3,5.988355074E1 +1.871011000E3,5.973830135E1 +1.871253000E3,5.769679044E1 +1.871519000E3,5.395770126E1 +1.871765000E3,5.751088186E1 +1.872011000E3,5.342275719E1 +1.872301000E3,5.638616310E1 +1.872563000E3,5.124369984E1 +1.872821000E3,5.357036185E1 +1.873129000E3,5.529809524E1 +1.873386000E3,5.442720524E1 +1.873650000E3,5.306298792E1 +1.873937000E3,5.703507672E1 +1.874184000E3,5.835246426E1 +1.874444000E3,5.638184247E1 +1.874707000E3,5.201779537E1 +1.874972000E3,5.217149520E1 +1.875244000E3,5.757612416E1 +1.875577000E3,5.387788750E1 +1.875865000E3,5.607108884E1 +1.876149000E3,5.692352283E1 +1.876407000E3,5.577296536E1 +1.876687000E3,5.259836493E1 +1.876982000E3,5.467571766E1 +1.877215000E3,5.256317748E1 +1.877521000E3,5.522593862E1 +1.877775000E3,5.432669245E1 +1.878036000E3,5.734031668E1 +1.878314000E3,6.027566119E1 +1.878587000E3,5.567003578E1 +1.878912000E3,5.307720644E1 +1.879176000E3,5.659939353E1 +1.879425000E3,5.110556861E1 +1.879723000E3,5.673190580E1 +1.879969000E3,5.437112204E1 +1.880274000E3,5.433297742E1 +1.880576000E3,5.585075865E1 +1.880875000E3,5.657006430E1 +1.881117000E3,5.701623858E1 +1.881424000E3,5.749679466E1 +1.881673000E3,5.623079196E1 +1.881986000E3,5.545187468E1 +1.882329000E3,5.781610131E1 +1.882611000E3,5.432916720E1 +1.882882000E3,4.940287270E1 +1.883127000E3,5.866223377E1 +1.883391000E3,5.654564177E1 +1.883644000E3,5.888782218E1 +1.883889000E3,5.586307703E1 +1.884148000E3,5.930725555E1 +1.884413000E3,5.963840788E1 +1.884660000E3,5.928611951E1 +1.884926000E3,5.621968819E1 +1.885181000E3,5.811455305E1 +1.885457000E3,5.585646129E1 +1.885714000E3,5.989591718E1 +1.885968000E3,6.058402104E1 +1.886267000E3,5.972100226E1 +1.886517000E3,6.220704457E1 +1.886832000E3,6.037773435E1 +1.887106000E3,6.039308032E1 +1.887385000E3,6.223647696E1 +1.887617000E3,5.854088114E1 +1.887876000E3,6.248517888E1 +1.888128000E3,6.222318884E1 +1.888437000E3,6.070320114E1 +1.888777000E3,5.817372188E1 +1.889076000E3,5.382250608E1 +1.889369000E3,7.004593531E1 +1.889616000E3,6.094415751E1 +1.889913000E3,5.455584628E1 +1.890163000E3,5.387250795E1 +1.890418000E3,5.219742496E1 +1.890714000E3,5.070715955E1 +1.890961000E3,5.362651533E1 +1.891207000E3,5.046817004E1 +1.891453000E3,5.129339201E1 +1.891764000E3,4.856730286E1 +1.892053000E3,5.220705734E1 +1.892321000E3,5.401068171E1 +1.892582000E3,5.109746146E1 +1.892834000E3,5.412675897E1 +1.893090000E3,5.347014573E1 +1.893340000E3,5.092720593E1 +1.893620000E3,5.341316175E1 +1.893886000E3,4.870918930E1 +1.894142000E3,4.929590175E1 +1.894389000E3,4.686294330E1 +1.894692000E3,5.100486031E1 +1.894995000E3,5.087478993E1 +1.895328000E3,4.940372977E1 +1.895606000E3,5.362468443E1 +1.895919000E3,5.608826750E1 +1.896241000E3,5.628756413E1 +1.896497000E3,5.817843169E1 +1.896749000E3,5.809119715E1 +1.897054000E3,5.469613872E1 +1.897287000E3,5.437807476E1 +1.897582000E3,5.794761863E1 +1.897897000E3,6.027023965E1 +1.898145000E3,5.913564460E1 +1.898511000E3,5.510014788E1 +1.898752000E3,5.499817732E1 +1.898999000E3,5.569220222E1 +1.899294000E3,5.368447548E1 +1.899547000E3,5.912109227E1 +1.899841000E3,6.076259223E1 +1.900104000E3,6.153129043E1 +1.900349000E3,5.679462536E1 +1.900634000E3,5.721135074E1 +1.900927000E3,5.674745728E1 +1.901166000E3,5.556227882E1 +1.901462000E3,4.994603734E1 +1.901841000E3,5.122656475E1 +1.902183000E3,5.127903645E1 +1.902436000E3,5.042064547E1 +1.902695000E3,5.425673681E1 +1.902998000E3,5.484388956E1 +1.903228000E3,5.322356297E1 +1.903483000E3,5.161093724E1 +1.903730000E3,5.302125687E1 +1.904019000E3,5.241958307E1 +1.904307000E3,5.116604316E1 +1.904614000E3,5.319513233E1 +1.904991000E3,5.530482451E1 +1.905243000E3,5.829713614E1 +1.905528000E3,4.891404960E1 +1.905774000E3,5.408250868E1 +1.906083000E3,5.272747143E1 +1.906381000E3,5.216068921E1 +1.906624000E3,5.292203291E1 +1.906885000E3,5.243548019E1 +1.907149000E3,4.981562618E1 +1.907448000E3,5.500279348E1 +1.907742000E3,5.481190601E1 +1.907999000E3,5.369800103E1 +1.908315000E3,6.390197571E1 +1.908579000E3,6.517990141E1 +1.908825000E3,5.822949910E1 +1.909064000E3,5.655728640E1 +1.909356000E3,5.292186662E1 +1.909600000E3,5.069372058E1 +1.909895000E3,5.368100654E1 +1.910138000E3,5.616508462E1 +1.910432000E3,6.285923815E1 +1.910670000E3,6.254266196E1 +1.910979000E3,5.628599605E1 +1.911260000E3,5.616383984E1 +1.911482000E3,5.074231882E1 +1.911728000E3,5.398858859E1 +1.911977000E3,5.585565083E1 +1.912237000E3,5.777112626E1 +1.912532000E3,6.036032129E1 +1.912783000E3,6.077032608E1 +1.913052000E3,5.839282786E1 +1.913316000E3,5.397912726E1 +1.913575000E3,5.582771928E1 +1.913848000E3,5.579334158E1 +1.914143000E3,5.778281485E1 +1.914450000E3,5.783459906E1 +1.914713000E3,6.199387267E1 +1.914943000E3,6.173706737E1 +1.915185000E3,5.621060236E1 +1.915433000E3,5.563784893E1 +1.915692000E3,5.470990272E1 +1.915951000E3,5.469960060E1 +1.916217000E3,6.171536544E1 +1.916470000E3,5.862130066E1 +1.916777000E3,5.839467924E1 +1.917028000E3,5.552209731E1 +1.917324000E3,5.763067987E1 +1.917687000E3,5.981653815E1 +1.917967000E3,5.790518789E1 +1.918210000E3,5.220287871E1 +1.918457000E3,5.707286116E1 +1.918759000E3,5.657529642E1 +1.918997000E3,6.000130629E1 +1.919241000E3,5.708419446E1 +1.919496000E3,5.749223221E1 +1.919768000E3,5.843781753E1 +1.920074000E3,5.671929683E1 +1.920373000E3,5.881070992E1 +1.920621000E3,5.603223824E1 +1.920956000E3,6.053511488E1 +1.921216000E3,5.525745837E1 +1.921476000E3,6.186721324E1 +1.921723000E3,6.214292360E1 +1.922025000E3,5.857206109E1 +1.922320000E3,5.934438900E1 +1.922561000E3,6.077867207E1 +1.922860000E3,5.578255978E1 +1.923099000E3,5.723807446E1 +1.923347000E3,5.785786452E1 +1.923636000E3,6.037753633E1 +1.923892000E3,6.106459696E1 +1.924223000E3,5.873119773E1 +1.924511000E3,5.862235861E1 +1.924814000E3,5.732521131E1 +1.925070000E3,5.161553090E1 +1.925373000E3,5.243351685E1 +1.925626000E3,5.041805469E1 +1.925919000E3,5.543714980E1 +1.926175000E3,5.338657816E1 +1.926425000E3,5.616854022E1 +1.926695000E3,5.699328540E1 +1.926965000E3,5.787312270E1 +1.927305000E3,5.558473925E1 +1.927614000E3,5.927685087E1 +1.927880000E3,6.254706193E1 +1.928125000E3,6.079427969E1 +1.928390000E3,5.412440784E1 +1.928634000E3,5.441834540E1 +1.928928000E3,5.220486428E1 +1.929215000E3,5.210908233E1 +1.929515000E3,5.352367419E1 +1.929766000E3,5.356350702E1 +1.930022000E3,5.184851991E1 +1.930322000E3,5.311742835E1 +1.930607000E3,5.453786592E1 +1.930870000E3,5.814140937E1 +1.931155000E3,5.779656646E1 +1.931440000E3,5.488757891E1 +1.931727000E3,5.385182390E1 +1.931981000E3,5.705491580E1 +1.932229000E3,5.576165296E1 +1.932491000E3,5.781333383E1 +1.932730000E3,5.616780300E1 +1.932971000E3,5.400230043E1 +1.933232000E3,5.518627884E1 +1.933510000E3,5.211300688E1 +1.933795000E3,5.292820587E1 +1.934127000E3,5.382097927E1 +1.934390000E3,6.102840439E1 +1.934671000E3,5.486275546E1 +1.934948000E3,5.206103103E1 +1.935198000E3,5.739150099E1 +1.935506000E3,5.310844778E1 +1.935756000E3,5.392681604E1 +1.936008000E3,5.250003264E1 +1.936256000E3,5.801399662E1 +1.936524000E3,5.696032820E1 +1.936785000E3,5.414492013E1 +1.937032000E3,5.536982174E1 +1.937391000E3,5.750979970E1 +1.937677000E3,5.370086514E1 +1.937972000E3,5.359409099E1 +1.938241000E3,4.663692517E1 +1.938508000E3,4.740501122E1 +1.938772000E3,4.812116539E1 +1.939051000E3,4.940260018E1 +1.939311000E3,5.211533825E1 +1.939553000E3,5.351181789E1 +1.939796000E3,5.597808269E1 +1.940081000E3,5.841474518E1 +1.940347000E3,5.900966915E1 +1.940680000E3,5.844032848E1 +1.940932000E3,6.047778057E1 +1.941187000E3,6.179458512E1 +1.941488000E3,5.569784051E1 +1.941730000E3,5.535681081E1 +1.941971000E3,5.409739450E1 +1.942227000E3,5.551927029E1 +1.942555000E3,5.259381649E1 +1.942855000E3,5.090743186E1 +1.943101000E3,5.330610416E1 +1.943383000E3,5.722147303E1 +1.943610000E3,5.564867598E1 +1.944013000E3,5.456395907E1 +1.944265000E3,5.442943523E1 +1.944557000E3,5.982581487E1 +1.944820000E3,5.751114261E1 +1.945081000E3,5.998630171E1 +1.945333000E3,5.908382499E1 +1.945646000E3,5.828329647E1 +1.945951000E3,5.602282904E1 +1.946199000E3,6.197108249E1 +1.946496000E3,5.533258874E1 +1.946770000E3,5.704060455E1 +1.947126000E3,5.457797110E1 +1.947363000E3,5.430717613E1 +1.947637000E3,5.940687974E1 +1.947953000E3,5.436076271E1 +1.948235000E3,5.660912008E1 +1.948550000E3,5.504399315E1 +1.948861000E3,5.464999644E1 +1.949122000E3,5.565806372E1 +1.949384000E3,5.190569146E1 +1.949646000E3,5.153937000E1 +1.949972000E3,5.628803963E1 +1.950248000E3,5.966716422E1 +1.950577000E3,5.820503815E1 +1.950822000E3,5.652058726E1 +1.951118000E3,5.802645793E1 +1.951349000E3,5.727916959E1 +1.951597000E3,5.784165576E1 +1.951900000E3,5.999225852E1 +1.952197000E3,6.048891831E1 +1.952433000E3,5.821794698E1 +1.952728000E3,5.416701806E1 +1.952964000E3,5.183738883E1 +1.953295000E3,5.384161890E1 +1.953675000E3,5.430376660E1 +1.953907000E3,5.257088063E1 +1.954151000E3,5.392186903E1 +1.954431000E3,6.167467738E1 +1.954678000E3,5.958790115E1 +1.954923000E3,5.822018477E1 +1.955185000E3,5.808448347E1 +1.955447000E3,5.733347749E1 +1.955703000E3,6.261390980E1 +1.956005000E3,5.829281758E1 +1.956246000E3,5.949056653E1 +1.956541000E3,5.839747914E1 +1.956810000E3,5.770882066E1 +1.957120000E3,5.690637302E1 +1.957421000E3,5.796705847E1 +1.957668000E3,5.867770180E1 +1.957936000E3,5.696585443E1 +1.958216000E3,5.738908049E1 +1.958463000E3,5.842272770E1 +1.958721000E3,5.966072568E1 +1.959033000E3,6.340725612E1 +1.959281000E3,6.193544465E1 +1.959566000E3,5.927164536E1 +1.959888000E3,6.146900670E1 +1.960249000E3,6.270186363E1 +1.960512000E3,5.695216686E1 +1.960779000E3,5.725758836E1 +1.961040000E3,5.788439963E1 +1.961303000E3,6.286977927E1 +1.961557000E3,6.361469653E1 +1.961802000E3,6.277422462E1 +1.962060000E3,6.032704022E1 +1.962310000E3,5.600516510E1 +1.962586000E3,6.188879617E1 +1.962805000E3,6.271522018E1 +1.963107000E3,6.025198847E1 +1.963453000E3,6.001529679E1 +1.963728000E3,5.375240125E1 +1.964036000E3,5.055228276E1 +1.964331000E3,5.257092943E1 +1.964568000E3,5.708661900E1 +1.964868000E3,5.629448239E1 +1.965178000E3,5.425890416E1 +1.965431000E3,5.575014937E1 +1.965679000E3,5.801461965E1 +1.965931000E3,5.400244473E1 +1.966191000E3,5.474887871E1 +1.966525000E3,5.196538635E1 +1.966783000E3,5.536524974E1 +1.967040000E3,5.974878933E1 +1.967338000E3,6.200932986E1 +1.967644000E3,6.295299888E1 +1.967909000E3,6.272635154E1 +1.968153000E3,5.902465660E1 +1.968474000E3,5.897159976E1 +1.968773000E3,5.506910037E1 +1.969014000E3,5.622897524E1 +1.969254000E3,5.457019516E1 +1.969505000E3,5.648049168E1 +1.969892000E3,5.656883155E1 +1.970152000E3,5.598423772E1 +1.970446000E3,5.186768597E1 +1.970726000E3,5.526177698E1 +1.971020000E3,5.810907246E1 +1.971304000E3,5.262875480E1 +1.971613000E3,5.141696402E1 +1.971915000E3,5.298264424E1 +1.972196000E3,5.641801556E1 +1.972483000E3,5.228737642E1 +1.972725000E3,5.649656740E1 +1.973036000E3,5.867645632E1 +1.973323000E3,5.679238187E1 +1.973633000E3,5.959682402E1 +1.973935000E3,5.617109756E1 +1.974236000E3,5.473085666E1 +1.974547000E3,5.589564412E1 +1.974836000E3,5.691193712E1 +1.975136000E3,5.808545953E1 +1.975385000E3,5.922478363E1 +1.975631000E3,5.707996013E1 +1.975881000E3,5.820923707E1 +1.976194000E3,5.897957095E1 +1.976453000E3,6.019944728E1 +1.976814000E3,6.472960186E1 +1.977076000E3,6.312075290E1 +1.977356000E3,5.886370461E1 +1.977618000E3,5.750754913E1 +1.977917000E3,5.531180501E1 +1.978189000E3,5.815410032E1 +1.978463000E3,5.735965971E1 +1.978732000E3,5.593071322E1 +1.978999000E3,5.835041964E1 +1.979245000E3,5.646810288E1 +1.979493000E3,5.392299875E1 +1.979902000E3,5.430590311E1 +1.980142000E3,5.447583546E1 +1.980384000E3,5.260389735E1 +1.980632000E3,5.537561423E1 +1.980873000E3,5.836960119E1 +1.981120000E3,5.425821286E1 +1.981389000E3,5.153336720E1 +1.981618000E3,5.420085973E1 +1.981915000E3,5.457985954E1 +1.982165000E3,5.637026749E1 +1.982404000E3,6.009656118E1 +1.982718000E3,5.903298531E1 +1.983029000E3,5.665152425E1 +1.983296000E3,5.778918758E1 +1.983538000E3,5.444374512E1 +1.983786000E3,5.619088618E1 +1.984047000E3,6.088482249E1 +1.984304000E3,5.678390940E1 +1.984575000E3,5.873820942E1 +1.984842000E3,6.004736340E1 +1.985142000E3,6.191465398E1 +1.985405000E3,6.154032648E1 +1.985653000E3,5.967034113E1 +1.985913000E3,5.855925349E1 +1.986211000E3,5.529356341E1 +1.986557000E3,5.823190054E1 +1.986847000E3,5.749679599E1 +1.987098000E3,5.855123449E1 +1.987369000E3,5.999203293E1 +1.987610000E3,6.139424716E1 +1.987876000E3,5.730078222E1 +1.988126000E3,5.649537684E1 +1.988425000E3,5.872458305E1 +1.988727000E3,5.704322852E1 +1.989024000E3,6.264447151E1 +1.989326000E3,5.763604303E1 +1.989641000E3,5.657919006E1 +1.989961000E3,5.706004491E1 +1.990255000E3,6.115159729E1 +1.990571000E3,5.721964371E1 +1.990829000E3,5.780420781E1 +1.991088000E3,5.782228640E1 +1.991353000E3,5.791642518E1 +1.991611000E3,5.820065680E1 +1.991935000E3,5.675756460E1 +1.992174000E3,5.720433643E1 +1.992482000E3,5.907701380E1 +1.992770000E3,5.791335620E1 +1.993107000E3,5.504589678E1 +1.993369000E3,6.117578252E1 +1.993619000E3,5.902046786E1 +1.993912000E3,6.024153080E1 +1.994216000E3,6.061721402E1 +1.994464000E3,6.185610038E1 +1.994715000E3,5.902440055E1 +1.995005000E3,6.112374185E1 +1.995249000E3,5.664710018E1 +1.995551000E3,5.841351492E1 +1.995787000E3,5.961393992E1 +1.996119000E3,5.614463215E1 +1.996387000E3,5.528223904E1 +1.996647000E3,5.706960328E1 +1.996947000E3,5.544195306E1 +1.997203000E3,5.747091679E1 +1.997452000E3,5.434233120E1 +1.997769000E3,5.794847441E1 +1.998019000E3,5.504963001E1 +1.998267000E3,5.470768853E1 +1.998498000E3,6.426300701E1 +1.998789000E3,6.070245213E1 +1.999090000E3,5.893271279E1 +1.999390000E3,5.873668669E1 +1.999698000E3,6.355663744E1 +1.999962000E3,6.500393379E1 +2.000214000E3,6.177640112E1 +2.000471000E3,6.122167361E1 +2.000775000E3,5.982616779E1 +2.001079000E3,5.944943300E1 +2.001339000E3,5.772707313E1 +2.001595000E3,5.934980117E1 +2.001862000E3,6.221301291E1 +2.002160000E3,6.098009785E1 +2.002491000E3,6.205877653E1 +2.002758000E3,5.978743388E1 +2.003062000E3,6.141065367E1 +2.003307000E3,6.146860620E1 +2.003555000E3,6.323368939E1 +2.003884000E3,6.072009355E1 +2.004185000E3,6.072017978E1 +2.004424000E3,6.079512782E1 +2.004673000E3,6.651000141E1 +2.004939000E3,6.185812181E1 +2.005202000E3,5.705353418E1 +2.005472000E3,5.820400818E1 +2.005800000E3,5.682542431E1 +2.006070000E3,6.224932691E1 +2.006350000E3,5.654791681E1 +2.006601000E3,6.160831985E1 +2.006857000E3,6.443497299E1 +2.007101000E3,6.091208862E1 +2.007395000E3,5.867323811E1 +2.007635000E3,5.850229824E1 +2.007945000E3,6.307832054E1 +2.008197000E3,5.931313312E1 +2.008453000E3,5.632990721E1 +2.008711000E3,5.662998085E1 +2.009032000E3,5.416655753E1 +2.009268000E3,6.273936844E1 +2.009521000E3,6.129068926E1 +2.009786000E3,6.485712301E1 +2.010037000E3,6.605690213E1 +2.010298000E3,6.243431425E1 +2.010541000E3,6.062714733E1 +2.010780000E3,6.369220544E1 +2.011082000E3,5.933701247E1 +2.011330000E3,6.141658123E1 +2.011605000E3,6.232326760E1 +2.011893000E3,5.983132844E1 +2.012226000E3,6.085684837E1 +2.012489000E3,5.844434641E1 +2.012752000E3,5.992485437E1 +2.013005000E3,5.745164278E1 +2.013272000E3,5.489362140E1 +2.013573000E3,5.734004331E1 +2.013861000E3,5.569303233E1 +2.014170000E3,5.619919203E1 +2.014467000E3,5.719248521E1 +2.014715000E3,5.898607642E1 +2.015015000E3,5.312334941E1 +2.015258000E3,4.707687024E1 +2.015594000E3,5.326213693E1 +2.015822000E3,4.977107581E1 +2.016071000E3,5.399380901E1 +2.016333000E3,5.528915982E1 +2.016634000E3,5.648344312E1 +2.016879000E3,5.853194276E1 +2.017143000E3,5.969968429E1 +2.017429000E3,6.121498547E1 +2.017723000E3,5.933414775E1 +2.017961000E3,6.375558171E1 +2.018248000E3,6.102538403E1 +2.018558000E3,6.066629858E1 +2.018830000E3,5.238394429E1 +2.019065000E3,5.528030903E1 +2.019316000E3,5.711235169E1 +2.019578000E3,6.069913503E1 +2.019847000E3,5.344730110E1 +2.020093000E3,5.593398360E1 +2.020413000E3,5.112453486E1 +2.020668000E3,5.529600172E1 +2.020922000E3,5.816841553E1 +2.021177000E3,6.105447683E1 +2.021449000E3,5.967528890E1 +2.021707000E3,5.677568689E1 +2.022115000E3,5.613246875E1 +2.022403000E3,5.846674311E1 +2.022679000E3,5.999468936E1 +2.022930000E3,6.268951545E1 +2.023232000E3,6.037378186E1 +2.023532000E3,6.123290650E1 +2.023784000E3,6.425880775E1 +2.024094000E3,6.043334594E1 +2.024356000E3,6.287321918E1 +2.024616000E3,6.178703582E1 +2.024868000E3,5.974424575E1 +2.025152000E3,5.863905018E1 +2.025429000E3,5.669082005E1 +2.025716000E3,6.192616195E1 +2.026008000E3,6.367561928E1 +2.026300000E3,6.061621393E1 +2.026543000E3,6.411900249E1 +2.026802000E3,6.060951858E1 +2.027066000E3,5.606119041E1 +2.027395000E3,5.099901519E1 +2.027693000E3,5.622472082E1 +2.027945000E3,5.354940616E1 +2.028237000E3,6.282566888E1 +2.028553000E3,5.775523802E1 +2.028868000E3,6.095006183E1 +2.029133000E3,6.333727439E1 +2.029399000E3,5.925545982E1 +2.029660000E3,6.045827699E1 +2.029962000E3,5.594587825E1 +2.030223000E3,5.708579081E1 +2.030478000E3,5.777704597E1 +2.030737000E3,5.406349508E1 +2.030990000E3,5.544037764E1 +2.031246000E3,5.912518025E1 +2.031508000E3,5.924806900E1 +2.031864000E3,6.105667153E1 +2.032110000E3,5.838466956E1 +2.032350000E3,5.923100201E1 +2.032598000E3,6.024290558E1 +2.032866000E3,5.971089342E1 +2.033112000E3,5.478665804E1 +2.033351000E3,5.966531235E1 +2.033644000E3,5.755565544E1 +2.033892000E3,5.982004182E1 +2.034190000E3,5.797424789E1 +2.034425000E3,5.856301863E1 +2.034717000E3,6.325478319E1 +2.035053000E3,6.168254294E1 +2.035364000E3,6.188857455E1 +2.035619000E3,6.156039581E1 +2.035901000E3,6.235770270E1 +2.036169000E3,6.262779828E1 +2.036471000E3,6.142542176E1 +2.036764000E3,5.923845966E1 +2.037022000E3,5.827266837E1 +2.037307000E3,6.314641141E1 +2.037615000E3,5.460230698E1 +2.037870000E3,5.396400232E1 +2.038120000E3,5.561122002E1 +2.038463000E3,5.928400391E1 +2.038767000E3,5.668934966E1 +2.039069000E3,5.831653467E1 +2.039316000E3,5.267103167E1 +2.039622000E3,5.557794232E1 +2.039859000E3,5.543606804E1 +2.040196000E3,5.836770370E1 +2.040499000E3,5.678092478E1 +2.040751000E3,5.612506795E1 +2.041024000E3,5.868430679E1 +2.041274000E3,5.264121586E1 +2.041581000E3,5.828774790E1 +2.041841000E3,5.647338053E1 +2.042088000E3,6.053709731E1 +2.042403000E3,5.614689861E1 +2.042691000E3,5.714845923E1 +2.042944000E3,5.256418368E1 +2.043191000E3,5.601486494E1 +2.043466000E3,5.810869150E1 +2.043715000E3,5.529893852E1 +2.043979000E3,5.708153712E1 +2.044245000E3,5.690179830E1 +2.044568000E3,5.994555064E1 +2.044825000E3,6.172126409E1 +2.045096000E3,6.015473895E1 +2.045377000E3,5.509344178E1 +2.045629000E3,5.568915719E1 +2.045902000E3,5.938619751E1 +2.046155000E3,5.534852098E1 +2.046409000E3,5.905391706E1 +2.046693000E3,5.250115201E1 +2.046947000E3,5.587771233E1 +2.047277000E3,5.599930929E1 +2.047517000E3,5.586822515E1 +2.047803000E3,5.740436533E1 +2.048105000E3,5.413600866E1 +2.048476000E3,5.595836709E1 +2.048737000E3,5.982743631E1 +2.048992000E3,6.001131240E1 +2.049305000E3,5.629713962E1 +2.049568000E3,5.505265617E1 +2.049904000E3,5.686004167E1 +2.050199000E3,6.078932545E1 +2.050470000E3,5.919030857E1 +2.050773000E3,5.640754436E1 +2.051052000E3,5.864124078E1 +2.051311000E3,5.683150656E1 +2.051642000E3,5.391893615E1 +2.051926000E3,4.513639699E1 +2.052174000E3,5.750824000E1 +2.052467000E3,5.945309138E1 +2.052703000E3,6.260915402E1 +2.052981000E3,6.017408744E1 +2.053276000E3,6.158293130E1 +2.053516000E3,6.279041899E1 +2.053759000E3,6.005362243E1 +2.054030000E3,5.776050932E1 +2.054357000E3,5.906607942E1 +2.054642000E3,6.002924771E1 +2.054978000E3,5.708591672E1 +2.055267000E3,5.932996992E1 +2.055552000E3,5.830703641E1 +2.055812000E3,5.428102985E1 +2.056063000E3,5.893384546E1 +2.056382000E3,6.028305726E1 +2.056682000E3,5.904357096E1 +2.056923000E3,6.015407432E1 +2.057171000E3,5.801677968E1 +2.057418000E3,6.561794532E1 +2.057665000E3,6.751214025E1 +2.057959000E3,5.899748641E1 +2.058279000E3,5.616162884E1 +2.058571000E3,5.813941707E1 +2.058834000E3,6.236684118E1 +2.059132000E3,6.058455193E1 +2.059376000E3,6.004963560E1 +2.059687000E3,6.255152045E1 +2.059984000E3,6.155697025E1 +2.060225000E3,6.124056229E1 +2.060517000E3,6.072549607E1 +2.060756000E3,6.119225814E1 +2.061060000E3,5.953618039E1 +2.061302000E3,5.869582322E1 +2.061578000E3,6.248269042E1 +2.061841000E3,6.070173510E1 +2.062089000E3,6.023992255E1 +2.062337000E3,5.848175462E1 +2.062607000E3,5.092907116E1 +2.062859000E3,5.442118268E1 +2.063124000E3,5.298599309E1 +2.063425000E3,6.030333428E1 +2.063671000E3,5.835700379E1 +2.063954000E3,5.943633389E1 +2.064268000E3,5.761479859E1 +2.064577000E3,5.520238299E1 +2.064822000E3,5.901822557E1 +2.065074000E3,5.705952734E1 +2.065339000E3,6.136116330E1 +2.065603000E3,5.746483296E1 +2.065865000E3,5.867757380E1 +2.066141000E3,5.709322981E1 +2.066441000E3,5.775131141E1 +2.066691000E3,5.886237327E1 +2.067036000E3,5.617972984E1 +2.067288000E3,5.802507148E1 +2.067560000E3,6.044497816E1 +2.067891000E3,5.450044868E1 +2.068148000E3,5.616761260E1 +2.068412000E3,6.243097888E1 +2.068673000E3,5.783788439E1 +2.068946000E3,5.764761585E1 +2.069196000E3,5.683737954E1 +2.069468000E3,5.609890848E1 +2.069778000E3,5.465619904E1 +2.070034000E3,5.368960846E1 +2.070328000E3,6.032893819E1 +2.070574000E3,5.862927742E1 +2.070842000E3,5.635830209E1 +2.071101000E3,5.822198053E1 +2.071339000E3,5.691346983E1 +2.071597000E3,5.865778618E1 +2.071860000E3,5.810560725E1 +2.072128000E3,5.968009174E1 +2.072425000E3,5.833852533E1 +2.072667000E3,5.784540163E1 +2.072934000E3,5.644439458E1 +2.073184000E3,5.178260396E1 +2.073488000E3,5.751445421E1 +2.073769000E3,5.974800721E1 +2.074068000E3,6.534291023E1 +2.074348000E3,6.371076652E1 +2.074624000E3,6.156132937E1 +2.074877000E3,6.012113548E1 +2.075119000E3,6.026351151E1 +2.075377000E3,6.142675581E1 +2.075661000E3,6.194478144E1 +2.075914000E3,6.183865569E1 +2.076267000E3,6.387512541E1 +2.076547000E3,6.077311287E1 +2.076803000E3,6.130963963E1 +2.077056000E3,5.862622582E1 +2.077295000E3,5.463497219E1 +2.077610000E3,5.484231095E1 +2.077891000E3,6.099801434E1 +2.078171000E3,5.475621164E1 +2.078466000E3,5.955577801E1 +2.078709000E3,5.720097088E1 +2.078954000E3,5.661944912E1 +2.079224000E3,5.443336360E1 +2.079503000E3,5.917559782E1 +2.079800000E3,5.424380486E1 +2.080057000E3,6.013762169E1 +2.080307000E3,6.100643768E1 +2.080558000E3,6.205128007E1 +2.080810000E3,6.007904071E1 +2.081092000E3,6.423414837E1 +2.081354000E3,5.938817614E1 +2.081601000E3,6.006860062E1 +2.081845000E3,5.833570272E1 +2.082143000E3,5.962915676E1 +2.082396000E3,5.844615966E1 +2.082663000E3,5.932060291E1 +2.082921000E3,6.037844323E1 +2.083227000E3,5.719168160E1 +2.083487000E3,5.597578938E1 +2.083743000E3,5.236775830E1 +2.084062000E3,5.471900653E1 +2.084318000E3,5.178371688E1 +2.084618000E3,5.707729304E1 +2.084858000E3,5.526812689E1 +2.085154000E3,5.716405930E1 +2.085391000E3,5.478798233E1 +2.085687000E3,5.496315929E1 +2.085932000E3,5.701239101E1 +2.086228000E3,5.776438308E1 +2.086467000E3,5.628202894E1 +2.086760000E3,5.042244376E1 +2.087015000E3,5.775963511E1 +2.087362000E3,4.982890988E1 +2.087671000E3,4.785672217E1 +2.087922000E3,4.762697394E1 +2.088178000E3,5.046726223E1 +2.088438000E3,4.890262424E1 +2.088711000E3,5.501277631E1 +2.088981000E3,5.666001705E1 +2.089249000E3,6.014252161E1 +2.089513000E3,5.925311989E1 +2.089806000E3,6.173820636E1 +2.090063000E3,5.350884215E1 +2.090366000E3,5.736408779E1 +2.090744000E3,5.450936109E1 +2.091005000E3,5.763377323E1 +2.091253000E3,6.042269191E1 +2.091515000E3,5.484903903E1 +2.091757000E3,5.882101591E1 +2.092028000E3,5.833139845E1 +2.092280000E3,5.703430671E1 +2.092527000E3,5.247783814E1 +2.092809000E3,5.233323676E1 +2.093037000E3,5.202869643E1 +2.093354000E3,5.628845797E1 +2.093634000E3,5.325396544E1 +2.094006000E3,5.654992892E1 +2.094280000E3,5.713253789E1 +2.094541000E3,5.967664240E1 +2.094800000E3,5.750232678E1 +2.095069000E3,5.544480371E1 +2.095333000E3,5.462176641E1 +2.095596000E3,5.811248949E1 +2.095853000E3,6.196847972E1 +2.096192000E3,5.842850461E1 +2.096488000E3,5.597774452E1 +2.096726000E3,5.601282925E1 +2.097104000E3,5.625832805E1 +2.097364000E3,5.315488909E1 +2.097602000E3,5.287250653E1 +2.097844000E3,5.523708836E1 +2.098081000E3,5.724292600E1 +2.098340000E3,5.659511238E1 +2.098670000E3,5.675324149E1 +2.098945000E3,5.485884276E1 +2.099219000E3,5.694143956E1 +2.099469000E3,5.561655413E1 +2.099765000E3,5.844909410E1 +2.100011000E3,6.135621316E1 +2.100343000E3,5.968766012E1 +2.100584000E3,5.173347950E1 +2.100832000E3,5.415548255E1 +2.101090000E3,5.271968845E1 +2.101339000E3,5.007174890E1 +2.101624000E3,5.279525002E1 +2.101895000E3,5.358558767E1 +2.102197000E3,5.559048142E1 +2.102438000E3,5.476305303E1 +2.102705000E3,5.237114911E1 +2.102947000E3,5.014972007E1 +2.103218000E3,4.895902935E1 +2.103469000E3,5.192053997E1 +2.103853000E3,4.647138436E1 +2.104101000E3,4.837766327E1 +2.104448000E3,5.088929287E1 +2.104740000E3,5.561591777E1 +2.104997000E3,5.440319534E1 +2.105260000E3,5.347164399E1 +2.105561000E3,5.151610441E1 +2.105813000E3,5.075382634E1 +2.106121000E3,5.244425755E1 +2.106357000E3,5.269617654E1 +2.106663000E3,5.149027406E1 +2.106954000E3,5.659456733E1 +2.107266000E3,5.282561460E1 +2.107606000E3,5.407918273E1 +2.107883000E3,5.643922092E1 +2.108164000E3,5.169657105E1 +2.108480000E3,5.713744586E1 +2.108748000E3,5.931186178E1 +2.109003000E3,5.645689600E1 +2.109252000E3,5.322874786E1 +2.109552000E3,5.363731782E1 +2.109821000E3,5.353815648E1 +2.110077000E3,5.445551750E1 +2.110418000E3,5.491110228E1 +2.110669000E3,5.291647814E1 +2.110921000E3,5.202914132E1 +2.111180000E3,5.363241827E1 +2.111479000E3,5.566624291E1 +2.111721000E3,5.645238247E1 +2.112027000E3,5.458458697E1 +2.112294000E3,5.469783372E1 +2.112597000E3,5.582449562E1 +2.112854000E3,5.595416398E1 +2.113105000E3,5.113785865E1 +2.113352000E3,6.248282803E1 +2.113711000E3,5.880495226E1 +2.113968000E3,5.941805617E1 +2.114248000E3,5.561632009E1 +2.114507000E3,5.501810850E1 +2.114754000E3,5.936291007E1 +2.115053000E3,6.127733734E1 +2.115321000E3,6.057491273E1 +2.115616000E3,6.127323198E1 +2.115893000E3,5.760488174E1 +2.116193000E3,6.030881831E1 +2.116434000E3,5.967518116E1 +2.116722000E3,5.720938908E1 +2.117066000E3,5.605932878E1 +2.117338000E3,6.068190844E1 +2.117598000E3,5.400374866E1 +2.117892000E3,5.332007667E1 +2.118133000E3,4.991979059E1 +2.118428000E3,5.700198654E1 +2.118666000E3,5.878418983E1 +2.118922000E3,5.703766890E1 +2.119230000E3,5.731012811E1 +2.119515000E3,5.865622099E1 +2.119741000E3,5.772295719E1 +2.120015000E3,5.851982083E1 +2.120322000E3,5.958645129E1 +2.120616000E3,6.233814130E1 +2.120861000E3,6.002711287E1 +2.121162000E3,5.939190004E1 +2.121437000E3,5.758195225E1 +2.121690000E3,5.564648712E1 +2.121946000E3,5.336629511E1 +2.122218000E3,5.199121426E1 +2.122476000E3,5.906368298E1 +2.122759000E3,5.917930836E1 +2.123014000E3,5.824882047E1 +2.123266000E3,5.770359270E1 +2.123492000E3,5.695638802E1 +2.123777000E3,5.720151485E1 +2.124027000E3,6.045411810E1 +2.124327000E3,5.540258870E1 +2.124575000E3,5.828000252E1 +2.124835000E3,5.500577731E1 +2.125106000E3,5.926473821E1 +2.125354000E3,5.472888078E1 +2.125611000E3,5.530970077E1 +2.125862000E3,5.595037084E1 +2.126117000E3,5.439239133E1 +2.126432000E3,5.961943996E1 +2.126692000E3,5.841091801E1 +2.126944000E3,5.863137443E1 +2.127282000E3,5.731398304E1 +2.127577000E3,5.665374527E1 +2.127843000E3,5.476493539E1 +2.128129000E3,5.580929465E1 +2.128437000E3,5.565551021E1 +2.128739000E3,5.869101147E1 +2.129026000E3,5.827114612E1 +2.129307000E3,5.507536074E1 +2.129577000E3,5.532393691E1 +2.129934000E3,5.233850306E1 +2.130215000E3,5.514372423E1 +2.130466000E3,5.757947445E1 +2.130714000E3,6.126034226E1 +2.131015000E3,6.074916673E1 +2.131279000E3,5.864911171E1 +2.131564000E3,5.680524431E1 +2.131825000E3,6.002252741E1 +2.132078000E3,5.953076168E1 +2.132390000E3,6.027427680E1 +2.132647000E3,5.955779136E1 +2.132902000E3,5.835756058E1 +2.133223000E3,6.286787860E1 +2.133471000E3,6.057291506E1 +2.133724000E3,5.893793659E1 +2.134002000E3,5.508555746E1 +2.134257000E3,5.619881839E1 +2.134512000E3,5.505764062E1 +2.134784000E3,5.808922162E1 +2.135054000E3,5.334583096E1 +2.135313000E3,5.298019930E1 +2.135595000E3,5.025342296E1 +2.135812000E3,5.409382682E1 +2.136057000E3,5.580950424E1 +2.136332000E3,5.523743716E1 +2.136661000E3,5.499005541E1 +2.136917000E3,5.745623005E1 +2.137196000E3,5.149169849E1 +2.137449000E3,5.261206885E1 +2.137711000E3,5.487518376E1 +2.138022000E3,5.898871991E1 +2.138270000E3,5.852026830E1 +2.138564000E3,5.868858262E1 +2.138802000E3,5.736353209E1 +2.139066000E3,5.529465652E1 +2.139332000E3,5.762578865E1 +2.139672000E3,5.790185487E1 +2.139930000E3,5.792373283E1 +2.140278000E3,5.597904656E1 +2.140535000E3,5.355980456E1 +2.140856000E3,5.411887429E1 +2.141146000E3,5.094976839E1 +2.141467000E3,5.658279242E1 +2.141735000E3,6.043792292E1 +2.142041000E3,5.996632022E1 +2.142276000E3,6.230155616E1 +2.142526000E3,6.102528468E1 +2.142783000E3,5.770338577E1 +2.143124000E3,5.827243883E1 +2.143406000E3,5.367650147E1 +2.143645000E3,5.777094487E1 +2.143915000E3,5.851595499E1 +2.144175000E3,5.573729509E1 +2.144454000E3,5.467626304E1 +2.144700000E3,5.699765591E1 +2.144968000E3,5.692170932E1 +2.145246000E3,6.030210344E1 +2.145550000E3,5.876913066E1 +2.145797000E3,5.698149837E1 +2.146042000E3,5.982717784E1 +2.146368000E3,5.905293636E1 +2.146676000E3,5.947032966E1 +2.146922000E3,5.910471730E1 +2.147225000E3,6.065874797E1 +2.147524000E3,5.680135408E1 +2.147831000E3,5.451199701E1 +2.148090000E3,5.301325775E1 +2.148365000E3,5.466040661E1 +2.148665000E3,5.658013689E1 +2.148952000E3,5.410667827E1 +2.149249000E3,5.788683658E1 +2.149597000E3,5.873903650E1 +2.149910000E3,5.314379433E1 +2.150150000E3,5.564952940E1 +2.150451000E3,6.000220607E1 +2.150691000E3,6.235870620E1 +2.150965000E3,6.387461990E1 +2.151194000E3,6.491001134E1 +2.151449000E3,5.932544814E1 +2.151756000E3,6.117684525E1 +2.152011000E3,6.059885605E1 +2.152282000E3,6.303246617E1 +2.152596000E3,6.399854390E1 +2.152961000E3,6.063746268E1 +2.153223000E3,6.122116723E1 +2.153495000E3,5.809397592E1 +2.153749000E3,5.903784259E1 +2.153999000E3,6.047826717E1 +2.154283000E3,5.846467986E1 +2.154537000E3,6.226879102E1 +2.154785000E3,5.980611807E1 +2.155079000E3,5.787450321E1 +2.155375000E3,5.676059962E1 +2.155616000E3,5.395823696E1 +2.155912000E3,5.953639288E1 +2.156221000E3,5.971614724E1 +2.156510000E3,6.039969801E1 +2.156758000E3,5.898776738E1 +2.157015000E3,6.100474003E1 +2.157289000E3,5.750129682E1 +2.157591000E3,5.995540643E1 +2.157844000E3,5.628303244E1 +2.158104000E3,5.892686601E1 +2.158366000E3,5.712884748E1 +2.158667000E3,5.727860760E1 +2.158932000E3,5.313556696E1 +2.159288000E3,5.635583768E1 +2.159555000E3,5.929473664E1 +2.159809000E3,5.396180560E1 +2.160112000E3,5.807023999E1 +2.160354000E3,5.639240346E1 +2.160608000E3,5.917728814E1 +2.160855000E3,5.429000157E1 +2.161130000E3,5.397827395E1 +2.161395000E3,5.647751800E1 +2.161656000E3,5.342605760E1 +2.162007000E3,5.324373839E1 +2.162263000E3,5.439383591E1 +2.162517000E3,5.727066505E1 +2.162888000E3,5.995593964E1 +2.163140000E3,6.130649482E1 +2.163392000E3,6.228130821E1 +2.163644000E3,6.279179388E1 +2.163938000E3,5.559527300E1 +2.164178000E3,5.200550071E1 +2.164481000E3,5.797363767E1 +2.164757000E3,5.902554678E1 +2.165040000E3,5.834647622E1 +2.165303000E3,5.713285380E1 +2.165575000E3,6.343633700E1 +2.165850000E3,5.896208706E1 +2.166219000E3,5.624501583E1 +2.166483000E3,5.696603075E1 +2.166769000E3,5.736978604E1 +2.167027000E3,5.837475894E1 +2.167278000E3,5.768129207E1 +2.167593000E3,5.660761865E1 +2.167856000E3,5.680076310E1 +2.168110000E3,5.883044450E1 +2.168385000E3,5.772028600E1 +2.168649000E3,5.342008664E1 +2.168914000E3,5.359113324E1 +2.169168000E3,5.849769703E1 +2.169536000E3,6.267181821E1 +2.169793000E3,5.719603223E1 +2.170040000E3,5.397233107E1 +2.170287000E3,4.861027503E1 +2.170579000E3,5.741564583E1 +2.170822000E3,6.207812430E1 +2.171115000E3,5.827753689E1 +2.171365000E3,6.042202215E1 +2.171629000E3,5.516417228E1 +2.171895000E3,4.912315476E1 +2.172163000E3,4.718316305E1 +2.172446000E3,5.363129541E1 +2.172813000E3,5.322378335E1 +2.173087000E3,5.228499961E1 +2.173349000E3,5.364722432E1 +2.173618000E3,5.964999675E1 +2.173917000E3,6.116591719E1 +2.174174000E3,5.668310324E1 +2.174436000E3,5.538937699E1 +2.174688000E3,5.539330891E1 +2.174944000E3,5.678019084E1 +2.175197000E3,5.655985061E1 +2.175490000E3,6.211643319E1 +2.175751000E3,5.899842059E1 +2.176153000E3,6.042080027E1 +2.176454000E3,5.956376587E1 +2.176730000E3,5.896716838E1 +2.177048000E3,5.729778676E1 +2.177305000E3,5.512323216E1 +2.177616000E3,5.573124529E1 +2.177883000E3,5.390669828E1 +2.178139000E3,5.435017850E1 +2.178403000E3,5.275779180E1 +2.178672000E3,5.469054235E1 +2.178938000E3,5.701832565E1 +2.179201000E3,6.063134316E1 +2.179540000E3,6.461030243E1 +2.179799000E3,6.345934666E1 +2.180043000E3,6.255021373E1 +2.180348000E3,6.265836689E1 +2.180640000E3,6.125083403E1 +2.180878000E3,5.721943432E1 +2.181125000E3,5.584429631E1 +2.181407000E3,5.679219567E1 +2.181647000E3,5.506189996E1 +2.181962000E3,5.950753578E1 +2.182227000E3,5.684863204E1 +2.182499000E3,5.318048388E1 +2.182825000E3,5.856807028E1 +2.183124000E3,6.201159961E1 +2.183360000E3,5.994279105E1 +2.183661000E3,6.155626338E1 +2.183904000E3,5.760612799E1 +2.184197000E3,5.557219911E1 +2.184436000E3,5.720299401E1 +2.184730000E3,5.496492062E1 +2.184965000E3,5.287669523E1 +2.185272000E3,5.534018340E1 +2.185572000E3,5.047897567E1 +2.185897000E3,5.289532450E1 +2.186149000E3,5.169587435E1 +2.186428000E3,5.811856565E1 +2.186722000E3,5.829930976E1 +2.187016000E3,5.767171180E1 +2.187297000E3,5.167293983E1 +2.187542000E3,5.634712904E1 +2.187793000E3,5.452173951E1 +2.188038000E3,5.242356157E1 +2.188332000E3,5.476946331E1 +2.188570000E3,5.506415879E1 +2.188807000E3,5.842757277E1 +2.189123000E3,5.579731569E1 +2.189400000E3,5.735467547E1 +2.189707000E3,5.510643622E1 +2.189947000E3,5.399605596E1 +2.190247000E3,5.231812124E1 +2.190482000E3,5.397423501E1 +2.190722000E3,5.467291530E1 +2.190972000E3,5.750340972E1 +2.191219000E3,5.451621797E1 +2.191527000E3,5.544744059E1 +2.191775000E3,5.570906247E1 +2.192040000E3,5.570238792E1 +2.192395000E3,5.704729905E1 +2.192674000E3,5.662202644E1 +2.192969000E3,6.130245708E1 +2.193206000E3,5.842239411E1 +2.193505000E3,5.813812757E1 +2.193745000E3,5.643123308E1 +2.194038000E3,5.810403241E1 +2.194275000E3,5.863690353E1 +2.194574000E3,5.519980518E1 +2.194810000E3,5.381530940E1 +2.195092000E3,5.781601666E1 +2.195335000E3,5.699265058E1 +2.195608000E3,5.477338243E1 +2.195929000E3,5.695412826E1 +2.196188000E3,5.575935497E1 +2.196439000E3,5.738570553E1 +2.196686000E3,6.194168224E1 +2.196969000E3,5.888525061E1 +2.197270000E3,5.830791470E1 +2.197516000E3,5.904778886E1 +2.197822000E3,5.987539712E1 +2.198117000E3,5.910637217E1 +2.198355000E3,5.676446576E1 +2.198673000E3,5.632729175E1 +2.198920000E3,5.826507178E1 +2.199227000E3,6.221847088E1 +2.199493000E3,6.023584539E1 +2.199739000E3,6.378124478E1 +2.199975000E3,6.457706819E1 +2.200218000E3,5.781084826E1 +2.200471000E3,5.833307765E1 +2.200715000E3,5.849295856E1 +2.200984000E3,5.695016071E1 +2.201255000E3,5.945608920E1 +2.201511000E3,5.923858391E1 +2.201821000E3,5.975381188E1 +2.202050000E3,5.657071344E1 +2.202297000E3,5.582353283E1 +2.202552000E3,5.634201272E1 +2.202803000E3,5.842061156E1 +2.203080000E3,5.511323996E1 +2.203339000E3,5.333816234E1 +2.203589000E3,5.586132206E1 +2.203867000E3,5.612282959E1 +2.204151000E3,5.390907932E1 +2.204405000E3,5.581501331E1 +2.204648000E3,5.691201261E1 +2.204938000E3,5.605209961E1 +2.205271000E3,5.337227455E1 +2.205520000E3,5.726868677E1 +2.205824000E3,5.678400386E1 +2.206068000E3,5.598615724E1 +2.206327000E3,6.245548090E1 +2.206634000E3,5.788335624E1 +2.206927000E3,5.672312442E1 +2.207166000E3,5.700846075E1 +2.207464000E3,5.693157148E1 +2.207703000E3,5.667671942E1 +2.207995000E3,5.655907845E1 +2.208344000E3,5.694003799E1 +2.208592000E3,5.812693102E1 +2.208844000E3,5.305590014E1 +2.209133000E3,5.963333488E1 +2.209376000E3,6.125764761E1 +2.209621000E3,5.708540532E1 +2.209865000E3,5.539532482E1 +2.210177000E3,6.086117928E1 +2.210432000E3,5.871599576E1 +2.210705000E3,5.720891289E1 +2.210929000E3,5.859137268E1 +2.211185000E3,5.492761595E1 +2.211566000E3,5.458369125E1 +2.211811000E3,5.704243717E1 +2.212094000E3,5.948204172E1 +2.212325000E3,5.442994388E1 +2.212570000E3,5.607391365E1 +2.212815000E3,5.349643391E1 +2.213089000E3,5.518134225E1 +2.213397000E3,5.879499176E1 +2.213659000E3,5.918920409E1 +2.213917000E3,6.317166487E1 +2.214205000E3,5.773325998E1 +2.214505000E3,6.021667659E1 +2.214834000E3,5.707564648E1 +2.215074000E3,5.411436798E1 +2.215412000E3,5.705541238E1 +2.215699000E3,6.721672427E1 +2.215946000E3,6.130402498E1 +2.216241000E3,5.914242022E1 +2.216493000E3,5.881747375E1 +2.216786000E3,5.920115687E1 +2.217030000E3,5.981753209E1 +2.217325000E3,5.379848698E1 +2.217566000E3,5.498057230E1 +2.217931000E3,5.647867672E1 +2.218210000E3,5.460935805E1 +2.218440000E3,5.579228446E1 +2.218740000E3,5.598523495E1 +2.218992000E3,5.501198671E1 +2.219248000E3,5.270876730E1 +2.219495000E3,5.711255338E1 +2.219767000E3,5.276578476E1 +2.220009000E3,6.171644376E1 +2.220307000E3,5.760035427E1 +2.220557000E3,6.039071701E1 +2.220820000E3,5.947563028E1 +2.221166000E3,5.781157464E1 +2.221459000E3,5.689764898E1 +2.221740000E3,5.361204154E1 +2.221998000E3,5.565584232E1 +2.222252000E3,6.236264054E1 +2.222508000E3,5.583706888E1 +2.222794000E3,5.998886151E1 +2.223038000E3,6.067027795E1 +2.223281000E3,5.953550256E1 +2.223512000E3,6.087865846E1 +2.223764000E3,5.880177247E1 +2.224056000E3,5.532032645E1 +2.224389000E3,5.110554887E1 +2.224697000E3,6.082114583E1 +2.224957000E3,6.332269799E1 +2.225225000E3,5.859152014E1 +2.225521000E3,6.312344162E1 +2.225760000E3,6.208500503E1 +2.226003000E3,6.030377984E1 +2.226280000E3,5.890306026E1 +2.226553000E3,6.412257006E1 +2.226813000E3,5.959239884E1 +2.227137000E3,5.603893495E1 +2.227460000E3,5.807576772E1 +2.227717000E3,6.034272760E1 +2.227950000E3,5.678924442E1 +2.228211000E3,5.767938832E1 +2.228489000E3,4.973605337E1 +2.228742000E3,5.227056153E1 +2.229007000E3,4.524576382E1 +2.229320000E3,5.163901012E1 +2.229633000E3,5.791269320E1 +2.229909000E3,5.832692980E1 +2.230223000E3,5.512940778E1 +2.230487000E3,5.639998631E1 +2.230845000E3,6.012111222E1 +2.231113000E3,6.632176219E1 +2.231407000E3,6.692769565E1 +2.231662000E3,6.409372191E1 +2.231945000E3,6.268702605E1 +2.232208000E3,6.192012265E1 +2.232460000E3,5.923306273E1 +2.232717000E3,5.726340446E1 +2.233005000E3,5.708270925E1 +2.233256000E3,6.172203942E1 +2.233510000E3,6.197059155E1 +2.233807000E3,6.691458644E1 +2.234160000E3,6.165007134E1 +2.234422000E3,6.172053486E1 +2.234714000E3,6.148833899E1 +2.234974000E3,6.190331921E1 +2.235253000E3,5.938090919E1 +2.235479000E3,6.223060920E1 +2.235722000E3,6.133640397E1 +2.236028000E3,6.400294095E1 +2.236269000E3,6.581462957E1 +2.236516000E3,6.094953675E1 +2.236828000E3,5.792232456E1 +2.237124000E3,5.750665846E1 +2.237367000E3,5.360734442E1 +2.237668000E3,5.239836763E1 +2.237914000E3,5.189659577E1 +2.238168000E3,5.779541581E1 +2.238431000E3,5.409030702E1 +2.238689000E3,5.064192938E1 +2.238941000E3,4.890244292E1 +2.239235000E3,4.958738332E1 +2.239486000E3,5.093509792E1 +2.239725000E3,5.421091975E1 +2.239970000E3,6.074883769E1 +2.240298000E3,5.611992467E1 +2.240604000E3,4.988071111E1 +2.240900000E3,4.952063126E1 +2.241187000E3,5.282005772E1 +2.241428000E3,5.672648648E1 +2.241685000E3,5.807464117E1 +2.241973000E3,5.565097745E1 +2.242224000E3,5.410363002E1 +2.242475000E3,5.548804216E1 +2.242720000E3,5.862108370E1 +2.242959000E3,5.101243713E1 +2.243259000E3,5.340920814E1 +2.243564000E3,5.471013043E1 +2.243801000E3,5.474536753E1 +2.244062000E3,5.454012147E1 +2.244333000E3,5.594751460E1 +2.244637000E3,5.486159050E1 +2.244913000E3,5.317501502E1 +2.245138000E3,5.100209753E1 +2.245397000E3,5.436827206E1 +2.245643000E3,5.483479867E1 +2.245916000E3,5.150486026E1 +2.246182000E3,5.049924887E1 +2.246449000E3,5.226067252E1 +2.246744000E3,5.389432372E1 +2.247057000E3,6.032791953E1 +2.247330000E3,5.966662928E1 +2.247666000E3,5.824962285E1 +2.247962000E3,5.700720490E1 +2.248202000E3,6.373200887E1 +2.248495000E3,6.648419927E1 +2.248743000E3,5.542652488E1 +2.249036000E3,5.256926371E1 +2.249272000E3,6.053195001E1 +2.249564000E3,4.959074314E1 +2.249800000E3,5.054384460E1 +2.250136000E3,5.008489809E1 +2.250431000E3,5.752384263E1 +2.250666000E3,5.367007636E1 +2.250931000E3,4.851936559E1 +2.251210000E3,4.965482987E1 +2.251497000E3,5.733244198E1 +2.251772000E3,5.370188093E1 +2.251997000E3,5.388650114E1 +2.252246000E3,5.331606518E1 +2.252516000E3,5.534782747E1 +2.252818000E3,5.271944154E1 +2.253047000E3,5.188974945E1 +2.253402000E3,5.040855384E1 +2.253689000E3,5.348452962E1 +2.253965000E3,5.685197701E1 +2.254240000E3,5.699151925E1 +2.254539000E3,5.217481719E1 +2.254794000E3,5.255063115E1 +2.255035000E3,5.258436032E1 +2.255283000E3,5.228429265E1 +2.255592000E3,5.187189315E1 +2.255851000E3,5.089851896E1 +2.256105000E3,5.323192817E1 +2.256387000E3,5.259240607E1 +2.256752000E3,5.489099725E1 +2.257016000E3,5.140699592E1 +2.257276000E3,5.478139635E1 +2.257600000E3,5.508183343E1 +2.257864000E3,5.539199709E1 +2.258160000E3,5.879728075E1 +2.258399000E3,6.145510373E1 +2.258645000E3,6.018082278E1 +2.258890000E3,6.203490998E1 +2.259131000E3,6.051201097E1 +2.259385000E3,5.741582229E1 +2.259629000E3,5.742200481E1 +2.259994000E3,5.205318956E1 +2.260295000E3,5.807019657E1 +2.260539000E3,5.843419178E1 +2.260841000E3,5.543595349E1 +2.261104000E3,5.208978608E1 +2.261348000E3,5.288295424E1 +2.261601000E3,5.593156434E1 +2.261856000E3,5.600009221E1 +2.262108000E3,5.581775464E1 +2.262358000E3,5.037081152E1 +2.262613000E3,5.059162693E1 +2.262916000E3,5.459372597E1 +2.263271000E3,5.581642194E1 +2.263548000E3,5.702582989E1 +2.263802000E3,5.531282217E1 +2.264049000E3,5.356460573E1 +2.264318000E3,5.682743962E1 +2.264564000E3,5.353127135E1 +2.264854000E3,5.962134934E1 +2.265080000E3,5.858968032E1 +2.265326000E3,5.681259568E1 +2.265625000E3,5.635120121E1 +2.265871000E3,5.433379551E1 +2.266211000E3,4.913835205E1 +2.266510000E3,5.243179137E1 +2.266783000E3,4.886918417E1 +2.267043000E3,4.774131335E1 +2.267292000E3,4.892025491E1 +2.267553000E3,4.710213612E1 +2.267796000E3,4.847827931E1 +2.268042000E3,5.624471818E1 +2.268281000E3,5.286977188E1 +2.268548000E3,5.683989489E1 +2.268800000E3,5.459251055E1 +2.269086000E3,5.272841607E1 +2.269389000E3,5.585343514E1 +2.269616000E3,5.452972356E1 +2.269865000E3,5.183250423E1 +2.270167000E3,4.733442261E1 +2.270442000E3,4.736450762E1 +2.270667000E3,4.430645798E1 +2.270915000E3,4.635257501E1 +2.271160000E3,4.914582650E1 +2.271407000E3,4.938157659E1 +2.271656000E3,4.788630853E1 +2.271896000E3,4.778446083E1 +2.272198000E3,5.081637081E1 +2.272482000E3,4.630509256E1 +2.272722000E3,4.551027932E1 +2.273048000E3,5.074623045E1 +2.273321000E3,4.689236254E1 +2.273562000E3,4.960242652E1 +2.273859000E3,5.310274016E1 +2.274104000E3,5.391997859E1 +2.274392000E3,4.854992165E1 +2.274648000E3,4.610161890E1 +2.274915000E3,5.325141064E1 +2.275196000E3,4.823989698E1 +2.275460000E3,5.167706762E1 +2.275772000E3,4.424461998E1 +2.276008000E3,4.957193490E1 +2.276258000E3,4.220429916E1 +2.276545000E3,4.614900045E1 +2.276809000E3,4.247109284E1 +2.277119000E3,5.104311310E1 +2.277385000E3,4.898949856E1 +2.277651000E3,5.033981280E1 +2.277920000E3,4.504255509E1 +2.278210000E3,4.851295637E1 +2.278452000E3,4.975001222E1 +2.278771000E3,5.198599663E1 +2.279101000E3,5.078534391E1 +2.279348000E3,5.056977572E1 +2.279614000E3,4.645427419E1 +2.279894000E3,4.837428182E1 +2.280121000E3,4.672417188E1 +2.280416000E3,4.338010131E1 +2.280671000E3,4.552410696E1 +2.280941000E3,4.107346609E1 +2.281195000E3,4.850760260E1 +2.281477000E3,4.449785068E1 +2.281730000E3,3.834743898E1 +2.282028000E3,3.160451104E1 +2.282275000E3,2.921367430E1 +2.282509000E3,3.929432216E1 +2.282771000E3,3.560833020E1 +2.283021000E3,4.204425230E1 +2.283277000E3,4.897505461E1 +2.283570000E3,4.492050546E1 +2.283802000E3,4.549624302E1 +2.284053000E3,4.703134831E1 +2.284302000E3,4.492779574E1 +2.284580000E3,5.573526523E1 +2.284888000E3,4.583204799E1 +2.285186000E3,3.987632497E1 +2.285426000E3,4.276483306E1 +2.285670000E3,4.196646636E1 +2.285974000E3,4.127295807E1 +2.286241000E3,3.392540836E1 +2.286513000E3,3.045281657E1 +2.286755000E3,3.056149566E1 +2.287058000E3,4.234115907E1 +2.287358000E3,4.148011807E1 +2.287615000E3,4.752316696E1 +2.287890000E3,4.261643768E1 +2.288186000E3,3.531031146E1 +2.288451000E3,3.336926272E1 +2.288830000E3,3.217663691E1 +2.289083000E3,3.280943829E1 +2.289350000E3,4.037024361E1 +2.289606000E3,4.463743016E1 +2.289870000E3,3.926930450E1 +2.290142000E3,3.549021170E1 +2.290376000E3,3.657210104E1 +2.290669000E3,3.609483404E1 +2.290917000E3,3.935001060E1 +2.291190000E3,3.968762383E1 +2.291417000E3,3.622062011E1 +2.291698000E3,5.052972627E1 +2.292019000E3,4.472329620E1 +2.292314000E3,3.528869928E1 +2.292580000E3,3.171318762E1 +2.292867000E3,3.293682859E1 +2.293112000E3,2.980662334E1 +2.293408000E3,3.108877030E1 +2.293645000E3,3.411108767E1 +2.293948000E3,2.929195023E1 +2.294231000E3,2.830259325E1 +2.294484000E3,2.905088910E1 +2.294732000E3,3.046102835E1 +2.295049000E3,2.679058069E1 +2.295347000E3,2.620731663E1 +2.295594000E3,3.509528145E1 +2.295836000E3,2.657946529E1 +2.296130000E3,2.511368258E1 +2.296378000E3,2.555955915E1 +2.296634000E3,2.785949260E1 +2.296875000E3,2.654407944E1 +2.297117000E3,3.658368449E1 +2.297412000E3,3.412054652E1 +2.297648000E3,3.448252102E1 +2.297956000E3,3.528486686E1 +2.298205000E3,3.265291425E1 +2.298494000E3,2.963788314E1 +2.298798000E3,3.350933300E1 +2.299085000E3,3.038301619E1 +2.299338000E3,3.357142506E1 +2.299610000E3,4.744800671E1 +2.299868000E3,3.435626076E1 +2.300142000E3,3.368274389E1 +2.300402000E3,2.881246111E1 +2.300655000E3,3.097762310E1 +2.300898000E3,2.947567056E1 +2.301182000E3,3.214187359E1 +2.301423000E3,3.421070745E1 +2.301786000E3,5.117970534E1 +2.302087000E3,5.037784077E1 +2.302335000E3,5.283937176E1 +2.302644000E3,5.164119106E1 +2.302941000E3,5.300709748E1 +2.303240000E3,4.713488810E1 +2.303488000E3,4.524114677E1 +2.303739000E3,3.080285972E1 +2.304022000E3,2.293405577E1 +2.304254000E3,2.235464386E1 +2.304552000E3,2.949911358E1 +2.304876000E3,4.141349798E1 +2.305182000E3,4.156611078E1 +2.305491000E3,4.347125429E1 +2.305797000E3,4.579894404E1 +2.306107000E3,4.646123013E1 +2.306358000E3,4.517240887E1 +2.306604000E3,5.308475174E1 +2.306870000E3,4.681256924E1 +2.307168000E3,2.942058533E1 +2.307450000E3,2.986114457E1 +2.307717000E3,3.195150356E1 +2.308031000E3,3.775567348E1 +2.308265000E3,3.823556499E1 +2.308570000E3,2.909536341E1 +2.308842000E3,3.096070220E1 +2.309098000E3,4.060687649E1 +2.309391000E3,4.820113946E1 +2.309687000E3,4.619079404E1 +2.309928000E3,4.304793785E1 +2.310216000E3,4.976144450E1 +2.310446000E3,4.779148829E1 +2.310686000E3,5.167703897E1 +2.310979000E3,3.773719280E1 +2.311248000E3,2.923821784E1 +2.311466000E3,2.654081756E1 +2.311763000E3,2.616593312E1 +2.312001000E3,2.460963519E1 +2.312285000E3,2.554564289E1 +2.312588000E3,3.572755404E1 +2.312856000E3,4.274835909E1 +2.313074000E3,4.355953935E1 +2.313375000E3,5.377727845E1 +2.313611000E3,5.435235813E1 +2.313893000E3,5.477010993E1 +2.314137000E3,5.142421895E1 +2.314483000E3,4.794670725E1 +2.314780000E3,5.149445419E1 +2.315019000E3,5.127618051E1 +2.315306000E3,4.939341348E1 +2.315533000E3,4.928824788E1 +2.315832000E3,4.617335031E1 +2.316069000E3,3.696469062E1 +2.316377000E3,4.552948924E1 +2.316627000E3,4.672923062E1 +2.316913000E3,4.504192742E1 +2.317215000E3,4.364234368E1 +2.317558000E3,4.231291453E1 +2.317853000E3,4.886663905E1 +2.318118000E3,4.492895691E1 +2.318412000E3,4.464681620E1 +2.318711000E3,4.698360224E1 +2.318950000E3,4.454369095E1 +2.319250000E3,4.409609939E1 +2.319494000E3,4.283121809E1 +2.319793000E3,4.398770219E1 +2.320040000E3,4.728522548E1 +2.320336000E3,4.533798443E1 +2.320660000E3,4.548359371E1 +2.320908000E3,4.366718291E1 +2.321152000E3,5.139935964E1 +2.321408000E3,4.747980864E1 +2.321709000E3,3.867643032E1 +2.321952000E3,4.294445900E1 +2.322196000E3,4.336333736E1 +2.322445000E3,3.890531131E1 +2.322682000E3,4.087281677E1 +2.322980000E3,3.979668464E1 +2.323225000E3,4.157042707E1 +2.323553000E3,4.515881082E1 +2.323886000E3,3.868360739E1 +2.324184000E3,4.839319184E1 +2.324428000E3,4.298284223E1 +2.324669000E3,4.433761346E1 +2.324987000E3,4.011512195E1 +2.325233000E3,3.478551365E1 +2.325486000E3,4.180203002E1 +2.325789000E3,4.323726184E1 +2.326086000E3,3.985791110E1 +2.326333000E3,3.946244529E1 +2.326667000E3,4.066537977E1 +2.326925000E3,3.986903649E1 +2.327223000E3,4.142461274E1 +2.327521000E3,3.461788217E1 +2.327778000E3,3.326602717E1 +2.328102000E3,4.357074645E1 +2.328367000E3,5.496493564E1 +2.328618000E3,4.413482695E1 +2.328920000E3,4.170999616E1 +2.329183000E3,4.107694173E1 +2.329486000E3,5.342371220E1 +2.329729000E3,5.103134188E1 +2.330028000E3,4.716459977E1 +2.330382000E3,4.916498276E1 +2.330642000E3,4.801561309E1 +2.330930000E3,4.860033329E1 +2.331211000E3,5.037441690E1 +2.331463000E3,5.227972551E1 +2.331719000E3,4.516533742E1 +2.331971000E3,4.623606604E1 +2.332268000E3,3.207985320E1 +2.332513000E3,3.485208029E1 +2.332801000E3,4.367306984E1 +2.333109000E3,4.764897626E1 +2.333397000E3,4.844411921E1 +2.333779000E3,4.624834459E1 +2.334088000E3,4.492130047E1 +2.334331000E3,4.172849812E1 +2.334618000E3,4.243441154E1 +2.334859000E3,4.155300890E1 +2.335165000E3,3.508017133E1 +2.335414000E3,3.102497597E1 +2.335689000E3,3.346102792E1 +2.335938000E3,2.980210924E1 +2.336237000E3,2.815695425E1 +2.336480000E3,4.530841757E1 +2.336824000E3,4.476742737E1 +2.337075000E3,4.460293889E1 +2.337332000E3,5.054872999E1 +2.337583000E3,4.962100100E1 +2.337845000E3,5.224787063E1 +2.338132000E3,4.845338775E1 +2.338374000E3,4.675501048E1 +2.338651000E3,4.806540095E1 +2.338903000E3,4.707869991E1 +2.339145000E3,4.747595477E1 +2.339395000E3,3.449909829E1 +2.339700000E3,4.619360178E1 +2.340033000E3,4.785644508E1 +2.340329000E3,4.721347586E1 +2.340579000E3,4.302992844E1 +2.340828000E3,4.629706327E1 +2.341122000E3,4.550319757E1 +2.341368000E3,4.510038554E1 +2.341611000E3,4.752886315E1 +2.341876000E3,4.524122211E1 +2.342135000E3,2.990386366E1 +2.342396000E3,3.647672774E1 +2.342679000E3,2.854891758E1 +2.342936000E3,3.995722191E1 +2.343310000E3,4.501906630E1 +2.343555000E3,4.872212276E1 +2.343839000E3,4.566863325E1 +2.344134000E3,3.946814595E1 +2.344384000E3,4.796193013E1 +2.344656000E3,4.858552009E1 +2.344961000E3,4.902627763E1 +2.345257000E3,4.467711671E1 +2.345498000E3,3.756709071E1 +2.345764000E3,2.964206509E1 +2.346064000E3,4.283044167E1 +2.346415000E3,4.191014925E1 +2.346743000E3,4.910031818E1 +2.347021000E3,5.022624274E1 +2.347337000E3,5.257970130E1 +2.347586000E3,4.764257555E1 +2.347831000E3,4.353349182E1 +2.348126000E3,4.318604201E1 +2.348436000E3,4.825752031E1 +2.348710000E3,4.464987037E1 +2.348968000E3,4.690302679E1 +2.349225000E3,4.464063657E1 +2.349495000E3,5.114524492E1 +2.349740000E3,4.345049547E1 +2.350133000E3,4.655800825E1 +2.350382000E3,4.419356370E1 +2.350688000E3,4.308388818E1 +2.350960000E3,4.964188075E1 +2.351269000E3,5.137042419E1 +2.351542000E3,4.751708919E1 +2.351836000E3,3.239228651E1 +2.352067000E3,3.331178705E1 +2.352357000E3,4.628654550E1 +2.352625000E3,4.653844798E1 +2.352938000E3,4.419734850E1 +2.353231000E3,3.771763539E1 +2.353458000E3,3.489550836E1 +2.353713000E3,2.965581776E1 +2.353962000E3,3.457100474E1 +2.354201000E3,3.291595658E1 +2.354446000E3,2.791603976E1 +2.354711000E3,3.307930362E1 +2.355027000E3,5.311162000E1 +2.355290000E3,4.688373373E1 +2.355581000E3,3.663543876E1 +2.355868000E3,2.834403560E1 +2.356176000E3,5.001680718E1 +2.356518000E3,5.349221251E1 +2.356780000E3,5.234097025E1 +2.357043000E3,4.476475434E1 +2.357349000E3,5.160193390E1 +2.357584000E3,4.375385010E1 +2.357840000E3,3.709166207E1 +2.358125000E3,2.927191182E1 +2.358378000E3,4.114289062E1 +2.358676000E3,4.266518399E1 +2.358921000E3,4.641380631E1 +2.359210000E3,4.551221179E1 +2.359545000E3,4.099683883E1 +2.359801000E3,5.202602500E1 +2.360072000E3,5.207875379E1 +2.360343000E3,4.670310433E1 +2.360619000E3,4.619168123E1 +2.360865000E3,4.348453495E1 +2.361113000E3,4.603882932E1 +2.361353000E3,4.061885274E1 +2.361649000E3,4.873355826E1 +2.361884000E3,4.796347566E1 +2.362174000E3,4.419543811E1 +2.362420000E3,4.412529768E1 +2.362674000E3,4.315515456E1 +2.363006000E3,3.718353950E1 +2.363303000E3,4.131746877E1 +2.363556000E3,3.462830696E1 +2.363825000E3,3.224809166E1 +2.364105000E3,2.946532539E1 +2.364420000E3,4.082560353E1 +2.364671000E3,4.169760242E1 +2.364916000E3,4.728483165E1 +2.365158000E3,4.384961396E1 +2.365493000E3,3.327447630E1 +2.365797000E3,2.406470586E1 +2.366141000E3,2.410271882E1 +2.366422000E3,4.124818432E1 +2.366699000E3,4.300386829E1 +2.366994000E3,4.592409288E1 +2.367239000E3,4.402074721E1 +2.367492000E3,4.331525310E1 +2.367744000E3,4.351543939E1 +2.368045000E3,4.861325913E1 +2.368277000E3,4.345520025E1 +2.368543000E3,5.037549285E1 +2.368790000E3,3.455268589E1 +2.369034000E3,3.454484220E1 +2.369300000E3,3.436570372E1 +2.369544000E3,3.180799867E1 +2.369820000E3,4.460893996E1 +2.370091000E3,5.635981603E1 +2.370383000E3,4.932803438E1 +2.370635000E3,5.123791361E1 +2.370939000E3,4.749913119E1 +2.371193000E3,4.606624254E1 +2.371498000E3,4.453668838E1 +2.371779000E3,4.424564317E1 +2.372081000E3,5.022357768E1 +2.372347000E3,4.983363592E1 +2.372720000E3,4.311987242E1 +2.372969000E3,4.071927446E1 +2.373234000E3,3.624584431E1 +2.373535000E3,3.338407859E1 +2.373777000E3,2.744030282E1 +2.374025000E3,4.017686066E1 +2.374281000E3,4.153799732E1 +2.374537000E3,5.163713220E1 +2.374786000E3,4.970373114E1 +2.375033000E3,4.601563593E1 +2.375284000E3,4.943210146E1 +2.375577000E3,5.208741018E1 +2.375935000E3,4.780129348E1 +2.376167000E3,4.632707744E1 +2.376478000E3,5.008962536E1 +2.376734000E3,4.691729314E1 +2.376987000E3,4.593220796E1 +2.377250000E3,4.703621615E1 +2.377550000E3,4.863501898E1 +2.377838000E3,4.747349412E1 +2.378102000E3,4.430216971E1 +2.378373000E3,5.038477253E1 +2.378648000E3,4.679597376E1 +2.378873000E3,3.998762784E1 +2.379232000E3,4.140472709E1 +2.379480000E3,3.803559367E1 +2.379735000E3,4.292956565E1 +2.379993000E3,3.275484639E1 +2.380260000E3,3.159298587E1 +2.380513000E3,3.066195183E1 +2.380756000E3,4.846258942E1 +2.381012000E3,4.617374426E1 +2.381278000E3,4.338282331E1 +2.381580000E3,2.990070560E1 +2.381878000E3,3.384826320E1 +2.382127000E3,4.352773294E1 +2.382476000E3,3.711143795E1 +2.382756000E3,4.818117865E1 +2.383001000E3,4.694356023E1 +2.383312000E3,4.713242320E1 +2.383556000E3,4.945634369E1 +2.383815000E3,3.710449888E1 +2.384109000E3,4.990714727E1 +2.384350000E3,5.101970483E1 +2.384663000E3,4.290224010E1 +2.384917000E3,3.958873166E1 +2.385203000E3,4.207919898E1 +2.385583000E3,3.937588823E1 +2.385864000E3,3.927490117E1 +2.386122000E3,3.708577985E1 +2.386378000E3,3.104425869E1 +2.386630000E3,2.579918418E1 +2.386935000E3,4.201717352E1 +2.387186000E3,4.469788103E1 +2.387445000E3,3.928301867E1 +2.387699000E3,4.425054811E1 +2.387999000E3,2.901032620E1 +2.388242000E3,2.431535493E1 +2.388542000E3,4.330806788E1 +2.388866000E3,4.587852948E1 +2.389138000E3,5.068663336E1 +2.389420000E3,5.151872270E1 +2.389764000E3,4.501157372E1 +2.390012000E3,4.508008781E1 +2.390288000E3,4.471818734E1 +2.390546000E3,4.453717168E1 +2.390828000E3,3.435610332E1 +2.391113000E3,3.644941891E1 +2.391398000E3,3.741409627E1 +2.391658000E3,4.311052254E1 +2.391963000E3,3.924877335E1 +2.392296000E3,3.956869731E1 +2.392537000E3,3.230149795E1 +2.392786000E3,2.941450360E1 +2.393103000E3,3.366208400E1 +2.393349000E3,2.633153711E1 +2.393653000E3,2.492589605E1 +2.393892000E3,3.518582310E1 +2.394201000E3,3.668564238E1 +2.394454000E3,3.528359554E1 +2.394744000E3,3.673717548E1 +2.395034000E3,2.851979476E1 +2.395378000E3,2.558396774E1 +2.395660000E3,3.919896752E1 +2.395930000E3,3.339597104E1 +2.396187000E3,3.351358057E1 +2.396431000E3,3.743420456E1 +2.396691000E3,4.220523227E1 +2.396991000E3,3.500233403E1 +2.397251000E3,3.475187142E1 +2.397513000E3,3.604068947E1 +2.397821000E3,4.628512725E1 +2.398126000E3,4.463943287E1 +2.398428000E3,4.311458163E1 +2.398781000E3,4.375329409E1 +2.399076000E3,3.749705009E1 +2.399316000E3,4.116349149E1 +2.399615000E3,4.694603167E1 +2.399852000E3,5.327851923E1 +2.400143000E3,5.028800274E1 +2.400380000E3,5.055607260E1 +2.400618000E3,4.184216649E1 +2.400901000E3,4.280576865E1 +2.401144000E3,4.285187037E1 +2.401437000E3,5.414729311E1 +2.401684000E3,5.760726428E1 +2.402102000E3,5.135939721E1 +2.402349000E3,5.519633184E1 +2.402608000E3,5.937895156E1 +2.402853000E3,5.722678447E1 +2.403146000E3,5.316891996E1 +2.403388000E3,5.231876976E1 +2.403684000E3,4.275047946E1 +2.403921000E3,4.497010821E1 +2.404216000E3,5.935375427E1 +2.404454000E3,5.736369919E1 +2.404707000E3,5.877823139E1 +2.404971000E3,6.138635894E1 +2.405219000E3,5.726046839E1 +2.405473000E3,5.213953550E1 +2.405771000E3,4.831408459E1 +2.406024000E3,5.195614478E1 +2.406276000E3,4.885485021E1 +2.406567000E3,4.806131720E1 +2.406866000E3,3.817379603E1 +2.407129000E3,3.496803230E1 +2.407401000E3,4.679161915E1 +2.407625000E3,4.456362030E1 +2.407878000E3,4.499112684E1 +2.408171000E3,4.695848411E1 +2.408491000E3,4.136053284E1 +2.408771000E3,3.435960184E1 +2.409033000E3,2.907775515E1 +2.409287000E3,3.179102298E1 +2.409536000E3,2.535492331E1 +2.409797000E3,2.893863695E1 +2.410015000E3,3.195695462E1 +2.410232000E3,2.883661354E1 +2.410481000E3,4.380812340E1 +2.410735000E3,5.435187737E1 +2.411017000E3,4.390478627E1 +2.411330000E3,4.136550501E1 +2.411572000E3,6.231552653E1 +2.411823000E3,4.988484474E1 +2.412072000E3,4.569499772E1 +2.412339000E3,5.207639469E1 +2.412605000E3,5.314724412E1 +2.412842000E3,5.014855129E1 +2.413111000E3,4.925815950E1 +2.413332000E3,5.545199009E1 +2.413608000E3,4.910878211E1 +2.413873000E3,5.481296501E1 +2.414229000E3,4.620355557E1 +2.414532000E3,4.757632406E1 +2.414792000E3,4.414835702E1 +2.415033000E3,4.178334533E1 +2.415296000E3,3.571558610E1 +2.415577000E3,3.622280285E1 +2.415839000E3,4.187963398E1 +2.416103000E3,4.120303067E1 +2.416426000E3,5.043875316E1 +2.416696000E3,4.738536839E1 +2.417006000E3,4.790698669E1 +2.417250000E3,4.717323409E1 +2.417613000E3,4.889624394E1 +2.417923000E3,4.615999302E1 +2.418209000E3,4.554232436E1 +2.418487000E3,4.963147342E1 +2.418748000E3,4.540077281E1 +2.419058000E3,4.402622058E1 +2.419355000E3,3.991430025E1 +2.419631000E3,5.699106589E1 +2.419880000E3,4.542610605E1 +2.420140000E3,5.871400849E1 +2.420387000E3,5.593691155E1 +2.420634000E3,5.642590944E1 +2.420987000E3,4.942882304E1 +2.421235000E3,5.122637091E1 +2.421504000E3,5.506353313E1 +2.421808000E3,4.974630362E1 +2.422098000E3,4.922446567E1 +2.422401000E3,4.711891494E1 +2.422653000E3,4.935851062E1 +2.422946000E3,5.223840607E1 +2.423180000E3,5.181747333E1 +2.423433000E3,5.106095739E1 +2.423699000E3,4.283067128E1 +2.424023000E3,4.620110870E1 +2.424283000E3,4.813646184E1 +2.424556000E3,4.673905704E1 +2.424833000E3,5.139038068E1 +2.425085000E3,4.187355918E1 +2.425330000E3,4.200690239E1 +2.425641000E3,4.094986905E1 +2.425891000E3,3.869951887E1 +2.426156000E3,4.295178440E1 +2.426411000E3,4.445235603E1 +2.426673000E3,4.180705342E1 +2.426915000E3,4.159918394E1 +2.427275000E3,5.193727105E1 +2.427528000E3,4.985744468E1 +2.427773000E3,5.143594155E1 +2.428021000E3,5.687627643E1 +2.428258000E3,4.984177159E1 +2.428554000E3,4.104898524E1 +2.428794000E3,3.740238657E1 +2.429102000E3,4.424577609E1 +2.429345000E3,5.022623751E1 +2.429627000E3,5.346928374E1 +2.429864000E3,4.448852620E1 +2.430156000E3,3.611387858E1 +2.430475000E3,3.592739777E1 +2.430726000E3,3.269867125E1 +2.431039000E3,4.089980433E1 +2.431331000E3,3.752068977E1 +2.431567000E3,3.972155082E1 +2.431870000E3,4.098289208E1 +2.432107000E3,4.068605974E1 +2.432406000E3,3.978950334E1 +2.432643000E3,3.435438837E1 +2.432933000E3,3.806187937E1 +2.433169000E3,3.613809925E1 +2.433407000E3,5.573542624E1 +2.433734000E3,4.812688919E1 +2.434035000E3,5.332611421E1 +2.434315000E3,5.453475878E1 +2.434557000E3,5.156731049E1 +2.434849000E3,4.452924889E1 +2.435086000E3,4.091217005E1 +2.435380000E3,3.495963916E1 +2.435633000E3,3.994418328E1 +2.435904000E3,5.345258512E1 +2.436200000E3,4.573029424E1 +2.436434000E3,4.666848361E1 +2.436802000E3,4.148612785E1 +2.437044000E3,3.785277445E1 +2.437301000E3,3.823545546E1 +2.437549000E3,3.883632471E1 +2.437839000E3,4.756553033E1 +2.438077000E3,4.282797221E1 +2.438369000E3,5.291874167E1 +2.438606000E3,5.394671897E1 +2.438862000E3,5.490926284E1 +2.439159000E3,5.465277565E1 +2.439395000E3,5.245345229E1 +2.439637000E3,4.823915254E1 +2.440022000E3,5.658050668E1 +2.440281000E3,5.255468157E1 +2.440546000E3,4.365897331E1 +2.440828000E3,4.187636724E1 +2.441125000E3,4.916172461E1 +2.441365000E3,5.038635874E1 +2.441645000E3,5.238005511E1 +2.441868000E3,4.979548238E1 +2.442114000E3,5.164563876E1 +2.442410000E3,4.795862612E1 +2.442694000E3,4.406311297E1 +2.442980000E3,4.461066687E1 +2.443265000E3,3.990213588E1 +2.443525000E3,4.270339676E1 +2.443815000E3,4.671533321E1 +2.444064000E3,4.922681237E1 +2.444311000E3,5.115751882E1 +2.444605000E3,4.659279655E1 +2.444851000E3,4.805254743E1 +2.445152000E3,4.646584218E1 +2.445447000E3,3.924248597E1 +2.445698000E3,3.657018775E1 +2.445976000E3,3.978585816E1 +2.446317000E3,5.134473527E1 +2.446569000E3,4.872028256E1 +2.446851000E3,4.793203365E1 +2.447088000E3,4.917648823E1 +2.447345000E3,4.514648035E1 +2.447599000E3,4.827609085E1 +2.447864000E3,5.009329877E1 +2.448138000E3,4.858127151E1 +2.448430000E3,4.885678900E1 +2.448726000E3,4.038666943E1 +2.448956000E3,3.788824065E1 +2.449214000E3,4.872306097E1 +2.449516000E3,5.112419798E1 +2.449767000E3,4.394357347E1 +2.450028000E3,5.187358067E1 +2.450298000E3,4.764520743E1 +2.450575000E3,5.323515688E1 +2.450844000E3,4.730661272E1 +2.451150000E3,5.022143967E1 +2.451400000E3,4.244080150E1 +2.451697000E3,4.540622562E1 +2.452002000E3,4.987171470E1 +2.452273000E3,4.928771096E1 +2.452519000E3,4.415614577E1 +2.452847000E3,4.529816891E1 +2.453138000E3,3.130480949E1 +2.453407000E3,3.727195618E1 +2.453707000E3,4.218798188E1 +2.453975000E3,3.196426842E1 +2.454240000E3,2.986758668E1 +2.454534000E3,4.365366219E1 +2.454795000E3,4.363233606E1 +2.455054000E3,4.576258560E1 +2.455297000E3,4.600510844E1 +2.455546000E3,5.143992334E1 +2.455816000E3,4.451792491E1 +2.456172000E3,3.834658463E1 +2.456438000E3,4.961865906E1 +2.456716000E3,4.301133302E1 +2.457025000E3,5.185950840E1 +2.457284000E3,4.578127088E1 +2.457582000E3,4.860789001E1 +2.457857000E3,4.548301241E1 +2.458087000E3,5.726595471E1 +2.458343000E3,4.581143143E1 +2.458590000E3,4.593076535E1 +2.458898000E3,4.646845677E1 +2.459143000E3,4.385664195E1 +2.459499000E3,3.921291428E1 +2.459756000E3,4.336490005E1 +2.460079000E3,5.059416731E1 +2.460323000E3,5.383728406E1 +2.460609000E3,4.336002656E1 +2.460894000E3,3.810358455E1 +2.461148000E3,4.341384577E1 +2.461406000E3,4.240002850E1 +2.461668000E3,4.220171306E1 +2.461957000E3,4.165441002E1 +2.462218000E3,4.110791112E1 +2.462543000E3,3.718059239E1 +2.462873000E3,4.490190793E1 +2.463162000E3,4.449127269E1 +2.463461000E3,5.110192526E1 +2.463709000E3,4.670759724E1 +2.464024000E3,4.554197086E1 +2.464345000E3,4.295638115E1 +2.464598000E3,4.260186095E1 +2.464844000E3,3.838281454E1 +2.465094000E3,4.864552318E1 +2.465348000E3,4.722694913E1 +2.465597000E3,5.723123112E1 +2.465970000E3,5.678247819E1 +2.466226000E3,5.304857482E1 +2.466490000E3,5.799491543E1 +2.466745000E3,5.566332539E1 +2.467000000E3,5.532803606E1 +2.467301000E3,5.480406224E1 +2.467518000E3,5.281426808E1 +2.467773000E3,5.319750336E1 +2.468030000E3,4.504180471E1 +2.468309000E3,4.011552860E1 +2.468536000E3,3.286668959E1 +2.468782000E3,5.187437917E1 +2.469159000E3,5.342027818E1 +2.469405000E3,4.655027014E1 +2.469685000E3,4.875434900E1 +2.469968000E3,4.400777727E1 +2.470228000E3,4.944370484E1 +2.470524000E3,4.819898526E1 +2.470826000E3,4.906267157E1 +2.471101000E3,4.559683511E1 +2.471407000E3,5.066052597E1 +2.471662000E3,5.052511938E1 +2.471933000E3,4.854316053E1 +2.472243000E3,4.720397127E1 +2.472513000E3,4.539713693E1 +2.472765000E3,4.504800702E1 +2.473077000E3,4.756996091E1 +2.473381000E3,4.502772911E1 +2.473668000E3,4.844141365E1 +2.473909000E3,4.718772198E1 +2.474176000E3,5.036014826E1 +2.474415000E3,4.734822430E1 +2.474659000E3,4.506554867E1 +2.474941000E3,4.590585801E1 +2.475227000E3,4.808550728E1 +2.475549000E3,4.744751902E1 +2.475816000E3,5.139502060E1 +2.476110000E3,4.565542501E1 +2.476367000E3,4.502651441E1 +2.476614000E3,4.529198411E1 +2.476876000E3,4.841642572E1 +2.477138000E3,4.904966766E1 +2.477430000E3,5.061185879E1 +2.477703000E3,4.805167318E1 +2.477973000E3,4.840268940E1 +2.478233000E3,4.609690512E1 +2.478491000E3,5.080806253E1 +2.478854000E3,4.929079330E1 +2.479112000E3,4.887431247E1 +2.479382000E3,4.582116343E1 +2.479677000E3,4.614295426E1 +2.479939000E3,5.004731017E1 +2.480247000E3,5.118895049E1 +2.480496000E3,4.750144805E1 +2.480785000E3,4.691637905E1 +2.481084000E3,4.575243018E1 +2.481328000E3,4.498034363E1 +2.481622000E3,5.049144453E1 +2.481951000E3,4.811617152E1 +2.482214000E3,4.600387593E1 +2.482494000E3,5.163944801E1 +2.482753000E3,4.933311419E1 +2.482991000E3,4.946534766E1 +2.483244000E3,4.580757204E1 +2.483487000E3,4.797573247E1 +2.483734000E3,4.560844100E1 +2.483990000E3,5.039329574E1 +2.484313000E3,5.052905321E1 +2.484577000E3,5.131938081E1 +2.484833000E3,4.901245069E1 +2.485113000E3,5.233648083E1 +2.485461000E3,5.215489758E1 +2.485749000E3,5.451606287E1 +2.486018000E3,5.043201098E1 +2.486334000E3,5.091085093E1 +2.486650000E3,4.972266732E1 +2.486916000E3,4.846864702E1 +2.487167000E3,4.843730663E1 +2.487412000E3,5.285205631E1 +2.487677000E3,5.695937588E1 +2.487965000E3,5.067248408E1 +2.488216000E3,4.955689254E1 +2.488580000E3,4.789771891E1 +2.488828000E3,4.640186686E1 +2.489150000E3,4.956289338E1 +2.489428000E3,4.916705799E1 +2.489718000E3,4.250319869E1 +2.489959000E3,4.211788948E1 +2.490259000E3,4.711467977E1 +2.490508000E3,5.336087879E1 +2.490805000E3,5.163346506E1 +2.491066000E3,5.303328317E1 +2.491377000E3,5.018594076E1 +2.491684000E3,4.569780009E1 +2.492029000E3,4.677168871E1 +2.492273000E3,4.586755987E1 +2.492522000E3,5.020047651E1 +2.492768000E3,4.585538278E1 +2.493006000E3,5.027464230E1 +2.493315000E3,4.719632652E1 +2.493608000E3,4.892998103E1 +2.493874000E3,4.659859577E1 +2.494131000E3,4.485377967E1 +2.494387000E3,4.661063763E1 +2.494635000E3,4.873112034E1 +2.494904000E3,5.011233058E1 +2.495259000E3,4.996207620E1 +2.495523000E3,5.026371938E1 +2.495789000E3,4.897334151E1 +2.496086000E3,4.919412247E1 +2.496330000E3,4.448238049E1 +2.496598000E3,5.779881243E1 +2.496845000E3,5.068443192E1 +2.497079000E3,5.452206946E1 +2.497328000E3,6.091811093E1 +2.497574000E3,5.545025588E1 +2.497819000E3,5.118451852E1 +2.498124000E3,5.647063434E1 +2.498436000E3,5.942897676E1 +2.498681000E3,6.063927987E1 +2.498932000E3,5.256584857E1 +2.499203000E3,5.942844343E1 +2.499465000E3,5.268198933E1 +2.499726000E3,5.561310022E1 +2.499989000E3,5.551348586E1 +2.500270000E3,5.728700965E1 +2.500550000E3,5.848024533E1 +2.500856000E3,5.545551244E1 +2.501156000E3,7.074712648E1 +2.501405000E3,6.649397556E1 +2.501727000E3,6.577106108E1 +2.501964000E3,5.791155905E1 +2.502223000E3,6.571272960E1 +2.502476000E3,5.223691777E1 +2.502731000E3,5.099379006E1 +2.502989000E3,4.996024440E1 +2.503265000E3,4.587573023E1 +2.503515000E3,6.660646739E1 +2.503792000E3,5.426812996E1 +2.504090000E3,4.221263073E1 +2.504348000E3,3.961359220E1 +2.504607000E3,3.317448387E1 +2.504957000E3,2.765634596E1 +2.505202000E3,5.260508289E1 +2.505444000E3,4.970766119E1 +2.505723000E3,5.961421356E1 +2.506010000E3,5.761735716E1 +2.506316000E3,4.386011183E1 +2.506629000E3,3.297646158E1 +2.506928000E3,3.461351567E1 +2.507171000E3,3.422494413E1 +2.507415000E3,3.898815557E1 +2.507661000E3,3.916714623E1 +2.507958000E3,4.409544564E1 +2.508199000E3,4.040812578E1 +2.508495000E3,4.100804729E1 +2.508767000E3,4.155083379E1 +2.509073000E3,4.256659126E1 +2.509346000E3,4.665111645E1 +2.509615000E3,4.785704834E1 +2.509926000E3,4.957995318E1 +2.510246000E3,5.281308228E1 +2.510533000E3,5.716195403E1 +2.510847000E3,5.384222007E1 +2.511087000E3,4.682850643E1 +2.511483000E3,5.585229854E1 +2.511769000E3,5.797880255E1 +2.512061000E3,5.008051045E1 +2.512305000E3,4.616221083E1 +2.512545000E3,5.837834308E1 +2.512782000E3,4.588894556E1 +2.513082000E3,5.827978204E1 +2.513321000E3,5.321307958E1 +2.513625000E3,5.419914666E1 +2.513860000E3,4.249936315E1 +2.514160000E3,5.093700871E1 +2.514505000E3,4.733309734E1 +2.514807000E3,5.739188753E1 +2.515049000E3,5.684870925E1 +2.515326000E3,5.429714525E1 +2.515551000E3,5.304528611E1 +2.515847000E3,6.048302750E1 +2.516097000E3,5.298092655E1 +2.516397000E3,5.664346713E1 +2.516634000E3,5.062362510E1 +2.516910000E3,5.059011404E1 +2.517165000E3,5.074931344E1 +2.517424000E3,5.193937267E1 +2.517672000E3,4.773080825E1 +2.517933000E3,4.886471101E1 +2.518191000E3,4.258084657E1 +2.518440000E3,4.144243799E1 +2.518697000E3,3.266068365E1 +2.518962000E3,3.662092465E1 +2.519211000E3,4.002326553E1 +2.519469000E3,5.193824268E1 +2.519821000E3,5.548381163E1 +2.520087000E3,5.245445808E1 +2.520336000E3,4.447536752E1 +2.520718000E3,5.931091731E1 +2.521010000E3,5.514928156E1 +2.521305000E3,5.194242569E1 +2.521541000E3,5.632439964E1 +2.521781000E3,4.768714929E1 +2.522074000E3,3.967116686E1 +2.522306000E3,3.457523914E1 +2.522554000E3,3.414939493E1 +2.522808000E3,3.034285017E1 +2.523103000E3,3.725639399E1 +2.523347000E3,5.824523011E1 +2.523645000E3,5.697741808E1 +2.524002000E3,5.995361389E1 +2.524244000E3,5.516819042E1 +2.524491000E3,5.520201782E1 +2.524765000E3,4.576677797E1 +2.524988000E3,5.785527848E1 +2.525299000E3,5.093237528E1 +2.525544000E3,4.090627494E1 +2.525822000E3,3.111750175E1 +2.526056000E3,2.764971736E1 +2.526311000E3,2.852524033E1 +2.526617000E3,3.508264660E1 +2.526905000E3,5.067917717E1 +2.527241000E3,4.646824007E1 +2.527487000E3,3.686495987E1 +2.527738000E3,3.822220480E1 +2.527988000E3,3.764348220E1 +2.528232000E3,4.278450517E1 +2.528563000E3,4.881983602E1 +2.528870000E3,4.048435148E1 +2.529125000E3,4.047282835E1 +2.529398000E3,4.602715630E1 +2.529632000E3,4.358719476E1 +2.529925000E3,4.185499728E1 +2.530224000E3,4.428160693E1 +2.530451000E3,5.370094630E1 +2.530771000E3,4.662369716E1 +2.531057000E3,4.486368653E1 +2.531322000E3,3.985753269E1 +2.531579000E3,3.868983993E1 +2.531842000E3,4.397673982E1 +2.532129000E3,4.465178920E1 +2.532379000E3,4.071629694E1 +2.532681000E3,3.700154265E1 +2.532925000E3,3.709745900E1 +2.533169000E3,3.856350220E1 +2.533454000E3,3.780017804E1 +2.533739000E3,4.079153270E1 +2.534053000E3,3.467337947E1 +2.534304000E3,3.872357849E1 +2.534571000E3,4.188092371E1 +2.534878000E3,4.226520735E1 +2.535180000E3,4.433351029E1 +2.535433000E3,4.196124368E1 +2.535679000E3,4.159710638E1 +2.535934000E3,4.131920574E1 +2.536230000E3,4.013333591E1 +2.536496000E3,3.861252617E1 +2.536812000E3,3.205810696E1 +2.537071000E3,3.900017908E1 +2.537321000E3,3.720890888E1 +2.537589000E3,3.571752088E1 +2.537899000E3,3.466875388E1 +2.538158000E3,3.490809444E1 +2.538414000E3,2.846246396E1 +2.538721000E3,3.471466025E1 +2.539000000E3,3.262267006E1 +2.539250000E3,2.900340615E1 +2.539526000E3,2.962734770E1 +2.539843000E3,4.051335289E1 +2.540219000E3,3.732414883E1 +2.540478000E3,3.212776280E1 +2.540731000E3,3.980002135E1 +2.541002000E3,4.402529692E1 +2.541305000E3,3.531142487E1 +2.541570000E3,4.157255463E1 +2.541892000E3,4.121686373E1 +2.542138000E3,3.512055425E1 +2.542435000E3,3.058422839E1 +2.542704000E3,3.860796470E1 +2.542951000E3,4.158955283E1 +2.543254000E3,4.126835549E1 +2.543598000E3,4.557459954E1 +2.543842000E3,4.195620726E1 +2.544088000E3,4.759905541E1 +2.544347000E3,4.089593512E1 +2.544592000E3,4.224934090E1 +2.544840000E3,3.548720999E1 +2.545141000E3,4.189266277E1 +2.545422000E3,4.058854606E1 +2.545652000E3,3.761551365E1 +2.545897000E3,3.643024250E1 +2.546173000E3,3.544845567E1 +2.546439000E3,3.816851754E1 +2.546779000E3,3.801212128E1 +2.547110000E3,3.288266257E1 +2.547379000E3,4.063952307E1 +2.547641000E3,4.765684387E1 +2.547893000E3,4.402640436E1 +2.548143000E3,4.172886183E1 +2.548441000E3,3.808222191E1 +2.548685000E3,3.637035664E1 +2.548962000E3,3.879815953E1 +2.549230000E3,5.433785228E1 +2.549540000E3,5.428002325E1 +2.549852000E3,5.430864003E1 +2.550121000E3,5.376325395E1 +2.550389000E3,5.250586376E1 +2.550641000E3,5.329413218E1 +2.550946000E3,3.817927317E1 +2.551218000E3,3.779289824E1 +2.551493000E3,4.904361964E1 +2.551759000E3,5.500168111E1 +2.552006000E3,4.745774118E1 +2.552261000E3,5.304049624E1 +2.552515000E3,4.933664563E1 +2.552779000E3,3.482983031E1 +2.553043000E3,3.914561037E1 +2.553378000E3,3.318943686E1 +2.553659000E3,2.674748735E1 +2.553917000E3,2.500565902E1 +2.554234000E3,3.331261434E1 +2.554489000E3,3.380079275E1 +2.554753000E3,3.632095841E1 +2.554996000E3,3.606888467E1 +2.555239000E3,4.759559903E1 +2.555541000E3,5.588542149E1 +2.555837000E3,5.768171500E1 +2.556076000E3,5.837962370E1 +2.556358000E3,5.761486260E1 +2.556647000E3,5.408185929E1 +2.556914000E3,5.624815374E1 +2.557248000E3,4.727853091E1 +2.557554000E3,3.999550071E1 +2.557822000E3,4.090986684E1 +2.558062000E3,3.411171601E1 +2.558302000E3,3.042998918E1 +2.558550000E3,3.392526215E1 +2.558807000E3,3.801243567E1 +2.559082000E3,4.390440101E1 +2.559357000E3,4.215163378E1 +2.559616000E3,4.616573562E1 +2.559972000E3,4.170066459E1 +2.560245000E3,2.972551911E1 +2.560517000E3,3.987643023E1 +2.560765000E3,4.046237199E1 +2.561011000E3,4.268708813E1 +2.561258000E3,4.450541644E1 +2.561531000E3,4.611922799E1 +2.561775000E3,4.492719317E1 +2.562027000E3,4.345851098E1 +2.562302000E3,5.022295857E1 +2.562533000E3,4.986016935E1 +2.562786000E3,3.932672790E1 +2.563211000E3,3.777119812E1 +2.563479000E3,4.577537823E1 +2.563731000E3,5.443473776E1 +2.563977000E3,5.947837126E1 +2.564252000E3,5.014881480E1 +2.564539000E3,4.884415531E1 +2.564781000E3,4.451698294E1 +2.565088000E3,3.693106642E1 +2.565361000E3,3.096881298E1 +2.565624000E3,2.635486448E1 +2.565885000E3,2.734213385E1 +2.566246000E3,3.979362654E1 +2.566493000E3,3.382738554E1 +2.566797000E3,3.469438245E1 +2.567097000E3,4.097528595E1 +2.567346000E3,4.285297734E1 +2.567644000E3,4.930003444E1 +2.567891000E3,4.540271843E1 +2.568170000E3,3.109775861E1 +2.568407000E3,2.738661195E1 +2.568701000E3,3.024785153E1 +2.568952000E3,3.235217301E1 +2.569220000E3,3.196941264E1 +2.569567000E3,4.299833718E1 +2.569862000E3,4.496000509E1 +2.570178000E3,4.562225815E1 +2.570442000E3,4.437451260E1 +2.570707000E3,3.949227756E1 +2.570950000E3,2.951847370E1 +2.571202000E3,3.800151296E1 +2.571472000E3,4.650517590E1 +2.571732000E3,3.967561664E1 +2.571975000E3,3.149456620E1 +2.572246000E3,5.234083710E1 +2.572527000E3,4.544839619E1 +2.572859000E3,4.436174777E1 +2.573168000E3,4.369290756E1 +2.573429000E3,4.420543128E1 +2.573728000E3,4.389854646E1 +2.573968000E3,4.580346210E1 +2.574268000E3,4.881141748E1 +2.574509000E3,4.708023256E1 +2.574802000E3,3.388696242E1 +2.575045000E3,2.922489212E1 +2.575339000E3,3.941924125E1 +2.575597000E3,4.733040375E1 +2.575906000E3,4.790376430E1 +2.576245000E3,4.328559785E1 +2.576517000E3,4.720947277E1 +2.576791000E3,4.076260480E1 +2.577092000E3,3.249905806E1 +2.577324000E3,3.886850876E1 +2.577566000E3,3.577483806E1 +2.577814000E3,4.105002685E1 +2.578080000E3,3.881208350E1 +2.578375000E3,5.720708534E1 +2.578624000E3,4.933084675E1 +2.578932000E3,5.989261963E1 +2.579254000E3,5.193127116E1 +2.579506000E3,4.843920497E1 +2.579747000E3,4.570821188E1 +2.580001000E3,4.446748829E1 +2.580244000E3,4.006228376E1 +2.580497000E3,2.933332862E1 +2.580745000E3,4.525678604E1 +2.580989000E3,4.717489692E1 +2.581288000E3,5.239736286E1 +2.581587000E3,5.268105849E1 +2.581851000E3,4.960616241E1 +2.582112000E3,4.637217789E1 +2.582361000E3,4.676379781E1 +2.582583000E3,4.083594902E1 +2.582903000E3,2.696140701E1 +2.583176000E3,2.668057590E1 +2.583429000E3,2.900886287E1 +2.583692000E3,2.732690452E1 +2.583951000E3,3.475308428E1 +2.584205000E3,4.782860484E1 +2.584480000E3,4.928978168E1 +2.584742000E3,3.697304160E1 +2.585017000E3,3.390321432E1 +2.585248000E3,4.818778278E1 +2.585552000E3,5.175969441E1 +2.585851000E3,4.752724055E1 +2.586108000E3,5.047732228E1 +2.586408000E3,5.003267867E1 +2.586651000E3,4.995698879E1 +2.586934000E3,4.985539117E1 +2.587202000E3,4.558719065E1 +2.587455000E3,4.973387236E1 +2.587702000E3,5.190737686E1 +2.587964000E3,4.955516560E1 +2.588211000E3,5.039526507E1 +2.588461000E3,3.897042435E1 +2.588748000E3,2.919124678E1 +2.589063000E3,3.061867322E1 +2.589398000E3,4.010104895E1 +2.589690000E3,3.640442215E1 +2.589998000E3,4.479952304E1 +2.590261000E3,4.757967128E1 +2.590558000E3,4.812333533E1 +2.590802000E3,4.603482331E1 +2.591083000E3,2.960043464E1 +2.591326000E3,3.684354753E1 +2.591591000E3,4.359182452E1 +2.591849000E3,4.788602237E1 +2.592228000E3,4.468031543E1 +2.592527000E3,3.894688899E1 +2.592778000E3,2.800490026E1 +2.593035000E3,4.310888325E1 +2.593333000E3,4.628339380E1 +2.593602000E3,4.440124594E1 +2.593883000E3,4.123163794E1 +2.594160000E3,3.127645239E1 +2.594429000E3,3.071812965E1 +2.594749000E3,4.618618296E1 +2.595070000E3,5.248181749E1 +2.595312000E3,4.786265879E1 +2.595668000E3,3.990233287E1 +2.595973000E3,4.173583037E1 +2.596256000E3,3.709278400E1 +2.596497000E3,3.229385861E1 +2.596813000E3,4.380573021E1 +2.597084000E3,4.783628282E1 +2.597325000E3,5.024593568E1 +2.597578000E3,5.102379549E1 +2.597828000E3,4.760481411E1 +2.598089000E3,3.822780835E1 +2.598387000E3,3.417342767E1 +2.598736000E3,2.863579065E1 +2.598981000E3,2.886228233E1 +2.599228000E3,2.855965247E1 +2.599493000E3,3.083396855E1 +2.599764000E3,3.581659374E1 +2.600032000E3,4.317647632E1 +2.600330000E3,4.853625621E1 +2.600623000E3,5.102467342E1 +2.600867000E3,4.877836926E1 +2.601112000E3,4.705612686E1 +2.601365000E3,4.889085742E1 +2.601612000E3,4.654488136E1 +2.601956000E3,4.055024190E1 +2.602220000E3,3.990851266E1 +2.602547000E3,3.648352551E1 +2.602794000E3,5.324982942E1 +2.603078000E3,5.268965363E1 +2.603338000E3,4.851189142E1 +2.603637000E3,5.135006473E1 +2.603925000E3,4.939301404E1 +2.604238000E3,5.337101389E1 +2.604488000E3,5.022765286E1 +2.604734000E3,5.253186666E1 +2.605064000E3,4.127453431E1 +2.605321000E3,4.114070867E1 +2.605572000E3,4.042282231E1 +2.605820000E3,4.255774466E1 +2.606073000E3,4.746726668E1 +2.606319000E3,4.761848671E1 +2.606565000E3,4.983628061E1 +2.606849000E3,3.046517787E1 +2.607082000E3,3.832211131E1 +2.607339000E3,4.741131966E1 +2.607609000E3,4.453335589E1 +2.607874000E3,3.545592153E1 +2.608197000E3,4.672891376E1 +2.608451000E3,4.755881287E1 +2.608706000E3,4.827652641E1 +2.608952000E3,4.727153141E1 +2.609226000E3,4.731450942E1 +2.609537000E3,3.981385402E1 +2.609784000E3,3.194698732E1 +2.610041000E3,3.314164027E1 +2.610283000E3,2.819786732E1 +2.610546000E3,2.664547785E1 +2.610857000E3,2.913544778E1 +2.611125000E3,3.961651759E1 +2.611432000E3,3.852777426E1 +2.611666000E3,3.205673146E1 +2.611951000E3,4.233182010E1 +2.612229000E3,3.378509898E1 +2.612454000E3,4.071755552E1 +2.612730000E3,5.018278065E1 +2.613050000E3,4.100034395E1 +2.613359000E3,3.892108016E1 +2.613628000E3,5.091321799E1 +2.613871000E3,4.336916838E1 +2.614108000E3,3.960788811E1 +2.614408000E3,3.948227358E1 +2.614722000E3,3.631863435E1 +2.614975000E3,4.057042340E1 +2.615256000E3,4.414132009E1 +2.615486000E3,4.180934435E1 +2.615750000E3,4.153999936E1 +2.615997000E3,3.521796466E1 +2.616260000E3,5.443854687E1 +2.616548000E3,5.408118563E1 +2.616842000E3,4.951275264E1 +2.617090000E3,5.182722031E1 +2.617344000E3,4.327522742E1 +2.617643000E3,5.375122422E1 +2.617975000E3,5.216635190E1 +2.618233000E3,4.126006713E1 +2.618497000E3,4.980260599E1 +2.618804000E3,4.655838197E1 +2.619044000E3,4.977945459E1 +2.619327000E3,4.875559075E1 +2.619562000E3,4.983226039E1 +2.619834000E3,4.741689273E1 +2.620075000E3,4.923498746E1 +2.620352000E3,4.923432072E1 +2.620664000E3,4.040876723E1 +2.620916000E3,3.889825840E1 +2.621142000E3,5.245081579E1 +2.621448000E3,4.684934794E1 +2.621687000E3,4.583906640E1 +2.621992000E3,4.366517623E1 +2.622230000E3,3.373873872E1 +2.622475000E3,3.701694694E1 +2.622750000E3,3.544967426E1 +2.623008000E3,3.363206222E1 +2.623285000E3,4.009589135E1 +2.623562000E3,4.408709562E1 +2.623825000E3,4.800133533E1 +2.624131000E3,4.855432282E1 +2.624414000E3,4.808187444E1 +2.624671000E3,5.252566194E1 +2.624932000E3,4.890333861E1 +2.625183000E3,4.370428781E1 +2.625430000E3,3.668118979E1 +2.625747000E3,4.353955331E1 +2.626003000E3,4.224026412E1 +2.626267000E3,4.311785789E1 +2.626514000E3,3.517806855E1 +2.626763000E3,3.981966751E1 +2.627025000E3,3.444602265E1 +2.627334000E3,3.341390757E1 +2.627660000E3,3.926570124E1 +2.627920000E3,4.341089288E1 +2.628216000E3,4.081134870E1 +2.628467000E3,3.912400300E1 +2.628730000E3,3.657553946E1 +2.629000000E3,3.072838888E1 +2.629284000E3,2.929703023E1 +2.629549000E3,3.378014550E1 +2.629844000E3,4.760306323E1 +2.630080000E3,4.024322042E1 +2.630373000E3,3.235913140E1 +2.630611000E3,3.920509877E1 +2.630919000E3,5.103841717E1 +2.631222000E3,5.813980805E1 +2.631514000E3,5.190256812E1 +2.631753000E3,4.653294376E1 +2.632054000E3,4.782140153E1 +2.632295000E3,4.977458693E1 +2.632592000E3,5.371197571E1 +2.632828000E3,5.056512655E1 +2.633140000E3,5.325824914E1 +2.633383000E3,4.973751947E1 +2.633632000E3,4.853342473E1 +2.633950000E3,3.905011010E1 +2.634254000E3,3.751700759E1 +2.634549000E3,5.292771607E1 +2.634786000E3,5.557450981E1 +2.635082000E3,4.974692283E1 +2.635319000E3,5.393938197E1 +2.635611000E3,4.675981835E1 +2.635848000E3,4.299614910E1 +2.636145000E3,3.756646750E1 +2.636395000E3,3.824353200E1 +2.636648000E3,3.045317917E1 +2.636942000E3,3.257931849E1 +2.637299000E3,3.010616025E1 +2.637599000E3,4.995329379E1 +2.637834000E3,4.824584689E1 +2.638071000E3,5.059212149E1 +2.638363000E3,5.330633429E1 +2.638612000E3,5.343612136E1 +2.638897000E3,4.755550111E1 +2.639122000E3,4.119881812E1 +2.639362000E3,3.902726568E1 +2.639659000E3,4.451944661E1 +2.639896000E3,4.587471035E1 +2.640164000E3,4.115502802E1 +2.640409000E3,4.505311495E1 +2.640656000E3,4.913968689E1 +2.640951000E3,5.110923180E1 +2.641208000E3,4.281604120E1 +2.641505000E3,4.825854961E1 +2.641748000E3,4.861588211E1 +2.642059000E3,4.450542116E1 +2.642304000E3,4.274821036E1 +2.642556000E3,3.503446158E1 +2.642862000E3,4.080900103E1 +2.643164000E3,4.152079562E1 +2.643527000E3,3.935881933E1 +2.643833000E3,3.760570593E1 +2.644082000E3,3.959144469E1 +2.644327000E3,4.007918652E1 +2.644573000E3,4.288120719E1 +2.644814000E3,4.793099478E1 +2.645114000E3,4.424069452E1 +2.645391000E3,4.078427844E1 +2.645635000E3,3.902795236E1 +2.645871000E3,4.393773718E1 +2.646111000E3,4.085627764E1 +2.646355000E3,4.393316509E1 +2.646690000E3,4.428892908E1 +2.646958000E3,4.601464396E1 +2.647235000E3,4.300358696E1 +2.647474000E3,4.083829680E1 +2.647758000E3,5.406220971E1 +2.648003000E3,4.253716581E1 +2.648273000E3,4.506680000E1 +2.648514000E3,3.500046728E1 +2.648758000E3,3.537281462E1 +2.649004000E3,5.013819891E1 +2.649251000E3,5.388943830E1 +2.649556000E3,5.656370208E1 +2.649891000E3,5.696480404E1 +2.650216000E3,4.675400561E1 +2.650515000E3,4.179549274E1 +2.650777000E3,4.536624285E1 +2.651084000E3,4.297370528E1 +2.651336000E3,4.376785410E1 +2.651635000E3,3.354560746E1 +2.651881000E3,2.537939319E1 +2.652180000E3,3.168783420E1 +2.652481000E3,4.898553010E1 +2.652737000E3,5.438993966E1 +2.652992000E3,4.963834041E1 +2.653252000E3,4.227369117E1 +2.653502000E3,4.301436765E1 +2.653812000E3,3.649724292E1 +2.654061000E3,4.086211966E1 +2.654320000E3,3.223281741E1 +2.654605000E3,2.807672508E1 +2.654836000E3,2.764825285E1 +2.655100000E3,4.598866982E1 +2.655350000E3,4.383741939E1 +2.655590000E3,4.883555528E1 +2.655837000E3,4.815765811E1 +2.656131000E3,5.047261312E1 +2.656369000E3,5.124829846E1 +2.656626000E3,3.956134092E1 +2.656925000E3,3.503286763E1 +2.657200000E3,3.224209198E1 +2.657447000E3,4.294806319E1 +2.657761000E3,4.898454413E1 +2.658011000E3,5.320780356E1 +2.658286000E3,5.345186604E1 +2.658542000E3,4.849291145E1 +2.658789000E3,5.098648363E1 +2.659034000E3,4.892931203E1 +2.659289000E3,4.580698225E1 +2.659530000E3,3.709695762E1 +2.659834000E3,3.457925551E1 +2.660081000E3,3.855219813E1 +2.660383000E3,3.845534481E1 +2.660628000E3,4.619372518E1 +2.660921000E3,4.848307744E1 +2.661167000E3,4.790880967E1 +2.661464000E3,4.667520128E1 +2.661710000E3,4.098851532E1 +2.662006000E3,4.035468673E1 +2.662245000E3,3.753010710E1 +2.662592000E3,4.792080660E1 +2.662862000E3,4.709835917E1 +2.663123000E3,3.501409506E1 +2.663374000E3,3.240664296E1 +2.663631000E3,4.326696615E1 +2.663874000E3,4.411177933E1 +2.664133000E3,3.936378145E1 +2.664382000E3,3.443614227E1 +2.664648000E3,3.761654306E1 +2.664944000E3,5.164457484E1 +2.665198000E3,2.810669920E1 +2.665512000E3,2.931307063E1 +2.665876000E3,3.108643425E1 +2.666131000E3,3.278101889E1 +2.666439000E3,4.277860150E1 +2.666693000E3,4.213131936E1 +2.667002000E3,3.935849781E1 +2.667259000E3,4.137879880E1 +2.667575000E3,3.790565018E1 +2.667827000E3,3.845274836E1 +2.668153000E3,3.676763670E1 +2.668452000E3,3.751975183E1 +2.668696000E3,3.224848897E1 +2.669023000E3,3.611134142E1 +2.669316000E3,4.467495655E1 +2.669607000E3,4.735906080E1 +2.669885000E3,5.159453510E1 +2.670167000E3,5.321308782E1 +2.670485000E3,5.282242631E1 +2.670747000E3,5.127719277E1 +2.670997000E3,4.902251972E1 +2.671243000E3,4.450532678E1 +2.671540000E3,3.864078148E1 +2.671788000E3,3.720620343E1 +2.672044000E3,4.496142790E1 +2.672357000E3,4.705640535E1 +2.672617000E3,3.890316941E1 +2.672864000E3,4.027639889E1 +2.673159000E3,4.202335245E1 +2.673421000E3,4.285452583E1 +2.673720000E3,3.626679930E1 +2.673964000E3,4.670395357E1 +2.674210000E3,4.915586670E1 +2.674514000E3,5.353785994E1 +2.674811000E3,5.414016767E1 +2.675048000E3,5.591079353E1 +2.675364000E3,3.844031623E1 +2.675661000E3,3.124520008E1 +2.675946000E3,3.566755596E1 +2.676189000E3,3.490423263E1 +2.676498000E3,5.070292882E1 +2.676799000E3,5.356134163E1 +2.677047000E3,5.161634227E1 +2.677305000E3,5.185439004E1 +2.677581000E3,5.315585532E1 +2.677832000E3,4.418578879E1 +2.678087000E3,3.972693415E1 +2.678335000E3,4.338465258E1 +2.678650000E3,5.168404535E1 +2.678934000E3,4.984483773E1 +2.679249000E3,4.977401184E1 +2.679507000E3,5.044345616E1 +2.679823000E3,4.232585634E1 +2.680128000E3,3.026551109E1 +2.680400000E3,3.009656886E1 +2.680660000E3,4.894119824E1 +2.680913000E3,4.712312643E1 +2.681208000E3,4.239602863E1 +2.681477000E3,4.875338950E1 +2.681768000E3,4.887945421E1 +2.682128000E3,4.379352407E1 +2.682394000E3,4.073494394E1 +2.682637000E3,3.685872977E1 +2.682895000E3,2.883047793E1 +2.683163000E3,3.769147996E1 +2.683455000E3,3.713975885E1 +2.683749000E3,4.855681627E1 +2.683994000E3,4.936430656E1 +2.684290000E3,5.303947120E1 +2.684540000E3,5.031092673E1 +2.684833000E3,4.783130186E1 +2.685073000E3,4.898734587E1 +2.685348000E3,4.686166956E1 +2.685598000E3,4.244245178E1 +2.685917000E3,3.872119900E1 +2.686161000E3,4.891396583E1 +2.686434000E3,4.491629365E1 +2.686687000E3,3.588391777E1 +2.686952000E3,3.156965948E1 +2.687206000E3,3.184725563E1 +2.687480000E3,3.153561496E1 +2.687733000E3,3.669659228E1 +2.688049000E3,3.507922771E1 +2.688340000E3,3.251056517E1 +2.688645000E3,4.079174670E1 +2.688915000E3,4.837277005E1 +2.689163000E3,4.669136560E1 +2.689426000E3,3.659115086E1 +2.689751000E3,4.814125321E1 +2.689994000E3,4.721335081E1 +2.690235000E3,5.119773767E1 +2.690471000E3,4.584232122E1 +2.690738000E3,4.687969307E1 +2.691006000E3,4.116197132E1 +2.691312000E3,2.850019915E1 +2.691659000E3,3.175399572E1 +2.691948000E3,3.215115185E1 +2.692197000E3,2.655209633E1 +2.692466000E3,3.136629444E1 +2.692727000E3,2.928762690E1 +2.692976000E3,2.688909217E1 +2.693281000E3,3.350197248E1 +2.693518000E3,3.760267236E1 +2.693776000E3,3.194141055E1 +2.694032000E3,3.113878807E1 +2.694299000E3,2.830606211E1 +2.694602000E3,2.632227285E1 +2.694941000E3,2.736240000E1 +2.695184000E3,3.956118458E1 +2.695488000E3,4.069974415E1 +2.695732000E3,4.498590768E1 +2.696030000E3,3.370199172E1 +2.696300000E3,3.284857688E1 +2.696535000E3,2.919082343E1 +2.696815000E3,3.146626789E1 +2.697056000E3,2.968971947E1 +2.697354000E3,4.116455896E1 +2.697640000E3,5.055341773E1 +2.697888000E3,5.163434474E1 +2.698155000E3,4.792936353E1 +2.698456000E3,4.111753823E1 +2.698732000E3,4.594070701E1 +2.699031000E3,3.204472070E1 +2.699273000E3,2.836668859E1 +2.699578000E3,2.624009297E1 +2.699855000E3,2.719538340E1 +2.700110000E3,2.868563476E1 +2.700399000E3,2.757039916E1 +2.700662000E3,2.546630310E1 +2.700960000E3,2.981844134E1 +2.701310000E3,3.063471239E1 +2.701629000E3,4.014173680E1 +2.701894000E3,3.281157953E1 +2.702206000E3,4.268438101E1 +2.702448000E3,4.272045970E1 +2.702710000E3,4.782744516E1 +2.702984000E3,4.067538265E1 +2.703255000E3,3.821763448E1 +2.703566000E3,3.373237040E1 +2.703865000E3,2.762261654E1 +2.704108000E3,3.058182972E1 +2.704366000E3,4.157303269E1 +2.704695000E3,4.128988216E1 +2.705002000E3,3.725674585E1 +2.705260000E3,3.318881716E1 +2.705544000E3,3.512644750E1 +2.705774000E3,3.012622541E1 +2.706039000E3,3.307868989E1 +2.706297000E3,3.089854998E1 +2.706599000E3,2.870455364E1 +2.706901000E3,2.573473536E1 +2.707155000E3,2.708285982E1 +2.707419000E3,2.641018696E1 +2.707644000E3,2.532685142E1 +2.707945000E3,2.741320006E1 +2.708188000E3,2.764718970E1 +2.708460000E3,3.745935532E1 +2.708711000E3,4.292241509E1 +2.708955000E3,4.431523077E1 +2.709266000E3,3.812245251E1 +2.709534000E3,3.199637282E1 +2.709802000E3,3.030937111E1 +2.710049000E3,3.172341474E1 +2.710303000E3,4.706685853E1 +2.710610000E3,4.372593931E1 +2.710859000E3,4.298246415E1 +2.711196000E3,4.313732995E1 +2.711485000E3,3.646858634E1 +2.711745000E3,3.547356546E1 +2.712003000E3,4.802507202E1 +2.712259000E3,4.666185634E1 +2.712527000E3,4.298723738E1 +2.712813000E3,3.203029787E1 +2.713082000E3,2.721140687E1 +2.713344000E3,3.967881707E1 +2.713594000E3,5.017429445E1 +2.713859000E3,4.690730331E1 +2.714106000E3,4.892140969E1 +2.714475000E3,4.312346900E1 +2.714730000E3,4.926615820E1 +2.714984000E3,4.690558758E1 +2.715298000E3,3.116292546E1 +2.715563000E3,2.731472603E1 +2.715855000E3,3.029992609E1 +2.716160000E3,3.149201904E1 +2.716442000E3,2.826058660E1 +2.716703000E3,2.713282366E1 +2.716957000E3,3.659207256E1 +2.717253000E3,3.982143620E1 +2.717592000E3,4.316888996E1 +2.717851000E3,4.348787554E1 +2.718149000E3,4.336902207E1 +2.718464000E3,4.494305168E1 +2.718765000E3,4.280996114E1 +2.719042000E3,4.083199069E1 +2.719277000E3,3.924180447E1 +2.719573000E3,2.985025677E1 +2.719800000E3,2.924980764E1 +2.720042000E3,2.589394072E1 +2.720346000E3,2.996884267E1 +2.720607000E3,2.951796470E1 +2.720882000E3,2.762273017E1 +2.721181000E3,4.946261833E1 +2.721422000E3,4.848220411E1 +2.721736000E3,4.816357380E1 +2.722001000E3,5.238238407E1 +2.722305000E3,5.586118797E1 +2.722602000E3,5.474108905E1 +2.722856000E3,5.089156984E1 +2.723105000E3,4.900978141E1 +2.723369000E3,5.541376880E1 +2.723666000E3,4.827427134E1 +2.723997000E3,4.802338633E1 +2.724296000E3,3.537215093E1 +2.724548000E3,3.822637167E1 +2.724844000E3,3.388327957E1 +2.725086000E3,3.756611639E1 +2.725338000E3,4.489615211E1 +2.725635000E3,5.048833137E1 +2.725871000E3,4.298428385E1 +2.726174000E3,3.303114009E1 +2.726475000E3,4.527811220E1 +2.726764000E3,4.815487328E1 +2.727017000E3,4.761823346E1 +2.727328000E3,4.180028821E1 +2.727607000E3,4.512936944E1 +2.727849000E3,4.337880786E1 +2.728101000E3,4.031817829E1 +2.728401000E3,3.509684782E1 +2.728650000E3,4.495565250E1 +2.728895000E3,4.157595660E1 +2.729138000E3,5.008202715E1 +2.729381000E3,5.308960545E1 +2.729622000E3,4.943413955E1 +2.729917000E3,4.820467383E1 +2.730234000E3,5.168344618E1 +2.730544000E3,5.128425900E1 +2.730837000E3,5.242528085E1 +2.731075000E3,5.125548047E1 +2.731382000E3,5.027678189E1 +2.731625000E3,4.595108129E1 +2.731917000E3,5.425640288E1 +2.732229000E3,5.493458667E1 +2.732522000E3,5.383738769E1 +2.732781000E3,4.577468908E1 +2.733036000E3,4.877165484E1 +2.733337000E3,5.155317163E1 +2.733582000E3,4.868465804E1 +2.733904000E3,5.094377769E1 +2.734158000E3,4.778052408E1 +2.734485000E3,4.980696312E1 +2.734788000E3,5.229980528E1 +2.735043000E3,4.487473927E1 +2.735323000E3,5.405477376E1 +2.735550000E3,5.095910777E1 +2.735795000E3,4.081340338E1 +2.736110000E3,3.942379743E1 +2.736352000E3,4.377765131E1 +2.736599000E3,4.311237352E1 +2.736822000E3,4.659947655E1 +2.737071000E3,4.430846393E1 +2.737313000E3,4.579154087E1 +2.737577000E3,4.628223866E1 +2.737831000E3,3.937286623E1 +2.738094000E3,3.852847368E1 +2.738336000E3,3.907921933E1 +2.738583000E3,5.112703685E1 +2.738825000E3,4.827754167E1 +2.739100000E3,4.022366081E1 +2.739352000E3,3.342841986E1 +2.739649000E3,3.354947585E1 +2.740003000E3,2.967395260E1 +2.740259000E3,4.724158021E1 +2.740515000E3,4.406232704E1 +2.740781000E3,4.128290785E1 +2.741030000E3,3.766271195E1 +2.741274000E3,3.234308905E1 +2.741542000E3,5.345026714E1 +2.741790000E3,5.189834860E1 +2.742037000E3,4.310520052E1 +2.742373000E3,3.005340200E1 +2.742661000E3,3.957498865E1 +2.742905000E3,4.298992085E1 +2.743235000E3,3.914359224E1 +2.743487000E3,4.665969106E1 +2.743742000E3,4.569837618E1 +2.743989000E3,4.037243126E1 +2.744288000E3,4.393151618E1 +2.744525000E3,4.191552922E1 +2.744830000E3,3.855450094E1 +2.745068000E3,3.137426682E1 +2.745312000E3,3.988970586E1 +2.745595000E3,4.261856210E1 +2.745912000E3,4.545535941E1 +2.746178000E3,3.982007681E1 +2.746515000E3,3.873990925E1 +2.746799000E3,4.024486228E1 +2.747097000E3,3.778822068E1 +2.747346000E3,3.349647091E1 +2.747587000E3,3.949530039E1 +2.747884000E3,4.424971453E1 +2.748182000E3,4.109440717E1 +2.748426000E3,4.429824127E1 +2.748724000E3,3.941870140E1 +2.749014000E3,3.719766140E1 +2.749309000E3,3.407061301E1 +2.749659000E3,3.362708714E1 +2.749929000E3,4.111324363E1 +2.750185000E3,4.275268079E1 +2.750445000E3,5.624172952E1 +2.750726000E3,4.374037489E1 +2.750957000E3,4.189644016E1 +2.751207000E3,3.621210842E1 +2.751519000E3,4.177841495E1 +2.751770000E3,4.048458953E1 +2.752052000E3,3.923884976E1 +2.752303000E3,3.426258793E1 +2.752575000E3,3.252443323E1 +2.752926000E3,3.211416673E1 +2.753222000E3,3.245023971E1 +2.753483000E3,3.266068265E1 +2.753758000E3,4.004662592E1 +2.754054000E3,4.872983792E1 +2.754320000E3,5.041613029E1 +2.754567000E3,4.540589836E1 +2.754814000E3,3.042430240E1 +2.755080000E3,3.072459076E1 +2.755376000E3,3.998104284E1 +2.755642000E3,4.049850263E1 +2.755970000E3,4.294486763E1 +2.756315000E3,4.067196783E1 +2.756573000E3,4.772031632E1 +2.756825000E3,4.988707098E1 +2.757139000E3,4.555538995E1 +2.757388000E3,4.252022698E1 +2.757651000E3,3.810962452E1 +2.757917000E3,3.494795311E1 +2.758159000E3,3.247098224E1 +2.758413000E3,3.588027190E1 +2.758665000E3,3.200494843E1 +2.758920000E3,4.772506231E1 +2.759171000E3,3.775844318E1 +2.759507000E3,3.920116655E1 +2.759772000E3,4.528245497E1 +2.760086000E3,4.240466142E1 +2.760349000E3,4.544544837E1 +2.760652000E3,4.039389797E1 +2.760923000E3,3.896680017E1 +2.761194000E3,4.381534416E1 +2.761436000E3,4.424202471E1 +2.761681000E3,4.737958135E1 +2.761960000E3,4.213672401E1 +2.762194000E3,4.516117441E1 +2.762462000E3,4.279973284E1 +2.762806000E3,3.859577230E1 +2.763061000E3,4.880977241E1 +2.763403000E3,4.365184399E1 +2.763660000E3,3.848143477E1 +2.763932000E3,4.787104427E1 +2.764214000E3,3.823665924E1 +2.764451000E3,3.049392521E1 +2.764732000E3,3.086844430E1 +2.764975000E3,2.587396098E1 +2.765284000E3,3.362049288E1 +2.765536000E3,3.353664382E1 +2.765825000E3,5.140360254E1 +2.766193000E3,5.105178275E1 +2.766449000E3,5.027787452E1 +2.766756000E3,4.961194015E1 +2.766992000E3,4.473604482E1 +2.767290000E3,5.567849424E1 +2.767540000E3,5.366739238E1 +2.767788000E3,5.268444481E1 +2.768092000E3,4.378358357E1 +2.768389000E3,4.285786187E1 +2.768638000E3,3.838737205E1 +2.768928000E3,4.053738598E1 +2.769250000E3,3.914310468E1 +2.769517000E3,3.950994015E1 +2.769781000E3,4.085678781E1 +2.770095000E3,3.706118568E1 +2.770362000E3,3.878826243E1 +2.770640000E3,4.509160576E1 +2.770877000E3,4.395611401E1 +2.771129000E3,3.894826552E1 +2.771368000E3,3.783168139E1 +2.771620000E3,3.074559821E1 +2.771881000E3,4.191911052E1 +2.772136000E3,4.492008577E1 +2.772447000E3,3.666714779E1 +2.772710000E3,4.135207765E1 +2.772994000E3,4.645886813E1 +2.773238000E3,5.078995440E1 +2.773478000E3,5.706152467E1 +2.773725000E3,5.135582573E1 +2.773990000E3,4.900548267E1 +2.774266000E3,5.275962483E1 +2.774567000E3,3.947101760E1 +2.774806000E3,4.078518654E1 +2.775113000E3,4.929998433E1 +2.775417000E3,4.396253608E1 +2.775784000E3,4.382194135E1 +2.776077000E3,4.131860223E1 +2.776341000E3,4.321133953E1 +2.776596000E3,3.942571045E1 +2.776881000E3,5.035254190E1 +2.777176000E3,5.596334670E1 +2.777432000E3,6.003222989E1 +2.777730000E3,5.139953750E1 +2.778036000E3,5.596001036E1 +2.778330000E3,5.632045587E1 +2.778567000E3,5.352711698E1 +2.778873000E3,5.160150080E1 +2.779243000E3,5.407354895E1 +2.779513000E3,5.151192380E1 +2.779810000E3,5.479493680E1 +2.780084000E3,5.006197117E1 +2.780351000E3,5.012247277E1 +2.780644000E3,4.598086802E1 +2.780884000E3,3.959492635E1 +2.781142000E3,3.571624227E1 +2.781421000E3,4.082207018E1 +2.781720000E3,5.162800696E1 +2.781984000E3,5.211692198E1 +2.782250000E3,5.017743125E1 +2.782617000E3,4.685740156E1 +2.782916000E3,4.348825959E1 +2.783213000E3,3.825858224E1 +2.783454000E3,4.923981343E1 +2.783750000E3,5.319160353E1 +2.783992000E3,4.967899375E1 +2.784288000E3,3.952802481E1 +2.784535000E3,3.328379343E1 +2.784779000E3,3.014350405E1 +2.785020000E3,3.405755755E1 +2.785313000E3,4.653255974E1 +2.785639000E3,4.571255084E1 +2.785896000E3,4.212654376E1 +2.786166000E3,4.635178938E1 +2.786421000E3,4.614547408E1 +2.786716000E3,4.279815144E1 +2.787018000E3,3.739201392E1 +2.787261000E3,4.297599275E1 +2.787569000E3,5.279236826E1 +2.787869000E3,4.385267374E1 +2.788181000E3,3.538660905E1 +2.788488000E3,4.283741498E1 +2.788738000E3,3.898018884E1 +2.789079000E3,4.417569536E1 +2.789327000E3,3.821417555E1 +2.789586000E3,4.124587088E1 +2.789850000E3,4.583617377E1 +2.790116000E3,4.758354441E1 +2.790413000E3,4.386951397E1 +2.790662000E3,4.527431896E1 +2.790956000E3,4.454979637E1 +2.791207000E3,4.019280914E1 +2.791465000E3,4.549375778E1 +2.791714000E3,4.076569420E1 +2.791963000E3,3.807465350E1 +2.792293000E3,5.201775254E1 +2.792550000E3,4.217772267E1 +2.792797000E3,5.472035384E1 +2.793107000E3,5.403984906E1 +2.793357000E3,5.591746790E1 +2.793622000E3,5.564159884E1 +2.793875000E3,5.646584479E1 +2.794118000E3,5.185594958E1 +2.794377000E3,4.895735059E1 +2.794636000E3,5.654557288E1 +2.794943000E3,5.012866956E1 +2.795254000E3,4.757016947E1 +2.795528000E3,5.211434220E1 +2.795790000E3,4.452402763E1 +2.796058000E3,4.290214665E1 +2.796307000E3,3.465820610E1 +2.796556000E3,4.339944359E1 +2.796852000E3,4.313164949E1 +2.797091000E3,5.438037991E1 +2.797389000E3,5.514175593E1 +2.797635000E3,4.928848190E1 +2.797924000E3,4.659784940E1 +2.798220000E3,4.998887096E1 +2.798537000E3,4.486399829E1 +2.798842000E3,4.885866840E1 +2.799091000E3,4.635335968E1 +2.799347000E3,4.504358299E1 +2.799594000E3,3.958005741E1 +2.799833000E3,4.827229253E1 +2.800082000E3,4.830536262E1 +2.800388000E3,4.659260793E1 +2.800673000E3,4.111758509E1 +2.800972000E3,4.464305855E1 +2.801233000E3,4.497276151E1 +2.801524000E3,3.374775892E1 +2.801884000E3,3.426238632E1 +2.802202000E3,3.521995684E1 +2.802451000E3,3.181302785E1 +2.802708000E3,2.794884084E1 +2.803019000E3,3.320140571E1 +2.803325000E3,3.478175393E1 +2.803626000E3,3.529465039E1 +2.803932000E3,3.962950189E1 +2.804222000E3,5.725685057E1 +2.804486000E3,5.740119524E1 +2.804784000E3,5.069347451E1 +2.805056000E3,5.047632669E1 +2.805376000E3,5.207930289E1 +2.805626000E3,5.264810014E1 +2.805887000E3,5.288954519E1 +2.806177000E3,4.457356662E1 +2.806431000E3,3.885566564E1 +2.806679000E3,3.768676842E1 +2.806944000E3,3.953483275E1 +2.807192000E3,4.348722722E1 +2.807514000E3,4.091620627E1 +2.807832000E3,4.192587435E1 +2.808086000E3,4.434501723E1 +2.808380000E3,4.393917252E1 +2.808686000E3,4.250763593E1 +2.809001000E3,4.146719312E1 +2.809249000E3,4.084508562E1 +2.809517000E3,4.466153637E1 +2.809817000E3,4.002274614E1 +2.810111000E3,4.310032831E1 +2.810375000E3,4.901386280E1 +2.810661000E3,4.607368963E1 +2.810927000E3,4.387647276E1 +2.811225000E3,5.143943484E1 +2.811469000E3,5.045193234E1 +2.811861000E3,4.363012565E1 +2.812115000E3,4.450854658E1 +2.812371000E3,4.453857946E1 +2.812631000E3,4.628101753E1 +2.812921000E3,4.634691523E1 +2.813212000E3,4.654803531E1 +2.813510000E3,4.718980060E1 +2.813758000E3,4.430765323E1 +2.814051000E3,4.322664022E1 +2.814349000E3,4.450224091E1 +2.814582000E3,4.170367724E1 +2.814868000E3,3.985315953E1 +2.815113000E3,5.280042862E1 +2.815400000E3,4.119993511E1 +2.815662000E3,4.251502783E1 +2.815937000E3,4.221594106E1 +2.816186000E3,4.475181393E1 +2.816425000E3,4.757705666E1 +2.816666000E3,4.971185267E1 +2.816968000E3,4.862141287E1 +2.817211000E3,4.713523003E1 +2.817492000E3,4.541478066E1 +2.817737000E3,4.363493262E1 +2.817996000E3,4.428814895E1 +2.818246000E3,4.395099122E1 +2.818516000E3,4.781334664E1 +2.818773000E3,4.439472962E1 +2.819027000E3,4.768107540E1 +2.819278000E3,4.535748265E1 +2.819523000E3,5.061196572E1 +2.819779000E3,4.816069594E1 +2.820044000E3,4.715573746E1 +2.820374000E3,4.919198579E1 +2.820635000E3,5.486134785E1 +2.820897000E3,4.845922458E1 +2.821173000E3,4.486224636E1 +2.821520000E3,4.543631827E1 +2.821781000E3,4.823449020E1 +2.822049000E3,4.622456265E1 +2.822354000E3,3.467019045E1 +2.822632000E3,3.820707315E1 +2.822892000E3,3.870865044E1 +2.823175000E3,3.526203974E1 +2.823424000E3,3.398332746E1 +2.823673000E3,4.060940798E1 +2.823924000E3,4.531267955E1 +2.824156000E3,4.823172894E1 +2.824426000E3,5.381643572E1 +2.824772000E3,5.219878503E1 +2.825053000E3,4.888255160E1 +2.825277000E3,4.023650802E1 +2.825526000E3,3.467455539E1 +2.825785000E3,3.818404386E1 +2.826078000E3,4.122702652E1 +2.826315000E3,3.713088668E1 +2.826619000E3,4.891468535E1 +2.826912000E3,5.266971981E1 +2.827148000E3,4.991025067E1 +2.827457000E3,5.435242869E1 +2.827718000E3,5.378448717E1 +2.828053000E3,5.171570017E1 +2.828327000E3,5.600593919E1 +2.828581000E3,5.175339102E1 +2.828821000E3,4.567582373E1 +2.829101000E3,3.417267221E1 +2.829337000E3,3.532670702E1 +2.829576000E3,4.323212593E1 +2.829823000E3,3.952189104E1 +2.830096000E3,4.372473758E1 +2.830363000E3,4.288959864E1 +2.830609000E3,3.903893871E1 +2.830954000E3,3.847274859E1 +2.831281000E3,4.911689413E1 +2.831539000E3,5.342672798E1 +2.831798000E3,5.558955965E1 +2.832091000E3,5.519004987E1 +2.832341000E3,5.877942264E1 +2.832589000E3,4.602825434E1 +2.832861000E3,3.380054471E1 +2.833107000E3,3.583644563E1 +2.833403000E3,4.160983164E1 +2.833653000E3,3.903662215E1 +2.833958000E3,3.879412363E1 +2.834222000E3,4.121083607E1 +2.834460000E3,4.235130104E1 +2.834723000E3,5.615135633E1 +2.834993000E3,5.355273371E1 +2.835271000E3,4.896976792E1 +2.835535000E3,5.132324538E1 +2.835792000E3,5.529277110E1 +2.836041000E3,5.163674064E1 +2.836366000E3,4.657927993E1 +2.836613000E3,4.238907241E1 +2.836875000E3,5.376683406E1 +2.837143000E3,5.052269952E1 +2.837398000E3,5.018740192E1 +2.837697000E3,4.680907883E1 +2.837961000E3,4.427452663E1 +2.838227000E3,3.300759096E1 +2.838490000E3,3.639504198E1 +2.838784000E3,4.617517315E1 +2.839084000E3,4.692063960E1 +2.839325000E3,4.445415179E1 +2.839620000E3,4.215561710E1 +2.839863000E3,4.433766229E1 +2.840168000E3,4.210423337E1 +2.840460000E3,3.873922427E1 +2.840768000E3,3.717852459E1 +2.841057000E3,3.957811826E1 +2.841313000E3,3.760389186E1 +2.841638000E3,4.310249633E1 +2.841921000E3,4.813095040E1 +2.842192000E3,4.623131926E1 +2.842444000E3,4.648620260E1 +2.842743000E3,4.620801315E1 +2.843027000E3,4.321069748E1 +2.843281000E3,4.205248893E1 +2.843587000E3,2.653536028E1 +2.843863000E3,2.940344619E1 +2.844270000E3,4.715941302E1 +2.844533000E3,4.512147604E1 +2.844793000E3,4.758865475E1 +2.845051000E3,4.853448129E1 +2.845325000E3,4.647479098E1 +2.845569000E3,4.600966189E1 +2.845842000E3,4.549543262E1 +2.846088000E3,4.262631529E1 +2.846347000E3,4.522394390E1 +2.846652000E3,4.657245211E1 +2.846924000E3,4.554651191E1 +2.847231000E3,4.501421864E1 +2.847609000E3,4.413715050E1 +2.847859000E3,3.641102730E1 +2.848158000E3,2.959594862E1 +2.848409000E3,3.229903797E1 +2.848684000E3,3.716282001E1 +2.848948000E3,4.864280315E1 +2.849195000E3,4.698625872E1 +2.849453000E3,4.475077374E1 +2.849725000E3,4.320130236E1 +2.850029000E3,4.052232702E1 +2.850286000E3,4.987213531E1 +2.850622000E3,4.470574790E1 +2.850953000E3,4.746715529E1 +2.851224000E3,4.817674396E1 +2.851475000E3,4.755384271E1 +2.851775000E3,4.606857790E1 +2.852037000E3,4.602549066E1 +2.852280000E3,4.107899882E1 +2.852578000E3,4.602936757E1 +2.852832000E3,4.594357604E1 +2.853123000E3,4.132874601E1 +2.853424000E3,3.891402985E1 +2.853676000E3,3.210431116E1 +2.854034000E3,4.148325967E1 +2.854336000E3,4.539420759E1 +2.854629000E3,3.813311910E1 +2.854857000E3,3.204826654E1 +2.855103000E3,4.042825728E1 +2.855348000E3,3.781799437E1 +2.855635000E3,3.485312778E1 +2.855901000E3,3.176423587E1 +2.856194000E3,3.286644404E1 +2.856446000E3,3.601261840E1 +2.856741000E3,3.056779431E1 +2.856990000E3,2.876904683E1 +2.857247000E3,2.336161379E1 +2.857525000E3,5.319777865E1 +2.857765000E3,4.924210585E1 +2.858030000E3,4.161506516E1 +2.858287000E3,3.471025819E1 +2.858592000E3,2.954431085E1 +2.858878000E3,3.551304021E1 +2.859146000E3,4.056554733E1 +2.859438000E3,4.716772205E1 +2.859749000E3,4.728214145E1 +2.860112000E3,4.333221553E1 +2.860355000E3,3.970290127E1 +2.860627000E3,4.675070996E1 +2.860922000E3,5.292655838E1 +2.861168000E3,5.560528000E1 +2.861448000E3,5.155203362E1 +2.861684000E3,4.854372910E1 +2.861981000E3,5.166225265E1 +2.862226000E3,5.239758268E1 +2.862536000E3,4.880079262E1 +2.862801000E3,5.860724491E1 +2.863049000E3,5.487085904E1 +2.863366000E3,4.477307493E1 +2.863622000E3,4.809216762E1 +2.863923000E3,4.128779228E1 +2.864180000E3,4.039902121E1 +2.864473000E3,3.763315716E1 +2.864758000E3,3.836830031E1 +2.865072000E3,3.562217561E1 +2.865375000E3,4.251016575E1 +2.865631000E3,3.959478231E1 +2.865894000E3,3.906491963E1 +2.866161000E3,3.169567809E1 +2.866409000E3,4.180907280E1 +2.866769000E3,5.009501966E1 +2.867095000E3,4.485052737E1 +2.867377000E3,4.543449817E1 +2.867634000E3,4.558186247E1 +2.867912000E3,3.310648260E1 +2.868160000E3,3.368680580E1 +2.868403000E3,3.259924908E1 +2.868652000E3,3.468868920E1 +2.868945000E3,3.811295096E1 +2.869214000E3,3.680532391E1 +2.869523000E3,4.480088276E1 +2.869800000E3,4.321197878E1 +2.870149000E3,3.870196995E1 +2.870426000E3,4.501549736E1 +2.870686000E3,3.869046251E1 +2.870998000E3,5.116138397E1 +2.871259000E3,4.565952095E1 +2.871545000E3,4.044036430E1 +2.871835000E3,3.776423584E1 +2.872146000E3,4.283314388E1 +2.872428000E3,4.822150076E1 +2.872666000E3,4.609488251E1 +2.872966000E3,4.199842198E1 +2.873258000E3,4.199452970E1 +2.873557000E3,4.094164548E1 +2.873868000E3,3.451929232E1 +2.874146000E3,3.725700957E1 +2.874378000E3,3.820854143E1 +2.874632000E3,3.261818797E1 +2.874949000E3,4.229639001E1 +2.875219000E3,4.314663650E1 +2.875496000E3,4.030472415E1 +2.875772000E3,3.740362597E1 +2.876082000E3,3.770704299E1 +2.876334000E3,4.016521241E1 +2.876600000E3,4.155568881E1 +2.876855000E3,3.864643482E1 +2.877164000E3,3.358142820E1 +2.877430000E3,2.988882280E1 +2.877698000E3,4.233125756E1 +2.877954000E3,4.245249096E1 +2.878273000E3,3.619646633E1 +2.878541000E3,3.199868066E1 +2.878801000E3,4.546979293E1 +2.879062000E3,5.523869784E1 +2.879342000E3,5.605267417E1 +2.879584000E3,5.653411529E1 +2.879928000E3,4.626290707E1 +2.880202000E3,3.540012043E1 +2.880447000E3,3.620700172E1 +2.880691000E3,2.922036878E1 +2.880938000E3,3.659816429E1 +2.881251000E3,4.145147882E1 +2.881527000E3,3.894444603E1 +2.881851000E3,3.741315407E1 +2.882112000E3,4.094962867E1 +2.882373000E3,4.333353585E1 +2.882625000E3,4.557565518E1 +2.882879000E3,4.308396997E1 +2.883145000E3,4.097722416E1 +2.883416000E3,3.927850137E1 +2.883669000E3,3.223716221E1 +2.883941000E3,3.004581442E1 +2.884209000E3,3.765685263E1 +2.884466000E3,3.878810543E1 +2.884718000E3,2.988953340E1 +2.884967000E3,3.346960294E1 +2.885221000E3,3.799647420E1 +2.885537000E3,3.116842616E1 +2.885796000E3,3.671552801E1 +2.886084000E3,4.459898232E1 +2.886404000E3,4.708370738E1 +2.886677000E3,5.036035843E1 +2.886979000E3,4.113513329E1 +2.887251000E3,3.503458684E1 +2.887528000E3,3.462090732E1 +2.887785000E3,4.001717165E1 +2.888037000E3,3.538133603E1 +2.888296000E3,3.662805649E1 +2.888547000E3,4.263542947E1 +2.888820000E3,4.431895872E1 +2.889079000E3,4.300413574E1 +2.889340000E3,4.173317530E1 +2.889582000E3,4.288275032E1 +2.889932000E3,3.944773526E1 +2.890197000E3,3.214266541E1 +2.890503000E3,3.060588708E1 +2.890777000E3,3.296322494E1 +2.891017000E3,3.394251803E1 +2.891320000E3,3.208741950E1 +2.891570000E3,3.441770910E1 +2.891849000E3,3.368561294E1 +2.892087000E3,3.475967611E1 +2.892337000E3,3.740055420E1 +2.892635000E3,3.542355307E1 +2.892981000E3,3.105741683E1 +2.893247000E3,3.245614761E1 +2.893513000E3,4.142391644E1 +2.893779000E3,4.497461971E1 +2.894029000E3,4.653178389E1 +2.894282000E3,4.703576342E1 +2.894540000E3,4.751169602E1 +2.894805000E3,4.201422178E1 +2.895062000E3,4.370261317E1 +2.895310000E3,4.660906406E1 +2.895596000E3,4.633159753E1 +2.895865000E3,4.381116332E1 +2.896155000E3,4.368523912E1 +2.896405000E3,4.747051902E1 +2.896651000E3,4.222577444E1 +2.896905000E3,4.572633660E1 +2.897184000E3,5.203776089E1 +2.897450000E3,5.010843836E1 +2.897744000E3,4.910530865E1 +2.898022000E3,4.664859833E1 +2.898308000E3,3.985336775E1 +2.898564000E3,3.683403533E1 +2.898812000E3,4.284820320E1 +2.899091000E3,4.286036404E1 +2.899396000E3,5.224070654E1 +2.899753000E3,4.568546748E1 +2.900018000E3,5.586433220E1 +2.900278000E3,4.514230837E1 +2.900559000E3,3.853422420E1 +2.900865000E3,3.299777990E1 +2.901139000E3,3.594596453E1 +2.901415000E3,2.896001699E1 +2.901650000E3,2.556794162E1 +2.901937000E3,2.525773120E1 +2.902206000E3,3.138035436E1 +2.902457000E3,3.725731802E1 +2.902816000E3,3.600302530E1 +2.903095000E3,3.476106384E1 +2.903340000E3,3.325569458E1 +2.903600000E3,3.217545002E1 +2.903858000E3,2.994578711E1 +2.904108000E3,3.277965280E1 +2.904372000E3,4.013450695E1 +2.904627000E3,3.103730297E1 +2.904913000E3,4.187502355E1 +2.905174000E3,3.591627686E1 +2.905452000E3,3.067277870E1 +2.905743000E3,2.813597523E1 +2.906004000E3,2.760542404E1 +2.906321000E3,3.327793113E1 +2.906579000E3,4.111963776E1 +2.906835000E3,4.309802180E1 +2.907113000E3,2.749088524E1 +2.907354000E3,2.269523459E1 +2.907657000E3,3.631225289E1 +2.907901000E3,4.146405590E1 +2.908156000E3,3.785670954E1 +2.908403000E3,4.498664409E1 +2.908675000E3,4.174614917E1 +2.908932000E3,4.632262643E1 +2.909189000E3,3.569839459E1 +2.909522000E3,4.635385444E1 +2.909802000E3,4.337190367E1 +2.910035000E3,3.796960383E1 +2.910287000E3,4.151951269E1 +2.910538000E3,4.245940710E1 +2.910795000E3,4.268454470E1 +2.911045000E3,4.280139929E1 +2.911335000E3,3.861780445E1 +2.911584000E3,4.028221299E1 +2.911885000E3,3.934408626E1 +2.912139000E3,3.091195323E1 +2.912386000E3,2.709027446E1 +2.912622000E3,2.721294148E1 +2.912915000E3,3.169063213E1 +2.913196000E3,3.663766462E1 +2.913461000E3,3.582442105E1 +2.913744000E3,2.742218375E1 +2.913990000E3,3.432349666E1 +2.914297000E3,4.586386591E1 +2.914575000E3,4.813383402E1 +2.914888000E3,5.016441505E1 +2.915190000E3,4.132593749E1 +2.915481000E3,3.992883324E1 +2.915827000E3,3.713218942E1 +2.916087000E3,4.862036940E1 +2.916351000E3,4.985137398E1 +2.916622000E3,5.126616609E1 +2.916881000E3,4.180876614E1 +2.917157000E3,4.057128207E1 +2.917418000E3,3.994520906E1 +2.917681000E3,3.719846748E1 +2.917964000E3,4.377214072E1 +2.918264000E3,4.081140664E1 +2.918518000E3,4.149712935E1 +2.918784000E3,3.965801174E1 +2.919127000E3,3.499332266E1 +2.919415000E3,3.454976163E1 +2.919745000E3,3.801205804E1 +2.920003000E3,4.266330834E1 +2.920244000E3,3.704497233E1 +2.920548000E3,3.869800412E1 +2.920840000E3,3.880762608E1 +2.921081000E3,3.967826348E1 +2.921325000E3,4.387098551E1 +2.921573000E3,3.795523909E1 +2.921876000E3,3.884773193E1 +2.922122000E3,3.949919351E1 +2.922481000E3,3.549368996E1 +2.922774000E3,5.176437750E1 +2.923023000E3,4.673969779E1 +2.923306000E3,3.729614967E1 +2.923573000E3,3.557242251E1 +2.923880000E3,5.351861504E1 +2.924155000E3,5.486661937E1 +2.924424000E3,5.693150230E1 +2.924735000E3,4.225245527E1 +2.924988000E3,4.082554353E1 +2.925252000E3,3.807826598E1 +2.925573000E3,3.587807510E1 +2.925935000E3,4.290242494E1 +2.926237000E3,3.960438869E1 +2.926496000E3,3.732088357E1 +2.926751000E3,3.216321546E1 +2.926991000E3,3.001846960E1 +2.927295000E3,3.634949804E1 +2.927531000E3,3.127042454E1 +2.927829000E3,3.158500209E1 +2.928073000E3,2.815993792E1 +2.928370000E3,2.793102526E1 +2.928613000E3,2.468786691E1 +2.928943000E3,2.345175993E1 +2.929256000E3,2.908559709E1 +2.929497000E3,2.580950455E1 +2.929819000E3,2.871707976E1 +2.930114000E3,2.977851279E1 +2.930374000E3,4.220437998E1 +2.930636000E3,3.122152770E1 +2.930945000E3,3.902308439E1 +2.931227000E3,3.648582434E1 +2.931474000E3,4.774090674E1 +2.931717000E3,4.487624905E1 +2.931963000E3,4.620728265E1 +2.932258000E3,4.011602626E1 +2.932585000E3,4.011469989E1 +2.932871000E3,4.531107143E1 +2.933117000E3,4.299757904E1 +2.933366000E3,4.255561828E1 +2.933662000E3,4.180851663E1 +2.933899000E3,3.354142728E1 +2.934139000E3,4.061788576E1 +2.934435000E3,3.190428864E1 +2.934678000E3,3.136545948E1 +2.934975000E3,3.172564299E1 +2.935227000E3,3.538616066E1 +2.935577000E3,3.227761247E1 +2.935826000E3,3.587578035E1 +2.936132000E3,2.830690319E1 +2.936391000E3,2.983281120E1 +2.936636000E3,3.198482114E1 +2.936936000E3,4.529436692E1 +2.937191000E3,3.904726622E1 +2.937498000E3,4.546792713E1 +2.937790000E3,4.178984789E1 +2.938055000E3,3.901507008E1 +2.938332000E3,3.530528642E1 +2.938634000E3,3.766035689E1 +2.939060000E3,5.595745424E1 +2.939318000E3,5.800941557E1 +2.939576000E3,5.061871726E1 +2.939836000E3,6.017617924E1 +2.940124000E3,5.889680612E1 +2.940380000E3,5.553527141E1 +2.940631000E3,4.982924060E1 +2.940889000E3,5.386899946E1 +2.941183000E3,5.511436312E1 +2.941477000E3,5.474658637E1 +2.941736000E3,5.669903896E1 +2.941985000E3,5.352207307E1 +2.942302000E3,5.089540084E1 +2.942556000E3,5.163069551E1 +2.942811000E3,4.946827448E1 +2.943144000E3,4.292332560E1 +2.943386000E3,4.769421745E1 +2.943625000E3,4.741300910E1 +2.943936000E3,4.918473310E1 +2.944182000E3,4.358732286E1 +2.944456000E3,4.338106770E1 +2.944722000E3,5.302068646E1 +2.945006000E3,4.800501219E1 +2.945370000E3,4.445792428E1 +2.945619000E3,3.768400599E1 +2.945867000E3,3.829540629E1 +2.946159000E3,3.766669508E1 +2.946411000E3,4.016839261E1 +2.946712000E3,4.041724233E1 +2.947009000E3,4.012217251E1 +2.947323000E3,3.568820570E1 +2.947568000E3,3.690839296E1 +2.947818000E3,4.813137033E1 +2.948084000E3,5.325274156E1 +2.948341000E3,5.892514859E1 +2.948730000E3,4.314585435E1 +2.948980000E3,4.049194134E1 +2.949257000E3,4.522053034E1 +2.949515000E3,4.263261915E1 +2.949826000E3,5.159034358E1 +2.950126000E3,4.094053529E1 +2.950370000E3,4.144504964E1 +2.950613000E3,4.584689520E1 +2.950933000E3,3.986259871E1 +2.951211000E3,5.835616238E1 +2.951492000E3,4.865922153E1 +2.951773000E3,4.646806952E1 +2.952049000E3,5.501145746E1 +2.952349000E3,5.395560549E1 +2.952606000E3,5.094776028E1 +2.952859000E3,5.987933082E1 +2.953123000E3,5.553863596E1 +2.953365000E3,6.056471643E1 +2.953626000E3,5.705129962E1 +2.953881000E3,5.620457969E1 +2.954143000E3,4.633104773E1 +2.954403000E3,4.542785483E1 +2.954666000E3,4.357363747E1 +2.954925000E3,5.905995366E1 +2.955255000E3,5.325307727E1 +2.955500000E3,6.730464031E1 +2.955795000E3,6.362836082E1 +2.956030000E3,6.057596417E1 +2.956332000E3,6.813918985E1 +2.956573000E3,6.403678903E1 +2.956871000E3,6.230635205E1 +2.957135000E3,6.746671531E1 +2.957401000E3,6.427695804E1 +2.957673000E3,5.206458526E1 +2.957933000E3,5.261265827E1 +2.958182000E3,4.877242183E1 +2.958552000E3,6.627461000E1 +2.958808000E3,6.741673158E1 +2.959062000E3,6.597614354E1 +2.959304000E3,6.540552328E1 +2.959551000E3,6.528289091E1 +2.959864000E3,5.830061674E1 +2.960121000E3,5.985112812E1 +2.960428000E3,6.090568068E1 +2.960720000E3,6.807446854E1 +2.960985000E3,6.930722199E1 +2.961226000E3,6.386100217E1 +2.961579000E3,6.028451745E1 +2.961849000E3,6.477814340E1 +2.962132000E3,6.837046944E1 +2.962373000E3,6.647209363E1 +2.962660000E3,6.694202205E1 +2.962967000E3,6.648756695E1 +2.963231000E3,6.482625001E1 +2.963518000E3,7.095796361E1 +2.963775000E3,6.454417662E1 +2.964062000E3,6.533171518E1 +2.964339000E3,6.471819922E1 +2.964629000E3,5.679367810E1 +2.964962000E3,5.573913208E1 +2.965271000E3,6.251351498E1 +2.965502000E3,6.071427502E1 +2.965745000E3,6.212696498E1 +2.966049000E3,5.601947939E1 +2.966292000E3,5.543203731E1 +2.966544000E3,5.440105204E1 +2.966807000E3,5.169354717E1 +2.967114000E3,5.098574914E1 +2.967354000E3,4.778774527E1 +2.967603000E3,5.527018336E1 +2.967874000E3,5.069142516E1 +2.968220000E3,5.540354927E1 +2.968470000E3,5.388190573E1 +2.968725000E3,5.648678631E1 +2.968994000E3,6.195289166E1 +2.969259000E3,5.924073062E1 +2.969526000E3,5.554902217E1 +2.969797000E3,6.073047002E1 +2.970049000E3,5.750580172E1 +2.970375000E3,6.205206850E1 +2.970685000E3,5.892672487E1 +2.971008000E3,5.603539479E1 +2.971306000E3,5.380141597E1 +2.971609000E3,6.182570937E1 +2.971860000E3,5.755792598E1 +2.972120000E3,7.094637252E1 +2.972374000E3,7.220321333E1 +2.972688000E3,6.074903881E1 +2.972946000E3,5.132390204E1 +2.973203000E3,5.555176793E1 +2.973482000E3,5.082163203E1 +2.973746000E3,6.668022761E1 +2.974024000E3,6.951681150E1 +2.974257000E3,6.170353739E1 +2.974507000E3,6.191784425E1 +2.974845000E3,6.249884739E1 +2.975129000E3,6.139715498E1 +2.975385000E3,5.458109058E1 +2.975684000E3,6.285593412E1 +2.975925000E3,6.801445640E1 +2.976223000E3,6.762358149E1 +2.976454000E3,6.007212586E1 +2.976698000E3,6.176376027E1 +2.976998000E3,5.489351528E1 +2.977244000E3,6.419682450E1 +2.977544000E3,6.335879864E1 +2.977813000E3,6.346249627E1 +2.978071000E3,6.122721977E1 +2.978303000E3,6.269343112E1 +2.978564000E3,5.719207644E1 +2.978818000E3,6.209398004E1 +2.979085000E3,6.570545323E1 +2.979335000E3,6.443300698E1 +2.979582000E3,6.395479352E1 +2.979841000E3,6.285971298E1 +2.980091000E3,6.452411240E1 +2.980337000E3,6.648403811E1 +2.980638000E3,6.146510082E1 +2.980898000E3,6.178604521E1 +2.981191000E3,5.906416732E1 +2.981418000E3,6.139524316E1 +2.981668000E3,6.754933795E1 +2.981958000E3,5.804633278E1 +2.982221000E3,5.544285219E1 +2.982480000E3,5.252390700E1 +2.982741000E3,5.442974682E1 +2.983009000E3,5.886662164E1 +2.983270000E3,6.039421332E1 +2.983532000E3,5.984826425E1 +2.983780000E3,6.038747451E1 +2.984020000E3,5.836799318E1 +2.984266000E3,6.011457774E1 +2.984654000E3,6.086793857E1 +2.984928000E3,6.104684994E1 +2.985246000E3,6.081085188E1 +2.985504000E3,6.338602633E1 +2.985771000E3,6.224702903E1 +2.986040000E3,5.771788346E1 +2.986351000E3,5.832375863E1 +2.986657000E3,6.179808645E1 +2.986893000E3,6.074067698E1 +2.987188000E3,5.763905723E1 +2.987459000E3,5.411975455E1 +2.987698000E3,5.609082395E1 +2.988020000E3,5.838775534E1 +2.988261000E3,5.545934196E1 +2.988564000E3,5.818253650E1 +2.988803000E3,5.693365858E1 +2.989084000E3,5.747877452E1 +2.989394000E3,6.108654481E1 +2.989646000E3,6.109521888E1 +2.989952000E3,5.453216708E1 +2.990235000E3,5.325056065E1 +2.990530000E3,5.226229633E1 +2.990796000E3,5.566734434E1 +2.991153000E3,5.983192138E1 +2.991409000E3,5.902282422E1 +2.991712000E3,6.553978750E1 +2.991962000E3,6.323109208E1 +2.992210000E3,6.430699278E1 +2.992477000E3,6.439502996E1 +2.992769000E3,5.882379749E1 +2.993024000E3,7.076998945E1 +2.993317000E3,6.710088514E1 +2.993554000E3,6.332152683E1 +2.993846000E3,6.013348006E1 +2.994081000E3,6.492156154E1 +2.994361000E3,6.054189638E1 +2.994671000E3,5.878685209E1 +2.994911000E3,6.363988355E1 +2.995218000E3,6.266127576E1 +2.995513000E3,6.231860976E1 +2.995750000E3,6.770663238E1 +2.996056000E3,6.411706706E1 +2.996346000E3,6.607053327E1 +2.996592000E3,6.231837938E1 +2.996884000E3,6.235557028E1 +2.997130000E3,6.626149607E1 +2.997386000E3,6.897456616E1 +2.997721000E3,6.896820400E1 +2.997984000E3,5.708709076E1 +2.998260000E3,5.465136518E1 +2.998532000E3,6.136090841E1 +2.998792000E3,6.427324700E1 +2.999047000E3,5.922924051E1 +2.999308000E3,5.964993479E1 +2.999619000E3,5.937495043E1 +2.999910000E3,6.345321013E1 +3.000196000E3,6.558504608E1 +3.000438000E3,6.566442906E1 +3.000721000E3,6.596782674E1 +3.001048000E3,6.493210478E1 +3.001299000E3,6.778071085E1 +3.001554000E3,5.810398860E1 +3.001834000E3,6.461256831E1 +3.002084000E3,5.637103240E1 +3.002332000E3,6.244497501E1 +3.002633000E3,5.749162406E1 +3.002980000E3,6.268391580E1 +3.003246000E3,6.122193913E1 +3.003572000E3,6.467185898E1 +3.003877000E3,6.239318427E1 +3.004266000E3,6.708558966E1 +3.004573000E3,6.293492178E1 +3.004871000E3,6.169168265E1 +3.005129000E3,5.944912128E1 +3.005404000E3,5.631628075E1 +3.005704000E3,6.080609102E1 +3.005964000E3,6.424565764E1 +3.006250000E3,6.447415860E1 +3.006481000E3,6.606824769E1 +3.006756000E3,6.337387069E1 +3.007004000E3,6.294291386E1 +3.007286000E3,6.430484746E1 +3.007612000E3,6.091848593E1 +3.007867000E3,6.343837854E1 +3.008169000E3,5.978702761E1 +3.008432000E3,5.965865421E1 +3.008675000E3,5.540362761E1 +3.008918000E3,5.443572137E1 +3.009202000E3,6.171389250E1 +3.009446000E3,6.487192568E1 +3.009738000E3,5.958143908E1 +3.009983000E3,6.189834719E1 +3.010232000E3,5.752745917E1 +3.010489000E3,6.339873723E1 +3.010846000E3,6.127984243E1 +3.011144000E3,6.065194767E1 +3.011387000E3,6.253646864E1 +3.011646000E3,6.179753794E1 +3.011925000E3,6.231808205E1 +3.012153000E3,6.101579519E1 +3.012442000E3,5.876502421E1 +3.012737000E3,5.809905793E1 +3.013015000E3,5.695141293E1 +3.013301000E3,5.973139928E1 +3.013577000E3,6.007240820E1 +3.013839000E3,7.136453087E1 +3.014063000E3,7.173892024E1 +3.014315000E3,6.885425335E1 +3.014559000E3,6.110376355E1 +3.014808000E3,6.296723224E1 +3.015075000E3,6.021879294E1 +3.015327000E3,6.012811489E1 +3.015577000E3,6.282613373E1 +3.015850000E3,6.884549735E1 +3.016115000E3,6.913958233E1 +3.016397000E3,6.608409337E1 +3.016648000E3,6.437779633E1 +3.016896000E3,6.412579817E1 +3.017253000E3,6.408373459E1 +3.017500000E3,6.487828946E1 +3.017743000E3,6.281964754E1 +3.018003000E3,6.153697843E1 +3.018258000E3,6.503307442E1 +3.018512000E3,6.508021131E1 +3.018791000E3,5.910017780E1 +3.019028000E3,5.757469918E1 +3.019325000E3,5.762978005E1 +3.019573000E3,5.366611226E1 +3.019824000E3,5.708763529E1 +3.020086000E3,5.488621207E1 +3.020437000E3,5.826722905E1 +3.020695000E3,5.951373108E1 +3.020968000E3,6.130623452E1 +3.021217000E3,6.025771329E1 +3.021490000E3,5.280103891E1 +3.021737000E3,6.123009986E1 +3.022037000E3,6.404958762E1 +3.022328000E3,6.469373641E1 +3.022599000E3,6.283727611E1 +3.022840000E3,6.248869497E1 +3.023123000E3,6.767270030E1 +3.023363000E3,6.436289402E1 +3.023706000E3,6.007121161E1 +3.023992000E3,6.067397941E1 +3.024255000E3,6.005092329E1 +3.024513000E3,6.146229561E1 +3.024803000E3,6.214304530E1 +3.025060000E3,6.107977952E1 +3.025317000E3,6.268440106E1 +3.025560000E3,5.744048190E1 +3.025823000E3,6.080102592E1 +3.026092000E3,6.359394744E1 +3.026384000E3,6.219604097E1 +3.026685000E3,6.296073955E1 +3.026912000E3,6.243574530E1 +3.027190000E3,6.540426031E1 +3.027426000E3,7.038009166E1 +3.027684000E3,7.133800291E1 +3.027943000E3,6.847497315E1 +3.028214000E3,7.049817235E1 +3.028486000E3,6.555713643E1 +3.028748000E3,6.762942526E1 +3.029008000E3,6.780082040E1 +3.029264000E3,6.644646205E1 +3.029533000E3,7.066497540E1 +3.029800000E3,6.700863421E1 +3.030174000E3,6.263767412E1 +3.030459000E3,5.937975562E1 +3.030697000E3,6.189133018E1 +3.030958000E3,6.479748496E1 +3.031218000E3,6.070421224E1 +3.031488000E3,5.567295684E1 +3.031754000E3,6.162939414E1 +3.032026000E3,6.462556380E1 +3.032293000E3,6.300561819E1 +3.032553000E3,6.320528504E1 +3.032852000E3,6.205536878E1 +3.033102000E3,7.179598993E1 +3.033490000E3,6.907149718E1 +3.033750000E3,6.110443799E1 +3.034008000E3,5.743025653E1 +3.034257000E3,5.714646515E1 +3.034505000E3,6.193634179E1 +3.034762000E3,6.511685208E1 +3.035034000E3,6.647840023E1 +3.035277000E3,6.637602928E1 +3.035534000E3,6.208743290E1 +3.035873000E3,6.158502662E1 +3.036127000E3,6.138896352E1 +3.036392000E3,5.988342330E1 +3.036737000E3,5.834272912E1 +3.036998000E3,6.504474047E1 +3.037253000E3,5.801637483E1 +3.037569000E3,6.208073459E1 +3.037831000E3,6.555093843E1 +3.038084000E3,6.686352963E1 +3.038356000E3,6.398821865E1 +3.038638000E3,6.053541888E1 +3.038927000E3,5.509282051E1 +3.039228000E3,6.213274835E1 +3.039473000E3,6.149105368E1 +3.039745000E3,6.097957376E1 +3.040056000E3,6.313145073E1 +3.040300000E3,6.749857058E1 +3.040549000E3,6.031561589E1 +3.040852000E3,5.991948868E1 +3.041110000E3,6.228314687E1 +3.041358000E3,6.281493679E1 +3.041621000E3,6.031124820E1 +3.041926000E3,6.035954468E1 +3.042177000E3,6.230627050E1 +3.042448000E3,5.381586458E1 +3.042741000E3,6.032611045E1 +3.043026000E3,5.796046788E1 +3.043304000E3,6.286261594E1 +3.043605000E3,6.188894569E1 +3.043848000E3,6.196336480E1 +3.044091000E3,6.506902622E1 +3.044345000E3,6.547913264E1 +3.044589000E3,6.701681380E1 +3.044849000E3,6.398074775E1 +3.045095000E3,6.102355933E1 +3.045350000E3,6.546609328E1 +3.045598000E3,6.626677347E1 +3.045845000E3,6.212155235E1 +3.046098000E3,6.475032486E1 +3.046433000E3,6.469401418E1 +3.046698000E3,6.335899573E1 +3.046970000E3,5.799459631E1 +3.047267000E3,5.777430210E1 +3.047527000E3,6.228044606E1 +3.047785000E3,5.521572273E1 +3.048044000E3,5.312506195E1 +3.048316000E3,5.877400717E1 +3.048592000E3,6.239358597E1 +3.048842000E3,6.019315355E1 +3.049164000E3,5.944515023E1 +3.049418000E3,6.571719967E1 +3.049752000E3,5.906077781E1 +3.050005000E3,6.269931225E1 +3.050242000E3,6.329267329E1 +3.050532000E3,6.094692628E1 +3.050797000E3,6.137608503E1 +3.051055000E3,6.019630450E1 +3.051299000E3,5.959056092E1 +3.051551000E3,6.195653625E1 +3.051802000E3,5.997942431E1 +3.052044000E3,6.071988649E1 +3.052348000E3,6.146559433E1 +3.052605000E3,6.320542640E1 +3.052903000E3,6.301314639E1 +3.053133000E3,6.491013087E1 +3.053386000E3,5.374424399E1 +3.053632000E3,5.337930652E1 +3.053925000E3,5.830420592E1 +3.054167000E3,5.827724976E1 +3.054414000E3,5.413373264E1 +3.054713000E3,5.438904566E1 +3.054952000E3,5.478972153E1 +3.055245000E3,6.026125791E1 +3.055545000E3,6.377000784E1 +3.055792000E3,6.273059884E1 +3.056116000E3,6.164463909E1 +3.056426000E3,6.310484015E1 +3.056665000E3,6.191865333E1 +3.056974000E3,6.044005004E1 +3.057225000E3,5.723160495E1 +3.057532000E3,6.482171923E1 +3.057799000E3,6.373654624E1 +3.058097000E3,6.579319958E1 +3.058333000E3,6.717439766E1 +3.058632000E3,6.244987186E1 +3.058874000E3,5.911459441E1 +3.059119000E3,6.246625617E1 +3.059514000E3,6.061929027E1 +3.059786000E3,6.141894857E1 +3.060044000E3,6.531006136E1 +3.060311000E3,6.745420282E1 +3.060564000E3,6.305040539E1 +3.060809000E3,6.250223063E1 +3.061063000E3,5.984183740E1 +3.061365000E3,6.201500936E1 +3.061610000E3,6.171968159E1 +3.061853000E3,5.636652524E1 +3.062137000E3,5.937450988E1 +3.062405000E3,5.424162977E1 +3.062724000E3,5.577353705E1 +3.062968000E3,6.265208868E1 +3.063225000E3,6.754657095E1 +3.063470000E3,6.259832443E1 +3.063731000E3,5.846954403E1 +3.063975000E3,5.735719718E1 +3.064220000E3,5.614657426E1 +3.064460000E3,5.493678071E1 +3.064711000E3,6.175770153E1 +3.064961000E3,6.502893325E1 +3.065266000E3,6.372557142E1 +3.065562000E3,6.165604672E1 +3.065921000E3,6.202265536E1 +3.066181000E3,5.894659424E1 +3.066427000E3,5.516515279E1 +3.066669000E3,5.227763917E1 +3.066911000E3,5.331294555E1 +3.067166000E3,5.535383534E1 +3.067460000E3,5.490405248E1 +3.067721000E3,5.927902794E1 +3.068030000E3,6.001209348E1 +3.068288000E3,5.925707402E1 +3.068553000E3,6.116769528E1 +3.068848000E3,5.907075037E1 +3.069160000E3,5.402384091E1 +3.069467000E3,6.078433547E1 +3.069706000E3,6.064305090E1 +3.069991000E3,6.099922555E1 +3.070247000E3,6.081028216E1 +3.070500000E3,6.857342881E1 +3.070795000E3,6.830085683E1 +3.071035000E3,7.092929468E1 +3.071334000E3,6.670654987E1 +3.071580000E3,6.198358410E1 +3.071845000E3,6.029427505E1 +3.072216000E3,6.271100503E1 +3.072476000E3,6.548403896E1 +3.072709000E3,6.655140024E1 +3.072958000E3,6.872933885E1 +3.073221000E3,6.840034062E1 +3.073524000E3,6.189262665E1 +3.073801000E3,6.315516618E1 +3.074029000E3,6.431689152E1 +3.074282000E3,7.008635825E1 +3.074531000E3,6.529488526E1 +3.074781000E3,5.362885622E1 +3.075079000E3,6.174622467E1 +3.075321000E3,6.106059522E1 +3.075569000E3,6.727558853E1 +3.075841000E3,6.068477373E1 +3.076089000E3,6.224550385E1 +3.076358000E3,6.049387981E1 +3.076618000E3,5.554290122E1 +3.076868000E3,5.232623619E1 +3.077136000E3,5.715980006E1 +3.077434000E3,6.112308912E1 +3.077738000E3,5.964598426E1 +3.077997000E3,5.774993649E1 +3.078301000E3,5.930552673E1 +3.078632000E3,6.204668908E1 +3.078903000E3,6.135182684E1 +3.079234000E3,6.010535577E1 +3.079530000E3,5.612975229E1 +3.079846000E3,5.894789721E1 +3.080130000E3,6.424282153E1 +3.080395000E3,6.696093787E1 +3.080696000E3,5.929656512E1 +3.080931000E3,5.577162965E1 +3.081168000E3,6.096321541E1 +3.081415000E3,6.147204445E1 +3.081708000E3,6.518353223E1 +3.082066000E3,6.565001970E1 +3.082347000E3,6.152216198E1 +3.082591000E3,6.232488129E1 +3.082884000E3,6.450829181E1 +3.083131000E3,6.727741702E1 +3.083373000E3,6.596172391E1 +3.083615000E3,6.588974420E1 +3.083909000E3,6.215985231E1 +3.084146000E3,5.417797447E1 +3.084444000E3,5.776086644E1 +3.084736000E3,6.145598006E1 +3.085067000E3,6.705675690E1 +3.085353000E3,7.032609091E1 +3.085621000E3,6.942809802E1 +3.085926000E3,6.673219093E1 +3.086170000E3,5.874483463E1 +3.086457000E3,6.163530440E1 +3.086730000E3,5.863155738E1 +3.086955000E3,5.804604701E1 +3.087247000E3,7.202263239E1 +3.087542000E3,6.907595594E1 +3.087796000E3,7.104760035E1 +3.088063000E3,6.060670654E1 +3.088371000E3,6.409876160E1 +3.088642000E3,6.504332531E1 +3.088891000E3,6.050178076E1 +3.089172000E3,5.988548041E1 +3.089448000E3,6.419311516E1 +3.089715000E3,6.072209436E1 +3.089992000E3,6.148544930E1 +3.090256000E3,6.667985585E1 +3.090551000E3,6.360479893E1 +3.090829000E3,6.675347002E1 +3.091081000E3,6.585951744E1 +3.091337000E3,5.998998345E1 +3.091582000E3,7.213751425E1 +3.091973000E3,7.002319175E1 +3.092225000E3,6.554991346E1 +3.092495000E3,5.438962824E1 +3.092757000E3,5.806427109E1 +3.093010000E3,5.611571138E1 +3.093290000E3,5.427298566E1 +3.093553000E3,6.332676554E1 +3.093801000E3,6.191283999E1 +3.094088000E3,6.222056485E1 +3.094383000E3,6.679558422E1 +3.094660000E3,6.396349695E1 +3.094980000E3,6.335657582E1 +3.095321000E3,6.368682935E1 +3.095574000E3,6.239728447E1 +3.095829000E3,6.560913932E1 +3.096083000E3,6.288470186E1 +3.096327000E3,6.063834800E1 +3.096611000E3,5.698542980E1 +3.096866000E3,6.214573666E1 +3.097125000E3,6.108001307E1 +3.097382000E3,6.098898235E1 +3.097639000E3,6.935379750E1 +3.097944000E3,6.076333803E1 +3.098235000E3,5.747447310E1 +3.098595000E3,5.896750888E1 +3.098845000E3,6.428262322E1 +3.099146000E3,6.073561603E1 +3.099435000E3,5.610862272E1 +3.099679000E3,5.808393750E1 +3.099971000E3,6.306244141E1 +3.100214000E3,6.493760740E1 +3.100511000E3,5.964091377E1 +3.100753000E3,5.949423253E1 +3.100995000E3,6.324186751E1 +3.101237000E3,6.294719776E1 +3.101481000E3,6.618420708E1 +3.101805000E3,6.039251647E1 +3.102105000E3,6.883376735E1 +3.102388000E3,6.215701199E1 +3.102635000E3,6.251944475E1 +3.102926000E3,6.387718652E1 +3.103175000E3,6.262879933E1 +3.103469000E3,6.094246273E1 +3.103717000E3,5.780442917E1 +3.104010000E3,5.805018882E1 +3.104245000E3,6.073911170E1 +3.104537000E3,5.820155990E1 +3.104880000E3,5.691870737E1 +3.105139000E3,5.609187778E1 +3.105418000E3,5.368790307E1 +3.105673000E3,5.733127796E1 +3.105933000E3,5.834617124E1 +3.106196000E3,5.665251568E1 +3.106447000E3,5.839993992E1 +3.106707000E3,5.765825797E1 +3.106989000E3,6.346036236E1 +3.107241000E3,6.088974139E1 +3.107536000E3,5.623231578E1 +3.107836000E3,5.905990454E1 +3.108208000E3,5.913546091E1 +3.108462000E3,5.921957697E1 +3.108732000E3,6.403378055E1 +3.109010000E3,6.829473891E1 +3.109237000E3,6.866131452E1 +3.109530000E3,5.759864554E1 +3.109769000E3,5.216447932E1 +3.110067000E3,5.887622687E1 +3.110356000E3,5.912152229E1 +3.110621000E3,6.343631440E1 +3.110862000E3,6.110189356E1 +3.111105000E3,5.925249209E1 +3.111441000E3,5.583559168E1 +3.111708000E3,6.397874973E1 +3.112049000E3,5.864630935E1 +3.112314000E3,5.876030726E1 +3.112620000E3,5.558460131E1 +3.112980000E3,5.336927775E1 +3.113232000E3,5.351895645E1 +3.113515000E3,4.932805120E1 +3.113763000E3,6.323075662E1 +3.114057000E3,6.375401647E1 +3.114318000E3,6.430798012E1 +3.114651000E3,6.745313705E1 +3.114909000E3,6.370697195E1 +3.115204000E3,6.719832935E1 +3.115517000E3,6.353352979E1 +3.115816000E3,6.421660294E1 +3.116074000E3,6.666449428E1 +3.116372000E3,6.209745804E1 +3.116612000E3,5.853853683E1 +3.116911000E3,6.153177442E1 +3.117151000E3,6.465277685E1 +3.117439000E3,6.054074617E1 +3.117698000E3,5.762180605E1 +3.118029000E3,5.904912096E1 +3.118292000E3,6.054469105E1 +3.118547000E3,6.570885599E1 +3.118854000E3,6.686989978E1 +3.119103000E3,6.506823644E1 +3.119359000E3,5.780133308E1 +3.119610000E3,5.983707630E1 +3.119896000E3,6.102798325E1 +3.120167000E3,5.940835035E1 +3.120446000E3,6.154008300E1 +3.120717000E3,6.031178539E1 +3.120969000E3,6.222997321E1 +3.121291000E3,6.676268308E1 +3.121532000E3,6.244629438E1 +3.121778000E3,6.014719673E1 +3.122038000E3,6.351124664E1 +3.122317000E3,5.786579019E1 +3.122607000E3,5.704033688E1 +3.122864000E3,5.941823253E1 +3.123160000E3,6.366298469E1 +3.123429000E3,6.545330590E1 +3.123678000E3,6.206143443E1 +3.123932000E3,6.250040348E1 +3.124250000E3,6.193784317E1 +3.124582000E3,6.679802083E1 +3.124888000E3,6.239911876E1 +3.125141000E3,6.227743005E1 +3.125407000E3,5.930162190E1 +3.125655000E3,5.692493613E1 +3.125897000E3,6.100851678E1 +3.126155000E3,6.356932883E1 +3.126470000E3,6.583742229E1 +3.126735000E3,6.828531785E1 +3.127049000E3,6.744954014E1 +3.127349000E3,6.892448306E1 +3.127620000E3,6.312172108E1 +3.127885000E3,6.549450530E1 +3.128150000E3,6.274114245E1 +3.128434000E3,5.987443555E1 +3.128694000E3,5.754092402E1 +3.128967000E3,6.140483336E1 +3.129224000E3,5.793735580E1 +3.129483000E3,5.640840091E1 +3.129735000E3,7.068460790E1 +3.130042000E3,6.831622259E1 +3.130308000E3,6.661131327E1 +3.130563000E3,7.032191033E1 +3.130897000E3,6.429012882E1 +3.131166000E3,6.890779868E1 +3.131427000E3,6.812897599E1 +3.131726000E3,6.440583932E1 +3.132039000E3,6.371305855E1 +3.132310000E3,6.071113649E1 +3.132582000E3,6.356904702E1 +3.132834000E3,6.335195410E1 +3.133078000E3,5.922748305E1 +3.133357000E3,5.790290676E1 +3.133581000E3,6.067150466E1 +3.133827000E3,5.936438225E1 +3.134075000E3,5.651144024E1 +3.134312000E3,5.707156804E1 +3.134564000E3,6.256442790E1 +3.134822000E3,5.680653319E1 +3.135099000E3,6.386946987E1 +3.135341000E3,6.183817556E1 +3.135588000E3,5.791592939E1 +3.135843000E3,5.415500200E1 +3.136159000E3,5.828393923E1 +3.136402000E3,5.584102234E1 +3.136645000E3,5.843965538E1 +3.136922000E3,6.032067675E1 +3.137231000E3,6.082235855E1 +3.137514000E3,6.216335250E1 +3.137763000E3,6.576895249E1 +3.138052000E3,5.935628673E1 +3.138348000E3,5.697436057E1 +3.138590000E3,6.713499986E1 +3.138833000E3,5.996032355E1 +3.139071000E3,6.566814076E1 +3.139366000E3,6.469315039E1 +3.139607000E3,6.414816039E1 +3.139901000E3,6.238348704E1 +3.140144000E3,5.975478602E1 +3.140477000E3,5.617333113E1 +3.140789000E3,6.140881460E1 +3.141038000E3,5.760925345E1 +3.141323000E3,5.813474075E1 +3.141616000E3,6.190304914E1 +3.141899000E3,5.853813516E1 +3.142123000E3,6.019478920E1 +3.142387000E3,5.824830032E1 +3.142639000E3,6.031650371E1 +3.142898000E3,5.874305926E1 +3.143211000E3,6.365997735E1 +3.143459000E3,6.182267241E1 +3.143814000E3,6.153305629E1 +3.144076000E3,6.040235966E1 +3.144345000E3,6.279707978E1 +3.144591000E3,6.261441373E1 +3.144837000E3,5.722591859E1 +3.145082000E3,5.791919274E1 +3.145387000E3,6.142016587E1 +3.145678000E3,5.996802308E1 +3.145994000E3,5.761245992E1 +3.146269000E3,5.915341256E1 +3.146531000E3,5.679987844E1 +3.146814000E3,6.228452904E1 +3.147163000E3,6.038592359E1 +3.147440000E3,6.662509726E1 +3.147705000E3,5.864713600E1 +3.147961000E3,6.383827006E1 +3.148228000E3,6.445939632E1 +3.148543000E3,6.206597752E1 +3.148800000E3,6.082056407E1 +3.149046000E3,5.872798480E1 +3.149340000E3,5.792404132E1 +3.149585000E3,5.917409009E1 +3.149845000E3,5.619795947E1 +3.150164000E3,6.447379623E1 +3.150501000E3,6.336546747E1 +3.150798000E3,6.022605646E1 +3.151059000E3,5.837139298E1 +3.151360000E3,5.721847889E1 +3.151614000E3,7.085699981E1 +3.151908000E3,6.031233854E1 +3.152206000E3,6.170839562E1 +3.152452000E3,6.336115962E1 +3.152697000E3,6.732286145E1 +3.152943000E3,6.043278366E1 +3.153235000E3,5.822950572E1 +3.153537000E3,6.155234216E1 +3.153813000E3,5.671966020E1 +3.154078000E3,5.613348243E1 +3.154333000E3,5.384913785E1 +3.154580000E3,5.739778382E1 +3.154869000E3,5.617144196E1 +3.155103000E3,5.699346940E1 +3.155351000E3,6.356393037E1 +3.155653000E3,5.483372318E1 +3.155949000E3,5.806865262E1 +3.156195000E3,5.725879338E1 +3.156459000E3,5.708272088E1 +3.156776000E3,5.736330762E1 +3.157028000E3,5.620178265E1 +3.157280000E3,5.557503250E1 +3.157521000E3,6.379766868E1 +3.157864000E3,6.175462639E1 +3.158113000E3,5.970375584E1 +3.158365000E3,5.482220327E1 +3.158625000E3,6.094938302E1 +3.158872000E3,6.189076140E1 +3.159128000E3,6.365906369E1 +3.159385000E3,6.365252593E1 +3.159699000E3,6.421784723E1 +3.160039000E3,5.952347777E1 +3.160337000E3,6.582170091E1 +3.160643000E3,6.400621400E1 +3.160905000E3,5.982923632E1 +3.161162000E3,5.912958512E1 +3.161449000E3,5.744161350E1 +3.161722000E3,6.208953034E1 +3.161984000E3,6.743490019E1 +3.162228000E3,5.893358785E1 +3.162506000E3,6.260442429E1 +3.162777000E3,6.054589944E1 +3.163072000E3,5.958101250E1 +3.163380000E3,5.756716970E1 +3.163623000E3,5.897741262E1 +3.163916000E3,5.199350029E1 +3.164173000E3,5.607364633E1 +3.164444000E3,6.846587546E1 +3.164756000E3,5.833953537E1 +3.165011000E3,6.699601536E1 +3.165255000E3,6.024033326E1 +3.165530000E3,5.636786936E1 +3.165825000E3,5.917346905E1 +3.166077000E3,5.684739711E1 +3.166343000E3,5.441684119E1 +3.166607000E3,5.708423030E1 +3.166871000E3,5.726160097E1 +3.167212000E3,5.795085756E1 +3.167513000E3,5.359033433E1 +3.167800000E3,5.481028168E1 +3.168051000E3,5.771426852E1 +3.168321000E3,5.720698183E1 +3.168574000E3,6.029484328E1 +3.168847000E3,6.594273179E1 +3.169141000E3,5.814954146E1 +3.169451000E3,5.741553332E1 +3.169717000E3,5.474949866E1 +3.170064000E3,5.858087337E1 +3.170388000E3,5.901398101E1 +3.170689000E3,6.599046976E1 +3.170942000E3,6.777823262E1 +3.171184000E3,6.339704259E1 +3.171437000E3,5.678237753E1 +3.171694000E3,6.067324941E1 +3.171975000E3,6.337570500E1 +3.172215000E3,6.060254578E1 +3.172509000E3,6.511602204E1 +3.172792000E3,6.491523998E1 +3.173086000E3,6.236437487E1 +3.173442000E3,6.132637014E1 +3.173725000E3,5.575670785E1 +3.173997000E3,5.450541115E1 +3.174243000E3,5.816223835E1 +3.174516000E3,5.991084873E1 +3.174771000E3,5.959264792E1 +3.175022000E3,6.001504494E1 +3.175268000E3,5.794233494E1 +3.175510000E3,5.875384007E1 +3.175752000E3,6.582497874E1 +3.176001000E3,6.385809704E1 +3.176310000E3,6.575292490E1 +3.176700000E3,6.328122862E1 +3.176947000E3,6.160374932E1 +3.177205000E3,6.233605233E1 +3.177480000E3,5.746120395E1 +3.177733000E3,5.491961653E1 +3.178002000E3,5.346590976E1 +3.178308000E3,4.910433719E1 +3.178598000E3,5.548086035E1 +3.178876000E3,5.834728013E1 +3.179129000E3,5.722852381E1 +3.179407000E3,5.371032540E1 +3.179686000E3,5.375017527E1 +3.180066000E3,5.741446005E1 +3.180325000E3,5.595914402E1 +3.180624000E3,5.784989425E1 +3.180867000E3,5.818330240E1 +3.181112000E3,5.651638359E1 +3.181407000E3,5.400925398E1 +3.181645000E3,5.134681346E1 +3.181939000E3,5.540645654E1 +3.182189000E3,5.603348674E1 +3.182489000E3,5.612576596E1 +3.182726000E3,5.412821683E1 +3.183072000E3,5.364995955E1 +3.183373000E3,5.685067634E1 +3.183631000E3,5.292396423E1 +3.183913000E3,5.037305724E1 +3.184139000E3,5.458652507E1 +3.184386000E3,5.336216390E1 +3.184625000E3,5.355204553E1 +3.184861000E3,5.798216811E1 +3.185170000E3,5.037998219E1 +3.185412000E3,5.253320042E1 +3.185661000E3,5.864558083E1 +3.185944000E3,5.568855775E1 +3.186307000E3,6.065674046E1 +3.186594000E3,5.486017232E1 +3.186846000E3,5.354898396E1 +3.187128000E3,5.606629368E1 +3.187373000E3,5.887335608E1 +3.187646000E3,5.932986575E1 +3.187996000E3,5.618144782E1 +3.188254000E3,5.279151533E1 +3.188538000E3,5.980979660E1 +3.188819000E3,5.959008295E1 +3.189058000E3,5.757326838E1 +3.189324000E3,5.814251633E1 +3.189681000E3,6.715432083E1 +3.189929000E3,5.659786492E1 +3.190183000E3,6.813933576E1 +3.190493000E3,6.423896785E1 +3.190762000E3,6.115594562E1 +3.191063000E3,6.466877383E1 +3.191295000E3,6.400176112E1 +3.191543000E3,6.061189134E1 +3.191813000E3,6.334758009E1 +3.192062000E3,6.268892194E1 +3.192384000E3,6.255649695E1 +3.192688000E3,6.440152216E1 +3.193095000E3,6.083356984E1 +3.193368000E3,5.702207605E1 +3.193630000E3,6.129862703E1 +3.193931000E3,6.511359313E1 +3.194208000E3,6.424113032E1 +3.194458000E3,6.277957456E1 +3.194751000E3,6.067489213E1 +3.195007000E3,6.044409325E1 +3.195267000E3,5.902485869E1 +3.195523000E3,5.940450479E1 +3.195769000E3,5.629667180E1 +3.196103000E3,5.773687048E1 +3.196362000E3,5.275604571E1 +3.196676000E3,5.321996877E1 +3.196932000E3,4.952922772E1 +3.197191000E3,5.411849627E1 +3.197458000E3,5.575997519E1 +3.197718000E3,5.782402980E1 +3.197982000E3,6.092045522E1 +3.198228000E3,6.504329265E1 +3.198474000E3,5.972589974E1 +3.198713000E3,5.816644178E1 +3.198958000E3,6.190720604E1 +3.199249000E3,6.026051864E1 +3.199481000E3,6.064697026E1 +3.199744000E3,5.715218400E1 +3.200003000E3,5.509276249E1 +3.200281000E3,5.035485844E1 +3.200607000E3,5.745123346E1 +3.200874000E3,5.874041571E1 +3.201157000E3,6.540993071E1 +3.201407000E3,6.592699897E1 +3.201730000E3,5.826687879E1 +3.201982000E3,5.966898415E1 +3.202228000E3,5.928022084E1 +3.202546000E3,5.492659239E1 +3.202811000E3,5.843773228E1 +3.203091000E3,5.615478265E1 +3.203365000E3,5.378265559E1 +3.203611000E3,5.724493737E1 +3.203868000E3,5.517839982E1 +3.204137000E3,5.166422622E1 +3.204439000E3,5.966362579E1 +3.204692000E3,5.837831137E1 +3.204952000E3,5.873474045E1 +3.205216000E3,6.025432286E1 +3.205460000E3,5.709891269E1 +3.205710000E3,5.946766606E1 +3.206062000E3,5.575402329E1 +3.206367000E3,5.597615265E1 +3.206620000E3,5.417374311E1 +3.206869000E3,5.785505194E1 +3.207152000E3,5.973144393E1 +3.207405000E3,5.494944595E1 +3.207684000E3,5.859159641E1 +3.207982000E3,5.909726368E1 +3.208273000E3,6.221796591E1 +3.208541000E3,6.248597715E1 +3.208787000E3,6.143432195E1 +3.209043000E3,5.767415987E1 +3.209357000E3,6.087003136E1 +3.209636000E3,5.816954701E1 +3.209920000E3,5.644196424E1 +3.210232000E3,5.726504339E1 +3.210505000E3,5.384487818E1 +3.210769000E3,6.092886049E1 +3.211044000E3,5.910647270E1 +3.211306000E3,5.855040927E1 +3.211560000E3,6.886189365E1 +3.211803000E3,6.193548709E1 +3.212075000E3,5.895667088E1 +3.212320000E3,5.613734816E1 +3.212669000E3,6.365011223E1 +3.212934000E3,6.616065582E1 +3.213195000E3,4.911720228E1 +3.213460000E3,5.429539168E1 +3.213713000E3,5.374714305E1 +3.213991000E3,5.505703483E1 +3.214231000E3,5.216197587E1 +3.214486000E3,6.958974683E1 +3.214787000E3,6.410499727E1 +3.215047000E3,5.795707420E1 +3.215308000E3,6.210641451E1 +3.215581000E3,5.724864620E1 +3.215943000E3,5.588397230E1 +3.216221000E3,5.281586206E1 +3.216477000E3,5.616597876E1 +3.216735000E3,7.016181845E1 +3.216992000E3,7.008234703E1 +3.217238000E3,6.883905131E1 +3.217482000E3,6.039428517E1 +3.217722000E3,6.572225500E1 +3.217971000E3,6.862082655E1 +3.218221000E3,6.392739620E1 +3.218481000E3,6.757625304E1 +3.218798000E3,6.468895575E1 +3.219137000E3,5.941097234E1 +3.219443000E3,6.639331379E1 +3.219715000E3,6.512137194E1 +3.219985000E3,6.137345425E1 +3.220244000E3,6.566739727E1 +3.220494000E3,5.684090738E1 +3.220758000E3,4.865476042E1 +3.221022000E3,5.571447424E1 +3.221324000E3,5.050200483E1 +3.221601000E3,5.262698993E1 +3.221858000E3,5.385544431E1 +3.222185000E3,5.793526709E1 +3.222548000E3,5.957102097E1 +3.222796000E3,5.026005559E1 +3.223068000E3,5.164515600E1 +3.223344000E3,6.575405490E1 +3.223598000E3,6.925353270E1 +3.223876000E3,5.909751181E1 +3.224152000E3,5.561020058E1 +3.224416000E3,5.257890354E1 +3.224662000E3,5.262446891E1 +3.224954000E3,5.599583257E1 +3.225202000E3,5.286294623E1 +3.225483000E3,5.049109924E1 +3.225830000E3,6.154494550E1 +3.226096000E3,5.433068412E1 +3.226350000E3,5.256602683E1 +3.226652000E3,5.283535150E1 +3.226989000E3,5.811852242E1 +3.227251000E3,5.842389129E1 +3.227505000E3,5.524471208E1 +3.227782000E3,6.207780754E1 +3.228053000E3,6.165130850E1 +3.228302000E3,5.818085510E1 +3.228557000E3,5.646455559E1 +3.228823000E3,5.903487317E1 +3.229201000E3,5.460588060E1 +3.229471000E3,5.534537953E1 +3.229720000E3,5.492103159E1 +3.229976000E3,5.474982433E1 +3.230276000E3,6.311967749E1 +3.230531000E3,6.144237593E1 +3.230845000E3,6.204497775E1 +3.231123000E3,6.192920277E1 +3.231382000E3,6.726064707E1 +3.231675000E3,5.951322284E1 +3.231970000E3,5.620608761E1 +3.232324000E3,5.597726308E1 +3.232555000E3,5.737347613E1 +3.232845000E3,5.515502781E1 +3.233172000E3,5.977186730E1 +3.233435000E3,6.131606000E1 +3.233742000E3,5.610580070E1 +3.234000000E3,5.978218601E1 +3.234272000E3,6.319970701E1 +3.234581000E3,5.608562509E1 +3.234862000E3,6.169746582E1 +3.235159000E3,6.105762669E1 +3.235416000E3,5.369522011E1 +3.235667000E3,6.580487109E1 +3.235906000E3,5.797374086E1 +3.236200000E3,6.981267784E1 +3.236445000E3,6.229515865E1 +3.236695000E3,6.858181426E1 +3.236976000E3,5.740787399E1 +3.237218000E3,5.455964692E1 +3.237457000E3,7.204325578E1 +3.237720000E3,6.142914611E1 +3.238013000E3,5.768794211E1 +3.238280000E3,5.732491467E1 +3.238580000E3,5.793744264E1 +3.238882000E3,5.626325471E1 +3.239149000E3,5.661724856E1 +3.239424000E3,6.969605219E1 +3.239726000E3,6.482965407E1 +3.239976000E3,5.947270091E1 +3.240278000E3,5.913422796E1 +3.240576000E3,5.630232959E1 +3.240877000E3,5.956366293E1 +3.241128000E3,6.177688280E1 +3.241391000E3,5.851951662E1 +3.241664000E3,5.959787493E1 +3.241944000E3,5.765523372E1 +3.242310000E3,5.961443978E1 +3.242602000E3,5.811194000E1 +3.242910000E3,5.765320401E1 +3.243188000E3,6.631148602E1 +3.243420000E3,6.916377121E1 +3.243673000E3,6.435158828E1 +3.243925000E3,6.486926440E1 +3.244170000E3,5.506348984E1 +3.244475000E3,6.702899260E1 +3.244772000E3,6.244838658E1 +3.245003000E3,6.057959417E1 +3.245328000E3,6.103137126E1 +3.245581000E3,5.723671640E1 +3.245864000E3,5.125127512E1 +3.246123000E3,5.748187394E1 +3.246395000E3,6.148075018E1 +3.246669000E3,6.226010686E1 +3.246940000E3,5.273573389E1 +3.247233000E3,5.462141876E1 +3.247482000E3,5.946160846E1 +3.247728000E3,6.623014757E1 +3.248041000E3,5.823129903E1 +3.248289000E3,5.689561843E1 +3.248538000E3,5.851473913E1 +3.248910000E3,5.778207994E1 +3.249187000E3,6.109108533E1 +3.249462000E3,6.368024039E1 +3.249726000E3,6.527718864E1 +3.249983000E3,5.855658653E1 +3.250281000E3,5.718860903E1 +3.250534000E3,5.946900486E1 +3.250785000E3,5.688578668E1 +3.251033000E3,5.444863300E1 +3.251316000E3,5.885016251E1 +3.251570000E3,6.172482417E1 +3.251833000E3,6.833245599E1 +3.252200000E3,6.656973280E1 +3.252441000E3,6.663686281E1 +3.252721000E3,6.380106140E1 +3.252991000E3,6.113258977E1 +3.253242000E3,7.270243700E1 +3.253457000E3,7.442711013E1 +3.253706000E3,7.097589831E1 +3.253999000E3,5.740107596E1 +3.254237000E3,5.407351324E1 +3.254532000E3,6.235563554E1 +3.254777000E3,6.148535018E1 +3.255085000E3,6.767985005E1 +3.255346000E3,5.893302101E1 +3.255628000E3,5.834235484E1 +3.255897000E3,6.152524318E1 +3.256146000E3,6.124474706E1 +3.256419000E3,5.928557591E1 +3.256642000E3,5.798678480E1 +3.256921000E3,5.800318977E1 +3.257149000E3,5.813391626E1 +3.257392000E3,6.200496820E1 +3.257645000E3,6.268368020E1 +3.257945000E3,6.783162804E1 +3.258296000E3,7.343015115E1 +3.258556000E3,7.258165803E1 +3.258805000E3,6.753466802E1 +3.259117000E3,7.134403593E1 +3.259421000E3,6.813653179E1 +3.259673000E3,6.449045726E1 +3.259939000E3,7.144310958E1 +3.260188000E3,6.619195201E1 +3.260438000E3,6.990193438E1 +3.260692000E3,6.791067771E1 +3.260944000E3,7.014061601E1 +3.261191000E3,7.271368424E1 +3.261532000E3,6.889323528E1 +3.261794000E3,6.087932672E1 +3.262047000E3,6.139975131E1 +3.262322000E3,6.684035582E1 +3.262586000E3,6.977079140E1 +3.262861000E3,6.711211223E1 +3.263137000E3,6.891542739E1 +3.263415000E3,6.450575202E1 +3.263671000E3,6.375083447E1 +3.263946000E3,6.525419018E1 +3.264250000E3,6.323969714E1 +3.264517000E3,7.351653517E1 +3.264813000E3,7.240916805E1 +3.265107000E3,6.991986455E1 +3.265349000E3,6.767718353E1 +3.265598000E3,7.020318016E1 +3.265847000E3,6.593396207E1 +3.266149000E3,6.776886494E1 +3.266400000E3,6.796917668E1 +3.266653000E3,6.234495715E1 +3.266897000E3,6.492303298E1 +3.267153000E3,6.551968402E1 +3.267398000E3,6.154456079E1 +3.267647000E3,6.087933145E1 +3.267896000E3,6.053677169E1 +3.268248000E3,6.893351216E1 +3.268513000E3,6.695525456E1 +3.268817000E3,6.263553940E1 +3.269070000E3,5.965971741E1 +3.269315000E3,6.136430702E1 +3.269582000E3,7.398506568E1 +3.269828000E3,7.145137487E1 +3.270128000E3,7.238266470E1 +3.270371000E3,7.289527120E1 +3.270623000E3,7.428636164E1 +3.270931000E3,7.248535741E1 +3.271185000E3,7.399445608E1 +3.271518000E3,7.355251323E1 +3.271795000E3,7.296660624E1 +3.272081000E3,7.131368475E1 +3.272358000E3,7.068792091E1 +3.272581000E3,6.623699177E1 +3.272835000E3,5.258987188E1 +3.273093000E3,6.044165509E1 +3.273337000E3,6.879817511E1 +3.273635000E3,6.970693453E1 +3.273931000E3,7.169623139E1 +3.274180000E3,7.112396098E1 +3.274428000E3,7.190035192E1 +3.274761000E3,7.089393329E1 +3.275038000E3,6.995869622E1 +3.275323000E3,6.900781199E1 +3.275569000E3,6.766263448E1 +3.275860000E3,6.881814388E1 +3.276116000E3,6.821596427E1 +3.276370000E3,6.896702672E1 +3.276649000E3,6.827119542E1 +3.276914000E3,6.795818984E1 +3.277171000E3,7.025945887E1 +3.277482000E3,6.685661764E1 +3.277741000E3,6.810082518E1 +3.278078000E3,6.902136690E1 +3.278358000E3,6.568611650E1 +3.278604000E3,7.123802039E1 +3.278848000E3,6.300940961E1 +3.279144000E3,6.292057856E1 +3.279382000E3,6.654167697E1 +3.279622000E3,6.808014942E1 +3.279917000E3,6.902808966E1 +3.280160000E3,6.685153426E1 +3.280471000E3,6.435621527E1 +3.280770000E3,6.765080490E1 +3.281059000E3,6.808248309E1 +3.281352000E3,6.477485011E1 +3.281602000E3,5.628454157E1 +3.281867000E3,5.800927668E1 +3.282130000E3,7.131716325E1 +3.282389000E3,7.355208108E1 +3.282663000E3,7.108584109E1 +3.282932000E3,5.710440961E1 +3.283191000E3,5.329699257E1 +3.283451000E3,5.003319724E1 +3.283709000E3,5.081704645E1 +3.284003000E3,5.075383483E1 +3.284259000E3,5.431712692E1 +3.284628000E3,5.277582101E1 +3.284917000E3,6.061307876E1 +3.285214000E3,6.168657926E1 +3.285472000E3,5.854988033E1 +3.285744000E3,4.913527641E1 +3.285999000E3,5.563664353E1 +3.286250000E3,5.841488419E1 +3.286517000E3,6.437604518E1 +3.286777000E3,6.124264602E1 +3.287035000E3,5.886049633E1 +3.287300000E3,6.196549102E1 +3.287630000E3,6.776239267E1 +3.287951000E3,6.702605133E1 +3.288259000E3,5.376695086E1 +3.288499000E3,5.095339550E1 +3.288807000E3,5.078317550E1 +3.289117000E3,5.659564827E1 +3.289411000E3,7.136818215E1 +3.289684000E3,6.629708396E1 +3.289982000E3,7.133804213E1 +3.290271000E3,6.994811010E1 +3.290544000E3,6.532422657E1 +3.290800000E3,6.451013008E1 +3.291132000E3,6.261305598E1 +3.291418000E3,6.696223022E1 +3.291676000E3,4.827412656E1 +3.291930000E3,4.724575587E1 +3.292202000E3,4.846609938E1 +3.292501000E3,5.276700476E1 +3.292822000E3,5.071547801E1 +3.293065000E3,4.944777186E1 +3.293349000E3,4.466809801E1 +3.293583000E3,4.432750067E1 +3.293832000E3,5.165471909E1 +3.294078000E3,4.606912616E1 +3.294427000E3,4.826074528E1 +3.294712000E3,4.434240888E1 +3.294985000E3,4.684583968E1 +3.295286000E3,5.104787864E1 +3.295548000E3,4.839146586E1 +3.295807000E3,5.479537456E1 +3.296066000E3,5.055213000E1 +3.296324000E3,3.933656037E1 +3.296585000E3,4.513652817E1 +3.296840000E3,4.805617654E1 +3.297099000E3,4.453428427E1 +3.297354000E3,5.205427791E1 +3.297705000E3,5.001223291E1 +3.297948000E3,5.342697607E1 +3.298200000E3,5.619467550E1 +3.298461000E3,5.565459347E1 +3.298738000E3,5.819577446E1 +3.298988000E3,5.077826383E1 +3.299236000E3,5.142261821E1 +3.299478000E3,5.610754709E1 +3.299775000E3,5.248015066E1 +3.300011000E3,4.742520943E1 +3.300325000E3,5.519481303E1 +3.300626000E3,4.628613419E1 +3.300959000E3,4.430731849E1 +3.301224000E3,4.380193782E1 +3.301473000E3,4.690647127E1 +3.301746000E3,4.845294386E1 +3.302057000E3,4.912389116E1 +3.302307000E3,5.155191791E1 +3.302563000E3,5.240902416E1 +3.302820000E3,4.677306339E1 +3.303083000E3,5.037145513E1 +3.303327000E3,4.506752152E1 +3.303573000E3,4.920686196E1 +3.303857000E3,4.935493485E1 +3.304189000E3,4.415801479E1 +3.304459000E3,4.423531181E1 +3.304768000E3,3.874162391E1 +3.305030000E3,4.189958295E1 +3.305333000E3,4.005870516E1 +3.305579000E3,5.072183491E1 +3.305843000E3,4.113754863E1 +3.306140000E3,5.548273149E1 +3.306383000E3,5.383424402E1 +3.306628000E3,5.205779319E1 +3.306877000E3,4.592085607E1 +3.307206000E3,5.092451979E1 +3.307449000E3,4.823039740E1 +3.307720000E3,5.026090042E1 +3.307982000E3,5.794901070E1 +3.308198000E3,5.239372011E1 +3.308502000E3,5.024517162E1 +3.308742000E3,4.253471720E1 +3.309044000E3,4.105523794E1 +3.309340000E3,3.028117703E1 +3.309596000E3,2.809150222E1 +3.309864000E3,2.626060468E1 +3.310135000E3,5.055452447E1 +3.310501000E3,7.199271156E1 +3.310777000E3,7.172468430E1 +3.311045000E3,7.282926204E1 +3.311313000E3,7.145580608E1 +3.311562000E3,7.218798353E1 +3.311867000E3,7.081603642E1 +3.312107000E3,7.122522782E1 +3.312348000E3,7.013128466E1 +3.312672000E3,7.138239962E1 +3.312976000E3,7.589001323E1 +3.313216000E3,6.988466628E1 +3.313506000E3,6.521999768E1 +3.313853000E3,5.781158269E1 +3.314129000E3,5.698768013E1 +3.314381000E3,5.954050680E1 +3.314636000E3,5.529467486E1 +3.314903000E3,6.884377149E1 +3.315163000E3,7.293133775E1 +3.315448000E3,7.186875504E1 +3.315697000E3,6.942752239E1 +3.315995000E3,6.899930460E1 +3.316247000E3,6.333687203E1 +3.316557000E3,6.820286469E1 +3.316856000E3,7.371764624E1 +3.317124000E3,7.475494405E1 +3.317411000E3,7.135849387E1 +3.317718000E3,5.726081152E1 +3.317965000E3,5.650406291E1 +3.318233000E3,4.901561410E1 +3.318490000E3,6.881993797E1 +3.318742000E3,7.251465406E1 +3.319010000E3,6.395213402E1 +3.319311000E3,7.197127027E1 +3.319615000E3,6.948849738E1 +3.319862000E3,6.664503435E1 +3.320187000E3,6.933008182E1 +3.320443000E3,6.121514242E1 +3.320753000E3,7.017439611E1 +3.321063000E3,7.393277725E1 +3.321329000E3,7.045535337E1 +3.321643000E3,6.985180357E1 +3.321896000E3,7.158196073E1 +3.322168000E3,6.999348148E1 +3.322483000E3,6.872091406E1 +3.322823000E3,6.386396976E1 +3.323116000E3,6.891641311E1 +3.323355000E3,6.790436633E1 +3.323733000E3,6.190629476E1 +3.324010000E3,6.307072034E1 +3.324306000E3,6.459812141E1 +3.324591000E3,6.928529051E1 +3.324846000E3,6.953301961E1 +3.325158000E3,6.946121501E1 +3.325471000E3,6.177266257E1 +3.325739000E3,6.057146439E1 +3.326000000E3,6.021658005E1 +3.326269000E3,6.588088303E1 +3.326536000E3,6.594068529E1 +3.326797000E3,5.957632846E1 +3.327117000E3,5.830018402E1 +3.327415000E3,5.952820917E1 +3.327678000E3,5.996997483E1 +3.327928000E3,6.374276040E1 +3.328204000E3,6.484785648E1 +3.328504000E3,6.253699213E1 +3.328743000E3,6.495848159E1 +3.329001000E3,6.390198219E1 +3.329317000E3,6.107203426E1 +3.329613000E3,6.678300135E1 +3.329901000E3,6.048531373E1 +3.330164000E3,6.806621622E1 +3.330501000E3,6.592361883E1 +3.330795000E3,6.652249790E1 +3.331059000E3,6.079261624E1 +3.331342000E3,7.055285274E1 +3.331620000E3,6.885169705E1 +3.331870000E3,6.676175072E1 +3.332125000E3,6.653456857E1 +3.332410000E3,6.539948315E1 +3.332658000E3,6.741723145E1 +3.332915000E3,5.982571500E1 +3.333236000E3,7.234399288E1 +3.333559000E3,7.555637810E1 +3.333801000E3,7.132946849E1 +3.334053000E3,7.012473325E1 +3.334345000E3,7.083313400E1 +3.334658000E3,6.159204912E1 +3.334951000E3,5.416652771E1 +3.335187000E3,5.331536045E1 +3.335488000E3,5.516853140E1 +3.335780000E3,5.755380245E1 +3.336028000E3,6.034949591E1 +3.336335000E3,5.933559907E1 +3.336577000E3,6.200660494E1 +3.336975000E3,6.752581884E1 +3.337230000E3,6.552308109E1 +3.337509000E3,6.043162012E1 +3.337804000E3,6.346167875E1 +3.338097000E3,5.762665769E1 +3.338354000E3,6.046465836E1 +3.338657000E3,5.841838084E1 +3.338937000E3,5.426549819E1 +3.339182000E3,5.312925890E1 +3.339425000E3,5.904532039E1 +3.339705000E3,5.548841740E1 +3.339970000E3,6.467955136E1 +3.340311000E3,6.518540616E1 +3.340567000E3,6.130157495E1 +3.340843000E3,4.234380604E1 +3.341102000E3,3.685811557E1 +3.341367000E3,5.229521155E1 +3.341631000E3,4.577123603E1 +3.341913000E3,5.522804687E1 +3.342191000E3,7.219670231E1 +3.342497000E3,6.138541536E1 +3.342739000E3,5.883033505E1 +3.342994000E3,5.692990468E1 +3.343272000E3,5.784770175E1 +3.343584000E3,5.851150722E1 +3.343847000E3,7.127137910E1 +3.344137000E3,7.004437015E1 +3.344432000E3,6.719880262E1 +3.344677000E3,6.266500726E1 +3.344966000E3,6.662051616E1 +3.345209000E3,6.259160849E1 +3.345462000E3,6.521765959E1 +3.345762000E3,6.373477950E1 +3.346056000E3,5.976833176E1 +3.346294000E3,5.557373783E1 +3.346597000E3,5.486821605E1 +3.346842000E3,4.854970484E1 +3.347096000E3,6.338774242E1 +3.347415000E3,6.646909489E1 +3.347712000E3,6.370164725E1 +3.347950000E3,6.577012972E1 +3.348257000E3,6.536203326E1 +3.348509000E3,5.777033235E1 +3.348799000E3,6.942121279E1 +3.349070000E3,6.552465655E1 +3.349329000E3,6.400867966E1 +3.349583000E3,5.955829212E1 +3.349911000E3,6.233007104E1 +3.350154000E3,7.360271557E1 +3.350432000E3,7.402471070E1 +3.350716000E3,7.225249055E1 +3.350966000E3,6.654334459E1 +3.351200000E3,6.590758849E1 +3.351507000E3,6.143698167E1 +3.351805000E3,7.197722167E1 +3.352079000E3,6.778594348E1 +3.352307000E3,5.712392879E1 +3.352566000E3,5.659236121E1 +3.352870000E3,5.352359430E1 +3.353127000E3,5.362353429E1 +3.353366000E3,5.964860406E1 +3.353638000E3,7.164177428E1 +3.353890000E3,6.730234717E1 +3.354173000E3,5.336089185E1 +3.354435000E3,4.770751864E1 +3.354689000E3,4.833001031E1 +3.354956000E3,4.464972004E1 +3.355220000E3,6.809720152E1 +3.355493000E3,7.032616040E1 +3.355723000E3,7.137092547E1 +3.356052000E3,7.106236065E1 +3.356287000E3,7.302101107E1 +3.356599000E3,6.868512076E1 +3.356867000E3,7.134905494E1 +3.357133000E3,7.032184319E1 +3.357463000E3,6.484515560E1 +3.357753000E3,5.949029357E1 +3.358081000E3,6.553405106E1 +3.358385000E3,5.460622041E1 +3.358634000E3,4.798111952E1 +3.358902000E3,5.356090224E1 +3.359186000E3,5.091993104E1 +3.359516000E3,5.980463665E1 +3.359805000E3,5.623340998E1 +3.360124000E3,4.885342740E1 +3.360404000E3,4.536632542E1 +3.360660000E3,5.726647509E1 +3.360941000E3,6.266477325E1 +3.361245000E3,5.265432523E1 +3.361521000E3,4.746518361E1 +3.361777000E3,5.341135388E1 +3.362038000E3,5.094337921E1 +3.362292000E3,5.832737886E1 +3.362616000E3,5.247742127E1 +3.363049000E3,5.123926483E1 +3.363313000E3,4.482127206E1 +3.363600000E3,4.813050338E1 +3.363848000E3,5.751744958E1 +3.364157000E3,5.045245795E1 diff --git a/04_loesungen/01_processing/alg15_xydiagramm_loesung_a4/alg15_xydiagramm_loesung_a4.pde b/04_loesungen/01_processing/alg15_xydiagramm_loesung_a4/alg15_xydiagramm_loesung_a4.pde new file mode 100644 index 0000000..549bc03 --- /dev/null +++ b/04_loesungen/01_processing/alg15_xydiagramm_loesung_a4/alg15_xydiagramm_loesung_a4.pde @@ -0,0 +1,117 @@ +/** + * XY-Diagramm für Schalldruckpegel, Zahlen werden aus CSV-Datei gelesen. + * + * @author Schaller + * @version 29.11.18 + */ + +// Liste mit allen Werten //<>// //<>// //<>// +double[] x_werte; +double[] y_werte; + +// Hilfsvariablen für die Suche +int akt_maximum=-1; // aktuell groesstes Element +int akt=-1; // aktuell untersuchtes Element +int verzoegerung=0; // Geschwindigkeit der Ausführung + +// Schriften +PFont kleineSchrift; +PFont grosseSchrift; + + +public void setup() { + // Zeichenfläche erzeugen + size(1000, 700); + background(0); + // Schriften laden + kleineSchrift = loadFont("KleineSchrift.vlw"); + grosseSchrift = loadFont("GrosseSchrift.vlw"); + + // CSV-Datei laden und anzeigen + ladeTabelle("Amplitudes.csv"); + stroke(250,250,200); + zeichneXYDiagramm(); +} + + +public void ladeTabelle(String name) { + // Tabelle aus CSV-Datei laden + Table csv = loadTable(name, "header,csv"); + + if (csv != null && csv.getColumnCount()==2) { + + // Initialisiere Arrays, in die alle Zeilen der Tabelle passen + x_werte = new double[csv.getRowCount()]; + y_werte = new double[csv.getRowCount()]; + + // Fülle die Arrays mit Werten aus der Tabelle + for (int i = 0; i < x_werte.length; i++) { + // Lies Wert aus der i. Zeile und der Spalte "Punkte" bzw. "Name" + x_werte[i] = csv.getDouble(i, "Time (s)"); + y_werte[i] = csv.getDouble(i, "Sound pressure level (dB)"); + } + } +} + +public void zeichneXYDiagramm() { + + + // Überschrift + fill(255, 255, 255); + textFont(grosseSchrift); + text("Lärmpegel", 2, 20); + textFont(kleineSchrift); + + // Alle Einträge darstellen + + if (x_werte != null) { + // Maximum bestimmen + int max_x_pos = sucheMaximum(x_werte); + int max_y_pos = sucheMaximum(y_werte); + double max_x = x_werte[max_x_pos]; + double max_y = y_werte[max_y_pos]; + + // Skalierungsfaktoren + double faktor_x = 1000.0 / max_x; + double faktor_y = 700.0 / max_y; + + for (int i = 0; i+1< x_werte.length; i++) { + + // Linien zeichnen + int x1 = (int) (x_werte[i]*faktor_x); + int y1 = (int) (700- y_werte[i]*faktor_y); + int x2 = (int) (x_werte[i+1]*faktor_x); + int y2 = (int) (700- y_werte[i+1]*faktor_y); + System.out.println("i:"+i); + + + line(x1,y1,x2,y2); + } + } +} + + +public int sucheMaximum(double[] zahlen) { + // Sind überhaupt Daten da? + if (zahlen.length==0 ) { + return -1; + } + + // Startwerte setzen + akt_maximum = 0; + akt = 1; + + // Alle Arrayelemente untersuchen + while (akt < zahlen.length) { + + // Neues größtes Element?? + if (zahlen[akt]> zahlen[akt_maximum]) { + // Dann merke dir das neue + akt_maximum = akt; + + } + akt = akt + 1; + } + // Gib Position des größten Elements zurück + return akt_maximum; +} diff --git a/04_loesungen/01_processing/alg15_xydiagramm_loesung_a4/data/GrosseSchrift.vlw b/04_loesungen/01_processing/alg15_xydiagramm_loesung_a4/data/GrosseSchrift.vlw new file mode 100644 index 0000000..497c8c8 Binary files /dev/null and b/04_loesungen/01_processing/alg15_xydiagramm_loesung_a4/data/GrosseSchrift.vlw differ diff --git a/04_loesungen/01_processing/alg15_xydiagramm_loesung_a4/data/KleineSchrift.vlw b/04_loesungen/01_processing/alg15_xydiagramm_loesung_a4/data/KleineSchrift.vlw new file mode 100644 index 0000000..ab1241a Binary files /dev/null and b/04_loesungen/01_processing/alg15_xydiagramm_loesung_a4/data/KleineSchrift.vlw differ diff --git a/04_loesungen/01_processing/alg15_xydiagramm_loesung_a4/punkte.csv b/04_loesungen/01_processing/alg15_xydiagramm_loesung_a4/punkte.csv new file mode 100644 index 0000000..f8ff7f2 --- /dev/null +++ b/04_loesungen/01_processing/alg15_xydiagramm_loesung_a4/punkte.csv @@ -0,0 +1,6 @@ +"Name","Punkte" +Nikolaus,216 +Nikolaus,591 +Nikolaus,1057 +Nikolaus,180 +Winfried,168 diff --git a/04_loesungen/01_processing/alg15_xydiagramm_loesung_a6/Amplitudes.csv b/04_loesungen/01_processing/alg15_xydiagramm_loesung_a6/Amplitudes.csv new file mode 100644 index 0000000..bc2151b --- /dev/null +++ b/04_loesungen/01_processing/alg15_xydiagramm_loesung_a6/Amplitudes.csv @@ -0,0 +1,12219 @@ +"Time (s)","Sound pressure level (dB)" +0.000000000E0,6.133205686E1 +1.130000000E-1,5.602431153E1 +3.840000000E-1,3.897519867E1 +7.780000000E-1,4.208195145E1 +1.036000000E0,3.840936313E1 +1.305000000E0,3.561092139E1 +1.587000000E0,4.663257633E1 +1.829000000E0,5.311883882E1 +2.084000000E0,5.299431820E1 +2.357000000E0,5.747397858E1 +2.643000000E0,5.626338063E1 +2.949000000E0,5.790811120E1 +3.238000000E0,5.874544026E1 +3.497000000E0,5.736162139E1 +3.775000000E0,5.897817442E1 +4.097000000E0,5.789822970E1 +4.357000000E0,5.312015799E1 +4.626000000E0,5.710192134E1 +4.941000000E0,6.275087240E1 +5.235000000E0,5.784358767E1 +5.535000000E0,5.388577420E1 +5.827000000E0,5.403495101E1 +6.090000000E0,5.428355086E1 +6.339000000E0,6.064473144E1 +6.616000000E0,6.271091291E1 +6.850000000E0,6.982615367E1 +7.128000000E0,7.050308750E1 +7.487000000E0,5.395311298E1 +7.760000000E0,5.036401582E1 +8.065000000E0,4.614125463E1 +8.361000000E0,6.244776407E1 +8.614000000E0,6.315719526E1 +8.862000000E0,5.981740395E1 +9.123000000E0,5.907292535E1 +9.374000000E0,5.661523092E1 +9.665000000E0,6.210368813E1 +9.948000000E0,6.140958115E1 +1.021100000E1,5.697007655E1 +1.058300000E1,5.460455934E1 +1.084000000E1,5.408516231E1 +1.115300000E1,5.907221377E1 +1.142100000E1,6.113412429E1 +1.172700000E1,6.267949704E1 +1.197100000E1,6.245109870E1 +1.226500000E1,6.342534529E1 +1.255800000E1,6.810008108E1 +1.287100000E1,6.036891848E1 +1.313400000E1,5.913231814E1 +1.342700000E1,5.973818566E1 +1.371600000E1,5.534371651E1 +1.401200000E1,5.694514867E1 +1.431200000E1,6.134814982E1 +1.461100000E1,5.900023912E1 +1.484600000E1,5.689908400E1 +1.515800000E1,5.296474858E1 +1.544000000E1,5.608528071E1 +1.569300000E1,5.728560404E1 +1.596900000E1,5.837984103E1 +1.620100000E1,5.718896638E1 +1.649200000E1,5.909973037E1 +1.678900000E1,5.705554272E1 +1.716300000E1,6.079937758E1 +1.747400000E1,5.618116117E1 +1.775200000E1,5.519881157E1 +1.803800000E1,5.402386340E1 +1.829100000E1,5.678484358E1 +1.858100000E1,5.954639303E1 +1.882300000E1,6.030021638E1 +1.908000000E1,5.588340744E1 +1.934400000E1,5.668691200E1 +1.958800000E1,6.042765467E1 +1.983400000E1,5.839794223E1 +2.008500000E1,5.457976882E1 +2.039500000E1,5.974390604E1 +2.064000000E1,6.049774386E1 +2.092900000E1,6.029857781E1 +2.117800000E1,6.116406203E1 +2.142700000E1,5.664722837E1 +2.173400000E1,5.823294996E1 +2.203100000E1,5.517538657E1 +2.229000000E1,5.322823206E1 +2.259900000E1,6.180779467E1 +2.285300000E1,6.106216386E1 +2.314900000E1,5.883321877E1 +2.347100000E1,6.045262422E1 +2.375000000E1,6.163931220E1 +2.406000000E1,4.841181734E1 +2.432800000E1,4.372149986E1 +2.462900000E1,5.625563946E1 +2.487100000E1,5.672759349E1 +2.513200000E1,5.896193725E1 +2.540800000E1,5.893011728E1 +2.566400000E1,5.857261268E1 +2.596700000E1,5.859012974E1 +2.621900000E1,5.635586832E1 +2.648700000E1,5.350948293E1 +2.673900000E1,5.430043092E1 +2.701400000E1,5.666610976E1 +2.727500000E1,5.218421407E1 +2.753100000E1,5.689076583E1 +2.782000000E1,5.796831886E1 +2.806900000E1,5.608205064E1 +2.831700000E1,5.482273815E1 +2.861600000E1,5.392425499E1 +2.888300000E1,5.329416010E1 +2.914800000E1,5.366916703E1 +2.940200000E1,5.280847155E1 +2.968000000E1,5.333298066E1 +2.994300000E1,5.497085471E1 +3.031200000E1,5.753094076E1 +3.057900000E1,5.655381974E1 +3.086100000E1,5.517704804E1 +3.115600000E1,5.592585858E1 +3.140700000E1,6.212826207E1 +3.166000000E1,5.699502474E1 +3.193500000E1,6.025129057E1 +3.223100000E1,5.686166208E1 +3.247300000E1,5.807641915E1 +3.271900000E1,6.065155151E1 +3.296400000E1,5.961384387E1 +3.320500000E1,6.119064420E1 +3.354400000E1,5.548464633E1 +3.378000000E1,5.699661616E1 +3.408000000E1,5.653770482E1 +3.438000000E1,5.083503664E1 +3.468200000E1,5.695639918E1 +3.495800000E1,5.566535489E1 +3.524700000E1,5.914853092E1 +3.552700000E1,5.758441289E1 +3.576600000E1,6.085665801E1 +3.606700000E1,5.862586334E1 +3.630600000E1,5.096841655E1 +3.662200000E1,6.009246966E1 +3.689400000E1,5.981749726E1 +3.715300000E1,6.108830629E1 +3.740300000E1,5.724514841E1 +3.766500000E1,5.934850613E1 +3.793000000E1,5.725470328E1 +3.819100000E1,5.843556167E1 +3.847700000E1,5.697759761E1 +3.874000000E1,5.721548979E1 +3.901600000E1,5.649629904E1 +3.927200000E1,5.850326911E1 +3.954600000E1,5.691951660E1 +3.993900000E1,5.357092442E1 +4.023400000E1,5.817046878E1 +4.053000000E1,5.554327077E1 +4.081200000E1,5.802928061E1 +4.103900000E1,5.663899845E1 +4.128700000E1,5.494654466E1 +4.155800000E1,5.564956216E1 +4.181900000E1,5.663250304E1 +4.211300000E1,5.652236278E1 +4.238100000E1,5.614203459E1 +4.264000000E1,5.433145844E1 +4.295000000E1,6.132645299E1 +4.326200000E1,6.040612545E1 +4.351400000E1,5.905916902E1 +4.377100000E1,5.885516023E1 +4.401000000E1,5.514814582E1 +4.430800000E1,5.663232510E1 +4.455900000E1,5.055807811E1 +4.482100000E1,5.614950318E1 +4.513300000E1,6.025044420E1 +4.537500000E1,5.643182261E1 +4.568900000E1,5.709089314E1 +4.600500000E1,5.480136123E1 +4.624500000E1,5.924046686E1 +4.656900000E1,6.172358505E1 +4.684100000E1,5.645515217E1 +4.711100000E1,6.002156043E1 +4.736300000E1,6.182669975E1 +4.759700000E1,5.557741963E1 +4.786700000E1,5.598662295E1 +4.818300000E1,5.664767890E1 +4.847900000E1,5.956168629E1 +4.874200000E1,5.713315811E1 +4.898900000E1,5.765479272E1 +4.931400000E1,5.507101982E1 +4.961600000E1,5.361677606E1 +4.990000000E1,5.558547080E1 +5.019600000E1,5.402951441E1 +5.046500000E1,5.805429700E1 +5.078800000E1,5.327636151E1 +5.110300000E1,4.980825483E1 +5.137100000E1,5.290981249E1 +5.165200000E1,4.817864123E1 +5.190100000E1,5.585478693E1 +5.214500000E1,5.457392293E1 +5.242900000E1,5.449921652E1 +5.272500000E1,5.537781025E1 +5.302100000E1,5.598018287E1 +5.326000000E1,5.612851081E1 +5.355800000E1,5.312697891E1 +5.384800000E1,5.799703575E1 +5.409200000E1,5.662162553E1 +5.433900000E1,5.392344795E1 +5.459100000E1,5.398098819E1 +5.494900000E1,5.489231889E1 +5.527100000E1,5.658153835E1 +5.552800000E1,5.624900056E1 +5.589500000E1,4.979935744E1 +5.616900000E1,5.146998424E1 +5.645400000E1,5.878755245E1 +5.668600000E1,5.846227673E1 +5.694400000E1,5.977267383E1 +5.726200000E1,5.508647523E1 +5.754400000E1,5.138853207E1 +5.784300000E1,5.327451232E1 +5.808600000E1,5.887142781E1 +5.837800000E1,5.858062431E1 +5.862200000E1,5.917458096E1 +5.889700000E1,6.050411670E1 +5.926300000E1,5.908687144E1 +5.952100000E1,5.570790758E1 +5.981900000E1,5.444849000E1 +6.006100000E1,5.201240285E1 +6.032000000E1,4.755830762E1 +6.061900000E1,5.204388424E1 +6.086500000E1,5.626914911E1 +6.117500000E1,5.280379974E1 +6.142900000E1,5.093923019E1 +6.173000000E1,5.460427137E1 +6.197800000E1,5.299601182E1 +6.230600000E1,5.424208739E1 +6.257600000E1,5.253762352E1 +6.283700000E1,5.544043962E1 +6.309800000E1,5.527614156E1 +6.335400000E1,5.747262922E1 +6.360700000E1,5.468151445E1 +6.384900000E1,5.582905565E1 +6.410700000E1,5.802400474E1 +6.435000000E1,5.204893636E1 +6.459600000E1,5.280146425E1 +6.486300000E1,4.876648093E1 +6.509700000E1,5.311679703E1 +6.537500000E1,5.192778643E1 +6.571400000E1,5.346709918E1 +6.597900000E1,5.370921552E1 +6.627900000E1,5.676705279E1 +6.652200000E1,5.832258643E1 +6.676600000E1,6.257736406E1 +6.703100000E1,6.295448429E1 +6.737800000E1,6.100964383E1 +6.766100000E1,5.182636016E1 +6.790700000E1,4.952717893E1 +6.821100000E1,5.667475715E1 +6.850300000E1,5.872819054E1 +6.882100000E1,6.004516195E1 +6.907300000E1,5.559244143E1 +6.935100000E1,5.600379936E1 +6.961500000E1,5.338006499E1 +6.987600000E1,5.360104859E1 +7.011900000E1,4.644905289E1 +7.037100000E1,4.528909123E1 +7.067200000E1,5.787885076E1 +7.091600000E1,5.602551032E1 +7.115700000E1,5.989544193E1 +7.142200000E1,6.110384869E1 +7.167900000E1,5.887448069E1 +7.192600000E1,5.797896456E1 +7.226000000E1,5.965665129E1 +7.251000000E1,6.477744226E1 +7.281200000E1,6.243775536E1 +7.310800000E1,5.921576979E1 +7.335600000E1,6.629420582E1 +7.364100000E1,6.683725429E1 +7.392300000E1,5.758295449E1 +7.418800000E1,5.654909286E1 +7.448600000E1,5.881341247E1 +7.472100000E1,5.546609910E1 +7.498300000E1,5.586542777E1 +7.526600000E1,5.463216262E1 +7.558500000E1,5.947397496E1 +7.586200000E1,6.218459899E1 +7.609800000E1,6.134189272E1 +7.635800000E1,5.727526170E1 +7.666700000E1,5.579062978E1 +7.699300000E1,6.015063828E1 +7.729000000E1,6.022787424E1 +7.756300000E1,5.646982462E1 +7.782200000E1,6.005734442E1 +7.813200000E1,5.950776839E1 +7.842200000E1,6.314009710E1 +7.880400000E1,5.425753266E1 +7.910400000E1,5.909139002E1 +7.935300000E1,5.600377253E1 +7.962300000E1,6.036368528E1 +7.993700000E1,5.940415340E1 +8.018900000E1,6.102152187E1 +8.050000000E1,6.619104713E1 +8.074000000E1,6.149981675E1 +8.098900000E1,5.978899259E1 +8.123800000E1,5.963150500E1 +8.150300000E1,6.509054947E1 +8.181300000E1,6.387458039E1 +8.220700000E1,6.421798778E1 +8.246100000E1,6.092500605E1 +8.271900000E1,6.039313205E1 +8.297100000E1,5.885189543E1 +8.328000000E1,6.068901175E1 +8.355600000E1,6.531581124E1 +8.381900000E1,6.460984287E1 +8.407800000E1,6.281147078E1 +8.435000000E1,5.961599483E1 +8.463400000E1,5.915457491E1 +8.489200000E1,5.383227231E1 +8.513000000E1,5.278474817E1 +8.551100000E1,6.165964712E1 +8.574900000E1,6.442604107E1 +8.600700000E1,6.551005247E1 +8.626000000E1,6.660338206E1 +8.650900000E1,6.304014634E1 +8.676000000E1,6.488065719E1 +8.701800000E1,6.416881833E1 +8.728000000E1,5.892166498E1 +8.754500000E1,5.946249393E1 +8.785000000E1,6.506678358E1 +8.809400000E1,5.703264442E1 +8.840500000E1,6.164086486E1 +8.876300000E1,6.276173959E1 +8.906100000E1,5.818071871E1 +8.930500000E1,5.844394446E1 +8.956300000E1,5.657440647E1 +8.987400000E1,6.120356137E1 +9.011500000E1,6.094306560E1 +9.041100000E1,5.978472131E1 +9.065500000E1,6.008128664E1 +9.092400000E1,5.758286780E1 +9.123300000E1,5.353387594E1 +9.151600000E1,5.676204998E1 +9.183800000E1,5.245702159E1 +9.218200000E1,5.642589170E1 +9.243600000E1,5.542467479E1 +9.268000000E1,5.580829615E1 +9.297600000E1,5.148061441E1 +9.322800000E1,4.635974806E1 +9.353200000E1,5.465579762E1 +9.377300000E1,5.154999739E1 +9.402200000E1,5.544992474E1 +9.427900000E1,5.302390200E1 +9.453300000E1,5.127982623E1 +9.478800000E1,5.263086656E1 +9.503100000E1,5.128121484E1 +9.532100000E1,5.061466876E1 +9.557700000E1,5.328260476E1 +9.582800000E1,5.101663724E1 +9.607100000E1,5.400893265E1 +9.640400000E1,5.756552061E1 +9.665500000E1,5.665487755E1 +9.690400000E1,5.719000980E1 +9.715400000E1,5.593995548E1 +9.740400000E1,5.420194495E1 +9.771300000E1,4.867232074E1 +9.802100000E1,5.053798103E1 +9.830700000E1,4.874294948E1 +9.857500000E1,5.754515654E1 +9.883700000E1,5.863618568E1 +9.909700000E1,6.070195076E1 +9.935300000E1,5.434874196E1 +9.961300000E1,6.163600431E1 +9.987300000E1,5.555228218E1 +1.001200000E2,5.733850418E1 +1.003910000E2,6.133233800E1 +1.006620000E2,5.853313440E1 +1.009020000E2,5.435835494E1 +1.011680000E2,5.329891948E1 +1.014680000E2,5.356470018E1 +1.018410000E2,5.574288130E1 +1.021370000E2,5.927571979E1 +1.024000000E2,5.789956910E1 +1.026980000E2,6.081738139E1 +1.029540000E2,5.575615853E1 +1.032580000E2,5.337382111E1 +1.035140000E2,5.562761746E1 +1.038150000E2,5.905624776E1 +1.041040000E2,5.696105750E1 +1.043990000E2,6.170938149E1 +1.046370000E2,5.823687000E1 +1.049080000E2,6.066674703E1 +1.051740000E2,6.220969933E1 +1.054810000E2,5.755805236E1 +1.057660000E2,5.735691579E1 +1.060450000E2,5.761618087E1 +1.063040000E2,5.188413372E1 +1.065680000E2,5.643639822E1 +1.068740000E2,5.312430876E1 +1.071280000E2,5.924995828E1 +1.073900000E2,5.546187342E1 +1.076920000E2,5.474389270E1 +1.079790000E2,5.600814816E1 +1.082440000E2,5.561453096E1 +1.084980000E2,5.408559240E1 +1.087580000E2,5.622058302E1 +1.090160000E2,5.768852773E1 +1.092670000E2,5.516804842E1 +1.095340000E2,5.973626648E1 +1.098120000E2,6.403409511E1 +1.100690000E2,6.035201036E1 +1.103490000E2,5.940482770E1 +1.105950000E2,5.932126109E1 +1.108600000E2,5.859387697E1 +1.111460000E2,5.929800416E1 +1.114110000E2,5.930503134E1 +1.117890000E2,6.170536210E1 +1.120410000E2,6.214563711E1 +1.123490000E2,5.810151097E1 +1.126320000E2,5.823719807E1 +1.128910000E2,6.454485320E1 +1.131870000E2,6.755031626E1 +1.134560000E2,6.410743881E1 +1.137200000E2,5.913442857E1 +1.139870000E2,6.382823805E1 +1.142400000E2,5.859239523E1 +1.145180000E2,5.135859796E1 +1.147890000E2,5.294563188E1 +1.151440000E2,5.357868048E1 +1.154220000E2,5.561359505E1 +1.156620000E2,5.645675088E1 +1.159670000E2,5.879425595E1 +1.162610000E2,5.918610512E1 +1.164990000E2,6.083658676E1 +1.167470000E2,5.526645697E1 +1.169880000E2,5.471312988E1 +1.172910000E2,6.211796732E1 +1.175510000E2,5.417468648E1 +1.177930000E2,5.576739557E1 +1.180750000E2,5.912472365E1 +1.184660000E2,5.718213173E1 +1.187710000E2,5.747081312E1 +1.190170000E2,5.741742618E1 +1.192690000E2,5.379557814E1 +1.195330000E2,5.428733520E1 +1.197780000E2,6.177329402E1 +1.200450000E2,5.672333166E1 +1.203170000E2,5.584947723E1 +1.205670000E2,5.382665718E1 +1.208400000E2,5.443690083E1 +1.211280000E2,5.221565874E1 +1.214800000E2,5.516249741E1 +1.217540000E2,5.676279334E1 +1.220050000E2,5.303796336E1 +1.222680000E2,5.258840561E1 +1.225120000E2,5.671935607E1 +1.227660000E2,4.902892756E1 +1.230240000E2,4.264962220E1 +1.232830000E2,4.818154680E1 +1.235340000E2,5.204058636E1 +1.238430000E2,5.649936271E1 +1.241410000E2,5.396154490E1 +1.244200000E2,5.428877275E1 +1.246760000E2,4.778715710E1 +1.249500000E2,4.912370762E1 +1.252110000E2,5.114426735E1 +1.255020000E2,5.345096378E1 +1.257410000E2,5.581149074E1 +1.260430000E2,5.211774829E1 +1.263320000E2,5.470047014E1 +1.265660000E2,5.399085344E1 +1.268600000E2,5.981732528E1 +1.271210000E2,5.944116770E1 +1.273530000E2,5.668281238E1 +1.275970000E2,5.042419391E1 +1.279080000E2,5.014554177E1 +1.282260000E2,5.350461413E1 +1.285240000E2,5.453533258E1 +1.287780000E2,5.809919663E1 +1.290280000E2,5.729580956E1 +1.292980000E2,5.681749266E1 +1.296010000E2,5.542882864E1 +1.298980000E2,5.612046892E1 +1.302070000E2,6.074750886E1 +1.304620000E2,5.979349108E1 +1.307520000E2,5.806574219E1 +1.310590000E2,5.738881777E1 +1.314010000E2,5.595280312E1 +1.316630000E2,5.401154636E1 +1.319120000E2,5.499471091E1 +1.321620000E2,5.551354327E1 +1.324640000E2,6.567912108E1 +1.327650000E2,5.725129100E1 +1.330150000E2,6.452906176E1 +1.333160000E2,5.778565576E1 +1.335760000E2,6.242194617E1 +1.338200000E2,5.570863747E1 +1.340710000E2,5.755877138E1 +1.343660000E2,6.819206156E1 +1.346260000E2,6.094769164E1 +1.349310000E2,6.447198163E1 +1.351810000E2,5.482297950E1 +1.354630000E2,6.327012623E1 +1.357210000E2,5.723157337E1 +1.359770000E2,5.835004111E1 +1.362140000E2,6.413045068E1 +1.365290000E2,6.022343539E1 +1.368110000E2,5.969265006E1 +1.371070000E2,5.589766444E1 +1.373670000E2,6.089100679E1 +1.376970000E2,6.762783521E1 +1.379410000E2,5.740809854E1 +1.381870000E2,6.711182247E1 +1.384650000E2,6.290175574E1 +1.387060000E2,6.352322572E1 +1.390400000E2,5.897504025E1 +1.392980000E2,5.872568346E1 +1.396520000E2,5.582882684E1 +1.399140000E2,5.874428562E1 +1.402160000E2,5.275369064E1 +1.404650000E2,5.181123336E1 +1.407250000E2,4.758951485E1 +1.410550000E2,4.601470876E1 +1.413500000E2,5.203790008E1 +1.416310000E2,5.380793436E1 +1.418780000E2,5.006781735E1 +1.421580000E2,4.792469964E1 +1.424020000E2,5.136650820E1 +1.427060000E2,5.127969468E1 +1.430200000E2,5.304643312E1 +1.433210000E2,5.218299100E1 +1.436050000E2,5.568762266E1 +1.439010000E2,5.522696018E1 +1.442570000E2,5.919224289E1 +1.445880000E2,6.201398016E1 +1.448680000E2,5.750742223E1 +1.451160000E2,5.811963790E1 +1.454090000E2,5.695462128E1 +1.456560000E2,5.854812337E1 +1.458980000E2,5.886107911E1 +1.461720000E2,5.454171305E1 +1.464480000E2,5.674410925E1 +1.466770000E2,5.450912101E1 +1.469270000E2,5.953864028E1 +1.471790000E2,6.097527460E1 +1.475260000E2,5.825769450E1 +1.478290000E2,5.780473579E1 +1.480790000E2,6.185542851E1 +1.483350000E2,5.390929394E1 +1.486330000E2,5.400087479E1 +1.488750000E2,5.328656685E1 +1.491190000E2,5.599536596E1 +1.494200000E2,5.721648542E1 +1.497150000E2,5.787493165E1 +1.500380000E2,5.480047158E1 +1.503480000E2,5.002404450E1 +1.506590000E2,5.486151348E1 +1.509700000E2,6.245235750E1 +1.512360000E2,5.831236552E1 +1.514820000E2,6.253825815E1 +1.517260000E2,6.440134635E1 +1.520120000E2,5.646251942E1 +1.523080000E2,5.569851104E1 +1.525630000E2,5.574195002E1 +1.528610000E2,6.073633455E1 +1.531220000E2,5.704364811E1 +1.533960000E2,5.858521931E1 +1.536900000E2,6.334346239E1 +1.540080000E2,5.734505299E1 +1.542490000E2,6.522555977E1 +1.544980000E2,5.500712815E1 +1.547420000E2,5.698741268E1 +1.549830000E2,5.097374633E1 +1.552760000E2,5.421781291E1 +1.555100000E2,5.276919678E1 +1.558070000E2,5.444895965E1 +1.560410000E2,5.023818561E1 +1.563440000E2,5.460917302E1 +1.565880000E2,5.459938847E1 +1.568920000E2,5.843131092E1 +1.572210000E2,5.876667307E1 +1.574850000E2,5.735202828E1 +1.577300000E2,5.496399564E1 +1.580290000E2,5.249359356E1 +1.582920000E2,5.216967072E1 +1.585400000E2,5.506360532E1 +1.588040000E2,4.854470136E1 +1.590480000E2,5.455647594E1 +1.593040000E2,5.480802962E1 +1.595560000E2,5.117555202E1 +1.598230000E2,5.525001141E1 +1.600680000E2,6.028739680E1 +1.604080000E2,6.051466285E1 +1.606910000E2,5.941686107E1 +1.609450000E2,6.263789003E1 +1.611920000E2,5.862463866E1 +1.614980000E2,5.858673558E1 +1.617730000E2,5.766546261E1 +1.620210000E2,5.485521148E1 +1.623080000E2,5.814732367E1 +1.625850000E2,5.829863647E1 +1.628370000E2,5.473457172E1 +1.631510000E2,5.323729241E1 +1.634320000E2,5.795543593E1 +1.637670000E2,5.845831909E1 +1.640670000E2,5.883503284E1 +1.643040000E2,5.933733684E1 +1.645990000E2,5.316483696E1 +1.648620000E2,5.628275472E1 +1.651110000E2,5.612764782E1 +1.654290000E2,5.739409022E1 +1.657290000E2,5.275374209E1 +1.660100000E2,5.606330732E1 +1.662350000E2,4.973765069E1 +1.664840000E2,4.855931683E1 +1.667820000E2,4.830487304E1 +1.670210000E2,5.643349546E1 +1.672820000E2,5.752246312E1 +1.675830000E2,5.576545129E1 +1.678330000E2,5.583582770E1 +1.681390000E2,5.301617697E1 +1.684460000E2,5.088408561E1 +1.686990000E2,5.149775091E1 +1.690030000E2,6.019099852E1 +1.692410000E2,6.143998752E1 +1.695380000E2,6.183098470E1 +1.697780000E2,5.964256200E1 +1.701420000E2,5.648358262E1 +1.703870000E2,5.768033788E1 +1.706360000E2,5.037521789E1 +1.709530000E2,5.268785935E1 +1.712030000E2,5.850048969E1 +1.714650000E2,5.537813713E1 +1.717710000E2,5.989062491E1 +1.720770000E2,6.371629733E1 +1.723380000E2,5.413135778E1 +1.726060000E2,5.582389161E1 +1.729040000E2,6.344770094E1 +1.731770000E2,6.038125570E1 +1.735090000E2,5.229655017E1 +1.737830000E2,5.594074665E1 +1.740430000E2,6.258802116E1 +1.743030000E2,5.773122794E1 +1.745600000E2,5.533899998E1 +1.748290000E2,5.069657364E1 +1.750850000E2,6.285550191E1 +1.753480000E2,5.470504416E1 +1.756240000E2,5.746379759E1 +1.758870000E2,5.928233462E1 +1.761350000E2,5.214791610E1 +1.763840000E2,5.260177806E1 +1.767030000E2,4.844041050E1 +1.769490000E2,5.275717684E1 +1.772330000E2,5.436891746E1 +1.774780000E2,5.441421810E1 +1.777590000E2,5.485847839E1 +1.780320000E2,5.714239097E1 +1.782910000E2,6.028837304E1 +1.785470000E2,5.706420775E1 +1.788380000E2,5.509582512E1 +1.791200000E2,5.674185072E1 +1.794340000E2,5.437491314E1 +1.796940000E2,5.696592309E1 +1.799990000E2,5.344092263E1 +1.802540000E2,5.414345246E1 +1.804960000E2,5.421992498E1 +1.808400000E2,5.317024536E1 +1.811450000E2,5.422714635E1 +1.814530000E2,5.933207779E1 +1.817720000E2,5.916706050E1 +1.820730000E2,5.685980261E1 +1.824210000E2,5.521649456E1 +1.826850000E2,5.651993888E1 +1.829810000E2,5.707596711E1 +1.832810000E2,5.464130538E1 +1.836160000E2,5.364065008E1 +1.838600000E2,5.913078622E1 +1.841080000E2,5.695541400E1 +1.843520000E2,6.237274690E1 +1.846510000E2,6.017101966E1 +1.848950000E2,5.670915019E1 +1.851380000E2,5.651470649E1 +1.854400000E2,5.919691857E1 +1.857560000E2,5.752836475E1 +1.860680000E2,6.133052078E1 +1.863670000E2,6.001801442E1 +1.866740000E2,5.871186574E1 +1.869510000E2,5.858669373E1 +1.872240000E2,5.722343490E1 +1.875200000E2,5.725198568E1 +1.877700000E2,5.560524182E1 +1.880340000E2,5.419540118E1 +1.882980000E2,6.169219144E1 +1.885790000E2,5.704261604E1 +1.888700000E2,5.651125138E1 +1.891060000E2,5.778536485E1 +1.894110000E2,5.304160496E1 +1.896990000E2,5.105254388E1 +1.900460000E2,5.338626279E1 +1.902980000E2,5.090929652E1 +1.905360000E2,5.235399183E1 +1.907970000E2,5.429173243E1 +1.910620000E2,5.376238901E1 +1.913500000E2,6.411203098E1 +1.916020000E2,6.235211697E1 +1.919100000E2,5.719243884E1 +1.922140000E2,5.965550680E1 +1.925010000E2,5.850063986E1 +1.928110000E2,6.013906156E1 +1.930480000E2,5.912633730E1 +1.934000000E2,5.860712099E1 +1.936870000E2,5.944287516E1 +1.939980000E2,5.676076088E1 +1.942520000E2,5.712881871E1 +1.945490000E2,5.515631677E1 +1.948870000E2,5.670925955E1 +1.951320000E2,5.768263389E1 +1.954210000E2,5.735243887E1 +1.957290000E2,5.883798740E1 +1.960030000E2,5.654393164E1 +1.963340000E2,5.345251733E1 +1.966710000E2,5.034487882E1 +1.969060000E2,5.741493139E1 +1.971980000E2,5.877434013E1 +1.974210000E2,5.965387227E1 +1.977200000E2,6.306941384E1 +1.979730000E2,6.004201692E1 +1.982230000E2,6.106500017E1 +1.984800000E2,5.674857861E1 +1.987290000E2,6.020914127E1 +1.990680000E2,6.067289060E1 +1.993460000E2,5.996658083E1 +1.996390000E2,5.676340490E1 +1.999500000E2,5.612304129E1 +2.002130000E2,6.289766509E1 +2.005150000E2,5.720971103E1 +2.008280000E2,5.752136939E1 +2.010940000E2,6.058659890E1 +2.013440000E2,5.618430636E1 +2.016270000E2,6.056271249E1 +2.019400000E2,5.729198827E1 +2.022100000E2,5.793084452E1 +2.025070000E2,5.787194228E1 +2.027910000E2,5.959620014E1 +2.030940000E2,6.012062596E1 +2.033180000E2,6.276377758E1 +2.036210000E2,5.834405857E1 +2.039320000E2,5.545225289E1 +2.042050000E2,5.829439447E1 +2.044730000E2,5.799912649E1 +2.047970000E2,5.444896398E1 +2.050680000E2,5.743866699E1 +2.053150000E2,5.862448994E1 +2.055880000E2,5.778478934E1 +2.058890000E2,5.527981007E1 +2.061620000E2,5.742523507E1 +2.064580000E2,5.472188821E1 +2.067100000E2,6.202721053E1 +2.069630000E2,5.861698013E1 +2.072080000E2,6.294616718E1 +2.074730000E2,6.321186761E1 +2.077380000E2,5.776609523E1 +2.080390000E2,6.061292698E1 +2.083320000E2,5.857532480E1 +2.085870000E2,5.800369352E1 +2.088450000E2,5.977447345E1 +2.091070000E2,5.957010157E1 +2.093520000E2,6.145770306E1 +2.096060000E2,6.176056517E1 +2.098580000E2,6.033519811E1 +2.100970000E2,6.429628489E1 +2.103980000E2,6.215353584E1 +2.106470000E2,6.299048914E1 +2.109300000E2,6.133544133E1 +2.112010000E2,5.397487394E1 +2.114250000E2,5.313920655E1 +2.116740000E2,5.552710709E1 +2.119140000E2,5.692289703E1 +2.121730000E2,5.618691953E1 +2.124220000E2,5.402804715E1 +2.127170000E2,5.390450402E1 +2.129570000E2,5.652515030E1 +2.132580000E2,5.490504921E1 +2.135120000E2,5.485761082E1 +2.137850000E2,6.486277416E1 +2.140520000E2,6.121826472E1 +2.143580000E2,6.355465948E1 +2.146390000E2,5.534291145E1 +2.148790000E2,6.610858745E1 +2.151670000E2,5.617739728E1 +2.154670000E2,5.426651762E1 +2.157300000E2,5.840247716E1 +2.160830000E2,5.257749691E1 +2.163200000E2,6.345809118E1 +2.165810000E2,6.020490407E1 +2.168390000E2,5.603372378E1 +2.170870000E2,5.452432165E1 +2.173530000E2,5.679931822E1 +2.176220000E2,6.225558234E1 +2.179360000E2,5.991886985E1 +2.182430000E2,6.307902574E1 +2.184780000E2,6.764692456E1 +2.187700000E2,6.696013302E1 +2.190280000E2,6.419552300E1 +2.193390000E2,6.401831507E1 +2.196000000E2,6.317016249E1 +2.198590000E2,6.093052958E1 +2.201380000E2,6.446513941E1 +2.204220000E2,6.075454080E1 +2.206690000E2,6.712020778E1 +2.209300000E2,5.440050354E1 +2.212550000E2,5.627963451E1 +2.215550000E2,6.358778444E1 +2.217990000E2,5.793661873E1 +2.220730000E2,6.448679664E1 +2.223050000E2,5.844994198E1 +2.226510000E2,5.802583418E1 +2.229440000E2,5.848297014E1 +2.231840000E2,6.170695891E1 +2.234220000E2,6.201301769E1 +2.236630000E2,6.049179870E1 +2.239600000E2,6.316843106E1 +2.242020000E2,5.818837652E1 +2.245150000E2,6.411353278E1 +2.248330000E2,6.458398711E1 +2.250670000E2,6.303280227E1 +2.253240000E2,6.378696379E1 +2.255670000E2,6.157533943E1 +2.259260000E2,5.845901257E1 +2.261910000E2,5.623331182E1 +2.264460000E2,5.550822889E1 +2.267020000E2,5.907003722E1 +2.270220000E2,6.300043778E1 +2.273130000E2,5.934584116E1 +2.275640000E2,5.367094537E1 +2.278520000E2,6.260544714E1 +2.281140000E2,5.666507163E1 +2.283970000E2,6.099713971E1 +2.287020000E2,5.943082312E1 +2.289450000E2,6.095935321E1 +2.292950000E2,5.939706013E1 +2.296230000E2,5.612117806E1 +2.299220000E2,5.805831404E1 +2.301570000E2,5.496048372E1 +2.304070000E2,5.335836124E1 +2.306490000E2,5.043808989E1 +2.309270000E2,4.778025574E1 +2.311680000E2,4.613189565E1 +2.314100000E2,4.740314381E1 +2.316580000E2,5.230056147E1 +2.319150000E2,5.672989332E1 +2.321590000E2,6.081799709E1 +2.325030000E2,5.909736866E1 +2.327570000E2,5.528762811E1 +2.330520000E2,6.623131701E1 +2.333360000E2,6.376149752E1 +2.335730000E2,6.088376871E1 +2.338700000E2,6.235681388E1 +2.341160000E2,6.060610548E1 +2.343930000E2,5.779254532E1 +2.346370000E2,5.570043106E1 +2.349010000E2,6.172637016E1 +2.351520000E2,5.865545525E1 +2.354420000E2,6.250465685E1 +2.356850000E2,6.494272879E1 +2.359310000E2,6.075163542E1 +2.361840000E2,5.742858606E1 +2.364460000E2,5.756917813E1 +2.366990000E2,6.169927684E1 +2.370080000E2,5.540268710E1 +2.373040000E2,5.484088652E1 +2.376000000E2,5.732112773E1 +2.378800000E2,5.184194161E1 +2.381270000E2,5.604168635E1 +2.383910000E2,5.644051218E1 +2.387130000E2,6.049774032E1 +2.390290000E2,6.303013407E1 +2.392800000E2,6.115111046E1 +2.395770000E2,6.294174883E1 +2.398740000E2,6.716012591E1 +2.401880000E2,7.075117191E1 +2.404890000E2,6.435561631E1 +2.407550000E2,5.593172595E1 +2.410720000E2,5.781614361E1 +2.413350000E2,5.497792445E1 +2.416080000E2,5.569244646E1 +2.418870000E2,5.408109683E1 +2.421100000E2,5.687440525E1 +2.424230000E2,6.415333296E1 +2.427170000E2,6.528722740E1 +2.429900000E2,6.229384329E1 +2.432350000E2,5.452507698E1 +2.434960000E2,5.248331654E1 +2.437450000E2,5.069826347E1 +2.439880000E2,4.989889277E1 +2.442610000E2,5.196931346E1 +2.445130000E2,4.988417717E1 +2.448120000E2,5.950968466E1 +2.451200000E2,5.725324421E1 +2.454210000E2,5.902908729E1 +2.456980000E2,5.857784521E1 +2.459650000E2,5.154496059E1 +2.462670000E2,5.316738342E1 +2.465660000E2,5.681338179E1 +2.468580000E2,5.486468116E1 +2.471080000E2,5.378622946E1 +2.473840000E2,5.263910847E1 +2.477040000E2,5.102724000E1 +2.479590000E2,4.958128022E1 +2.482070000E2,5.621813465E1 +2.486190000E2,5.553111013E1 +2.489120000E2,5.711728514E1 +2.491630000E2,6.098223102E1 +2.494610000E2,5.812970142E1 +2.497290000E2,5.874411947E1 +2.500090000E2,6.058797235E1 +2.503160000E2,5.921850964E1 +2.506300000E2,5.825659244E1 +2.508940000E2,5.902074554E1 +2.512250000E2,5.857720223E1 +2.514860000E2,5.834259509E1 +2.517560000E2,5.664723408E1 +2.520110000E2,6.245873243E1 +2.522800000E2,6.018081628E1 +2.525490000E2,6.060905480E1 +2.527980000E2,6.098924059E1 +2.530310000E2,6.604497204E1 +2.532750000E2,5.762503683E1 +2.535750000E2,5.946675250E1 +2.538150000E2,5.696283688E1 +2.541120000E2,5.795434272E1 +2.543420000E2,5.641662406E1 +2.546470000E2,6.001503419E1 +2.549610000E2,5.913147779E1 +2.552050000E2,5.772050526E1 +2.554250000E2,5.986895040E1 +2.557400000E2,4.836792039E1 +2.560130000E2,4.818172752E1 +2.563450000E2,5.244597112E1 +2.566130000E2,5.174954560E1 +2.568650000E2,5.165225717E1 +2.571100000E2,4.865803315E1 +2.573530000E2,4.773689375E1 +2.576460000E2,5.375353685E1 +2.579030000E2,5.630041837E1 +2.582540000E2,5.390583403E1 +2.585030000E2,5.686416101E1 +2.588120000E2,5.880170204E1 +2.590630000E2,5.373023259E1 +2.593590000E2,6.009405077E1 +2.596120000E2,5.710673366E1 +2.598560000E2,5.891240789E1 +2.600990000E2,5.960890080E1 +2.603510000E2,6.728594423E1 +2.606060000E2,6.334340199E1 +2.609270000E2,6.082175509E1 +2.611830000E2,5.750083619E1 +2.615060000E2,5.667484133E1 +2.618070000E2,6.152760439E1 +2.620430000E2,5.697586540E1 +2.623440000E2,5.674189037E1 +2.625730000E2,5.539036876E1 +2.628210000E2,4.901745514E1 +2.631270000E2,5.264848299E1 +2.634230000E2,5.038277380E1 +2.636750000E2,5.149234245E1 +2.639170000E2,4.604207892E1 +2.641630000E2,5.735184247E1 +2.644630000E2,5.659523444E1 +2.648080000E2,5.697978691E1 +2.650640000E2,5.691301726E1 +2.653540000E2,5.696584583E1 +2.656480000E2,5.138210199E1 +2.659030000E2,5.345758564E1 +2.661640000E2,5.363588256E1 +2.664240000E2,5.471656895E1 +2.666720000E2,5.140760448E1 +2.669400000E2,5.329005020E1 +2.671940000E2,5.422388323E1 +2.674460000E2,5.133919880E1 +2.677140000E2,5.690801972E1 +2.681270000E2,5.964609863E1 +2.684030000E2,6.167901240E1 +2.686970000E2,5.297205648E1 +2.689350000E2,5.530010894E1 +2.692310000E2,5.450325538E1 +2.694700000E2,5.391690578E1 +2.697660000E2,5.420666075E1 +2.700010000E2,4.962510480E1 +2.702390000E2,5.010058679E1 +2.705460000E2,5.345147952E1 +2.708590000E2,5.574757195E1 +2.711770000E2,5.571208034E1 +2.714720000E2,5.288998421E1 +2.717170000E2,5.214438195E1 +2.720190000E2,5.232798978E1 +2.723080000E2,6.045263056E1 +2.725500000E2,5.870512300E1 +2.727930000E2,5.577911819E1 +2.730760000E2,5.501493048E1 +2.733800000E2,5.433475343E1 +2.736720000E2,5.293457700E1 +2.739070000E2,5.486483547E1 +2.741780000E2,6.008208952E1 +2.745050000E2,5.845984546E1 +2.748040000E2,5.900764997E1 +2.751070000E2,5.760203457E1 +2.754240000E2,5.795024632E1 +2.757280000E2,6.182748257E1 +2.760340000E2,5.683205968E1 +2.763350000E2,5.821402367E1 +2.766080000E2,5.520672517E1 +2.768980000E2,5.645892504E1 +2.772030000E2,5.463906896E1 +2.775200000E2,5.412722413E1 +2.777910000E2,5.268636730E1 +2.780870000E2,5.566734184E1 +2.783350000E2,5.745256931E1 +2.785810000E2,5.645167582E1 +2.788270000E2,5.925831320E1 +2.790840000E2,5.591320738E1 +2.793690000E2,5.632637646E1 +2.796200000E2,6.252281740E1 +2.799120000E2,5.547643277E1 +2.801570000E2,6.021611275E1 +2.804580000E2,5.732676882E1 +2.808110000E2,5.909573770E1 +2.810780000E2,6.005240162E1 +2.813300000E2,5.965022185E1 +2.815820000E2,6.135840817E1 +2.818790000E2,5.970629096E1 +2.821590000E2,5.879025140E1 +2.824010000E2,5.747324456E1 +2.826520000E2,5.726379384E1 +2.828950000E2,5.871306541E1 +2.831920000E2,6.188032415E1 +2.834710000E2,6.066582287E1 +2.837110000E2,5.950933244E1 +2.840350000E2,5.901018860E1 +2.843000000E2,5.761182729E1 +2.846050000E2,5.446909438E1 +2.848570000E2,5.349219985E1 +2.851700000E2,5.015518748E1 +2.854330000E2,5.374610595E1 +2.857270000E2,5.877223624E1 +2.860310000E2,5.644512377E1 +2.863080000E2,5.711327205E1 +2.865540000E2,5.655239592E1 +2.867930000E2,5.833716670E1 +2.871150000E2,5.417781453E1 +2.874030000E2,5.332227783E1 +2.876540000E2,5.146836736E1 +2.879540000E2,5.452228720E1 +2.881970000E2,5.025406823E1 +2.884910000E2,5.490648375E1 +2.887280000E2,5.506242221E1 +2.890210000E2,5.400927835E1 +2.892600000E2,5.781126179E1 +2.895430000E2,6.384283902E1 +2.898470000E2,6.340395874E1 +2.901430000E2,5.555395770E1 +2.904560000E2,5.514224078E1 +2.907530000E2,5.346566906E1 +2.910000000E2,5.948406902E1 +2.912590000E2,6.362292628E1 +2.915300000E2,6.175065463E1 +2.918240000E2,6.129817533E1 +2.920790000E2,6.317618325E1 +2.923350000E2,6.137933812E1 +2.926010000E2,5.620086793E1 +2.928740000E2,5.715913846E1 +2.931780000E2,7.028942499E1 +2.934620000E2,6.774357618E1 +2.937770000E2,6.989950413E1 +2.940270000E2,6.631119439E1 +2.943030000E2,6.956920703E1 +2.945570000E2,6.352936554E1 +2.948100000E2,6.981123112E1 +2.951150000E2,5.607171784E1 +2.953950000E2,5.394017247E1 +2.956980000E2,7.110851253E1 +2.959460000E2,6.978848906E1 +2.961900000E2,5.446752823E1 +2.965090000E2,6.309281755E1 +2.968110000E2,6.647752141E1 +2.971300000E2,6.773248230E1 +2.974240000E2,6.289421429E1 +2.977060000E2,5.998905240E1 +2.979500000E2,6.016152671E1 +2.981940000E2,5.851705490E1 +2.984880000E2,6.506323043E1 +2.987430000E2,5.702053645E1 +2.990110000E2,4.890963733E1 +2.993040000E2,5.105737182E1 +2.995650000E2,4.950865545E1 +2.998150000E2,4.713536225E1 +3.000860000E2,6.170154569E1 +3.003780000E2,5.697995513E1 +3.006750000E2,6.496205179E1 +3.009180000E2,5.585602045E1 +3.012120000E2,5.317421587E1 +3.015130000E2,5.532213468E1 +3.017840000E2,5.371543715E1 +3.020520000E2,6.741141038E1 +3.023220000E2,6.638671809E1 +3.025730000E2,5.833940482E1 +3.028700000E2,6.272205104E1 +3.031230000E2,6.150676490E1 +3.034050000E2,6.571826996E1 +3.036710000E2,6.387001854E1 +3.039460000E2,5.704179120E1 +3.042380000E2,5.452420344E1 +3.044730000E2,6.911436343E1 +3.047670000E2,6.747337761E1 +3.050070000E2,6.642457947E1 +3.053010000E2,6.704052830E1 +3.055360000E2,6.335116163E1 +3.058350000E2,6.452879154E1 +3.061310000E2,6.588892290E1 +3.064460000E2,6.065604325E1 +3.066970000E2,5.884139521E1 +3.069890000E2,6.115548360E1 +3.072650000E2,5.474220631E1 +3.075290000E2,5.525228633E1 +3.077890000E2,5.546520153E1 +3.080280000E2,5.799541194E1 +3.083270000E2,5.467819740E1 +3.086250000E2,5.227747322E1 +3.089260000E2,5.802220937E1 +3.091970000E2,5.383690373E1 +3.095040000E2,5.794687305E1 +3.097810000E2,5.426386053E1 +3.100000000E2,5.745164866E1 +3.103300000E2,5.475501144E1 +3.106240000E2,5.154802151E1 +3.108750000E2,5.434380726E1 +3.111540000E2,5.533246388E1 +3.114150000E2,5.554218476E1 +3.116740000E2,5.375334275E1 +3.119200000E2,5.727216331E1 +3.121680000E2,5.235396651E1 +3.124720000E2,6.207307801E1 +3.127180000E2,6.488896117E1 +3.130530000E2,6.168970511E1 +3.133080000E2,6.010687101E1 +3.135950000E2,6.305386662E1 +3.138880000E2,6.214030252E1 +3.141410000E2,5.907513997E1 +3.143960000E2,6.064308138E1 +3.146480000E2,6.195321339E1 +3.148870000E2,6.088765310E1 +3.151830000E2,5.906360624E1 +3.154280000E2,5.864981040E1 +3.157360000E2,5.824424792E1 +3.159750000E2,5.826399021E1 +3.163740000E2,6.051726612E1 +3.166320000E2,6.011967909E1 +3.168940000E2,5.577110603E1 +3.172010000E2,5.372586587E1 +3.174460000E2,5.537091967E1 +3.176890000E2,5.504912063E1 +3.179320000E2,5.264203521E1 +3.182150000E2,5.344854544E1 +3.184600000E2,5.656777951E1 +3.187200000E2,5.398435402E1 +3.189820000E2,5.410695962E1 +3.192460000E2,5.344168860E1 +3.195780000E2,5.697626360E1 +3.198350000E2,6.073105615E1 +3.200880000E2,6.621432780E1 +3.203460000E2,6.597785722E1 +3.205980000E2,5.907542432E1 +3.208920000E2,5.702769809E1 +3.211760000E2,6.207459825E1 +3.214520000E2,5.921715282E1 +3.217010000E2,5.501368146E1 +3.220030000E2,5.927746858E1 +3.223090000E2,5.878714279E1 +3.226530000E2,6.209253703E1 +3.229180000E2,5.801419316E1 +3.231660000E2,6.150680788E1 +3.234110000E2,5.950436139E1 +3.236660000E2,5.694006868E1 +3.239890000E2,5.964691948E1 +3.242420000E2,6.322261269E1 +3.245070000E2,5.967413832E1 +3.247540000E2,5.743115651E1 +3.250010000E2,5.693057833E1 +3.252760000E2,5.076009335E1 +3.255600000E2,5.432440321E1 +3.258270000E2,5.728583073E1 +3.262160000E2,6.158050311E1 +3.264570000E2,5.788548067E1 +3.267330000E2,5.661485397E1 +3.270280000E2,5.698735139E1 +3.272870000E2,5.428158234E1 +3.275550000E2,5.401192370E1 +3.278320000E2,5.894424302E1 +3.281050000E2,5.279140275E1 +3.283850000E2,5.366788524E1 +3.286760000E2,5.569462346E1 +3.289750000E2,5.484501656E1 +3.292730000E2,5.654335493E1 +3.295550000E2,5.483429560E1 +3.298560000E2,5.516099131E1 +3.301720000E2,5.150081287E1 +3.304560000E2,5.126263973E1 +3.307930000E2,4.943715566E1 +3.310330000E2,5.297477083E1 +3.312800000E2,4.994759883E1 +3.316030000E2,5.283028939E1 +3.318860000E2,5.150402936E1 +3.321790000E2,5.777668868E1 +3.325470000E2,5.446937149E1 +3.328030000E2,5.754474494E1 +3.330410000E2,5.437750931E1 +3.333210000E2,5.378201308E1 +3.335760000E2,5.486825362E1 +3.338240000E2,5.338123539E1 +3.340700000E2,5.704649160E1 +3.343740000E2,5.576563429E1 +3.346640000E2,5.503590574E1 +3.349650000E2,5.539431503E1 +3.352080000E2,5.782097549E1 +3.355080000E2,5.260852375E1 +3.358690000E2,6.012616228E1 +3.361400000E2,5.534922411E1 +3.363810000E2,5.436765301E1 +3.366230000E2,5.007736554E1 +3.368850000E2,5.304270830E1 +3.371340000E2,5.106682022E1 +3.373960000E2,5.491262243E1 +3.376890000E2,5.891119644E1 +3.379320000E2,5.554676164E1 +3.382420000E2,5.491809401E1 +3.385700000E2,6.003743295E1 +3.389490000E2,5.964265847E1 +3.392140000E2,6.009419780E1 +3.394780000E2,5.950800538E1 +3.397810000E2,5.514081916E1 +3.400260000E2,5.654810222E1 +3.403230000E2,5.919098275E1 +3.405600000E2,5.937137097E1 +3.408650000E2,5.885711760E1 +3.411560000E2,6.122434193E1 +3.414060000E2,6.101494213E1 +3.416650000E2,5.685059098E1 +3.419710000E2,4.988163583E1 +3.423360000E2,5.097871962E1 +3.426300000E2,6.097968551E1 +3.429260000E2,5.246223058E1 +3.431760000E2,5.140448000E1 +3.434570000E2,5.162147831E1 +3.436910000E2,5.437509469E1 +3.439650000E2,5.588289675E1 +3.442010000E2,5.342482218E1 +3.444930000E2,5.621155564E1 +3.447310000E2,5.753713233E1 +3.450340000E2,5.873821374E1 +3.453240000E2,5.674648484E1 +3.455770000E2,5.843857274E1 +3.458770000E2,6.170678128E1 +3.461770000E2,5.848319050E1 +3.464240000E2,5.996271814E1 +3.467290000E2,5.583139448E1 +3.470000000E2,5.558324990E1 +3.472360000E2,5.638821787E1 +3.474880000E2,6.015129432E1 +3.477550000E2,6.074195357E1 +3.480530000E2,6.258101891E1 +3.483260000E2,6.280209300E1 +3.486840000E2,5.935598721E1 +3.489370000E2,6.423635683E1 +3.492060000E2,7.026891453E1 +3.495130000E2,5.477771858E1 +3.498240000E2,6.143080763E1 +3.500700000E2,6.077206860E1 +3.503130000E2,5.816670512E1 +3.506030000E2,6.220374728E1 +3.509040000E2,6.435510927E1 +3.511560000E2,6.387906049E1 +3.514240000E2,6.324188625E1 +3.517710000E2,6.217871174E1 +3.520510000E2,6.349767138E1 +3.523000000E2,5.947763114E1 +3.525840000E2,5.623947938E1 +3.528810000E2,5.940245648E1 +3.531830000E2,5.323006485E1 +3.534790000E2,4.756673680E1 +3.537830000E2,5.761743216E1 +3.540870000E2,5.701856444E1 +3.543720000E2,5.507707077E1 +3.546320000E2,5.561457107E1 +3.549330000E2,6.036785424E1 +3.552860000E2,5.818319920E1 +3.555390000E2,5.636477080E1 +3.557840000E2,5.686236286E1 +3.560330000E2,6.137502104E1 +3.563290000E2,6.039421004E1 +3.565710000E2,5.873926214E1 +3.568160000E2,5.984737812E1 +3.570890000E2,5.898549785E1 +3.573200000E2,5.804358229E1 +3.576080000E2,5.178825198E1 +3.578380000E2,5.333798630E1 +3.581470000E2,5.663121054E1 +3.584860000E2,5.705169894E1 +3.587470000E2,5.488627438E1 +3.590020000E2,5.493171173E1 +3.592590000E2,5.280801534E1 +3.595110000E2,5.919356657E1 +3.597710000E2,6.061921525E1 +3.600770000E2,5.781838960E1 +3.603810000E2,5.824405535E1 +3.606410000E2,5.734273072E1 +3.608930000E2,5.860073318E1 +3.611440000E2,5.158577335E1 +3.614110000E2,5.569804167E1 +3.617550000E2,5.732029627E1 +3.620530000E2,5.599725951E1 +3.623260000E2,5.427140428E1 +3.625700000E2,5.439119305E1 +3.628680000E2,5.768088704E1 +3.631160000E2,5.322266305E1 +3.634170000E2,5.611257515E1 +3.637150000E2,5.466283243E1 +3.639540000E2,5.648497192E1 +3.642520000E2,5.982456496E1 +3.644910000E2,5.683499776E1 +3.648080000E2,5.424977228E1 +3.650550000E2,5.261749952E1 +3.653010000E2,5.976464589E1 +3.655400000E2,5.630627545E1 +3.658370000E2,5.855663855E1 +3.660660000E2,5.839517218E1 +3.663050000E2,5.701336937E1 +3.666100000E2,6.057417753E1 +3.668530000E2,5.660058929E1 +3.671060000E2,5.360906173E1 +3.673270000E2,5.766761713E1 +3.676020000E2,5.473947199E1 +3.679270000E2,5.730791892E1 +3.681990000E2,5.368134624E1 +3.685210000E2,5.122725302E1 +3.688180000E2,5.413949330E1 +3.690720000E2,5.953240184E1 +3.693650000E2,5.834363401E1 +3.696110000E2,4.952962201E1 +3.698620000E2,6.082605721E1 +3.701240000E2,5.541205242E1 +3.703840000E2,5.595936781E1 +3.706570000E2,5.751180267E1 +3.709050000E2,5.510413826E1 +3.712530000E2,5.236304209E1 +3.715330000E2,5.429686706E1 +3.717680000E2,5.365135821E1 +3.720680000E2,5.442146139E1 +3.723070000E2,5.193301537E1 +3.726070000E2,5.573089397E1 +3.728540000E2,5.084704353E1 +3.731070000E2,5.244752708E1 +3.734250000E2,5.501438711E1 +3.737160000E2,5.701937821E1 +3.739830000E2,5.913008265E1 +3.743030000E2,6.329763996E1 +3.745490000E2,5.828010903E1 +3.748110000E2,5.514928454E1 +3.750560000E2,5.535724603E1 +3.753250000E2,6.062318511E1 +3.756820000E2,5.853801057E1 +3.759720000E2,6.218740595E1 +3.762560000E2,6.130322227E1 +3.764780000E2,5.705598438E1 +3.767430000E2,5.675025411E1 +3.770350000E2,5.562309411E1 +3.773330000E2,6.171478403E1 +3.776660000E2,5.752069737E1 +3.779640000E2,5.869913239E1 +3.782130000E2,5.802158707E1 +3.785030000E2,5.920699755E1 +3.787580000E2,5.984700757E1 +3.790120000E2,5.874214142E1 +3.792820000E2,5.792329599E1 +3.795460000E2,6.240429581E1 +3.798520000E2,5.924961400E1 +3.800960000E2,5.655548581E1 +3.803510000E2,5.997047167E1 +3.806590000E2,5.894207932E1 +3.810310000E2,5.556916558E1 +3.813250000E2,5.709965860E1 +3.815810000E2,5.724657649E1 +3.818690000E2,5.634885250E1 +3.821660000E2,5.381597934E1 +3.824070000E2,5.409431797E1 +3.827020000E2,5.558304395E1 +3.829400000E2,5.836087965E1 +3.832380000E2,5.621848827E1 +3.834740000E2,5.756105430E1 +3.837670000E2,5.972981317E1 +3.840620000E2,6.110722903E1 +3.842970000E2,6.011338906E1 +3.846120000E2,6.632548976E1 +3.849300000E2,5.632542095E1 +3.852340000E2,5.660090160E1 +3.854760000E2,5.637042997E1 +3.857700000E2,6.483820819E1 +3.860160000E2,6.294386681E1 +3.862760000E2,6.248693097E1 +3.865740000E2,5.966646580E1 +3.868130000E2,5.884596060E1 +3.871230000E2,6.069045984E1 +3.874660000E2,5.535227762E1 +3.877260000E2,5.453589064E1 +3.879920000E2,5.803286513E1 +3.882920000E2,6.338575111E1 +3.885370000E2,6.297665471E1 +3.888380000E2,6.078963895E1 +3.890870000E2,6.078711186E1 +3.893350000E2,5.918580133E1 +3.896040000E2,5.645003340E1 +3.899070000E2,5.868887980E1 +3.901560000E2,5.816727924E1 +3.904840000E2,5.908711574E1 +3.907830000E2,5.165109059E1 +3.910410000E2,5.747977046E1 +3.913230000E2,5.600926578E1 +3.916170000E2,5.743239537E1 +3.918580000E2,5.999528635E1 +3.921650000E2,5.924448814E1 +3.924670000E2,6.347749271E1 +3.927590000E2,6.285842009E1 +3.929960000E2,6.439104552E1 +3.933010000E2,6.092208558E1 +3.935450000E2,5.889760176E1 +3.939100000E2,5.798312040E1 +3.941770000E2,5.909426563E1 +3.944250000E2,5.971090911E1 +3.946810000E2,5.379436409E1 +3.949270000E2,5.134339741E1 +3.951700000E2,5.739586279E1 +3.954270000E2,5.255911571E1 +3.956850000E2,5.149310319E1 +3.959500000E2,5.723685944E1 +3.962270000E2,5.622087783E1 +3.964720000E2,6.119098643E1 +3.967310000E2,6.249797436E1 +3.970320000E2,5.838309249E1 +3.973440000E2,5.720898847E1 +3.976100000E2,5.357982700E1 +3.978600000E2,5.091452983E1 +3.981070000E2,4.781274510E1 +3.983520000E2,4.684320786E1 +3.986530000E2,4.867937405E1 +3.988970000E2,4.947454895E1 +3.991740000E2,4.941937240E1 +3.994180000E2,5.206925818E1 +3.997200000E2,5.099596962E1 +3.999720000E2,5.059119317E1 +4.002350000E2,4.980275756E1 +4.004940000E2,5.514017077E1 +4.008060000E2,5.354499430E1 +4.011150000E2,5.377825353E1 +4.013980000E2,5.657928040E1 +4.016460000E2,6.437756844E1 +4.019070000E2,6.072529486E1 +4.021970000E2,5.876291143E1 +4.024430000E2,6.118567430E1 +4.027460000E2,5.925186578E1 +4.030590000E2,5.727531678E1 +4.033610000E2,6.211123432E1 +4.036680000E2,6.041950332E1 +4.039230000E2,6.161200416E1 +4.041780000E2,6.047480336E1 +4.044620000E2,5.905442986E1 +4.047060000E2,5.729915709E1 +4.049630000E2,6.020933408E1 +4.052500000E2,5.845152603E1 +4.055600000E2,5.814304967E1 +4.058210000E2,5.866194002E1 +4.060640000E2,5.736420578E1 +4.063180000E2,6.107395805E1 +4.065790000E2,5.985269852E1 +4.069480000E2,5.745859610E1 +4.072050000E2,5.693680110E1 +4.074960000E2,6.165201185E1 +4.077470000E2,6.131132241E1 +4.079970000E2,5.824414723E1 +4.083050000E2,5.958451387E1 +4.085600000E2,5.739792126E1 +4.088150000E2,5.573389816E1 +4.090850000E2,5.530698039E1 +4.093810000E2,5.634371531E1 +4.096660000E2,5.880658089E1 +4.099920000E2,5.804298004E1 +4.102870000E2,5.688352401E1 +4.106310000E2,5.573115839E1 +4.109280000E2,5.368053116E1 +4.112180000E2,5.474384188E1 +4.114650000E2,5.380195893E1 +4.117660000E2,5.718608674E1 +4.120140000E2,5.703743686E1 +4.122910000E2,5.985228158E1 +4.125620000E2,6.278694860E1 +4.128210000E2,5.839550633E1 +4.130600000E2,6.029373556E1 +4.133710000E2,5.711050636E1 +4.136150000E2,5.200468588E1 +4.138820000E2,5.769230508E1 +4.141370000E2,5.333759168E1 +4.143860000E2,5.632377961E1 +4.146570000E2,5.647744894E1 +4.149040000E2,5.667945226E1 +4.151840000E2,5.669404445E1 +4.154420000E2,6.072374556E1 +4.157420000E2,5.606444578E1 +4.159850000E2,5.623596320E1 +4.162830000E2,5.264542492E1 +4.165340000E2,5.359803767E1 +4.168600000E2,5.691340897E1 +4.171060000E2,5.636326143E1 +4.173490000E2,6.276141082E1 +4.176080000E2,6.197471417E1 +4.178580000E2,5.777170976E1 +4.181050000E2,5.407671770E1 +4.183760000E2,4.795453020E1 +4.186580000E2,5.871005652E1 +4.188870000E2,6.069158080E1 +4.191320000E2,6.112379328E1 +4.193750000E2,5.584116633E1 +4.196280000E2,6.302854070E1 +4.199610000E2,6.640457067E1 +4.202240000E2,6.337314603E1 +4.205160000E2,5.904470105E1 +4.208200000E2,5.799078909E1 +4.210810000E2,5.975635789E1 +4.213260000E2,6.334088587E1 +4.215900000E2,5.849627934E1 +4.218550000E2,5.894070219E1 +4.221030000E2,5.961371776E1 +4.223550000E2,5.281830949E1 +4.225970000E2,4.892580508E1 +4.229130000E2,5.950646935E1 +4.232610000E2,6.303011111E1 +4.235630000E2,6.030515180E1 +4.238060000E2,5.832387195E1 +4.240560000E2,6.126571743E1 +4.243280000E2,5.961805347E1 +4.245710000E2,5.916464366E1 +4.248300000E2,6.404431780E1 +4.251020000E2,6.161392817E1 +4.253630000E2,6.303875005E1 +4.256110000E2,6.294329578E1 +4.258560000E2,6.495739223E1 +4.261620000E2,6.352748415E1 +4.265140000E2,6.360144813E1 +4.267650000E2,6.320185268E1 +4.270250000E2,6.598206760E1 +4.272910000E2,5.736158392E1 +4.275300000E2,5.632655800E1 +4.277760000E2,5.626186588E1 +4.280650000E2,5.992298879E1 +4.283460000E2,5.976814640E1 +4.285960000E2,5.617047451E1 +4.288540000E2,5.410240194E1 +4.291290000E2,5.524345530E1 +4.293550000E2,5.025485629E1 +4.297050000E2,5.094849624E1 +4.299600000E2,5.349595208E1 +4.302230000E2,5.668766668E1 +4.304690000E2,5.470073040E1 +4.307330000E2,5.808421323E1 +4.310240000E2,5.815977776E1 +4.312740000E2,5.751031291E1 +4.315190000E2,6.045600028E1 +4.318300000E2,5.967896339E1 +4.320980000E2,5.746835753E1 +4.324020000E2,5.874054152E1 +4.327010000E2,5.770096959E1 +4.330460000E2,5.851412717E1 +4.333220000E2,5.970473393E1 +4.335930000E2,6.024030776E1 +4.338530000E2,5.564089573E1 +4.341340000E2,5.328000065E1 +4.343790000E2,5.522789934E1 +4.346930000E2,5.271905966E1 +4.349910000E2,5.685384424E1 +4.352400000E2,5.751176106E1 +4.355350000E2,5.654290580E1 +4.357760000E2,5.976937629E1 +4.360780000E2,5.445311615E1 +4.363520000E2,5.460006243E1 +4.366010000E2,5.402958946E1 +4.369120000E2,5.611325616E1 +4.371660000E2,5.675575065E1 +4.374120000E2,5.605818704E1 +4.377070000E2,5.614720111E1 +4.379470000E2,5.596280974E1 +4.382450000E2,5.764305460E1 +4.384820000E2,6.015340826E1 +4.387240000E2,6.073594369E1 +4.390310000E2,5.846982437E1 +4.393110000E2,5.837342754E1 +4.396160000E2,5.758988397E1 +4.398810000E2,5.375393273E1 +4.401700000E2,5.590416510E1 +4.404180000E2,5.649267014E1 +4.406570000E2,5.809884175E1 +4.409200000E2,5.934788425E1 +4.411750000E2,5.883690392E1 +4.414270000E2,5.465512306E1 +4.416780000E2,5.456039720E1 +4.419260000E2,6.053551690E1 +4.422020000E2,5.446896121E1 +4.425270000E2,5.304300238E1 +4.428480000E2,5.413537656E1 +4.431230000E2,5.590535088E1 +4.433740000E2,5.516889265E1 +4.436180000E2,5.375803139E1 +4.439250000E2,5.440731706E1 +4.441670000E2,5.378894171E1 +4.444170000E2,5.676009311E1 +4.447160000E2,5.433224316E1 +4.449620000E2,5.431777666E1 +4.452100000E2,5.220353562E1 +4.454560000E2,5.525232641E1 +4.456950000E2,5.348687858E1 +4.459900000E2,5.571408478E1 +4.462320000E2,5.590054486E1 +4.464840000E2,5.627503595E1 +4.467390000E2,5.824548232E1 +4.469910000E2,5.637049423E1 +4.472460000E2,5.754096885E1 +4.474930000E2,5.335865942E1 +4.477890000E2,5.765888938E1 +4.480780000E2,6.102087464E1 +4.483520000E2,6.006145593E1 +4.486510000E2,5.685958774E1 +4.489610000E2,5.748149351E1 +4.492370000E2,5.709623916E1 +4.495040000E2,5.821496279E1 +4.497570000E2,5.970222946E1 +4.500030000E2,5.750976802E1 +4.502380000E2,5.796549321E1 +4.505370000E2,5.665777454E1 +4.508330000E2,5.605038109E1 +4.510750000E2,5.504306522E1 +4.513230000E2,5.112487870E1 +4.515900000E2,5.559150914E1 +4.518300000E2,5.656933458E1 +4.520810000E2,6.082180135E1 +4.524470000E2,5.774965281E1 +4.527120000E2,5.847728207E1 +4.529730000E2,5.711434047E1 +4.532810000E2,5.503285278E1 +4.535670000E2,5.614330822E1 +4.538610000E2,6.211492489E1 +4.541040000E2,6.003078695E1 +4.543760000E2,5.766611466E1 +4.546280000E2,5.912518267E1 +4.549300000E2,5.969489895E1 +4.551760000E2,5.509558621E1 +4.554320000E2,5.963291683E1 +4.556950000E2,6.194656842E1 +4.559980000E2,6.032793642E1 +4.562390000E2,5.874022110E1 +4.565060000E2,6.016749735E1 +4.567480000E2,5.985596964E1 +4.570070000E2,5.588678859E1 +4.572660000E2,5.541792762E1 +4.575660000E2,4.969164404E1 +4.578050000E2,4.976271573E1 +4.581060000E2,5.634137812E1 +4.583500000E2,5.321783082E1 +4.586280000E2,5.816393976E1 +4.588870000E2,5.817726916E1 +4.591860000E2,5.398220140E1 +4.594690000E2,5.572842498E1 +4.597270000E2,5.759574297E1 +4.600290000E2,5.492384706E1 +4.602790000E2,5.570826682E1 +4.605780000E2,5.619496661E1 +4.608690000E2,5.993990435E1 +4.611730000E2,6.185390750E1 +4.614300000E2,6.125031183E1 +4.617390000E2,6.047450440E1 +4.621070000E2,5.913093195E1 +4.623500000E2,6.032535990E1 +4.626490000E2,5.803726699E1 +4.628910000E2,5.968748294E1 +4.631850000E2,5.792594347E1 +4.634330000E2,5.623910190E1 +4.636850000E2,6.026318401E1 +4.639240000E2,6.002593060E1 +4.641990000E2,5.694813724E1 +4.644200000E2,5.456998819E1 +4.646660000E2,5.683591124E1 +4.649070000E2,5.893829862E1 +4.652630000E2,5.637983039E1 +4.655160000E2,5.571226470E1 +4.657720000E2,5.582065666E1 +4.660510000E2,5.436378979E1 +4.663550000E2,5.697364508E1 +4.666350000E2,5.716664070E1 +4.668800000E2,6.098104772E1 +4.671260000E2,5.932872997E1 +4.673960000E2,5.573089336E1 +4.676430000E2,5.791664461E1 +4.678890000E2,5.589855895E1 +4.681490000E2,6.359324433E1 +4.685010000E2,5.902079393E1 +4.687870000E2,6.085500324E1 +4.690180000E2,6.401116813E1 +4.693190000E2,6.157634911E1 +4.695830000E2,6.068297160E1 +4.698370000E2,5.867738322E1 +4.701080000E2,6.069776659E1 +4.703530000E2,5.904983802E1 +4.706060000E2,5.642725313E1 +4.708480000E2,5.600286970E1 +4.711080000E2,5.678564623E1 +4.714020000E2,5.139543439E1 +4.717220000E2,5.924511995E1 +4.720300000E2,5.309180697E1 +4.722790000E2,5.295961103E1 +4.725820000E2,5.448425692E1 +4.728350000E2,5.346047841E1 +4.731210000E2,5.563518239E1 +4.733630000E2,5.630991562E1 +4.736070000E2,5.519344442E1 +4.738520000E2,5.696356709E1 +4.741150000E2,5.721588368E1 +4.743810000E2,5.556082681E1 +4.746430000E2,5.453201409E1 +4.749610000E2,5.621559396E1 +4.752460000E2,6.170975330E1 +4.755640000E2,6.352753975E1 +4.758660000E2,5.818774343E1 +4.761780000E2,6.177058435E1 +4.764630000E2,5.829511769E1 +4.766910000E2,5.658732029E1 +4.769520000E2,6.006113158E1 +4.772530000E2,6.022385702E1 +4.775200000E2,5.965858240E1 +4.778410000E2,5.970326758E1 +4.780960000E2,5.911597661E1 +4.783440000E2,5.656338446E1 +4.786020000E2,5.723922467E1 +4.788680000E2,5.700163516E1 +4.791490000E2,6.083416080E1 +4.794510000E2,5.899425763E1 +4.797630000E2,5.820674449E1 +4.800620000E2,5.648898879E1 +4.803380000E2,5.465743937E1 +4.806090000E2,5.006847009E1 +4.809050000E2,5.870050130E1 +4.811580000E2,5.878066343E1 +4.814060000E2,5.929414686E1 +4.817070000E2,5.758425183E1 +4.819760000E2,5.151398214E1 +4.822410000E2,5.772956896E1 +4.824880000E2,5.913153701E1 +4.827710000E2,5.814746383E1 +4.830140000E2,6.018356701E1 +4.832870000E2,5.985078792E1 +4.835070000E2,6.081307149E1 +4.837500000E2,5.810932132E1 +4.840440000E2,5.700769218E1 +4.842880000E2,5.815119989E1 +4.845920000E2,5.595850943E1 +4.849330000E2,5.891167795E1 +4.851960000E2,5.413833723E1 +4.854760000E2,6.184122004E1 +4.857700000E2,6.074653742E1 +4.860130000E2,6.033024099E1 +4.862530000E2,5.218562994E1 +4.865560000E2,5.902882093E1 +4.868150000E2,6.397338635E1 +4.870790000E2,6.543155406E1 +4.873440000E2,6.181389827E1 +4.876070000E2,6.381240883E1 +4.878770000E2,6.121521197E1 +4.882210000E2,5.780293585E1 +4.884640000E2,5.941826112E1 +4.887100000E2,6.118399944E1 +4.889830000E2,6.000089150E1 +4.892940000E2,5.873163787E1 +4.895350000E2,5.943116280E1 +4.897770000E2,5.867927357E1 +4.900230000E2,6.190584219E1 +4.903270000E2,6.313044892E1 +4.905550000E2,6.096660510E1 +4.907970000E2,5.773464228E1 +4.911090000E2,5.720144266E1 +4.914750000E2,5.797465536E1 +4.917410000E2,6.063197812E1 +4.920040000E2,5.799562897E1 +4.922950000E2,5.391853563E1 +4.925940000E2,6.053973121E1 +4.928320000E2,5.781822977E1 +4.931250000E2,6.541242849E1 +4.933660000E2,6.151252976E1 +4.936620000E2,5.962569242E1 +4.939140000E2,6.114162989E1 +4.941750000E2,6.074296596E1 +4.944160000E2,5.738425867E1 +4.947510000E2,6.084173002E1 +4.950140000E2,5.911448476E1 +4.953100000E2,6.076832164E1 +4.955530000E2,6.357047625E1 +4.958480000E2,6.344590866E1 +4.960850000E2,6.154350148E1 +4.963870000E2,5.815666478E1 +4.966770000E2,5.862350251E1 +4.969720000E2,5.162851816E1 +4.972640000E2,5.887916548E1 +4.975020000E2,6.130693279E1 +4.977480000E2,6.164914583E1 +4.980300000E2,5.689153252E1 +4.983240000E2,6.054571109E1 +4.985610000E2,5.779234792E1 +4.987980000E2,6.281334084E1 +4.991290000E2,6.074883772E1 +4.994230000E2,6.344972933E1 +4.996620000E2,6.040546490E1 +4.999570000E2,6.143019571E1 +5.002020000E2,6.117826214E1 +5.004980000E2,6.217883653E1 +5.007380000E2,6.294102819E1 +5.010930000E2,6.516475449E1 +5.013550000E2,6.119184016E1 +5.016670000E2,6.096554209E1 +5.019390000E2,6.197647057E1 +5.022530000E2,6.186754720E1 +5.025630000E2,5.954982776E1 +5.028510000E2,6.115486405E1 +5.031440000E2,6.348254173E1 +5.033820000E2,5.960570527E1 +5.036780000E2,5.977682583E1 +5.039180000E2,5.709696054E1 +5.042580000E2,6.265263203E1 +5.045140000E2,6.166583393E1 +5.047590000E2,6.184451596E1 +5.050170000E2,6.196658471E1 +5.053150000E2,6.014630927E1 +5.055610000E2,6.055201466E1 +5.058690000E2,6.189129858E1 +5.062120000E2,6.557808579E1 +5.064770000E2,6.080176744E1 +5.067370000E2,6.164107472E1 +5.069870000E2,6.497302078E1 +5.072490000E2,6.320126990E1 +5.076210000E2,6.073801439E1 +5.078780000E2,5.612097300E1 +5.081420000E2,5.978501024E1 +5.084360000E2,6.061444996E1 +5.086860000E2,6.272142993E1 +5.089270000E2,6.250458760E1 +5.092250000E2,5.860749180E1 +5.094720000E2,6.368373725E1 +5.097760000E2,6.005985592E1 +5.100780000E2,5.959557057E1 +5.103410000E2,6.085764000E1 +5.106360000E2,6.210563273E1 +5.109960000E2,6.125336704E1 +5.112590000E2,5.627814405E1 +5.115470000E2,6.253958528E1 +5.118480000E2,6.261683940E1 +5.120990000E2,5.782347554E1 +5.123560000E2,6.181201679E1 +5.126370000E2,6.425542150E1 +5.129400000E2,6.148973489E1 +5.132300000E2,6.230215374E1 +5.134720000E2,6.332855968E1 +5.137620000E2,5.875203916E1 +5.140950000E2,6.043073123E1 +5.143340000E2,5.829778385E1 +5.146280000E2,6.530539120E1 +5.148660000E2,5.725439078E1 +5.151580000E2,6.255661351E1 +5.153960000E2,6.412193683E1 +5.156410000E2,6.315775814E1 +5.158840000E2,6.025521775E1 +5.161460000E2,5.892698587E1 +5.164080000E2,5.956507822E1 +5.166610000E2,6.162757540E1 +5.169960000E2,6.009082976E1 +5.173360000E2,5.999682475E1 +5.176380000E2,6.121463264E1 +5.178750000E2,5.929809726E1 +5.181460000E2,5.746668369E1 +5.183810000E2,5.919113180E1 +5.186360000E2,5.827917213E1 +5.189280000E2,5.902314388E1 +5.192310000E2,6.116063950E1 +5.195310000E2,6.026149556E1 +5.198180000E2,5.851929656E1 +5.200920000E2,5.750929671E1 +5.204160000E2,5.729942637E1 +5.207470000E2,5.472104161E1 +5.210390000E2,6.169397748E1 +5.213450000E2,6.081589597E1 +5.216480000E2,6.278728872E1 +5.219550000E2,6.266319096E1 +5.222160000E2,6.478840582E1 +5.224820000E2,6.255888661E1 +5.227330000E2,6.119451713E1 +5.229970000E2,6.244953097E1 +5.232800000E2,6.000703556E1 +5.236020000E2,5.885323025E1 +5.239510000E2,5.826073845E1 +5.242570000E2,5.807287072E1 +5.245200000E2,5.931641295E1 +5.247800000E2,5.775994158E1 +5.250310000E2,6.167249992E1 +5.253010000E2,6.027694641E1 +5.255430000E2,6.329659774E1 +5.258240000E2,6.254377160E1 +5.261330000E2,6.489975363E1 +5.263840000E2,5.999325642E1 +5.266440000E2,5.885077446E1 +5.268920000E2,6.439829299E1 +5.272450000E2,6.165608373E1 +5.275110000E2,5.418048629E1 +5.277700000E2,5.656005066E1 +5.280170000E2,6.215252288E1 +5.283170000E2,5.743407158E1 +5.285650000E2,5.831214783E1 +5.288200000E2,6.066735547E1 +5.290820000E2,5.994603081E1 +5.293240000E2,5.951550591E1 +5.295810000E2,6.264700953E1 +5.298380000E2,5.736628274E1 +5.301360000E2,5.590406638E1 +5.304530000E2,6.041033291E1 +5.307000000E2,5.968691140E1 +5.309950000E2,5.730835182E1 +5.312390000E2,5.823026311E1 +5.315470000E2,5.871167442E1 +5.318430000E2,5.990765833E1 +5.321400000E2,6.387020611E1 +5.324510000E2,6.077699448E1 +5.326980000E2,5.895294298E1 +5.329820000E2,6.041997988E1 +5.333050000E2,5.806877757E1 +5.336110000E2,5.682362418E1 +5.340220000E2,5.915478638E1 +5.342790000E2,6.110946170E1 +5.345430000E2,5.735857105E1 +5.348060000E2,5.684014045E1 +5.350480000E2,6.043627860E1 +5.353500000E2,5.982929159E1 +5.356290000E2,5.986217314E1 +5.358770000E2,5.677131614E1 +5.361310000E2,5.763848566E1 +5.363810000E2,6.142463983E1 +5.366730000E2,5.634211854E1 +5.369290000E2,5.547608220E1 +5.372430000E2,5.920768747E1 +5.375170000E2,6.113406656E1 +5.377700000E2,6.208964505E1 +5.380710000E2,6.100572025E1 +5.383260000E2,6.352283467E1 +5.386320000E2,5.898993907E1 +5.389570000E2,5.503782412E1 +5.392560000E2,5.663453376E1 +5.395360000E2,6.406828344E1 +5.398060000E2,5.890955595E1 +5.400700000E2,6.046868424E1 +5.403380000E2,5.979639772E1 +5.406170000E2,5.838685694E1 +5.409120000E2,5.933573087E1 +5.411500000E2,5.970536072E1 +5.414430000E2,5.461931777E1 +5.417380000E2,5.891969668E1 +5.419780000E2,6.086182172E1 +5.422730000E2,5.706230292E1 +5.425150000E2,6.002937875E1 +5.428150000E2,5.733734968E1 +5.430520000E2,5.791730719E1 +5.433430000E2,5.451667439E1 +5.436740000E2,5.601232928E1 +5.439430000E2,6.067749331E1 +5.441960000E2,6.044443396E1 +5.445120000E2,6.332642539E1 +5.448320000E2,6.369907597E1 +5.451010000E2,6.327412880E1 +5.453640000E2,6.380509737E1 +5.456090000E2,6.199528902E1 +5.458550000E2,5.905332967E1 +5.461530000E2,5.748064798E1 +5.463920000E2,5.793139247E1 +5.466900000E2,5.931551966E1 +5.470480000E2,6.345498755E1 +5.473610000E2,5.881486603E1 +5.476220000E2,5.928200098E1 +5.478810000E2,5.577309321E1 +5.481470000E2,5.875325885E1 +5.483980000E2,6.007409743E1 +5.486490000E2,6.070612531E1 +5.488940000E2,5.934549940E1 +5.491520000E2,6.170511636E1 +5.494020000E2,6.376886521E1 +5.497010000E2,6.406587518E1 +5.499360000E2,6.365684538E1 +5.503130000E2,6.009406633E1 +5.505850000E2,6.014270409E1 +5.508500000E2,5.879153887E1 +5.511470000E2,5.883782525E1 +5.513760000E2,5.773432280E1 +5.516350000E2,5.966648889E1 +5.518940000E2,5.472606108E1 +5.521930000E2,5.682429497E1 +5.524670000E2,5.619181968E1 +5.527770000E2,5.997719307E1 +5.530460000E2,5.879335465E1 +5.533410000E2,5.983416170E1 +5.537120000E2,5.957041909E1 +5.539420000E2,5.952828793E1 +5.542510000E2,5.971645274E1 +5.545000000E2,6.419337448E1 +5.547730000E2,6.634363344E1 +5.550770000E2,6.285856457E1 +5.553760000E2,5.654671197E1 +5.556440000E2,5.530754918E1 +5.558640000E2,5.889159880E1 +5.561110000E2,6.213947417E1 +5.563520000E2,6.860243311E1 +5.566480000E2,6.647018679E1 +5.569110000E2,6.420604516E1 +5.571650000E2,6.703462967E1 +5.574140000E2,6.648783593E1 +5.576540000E2,6.634001782E1 +5.579350000E2,6.293734135E1 +5.581770000E2,6.205918741E1 +5.584760000E2,5.247262167E1 +5.587220000E2,5.338734169E1 +5.589670000E2,5.662276325E1 +5.592110000E2,5.533465633E1 +5.595080000E2,5.854271946E1 +5.597740000E2,5.660649413E1 +5.600260000E2,6.333844075E1 +5.602860000E2,6.255943536E1 +5.605830000E2,5.392304486E1 +5.608700000E2,5.760897506E1 +5.611660000E2,5.713086887E1 +5.614070000E2,5.720157535E1 +5.617060000E2,5.026592539E1 +5.619510000E2,5.140995344E1 +5.621950000E2,5.663266073E1 +5.624370000E2,5.202695689E1 +5.627360000E2,6.084568668E1 +5.630550000E2,6.179643015E1 +5.632960000E2,5.833759539E1 +5.635420000E2,5.518782498E1 +5.638400000E2,6.578433315E1 +5.640880000E2,5.706187099E1 +5.643850000E2,5.456571992E1 +5.646300000E2,5.536479424E1 +5.649270000E2,5.930541070E1 +5.651540000E2,6.023199994E1 +5.653960000E2,5.612469871E1 +5.656980000E2,5.462007842E1 +5.659410000E2,5.278259804E1 +5.662890000E2,6.064478329E1 +5.666290000E2,5.682964802E1 +5.669030000E2,5.787828261E1 +5.671980000E2,5.712595091E1 +5.674890000E2,5.729764361E1 +5.677450000E2,5.241850056E1 +5.679980000E2,5.377155525E1 +5.682380000E2,5.485418547E1 +5.684830000E2,5.503746434E1 +5.687810000E2,5.398954643E1 +5.690230000E2,5.401913169E1 +5.693270000E2,5.953896215E1 +5.695680000E2,5.626247467E1 +5.698640000E2,6.040491706E1 +5.701050000E2,5.781813181E1 +5.703620000E2,5.733744349E1 +5.706600000E2,5.669032177E1 +5.709140000E2,5.453731954E1 +5.711580000E2,6.235364316E1 +5.714280000E2,5.958044055E1 +5.716860000E2,5.875696014E1 +5.719750000E2,5.570465139E1 +5.722310000E2,4.865236791E1 +5.725580000E2,5.257975627E1 +5.727900000E2,4.975389893E1 +5.730890000E2,5.658508958E1 +5.733660000E2,5.542284648E1 +5.735960000E2,5.536199936E1 +5.738990000E2,5.813474916E1 +5.741540000E2,5.417788207E1 +5.744370000E2,5.704170918E1 +5.746710000E2,5.736828455E1 +5.749280000E2,5.450874678E1 +5.751790000E2,5.610950442E1 +5.754890000E2,5.919887582E1 +5.758690000E2,5.780639378E1 +5.761700000E2,5.709220641E1 +5.764190000E2,5.815359781E1 +5.767060000E2,5.734155824E1 +5.769500000E2,5.925323086E1 +5.772430000E2,6.084767221E1 +5.775370000E2,5.852024889E1 +5.777780000E2,5.822649765E1 +5.780770000E2,5.829089322E1 +5.783770000E2,5.915481192E1 +5.786460000E2,5.996430642E1 +5.789780000E2,6.016421415E1 +5.792520000E2,6.221052482E1 +5.795090000E2,5.533993101E1 +5.798230000E2,6.537257407E1 +5.801220000E2,6.068836920E1 +5.803770000E2,5.728273812E1 +5.806510000E2,5.648369901E1 +5.809070000E2,5.397363349E1 +5.811690000E2,5.755294689E1 +5.814510000E2,5.957149991E1 +5.816900000E2,5.963092636E1 +5.820650000E2,6.778811076E1 +5.823240000E2,6.247529404E1 +5.825840000E2,6.073516327E1 +5.828380000E2,6.039356998E1 +5.830970000E2,5.764504824E1 +5.833990000E2,6.041396176E1 +5.836470000E2,6.355942860E1 +5.838990000E2,5.785560268E1 +5.841390000E2,6.060017525E1 +5.844440000E2,6.032069521E1 +5.847010000E2,5.760371100E1 +5.849440000E2,5.491620812E1 +5.851990000E2,5.957978671E1 +5.855370000E2,6.103184032E1 +5.857970000E2,5.896875350E1 +5.861120000E2,6.008190546E1 +5.863990000E2,5.687378544E1 +5.866450000E2,5.874294643E1 +5.869410000E2,5.870806017E1 +5.871860000E2,5.809143232E1 +5.874740000E2,5.847828699E1 +5.877850000E2,5.846232778E1 +5.880500000E2,5.755876921E1 +5.883650000E2,5.609032758E1 +5.887050000E2,5.685283394E1 +5.889730000E2,5.945975832E1 +5.892710000E2,6.114741701E1 +5.895110000E2,6.316132147E1 +5.898100000E2,6.715155367E1 +5.900480000E2,6.367866992E1 +5.903470000E2,5.131949120E1 +5.905900000E2,5.646494575E1 +5.908880000E2,6.096218752E1 +5.911270000E2,6.089171796E1 +5.913720000E2,6.319522071E1 +5.916410000E2,6.016553529E1 +5.920560000E2,5.915189166E1 +5.923330000E2,5.776862186E1 +5.925640000E2,5.840366445E1 +5.927890000E2,5.978914182E1 +5.930440000E2,6.058699711E1 +5.932650000E2,6.012895387E1 +5.935140000E2,6.295025578E1 +5.937520000E2,6.280196012E1 +5.940110000E2,6.194014009E1 +5.943340000E2,6.483906300E1 +5.945870000E2,5.918257578E1 +5.948380000E2,5.620333930E1 +5.951900000E2,6.323403421E1 +5.954240000E2,6.183177681E1 +5.956620000E2,6.120300936E1 +5.959650000E2,5.836925111E1 +5.961890000E2,6.106023171E1 +5.964920000E2,6.153658324E1 +5.967310000E2,6.490772593E1 +5.969960000E2,6.274228676E1 +5.972520000E2,6.139008510E1 +5.975050000E2,6.281232833E1 +5.978180000E2,6.254982632E1 +5.980890000E2,6.205794184E1 +5.983900000E2,6.438771503E1 +5.986230000E2,6.052772463E1 +5.988520000E2,6.375966703E1 +5.991380000E2,5.869985301E1 +5.993860000E2,6.050357712E1 +5.996630000E2,5.547835745E1 +5.999280000E2,5.400421666E1 +6.001960000E2,5.668252186E1 +6.004880000E2,6.001970320E1 +6.007680000E2,6.056987745E1 +6.010550000E2,6.461211967E1 +6.014090000E2,6.399838195E1 +6.016840000E2,5.485596323E1 +6.019450000E2,5.731519087E1 +6.022080000E2,6.691878914E1 +6.024720000E2,6.479201876E1 +6.027260000E2,6.412847214E1 +6.029760000E2,6.025795068E1 +6.032190000E2,6.098133491E1 +6.035120000E2,5.689387521E1 +6.038040000E2,5.639928101E1 +6.041550000E2,5.328068252E1 +6.044370000E2,5.639829798E1 +6.046770000E2,5.892330560E1 +6.049510000E2,5.315638413E1 +6.051900000E2,5.740260439E1 +6.054620000E2,5.339391440E1 +6.057500000E2,5.310371918E1 +6.060710000E2,5.460903952E1 +6.063050000E2,5.407304270E1 +6.065540000E2,5.870790541E1 +6.068060000E2,5.576782972E1 +6.070790000E2,5.976954147E1 +6.074640000E2,6.181180531E1 +6.077240000E2,6.194364733E1 +6.080150000E2,6.794225297E1 +6.082590000E2,6.236601361E1 +6.085470000E2,6.002700779E1 +6.088450000E2,5.971993236E1 +6.090930000E2,5.954735434E1 +6.093460000E2,5.907202371E1 +6.095920000E2,5.993658420E1 +6.098910000E2,5.530332259E1 +6.101850000E2,5.531802018E1 +6.104220000E2,5.376885939E1 +6.107780000E2,5.735355871E1 +6.110210000E2,5.868610156E1 +6.112710000E2,5.312122754E1 +6.115670000E2,5.745102631E1 +6.118550000E2,5.535536940E1 +6.121540000E2,5.088728731E1 +6.123960000E2,5.266907791E1 +6.126860000E2,5.386493253E1 +6.130010000E2,5.670623073E1 +6.132810000E2,5.563278655E1 +6.135150000E2,5.267172926E1 +6.138540000E2,5.386148816E1 +6.141880000E2,5.716468210E1 +6.144880000E2,5.526918781E1 +6.147190000E2,5.659553915E1 +6.149610000E2,5.648341007E1 +6.152730000E2,5.711745846E1 +6.155520000E2,5.918800114E1 +6.158010000E2,5.642548609E1 +6.161000000E2,5.635896926E1 +6.163480000E2,5.899225051E1 +6.166180000E2,5.374343244E1 +6.168690000E2,4.891042404E1 +6.172050000E2,5.065835680E1 +6.174560000E2,5.685264653E1 +6.177340000E2,5.429270039E1 +6.179930000E2,5.499548313E1 +6.182940000E2,5.407177565E1 +6.185300000E2,5.356533799E1 +6.188300000E2,5.378190643E1 +6.191140000E2,5.189020817E1 +6.193870000E2,5.046647494E1 +6.196450000E2,5.501107364E1 +6.198910000E2,5.798814538E1 +6.201660000E2,5.360844474E1 +6.205080000E2,5.353935610E1 +6.208080000E2,5.620189936E1 +6.210820000E2,6.216008765E1 +6.213360000E2,5.767015155E1 +6.216520000E2,6.210101060E1 +6.219320000E2,5.928042926E1 +6.221800000E2,6.394496555E1 +6.224980000E2,5.872213561E1 +6.227430000E2,5.927091626E1 +6.230010000E2,5.235592166E1 +6.232430000E2,6.313120608E1 +6.235470000E2,6.005436888E1 +6.238480000E2,5.999836557E1 +6.240930000E2,5.879748041E1 +6.243920000E2,5.978277378E1 +6.246440000E2,6.050724590E1 +6.249480000E2,6.282777276E1 +6.252520000E2,6.080897043E1 +6.255640000E2,5.889462949E1 +6.258270000E2,5.550476615E1 +6.260730000E2,5.586785505E1 +6.263620000E2,6.576560120E1 +6.266590000E2,6.102361259E1 +6.270050000E2,6.110507706E1 +6.272870000E2,5.753592100E1 +6.275410000E2,6.297666729E1 +6.278490000E2,6.037594793E1 +6.281160000E2,5.849898506E1 +6.284180000E2,6.165631601E1 +6.287090000E2,6.096774109E1 +6.289510000E2,6.176590968E1 +6.292460000E2,5.947061017E1 +6.294820000E2,6.109202024E1 +6.297790000E2,5.322559935E1 +6.301160000E2,4.971181861E1 +6.303880000E2,5.533921521E1 +6.307250000E2,5.478410742E1 +6.310240000E2,5.647795083E1 +6.313200000E2,5.797504265E1 +6.315690000E2,5.403019222E1 +6.318640000E2,5.301910781E1 +6.321010000E2,5.096544207E1 +6.324030000E2,5.324435941E1 +6.326360000E2,5.447050361E1 +6.328960000E2,5.932781903E1 +6.331500000E2,5.967228428E1 +6.334640000E2,6.319489971E1 +6.337810000E2,5.820271574E1 +6.340710000E2,5.910289699E1 +6.343170000E2,5.681937370E1 +6.346260000E2,5.582227275E1 +6.349350000E2,5.745831651E1 +6.352100000E2,5.504019385E1 +6.354620000E2,5.072303887E1 +6.357190000E2,5.366082959E1 +6.359690000E2,5.380227314E1 +6.362560000E2,4.818205454E1 +6.365090000E2,5.989908626E1 +6.368780000E2,5.659012846E1 +6.371610000E2,5.593157997E1 +6.374460000E2,5.135237935E1 +6.377000000E2,5.687788515E1 +6.379550000E2,5.943975502E1 +6.382630000E2,6.290957992E1 +6.385230000E2,5.827099811E1 +6.387780000E2,5.686391746E1 +6.390620000E2,5.771790911E1 +6.393200000E2,5.390066131E1 +6.395830000E2,5.358231960E1 +6.398480000E2,5.564565007E1 +6.401490000E2,5.205482155E1 +6.404200000E2,5.852280051E1 +6.407340000E2,4.836326193E1 +6.409980000E2,5.905115701E1 +6.412560000E2,5.622349390E1 +6.415040000E2,5.891737338E1 +6.417460000E2,5.749377856E1 +6.420310000E2,5.414095183E1 +6.422680000E2,5.482109112E1 +6.425170000E2,5.202942051E1 +6.428000000E2,4.903409276E1 +6.431250000E2,5.495098254E1 +6.434650000E2,5.777911761E1 +6.437680000E2,5.329076638E1 +6.440080000E2,5.886592322E1 +6.443070000E2,5.661637111E1 +6.445560000E2,5.459133399E1 +6.448230000E2,4.858613706E1 +6.450990000E2,5.642020356E1 +6.453590000E2,5.634614530E1 +6.456240000E2,5.769024626E1 +6.458900000E2,6.037646239E1 +6.461470000E2,5.712013563E1 +6.464260000E2,5.393237723E1 +6.467570000E2,5.443825449E1 +6.469850000E2,5.464133184E1 +6.472460000E2,5.185343249E1 +6.475170000E2,5.670688718E1 +6.477900000E2,5.808659132E1 +6.480150000E2,5.879711687E1 +6.483250000E2,5.860991669E1 +6.485730000E2,5.600484597E1 +6.488230000E2,5.291438286E1 +6.491020000E2,5.869236753E1 +6.493260000E2,5.826316690E1 +6.496250000E2,5.619306699E1 +6.499850000E2,6.085970714E1 +6.502400000E2,6.051231588E1 +6.505400000E2,6.096601072E1 +6.507990000E2,6.197068990E1 +6.511180000E2,6.520817743E1 +6.513810000E2,6.377577246E1 +6.516860000E2,6.105485617E1 +6.519940000E2,5.890751001E1 +6.522910000E2,5.911253604E1 +6.525370000E2,6.291937986E1 +6.528540000E2,6.252638881E1 +6.532210000E2,6.337356348E1 +6.535270000E2,5.894334263E1 +6.537830000E2,5.754939005E1 +6.540930000E2,5.500698560E1 +6.543880000E2,5.014350898E1 +6.546880000E2,5.646260920E1 +6.549870000E2,5.951282585E1 +6.552920000E2,6.099782791E1 +6.555480000E2,6.065538365E1 +6.558100000E2,6.827371953E1 +6.560790000E2,6.035931154E1 +6.563820000E2,6.267306134E1 +6.566350000E2,5.826452213E1 +6.568970000E2,6.092938143E1 +6.572010000E2,6.534130041E1 +6.575130000E2,6.111837506E1 +6.577770000E2,5.826481723E1 +6.580330000E2,5.918147323E1 +6.582980000E2,6.100230752E1 +6.585510000E2,6.302217459E1 +6.588060000E2,5.754956715E1 +6.591080000E2,6.111201710E1 +6.593520000E2,6.017410469E1 +6.597040000E2,6.031944923E1 +6.599450000E2,5.943575512E1 +6.602120000E2,5.868776340E1 +6.605570000E2,5.940543513E1 +6.608500000E2,5.886327816E1 +6.610920000E2,5.770522648E1 +6.613840000E2,5.442777508E1 +6.616200000E2,5.394232060E1 +6.619220000E2,5.856638842E1 +6.622160000E2,5.742664400E1 +6.624600000E2,5.472498345E1 +6.627560000E2,5.672985390E1 +6.629770000E2,5.834702318E1 +6.632250000E2,5.907602823E1 +6.634810000E2,5.873031221E1 +6.637670000E2,5.757130737E1 +6.640040000E2,5.572185824E1 +6.643070000E2,5.959142979E1 +6.645480000E2,5.851623707E1 +6.648520000E2,5.856887935E1 +6.650940000E2,6.397218192E1 +6.653890000E2,5.963692586E1 +6.656210000E2,5.934207027E1 +6.659580000E2,5.667856430E1 +6.662640000E2,5.811017468E1 +6.665550000E2,5.505265787E1 +6.667990000E2,5.558350894E1 +6.671320000E2,6.063017800E1 +6.674000000E2,5.568411381E1 +6.676510000E2,5.981422062E1 +6.679580000E2,5.723024768E1 +6.682820000E2,5.036028104E1 +6.685240000E2,5.199205823E1 +6.687970000E2,5.367328475E1 +6.691280000E2,5.936914884E1 +6.693940000E2,5.657797691E1 +6.696490000E2,6.065879377E1 +6.699270000E2,5.657054255E1 +6.702000000E2,5.655716576E1 +6.704770000E2,5.823562265E1 +6.707350000E2,6.065030224E1 +6.710140000E2,6.110776530E1 +6.712700000E2,5.714357796E1 +6.715170000E2,5.604236164E1 +6.717930000E2,6.041748871E1 +6.721240000E2,6.019765334E1 +6.724270000E2,5.928602786E1 +6.727750000E2,5.973060669E1 +6.730710000E2,6.059869751E1 +6.733250000E2,6.116850166E1 +6.736400000E2,6.145214709E1 +6.738890000E2,6.020118097E1 +6.741670000E2,6.048579637E1 +6.744720000E2,6.225337088E1 +6.747550000E2,5.853636068E1 +6.750030000E2,5.999204871E1 +6.752840000E2,5.433989895E1 +6.755100000E2,5.847308735E1 +6.758420000E2,5.913726954E1 +6.760830000E2,6.049449503E1 +6.763830000E2,5.545572399E1 +6.766370000E2,6.246077536E1 +6.768920000E2,6.029598130E1 +6.771340000E2,6.005864514E1 +6.774230000E2,6.582269585E1 +6.776700000E2,6.255104294E1 +6.779140000E2,6.623711836E1 +6.781740000E2,6.684819787E1 +6.784850000E2,6.877250850E1 +6.787420000E2,6.157084767E1 +6.789860000E2,6.054068573E1 +6.793290000E2,6.069583213E1 +6.795810000E2,6.124898856E1 +6.798240000E2,6.136691849E1 +6.800900000E2,6.035594762E1 +6.803920000E2,5.654106541E1 +6.806920000E2,5.587565134E1 +6.809940000E2,5.642134155E1 +6.813020000E2,5.749983358E1 +6.815830000E2,5.576151961E1 +6.818120000E2,5.714589311E1 +6.820580000E2,5.969510914E1 +6.823020000E2,5.824123453E1 +6.825680000E2,5.779273115E1 +6.828630000E2,5.699644891E1 +6.831010000E2,5.900876644E1 +6.833500000E2,6.335540424E1 +6.835940000E2,6.280432027E1 +6.838340000E2,6.194675910E1 +6.841290000E2,5.801082069E1 +6.843650000E2,5.652506879E1 +6.846570000E2,5.895404856E1 +6.848910000E2,5.873705448E1 +6.851950000E2,5.589704153E1 +6.855380000E2,5.379672362E1 +6.857910000E2,6.287056471E1 +6.860900000E2,6.081817617E1 +6.863340000E2,6.807593043E1 +6.866320000E2,5.604389930E1 +6.868800000E2,6.712075434E1 +6.871750000E2,6.290238552E1 +6.874740000E2,6.473105179E1 +6.877330000E2,5.873835234E1 +6.880180000E2,5.800563858E1 +6.882620000E2,5.540095032E1 +6.885810000E2,6.197881428E1 +6.888280000E2,5.541258482E1 +6.890890000E2,5.558277465E1 +6.894010000E2,4.965923685E1 +6.897080000E2,4.860020107E1 +6.899730000E2,5.608167548E1 +6.902300000E2,5.381305593E1 +6.904990000E2,6.079286270E1 +6.908000000E2,6.446965644E1 +6.910380000E2,6.556266140E1 +6.913400000E2,5.418444209E1 +6.916350000E2,5.205102491E1 +6.919820000E2,5.812981404E1 +6.922410000E2,6.500705260E1 +6.925070000E2,6.149947285E1 +6.927750000E2,5.695315316E1 +6.930870000E2,5.775854948E1 +6.933870000E2,6.523399833E1 +6.936300000E2,6.692630865E1 +6.939270000E2,5.793447825E1 +6.942230000E2,5.746396110E1 +6.944770000E2,6.017975210E1 +6.947150000E2,5.956759439E1 +6.950320000E2,6.391288151E1 +6.953110000E2,6.484415086E1 +6.955650000E2,6.664209540E1 +6.958410000E2,6.746668632E1 +6.961050000E2,5.775664920E1 +6.964050000E2,6.383035698E1 +6.967020000E2,5.816763892E1 +6.969600000E2,6.921190909E1 +6.972400000E2,6.165047809E1 +6.975080000E2,5.666810057E1 +6.977540000E2,6.417546300E1 +6.980020000E2,5.788971486E1 +6.982730000E2,5.486922606E1 +6.985850000E2,5.576434723E1 +6.988820000E2,5.548978795E1 +6.991460000E2,5.886820316E1 +6.993970000E2,6.226406326E1 +6.996480000E2,5.601534080E1 +6.999400000E2,5.901385758E1 +7.002040000E2,5.720709772E1 +7.005120000E2,6.318399213E1 +7.007580000E2,6.338981741E1 +7.010170000E2,6.747312486E1 +7.012670000E2,5.788999692E1 +7.015450000E2,4.434465006E1 +7.018710000E2,6.439013955E1 +7.021480000E2,5.375342664E1 +7.023700000E2,6.398282027E1 +7.026160000E2,5.857909138E1 +7.029130000E2,5.670439641E1 +7.031590000E2,5.749786365E1 +7.034320000E2,5.181710985E1 +7.036770000E2,5.871535868E1 +7.039520000E2,5.470297527E1 +7.042240000E2,5.771822323E1 +7.044750000E2,5.236261523E1 +7.047130000E2,5.595332709E1 +7.050480000E2,5.576748295E1 +7.053040000E2,5.334869600E1 +7.055590000E2,5.337806625E1 +7.058180000E2,5.499892680E1 +7.060900000E2,5.490963435E1 +7.063980000E2,5.551078540E1 +7.066680000E2,5.358868238E1 +7.069300000E2,5.203182642E1 +7.071760000E2,5.771053387E1 +7.074630000E2,5.175835182E1 +7.077440000E2,5.402526598E1 +7.080400000E2,5.754717994E1 +7.083470000E2,6.103880587E1 +7.086400000E2,6.284824916E1 +7.088840000E2,6.674666322E1 +7.092010000E2,6.194114278E1 +7.094980000E2,5.796289911E1 +7.097580000E2,5.475547679E1 +7.100170000E2,5.804024708E1 +7.102650000E2,5.606423134E1 +7.105550000E2,5.319247933E1 +7.107930000E2,5.625991375E1 +7.110940000E2,5.589539698E1 +7.114730000E2,6.073460415E1 +7.117930000E2,6.208342045E1 +7.120530000E2,6.335117127E1 +7.123290000E2,5.821275565E1 +7.126280000E2,5.793160357E1 +7.128780000E2,5.509944006E1 +7.131790000E2,5.578357696E1 +7.134760000E2,5.632534225E1 +7.137350000E2,5.466315647E1 +7.140450000E2,5.914530785E1 +7.143020000E2,6.280432125E1 +7.146020000E2,6.333348539E1 +7.149790000E2,5.698482465E1 +7.152920000E2,5.474810308E1 +7.155370000E2,5.417920207E1 +7.157880000E2,6.392184792E1 +7.160720000E2,6.565549591E1 +7.163130000E2,6.082705714E1 +7.166120000E2,5.816285927E1 +7.168430000E2,5.809201859E1 +7.170930000E2,6.016105207E1 +7.173350000E2,5.162287691E1 +7.176230000E2,5.754317879E1 +7.179310000E2,6.166304542E1 +7.181770000E2,6.177004553E1 +7.184320000E2,6.274574776E1 +7.186900000E2,6.104994734E1 +7.189920000E2,5.735301480E1 +7.192340000E2,5.830205645E1 +7.194890000E2,6.212782217E1 +7.197420000E2,5.467685243E1 +7.200420000E2,5.313970583E1 +7.202920000E2,5.278680647E1 +7.205360000E2,5.474141102E1 +7.209140000E2,6.241771654E1 +7.212600000E2,6.394594172E1 +7.215560000E2,6.348358734E1 +7.217980000E2,6.112734048E1 +7.220450000E2,6.226451183E1 +7.222930000E2,6.534082516E1 +7.225960000E2,6.114019283E1 +7.228390000E2,6.421228964E1 +7.231230000E2,6.814847387E1 +7.233690000E2,6.275446304E1 +7.236190000E2,6.679153921E1 +7.239280000E2,6.537583699E1 +7.241850000E2,6.212976374E1 +7.245300000E2,6.553556935E1 +7.248220000E2,5.834030427E1 +7.250930000E2,5.992153646E1 +7.253380000E2,5.595099295E1 +7.256370000E2,5.720822528E1 +7.258800000E2,5.423516872E1 +7.261770000E2,5.906139652E1 +7.264140000E2,6.204477132E1 +7.267140000E2,6.368823365E1 +7.269550000E2,6.513672214E1 +7.272500000E2,6.364997971E1 +7.275370000E2,6.269941998E1 +7.278570000E2,5.948773609E1 +7.281020000E2,5.789544973E1 +7.283740000E2,6.305528689E1 +7.286400000E2,6.245554089E1 +7.289690000E2,6.033221518E1 +7.292310000E2,5.940071821E1 +7.294970000E2,6.176178101E1 +7.298020000E2,5.355172623E1 +7.300580000E2,5.535292187E1 +7.303150000E2,5.274398781E1 +7.305750000E2,5.399957194E1 +7.308780000E2,5.819691646E1 +7.312070000E2,5.434897588E1 +7.315090000E2,6.041787911E1 +7.317850000E2,5.617860881E1 +7.320560000E2,5.558770875E1 +7.323290000E2,5.151264449E1 +7.325860000E2,5.612143969E1 +7.328800000E2,5.405001557E1 +7.331120000E2,5.455354216E1 +7.334090000E2,5.716252136E1 +7.337070000E2,6.416157102E1 +7.339910000E2,6.098010142E1 +7.343020000E2,6.194029449E1 +7.346500000E2,6.091313037E1 +7.349540000E2,5.846954669E1 +7.352410000E2,5.743489407E1 +7.355320000E2,5.872669957E1 +7.357800000E2,5.859080967E1 +7.360560000E2,6.053269456E1 +7.363220000E2,6.117884455E1 +7.366590000E2,5.809887850E1 +7.369420000E2,5.453224539E1 +7.372510000E2,5.639337460E1 +7.375040000E2,5.373613181E1 +7.378630000E2,5.066236714E1 +7.381160000E2,4.653740377E1 +7.383650000E2,6.375011526E1 +7.386730000E2,6.282181577E1 +7.389830000E2,6.727660972E1 +7.392340000E2,6.413328322E1 +7.394790000E2,6.184881400E1 +7.397290000E2,6.430634497E1 +7.400250000E2,6.276256291E1 +7.402610000E2,6.297441350E1 +7.405590000E2,5.306586823E1 +7.408610000E2,5.403016569E1 +7.412260000E2,5.749263443E1 +7.415060000E2,5.657932114E1 +7.417820000E2,5.532222303E1 +7.420430000E2,5.911133378E1 +7.423450000E2,5.822379827E1 +7.426470000E2,6.311870884E1 +7.428860000E2,5.964121243E1 +7.431940000E2,5.708688763E1 +7.434960000E2,5.782189241E1 +7.437480000E2,5.745118469E1 +7.440380000E2,5.258772989E1 +7.442830000E2,5.325984780E1 +7.445410000E2,5.216709684E1 +7.447900000E2,5.485283680E1 +7.450520000E2,6.638751453E1 +7.453640000E2,6.256149725E1 +7.456370000E2,6.851667797E1 +7.459020000E2,6.356784575E1 +7.462040000E2,6.586178842E1 +7.464510000E2,6.099626883E1 +7.467420000E2,6.874341983E1 +7.470300000E2,5.690479739E1 +7.472670000E2,5.749513215E1 +7.475860000E2,5.743840209E1 +7.478480000E2,6.695338823E1 +7.481550000E2,6.575566103E1 +7.484170000E2,6.244751264E1 +7.486690000E2,6.206430480E1 +7.489520000E2,5.755143157E1 +7.492450000E2,6.343498072E1 +7.494820000E2,6.599354682E1 +7.497800000E2,5.994269627E1 +7.500210000E2,6.480563885E1 +7.503160000E2,5.962320355E1 +7.505550000E2,5.907805627E1 +7.508860000E2,5.452673237E1 +7.511450000E2,5.413358853E1 +7.514110000E2,5.786691992E1 +7.516870000E2,6.185088179E1 +7.519570000E2,5.432685780E1 +7.522050000E2,5.297819944E1 +7.524920000E2,5.290855554E1 +7.527910000E2,5.828859659E1 +7.530300000E2,5.880189294E1 +7.533360000E2,5.500578631E1 +7.535910000E2,5.476677878E1 +7.538330000E2,5.414240587E1 +7.541650000E2,5.332866170E1 +7.544620000E2,5.193802785E1 +7.547080000E2,5.242932681E1 +7.549590000E2,6.024921863E1 +7.552020000E2,5.537701523E1 +7.554960000E2,5.489617845E1 +7.557330000E2,5.384280286E1 +7.560410000E2,5.406125999E1 +7.562870000E2,5.246560959E1 +7.565320000E2,5.374729291E1 +7.567680000E2,5.542801483E1 +7.570630000E2,5.525770987E1 +7.573930000E2,5.847670432E1 +7.576660000E2,5.822188632E1 +7.579180000E2,5.822901451E1 +7.582040000E2,5.458975346E1 +7.584820000E2,5.438683247E1 +7.587800000E2,5.260449368E1 +7.590260000E2,5.371245859E1 +7.592870000E2,4.983203663E1 +7.595420000E2,5.018089077E1 +7.598380000E2,5.950969681E1 +7.601480000E2,5.769305363E1 +7.604800000E2,5.747567937E1 +7.607190000E2,5.446335810E1 +7.610040000E2,5.463229896E1 +7.612970000E2,5.644916160E1 +7.615560000E2,5.809520116E1 +7.618460000E2,5.406577519E1 +7.621050000E2,5.362277750E1 +7.623930000E2,5.868559294E1 +7.626230000E2,5.548744129E1 +7.628890000E2,5.613986675E1 +7.631890000E2,5.592058678E1 +7.634870000E2,5.947938191E1 +7.638120000E2,5.945990241E1 +7.640830000E2,5.354091788E1 +7.643270000E2,5.910847411E1 +7.645670000E2,6.112853730E1 +7.648120000E2,5.617469613E1 +7.650520000E2,5.678172470E1 +7.653190000E2,5.293731054E1 +7.655730000E2,5.571573154E1 +7.658430000E2,5.239475172E1 +7.660900000E2,5.710555790E1 +7.663840000E2,5.593714408E1 +7.666500000E2,5.506488062E1 +7.669100000E2,5.276148627E1 +7.671530000E2,5.087813070E1 +7.674500000E2,4.966858228E1 +7.677070000E2,4.690170064E1 +7.679870000E2,5.097718665E1 +7.682460000E2,5.173969669E1 +7.685220000E2,5.562988056E1 +7.687630000E2,5.194720020E1 +7.690630000E2,5.590118249E1 +7.693610000E2,5.613585205E1 +7.696030000E2,5.417299550E1 +7.698530000E2,5.925774948E1 +7.702010000E2,5.729895975E1 +7.704610000E2,5.765570707E1 +7.707610000E2,6.211008380E1 +7.710570000E2,5.846530012E1 +7.712970000E2,5.766544416E1 +7.715460000E2,5.716238768E1 +7.718080000E2,5.700535494E1 +7.720510000E2,5.592606747E1 +7.723260000E2,5.771214429E1 +7.725940000E2,5.753442175E1 +7.728830000E2,5.541298336E1 +7.731860000E2,5.137853822E1 +7.735420000E2,5.462649470E1 +7.738320000E2,5.454281912E1 +7.740820000E2,6.803752283E1 +7.743260000E2,6.852980541E1 +7.745820000E2,7.007631543E1 +7.748270000E2,7.009876218E1 +7.751160000E2,6.950363051E1 +7.753520000E2,6.338954984E1 +7.755910000E2,5.500200077E1 +7.758880000E2,5.358702362E1 +7.761340000E2,5.718303470E1 +7.763730000E2,5.887519420E1 +7.767050000E2,5.795457078E1 +7.769970000E2,5.796499201E1 +7.773000000E2,5.644912180E1 +7.775570000E2,5.804780214E1 +7.778740000E2,5.958528627E1 +7.781300000E2,5.635913866E1 +7.784430000E2,5.593106857E1 +7.787280000E2,6.063168213E1 +7.789960000E2,5.917208792E1 +7.792560000E2,5.719923422E1 +7.795050000E2,6.400429125E1 +7.797680000E2,5.733192807E1 +7.800440000E2,6.018331087E1 +7.803000000E2,6.350407169E1 +7.805530000E2,6.357762743E1 +7.808590000E2,6.772563953E1 +7.811430000E2,6.431848914E1 +7.814050000E2,5.710721917E1 +7.816950000E2,5.646111127E1 +7.819500000E2,5.564600214E1 +7.822050000E2,6.362802489E1 +7.824550000E2,6.278310471E1 +7.827010000E2,5.851995741E1 +7.829620000E2,5.759567059E1 +7.832630000E2,5.449669640E1 +7.835070000E2,6.040303881E1 +7.837500000E2,5.743841461E1 +7.839990000E2,6.096558185E1 +7.842840000E2,7.161293257E1 +7.845270000E2,7.417435903E1 +7.848410000E2,6.386070968E1 +7.851390000E2,6.234904760E1 +7.854350000E2,6.321731436E1 +7.856820000E2,6.294103551E1 +7.859780000E2,6.210337552E1 +7.862150000E2,6.765383904E1 +7.865650000E2,6.346682761E1 +7.868610000E2,6.221020232E1 +7.871280000E2,6.119530731E1 +7.873850000E2,5.314248269E1 +7.876880000E2,5.288680780E1 +7.879230000E2,5.064349321E1 +7.882230000E2,5.786336298E1 +7.884630000E2,5.341864841E1 +7.887250000E2,5.286568073E1 +7.890140000E2,5.272997567E1 +7.893180000E2,5.904110581E1 +7.896690000E2,5.748622391E1 +7.899200000E2,5.773986136E1 +7.902160000E2,5.480967078E1 +7.904710000E2,5.627241382E1 +7.907280000E2,5.456362797E1 +7.909900000E2,5.766408512E1 +7.912380000E2,5.413586400E1 +7.914940000E2,5.234403284E1 +7.917720000E2,5.190170354E1 +7.920440000E2,5.227759392E1 +7.923170000E2,4.410400383E1 +7.926220000E2,3.508270700E1 +7.929370000E2,3.887828085E1 +7.932030000E2,4.522069604E1 +7.934660000E2,4.928233980E1 +7.937420000E2,4.706401379E1 +7.940710000E2,4.988989997E1 +7.943700000E2,5.767827889E1 +7.946060000E2,5.506606719E1 +7.949050000E2,6.107887773E1 +7.952060000E2,5.849609892E1 +7.955030000E2,5.343173328E1 +7.957490000E2,5.007726003E1 +7.960580000E2,4.763873915E1 +7.963010000E2,5.045894898E1 +7.966040000E2,6.859700710E1 +7.968900000E2,6.734256534E1 +7.971550000E2,6.661489392E1 +7.974110000E2,6.556398865E1 +7.976580000E2,5.519705677E1 +7.979230000E2,5.503316479E1 +7.982060000E2,5.955770829E1 +7.984280000E2,5.777834711E1 +7.987260000E2,6.050467535E1 +7.989700000E2,5.583639573E1 +7.993330000E2,5.988908902E1 +7.995750000E2,5.875791040E1 +7.998670000E2,6.166637478E1 +8.001160000E2,5.690435901E1 +8.004160000E2,5.599911293E1 +8.006610000E2,5.889628547E1 +8.009180000E2,6.227540789E1 +8.011740000E2,6.572663811E1 +8.014300000E2,6.013467784E1 +8.016770000E2,6.250368579E1 +8.019910000E2,6.532292099E1 +8.023560000E2,5.377170031E1 +8.026370000E2,5.535595108E1 +8.029110000E2,5.147526495E1 +8.031720000E2,4.993046061E1 +8.034760000E2,6.394035794E1 +8.037260000E2,5.983119170E1 +8.040270000E2,5.967243802E1 +8.042930000E2,6.559340840E1 +8.046100000E2,5.262215496E1 +8.049160000E2,5.397812040E1 +8.051780000E2,5.680330381E1 +8.054740000E2,5.857171626E1 +8.058060000E2,5.577198454E1 +8.060880000E2,5.916891157E1 +8.063460000E2,6.120078548E1 +8.066060000E2,6.223167379E1 +8.069230000E2,6.161077093E1 +8.071720000E2,5.812180846E1 +8.074300000E2,5.665535607E1 +8.077230000E2,5.401482687E1 +8.079600000E2,5.631804256E1 +8.082610000E2,5.267806276E1 +8.085540000E2,5.766120113E1 +8.088100000E2,5.717509884E1 +8.091690000E2,5.698714543E1 +8.094130000E2,5.807918354E1 +8.096940000E2,5.364566959E1 +8.099320000E2,5.678502402E1 +8.102110000E2,5.494444844E1 +8.104710000E2,6.216218230E1 +8.107550000E2,5.504588420E1 +8.110030000E2,5.220186059E1 +8.112810000E2,5.338487037E1 +8.115430000E2,5.422122114E1 +8.118180000E2,6.217546099E1 +8.121430000E2,5.739027439E1 +8.124800000E2,5.218554734E1 +8.128080000E2,6.183667492E1 +8.130850000E2,6.028246668E1 +8.133620000E2,6.620979851E1 +8.135950000E2,5.810667246E1 +8.138630000E2,6.096670869E1 +8.141300000E2,5.149777407E1 +8.143960000E2,4.993954713E1 +8.146400000E2,5.196561010E1 +8.149350000E2,5.727966309E1 +8.151710000E2,5.489316784E1 +8.154100000E2,5.619291420E1 +8.157500000E2,5.425831711E1 +8.160430000E2,5.677079709E1 +8.163250000E2,5.289383275E1 +8.165600000E2,5.573749616E1 +8.168090000E2,5.211960412E1 +8.170840000E2,5.029895102E1 +8.173170000E2,5.085418245E1 +8.175630000E2,5.101392152E1 +8.178870000E2,5.228690479E1 +8.182130000E2,5.919931006E1 +8.184680000E2,5.288617356E1 +8.188320000E2,5.626269479E1 +8.191030000E2,6.124827198E1 +8.193870000E2,5.889071517E1 +8.196160000E2,5.957980623E1 +8.199180000E2,5.440069788E1 +8.201590000E2,5.524226830E1 +8.204560000E2,5.147688867E1 +8.206870000E2,5.390780082E1 +8.209820000E2,6.509870984E1 +8.212270000E2,6.421388309E1 +8.215230000E2,5.843840462E1 +8.218170000E2,5.422512027E1 +8.221280000E2,5.468614274E1 +8.223780000E2,5.922850585E1 +8.226710000E2,6.486031186E1 +8.229330000E2,6.154967201E1 +8.232420000E2,5.893257410E1 +8.235100000E2,6.020329639E1 +8.238290000E2,5.483779552E1 +8.240760000E2,5.692914998E1 +8.243280000E2,6.347347085E1 +8.245930000E2,5.345306004E1 +8.248670000E2,6.141647052E1 +8.252000000E2,5.672783001E1 +8.254550000E2,5.605661334E1 +8.257610000E2,5.699330885E1 +8.260410000E2,5.489256860E1 +8.263010000E2,6.262090025E1 +8.265830000E2,5.457719262E1 +8.268180000E2,5.416382407E1 +8.271260000E2,4.993919751E1 +8.273700000E2,5.569569056E1 +8.276330000E2,5.514364162E1 +8.278890000E2,5.653204472E1 +8.281470000E2,5.784406489E1 +8.284370000E2,5.752811490E1 +8.286720000E2,5.727510089E1 +8.289650000E2,5.900575965E1 +8.292510000E2,5.679022390E1 +8.294860000E2,5.722234118E1 +8.297350000E2,5.952638514E1 +8.300320000E2,5.925181191E1 +8.302740000E2,5.930148258E1 +8.305160000E2,5.668145507E1 +8.307730000E2,5.590492759E1 +8.310130000E2,6.302930486E1 +8.312510000E2,5.733539345E1 +8.315800000E2,5.620349253E1 +8.318910000E2,5.495250031E1 +8.322000000E2,5.501979251E1 +8.324620000E2,5.208226415E1 +8.327390000E2,5.765748383E1 +8.329950000E2,5.489193423E1 +8.332490000E2,5.593428331E1 +8.335720000E2,5.714652117E1 +8.338250000E2,5.832769426E1 +8.341370000E2,5.884156077E1 +8.344030000E2,5.840498509E1 +8.347020000E2,5.864505811E1 +8.350330000E2,6.356982434E1 +8.353340000E2,6.286445683E1 +8.355720000E2,5.657384439E1 +8.358940000E2,5.660970318E1 +8.361720000E2,5.918731584E1 +8.364160000E2,5.825788220E1 +8.366580000E2,5.592754487E1 +8.369110000E2,5.553717092E1 +8.371910000E2,5.495027293E1 +8.374510000E2,5.546329287E1 +8.377420000E2,5.746402701E1 +8.379890000E2,5.891922359E1 +8.383130000E2,6.522858798E1 +8.385710000E2,6.384617776E1 +8.388430000E2,5.435088619E1 +8.390670000E2,5.460135210E1 +8.393610000E2,5.982769627E1 +8.396020000E2,5.936265195E1 +8.398550000E2,6.034701146E1 +8.401470000E2,6.875861473E1 +8.403840000E2,6.968788985E1 +8.406760000E2,6.653493651E1 +8.409120000E2,6.664139767E1 +8.412200000E2,6.195236791E1 +8.415280000E2,5.759269564E1 +8.418110000E2,5.704906263E1 +8.420770000E2,5.199124728E1 +8.423350000E2,5.625309672E1 +8.426060000E2,5.627754144E1 +8.428710000E2,6.285304788E1 +8.431220000E2,6.089762622E1 +8.434160000E2,5.828079525E1 +8.436650000E2,5.581703965E1 +8.439650000E2,5.326092983E1 +8.442070000E2,5.247397640E1 +8.444500000E2,5.104216729E1 +8.447560000E2,4.981466747E1 +8.450730000E2,5.794387296E1 +8.453210000E2,6.103400827E1 +8.455680000E2,6.053778141E1 +8.458610000E2,5.413066164E1 +8.461240000E2,5.591468697E1 +8.463740000E2,5.289659812E1 +8.466770000E2,6.014390988E1 +8.469740000E2,5.713983843E1 +8.472340000E2,5.457406708E1 +8.474800000E2,5.848999564E1 +8.478210000E2,5.310404619E1 +8.481040000E2,5.463633704E1 +8.483620000E2,5.329096892E1 +8.486670000E2,5.667645304E1 +8.489890000E2,5.540515985E1 +8.492420000E2,5.014593999E1 +8.495060000E2,5.019949668E1 +8.497660000E2,4.724526190E1 +8.500410000E2,4.632701850E1 +8.502660000E2,4.436725745E1 +8.505710000E2,5.273585220E1 +8.508470000E2,5.232501704E1 +8.511370000E2,5.177389205E1 +8.513940000E2,5.236772038E1 +8.516560000E2,4.869019062E1 +8.518980000E2,5.254056589E1 +8.521620000E2,5.441215371E1 +8.524060000E2,5.431954181E1 +8.526720000E2,4.873515026E1 +8.529820000E2,5.253291311E1 +8.532350000E2,5.201920339E1 +8.535330000E2,5.083296820E1 +8.537750000E2,5.373650683E1 +8.540560000E2,6.162621210E1 +8.543710000E2,6.137876928E1 +8.546190000E2,6.347980201E1 +8.548850000E2,6.480134627E1 +8.551390000E2,6.344943059E1 +8.553830000E2,6.653758852E1 +8.556910000E2,6.821811094E1 +8.559900000E2,6.564040109E1 +8.562480000E2,6.310710880E1 +8.565060000E2,5.625485760E1 +8.567860000E2,5.886920329E1 +8.570590000E2,5.638007706E1 +8.573180000E2,5.477312089E1 +8.576670000E2,5.402637072E1 +8.579310000E2,5.282806817E1 +8.582400000E2,5.743205922E1 +8.584770000E2,5.608834078E1 +8.587730000E2,5.917700537E1 +8.590950000E2,5.757076232E1 +8.593390000E2,5.680975976E1 +8.596110000E2,5.316092446E1 +8.598560000E2,5.634389465E1 +8.601130000E2,5.912558361E1 +8.603880000E2,5.827706684E1 +8.606370000E2,5.580056474E1 +8.609720000E2,5.622551838E1 +8.612190000E2,5.816090597E1 +8.614650000E2,5.710633258E1 +8.617260000E2,6.762679027E1 +8.619970000E2,6.050550643E1 +8.622480000E2,6.017289530E1 +8.624960000E2,5.884551198E1 +8.627510000E2,5.823958631E1 +8.630120000E2,5.747421536E1 +8.632920000E2,5.891926612E1 +8.635810000E2,5.962176090E1 +8.638680000E2,5.932606834E1 +8.642430000E2,6.035939553E1 +8.645920000E2,5.892740034E1 +8.649090000E2,6.158225090E1 +8.651650000E2,5.941856931E1 +8.654560000E2,5.517726055E1 +8.656900000E2,5.573554393E1 +8.659400000E2,6.300977067E1 +8.662170000E2,6.346838855E1 +8.664760000E2,5.840482341E1 +8.667600000E2,5.656477763E1 +8.669980000E2,5.809371706E1 +8.672500000E2,5.957523428E1 +8.675890000E2,5.868790884E1 +8.678670000E2,6.643274765E1 +8.681530000E2,6.202304252E1 +8.684260000E2,6.167390940E1 +8.686760000E2,6.561664622E1 +8.689220000E2,6.221849135E1 +8.691620000E2,5.873701255E1 +8.694080000E2,5.721335717E1 +8.696600000E2,5.775578048E1 +8.699210000E2,6.139190630E1 +8.702060000E2,5.695582014E1 +8.705330000E2,5.285782467E1 +8.708800000E2,5.254436807E1 +8.711320000E2,5.941119733E1 +8.714840000E2,5.561687107E1 +8.717890000E2,5.226341013E1 +8.720340000E2,5.351737673E1 +8.723120000E2,5.581753669E1 +8.725450000E2,5.544476975E1 +8.727930000E2,5.112331517E1 +8.731050000E2,5.669948434E1 +8.733660000E2,5.553741274E1 +8.736450000E2,5.287392842E1 +8.738710000E2,5.342755356E1 +8.742030000E2,5.525376809E1 +8.745760000E2,5.790146612E1 +8.748470000E2,5.775550126E1 +8.750900000E2,5.828043309E1 +8.753860000E2,5.689517506E1 +8.756490000E2,5.836000549E1 +8.759170000E2,5.887049385E1 +8.761640000E2,5.731343570E1 +8.764240000E2,5.947081752E1 +8.766660000E2,5.735732777E1 +8.769150000E2,5.791222148E1 +8.771870000E2,5.217820200E1 +8.775110000E2,5.373516267E1 +8.777550000E2,5.639663701E1 +8.779960000E2,5.308435393E1 +8.782370000E2,5.327040257E1 +8.785510000E2,5.539866825E1 +8.788050000E2,5.451580533E1 +8.791100000E2,5.664888244E1 +8.793670000E2,5.439058144E1 +8.796110000E2,6.546629591E1 +8.799090000E2,6.080313073E1 +8.801560000E2,6.023654065E1 +8.804070000E2,5.547022044E1 +8.807450000E2,5.933402552E1 +8.809880000E2,6.073235462E1 +8.812850000E2,5.811897337E1 +8.815210000E2,5.670873426E1 +8.818240000E2,6.239450766E1 +8.821160000E2,6.033779387E1 +8.823610000E2,5.921328684E1 +8.826600000E2,5.808215882E1 +8.828910000E2,5.927124720E1 +8.831280000E2,5.254346564E1 +8.834120000E2,5.755316817E1 +8.837180000E2,5.815703318E1 +8.840150000E2,5.925974643E1 +8.842610000E2,5.406291788E1 +8.845520000E2,5.892672719E1 +8.847970000E2,6.343231596E1 +8.850390000E2,6.045689612E1 +8.853340000E2,5.903303339E1 +8.855810000E2,5.897514906E1 +8.858230000E2,5.682843230E1 +8.860690000E2,4.647265993E1 +8.863400000E2,5.617216143E1 +8.865730000E2,5.412892937E1 +8.869100000E2,6.210166513E1 +8.872070000E2,6.369099543E1 +8.874540000E2,6.052073025E1 +8.877480000E2,6.125108403E1 +8.879990000E2,6.087163347E1 +8.882550000E2,6.365510666E1 +8.885320000E2,5.341778352E1 +8.887600000E2,5.238943476E1 +8.890050000E2,6.378561240E1 +8.892460000E2,6.182956815E1 +8.895070000E2,6.027537659E1 +8.897770000E2,5.747996426E1 +8.901220000E2,5.606477689E1 +8.903620000E2,5.816493441E1 +8.907030000E2,5.740436721E1 +8.909540000E2,5.812990427E1 +8.912060000E2,5.757163286E1 +8.914520000E2,5.669306215E1 +8.917150000E2,5.593698617E1 +8.919580000E2,5.867011196E1 +8.922060000E2,6.001129970E1 +8.924480000E2,6.247831114E1 +8.927080000E2,5.501506807E1 +8.929550000E2,5.918039480E1 +8.932790000E2,5.750337148E1 +8.935260000E2,5.382626014E1 +8.937850000E2,5.632583646E1 +8.940370000E2,5.552393419E1 +8.943380000E2,5.417609473E1 +8.946050000E2,5.314873345E1 +8.948570000E2,5.537690953E1 +8.951790000E2,6.168371256E1 +8.954540000E2,6.142331687E1 +8.957690000E2,5.914263764E1 +8.960690000E2,6.039127428E1 +8.963670000E2,5.303465172E1 +8.966720000E2,5.819495208E1 +8.969200000E2,5.956457754E1 +8.972240000E2,5.554166388E1 +8.974940000E2,5.700583380E1 +8.978160000E2,5.525596264E1 +8.981210000E2,5.878997726E1 +8.983720000E2,5.661289659E1 +8.986510000E2,6.039909322E1 +8.988730000E2,5.569487247E1 +8.991240000E2,5.857026750E1 +8.993800000E2,6.116905404E1 +8.996580000E2,6.331625006E1 +8.998890000E2,5.612470465E1 +9.001440000E2,5.098243988E1 +9.004020000E2,5.779474181E1 +9.006650000E2,5.597754805E1 +9.009440000E2,5.706395638E1 +9.012380000E2,5.989184595E1 +9.015000000E2,5.905145002E1 +9.017620000E2,5.913397617E1 +9.020230000E2,5.831976398E1 +9.022900000E2,5.400731512E1 +9.025900000E2,6.547285797E1 +9.029050000E2,6.534571775E1 +9.032100000E2,5.428834230E1 +9.034580000E2,4.919896084E1 +9.037180000E2,5.326934205E1 +9.039740000E2,5.135684539E1 +9.042700000E2,5.784030554E1 +9.045180000E2,5.789711892E1 +9.048150000E2,5.501985460E1 +9.050680000E2,5.394185103E1 +9.053920000E2,5.504541187E1 +9.056620000E2,5.574384904E1 +9.059260000E2,5.198297704E1 +9.062920000E2,5.507423148E1 +9.065460000E2,5.073979477E1 +9.068090000E2,5.409355601E1 +9.071500000E2,5.842003605E1 +9.074380000E2,6.323761852E1 +9.076890000E2,5.475142925E1 +9.079510000E2,5.285089191E1 +9.082580000E2,6.228883476E1 +9.085110000E2,6.229139223E1 +9.087590000E2,5.849936549E1 +9.090220000E2,6.382664868E1 +9.092560000E2,5.234586511E1 +9.095720000E2,5.506613760E1 +9.098700000E2,5.883918884E1 +9.101180000E2,5.722745073E1 +9.103980000E2,6.006905181E1 +9.106670000E2,6.333821195E1 +9.109390000E2,5.997503412E1 +9.111770000E2,5.691091005E1 +9.114250000E2,5.629684565E1 +9.117070000E2,5.944947286E1 +9.119370000E2,5.757115704E1 +9.122030000E2,5.617546709E1 +9.125090000E2,5.506166951E1 +9.128480000E2,5.345826069E1 +9.131070000E2,5.586702127E1 +9.133900000E2,6.075354367E1 +9.137040000E2,5.668960998E1 +9.139920000E2,5.584388878E1 +9.142800000E2,5.668519299E1 +9.145740000E2,5.400550993E1 +9.148220000E2,5.668991412E1 +9.150670000E2,5.455006531E1 +9.153720000E2,5.750041942E1 +9.156590000E2,5.756327349E1 +9.159630000E2,5.822694927E1 +9.162110000E2,5.764545771E1 +9.164660000E2,5.716015909E1 +9.167560000E2,5.136001811E1 +9.170200000E2,4.706951064E1 +9.172710000E2,4.999131008E1 +9.175180000E2,5.619976433E1 +9.178030000E2,5.463675948E1 +9.180580000E2,4.995546642E1 +9.183000000E2,5.328928391E1 +9.185570000E2,4.808104957E1 +9.188650000E2,5.411517612E1 +9.191080000E2,5.672946344E1 +9.194270000E2,5.737096863E1 +9.196850000E2,5.974051238E1 +9.199830000E2,5.656564726E1 +9.202340000E2,5.709524531E1 +9.204810000E2,5.408385116E1 +9.208240000E2,5.414410830E1 +9.210650000E2,5.638214177E1 +9.213330000E2,5.753313030E1 +9.216130000E2,5.354803656E1 +9.219120000E2,6.191736419E1 +9.221480000E2,5.734366551E1 +9.224580000E2,5.684475304E1 +9.228030000E2,6.045431811E1 +9.230950000E2,5.973057312E1 +9.233960000E2,5.537690593E1 +9.236620000E2,5.411771801E1 +9.239600000E2,5.513839001E1 +9.242140000E2,5.699753068E1 +9.244670000E2,6.643461088E1 +9.247300000E2,6.062391899E1 +9.250330000E2,5.798096332E1 +9.253240000E2,6.347140522E1 +9.255740000E2,6.166496817E1 +9.259250000E2,6.190058171E1 +9.261820000E2,6.329204590E1 +9.264380000E2,6.389135880E1 +9.267030000E2,5.917517639E1 +9.269480000E2,5.809772267E1 +9.272170000E2,5.733235238E1 +9.274780000E2,5.226841119E1 +9.277860000E2,5.876554483E1 +9.280720000E2,6.281089568E1 +9.283510000E2,5.368859448E1 +9.286400000E2,5.449014251E1 +9.289370000E2,5.589991313E1 +9.292390000E2,5.452044152E1 +9.294860000E2,5.574135623E1 +9.297800000E2,5.656551806E1 +9.300200000E2,5.368800996E1 +9.302990000E2,5.374372369E1 +9.305490000E2,5.520696346E1 +9.308500000E2,5.642038107E1 +9.311480000E2,5.958603376E1 +9.314510000E2,5.775531382E1 +9.316980000E2,5.561486787E1 +9.319610000E2,5.826734748E1 +9.322700000E2,5.604871965E1 +9.325550000E2,5.170668645E1 +9.328670000E2,5.089285684E1 +9.331190000E2,4.724853188E1 +9.333790000E2,4.756075237E1 +9.336260000E2,5.199039629E1 +9.338890000E2,4.980140945E1 +9.341620000E2,5.530081877E1 +9.344120000E2,5.549144740E1 +9.347250000E2,5.515929093E1 +9.349780000E2,5.399104933E1 +9.352760000E2,5.325801117E1 +9.356240000E2,5.040008457E1 +9.359420000E2,5.360316460E1 +9.361890000E2,5.191591881E1 +9.364390000E2,5.324554606E1 +9.366970000E2,5.654671572E1 +9.370100000E2,5.711795620E1 +9.372590000E2,5.478625541E1 +9.375950000E2,5.667621371E1 +9.378550000E2,5.463565976E1 +9.381050000E2,5.398825590E1 +9.383580000E2,5.436030102E1 +9.386390000E2,5.091983440E1 +9.389120000E2,5.286705124E1 +9.391550000E2,5.236775571E1 +9.394300000E2,5.738794921E1 +9.397170000E2,5.727939554E1 +9.399750000E2,6.319402051E1 +9.402560000E2,5.468250624E1 +9.405530000E2,5.641852830E1 +9.408670000E2,6.200700436E1 +9.411390000E2,6.163446308E1 +9.413860000E2,7.148312536E1 +9.416340000E2,6.050927243E1 +9.419040000E2,5.667078757E1 +9.421350000E2,5.749142651E1 +9.424700000E2,5.240604485E1 +9.427760000E2,5.466454134E1 +9.430280000E2,6.082141946E1 +9.433300000E2,6.003969647E1 +9.436110000E2,6.121195378E1 +9.438460000E2,5.625129518E1 +9.441420000E2,5.911131348E1 +9.443880000E2,5.468317436E1 +9.446840000E2,6.009033853E1 +9.449440000E2,5.906624737E1 +9.452490000E2,5.464875325E1 +9.455970000E2,5.384566268E1 +9.458510000E2,5.044039840E1 +9.461140000E2,5.035886237E1 +9.463820000E2,5.734112986E1 +9.466620000E2,5.229112628E1 +9.469690000E2,6.028523542E1 +9.472250000E2,5.837101422E1 +9.475000000E2,5.619491985E1 +9.477970000E2,5.364209552E1 +9.480560000E2,5.511055516E1 +9.483560000E2,5.308396885E1 +9.486650000E2,5.587440008E1 +9.490640000E2,5.273632850E1 +9.493730000E2,6.231816715E1 +9.496570000E2,6.253734875E1 +9.499030000E2,5.554720788E1 +9.501460000E2,5.631566079E1 +9.503970000E2,5.626896653E1 +9.506490000E2,5.691941114E1 +9.508990000E2,5.116659255E1 +9.511440000E2,4.922875084E1 +9.514130000E2,5.936693495E1 +9.517070000E2,5.638156112E1 +9.520200000E2,5.180629212E1 +9.523780000E2,4.998674108E1 +9.526570000E2,4.841587788E1 +9.529100000E2,5.028896526E1 +9.531650000E2,4.965921907E1 +9.534690000E2,4.493319669E1 +9.537260000E2,4.598612712E1 +9.539740000E2,5.276251951E1 +9.542810000E2,4.126037796E1 +9.545830000E2,4.737114191E1 +9.548330000E2,4.411553821E1 +9.550850000E2,4.440050708E1 +9.553840000E2,5.260541790E1 +9.556980000E2,5.273901651E1 +9.559710000E2,5.383409632E1 +9.562220000E2,5.239354977E1 +9.564980000E2,4.759742823E1 +9.568040000E2,5.239869448E1 +9.570530000E2,5.238241691E1 +9.573300000E2,5.227349879E1 +9.575630000E2,5.272394727E1 +9.578410000E2,5.414710772E1 +9.580970000E2,5.325895305E1 +9.583410000E2,5.577122645E1 +9.586370000E2,5.015645058E1 +9.590040000E2,5.173028231E1 +9.593040000E2,5.447959265E1 +9.595640000E2,5.484713415E1 +9.598110000E2,5.470137539E1 +9.601060000E2,5.878769788E1 +9.603740000E2,5.851189839E1 +9.606810000E2,5.400762096E1 +9.609290000E2,5.749049444E1 +9.611870000E2,5.241750519E1 +9.614480000E2,4.979747952E1 +9.616960000E2,5.096881110E1 +9.620030000E2,5.149804171E1 +9.623180000E2,5.481599911E1 +9.625540000E2,5.138365056E1 +9.628240000E2,5.235851031E1 +9.630470000E2,4.871540913E1 +9.632880000E2,5.651540461E1 +9.635860000E2,5.650278128E1 +9.638210000E2,5.704973755E1 +9.641160000E2,5.757712252E1 +9.643960000E2,5.881159691E1 +9.646600000E2,5.355579494E1 +9.649750000E2,5.539751700E1 +9.652910000E2,4.797714339E1 +9.655520000E2,5.082548637E1 +9.658080000E2,5.579830605E1 +9.660780000E2,5.554406278E1 +9.663250000E2,5.354814316E1 +9.665660000E2,5.463107171E1 +9.668090000E2,5.368692433E1 +9.671300000E2,5.364867335E1 +9.674540000E2,5.468973775E1 +9.677060000E2,5.815904844E1 +9.680020000E2,5.598522308E1 +9.682480000E2,5.541083624E1 +9.685850000E2,5.512396132E1 +9.688400000E2,5.530796688E1 +9.691210000E2,5.433954611E1 +9.693810000E2,5.507440645E1 +9.696820000E2,5.086817906E1 +9.699140000E2,5.696191489E1 +9.701640000E2,5.845256581E1 +9.704420000E2,5.620226260E1 +9.706770000E2,5.629047170E1 +9.709750000E2,5.811655252E1 +9.712290000E2,5.703185419E1 +9.714900000E2,5.716734774E1 +9.718450000E2,5.493596869E1 +9.720910000E2,5.909437017E1 +9.723380000E2,5.710675060E1 +9.725910000E2,5.780279559E1 +9.728920000E2,5.860060144E1 +9.731360000E2,6.078900999E1 +9.734260000E2,5.852116194E1 +9.736640000E2,5.905899453E1 +9.739130000E2,5.636299630E1 +9.742090000E2,6.289355999E1 +9.744870000E2,6.167909115E1 +9.747290000E2,6.098057792E1 +9.750690000E2,5.906667343E1 +9.753320000E2,6.018572501E1 +9.756150000E2,5.718512970E1 +9.759100000E2,5.146063018E1 +9.761570000E2,5.733244632E1 +9.764050000E2,5.368365894E1 +9.766600000E2,5.486016267E1 +9.769150000E2,5.908582599E1 +9.771910000E2,5.733773036E1 +9.774400000E2,5.566361416E1 +9.777680000E2,5.819125256E1 +9.781220000E2,5.947694304E1 +9.783640000E2,6.140057637E1 +9.786330000E2,5.721849738E1 +9.788550000E2,5.617504209E1 +9.791010000E2,5.660293849E1 +9.793960000E2,5.174001770E1 +9.796880000E2,5.083474014E1 +9.799290000E2,5.184104339E1 +9.801850000E2,5.025385313E1 +9.804850000E2,5.286605500E1 +9.807270000E2,5.586849562E1 +9.809750000E2,5.666036754E1 +9.812950000E2,5.248500918E1 +9.815810000E2,5.416072977E1 +9.818360000E2,5.799655965E1 +9.821300000E2,5.801841935E1 +9.823770000E2,5.977514968E1 +9.826270000E2,5.676871456E1 +9.828850000E2,5.104814549E1 +9.831730000E2,5.834620153E1 +9.834010000E2,5.660640582E1 +9.836620000E2,5.686451748E1 +9.839750000E2,5.998440952E1 +9.842240000E2,5.556687478E1 +9.846000000E2,5.811069315E1 +9.848430000E2,5.843499893E1 +9.851250000E2,5.180956247E1 +9.853860000E2,5.206236639E1 +9.856480000E2,5.641840701E1 +9.859110000E2,5.518588565E1 +9.861920000E2,5.697237679E1 +9.864550000E2,5.411246614E1 +9.867510000E2,5.214533821E1 +9.869880000E2,5.642389575E1 +9.872440000E2,6.015294933E1 +9.875470000E2,5.809991100E1 +9.879150000E2,6.420044247E1 +9.881610000E2,6.042656173E1 +9.884280000E2,5.938959873E1 +9.886840000E2,6.059888233E1 +9.889870000E2,5.282749720E1 +9.892620000E2,5.638110380E1 +9.895440000E2,4.900409689E1 +9.897740000E2,4.971849802E1 +9.900320000E2,5.061428463E1 +9.903370000E2,5.829922071E1 +9.905860000E2,5.812083213E1 +9.908910000E2,5.500587720E1 +9.911860000E2,5.677481104E1 +9.914380000E2,5.502691141E1 +9.916830000E2,5.294500154E1 +9.919560000E2,5.700444986E1 +9.921770000E2,5.448756275E1 +9.924220000E2,5.785741234E1 +9.927280000E2,5.702180374E1 +9.929670000E2,6.013415875E1 +9.932080000E2,5.533496795E1 +9.934640000E2,5.695301526E1 +9.937440000E2,5.436173732E1 +9.940620000E2,5.092257074E1 +9.944480000E2,4.973000793E1 +9.946940000E2,4.871235512E1 +9.949410000E2,5.171412848E1 +9.951960000E2,5.643245777E1 +9.954520000E2,5.548819002E1 +9.957530000E2,5.694822585E1 +9.960600000E2,5.668072577E1 +9.963110000E2,5.547400320E1 +9.966010000E2,5.667137699E1 +9.968430000E2,5.866196066E1 +9.971120000E2,5.641527163E1 +9.974300000E2,5.505243365E1 +9.977140000E2,5.491253296E1 +9.979940000E2,5.642986287E1 +9.982400000E2,5.111113898E1 +9.985270000E2,5.228293633E1 +9.987770000E2,5.380023266E1 +9.990760000E2,5.259255492E1 +9.993610000E2,5.359948032E1 +9.996550000E2,5.817439497E1 +9.999080000E2,5.712087238E1 +1.000199000E3,6.016800470E1 +1.000435000E3,5.758076017E1 +1.000772000E3,5.328951429E1 +1.001047000E3,5.373102399E1 +1.001303000E3,5.905317642E1 +1.001622000E3,5.478240688E1 +1.001877000E3,5.648896451E1 +1.002173000E3,5.587033976E1 +1.002422000E3,5.995513955E1 +1.002724000E3,6.295760047E1 +1.003003000E3,5.978713154E1 +1.003261000E3,5.669754444E1 +1.003545000E3,5.577942906E1 +1.003827000E3,6.186873273E1 +1.004183000E3,6.253868639E1 +1.004493000E3,5.777226132E1 +1.004770000E3,6.482227668E1 +1.005072000E3,5.923751414E1 +1.005323000E3,5.644465637E1 +1.005601000E3,6.074750234E1 +1.005832000E3,5.683683327E1 +1.006147000E3,5.957418887E1 +1.006418000E3,6.134946851E1 +1.006713000E3,5.641852300E1 +1.006952000E3,5.637674327E1 +1.007310000E3,5.484290206E1 +1.007589000E3,6.426865013E1 +1.007886000E3,5.712036033E1 +1.008127000E3,5.768385080E1 +1.008427000E3,5.812466970E1 +1.008666000E3,6.112344783E1 +1.008973000E3,5.606588478E1 +1.009269000E3,5.809328667E1 +1.009507000E3,5.371315435E1 +1.009763000E3,5.527533595E1 +1.010003000E3,5.390597114E1 +1.010379000E3,5.652035402E1 +1.010658000E3,5.490058638E1 +1.010920000E3,5.927019017E1 +1.011197000E3,5.293113048E1 +1.011458000E3,5.179006266E1 +1.011718000E3,5.366462930E1 +1.011979000E3,5.569421827E1 +1.012229000E3,5.341899104E1 +1.012477000E3,4.863208748E1 +1.012772000E3,6.037154816E1 +1.013036000E3,5.430849576E1 +1.013284000E3,5.735938261E1 +1.013671000E3,5.526482118E1 +1.013957000E3,5.731780297E1 +1.014225000E3,5.205368153E1 +1.014486000E3,5.548863756E1 +1.014733000E3,5.265038263E1 +1.015033000E3,5.986876322E1 +1.015314000E3,5.130643680E1 +1.015590000E3,6.086878634E1 +1.015830000E3,5.798526739E1 +1.016137000E3,6.825745236E1 +1.016387000E3,5.828900876E1 +1.016655000E3,5.873097643E1 +1.017001000E3,6.454090665E1 +1.017329000E3,6.385512775E1 +1.017637000E3,6.691081911E1 +1.017938000E3,6.580217665E1 +1.018229000E3,6.485489311E1 +1.018470000E3,6.387101962E1 +1.018706000E3,6.616835921E1 +1.018997000E3,5.951737331E1 +1.019235000E3,5.386458503E1 +1.019536000E3,5.756977765E1 +1.019801000E3,5.811747841E1 +1.020064000E3,5.930001089E1 +1.020406000E3,5.469664450E1 +1.020673000E3,5.181220980E1 +1.020925000E3,5.483858346E1 +1.021232000E3,5.716842569E1 +1.021527000E3,5.738254897E1 +1.021762000E3,5.628034518E1 +1.022007000E3,5.850971228E1 +1.022258000E3,5.329919175E1 +1.022556000E3,5.482637446E1 +1.022813000E3,5.690503448E1 +1.023071000E3,5.317501594E1 +1.023336000E3,4.870888301E1 +1.023687000E3,6.132281620E1 +1.023965000E3,6.262505101E1 +1.024220000E3,6.180229149E1 +1.024496000E3,6.130993335E1 +1.024741000E3,6.231376381E1 +1.025040000E3,6.164360059E1 +1.025279000E3,5.910065798E1 +1.025533000E3,5.622173801E1 +1.025821000E3,5.290311975E1 +1.026116000E3,5.028293308E1 +1.026403000E3,5.581740437E1 +1.026664000E3,5.988277804E1 +1.027011000E3,5.730548262E1 +1.027305000E3,5.417769573E1 +1.027578000E3,5.250932185E1 +1.027819000E3,5.139919708E1 +1.028128000E3,5.061852216E1 +1.028380000E3,4.722292138E1 +1.028683000E3,5.983070917E1 +1.028956000E3,6.045269830E1 +1.029182000E3,5.777292957E1 +1.029431000E3,5.497807442E1 +1.029734000E3,5.533889528E1 +1.030063000E3,5.373558580E1 +1.030323000E3,5.600729212E1 +1.030620000E3,5.467159629E1 +1.030863000E3,5.246400101E1 +1.031110000E3,5.468037288E1 +1.031367000E3,5.850364516E1 +1.031646000E3,5.490958739E1 +1.031911000E3,5.866929845E1 +1.032210000E3,5.708288591E1 +1.032475000E3,5.498129629E1 +1.032736000E3,5.670272599E1 +1.032986000E3,5.317143219E1 +1.033315000E3,5.758413128E1 +1.033557000E3,6.361635596E1 +1.033846000E3,5.513973379E1 +1.034093000E3,5.215484095E1 +1.034399000E3,5.465926438E1 +1.034684000E3,5.588902955E1 +1.034978000E3,5.387672604E1 +1.035280000E3,5.595327755E1 +1.035543000E3,5.621513504E1 +1.035825000E3,5.991854954E1 +1.036079000E3,5.864640009E1 +1.036322000E3,6.072021936E1 +1.036666000E3,5.462749592E1 +1.036971000E3,5.329083651E1 +1.037264000E3,5.401214501E1 +1.037542000E3,5.242806591E1 +1.037843000E3,5.573267887E1 +1.038091000E3,5.224254554E1 +1.038380000E3,5.453929206E1 +1.038635000E3,5.371826859E1 +1.038891000E3,4.369246898E1 +1.039145000E3,4.547521933E1 +1.039418000E3,4.204639660E1 +1.039750000E3,4.426760298E1 +1.039990000E3,4.955659514E1 +1.040294000E3,4.960859899E1 +1.040560000E3,4.841380220E1 +1.040808000E3,4.914533708E1 +1.041104000E3,4.650609937E1 +1.041370000E3,4.849101938E1 +1.041622000E3,5.065930763E1 +1.041920000E3,4.744161935E1 +1.042161000E3,4.448519483E1 +1.042478000E3,4.726532690E1 +1.042725000E3,4.667923132E1 +1.043042000E3,4.704822757E1 +1.043307000E3,3.950691106E1 +1.043560000E3,5.249697508E1 +1.043835000E3,4.753687679E1 +1.044091000E3,4.843049138E1 +1.044350000E3,5.394643708E1 +1.044644000E3,4.769079035E1 +1.044887000E3,5.111291504E1 +1.045194000E3,5.247298633E1 +1.045445000E3,4.904344971E1 +1.045693000E3,4.405437847E1 +1.045988000E3,4.750888237E1 +1.046301000E3,4.305046000E1 +1.046518000E3,4.630901796E1 +1.046813000E3,4.756289225E1 +1.047053000E3,4.661089273E1 +1.047331000E3,6.143859736E1 +1.047566000E3,5.702483033E1 +1.047860000E3,5.015015196E1 +1.048098000E3,5.180675157E1 +1.048397000E3,4.645218330E1 +1.048640000E3,4.317726503E1 +1.048918000E3,4.962602549E1 +1.049159000E3,4.922447391E1 +1.049523000E3,4.310015818E1 +1.049767000E3,5.584844461E1 +1.050011000E3,5.550466055E1 +1.050294000E3,5.076679182E1 +1.050523000E3,4.777565498E1 +1.050776000E3,5.078379664E1 +1.051031000E3,4.412618688E1 +1.051298000E3,3.933148532E1 +1.051551000E3,4.240994962E1 +1.051799000E3,3.715036539E1 +1.052054000E3,4.541823437E1 +1.052312000E3,3.252240989E1 +1.052661000E3,4.298387800E1 +1.052922000E3,4.065675211E1 +1.053171000E3,3.851226965E1 +1.053417000E3,3.833414863E1 +1.053702000E3,3.734543870E1 +1.053967000E3,4.406198141E1 +1.054269000E3,3.397952572E1 +1.054518000E3,3.018425986E1 +1.054795000E3,2.659023927E1 +1.055055000E3,3.230579484E1 +1.055319000E3,4.027650377E1 +1.055588000E3,3.256611719E1 +1.055936000E3,3.203904394E1 +1.056189000E3,3.024692018E1 +1.056469000E3,4.044611203E1 +1.056698000E3,3.245705712E1 +1.056956000E3,5.087039919E1 +1.057201000E3,5.278557071E1 +1.057507000E3,6.996122129E1 +1.057766000E3,6.951439283E1 +1.058027000E3,6.731609209E1 +1.058291000E3,5.787293958E1 +1.058571000E3,5.774874245E1 +1.058801000E3,5.291748766E1 +1.059132000E3,4.352220528E1 +1.059391000E3,5.556254729E1 +1.059665000E3,5.339220405E1 +1.059951000E3,5.593145301E1 +1.060235000E3,5.299996372E1 +1.060492000E3,4.882317894E1 +1.060733000E3,3.790707311E1 +1.060975000E3,3.470192076E1 +1.061278000E3,4.481563830E1 +1.061519000E3,4.823008935E1 +1.061816000E3,4.719850269E1 +1.062076000E3,4.706381680E1 +1.062331000E3,4.530378435E1 +1.062576000E3,3.456809562E1 +1.062882000E3,3.742453964E1 +1.063154000E3,3.905594906E1 +1.063397000E3,3.672857244E1 +1.063694000E3,2.941779164E1 +1.063926000E3,2.995931983E1 +1.064168000E3,3.455311118E1 +1.064461000E3,3.254662869E1 +1.064708000E3,3.652583843E1 +1.065001000E3,5.229424666E1 +1.065352000E3,5.178814165E1 +1.065606000E3,4.798098259E1 +1.065854000E3,3.636652329E1 +1.066121000E3,4.558252535E1 +1.066366000E3,3.902840121E1 +1.066629000E3,3.106435508E1 +1.066887000E3,2.541330464E1 +1.067179000E3,3.474902335E1 +1.067449000E3,4.492275189E1 +1.067698000E3,3.860211372E1 +1.067955000E3,4.332670525E1 +1.068251000E3,5.147667691E1 +1.068546000E3,5.152069997E1 +1.068797000E3,4.540650098E1 +1.069105000E3,4.486446450E1 +1.069378000E3,4.196481867E1 +1.069632000E3,4.863200791E1 +1.069908000E3,3.878967071E1 +1.070151000E3,3.630888030E1 +1.070413000E3,2.964429880E1 +1.070682000E3,3.354707636E1 +1.070956000E3,4.008490969E1 +1.071248000E3,3.576577653E1 +1.071553000E3,4.349754488E1 +1.071886000E3,3.824859907E1 +1.072130000E3,3.455877689E1 +1.072406000E3,3.622999465E1 +1.072717000E3,3.637608237E1 +1.072984000E3,3.645219519E1 +1.073255000E3,4.353729148E1 +1.073603000E3,4.287473251E1 +1.073856000E3,4.842203791E1 +1.074097000E3,4.484407311E1 +1.074356000E3,4.397007110E1 +1.074628000E3,4.695884235E1 +1.074931000E3,4.627189963E1 +1.075264000E3,4.689571524E1 +1.075614000E3,5.203841291E1 +1.075923000E3,4.610184941E1 +1.076163000E3,4.404432471E1 +1.076475000E3,4.923215011E1 +1.076765000E3,4.466142180E1 +1.077062000E3,4.987282715E1 +1.077375000E3,4.461839454E1 +1.077687000E3,5.085403766E1 +1.077991000E3,4.674512295E1 +1.078232000E3,5.167180279E1 +1.078544000E3,4.780582457E1 +1.078939000E3,4.593914406E1 +1.079187000E3,4.061652220E1 +1.079434000E3,4.347669045E1 +1.079712000E3,4.326983820E1 +1.079966000E3,3.511950991E1 +1.080260000E3,4.755279745E1 +1.080506000E3,4.756343862E1 +1.080756000E3,4.779732167E1 +1.081049000E3,4.991962747E1 +1.081293000E3,5.213887128E1 +1.081586000E3,5.357624469E1 +1.081916000E3,5.141456645E1 +1.082165000E3,5.036532462E1 +1.082460000E3,4.962769973E1 +1.082696000E3,4.506404490E1 +1.082988000E3,4.537987312E1 +1.083220000E3,4.738457007E1 +1.083529000E3,4.698711193E1 +1.083769000E3,4.571430081E1 +1.084079000E3,4.980908007E1 +1.084324000E3,5.082282040E1 +1.084590000E3,5.406004268E1 +1.084876000E3,5.436375886E1 +1.085258000E3,5.361506257E1 +1.085509000E3,5.202937925E1 +1.085815000E3,5.324976969E1 +1.086057000E3,5.371445731E1 +1.086301000E3,5.282162917E1 +1.086550000E3,5.221281857E1 +1.086802000E3,5.263727375E1 +1.087126000E3,5.703022139E1 +1.087384000E3,5.519432869E1 +1.087646000E3,5.426647490E1 +1.087939000E3,5.407342864E1 +1.088175000E3,5.235924404E1 +1.088520000E3,4.681002832E1 +1.088812000E3,4.891237586E1 +1.089076000E3,4.699020733E1 +1.089350000E3,4.902871382E1 +1.089591000E3,5.078145117E1 +1.089837000E3,5.041791921E1 +1.090133000E3,4.603650794E1 +1.090430000E3,4.871755485E1 +1.090660000E3,5.111421073E1 +1.090911000E3,4.581894631E1 +1.091248000E3,4.988189917E1 +1.091630000E3,5.341365920E1 +1.091902000E3,4.962858025E1 +1.092183000E3,4.315344358E1 +1.092440000E3,4.664431132E1 +1.092683000E3,4.616459192E1 +1.092923000E3,4.765071496E1 +1.093171000E3,4.163360687E1 +1.093473000E3,4.537777608E1 +1.093714000E3,4.783603025E1 +1.094007000E3,4.845414260E1 +1.094261000E3,4.799870549E1 +1.094499000E3,4.651309815E1 +1.094792000E3,5.003648984E1 +1.095123000E3,5.202534254E1 +1.095372000E3,5.709400077E1 +1.095625000E3,5.694079106E1 +1.095896000E3,5.715452089E1 +1.096196000E3,5.523378380E1 +1.096438000E3,5.375558627E1 +1.096737000E3,5.665208041E1 +1.096991000E3,5.314654737E1 +1.097292000E3,5.142447849E1 +1.097557000E3,5.330628285E1 +1.097827000E3,5.512040694E1 +1.098167000E3,5.399583122E1 +1.098472000E3,5.540663813E1 +1.098720000E3,5.200546986E1 +1.098960000E3,4.676140326E1 +1.099243000E3,4.798657093E1 +1.099544000E3,4.841724285E1 +1.099804000E3,5.642371618E1 +1.100109000E3,5.409000726E1 +1.100381000E3,5.348646719E1 +1.100630000E3,5.346537578E1 +1.100927000E3,5.422782845E1 +1.101164000E3,5.395323822E1 +1.101495000E3,5.383967560E1 +1.101763000E3,5.667828538E1 +1.102044000E3,4.764690784E1 +1.102307000E3,5.353530254E1 +1.102613000E3,5.568430762E1 +1.102906000E3,5.431580275E1 +1.103147000E3,5.193331555E1 +1.103441000E3,5.040945762E1 +1.103677000E3,5.333005838E1 +1.103968000E3,4.947534745E1 +1.104272000E3,5.306270968E1 +1.104564000E3,5.537230515E1 +1.104799000E3,4.876041085E1 +1.105069000E3,5.109409535E1 +1.105330000E3,5.087734214E1 +1.105587000E3,5.225642483E1 +1.105838000E3,5.176680091E1 +1.106135000E3,5.535939212E1 +1.106380000E3,5.666892185E1 +1.106622000E3,5.658846562E1 +1.106895000E3,5.577897889E1 +1.107150000E3,5.157178717E1 +1.107431000E3,5.284488409E1 +1.107756000E3,5.415639955E1 +1.108002000E3,5.465643057E1 +1.108313000E3,4.654328988E1 +1.108563000E3,5.038890380E1 +1.108811000E3,4.602751738E1 +1.109073000E3,4.801243396E1 +1.109375000E3,4.782472616E1 +1.109667000E3,4.666447221E1 +1.109943000E3,5.156469126E1 +1.110192000E3,4.949682888E1 +1.110448000E3,4.919673339E1 +1.110752000E3,4.862521519E1 +1.111045000E3,5.122379655E1 +1.111295000E3,4.813892217E1 +1.111515000E3,4.901611396E1 +1.111761000E3,4.905664967E1 +1.112005000E3,4.647618514E1 +1.112265000E3,4.730688076E1 +1.112537000E3,5.039121351E1 +1.112793000E3,4.985611957E1 +1.113101000E3,5.474563863E1 +1.113387000E3,5.028870882E1 +1.113678000E3,5.073784750E1 +1.113952000E3,4.995138555E1 +1.114291000E3,4.790039203E1 +1.114554000E3,4.764335594E1 +1.114849000E3,5.057104591E1 +1.115096000E3,5.107398730E1 +1.115401000E3,4.800391913E1 +1.115672000E3,4.553282874E1 +1.115895000E3,4.569523337E1 +1.116194000E3,4.480844215E1 +1.116425000E3,4.772339962E1 +1.116664000E3,5.255452638E1 +1.116906000E3,4.927433934E1 +1.117202000E3,4.871369865E1 +1.117530000E3,4.928110420E1 +1.117840000E3,5.705383563E1 +1.118146000E3,4.880674861E1 +1.118418000E3,5.038180726E1 +1.118687000E3,5.145980404E1 +1.118950000E3,5.338008269E1 +1.119227000E3,5.227728425E1 +1.119468000E3,5.450689216E1 +1.119736000E3,5.844246451E1 +1.120049000E3,5.459398611E1 +1.120351000E3,5.526423567E1 +1.120605000E3,5.228963309E1 +1.120918000E3,5.598288902E1 +1.121182000E3,5.280889802E1 +1.121489000E3,4.974717420E1 +1.121729000E3,5.137523152E1 +1.121978000E3,5.052356297E1 +1.122235000E3,5.240368249E1 +1.122503000E3,4.826380791E1 +1.122775000E3,5.095403791E1 +1.123036000E3,5.799909934E1 +1.123291000E3,4.889512711E1 +1.123587000E3,5.622808486E1 +1.123874000E3,5.230369090E1 +1.124235000E3,5.081102316E1 +1.124544000E3,5.628773803E1 +1.124826000E3,5.810547372E1 +1.125153000E3,5.508029719E1 +1.125432000E3,5.576573503E1 +1.125722000E3,5.346022180E1 +1.125978000E3,5.279748306E1 +1.126234000E3,5.604802053E1 +1.126502000E3,5.937326657E1 +1.126804000E3,5.703447215E1 +1.127047000E3,5.520354594E1 +1.127314000E3,5.551787326E1 +1.127554000E3,5.740837773E1 +1.127843000E3,5.663015330E1 +1.128135000E3,5.649615150E1 +1.128380000E3,5.731556257E1 +1.128677000E3,6.079986861E1 +1.128914000E3,5.820128856E1 +1.129207000E3,6.091746513E1 +1.129442000E3,6.126941240E1 +1.129745000E3,4.541170906E1 +1.129980000E3,4.341485096E1 +1.130277000E3,4.833777967E1 +1.130573000E3,4.472710223E1 +1.130815000E3,5.059675199E1 +1.131062000E3,3.863826940E1 +1.131353000E3,4.925455740E1 +1.131589000E3,4.859989956E1 +1.131881000E3,5.113067908E1 +1.132117000E3,5.054542106E1 +1.132418000E3,4.827479925E1 +1.132654000E3,4.610884488E1 +1.132948000E3,4.879734536E1 +1.133241000E3,5.074680390E1 +1.133563000E3,5.119298220E1 +1.133864000E3,4.861265792E1 +1.134166000E3,5.001512903E1 +1.134452000E3,5.059053464E1 +1.134716000E3,4.999839479E1 +1.134967000E3,4.960069086E1 +1.135222000E3,5.320256888E1 +1.135494000E3,5.604818163E1 +1.135742000E3,5.625768045E1 +1.135999000E3,5.261645024E1 +1.136244000E3,5.105081932E1 +1.136501000E3,5.616444939E1 +1.136847000E3,5.624064264E1 +1.137105000E3,5.654097446E1 +1.137391000E3,5.807884104E1 +1.137717000E3,5.436169891E1 +1.137970000E3,5.763959225E1 +1.138239000E3,5.465216875E1 +1.138486000E3,5.094509116E1 +1.138731000E3,5.425415233E1 +1.138977000E3,5.143709697E1 +1.139259000E3,5.032545705E1 +1.139527000E3,5.906031130E1 +1.139800000E3,5.308709054E1 +1.140168000E3,5.407062541E1 +1.140423000E3,5.585261351E1 +1.140694000E3,5.463535881E1 +1.140949000E3,5.407603664E1 +1.141230000E3,5.495767686E1 +1.141512000E3,5.639433741E1 +1.141818000E3,5.555715330E1 +1.142072000E3,5.729232944E1 +1.142323000E3,5.553013253E1 +1.142578000E3,5.648251207E1 +1.142844000E3,5.786931075E1 +1.143143000E3,6.007493220E1 +1.143523000E3,5.752076543E1 +1.143836000E3,5.573324560E1 +1.144090000E3,5.641950784E1 +1.144396000E3,5.532270625E1 +1.144644000E3,5.561239732E1 +1.144940000E3,5.206707456E1 +1.145212000E3,5.092140902E1 +1.145511000E3,5.452891649E1 +1.145770000E3,5.331137977E1 +1.146042000E3,5.366568195E1 +1.146338000E3,5.227174013E1 +1.146650000E3,5.423955559E1 +1.146934000E3,5.781916580E1 +1.147218000E3,5.532962824E1 +1.147467000E3,5.502661676E1 +1.147687000E3,5.823979674E1 +1.147961000E3,5.538066560E1 +1.148276000E3,5.423260060E1 +1.148528000E3,5.197461977E1 +1.148799000E3,5.154724487E1 +1.149057000E3,5.473685923E1 +1.149367000E3,5.647867848E1 +1.149660000E3,5.489455072E1 +1.150037000E3,6.072892064E1 +1.150335000E3,5.543869835E1 +1.150594000E3,5.667713742E1 +1.150870000E3,5.818755157E1 +1.151164000E3,5.210849760E1 +1.151411000E3,5.095671455E1 +1.151703000E3,5.254983272E1 +1.152002000E3,5.585064224E1 +1.152253000E3,5.739007574E1 +1.152582000E3,5.895179917E1 +1.152860000E3,5.461317681E1 +1.153122000E3,5.345759293E1 +1.153381000E3,5.267971619E1 +1.153684000E3,6.006602205E1 +1.153986000E3,5.573552061E1 +1.154286000E3,5.518963618E1 +1.154531000E3,5.342922095E1 +1.154792000E3,5.257536969E1 +1.155139000E3,4.887945516E1 +1.155435000E3,4.702411688E1 +1.155680000E3,4.867646616E1 +1.155978000E3,4.811861077E1 +1.156361000E3,4.915586406E1 +1.156670000E3,5.033026069E1 +1.156976000E3,5.393908378E1 +1.157274000E3,5.295128205E1 +1.157524000E3,5.249671789E1 +1.157816000E3,5.314344994E1 +1.158052000E3,5.237342933E1 +1.158353000E3,5.300284286E1 +1.158590000E3,5.170068449E1 +1.158867000E3,5.174146304E1 +1.159147000E3,4.929588783E1 +1.159411000E3,5.699090425E1 +1.159752000E3,5.266690351E1 +1.160068000E3,5.746767577E1 +1.160360000E3,5.375850846E1 +1.160640000E3,5.373794020E1 +1.160985000E3,5.304914530E1 +1.161280000E3,5.198754593E1 +1.161525000E3,5.019848207E1 +1.161766000E3,5.164623609E1 +1.162020000E3,5.363319210E1 +1.162324000E3,5.439011044E1 +1.162564000E3,5.304648945E1 +1.162816000E3,5.174573718E1 +1.163177000E3,4.505755779E1 +1.163462000E3,4.894753105E1 +1.163738000E3,5.064933943E1 +1.164013000E3,5.245879056E1 +1.164255000E3,5.017914517E1 +1.164568000E3,5.189205429E1 +1.164823000E3,5.038961444E1 +1.165052000E3,5.072118593E1 +1.165297000E3,4.831662547E1 +1.165552000E3,5.050204887E1 +1.165808000E3,5.308107982E1 +1.166062000E3,4.878509871E1 +1.166392000E3,5.002605106E1 +1.166654000E3,5.320265697E1 +1.166911000E3,4.403273534E1 +1.167180000E3,5.161386051E1 +1.167455000E3,4.986209571E1 +1.167692000E3,4.993305836E1 +1.167973000E3,5.173621365E1 +1.168216000E3,5.385559129E1 +1.168491000E3,5.543019156E1 +1.168757000E3,5.019966657E1 +1.169035000E3,5.569516326E1 +1.169296000E3,5.216419082E1 +1.169676000E3,5.398731996E1 +1.169933000E3,5.465625282E1 +1.170197000E3,5.451774184E1 +1.170449000E3,5.328129322E1 +1.170705000E3,5.452639907E1 +1.170963000E3,5.713735254E1 +1.171272000E3,5.551413923E1 +1.171528000E3,5.604966001E1 +1.171779000E3,5.340478404E1 +1.172038000E3,5.107817821E1 +1.172291000E3,5.218990306E1 +1.172602000E3,4.830451720E1 +1.172964000E3,5.276802164E1 +1.173245000E3,5.191204687E1 +1.173527000E3,5.337367972E1 +1.173838000E3,5.462664550E1 +1.174090000E3,5.304724513E1 +1.174379000E3,5.193251440E1 +1.174628000E3,5.283915893E1 +1.174936000E3,5.036641160E1 +1.175236000E3,4.890810708E1 +1.175487000E3,4.805298565E1 +1.175750000E3,5.067335741E1 +1.176019000E3,4.961207397E1 +1.176335000E3,4.820862314E1 +1.176634000E3,5.328684116E1 +1.176883000E3,5.122009001E1 +1.177165000E3,5.878687770E1 +1.177412000E3,5.487235950E1 +1.177709000E3,5.224569426E1 +1.178006000E3,5.403405997E1 +1.178246000E3,5.388661901E1 +1.178490000E3,5.237426881E1 +1.178734000E3,5.372043820E1 +1.179050000E3,5.471170909E1 +1.179387000E3,5.129350436E1 +1.179686000E3,4.660070824E1 +1.179916000E3,4.541361068E1 +1.180159000E3,4.365576113E1 +1.180466000E3,4.771103553E1 +1.180756000E3,4.863237791E1 +1.181008000E3,5.534959697E1 +1.181314000E3,5.376444060E1 +1.181609000E3,5.130885425E1 +1.181851000E3,5.256948786E1 +1.182151000E3,5.321964637E1 +1.182393000E3,5.074776981E1 +1.182622000E3,4.979941250E1 +1.182873000E3,5.445637667E1 +1.183116000E3,4.449721128E1 +1.183420000E3,5.086906199E1 +1.183676000E3,5.067998506E1 +1.183927000E3,5.352019181E1 +1.184219000E3,4.851971310E1 +1.184517000E3,5.123853013E1 +1.184764000E3,5.278221141E1 +1.185010000E3,5.126409245E1 +1.185297000E3,5.249182764E1 +1.185665000E3,5.346599478E1 +1.185972000E3,5.052250297E1 +1.186225000E3,5.389354916E1 +1.186534000E3,5.372737626E1 +1.186796000E3,5.415645782E1 +1.187048000E3,5.441424865E1 +1.187317000E3,5.470553815E1 +1.187622000E3,5.559990781E1 +1.187913000E3,5.619293356E1 +1.188186000E3,4.869472445E1 +1.188442000E3,5.069948923E1 +1.188718000E3,5.296813397E1 +1.189051000E3,5.015003063E1 +1.189308000E3,5.110938827E1 +1.189570000E3,5.250182053E1 +1.189815000E3,5.240850659E1 +1.190062000E3,5.446862868E1 +1.190368000E3,5.270463767E1 +1.190629000E3,5.117539458E1 +1.190931000E3,5.543767536E1 +1.191207000E3,5.348622922E1 +1.191505000E3,5.112152946E1 +1.191761000E3,4.905277341E1 +1.192068000E3,5.456405848E1 +1.192487000E3,5.016322677E1 +1.192732000E3,4.971711263E1 +1.192976000E3,5.396031961E1 +1.193258000E3,5.018645567E1 +1.193531000E3,4.895586707E1 +1.193790000E3,5.442023654E1 +1.194055000E3,5.160697029E1 +1.194326000E3,4.822365107E1 +1.194605000E3,5.396633777E1 +1.194903000E3,5.031021734E1 +1.195141000E3,5.278015326E1 +1.195431000E3,4.949576105E1 +1.195801000E3,5.244682833E1 +1.196076000E3,5.508575727E1 +1.196371000E3,5.161802747E1 +1.196603000E3,5.716896987E1 +1.196858000E3,5.210002974E1 +1.197207000E3,5.483594793E1 +1.197503000E3,5.204828926E1 +1.197774000E3,5.339169315E1 +1.198054000E3,4.934781945E1 +1.198312000E3,5.918797425E1 +1.198559000E3,5.025254784E1 +1.198808000E3,5.317746302E1 +1.199152000E3,5.656715516E1 +1.199464000E3,5.448426177E1 +1.199717000E3,5.419526565E1 +1.199961000E3,5.304156540E1 +1.200219000E3,4.961182292E1 +1.200480000E3,5.259766625E1 +1.200730000E3,5.295115767E1 +1.201029000E3,5.365389524E1 +1.201288000E3,5.465027972E1 +1.201538000E3,5.131261505E1 +1.201807000E3,5.767453751E1 +1.202112000E3,5.316006082E1 +1.202485000E3,5.263333972E1 +1.202739000E3,4.966297173E1 +1.203041000E3,5.282706501E1 +1.203300000E3,4.950274237E1 +1.203539000E3,4.377779375E1 +1.203832000E3,5.274682795E1 +1.204077000E3,5.348405653E1 +1.204320000E3,5.647600154E1 +1.204615000E3,4.835002395E1 +1.204854000E3,4.440243109E1 +1.205149000E3,4.673035253E1 +1.205410000E3,4.901106802E1 +1.205666000E3,5.311033159E1 +1.205952000E3,5.020567211E1 +1.206248000E3,5.046889058E1 +1.206545000E3,6.150607502E1 +1.206779000E3,5.260331634E1 +1.207093000E3,5.183291791E1 +1.207367000E3,4.957331060E1 +1.207610000E3,5.139200370E1 +1.207857000E3,5.005726187E1 +1.208158000E3,4.979521937E1 +1.208398000E3,5.178137337E1 +1.208738000E3,4.632694184E1 +1.208994000E3,4.836915777E1 +1.209279000E3,4.869228435E1 +1.209528000E3,5.096507040E1 +1.209784000E3,4.718590489E1 +1.210053000E3,4.835967114E1 +1.210281000E3,4.725223201E1 +1.210542000E3,5.172958855E1 +1.210823000E3,5.546336112E1 +1.211051000E3,5.448218663E1 +1.211300000E3,5.371995163E1 +1.211551000E3,4.887559574E1 +1.211926000E3,4.975732945E1 +1.212205000E3,5.041543230E1 +1.212482000E3,4.863959509E1 +1.212730000E3,5.047232348E1 +1.212990000E3,4.824384094E1 +1.213232000E3,5.039377586E1 +1.213493000E3,4.517891187E1 +1.213814000E3,4.686032989E1 +1.214062000E3,4.852263494E1 +1.214337000E3,4.897277606E1 +1.214586000E3,4.662047985E1 +1.214832000E3,5.483925472E1 +1.215143000E3,5.677489998E1 +1.215372000E3,5.470688254E1 +1.215664000E3,5.408747991E1 +1.215962000E3,5.167832591E1 +1.216227000E3,5.463116224E1 +1.216504000E3,5.335564969E1 +1.216747000E3,4.832376612E1 +1.216996000E3,4.918538596E1 +1.217306000E3,5.329611015E1 +1.217618000E3,5.364881155E1 +1.217885000E3,5.087209115E1 +1.218149000E3,4.967310650E1 +1.218497000E3,4.842689624E1 +1.218801000E3,5.442588779E1 +1.219043000E3,5.338467746E1 +1.219349000E3,5.187371665E1 +1.219600000E3,4.992515182E1 +1.219883000E3,5.205809257E1 +1.220161000E3,5.374364962E1 +1.220471000E3,5.145920034E1 +1.220752000E3,5.112774200E1 +1.221009000E3,4.969936214E1 +1.221258000E3,4.906585252E1 +1.221519000E3,4.971022706E1 +1.221873000E3,5.039216656E1 +1.222125000E3,4.735018859E1 +1.222388000E3,5.025223930E1 +1.222647000E3,5.349102952E1 +1.222903000E3,5.894430216E1 +1.223210000E3,5.133834742E1 +1.223464000E3,5.378681025E1 +1.223708000E3,5.646161983E1 +1.223949000E3,5.127610878E1 +1.224189000E3,5.295211205E1 +1.224441000E3,5.074229414E1 +1.224698000E3,5.428527885E1 +1.225064000E3,6.064230054E1 +1.225333000E3,5.545461106E1 +1.225591000E3,5.085263163E1 +1.225847000E3,4.867332677E1 +1.226137000E3,4.828036819E1 +1.226394000E3,5.187031217E1 +1.226668000E3,4.691949774E1 +1.226931000E3,4.605300024E1 +1.227219000E3,4.319091646E1 +1.227493000E3,4.827268256E1 +1.227791000E3,4.873371181E1 +1.228031000E3,4.895629331E1 +1.228388000E3,4.831306026E1 +1.228651000E3,5.150144778E1 +1.228942000E3,5.210555115E1 +1.229190000E3,4.868630793E1 +1.229442000E3,5.072280558E1 +1.229686000E3,5.520857657E1 +1.229933000E3,5.597505745E1 +1.230228000E3,5.309096620E1 +1.230467000E3,5.340491117E1 +1.230765000E3,4.966814228E1 +1.231012000E3,4.811713105E1 +1.231316000E3,5.037869561E1 +1.231666000E3,4.768651081E1 +1.231948000E3,4.577834304E1 +1.232207000E3,4.455407567E1 +1.232510000E3,5.091422235E1 +1.232802000E3,4.990562511E1 +1.233047000E3,5.178152081E1 +1.233344000E3,5.312014577E1 +1.233592000E3,5.002236071E1 +1.233892000E3,5.158473192E1 +1.234173000E3,4.692863129E1 +1.234463000E3,4.643331531E1 +1.234792000E3,4.659156592E1 +1.235060000E3,4.662718910E1 +1.235313000E3,5.204491267E1 +1.235577000E3,5.165973487E1 +1.235837000E3,4.753691687E1 +1.236124000E3,5.179615379E1 +1.236401000E3,4.807409380E1 +1.236654000E3,5.474790946E1 +1.236923000E3,4.946475170E1 +1.237180000E3,4.949471083E1 +1.237426000E3,4.669168363E1 +1.237743000E3,5.529942944E1 +1.238061000E3,5.997488643E1 +1.238363000E3,5.302222406E1 +1.238611000E3,5.022506453E1 +1.238856000E3,4.864145193E1 +1.239102000E3,5.299123845E1 +1.239357000E3,4.682866815E1 +1.239657000E3,4.770894983E1 +1.239902000E3,4.813746372E1 +1.240150000E3,4.571771059E1 +1.240465000E3,5.354012247E1 +1.240765000E3,5.830707734E1 +1.241013000E3,5.483189048E1 +1.241344000E3,5.157405593E1 +1.241606000E3,5.072581437E1 +1.241868000E3,5.137979859E1 +1.242133000E3,4.849261303E1 +1.242396000E3,5.556107710E1 +1.242656000E3,4.958779284E1 +1.242959000E3,5.301548021E1 +1.243232000E3,5.475621292E1 +1.243501000E3,5.660789219E1 +1.243755000E3,5.350018163E1 +1.244010000E3,5.415674835E1 +1.244349000E3,5.699979568E1 +1.244717000E3,5.660044844E1 +1.245015000E3,5.808533709E1 +1.245259000E3,5.881859790E1 +1.245558000E3,5.728882886E1 +1.245808000E3,6.044308225E1 +1.246079000E3,5.893900513E1 +1.246326000E3,5.279872381E1 +1.246637000E3,5.769196864E1 +1.246935000E3,5.963088900E1 +1.247181000E3,5.367341836E1 +1.247508000E3,4.963645506E1 +1.247848000E3,5.265770489E1 +1.248115000E3,5.355743381E1 +1.248359000E3,4.891015342E1 +1.248659000E3,4.819353582E1 +1.248902000E3,4.966403220E1 +1.249199000E3,4.977495696E1 +1.249449000E3,5.715212626E1 +1.249708000E3,5.458337902E1 +1.249983000E3,4.910795823E1 +1.250282000E3,5.184902745E1 +1.250527000E3,5.416053460E1 +1.250777000E3,5.320773170E1 +1.251084000E3,5.422274265E1 +1.251342000E3,5.429456299E1 +1.251602000E3,5.910733722E1 +1.251866000E3,5.226490816E1 +1.252178000E3,5.191466859E1 +1.252452000E3,5.143339371E1 +1.252681000E3,5.066846779E1 +1.252975000E3,4.928639562E1 +1.253256000E3,4.916995298E1 +1.253528000E3,5.115941927E1 +1.253816000E3,4.850268402E1 +1.254063000E3,5.682920937E1 +1.254418000E3,5.583927157E1 +1.254700000E3,5.243405901E1 +1.254947000E3,5.411796563E1 +1.255215000E3,5.538314624E1 +1.255487000E3,5.447026824E1 +1.255748000E3,5.115232974E1 +1.256046000E3,5.273125350E1 +1.256281000E3,5.501639825E1 +1.256559000E3,5.470702619E1 +1.256867000E3,5.330168249E1 +1.257116000E3,5.680033697E1 +1.257361000E3,5.088137081E1 +1.257690000E3,4.771044205E1 +1.257935000E3,5.556188303E1 +1.258189000E3,5.821474305E1 +1.258460000E3,5.913083175E1 +1.258757000E3,5.624840253E1 +1.259001000E3,5.575040009E1 +1.259294000E3,5.295140054E1 +1.259581000E3,5.547885633E1 +1.259831000E3,5.659634167E1 +1.260084000E3,5.552607398E1 +1.260378000E3,5.399987136E1 +1.260676000E3,5.741946227E1 +1.260997000E3,5.622829253E1 +1.261272000E3,5.638519080E1 +1.261569000E3,5.222122782E1 +1.261810000E3,5.168558616E1 +1.262055000E3,5.937417075E1 +1.262351000E3,5.419990938E1 +1.262597000E3,5.469291977E1 +1.262893000E3,5.501007253E1 +1.263142000E3,5.356116387E1 +1.263421000E3,5.643294047E1 +1.263644000E3,5.627927149E1 +1.263964000E3,5.547827797E1 +1.264255000E3,5.434029164E1 +1.264552000E3,5.355134450E1 +1.264791000E3,5.268456483E1 +1.265090000E3,5.304298782E1 +1.265342000E3,5.292557941E1 +1.265637000E3,5.267823535E1 +1.265885000E3,5.076475521E1 +1.266186000E3,5.470463807E1 +1.266480000E3,5.369531663E1 +1.266727000E3,5.321314382E1 +1.267074000E3,5.430022488E1 +1.267386000E3,5.498366079E1 +1.267650000E3,5.373765381E1 +1.267926000E3,5.631680810E1 +1.268156000E3,5.314598601E1 +1.268459000E3,5.446778700E1 +1.268718000E3,5.461487175E1 +1.269029000E3,4.723979401E1 +1.269322000E3,5.050485841E1 +1.269602000E3,5.263446338E1 +1.269914000E3,5.195043172E1 +1.270180000E3,5.361139844E1 +1.270542000E3,5.127785292E1 +1.270796000E3,5.111084292E1 +1.271061000E3,5.030178225E1 +1.271329000E3,4.978955516E1 +1.271616000E3,5.398913319E1 +1.271862000E3,5.537806166E1 +1.272155000E3,5.301545016E1 +1.272407000E3,5.450597504E1 +1.272651000E3,5.090153644E1 +1.272906000E3,5.335437953E1 +1.273148000E3,4.673762491E1 +1.273392000E3,5.062539325E1 +1.273710000E3,5.110756444E1 +1.273960000E3,5.466659884E1 +1.274217000E3,5.158121780E1 +1.274511000E3,5.575560452E1 +1.274759000E3,5.536976579E1 +1.275054000E3,5.425250328E1 +1.275298000E3,5.448034930E1 +1.275544000E3,5.185016662E1 +1.275828000E3,5.206320816E1 +1.276126000E3,5.118466074E1 +1.276376000E3,4.943928704E1 +1.276707000E3,5.090592254E1 +1.276972000E3,5.767487174E1 +1.277251000E3,5.481331862E1 +1.277544000E3,5.385854096E1 +1.277810000E3,5.179333541E1 +1.278097000E3,5.161992279E1 +1.278344000E3,5.248655937E1 +1.278657000E3,5.064236034E1 +1.278927000E3,4.915402835E1 +1.279197000E3,5.321156971E1 +1.279471000E3,5.438812541E1 +1.279734000E3,5.482588411E1 +1.280065000E3,5.157318203E1 +1.280296000E3,5.173449962E1 +1.280546000E3,5.465953878E1 +1.280843000E3,5.457680704E1 +1.281077000E3,5.562152963E1 +1.281325000E3,5.460406982E1 +1.281570000E3,5.232421403E1 +1.281870000E3,5.207576719E1 +1.282135000E3,4.968186040E1 +1.282378000E3,5.237915347E1 +1.282628000E3,4.745539727E1 +1.282877000E3,5.255989147E1 +1.283195000E3,5.301690658E1 +1.283467000E3,5.283539029E1 +1.283717000E3,5.083105477E1 +1.283978000E3,4.559322742E1 +1.284235000E3,4.934435088E1 +1.284538000E3,5.265118466E1 +1.284812000E3,5.302155906E1 +1.285045000E3,5.294725202E1 +1.285352000E3,5.129236762E1 +1.285646000E3,5.402858483E1 +1.285898000E3,5.434527110E1 +1.286189000E3,5.525625388E1 +1.286515000E3,5.653073998E1 +1.286819000E3,5.704731902E1 +1.287101000E3,5.310035962E1 +1.287387000E3,5.474072190E1 +1.287649000E3,5.496979063E1 +1.287925000E3,5.528941101E1 +1.288193000E3,5.394330028E1 +1.288492000E3,4.829171318E1 +1.288740000E3,5.076324605E1 +1.289004000E3,4.673843249E1 +1.289280000E3,5.345749476E1 +1.289584000E3,4.955238815E1 +1.289923000E3,5.268555513E1 +1.290206000E3,5.092762320E1 +1.290445000E3,5.180504716E1 +1.290779000E3,5.421996562E1 +1.291081000E3,5.408565728E1 +1.291322000E3,5.466627749E1 +1.291622000E3,5.247549140E1 +1.291870000E3,5.438915347E1 +1.292125000E3,5.526358440E1 +1.292428000E3,5.407200655E1 +1.292723000E3,5.160593410E1 +1.293035000E3,5.231731426E1 +1.293342000E3,5.126765219E1 +1.293626000E3,4.802016847E1 +1.293922000E3,5.428603515E1 +1.294199000E3,5.305841291E1 +1.294451000E3,5.676250586E1 +1.294738000E3,5.921971496E1 +1.295005000E3,5.812051865E1 +1.295266000E3,5.671365947E1 +1.295512000E3,5.389157640E1 +1.295809000E3,5.417883641E1 +1.296087000E3,5.169085532E1 +1.296408000E3,5.027989141E1 +1.296704000E3,5.801273246E1 +1.296951000E3,5.777618357E1 +1.297241000E3,5.598217178E1 +1.297547000E3,5.590671112E1 +1.297806000E3,6.302454961E1 +1.298073000E3,5.716944646E1 +1.298330000E3,5.693666329E1 +1.298591000E3,5.374930006E1 +1.298851000E3,5.170089530E1 +1.299100000E3,6.243829367E1 +1.299340000E3,5.522680485E1 +1.299673000E3,5.451288060E1 +1.299933000E3,5.720613947E1 +1.300193000E3,5.131457759E1 +1.300510000E3,5.593393786E1 +1.300810000E3,5.344184529E1 +1.301099000E3,5.432320381E1 +1.301355000E3,5.294046944E1 +1.301602000E3,5.330691828E1 +1.301911000E3,4.899471979E1 +1.302175000E3,5.054546621E1 +1.302420000E3,4.914598102E1 +1.302706000E3,5.757950400E1 +1.303045000E3,5.798603958E1 +1.303343000E3,5.685278830E1 +1.303584000E3,5.272645619E1 +1.303869000E3,5.576083132E1 +1.304169000E3,5.311655900E1 +1.304414000E3,5.297304035E1 +1.304724000E3,6.119658997E1 +1.304998000E3,5.921259630E1 +1.305275000E3,5.974785927E1 +1.305567000E3,5.829108198E1 +1.305799000E3,5.656256791E1 +1.306151000E3,5.263150293E1 +1.306475000E3,5.719715846E1 +1.306754000E3,5.746813017E1 +1.307020000E3,6.063794361E1 +1.307320000E3,5.945639283E1 +1.307570000E3,5.898495898E1 +1.307856000E3,5.345744690E1 +1.308127000E3,5.882374416E1 +1.308390000E3,5.704844280E1 +1.308660000E3,6.230218860E1 +1.308982000E3,5.794977886E1 +1.309252000E3,5.609480230E1 +1.309620000E3,5.439173238E1 +1.309924000E3,5.804315704E1 +1.310253000E3,5.898090143E1 +1.310510000E3,5.933785859E1 +1.310826000E3,5.484966867E1 +1.311077000E3,5.841635068E1 +1.311358000E3,5.536029260E1 +1.311601000E3,5.555523834E1 +1.311895000E3,5.637714479E1 +1.312195000E3,5.253312652E1 +1.312445000E3,5.377927694E1 +1.312696000E3,5.757954833E1 +1.313038000E3,5.500733438E1 +1.313282000E3,5.367385274E1 +1.313558000E3,5.610715122E1 +1.313797000E3,5.528556803E1 +1.314063000E3,5.884958532E1 +1.314412000E3,5.458036035E1 +1.314671000E3,5.765344335E1 +1.314945000E3,5.139756723E1 +1.315223000E3,5.546002517E1 +1.315503000E3,5.608276603E1 +1.315733000E3,5.719791479E1 +1.315986000E3,5.413888898E1 +1.316329000E3,5.789500166E1 +1.316579000E3,5.404086097E1 +1.316819000E3,6.021843554E1 +1.317067000E3,5.929690830E1 +1.317365000E3,6.066063258E1 +1.317666000E3,5.465341745E1 +1.317917000E3,5.115712079E1 +1.318169000E3,4.986479689E1 +1.318470000E3,5.351977371E1 +1.318716000E3,5.614277654E1 +1.318987000E3,5.824140620E1 +1.319280000E3,5.863858703E1 +1.319646000E3,5.908977231E1 +1.319902000E3,5.867594430E1 +1.320142000E3,5.256185028E1 +1.320379000E3,5.916248935E1 +1.320672000E3,5.829134786E1 +1.320910000E3,5.729121950E1 +1.321203000E3,5.817253701E1 +1.321434000E3,5.958327052E1 +1.321726000E3,6.109571062E1 +1.321963000E3,6.309400740E1 +1.322263000E3,6.381431561E1 +1.322586000E3,6.124594205E1 +1.322839000E3,6.120886427E1 +1.323128000E3,5.624496406E1 +1.323377000E3,6.205845751E1 +1.323676000E3,6.248705287E1 +1.323968000E3,6.259357777E1 +1.324217000E3,6.168308921E1 +1.324496000E3,6.128297543E1 +1.324731000E3,5.975404370E1 +1.325024000E3,6.147148959E1 +1.325261000E3,6.101142333E1 +1.325573000E3,5.682124874E1 +1.325854000E3,5.869490284E1 +1.326149000E3,5.646663249E1 +1.326392000E3,5.662110608E1 +1.326643000E3,5.067702480E1 +1.326984000E3,5.759763927E1 +1.327264000E3,5.613584630E1 +1.327489000E3,5.826097161E1 +1.327735000E3,5.843702691E1 +1.328012000E3,5.352317094E1 +1.328253000E3,5.737674501E1 +1.328545000E3,5.736811408E1 +1.328911000E3,5.477233671E1 +1.329158000E3,5.481436604E1 +1.329403000E3,4.974322484E1 +1.329645000E3,5.490077996E1 +1.329890000E3,4.870505425E1 +1.330144000E3,4.955972956E1 +1.330428000E3,5.470042727E1 +1.330734000E3,5.618884112E1 +1.331026000E3,5.238151215E1 +1.331265000E3,5.344428978E1 +1.331515000E3,5.051963956E1 +1.331772000E3,5.068574448E1 +1.332120000E3,5.754233113E1 +1.332409000E3,5.498832674E1 +1.332740000E3,5.245036701E1 +1.333034000E3,5.885934606E1 +1.333286000E3,5.644915657E1 +1.333540000E3,5.532779852E1 +1.333784000E3,5.694511409E1 +1.334028000E3,5.553937724E1 +1.334302000E3,5.308286554E1 +1.334615000E3,5.140154995E1 +1.334876000E3,5.045296543E1 +1.335187000E3,5.631993217E1 +1.335451000E3,5.435091016E1 +1.335722000E3,5.624357652E1 +1.335986000E3,5.791043400E1 +1.336271000E3,5.847603086E1 +1.336545000E3,5.757219882E1 +1.336794000E3,6.070042624E1 +1.337072000E3,5.247827017E1 +1.337340000E3,5.208145921E1 +1.337609000E3,6.026756153E1 +1.337870000E3,6.012826199E1 +1.338134000E3,5.465450317E1 +1.338408000E3,5.768658418E1 +1.338755000E3,5.542991210E1 +1.339019000E3,5.279974580E1 +1.339289000E3,4.966927449E1 +1.339556000E3,4.563713389E1 +1.339804000E3,4.961972315E1 +1.340056000E3,5.287436972E1 +1.340316000E3,5.318950925E1 +1.340586000E3,5.037908496E1 +1.340881000E3,5.345184090E1 +1.341116000E3,5.016784238E1 +1.341407000E3,5.799295151E1 +1.341694000E3,5.875659808E1 +1.342051000E3,5.666657228E1 +1.342345000E3,5.241270038E1 +1.342638000E3,5.754780266E1 +1.342875000E3,5.669750570E1 +1.343177000E3,5.541629106E1 +1.343432000E3,5.556249818E1 +1.343726000E3,5.603182587E1 +1.343969000E3,5.961525777E1 +1.344257000E3,5.915223521E1 +1.344498000E3,5.820677933E1 +1.344777000E3,5.815031326E1 +1.345094000E3,5.733094423E1 +1.345363000E3,5.538469317E1 +1.345622000E3,6.270903439E1 +1.345877000E3,5.551461514E1 +1.346148000E3,5.750063996E1 +1.346395000E3,5.473739655E1 +1.346676000E3,5.131350753E1 +1.346958000E3,5.072615719E1 +1.347258000E3,4.882711207E1 +1.347518000E3,5.273988371E1 +1.347784000E3,6.269937361E1 +1.348040000E3,6.058958657E1 +1.348391000E3,5.894445662E1 +1.348716000E3,5.683213923E1 +1.348984000E3,5.875140523E1 +1.349236000E3,5.263650529E1 +1.349491000E3,4.630287352E1 +1.349847000E3,5.742006494E1 +1.350115000E3,6.486179330E1 +1.350358000E3,5.963871460E1 +1.350612000E3,5.220281373E1 +1.350868000E3,5.825229613E1 +1.351125000E3,5.822075100E1 +1.351374000E3,5.487419692E1 +1.351666000E3,5.461361208E1 +1.351934000E3,5.384511910E1 +1.352185000E3,5.782109838E1 +1.352440000E3,5.156901690E1 +1.352688000E3,5.262530942E1 +1.352990000E3,5.827406705E1 +1.353265000E3,6.164230870E1 +1.353493000E3,5.939319367E1 +1.353769000E3,5.491407227E1 +1.353989000E3,5.363390940E1 +1.354236000E3,5.108497673E1 +1.354516000E3,6.129017752E1 +1.354836000E3,5.594784457E1 +1.355095000E3,5.172378417E1 +1.355422000E3,5.975901259E1 +1.355685000E3,5.720857994E1 +1.355941000E3,5.600667557E1 +1.356197000E3,5.471836828E1 +1.356478000E3,5.319452565E1 +1.356745000E3,5.296912594E1 +1.357013000E3,5.811625635E1 +1.357280000E3,5.430511038E1 +1.357577000E3,5.277700001E1 +1.357824000E3,5.616769978E1 +1.358135000E3,5.406396803E1 +1.358401000E3,4.910300122E1 +1.358643000E3,5.077236009E1 +1.358892000E3,5.530877446E1 +1.359206000E3,5.787482939E1 +1.359485000E3,5.846197249E1 +1.359760000E3,6.103303991E1 +1.360055000E3,6.092009186E1 +1.360296000E3,5.979156049E1 +1.360590000E3,6.049263298E1 +1.360828000E3,5.895545308E1 +1.361114000E3,5.611946421E1 +1.361473000E3,5.480295831E1 +1.361726000E3,5.397626184E1 +1.361972000E3,5.443193027E1 +1.362314000E3,5.572591927E1 +1.362560000E3,5.224616115E1 +1.362808000E3,5.244486023E1 +1.363061000E3,5.179430466E1 +1.363307000E3,5.228822629E1 +1.363555000E3,5.248152719E1 +1.363850000E3,5.310816898E1 +1.364115000E3,5.586433987E1 +1.364397000E3,5.735023043E1 +1.364703000E3,6.002405491E1 +1.364950000E3,5.692273216E1 +1.365192000E3,5.941823705E1 +1.365459000E3,5.316793659E1 +1.365709000E3,5.869878442E1 +1.365953000E3,5.756526572E1 +1.366216000E3,5.687574379E1 +1.366491000E3,5.232478004E1 +1.366744000E3,5.424491879E1 +1.367001000E3,5.235481979E1 +1.367305000E3,5.164783122E1 +1.367588000E3,4.924997634E1 +1.367934000E3,4.924339558E1 +1.368196000E3,5.793398832E1 +1.368473000E3,5.529211657E1 +1.368719000E3,5.120874356E1 +1.368963000E3,5.470742612E1 +1.369285000E3,5.560989240E1 +1.369528000E3,5.197646059E1 +1.369822000E3,5.152328490E1 +1.370111000E3,5.791930576E1 +1.370416000E3,5.368811562E1 +1.370672000E3,5.769124019E1 +1.370919000E3,5.333549653E1 +1.371292000E3,5.847056292E1 +1.371551000E3,5.642894477E1 +1.371803000E3,5.817537921E1 +1.372074000E3,5.885584750E1 +1.372335000E3,5.395474736E1 +1.372602000E3,5.211537518E1 +1.372880000E3,4.924374923E1 +1.373126000E3,4.882665291E1 +1.373379000E3,5.483140316E1 +1.373636000E3,5.380197532E1 +1.373915000E3,5.629967483E1 +1.374251000E3,5.773524892E1 +1.374636000E3,6.271253195E1 +1.374894000E3,5.870587143E1 +1.375125000E3,5.496954916E1 +1.375369000E3,5.621931219E1 +1.375641000E3,5.700323462E1 +1.375912000E3,5.808968856E1 +1.376161000E3,5.697587873E1 +1.376437000E3,5.739415600E1 +1.376687000E3,5.874614285E1 +1.376941000E3,5.855325473E1 +1.377252000E3,5.287324040E1 +1.377495000E3,5.331405656E1 +1.377862000E3,5.163612814E1 +1.378109000E3,6.003152631E1 +1.378372000E3,6.448039849E1 +1.378641000E3,6.226927373E1 +1.378912000E3,6.355904277E1 +1.379208000E3,6.121718755E1 +1.379463000E3,6.371699462E1 +1.379738000E3,5.774542440E1 +1.380076000E3,5.579766677E1 +1.380318000E3,5.520595979E1 +1.380614000E3,5.395000262E1 +1.380855000E3,5.263752401E1 +1.381221000E3,5.267030150E1 +1.381492000E3,5.304251562E1 +1.381793000E3,4.959737221E1 +1.382100000E3,5.549829026E1 +1.382347000E3,5.821584994E1 +1.382642000E3,5.861199323E1 +1.382905000E3,5.256382895E1 +1.383164000E3,5.491877459E1 +1.383443000E3,5.644995893E1 +1.383702000E3,5.411249990E1 +1.383954000E3,5.324738213E1 +1.384305000E3,5.625052210E1 +1.384532000E3,6.070474662E1 +1.384789000E3,5.237062704E1 +1.385074000E3,5.442107865E1 +1.385361000E3,6.017483878E1 +1.385605000E3,6.237555822E1 +1.385869000E3,5.605951782E1 +1.386126000E3,6.511151133E1 +1.386382000E3,5.571785683E1 +1.386696000E3,5.398201636E1 +1.386954000E3,5.323734283E1 +1.387264000E3,5.635686029E1 +1.387623000E3,5.701357512E1 +1.387874000E3,5.632095063E1 +1.388187000E3,5.288354031E1 +1.388477000E3,5.152350906E1 +1.388761000E3,5.130627857E1 +1.388982000E3,4.918436870E1 +1.389239000E3,5.567775637E1 +1.389545000E3,5.465238648E1 +1.389786000E3,5.003079725E1 +1.390027000E3,5.504486936E1 +1.390282000E3,5.947272344E1 +1.390539000E3,6.106137952E1 +1.390892000E3,5.985290475E1 +1.391203000E3,5.500825546E1 +1.391507000E3,5.157102239E1 +1.391806000E3,5.517662265E1 +1.392108000E3,5.349243854E1 +1.392411000E3,5.386652866E1 +1.392707000E3,5.258839734E1 +1.392973000E3,5.376638351E1 +1.393221000E3,5.619475880E1 +1.393480000E3,5.846509931E1 +1.393767000E3,6.504346680E1 +1.394122000E3,5.865804348E1 +1.394392000E3,5.055217311E1 +1.394673000E3,4.837306759E1 +1.394931000E3,5.564689750E1 +1.395193000E3,5.416088817E1 +1.395489000E3,5.481584764E1 +1.395781000E3,5.356143065E1 +1.396078000E3,5.074158934E1 +1.396313000E3,5.177896206E1 +1.396618000E3,5.670327312E1 +1.396914000E3,6.043149132E1 +1.397246000E3,5.875453471E1 +1.397559000E3,5.725772305E1 +1.397842000E3,5.610169288E1 +1.398092000E3,6.098127982E1 +1.398354000E3,5.385330985E1 +1.398611000E3,5.345613584E1 +1.398873000E3,6.183897473E1 +1.399135000E3,5.898294985E1 +1.399399000E3,5.644599073E1 +1.399662000E3,6.288338842E1 +1.399923000E3,5.844786233E1 +1.400178000E3,6.145207907E1 +1.400438000E3,5.797678971E1 +1.400786000E3,5.805590691E1 +1.401082000E3,5.956739883E1 +1.401323000E3,5.537900496E1 +1.401618000E3,5.084213917E1 +1.401871000E3,4.807017206E1 +1.402118000E3,5.545233073E1 +1.402411000E3,5.516036366E1 +1.402644000E3,5.413431379E1 +1.402920000E3,5.388857626E1 +1.403209000E3,5.292068844E1 +1.403479000E3,5.775211983E1 +1.403718000E3,5.117484548E1 +1.404045000E3,5.912447648E1 +1.404295000E3,5.591921957E1 +1.404568000E3,5.565028551E1 +1.404828000E3,5.013398992E1 +1.405122000E3,5.465164253E1 +1.405364000E3,5.305211462E1 +1.405620000E3,5.755171154E1 +1.405929000E3,6.007655449E1 +1.406174000E3,5.899920387E1 +1.406463000E3,5.970773629E1 +1.406720000E3,5.770443308E1 +1.407009000E3,5.521297881E1 +1.407407000E3,5.604277064E1 +1.407677000E3,5.646208540E1 +1.407969000E3,4.906112006E1 +1.408239000E3,5.193830101E1 +1.408558000E3,4.835599484E1 +1.408830000E3,4.864558507E1 +1.409087000E3,5.566138381E1 +1.409349000E3,5.240816417E1 +1.409604000E3,4.366169359E1 +1.409843000E3,4.924613485E1 +1.410167000E3,5.289541091E1 +1.410462000E3,5.429333459E1 +1.410857000E3,5.232803186E1 +1.411115000E3,5.279391543E1 +1.411388000E3,5.698112108E1 +1.411689000E3,4.954635028E1 +1.411940000E3,5.347151392E1 +1.412202000E3,5.431542928E1 +1.412461000E3,5.708654506E1 +1.412712000E3,5.999867781E1 +1.412972000E3,5.836713300E1 +1.413243000E3,5.662529411E1 +1.413547000E3,5.760118844E1 +1.413790000E3,5.272334048E1 +1.414155000E3,5.585703000E1 +1.414407000E3,5.277217169E1 +1.414666000E3,5.575617717E1 +1.414970000E3,5.588142009E1 +1.415263000E3,5.043609445E1 +1.415519000E3,5.366091219E1 +1.415818000E3,6.729065738E1 +1.416082000E3,5.454700058E1 +1.416357000E3,5.542836481E1 +1.416608000E3,6.150002805E1 +1.416870000E3,5.918799699E1 +1.417164000E3,5.739551304E1 +1.417548000E3,5.312046747E1 +1.417864000E3,5.735989692E1 +1.418111000E3,5.463708503E1 +1.418368000E3,5.616594485E1 +1.418622000E3,5.674613857E1 +1.418880000E3,5.393284238E1 +1.419178000E3,5.477989298E1 +1.419414000E3,5.673628135E1 +1.419692000E3,5.246670124E1 +1.419935000E3,5.929492524E1 +1.420173000E3,5.718550468E1 +1.420417000E3,5.597503360E1 +1.420745000E3,5.209811810E1 +1.421016000E3,5.108820023E1 +1.421271000E3,5.704928631E1 +1.421524000E3,5.534619134E1 +1.421787000E3,5.298830069E1 +1.422048000E3,5.357926773E1 +1.422324000E3,5.150193558E1 +1.422590000E3,5.236977243E1 +1.422860000E3,5.598534631E1 +1.423111000E3,5.804712890E1 +1.423360000E3,5.584477369E1 +1.423617000E3,6.166819052E1 +1.423956000E3,6.217862533E1 +1.424239000E3,6.474885215E1 +1.424493000E3,6.561094566E1 +1.424771000E3,6.624921272E1 +1.425013000E3,6.269332683E1 +1.425310000E3,6.427501900E1 +1.425550000E3,6.406421996E1 +1.425806000E3,6.561696377E1 +1.426124000E3,5.757984813E1 +1.426392000E3,6.467113265E1 +1.426661000E3,6.110360998E1 +1.426971000E3,6.257935575E1 +1.427325000E3,6.059948571E1 +1.427600000E3,6.060080967E1 +1.427858000E3,6.129065918E1 +1.428157000E3,6.869907238E1 +1.428403000E3,6.216021300E1 +1.428668000E3,6.028715826E1 +1.428917000E3,5.215970407E1 +1.429175000E3,5.348756082E1 +1.429445000E3,5.866879342E1 +1.429775000E3,5.422412762E1 +1.430077000E3,5.967912654E1 +1.430370000E3,6.053958419E1 +1.430696000E3,5.642153628E1 +1.430959000E3,5.797803369E1 +1.431217000E3,5.265853131E1 +1.431545000E3,6.085541328E1 +1.431825000E3,6.579757863E1 +1.432095000E3,6.783858113E1 +1.432356000E3,6.680245969E1 +1.432609000E3,5.699539434E1 +1.432887000E3,5.495476405E1 +1.433146000E3,5.431336982E1 +1.433405000E3,5.468573805E1 +1.433768000E3,6.415525931E1 +1.434037000E3,5.996195649E1 +1.434305000E3,5.880144898E1 +1.434536000E3,5.062803370E1 +1.434794000E3,4.838886892E1 +1.435059000E3,4.852598648E1 +1.435348000E3,5.424758091E1 +1.435611000E3,6.028120001E1 +1.435845000E3,5.860165153E1 +1.436098000E3,5.820116177E1 +1.436348000E3,5.458976108E1 +1.436603000E3,5.748661459E1 +1.436983000E3,5.071157707E1 +1.437230000E3,5.187454119E1 +1.437505000E3,5.690962542E1 +1.437744000E3,5.898297949E1 +1.438006000E3,6.083548120E1 +1.438278000E3,4.929702369E1 +1.438556000E3,5.094464024E1 +1.438857000E3,5.451803318E1 +1.439157000E3,4.851675588E1 +1.439427000E3,4.781325912E1 +1.439724000E3,4.919544886E1 +1.439968000E3,4.662525194E1 +1.440374000E3,4.187537091E1 +1.440620000E3,5.083424523E1 +1.440895000E3,4.476479772E1 +1.441179000E3,5.236126827E1 +1.441495000E3,4.954212438E1 +1.441772000E3,5.444261950E1 +1.442048000E3,5.023278537E1 +1.442273000E3,4.640707667E1 +1.442557000E3,5.088583460E1 +1.442822000E3,5.041471443E1 +1.443067000E3,4.940152653E1 +1.443315000E3,4.834999124E1 +1.443550000E3,5.084173145E1 +1.443802000E3,4.674944421E1 +1.444118000E3,5.005548854E1 +1.444412000E3,4.880222753E1 +1.444695000E3,4.829349493E1 +1.444948000E3,4.815408858E1 +1.445231000E3,4.968297573E1 +1.445471000E3,5.263069989E1 +1.445763000E3,4.570389774E1 +1.446062000E3,4.674284816E1 +1.446364000E3,5.179136771E1 +1.446637000E3,5.007894257E1 +1.446884000E3,5.001285233E1 +1.447102000E3,5.063641057E1 +1.447373000E3,4.164946286E1 +1.447601000E3,3.981108666E1 +1.447894000E3,4.316358072E1 +1.448132000E3,5.465701871E1 +1.448431000E3,4.615144027E1 +1.448672000E3,4.353154230E1 +1.448965000E3,5.208221965E1 +1.449200000E3,5.530439334E1 +1.449496000E3,4.996075498E1 +1.449729000E3,5.218941020E1 +1.450060000E3,4.888890123E1 +1.450335000E3,5.030971329E1 +1.450629000E3,5.012870067E1 +1.450899000E3,4.847297804E1 +1.451151000E3,4.759762696E1 +1.451454000E3,4.978926902E1 +1.451751000E3,4.930919072E1 +1.452001000E3,5.004861581E1 +1.452285000E3,5.051309266E1 +1.452566000E3,4.810890055E1 +1.452826000E3,4.654354865E1 +1.453069000E3,4.761425190E1 +1.453369000E3,4.589508435E1 +1.453616000E3,4.954922405E1 +1.453886000E3,4.065983258E1 +1.454197000E3,4.220647307E1 +1.454513000E3,4.858310714E1 +1.454789000E3,5.196405012E1 +1.455012000E3,5.467685341E1 +1.455262000E3,5.753332593E1 +1.455513000E3,4.707036048E1 +1.455859000E3,3.942826471E1 +1.456237000E3,5.170062203E1 +1.456495000E3,6.022707597E1 +1.456743000E3,5.524301158E1 +1.456990000E3,5.482834451E1 +1.457257000E3,4.917995293E1 +1.457590000E3,4.739340640E1 +1.457831000E3,4.842051754E1 +1.458073000E3,6.166669432E1 +1.458329000E3,5.427876580E1 +1.458617000E3,4.896037674E1 +1.458889000E3,4.346397471E1 +1.459122000E3,4.481546196E1 +1.459424000E3,5.149740630E1 +1.459726000E3,4.614214660E1 +1.459975000E3,4.567227587E1 +1.460237000E3,5.348774305E1 +1.460488000E3,5.617792493E1 +1.460730000E3,5.122937085E1 +1.460971000E3,5.712815616E1 +1.461266000E3,5.592815325E1 +1.461504000E3,5.208026338E1 +1.461798000E3,5.368936290E1 +1.462033000E3,5.424431898E1 +1.462332000E3,5.229538114E1 +1.462686000E3,5.012562607E1 +1.462943000E3,5.517893002E1 +1.463292000E3,5.544440679E1 +1.463574000E3,5.195225561E1 +1.463851000E3,5.582804772E1 +1.464133000E3,5.163717454E1 +1.464392000E3,5.056978371E1 +1.464653000E3,5.085736348E1 +1.464931000E3,5.111025552E1 +1.465171000E3,5.008163028E1 +1.465468000E3,5.204681239E1 +1.465721000E3,4.873162615E1 +1.466070000E3,5.052420662E1 +1.466365000E3,5.115431116E1 +1.466626000E3,5.008089225E1 +1.466902000E3,5.455907242E1 +1.467123000E3,5.881328519E1 +1.467422000E3,5.654049662E1 +1.467665000E3,6.208900398E1 +1.467911000E3,5.573620080E1 +1.468210000E3,5.034178452E1 +1.468461000E3,4.644884091E1 +1.468716000E3,4.489036287E1 +1.469021000E3,4.555962209E1 +1.469437000E3,4.956164087E1 +1.469733000E3,5.014140659E1 +1.469995000E3,5.025508197E1 +1.470298000E3,4.976482928E1 +1.470552000E3,4.666552600E1 +1.470801000E3,5.164800320E1 +1.471107000E3,4.748865751E1 +1.471358000E3,5.068455306E1 +1.471623000E3,5.380657492E1 +1.471874000E3,4.918332364E1 +1.472155000E3,4.974368594E1 +1.472539000E3,5.519550202E1 +1.472795000E3,5.119649457E1 +1.473056000E3,5.406344748E1 +1.473370000E3,5.554928156E1 +1.473655000E3,5.458007948E1 +1.473895000E3,5.519923804E1 +1.474152000E3,5.580016483E1 +1.474437000E3,5.718813696E1 +1.474685000E3,5.734393611E1 +1.474960000E3,5.879862387E1 +1.475221000E3,5.602300215E1 +1.475474000E3,5.025640835E1 +1.475826000E3,5.543439402E1 +1.476071000E3,5.232164352E1 +1.476323000E3,5.898115961E1 +1.476584000E3,6.066467981E1 +1.476821000E3,5.071984472E1 +1.477123000E3,5.740447565E1 +1.477365000E3,5.959782608E1 +1.477662000E3,5.958620190E1 +1.477906000E3,5.753388342E1 +1.478144000E3,5.506848886E1 +1.478455000E3,5.769430513E1 +1.478723000E3,5.629679592E1 +1.478987000E3,5.649495967E1 +1.479262000E3,5.787253729E1 +1.479512000E3,5.216150167E1 +1.479813000E3,4.948302212E1 +1.480088000E3,5.080056078E1 +1.480342000E3,4.734041467E1 +1.480601000E3,4.440736689E1 +1.480866000E3,5.120725270E1 +1.481166000E3,5.053254929E1 +1.481466000E3,5.274685420E1 +1.481724000E3,5.071521067E1 +1.481973000E3,5.225995741E1 +1.482300000E3,5.133897759E1 +1.482575000E3,5.007250383E1 +1.482845000E3,5.042400131E1 +1.483101000E3,5.258901014E1 +1.483408000E3,5.618504625E1 +1.483668000E3,5.503349900E1 +1.483933000E3,4.974702245E1 +1.484194000E3,5.170781389E1 +1.484440000E3,5.072340799E1 +1.484707000E3,5.947536199E1 +1.485018000E3,5.467515596E1 +1.485306000E3,6.085614245E1 +1.485656000E3,5.990152864E1 +1.485935000E3,5.602550586E1 +1.486168000E3,5.561766537E1 +1.486422000E3,5.350876804E1 +1.486701000E3,5.699979875E1 +1.486960000E3,5.177464585E1 +1.487207000E3,5.249766501E1 +1.487486000E3,5.285366750E1 +1.487751000E3,5.316768095E1 +1.488002000E3,4.876639606E1 +1.488262000E3,5.179834313E1 +1.488516000E3,4.991892364E1 +1.488812000E3,5.156353661E1 +1.489125000E3,5.341434219E1 +1.489400000E3,5.426211096E1 +1.489675000E3,4.699672779E1 +1.489958000E3,5.361914521E1 +1.490219000E3,5.605827819E1 +1.490490000E3,5.089547448E1 +1.490772000E3,5.163564337E1 +1.491061000E3,5.841576784E1 +1.491309000E3,5.524417730E1 +1.491589000E3,5.450558122E1 +1.491873000E3,5.581032480E1 +1.492194000E3,5.802352567E1 +1.492448000E3,4.962366630E1 +1.492810000E3,5.873656508E1 +1.493058000E3,5.690804947E1 +1.493359000E3,5.262261274E1 +1.493674000E3,5.584655342E1 +1.493919000E3,5.542283425E1 +1.494163000E3,5.373884310E1 +1.494412000E3,5.084083433E1 +1.494678000E3,4.964027690E1 +1.494956000E3,5.125570040E1 +1.495204000E3,5.194895191E1 +1.495526000E3,4.961412488E1 +1.495784000E3,4.972405818E1 +1.496036000E3,4.777083448E1 +1.496283000E3,5.231556692E1 +1.496593000E3,5.894066851E1 +1.496842000E3,6.007182772E1 +1.497086000E3,6.003234807E1 +1.497358000E3,5.170627362E1 +1.497682000E3,5.564688341E1 +1.497937000E3,5.459086103E1 +1.498234000E3,5.654462748E1 +1.498530000E3,5.643601391E1 +1.498887000E3,5.593732695E1 +1.499182000E3,5.279859883E1 +1.499469000E3,5.063056157E1 +1.499723000E3,4.846330641E1 +1.499972000E3,5.696559719E1 +1.500236000E3,5.806291630E1 +1.500555000E3,5.485435177E1 +1.500851000E3,5.386376671E1 +1.501120000E3,5.529102258E1 +1.501400000E3,5.058415032E1 +1.501675000E3,5.420960743E1 +1.501928000E3,4.962388553E1 +1.502263000E3,5.167692375E1 +1.502567000E3,5.072695334E1 +1.502878000E3,5.319678523E1 +1.503119000E3,5.961199300E1 +1.503369000E3,5.299728366E1 +1.503631000E3,5.369404965E1 +1.503941000E3,5.426817134E1 +1.504209000E3,5.369336762E1 +1.504462000E3,5.246626497E1 +1.504724000E3,5.358557871E1 +1.505015000E3,4.957781391E1 +1.505279000E3,5.117668163E1 +1.505699000E3,5.216401891E1 +1.505963000E3,5.011348657E1 +1.506261000E3,5.259055540E1 +1.506507000E3,4.579432510E1 +1.506795000E3,4.877099475E1 +1.507032000E3,4.679595596E1 +1.507314000E3,5.136222565E1 +1.507549000E3,5.267101191E1 +1.507792000E3,5.244999525E1 +1.508074000E3,5.180561005E1 +1.508391000E3,5.030990700E1 +1.508607000E3,5.167226321E1 +1.508859000E3,5.218207738E1 +1.509151000E3,5.317725961E1 +1.509397000E3,5.318899610E1 +1.509689000E3,4.978257152E1 +1.509934000E3,5.032443800E1 +1.510228000E3,4.777293014E1 +1.510466000E3,4.646316587E1 +1.510767000E3,5.646850943E1 +1.511001000E3,5.638889819E1 +1.511293000E3,5.773758842E1 +1.511610000E3,5.580372922E1 +1.511900000E3,5.517502050E1 +1.512151000E3,5.684013484E1 +1.512393000E3,5.407249321E1 +1.512652000E3,5.725430710E1 +1.512902000E3,5.755876004E1 +1.513148000E3,5.492786930E1 +1.513404000E3,5.665177401E1 +1.513705000E3,5.675683028E1 +1.513957000E3,5.845897420E1 +1.514258000E3,5.334537973E1 +1.514488000E3,5.035361876E1 +1.514812000E3,4.886526824E1 +1.515059000E3,5.555156669E1 +1.515357000E3,5.401240780E1 +1.515600000E3,5.191330713E1 +1.515873000E3,5.158089375E1 +1.516102000E3,5.397456219E1 +1.516410000E3,5.205317520E1 +1.516679000E3,5.689433829E1 +1.516971000E3,5.397466306E1 +1.517230000E3,5.553699481E1 +1.517504000E3,5.550832571E1 +1.517763000E3,5.490604036E1 +1.518130000E3,5.129555301E1 +1.518403000E3,5.478479772E1 +1.518670000E3,5.687403653E1 +1.518921000E3,5.464295853E1 +1.519177000E3,5.713561839E1 +1.519461000E3,5.306473622E1 +1.519745000E3,5.320579073E1 +1.520002000E3,5.309385307E1 +1.520258000E3,5.058967996E1 +1.520552000E3,5.470724085E1 +1.520793000E3,5.303104936E1 +1.521156000E3,5.432496893E1 +1.521453000E3,5.594215604E1 +1.521721000E3,5.308545736E1 +1.521969000E3,5.327888421E1 +1.522220000E3,5.030915333E1 +1.522490000E3,5.230098434E1 +1.522776000E3,4.743827766E1 +1.523026000E3,5.464211349E1 +1.523327000E3,5.322537523E1 +1.523581000E3,5.154569729E1 +1.523826000E3,5.335950152E1 +1.524133000E3,5.482016506E1 +1.524417000E3,5.825411535E1 +1.524853000E3,5.879893849E1 +1.525179000E3,5.728744863E1 +1.525433000E3,5.737571640E1 +1.525696000E3,5.681107869E1 +1.525950000E3,5.695921586E1 +1.526210000E3,5.455429607E1 +1.526487000E3,5.808007225E1 +1.526729000E3,5.500512440E1 +1.527042000E3,5.476260812E1 +1.527339000E3,5.849962899E1 +1.527579000E3,5.719021529E1 +1.527910000E3,5.422226824E1 +1.528160000E3,5.266147572E1 +1.528411000E3,5.030747323E1 +1.528675000E3,5.057502492E1 +1.528920000E3,5.365292462E1 +1.529175000E3,5.444435151E1 +1.529423000E3,5.586906556E1 +1.529732000E3,5.808239082E1 +1.530030000E3,5.492304678E1 +1.530283000E3,5.727734117E1 +1.530542000E3,5.518682809E1 +1.530805000E3,5.838179726E1 +1.531133000E3,5.619103982E1 +1.531448000E3,5.705771680E1 +1.531738000E3,5.605732573E1 +1.531987000E3,5.497746164E1 +1.532293000E3,5.570350387E1 +1.532602000E3,5.687942595E1 +1.532873000E3,5.590365459E1 +1.533132000E3,5.379832162E1 +1.533387000E3,5.951317374E1 +1.533654000E3,5.728034638E1 +1.533915000E3,5.755019099E1 +1.534163000E3,5.625336618E1 +1.534512000E3,5.560455999E1 +1.534783000E3,5.186395468E1 +1.535086000E3,6.018952062E1 +1.535379000E3,5.360739703E1 +1.535619000E3,5.637744941E1 +1.535916000E3,5.710534601E1 +1.536153000E3,5.751101039E1 +1.536449000E3,5.888699469E1 +1.536688000E3,5.900809640E1 +1.536983000E3,5.539354346E1 +1.537218000E3,5.212761926E1 +1.537514000E3,6.113968309E1 +1.537773000E3,5.789795306E1 +1.538038000E3,6.065119472E1 +1.538356000E3,5.715251587E1 +1.538607000E3,5.728294892E1 +1.538911000E3,5.939537878E1 +1.539175000E3,5.879010449E1 +1.539417000E3,6.007594674E1 +1.539661000E3,5.983742076E1 +1.539908000E3,6.299497704E1 +1.540182000E3,6.042347696E1 +1.540457000E3,5.844914903E1 +1.540758000E3,5.775362746E1 +1.541037000E3,5.216165265E1 +1.541334000E3,5.255584969E1 +1.541593000E3,5.278098471E1 +1.541846000E3,5.581770981E1 +1.542092000E3,5.736301867E1 +1.542389000E3,5.733951694E1 +1.542623000E3,5.674705381E1 +1.542880000E3,5.506043774E1 +1.543125000E3,5.404728252E1 +1.543453000E3,5.428884791E1 +1.543732000E3,5.547580162E1 +1.544085000E3,5.471747417E1 +1.544346000E3,5.496243571E1 +1.544613000E3,5.288395526E1 +1.544860000E3,5.036194227E1 +1.545111000E3,5.124283852E1 +1.545413000E3,5.731432515E1 +1.545687000E3,5.663908688E1 +1.545955000E3,5.741659811E1 +1.546253000E3,5.084604561E1 +1.546502000E3,5.163330463E1 +1.546772000E3,4.777378739E1 +1.547025000E3,5.200725426E1 +1.547353000E3,5.049690945E1 +1.547625000E3,5.284766124E1 +1.547924000E3,5.396462244E1 +1.548148000E3,5.375524192E1 +1.548403000E3,5.670544075E1 +1.548716000E3,5.332369727E1 +1.548963000E3,5.544219871E1 +1.549238000E3,5.323430806E1 +1.549471000E3,5.180674965E1 +1.549727000E3,5.329467652E1 +1.550023000E3,5.080742485E1 +1.550310000E3,5.026906170E1 +1.550639000E3,5.582908231E1 +1.550905000E3,5.331150300E1 +1.551172000E3,5.186910180E1 +1.551471000E3,5.624561668E1 +1.551739000E3,5.555744845E1 +1.552012000E3,5.944044312E1 +1.552264000E3,6.002272858E1 +1.552531000E3,5.816546804E1 +1.552850000E3,5.936846960E1 +1.553097000E3,5.514794057E1 +1.553401000E3,5.160130424E1 +1.553757000E3,5.107783990E1 +1.554023000E3,5.871375450E1 +1.554276000E3,5.617325190E1 +1.554544000E3,5.736189521E1 +1.554800000E3,5.317828333E1 +1.555051000E3,5.715279916E1 +1.555321000E3,5.726931658E1 +1.555563000E3,5.567771069E1 +1.555823000E3,5.156101336E1 +1.556126000E3,5.688446569E1 +1.556378000E3,6.074118939E1 +1.556642000E3,5.974958265E1 +1.556918000E3,5.702757711E1 +1.557208000E3,5.874442787E1 +1.557457000E3,5.795683904E1 +1.557722000E3,6.039916355E1 +1.558025000E3,5.662755924E1 +1.558320000E3,5.332514547E1 +1.558595000E3,6.059700286E1 +1.558850000E3,5.775207016E1 +1.559098000E3,6.106988435E1 +1.559349000E3,6.039494527E1 +1.559644000E3,5.672405799E1 +1.559889000E3,5.814375710E1 +1.560135000E3,6.159401746E1 +1.560480000E3,5.397583636E1 +1.560770000E3,5.291692280E1 +1.561026000E3,5.439035965E1 +1.561320000E3,5.553984968E1 +1.561619000E3,5.808332247E1 +1.561927000E3,5.744100555E1 +1.562191000E3,5.636250023E1 +1.562451000E3,6.055150308E1 +1.562703000E3,5.624161562E1 +1.562979000E3,5.401048000E1 +1.563233000E3,5.588901558E1 +1.563595000E3,6.020828902E1 +1.563855000E3,6.586197618E1 +1.564143000E3,5.744692826E1 +1.564421000E3,5.175273280E1 +1.564681000E3,5.584828423E1 +1.564939000E3,5.622472521E1 +1.565190000E3,5.419184381E1 +1.565447000E3,4.818775863E1 +1.565701000E3,5.443344746E1 +1.565956000E3,4.960344337E1 +1.566224000E3,6.289868185E1 +1.566469000E3,6.499026885E1 +1.566794000E3,6.277031329E1 +1.567086000E3,5.336636778E1 +1.567405000E3,5.867761918E1 +1.567644000E3,5.135518394E1 +1.567909000E3,5.665720126E1 +1.568204000E3,5.915910399E1 +1.568455000E3,5.687790668E1 +1.568730000E3,5.815647569E1 +1.568976000E3,5.595761669E1 +1.569238000E3,5.367288589E1 +1.569491000E3,4.954593185E1 +1.569752000E3,5.199120702E1 +1.570099000E3,5.857172858E1 +1.570354000E3,5.533510860E1 +1.570614000E3,5.615291914E1 +1.570871000E3,4.816531300E1 +1.571136000E3,4.597509459E1 +1.571387000E3,5.454256971E1 +1.571722000E3,5.262076426E1 +1.572010000E3,5.108681545E1 +1.572285000E3,5.269091247E1 +1.572547000E3,4.898785412E1 +1.572807000E3,4.867008841E1 +1.573066000E3,5.306545801E1 +1.573313000E3,5.092331160E1 +1.573694000E3,5.549117670E1 +1.574009000E3,5.304099104E1 +1.574279000E3,5.377011563E1 +1.574520000E3,5.244694975E1 +1.574770000E3,5.542353961E1 +1.575031000E3,5.327330735E1 +1.575319000E3,5.123065406E1 +1.575617000E3,5.429517947E1 +1.575867000E3,5.443507599E1 +1.576132000E3,5.273613947E1 +1.576382000E3,5.717979407E1 +1.576705000E3,5.184816589E1 +1.576955000E3,4.851208329E1 +1.577250000E3,4.976440939E1 +1.577493000E3,5.236737582E1 +1.577737000E3,5.414723297E1 +1.577998000E3,5.490706774E1 +1.578342000E3,5.591011545E1 +1.578650000E3,5.689754115E1 +1.578906000E3,5.680987850E1 +1.579148000E3,5.379415708E1 +1.579394000E3,5.844713665E1 +1.579644000E3,4.927798375E1 +1.580006000E3,5.263100090E1 +1.580294000E3,5.410513055E1 +1.580548000E3,5.541047194E1 +1.580801000E3,5.058665778E1 +1.581070000E3,5.191468462E1 +1.581349000E3,4.623838572E1 +1.581601000E3,4.883886927E1 +1.581851000E3,4.951159763E1 +1.582152000E3,5.372806241E1 +1.582461000E3,4.077427406E1 +1.582742000E3,4.089897224E1 +1.582967000E3,4.661834708E1 +1.583330000E3,4.498181641E1 +1.583574000E3,4.413204165E1 +1.583835000E3,4.830731952E1 +1.584102000E3,5.133890730E1 +1.584385000E3,5.327819620E1 +1.584689000E3,5.148788947E1 +1.584935000E3,5.259351261E1 +1.585217000E3,5.210912674E1 +1.585449000E3,5.375523399E1 +1.585710000E3,5.030792675E1 +1.585957000E3,5.116594607E1 +1.586271000E3,5.729332409E1 +1.586601000E3,5.372439258E1 +1.586868000E3,5.283683191E1 +1.587111000E3,5.261490358E1 +1.587371000E3,5.394382083E1 +1.587617000E3,5.362104804E1 +1.587861000E3,5.192909002E1 +1.588111000E3,5.534291684E1 +1.588356000E3,5.529045875E1 +1.588616000E3,5.723903943E1 +1.588878000E3,5.769467674E1 +1.589116000E3,5.686991669E1 +1.589367000E3,5.472851050E1 +1.589709000E3,5.509501284E1 +1.589971000E3,6.218794924E1 +1.590276000E3,5.544714813E1 +1.590522000E3,5.587492513E1 +1.590770000E3,6.310127100E1 +1.591031000E3,6.016601681E1 +1.591331000E3,5.868635044E1 +1.591588000E3,5.739907262E1 +1.591847000E3,5.500154159E1 +1.592105000E3,5.382353142E1 +1.592358000E3,5.235465349E1 +1.592660000E3,5.432444683E1 +1.592979000E3,5.583837344E1 +1.593280000E3,5.890777444E1 +1.593531000E3,6.247008348E1 +1.593777000E3,5.524440051E1 +1.594082000E3,6.039849382E1 +1.594376000E3,5.779880973E1 +1.594616000E3,6.006977904E1 +1.594916000E3,6.157791897E1 +1.595158000E3,5.727348505E1 +1.595456000E3,6.219777130E1 +1.595702000E3,6.333776727E1 +1.596011000E3,6.315243887E1 +1.596287000E3,5.622487117E1 +1.596582000E3,4.999384026E1 +1.596838000E3,6.052096287E1 +1.597136000E3,5.730636753E1 +1.597383000E3,5.672770046E1 +1.597632000E3,5.282894107E1 +1.597943000E3,5.609826115E1 +1.598240000E3,5.950608691E1 +1.598483000E3,5.262580449E1 +1.598777000E3,5.638403375E1 +1.599039000E3,5.695994656E1 +1.599354000E3,5.595638462E1 +1.599677000E3,5.456948793E1 +1.599955000E3,5.641745933E1 +1.600254000E3,5.373490010E1 +1.600541000E3,5.613295480E1 +1.600824000E3,5.295628543E1 +1.601071000E3,5.036371368E1 +1.601313000E3,5.734560753E1 +1.601585000E3,5.869799540E1 +1.601832000E3,5.689867309E1 +1.602079000E3,5.521901034E1 +1.602376000E3,5.958743796E1 +1.602630000E3,5.697555749E1 +1.602881000E3,6.067520996E1 +1.603136000E3,6.296730837E1 +1.603381000E3,6.302345663E1 +1.603674000E3,5.614231839E1 +1.603920000E3,5.471880748E1 +1.604179000E3,6.025548138E1 +1.604432000E3,5.848975602E1 +1.604677000E3,6.051353275E1 +1.604988000E3,6.061163824E1 +1.605287000E3,5.127173554E1 +1.605535000E3,5.271948405E1 +1.605890000E3,5.457177629E1 +1.606143000E3,5.047420148E1 +1.606392000E3,5.197178768E1 +1.606684000E3,5.635777628E1 +1.606927000E3,5.691931577E1 +1.607165000E3,5.135114371E1 +1.607440000E3,5.173034620E1 +1.607734000E3,5.786109434E1 +1.607974000E3,5.620528212E1 +1.608236000E3,5.432552885E1 +1.608507000E3,5.036034087E1 +1.608763000E3,4.872303481E1 +1.609123000E3,5.516764205E1 +1.609377000E3,5.867465981E1 +1.609624000E3,5.634077767E1 +1.609869000E3,5.153316916E1 +1.610150000E3,5.212022412E1 +1.610428000E3,5.727395868E1 +1.610681000E3,5.443759521E1 +1.610944000E3,5.599199613E1 +1.611242000E3,5.709063131E1 +1.611495000E3,5.747461955E1 +1.611762000E3,5.445378087E1 +1.612040000E3,5.178206799E1 +1.612294000E3,5.347146008E1 +1.612548000E3,5.695533984E1 +1.612791000E3,5.852885666E1 +1.613050000E3,5.349710519E1 +1.613354000E3,5.482274130E1 +1.613598000E3,5.580201302E1 +1.613898000E3,5.533013655E1 +1.614151000E3,5.307302798E1 +1.614404000E3,5.034267096E1 +1.614651000E3,5.096368681E1 +1.614959000E3,5.358615730E1 +1.615202000E3,5.402822959E1 +1.615565000E3,5.173226008E1 +1.615815000E3,5.317238447E1 +1.616120000E3,5.490271856E1 +1.616406000E3,5.760350961E1 +1.616712000E3,5.516631401E1 +1.616950000E3,5.344247717E1 +1.617197000E3,5.105574764E1 +1.617480000E3,5.297874749E1 +1.617726000E3,5.181083735E1 +1.617978000E3,5.504462581E1 +1.618236000E3,5.652623382E1 +1.618484000E3,5.850281135E1 +1.618804000E3,5.207268405E1 +1.619061000E3,4.595989093E1 +1.619309000E3,5.832875112E1 +1.619574000E3,5.691639889E1 +1.619831000E3,5.277897330E1 +1.620092000E3,5.634285556E1 +1.620390000E3,5.782897026E1 +1.620660000E3,6.167326244E1 +1.620905000E3,5.736569246E1 +1.621145000E3,6.422841213E1 +1.621400000E3,6.037316593E1 +1.621649000E3,5.869946609E1 +1.622005000E3,6.007663283E1 +1.622308000E3,5.750286676E1 +1.622551000E3,5.315958033E1 +1.622849000E3,5.996646537E1 +1.623085000E3,6.310656156E1 +1.623382000E3,6.410911411E1 +1.623620000E3,6.559322950E1 +1.623914000E3,6.191537215E1 +1.624148000E3,6.509401862E1 +1.624441000E3,6.149444047E1 +1.624676000E3,5.887830140E1 +1.624914000E3,5.333395699E1 +1.625242000E3,5.080509527E1 +1.625531000E3,5.208999136E1 +1.625827000E3,4.936268455E1 +1.626072000E3,4.620940228E1 +1.626384000E3,4.812346411E1 +1.626678000E3,5.508818133E1 +1.626931000E3,5.929414420E1 +1.627193000E3,5.798382987E1 +1.627446000E3,5.695027340E1 +1.627690000E3,6.200547811E1 +1.627940000E3,5.895921781E1 +1.628278000E3,5.832121877E1 +1.628595000E3,5.727506493E1 +1.628914000E3,5.676841787E1 +1.629164000E3,5.904549933E1 +1.629453000E3,6.079247221E1 +1.629705000E3,5.978532207E1 +1.629973000E3,6.204876077E1 +1.630223000E3,6.278691878E1 +1.630527000E3,5.775584326E1 +1.630780000E3,5.715423799E1 +1.631076000E3,5.993810238E1 +1.631416000E3,5.945816984E1 +1.631690000E3,5.911038375E1 +1.631989000E3,6.401318161E1 +1.632251000E3,6.288325429E1 +1.632577000E3,6.142114348E1 +1.632857000E3,6.027735545E1 +1.633125000E3,6.058800698E1 +1.633410000E3,6.197295377E1 +1.633713000E3,5.649410931E1 +1.633983000E3,5.349526422E1 +1.634267000E3,5.160473432E1 +1.634550000E3,5.471426263E1 +1.634881000E3,5.381566790E1 +1.635145000E3,5.592472168E1 +1.635394000E3,5.502963456E1 +1.635636000E3,5.458091777E1 +1.635914000E3,5.361113418E1 +1.636211000E3,5.972112366E1 +1.636510000E3,6.134956919E1 +1.636770000E3,6.291498703E1 +1.637018000E3,6.051799303E1 +1.637272000E3,5.800319143E1 +1.637535000E3,6.099184952E1 +1.637791000E3,6.192072936E1 +1.638191000E3,5.592689657E1 +1.638462000E3,5.015193522E1 +1.638759000E3,5.662906295E1 +1.638997000E3,6.189212385E1 +1.639312000E3,5.656112303E1 +1.639618000E3,5.827187766E1 +1.639922000E3,5.894515280E1 +1.640188000E3,5.379936676E1 +1.640446000E3,5.498271927E1 +1.640705000E3,5.883708769E1 +1.641003000E3,5.515786146E1 +1.641329000E3,5.323855564E1 +1.641593000E3,5.000482182E1 +1.641876000E3,5.182077324E1 +1.642101000E3,5.319082569E1 +1.642344000E3,6.611850928E1 +1.642626000E3,5.190424983E1 +1.642867000E3,5.081734830E1 +1.643118000E3,5.711045841E1 +1.643458000E3,5.520016906E1 +1.643723000E3,5.247062228E1 +1.643997000E3,5.309157546E1 +1.644256000E3,5.339769460E1 +1.644621000E3,5.982216134E1 +1.644883000E3,5.915424673E1 +1.645133000E3,5.849263499E1 +1.645426000E3,5.826666974E1 +1.645723000E3,5.673329902E1 +1.645972000E3,5.580417722E1 +1.646244000E3,5.457004449E1 +1.646473000E3,5.835958867E1 +1.646716000E3,5.599398637E1 +1.646958000E3,5.928075116E1 +1.647232000E3,5.394053714E1 +1.647507000E3,5.853879118E1 +1.647858000E3,5.674494648E1 +1.648113000E3,5.640074652E1 +1.648414000E3,5.694867796E1 +1.648656000E3,5.573466688E1 +1.648962000E3,5.556104957E1 +1.649254000E3,5.770712773E1 +1.649548000E3,5.765349227E1 +1.649790000E3,5.583875333E1 +1.650054000E3,6.321152276E1 +1.650306000E3,5.966047080E1 +1.650600000E3,5.502015578E1 +1.650872000E3,5.066616477E1 +1.651172000E3,5.442335496E1 +1.651440000E3,5.956947456E1 +1.651736000E3,5.798320450E1 +1.651979000E3,5.739040713E1 +1.652228000E3,5.803662120E1 +1.652491000E3,6.146613872E1 +1.652750000E3,5.929116619E1 +1.653021000E3,5.936282359E1 +1.653288000E3,5.853226920E1 +1.653570000E3,5.954415072E1 +1.653872000E3,5.749576278E1 +1.654250000E3,5.567111200E1 +1.654518000E3,6.059415807E1 +1.654812000E3,5.855300274E1 +1.655081000E3,5.797601107E1 +1.655350000E3,6.029475669E1 +1.655647000E3,5.264118678E1 +1.655893000E3,5.715075800E1 +1.656153000E3,5.787679223E1 +1.656407000E3,6.038334743E1 +1.656655000E3,6.038245752E1 +1.656912000E3,5.475945603E1 +1.657171000E3,5.661674174E1 +1.657473000E3,5.618877186E1 +1.657717000E3,5.712918740E1 +1.657972000E3,5.834783502E1 +1.658283000E3,6.198115012E1 +1.658526000E3,5.639977894E1 +1.658788000E3,5.416850689E1 +1.659089000E3,5.679686188E1 +1.659335000E3,5.697270686E1 +1.659619000E3,5.371836804E1 +1.659873000E3,6.082252986E1 +1.660120000E3,6.285201132E1 +1.660416000E3,6.088574857E1 +1.660728000E3,6.109109391E1 +1.661004000E3,5.861240224E1 +1.661283000E3,6.123850168E1 +1.661519000E3,5.849447684E1 +1.661821000E3,5.472352136E1 +1.662065000E3,5.502625911E1 +1.662312000E3,5.606436387E1 +1.662565000E3,5.546236927E1 +1.662845000E3,6.075823181E1 +1.663075000E3,5.951357638E1 +1.663350000E3,5.956681026E1 +1.663575000E3,5.780116333E1 +1.663928000E3,6.184122024E1 +1.664178000E3,5.626291699E1 +1.664419000E3,5.635545931E1 +1.664671000E3,5.487242490E1 +1.664936000E3,5.392872477E1 +1.665237000E3,5.658170902E1 +1.665476000E3,5.449322435E1 +1.665752000E3,5.111063749E1 +1.665997000E3,5.288359358E1 +1.666249000E3,5.825102048E1 +1.666508000E3,6.087585373E1 +1.666750000E3,5.822210598E1 +1.667110000E3,6.320270923E1 +1.667355000E3,5.563170163E1 +1.667628000E3,5.240635194E1 +1.667875000E3,5.485055122E1 +1.668144000E3,5.590209292E1 +1.668402000E3,5.750031923E1 +1.668648000E3,5.301598344E1 +1.668896000E3,5.208077776E1 +1.669157000E3,5.024112467E1 +1.669414000E3,5.530220423E1 +1.669710000E3,5.585178295E1 +1.669955000E3,5.443268015E1 +1.670292000E3,5.292974908E1 +1.670566000E3,5.501741168E1 +1.670818000E3,5.190433464E1 +1.671077000E3,5.602388651E1 +1.671384000E3,5.384205522E1 +1.671688000E3,5.355394771E1 +1.671956000E3,4.896600257E1 +1.672212000E3,4.457728928E1 +1.672483000E3,5.407780485E1 +1.672726000E3,5.808535163E1 +1.672991000E3,5.497589856E1 +1.673269000E3,5.816061182E1 +1.673625000E3,5.457220472E1 +1.673896000E3,5.852786772E1 +1.674165000E3,5.615855966E1 +1.674439000E3,5.901141794E1 +1.674702000E3,5.821771493E1 +1.675040000E3,5.533746886E1 +1.675330000E3,5.469332456E1 +1.675631000E3,5.895976057E1 +1.675867000E3,5.565047570E1 +1.676161000E3,5.342216333E1 +1.676431000E3,5.339304237E1 +1.676716000E3,5.196130631E1 +1.677075000E3,5.500129023E1 +1.677346000E3,5.649474234E1 +1.677614000E3,5.620691351E1 +1.677867000E3,5.756400488E1 +1.678112000E3,5.571225073E1 +1.678362000E3,6.171466353E1 +1.678655000E3,5.523245256E1 +1.678909000E3,5.780473196E1 +1.679167000E3,5.918101801E1 +1.679536000E3,5.449831587E1 +1.679788000E3,5.278747036E1 +1.680072000E3,5.502423006E1 +1.680392000E3,5.603218813E1 +1.680667000E3,5.681691969E1 +1.680917000E3,5.574952817E1 +1.681227000E3,5.747793831E1 +1.681510000E3,5.831554727E1 +1.681811000E3,5.823344802E1 +1.682073000E3,5.677197169E1 +1.682402000E3,5.423243511E1 +1.682746000E3,5.568639423E1 +1.683007000E3,5.601571559E1 +1.683297000E3,5.788588795E1 +1.683563000E3,5.178162942E1 +1.683805000E3,5.244727762E1 +1.684102000E3,5.504021082E1 +1.684342000E3,5.312145782E1 +1.684637000E3,5.266466104E1 +1.684875000E3,5.430143327E1 +1.685171000E3,5.731848010E1 +1.685409000E3,5.314967575E1 +1.685703000E3,5.210480680E1 +1.685940000E3,5.447962472E1 +1.686242000E3,5.671930258E1 +1.686480000E3,5.298653153E1 +1.686837000E3,5.390672385E1 +1.687083000E3,5.256535993E1 +1.687387000E3,5.295433262E1 +1.687686000E3,4.693434793E1 +1.687930000E3,5.264001548E1 +1.688191000E3,4.696703102E1 +1.688514000E3,5.290693761E1 +1.688768000E3,5.572289252E1 +1.689025000E3,5.629476293E1 +1.689331000E3,5.221395629E1 +1.689585000E3,5.553268928E1 +1.689905000E3,5.392885939E1 +1.690136000E3,5.613018872E1 +1.690432000E3,5.323144022E1 +1.690690000E3,5.426457319E1 +1.690988000E3,5.869511223E1 +1.691244000E3,5.724931575E1 +1.691548000E3,5.702890727E1 +1.691819000E3,5.957894946E1 +1.692068000E3,5.833323285E1 +1.692367000E3,5.920896731E1 +1.692598000E3,5.809066040E1 +1.692847000E3,5.683194919E1 +1.693218000E3,5.880411413E1 +1.693536000E3,5.430005356E1 +1.693836000E3,5.347827494E1 +1.694082000E3,5.139526617E1 +1.694323000E3,6.486669482E1 +1.694607000E3,5.827670564E1 +1.694879000E3,5.749070135E1 +1.695112000E3,5.439297467E1 +1.695418000E3,5.591879208E1 +1.695720000E3,5.984156108E1 +1.695978000E3,5.763450389E1 +1.696238000E3,5.535113951E1 +1.696577000E3,5.468640858E1 +1.696840000E3,5.145216534E1 +1.697142000E3,5.633820526E1 +1.697434000E3,5.961813260E1 +1.697672000E3,5.761348305E1 +1.697970000E3,5.587832748E1 +1.698213000E3,5.615239979E1 +1.698514000E3,6.142159571E1 +1.698744000E3,5.868747140E1 +1.699038000E3,5.639074769E1 +1.699277000E3,5.843791784E1 +1.699602000E3,5.580904726E1 +1.699849000E3,5.188032815E1 +1.700148000E3,6.050592844E1 +1.700415000E3,5.851925341E1 +1.700742000E3,5.754370303E1 +1.700996000E3,5.792652906E1 +1.701265000E3,5.809754284E1 +1.701543000E3,5.435013872E1 +1.701827000E3,5.364293620E1 +1.702095000E3,5.742174876E1 +1.702342000E3,5.921232761E1 +1.702597000E3,5.246613397E1 +1.702852000E3,5.865178399E1 +1.703188000E3,6.209648540E1 +1.703456000E3,5.783126524E1 +1.703723000E3,6.129722089E1 +1.704021000E3,6.159059582E1 +1.704258000E3,6.290365934E1 +1.704500000E3,5.899658178E1 +1.704744000E3,5.570772177E1 +1.705020000E3,6.042975914E1 +1.705281000E3,6.063911519E1 +1.705578000E3,5.667741437E1 +1.705818000E3,5.616948640E1 +1.706065000E3,5.809228765E1 +1.706440000E3,6.194892333E1 +1.706707000E3,5.510896653E1 +1.706968000E3,5.648771637E1 +1.707226000E3,5.451026369E1 +1.707530000E3,5.655237570E1 +1.707813000E3,6.342687376E1 +1.708096000E3,5.687609223E1 +1.708345000E3,5.784030597E1 +1.708587000E3,5.696931166E1 +1.708832000E3,5.826055047E1 +1.709133000E3,6.171963981E1 +1.709444000E3,6.289993620E1 +1.709785000E3,6.196750111E1 +1.710095000E3,6.021872673E1 +1.710401000E3,5.493999514E1 +1.710645000E3,5.748920917E1 +1.710951000E3,5.990748875E1 +1.711204000E3,5.995493625E1 +1.711504000E3,5.608393688E1 +1.711807000E3,6.225697969E1 +1.712052000E3,6.005399346E1 +1.712297000E3,6.276583246E1 +1.712594000E3,6.409669700E1 +1.712952000E3,5.846223798E1 +1.713249000E3,6.222377893E1 +1.713511000E3,6.179119431E1 +1.713770000E3,6.687160955E1 +1.714020000E3,6.224215114E1 +1.714281000E3,6.460780580E1 +1.714608000E3,6.323149402E1 +1.714900000E3,5.890183616E1 +1.715139000E3,6.173404899E1 +1.715438000E3,6.193562982E1 +1.715674000E3,6.231645929E1 +1.715912000E3,5.798536661E1 +1.716293000E3,5.569607438E1 +1.716537000E3,6.131866955E1 +1.716790000E3,5.896584959E1 +1.717096000E3,5.693976131E1 +1.717346000E3,5.531403594E1 +1.717631000E3,5.794989861E1 +1.717933000E3,5.594899441E1 +1.718204000E3,5.601359132E1 +1.718501000E3,5.861037671E1 +1.718741000E3,6.432265266E1 +1.719043000E3,6.182586376E1 +1.719355000E3,6.076827417E1 +1.719645000E3,5.634225228E1 +1.719943000E3,5.935070169E1 +1.720188000E3,5.856877062E1 +1.720486000E3,5.761843709E1 +1.720741000E3,5.935030376E1 +1.720985000E3,5.413194972E1 +1.721289000E3,5.939733818E1 +1.721553000E3,5.617827250E1 +1.721847000E3,5.807085988E1 +1.722091000E3,5.877044817E1 +1.722445000E3,6.593854232E1 +1.722681000E3,6.027114564E1 +1.722973000E3,5.866411762E1 +1.723271000E3,5.588604319E1 +1.723508000E3,5.958751798E1 +1.723800000E3,6.077290351E1 +1.724039000E3,5.722905231E1 +1.724338000E3,5.619905124E1 +1.724576000E3,5.628809107E1 +1.724876000E3,5.560357878E1 +1.725168000E3,5.447509555E1 +1.725542000E3,5.278892866E1 +1.725841000E3,4.816211457E1 +1.726139000E3,4.622333411E1 +1.726399000E3,4.728231882E1 +1.726691000E3,5.101510224E1 +1.726947000E3,4.725933617E1 +1.727273000E3,5.333398449E1 +1.727569000E3,5.518583989E1 +1.727808000E3,5.719998093E1 +1.728061000E3,5.375072532E1 +1.728352000E3,5.631849408E1 +1.728644000E3,5.232994659E1 +1.729024000E3,5.045911420E1 +1.729295000E3,4.931808913E1 +1.729541000E3,4.866846016E1 +1.729788000E3,5.127644661E1 +1.730054000E3,4.769951033E1 +1.730296000E3,5.553885299E1 +1.730573000E3,5.629080236E1 +1.730816000E3,5.218818952E1 +1.731119000E3,5.112756333E1 +1.731379000E3,5.524890032E1 +1.731688000E3,5.530134621E1 +1.731949000E3,5.451831728E1 +1.732288000E3,5.380962689E1 +1.732589000E3,5.754684503E1 +1.732833000E3,5.184401682E1 +1.733102000E3,5.011373730E1 +1.733369000E3,5.541779655E1 +1.733647000E3,5.983699601E1 +1.733886000E3,6.131428317E1 +1.734163000E3,6.052345820E1 +1.734405000E3,5.852692054E1 +1.734659000E3,5.861191265E1 +1.734933000E3,5.957936529E1 +1.735219000E3,5.639739849E1 +1.735540000E3,5.207917019E1 +1.735832000E3,4.548490451E1 +1.736112000E3,5.219897691E1 +1.736384000E3,5.618314188E1 +1.736684000E3,5.720418785E1 +1.736946000E3,5.895068629E1 +1.737213000E3,5.652216932E1 +1.737468000E3,5.796687034E1 +1.737738000E3,5.591197017E1 +1.737996000E3,5.493985473E1 +1.738236000E3,5.752137274E1 +1.738586000E3,6.041563952E1 +1.738921000E3,6.199530447E1 +1.739167000E3,5.310800091E1 +1.739430000E3,5.600574849E1 +1.739683000E3,6.494981167E1 +1.739952000E3,6.157046745E1 +1.740293000E3,6.002681302E1 +1.740611000E3,5.943541790E1 +1.740910000E3,5.731619793E1 +1.741197000E3,5.885751119E1 +1.741508000E3,5.719237093E1 +1.741767000E3,5.958897825E1 +1.742034000E3,5.543499582E1 +1.742424000E3,5.632783570E1 +1.742688000E3,5.565042743E1 +1.742946000E3,5.622883854E1 +1.743204000E3,6.327777019E1 +1.743456000E3,5.663098185E1 +1.743721000E3,5.729384715E1 +1.743966000E3,6.200582057E1 +1.744273000E3,5.107652622E1 +1.744505000E3,5.491520459E1 +1.744752000E3,5.181266373E1 +1.745004000E3,5.014115745E1 +1.745297000E3,5.338585031E1 +1.745690000E3,5.654477286E1 +1.745966000E3,5.517036116E1 +1.746219000E3,5.200430375E1 +1.746475000E3,5.963355448E1 +1.746732000E3,5.854837006E1 +1.747002000E3,5.571277949E1 +1.747293000E3,5.825116458E1 +1.747522000E3,5.673248340E1 +1.747772000E3,5.683320783E1 +1.748035000E3,5.224053713E1 +1.748289000E3,5.713452273E1 +1.748568000E3,5.539076360E1 +1.748961000E3,6.015893340E1 +1.749211000E3,5.710921188E1 +1.749460000E3,6.114476082E1 +1.749715000E3,5.648052368E1 +1.749961000E3,5.897720288E1 +1.750207000E3,5.525435431E1 +1.750521000E3,5.447453139E1 +1.750765000E3,5.883968686E1 +1.751015000E3,5.450160052E1 +1.751290000E3,5.405183560E1 +1.751522000E3,5.501343440E1 +1.751848000E3,5.586635599E1 +1.752096000E3,5.631573217E1 +1.752372000E3,5.960964241E1 +1.752637000E3,5.320710483E1 +1.752941000E3,5.848434869E1 +1.753209000E3,5.619196315E1 +1.753510000E3,5.692291103E1 +1.753774000E3,5.505374149E1 +1.754051000E3,5.721759821E1 +1.754315000E3,5.539152446E1 +1.754625000E3,5.632890174E1 +1.754919000E3,5.918851802E1 +1.755262000E3,5.807294381E1 +1.755529000E3,5.748451885E1 +1.755827000E3,6.055251826E1 +1.756067000E3,6.208050524E1 +1.756367000E3,5.991655048E1 +1.756607000E3,6.073519941E1 +1.756900000E3,5.774998130E1 +1.757144000E3,5.751173009E1 +1.757417000E3,5.299288378E1 +1.757700000E3,5.913293772E1 +1.758005000E3,5.732040664E1 +1.758269000E3,6.221202462E1 +1.758585000E3,6.285457626E1 +1.758834000E3,5.870613535E1 +1.759137000E3,5.533279687E1 +1.759391000E3,5.194643865E1 +1.759644000E3,4.891449850E1 +1.759922000E3,4.784429271E1 +1.760236000E3,5.273391136E1 +1.760503000E3,5.475616990E1 +1.760758000E3,5.640096860E1 +1.761017000E3,5.329458627E1 +1.761282000E3,4.798672737E1 +1.761535000E3,5.532988346E1 +1.761794000E3,5.189579265E1 +1.762040000E3,5.068357941E1 +1.762299000E3,5.751972157E1 +1.762578000E3,5.430434207E1 +1.762831000E3,5.331943982E1 +1.763136000E3,5.699367350E1 +1.763409000E3,5.622858108E1 +1.763658000E3,5.631559008E1 +1.763910000E3,5.738562920E1 +1.764157000E3,6.030103345E1 +1.764400000E3,5.680309722E1 +1.764695000E3,5.703631315E1 +1.765017000E3,5.682945247E1 +1.765300000E3,5.317093897E1 +1.765575000E3,5.620624417E1 +1.765832000E3,5.550075987E1 +1.766100000E3,6.321349509E1 +1.766371000E3,5.938123887E1 +1.766635000E3,6.289622107E1 +1.766898000E3,5.890101653E1 +1.767155000E3,5.928826732E1 +1.767399000E3,5.872890625E1 +1.767638000E3,6.184345237E1 +1.767877000E3,6.131073260E1 +1.768211000E3,6.085041665E1 +1.768587000E3,6.015418617E1 +1.768835000E3,5.648473324E1 +1.769119000E3,5.746059957E1 +1.769380000E3,5.608054299E1 +1.769692000E3,6.542458852E1 +1.769998000E3,6.121618195E1 +1.770281000E3,5.842785672E1 +1.770536000E3,5.763776595E1 +1.770858000E3,5.630873419E1 +1.771133000E3,5.339704361E1 +1.771378000E3,5.463873835E1 +1.771723000E3,5.659388596E1 +1.772050000E3,5.449836230E1 +1.772294000E3,5.154616724E1 +1.772537000E3,5.082603581E1 +1.772795000E3,5.334183734E1 +1.773055000E3,5.096094928E1 +1.773365000E3,5.171061147E1 +1.773612000E3,5.477281719E1 +1.773878000E3,5.060909259E1 +1.774171000E3,5.285294921E1 +1.774452000E3,5.393730531E1 +1.774725000E3,5.333400186E1 +1.774980000E3,5.285705613E1 +1.775346000E3,5.719168586E1 +1.775663000E3,5.642193929E1 +1.775908000E3,4.659059970E1 +1.776150000E3,5.521168672E1 +1.776388000E3,5.693500665E1 +1.776630000E3,6.030483668E1 +1.776910000E3,5.944095915E1 +1.777153000E3,5.708951289E1 +1.777414000E3,5.291982189E1 +1.777666000E3,5.900042024E1 +1.777935000E3,6.010949926E1 +1.778229000E3,6.009411695E1 +1.778514000E3,5.804757181E1 +1.778758000E3,5.922775473E1 +1.779011000E3,6.063545461E1 +1.779277000E3,5.950242674E1 +1.779575000E3,6.057891518E1 +1.779819000E3,6.050018223E1 +1.780115000E3,5.965583098E1 +1.780361000E3,5.651792502E1 +1.780660000E3,5.814099422E1 +1.780904000E3,5.340077797E1 +1.781203000E3,5.734973286E1 +1.781481000E3,5.846278011E1 +1.781805000E3,5.369751607E1 +1.782048000E3,5.229063054E1 +1.782299000E3,5.345996994E1 +1.782583000E3,5.724353788E1 +1.782883000E3,5.610772411E1 +1.783181000E3,5.272586700E1 +1.783423000E3,5.272075137E1 +1.783692000E3,5.495532717E1 +1.783945000E3,5.594785882E1 +1.784202000E3,5.914935612E1 +1.784483000E3,6.427791570E1 +1.784735000E3,6.185652247E1 +1.785051000E3,6.178338943E1 +1.785352000E3,6.304285312E1 +1.785598000E3,5.699176354E1 +1.785897000E3,5.705567192E1 +1.786190000E3,5.975757470E1 +1.786467000E3,6.092866408E1 +1.786714000E3,5.771726615E1 +1.786984000E3,5.434727511E1 +1.787232000E3,5.250796794E1 +1.787486000E3,5.668884634E1 +1.787813000E3,5.600600547E1 +1.788061000E3,5.162213387E1 +1.788391000E3,5.782497792E1 +1.788636000E3,5.900804565E1 +1.788935000E3,6.056317474E1 +1.789175000E3,5.749029459E1 +1.789469000E3,6.053654612E1 +1.789714000E3,5.841478287E1 +1.789988000E3,5.700130118E1 +1.790219000E3,5.562837186E1 +1.790509000E3,5.430369658E1 +1.790806000E3,5.586895515E1 +1.791048000E3,5.809725956E1 +1.791409000E3,5.552827992E1 +1.791650000E3,5.534472171E1 +1.791981000E3,5.671474363E1 +1.792227000E3,5.716453332E1 +1.792522000E3,5.844249975E1 +1.792847000E3,5.961186667E1 +1.793109000E3,5.794833541E1 +1.793437000E3,5.832360597E1 +1.793698000E3,5.996001578E1 +1.793970000E3,5.849924827E1 +1.794223000E3,5.823551411E1 +1.794488000E3,5.480450178E1 +1.794819000E3,5.715609034E1 +1.795083000E3,5.418083703E1 +1.795329000E3,5.529883425E1 +1.795587000E3,5.729455769E1 +1.795853000E3,5.358946536E1 +1.796083000E3,5.534684059E1 +1.796374000E3,5.693696454E1 +1.796630000E3,5.642610016E1 +1.796927000E3,5.692548294E1 +1.797194000E3,5.931602223E1 +1.797469000E3,5.877569790E1 +1.797716000E3,5.527135197E1 +1.798053000E3,5.904674814E1 +1.798358000E3,5.655039196E1 +1.798612000E3,5.796779928E1 +1.798921000E3,5.499199210E1 +1.799185000E3,5.693837926E1 +1.799465000E3,6.235855457E1 +1.799695000E3,6.271612813E1 +1.799964000E3,6.118271582E1 +1.800233000E3,6.171552449E1 +1.800562000E3,6.293258336E1 +1.800818000E3,5.927940855E1 +1.801077000E3,5.836879001E1 +1.801406000E3,6.182854437E1 +1.801650000E3,5.918527405E1 +1.801894000E3,6.352260837E1 +1.802163000E3,6.142940723E1 +1.802385000E3,5.867772092E1 +1.802631000E3,5.916688243E1 +1.802927000E3,5.855222781E1 +1.803228000E3,6.125789004E1 +1.803533000E3,5.839377949E1 +1.803816000E3,5.705167204E1 +1.804057000E3,5.641730344E1 +1.804362000E3,6.771092582E1 +1.804585000E3,6.036461449E1 +1.804835000E3,6.742095194E1 +1.805132000E3,6.133151855E1 +1.805443000E3,6.658554202E1 +1.805718000E3,7.095511769E1 +1.806003000E3,7.330553664E1 +1.806290000E3,6.732809523E1 +1.806566000E3,6.106403544E1 +1.806844000E3,5.830930506E1 +1.807085000E3,6.610455401E1 +1.807442000E3,5.944325189E1 +1.807800000E3,5.667454347E1 +1.808044000E3,5.560521877E1 +1.808299000E3,5.488377812E1 +1.808542000E3,5.279721650E1 +1.808789000E3,4.834692654E1 +1.809029000E3,4.661669368E1 +1.809276000E3,5.501186804E1 +1.809526000E3,5.384830085E1 +1.809820000E3,5.526588307E1 +1.810084000E3,5.900458249E1 +1.810393000E3,5.557146256E1 +1.810647000E3,5.355619280E1 +1.811023000E3,5.627924000E1 +1.811283000E3,5.384503050E1 +1.811527000E3,5.309622401E1 +1.811816000E3,5.228523776E1 +1.812070000E3,5.317657142E1 +1.812328000E3,5.813846570E1 +1.812583000E3,5.621088360E1 +1.812927000E3,5.646965227E1 +1.813191000E3,5.322001188E1 +1.813436000E3,5.451886743E1 +1.813748000E3,5.558621720E1 +1.814006000E3,5.673920724E1 +1.814328000E3,5.582855401E1 +1.814591000E3,6.044196407E1 +1.814848000E3,5.769208427E1 +1.815109000E3,6.206015086E1 +1.815391000E3,5.918173335E1 +1.815660000E3,5.779702061E1 +1.815927000E3,6.516398742E1 +1.816218000E3,5.927869783E1 +1.816546000E3,6.320256740E1 +1.816802000E3,6.296743684E1 +1.817051000E3,5.869001212E1 +1.817329000E3,5.985536664E1 +1.817620000E3,5.435607380E1 +1.817905000E3,5.721703373E1 +1.818148000E3,6.314389823E1 +1.818376000E3,6.116752308E1 +1.818622000E3,5.773611736E1 +1.818863000E3,5.892899245E1 +1.819138000E3,5.791411351E1 +1.819457000E3,6.283307798E1 +1.819719000E3,5.805008540E1 +1.819967000E3,6.383011196E1 +1.820266000E3,5.915938870E1 +1.820515000E3,5.795811325E1 +1.820871000E3,5.730398564E1 +1.821113000E3,5.907223014E1 +1.821388000E3,5.566469845E1 +1.821612000E3,5.223652040E1 +1.821858000E3,5.461868826E1 +1.822118000E3,5.731142265E1 +1.822388000E3,5.743609212E1 +1.822672000E3,6.147918645E1 +1.822919000E3,6.109678537E1 +1.823167000E3,5.654516230E1 +1.823464000E3,6.010058675E1 +1.823716000E3,6.101649690E1 +1.824046000E3,5.741898993E1 +1.824372000E3,5.654969113E1 +1.824629000E3,5.489877253E1 +1.824894000E3,6.410593751E1 +1.825142000E3,5.923267903E1 +1.825399000E3,5.977300321E1 +1.825683000E3,5.945891570E1 +1.825907000E3,5.799474745E1 +1.826162000E3,5.485933719E1 +1.826447000E3,5.848818620E1 +1.826697000E3,5.937282663E1 +1.826944000E3,5.473647239E1 +1.827319000E3,5.611635619E1 +1.827649000E3,5.704234375E1 +1.827909000E3,5.174683398E1 +1.828172000E3,5.243070089E1 +1.828457000E3,5.835398328E1 +1.828710000E3,6.579711207E1 +1.828969000E3,6.063158540E1 +1.829218000E3,5.379307224E1 +1.829474000E3,5.791005982E1 +1.829779000E3,5.908028356E1 +1.830025000E3,5.476368407E1 +1.830307000E3,5.608145667E1 +1.830627000E3,5.417323034E1 +1.830843000E3,5.295530865E1 +1.831087000E3,5.335160491E1 +1.831385000E3,5.274441298E1 +1.831622000E3,5.307477504E1 +1.831918000E3,5.606159985E1 +1.832155000E3,6.009472302E1 +1.832471000E3,5.380117674E1 +1.832766000E3,5.382200579E1 +1.833012000E3,5.176006230E1 +1.833256000E3,5.956343573E1 +1.833577000E3,5.545935306E1 +1.833826000E3,5.528541848E1 +1.834083000E3,5.436381252E1 +1.834373000E3,5.684307553E1 +1.834669000E3,5.352399464E1 +1.834910000E3,5.651184236E1 +1.835208000E3,5.432875840E1 +1.835453000E3,5.442576527E1 +1.835752000E3,5.643309342E1 +1.836022000E3,5.781174029E1 +1.836293000E3,6.110602518E1 +1.836557000E3,5.591856301E1 +1.836932000E3,5.423752303E1 +1.837200000E3,5.716598850E1 +1.837455000E3,5.511743414E1 +1.837716000E3,5.819026063E1 +1.837988000E3,5.728773522E1 +1.838236000E3,5.959151016E1 +1.838540000E3,5.810767345E1 +1.838799000E3,5.779128856E1 +1.839096000E3,6.092094761E1 +1.839361000E3,5.957871329E1 +1.839608000E3,5.838702884E1 +1.839856000E3,5.927631822E1 +1.840242000E3,5.748386760E1 +1.840516000E3,5.957609475E1 +1.840759000E3,5.688693666E1 +1.841054000E3,5.883374773E1 +1.841320000E3,5.769470339E1 +1.841597000E3,5.894509733E1 +1.841885000E3,6.032854908E1 +1.842190000E3,5.891601570E1 +1.842444000E3,5.957860612E1 +1.842691000E3,5.968229576E1 +1.842933000E3,5.829247522E1 +1.843258000E3,6.183086549E1 +1.843539000E3,6.077794792E1 +1.843765000E3,5.928253866E1 +1.844002000E3,5.782805396E1 +1.844301000E3,5.975447959E1 +1.844589000E3,6.108169982E1 +1.844825000E3,5.915565503E1 +1.845116000E3,5.981302437E1 +1.845363000E3,6.019248645E1 +1.845636000E3,6.014223773E1 +1.845861000E3,6.160258605E1 +1.846139000E3,6.002388007E1 +1.846447000E3,6.004612452E1 +1.846706000E3,5.932487324E1 +1.846979000E3,5.718424575E1 +1.847284000E3,5.712987240E1 +1.847586000E3,5.557624595E1 +1.847888000E3,5.603981815E1 +1.848146000E3,5.769591687E1 +1.848418000E3,5.526085696E1 +1.848706000E3,5.815102401E1 +1.848972000E3,5.884177354E1 +1.849226000E3,5.853138751E1 +1.849515000E3,6.156208919E1 +1.849746000E3,6.064923427E1 +1.850008000E3,6.590305387E1 +1.850338000E3,5.853444981E1 +1.850640000E3,5.717447935E1 +1.850942000E3,5.680568615E1 +1.851242000E3,5.928468331E1 +1.851504000E3,5.798449444E1 +1.851757000E3,5.802619768E1 +1.852033000E3,5.998338312E1 +1.852296000E3,5.683616594E1 +1.852550000E3,5.692327884E1 +1.852886000E3,5.878610583E1 +1.853162000E3,5.538467470E1 +1.853432000E3,5.437085520E1 +1.853738000E3,5.469765317E1 +1.854038000E3,5.790268038E1 +1.854297000E3,5.836787866E1 +1.854582000E3,6.160807622E1 +1.854881000E3,5.878613196E1 +1.855158000E3,6.200103199E1 +1.855387000E3,6.087479870E1 +1.855688000E3,6.028304140E1 +1.855930000E3,6.159527875E1 +1.856226000E3,6.082174354E1 +1.856487000E3,5.932314061E1 +1.856744000E3,5.976570730E1 +1.857001000E3,5.473753247E1 +1.857299000E3,5.954612483E1 +1.857556000E3,6.052388497E1 +1.857849000E3,5.848282940E1 +1.858086000E3,5.879664566E1 +1.858384000E3,5.864589973E1 +1.858677000E3,5.659242719E1 +1.858917000E3,5.683870091E1 +1.859195000E3,5.582498919E1 +1.859427000E3,6.011873423E1 +1.859676000E3,5.796702396E1 +1.859911000E3,5.928400715E1 +1.860149000E3,5.826876733E1 +1.860396000E3,6.038481253E1 +1.860680000E3,6.030085568E1 +1.860944000E3,5.890166619E1 +1.861209000E3,6.654379171E1 +1.861519000E3,6.016187265E1 +1.861755000E3,6.139297542E1 +1.862049000E3,6.289106669E1 +1.862388000E3,5.872946965E1 +1.862675000E3,5.800836625E1 +1.862993000E3,5.701819685E1 +1.863248000E3,5.488359846E1 +1.863519000E3,5.747446133E1 +1.863768000E3,5.996388232E1 +1.864087000E3,5.686047813E1 +1.864334000E3,5.935760915E1 +1.864635000E3,6.438349972E1 +1.864894000E3,6.008599590E1 +1.865205000E3,5.995474236E1 +1.865502000E3,6.596906108E1 +1.865837000E3,6.091064347E1 +1.866114000E3,5.885056970E1 +1.866411000E3,6.474486832E1 +1.866666000E3,5.888758286E1 +1.866964000E3,6.138447683E1 +1.867211000E3,6.032596684E1 +1.867482000E3,5.848476935E1 +1.867736000E3,5.631330849E1 +1.867989000E3,5.927138373E1 +1.868246000E3,5.817171672E1 +1.868499000E3,5.358065381E1 +1.868763000E3,5.500264039E1 +1.869129000E3,5.663946315E1 +1.869384000E3,5.601392416E1 +1.869636000E3,5.640732154E1 +1.869947000E3,5.320213962E1 +1.870207000E3,4.907811811E1 +1.870470000E3,5.784153600E1 +1.870743000E3,5.988355074E1 +1.871011000E3,5.973830135E1 +1.871253000E3,5.769679044E1 +1.871519000E3,5.395770126E1 +1.871765000E3,5.751088186E1 +1.872011000E3,5.342275719E1 +1.872301000E3,5.638616310E1 +1.872563000E3,5.124369984E1 +1.872821000E3,5.357036185E1 +1.873129000E3,5.529809524E1 +1.873386000E3,5.442720524E1 +1.873650000E3,5.306298792E1 +1.873937000E3,5.703507672E1 +1.874184000E3,5.835246426E1 +1.874444000E3,5.638184247E1 +1.874707000E3,5.201779537E1 +1.874972000E3,5.217149520E1 +1.875244000E3,5.757612416E1 +1.875577000E3,5.387788750E1 +1.875865000E3,5.607108884E1 +1.876149000E3,5.692352283E1 +1.876407000E3,5.577296536E1 +1.876687000E3,5.259836493E1 +1.876982000E3,5.467571766E1 +1.877215000E3,5.256317748E1 +1.877521000E3,5.522593862E1 +1.877775000E3,5.432669245E1 +1.878036000E3,5.734031668E1 +1.878314000E3,6.027566119E1 +1.878587000E3,5.567003578E1 +1.878912000E3,5.307720644E1 +1.879176000E3,5.659939353E1 +1.879425000E3,5.110556861E1 +1.879723000E3,5.673190580E1 +1.879969000E3,5.437112204E1 +1.880274000E3,5.433297742E1 +1.880576000E3,5.585075865E1 +1.880875000E3,5.657006430E1 +1.881117000E3,5.701623858E1 +1.881424000E3,5.749679466E1 +1.881673000E3,5.623079196E1 +1.881986000E3,5.545187468E1 +1.882329000E3,5.781610131E1 +1.882611000E3,5.432916720E1 +1.882882000E3,4.940287270E1 +1.883127000E3,5.866223377E1 +1.883391000E3,5.654564177E1 +1.883644000E3,5.888782218E1 +1.883889000E3,5.586307703E1 +1.884148000E3,5.930725555E1 +1.884413000E3,5.963840788E1 +1.884660000E3,5.928611951E1 +1.884926000E3,5.621968819E1 +1.885181000E3,5.811455305E1 +1.885457000E3,5.585646129E1 +1.885714000E3,5.989591718E1 +1.885968000E3,6.058402104E1 +1.886267000E3,5.972100226E1 +1.886517000E3,6.220704457E1 +1.886832000E3,6.037773435E1 +1.887106000E3,6.039308032E1 +1.887385000E3,6.223647696E1 +1.887617000E3,5.854088114E1 +1.887876000E3,6.248517888E1 +1.888128000E3,6.222318884E1 +1.888437000E3,6.070320114E1 +1.888777000E3,5.817372188E1 +1.889076000E3,5.382250608E1 +1.889369000E3,7.004593531E1 +1.889616000E3,6.094415751E1 +1.889913000E3,5.455584628E1 +1.890163000E3,5.387250795E1 +1.890418000E3,5.219742496E1 +1.890714000E3,5.070715955E1 +1.890961000E3,5.362651533E1 +1.891207000E3,5.046817004E1 +1.891453000E3,5.129339201E1 +1.891764000E3,4.856730286E1 +1.892053000E3,5.220705734E1 +1.892321000E3,5.401068171E1 +1.892582000E3,5.109746146E1 +1.892834000E3,5.412675897E1 +1.893090000E3,5.347014573E1 +1.893340000E3,5.092720593E1 +1.893620000E3,5.341316175E1 +1.893886000E3,4.870918930E1 +1.894142000E3,4.929590175E1 +1.894389000E3,4.686294330E1 +1.894692000E3,5.100486031E1 +1.894995000E3,5.087478993E1 +1.895328000E3,4.940372977E1 +1.895606000E3,5.362468443E1 +1.895919000E3,5.608826750E1 +1.896241000E3,5.628756413E1 +1.896497000E3,5.817843169E1 +1.896749000E3,5.809119715E1 +1.897054000E3,5.469613872E1 +1.897287000E3,5.437807476E1 +1.897582000E3,5.794761863E1 +1.897897000E3,6.027023965E1 +1.898145000E3,5.913564460E1 +1.898511000E3,5.510014788E1 +1.898752000E3,5.499817732E1 +1.898999000E3,5.569220222E1 +1.899294000E3,5.368447548E1 +1.899547000E3,5.912109227E1 +1.899841000E3,6.076259223E1 +1.900104000E3,6.153129043E1 +1.900349000E3,5.679462536E1 +1.900634000E3,5.721135074E1 +1.900927000E3,5.674745728E1 +1.901166000E3,5.556227882E1 +1.901462000E3,4.994603734E1 +1.901841000E3,5.122656475E1 +1.902183000E3,5.127903645E1 +1.902436000E3,5.042064547E1 +1.902695000E3,5.425673681E1 +1.902998000E3,5.484388956E1 +1.903228000E3,5.322356297E1 +1.903483000E3,5.161093724E1 +1.903730000E3,5.302125687E1 +1.904019000E3,5.241958307E1 +1.904307000E3,5.116604316E1 +1.904614000E3,5.319513233E1 +1.904991000E3,5.530482451E1 +1.905243000E3,5.829713614E1 +1.905528000E3,4.891404960E1 +1.905774000E3,5.408250868E1 +1.906083000E3,5.272747143E1 +1.906381000E3,5.216068921E1 +1.906624000E3,5.292203291E1 +1.906885000E3,5.243548019E1 +1.907149000E3,4.981562618E1 +1.907448000E3,5.500279348E1 +1.907742000E3,5.481190601E1 +1.907999000E3,5.369800103E1 +1.908315000E3,6.390197571E1 +1.908579000E3,6.517990141E1 +1.908825000E3,5.822949910E1 +1.909064000E3,5.655728640E1 +1.909356000E3,5.292186662E1 +1.909600000E3,5.069372058E1 +1.909895000E3,5.368100654E1 +1.910138000E3,5.616508462E1 +1.910432000E3,6.285923815E1 +1.910670000E3,6.254266196E1 +1.910979000E3,5.628599605E1 +1.911260000E3,5.616383984E1 +1.911482000E3,5.074231882E1 +1.911728000E3,5.398858859E1 +1.911977000E3,5.585565083E1 +1.912237000E3,5.777112626E1 +1.912532000E3,6.036032129E1 +1.912783000E3,6.077032608E1 +1.913052000E3,5.839282786E1 +1.913316000E3,5.397912726E1 +1.913575000E3,5.582771928E1 +1.913848000E3,5.579334158E1 +1.914143000E3,5.778281485E1 +1.914450000E3,5.783459906E1 +1.914713000E3,6.199387267E1 +1.914943000E3,6.173706737E1 +1.915185000E3,5.621060236E1 +1.915433000E3,5.563784893E1 +1.915692000E3,5.470990272E1 +1.915951000E3,5.469960060E1 +1.916217000E3,6.171536544E1 +1.916470000E3,5.862130066E1 +1.916777000E3,5.839467924E1 +1.917028000E3,5.552209731E1 +1.917324000E3,5.763067987E1 +1.917687000E3,5.981653815E1 +1.917967000E3,5.790518789E1 +1.918210000E3,5.220287871E1 +1.918457000E3,5.707286116E1 +1.918759000E3,5.657529642E1 +1.918997000E3,6.000130629E1 +1.919241000E3,5.708419446E1 +1.919496000E3,5.749223221E1 +1.919768000E3,5.843781753E1 +1.920074000E3,5.671929683E1 +1.920373000E3,5.881070992E1 +1.920621000E3,5.603223824E1 +1.920956000E3,6.053511488E1 +1.921216000E3,5.525745837E1 +1.921476000E3,6.186721324E1 +1.921723000E3,6.214292360E1 +1.922025000E3,5.857206109E1 +1.922320000E3,5.934438900E1 +1.922561000E3,6.077867207E1 +1.922860000E3,5.578255978E1 +1.923099000E3,5.723807446E1 +1.923347000E3,5.785786452E1 +1.923636000E3,6.037753633E1 +1.923892000E3,6.106459696E1 +1.924223000E3,5.873119773E1 +1.924511000E3,5.862235861E1 +1.924814000E3,5.732521131E1 +1.925070000E3,5.161553090E1 +1.925373000E3,5.243351685E1 +1.925626000E3,5.041805469E1 +1.925919000E3,5.543714980E1 +1.926175000E3,5.338657816E1 +1.926425000E3,5.616854022E1 +1.926695000E3,5.699328540E1 +1.926965000E3,5.787312270E1 +1.927305000E3,5.558473925E1 +1.927614000E3,5.927685087E1 +1.927880000E3,6.254706193E1 +1.928125000E3,6.079427969E1 +1.928390000E3,5.412440784E1 +1.928634000E3,5.441834540E1 +1.928928000E3,5.220486428E1 +1.929215000E3,5.210908233E1 +1.929515000E3,5.352367419E1 +1.929766000E3,5.356350702E1 +1.930022000E3,5.184851991E1 +1.930322000E3,5.311742835E1 +1.930607000E3,5.453786592E1 +1.930870000E3,5.814140937E1 +1.931155000E3,5.779656646E1 +1.931440000E3,5.488757891E1 +1.931727000E3,5.385182390E1 +1.931981000E3,5.705491580E1 +1.932229000E3,5.576165296E1 +1.932491000E3,5.781333383E1 +1.932730000E3,5.616780300E1 +1.932971000E3,5.400230043E1 +1.933232000E3,5.518627884E1 +1.933510000E3,5.211300688E1 +1.933795000E3,5.292820587E1 +1.934127000E3,5.382097927E1 +1.934390000E3,6.102840439E1 +1.934671000E3,5.486275546E1 +1.934948000E3,5.206103103E1 +1.935198000E3,5.739150099E1 +1.935506000E3,5.310844778E1 +1.935756000E3,5.392681604E1 +1.936008000E3,5.250003264E1 +1.936256000E3,5.801399662E1 +1.936524000E3,5.696032820E1 +1.936785000E3,5.414492013E1 +1.937032000E3,5.536982174E1 +1.937391000E3,5.750979970E1 +1.937677000E3,5.370086514E1 +1.937972000E3,5.359409099E1 +1.938241000E3,4.663692517E1 +1.938508000E3,4.740501122E1 +1.938772000E3,4.812116539E1 +1.939051000E3,4.940260018E1 +1.939311000E3,5.211533825E1 +1.939553000E3,5.351181789E1 +1.939796000E3,5.597808269E1 +1.940081000E3,5.841474518E1 +1.940347000E3,5.900966915E1 +1.940680000E3,5.844032848E1 +1.940932000E3,6.047778057E1 +1.941187000E3,6.179458512E1 +1.941488000E3,5.569784051E1 +1.941730000E3,5.535681081E1 +1.941971000E3,5.409739450E1 +1.942227000E3,5.551927029E1 +1.942555000E3,5.259381649E1 +1.942855000E3,5.090743186E1 +1.943101000E3,5.330610416E1 +1.943383000E3,5.722147303E1 +1.943610000E3,5.564867598E1 +1.944013000E3,5.456395907E1 +1.944265000E3,5.442943523E1 +1.944557000E3,5.982581487E1 +1.944820000E3,5.751114261E1 +1.945081000E3,5.998630171E1 +1.945333000E3,5.908382499E1 +1.945646000E3,5.828329647E1 +1.945951000E3,5.602282904E1 +1.946199000E3,6.197108249E1 +1.946496000E3,5.533258874E1 +1.946770000E3,5.704060455E1 +1.947126000E3,5.457797110E1 +1.947363000E3,5.430717613E1 +1.947637000E3,5.940687974E1 +1.947953000E3,5.436076271E1 +1.948235000E3,5.660912008E1 +1.948550000E3,5.504399315E1 +1.948861000E3,5.464999644E1 +1.949122000E3,5.565806372E1 +1.949384000E3,5.190569146E1 +1.949646000E3,5.153937000E1 +1.949972000E3,5.628803963E1 +1.950248000E3,5.966716422E1 +1.950577000E3,5.820503815E1 +1.950822000E3,5.652058726E1 +1.951118000E3,5.802645793E1 +1.951349000E3,5.727916959E1 +1.951597000E3,5.784165576E1 +1.951900000E3,5.999225852E1 +1.952197000E3,6.048891831E1 +1.952433000E3,5.821794698E1 +1.952728000E3,5.416701806E1 +1.952964000E3,5.183738883E1 +1.953295000E3,5.384161890E1 +1.953675000E3,5.430376660E1 +1.953907000E3,5.257088063E1 +1.954151000E3,5.392186903E1 +1.954431000E3,6.167467738E1 +1.954678000E3,5.958790115E1 +1.954923000E3,5.822018477E1 +1.955185000E3,5.808448347E1 +1.955447000E3,5.733347749E1 +1.955703000E3,6.261390980E1 +1.956005000E3,5.829281758E1 +1.956246000E3,5.949056653E1 +1.956541000E3,5.839747914E1 +1.956810000E3,5.770882066E1 +1.957120000E3,5.690637302E1 +1.957421000E3,5.796705847E1 +1.957668000E3,5.867770180E1 +1.957936000E3,5.696585443E1 +1.958216000E3,5.738908049E1 +1.958463000E3,5.842272770E1 +1.958721000E3,5.966072568E1 +1.959033000E3,6.340725612E1 +1.959281000E3,6.193544465E1 +1.959566000E3,5.927164536E1 +1.959888000E3,6.146900670E1 +1.960249000E3,6.270186363E1 +1.960512000E3,5.695216686E1 +1.960779000E3,5.725758836E1 +1.961040000E3,5.788439963E1 +1.961303000E3,6.286977927E1 +1.961557000E3,6.361469653E1 +1.961802000E3,6.277422462E1 +1.962060000E3,6.032704022E1 +1.962310000E3,5.600516510E1 +1.962586000E3,6.188879617E1 +1.962805000E3,6.271522018E1 +1.963107000E3,6.025198847E1 +1.963453000E3,6.001529679E1 +1.963728000E3,5.375240125E1 +1.964036000E3,5.055228276E1 +1.964331000E3,5.257092943E1 +1.964568000E3,5.708661900E1 +1.964868000E3,5.629448239E1 +1.965178000E3,5.425890416E1 +1.965431000E3,5.575014937E1 +1.965679000E3,5.801461965E1 +1.965931000E3,5.400244473E1 +1.966191000E3,5.474887871E1 +1.966525000E3,5.196538635E1 +1.966783000E3,5.536524974E1 +1.967040000E3,5.974878933E1 +1.967338000E3,6.200932986E1 +1.967644000E3,6.295299888E1 +1.967909000E3,6.272635154E1 +1.968153000E3,5.902465660E1 +1.968474000E3,5.897159976E1 +1.968773000E3,5.506910037E1 +1.969014000E3,5.622897524E1 +1.969254000E3,5.457019516E1 +1.969505000E3,5.648049168E1 +1.969892000E3,5.656883155E1 +1.970152000E3,5.598423772E1 +1.970446000E3,5.186768597E1 +1.970726000E3,5.526177698E1 +1.971020000E3,5.810907246E1 +1.971304000E3,5.262875480E1 +1.971613000E3,5.141696402E1 +1.971915000E3,5.298264424E1 +1.972196000E3,5.641801556E1 +1.972483000E3,5.228737642E1 +1.972725000E3,5.649656740E1 +1.973036000E3,5.867645632E1 +1.973323000E3,5.679238187E1 +1.973633000E3,5.959682402E1 +1.973935000E3,5.617109756E1 +1.974236000E3,5.473085666E1 +1.974547000E3,5.589564412E1 +1.974836000E3,5.691193712E1 +1.975136000E3,5.808545953E1 +1.975385000E3,5.922478363E1 +1.975631000E3,5.707996013E1 +1.975881000E3,5.820923707E1 +1.976194000E3,5.897957095E1 +1.976453000E3,6.019944728E1 +1.976814000E3,6.472960186E1 +1.977076000E3,6.312075290E1 +1.977356000E3,5.886370461E1 +1.977618000E3,5.750754913E1 +1.977917000E3,5.531180501E1 +1.978189000E3,5.815410032E1 +1.978463000E3,5.735965971E1 +1.978732000E3,5.593071322E1 +1.978999000E3,5.835041964E1 +1.979245000E3,5.646810288E1 +1.979493000E3,5.392299875E1 +1.979902000E3,5.430590311E1 +1.980142000E3,5.447583546E1 +1.980384000E3,5.260389735E1 +1.980632000E3,5.537561423E1 +1.980873000E3,5.836960119E1 +1.981120000E3,5.425821286E1 +1.981389000E3,5.153336720E1 +1.981618000E3,5.420085973E1 +1.981915000E3,5.457985954E1 +1.982165000E3,5.637026749E1 +1.982404000E3,6.009656118E1 +1.982718000E3,5.903298531E1 +1.983029000E3,5.665152425E1 +1.983296000E3,5.778918758E1 +1.983538000E3,5.444374512E1 +1.983786000E3,5.619088618E1 +1.984047000E3,6.088482249E1 +1.984304000E3,5.678390940E1 +1.984575000E3,5.873820942E1 +1.984842000E3,6.004736340E1 +1.985142000E3,6.191465398E1 +1.985405000E3,6.154032648E1 +1.985653000E3,5.967034113E1 +1.985913000E3,5.855925349E1 +1.986211000E3,5.529356341E1 +1.986557000E3,5.823190054E1 +1.986847000E3,5.749679599E1 +1.987098000E3,5.855123449E1 +1.987369000E3,5.999203293E1 +1.987610000E3,6.139424716E1 +1.987876000E3,5.730078222E1 +1.988126000E3,5.649537684E1 +1.988425000E3,5.872458305E1 +1.988727000E3,5.704322852E1 +1.989024000E3,6.264447151E1 +1.989326000E3,5.763604303E1 +1.989641000E3,5.657919006E1 +1.989961000E3,5.706004491E1 +1.990255000E3,6.115159729E1 +1.990571000E3,5.721964371E1 +1.990829000E3,5.780420781E1 +1.991088000E3,5.782228640E1 +1.991353000E3,5.791642518E1 +1.991611000E3,5.820065680E1 +1.991935000E3,5.675756460E1 +1.992174000E3,5.720433643E1 +1.992482000E3,5.907701380E1 +1.992770000E3,5.791335620E1 +1.993107000E3,5.504589678E1 +1.993369000E3,6.117578252E1 +1.993619000E3,5.902046786E1 +1.993912000E3,6.024153080E1 +1.994216000E3,6.061721402E1 +1.994464000E3,6.185610038E1 +1.994715000E3,5.902440055E1 +1.995005000E3,6.112374185E1 +1.995249000E3,5.664710018E1 +1.995551000E3,5.841351492E1 +1.995787000E3,5.961393992E1 +1.996119000E3,5.614463215E1 +1.996387000E3,5.528223904E1 +1.996647000E3,5.706960328E1 +1.996947000E3,5.544195306E1 +1.997203000E3,5.747091679E1 +1.997452000E3,5.434233120E1 +1.997769000E3,5.794847441E1 +1.998019000E3,5.504963001E1 +1.998267000E3,5.470768853E1 +1.998498000E3,6.426300701E1 +1.998789000E3,6.070245213E1 +1.999090000E3,5.893271279E1 +1.999390000E3,5.873668669E1 +1.999698000E3,6.355663744E1 +1.999962000E3,6.500393379E1 +2.000214000E3,6.177640112E1 +2.000471000E3,6.122167361E1 +2.000775000E3,5.982616779E1 +2.001079000E3,5.944943300E1 +2.001339000E3,5.772707313E1 +2.001595000E3,5.934980117E1 +2.001862000E3,6.221301291E1 +2.002160000E3,6.098009785E1 +2.002491000E3,6.205877653E1 +2.002758000E3,5.978743388E1 +2.003062000E3,6.141065367E1 +2.003307000E3,6.146860620E1 +2.003555000E3,6.323368939E1 +2.003884000E3,6.072009355E1 +2.004185000E3,6.072017978E1 +2.004424000E3,6.079512782E1 +2.004673000E3,6.651000141E1 +2.004939000E3,6.185812181E1 +2.005202000E3,5.705353418E1 +2.005472000E3,5.820400818E1 +2.005800000E3,5.682542431E1 +2.006070000E3,6.224932691E1 +2.006350000E3,5.654791681E1 +2.006601000E3,6.160831985E1 +2.006857000E3,6.443497299E1 +2.007101000E3,6.091208862E1 +2.007395000E3,5.867323811E1 +2.007635000E3,5.850229824E1 +2.007945000E3,6.307832054E1 +2.008197000E3,5.931313312E1 +2.008453000E3,5.632990721E1 +2.008711000E3,5.662998085E1 +2.009032000E3,5.416655753E1 +2.009268000E3,6.273936844E1 +2.009521000E3,6.129068926E1 +2.009786000E3,6.485712301E1 +2.010037000E3,6.605690213E1 +2.010298000E3,6.243431425E1 +2.010541000E3,6.062714733E1 +2.010780000E3,6.369220544E1 +2.011082000E3,5.933701247E1 +2.011330000E3,6.141658123E1 +2.011605000E3,6.232326760E1 +2.011893000E3,5.983132844E1 +2.012226000E3,6.085684837E1 +2.012489000E3,5.844434641E1 +2.012752000E3,5.992485437E1 +2.013005000E3,5.745164278E1 +2.013272000E3,5.489362140E1 +2.013573000E3,5.734004331E1 +2.013861000E3,5.569303233E1 +2.014170000E3,5.619919203E1 +2.014467000E3,5.719248521E1 +2.014715000E3,5.898607642E1 +2.015015000E3,5.312334941E1 +2.015258000E3,4.707687024E1 +2.015594000E3,5.326213693E1 +2.015822000E3,4.977107581E1 +2.016071000E3,5.399380901E1 +2.016333000E3,5.528915982E1 +2.016634000E3,5.648344312E1 +2.016879000E3,5.853194276E1 +2.017143000E3,5.969968429E1 +2.017429000E3,6.121498547E1 +2.017723000E3,5.933414775E1 +2.017961000E3,6.375558171E1 +2.018248000E3,6.102538403E1 +2.018558000E3,6.066629858E1 +2.018830000E3,5.238394429E1 +2.019065000E3,5.528030903E1 +2.019316000E3,5.711235169E1 +2.019578000E3,6.069913503E1 +2.019847000E3,5.344730110E1 +2.020093000E3,5.593398360E1 +2.020413000E3,5.112453486E1 +2.020668000E3,5.529600172E1 +2.020922000E3,5.816841553E1 +2.021177000E3,6.105447683E1 +2.021449000E3,5.967528890E1 +2.021707000E3,5.677568689E1 +2.022115000E3,5.613246875E1 +2.022403000E3,5.846674311E1 +2.022679000E3,5.999468936E1 +2.022930000E3,6.268951545E1 +2.023232000E3,6.037378186E1 +2.023532000E3,6.123290650E1 +2.023784000E3,6.425880775E1 +2.024094000E3,6.043334594E1 +2.024356000E3,6.287321918E1 +2.024616000E3,6.178703582E1 +2.024868000E3,5.974424575E1 +2.025152000E3,5.863905018E1 +2.025429000E3,5.669082005E1 +2.025716000E3,6.192616195E1 +2.026008000E3,6.367561928E1 +2.026300000E3,6.061621393E1 +2.026543000E3,6.411900249E1 +2.026802000E3,6.060951858E1 +2.027066000E3,5.606119041E1 +2.027395000E3,5.099901519E1 +2.027693000E3,5.622472082E1 +2.027945000E3,5.354940616E1 +2.028237000E3,6.282566888E1 +2.028553000E3,5.775523802E1 +2.028868000E3,6.095006183E1 +2.029133000E3,6.333727439E1 +2.029399000E3,5.925545982E1 +2.029660000E3,6.045827699E1 +2.029962000E3,5.594587825E1 +2.030223000E3,5.708579081E1 +2.030478000E3,5.777704597E1 +2.030737000E3,5.406349508E1 +2.030990000E3,5.544037764E1 +2.031246000E3,5.912518025E1 +2.031508000E3,5.924806900E1 +2.031864000E3,6.105667153E1 +2.032110000E3,5.838466956E1 +2.032350000E3,5.923100201E1 +2.032598000E3,6.024290558E1 +2.032866000E3,5.971089342E1 +2.033112000E3,5.478665804E1 +2.033351000E3,5.966531235E1 +2.033644000E3,5.755565544E1 +2.033892000E3,5.982004182E1 +2.034190000E3,5.797424789E1 +2.034425000E3,5.856301863E1 +2.034717000E3,6.325478319E1 +2.035053000E3,6.168254294E1 +2.035364000E3,6.188857455E1 +2.035619000E3,6.156039581E1 +2.035901000E3,6.235770270E1 +2.036169000E3,6.262779828E1 +2.036471000E3,6.142542176E1 +2.036764000E3,5.923845966E1 +2.037022000E3,5.827266837E1 +2.037307000E3,6.314641141E1 +2.037615000E3,5.460230698E1 +2.037870000E3,5.396400232E1 +2.038120000E3,5.561122002E1 +2.038463000E3,5.928400391E1 +2.038767000E3,5.668934966E1 +2.039069000E3,5.831653467E1 +2.039316000E3,5.267103167E1 +2.039622000E3,5.557794232E1 +2.039859000E3,5.543606804E1 +2.040196000E3,5.836770370E1 +2.040499000E3,5.678092478E1 +2.040751000E3,5.612506795E1 +2.041024000E3,5.868430679E1 +2.041274000E3,5.264121586E1 +2.041581000E3,5.828774790E1 +2.041841000E3,5.647338053E1 +2.042088000E3,6.053709731E1 +2.042403000E3,5.614689861E1 +2.042691000E3,5.714845923E1 +2.042944000E3,5.256418368E1 +2.043191000E3,5.601486494E1 +2.043466000E3,5.810869150E1 +2.043715000E3,5.529893852E1 +2.043979000E3,5.708153712E1 +2.044245000E3,5.690179830E1 +2.044568000E3,5.994555064E1 +2.044825000E3,6.172126409E1 +2.045096000E3,6.015473895E1 +2.045377000E3,5.509344178E1 +2.045629000E3,5.568915719E1 +2.045902000E3,5.938619751E1 +2.046155000E3,5.534852098E1 +2.046409000E3,5.905391706E1 +2.046693000E3,5.250115201E1 +2.046947000E3,5.587771233E1 +2.047277000E3,5.599930929E1 +2.047517000E3,5.586822515E1 +2.047803000E3,5.740436533E1 +2.048105000E3,5.413600866E1 +2.048476000E3,5.595836709E1 +2.048737000E3,5.982743631E1 +2.048992000E3,6.001131240E1 +2.049305000E3,5.629713962E1 +2.049568000E3,5.505265617E1 +2.049904000E3,5.686004167E1 +2.050199000E3,6.078932545E1 +2.050470000E3,5.919030857E1 +2.050773000E3,5.640754436E1 +2.051052000E3,5.864124078E1 +2.051311000E3,5.683150656E1 +2.051642000E3,5.391893615E1 +2.051926000E3,4.513639699E1 +2.052174000E3,5.750824000E1 +2.052467000E3,5.945309138E1 +2.052703000E3,6.260915402E1 +2.052981000E3,6.017408744E1 +2.053276000E3,6.158293130E1 +2.053516000E3,6.279041899E1 +2.053759000E3,6.005362243E1 +2.054030000E3,5.776050932E1 +2.054357000E3,5.906607942E1 +2.054642000E3,6.002924771E1 +2.054978000E3,5.708591672E1 +2.055267000E3,5.932996992E1 +2.055552000E3,5.830703641E1 +2.055812000E3,5.428102985E1 +2.056063000E3,5.893384546E1 +2.056382000E3,6.028305726E1 +2.056682000E3,5.904357096E1 +2.056923000E3,6.015407432E1 +2.057171000E3,5.801677968E1 +2.057418000E3,6.561794532E1 +2.057665000E3,6.751214025E1 +2.057959000E3,5.899748641E1 +2.058279000E3,5.616162884E1 +2.058571000E3,5.813941707E1 +2.058834000E3,6.236684118E1 +2.059132000E3,6.058455193E1 +2.059376000E3,6.004963560E1 +2.059687000E3,6.255152045E1 +2.059984000E3,6.155697025E1 +2.060225000E3,6.124056229E1 +2.060517000E3,6.072549607E1 +2.060756000E3,6.119225814E1 +2.061060000E3,5.953618039E1 +2.061302000E3,5.869582322E1 +2.061578000E3,6.248269042E1 +2.061841000E3,6.070173510E1 +2.062089000E3,6.023992255E1 +2.062337000E3,5.848175462E1 +2.062607000E3,5.092907116E1 +2.062859000E3,5.442118268E1 +2.063124000E3,5.298599309E1 +2.063425000E3,6.030333428E1 +2.063671000E3,5.835700379E1 +2.063954000E3,5.943633389E1 +2.064268000E3,5.761479859E1 +2.064577000E3,5.520238299E1 +2.064822000E3,5.901822557E1 +2.065074000E3,5.705952734E1 +2.065339000E3,6.136116330E1 +2.065603000E3,5.746483296E1 +2.065865000E3,5.867757380E1 +2.066141000E3,5.709322981E1 +2.066441000E3,5.775131141E1 +2.066691000E3,5.886237327E1 +2.067036000E3,5.617972984E1 +2.067288000E3,5.802507148E1 +2.067560000E3,6.044497816E1 +2.067891000E3,5.450044868E1 +2.068148000E3,5.616761260E1 +2.068412000E3,6.243097888E1 +2.068673000E3,5.783788439E1 +2.068946000E3,5.764761585E1 +2.069196000E3,5.683737954E1 +2.069468000E3,5.609890848E1 +2.069778000E3,5.465619904E1 +2.070034000E3,5.368960846E1 +2.070328000E3,6.032893819E1 +2.070574000E3,5.862927742E1 +2.070842000E3,5.635830209E1 +2.071101000E3,5.822198053E1 +2.071339000E3,5.691346983E1 +2.071597000E3,5.865778618E1 +2.071860000E3,5.810560725E1 +2.072128000E3,5.968009174E1 +2.072425000E3,5.833852533E1 +2.072667000E3,5.784540163E1 +2.072934000E3,5.644439458E1 +2.073184000E3,5.178260396E1 +2.073488000E3,5.751445421E1 +2.073769000E3,5.974800721E1 +2.074068000E3,6.534291023E1 +2.074348000E3,6.371076652E1 +2.074624000E3,6.156132937E1 +2.074877000E3,6.012113548E1 +2.075119000E3,6.026351151E1 +2.075377000E3,6.142675581E1 +2.075661000E3,6.194478144E1 +2.075914000E3,6.183865569E1 +2.076267000E3,6.387512541E1 +2.076547000E3,6.077311287E1 +2.076803000E3,6.130963963E1 +2.077056000E3,5.862622582E1 +2.077295000E3,5.463497219E1 +2.077610000E3,5.484231095E1 +2.077891000E3,6.099801434E1 +2.078171000E3,5.475621164E1 +2.078466000E3,5.955577801E1 +2.078709000E3,5.720097088E1 +2.078954000E3,5.661944912E1 +2.079224000E3,5.443336360E1 +2.079503000E3,5.917559782E1 +2.079800000E3,5.424380486E1 +2.080057000E3,6.013762169E1 +2.080307000E3,6.100643768E1 +2.080558000E3,6.205128007E1 +2.080810000E3,6.007904071E1 +2.081092000E3,6.423414837E1 +2.081354000E3,5.938817614E1 +2.081601000E3,6.006860062E1 +2.081845000E3,5.833570272E1 +2.082143000E3,5.962915676E1 +2.082396000E3,5.844615966E1 +2.082663000E3,5.932060291E1 +2.082921000E3,6.037844323E1 +2.083227000E3,5.719168160E1 +2.083487000E3,5.597578938E1 +2.083743000E3,5.236775830E1 +2.084062000E3,5.471900653E1 +2.084318000E3,5.178371688E1 +2.084618000E3,5.707729304E1 +2.084858000E3,5.526812689E1 +2.085154000E3,5.716405930E1 +2.085391000E3,5.478798233E1 +2.085687000E3,5.496315929E1 +2.085932000E3,5.701239101E1 +2.086228000E3,5.776438308E1 +2.086467000E3,5.628202894E1 +2.086760000E3,5.042244376E1 +2.087015000E3,5.775963511E1 +2.087362000E3,4.982890988E1 +2.087671000E3,4.785672217E1 +2.087922000E3,4.762697394E1 +2.088178000E3,5.046726223E1 +2.088438000E3,4.890262424E1 +2.088711000E3,5.501277631E1 +2.088981000E3,5.666001705E1 +2.089249000E3,6.014252161E1 +2.089513000E3,5.925311989E1 +2.089806000E3,6.173820636E1 +2.090063000E3,5.350884215E1 +2.090366000E3,5.736408779E1 +2.090744000E3,5.450936109E1 +2.091005000E3,5.763377323E1 +2.091253000E3,6.042269191E1 +2.091515000E3,5.484903903E1 +2.091757000E3,5.882101591E1 +2.092028000E3,5.833139845E1 +2.092280000E3,5.703430671E1 +2.092527000E3,5.247783814E1 +2.092809000E3,5.233323676E1 +2.093037000E3,5.202869643E1 +2.093354000E3,5.628845797E1 +2.093634000E3,5.325396544E1 +2.094006000E3,5.654992892E1 +2.094280000E3,5.713253789E1 +2.094541000E3,5.967664240E1 +2.094800000E3,5.750232678E1 +2.095069000E3,5.544480371E1 +2.095333000E3,5.462176641E1 +2.095596000E3,5.811248949E1 +2.095853000E3,6.196847972E1 +2.096192000E3,5.842850461E1 +2.096488000E3,5.597774452E1 +2.096726000E3,5.601282925E1 +2.097104000E3,5.625832805E1 +2.097364000E3,5.315488909E1 +2.097602000E3,5.287250653E1 +2.097844000E3,5.523708836E1 +2.098081000E3,5.724292600E1 +2.098340000E3,5.659511238E1 +2.098670000E3,5.675324149E1 +2.098945000E3,5.485884276E1 +2.099219000E3,5.694143956E1 +2.099469000E3,5.561655413E1 +2.099765000E3,5.844909410E1 +2.100011000E3,6.135621316E1 +2.100343000E3,5.968766012E1 +2.100584000E3,5.173347950E1 +2.100832000E3,5.415548255E1 +2.101090000E3,5.271968845E1 +2.101339000E3,5.007174890E1 +2.101624000E3,5.279525002E1 +2.101895000E3,5.358558767E1 +2.102197000E3,5.559048142E1 +2.102438000E3,5.476305303E1 +2.102705000E3,5.237114911E1 +2.102947000E3,5.014972007E1 +2.103218000E3,4.895902935E1 +2.103469000E3,5.192053997E1 +2.103853000E3,4.647138436E1 +2.104101000E3,4.837766327E1 +2.104448000E3,5.088929287E1 +2.104740000E3,5.561591777E1 +2.104997000E3,5.440319534E1 +2.105260000E3,5.347164399E1 +2.105561000E3,5.151610441E1 +2.105813000E3,5.075382634E1 +2.106121000E3,5.244425755E1 +2.106357000E3,5.269617654E1 +2.106663000E3,5.149027406E1 +2.106954000E3,5.659456733E1 +2.107266000E3,5.282561460E1 +2.107606000E3,5.407918273E1 +2.107883000E3,5.643922092E1 +2.108164000E3,5.169657105E1 +2.108480000E3,5.713744586E1 +2.108748000E3,5.931186178E1 +2.109003000E3,5.645689600E1 +2.109252000E3,5.322874786E1 +2.109552000E3,5.363731782E1 +2.109821000E3,5.353815648E1 +2.110077000E3,5.445551750E1 +2.110418000E3,5.491110228E1 +2.110669000E3,5.291647814E1 +2.110921000E3,5.202914132E1 +2.111180000E3,5.363241827E1 +2.111479000E3,5.566624291E1 +2.111721000E3,5.645238247E1 +2.112027000E3,5.458458697E1 +2.112294000E3,5.469783372E1 +2.112597000E3,5.582449562E1 +2.112854000E3,5.595416398E1 +2.113105000E3,5.113785865E1 +2.113352000E3,6.248282803E1 +2.113711000E3,5.880495226E1 +2.113968000E3,5.941805617E1 +2.114248000E3,5.561632009E1 +2.114507000E3,5.501810850E1 +2.114754000E3,5.936291007E1 +2.115053000E3,6.127733734E1 +2.115321000E3,6.057491273E1 +2.115616000E3,6.127323198E1 +2.115893000E3,5.760488174E1 +2.116193000E3,6.030881831E1 +2.116434000E3,5.967518116E1 +2.116722000E3,5.720938908E1 +2.117066000E3,5.605932878E1 +2.117338000E3,6.068190844E1 +2.117598000E3,5.400374866E1 +2.117892000E3,5.332007667E1 +2.118133000E3,4.991979059E1 +2.118428000E3,5.700198654E1 +2.118666000E3,5.878418983E1 +2.118922000E3,5.703766890E1 +2.119230000E3,5.731012811E1 +2.119515000E3,5.865622099E1 +2.119741000E3,5.772295719E1 +2.120015000E3,5.851982083E1 +2.120322000E3,5.958645129E1 +2.120616000E3,6.233814130E1 +2.120861000E3,6.002711287E1 +2.121162000E3,5.939190004E1 +2.121437000E3,5.758195225E1 +2.121690000E3,5.564648712E1 +2.121946000E3,5.336629511E1 +2.122218000E3,5.199121426E1 +2.122476000E3,5.906368298E1 +2.122759000E3,5.917930836E1 +2.123014000E3,5.824882047E1 +2.123266000E3,5.770359270E1 +2.123492000E3,5.695638802E1 +2.123777000E3,5.720151485E1 +2.124027000E3,6.045411810E1 +2.124327000E3,5.540258870E1 +2.124575000E3,5.828000252E1 +2.124835000E3,5.500577731E1 +2.125106000E3,5.926473821E1 +2.125354000E3,5.472888078E1 +2.125611000E3,5.530970077E1 +2.125862000E3,5.595037084E1 +2.126117000E3,5.439239133E1 +2.126432000E3,5.961943996E1 +2.126692000E3,5.841091801E1 +2.126944000E3,5.863137443E1 +2.127282000E3,5.731398304E1 +2.127577000E3,5.665374527E1 +2.127843000E3,5.476493539E1 +2.128129000E3,5.580929465E1 +2.128437000E3,5.565551021E1 +2.128739000E3,5.869101147E1 +2.129026000E3,5.827114612E1 +2.129307000E3,5.507536074E1 +2.129577000E3,5.532393691E1 +2.129934000E3,5.233850306E1 +2.130215000E3,5.514372423E1 +2.130466000E3,5.757947445E1 +2.130714000E3,6.126034226E1 +2.131015000E3,6.074916673E1 +2.131279000E3,5.864911171E1 +2.131564000E3,5.680524431E1 +2.131825000E3,6.002252741E1 +2.132078000E3,5.953076168E1 +2.132390000E3,6.027427680E1 +2.132647000E3,5.955779136E1 +2.132902000E3,5.835756058E1 +2.133223000E3,6.286787860E1 +2.133471000E3,6.057291506E1 +2.133724000E3,5.893793659E1 +2.134002000E3,5.508555746E1 +2.134257000E3,5.619881839E1 +2.134512000E3,5.505764062E1 +2.134784000E3,5.808922162E1 +2.135054000E3,5.334583096E1 +2.135313000E3,5.298019930E1 +2.135595000E3,5.025342296E1 +2.135812000E3,5.409382682E1 +2.136057000E3,5.580950424E1 +2.136332000E3,5.523743716E1 +2.136661000E3,5.499005541E1 +2.136917000E3,5.745623005E1 +2.137196000E3,5.149169849E1 +2.137449000E3,5.261206885E1 +2.137711000E3,5.487518376E1 +2.138022000E3,5.898871991E1 +2.138270000E3,5.852026830E1 +2.138564000E3,5.868858262E1 +2.138802000E3,5.736353209E1 +2.139066000E3,5.529465652E1 +2.139332000E3,5.762578865E1 +2.139672000E3,5.790185487E1 +2.139930000E3,5.792373283E1 +2.140278000E3,5.597904656E1 +2.140535000E3,5.355980456E1 +2.140856000E3,5.411887429E1 +2.141146000E3,5.094976839E1 +2.141467000E3,5.658279242E1 +2.141735000E3,6.043792292E1 +2.142041000E3,5.996632022E1 +2.142276000E3,6.230155616E1 +2.142526000E3,6.102528468E1 +2.142783000E3,5.770338577E1 +2.143124000E3,5.827243883E1 +2.143406000E3,5.367650147E1 +2.143645000E3,5.777094487E1 +2.143915000E3,5.851595499E1 +2.144175000E3,5.573729509E1 +2.144454000E3,5.467626304E1 +2.144700000E3,5.699765591E1 +2.144968000E3,5.692170932E1 +2.145246000E3,6.030210344E1 +2.145550000E3,5.876913066E1 +2.145797000E3,5.698149837E1 +2.146042000E3,5.982717784E1 +2.146368000E3,5.905293636E1 +2.146676000E3,5.947032966E1 +2.146922000E3,5.910471730E1 +2.147225000E3,6.065874797E1 +2.147524000E3,5.680135408E1 +2.147831000E3,5.451199701E1 +2.148090000E3,5.301325775E1 +2.148365000E3,5.466040661E1 +2.148665000E3,5.658013689E1 +2.148952000E3,5.410667827E1 +2.149249000E3,5.788683658E1 +2.149597000E3,5.873903650E1 +2.149910000E3,5.314379433E1 +2.150150000E3,5.564952940E1 +2.150451000E3,6.000220607E1 +2.150691000E3,6.235870620E1 +2.150965000E3,6.387461990E1 +2.151194000E3,6.491001134E1 +2.151449000E3,5.932544814E1 +2.151756000E3,6.117684525E1 +2.152011000E3,6.059885605E1 +2.152282000E3,6.303246617E1 +2.152596000E3,6.399854390E1 +2.152961000E3,6.063746268E1 +2.153223000E3,6.122116723E1 +2.153495000E3,5.809397592E1 +2.153749000E3,5.903784259E1 +2.153999000E3,6.047826717E1 +2.154283000E3,5.846467986E1 +2.154537000E3,6.226879102E1 +2.154785000E3,5.980611807E1 +2.155079000E3,5.787450321E1 +2.155375000E3,5.676059962E1 +2.155616000E3,5.395823696E1 +2.155912000E3,5.953639288E1 +2.156221000E3,5.971614724E1 +2.156510000E3,6.039969801E1 +2.156758000E3,5.898776738E1 +2.157015000E3,6.100474003E1 +2.157289000E3,5.750129682E1 +2.157591000E3,5.995540643E1 +2.157844000E3,5.628303244E1 +2.158104000E3,5.892686601E1 +2.158366000E3,5.712884748E1 +2.158667000E3,5.727860760E1 +2.158932000E3,5.313556696E1 +2.159288000E3,5.635583768E1 +2.159555000E3,5.929473664E1 +2.159809000E3,5.396180560E1 +2.160112000E3,5.807023999E1 +2.160354000E3,5.639240346E1 +2.160608000E3,5.917728814E1 +2.160855000E3,5.429000157E1 +2.161130000E3,5.397827395E1 +2.161395000E3,5.647751800E1 +2.161656000E3,5.342605760E1 +2.162007000E3,5.324373839E1 +2.162263000E3,5.439383591E1 +2.162517000E3,5.727066505E1 +2.162888000E3,5.995593964E1 +2.163140000E3,6.130649482E1 +2.163392000E3,6.228130821E1 +2.163644000E3,6.279179388E1 +2.163938000E3,5.559527300E1 +2.164178000E3,5.200550071E1 +2.164481000E3,5.797363767E1 +2.164757000E3,5.902554678E1 +2.165040000E3,5.834647622E1 +2.165303000E3,5.713285380E1 +2.165575000E3,6.343633700E1 +2.165850000E3,5.896208706E1 +2.166219000E3,5.624501583E1 +2.166483000E3,5.696603075E1 +2.166769000E3,5.736978604E1 +2.167027000E3,5.837475894E1 +2.167278000E3,5.768129207E1 +2.167593000E3,5.660761865E1 +2.167856000E3,5.680076310E1 +2.168110000E3,5.883044450E1 +2.168385000E3,5.772028600E1 +2.168649000E3,5.342008664E1 +2.168914000E3,5.359113324E1 +2.169168000E3,5.849769703E1 +2.169536000E3,6.267181821E1 +2.169793000E3,5.719603223E1 +2.170040000E3,5.397233107E1 +2.170287000E3,4.861027503E1 +2.170579000E3,5.741564583E1 +2.170822000E3,6.207812430E1 +2.171115000E3,5.827753689E1 +2.171365000E3,6.042202215E1 +2.171629000E3,5.516417228E1 +2.171895000E3,4.912315476E1 +2.172163000E3,4.718316305E1 +2.172446000E3,5.363129541E1 +2.172813000E3,5.322378335E1 +2.173087000E3,5.228499961E1 +2.173349000E3,5.364722432E1 +2.173618000E3,5.964999675E1 +2.173917000E3,6.116591719E1 +2.174174000E3,5.668310324E1 +2.174436000E3,5.538937699E1 +2.174688000E3,5.539330891E1 +2.174944000E3,5.678019084E1 +2.175197000E3,5.655985061E1 +2.175490000E3,6.211643319E1 +2.175751000E3,5.899842059E1 +2.176153000E3,6.042080027E1 +2.176454000E3,5.956376587E1 +2.176730000E3,5.896716838E1 +2.177048000E3,5.729778676E1 +2.177305000E3,5.512323216E1 +2.177616000E3,5.573124529E1 +2.177883000E3,5.390669828E1 +2.178139000E3,5.435017850E1 +2.178403000E3,5.275779180E1 +2.178672000E3,5.469054235E1 +2.178938000E3,5.701832565E1 +2.179201000E3,6.063134316E1 +2.179540000E3,6.461030243E1 +2.179799000E3,6.345934666E1 +2.180043000E3,6.255021373E1 +2.180348000E3,6.265836689E1 +2.180640000E3,6.125083403E1 +2.180878000E3,5.721943432E1 +2.181125000E3,5.584429631E1 +2.181407000E3,5.679219567E1 +2.181647000E3,5.506189996E1 +2.181962000E3,5.950753578E1 +2.182227000E3,5.684863204E1 +2.182499000E3,5.318048388E1 +2.182825000E3,5.856807028E1 +2.183124000E3,6.201159961E1 +2.183360000E3,5.994279105E1 +2.183661000E3,6.155626338E1 +2.183904000E3,5.760612799E1 +2.184197000E3,5.557219911E1 +2.184436000E3,5.720299401E1 +2.184730000E3,5.496492062E1 +2.184965000E3,5.287669523E1 +2.185272000E3,5.534018340E1 +2.185572000E3,5.047897567E1 +2.185897000E3,5.289532450E1 +2.186149000E3,5.169587435E1 +2.186428000E3,5.811856565E1 +2.186722000E3,5.829930976E1 +2.187016000E3,5.767171180E1 +2.187297000E3,5.167293983E1 +2.187542000E3,5.634712904E1 +2.187793000E3,5.452173951E1 +2.188038000E3,5.242356157E1 +2.188332000E3,5.476946331E1 +2.188570000E3,5.506415879E1 +2.188807000E3,5.842757277E1 +2.189123000E3,5.579731569E1 +2.189400000E3,5.735467547E1 +2.189707000E3,5.510643622E1 +2.189947000E3,5.399605596E1 +2.190247000E3,5.231812124E1 +2.190482000E3,5.397423501E1 +2.190722000E3,5.467291530E1 +2.190972000E3,5.750340972E1 +2.191219000E3,5.451621797E1 +2.191527000E3,5.544744059E1 +2.191775000E3,5.570906247E1 +2.192040000E3,5.570238792E1 +2.192395000E3,5.704729905E1 +2.192674000E3,5.662202644E1 +2.192969000E3,6.130245708E1 +2.193206000E3,5.842239411E1 +2.193505000E3,5.813812757E1 +2.193745000E3,5.643123308E1 +2.194038000E3,5.810403241E1 +2.194275000E3,5.863690353E1 +2.194574000E3,5.519980518E1 +2.194810000E3,5.381530940E1 +2.195092000E3,5.781601666E1 +2.195335000E3,5.699265058E1 +2.195608000E3,5.477338243E1 +2.195929000E3,5.695412826E1 +2.196188000E3,5.575935497E1 +2.196439000E3,5.738570553E1 +2.196686000E3,6.194168224E1 +2.196969000E3,5.888525061E1 +2.197270000E3,5.830791470E1 +2.197516000E3,5.904778886E1 +2.197822000E3,5.987539712E1 +2.198117000E3,5.910637217E1 +2.198355000E3,5.676446576E1 +2.198673000E3,5.632729175E1 +2.198920000E3,5.826507178E1 +2.199227000E3,6.221847088E1 +2.199493000E3,6.023584539E1 +2.199739000E3,6.378124478E1 +2.199975000E3,6.457706819E1 +2.200218000E3,5.781084826E1 +2.200471000E3,5.833307765E1 +2.200715000E3,5.849295856E1 +2.200984000E3,5.695016071E1 +2.201255000E3,5.945608920E1 +2.201511000E3,5.923858391E1 +2.201821000E3,5.975381188E1 +2.202050000E3,5.657071344E1 +2.202297000E3,5.582353283E1 +2.202552000E3,5.634201272E1 +2.202803000E3,5.842061156E1 +2.203080000E3,5.511323996E1 +2.203339000E3,5.333816234E1 +2.203589000E3,5.586132206E1 +2.203867000E3,5.612282959E1 +2.204151000E3,5.390907932E1 +2.204405000E3,5.581501331E1 +2.204648000E3,5.691201261E1 +2.204938000E3,5.605209961E1 +2.205271000E3,5.337227455E1 +2.205520000E3,5.726868677E1 +2.205824000E3,5.678400386E1 +2.206068000E3,5.598615724E1 +2.206327000E3,6.245548090E1 +2.206634000E3,5.788335624E1 +2.206927000E3,5.672312442E1 +2.207166000E3,5.700846075E1 +2.207464000E3,5.693157148E1 +2.207703000E3,5.667671942E1 +2.207995000E3,5.655907845E1 +2.208344000E3,5.694003799E1 +2.208592000E3,5.812693102E1 +2.208844000E3,5.305590014E1 +2.209133000E3,5.963333488E1 +2.209376000E3,6.125764761E1 +2.209621000E3,5.708540532E1 +2.209865000E3,5.539532482E1 +2.210177000E3,6.086117928E1 +2.210432000E3,5.871599576E1 +2.210705000E3,5.720891289E1 +2.210929000E3,5.859137268E1 +2.211185000E3,5.492761595E1 +2.211566000E3,5.458369125E1 +2.211811000E3,5.704243717E1 +2.212094000E3,5.948204172E1 +2.212325000E3,5.442994388E1 +2.212570000E3,5.607391365E1 +2.212815000E3,5.349643391E1 +2.213089000E3,5.518134225E1 +2.213397000E3,5.879499176E1 +2.213659000E3,5.918920409E1 +2.213917000E3,6.317166487E1 +2.214205000E3,5.773325998E1 +2.214505000E3,6.021667659E1 +2.214834000E3,5.707564648E1 +2.215074000E3,5.411436798E1 +2.215412000E3,5.705541238E1 +2.215699000E3,6.721672427E1 +2.215946000E3,6.130402498E1 +2.216241000E3,5.914242022E1 +2.216493000E3,5.881747375E1 +2.216786000E3,5.920115687E1 +2.217030000E3,5.981753209E1 +2.217325000E3,5.379848698E1 +2.217566000E3,5.498057230E1 +2.217931000E3,5.647867672E1 +2.218210000E3,5.460935805E1 +2.218440000E3,5.579228446E1 +2.218740000E3,5.598523495E1 +2.218992000E3,5.501198671E1 +2.219248000E3,5.270876730E1 +2.219495000E3,5.711255338E1 +2.219767000E3,5.276578476E1 +2.220009000E3,6.171644376E1 +2.220307000E3,5.760035427E1 +2.220557000E3,6.039071701E1 +2.220820000E3,5.947563028E1 +2.221166000E3,5.781157464E1 +2.221459000E3,5.689764898E1 +2.221740000E3,5.361204154E1 +2.221998000E3,5.565584232E1 +2.222252000E3,6.236264054E1 +2.222508000E3,5.583706888E1 +2.222794000E3,5.998886151E1 +2.223038000E3,6.067027795E1 +2.223281000E3,5.953550256E1 +2.223512000E3,6.087865846E1 +2.223764000E3,5.880177247E1 +2.224056000E3,5.532032645E1 +2.224389000E3,5.110554887E1 +2.224697000E3,6.082114583E1 +2.224957000E3,6.332269799E1 +2.225225000E3,5.859152014E1 +2.225521000E3,6.312344162E1 +2.225760000E3,6.208500503E1 +2.226003000E3,6.030377984E1 +2.226280000E3,5.890306026E1 +2.226553000E3,6.412257006E1 +2.226813000E3,5.959239884E1 +2.227137000E3,5.603893495E1 +2.227460000E3,5.807576772E1 +2.227717000E3,6.034272760E1 +2.227950000E3,5.678924442E1 +2.228211000E3,5.767938832E1 +2.228489000E3,4.973605337E1 +2.228742000E3,5.227056153E1 +2.229007000E3,4.524576382E1 +2.229320000E3,5.163901012E1 +2.229633000E3,5.791269320E1 +2.229909000E3,5.832692980E1 +2.230223000E3,5.512940778E1 +2.230487000E3,5.639998631E1 +2.230845000E3,6.012111222E1 +2.231113000E3,6.632176219E1 +2.231407000E3,6.692769565E1 +2.231662000E3,6.409372191E1 +2.231945000E3,6.268702605E1 +2.232208000E3,6.192012265E1 +2.232460000E3,5.923306273E1 +2.232717000E3,5.726340446E1 +2.233005000E3,5.708270925E1 +2.233256000E3,6.172203942E1 +2.233510000E3,6.197059155E1 +2.233807000E3,6.691458644E1 +2.234160000E3,6.165007134E1 +2.234422000E3,6.172053486E1 +2.234714000E3,6.148833899E1 +2.234974000E3,6.190331921E1 +2.235253000E3,5.938090919E1 +2.235479000E3,6.223060920E1 +2.235722000E3,6.133640397E1 +2.236028000E3,6.400294095E1 +2.236269000E3,6.581462957E1 +2.236516000E3,6.094953675E1 +2.236828000E3,5.792232456E1 +2.237124000E3,5.750665846E1 +2.237367000E3,5.360734442E1 +2.237668000E3,5.239836763E1 +2.237914000E3,5.189659577E1 +2.238168000E3,5.779541581E1 +2.238431000E3,5.409030702E1 +2.238689000E3,5.064192938E1 +2.238941000E3,4.890244292E1 +2.239235000E3,4.958738332E1 +2.239486000E3,5.093509792E1 +2.239725000E3,5.421091975E1 +2.239970000E3,6.074883769E1 +2.240298000E3,5.611992467E1 +2.240604000E3,4.988071111E1 +2.240900000E3,4.952063126E1 +2.241187000E3,5.282005772E1 +2.241428000E3,5.672648648E1 +2.241685000E3,5.807464117E1 +2.241973000E3,5.565097745E1 +2.242224000E3,5.410363002E1 +2.242475000E3,5.548804216E1 +2.242720000E3,5.862108370E1 +2.242959000E3,5.101243713E1 +2.243259000E3,5.340920814E1 +2.243564000E3,5.471013043E1 +2.243801000E3,5.474536753E1 +2.244062000E3,5.454012147E1 +2.244333000E3,5.594751460E1 +2.244637000E3,5.486159050E1 +2.244913000E3,5.317501502E1 +2.245138000E3,5.100209753E1 +2.245397000E3,5.436827206E1 +2.245643000E3,5.483479867E1 +2.245916000E3,5.150486026E1 +2.246182000E3,5.049924887E1 +2.246449000E3,5.226067252E1 +2.246744000E3,5.389432372E1 +2.247057000E3,6.032791953E1 +2.247330000E3,5.966662928E1 +2.247666000E3,5.824962285E1 +2.247962000E3,5.700720490E1 +2.248202000E3,6.373200887E1 +2.248495000E3,6.648419927E1 +2.248743000E3,5.542652488E1 +2.249036000E3,5.256926371E1 +2.249272000E3,6.053195001E1 +2.249564000E3,4.959074314E1 +2.249800000E3,5.054384460E1 +2.250136000E3,5.008489809E1 +2.250431000E3,5.752384263E1 +2.250666000E3,5.367007636E1 +2.250931000E3,4.851936559E1 +2.251210000E3,4.965482987E1 +2.251497000E3,5.733244198E1 +2.251772000E3,5.370188093E1 +2.251997000E3,5.388650114E1 +2.252246000E3,5.331606518E1 +2.252516000E3,5.534782747E1 +2.252818000E3,5.271944154E1 +2.253047000E3,5.188974945E1 +2.253402000E3,5.040855384E1 +2.253689000E3,5.348452962E1 +2.253965000E3,5.685197701E1 +2.254240000E3,5.699151925E1 +2.254539000E3,5.217481719E1 +2.254794000E3,5.255063115E1 +2.255035000E3,5.258436032E1 +2.255283000E3,5.228429265E1 +2.255592000E3,5.187189315E1 +2.255851000E3,5.089851896E1 +2.256105000E3,5.323192817E1 +2.256387000E3,5.259240607E1 +2.256752000E3,5.489099725E1 +2.257016000E3,5.140699592E1 +2.257276000E3,5.478139635E1 +2.257600000E3,5.508183343E1 +2.257864000E3,5.539199709E1 +2.258160000E3,5.879728075E1 +2.258399000E3,6.145510373E1 +2.258645000E3,6.018082278E1 +2.258890000E3,6.203490998E1 +2.259131000E3,6.051201097E1 +2.259385000E3,5.741582229E1 +2.259629000E3,5.742200481E1 +2.259994000E3,5.205318956E1 +2.260295000E3,5.807019657E1 +2.260539000E3,5.843419178E1 +2.260841000E3,5.543595349E1 +2.261104000E3,5.208978608E1 +2.261348000E3,5.288295424E1 +2.261601000E3,5.593156434E1 +2.261856000E3,5.600009221E1 +2.262108000E3,5.581775464E1 +2.262358000E3,5.037081152E1 +2.262613000E3,5.059162693E1 +2.262916000E3,5.459372597E1 +2.263271000E3,5.581642194E1 +2.263548000E3,5.702582989E1 +2.263802000E3,5.531282217E1 +2.264049000E3,5.356460573E1 +2.264318000E3,5.682743962E1 +2.264564000E3,5.353127135E1 +2.264854000E3,5.962134934E1 +2.265080000E3,5.858968032E1 +2.265326000E3,5.681259568E1 +2.265625000E3,5.635120121E1 +2.265871000E3,5.433379551E1 +2.266211000E3,4.913835205E1 +2.266510000E3,5.243179137E1 +2.266783000E3,4.886918417E1 +2.267043000E3,4.774131335E1 +2.267292000E3,4.892025491E1 +2.267553000E3,4.710213612E1 +2.267796000E3,4.847827931E1 +2.268042000E3,5.624471818E1 +2.268281000E3,5.286977188E1 +2.268548000E3,5.683989489E1 +2.268800000E3,5.459251055E1 +2.269086000E3,5.272841607E1 +2.269389000E3,5.585343514E1 +2.269616000E3,5.452972356E1 +2.269865000E3,5.183250423E1 +2.270167000E3,4.733442261E1 +2.270442000E3,4.736450762E1 +2.270667000E3,4.430645798E1 +2.270915000E3,4.635257501E1 +2.271160000E3,4.914582650E1 +2.271407000E3,4.938157659E1 +2.271656000E3,4.788630853E1 +2.271896000E3,4.778446083E1 +2.272198000E3,5.081637081E1 +2.272482000E3,4.630509256E1 +2.272722000E3,4.551027932E1 +2.273048000E3,5.074623045E1 +2.273321000E3,4.689236254E1 +2.273562000E3,4.960242652E1 +2.273859000E3,5.310274016E1 +2.274104000E3,5.391997859E1 +2.274392000E3,4.854992165E1 +2.274648000E3,4.610161890E1 +2.274915000E3,5.325141064E1 +2.275196000E3,4.823989698E1 +2.275460000E3,5.167706762E1 +2.275772000E3,4.424461998E1 +2.276008000E3,4.957193490E1 +2.276258000E3,4.220429916E1 +2.276545000E3,4.614900045E1 +2.276809000E3,4.247109284E1 +2.277119000E3,5.104311310E1 +2.277385000E3,4.898949856E1 +2.277651000E3,5.033981280E1 +2.277920000E3,4.504255509E1 +2.278210000E3,4.851295637E1 +2.278452000E3,4.975001222E1 +2.278771000E3,5.198599663E1 +2.279101000E3,5.078534391E1 +2.279348000E3,5.056977572E1 +2.279614000E3,4.645427419E1 +2.279894000E3,4.837428182E1 +2.280121000E3,4.672417188E1 +2.280416000E3,4.338010131E1 +2.280671000E3,4.552410696E1 +2.280941000E3,4.107346609E1 +2.281195000E3,4.850760260E1 +2.281477000E3,4.449785068E1 +2.281730000E3,3.834743898E1 +2.282028000E3,3.160451104E1 +2.282275000E3,2.921367430E1 +2.282509000E3,3.929432216E1 +2.282771000E3,3.560833020E1 +2.283021000E3,4.204425230E1 +2.283277000E3,4.897505461E1 +2.283570000E3,4.492050546E1 +2.283802000E3,4.549624302E1 +2.284053000E3,4.703134831E1 +2.284302000E3,4.492779574E1 +2.284580000E3,5.573526523E1 +2.284888000E3,4.583204799E1 +2.285186000E3,3.987632497E1 +2.285426000E3,4.276483306E1 +2.285670000E3,4.196646636E1 +2.285974000E3,4.127295807E1 +2.286241000E3,3.392540836E1 +2.286513000E3,3.045281657E1 +2.286755000E3,3.056149566E1 +2.287058000E3,4.234115907E1 +2.287358000E3,4.148011807E1 +2.287615000E3,4.752316696E1 +2.287890000E3,4.261643768E1 +2.288186000E3,3.531031146E1 +2.288451000E3,3.336926272E1 +2.288830000E3,3.217663691E1 +2.289083000E3,3.280943829E1 +2.289350000E3,4.037024361E1 +2.289606000E3,4.463743016E1 +2.289870000E3,3.926930450E1 +2.290142000E3,3.549021170E1 +2.290376000E3,3.657210104E1 +2.290669000E3,3.609483404E1 +2.290917000E3,3.935001060E1 +2.291190000E3,3.968762383E1 +2.291417000E3,3.622062011E1 +2.291698000E3,5.052972627E1 +2.292019000E3,4.472329620E1 +2.292314000E3,3.528869928E1 +2.292580000E3,3.171318762E1 +2.292867000E3,3.293682859E1 +2.293112000E3,2.980662334E1 +2.293408000E3,3.108877030E1 +2.293645000E3,3.411108767E1 +2.293948000E3,2.929195023E1 +2.294231000E3,2.830259325E1 +2.294484000E3,2.905088910E1 +2.294732000E3,3.046102835E1 +2.295049000E3,2.679058069E1 +2.295347000E3,2.620731663E1 +2.295594000E3,3.509528145E1 +2.295836000E3,2.657946529E1 +2.296130000E3,2.511368258E1 +2.296378000E3,2.555955915E1 +2.296634000E3,2.785949260E1 +2.296875000E3,2.654407944E1 +2.297117000E3,3.658368449E1 +2.297412000E3,3.412054652E1 +2.297648000E3,3.448252102E1 +2.297956000E3,3.528486686E1 +2.298205000E3,3.265291425E1 +2.298494000E3,2.963788314E1 +2.298798000E3,3.350933300E1 +2.299085000E3,3.038301619E1 +2.299338000E3,3.357142506E1 +2.299610000E3,4.744800671E1 +2.299868000E3,3.435626076E1 +2.300142000E3,3.368274389E1 +2.300402000E3,2.881246111E1 +2.300655000E3,3.097762310E1 +2.300898000E3,2.947567056E1 +2.301182000E3,3.214187359E1 +2.301423000E3,3.421070745E1 +2.301786000E3,5.117970534E1 +2.302087000E3,5.037784077E1 +2.302335000E3,5.283937176E1 +2.302644000E3,5.164119106E1 +2.302941000E3,5.300709748E1 +2.303240000E3,4.713488810E1 +2.303488000E3,4.524114677E1 +2.303739000E3,3.080285972E1 +2.304022000E3,2.293405577E1 +2.304254000E3,2.235464386E1 +2.304552000E3,2.949911358E1 +2.304876000E3,4.141349798E1 +2.305182000E3,4.156611078E1 +2.305491000E3,4.347125429E1 +2.305797000E3,4.579894404E1 +2.306107000E3,4.646123013E1 +2.306358000E3,4.517240887E1 +2.306604000E3,5.308475174E1 +2.306870000E3,4.681256924E1 +2.307168000E3,2.942058533E1 +2.307450000E3,2.986114457E1 +2.307717000E3,3.195150356E1 +2.308031000E3,3.775567348E1 +2.308265000E3,3.823556499E1 +2.308570000E3,2.909536341E1 +2.308842000E3,3.096070220E1 +2.309098000E3,4.060687649E1 +2.309391000E3,4.820113946E1 +2.309687000E3,4.619079404E1 +2.309928000E3,4.304793785E1 +2.310216000E3,4.976144450E1 +2.310446000E3,4.779148829E1 +2.310686000E3,5.167703897E1 +2.310979000E3,3.773719280E1 +2.311248000E3,2.923821784E1 +2.311466000E3,2.654081756E1 +2.311763000E3,2.616593312E1 +2.312001000E3,2.460963519E1 +2.312285000E3,2.554564289E1 +2.312588000E3,3.572755404E1 +2.312856000E3,4.274835909E1 +2.313074000E3,4.355953935E1 +2.313375000E3,5.377727845E1 +2.313611000E3,5.435235813E1 +2.313893000E3,5.477010993E1 +2.314137000E3,5.142421895E1 +2.314483000E3,4.794670725E1 +2.314780000E3,5.149445419E1 +2.315019000E3,5.127618051E1 +2.315306000E3,4.939341348E1 +2.315533000E3,4.928824788E1 +2.315832000E3,4.617335031E1 +2.316069000E3,3.696469062E1 +2.316377000E3,4.552948924E1 +2.316627000E3,4.672923062E1 +2.316913000E3,4.504192742E1 +2.317215000E3,4.364234368E1 +2.317558000E3,4.231291453E1 +2.317853000E3,4.886663905E1 +2.318118000E3,4.492895691E1 +2.318412000E3,4.464681620E1 +2.318711000E3,4.698360224E1 +2.318950000E3,4.454369095E1 +2.319250000E3,4.409609939E1 +2.319494000E3,4.283121809E1 +2.319793000E3,4.398770219E1 +2.320040000E3,4.728522548E1 +2.320336000E3,4.533798443E1 +2.320660000E3,4.548359371E1 +2.320908000E3,4.366718291E1 +2.321152000E3,5.139935964E1 +2.321408000E3,4.747980864E1 +2.321709000E3,3.867643032E1 +2.321952000E3,4.294445900E1 +2.322196000E3,4.336333736E1 +2.322445000E3,3.890531131E1 +2.322682000E3,4.087281677E1 +2.322980000E3,3.979668464E1 +2.323225000E3,4.157042707E1 +2.323553000E3,4.515881082E1 +2.323886000E3,3.868360739E1 +2.324184000E3,4.839319184E1 +2.324428000E3,4.298284223E1 +2.324669000E3,4.433761346E1 +2.324987000E3,4.011512195E1 +2.325233000E3,3.478551365E1 +2.325486000E3,4.180203002E1 +2.325789000E3,4.323726184E1 +2.326086000E3,3.985791110E1 +2.326333000E3,3.946244529E1 +2.326667000E3,4.066537977E1 +2.326925000E3,3.986903649E1 +2.327223000E3,4.142461274E1 +2.327521000E3,3.461788217E1 +2.327778000E3,3.326602717E1 +2.328102000E3,4.357074645E1 +2.328367000E3,5.496493564E1 +2.328618000E3,4.413482695E1 +2.328920000E3,4.170999616E1 +2.329183000E3,4.107694173E1 +2.329486000E3,5.342371220E1 +2.329729000E3,5.103134188E1 +2.330028000E3,4.716459977E1 +2.330382000E3,4.916498276E1 +2.330642000E3,4.801561309E1 +2.330930000E3,4.860033329E1 +2.331211000E3,5.037441690E1 +2.331463000E3,5.227972551E1 +2.331719000E3,4.516533742E1 +2.331971000E3,4.623606604E1 +2.332268000E3,3.207985320E1 +2.332513000E3,3.485208029E1 +2.332801000E3,4.367306984E1 +2.333109000E3,4.764897626E1 +2.333397000E3,4.844411921E1 +2.333779000E3,4.624834459E1 +2.334088000E3,4.492130047E1 +2.334331000E3,4.172849812E1 +2.334618000E3,4.243441154E1 +2.334859000E3,4.155300890E1 +2.335165000E3,3.508017133E1 +2.335414000E3,3.102497597E1 +2.335689000E3,3.346102792E1 +2.335938000E3,2.980210924E1 +2.336237000E3,2.815695425E1 +2.336480000E3,4.530841757E1 +2.336824000E3,4.476742737E1 +2.337075000E3,4.460293889E1 +2.337332000E3,5.054872999E1 +2.337583000E3,4.962100100E1 +2.337845000E3,5.224787063E1 +2.338132000E3,4.845338775E1 +2.338374000E3,4.675501048E1 +2.338651000E3,4.806540095E1 +2.338903000E3,4.707869991E1 +2.339145000E3,4.747595477E1 +2.339395000E3,3.449909829E1 +2.339700000E3,4.619360178E1 +2.340033000E3,4.785644508E1 +2.340329000E3,4.721347586E1 +2.340579000E3,4.302992844E1 +2.340828000E3,4.629706327E1 +2.341122000E3,4.550319757E1 +2.341368000E3,4.510038554E1 +2.341611000E3,4.752886315E1 +2.341876000E3,4.524122211E1 +2.342135000E3,2.990386366E1 +2.342396000E3,3.647672774E1 +2.342679000E3,2.854891758E1 +2.342936000E3,3.995722191E1 +2.343310000E3,4.501906630E1 +2.343555000E3,4.872212276E1 +2.343839000E3,4.566863325E1 +2.344134000E3,3.946814595E1 +2.344384000E3,4.796193013E1 +2.344656000E3,4.858552009E1 +2.344961000E3,4.902627763E1 +2.345257000E3,4.467711671E1 +2.345498000E3,3.756709071E1 +2.345764000E3,2.964206509E1 +2.346064000E3,4.283044167E1 +2.346415000E3,4.191014925E1 +2.346743000E3,4.910031818E1 +2.347021000E3,5.022624274E1 +2.347337000E3,5.257970130E1 +2.347586000E3,4.764257555E1 +2.347831000E3,4.353349182E1 +2.348126000E3,4.318604201E1 +2.348436000E3,4.825752031E1 +2.348710000E3,4.464987037E1 +2.348968000E3,4.690302679E1 +2.349225000E3,4.464063657E1 +2.349495000E3,5.114524492E1 +2.349740000E3,4.345049547E1 +2.350133000E3,4.655800825E1 +2.350382000E3,4.419356370E1 +2.350688000E3,4.308388818E1 +2.350960000E3,4.964188075E1 +2.351269000E3,5.137042419E1 +2.351542000E3,4.751708919E1 +2.351836000E3,3.239228651E1 +2.352067000E3,3.331178705E1 +2.352357000E3,4.628654550E1 +2.352625000E3,4.653844798E1 +2.352938000E3,4.419734850E1 +2.353231000E3,3.771763539E1 +2.353458000E3,3.489550836E1 +2.353713000E3,2.965581776E1 +2.353962000E3,3.457100474E1 +2.354201000E3,3.291595658E1 +2.354446000E3,2.791603976E1 +2.354711000E3,3.307930362E1 +2.355027000E3,5.311162000E1 +2.355290000E3,4.688373373E1 +2.355581000E3,3.663543876E1 +2.355868000E3,2.834403560E1 +2.356176000E3,5.001680718E1 +2.356518000E3,5.349221251E1 +2.356780000E3,5.234097025E1 +2.357043000E3,4.476475434E1 +2.357349000E3,5.160193390E1 +2.357584000E3,4.375385010E1 +2.357840000E3,3.709166207E1 +2.358125000E3,2.927191182E1 +2.358378000E3,4.114289062E1 +2.358676000E3,4.266518399E1 +2.358921000E3,4.641380631E1 +2.359210000E3,4.551221179E1 +2.359545000E3,4.099683883E1 +2.359801000E3,5.202602500E1 +2.360072000E3,5.207875379E1 +2.360343000E3,4.670310433E1 +2.360619000E3,4.619168123E1 +2.360865000E3,4.348453495E1 +2.361113000E3,4.603882932E1 +2.361353000E3,4.061885274E1 +2.361649000E3,4.873355826E1 +2.361884000E3,4.796347566E1 +2.362174000E3,4.419543811E1 +2.362420000E3,4.412529768E1 +2.362674000E3,4.315515456E1 +2.363006000E3,3.718353950E1 +2.363303000E3,4.131746877E1 +2.363556000E3,3.462830696E1 +2.363825000E3,3.224809166E1 +2.364105000E3,2.946532539E1 +2.364420000E3,4.082560353E1 +2.364671000E3,4.169760242E1 +2.364916000E3,4.728483165E1 +2.365158000E3,4.384961396E1 +2.365493000E3,3.327447630E1 +2.365797000E3,2.406470586E1 +2.366141000E3,2.410271882E1 +2.366422000E3,4.124818432E1 +2.366699000E3,4.300386829E1 +2.366994000E3,4.592409288E1 +2.367239000E3,4.402074721E1 +2.367492000E3,4.331525310E1 +2.367744000E3,4.351543939E1 +2.368045000E3,4.861325913E1 +2.368277000E3,4.345520025E1 +2.368543000E3,5.037549285E1 +2.368790000E3,3.455268589E1 +2.369034000E3,3.454484220E1 +2.369300000E3,3.436570372E1 +2.369544000E3,3.180799867E1 +2.369820000E3,4.460893996E1 +2.370091000E3,5.635981603E1 +2.370383000E3,4.932803438E1 +2.370635000E3,5.123791361E1 +2.370939000E3,4.749913119E1 +2.371193000E3,4.606624254E1 +2.371498000E3,4.453668838E1 +2.371779000E3,4.424564317E1 +2.372081000E3,5.022357768E1 +2.372347000E3,4.983363592E1 +2.372720000E3,4.311987242E1 +2.372969000E3,4.071927446E1 +2.373234000E3,3.624584431E1 +2.373535000E3,3.338407859E1 +2.373777000E3,2.744030282E1 +2.374025000E3,4.017686066E1 +2.374281000E3,4.153799732E1 +2.374537000E3,5.163713220E1 +2.374786000E3,4.970373114E1 +2.375033000E3,4.601563593E1 +2.375284000E3,4.943210146E1 +2.375577000E3,5.208741018E1 +2.375935000E3,4.780129348E1 +2.376167000E3,4.632707744E1 +2.376478000E3,5.008962536E1 +2.376734000E3,4.691729314E1 +2.376987000E3,4.593220796E1 +2.377250000E3,4.703621615E1 +2.377550000E3,4.863501898E1 +2.377838000E3,4.747349412E1 +2.378102000E3,4.430216971E1 +2.378373000E3,5.038477253E1 +2.378648000E3,4.679597376E1 +2.378873000E3,3.998762784E1 +2.379232000E3,4.140472709E1 +2.379480000E3,3.803559367E1 +2.379735000E3,4.292956565E1 +2.379993000E3,3.275484639E1 +2.380260000E3,3.159298587E1 +2.380513000E3,3.066195183E1 +2.380756000E3,4.846258942E1 +2.381012000E3,4.617374426E1 +2.381278000E3,4.338282331E1 +2.381580000E3,2.990070560E1 +2.381878000E3,3.384826320E1 +2.382127000E3,4.352773294E1 +2.382476000E3,3.711143795E1 +2.382756000E3,4.818117865E1 +2.383001000E3,4.694356023E1 +2.383312000E3,4.713242320E1 +2.383556000E3,4.945634369E1 +2.383815000E3,3.710449888E1 +2.384109000E3,4.990714727E1 +2.384350000E3,5.101970483E1 +2.384663000E3,4.290224010E1 +2.384917000E3,3.958873166E1 +2.385203000E3,4.207919898E1 +2.385583000E3,3.937588823E1 +2.385864000E3,3.927490117E1 +2.386122000E3,3.708577985E1 +2.386378000E3,3.104425869E1 +2.386630000E3,2.579918418E1 +2.386935000E3,4.201717352E1 +2.387186000E3,4.469788103E1 +2.387445000E3,3.928301867E1 +2.387699000E3,4.425054811E1 +2.387999000E3,2.901032620E1 +2.388242000E3,2.431535493E1 +2.388542000E3,4.330806788E1 +2.388866000E3,4.587852948E1 +2.389138000E3,5.068663336E1 +2.389420000E3,5.151872270E1 +2.389764000E3,4.501157372E1 +2.390012000E3,4.508008781E1 +2.390288000E3,4.471818734E1 +2.390546000E3,4.453717168E1 +2.390828000E3,3.435610332E1 +2.391113000E3,3.644941891E1 +2.391398000E3,3.741409627E1 +2.391658000E3,4.311052254E1 +2.391963000E3,3.924877335E1 +2.392296000E3,3.956869731E1 +2.392537000E3,3.230149795E1 +2.392786000E3,2.941450360E1 +2.393103000E3,3.366208400E1 +2.393349000E3,2.633153711E1 +2.393653000E3,2.492589605E1 +2.393892000E3,3.518582310E1 +2.394201000E3,3.668564238E1 +2.394454000E3,3.528359554E1 +2.394744000E3,3.673717548E1 +2.395034000E3,2.851979476E1 +2.395378000E3,2.558396774E1 +2.395660000E3,3.919896752E1 +2.395930000E3,3.339597104E1 +2.396187000E3,3.351358057E1 +2.396431000E3,3.743420456E1 +2.396691000E3,4.220523227E1 +2.396991000E3,3.500233403E1 +2.397251000E3,3.475187142E1 +2.397513000E3,3.604068947E1 +2.397821000E3,4.628512725E1 +2.398126000E3,4.463943287E1 +2.398428000E3,4.311458163E1 +2.398781000E3,4.375329409E1 +2.399076000E3,3.749705009E1 +2.399316000E3,4.116349149E1 +2.399615000E3,4.694603167E1 +2.399852000E3,5.327851923E1 +2.400143000E3,5.028800274E1 +2.400380000E3,5.055607260E1 +2.400618000E3,4.184216649E1 +2.400901000E3,4.280576865E1 +2.401144000E3,4.285187037E1 +2.401437000E3,5.414729311E1 +2.401684000E3,5.760726428E1 +2.402102000E3,5.135939721E1 +2.402349000E3,5.519633184E1 +2.402608000E3,5.937895156E1 +2.402853000E3,5.722678447E1 +2.403146000E3,5.316891996E1 +2.403388000E3,5.231876976E1 +2.403684000E3,4.275047946E1 +2.403921000E3,4.497010821E1 +2.404216000E3,5.935375427E1 +2.404454000E3,5.736369919E1 +2.404707000E3,5.877823139E1 +2.404971000E3,6.138635894E1 +2.405219000E3,5.726046839E1 +2.405473000E3,5.213953550E1 +2.405771000E3,4.831408459E1 +2.406024000E3,5.195614478E1 +2.406276000E3,4.885485021E1 +2.406567000E3,4.806131720E1 +2.406866000E3,3.817379603E1 +2.407129000E3,3.496803230E1 +2.407401000E3,4.679161915E1 +2.407625000E3,4.456362030E1 +2.407878000E3,4.499112684E1 +2.408171000E3,4.695848411E1 +2.408491000E3,4.136053284E1 +2.408771000E3,3.435960184E1 +2.409033000E3,2.907775515E1 +2.409287000E3,3.179102298E1 +2.409536000E3,2.535492331E1 +2.409797000E3,2.893863695E1 +2.410015000E3,3.195695462E1 +2.410232000E3,2.883661354E1 +2.410481000E3,4.380812340E1 +2.410735000E3,5.435187737E1 +2.411017000E3,4.390478627E1 +2.411330000E3,4.136550501E1 +2.411572000E3,6.231552653E1 +2.411823000E3,4.988484474E1 +2.412072000E3,4.569499772E1 +2.412339000E3,5.207639469E1 +2.412605000E3,5.314724412E1 +2.412842000E3,5.014855129E1 +2.413111000E3,4.925815950E1 +2.413332000E3,5.545199009E1 +2.413608000E3,4.910878211E1 +2.413873000E3,5.481296501E1 +2.414229000E3,4.620355557E1 +2.414532000E3,4.757632406E1 +2.414792000E3,4.414835702E1 +2.415033000E3,4.178334533E1 +2.415296000E3,3.571558610E1 +2.415577000E3,3.622280285E1 +2.415839000E3,4.187963398E1 +2.416103000E3,4.120303067E1 +2.416426000E3,5.043875316E1 +2.416696000E3,4.738536839E1 +2.417006000E3,4.790698669E1 +2.417250000E3,4.717323409E1 +2.417613000E3,4.889624394E1 +2.417923000E3,4.615999302E1 +2.418209000E3,4.554232436E1 +2.418487000E3,4.963147342E1 +2.418748000E3,4.540077281E1 +2.419058000E3,4.402622058E1 +2.419355000E3,3.991430025E1 +2.419631000E3,5.699106589E1 +2.419880000E3,4.542610605E1 +2.420140000E3,5.871400849E1 +2.420387000E3,5.593691155E1 +2.420634000E3,5.642590944E1 +2.420987000E3,4.942882304E1 +2.421235000E3,5.122637091E1 +2.421504000E3,5.506353313E1 +2.421808000E3,4.974630362E1 +2.422098000E3,4.922446567E1 +2.422401000E3,4.711891494E1 +2.422653000E3,4.935851062E1 +2.422946000E3,5.223840607E1 +2.423180000E3,5.181747333E1 +2.423433000E3,5.106095739E1 +2.423699000E3,4.283067128E1 +2.424023000E3,4.620110870E1 +2.424283000E3,4.813646184E1 +2.424556000E3,4.673905704E1 +2.424833000E3,5.139038068E1 +2.425085000E3,4.187355918E1 +2.425330000E3,4.200690239E1 +2.425641000E3,4.094986905E1 +2.425891000E3,3.869951887E1 +2.426156000E3,4.295178440E1 +2.426411000E3,4.445235603E1 +2.426673000E3,4.180705342E1 +2.426915000E3,4.159918394E1 +2.427275000E3,5.193727105E1 +2.427528000E3,4.985744468E1 +2.427773000E3,5.143594155E1 +2.428021000E3,5.687627643E1 +2.428258000E3,4.984177159E1 +2.428554000E3,4.104898524E1 +2.428794000E3,3.740238657E1 +2.429102000E3,4.424577609E1 +2.429345000E3,5.022623751E1 +2.429627000E3,5.346928374E1 +2.429864000E3,4.448852620E1 +2.430156000E3,3.611387858E1 +2.430475000E3,3.592739777E1 +2.430726000E3,3.269867125E1 +2.431039000E3,4.089980433E1 +2.431331000E3,3.752068977E1 +2.431567000E3,3.972155082E1 +2.431870000E3,4.098289208E1 +2.432107000E3,4.068605974E1 +2.432406000E3,3.978950334E1 +2.432643000E3,3.435438837E1 +2.432933000E3,3.806187937E1 +2.433169000E3,3.613809925E1 +2.433407000E3,5.573542624E1 +2.433734000E3,4.812688919E1 +2.434035000E3,5.332611421E1 +2.434315000E3,5.453475878E1 +2.434557000E3,5.156731049E1 +2.434849000E3,4.452924889E1 +2.435086000E3,4.091217005E1 +2.435380000E3,3.495963916E1 +2.435633000E3,3.994418328E1 +2.435904000E3,5.345258512E1 +2.436200000E3,4.573029424E1 +2.436434000E3,4.666848361E1 +2.436802000E3,4.148612785E1 +2.437044000E3,3.785277445E1 +2.437301000E3,3.823545546E1 +2.437549000E3,3.883632471E1 +2.437839000E3,4.756553033E1 +2.438077000E3,4.282797221E1 +2.438369000E3,5.291874167E1 +2.438606000E3,5.394671897E1 +2.438862000E3,5.490926284E1 +2.439159000E3,5.465277565E1 +2.439395000E3,5.245345229E1 +2.439637000E3,4.823915254E1 +2.440022000E3,5.658050668E1 +2.440281000E3,5.255468157E1 +2.440546000E3,4.365897331E1 +2.440828000E3,4.187636724E1 +2.441125000E3,4.916172461E1 +2.441365000E3,5.038635874E1 +2.441645000E3,5.238005511E1 +2.441868000E3,4.979548238E1 +2.442114000E3,5.164563876E1 +2.442410000E3,4.795862612E1 +2.442694000E3,4.406311297E1 +2.442980000E3,4.461066687E1 +2.443265000E3,3.990213588E1 +2.443525000E3,4.270339676E1 +2.443815000E3,4.671533321E1 +2.444064000E3,4.922681237E1 +2.444311000E3,5.115751882E1 +2.444605000E3,4.659279655E1 +2.444851000E3,4.805254743E1 +2.445152000E3,4.646584218E1 +2.445447000E3,3.924248597E1 +2.445698000E3,3.657018775E1 +2.445976000E3,3.978585816E1 +2.446317000E3,5.134473527E1 +2.446569000E3,4.872028256E1 +2.446851000E3,4.793203365E1 +2.447088000E3,4.917648823E1 +2.447345000E3,4.514648035E1 +2.447599000E3,4.827609085E1 +2.447864000E3,5.009329877E1 +2.448138000E3,4.858127151E1 +2.448430000E3,4.885678900E1 +2.448726000E3,4.038666943E1 +2.448956000E3,3.788824065E1 +2.449214000E3,4.872306097E1 +2.449516000E3,5.112419798E1 +2.449767000E3,4.394357347E1 +2.450028000E3,5.187358067E1 +2.450298000E3,4.764520743E1 +2.450575000E3,5.323515688E1 +2.450844000E3,4.730661272E1 +2.451150000E3,5.022143967E1 +2.451400000E3,4.244080150E1 +2.451697000E3,4.540622562E1 +2.452002000E3,4.987171470E1 +2.452273000E3,4.928771096E1 +2.452519000E3,4.415614577E1 +2.452847000E3,4.529816891E1 +2.453138000E3,3.130480949E1 +2.453407000E3,3.727195618E1 +2.453707000E3,4.218798188E1 +2.453975000E3,3.196426842E1 +2.454240000E3,2.986758668E1 +2.454534000E3,4.365366219E1 +2.454795000E3,4.363233606E1 +2.455054000E3,4.576258560E1 +2.455297000E3,4.600510844E1 +2.455546000E3,5.143992334E1 +2.455816000E3,4.451792491E1 +2.456172000E3,3.834658463E1 +2.456438000E3,4.961865906E1 +2.456716000E3,4.301133302E1 +2.457025000E3,5.185950840E1 +2.457284000E3,4.578127088E1 +2.457582000E3,4.860789001E1 +2.457857000E3,4.548301241E1 +2.458087000E3,5.726595471E1 +2.458343000E3,4.581143143E1 +2.458590000E3,4.593076535E1 +2.458898000E3,4.646845677E1 +2.459143000E3,4.385664195E1 +2.459499000E3,3.921291428E1 +2.459756000E3,4.336490005E1 +2.460079000E3,5.059416731E1 +2.460323000E3,5.383728406E1 +2.460609000E3,4.336002656E1 +2.460894000E3,3.810358455E1 +2.461148000E3,4.341384577E1 +2.461406000E3,4.240002850E1 +2.461668000E3,4.220171306E1 +2.461957000E3,4.165441002E1 +2.462218000E3,4.110791112E1 +2.462543000E3,3.718059239E1 +2.462873000E3,4.490190793E1 +2.463162000E3,4.449127269E1 +2.463461000E3,5.110192526E1 +2.463709000E3,4.670759724E1 +2.464024000E3,4.554197086E1 +2.464345000E3,4.295638115E1 +2.464598000E3,4.260186095E1 +2.464844000E3,3.838281454E1 +2.465094000E3,4.864552318E1 +2.465348000E3,4.722694913E1 +2.465597000E3,5.723123112E1 +2.465970000E3,5.678247819E1 +2.466226000E3,5.304857482E1 +2.466490000E3,5.799491543E1 +2.466745000E3,5.566332539E1 +2.467000000E3,5.532803606E1 +2.467301000E3,5.480406224E1 +2.467518000E3,5.281426808E1 +2.467773000E3,5.319750336E1 +2.468030000E3,4.504180471E1 +2.468309000E3,4.011552860E1 +2.468536000E3,3.286668959E1 +2.468782000E3,5.187437917E1 +2.469159000E3,5.342027818E1 +2.469405000E3,4.655027014E1 +2.469685000E3,4.875434900E1 +2.469968000E3,4.400777727E1 +2.470228000E3,4.944370484E1 +2.470524000E3,4.819898526E1 +2.470826000E3,4.906267157E1 +2.471101000E3,4.559683511E1 +2.471407000E3,5.066052597E1 +2.471662000E3,5.052511938E1 +2.471933000E3,4.854316053E1 +2.472243000E3,4.720397127E1 +2.472513000E3,4.539713693E1 +2.472765000E3,4.504800702E1 +2.473077000E3,4.756996091E1 +2.473381000E3,4.502772911E1 +2.473668000E3,4.844141365E1 +2.473909000E3,4.718772198E1 +2.474176000E3,5.036014826E1 +2.474415000E3,4.734822430E1 +2.474659000E3,4.506554867E1 +2.474941000E3,4.590585801E1 +2.475227000E3,4.808550728E1 +2.475549000E3,4.744751902E1 +2.475816000E3,5.139502060E1 +2.476110000E3,4.565542501E1 +2.476367000E3,4.502651441E1 +2.476614000E3,4.529198411E1 +2.476876000E3,4.841642572E1 +2.477138000E3,4.904966766E1 +2.477430000E3,5.061185879E1 +2.477703000E3,4.805167318E1 +2.477973000E3,4.840268940E1 +2.478233000E3,4.609690512E1 +2.478491000E3,5.080806253E1 +2.478854000E3,4.929079330E1 +2.479112000E3,4.887431247E1 +2.479382000E3,4.582116343E1 +2.479677000E3,4.614295426E1 +2.479939000E3,5.004731017E1 +2.480247000E3,5.118895049E1 +2.480496000E3,4.750144805E1 +2.480785000E3,4.691637905E1 +2.481084000E3,4.575243018E1 +2.481328000E3,4.498034363E1 +2.481622000E3,5.049144453E1 +2.481951000E3,4.811617152E1 +2.482214000E3,4.600387593E1 +2.482494000E3,5.163944801E1 +2.482753000E3,4.933311419E1 +2.482991000E3,4.946534766E1 +2.483244000E3,4.580757204E1 +2.483487000E3,4.797573247E1 +2.483734000E3,4.560844100E1 +2.483990000E3,5.039329574E1 +2.484313000E3,5.052905321E1 +2.484577000E3,5.131938081E1 +2.484833000E3,4.901245069E1 +2.485113000E3,5.233648083E1 +2.485461000E3,5.215489758E1 +2.485749000E3,5.451606287E1 +2.486018000E3,5.043201098E1 +2.486334000E3,5.091085093E1 +2.486650000E3,4.972266732E1 +2.486916000E3,4.846864702E1 +2.487167000E3,4.843730663E1 +2.487412000E3,5.285205631E1 +2.487677000E3,5.695937588E1 +2.487965000E3,5.067248408E1 +2.488216000E3,4.955689254E1 +2.488580000E3,4.789771891E1 +2.488828000E3,4.640186686E1 +2.489150000E3,4.956289338E1 +2.489428000E3,4.916705799E1 +2.489718000E3,4.250319869E1 +2.489959000E3,4.211788948E1 +2.490259000E3,4.711467977E1 +2.490508000E3,5.336087879E1 +2.490805000E3,5.163346506E1 +2.491066000E3,5.303328317E1 +2.491377000E3,5.018594076E1 +2.491684000E3,4.569780009E1 +2.492029000E3,4.677168871E1 +2.492273000E3,4.586755987E1 +2.492522000E3,5.020047651E1 +2.492768000E3,4.585538278E1 +2.493006000E3,5.027464230E1 +2.493315000E3,4.719632652E1 +2.493608000E3,4.892998103E1 +2.493874000E3,4.659859577E1 +2.494131000E3,4.485377967E1 +2.494387000E3,4.661063763E1 +2.494635000E3,4.873112034E1 +2.494904000E3,5.011233058E1 +2.495259000E3,4.996207620E1 +2.495523000E3,5.026371938E1 +2.495789000E3,4.897334151E1 +2.496086000E3,4.919412247E1 +2.496330000E3,4.448238049E1 +2.496598000E3,5.779881243E1 +2.496845000E3,5.068443192E1 +2.497079000E3,5.452206946E1 +2.497328000E3,6.091811093E1 +2.497574000E3,5.545025588E1 +2.497819000E3,5.118451852E1 +2.498124000E3,5.647063434E1 +2.498436000E3,5.942897676E1 +2.498681000E3,6.063927987E1 +2.498932000E3,5.256584857E1 +2.499203000E3,5.942844343E1 +2.499465000E3,5.268198933E1 +2.499726000E3,5.561310022E1 +2.499989000E3,5.551348586E1 +2.500270000E3,5.728700965E1 +2.500550000E3,5.848024533E1 +2.500856000E3,5.545551244E1 +2.501156000E3,7.074712648E1 +2.501405000E3,6.649397556E1 +2.501727000E3,6.577106108E1 +2.501964000E3,5.791155905E1 +2.502223000E3,6.571272960E1 +2.502476000E3,5.223691777E1 +2.502731000E3,5.099379006E1 +2.502989000E3,4.996024440E1 +2.503265000E3,4.587573023E1 +2.503515000E3,6.660646739E1 +2.503792000E3,5.426812996E1 +2.504090000E3,4.221263073E1 +2.504348000E3,3.961359220E1 +2.504607000E3,3.317448387E1 +2.504957000E3,2.765634596E1 +2.505202000E3,5.260508289E1 +2.505444000E3,4.970766119E1 +2.505723000E3,5.961421356E1 +2.506010000E3,5.761735716E1 +2.506316000E3,4.386011183E1 +2.506629000E3,3.297646158E1 +2.506928000E3,3.461351567E1 +2.507171000E3,3.422494413E1 +2.507415000E3,3.898815557E1 +2.507661000E3,3.916714623E1 +2.507958000E3,4.409544564E1 +2.508199000E3,4.040812578E1 +2.508495000E3,4.100804729E1 +2.508767000E3,4.155083379E1 +2.509073000E3,4.256659126E1 +2.509346000E3,4.665111645E1 +2.509615000E3,4.785704834E1 +2.509926000E3,4.957995318E1 +2.510246000E3,5.281308228E1 +2.510533000E3,5.716195403E1 +2.510847000E3,5.384222007E1 +2.511087000E3,4.682850643E1 +2.511483000E3,5.585229854E1 +2.511769000E3,5.797880255E1 +2.512061000E3,5.008051045E1 +2.512305000E3,4.616221083E1 +2.512545000E3,5.837834308E1 +2.512782000E3,4.588894556E1 +2.513082000E3,5.827978204E1 +2.513321000E3,5.321307958E1 +2.513625000E3,5.419914666E1 +2.513860000E3,4.249936315E1 +2.514160000E3,5.093700871E1 +2.514505000E3,4.733309734E1 +2.514807000E3,5.739188753E1 +2.515049000E3,5.684870925E1 +2.515326000E3,5.429714525E1 +2.515551000E3,5.304528611E1 +2.515847000E3,6.048302750E1 +2.516097000E3,5.298092655E1 +2.516397000E3,5.664346713E1 +2.516634000E3,5.062362510E1 +2.516910000E3,5.059011404E1 +2.517165000E3,5.074931344E1 +2.517424000E3,5.193937267E1 +2.517672000E3,4.773080825E1 +2.517933000E3,4.886471101E1 +2.518191000E3,4.258084657E1 +2.518440000E3,4.144243799E1 +2.518697000E3,3.266068365E1 +2.518962000E3,3.662092465E1 +2.519211000E3,4.002326553E1 +2.519469000E3,5.193824268E1 +2.519821000E3,5.548381163E1 +2.520087000E3,5.245445808E1 +2.520336000E3,4.447536752E1 +2.520718000E3,5.931091731E1 +2.521010000E3,5.514928156E1 +2.521305000E3,5.194242569E1 +2.521541000E3,5.632439964E1 +2.521781000E3,4.768714929E1 +2.522074000E3,3.967116686E1 +2.522306000E3,3.457523914E1 +2.522554000E3,3.414939493E1 +2.522808000E3,3.034285017E1 +2.523103000E3,3.725639399E1 +2.523347000E3,5.824523011E1 +2.523645000E3,5.697741808E1 +2.524002000E3,5.995361389E1 +2.524244000E3,5.516819042E1 +2.524491000E3,5.520201782E1 +2.524765000E3,4.576677797E1 +2.524988000E3,5.785527848E1 +2.525299000E3,5.093237528E1 +2.525544000E3,4.090627494E1 +2.525822000E3,3.111750175E1 +2.526056000E3,2.764971736E1 +2.526311000E3,2.852524033E1 +2.526617000E3,3.508264660E1 +2.526905000E3,5.067917717E1 +2.527241000E3,4.646824007E1 +2.527487000E3,3.686495987E1 +2.527738000E3,3.822220480E1 +2.527988000E3,3.764348220E1 +2.528232000E3,4.278450517E1 +2.528563000E3,4.881983602E1 +2.528870000E3,4.048435148E1 +2.529125000E3,4.047282835E1 +2.529398000E3,4.602715630E1 +2.529632000E3,4.358719476E1 +2.529925000E3,4.185499728E1 +2.530224000E3,4.428160693E1 +2.530451000E3,5.370094630E1 +2.530771000E3,4.662369716E1 +2.531057000E3,4.486368653E1 +2.531322000E3,3.985753269E1 +2.531579000E3,3.868983993E1 +2.531842000E3,4.397673982E1 +2.532129000E3,4.465178920E1 +2.532379000E3,4.071629694E1 +2.532681000E3,3.700154265E1 +2.532925000E3,3.709745900E1 +2.533169000E3,3.856350220E1 +2.533454000E3,3.780017804E1 +2.533739000E3,4.079153270E1 +2.534053000E3,3.467337947E1 +2.534304000E3,3.872357849E1 +2.534571000E3,4.188092371E1 +2.534878000E3,4.226520735E1 +2.535180000E3,4.433351029E1 +2.535433000E3,4.196124368E1 +2.535679000E3,4.159710638E1 +2.535934000E3,4.131920574E1 +2.536230000E3,4.013333591E1 +2.536496000E3,3.861252617E1 +2.536812000E3,3.205810696E1 +2.537071000E3,3.900017908E1 +2.537321000E3,3.720890888E1 +2.537589000E3,3.571752088E1 +2.537899000E3,3.466875388E1 +2.538158000E3,3.490809444E1 +2.538414000E3,2.846246396E1 +2.538721000E3,3.471466025E1 +2.539000000E3,3.262267006E1 +2.539250000E3,2.900340615E1 +2.539526000E3,2.962734770E1 +2.539843000E3,4.051335289E1 +2.540219000E3,3.732414883E1 +2.540478000E3,3.212776280E1 +2.540731000E3,3.980002135E1 +2.541002000E3,4.402529692E1 +2.541305000E3,3.531142487E1 +2.541570000E3,4.157255463E1 +2.541892000E3,4.121686373E1 +2.542138000E3,3.512055425E1 +2.542435000E3,3.058422839E1 +2.542704000E3,3.860796470E1 +2.542951000E3,4.158955283E1 +2.543254000E3,4.126835549E1 +2.543598000E3,4.557459954E1 +2.543842000E3,4.195620726E1 +2.544088000E3,4.759905541E1 +2.544347000E3,4.089593512E1 +2.544592000E3,4.224934090E1 +2.544840000E3,3.548720999E1 +2.545141000E3,4.189266277E1 +2.545422000E3,4.058854606E1 +2.545652000E3,3.761551365E1 +2.545897000E3,3.643024250E1 +2.546173000E3,3.544845567E1 +2.546439000E3,3.816851754E1 +2.546779000E3,3.801212128E1 +2.547110000E3,3.288266257E1 +2.547379000E3,4.063952307E1 +2.547641000E3,4.765684387E1 +2.547893000E3,4.402640436E1 +2.548143000E3,4.172886183E1 +2.548441000E3,3.808222191E1 +2.548685000E3,3.637035664E1 +2.548962000E3,3.879815953E1 +2.549230000E3,5.433785228E1 +2.549540000E3,5.428002325E1 +2.549852000E3,5.430864003E1 +2.550121000E3,5.376325395E1 +2.550389000E3,5.250586376E1 +2.550641000E3,5.329413218E1 +2.550946000E3,3.817927317E1 +2.551218000E3,3.779289824E1 +2.551493000E3,4.904361964E1 +2.551759000E3,5.500168111E1 +2.552006000E3,4.745774118E1 +2.552261000E3,5.304049624E1 +2.552515000E3,4.933664563E1 +2.552779000E3,3.482983031E1 +2.553043000E3,3.914561037E1 +2.553378000E3,3.318943686E1 +2.553659000E3,2.674748735E1 +2.553917000E3,2.500565902E1 +2.554234000E3,3.331261434E1 +2.554489000E3,3.380079275E1 +2.554753000E3,3.632095841E1 +2.554996000E3,3.606888467E1 +2.555239000E3,4.759559903E1 +2.555541000E3,5.588542149E1 +2.555837000E3,5.768171500E1 +2.556076000E3,5.837962370E1 +2.556358000E3,5.761486260E1 +2.556647000E3,5.408185929E1 +2.556914000E3,5.624815374E1 +2.557248000E3,4.727853091E1 +2.557554000E3,3.999550071E1 +2.557822000E3,4.090986684E1 +2.558062000E3,3.411171601E1 +2.558302000E3,3.042998918E1 +2.558550000E3,3.392526215E1 +2.558807000E3,3.801243567E1 +2.559082000E3,4.390440101E1 +2.559357000E3,4.215163378E1 +2.559616000E3,4.616573562E1 +2.559972000E3,4.170066459E1 +2.560245000E3,2.972551911E1 +2.560517000E3,3.987643023E1 +2.560765000E3,4.046237199E1 +2.561011000E3,4.268708813E1 +2.561258000E3,4.450541644E1 +2.561531000E3,4.611922799E1 +2.561775000E3,4.492719317E1 +2.562027000E3,4.345851098E1 +2.562302000E3,5.022295857E1 +2.562533000E3,4.986016935E1 +2.562786000E3,3.932672790E1 +2.563211000E3,3.777119812E1 +2.563479000E3,4.577537823E1 +2.563731000E3,5.443473776E1 +2.563977000E3,5.947837126E1 +2.564252000E3,5.014881480E1 +2.564539000E3,4.884415531E1 +2.564781000E3,4.451698294E1 +2.565088000E3,3.693106642E1 +2.565361000E3,3.096881298E1 +2.565624000E3,2.635486448E1 +2.565885000E3,2.734213385E1 +2.566246000E3,3.979362654E1 +2.566493000E3,3.382738554E1 +2.566797000E3,3.469438245E1 +2.567097000E3,4.097528595E1 +2.567346000E3,4.285297734E1 +2.567644000E3,4.930003444E1 +2.567891000E3,4.540271843E1 +2.568170000E3,3.109775861E1 +2.568407000E3,2.738661195E1 +2.568701000E3,3.024785153E1 +2.568952000E3,3.235217301E1 +2.569220000E3,3.196941264E1 +2.569567000E3,4.299833718E1 +2.569862000E3,4.496000509E1 +2.570178000E3,4.562225815E1 +2.570442000E3,4.437451260E1 +2.570707000E3,3.949227756E1 +2.570950000E3,2.951847370E1 +2.571202000E3,3.800151296E1 +2.571472000E3,4.650517590E1 +2.571732000E3,3.967561664E1 +2.571975000E3,3.149456620E1 +2.572246000E3,5.234083710E1 +2.572527000E3,4.544839619E1 +2.572859000E3,4.436174777E1 +2.573168000E3,4.369290756E1 +2.573429000E3,4.420543128E1 +2.573728000E3,4.389854646E1 +2.573968000E3,4.580346210E1 +2.574268000E3,4.881141748E1 +2.574509000E3,4.708023256E1 +2.574802000E3,3.388696242E1 +2.575045000E3,2.922489212E1 +2.575339000E3,3.941924125E1 +2.575597000E3,4.733040375E1 +2.575906000E3,4.790376430E1 +2.576245000E3,4.328559785E1 +2.576517000E3,4.720947277E1 +2.576791000E3,4.076260480E1 +2.577092000E3,3.249905806E1 +2.577324000E3,3.886850876E1 +2.577566000E3,3.577483806E1 +2.577814000E3,4.105002685E1 +2.578080000E3,3.881208350E1 +2.578375000E3,5.720708534E1 +2.578624000E3,4.933084675E1 +2.578932000E3,5.989261963E1 +2.579254000E3,5.193127116E1 +2.579506000E3,4.843920497E1 +2.579747000E3,4.570821188E1 +2.580001000E3,4.446748829E1 +2.580244000E3,4.006228376E1 +2.580497000E3,2.933332862E1 +2.580745000E3,4.525678604E1 +2.580989000E3,4.717489692E1 +2.581288000E3,5.239736286E1 +2.581587000E3,5.268105849E1 +2.581851000E3,4.960616241E1 +2.582112000E3,4.637217789E1 +2.582361000E3,4.676379781E1 +2.582583000E3,4.083594902E1 +2.582903000E3,2.696140701E1 +2.583176000E3,2.668057590E1 +2.583429000E3,2.900886287E1 +2.583692000E3,2.732690452E1 +2.583951000E3,3.475308428E1 +2.584205000E3,4.782860484E1 +2.584480000E3,4.928978168E1 +2.584742000E3,3.697304160E1 +2.585017000E3,3.390321432E1 +2.585248000E3,4.818778278E1 +2.585552000E3,5.175969441E1 +2.585851000E3,4.752724055E1 +2.586108000E3,5.047732228E1 +2.586408000E3,5.003267867E1 +2.586651000E3,4.995698879E1 +2.586934000E3,4.985539117E1 +2.587202000E3,4.558719065E1 +2.587455000E3,4.973387236E1 +2.587702000E3,5.190737686E1 +2.587964000E3,4.955516560E1 +2.588211000E3,5.039526507E1 +2.588461000E3,3.897042435E1 +2.588748000E3,2.919124678E1 +2.589063000E3,3.061867322E1 +2.589398000E3,4.010104895E1 +2.589690000E3,3.640442215E1 +2.589998000E3,4.479952304E1 +2.590261000E3,4.757967128E1 +2.590558000E3,4.812333533E1 +2.590802000E3,4.603482331E1 +2.591083000E3,2.960043464E1 +2.591326000E3,3.684354753E1 +2.591591000E3,4.359182452E1 +2.591849000E3,4.788602237E1 +2.592228000E3,4.468031543E1 +2.592527000E3,3.894688899E1 +2.592778000E3,2.800490026E1 +2.593035000E3,4.310888325E1 +2.593333000E3,4.628339380E1 +2.593602000E3,4.440124594E1 +2.593883000E3,4.123163794E1 +2.594160000E3,3.127645239E1 +2.594429000E3,3.071812965E1 +2.594749000E3,4.618618296E1 +2.595070000E3,5.248181749E1 +2.595312000E3,4.786265879E1 +2.595668000E3,3.990233287E1 +2.595973000E3,4.173583037E1 +2.596256000E3,3.709278400E1 +2.596497000E3,3.229385861E1 +2.596813000E3,4.380573021E1 +2.597084000E3,4.783628282E1 +2.597325000E3,5.024593568E1 +2.597578000E3,5.102379549E1 +2.597828000E3,4.760481411E1 +2.598089000E3,3.822780835E1 +2.598387000E3,3.417342767E1 +2.598736000E3,2.863579065E1 +2.598981000E3,2.886228233E1 +2.599228000E3,2.855965247E1 +2.599493000E3,3.083396855E1 +2.599764000E3,3.581659374E1 +2.600032000E3,4.317647632E1 +2.600330000E3,4.853625621E1 +2.600623000E3,5.102467342E1 +2.600867000E3,4.877836926E1 +2.601112000E3,4.705612686E1 +2.601365000E3,4.889085742E1 +2.601612000E3,4.654488136E1 +2.601956000E3,4.055024190E1 +2.602220000E3,3.990851266E1 +2.602547000E3,3.648352551E1 +2.602794000E3,5.324982942E1 +2.603078000E3,5.268965363E1 +2.603338000E3,4.851189142E1 +2.603637000E3,5.135006473E1 +2.603925000E3,4.939301404E1 +2.604238000E3,5.337101389E1 +2.604488000E3,5.022765286E1 +2.604734000E3,5.253186666E1 +2.605064000E3,4.127453431E1 +2.605321000E3,4.114070867E1 +2.605572000E3,4.042282231E1 +2.605820000E3,4.255774466E1 +2.606073000E3,4.746726668E1 +2.606319000E3,4.761848671E1 +2.606565000E3,4.983628061E1 +2.606849000E3,3.046517787E1 +2.607082000E3,3.832211131E1 +2.607339000E3,4.741131966E1 +2.607609000E3,4.453335589E1 +2.607874000E3,3.545592153E1 +2.608197000E3,4.672891376E1 +2.608451000E3,4.755881287E1 +2.608706000E3,4.827652641E1 +2.608952000E3,4.727153141E1 +2.609226000E3,4.731450942E1 +2.609537000E3,3.981385402E1 +2.609784000E3,3.194698732E1 +2.610041000E3,3.314164027E1 +2.610283000E3,2.819786732E1 +2.610546000E3,2.664547785E1 +2.610857000E3,2.913544778E1 +2.611125000E3,3.961651759E1 +2.611432000E3,3.852777426E1 +2.611666000E3,3.205673146E1 +2.611951000E3,4.233182010E1 +2.612229000E3,3.378509898E1 +2.612454000E3,4.071755552E1 +2.612730000E3,5.018278065E1 +2.613050000E3,4.100034395E1 +2.613359000E3,3.892108016E1 +2.613628000E3,5.091321799E1 +2.613871000E3,4.336916838E1 +2.614108000E3,3.960788811E1 +2.614408000E3,3.948227358E1 +2.614722000E3,3.631863435E1 +2.614975000E3,4.057042340E1 +2.615256000E3,4.414132009E1 +2.615486000E3,4.180934435E1 +2.615750000E3,4.153999936E1 +2.615997000E3,3.521796466E1 +2.616260000E3,5.443854687E1 +2.616548000E3,5.408118563E1 +2.616842000E3,4.951275264E1 +2.617090000E3,5.182722031E1 +2.617344000E3,4.327522742E1 +2.617643000E3,5.375122422E1 +2.617975000E3,5.216635190E1 +2.618233000E3,4.126006713E1 +2.618497000E3,4.980260599E1 +2.618804000E3,4.655838197E1 +2.619044000E3,4.977945459E1 +2.619327000E3,4.875559075E1 +2.619562000E3,4.983226039E1 +2.619834000E3,4.741689273E1 +2.620075000E3,4.923498746E1 +2.620352000E3,4.923432072E1 +2.620664000E3,4.040876723E1 +2.620916000E3,3.889825840E1 +2.621142000E3,5.245081579E1 +2.621448000E3,4.684934794E1 +2.621687000E3,4.583906640E1 +2.621992000E3,4.366517623E1 +2.622230000E3,3.373873872E1 +2.622475000E3,3.701694694E1 +2.622750000E3,3.544967426E1 +2.623008000E3,3.363206222E1 +2.623285000E3,4.009589135E1 +2.623562000E3,4.408709562E1 +2.623825000E3,4.800133533E1 +2.624131000E3,4.855432282E1 +2.624414000E3,4.808187444E1 +2.624671000E3,5.252566194E1 +2.624932000E3,4.890333861E1 +2.625183000E3,4.370428781E1 +2.625430000E3,3.668118979E1 +2.625747000E3,4.353955331E1 +2.626003000E3,4.224026412E1 +2.626267000E3,4.311785789E1 +2.626514000E3,3.517806855E1 +2.626763000E3,3.981966751E1 +2.627025000E3,3.444602265E1 +2.627334000E3,3.341390757E1 +2.627660000E3,3.926570124E1 +2.627920000E3,4.341089288E1 +2.628216000E3,4.081134870E1 +2.628467000E3,3.912400300E1 +2.628730000E3,3.657553946E1 +2.629000000E3,3.072838888E1 +2.629284000E3,2.929703023E1 +2.629549000E3,3.378014550E1 +2.629844000E3,4.760306323E1 +2.630080000E3,4.024322042E1 +2.630373000E3,3.235913140E1 +2.630611000E3,3.920509877E1 +2.630919000E3,5.103841717E1 +2.631222000E3,5.813980805E1 +2.631514000E3,5.190256812E1 +2.631753000E3,4.653294376E1 +2.632054000E3,4.782140153E1 +2.632295000E3,4.977458693E1 +2.632592000E3,5.371197571E1 +2.632828000E3,5.056512655E1 +2.633140000E3,5.325824914E1 +2.633383000E3,4.973751947E1 +2.633632000E3,4.853342473E1 +2.633950000E3,3.905011010E1 +2.634254000E3,3.751700759E1 +2.634549000E3,5.292771607E1 +2.634786000E3,5.557450981E1 +2.635082000E3,4.974692283E1 +2.635319000E3,5.393938197E1 +2.635611000E3,4.675981835E1 +2.635848000E3,4.299614910E1 +2.636145000E3,3.756646750E1 +2.636395000E3,3.824353200E1 +2.636648000E3,3.045317917E1 +2.636942000E3,3.257931849E1 +2.637299000E3,3.010616025E1 +2.637599000E3,4.995329379E1 +2.637834000E3,4.824584689E1 +2.638071000E3,5.059212149E1 +2.638363000E3,5.330633429E1 +2.638612000E3,5.343612136E1 +2.638897000E3,4.755550111E1 +2.639122000E3,4.119881812E1 +2.639362000E3,3.902726568E1 +2.639659000E3,4.451944661E1 +2.639896000E3,4.587471035E1 +2.640164000E3,4.115502802E1 +2.640409000E3,4.505311495E1 +2.640656000E3,4.913968689E1 +2.640951000E3,5.110923180E1 +2.641208000E3,4.281604120E1 +2.641505000E3,4.825854961E1 +2.641748000E3,4.861588211E1 +2.642059000E3,4.450542116E1 +2.642304000E3,4.274821036E1 +2.642556000E3,3.503446158E1 +2.642862000E3,4.080900103E1 +2.643164000E3,4.152079562E1 +2.643527000E3,3.935881933E1 +2.643833000E3,3.760570593E1 +2.644082000E3,3.959144469E1 +2.644327000E3,4.007918652E1 +2.644573000E3,4.288120719E1 +2.644814000E3,4.793099478E1 +2.645114000E3,4.424069452E1 +2.645391000E3,4.078427844E1 +2.645635000E3,3.902795236E1 +2.645871000E3,4.393773718E1 +2.646111000E3,4.085627764E1 +2.646355000E3,4.393316509E1 +2.646690000E3,4.428892908E1 +2.646958000E3,4.601464396E1 +2.647235000E3,4.300358696E1 +2.647474000E3,4.083829680E1 +2.647758000E3,5.406220971E1 +2.648003000E3,4.253716581E1 +2.648273000E3,4.506680000E1 +2.648514000E3,3.500046728E1 +2.648758000E3,3.537281462E1 +2.649004000E3,5.013819891E1 +2.649251000E3,5.388943830E1 +2.649556000E3,5.656370208E1 +2.649891000E3,5.696480404E1 +2.650216000E3,4.675400561E1 +2.650515000E3,4.179549274E1 +2.650777000E3,4.536624285E1 +2.651084000E3,4.297370528E1 +2.651336000E3,4.376785410E1 +2.651635000E3,3.354560746E1 +2.651881000E3,2.537939319E1 +2.652180000E3,3.168783420E1 +2.652481000E3,4.898553010E1 +2.652737000E3,5.438993966E1 +2.652992000E3,4.963834041E1 +2.653252000E3,4.227369117E1 +2.653502000E3,4.301436765E1 +2.653812000E3,3.649724292E1 +2.654061000E3,4.086211966E1 +2.654320000E3,3.223281741E1 +2.654605000E3,2.807672508E1 +2.654836000E3,2.764825285E1 +2.655100000E3,4.598866982E1 +2.655350000E3,4.383741939E1 +2.655590000E3,4.883555528E1 +2.655837000E3,4.815765811E1 +2.656131000E3,5.047261312E1 +2.656369000E3,5.124829846E1 +2.656626000E3,3.956134092E1 +2.656925000E3,3.503286763E1 +2.657200000E3,3.224209198E1 +2.657447000E3,4.294806319E1 +2.657761000E3,4.898454413E1 +2.658011000E3,5.320780356E1 +2.658286000E3,5.345186604E1 +2.658542000E3,4.849291145E1 +2.658789000E3,5.098648363E1 +2.659034000E3,4.892931203E1 +2.659289000E3,4.580698225E1 +2.659530000E3,3.709695762E1 +2.659834000E3,3.457925551E1 +2.660081000E3,3.855219813E1 +2.660383000E3,3.845534481E1 +2.660628000E3,4.619372518E1 +2.660921000E3,4.848307744E1 +2.661167000E3,4.790880967E1 +2.661464000E3,4.667520128E1 +2.661710000E3,4.098851532E1 +2.662006000E3,4.035468673E1 +2.662245000E3,3.753010710E1 +2.662592000E3,4.792080660E1 +2.662862000E3,4.709835917E1 +2.663123000E3,3.501409506E1 +2.663374000E3,3.240664296E1 +2.663631000E3,4.326696615E1 +2.663874000E3,4.411177933E1 +2.664133000E3,3.936378145E1 +2.664382000E3,3.443614227E1 +2.664648000E3,3.761654306E1 +2.664944000E3,5.164457484E1 +2.665198000E3,2.810669920E1 +2.665512000E3,2.931307063E1 +2.665876000E3,3.108643425E1 +2.666131000E3,3.278101889E1 +2.666439000E3,4.277860150E1 +2.666693000E3,4.213131936E1 +2.667002000E3,3.935849781E1 +2.667259000E3,4.137879880E1 +2.667575000E3,3.790565018E1 +2.667827000E3,3.845274836E1 +2.668153000E3,3.676763670E1 +2.668452000E3,3.751975183E1 +2.668696000E3,3.224848897E1 +2.669023000E3,3.611134142E1 +2.669316000E3,4.467495655E1 +2.669607000E3,4.735906080E1 +2.669885000E3,5.159453510E1 +2.670167000E3,5.321308782E1 +2.670485000E3,5.282242631E1 +2.670747000E3,5.127719277E1 +2.670997000E3,4.902251972E1 +2.671243000E3,4.450532678E1 +2.671540000E3,3.864078148E1 +2.671788000E3,3.720620343E1 +2.672044000E3,4.496142790E1 +2.672357000E3,4.705640535E1 +2.672617000E3,3.890316941E1 +2.672864000E3,4.027639889E1 +2.673159000E3,4.202335245E1 +2.673421000E3,4.285452583E1 +2.673720000E3,3.626679930E1 +2.673964000E3,4.670395357E1 +2.674210000E3,4.915586670E1 +2.674514000E3,5.353785994E1 +2.674811000E3,5.414016767E1 +2.675048000E3,5.591079353E1 +2.675364000E3,3.844031623E1 +2.675661000E3,3.124520008E1 +2.675946000E3,3.566755596E1 +2.676189000E3,3.490423263E1 +2.676498000E3,5.070292882E1 +2.676799000E3,5.356134163E1 +2.677047000E3,5.161634227E1 +2.677305000E3,5.185439004E1 +2.677581000E3,5.315585532E1 +2.677832000E3,4.418578879E1 +2.678087000E3,3.972693415E1 +2.678335000E3,4.338465258E1 +2.678650000E3,5.168404535E1 +2.678934000E3,4.984483773E1 +2.679249000E3,4.977401184E1 +2.679507000E3,5.044345616E1 +2.679823000E3,4.232585634E1 +2.680128000E3,3.026551109E1 +2.680400000E3,3.009656886E1 +2.680660000E3,4.894119824E1 +2.680913000E3,4.712312643E1 +2.681208000E3,4.239602863E1 +2.681477000E3,4.875338950E1 +2.681768000E3,4.887945421E1 +2.682128000E3,4.379352407E1 +2.682394000E3,4.073494394E1 +2.682637000E3,3.685872977E1 +2.682895000E3,2.883047793E1 +2.683163000E3,3.769147996E1 +2.683455000E3,3.713975885E1 +2.683749000E3,4.855681627E1 +2.683994000E3,4.936430656E1 +2.684290000E3,5.303947120E1 +2.684540000E3,5.031092673E1 +2.684833000E3,4.783130186E1 +2.685073000E3,4.898734587E1 +2.685348000E3,4.686166956E1 +2.685598000E3,4.244245178E1 +2.685917000E3,3.872119900E1 +2.686161000E3,4.891396583E1 +2.686434000E3,4.491629365E1 +2.686687000E3,3.588391777E1 +2.686952000E3,3.156965948E1 +2.687206000E3,3.184725563E1 +2.687480000E3,3.153561496E1 +2.687733000E3,3.669659228E1 +2.688049000E3,3.507922771E1 +2.688340000E3,3.251056517E1 +2.688645000E3,4.079174670E1 +2.688915000E3,4.837277005E1 +2.689163000E3,4.669136560E1 +2.689426000E3,3.659115086E1 +2.689751000E3,4.814125321E1 +2.689994000E3,4.721335081E1 +2.690235000E3,5.119773767E1 +2.690471000E3,4.584232122E1 +2.690738000E3,4.687969307E1 +2.691006000E3,4.116197132E1 +2.691312000E3,2.850019915E1 +2.691659000E3,3.175399572E1 +2.691948000E3,3.215115185E1 +2.692197000E3,2.655209633E1 +2.692466000E3,3.136629444E1 +2.692727000E3,2.928762690E1 +2.692976000E3,2.688909217E1 +2.693281000E3,3.350197248E1 +2.693518000E3,3.760267236E1 +2.693776000E3,3.194141055E1 +2.694032000E3,3.113878807E1 +2.694299000E3,2.830606211E1 +2.694602000E3,2.632227285E1 +2.694941000E3,2.736240000E1 +2.695184000E3,3.956118458E1 +2.695488000E3,4.069974415E1 +2.695732000E3,4.498590768E1 +2.696030000E3,3.370199172E1 +2.696300000E3,3.284857688E1 +2.696535000E3,2.919082343E1 +2.696815000E3,3.146626789E1 +2.697056000E3,2.968971947E1 +2.697354000E3,4.116455896E1 +2.697640000E3,5.055341773E1 +2.697888000E3,5.163434474E1 +2.698155000E3,4.792936353E1 +2.698456000E3,4.111753823E1 +2.698732000E3,4.594070701E1 +2.699031000E3,3.204472070E1 +2.699273000E3,2.836668859E1 +2.699578000E3,2.624009297E1 +2.699855000E3,2.719538340E1 +2.700110000E3,2.868563476E1 +2.700399000E3,2.757039916E1 +2.700662000E3,2.546630310E1 +2.700960000E3,2.981844134E1 +2.701310000E3,3.063471239E1 +2.701629000E3,4.014173680E1 +2.701894000E3,3.281157953E1 +2.702206000E3,4.268438101E1 +2.702448000E3,4.272045970E1 +2.702710000E3,4.782744516E1 +2.702984000E3,4.067538265E1 +2.703255000E3,3.821763448E1 +2.703566000E3,3.373237040E1 +2.703865000E3,2.762261654E1 +2.704108000E3,3.058182972E1 +2.704366000E3,4.157303269E1 +2.704695000E3,4.128988216E1 +2.705002000E3,3.725674585E1 +2.705260000E3,3.318881716E1 +2.705544000E3,3.512644750E1 +2.705774000E3,3.012622541E1 +2.706039000E3,3.307868989E1 +2.706297000E3,3.089854998E1 +2.706599000E3,2.870455364E1 +2.706901000E3,2.573473536E1 +2.707155000E3,2.708285982E1 +2.707419000E3,2.641018696E1 +2.707644000E3,2.532685142E1 +2.707945000E3,2.741320006E1 +2.708188000E3,2.764718970E1 +2.708460000E3,3.745935532E1 +2.708711000E3,4.292241509E1 +2.708955000E3,4.431523077E1 +2.709266000E3,3.812245251E1 +2.709534000E3,3.199637282E1 +2.709802000E3,3.030937111E1 +2.710049000E3,3.172341474E1 +2.710303000E3,4.706685853E1 +2.710610000E3,4.372593931E1 +2.710859000E3,4.298246415E1 +2.711196000E3,4.313732995E1 +2.711485000E3,3.646858634E1 +2.711745000E3,3.547356546E1 +2.712003000E3,4.802507202E1 +2.712259000E3,4.666185634E1 +2.712527000E3,4.298723738E1 +2.712813000E3,3.203029787E1 +2.713082000E3,2.721140687E1 +2.713344000E3,3.967881707E1 +2.713594000E3,5.017429445E1 +2.713859000E3,4.690730331E1 +2.714106000E3,4.892140969E1 +2.714475000E3,4.312346900E1 +2.714730000E3,4.926615820E1 +2.714984000E3,4.690558758E1 +2.715298000E3,3.116292546E1 +2.715563000E3,2.731472603E1 +2.715855000E3,3.029992609E1 +2.716160000E3,3.149201904E1 +2.716442000E3,2.826058660E1 +2.716703000E3,2.713282366E1 +2.716957000E3,3.659207256E1 +2.717253000E3,3.982143620E1 +2.717592000E3,4.316888996E1 +2.717851000E3,4.348787554E1 +2.718149000E3,4.336902207E1 +2.718464000E3,4.494305168E1 +2.718765000E3,4.280996114E1 +2.719042000E3,4.083199069E1 +2.719277000E3,3.924180447E1 +2.719573000E3,2.985025677E1 +2.719800000E3,2.924980764E1 +2.720042000E3,2.589394072E1 +2.720346000E3,2.996884267E1 +2.720607000E3,2.951796470E1 +2.720882000E3,2.762273017E1 +2.721181000E3,4.946261833E1 +2.721422000E3,4.848220411E1 +2.721736000E3,4.816357380E1 +2.722001000E3,5.238238407E1 +2.722305000E3,5.586118797E1 +2.722602000E3,5.474108905E1 +2.722856000E3,5.089156984E1 +2.723105000E3,4.900978141E1 +2.723369000E3,5.541376880E1 +2.723666000E3,4.827427134E1 +2.723997000E3,4.802338633E1 +2.724296000E3,3.537215093E1 +2.724548000E3,3.822637167E1 +2.724844000E3,3.388327957E1 +2.725086000E3,3.756611639E1 +2.725338000E3,4.489615211E1 +2.725635000E3,5.048833137E1 +2.725871000E3,4.298428385E1 +2.726174000E3,3.303114009E1 +2.726475000E3,4.527811220E1 +2.726764000E3,4.815487328E1 +2.727017000E3,4.761823346E1 +2.727328000E3,4.180028821E1 +2.727607000E3,4.512936944E1 +2.727849000E3,4.337880786E1 +2.728101000E3,4.031817829E1 +2.728401000E3,3.509684782E1 +2.728650000E3,4.495565250E1 +2.728895000E3,4.157595660E1 +2.729138000E3,5.008202715E1 +2.729381000E3,5.308960545E1 +2.729622000E3,4.943413955E1 +2.729917000E3,4.820467383E1 +2.730234000E3,5.168344618E1 +2.730544000E3,5.128425900E1 +2.730837000E3,5.242528085E1 +2.731075000E3,5.125548047E1 +2.731382000E3,5.027678189E1 +2.731625000E3,4.595108129E1 +2.731917000E3,5.425640288E1 +2.732229000E3,5.493458667E1 +2.732522000E3,5.383738769E1 +2.732781000E3,4.577468908E1 +2.733036000E3,4.877165484E1 +2.733337000E3,5.155317163E1 +2.733582000E3,4.868465804E1 +2.733904000E3,5.094377769E1 +2.734158000E3,4.778052408E1 +2.734485000E3,4.980696312E1 +2.734788000E3,5.229980528E1 +2.735043000E3,4.487473927E1 +2.735323000E3,5.405477376E1 +2.735550000E3,5.095910777E1 +2.735795000E3,4.081340338E1 +2.736110000E3,3.942379743E1 +2.736352000E3,4.377765131E1 +2.736599000E3,4.311237352E1 +2.736822000E3,4.659947655E1 +2.737071000E3,4.430846393E1 +2.737313000E3,4.579154087E1 +2.737577000E3,4.628223866E1 +2.737831000E3,3.937286623E1 +2.738094000E3,3.852847368E1 +2.738336000E3,3.907921933E1 +2.738583000E3,5.112703685E1 +2.738825000E3,4.827754167E1 +2.739100000E3,4.022366081E1 +2.739352000E3,3.342841986E1 +2.739649000E3,3.354947585E1 +2.740003000E3,2.967395260E1 +2.740259000E3,4.724158021E1 +2.740515000E3,4.406232704E1 +2.740781000E3,4.128290785E1 +2.741030000E3,3.766271195E1 +2.741274000E3,3.234308905E1 +2.741542000E3,5.345026714E1 +2.741790000E3,5.189834860E1 +2.742037000E3,4.310520052E1 +2.742373000E3,3.005340200E1 +2.742661000E3,3.957498865E1 +2.742905000E3,4.298992085E1 +2.743235000E3,3.914359224E1 +2.743487000E3,4.665969106E1 +2.743742000E3,4.569837618E1 +2.743989000E3,4.037243126E1 +2.744288000E3,4.393151618E1 +2.744525000E3,4.191552922E1 +2.744830000E3,3.855450094E1 +2.745068000E3,3.137426682E1 +2.745312000E3,3.988970586E1 +2.745595000E3,4.261856210E1 +2.745912000E3,4.545535941E1 +2.746178000E3,3.982007681E1 +2.746515000E3,3.873990925E1 +2.746799000E3,4.024486228E1 +2.747097000E3,3.778822068E1 +2.747346000E3,3.349647091E1 +2.747587000E3,3.949530039E1 +2.747884000E3,4.424971453E1 +2.748182000E3,4.109440717E1 +2.748426000E3,4.429824127E1 +2.748724000E3,3.941870140E1 +2.749014000E3,3.719766140E1 +2.749309000E3,3.407061301E1 +2.749659000E3,3.362708714E1 +2.749929000E3,4.111324363E1 +2.750185000E3,4.275268079E1 +2.750445000E3,5.624172952E1 +2.750726000E3,4.374037489E1 +2.750957000E3,4.189644016E1 +2.751207000E3,3.621210842E1 +2.751519000E3,4.177841495E1 +2.751770000E3,4.048458953E1 +2.752052000E3,3.923884976E1 +2.752303000E3,3.426258793E1 +2.752575000E3,3.252443323E1 +2.752926000E3,3.211416673E1 +2.753222000E3,3.245023971E1 +2.753483000E3,3.266068265E1 +2.753758000E3,4.004662592E1 +2.754054000E3,4.872983792E1 +2.754320000E3,5.041613029E1 +2.754567000E3,4.540589836E1 +2.754814000E3,3.042430240E1 +2.755080000E3,3.072459076E1 +2.755376000E3,3.998104284E1 +2.755642000E3,4.049850263E1 +2.755970000E3,4.294486763E1 +2.756315000E3,4.067196783E1 +2.756573000E3,4.772031632E1 +2.756825000E3,4.988707098E1 +2.757139000E3,4.555538995E1 +2.757388000E3,4.252022698E1 +2.757651000E3,3.810962452E1 +2.757917000E3,3.494795311E1 +2.758159000E3,3.247098224E1 +2.758413000E3,3.588027190E1 +2.758665000E3,3.200494843E1 +2.758920000E3,4.772506231E1 +2.759171000E3,3.775844318E1 +2.759507000E3,3.920116655E1 +2.759772000E3,4.528245497E1 +2.760086000E3,4.240466142E1 +2.760349000E3,4.544544837E1 +2.760652000E3,4.039389797E1 +2.760923000E3,3.896680017E1 +2.761194000E3,4.381534416E1 +2.761436000E3,4.424202471E1 +2.761681000E3,4.737958135E1 +2.761960000E3,4.213672401E1 +2.762194000E3,4.516117441E1 +2.762462000E3,4.279973284E1 +2.762806000E3,3.859577230E1 +2.763061000E3,4.880977241E1 +2.763403000E3,4.365184399E1 +2.763660000E3,3.848143477E1 +2.763932000E3,4.787104427E1 +2.764214000E3,3.823665924E1 +2.764451000E3,3.049392521E1 +2.764732000E3,3.086844430E1 +2.764975000E3,2.587396098E1 +2.765284000E3,3.362049288E1 +2.765536000E3,3.353664382E1 +2.765825000E3,5.140360254E1 +2.766193000E3,5.105178275E1 +2.766449000E3,5.027787452E1 +2.766756000E3,4.961194015E1 +2.766992000E3,4.473604482E1 +2.767290000E3,5.567849424E1 +2.767540000E3,5.366739238E1 +2.767788000E3,5.268444481E1 +2.768092000E3,4.378358357E1 +2.768389000E3,4.285786187E1 +2.768638000E3,3.838737205E1 +2.768928000E3,4.053738598E1 +2.769250000E3,3.914310468E1 +2.769517000E3,3.950994015E1 +2.769781000E3,4.085678781E1 +2.770095000E3,3.706118568E1 +2.770362000E3,3.878826243E1 +2.770640000E3,4.509160576E1 +2.770877000E3,4.395611401E1 +2.771129000E3,3.894826552E1 +2.771368000E3,3.783168139E1 +2.771620000E3,3.074559821E1 +2.771881000E3,4.191911052E1 +2.772136000E3,4.492008577E1 +2.772447000E3,3.666714779E1 +2.772710000E3,4.135207765E1 +2.772994000E3,4.645886813E1 +2.773238000E3,5.078995440E1 +2.773478000E3,5.706152467E1 +2.773725000E3,5.135582573E1 +2.773990000E3,4.900548267E1 +2.774266000E3,5.275962483E1 +2.774567000E3,3.947101760E1 +2.774806000E3,4.078518654E1 +2.775113000E3,4.929998433E1 +2.775417000E3,4.396253608E1 +2.775784000E3,4.382194135E1 +2.776077000E3,4.131860223E1 +2.776341000E3,4.321133953E1 +2.776596000E3,3.942571045E1 +2.776881000E3,5.035254190E1 +2.777176000E3,5.596334670E1 +2.777432000E3,6.003222989E1 +2.777730000E3,5.139953750E1 +2.778036000E3,5.596001036E1 +2.778330000E3,5.632045587E1 +2.778567000E3,5.352711698E1 +2.778873000E3,5.160150080E1 +2.779243000E3,5.407354895E1 +2.779513000E3,5.151192380E1 +2.779810000E3,5.479493680E1 +2.780084000E3,5.006197117E1 +2.780351000E3,5.012247277E1 +2.780644000E3,4.598086802E1 +2.780884000E3,3.959492635E1 +2.781142000E3,3.571624227E1 +2.781421000E3,4.082207018E1 +2.781720000E3,5.162800696E1 +2.781984000E3,5.211692198E1 +2.782250000E3,5.017743125E1 +2.782617000E3,4.685740156E1 +2.782916000E3,4.348825959E1 +2.783213000E3,3.825858224E1 +2.783454000E3,4.923981343E1 +2.783750000E3,5.319160353E1 +2.783992000E3,4.967899375E1 +2.784288000E3,3.952802481E1 +2.784535000E3,3.328379343E1 +2.784779000E3,3.014350405E1 +2.785020000E3,3.405755755E1 +2.785313000E3,4.653255974E1 +2.785639000E3,4.571255084E1 +2.785896000E3,4.212654376E1 +2.786166000E3,4.635178938E1 +2.786421000E3,4.614547408E1 +2.786716000E3,4.279815144E1 +2.787018000E3,3.739201392E1 +2.787261000E3,4.297599275E1 +2.787569000E3,5.279236826E1 +2.787869000E3,4.385267374E1 +2.788181000E3,3.538660905E1 +2.788488000E3,4.283741498E1 +2.788738000E3,3.898018884E1 +2.789079000E3,4.417569536E1 +2.789327000E3,3.821417555E1 +2.789586000E3,4.124587088E1 +2.789850000E3,4.583617377E1 +2.790116000E3,4.758354441E1 +2.790413000E3,4.386951397E1 +2.790662000E3,4.527431896E1 +2.790956000E3,4.454979637E1 +2.791207000E3,4.019280914E1 +2.791465000E3,4.549375778E1 +2.791714000E3,4.076569420E1 +2.791963000E3,3.807465350E1 +2.792293000E3,5.201775254E1 +2.792550000E3,4.217772267E1 +2.792797000E3,5.472035384E1 +2.793107000E3,5.403984906E1 +2.793357000E3,5.591746790E1 +2.793622000E3,5.564159884E1 +2.793875000E3,5.646584479E1 +2.794118000E3,5.185594958E1 +2.794377000E3,4.895735059E1 +2.794636000E3,5.654557288E1 +2.794943000E3,5.012866956E1 +2.795254000E3,4.757016947E1 +2.795528000E3,5.211434220E1 +2.795790000E3,4.452402763E1 +2.796058000E3,4.290214665E1 +2.796307000E3,3.465820610E1 +2.796556000E3,4.339944359E1 +2.796852000E3,4.313164949E1 +2.797091000E3,5.438037991E1 +2.797389000E3,5.514175593E1 +2.797635000E3,4.928848190E1 +2.797924000E3,4.659784940E1 +2.798220000E3,4.998887096E1 +2.798537000E3,4.486399829E1 +2.798842000E3,4.885866840E1 +2.799091000E3,4.635335968E1 +2.799347000E3,4.504358299E1 +2.799594000E3,3.958005741E1 +2.799833000E3,4.827229253E1 +2.800082000E3,4.830536262E1 +2.800388000E3,4.659260793E1 +2.800673000E3,4.111758509E1 +2.800972000E3,4.464305855E1 +2.801233000E3,4.497276151E1 +2.801524000E3,3.374775892E1 +2.801884000E3,3.426238632E1 +2.802202000E3,3.521995684E1 +2.802451000E3,3.181302785E1 +2.802708000E3,2.794884084E1 +2.803019000E3,3.320140571E1 +2.803325000E3,3.478175393E1 +2.803626000E3,3.529465039E1 +2.803932000E3,3.962950189E1 +2.804222000E3,5.725685057E1 +2.804486000E3,5.740119524E1 +2.804784000E3,5.069347451E1 +2.805056000E3,5.047632669E1 +2.805376000E3,5.207930289E1 +2.805626000E3,5.264810014E1 +2.805887000E3,5.288954519E1 +2.806177000E3,4.457356662E1 +2.806431000E3,3.885566564E1 +2.806679000E3,3.768676842E1 +2.806944000E3,3.953483275E1 +2.807192000E3,4.348722722E1 +2.807514000E3,4.091620627E1 +2.807832000E3,4.192587435E1 +2.808086000E3,4.434501723E1 +2.808380000E3,4.393917252E1 +2.808686000E3,4.250763593E1 +2.809001000E3,4.146719312E1 +2.809249000E3,4.084508562E1 +2.809517000E3,4.466153637E1 +2.809817000E3,4.002274614E1 +2.810111000E3,4.310032831E1 +2.810375000E3,4.901386280E1 +2.810661000E3,4.607368963E1 +2.810927000E3,4.387647276E1 +2.811225000E3,5.143943484E1 +2.811469000E3,5.045193234E1 +2.811861000E3,4.363012565E1 +2.812115000E3,4.450854658E1 +2.812371000E3,4.453857946E1 +2.812631000E3,4.628101753E1 +2.812921000E3,4.634691523E1 +2.813212000E3,4.654803531E1 +2.813510000E3,4.718980060E1 +2.813758000E3,4.430765323E1 +2.814051000E3,4.322664022E1 +2.814349000E3,4.450224091E1 +2.814582000E3,4.170367724E1 +2.814868000E3,3.985315953E1 +2.815113000E3,5.280042862E1 +2.815400000E3,4.119993511E1 +2.815662000E3,4.251502783E1 +2.815937000E3,4.221594106E1 +2.816186000E3,4.475181393E1 +2.816425000E3,4.757705666E1 +2.816666000E3,4.971185267E1 +2.816968000E3,4.862141287E1 +2.817211000E3,4.713523003E1 +2.817492000E3,4.541478066E1 +2.817737000E3,4.363493262E1 +2.817996000E3,4.428814895E1 +2.818246000E3,4.395099122E1 +2.818516000E3,4.781334664E1 +2.818773000E3,4.439472962E1 +2.819027000E3,4.768107540E1 +2.819278000E3,4.535748265E1 +2.819523000E3,5.061196572E1 +2.819779000E3,4.816069594E1 +2.820044000E3,4.715573746E1 +2.820374000E3,4.919198579E1 +2.820635000E3,5.486134785E1 +2.820897000E3,4.845922458E1 +2.821173000E3,4.486224636E1 +2.821520000E3,4.543631827E1 +2.821781000E3,4.823449020E1 +2.822049000E3,4.622456265E1 +2.822354000E3,3.467019045E1 +2.822632000E3,3.820707315E1 +2.822892000E3,3.870865044E1 +2.823175000E3,3.526203974E1 +2.823424000E3,3.398332746E1 +2.823673000E3,4.060940798E1 +2.823924000E3,4.531267955E1 +2.824156000E3,4.823172894E1 +2.824426000E3,5.381643572E1 +2.824772000E3,5.219878503E1 +2.825053000E3,4.888255160E1 +2.825277000E3,4.023650802E1 +2.825526000E3,3.467455539E1 +2.825785000E3,3.818404386E1 +2.826078000E3,4.122702652E1 +2.826315000E3,3.713088668E1 +2.826619000E3,4.891468535E1 +2.826912000E3,5.266971981E1 +2.827148000E3,4.991025067E1 +2.827457000E3,5.435242869E1 +2.827718000E3,5.378448717E1 +2.828053000E3,5.171570017E1 +2.828327000E3,5.600593919E1 +2.828581000E3,5.175339102E1 +2.828821000E3,4.567582373E1 +2.829101000E3,3.417267221E1 +2.829337000E3,3.532670702E1 +2.829576000E3,4.323212593E1 +2.829823000E3,3.952189104E1 +2.830096000E3,4.372473758E1 +2.830363000E3,4.288959864E1 +2.830609000E3,3.903893871E1 +2.830954000E3,3.847274859E1 +2.831281000E3,4.911689413E1 +2.831539000E3,5.342672798E1 +2.831798000E3,5.558955965E1 +2.832091000E3,5.519004987E1 +2.832341000E3,5.877942264E1 +2.832589000E3,4.602825434E1 +2.832861000E3,3.380054471E1 +2.833107000E3,3.583644563E1 +2.833403000E3,4.160983164E1 +2.833653000E3,3.903662215E1 +2.833958000E3,3.879412363E1 +2.834222000E3,4.121083607E1 +2.834460000E3,4.235130104E1 +2.834723000E3,5.615135633E1 +2.834993000E3,5.355273371E1 +2.835271000E3,4.896976792E1 +2.835535000E3,5.132324538E1 +2.835792000E3,5.529277110E1 +2.836041000E3,5.163674064E1 +2.836366000E3,4.657927993E1 +2.836613000E3,4.238907241E1 +2.836875000E3,5.376683406E1 +2.837143000E3,5.052269952E1 +2.837398000E3,5.018740192E1 +2.837697000E3,4.680907883E1 +2.837961000E3,4.427452663E1 +2.838227000E3,3.300759096E1 +2.838490000E3,3.639504198E1 +2.838784000E3,4.617517315E1 +2.839084000E3,4.692063960E1 +2.839325000E3,4.445415179E1 +2.839620000E3,4.215561710E1 +2.839863000E3,4.433766229E1 +2.840168000E3,4.210423337E1 +2.840460000E3,3.873922427E1 +2.840768000E3,3.717852459E1 +2.841057000E3,3.957811826E1 +2.841313000E3,3.760389186E1 +2.841638000E3,4.310249633E1 +2.841921000E3,4.813095040E1 +2.842192000E3,4.623131926E1 +2.842444000E3,4.648620260E1 +2.842743000E3,4.620801315E1 +2.843027000E3,4.321069748E1 +2.843281000E3,4.205248893E1 +2.843587000E3,2.653536028E1 +2.843863000E3,2.940344619E1 +2.844270000E3,4.715941302E1 +2.844533000E3,4.512147604E1 +2.844793000E3,4.758865475E1 +2.845051000E3,4.853448129E1 +2.845325000E3,4.647479098E1 +2.845569000E3,4.600966189E1 +2.845842000E3,4.549543262E1 +2.846088000E3,4.262631529E1 +2.846347000E3,4.522394390E1 +2.846652000E3,4.657245211E1 +2.846924000E3,4.554651191E1 +2.847231000E3,4.501421864E1 +2.847609000E3,4.413715050E1 +2.847859000E3,3.641102730E1 +2.848158000E3,2.959594862E1 +2.848409000E3,3.229903797E1 +2.848684000E3,3.716282001E1 +2.848948000E3,4.864280315E1 +2.849195000E3,4.698625872E1 +2.849453000E3,4.475077374E1 +2.849725000E3,4.320130236E1 +2.850029000E3,4.052232702E1 +2.850286000E3,4.987213531E1 +2.850622000E3,4.470574790E1 +2.850953000E3,4.746715529E1 +2.851224000E3,4.817674396E1 +2.851475000E3,4.755384271E1 +2.851775000E3,4.606857790E1 +2.852037000E3,4.602549066E1 +2.852280000E3,4.107899882E1 +2.852578000E3,4.602936757E1 +2.852832000E3,4.594357604E1 +2.853123000E3,4.132874601E1 +2.853424000E3,3.891402985E1 +2.853676000E3,3.210431116E1 +2.854034000E3,4.148325967E1 +2.854336000E3,4.539420759E1 +2.854629000E3,3.813311910E1 +2.854857000E3,3.204826654E1 +2.855103000E3,4.042825728E1 +2.855348000E3,3.781799437E1 +2.855635000E3,3.485312778E1 +2.855901000E3,3.176423587E1 +2.856194000E3,3.286644404E1 +2.856446000E3,3.601261840E1 +2.856741000E3,3.056779431E1 +2.856990000E3,2.876904683E1 +2.857247000E3,2.336161379E1 +2.857525000E3,5.319777865E1 +2.857765000E3,4.924210585E1 +2.858030000E3,4.161506516E1 +2.858287000E3,3.471025819E1 +2.858592000E3,2.954431085E1 +2.858878000E3,3.551304021E1 +2.859146000E3,4.056554733E1 +2.859438000E3,4.716772205E1 +2.859749000E3,4.728214145E1 +2.860112000E3,4.333221553E1 +2.860355000E3,3.970290127E1 +2.860627000E3,4.675070996E1 +2.860922000E3,5.292655838E1 +2.861168000E3,5.560528000E1 +2.861448000E3,5.155203362E1 +2.861684000E3,4.854372910E1 +2.861981000E3,5.166225265E1 +2.862226000E3,5.239758268E1 +2.862536000E3,4.880079262E1 +2.862801000E3,5.860724491E1 +2.863049000E3,5.487085904E1 +2.863366000E3,4.477307493E1 +2.863622000E3,4.809216762E1 +2.863923000E3,4.128779228E1 +2.864180000E3,4.039902121E1 +2.864473000E3,3.763315716E1 +2.864758000E3,3.836830031E1 +2.865072000E3,3.562217561E1 +2.865375000E3,4.251016575E1 +2.865631000E3,3.959478231E1 +2.865894000E3,3.906491963E1 +2.866161000E3,3.169567809E1 +2.866409000E3,4.180907280E1 +2.866769000E3,5.009501966E1 +2.867095000E3,4.485052737E1 +2.867377000E3,4.543449817E1 +2.867634000E3,4.558186247E1 +2.867912000E3,3.310648260E1 +2.868160000E3,3.368680580E1 +2.868403000E3,3.259924908E1 +2.868652000E3,3.468868920E1 +2.868945000E3,3.811295096E1 +2.869214000E3,3.680532391E1 +2.869523000E3,4.480088276E1 +2.869800000E3,4.321197878E1 +2.870149000E3,3.870196995E1 +2.870426000E3,4.501549736E1 +2.870686000E3,3.869046251E1 +2.870998000E3,5.116138397E1 +2.871259000E3,4.565952095E1 +2.871545000E3,4.044036430E1 +2.871835000E3,3.776423584E1 +2.872146000E3,4.283314388E1 +2.872428000E3,4.822150076E1 +2.872666000E3,4.609488251E1 +2.872966000E3,4.199842198E1 +2.873258000E3,4.199452970E1 +2.873557000E3,4.094164548E1 +2.873868000E3,3.451929232E1 +2.874146000E3,3.725700957E1 +2.874378000E3,3.820854143E1 +2.874632000E3,3.261818797E1 +2.874949000E3,4.229639001E1 +2.875219000E3,4.314663650E1 +2.875496000E3,4.030472415E1 +2.875772000E3,3.740362597E1 +2.876082000E3,3.770704299E1 +2.876334000E3,4.016521241E1 +2.876600000E3,4.155568881E1 +2.876855000E3,3.864643482E1 +2.877164000E3,3.358142820E1 +2.877430000E3,2.988882280E1 +2.877698000E3,4.233125756E1 +2.877954000E3,4.245249096E1 +2.878273000E3,3.619646633E1 +2.878541000E3,3.199868066E1 +2.878801000E3,4.546979293E1 +2.879062000E3,5.523869784E1 +2.879342000E3,5.605267417E1 +2.879584000E3,5.653411529E1 +2.879928000E3,4.626290707E1 +2.880202000E3,3.540012043E1 +2.880447000E3,3.620700172E1 +2.880691000E3,2.922036878E1 +2.880938000E3,3.659816429E1 +2.881251000E3,4.145147882E1 +2.881527000E3,3.894444603E1 +2.881851000E3,3.741315407E1 +2.882112000E3,4.094962867E1 +2.882373000E3,4.333353585E1 +2.882625000E3,4.557565518E1 +2.882879000E3,4.308396997E1 +2.883145000E3,4.097722416E1 +2.883416000E3,3.927850137E1 +2.883669000E3,3.223716221E1 +2.883941000E3,3.004581442E1 +2.884209000E3,3.765685263E1 +2.884466000E3,3.878810543E1 +2.884718000E3,2.988953340E1 +2.884967000E3,3.346960294E1 +2.885221000E3,3.799647420E1 +2.885537000E3,3.116842616E1 +2.885796000E3,3.671552801E1 +2.886084000E3,4.459898232E1 +2.886404000E3,4.708370738E1 +2.886677000E3,5.036035843E1 +2.886979000E3,4.113513329E1 +2.887251000E3,3.503458684E1 +2.887528000E3,3.462090732E1 +2.887785000E3,4.001717165E1 +2.888037000E3,3.538133603E1 +2.888296000E3,3.662805649E1 +2.888547000E3,4.263542947E1 +2.888820000E3,4.431895872E1 +2.889079000E3,4.300413574E1 +2.889340000E3,4.173317530E1 +2.889582000E3,4.288275032E1 +2.889932000E3,3.944773526E1 +2.890197000E3,3.214266541E1 +2.890503000E3,3.060588708E1 +2.890777000E3,3.296322494E1 +2.891017000E3,3.394251803E1 +2.891320000E3,3.208741950E1 +2.891570000E3,3.441770910E1 +2.891849000E3,3.368561294E1 +2.892087000E3,3.475967611E1 +2.892337000E3,3.740055420E1 +2.892635000E3,3.542355307E1 +2.892981000E3,3.105741683E1 +2.893247000E3,3.245614761E1 +2.893513000E3,4.142391644E1 +2.893779000E3,4.497461971E1 +2.894029000E3,4.653178389E1 +2.894282000E3,4.703576342E1 +2.894540000E3,4.751169602E1 +2.894805000E3,4.201422178E1 +2.895062000E3,4.370261317E1 +2.895310000E3,4.660906406E1 +2.895596000E3,4.633159753E1 +2.895865000E3,4.381116332E1 +2.896155000E3,4.368523912E1 +2.896405000E3,4.747051902E1 +2.896651000E3,4.222577444E1 +2.896905000E3,4.572633660E1 +2.897184000E3,5.203776089E1 +2.897450000E3,5.010843836E1 +2.897744000E3,4.910530865E1 +2.898022000E3,4.664859833E1 +2.898308000E3,3.985336775E1 +2.898564000E3,3.683403533E1 +2.898812000E3,4.284820320E1 +2.899091000E3,4.286036404E1 +2.899396000E3,5.224070654E1 +2.899753000E3,4.568546748E1 +2.900018000E3,5.586433220E1 +2.900278000E3,4.514230837E1 +2.900559000E3,3.853422420E1 +2.900865000E3,3.299777990E1 +2.901139000E3,3.594596453E1 +2.901415000E3,2.896001699E1 +2.901650000E3,2.556794162E1 +2.901937000E3,2.525773120E1 +2.902206000E3,3.138035436E1 +2.902457000E3,3.725731802E1 +2.902816000E3,3.600302530E1 +2.903095000E3,3.476106384E1 +2.903340000E3,3.325569458E1 +2.903600000E3,3.217545002E1 +2.903858000E3,2.994578711E1 +2.904108000E3,3.277965280E1 +2.904372000E3,4.013450695E1 +2.904627000E3,3.103730297E1 +2.904913000E3,4.187502355E1 +2.905174000E3,3.591627686E1 +2.905452000E3,3.067277870E1 +2.905743000E3,2.813597523E1 +2.906004000E3,2.760542404E1 +2.906321000E3,3.327793113E1 +2.906579000E3,4.111963776E1 +2.906835000E3,4.309802180E1 +2.907113000E3,2.749088524E1 +2.907354000E3,2.269523459E1 +2.907657000E3,3.631225289E1 +2.907901000E3,4.146405590E1 +2.908156000E3,3.785670954E1 +2.908403000E3,4.498664409E1 +2.908675000E3,4.174614917E1 +2.908932000E3,4.632262643E1 +2.909189000E3,3.569839459E1 +2.909522000E3,4.635385444E1 +2.909802000E3,4.337190367E1 +2.910035000E3,3.796960383E1 +2.910287000E3,4.151951269E1 +2.910538000E3,4.245940710E1 +2.910795000E3,4.268454470E1 +2.911045000E3,4.280139929E1 +2.911335000E3,3.861780445E1 +2.911584000E3,4.028221299E1 +2.911885000E3,3.934408626E1 +2.912139000E3,3.091195323E1 +2.912386000E3,2.709027446E1 +2.912622000E3,2.721294148E1 +2.912915000E3,3.169063213E1 +2.913196000E3,3.663766462E1 +2.913461000E3,3.582442105E1 +2.913744000E3,2.742218375E1 +2.913990000E3,3.432349666E1 +2.914297000E3,4.586386591E1 +2.914575000E3,4.813383402E1 +2.914888000E3,5.016441505E1 +2.915190000E3,4.132593749E1 +2.915481000E3,3.992883324E1 +2.915827000E3,3.713218942E1 +2.916087000E3,4.862036940E1 +2.916351000E3,4.985137398E1 +2.916622000E3,5.126616609E1 +2.916881000E3,4.180876614E1 +2.917157000E3,4.057128207E1 +2.917418000E3,3.994520906E1 +2.917681000E3,3.719846748E1 +2.917964000E3,4.377214072E1 +2.918264000E3,4.081140664E1 +2.918518000E3,4.149712935E1 +2.918784000E3,3.965801174E1 +2.919127000E3,3.499332266E1 +2.919415000E3,3.454976163E1 +2.919745000E3,3.801205804E1 +2.920003000E3,4.266330834E1 +2.920244000E3,3.704497233E1 +2.920548000E3,3.869800412E1 +2.920840000E3,3.880762608E1 +2.921081000E3,3.967826348E1 +2.921325000E3,4.387098551E1 +2.921573000E3,3.795523909E1 +2.921876000E3,3.884773193E1 +2.922122000E3,3.949919351E1 +2.922481000E3,3.549368996E1 +2.922774000E3,5.176437750E1 +2.923023000E3,4.673969779E1 +2.923306000E3,3.729614967E1 +2.923573000E3,3.557242251E1 +2.923880000E3,5.351861504E1 +2.924155000E3,5.486661937E1 +2.924424000E3,5.693150230E1 +2.924735000E3,4.225245527E1 +2.924988000E3,4.082554353E1 +2.925252000E3,3.807826598E1 +2.925573000E3,3.587807510E1 +2.925935000E3,4.290242494E1 +2.926237000E3,3.960438869E1 +2.926496000E3,3.732088357E1 +2.926751000E3,3.216321546E1 +2.926991000E3,3.001846960E1 +2.927295000E3,3.634949804E1 +2.927531000E3,3.127042454E1 +2.927829000E3,3.158500209E1 +2.928073000E3,2.815993792E1 +2.928370000E3,2.793102526E1 +2.928613000E3,2.468786691E1 +2.928943000E3,2.345175993E1 +2.929256000E3,2.908559709E1 +2.929497000E3,2.580950455E1 +2.929819000E3,2.871707976E1 +2.930114000E3,2.977851279E1 +2.930374000E3,4.220437998E1 +2.930636000E3,3.122152770E1 +2.930945000E3,3.902308439E1 +2.931227000E3,3.648582434E1 +2.931474000E3,4.774090674E1 +2.931717000E3,4.487624905E1 +2.931963000E3,4.620728265E1 +2.932258000E3,4.011602626E1 +2.932585000E3,4.011469989E1 +2.932871000E3,4.531107143E1 +2.933117000E3,4.299757904E1 +2.933366000E3,4.255561828E1 +2.933662000E3,4.180851663E1 +2.933899000E3,3.354142728E1 +2.934139000E3,4.061788576E1 +2.934435000E3,3.190428864E1 +2.934678000E3,3.136545948E1 +2.934975000E3,3.172564299E1 +2.935227000E3,3.538616066E1 +2.935577000E3,3.227761247E1 +2.935826000E3,3.587578035E1 +2.936132000E3,2.830690319E1 +2.936391000E3,2.983281120E1 +2.936636000E3,3.198482114E1 +2.936936000E3,4.529436692E1 +2.937191000E3,3.904726622E1 +2.937498000E3,4.546792713E1 +2.937790000E3,4.178984789E1 +2.938055000E3,3.901507008E1 +2.938332000E3,3.530528642E1 +2.938634000E3,3.766035689E1 +2.939060000E3,5.595745424E1 +2.939318000E3,5.800941557E1 +2.939576000E3,5.061871726E1 +2.939836000E3,6.017617924E1 +2.940124000E3,5.889680612E1 +2.940380000E3,5.553527141E1 +2.940631000E3,4.982924060E1 +2.940889000E3,5.386899946E1 +2.941183000E3,5.511436312E1 +2.941477000E3,5.474658637E1 +2.941736000E3,5.669903896E1 +2.941985000E3,5.352207307E1 +2.942302000E3,5.089540084E1 +2.942556000E3,5.163069551E1 +2.942811000E3,4.946827448E1 +2.943144000E3,4.292332560E1 +2.943386000E3,4.769421745E1 +2.943625000E3,4.741300910E1 +2.943936000E3,4.918473310E1 +2.944182000E3,4.358732286E1 +2.944456000E3,4.338106770E1 +2.944722000E3,5.302068646E1 +2.945006000E3,4.800501219E1 +2.945370000E3,4.445792428E1 +2.945619000E3,3.768400599E1 +2.945867000E3,3.829540629E1 +2.946159000E3,3.766669508E1 +2.946411000E3,4.016839261E1 +2.946712000E3,4.041724233E1 +2.947009000E3,4.012217251E1 +2.947323000E3,3.568820570E1 +2.947568000E3,3.690839296E1 +2.947818000E3,4.813137033E1 +2.948084000E3,5.325274156E1 +2.948341000E3,5.892514859E1 +2.948730000E3,4.314585435E1 +2.948980000E3,4.049194134E1 +2.949257000E3,4.522053034E1 +2.949515000E3,4.263261915E1 +2.949826000E3,5.159034358E1 +2.950126000E3,4.094053529E1 +2.950370000E3,4.144504964E1 +2.950613000E3,4.584689520E1 +2.950933000E3,3.986259871E1 +2.951211000E3,5.835616238E1 +2.951492000E3,4.865922153E1 +2.951773000E3,4.646806952E1 +2.952049000E3,5.501145746E1 +2.952349000E3,5.395560549E1 +2.952606000E3,5.094776028E1 +2.952859000E3,5.987933082E1 +2.953123000E3,5.553863596E1 +2.953365000E3,6.056471643E1 +2.953626000E3,5.705129962E1 +2.953881000E3,5.620457969E1 +2.954143000E3,4.633104773E1 +2.954403000E3,4.542785483E1 +2.954666000E3,4.357363747E1 +2.954925000E3,5.905995366E1 +2.955255000E3,5.325307727E1 +2.955500000E3,6.730464031E1 +2.955795000E3,6.362836082E1 +2.956030000E3,6.057596417E1 +2.956332000E3,6.813918985E1 +2.956573000E3,6.403678903E1 +2.956871000E3,6.230635205E1 +2.957135000E3,6.746671531E1 +2.957401000E3,6.427695804E1 +2.957673000E3,5.206458526E1 +2.957933000E3,5.261265827E1 +2.958182000E3,4.877242183E1 +2.958552000E3,6.627461000E1 +2.958808000E3,6.741673158E1 +2.959062000E3,6.597614354E1 +2.959304000E3,6.540552328E1 +2.959551000E3,6.528289091E1 +2.959864000E3,5.830061674E1 +2.960121000E3,5.985112812E1 +2.960428000E3,6.090568068E1 +2.960720000E3,6.807446854E1 +2.960985000E3,6.930722199E1 +2.961226000E3,6.386100217E1 +2.961579000E3,6.028451745E1 +2.961849000E3,6.477814340E1 +2.962132000E3,6.837046944E1 +2.962373000E3,6.647209363E1 +2.962660000E3,6.694202205E1 +2.962967000E3,6.648756695E1 +2.963231000E3,6.482625001E1 +2.963518000E3,7.095796361E1 +2.963775000E3,6.454417662E1 +2.964062000E3,6.533171518E1 +2.964339000E3,6.471819922E1 +2.964629000E3,5.679367810E1 +2.964962000E3,5.573913208E1 +2.965271000E3,6.251351498E1 +2.965502000E3,6.071427502E1 +2.965745000E3,6.212696498E1 +2.966049000E3,5.601947939E1 +2.966292000E3,5.543203731E1 +2.966544000E3,5.440105204E1 +2.966807000E3,5.169354717E1 +2.967114000E3,5.098574914E1 +2.967354000E3,4.778774527E1 +2.967603000E3,5.527018336E1 +2.967874000E3,5.069142516E1 +2.968220000E3,5.540354927E1 +2.968470000E3,5.388190573E1 +2.968725000E3,5.648678631E1 +2.968994000E3,6.195289166E1 +2.969259000E3,5.924073062E1 +2.969526000E3,5.554902217E1 +2.969797000E3,6.073047002E1 +2.970049000E3,5.750580172E1 +2.970375000E3,6.205206850E1 +2.970685000E3,5.892672487E1 +2.971008000E3,5.603539479E1 +2.971306000E3,5.380141597E1 +2.971609000E3,6.182570937E1 +2.971860000E3,5.755792598E1 +2.972120000E3,7.094637252E1 +2.972374000E3,7.220321333E1 +2.972688000E3,6.074903881E1 +2.972946000E3,5.132390204E1 +2.973203000E3,5.555176793E1 +2.973482000E3,5.082163203E1 +2.973746000E3,6.668022761E1 +2.974024000E3,6.951681150E1 +2.974257000E3,6.170353739E1 +2.974507000E3,6.191784425E1 +2.974845000E3,6.249884739E1 +2.975129000E3,6.139715498E1 +2.975385000E3,5.458109058E1 +2.975684000E3,6.285593412E1 +2.975925000E3,6.801445640E1 +2.976223000E3,6.762358149E1 +2.976454000E3,6.007212586E1 +2.976698000E3,6.176376027E1 +2.976998000E3,5.489351528E1 +2.977244000E3,6.419682450E1 +2.977544000E3,6.335879864E1 +2.977813000E3,6.346249627E1 +2.978071000E3,6.122721977E1 +2.978303000E3,6.269343112E1 +2.978564000E3,5.719207644E1 +2.978818000E3,6.209398004E1 +2.979085000E3,6.570545323E1 +2.979335000E3,6.443300698E1 +2.979582000E3,6.395479352E1 +2.979841000E3,6.285971298E1 +2.980091000E3,6.452411240E1 +2.980337000E3,6.648403811E1 +2.980638000E3,6.146510082E1 +2.980898000E3,6.178604521E1 +2.981191000E3,5.906416732E1 +2.981418000E3,6.139524316E1 +2.981668000E3,6.754933795E1 +2.981958000E3,5.804633278E1 +2.982221000E3,5.544285219E1 +2.982480000E3,5.252390700E1 +2.982741000E3,5.442974682E1 +2.983009000E3,5.886662164E1 +2.983270000E3,6.039421332E1 +2.983532000E3,5.984826425E1 +2.983780000E3,6.038747451E1 +2.984020000E3,5.836799318E1 +2.984266000E3,6.011457774E1 +2.984654000E3,6.086793857E1 +2.984928000E3,6.104684994E1 +2.985246000E3,6.081085188E1 +2.985504000E3,6.338602633E1 +2.985771000E3,6.224702903E1 +2.986040000E3,5.771788346E1 +2.986351000E3,5.832375863E1 +2.986657000E3,6.179808645E1 +2.986893000E3,6.074067698E1 +2.987188000E3,5.763905723E1 +2.987459000E3,5.411975455E1 +2.987698000E3,5.609082395E1 +2.988020000E3,5.838775534E1 +2.988261000E3,5.545934196E1 +2.988564000E3,5.818253650E1 +2.988803000E3,5.693365858E1 +2.989084000E3,5.747877452E1 +2.989394000E3,6.108654481E1 +2.989646000E3,6.109521888E1 +2.989952000E3,5.453216708E1 +2.990235000E3,5.325056065E1 +2.990530000E3,5.226229633E1 +2.990796000E3,5.566734434E1 +2.991153000E3,5.983192138E1 +2.991409000E3,5.902282422E1 +2.991712000E3,6.553978750E1 +2.991962000E3,6.323109208E1 +2.992210000E3,6.430699278E1 +2.992477000E3,6.439502996E1 +2.992769000E3,5.882379749E1 +2.993024000E3,7.076998945E1 +2.993317000E3,6.710088514E1 +2.993554000E3,6.332152683E1 +2.993846000E3,6.013348006E1 +2.994081000E3,6.492156154E1 +2.994361000E3,6.054189638E1 +2.994671000E3,5.878685209E1 +2.994911000E3,6.363988355E1 +2.995218000E3,6.266127576E1 +2.995513000E3,6.231860976E1 +2.995750000E3,6.770663238E1 +2.996056000E3,6.411706706E1 +2.996346000E3,6.607053327E1 +2.996592000E3,6.231837938E1 +2.996884000E3,6.235557028E1 +2.997130000E3,6.626149607E1 +2.997386000E3,6.897456616E1 +2.997721000E3,6.896820400E1 +2.997984000E3,5.708709076E1 +2.998260000E3,5.465136518E1 +2.998532000E3,6.136090841E1 +2.998792000E3,6.427324700E1 +2.999047000E3,5.922924051E1 +2.999308000E3,5.964993479E1 +2.999619000E3,5.937495043E1 +2.999910000E3,6.345321013E1 +3.000196000E3,6.558504608E1 +3.000438000E3,6.566442906E1 +3.000721000E3,6.596782674E1 +3.001048000E3,6.493210478E1 +3.001299000E3,6.778071085E1 +3.001554000E3,5.810398860E1 +3.001834000E3,6.461256831E1 +3.002084000E3,5.637103240E1 +3.002332000E3,6.244497501E1 +3.002633000E3,5.749162406E1 +3.002980000E3,6.268391580E1 +3.003246000E3,6.122193913E1 +3.003572000E3,6.467185898E1 +3.003877000E3,6.239318427E1 +3.004266000E3,6.708558966E1 +3.004573000E3,6.293492178E1 +3.004871000E3,6.169168265E1 +3.005129000E3,5.944912128E1 +3.005404000E3,5.631628075E1 +3.005704000E3,6.080609102E1 +3.005964000E3,6.424565764E1 +3.006250000E3,6.447415860E1 +3.006481000E3,6.606824769E1 +3.006756000E3,6.337387069E1 +3.007004000E3,6.294291386E1 +3.007286000E3,6.430484746E1 +3.007612000E3,6.091848593E1 +3.007867000E3,6.343837854E1 +3.008169000E3,5.978702761E1 +3.008432000E3,5.965865421E1 +3.008675000E3,5.540362761E1 +3.008918000E3,5.443572137E1 +3.009202000E3,6.171389250E1 +3.009446000E3,6.487192568E1 +3.009738000E3,5.958143908E1 +3.009983000E3,6.189834719E1 +3.010232000E3,5.752745917E1 +3.010489000E3,6.339873723E1 +3.010846000E3,6.127984243E1 +3.011144000E3,6.065194767E1 +3.011387000E3,6.253646864E1 +3.011646000E3,6.179753794E1 +3.011925000E3,6.231808205E1 +3.012153000E3,6.101579519E1 +3.012442000E3,5.876502421E1 +3.012737000E3,5.809905793E1 +3.013015000E3,5.695141293E1 +3.013301000E3,5.973139928E1 +3.013577000E3,6.007240820E1 +3.013839000E3,7.136453087E1 +3.014063000E3,7.173892024E1 +3.014315000E3,6.885425335E1 +3.014559000E3,6.110376355E1 +3.014808000E3,6.296723224E1 +3.015075000E3,6.021879294E1 +3.015327000E3,6.012811489E1 +3.015577000E3,6.282613373E1 +3.015850000E3,6.884549735E1 +3.016115000E3,6.913958233E1 +3.016397000E3,6.608409337E1 +3.016648000E3,6.437779633E1 +3.016896000E3,6.412579817E1 +3.017253000E3,6.408373459E1 +3.017500000E3,6.487828946E1 +3.017743000E3,6.281964754E1 +3.018003000E3,6.153697843E1 +3.018258000E3,6.503307442E1 +3.018512000E3,6.508021131E1 +3.018791000E3,5.910017780E1 +3.019028000E3,5.757469918E1 +3.019325000E3,5.762978005E1 +3.019573000E3,5.366611226E1 +3.019824000E3,5.708763529E1 +3.020086000E3,5.488621207E1 +3.020437000E3,5.826722905E1 +3.020695000E3,5.951373108E1 +3.020968000E3,6.130623452E1 +3.021217000E3,6.025771329E1 +3.021490000E3,5.280103891E1 +3.021737000E3,6.123009986E1 +3.022037000E3,6.404958762E1 +3.022328000E3,6.469373641E1 +3.022599000E3,6.283727611E1 +3.022840000E3,6.248869497E1 +3.023123000E3,6.767270030E1 +3.023363000E3,6.436289402E1 +3.023706000E3,6.007121161E1 +3.023992000E3,6.067397941E1 +3.024255000E3,6.005092329E1 +3.024513000E3,6.146229561E1 +3.024803000E3,6.214304530E1 +3.025060000E3,6.107977952E1 +3.025317000E3,6.268440106E1 +3.025560000E3,5.744048190E1 +3.025823000E3,6.080102592E1 +3.026092000E3,6.359394744E1 +3.026384000E3,6.219604097E1 +3.026685000E3,6.296073955E1 +3.026912000E3,6.243574530E1 +3.027190000E3,6.540426031E1 +3.027426000E3,7.038009166E1 +3.027684000E3,7.133800291E1 +3.027943000E3,6.847497315E1 +3.028214000E3,7.049817235E1 +3.028486000E3,6.555713643E1 +3.028748000E3,6.762942526E1 +3.029008000E3,6.780082040E1 +3.029264000E3,6.644646205E1 +3.029533000E3,7.066497540E1 +3.029800000E3,6.700863421E1 +3.030174000E3,6.263767412E1 +3.030459000E3,5.937975562E1 +3.030697000E3,6.189133018E1 +3.030958000E3,6.479748496E1 +3.031218000E3,6.070421224E1 +3.031488000E3,5.567295684E1 +3.031754000E3,6.162939414E1 +3.032026000E3,6.462556380E1 +3.032293000E3,6.300561819E1 +3.032553000E3,6.320528504E1 +3.032852000E3,6.205536878E1 +3.033102000E3,7.179598993E1 +3.033490000E3,6.907149718E1 +3.033750000E3,6.110443799E1 +3.034008000E3,5.743025653E1 +3.034257000E3,5.714646515E1 +3.034505000E3,6.193634179E1 +3.034762000E3,6.511685208E1 +3.035034000E3,6.647840023E1 +3.035277000E3,6.637602928E1 +3.035534000E3,6.208743290E1 +3.035873000E3,6.158502662E1 +3.036127000E3,6.138896352E1 +3.036392000E3,5.988342330E1 +3.036737000E3,5.834272912E1 +3.036998000E3,6.504474047E1 +3.037253000E3,5.801637483E1 +3.037569000E3,6.208073459E1 +3.037831000E3,6.555093843E1 +3.038084000E3,6.686352963E1 +3.038356000E3,6.398821865E1 +3.038638000E3,6.053541888E1 +3.038927000E3,5.509282051E1 +3.039228000E3,6.213274835E1 +3.039473000E3,6.149105368E1 +3.039745000E3,6.097957376E1 +3.040056000E3,6.313145073E1 +3.040300000E3,6.749857058E1 +3.040549000E3,6.031561589E1 +3.040852000E3,5.991948868E1 +3.041110000E3,6.228314687E1 +3.041358000E3,6.281493679E1 +3.041621000E3,6.031124820E1 +3.041926000E3,6.035954468E1 +3.042177000E3,6.230627050E1 +3.042448000E3,5.381586458E1 +3.042741000E3,6.032611045E1 +3.043026000E3,5.796046788E1 +3.043304000E3,6.286261594E1 +3.043605000E3,6.188894569E1 +3.043848000E3,6.196336480E1 +3.044091000E3,6.506902622E1 +3.044345000E3,6.547913264E1 +3.044589000E3,6.701681380E1 +3.044849000E3,6.398074775E1 +3.045095000E3,6.102355933E1 +3.045350000E3,6.546609328E1 +3.045598000E3,6.626677347E1 +3.045845000E3,6.212155235E1 +3.046098000E3,6.475032486E1 +3.046433000E3,6.469401418E1 +3.046698000E3,6.335899573E1 +3.046970000E3,5.799459631E1 +3.047267000E3,5.777430210E1 +3.047527000E3,6.228044606E1 +3.047785000E3,5.521572273E1 +3.048044000E3,5.312506195E1 +3.048316000E3,5.877400717E1 +3.048592000E3,6.239358597E1 +3.048842000E3,6.019315355E1 +3.049164000E3,5.944515023E1 +3.049418000E3,6.571719967E1 +3.049752000E3,5.906077781E1 +3.050005000E3,6.269931225E1 +3.050242000E3,6.329267329E1 +3.050532000E3,6.094692628E1 +3.050797000E3,6.137608503E1 +3.051055000E3,6.019630450E1 +3.051299000E3,5.959056092E1 +3.051551000E3,6.195653625E1 +3.051802000E3,5.997942431E1 +3.052044000E3,6.071988649E1 +3.052348000E3,6.146559433E1 +3.052605000E3,6.320542640E1 +3.052903000E3,6.301314639E1 +3.053133000E3,6.491013087E1 +3.053386000E3,5.374424399E1 +3.053632000E3,5.337930652E1 +3.053925000E3,5.830420592E1 +3.054167000E3,5.827724976E1 +3.054414000E3,5.413373264E1 +3.054713000E3,5.438904566E1 +3.054952000E3,5.478972153E1 +3.055245000E3,6.026125791E1 +3.055545000E3,6.377000784E1 +3.055792000E3,6.273059884E1 +3.056116000E3,6.164463909E1 +3.056426000E3,6.310484015E1 +3.056665000E3,6.191865333E1 +3.056974000E3,6.044005004E1 +3.057225000E3,5.723160495E1 +3.057532000E3,6.482171923E1 +3.057799000E3,6.373654624E1 +3.058097000E3,6.579319958E1 +3.058333000E3,6.717439766E1 +3.058632000E3,6.244987186E1 +3.058874000E3,5.911459441E1 +3.059119000E3,6.246625617E1 +3.059514000E3,6.061929027E1 +3.059786000E3,6.141894857E1 +3.060044000E3,6.531006136E1 +3.060311000E3,6.745420282E1 +3.060564000E3,6.305040539E1 +3.060809000E3,6.250223063E1 +3.061063000E3,5.984183740E1 +3.061365000E3,6.201500936E1 +3.061610000E3,6.171968159E1 +3.061853000E3,5.636652524E1 +3.062137000E3,5.937450988E1 +3.062405000E3,5.424162977E1 +3.062724000E3,5.577353705E1 +3.062968000E3,6.265208868E1 +3.063225000E3,6.754657095E1 +3.063470000E3,6.259832443E1 +3.063731000E3,5.846954403E1 +3.063975000E3,5.735719718E1 +3.064220000E3,5.614657426E1 +3.064460000E3,5.493678071E1 +3.064711000E3,6.175770153E1 +3.064961000E3,6.502893325E1 +3.065266000E3,6.372557142E1 +3.065562000E3,6.165604672E1 +3.065921000E3,6.202265536E1 +3.066181000E3,5.894659424E1 +3.066427000E3,5.516515279E1 +3.066669000E3,5.227763917E1 +3.066911000E3,5.331294555E1 +3.067166000E3,5.535383534E1 +3.067460000E3,5.490405248E1 +3.067721000E3,5.927902794E1 +3.068030000E3,6.001209348E1 +3.068288000E3,5.925707402E1 +3.068553000E3,6.116769528E1 +3.068848000E3,5.907075037E1 +3.069160000E3,5.402384091E1 +3.069467000E3,6.078433547E1 +3.069706000E3,6.064305090E1 +3.069991000E3,6.099922555E1 +3.070247000E3,6.081028216E1 +3.070500000E3,6.857342881E1 +3.070795000E3,6.830085683E1 +3.071035000E3,7.092929468E1 +3.071334000E3,6.670654987E1 +3.071580000E3,6.198358410E1 +3.071845000E3,6.029427505E1 +3.072216000E3,6.271100503E1 +3.072476000E3,6.548403896E1 +3.072709000E3,6.655140024E1 +3.072958000E3,6.872933885E1 +3.073221000E3,6.840034062E1 +3.073524000E3,6.189262665E1 +3.073801000E3,6.315516618E1 +3.074029000E3,6.431689152E1 +3.074282000E3,7.008635825E1 +3.074531000E3,6.529488526E1 +3.074781000E3,5.362885622E1 +3.075079000E3,6.174622467E1 +3.075321000E3,6.106059522E1 +3.075569000E3,6.727558853E1 +3.075841000E3,6.068477373E1 +3.076089000E3,6.224550385E1 +3.076358000E3,6.049387981E1 +3.076618000E3,5.554290122E1 +3.076868000E3,5.232623619E1 +3.077136000E3,5.715980006E1 +3.077434000E3,6.112308912E1 +3.077738000E3,5.964598426E1 +3.077997000E3,5.774993649E1 +3.078301000E3,5.930552673E1 +3.078632000E3,6.204668908E1 +3.078903000E3,6.135182684E1 +3.079234000E3,6.010535577E1 +3.079530000E3,5.612975229E1 +3.079846000E3,5.894789721E1 +3.080130000E3,6.424282153E1 +3.080395000E3,6.696093787E1 +3.080696000E3,5.929656512E1 +3.080931000E3,5.577162965E1 +3.081168000E3,6.096321541E1 +3.081415000E3,6.147204445E1 +3.081708000E3,6.518353223E1 +3.082066000E3,6.565001970E1 +3.082347000E3,6.152216198E1 +3.082591000E3,6.232488129E1 +3.082884000E3,6.450829181E1 +3.083131000E3,6.727741702E1 +3.083373000E3,6.596172391E1 +3.083615000E3,6.588974420E1 +3.083909000E3,6.215985231E1 +3.084146000E3,5.417797447E1 +3.084444000E3,5.776086644E1 +3.084736000E3,6.145598006E1 +3.085067000E3,6.705675690E1 +3.085353000E3,7.032609091E1 +3.085621000E3,6.942809802E1 +3.085926000E3,6.673219093E1 +3.086170000E3,5.874483463E1 +3.086457000E3,6.163530440E1 +3.086730000E3,5.863155738E1 +3.086955000E3,5.804604701E1 +3.087247000E3,7.202263239E1 +3.087542000E3,6.907595594E1 +3.087796000E3,7.104760035E1 +3.088063000E3,6.060670654E1 +3.088371000E3,6.409876160E1 +3.088642000E3,6.504332531E1 +3.088891000E3,6.050178076E1 +3.089172000E3,5.988548041E1 +3.089448000E3,6.419311516E1 +3.089715000E3,6.072209436E1 +3.089992000E3,6.148544930E1 +3.090256000E3,6.667985585E1 +3.090551000E3,6.360479893E1 +3.090829000E3,6.675347002E1 +3.091081000E3,6.585951744E1 +3.091337000E3,5.998998345E1 +3.091582000E3,7.213751425E1 +3.091973000E3,7.002319175E1 +3.092225000E3,6.554991346E1 +3.092495000E3,5.438962824E1 +3.092757000E3,5.806427109E1 +3.093010000E3,5.611571138E1 +3.093290000E3,5.427298566E1 +3.093553000E3,6.332676554E1 +3.093801000E3,6.191283999E1 +3.094088000E3,6.222056485E1 +3.094383000E3,6.679558422E1 +3.094660000E3,6.396349695E1 +3.094980000E3,6.335657582E1 +3.095321000E3,6.368682935E1 +3.095574000E3,6.239728447E1 +3.095829000E3,6.560913932E1 +3.096083000E3,6.288470186E1 +3.096327000E3,6.063834800E1 +3.096611000E3,5.698542980E1 +3.096866000E3,6.214573666E1 +3.097125000E3,6.108001307E1 +3.097382000E3,6.098898235E1 +3.097639000E3,6.935379750E1 +3.097944000E3,6.076333803E1 +3.098235000E3,5.747447310E1 +3.098595000E3,5.896750888E1 +3.098845000E3,6.428262322E1 +3.099146000E3,6.073561603E1 +3.099435000E3,5.610862272E1 +3.099679000E3,5.808393750E1 +3.099971000E3,6.306244141E1 +3.100214000E3,6.493760740E1 +3.100511000E3,5.964091377E1 +3.100753000E3,5.949423253E1 +3.100995000E3,6.324186751E1 +3.101237000E3,6.294719776E1 +3.101481000E3,6.618420708E1 +3.101805000E3,6.039251647E1 +3.102105000E3,6.883376735E1 +3.102388000E3,6.215701199E1 +3.102635000E3,6.251944475E1 +3.102926000E3,6.387718652E1 +3.103175000E3,6.262879933E1 +3.103469000E3,6.094246273E1 +3.103717000E3,5.780442917E1 +3.104010000E3,5.805018882E1 +3.104245000E3,6.073911170E1 +3.104537000E3,5.820155990E1 +3.104880000E3,5.691870737E1 +3.105139000E3,5.609187778E1 +3.105418000E3,5.368790307E1 +3.105673000E3,5.733127796E1 +3.105933000E3,5.834617124E1 +3.106196000E3,5.665251568E1 +3.106447000E3,5.839993992E1 +3.106707000E3,5.765825797E1 +3.106989000E3,6.346036236E1 +3.107241000E3,6.088974139E1 +3.107536000E3,5.623231578E1 +3.107836000E3,5.905990454E1 +3.108208000E3,5.913546091E1 +3.108462000E3,5.921957697E1 +3.108732000E3,6.403378055E1 +3.109010000E3,6.829473891E1 +3.109237000E3,6.866131452E1 +3.109530000E3,5.759864554E1 +3.109769000E3,5.216447932E1 +3.110067000E3,5.887622687E1 +3.110356000E3,5.912152229E1 +3.110621000E3,6.343631440E1 +3.110862000E3,6.110189356E1 +3.111105000E3,5.925249209E1 +3.111441000E3,5.583559168E1 +3.111708000E3,6.397874973E1 +3.112049000E3,5.864630935E1 +3.112314000E3,5.876030726E1 +3.112620000E3,5.558460131E1 +3.112980000E3,5.336927775E1 +3.113232000E3,5.351895645E1 +3.113515000E3,4.932805120E1 +3.113763000E3,6.323075662E1 +3.114057000E3,6.375401647E1 +3.114318000E3,6.430798012E1 +3.114651000E3,6.745313705E1 +3.114909000E3,6.370697195E1 +3.115204000E3,6.719832935E1 +3.115517000E3,6.353352979E1 +3.115816000E3,6.421660294E1 +3.116074000E3,6.666449428E1 +3.116372000E3,6.209745804E1 +3.116612000E3,5.853853683E1 +3.116911000E3,6.153177442E1 +3.117151000E3,6.465277685E1 +3.117439000E3,6.054074617E1 +3.117698000E3,5.762180605E1 +3.118029000E3,5.904912096E1 +3.118292000E3,6.054469105E1 +3.118547000E3,6.570885599E1 +3.118854000E3,6.686989978E1 +3.119103000E3,6.506823644E1 +3.119359000E3,5.780133308E1 +3.119610000E3,5.983707630E1 +3.119896000E3,6.102798325E1 +3.120167000E3,5.940835035E1 +3.120446000E3,6.154008300E1 +3.120717000E3,6.031178539E1 +3.120969000E3,6.222997321E1 +3.121291000E3,6.676268308E1 +3.121532000E3,6.244629438E1 +3.121778000E3,6.014719673E1 +3.122038000E3,6.351124664E1 +3.122317000E3,5.786579019E1 +3.122607000E3,5.704033688E1 +3.122864000E3,5.941823253E1 +3.123160000E3,6.366298469E1 +3.123429000E3,6.545330590E1 +3.123678000E3,6.206143443E1 +3.123932000E3,6.250040348E1 +3.124250000E3,6.193784317E1 +3.124582000E3,6.679802083E1 +3.124888000E3,6.239911876E1 +3.125141000E3,6.227743005E1 +3.125407000E3,5.930162190E1 +3.125655000E3,5.692493613E1 +3.125897000E3,6.100851678E1 +3.126155000E3,6.356932883E1 +3.126470000E3,6.583742229E1 +3.126735000E3,6.828531785E1 +3.127049000E3,6.744954014E1 +3.127349000E3,6.892448306E1 +3.127620000E3,6.312172108E1 +3.127885000E3,6.549450530E1 +3.128150000E3,6.274114245E1 +3.128434000E3,5.987443555E1 +3.128694000E3,5.754092402E1 +3.128967000E3,6.140483336E1 +3.129224000E3,5.793735580E1 +3.129483000E3,5.640840091E1 +3.129735000E3,7.068460790E1 +3.130042000E3,6.831622259E1 +3.130308000E3,6.661131327E1 +3.130563000E3,7.032191033E1 +3.130897000E3,6.429012882E1 +3.131166000E3,6.890779868E1 +3.131427000E3,6.812897599E1 +3.131726000E3,6.440583932E1 +3.132039000E3,6.371305855E1 +3.132310000E3,6.071113649E1 +3.132582000E3,6.356904702E1 +3.132834000E3,6.335195410E1 +3.133078000E3,5.922748305E1 +3.133357000E3,5.790290676E1 +3.133581000E3,6.067150466E1 +3.133827000E3,5.936438225E1 +3.134075000E3,5.651144024E1 +3.134312000E3,5.707156804E1 +3.134564000E3,6.256442790E1 +3.134822000E3,5.680653319E1 +3.135099000E3,6.386946987E1 +3.135341000E3,6.183817556E1 +3.135588000E3,5.791592939E1 +3.135843000E3,5.415500200E1 +3.136159000E3,5.828393923E1 +3.136402000E3,5.584102234E1 +3.136645000E3,5.843965538E1 +3.136922000E3,6.032067675E1 +3.137231000E3,6.082235855E1 +3.137514000E3,6.216335250E1 +3.137763000E3,6.576895249E1 +3.138052000E3,5.935628673E1 +3.138348000E3,5.697436057E1 +3.138590000E3,6.713499986E1 +3.138833000E3,5.996032355E1 +3.139071000E3,6.566814076E1 +3.139366000E3,6.469315039E1 +3.139607000E3,6.414816039E1 +3.139901000E3,6.238348704E1 +3.140144000E3,5.975478602E1 +3.140477000E3,5.617333113E1 +3.140789000E3,6.140881460E1 +3.141038000E3,5.760925345E1 +3.141323000E3,5.813474075E1 +3.141616000E3,6.190304914E1 +3.141899000E3,5.853813516E1 +3.142123000E3,6.019478920E1 +3.142387000E3,5.824830032E1 +3.142639000E3,6.031650371E1 +3.142898000E3,5.874305926E1 +3.143211000E3,6.365997735E1 +3.143459000E3,6.182267241E1 +3.143814000E3,6.153305629E1 +3.144076000E3,6.040235966E1 +3.144345000E3,6.279707978E1 +3.144591000E3,6.261441373E1 +3.144837000E3,5.722591859E1 +3.145082000E3,5.791919274E1 +3.145387000E3,6.142016587E1 +3.145678000E3,5.996802308E1 +3.145994000E3,5.761245992E1 +3.146269000E3,5.915341256E1 +3.146531000E3,5.679987844E1 +3.146814000E3,6.228452904E1 +3.147163000E3,6.038592359E1 +3.147440000E3,6.662509726E1 +3.147705000E3,5.864713600E1 +3.147961000E3,6.383827006E1 +3.148228000E3,6.445939632E1 +3.148543000E3,6.206597752E1 +3.148800000E3,6.082056407E1 +3.149046000E3,5.872798480E1 +3.149340000E3,5.792404132E1 +3.149585000E3,5.917409009E1 +3.149845000E3,5.619795947E1 +3.150164000E3,6.447379623E1 +3.150501000E3,6.336546747E1 +3.150798000E3,6.022605646E1 +3.151059000E3,5.837139298E1 +3.151360000E3,5.721847889E1 +3.151614000E3,7.085699981E1 +3.151908000E3,6.031233854E1 +3.152206000E3,6.170839562E1 +3.152452000E3,6.336115962E1 +3.152697000E3,6.732286145E1 +3.152943000E3,6.043278366E1 +3.153235000E3,5.822950572E1 +3.153537000E3,6.155234216E1 +3.153813000E3,5.671966020E1 +3.154078000E3,5.613348243E1 +3.154333000E3,5.384913785E1 +3.154580000E3,5.739778382E1 +3.154869000E3,5.617144196E1 +3.155103000E3,5.699346940E1 +3.155351000E3,6.356393037E1 +3.155653000E3,5.483372318E1 +3.155949000E3,5.806865262E1 +3.156195000E3,5.725879338E1 +3.156459000E3,5.708272088E1 +3.156776000E3,5.736330762E1 +3.157028000E3,5.620178265E1 +3.157280000E3,5.557503250E1 +3.157521000E3,6.379766868E1 +3.157864000E3,6.175462639E1 +3.158113000E3,5.970375584E1 +3.158365000E3,5.482220327E1 +3.158625000E3,6.094938302E1 +3.158872000E3,6.189076140E1 +3.159128000E3,6.365906369E1 +3.159385000E3,6.365252593E1 +3.159699000E3,6.421784723E1 +3.160039000E3,5.952347777E1 +3.160337000E3,6.582170091E1 +3.160643000E3,6.400621400E1 +3.160905000E3,5.982923632E1 +3.161162000E3,5.912958512E1 +3.161449000E3,5.744161350E1 +3.161722000E3,6.208953034E1 +3.161984000E3,6.743490019E1 +3.162228000E3,5.893358785E1 +3.162506000E3,6.260442429E1 +3.162777000E3,6.054589944E1 +3.163072000E3,5.958101250E1 +3.163380000E3,5.756716970E1 +3.163623000E3,5.897741262E1 +3.163916000E3,5.199350029E1 +3.164173000E3,5.607364633E1 +3.164444000E3,6.846587546E1 +3.164756000E3,5.833953537E1 +3.165011000E3,6.699601536E1 +3.165255000E3,6.024033326E1 +3.165530000E3,5.636786936E1 +3.165825000E3,5.917346905E1 +3.166077000E3,5.684739711E1 +3.166343000E3,5.441684119E1 +3.166607000E3,5.708423030E1 +3.166871000E3,5.726160097E1 +3.167212000E3,5.795085756E1 +3.167513000E3,5.359033433E1 +3.167800000E3,5.481028168E1 +3.168051000E3,5.771426852E1 +3.168321000E3,5.720698183E1 +3.168574000E3,6.029484328E1 +3.168847000E3,6.594273179E1 +3.169141000E3,5.814954146E1 +3.169451000E3,5.741553332E1 +3.169717000E3,5.474949866E1 +3.170064000E3,5.858087337E1 +3.170388000E3,5.901398101E1 +3.170689000E3,6.599046976E1 +3.170942000E3,6.777823262E1 +3.171184000E3,6.339704259E1 +3.171437000E3,5.678237753E1 +3.171694000E3,6.067324941E1 +3.171975000E3,6.337570500E1 +3.172215000E3,6.060254578E1 +3.172509000E3,6.511602204E1 +3.172792000E3,6.491523998E1 +3.173086000E3,6.236437487E1 +3.173442000E3,6.132637014E1 +3.173725000E3,5.575670785E1 +3.173997000E3,5.450541115E1 +3.174243000E3,5.816223835E1 +3.174516000E3,5.991084873E1 +3.174771000E3,5.959264792E1 +3.175022000E3,6.001504494E1 +3.175268000E3,5.794233494E1 +3.175510000E3,5.875384007E1 +3.175752000E3,6.582497874E1 +3.176001000E3,6.385809704E1 +3.176310000E3,6.575292490E1 +3.176700000E3,6.328122862E1 +3.176947000E3,6.160374932E1 +3.177205000E3,6.233605233E1 +3.177480000E3,5.746120395E1 +3.177733000E3,5.491961653E1 +3.178002000E3,5.346590976E1 +3.178308000E3,4.910433719E1 +3.178598000E3,5.548086035E1 +3.178876000E3,5.834728013E1 +3.179129000E3,5.722852381E1 +3.179407000E3,5.371032540E1 +3.179686000E3,5.375017527E1 +3.180066000E3,5.741446005E1 +3.180325000E3,5.595914402E1 +3.180624000E3,5.784989425E1 +3.180867000E3,5.818330240E1 +3.181112000E3,5.651638359E1 +3.181407000E3,5.400925398E1 +3.181645000E3,5.134681346E1 +3.181939000E3,5.540645654E1 +3.182189000E3,5.603348674E1 +3.182489000E3,5.612576596E1 +3.182726000E3,5.412821683E1 +3.183072000E3,5.364995955E1 +3.183373000E3,5.685067634E1 +3.183631000E3,5.292396423E1 +3.183913000E3,5.037305724E1 +3.184139000E3,5.458652507E1 +3.184386000E3,5.336216390E1 +3.184625000E3,5.355204553E1 +3.184861000E3,5.798216811E1 +3.185170000E3,5.037998219E1 +3.185412000E3,5.253320042E1 +3.185661000E3,5.864558083E1 +3.185944000E3,5.568855775E1 +3.186307000E3,6.065674046E1 +3.186594000E3,5.486017232E1 +3.186846000E3,5.354898396E1 +3.187128000E3,5.606629368E1 +3.187373000E3,5.887335608E1 +3.187646000E3,5.932986575E1 +3.187996000E3,5.618144782E1 +3.188254000E3,5.279151533E1 +3.188538000E3,5.980979660E1 +3.188819000E3,5.959008295E1 +3.189058000E3,5.757326838E1 +3.189324000E3,5.814251633E1 +3.189681000E3,6.715432083E1 +3.189929000E3,5.659786492E1 +3.190183000E3,6.813933576E1 +3.190493000E3,6.423896785E1 +3.190762000E3,6.115594562E1 +3.191063000E3,6.466877383E1 +3.191295000E3,6.400176112E1 +3.191543000E3,6.061189134E1 +3.191813000E3,6.334758009E1 +3.192062000E3,6.268892194E1 +3.192384000E3,6.255649695E1 +3.192688000E3,6.440152216E1 +3.193095000E3,6.083356984E1 +3.193368000E3,5.702207605E1 +3.193630000E3,6.129862703E1 +3.193931000E3,6.511359313E1 +3.194208000E3,6.424113032E1 +3.194458000E3,6.277957456E1 +3.194751000E3,6.067489213E1 +3.195007000E3,6.044409325E1 +3.195267000E3,5.902485869E1 +3.195523000E3,5.940450479E1 +3.195769000E3,5.629667180E1 +3.196103000E3,5.773687048E1 +3.196362000E3,5.275604571E1 +3.196676000E3,5.321996877E1 +3.196932000E3,4.952922772E1 +3.197191000E3,5.411849627E1 +3.197458000E3,5.575997519E1 +3.197718000E3,5.782402980E1 +3.197982000E3,6.092045522E1 +3.198228000E3,6.504329265E1 +3.198474000E3,5.972589974E1 +3.198713000E3,5.816644178E1 +3.198958000E3,6.190720604E1 +3.199249000E3,6.026051864E1 +3.199481000E3,6.064697026E1 +3.199744000E3,5.715218400E1 +3.200003000E3,5.509276249E1 +3.200281000E3,5.035485844E1 +3.200607000E3,5.745123346E1 +3.200874000E3,5.874041571E1 +3.201157000E3,6.540993071E1 +3.201407000E3,6.592699897E1 +3.201730000E3,5.826687879E1 +3.201982000E3,5.966898415E1 +3.202228000E3,5.928022084E1 +3.202546000E3,5.492659239E1 +3.202811000E3,5.843773228E1 +3.203091000E3,5.615478265E1 +3.203365000E3,5.378265559E1 +3.203611000E3,5.724493737E1 +3.203868000E3,5.517839982E1 +3.204137000E3,5.166422622E1 +3.204439000E3,5.966362579E1 +3.204692000E3,5.837831137E1 +3.204952000E3,5.873474045E1 +3.205216000E3,6.025432286E1 +3.205460000E3,5.709891269E1 +3.205710000E3,5.946766606E1 +3.206062000E3,5.575402329E1 +3.206367000E3,5.597615265E1 +3.206620000E3,5.417374311E1 +3.206869000E3,5.785505194E1 +3.207152000E3,5.973144393E1 +3.207405000E3,5.494944595E1 +3.207684000E3,5.859159641E1 +3.207982000E3,5.909726368E1 +3.208273000E3,6.221796591E1 +3.208541000E3,6.248597715E1 +3.208787000E3,6.143432195E1 +3.209043000E3,5.767415987E1 +3.209357000E3,6.087003136E1 +3.209636000E3,5.816954701E1 +3.209920000E3,5.644196424E1 +3.210232000E3,5.726504339E1 +3.210505000E3,5.384487818E1 +3.210769000E3,6.092886049E1 +3.211044000E3,5.910647270E1 +3.211306000E3,5.855040927E1 +3.211560000E3,6.886189365E1 +3.211803000E3,6.193548709E1 +3.212075000E3,5.895667088E1 +3.212320000E3,5.613734816E1 +3.212669000E3,6.365011223E1 +3.212934000E3,6.616065582E1 +3.213195000E3,4.911720228E1 +3.213460000E3,5.429539168E1 +3.213713000E3,5.374714305E1 +3.213991000E3,5.505703483E1 +3.214231000E3,5.216197587E1 +3.214486000E3,6.958974683E1 +3.214787000E3,6.410499727E1 +3.215047000E3,5.795707420E1 +3.215308000E3,6.210641451E1 +3.215581000E3,5.724864620E1 +3.215943000E3,5.588397230E1 +3.216221000E3,5.281586206E1 +3.216477000E3,5.616597876E1 +3.216735000E3,7.016181845E1 +3.216992000E3,7.008234703E1 +3.217238000E3,6.883905131E1 +3.217482000E3,6.039428517E1 +3.217722000E3,6.572225500E1 +3.217971000E3,6.862082655E1 +3.218221000E3,6.392739620E1 +3.218481000E3,6.757625304E1 +3.218798000E3,6.468895575E1 +3.219137000E3,5.941097234E1 +3.219443000E3,6.639331379E1 +3.219715000E3,6.512137194E1 +3.219985000E3,6.137345425E1 +3.220244000E3,6.566739727E1 +3.220494000E3,5.684090738E1 +3.220758000E3,4.865476042E1 +3.221022000E3,5.571447424E1 +3.221324000E3,5.050200483E1 +3.221601000E3,5.262698993E1 +3.221858000E3,5.385544431E1 +3.222185000E3,5.793526709E1 +3.222548000E3,5.957102097E1 +3.222796000E3,5.026005559E1 +3.223068000E3,5.164515600E1 +3.223344000E3,6.575405490E1 +3.223598000E3,6.925353270E1 +3.223876000E3,5.909751181E1 +3.224152000E3,5.561020058E1 +3.224416000E3,5.257890354E1 +3.224662000E3,5.262446891E1 +3.224954000E3,5.599583257E1 +3.225202000E3,5.286294623E1 +3.225483000E3,5.049109924E1 +3.225830000E3,6.154494550E1 +3.226096000E3,5.433068412E1 +3.226350000E3,5.256602683E1 +3.226652000E3,5.283535150E1 +3.226989000E3,5.811852242E1 +3.227251000E3,5.842389129E1 +3.227505000E3,5.524471208E1 +3.227782000E3,6.207780754E1 +3.228053000E3,6.165130850E1 +3.228302000E3,5.818085510E1 +3.228557000E3,5.646455559E1 +3.228823000E3,5.903487317E1 +3.229201000E3,5.460588060E1 +3.229471000E3,5.534537953E1 +3.229720000E3,5.492103159E1 +3.229976000E3,5.474982433E1 +3.230276000E3,6.311967749E1 +3.230531000E3,6.144237593E1 +3.230845000E3,6.204497775E1 +3.231123000E3,6.192920277E1 +3.231382000E3,6.726064707E1 +3.231675000E3,5.951322284E1 +3.231970000E3,5.620608761E1 +3.232324000E3,5.597726308E1 +3.232555000E3,5.737347613E1 +3.232845000E3,5.515502781E1 +3.233172000E3,5.977186730E1 +3.233435000E3,6.131606000E1 +3.233742000E3,5.610580070E1 +3.234000000E3,5.978218601E1 +3.234272000E3,6.319970701E1 +3.234581000E3,5.608562509E1 +3.234862000E3,6.169746582E1 +3.235159000E3,6.105762669E1 +3.235416000E3,5.369522011E1 +3.235667000E3,6.580487109E1 +3.235906000E3,5.797374086E1 +3.236200000E3,6.981267784E1 +3.236445000E3,6.229515865E1 +3.236695000E3,6.858181426E1 +3.236976000E3,5.740787399E1 +3.237218000E3,5.455964692E1 +3.237457000E3,7.204325578E1 +3.237720000E3,6.142914611E1 +3.238013000E3,5.768794211E1 +3.238280000E3,5.732491467E1 +3.238580000E3,5.793744264E1 +3.238882000E3,5.626325471E1 +3.239149000E3,5.661724856E1 +3.239424000E3,6.969605219E1 +3.239726000E3,6.482965407E1 +3.239976000E3,5.947270091E1 +3.240278000E3,5.913422796E1 +3.240576000E3,5.630232959E1 +3.240877000E3,5.956366293E1 +3.241128000E3,6.177688280E1 +3.241391000E3,5.851951662E1 +3.241664000E3,5.959787493E1 +3.241944000E3,5.765523372E1 +3.242310000E3,5.961443978E1 +3.242602000E3,5.811194000E1 +3.242910000E3,5.765320401E1 +3.243188000E3,6.631148602E1 +3.243420000E3,6.916377121E1 +3.243673000E3,6.435158828E1 +3.243925000E3,6.486926440E1 +3.244170000E3,5.506348984E1 +3.244475000E3,6.702899260E1 +3.244772000E3,6.244838658E1 +3.245003000E3,6.057959417E1 +3.245328000E3,6.103137126E1 +3.245581000E3,5.723671640E1 +3.245864000E3,5.125127512E1 +3.246123000E3,5.748187394E1 +3.246395000E3,6.148075018E1 +3.246669000E3,6.226010686E1 +3.246940000E3,5.273573389E1 +3.247233000E3,5.462141876E1 +3.247482000E3,5.946160846E1 +3.247728000E3,6.623014757E1 +3.248041000E3,5.823129903E1 +3.248289000E3,5.689561843E1 +3.248538000E3,5.851473913E1 +3.248910000E3,5.778207994E1 +3.249187000E3,6.109108533E1 +3.249462000E3,6.368024039E1 +3.249726000E3,6.527718864E1 +3.249983000E3,5.855658653E1 +3.250281000E3,5.718860903E1 +3.250534000E3,5.946900486E1 +3.250785000E3,5.688578668E1 +3.251033000E3,5.444863300E1 +3.251316000E3,5.885016251E1 +3.251570000E3,6.172482417E1 +3.251833000E3,6.833245599E1 +3.252200000E3,6.656973280E1 +3.252441000E3,6.663686281E1 +3.252721000E3,6.380106140E1 +3.252991000E3,6.113258977E1 +3.253242000E3,7.270243700E1 +3.253457000E3,7.442711013E1 +3.253706000E3,7.097589831E1 +3.253999000E3,5.740107596E1 +3.254237000E3,5.407351324E1 +3.254532000E3,6.235563554E1 +3.254777000E3,6.148535018E1 +3.255085000E3,6.767985005E1 +3.255346000E3,5.893302101E1 +3.255628000E3,5.834235484E1 +3.255897000E3,6.152524318E1 +3.256146000E3,6.124474706E1 +3.256419000E3,5.928557591E1 +3.256642000E3,5.798678480E1 +3.256921000E3,5.800318977E1 +3.257149000E3,5.813391626E1 +3.257392000E3,6.200496820E1 +3.257645000E3,6.268368020E1 +3.257945000E3,6.783162804E1 +3.258296000E3,7.343015115E1 +3.258556000E3,7.258165803E1 +3.258805000E3,6.753466802E1 +3.259117000E3,7.134403593E1 +3.259421000E3,6.813653179E1 +3.259673000E3,6.449045726E1 +3.259939000E3,7.144310958E1 +3.260188000E3,6.619195201E1 +3.260438000E3,6.990193438E1 +3.260692000E3,6.791067771E1 +3.260944000E3,7.014061601E1 +3.261191000E3,7.271368424E1 +3.261532000E3,6.889323528E1 +3.261794000E3,6.087932672E1 +3.262047000E3,6.139975131E1 +3.262322000E3,6.684035582E1 +3.262586000E3,6.977079140E1 +3.262861000E3,6.711211223E1 +3.263137000E3,6.891542739E1 +3.263415000E3,6.450575202E1 +3.263671000E3,6.375083447E1 +3.263946000E3,6.525419018E1 +3.264250000E3,6.323969714E1 +3.264517000E3,7.351653517E1 +3.264813000E3,7.240916805E1 +3.265107000E3,6.991986455E1 +3.265349000E3,6.767718353E1 +3.265598000E3,7.020318016E1 +3.265847000E3,6.593396207E1 +3.266149000E3,6.776886494E1 +3.266400000E3,6.796917668E1 +3.266653000E3,6.234495715E1 +3.266897000E3,6.492303298E1 +3.267153000E3,6.551968402E1 +3.267398000E3,6.154456079E1 +3.267647000E3,6.087933145E1 +3.267896000E3,6.053677169E1 +3.268248000E3,6.893351216E1 +3.268513000E3,6.695525456E1 +3.268817000E3,6.263553940E1 +3.269070000E3,5.965971741E1 +3.269315000E3,6.136430702E1 +3.269582000E3,7.398506568E1 +3.269828000E3,7.145137487E1 +3.270128000E3,7.238266470E1 +3.270371000E3,7.289527120E1 +3.270623000E3,7.428636164E1 +3.270931000E3,7.248535741E1 +3.271185000E3,7.399445608E1 +3.271518000E3,7.355251323E1 +3.271795000E3,7.296660624E1 +3.272081000E3,7.131368475E1 +3.272358000E3,7.068792091E1 +3.272581000E3,6.623699177E1 +3.272835000E3,5.258987188E1 +3.273093000E3,6.044165509E1 +3.273337000E3,6.879817511E1 +3.273635000E3,6.970693453E1 +3.273931000E3,7.169623139E1 +3.274180000E3,7.112396098E1 +3.274428000E3,7.190035192E1 +3.274761000E3,7.089393329E1 +3.275038000E3,6.995869622E1 +3.275323000E3,6.900781199E1 +3.275569000E3,6.766263448E1 +3.275860000E3,6.881814388E1 +3.276116000E3,6.821596427E1 +3.276370000E3,6.896702672E1 +3.276649000E3,6.827119542E1 +3.276914000E3,6.795818984E1 +3.277171000E3,7.025945887E1 +3.277482000E3,6.685661764E1 +3.277741000E3,6.810082518E1 +3.278078000E3,6.902136690E1 +3.278358000E3,6.568611650E1 +3.278604000E3,7.123802039E1 +3.278848000E3,6.300940961E1 +3.279144000E3,6.292057856E1 +3.279382000E3,6.654167697E1 +3.279622000E3,6.808014942E1 +3.279917000E3,6.902808966E1 +3.280160000E3,6.685153426E1 +3.280471000E3,6.435621527E1 +3.280770000E3,6.765080490E1 +3.281059000E3,6.808248309E1 +3.281352000E3,6.477485011E1 +3.281602000E3,5.628454157E1 +3.281867000E3,5.800927668E1 +3.282130000E3,7.131716325E1 +3.282389000E3,7.355208108E1 +3.282663000E3,7.108584109E1 +3.282932000E3,5.710440961E1 +3.283191000E3,5.329699257E1 +3.283451000E3,5.003319724E1 +3.283709000E3,5.081704645E1 +3.284003000E3,5.075383483E1 +3.284259000E3,5.431712692E1 +3.284628000E3,5.277582101E1 +3.284917000E3,6.061307876E1 +3.285214000E3,6.168657926E1 +3.285472000E3,5.854988033E1 +3.285744000E3,4.913527641E1 +3.285999000E3,5.563664353E1 +3.286250000E3,5.841488419E1 +3.286517000E3,6.437604518E1 +3.286777000E3,6.124264602E1 +3.287035000E3,5.886049633E1 +3.287300000E3,6.196549102E1 +3.287630000E3,6.776239267E1 +3.287951000E3,6.702605133E1 +3.288259000E3,5.376695086E1 +3.288499000E3,5.095339550E1 +3.288807000E3,5.078317550E1 +3.289117000E3,5.659564827E1 +3.289411000E3,7.136818215E1 +3.289684000E3,6.629708396E1 +3.289982000E3,7.133804213E1 +3.290271000E3,6.994811010E1 +3.290544000E3,6.532422657E1 +3.290800000E3,6.451013008E1 +3.291132000E3,6.261305598E1 +3.291418000E3,6.696223022E1 +3.291676000E3,4.827412656E1 +3.291930000E3,4.724575587E1 +3.292202000E3,4.846609938E1 +3.292501000E3,5.276700476E1 +3.292822000E3,5.071547801E1 +3.293065000E3,4.944777186E1 +3.293349000E3,4.466809801E1 +3.293583000E3,4.432750067E1 +3.293832000E3,5.165471909E1 +3.294078000E3,4.606912616E1 +3.294427000E3,4.826074528E1 +3.294712000E3,4.434240888E1 +3.294985000E3,4.684583968E1 +3.295286000E3,5.104787864E1 +3.295548000E3,4.839146586E1 +3.295807000E3,5.479537456E1 +3.296066000E3,5.055213000E1 +3.296324000E3,3.933656037E1 +3.296585000E3,4.513652817E1 +3.296840000E3,4.805617654E1 +3.297099000E3,4.453428427E1 +3.297354000E3,5.205427791E1 +3.297705000E3,5.001223291E1 +3.297948000E3,5.342697607E1 +3.298200000E3,5.619467550E1 +3.298461000E3,5.565459347E1 +3.298738000E3,5.819577446E1 +3.298988000E3,5.077826383E1 +3.299236000E3,5.142261821E1 +3.299478000E3,5.610754709E1 +3.299775000E3,5.248015066E1 +3.300011000E3,4.742520943E1 +3.300325000E3,5.519481303E1 +3.300626000E3,4.628613419E1 +3.300959000E3,4.430731849E1 +3.301224000E3,4.380193782E1 +3.301473000E3,4.690647127E1 +3.301746000E3,4.845294386E1 +3.302057000E3,4.912389116E1 +3.302307000E3,5.155191791E1 +3.302563000E3,5.240902416E1 +3.302820000E3,4.677306339E1 +3.303083000E3,5.037145513E1 +3.303327000E3,4.506752152E1 +3.303573000E3,4.920686196E1 +3.303857000E3,4.935493485E1 +3.304189000E3,4.415801479E1 +3.304459000E3,4.423531181E1 +3.304768000E3,3.874162391E1 +3.305030000E3,4.189958295E1 +3.305333000E3,4.005870516E1 +3.305579000E3,5.072183491E1 +3.305843000E3,4.113754863E1 +3.306140000E3,5.548273149E1 +3.306383000E3,5.383424402E1 +3.306628000E3,5.205779319E1 +3.306877000E3,4.592085607E1 +3.307206000E3,5.092451979E1 +3.307449000E3,4.823039740E1 +3.307720000E3,5.026090042E1 +3.307982000E3,5.794901070E1 +3.308198000E3,5.239372011E1 +3.308502000E3,5.024517162E1 +3.308742000E3,4.253471720E1 +3.309044000E3,4.105523794E1 +3.309340000E3,3.028117703E1 +3.309596000E3,2.809150222E1 +3.309864000E3,2.626060468E1 +3.310135000E3,5.055452447E1 +3.310501000E3,7.199271156E1 +3.310777000E3,7.172468430E1 +3.311045000E3,7.282926204E1 +3.311313000E3,7.145580608E1 +3.311562000E3,7.218798353E1 +3.311867000E3,7.081603642E1 +3.312107000E3,7.122522782E1 +3.312348000E3,7.013128466E1 +3.312672000E3,7.138239962E1 +3.312976000E3,7.589001323E1 +3.313216000E3,6.988466628E1 +3.313506000E3,6.521999768E1 +3.313853000E3,5.781158269E1 +3.314129000E3,5.698768013E1 +3.314381000E3,5.954050680E1 +3.314636000E3,5.529467486E1 +3.314903000E3,6.884377149E1 +3.315163000E3,7.293133775E1 +3.315448000E3,7.186875504E1 +3.315697000E3,6.942752239E1 +3.315995000E3,6.899930460E1 +3.316247000E3,6.333687203E1 +3.316557000E3,6.820286469E1 +3.316856000E3,7.371764624E1 +3.317124000E3,7.475494405E1 +3.317411000E3,7.135849387E1 +3.317718000E3,5.726081152E1 +3.317965000E3,5.650406291E1 +3.318233000E3,4.901561410E1 +3.318490000E3,6.881993797E1 +3.318742000E3,7.251465406E1 +3.319010000E3,6.395213402E1 +3.319311000E3,7.197127027E1 +3.319615000E3,6.948849738E1 +3.319862000E3,6.664503435E1 +3.320187000E3,6.933008182E1 +3.320443000E3,6.121514242E1 +3.320753000E3,7.017439611E1 +3.321063000E3,7.393277725E1 +3.321329000E3,7.045535337E1 +3.321643000E3,6.985180357E1 +3.321896000E3,7.158196073E1 +3.322168000E3,6.999348148E1 +3.322483000E3,6.872091406E1 +3.322823000E3,6.386396976E1 +3.323116000E3,6.891641311E1 +3.323355000E3,6.790436633E1 +3.323733000E3,6.190629476E1 +3.324010000E3,6.307072034E1 +3.324306000E3,6.459812141E1 +3.324591000E3,6.928529051E1 +3.324846000E3,6.953301961E1 +3.325158000E3,6.946121501E1 +3.325471000E3,6.177266257E1 +3.325739000E3,6.057146439E1 +3.326000000E3,6.021658005E1 +3.326269000E3,6.588088303E1 +3.326536000E3,6.594068529E1 +3.326797000E3,5.957632846E1 +3.327117000E3,5.830018402E1 +3.327415000E3,5.952820917E1 +3.327678000E3,5.996997483E1 +3.327928000E3,6.374276040E1 +3.328204000E3,6.484785648E1 +3.328504000E3,6.253699213E1 +3.328743000E3,6.495848159E1 +3.329001000E3,6.390198219E1 +3.329317000E3,6.107203426E1 +3.329613000E3,6.678300135E1 +3.329901000E3,6.048531373E1 +3.330164000E3,6.806621622E1 +3.330501000E3,6.592361883E1 +3.330795000E3,6.652249790E1 +3.331059000E3,6.079261624E1 +3.331342000E3,7.055285274E1 +3.331620000E3,6.885169705E1 +3.331870000E3,6.676175072E1 +3.332125000E3,6.653456857E1 +3.332410000E3,6.539948315E1 +3.332658000E3,6.741723145E1 +3.332915000E3,5.982571500E1 +3.333236000E3,7.234399288E1 +3.333559000E3,7.555637810E1 +3.333801000E3,7.132946849E1 +3.334053000E3,7.012473325E1 +3.334345000E3,7.083313400E1 +3.334658000E3,6.159204912E1 +3.334951000E3,5.416652771E1 +3.335187000E3,5.331536045E1 +3.335488000E3,5.516853140E1 +3.335780000E3,5.755380245E1 +3.336028000E3,6.034949591E1 +3.336335000E3,5.933559907E1 +3.336577000E3,6.200660494E1 +3.336975000E3,6.752581884E1 +3.337230000E3,6.552308109E1 +3.337509000E3,6.043162012E1 +3.337804000E3,6.346167875E1 +3.338097000E3,5.762665769E1 +3.338354000E3,6.046465836E1 +3.338657000E3,5.841838084E1 +3.338937000E3,5.426549819E1 +3.339182000E3,5.312925890E1 +3.339425000E3,5.904532039E1 +3.339705000E3,5.548841740E1 +3.339970000E3,6.467955136E1 +3.340311000E3,6.518540616E1 +3.340567000E3,6.130157495E1 +3.340843000E3,4.234380604E1 +3.341102000E3,3.685811557E1 +3.341367000E3,5.229521155E1 +3.341631000E3,4.577123603E1 +3.341913000E3,5.522804687E1 +3.342191000E3,7.219670231E1 +3.342497000E3,6.138541536E1 +3.342739000E3,5.883033505E1 +3.342994000E3,5.692990468E1 +3.343272000E3,5.784770175E1 +3.343584000E3,5.851150722E1 +3.343847000E3,7.127137910E1 +3.344137000E3,7.004437015E1 +3.344432000E3,6.719880262E1 +3.344677000E3,6.266500726E1 +3.344966000E3,6.662051616E1 +3.345209000E3,6.259160849E1 +3.345462000E3,6.521765959E1 +3.345762000E3,6.373477950E1 +3.346056000E3,5.976833176E1 +3.346294000E3,5.557373783E1 +3.346597000E3,5.486821605E1 +3.346842000E3,4.854970484E1 +3.347096000E3,6.338774242E1 +3.347415000E3,6.646909489E1 +3.347712000E3,6.370164725E1 +3.347950000E3,6.577012972E1 +3.348257000E3,6.536203326E1 +3.348509000E3,5.777033235E1 +3.348799000E3,6.942121279E1 +3.349070000E3,6.552465655E1 +3.349329000E3,6.400867966E1 +3.349583000E3,5.955829212E1 +3.349911000E3,6.233007104E1 +3.350154000E3,7.360271557E1 +3.350432000E3,7.402471070E1 +3.350716000E3,7.225249055E1 +3.350966000E3,6.654334459E1 +3.351200000E3,6.590758849E1 +3.351507000E3,6.143698167E1 +3.351805000E3,7.197722167E1 +3.352079000E3,6.778594348E1 +3.352307000E3,5.712392879E1 +3.352566000E3,5.659236121E1 +3.352870000E3,5.352359430E1 +3.353127000E3,5.362353429E1 +3.353366000E3,5.964860406E1 +3.353638000E3,7.164177428E1 +3.353890000E3,6.730234717E1 +3.354173000E3,5.336089185E1 +3.354435000E3,4.770751864E1 +3.354689000E3,4.833001031E1 +3.354956000E3,4.464972004E1 +3.355220000E3,6.809720152E1 +3.355493000E3,7.032616040E1 +3.355723000E3,7.137092547E1 +3.356052000E3,7.106236065E1 +3.356287000E3,7.302101107E1 +3.356599000E3,6.868512076E1 +3.356867000E3,7.134905494E1 +3.357133000E3,7.032184319E1 +3.357463000E3,6.484515560E1 +3.357753000E3,5.949029357E1 +3.358081000E3,6.553405106E1 +3.358385000E3,5.460622041E1 +3.358634000E3,4.798111952E1 +3.358902000E3,5.356090224E1 +3.359186000E3,5.091993104E1 +3.359516000E3,5.980463665E1 +3.359805000E3,5.623340998E1 +3.360124000E3,4.885342740E1 +3.360404000E3,4.536632542E1 +3.360660000E3,5.726647509E1 +3.360941000E3,6.266477325E1 +3.361245000E3,5.265432523E1 +3.361521000E3,4.746518361E1 +3.361777000E3,5.341135388E1 +3.362038000E3,5.094337921E1 +3.362292000E3,5.832737886E1 +3.362616000E3,5.247742127E1 +3.363049000E3,5.123926483E1 +3.363313000E3,4.482127206E1 +3.363600000E3,4.813050338E1 +3.363848000E3,5.751744958E1 +3.364157000E3,5.045245795E1 diff --git a/04_loesungen/01_processing/alg15_xydiagramm_loesung_a6/alg15_xydiagramm_loesung_a6.pde b/04_loesungen/01_processing/alg15_xydiagramm_loesung_a6/alg15_xydiagramm_loesung_a6.pde new file mode 100644 index 0000000..fd14788 --- /dev/null +++ b/04_loesungen/01_processing/alg15_xydiagramm_loesung_a6/alg15_xydiagramm_loesung_a6.pde @@ -0,0 +1,150 @@ +/** + * XY-Diagramm für Schalldruckpegel, Zahlen werden aus CSV-Datei gelesen. + * + * @author Schaller + * @version 29.11.18 + */ + +// Liste mit allen Werten //<>// +double[] x_werte; +double[] y_werte; + +// Hilfsvariablen für die Suche +int akt_maximum=-1; // aktuell groesstes Element +int akt=-1; // aktuell untersuchtes Element +int verzoegerung=0; // Geschwindigkeit der Ausführung + +// Schriften +PFont kleineSchrift; +PFont grosseSchrift; + + +public void setup() { + // Zeichenfläche erzeugen + size(1000, 700); + background(0); + // Schriften laden + kleineSchrift = loadFont("KleineSchrift.vlw"); + grosseSchrift = loadFont("GrosseSchrift.vlw"); + + // CSV-Datei laden und anzeigen + ladeTabelle("Amplitudes.csv"); + stroke(250, 250, 250); + zeichneXYDiagramm(40); + stroke(250, 100, 100); + zeichneXYDiagramm(100); +} + + +public void ladeTabelle(String name) { + // Tabelle aus CSV-Datei laden + Table csv = loadTable(name, "header,csv"); + + if (csv != null && csv.getColumnCount()==2) { + + // Initialisiere Arrays, in die alle Zeilen der Tabelle passen + x_werte = new double[csv.getRowCount()]; + y_werte = new double[csv.getRowCount()]; + + // Fülle die Arrays mit Werten aus der Tabelle + for (int i = 0; i < x_werte.length; i++) { + // Lies Wert aus der i. Zeile und der Spalte "Punkte" bzw. "Name" + x_werte[i] = csv.getDouble(i, "Time (s)"); + y_werte[i] = csv.getDouble(i, "Sound pressure level (dB)"); + } + } +} + +public void zeichneXYDiagramm(int schrittweite) { + + + // Überschrift + fill(255, 255, 255); + textFont(grosseSchrift); + text("Lärmpegel", 2, 20); + textFont(kleineSchrift); + + // Alle Einträge darstellen + if (x_werte != null) { + // Maximum bestimmen + int max_x_pos = sucheMaximum(x_werte); + int max_y_pos = sucheMaximum(y_werte); + double max_x = x_werte[max_x_pos]; + double max_y = y_werte[max_y_pos]; + + // Skalierungsfaktoren + double faktor_x = 1000.0 / max_x; + double faktor_y = 700.0 / max_y; + + for (int i = 0; i+schrittweite< x_werte.length; i+=schrittweite) { + + // Durchschnitt berechnen + double x_durchschnitt1 = berechneDurchschnitt(x_werte,i,schrittweite); + double y_durchschnitt1 = berechneDurchschnitt(y_werte,i,schrittweite); + double x_durchschnitt2 = berechneDurchschnitt(x_werte,i+schrittweite,schrittweite); + double y_durchschnitt2 = berechneDurchschnitt(y_werte,i+schrittweite,schrittweite); + // Linien zeichnen + int x1 = (int) (x_durchschnitt1*faktor_x); + int y1 = (int) (700- y_durchschnitt1*faktor_y); + int x2 = (int) (x_durchschnitt2*faktor_x); + int y2 = (int) (700- y_durchschnitt2*faktor_y); + System.out.println("x1:"+x1+"y1:"+y1); + + + line(x1,y1,x2,y2); + } + } +} + + +public int sucheMaximum(double[] zahlen) { + // Sind überhaupt Daten da? + if (zahlen.length==0 ) { + return -1; + } + + // Startwerte setzen + akt_maximum = 0; + akt = 1; + + // Alle Arrayelemente untersuchen + while (akt < zahlen.length) { + // Neu zeichnen, da akt neu gesetzt wurde + redraw(); + delay(verzoegerung); + // Neues größtes Element?? + if (zahlen[akt]> zahlen[akt_maximum]) { + // Dann merke dir das neue + akt_maximum = akt; + // Zeichne Balken neu, da neues größtes Element + redraw(); + delay(verzoegerung); + } + akt = akt + 1; + } + // Gib Position des größten Elements zurück + return akt_maximum; +} + + + +public double berechneDurchschnitt(double[] zahlen, int start, int n) { + double summe; + int i; + + // Sind überhaupt Daten da? + if(zahlen.length==0 ) { + return -1; + } + + // Startwerte setzen + summe = 0; + + // n Arrayelemente ab start addieren + for (i=0; start+i< zahlen.length && i 0) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawLine(x1, y1, x2, y2); + } + repaint(); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, rectMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillRect(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawRect(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, ellipseMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillOval(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawOval(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + int px[] = {x1, x2, x3}; + int py[] = {y1, y2, y3}; + polygon(px, py); + + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + + int px[] = {x1, x2, x3, x4}; + int py[] = {y1, y2, y3, y4}; + polygon(px, py); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + + public void polygon(int[] x, int[] y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(fillcolor != null) { + + g.setColor(fillcolor); + g.fillPolygon(x,y, y.length); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawPolygon(x, y, x.length); + } + repaint(); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + ellipse(x,y,1, 1); + + } + + // ----------------------------------------- Schriftdarstellung ----------------------------------------------- + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param s Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String s, int x, int y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(pencolor != null) { + g.setColor(fillcolor); + g.setStroke(new BasicStroke((float) stroke)); + g.setFont(textfont); + g.drawString(s, x, y); + } + repaint(); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + this.textfont = font; + } + + + // ----------------------------------------- Farbfestlegungen ----------------------------------------------- + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(String color) { + try{ + return new Color( + Integer.valueOf( color.substring( 0, 2 ), 16 ), + Integer.valueOf( color.substring( 2, 4 ), 16 ), + Integer.valueOf( color.substring( 4, 6 ), 16 ) ); + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(int color) { + try{ + if(color >=0 && color < 256) { + return new Color(color,color,color); + } else { + int r = color / 0x010000 % 0xFF; + int g = color / 0x000100 % 0xFF; + int b = color % 0xFF; + System.out.println(""+r+","+g+","+b); + return new Color(r, g, b ); + } + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + this.pencolor = decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + this.pencolor=decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + this.pencolor = new Color(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + this.pencolor = null; + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + this.stroke = width; + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + this.fillcolor = decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + this.fillcolor=decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + this.fillcolor = new Color(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + this.fillcolor = null; + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + if(c < 256) { + this.background=new Color(c,c,c); + } else { + int r = c / 0x010000; + int g = c / 0x000100 % 0xFF; + int b = c % 0xFF; + this.background= new Color(r, g, b ); + } + + this.clear(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + this.background=new Color(r,g,b); + this.clear(); + } + + +// ----------------------------------------- Dateioperationen ----------------------------------------------- + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + try{ + this.image = ImageIO.read(new File(filename)); + this.background = decode("D0D0D0"); + this.pencolor = new Color(0,0,0); + this.fillcolor = null; + this.stroke = 1; + this.repaint(); + + } catch(Exception e) { + System.out.println("Fehler beim Einlesen der Bilddatei"); + } + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + try{ + String[] fn = filename.split("\\."); + if (fn.length== 1) { + ImageIO.write(image, "PNG", new File(filename+".png")); + } else { + + if (fn.length == 2 && (fn[1].toUpperCase().equals("PNG") || + fn[1].toUpperCase().equals("GIF"))){ + ImageIO.write(image, fn[1], new File(filename)); + }else { + System.out.println("Unbekanntes Bildformat"); + } + } + + } catch(Exception e) { + System.out.println("Fehler beim Speichern"); + } + } + + +// ----------------------------------------- Sonstiges ----------------------------------------------- + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + + public Color[][] getPixelArray() { + Color[][] pixel = new Color[image.getWidth()][image.getHeight()]; + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + pixel[x][y] = new java.awt.Color(image.getRGB(x,y)); + } + } + return pixel; + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + size(pixel.length,pixel[0].length); + Graphics2D g = (Graphics2D) image.getGraphics(); + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + g.setColor(pixel[x][y]); + g.fillRect(x, y, 1, 1); + } + } + repaint(); + } + + /** + * Hilfsfunktion zum Verzögern der Ausgabe + * @param millis Wartezeit in Millisekunden + */ + public void delay(int millis) { + try{ + Thread.sleep(millis); + + } catch(Exception e) { + + } + + } + + + +} diff --git a/04_loesungen/02_greenfoot/alg10_balkendiagramm_loesung/PictureViewer.java b/04_loesungen/02_greenfoot/alg10_balkendiagramm_loesung/PictureViewer.java new file mode 100644 index 0000000..ecbb521 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg10_balkendiagramm_loesung/PictureViewer.java @@ -0,0 +1,499 @@ +import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot und MouseInfo) +import java.awt.image.*; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.BasicStroke; +import java.awt.Font; +import java.util.Vector; +import java.awt.Color; +import javax.imageio.*; +import java.io.*; + +/** + * Der PictureViewer ist ein Actor, der in der Lage ist ein + * Objekt der Klasse Picture anzuzeigen. Zusätzlich können + * mehrere Verarbeitungsschritte gespeichert werden, um ein + * "zurück"-Funktion zu ermöglichen. + * + * @author Thomas Schaller + * @version V1.0 vom 10.02.2019 + */ +public class PictureViewer extends Actor +{ + public static final int FIT = -1; + public static final int NORMAL = 1; + + private static final int ANZ_BACK = 0; + + private double zoom; + protected Picture picture = null; + private Vector history; + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der Größe 500x400 + */ + public PictureViewer() { + this(500,400); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public PictureViewer(int width, int height) { + this(width,height, "D0D0D0"); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + * @param background Farbe des Hintergrunds als HEX-String (z.B. "FF3A45") + */ + public PictureViewer(int width, int height, String background) { + picture = new Picture(width,height, background); + picture.setObserver(this); + this.history = new Vector(); + this.zoom = NORMAL; + repaint(); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild aus einer Bilddatei + * @param filename Name des Bildes + */ + public PictureViewer(String filename) { + picture = new Picture(filename); + picture.setObserver(this); + this.history = new Vector(); + this.zoom = NORMAL; + repaint(); + } + + /** + * Speichert das übergebene Bild in der History. + * @param b zu speicherndes Bild + */ + public void pushImage() { + if( this.ANZ_BACK > 0) { + if(history.size() == this.ANZ_BACK) { + history.removeElementAt(0); + } + + BufferedImage b = new BufferedImage(picture.getWidth(), picture.getHeight(), picture.getImage().getType()); + Graphics g = b.getGraphics(); + g.drawImage(picture.getImage(), 0, 0, null); + g.dispose(); + + history.add(b); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + private void popImage() { + int anz = history.size(); + if(anz>0) { + BufferedImage i = history.get(anz-1); + history.removeElementAt(anz-1); + picture.setImage(i); + repaint(); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + public void back() { + popImage(); + } + + /** + * Setzt den Zoom-Faktor für das Bild. + * Als Zoomfaktor sind auch die Konstanten Bildanzeiger.FIT (auf Bildschirmgröße zoomen) und Bildanzeiger.NORMAL (100%) möglich. + * @param factor Zoomfaktor (1.0 = 100%). + */ + public void setZoom(double zoom) { + this.zoom = zoom; + repaint(); + } + + /** + * Setzt die automatische Neuanzeige des Bildes. + * Mit dieser Methode kann man einstellen, ob nach jedem Zeichenbefehl + * die Anzeige auf dem Bildschirm aktualisiert werden soll. Bei sehr + * vielen Zeichenbefehlen wird die Ausgabe dadurch sehr langsam. Es reicht + * eine Anzeige am Ende der Zeichenbefehle. Rufen Sie dann für das Neuzeichnen + * die Methode refresh() auf. + * @param autoRefresh true, wenn nach jedem Zeichenbefehl die Anzeige aktualisiert werden soll. + */ + public void setAutoRefresh(boolean autoRefresh) { + picture.setAutoRefresh(autoRefresh); + } + + /** + * Sorgt für die Aktualisierung der Bildschrimanzeige. Das aktuelle Bild + * wird dadurch angezeigt. Durch Einstellung von autoRefresh kann die + * Anzeige automatisiert werden. + */ + public void refresh() { + repaint(); + } + + /** + * Setzt das angezeigt Bild neu und beachtet dabei den Zoomfaktor. + */ + public void repaint() { + double faktor = zoom; + + if (zoom == FIT) { + double faktorw = (double) this.getWorld().getWidth() / picture.getWidth(); + double faktorh = (double) this.getWorld().getHeight() / picture.getHeight(); + faktor = Math.min(faktorw, faktorh); + } + int gfi_width = (int) (picture.getWidth()*faktor); + int gfi_height = (int) (picture.getHeight()*faktor); + + setImage(new GreenfootImage(gfi_width, gfi_height)); + Graphics2D g = (Graphics2D) this.getImage().getAwtImage().getGraphics(); + g.drawImage(picture.getImage(),0,0,gfi_width, gfi_height, 0, 0, picture.getWidth(), picture.getHeight(), null); + g.setColor(new java.awt.Color(0,0,0)); + g.setStroke(new BasicStroke((float) 1)); + g.drawRect(0,0,gfi_width-1, gfi_height-1); + + } + + // Wrappermethoden + /** + * Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + * Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + * der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu. + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public void size(int width, int height){ + picture.size(width, height); + } + + /** + * Liefert die Breite des Bildes zurück. + * @return Breite des Bildes + */ + public int getImageWidth() { + return picture.getWidth(); + } + + /** + * Liefert die Höhe des Bildes zurück. + * @return Höhe des Bildes + */ + public int getImageHeight() { + return picture.getHeight(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + picture.background(c); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + picture.background(r,g,b); + } + + /** + * Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + * Um eine Linie einzufärben, verwenden Sie die {@link #stroke(int, int, int) stroke()} Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + * Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + * {@link #strokeWeight(double) strokeWeight()} geändert werden. + * @param x1 x-Koordinate des 1. Punktes + * @param y1 y-Koordinate des 1. Punktes + * @param x2 x-Koordinate des 2. Punktes + * @param y2 y-Koordinate des 2. Punktes + */ + public void line(int x1, int y1, int x2, int y2) { + picture.line(x1,y1,x2,y2); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + picture.rect(a,b,c,d); + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + picture.ellipse(a,b,c,d); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + picture.triangle(x1,y1,x2,y2,x3,y3); + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + picture.quad(x1,y1,x2,y2,x3,y3,x4,y4); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + public void polygon(int[] x, int[] y) { + picture.polygon(x,y); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + picture.point(x,y); + + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + * Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + * Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void rectMode(int mode) { + picture.rectMode(mode); + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + * Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + * Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als Breite und Höhe der Form. + * ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void ellipseMode(int mode) { + picture.ellipseMode(mode); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + picture.stroke(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + picture.noStroke(); + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + picture.strokeWeight(width); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + picture.fill(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + picture.noFill(); + } + + /** + * Löscht den Inhalt des Bildes. + * Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt. + */ + public void clear(){ + picture.clear(); + } + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + picture.load(filename); + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + picture.save(filename); + } + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param t Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String t, int x, int y) { + picture.text(t,x,y); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + picture.textFont(font); + } + + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + public Color[][] getPixelArray() { + return picture.getPixelArray(); + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + picture.setPixelArray(pixel); + } + + +} + diff --git a/04_loesungen/02_greenfoot/alg10_balkendiagramm_loesung/README.TXT b/04_loesungen/02_greenfoot/alg10_balkendiagramm_loesung/README.TXT new file mode 100644 index 0000000..4b8fadd --- /dev/null +++ b/04_loesungen/02_greenfoot/alg10_balkendiagramm_loesung/README.TXT @@ -0,0 +1,14 @@ +------------------------------------------------------------------------ +Dies ist die README-Datei des Projekts. Hier sollten Sie Ihr Projekt +beschreiben. +Erzählen Sie dem Leser (jemand, der nichts über dieses Projekt weiss), +alles, was er/sie wissen muss. Üblicherweise sollte der Kommentar +zumindest die folgenden Angaben umfassen: +------------------------------------------------------------------------ + +PROJEKTBEZEICHNUNG: +PROJEKTZWECK: +VERSION oder DATUM: +WIE IST DAS PROJEKT ZU STARTEN: +AUTOR(EN): +BENUTZERHINWEISE: diff --git a/04_loesungen/02_greenfoot/alg10_balkendiagramm_loesung/Table.java b/04_loesungen/02_greenfoot/alg10_balkendiagramm_loesung/Table.java new file mode 100644 index 0000000..ee5a211 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg10_balkendiagramm_loesung/Table.java @@ -0,0 +1,894 @@ +/** + * Die Klasse Table vereinfacht den Zugriff auf CSV-Dateien. + * Die Klassen Table und TableRow ermöglichen einen einfachen Zugriff auf tabellenbasierte + * Dokumente. + * + * @author Thomas Schaller + * @version 1.0 vom 01.02.2019 + */ + +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.ArrayList; +import java.io.*; +import java.util.Scanner; + +import org.jdom.Document; +import org.jdom.Element; +import org.jdom.Attribute; +import org.jdom.JDOMException; +import org.jdom.input.SAXBuilder; +import org.jdom.output.XMLOutputter; +import org.jdom.output.Format; + +public class Table +{ + // Standardtrennzeichen für Spalten + private static final char DEFAULT_SEPARATOR = ';'; + // Standardmarkierung für Texte + private static final char DEFAULT_QUOTE = '"'; + // Standardtrennzeichen für Dezimalzahlen + private static final char DEFAULT_COMMA = ','; + + // mögliche Spaltentypen + private static final String UNKNOWN ="UNKOWN"; + private static final String INT = "INTEGER"; + private static final String DOUBLE = "DOUBLE"; + private static final String FLOAT = "FLOAT"; + + // interne Verwaltung des Dokuments als JDOM-Document-Objekt + private Document doc; + // Verweis auf Element für Kopfzeile + private Element header; + // Ende Attribute + + /** + * Erzeugt leeres Tabellen-Dokument. + */ + public Table() { + this.doc = new Document(); + doc.setRootElement(new Element("CSV-Data")); + this.header = new Element("Header"); + doc.getRootElement().addContent(header); + } + + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei und erstellt ein Tabellenobjekt mit seinen Werten. + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public Table(String filename, String options, char separator, char quote) { + loadCSV(filename, options, separator, quote); + } + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei und erstellt ein Tabellenobjekt mit seinen Werten (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + */ + public Table(String filename, String options) { + loadCSV(filename, options); + } + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei ohne Kopfzeile und erstellt ein Tabellenobjekt mit seinen Werten (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public Table(String filename) { + loadCSV(filename); + } + + // Anfang Methoden + /** + * Liest den Inhalt einer CSV-Datei ohne Kopfzeile (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public void loadCSV(String filename) { + loadCSV(filename, ""); + } + + /** + * Liest den Inhalt einer CSV-Datei (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + */ + public void loadCSV(String filename, String options) { + loadCSV(filename, options, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** + * Liest den Inhalt einer CSV-Datei. + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public void loadCSV(String filename, String options, char separator, char quote) { + doc = new Document(); + doc.setRootElement(new Element("CSV-Data")); + header = new Element("Header"); + doc.getRootElement().addContent(header); + try { + File f = new File(filename); + Scanner scanner = new Scanner(new File(filename)); + if(options.toLowerCase().contains("header") && scanner.hasNext()) { + List entries = parseLine(scanner.nextLine(), separator, quote); + int i= 0; + for(String s : entries) { + Element entry = new Element("Column"); + header.addContent(entry); + entry.setText(s); + entry.setAttribute("type", "unknown"); + i++; + } + } + + List cols = header.getChildren(); + + while (scanner.hasNext()) { + Element line = new Element("Row"); + doc.getRootElement().addContent(line); + List entries = parseLine(scanner.nextLine(), separator, quote); + int i= 0; + + for(String s : entries) { + + if(i==cols.size()) { + Element entry = new Element("Column"); + entry.setAttribute("type", "unknown"); + header.addContent(entry); + cols = header.getChildren(); + } + + Element entry = new Element("Entry"); + entry.setText(s); + line.addContent(entry); + i++; + } + } + scanner.close(); + + } catch (Exception e) { + System.out.println("Fehler beim Lesen der CSV-Datei"); + } + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei ohne Kopfzeile (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public void saveCSV(String filename) { + saveCSV(filename, ""); + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthalten, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile haben soll, + * dann lassen Sie einfach die Option "header" weg. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile haben soll. + * @param filename Dateiname der CSV-Datei. + */ + public void saveCSV(String filename, String options) { + saveCSV(filename, options, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei. + * Wenn die Datei eine Kopfzeile enthalten, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile haben soll, + * dann lassen Sie einfach die Option "header" weg. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile haben soll. + * @param filename Dateiname der CSV-Datei. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public void saveCSV(String filename, String options, char separator, char quote){ + try{ + File f = new File(filename); + PrintStream outputFile = new PrintStream (f); + System.out.println("Speicher in : "+f.getAbsolutePath()); + List columns = header.getChildren(); + String sq = ""+quote; + String ss = ""+separator; + if(quote =='"') sq = "\""; + if(separator =='"') ss = "\""; + + if(options.toLowerCase().contains("header")) { + String h = ""; + for(Element c : columns) { + h += ss + sq + c.getText()+sq; + } + outputFile.println(h.substring(1)); + } + for(int i = 0; i parseLine(String cvsLine) { + return parseLine(cvsLine, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** HIlfsfunktion für die Analyse einer Dateizeile + * @param cvsLine Zeile aus der Datei + * @param sparator Trennzeichen für die Spalten + * @return Liste von String für die einzelnen Spalten + */ + private List parseLine(String cvsLine, char separator) { + return parseLine(cvsLine, separator, DEFAULT_QUOTE); + } + + /** HIlfsfunktion für die Analyse einer Dateizeile + * @param cvsLine Zeile aus der Datei + * @param sparator Trennzeichen für die Spalten + * @param customQuote Kennung für Strings + * @return Liste von String für die einzelnen Spalten + */ + private List parseLine(String cvsLine, char separator, char customQuote) { + + List result = new ArrayList<>(); + + //if empty, return! + if (cvsLine == null && cvsLine.isEmpty()) { + return result; + } + + //ggf. Default-Value laden + if (customQuote == ' ') { + customQuote = DEFAULT_QUOTE; + } + + if (separator == ' ') { + separator = DEFAULT_SEPARATOR; + } + + StringBuffer curVal = new StringBuffer(); + boolean inQuotes = false; + boolean startCollectChar = false; + boolean doubleQuotesInColumn = false; + + char[] chars = cvsLine.toCharArray(); + + for (char ch : chars) { + + if (inQuotes) { // aktueller Text ist in Quotes eingeschlossen + startCollectChar = true; + + if (ch == customQuote) { // Quotes werden beendet, aber Achtung bei "" => Metazeichen + inQuotes = false; + if (ch == '\"') { + doubleQuotesInColumn = true; + } + + } else { + + if (ch == '\"' && !doubleQuotesInColumn) { + doubleQuotesInColumn = true; + } else { + curVal.append(ch); + doubleQuotesInColumn = false; + } + + } + } else { + if (ch == customQuote) { + + inQuotes = true; + + //Fixed : allow "" in empty quote enclosed + if (ch == '\"'){ + if(doubleQuotesInColumn) { + curVal.append('"'); + doubleQuotesInColumn = false; + } else doubleQuotesInColumn = true; + + + } + } + else { + doubleQuotesInColumn = false; + if (ch == separator) { + + result.add(curVal.toString()); + + curVal = new StringBuffer(); + startCollectChar = false; + + } else if (ch == '\r') { + //ignore LF characters + continue; + } else if (ch == '\n') { + //the end, break! + break; + } else { + curVal.append(ch); + } + } + } + + } + result.add(curVal.toString()); + return result; + } + + /** + * Sucht die Nummer einer durch Namen gegebenen Spalte. + * @param name Name der Spalte + * @return Nummer der Spalte + */ + + private int findColumnNumber(String name) { + List columns = header.getChildren(); + int i = 0; + for(Element c : columns) { + if (c.getText().toLowerCase().equals(name.toLowerCase())) { + return i; + + } + i++; + } + return -1; + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an. + */ + public void addColumn() { + Element entry = new Element("Column"); + entry.setAttribute("type", Table.UNKNOWN); + header.addContent(entry); + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an und benennt sie. + * @param title Bezeichnung der Spalte + */ + public void addColumn(String title) { + addColumn(); + Element nc = ((List)(header.getChildren())).get(header.getChildren().size()-1); + nc.setText(title); + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an und benennt und typisiert sie. + * @param title Bezeichnung der Spalte + * @param type Typ der Spalte (UNKNOWN, DOUBLE, INTEGER, FLOAT) + */ + public void addColumn(String title, String type) { + addColumn(title); + Element nc = ((List)(header.getChildren())).get(header.getChildren().size()-1); + nc.setAttribute("type", type); + } + + /** + * Löscht eine Spalte. + * @param i Nummer der Spalte. + */ + public void removeColumn(int i) { + List lines = doc.getRootElement().getChildren(); + for(Element l : lines) { + if(l.getChildren().size()>i) l.removeContent(i); + } + } + + /** + * Löscht eine Spalte + * @param name Name der Spalte + */ + public void removeColumn(String name) { + try{ + removeColumn(findColumnNumber(name)); + } catch(Exception e) { System.out.println("Unbekannter Spaltenname");} + } + + /** + * Liefert die Anzahl der Spalten in der Tabelle + * @return Anzahl der Spalten + */ + public int getColumnCount() { + return header.getChildren().size(); + } + + /** + * Liefert die Anzahl der Zeilen in der Tabelle + * @return Anzahl der Zeilen + */ + public int getRowCount() { + return doc.getRootElement().getChildren().size()-1; + } + + /** + * Löscht alle Zeilen der Tabelle. + * Die Spaltenüberschriften und Typen bleiben erhalten. + */ + public void clearRows() { + doc.getRootElement().removeChildren("Row"); + } + + /** + * Fügt eine neue Zeile an das Ende der Tabelle an. + * @return ein TableRow-Objekt für diese neue Zeile + */ + public TableRow addRow() { + Element row = new Element("Row"); + doc.getRootElement().addContent(row); + return new TableRow(doc, row); + } + + /** + * Löscht eine Zeile + * @param i Nummer der Zeile + */ + public void removeRow(int i) { + if(i rows = doc.getRootElement().getChildren(); + return new TableRow(doc, rows.get(i+1)); + } + return null; + } + + /** + * Liefert die ganze Tabelle als Array von TableRow-Objekten + * @return Array von TableRow-Objekten + */ + public TableRow[] rows() { + TableRow[] rows = new TableRow[getRowCount()]; + for(int i = 0; i < getRowCount(); i++) { + rows[i] = getRow(i); + } + return rows; + } + + /** + * Liefert den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param column Spaltennummer + * @return Wert der Zelle + */ + public int getInt(int row, int column) { + return getRow(row).getInt(column); + } + + /** + * Liefert den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param name Name der Spalte + * @return Wert der Zelle + */ + public int getInt(int row, String name) { + return getRow(row).getInt(name); + } + + /** + * Setzt den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param column Spaltennummer + * @param value neuer Wert der Zelle + */ + public void setInt(int row, int column,int value) { + getRow(row).setInt(column, value); + } + + /** + * Setzt den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(int row, String name, int value) { + getRow(row).setInt(name, value); + } + + /** + * Liefert alle Werte einer Zeile als Integer-Array. + * @param row Nummer der Zeile + * @return int-Array, dass alle Werte der Zeile enthält + */ + public int[] getIntRow(int row) { + try{ + TableRow trow = getRow(row); + int anz = getColumnCount(); + int[] r = new int[anz]; + for(int i=0; i) (header.getChildren())).get(i).getText(); + } else { + return ""; + } + } + + /** + * Liefert die Nummer einer Spalte + * @param name Name der Spalte + * @return Nummer der Spalte + */ + public int getColumn(String name) { + List columns = header.getChildren(); + int i = 0; + while (i < columns.size()) { + if (columns.get(i).getText().toLowerCase().equals(name.toLowerCase())) { + return i; + } + i++; + } // end of while + return -1; + } + + + /** + * Erzeugt eine neue Zeile mit i Spalten + * Wenn bisher nicht genügend Spalten vorhanden sind, werden automatisch neue Spalten hinzugefügt (auch zum Header) + * @param i Anzahl der Spalten + */ + private Element buildRow(int i) { + List columns = header.getChildren(); + Element entry=null; + for(int j=0; j<=i; j++) { + + if(j==columns.size()) { + Element h = new Element("Column"); + h.setAttribute("type", "unknown"); + header.addContent(h); + columns = header.getChildren(); + } + if(j==current.getChildren().size()) { + entry = new Element("Entry"); + current.addContent(entry); + + } + + } + return entry; + + } + + /** + * Erzeugt eine neue Zeile. + * Es werden genügend Spalten erzeugt, dass ein Wert in Spalte "name" eingetragen werden kann + * @param name Name der Spalte + */ + private Element buildRow(String name) { + List columns = header.getChildren(); + int i = 0; + for(Element c: columns) { + + if(c.getText().toLowerCase().equals(name.toLowerCase())) { + return buildRow(i); + } + i++; + } + return null; + + } + + /** + * Liefert den Wert einer Zelle als String + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public String getString(int i) { + if(i >= current.getContent().size()) return ""; + Element e = (Element) current.getContent(i) ; + if(e!=null) { + return e.getText(); + } else { + return ""; + } + } + + /** + * Liefert den Wert einer Zelle als String + * @param name Name der Spalte + * @return Wert der Zelle + */ + public String getString(String name) { + return getString(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als String + * @param i Nummer der Spalte + * @param text neuer Wert der Zelle + */ + public void setString(int i, String text) { + + Element e = buildRow(i); + if(e!=null) e.setText(text); + } + + /** + * Setzt den Wert einer Zelle als String + * @param name Name der Spalte + * @param text neuer Wert der Zelle + */ + public void setString(String name, String text) { + Element e = buildRow(name); + if(e!=null) e.setText(text); + } + + + /** + * Liefert den Wert einer Zelle als Int-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public int getInt(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Integer.parseInt(e.getText()); + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Int-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public int getInt(String name) { + return getInt(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Int-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(int i,int value) { + + Element e = buildRow(i); + if(e!=null) e.setText(""+value); + } + + /** + * Setzt den Wert einer Zelle als Int-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(String name, int value) { + Element e = buildRow(name); + if(e!=null) e.setText(""+value); + } + + /** + * Liefert den Wert einer Zelle als Float-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public float getFloat(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Float.parseFloat(e.getText().replace(",",".")); + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Float-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public float getFloat(String name) { + return getFloat(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Float-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setFloat(int i,float value) { + + Element e = buildRow(i); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Setzt den Wert einer Zelle als Float-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setFloat(String name, float value) { + Element e = buildRow(name); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Liefert den Wert einer Zelle als Double-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public double getDouble(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Double.parseDouble(e.getText().replace(",",".")); + + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Double-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public double getDouble(String name) { + return getDouble(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Double-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setDouble(int i,double value) { + + Element e = buildRow(i); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Setzt den Wert einer Zelle als Double-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setDouble(String name, double value) { + Element e = buildRow(name); + if(e!=null) e.setText(format.format(value)); + } + +} diff --git a/04_loesungen/02_greenfoot/alg10_balkendiagramm_loesung/XML.java b/04_loesungen/02_greenfoot/alg10_balkendiagramm_loesung/XML.java new file mode 100644 index 0000000..c06c490 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg10_balkendiagramm_loesung/XML.java @@ -0,0 +1,637 @@ +/** + * Klasse zum Vereinfachten Zugriff auf XML-Dokumente + * Diese Klasse ist für den Einsatz in der Schule gedacht und soll den Schülern + * einen einfachen Zugriff auf XML-Dokumente ermöglichen. Die zur Verfügung + * stehenden Befehle sind wie in Processing realisiert. + * Dabei ist jeder Teilbaum des Dokuments wieder als XML-Objekt zugreifbar, das + * intern auf die gleiche XML-Dokumentstruktur zugreift. + * Dies ermöglicht bei unsachgemäßem Gebrauch die XML-Struktur zu zerstören. Im + * normalen Gebrauch sollte dies aber nicht relevant sein. + * + * Benötigt: jdom-1.1.3.jar + + * @author Thomas Schaller + * @version 1.0 vom 31.01.2019 + */ +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.ArrayList; +import java.io.*; + +import org.jdom.Document; +import org.jdom.Element; +import org.jdom.Attribute; +import org.jdom.JDOMException; +import org.jdom.input.SAXBuilder; +import org.jdom.output.XMLOutputter; +import org.jdom.output.Format; + +public class XML { + // Anfang Attribute + // XML-Dokumentstruktur + private Document doc; + // Zeiger auf das aktuelle Element + private Element current; + // Ende Attribute + + /** + * Erzeugt ein leeres XMLDokument + */ + public XML() { + this.doc = new Document(); + this.current = null; + } + + /** + * Erzeugt ein XML-Dokument aus einer Datei + * @param filename Dateiname der XML-Datei + */ + public XML(String filename) { + loadXML(filename); + } + + /** + * interner Konstruktor, um ein XML Objekt zu erzeugen, das auf einen bestimmten Knoten verweist + * @param doc die XML-Dokumentstruktur + * @param current Zeiger auf das aktuelle Element + */ + private XML(Document doc, Element current) { + this.doc = doc; + this.current = current; + } + + // Anfang Methoden + /** Öffnet das durch den Dateinamen gegebene Dokument + * @param filename Dateiname des XML-Files + */ + public void loadXML(String filename) { + doc = null; + File f = new File(filename); + + try { + // Das Dokument erstellen + SAXBuilder builder = new SAXBuilder(); + doc = builder.build(f); + + } catch (JDOMException e) { + e.printStackTrace(); + + } catch (IOException e) { + e.printStackTrace(); + } + // Zeiger im Baum auf Root-Element + current = doc.getRootElement(); + } + + /** Speichert den XML-Baum im angegebenen Dateinamen + * @param filename Dateiname des XML-Files + */ + public void saveXML(String filename) { + try { + // new XMLOutputter().output(doc, System.out); + XMLOutputter xmlOutput = new XMLOutputter(); + + // display nice nice + xmlOutput.setFormat(Format.getPrettyFormat()); + File f = new File(filename); + FileOutputStream outputFile = new FileOutputStream(f); + System.out.println("Speicher in : "+f.getAbsolutePath() ); + xmlOutput.output(doc, outputFile); + outputFile.close(); + System.out.println("File Saved!"); + } catch (IOException io) { + System.out.println(io.getMessage()); + } + + } + + //----------------------------------------------- Zeigerbewegungen -------------------------------------------------- + /** + * liefert ein XML-Objekt, das auf den Vaterknoten des aktuellen Elements zeigt. + * @return Vater des aktuellen Objekts. + */ + public XML getParent() { + if(current != null) { + Element parent = current.getParentElement(); + if (parent == null) { + return null; + } else { + return new XML(doc, parent); + } + } + return null; + } + + /** + * Überprüft, ob das Element irgendwelche Kinder hat oder nicht, und gibt das Ergebnis als boolean zurück. + * @return true, wenn Kinder vorhanden sind, sonst false + */ + public boolean hasChildren() { + if (current == null) { + return doc.hasRootElement(); + } else { + return current.getChildren().size()>0; + } + } + + /** + * Ermittelt die Namen aller Kinder des Elements und gibt die Namen als ein Array von Strings zurück. + * Dies ist dasselbe wie das Durchlaufen und Aufrufen von getName() auf jedem untergeordneten Element einzeln. + * @return Liste aller Namen der Kinder + */ + public String[] listChildren() { + if (current == null) { + if(doc.hasRootElement()) { + String[] names = new String[0]; + names[0] = doc.getRootElement().getName(); + return names; + } else { + return null; + } + } else { + List ch_element = current.getChildren(); + String[] names = new String[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + names[i] = ch_element.get(i).getName(); + } + return names; + } + } + + /** + * Liefert alle Kinder des Elements als Array von XML-Objekten. + * @return Array der Kinder als XML-Objekte + */ + public XML[] getChildren() { + if (current == null) { + if(doc.hasRootElement()) { + XML[] ch_xml = new XML[1]; + ch_xml[0] = new XML(doc, doc.getRootElement()); + return ch_xml; + } else { + return null; + } + } else { + List ch_element = current.getChildren(); + XML[] ch_xml = new XML[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + ch_xml[i] = new XML(doc, ch_element.get(i)); + } + return ch_xml; + } + } + + /** + * Liefert bestimmte Kinder des Elements als Array von XML-Objekten. + * Die Methode gibt dabei alle Kinder zurück, die dem angegebenen Namen entsprechen. + * @param name Name der gesuchten Kind-Objekte + * @return Array der Kinder als XML-Objekte + */ + public XML[] getChildren(String name) { + if (current == null) { + if(doc.hasRootElement()) { + XML[] ch_xml = new XML[1]; + ch_xml[0] = new XML(doc, doc.getRootElement()); + if(doc.getRootElement().getName().equals(name)){ + return ch_xml; + } else { + return null; + } + } else { + return null; + } + } else { + List ch_element = current.getChildren(name); + XML[] ch_xml = new XML[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + ch_xml[i] = new XML(doc, ch_element.get(i)); + } + return ch_xml; + } + } + + /** + * Liefert das erste Kind des Elements mit einem bestimmten Namen. + * Die Methode gibt das erste Kind zurück, das dem angegebenen Namen entsprechen. + * @param name Name des gesuchten Kind-Objektes + * @return Kind als XML-Objekt + */ + + public XML getChild(String name) { + if (current == null) { + Element e = doc.getRootElement(); + if (e.getName().equals(name)) { + return new XML(doc, e); + } else { + return null; + } + } else { + String[] names = name.split("/"); + Element e = current; + int i = 0; + while(i < names.length) { + e = e.getChild(names[i]); + if (e==null) return null; + i++; + } + return new XML(doc, e); + } + } + + /** + * Liefert das i. Kind des Elements. + * Die Methode gibt das i. Kind des aktuellen Elements zurück. + * @param i Nummer des Kindes + * @return Kind als XML-Objekt + */ + public XML getChild(int i) { + if (current == null) { + return new XML(doc, doc.getRootElement()); + } else { + List ch_element = current.getChildren(); + if (i>=ch_element.size()) return null; + return new XML(doc, ch_element.get(i)); + } + } + + //--------------------------------------------------- Methoden für das aktuelle Element ------------------------------------------------- + /** + * Frage den Namen des aktuellen Elements ab + * @return Namen des Elements + */ + public String getName() { + if (current==null) return ""; + return current.getName(); + } + + /** + * Setze den Namen des aktuellen Elements. + * @param name Neuer Name des Elements + */ + public void setName(String name) { + if (current==null) return; + current.setName(name); + } + + /** + * liefert die Anzahl der Attribute eines Elements. + * @return Anzahl des Attribute + */ + public int getAttributeCount() { + if (current == null) return 0; + return current.getAttributes().size(); + } + + /** + * liefert zurück, ob das aktuelle Element Attribute hat . + * @return true, wenn es Attribute gibt + */ + public boolean hasAttribute() { + if (current == null) return false; + return current.getAttributes().size()>0; + } + + /** + * Ruft alle Attribute des angegebenen Elements ab und gibt sie als Array von Strings zurück. + * @return Liste der Attributnamen + */ + public String[] listAttributes() { + if (current == null) return null; + List attr = current.getAttributes(); + String[] names = new String[attr.size()]; + for(int i=0; i < attr.size() ; i++) { + names[i] = attr.get(i).getName(); + } + return names; + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs + */ + public String getString(String attribute) { + if (current==null) return ""; + return current.getAttributeValue(attribute); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs + */ + public String getString(String attribute, String defaultValue) { + if (current==null) return defaultValue; + return current.getAttributeValue(attribute,defaultValue); + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param text neuer Wert des Attributs + */ + public void setString(String attribute, String text) { + if (current==null) return; + current.setAttribute(attribute, text); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Integer-Zahl + */ + public int getInt(String attribute) { + if (current==null) return 0; + try{ + int i = Integer.parseInt(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als Integer-Zahl + */ + public int getInt(String attribute, int defaultValue) { + if (current==null) return defaultValue; + try{ + int i = Integer.parseInt(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setInt(String attribute, int value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Float-Zahl + */ + public float getFloat(String attribute) { + if (current==null) return 0; + try{ + float i = Float.parseFloat(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als Float-Zahl + */ + public float getFloat(String attribute, float defaultValue) { + if (current==null) return defaultValue; + try{ + float i = Float.parseFloat(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setFloat(String attribute, float value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Double-Zahl + */ + public double getDouble(String attribute) { + if (current==null) return 0; + try{ + double i = Double.parseDouble(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + +/** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als double-Zahl + */ + public double getDouble(String attribute, double defaultValue) { + if (current==null) return defaultValue; + try{ + double i = Double.parseDouble(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setDouble(String attribute, double value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt den Inhalt/Text des aktuellen Elements ab + * @return Inhalt des Elements + */ + public String getContent() { + if ( current==null) return ""; + + return current.getText(); + } + + /** + * Fragt den Inhalt/Text des aktuellen Elements ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardtext + * @return Inhalt des Elements + */ + public String getContent(String defaultValue) { + if ( current==null) return defaultValue; + String t = current.getText(); + if(t.equals("")) t = defaultValue; + return t; + } + + /** + * Setzt den Inhalt/Text des aktuellen Elements + * @param text Neuer Inhalt des Elements + */ + public void setContent(String text) { + if ( current==null) return; + current.setText(text); + } + + + /** + * Fragt den Inhalt des aktuellen Elements als Integerzahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ public int getIntContent(int defaultValue) { + if ( current==null) return defaultValue; + try{ + int i = Integer.parseInt(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Integerzahl ab + * @return Inhalt des Elements + */ + public int getIntContent() { + if ( current==null) return 0; + try{ + int i = Integer.parseInt(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setIntContent(int value) { + if ( current==null) return; + current.setText(""+value); + } + + + /** + * Fragt den Inhalt des aktuellen Elements als Floatzahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ + public float getFloatContent(float defaultValue) { + if ( current==null) return defaultValue; + try{ + float i = Float.parseFloat(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Floatzahl ab + * @return Inhalt des Elements + */ + public float getFloatContent() { + if ( current==null) return 0; + try{ + float i = Float.parseFloat(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setFloatContent(float value) { + if ( current==null) return; + current.setText(""+value); + } + +/** + * Fragt den Inhalt des aktuellen Elements als Doublezahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ + public double getDoubleContent(double defaultValue) { + if ( current==null) return defaultValue; + try{ + double i = Double.parseDouble(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Doublezahl ab + * @return Inhalt des Elements + */ + public double getDoubleContent() { + if ( current==null) return 0; + try{ + double i = Double.parseDouble(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setDoubleContent(double value) { + if ( current==null) return; + current.setText(""+value); + } + + + // ----------------------------------------------- XML-Struktur aufbauen ------------------------------------------------ + /** Erzeuge neues Element nach der aktuellen Position und setze dieses als aktuelles Element + * @param name Name des neuen Elements + * @return neues Element als XML-Objekt + */ + public XML addChild(String name) { + Element e = new Element(name); + if(current == null){ // man ist auf Root-Ebene + doc.setRootElement(e); + + } + else { + current.addContent(e); + } // end of if-else + return new XML(doc, e); + } + + /** + * liefert das aktuelle Element als jdom-Element-Objekt + * @return aktuelles Element + */ + private Element getCurrent() { + return current; + } + + /** + * löscht ein Kind des aktuellen Knotens. + * Ist kid kein Kind des aktuellen Elements passiert gar nichts. + * @param kid XML-Objekt des Kindes + */ + public void removeChild(XML kid) { + if (current == null) return; + Element e = kid.getCurrent(); + int index = current.indexOf(e); + if(index >= 0) { current.removeContent(e);} + } + +} diff --git a/04_loesungen/02_greenfoot/alg10_balkendiagramm_loesung/images/balken.png b/04_loesungen/02_greenfoot/alg10_balkendiagramm_loesung/images/balken.png new file mode 100644 index 0000000..9ff1ffc Binary files /dev/null and b/04_loesungen/02_greenfoot/alg10_balkendiagramm_loesung/images/balken.png differ diff --git a/04_loesungen/02_greenfoot/alg10_balkendiagramm_loesung/images/bilderrahmen.png b/04_loesungen/02_greenfoot/alg10_balkendiagramm_loesung/images/bilderrahmen.png new file mode 100644 index 0000000..7f34e32 Binary files /dev/null and b/04_loesungen/02_greenfoot/alg10_balkendiagramm_loesung/images/bilderrahmen.png differ diff --git a/04_loesungen/02_greenfoot/alg10_balkendiagramm_loesung/jdom-1.1.3.jar b/04_loesungen/02_greenfoot/alg10_balkendiagramm_loesung/jdom-1.1.3.jar new file mode 100644 index 0000000..a287727 Binary files /dev/null and b/04_loesungen/02_greenfoot/alg10_balkendiagramm_loesung/jdom-1.1.3.jar differ diff --git a/04_loesungen/02_greenfoot/alg10_balkendiagramm_loesung/project.greenfoot b/04_loesungen/02_greenfoot/alg10_balkendiagramm_loesung/project.greenfoot new file mode 100644 index 0000000..187dce1 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg10_balkendiagramm_loesung/project.greenfoot @@ -0,0 +1,90 @@ +#Greenfoot project file +class.Balkendiagramm.image=balken.png +class.PictureViewer.image=bilderrahmen.png +dependency1.from=MyWorld +dependency1.to=Balkendiagramm +dependency1.type=UsesDependency +dependency2.from=PictureViewer +dependency2.to=Picture +dependency2.type=UsesDependency +dependency3.from=Table +dependency3.to=TableRow +dependency3.type=UsesDependency +dependency4.from=Picture +dependency4.to=PictureViewer +dependency4.type=UsesDependency +editor.fx.0.height=0 +editor.fx.0.width=0 +editor.fx.0.x=0 +editor.fx.0.y=0 +height=885 +package.numDependencies=4 +package.numTargets=7 +project.charset=UTF-8 +publish.hasSource=false +publish.locked=true +publish.longDesc= +publish.shortDesc= +publish.tags= +publish.title= +publish.url= +readme.height=58 +readme.name=@README +readme.width=47 +readme.x=10 +readme.y=10 +simulation.speed=97 +target1.height=50 +target1.name=PictureViewer +target1.showInterface=false +target1.type=ClassTarget +target1.width=100 +target1.x=0 +target1.y=0 +target2.height=50 +target2.name=Table +target2.showInterface=false +target2.type=ClassTarget +target2.width=80 +target2.x=0 +target2.y=0 +target3.height=50 +target3.name=Balkendiagramm +target3.showInterface=false +target3.type=ClassTarget +target3.width=120 +target3.x=0 +target3.y=0 +target4.height=50 +target4.name=Picture +target4.showInterface=false +target4.type=ClassTarget +target4.width=80 +target4.x=0 +target4.y=0 +target5.height=50 +target5.name=XML +target5.showInterface=false +target5.type=ClassTarget +target5.width=100 +target5.x=0 +target5.y=0 +target6.height=50 +target6.name=TableRow +target6.showInterface=false +target6.type=ClassTarget +target6.width=80 +target6.x=0 +target6.y=0 +target7.height=50 +target7.name=MyWorld +target7.showInterface=false +target7.type=ClassTarget +target7.width=80 +target7.x=0 +target7.y=0 +version=3.0.0 +width=1350 +world.lastInstantiated=MyWorld +xPosition=368 +yPosition=100 diff --git a/04_loesungen/02_greenfoot/alg10_balkendiagramm_loesung2/Balkendiagramm.java b/04_loesungen/02_greenfoot/alg10_balkendiagramm_loesung2/Balkendiagramm.java new file mode 100644 index 0000000..519e552 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg10_balkendiagramm_loesung2/Balkendiagramm.java @@ -0,0 +1,54 @@ +import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot und MouseInfo) +import java.awt.Font; + +/** + * Balkendiagramm für int-Array. + * + * @author Schaller + * @version 29.11.18 + */ +public class Balkendiagramm extends PictureViewer + +{ + // Liste mit allen Werten + int[] zahlen={45, 23, 123, 87, 98, 2, 1, 23, 23, 34};; + + // Schriften + Font kleineSchrift; + Font grosseSchrift; + + public Balkendiagramm() { + size(1000, 700); + background(0); + kleineSchrift = new Font( Font.SANS_SERIF, Font.PLAIN, 12 ); + grosseSchrift = new Font( Font.SANS_SERIF, Font.PLAIN, 20 ); + zeichneBalken(); + } + + public void zeichneBalken() { + clear(); + + // Überschrift + fill(255,255,255); + textFont(grosseSchrift); + text("Balkendiagramm", 2, 20); + textFont(kleineSchrift); + + // Alle Einträge darstellen + if(zahlen != null) { + for (int i = 0; i< zahlen.length; i++) { + + fill(20,30,170); + + // Balkendiagramm zeichnen + if(zahlen[i]>=0) rect(120, 25+i*15, zahlen[i]+1, 13); + + // Beschriftung + fill(255,255,255); + text("i="+i, 2, 35+i*15); + text("zahlen["+i+"]="+zahlen[i], 30, 35+i*15); + } + } + } + +} diff --git a/04_loesungen/02_greenfoot/alg10_balkendiagramm_loesung2/MyWorld.java b/04_loesungen/02_greenfoot/alg10_balkendiagramm_loesung2/MyWorld.java new file mode 100644 index 0000000..11434f1 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg10_balkendiagramm_loesung2/MyWorld.java @@ -0,0 +1,36 @@ +import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot und MouseInfo) + +/** + * Ergänzen Sie hier eine Beschreibung für die Klasse MyWorld. + * + * @author (Ihr Name) + * @version (eine Versionsnummer oder ein Datum) + */ +public class MyWorld extends World +{ + + /** + * Konstruktor für Objekte der Klasse MyWorld + * + */ + public MyWorld() + { + // Erstellt eine neue Welt mit 1200x900 Pixeln + super(1000, 700, 1); + + prepare(); + } + + + /** + * Bereite die Welt für den Programmstart vor. + * Das heißt: Erzeuge die Anfangs-Objekte und füge sie der Welt hinzu. + */ + private void prepare() + { + Balkendiagramm balkendiagramm = new Balkendiagramm(); + addObject(balkendiagramm,500,350); + + } +} + diff --git a/04_loesungen/02_greenfoot/alg10_balkendiagramm_loesung2/Picture.java b/04_loesungen/02_greenfoot/alg10_balkendiagramm_loesung2/Picture.java new file mode 100644 index 0000000..8df3d55 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg10_balkendiagramm_loesung2/Picture.java @@ -0,0 +1,699 @@ +import java.awt.image.*; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.BasicStroke; +import java.util.Vector; +import javax.imageio.*; +import java.io.*; +import java.awt.*; +import javax.swing.*; +import java.util.Random; +import java.awt.geom.AffineTransform; +/** + * + * Bildklasse für die Simulation von Processing-Befehlen + * + * Diese Klasse stellt ein BufferedImage bereit, in das mit Processing-Befehlen gezeichnet + * werden kann. + * Zusätzlich kann ein Bildanzeiger über jede Änderung des Bildes informiert werden, + * um "Zurück"-Befehle zu ermöglichen. Der Bildanzeiger ist entweder eine normale Java + * ScrollPane oder ein Actor aus Greenfoot. + * Die Dokumentation der einzelnen Zeichenmethoden ist der Processing-Reference + * (https://processing.org/reference/ steht unter CC-Lizenz: https://creativecommons.org/) + * entnommen und mit Deepl.com ins Deutsche übersetzt. + * + * @version 1.0 from 23.01.2019 + * @author Thomas Schaller (ZPG Informatik Klasse 9) + */ + +public class Picture{ + + // Einstellungmöglichkeiten für das Zeichnen von Rechtecken und Ellipsen + // RADIUS = Mittelpunkt+Radius wird gegeben, CENTER = Mittelpunkt und Breite/Höhe wird gegeben, + // CORNER = Linke obere Ecke + Breite/Höhe, CORNERS = Linke obere und rechte untere Ecke + public static final int RADIUS = 1; + public static final int CENTER = 2; + public static final int CORNER = 3; + public static final int CORNERS = 4; + + // gespeichertes Bild, + private BufferedImage image; + + // aktuelle Farbeinstellungen + private Color background; + private Color pencolor; + private Color fillcolor; + + // aktuelle Stiftdicke + private double stroke; + + // akkteller Koordinatenmodus von Rechtecken und Ellipsen + private int ellipseMode = CENTER; + private int rectMode = CORNER; + + // aktueller Font + private Font textfont = null; + + // muss ein Bildanzeiger benachrichtigt werden + private PictureViewer observer = null; + private boolean autorefresh = true; + + /** + * Erzeugt ein Bild mit Standardgröße 500x400 + */ + public Picture() { + this(500,400); + } + + /** + * Erzeugt ein Bild der angegeben Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public Picture(int width, int height) { + this(width,height, "D0D0D0"); + } + + /** + * Erzeugt ein Bild aus einer Datei + * @param filename Dateiname des Bildes + */ + public Picture(String filename) { + load(filename); + } + + /** + * Erzeugt ein Bild der angegebenen Größe mit festgelegtem Hintergrund + * @param width Breite des Bildes + * @param height Höhe des Bildes + * @param background Farbe des Hintergrunds + */ + public Picture(int width, int height, String background) { + this.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + this.background = decode(background); + this.pencolor = new Color(0,0,0); + this.stroke = 1; + this.fillcolor = null; + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(this.background); + g.fillRect(0,0,width-1, height-1); + } + + /** + * Legt fest, wer das Bild anzeigt. + * Diese ermöglicht die Benachrichtung des Observers, wenn sich das Bild ändert. + * @param observer Anzeiger des Bildes + */ + + public void setObserver(PictureViewer observer) { + this.observer= observer; + } + + /** + * Direktes Setzen des Bildes (für interne Zwecke) + * @param b Bild, das gespeichert werden soll. + */ + public void setImage(BufferedImage b) { + image = b; + } + + /** + * Direktes Abfragen des Bildes (für interne Zwecke) + * @return Bild, das gerade gespeichert ist. + */ + public BufferedImage getImage() { + return image; + } + + /** + * Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + * Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + * der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu. + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public void size(int width, int height){ + pushImage(); + this.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(background); + g.fillRect(0,0,width-1, height-1); + } + + /** + * Liefert die Breite des Bildes zurück. + * @return Breite des Bildes + */ + public int getWidth() { + return image.getWidth(); + } + + /** + * Liefert die Höhe des Bildes zurück. + * @return Höhe des Bildes + */ + public int getHeight() { + return image.getHeight(); + } + + + /** + * Erzeugt eine Kopie des Bildes und übergibt sie an den Observer (falls existent), damit dieser die Versionen speichern kann + */ + private void pushImage() { + if(observer != null) { + observer.pushImage(); + } + } + + + /** + * Legt fest, ob nach jedem Zeichenbefehl automatisch das Bild auch in + * der Oberfläche aktualisiert wird. Die Einstellung "false" beschleunigt + * das Zeichnen aufwändiger Bilder und verhindert "Flackern". + * Das Neuzeichnen kann durch die Methode "refresh" gezielt ausgelöst werden. + * @param autorefresh true = nach jedem Zeichenbefehl die Anzeige aktualisieren, false= nur durch die Methode refresh neu zeichnen + */ + public void setAutoRefresh(boolean autoRefresh) { + this.autorefresh = autoRefresh; + } + + + /** + * Auch die anzeigenden Klasse wird zum Neuzeichnen aufgefordert. + */ + private void repaint() { + if(observer != null && autorefresh) { + observer.repaint(); + } + } + + /** + * Auch die anzeigenden Klasse wird zum Neuzeichnen aufgefordert. + */ + public void refresh() { + if(observer != null) { + observer.repaint(); + } + } + + // ----------------------------------------- Zeichenfunktionen ----------------------------------------------- + /** + * Löscht den Inhalt des Bildes. + * Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt. + */ + + public void clear(){ + pushImage(); + image = new BufferedImage(image.getWidth(), image.getHeight(), image.getType()); + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(background); + g.fillRect(0,0,image.getWidth()-1, image.getHeight()-1); + repaint(); + } + + /** + * Konvertiert die in einem bestimmten Modus gegebenen Koordinaten in die Java-übliche Links_Oben_Breite_Höhe Version + * Die Änderungen werden direkt im Array vorgenommen + * @param coord Array mit vier Koordinateneinträgen im gegebenen Modus + * @param mode Modus der Koordinaten (CORNER, CORNERS, RADIUS oder CENTER) + */ + private void convert(int[] coord, int mode) { + switch(mode) { + case CORNER: break; + case CORNERS: coord[2] -= coord[0]; coord[3] -= coord[1]; break; + case RADIUS: coord[2] *= 2; coord[3] *=2; + case CENTER: coord[0] -= coord[2]/2; coord[1] -= coord[3]/2; + } + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + * Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + * Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void rectMode(int mode) { + rectMode = mode; + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + * Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + * Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als Breite und Höhe der Form. + * ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void ellipseMode(int mode) { + ellipseMode = mode; + } + + + + /** + * Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + * Um eine Linie einzufärben, verwenden Sie die {@link #stroke(int, int, int) stroke()} Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + * Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + * {@link #strokeWeight(double) strokeWeight()} geändert werden. + * @param x1 x-Koordinate des 1. Punktes + * @param y1 y-Koordinate des 1. Punktes + * @param x2 x-Koordinate des 2. Punktes + * @param y2 y-Koordinate des 2. Punktes + */ + public void line(int x1, int y1, int x2, int y2) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + if (stroke > 0) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawLine(x1, y1, x2, y2); + } + repaint(); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, rectMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillRect(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawRect(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, ellipseMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillOval(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawOval(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + int px[] = {x1, x2, x3}; + int py[] = {y1, y2, y3}; + polygon(px, py); + + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + + int px[] = {x1, x2, x3, x4}; + int py[] = {y1, y2, y3, y4}; + polygon(px, py); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + + public void polygon(int[] x, int[] y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(fillcolor != null) { + + g.setColor(fillcolor); + g.fillPolygon(x,y, y.length); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawPolygon(x, y, x.length); + } + repaint(); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + ellipse(x,y,1, 1); + + } + + // ----------------------------------------- Schriftdarstellung ----------------------------------------------- + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param s Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String s, int x, int y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(pencolor != null) { + g.setColor(fillcolor); + g.setStroke(new BasicStroke((float) stroke)); + g.setFont(textfont); + g.drawString(s, x, y); + } + repaint(); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + this.textfont = font; + } + + + // ----------------------------------------- Farbfestlegungen ----------------------------------------------- + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(String color) { + try{ + return new Color( + Integer.valueOf( color.substring( 0, 2 ), 16 ), + Integer.valueOf( color.substring( 2, 4 ), 16 ), + Integer.valueOf( color.substring( 4, 6 ), 16 ) ); + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(int color) { + try{ + if(color >=0 && color < 256) { + return new Color(color,color,color); + } else { + int r = color / 0x010000 % 0xFF; + int g = color / 0x000100 % 0xFF; + int b = color % 0xFF; + System.out.println(""+r+","+g+","+b); + return new Color(r, g, b ); + } + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + this.pencolor = decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + this.pencolor=decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + this.pencolor = new Color(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + this.pencolor = null; + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + this.stroke = width; + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + this.fillcolor = decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + this.fillcolor=decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + this.fillcolor = new Color(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + this.fillcolor = null; + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + if(c < 256) { + this.background=new Color(c,c,c); + } else { + int r = c / 0x010000; + int g = c / 0x000100 % 0xFF; + int b = c % 0xFF; + this.background= new Color(r, g, b ); + } + + this.clear(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + this.background=new Color(r,g,b); + this.clear(); + } + + +// ----------------------------------------- Dateioperationen ----------------------------------------------- + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + try{ + this.image = ImageIO.read(new File(filename)); + this.background = decode("D0D0D0"); + this.pencolor = new Color(0,0,0); + this.fillcolor = null; + this.stroke = 1; + this.repaint(); + + } catch(Exception e) { + System.out.println("Fehler beim Einlesen der Bilddatei"); + } + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + try{ + String[] fn = filename.split("\\."); + if (fn.length== 1) { + ImageIO.write(image, "PNG", new File(filename+".png")); + } else { + + if (fn.length == 2 && (fn[1].toUpperCase().equals("PNG") || + fn[1].toUpperCase().equals("GIF"))){ + ImageIO.write(image, fn[1], new File(filename)); + }else { + System.out.println("Unbekanntes Bildformat"); + } + } + + } catch(Exception e) { + System.out.println("Fehler beim Speichern"); + } + } + + +// ----------------------------------------- Sonstiges ----------------------------------------------- + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + + public Color[][] getPixelArray() { + Color[][] pixel = new Color[image.getWidth()][image.getHeight()]; + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + pixel[x][y] = new java.awt.Color(image.getRGB(x,y)); + } + } + return pixel; + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + size(pixel.length,pixel[0].length); + Graphics2D g = (Graphics2D) image.getGraphics(); + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + g.setColor(pixel[x][y]); + g.fillRect(x, y, 1, 1); + } + } + repaint(); + } + + /** + * Hilfsfunktion zum Verzögern der Ausgabe + * @param millis Wartezeit in Millisekunden + */ + public void delay(int millis) { + try{ + Thread.sleep(millis); + + } catch(Exception e) { + + } + + } + + + +} diff --git a/04_loesungen/02_greenfoot/alg10_balkendiagramm_loesung2/PictureViewer.java b/04_loesungen/02_greenfoot/alg10_balkendiagramm_loesung2/PictureViewer.java new file mode 100644 index 0000000..ecbb521 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg10_balkendiagramm_loesung2/PictureViewer.java @@ -0,0 +1,499 @@ +import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot und MouseInfo) +import java.awt.image.*; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.BasicStroke; +import java.awt.Font; +import java.util.Vector; +import java.awt.Color; +import javax.imageio.*; +import java.io.*; + +/** + * Der PictureViewer ist ein Actor, der in der Lage ist ein + * Objekt der Klasse Picture anzuzeigen. Zusätzlich können + * mehrere Verarbeitungsschritte gespeichert werden, um ein + * "zurück"-Funktion zu ermöglichen. + * + * @author Thomas Schaller + * @version V1.0 vom 10.02.2019 + */ +public class PictureViewer extends Actor +{ + public static final int FIT = -1; + public static final int NORMAL = 1; + + private static final int ANZ_BACK = 0; + + private double zoom; + protected Picture picture = null; + private Vector history; + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der Größe 500x400 + */ + public PictureViewer() { + this(500,400); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public PictureViewer(int width, int height) { + this(width,height, "D0D0D0"); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + * @param background Farbe des Hintergrunds als HEX-String (z.B. "FF3A45") + */ + public PictureViewer(int width, int height, String background) { + picture = new Picture(width,height, background); + picture.setObserver(this); + this.history = new Vector(); + this.zoom = NORMAL; + repaint(); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild aus einer Bilddatei + * @param filename Name des Bildes + */ + public PictureViewer(String filename) { + picture = new Picture(filename); + picture.setObserver(this); + this.history = new Vector(); + this.zoom = NORMAL; + repaint(); + } + + /** + * Speichert das übergebene Bild in der History. + * @param b zu speicherndes Bild + */ + public void pushImage() { + if( this.ANZ_BACK > 0) { + if(history.size() == this.ANZ_BACK) { + history.removeElementAt(0); + } + + BufferedImage b = new BufferedImage(picture.getWidth(), picture.getHeight(), picture.getImage().getType()); + Graphics g = b.getGraphics(); + g.drawImage(picture.getImage(), 0, 0, null); + g.dispose(); + + history.add(b); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + private void popImage() { + int anz = history.size(); + if(anz>0) { + BufferedImage i = history.get(anz-1); + history.removeElementAt(anz-1); + picture.setImage(i); + repaint(); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + public void back() { + popImage(); + } + + /** + * Setzt den Zoom-Faktor für das Bild. + * Als Zoomfaktor sind auch die Konstanten Bildanzeiger.FIT (auf Bildschirmgröße zoomen) und Bildanzeiger.NORMAL (100%) möglich. + * @param factor Zoomfaktor (1.0 = 100%). + */ + public void setZoom(double zoom) { + this.zoom = zoom; + repaint(); + } + + /** + * Setzt die automatische Neuanzeige des Bildes. + * Mit dieser Methode kann man einstellen, ob nach jedem Zeichenbefehl + * die Anzeige auf dem Bildschirm aktualisiert werden soll. Bei sehr + * vielen Zeichenbefehlen wird die Ausgabe dadurch sehr langsam. Es reicht + * eine Anzeige am Ende der Zeichenbefehle. Rufen Sie dann für das Neuzeichnen + * die Methode refresh() auf. + * @param autoRefresh true, wenn nach jedem Zeichenbefehl die Anzeige aktualisiert werden soll. + */ + public void setAutoRefresh(boolean autoRefresh) { + picture.setAutoRefresh(autoRefresh); + } + + /** + * Sorgt für die Aktualisierung der Bildschrimanzeige. Das aktuelle Bild + * wird dadurch angezeigt. Durch Einstellung von autoRefresh kann die + * Anzeige automatisiert werden. + */ + public void refresh() { + repaint(); + } + + /** + * Setzt das angezeigt Bild neu und beachtet dabei den Zoomfaktor. + */ + public void repaint() { + double faktor = zoom; + + if (zoom == FIT) { + double faktorw = (double) this.getWorld().getWidth() / picture.getWidth(); + double faktorh = (double) this.getWorld().getHeight() / picture.getHeight(); + faktor = Math.min(faktorw, faktorh); + } + int gfi_width = (int) (picture.getWidth()*faktor); + int gfi_height = (int) (picture.getHeight()*faktor); + + setImage(new GreenfootImage(gfi_width, gfi_height)); + Graphics2D g = (Graphics2D) this.getImage().getAwtImage().getGraphics(); + g.drawImage(picture.getImage(),0,0,gfi_width, gfi_height, 0, 0, picture.getWidth(), picture.getHeight(), null); + g.setColor(new java.awt.Color(0,0,0)); + g.setStroke(new BasicStroke((float) 1)); + g.drawRect(0,0,gfi_width-1, gfi_height-1); + + } + + // Wrappermethoden + /** + * Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + * Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + * der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu. + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public void size(int width, int height){ + picture.size(width, height); + } + + /** + * Liefert die Breite des Bildes zurück. + * @return Breite des Bildes + */ + public int getImageWidth() { + return picture.getWidth(); + } + + /** + * Liefert die Höhe des Bildes zurück. + * @return Höhe des Bildes + */ + public int getImageHeight() { + return picture.getHeight(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + picture.background(c); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + picture.background(r,g,b); + } + + /** + * Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + * Um eine Linie einzufärben, verwenden Sie die {@link #stroke(int, int, int) stroke()} Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + * Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + * {@link #strokeWeight(double) strokeWeight()} geändert werden. + * @param x1 x-Koordinate des 1. Punktes + * @param y1 y-Koordinate des 1. Punktes + * @param x2 x-Koordinate des 2. Punktes + * @param y2 y-Koordinate des 2. Punktes + */ + public void line(int x1, int y1, int x2, int y2) { + picture.line(x1,y1,x2,y2); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + picture.rect(a,b,c,d); + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + picture.ellipse(a,b,c,d); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + picture.triangle(x1,y1,x2,y2,x3,y3); + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + picture.quad(x1,y1,x2,y2,x3,y3,x4,y4); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + public void polygon(int[] x, int[] y) { + picture.polygon(x,y); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + picture.point(x,y); + + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + * Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + * Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void rectMode(int mode) { + picture.rectMode(mode); + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + * Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + * Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als Breite und Höhe der Form. + * ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void ellipseMode(int mode) { + picture.ellipseMode(mode); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + picture.stroke(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + picture.noStroke(); + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + picture.strokeWeight(width); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + picture.fill(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + picture.noFill(); + } + + /** + * Löscht den Inhalt des Bildes. + * Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt. + */ + public void clear(){ + picture.clear(); + } + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + picture.load(filename); + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + picture.save(filename); + } + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param t Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String t, int x, int y) { + picture.text(t,x,y); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + picture.textFont(font); + } + + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + public Color[][] getPixelArray() { + return picture.getPixelArray(); + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + picture.setPixelArray(pixel); + } + + +} + diff --git a/04_loesungen/02_greenfoot/alg10_balkendiagramm_loesung2/README.TXT b/04_loesungen/02_greenfoot/alg10_balkendiagramm_loesung2/README.TXT new file mode 100644 index 0000000..4b8fadd --- /dev/null +++ b/04_loesungen/02_greenfoot/alg10_balkendiagramm_loesung2/README.TXT @@ -0,0 +1,14 @@ +------------------------------------------------------------------------ +Dies ist die README-Datei des Projekts. Hier sollten Sie Ihr Projekt +beschreiben. +Erzählen Sie dem Leser (jemand, der nichts über dieses Projekt weiss), +alles, was er/sie wissen muss. Üblicherweise sollte der Kommentar +zumindest die folgenden Angaben umfassen: +------------------------------------------------------------------------ + +PROJEKTBEZEICHNUNG: +PROJEKTZWECK: +VERSION oder DATUM: +WIE IST DAS PROJEKT ZU STARTEN: +AUTOR(EN): +BENUTZERHINWEISE: diff --git a/04_loesungen/02_greenfoot/alg10_balkendiagramm_loesung2/Table.java b/04_loesungen/02_greenfoot/alg10_balkendiagramm_loesung2/Table.java new file mode 100644 index 0000000..ee5a211 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg10_balkendiagramm_loesung2/Table.java @@ -0,0 +1,894 @@ +/** + * Die Klasse Table vereinfacht den Zugriff auf CSV-Dateien. + * Die Klassen Table und TableRow ermöglichen einen einfachen Zugriff auf tabellenbasierte + * Dokumente. + * + * @author Thomas Schaller + * @version 1.0 vom 01.02.2019 + */ + +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.ArrayList; +import java.io.*; +import java.util.Scanner; + +import org.jdom.Document; +import org.jdom.Element; +import org.jdom.Attribute; +import org.jdom.JDOMException; +import org.jdom.input.SAXBuilder; +import org.jdom.output.XMLOutputter; +import org.jdom.output.Format; + +public class Table +{ + // Standardtrennzeichen für Spalten + private static final char DEFAULT_SEPARATOR = ';'; + // Standardmarkierung für Texte + private static final char DEFAULT_QUOTE = '"'; + // Standardtrennzeichen für Dezimalzahlen + private static final char DEFAULT_COMMA = ','; + + // mögliche Spaltentypen + private static final String UNKNOWN ="UNKOWN"; + private static final String INT = "INTEGER"; + private static final String DOUBLE = "DOUBLE"; + private static final String FLOAT = "FLOAT"; + + // interne Verwaltung des Dokuments als JDOM-Document-Objekt + private Document doc; + // Verweis auf Element für Kopfzeile + private Element header; + // Ende Attribute + + /** + * Erzeugt leeres Tabellen-Dokument. + */ + public Table() { + this.doc = new Document(); + doc.setRootElement(new Element("CSV-Data")); + this.header = new Element("Header"); + doc.getRootElement().addContent(header); + } + + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei und erstellt ein Tabellenobjekt mit seinen Werten. + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public Table(String filename, String options, char separator, char quote) { + loadCSV(filename, options, separator, quote); + } + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei und erstellt ein Tabellenobjekt mit seinen Werten (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + */ + public Table(String filename, String options) { + loadCSV(filename, options); + } + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei ohne Kopfzeile und erstellt ein Tabellenobjekt mit seinen Werten (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public Table(String filename) { + loadCSV(filename); + } + + // Anfang Methoden + /** + * Liest den Inhalt einer CSV-Datei ohne Kopfzeile (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public void loadCSV(String filename) { + loadCSV(filename, ""); + } + + /** + * Liest den Inhalt einer CSV-Datei (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + */ + public void loadCSV(String filename, String options) { + loadCSV(filename, options, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** + * Liest den Inhalt einer CSV-Datei. + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public void loadCSV(String filename, String options, char separator, char quote) { + doc = new Document(); + doc.setRootElement(new Element("CSV-Data")); + header = new Element("Header"); + doc.getRootElement().addContent(header); + try { + File f = new File(filename); + Scanner scanner = new Scanner(new File(filename)); + if(options.toLowerCase().contains("header") && scanner.hasNext()) { + List entries = parseLine(scanner.nextLine(), separator, quote); + int i= 0; + for(String s : entries) { + Element entry = new Element("Column"); + header.addContent(entry); + entry.setText(s); + entry.setAttribute("type", "unknown"); + i++; + } + } + + List cols = header.getChildren(); + + while (scanner.hasNext()) { + Element line = new Element("Row"); + doc.getRootElement().addContent(line); + List entries = parseLine(scanner.nextLine(), separator, quote); + int i= 0; + + for(String s : entries) { + + if(i==cols.size()) { + Element entry = new Element("Column"); + entry.setAttribute("type", "unknown"); + header.addContent(entry); + cols = header.getChildren(); + } + + Element entry = new Element("Entry"); + entry.setText(s); + line.addContent(entry); + i++; + } + } + scanner.close(); + + } catch (Exception e) { + System.out.println("Fehler beim Lesen der CSV-Datei"); + } + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei ohne Kopfzeile (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public void saveCSV(String filename) { + saveCSV(filename, ""); + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthalten, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile haben soll, + * dann lassen Sie einfach die Option "header" weg. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile haben soll. + * @param filename Dateiname der CSV-Datei. + */ + public void saveCSV(String filename, String options) { + saveCSV(filename, options, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei. + * Wenn die Datei eine Kopfzeile enthalten, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile haben soll, + * dann lassen Sie einfach die Option "header" weg. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile haben soll. + * @param filename Dateiname der CSV-Datei. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public void saveCSV(String filename, String options, char separator, char quote){ + try{ + File f = new File(filename); + PrintStream outputFile = new PrintStream (f); + System.out.println("Speicher in : "+f.getAbsolutePath()); + List columns = header.getChildren(); + String sq = ""+quote; + String ss = ""+separator; + if(quote =='"') sq = "\""; + if(separator =='"') ss = "\""; + + if(options.toLowerCase().contains("header")) { + String h = ""; + for(Element c : columns) { + h += ss + sq + c.getText()+sq; + } + outputFile.println(h.substring(1)); + } + for(int i = 0; i parseLine(String cvsLine) { + return parseLine(cvsLine, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** HIlfsfunktion für die Analyse einer Dateizeile + * @param cvsLine Zeile aus der Datei + * @param sparator Trennzeichen für die Spalten + * @return Liste von String für die einzelnen Spalten + */ + private List parseLine(String cvsLine, char separator) { + return parseLine(cvsLine, separator, DEFAULT_QUOTE); + } + + /** HIlfsfunktion für die Analyse einer Dateizeile + * @param cvsLine Zeile aus der Datei + * @param sparator Trennzeichen für die Spalten + * @param customQuote Kennung für Strings + * @return Liste von String für die einzelnen Spalten + */ + private List parseLine(String cvsLine, char separator, char customQuote) { + + List result = new ArrayList<>(); + + //if empty, return! + if (cvsLine == null && cvsLine.isEmpty()) { + return result; + } + + //ggf. Default-Value laden + if (customQuote == ' ') { + customQuote = DEFAULT_QUOTE; + } + + if (separator == ' ') { + separator = DEFAULT_SEPARATOR; + } + + StringBuffer curVal = new StringBuffer(); + boolean inQuotes = false; + boolean startCollectChar = false; + boolean doubleQuotesInColumn = false; + + char[] chars = cvsLine.toCharArray(); + + for (char ch : chars) { + + if (inQuotes) { // aktueller Text ist in Quotes eingeschlossen + startCollectChar = true; + + if (ch == customQuote) { // Quotes werden beendet, aber Achtung bei "" => Metazeichen + inQuotes = false; + if (ch == '\"') { + doubleQuotesInColumn = true; + } + + } else { + + if (ch == '\"' && !doubleQuotesInColumn) { + doubleQuotesInColumn = true; + } else { + curVal.append(ch); + doubleQuotesInColumn = false; + } + + } + } else { + if (ch == customQuote) { + + inQuotes = true; + + //Fixed : allow "" in empty quote enclosed + if (ch == '\"'){ + if(doubleQuotesInColumn) { + curVal.append('"'); + doubleQuotesInColumn = false; + } else doubleQuotesInColumn = true; + + + } + } + else { + doubleQuotesInColumn = false; + if (ch == separator) { + + result.add(curVal.toString()); + + curVal = new StringBuffer(); + startCollectChar = false; + + } else if (ch == '\r') { + //ignore LF characters + continue; + } else if (ch == '\n') { + //the end, break! + break; + } else { + curVal.append(ch); + } + } + } + + } + result.add(curVal.toString()); + return result; + } + + /** + * Sucht die Nummer einer durch Namen gegebenen Spalte. + * @param name Name der Spalte + * @return Nummer der Spalte + */ + + private int findColumnNumber(String name) { + List columns = header.getChildren(); + int i = 0; + for(Element c : columns) { + if (c.getText().toLowerCase().equals(name.toLowerCase())) { + return i; + + } + i++; + } + return -1; + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an. + */ + public void addColumn() { + Element entry = new Element("Column"); + entry.setAttribute("type", Table.UNKNOWN); + header.addContent(entry); + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an und benennt sie. + * @param title Bezeichnung der Spalte + */ + public void addColumn(String title) { + addColumn(); + Element nc = ((List)(header.getChildren())).get(header.getChildren().size()-1); + nc.setText(title); + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an und benennt und typisiert sie. + * @param title Bezeichnung der Spalte + * @param type Typ der Spalte (UNKNOWN, DOUBLE, INTEGER, FLOAT) + */ + public void addColumn(String title, String type) { + addColumn(title); + Element nc = ((List)(header.getChildren())).get(header.getChildren().size()-1); + nc.setAttribute("type", type); + } + + /** + * Löscht eine Spalte. + * @param i Nummer der Spalte. + */ + public void removeColumn(int i) { + List lines = doc.getRootElement().getChildren(); + for(Element l : lines) { + if(l.getChildren().size()>i) l.removeContent(i); + } + } + + /** + * Löscht eine Spalte + * @param name Name der Spalte + */ + public void removeColumn(String name) { + try{ + removeColumn(findColumnNumber(name)); + } catch(Exception e) { System.out.println("Unbekannter Spaltenname");} + } + + /** + * Liefert die Anzahl der Spalten in der Tabelle + * @return Anzahl der Spalten + */ + public int getColumnCount() { + return header.getChildren().size(); + } + + /** + * Liefert die Anzahl der Zeilen in der Tabelle + * @return Anzahl der Zeilen + */ + public int getRowCount() { + return doc.getRootElement().getChildren().size()-1; + } + + /** + * Löscht alle Zeilen der Tabelle. + * Die Spaltenüberschriften und Typen bleiben erhalten. + */ + public void clearRows() { + doc.getRootElement().removeChildren("Row"); + } + + /** + * Fügt eine neue Zeile an das Ende der Tabelle an. + * @return ein TableRow-Objekt für diese neue Zeile + */ + public TableRow addRow() { + Element row = new Element("Row"); + doc.getRootElement().addContent(row); + return new TableRow(doc, row); + } + + /** + * Löscht eine Zeile + * @param i Nummer der Zeile + */ + public void removeRow(int i) { + if(i rows = doc.getRootElement().getChildren(); + return new TableRow(doc, rows.get(i+1)); + } + return null; + } + + /** + * Liefert die ganze Tabelle als Array von TableRow-Objekten + * @return Array von TableRow-Objekten + */ + public TableRow[] rows() { + TableRow[] rows = new TableRow[getRowCount()]; + for(int i = 0; i < getRowCount(); i++) { + rows[i] = getRow(i); + } + return rows; + } + + /** + * Liefert den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param column Spaltennummer + * @return Wert der Zelle + */ + public int getInt(int row, int column) { + return getRow(row).getInt(column); + } + + /** + * Liefert den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param name Name der Spalte + * @return Wert der Zelle + */ + public int getInt(int row, String name) { + return getRow(row).getInt(name); + } + + /** + * Setzt den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param column Spaltennummer + * @param value neuer Wert der Zelle + */ + public void setInt(int row, int column,int value) { + getRow(row).setInt(column, value); + } + + /** + * Setzt den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(int row, String name, int value) { + getRow(row).setInt(name, value); + } + + /** + * Liefert alle Werte einer Zeile als Integer-Array. + * @param row Nummer der Zeile + * @return int-Array, dass alle Werte der Zeile enthält + */ + public int[] getIntRow(int row) { + try{ + TableRow trow = getRow(row); + int anz = getColumnCount(); + int[] r = new int[anz]; + for(int i=0; i) (header.getChildren())).get(i).getText(); + } else { + return ""; + } + } + + /** + * Liefert die Nummer einer Spalte + * @param name Name der Spalte + * @return Nummer der Spalte + */ + public int getColumn(String name) { + List columns = header.getChildren(); + int i = 0; + while (i < columns.size()) { + if (columns.get(i).getText().toLowerCase().equals(name.toLowerCase())) { + return i; + } + i++; + } // end of while + return -1; + } + + + /** + * Erzeugt eine neue Zeile mit i Spalten + * Wenn bisher nicht genügend Spalten vorhanden sind, werden automatisch neue Spalten hinzugefügt (auch zum Header) + * @param i Anzahl der Spalten + */ + private Element buildRow(int i) { + List columns = header.getChildren(); + Element entry=null; + for(int j=0; j<=i; j++) { + + if(j==columns.size()) { + Element h = new Element("Column"); + h.setAttribute("type", "unknown"); + header.addContent(h); + columns = header.getChildren(); + } + if(j==current.getChildren().size()) { + entry = new Element("Entry"); + current.addContent(entry); + + } + + } + return entry; + + } + + /** + * Erzeugt eine neue Zeile. + * Es werden genügend Spalten erzeugt, dass ein Wert in Spalte "name" eingetragen werden kann + * @param name Name der Spalte + */ + private Element buildRow(String name) { + List columns = header.getChildren(); + int i = 0; + for(Element c: columns) { + + if(c.getText().toLowerCase().equals(name.toLowerCase())) { + return buildRow(i); + } + i++; + } + return null; + + } + + /** + * Liefert den Wert einer Zelle als String + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public String getString(int i) { + if(i >= current.getContent().size()) return ""; + Element e = (Element) current.getContent(i) ; + if(e!=null) { + return e.getText(); + } else { + return ""; + } + } + + /** + * Liefert den Wert einer Zelle als String + * @param name Name der Spalte + * @return Wert der Zelle + */ + public String getString(String name) { + return getString(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als String + * @param i Nummer der Spalte + * @param text neuer Wert der Zelle + */ + public void setString(int i, String text) { + + Element e = buildRow(i); + if(e!=null) e.setText(text); + } + + /** + * Setzt den Wert einer Zelle als String + * @param name Name der Spalte + * @param text neuer Wert der Zelle + */ + public void setString(String name, String text) { + Element e = buildRow(name); + if(e!=null) e.setText(text); + } + + + /** + * Liefert den Wert einer Zelle als Int-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public int getInt(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Integer.parseInt(e.getText()); + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Int-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public int getInt(String name) { + return getInt(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Int-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(int i,int value) { + + Element e = buildRow(i); + if(e!=null) e.setText(""+value); + } + + /** + * Setzt den Wert einer Zelle als Int-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(String name, int value) { + Element e = buildRow(name); + if(e!=null) e.setText(""+value); + } + + /** + * Liefert den Wert einer Zelle als Float-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public float getFloat(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Float.parseFloat(e.getText().replace(",",".")); + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Float-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public float getFloat(String name) { + return getFloat(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Float-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setFloat(int i,float value) { + + Element e = buildRow(i); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Setzt den Wert einer Zelle als Float-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setFloat(String name, float value) { + Element e = buildRow(name); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Liefert den Wert einer Zelle als Double-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public double getDouble(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Double.parseDouble(e.getText().replace(",",".")); + + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Double-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public double getDouble(String name) { + return getDouble(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Double-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setDouble(int i,double value) { + + Element e = buildRow(i); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Setzt den Wert einer Zelle als Double-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setDouble(String name, double value) { + Element e = buildRow(name); + if(e!=null) e.setText(format.format(value)); + } + +} diff --git a/04_loesungen/02_greenfoot/alg10_balkendiagramm_loesung2/XML.java b/04_loesungen/02_greenfoot/alg10_balkendiagramm_loesung2/XML.java new file mode 100644 index 0000000..c06c490 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg10_balkendiagramm_loesung2/XML.java @@ -0,0 +1,637 @@ +/** + * Klasse zum Vereinfachten Zugriff auf XML-Dokumente + * Diese Klasse ist für den Einsatz in der Schule gedacht und soll den Schülern + * einen einfachen Zugriff auf XML-Dokumente ermöglichen. Die zur Verfügung + * stehenden Befehle sind wie in Processing realisiert. + * Dabei ist jeder Teilbaum des Dokuments wieder als XML-Objekt zugreifbar, das + * intern auf die gleiche XML-Dokumentstruktur zugreift. + * Dies ermöglicht bei unsachgemäßem Gebrauch die XML-Struktur zu zerstören. Im + * normalen Gebrauch sollte dies aber nicht relevant sein. + * + * Benötigt: jdom-1.1.3.jar + + * @author Thomas Schaller + * @version 1.0 vom 31.01.2019 + */ +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.ArrayList; +import java.io.*; + +import org.jdom.Document; +import org.jdom.Element; +import org.jdom.Attribute; +import org.jdom.JDOMException; +import org.jdom.input.SAXBuilder; +import org.jdom.output.XMLOutputter; +import org.jdom.output.Format; + +public class XML { + // Anfang Attribute + // XML-Dokumentstruktur + private Document doc; + // Zeiger auf das aktuelle Element + private Element current; + // Ende Attribute + + /** + * Erzeugt ein leeres XMLDokument + */ + public XML() { + this.doc = new Document(); + this.current = null; + } + + /** + * Erzeugt ein XML-Dokument aus einer Datei + * @param filename Dateiname der XML-Datei + */ + public XML(String filename) { + loadXML(filename); + } + + /** + * interner Konstruktor, um ein XML Objekt zu erzeugen, das auf einen bestimmten Knoten verweist + * @param doc die XML-Dokumentstruktur + * @param current Zeiger auf das aktuelle Element + */ + private XML(Document doc, Element current) { + this.doc = doc; + this.current = current; + } + + // Anfang Methoden + /** Öffnet das durch den Dateinamen gegebene Dokument + * @param filename Dateiname des XML-Files + */ + public void loadXML(String filename) { + doc = null; + File f = new File(filename); + + try { + // Das Dokument erstellen + SAXBuilder builder = new SAXBuilder(); + doc = builder.build(f); + + } catch (JDOMException e) { + e.printStackTrace(); + + } catch (IOException e) { + e.printStackTrace(); + } + // Zeiger im Baum auf Root-Element + current = doc.getRootElement(); + } + + /** Speichert den XML-Baum im angegebenen Dateinamen + * @param filename Dateiname des XML-Files + */ + public void saveXML(String filename) { + try { + // new XMLOutputter().output(doc, System.out); + XMLOutputter xmlOutput = new XMLOutputter(); + + // display nice nice + xmlOutput.setFormat(Format.getPrettyFormat()); + File f = new File(filename); + FileOutputStream outputFile = new FileOutputStream(f); + System.out.println("Speicher in : "+f.getAbsolutePath() ); + xmlOutput.output(doc, outputFile); + outputFile.close(); + System.out.println("File Saved!"); + } catch (IOException io) { + System.out.println(io.getMessage()); + } + + } + + //----------------------------------------------- Zeigerbewegungen -------------------------------------------------- + /** + * liefert ein XML-Objekt, das auf den Vaterknoten des aktuellen Elements zeigt. + * @return Vater des aktuellen Objekts. + */ + public XML getParent() { + if(current != null) { + Element parent = current.getParentElement(); + if (parent == null) { + return null; + } else { + return new XML(doc, parent); + } + } + return null; + } + + /** + * Überprüft, ob das Element irgendwelche Kinder hat oder nicht, und gibt das Ergebnis als boolean zurück. + * @return true, wenn Kinder vorhanden sind, sonst false + */ + public boolean hasChildren() { + if (current == null) { + return doc.hasRootElement(); + } else { + return current.getChildren().size()>0; + } + } + + /** + * Ermittelt die Namen aller Kinder des Elements und gibt die Namen als ein Array von Strings zurück. + * Dies ist dasselbe wie das Durchlaufen und Aufrufen von getName() auf jedem untergeordneten Element einzeln. + * @return Liste aller Namen der Kinder + */ + public String[] listChildren() { + if (current == null) { + if(doc.hasRootElement()) { + String[] names = new String[0]; + names[0] = doc.getRootElement().getName(); + return names; + } else { + return null; + } + } else { + List ch_element = current.getChildren(); + String[] names = new String[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + names[i] = ch_element.get(i).getName(); + } + return names; + } + } + + /** + * Liefert alle Kinder des Elements als Array von XML-Objekten. + * @return Array der Kinder als XML-Objekte + */ + public XML[] getChildren() { + if (current == null) { + if(doc.hasRootElement()) { + XML[] ch_xml = new XML[1]; + ch_xml[0] = new XML(doc, doc.getRootElement()); + return ch_xml; + } else { + return null; + } + } else { + List ch_element = current.getChildren(); + XML[] ch_xml = new XML[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + ch_xml[i] = new XML(doc, ch_element.get(i)); + } + return ch_xml; + } + } + + /** + * Liefert bestimmte Kinder des Elements als Array von XML-Objekten. + * Die Methode gibt dabei alle Kinder zurück, die dem angegebenen Namen entsprechen. + * @param name Name der gesuchten Kind-Objekte + * @return Array der Kinder als XML-Objekte + */ + public XML[] getChildren(String name) { + if (current == null) { + if(doc.hasRootElement()) { + XML[] ch_xml = new XML[1]; + ch_xml[0] = new XML(doc, doc.getRootElement()); + if(doc.getRootElement().getName().equals(name)){ + return ch_xml; + } else { + return null; + } + } else { + return null; + } + } else { + List ch_element = current.getChildren(name); + XML[] ch_xml = new XML[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + ch_xml[i] = new XML(doc, ch_element.get(i)); + } + return ch_xml; + } + } + + /** + * Liefert das erste Kind des Elements mit einem bestimmten Namen. + * Die Methode gibt das erste Kind zurück, das dem angegebenen Namen entsprechen. + * @param name Name des gesuchten Kind-Objektes + * @return Kind als XML-Objekt + */ + + public XML getChild(String name) { + if (current == null) { + Element e = doc.getRootElement(); + if (e.getName().equals(name)) { + return new XML(doc, e); + } else { + return null; + } + } else { + String[] names = name.split("/"); + Element e = current; + int i = 0; + while(i < names.length) { + e = e.getChild(names[i]); + if (e==null) return null; + i++; + } + return new XML(doc, e); + } + } + + /** + * Liefert das i. Kind des Elements. + * Die Methode gibt das i. Kind des aktuellen Elements zurück. + * @param i Nummer des Kindes + * @return Kind als XML-Objekt + */ + public XML getChild(int i) { + if (current == null) { + return new XML(doc, doc.getRootElement()); + } else { + List ch_element = current.getChildren(); + if (i>=ch_element.size()) return null; + return new XML(doc, ch_element.get(i)); + } + } + + //--------------------------------------------------- Methoden für das aktuelle Element ------------------------------------------------- + /** + * Frage den Namen des aktuellen Elements ab + * @return Namen des Elements + */ + public String getName() { + if (current==null) return ""; + return current.getName(); + } + + /** + * Setze den Namen des aktuellen Elements. + * @param name Neuer Name des Elements + */ + public void setName(String name) { + if (current==null) return; + current.setName(name); + } + + /** + * liefert die Anzahl der Attribute eines Elements. + * @return Anzahl des Attribute + */ + public int getAttributeCount() { + if (current == null) return 0; + return current.getAttributes().size(); + } + + /** + * liefert zurück, ob das aktuelle Element Attribute hat . + * @return true, wenn es Attribute gibt + */ + public boolean hasAttribute() { + if (current == null) return false; + return current.getAttributes().size()>0; + } + + /** + * Ruft alle Attribute des angegebenen Elements ab und gibt sie als Array von Strings zurück. + * @return Liste der Attributnamen + */ + public String[] listAttributes() { + if (current == null) return null; + List attr = current.getAttributes(); + String[] names = new String[attr.size()]; + for(int i=0; i < attr.size() ; i++) { + names[i] = attr.get(i).getName(); + } + return names; + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs + */ + public String getString(String attribute) { + if (current==null) return ""; + return current.getAttributeValue(attribute); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs + */ + public String getString(String attribute, String defaultValue) { + if (current==null) return defaultValue; + return current.getAttributeValue(attribute,defaultValue); + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param text neuer Wert des Attributs + */ + public void setString(String attribute, String text) { + if (current==null) return; + current.setAttribute(attribute, text); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Integer-Zahl + */ + public int getInt(String attribute) { + if (current==null) return 0; + try{ + int i = Integer.parseInt(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als Integer-Zahl + */ + public int getInt(String attribute, int defaultValue) { + if (current==null) return defaultValue; + try{ + int i = Integer.parseInt(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setInt(String attribute, int value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Float-Zahl + */ + public float getFloat(String attribute) { + if (current==null) return 0; + try{ + float i = Float.parseFloat(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als Float-Zahl + */ + public float getFloat(String attribute, float defaultValue) { + if (current==null) return defaultValue; + try{ + float i = Float.parseFloat(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setFloat(String attribute, float value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Double-Zahl + */ + public double getDouble(String attribute) { + if (current==null) return 0; + try{ + double i = Double.parseDouble(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + +/** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als double-Zahl + */ + public double getDouble(String attribute, double defaultValue) { + if (current==null) return defaultValue; + try{ + double i = Double.parseDouble(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setDouble(String attribute, double value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt den Inhalt/Text des aktuellen Elements ab + * @return Inhalt des Elements + */ + public String getContent() { + if ( current==null) return ""; + + return current.getText(); + } + + /** + * Fragt den Inhalt/Text des aktuellen Elements ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardtext + * @return Inhalt des Elements + */ + public String getContent(String defaultValue) { + if ( current==null) return defaultValue; + String t = current.getText(); + if(t.equals("")) t = defaultValue; + return t; + } + + /** + * Setzt den Inhalt/Text des aktuellen Elements + * @param text Neuer Inhalt des Elements + */ + public void setContent(String text) { + if ( current==null) return; + current.setText(text); + } + + + /** + * Fragt den Inhalt des aktuellen Elements als Integerzahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ public int getIntContent(int defaultValue) { + if ( current==null) return defaultValue; + try{ + int i = Integer.parseInt(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Integerzahl ab + * @return Inhalt des Elements + */ + public int getIntContent() { + if ( current==null) return 0; + try{ + int i = Integer.parseInt(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setIntContent(int value) { + if ( current==null) return; + current.setText(""+value); + } + + + /** + * Fragt den Inhalt des aktuellen Elements als Floatzahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ + public float getFloatContent(float defaultValue) { + if ( current==null) return defaultValue; + try{ + float i = Float.parseFloat(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Floatzahl ab + * @return Inhalt des Elements + */ + public float getFloatContent() { + if ( current==null) return 0; + try{ + float i = Float.parseFloat(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setFloatContent(float value) { + if ( current==null) return; + current.setText(""+value); + } + +/** + * Fragt den Inhalt des aktuellen Elements als Doublezahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ + public double getDoubleContent(double defaultValue) { + if ( current==null) return defaultValue; + try{ + double i = Double.parseDouble(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Doublezahl ab + * @return Inhalt des Elements + */ + public double getDoubleContent() { + if ( current==null) return 0; + try{ + double i = Double.parseDouble(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setDoubleContent(double value) { + if ( current==null) return; + current.setText(""+value); + } + + + // ----------------------------------------------- XML-Struktur aufbauen ------------------------------------------------ + /** Erzeuge neues Element nach der aktuellen Position und setze dieses als aktuelles Element + * @param name Name des neuen Elements + * @return neues Element als XML-Objekt + */ + public XML addChild(String name) { + Element e = new Element(name); + if(current == null){ // man ist auf Root-Ebene + doc.setRootElement(e); + + } + else { + current.addContent(e); + } // end of if-else + return new XML(doc, e); + } + + /** + * liefert das aktuelle Element als jdom-Element-Objekt + * @return aktuelles Element + */ + private Element getCurrent() { + return current; + } + + /** + * löscht ein Kind des aktuellen Knotens. + * Ist kid kein Kind des aktuellen Elements passiert gar nichts. + * @param kid XML-Objekt des Kindes + */ + public void removeChild(XML kid) { + if (current == null) return; + Element e = kid.getCurrent(); + int index = current.indexOf(e); + if(index >= 0) { current.removeContent(e);} + } + +} diff --git a/04_loesungen/02_greenfoot/alg10_balkendiagramm_loesung2/images/balken.png b/04_loesungen/02_greenfoot/alg10_balkendiagramm_loesung2/images/balken.png new file mode 100644 index 0000000..9ff1ffc Binary files /dev/null and b/04_loesungen/02_greenfoot/alg10_balkendiagramm_loesung2/images/balken.png differ diff --git a/04_loesungen/02_greenfoot/alg10_balkendiagramm_loesung2/images/bilderrahmen.png b/04_loesungen/02_greenfoot/alg10_balkendiagramm_loesung2/images/bilderrahmen.png new file mode 100644 index 0000000..7f34e32 Binary files /dev/null and b/04_loesungen/02_greenfoot/alg10_balkendiagramm_loesung2/images/bilderrahmen.png differ diff --git a/04_loesungen/02_greenfoot/alg10_balkendiagramm_loesung2/jdom-1.1.3.jar b/04_loesungen/02_greenfoot/alg10_balkendiagramm_loesung2/jdom-1.1.3.jar new file mode 100644 index 0000000..a287727 Binary files /dev/null and b/04_loesungen/02_greenfoot/alg10_balkendiagramm_loesung2/jdom-1.1.3.jar differ diff --git a/04_loesungen/02_greenfoot/alg10_balkendiagramm_loesung2/project.greenfoot b/04_loesungen/02_greenfoot/alg10_balkendiagramm_loesung2/project.greenfoot new file mode 100644 index 0000000..187dce1 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg10_balkendiagramm_loesung2/project.greenfoot @@ -0,0 +1,90 @@ +#Greenfoot project file +class.Balkendiagramm.image=balken.png +class.PictureViewer.image=bilderrahmen.png +dependency1.from=MyWorld +dependency1.to=Balkendiagramm +dependency1.type=UsesDependency +dependency2.from=PictureViewer +dependency2.to=Picture +dependency2.type=UsesDependency +dependency3.from=Table +dependency3.to=TableRow +dependency3.type=UsesDependency +dependency4.from=Picture +dependency4.to=PictureViewer +dependency4.type=UsesDependency +editor.fx.0.height=0 +editor.fx.0.width=0 +editor.fx.0.x=0 +editor.fx.0.y=0 +height=885 +package.numDependencies=4 +package.numTargets=7 +project.charset=UTF-8 +publish.hasSource=false +publish.locked=true +publish.longDesc= +publish.shortDesc= +publish.tags= +publish.title= +publish.url= +readme.height=58 +readme.name=@README +readme.width=47 +readme.x=10 +readme.y=10 +simulation.speed=97 +target1.height=50 +target1.name=PictureViewer +target1.showInterface=false +target1.type=ClassTarget +target1.width=100 +target1.x=0 +target1.y=0 +target2.height=50 +target2.name=Table +target2.showInterface=false +target2.type=ClassTarget +target2.width=80 +target2.x=0 +target2.y=0 +target3.height=50 +target3.name=Balkendiagramm +target3.showInterface=false +target3.type=ClassTarget +target3.width=120 +target3.x=0 +target3.y=0 +target4.height=50 +target4.name=Picture +target4.showInterface=false +target4.type=ClassTarget +target4.width=80 +target4.x=0 +target4.y=0 +target5.height=50 +target5.name=XML +target5.showInterface=false +target5.type=ClassTarget +target5.width=100 +target5.x=0 +target5.y=0 +target6.height=50 +target6.name=TableRow +target6.showInterface=false +target6.type=ClassTarget +target6.width=80 +target6.x=0 +target6.y=0 +target7.height=50 +target7.name=MyWorld +target7.showInterface=false +target7.type=ClassTarget +target7.width=80 +target7.x=0 +target7.y=0 +version=3.0.0 +width=1350 +world.lastInstantiated=MyWorld +xPosition=368 +yPosition=100 diff --git a/04_loesungen/02_greenfoot/alg11_balkendiagramm_zufall_loesung/Balkendiagramm.java b/04_loesungen/02_greenfoot/alg11_balkendiagramm_zufall_loesung/Balkendiagramm.java new file mode 100644 index 0000000..1473807 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg11_balkendiagramm_zufall_loesung/Balkendiagramm.java @@ -0,0 +1,71 @@ +import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot und MouseInfo) +import java.awt.Font; + +/** + * Balkendiagramm für int-Array, Zahlen werden zufällig erzeugt. + * + * @author Schaller + * @version 29.11.18 + */ +public class Balkendiagramm extends PictureViewer + +{ + // Liste mit allen Werten + int[] zahlen; + + // Schriften + Font kleineSchrift; + Font grosseSchrift; + + public Balkendiagramm() { + size(1000, 700); + background(0); + kleineSchrift = new Font( Font.SANS_SERIF, Font.PLAIN, 12 ); + grosseSchrift = new Font( Font.SANS_SERIF, Font.PLAIN, 20 ); + + // Zufallszahlen erzeugen und anzeigen + erzeugeZufallsarray(20); + + zeichneBalken(); + } + + public int getZufallszahl(int min, int max) { + java.util.Random r = new java.util.Random(); + return r.nextInt(max-min+1)+min; + } + + public void erzeugeZufallsarray(int laenge) { + // Neues Array der richtigen Länge erzeugen + zahlen = new int[laenge]; + + // Jedes Element mit einer Zufallszahl belegen + for(int i= 0; i< laenge; i++) { + zahlen[i] = getZufallszahl(1, 300); + } + } + + public void zeichneBalken() { + clear(); + + // Überschrift + fill(255,255,255); + textFont(grosseSchrift); + text("Balkendiagramm", 2, 20); + textFont(kleineSchrift); + + // Alle Einträge darstellen + for (int i = 0; i< zahlen.length; i++) { + + fill(20,30,170); + + // Balkendiagramm zeichnen + rect(120, 25+i*15, zahlen[i]+1, 13); + + // Beschriftung + fill(255,255,255); + text("i="+i, 2, 35+i*15); + text("zahlen["+i+"]="+zahlen[i], 30, 35+i*15); + } + } + +} diff --git a/04_loesungen/02_greenfoot/alg11_balkendiagramm_zufall_loesung/MyWorld.java b/04_loesungen/02_greenfoot/alg11_balkendiagramm_zufall_loesung/MyWorld.java new file mode 100644 index 0000000..11434f1 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg11_balkendiagramm_zufall_loesung/MyWorld.java @@ -0,0 +1,36 @@ +import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot und MouseInfo) + +/** + * Ergänzen Sie hier eine Beschreibung für die Klasse MyWorld. + * + * @author (Ihr Name) + * @version (eine Versionsnummer oder ein Datum) + */ +public class MyWorld extends World +{ + + /** + * Konstruktor für Objekte der Klasse MyWorld + * + */ + public MyWorld() + { + // Erstellt eine neue Welt mit 1200x900 Pixeln + super(1000, 700, 1); + + prepare(); + } + + + /** + * Bereite die Welt für den Programmstart vor. + * Das heißt: Erzeuge die Anfangs-Objekte und füge sie der Welt hinzu. + */ + private void prepare() + { + Balkendiagramm balkendiagramm = new Balkendiagramm(); + addObject(balkendiagramm,500,350); + + } +} + diff --git a/04_loesungen/02_greenfoot/alg11_balkendiagramm_zufall_loesung/Picture.java b/04_loesungen/02_greenfoot/alg11_balkendiagramm_zufall_loesung/Picture.java new file mode 100644 index 0000000..8df3d55 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg11_balkendiagramm_zufall_loesung/Picture.java @@ -0,0 +1,699 @@ +import java.awt.image.*; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.BasicStroke; +import java.util.Vector; +import javax.imageio.*; +import java.io.*; +import java.awt.*; +import javax.swing.*; +import java.util.Random; +import java.awt.geom.AffineTransform; +/** + * + * Bildklasse für die Simulation von Processing-Befehlen + * + * Diese Klasse stellt ein BufferedImage bereit, in das mit Processing-Befehlen gezeichnet + * werden kann. + * Zusätzlich kann ein Bildanzeiger über jede Änderung des Bildes informiert werden, + * um "Zurück"-Befehle zu ermöglichen. Der Bildanzeiger ist entweder eine normale Java + * ScrollPane oder ein Actor aus Greenfoot. + * Die Dokumentation der einzelnen Zeichenmethoden ist der Processing-Reference + * (https://processing.org/reference/ steht unter CC-Lizenz: https://creativecommons.org/) + * entnommen und mit Deepl.com ins Deutsche übersetzt. + * + * @version 1.0 from 23.01.2019 + * @author Thomas Schaller (ZPG Informatik Klasse 9) + */ + +public class Picture{ + + // Einstellungmöglichkeiten für das Zeichnen von Rechtecken und Ellipsen + // RADIUS = Mittelpunkt+Radius wird gegeben, CENTER = Mittelpunkt und Breite/Höhe wird gegeben, + // CORNER = Linke obere Ecke + Breite/Höhe, CORNERS = Linke obere und rechte untere Ecke + public static final int RADIUS = 1; + public static final int CENTER = 2; + public static final int CORNER = 3; + public static final int CORNERS = 4; + + // gespeichertes Bild, + private BufferedImage image; + + // aktuelle Farbeinstellungen + private Color background; + private Color pencolor; + private Color fillcolor; + + // aktuelle Stiftdicke + private double stroke; + + // akkteller Koordinatenmodus von Rechtecken und Ellipsen + private int ellipseMode = CENTER; + private int rectMode = CORNER; + + // aktueller Font + private Font textfont = null; + + // muss ein Bildanzeiger benachrichtigt werden + private PictureViewer observer = null; + private boolean autorefresh = true; + + /** + * Erzeugt ein Bild mit Standardgröße 500x400 + */ + public Picture() { + this(500,400); + } + + /** + * Erzeugt ein Bild der angegeben Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public Picture(int width, int height) { + this(width,height, "D0D0D0"); + } + + /** + * Erzeugt ein Bild aus einer Datei + * @param filename Dateiname des Bildes + */ + public Picture(String filename) { + load(filename); + } + + /** + * Erzeugt ein Bild der angegebenen Größe mit festgelegtem Hintergrund + * @param width Breite des Bildes + * @param height Höhe des Bildes + * @param background Farbe des Hintergrunds + */ + public Picture(int width, int height, String background) { + this.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + this.background = decode(background); + this.pencolor = new Color(0,0,0); + this.stroke = 1; + this.fillcolor = null; + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(this.background); + g.fillRect(0,0,width-1, height-1); + } + + /** + * Legt fest, wer das Bild anzeigt. + * Diese ermöglicht die Benachrichtung des Observers, wenn sich das Bild ändert. + * @param observer Anzeiger des Bildes + */ + + public void setObserver(PictureViewer observer) { + this.observer= observer; + } + + /** + * Direktes Setzen des Bildes (für interne Zwecke) + * @param b Bild, das gespeichert werden soll. + */ + public void setImage(BufferedImage b) { + image = b; + } + + /** + * Direktes Abfragen des Bildes (für interne Zwecke) + * @return Bild, das gerade gespeichert ist. + */ + public BufferedImage getImage() { + return image; + } + + /** + * Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + * Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + * der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu. + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public void size(int width, int height){ + pushImage(); + this.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(background); + g.fillRect(0,0,width-1, height-1); + } + + /** + * Liefert die Breite des Bildes zurück. + * @return Breite des Bildes + */ + public int getWidth() { + return image.getWidth(); + } + + /** + * Liefert die Höhe des Bildes zurück. + * @return Höhe des Bildes + */ + public int getHeight() { + return image.getHeight(); + } + + + /** + * Erzeugt eine Kopie des Bildes und übergibt sie an den Observer (falls existent), damit dieser die Versionen speichern kann + */ + private void pushImage() { + if(observer != null) { + observer.pushImage(); + } + } + + + /** + * Legt fest, ob nach jedem Zeichenbefehl automatisch das Bild auch in + * der Oberfläche aktualisiert wird. Die Einstellung "false" beschleunigt + * das Zeichnen aufwändiger Bilder und verhindert "Flackern". + * Das Neuzeichnen kann durch die Methode "refresh" gezielt ausgelöst werden. + * @param autorefresh true = nach jedem Zeichenbefehl die Anzeige aktualisieren, false= nur durch die Methode refresh neu zeichnen + */ + public void setAutoRefresh(boolean autoRefresh) { + this.autorefresh = autoRefresh; + } + + + /** + * Auch die anzeigenden Klasse wird zum Neuzeichnen aufgefordert. + */ + private void repaint() { + if(observer != null && autorefresh) { + observer.repaint(); + } + } + + /** + * Auch die anzeigenden Klasse wird zum Neuzeichnen aufgefordert. + */ + public void refresh() { + if(observer != null) { + observer.repaint(); + } + } + + // ----------------------------------------- Zeichenfunktionen ----------------------------------------------- + /** + * Löscht den Inhalt des Bildes. + * Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt. + */ + + public void clear(){ + pushImage(); + image = new BufferedImage(image.getWidth(), image.getHeight(), image.getType()); + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(background); + g.fillRect(0,0,image.getWidth()-1, image.getHeight()-1); + repaint(); + } + + /** + * Konvertiert die in einem bestimmten Modus gegebenen Koordinaten in die Java-übliche Links_Oben_Breite_Höhe Version + * Die Änderungen werden direkt im Array vorgenommen + * @param coord Array mit vier Koordinateneinträgen im gegebenen Modus + * @param mode Modus der Koordinaten (CORNER, CORNERS, RADIUS oder CENTER) + */ + private void convert(int[] coord, int mode) { + switch(mode) { + case CORNER: break; + case CORNERS: coord[2] -= coord[0]; coord[3] -= coord[1]; break; + case RADIUS: coord[2] *= 2; coord[3] *=2; + case CENTER: coord[0] -= coord[2]/2; coord[1] -= coord[3]/2; + } + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + * Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + * Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void rectMode(int mode) { + rectMode = mode; + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + * Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + * Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als Breite und Höhe der Form. + * ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void ellipseMode(int mode) { + ellipseMode = mode; + } + + + + /** + * Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + * Um eine Linie einzufärben, verwenden Sie die {@link #stroke(int, int, int) stroke()} Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + * Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + * {@link #strokeWeight(double) strokeWeight()} geändert werden. + * @param x1 x-Koordinate des 1. Punktes + * @param y1 y-Koordinate des 1. Punktes + * @param x2 x-Koordinate des 2. Punktes + * @param y2 y-Koordinate des 2. Punktes + */ + public void line(int x1, int y1, int x2, int y2) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + if (stroke > 0) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawLine(x1, y1, x2, y2); + } + repaint(); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, rectMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillRect(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawRect(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, ellipseMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillOval(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawOval(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + int px[] = {x1, x2, x3}; + int py[] = {y1, y2, y3}; + polygon(px, py); + + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + + int px[] = {x1, x2, x3, x4}; + int py[] = {y1, y2, y3, y4}; + polygon(px, py); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + + public void polygon(int[] x, int[] y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(fillcolor != null) { + + g.setColor(fillcolor); + g.fillPolygon(x,y, y.length); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawPolygon(x, y, x.length); + } + repaint(); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + ellipse(x,y,1, 1); + + } + + // ----------------------------------------- Schriftdarstellung ----------------------------------------------- + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param s Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String s, int x, int y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(pencolor != null) { + g.setColor(fillcolor); + g.setStroke(new BasicStroke((float) stroke)); + g.setFont(textfont); + g.drawString(s, x, y); + } + repaint(); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + this.textfont = font; + } + + + // ----------------------------------------- Farbfestlegungen ----------------------------------------------- + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(String color) { + try{ + return new Color( + Integer.valueOf( color.substring( 0, 2 ), 16 ), + Integer.valueOf( color.substring( 2, 4 ), 16 ), + Integer.valueOf( color.substring( 4, 6 ), 16 ) ); + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(int color) { + try{ + if(color >=0 && color < 256) { + return new Color(color,color,color); + } else { + int r = color / 0x010000 % 0xFF; + int g = color / 0x000100 % 0xFF; + int b = color % 0xFF; + System.out.println(""+r+","+g+","+b); + return new Color(r, g, b ); + } + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + this.pencolor = decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + this.pencolor=decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + this.pencolor = new Color(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + this.pencolor = null; + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + this.stroke = width; + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + this.fillcolor = decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + this.fillcolor=decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + this.fillcolor = new Color(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + this.fillcolor = null; + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + if(c < 256) { + this.background=new Color(c,c,c); + } else { + int r = c / 0x010000; + int g = c / 0x000100 % 0xFF; + int b = c % 0xFF; + this.background= new Color(r, g, b ); + } + + this.clear(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + this.background=new Color(r,g,b); + this.clear(); + } + + +// ----------------------------------------- Dateioperationen ----------------------------------------------- + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + try{ + this.image = ImageIO.read(new File(filename)); + this.background = decode("D0D0D0"); + this.pencolor = new Color(0,0,0); + this.fillcolor = null; + this.stroke = 1; + this.repaint(); + + } catch(Exception e) { + System.out.println("Fehler beim Einlesen der Bilddatei"); + } + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + try{ + String[] fn = filename.split("\\."); + if (fn.length== 1) { + ImageIO.write(image, "PNG", new File(filename+".png")); + } else { + + if (fn.length == 2 && (fn[1].toUpperCase().equals("PNG") || + fn[1].toUpperCase().equals("GIF"))){ + ImageIO.write(image, fn[1], new File(filename)); + }else { + System.out.println("Unbekanntes Bildformat"); + } + } + + } catch(Exception e) { + System.out.println("Fehler beim Speichern"); + } + } + + +// ----------------------------------------- Sonstiges ----------------------------------------------- + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + + public Color[][] getPixelArray() { + Color[][] pixel = new Color[image.getWidth()][image.getHeight()]; + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + pixel[x][y] = new java.awt.Color(image.getRGB(x,y)); + } + } + return pixel; + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + size(pixel.length,pixel[0].length); + Graphics2D g = (Graphics2D) image.getGraphics(); + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + g.setColor(pixel[x][y]); + g.fillRect(x, y, 1, 1); + } + } + repaint(); + } + + /** + * Hilfsfunktion zum Verzögern der Ausgabe + * @param millis Wartezeit in Millisekunden + */ + public void delay(int millis) { + try{ + Thread.sleep(millis); + + } catch(Exception e) { + + } + + } + + + +} diff --git a/04_loesungen/02_greenfoot/alg11_balkendiagramm_zufall_loesung/PictureViewer.java b/04_loesungen/02_greenfoot/alg11_balkendiagramm_zufall_loesung/PictureViewer.java new file mode 100644 index 0000000..ecbb521 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg11_balkendiagramm_zufall_loesung/PictureViewer.java @@ -0,0 +1,499 @@ +import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot und MouseInfo) +import java.awt.image.*; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.BasicStroke; +import java.awt.Font; +import java.util.Vector; +import java.awt.Color; +import javax.imageio.*; +import java.io.*; + +/** + * Der PictureViewer ist ein Actor, der in der Lage ist ein + * Objekt der Klasse Picture anzuzeigen. Zusätzlich können + * mehrere Verarbeitungsschritte gespeichert werden, um ein + * "zurück"-Funktion zu ermöglichen. + * + * @author Thomas Schaller + * @version V1.0 vom 10.02.2019 + */ +public class PictureViewer extends Actor +{ + public static final int FIT = -1; + public static final int NORMAL = 1; + + private static final int ANZ_BACK = 0; + + private double zoom; + protected Picture picture = null; + private Vector history; + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der Größe 500x400 + */ + public PictureViewer() { + this(500,400); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public PictureViewer(int width, int height) { + this(width,height, "D0D0D0"); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + * @param background Farbe des Hintergrunds als HEX-String (z.B. "FF3A45") + */ + public PictureViewer(int width, int height, String background) { + picture = new Picture(width,height, background); + picture.setObserver(this); + this.history = new Vector(); + this.zoom = NORMAL; + repaint(); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild aus einer Bilddatei + * @param filename Name des Bildes + */ + public PictureViewer(String filename) { + picture = new Picture(filename); + picture.setObserver(this); + this.history = new Vector(); + this.zoom = NORMAL; + repaint(); + } + + /** + * Speichert das übergebene Bild in der History. + * @param b zu speicherndes Bild + */ + public void pushImage() { + if( this.ANZ_BACK > 0) { + if(history.size() == this.ANZ_BACK) { + history.removeElementAt(0); + } + + BufferedImage b = new BufferedImage(picture.getWidth(), picture.getHeight(), picture.getImage().getType()); + Graphics g = b.getGraphics(); + g.drawImage(picture.getImage(), 0, 0, null); + g.dispose(); + + history.add(b); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + private void popImage() { + int anz = history.size(); + if(anz>0) { + BufferedImage i = history.get(anz-1); + history.removeElementAt(anz-1); + picture.setImage(i); + repaint(); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + public void back() { + popImage(); + } + + /** + * Setzt den Zoom-Faktor für das Bild. + * Als Zoomfaktor sind auch die Konstanten Bildanzeiger.FIT (auf Bildschirmgröße zoomen) und Bildanzeiger.NORMAL (100%) möglich. + * @param factor Zoomfaktor (1.0 = 100%). + */ + public void setZoom(double zoom) { + this.zoom = zoom; + repaint(); + } + + /** + * Setzt die automatische Neuanzeige des Bildes. + * Mit dieser Methode kann man einstellen, ob nach jedem Zeichenbefehl + * die Anzeige auf dem Bildschirm aktualisiert werden soll. Bei sehr + * vielen Zeichenbefehlen wird die Ausgabe dadurch sehr langsam. Es reicht + * eine Anzeige am Ende der Zeichenbefehle. Rufen Sie dann für das Neuzeichnen + * die Methode refresh() auf. + * @param autoRefresh true, wenn nach jedem Zeichenbefehl die Anzeige aktualisiert werden soll. + */ + public void setAutoRefresh(boolean autoRefresh) { + picture.setAutoRefresh(autoRefresh); + } + + /** + * Sorgt für die Aktualisierung der Bildschrimanzeige. Das aktuelle Bild + * wird dadurch angezeigt. Durch Einstellung von autoRefresh kann die + * Anzeige automatisiert werden. + */ + public void refresh() { + repaint(); + } + + /** + * Setzt das angezeigt Bild neu und beachtet dabei den Zoomfaktor. + */ + public void repaint() { + double faktor = zoom; + + if (zoom == FIT) { + double faktorw = (double) this.getWorld().getWidth() / picture.getWidth(); + double faktorh = (double) this.getWorld().getHeight() / picture.getHeight(); + faktor = Math.min(faktorw, faktorh); + } + int gfi_width = (int) (picture.getWidth()*faktor); + int gfi_height = (int) (picture.getHeight()*faktor); + + setImage(new GreenfootImage(gfi_width, gfi_height)); + Graphics2D g = (Graphics2D) this.getImage().getAwtImage().getGraphics(); + g.drawImage(picture.getImage(),0,0,gfi_width, gfi_height, 0, 0, picture.getWidth(), picture.getHeight(), null); + g.setColor(new java.awt.Color(0,0,0)); + g.setStroke(new BasicStroke((float) 1)); + g.drawRect(0,0,gfi_width-1, gfi_height-1); + + } + + // Wrappermethoden + /** + * Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + * Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + * der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu. + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public void size(int width, int height){ + picture.size(width, height); + } + + /** + * Liefert die Breite des Bildes zurück. + * @return Breite des Bildes + */ + public int getImageWidth() { + return picture.getWidth(); + } + + /** + * Liefert die Höhe des Bildes zurück. + * @return Höhe des Bildes + */ + public int getImageHeight() { + return picture.getHeight(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + picture.background(c); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + picture.background(r,g,b); + } + + /** + * Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + * Um eine Linie einzufärben, verwenden Sie die {@link #stroke(int, int, int) stroke()} Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + * Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + * {@link #strokeWeight(double) strokeWeight()} geändert werden. + * @param x1 x-Koordinate des 1. Punktes + * @param y1 y-Koordinate des 1. Punktes + * @param x2 x-Koordinate des 2. Punktes + * @param y2 y-Koordinate des 2. Punktes + */ + public void line(int x1, int y1, int x2, int y2) { + picture.line(x1,y1,x2,y2); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + picture.rect(a,b,c,d); + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + picture.ellipse(a,b,c,d); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + picture.triangle(x1,y1,x2,y2,x3,y3); + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + picture.quad(x1,y1,x2,y2,x3,y3,x4,y4); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + public void polygon(int[] x, int[] y) { + picture.polygon(x,y); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + picture.point(x,y); + + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + * Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + * Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void rectMode(int mode) { + picture.rectMode(mode); + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + * Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + * Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als Breite und Höhe der Form. + * ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void ellipseMode(int mode) { + picture.ellipseMode(mode); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + picture.stroke(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + picture.noStroke(); + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + picture.strokeWeight(width); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + picture.fill(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + picture.noFill(); + } + + /** + * Löscht den Inhalt des Bildes. + * Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt. + */ + public void clear(){ + picture.clear(); + } + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + picture.load(filename); + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + picture.save(filename); + } + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param t Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String t, int x, int y) { + picture.text(t,x,y); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + picture.textFont(font); + } + + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + public Color[][] getPixelArray() { + return picture.getPixelArray(); + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + picture.setPixelArray(pixel); + } + + +} + diff --git a/04_loesungen/02_greenfoot/alg11_balkendiagramm_zufall_loesung/README.TXT b/04_loesungen/02_greenfoot/alg11_balkendiagramm_zufall_loesung/README.TXT new file mode 100644 index 0000000..4b8fadd --- /dev/null +++ b/04_loesungen/02_greenfoot/alg11_balkendiagramm_zufall_loesung/README.TXT @@ -0,0 +1,14 @@ +------------------------------------------------------------------------ +Dies ist die README-Datei des Projekts. Hier sollten Sie Ihr Projekt +beschreiben. +Erzählen Sie dem Leser (jemand, der nichts über dieses Projekt weiss), +alles, was er/sie wissen muss. Üblicherweise sollte der Kommentar +zumindest die folgenden Angaben umfassen: +------------------------------------------------------------------------ + +PROJEKTBEZEICHNUNG: +PROJEKTZWECK: +VERSION oder DATUM: +WIE IST DAS PROJEKT ZU STARTEN: +AUTOR(EN): +BENUTZERHINWEISE: diff --git a/04_loesungen/02_greenfoot/alg11_balkendiagramm_zufall_loesung/Table.java b/04_loesungen/02_greenfoot/alg11_balkendiagramm_zufall_loesung/Table.java new file mode 100644 index 0000000..ee5a211 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg11_balkendiagramm_zufall_loesung/Table.java @@ -0,0 +1,894 @@ +/** + * Die Klasse Table vereinfacht den Zugriff auf CSV-Dateien. + * Die Klassen Table und TableRow ermöglichen einen einfachen Zugriff auf tabellenbasierte + * Dokumente. + * + * @author Thomas Schaller + * @version 1.0 vom 01.02.2019 + */ + +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.ArrayList; +import java.io.*; +import java.util.Scanner; + +import org.jdom.Document; +import org.jdom.Element; +import org.jdom.Attribute; +import org.jdom.JDOMException; +import org.jdom.input.SAXBuilder; +import org.jdom.output.XMLOutputter; +import org.jdom.output.Format; + +public class Table +{ + // Standardtrennzeichen für Spalten + private static final char DEFAULT_SEPARATOR = ';'; + // Standardmarkierung für Texte + private static final char DEFAULT_QUOTE = '"'; + // Standardtrennzeichen für Dezimalzahlen + private static final char DEFAULT_COMMA = ','; + + // mögliche Spaltentypen + private static final String UNKNOWN ="UNKOWN"; + private static final String INT = "INTEGER"; + private static final String DOUBLE = "DOUBLE"; + private static final String FLOAT = "FLOAT"; + + // interne Verwaltung des Dokuments als JDOM-Document-Objekt + private Document doc; + // Verweis auf Element für Kopfzeile + private Element header; + // Ende Attribute + + /** + * Erzeugt leeres Tabellen-Dokument. + */ + public Table() { + this.doc = new Document(); + doc.setRootElement(new Element("CSV-Data")); + this.header = new Element("Header"); + doc.getRootElement().addContent(header); + } + + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei und erstellt ein Tabellenobjekt mit seinen Werten. + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public Table(String filename, String options, char separator, char quote) { + loadCSV(filename, options, separator, quote); + } + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei und erstellt ein Tabellenobjekt mit seinen Werten (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + */ + public Table(String filename, String options) { + loadCSV(filename, options); + } + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei ohne Kopfzeile und erstellt ein Tabellenobjekt mit seinen Werten (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public Table(String filename) { + loadCSV(filename); + } + + // Anfang Methoden + /** + * Liest den Inhalt einer CSV-Datei ohne Kopfzeile (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public void loadCSV(String filename) { + loadCSV(filename, ""); + } + + /** + * Liest den Inhalt einer CSV-Datei (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + */ + public void loadCSV(String filename, String options) { + loadCSV(filename, options, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** + * Liest den Inhalt einer CSV-Datei. + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public void loadCSV(String filename, String options, char separator, char quote) { + doc = new Document(); + doc.setRootElement(new Element("CSV-Data")); + header = new Element("Header"); + doc.getRootElement().addContent(header); + try { + File f = new File(filename); + Scanner scanner = new Scanner(new File(filename)); + if(options.toLowerCase().contains("header") && scanner.hasNext()) { + List entries = parseLine(scanner.nextLine(), separator, quote); + int i= 0; + for(String s : entries) { + Element entry = new Element("Column"); + header.addContent(entry); + entry.setText(s); + entry.setAttribute("type", "unknown"); + i++; + } + } + + List cols = header.getChildren(); + + while (scanner.hasNext()) { + Element line = new Element("Row"); + doc.getRootElement().addContent(line); + List entries = parseLine(scanner.nextLine(), separator, quote); + int i= 0; + + for(String s : entries) { + + if(i==cols.size()) { + Element entry = new Element("Column"); + entry.setAttribute("type", "unknown"); + header.addContent(entry); + cols = header.getChildren(); + } + + Element entry = new Element("Entry"); + entry.setText(s); + line.addContent(entry); + i++; + } + } + scanner.close(); + + } catch (Exception e) { + System.out.println("Fehler beim Lesen der CSV-Datei"); + } + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei ohne Kopfzeile (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public void saveCSV(String filename) { + saveCSV(filename, ""); + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthalten, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile haben soll, + * dann lassen Sie einfach die Option "header" weg. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile haben soll. + * @param filename Dateiname der CSV-Datei. + */ + public void saveCSV(String filename, String options) { + saveCSV(filename, options, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei. + * Wenn die Datei eine Kopfzeile enthalten, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile haben soll, + * dann lassen Sie einfach die Option "header" weg. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile haben soll. + * @param filename Dateiname der CSV-Datei. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public void saveCSV(String filename, String options, char separator, char quote){ + try{ + File f = new File(filename); + PrintStream outputFile = new PrintStream (f); + System.out.println("Speicher in : "+f.getAbsolutePath()); + List columns = header.getChildren(); + String sq = ""+quote; + String ss = ""+separator; + if(quote =='"') sq = "\""; + if(separator =='"') ss = "\""; + + if(options.toLowerCase().contains("header")) { + String h = ""; + for(Element c : columns) { + h += ss + sq + c.getText()+sq; + } + outputFile.println(h.substring(1)); + } + for(int i = 0; i parseLine(String cvsLine) { + return parseLine(cvsLine, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** HIlfsfunktion für die Analyse einer Dateizeile + * @param cvsLine Zeile aus der Datei + * @param sparator Trennzeichen für die Spalten + * @return Liste von String für die einzelnen Spalten + */ + private List parseLine(String cvsLine, char separator) { + return parseLine(cvsLine, separator, DEFAULT_QUOTE); + } + + /** HIlfsfunktion für die Analyse einer Dateizeile + * @param cvsLine Zeile aus der Datei + * @param sparator Trennzeichen für die Spalten + * @param customQuote Kennung für Strings + * @return Liste von String für die einzelnen Spalten + */ + private List parseLine(String cvsLine, char separator, char customQuote) { + + List result = new ArrayList<>(); + + //if empty, return! + if (cvsLine == null && cvsLine.isEmpty()) { + return result; + } + + //ggf. Default-Value laden + if (customQuote == ' ') { + customQuote = DEFAULT_QUOTE; + } + + if (separator == ' ') { + separator = DEFAULT_SEPARATOR; + } + + StringBuffer curVal = new StringBuffer(); + boolean inQuotes = false; + boolean startCollectChar = false; + boolean doubleQuotesInColumn = false; + + char[] chars = cvsLine.toCharArray(); + + for (char ch : chars) { + + if (inQuotes) { // aktueller Text ist in Quotes eingeschlossen + startCollectChar = true; + + if (ch == customQuote) { // Quotes werden beendet, aber Achtung bei "" => Metazeichen + inQuotes = false; + if (ch == '\"') { + doubleQuotesInColumn = true; + } + + } else { + + if (ch == '\"' && !doubleQuotesInColumn) { + doubleQuotesInColumn = true; + } else { + curVal.append(ch); + doubleQuotesInColumn = false; + } + + } + } else { + if (ch == customQuote) { + + inQuotes = true; + + //Fixed : allow "" in empty quote enclosed + if (ch == '\"'){ + if(doubleQuotesInColumn) { + curVal.append('"'); + doubleQuotesInColumn = false; + } else doubleQuotesInColumn = true; + + + } + } + else { + doubleQuotesInColumn = false; + if (ch == separator) { + + result.add(curVal.toString()); + + curVal = new StringBuffer(); + startCollectChar = false; + + } else if (ch == '\r') { + //ignore LF characters + continue; + } else if (ch == '\n') { + //the end, break! + break; + } else { + curVal.append(ch); + } + } + } + + } + result.add(curVal.toString()); + return result; + } + + /** + * Sucht die Nummer einer durch Namen gegebenen Spalte. + * @param name Name der Spalte + * @return Nummer der Spalte + */ + + private int findColumnNumber(String name) { + List columns = header.getChildren(); + int i = 0; + for(Element c : columns) { + if (c.getText().toLowerCase().equals(name.toLowerCase())) { + return i; + + } + i++; + } + return -1; + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an. + */ + public void addColumn() { + Element entry = new Element("Column"); + entry.setAttribute("type", Table.UNKNOWN); + header.addContent(entry); + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an und benennt sie. + * @param title Bezeichnung der Spalte + */ + public void addColumn(String title) { + addColumn(); + Element nc = ((List)(header.getChildren())).get(header.getChildren().size()-1); + nc.setText(title); + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an und benennt und typisiert sie. + * @param title Bezeichnung der Spalte + * @param type Typ der Spalte (UNKNOWN, DOUBLE, INTEGER, FLOAT) + */ + public void addColumn(String title, String type) { + addColumn(title); + Element nc = ((List)(header.getChildren())).get(header.getChildren().size()-1); + nc.setAttribute("type", type); + } + + /** + * Löscht eine Spalte. + * @param i Nummer der Spalte. + */ + public void removeColumn(int i) { + List lines = doc.getRootElement().getChildren(); + for(Element l : lines) { + if(l.getChildren().size()>i) l.removeContent(i); + } + } + + /** + * Löscht eine Spalte + * @param name Name der Spalte + */ + public void removeColumn(String name) { + try{ + removeColumn(findColumnNumber(name)); + } catch(Exception e) { System.out.println("Unbekannter Spaltenname");} + } + + /** + * Liefert die Anzahl der Spalten in der Tabelle + * @return Anzahl der Spalten + */ + public int getColumnCount() { + return header.getChildren().size(); + } + + /** + * Liefert die Anzahl der Zeilen in der Tabelle + * @return Anzahl der Zeilen + */ + public int getRowCount() { + return doc.getRootElement().getChildren().size()-1; + } + + /** + * Löscht alle Zeilen der Tabelle. + * Die Spaltenüberschriften und Typen bleiben erhalten. + */ + public void clearRows() { + doc.getRootElement().removeChildren("Row"); + } + + /** + * Fügt eine neue Zeile an das Ende der Tabelle an. + * @return ein TableRow-Objekt für diese neue Zeile + */ + public TableRow addRow() { + Element row = new Element("Row"); + doc.getRootElement().addContent(row); + return new TableRow(doc, row); + } + + /** + * Löscht eine Zeile + * @param i Nummer der Zeile + */ + public void removeRow(int i) { + if(i rows = doc.getRootElement().getChildren(); + return new TableRow(doc, rows.get(i+1)); + } + return null; + } + + /** + * Liefert die ganze Tabelle als Array von TableRow-Objekten + * @return Array von TableRow-Objekten + */ + public TableRow[] rows() { + TableRow[] rows = new TableRow[getRowCount()]; + for(int i = 0; i < getRowCount(); i++) { + rows[i] = getRow(i); + } + return rows; + } + + /** + * Liefert den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param column Spaltennummer + * @return Wert der Zelle + */ + public int getInt(int row, int column) { + return getRow(row).getInt(column); + } + + /** + * Liefert den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param name Name der Spalte + * @return Wert der Zelle + */ + public int getInt(int row, String name) { + return getRow(row).getInt(name); + } + + /** + * Setzt den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param column Spaltennummer + * @param value neuer Wert der Zelle + */ + public void setInt(int row, int column,int value) { + getRow(row).setInt(column, value); + } + + /** + * Setzt den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(int row, String name, int value) { + getRow(row).setInt(name, value); + } + + /** + * Liefert alle Werte einer Zeile als Integer-Array. + * @param row Nummer der Zeile + * @return int-Array, dass alle Werte der Zeile enthält + */ + public int[] getIntRow(int row) { + try{ + TableRow trow = getRow(row); + int anz = getColumnCount(); + int[] r = new int[anz]; + for(int i=0; i) (header.getChildren())).get(i).getText(); + } else { + return ""; + } + } + + /** + * Liefert die Nummer einer Spalte + * @param name Name der Spalte + * @return Nummer der Spalte + */ + public int getColumn(String name) { + List columns = header.getChildren(); + int i = 0; + while (i < columns.size()) { + if (columns.get(i).getText().toLowerCase().equals(name.toLowerCase())) { + return i; + } + i++; + } // end of while + return -1; + } + + + /** + * Erzeugt eine neue Zeile mit i Spalten + * Wenn bisher nicht genügend Spalten vorhanden sind, werden automatisch neue Spalten hinzugefügt (auch zum Header) + * @param i Anzahl der Spalten + */ + private Element buildRow(int i) { + List columns = header.getChildren(); + Element entry=null; + for(int j=0; j<=i; j++) { + + if(j==columns.size()) { + Element h = new Element("Column"); + h.setAttribute("type", "unknown"); + header.addContent(h); + columns = header.getChildren(); + } + if(j==current.getChildren().size()) { + entry = new Element("Entry"); + current.addContent(entry); + + } + + } + return entry; + + } + + /** + * Erzeugt eine neue Zeile. + * Es werden genügend Spalten erzeugt, dass ein Wert in Spalte "name" eingetragen werden kann + * @param name Name der Spalte + */ + private Element buildRow(String name) { + List columns = header.getChildren(); + int i = 0; + for(Element c: columns) { + + if(c.getText().toLowerCase().equals(name.toLowerCase())) { + return buildRow(i); + } + i++; + } + return null; + + } + + /** + * Liefert den Wert einer Zelle als String + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public String getString(int i) { + if(i >= current.getContent().size()) return ""; + Element e = (Element) current.getContent(i) ; + if(e!=null) { + return e.getText(); + } else { + return ""; + } + } + + /** + * Liefert den Wert einer Zelle als String + * @param name Name der Spalte + * @return Wert der Zelle + */ + public String getString(String name) { + return getString(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als String + * @param i Nummer der Spalte + * @param text neuer Wert der Zelle + */ + public void setString(int i, String text) { + + Element e = buildRow(i); + if(e!=null) e.setText(text); + } + + /** + * Setzt den Wert einer Zelle als String + * @param name Name der Spalte + * @param text neuer Wert der Zelle + */ + public void setString(String name, String text) { + Element e = buildRow(name); + if(e!=null) e.setText(text); + } + + + /** + * Liefert den Wert einer Zelle als Int-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public int getInt(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Integer.parseInt(e.getText()); + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Int-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public int getInt(String name) { + return getInt(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Int-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(int i,int value) { + + Element e = buildRow(i); + if(e!=null) e.setText(""+value); + } + + /** + * Setzt den Wert einer Zelle als Int-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(String name, int value) { + Element e = buildRow(name); + if(e!=null) e.setText(""+value); + } + + /** + * Liefert den Wert einer Zelle als Float-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public float getFloat(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Float.parseFloat(e.getText().replace(",",".")); + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Float-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public float getFloat(String name) { + return getFloat(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Float-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setFloat(int i,float value) { + + Element e = buildRow(i); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Setzt den Wert einer Zelle als Float-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setFloat(String name, float value) { + Element e = buildRow(name); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Liefert den Wert einer Zelle als Double-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public double getDouble(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Double.parseDouble(e.getText().replace(",",".")); + + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Double-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public double getDouble(String name) { + return getDouble(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Double-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setDouble(int i,double value) { + + Element e = buildRow(i); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Setzt den Wert einer Zelle als Double-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setDouble(String name, double value) { + Element e = buildRow(name); + if(e!=null) e.setText(format.format(value)); + } + +} diff --git a/04_loesungen/02_greenfoot/alg11_balkendiagramm_zufall_loesung/XML.java b/04_loesungen/02_greenfoot/alg11_balkendiagramm_zufall_loesung/XML.java new file mode 100644 index 0000000..c06c490 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg11_balkendiagramm_zufall_loesung/XML.java @@ -0,0 +1,637 @@ +/** + * Klasse zum Vereinfachten Zugriff auf XML-Dokumente + * Diese Klasse ist für den Einsatz in der Schule gedacht und soll den Schülern + * einen einfachen Zugriff auf XML-Dokumente ermöglichen. Die zur Verfügung + * stehenden Befehle sind wie in Processing realisiert. + * Dabei ist jeder Teilbaum des Dokuments wieder als XML-Objekt zugreifbar, das + * intern auf die gleiche XML-Dokumentstruktur zugreift. + * Dies ermöglicht bei unsachgemäßem Gebrauch die XML-Struktur zu zerstören. Im + * normalen Gebrauch sollte dies aber nicht relevant sein. + * + * Benötigt: jdom-1.1.3.jar + + * @author Thomas Schaller + * @version 1.0 vom 31.01.2019 + */ +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.ArrayList; +import java.io.*; + +import org.jdom.Document; +import org.jdom.Element; +import org.jdom.Attribute; +import org.jdom.JDOMException; +import org.jdom.input.SAXBuilder; +import org.jdom.output.XMLOutputter; +import org.jdom.output.Format; + +public class XML { + // Anfang Attribute + // XML-Dokumentstruktur + private Document doc; + // Zeiger auf das aktuelle Element + private Element current; + // Ende Attribute + + /** + * Erzeugt ein leeres XMLDokument + */ + public XML() { + this.doc = new Document(); + this.current = null; + } + + /** + * Erzeugt ein XML-Dokument aus einer Datei + * @param filename Dateiname der XML-Datei + */ + public XML(String filename) { + loadXML(filename); + } + + /** + * interner Konstruktor, um ein XML Objekt zu erzeugen, das auf einen bestimmten Knoten verweist + * @param doc die XML-Dokumentstruktur + * @param current Zeiger auf das aktuelle Element + */ + private XML(Document doc, Element current) { + this.doc = doc; + this.current = current; + } + + // Anfang Methoden + /** Öffnet das durch den Dateinamen gegebene Dokument + * @param filename Dateiname des XML-Files + */ + public void loadXML(String filename) { + doc = null; + File f = new File(filename); + + try { + // Das Dokument erstellen + SAXBuilder builder = new SAXBuilder(); + doc = builder.build(f); + + } catch (JDOMException e) { + e.printStackTrace(); + + } catch (IOException e) { + e.printStackTrace(); + } + // Zeiger im Baum auf Root-Element + current = doc.getRootElement(); + } + + /** Speichert den XML-Baum im angegebenen Dateinamen + * @param filename Dateiname des XML-Files + */ + public void saveXML(String filename) { + try { + // new XMLOutputter().output(doc, System.out); + XMLOutputter xmlOutput = new XMLOutputter(); + + // display nice nice + xmlOutput.setFormat(Format.getPrettyFormat()); + File f = new File(filename); + FileOutputStream outputFile = new FileOutputStream(f); + System.out.println("Speicher in : "+f.getAbsolutePath() ); + xmlOutput.output(doc, outputFile); + outputFile.close(); + System.out.println("File Saved!"); + } catch (IOException io) { + System.out.println(io.getMessage()); + } + + } + + //----------------------------------------------- Zeigerbewegungen -------------------------------------------------- + /** + * liefert ein XML-Objekt, das auf den Vaterknoten des aktuellen Elements zeigt. + * @return Vater des aktuellen Objekts. + */ + public XML getParent() { + if(current != null) { + Element parent = current.getParentElement(); + if (parent == null) { + return null; + } else { + return new XML(doc, parent); + } + } + return null; + } + + /** + * Überprüft, ob das Element irgendwelche Kinder hat oder nicht, und gibt das Ergebnis als boolean zurück. + * @return true, wenn Kinder vorhanden sind, sonst false + */ + public boolean hasChildren() { + if (current == null) { + return doc.hasRootElement(); + } else { + return current.getChildren().size()>0; + } + } + + /** + * Ermittelt die Namen aller Kinder des Elements und gibt die Namen als ein Array von Strings zurück. + * Dies ist dasselbe wie das Durchlaufen und Aufrufen von getName() auf jedem untergeordneten Element einzeln. + * @return Liste aller Namen der Kinder + */ + public String[] listChildren() { + if (current == null) { + if(doc.hasRootElement()) { + String[] names = new String[0]; + names[0] = doc.getRootElement().getName(); + return names; + } else { + return null; + } + } else { + List ch_element = current.getChildren(); + String[] names = new String[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + names[i] = ch_element.get(i).getName(); + } + return names; + } + } + + /** + * Liefert alle Kinder des Elements als Array von XML-Objekten. + * @return Array der Kinder als XML-Objekte + */ + public XML[] getChildren() { + if (current == null) { + if(doc.hasRootElement()) { + XML[] ch_xml = new XML[1]; + ch_xml[0] = new XML(doc, doc.getRootElement()); + return ch_xml; + } else { + return null; + } + } else { + List ch_element = current.getChildren(); + XML[] ch_xml = new XML[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + ch_xml[i] = new XML(doc, ch_element.get(i)); + } + return ch_xml; + } + } + + /** + * Liefert bestimmte Kinder des Elements als Array von XML-Objekten. + * Die Methode gibt dabei alle Kinder zurück, die dem angegebenen Namen entsprechen. + * @param name Name der gesuchten Kind-Objekte + * @return Array der Kinder als XML-Objekte + */ + public XML[] getChildren(String name) { + if (current == null) { + if(doc.hasRootElement()) { + XML[] ch_xml = new XML[1]; + ch_xml[0] = new XML(doc, doc.getRootElement()); + if(doc.getRootElement().getName().equals(name)){ + return ch_xml; + } else { + return null; + } + } else { + return null; + } + } else { + List ch_element = current.getChildren(name); + XML[] ch_xml = new XML[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + ch_xml[i] = new XML(doc, ch_element.get(i)); + } + return ch_xml; + } + } + + /** + * Liefert das erste Kind des Elements mit einem bestimmten Namen. + * Die Methode gibt das erste Kind zurück, das dem angegebenen Namen entsprechen. + * @param name Name des gesuchten Kind-Objektes + * @return Kind als XML-Objekt + */ + + public XML getChild(String name) { + if (current == null) { + Element e = doc.getRootElement(); + if (e.getName().equals(name)) { + return new XML(doc, e); + } else { + return null; + } + } else { + String[] names = name.split("/"); + Element e = current; + int i = 0; + while(i < names.length) { + e = e.getChild(names[i]); + if (e==null) return null; + i++; + } + return new XML(doc, e); + } + } + + /** + * Liefert das i. Kind des Elements. + * Die Methode gibt das i. Kind des aktuellen Elements zurück. + * @param i Nummer des Kindes + * @return Kind als XML-Objekt + */ + public XML getChild(int i) { + if (current == null) { + return new XML(doc, doc.getRootElement()); + } else { + List ch_element = current.getChildren(); + if (i>=ch_element.size()) return null; + return new XML(doc, ch_element.get(i)); + } + } + + //--------------------------------------------------- Methoden für das aktuelle Element ------------------------------------------------- + /** + * Frage den Namen des aktuellen Elements ab + * @return Namen des Elements + */ + public String getName() { + if (current==null) return ""; + return current.getName(); + } + + /** + * Setze den Namen des aktuellen Elements. + * @param name Neuer Name des Elements + */ + public void setName(String name) { + if (current==null) return; + current.setName(name); + } + + /** + * liefert die Anzahl der Attribute eines Elements. + * @return Anzahl des Attribute + */ + public int getAttributeCount() { + if (current == null) return 0; + return current.getAttributes().size(); + } + + /** + * liefert zurück, ob das aktuelle Element Attribute hat . + * @return true, wenn es Attribute gibt + */ + public boolean hasAttribute() { + if (current == null) return false; + return current.getAttributes().size()>0; + } + + /** + * Ruft alle Attribute des angegebenen Elements ab und gibt sie als Array von Strings zurück. + * @return Liste der Attributnamen + */ + public String[] listAttributes() { + if (current == null) return null; + List attr = current.getAttributes(); + String[] names = new String[attr.size()]; + for(int i=0; i < attr.size() ; i++) { + names[i] = attr.get(i).getName(); + } + return names; + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs + */ + public String getString(String attribute) { + if (current==null) return ""; + return current.getAttributeValue(attribute); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs + */ + public String getString(String attribute, String defaultValue) { + if (current==null) return defaultValue; + return current.getAttributeValue(attribute,defaultValue); + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param text neuer Wert des Attributs + */ + public void setString(String attribute, String text) { + if (current==null) return; + current.setAttribute(attribute, text); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Integer-Zahl + */ + public int getInt(String attribute) { + if (current==null) return 0; + try{ + int i = Integer.parseInt(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als Integer-Zahl + */ + public int getInt(String attribute, int defaultValue) { + if (current==null) return defaultValue; + try{ + int i = Integer.parseInt(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setInt(String attribute, int value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Float-Zahl + */ + public float getFloat(String attribute) { + if (current==null) return 0; + try{ + float i = Float.parseFloat(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als Float-Zahl + */ + public float getFloat(String attribute, float defaultValue) { + if (current==null) return defaultValue; + try{ + float i = Float.parseFloat(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setFloat(String attribute, float value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Double-Zahl + */ + public double getDouble(String attribute) { + if (current==null) return 0; + try{ + double i = Double.parseDouble(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + +/** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als double-Zahl + */ + public double getDouble(String attribute, double defaultValue) { + if (current==null) return defaultValue; + try{ + double i = Double.parseDouble(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setDouble(String attribute, double value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt den Inhalt/Text des aktuellen Elements ab + * @return Inhalt des Elements + */ + public String getContent() { + if ( current==null) return ""; + + return current.getText(); + } + + /** + * Fragt den Inhalt/Text des aktuellen Elements ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardtext + * @return Inhalt des Elements + */ + public String getContent(String defaultValue) { + if ( current==null) return defaultValue; + String t = current.getText(); + if(t.equals("")) t = defaultValue; + return t; + } + + /** + * Setzt den Inhalt/Text des aktuellen Elements + * @param text Neuer Inhalt des Elements + */ + public void setContent(String text) { + if ( current==null) return; + current.setText(text); + } + + + /** + * Fragt den Inhalt des aktuellen Elements als Integerzahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ public int getIntContent(int defaultValue) { + if ( current==null) return defaultValue; + try{ + int i = Integer.parseInt(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Integerzahl ab + * @return Inhalt des Elements + */ + public int getIntContent() { + if ( current==null) return 0; + try{ + int i = Integer.parseInt(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setIntContent(int value) { + if ( current==null) return; + current.setText(""+value); + } + + + /** + * Fragt den Inhalt des aktuellen Elements als Floatzahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ + public float getFloatContent(float defaultValue) { + if ( current==null) return defaultValue; + try{ + float i = Float.parseFloat(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Floatzahl ab + * @return Inhalt des Elements + */ + public float getFloatContent() { + if ( current==null) return 0; + try{ + float i = Float.parseFloat(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setFloatContent(float value) { + if ( current==null) return; + current.setText(""+value); + } + +/** + * Fragt den Inhalt des aktuellen Elements als Doublezahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ + public double getDoubleContent(double defaultValue) { + if ( current==null) return defaultValue; + try{ + double i = Double.parseDouble(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Doublezahl ab + * @return Inhalt des Elements + */ + public double getDoubleContent() { + if ( current==null) return 0; + try{ + double i = Double.parseDouble(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setDoubleContent(double value) { + if ( current==null) return; + current.setText(""+value); + } + + + // ----------------------------------------------- XML-Struktur aufbauen ------------------------------------------------ + /** Erzeuge neues Element nach der aktuellen Position und setze dieses als aktuelles Element + * @param name Name des neuen Elements + * @return neues Element als XML-Objekt + */ + public XML addChild(String name) { + Element e = new Element(name); + if(current == null){ // man ist auf Root-Ebene + doc.setRootElement(e); + + } + else { + current.addContent(e); + } // end of if-else + return new XML(doc, e); + } + + /** + * liefert das aktuelle Element als jdom-Element-Objekt + * @return aktuelles Element + */ + private Element getCurrent() { + return current; + } + + /** + * löscht ein Kind des aktuellen Knotens. + * Ist kid kein Kind des aktuellen Elements passiert gar nichts. + * @param kid XML-Objekt des Kindes + */ + public void removeChild(XML kid) { + if (current == null) return; + Element e = kid.getCurrent(); + int index = current.indexOf(e); + if(index >= 0) { current.removeContent(e);} + } + +} diff --git a/04_loesungen/02_greenfoot/alg11_balkendiagramm_zufall_loesung/images/balken.png b/04_loesungen/02_greenfoot/alg11_balkendiagramm_zufall_loesung/images/balken.png new file mode 100644 index 0000000..9ff1ffc Binary files /dev/null and b/04_loesungen/02_greenfoot/alg11_balkendiagramm_zufall_loesung/images/balken.png differ diff --git a/04_loesungen/02_greenfoot/alg11_balkendiagramm_zufall_loesung/images/bilderrahmen.png b/04_loesungen/02_greenfoot/alg11_balkendiagramm_zufall_loesung/images/bilderrahmen.png new file mode 100644 index 0000000..7f34e32 Binary files /dev/null and b/04_loesungen/02_greenfoot/alg11_balkendiagramm_zufall_loesung/images/bilderrahmen.png differ diff --git a/04_loesungen/02_greenfoot/alg11_balkendiagramm_zufall_loesung/jdom-1.1.3.jar b/04_loesungen/02_greenfoot/alg11_balkendiagramm_zufall_loesung/jdom-1.1.3.jar new file mode 100644 index 0000000..a287727 Binary files /dev/null and b/04_loesungen/02_greenfoot/alg11_balkendiagramm_zufall_loesung/jdom-1.1.3.jar differ diff --git a/04_loesungen/02_greenfoot/alg11_balkendiagramm_zufall_loesung/project.greenfoot b/04_loesungen/02_greenfoot/alg11_balkendiagramm_zufall_loesung/project.greenfoot new file mode 100644 index 0000000..474718a --- /dev/null +++ b/04_loesungen/02_greenfoot/alg11_balkendiagramm_zufall_loesung/project.greenfoot @@ -0,0 +1,90 @@ +#Greenfoot project file +class.Balkendiagramm.image=balken.png +class.PictureViewer.image=bilderrahmen.png +dependency1.from=MyWorld +dependency1.to=Balkendiagramm +dependency1.type=UsesDependency +dependency2.from=PictureViewer +dependency2.to=Picture +dependency2.type=UsesDependency +dependency3.from=Table +dependency3.to=TableRow +dependency3.type=UsesDependency +dependency4.from=Picture +dependency4.to=PictureViewer +dependency4.type=UsesDependency +editor.fx.0.height=739 +editor.fx.0.width=816 +editor.fx.0.x=552 +editor.fx.0.y=100 +height=885 +package.numDependencies=4 +package.numTargets=7 +project.charset=UTF-8 +publish.hasSource=false +publish.locked=true +publish.longDesc= +publish.shortDesc= +publish.tags= +publish.title= +publish.url= +readme.height=58 +readme.name=@README +readme.width=47 +readme.x=10 +readme.y=10 +simulation.speed=97 +target1.height=50 +target1.name=PictureViewer +target1.showInterface=false +target1.type=ClassTarget +target1.width=100 +target1.x=0 +target1.y=0 +target2.height=50 +target2.name=Table +target2.showInterface=false +target2.type=ClassTarget +target2.width=80 +target2.x=0 +target2.y=0 +target3.height=50 +target3.name=Balkendiagramm +target3.showInterface=false +target3.type=ClassTarget +target3.width=120 +target3.x=0 +target3.y=0 +target4.height=50 +target4.name=Picture +target4.showInterface=false +target4.type=ClassTarget +target4.width=80 +target4.x=0 +target4.y=0 +target5.height=50 +target5.name=XML +target5.showInterface=false +target5.type=ClassTarget +target5.width=100 +target5.x=0 +target5.y=0 +target6.height=50 +target6.name=TableRow +target6.showInterface=false +target6.type=ClassTarget +target6.width=80 +target6.x=0 +target6.y=0 +target7.height=50 +target7.name=MyWorld +target7.showInterface=false +target7.type=ClassTarget +target7.width=80 +target7.x=0 +target7.y=0 +version=3.0.0 +width=1350 +world.lastInstantiated=MyWorld +xPosition=449 +yPosition=138 diff --git a/04_loesungen/02_greenfoot/alg11_balkendiagramm_zufall_loesung2/Balkendiagramm.java b/04_loesungen/02_greenfoot/alg11_balkendiagramm_zufall_loesung2/Balkendiagramm.java new file mode 100644 index 0000000..39dec29 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg11_balkendiagramm_zufall_loesung2/Balkendiagramm.java @@ -0,0 +1,73 @@ +import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot und MouseInfo) +import java.awt.Font; + +/** + * Balkendiagramm für int-Array, Zahlen werden zufällig erzeugt. + * + * @author Schaller + * @version 29.11.18 + */ +public class Balkendiagramm extends PictureViewer + +{ + // Liste mit allen Werten + int[] zahlen; + + // Schriften + Font kleineSchrift; + Font grosseSchrift; + + public Balkendiagramm() { + size(1000, 700); + background(0); + kleineSchrift = new Font( Font.SANS_SERIF, Font.PLAIN, 12 ); + grosseSchrift = new Font( Font.SANS_SERIF, Font.PLAIN, 20 ); + + // Zufallszahlen erzeugen und anzeigen + erzeugeZufallsarray(20); + + zeichneBalken(); + } + + public int getZufallszahl(int min, int max) { + java.util.Random r = new java.util.Random(); + return r.nextInt(max-min+1)+min; + } + + public void erzeugeZufallsarray(int laenge) { + // Neues Array der richtigen Länge erzeugen + zahlen = new int[laenge]; + + // Jedes Element mit einer Zufallszahl belegen + for(int i= 0; i< laenge; i++) { + zahlen[i] = getZufallszahl(1, 300); + } + } + + public void zeichneBalken() { + clear(); + + // Überschrift + fill(255,255,255); + textFont(grosseSchrift); + text("Balkendiagramm", 2, 20); + textFont(kleineSchrift); + + // Alle Einträge darstellen + if(zahlen != null) { + for (int i = 0; i< zahlen.length; i++) { + + fill(20,30,170); + + // Balkendiagramm zeichnen + if(zahlen[i]>=0) rect(120, 25+i*15, zahlen[i]+1, 13); + + // Beschriftung + fill(255,255,255); + text("i="+i, 2, 35+i*15); + text("zahlen["+i+"]="+zahlen[i], 30, 35+i*15); + } + } + } + +} diff --git a/04_loesungen/02_greenfoot/alg11_balkendiagramm_zufall_loesung2/MyWorld.java b/04_loesungen/02_greenfoot/alg11_balkendiagramm_zufall_loesung2/MyWorld.java new file mode 100644 index 0000000..11434f1 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg11_balkendiagramm_zufall_loesung2/MyWorld.java @@ -0,0 +1,36 @@ +import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot und MouseInfo) + +/** + * Ergänzen Sie hier eine Beschreibung für die Klasse MyWorld. + * + * @author (Ihr Name) + * @version (eine Versionsnummer oder ein Datum) + */ +public class MyWorld extends World +{ + + /** + * Konstruktor für Objekte der Klasse MyWorld + * + */ + public MyWorld() + { + // Erstellt eine neue Welt mit 1200x900 Pixeln + super(1000, 700, 1); + + prepare(); + } + + + /** + * Bereite die Welt für den Programmstart vor. + * Das heißt: Erzeuge die Anfangs-Objekte und füge sie der Welt hinzu. + */ + private void prepare() + { + Balkendiagramm balkendiagramm = new Balkendiagramm(); + addObject(balkendiagramm,500,350); + + } +} + diff --git a/04_loesungen/02_greenfoot/alg11_balkendiagramm_zufall_loesung2/Picture.java b/04_loesungen/02_greenfoot/alg11_balkendiagramm_zufall_loesung2/Picture.java new file mode 100644 index 0000000..8df3d55 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg11_balkendiagramm_zufall_loesung2/Picture.java @@ -0,0 +1,699 @@ +import java.awt.image.*; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.BasicStroke; +import java.util.Vector; +import javax.imageio.*; +import java.io.*; +import java.awt.*; +import javax.swing.*; +import java.util.Random; +import java.awt.geom.AffineTransform; +/** + * + * Bildklasse für die Simulation von Processing-Befehlen + * + * Diese Klasse stellt ein BufferedImage bereit, in das mit Processing-Befehlen gezeichnet + * werden kann. + * Zusätzlich kann ein Bildanzeiger über jede Änderung des Bildes informiert werden, + * um "Zurück"-Befehle zu ermöglichen. Der Bildanzeiger ist entweder eine normale Java + * ScrollPane oder ein Actor aus Greenfoot. + * Die Dokumentation der einzelnen Zeichenmethoden ist der Processing-Reference + * (https://processing.org/reference/ steht unter CC-Lizenz: https://creativecommons.org/) + * entnommen und mit Deepl.com ins Deutsche übersetzt. + * + * @version 1.0 from 23.01.2019 + * @author Thomas Schaller (ZPG Informatik Klasse 9) + */ + +public class Picture{ + + // Einstellungmöglichkeiten für das Zeichnen von Rechtecken und Ellipsen + // RADIUS = Mittelpunkt+Radius wird gegeben, CENTER = Mittelpunkt und Breite/Höhe wird gegeben, + // CORNER = Linke obere Ecke + Breite/Höhe, CORNERS = Linke obere und rechte untere Ecke + public static final int RADIUS = 1; + public static final int CENTER = 2; + public static final int CORNER = 3; + public static final int CORNERS = 4; + + // gespeichertes Bild, + private BufferedImage image; + + // aktuelle Farbeinstellungen + private Color background; + private Color pencolor; + private Color fillcolor; + + // aktuelle Stiftdicke + private double stroke; + + // akkteller Koordinatenmodus von Rechtecken und Ellipsen + private int ellipseMode = CENTER; + private int rectMode = CORNER; + + // aktueller Font + private Font textfont = null; + + // muss ein Bildanzeiger benachrichtigt werden + private PictureViewer observer = null; + private boolean autorefresh = true; + + /** + * Erzeugt ein Bild mit Standardgröße 500x400 + */ + public Picture() { + this(500,400); + } + + /** + * Erzeugt ein Bild der angegeben Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public Picture(int width, int height) { + this(width,height, "D0D0D0"); + } + + /** + * Erzeugt ein Bild aus einer Datei + * @param filename Dateiname des Bildes + */ + public Picture(String filename) { + load(filename); + } + + /** + * Erzeugt ein Bild der angegebenen Größe mit festgelegtem Hintergrund + * @param width Breite des Bildes + * @param height Höhe des Bildes + * @param background Farbe des Hintergrunds + */ + public Picture(int width, int height, String background) { + this.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + this.background = decode(background); + this.pencolor = new Color(0,0,0); + this.stroke = 1; + this.fillcolor = null; + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(this.background); + g.fillRect(0,0,width-1, height-1); + } + + /** + * Legt fest, wer das Bild anzeigt. + * Diese ermöglicht die Benachrichtung des Observers, wenn sich das Bild ändert. + * @param observer Anzeiger des Bildes + */ + + public void setObserver(PictureViewer observer) { + this.observer= observer; + } + + /** + * Direktes Setzen des Bildes (für interne Zwecke) + * @param b Bild, das gespeichert werden soll. + */ + public void setImage(BufferedImage b) { + image = b; + } + + /** + * Direktes Abfragen des Bildes (für interne Zwecke) + * @return Bild, das gerade gespeichert ist. + */ + public BufferedImage getImage() { + return image; + } + + /** + * Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + * Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + * der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu. + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public void size(int width, int height){ + pushImage(); + this.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(background); + g.fillRect(0,0,width-1, height-1); + } + + /** + * Liefert die Breite des Bildes zurück. + * @return Breite des Bildes + */ + public int getWidth() { + return image.getWidth(); + } + + /** + * Liefert die Höhe des Bildes zurück. + * @return Höhe des Bildes + */ + public int getHeight() { + return image.getHeight(); + } + + + /** + * Erzeugt eine Kopie des Bildes und übergibt sie an den Observer (falls existent), damit dieser die Versionen speichern kann + */ + private void pushImage() { + if(observer != null) { + observer.pushImage(); + } + } + + + /** + * Legt fest, ob nach jedem Zeichenbefehl automatisch das Bild auch in + * der Oberfläche aktualisiert wird. Die Einstellung "false" beschleunigt + * das Zeichnen aufwändiger Bilder und verhindert "Flackern". + * Das Neuzeichnen kann durch die Methode "refresh" gezielt ausgelöst werden. + * @param autorefresh true = nach jedem Zeichenbefehl die Anzeige aktualisieren, false= nur durch die Methode refresh neu zeichnen + */ + public void setAutoRefresh(boolean autoRefresh) { + this.autorefresh = autoRefresh; + } + + + /** + * Auch die anzeigenden Klasse wird zum Neuzeichnen aufgefordert. + */ + private void repaint() { + if(observer != null && autorefresh) { + observer.repaint(); + } + } + + /** + * Auch die anzeigenden Klasse wird zum Neuzeichnen aufgefordert. + */ + public void refresh() { + if(observer != null) { + observer.repaint(); + } + } + + // ----------------------------------------- Zeichenfunktionen ----------------------------------------------- + /** + * Löscht den Inhalt des Bildes. + * Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt. + */ + + public void clear(){ + pushImage(); + image = new BufferedImage(image.getWidth(), image.getHeight(), image.getType()); + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(background); + g.fillRect(0,0,image.getWidth()-1, image.getHeight()-1); + repaint(); + } + + /** + * Konvertiert die in einem bestimmten Modus gegebenen Koordinaten in die Java-übliche Links_Oben_Breite_Höhe Version + * Die Änderungen werden direkt im Array vorgenommen + * @param coord Array mit vier Koordinateneinträgen im gegebenen Modus + * @param mode Modus der Koordinaten (CORNER, CORNERS, RADIUS oder CENTER) + */ + private void convert(int[] coord, int mode) { + switch(mode) { + case CORNER: break; + case CORNERS: coord[2] -= coord[0]; coord[3] -= coord[1]; break; + case RADIUS: coord[2] *= 2; coord[3] *=2; + case CENTER: coord[0] -= coord[2]/2; coord[1] -= coord[3]/2; + } + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + * Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + * Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void rectMode(int mode) { + rectMode = mode; + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + * Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + * Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als Breite und Höhe der Form. + * ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void ellipseMode(int mode) { + ellipseMode = mode; + } + + + + /** + * Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + * Um eine Linie einzufärben, verwenden Sie die {@link #stroke(int, int, int) stroke()} Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + * Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + * {@link #strokeWeight(double) strokeWeight()} geändert werden. + * @param x1 x-Koordinate des 1. Punktes + * @param y1 y-Koordinate des 1. Punktes + * @param x2 x-Koordinate des 2. Punktes + * @param y2 y-Koordinate des 2. Punktes + */ + public void line(int x1, int y1, int x2, int y2) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + if (stroke > 0) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawLine(x1, y1, x2, y2); + } + repaint(); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, rectMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillRect(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawRect(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, ellipseMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillOval(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawOval(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + int px[] = {x1, x2, x3}; + int py[] = {y1, y2, y3}; + polygon(px, py); + + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + + int px[] = {x1, x2, x3, x4}; + int py[] = {y1, y2, y3, y4}; + polygon(px, py); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + + public void polygon(int[] x, int[] y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(fillcolor != null) { + + g.setColor(fillcolor); + g.fillPolygon(x,y, y.length); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawPolygon(x, y, x.length); + } + repaint(); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + ellipse(x,y,1, 1); + + } + + // ----------------------------------------- Schriftdarstellung ----------------------------------------------- + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param s Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String s, int x, int y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(pencolor != null) { + g.setColor(fillcolor); + g.setStroke(new BasicStroke((float) stroke)); + g.setFont(textfont); + g.drawString(s, x, y); + } + repaint(); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + this.textfont = font; + } + + + // ----------------------------------------- Farbfestlegungen ----------------------------------------------- + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(String color) { + try{ + return new Color( + Integer.valueOf( color.substring( 0, 2 ), 16 ), + Integer.valueOf( color.substring( 2, 4 ), 16 ), + Integer.valueOf( color.substring( 4, 6 ), 16 ) ); + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(int color) { + try{ + if(color >=0 && color < 256) { + return new Color(color,color,color); + } else { + int r = color / 0x010000 % 0xFF; + int g = color / 0x000100 % 0xFF; + int b = color % 0xFF; + System.out.println(""+r+","+g+","+b); + return new Color(r, g, b ); + } + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + this.pencolor = decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + this.pencolor=decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + this.pencolor = new Color(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + this.pencolor = null; + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + this.stroke = width; + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + this.fillcolor = decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + this.fillcolor=decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + this.fillcolor = new Color(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + this.fillcolor = null; + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + if(c < 256) { + this.background=new Color(c,c,c); + } else { + int r = c / 0x010000; + int g = c / 0x000100 % 0xFF; + int b = c % 0xFF; + this.background= new Color(r, g, b ); + } + + this.clear(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + this.background=new Color(r,g,b); + this.clear(); + } + + +// ----------------------------------------- Dateioperationen ----------------------------------------------- + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + try{ + this.image = ImageIO.read(new File(filename)); + this.background = decode("D0D0D0"); + this.pencolor = new Color(0,0,0); + this.fillcolor = null; + this.stroke = 1; + this.repaint(); + + } catch(Exception e) { + System.out.println("Fehler beim Einlesen der Bilddatei"); + } + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + try{ + String[] fn = filename.split("\\."); + if (fn.length== 1) { + ImageIO.write(image, "PNG", new File(filename+".png")); + } else { + + if (fn.length == 2 && (fn[1].toUpperCase().equals("PNG") || + fn[1].toUpperCase().equals("GIF"))){ + ImageIO.write(image, fn[1], new File(filename)); + }else { + System.out.println("Unbekanntes Bildformat"); + } + } + + } catch(Exception e) { + System.out.println("Fehler beim Speichern"); + } + } + + +// ----------------------------------------- Sonstiges ----------------------------------------------- + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + + public Color[][] getPixelArray() { + Color[][] pixel = new Color[image.getWidth()][image.getHeight()]; + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + pixel[x][y] = new java.awt.Color(image.getRGB(x,y)); + } + } + return pixel; + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + size(pixel.length,pixel[0].length); + Graphics2D g = (Graphics2D) image.getGraphics(); + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + g.setColor(pixel[x][y]); + g.fillRect(x, y, 1, 1); + } + } + repaint(); + } + + /** + * Hilfsfunktion zum Verzögern der Ausgabe + * @param millis Wartezeit in Millisekunden + */ + public void delay(int millis) { + try{ + Thread.sleep(millis); + + } catch(Exception e) { + + } + + } + + + +} diff --git a/04_loesungen/02_greenfoot/alg11_balkendiagramm_zufall_loesung2/PictureViewer.java b/04_loesungen/02_greenfoot/alg11_balkendiagramm_zufall_loesung2/PictureViewer.java new file mode 100644 index 0000000..ecbb521 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg11_balkendiagramm_zufall_loesung2/PictureViewer.java @@ -0,0 +1,499 @@ +import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot und MouseInfo) +import java.awt.image.*; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.BasicStroke; +import java.awt.Font; +import java.util.Vector; +import java.awt.Color; +import javax.imageio.*; +import java.io.*; + +/** + * Der PictureViewer ist ein Actor, der in der Lage ist ein + * Objekt der Klasse Picture anzuzeigen. Zusätzlich können + * mehrere Verarbeitungsschritte gespeichert werden, um ein + * "zurück"-Funktion zu ermöglichen. + * + * @author Thomas Schaller + * @version V1.0 vom 10.02.2019 + */ +public class PictureViewer extends Actor +{ + public static final int FIT = -1; + public static final int NORMAL = 1; + + private static final int ANZ_BACK = 0; + + private double zoom; + protected Picture picture = null; + private Vector history; + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der Größe 500x400 + */ + public PictureViewer() { + this(500,400); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public PictureViewer(int width, int height) { + this(width,height, "D0D0D0"); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + * @param background Farbe des Hintergrunds als HEX-String (z.B. "FF3A45") + */ + public PictureViewer(int width, int height, String background) { + picture = new Picture(width,height, background); + picture.setObserver(this); + this.history = new Vector(); + this.zoom = NORMAL; + repaint(); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild aus einer Bilddatei + * @param filename Name des Bildes + */ + public PictureViewer(String filename) { + picture = new Picture(filename); + picture.setObserver(this); + this.history = new Vector(); + this.zoom = NORMAL; + repaint(); + } + + /** + * Speichert das übergebene Bild in der History. + * @param b zu speicherndes Bild + */ + public void pushImage() { + if( this.ANZ_BACK > 0) { + if(history.size() == this.ANZ_BACK) { + history.removeElementAt(0); + } + + BufferedImage b = new BufferedImage(picture.getWidth(), picture.getHeight(), picture.getImage().getType()); + Graphics g = b.getGraphics(); + g.drawImage(picture.getImage(), 0, 0, null); + g.dispose(); + + history.add(b); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + private void popImage() { + int anz = history.size(); + if(anz>0) { + BufferedImage i = history.get(anz-1); + history.removeElementAt(anz-1); + picture.setImage(i); + repaint(); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + public void back() { + popImage(); + } + + /** + * Setzt den Zoom-Faktor für das Bild. + * Als Zoomfaktor sind auch die Konstanten Bildanzeiger.FIT (auf Bildschirmgröße zoomen) und Bildanzeiger.NORMAL (100%) möglich. + * @param factor Zoomfaktor (1.0 = 100%). + */ + public void setZoom(double zoom) { + this.zoom = zoom; + repaint(); + } + + /** + * Setzt die automatische Neuanzeige des Bildes. + * Mit dieser Methode kann man einstellen, ob nach jedem Zeichenbefehl + * die Anzeige auf dem Bildschirm aktualisiert werden soll. Bei sehr + * vielen Zeichenbefehlen wird die Ausgabe dadurch sehr langsam. Es reicht + * eine Anzeige am Ende der Zeichenbefehle. Rufen Sie dann für das Neuzeichnen + * die Methode refresh() auf. + * @param autoRefresh true, wenn nach jedem Zeichenbefehl die Anzeige aktualisiert werden soll. + */ + public void setAutoRefresh(boolean autoRefresh) { + picture.setAutoRefresh(autoRefresh); + } + + /** + * Sorgt für die Aktualisierung der Bildschrimanzeige. Das aktuelle Bild + * wird dadurch angezeigt. Durch Einstellung von autoRefresh kann die + * Anzeige automatisiert werden. + */ + public void refresh() { + repaint(); + } + + /** + * Setzt das angezeigt Bild neu und beachtet dabei den Zoomfaktor. + */ + public void repaint() { + double faktor = zoom; + + if (zoom == FIT) { + double faktorw = (double) this.getWorld().getWidth() / picture.getWidth(); + double faktorh = (double) this.getWorld().getHeight() / picture.getHeight(); + faktor = Math.min(faktorw, faktorh); + } + int gfi_width = (int) (picture.getWidth()*faktor); + int gfi_height = (int) (picture.getHeight()*faktor); + + setImage(new GreenfootImage(gfi_width, gfi_height)); + Graphics2D g = (Graphics2D) this.getImage().getAwtImage().getGraphics(); + g.drawImage(picture.getImage(),0,0,gfi_width, gfi_height, 0, 0, picture.getWidth(), picture.getHeight(), null); + g.setColor(new java.awt.Color(0,0,0)); + g.setStroke(new BasicStroke((float) 1)); + g.drawRect(0,0,gfi_width-1, gfi_height-1); + + } + + // Wrappermethoden + /** + * Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + * Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + * der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu. + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public void size(int width, int height){ + picture.size(width, height); + } + + /** + * Liefert die Breite des Bildes zurück. + * @return Breite des Bildes + */ + public int getImageWidth() { + return picture.getWidth(); + } + + /** + * Liefert die Höhe des Bildes zurück. + * @return Höhe des Bildes + */ + public int getImageHeight() { + return picture.getHeight(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + picture.background(c); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + picture.background(r,g,b); + } + + /** + * Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + * Um eine Linie einzufärben, verwenden Sie die {@link #stroke(int, int, int) stroke()} Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + * Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + * {@link #strokeWeight(double) strokeWeight()} geändert werden. + * @param x1 x-Koordinate des 1. Punktes + * @param y1 y-Koordinate des 1. Punktes + * @param x2 x-Koordinate des 2. Punktes + * @param y2 y-Koordinate des 2. Punktes + */ + public void line(int x1, int y1, int x2, int y2) { + picture.line(x1,y1,x2,y2); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + picture.rect(a,b,c,d); + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + picture.ellipse(a,b,c,d); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + picture.triangle(x1,y1,x2,y2,x3,y3); + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + picture.quad(x1,y1,x2,y2,x3,y3,x4,y4); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + public void polygon(int[] x, int[] y) { + picture.polygon(x,y); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + picture.point(x,y); + + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + * Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + * Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void rectMode(int mode) { + picture.rectMode(mode); + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + * Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + * Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als Breite und Höhe der Form. + * ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void ellipseMode(int mode) { + picture.ellipseMode(mode); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + picture.stroke(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + picture.noStroke(); + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + picture.strokeWeight(width); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + picture.fill(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + picture.noFill(); + } + + /** + * Löscht den Inhalt des Bildes. + * Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt. + */ + public void clear(){ + picture.clear(); + } + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + picture.load(filename); + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + picture.save(filename); + } + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param t Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String t, int x, int y) { + picture.text(t,x,y); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + picture.textFont(font); + } + + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + public Color[][] getPixelArray() { + return picture.getPixelArray(); + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + picture.setPixelArray(pixel); + } + + +} + diff --git a/04_loesungen/02_greenfoot/alg11_balkendiagramm_zufall_loesung2/README.TXT b/04_loesungen/02_greenfoot/alg11_balkendiagramm_zufall_loesung2/README.TXT new file mode 100644 index 0000000..4b8fadd --- /dev/null +++ b/04_loesungen/02_greenfoot/alg11_balkendiagramm_zufall_loesung2/README.TXT @@ -0,0 +1,14 @@ +------------------------------------------------------------------------ +Dies ist die README-Datei des Projekts. Hier sollten Sie Ihr Projekt +beschreiben. +Erzählen Sie dem Leser (jemand, der nichts über dieses Projekt weiss), +alles, was er/sie wissen muss. Üblicherweise sollte der Kommentar +zumindest die folgenden Angaben umfassen: +------------------------------------------------------------------------ + +PROJEKTBEZEICHNUNG: +PROJEKTZWECK: +VERSION oder DATUM: +WIE IST DAS PROJEKT ZU STARTEN: +AUTOR(EN): +BENUTZERHINWEISE: diff --git a/04_loesungen/02_greenfoot/alg11_balkendiagramm_zufall_loesung2/Table.java b/04_loesungen/02_greenfoot/alg11_balkendiagramm_zufall_loesung2/Table.java new file mode 100644 index 0000000..ee5a211 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg11_balkendiagramm_zufall_loesung2/Table.java @@ -0,0 +1,894 @@ +/** + * Die Klasse Table vereinfacht den Zugriff auf CSV-Dateien. + * Die Klassen Table und TableRow ermöglichen einen einfachen Zugriff auf tabellenbasierte + * Dokumente. + * + * @author Thomas Schaller + * @version 1.0 vom 01.02.2019 + */ + +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.ArrayList; +import java.io.*; +import java.util.Scanner; + +import org.jdom.Document; +import org.jdom.Element; +import org.jdom.Attribute; +import org.jdom.JDOMException; +import org.jdom.input.SAXBuilder; +import org.jdom.output.XMLOutputter; +import org.jdom.output.Format; + +public class Table +{ + // Standardtrennzeichen für Spalten + private static final char DEFAULT_SEPARATOR = ';'; + // Standardmarkierung für Texte + private static final char DEFAULT_QUOTE = '"'; + // Standardtrennzeichen für Dezimalzahlen + private static final char DEFAULT_COMMA = ','; + + // mögliche Spaltentypen + private static final String UNKNOWN ="UNKOWN"; + private static final String INT = "INTEGER"; + private static final String DOUBLE = "DOUBLE"; + private static final String FLOAT = "FLOAT"; + + // interne Verwaltung des Dokuments als JDOM-Document-Objekt + private Document doc; + // Verweis auf Element für Kopfzeile + private Element header; + // Ende Attribute + + /** + * Erzeugt leeres Tabellen-Dokument. + */ + public Table() { + this.doc = new Document(); + doc.setRootElement(new Element("CSV-Data")); + this.header = new Element("Header"); + doc.getRootElement().addContent(header); + } + + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei und erstellt ein Tabellenobjekt mit seinen Werten. + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public Table(String filename, String options, char separator, char quote) { + loadCSV(filename, options, separator, quote); + } + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei und erstellt ein Tabellenobjekt mit seinen Werten (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + */ + public Table(String filename, String options) { + loadCSV(filename, options); + } + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei ohne Kopfzeile und erstellt ein Tabellenobjekt mit seinen Werten (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public Table(String filename) { + loadCSV(filename); + } + + // Anfang Methoden + /** + * Liest den Inhalt einer CSV-Datei ohne Kopfzeile (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public void loadCSV(String filename) { + loadCSV(filename, ""); + } + + /** + * Liest den Inhalt einer CSV-Datei (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + */ + public void loadCSV(String filename, String options) { + loadCSV(filename, options, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** + * Liest den Inhalt einer CSV-Datei. + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public void loadCSV(String filename, String options, char separator, char quote) { + doc = new Document(); + doc.setRootElement(new Element("CSV-Data")); + header = new Element("Header"); + doc.getRootElement().addContent(header); + try { + File f = new File(filename); + Scanner scanner = new Scanner(new File(filename)); + if(options.toLowerCase().contains("header") && scanner.hasNext()) { + List entries = parseLine(scanner.nextLine(), separator, quote); + int i= 0; + for(String s : entries) { + Element entry = new Element("Column"); + header.addContent(entry); + entry.setText(s); + entry.setAttribute("type", "unknown"); + i++; + } + } + + List cols = header.getChildren(); + + while (scanner.hasNext()) { + Element line = new Element("Row"); + doc.getRootElement().addContent(line); + List entries = parseLine(scanner.nextLine(), separator, quote); + int i= 0; + + for(String s : entries) { + + if(i==cols.size()) { + Element entry = new Element("Column"); + entry.setAttribute("type", "unknown"); + header.addContent(entry); + cols = header.getChildren(); + } + + Element entry = new Element("Entry"); + entry.setText(s); + line.addContent(entry); + i++; + } + } + scanner.close(); + + } catch (Exception e) { + System.out.println("Fehler beim Lesen der CSV-Datei"); + } + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei ohne Kopfzeile (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public void saveCSV(String filename) { + saveCSV(filename, ""); + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthalten, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile haben soll, + * dann lassen Sie einfach die Option "header" weg. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile haben soll. + * @param filename Dateiname der CSV-Datei. + */ + public void saveCSV(String filename, String options) { + saveCSV(filename, options, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei. + * Wenn die Datei eine Kopfzeile enthalten, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile haben soll, + * dann lassen Sie einfach die Option "header" weg. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile haben soll. + * @param filename Dateiname der CSV-Datei. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public void saveCSV(String filename, String options, char separator, char quote){ + try{ + File f = new File(filename); + PrintStream outputFile = new PrintStream (f); + System.out.println("Speicher in : "+f.getAbsolutePath()); + List columns = header.getChildren(); + String sq = ""+quote; + String ss = ""+separator; + if(quote =='"') sq = "\""; + if(separator =='"') ss = "\""; + + if(options.toLowerCase().contains("header")) { + String h = ""; + for(Element c : columns) { + h += ss + sq + c.getText()+sq; + } + outputFile.println(h.substring(1)); + } + for(int i = 0; i parseLine(String cvsLine) { + return parseLine(cvsLine, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** HIlfsfunktion für die Analyse einer Dateizeile + * @param cvsLine Zeile aus der Datei + * @param sparator Trennzeichen für die Spalten + * @return Liste von String für die einzelnen Spalten + */ + private List parseLine(String cvsLine, char separator) { + return parseLine(cvsLine, separator, DEFAULT_QUOTE); + } + + /** HIlfsfunktion für die Analyse einer Dateizeile + * @param cvsLine Zeile aus der Datei + * @param sparator Trennzeichen für die Spalten + * @param customQuote Kennung für Strings + * @return Liste von String für die einzelnen Spalten + */ + private List parseLine(String cvsLine, char separator, char customQuote) { + + List result = new ArrayList<>(); + + //if empty, return! + if (cvsLine == null && cvsLine.isEmpty()) { + return result; + } + + //ggf. Default-Value laden + if (customQuote == ' ') { + customQuote = DEFAULT_QUOTE; + } + + if (separator == ' ') { + separator = DEFAULT_SEPARATOR; + } + + StringBuffer curVal = new StringBuffer(); + boolean inQuotes = false; + boolean startCollectChar = false; + boolean doubleQuotesInColumn = false; + + char[] chars = cvsLine.toCharArray(); + + for (char ch : chars) { + + if (inQuotes) { // aktueller Text ist in Quotes eingeschlossen + startCollectChar = true; + + if (ch == customQuote) { // Quotes werden beendet, aber Achtung bei "" => Metazeichen + inQuotes = false; + if (ch == '\"') { + doubleQuotesInColumn = true; + } + + } else { + + if (ch == '\"' && !doubleQuotesInColumn) { + doubleQuotesInColumn = true; + } else { + curVal.append(ch); + doubleQuotesInColumn = false; + } + + } + } else { + if (ch == customQuote) { + + inQuotes = true; + + //Fixed : allow "" in empty quote enclosed + if (ch == '\"'){ + if(doubleQuotesInColumn) { + curVal.append('"'); + doubleQuotesInColumn = false; + } else doubleQuotesInColumn = true; + + + } + } + else { + doubleQuotesInColumn = false; + if (ch == separator) { + + result.add(curVal.toString()); + + curVal = new StringBuffer(); + startCollectChar = false; + + } else if (ch == '\r') { + //ignore LF characters + continue; + } else if (ch == '\n') { + //the end, break! + break; + } else { + curVal.append(ch); + } + } + } + + } + result.add(curVal.toString()); + return result; + } + + /** + * Sucht die Nummer einer durch Namen gegebenen Spalte. + * @param name Name der Spalte + * @return Nummer der Spalte + */ + + private int findColumnNumber(String name) { + List columns = header.getChildren(); + int i = 0; + for(Element c : columns) { + if (c.getText().toLowerCase().equals(name.toLowerCase())) { + return i; + + } + i++; + } + return -1; + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an. + */ + public void addColumn() { + Element entry = new Element("Column"); + entry.setAttribute("type", Table.UNKNOWN); + header.addContent(entry); + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an und benennt sie. + * @param title Bezeichnung der Spalte + */ + public void addColumn(String title) { + addColumn(); + Element nc = ((List)(header.getChildren())).get(header.getChildren().size()-1); + nc.setText(title); + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an und benennt und typisiert sie. + * @param title Bezeichnung der Spalte + * @param type Typ der Spalte (UNKNOWN, DOUBLE, INTEGER, FLOAT) + */ + public void addColumn(String title, String type) { + addColumn(title); + Element nc = ((List)(header.getChildren())).get(header.getChildren().size()-1); + nc.setAttribute("type", type); + } + + /** + * Löscht eine Spalte. + * @param i Nummer der Spalte. + */ + public void removeColumn(int i) { + List lines = doc.getRootElement().getChildren(); + for(Element l : lines) { + if(l.getChildren().size()>i) l.removeContent(i); + } + } + + /** + * Löscht eine Spalte + * @param name Name der Spalte + */ + public void removeColumn(String name) { + try{ + removeColumn(findColumnNumber(name)); + } catch(Exception e) { System.out.println("Unbekannter Spaltenname");} + } + + /** + * Liefert die Anzahl der Spalten in der Tabelle + * @return Anzahl der Spalten + */ + public int getColumnCount() { + return header.getChildren().size(); + } + + /** + * Liefert die Anzahl der Zeilen in der Tabelle + * @return Anzahl der Zeilen + */ + public int getRowCount() { + return doc.getRootElement().getChildren().size()-1; + } + + /** + * Löscht alle Zeilen der Tabelle. + * Die Spaltenüberschriften und Typen bleiben erhalten. + */ + public void clearRows() { + doc.getRootElement().removeChildren("Row"); + } + + /** + * Fügt eine neue Zeile an das Ende der Tabelle an. + * @return ein TableRow-Objekt für diese neue Zeile + */ + public TableRow addRow() { + Element row = new Element("Row"); + doc.getRootElement().addContent(row); + return new TableRow(doc, row); + } + + /** + * Löscht eine Zeile + * @param i Nummer der Zeile + */ + public void removeRow(int i) { + if(i rows = doc.getRootElement().getChildren(); + return new TableRow(doc, rows.get(i+1)); + } + return null; + } + + /** + * Liefert die ganze Tabelle als Array von TableRow-Objekten + * @return Array von TableRow-Objekten + */ + public TableRow[] rows() { + TableRow[] rows = new TableRow[getRowCount()]; + for(int i = 0; i < getRowCount(); i++) { + rows[i] = getRow(i); + } + return rows; + } + + /** + * Liefert den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param column Spaltennummer + * @return Wert der Zelle + */ + public int getInt(int row, int column) { + return getRow(row).getInt(column); + } + + /** + * Liefert den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param name Name der Spalte + * @return Wert der Zelle + */ + public int getInt(int row, String name) { + return getRow(row).getInt(name); + } + + /** + * Setzt den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param column Spaltennummer + * @param value neuer Wert der Zelle + */ + public void setInt(int row, int column,int value) { + getRow(row).setInt(column, value); + } + + /** + * Setzt den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(int row, String name, int value) { + getRow(row).setInt(name, value); + } + + /** + * Liefert alle Werte einer Zeile als Integer-Array. + * @param row Nummer der Zeile + * @return int-Array, dass alle Werte der Zeile enthält + */ + public int[] getIntRow(int row) { + try{ + TableRow trow = getRow(row); + int anz = getColumnCount(); + int[] r = new int[anz]; + for(int i=0; i) (header.getChildren())).get(i).getText(); + } else { + return ""; + } + } + + /** + * Liefert die Nummer einer Spalte + * @param name Name der Spalte + * @return Nummer der Spalte + */ + public int getColumn(String name) { + List columns = header.getChildren(); + int i = 0; + while (i < columns.size()) { + if (columns.get(i).getText().toLowerCase().equals(name.toLowerCase())) { + return i; + } + i++; + } // end of while + return -1; + } + + + /** + * Erzeugt eine neue Zeile mit i Spalten + * Wenn bisher nicht genügend Spalten vorhanden sind, werden automatisch neue Spalten hinzugefügt (auch zum Header) + * @param i Anzahl der Spalten + */ + private Element buildRow(int i) { + List columns = header.getChildren(); + Element entry=null; + for(int j=0; j<=i; j++) { + + if(j==columns.size()) { + Element h = new Element("Column"); + h.setAttribute("type", "unknown"); + header.addContent(h); + columns = header.getChildren(); + } + if(j==current.getChildren().size()) { + entry = new Element("Entry"); + current.addContent(entry); + + } + + } + return entry; + + } + + /** + * Erzeugt eine neue Zeile. + * Es werden genügend Spalten erzeugt, dass ein Wert in Spalte "name" eingetragen werden kann + * @param name Name der Spalte + */ + private Element buildRow(String name) { + List columns = header.getChildren(); + int i = 0; + for(Element c: columns) { + + if(c.getText().toLowerCase().equals(name.toLowerCase())) { + return buildRow(i); + } + i++; + } + return null; + + } + + /** + * Liefert den Wert einer Zelle als String + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public String getString(int i) { + if(i >= current.getContent().size()) return ""; + Element e = (Element) current.getContent(i) ; + if(e!=null) { + return e.getText(); + } else { + return ""; + } + } + + /** + * Liefert den Wert einer Zelle als String + * @param name Name der Spalte + * @return Wert der Zelle + */ + public String getString(String name) { + return getString(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als String + * @param i Nummer der Spalte + * @param text neuer Wert der Zelle + */ + public void setString(int i, String text) { + + Element e = buildRow(i); + if(e!=null) e.setText(text); + } + + /** + * Setzt den Wert einer Zelle als String + * @param name Name der Spalte + * @param text neuer Wert der Zelle + */ + public void setString(String name, String text) { + Element e = buildRow(name); + if(e!=null) e.setText(text); + } + + + /** + * Liefert den Wert einer Zelle als Int-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public int getInt(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Integer.parseInt(e.getText()); + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Int-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public int getInt(String name) { + return getInt(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Int-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(int i,int value) { + + Element e = buildRow(i); + if(e!=null) e.setText(""+value); + } + + /** + * Setzt den Wert einer Zelle als Int-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(String name, int value) { + Element e = buildRow(name); + if(e!=null) e.setText(""+value); + } + + /** + * Liefert den Wert einer Zelle als Float-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public float getFloat(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Float.parseFloat(e.getText().replace(",",".")); + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Float-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public float getFloat(String name) { + return getFloat(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Float-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setFloat(int i,float value) { + + Element e = buildRow(i); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Setzt den Wert einer Zelle als Float-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setFloat(String name, float value) { + Element e = buildRow(name); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Liefert den Wert einer Zelle als Double-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public double getDouble(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Double.parseDouble(e.getText().replace(",",".")); + + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Double-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public double getDouble(String name) { + return getDouble(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Double-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setDouble(int i,double value) { + + Element e = buildRow(i); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Setzt den Wert einer Zelle als Double-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setDouble(String name, double value) { + Element e = buildRow(name); + if(e!=null) e.setText(format.format(value)); + } + +} diff --git a/04_loesungen/02_greenfoot/alg11_balkendiagramm_zufall_loesung2/XML.java b/04_loesungen/02_greenfoot/alg11_balkendiagramm_zufall_loesung2/XML.java new file mode 100644 index 0000000..c06c490 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg11_balkendiagramm_zufall_loesung2/XML.java @@ -0,0 +1,637 @@ +/** + * Klasse zum Vereinfachten Zugriff auf XML-Dokumente + * Diese Klasse ist für den Einsatz in der Schule gedacht und soll den Schülern + * einen einfachen Zugriff auf XML-Dokumente ermöglichen. Die zur Verfügung + * stehenden Befehle sind wie in Processing realisiert. + * Dabei ist jeder Teilbaum des Dokuments wieder als XML-Objekt zugreifbar, das + * intern auf die gleiche XML-Dokumentstruktur zugreift. + * Dies ermöglicht bei unsachgemäßem Gebrauch die XML-Struktur zu zerstören. Im + * normalen Gebrauch sollte dies aber nicht relevant sein. + * + * Benötigt: jdom-1.1.3.jar + + * @author Thomas Schaller + * @version 1.0 vom 31.01.2019 + */ +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.ArrayList; +import java.io.*; + +import org.jdom.Document; +import org.jdom.Element; +import org.jdom.Attribute; +import org.jdom.JDOMException; +import org.jdom.input.SAXBuilder; +import org.jdom.output.XMLOutputter; +import org.jdom.output.Format; + +public class XML { + // Anfang Attribute + // XML-Dokumentstruktur + private Document doc; + // Zeiger auf das aktuelle Element + private Element current; + // Ende Attribute + + /** + * Erzeugt ein leeres XMLDokument + */ + public XML() { + this.doc = new Document(); + this.current = null; + } + + /** + * Erzeugt ein XML-Dokument aus einer Datei + * @param filename Dateiname der XML-Datei + */ + public XML(String filename) { + loadXML(filename); + } + + /** + * interner Konstruktor, um ein XML Objekt zu erzeugen, das auf einen bestimmten Knoten verweist + * @param doc die XML-Dokumentstruktur + * @param current Zeiger auf das aktuelle Element + */ + private XML(Document doc, Element current) { + this.doc = doc; + this.current = current; + } + + // Anfang Methoden + /** Öffnet das durch den Dateinamen gegebene Dokument + * @param filename Dateiname des XML-Files + */ + public void loadXML(String filename) { + doc = null; + File f = new File(filename); + + try { + // Das Dokument erstellen + SAXBuilder builder = new SAXBuilder(); + doc = builder.build(f); + + } catch (JDOMException e) { + e.printStackTrace(); + + } catch (IOException e) { + e.printStackTrace(); + } + // Zeiger im Baum auf Root-Element + current = doc.getRootElement(); + } + + /** Speichert den XML-Baum im angegebenen Dateinamen + * @param filename Dateiname des XML-Files + */ + public void saveXML(String filename) { + try { + // new XMLOutputter().output(doc, System.out); + XMLOutputter xmlOutput = new XMLOutputter(); + + // display nice nice + xmlOutput.setFormat(Format.getPrettyFormat()); + File f = new File(filename); + FileOutputStream outputFile = new FileOutputStream(f); + System.out.println("Speicher in : "+f.getAbsolutePath() ); + xmlOutput.output(doc, outputFile); + outputFile.close(); + System.out.println("File Saved!"); + } catch (IOException io) { + System.out.println(io.getMessage()); + } + + } + + //----------------------------------------------- Zeigerbewegungen -------------------------------------------------- + /** + * liefert ein XML-Objekt, das auf den Vaterknoten des aktuellen Elements zeigt. + * @return Vater des aktuellen Objekts. + */ + public XML getParent() { + if(current != null) { + Element parent = current.getParentElement(); + if (parent == null) { + return null; + } else { + return new XML(doc, parent); + } + } + return null; + } + + /** + * Überprüft, ob das Element irgendwelche Kinder hat oder nicht, und gibt das Ergebnis als boolean zurück. + * @return true, wenn Kinder vorhanden sind, sonst false + */ + public boolean hasChildren() { + if (current == null) { + return doc.hasRootElement(); + } else { + return current.getChildren().size()>0; + } + } + + /** + * Ermittelt die Namen aller Kinder des Elements und gibt die Namen als ein Array von Strings zurück. + * Dies ist dasselbe wie das Durchlaufen und Aufrufen von getName() auf jedem untergeordneten Element einzeln. + * @return Liste aller Namen der Kinder + */ + public String[] listChildren() { + if (current == null) { + if(doc.hasRootElement()) { + String[] names = new String[0]; + names[0] = doc.getRootElement().getName(); + return names; + } else { + return null; + } + } else { + List ch_element = current.getChildren(); + String[] names = new String[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + names[i] = ch_element.get(i).getName(); + } + return names; + } + } + + /** + * Liefert alle Kinder des Elements als Array von XML-Objekten. + * @return Array der Kinder als XML-Objekte + */ + public XML[] getChildren() { + if (current == null) { + if(doc.hasRootElement()) { + XML[] ch_xml = new XML[1]; + ch_xml[0] = new XML(doc, doc.getRootElement()); + return ch_xml; + } else { + return null; + } + } else { + List ch_element = current.getChildren(); + XML[] ch_xml = new XML[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + ch_xml[i] = new XML(doc, ch_element.get(i)); + } + return ch_xml; + } + } + + /** + * Liefert bestimmte Kinder des Elements als Array von XML-Objekten. + * Die Methode gibt dabei alle Kinder zurück, die dem angegebenen Namen entsprechen. + * @param name Name der gesuchten Kind-Objekte + * @return Array der Kinder als XML-Objekte + */ + public XML[] getChildren(String name) { + if (current == null) { + if(doc.hasRootElement()) { + XML[] ch_xml = new XML[1]; + ch_xml[0] = new XML(doc, doc.getRootElement()); + if(doc.getRootElement().getName().equals(name)){ + return ch_xml; + } else { + return null; + } + } else { + return null; + } + } else { + List ch_element = current.getChildren(name); + XML[] ch_xml = new XML[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + ch_xml[i] = new XML(doc, ch_element.get(i)); + } + return ch_xml; + } + } + + /** + * Liefert das erste Kind des Elements mit einem bestimmten Namen. + * Die Methode gibt das erste Kind zurück, das dem angegebenen Namen entsprechen. + * @param name Name des gesuchten Kind-Objektes + * @return Kind als XML-Objekt + */ + + public XML getChild(String name) { + if (current == null) { + Element e = doc.getRootElement(); + if (e.getName().equals(name)) { + return new XML(doc, e); + } else { + return null; + } + } else { + String[] names = name.split("/"); + Element e = current; + int i = 0; + while(i < names.length) { + e = e.getChild(names[i]); + if (e==null) return null; + i++; + } + return new XML(doc, e); + } + } + + /** + * Liefert das i. Kind des Elements. + * Die Methode gibt das i. Kind des aktuellen Elements zurück. + * @param i Nummer des Kindes + * @return Kind als XML-Objekt + */ + public XML getChild(int i) { + if (current == null) { + return new XML(doc, doc.getRootElement()); + } else { + List ch_element = current.getChildren(); + if (i>=ch_element.size()) return null; + return new XML(doc, ch_element.get(i)); + } + } + + //--------------------------------------------------- Methoden für das aktuelle Element ------------------------------------------------- + /** + * Frage den Namen des aktuellen Elements ab + * @return Namen des Elements + */ + public String getName() { + if (current==null) return ""; + return current.getName(); + } + + /** + * Setze den Namen des aktuellen Elements. + * @param name Neuer Name des Elements + */ + public void setName(String name) { + if (current==null) return; + current.setName(name); + } + + /** + * liefert die Anzahl der Attribute eines Elements. + * @return Anzahl des Attribute + */ + public int getAttributeCount() { + if (current == null) return 0; + return current.getAttributes().size(); + } + + /** + * liefert zurück, ob das aktuelle Element Attribute hat . + * @return true, wenn es Attribute gibt + */ + public boolean hasAttribute() { + if (current == null) return false; + return current.getAttributes().size()>0; + } + + /** + * Ruft alle Attribute des angegebenen Elements ab und gibt sie als Array von Strings zurück. + * @return Liste der Attributnamen + */ + public String[] listAttributes() { + if (current == null) return null; + List attr = current.getAttributes(); + String[] names = new String[attr.size()]; + for(int i=0; i < attr.size() ; i++) { + names[i] = attr.get(i).getName(); + } + return names; + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs + */ + public String getString(String attribute) { + if (current==null) return ""; + return current.getAttributeValue(attribute); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs + */ + public String getString(String attribute, String defaultValue) { + if (current==null) return defaultValue; + return current.getAttributeValue(attribute,defaultValue); + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param text neuer Wert des Attributs + */ + public void setString(String attribute, String text) { + if (current==null) return; + current.setAttribute(attribute, text); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Integer-Zahl + */ + public int getInt(String attribute) { + if (current==null) return 0; + try{ + int i = Integer.parseInt(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als Integer-Zahl + */ + public int getInt(String attribute, int defaultValue) { + if (current==null) return defaultValue; + try{ + int i = Integer.parseInt(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setInt(String attribute, int value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Float-Zahl + */ + public float getFloat(String attribute) { + if (current==null) return 0; + try{ + float i = Float.parseFloat(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als Float-Zahl + */ + public float getFloat(String attribute, float defaultValue) { + if (current==null) return defaultValue; + try{ + float i = Float.parseFloat(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setFloat(String attribute, float value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Double-Zahl + */ + public double getDouble(String attribute) { + if (current==null) return 0; + try{ + double i = Double.parseDouble(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + +/** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als double-Zahl + */ + public double getDouble(String attribute, double defaultValue) { + if (current==null) return defaultValue; + try{ + double i = Double.parseDouble(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setDouble(String attribute, double value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt den Inhalt/Text des aktuellen Elements ab + * @return Inhalt des Elements + */ + public String getContent() { + if ( current==null) return ""; + + return current.getText(); + } + + /** + * Fragt den Inhalt/Text des aktuellen Elements ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardtext + * @return Inhalt des Elements + */ + public String getContent(String defaultValue) { + if ( current==null) return defaultValue; + String t = current.getText(); + if(t.equals("")) t = defaultValue; + return t; + } + + /** + * Setzt den Inhalt/Text des aktuellen Elements + * @param text Neuer Inhalt des Elements + */ + public void setContent(String text) { + if ( current==null) return; + current.setText(text); + } + + + /** + * Fragt den Inhalt des aktuellen Elements als Integerzahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ public int getIntContent(int defaultValue) { + if ( current==null) return defaultValue; + try{ + int i = Integer.parseInt(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Integerzahl ab + * @return Inhalt des Elements + */ + public int getIntContent() { + if ( current==null) return 0; + try{ + int i = Integer.parseInt(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setIntContent(int value) { + if ( current==null) return; + current.setText(""+value); + } + + + /** + * Fragt den Inhalt des aktuellen Elements als Floatzahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ + public float getFloatContent(float defaultValue) { + if ( current==null) return defaultValue; + try{ + float i = Float.parseFloat(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Floatzahl ab + * @return Inhalt des Elements + */ + public float getFloatContent() { + if ( current==null) return 0; + try{ + float i = Float.parseFloat(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setFloatContent(float value) { + if ( current==null) return; + current.setText(""+value); + } + +/** + * Fragt den Inhalt des aktuellen Elements als Doublezahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ + public double getDoubleContent(double defaultValue) { + if ( current==null) return defaultValue; + try{ + double i = Double.parseDouble(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Doublezahl ab + * @return Inhalt des Elements + */ + public double getDoubleContent() { + if ( current==null) return 0; + try{ + double i = Double.parseDouble(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setDoubleContent(double value) { + if ( current==null) return; + current.setText(""+value); + } + + + // ----------------------------------------------- XML-Struktur aufbauen ------------------------------------------------ + /** Erzeuge neues Element nach der aktuellen Position und setze dieses als aktuelles Element + * @param name Name des neuen Elements + * @return neues Element als XML-Objekt + */ + public XML addChild(String name) { + Element e = new Element(name); + if(current == null){ // man ist auf Root-Ebene + doc.setRootElement(e); + + } + else { + current.addContent(e); + } // end of if-else + return new XML(doc, e); + } + + /** + * liefert das aktuelle Element als jdom-Element-Objekt + * @return aktuelles Element + */ + private Element getCurrent() { + return current; + } + + /** + * löscht ein Kind des aktuellen Knotens. + * Ist kid kein Kind des aktuellen Elements passiert gar nichts. + * @param kid XML-Objekt des Kindes + */ + public void removeChild(XML kid) { + if (current == null) return; + Element e = kid.getCurrent(); + int index = current.indexOf(e); + if(index >= 0) { current.removeContent(e);} + } + +} diff --git a/04_loesungen/02_greenfoot/alg11_balkendiagramm_zufall_loesung2/images/balken.png b/04_loesungen/02_greenfoot/alg11_balkendiagramm_zufall_loesung2/images/balken.png new file mode 100644 index 0000000..9ff1ffc Binary files /dev/null and b/04_loesungen/02_greenfoot/alg11_balkendiagramm_zufall_loesung2/images/balken.png differ diff --git a/04_loesungen/02_greenfoot/alg11_balkendiagramm_zufall_loesung2/images/bilderrahmen.png b/04_loesungen/02_greenfoot/alg11_balkendiagramm_zufall_loesung2/images/bilderrahmen.png new file mode 100644 index 0000000..7f34e32 Binary files /dev/null and b/04_loesungen/02_greenfoot/alg11_balkendiagramm_zufall_loesung2/images/bilderrahmen.png differ diff --git a/04_loesungen/02_greenfoot/alg11_balkendiagramm_zufall_loesung2/jdom-1.1.3.jar b/04_loesungen/02_greenfoot/alg11_balkendiagramm_zufall_loesung2/jdom-1.1.3.jar new file mode 100644 index 0000000..a287727 Binary files /dev/null and b/04_loesungen/02_greenfoot/alg11_balkendiagramm_zufall_loesung2/jdom-1.1.3.jar differ diff --git a/04_loesungen/02_greenfoot/alg11_balkendiagramm_zufall_loesung2/project.greenfoot b/04_loesungen/02_greenfoot/alg11_balkendiagramm_zufall_loesung2/project.greenfoot new file mode 100644 index 0000000..474718a --- /dev/null +++ b/04_loesungen/02_greenfoot/alg11_balkendiagramm_zufall_loesung2/project.greenfoot @@ -0,0 +1,90 @@ +#Greenfoot project file +class.Balkendiagramm.image=balken.png +class.PictureViewer.image=bilderrahmen.png +dependency1.from=MyWorld +dependency1.to=Balkendiagramm +dependency1.type=UsesDependency +dependency2.from=PictureViewer +dependency2.to=Picture +dependency2.type=UsesDependency +dependency3.from=Table +dependency3.to=TableRow +dependency3.type=UsesDependency +dependency4.from=Picture +dependency4.to=PictureViewer +dependency4.type=UsesDependency +editor.fx.0.height=739 +editor.fx.0.width=816 +editor.fx.0.x=552 +editor.fx.0.y=100 +height=885 +package.numDependencies=4 +package.numTargets=7 +project.charset=UTF-8 +publish.hasSource=false +publish.locked=true +publish.longDesc= +publish.shortDesc= +publish.tags= +publish.title= +publish.url= +readme.height=58 +readme.name=@README +readme.width=47 +readme.x=10 +readme.y=10 +simulation.speed=97 +target1.height=50 +target1.name=PictureViewer +target1.showInterface=false +target1.type=ClassTarget +target1.width=100 +target1.x=0 +target1.y=0 +target2.height=50 +target2.name=Table +target2.showInterface=false +target2.type=ClassTarget +target2.width=80 +target2.x=0 +target2.y=0 +target3.height=50 +target3.name=Balkendiagramm +target3.showInterface=false +target3.type=ClassTarget +target3.width=120 +target3.x=0 +target3.y=0 +target4.height=50 +target4.name=Picture +target4.showInterface=false +target4.type=ClassTarget +target4.width=80 +target4.x=0 +target4.y=0 +target5.height=50 +target5.name=XML +target5.showInterface=false +target5.type=ClassTarget +target5.width=100 +target5.x=0 +target5.y=0 +target6.height=50 +target6.name=TableRow +target6.showInterface=false +target6.type=ClassTarget +target6.width=80 +target6.x=0 +target6.y=0 +target7.height=50 +target7.name=MyWorld +target7.showInterface=false +target7.type=ClassTarget +target7.width=80 +target7.x=0 +target7.y=0 +version=3.0.0 +width=1350 +world.lastInstantiated=MyWorld +xPosition=449 +yPosition=138 diff --git a/04_loesungen/02_greenfoot/alg12_balkendiagramm_csv_loesung/Balkendiagramm.java b/04_loesungen/02_greenfoot/alg12_balkendiagramm_csv_loesung/Balkendiagramm.java new file mode 100644 index 0000000..a38d972 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg12_balkendiagramm_csv_loesung/Balkendiagramm.java @@ -0,0 +1,74 @@ +import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot und MouseInfo) +import java.awt.Font; + +/** + * Balkendiagramm für int-Array, Zahlen werden aus CSV-Datei gelesen. + * + * @author Schaller + * @version 29.11.18 + */ +public class Balkendiagramm extends PictureViewer + +{ + // Liste mit allen Werten //<>// + int[] zahlen; + String[] namen; + + // Schriften + Font kleineSchrift; + Font grosseSchrift; + + public Balkendiagramm() { + size(1000, 700); + background(0); + kleineSchrift = new Font( Font.SANS_SERIF, Font.PLAIN, 12 ); + grosseSchrift = new Font( Font.SANS_SERIF, Font.PLAIN, 20 ); + + // CSV-Datei laden und anzeigen + ladeTabelle("punkte.csv"); + + zeichneBalken(); + } + + public void ladeTabelle(String name) { + // Tabelle aus CSV-Datei laden + Table csv = new Table(name,"header",',','"'); + + // Initialisiere Arrays, in die alle Zeilen der Tabelle passen + zahlen = new int[csv.getRowCount()]; + namen = new String[csv.getRowCount()]; + + // Fülle die Arrays mit Werten aus der Tabelle + for (int i = 0; i < zahlen.length; i++) { + // Lies Wert aus der i. Zeile und der Spalte "Punkte" bzw. "Name" + zahlen[i] = csv.getInt(i,"Punkte"); + namen[i] = csv.getString(i,"Name"); + } + } + + public void zeichneBalken() { + clear(); + + // Überschrift + fill(255,255,255); + textFont(grosseSchrift); + text("Punkte", 2, 20); + textFont(kleineSchrift); + + // Alle Einträge darstellen + + for (int i = 0; i< zahlen.length; i++) { + + fill(20,30,170); + + // Balkendiagramm zeichnen + rect(120, 25+i*15, zahlen[i]+1, 13); + + // Beschriftung + fill(255,255,255); + text(namen[i], 2, 35+i*15); + text(""+zahlen[i], 70, 35+i*15); + } + } + +} diff --git a/04_loesungen/02_greenfoot/alg12_balkendiagramm_csv_loesung/MyWorld.java b/04_loesungen/02_greenfoot/alg12_balkendiagramm_csv_loesung/MyWorld.java new file mode 100644 index 0000000..11434f1 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg12_balkendiagramm_csv_loesung/MyWorld.java @@ -0,0 +1,36 @@ +import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot und MouseInfo) + +/** + * Ergänzen Sie hier eine Beschreibung für die Klasse MyWorld. + * + * @author (Ihr Name) + * @version (eine Versionsnummer oder ein Datum) + */ +public class MyWorld extends World +{ + + /** + * Konstruktor für Objekte der Klasse MyWorld + * + */ + public MyWorld() + { + // Erstellt eine neue Welt mit 1200x900 Pixeln + super(1000, 700, 1); + + prepare(); + } + + + /** + * Bereite die Welt für den Programmstart vor. + * Das heißt: Erzeuge die Anfangs-Objekte und füge sie der Welt hinzu. + */ + private void prepare() + { + Balkendiagramm balkendiagramm = new Balkendiagramm(); + addObject(balkendiagramm,500,350); + + } +} + diff --git a/04_loesungen/02_greenfoot/alg12_balkendiagramm_csv_loesung/Picture.java b/04_loesungen/02_greenfoot/alg12_balkendiagramm_csv_loesung/Picture.java new file mode 100644 index 0000000..8df3d55 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg12_balkendiagramm_csv_loesung/Picture.java @@ -0,0 +1,699 @@ +import java.awt.image.*; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.BasicStroke; +import java.util.Vector; +import javax.imageio.*; +import java.io.*; +import java.awt.*; +import javax.swing.*; +import java.util.Random; +import java.awt.geom.AffineTransform; +/** + * + * Bildklasse für die Simulation von Processing-Befehlen + * + * Diese Klasse stellt ein BufferedImage bereit, in das mit Processing-Befehlen gezeichnet + * werden kann. + * Zusätzlich kann ein Bildanzeiger über jede Änderung des Bildes informiert werden, + * um "Zurück"-Befehle zu ermöglichen. Der Bildanzeiger ist entweder eine normale Java + * ScrollPane oder ein Actor aus Greenfoot. + * Die Dokumentation der einzelnen Zeichenmethoden ist der Processing-Reference + * (https://processing.org/reference/ steht unter CC-Lizenz: https://creativecommons.org/) + * entnommen und mit Deepl.com ins Deutsche übersetzt. + * + * @version 1.0 from 23.01.2019 + * @author Thomas Schaller (ZPG Informatik Klasse 9) + */ + +public class Picture{ + + // Einstellungmöglichkeiten für das Zeichnen von Rechtecken und Ellipsen + // RADIUS = Mittelpunkt+Radius wird gegeben, CENTER = Mittelpunkt und Breite/Höhe wird gegeben, + // CORNER = Linke obere Ecke + Breite/Höhe, CORNERS = Linke obere und rechte untere Ecke + public static final int RADIUS = 1; + public static final int CENTER = 2; + public static final int CORNER = 3; + public static final int CORNERS = 4; + + // gespeichertes Bild, + private BufferedImage image; + + // aktuelle Farbeinstellungen + private Color background; + private Color pencolor; + private Color fillcolor; + + // aktuelle Stiftdicke + private double stroke; + + // akkteller Koordinatenmodus von Rechtecken und Ellipsen + private int ellipseMode = CENTER; + private int rectMode = CORNER; + + // aktueller Font + private Font textfont = null; + + // muss ein Bildanzeiger benachrichtigt werden + private PictureViewer observer = null; + private boolean autorefresh = true; + + /** + * Erzeugt ein Bild mit Standardgröße 500x400 + */ + public Picture() { + this(500,400); + } + + /** + * Erzeugt ein Bild der angegeben Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public Picture(int width, int height) { + this(width,height, "D0D0D0"); + } + + /** + * Erzeugt ein Bild aus einer Datei + * @param filename Dateiname des Bildes + */ + public Picture(String filename) { + load(filename); + } + + /** + * Erzeugt ein Bild der angegebenen Größe mit festgelegtem Hintergrund + * @param width Breite des Bildes + * @param height Höhe des Bildes + * @param background Farbe des Hintergrunds + */ + public Picture(int width, int height, String background) { + this.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + this.background = decode(background); + this.pencolor = new Color(0,0,0); + this.stroke = 1; + this.fillcolor = null; + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(this.background); + g.fillRect(0,0,width-1, height-1); + } + + /** + * Legt fest, wer das Bild anzeigt. + * Diese ermöglicht die Benachrichtung des Observers, wenn sich das Bild ändert. + * @param observer Anzeiger des Bildes + */ + + public void setObserver(PictureViewer observer) { + this.observer= observer; + } + + /** + * Direktes Setzen des Bildes (für interne Zwecke) + * @param b Bild, das gespeichert werden soll. + */ + public void setImage(BufferedImage b) { + image = b; + } + + /** + * Direktes Abfragen des Bildes (für interne Zwecke) + * @return Bild, das gerade gespeichert ist. + */ + public BufferedImage getImage() { + return image; + } + + /** + * Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + * Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + * der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu. + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public void size(int width, int height){ + pushImage(); + this.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(background); + g.fillRect(0,0,width-1, height-1); + } + + /** + * Liefert die Breite des Bildes zurück. + * @return Breite des Bildes + */ + public int getWidth() { + return image.getWidth(); + } + + /** + * Liefert die Höhe des Bildes zurück. + * @return Höhe des Bildes + */ + public int getHeight() { + return image.getHeight(); + } + + + /** + * Erzeugt eine Kopie des Bildes und übergibt sie an den Observer (falls existent), damit dieser die Versionen speichern kann + */ + private void pushImage() { + if(observer != null) { + observer.pushImage(); + } + } + + + /** + * Legt fest, ob nach jedem Zeichenbefehl automatisch das Bild auch in + * der Oberfläche aktualisiert wird. Die Einstellung "false" beschleunigt + * das Zeichnen aufwändiger Bilder und verhindert "Flackern". + * Das Neuzeichnen kann durch die Methode "refresh" gezielt ausgelöst werden. + * @param autorefresh true = nach jedem Zeichenbefehl die Anzeige aktualisieren, false= nur durch die Methode refresh neu zeichnen + */ + public void setAutoRefresh(boolean autoRefresh) { + this.autorefresh = autoRefresh; + } + + + /** + * Auch die anzeigenden Klasse wird zum Neuzeichnen aufgefordert. + */ + private void repaint() { + if(observer != null && autorefresh) { + observer.repaint(); + } + } + + /** + * Auch die anzeigenden Klasse wird zum Neuzeichnen aufgefordert. + */ + public void refresh() { + if(observer != null) { + observer.repaint(); + } + } + + // ----------------------------------------- Zeichenfunktionen ----------------------------------------------- + /** + * Löscht den Inhalt des Bildes. + * Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt. + */ + + public void clear(){ + pushImage(); + image = new BufferedImage(image.getWidth(), image.getHeight(), image.getType()); + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(background); + g.fillRect(0,0,image.getWidth()-1, image.getHeight()-1); + repaint(); + } + + /** + * Konvertiert die in einem bestimmten Modus gegebenen Koordinaten in die Java-übliche Links_Oben_Breite_Höhe Version + * Die Änderungen werden direkt im Array vorgenommen + * @param coord Array mit vier Koordinateneinträgen im gegebenen Modus + * @param mode Modus der Koordinaten (CORNER, CORNERS, RADIUS oder CENTER) + */ + private void convert(int[] coord, int mode) { + switch(mode) { + case CORNER: break; + case CORNERS: coord[2] -= coord[0]; coord[3] -= coord[1]; break; + case RADIUS: coord[2] *= 2; coord[3] *=2; + case CENTER: coord[0] -= coord[2]/2; coord[1] -= coord[3]/2; + } + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + * Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + * Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void rectMode(int mode) { + rectMode = mode; + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + * Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + * Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als Breite und Höhe der Form. + * ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void ellipseMode(int mode) { + ellipseMode = mode; + } + + + + /** + * Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + * Um eine Linie einzufärben, verwenden Sie die {@link #stroke(int, int, int) stroke()} Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + * Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + * {@link #strokeWeight(double) strokeWeight()} geändert werden. + * @param x1 x-Koordinate des 1. Punktes + * @param y1 y-Koordinate des 1. Punktes + * @param x2 x-Koordinate des 2. Punktes + * @param y2 y-Koordinate des 2. Punktes + */ + public void line(int x1, int y1, int x2, int y2) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + if (stroke > 0) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawLine(x1, y1, x2, y2); + } + repaint(); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, rectMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillRect(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawRect(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, ellipseMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillOval(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawOval(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + int px[] = {x1, x2, x3}; + int py[] = {y1, y2, y3}; + polygon(px, py); + + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + + int px[] = {x1, x2, x3, x4}; + int py[] = {y1, y2, y3, y4}; + polygon(px, py); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + + public void polygon(int[] x, int[] y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(fillcolor != null) { + + g.setColor(fillcolor); + g.fillPolygon(x,y, y.length); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawPolygon(x, y, x.length); + } + repaint(); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + ellipse(x,y,1, 1); + + } + + // ----------------------------------------- Schriftdarstellung ----------------------------------------------- + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param s Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String s, int x, int y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(pencolor != null) { + g.setColor(fillcolor); + g.setStroke(new BasicStroke((float) stroke)); + g.setFont(textfont); + g.drawString(s, x, y); + } + repaint(); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + this.textfont = font; + } + + + // ----------------------------------------- Farbfestlegungen ----------------------------------------------- + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(String color) { + try{ + return new Color( + Integer.valueOf( color.substring( 0, 2 ), 16 ), + Integer.valueOf( color.substring( 2, 4 ), 16 ), + Integer.valueOf( color.substring( 4, 6 ), 16 ) ); + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(int color) { + try{ + if(color >=0 && color < 256) { + return new Color(color,color,color); + } else { + int r = color / 0x010000 % 0xFF; + int g = color / 0x000100 % 0xFF; + int b = color % 0xFF; + System.out.println(""+r+","+g+","+b); + return new Color(r, g, b ); + } + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + this.pencolor = decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + this.pencolor=decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + this.pencolor = new Color(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + this.pencolor = null; + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + this.stroke = width; + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + this.fillcolor = decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + this.fillcolor=decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + this.fillcolor = new Color(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + this.fillcolor = null; + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + if(c < 256) { + this.background=new Color(c,c,c); + } else { + int r = c / 0x010000; + int g = c / 0x000100 % 0xFF; + int b = c % 0xFF; + this.background= new Color(r, g, b ); + } + + this.clear(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + this.background=new Color(r,g,b); + this.clear(); + } + + +// ----------------------------------------- Dateioperationen ----------------------------------------------- + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + try{ + this.image = ImageIO.read(new File(filename)); + this.background = decode("D0D0D0"); + this.pencolor = new Color(0,0,0); + this.fillcolor = null; + this.stroke = 1; + this.repaint(); + + } catch(Exception e) { + System.out.println("Fehler beim Einlesen der Bilddatei"); + } + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + try{ + String[] fn = filename.split("\\."); + if (fn.length== 1) { + ImageIO.write(image, "PNG", new File(filename+".png")); + } else { + + if (fn.length == 2 && (fn[1].toUpperCase().equals("PNG") || + fn[1].toUpperCase().equals("GIF"))){ + ImageIO.write(image, fn[1], new File(filename)); + }else { + System.out.println("Unbekanntes Bildformat"); + } + } + + } catch(Exception e) { + System.out.println("Fehler beim Speichern"); + } + } + + +// ----------------------------------------- Sonstiges ----------------------------------------------- + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + + public Color[][] getPixelArray() { + Color[][] pixel = new Color[image.getWidth()][image.getHeight()]; + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + pixel[x][y] = new java.awt.Color(image.getRGB(x,y)); + } + } + return pixel; + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + size(pixel.length,pixel[0].length); + Graphics2D g = (Graphics2D) image.getGraphics(); + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + g.setColor(pixel[x][y]); + g.fillRect(x, y, 1, 1); + } + } + repaint(); + } + + /** + * Hilfsfunktion zum Verzögern der Ausgabe + * @param millis Wartezeit in Millisekunden + */ + public void delay(int millis) { + try{ + Thread.sleep(millis); + + } catch(Exception e) { + + } + + } + + + +} diff --git a/04_loesungen/02_greenfoot/alg12_balkendiagramm_csv_loesung/PictureViewer.java b/04_loesungen/02_greenfoot/alg12_balkendiagramm_csv_loesung/PictureViewer.java new file mode 100644 index 0000000..ecbb521 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg12_balkendiagramm_csv_loesung/PictureViewer.java @@ -0,0 +1,499 @@ +import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot und MouseInfo) +import java.awt.image.*; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.BasicStroke; +import java.awt.Font; +import java.util.Vector; +import java.awt.Color; +import javax.imageio.*; +import java.io.*; + +/** + * Der PictureViewer ist ein Actor, der in der Lage ist ein + * Objekt der Klasse Picture anzuzeigen. Zusätzlich können + * mehrere Verarbeitungsschritte gespeichert werden, um ein + * "zurück"-Funktion zu ermöglichen. + * + * @author Thomas Schaller + * @version V1.0 vom 10.02.2019 + */ +public class PictureViewer extends Actor +{ + public static final int FIT = -1; + public static final int NORMAL = 1; + + private static final int ANZ_BACK = 0; + + private double zoom; + protected Picture picture = null; + private Vector history; + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der Größe 500x400 + */ + public PictureViewer() { + this(500,400); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public PictureViewer(int width, int height) { + this(width,height, "D0D0D0"); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + * @param background Farbe des Hintergrunds als HEX-String (z.B. "FF3A45") + */ + public PictureViewer(int width, int height, String background) { + picture = new Picture(width,height, background); + picture.setObserver(this); + this.history = new Vector(); + this.zoom = NORMAL; + repaint(); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild aus einer Bilddatei + * @param filename Name des Bildes + */ + public PictureViewer(String filename) { + picture = new Picture(filename); + picture.setObserver(this); + this.history = new Vector(); + this.zoom = NORMAL; + repaint(); + } + + /** + * Speichert das übergebene Bild in der History. + * @param b zu speicherndes Bild + */ + public void pushImage() { + if( this.ANZ_BACK > 0) { + if(history.size() == this.ANZ_BACK) { + history.removeElementAt(0); + } + + BufferedImage b = new BufferedImage(picture.getWidth(), picture.getHeight(), picture.getImage().getType()); + Graphics g = b.getGraphics(); + g.drawImage(picture.getImage(), 0, 0, null); + g.dispose(); + + history.add(b); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + private void popImage() { + int anz = history.size(); + if(anz>0) { + BufferedImage i = history.get(anz-1); + history.removeElementAt(anz-1); + picture.setImage(i); + repaint(); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + public void back() { + popImage(); + } + + /** + * Setzt den Zoom-Faktor für das Bild. + * Als Zoomfaktor sind auch die Konstanten Bildanzeiger.FIT (auf Bildschirmgröße zoomen) und Bildanzeiger.NORMAL (100%) möglich. + * @param factor Zoomfaktor (1.0 = 100%). + */ + public void setZoom(double zoom) { + this.zoom = zoom; + repaint(); + } + + /** + * Setzt die automatische Neuanzeige des Bildes. + * Mit dieser Methode kann man einstellen, ob nach jedem Zeichenbefehl + * die Anzeige auf dem Bildschirm aktualisiert werden soll. Bei sehr + * vielen Zeichenbefehlen wird die Ausgabe dadurch sehr langsam. Es reicht + * eine Anzeige am Ende der Zeichenbefehle. Rufen Sie dann für das Neuzeichnen + * die Methode refresh() auf. + * @param autoRefresh true, wenn nach jedem Zeichenbefehl die Anzeige aktualisiert werden soll. + */ + public void setAutoRefresh(boolean autoRefresh) { + picture.setAutoRefresh(autoRefresh); + } + + /** + * Sorgt für die Aktualisierung der Bildschrimanzeige. Das aktuelle Bild + * wird dadurch angezeigt. Durch Einstellung von autoRefresh kann die + * Anzeige automatisiert werden. + */ + public void refresh() { + repaint(); + } + + /** + * Setzt das angezeigt Bild neu und beachtet dabei den Zoomfaktor. + */ + public void repaint() { + double faktor = zoom; + + if (zoom == FIT) { + double faktorw = (double) this.getWorld().getWidth() / picture.getWidth(); + double faktorh = (double) this.getWorld().getHeight() / picture.getHeight(); + faktor = Math.min(faktorw, faktorh); + } + int gfi_width = (int) (picture.getWidth()*faktor); + int gfi_height = (int) (picture.getHeight()*faktor); + + setImage(new GreenfootImage(gfi_width, gfi_height)); + Graphics2D g = (Graphics2D) this.getImage().getAwtImage().getGraphics(); + g.drawImage(picture.getImage(),0,0,gfi_width, gfi_height, 0, 0, picture.getWidth(), picture.getHeight(), null); + g.setColor(new java.awt.Color(0,0,0)); + g.setStroke(new BasicStroke((float) 1)); + g.drawRect(0,0,gfi_width-1, gfi_height-1); + + } + + // Wrappermethoden + /** + * Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + * Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + * der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu. + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public void size(int width, int height){ + picture.size(width, height); + } + + /** + * Liefert die Breite des Bildes zurück. + * @return Breite des Bildes + */ + public int getImageWidth() { + return picture.getWidth(); + } + + /** + * Liefert die Höhe des Bildes zurück. + * @return Höhe des Bildes + */ + public int getImageHeight() { + return picture.getHeight(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + picture.background(c); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + picture.background(r,g,b); + } + + /** + * Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + * Um eine Linie einzufärben, verwenden Sie die {@link #stroke(int, int, int) stroke()} Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + * Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + * {@link #strokeWeight(double) strokeWeight()} geändert werden. + * @param x1 x-Koordinate des 1. Punktes + * @param y1 y-Koordinate des 1. Punktes + * @param x2 x-Koordinate des 2. Punktes + * @param y2 y-Koordinate des 2. Punktes + */ + public void line(int x1, int y1, int x2, int y2) { + picture.line(x1,y1,x2,y2); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + picture.rect(a,b,c,d); + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + picture.ellipse(a,b,c,d); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + picture.triangle(x1,y1,x2,y2,x3,y3); + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + picture.quad(x1,y1,x2,y2,x3,y3,x4,y4); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + public void polygon(int[] x, int[] y) { + picture.polygon(x,y); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + picture.point(x,y); + + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + * Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + * Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void rectMode(int mode) { + picture.rectMode(mode); + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + * Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + * Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als Breite und Höhe der Form. + * ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void ellipseMode(int mode) { + picture.ellipseMode(mode); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + picture.stroke(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + picture.noStroke(); + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + picture.strokeWeight(width); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + picture.fill(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + picture.noFill(); + } + + /** + * Löscht den Inhalt des Bildes. + * Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt. + */ + public void clear(){ + picture.clear(); + } + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + picture.load(filename); + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + picture.save(filename); + } + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param t Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String t, int x, int y) { + picture.text(t,x,y); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + picture.textFont(font); + } + + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + public Color[][] getPixelArray() { + return picture.getPixelArray(); + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + picture.setPixelArray(pixel); + } + + +} + diff --git a/04_loesungen/02_greenfoot/alg12_balkendiagramm_csv_loesung/README.TXT b/04_loesungen/02_greenfoot/alg12_balkendiagramm_csv_loesung/README.TXT new file mode 100644 index 0000000..4b8fadd --- /dev/null +++ b/04_loesungen/02_greenfoot/alg12_balkendiagramm_csv_loesung/README.TXT @@ -0,0 +1,14 @@ +------------------------------------------------------------------------ +Dies ist die README-Datei des Projekts. Hier sollten Sie Ihr Projekt +beschreiben. +Erzählen Sie dem Leser (jemand, der nichts über dieses Projekt weiss), +alles, was er/sie wissen muss. Üblicherweise sollte der Kommentar +zumindest die folgenden Angaben umfassen: +------------------------------------------------------------------------ + +PROJEKTBEZEICHNUNG: +PROJEKTZWECK: +VERSION oder DATUM: +WIE IST DAS PROJEKT ZU STARTEN: +AUTOR(EN): +BENUTZERHINWEISE: diff --git a/04_loesungen/02_greenfoot/alg12_balkendiagramm_csv_loesung/Table.java b/04_loesungen/02_greenfoot/alg12_balkendiagramm_csv_loesung/Table.java new file mode 100644 index 0000000..ee5a211 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg12_balkendiagramm_csv_loesung/Table.java @@ -0,0 +1,894 @@ +/** + * Die Klasse Table vereinfacht den Zugriff auf CSV-Dateien. + * Die Klassen Table und TableRow ermöglichen einen einfachen Zugriff auf tabellenbasierte + * Dokumente. + * + * @author Thomas Schaller + * @version 1.0 vom 01.02.2019 + */ + +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.ArrayList; +import java.io.*; +import java.util.Scanner; + +import org.jdom.Document; +import org.jdom.Element; +import org.jdom.Attribute; +import org.jdom.JDOMException; +import org.jdom.input.SAXBuilder; +import org.jdom.output.XMLOutputter; +import org.jdom.output.Format; + +public class Table +{ + // Standardtrennzeichen für Spalten + private static final char DEFAULT_SEPARATOR = ';'; + // Standardmarkierung für Texte + private static final char DEFAULT_QUOTE = '"'; + // Standardtrennzeichen für Dezimalzahlen + private static final char DEFAULT_COMMA = ','; + + // mögliche Spaltentypen + private static final String UNKNOWN ="UNKOWN"; + private static final String INT = "INTEGER"; + private static final String DOUBLE = "DOUBLE"; + private static final String FLOAT = "FLOAT"; + + // interne Verwaltung des Dokuments als JDOM-Document-Objekt + private Document doc; + // Verweis auf Element für Kopfzeile + private Element header; + // Ende Attribute + + /** + * Erzeugt leeres Tabellen-Dokument. + */ + public Table() { + this.doc = new Document(); + doc.setRootElement(new Element("CSV-Data")); + this.header = new Element("Header"); + doc.getRootElement().addContent(header); + } + + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei und erstellt ein Tabellenobjekt mit seinen Werten. + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public Table(String filename, String options, char separator, char quote) { + loadCSV(filename, options, separator, quote); + } + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei und erstellt ein Tabellenobjekt mit seinen Werten (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + */ + public Table(String filename, String options) { + loadCSV(filename, options); + } + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei ohne Kopfzeile und erstellt ein Tabellenobjekt mit seinen Werten (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public Table(String filename) { + loadCSV(filename); + } + + // Anfang Methoden + /** + * Liest den Inhalt einer CSV-Datei ohne Kopfzeile (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public void loadCSV(String filename) { + loadCSV(filename, ""); + } + + /** + * Liest den Inhalt einer CSV-Datei (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + */ + public void loadCSV(String filename, String options) { + loadCSV(filename, options, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** + * Liest den Inhalt einer CSV-Datei. + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public void loadCSV(String filename, String options, char separator, char quote) { + doc = new Document(); + doc.setRootElement(new Element("CSV-Data")); + header = new Element("Header"); + doc.getRootElement().addContent(header); + try { + File f = new File(filename); + Scanner scanner = new Scanner(new File(filename)); + if(options.toLowerCase().contains("header") && scanner.hasNext()) { + List entries = parseLine(scanner.nextLine(), separator, quote); + int i= 0; + for(String s : entries) { + Element entry = new Element("Column"); + header.addContent(entry); + entry.setText(s); + entry.setAttribute("type", "unknown"); + i++; + } + } + + List cols = header.getChildren(); + + while (scanner.hasNext()) { + Element line = new Element("Row"); + doc.getRootElement().addContent(line); + List entries = parseLine(scanner.nextLine(), separator, quote); + int i= 0; + + for(String s : entries) { + + if(i==cols.size()) { + Element entry = new Element("Column"); + entry.setAttribute("type", "unknown"); + header.addContent(entry); + cols = header.getChildren(); + } + + Element entry = new Element("Entry"); + entry.setText(s); + line.addContent(entry); + i++; + } + } + scanner.close(); + + } catch (Exception e) { + System.out.println("Fehler beim Lesen der CSV-Datei"); + } + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei ohne Kopfzeile (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public void saveCSV(String filename) { + saveCSV(filename, ""); + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthalten, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile haben soll, + * dann lassen Sie einfach die Option "header" weg. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile haben soll. + * @param filename Dateiname der CSV-Datei. + */ + public void saveCSV(String filename, String options) { + saveCSV(filename, options, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei. + * Wenn die Datei eine Kopfzeile enthalten, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile haben soll, + * dann lassen Sie einfach die Option "header" weg. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile haben soll. + * @param filename Dateiname der CSV-Datei. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public void saveCSV(String filename, String options, char separator, char quote){ + try{ + File f = new File(filename); + PrintStream outputFile = new PrintStream (f); + System.out.println("Speicher in : "+f.getAbsolutePath()); + List columns = header.getChildren(); + String sq = ""+quote; + String ss = ""+separator; + if(quote =='"') sq = "\""; + if(separator =='"') ss = "\""; + + if(options.toLowerCase().contains("header")) { + String h = ""; + for(Element c : columns) { + h += ss + sq + c.getText()+sq; + } + outputFile.println(h.substring(1)); + } + for(int i = 0; i parseLine(String cvsLine) { + return parseLine(cvsLine, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** HIlfsfunktion für die Analyse einer Dateizeile + * @param cvsLine Zeile aus der Datei + * @param sparator Trennzeichen für die Spalten + * @return Liste von String für die einzelnen Spalten + */ + private List parseLine(String cvsLine, char separator) { + return parseLine(cvsLine, separator, DEFAULT_QUOTE); + } + + /** HIlfsfunktion für die Analyse einer Dateizeile + * @param cvsLine Zeile aus der Datei + * @param sparator Trennzeichen für die Spalten + * @param customQuote Kennung für Strings + * @return Liste von String für die einzelnen Spalten + */ + private List parseLine(String cvsLine, char separator, char customQuote) { + + List result = new ArrayList<>(); + + //if empty, return! + if (cvsLine == null && cvsLine.isEmpty()) { + return result; + } + + //ggf. Default-Value laden + if (customQuote == ' ') { + customQuote = DEFAULT_QUOTE; + } + + if (separator == ' ') { + separator = DEFAULT_SEPARATOR; + } + + StringBuffer curVal = new StringBuffer(); + boolean inQuotes = false; + boolean startCollectChar = false; + boolean doubleQuotesInColumn = false; + + char[] chars = cvsLine.toCharArray(); + + for (char ch : chars) { + + if (inQuotes) { // aktueller Text ist in Quotes eingeschlossen + startCollectChar = true; + + if (ch == customQuote) { // Quotes werden beendet, aber Achtung bei "" => Metazeichen + inQuotes = false; + if (ch == '\"') { + doubleQuotesInColumn = true; + } + + } else { + + if (ch == '\"' && !doubleQuotesInColumn) { + doubleQuotesInColumn = true; + } else { + curVal.append(ch); + doubleQuotesInColumn = false; + } + + } + } else { + if (ch == customQuote) { + + inQuotes = true; + + //Fixed : allow "" in empty quote enclosed + if (ch == '\"'){ + if(doubleQuotesInColumn) { + curVal.append('"'); + doubleQuotesInColumn = false; + } else doubleQuotesInColumn = true; + + + } + } + else { + doubleQuotesInColumn = false; + if (ch == separator) { + + result.add(curVal.toString()); + + curVal = new StringBuffer(); + startCollectChar = false; + + } else if (ch == '\r') { + //ignore LF characters + continue; + } else if (ch == '\n') { + //the end, break! + break; + } else { + curVal.append(ch); + } + } + } + + } + result.add(curVal.toString()); + return result; + } + + /** + * Sucht die Nummer einer durch Namen gegebenen Spalte. + * @param name Name der Spalte + * @return Nummer der Spalte + */ + + private int findColumnNumber(String name) { + List columns = header.getChildren(); + int i = 0; + for(Element c : columns) { + if (c.getText().toLowerCase().equals(name.toLowerCase())) { + return i; + + } + i++; + } + return -1; + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an. + */ + public void addColumn() { + Element entry = new Element("Column"); + entry.setAttribute("type", Table.UNKNOWN); + header.addContent(entry); + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an und benennt sie. + * @param title Bezeichnung der Spalte + */ + public void addColumn(String title) { + addColumn(); + Element nc = ((List)(header.getChildren())).get(header.getChildren().size()-1); + nc.setText(title); + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an und benennt und typisiert sie. + * @param title Bezeichnung der Spalte + * @param type Typ der Spalte (UNKNOWN, DOUBLE, INTEGER, FLOAT) + */ + public void addColumn(String title, String type) { + addColumn(title); + Element nc = ((List)(header.getChildren())).get(header.getChildren().size()-1); + nc.setAttribute("type", type); + } + + /** + * Löscht eine Spalte. + * @param i Nummer der Spalte. + */ + public void removeColumn(int i) { + List lines = doc.getRootElement().getChildren(); + for(Element l : lines) { + if(l.getChildren().size()>i) l.removeContent(i); + } + } + + /** + * Löscht eine Spalte + * @param name Name der Spalte + */ + public void removeColumn(String name) { + try{ + removeColumn(findColumnNumber(name)); + } catch(Exception e) { System.out.println("Unbekannter Spaltenname");} + } + + /** + * Liefert die Anzahl der Spalten in der Tabelle + * @return Anzahl der Spalten + */ + public int getColumnCount() { + return header.getChildren().size(); + } + + /** + * Liefert die Anzahl der Zeilen in der Tabelle + * @return Anzahl der Zeilen + */ + public int getRowCount() { + return doc.getRootElement().getChildren().size()-1; + } + + /** + * Löscht alle Zeilen der Tabelle. + * Die Spaltenüberschriften und Typen bleiben erhalten. + */ + public void clearRows() { + doc.getRootElement().removeChildren("Row"); + } + + /** + * Fügt eine neue Zeile an das Ende der Tabelle an. + * @return ein TableRow-Objekt für diese neue Zeile + */ + public TableRow addRow() { + Element row = new Element("Row"); + doc.getRootElement().addContent(row); + return new TableRow(doc, row); + } + + /** + * Löscht eine Zeile + * @param i Nummer der Zeile + */ + public void removeRow(int i) { + if(i rows = doc.getRootElement().getChildren(); + return new TableRow(doc, rows.get(i+1)); + } + return null; + } + + /** + * Liefert die ganze Tabelle als Array von TableRow-Objekten + * @return Array von TableRow-Objekten + */ + public TableRow[] rows() { + TableRow[] rows = new TableRow[getRowCount()]; + for(int i = 0; i < getRowCount(); i++) { + rows[i] = getRow(i); + } + return rows; + } + + /** + * Liefert den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param column Spaltennummer + * @return Wert der Zelle + */ + public int getInt(int row, int column) { + return getRow(row).getInt(column); + } + + /** + * Liefert den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param name Name der Spalte + * @return Wert der Zelle + */ + public int getInt(int row, String name) { + return getRow(row).getInt(name); + } + + /** + * Setzt den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param column Spaltennummer + * @param value neuer Wert der Zelle + */ + public void setInt(int row, int column,int value) { + getRow(row).setInt(column, value); + } + + /** + * Setzt den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(int row, String name, int value) { + getRow(row).setInt(name, value); + } + + /** + * Liefert alle Werte einer Zeile als Integer-Array. + * @param row Nummer der Zeile + * @return int-Array, dass alle Werte der Zeile enthält + */ + public int[] getIntRow(int row) { + try{ + TableRow trow = getRow(row); + int anz = getColumnCount(); + int[] r = new int[anz]; + for(int i=0; i) (header.getChildren())).get(i).getText(); + } else { + return ""; + } + } + + /** + * Liefert die Nummer einer Spalte + * @param name Name der Spalte + * @return Nummer der Spalte + */ + public int getColumn(String name) { + List columns = header.getChildren(); + int i = 0; + while (i < columns.size()) { + if (columns.get(i).getText().toLowerCase().equals(name.toLowerCase())) { + return i; + } + i++; + } // end of while + return -1; + } + + + /** + * Erzeugt eine neue Zeile mit i Spalten + * Wenn bisher nicht genügend Spalten vorhanden sind, werden automatisch neue Spalten hinzugefügt (auch zum Header) + * @param i Anzahl der Spalten + */ + private Element buildRow(int i) { + List columns = header.getChildren(); + Element entry=null; + for(int j=0; j<=i; j++) { + + if(j==columns.size()) { + Element h = new Element("Column"); + h.setAttribute("type", "unknown"); + header.addContent(h); + columns = header.getChildren(); + } + if(j==current.getChildren().size()) { + entry = new Element("Entry"); + current.addContent(entry); + + } + + } + return entry; + + } + + /** + * Erzeugt eine neue Zeile. + * Es werden genügend Spalten erzeugt, dass ein Wert in Spalte "name" eingetragen werden kann + * @param name Name der Spalte + */ + private Element buildRow(String name) { + List columns = header.getChildren(); + int i = 0; + for(Element c: columns) { + + if(c.getText().toLowerCase().equals(name.toLowerCase())) { + return buildRow(i); + } + i++; + } + return null; + + } + + /** + * Liefert den Wert einer Zelle als String + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public String getString(int i) { + if(i >= current.getContent().size()) return ""; + Element e = (Element) current.getContent(i) ; + if(e!=null) { + return e.getText(); + } else { + return ""; + } + } + + /** + * Liefert den Wert einer Zelle als String + * @param name Name der Spalte + * @return Wert der Zelle + */ + public String getString(String name) { + return getString(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als String + * @param i Nummer der Spalte + * @param text neuer Wert der Zelle + */ + public void setString(int i, String text) { + + Element e = buildRow(i); + if(e!=null) e.setText(text); + } + + /** + * Setzt den Wert einer Zelle als String + * @param name Name der Spalte + * @param text neuer Wert der Zelle + */ + public void setString(String name, String text) { + Element e = buildRow(name); + if(e!=null) e.setText(text); + } + + + /** + * Liefert den Wert einer Zelle als Int-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public int getInt(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Integer.parseInt(e.getText()); + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Int-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public int getInt(String name) { + return getInt(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Int-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(int i,int value) { + + Element e = buildRow(i); + if(e!=null) e.setText(""+value); + } + + /** + * Setzt den Wert einer Zelle als Int-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(String name, int value) { + Element e = buildRow(name); + if(e!=null) e.setText(""+value); + } + + /** + * Liefert den Wert einer Zelle als Float-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public float getFloat(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Float.parseFloat(e.getText().replace(",",".")); + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Float-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public float getFloat(String name) { + return getFloat(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Float-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setFloat(int i,float value) { + + Element e = buildRow(i); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Setzt den Wert einer Zelle als Float-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setFloat(String name, float value) { + Element e = buildRow(name); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Liefert den Wert einer Zelle als Double-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public double getDouble(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Double.parseDouble(e.getText().replace(",",".")); + + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Double-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public double getDouble(String name) { + return getDouble(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Double-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setDouble(int i,double value) { + + Element e = buildRow(i); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Setzt den Wert einer Zelle als Double-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setDouble(String name, double value) { + Element e = buildRow(name); + if(e!=null) e.setText(format.format(value)); + } + +} diff --git a/04_loesungen/02_greenfoot/alg12_balkendiagramm_csv_loesung/XML.java b/04_loesungen/02_greenfoot/alg12_balkendiagramm_csv_loesung/XML.java new file mode 100644 index 0000000..c06c490 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg12_balkendiagramm_csv_loesung/XML.java @@ -0,0 +1,637 @@ +/** + * Klasse zum Vereinfachten Zugriff auf XML-Dokumente + * Diese Klasse ist für den Einsatz in der Schule gedacht und soll den Schülern + * einen einfachen Zugriff auf XML-Dokumente ermöglichen. Die zur Verfügung + * stehenden Befehle sind wie in Processing realisiert. + * Dabei ist jeder Teilbaum des Dokuments wieder als XML-Objekt zugreifbar, das + * intern auf die gleiche XML-Dokumentstruktur zugreift. + * Dies ermöglicht bei unsachgemäßem Gebrauch die XML-Struktur zu zerstören. Im + * normalen Gebrauch sollte dies aber nicht relevant sein. + * + * Benötigt: jdom-1.1.3.jar + + * @author Thomas Schaller + * @version 1.0 vom 31.01.2019 + */ +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.ArrayList; +import java.io.*; + +import org.jdom.Document; +import org.jdom.Element; +import org.jdom.Attribute; +import org.jdom.JDOMException; +import org.jdom.input.SAXBuilder; +import org.jdom.output.XMLOutputter; +import org.jdom.output.Format; + +public class XML { + // Anfang Attribute + // XML-Dokumentstruktur + private Document doc; + // Zeiger auf das aktuelle Element + private Element current; + // Ende Attribute + + /** + * Erzeugt ein leeres XMLDokument + */ + public XML() { + this.doc = new Document(); + this.current = null; + } + + /** + * Erzeugt ein XML-Dokument aus einer Datei + * @param filename Dateiname der XML-Datei + */ + public XML(String filename) { + loadXML(filename); + } + + /** + * interner Konstruktor, um ein XML Objekt zu erzeugen, das auf einen bestimmten Knoten verweist + * @param doc die XML-Dokumentstruktur + * @param current Zeiger auf das aktuelle Element + */ + private XML(Document doc, Element current) { + this.doc = doc; + this.current = current; + } + + // Anfang Methoden + /** Öffnet das durch den Dateinamen gegebene Dokument + * @param filename Dateiname des XML-Files + */ + public void loadXML(String filename) { + doc = null; + File f = new File(filename); + + try { + // Das Dokument erstellen + SAXBuilder builder = new SAXBuilder(); + doc = builder.build(f); + + } catch (JDOMException e) { + e.printStackTrace(); + + } catch (IOException e) { + e.printStackTrace(); + } + // Zeiger im Baum auf Root-Element + current = doc.getRootElement(); + } + + /** Speichert den XML-Baum im angegebenen Dateinamen + * @param filename Dateiname des XML-Files + */ + public void saveXML(String filename) { + try { + // new XMLOutputter().output(doc, System.out); + XMLOutputter xmlOutput = new XMLOutputter(); + + // display nice nice + xmlOutput.setFormat(Format.getPrettyFormat()); + File f = new File(filename); + FileOutputStream outputFile = new FileOutputStream(f); + System.out.println("Speicher in : "+f.getAbsolutePath() ); + xmlOutput.output(doc, outputFile); + outputFile.close(); + System.out.println("File Saved!"); + } catch (IOException io) { + System.out.println(io.getMessage()); + } + + } + + //----------------------------------------------- Zeigerbewegungen -------------------------------------------------- + /** + * liefert ein XML-Objekt, das auf den Vaterknoten des aktuellen Elements zeigt. + * @return Vater des aktuellen Objekts. + */ + public XML getParent() { + if(current != null) { + Element parent = current.getParentElement(); + if (parent == null) { + return null; + } else { + return new XML(doc, parent); + } + } + return null; + } + + /** + * Überprüft, ob das Element irgendwelche Kinder hat oder nicht, und gibt das Ergebnis als boolean zurück. + * @return true, wenn Kinder vorhanden sind, sonst false + */ + public boolean hasChildren() { + if (current == null) { + return doc.hasRootElement(); + } else { + return current.getChildren().size()>0; + } + } + + /** + * Ermittelt die Namen aller Kinder des Elements und gibt die Namen als ein Array von Strings zurück. + * Dies ist dasselbe wie das Durchlaufen und Aufrufen von getName() auf jedem untergeordneten Element einzeln. + * @return Liste aller Namen der Kinder + */ + public String[] listChildren() { + if (current == null) { + if(doc.hasRootElement()) { + String[] names = new String[0]; + names[0] = doc.getRootElement().getName(); + return names; + } else { + return null; + } + } else { + List ch_element = current.getChildren(); + String[] names = new String[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + names[i] = ch_element.get(i).getName(); + } + return names; + } + } + + /** + * Liefert alle Kinder des Elements als Array von XML-Objekten. + * @return Array der Kinder als XML-Objekte + */ + public XML[] getChildren() { + if (current == null) { + if(doc.hasRootElement()) { + XML[] ch_xml = new XML[1]; + ch_xml[0] = new XML(doc, doc.getRootElement()); + return ch_xml; + } else { + return null; + } + } else { + List ch_element = current.getChildren(); + XML[] ch_xml = new XML[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + ch_xml[i] = new XML(doc, ch_element.get(i)); + } + return ch_xml; + } + } + + /** + * Liefert bestimmte Kinder des Elements als Array von XML-Objekten. + * Die Methode gibt dabei alle Kinder zurück, die dem angegebenen Namen entsprechen. + * @param name Name der gesuchten Kind-Objekte + * @return Array der Kinder als XML-Objekte + */ + public XML[] getChildren(String name) { + if (current == null) { + if(doc.hasRootElement()) { + XML[] ch_xml = new XML[1]; + ch_xml[0] = new XML(doc, doc.getRootElement()); + if(doc.getRootElement().getName().equals(name)){ + return ch_xml; + } else { + return null; + } + } else { + return null; + } + } else { + List ch_element = current.getChildren(name); + XML[] ch_xml = new XML[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + ch_xml[i] = new XML(doc, ch_element.get(i)); + } + return ch_xml; + } + } + + /** + * Liefert das erste Kind des Elements mit einem bestimmten Namen. + * Die Methode gibt das erste Kind zurück, das dem angegebenen Namen entsprechen. + * @param name Name des gesuchten Kind-Objektes + * @return Kind als XML-Objekt + */ + + public XML getChild(String name) { + if (current == null) { + Element e = doc.getRootElement(); + if (e.getName().equals(name)) { + return new XML(doc, e); + } else { + return null; + } + } else { + String[] names = name.split("/"); + Element e = current; + int i = 0; + while(i < names.length) { + e = e.getChild(names[i]); + if (e==null) return null; + i++; + } + return new XML(doc, e); + } + } + + /** + * Liefert das i. Kind des Elements. + * Die Methode gibt das i. Kind des aktuellen Elements zurück. + * @param i Nummer des Kindes + * @return Kind als XML-Objekt + */ + public XML getChild(int i) { + if (current == null) { + return new XML(doc, doc.getRootElement()); + } else { + List ch_element = current.getChildren(); + if (i>=ch_element.size()) return null; + return new XML(doc, ch_element.get(i)); + } + } + + //--------------------------------------------------- Methoden für das aktuelle Element ------------------------------------------------- + /** + * Frage den Namen des aktuellen Elements ab + * @return Namen des Elements + */ + public String getName() { + if (current==null) return ""; + return current.getName(); + } + + /** + * Setze den Namen des aktuellen Elements. + * @param name Neuer Name des Elements + */ + public void setName(String name) { + if (current==null) return; + current.setName(name); + } + + /** + * liefert die Anzahl der Attribute eines Elements. + * @return Anzahl des Attribute + */ + public int getAttributeCount() { + if (current == null) return 0; + return current.getAttributes().size(); + } + + /** + * liefert zurück, ob das aktuelle Element Attribute hat . + * @return true, wenn es Attribute gibt + */ + public boolean hasAttribute() { + if (current == null) return false; + return current.getAttributes().size()>0; + } + + /** + * Ruft alle Attribute des angegebenen Elements ab und gibt sie als Array von Strings zurück. + * @return Liste der Attributnamen + */ + public String[] listAttributes() { + if (current == null) return null; + List attr = current.getAttributes(); + String[] names = new String[attr.size()]; + for(int i=0; i < attr.size() ; i++) { + names[i] = attr.get(i).getName(); + } + return names; + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs + */ + public String getString(String attribute) { + if (current==null) return ""; + return current.getAttributeValue(attribute); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs + */ + public String getString(String attribute, String defaultValue) { + if (current==null) return defaultValue; + return current.getAttributeValue(attribute,defaultValue); + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param text neuer Wert des Attributs + */ + public void setString(String attribute, String text) { + if (current==null) return; + current.setAttribute(attribute, text); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Integer-Zahl + */ + public int getInt(String attribute) { + if (current==null) return 0; + try{ + int i = Integer.parseInt(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als Integer-Zahl + */ + public int getInt(String attribute, int defaultValue) { + if (current==null) return defaultValue; + try{ + int i = Integer.parseInt(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setInt(String attribute, int value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Float-Zahl + */ + public float getFloat(String attribute) { + if (current==null) return 0; + try{ + float i = Float.parseFloat(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als Float-Zahl + */ + public float getFloat(String attribute, float defaultValue) { + if (current==null) return defaultValue; + try{ + float i = Float.parseFloat(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setFloat(String attribute, float value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Double-Zahl + */ + public double getDouble(String attribute) { + if (current==null) return 0; + try{ + double i = Double.parseDouble(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + +/** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als double-Zahl + */ + public double getDouble(String attribute, double defaultValue) { + if (current==null) return defaultValue; + try{ + double i = Double.parseDouble(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setDouble(String attribute, double value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt den Inhalt/Text des aktuellen Elements ab + * @return Inhalt des Elements + */ + public String getContent() { + if ( current==null) return ""; + + return current.getText(); + } + + /** + * Fragt den Inhalt/Text des aktuellen Elements ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardtext + * @return Inhalt des Elements + */ + public String getContent(String defaultValue) { + if ( current==null) return defaultValue; + String t = current.getText(); + if(t.equals("")) t = defaultValue; + return t; + } + + /** + * Setzt den Inhalt/Text des aktuellen Elements + * @param text Neuer Inhalt des Elements + */ + public void setContent(String text) { + if ( current==null) return; + current.setText(text); + } + + + /** + * Fragt den Inhalt des aktuellen Elements als Integerzahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ public int getIntContent(int defaultValue) { + if ( current==null) return defaultValue; + try{ + int i = Integer.parseInt(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Integerzahl ab + * @return Inhalt des Elements + */ + public int getIntContent() { + if ( current==null) return 0; + try{ + int i = Integer.parseInt(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setIntContent(int value) { + if ( current==null) return; + current.setText(""+value); + } + + + /** + * Fragt den Inhalt des aktuellen Elements als Floatzahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ + public float getFloatContent(float defaultValue) { + if ( current==null) return defaultValue; + try{ + float i = Float.parseFloat(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Floatzahl ab + * @return Inhalt des Elements + */ + public float getFloatContent() { + if ( current==null) return 0; + try{ + float i = Float.parseFloat(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setFloatContent(float value) { + if ( current==null) return; + current.setText(""+value); + } + +/** + * Fragt den Inhalt des aktuellen Elements als Doublezahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ + public double getDoubleContent(double defaultValue) { + if ( current==null) return defaultValue; + try{ + double i = Double.parseDouble(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Doublezahl ab + * @return Inhalt des Elements + */ + public double getDoubleContent() { + if ( current==null) return 0; + try{ + double i = Double.parseDouble(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setDoubleContent(double value) { + if ( current==null) return; + current.setText(""+value); + } + + + // ----------------------------------------------- XML-Struktur aufbauen ------------------------------------------------ + /** Erzeuge neues Element nach der aktuellen Position und setze dieses als aktuelles Element + * @param name Name des neuen Elements + * @return neues Element als XML-Objekt + */ + public XML addChild(String name) { + Element e = new Element(name); + if(current == null){ // man ist auf Root-Ebene + doc.setRootElement(e); + + } + else { + current.addContent(e); + } // end of if-else + return new XML(doc, e); + } + + /** + * liefert das aktuelle Element als jdom-Element-Objekt + * @return aktuelles Element + */ + private Element getCurrent() { + return current; + } + + /** + * löscht ein Kind des aktuellen Knotens. + * Ist kid kein Kind des aktuellen Elements passiert gar nichts. + * @param kid XML-Objekt des Kindes + */ + public void removeChild(XML kid) { + if (current == null) return; + Element e = kid.getCurrent(); + int index = current.indexOf(e); + if(index >= 0) { current.removeContent(e);} + } + +} diff --git a/04_loesungen/02_greenfoot/alg12_balkendiagramm_csv_loesung/images/balken.png b/04_loesungen/02_greenfoot/alg12_balkendiagramm_csv_loesung/images/balken.png new file mode 100644 index 0000000..9ff1ffc Binary files /dev/null and b/04_loesungen/02_greenfoot/alg12_balkendiagramm_csv_loesung/images/balken.png differ diff --git a/04_loesungen/02_greenfoot/alg12_balkendiagramm_csv_loesung/images/bilderrahmen.png b/04_loesungen/02_greenfoot/alg12_balkendiagramm_csv_loesung/images/bilderrahmen.png new file mode 100644 index 0000000..7f34e32 Binary files /dev/null and b/04_loesungen/02_greenfoot/alg12_balkendiagramm_csv_loesung/images/bilderrahmen.png differ diff --git a/04_loesungen/02_greenfoot/alg12_balkendiagramm_csv_loesung/jdom-1.1.3.jar b/04_loesungen/02_greenfoot/alg12_balkendiagramm_csv_loesung/jdom-1.1.3.jar new file mode 100644 index 0000000..a287727 Binary files /dev/null and b/04_loesungen/02_greenfoot/alg12_balkendiagramm_csv_loesung/jdom-1.1.3.jar differ diff --git a/04_loesungen/02_greenfoot/alg12_balkendiagramm_csv_loesung/project.greenfoot b/04_loesungen/02_greenfoot/alg12_balkendiagramm_csv_loesung/project.greenfoot new file mode 100644 index 0000000..48e011f --- /dev/null +++ b/04_loesungen/02_greenfoot/alg12_balkendiagramm_csv_loesung/project.greenfoot @@ -0,0 +1,93 @@ +#Greenfoot project file +class.Balkendiagramm.image=balken.png +class.PictureViewer.image=bilderrahmen.png +dependency1.from=MyWorld +dependency1.to=Balkendiagramm +dependency1.type=UsesDependency +dependency2.from=PictureViewer +dependency2.to=Picture +dependency2.type=UsesDependency +dependency3.from=Balkendiagramm +dependency3.to=Table +dependency3.type=UsesDependency +dependency4.from=Table +dependency4.to=TableRow +dependency4.type=UsesDependency +dependency5.from=Picture +dependency5.to=PictureViewer +dependency5.type=UsesDependency +editor.fx.0.height=739 +editor.fx.0.width=816 +editor.fx.0.x=552 +editor.fx.0.y=100 +height=885 +package.numDependencies=5 +package.numTargets=7 +project.charset=UTF-8 +publish.hasSource=false +publish.locked=true +publish.longDesc= +publish.shortDesc= +publish.tags= +publish.title= +publish.url= +readme.height=58 +readme.name=@README +readme.width=47 +readme.x=10 +readme.y=10 +simulation.speed=97 +target1.height=50 +target1.name=PictureViewer +target1.showInterface=false +target1.type=ClassTarget +target1.width=100 +target1.x=0 +target1.y=0 +target2.height=50 +target2.name=Table +target2.showInterface=false +target2.type=ClassTarget +target2.width=80 +target2.x=0 +target2.y=0 +target3.height=50 +target3.name=Balkendiagramm +target3.showInterface=false +target3.type=ClassTarget +target3.width=120 +target3.x=0 +target3.y=0 +target4.height=50 +target4.name=Picture +target4.showInterface=false +target4.type=ClassTarget +target4.width=80 +target4.x=0 +target4.y=0 +target5.height=50 +target5.name=XML +target5.showInterface=false +target5.type=ClassTarget +target5.width=100 +target5.x=0 +target5.y=0 +target6.height=50 +target6.name=TableRow +target6.showInterface=false +target6.type=ClassTarget +target6.width=80 +target6.x=0 +target6.y=0 +target7.height=50 +target7.name=MyWorld +target7.showInterface=false +target7.type=ClassTarget +target7.width=80 +target7.x=0 +target7.y=0 +version=3.0.0 +width=1350 +world.lastInstantiated=MyWorld +xPosition=449 +yPosition=138 diff --git a/04_loesungen/02_greenfoot/alg12_balkendiagramm_csv_loesung/punkte.csv b/04_loesungen/02_greenfoot/alg12_balkendiagramm_csv_loesung/punkte.csv new file mode 100644 index 0000000..d6e8dfd --- /dev/null +++ b/04_loesungen/02_greenfoot/alg12_balkendiagramm_csv_loesung/punkte.csv @@ -0,0 +1,6 @@ +"Name","Punkte" +Niko,216 +Klaus,591 +Anna,857 +Lena,180 +Winfried,168 diff --git a/04_loesungen/02_greenfoot/alg12_balkendiagramm_csv_loesung2/Balkendiagramm.java b/04_loesungen/02_greenfoot/alg12_balkendiagramm_csv_loesung2/Balkendiagramm.java new file mode 100644 index 0000000..c65fefa --- /dev/null +++ b/04_loesungen/02_greenfoot/alg12_balkendiagramm_csv_loesung2/Balkendiagramm.java @@ -0,0 +1,78 @@ +import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot und MouseInfo) +import java.awt.Font; + +/** + * Balkendiagramm für int-Array, Zahlen werden aus CSV-Datei gelesen. + * + * @author Schaller + * @version 29.11.18 + */ +public class Balkendiagramm extends PictureViewer + +{ + // Liste mit allen Werten //<>// + int[] zahlen; + String[] namen; + + // Schriften + Font kleineSchrift; + Font grosseSchrift; + + public Balkendiagramm() { + size(1000, 700); + background(0); + kleineSchrift = new Font( Font.SANS_SERIF, Font.PLAIN, 12 ); + grosseSchrift = new Font( Font.SANS_SERIF, Font.PLAIN, 20 ); + + // CSV-Datei laden und anzeigen + ladeTabelle("punkte.csv"); + + zeichneBalken(); + } + + public void ladeTabelle(String name) { + // Tabelle aus CSV-Datei laden + Table csv = new Table(name,"header",',','"'); + + if (csv != null && csv.getColumnCount()==2) { + + // Initialisiere Arrays, in die alle Zeilen der Tabelle passen + zahlen = new int[csv.getRowCount()]; + namen = new String[csv.getRowCount()]; + + // Fülle die Arrays mit Werten aus der Tabelle + for (int i = 0; i < zahlen.length; i++) { + // Lies Wert aus der i. Zeile und der Spalte "Punkte" bzw. "Name" + zahlen[i] = csv.getInt(i,"Punkte"); + namen[i] = csv.getString(i,"Name"); + } + } + } + + public void zeichneBalken() { + clear(); + + // Überschrift + fill(255,255,255); + textFont(grosseSchrift); + text("Punkte", 2, 20); + textFont(kleineSchrift); + + // Alle Einträge darstellen + if(zahlen != null) { + for (int i = 0; i< zahlen.length; i++) { + + fill(20,30,170); + + // Balkendiagramm zeichnen + if(zahlen[i]>=0) rect(120, 25+i*15, zahlen[i]+1, 13); + + // Beschriftung + fill(255,255,255); + text(namen[i], 2, 35+i*15); + text(""+zahlen[i], 70, 35+i*15); + } + } + } + +} diff --git a/04_loesungen/02_greenfoot/alg12_balkendiagramm_csv_loesung2/MyWorld.java b/04_loesungen/02_greenfoot/alg12_balkendiagramm_csv_loesung2/MyWorld.java new file mode 100644 index 0000000..11434f1 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg12_balkendiagramm_csv_loesung2/MyWorld.java @@ -0,0 +1,36 @@ +import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot und MouseInfo) + +/** + * Ergänzen Sie hier eine Beschreibung für die Klasse MyWorld. + * + * @author (Ihr Name) + * @version (eine Versionsnummer oder ein Datum) + */ +public class MyWorld extends World +{ + + /** + * Konstruktor für Objekte der Klasse MyWorld + * + */ + public MyWorld() + { + // Erstellt eine neue Welt mit 1200x900 Pixeln + super(1000, 700, 1); + + prepare(); + } + + + /** + * Bereite die Welt für den Programmstart vor. + * Das heißt: Erzeuge die Anfangs-Objekte und füge sie der Welt hinzu. + */ + private void prepare() + { + Balkendiagramm balkendiagramm = new Balkendiagramm(); + addObject(balkendiagramm,500,350); + + } +} + diff --git a/04_loesungen/02_greenfoot/alg12_balkendiagramm_csv_loesung2/Picture.java b/04_loesungen/02_greenfoot/alg12_balkendiagramm_csv_loesung2/Picture.java new file mode 100644 index 0000000..8df3d55 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg12_balkendiagramm_csv_loesung2/Picture.java @@ -0,0 +1,699 @@ +import java.awt.image.*; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.BasicStroke; +import java.util.Vector; +import javax.imageio.*; +import java.io.*; +import java.awt.*; +import javax.swing.*; +import java.util.Random; +import java.awt.geom.AffineTransform; +/** + * + * Bildklasse für die Simulation von Processing-Befehlen + * + * Diese Klasse stellt ein BufferedImage bereit, in das mit Processing-Befehlen gezeichnet + * werden kann. + * Zusätzlich kann ein Bildanzeiger über jede Änderung des Bildes informiert werden, + * um "Zurück"-Befehle zu ermöglichen. Der Bildanzeiger ist entweder eine normale Java + * ScrollPane oder ein Actor aus Greenfoot. + * Die Dokumentation der einzelnen Zeichenmethoden ist der Processing-Reference + * (https://processing.org/reference/ steht unter CC-Lizenz: https://creativecommons.org/) + * entnommen und mit Deepl.com ins Deutsche übersetzt. + * + * @version 1.0 from 23.01.2019 + * @author Thomas Schaller (ZPG Informatik Klasse 9) + */ + +public class Picture{ + + // Einstellungmöglichkeiten für das Zeichnen von Rechtecken und Ellipsen + // RADIUS = Mittelpunkt+Radius wird gegeben, CENTER = Mittelpunkt und Breite/Höhe wird gegeben, + // CORNER = Linke obere Ecke + Breite/Höhe, CORNERS = Linke obere und rechte untere Ecke + public static final int RADIUS = 1; + public static final int CENTER = 2; + public static final int CORNER = 3; + public static final int CORNERS = 4; + + // gespeichertes Bild, + private BufferedImage image; + + // aktuelle Farbeinstellungen + private Color background; + private Color pencolor; + private Color fillcolor; + + // aktuelle Stiftdicke + private double stroke; + + // akkteller Koordinatenmodus von Rechtecken und Ellipsen + private int ellipseMode = CENTER; + private int rectMode = CORNER; + + // aktueller Font + private Font textfont = null; + + // muss ein Bildanzeiger benachrichtigt werden + private PictureViewer observer = null; + private boolean autorefresh = true; + + /** + * Erzeugt ein Bild mit Standardgröße 500x400 + */ + public Picture() { + this(500,400); + } + + /** + * Erzeugt ein Bild der angegeben Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public Picture(int width, int height) { + this(width,height, "D0D0D0"); + } + + /** + * Erzeugt ein Bild aus einer Datei + * @param filename Dateiname des Bildes + */ + public Picture(String filename) { + load(filename); + } + + /** + * Erzeugt ein Bild der angegebenen Größe mit festgelegtem Hintergrund + * @param width Breite des Bildes + * @param height Höhe des Bildes + * @param background Farbe des Hintergrunds + */ + public Picture(int width, int height, String background) { + this.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + this.background = decode(background); + this.pencolor = new Color(0,0,0); + this.stroke = 1; + this.fillcolor = null; + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(this.background); + g.fillRect(0,0,width-1, height-1); + } + + /** + * Legt fest, wer das Bild anzeigt. + * Diese ermöglicht die Benachrichtung des Observers, wenn sich das Bild ändert. + * @param observer Anzeiger des Bildes + */ + + public void setObserver(PictureViewer observer) { + this.observer= observer; + } + + /** + * Direktes Setzen des Bildes (für interne Zwecke) + * @param b Bild, das gespeichert werden soll. + */ + public void setImage(BufferedImage b) { + image = b; + } + + /** + * Direktes Abfragen des Bildes (für interne Zwecke) + * @return Bild, das gerade gespeichert ist. + */ + public BufferedImage getImage() { + return image; + } + + /** + * Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + * Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + * der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu. + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public void size(int width, int height){ + pushImage(); + this.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(background); + g.fillRect(0,0,width-1, height-1); + } + + /** + * Liefert die Breite des Bildes zurück. + * @return Breite des Bildes + */ + public int getWidth() { + return image.getWidth(); + } + + /** + * Liefert die Höhe des Bildes zurück. + * @return Höhe des Bildes + */ + public int getHeight() { + return image.getHeight(); + } + + + /** + * Erzeugt eine Kopie des Bildes und übergibt sie an den Observer (falls existent), damit dieser die Versionen speichern kann + */ + private void pushImage() { + if(observer != null) { + observer.pushImage(); + } + } + + + /** + * Legt fest, ob nach jedem Zeichenbefehl automatisch das Bild auch in + * der Oberfläche aktualisiert wird. Die Einstellung "false" beschleunigt + * das Zeichnen aufwändiger Bilder und verhindert "Flackern". + * Das Neuzeichnen kann durch die Methode "refresh" gezielt ausgelöst werden. + * @param autorefresh true = nach jedem Zeichenbefehl die Anzeige aktualisieren, false= nur durch die Methode refresh neu zeichnen + */ + public void setAutoRefresh(boolean autoRefresh) { + this.autorefresh = autoRefresh; + } + + + /** + * Auch die anzeigenden Klasse wird zum Neuzeichnen aufgefordert. + */ + private void repaint() { + if(observer != null && autorefresh) { + observer.repaint(); + } + } + + /** + * Auch die anzeigenden Klasse wird zum Neuzeichnen aufgefordert. + */ + public void refresh() { + if(observer != null) { + observer.repaint(); + } + } + + // ----------------------------------------- Zeichenfunktionen ----------------------------------------------- + /** + * Löscht den Inhalt des Bildes. + * Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt. + */ + + public void clear(){ + pushImage(); + image = new BufferedImage(image.getWidth(), image.getHeight(), image.getType()); + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(background); + g.fillRect(0,0,image.getWidth()-1, image.getHeight()-1); + repaint(); + } + + /** + * Konvertiert die in einem bestimmten Modus gegebenen Koordinaten in die Java-übliche Links_Oben_Breite_Höhe Version + * Die Änderungen werden direkt im Array vorgenommen + * @param coord Array mit vier Koordinateneinträgen im gegebenen Modus + * @param mode Modus der Koordinaten (CORNER, CORNERS, RADIUS oder CENTER) + */ + private void convert(int[] coord, int mode) { + switch(mode) { + case CORNER: break; + case CORNERS: coord[2] -= coord[0]; coord[3] -= coord[1]; break; + case RADIUS: coord[2] *= 2; coord[3] *=2; + case CENTER: coord[0] -= coord[2]/2; coord[1] -= coord[3]/2; + } + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + * Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + * Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void rectMode(int mode) { + rectMode = mode; + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + * Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + * Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als Breite und Höhe der Form. + * ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void ellipseMode(int mode) { + ellipseMode = mode; + } + + + + /** + * Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + * Um eine Linie einzufärben, verwenden Sie die {@link #stroke(int, int, int) stroke()} Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + * Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + * {@link #strokeWeight(double) strokeWeight()} geändert werden. + * @param x1 x-Koordinate des 1. Punktes + * @param y1 y-Koordinate des 1. Punktes + * @param x2 x-Koordinate des 2. Punktes + * @param y2 y-Koordinate des 2. Punktes + */ + public void line(int x1, int y1, int x2, int y2) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + if (stroke > 0) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawLine(x1, y1, x2, y2); + } + repaint(); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, rectMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillRect(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawRect(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, ellipseMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillOval(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawOval(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + int px[] = {x1, x2, x3}; + int py[] = {y1, y2, y3}; + polygon(px, py); + + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + + int px[] = {x1, x2, x3, x4}; + int py[] = {y1, y2, y3, y4}; + polygon(px, py); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + + public void polygon(int[] x, int[] y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(fillcolor != null) { + + g.setColor(fillcolor); + g.fillPolygon(x,y, y.length); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawPolygon(x, y, x.length); + } + repaint(); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + ellipse(x,y,1, 1); + + } + + // ----------------------------------------- Schriftdarstellung ----------------------------------------------- + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param s Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String s, int x, int y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(pencolor != null) { + g.setColor(fillcolor); + g.setStroke(new BasicStroke((float) stroke)); + g.setFont(textfont); + g.drawString(s, x, y); + } + repaint(); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + this.textfont = font; + } + + + // ----------------------------------------- Farbfestlegungen ----------------------------------------------- + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(String color) { + try{ + return new Color( + Integer.valueOf( color.substring( 0, 2 ), 16 ), + Integer.valueOf( color.substring( 2, 4 ), 16 ), + Integer.valueOf( color.substring( 4, 6 ), 16 ) ); + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(int color) { + try{ + if(color >=0 && color < 256) { + return new Color(color,color,color); + } else { + int r = color / 0x010000 % 0xFF; + int g = color / 0x000100 % 0xFF; + int b = color % 0xFF; + System.out.println(""+r+","+g+","+b); + return new Color(r, g, b ); + } + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + this.pencolor = decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + this.pencolor=decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + this.pencolor = new Color(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + this.pencolor = null; + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + this.stroke = width; + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + this.fillcolor = decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + this.fillcolor=decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + this.fillcolor = new Color(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + this.fillcolor = null; + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + if(c < 256) { + this.background=new Color(c,c,c); + } else { + int r = c / 0x010000; + int g = c / 0x000100 % 0xFF; + int b = c % 0xFF; + this.background= new Color(r, g, b ); + } + + this.clear(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + this.background=new Color(r,g,b); + this.clear(); + } + + +// ----------------------------------------- Dateioperationen ----------------------------------------------- + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + try{ + this.image = ImageIO.read(new File(filename)); + this.background = decode("D0D0D0"); + this.pencolor = new Color(0,0,0); + this.fillcolor = null; + this.stroke = 1; + this.repaint(); + + } catch(Exception e) { + System.out.println("Fehler beim Einlesen der Bilddatei"); + } + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + try{ + String[] fn = filename.split("\\."); + if (fn.length== 1) { + ImageIO.write(image, "PNG", new File(filename+".png")); + } else { + + if (fn.length == 2 && (fn[1].toUpperCase().equals("PNG") || + fn[1].toUpperCase().equals("GIF"))){ + ImageIO.write(image, fn[1], new File(filename)); + }else { + System.out.println("Unbekanntes Bildformat"); + } + } + + } catch(Exception e) { + System.out.println("Fehler beim Speichern"); + } + } + + +// ----------------------------------------- Sonstiges ----------------------------------------------- + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + + public Color[][] getPixelArray() { + Color[][] pixel = new Color[image.getWidth()][image.getHeight()]; + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + pixel[x][y] = new java.awt.Color(image.getRGB(x,y)); + } + } + return pixel; + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + size(pixel.length,pixel[0].length); + Graphics2D g = (Graphics2D) image.getGraphics(); + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + g.setColor(pixel[x][y]); + g.fillRect(x, y, 1, 1); + } + } + repaint(); + } + + /** + * Hilfsfunktion zum Verzögern der Ausgabe + * @param millis Wartezeit in Millisekunden + */ + public void delay(int millis) { + try{ + Thread.sleep(millis); + + } catch(Exception e) { + + } + + } + + + +} diff --git a/04_loesungen/02_greenfoot/alg12_balkendiagramm_csv_loesung2/PictureViewer.java b/04_loesungen/02_greenfoot/alg12_balkendiagramm_csv_loesung2/PictureViewer.java new file mode 100644 index 0000000..ecbb521 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg12_balkendiagramm_csv_loesung2/PictureViewer.java @@ -0,0 +1,499 @@ +import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot und MouseInfo) +import java.awt.image.*; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.BasicStroke; +import java.awt.Font; +import java.util.Vector; +import java.awt.Color; +import javax.imageio.*; +import java.io.*; + +/** + * Der PictureViewer ist ein Actor, der in der Lage ist ein + * Objekt der Klasse Picture anzuzeigen. Zusätzlich können + * mehrere Verarbeitungsschritte gespeichert werden, um ein + * "zurück"-Funktion zu ermöglichen. + * + * @author Thomas Schaller + * @version V1.0 vom 10.02.2019 + */ +public class PictureViewer extends Actor +{ + public static final int FIT = -1; + public static final int NORMAL = 1; + + private static final int ANZ_BACK = 0; + + private double zoom; + protected Picture picture = null; + private Vector history; + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der Größe 500x400 + */ + public PictureViewer() { + this(500,400); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public PictureViewer(int width, int height) { + this(width,height, "D0D0D0"); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + * @param background Farbe des Hintergrunds als HEX-String (z.B. "FF3A45") + */ + public PictureViewer(int width, int height, String background) { + picture = new Picture(width,height, background); + picture.setObserver(this); + this.history = new Vector(); + this.zoom = NORMAL; + repaint(); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild aus einer Bilddatei + * @param filename Name des Bildes + */ + public PictureViewer(String filename) { + picture = new Picture(filename); + picture.setObserver(this); + this.history = new Vector(); + this.zoom = NORMAL; + repaint(); + } + + /** + * Speichert das übergebene Bild in der History. + * @param b zu speicherndes Bild + */ + public void pushImage() { + if( this.ANZ_BACK > 0) { + if(history.size() == this.ANZ_BACK) { + history.removeElementAt(0); + } + + BufferedImage b = new BufferedImage(picture.getWidth(), picture.getHeight(), picture.getImage().getType()); + Graphics g = b.getGraphics(); + g.drawImage(picture.getImage(), 0, 0, null); + g.dispose(); + + history.add(b); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + private void popImage() { + int anz = history.size(); + if(anz>0) { + BufferedImage i = history.get(anz-1); + history.removeElementAt(anz-1); + picture.setImage(i); + repaint(); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + public void back() { + popImage(); + } + + /** + * Setzt den Zoom-Faktor für das Bild. + * Als Zoomfaktor sind auch die Konstanten Bildanzeiger.FIT (auf Bildschirmgröße zoomen) und Bildanzeiger.NORMAL (100%) möglich. + * @param factor Zoomfaktor (1.0 = 100%). + */ + public void setZoom(double zoom) { + this.zoom = zoom; + repaint(); + } + + /** + * Setzt die automatische Neuanzeige des Bildes. + * Mit dieser Methode kann man einstellen, ob nach jedem Zeichenbefehl + * die Anzeige auf dem Bildschirm aktualisiert werden soll. Bei sehr + * vielen Zeichenbefehlen wird die Ausgabe dadurch sehr langsam. Es reicht + * eine Anzeige am Ende der Zeichenbefehle. Rufen Sie dann für das Neuzeichnen + * die Methode refresh() auf. + * @param autoRefresh true, wenn nach jedem Zeichenbefehl die Anzeige aktualisiert werden soll. + */ + public void setAutoRefresh(boolean autoRefresh) { + picture.setAutoRefresh(autoRefresh); + } + + /** + * Sorgt für die Aktualisierung der Bildschrimanzeige. Das aktuelle Bild + * wird dadurch angezeigt. Durch Einstellung von autoRefresh kann die + * Anzeige automatisiert werden. + */ + public void refresh() { + repaint(); + } + + /** + * Setzt das angezeigt Bild neu und beachtet dabei den Zoomfaktor. + */ + public void repaint() { + double faktor = zoom; + + if (zoom == FIT) { + double faktorw = (double) this.getWorld().getWidth() / picture.getWidth(); + double faktorh = (double) this.getWorld().getHeight() / picture.getHeight(); + faktor = Math.min(faktorw, faktorh); + } + int gfi_width = (int) (picture.getWidth()*faktor); + int gfi_height = (int) (picture.getHeight()*faktor); + + setImage(new GreenfootImage(gfi_width, gfi_height)); + Graphics2D g = (Graphics2D) this.getImage().getAwtImage().getGraphics(); + g.drawImage(picture.getImage(),0,0,gfi_width, gfi_height, 0, 0, picture.getWidth(), picture.getHeight(), null); + g.setColor(new java.awt.Color(0,0,0)); + g.setStroke(new BasicStroke((float) 1)); + g.drawRect(0,0,gfi_width-1, gfi_height-1); + + } + + // Wrappermethoden + /** + * Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + * Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + * der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu. + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public void size(int width, int height){ + picture.size(width, height); + } + + /** + * Liefert die Breite des Bildes zurück. + * @return Breite des Bildes + */ + public int getImageWidth() { + return picture.getWidth(); + } + + /** + * Liefert die Höhe des Bildes zurück. + * @return Höhe des Bildes + */ + public int getImageHeight() { + return picture.getHeight(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + picture.background(c); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + picture.background(r,g,b); + } + + /** + * Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + * Um eine Linie einzufärben, verwenden Sie die {@link #stroke(int, int, int) stroke()} Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + * Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + * {@link #strokeWeight(double) strokeWeight()} geändert werden. + * @param x1 x-Koordinate des 1. Punktes + * @param y1 y-Koordinate des 1. Punktes + * @param x2 x-Koordinate des 2. Punktes + * @param y2 y-Koordinate des 2. Punktes + */ + public void line(int x1, int y1, int x2, int y2) { + picture.line(x1,y1,x2,y2); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + picture.rect(a,b,c,d); + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + picture.ellipse(a,b,c,d); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + picture.triangle(x1,y1,x2,y2,x3,y3); + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + picture.quad(x1,y1,x2,y2,x3,y3,x4,y4); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + public void polygon(int[] x, int[] y) { + picture.polygon(x,y); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + picture.point(x,y); + + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + * Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + * Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void rectMode(int mode) { + picture.rectMode(mode); + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + * Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + * Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als Breite und Höhe der Form. + * ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void ellipseMode(int mode) { + picture.ellipseMode(mode); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + picture.stroke(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + picture.noStroke(); + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + picture.strokeWeight(width); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + picture.fill(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + picture.noFill(); + } + + /** + * Löscht den Inhalt des Bildes. + * Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt. + */ + public void clear(){ + picture.clear(); + } + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + picture.load(filename); + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + picture.save(filename); + } + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param t Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String t, int x, int y) { + picture.text(t,x,y); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + picture.textFont(font); + } + + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + public Color[][] getPixelArray() { + return picture.getPixelArray(); + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + picture.setPixelArray(pixel); + } + + +} + diff --git a/04_loesungen/02_greenfoot/alg12_balkendiagramm_csv_loesung2/README.TXT b/04_loesungen/02_greenfoot/alg12_balkendiagramm_csv_loesung2/README.TXT new file mode 100644 index 0000000..4b8fadd --- /dev/null +++ b/04_loesungen/02_greenfoot/alg12_balkendiagramm_csv_loesung2/README.TXT @@ -0,0 +1,14 @@ +------------------------------------------------------------------------ +Dies ist die README-Datei des Projekts. Hier sollten Sie Ihr Projekt +beschreiben. +Erzählen Sie dem Leser (jemand, der nichts über dieses Projekt weiss), +alles, was er/sie wissen muss. Üblicherweise sollte der Kommentar +zumindest die folgenden Angaben umfassen: +------------------------------------------------------------------------ + +PROJEKTBEZEICHNUNG: +PROJEKTZWECK: +VERSION oder DATUM: +WIE IST DAS PROJEKT ZU STARTEN: +AUTOR(EN): +BENUTZERHINWEISE: diff --git a/04_loesungen/02_greenfoot/alg12_balkendiagramm_csv_loesung2/Table.java b/04_loesungen/02_greenfoot/alg12_balkendiagramm_csv_loesung2/Table.java new file mode 100644 index 0000000..ee5a211 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg12_balkendiagramm_csv_loesung2/Table.java @@ -0,0 +1,894 @@ +/** + * Die Klasse Table vereinfacht den Zugriff auf CSV-Dateien. + * Die Klassen Table und TableRow ermöglichen einen einfachen Zugriff auf tabellenbasierte + * Dokumente. + * + * @author Thomas Schaller + * @version 1.0 vom 01.02.2019 + */ + +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.ArrayList; +import java.io.*; +import java.util.Scanner; + +import org.jdom.Document; +import org.jdom.Element; +import org.jdom.Attribute; +import org.jdom.JDOMException; +import org.jdom.input.SAXBuilder; +import org.jdom.output.XMLOutputter; +import org.jdom.output.Format; + +public class Table +{ + // Standardtrennzeichen für Spalten + private static final char DEFAULT_SEPARATOR = ';'; + // Standardmarkierung für Texte + private static final char DEFAULT_QUOTE = '"'; + // Standardtrennzeichen für Dezimalzahlen + private static final char DEFAULT_COMMA = ','; + + // mögliche Spaltentypen + private static final String UNKNOWN ="UNKOWN"; + private static final String INT = "INTEGER"; + private static final String DOUBLE = "DOUBLE"; + private static final String FLOAT = "FLOAT"; + + // interne Verwaltung des Dokuments als JDOM-Document-Objekt + private Document doc; + // Verweis auf Element für Kopfzeile + private Element header; + // Ende Attribute + + /** + * Erzeugt leeres Tabellen-Dokument. + */ + public Table() { + this.doc = new Document(); + doc.setRootElement(new Element("CSV-Data")); + this.header = new Element("Header"); + doc.getRootElement().addContent(header); + } + + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei und erstellt ein Tabellenobjekt mit seinen Werten. + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public Table(String filename, String options, char separator, char quote) { + loadCSV(filename, options, separator, quote); + } + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei und erstellt ein Tabellenobjekt mit seinen Werten (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + */ + public Table(String filename, String options) { + loadCSV(filename, options); + } + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei ohne Kopfzeile und erstellt ein Tabellenobjekt mit seinen Werten (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public Table(String filename) { + loadCSV(filename); + } + + // Anfang Methoden + /** + * Liest den Inhalt einer CSV-Datei ohne Kopfzeile (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public void loadCSV(String filename) { + loadCSV(filename, ""); + } + + /** + * Liest den Inhalt einer CSV-Datei (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + */ + public void loadCSV(String filename, String options) { + loadCSV(filename, options, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** + * Liest den Inhalt einer CSV-Datei. + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public void loadCSV(String filename, String options, char separator, char quote) { + doc = new Document(); + doc.setRootElement(new Element("CSV-Data")); + header = new Element("Header"); + doc.getRootElement().addContent(header); + try { + File f = new File(filename); + Scanner scanner = new Scanner(new File(filename)); + if(options.toLowerCase().contains("header") && scanner.hasNext()) { + List entries = parseLine(scanner.nextLine(), separator, quote); + int i= 0; + for(String s : entries) { + Element entry = new Element("Column"); + header.addContent(entry); + entry.setText(s); + entry.setAttribute("type", "unknown"); + i++; + } + } + + List cols = header.getChildren(); + + while (scanner.hasNext()) { + Element line = new Element("Row"); + doc.getRootElement().addContent(line); + List entries = parseLine(scanner.nextLine(), separator, quote); + int i= 0; + + for(String s : entries) { + + if(i==cols.size()) { + Element entry = new Element("Column"); + entry.setAttribute("type", "unknown"); + header.addContent(entry); + cols = header.getChildren(); + } + + Element entry = new Element("Entry"); + entry.setText(s); + line.addContent(entry); + i++; + } + } + scanner.close(); + + } catch (Exception e) { + System.out.println("Fehler beim Lesen der CSV-Datei"); + } + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei ohne Kopfzeile (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public void saveCSV(String filename) { + saveCSV(filename, ""); + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthalten, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile haben soll, + * dann lassen Sie einfach die Option "header" weg. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile haben soll. + * @param filename Dateiname der CSV-Datei. + */ + public void saveCSV(String filename, String options) { + saveCSV(filename, options, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei. + * Wenn die Datei eine Kopfzeile enthalten, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile haben soll, + * dann lassen Sie einfach die Option "header" weg. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile haben soll. + * @param filename Dateiname der CSV-Datei. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public void saveCSV(String filename, String options, char separator, char quote){ + try{ + File f = new File(filename); + PrintStream outputFile = new PrintStream (f); + System.out.println("Speicher in : "+f.getAbsolutePath()); + List columns = header.getChildren(); + String sq = ""+quote; + String ss = ""+separator; + if(quote =='"') sq = "\""; + if(separator =='"') ss = "\""; + + if(options.toLowerCase().contains("header")) { + String h = ""; + for(Element c : columns) { + h += ss + sq + c.getText()+sq; + } + outputFile.println(h.substring(1)); + } + for(int i = 0; i parseLine(String cvsLine) { + return parseLine(cvsLine, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** HIlfsfunktion für die Analyse einer Dateizeile + * @param cvsLine Zeile aus der Datei + * @param sparator Trennzeichen für die Spalten + * @return Liste von String für die einzelnen Spalten + */ + private List parseLine(String cvsLine, char separator) { + return parseLine(cvsLine, separator, DEFAULT_QUOTE); + } + + /** HIlfsfunktion für die Analyse einer Dateizeile + * @param cvsLine Zeile aus der Datei + * @param sparator Trennzeichen für die Spalten + * @param customQuote Kennung für Strings + * @return Liste von String für die einzelnen Spalten + */ + private List parseLine(String cvsLine, char separator, char customQuote) { + + List result = new ArrayList<>(); + + //if empty, return! + if (cvsLine == null && cvsLine.isEmpty()) { + return result; + } + + //ggf. Default-Value laden + if (customQuote == ' ') { + customQuote = DEFAULT_QUOTE; + } + + if (separator == ' ') { + separator = DEFAULT_SEPARATOR; + } + + StringBuffer curVal = new StringBuffer(); + boolean inQuotes = false; + boolean startCollectChar = false; + boolean doubleQuotesInColumn = false; + + char[] chars = cvsLine.toCharArray(); + + for (char ch : chars) { + + if (inQuotes) { // aktueller Text ist in Quotes eingeschlossen + startCollectChar = true; + + if (ch == customQuote) { // Quotes werden beendet, aber Achtung bei "" => Metazeichen + inQuotes = false; + if (ch == '\"') { + doubleQuotesInColumn = true; + } + + } else { + + if (ch == '\"' && !doubleQuotesInColumn) { + doubleQuotesInColumn = true; + } else { + curVal.append(ch); + doubleQuotesInColumn = false; + } + + } + } else { + if (ch == customQuote) { + + inQuotes = true; + + //Fixed : allow "" in empty quote enclosed + if (ch == '\"'){ + if(doubleQuotesInColumn) { + curVal.append('"'); + doubleQuotesInColumn = false; + } else doubleQuotesInColumn = true; + + + } + } + else { + doubleQuotesInColumn = false; + if (ch == separator) { + + result.add(curVal.toString()); + + curVal = new StringBuffer(); + startCollectChar = false; + + } else if (ch == '\r') { + //ignore LF characters + continue; + } else if (ch == '\n') { + //the end, break! + break; + } else { + curVal.append(ch); + } + } + } + + } + result.add(curVal.toString()); + return result; + } + + /** + * Sucht die Nummer einer durch Namen gegebenen Spalte. + * @param name Name der Spalte + * @return Nummer der Spalte + */ + + private int findColumnNumber(String name) { + List columns = header.getChildren(); + int i = 0; + for(Element c : columns) { + if (c.getText().toLowerCase().equals(name.toLowerCase())) { + return i; + + } + i++; + } + return -1; + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an. + */ + public void addColumn() { + Element entry = new Element("Column"); + entry.setAttribute("type", Table.UNKNOWN); + header.addContent(entry); + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an und benennt sie. + * @param title Bezeichnung der Spalte + */ + public void addColumn(String title) { + addColumn(); + Element nc = ((List)(header.getChildren())).get(header.getChildren().size()-1); + nc.setText(title); + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an und benennt und typisiert sie. + * @param title Bezeichnung der Spalte + * @param type Typ der Spalte (UNKNOWN, DOUBLE, INTEGER, FLOAT) + */ + public void addColumn(String title, String type) { + addColumn(title); + Element nc = ((List)(header.getChildren())).get(header.getChildren().size()-1); + nc.setAttribute("type", type); + } + + /** + * Löscht eine Spalte. + * @param i Nummer der Spalte. + */ + public void removeColumn(int i) { + List lines = doc.getRootElement().getChildren(); + for(Element l : lines) { + if(l.getChildren().size()>i) l.removeContent(i); + } + } + + /** + * Löscht eine Spalte + * @param name Name der Spalte + */ + public void removeColumn(String name) { + try{ + removeColumn(findColumnNumber(name)); + } catch(Exception e) { System.out.println("Unbekannter Spaltenname");} + } + + /** + * Liefert die Anzahl der Spalten in der Tabelle + * @return Anzahl der Spalten + */ + public int getColumnCount() { + return header.getChildren().size(); + } + + /** + * Liefert die Anzahl der Zeilen in der Tabelle + * @return Anzahl der Zeilen + */ + public int getRowCount() { + return doc.getRootElement().getChildren().size()-1; + } + + /** + * Löscht alle Zeilen der Tabelle. + * Die Spaltenüberschriften und Typen bleiben erhalten. + */ + public void clearRows() { + doc.getRootElement().removeChildren("Row"); + } + + /** + * Fügt eine neue Zeile an das Ende der Tabelle an. + * @return ein TableRow-Objekt für diese neue Zeile + */ + public TableRow addRow() { + Element row = new Element("Row"); + doc.getRootElement().addContent(row); + return new TableRow(doc, row); + } + + /** + * Löscht eine Zeile + * @param i Nummer der Zeile + */ + public void removeRow(int i) { + if(i rows = doc.getRootElement().getChildren(); + return new TableRow(doc, rows.get(i+1)); + } + return null; + } + + /** + * Liefert die ganze Tabelle als Array von TableRow-Objekten + * @return Array von TableRow-Objekten + */ + public TableRow[] rows() { + TableRow[] rows = new TableRow[getRowCount()]; + for(int i = 0; i < getRowCount(); i++) { + rows[i] = getRow(i); + } + return rows; + } + + /** + * Liefert den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param column Spaltennummer + * @return Wert der Zelle + */ + public int getInt(int row, int column) { + return getRow(row).getInt(column); + } + + /** + * Liefert den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param name Name der Spalte + * @return Wert der Zelle + */ + public int getInt(int row, String name) { + return getRow(row).getInt(name); + } + + /** + * Setzt den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param column Spaltennummer + * @param value neuer Wert der Zelle + */ + public void setInt(int row, int column,int value) { + getRow(row).setInt(column, value); + } + + /** + * Setzt den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(int row, String name, int value) { + getRow(row).setInt(name, value); + } + + /** + * Liefert alle Werte einer Zeile als Integer-Array. + * @param row Nummer der Zeile + * @return int-Array, dass alle Werte der Zeile enthält + */ + public int[] getIntRow(int row) { + try{ + TableRow trow = getRow(row); + int anz = getColumnCount(); + int[] r = new int[anz]; + for(int i=0; i) (header.getChildren())).get(i).getText(); + } else { + return ""; + } + } + + /** + * Liefert die Nummer einer Spalte + * @param name Name der Spalte + * @return Nummer der Spalte + */ + public int getColumn(String name) { + List columns = header.getChildren(); + int i = 0; + while (i < columns.size()) { + if (columns.get(i).getText().toLowerCase().equals(name.toLowerCase())) { + return i; + } + i++; + } // end of while + return -1; + } + + + /** + * Erzeugt eine neue Zeile mit i Spalten + * Wenn bisher nicht genügend Spalten vorhanden sind, werden automatisch neue Spalten hinzugefügt (auch zum Header) + * @param i Anzahl der Spalten + */ + private Element buildRow(int i) { + List columns = header.getChildren(); + Element entry=null; + for(int j=0; j<=i; j++) { + + if(j==columns.size()) { + Element h = new Element("Column"); + h.setAttribute("type", "unknown"); + header.addContent(h); + columns = header.getChildren(); + } + if(j==current.getChildren().size()) { + entry = new Element("Entry"); + current.addContent(entry); + + } + + } + return entry; + + } + + /** + * Erzeugt eine neue Zeile. + * Es werden genügend Spalten erzeugt, dass ein Wert in Spalte "name" eingetragen werden kann + * @param name Name der Spalte + */ + private Element buildRow(String name) { + List columns = header.getChildren(); + int i = 0; + for(Element c: columns) { + + if(c.getText().toLowerCase().equals(name.toLowerCase())) { + return buildRow(i); + } + i++; + } + return null; + + } + + /** + * Liefert den Wert einer Zelle als String + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public String getString(int i) { + if(i >= current.getContent().size()) return ""; + Element e = (Element) current.getContent(i) ; + if(e!=null) { + return e.getText(); + } else { + return ""; + } + } + + /** + * Liefert den Wert einer Zelle als String + * @param name Name der Spalte + * @return Wert der Zelle + */ + public String getString(String name) { + return getString(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als String + * @param i Nummer der Spalte + * @param text neuer Wert der Zelle + */ + public void setString(int i, String text) { + + Element e = buildRow(i); + if(e!=null) e.setText(text); + } + + /** + * Setzt den Wert einer Zelle als String + * @param name Name der Spalte + * @param text neuer Wert der Zelle + */ + public void setString(String name, String text) { + Element e = buildRow(name); + if(e!=null) e.setText(text); + } + + + /** + * Liefert den Wert einer Zelle als Int-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public int getInt(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Integer.parseInt(e.getText()); + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Int-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public int getInt(String name) { + return getInt(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Int-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(int i,int value) { + + Element e = buildRow(i); + if(e!=null) e.setText(""+value); + } + + /** + * Setzt den Wert einer Zelle als Int-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(String name, int value) { + Element e = buildRow(name); + if(e!=null) e.setText(""+value); + } + + /** + * Liefert den Wert einer Zelle als Float-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public float getFloat(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Float.parseFloat(e.getText().replace(",",".")); + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Float-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public float getFloat(String name) { + return getFloat(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Float-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setFloat(int i,float value) { + + Element e = buildRow(i); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Setzt den Wert einer Zelle als Float-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setFloat(String name, float value) { + Element e = buildRow(name); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Liefert den Wert einer Zelle als Double-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public double getDouble(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Double.parseDouble(e.getText().replace(",",".")); + + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Double-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public double getDouble(String name) { + return getDouble(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Double-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setDouble(int i,double value) { + + Element e = buildRow(i); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Setzt den Wert einer Zelle als Double-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setDouble(String name, double value) { + Element e = buildRow(name); + if(e!=null) e.setText(format.format(value)); + } + +} diff --git a/04_loesungen/02_greenfoot/alg12_balkendiagramm_csv_loesung2/XML.java b/04_loesungen/02_greenfoot/alg12_balkendiagramm_csv_loesung2/XML.java new file mode 100644 index 0000000..c06c490 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg12_balkendiagramm_csv_loesung2/XML.java @@ -0,0 +1,637 @@ +/** + * Klasse zum Vereinfachten Zugriff auf XML-Dokumente + * Diese Klasse ist für den Einsatz in der Schule gedacht und soll den Schülern + * einen einfachen Zugriff auf XML-Dokumente ermöglichen. Die zur Verfügung + * stehenden Befehle sind wie in Processing realisiert. + * Dabei ist jeder Teilbaum des Dokuments wieder als XML-Objekt zugreifbar, das + * intern auf die gleiche XML-Dokumentstruktur zugreift. + * Dies ermöglicht bei unsachgemäßem Gebrauch die XML-Struktur zu zerstören. Im + * normalen Gebrauch sollte dies aber nicht relevant sein. + * + * Benötigt: jdom-1.1.3.jar + + * @author Thomas Schaller + * @version 1.0 vom 31.01.2019 + */ +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.ArrayList; +import java.io.*; + +import org.jdom.Document; +import org.jdom.Element; +import org.jdom.Attribute; +import org.jdom.JDOMException; +import org.jdom.input.SAXBuilder; +import org.jdom.output.XMLOutputter; +import org.jdom.output.Format; + +public class XML { + // Anfang Attribute + // XML-Dokumentstruktur + private Document doc; + // Zeiger auf das aktuelle Element + private Element current; + // Ende Attribute + + /** + * Erzeugt ein leeres XMLDokument + */ + public XML() { + this.doc = new Document(); + this.current = null; + } + + /** + * Erzeugt ein XML-Dokument aus einer Datei + * @param filename Dateiname der XML-Datei + */ + public XML(String filename) { + loadXML(filename); + } + + /** + * interner Konstruktor, um ein XML Objekt zu erzeugen, das auf einen bestimmten Knoten verweist + * @param doc die XML-Dokumentstruktur + * @param current Zeiger auf das aktuelle Element + */ + private XML(Document doc, Element current) { + this.doc = doc; + this.current = current; + } + + // Anfang Methoden + /** Öffnet das durch den Dateinamen gegebene Dokument + * @param filename Dateiname des XML-Files + */ + public void loadXML(String filename) { + doc = null; + File f = new File(filename); + + try { + // Das Dokument erstellen + SAXBuilder builder = new SAXBuilder(); + doc = builder.build(f); + + } catch (JDOMException e) { + e.printStackTrace(); + + } catch (IOException e) { + e.printStackTrace(); + } + // Zeiger im Baum auf Root-Element + current = doc.getRootElement(); + } + + /** Speichert den XML-Baum im angegebenen Dateinamen + * @param filename Dateiname des XML-Files + */ + public void saveXML(String filename) { + try { + // new XMLOutputter().output(doc, System.out); + XMLOutputter xmlOutput = new XMLOutputter(); + + // display nice nice + xmlOutput.setFormat(Format.getPrettyFormat()); + File f = new File(filename); + FileOutputStream outputFile = new FileOutputStream(f); + System.out.println("Speicher in : "+f.getAbsolutePath() ); + xmlOutput.output(doc, outputFile); + outputFile.close(); + System.out.println("File Saved!"); + } catch (IOException io) { + System.out.println(io.getMessage()); + } + + } + + //----------------------------------------------- Zeigerbewegungen -------------------------------------------------- + /** + * liefert ein XML-Objekt, das auf den Vaterknoten des aktuellen Elements zeigt. + * @return Vater des aktuellen Objekts. + */ + public XML getParent() { + if(current != null) { + Element parent = current.getParentElement(); + if (parent == null) { + return null; + } else { + return new XML(doc, parent); + } + } + return null; + } + + /** + * Überprüft, ob das Element irgendwelche Kinder hat oder nicht, und gibt das Ergebnis als boolean zurück. + * @return true, wenn Kinder vorhanden sind, sonst false + */ + public boolean hasChildren() { + if (current == null) { + return doc.hasRootElement(); + } else { + return current.getChildren().size()>0; + } + } + + /** + * Ermittelt die Namen aller Kinder des Elements und gibt die Namen als ein Array von Strings zurück. + * Dies ist dasselbe wie das Durchlaufen und Aufrufen von getName() auf jedem untergeordneten Element einzeln. + * @return Liste aller Namen der Kinder + */ + public String[] listChildren() { + if (current == null) { + if(doc.hasRootElement()) { + String[] names = new String[0]; + names[0] = doc.getRootElement().getName(); + return names; + } else { + return null; + } + } else { + List ch_element = current.getChildren(); + String[] names = new String[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + names[i] = ch_element.get(i).getName(); + } + return names; + } + } + + /** + * Liefert alle Kinder des Elements als Array von XML-Objekten. + * @return Array der Kinder als XML-Objekte + */ + public XML[] getChildren() { + if (current == null) { + if(doc.hasRootElement()) { + XML[] ch_xml = new XML[1]; + ch_xml[0] = new XML(doc, doc.getRootElement()); + return ch_xml; + } else { + return null; + } + } else { + List ch_element = current.getChildren(); + XML[] ch_xml = new XML[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + ch_xml[i] = new XML(doc, ch_element.get(i)); + } + return ch_xml; + } + } + + /** + * Liefert bestimmte Kinder des Elements als Array von XML-Objekten. + * Die Methode gibt dabei alle Kinder zurück, die dem angegebenen Namen entsprechen. + * @param name Name der gesuchten Kind-Objekte + * @return Array der Kinder als XML-Objekte + */ + public XML[] getChildren(String name) { + if (current == null) { + if(doc.hasRootElement()) { + XML[] ch_xml = new XML[1]; + ch_xml[0] = new XML(doc, doc.getRootElement()); + if(doc.getRootElement().getName().equals(name)){ + return ch_xml; + } else { + return null; + } + } else { + return null; + } + } else { + List ch_element = current.getChildren(name); + XML[] ch_xml = new XML[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + ch_xml[i] = new XML(doc, ch_element.get(i)); + } + return ch_xml; + } + } + + /** + * Liefert das erste Kind des Elements mit einem bestimmten Namen. + * Die Methode gibt das erste Kind zurück, das dem angegebenen Namen entsprechen. + * @param name Name des gesuchten Kind-Objektes + * @return Kind als XML-Objekt + */ + + public XML getChild(String name) { + if (current == null) { + Element e = doc.getRootElement(); + if (e.getName().equals(name)) { + return new XML(doc, e); + } else { + return null; + } + } else { + String[] names = name.split("/"); + Element e = current; + int i = 0; + while(i < names.length) { + e = e.getChild(names[i]); + if (e==null) return null; + i++; + } + return new XML(doc, e); + } + } + + /** + * Liefert das i. Kind des Elements. + * Die Methode gibt das i. Kind des aktuellen Elements zurück. + * @param i Nummer des Kindes + * @return Kind als XML-Objekt + */ + public XML getChild(int i) { + if (current == null) { + return new XML(doc, doc.getRootElement()); + } else { + List ch_element = current.getChildren(); + if (i>=ch_element.size()) return null; + return new XML(doc, ch_element.get(i)); + } + } + + //--------------------------------------------------- Methoden für das aktuelle Element ------------------------------------------------- + /** + * Frage den Namen des aktuellen Elements ab + * @return Namen des Elements + */ + public String getName() { + if (current==null) return ""; + return current.getName(); + } + + /** + * Setze den Namen des aktuellen Elements. + * @param name Neuer Name des Elements + */ + public void setName(String name) { + if (current==null) return; + current.setName(name); + } + + /** + * liefert die Anzahl der Attribute eines Elements. + * @return Anzahl des Attribute + */ + public int getAttributeCount() { + if (current == null) return 0; + return current.getAttributes().size(); + } + + /** + * liefert zurück, ob das aktuelle Element Attribute hat . + * @return true, wenn es Attribute gibt + */ + public boolean hasAttribute() { + if (current == null) return false; + return current.getAttributes().size()>0; + } + + /** + * Ruft alle Attribute des angegebenen Elements ab und gibt sie als Array von Strings zurück. + * @return Liste der Attributnamen + */ + public String[] listAttributes() { + if (current == null) return null; + List attr = current.getAttributes(); + String[] names = new String[attr.size()]; + for(int i=0; i < attr.size() ; i++) { + names[i] = attr.get(i).getName(); + } + return names; + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs + */ + public String getString(String attribute) { + if (current==null) return ""; + return current.getAttributeValue(attribute); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs + */ + public String getString(String attribute, String defaultValue) { + if (current==null) return defaultValue; + return current.getAttributeValue(attribute,defaultValue); + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param text neuer Wert des Attributs + */ + public void setString(String attribute, String text) { + if (current==null) return; + current.setAttribute(attribute, text); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Integer-Zahl + */ + public int getInt(String attribute) { + if (current==null) return 0; + try{ + int i = Integer.parseInt(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als Integer-Zahl + */ + public int getInt(String attribute, int defaultValue) { + if (current==null) return defaultValue; + try{ + int i = Integer.parseInt(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setInt(String attribute, int value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Float-Zahl + */ + public float getFloat(String attribute) { + if (current==null) return 0; + try{ + float i = Float.parseFloat(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als Float-Zahl + */ + public float getFloat(String attribute, float defaultValue) { + if (current==null) return defaultValue; + try{ + float i = Float.parseFloat(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setFloat(String attribute, float value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Double-Zahl + */ + public double getDouble(String attribute) { + if (current==null) return 0; + try{ + double i = Double.parseDouble(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + +/** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als double-Zahl + */ + public double getDouble(String attribute, double defaultValue) { + if (current==null) return defaultValue; + try{ + double i = Double.parseDouble(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setDouble(String attribute, double value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt den Inhalt/Text des aktuellen Elements ab + * @return Inhalt des Elements + */ + public String getContent() { + if ( current==null) return ""; + + return current.getText(); + } + + /** + * Fragt den Inhalt/Text des aktuellen Elements ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardtext + * @return Inhalt des Elements + */ + public String getContent(String defaultValue) { + if ( current==null) return defaultValue; + String t = current.getText(); + if(t.equals("")) t = defaultValue; + return t; + } + + /** + * Setzt den Inhalt/Text des aktuellen Elements + * @param text Neuer Inhalt des Elements + */ + public void setContent(String text) { + if ( current==null) return; + current.setText(text); + } + + + /** + * Fragt den Inhalt des aktuellen Elements als Integerzahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ public int getIntContent(int defaultValue) { + if ( current==null) return defaultValue; + try{ + int i = Integer.parseInt(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Integerzahl ab + * @return Inhalt des Elements + */ + public int getIntContent() { + if ( current==null) return 0; + try{ + int i = Integer.parseInt(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setIntContent(int value) { + if ( current==null) return; + current.setText(""+value); + } + + + /** + * Fragt den Inhalt des aktuellen Elements als Floatzahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ + public float getFloatContent(float defaultValue) { + if ( current==null) return defaultValue; + try{ + float i = Float.parseFloat(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Floatzahl ab + * @return Inhalt des Elements + */ + public float getFloatContent() { + if ( current==null) return 0; + try{ + float i = Float.parseFloat(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setFloatContent(float value) { + if ( current==null) return; + current.setText(""+value); + } + +/** + * Fragt den Inhalt des aktuellen Elements als Doublezahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ + public double getDoubleContent(double defaultValue) { + if ( current==null) return defaultValue; + try{ + double i = Double.parseDouble(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Doublezahl ab + * @return Inhalt des Elements + */ + public double getDoubleContent() { + if ( current==null) return 0; + try{ + double i = Double.parseDouble(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setDoubleContent(double value) { + if ( current==null) return; + current.setText(""+value); + } + + + // ----------------------------------------------- XML-Struktur aufbauen ------------------------------------------------ + /** Erzeuge neues Element nach der aktuellen Position und setze dieses als aktuelles Element + * @param name Name des neuen Elements + * @return neues Element als XML-Objekt + */ + public XML addChild(String name) { + Element e = new Element(name); + if(current == null){ // man ist auf Root-Ebene + doc.setRootElement(e); + + } + else { + current.addContent(e); + } // end of if-else + return new XML(doc, e); + } + + /** + * liefert das aktuelle Element als jdom-Element-Objekt + * @return aktuelles Element + */ + private Element getCurrent() { + return current; + } + + /** + * löscht ein Kind des aktuellen Knotens. + * Ist kid kein Kind des aktuellen Elements passiert gar nichts. + * @param kid XML-Objekt des Kindes + */ + public void removeChild(XML kid) { + if (current == null) return; + Element e = kid.getCurrent(); + int index = current.indexOf(e); + if(index >= 0) { current.removeContent(e);} + } + +} diff --git a/04_loesungen/02_greenfoot/alg12_balkendiagramm_csv_loesung2/images/balken.png b/04_loesungen/02_greenfoot/alg12_balkendiagramm_csv_loesung2/images/balken.png new file mode 100644 index 0000000..9ff1ffc Binary files /dev/null and b/04_loesungen/02_greenfoot/alg12_balkendiagramm_csv_loesung2/images/balken.png differ diff --git a/04_loesungen/02_greenfoot/alg12_balkendiagramm_csv_loesung2/images/bilderrahmen.png b/04_loesungen/02_greenfoot/alg12_balkendiagramm_csv_loesung2/images/bilderrahmen.png new file mode 100644 index 0000000..7f34e32 Binary files /dev/null and b/04_loesungen/02_greenfoot/alg12_balkendiagramm_csv_loesung2/images/bilderrahmen.png differ diff --git a/04_loesungen/02_greenfoot/alg12_balkendiagramm_csv_loesung2/jdom-1.1.3.jar b/04_loesungen/02_greenfoot/alg12_balkendiagramm_csv_loesung2/jdom-1.1.3.jar new file mode 100644 index 0000000..a287727 Binary files /dev/null and b/04_loesungen/02_greenfoot/alg12_balkendiagramm_csv_loesung2/jdom-1.1.3.jar differ diff --git a/04_loesungen/02_greenfoot/alg12_balkendiagramm_csv_loesung2/project.greenfoot b/04_loesungen/02_greenfoot/alg12_balkendiagramm_csv_loesung2/project.greenfoot new file mode 100644 index 0000000..1233adf --- /dev/null +++ b/04_loesungen/02_greenfoot/alg12_balkendiagramm_csv_loesung2/project.greenfoot @@ -0,0 +1,93 @@ +#Greenfoot project file +class.Balkendiagramm.image=balken.png +class.PictureViewer.image=bilderrahmen.png +dependency1.from=MyWorld +dependency1.to=Balkendiagramm +dependency1.type=UsesDependency +dependency2.from=PictureViewer +dependency2.to=Picture +dependency2.type=UsesDependency +dependency3.from=Balkendiagramm +dependency3.to=Table +dependency3.type=UsesDependency +dependency4.from=Table +dependency4.to=TableRow +dependency4.type=UsesDependency +dependency5.from=Picture +dependency5.to=PictureViewer +dependency5.type=UsesDependency +editor.fx.0.height=0 +editor.fx.0.width=0 +editor.fx.0.x=0 +editor.fx.0.y=0 +height=885 +package.numDependencies=5 +package.numTargets=7 +project.charset=UTF-8 +publish.hasSource=false +publish.locked=true +publish.longDesc= +publish.shortDesc= +publish.tags= +publish.title= +publish.url= +readme.height=58 +readme.name=@README +readme.width=47 +readme.x=10 +readme.y=10 +simulation.speed=97 +target1.height=50 +target1.name=PictureViewer +target1.showInterface=false +target1.type=ClassTarget +target1.width=100 +target1.x=0 +target1.y=0 +target2.height=50 +target2.name=Table +target2.showInterface=false +target2.type=ClassTarget +target2.width=80 +target2.x=0 +target2.y=0 +target3.height=50 +target3.name=Balkendiagramm +target3.showInterface=false +target3.type=ClassTarget +target3.width=120 +target3.x=0 +target3.y=0 +target4.height=50 +target4.name=Picture +target4.showInterface=false +target4.type=ClassTarget +target4.width=80 +target4.x=0 +target4.y=0 +target5.height=50 +target5.name=XML +target5.showInterface=false +target5.type=ClassTarget +target5.width=100 +target5.x=0 +target5.y=0 +target6.height=50 +target6.name=TableRow +target6.showInterface=false +target6.type=ClassTarget +target6.width=80 +target6.x=0 +target6.y=0 +target7.height=50 +target7.name=MyWorld +target7.showInterface=false +target7.type=ClassTarget +target7.width=80 +target7.x=0 +target7.y=0 +version=3.0.0 +width=1350 +world.lastInstantiated=MyWorld +xPosition=449 +yPosition=138 diff --git a/04_loesungen/02_greenfoot/alg12_balkendiagramm_csv_loesung2/punkte.csv b/04_loesungen/02_greenfoot/alg12_balkendiagramm_csv_loesung2/punkte.csv new file mode 100644 index 0000000..d6e8dfd --- /dev/null +++ b/04_loesungen/02_greenfoot/alg12_balkendiagramm_csv_loesung2/punkte.csv @@ -0,0 +1,6 @@ +"Name","Punkte" +Niko,216 +Klaus,591 +Anna,857 +Lena,180 +Winfried,168 diff --git a/04_loesungen/02_greenfoot/alg12_balkendiagramm_variante_xml/Balkendiagramm.java b/04_loesungen/02_greenfoot/alg12_balkendiagramm_variante_xml/Balkendiagramm.java new file mode 100644 index 0000000..47709cb --- /dev/null +++ b/04_loesungen/02_greenfoot/alg12_balkendiagramm_variante_xml/Balkendiagramm.java @@ -0,0 +1,79 @@ +import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot und MouseInfo) +import java.awt.Font; + +/** + * Balkendiagramm für int-Array, Zahlen werden aus CSV-Datei gelesen. + * + * @author Schaller + * @version 29.11.18 + */ +public class Balkendiagramm extends PictureViewer + +{ + // Liste mit allen Werten //<>// + int[] zahlen; + String[] namen; + + // Schriften + Font kleineSchrift; + Font grosseSchrift; + + public Balkendiagramm() { + size(1000, 700); + background(0); + kleineSchrift = new Font( Font.SANS_SERIF, Font.PLAIN, 12 ); + grosseSchrift = new Font( Font.SANS_SERIF, Font.PLAIN, 20 ); + + // CSV-Datei laden und anzeigen + ladeTabelle("punkte.xml"); + + zeichneBalken(); + } + + public void ladeTabelle(String name) { + // Tabelle aus XML-Datei laden + XML xml = new XML(name); + XML[] rows = xml.getChildren("Row"); + + // Initialisiere Arrays, in die alle Zeilen passen + zahlen = new int[rows.length]; + namen = new String[rows.length]; + + // Fülle die Arrays mit Werten aus der Tabelle + for (int i = 0; i < zahlen.length; i++) { + // Lies Wert aus der i. Zeile und dort den Unterpunkten "Punkte" bzw. "Name" + XML eintragPunkte = rows[i].getChild("Punkte"); + XML eintragName = rows[i].getChild("Name"); + + zahlen[i] = eintragPunkte.getIntContent(); + namen[i] = eintragName.getContent(); + } + } + + public void zeichneBalken() { + clear(); + + // Überschrift + fill(255,255,255); + textFont(grosseSchrift); + text("Punkte", 2, 20); + textFont(kleineSchrift); + + // Alle Einträge darstellen + if(zahlen != null) { + for (int i = 0; i< zahlen.length; i++) { + + fill(20,30,170); + + // Balkendiagramm zeichnen + if(zahlen[i]>=0) rect(120, 25+i*15, zahlen[i]+1, 13); + + // Beschriftung + fill(255,255,255); + text(namen[i], 2, 35+i*15); + text(""+zahlen[i], 70, 35+i*15); + } + } + } + +} diff --git a/04_loesungen/02_greenfoot/alg12_balkendiagramm_variante_xml/MyWorld.java b/04_loesungen/02_greenfoot/alg12_balkendiagramm_variante_xml/MyWorld.java new file mode 100644 index 0000000..11434f1 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg12_balkendiagramm_variante_xml/MyWorld.java @@ -0,0 +1,36 @@ +import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot und MouseInfo) + +/** + * Ergänzen Sie hier eine Beschreibung für die Klasse MyWorld. + * + * @author (Ihr Name) + * @version (eine Versionsnummer oder ein Datum) + */ +public class MyWorld extends World +{ + + /** + * Konstruktor für Objekte der Klasse MyWorld + * + */ + public MyWorld() + { + // Erstellt eine neue Welt mit 1200x900 Pixeln + super(1000, 700, 1); + + prepare(); + } + + + /** + * Bereite die Welt für den Programmstart vor. + * Das heißt: Erzeuge die Anfangs-Objekte und füge sie der Welt hinzu. + */ + private void prepare() + { + Balkendiagramm balkendiagramm = new Balkendiagramm(); + addObject(balkendiagramm,500,350); + + } +} + diff --git a/04_loesungen/02_greenfoot/alg12_balkendiagramm_variante_xml/Picture.java b/04_loesungen/02_greenfoot/alg12_balkendiagramm_variante_xml/Picture.java new file mode 100644 index 0000000..8df3d55 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg12_balkendiagramm_variante_xml/Picture.java @@ -0,0 +1,699 @@ +import java.awt.image.*; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.BasicStroke; +import java.util.Vector; +import javax.imageio.*; +import java.io.*; +import java.awt.*; +import javax.swing.*; +import java.util.Random; +import java.awt.geom.AffineTransform; +/** + * + * Bildklasse für die Simulation von Processing-Befehlen + * + * Diese Klasse stellt ein BufferedImage bereit, in das mit Processing-Befehlen gezeichnet + * werden kann. + * Zusätzlich kann ein Bildanzeiger über jede Änderung des Bildes informiert werden, + * um "Zurück"-Befehle zu ermöglichen. Der Bildanzeiger ist entweder eine normale Java + * ScrollPane oder ein Actor aus Greenfoot. + * Die Dokumentation der einzelnen Zeichenmethoden ist der Processing-Reference + * (https://processing.org/reference/ steht unter CC-Lizenz: https://creativecommons.org/) + * entnommen und mit Deepl.com ins Deutsche übersetzt. + * + * @version 1.0 from 23.01.2019 + * @author Thomas Schaller (ZPG Informatik Klasse 9) + */ + +public class Picture{ + + // Einstellungmöglichkeiten für das Zeichnen von Rechtecken und Ellipsen + // RADIUS = Mittelpunkt+Radius wird gegeben, CENTER = Mittelpunkt und Breite/Höhe wird gegeben, + // CORNER = Linke obere Ecke + Breite/Höhe, CORNERS = Linke obere und rechte untere Ecke + public static final int RADIUS = 1; + public static final int CENTER = 2; + public static final int CORNER = 3; + public static final int CORNERS = 4; + + // gespeichertes Bild, + private BufferedImage image; + + // aktuelle Farbeinstellungen + private Color background; + private Color pencolor; + private Color fillcolor; + + // aktuelle Stiftdicke + private double stroke; + + // akkteller Koordinatenmodus von Rechtecken und Ellipsen + private int ellipseMode = CENTER; + private int rectMode = CORNER; + + // aktueller Font + private Font textfont = null; + + // muss ein Bildanzeiger benachrichtigt werden + private PictureViewer observer = null; + private boolean autorefresh = true; + + /** + * Erzeugt ein Bild mit Standardgröße 500x400 + */ + public Picture() { + this(500,400); + } + + /** + * Erzeugt ein Bild der angegeben Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public Picture(int width, int height) { + this(width,height, "D0D0D0"); + } + + /** + * Erzeugt ein Bild aus einer Datei + * @param filename Dateiname des Bildes + */ + public Picture(String filename) { + load(filename); + } + + /** + * Erzeugt ein Bild der angegebenen Größe mit festgelegtem Hintergrund + * @param width Breite des Bildes + * @param height Höhe des Bildes + * @param background Farbe des Hintergrunds + */ + public Picture(int width, int height, String background) { + this.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + this.background = decode(background); + this.pencolor = new Color(0,0,0); + this.stroke = 1; + this.fillcolor = null; + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(this.background); + g.fillRect(0,0,width-1, height-1); + } + + /** + * Legt fest, wer das Bild anzeigt. + * Diese ermöglicht die Benachrichtung des Observers, wenn sich das Bild ändert. + * @param observer Anzeiger des Bildes + */ + + public void setObserver(PictureViewer observer) { + this.observer= observer; + } + + /** + * Direktes Setzen des Bildes (für interne Zwecke) + * @param b Bild, das gespeichert werden soll. + */ + public void setImage(BufferedImage b) { + image = b; + } + + /** + * Direktes Abfragen des Bildes (für interne Zwecke) + * @return Bild, das gerade gespeichert ist. + */ + public BufferedImage getImage() { + return image; + } + + /** + * Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + * Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + * der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu. + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public void size(int width, int height){ + pushImage(); + this.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(background); + g.fillRect(0,0,width-1, height-1); + } + + /** + * Liefert die Breite des Bildes zurück. + * @return Breite des Bildes + */ + public int getWidth() { + return image.getWidth(); + } + + /** + * Liefert die Höhe des Bildes zurück. + * @return Höhe des Bildes + */ + public int getHeight() { + return image.getHeight(); + } + + + /** + * Erzeugt eine Kopie des Bildes und übergibt sie an den Observer (falls existent), damit dieser die Versionen speichern kann + */ + private void pushImage() { + if(observer != null) { + observer.pushImage(); + } + } + + + /** + * Legt fest, ob nach jedem Zeichenbefehl automatisch das Bild auch in + * der Oberfläche aktualisiert wird. Die Einstellung "false" beschleunigt + * das Zeichnen aufwändiger Bilder und verhindert "Flackern". + * Das Neuzeichnen kann durch die Methode "refresh" gezielt ausgelöst werden. + * @param autorefresh true = nach jedem Zeichenbefehl die Anzeige aktualisieren, false= nur durch die Methode refresh neu zeichnen + */ + public void setAutoRefresh(boolean autoRefresh) { + this.autorefresh = autoRefresh; + } + + + /** + * Auch die anzeigenden Klasse wird zum Neuzeichnen aufgefordert. + */ + private void repaint() { + if(observer != null && autorefresh) { + observer.repaint(); + } + } + + /** + * Auch die anzeigenden Klasse wird zum Neuzeichnen aufgefordert. + */ + public void refresh() { + if(observer != null) { + observer.repaint(); + } + } + + // ----------------------------------------- Zeichenfunktionen ----------------------------------------------- + /** + * Löscht den Inhalt des Bildes. + * Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt. + */ + + public void clear(){ + pushImage(); + image = new BufferedImage(image.getWidth(), image.getHeight(), image.getType()); + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(background); + g.fillRect(0,0,image.getWidth()-1, image.getHeight()-1); + repaint(); + } + + /** + * Konvertiert die in einem bestimmten Modus gegebenen Koordinaten in die Java-übliche Links_Oben_Breite_Höhe Version + * Die Änderungen werden direkt im Array vorgenommen + * @param coord Array mit vier Koordinateneinträgen im gegebenen Modus + * @param mode Modus der Koordinaten (CORNER, CORNERS, RADIUS oder CENTER) + */ + private void convert(int[] coord, int mode) { + switch(mode) { + case CORNER: break; + case CORNERS: coord[2] -= coord[0]; coord[3] -= coord[1]; break; + case RADIUS: coord[2] *= 2; coord[3] *=2; + case CENTER: coord[0] -= coord[2]/2; coord[1] -= coord[3]/2; + } + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + * Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + * Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void rectMode(int mode) { + rectMode = mode; + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + * Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + * Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als Breite und Höhe der Form. + * ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void ellipseMode(int mode) { + ellipseMode = mode; + } + + + + /** + * Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + * Um eine Linie einzufärben, verwenden Sie die {@link #stroke(int, int, int) stroke()} Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + * Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + * {@link #strokeWeight(double) strokeWeight()} geändert werden. + * @param x1 x-Koordinate des 1. Punktes + * @param y1 y-Koordinate des 1. Punktes + * @param x2 x-Koordinate des 2. Punktes + * @param y2 y-Koordinate des 2. Punktes + */ + public void line(int x1, int y1, int x2, int y2) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + if (stroke > 0) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawLine(x1, y1, x2, y2); + } + repaint(); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, rectMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillRect(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawRect(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, ellipseMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillOval(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawOval(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + int px[] = {x1, x2, x3}; + int py[] = {y1, y2, y3}; + polygon(px, py); + + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + + int px[] = {x1, x2, x3, x4}; + int py[] = {y1, y2, y3, y4}; + polygon(px, py); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + + public void polygon(int[] x, int[] y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(fillcolor != null) { + + g.setColor(fillcolor); + g.fillPolygon(x,y, y.length); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawPolygon(x, y, x.length); + } + repaint(); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + ellipse(x,y,1, 1); + + } + + // ----------------------------------------- Schriftdarstellung ----------------------------------------------- + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param s Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String s, int x, int y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(pencolor != null) { + g.setColor(fillcolor); + g.setStroke(new BasicStroke((float) stroke)); + g.setFont(textfont); + g.drawString(s, x, y); + } + repaint(); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + this.textfont = font; + } + + + // ----------------------------------------- Farbfestlegungen ----------------------------------------------- + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(String color) { + try{ + return new Color( + Integer.valueOf( color.substring( 0, 2 ), 16 ), + Integer.valueOf( color.substring( 2, 4 ), 16 ), + Integer.valueOf( color.substring( 4, 6 ), 16 ) ); + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(int color) { + try{ + if(color >=0 && color < 256) { + return new Color(color,color,color); + } else { + int r = color / 0x010000 % 0xFF; + int g = color / 0x000100 % 0xFF; + int b = color % 0xFF; + System.out.println(""+r+","+g+","+b); + return new Color(r, g, b ); + } + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + this.pencolor = decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + this.pencolor=decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + this.pencolor = new Color(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + this.pencolor = null; + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + this.stroke = width; + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + this.fillcolor = decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + this.fillcolor=decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + this.fillcolor = new Color(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + this.fillcolor = null; + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + if(c < 256) { + this.background=new Color(c,c,c); + } else { + int r = c / 0x010000; + int g = c / 0x000100 % 0xFF; + int b = c % 0xFF; + this.background= new Color(r, g, b ); + } + + this.clear(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + this.background=new Color(r,g,b); + this.clear(); + } + + +// ----------------------------------------- Dateioperationen ----------------------------------------------- + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + try{ + this.image = ImageIO.read(new File(filename)); + this.background = decode("D0D0D0"); + this.pencolor = new Color(0,0,0); + this.fillcolor = null; + this.stroke = 1; + this.repaint(); + + } catch(Exception e) { + System.out.println("Fehler beim Einlesen der Bilddatei"); + } + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + try{ + String[] fn = filename.split("\\."); + if (fn.length== 1) { + ImageIO.write(image, "PNG", new File(filename+".png")); + } else { + + if (fn.length == 2 && (fn[1].toUpperCase().equals("PNG") || + fn[1].toUpperCase().equals("GIF"))){ + ImageIO.write(image, fn[1], new File(filename)); + }else { + System.out.println("Unbekanntes Bildformat"); + } + } + + } catch(Exception e) { + System.out.println("Fehler beim Speichern"); + } + } + + +// ----------------------------------------- Sonstiges ----------------------------------------------- + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + + public Color[][] getPixelArray() { + Color[][] pixel = new Color[image.getWidth()][image.getHeight()]; + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + pixel[x][y] = new java.awt.Color(image.getRGB(x,y)); + } + } + return pixel; + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + size(pixel.length,pixel[0].length); + Graphics2D g = (Graphics2D) image.getGraphics(); + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + g.setColor(pixel[x][y]); + g.fillRect(x, y, 1, 1); + } + } + repaint(); + } + + /** + * Hilfsfunktion zum Verzögern der Ausgabe + * @param millis Wartezeit in Millisekunden + */ + public void delay(int millis) { + try{ + Thread.sleep(millis); + + } catch(Exception e) { + + } + + } + + + +} diff --git a/04_loesungen/02_greenfoot/alg12_balkendiagramm_variante_xml/PictureViewer.java b/04_loesungen/02_greenfoot/alg12_balkendiagramm_variante_xml/PictureViewer.java new file mode 100644 index 0000000..ecbb521 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg12_balkendiagramm_variante_xml/PictureViewer.java @@ -0,0 +1,499 @@ +import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot und MouseInfo) +import java.awt.image.*; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.BasicStroke; +import java.awt.Font; +import java.util.Vector; +import java.awt.Color; +import javax.imageio.*; +import java.io.*; + +/** + * Der PictureViewer ist ein Actor, der in der Lage ist ein + * Objekt der Klasse Picture anzuzeigen. Zusätzlich können + * mehrere Verarbeitungsschritte gespeichert werden, um ein + * "zurück"-Funktion zu ermöglichen. + * + * @author Thomas Schaller + * @version V1.0 vom 10.02.2019 + */ +public class PictureViewer extends Actor +{ + public static final int FIT = -1; + public static final int NORMAL = 1; + + private static final int ANZ_BACK = 0; + + private double zoom; + protected Picture picture = null; + private Vector history; + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der Größe 500x400 + */ + public PictureViewer() { + this(500,400); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public PictureViewer(int width, int height) { + this(width,height, "D0D0D0"); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + * @param background Farbe des Hintergrunds als HEX-String (z.B. "FF3A45") + */ + public PictureViewer(int width, int height, String background) { + picture = new Picture(width,height, background); + picture.setObserver(this); + this.history = new Vector(); + this.zoom = NORMAL; + repaint(); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild aus einer Bilddatei + * @param filename Name des Bildes + */ + public PictureViewer(String filename) { + picture = new Picture(filename); + picture.setObserver(this); + this.history = new Vector(); + this.zoom = NORMAL; + repaint(); + } + + /** + * Speichert das übergebene Bild in der History. + * @param b zu speicherndes Bild + */ + public void pushImage() { + if( this.ANZ_BACK > 0) { + if(history.size() == this.ANZ_BACK) { + history.removeElementAt(0); + } + + BufferedImage b = new BufferedImage(picture.getWidth(), picture.getHeight(), picture.getImage().getType()); + Graphics g = b.getGraphics(); + g.drawImage(picture.getImage(), 0, 0, null); + g.dispose(); + + history.add(b); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + private void popImage() { + int anz = history.size(); + if(anz>0) { + BufferedImage i = history.get(anz-1); + history.removeElementAt(anz-1); + picture.setImage(i); + repaint(); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + public void back() { + popImage(); + } + + /** + * Setzt den Zoom-Faktor für das Bild. + * Als Zoomfaktor sind auch die Konstanten Bildanzeiger.FIT (auf Bildschirmgröße zoomen) und Bildanzeiger.NORMAL (100%) möglich. + * @param factor Zoomfaktor (1.0 = 100%). + */ + public void setZoom(double zoom) { + this.zoom = zoom; + repaint(); + } + + /** + * Setzt die automatische Neuanzeige des Bildes. + * Mit dieser Methode kann man einstellen, ob nach jedem Zeichenbefehl + * die Anzeige auf dem Bildschirm aktualisiert werden soll. Bei sehr + * vielen Zeichenbefehlen wird die Ausgabe dadurch sehr langsam. Es reicht + * eine Anzeige am Ende der Zeichenbefehle. Rufen Sie dann für das Neuzeichnen + * die Methode refresh() auf. + * @param autoRefresh true, wenn nach jedem Zeichenbefehl die Anzeige aktualisiert werden soll. + */ + public void setAutoRefresh(boolean autoRefresh) { + picture.setAutoRefresh(autoRefresh); + } + + /** + * Sorgt für die Aktualisierung der Bildschrimanzeige. Das aktuelle Bild + * wird dadurch angezeigt. Durch Einstellung von autoRefresh kann die + * Anzeige automatisiert werden. + */ + public void refresh() { + repaint(); + } + + /** + * Setzt das angezeigt Bild neu und beachtet dabei den Zoomfaktor. + */ + public void repaint() { + double faktor = zoom; + + if (zoom == FIT) { + double faktorw = (double) this.getWorld().getWidth() / picture.getWidth(); + double faktorh = (double) this.getWorld().getHeight() / picture.getHeight(); + faktor = Math.min(faktorw, faktorh); + } + int gfi_width = (int) (picture.getWidth()*faktor); + int gfi_height = (int) (picture.getHeight()*faktor); + + setImage(new GreenfootImage(gfi_width, gfi_height)); + Graphics2D g = (Graphics2D) this.getImage().getAwtImage().getGraphics(); + g.drawImage(picture.getImage(),0,0,gfi_width, gfi_height, 0, 0, picture.getWidth(), picture.getHeight(), null); + g.setColor(new java.awt.Color(0,0,0)); + g.setStroke(new BasicStroke((float) 1)); + g.drawRect(0,0,gfi_width-1, gfi_height-1); + + } + + // Wrappermethoden + /** + * Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + * Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + * der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu. + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public void size(int width, int height){ + picture.size(width, height); + } + + /** + * Liefert die Breite des Bildes zurück. + * @return Breite des Bildes + */ + public int getImageWidth() { + return picture.getWidth(); + } + + /** + * Liefert die Höhe des Bildes zurück. + * @return Höhe des Bildes + */ + public int getImageHeight() { + return picture.getHeight(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + picture.background(c); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + picture.background(r,g,b); + } + + /** + * Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + * Um eine Linie einzufärben, verwenden Sie die {@link #stroke(int, int, int) stroke()} Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + * Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + * {@link #strokeWeight(double) strokeWeight()} geändert werden. + * @param x1 x-Koordinate des 1. Punktes + * @param y1 y-Koordinate des 1. Punktes + * @param x2 x-Koordinate des 2. Punktes + * @param y2 y-Koordinate des 2. Punktes + */ + public void line(int x1, int y1, int x2, int y2) { + picture.line(x1,y1,x2,y2); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + picture.rect(a,b,c,d); + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + picture.ellipse(a,b,c,d); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + picture.triangle(x1,y1,x2,y2,x3,y3); + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + picture.quad(x1,y1,x2,y2,x3,y3,x4,y4); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + public void polygon(int[] x, int[] y) { + picture.polygon(x,y); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + picture.point(x,y); + + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + * Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + * Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void rectMode(int mode) { + picture.rectMode(mode); + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + * Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + * Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als Breite und Höhe der Form. + * ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void ellipseMode(int mode) { + picture.ellipseMode(mode); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + picture.stroke(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + picture.noStroke(); + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + picture.strokeWeight(width); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + picture.fill(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + picture.noFill(); + } + + /** + * Löscht den Inhalt des Bildes. + * Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt. + */ + public void clear(){ + picture.clear(); + } + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + picture.load(filename); + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + picture.save(filename); + } + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param t Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String t, int x, int y) { + picture.text(t,x,y); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + picture.textFont(font); + } + + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + public Color[][] getPixelArray() { + return picture.getPixelArray(); + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + picture.setPixelArray(pixel); + } + + +} + diff --git a/04_loesungen/02_greenfoot/alg12_balkendiagramm_variante_xml/README.TXT b/04_loesungen/02_greenfoot/alg12_balkendiagramm_variante_xml/README.TXT new file mode 100644 index 0000000..4b8fadd --- /dev/null +++ b/04_loesungen/02_greenfoot/alg12_balkendiagramm_variante_xml/README.TXT @@ -0,0 +1,14 @@ +------------------------------------------------------------------------ +Dies ist die README-Datei des Projekts. Hier sollten Sie Ihr Projekt +beschreiben. +Erzählen Sie dem Leser (jemand, der nichts über dieses Projekt weiss), +alles, was er/sie wissen muss. Üblicherweise sollte der Kommentar +zumindest die folgenden Angaben umfassen: +------------------------------------------------------------------------ + +PROJEKTBEZEICHNUNG: +PROJEKTZWECK: +VERSION oder DATUM: +WIE IST DAS PROJEKT ZU STARTEN: +AUTOR(EN): +BENUTZERHINWEISE: diff --git a/04_loesungen/02_greenfoot/alg12_balkendiagramm_variante_xml/Table.java b/04_loesungen/02_greenfoot/alg12_balkendiagramm_variante_xml/Table.java new file mode 100644 index 0000000..ee5a211 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg12_balkendiagramm_variante_xml/Table.java @@ -0,0 +1,894 @@ +/** + * Die Klasse Table vereinfacht den Zugriff auf CSV-Dateien. + * Die Klassen Table und TableRow ermöglichen einen einfachen Zugriff auf tabellenbasierte + * Dokumente. + * + * @author Thomas Schaller + * @version 1.0 vom 01.02.2019 + */ + +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.ArrayList; +import java.io.*; +import java.util.Scanner; + +import org.jdom.Document; +import org.jdom.Element; +import org.jdom.Attribute; +import org.jdom.JDOMException; +import org.jdom.input.SAXBuilder; +import org.jdom.output.XMLOutputter; +import org.jdom.output.Format; + +public class Table +{ + // Standardtrennzeichen für Spalten + private static final char DEFAULT_SEPARATOR = ';'; + // Standardmarkierung für Texte + private static final char DEFAULT_QUOTE = '"'; + // Standardtrennzeichen für Dezimalzahlen + private static final char DEFAULT_COMMA = ','; + + // mögliche Spaltentypen + private static final String UNKNOWN ="UNKOWN"; + private static final String INT = "INTEGER"; + private static final String DOUBLE = "DOUBLE"; + private static final String FLOAT = "FLOAT"; + + // interne Verwaltung des Dokuments als JDOM-Document-Objekt + private Document doc; + // Verweis auf Element für Kopfzeile + private Element header; + // Ende Attribute + + /** + * Erzeugt leeres Tabellen-Dokument. + */ + public Table() { + this.doc = new Document(); + doc.setRootElement(new Element("CSV-Data")); + this.header = new Element("Header"); + doc.getRootElement().addContent(header); + } + + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei und erstellt ein Tabellenobjekt mit seinen Werten. + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public Table(String filename, String options, char separator, char quote) { + loadCSV(filename, options, separator, quote); + } + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei und erstellt ein Tabellenobjekt mit seinen Werten (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + */ + public Table(String filename, String options) { + loadCSV(filename, options); + } + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei ohne Kopfzeile und erstellt ein Tabellenobjekt mit seinen Werten (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public Table(String filename) { + loadCSV(filename); + } + + // Anfang Methoden + /** + * Liest den Inhalt einer CSV-Datei ohne Kopfzeile (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public void loadCSV(String filename) { + loadCSV(filename, ""); + } + + /** + * Liest den Inhalt einer CSV-Datei (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + */ + public void loadCSV(String filename, String options) { + loadCSV(filename, options, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** + * Liest den Inhalt einer CSV-Datei. + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public void loadCSV(String filename, String options, char separator, char quote) { + doc = new Document(); + doc.setRootElement(new Element("CSV-Data")); + header = new Element("Header"); + doc.getRootElement().addContent(header); + try { + File f = new File(filename); + Scanner scanner = new Scanner(new File(filename)); + if(options.toLowerCase().contains("header") && scanner.hasNext()) { + List entries = parseLine(scanner.nextLine(), separator, quote); + int i= 0; + for(String s : entries) { + Element entry = new Element("Column"); + header.addContent(entry); + entry.setText(s); + entry.setAttribute("type", "unknown"); + i++; + } + } + + List cols = header.getChildren(); + + while (scanner.hasNext()) { + Element line = new Element("Row"); + doc.getRootElement().addContent(line); + List entries = parseLine(scanner.nextLine(), separator, quote); + int i= 0; + + for(String s : entries) { + + if(i==cols.size()) { + Element entry = new Element("Column"); + entry.setAttribute("type", "unknown"); + header.addContent(entry); + cols = header.getChildren(); + } + + Element entry = new Element("Entry"); + entry.setText(s); + line.addContent(entry); + i++; + } + } + scanner.close(); + + } catch (Exception e) { + System.out.println("Fehler beim Lesen der CSV-Datei"); + } + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei ohne Kopfzeile (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public void saveCSV(String filename) { + saveCSV(filename, ""); + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthalten, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile haben soll, + * dann lassen Sie einfach die Option "header" weg. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile haben soll. + * @param filename Dateiname der CSV-Datei. + */ + public void saveCSV(String filename, String options) { + saveCSV(filename, options, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei. + * Wenn die Datei eine Kopfzeile enthalten, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile haben soll, + * dann lassen Sie einfach die Option "header" weg. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile haben soll. + * @param filename Dateiname der CSV-Datei. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public void saveCSV(String filename, String options, char separator, char quote){ + try{ + File f = new File(filename); + PrintStream outputFile = new PrintStream (f); + System.out.println("Speicher in : "+f.getAbsolutePath()); + List columns = header.getChildren(); + String sq = ""+quote; + String ss = ""+separator; + if(quote =='"') sq = "\""; + if(separator =='"') ss = "\""; + + if(options.toLowerCase().contains("header")) { + String h = ""; + for(Element c : columns) { + h += ss + sq + c.getText()+sq; + } + outputFile.println(h.substring(1)); + } + for(int i = 0; i parseLine(String cvsLine) { + return parseLine(cvsLine, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** HIlfsfunktion für die Analyse einer Dateizeile + * @param cvsLine Zeile aus der Datei + * @param sparator Trennzeichen für die Spalten + * @return Liste von String für die einzelnen Spalten + */ + private List parseLine(String cvsLine, char separator) { + return parseLine(cvsLine, separator, DEFAULT_QUOTE); + } + + /** HIlfsfunktion für die Analyse einer Dateizeile + * @param cvsLine Zeile aus der Datei + * @param sparator Trennzeichen für die Spalten + * @param customQuote Kennung für Strings + * @return Liste von String für die einzelnen Spalten + */ + private List parseLine(String cvsLine, char separator, char customQuote) { + + List result = new ArrayList<>(); + + //if empty, return! + if (cvsLine == null && cvsLine.isEmpty()) { + return result; + } + + //ggf. Default-Value laden + if (customQuote == ' ') { + customQuote = DEFAULT_QUOTE; + } + + if (separator == ' ') { + separator = DEFAULT_SEPARATOR; + } + + StringBuffer curVal = new StringBuffer(); + boolean inQuotes = false; + boolean startCollectChar = false; + boolean doubleQuotesInColumn = false; + + char[] chars = cvsLine.toCharArray(); + + for (char ch : chars) { + + if (inQuotes) { // aktueller Text ist in Quotes eingeschlossen + startCollectChar = true; + + if (ch == customQuote) { // Quotes werden beendet, aber Achtung bei "" => Metazeichen + inQuotes = false; + if (ch == '\"') { + doubleQuotesInColumn = true; + } + + } else { + + if (ch == '\"' && !doubleQuotesInColumn) { + doubleQuotesInColumn = true; + } else { + curVal.append(ch); + doubleQuotesInColumn = false; + } + + } + } else { + if (ch == customQuote) { + + inQuotes = true; + + //Fixed : allow "" in empty quote enclosed + if (ch == '\"'){ + if(doubleQuotesInColumn) { + curVal.append('"'); + doubleQuotesInColumn = false; + } else doubleQuotesInColumn = true; + + + } + } + else { + doubleQuotesInColumn = false; + if (ch == separator) { + + result.add(curVal.toString()); + + curVal = new StringBuffer(); + startCollectChar = false; + + } else if (ch == '\r') { + //ignore LF characters + continue; + } else if (ch == '\n') { + //the end, break! + break; + } else { + curVal.append(ch); + } + } + } + + } + result.add(curVal.toString()); + return result; + } + + /** + * Sucht die Nummer einer durch Namen gegebenen Spalte. + * @param name Name der Spalte + * @return Nummer der Spalte + */ + + private int findColumnNumber(String name) { + List columns = header.getChildren(); + int i = 0; + for(Element c : columns) { + if (c.getText().toLowerCase().equals(name.toLowerCase())) { + return i; + + } + i++; + } + return -1; + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an. + */ + public void addColumn() { + Element entry = new Element("Column"); + entry.setAttribute("type", Table.UNKNOWN); + header.addContent(entry); + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an und benennt sie. + * @param title Bezeichnung der Spalte + */ + public void addColumn(String title) { + addColumn(); + Element nc = ((List)(header.getChildren())).get(header.getChildren().size()-1); + nc.setText(title); + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an und benennt und typisiert sie. + * @param title Bezeichnung der Spalte + * @param type Typ der Spalte (UNKNOWN, DOUBLE, INTEGER, FLOAT) + */ + public void addColumn(String title, String type) { + addColumn(title); + Element nc = ((List)(header.getChildren())).get(header.getChildren().size()-1); + nc.setAttribute("type", type); + } + + /** + * Löscht eine Spalte. + * @param i Nummer der Spalte. + */ + public void removeColumn(int i) { + List lines = doc.getRootElement().getChildren(); + for(Element l : lines) { + if(l.getChildren().size()>i) l.removeContent(i); + } + } + + /** + * Löscht eine Spalte + * @param name Name der Spalte + */ + public void removeColumn(String name) { + try{ + removeColumn(findColumnNumber(name)); + } catch(Exception e) { System.out.println("Unbekannter Spaltenname");} + } + + /** + * Liefert die Anzahl der Spalten in der Tabelle + * @return Anzahl der Spalten + */ + public int getColumnCount() { + return header.getChildren().size(); + } + + /** + * Liefert die Anzahl der Zeilen in der Tabelle + * @return Anzahl der Zeilen + */ + public int getRowCount() { + return doc.getRootElement().getChildren().size()-1; + } + + /** + * Löscht alle Zeilen der Tabelle. + * Die Spaltenüberschriften und Typen bleiben erhalten. + */ + public void clearRows() { + doc.getRootElement().removeChildren("Row"); + } + + /** + * Fügt eine neue Zeile an das Ende der Tabelle an. + * @return ein TableRow-Objekt für diese neue Zeile + */ + public TableRow addRow() { + Element row = new Element("Row"); + doc.getRootElement().addContent(row); + return new TableRow(doc, row); + } + + /** + * Löscht eine Zeile + * @param i Nummer der Zeile + */ + public void removeRow(int i) { + if(i rows = doc.getRootElement().getChildren(); + return new TableRow(doc, rows.get(i+1)); + } + return null; + } + + /** + * Liefert die ganze Tabelle als Array von TableRow-Objekten + * @return Array von TableRow-Objekten + */ + public TableRow[] rows() { + TableRow[] rows = new TableRow[getRowCount()]; + for(int i = 0; i < getRowCount(); i++) { + rows[i] = getRow(i); + } + return rows; + } + + /** + * Liefert den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param column Spaltennummer + * @return Wert der Zelle + */ + public int getInt(int row, int column) { + return getRow(row).getInt(column); + } + + /** + * Liefert den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param name Name der Spalte + * @return Wert der Zelle + */ + public int getInt(int row, String name) { + return getRow(row).getInt(name); + } + + /** + * Setzt den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param column Spaltennummer + * @param value neuer Wert der Zelle + */ + public void setInt(int row, int column,int value) { + getRow(row).setInt(column, value); + } + + /** + * Setzt den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(int row, String name, int value) { + getRow(row).setInt(name, value); + } + + /** + * Liefert alle Werte einer Zeile als Integer-Array. + * @param row Nummer der Zeile + * @return int-Array, dass alle Werte der Zeile enthält + */ + public int[] getIntRow(int row) { + try{ + TableRow trow = getRow(row); + int anz = getColumnCount(); + int[] r = new int[anz]; + for(int i=0; i) (header.getChildren())).get(i).getText(); + } else { + return ""; + } + } + + /** + * Liefert die Nummer einer Spalte + * @param name Name der Spalte + * @return Nummer der Spalte + */ + public int getColumn(String name) { + List columns = header.getChildren(); + int i = 0; + while (i < columns.size()) { + if (columns.get(i).getText().toLowerCase().equals(name.toLowerCase())) { + return i; + } + i++; + } // end of while + return -1; + } + + + /** + * Erzeugt eine neue Zeile mit i Spalten + * Wenn bisher nicht genügend Spalten vorhanden sind, werden automatisch neue Spalten hinzugefügt (auch zum Header) + * @param i Anzahl der Spalten + */ + private Element buildRow(int i) { + List columns = header.getChildren(); + Element entry=null; + for(int j=0; j<=i; j++) { + + if(j==columns.size()) { + Element h = new Element("Column"); + h.setAttribute("type", "unknown"); + header.addContent(h); + columns = header.getChildren(); + } + if(j==current.getChildren().size()) { + entry = new Element("Entry"); + current.addContent(entry); + + } + + } + return entry; + + } + + /** + * Erzeugt eine neue Zeile. + * Es werden genügend Spalten erzeugt, dass ein Wert in Spalte "name" eingetragen werden kann + * @param name Name der Spalte + */ + private Element buildRow(String name) { + List columns = header.getChildren(); + int i = 0; + for(Element c: columns) { + + if(c.getText().toLowerCase().equals(name.toLowerCase())) { + return buildRow(i); + } + i++; + } + return null; + + } + + /** + * Liefert den Wert einer Zelle als String + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public String getString(int i) { + if(i >= current.getContent().size()) return ""; + Element e = (Element) current.getContent(i) ; + if(e!=null) { + return e.getText(); + } else { + return ""; + } + } + + /** + * Liefert den Wert einer Zelle als String + * @param name Name der Spalte + * @return Wert der Zelle + */ + public String getString(String name) { + return getString(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als String + * @param i Nummer der Spalte + * @param text neuer Wert der Zelle + */ + public void setString(int i, String text) { + + Element e = buildRow(i); + if(e!=null) e.setText(text); + } + + /** + * Setzt den Wert einer Zelle als String + * @param name Name der Spalte + * @param text neuer Wert der Zelle + */ + public void setString(String name, String text) { + Element e = buildRow(name); + if(e!=null) e.setText(text); + } + + + /** + * Liefert den Wert einer Zelle als Int-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public int getInt(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Integer.parseInt(e.getText()); + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Int-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public int getInt(String name) { + return getInt(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Int-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(int i,int value) { + + Element e = buildRow(i); + if(e!=null) e.setText(""+value); + } + + /** + * Setzt den Wert einer Zelle als Int-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(String name, int value) { + Element e = buildRow(name); + if(e!=null) e.setText(""+value); + } + + /** + * Liefert den Wert einer Zelle als Float-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public float getFloat(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Float.parseFloat(e.getText().replace(",",".")); + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Float-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public float getFloat(String name) { + return getFloat(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Float-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setFloat(int i,float value) { + + Element e = buildRow(i); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Setzt den Wert einer Zelle als Float-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setFloat(String name, float value) { + Element e = buildRow(name); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Liefert den Wert einer Zelle als Double-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public double getDouble(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Double.parseDouble(e.getText().replace(",",".")); + + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Double-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public double getDouble(String name) { + return getDouble(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Double-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setDouble(int i,double value) { + + Element e = buildRow(i); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Setzt den Wert einer Zelle als Double-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setDouble(String name, double value) { + Element e = buildRow(name); + if(e!=null) e.setText(format.format(value)); + } + +} diff --git a/04_loesungen/02_greenfoot/alg12_balkendiagramm_variante_xml/XML.java b/04_loesungen/02_greenfoot/alg12_balkendiagramm_variante_xml/XML.java new file mode 100644 index 0000000..c06c490 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg12_balkendiagramm_variante_xml/XML.java @@ -0,0 +1,637 @@ +/** + * Klasse zum Vereinfachten Zugriff auf XML-Dokumente + * Diese Klasse ist für den Einsatz in der Schule gedacht und soll den Schülern + * einen einfachen Zugriff auf XML-Dokumente ermöglichen. Die zur Verfügung + * stehenden Befehle sind wie in Processing realisiert. + * Dabei ist jeder Teilbaum des Dokuments wieder als XML-Objekt zugreifbar, das + * intern auf die gleiche XML-Dokumentstruktur zugreift. + * Dies ermöglicht bei unsachgemäßem Gebrauch die XML-Struktur zu zerstören. Im + * normalen Gebrauch sollte dies aber nicht relevant sein. + * + * Benötigt: jdom-1.1.3.jar + + * @author Thomas Schaller + * @version 1.0 vom 31.01.2019 + */ +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.ArrayList; +import java.io.*; + +import org.jdom.Document; +import org.jdom.Element; +import org.jdom.Attribute; +import org.jdom.JDOMException; +import org.jdom.input.SAXBuilder; +import org.jdom.output.XMLOutputter; +import org.jdom.output.Format; + +public class XML { + // Anfang Attribute + // XML-Dokumentstruktur + private Document doc; + // Zeiger auf das aktuelle Element + private Element current; + // Ende Attribute + + /** + * Erzeugt ein leeres XMLDokument + */ + public XML() { + this.doc = new Document(); + this.current = null; + } + + /** + * Erzeugt ein XML-Dokument aus einer Datei + * @param filename Dateiname der XML-Datei + */ + public XML(String filename) { + loadXML(filename); + } + + /** + * interner Konstruktor, um ein XML Objekt zu erzeugen, das auf einen bestimmten Knoten verweist + * @param doc die XML-Dokumentstruktur + * @param current Zeiger auf das aktuelle Element + */ + private XML(Document doc, Element current) { + this.doc = doc; + this.current = current; + } + + // Anfang Methoden + /** Öffnet das durch den Dateinamen gegebene Dokument + * @param filename Dateiname des XML-Files + */ + public void loadXML(String filename) { + doc = null; + File f = new File(filename); + + try { + // Das Dokument erstellen + SAXBuilder builder = new SAXBuilder(); + doc = builder.build(f); + + } catch (JDOMException e) { + e.printStackTrace(); + + } catch (IOException e) { + e.printStackTrace(); + } + // Zeiger im Baum auf Root-Element + current = doc.getRootElement(); + } + + /** Speichert den XML-Baum im angegebenen Dateinamen + * @param filename Dateiname des XML-Files + */ + public void saveXML(String filename) { + try { + // new XMLOutputter().output(doc, System.out); + XMLOutputter xmlOutput = new XMLOutputter(); + + // display nice nice + xmlOutput.setFormat(Format.getPrettyFormat()); + File f = new File(filename); + FileOutputStream outputFile = new FileOutputStream(f); + System.out.println("Speicher in : "+f.getAbsolutePath() ); + xmlOutput.output(doc, outputFile); + outputFile.close(); + System.out.println("File Saved!"); + } catch (IOException io) { + System.out.println(io.getMessage()); + } + + } + + //----------------------------------------------- Zeigerbewegungen -------------------------------------------------- + /** + * liefert ein XML-Objekt, das auf den Vaterknoten des aktuellen Elements zeigt. + * @return Vater des aktuellen Objekts. + */ + public XML getParent() { + if(current != null) { + Element parent = current.getParentElement(); + if (parent == null) { + return null; + } else { + return new XML(doc, parent); + } + } + return null; + } + + /** + * Überprüft, ob das Element irgendwelche Kinder hat oder nicht, und gibt das Ergebnis als boolean zurück. + * @return true, wenn Kinder vorhanden sind, sonst false + */ + public boolean hasChildren() { + if (current == null) { + return doc.hasRootElement(); + } else { + return current.getChildren().size()>0; + } + } + + /** + * Ermittelt die Namen aller Kinder des Elements und gibt die Namen als ein Array von Strings zurück. + * Dies ist dasselbe wie das Durchlaufen und Aufrufen von getName() auf jedem untergeordneten Element einzeln. + * @return Liste aller Namen der Kinder + */ + public String[] listChildren() { + if (current == null) { + if(doc.hasRootElement()) { + String[] names = new String[0]; + names[0] = doc.getRootElement().getName(); + return names; + } else { + return null; + } + } else { + List ch_element = current.getChildren(); + String[] names = new String[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + names[i] = ch_element.get(i).getName(); + } + return names; + } + } + + /** + * Liefert alle Kinder des Elements als Array von XML-Objekten. + * @return Array der Kinder als XML-Objekte + */ + public XML[] getChildren() { + if (current == null) { + if(doc.hasRootElement()) { + XML[] ch_xml = new XML[1]; + ch_xml[0] = new XML(doc, doc.getRootElement()); + return ch_xml; + } else { + return null; + } + } else { + List ch_element = current.getChildren(); + XML[] ch_xml = new XML[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + ch_xml[i] = new XML(doc, ch_element.get(i)); + } + return ch_xml; + } + } + + /** + * Liefert bestimmte Kinder des Elements als Array von XML-Objekten. + * Die Methode gibt dabei alle Kinder zurück, die dem angegebenen Namen entsprechen. + * @param name Name der gesuchten Kind-Objekte + * @return Array der Kinder als XML-Objekte + */ + public XML[] getChildren(String name) { + if (current == null) { + if(doc.hasRootElement()) { + XML[] ch_xml = new XML[1]; + ch_xml[0] = new XML(doc, doc.getRootElement()); + if(doc.getRootElement().getName().equals(name)){ + return ch_xml; + } else { + return null; + } + } else { + return null; + } + } else { + List ch_element = current.getChildren(name); + XML[] ch_xml = new XML[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + ch_xml[i] = new XML(doc, ch_element.get(i)); + } + return ch_xml; + } + } + + /** + * Liefert das erste Kind des Elements mit einem bestimmten Namen. + * Die Methode gibt das erste Kind zurück, das dem angegebenen Namen entsprechen. + * @param name Name des gesuchten Kind-Objektes + * @return Kind als XML-Objekt + */ + + public XML getChild(String name) { + if (current == null) { + Element e = doc.getRootElement(); + if (e.getName().equals(name)) { + return new XML(doc, e); + } else { + return null; + } + } else { + String[] names = name.split("/"); + Element e = current; + int i = 0; + while(i < names.length) { + e = e.getChild(names[i]); + if (e==null) return null; + i++; + } + return new XML(doc, e); + } + } + + /** + * Liefert das i. Kind des Elements. + * Die Methode gibt das i. Kind des aktuellen Elements zurück. + * @param i Nummer des Kindes + * @return Kind als XML-Objekt + */ + public XML getChild(int i) { + if (current == null) { + return new XML(doc, doc.getRootElement()); + } else { + List ch_element = current.getChildren(); + if (i>=ch_element.size()) return null; + return new XML(doc, ch_element.get(i)); + } + } + + //--------------------------------------------------- Methoden für das aktuelle Element ------------------------------------------------- + /** + * Frage den Namen des aktuellen Elements ab + * @return Namen des Elements + */ + public String getName() { + if (current==null) return ""; + return current.getName(); + } + + /** + * Setze den Namen des aktuellen Elements. + * @param name Neuer Name des Elements + */ + public void setName(String name) { + if (current==null) return; + current.setName(name); + } + + /** + * liefert die Anzahl der Attribute eines Elements. + * @return Anzahl des Attribute + */ + public int getAttributeCount() { + if (current == null) return 0; + return current.getAttributes().size(); + } + + /** + * liefert zurück, ob das aktuelle Element Attribute hat . + * @return true, wenn es Attribute gibt + */ + public boolean hasAttribute() { + if (current == null) return false; + return current.getAttributes().size()>0; + } + + /** + * Ruft alle Attribute des angegebenen Elements ab und gibt sie als Array von Strings zurück. + * @return Liste der Attributnamen + */ + public String[] listAttributes() { + if (current == null) return null; + List attr = current.getAttributes(); + String[] names = new String[attr.size()]; + for(int i=0; i < attr.size() ; i++) { + names[i] = attr.get(i).getName(); + } + return names; + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs + */ + public String getString(String attribute) { + if (current==null) return ""; + return current.getAttributeValue(attribute); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs + */ + public String getString(String attribute, String defaultValue) { + if (current==null) return defaultValue; + return current.getAttributeValue(attribute,defaultValue); + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param text neuer Wert des Attributs + */ + public void setString(String attribute, String text) { + if (current==null) return; + current.setAttribute(attribute, text); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Integer-Zahl + */ + public int getInt(String attribute) { + if (current==null) return 0; + try{ + int i = Integer.parseInt(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als Integer-Zahl + */ + public int getInt(String attribute, int defaultValue) { + if (current==null) return defaultValue; + try{ + int i = Integer.parseInt(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setInt(String attribute, int value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Float-Zahl + */ + public float getFloat(String attribute) { + if (current==null) return 0; + try{ + float i = Float.parseFloat(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als Float-Zahl + */ + public float getFloat(String attribute, float defaultValue) { + if (current==null) return defaultValue; + try{ + float i = Float.parseFloat(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setFloat(String attribute, float value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Double-Zahl + */ + public double getDouble(String attribute) { + if (current==null) return 0; + try{ + double i = Double.parseDouble(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + +/** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als double-Zahl + */ + public double getDouble(String attribute, double defaultValue) { + if (current==null) return defaultValue; + try{ + double i = Double.parseDouble(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setDouble(String attribute, double value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt den Inhalt/Text des aktuellen Elements ab + * @return Inhalt des Elements + */ + public String getContent() { + if ( current==null) return ""; + + return current.getText(); + } + + /** + * Fragt den Inhalt/Text des aktuellen Elements ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardtext + * @return Inhalt des Elements + */ + public String getContent(String defaultValue) { + if ( current==null) return defaultValue; + String t = current.getText(); + if(t.equals("")) t = defaultValue; + return t; + } + + /** + * Setzt den Inhalt/Text des aktuellen Elements + * @param text Neuer Inhalt des Elements + */ + public void setContent(String text) { + if ( current==null) return; + current.setText(text); + } + + + /** + * Fragt den Inhalt des aktuellen Elements als Integerzahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ public int getIntContent(int defaultValue) { + if ( current==null) return defaultValue; + try{ + int i = Integer.parseInt(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Integerzahl ab + * @return Inhalt des Elements + */ + public int getIntContent() { + if ( current==null) return 0; + try{ + int i = Integer.parseInt(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setIntContent(int value) { + if ( current==null) return; + current.setText(""+value); + } + + + /** + * Fragt den Inhalt des aktuellen Elements als Floatzahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ + public float getFloatContent(float defaultValue) { + if ( current==null) return defaultValue; + try{ + float i = Float.parseFloat(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Floatzahl ab + * @return Inhalt des Elements + */ + public float getFloatContent() { + if ( current==null) return 0; + try{ + float i = Float.parseFloat(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setFloatContent(float value) { + if ( current==null) return; + current.setText(""+value); + } + +/** + * Fragt den Inhalt des aktuellen Elements als Doublezahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ + public double getDoubleContent(double defaultValue) { + if ( current==null) return defaultValue; + try{ + double i = Double.parseDouble(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Doublezahl ab + * @return Inhalt des Elements + */ + public double getDoubleContent() { + if ( current==null) return 0; + try{ + double i = Double.parseDouble(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setDoubleContent(double value) { + if ( current==null) return; + current.setText(""+value); + } + + + // ----------------------------------------------- XML-Struktur aufbauen ------------------------------------------------ + /** Erzeuge neues Element nach der aktuellen Position und setze dieses als aktuelles Element + * @param name Name des neuen Elements + * @return neues Element als XML-Objekt + */ + public XML addChild(String name) { + Element e = new Element(name); + if(current == null){ // man ist auf Root-Ebene + doc.setRootElement(e); + + } + else { + current.addContent(e); + } // end of if-else + return new XML(doc, e); + } + + /** + * liefert das aktuelle Element als jdom-Element-Objekt + * @return aktuelles Element + */ + private Element getCurrent() { + return current; + } + + /** + * löscht ein Kind des aktuellen Knotens. + * Ist kid kein Kind des aktuellen Elements passiert gar nichts. + * @param kid XML-Objekt des Kindes + */ + public void removeChild(XML kid) { + if (current == null) return; + Element e = kid.getCurrent(); + int index = current.indexOf(e); + if(index >= 0) { current.removeContent(e);} + } + +} diff --git a/04_loesungen/02_greenfoot/alg12_balkendiagramm_variante_xml/images/balken.png b/04_loesungen/02_greenfoot/alg12_balkendiagramm_variante_xml/images/balken.png new file mode 100644 index 0000000..9ff1ffc Binary files /dev/null and b/04_loesungen/02_greenfoot/alg12_balkendiagramm_variante_xml/images/balken.png differ diff --git a/04_loesungen/02_greenfoot/alg12_balkendiagramm_variante_xml/images/bilderrahmen.png b/04_loesungen/02_greenfoot/alg12_balkendiagramm_variante_xml/images/bilderrahmen.png new file mode 100644 index 0000000..7f34e32 Binary files /dev/null and b/04_loesungen/02_greenfoot/alg12_balkendiagramm_variante_xml/images/bilderrahmen.png differ diff --git a/04_loesungen/02_greenfoot/alg12_balkendiagramm_variante_xml/jdom-1.1.3.jar b/04_loesungen/02_greenfoot/alg12_balkendiagramm_variante_xml/jdom-1.1.3.jar new file mode 100644 index 0000000..a287727 Binary files /dev/null and b/04_loesungen/02_greenfoot/alg12_balkendiagramm_variante_xml/jdom-1.1.3.jar differ diff --git a/04_loesungen/02_greenfoot/alg12_balkendiagramm_variante_xml/project.greenfoot b/04_loesungen/02_greenfoot/alg12_balkendiagramm_variante_xml/project.greenfoot new file mode 100644 index 0000000..9440be0 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg12_balkendiagramm_variante_xml/project.greenfoot @@ -0,0 +1,93 @@ +#Greenfoot project file +class.Balkendiagramm.image=balken.png +class.PictureViewer.image=bilderrahmen.png +dependency1.from=MyWorld +dependency1.to=Balkendiagramm +dependency1.type=UsesDependency +dependency2.from=PictureViewer +dependency2.to=Picture +dependency2.type=UsesDependency +dependency3.from=Balkendiagramm +dependency3.to=XML +dependency3.type=UsesDependency +dependency4.from=Table +dependency4.to=TableRow +dependency4.type=UsesDependency +dependency5.from=Picture +dependency5.to=PictureViewer +dependency5.type=UsesDependency +editor.fx.0.height=0 +editor.fx.0.width=0 +editor.fx.0.x=0 +editor.fx.0.y=0 +height=885 +package.numDependencies=5 +package.numTargets=7 +project.charset=UTF-8 +publish.hasSource=false +publish.locked=true +publish.longDesc= +publish.shortDesc= +publish.tags= +publish.title= +publish.url= +readme.height=58 +readme.name=@README +readme.width=47 +readme.x=10 +readme.y=10 +simulation.speed=97 +target1.height=50 +target1.name=PictureViewer +target1.showInterface=false +target1.type=ClassTarget +target1.width=100 +target1.x=0 +target1.y=0 +target2.height=50 +target2.name=Table +target2.showInterface=false +target2.type=ClassTarget +target2.width=80 +target2.x=0 +target2.y=0 +target3.height=50 +target3.name=Balkendiagramm +target3.showInterface=false +target3.type=ClassTarget +target3.width=120 +target3.x=0 +target3.y=0 +target4.height=50 +target4.name=Picture +target4.showInterface=false +target4.type=ClassTarget +target4.width=80 +target4.x=0 +target4.y=0 +target5.height=50 +target5.name=XML +target5.showInterface=false +target5.type=ClassTarget +target5.width=100 +target5.x=0 +target5.y=0 +target6.height=50 +target6.name=TableRow +target6.showInterface=false +target6.type=ClassTarget +target6.width=80 +target6.x=0 +target6.y=0 +target7.height=50 +target7.name=MyWorld +target7.showInterface=false +target7.type=ClassTarget +target7.width=80 +target7.x=0 +target7.y=0 +version=3.0.0 +width=1350 +world.lastInstantiated=MyWorld +xPosition=449 +yPosition=138 diff --git a/04_loesungen/02_greenfoot/alg12_balkendiagramm_variante_xml/punkte.xml b/04_loesungen/02_greenfoot/alg12_balkendiagramm_variante_xml/punkte.xml new file mode 100644 index 0000000..3160a8f --- /dev/null +++ b/04_loesungen/02_greenfoot/alg12_balkendiagramm_variante_xml/punkte.xml @@ -0,0 +1,28 @@ + + +
+ + +
+ + Niko + 216 + + + Klaus + 591 + + + Anna + 1057 + + + Lena + 180 + + + Winfried + 168 + +
+ diff --git a/04_loesungen/02_greenfoot/alg13_maximumsuche_loesung/Balkendiagramm.java b/04_loesungen/02_greenfoot/alg13_maximumsuche_loesung/Balkendiagramm.java new file mode 100644 index 0000000..86a69f1 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg13_maximumsuche_loesung/Balkendiagramm.java @@ -0,0 +1,169 @@ +import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot und MouseInfo) +import java.awt.Font; + +/** + * Balkendiagramm für int-Array, Zahlen werden aus CSV-Datei gelesen, Maximum der Werte wird bestimmt. + * Hinweis zur Benutzung: + * Start des Algorithmus: Rufe im Kontextmenü (rechte Maustaste) die Methode maximumsuche() auf + * Start des automatischen Tests: Rufe im Kontextmenü (rechte Maustaste) die Methode testen() auf + * @author Schaller + * @version 29.11.18 + */ + +public class Balkendiagramm extends PictureViewer + +{ + // Liste mit allen Werten //<>// + int[] zahlen; + String[] namen; + + // Hilfsvariablen für die Suche + int akt_maximum=-1; // aktuell groesstes Element + int akt=-1; // aktuell untersuchtes Element + int verzoegerung=1000; // Geschwindigkeit der Ausführung + + // Schriften + Font kleineSchrift; + Font grosseSchrift; + + public Balkendiagramm() { + size(1000, 700); + background(0); + kleineSchrift = new Font( Font.SANS_SERIF, Font.PLAIN, 12 ); + grosseSchrift = new Font( Font.SANS_SERIF, Font.PLAIN, 20 ); + + // CSV-Datei laden und anzeigen + ladeTabelle("punkte.csv"); + zeichneBalken(); + } + + public void ladeTabelle(String name) { + // Tabelle aus CSV-Datei laden + Table csv = new Table(name, "header",',','"'); + + if (csv != null && csv.getColumnCount()==2) { + + // Initialisiere Arrays, in die alle Zeilen der Tabelle passen + zahlen = new int[csv.getRowCount()]; + namen = new String[csv.getRowCount()]; + + // Fülle die Arrays mit Werten aus der Tabelle + for (int i = 0; i < zahlen.length; i++) { + // Lies Wert aus der i. Zeile und der Spalte "Punkte" bzw. "Name" + zahlen[i] = csv.getInt(i, "Punkte"); + namen[i] = csv.getString(i, "Name"); + } + } + } + + public void zeichneBalken() { + + clear(); + + // Überschrift + fill(255,255,255); + textFont(grosseSchrift); + text("Punkte", 2, 20); + textFont(kleineSchrift); + + // Alle Einträge darstellen + if (zahlen != null) { + for (int i = 0; i< zahlen.length; i++) { + + fill(20,25,165); + // aktuelle Elemente farblich hervorheben + if (i == akt) { + fill(140,230,20); + } + if (i == akt_maximum) { + fill(230,60,140); + } + + // Balkendiagramm zeichnen + if (zahlen[i]>=0) rect(120, 25+i*15, zahlen[i]+1, 13); + + // Beschriftung + fill(255,255,255); + text(namen[i], 2, 35+i*15); + text(""+zahlen[i], 70, 35+i*15); + } + } + } + + public int maximumsuche() { + // Sind überhaupt Daten da? + if(zahlen.length==0 ) { //<>// + return -1; + } + + // Startwerte setzen + akt_maximum = 0; + akt = 1; + + // Alle Arrayelemente untersuchen + while (akt < zahlen.length) { + // Neu zeichnen, da akt neu gesetzt wurde + zeichneBalken(); + Greenfoot.delay(verzoegerung); + // Neues größtes Element?? + if (zahlen[akt]> zahlen[akt_maximum]) { + // Dann merke dir das neue + akt_maximum = akt; + // Zeichne Balken neu, da neues größtes Element + zeichneBalken(); + Greenfoot.delay(verzoegerung); + } + akt = akt + 1; + } + //Suche beendet + akt = -1; + zeichneBalken(); + + // Gib Position des größten Elements zurück + return akt_maximum; + } + + + public boolean testen() { + boolean allesBestanden = true; + // Testfall 1 + verzoegerung = 0; //<>// + ladeTabelle("testfall1.csv"); + int m1 = maximumsuche(); + if (m1 == 12) { + System.out.println("Maximum korrekt gefunden. In Datei testfall1.csv ist der größte Wert "+ zahlen[m1]+" von "+namen[m1]+" an Position "+m1); + } else { + System.out.println("Maximum in testfall.csv nicht gefunden. Du ermittelst "+m1+" richtig wäre 12"); + allesBestanden = false; + } + // Testfall 2: negative Zahlen + ladeTabelle("testfall2.csv"); + int m2 = maximumsuche(); + if (m2 == 3) { + System.out.println("Maximum korrekt gefunden. In Datei testfall2.csv ist der größte Wert "+ zahlen[m2]+" von "+namen[m2]+" an Position "+m2); + } else { + System.out.println("Maximum in testfall2.csv nicht gefunden. Du ermittelst "+m2+" richtig wäre 3"); + allesBestanden = false; + } + // Testfall 3: Nur 1 Element + ladeTabelle("testfall3.csv"); + int m3 = maximumsuche(); + if (m3 == 0) { + System.out.println("Maximum korrekt gefunden. In Datei testfall3.csv ist der größte Wert "+ zahlen[m3]+" von "+namen[m3]+" an Position "+m3); + } else { + System.out.println("Maximum in testfall3.csv nicht gefunden. Du ermittelst "+m3+" richtig wäre 0"); + allesBestanden = false; + } + // Testfall 4: Leere Liste + ladeTabelle("testfall4.csv"); + int m4 = maximumsuche(); + if (m4 == -1) { + System.out.println("Maximum korrekt gefunden. Da die Datei keine Spieler enthält wird -1 zurückgegeben."); + } else { + System.out.println("Maximum in testfall4.csv nicht gefunden. Du ermittelst "+m4+" richtig wäre -1, da die Datei leer ist."); + allesBestanden = false; + } + return allesBestanden; + } + +} diff --git a/04_loesungen/02_greenfoot/alg13_maximumsuche_loesung/MyWorld.java b/04_loesungen/02_greenfoot/alg13_maximumsuche_loesung/MyWorld.java new file mode 100644 index 0000000..11434f1 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg13_maximumsuche_loesung/MyWorld.java @@ -0,0 +1,36 @@ +import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot und MouseInfo) + +/** + * Ergänzen Sie hier eine Beschreibung für die Klasse MyWorld. + * + * @author (Ihr Name) + * @version (eine Versionsnummer oder ein Datum) + */ +public class MyWorld extends World +{ + + /** + * Konstruktor für Objekte der Klasse MyWorld + * + */ + public MyWorld() + { + // Erstellt eine neue Welt mit 1200x900 Pixeln + super(1000, 700, 1); + + prepare(); + } + + + /** + * Bereite die Welt für den Programmstart vor. + * Das heißt: Erzeuge die Anfangs-Objekte und füge sie der Welt hinzu. + */ + private void prepare() + { + Balkendiagramm balkendiagramm = new Balkendiagramm(); + addObject(balkendiagramm,500,350); + + } +} + diff --git a/04_loesungen/02_greenfoot/alg13_maximumsuche_loesung/Picture.java b/04_loesungen/02_greenfoot/alg13_maximumsuche_loesung/Picture.java new file mode 100644 index 0000000..8df3d55 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg13_maximumsuche_loesung/Picture.java @@ -0,0 +1,699 @@ +import java.awt.image.*; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.BasicStroke; +import java.util.Vector; +import javax.imageio.*; +import java.io.*; +import java.awt.*; +import javax.swing.*; +import java.util.Random; +import java.awt.geom.AffineTransform; +/** + * + * Bildklasse für die Simulation von Processing-Befehlen + * + * Diese Klasse stellt ein BufferedImage bereit, in das mit Processing-Befehlen gezeichnet + * werden kann. + * Zusätzlich kann ein Bildanzeiger über jede Änderung des Bildes informiert werden, + * um "Zurück"-Befehle zu ermöglichen. Der Bildanzeiger ist entweder eine normale Java + * ScrollPane oder ein Actor aus Greenfoot. + * Die Dokumentation der einzelnen Zeichenmethoden ist der Processing-Reference + * (https://processing.org/reference/ steht unter CC-Lizenz: https://creativecommons.org/) + * entnommen und mit Deepl.com ins Deutsche übersetzt. + * + * @version 1.0 from 23.01.2019 + * @author Thomas Schaller (ZPG Informatik Klasse 9) + */ + +public class Picture{ + + // Einstellungmöglichkeiten für das Zeichnen von Rechtecken und Ellipsen + // RADIUS = Mittelpunkt+Radius wird gegeben, CENTER = Mittelpunkt und Breite/Höhe wird gegeben, + // CORNER = Linke obere Ecke + Breite/Höhe, CORNERS = Linke obere und rechte untere Ecke + public static final int RADIUS = 1; + public static final int CENTER = 2; + public static final int CORNER = 3; + public static final int CORNERS = 4; + + // gespeichertes Bild, + private BufferedImage image; + + // aktuelle Farbeinstellungen + private Color background; + private Color pencolor; + private Color fillcolor; + + // aktuelle Stiftdicke + private double stroke; + + // akkteller Koordinatenmodus von Rechtecken und Ellipsen + private int ellipseMode = CENTER; + private int rectMode = CORNER; + + // aktueller Font + private Font textfont = null; + + // muss ein Bildanzeiger benachrichtigt werden + private PictureViewer observer = null; + private boolean autorefresh = true; + + /** + * Erzeugt ein Bild mit Standardgröße 500x400 + */ + public Picture() { + this(500,400); + } + + /** + * Erzeugt ein Bild der angegeben Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public Picture(int width, int height) { + this(width,height, "D0D0D0"); + } + + /** + * Erzeugt ein Bild aus einer Datei + * @param filename Dateiname des Bildes + */ + public Picture(String filename) { + load(filename); + } + + /** + * Erzeugt ein Bild der angegebenen Größe mit festgelegtem Hintergrund + * @param width Breite des Bildes + * @param height Höhe des Bildes + * @param background Farbe des Hintergrunds + */ + public Picture(int width, int height, String background) { + this.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + this.background = decode(background); + this.pencolor = new Color(0,0,0); + this.stroke = 1; + this.fillcolor = null; + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(this.background); + g.fillRect(0,0,width-1, height-1); + } + + /** + * Legt fest, wer das Bild anzeigt. + * Diese ermöglicht die Benachrichtung des Observers, wenn sich das Bild ändert. + * @param observer Anzeiger des Bildes + */ + + public void setObserver(PictureViewer observer) { + this.observer= observer; + } + + /** + * Direktes Setzen des Bildes (für interne Zwecke) + * @param b Bild, das gespeichert werden soll. + */ + public void setImage(BufferedImage b) { + image = b; + } + + /** + * Direktes Abfragen des Bildes (für interne Zwecke) + * @return Bild, das gerade gespeichert ist. + */ + public BufferedImage getImage() { + return image; + } + + /** + * Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + * Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + * der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu. + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public void size(int width, int height){ + pushImage(); + this.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(background); + g.fillRect(0,0,width-1, height-1); + } + + /** + * Liefert die Breite des Bildes zurück. + * @return Breite des Bildes + */ + public int getWidth() { + return image.getWidth(); + } + + /** + * Liefert die Höhe des Bildes zurück. + * @return Höhe des Bildes + */ + public int getHeight() { + return image.getHeight(); + } + + + /** + * Erzeugt eine Kopie des Bildes und übergibt sie an den Observer (falls existent), damit dieser die Versionen speichern kann + */ + private void pushImage() { + if(observer != null) { + observer.pushImage(); + } + } + + + /** + * Legt fest, ob nach jedem Zeichenbefehl automatisch das Bild auch in + * der Oberfläche aktualisiert wird. Die Einstellung "false" beschleunigt + * das Zeichnen aufwändiger Bilder und verhindert "Flackern". + * Das Neuzeichnen kann durch die Methode "refresh" gezielt ausgelöst werden. + * @param autorefresh true = nach jedem Zeichenbefehl die Anzeige aktualisieren, false= nur durch die Methode refresh neu zeichnen + */ + public void setAutoRefresh(boolean autoRefresh) { + this.autorefresh = autoRefresh; + } + + + /** + * Auch die anzeigenden Klasse wird zum Neuzeichnen aufgefordert. + */ + private void repaint() { + if(observer != null && autorefresh) { + observer.repaint(); + } + } + + /** + * Auch die anzeigenden Klasse wird zum Neuzeichnen aufgefordert. + */ + public void refresh() { + if(observer != null) { + observer.repaint(); + } + } + + // ----------------------------------------- Zeichenfunktionen ----------------------------------------------- + /** + * Löscht den Inhalt des Bildes. + * Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt. + */ + + public void clear(){ + pushImage(); + image = new BufferedImage(image.getWidth(), image.getHeight(), image.getType()); + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(background); + g.fillRect(0,0,image.getWidth()-1, image.getHeight()-1); + repaint(); + } + + /** + * Konvertiert die in einem bestimmten Modus gegebenen Koordinaten in die Java-übliche Links_Oben_Breite_Höhe Version + * Die Änderungen werden direkt im Array vorgenommen + * @param coord Array mit vier Koordinateneinträgen im gegebenen Modus + * @param mode Modus der Koordinaten (CORNER, CORNERS, RADIUS oder CENTER) + */ + private void convert(int[] coord, int mode) { + switch(mode) { + case CORNER: break; + case CORNERS: coord[2] -= coord[0]; coord[3] -= coord[1]; break; + case RADIUS: coord[2] *= 2; coord[3] *=2; + case CENTER: coord[0] -= coord[2]/2; coord[1] -= coord[3]/2; + } + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + * Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + * Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void rectMode(int mode) { + rectMode = mode; + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + * Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + * Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als Breite und Höhe der Form. + * ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void ellipseMode(int mode) { + ellipseMode = mode; + } + + + + /** + * Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + * Um eine Linie einzufärben, verwenden Sie die {@link #stroke(int, int, int) stroke()} Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + * Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + * {@link #strokeWeight(double) strokeWeight()} geändert werden. + * @param x1 x-Koordinate des 1. Punktes + * @param y1 y-Koordinate des 1. Punktes + * @param x2 x-Koordinate des 2. Punktes + * @param y2 y-Koordinate des 2. Punktes + */ + public void line(int x1, int y1, int x2, int y2) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + if (stroke > 0) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawLine(x1, y1, x2, y2); + } + repaint(); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, rectMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillRect(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawRect(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, ellipseMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillOval(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawOval(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + int px[] = {x1, x2, x3}; + int py[] = {y1, y2, y3}; + polygon(px, py); + + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + + int px[] = {x1, x2, x3, x4}; + int py[] = {y1, y2, y3, y4}; + polygon(px, py); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + + public void polygon(int[] x, int[] y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(fillcolor != null) { + + g.setColor(fillcolor); + g.fillPolygon(x,y, y.length); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawPolygon(x, y, x.length); + } + repaint(); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + ellipse(x,y,1, 1); + + } + + // ----------------------------------------- Schriftdarstellung ----------------------------------------------- + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param s Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String s, int x, int y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(pencolor != null) { + g.setColor(fillcolor); + g.setStroke(new BasicStroke((float) stroke)); + g.setFont(textfont); + g.drawString(s, x, y); + } + repaint(); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + this.textfont = font; + } + + + // ----------------------------------------- Farbfestlegungen ----------------------------------------------- + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(String color) { + try{ + return new Color( + Integer.valueOf( color.substring( 0, 2 ), 16 ), + Integer.valueOf( color.substring( 2, 4 ), 16 ), + Integer.valueOf( color.substring( 4, 6 ), 16 ) ); + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(int color) { + try{ + if(color >=0 && color < 256) { + return new Color(color,color,color); + } else { + int r = color / 0x010000 % 0xFF; + int g = color / 0x000100 % 0xFF; + int b = color % 0xFF; + System.out.println(""+r+","+g+","+b); + return new Color(r, g, b ); + } + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + this.pencolor = decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + this.pencolor=decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + this.pencolor = new Color(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + this.pencolor = null; + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + this.stroke = width; + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + this.fillcolor = decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + this.fillcolor=decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + this.fillcolor = new Color(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + this.fillcolor = null; + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + if(c < 256) { + this.background=new Color(c,c,c); + } else { + int r = c / 0x010000; + int g = c / 0x000100 % 0xFF; + int b = c % 0xFF; + this.background= new Color(r, g, b ); + } + + this.clear(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + this.background=new Color(r,g,b); + this.clear(); + } + + +// ----------------------------------------- Dateioperationen ----------------------------------------------- + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + try{ + this.image = ImageIO.read(new File(filename)); + this.background = decode("D0D0D0"); + this.pencolor = new Color(0,0,0); + this.fillcolor = null; + this.stroke = 1; + this.repaint(); + + } catch(Exception e) { + System.out.println("Fehler beim Einlesen der Bilddatei"); + } + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + try{ + String[] fn = filename.split("\\."); + if (fn.length== 1) { + ImageIO.write(image, "PNG", new File(filename+".png")); + } else { + + if (fn.length == 2 && (fn[1].toUpperCase().equals("PNG") || + fn[1].toUpperCase().equals("GIF"))){ + ImageIO.write(image, fn[1], new File(filename)); + }else { + System.out.println("Unbekanntes Bildformat"); + } + } + + } catch(Exception e) { + System.out.println("Fehler beim Speichern"); + } + } + + +// ----------------------------------------- Sonstiges ----------------------------------------------- + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + + public Color[][] getPixelArray() { + Color[][] pixel = new Color[image.getWidth()][image.getHeight()]; + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + pixel[x][y] = new java.awt.Color(image.getRGB(x,y)); + } + } + return pixel; + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + size(pixel.length,pixel[0].length); + Graphics2D g = (Graphics2D) image.getGraphics(); + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + g.setColor(pixel[x][y]); + g.fillRect(x, y, 1, 1); + } + } + repaint(); + } + + /** + * Hilfsfunktion zum Verzögern der Ausgabe + * @param millis Wartezeit in Millisekunden + */ + public void delay(int millis) { + try{ + Thread.sleep(millis); + + } catch(Exception e) { + + } + + } + + + +} diff --git a/04_loesungen/02_greenfoot/alg13_maximumsuche_loesung/PictureViewer.java b/04_loesungen/02_greenfoot/alg13_maximumsuche_loesung/PictureViewer.java new file mode 100644 index 0000000..ecbb521 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg13_maximumsuche_loesung/PictureViewer.java @@ -0,0 +1,499 @@ +import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot und MouseInfo) +import java.awt.image.*; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.BasicStroke; +import java.awt.Font; +import java.util.Vector; +import java.awt.Color; +import javax.imageio.*; +import java.io.*; + +/** + * Der PictureViewer ist ein Actor, der in der Lage ist ein + * Objekt der Klasse Picture anzuzeigen. Zusätzlich können + * mehrere Verarbeitungsschritte gespeichert werden, um ein + * "zurück"-Funktion zu ermöglichen. + * + * @author Thomas Schaller + * @version V1.0 vom 10.02.2019 + */ +public class PictureViewer extends Actor +{ + public static final int FIT = -1; + public static final int NORMAL = 1; + + private static final int ANZ_BACK = 0; + + private double zoom; + protected Picture picture = null; + private Vector history; + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der Größe 500x400 + */ + public PictureViewer() { + this(500,400); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public PictureViewer(int width, int height) { + this(width,height, "D0D0D0"); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + * @param background Farbe des Hintergrunds als HEX-String (z.B. "FF3A45") + */ + public PictureViewer(int width, int height, String background) { + picture = new Picture(width,height, background); + picture.setObserver(this); + this.history = new Vector(); + this.zoom = NORMAL; + repaint(); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild aus einer Bilddatei + * @param filename Name des Bildes + */ + public PictureViewer(String filename) { + picture = new Picture(filename); + picture.setObserver(this); + this.history = new Vector(); + this.zoom = NORMAL; + repaint(); + } + + /** + * Speichert das übergebene Bild in der History. + * @param b zu speicherndes Bild + */ + public void pushImage() { + if( this.ANZ_BACK > 0) { + if(history.size() == this.ANZ_BACK) { + history.removeElementAt(0); + } + + BufferedImage b = new BufferedImage(picture.getWidth(), picture.getHeight(), picture.getImage().getType()); + Graphics g = b.getGraphics(); + g.drawImage(picture.getImage(), 0, 0, null); + g.dispose(); + + history.add(b); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + private void popImage() { + int anz = history.size(); + if(anz>0) { + BufferedImage i = history.get(anz-1); + history.removeElementAt(anz-1); + picture.setImage(i); + repaint(); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + public void back() { + popImage(); + } + + /** + * Setzt den Zoom-Faktor für das Bild. + * Als Zoomfaktor sind auch die Konstanten Bildanzeiger.FIT (auf Bildschirmgröße zoomen) und Bildanzeiger.NORMAL (100%) möglich. + * @param factor Zoomfaktor (1.0 = 100%). + */ + public void setZoom(double zoom) { + this.zoom = zoom; + repaint(); + } + + /** + * Setzt die automatische Neuanzeige des Bildes. + * Mit dieser Methode kann man einstellen, ob nach jedem Zeichenbefehl + * die Anzeige auf dem Bildschirm aktualisiert werden soll. Bei sehr + * vielen Zeichenbefehlen wird die Ausgabe dadurch sehr langsam. Es reicht + * eine Anzeige am Ende der Zeichenbefehle. Rufen Sie dann für das Neuzeichnen + * die Methode refresh() auf. + * @param autoRefresh true, wenn nach jedem Zeichenbefehl die Anzeige aktualisiert werden soll. + */ + public void setAutoRefresh(boolean autoRefresh) { + picture.setAutoRefresh(autoRefresh); + } + + /** + * Sorgt für die Aktualisierung der Bildschrimanzeige. Das aktuelle Bild + * wird dadurch angezeigt. Durch Einstellung von autoRefresh kann die + * Anzeige automatisiert werden. + */ + public void refresh() { + repaint(); + } + + /** + * Setzt das angezeigt Bild neu und beachtet dabei den Zoomfaktor. + */ + public void repaint() { + double faktor = zoom; + + if (zoom == FIT) { + double faktorw = (double) this.getWorld().getWidth() / picture.getWidth(); + double faktorh = (double) this.getWorld().getHeight() / picture.getHeight(); + faktor = Math.min(faktorw, faktorh); + } + int gfi_width = (int) (picture.getWidth()*faktor); + int gfi_height = (int) (picture.getHeight()*faktor); + + setImage(new GreenfootImage(gfi_width, gfi_height)); + Graphics2D g = (Graphics2D) this.getImage().getAwtImage().getGraphics(); + g.drawImage(picture.getImage(),0,0,gfi_width, gfi_height, 0, 0, picture.getWidth(), picture.getHeight(), null); + g.setColor(new java.awt.Color(0,0,0)); + g.setStroke(new BasicStroke((float) 1)); + g.drawRect(0,0,gfi_width-1, gfi_height-1); + + } + + // Wrappermethoden + /** + * Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + * Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + * der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu. + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public void size(int width, int height){ + picture.size(width, height); + } + + /** + * Liefert die Breite des Bildes zurück. + * @return Breite des Bildes + */ + public int getImageWidth() { + return picture.getWidth(); + } + + /** + * Liefert die Höhe des Bildes zurück. + * @return Höhe des Bildes + */ + public int getImageHeight() { + return picture.getHeight(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + picture.background(c); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + picture.background(r,g,b); + } + + /** + * Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + * Um eine Linie einzufärben, verwenden Sie die {@link #stroke(int, int, int) stroke()} Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + * Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + * {@link #strokeWeight(double) strokeWeight()} geändert werden. + * @param x1 x-Koordinate des 1. Punktes + * @param y1 y-Koordinate des 1. Punktes + * @param x2 x-Koordinate des 2. Punktes + * @param y2 y-Koordinate des 2. Punktes + */ + public void line(int x1, int y1, int x2, int y2) { + picture.line(x1,y1,x2,y2); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + picture.rect(a,b,c,d); + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + picture.ellipse(a,b,c,d); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + picture.triangle(x1,y1,x2,y2,x3,y3); + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + picture.quad(x1,y1,x2,y2,x3,y3,x4,y4); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + public void polygon(int[] x, int[] y) { + picture.polygon(x,y); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + picture.point(x,y); + + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + * Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + * Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void rectMode(int mode) { + picture.rectMode(mode); + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + * Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + * Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als Breite und Höhe der Form. + * ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void ellipseMode(int mode) { + picture.ellipseMode(mode); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + picture.stroke(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + picture.noStroke(); + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + picture.strokeWeight(width); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + picture.fill(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + picture.noFill(); + } + + /** + * Löscht den Inhalt des Bildes. + * Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt. + */ + public void clear(){ + picture.clear(); + } + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + picture.load(filename); + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + picture.save(filename); + } + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param t Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String t, int x, int y) { + picture.text(t,x,y); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + picture.textFont(font); + } + + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + public Color[][] getPixelArray() { + return picture.getPixelArray(); + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + picture.setPixelArray(pixel); + } + + +} + diff --git a/04_loesungen/02_greenfoot/alg13_maximumsuche_loesung/README.TXT b/04_loesungen/02_greenfoot/alg13_maximumsuche_loesung/README.TXT new file mode 100644 index 0000000..4b8fadd --- /dev/null +++ b/04_loesungen/02_greenfoot/alg13_maximumsuche_loesung/README.TXT @@ -0,0 +1,14 @@ +------------------------------------------------------------------------ +Dies ist die README-Datei des Projekts. Hier sollten Sie Ihr Projekt +beschreiben. +Erzählen Sie dem Leser (jemand, der nichts über dieses Projekt weiss), +alles, was er/sie wissen muss. Üblicherweise sollte der Kommentar +zumindest die folgenden Angaben umfassen: +------------------------------------------------------------------------ + +PROJEKTBEZEICHNUNG: +PROJEKTZWECK: +VERSION oder DATUM: +WIE IST DAS PROJEKT ZU STARTEN: +AUTOR(EN): +BENUTZERHINWEISE: diff --git a/04_loesungen/02_greenfoot/alg13_maximumsuche_loesung/Table.java b/04_loesungen/02_greenfoot/alg13_maximumsuche_loesung/Table.java new file mode 100644 index 0000000..ee5a211 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg13_maximumsuche_loesung/Table.java @@ -0,0 +1,894 @@ +/** + * Die Klasse Table vereinfacht den Zugriff auf CSV-Dateien. + * Die Klassen Table und TableRow ermöglichen einen einfachen Zugriff auf tabellenbasierte + * Dokumente. + * + * @author Thomas Schaller + * @version 1.0 vom 01.02.2019 + */ + +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.ArrayList; +import java.io.*; +import java.util.Scanner; + +import org.jdom.Document; +import org.jdom.Element; +import org.jdom.Attribute; +import org.jdom.JDOMException; +import org.jdom.input.SAXBuilder; +import org.jdom.output.XMLOutputter; +import org.jdom.output.Format; + +public class Table +{ + // Standardtrennzeichen für Spalten + private static final char DEFAULT_SEPARATOR = ';'; + // Standardmarkierung für Texte + private static final char DEFAULT_QUOTE = '"'; + // Standardtrennzeichen für Dezimalzahlen + private static final char DEFAULT_COMMA = ','; + + // mögliche Spaltentypen + private static final String UNKNOWN ="UNKOWN"; + private static final String INT = "INTEGER"; + private static final String DOUBLE = "DOUBLE"; + private static final String FLOAT = "FLOAT"; + + // interne Verwaltung des Dokuments als JDOM-Document-Objekt + private Document doc; + // Verweis auf Element für Kopfzeile + private Element header; + // Ende Attribute + + /** + * Erzeugt leeres Tabellen-Dokument. + */ + public Table() { + this.doc = new Document(); + doc.setRootElement(new Element("CSV-Data")); + this.header = new Element("Header"); + doc.getRootElement().addContent(header); + } + + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei und erstellt ein Tabellenobjekt mit seinen Werten. + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public Table(String filename, String options, char separator, char quote) { + loadCSV(filename, options, separator, quote); + } + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei und erstellt ein Tabellenobjekt mit seinen Werten (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + */ + public Table(String filename, String options) { + loadCSV(filename, options); + } + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei ohne Kopfzeile und erstellt ein Tabellenobjekt mit seinen Werten (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public Table(String filename) { + loadCSV(filename); + } + + // Anfang Methoden + /** + * Liest den Inhalt einer CSV-Datei ohne Kopfzeile (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public void loadCSV(String filename) { + loadCSV(filename, ""); + } + + /** + * Liest den Inhalt einer CSV-Datei (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + */ + public void loadCSV(String filename, String options) { + loadCSV(filename, options, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** + * Liest den Inhalt einer CSV-Datei. + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public void loadCSV(String filename, String options, char separator, char quote) { + doc = new Document(); + doc.setRootElement(new Element("CSV-Data")); + header = new Element("Header"); + doc.getRootElement().addContent(header); + try { + File f = new File(filename); + Scanner scanner = new Scanner(new File(filename)); + if(options.toLowerCase().contains("header") && scanner.hasNext()) { + List entries = parseLine(scanner.nextLine(), separator, quote); + int i= 0; + for(String s : entries) { + Element entry = new Element("Column"); + header.addContent(entry); + entry.setText(s); + entry.setAttribute("type", "unknown"); + i++; + } + } + + List cols = header.getChildren(); + + while (scanner.hasNext()) { + Element line = new Element("Row"); + doc.getRootElement().addContent(line); + List entries = parseLine(scanner.nextLine(), separator, quote); + int i= 0; + + for(String s : entries) { + + if(i==cols.size()) { + Element entry = new Element("Column"); + entry.setAttribute("type", "unknown"); + header.addContent(entry); + cols = header.getChildren(); + } + + Element entry = new Element("Entry"); + entry.setText(s); + line.addContent(entry); + i++; + } + } + scanner.close(); + + } catch (Exception e) { + System.out.println("Fehler beim Lesen der CSV-Datei"); + } + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei ohne Kopfzeile (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public void saveCSV(String filename) { + saveCSV(filename, ""); + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthalten, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile haben soll, + * dann lassen Sie einfach die Option "header" weg. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile haben soll. + * @param filename Dateiname der CSV-Datei. + */ + public void saveCSV(String filename, String options) { + saveCSV(filename, options, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei. + * Wenn die Datei eine Kopfzeile enthalten, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile haben soll, + * dann lassen Sie einfach die Option "header" weg. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile haben soll. + * @param filename Dateiname der CSV-Datei. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public void saveCSV(String filename, String options, char separator, char quote){ + try{ + File f = new File(filename); + PrintStream outputFile = new PrintStream (f); + System.out.println("Speicher in : "+f.getAbsolutePath()); + List columns = header.getChildren(); + String sq = ""+quote; + String ss = ""+separator; + if(quote =='"') sq = "\""; + if(separator =='"') ss = "\""; + + if(options.toLowerCase().contains("header")) { + String h = ""; + for(Element c : columns) { + h += ss + sq + c.getText()+sq; + } + outputFile.println(h.substring(1)); + } + for(int i = 0; i parseLine(String cvsLine) { + return parseLine(cvsLine, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** HIlfsfunktion für die Analyse einer Dateizeile + * @param cvsLine Zeile aus der Datei + * @param sparator Trennzeichen für die Spalten + * @return Liste von String für die einzelnen Spalten + */ + private List parseLine(String cvsLine, char separator) { + return parseLine(cvsLine, separator, DEFAULT_QUOTE); + } + + /** HIlfsfunktion für die Analyse einer Dateizeile + * @param cvsLine Zeile aus der Datei + * @param sparator Trennzeichen für die Spalten + * @param customQuote Kennung für Strings + * @return Liste von String für die einzelnen Spalten + */ + private List parseLine(String cvsLine, char separator, char customQuote) { + + List result = new ArrayList<>(); + + //if empty, return! + if (cvsLine == null && cvsLine.isEmpty()) { + return result; + } + + //ggf. Default-Value laden + if (customQuote == ' ') { + customQuote = DEFAULT_QUOTE; + } + + if (separator == ' ') { + separator = DEFAULT_SEPARATOR; + } + + StringBuffer curVal = new StringBuffer(); + boolean inQuotes = false; + boolean startCollectChar = false; + boolean doubleQuotesInColumn = false; + + char[] chars = cvsLine.toCharArray(); + + for (char ch : chars) { + + if (inQuotes) { // aktueller Text ist in Quotes eingeschlossen + startCollectChar = true; + + if (ch == customQuote) { // Quotes werden beendet, aber Achtung bei "" => Metazeichen + inQuotes = false; + if (ch == '\"') { + doubleQuotesInColumn = true; + } + + } else { + + if (ch == '\"' && !doubleQuotesInColumn) { + doubleQuotesInColumn = true; + } else { + curVal.append(ch); + doubleQuotesInColumn = false; + } + + } + } else { + if (ch == customQuote) { + + inQuotes = true; + + //Fixed : allow "" in empty quote enclosed + if (ch == '\"'){ + if(doubleQuotesInColumn) { + curVal.append('"'); + doubleQuotesInColumn = false; + } else doubleQuotesInColumn = true; + + + } + } + else { + doubleQuotesInColumn = false; + if (ch == separator) { + + result.add(curVal.toString()); + + curVal = new StringBuffer(); + startCollectChar = false; + + } else if (ch == '\r') { + //ignore LF characters + continue; + } else if (ch == '\n') { + //the end, break! + break; + } else { + curVal.append(ch); + } + } + } + + } + result.add(curVal.toString()); + return result; + } + + /** + * Sucht die Nummer einer durch Namen gegebenen Spalte. + * @param name Name der Spalte + * @return Nummer der Spalte + */ + + private int findColumnNumber(String name) { + List columns = header.getChildren(); + int i = 0; + for(Element c : columns) { + if (c.getText().toLowerCase().equals(name.toLowerCase())) { + return i; + + } + i++; + } + return -1; + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an. + */ + public void addColumn() { + Element entry = new Element("Column"); + entry.setAttribute("type", Table.UNKNOWN); + header.addContent(entry); + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an und benennt sie. + * @param title Bezeichnung der Spalte + */ + public void addColumn(String title) { + addColumn(); + Element nc = ((List)(header.getChildren())).get(header.getChildren().size()-1); + nc.setText(title); + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an und benennt und typisiert sie. + * @param title Bezeichnung der Spalte + * @param type Typ der Spalte (UNKNOWN, DOUBLE, INTEGER, FLOAT) + */ + public void addColumn(String title, String type) { + addColumn(title); + Element nc = ((List)(header.getChildren())).get(header.getChildren().size()-1); + nc.setAttribute("type", type); + } + + /** + * Löscht eine Spalte. + * @param i Nummer der Spalte. + */ + public void removeColumn(int i) { + List lines = doc.getRootElement().getChildren(); + for(Element l : lines) { + if(l.getChildren().size()>i) l.removeContent(i); + } + } + + /** + * Löscht eine Spalte + * @param name Name der Spalte + */ + public void removeColumn(String name) { + try{ + removeColumn(findColumnNumber(name)); + } catch(Exception e) { System.out.println("Unbekannter Spaltenname");} + } + + /** + * Liefert die Anzahl der Spalten in der Tabelle + * @return Anzahl der Spalten + */ + public int getColumnCount() { + return header.getChildren().size(); + } + + /** + * Liefert die Anzahl der Zeilen in der Tabelle + * @return Anzahl der Zeilen + */ + public int getRowCount() { + return doc.getRootElement().getChildren().size()-1; + } + + /** + * Löscht alle Zeilen der Tabelle. + * Die Spaltenüberschriften und Typen bleiben erhalten. + */ + public void clearRows() { + doc.getRootElement().removeChildren("Row"); + } + + /** + * Fügt eine neue Zeile an das Ende der Tabelle an. + * @return ein TableRow-Objekt für diese neue Zeile + */ + public TableRow addRow() { + Element row = new Element("Row"); + doc.getRootElement().addContent(row); + return new TableRow(doc, row); + } + + /** + * Löscht eine Zeile + * @param i Nummer der Zeile + */ + public void removeRow(int i) { + if(i rows = doc.getRootElement().getChildren(); + return new TableRow(doc, rows.get(i+1)); + } + return null; + } + + /** + * Liefert die ganze Tabelle als Array von TableRow-Objekten + * @return Array von TableRow-Objekten + */ + public TableRow[] rows() { + TableRow[] rows = new TableRow[getRowCount()]; + for(int i = 0; i < getRowCount(); i++) { + rows[i] = getRow(i); + } + return rows; + } + + /** + * Liefert den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param column Spaltennummer + * @return Wert der Zelle + */ + public int getInt(int row, int column) { + return getRow(row).getInt(column); + } + + /** + * Liefert den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param name Name der Spalte + * @return Wert der Zelle + */ + public int getInt(int row, String name) { + return getRow(row).getInt(name); + } + + /** + * Setzt den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param column Spaltennummer + * @param value neuer Wert der Zelle + */ + public void setInt(int row, int column,int value) { + getRow(row).setInt(column, value); + } + + /** + * Setzt den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(int row, String name, int value) { + getRow(row).setInt(name, value); + } + + /** + * Liefert alle Werte einer Zeile als Integer-Array. + * @param row Nummer der Zeile + * @return int-Array, dass alle Werte der Zeile enthält + */ + public int[] getIntRow(int row) { + try{ + TableRow trow = getRow(row); + int anz = getColumnCount(); + int[] r = new int[anz]; + for(int i=0; i) (header.getChildren())).get(i).getText(); + } else { + return ""; + } + } + + /** + * Liefert die Nummer einer Spalte + * @param name Name der Spalte + * @return Nummer der Spalte + */ + public int getColumn(String name) { + List columns = header.getChildren(); + int i = 0; + while (i < columns.size()) { + if (columns.get(i).getText().toLowerCase().equals(name.toLowerCase())) { + return i; + } + i++; + } // end of while + return -1; + } + + + /** + * Erzeugt eine neue Zeile mit i Spalten + * Wenn bisher nicht genügend Spalten vorhanden sind, werden automatisch neue Spalten hinzugefügt (auch zum Header) + * @param i Anzahl der Spalten + */ + private Element buildRow(int i) { + List columns = header.getChildren(); + Element entry=null; + for(int j=0; j<=i; j++) { + + if(j==columns.size()) { + Element h = new Element("Column"); + h.setAttribute("type", "unknown"); + header.addContent(h); + columns = header.getChildren(); + } + if(j==current.getChildren().size()) { + entry = new Element("Entry"); + current.addContent(entry); + + } + + } + return entry; + + } + + /** + * Erzeugt eine neue Zeile. + * Es werden genügend Spalten erzeugt, dass ein Wert in Spalte "name" eingetragen werden kann + * @param name Name der Spalte + */ + private Element buildRow(String name) { + List columns = header.getChildren(); + int i = 0; + for(Element c: columns) { + + if(c.getText().toLowerCase().equals(name.toLowerCase())) { + return buildRow(i); + } + i++; + } + return null; + + } + + /** + * Liefert den Wert einer Zelle als String + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public String getString(int i) { + if(i >= current.getContent().size()) return ""; + Element e = (Element) current.getContent(i) ; + if(e!=null) { + return e.getText(); + } else { + return ""; + } + } + + /** + * Liefert den Wert einer Zelle als String + * @param name Name der Spalte + * @return Wert der Zelle + */ + public String getString(String name) { + return getString(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als String + * @param i Nummer der Spalte + * @param text neuer Wert der Zelle + */ + public void setString(int i, String text) { + + Element e = buildRow(i); + if(e!=null) e.setText(text); + } + + /** + * Setzt den Wert einer Zelle als String + * @param name Name der Spalte + * @param text neuer Wert der Zelle + */ + public void setString(String name, String text) { + Element e = buildRow(name); + if(e!=null) e.setText(text); + } + + + /** + * Liefert den Wert einer Zelle als Int-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public int getInt(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Integer.parseInt(e.getText()); + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Int-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public int getInt(String name) { + return getInt(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Int-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(int i,int value) { + + Element e = buildRow(i); + if(e!=null) e.setText(""+value); + } + + /** + * Setzt den Wert einer Zelle als Int-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(String name, int value) { + Element e = buildRow(name); + if(e!=null) e.setText(""+value); + } + + /** + * Liefert den Wert einer Zelle als Float-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public float getFloat(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Float.parseFloat(e.getText().replace(",",".")); + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Float-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public float getFloat(String name) { + return getFloat(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Float-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setFloat(int i,float value) { + + Element e = buildRow(i); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Setzt den Wert einer Zelle als Float-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setFloat(String name, float value) { + Element e = buildRow(name); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Liefert den Wert einer Zelle als Double-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public double getDouble(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Double.parseDouble(e.getText().replace(",",".")); + + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Double-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public double getDouble(String name) { + return getDouble(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Double-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setDouble(int i,double value) { + + Element e = buildRow(i); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Setzt den Wert einer Zelle als Double-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setDouble(String name, double value) { + Element e = buildRow(name); + if(e!=null) e.setText(format.format(value)); + } + +} diff --git a/04_loesungen/02_greenfoot/alg13_maximumsuche_loesung/XML.java b/04_loesungen/02_greenfoot/alg13_maximumsuche_loesung/XML.java new file mode 100644 index 0000000..c06c490 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg13_maximumsuche_loesung/XML.java @@ -0,0 +1,637 @@ +/** + * Klasse zum Vereinfachten Zugriff auf XML-Dokumente + * Diese Klasse ist für den Einsatz in der Schule gedacht und soll den Schülern + * einen einfachen Zugriff auf XML-Dokumente ermöglichen. Die zur Verfügung + * stehenden Befehle sind wie in Processing realisiert. + * Dabei ist jeder Teilbaum des Dokuments wieder als XML-Objekt zugreifbar, das + * intern auf die gleiche XML-Dokumentstruktur zugreift. + * Dies ermöglicht bei unsachgemäßem Gebrauch die XML-Struktur zu zerstören. Im + * normalen Gebrauch sollte dies aber nicht relevant sein. + * + * Benötigt: jdom-1.1.3.jar + + * @author Thomas Schaller + * @version 1.0 vom 31.01.2019 + */ +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.ArrayList; +import java.io.*; + +import org.jdom.Document; +import org.jdom.Element; +import org.jdom.Attribute; +import org.jdom.JDOMException; +import org.jdom.input.SAXBuilder; +import org.jdom.output.XMLOutputter; +import org.jdom.output.Format; + +public class XML { + // Anfang Attribute + // XML-Dokumentstruktur + private Document doc; + // Zeiger auf das aktuelle Element + private Element current; + // Ende Attribute + + /** + * Erzeugt ein leeres XMLDokument + */ + public XML() { + this.doc = new Document(); + this.current = null; + } + + /** + * Erzeugt ein XML-Dokument aus einer Datei + * @param filename Dateiname der XML-Datei + */ + public XML(String filename) { + loadXML(filename); + } + + /** + * interner Konstruktor, um ein XML Objekt zu erzeugen, das auf einen bestimmten Knoten verweist + * @param doc die XML-Dokumentstruktur + * @param current Zeiger auf das aktuelle Element + */ + private XML(Document doc, Element current) { + this.doc = doc; + this.current = current; + } + + // Anfang Methoden + /** Öffnet das durch den Dateinamen gegebene Dokument + * @param filename Dateiname des XML-Files + */ + public void loadXML(String filename) { + doc = null; + File f = new File(filename); + + try { + // Das Dokument erstellen + SAXBuilder builder = new SAXBuilder(); + doc = builder.build(f); + + } catch (JDOMException e) { + e.printStackTrace(); + + } catch (IOException e) { + e.printStackTrace(); + } + // Zeiger im Baum auf Root-Element + current = doc.getRootElement(); + } + + /** Speichert den XML-Baum im angegebenen Dateinamen + * @param filename Dateiname des XML-Files + */ + public void saveXML(String filename) { + try { + // new XMLOutputter().output(doc, System.out); + XMLOutputter xmlOutput = new XMLOutputter(); + + // display nice nice + xmlOutput.setFormat(Format.getPrettyFormat()); + File f = new File(filename); + FileOutputStream outputFile = new FileOutputStream(f); + System.out.println("Speicher in : "+f.getAbsolutePath() ); + xmlOutput.output(doc, outputFile); + outputFile.close(); + System.out.println("File Saved!"); + } catch (IOException io) { + System.out.println(io.getMessage()); + } + + } + + //----------------------------------------------- Zeigerbewegungen -------------------------------------------------- + /** + * liefert ein XML-Objekt, das auf den Vaterknoten des aktuellen Elements zeigt. + * @return Vater des aktuellen Objekts. + */ + public XML getParent() { + if(current != null) { + Element parent = current.getParentElement(); + if (parent == null) { + return null; + } else { + return new XML(doc, parent); + } + } + return null; + } + + /** + * Überprüft, ob das Element irgendwelche Kinder hat oder nicht, und gibt das Ergebnis als boolean zurück. + * @return true, wenn Kinder vorhanden sind, sonst false + */ + public boolean hasChildren() { + if (current == null) { + return doc.hasRootElement(); + } else { + return current.getChildren().size()>0; + } + } + + /** + * Ermittelt die Namen aller Kinder des Elements und gibt die Namen als ein Array von Strings zurück. + * Dies ist dasselbe wie das Durchlaufen und Aufrufen von getName() auf jedem untergeordneten Element einzeln. + * @return Liste aller Namen der Kinder + */ + public String[] listChildren() { + if (current == null) { + if(doc.hasRootElement()) { + String[] names = new String[0]; + names[0] = doc.getRootElement().getName(); + return names; + } else { + return null; + } + } else { + List ch_element = current.getChildren(); + String[] names = new String[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + names[i] = ch_element.get(i).getName(); + } + return names; + } + } + + /** + * Liefert alle Kinder des Elements als Array von XML-Objekten. + * @return Array der Kinder als XML-Objekte + */ + public XML[] getChildren() { + if (current == null) { + if(doc.hasRootElement()) { + XML[] ch_xml = new XML[1]; + ch_xml[0] = new XML(doc, doc.getRootElement()); + return ch_xml; + } else { + return null; + } + } else { + List ch_element = current.getChildren(); + XML[] ch_xml = new XML[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + ch_xml[i] = new XML(doc, ch_element.get(i)); + } + return ch_xml; + } + } + + /** + * Liefert bestimmte Kinder des Elements als Array von XML-Objekten. + * Die Methode gibt dabei alle Kinder zurück, die dem angegebenen Namen entsprechen. + * @param name Name der gesuchten Kind-Objekte + * @return Array der Kinder als XML-Objekte + */ + public XML[] getChildren(String name) { + if (current == null) { + if(doc.hasRootElement()) { + XML[] ch_xml = new XML[1]; + ch_xml[0] = new XML(doc, doc.getRootElement()); + if(doc.getRootElement().getName().equals(name)){ + return ch_xml; + } else { + return null; + } + } else { + return null; + } + } else { + List ch_element = current.getChildren(name); + XML[] ch_xml = new XML[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + ch_xml[i] = new XML(doc, ch_element.get(i)); + } + return ch_xml; + } + } + + /** + * Liefert das erste Kind des Elements mit einem bestimmten Namen. + * Die Methode gibt das erste Kind zurück, das dem angegebenen Namen entsprechen. + * @param name Name des gesuchten Kind-Objektes + * @return Kind als XML-Objekt + */ + + public XML getChild(String name) { + if (current == null) { + Element e = doc.getRootElement(); + if (e.getName().equals(name)) { + return new XML(doc, e); + } else { + return null; + } + } else { + String[] names = name.split("/"); + Element e = current; + int i = 0; + while(i < names.length) { + e = e.getChild(names[i]); + if (e==null) return null; + i++; + } + return new XML(doc, e); + } + } + + /** + * Liefert das i. Kind des Elements. + * Die Methode gibt das i. Kind des aktuellen Elements zurück. + * @param i Nummer des Kindes + * @return Kind als XML-Objekt + */ + public XML getChild(int i) { + if (current == null) { + return new XML(doc, doc.getRootElement()); + } else { + List ch_element = current.getChildren(); + if (i>=ch_element.size()) return null; + return new XML(doc, ch_element.get(i)); + } + } + + //--------------------------------------------------- Methoden für das aktuelle Element ------------------------------------------------- + /** + * Frage den Namen des aktuellen Elements ab + * @return Namen des Elements + */ + public String getName() { + if (current==null) return ""; + return current.getName(); + } + + /** + * Setze den Namen des aktuellen Elements. + * @param name Neuer Name des Elements + */ + public void setName(String name) { + if (current==null) return; + current.setName(name); + } + + /** + * liefert die Anzahl der Attribute eines Elements. + * @return Anzahl des Attribute + */ + public int getAttributeCount() { + if (current == null) return 0; + return current.getAttributes().size(); + } + + /** + * liefert zurück, ob das aktuelle Element Attribute hat . + * @return true, wenn es Attribute gibt + */ + public boolean hasAttribute() { + if (current == null) return false; + return current.getAttributes().size()>0; + } + + /** + * Ruft alle Attribute des angegebenen Elements ab und gibt sie als Array von Strings zurück. + * @return Liste der Attributnamen + */ + public String[] listAttributes() { + if (current == null) return null; + List attr = current.getAttributes(); + String[] names = new String[attr.size()]; + for(int i=0; i < attr.size() ; i++) { + names[i] = attr.get(i).getName(); + } + return names; + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs + */ + public String getString(String attribute) { + if (current==null) return ""; + return current.getAttributeValue(attribute); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs + */ + public String getString(String attribute, String defaultValue) { + if (current==null) return defaultValue; + return current.getAttributeValue(attribute,defaultValue); + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param text neuer Wert des Attributs + */ + public void setString(String attribute, String text) { + if (current==null) return; + current.setAttribute(attribute, text); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Integer-Zahl + */ + public int getInt(String attribute) { + if (current==null) return 0; + try{ + int i = Integer.parseInt(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als Integer-Zahl + */ + public int getInt(String attribute, int defaultValue) { + if (current==null) return defaultValue; + try{ + int i = Integer.parseInt(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setInt(String attribute, int value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Float-Zahl + */ + public float getFloat(String attribute) { + if (current==null) return 0; + try{ + float i = Float.parseFloat(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als Float-Zahl + */ + public float getFloat(String attribute, float defaultValue) { + if (current==null) return defaultValue; + try{ + float i = Float.parseFloat(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setFloat(String attribute, float value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Double-Zahl + */ + public double getDouble(String attribute) { + if (current==null) return 0; + try{ + double i = Double.parseDouble(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + +/** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als double-Zahl + */ + public double getDouble(String attribute, double defaultValue) { + if (current==null) return defaultValue; + try{ + double i = Double.parseDouble(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setDouble(String attribute, double value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt den Inhalt/Text des aktuellen Elements ab + * @return Inhalt des Elements + */ + public String getContent() { + if ( current==null) return ""; + + return current.getText(); + } + + /** + * Fragt den Inhalt/Text des aktuellen Elements ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardtext + * @return Inhalt des Elements + */ + public String getContent(String defaultValue) { + if ( current==null) return defaultValue; + String t = current.getText(); + if(t.equals("")) t = defaultValue; + return t; + } + + /** + * Setzt den Inhalt/Text des aktuellen Elements + * @param text Neuer Inhalt des Elements + */ + public void setContent(String text) { + if ( current==null) return; + current.setText(text); + } + + + /** + * Fragt den Inhalt des aktuellen Elements als Integerzahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ public int getIntContent(int defaultValue) { + if ( current==null) return defaultValue; + try{ + int i = Integer.parseInt(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Integerzahl ab + * @return Inhalt des Elements + */ + public int getIntContent() { + if ( current==null) return 0; + try{ + int i = Integer.parseInt(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setIntContent(int value) { + if ( current==null) return; + current.setText(""+value); + } + + + /** + * Fragt den Inhalt des aktuellen Elements als Floatzahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ + public float getFloatContent(float defaultValue) { + if ( current==null) return defaultValue; + try{ + float i = Float.parseFloat(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Floatzahl ab + * @return Inhalt des Elements + */ + public float getFloatContent() { + if ( current==null) return 0; + try{ + float i = Float.parseFloat(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setFloatContent(float value) { + if ( current==null) return; + current.setText(""+value); + } + +/** + * Fragt den Inhalt des aktuellen Elements als Doublezahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ + public double getDoubleContent(double defaultValue) { + if ( current==null) return defaultValue; + try{ + double i = Double.parseDouble(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Doublezahl ab + * @return Inhalt des Elements + */ + public double getDoubleContent() { + if ( current==null) return 0; + try{ + double i = Double.parseDouble(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setDoubleContent(double value) { + if ( current==null) return; + current.setText(""+value); + } + + + // ----------------------------------------------- XML-Struktur aufbauen ------------------------------------------------ + /** Erzeuge neues Element nach der aktuellen Position und setze dieses als aktuelles Element + * @param name Name des neuen Elements + * @return neues Element als XML-Objekt + */ + public XML addChild(String name) { + Element e = new Element(name); + if(current == null){ // man ist auf Root-Ebene + doc.setRootElement(e); + + } + else { + current.addContent(e); + } // end of if-else + return new XML(doc, e); + } + + /** + * liefert das aktuelle Element als jdom-Element-Objekt + * @return aktuelles Element + */ + private Element getCurrent() { + return current; + } + + /** + * löscht ein Kind des aktuellen Knotens. + * Ist kid kein Kind des aktuellen Elements passiert gar nichts. + * @param kid XML-Objekt des Kindes + */ + public void removeChild(XML kid) { + if (current == null) return; + Element e = kid.getCurrent(); + int index = current.indexOf(e); + if(index >= 0) { current.removeContent(e);} + } + +} diff --git a/04_loesungen/02_greenfoot/alg13_maximumsuche_loesung/images/balken.png b/04_loesungen/02_greenfoot/alg13_maximumsuche_loesung/images/balken.png new file mode 100644 index 0000000..9ff1ffc Binary files /dev/null and b/04_loesungen/02_greenfoot/alg13_maximumsuche_loesung/images/balken.png differ diff --git a/04_loesungen/02_greenfoot/alg13_maximumsuche_loesung/images/bilderrahmen.png b/04_loesungen/02_greenfoot/alg13_maximumsuche_loesung/images/bilderrahmen.png new file mode 100644 index 0000000..7f34e32 Binary files /dev/null and b/04_loesungen/02_greenfoot/alg13_maximumsuche_loesung/images/bilderrahmen.png differ diff --git a/04_loesungen/02_greenfoot/alg13_maximumsuche_loesung/jdom-1.1.3.jar b/04_loesungen/02_greenfoot/alg13_maximumsuche_loesung/jdom-1.1.3.jar new file mode 100644 index 0000000..a287727 Binary files /dev/null and b/04_loesungen/02_greenfoot/alg13_maximumsuche_loesung/jdom-1.1.3.jar differ diff --git a/04_loesungen/02_greenfoot/alg13_maximumsuche_loesung/project.greenfoot b/04_loesungen/02_greenfoot/alg13_maximumsuche_loesung/project.greenfoot new file mode 100644 index 0000000..a39ad7c --- /dev/null +++ b/04_loesungen/02_greenfoot/alg13_maximumsuche_loesung/project.greenfoot @@ -0,0 +1,93 @@ +#Greenfoot project file +class.Balkendiagramm.image=balken.png +class.PictureViewer.image=bilderrahmen.png +dependency1.from=MyWorld +dependency1.to=Balkendiagramm +dependency1.type=UsesDependency +dependency2.from=PictureViewer +dependency2.to=Picture +dependency2.type=UsesDependency +dependency3.from=Balkendiagramm +dependency3.to=Table +dependency3.type=UsesDependency +dependency4.from=Table +dependency4.to=TableRow +dependency4.type=UsesDependency +dependency5.from=Picture +dependency5.to=PictureViewer +dependency5.type=UsesDependency +editor.fx.0.height=739 +editor.fx.0.width=816 +editor.fx.0.x=552 +editor.fx.0.y=100 +height=885 +package.numDependencies=5 +package.numTargets=7 +project.charset=UTF-8 +publish.hasSource=false +publish.locked=true +publish.longDesc= +publish.shortDesc= +publish.tags= +publish.title= +publish.url= +readme.height=58 +readme.name=@README +readme.width=47 +readme.x=10 +readme.y=10 +simulation.speed=97 +target1.height=50 +target1.name=PictureViewer +target1.showInterface=false +target1.type=ClassTarget +target1.width=100 +target1.x=0 +target1.y=0 +target2.height=50 +target2.name=Table +target2.showInterface=false +target2.type=ClassTarget +target2.width=80 +target2.x=0 +target2.y=0 +target3.height=50 +target3.name=Balkendiagramm +target3.showInterface=false +target3.type=ClassTarget +target3.width=120 +target3.x=0 +target3.y=0 +target4.height=50 +target4.name=Picture +target4.showInterface=false +target4.type=ClassTarget +target4.width=80 +target4.x=0 +target4.y=0 +target5.height=50 +target5.name=XML +target5.showInterface=false +target5.type=ClassTarget +target5.width=100 +target5.x=0 +target5.y=0 +target6.height=50 +target6.name=TableRow +target6.showInterface=false +target6.type=ClassTarget +target6.width=80 +target6.x=0 +target6.y=0 +target7.height=50 +target7.name=MyWorld +target7.showInterface=false +target7.type=ClassTarget +target7.width=80 +target7.x=0 +target7.y=0 +version=3.0.0 +width=1350 +world.lastInstantiated=MyWorld +xPosition=427 +yPosition=118 diff --git a/04_loesungen/02_greenfoot/alg13_maximumsuche_loesung/punkte.csv b/04_loesungen/02_greenfoot/alg13_maximumsuche_loesung/punkte.csv new file mode 100644 index 0000000..d6e8dfd --- /dev/null +++ b/04_loesungen/02_greenfoot/alg13_maximumsuche_loesung/punkte.csv @@ -0,0 +1,6 @@ +"Name","Punkte" +Niko,216 +Klaus,591 +Anna,857 +Lena,180 +Winfried,168 diff --git a/04_loesungen/02_greenfoot/alg13_maximumsuche_loesung/testfall1.csv b/04_loesungen/02_greenfoot/alg13_maximumsuche_loesung/testfall1.csv new file mode 100644 index 0000000..92c538f --- /dev/null +++ b/04_loesungen/02_greenfoot/alg13_maximumsuche_loesung/testfall1.csv @@ -0,0 +1,20 @@ +"Name","Punkte" +Spieler1,0 +Spieler1,6 +Spieler2,19 +Spieler6,1 +Spieler4,45 +Spieler3,23 +Spieler3,12 +Spieler2,44 +Spieler1,72 +Spieler5,12 +Spieler6,4 +Spieler7,2 +Spieler4,98 +Spieler3,21 +Spieler3,12 +Spieler2,32 +Spieler1,12 +Spieler5,44 +Spieler3,12 diff --git a/04_loesungen/02_greenfoot/alg13_maximumsuche_loesung/testfall2.csv b/04_loesungen/02_greenfoot/alg13_maximumsuche_loesung/testfall2.csv new file mode 100644 index 0000000..091c003 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg13_maximumsuche_loesung/testfall2.csv @@ -0,0 +1,20 @@ +"Name","Punkte" +Spieler1,-5 +Spieler1,-6 +Spieler2,-19 +Spieler6,-1 +Spieler4,-45 +Spieler3,-23 +Spieler3,-12 +Spieler2,-44 +Spieler1,-72 +Spieler5,-12 +Spieler6,-4 +Spieler7,-2 +Spieler4,-98 +Spieler3,-21 +Spieler3,-12 +Spieler2,-32 +Spieler1,-12 +Spieler5,-44 +Spieler3,-12 diff --git a/04_loesungen/02_greenfoot/alg13_maximumsuche_loesung/testfall3.csv b/04_loesungen/02_greenfoot/alg13_maximumsuche_loesung/testfall3.csv new file mode 100644 index 0000000..3bc26b2 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg13_maximumsuche_loesung/testfall3.csv @@ -0,0 +1,2 @@ +"Name","Punkte" +Spieler1,45 diff --git a/04_loesungen/02_greenfoot/alg13_maximumsuche_loesung/testfall4.csv b/04_loesungen/02_greenfoot/alg13_maximumsuche_loesung/testfall4.csv new file mode 100644 index 0000000..e74e6d5 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg13_maximumsuche_loesung/testfall4.csv @@ -0,0 +1 @@ +"Name","Punkte" diff --git a/04_loesungen/02_greenfoot/alg13_variante_minimumsuche_loesung/Balkendiagramm.java b/04_loesungen/02_greenfoot/alg13_variante_minimumsuche_loesung/Balkendiagramm.java new file mode 100644 index 0000000..1e519f8 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg13_variante_minimumsuche_loesung/Balkendiagramm.java @@ -0,0 +1,169 @@ +import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot und MouseInfo) +import java.awt.Font; + +/** + * Balkendiagramm für int-Array, Zahlen werden aus CSV-Datei gelesen, Minimum der Werte wird bestimmt. + * Hinweis zur Benutzung: + * Start des Algorithmus: Rufe im Kontextmenü (rechte Maustaste) die Methode maximumsuche() auf + * Start des automatischen Tests: Rufe im Kontextmenü (rechte Maustaste) die Methode testen() auf + * @author Schaller + * @version 29.11.18 + */ +public class Balkendiagramm extends PictureViewer + +{ + // Liste mit allen Werten //<>// + int[] zahlen; + String[] namen; + + // Hilfsvariablen für die Suche + int akt_minimum=-1; // aktuell kleinstes Element + int akt=-1; // aktuell untersuchtes Element + int verzoegerung=1000; // Geschwindigkeit der Ausführung + + // Schriften + Font kleineSchrift; + Font grosseSchrift; + + public Balkendiagramm() { + size(1000, 700); + background(0); + kleineSchrift = new Font( Font.SANS_SERIF, Font.PLAIN, 12 ); + grosseSchrift = new Font( Font.SANS_SERIF, Font.PLAIN, 20 ); + + // CSV-Datei laden und anzeigen + ladeTabelle("punkte.csv"); + zeichneBalken(); + } + + public void ladeTabelle(String name) { + // Tabelle aus CSV-Datei laden + Table csv = new Table(name, "header",',','"'); + + if (csv != null && csv.getColumnCount()==2) { + + // Initialisiere Arrays, in die alle Zeilen der Tabelle passen + zahlen = new int[csv.getRowCount()]; + namen = new String[csv.getRowCount()]; + + // Fülle die Arrays mit Werten aus der Tabelle + for (int i = 0; i < zahlen.length; i++) { + // Lies Wert aus der i. Zeile und der Spalte "Punkte" bzw. "Name" + zahlen[i] = csv.getInt(i, "Punkte"); + namen[i] = csv.getString(i, "Name"); + } + } + } + + public void zeichneBalken() { + + clear(); + + // Überschrift + fill(255,255,255); + textFont(grosseSchrift); + text("Punkte", 2, 20); + textFont(kleineSchrift); + + // Alle Einträge darstellen + if (zahlen != null) { + for (int i = 0; i< zahlen.length; i++) { + + fill(20,25,165); + // aktuelle Elemente farblich hervorheben + if (i == akt) { + fill(140,230,20); + } + if (i == akt_minimum) { + fill(230,60,140); + } + + // Balkendiagramm zeichnen + if (zahlen[i]>=0) rect(120, 25+i*15, zahlen[i]+1, 13); + + // Beschriftung + fill(255,255,255); + text(namen[i], 2, 35+i*15); + text(""+zahlen[i], 70, 35+i*15); + } + } + } + + public int minimumsuche() { + // Sind überhaupt Daten da? + if(zahlen.length==0 ) { //<>// + return -1; + } + + // Startwerte setzen + akt_minimum = 0; + akt = 1; + + // Alle Arrayelemente untersuchen + while (akt < zahlen.length) { + // Neu zeichnen, da akt neu gesetzt wurde + zeichneBalken(); + Greenfoot.delay(verzoegerung); + // Neues kleinstes Element?? + if (zahlen[akt] < zahlen[akt_minimum]) { + // Dann merke dir das neue + akt_minimum = akt; + // Zeichne Balken neu, da neues kleinstes Element + zeichneBalken(); + Greenfoot.delay(verzoegerung); + } + akt = akt + 1; + } + zeichneBalken(); + Greenfoot.delay(verzoegerung); + akt=-1; + zeichneBalken(); + Greenfoot.delay(verzoegerung); + // Gib Position des kleinsten Elements zurück + return akt_minimum; + } + + public boolean testen() { + boolean allesBestanden = true; + // Testfall 1 + verzoegerung = 0; //<>// + ladeTabelle("testfall1.csv"); + int m1 = minimumsuche(); + if (m1 == 0) { + System.out.println("Minimum korrekt gefunden. In Datei testfall1.csv ist der größte Wert "+ zahlen[m1]+" von "+namen[m1]+" an Position "+m1); + + } else { + System.out.println("Minimum in testfall.csv nicht gefunden. Du ermittelst "+m1+" richtig wäre 12"); + allesBestanden = false; + } + // Testfall 2: negative Zahlen + ladeTabelle("testfall2.csv"); + int m2 = minimumsuche(); + if (m2 == 12) { + System.out.println("Minimum korrekt gefunden. In Datei testfall2.csv ist der größte Wert "+ zahlen[m2]+" von "+namen[m2]+" an Position "+m2); + } else { + System.out.println("Minimum in testfall2.csv nicht gefunden. Du ermittelst "+m2+" richtig wäre 3"); + allesBestanden = false; + } + // Testfall 3: Nur 1 Element + ladeTabelle("testfall3.csv"); + int m3 = minimumsuche(); + if (m3 == 0) { + System.out.println("Minimum korrekt gefunden. In Datei testfall3.csv ist der größte Wert "+ zahlen[m3]+" von "+namen[m3]+" an Position "+m3); + } else { + System.out.println("Minimum in testfall3.csv nicht gefunden. Du ermittelst "+m3+" richtig wäre 0"); + allesBestanden = false; + } + // Testfall 4: Leere Liste + ladeTabelle("testfall4.csv"); + int m4 = minimumsuche(); + if (m4 == -1) { + System.out.println("Minimum korrekt gefunden. Da die Datei keine Spieler enthält wird -1 zurückgegeben."); + } else { + System.out.println("Minimum in testfall4.csv nicht gefunden. Du ermittelst "+m4+" richtig wäre -1, da die Datei leer ist."); + allesBestanden = false; + } + return allesBestanden; + } + +} diff --git a/04_loesungen/02_greenfoot/alg13_variante_minimumsuche_loesung/MyWorld.java b/04_loesungen/02_greenfoot/alg13_variante_minimumsuche_loesung/MyWorld.java new file mode 100644 index 0000000..11434f1 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg13_variante_minimumsuche_loesung/MyWorld.java @@ -0,0 +1,36 @@ +import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot und MouseInfo) + +/** + * Ergänzen Sie hier eine Beschreibung für die Klasse MyWorld. + * + * @author (Ihr Name) + * @version (eine Versionsnummer oder ein Datum) + */ +public class MyWorld extends World +{ + + /** + * Konstruktor für Objekte der Klasse MyWorld + * + */ + public MyWorld() + { + // Erstellt eine neue Welt mit 1200x900 Pixeln + super(1000, 700, 1); + + prepare(); + } + + + /** + * Bereite die Welt für den Programmstart vor. + * Das heißt: Erzeuge die Anfangs-Objekte und füge sie der Welt hinzu. + */ + private void prepare() + { + Balkendiagramm balkendiagramm = new Balkendiagramm(); + addObject(balkendiagramm,500,350); + + } +} + diff --git a/04_loesungen/02_greenfoot/alg13_variante_minimumsuche_loesung/Picture.java b/04_loesungen/02_greenfoot/alg13_variante_minimumsuche_loesung/Picture.java new file mode 100644 index 0000000..8df3d55 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg13_variante_minimumsuche_loesung/Picture.java @@ -0,0 +1,699 @@ +import java.awt.image.*; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.BasicStroke; +import java.util.Vector; +import javax.imageio.*; +import java.io.*; +import java.awt.*; +import javax.swing.*; +import java.util.Random; +import java.awt.geom.AffineTransform; +/** + * + * Bildklasse für die Simulation von Processing-Befehlen + * + * Diese Klasse stellt ein BufferedImage bereit, in das mit Processing-Befehlen gezeichnet + * werden kann. + * Zusätzlich kann ein Bildanzeiger über jede Änderung des Bildes informiert werden, + * um "Zurück"-Befehle zu ermöglichen. Der Bildanzeiger ist entweder eine normale Java + * ScrollPane oder ein Actor aus Greenfoot. + * Die Dokumentation der einzelnen Zeichenmethoden ist der Processing-Reference + * (https://processing.org/reference/ steht unter CC-Lizenz: https://creativecommons.org/) + * entnommen und mit Deepl.com ins Deutsche übersetzt. + * + * @version 1.0 from 23.01.2019 + * @author Thomas Schaller (ZPG Informatik Klasse 9) + */ + +public class Picture{ + + // Einstellungmöglichkeiten für das Zeichnen von Rechtecken und Ellipsen + // RADIUS = Mittelpunkt+Radius wird gegeben, CENTER = Mittelpunkt und Breite/Höhe wird gegeben, + // CORNER = Linke obere Ecke + Breite/Höhe, CORNERS = Linke obere und rechte untere Ecke + public static final int RADIUS = 1; + public static final int CENTER = 2; + public static final int CORNER = 3; + public static final int CORNERS = 4; + + // gespeichertes Bild, + private BufferedImage image; + + // aktuelle Farbeinstellungen + private Color background; + private Color pencolor; + private Color fillcolor; + + // aktuelle Stiftdicke + private double stroke; + + // akkteller Koordinatenmodus von Rechtecken und Ellipsen + private int ellipseMode = CENTER; + private int rectMode = CORNER; + + // aktueller Font + private Font textfont = null; + + // muss ein Bildanzeiger benachrichtigt werden + private PictureViewer observer = null; + private boolean autorefresh = true; + + /** + * Erzeugt ein Bild mit Standardgröße 500x400 + */ + public Picture() { + this(500,400); + } + + /** + * Erzeugt ein Bild der angegeben Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public Picture(int width, int height) { + this(width,height, "D0D0D0"); + } + + /** + * Erzeugt ein Bild aus einer Datei + * @param filename Dateiname des Bildes + */ + public Picture(String filename) { + load(filename); + } + + /** + * Erzeugt ein Bild der angegebenen Größe mit festgelegtem Hintergrund + * @param width Breite des Bildes + * @param height Höhe des Bildes + * @param background Farbe des Hintergrunds + */ + public Picture(int width, int height, String background) { + this.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + this.background = decode(background); + this.pencolor = new Color(0,0,0); + this.stroke = 1; + this.fillcolor = null; + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(this.background); + g.fillRect(0,0,width-1, height-1); + } + + /** + * Legt fest, wer das Bild anzeigt. + * Diese ermöglicht die Benachrichtung des Observers, wenn sich das Bild ändert. + * @param observer Anzeiger des Bildes + */ + + public void setObserver(PictureViewer observer) { + this.observer= observer; + } + + /** + * Direktes Setzen des Bildes (für interne Zwecke) + * @param b Bild, das gespeichert werden soll. + */ + public void setImage(BufferedImage b) { + image = b; + } + + /** + * Direktes Abfragen des Bildes (für interne Zwecke) + * @return Bild, das gerade gespeichert ist. + */ + public BufferedImage getImage() { + return image; + } + + /** + * Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + * Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + * der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu. + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public void size(int width, int height){ + pushImage(); + this.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(background); + g.fillRect(0,0,width-1, height-1); + } + + /** + * Liefert die Breite des Bildes zurück. + * @return Breite des Bildes + */ + public int getWidth() { + return image.getWidth(); + } + + /** + * Liefert die Höhe des Bildes zurück. + * @return Höhe des Bildes + */ + public int getHeight() { + return image.getHeight(); + } + + + /** + * Erzeugt eine Kopie des Bildes und übergibt sie an den Observer (falls existent), damit dieser die Versionen speichern kann + */ + private void pushImage() { + if(observer != null) { + observer.pushImage(); + } + } + + + /** + * Legt fest, ob nach jedem Zeichenbefehl automatisch das Bild auch in + * der Oberfläche aktualisiert wird. Die Einstellung "false" beschleunigt + * das Zeichnen aufwändiger Bilder und verhindert "Flackern". + * Das Neuzeichnen kann durch die Methode "refresh" gezielt ausgelöst werden. + * @param autorefresh true = nach jedem Zeichenbefehl die Anzeige aktualisieren, false= nur durch die Methode refresh neu zeichnen + */ + public void setAutoRefresh(boolean autoRefresh) { + this.autorefresh = autoRefresh; + } + + + /** + * Auch die anzeigenden Klasse wird zum Neuzeichnen aufgefordert. + */ + private void repaint() { + if(observer != null && autorefresh) { + observer.repaint(); + } + } + + /** + * Auch die anzeigenden Klasse wird zum Neuzeichnen aufgefordert. + */ + public void refresh() { + if(observer != null) { + observer.repaint(); + } + } + + // ----------------------------------------- Zeichenfunktionen ----------------------------------------------- + /** + * Löscht den Inhalt des Bildes. + * Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt. + */ + + public void clear(){ + pushImage(); + image = new BufferedImage(image.getWidth(), image.getHeight(), image.getType()); + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(background); + g.fillRect(0,0,image.getWidth()-1, image.getHeight()-1); + repaint(); + } + + /** + * Konvertiert die in einem bestimmten Modus gegebenen Koordinaten in die Java-übliche Links_Oben_Breite_Höhe Version + * Die Änderungen werden direkt im Array vorgenommen + * @param coord Array mit vier Koordinateneinträgen im gegebenen Modus + * @param mode Modus der Koordinaten (CORNER, CORNERS, RADIUS oder CENTER) + */ + private void convert(int[] coord, int mode) { + switch(mode) { + case CORNER: break; + case CORNERS: coord[2] -= coord[0]; coord[3] -= coord[1]; break; + case RADIUS: coord[2] *= 2; coord[3] *=2; + case CENTER: coord[0] -= coord[2]/2; coord[1] -= coord[3]/2; + } + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + * Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + * Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void rectMode(int mode) { + rectMode = mode; + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + * Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + * Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als Breite und Höhe der Form. + * ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void ellipseMode(int mode) { + ellipseMode = mode; + } + + + + /** + * Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + * Um eine Linie einzufärben, verwenden Sie die {@link #stroke(int, int, int) stroke()} Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + * Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + * {@link #strokeWeight(double) strokeWeight()} geändert werden. + * @param x1 x-Koordinate des 1. Punktes + * @param y1 y-Koordinate des 1. Punktes + * @param x2 x-Koordinate des 2. Punktes + * @param y2 y-Koordinate des 2. Punktes + */ + public void line(int x1, int y1, int x2, int y2) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + if (stroke > 0) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawLine(x1, y1, x2, y2); + } + repaint(); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, rectMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillRect(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawRect(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, ellipseMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillOval(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawOval(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + int px[] = {x1, x2, x3}; + int py[] = {y1, y2, y3}; + polygon(px, py); + + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + + int px[] = {x1, x2, x3, x4}; + int py[] = {y1, y2, y3, y4}; + polygon(px, py); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + + public void polygon(int[] x, int[] y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(fillcolor != null) { + + g.setColor(fillcolor); + g.fillPolygon(x,y, y.length); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawPolygon(x, y, x.length); + } + repaint(); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + ellipse(x,y,1, 1); + + } + + // ----------------------------------------- Schriftdarstellung ----------------------------------------------- + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param s Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String s, int x, int y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(pencolor != null) { + g.setColor(fillcolor); + g.setStroke(new BasicStroke((float) stroke)); + g.setFont(textfont); + g.drawString(s, x, y); + } + repaint(); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + this.textfont = font; + } + + + // ----------------------------------------- Farbfestlegungen ----------------------------------------------- + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(String color) { + try{ + return new Color( + Integer.valueOf( color.substring( 0, 2 ), 16 ), + Integer.valueOf( color.substring( 2, 4 ), 16 ), + Integer.valueOf( color.substring( 4, 6 ), 16 ) ); + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(int color) { + try{ + if(color >=0 && color < 256) { + return new Color(color,color,color); + } else { + int r = color / 0x010000 % 0xFF; + int g = color / 0x000100 % 0xFF; + int b = color % 0xFF; + System.out.println(""+r+","+g+","+b); + return new Color(r, g, b ); + } + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + this.pencolor = decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + this.pencolor=decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + this.pencolor = new Color(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + this.pencolor = null; + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + this.stroke = width; + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + this.fillcolor = decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + this.fillcolor=decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + this.fillcolor = new Color(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + this.fillcolor = null; + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + if(c < 256) { + this.background=new Color(c,c,c); + } else { + int r = c / 0x010000; + int g = c / 0x000100 % 0xFF; + int b = c % 0xFF; + this.background= new Color(r, g, b ); + } + + this.clear(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + this.background=new Color(r,g,b); + this.clear(); + } + + +// ----------------------------------------- Dateioperationen ----------------------------------------------- + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + try{ + this.image = ImageIO.read(new File(filename)); + this.background = decode("D0D0D0"); + this.pencolor = new Color(0,0,0); + this.fillcolor = null; + this.stroke = 1; + this.repaint(); + + } catch(Exception e) { + System.out.println("Fehler beim Einlesen der Bilddatei"); + } + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + try{ + String[] fn = filename.split("\\."); + if (fn.length== 1) { + ImageIO.write(image, "PNG", new File(filename+".png")); + } else { + + if (fn.length == 2 && (fn[1].toUpperCase().equals("PNG") || + fn[1].toUpperCase().equals("GIF"))){ + ImageIO.write(image, fn[1], new File(filename)); + }else { + System.out.println("Unbekanntes Bildformat"); + } + } + + } catch(Exception e) { + System.out.println("Fehler beim Speichern"); + } + } + + +// ----------------------------------------- Sonstiges ----------------------------------------------- + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + + public Color[][] getPixelArray() { + Color[][] pixel = new Color[image.getWidth()][image.getHeight()]; + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + pixel[x][y] = new java.awt.Color(image.getRGB(x,y)); + } + } + return pixel; + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + size(pixel.length,pixel[0].length); + Graphics2D g = (Graphics2D) image.getGraphics(); + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + g.setColor(pixel[x][y]); + g.fillRect(x, y, 1, 1); + } + } + repaint(); + } + + /** + * Hilfsfunktion zum Verzögern der Ausgabe + * @param millis Wartezeit in Millisekunden + */ + public void delay(int millis) { + try{ + Thread.sleep(millis); + + } catch(Exception e) { + + } + + } + + + +} diff --git a/04_loesungen/02_greenfoot/alg13_variante_minimumsuche_loesung/PictureViewer.java b/04_loesungen/02_greenfoot/alg13_variante_minimumsuche_loesung/PictureViewer.java new file mode 100644 index 0000000..ecbb521 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg13_variante_minimumsuche_loesung/PictureViewer.java @@ -0,0 +1,499 @@ +import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot und MouseInfo) +import java.awt.image.*; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.BasicStroke; +import java.awt.Font; +import java.util.Vector; +import java.awt.Color; +import javax.imageio.*; +import java.io.*; + +/** + * Der PictureViewer ist ein Actor, der in der Lage ist ein + * Objekt der Klasse Picture anzuzeigen. Zusätzlich können + * mehrere Verarbeitungsschritte gespeichert werden, um ein + * "zurück"-Funktion zu ermöglichen. + * + * @author Thomas Schaller + * @version V1.0 vom 10.02.2019 + */ +public class PictureViewer extends Actor +{ + public static final int FIT = -1; + public static final int NORMAL = 1; + + private static final int ANZ_BACK = 0; + + private double zoom; + protected Picture picture = null; + private Vector history; + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der Größe 500x400 + */ + public PictureViewer() { + this(500,400); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public PictureViewer(int width, int height) { + this(width,height, "D0D0D0"); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + * @param background Farbe des Hintergrunds als HEX-String (z.B. "FF3A45") + */ + public PictureViewer(int width, int height, String background) { + picture = new Picture(width,height, background); + picture.setObserver(this); + this.history = new Vector(); + this.zoom = NORMAL; + repaint(); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild aus einer Bilddatei + * @param filename Name des Bildes + */ + public PictureViewer(String filename) { + picture = new Picture(filename); + picture.setObserver(this); + this.history = new Vector(); + this.zoom = NORMAL; + repaint(); + } + + /** + * Speichert das übergebene Bild in der History. + * @param b zu speicherndes Bild + */ + public void pushImage() { + if( this.ANZ_BACK > 0) { + if(history.size() == this.ANZ_BACK) { + history.removeElementAt(0); + } + + BufferedImage b = new BufferedImage(picture.getWidth(), picture.getHeight(), picture.getImage().getType()); + Graphics g = b.getGraphics(); + g.drawImage(picture.getImage(), 0, 0, null); + g.dispose(); + + history.add(b); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + private void popImage() { + int anz = history.size(); + if(anz>0) { + BufferedImage i = history.get(anz-1); + history.removeElementAt(anz-1); + picture.setImage(i); + repaint(); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + public void back() { + popImage(); + } + + /** + * Setzt den Zoom-Faktor für das Bild. + * Als Zoomfaktor sind auch die Konstanten Bildanzeiger.FIT (auf Bildschirmgröße zoomen) und Bildanzeiger.NORMAL (100%) möglich. + * @param factor Zoomfaktor (1.0 = 100%). + */ + public void setZoom(double zoom) { + this.zoom = zoom; + repaint(); + } + + /** + * Setzt die automatische Neuanzeige des Bildes. + * Mit dieser Methode kann man einstellen, ob nach jedem Zeichenbefehl + * die Anzeige auf dem Bildschirm aktualisiert werden soll. Bei sehr + * vielen Zeichenbefehlen wird die Ausgabe dadurch sehr langsam. Es reicht + * eine Anzeige am Ende der Zeichenbefehle. Rufen Sie dann für das Neuzeichnen + * die Methode refresh() auf. + * @param autoRefresh true, wenn nach jedem Zeichenbefehl die Anzeige aktualisiert werden soll. + */ + public void setAutoRefresh(boolean autoRefresh) { + picture.setAutoRefresh(autoRefresh); + } + + /** + * Sorgt für die Aktualisierung der Bildschrimanzeige. Das aktuelle Bild + * wird dadurch angezeigt. Durch Einstellung von autoRefresh kann die + * Anzeige automatisiert werden. + */ + public void refresh() { + repaint(); + } + + /** + * Setzt das angezeigt Bild neu und beachtet dabei den Zoomfaktor. + */ + public void repaint() { + double faktor = zoom; + + if (zoom == FIT) { + double faktorw = (double) this.getWorld().getWidth() / picture.getWidth(); + double faktorh = (double) this.getWorld().getHeight() / picture.getHeight(); + faktor = Math.min(faktorw, faktorh); + } + int gfi_width = (int) (picture.getWidth()*faktor); + int gfi_height = (int) (picture.getHeight()*faktor); + + setImage(new GreenfootImage(gfi_width, gfi_height)); + Graphics2D g = (Graphics2D) this.getImage().getAwtImage().getGraphics(); + g.drawImage(picture.getImage(),0,0,gfi_width, gfi_height, 0, 0, picture.getWidth(), picture.getHeight(), null); + g.setColor(new java.awt.Color(0,0,0)); + g.setStroke(new BasicStroke((float) 1)); + g.drawRect(0,0,gfi_width-1, gfi_height-1); + + } + + // Wrappermethoden + /** + * Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + * Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + * der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu. + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public void size(int width, int height){ + picture.size(width, height); + } + + /** + * Liefert die Breite des Bildes zurück. + * @return Breite des Bildes + */ + public int getImageWidth() { + return picture.getWidth(); + } + + /** + * Liefert die Höhe des Bildes zurück. + * @return Höhe des Bildes + */ + public int getImageHeight() { + return picture.getHeight(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + picture.background(c); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + picture.background(r,g,b); + } + + /** + * Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + * Um eine Linie einzufärben, verwenden Sie die {@link #stroke(int, int, int) stroke()} Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + * Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + * {@link #strokeWeight(double) strokeWeight()} geändert werden. + * @param x1 x-Koordinate des 1. Punktes + * @param y1 y-Koordinate des 1. Punktes + * @param x2 x-Koordinate des 2. Punktes + * @param y2 y-Koordinate des 2. Punktes + */ + public void line(int x1, int y1, int x2, int y2) { + picture.line(x1,y1,x2,y2); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + picture.rect(a,b,c,d); + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + picture.ellipse(a,b,c,d); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + picture.triangle(x1,y1,x2,y2,x3,y3); + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + picture.quad(x1,y1,x2,y2,x3,y3,x4,y4); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + public void polygon(int[] x, int[] y) { + picture.polygon(x,y); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + picture.point(x,y); + + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + * Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + * Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void rectMode(int mode) { + picture.rectMode(mode); + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + * Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + * Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als Breite und Höhe der Form. + * ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void ellipseMode(int mode) { + picture.ellipseMode(mode); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + picture.stroke(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + picture.noStroke(); + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + picture.strokeWeight(width); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + picture.fill(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + picture.noFill(); + } + + /** + * Löscht den Inhalt des Bildes. + * Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt. + */ + public void clear(){ + picture.clear(); + } + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + picture.load(filename); + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + picture.save(filename); + } + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param t Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String t, int x, int y) { + picture.text(t,x,y); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + picture.textFont(font); + } + + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + public Color[][] getPixelArray() { + return picture.getPixelArray(); + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + picture.setPixelArray(pixel); + } + + +} + diff --git a/04_loesungen/02_greenfoot/alg13_variante_minimumsuche_loesung/README.TXT b/04_loesungen/02_greenfoot/alg13_variante_minimumsuche_loesung/README.TXT new file mode 100644 index 0000000..4b8fadd --- /dev/null +++ b/04_loesungen/02_greenfoot/alg13_variante_minimumsuche_loesung/README.TXT @@ -0,0 +1,14 @@ +------------------------------------------------------------------------ +Dies ist die README-Datei des Projekts. Hier sollten Sie Ihr Projekt +beschreiben. +Erzählen Sie dem Leser (jemand, der nichts über dieses Projekt weiss), +alles, was er/sie wissen muss. Üblicherweise sollte der Kommentar +zumindest die folgenden Angaben umfassen: +------------------------------------------------------------------------ + +PROJEKTBEZEICHNUNG: +PROJEKTZWECK: +VERSION oder DATUM: +WIE IST DAS PROJEKT ZU STARTEN: +AUTOR(EN): +BENUTZERHINWEISE: diff --git a/04_loesungen/02_greenfoot/alg13_variante_minimumsuche_loesung/Table.java b/04_loesungen/02_greenfoot/alg13_variante_minimumsuche_loesung/Table.java new file mode 100644 index 0000000..ee5a211 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg13_variante_minimumsuche_loesung/Table.java @@ -0,0 +1,894 @@ +/** + * Die Klasse Table vereinfacht den Zugriff auf CSV-Dateien. + * Die Klassen Table und TableRow ermöglichen einen einfachen Zugriff auf tabellenbasierte + * Dokumente. + * + * @author Thomas Schaller + * @version 1.0 vom 01.02.2019 + */ + +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.ArrayList; +import java.io.*; +import java.util.Scanner; + +import org.jdom.Document; +import org.jdom.Element; +import org.jdom.Attribute; +import org.jdom.JDOMException; +import org.jdom.input.SAXBuilder; +import org.jdom.output.XMLOutputter; +import org.jdom.output.Format; + +public class Table +{ + // Standardtrennzeichen für Spalten + private static final char DEFAULT_SEPARATOR = ';'; + // Standardmarkierung für Texte + private static final char DEFAULT_QUOTE = '"'; + // Standardtrennzeichen für Dezimalzahlen + private static final char DEFAULT_COMMA = ','; + + // mögliche Spaltentypen + private static final String UNKNOWN ="UNKOWN"; + private static final String INT = "INTEGER"; + private static final String DOUBLE = "DOUBLE"; + private static final String FLOAT = "FLOAT"; + + // interne Verwaltung des Dokuments als JDOM-Document-Objekt + private Document doc; + // Verweis auf Element für Kopfzeile + private Element header; + // Ende Attribute + + /** + * Erzeugt leeres Tabellen-Dokument. + */ + public Table() { + this.doc = new Document(); + doc.setRootElement(new Element("CSV-Data")); + this.header = new Element("Header"); + doc.getRootElement().addContent(header); + } + + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei und erstellt ein Tabellenobjekt mit seinen Werten. + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public Table(String filename, String options, char separator, char quote) { + loadCSV(filename, options, separator, quote); + } + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei und erstellt ein Tabellenobjekt mit seinen Werten (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + */ + public Table(String filename, String options) { + loadCSV(filename, options); + } + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei ohne Kopfzeile und erstellt ein Tabellenobjekt mit seinen Werten (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public Table(String filename) { + loadCSV(filename); + } + + // Anfang Methoden + /** + * Liest den Inhalt einer CSV-Datei ohne Kopfzeile (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public void loadCSV(String filename) { + loadCSV(filename, ""); + } + + /** + * Liest den Inhalt einer CSV-Datei (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + */ + public void loadCSV(String filename, String options) { + loadCSV(filename, options, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** + * Liest den Inhalt einer CSV-Datei. + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public void loadCSV(String filename, String options, char separator, char quote) { + doc = new Document(); + doc.setRootElement(new Element("CSV-Data")); + header = new Element("Header"); + doc.getRootElement().addContent(header); + try { + File f = new File(filename); + Scanner scanner = new Scanner(new File(filename)); + if(options.toLowerCase().contains("header") && scanner.hasNext()) { + List entries = parseLine(scanner.nextLine(), separator, quote); + int i= 0; + for(String s : entries) { + Element entry = new Element("Column"); + header.addContent(entry); + entry.setText(s); + entry.setAttribute("type", "unknown"); + i++; + } + } + + List cols = header.getChildren(); + + while (scanner.hasNext()) { + Element line = new Element("Row"); + doc.getRootElement().addContent(line); + List entries = parseLine(scanner.nextLine(), separator, quote); + int i= 0; + + for(String s : entries) { + + if(i==cols.size()) { + Element entry = new Element("Column"); + entry.setAttribute("type", "unknown"); + header.addContent(entry); + cols = header.getChildren(); + } + + Element entry = new Element("Entry"); + entry.setText(s); + line.addContent(entry); + i++; + } + } + scanner.close(); + + } catch (Exception e) { + System.out.println("Fehler beim Lesen der CSV-Datei"); + } + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei ohne Kopfzeile (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public void saveCSV(String filename) { + saveCSV(filename, ""); + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthalten, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile haben soll, + * dann lassen Sie einfach die Option "header" weg. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile haben soll. + * @param filename Dateiname der CSV-Datei. + */ + public void saveCSV(String filename, String options) { + saveCSV(filename, options, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei. + * Wenn die Datei eine Kopfzeile enthalten, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile haben soll, + * dann lassen Sie einfach die Option "header" weg. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile haben soll. + * @param filename Dateiname der CSV-Datei. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public void saveCSV(String filename, String options, char separator, char quote){ + try{ + File f = new File(filename); + PrintStream outputFile = new PrintStream (f); + System.out.println("Speicher in : "+f.getAbsolutePath()); + List columns = header.getChildren(); + String sq = ""+quote; + String ss = ""+separator; + if(quote =='"') sq = "\""; + if(separator =='"') ss = "\""; + + if(options.toLowerCase().contains("header")) { + String h = ""; + for(Element c : columns) { + h += ss + sq + c.getText()+sq; + } + outputFile.println(h.substring(1)); + } + for(int i = 0; i parseLine(String cvsLine) { + return parseLine(cvsLine, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** HIlfsfunktion für die Analyse einer Dateizeile + * @param cvsLine Zeile aus der Datei + * @param sparator Trennzeichen für die Spalten + * @return Liste von String für die einzelnen Spalten + */ + private List parseLine(String cvsLine, char separator) { + return parseLine(cvsLine, separator, DEFAULT_QUOTE); + } + + /** HIlfsfunktion für die Analyse einer Dateizeile + * @param cvsLine Zeile aus der Datei + * @param sparator Trennzeichen für die Spalten + * @param customQuote Kennung für Strings + * @return Liste von String für die einzelnen Spalten + */ + private List parseLine(String cvsLine, char separator, char customQuote) { + + List result = new ArrayList<>(); + + //if empty, return! + if (cvsLine == null && cvsLine.isEmpty()) { + return result; + } + + //ggf. Default-Value laden + if (customQuote == ' ') { + customQuote = DEFAULT_QUOTE; + } + + if (separator == ' ') { + separator = DEFAULT_SEPARATOR; + } + + StringBuffer curVal = new StringBuffer(); + boolean inQuotes = false; + boolean startCollectChar = false; + boolean doubleQuotesInColumn = false; + + char[] chars = cvsLine.toCharArray(); + + for (char ch : chars) { + + if (inQuotes) { // aktueller Text ist in Quotes eingeschlossen + startCollectChar = true; + + if (ch == customQuote) { // Quotes werden beendet, aber Achtung bei "" => Metazeichen + inQuotes = false; + if (ch == '\"') { + doubleQuotesInColumn = true; + } + + } else { + + if (ch == '\"' && !doubleQuotesInColumn) { + doubleQuotesInColumn = true; + } else { + curVal.append(ch); + doubleQuotesInColumn = false; + } + + } + } else { + if (ch == customQuote) { + + inQuotes = true; + + //Fixed : allow "" in empty quote enclosed + if (ch == '\"'){ + if(doubleQuotesInColumn) { + curVal.append('"'); + doubleQuotesInColumn = false; + } else doubleQuotesInColumn = true; + + + } + } + else { + doubleQuotesInColumn = false; + if (ch == separator) { + + result.add(curVal.toString()); + + curVal = new StringBuffer(); + startCollectChar = false; + + } else if (ch == '\r') { + //ignore LF characters + continue; + } else if (ch == '\n') { + //the end, break! + break; + } else { + curVal.append(ch); + } + } + } + + } + result.add(curVal.toString()); + return result; + } + + /** + * Sucht die Nummer einer durch Namen gegebenen Spalte. + * @param name Name der Spalte + * @return Nummer der Spalte + */ + + private int findColumnNumber(String name) { + List columns = header.getChildren(); + int i = 0; + for(Element c : columns) { + if (c.getText().toLowerCase().equals(name.toLowerCase())) { + return i; + + } + i++; + } + return -1; + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an. + */ + public void addColumn() { + Element entry = new Element("Column"); + entry.setAttribute("type", Table.UNKNOWN); + header.addContent(entry); + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an und benennt sie. + * @param title Bezeichnung der Spalte + */ + public void addColumn(String title) { + addColumn(); + Element nc = ((List)(header.getChildren())).get(header.getChildren().size()-1); + nc.setText(title); + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an und benennt und typisiert sie. + * @param title Bezeichnung der Spalte + * @param type Typ der Spalte (UNKNOWN, DOUBLE, INTEGER, FLOAT) + */ + public void addColumn(String title, String type) { + addColumn(title); + Element nc = ((List)(header.getChildren())).get(header.getChildren().size()-1); + nc.setAttribute("type", type); + } + + /** + * Löscht eine Spalte. + * @param i Nummer der Spalte. + */ + public void removeColumn(int i) { + List lines = doc.getRootElement().getChildren(); + for(Element l : lines) { + if(l.getChildren().size()>i) l.removeContent(i); + } + } + + /** + * Löscht eine Spalte + * @param name Name der Spalte + */ + public void removeColumn(String name) { + try{ + removeColumn(findColumnNumber(name)); + } catch(Exception e) { System.out.println("Unbekannter Spaltenname");} + } + + /** + * Liefert die Anzahl der Spalten in der Tabelle + * @return Anzahl der Spalten + */ + public int getColumnCount() { + return header.getChildren().size(); + } + + /** + * Liefert die Anzahl der Zeilen in der Tabelle + * @return Anzahl der Zeilen + */ + public int getRowCount() { + return doc.getRootElement().getChildren().size()-1; + } + + /** + * Löscht alle Zeilen der Tabelle. + * Die Spaltenüberschriften und Typen bleiben erhalten. + */ + public void clearRows() { + doc.getRootElement().removeChildren("Row"); + } + + /** + * Fügt eine neue Zeile an das Ende der Tabelle an. + * @return ein TableRow-Objekt für diese neue Zeile + */ + public TableRow addRow() { + Element row = new Element("Row"); + doc.getRootElement().addContent(row); + return new TableRow(doc, row); + } + + /** + * Löscht eine Zeile + * @param i Nummer der Zeile + */ + public void removeRow(int i) { + if(i rows = doc.getRootElement().getChildren(); + return new TableRow(doc, rows.get(i+1)); + } + return null; + } + + /** + * Liefert die ganze Tabelle als Array von TableRow-Objekten + * @return Array von TableRow-Objekten + */ + public TableRow[] rows() { + TableRow[] rows = new TableRow[getRowCount()]; + for(int i = 0; i < getRowCount(); i++) { + rows[i] = getRow(i); + } + return rows; + } + + /** + * Liefert den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param column Spaltennummer + * @return Wert der Zelle + */ + public int getInt(int row, int column) { + return getRow(row).getInt(column); + } + + /** + * Liefert den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param name Name der Spalte + * @return Wert der Zelle + */ + public int getInt(int row, String name) { + return getRow(row).getInt(name); + } + + /** + * Setzt den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param column Spaltennummer + * @param value neuer Wert der Zelle + */ + public void setInt(int row, int column,int value) { + getRow(row).setInt(column, value); + } + + /** + * Setzt den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(int row, String name, int value) { + getRow(row).setInt(name, value); + } + + /** + * Liefert alle Werte einer Zeile als Integer-Array. + * @param row Nummer der Zeile + * @return int-Array, dass alle Werte der Zeile enthält + */ + public int[] getIntRow(int row) { + try{ + TableRow trow = getRow(row); + int anz = getColumnCount(); + int[] r = new int[anz]; + for(int i=0; i) (header.getChildren())).get(i).getText(); + } else { + return ""; + } + } + + /** + * Liefert die Nummer einer Spalte + * @param name Name der Spalte + * @return Nummer der Spalte + */ + public int getColumn(String name) { + List columns = header.getChildren(); + int i = 0; + while (i < columns.size()) { + if (columns.get(i).getText().toLowerCase().equals(name.toLowerCase())) { + return i; + } + i++; + } // end of while + return -1; + } + + + /** + * Erzeugt eine neue Zeile mit i Spalten + * Wenn bisher nicht genügend Spalten vorhanden sind, werden automatisch neue Spalten hinzugefügt (auch zum Header) + * @param i Anzahl der Spalten + */ + private Element buildRow(int i) { + List columns = header.getChildren(); + Element entry=null; + for(int j=0; j<=i; j++) { + + if(j==columns.size()) { + Element h = new Element("Column"); + h.setAttribute("type", "unknown"); + header.addContent(h); + columns = header.getChildren(); + } + if(j==current.getChildren().size()) { + entry = new Element("Entry"); + current.addContent(entry); + + } + + } + return entry; + + } + + /** + * Erzeugt eine neue Zeile. + * Es werden genügend Spalten erzeugt, dass ein Wert in Spalte "name" eingetragen werden kann + * @param name Name der Spalte + */ + private Element buildRow(String name) { + List columns = header.getChildren(); + int i = 0; + for(Element c: columns) { + + if(c.getText().toLowerCase().equals(name.toLowerCase())) { + return buildRow(i); + } + i++; + } + return null; + + } + + /** + * Liefert den Wert einer Zelle als String + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public String getString(int i) { + if(i >= current.getContent().size()) return ""; + Element e = (Element) current.getContent(i) ; + if(e!=null) { + return e.getText(); + } else { + return ""; + } + } + + /** + * Liefert den Wert einer Zelle als String + * @param name Name der Spalte + * @return Wert der Zelle + */ + public String getString(String name) { + return getString(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als String + * @param i Nummer der Spalte + * @param text neuer Wert der Zelle + */ + public void setString(int i, String text) { + + Element e = buildRow(i); + if(e!=null) e.setText(text); + } + + /** + * Setzt den Wert einer Zelle als String + * @param name Name der Spalte + * @param text neuer Wert der Zelle + */ + public void setString(String name, String text) { + Element e = buildRow(name); + if(e!=null) e.setText(text); + } + + + /** + * Liefert den Wert einer Zelle als Int-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public int getInt(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Integer.parseInt(e.getText()); + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Int-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public int getInt(String name) { + return getInt(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Int-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(int i,int value) { + + Element e = buildRow(i); + if(e!=null) e.setText(""+value); + } + + /** + * Setzt den Wert einer Zelle als Int-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(String name, int value) { + Element e = buildRow(name); + if(e!=null) e.setText(""+value); + } + + /** + * Liefert den Wert einer Zelle als Float-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public float getFloat(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Float.parseFloat(e.getText().replace(",",".")); + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Float-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public float getFloat(String name) { + return getFloat(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Float-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setFloat(int i,float value) { + + Element e = buildRow(i); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Setzt den Wert einer Zelle als Float-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setFloat(String name, float value) { + Element e = buildRow(name); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Liefert den Wert einer Zelle als Double-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public double getDouble(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Double.parseDouble(e.getText().replace(",",".")); + + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Double-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public double getDouble(String name) { + return getDouble(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Double-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setDouble(int i,double value) { + + Element e = buildRow(i); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Setzt den Wert einer Zelle als Double-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setDouble(String name, double value) { + Element e = buildRow(name); + if(e!=null) e.setText(format.format(value)); + } + +} diff --git a/04_loesungen/02_greenfoot/alg13_variante_minimumsuche_loesung/XML.java b/04_loesungen/02_greenfoot/alg13_variante_minimumsuche_loesung/XML.java new file mode 100644 index 0000000..c06c490 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg13_variante_minimumsuche_loesung/XML.java @@ -0,0 +1,637 @@ +/** + * Klasse zum Vereinfachten Zugriff auf XML-Dokumente + * Diese Klasse ist für den Einsatz in der Schule gedacht und soll den Schülern + * einen einfachen Zugriff auf XML-Dokumente ermöglichen. Die zur Verfügung + * stehenden Befehle sind wie in Processing realisiert. + * Dabei ist jeder Teilbaum des Dokuments wieder als XML-Objekt zugreifbar, das + * intern auf die gleiche XML-Dokumentstruktur zugreift. + * Dies ermöglicht bei unsachgemäßem Gebrauch die XML-Struktur zu zerstören. Im + * normalen Gebrauch sollte dies aber nicht relevant sein. + * + * Benötigt: jdom-1.1.3.jar + + * @author Thomas Schaller + * @version 1.0 vom 31.01.2019 + */ +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.ArrayList; +import java.io.*; + +import org.jdom.Document; +import org.jdom.Element; +import org.jdom.Attribute; +import org.jdom.JDOMException; +import org.jdom.input.SAXBuilder; +import org.jdom.output.XMLOutputter; +import org.jdom.output.Format; + +public class XML { + // Anfang Attribute + // XML-Dokumentstruktur + private Document doc; + // Zeiger auf das aktuelle Element + private Element current; + // Ende Attribute + + /** + * Erzeugt ein leeres XMLDokument + */ + public XML() { + this.doc = new Document(); + this.current = null; + } + + /** + * Erzeugt ein XML-Dokument aus einer Datei + * @param filename Dateiname der XML-Datei + */ + public XML(String filename) { + loadXML(filename); + } + + /** + * interner Konstruktor, um ein XML Objekt zu erzeugen, das auf einen bestimmten Knoten verweist + * @param doc die XML-Dokumentstruktur + * @param current Zeiger auf das aktuelle Element + */ + private XML(Document doc, Element current) { + this.doc = doc; + this.current = current; + } + + // Anfang Methoden + /** Öffnet das durch den Dateinamen gegebene Dokument + * @param filename Dateiname des XML-Files + */ + public void loadXML(String filename) { + doc = null; + File f = new File(filename); + + try { + // Das Dokument erstellen + SAXBuilder builder = new SAXBuilder(); + doc = builder.build(f); + + } catch (JDOMException e) { + e.printStackTrace(); + + } catch (IOException e) { + e.printStackTrace(); + } + // Zeiger im Baum auf Root-Element + current = doc.getRootElement(); + } + + /** Speichert den XML-Baum im angegebenen Dateinamen + * @param filename Dateiname des XML-Files + */ + public void saveXML(String filename) { + try { + // new XMLOutputter().output(doc, System.out); + XMLOutputter xmlOutput = new XMLOutputter(); + + // display nice nice + xmlOutput.setFormat(Format.getPrettyFormat()); + File f = new File(filename); + FileOutputStream outputFile = new FileOutputStream(f); + System.out.println("Speicher in : "+f.getAbsolutePath() ); + xmlOutput.output(doc, outputFile); + outputFile.close(); + System.out.println("File Saved!"); + } catch (IOException io) { + System.out.println(io.getMessage()); + } + + } + + //----------------------------------------------- Zeigerbewegungen -------------------------------------------------- + /** + * liefert ein XML-Objekt, das auf den Vaterknoten des aktuellen Elements zeigt. + * @return Vater des aktuellen Objekts. + */ + public XML getParent() { + if(current != null) { + Element parent = current.getParentElement(); + if (parent == null) { + return null; + } else { + return new XML(doc, parent); + } + } + return null; + } + + /** + * Überprüft, ob das Element irgendwelche Kinder hat oder nicht, und gibt das Ergebnis als boolean zurück. + * @return true, wenn Kinder vorhanden sind, sonst false + */ + public boolean hasChildren() { + if (current == null) { + return doc.hasRootElement(); + } else { + return current.getChildren().size()>0; + } + } + + /** + * Ermittelt die Namen aller Kinder des Elements und gibt die Namen als ein Array von Strings zurück. + * Dies ist dasselbe wie das Durchlaufen und Aufrufen von getName() auf jedem untergeordneten Element einzeln. + * @return Liste aller Namen der Kinder + */ + public String[] listChildren() { + if (current == null) { + if(doc.hasRootElement()) { + String[] names = new String[0]; + names[0] = doc.getRootElement().getName(); + return names; + } else { + return null; + } + } else { + List ch_element = current.getChildren(); + String[] names = new String[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + names[i] = ch_element.get(i).getName(); + } + return names; + } + } + + /** + * Liefert alle Kinder des Elements als Array von XML-Objekten. + * @return Array der Kinder als XML-Objekte + */ + public XML[] getChildren() { + if (current == null) { + if(doc.hasRootElement()) { + XML[] ch_xml = new XML[1]; + ch_xml[0] = new XML(doc, doc.getRootElement()); + return ch_xml; + } else { + return null; + } + } else { + List ch_element = current.getChildren(); + XML[] ch_xml = new XML[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + ch_xml[i] = new XML(doc, ch_element.get(i)); + } + return ch_xml; + } + } + + /** + * Liefert bestimmte Kinder des Elements als Array von XML-Objekten. + * Die Methode gibt dabei alle Kinder zurück, die dem angegebenen Namen entsprechen. + * @param name Name der gesuchten Kind-Objekte + * @return Array der Kinder als XML-Objekte + */ + public XML[] getChildren(String name) { + if (current == null) { + if(doc.hasRootElement()) { + XML[] ch_xml = new XML[1]; + ch_xml[0] = new XML(doc, doc.getRootElement()); + if(doc.getRootElement().getName().equals(name)){ + return ch_xml; + } else { + return null; + } + } else { + return null; + } + } else { + List ch_element = current.getChildren(name); + XML[] ch_xml = new XML[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + ch_xml[i] = new XML(doc, ch_element.get(i)); + } + return ch_xml; + } + } + + /** + * Liefert das erste Kind des Elements mit einem bestimmten Namen. + * Die Methode gibt das erste Kind zurück, das dem angegebenen Namen entsprechen. + * @param name Name des gesuchten Kind-Objektes + * @return Kind als XML-Objekt + */ + + public XML getChild(String name) { + if (current == null) { + Element e = doc.getRootElement(); + if (e.getName().equals(name)) { + return new XML(doc, e); + } else { + return null; + } + } else { + String[] names = name.split("/"); + Element e = current; + int i = 0; + while(i < names.length) { + e = e.getChild(names[i]); + if (e==null) return null; + i++; + } + return new XML(doc, e); + } + } + + /** + * Liefert das i. Kind des Elements. + * Die Methode gibt das i. Kind des aktuellen Elements zurück. + * @param i Nummer des Kindes + * @return Kind als XML-Objekt + */ + public XML getChild(int i) { + if (current == null) { + return new XML(doc, doc.getRootElement()); + } else { + List ch_element = current.getChildren(); + if (i>=ch_element.size()) return null; + return new XML(doc, ch_element.get(i)); + } + } + + //--------------------------------------------------- Methoden für das aktuelle Element ------------------------------------------------- + /** + * Frage den Namen des aktuellen Elements ab + * @return Namen des Elements + */ + public String getName() { + if (current==null) return ""; + return current.getName(); + } + + /** + * Setze den Namen des aktuellen Elements. + * @param name Neuer Name des Elements + */ + public void setName(String name) { + if (current==null) return; + current.setName(name); + } + + /** + * liefert die Anzahl der Attribute eines Elements. + * @return Anzahl des Attribute + */ + public int getAttributeCount() { + if (current == null) return 0; + return current.getAttributes().size(); + } + + /** + * liefert zurück, ob das aktuelle Element Attribute hat . + * @return true, wenn es Attribute gibt + */ + public boolean hasAttribute() { + if (current == null) return false; + return current.getAttributes().size()>0; + } + + /** + * Ruft alle Attribute des angegebenen Elements ab und gibt sie als Array von Strings zurück. + * @return Liste der Attributnamen + */ + public String[] listAttributes() { + if (current == null) return null; + List attr = current.getAttributes(); + String[] names = new String[attr.size()]; + for(int i=0; i < attr.size() ; i++) { + names[i] = attr.get(i).getName(); + } + return names; + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs + */ + public String getString(String attribute) { + if (current==null) return ""; + return current.getAttributeValue(attribute); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs + */ + public String getString(String attribute, String defaultValue) { + if (current==null) return defaultValue; + return current.getAttributeValue(attribute,defaultValue); + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param text neuer Wert des Attributs + */ + public void setString(String attribute, String text) { + if (current==null) return; + current.setAttribute(attribute, text); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Integer-Zahl + */ + public int getInt(String attribute) { + if (current==null) return 0; + try{ + int i = Integer.parseInt(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als Integer-Zahl + */ + public int getInt(String attribute, int defaultValue) { + if (current==null) return defaultValue; + try{ + int i = Integer.parseInt(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setInt(String attribute, int value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Float-Zahl + */ + public float getFloat(String attribute) { + if (current==null) return 0; + try{ + float i = Float.parseFloat(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als Float-Zahl + */ + public float getFloat(String attribute, float defaultValue) { + if (current==null) return defaultValue; + try{ + float i = Float.parseFloat(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setFloat(String attribute, float value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Double-Zahl + */ + public double getDouble(String attribute) { + if (current==null) return 0; + try{ + double i = Double.parseDouble(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + +/** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als double-Zahl + */ + public double getDouble(String attribute, double defaultValue) { + if (current==null) return defaultValue; + try{ + double i = Double.parseDouble(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setDouble(String attribute, double value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt den Inhalt/Text des aktuellen Elements ab + * @return Inhalt des Elements + */ + public String getContent() { + if ( current==null) return ""; + + return current.getText(); + } + + /** + * Fragt den Inhalt/Text des aktuellen Elements ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardtext + * @return Inhalt des Elements + */ + public String getContent(String defaultValue) { + if ( current==null) return defaultValue; + String t = current.getText(); + if(t.equals("")) t = defaultValue; + return t; + } + + /** + * Setzt den Inhalt/Text des aktuellen Elements + * @param text Neuer Inhalt des Elements + */ + public void setContent(String text) { + if ( current==null) return; + current.setText(text); + } + + + /** + * Fragt den Inhalt des aktuellen Elements als Integerzahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ public int getIntContent(int defaultValue) { + if ( current==null) return defaultValue; + try{ + int i = Integer.parseInt(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Integerzahl ab + * @return Inhalt des Elements + */ + public int getIntContent() { + if ( current==null) return 0; + try{ + int i = Integer.parseInt(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setIntContent(int value) { + if ( current==null) return; + current.setText(""+value); + } + + + /** + * Fragt den Inhalt des aktuellen Elements als Floatzahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ + public float getFloatContent(float defaultValue) { + if ( current==null) return defaultValue; + try{ + float i = Float.parseFloat(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Floatzahl ab + * @return Inhalt des Elements + */ + public float getFloatContent() { + if ( current==null) return 0; + try{ + float i = Float.parseFloat(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setFloatContent(float value) { + if ( current==null) return; + current.setText(""+value); + } + +/** + * Fragt den Inhalt des aktuellen Elements als Doublezahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ + public double getDoubleContent(double defaultValue) { + if ( current==null) return defaultValue; + try{ + double i = Double.parseDouble(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Doublezahl ab + * @return Inhalt des Elements + */ + public double getDoubleContent() { + if ( current==null) return 0; + try{ + double i = Double.parseDouble(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setDoubleContent(double value) { + if ( current==null) return; + current.setText(""+value); + } + + + // ----------------------------------------------- XML-Struktur aufbauen ------------------------------------------------ + /** Erzeuge neues Element nach der aktuellen Position und setze dieses als aktuelles Element + * @param name Name des neuen Elements + * @return neues Element als XML-Objekt + */ + public XML addChild(String name) { + Element e = new Element(name); + if(current == null){ // man ist auf Root-Ebene + doc.setRootElement(e); + + } + else { + current.addContent(e); + } // end of if-else + return new XML(doc, e); + } + + /** + * liefert das aktuelle Element als jdom-Element-Objekt + * @return aktuelles Element + */ + private Element getCurrent() { + return current; + } + + /** + * löscht ein Kind des aktuellen Knotens. + * Ist kid kein Kind des aktuellen Elements passiert gar nichts. + * @param kid XML-Objekt des Kindes + */ + public void removeChild(XML kid) { + if (current == null) return; + Element e = kid.getCurrent(); + int index = current.indexOf(e); + if(index >= 0) { current.removeContent(e);} + } + +} diff --git a/04_loesungen/02_greenfoot/alg13_variante_minimumsuche_loesung/images/balken.png b/04_loesungen/02_greenfoot/alg13_variante_minimumsuche_loesung/images/balken.png new file mode 100644 index 0000000..9ff1ffc Binary files /dev/null and b/04_loesungen/02_greenfoot/alg13_variante_minimumsuche_loesung/images/balken.png differ diff --git a/04_loesungen/02_greenfoot/alg13_variante_minimumsuche_loesung/images/bilderrahmen.png b/04_loesungen/02_greenfoot/alg13_variante_minimumsuche_loesung/images/bilderrahmen.png new file mode 100644 index 0000000..7f34e32 Binary files /dev/null and b/04_loesungen/02_greenfoot/alg13_variante_minimumsuche_loesung/images/bilderrahmen.png differ diff --git a/04_loesungen/02_greenfoot/alg13_variante_minimumsuche_loesung/jdom-1.1.3.jar b/04_loesungen/02_greenfoot/alg13_variante_minimumsuche_loesung/jdom-1.1.3.jar new file mode 100644 index 0000000..a287727 Binary files /dev/null and b/04_loesungen/02_greenfoot/alg13_variante_minimumsuche_loesung/jdom-1.1.3.jar differ diff --git a/04_loesungen/02_greenfoot/alg13_variante_minimumsuche_loesung/project.greenfoot b/04_loesungen/02_greenfoot/alg13_variante_minimumsuche_loesung/project.greenfoot new file mode 100644 index 0000000..8d60c81 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg13_variante_minimumsuche_loesung/project.greenfoot @@ -0,0 +1,93 @@ +#Greenfoot project file +class.Balkendiagramm.image=balken.png +class.PictureViewer.image=bilderrahmen.png +dependency1.from=MyWorld +dependency1.to=Balkendiagramm +dependency1.type=UsesDependency +dependency2.from=PictureViewer +dependency2.to=Picture +dependency2.type=UsesDependency +dependency3.from=Balkendiagramm +dependency3.to=Table +dependency3.type=UsesDependency +dependency4.from=Table +dependency4.to=TableRow +dependency4.type=UsesDependency +dependency5.from=Picture +dependency5.to=PictureViewer +dependency5.type=UsesDependency +editor.fx.0.height=739 +editor.fx.0.width=816 +editor.fx.0.x=552 +editor.fx.0.y=100 +height=885 +package.numDependencies=5 +package.numTargets=7 +project.charset=UTF-8 +publish.hasSource=false +publish.locked=true +publish.longDesc= +publish.shortDesc= +publish.tags= +publish.title= +publish.url= +readme.height=58 +readme.name=@README +readme.width=47 +readme.x=10 +readme.y=10 +simulation.speed=97 +target1.height=50 +target1.name=PictureViewer +target1.showInterface=false +target1.type=ClassTarget +target1.width=100 +target1.x=0 +target1.y=0 +target2.height=50 +target2.name=Table +target2.showInterface=false +target2.type=ClassTarget +target2.width=80 +target2.x=0 +target2.y=0 +target3.height=50 +target3.name=Balkendiagramm +target3.showInterface=false +target3.type=ClassTarget +target3.width=120 +target3.x=0 +target3.y=0 +target4.height=50 +target4.name=Picture +target4.showInterface=false +target4.type=ClassTarget +target4.width=80 +target4.x=0 +target4.y=0 +target5.height=50 +target5.name=XML +target5.showInterface=false +target5.type=ClassTarget +target5.width=100 +target5.x=0 +target5.y=0 +target6.height=50 +target6.name=TableRow +target6.showInterface=false +target6.type=ClassTarget +target6.width=80 +target6.x=0 +target6.y=0 +target7.height=50 +target7.name=MyWorld +target7.showInterface=false +target7.type=ClassTarget +target7.width=80 +target7.x=0 +target7.y=0 +version=3.0.0 +width=1350 +world.lastInstantiated=MyWorld +xPosition=535 +yPosition=136 diff --git a/04_loesungen/02_greenfoot/alg13_variante_minimumsuche_loesung/punkte.csv b/04_loesungen/02_greenfoot/alg13_variante_minimumsuche_loesung/punkte.csv new file mode 100644 index 0000000..d6e8dfd --- /dev/null +++ b/04_loesungen/02_greenfoot/alg13_variante_minimumsuche_loesung/punkte.csv @@ -0,0 +1,6 @@ +"Name","Punkte" +Niko,216 +Klaus,591 +Anna,857 +Lena,180 +Winfried,168 diff --git a/04_loesungen/02_greenfoot/alg13_variante_minimumsuche_loesung/testfall1.csv b/04_loesungen/02_greenfoot/alg13_variante_minimumsuche_loesung/testfall1.csv new file mode 100644 index 0000000..92c538f --- /dev/null +++ b/04_loesungen/02_greenfoot/alg13_variante_minimumsuche_loesung/testfall1.csv @@ -0,0 +1,20 @@ +"Name","Punkte" +Spieler1,0 +Spieler1,6 +Spieler2,19 +Spieler6,1 +Spieler4,45 +Spieler3,23 +Spieler3,12 +Spieler2,44 +Spieler1,72 +Spieler5,12 +Spieler6,4 +Spieler7,2 +Spieler4,98 +Spieler3,21 +Spieler3,12 +Spieler2,32 +Spieler1,12 +Spieler5,44 +Spieler3,12 diff --git a/04_loesungen/02_greenfoot/alg13_variante_minimumsuche_loesung/testfall2.csv b/04_loesungen/02_greenfoot/alg13_variante_minimumsuche_loesung/testfall2.csv new file mode 100644 index 0000000..091c003 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg13_variante_minimumsuche_loesung/testfall2.csv @@ -0,0 +1,20 @@ +"Name","Punkte" +Spieler1,-5 +Spieler1,-6 +Spieler2,-19 +Spieler6,-1 +Spieler4,-45 +Spieler3,-23 +Spieler3,-12 +Spieler2,-44 +Spieler1,-72 +Spieler5,-12 +Spieler6,-4 +Spieler7,-2 +Spieler4,-98 +Spieler3,-21 +Spieler3,-12 +Spieler2,-32 +Spieler1,-12 +Spieler5,-44 +Spieler3,-12 diff --git a/04_loesungen/02_greenfoot/alg13_variante_minimumsuche_loesung/testfall3.csv b/04_loesungen/02_greenfoot/alg13_variante_minimumsuche_loesung/testfall3.csv new file mode 100644 index 0000000..3bc26b2 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg13_variante_minimumsuche_loesung/testfall3.csv @@ -0,0 +1,2 @@ +"Name","Punkte" +Spieler1,45 diff --git a/04_loesungen/02_greenfoot/alg13_variante_minimumsuche_loesung/testfall4.csv b/04_loesungen/02_greenfoot/alg13_variante_minimumsuche_loesung/testfall4.csv new file mode 100644 index 0000000..e74e6d5 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg13_variante_minimumsuche_loesung/testfall4.csv @@ -0,0 +1 @@ +"Name","Punkte" diff --git a/04_loesungen/02_greenfoot/alg14a_zeitungsmeldung_loesung/MyWorld.java b/04_loesungen/02_greenfoot/alg14a_zeitungsmeldung_loesung/MyWorld.java new file mode 100644 index 0000000..6e0c140 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg14a_zeitungsmeldung_loesung/MyWorld.java @@ -0,0 +1,36 @@ +import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot und MouseInfo) + +/** + * Ergänzen Sie hier eine Beschreibung für die Klasse MyWorld. + * + * @author (Ihr Name) + * @version (eine Versionsnummer oder ein Datum) + */ +public class MyWorld extends World +{ + + /** + * Konstruktor für Objekte der Klasse MyWorld + * + */ + public MyWorld() + { + // Erstellt eine neue Welt mit 1200x900 Pixeln + super(1000, 700, 1); + + prepare(); + } + + + /** + * Bereite die Welt für den Programmstart vor. + * Das heißt: Erzeuge die Anfangs-Objekte und füge sie der Welt hinzu. + */ + private void prepare() + { + Zeitungsmeldung zm = new Zeitungsmeldung(); + addObject(zm,500,350); + + } +} + diff --git a/04_loesungen/02_greenfoot/alg14a_zeitungsmeldung_loesung/Picture.java b/04_loesungen/02_greenfoot/alg14a_zeitungsmeldung_loesung/Picture.java new file mode 100644 index 0000000..8df3d55 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg14a_zeitungsmeldung_loesung/Picture.java @@ -0,0 +1,699 @@ +import java.awt.image.*; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.BasicStroke; +import java.util.Vector; +import javax.imageio.*; +import java.io.*; +import java.awt.*; +import javax.swing.*; +import java.util.Random; +import java.awt.geom.AffineTransform; +/** + * + * Bildklasse für die Simulation von Processing-Befehlen + * + * Diese Klasse stellt ein BufferedImage bereit, in das mit Processing-Befehlen gezeichnet + * werden kann. + * Zusätzlich kann ein Bildanzeiger über jede Änderung des Bildes informiert werden, + * um "Zurück"-Befehle zu ermöglichen. Der Bildanzeiger ist entweder eine normale Java + * ScrollPane oder ein Actor aus Greenfoot. + * Die Dokumentation der einzelnen Zeichenmethoden ist der Processing-Reference + * (https://processing.org/reference/ steht unter CC-Lizenz: https://creativecommons.org/) + * entnommen und mit Deepl.com ins Deutsche übersetzt. + * + * @version 1.0 from 23.01.2019 + * @author Thomas Schaller (ZPG Informatik Klasse 9) + */ + +public class Picture{ + + // Einstellungmöglichkeiten für das Zeichnen von Rechtecken und Ellipsen + // RADIUS = Mittelpunkt+Radius wird gegeben, CENTER = Mittelpunkt und Breite/Höhe wird gegeben, + // CORNER = Linke obere Ecke + Breite/Höhe, CORNERS = Linke obere und rechte untere Ecke + public static final int RADIUS = 1; + public static final int CENTER = 2; + public static final int CORNER = 3; + public static final int CORNERS = 4; + + // gespeichertes Bild, + private BufferedImage image; + + // aktuelle Farbeinstellungen + private Color background; + private Color pencolor; + private Color fillcolor; + + // aktuelle Stiftdicke + private double stroke; + + // akkteller Koordinatenmodus von Rechtecken und Ellipsen + private int ellipseMode = CENTER; + private int rectMode = CORNER; + + // aktueller Font + private Font textfont = null; + + // muss ein Bildanzeiger benachrichtigt werden + private PictureViewer observer = null; + private boolean autorefresh = true; + + /** + * Erzeugt ein Bild mit Standardgröße 500x400 + */ + public Picture() { + this(500,400); + } + + /** + * Erzeugt ein Bild der angegeben Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public Picture(int width, int height) { + this(width,height, "D0D0D0"); + } + + /** + * Erzeugt ein Bild aus einer Datei + * @param filename Dateiname des Bildes + */ + public Picture(String filename) { + load(filename); + } + + /** + * Erzeugt ein Bild der angegebenen Größe mit festgelegtem Hintergrund + * @param width Breite des Bildes + * @param height Höhe des Bildes + * @param background Farbe des Hintergrunds + */ + public Picture(int width, int height, String background) { + this.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + this.background = decode(background); + this.pencolor = new Color(0,0,0); + this.stroke = 1; + this.fillcolor = null; + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(this.background); + g.fillRect(0,0,width-1, height-1); + } + + /** + * Legt fest, wer das Bild anzeigt. + * Diese ermöglicht die Benachrichtung des Observers, wenn sich das Bild ändert. + * @param observer Anzeiger des Bildes + */ + + public void setObserver(PictureViewer observer) { + this.observer= observer; + } + + /** + * Direktes Setzen des Bildes (für interne Zwecke) + * @param b Bild, das gespeichert werden soll. + */ + public void setImage(BufferedImage b) { + image = b; + } + + /** + * Direktes Abfragen des Bildes (für interne Zwecke) + * @return Bild, das gerade gespeichert ist. + */ + public BufferedImage getImage() { + return image; + } + + /** + * Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + * Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + * der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu. + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public void size(int width, int height){ + pushImage(); + this.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(background); + g.fillRect(0,0,width-1, height-1); + } + + /** + * Liefert die Breite des Bildes zurück. + * @return Breite des Bildes + */ + public int getWidth() { + return image.getWidth(); + } + + /** + * Liefert die Höhe des Bildes zurück. + * @return Höhe des Bildes + */ + public int getHeight() { + return image.getHeight(); + } + + + /** + * Erzeugt eine Kopie des Bildes und übergibt sie an den Observer (falls existent), damit dieser die Versionen speichern kann + */ + private void pushImage() { + if(observer != null) { + observer.pushImage(); + } + } + + + /** + * Legt fest, ob nach jedem Zeichenbefehl automatisch das Bild auch in + * der Oberfläche aktualisiert wird. Die Einstellung "false" beschleunigt + * das Zeichnen aufwändiger Bilder und verhindert "Flackern". + * Das Neuzeichnen kann durch die Methode "refresh" gezielt ausgelöst werden. + * @param autorefresh true = nach jedem Zeichenbefehl die Anzeige aktualisieren, false= nur durch die Methode refresh neu zeichnen + */ + public void setAutoRefresh(boolean autoRefresh) { + this.autorefresh = autoRefresh; + } + + + /** + * Auch die anzeigenden Klasse wird zum Neuzeichnen aufgefordert. + */ + private void repaint() { + if(observer != null && autorefresh) { + observer.repaint(); + } + } + + /** + * Auch die anzeigenden Klasse wird zum Neuzeichnen aufgefordert. + */ + public void refresh() { + if(observer != null) { + observer.repaint(); + } + } + + // ----------------------------------------- Zeichenfunktionen ----------------------------------------------- + /** + * Löscht den Inhalt des Bildes. + * Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt. + */ + + public void clear(){ + pushImage(); + image = new BufferedImage(image.getWidth(), image.getHeight(), image.getType()); + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(background); + g.fillRect(0,0,image.getWidth()-1, image.getHeight()-1); + repaint(); + } + + /** + * Konvertiert die in einem bestimmten Modus gegebenen Koordinaten in die Java-übliche Links_Oben_Breite_Höhe Version + * Die Änderungen werden direkt im Array vorgenommen + * @param coord Array mit vier Koordinateneinträgen im gegebenen Modus + * @param mode Modus der Koordinaten (CORNER, CORNERS, RADIUS oder CENTER) + */ + private void convert(int[] coord, int mode) { + switch(mode) { + case CORNER: break; + case CORNERS: coord[2] -= coord[0]; coord[3] -= coord[1]; break; + case RADIUS: coord[2] *= 2; coord[3] *=2; + case CENTER: coord[0] -= coord[2]/2; coord[1] -= coord[3]/2; + } + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + * Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + * Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void rectMode(int mode) { + rectMode = mode; + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + * Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + * Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als Breite und Höhe der Form. + * ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void ellipseMode(int mode) { + ellipseMode = mode; + } + + + + /** + * Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + * Um eine Linie einzufärben, verwenden Sie die {@link #stroke(int, int, int) stroke()} Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + * Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + * {@link #strokeWeight(double) strokeWeight()} geändert werden. + * @param x1 x-Koordinate des 1. Punktes + * @param y1 y-Koordinate des 1. Punktes + * @param x2 x-Koordinate des 2. Punktes + * @param y2 y-Koordinate des 2. Punktes + */ + public void line(int x1, int y1, int x2, int y2) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + if (stroke > 0) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawLine(x1, y1, x2, y2); + } + repaint(); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, rectMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillRect(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawRect(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, ellipseMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillOval(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawOval(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + int px[] = {x1, x2, x3}; + int py[] = {y1, y2, y3}; + polygon(px, py); + + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + + int px[] = {x1, x2, x3, x4}; + int py[] = {y1, y2, y3, y4}; + polygon(px, py); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + + public void polygon(int[] x, int[] y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(fillcolor != null) { + + g.setColor(fillcolor); + g.fillPolygon(x,y, y.length); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawPolygon(x, y, x.length); + } + repaint(); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + ellipse(x,y,1, 1); + + } + + // ----------------------------------------- Schriftdarstellung ----------------------------------------------- + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param s Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String s, int x, int y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(pencolor != null) { + g.setColor(fillcolor); + g.setStroke(new BasicStroke((float) stroke)); + g.setFont(textfont); + g.drawString(s, x, y); + } + repaint(); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + this.textfont = font; + } + + + // ----------------------------------------- Farbfestlegungen ----------------------------------------------- + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(String color) { + try{ + return new Color( + Integer.valueOf( color.substring( 0, 2 ), 16 ), + Integer.valueOf( color.substring( 2, 4 ), 16 ), + Integer.valueOf( color.substring( 4, 6 ), 16 ) ); + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(int color) { + try{ + if(color >=0 && color < 256) { + return new Color(color,color,color); + } else { + int r = color / 0x010000 % 0xFF; + int g = color / 0x000100 % 0xFF; + int b = color % 0xFF; + System.out.println(""+r+","+g+","+b); + return new Color(r, g, b ); + } + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + this.pencolor = decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + this.pencolor=decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + this.pencolor = new Color(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + this.pencolor = null; + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + this.stroke = width; + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + this.fillcolor = decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + this.fillcolor=decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + this.fillcolor = new Color(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + this.fillcolor = null; + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + if(c < 256) { + this.background=new Color(c,c,c); + } else { + int r = c / 0x010000; + int g = c / 0x000100 % 0xFF; + int b = c % 0xFF; + this.background= new Color(r, g, b ); + } + + this.clear(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + this.background=new Color(r,g,b); + this.clear(); + } + + +// ----------------------------------------- Dateioperationen ----------------------------------------------- + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + try{ + this.image = ImageIO.read(new File(filename)); + this.background = decode("D0D0D0"); + this.pencolor = new Color(0,0,0); + this.fillcolor = null; + this.stroke = 1; + this.repaint(); + + } catch(Exception e) { + System.out.println("Fehler beim Einlesen der Bilddatei"); + } + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + try{ + String[] fn = filename.split("\\."); + if (fn.length== 1) { + ImageIO.write(image, "PNG", new File(filename+".png")); + } else { + + if (fn.length == 2 && (fn[1].toUpperCase().equals("PNG") || + fn[1].toUpperCase().equals("GIF"))){ + ImageIO.write(image, fn[1], new File(filename)); + }else { + System.out.println("Unbekanntes Bildformat"); + } + } + + } catch(Exception e) { + System.out.println("Fehler beim Speichern"); + } + } + + +// ----------------------------------------- Sonstiges ----------------------------------------------- + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + + public Color[][] getPixelArray() { + Color[][] pixel = new Color[image.getWidth()][image.getHeight()]; + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + pixel[x][y] = new java.awt.Color(image.getRGB(x,y)); + } + } + return pixel; + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + size(pixel.length,pixel[0].length); + Graphics2D g = (Graphics2D) image.getGraphics(); + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + g.setColor(pixel[x][y]); + g.fillRect(x, y, 1, 1); + } + } + repaint(); + } + + /** + * Hilfsfunktion zum Verzögern der Ausgabe + * @param millis Wartezeit in Millisekunden + */ + public void delay(int millis) { + try{ + Thread.sleep(millis); + + } catch(Exception e) { + + } + + } + + + +} diff --git a/04_loesungen/02_greenfoot/alg14a_zeitungsmeldung_loesung/PictureViewer.java b/04_loesungen/02_greenfoot/alg14a_zeitungsmeldung_loesung/PictureViewer.java new file mode 100644 index 0000000..ecbb521 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg14a_zeitungsmeldung_loesung/PictureViewer.java @@ -0,0 +1,499 @@ +import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot und MouseInfo) +import java.awt.image.*; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.BasicStroke; +import java.awt.Font; +import java.util.Vector; +import java.awt.Color; +import javax.imageio.*; +import java.io.*; + +/** + * Der PictureViewer ist ein Actor, der in der Lage ist ein + * Objekt der Klasse Picture anzuzeigen. Zusätzlich können + * mehrere Verarbeitungsschritte gespeichert werden, um ein + * "zurück"-Funktion zu ermöglichen. + * + * @author Thomas Schaller + * @version V1.0 vom 10.02.2019 + */ +public class PictureViewer extends Actor +{ + public static final int FIT = -1; + public static final int NORMAL = 1; + + private static final int ANZ_BACK = 0; + + private double zoom; + protected Picture picture = null; + private Vector history; + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der Größe 500x400 + */ + public PictureViewer() { + this(500,400); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public PictureViewer(int width, int height) { + this(width,height, "D0D0D0"); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + * @param background Farbe des Hintergrunds als HEX-String (z.B. "FF3A45") + */ + public PictureViewer(int width, int height, String background) { + picture = new Picture(width,height, background); + picture.setObserver(this); + this.history = new Vector(); + this.zoom = NORMAL; + repaint(); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild aus einer Bilddatei + * @param filename Name des Bildes + */ + public PictureViewer(String filename) { + picture = new Picture(filename); + picture.setObserver(this); + this.history = new Vector(); + this.zoom = NORMAL; + repaint(); + } + + /** + * Speichert das übergebene Bild in der History. + * @param b zu speicherndes Bild + */ + public void pushImage() { + if( this.ANZ_BACK > 0) { + if(history.size() == this.ANZ_BACK) { + history.removeElementAt(0); + } + + BufferedImage b = new BufferedImage(picture.getWidth(), picture.getHeight(), picture.getImage().getType()); + Graphics g = b.getGraphics(); + g.drawImage(picture.getImage(), 0, 0, null); + g.dispose(); + + history.add(b); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + private void popImage() { + int anz = history.size(); + if(anz>0) { + BufferedImage i = history.get(anz-1); + history.removeElementAt(anz-1); + picture.setImage(i); + repaint(); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + public void back() { + popImage(); + } + + /** + * Setzt den Zoom-Faktor für das Bild. + * Als Zoomfaktor sind auch die Konstanten Bildanzeiger.FIT (auf Bildschirmgröße zoomen) und Bildanzeiger.NORMAL (100%) möglich. + * @param factor Zoomfaktor (1.0 = 100%). + */ + public void setZoom(double zoom) { + this.zoom = zoom; + repaint(); + } + + /** + * Setzt die automatische Neuanzeige des Bildes. + * Mit dieser Methode kann man einstellen, ob nach jedem Zeichenbefehl + * die Anzeige auf dem Bildschirm aktualisiert werden soll. Bei sehr + * vielen Zeichenbefehlen wird die Ausgabe dadurch sehr langsam. Es reicht + * eine Anzeige am Ende der Zeichenbefehle. Rufen Sie dann für das Neuzeichnen + * die Methode refresh() auf. + * @param autoRefresh true, wenn nach jedem Zeichenbefehl die Anzeige aktualisiert werden soll. + */ + public void setAutoRefresh(boolean autoRefresh) { + picture.setAutoRefresh(autoRefresh); + } + + /** + * Sorgt für die Aktualisierung der Bildschrimanzeige. Das aktuelle Bild + * wird dadurch angezeigt. Durch Einstellung von autoRefresh kann die + * Anzeige automatisiert werden. + */ + public void refresh() { + repaint(); + } + + /** + * Setzt das angezeigt Bild neu und beachtet dabei den Zoomfaktor. + */ + public void repaint() { + double faktor = zoom; + + if (zoom == FIT) { + double faktorw = (double) this.getWorld().getWidth() / picture.getWidth(); + double faktorh = (double) this.getWorld().getHeight() / picture.getHeight(); + faktor = Math.min(faktorw, faktorh); + } + int gfi_width = (int) (picture.getWidth()*faktor); + int gfi_height = (int) (picture.getHeight()*faktor); + + setImage(new GreenfootImage(gfi_width, gfi_height)); + Graphics2D g = (Graphics2D) this.getImage().getAwtImage().getGraphics(); + g.drawImage(picture.getImage(),0,0,gfi_width, gfi_height, 0, 0, picture.getWidth(), picture.getHeight(), null); + g.setColor(new java.awt.Color(0,0,0)); + g.setStroke(new BasicStroke((float) 1)); + g.drawRect(0,0,gfi_width-1, gfi_height-1); + + } + + // Wrappermethoden + /** + * Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + * Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + * der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu. + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public void size(int width, int height){ + picture.size(width, height); + } + + /** + * Liefert die Breite des Bildes zurück. + * @return Breite des Bildes + */ + public int getImageWidth() { + return picture.getWidth(); + } + + /** + * Liefert die Höhe des Bildes zurück. + * @return Höhe des Bildes + */ + public int getImageHeight() { + return picture.getHeight(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + picture.background(c); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + picture.background(r,g,b); + } + + /** + * Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + * Um eine Linie einzufärben, verwenden Sie die {@link #stroke(int, int, int) stroke()} Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + * Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + * {@link #strokeWeight(double) strokeWeight()} geändert werden. + * @param x1 x-Koordinate des 1. Punktes + * @param y1 y-Koordinate des 1. Punktes + * @param x2 x-Koordinate des 2. Punktes + * @param y2 y-Koordinate des 2. Punktes + */ + public void line(int x1, int y1, int x2, int y2) { + picture.line(x1,y1,x2,y2); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + picture.rect(a,b,c,d); + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + picture.ellipse(a,b,c,d); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + picture.triangle(x1,y1,x2,y2,x3,y3); + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + picture.quad(x1,y1,x2,y2,x3,y3,x4,y4); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + public void polygon(int[] x, int[] y) { + picture.polygon(x,y); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + picture.point(x,y); + + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + * Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + * Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void rectMode(int mode) { + picture.rectMode(mode); + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + * Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + * Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als Breite und Höhe der Form. + * ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void ellipseMode(int mode) { + picture.ellipseMode(mode); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + picture.stroke(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + picture.noStroke(); + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + picture.strokeWeight(width); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + picture.fill(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + picture.noFill(); + } + + /** + * Löscht den Inhalt des Bildes. + * Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt. + */ + public void clear(){ + picture.clear(); + } + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + picture.load(filename); + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + picture.save(filename); + } + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param t Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String t, int x, int y) { + picture.text(t,x,y); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + picture.textFont(font); + } + + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + public Color[][] getPixelArray() { + return picture.getPixelArray(); + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + picture.setPixelArray(pixel); + } + + +} + diff --git a/04_loesungen/02_greenfoot/alg14a_zeitungsmeldung_loesung/Table.java b/04_loesungen/02_greenfoot/alg14a_zeitungsmeldung_loesung/Table.java new file mode 100644 index 0000000..ee5a211 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg14a_zeitungsmeldung_loesung/Table.java @@ -0,0 +1,894 @@ +/** + * Die Klasse Table vereinfacht den Zugriff auf CSV-Dateien. + * Die Klassen Table und TableRow ermöglichen einen einfachen Zugriff auf tabellenbasierte + * Dokumente. + * + * @author Thomas Schaller + * @version 1.0 vom 01.02.2019 + */ + +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.ArrayList; +import java.io.*; +import java.util.Scanner; + +import org.jdom.Document; +import org.jdom.Element; +import org.jdom.Attribute; +import org.jdom.JDOMException; +import org.jdom.input.SAXBuilder; +import org.jdom.output.XMLOutputter; +import org.jdom.output.Format; + +public class Table +{ + // Standardtrennzeichen für Spalten + private static final char DEFAULT_SEPARATOR = ';'; + // Standardmarkierung für Texte + private static final char DEFAULT_QUOTE = '"'; + // Standardtrennzeichen für Dezimalzahlen + private static final char DEFAULT_COMMA = ','; + + // mögliche Spaltentypen + private static final String UNKNOWN ="UNKOWN"; + private static final String INT = "INTEGER"; + private static final String DOUBLE = "DOUBLE"; + private static final String FLOAT = "FLOAT"; + + // interne Verwaltung des Dokuments als JDOM-Document-Objekt + private Document doc; + // Verweis auf Element für Kopfzeile + private Element header; + // Ende Attribute + + /** + * Erzeugt leeres Tabellen-Dokument. + */ + public Table() { + this.doc = new Document(); + doc.setRootElement(new Element("CSV-Data")); + this.header = new Element("Header"); + doc.getRootElement().addContent(header); + } + + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei und erstellt ein Tabellenobjekt mit seinen Werten. + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public Table(String filename, String options, char separator, char quote) { + loadCSV(filename, options, separator, quote); + } + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei und erstellt ein Tabellenobjekt mit seinen Werten (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + */ + public Table(String filename, String options) { + loadCSV(filename, options); + } + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei ohne Kopfzeile und erstellt ein Tabellenobjekt mit seinen Werten (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public Table(String filename) { + loadCSV(filename); + } + + // Anfang Methoden + /** + * Liest den Inhalt einer CSV-Datei ohne Kopfzeile (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public void loadCSV(String filename) { + loadCSV(filename, ""); + } + + /** + * Liest den Inhalt einer CSV-Datei (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + */ + public void loadCSV(String filename, String options) { + loadCSV(filename, options, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** + * Liest den Inhalt einer CSV-Datei. + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public void loadCSV(String filename, String options, char separator, char quote) { + doc = new Document(); + doc.setRootElement(new Element("CSV-Data")); + header = new Element("Header"); + doc.getRootElement().addContent(header); + try { + File f = new File(filename); + Scanner scanner = new Scanner(new File(filename)); + if(options.toLowerCase().contains("header") && scanner.hasNext()) { + List entries = parseLine(scanner.nextLine(), separator, quote); + int i= 0; + for(String s : entries) { + Element entry = new Element("Column"); + header.addContent(entry); + entry.setText(s); + entry.setAttribute("type", "unknown"); + i++; + } + } + + List cols = header.getChildren(); + + while (scanner.hasNext()) { + Element line = new Element("Row"); + doc.getRootElement().addContent(line); + List entries = parseLine(scanner.nextLine(), separator, quote); + int i= 0; + + for(String s : entries) { + + if(i==cols.size()) { + Element entry = new Element("Column"); + entry.setAttribute("type", "unknown"); + header.addContent(entry); + cols = header.getChildren(); + } + + Element entry = new Element("Entry"); + entry.setText(s); + line.addContent(entry); + i++; + } + } + scanner.close(); + + } catch (Exception e) { + System.out.println("Fehler beim Lesen der CSV-Datei"); + } + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei ohne Kopfzeile (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public void saveCSV(String filename) { + saveCSV(filename, ""); + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthalten, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile haben soll, + * dann lassen Sie einfach die Option "header" weg. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile haben soll. + * @param filename Dateiname der CSV-Datei. + */ + public void saveCSV(String filename, String options) { + saveCSV(filename, options, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei. + * Wenn die Datei eine Kopfzeile enthalten, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile haben soll, + * dann lassen Sie einfach die Option "header" weg. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile haben soll. + * @param filename Dateiname der CSV-Datei. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public void saveCSV(String filename, String options, char separator, char quote){ + try{ + File f = new File(filename); + PrintStream outputFile = new PrintStream (f); + System.out.println("Speicher in : "+f.getAbsolutePath()); + List columns = header.getChildren(); + String sq = ""+quote; + String ss = ""+separator; + if(quote =='"') sq = "\""; + if(separator =='"') ss = "\""; + + if(options.toLowerCase().contains("header")) { + String h = ""; + for(Element c : columns) { + h += ss + sq + c.getText()+sq; + } + outputFile.println(h.substring(1)); + } + for(int i = 0; i parseLine(String cvsLine) { + return parseLine(cvsLine, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** HIlfsfunktion für die Analyse einer Dateizeile + * @param cvsLine Zeile aus der Datei + * @param sparator Trennzeichen für die Spalten + * @return Liste von String für die einzelnen Spalten + */ + private List parseLine(String cvsLine, char separator) { + return parseLine(cvsLine, separator, DEFAULT_QUOTE); + } + + /** HIlfsfunktion für die Analyse einer Dateizeile + * @param cvsLine Zeile aus der Datei + * @param sparator Trennzeichen für die Spalten + * @param customQuote Kennung für Strings + * @return Liste von String für die einzelnen Spalten + */ + private List parseLine(String cvsLine, char separator, char customQuote) { + + List result = new ArrayList<>(); + + //if empty, return! + if (cvsLine == null && cvsLine.isEmpty()) { + return result; + } + + //ggf. Default-Value laden + if (customQuote == ' ') { + customQuote = DEFAULT_QUOTE; + } + + if (separator == ' ') { + separator = DEFAULT_SEPARATOR; + } + + StringBuffer curVal = new StringBuffer(); + boolean inQuotes = false; + boolean startCollectChar = false; + boolean doubleQuotesInColumn = false; + + char[] chars = cvsLine.toCharArray(); + + for (char ch : chars) { + + if (inQuotes) { // aktueller Text ist in Quotes eingeschlossen + startCollectChar = true; + + if (ch == customQuote) { // Quotes werden beendet, aber Achtung bei "" => Metazeichen + inQuotes = false; + if (ch == '\"') { + doubleQuotesInColumn = true; + } + + } else { + + if (ch == '\"' && !doubleQuotesInColumn) { + doubleQuotesInColumn = true; + } else { + curVal.append(ch); + doubleQuotesInColumn = false; + } + + } + } else { + if (ch == customQuote) { + + inQuotes = true; + + //Fixed : allow "" in empty quote enclosed + if (ch == '\"'){ + if(doubleQuotesInColumn) { + curVal.append('"'); + doubleQuotesInColumn = false; + } else doubleQuotesInColumn = true; + + + } + } + else { + doubleQuotesInColumn = false; + if (ch == separator) { + + result.add(curVal.toString()); + + curVal = new StringBuffer(); + startCollectChar = false; + + } else if (ch == '\r') { + //ignore LF characters + continue; + } else if (ch == '\n') { + //the end, break! + break; + } else { + curVal.append(ch); + } + } + } + + } + result.add(curVal.toString()); + return result; + } + + /** + * Sucht die Nummer einer durch Namen gegebenen Spalte. + * @param name Name der Spalte + * @return Nummer der Spalte + */ + + private int findColumnNumber(String name) { + List columns = header.getChildren(); + int i = 0; + for(Element c : columns) { + if (c.getText().toLowerCase().equals(name.toLowerCase())) { + return i; + + } + i++; + } + return -1; + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an. + */ + public void addColumn() { + Element entry = new Element("Column"); + entry.setAttribute("type", Table.UNKNOWN); + header.addContent(entry); + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an und benennt sie. + * @param title Bezeichnung der Spalte + */ + public void addColumn(String title) { + addColumn(); + Element nc = ((List)(header.getChildren())).get(header.getChildren().size()-1); + nc.setText(title); + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an und benennt und typisiert sie. + * @param title Bezeichnung der Spalte + * @param type Typ der Spalte (UNKNOWN, DOUBLE, INTEGER, FLOAT) + */ + public void addColumn(String title, String type) { + addColumn(title); + Element nc = ((List)(header.getChildren())).get(header.getChildren().size()-1); + nc.setAttribute("type", type); + } + + /** + * Löscht eine Spalte. + * @param i Nummer der Spalte. + */ + public void removeColumn(int i) { + List lines = doc.getRootElement().getChildren(); + for(Element l : lines) { + if(l.getChildren().size()>i) l.removeContent(i); + } + } + + /** + * Löscht eine Spalte + * @param name Name der Spalte + */ + public void removeColumn(String name) { + try{ + removeColumn(findColumnNumber(name)); + } catch(Exception e) { System.out.println("Unbekannter Spaltenname");} + } + + /** + * Liefert die Anzahl der Spalten in der Tabelle + * @return Anzahl der Spalten + */ + public int getColumnCount() { + return header.getChildren().size(); + } + + /** + * Liefert die Anzahl der Zeilen in der Tabelle + * @return Anzahl der Zeilen + */ + public int getRowCount() { + return doc.getRootElement().getChildren().size()-1; + } + + /** + * Löscht alle Zeilen der Tabelle. + * Die Spaltenüberschriften und Typen bleiben erhalten. + */ + public void clearRows() { + doc.getRootElement().removeChildren("Row"); + } + + /** + * Fügt eine neue Zeile an das Ende der Tabelle an. + * @return ein TableRow-Objekt für diese neue Zeile + */ + public TableRow addRow() { + Element row = new Element("Row"); + doc.getRootElement().addContent(row); + return new TableRow(doc, row); + } + + /** + * Löscht eine Zeile + * @param i Nummer der Zeile + */ + public void removeRow(int i) { + if(i rows = doc.getRootElement().getChildren(); + return new TableRow(doc, rows.get(i+1)); + } + return null; + } + + /** + * Liefert die ganze Tabelle als Array von TableRow-Objekten + * @return Array von TableRow-Objekten + */ + public TableRow[] rows() { + TableRow[] rows = new TableRow[getRowCount()]; + for(int i = 0; i < getRowCount(); i++) { + rows[i] = getRow(i); + } + return rows; + } + + /** + * Liefert den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param column Spaltennummer + * @return Wert der Zelle + */ + public int getInt(int row, int column) { + return getRow(row).getInt(column); + } + + /** + * Liefert den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param name Name der Spalte + * @return Wert der Zelle + */ + public int getInt(int row, String name) { + return getRow(row).getInt(name); + } + + /** + * Setzt den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param column Spaltennummer + * @param value neuer Wert der Zelle + */ + public void setInt(int row, int column,int value) { + getRow(row).setInt(column, value); + } + + /** + * Setzt den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(int row, String name, int value) { + getRow(row).setInt(name, value); + } + + /** + * Liefert alle Werte einer Zeile als Integer-Array. + * @param row Nummer der Zeile + * @return int-Array, dass alle Werte der Zeile enthält + */ + public int[] getIntRow(int row) { + try{ + TableRow trow = getRow(row); + int anz = getColumnCount(); + int[] r = new int[anz]; + for(int i=0; i) (header.getChildren())).get(i).getText(); + } else { + return ""; + } + } + + /** + * Liefert die Nummer einer Spalte + * @param name Name der Spalte + * @return Nummer der Spalte + */ + public int getColumn(String name) { + List columns = header.getChildren(); + int i = 0; + while (i < columns.size()) { + if (columns.get(i).getText().toLowerCase().equals(name.toLowerCase())) { + return i; + } + i++; + } // end of while + return -1; + } + + + /** + * Erzeugt eine neue Zeile mit i Spalten + * Wenn bisher nicht genügend Spalten vorhanden sind, werden automatisch neue Spalten hinzugefügt (auch zum Header) + * @param i Anzahl der Spalten + */ + private Element buildRow(int i) { + List columns = header.getChildren(); + Element entry=null; + for(int j=0; j<=i; j++) { + + if(j==columns.size()) { + Element h = new Element("Column"); + h.setAttribute("type", "unknown"); + header.addContent(h); + columns = header.getChildren(); + } + if(j==current.getChildren().size()) { + entry = new Element("Entry"); + current.addContent(entry); + + } + + } + return entry; + + } + + /** + * Erzeugt eine neue Zeile. + * Es werden genügend Spalten erzeugt, dass ein Wert in Spalte "name" eingetragen werden kann + * @param name Name der Spalte + */ + private Element buildRow(String name) { + List columns = header.getChildren(); + int i = 0; + for(Element c: columns) { + + if(c.getText().toLowerCase().equals(name.toLowerCase())) { + return buildRow(i); + } + i++; + } + return null; + + } + + /** + * Liefert den Wert einer Zelle als String + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public String getString(int i) { + if(i >= current.getContent().size()) return ""; + Element e = (Element) current.getContent(i) ; + if(e!=null) { + return e.getText(); + } else { + return ""; + } + } + + /** + * Liefert den Wert einer Zelle als String + * @param name Name der Spalte + * @return Wert der Zelle + */ + public String getString(String name) { + return getString(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als String + * @param i Nummer der Spalte + * @param text neuer Wert der Zelle + */ + public void setString(int i, String text) { + + Element e = buildRow(i); + if(e!=null) e.setText(text); + } + + /** + * Setzt den Wert einer Zelle als String + * @param name Name der Spalte + * @param text neuer Wert der Zelle + */ + public void setString(String name, String text) { + Element e = buildRow(name); + if(e!=null) e.setText(text); + } + + + /** + * Liefert den Wert einer Zelle als Int-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public int getInt(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Integer.parseInt(e.getText()); + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Int-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public int getInt(String name) { + return getInt(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Int-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(int i,int value) { + + Element e = buildRow(i); + if(e!=null) e.setText(""+value); + } + + /** + * Setzt den Wert einer Zelle als Int-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(String name, int value) { + Element e = buildRow(name); + if(e!=null) e.setText(""+value); + } + + /** + * Liefert den Wert einer Zelle als Float-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public float getFloat(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Float.parseFloat(e.getText().replace(",",".")); + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Float-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public float getFloat(String name) { + return getFloat(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Float-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setFloat(int i,float value) { + + Element e = buildRow(i); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Setzt den Wert einer Zelle als Float-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setFloat(String name, float value) { + Element e = buildRow(name); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Liefert den Wert einer Zelle als Double-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public double getDouble(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Double.parseDouble(e.getText().replace(",",".")); + + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Double-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public double getDouble(String name) { + return getDouble(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Double-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setDouble(int i,double value) { + + Element e = buildRow(i); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Setzt den Wert einer Zelle als Double-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setDouble(String name, double value) { + Element e = buildRow(name); + if(e!=null) e.setText(format.format(value)); + } + +} diff --git a/04_loesungen/02_greenfoot/alg14a_zeitungsmeldung_loesung/XML.java b/04_loesungen/02_greenfoot/alg14a_zeitungsmeldung_loesung/XML.java new file mode 100644 index 0000000..c06c490 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg14a_zeitungsmeldung_loesung/XML.java @@ -0,0 +1,637 @@ +/** + * Klasse zum Vereinfachten Zugriff auf XML-Dokumente + * Diese Klasse ist für den Einsatz in der Schule gedacht und soll den Schülern + * einen einfachen Zugriff auf XML-Dokumente ermöglichen. Die zur Verfügung + * stehenden Befehle sind wie in Processing realisiert. + * Dabei ist jeder Teilbaum des Dokuments wieder als XML-Objekt zugreifbar, das + * intern auf die gleiche XML-Dokumentstruktur zugreift. + * Dies ermöglicht bei unsachgemäßem Gebrauch die XML-Struktur zu zerstören. Im + * normalen Gebrauch sollte dies aber nicht relevant sein. + * + * Benötigt: jdom-1.1.3.jar + + * @author Thomas Schaller + * @version 1.0 vom 31.01.2019 + */ +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.ArrayList; +import java.io.*; + +import org.jdom.Document; +import org.jdom.Element; +import org.jdom.Attribute; +import org.jdom.JDOMException; +import org.jdom.input.SAXBuilder; +import org.jdom.output.XMLOutputter; +import org.jdom.output.Format; + +public class XML { + // Anfang Attribute + // XML-Dokumentstruktur + private Document doc; + // Zeiger auf das aktuelle Element + private Element current; + // Ende Attribute + + /** + * Erzeugt ein leeres XMLDokument + */ + public XML() { + this.doc = new Document(); + this.current = null; + } + + /** + * Erzeugt ein XML-Dokument aus einer Datei + * @param filename Dateiname der XML-Datei + */ + public XML(String filename) { + loadXML(filename); + } + + /** + * interner Konstruktor, um ein XML Objekt zu erzeugen, das auf einen bestimmten Knoten verweist + * @param doc die XML-Dokumentstruktur + * @param current Zeiger auf das aktuelle Element + */ + private XML(Document doc, Element current) { + this.doc = doc; + this.current = current; + } + + // Anfang Methoden + /** Öffnet das durch den Dateinamen gegebene Dokument + * @param filename Dateiname des XML-Files + */ + public void loadXML(String filename) { + doc = null; + File f = new File(filename); + + try { + // Das Dokument erstellen + SAXBuilder builder = new SAXBuilder(); + doc = builder.build(f); + + } catch (JDOMException e) { + e.printStackTrace(); + + } catch (IOException e) { + e.printStackTrace(); + } + // Zeiger im Baum auf Root-Element + current = doc.getRootElement(); + } + + /** Speichert den XML-Baum im angegebenen Dateinamen + * @param filename Dateiname des XML-Files + */ + public void saveXML(String filename) { + try { + // new XMLOutputter().output(doc, System.out); + XMLOutputter xmlOutput = new XMLOutputter(); + + // display nice nice + xmlOutput.setFormat(Format.getPrettyFormat()); + File f = new File(filename); + FileOutputStream outputFile = new FileOutputStream(f); + System.out.println("Speicher in : "+f.getAbsolutePath() ); + xmlOutput.output(doc, outputFile); + outputFile.close(); + System.out.println("File Saved!"); + } catch (IOException io) { + System.out.println(io.getMessage()); + } + + } + + //----------------------------------------------- Zeigerbewegungen -------------------------------------------------- + /** + * liefert ein XML-Objekt, das auf den Vaterknoten des aktuellen Elements zeigt. + * @return Vater des aktuellen Objekts. + */ + public XML getParent() { + if(current != null) { + Element parent = current.getParentElement(); + if (parent == null) { + return null; + } else { + return new XML(doc, parent); + } + } + return null; + } + + /** + * Überprüft, ob das Element irgendwelche Kinder hat oder nicht, und gibt das Ergebnis als boolean zurück. + * @return true, wenn Kinder vorhanden sind, sonst false + */ + public boolean hasChildren() { + if (current == null) { + return doc.hasRootElement(); + } else { + return current.getChildren().size()>0; + } + } + + /** + * Ermittelt die Namen aller Kinder des Elements und gibt die Namen als ein Array von Strings zurück. + * Dies ist dasselbe wie das Durchlaufen und Aufrufen von getName() auf jedem untergeordneten Element einzeln. + * @return Liste aller Namen der Kinder + */ + public String[] listChildren() { + if (current == null) { + if(doc.hasRootElement()) { + String[] names = new String[0]; + names[0] = doc.getRootElement().getName(); + return names; + } else { + return null; + } + } else { + List ch_element = current.getChildren(); + String[] names = new String[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + names[i] = ch_element.get(i).getName(); + } + return names; + } + } + + /** + * Liefert alle Kinder des Elements als Array von XML-Objekten. + * @return Array der Kinder als XML-Objekte + */ + public XML[] getChildren() { + if (current == null) { + if(doc.hasRootElement()) { + XML[] ch_xml = new XML[1]; + ch_xml[0] = new XML(doc, doc.getRootElement()); + return ch_xml; + } else { + return null; + } + } else { + List ch_element = current.getChildren(); + XML[] ch_xml = new XML[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + ch_xml[i] = new XML(doc, ch_element.get(i)); + } + return ch_xml; + } + } + + /** + * Liefert bestimmte Kinder des Elements als Array von XML-Objekten. + * Die Methode gibt dabei alle Kinder zurück, die dem angegebenen Namen entsprechen. + * @param name Name der gesuchten Kind-Objekte + * @return Array der Kinder als XML-Objekte + */ + public XML[] getChildren(String name) { + if (current == null) { + if(doc.hasRootElement()) { + XML[] ch_xml = new XML[1]; + ch_xml[0] = new XML(doc, doc.getRootElement()); + if(doc.getRootElement().getName().equals(name)){ + return ch_xml; + } else { + return null; + } + } else { + return null; + } + } else { + List ch_element = current.getChildren(name); + XML[] ch_xml = new XML[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + ch_xml[i] = new XML(doc, ch_element.get(i)); + } + return ch_xml; + } + } + + /** + * Liefert das erste Kind des Elements mit einem bestimmten Namen. + * Die Methode gibt das erste Kind zurück, das dem angegebenen Namen entsprechen. + * @param name Name des gesuchten Kind-Objektes + * @return Kind als XML-Objekt + */ + + public XML getChild(String name) { + if (current == null) { + Element e = doc.getRootElement(); + if (e.getName().equals(name)) { + return new XML(doc, e); + } else { + return null; + } + } else { + String[] names = name.split("/"); + Element e = current; + int i = 0; + while(i < names.length) { + e = e.getChild(names[i]); + if (e==null) return null; + i++; + } + return new XML(doc, e); + } + } + + /** + * Liefert das i. Kind des Elements. + * Die Methode gibt das i. Kind des aktuellen Elements zurück. + * @param i Nummer des Kindes + * @return Kind als XML-Objekt + */ + public XML getChild(int i) { + if (current == null) { + return new XML(doc, doc.getRootElement()); + } else { + List ch_element = current.getChildren(); + if (i>=ch_element.size()) return null; + return new XML(doc, ch_element.get(i)); + } + } + + //--------------------------------------------------- Methoden für das aktuelle Element ------------------------------------------------- + /** + * Frage den Namen des aktuellen Elements ab + * @return Namen des Elements + */ + public String getName() { + if (current==null) return ""; + return current.getName(); + } + + /** + * Setze den Namen des aktuellen Elements. + * @param name Neuer Name des Elements + */ + public void setName(String name) { + if (current==null) return; + current.setName(name); + } + + /** + * liefert die Anzahl der Attribute eines Elements. + * @return Anzahl des Attribute + */ + public int getAttributeCount() { + if (current == null) return 0; + return current.getAttributes().size(); + } + + /** + * liefert zurück, ob das aktuelle Element Attribute hat . + * @return true, wenn es Attribute gibt + */ + public boolean hasAttribute() { + if (current == null) return false; + return current.getAttributes().size()>0; + } + + /** + * Ruft alle Attribute des angegebenen Elements ab und gibt sie als Array von Strings zurück. + * @return Liste der Attributnamen + */ + public String[] listAttributes() { + if (current == null) return null; + List attr = current.getAttributes(); + String[] names = new String[attr.size()]; + for(int i=0; i < attr.size() ; i++) { + names[i] = attr.get(i).getName(); + } + return names; + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs + */ + public String getString(String attribute) { + if (current==null) return ""; + return current.getAttributeValue(attribute); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs + */ + public String getString(String attribute, String defaultValue) { + if (current==null) return defaultValue; + return current.getAttributeValue(attribute,defaultValue); + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param text neuer Wert des Attributs + */ + public void setString(String attribute, String text) { + if (current==null) return; + current.setAttribute(attribute, text); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Integer-Zahl + */ + public int getInt(String attribute) { + if (current==null) return 0; + try{ + int i = Integer.parseInt(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als Integer-Zahl + */ + public int getInt(String attribute, int defaultValue) { + if (current==null) return defaultValue; + try{ + int i = Integer.parseInt(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setInt(String attribute, int value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Float-Zahl + */ + public float getFloat(String attribute) { + if (current==null) return 0; + try{ + float i = Float.parseFloat(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als Float-Zahl + */ + public float getFloat(String attribute, float defaultValue) { + if (current==null) return defaultValue; + try{ + float i = Float.parseFloat(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setFloat(String attribute, float value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Double-Zahl + */ + public double getDouble(String attribute) { + if (current==null) return 0; + try{ + double i = Double.parseDouble(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + +/** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als double-Zahl + */ + public double getDouble(String attribute, double defaultValue) { + if (current==null) return defaultValue; + try{ + double i = Double.parseDouble(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setDouble(String attribute, double value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt den Inhalt/Text des aktuellen Elements ab + * @return Inhalt des Elements + */ + public String getContent() { + if ( current==null) return ""; + + return current.getText(); + } + + /** + * Fragt den Inhalt/Text des aktuellen Elements ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardtext + * @return Inhalt des Elements + */ + public String getContent(String defaultValue) { + if ( current==null) return defaultValue; + String t = current.getText(); + if(t.equals("")) t = defaultValue; + return t; + } + + /** + * Setzt den Inhalt/Text des aktuellen Elements + * @param text Neuer Inhalt des Elements + */ + public void setContent(String text) { + if ( current==null) return; + current.setText(text); + } + + + /** + * Fragt den Inhalt des aktuellen Elements als Integerzahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ public int getIntContent(int defaultValue) { + if ( current==null) return defaultValue; + try{ + int i = Integer.parseInt(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Integerzahl ab + * @return Inhalt des Elements + */ + public int getIntContent() { + if ( current==null) return 0; + try{ + int i = Integer.parseInt(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setIntContent(int value) { + if ( current==null) return; + current.setText(""+value); + } + + + /** + * Fragt den Inhalt des aktuellen Elements als Floatzahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ + public float getFloatContent(float defaultValue) { + if ( current==null) return defaultValue; + try{ + float i = Float.parseFloat(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Floatzahl ab + * @return Inhalt des Elements + */ + public float getFloatContent() { + if ( current==null) return 0; + try{ + float i = Float.parseFloat(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setFloatContent(float value) { + if ( current==null) return; + current.setText(""+value); + } + +/** + * Fragt den Inhalt des aktuellen Elements als Doublezahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ + public double getDoubleContent(double defaultValue) { + if ( current==null) return defaultValue; + try{ + double i = Double.parseDouble(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Doublezahl ab + * @return Inhalt des Elements + */ + public double getDoubleContent() { + if ( current==null) return 0; + try{ + double i = Double.parseDouble(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setDoubleContent(double value) { + if ( current==null) return; + current.setText(""+value); + } + + + // ----------------------------------------------- XML-Struktur aufbauen ------------------------------------------------ + /** Erzeuge neues Element nach der aktuellen Position und setze dieses als aktuelles Element + * @param name Name des neuen Elements + * @return neues Element als XML-Objekt + */ + public XML addChild(String name) { + Element e = new Element(name); + if(current == null){ // man ist auf Root-Ebene + doc.setRootElement(e); + + } + else { + current.addContent(e); + } // end of if-else + return new XML(doc, e); + } + + /** + * liefert das aktuelle Element als jdom-Element-Objekt + * @return aktuelles Element + */ + private Element getCurrent() { + return current; + } + + /** + * löscht ein Kind des aktuellen Knotens. + * Ist kid kein Kind des aktuellen Elements passiert gar nichts. + * @param kid XML-Objekt des Kindes + */ + public void removeChild(XML kid) { + if (current == null) return; + Element e = kid.getCurrent(); + int index = current.indexOf(e); + if(index >= 0) { current.removeContent(e);} + } + +} diff --git a/04_loesungen/02_greenfoot/alg14a_zeitungsmeldung_loesung/Zeitungsmeldung.java b/04_loesungen/02_greenfoot/alg14a_zeitungsmeldung_loesung/Zeitungsmeldung.java new file mode 100644 index 0000000..b5a2804 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg14a_zeitungsmeldung_loesung/Zeitungsmeldung.java @@ -0,0 +1,138 @@ +import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot und MouseInfo) +import java.awt.Font; + +/** + * Ausgabe einer automatisierten Zeitungsmeldung, Bestimmung des Maximums und + * Durchschnitts eines int-Arrays. + * @author Schaller + * @version 29.11.18 + */ +public class Zeitungsmeldung extends PictureViewer + +{ + // Liste mit allen Werten //<>// + int[] punkte; + String[] namen; + + // Schriften + Font kleineSchrift; + Font grosseSchrift; + + public Zeitungsmeldung() { + size(1000, 700); + background(0); + kleineSchrift = new Font( Font.SANS_SERIF, Font.PLAIN, 12 ); + grosseSchrift = new Font( Font.SANS_SERIF, Font.PLAIN, 20 ); + + // CSV-Datei laden und anzeigen + ladeTabelle("punkte.csv"); + int summe = berechneSumme(punkte); + System.out.println("Summe: "+summe); + schreibeZeitungsmeldung(); + } + + public void ladeTabelle(String name) { + // Tabelle aus CSV-Datei laden + Table csv = new Table(name, "header",',','"'); + + if (csv != null && csv.getColumnCount()==2) { + + // Initialisiere Arrays, in die alle Zeilen der Tabelle passen + punkte = new int[csv.getRowCount()]; + namen = new String[csv.getRowCount()]; + + // Fülle die Arrays mit Werten aus der Tabelle + for (int i = 0; i < punkte.length; i++) { + // Lies Wert aus der i. Zeile und der Spalte "Punkte" bzw. "Name" + punkte[i] = csv.getInt(i, "Punkte"); + namen[i] = csv.getString(i, "Name"); + } + } + } + + public void schreibeZeitungsmeldung() { + + clear(); + + // Überschrift + fill(225,225,255); + stroke(155,155,255); + textFont(grosseSchrift); + text("BREAKING NEWS",5,32); + strokeWeight(3); + line(2,4,400,4); + line(2,45,400,45); + strokeWeight(2); + line(2,7,400,7); + line(2,42,400,42); + strokeWeight(1); + textFont(kleineSchrift); + fill(240); + + int anzahlSpieler = anzahlSpieler(namen);; + int anzahlSpiele = punkte.length; + int summe = berechneSumme(punkte); + double durchschnitt = berechneDurchschnitt(punkte); + + text("Großartiges Ergebnis - Klasse XY nimmt an Binärwettbewerb teil.", 2, 60); + text("Die Klasse XY hat beim diesjährigen Binärwettbewerb teilgenommen", 2, 82); + text("und ein großartiges Ergebnis erzielt. Die "+anzahlSpieler+" Schülerinnen und", 2, 94); + text("Schüler der Klasse erreichten in "+anzahlSpiele+" Spielen eine Gesamtpunktzahl",2,106); + text("von "+summe+". Das ist ein Durchschnitt von "+durchschnitt+" pro Spiel.",2,118); + + } + + public int berechneSumme(int[] zahlen) { + int summe; + + // Sind überhaupt Daten da? + if(zahlen.length==0 ) { //<>// + return -1; + } + + // Startwerte setzen + summe = 0; + + // Alle Arrayelemente untersuchen + for (int i=0; i< zahlen.length; i++) { + summe = summe + zahlen[i]; + } + // Gib die Summe zurück + return summe; + } + + public double berechneDurchschnitt(int[] zahlen) { + double durchschnitt; + + // Berechne Durchschnitt aus der Summe + durchschnitt = (double) berechneSumme(zahlen)/zahlen.length; + + return durchschnitt; + } + + public int anzahlSpieler(String[] namen) { + int anzahl; + boolean gefunden; + // Startwerte setzen + anzahl = 0; + + // Nach jedem Namen suchen + for(int i=0; i< namen.length; i ++) { + // Prüfe, ob der i. Name ein neuer Name ist + // Kontrolliere dazu alle vorhergehenden, ob ein gleicher Name dabei ist. + gefunden = false; + for(int j=0; j < i; j++) { + // Wenn der Name gleich ist, dann merke dir das + if(namen[i].equals(namen[j])) { + gefunden = true; + } + } + // Wenn nach Kontrolle aller vorhergehender Namen der aktuelle nicht dabei + // ist, dann ist er neu und muss gezählt werden. + if (!gefunden) { + anzahl++; + } + } + return anzahl; + } +} diff --git a/04_loesungen/02_greenfoot/alg14a_zeitungsmeldung_loesung/images/balken.png b/04_loesungen/02_greenfoot/alg14a_zeitungsmeldung_loesung/images/balken.png new file mode 100644 index 0000000..9ff1ffc Binary files /dev/null and b/04_loesungen/02_greenfoot/alg14a_zeitungsmeldung_loesung/images/balken.png differ diff --git a/04_loesungen/02_greenfoot/alg14a_zeitungsmeldung_loesung/images/bilderrahmen.png b/04_loesungen/02_greenfoot/alg14a_zeitungsmeldung_loesung/images/bilderrahmen.png new file mode 100644 index 0000000..7f34e32 Binary files /dev/null and b/04_loesungen/02_greenfoot/alg14a_zeitungsmeldung_loesung/images/bilderrahmen.png differ diff --git a/04_loesungen/02_greenfoot/alg14a_zeitungsmeldung_loesung/jdom-1.1.3.jar b/04_loesungen/02_greenfoot/alg14a_zeitungsmeldung_loesung/jdom-1.1.3.jar new file mode 100644 index 0000000..a287727 Binary files /dev/null and b/04_loesungen/02_greenfoot/alg14a_zeitungsmeldung_loesung/jdom-1.1.3.jar differ diff --git a/04_loesungen/02_greenfoot/alg14a_zeitungsmeldung_loesung/project.greenfoot b/04_loesungen/02_greenfoot/alg14a_zeitungsmeldung_loesung/project.greenfoot new file mode 100644 index 0000000..f90f288 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg14a_zeitungsmeldung_loesung/project.greenfoot @@ -0,0 +1,93 @@ +#Greenfoot project file +class.PictureViewer.image=bilderrahmen.png +class.Zeitungsmeldung.image=balken.png +dependency1.from=MyWorld +dependency1.to=Zeitungsmeldung +dependency1.type=UsesDependency +dependency2.from=PictureViewer +dependency2.to=Picture +dependency2.type=UsesDependency +dependency3.from=Zeitungsmeldung +dependency3.to=Table +dependency3.type=UsesDependency +dependency4.from=Table +dependency4.to=TableRow +dependency4.type=UsesDependency +dependency5.from=Picture +dependency5.to=PictureViewer +dependency5.type=UsesDependency +editor.fx.0.height=739 +editor.fx.0.width=816 +editor.fx.0.x=552 +editor.fx.0.y=100 +height=885 +package.numDependencies=5 +package.numTargets=7 +project.charset=UTF-8 +publish.hasSource=false +publish.locked=true +publish.longDesc= +publish.shortDesc= +publish.tags= +publish.title= +publish.url= +readme.height=58 +readme.name=@README +readme.width=47 +readme.x=10 +readme.y=10 +simulation.speed=97 +target1.height=50 +target1.name=PictureViewer +target1.showInterface=false +target1.type=ClassTarget +target1.width=100 +target1.x=0 +target1.y=0 +target2.height=50 +target2.name=Table +target2.showInterface=false +target2.type=ClassTarget +target2.width=80 +target2.x=0 +target2.y=0 +target3.height=50 +target3.name=Zeitungsmeldung +target3.showInterface=false +target3.type=ClassTarget +target3.width=120 +target3.x=0 +target3.y=0 +target4.height=50 +target4.name=Picture +target4.showInterface=false +target4.type=ClassTarget +target4.width=80 +target4.x=0 +target4.y=0 +target5.height=50 +target5.name=XML +target5.showInterface=false +target5.type=ClassTarget +target5.width=100 +target5.x=0 +target5.y=0 +target6.height=50 +target6.name=TableRow +target6.showInterface=false +target6.type=ClassTarget +target6.width=80 +target6.x=0 +target6.y=0 +target7.height=50 +target7.name=MyWorld +target7.showInterface=false +target7.type=ClassTarget +target7.width=80 +target7.x=0 +target7.y=0 +version=3.0.0 +width=1350 +world.lastInstantiated=MyWorld +xPosition=375 +yPosition=128 diff --git a/04_loesungen/02_greenfoot/alg14a_zeitungsmeldung_loesung/punkte.csv b/04_loesungen/02_greenfoot/alg14a_zeitungsmeldung_loesung/punkte.csv new file mode 100644 index 0000000..d6e8dfd --- /dev/null +++ b/04_loesungen/02_greenfoot/alg14a_zeitungsmeldung_loesung/punkte.csv @@ -0,0 +1,6 @@ +"Name","Punkte" +Niko,216 +Klaus,591 +Anna,857 +Lena,180 +Winfried,168 diff --git a/04_loesungen/02_greenfoot/alg14a_zeitungsmeldung_loesung/testfall1.csv b/04_loesungen/02_greenfoot/alg14a_zeitungsmeldung_loesung/testfall1.csv new file mode 100644 index 0000000..92c538f --- /dev/null +++ b/04_loesungen/02_greenfoot/alg14a_zeitungsmeldung_loesung/testfall1.csv @@ -0,0 +1,20 @@ +"Name","Punkte" +Spieler1,0 +Spieler1,6 +Spieler2,19 +Spieler6,1 +Spieler4,45 +Spieler3,23 +Spieler3,12 +Spieler2,44 +Spieler1,72 +Spieler5,12 +Spieler6,4 +Spieler7,2 +Spieler4,98 +Spieler3,21 +Spieler3,12 +Spieler2,32 +Spieler1,12 +Spieler5,44 +Spieler3,12 diff --git a/04_loesungen/02_greenfoot/alg14a_zeitungsmeldung_loesung/testfall2.csv b/04_loesungen/02_greenfoot/alg14a_zeitungsmeldung_loesung/testfall2.csv new file mode 100644 index 0000000..091c003 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg14a_zeitungsmeldung_loesung/testfall2.csv @@ -0,0 +1,20 @@ +"Name","Punkte" +Spieler1,-5 +Spieler1,-6 +Spieler2,-19 +Spieler6,-1 +Spieler4,-45 +Spieler3,-23 +Spieler3,-12 +Spieler2,-44 +Spieler1,-72 +Spieler5,-12 +Spieler6,-4 +Spieler7,-2 +Spieler4,-98 +Spieler3,-21 +Spieler3,-12 +Spieler2,-32 +Spieler1,-12 +Spieler5,-44 +Spieler3,-12 diff --git a/04_loesungen/02_greenfoot/alg14a_zeitungsmeldung_loesung/testfall3.csv b/04_loesungen/02_greenfoot/alg14a_zeitungsmeldung_loesung/testfall3.csv new file mode 100644 index 0000000..3bc26b2 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg14a_zeitungsmeldung_loesung/testfall3.csv @@ -0,0 +1,2 @@ +"Name","Punkte" +Spieler1,45 diff --git a/04_loesungen/02_greenfoot/alg14a_zeitungsmeldung_loesung/testfall4.csv b/04_loesungen/02_greenfoot/alg14a_zeitungsmeldung_loesung/testfall4.csv new file mode 100644 index 0000000..e74e6d5 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg14a_zeitungsmeldung_loesung/testfall4.csv @@ -0,0 +1 @@ +"Name","Punkte" diff --git a/04_loesungen/02_greenfoot/alg14b_highscoretabelle_loesung/Highscore.java b/04_loesungen/02_greenfoot/alg14b_highscoretabelle_loesung/Highscore.java new file mode 100644 index 0000000..537b85b --- /dev/null +++ b/04_loesungen/02_greenfoot/alg14b_highscoretabelle_loesung/Highscore.java @@ -0,0 +1,125 @@ +import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot und MouseInfo) +import java.awt.Font; + +/** + * Balkendiagramm für int-Array, Zahlen werden aus CSV-Datei gelesen, Umwandlung in sortierte Tabelle. + * Hinweis zur Benutzung: + * Start des Algorithmus: Rufe im Kontextmenü (rechte Maustaste) die Methode wastutes() auf + * @author Schaller + * @version 29.11.18 + */ +public class Highscore extends PictureViewer + +{ +// Liste mit allen Werten //<>// + int[] zahlen; + String[] namen; + +// Hilfsvariablen für die Suche + int akt_maximum=-1; // aktuell groesstes Element + int akt=-2; // aktuell untersuchtes Element + int verzoegerung=10000; // Geschwindigkeit der Ausführung + + // Schriften + Font kleineSchrift; + Font grosseSchrift; + + public Highscore() { + size(1000, 700); + background(0); + kleineSchrift = new Font( Font.SANS_SERIF, Font.PLAIN, 12 ); + grosseSchrift = new Font( Font.SANS_SERIF, Font.PLAIN, 20 ); + + // CSV-Datei laden und anzeigen + ladeTabelle("punkte.csv"); + zeichneBalken(); + } + + public void ladeTabelle(String name) { + // Tabelle aus CSV-Datei laden + Table csv = new Table(name, "header",',','"'); + + if (csv != null && csv.getColumnCount()==2) { + + // Initialisiere Arrays, in die alle Zeilen der Tabelle passen + zahlen = new int[csv.getRowCount()]; + namen = new String[csv.getRowCount()]; + + // Fülle die Arrays mit Werten aus der Tabelle + for (int i = 0; i < zahlen.length; i++) { + // Lies Wert aus der i. Zeile und der Spalte "Punkte" bzw. "Name" + zahlen[i] = csv.getInt(i, "Punkte"); + namen[i] = csv.getString(i, "Name"); + } + } + } + + public void zeichneBalken() { + + clear(); + + // Überschrift + fill(255, 255, 255); + textFont(grosseSchrift); + text("Punkte", 2, 20); + textFont(kleineSchrift); + + // Alle Einträge darstellen + if (zahlen != null) { + for (int i = 0; i< zahlen.length; i++) { + + fill(20, 25, 165); + // aktuelle Elemente farblich hervorheben + if (i == akt || i == akt+1 ) { + fill(140, 230, 20); + } + + // Balkendiagramm zeichnen + if (zahlen[i]>=0) rect(120, 25+i*15, zahlen[i]+1, 13); + + // Beschriftung + fill(255, 255, 255); + text(namen[i], 2, 35+i*15); + text(""+zahlen[i], 70, 35+i*15); + } + } + } + public void wastutes() { + // Sind überhaupt Daten da? + if (zahlen.length==0 ) { + return; + } + + + + // Wiederholen den Durchlauf n-1 mal + for (int i = 1; i< zahlen.length; i++) { + // Durchlaufe alle Array-Elemente + for (akt=0; akt+1 < zahlen.length; akt++) { + // Neu zeichnen, da akt neu gesetzt wurde + zeichneBalken(); + Greenfoot.delay(verzoegerung); + // Vergleiche mit Nachbarelement. Falsch sortiert? + if (zahlen[akt+1]> zahlen[akt]) { + // Dreieckstausch bei Zahlen und Namen + int dummy = zahlen[akt]; + zahlen[akt] = zahlen[akt+1]; + zahlen[akt+1] = dummy; + + String s = namen[akt]; + namen[akt] = namen[akt+1]; + namen[akt+1] = s; + + // Zeichne Balken neu, da getauscht wurde + zeichneBalken(); + Greenfoot.delay(verzoegerung); + } + } + } + // Sortierung beendet + akt = -2; + zeichneBalken(); + Greenfoot.delay(verzoegerung); + + } +} diff --git a/04_loesungen/02_greenfoot/alg14b_highscoretabelle_loesung/MyWorld.java b/04_loesungen/02_greenfoot/alg14b_highscoretabelle_loesung/MyWorld.java new file mode 100644 index 0000000..4e5c579 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg14b_highscoretabelle_loesung/MyWorld.java @@ -0,0 +1,36 @@ +import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot und MouseInfo) + +/** + * Ergänzen Sie hier eine Beschreibung für die Klasse MyWorld. + * + * @author (Ihr Name) + * @version (eine Versionsnummer oder ein Datum) + */ +public class MyWorld extends World +{ + + /** + * Konstruktor für Objekte der Klasse MyWorld + * + */ + public MyWorld() + { + // Erstellt eine neue Welt mit 1200x900 Pixeln + super(1000, 700, 1); + + prepare(); + } + + + /** + * Bereite die Welt für den Programmstart vor. + * Das heißt: Erzeuge die Anfangs-Objekte und füge sie der Welt hinzu. + */ + private void prepare() + { + Highscore hs = new Highscore(); + addObject(hs,500,350); + + } +} + diff --git a/04_loesungen/02_greenfoot/alg14b_highscoretabelle_loesung/Picture.java b/04_loesungen/02_greenfoot/alg14b_highscoretabelle_loesung/Picture.java new file mode 100644 index 0000000..8df3d55 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg14b_highscoretabelle_loesung/Picture.java @@ -0,0 +1,699 @@ +import java.awt.image.*; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.BasicStroke; +import java.util.Vector; +import javax.imageio.*; +import java.io.*; +import java.awt.*; +import javax.swing.*; +import java.util.Random; +import java.awt.geom.AffineTransform; +/** + * + * Bildklasse für die Simulation von Processing-Befehlen + * + * Diese Klasse stellt ein BufferedImage bereit, in das mit Processing-Befehlen gezeichnet + * werden kann. + * Zusätzlich kann ein Bildanzeiger über jede Änderung des Bildes informiert werden, + * um "Zurück"-Befehle zu ermöglichen. Der Bildanzeiger ist entweder eine normale Java + * ScrollPane oder ein Actor aus Greenfoot. + * Die Dokumentation der einzelnen Zeichenmethoden ist der Processing-Reference + * (https://processing.org/reference/ steht unter CC-Lizenz: https://creativecommons.org/) + * entnommen und mit Deepl.com ins Deutsche übersetzt. + * + * @version 1.0 from 23.01.2019 + * @author Thomas Schaller (ZPG Informatik Klasse 9) + */ + +public class Picture{ + + // Einstellungmöglichkeiten für das Zeichnen von Rechtecken und Ellipsen + // RADIUS = Mittelpunkt+Radius wird gegeben, CENTER = Mittelpunkt und Breite/Höhe wird gegeben, + // CORNER = Linke obere Ecke + Breite/Höhe, CORNERS = Linke obere und rechte untere Ecke + public static final int RADIUS = 1; + public static final int CENTER = 2; + public static final int CORNER = 3; + public static final int CORNERS = 4; + + // gespeichertes Bild, + private BufferedImage image; + + // aktuelle Farbeinstellungen + private Color background; + private Color pencolor; + private Color fillcolor; + + // aktuelle Stiftdicke + private double stroke; + + // akkteller Koordinatenmodus von Rechtecken und Ellipsen + private int ellipseMode = CENTER; + private int rectMode = CORNER; + + // aktueller Font + private Font textfont = null; + + // muss ein Bildanzeiger benachrichtigt werden + private PictureViewer observer = null; + private boolean autorefresh = true; + + /** + * Erzeugt ein Bild mit Standardgröße 500x400 + */ + public Picture() { + this(500,400); + } + + /** + * Erzeugt ein Bild der angegeben Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public Picture(int width, int height) { + this(width,height, "D0D0D0"); + } + + /** + * Erzeugt ein Bild aus einer Datei + * @param filename Dateiname des Bildes + */ + public Picture(String filename) { + load(filename); + } + + /** + * Erzeugt ein Bild der angegebenen Größe mit festgelegtem Hintergrund + * @param width Breite des Bildes + * @param height Höhe des Bildes + * @param background Farbe des Hintergrunds + */ + public Picture(int width, int height, String background) { + this.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + this.background = decode(background); + this.pencolor = new Color(0,0,0); + this.stroke = 1; + this.fillcolor = null; + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(this.background); + g.fillRect(0,0,width-1, height-1); + } + + /** + * Legt fest, wer das Bild anzeigt. + * Diese ermöglicht die Benachrichtung des Observers, wenn sich das Bild ändert. + * @param observer Anzeiger des Bildes + */ + + public void setObserver(PictureViewer observer) { + this.observer= observer; + } + + /** + * Direktes Setzen des Bildes (für interne Zwecke) + * @param b Bild, das gespeichert werden soll. + */ + public void setImage(BufferedImage b) { + image = b; + } + + /** + * Direktes Abfragen des Bildes (für interne Zwecke) + * @return Bild, das gerade gespeichert ist. + */ + public BufferedImage getImage() { + return image; + } + + /** + * Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + * Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + * der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu. + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public void size(int width, int height){ + pushImage(); + this.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(background); + g.fillRect(0,0,width-1, height-1); + } + + /** + * Liefert die Breite des Bildes zurück. + * @return Breite des Bildes + */ + public int getWidth() { + return image.getWidth(); + } + + /** + * Liefert die Höhe des Bildes zurück. + * @return Höhe des Bildes + */ + public int getHeight() { + return image.getHeight(); + } + + + /** + * Erzeugt eine Kopie des Bildes und übergibt sie an den Observer (falls existent), damit dieser die Versionen speichern kann + */ + private void pushImage() { + if(observer != null) { + observer.pushImage(); + } + } + + + /** + * Legt fest, ob nach jedem Zeichenbefehl automatisch das Bild auch in + * der Oberfläche aktualisiert wird. Die Einstellung "false" beschleunigt + * das Zeichnen aufwändiger Bilder und verhindert "Flackern". + * Das Neuzeichnen kann durch die Methode "refresh" gezielt ausgelöst werden. + * @param autorefresh true = nach jedem Zeichenbefehl die Anzeige aktualisieren, false= nur durch die Methode refresh neu zeichnen + */ + public void setAutoRefresh(boolean autoRefresh) { + this.autorefresh = autoRefresh; + } + + + /** + * Auch die anzeigenden Klasse wird zum Neuzeichnen aufgefordert. + */ + private void repaint() { + if(observer != null && autorefresh) { + observer.repaint(); + } + } + + /** + * Auch die anzeigenden Klasse wird zum Neuzeichnen aufgefordert. + */ + public void refresh() { + if(observer != null) { + observer.repaint(); + } + } + + // ----------------------------------------- Zeichenfunktionen ----------------------------------------------- + /** + * Löscht den Inhalt des Bildes. + * Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt. + */ + + public void clear(){ + pushImage(); + image = new BufferedImage(image.getWidth(), image.getHeight(), image.getType()); + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(background); + g.fillRect(0,0,image.getWidth()-1, image.getHeight()-1); + repaint(); + } + + /** + * Konvertiert die in einem bestimmten Modus gegebenen Koordinaten in die Java-übliche Links_Oben_Breite_Höhe Version + * Die Änderungen werden direkt im Array vorgenommen + * @param coord Array mit vier Koordinateneinträgen im gegebenen Modus + * @param mode Modus der Koordinaten (CORNER, CORNERS, RADIUS oder CENTER) + */ + private void convert(int[] coord, int mode) { + switch(mode) { + case CORNER: break; + case CORNERS: coord[2] -= coord[0]; coord[3] -= coord[1]; break; + case RADIUS: coord[2] *= 2; coord[3] *=2; + case CENTER: coord[0] -= coord[2]/2; coord[1] -= coord[3]/2; + } + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + * Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + * Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void rectMode(int mode) { + rectMode = mode; + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + * Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + * Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als Breite und Höhe der Form. + * ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void ellipseMode(int mode) { + ellipseMode = mode; + } + + + + /** + * Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + * Um eine Linie einzufärben, verwenden Sie die {@link #stroke(int, int, int) stroke()} Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + * Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + * {@link #strokeWeight(double) strokeWeight()} geändert werden. + * @param x1 x-Koordinate des 1. Punktes + * @param y1 y-Koordinate des 1. Punktes + * @param x2 x-Koordinate des 2. Punktes + * @param y2 y-Koordinate des 2. Punktes + */ + public void line(int x1, int y1, int x2, int y2) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + if (stroke > 0) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawLine(x1, y1, x2, y2); + } + repaint(); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, rectMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillRect(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawRect(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, ellipseMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillOval(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawOval(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + int px[] = {x1, x2, x3}; + int py[] = {y1, y2, y3}; + polygon(px, py); + + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + + int px[] = {x1, x2, x3, x4}; + int py[] = {y1, y2, y3, y4}; + polygon(px, py); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + + public void polygon(int[] x, int[] y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(fillcolor != null) { + + g.setColor(fillcolor); + g.fillPolygon(x,y, y.length); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawPolygon(x, y, x.length); + } + repaint(); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + ellipse(x,y,1, 1); + + } + + // ----------------------------------------- Schriftdarstellung ----------------------------------------------- + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param s Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String s, int x, int y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(pencolor != null) { + g.setColor(fillcolor); + g.setStroke(new BasicStroke((float) stroke)); + g.setFont(textfont); + g.drawString(s, x, y); + } + repaint(); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + this.textfont = font; + } + + + // ----------------------------------------- Farbfestlegungen ----------------------------------------------- + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(String color) { + try{ + return new Color( + Integer.valueOf( color.substring( 0, 2 ), 16 ), + Integer.valueOf( color.substring( 2, 4 ), 16 ), + Integer.valueOf( color.substring( 4, 6 ), 16 ) ); + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(int color) { + try{ + if(color >=0 && color < 256) { + return new Color(color,color,color); + } else { + int r = color / 0x010000 % 0xFF; + int g = color / 0x000100 % 0xFF; + int b = color % 0xFF; + System.out.println(""+r+","+g+","+b); + return new Color(r, g, b ); + } + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + this.pencolor = decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + this.pencolor=decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + this.pencolor = new Color(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + this.pencolor = null; + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + this.stroke = width; + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + this.fillcolor = decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + this.fillcolor=decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + this.fillcolor = new Color(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + this.fillcolor = null; + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + if(c < 256) { + this.background=new Color(c,c,c); + } else { + int r = c / 0x010000; + int g = c / 0x000100 % 0xFF; + int b = c % 0xFF; + this.background= new Color(r, g, b ); + } + + this.clear(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + this.background=new Color(r,g,b); + this.clear(); + } + + +// ----------------------------------------- Dateioperationen ----------------------------------------------- + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + try{ + this.image = ImageIO.read(new File(filename)); + this.background = decode("D0D0D0"); + this.pencolor = new Color(0,0,0); + this.fillcolor = null; + this.stroke = 1; + this.repaint(); + + } catch(Exception e) { + System.out.println("Fehler beim Einlesen der Bilddatei"); + } + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + try{ + String[] fn = filename.split("\\."); + if (fn.length== 1) { + ImageIO.write(image, "PNG", new File(filename+".png")); + } else { + + if (fn.length == 2 && (fn[1].toUpperCase().equals("PNG") || + fn[1].toUpperCase().equals("GIF"))){ + ImageIO.write(image, fn[1], new File(filename)); + }else { + System.out.println("Unbekanntes Bildformat"); + } + } + + } catch(Exception e) { + System.out.println("Fehler beim Speichern"); + } + } + + +// ----------------------------------------- Sonstiges ----------------------------------------------- + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + + public Color[][] getPixelArray() { + Color[][] pixel = new Color[image.getWidth()][image.getHeight()]; + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + pixel[x][y] = new java.awt.Color(image.getRGB(x,y)); + } + } + return pixel; + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + size(pixel.length,pixel[0].length); + Graphics2D g = (Graphics2D) image.getGraphics(); + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + g.setColor(pixel[x][y]); + g.fillRect(x, y, 1, 1); + } + } + repaint(); + } + + /** + * Hilfsfunktion zum Verzögern der Ausgabe + * @param millis Wartezeit in Millisekunden + */ + public void delay(int millis) { + try{ + Thread.sleep(millis); + + } catch(Exception e) { + + } + + } + + + +} diff --git a/04_loesungen/02_greenfoot/alg14b_highscoretabelle_loesung/PictureViewer.java b/04_loesungen/02_greenfoot/alg14b_highscoretabelle_loesung/PictureViewer.java new file mode 100644 index 0000000..ecbb521 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg14b_highscoretabelle_loesung/PictureViewer.java @@ -0,0 +1,499 @@ +import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot und MouseInfo) +import java.awt.image.*; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.BasicStroke; +import java.awt.Font; +import java.util.Vector; +import java.awt.Color; +import javax.imageio.*; +import java.io.*; + +/** + * Der PictureViewer ist ein Actor, der in der Lage ist ein + * Objekt der Klasse Picture anzuzeigen. Zusätzlich können + * mehrere Verarbeitungsschritte gespeichert werden, um ein + * "zurück"-Funktion zu ermöglichen. + * + * @author Thomas Schaller + * @version V1.0 vom 10.02.2019 + */ +public class PictureViewer extends Actor +{ + public static final int FIT = -1; + public static final int NORMAL = 1; + + private static final int ANZ_BACK = 0; + + private double zoom; + protected Picture picture = null; + private Vector history; + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der Größe 500x400 + */ + public PictureViewer() { + this(500,400); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public PictureViewer(int width, int height) { + this(width,height, "D0D0D0"); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + * @param background Farbe des Hintergrunds als HEX-String (z.B. "FF3A45") + */ + public PictureViewer(int width, int height, String background) { + picture = new Picture(width,height, background); + picture.setObserver(this); + this.history = new Vector(); + this.zoom = NORMAL; + repaint(); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild aus einer Bilddatei + * @param filename Name des Bildes + */ + public PictureViewer(String filename) { + picture = new Picture(filename); + picture.setObserver(this); + this.history = new Vector(); + this.zoom = NORMAL; + repaint(); + } + + /** + * Speichert das übergebene Bild in der History. + * @param b zu speicherndes Bild + */ + public void pushImage() { + if( this.ANZ_BACK > 0) { + if(history.size() == this.ANZ_BACK) { + history.removeElementAt(0); + } + + BufferedImage b = new BufferedImage(picture.getWidth(), picture.getHeight(), picture.getImage().getType()); + Graphics g = b.getGraphics(); + g.drawImage(picture.getImage(), 0, 0, null); + g.dispose(); + + history.add(b); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + private void popImage() { + int anz = history.size(); + if(anz>0) { + BufferedImage i = history.get(anz-1); + history.removeElementAt(anz-1); + picture.setImage(i); + repaint(); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + public void back() { + popImage(); + } + + /** + * Setzt den Zoom-Faktor für das Bild. + * Als Zoomfaktor sind auch die Konstanten Bildanzeiger.FIT (auf Bildschirmgröße zoomen) und Bildanzeiger.NORMAL (100%) möglich. + * @param factor Zoomfaktor (1.0 = 100%). + */ + public void setZoom(double zoom) { + this.zoom = zoom; + repaint(); + } + + /** + * Setzt die automatische Neuanzeige des Bildes. + * Mit dieser Methode kann man einstellen, ob nach jedem Zeichenbefehl + * die Anzeige auf dem Bildschirm aktualisiert werden soll. Bei sehr + * vielen Zeichenbefehlen wird die Ausgabe dadurch sehr langsam. Es reicht + * eine Anzeige am Ende der Zeichenbefehle. Rufen Sie dann für das Neuzeichnen + * die Methode refresh() auf. + * @param autoRefresh true, wenn nach jedem Zeichenbefehl die Anzeige aktualisiert werden soll. + */ + public void setAutoRefresh(boolean autoRefresh) { + picture.setAutoRefresh(autoRefresh); + } + + /** + * Sorgt für die Aktualisierung der Bildschrimanzeige. Das aktuelle Bild + * wird dadurch angezeigt. Durch Einstellung von autoRefresh kann die + * Anzeige automatisiert werden. + */ + public void refresh() { + repaint(); + } + + /** + * Setzt das angezeigt Bild neu und beachtet dabei den Zoomfaktor. + */ + public void repaint() { + double faktor = zoom; + + if (zoom == FIT) { + double faktorw = (double) this.getWorld().getWidth() / picture.getWidth(); + double faktorh = (double) this.getWorld().getHeight() / picture.getHeight(); + faktor = Math.min(faktorw, faktorh); + } + int gfi_width = (int) (picture.getWidth()*faktor); + int gfi_height = (int) (picture.getHeight()*faktor); + + setImage(new GreenfootImage(gfi_width, gfi_height)); + Graphics2D g = (Graphics2D) this.getImage().getAwtImage().getGraphics(); + g.drawImage(picture.getImage(),0,0,gfi_width, gfi_height, 0, 0, picture.getWidth(), picture.getHeight(), null); + g.setColor(new java.awt.Color(0,0,0)); + g.setStroke(new BasicStroke((float) 1)); + g.drawRect(0,0,gfi_width-1, gfi_height-1); + + } + + // Wrappermethoden + /** + * Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + * Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + * der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu. + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public void size(int width, int height){ + picture.size(width, height); + } + + /** + * Liefert die Breite des Bildes zurück. + * @return Breite des Bildes + */ + public int getImageWidth() { + return picture.getWidth(); + } + + /** + * Liefert die Höhe des Bildes zurück. + * @return Höhe des Bildes + */ + public int getImageHeight() { + return picture.getHeight(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + picture.background(c); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + picture.background(r,g,b); + } + + /** + * Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + * Um eine Linie einzufärben, verwenden Sie die {@link #stroke(int, int, int) stroke()} Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + * Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + * {@link #strokeWeight(double) strokeWeight()} geändert werden. + * @param x1 x-Koordinate des 1. Punktes + * @param y1 y-Koordinate des 1. Punktes + * @param x2 x-Koordinate des 2. Punktes + * @param y2 y-Koordinate des 2. Punktes + */ + public void line(int x1, int y1, int x2, int y2) { + picture.line(x1,y1,x2,y2); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + picture.rect(a,b,c,d); + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + picture.ellipse(a,b,c,d); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + picture.triangle(x1,y1,x2,y2,x3,y3); + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + picture.quad(x1,y1,x2,y2,x3,y3,x4,y4); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + public void polygon(int[] x, int[] y) { + picture.polygon(x,y); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + picture.point(x,y); + + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + * Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + * Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void rectMode(int mode) { + picture.rectMode(mode); + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + * Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + * Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als Breite und Höhe der Form. + * ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void ellipseMode(int mode) { + picture.ellipseMode(mode); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + picture.stroke(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + picture.noStroke(); + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + picture.strokeWeight(width); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + picture.fill(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + picture.noFill(); + } + + /** + * Löscht den Inhalt des Bildes. + * Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt. + */ + public void clear(){ + picture.clear(); + } + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + picture.load(filename); + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + picture.save(filename); + } + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param t Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String t, int x, int y) { + picture.text(t,x,y); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + picture.textFont(font); + } + + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + public Color[][] getPixelArray() { + return picture.getPixelArray(); + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + picture.setPixelArray(pixel); + } + + +} + diff --git a/04_loesungen/02_greenfoot/alg14b_highscoretabelle_loesung/Table.java b/04_loesungen/02_greenfoot/alg14b_highscoretabelle_loesung/Table.java new file mode 100644 index 0000000..ee5a211 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg14b_highscoretabelle_loesung/Table.java @@ -0,0 +1,894 @@ +/** + * Die Klasse Table vereinfacht den Zugriff auf CSV-Dateien. + * Die Klassen Table und TableRow ermöglichen einen einfachen Zugriff auf tabellenbasierte + * Dokumente. + * + * @author Thomas Schaller + * @version 1.0 vom 01.02.2019 + */ + +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.ArrayList; +import java.io.*; +import java.util.Scanner; + +import org.jdom.Document; +import org.jdom.Element; +import org.jdom.Attribute; +import org.jdom.JDOMException; +import org.jdom.input.SAXBuilder; +import org.jdom.output.XMLOutputter; +import org.jdom.output.Format; + +public class Table +{ + // Standardtrennzeichen für Spalten + private static final char DEFAULT_SEPARATOR = ';'; + // Standardmarkierung für Texte + private static final char DEFAULT_QUOTE = '"'; + // Standardtrennzeichen für Dezimalzahlen + private static final char DEFAULT_COMMA = ','; + + // mögliche Spaltentypen + private static final String UNKNOWN ="UNKOWN"; + private static final String INT = "INTEGER"; + private static final String DOUBLE = "DOUBLE"; + private static final String FLOAT = "FLOAT"; + + // interne Verwaltung des Dokuments als JDOM-Document-Objekt + private Document doc; + // Verweis auf Element für Kopfzeile + private Element header; + // Ende Attribute + + /** + * Erzeugt leeres Tabellen-Dokument. + */ + public Table() { + this.doc = new Document(); + doc.setRootElement(new Element("CSV-Data")); + this.header = new Element("Header"); + doc.getRootElement().addContent(header); + } + + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei und erstellt ein Tabellenobjekt mit seinen Werten. + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public Table(String filename, String options, char separator, char quote) { + loadCSV(filename, options, separator, quote); + } + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei und erstellt ein Tabellenobjekt mit seinen Werten (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + */ + public Table(String filename, String options) { + loadCSV(filename, options); + } + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei ohne Kopfzeile und erstellt ein Tabellenobjekt mit seinen Werten (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public Table(String filename) { + loadCSV(filename); + } + + // Anfang Methoden + /** + * Liest den Inhalt einer CSV-Datei ohne Kopfzeile (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public void loadCSV(String filename) { + loadCSV(filename, ""); + } + + /** + * Liest den Inhalt einer CSV-Datei (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + */ + public void loadCSV(String filename, String options) { + loadCSV(filename, options, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** + * Liest den Inhalt einer CSV-Datei. + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public void loadCSV(String filename, String options, char separator, char quote) { + doc = new Document(); + doc.setRootElement(new Element("CSV-Data")); + header = new Element("Header"); + doc.getRootElement().addContent(header); + try { + File f = new File(filename); + Scanner scanner = new Scanner(new File(filename)); + if(options.toLowerCase().contains("header") && scanner.hasNext()) { + List entries = parseLine(scanner.nextLine(), separator, quote); + int i= 0; + for(String s : entries) { + Element entry = new Element("Column"); + header.addContent(entry); + entry.setText(s); + entry.setAttribute("type", "unknown"); + i++; + } + } + + List cols = header.getChildren(); + + while (scanner.hasNext()) { + Element line = new Element("Row"); + doc.getRootElement().addContent(line); + List entries = parseLine(scanner.nextLine(), separator, quote); + int i= 0; + + for(String s : entries) { + + if(i==cols.size()) { + Element entry = new Element("Column"); + entry.setAttribute("type", "unknown"); + header.addContent(entry); + cols = header.getChildren(); + } + + Element entry = new Element("Entry"); + entry.setText(s); + line.addContent(entry); + i++; + } + } + scanner.close(); + + } catch (Exception e) { + System.out.println("Fehler beim Lesen der CSV-Datei"); + } + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei ohne Kopfzeile (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public void saveCSV(String filename) { + saveCSV(filename, ""); + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthalten, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile haben soll, + * dann lassen Sie einfach die Option "header" weg. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile haben soll. + * @param filename Dateiname der CSV-Datei. + */ + public void saveCSV(String filename, String options) { + saveCSV(filename, options, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei. + * Wenn die Datei eine Kopfzeile enthalten, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile haben soll, + * dann lassen Sie einfach die Option "header" weg. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile haben soll. + * @param filename Dateiname der CSV-Datei. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public void saveCSV(String filename, String options, char separator, char quote){ + try{ + File f = new File(filename); + PrintStream outputFile = new PrintStream (f); + System.out.println("Speicher in : "+f.getAbsolutePath()); + List columns = header.getChildren(); + String sq = ""+quote; + String ss = ""+separator; + if(quote =='"') sq = "\""; + if(separator =='"') ss = "\""; + + if(options.toLowerCase().contains("header")) { + String h = ""; + for(Element c : columns) { + h += ss + sq + c.getText()+sq; + } + outputFile.println(h.substring(1)); + } + for(int i = 0; i parseLine(String cvsLine) { + return parseLine(cvsLine, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** HIlfsfunktion für die Analyse einer Dateizeile + * @param cvsLine Zeile aus der Datei + * @param sparator Trennzeichen für die Spalten + * @return Liste von String für die einzelnen Spalten + */ + private List parseLine(String cvsLine, char separator) { + return parseLine(cvsLine, separator, DEFAULT_QUOTE); + } + + /** HIlfsfunktion für die Analyse einer Dateizeile + * @param cvsLine Zeile aus der Datei + * @param sparator Trennzeichen für die Spalten + * @param customQuote Kennung für Strings + * @return Liste von String für die einzelnen Spalten + */ + private List parseLine(String cvsLine, char separator, char customQuote) { + + List result = new ArrayList<>(); + + //if empty, return! + if (cvsLine == null && cvsLine.isEmpty()) { + return result; + } + + //ggf. Default-Value laden + if (customQuote == ' ') { + customQuote = DEFAULT_QUOTE; + } + + if (separator == ' ') { + separator = DEFAULT_SEPARATOR; + } + + StringBuffer curVal = new StringBuffer(); + boolean inQuotes = false; + boolean startCollectChar = false; + boolean doubleQuotesInColumn = false; + + char[] chars = cvsLine.toCharArray(); + + for (char ch : chars) { + + if (inQuotes) { // aktueller Text ist in Quotes eingeschlossen + startCollectChar = true; + + if (ch == customQuote) { // Quotes werden beendet, aber Achtung bei "" => Metazeichen + inQuotes = false; + if (ch == '\"') { + doubleQuotesInColumn = true; + } + + } else { + + if (ch == '\"' && !doubleQuotesInColumn) { + doubleQuotesInColumn = true; + } else { + curVal.append(ch); + doubleQuotesInColumn = false; + } + + } + } else { + if (ch == customQuote) { + + inQuotes = true; + + //Fixed : allow "" in empty quote enclosed + if (ch == '\"'){ + if(doubleQuotesInColumn) { + curVal.append('"'); + doubleQuotesInColumn = false; + } else doubleQuotesInColumn = true; + + + } + } + else { + doubleQuotesInColumn = false; + if (ch == separator) { + + result.add(curVal.toString()); + + curVal = new StringBuffer(); + startCollectChar = false; + + } else if (ch == '\r') { + //ignore LF characters + continue; + } else if (ch == '\n') { + //the end, break! + break; + } else { + curVal.append(ch); + } + } + } + + } + result.add(curVal.toString()); + return result; + } + + /** + * Sucht die Nummer einer durch Namen gegebenen Spalte. + * @param name Name der Spalte + * @return Nummer der Spalte + */ + + private int findColumnNumber(String name) { + List columns = header.getChildren(); + int i = 0; + for(Element c : columns) { + if (c.getText().toLowerCase().equals(name.toLowerCase())) { + return i; + + } + i++; + } + return -1; + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an. + */ + public void addColumn() { + Element entry = new Element("Column"); + entry.setAttribute("type", Table.UNKNOWN); + header.addContent(entry); + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an und benennt sie. + * @param title Bezeichnung der Spalte + */ + public void addColumn(String title) { + addColumn(); + Element nc = ((List)(header.getChildren())).get(header.getChildren().size()-1); + nc.setText(title); + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an und benennt und typisiert sie. + * @param title Bezeichnung der Spalte + * @param type Typ der Spalte (UNKNOWN, DOUBLE, INTEGER, FLOAT) + */ + public void addColumn(String title, String type) { + addColumn(title); + Element nc = ((List)(header.getChildren())).get(header.getChildren().size()-1); + nc.setAttribute("type", type); + } + + /** + * Löscht eine Spalte. + * @param i Nummer der Spalte. + */ + public void removeColumn(int i) { + List lines = doc.getRootElement().getChildren(); + for(Element l : lines) { + if(l.getChildren().size()>i) l.removeContent(i); + } + } + + /** + * Löscht eine Spalte + * @param name Name der Spalte + */ + public void removeColumn(String name) { + try{ + removeColumn(findColumnNumber(name)); + } catch(Exception e) { System.out.println("Unbekannter Spaltenname");} + } + + /** + * Liefert die Anzahl der Spalten in der Tabelle + * @return Anzahl der Spalten + */ + public int getColumnCount() { + return header.getChildren().size(); + } + + /** + * Liefert die Anzahl der Zeilen in der Tabelle + * @return Anzahl der Zeilen + */ + public int getRowCount() { + return doc.getRootElement().getChildren().size()-1; + } + + /** + * Löscht alle Zeilen der Tabelle. + * Die Spaltenüberschriften und Typen bleiben erhalten. + */ + public void clearRows() { + doc.getRootElement().removeChildren("Row"); + } + + /** + * Fügt eine neue Zeile an das Ende der Tabelle an. + * @return ein TableRow-Objekt für diese neue Zeile + */ + public TableRow addRow() { + Element row = new Element("Row"); + doc.getRootElement().addContent(row); + return new TableRow(doc, row); + } + + /** + * Löscht eine Zeile + * @param i Nummer der Zeile + */ + public void removeRow(int i) { + if(i rows = doc.getRootElement().getChildren(); + return new TableRow(doc, rows.get(i+1)); + } + return null; + } + + /** + * Liefert die ganze Tabelle als Array von TableRow-Objekten + * @return Array von TableRow-Objekten + */ + public TableRow[] rows() { + TableRow[] rows = new TableRow[getRowCount()]; + for(int i = 0; i < getRowCount(); i++) { + rows[i] = getRow(i); + } + return rows; + } + + /** + * Liefert den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param column Spaltennummer + * @return Wert der Zelle + */ + public int getInt(int row, int column) { + return getRow(row).getInt(column); + } + + /** + * Liefert den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param name Name der Spalte + * @return Wert der Zelle + */ + public int getInt(int row, String name) { + return getRow(row).getInt(name); + } + + /** + * Setzt den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param column Spaltennummer + * @param value neuer Wert der Zelle + */ + public void setInt(int row, int column,int value) { + getRow(row).setInt(column, value); + } + + /** + * Setzt den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(int row, String name, int value) { + getRow(row).setInt(name, value); + } + + /** + * Liefert alle Werte einer Zeile als Integer-Array. + * @param row Nummer der Zeile + * @return int-Array, dass alle Werte der Zeile enthält + */ + public int[] getIntRow(int row) { + try{ + TableRow trow = getRow(row); + int anz = getColumnCount(); + int[] r = new int[anz]; + for(int i=0; i) (header.getChildren())).get(i).getText(); + } else { + return ""; + } + } + + /** + * Liefert die Nummer einer Spalte + * @param name Name der Spalte + * @return Nummer der Spalte + */ + public int getColumn(String name) { + List columns = header.getChildren(); + int i = 0; + while (i < columns.size()) { + if (columns.get(i).getText().toLowerCase().equals(name.toLowerCase())) { + return i; + } + i++; + } // end of while + return -1; + } + + + /** + * Erzeugt eine neue Zeile mit i Spalten + * Wenn bisher nicht genügend Spalten vorhanden sind, werden automatisch neue Spalten hinzugefügt (auch zum Header) + * @param i Anzahl der Spalten + */ + private Element buildRow(int i) { + List columns = header.getChildren(); + Element entry=null; + for(int j=0; j<=i; j++) { + + if(j==columns.size()) { + Element h = new Element("Column"); + h.setAttribute("type", "unknown"); + header.addContent(h); + columns = header.getChildren(); + } + if(j==current.getChildren().size()) { + entry = new Element("Entry"); + current.addContent(entry); + + } + + } + return entry; + + } + + /** + * Erzeugt eine neue Zeile. + * Es werden genügend Spalten erzeugt, dass ein Wert in Spalte "name" eingetragen werden kann + * @param name Name der Spalte + */ + private Element buildRow(String name) { + List columns = header.getChildren(); + int i = 0; + for(Element c: columns) { + + if(c.getText().toLowerCase().equals(name.toLowerCase())) { + return buildRow(i); + } + i++; + } + return null; + + } + + /** + * Liefert den Wert einer Zelle als String + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public String getString(int i) { + if(i >= current.getContent().size()) return ""; + Element e = (Element) current.getContent(i) ; + if(e!=null) { + return e.getText(); + } else { + return ""; + } + } + + /** + * Liefert den Wert einer Zelle als String + * @param name Name der Spalte + * @return Wert der Zelle + */ + public String getString(String name) { + return getString(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als String + * @param i Nummer der Spalte + * @param text neuer Wert der Zelle + */ + public void setString(int i, String text) { + + Element e = buildRow(i); + if(e!=null) e.setText(text); + } + + /** + * Setzt den Wert einer Zelle als String + * @param name Name der Spalte + * @param text neuer Wert der Zelle + */ + public void setString(String name, String text) { + Element e = buildRow(name); + if(e!=null) e.setText(text); + } + + + /** + * Liefert den Wert einer Zelle als Int-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public int getInt(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Integer.parseInt(e.getText()); + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Int-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public int getInt(String name) { + return getInt(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Int-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(int i,int value) { + + Element e = buildRow(i); + if(e!=null) e.setText(""+value); + } + + /** + * Setzt den Wert einer Zelle als Int-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(String name, int value) { + Element e = buildRow(name); + if(e!=null) e.setText(""+value); + } + + /** + * Liefert den Wert einer Zelle als Float-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public float getFloat(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Float.parseFloat(e.getText().replace(",",".")); + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Float-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public float getFloat(String name) { + return getFloat(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Float-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setFloat(int i,float value) { + + Element e = buildRow(i); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Setzt den Wert einer Zelle als Float-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setFloat(String name, float value) { + Element e = buildRow(name); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Liefert den Wert einer Zelle als Double-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public double getDouble(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Double.parseDouble(e.getText().replace(",",".")); + + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Double-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public double getDouble(String name) { + return getDouble(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Double-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setDouble(int i,double value) { + + Element e = buildRow(i); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Setzt den Wert einer Zelle als Double-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setDouble(String name, double value) { + Element e = buildRow(name); + if(e!=null) e.setText(format.format(value)); + } + +} diff --git a/04_loesungen/02_greenfoot/alg14b_highscoretabelle_loesung/XML.java b/04_loesungen/02_greenfoot/alg14b_highscoretabelle_loesung/XML.java new file mode 100644 index 0000000..c06c490 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg14b_highscoretabelle_loesung/XML.java @@ -0,0 +1,637 @@ +/** + * Klasse zum Vereinfachten Zugriff auf XML-Dokumente + * Diese Klasse ist für den Einsatz in der Schule gedacht und soll den Schülern + * einen einfachen Zugriff auf XML-Dokumente ermöglichen. Die zur Verfügung + * stehenden Befehle sind wie in Processing realisiert. + * Dabei ist jeder Teilbaum des Dokuments wieder als XML-Objekt zugreifbar, das + * intern auf die gleiche XML-Dokumentstruktur zugreift. + * Dies ermöglicht bei unsachgemäßem Gebrauch die XML-Struktur zu zerstören. Im + * normalen Gebrauch sollte dies aber nicht relevant sein. + * + * Benötigt: jdom-1.1.3.jar + + * @author Thomas Schaller + * @version 1.0 vom 31.01.2019 + */ +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.ArrayList; +import java.io.*; + +import org.jdom.Document; +import org.jdom.Element; +import org.jdom.Attribute; +import org.jdom.JDOMException; +import org.jdom.input.SAXBuilder; +import org.jdom.output.XMLOutputter; +import org.jdom.output.Format; + +public class XML { + // Anfang Attribute + // XML-Dokumentstruktur + private Document doc; + // Zeiger auf das aktuelle Element + private Element current; + // Ende Attribute + + /** + * Erzeugt ein leeres XMLDokument + */ + public XML() { + this.doc = new Document(); + this.current = null; + } + + /** + * Erzeugt ein XML-Dokument aus einer Datei + * @param filename Dateiname der XML-Datei + */ + public XML(String filename) { + loadXML(filename); + } + + /** + * interner Konstruktor, um ein XML Objekt zu erzeugen, das auf einen bestimmten Knoten verweist + * @param doc die XML-Dokumentstruktur + * @param current Zeiger auf das aktuelle Element + */ + private XML(Document doc, Element current) { + this.doc = doc; + this.current = current; + } + + // Anfang Methoden + /** Öffnet das durch den Dateinamen gegebene Dokument + * @param filename Dateiname des XML-Files + */ + public void loadXML(String filename) { + doc = null; + File f = new File(filename); + + try { + // Das Dokument erstellen + SAXBuilder builder = new SAXBuilder(); + doc = builder.build(f); + + } catch (JDOMException e) { + e.printStackTrace(); + + } catch (IOException e) { + e.printStackTrace(); + } + // Zeiger im Baum auf Root-Element + current = doc.getRootElement(); + } + + /** Speichert den XML-Baum im angegebenen Dateinamen + * @param filename Dateiname des XML-Files + */ + public void saveXML(String filename) { + try { + // new XMLOutputter().output(doc, System.out); + XMLOutputter xmlOutput = new XMLOutputter(); + + // display nice nice + xmlOutput.setFormat(Format.getPrettyFormat()); + File f = new File(filename); + FileOutputStream outputFile = new FileOutputStream(f); + System.out.println("Speicher in : "+f.getAbsolutePath() ); + xmlOutput.output(doc, outputFile); + outputFile.close(); + System.out.println("File Saved!"); + } catch (IOException io) { + System.out.println(io.getMessage()); + } + + } + + //----------------------------------------------- Zeigerbewegungen -------------------------------------------------- + /** + * liefert ein XML-Objekt, das auf den Vaterknoten des aktuellen Elements zeigt. + * @return Vater des aktuellen Objekts. + */ + public XML getParent() { + if(current != null) { + Element parent = current.getParentElement(); + if (parent == null) { + return null; + } else { + return new XML(doc, parent); + } + } + return null; + } + + /** + * Überprüft, ob das Element irgendwelche Kinder hat oder nicht, und gibt das Ergebnis als boolean zurück. + * @return true, wenn Kinder vorhanden sind, sonst false + */ + public boolean hasChildren() { + if (current == null) { + return doc.hasRootElement(); + } else { + return current.getChildren().size()>0; + } + } + + /** + * Ermittelt die Namen aller Kinder des Elements und gibt die Namen als ein Array von Strings zurück. + * Dies ist dasselbe wie das Durchlaufen und Aufrufen von getName() auf jedem untergeordneten Element einzeln. + * @return Liste aller Namen der Kinder + */ + public String[] listChildren() { + if (current == null) { + if(doc.hasRootElement()) { + String[] names = new String[0]; + names[0] = doc.getRootElement().getName(); + return names; + } else { + return null; + } + } else { + List ch_element = current.getChildren(); + String[] names = new String[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + names[i] = ch_element.get(i).getName(); + } + return names; + } + } + + /** + * Liefert alle Kinder des Elements als Array von XML-Objekten. + * @return Array der Kinder als XML-Objekte + */ + public XML[] getChildren() { + if (current == null) { + if(doc.hasRootElement()) { + XML[] ch_xml = new XML[1]; + ch_xml[0] = new XML(doc, doc.getRootElement()); + return ch_xml; + } else { + return null; + } + } else { + List ch_element = current.getChildren(); + XML[] ch_xml = new XML[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + ch_xml[i] = new XML(doc, ch_element.get(i)); + } + return ch_xml; + } + } + + /** + * Liefert bestimmte Kinder des Elements als Array von XML-Objekten. + * Die Methode gibt dabei alle Kinder zurück, die dem angegebenen Namen entsprechen. + * @param name Name der gesuchten Kind-Objekte + * @return Array der Kinder als XML-Objekte + */ + public XML[] getChildren(String name) { + if (current == null) { + if(doc.hasRootElement()) { + XML[] ch_xml = new XML[1]; + ch_xml[0] = new XML(doc, doc.getRootElement()); + if(doc.getRootElement().getName().equals(name)){ + return ch_xml; + } else { + return null; + } + } else { + return null; + } + } else { + List ch_element = current.getChildren(name); + XML[] ch_xml = new XML[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + ch_xml[i] = new XML(doc, ch_element.get(i)); + } + return ch_xml; + } + } + + /** + * Liefert das erste Kind des Elements mit einem bestimmten Namen. + * Die Methode gibt das erste Kind zurück, das dem angegebenen Namen entsprechen. + * @param name Name des gesuchten Kind-Objektes + * @return Kind als XML-Objekt + */ + + public XML getChild(String name) { + if (current == null) { + Element e = doc.getRootElement(); + if (e.getName().equals(name)) { + return new XML(doc, e); + } else { + return null; + } + } else { + String[] names = name.split("/"); + Element e = current; + int i = 0; + while(i < names.length) { + e = e.getChild(names[i]); + if (e==null) return null; + i++; + } + return new XML(doc, e); + } + } + + /** + * Liefert das i. Kind des Elements. + * Die Methode gibt das i. Kind des aktuellen Elements zurück. + * @param i Nummer des Kindes + * @return Kind als XML-Objekt + */ + public XML getChild(int i) { + if (current == null) { + return new XML(doc, doc.getRootElement()); + } else { + List ch_element = current.getChildren(); + if (i>=ch_element.size()) return null; + return new XML(doc, ch_element.get(i)); + } + } + + //--------------------------------------------------- Methoden für das aktuelle Element ------------------------------------------------- + /** + * Frage den Namen des aktuellen Elements ab + * @return Namen des Elements + */ + public String getName() { + if (current==null) return ""; + return current.getName(); + } + + /** + * Setze den Namen des aktuellen Elements. + * @param name Neuer Name des Elements + */ + public void setName(String name) { + if (current==null) return; + current.setName(name); + } + + /** + * liefert die Anzahl der Attribute eines Elements. + * @return Anzahl des Attribute + */ + public int getAttributeCount() { + if (current == null) return 0; + return current.getAttributes().size(); + } + + /** + * liefert zurück, ob das aktuelle Element Attribute hat . + * @return true, wenn es Attribute gibt + */ + public boolean hasAttribute() { + if (current == null) return false; + return current.getAttributes().size()>0; + } + + /** + * Ruft alle Attribute des angegebenen Elements ab und gibt sie als Array von Strings zurück. + * @return Liste der Attributnamen + */ + public String[] listAttributes() { + if (current == null) return null; + List attr = current.getAttributes(); + String[] names = new String[attr.size()]; + for(int i=0; i < attr.size() ; i++) { + names[i] = attr.get(i).getName(); + } + return names; + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs + */ + public String getString(String attribute) { + if (current==null) return ""; + return current.getAttributeValue(attribute); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs + */ + public String getString(String attribute, String defaultValue) { + if (current==null) return defaultValue; + return current.getAttributeValue(attribute,defaultValue); + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param text neuer Wert des Attributs + */ + public void setString(String attribute, String text) { + if (current==null) return; + current.setAttribute(attribute, text); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Integer-Zahl + */ + public int getInt(String attribute) { + if (current==null) return 0; + try{ + int i = Integer.parseInt(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als Integer-Zahl + */ + public int getInt(String attribute, int defaultValue) { + if (current==null) return defaultValue; + try{ + int i = Integer.parseInt(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setInt(String attribute, int value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Float-Zahl + */ + public float getFloat(String attribute) { + if (current==null) return 0; + try{ + float i = Float.parseFloat(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als Float-Zahl + */ + public float getFloat(String attribute, float defaultValue) { + if (current==null) return defaultValue; + try{ + float i = Float.parseFloat(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setFloat(String attribute, float value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Double-Zahl + */ + public double getDouble(String attribute) { + if (current==null) return 0; + try{ + double i = Double.parseDouble(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + +/** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als double-Zahl + */ + public double getDouble(String attribute, double defaultValue) { + if (current==null) return defaultValue; + try{ + double i = Double.parseDouble(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setDouble(String attribute, double value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt den Inhalt/Text des aktuellen Elements ab + * @return Inhalt des Elements + */ + public String getContent() { + if ( current==null) return ""; + + return current.getText(); + } + + /** + * Fragt den Inhalt/Text des aktuellen Elements ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardtext + * @return Inhalt des Elements + */ + public String getContent(String defaultValue) { + if ( current==null) return defaultValue; + String t = current.getText(); + if(t.equals("")) t = defaultValue; + return t; + } + + /** + * Setzt den Inhalt/Text des aktuellen Elements + * @param text Neuer Inhalt des Elements + */ + public void setContent(String text) { + if ( current==null) return; + current.setText(text); + } + + + /** + * Fragt den Inhalt des aktuellen Elements als Integerzahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ public int getIntContent(int defaultValue) { + if ( current==null) return defaultValue; + try{ + int i = Integer.parseInt(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Integerzahl ab + * @return Inhalt des Elements + */ + public int getIntContent() { + if ( current==null) return 0; + try{ + int i = Integer.parseInt(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setIntContent(int value) { + if ( current==null) return; + current.setText(""+value); + } + + + /** + * Fragt den Inhalt des aktuellen Elements als Floatzahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ + public float getFloatContent(float defaultValue) { + if ( current==null) return defaultValue; + try{ + float i = Float.parseFloat(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Floatzahl ab + * @return Inhalt des Elements + */ + public float getFloatContent() { + if ( current==null) return 0; + try{ + float i = Float.parseFloat(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setFloatContent(float value) { + if ( current==null) return; + current.setText(""+value); + } + +/** + * Fragt den Inhalt des aktuellen Elements als Doublezahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ + public double getDoubleContent(double defaultValue) { + if ( current==null) return defaultValue; + try{ + double i = Double.parseDouble(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Doublezahl ab + * @return Inhalt des Elements + */ + public double getDoubleContent() { + if ( current==null) return 0; + try{ + double i = Double.parseDouble(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setDoubleContent(double value) { + if ( current==null) return; + current.setText(""+value); + } + + + // ----------------------------------------------- XML-Struktur aufbauen ------------------------------------------------ + /** Erzeuge neues Element nach der aktuellen Position und setze dieses als aktuelles Element + * @param name Name des neuen Elements + * @return neues Element als XML-Objekt + */ + public XML addChild(String name) { + Element e = new Element(name); + if(current == null){ // man ist auf Root-Ebene + doc.setRootElement(e); + + } + else { + current.addContent(e); + } // end of if-else + return new XML(doc, e); + } + + /** + * liefert das aktuelle Element als jdom-Element-Objekt + * @return aktuelles Element + */ + private Element getCurrent() { + return current; + } + + /** + * löscht ein Kind des aktuellen Knotens. + * Ist kid kein Kind des aktuellen Elements passiert gar nichts. + * @param kid XML-Objekt des Kindes + */ + public void removeChild(XML kid) { + if (current == null) return; + Element e = kid.getCurrent(); + int index = current.indexOf(e); + if(index >= 0) { current.removeContent(e);} + } + +} diff --git a/04_loesungen/02_greenfoot/alg14b_highscoretabelle_loesung/images/balken.png b/04_loesungen/02_greenfoot/alg14b_highscoretabelle_loesung/images/balken.png new file mode 100644 index 0000000..9ff1ffc Binary files /dev/null and b/04_loesungen/02_greenfoot/alg14b_highscoretabelle_loesung/images/balken.png differ diff --git a/04_loesungen/02_greenfoot/alg14b_highscoretabelle_loesung/images/bilderrahmen.png b/04_loesungen/02_greenfoot/alg14b_highscoretabelle_loesung/images/bilderrahmen.png new file mode 100644 index 0000000..7f34e32 Binary files /dev/null and b/04_loesungen/02_greenfoot/alg14b_highscoretabelle_loesung/images/bilderrahmen.png differ diff --git a/04_loesungen/02_greenfoot/alg14b_highscoretabelle_loesung/jdom-1.1.3.jar b/04_loesungen/02_greenfoot/alg14b_highscoretabelle_loesung/jdom-1.1.3.jar new file mode 100644 index 0000000..a287727 Binary files /dev/null and b/04_loesungen/02_greenfoot/alg14b_highscoretabelle_loesung/jdom-1.1.3.jar differ diff --git a/04_loesungen/02_greenfoot/alg14b_highscoretabelle_loesung/project.greenfoot b/04_loesungen/02_greenfoot/alg14b_highscoretabelle_loesung/project.greenfoot new file mode 100644 index 0000000..b44cbea --- /dev/null +++ b/04_loesungen/02_greenfoot/alg14b_highscoretabelle_loesung/project.greenfoot @@ -0,0 +1,93 @@ +#Greenfoot project file +class.Highscore.image=balken.png +class.PictureViewer.image=bilderrahmen.png +dependency1.from=MyWorld +dependency1.to=Highscore +dependency1.type=UsesDependency +dependency2.from=PictureViewer +dependency2.to=Picture +dependency2.type=UsesDependency +dependency3.from=Highscore +dependency3.to=Table +dependency3.type=UsesDependency +dependency4.from=Table +dependency4.to=TableRow +dependency4.type=UsesDependency +dependency5.from=Picture +dependency5.to=PictureViewer +dependency5.type=UsesDependency +editor.fx.0.height=739 +editor.fx.0.width=816 +editor.fx.0.x=552 +editor.fx.0.y=100 +height=885 +package.numDependencies=5 +package.numTargets=7 +project.charset=UTF-8 +publish.hasSource=false +publish.locked=true +publish.longDesc= +publish.shortDesc= +publish.tags= +publish.title= +publish.url= +readme.height=58 +readme.name=@README +readme.width=47 +readme.x=10 +readme.y=10 +simulation.speed=97 +target1.height=50 +target1.name=PictureViewer +target1.showInterface=false +target1.type=ClassTarget +target1.width=100 +target1.x=0 +target1.y=0 +target2.height=50 +target2.name=Table +target2.showInterface=false +target2.type=ClassTarget +target2.width=80 +target2.x=0 +target2.y=0 +target3.height=50 +target3.name=Picture +target3.showInterface=false +target3.type=ClassTarget +target3.width=80 +target3.x=0 +target3.y=0 +target4.height=50 +target4.name=XML +target4.showInterface=false +target4.type=ClassTarget +target4.width=100 +target4.x=0 +target4.y=0 +target5.height=50 +target5.name=Highscore +target5.showInterface=false +target5.type=ClassTarget +target5.width=80 +target5.x=0 +target5.y=0 +target6.height=50 +target6.name=TableRow +target6.showInterface=false +target6.type=ClassTarget +target6.width=80 +target6.x=0 +target6.y=0 +target7.height=50 +target7.name=MyWorld +target7.showInterface=false +target7.type=ClassTarget +target7.width=80 +target7.x=0 +target7.y=0 +version=3.0.0 +width=1350 +world.lastInstantiated=MyWorld +xPosition=375 +yPosition=128 diff --git a/04_loesungen/02_greenfoot/alg14b_highscoretabelle_loesung/punkte.csv b/04_loesungen/02_greenfoot/alg14b_highscoretabelle_loesung/punkte.csv new file mode 100644 index 0000000..d6e8dfd --- /dev/null +++ b/04_loesungen/02_greenfoot/alg14b_highscoretabelle_loesung/punkte.csv @@ -0,0 +1,6 @@ +"Name","Punkte" +Niko,216 +Klaus,591 +Anna,857 +Lena,180 +Winfried,168 diff --git a/04_loesungen/02_greenfoot/alg14b_highscoretabelle_loesung/testfall1.csv b/04_loesungen/02_greenfoot/alg14b_highscoretabelle_loesung/testfall1.csv new file mode 100644 index 0000000..92c538f --- /dev/null +++ b/04_loesungen/02_greenfoot/alg14b_highscoretabelle_loesung/testfall1.csv @@ -0,0 +1,20 @@ +"Name","Punkte" +Spieler1,0 +Spieler1,6 +Spieler2,19 +Spieler6,1 +Spieler4,45 +Spieler3,23 +Spieler3,12 +Spieler2,44 +Spieler1,72 +Spieler5,12 +Spieler6,4 +Spieler7,2 +Spieler4,98 +Spieler3,21 +Spieler3,12 +Spieler2,32 +Spieler1,12 +Spieler5,44 +Spieler3,12 diff --git a/04_loesungen/02_greenfoot/alg14b_highscoretabelle_loesung/testfall2.csv b/04_loesungen/02_greenfoot/alg14b_highscoretabelle_loesung/testfall2.csv new file mode 100644 index 0000000..091c003 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg14b_highscoretabelle_loesung/testfall2.csv @@ -0,0 +1,20 @@ +"Name","Punkte" +Spieler1,-5 +Spieler1,-6 +Spieler2,-19 +Spieler6,-1 +Spieler4,-45 +Spieler3,-23 +Spieler3,-12 +Spieler2,-44 +Spieler1,-72 +Spieler5,-12 +Spieler6,-4 +Spieler7,-2 +Spieler4,-98 +Spieler3,-21 +Spieler3,-12 +Spieler2,-32 +Spieler1,-12 +Spieler5,-44 +Spieler3,-12 diff --git a/04_loesungen/02_greenfoot/alg14b_highscoretabelle_loesung/testfall3.csv b/04_loesungen/02_greenfoot/alg14b_highscoretabelle_loesung/testfall3.csv new file mode 100644 index 0000000..3bc26b2 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg14b_highscoretabelle_loesung/testfall3.csv @@ -0,0 +1,2 @@ +"Name","Punkte" +Spieler1,45 diff --git a/04_loesungen/02_greenfoot/alg14b_highscoretabelle_loesung/testfall4.csv b/04_loesungen/02_greenfoot/alg14b_highscoretabelle_loesung/testfall4.csv new file mode 100644 index 0000000..e74e6d5 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg14b_highscoretabelle_loesung/testfall4.csv @@ -0,0 +1 @@ +"Name","Punkte" diff --git a/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a1/Amplitudes.csv b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a1/Amplitudes.csv new file mode 100644 index 0000000..6a3b121 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a1/Amplitudes.csv @@ -0,0 +1,12219 @@ +"Zeit","Laerm" +0.000000000E0,6.133205686E1 +1.130000000E-1,5.602431153E1 +3.840000000E-1,3.897519867E1 +7.780000000E-1,4.208195145E1 +1.036000000E0,3.840936313E1 +1.305000000E0,3.561092139E1 +1.587000000E0,4.663257633E1 +1.829000000E0,5.311883882E1 +2.084000000E0,5.299431820E1 +2.357000000E0,5.747397858E1 +2.643000000E0,5.626338063E1 +2.949000000E0,5.790811120E1 +3.238000000E0,5.874544026E1 +3.497000000E0,5.736162139E1 +3.775000000E0,5.897817442E1 +4.097000000E0,5.789822970E1 +4.357000000E0,5.312015799E1 +4.626000000E0,5.710192134E1 +4.941000000E0,6.275087240E1 +5.235000000E0,5.784358767E1 +5.535000000E0,5.388577420E1 +5.827000000E0,5.403495101E1 +6.090000000E0,5.428355086E1 +6.339000000E0,6.064473144E1 +6.616000000E0,6.271091291E1 +6.850000000E0,6.982615367E1 +7.128000000E0,7.050308750E1 +7.487000000E0,5.395311298E1 +7.760000000E0,5.036401582E1 +8.065000000E0,4.614125463E1 +8.361000000E0,6.244776407E1 +8.614000000E0,6.315719526E1 +8.862000000E0,5.981740395E1 +9.123000000E0,5.907292535E1 +9.374000000E0,5.661523092E1 +9.665000000E0,6.210368813E1 +9.948000000E0,6.140958115E1 +1.021100000E1,5.697007655E1 +1.058300000E1,5.460455934E1 +1.084000000E1,5.408516231E1 +1.115300000E1,5.907221377E1 +1.142100000E1,6.113412429E1 +1.172700000E1,6.267949704E1 +1.197100000E1,6.245109870E1 +1.226500000E1,6.342534529E1 +1.255800000E1,6.810008108E1 +1.287100000E1,6.036891848E1 +1.313400000E1,5.913231814E1 +1.342700000E1,5.973818566E1 +1.371600000E1,5.534371651E1 +1.401200000E1,5.694514867E1 +1.431200000E1,6.134814982E1 +1.461100000E1,5.900023912E1 +1.484600000E1,5.689908400E1 +1.515800000E1,5.296474858E1 +1.544000000E1,5.608528071E1 +1.569300000E1,5.728560404E1 +1.596900000E1,5.837984103E1 +1.620100000E1,5.718896638E1 +1.649200000E1,5.909973037E1 +1.678900000E1,5.705554272E1 +1.716300000E1,6.079937758E1 +1.747400000E1,5.618116117E1 +1.775200000E1,5.519881157E1 +1.803800000E1,5.402386340E1 +1.829100000E1,5.678484358E1 +1.858100000E1,5.954639303E1 +1.882300000E1,6.030021638E1 +1.908000000E1,5.588340744E1 +1.934400000E1,5.668691200E1 +1.958800000E1,6.042765467E1 +1.983400000E1,5.839794223E1 +2.008500000E1,5.457976882E1 +2.039500000E1,5.974390604E1 +2.064000000E1,6.049774386E1 +2.092900000E1,6.029857781E1 +2.117800000E1,6.116406203E1 +2.142700000E1,5.664722837E1 +2.173400000E1,5.823294996E1 +2.203100000E1,5.517538657E1 +2.229000000E1,5.322823206E1 +2.259900000E1,6.180779467E1 +2.285300000E1,6.106216386E1 +2.314900000E1,5.883321877E1 +2.347100000E1,6.045262422E1 +2.375000000E1,6.163931220E1 +2.406000000E1,4.841181734E1 +2.432800000E1,4.372149986E1 +2.462900000E1,5.625563946E1 +2.487100000E1,5.672759349E1 +2.513200000E1,5.896193725E1 +2.540800000E1,5.893011728E1 +2.566400000E1,5.857261268E1 +2.596700000E1,5.859012974E1 +2.621900000E1,5.635586832E1 +2.648700000E1,5.350948293E1 +2.673900000E1,5.430043092E1 +2.701400000E1,5.666610976E1 +2.727500000E1,5.218421407E1 +2.753100000E1,5.689076583E1 +2.782000000E1,5.796831886E1 +2.806900000E1,5.608205064E1 +2.831700000E1,5.482273815E1 +2.861600000E1,5.392425499E1 +2.888300000E1,5.329416010E1 +2.914800000E1,5.366916703E1 +2.940200000E1,5.280847155E1 +2.968000000E1,5.333298066E1 +2.994300000E1,5.497085471E1 +3.031200000E1,5.753094076E1 +3.057900000E1,5.655381974E1 +3.086100000E1,5.517704804E1 +3.115600000E1,5.592585858E1 +3.140700000E1,6.212826207E1 +3.166000000E1,5.699502474E1 +3.193500000E1,6.025129057E1 +3.223100000E1,5.686166208E1 +3.247300000E1,5.807641915E1 +3.271900000E1,6.065155151E1 +3.296400000E1,5.961384387E1 +3.320500000E1,6.119064420E1 +3.354400000E1,5.548464633E1 +3.378000000E1,5.699661616E1 +3.408000000E1,5.653770482E1 +3.438000000E1,5.083503664E1 +3.468200000E1,5.695639918E1 +3.495800000E1,5.566535489E1 +3.524700000E1,5.914853092E1 +3.552700000E1,5.758441289E1 +3.576600000E1,6.085665801E1 +3.606700000E1,5.862586334E1 +3.630600000E1,5.096841655E1 +3.662200000E1,6.009246966E1 +3.689400000E1,5.981749726E1 +3.715300000E1,6.108830629E1 +3.740300000E1,5.724514841E1 +3.766500000E1,5.934850613E1 +3.793000000E1,5.725470328E1 +3.819100000E1,5.843556167E1 +3.847700000E1,5.697759761E1 +3.874000000E1,5.721548979E1 +3.901600000E1,5.649629904E1 +3.927200000E1,5.850326911E1 +3.954600000E1,5.691951660E1 +3.993900000E1,5.357092442E1 +4.023400000E1,5.817046878E1 +4.053000000E1,5.554327077E1 +4.081200000E1,5.802928061E1 +4.103900000E1,5.663899845E1 +4.128700000E1,5.494654466E1 +4.155800000E1,5.564956216E1 +4.181900000E1,5.663250304E1 +4.211300000E1,5.652236278E1 +4.238100000E1,5.614203459E1 +4.264000000E1,5.433145844E1 +4.295000000E1,6.132645299E1 +4.326200000E1,6.040612545E1 +4.351400000E1,5.905916902E1 +4.377100000E1,5.885516023E1 +4.401000000E1,5.514814582E1 +4.430800000E1,5.663232510E1 +4.455900000E1,5.055807811E1 +4.482100000E1,5.614950318E1 +4.513300000E1,6.025044420E1 +4.537500000E1,5.643182261E1 +4.568900000E1,5.709089314E1 +4.600500000E1,5.480136123E1 +4.624500000E1,5.924046686E1 +4.656900000E1,6.172358505E1 +4.684100000E1,5.645515217E1 +4.711100000E1,6.002156043E1 +4.736300000E1,6.182669975E1 +4.759700000E1,5.557741963E1 +4.786700000E1,5.598662295E1 +4.818300000E1,5.664767890E1 +4.847900000E1,5.956168629E1 +4.874200000E1,5.713315811E1 +4.898900000E1,5.765479272E1 +4.931400000E1,5.507101982E1 +4.961600000E1,5.361677606E1 +4.990000000E1,5.558547080E1 +5.019600000E1,5.402951441E1 +5.046500000E1,5.805429700E1 +5.078800000E1,5.327636151E1 +5.110300000E1,4.980825483E1 +5.137100000E1,5.290981249E1 +5.165200000E1,4.817864123E1 +5.190100000E1,5.585478693E1 +5.214500000E1,5.457392293E1 +5.242900000E1,5.449921652E1 +5.272500000E1,5.537781025E1 +5.302100000E1,5.598018287E1 +5.326000000E1,5.612851081E1 +5.355800000E1,5.312697891E1 +5.384800000E1,5.799703575E1 +5.409200000E1,5.662162553E1 +5.433900000E1,5.392344795E1 +5.459100000E1,5.398098819E1 +5.494900000E1,5.489231889E1 +5.527100000E1,5.658153835E1 +5.552800000E1,5.624900056E1 +5.589500000E1,4.979935744E1 +5.616900000E1,5.146998424E1 +5.645400000E1,5.878755245E1 +5.668600000E1,5.846227673E1 +5.694400000E1,5.977267383E1 +5.726200000E1,5.508647523E1 +5.754400000E1,5.138853207E1 +5.784300000E1,5.327451232E1 +5.808600000E1,5.887142781E1 +5.837800000E1,5.858062431E1 +5.862200000E1,5.917458096E1 +5.889700000E1,6.050411670E1 +5.926300000E1,5.908687144E1 +5.952100000E1,5.570790758E1 +5.981900000E1,5.444849000E1 +6.006100000E1,5.201240285E1 +6.032000000E1,4.755830762E1 +6.061900000E1,5.204388424E1 +6.086500000E1,5.626914911E1 +6.117500000E1,5.280379974E1 +6.142900000E1,5.093923019E1 +6.173000000E1,5.460427137E1 +6.197800000E1,5.299601182E1 +6.230600000E1,5.424208739E1 +6.257600000E1,5.253762352E1 +6.283700000E1,5.544043962E1 +6.309800000E1,5.527614156E1 +6.335400000E1,5.747262922E1 +6.360700000E1,5.468151445E1 +6.384900000E1,5.582905565E1 +6.410700000E1,5.802400474E1 +6.435000000E1,5.204893636E1 +6.459600000E1,5.280146425E1 +6.486300000E1,4.876648093E1 +6.509700000E1,5.311679703E1 +6.537500000E1,5.192778643E1 +6.571400000E1,5.346709918E1 +6.597900000E1,5.370921552E1 +6.627900000E1,5.676705279E1 +6.652200000E1,5.832258643E1 +6.676600000E1,6.257736406E1 +6.703100000E1,6.295448429E1 +6.737800000E1,6.100964383E1 +6.766100000E1,5.182636016E1 +6.790700000E1,4.952717893E1 +6.821100000E1,5.667475715E1 +6.850300000E1,5.872819054E1 +6.882100000E1,6.004516195E1 +6.907300000E1,5.559244143E1 +6.935100000E1,5.600379936E1 +6.961500000E1,5.338006499E1 +6.987600000E1,5.360104859E1 +7.011900000E1,4.644905289E1 +7.037100000E1,4.528909123E1 +7.067200000E1,5.787885076E1 +7.091600000E1,5.602551032E1 +7.115700000E1,5.989544193E1 +7.142200000E1,6.110384869E1 +7.167900000E1,5.887448069E1 +7.192600000E1,5.797896456E1 +7.226000000E1,5.965665129E1 +7.251000000E1,6.477744226E1 +7.281200000E1,6.243775536E1 +7.310800000E1,5.921576979E1 +7.335600000E1,6.629420582E1 +7.364100000E1,6.683725429E1 +7.392300000E1,5.758295449E1 +7.418800000E1,5.654909286E1 +7.448600000E1,5.881341247E1 +7.472100000E1,5.546609910E1 +7.498300000E1,5.586542777E1 +7.526600000E1,5.463216262E1 +7.558500000E1,5.947397496E1 +7.586200000E1,6.218459899E1 +7.609800000E1,6.134189272E1 +7.635800000E1,5.727526170E1 +7.666700000E1,5.579062978E1 +7.699300000E1,6.015063828E1 +7.729000000E1,6.022787424E1 +7.756300000E1,5.646982462E1 +7.782200000E1,6.005734442E1 +7.813200000E1,5.950776839E1 +7.842200000E1,6.314009710E1 +7.880400000E1,5.425753266E1 +7.910400000E1,5.909139002E1 +7.935300000E1,5.600377253E1 +7.962300000E1,6.036368528E1 +7.993700000E1,5.940415340E1 +8.018900000E1,6.102152187E1 +8.050000000E1,6.619104713E1 +8.074000000E1,6.149981675E1 +8.098900000E1,5.978899259E1 +8.123800000E1,5.963150500E1 +8.150300000E1,6.509054947E1 +8.181300000E1,6.387458039E1 +8.220700000E1,6.421798778E1 +8.246100000E1,6.092500605E1 +8.271900000E1,6.039313205E1 +8.297100000E1,5.885189543E1 +8.328000000E1,6.068901175E1 +8.355600000E1,6.531581124E1 +8.381900000E1,6.460984287E1 +8.407800000E1,6.281147078E1 +8.435000000E1,5.961599483E1 +8.463400000E1,5.915457491E1 +8.489200000E1,5.383227231E1 +8.513000000E1,5.278474817E1 +8.551100000E1,6.165964712E1 +8.574900000E1,6.442604107E1 +8.600700000E1,6.551005247E1 +8.626000000E1,6.660338206E1 +8.650900000E1,6.304014634E1 +8.676000000E1,6.488065719E1 +8.701800000E1,6.416881833E1 +8.728000000E1,5.892166498E1 +8.754500000E1,5.946249393E1 +8.785000000E1,6.506678358E1 +8.809400000E1,5.703264442E1 +8.840500000E1,6.164086486E1 +8.876300000E1,6.276173959E1 +8.906100000E1,5.818071871E1 +8.930500000E1,5.844394446E1 +8.956300000E1,5.657440647E1 +8.987400000E1,6.120356137E1 +9.011500000E1,6.094306560E1 +9.041100000E1,5.978472131E1 +9.065500000E1,6.008128664E1 +9.092400000E1,5.758286780E1 +9.123300000E1,5.353387594E1 +9.151600000E1,5.676204998E1 +9.183800000E1,5.245702159E1 +9.218200000E1,5.642589170E1 +9.243600000E1,5.542467479E1 +9.268000000E1,5.580829615E1 +9.297600000E1,5.148061441E1 +9.322800000E1,4.635974806E1 +9.353200000E1,5.465579762E1 +9.377300000E1,5.154999739E1 +9.402200000E1,5.544992474E1 +9.427900000E1,5.302390200E1 +9.453300000E1,5.127982623E1 +9.478800000E1,5.263086656E1 +9.503100000E1,5.128121484E1 +9.532100000E1,5.061466876E1 +9.557700000E1,5.328260476E1 +9.582800000E1,5.101663724E1 +9.607100000E1,5.400893265E1 +9.640400000E1,5.756552061E1 +9.665500000E1,5.665487755E1 +9.690400000E1,5.719000980E1 +9.715400000E1,5.593995548E1 +9.740400000E1,5.420194495E1 +9.771300000E1,4.867232074E1 +9.802100000E1,5.053798103E1 +9.830700000E1,4.874294948E1 +9.857500000E1,5.754515654E1 +9.883700000E1,5.863618568E1 +9.909700000E1,6.070195076E1 +9.935300000E1,5.434874196E1 +9.961300000E1,6.163600431E1 +9.987300000E1,5.555228218E1 +1.001200000E2,5.733850418E1 +1.003910000E2,6.133233800E1 +1.006620000E2,5.853313440E1 +1.009020000E2,5.435835494E1 +1.011680000E2,5.329891948E1 +1.014680000E2,5.356470018E1 +1.018410000E2,5.574288130E1 +1.021370000E2,5.927571979E1 +1.024000000E2,5.789956910E1 +1.026980000E2,6.081738139E1 +1.029540000E2,5.575615853E1 +1.032580000E2,5.337382111E1 +1.035140000E2,5.562761746E1 +1.038150000E2,5.905624776E1 +1.041040000E2,5.696105750E1 +1.043990000E2,6.170938149E1 +1.046370000E2,5.823687000E1 +1.049080000E2,6.066674703E1 +1.051740000E2,6.220969933E1 +1.054810000E2,5.755805236E1 +1.057660000E2,5.735691579E1 +1.060450000E2,5.761618087E1 +1.063040000E2,5.188413372E1 +1.065680000E2,5.643639822E1 +1.068740000E2,5.312430876E1 +1.071280000E2,5.924995828E1 +1.073900000E2,5.546187342E1 +1.076920000E2,5.474389270E1 +1.079790000E2,5.600814816E1 +1.082440000E2,5.561453096E1 +1.084980000E2,5.408559240E1 +1.087580000E2,5.622058302E1 +1.090160000E2,5.768852773E1 +1.092670000E2,5.516804842E1 +1.095340000E2,5.973626648E1 +1.098120000E2,6.403409511E1 +1.100690000E2,6.035201036E1 +1.103490000E2,5.940482770E1 +1.105950000E2,5.932126109E1 +1.108600000E2,5.859387697E1 +1.111460000E2,5.929800416E1 +1.114110000E2,5.930503134E1 +1.117890000E2,6.170536210E1 +1.120410000E2,6.214563711E1 +1.123490000E2,5.810151097E1 +1.126320000E2,5.823719807E1 +1.128910000E2,6.454485320E1 +1.131870000E2,6.755031626E1 +1.134560000E2,6.410743881E1 +1.137200000E2,5.913442857E1 +1.139870000E2,6.382823805E1 +1.142400000E2,5.859239523E1 +1.145180000E2,5.135859796E1 +1.147890000E2,5.294563188E1 +1.151440000E2,5.357868048E1 +1.154220000E2,5.561359505E1 +1.156620000E2,5.645675088E1 +1.159670000E2,5.879425595E1 +1.162610000E2,5.918610512E1 +1.164990000E2,6.083658676E1 +1.167470000E2,5.526645697E1 +1.169880000E2,5.471312988E1 +1.172910000E2,6.211796732E1 +1.175510000E2,5.417468648E1 +1.177930000E2,5.576739557E1 +1.180750000E2,5.912472365E1 +1.184660000E2,5.718213173E1 +1.187710000E2,5.747081312E1 +1.190170000E2,5.741742618E1 +1.192690000E2,5.379557814E1 +1.195330000E2,5.428733520E1 +1.197780000E2,6.177329402E1 +1.200450000E2,5.672333166E1 +1.203170000E2,5.584947723E1 +1.205670000E2,5.382665718E1 +1.208400000E2,5.443690083E1 +1.211280000E2,5.221565874E1 +1.214800000E2,5.516249741E1 +1.217540000E2,5.676279334E1 +1.220050000E2,5.303796336E1 +1.222680000E2,5.258840561E1 +1.225120000E2,5.671935607E1 +1.227660000E2,4.902892756E1 +1.230240000E2,4.264962220E1 +1.232830000E2,4.818154680E1 +1.235340000E2,5.204058636E1 +1.238430000E2,5.649936271E1 +1.241410000E2,5.396154490E1 +1.244200000E2,5.428877275E1 +1.246760000E2,4.778715710E1 +1.249500000E2,4.912370762E1 +1.252110000E2,5.114426735E1 +1.255020000E2,5.345096378E1 +1.257410000E2,5.581149074E1 +1.260430000E2,5.211774829E1 +1.263320000E2,5.470047014E1 +1.265660000E2,5.399085344E1 +1.268600000E2,5.981732528E1 +1.271210000E2,5.944116770E1 +1.273530000E2,5.668281238E1 +1.275970000E2,5.042419391E1 +1.279080000E2,5.014554177E1 +1.282260000E2,5.350461413E1 +1.285240000E2,5.453533258E1 +1.287780000E2,5.809919663E1 +1.290280000E2,5.729580956E1 +1.292980000E2,5.681749266E1 +1.296010000E2,5.542882864E1 +1.298980000E2,5.612046892E1 +1.302070000E2,6.074750886E1 +1.304620000E2,5.979349108E1 +1.307520000E2,5.806574219E1 +1.310590000E2,5.738881777E1 +1.314010000E2,5.595280312E1 +1.316630000E2,5.401154636E1 +1.319120000E2,5.499471091E1 +1.321620000E2,5.551354327E1 +1.324640000E2,6.567912108E1 +1.327650000E2,5.725129100E1 +1.330150000E2,6.452906176E1 +1.333160000E2,5.778565576E1 +1.335760000E2,6.242194617E1 +1.338200000E2,5.570863747E1 +1.340710000E2,5.755877138E1 +1.343660000E2,6.819206156E1 +1.346260000E2,6.094769164E1 +1.349310000E2,6.447198163E1 +1.351810000E2,5.482297950E1 +1.354630000E2,6.327012623E1 +1.357210000E2,5.723157337E1 +1.359770000E2,5.835004111E1 +1.362140000E2,6.413045068E1 +1.365290000E2,6.022343539E1 +1.368110000E2,5.969265006E1 +1.371070000E2,5.589766444E1 +1.373670000E2,6.089100679E1 +1.376970000E2,6.762783521E1 +1.379410000E2,5.740809854E1 +1.381870000E2,6.711182247E1 +1.384650000E2,6.290175574E1 +1.387060000E2,6.352322572E1 +1.390400000E2,5.897504025E1 +1.392980000E2,5.872568346E1 +1.396520000E2,5.582882684E1 +1.399140000E2,5.874428562E1 +1.402160000E2,5.275369064E1 +1.404650000E2,5.181123336E1 +1.407250000E2,4.758951485E1 +1.410550000E2,4.601470876E1 +1.413500000E2,5.203790008E1 +1.416310000E2,5.380793436E1 +1.418780000E2,5.006781735E1 +1.421580000E2,4.792469964E1 +1.424020000E2,5.136650820E1 +1.427060000E2,5.127969468E1 +1.430200000E2,5.304643312E1 +1.433210000E2,5.218299100E1 +1.436050000E2,5.568762266E1 +1.439010000E2,5.522696018E1 +1.442570000E2,5.919224289E1 +1.445880000E2,6.201398016E1 +1.448680000E2,5.750742223E1 +1.451160000E2,5.811963790E1 +1.454090000E2,5.695462128E1 +1.456560000E2,5.854812337E1 +1.458980000E2,5.886107911E1 +1.461720000E2,5.454171305E1 +1.464480000E2,5.674410925E1 +1.466770000E2,5.450912101E1 +1.469270000E2,5.953864028E1 +1.471790000E2,6.097527460E1 +1.475260000E2,5.825769450E1 +1.478290000E2,5.780473579E1 +1.480790000E2,6.185542851E1 +1.483350000E2,5.390929394E1 +1.486330000E2,5.400087479E1 +1.488750000E2,5.328656685E1 +1.491190000E2,5.599536596E1 +1.494200000E2,5.721648542E1 +1.497150000E2,5.787493165E1 +1.500380000E2,5.480047158E1 +1.503480000E2,5.002404450E1 +1.506590000E2,5.486151348E1 +1.509700000E2,6.245235750E1 +1.512360000E2,5.831236552E1 +1.514820000E2,6.253825815E1 +1.517260000E2,6.440134635E1 +1.520120000E2,5.646251942E1 +1.523080000E2,5.569851104E1 +1.525630000E2,5.574195002E1 +1.528610000E2,6.073633455E1 +1.531220000E2,5.704364811E1 +1.533960000E2,5.858521931E1 +1.536900000E2,6.334346239E1 +1.540080000E2,5.734505299E1 +1.542490000E2,6.522555977E1 +1.544980000E2,5.500712815E1 +1.547420000E2,5.698741268E1 +1.549830000E2,5.097374633E1 +1.552760000E2,5.421781291E1 +1.555100000E2,5.276919678E1 +1.558070000E2,5.444895965E1 +1.560410000E2,5.023818561E1 +1.563440000E2,5.460917302E1 +1.565880000E2,5.459938847E1 +1.568920000E2,5.843131092E1 +1.572210000E2,5.876667307E1 +1.574850000E2,5.735202828E1 +1.577300000E2,5.496399564E1 +1.580290000E2,5.249359356E1 +1.582920000E2,5.216967072E1 +1.585400000E2,5.506360532E1 +1.588040000E2,4.854470136E1 +1.590480000E2,5.455647594E1 +1.593040000E2,5.480802962E1 +1.595560000E2,5.117555202E1 +1.598230000E2,5.525001141E1 +1.600680000E2,6.028739680E1 +1.604080000E2,6.051466285E1 +1.606910000E2,5.941686107E1 +1.609450000E2,6.263789003E1 +1.611920000E2,5.862463866E1 +1.614980000E2,5.858673558E1 +1.617730000E2,5.766546261E1 +1.620210000E2,5.485521148E1 +1.623080000E2,5.814732367E1 +1.625850000E2,5.829863647E1 +1.628370000E2,5.473457172E1 +1.631510000E2,5.323729241E1 +1.634320000E2,5.795543593E1 +1.637670000E2,5.845831909E1 +1.640670000E2,5.883503284E1 +1.643040000E2,5.933733684E1 +1.645990000E2,5.316483696E1 +1.648620000E2,5.628275472E1 +1.651110000E2,5.612764782E1 +1.654290000E2,5.739409022E1 +1.657290000E2,5.275374209E1 +1.660100000E2,5.606330732E1 +1.662350000E2,4.973765069E1 +1.664840000E2,4.855931683E1 +1.667820000E2,4.830487304E1 +1.670210000E2,5.643349546E1 +1.672820000E2,5.752246312E1 +1.675830000E2,5.576545129E1 +1.678330000E2,5.583582770E1 +1.681390000E2,5.301617697E1 +1.684460000E2,5.088408561E1 +1.686990000E2,5.149775091E1 +1.690030000E2,6.019099852E1 +1.692410000E2,6.143998752E1 +1.695380000E2,6.183098470E1 +1.697780000E2,5.964256200E1 +1.701420000E2,5.648358262E1 +1.703870000E2,5.768033788E1 +1.706360000E2,5.037521789E1 +1.709530000E2,5.268785935E1 +1.712030000E2,5.850048969E1 +1.714650000E2,5.537813713E1 +1.717710000E2,5.989062491E1 +1.720770000E2,6.371629733E1 +1.723380000E2,5.413135778E1 +1.726060000E2,5.582389161E1 +1.729040000E2,6.344770094E1 +1.731770000E2,6.038125570E1 +1.735090000E2,5.229655017E1 +1.737830000E2,5.594074665E1 +1.740430000E2,6.258802116E1 +1.743030000E2,5.773122794E1 +1.745600000E2,5.533899998E1 +1.748290000E2,5.069657364E1 +1.750850000E2,6.285550191E1 +1.753480000E2,5.470504416E1 +1.756240000E2,5.746379759E1 +1.758870000E2,5.928233462E1 +1.761350000E2,5.214791610E1 +1.763840000E2,5.260177806E1 +1.767030000E2,4.844041050E1 +1.769490000E2,5.275717684E1 +1.772330000E2,5.436891746E1 +1.774780000E2,5.441421810E1 +1.777590000E2,5.485847839E1 +1.780320000E2,5.714239097E1 +1.782910000E2,6.028837304E1 +1.785470000E2,5.706420775E1 +1.788380000E2,5.509582512E1 +1.791200000E2,5.674185072E1 +1.794340000E2,5.437491314E1 +1.796940000E2,5.696592309E1 +1.799990000E2,5.344092263E1 +1.802540000E2,5.414345246E1 +1.804960000E2,5.421992498E1 +1.808400000E2,5.317024536E1 +1.811450000E2,5.422714635E1 +1.814530000E2,5.933207779E1 +1.817720000E2,5.916706050E1 +1.820730000E2,5.685980261E1 +1.824210000E2,5.521649456E1 +1.826850000E2,5.651993888E1 +1.829810000E2,5.707596711E1 +1.832810000E2,5.464130538E1 +1.836160000E2,5.364065008E1 +1.838600000E2,5.913078622E1 +1.841080000E2,5.695541400E1 +1.843520000E2,6.237274690E1 +1.846510000E2,6.017101966E1 +1.848950000E2,5.670915019E1 +1.851380000E2,5.651470649E1 +1.854400000E2,5.919691857E1 +1.857560000E2,5.752836475E1 +1.860680000E2,6.133052078E1 +1.863670000E2,6.001801442E1 +1.866740000E2,5.871186574E1 +1.869510000E2,5.858669373E1 +1.872240000E2,5.722343490E1 +1.875200000E2,5.725198568E1 +1.877700000E2,5.560524182E1 +1.880340000E2,5.419540118E1 +1.882980000E2,6.169219144E1 +1.885790000E2,5.704261604E1 +1.888700000E2,5.651125138E1 +1.891060000E2,5.778536485E1 +1.894110000E2,5.304160496E1 +1.896990000E2,5.105254388E1 +1.900460000E2,5.338626279E1 +1.902980000E2,5.090929652E1 +1.905360000E2,5.235399183E1 +1.907970000E2,5.429173243E1 +1.910620000E2,5.376238901E1 +1.913500000E2,6.411203098E1 +1.916020000E2,6.235211697E1 +1.919100000E2,5.719243884E1 +1.922140000E2,5.965550680E1 +1.925010000E2,5.850063986E1 +1.928110000E2,6.013906156E1 +1.930480000E2,5.912633730E1 +1.934000000E2,5.860712099E1 +1.936870000E2,5.944287516E1 +1.939980000E2,5.676076088E1 +1.942520000E2,5.712881871E1 +1.945490000E2,5.515631677E1 +1.948870000E2,5.670925955E1 +1.951320000E2,5.768263389E1 +1.954210000E2,5.735243887E1 +1.957290000E2,5.883798740E1 +1.960030000E2,5.654393164E1 +1.963340000E2,5.345251733E1 +1.966710000E2,5.034487882E1 +1.969060000E2,5.741493139E1 +1.971980000E2,5.877434013E1 +1.974210000E2,5.965387227E1 +1.977200000E2,6.306941384E1 +1.979730000E2,6.004201692E1 +1.982230000E2,6.106500017E1 +1.984800000E2,5.674857861E1 +1.987290000E2,6.020914127E1 +1.990680000E2,6.067289060E1 +1.993460000E2,5.996658083E1 +1.996390000E2,5.676340490E1 +1.999500000E2,5.612304129E1 +2.002130000E2,6.289766509E1 +2.005150000E2,5.720971103E1 +2.008280000E2,5.752136939E1 +2.010940000E2,6.058659890E1 +2.013440000E2,5.618430636E1 +2.016270000E2,6.056271249E1 +2.019400000E2,5.729198827E1 +2.022100000E2,5.793084452E1 +2.025070000E2,5.787194228E1 +2.027910000E2,5.959620014E1 +2.030940000E2,6.012062596E1 +2.033180000E2,6.276377758E1 +2.036210000E2,5.834405857E1 +2.039320000E2,5.545225289E1 +2.042050000E2,5.829439447E1 +2.044730000E2,5.799912649E1 +2.047970000E2,5.444896398E1 +2.050680000E2,5.743866699E1 +2.053150000E2,5.862448994E1 +2.055880000E2,5.778478934E1 +2.058890000E2,5.527981007E1 +2.061620000E2,5.742523507E1 +2.064580000E2,5.472188821E1 +2.067100000E2,6.202721053E1 +2.069630000E2,5.861698013E1 +2.072080000E2,6.294616718E1 +2.074730000E2,6.321186761E1 +2.077380000E2,5.776609523E1 +2.080390000E2,6.061292698E1 +2.083320000E2,5.857532480E1 +2.085870000E2,5.800369352E1 +2.088450000E2,5.977447345E1 +2.091070000E2,5.957010157E1 +2.093520000E2,6.145770306E1 +2.096060000E2,6.176056517E1 +2.098580000E2,6.033519811E1 +2.100970000E2,6.429628489E1 +2.103980000E2,6.215353584E1 +2.106470000E2,6.299048914E1 +2.109300000E2,6.133544133E1 +2.112010000E2,5.397487394E1 +2.114250000E2,5.313920655E1 +2.116740000E2,5.552710709E1 +2.119140000E2,5.692289703E1 +2.121730000E2,5.618691953E1 +2.124220000E2,5.402804715E1 +2.127170000E2,5.390450402E1 +2.129570000E2,5.652515030E1 +2.132580000E2,5.490504921E1 +2.135120000E2,5.485761082E1 +2.137850000E2,6.486277416E1 +2.140520000E2,6.121826472E1 +2.143580000E2,6.355465948E1 +2.146390000E2,5.534291145E1 +2.148790000E2,6.610858745E1 +2.151670000E2,5.617739728E1 +2.154670000E2,5.426651762E1 +2.157300000E2,5.840247716E1 +2.160830000E2,5.257749691E1 +2.163200000E2,6.345809118E1 +2.165810000E2,6.020490407E1 +2.168390000E2,5.603372378E1 +2.170870000E2,5.452432165E1 +2.173530000E2,5.679931822E1 +2.176220000E2,6.225558234E1 +2.179360000E2,5.991886985E1 +2.182430000E2,6.307902574E1 +2.184780000E2,6.764692456E1 +2.187700000E2,6.696013302E1 +2.190280000E2,6.419552300E1 +2.193390000E2,6.401831507E1 +2.196000000E2,6.317016249E1 +2.198590000E2,6.093052958E1 +2.201380000E2,6.446513941E1 +2.204220000E2,6.075454080E1 +2.206690000E2,6.712020778E1 +2.209300000E2,5.440050354E1 +2.212550000E2,5.627963451E1 +2.215550000E2,6.358778444E1 +2.217990000E2,5.793661873E1 +2.220730000E2,6.448679664E1 +2.223050000E2,5.844994198E1 +2.226510000E2,5.802583418E1 +2.229440000E2,5.848297014E1 +2.231840000E2,6.170695891E1 +2.234220000E2,6.201301769E1 +2.236630000E2,6.049179870E1 +2.239600000E2,6.316843106E1 +2.242020000E2,5.818837652E1 +2.245150000E2,6.411353278E1 +2.248330000E2,6.458398711E1 +2.250670000E2,6.303280227E1 +2.253240000E2,6.378696379E1 +2.255670000E2,6.157533943E1 +2.259260000E2,5.845901257E1 +2.261910000E2,5.623331182E1 +2.264460000E2,5.550822889E1 +2.267020000E2,5.907003722E1 +2.270220000E2,6.300043778E1 +2.273130000E2,5.934584116E1 +2.275640000E2,5.367094537E1 +2.278520000E2,6.260544714E1 +2.281140000E2,5.666507163E1 +2.283970000E2,6.099713971E1 +2.287020000E2,5.943082312E1 +2.289450000E2,6.095935321E1 +2.292950000E2,5.939706013E1 +2.296230000E2,5.612117806E1 +2.299220000E2,5.805831404E1 +2.301570000E2,5.496048372E1 +2.304070000E2,5.335836124E1 +2.306490000E2,5.043808989E1 +2.309270000E2,4.778025574E1 +2.311680000E2,4.613189565E1 +2.314100000E2,4.740314381E1 +2.316580000E2,5.230056147E1 +2.319150000E2,5.672989332E1 +2.321590000E2,6.081799709E1 +2.325030000E2,5.909736866E1 +2.327570000E2,5.528762811E1 +2.330520000E2,6.623131701E1 +2.333360000E2,6.376149752E1 +2.335730000E2,6.088376871E1 +2.338700000E2,6.235681388E1 +2.341160000E2,6.060610548E1 +2.343930000E2,5.779254532E1 +2.346370000E2,5.570043106E1 +2.349010000E2,6.172637016E1 +2.351520000E2,5.865545525E1 +2.354420000E2,6.250465685E1 +2.356850000E2,6.494272879E1 +2.359310000E2,6.075163542E1 +2.361840000E2,5.742858606E1 +2.364460000E2,5.756917813E1 +2.366990000E2,6.169927684E1 +2.370080000E2,5.540268710E1 +2.373040000E2,5.484088652E1 +2.376000000E2,5.732112773E1 +2.378800000E2,5.184194161E1 +2.381270000E2,5.604168635E1 +2.383910000E2,5.644051218E1 +2.387130000E2,6.049774032E1 +2.390290000E2,6.303013407E1 +2.392800000E2,6.115111046E1 +2.395770000E2,6.294174883E1 +2.398740000E2,6.716012591E1 +2.401880000E2,7.075117191E1 +2.404890000E2,6.435561631E1 +2.407550000E2,5.593172595E1 +2.410720000E2,5.781614361E1 +2.413350000E2,5.497792445E1 +2.416080000E2,5.569244646E1 +2.418870000E2,5.408109683E1 +2.421100000E2,5.687440525E1 +2.424230000E2,6.415333296E1 +2.427170000E2,6.528722740E1 +2.429900000E2,6.229384329E1 +2.432350000E2,5.452507698E1 +2.434960000E2,5.248331654E1 +2.437450000E2,5.069826347E1 +2.439880000E2,4.989889277E1 +2.442610000E2,5.196931346E1 +2.445130000E2,4.988417717E1 +2.448120000E2,5.950968466E1 +2.451200000E2,5.725324421E1 +2.454210000E2,5.902908729E1 +2.456980000E2,5.857784521E1 +2.459650000E2,5.154496059E1 +2.462670000E2,5.316738342E1 +2.465660000E2,5.681338179E1 +2.468580000E2,5.486468116E1 +2.471080000E2,5.378622946E1 +2.473840000E2,5.263910847E1 +2.477040000E2,5.102724000E1 +2.479590000E2,4.958128022E1 +2.482070000E2,5.621813465E1 +2.486190000E2,5.553111013E1 +2.489120000E2,5.711728514E1 +2.491630000E2,6.098223102E1 +2.494610000E2,5.812970142E1 +2.497290000E2,5.874411947E1 +2.500090000E2,6.058797235E1 +2.503160000E2,5.921850964E1 +2.506300000E2,5.825659244E1 +2.508940000E2,5.902074554E1 +2.512250000E2,5.857720223E1 +2.514860000E2,5.834259509E1 +2.517560000E2,5.664723408E1 +2.520110000E2,6.245873243E1 +2.522800000E2,6.018081628E1 +2.525490000E2,6.060905480E1 +2.527980000E2,6.098924059E1 +2.530310000E2,6.604497204E1 +2.532750000E2,5.762503683E1 +2.535750000E2,5.946675250E1 +2.538150000E2,5.696283688E1 +2.541120000E2,5.795434272E1 +2.543420000E2,5.641662406E1 +2.546470000E2,6.001503419E1 +2.549610000E2,5.913147779E1 +2.552050000E2,5.772050526E1 +2.554250000E2,5.986895040E1 +2.557400000E2,4.836792039E1 +2.560130000E2,4.818172752E1 +2.563450000E2,5.244597112E1 +2.566130000E2,5.174954560E1 +2.568650000E2,5.165225717E1 +2.571100000E2,4.865803315E1 +2.573530000E2,4.773689375E1 +2.576460000E2,5.375353685E1 +2.579030000E2,5.630041837E1 +2.582540000E2,5.390583403E1 +2.585030000E2,5.686416101E1 +2.588120000E2,5.880170204E1 +2.590630000E2,5.373023259E1 +2.593590000E2,6.009405077E1 +2.596120000E2,5.710673366E1 +2.598560000E2,5.891240789E1 +2.600990000E2,5.960890080E1 +2.603510000E2,6.728594423E1 +2.606060000E2,6.334340199E1 +2.609270000E2,6.082175509E1 +2.611830000E2,5.750083619E1 +2.615060000E2,5.667484133E1 +2.618070000E2,6.152760439E1 +2.620430000E2,5.697586540E1 +2.623440000E2,5.674189037E1 +2.625730000E2,5.539036876E1 +2.628210000E2,4.901745514E1 +2.631270000E2,5.264848299E1 +2.634230000E2,5.038277380E1 +2.636750000E2,5.149234245E1 +2.639170000E2,4.604207892E1 +2.641630000E2,5.735184247E1 +2.644630000E2,5.659523444E1 +2.648080000E2,5.697978691E1 +2.650640000E2,5.691301726E1 +2.653540000E2,5.696584583E1 +2.656480000E2,5.138210199E1 +2.659030000E2,5.345758564E1 +2.661640000E2,5.363588256E1 +2.664240000E2,5.471656895E1 +2.666720000E2,5.140760448E1 +2.669400000E2,5.329005020E1 +2.671940000E2,5.422388323E1 +2.674460000E2,5.133919880E1 +2.677140000E2,5.690801972E1 +2.681270000E2,5.964609863E1 +2.684030000E2,6.167901240E1 +2.686970000E2,5.297205648E1 +2.689350000E2,5.530010894E1 +2.692310000E2,5.450325538E1 +2.694700000E2,5.391690578E1 +2.697660000E2,5.420666075E1 +2.700010000E2,4.962510480E1 +2.702390000E2,5.010058679E1 +2.705460000E2,5.345147952E1 +2.708590000E2,5.574757195E1 +2.711770000E2,5.571208034E1 +2.714720000E2,5.288998421E1 +2.717170000E2,5.214438195E1 +2.720190000E2,5.232798978E1 +2.723080000E2,6.045263056E1 +2.725500000E2,5.870512300E1 +2.727930000E2,5.577911819E1 +2.730760000E2,5.501493048E1 +2.733800000E2,5.433475343E1 +2.736720000E2,5.293457700E1 +2.739070000E2,5.486483547E1 +2.741780000E2,6.008208952E1 +2.745050000E2,5.845984546E1 +2.748040000E2,5.900764997E1 +2.751070000E2,5.760203457E1 +2.754240000E2,5.795024632E1 +2.757280000E2,6.182748257E1 +2.760340000E2,5.683205968E1 +2.763350000E2,5.821402367E1 +2.766080000E2,5.520672517E1 +2.768980000E2,5.645892504E1 +2.772030000E2,5.463906896E1 +2.775200000E2,5.412722413E1 +2.777910000E2,5.268636730E1 +2.780870000E2,5.566734184E1 +2.783350000E2,5.745256931E1 +2.785810000E2,5.645167582E1 +2.788270000E2,5.925831320E1 +2.790840000E2,5.591320738E1 +2.793690000E2,5.632637646E1 +2.796200000E2,6.252281740E1 +2.799120000E2,5.547643277E1 +2.801570000E2,6.021611275E1 +2.804580000E2,5.732676882E1 +2.808110000E2,5.909573770E1 +2.810780000E2,6.005240162E1 +2.813300000E2,5.965022185E1 +2.815820000E2,6.135840817E1 +2.818790000E2,5.970629096E1 +2.821590000E2,5.879025140E1 +2.824010000E2,5.747324456E1 +2.826520000E2,5.726379384E1 +2.828950000E2,5.871306541E1 +2.831920000E2,6.188032415E1 +2.834710000E2,6.066582287E1 +2.837110000E2,5.950933244E1 +2.840350000E2,5.901018860E1 +2.843000000E2,5.761182729E1 +2.846050000E2,5.446909438E1 +2.848570000E2,5.349219985E1 +2.851700000E2,5.015518748E1 +2.854330000E2,5.374610595E1 +2.857270000E2,5.877223624E1 +2.860310000E2,5.644512377E1 +2.863080000E2,5.711327205E1 +2.865540000E2,5.655239592E1 +2.867930000E2,5.833716670E1 +2.871150000E2,5.417781453E1 +2.874030000E2,5.332227783E1 +2.876540000E2,5.146836736E1 +2.879540000E2,5.452228720E1 +2.881970000E2,5.025406823E1 +2.884910000E2,5.490648375E1 +2.887280000E2,5.506242221E1 +2.890210000E2,5.400927835E1 +2.892600000E2,5.781126179E1 +2.895430000E2,6.384283902E1 +2.898470000E2,6.340395874E1 +2.901430000E2,5.555395770E1 +2.904560000E2,5.514224078E1 +2.907530000E2,5.346566906E1 +2.910000000E2,5.948406902E1 +2.912590000E2,6.362292628E1 +2.915300000E2,6.175065463E1 +2.918240000E2,6.129817533E1 +2.920790000E2,6.317618325E1 +2.923350000E2,6.137933812E1 +2.926010000E2,5.620086793E1 +2.928740000E2,5.715913846E1 +2.931780000E2,7.028942499E1 +2.934620000E2,6.774357618E1 +2.937770000E2,6.989950413E1 +2.940270000E2,6.631119439E1 +2.943030000E2,6.956920703E1 +2.945570000E2,6.352936554E1 +2.948100000E2,6.981123112E1 +2.951150000E2,5.607171784E1 +2.953950000E2,5.394017247E1 +2.956980000E2,7.110851253E1 +2.959460000E2,6.978848906E1 +2.961900000E2,5.446752823E1 +2.965090000E2,6.309281755E1 +2.968110000E2,6.647752141E1 +2.971300000E2,6.773248230E1 +2.974240000E2,6.289421429E1 +2.977060000E2,5.998905240E1 +2.979500000E2,6.016152671E1 +2.981940000E2,5.851705490E1 +2.984880000E2,6.506323043E1 +2.987430000E2,5.702053645E1 +2.990110000E2,4.890963733E1 +2.993040000E2,5.105737182E1 +2.995650000E2,4.950865545E1 +2.998150000E2,4.713536225E1 +3.000860000E2,6.170154569E1 +3.003780000E2,5.697995513E1 +3.006750000E2,6.496205179E1 +3.009180000E2,5.585602045E1 +3.012120000E2,5.317421587E1 +3.015130000E2,5.532213468E1 +3.017840000E2,5.371543715E1 +3.020520000E2,6.741141038E1 +3.023220000E2,6.638671809E1 +3.025730000E2,5.833940482E1 +3.028700000E2,6.272205104E1 +3.031230000E2,6.150676490E1 +3.034050000E2,6.571826996E1 +3.036710000E2,6.387001854E1 +3.039460000E2,5.704179120E1 +3.042380000E2,5.452420344E1 +3.044730000E2,6.911436343E1 +3.047670000E2,6.747337761E1 +3.050070000E2,6.642457947E1 +3.053010000E2,6.704052830E1 +3.055360000E2,6.335116163E1 +3.058350000E2,6.452879154E1 +3.061310000E2,6.588892290E1 +3.064460000E2,6.065604325E1 +3.066970000E2,5.884139521E1 +3.069890000E2,6.115548360E1 +3.072650000E2,5.474220631E1 +3.075290000E2,5.525228633E1 +3.077890000E2,5.546520153E1 +3.080280000E2,5.799541194E1 +3.083270000E2,5.467819740E1 +3.086250000E2,5.227747322E1 +3.089260000E2,5.802220937E1 +3.091970000E2,5.383690373E1 +3.095040000E2,5.794687305E1 +3.097810000E2,5.426386053E1 +3.100000000E2,5.745164866E1 +3.103300000E2,5.475501144E1 +3.106240000E2,5.154802151E1 +3.108750000E2,5.434380726E1 +3.111540000E2,5.533246388E1 +3.114150000E2,5.554218476E1 +3.116740000E2,5.375334275E1 +3.119200000E2,5.727216331E1 +3.121680000E2,5.235396651E1 +3.124720000E2,6.207307801E1 +3.127180000E2,6.488896117E1 +3.130530000E2,6.168970511E1 +3.133080000E2,6.010687101E1 +3.135950000E2,6.305386662E1 +3.138880000E2,6.214030252E1 +3.141410000E2,5.907513997E1 +3.143960000E2,6.064308138E1 +3.146480000E2,6.195321339E1 +3.148870000E2,6.088765310E1 +3.151830000E2,5.906360624E1 +3.154280000E2,5.864981040E1 +3.157360000E2,5.824424792E1 +3.159750000E2,5.826399021E1 +3.163740000E2,6.051726612E1 +3.166320000E2,6.011967909E1 +3.168940000E2,5.577110603E1 +3.172010000E2,5.372586587E1 +3.174460000E2,5.537091967E1 +3.176890000E2,5.504912063E1 +3.179320000E2,5.264203521E1 +3.182150000E2,5.344854544E1 +3.184600000E2,5.656777951E1 +3.187200000E2,5.398435402E1 +3.189820000E2,5.410695962E1 +3.192460000E2,5.344168860E1 +3.195780000E2,5.697626360E1 +3.198350000E2,6.073105615E1 +3.200880000E2,6.621432780E1 +3.203460000E2,6.597785722E1 +3.205980000E2,5.907542432E1 +3.208920000E2,5.702769809E1 +3.211760000E2,6.207459825E1 +3.214520000E2,5.921715282E1 +3.217010000E2,5.501368146E1 +3.220030000E2,5.927746858E1 +3.223090000E2,5.878714279E1 +3.226530000E2,6.209253703E1 +3.229180000E2,5.801419316E1 +3.231660000E2,6.150680788E1 +3.234110000E2,5.950436139E1 +3.236660000E2,5.694006868E1 +3.239890000E2,5.964691948E1 +3.242420000E2,6.322261269E1 +3.245070000E2,5.967413832E1 +3.247540000E2,5.743115651E1 +3.250010000E2,5.693057833E1 +3.252760000E2,5.076009335E1 +3.255600000E2,5.432440321E1 +3.258270000E2,5.728583073E1 +3.262160000E2,6.158050311E1 +3.264570000E2,5.788548067E1 +3.267330000E2,5.661485397E1 +3.270280000E2,5.698735139E1 +3.272870000E2,5.428158234E1 +3.275550000E2,5.401192370E1 +3.278320000E2,5.894424302E1 +3.281050000E2,5.279140275E1 +3.283850000E2,5.366788524E1 +3.286760000E2,5.569462346E1 +3.289750000E2,5.484501656E1 +3.292730000E2,5.654335493E1 +3.295550000E2,5.483429560E1 +3.298560000E2,5.516099131E1 +3.301720000E2,5.150081287E1 +3.304560000E2,5.126263973E1 +3.307930000E2,4.943715566E1 +3.310330000E2,5.297477083E1 +3.312800000E2,4.994759883E1 +3.316030000E2,5.283028939E1 +3.318860000E2,5.150402936E1 +3.321790000E2,5.777668868E1 +3.325470000E2,5.446937149E1 +3.328030000E2,5.754474494E1 +3.330410000E2,5.437750931E1 +3.333210000E2,5.378201308E1 +3.335760000E2,5.486825362E1 +3.338240000E2,5.338123539E1 +3.340700000E2,5.704649160E1 +3.343740000E2,5.576563429E1 +3.346640000E2,5.503590574E1 +3.349650000E2,5.539431503E1 +3.352080000E2,5.782097549E1 +3.355080000E2,5.260852375E1 +3.358690000E2,6.012616228E1 +3.361400000E2,5.534922411E1 +3.363810000E2,5.436765301E1 +3.366230000E2,5.007736554E1 +3.368850000E2,5.304270830E1 +3.371340000E2,5.106682022E1 +3.373960000E2,5.491262243E1 +3.376890000E2,5.891119644E1 +3.379320000E2,5.554676164E1 +3.382420000E2,5.491809401E1 +3.385700000E2,6.003743295E1 +3.389490000E2,5.964265847E1 +3.392140000E2,6.009419780E1 +3.394780000E2,5.950800538E1 +3.397810000E2,5.514081916E1 +3.400260000E2,5.654810222E1 +3.403230000E2,5.919098275E1 +3.405600000E2,5.937137097E1 +3.408650000E2,5.885711760E1 +3.411560000E2,6.122434193E1 +3.414060000E2,6.101494213E1 +3.416650000E2,5.685059098E1 +3.419710000E2,4.988163583E1 +3.423360000E2,5.097871962E1 +3.426300000E2,6.097968551E1 +3.429260000E2,5.246223058E1 +3.431760000E2,5.140448000E1 +3.434570000E2,5.162147831E1 +3.436910000E2,5.437509469E1 +3.439650000E2,5.588289675E1 +3.442010000E2,5.342482218E1 +3.444930000E2,5.621155564E1 +3.447310000E2,5.753713233E1 +3.450340000E2,5.873821374E1 +3.453240000E2,5.674648484E1 +3.455770000E2,5.843857274E1 +3.458770000E2,6.170678128E1 +3.461770000E2,5.848319050E1 +3.464240000E2,5.996271814E1 +3.467290000E2,5.583139448E1 +3.470000000E2,5.558324990E1 +3.472360000E2,5.638821787E1 +3.474880000E2,6.015129432E1 +3.477550000E2,6.074195357E1 +3.480530000E2,6.258101891E1 +3.483260000E2,6.280209300E1 +3.486840000E2,5.935598721E1 +3.489370000E2,6.423635683E1 +3.492060000E2,7.026891453E1 +3.495130000E2,5.477771858E1 +3.498240000E2,6.143080763E1 +3.500700000E2,6.077206860E1 +3.503130000E2,5.816670512E1 +3.506030000E2,6.220374728E1 +3.509040000E2,6.435510927E1 +3.511560000E2,6.387906049E1 +3.514240000E2,6.324188625E1 +3.517710000E2,6.217871174E1 +3.520510000E2,6.349767138E1 +3.523000000E2,5.947763114E1 +3.525840000E2,5.623947938E1 +3.528810000E2,5.940245648E1 +3.531830000E2,5.323006485E1 +3.534790000E2,4.756673680E1 +3.537830000E2,5.761743216E1 +3.540870000E2,5.701856444E1 +3.543720000E2,5.507707077E1 +3.546320000E2,5.561457107E1 +3.549330000E2,6.036785424E1 +3.552860000E2,5.818319920E1 +3.555390000E2,5.636477080E1 +3.557840000E2,5.686236286E1 +3.560330000E2,6.137502104E1 +3.563290000E2,6.039421004E1 +3.565710000E2,5.873926214E1 +3.568160000E2,5.984737812E1 +3.570890000E2,5.898549785E1 +3.573200000E2,5.804358229E1 +3.576080000E2,5.178825198E1 +3.578380000E2,5.333798630E1 +3.581470000E2,5.663121054E1 +3.584860000E2,5.705169894E1 +3.587470000E2,5.488627438E1 +3.590020000E2,5.493171173E1 +3.592590000E2,5.280801534E1 +3.595110000E2,5.919356657E1 +3.597710000E2,6.061921525E1 +3.600770000E2,5.781838960E1 +3.603810000E2,5.824405535E1 +3.606410000E2,5.734273072E1 +3.608930000E2,5.860073318E1 +3.611440000E2,5.158577335E1 +3.614110000E2,5.569804167E1 +3.617550000E2,5.732029627E1 +3.620530000E2,5.599725951E1 +3.623260000E2,5.427140428E1 +3.625700000E2,5.439119305E1 +3.628680000E2,5.768088704E1 +3.631160000E2,5.322266305E1 +3.634170000E2,5.611257515E1 +3.637150000E2,5.466283243E1 +3.639540000E2,5.648497192E1 +3.642520000E2,5.982456496E1 +3.644910000E2,5.683499776E1 +3.648080000E2,5.424977228E1 +3.650550000E2,5.261749952E1 +3.653010000E2,5.976464589E1 +3.655400000E2,5.630627545E1 +3.658370000E2,5.855663855E1 +3.660660000E2,5.839517218E1 +3.663050000E2,5.701336937E1 +3.666100000E2,6.057417753E1 +3.668530000E2,5.660058929E1 +3.671060000E2,5.360906173E1 +3.673270000E2,5.766761713E1 +3.676020000E2,5.473947199E1 +3.679270000E2,5.730791892E1 +3.681990000E2,5.368134624E1 +3.685210000E2,5.122725302E1 +3.688180000E2,5.413949330E1 +3.690720000E2,5.953240184E1 +3.693650000E2,5.834363401E1 +3.696110000E2,4.952962201E1 +3.698620000E2,6.082605721E1 +3.701240000E2,5.541205242E1 +3.703840000E2,5.595936781E1 +3.706570000E2,5.751180267E1 +3.709050000E2,5.510413826E1 +3.712530000E2,5.236304209E1 +3.715330000E2,5.429686706E1 +3.717680000E2,5.365135821E1 +3.720680000E2,5.442146139E1 +3.723070000E2,5.193301537E1 +3.726070000E2,5.573089397E1 +3.728540000E2,5.084704353E1 +3.731070000E2,5.244752708E1 +3.734250000E2,5.501438711E1 +3.737160000E2,5.701937821E1 +3.739830000E2,5.913008265E1 +3.743030000E2,6.329763996E1 +3.745490000E2,5.828010903E1 +3.748110000E2,5.514928454E1 +3.750560000E2,5.535724603E1 +3.753250000E2,6.062318511E1 +3.756820000E2,5.853801057E1 +3.759720000E2,6.218740595E1 +3.762560000E2,6.130322227E1 +3.764780000E2,5.705598438E1 +3.767430000E2,5.675025411E1 +3.770350000E2,5.562309411E1 +3.773330000E2,6.171478403E1 +3.776660000E2,5.752069737E1 +3.779640000E2,5.869913239E1 +3.782130000E2,5.802158707E1 +3.785030000E2,5.920699755E1 +3.787580000E2,5.984700757E1 +3.790120000E2,5.874214142E1 +3.792820000E2,5.792329599E1 +3.795460000E2,6.240429581E1 +3.798520000E2,5.924961400E1 +3.800960000E2,5.655548581E1 +3.803510000E2,5.997047167E1 +3.806590000E2,5.894207932E1 +3.810310000E2,5.556916558E1 +3.813250000E2,5.709965860E1 +3.815810000E2,5.724657649E1 +3.818690000E2,5.634885250E1 +3.821660000E2,5.381597934E1 +3.824070000E2,5.409431797E1 +3.827020000E2,5.558304395E1 +3.829400000E2,5.836087965E1 +3.832380000E2,5.621848827E1 +3.834740000E2,5.756105430E1 +3.837670000E2,5.972981317E1 +3.840620000E2,6.110722903E1 +3.842970000E2,6.011338906E1 +3.846120000E2,6.632548976E1 +3.849300000E2,5.632542095E1 +3.852340000E2,5.660090160E1 +3.854760000E2,5.637042997E1 +3.857700000E2,6.483820819E1 +3.860160000E2,6.294386681E1 +3.862760000E2,6.248693097E1 +3.865740000E2,5.966646580E1 +3.868130000E2,5.884596060E1 +3.871230000E2,6.069045984E1 +3.874660000E2,5.535227762E1 +3.877260000E2,5.453589064E1 +3.879920000E2,5.803286513E1 +3.882920000E2,6.338575111E1 +3.885370000E2,6.297665471E1 +3.888380000E2,6.078963895E1 +3.890870000E2,6.078711186E1 +3.893350000E2,5.918580133E1 +3.896040000E2,5.645003340E1 +3.899070000E2,5.868887980E1 +3.901560000E2,5.816727924E1 +3.904840000E2,5.908711574E1 +3.907830000E2,5.165109059E1 +3.910410000E2,5.747977046E1 +3.913230000E2,5.600926578E1 +3.916170000E2,5.743239537E1 +3.918580000E2,5.999528635E1 +3.921650000E2,5.924448814E1 +3.924670000E2,6.347749271E1 +3.927590000E2,6.285842009E1 +3.929960000E2,6.439104552E1 +3.933010000E2,6.092208558E1 +3.935450000E2,5.889760176E1 +3.939100000E2,5.798312040E1 +3.941770000E2,5.909426563E1 +3.944250000E2,5.971090911E1 +3.946810000E2,5.379436409E1 +3.949270000E2,5.134339741E1 +3.951700000E2,5.739586279E1 +3.954270000E2,5.255911571E1 +3.956850000E2,5.149310319E1 +3.959500000E2,5.723685944E1 +3.962270000E2,5.622087783E1 +3.964720000E2,6.119098643E1 +3.967310000E2,6.249797436E1 +3.970320000E2,5.838309249E1 +3.973440000E2,5.720898847E1 +3.976100000E2,5.357982700E1 +3.978600000E2,5.091452983E1 +3.981070000E2,4.781274510E1 +3.983520000E2,4.684320786E1 +3.986530000E2,4.867937405E1 +3.988970000E2,4.947454895E1 +3.991740000E2,4.941937240E1 +3.994180000E2,5.206925818E1 +3.997200000E2,5.099596962E1 +3.999720000E2,5.059119317E1 +4.002350000E2,4.980275756E1 +4.004940000E2,5.514017077E1 +4.008060000E2,5.354499430E1 +4.011150000E2,5.377825353E1 +4.013980000E2,5.657928040E1 +4.016460000E2,6.437756844E1 +4.019070000E2,6.072529486E1 +4.021970000E2,5.876291143E1 +4.024430000E2,6.118567430E1 +4.027460000E2,5.925186578E1 +4.030590000E2,5.727531678E1 +4.033610000E2,6.211123432E1 +4.036680000E2,6.041950332E1 +4.039230000E2,6.161200416E1 +4.041780000E2,6.047480336E1 +4.044620000E2,5.905442986E1 +4.047060000E2,5.729915709E1 +4.049630000E2,6.020933408E1 +4.052500000E2,5.845152603E1 +4.055600000E2,5.814304967E1 +4.058210000E2,5.866194002E1 +4.060640000E2,5.736420578E1 +4.063180000E2,6.107395805E1 +4.065790000E2,5.985269852E1 +4.069480000E2,5.745859610E1 +4.072050000E2,5.693680110E1 +4.074960000E2,6.165201185E1 +4.077470000E2,6.131132241E1 +4.079970000E2,5.824414723E1 +4.083050000E2,5.958451387E1 +4.085600000E2,5.739792126E1 +4.088150000E2,5.573389816E1 +4.090850000E2,5.530698039E1 +4.093810000E2,5.634371531E1 +4.096660000E2,5.880658089E1 +4.099920000E2,5.804298004E1 +4.102870000E2,5.688352401E1 +4.106310000E2,5.573115839E1 +4.109280000E2,5.368053116E1 +4.112180000E2,5.474384188E1 +4.114650000E2,5.380195893E1 +4.117660000E2,5.718608674E1 +4.120140000E2,5.703743686E1 +4.122910000E2,5.985228158E1 +4.125620000E2,6.278694860E1 +4.128210000E2,5.839550633E1 +4.130600000E2,6.029373556E1 +4.133710000E2,5.711050636E1 +4.136150000E2,5.200468588E1 +4.138820000E2,5.769230508E1 +4.141370000E2,5.333759168E1 +4.143860000E2,5.632377961E1 +4.146570000E2,5.647744894E1 +4.149040000E2,5.667945226E1 +4.151840000E2,5.669404445E1 +4.154420000E2,6.072374556E1 +4.157420000E2,5.606444578E1 +4.159850000E2,5.623596320E1 +4.162830000E2,5.264542492E1 +4.165340000E2,5.359803767E1 +4.168600000E2,5.691340897E1 +4.171060000E2,5.636326143E1 +4.173490000E2,6.276141082E1 +4.176080000E2,6.197471417E1 +4.178580000E2,5.777170976E1 +4.181050000E2,5.407671770E1 +4.183760000E2,4.795453020E1 +4.186580000E2,5.871005652E1 +4.188870000E2,6.069158080E1 +4.191320000E2,6.112379328E1 +4.193750000E2,5.584116633E1 +4.196280000E2,6.302854070E1 +4.199610000E2,6.640457067E1 +4.202240000E2,6.337314603E1 +4.205160000E2,5.904470105E1 +4.208200000E2,5.799078909E1 +4.210810000E2,5.975635789E1 +4.213260000E2,6.334088587E1 +4.215900000E2,5.849627934E1 +4.218550000E2,5.894070219E1 +4.221030000E2,5.961371776E1 +4.223550000E2,5.281830949E1 +4.225970000E2,4.892580508E1 +4.229130000E2,5.950646935E1 +4.232610000E2,6.303011111E1 +4.235630000E2,6.030515180E1 +4.238060000E2,5.832387195E1 +4.240560000E2,6.126571743E1 +4.243280000E2,5.961805347E1 +4.245710000E2,5.916464366E1 +4.248300000E2,6.404431780E1 +4.251020000E2,6.161392817E1 +4.253630000E2,6.303875005E1 +4.256110000E2,6.294329578E1 +4.258560000E2,6.495739223E1 +4.261620000E2,6.352748415E1 +4.265140000E2,6.360144813E1 +4.267650000E2,6.320185268E1 +4.270250000E2,6.598206760E1 +4.272910000E2,5.736158392E1 +4.275300000E2,5.632655800E1 +4.277760000E2,5.626186588E1 +4.280650000E2,5.992298879E1 +4.283460000E2,5.976814640E1 +4.285960000E2,5.617047451E1 +4.288540000E2,5.410240194E1 +4.291290000E2,5.524345530E1 +4.293550000E2,5.025485629E1 +4.297050000E2,5.094849624E1 +4.299600000E2,5.349595208E1 +4.302230000E2,5.668766668E1 +4.304690000E2,5.470073040E1 +4.307330000E2,5.808421323E1 +4.310240000E2,5.815977776E1 +4.312740000E2,5.751031291E1 +4.315190000E2,6.045600028E1 +4.318300000E2,5.967896339E1 +4.320980000E2,5.746835753E1 +4.324020000E2,5.874054152E1 +4.327010000E2,5.770096959E1 +4.330460000E2,5.851412717E1 +4.333220000E2,5.970473393E1 +4.335930000E2,6.024030776E1 +4.338530000E2,5.564089573E1 +4.341340000E2,5.328000065E1 +4.343790000E2,5.522789934E1 +4.346930000E2,5.271905966E1 +4.349910000E2,5.685384424E1 +4.352400000E2,5.751176106E1 +4.355350000E2,5.654290580E1 +4.357760000E2,5.976937629E1 +4.360780000E2,5.445311615E1 +4.363520000E2,5.460006243E1 +4.366010000E2,5.402958946E1 +4.369120000E2,5.611325616E1 +4.371660000E2,5.675575065E1 +4.374120000E2,5.605818704E1 +4.377070000E2,5.614720111E1 +4.379470000E2,5.596280974E1 +4.382450000E2,5.764305460E1 +4.384820000E2,6.015340826E1 +4.387240000E2,6.073594369E1 +4.390310000E2,5.846982437E1 +4.393110000E2,5.837342754E1 +4.396160000E2,5.758988397E1 +4.398810000E2,5.375393273E1 +4.401700000E2,5.590416510E1 +4.404180000E2,5.649267014E1 +4.406570000E2,5.809884175E1 +4.409200000E2,5.934788425E1 +4.411750000E2,5.883690392E1 +4.414270000E2,5.465512306E1 +4.416780000E2,5.456039720E1 +4.419260000E2,6.053551690E1 +4.422020000E2,5.446896121E1 +4.425270000E2,5.304300238E1 +4.428480000E2,5.413537656E1 +4.431230000E2,5.590535088E1 +4.433740000E2,5.516889265E1 +4.436180000E2,5.375803139E1 +4.439250000E2,5.440731706E1 +4.441670000E2,5.378894171E1 +4.444170000E2,5.676009311E1 +4.447160000E2,5.433224316E1 +4.449620000E2,5.431777666E1 +4.452100000E2,5.220353562E1 +4.454560000E2,5.525232641E1 +4.456950000E2,5.348687858E1 +4.459900000E2,5.571408478E1 +4.462320000E2,5.590054486E1 +4.464840000E2,5.627503595E1 +4.467390000E2,5.824548232E1 +4.469910000E2,5.637049423E1 +4.472460000E2,5.754096885E1 +4.474930000E2,5.335865942E1 +4.477890000E2,5.765888938E1 +4.480780000E2,6.102087464E1 +4.483520000E2,6.006145593E1 +4.486510000E2,5.685958774E1 +4.489610000E2,5.748149351E1 +4.492370000E2,5.709623916E1 +4.495040000E2,5.821496279E1 +4.497570000E2,5.970222946E1 +4.500030000E2,5.750976802E1 +4.502380000E2,5.796549321E1 +4.505370000E2,5.665777454E1 +4.508330000E2,5.605038109E1 +4.510750000E2,5.504306522E1 +4.513230000E2,5.112487870E1 +4.515900000E2,5.559150914E1 +4.518300000E2,5.656933458E1 +4.520810000E2,6.082180135E1 +4.524470000E2,5.774965281E1 +4.527120000E2,5.847728207E1 +4.529730000E2,5.711434047E1 +4.532810000E2,5.503285278E1 +4.535670000E2,5.614330822E1 +4.538610000E2,6.211492489E1 +4.541040000E2,6.003078695E1 +4.543760000E2,5.766611466E1 +4.546280000E2,5.912518267E1 +4.549300000E2,5.969489895E1 +4.551760000E2,5.509558621E1 +4.554320000E2,5.963291683E1 +4.556950000E2,6.194656842E1 +4.559980000E2,6.032793642E1 +4.562390000E2,5.874022110E1 +4.565060000E2,6.016749735E1 +4.567480000E2,5.985596964E1 +4.570070000E2,5.588678859E1 +4.572660000E2,5.541792762E1 +4.575660000E2,4.969164404E1 +4.578050000E2,4.976271573E1 +4.581060000E2,5.634137812E1 +4.583500000E2,5.321783082E1 +4.586280000E2,5.816393976E1 +4.588870000E2,5.817726916E1 +4.591860000E2,5.398220140E1 +4.594690000E2,5.572842498E1 +4.597270000E2,5.759574297E1 +4.600290000E2,5.492384706E1 +4.602790000E2,5.570826682E1 +4.605780000E2,5.619496661E1 +4.608690000E2,5.993990435E1 +4.611730000E2,6.185390750E1 +4.614300000E2,6.125031183E1 +4.617390000E2,6.047450440E1 +4.621070000E2,5.913093195E1 +4.623500000E2,6.032535990E1 +4.626490000E2,5.803726699E1 +4.628910000E2,5.968748294E1 +4.631850000E2,5.792594347E1 +4.634330000E2,5.623910190E1 +4.636850000E2,6.026318401E1 +4.639240000E2,6.002593060E1 +4.641990000E2,5.694813724E1 +4.644200000E2,5.456998819E1 +4.646660000E2,5.683591124E1 +4.649070000E2,5.893829862E1 +4.652630000E2,5.637983039E1 +4.655160000E2,5.571226470E1 +4.657720000E2,5.582065666E1 +4.660510000E2,5.436378979E1 +4.663550000E2,5.697364508E1 +4.666350000E2,5.716664070E1 +4.668800000E2,6.098104772E1 +4.671260000E2,5.932872997E1 +4.673960000E2,5.573089336E1 +4.676430000E2,5.791664461E1 +4.678890000E2,5.589855895E1 +4.681490000E2,6.359324433E1 +4.685010000E2,5.902079393E1 +4.687870000E2,6.085500324E1 +4.690180000E2,6.401116813E1 +4.693190000E2,6.157634911E1 +4.695830000E2,6.068297160E1 +4.698370000E2,5.867738322E1 +4.701080000E2,6.069776659E1 +4.703530000E2,5.904983802E1 +4.706060000E2,5.642725313E1 +4.708480000E2,5.600286970E1 +4.711080000E2,5.678564623E1 +4.714020000E2,5.139543439E1 +4.717220000E2,5.924511995E1 +4.720300000E2,5.309180697E1 +4.722790000E2,5.295961103E1 +4.725820000E2,5.448425692E1 +4.728350000E2,5.346047841E1 +4.731210000E2,5.563518239E1 +4.733630000E2,5.630991562E1 +4.736070000E2,5.519344442E1 +4.738520000E2,5.696356709E1 +4.741150000E2,5.721588368E1 +4.743810000E2,5.556082681E1 +4.746430000E2,5.453201409E1 +4.749610000E2,5.621559396E1 +4.752460000E2,6.170975330E1 +4.755640000E2,6.352753975E1 +4.758660000E2,5.818774343E1 +4.761780000E2,6.177058435E1 +4.764630000E2,5.829511769E1 +4.766910000E2,5.658732029E1 +4.769520000E2,6.006113158E1 +4.772530000E2,6.022385702E1 +4.775200000E2,5.965858240E1 +4.778410000E2,5.970326758E1 +4.780960000E2,5.911597661E1 +4.783440000E2,5.656338446E1 +4.786020000E2,5.723922467E1 +4.788680000E2,5.700163516E1 +4.791490000E2,6.083416080E1 +4.794510000E2,5.899425763E1 +4.797630000E2,5.820674449E1 +4.800620000E2,5.648898879E1 +4.803380000E2,5.465743937E1 +4.806090000E2,5.006847009E1 +4.809050000E2,5.870050130E1 +4.811580000E2,5.878066343E1 +4.814060000E2,5.929414686E1 +4.817070000E2,5.758425183E1 +4.819760000E2,5.151398214E1 +4.822410000E2,5.772956896E1 +4.824880000E2,5.913153701E1 +4.827710000E2,5.814746383E1 +4.830140000E2,6.018356701E1 +4.832870000E2,5.985078792E1 +4.835070000E2,6.081307149E1 +4.837500000E2,5.810932132E1 +4.840440000E2,5.700769218E1 +4.842880000E2,5.815119989E1 +4.845920000E2,5.595850943E1 +4.849330000E2,5.891167795E1 +4.851960000E2,5.413833723E1 +4.854760000E2,6.184122004E1 +4.857700000E2,6.074653742E1 +4.860130000E2,6.033024099E1 +4.862530000E2,5.218562994E1 +4.865560000E2,5.902882093E1 +4.868150000E2,6.397338635E1 +4.870790000E2,6.543155406E1 +4.873440000E2,6.181389827E1 +4.876070000E2,6.381240883E1 +4.878770000E2,6.121521197E1 +4.882210000E2,5.780293585E1 +4.884640000E2,5.941826112E1 +4.887100000E2,6.118399944E1 +4.889830000E2,6.000089150E1 +4.892940000E2,5.873163787E1 +4.895350000E2,5.943116280E1 +4.897770000E2,5.867927357E1 +4.900230000E2,6.190584219E1 +4.903270000E2,6.313044892E1 +4.905550000E2,6.096660510E1 +4.907970000E2,5.773464228E1 +4.911090000E2,5.720144266E1 +4.914750000E2,5.797465536E1 +4.917410000E2,6.063197812E1 +4.920040000E2,5.799562897E1 +4.922950000E2,5.391853563E1 +4.925940000E2,6.053973121E1 +4.928320000E2,5.781822977E1 +4.931250000E2,6.541242849E1 +4.933660000E2,6.151252976E1 +4.936620000E2,5.962569242E1 +4.939140000E2,6.114162989E1 +4.941750000E2,6.074296596E1 +4.944160000E2,5.738425867E1 +4.947510000E2,6.084173002E1 +4.950140000E2,5.911448476E1 +4.953100000E2,6.076832164E1 +4.955530000E2,6.357047625E1 +4.958480000E2,6.344590866E1 +4.960850000E2,6.154350148E1 +4.963870000E2,5.815666478E1 +4.966770000E2,5.862350251E1 +4.969720000E2,5.162851816E1 +4.972640000E2,5.887916548E1 +4.975020000E2,6.130693279E1 +4.977480000E2,6.164914583E1 +4.980300000E2,5.689153252E1 +4.983240000E2,6.054571109E1 +4.985610000E2,5.779234792E1 +4.987980000E2,6.281334084E1 +4.991290000E2,6.074883772E1 +4.994230000E2,6.344972933E1 +4.996620000E2,6.040546490E1 +4.999570000E2,6.143019571E1 +5.002020000E2,6.117826214E1 +5.004980000E2,6.217883653E1 +5.007380000E2,6.294102819E1 +5.010930000E2,6.516475449E1 +5.013550000E2,6.119184016E1 +5.016670000E2,6.096554209E1 +5.019390000E2,6.197647057E1 +5.022530000E2,6.186754720E1 +5.025630000E2,5.954982776E1 +5.028510000E2,6.115486405E1 +5.031440000E2,6.348254173E1 +5.033820000E2,5.960570527E1 +5.036780000E2,5.977682583E1 +5.039180000E2,5.709696054E1 +5.042580000E2,6.265263203E1 +5.045140000E2,6.166583393E1 +5.047590000E2,6.184451596E1 +5.050170000E2,6.196658471E1 +5.053150000E2,6.014630927E1 +5.055610000E2,6.055201466E1 +5.058690000E2,6.189129858E1 +5.062120000E2,6.557808579E1 +5.064770000E2,6.080176744E1 +5.067370000E2,6.164107472E1 +5.069870000E2,6.497302078E1 +5.072490000E2,6.320126990E1 +5.076210000E2,6.073801439E1 +5.078780000E2,5.612097300E1 +5.081420000E2,5.978501024E1 +5.084360000E2,6.061444996E1 +5.086860000E2,6.272142993E1 +5.089270000E2,6.250458760E1 +5.092250000E2,5.860749180E1 +5.094720000E2,6.368373725E1 +5.097760000E2,6.005985592E1 +5.100780000E2,5.959557057E1 +5.103410000E2,6.085764000E1 +5.106360000E2,6.210563273E1 +5.109960000E2,6.125336704E1 +5.112590000E2,5.627814405E1 +5.115470000E2,6.253958528E1 +5.118480000E2,6.261683940E1 +5.120990000E2,5.782347554E1 +5.123560000E2,6.181201679E1 +5.126370000E2,6.425542150E1 +5.129400000E2,6.148973489E1 +5.132300000E2,6.230215374E1 +5.134720000E2,6.332855968E1 +5.137620000E2,5.875203916E1 +5.140950000E2,6.043073123E1 +5.143340000E2,5.829778385E1 +5.146280000E2,6.530539120E1 +5.148660000E2,5.725439078E1 +5.151580000E2,6.255661351E1 +5.153960000E2,6.412193683E1 +5.156410000E2,6.315775814E1 +5.158840000E2,6.025521775E1 +5.161460000E2,5.892698587E1 +5.164080000E2,5.956507822E1 +5.166610000E2,6.162757540E1 +5.169960000E2,6.009082976E1 +5.173360000E2,5.999682475E1 +5.176380000E2,6.121463264E1 +5.178750000E2,5.929809726E1 +5.181460000E2,5.746668369E1 +5.183810000E2,5.919113180E1 +5.186360000E2,5.827917213E1 +5.189280000E2,5.902314388E1 +5.192310000E2,6.116063950E1 +5.195310000E2,6.026149556E1 +5.198180000E2,5.851929656E1 +5.200920000E2,5.750929671E1 +5.204160000E2,5.729942637E1 +5.207470000E2,5.472104161E1 +5.210390000E2,6.169397748E1 +5.213450000E2,6.081589597E1 +5.216480000E2,6.278728872E1 +5.219550000E2,6.266319096E1 +5.222160000E2,6.478840582E1 +5.224820000E2,6.255888661E1 +5.227330000E2,6.119451713E1 +5.229970000E2,6.244953097E1 +5.232800000E2,6.000703556E1 +5.236020000E2,5.885323025E1 +5.239510000E2,5.826073845E1 +5.242570000E2,5.807287072E1 +5.245200000E2,5.931641295E1 +5.247800000E2,5.775994158E1 +5.250310000E2,6.167249992E1 +5.253010000E2,6.027694641E1 +5.255430000E2,6.329659774E1 +5.258240000E2,6.254377160E1 +5.261330000E2,6.489975363E1 +5.263840000E2,5.999325642E1 +5.266440000E2,5.885077446E1 +5.268920000E2,6.439829299E1 +5.272450000E2,6.165608373E1 +5.275110000E2,5.418048629E1 +5.277700000E2,5.656005066E1 +5.280170000E2,6.215252288E1 +5.283170000E2,5.743407158E1 +5.285650000E2,5.831214783E1 +5.288200000E2,6.066735547E1 +5.290820000E2,5.994603081E1 +5.293240000E2,5.951550591E1 +5.295810000E2,6.264700953E1 +5.298380000E2,5.736628274E1 +5.301360000E2,5.590406638E1 +5.304530000E2,6.041033291E1 +5.307000000E2,5.968691140E1 +5.309950000E2,5.730835182E1 +5.312390000E2,5.823026311E1 +5.315470000E2,5.871167442E1 +5.318430000E2,5.990765833E1 +5.321400000E2,6.387020611E1 +5.324510000E2,6.077699448E1 +5.326980000E2,5.895294298E1 +5.329820000E2,6.041997988E1 +5.333050000E2,5.806877757E1 +5.336110000E2,5.682362418E1 +5.340220000E2,5.915478638E1 +5.342790000E2,6.110946170E1 +5.345430000E2,5.735857105E1 +5.348060000E2,5.684014045E1 +5.350480000E2,6.043627860E1 +5.353500000E2,5.982929159E1 +5.356290000E2,5.986217314E1 +5.358770000E2,5.677131614E1 +5.361310000E2,5.763848566E1 +5.363810000E2,6.142463983E1 +5.366730000E2,5.634211854E1 +5.369290000E2,5.547608220E1 +5.372430000E2,5.920768747E1 +5.375170000E2,6.113406656E1 +5.377700000E2,6.208964505E1 +5.380710000E2,6.100572025E1 +5.383260000E2,6.352283467E1 +5.386320000E2,5.898993907E1 +5.389570000E2,5.503782412E1 +5.392560000E2,5.663453376E1 +5.395360000E2,6.406828344E1 +5.398060000E2,5.890955595E1 +5.400700000E2,6.046868424E1 +5.403380000E2,5.979639772E1 +5.406170000E2,5.838685694E1 +5.409120000E2,5.933573087E1 +5.411500000E2,5.970536072E1 +5.414430000E2,5.461931777E1 +5.417380000E2,5.891969668E1 +5.419780000E2,6.086182172E1 +5.422730000E2,5.706230292E1 +5.425150000E2,6.002937875E1 +5.428150000E2,5.733734968E1 +5.430520000E2,5.791730719E1 +5.433430000E2,5.451667439E1 +5.436740000E2,5.601232928E1 +5.439430000E2,6.067749331E1 +5.441960000E2,6.044443396E1 +5.445120000E2,6.332642539E1 +5.448320000E2,6.369907597E1 +5.451010000E2,6.327412880E1 +5.453640000E2,6.380509737E1 +5.456090000E2,6.199528902E1 +5.458550000E2,5.905332967E1 +5.461530000E2,5.748064798E1 +5.463920000E2,5.793139247E1 +5.466900000E2,5.931551966E1 +5.470480000E2,6.345498755E1 +5.473610000E2,5.881486603E1 +5.476220000E2,5.928200098E1 +5.478810000E2,5.577309321E1 +5.481470000E2,5.875325885E1 +5.483980000E2,6.007409743E1 +5.486490000E2,6.070612531E1 +5.488940000E2,5.934549940E1 +5.491520000E2,6.170511636E1 +5.494020000E2,6.376886521E1 +5.497010000E2,6.406587518E1 +5.499360000E2,6.365684538E1 +5.503130000E2,6.009406633E1 +5.505850000E2,6.014270409E1 +5.508500000E2,5.879153887E1 +5.511470000E2,5.883782525E1 +5.513760000E2,5.773432280E1 +5.516350000E2,5.966648889E1 +5.518940000E2,5.472606108E1 +5.521930000E2,5.682429497E1 +5.524670000E2,5.619181968E1 +5.527770000E2,5.997719307E1 +5.530460000E2,5.879335465E1 +5.533410000E2,5.983416170E1 +5.537120000E2,5.957041909E1 +5.539420000E2,5.952828793E1 +5.542510000E2,5.971645274E1 +5.545000000E2,6.419337448E1 +5.547730000E2,6.634363344E1 +5.550770000E2,6.285856457E1 +5.553760000E2,5.654671197E1 +5.556440000E2,5.530754918E1 +5.558640000E2,5.889159880E1 +5.561110000E2,6.213947417E1 +5.563520000E2,6.860243311E1 +5.566480000E2,6.647018679E1 +5.569110000E2,6.420604516E1 +5.571650000E2,6.703462967E1 +5.574140000E2,6.648783593E1 +5.576540000E2,6.634001782E1 +5.579350000E2,6.293734135E1 +5.581770000E2,6.205918741E1 +5.584760000E2,5.247262167E1 +5.587220000E2,5.338734169E1 +5.589670000E2,5.662276325E1 +5.592110000E2,5.533465633E1 +5.595080000E2,5.854271946E1 +5.597740000E2,5.660649413E1 +5.600260000E2,6.333844075E1 +5.602860000E2,6.255943536E1 +5.605830000E2,5.392304486E1 +5.608700000E2,5.760897506E1 +5.611660000E2,5.713086887E1 +5.614070000E2,5.720157535E1 +5.617060000E2,5.026592539E1 +5.619510000E2,5.140995344E1 +5.621950000E2,5.663266073E1 +5.624370000E2,5.202695689E1 +5.627360000E2,6.084568668E1 +5.630550000E2,6.179643015E1 +5.632960000E2,5.833759539E1 +5.635420000E2,5.518782498E1 +5.638400000E2,6.578433315E1 +5.640880000E2,5.706187099E1 +5.643850000E2,5.456571992E1 +5.646300000E2,5.536479424E1 +5.649270000E2,5.930541070E1 +5.651540000E2,6.023199994E1 +5.653960000E2,5.612469871E1 +5.656980000E2,5.462007842E1 +5.659410000E2,5.278259804E1 +5.662890000E2,6.064478329E1 +5.666290000E2,5.682964802E1 +5.669030000E2,5.787828261E1 +5.671980000E2,5.712595091E1 +5.674890000E2,5.729764361E1 +5.677450000E2,5.241850056E1 +5.679980000E2,5.377155525E1 +5.682380000E2,5.485418547E1 +5.684830000E2,5.503746434E1 +5.687810000E2,5.398954643E1 +5.690230000E2,5.401913169E1 +5.693270000E2,5.953896215E1 +5.695680000E2,5.626247467E1 +5.698640000E2,6.040491706E1 +5.701050000E2,5.781813181E1 +5.703620000E2,5.733744349E1 +5.706600000E2,5.669032177E1 +5.709140000E2,5.453731954E1 +5.711580000E2,6.235364316E1 +5.714280000E2,5.958044055E1 +5.716860000E2,5.875696014E1 +5.719750000E2,5.570465139E1 +5.722310000E2,4.865236791E1 +5.725580000E2,5.257975627E1 +5.727900000E2,4.975389893E1 +5.730890000E2,5.658508958E1 +5.733660000E2,5.542284648E1 +5.735960000E2,5.536199936E1 +5.738990000E2,5.813474916E1 +5.741540000E2,5.417788207E1 +5.744370000E2,5.704170918E1 +5.746710000E2,5.736828455E1 +5.749280000E2,5.450874678E1 +5.751790000E2,5.610950442E1 +5.754890000E2,5.919887582E1 +5.758690000E2,5.780639378E1 +5.761700000E2,5.709220641E1 +5.764190000E2,5.815359781E1 +5.767060000E2,5.734155824E1 +5.769500000E2,5.925323086E1 +5.772430000E2,6.084767221E1 +5.775370000E2,5.852024889E1 +5.777780000E2,5.822649765E1 +5.780770000E2,5.829089322E1 +5.783770000E2,5.915481192E1 +5.786460000E2,5.996430642E1 +5.789780000E2,6.016421415E1 +5.792520000E2,6.221052482E1 +5.795090000E2,5.533993101E1 +5.798230000E2,6.537257407E1 +5.801220000E2,6.068836920E1 +5.803770000E2,5.728273812E1 +5.806510000E2,5.648369901E1 +5.809070000E2,5.397363349E1 +5.811690000E2,5.755294689E1 +5.814510000E2,5.957149991E1 +5.816900000E2,5.963092636E1 +5.820650000E2,6.778811076E1 +5.823240000E2,6.247529404E1 +5.825840000E2,6.073516327E1 +5.828380000E2,6.039356998E1 +5.830970000E2,5.764504824E1 +5.833990000E2,6.041396176E1 +5.836470000E2,6.355942860E1 +5.838990000E2,5.785560268E1 +5.841390000E2,6.060017525E1 +5.844440000E2,6.032069521E1 +5.847010000E2,5.760371100E1 +5.849440000E2,5.491620812E1 +5.851990000E2,5.957978671E1 +5.855370000E2,6.103184032E1 +5.857970000E2,5.896875350E1 +5.861120000E2,6.008190546E1 +5.863990000E2,5.687378544E1 +5.866450000E2,5.874294643E1 +5.869410000E2,5.870806017E1 +5.871860000E2,5.809143232E1 +5.874740000E2,5.847828699E1 +5.877850000E2,5.846232778E1 +5.880500000E2,5.755876921E1 +5.883650000E2,5.609032758E1 +5.887050000E2,5.685283394E1 +5.889730000E2,5.945975832E1 +5.892710000E2,6.114741701E1 +5.895110000E2,6.316132147E1 +5.898100000E2,6.715155367E1 +5.900480000E2,6.367866992E1 +5.903470000E2,5.131949120E1 +5.905900000E2,5.646494575E1 +5.908880000E2,6.096218752E1 +5.911270000E2,6.089171796E1 +5.913720000E2,6.319522071E1 +5.916410000E2,6.016553529E1 +5.920560000E2,5.915189166E1 +5.923330000E2,5.776862186E1 +5.925640000E2,5.840366445E1 +5.927890000E2,5.978914182E1 +5.930440000E2,6.058699711E1 +5.932650000E2,6.012895387E1 +5.935140000E2,6.295025578E1 +5.937520000E2,6.280196012E1 +5.940110000E2,6.194014009E1 +5.943340000E2,6.483906300E1 +5.945870000E2,5.918257578E1 +5.948380000E2,5.620333930E1 +5.951900000E2,6.323403421E1 +5.954240000E2,6.183177681E1 +5.956620000E2,6.120300936E1 +5.959650000E2,5.836925111E1 +5.961890000E2,6.106023171E1 +5.964920000E2,6.153658324E1 +5.967310000E2,6.490772593E1 +5.969960000E2,6.274228676E1 +5.972520000E2,6.139008510E1 +5.975050000E2,6.281232833E1 +5.978180000E2,6.254982632E1 +5.980890000E2,6.205794184E1 +5.983900000E2,6.438771503E1 +5.986230000E2,6.052772463E1 +5.988520000E2,6.375966703E1 +5.991380000E2,5.869985301E1 +5.993860000E2,6.050357712E1 +5.996630000E2,5.547835745E1 +5.999280000E2,5.400421666E1 +6.001960000E2,5.668252186E1 +6.004880000E2,6.001970320E1 +6.007680000E2,6.056987745E1 +6.010550000E2,6.461211967E1 +6.014090000E2,6.399838195E1 +6.016840000E2,5.485596323E1 +6.019450000E2,5.731519087E1 +6.022080000E2,6.691878914E1 +6.024720000E2,6.479201876E1 +6.027260000E2,6.412847214E1 +6.029760000E2,6.025795068E1 +6.032190000E2,6.098133491E1 +6.035120000E2,5.689387521E1 +6.038040000E2,5.639928101E1 +6.041550000E2,5.328068252E1 +6.044370000E2,5.639829798E1 +6.046770000E2,5.892330560E1 +6.049510000E2,5.315638413E1 +6.051900000E2,5.740260439E1 +6.054620000E2,5.339391440E1 +6.057500000E2,5.310371918E1 +6.060710000E2,5.460903952E1 +6.063050000E2,5.407304270E1 +6.065540000E2,5.870790541E1 +6.068060000E2,5.576782972E1 +6.070790000E2,5.976954147E1 +6.074640000E2,6.181180531E1 +6.077240000E2,6.194364733E1 +6.080150000E2,6.794225297E1 +6.082590000E2,6.236601361E1 +6.085470000E2,6.002700779E1 +6.088450000E2,5.971993236E1 +6.090930000E2,5.954735434E1 +6.093460000E2,5.907202371E1 +6.095920000E2,5.993658420E1 +6.098910000E2,5.530332259E1 +6.101850000E2,5.531802018E1 +6.104220000E2,5.376885939E1 +6.107780000E2,5.735355871E1 +6.110210000E2,5.868610156E1 +6.112710000E2,5.312122754E1 +6.115670000E2,5.745102631E1 +6.118550000E2,5.535536940E1 +6.121540000E2,5.088728731E1 +6.123960000E2,5.266907791E1 +6.126860000E2,5.386493253E1 +6.130010000E2,5.670623073E1 +6.132810000E2,5.563278655E1 +6.135150000E2,5.267172926E1 +6.138540000E2,5.386148816E1 +6.141880000E2,5.716468210E1 +6.144880000E2,5.526918781E1 +6.147190000E2,5.659553915E1 +6.149610000E2,5.648341007E1 +6.152730000E2,5.711745846E1 +6.155520000E2,5.918800114E1 +6.158010000E2,5.642548609E1 +6.161000000E2,5.635896926E1 +6.163480000E2,5.899225051E1 +6.166180000E2,5.374343244E1 +6.168690000E2,4.891042404E1 +6.172050000E2,5.065835680E1 +6.174560000E2,5.685264653E1 +6.177340000E2,5.429270039E1 +6.179930000E2,5.499548313E1 +6.182940000E2,5.407177565E1 +6.185300000E2,5.356533799E1 +6.188300000E2,5.378190643E1 +6.191140000E2,5.189020817E1 +6.193870000E2,5.046647494E1 +6.196450000E2,5.501107364E1 +6.198910000E2,5.798814538E1 +6.201660000E2,5.360844474E1 +6.205080000E2,5.353935610E1 +6.208080000E2,5.620189936E1 +6.210820000E2,6.216008765E1 +6.213360000E2,5.767015155E1 +6.216520000E2,6.210101060E1 +6.219320000E2,5.928042926E1 +6.221800000E2,6.394496555E1 +6.224980000E2,5.872213561E1 +6.227430000E2,5.927091626E1 +6.230010000E2,5.235592166E1 +6.232430000E2,6.313120608E1 +6.235470000E2,6.005436888E1 +6.238480000E2,5.999836557E1 +6.240930000E2,5.879748041E1 +6.243920000E2,5.978277378E1 +6.246440000E2,6.050724590E1 +6.249480000E2,6.282777276E1 +6.252520000E2,6.080897043E1 +6.255640000E2,5.889462949E1 +6.258270000E2,5.550476615E1 +6.260730000E2,5.586785505E1 +6.263620000E2,6.576560120E1 +6.266590000E2,6.102361259E1 +6.270050000E2,6.110507706E1 +6.272870000E2,5.753592100E1 +6.275410000E2,6.297666729E1 +6.278490000E2,6.037594793E1 +6.281160000E2,5.849898506E1 +6.284180000E2,6.165631601E1 +6.287090000E2,6.096774109E1 +6.289510000E2,6.176590968E1 +6.292460000E2,5.947061017E1 +6.294820000E2,6.109202024E1 +6.297790000E2,5.322559935E1 +6.301160000E2,4.971181861E1 +6.303880000E2,5.533921521E1 +6.307250000E2,5.478410742E1 +6.310240000E2,5.647795083E1 +6.313200000E2,5.797504265E1 +6.315690000E2,5.403019222E1 +6.318640000E2,5.301910781E1 +6.321010000E2,5.096544207E1 +6.324030000E2,5.324435941E1 +6.326360000E2,5.447050361E1 +6.328960000E2,5.932781903E1 +6.331500000E2,5.967228428E1 +6.334640000E2,6.319489971E1 +6.337810000E2,5.820271574E1 +6.340710000E2,5.910289699E1 +6.343170000E2,5.681937370E1 +6.346260000E2,5.582227275E1 +6.349350000E2,5.745831651E1 +6.352100000E2,5.504019385E1 +6.354620000E2,5.072303887E1 +6.357190000E2,5.366082959E1 +6.359690000E2,5.380227314E1 +6.362560000E2,4.818205454E1 +6.365090000E2,5.989908626E1 +6.368780000E2,5.659012846E1 +6.371610000E2,5.593157997E1 +6.374460000E2,5.135237935E1 +6.377000000E2,5.687788515E1 +6.379550000E2,5.943975502E1 +6.382630000E2,6.290957992E1 +6.385230000E2,5.827099811E1 +6.387780000E2,5.686391746E1 +6.390620000E2,5.771790911E1 +6.393200000E2,5.390066131E1 +6.395830000E2,5.358231960E1 +6.398480000E2,5.564565007E1 +6.401490000E2,5.205482155E1 +6.404200000E2,5.852280051E1 +6.407340000E2,4.836326193E1 +6.409980000E2,5.905115701E1 +6.412560000E2,5.622349390E1 +6.415040000E2,5.891737338E1 +6.417460000E2,5.749377856E1 +6.420310000E2,5.414095183E1 +6.422680000E2,5.482109112E1 +6.425170000E2,5.202942051E1 +6.428000000E2,4.903409276E1 +6.431250000E2,5.495098254E1 +6.434650000E2,5.777911761E1 +6.437680000E2,5.329076638E1 +6.440080000E2,5.886592322E1 +6.443070000E2,5.661637111E1 +6.445560000E2,5.459133399E1 +6.448230000E2,4.858613706E1 +6.450990000E2,5.642020356E1 +6.453590000E2,5.634614530E1 +6.456240000E2,5.769024626E1 +6.458900000E2,6.037646239E1 +6.461470000E2,5.712013563E1 +6.464260000E2,5.393237723E1 +6.467570000E2,5.443825449E1 +6.469850000E2,5.464133184E1 +6.472460000E2,5.185343249E1 +6.475170000E2,5.670688718E1 +6.477900000E2,5.808659132E1 +6.480150000E2,5.879711687E1 +6.483250000E2,5.860991669E1 +6.485730000E2,5.600484597E1 +6.488230000E2,5.291438286E1 +6.491020000E2,5.869236753E1 +6.493260000E2,5.826316690E1 +6.496250000E2,5.619306699E1 +6.499850000E2,6.085970714E1 +6.502400000E2,6.051231588E1 +6.505400000E2,6.096601072E1 +6.507990000E2,6.197068990E1 +6.511180000E2,6.520817743E1 +6.513810000E2,6.377577246E1 +6.516860000E2,6.105485617E1 +6.519940000E2,5.890751001E1 +6.522910000E2,5.911253604E1 +6.525370000E2,6.291937986E1 +6.528540000E2,6.252638881E1 +6.532210000E2,6.337356348E1 +6.535270000E2,5.894334263E1 +6.537830000E2,5.754939005E1 +6.540930000E2,5.500698560E1 +6.543880000E2,5.014350898E1 +6.546880000E2,5.646260920E1 +6.549870000E2,5.951282585E1 +6.552920000E2,6.099782791E1 +6.555480000E2,6.065538365E1 +6.558100000E2,6.827371953E1 +6.560790000E2,6.035931154E1 +6.563820000E2,6.267306134E1 +6.566350000E2,5.826452213E1 +6.568970000E2,6.092938143E1 +6.572010000E2,6.534130041E1 +6.575130000E2,6.111837506E1 +6.577770000E2,5.826481723E1 +6.580330000E2,5.918147323E1 +6.582980000E2,6.100230752E1 +6.585510000E2,6.302217459E1 +6.588060000E2,5.754956715E1 +6.591080000E2,6.111201710E1 +6.593520000E2,6.017410469E1 +6.597040000E2,6.031944923E1 +6.599450000E2,5.943575512E1 +6.602120000E2,5.868776340E1 +6.605570000E2,5.940543513E1 +6.608500000E2,5.886327816E1 +6.610920000E2,5.770522648E1 +6.613840000E2,5.442777508E1 +6.616200000E2,5.394232060E1 +6.619220000E2,5.856638842E1 +6.622160000E2,5.742664400E1 +6.624600000E2,5.472498345E1 +6.627560000E2,5.672985390E1 +6.629770000E2,5.834702318E1 +6.632250000E2,5.907602823E1 +6.634810000E2,5.873031221E1 +6.637670000E2,5.757130737E1 +6.640040000E2,5.572185824E1 +6.643070000E2,5.959142979E1 +6.645480000E2,5.851623707E1 +6.648520000E2,5.856887935E1 +6.650940000E2,6.397218192E1 +6.653890000E2,5.963692586E1 +6.656210000E2,5.934207027E1 +6.659580000E2,5.667856430E1 +6.662640000E2,5.811017468E1 +6.665550000E2,5.505265787E1 +6.667990000E2,5.558350894E1 +6.671320000E2,6.063017800E1 +6.674000000E2,5.568411381E1 +6.676510000E2,5.981422062E1 +6.679580000E2,5.723024768E1 +6.682820000E2,5.036028104E1 +6.685240000E2,5.199205823E1 +6.687970000E2,5.367328475E1 +6.691280000E2,5.936914884E1 +6.693940000E2,5.657797691E1 +6.696490000E2,6.065879377E1 +6.699270000E2,5.657054255E1 +6.702000000E2,5.655716576E1 +6.704770000E2,5.823562265E1 +6.707350000E2,6.065030224E1 +6.710140000E2,6.110776530E1 +6.712700000E2,5.714357796E1 +6.715170000E2,5.604236164E1 +6.717930000E2,6.041748871E1 +6.721240000E2,6.019765334E1 +6.724270000E2,5.928602786E1 +6.727750000E2,5.973060669E1 +6.730710000E2,6.059869751E1 +6.733250000E2,6.116850166E1 +6.736400000E2,6.145214709E1 +6.738890000E2,6.020118097E1 +6.741670000E2,6.048579637E1 +6.744720000E2,6.225337088E1 +6.747550000E2,5.853636068E1 +6.750030000E2,5.999204871E1 +6.752840000E2,5.433989895E1 +6.755100000E2,5.847308735E1 +6.758420000E2,5.913726954E1 +6.760830000E2,6.049449503E1 +6.763830000E2,5.545572399E1 +6.766370000E2,6.246077536E1 +6.768920000E2,6.029598130E1 +6.771340000E2,6.005864514E1 +6.774230000E2,6.582269585E1 +6.776700000E2,6.255104294E1 +6.779140000E2,6.623711836E1 +6.781740000E2,6.684819787E1 +6.784850000E2,6.877250850E1 +6.787420000E2,6.157084767E1 +6.789860000E2,6.054068573E1 +6.793290000E2,6.069583213E1 +6.795810000E2,6.124898856E1 +6.798240000E2,6.136691849E1 +6.800900000E2,6.035594762E1 +6.803920000E2,5.654106541E1 +6.806920000E2,5.587565134E1 +6.809940000E2,5.642134155E1 +6.813020000E2,5.749983358E1 +6.815830000E2,5.576151961E1 +6.818120000E2,5.714589311E1 +6.820580000E2,5.969510914E1 +6.823020000E2,5.824123453E1 +6.825680000E2,5.779273115E1 +6.828630000E2,5.699644891E1 +6.831010000E2,5.900876644E1 +6.833500000E2,6.335540424E1 +6.835940000E2,6.280432027E1 +6.838340000E2,6.194675910E1 +6.841290000E2,5.801082069E1 +6.843650000E2,5.652506879E1 +6.846570000E2,5.895404856E1 +6.848910000E2,5.873705448E1 +6.851950000E2,5.589704153E1 +6.855380000E2,5.379672362E1 +6.857910000E2,6.287056471E1 +6.860900000E2,6.081817617E1 +6.863340000E2,6.807593043E1 +6.866320000E2,5.604389930E1 +6.868800000E2,6.712075434E1 +6.871750000E2,6.290238552E1 +6.874740000E2,6.473105179E1 +6.877330000E2,5.873835234E1 +6.880180000E2,5.800563858E1 +6.882620000E2,5.540095032E1 +6.885810000E2,6.197881428E1 +6.888280000E2,5.541258482E1 +6.890890000E2,5.558277465E1 +6.894010000E2,4.965923685E1 +6.897080000E2,4.860020107E1 +6.899730000E2,5.608167548E1 +6.902300000E2,5.381305593E1 +6.904990000E2,6.079286270E1 +6.908000000E2,6.446965644E1 +6.910380000E2,6.556266140E1 +6.913400000E2,5.418444209E1 +6.916350000E2,5.205102491E1 +6.919820000E2,5.812981404E1 +6.922410000E2,6.500705260E1 +6.925070000E2,6.149947285E1 +6.927750000E2,5.695315316E1 +6.930870000E2,5.775854948E1 +6.933870000E2,6.523399833E1 +6.936300000E2,6.692630865E1 +6.939270000E2,5.793447825E1 +6.942230000E2,5.746396110E1 +6.944770000E2,6.017975210E1 +6.947150000E2,5.956759439E1 +6.950320000E2,6.391288151E1 +6.953110000E2,6.484415086E1 +6.955650000E2,6.664209540E1 +6.958410000E2,6.746668632E1 +6.961050000E2,5.775664920E1 +6.964050000E2,6.383035698E1 +6.967020000E2,5.816763892E1 +6.969600000E2,6.921190909E1 +6.972400000E2,6.165047809E1 +6.975080000E2,5.666810057E1 +6.977540000E2,6.417546300E1 +6.980020000E2,5.788971486E1 +6.982730000E2,5.486922606E1 +6.985850000E2,5.576434723E1 +6.988820000E2,5.548978795E1 +6.991460000E2,5.886820316E1 +6.993970000E2,6.226406326E1 +6.996480000E2,5.601534080E1 +6.999400000E2,5.901385758E1 +7.002040000E2,5.720709772E1 +7.005120000E2,6.318399213E1 +7.007580000E2,6.338981741E1 +7.010170000E2,6.747312486E1 +7.012670000E2,5.788999692E1 +7.015450000E2,4.434465006E1 +7.018710000E2,6.439013955E1 +7.021480000E2,5.375342664E1 +7.023700000E2,6.398282027E1 +7.026160000E2,5.857909138E1 +7.029130000E2,5.670439641E1 +7.031590000E2,5.749786365E1 +7.034320000E2,5.181710985E1 +7.036770000E2,5.871535868E1 +7.039520000E2,5.470297527E1 +7.042240000E2,5.771822323E1 +7.044750000E2,5.236261523E1 +7.047130000E2,5.595332709E1 +7.050480000E2,5.576748295E1 +7.053040000E2,5.334869600E1 +7.055590000E2,5.337806625E1 +7.058180000E2,5.499892680E1 +7.060900000E2,5.490963435E1 +7.063980000E2,5.551078540E1 +7.066680000E2,5.358868238E1 +7.069300000E2,5.203182642E1 +7.071760000E2,5.771053387E1 +7.074630000E2,5.175835182E1 +7.077440000E2,5.402526598E1 +7.080400000E2,5.754717994E1 +7.083470000E2,6.103880587E1 +7.086400000E2,6.284824916E1 +7.088840000E2,6.674666322E1 +7.092010000E2,6.194114278E1 +7.094980000E2,5.796289911E1 +7.097580000E2,5.475547679E1 +7.100170000E2,5.804024708E1 +7.102650000E2,5.606423134E1 +7.105550000E2,5.319247933E1 +7.107930000E2,5.625991375E1 +7.110940000E2,5.589539698E1 +7.114730000E2,6.073460415E1 +7.117930000E2,6.208342045E1 +7.120530000E2,6.335117127E1 +7.123290000E2,5.821275565E1 +7.126280000E2,5.793160357E1 +7.128780000E2,5.509944006E1 +7.131790000E2,5.578357696E1 +7.134760000E2,5.632534225E1 +7.137350000E2,5.466315647E1 +7.140450000E2,5.914530785E1 +7.143020000E2,6.280432125E1 +7.146020000E2,6.333348539E1 +7.149790000E2,5.698482465E1 +7.152920000E2,5.474810308E1 +7.155370000E2,5.417920207E1 +7.157880000E2,6.392184792E1 +7.160720000E2,6.565549591E1 +7.163130000E2,6.082705714E1 +7.166120000E2,5.816285927E1 +7.168430000E2,5.809201859E1 +7.170930000E2,6.016105207E1 +7.173350000E2,5.162287691E1 +7.176230000E2,5.754317879E1 +7.179310000E2,6.166304542E1 +7.181770000E2,6.177004553E1 +7.184320000E2,6.274574776E1 +7.186900000E2,6.104994734E1 +7.189920000E2,5.735301480E1 +7.192340000E2,5.830205645E1 +7.194890000E2,6.212782217E1 +7.197420000E2,5.467685243E1 +7.200420000E2,5.313970583E1 +7.202920000E2,5.278680647E1 +7.205360000E2,5.474141102E1 +7.209140000E2,6.241771654E1 +7.212600000E2,6.394594172E1 +7.215560000E2,6.348358734E1 +7.217980000E2,6.112734048E1 +7.220450000E2,6.226451183E1 +7.222930000E2,6.534082516E1 +7.225960000E2,6.114019283E1 +7.228390000E2,6.421228964E1 +7.231230000E2,6.814847387E1 +7.233690000E2,6.275446304E1 +7.236190000E2,6.679153921E1 +7.239280000E2,6.537583699E1 +7.241850000E2,6.212976374E1 +7.245300000E2,6.553556935E1 +7.248220000E2,5.834030427E1 +7.250930000E2,5.992153646E1 +7.253380000E2,5.595099295E1 +7.256370000E2,5.720822528E1 +7.258800000E2,5.423516872E1 +7.261770000E2,5.906139652E1 +7.264140000E2,6.204477132E1 +7.267140000E2,6.368823365E1 +7.269550000E2,6.513672214E1 +7.272500000E2,6.364997971E1 +7.275370000E2,6.269941998E1 +7.278570000E2,5.948773609E1 +7.281020000E2,5.789544973E1 +7.283740000E2,6.305528689E1 +7.286400000E2,6.245554089E1 +7.289690000E2,6.033221518E1 +7.292310000E2,5.940071821E1 +7.294970000E2,6.176178101E1 +7.298020000E2,5.355172623E1 +7.300580000E2,5.535292187E1 +7.303150000E2,5.274398781E1 +7.305750000E2,5.399957194E1 +7.308780000E2,5.819691646E1 +7.312070000E2,5.434897588E1 +7.315090000E2,6.041787911E1 +7.317850000E2,5.617860881E1 +7.320560000E2,5.558770875E1 +7.323290000E2,5.151264449E1 +7.325860000E2,5.612143969E1 +7.328800000E2,5.405001557E1 +7.331120000E2,5.455354216E1 +7.334090000E2,5.716252136E1 +7.337070000E2,6.416157102E1 +7.339910000E2,6.098010142E1 +7.343020000E2,6.194029449E1 +7.346500000E2,6.091313037E1 +7.349540000E2,5.846954669E1 +7.352410000E2,5.743489407E1 +7.355320000E2,5.872669957E1 +7.357800000E2,5.859080967E1 +7.360560000E2,6.053269456E1 +7.363220000E2,6.117884455E1 +7.366590000E2,5.809887850E1 +7.369420000E2,5.453224539E1 +7.372510000E2,5.639337460E1 +7.375040000E2,5.373613181E1 +7.378630000E2,5.066236714E1 +7.381160000E2,4.653740377E1 +7.383650000E2,6.375011526E1 +7.386730000E2,6.282181577E1 +7.389830000E2,6.727660972E1 +7.392340000E2,6.413328322E1 +7.394790000E2,6.184881400E1 +7.397290000E2,6.430634497E1 +7.400250000E2,6.276256291E1 +7.402610000E2,6.297441350E1 +7.405590000E2,5.306586823E1 +7.408610000E2,5.403016569E1 +7.412260000E2,5.749263443E1 +7.415060000E2,5.657932114E1 +7.417820000E2,5.532222303E1 +7.420430000E2,5.911133378E1 +7.423450000E2,5.822379827E1 +7.426470000E2,6.311870884E1 +7.428860000E2,5.964121243E1 +7.431940000E2,5.708688763E1 +7.434960000E2,5.782189241E1 +7.437480000E2,5.745118469E1 +7.440380000E2,5.258772989E1 +7.442830000E2,5.325984780E1 +7.445410000E2,5.216709684E1 +7.447900000E2,5.485283680E1 +7.450520000E2,6.638751453E1 +7.453640000E2,6.256149725E1 +7.456370000E2,6.851667797E1 +7.459020000E2,6.356784575E1 +7.462040000E2,6.586178842E1 +7.464510000E2,6.099626883E1 +7.467420000E2,6.874341983E1 +7.470300000E2,5.690479739E1 +7.472670000E2,5.749513215E1 +7.475860000E2,5.743840209E1 +7.478480000E2,6.695338823E1 +7.481550000E2,6.575566103E1 +7.484170000E2,6.244751264E1 +7.486690000E2,6.206430480E1 +7.489520000E2,5.755143157E1 +7.492450000E2,6.343498072E1 +7.494820000E2,6.599354682E1 +7.497800000E2,5.994269627E1 +7.500210000E2,6.480563885E1 +7.503160000E2,5.962320355E1 +7.505550000E2,5.907805627E1 +7.508860000E2,5.452673237E1 +7.511450000E2,5.413358853E1 +7.514110000E2,5.786691992E1 +7.516870000E2,6.185088179E1 +7.519570000E2,5.432685780E1 +7.522050000E2,5.297819944E1 +7.524920000E2,5.290855554E1 +7.527910000E2,5.828859659E1 +7.530300000E2,5.880189294E1 +7.533360000E2,5.500578631E1 +7.535910000E2,5.476677878E1 +7.538330000E2,5.414240587E1 +7.541650000E2,5.332866170E1 +7.544620000E2,5.193802785E1 +7.547080000E2,5.242932681E1 +7.549590000E2,6.024921863E1 +7.552020000E2,5.537701523E1 +7.554960000E2,5.489617845E1 +7.557330000E2,5.384280286E1 +7.560410000E2,5.406125999E1 +7.562870000E2,5.246560959E1 +7.565320000E2,5.374729291E1 +7.567680000E2,5.542801483E1 +7.570630000E2,5.525770987E1 +7.573930000E2,5.847670432E1 +7.576660000E2,5.822188632E1 +7.579180000E2,5.822901451E1 +7.582040000E2,5.458975346E1 +7.584820000E2,5.438683247E1 +7.587800000E2,5.260449368E1 +7.590260000E2,5.371245859E1 +7.592870000E2,4.983203663E1 +7.595420000E2,5.018089077E1 +7.598380000E2,5.950969681E1 +7.601480000E2,5.769305363E1 +7.604800000E2,5.747567937E1 +7.607190000E2,5.446335810E1 +7.610040000E2,5.463229896E1 +7.612970000E2,5.644916160E1 +7.615560000E2,5.809520116E1 +7.618460000E2,5.406577519E1 +7.621050000E2,5.362277750E1 +7.623930000E2,5.868559294E1 +7.626230000E2,5.548744129E1 +7.628890000E2,5.613986675E1 +7.631890000E2,5.592058678E1 +7.634870000E2,5.947938191E1 +7.638120000E2,5.945990241E1 +7.640830000E2,5.354091788E1 +7.643270000E2,5.910847411E1 +7.645670000E2,6.112853730E1 +7.648120000E2,5.617469613E1 +7.650520000E2,5.678172470E1 +7.653190000E2,5.293731054E1 +7.655730000E2,5.571573154E1 +7.658430000E2,5.239475172E1 +7.660900000E2,5.710555790E1 +7.663840000E2,5.593714408E1 +7.666500000E2,5.506488062E1 +7.669100000E2,5.276148627E1 +7.671530000E2,5.087813070E1 +7.674500000E2,4.966858228E1 +7.677070000E2,4.690170064E1 +7.679870000E2,5.097718665E1 +7.682460000E2,5.173969669E1 +7.685220000E2,5.562988056E1 +7.687630000E2,5.194720020E1 +7.690630000E2,5.590118249E1 +7.693610000E2,5.613585205E1 +7.696030000E2,5.417299550E1 +7.698530000E2,5.925774948E1 +7.702010000E2,5.729895975E1 +7.704610000E2,5.765570707E1 +7.707610000E2,6.211008380E1 +7.710570000E2,5.846530012E1 +7.712970000E2,5.766544416E1 +7.715460000E2,5.716238768E1 +7.718080000E2,5.700535494E1 +7.720510000E2,5.592606747E1 +7.723260000E2,5.771214429E1 +7.725940000E2,5.753442175E1 +7.728830000E2,5.541298336E1 +7.731860000E2,5.137853822E1 +7.735420000E2,5.462649470E1 +7.738320000E2,5.454281912E1 +7.740820000E2,6.803752283E1 +7.743260000E2,6.852980541E1 +7.745820000E2,7.007631543E1 +7.748270000E2,7.009876218E1 +7.751160000E2,6.950363051E1 +7.753520000E2,6.338954984E1 +7.755910000E2,5.500200077E1 +7.758880000E2,5.358702362E1 +7.761340000E2,5.718303470E1 +7.763730000E2,5.887519420E1 +7.767050000E2,5.795457078E1 +7.769970000E2,5.796499201E1 +7.773000000E2,5.644912180E1 +7.775570000E2,5.804780214E1 +7.778740000E2,5.958528627E1 +7.781300000E2,5.635913866E1 +7.784430000E2,5.593106857E1 +7.787280000E2,6.063168213E1 +7.789960000E2,5.917208792E1 +7.792560000E2,5.719923422E1 +7.795050000E2,6.400429125E1 +7.797680000E2,5.733192807E1 +7.800440000E2,6.018331087E1 +7.803000000E2,6.350407169E1 +7.805530000E2,6.357762743E1 +7.808590000E2,6.772563953E1 +7.811430000E2,6.431848914E1 +7.814050000E2,5.710721917E1 +7.816950000E2,5.646111127E1 +7.819500000E2,5.564600214E1 +7.822050000E2,6.362802489E1 +7.824550000E2,6.278310471E1 +7.827010000E2,5.851995741E1 +7.829620000E2,5.759567059E1 +7.832630000E2,5.449669640E1 +7.835070000E2,6.040303881E1 +7.837500000E2,5.743841461E1 +7.839990000E2,6.096558185E1 +7.842840000E2,7.161293257E1 +7.845270000E2,7.417435903E1 +7.848410000E2,6.386070968E1 +7.851390000E2,6.234904760E1 +7.854350000E2,6.321731436E1 +7.856820000E2,6.294103551E1 +7.859780000E2,6.210337552E1 +7.862150000E2,6.765383904E1 +7.865650000E2,6.346682761E1 +7.868610000E2,6.221020232E1 +7.871280000E2,6.119530731E1 +7.873850000E2,5.314248269E1 +7.876880000E2,5.288680780E1 +7.879230000E2,5.064349321E1 +7.882230000E2,5.786336298E1 +7.884630000E2,5.341864841E1 +7.887250000E2,5.286568073E1 +7.890140000E2,5.272997567E1 +7.893180000E2,5.904110581E1 +7.896690000E2,5.748622391E1 +7.899200000E2,5.773986136E1 +7.902160000E2,5.480967078E1 +7.904710000E2,5.627241382E1 +7.907280000E2,5.456362797E1 +7.909900000E2,5.766408512E1 +7.912380000E2,5.413586400E1 +7.914940000E2,5.234403284E1 +7.917720000E2,5.190170354E1 +7.920440000E2,5.227759392E1 +7.923170000E2,4.410400383E1 +7.926220000E2,3.508270700E1 +7.929370000E2,3.887828085E1 +7.932030000E2,4.522069604E1 +7.934660000E2,4.928233980E1 +7.937420000E2,4.706401379E1 +7.940710000E2,4.988989997E1 +7.943700000E2,5.767827889E1 +7.946060000E2,5.506606719E1 +7.949050000E2,6.107887773E1 +7.952060000E2,5.849609892E1 +7.955030000E2,5.343173328E1 +7.957490000E2,5.007726003E1 +7.960580000E2,4.763873915E1 +7.963010000E2,5.045894898E1 +7.966040000E2,6.859700710E1 +7.968900000E2,6.734256534E1 +7.971550000E2,6.661489392E1 +7.974110000E2,6.556398865E1 +7.976580000E2,5.519705677E1 +7.979230000E2,5.503316479E1 +7.982060000E2,5.955770829E1 +7.984280000E2,5.777834711E1 +7.987260000E2,6.050467535E1 +7.989700000E2,5.583639573E1 +7.993330000E2,5.988908902E1 +7.995750000E2,5.875791040E1 +7.998670000E2,6.166637478E1 +8.001160000E2,5.690435901E1 +8.004160000E2,5.599911293E1 +8.006610000E2,5.889628547E1 +8.009180000E2,6.227540789E1 +8.011740000E2,6.572663811E1 +8.014300000E2,6.013467784E1 +8.016770000E2,6.250368579E1 +8.019910000E2,6.532292099E1 +8.023560000E2,5.377170031E1 +8.026370000E2,5.535595108E1 +8.029110000E2,5.147526495E1 +8.031720000E2,4.993046061E1 +8.034760000E2,6.394035794E1 +8.037260000E2,5.983119170E1 +8.040270000E2,5.967243802E1 +8.042930000E2,6.559340840E1 +8.046100000E2,5.262215496E1 +8.049160000E2,5.397812040E1 +8.051780000E2,5.680330381E1 +8.054740000E2,5.857171626E1 +8.058060000E2,5.577198454E1 +8.060880000E2,5.916891157E1 +8.063460000E2,6.120078548E1 +8.066060000E2,6.223167379E1 +8.069230000E2,6.161077093E1 +8.071720000E2,5.812180846E1 +8.074300000E2,5.665535607E1 +8.077230000E2,5.401482687E1 +8.079600000E2,5.631804256E1 +8.082610000E2,5.267806276E1 +8.085540000E2,5.766120113E1 +8.088100000E2,5.717509884E1 +8.091690000E2,5.698714543E1 +8.094130000E2,5.807918354E1 +8.096940000E2,5.364566959E1 +8.099320000E2,5.678502402E1 +8.102110000E2,5.494444844E1 +8.104710000E2,6.216218230E1 +8.107550000E2,5.504588420E1 +8.110030000E2,5.220186059E1 +8.112810000E2,5.338487037E1 +8.115430000E2,5.422122114E1 +8.118180000E2,6.217546099E1 +8.121430000E2,5.739027439E1 +8.124800000E2,5.218554734E1 +8.128080000E2,6.183667492E1 +8.130850000E2,6.028246668E1 +8.133620000E2,6.620979851E1 +8.135950000E2,5.810667246E1 +8.138630000E2,6.096670869E1 +8.141300000E2,5.149777407E1 +8.143960000E2,4.993954713E1 +8.146400000E2,5.196561010E1 +8.149350000E2,5.727966309E1 +8.151710000E2,5.489316784E1 +8.154100000E2,5.619291420E1 +8.157500000E2,5.425831711E1 +8.160430000E2,5.677079709E1 +8.163250000E2,5.289383275E1 +8.165600000E2,5.573749616E1 +8.168090000E2,5.211960412E1 +8.170840000E2,5.029895102E1 +8.173170000E2,5.085418245E1 +8.175630000E2,5.101392152E1 +8.178870000E2,5.228690479E1 +8.182130000E2,5.919931006E1 +8.184680000E2,5.288617356E1 +8.188320000E2,5.626269479E1 +8.191030000E2,6.124827198E1 +8.193870000E2,5.889071517E1 +8.196160000E2,5.957980623E1 +8.199180000E2,5.440069788E1 +8.201590000E2,5.524226830E1 +8.204560000E2,5.147688867E1 +8.206870000E2,5.390780082E1 +8.209820000E2,6.509870984E1 +8.212270000E2,6.421388309E1 +8.215230000E2,5.843840462E1 +8.218170000E2,5.422512027E1 +8.221280000E2,5.468614274E1 +8.223780000E2,5.922850585E1 +8.226710000E2,6.486031186E1 +8.229330000E2,6.154967201E1 +8.232420000E2,5.893257410E1 +8.235100000E2,6.020329639E1 +8.238290000E2,5.483779552E1 +8.240760000E2,5.692914998E1 +8.243280000E2,6.347347085E1 +8.245930000E2,5.345306004E1 +8.248670000E2,6.141647052E1 +8.252000000E2,5.672783001E1 +8.254550000E2,5.605661334E1 +8.257610000E2,5.699330885E1 +8.260410000E2,5.489256860E1 +8.263010000E2,6.262090025E1 +8.265830000E2,5.457719262E1 +8.268180000E2,5.416382407E1 +8.271260000E2,4.993919751E1 +8.273700000E2,5.569569056E1 +8.276330000E2,5.514364162E1 +8.278890000E2,5.653204472E1 +8.281470000E2,5.784406489E1 +8.284370000E2,5.752811490E1 +8.286720000E2,5.727510089E1 +8.289650000E2,5.900575965E1 +8.292510000E2,5.679022390E1 +8.294860000E2,5.722234118E1 +8.297350000E2,5.952638514E1 +8.300320000E2,5.925181191E1 +8.302740000E2,5.930148258E1 +8.305160000E2,5.668145507E1 +8.307730000E2,5.590492759E1 +8.310130000E2,6.302930486E1 +8.312510000E2,5.733539345E1 +8.315800000E2,5.620349253E1 +8.318910000E2,5.495250031E1 +8.322000000E2,5.501979251E1 +8.324620000E2,5.208226415E1 +8.327390000E2,5.765748383E1 +8.329950000E2,5.489193423E1 +8.332490000E2,5.593428331E1 +8.335720000E2,5.714652117E1 +8.338250000E2,5.832769426E1 +8.341370000E2,5.884156077E1 +8.344030000E2,5.840498509E1 +8.347020000E2,5.864505811E1 +8.350330000E2,6.356982434E1 +8.353340000E2,6.286445683E1 +8.355720000E2,5.657384439E1 +8.358940000E2,5.660970318E1 +8.361720000E2,5.918731584E1 +8.364160000E2,5.825788220E1 +8.366580000E2,5.592754487E1 +8.369110000E2,5.553717092E1 +8.371910000E2,5.495027293E1 +8.374510000E2,5.546329287E1 +8.377420000E2,5.746402701E1 +8.379890000E2,5.891922359E1 +8.383130000E2,6.522858798E1 +8.385710000E2,6.384617776E1 +8.388430000E2,5.435088619E1 +8.390670000E2,5.460135210E1 +8.393610000E2,5.982769627E1 +8.396020000E2,5.936265195E1 +8.398550000E2,6.034701146E1 +8.401470000E2,6.875861473E1 +8.403840000E2,6.968788985E1 +8.406760000E2,6.653493651E1 +8.409120000E2,6.664139767E1 +8.412200000E2,6.195236791E1 +8.415280000E2,5.759269564E1 +8.418110000E2,5.704906263E1 +8.420770000E2,5.199124728E1 +8.423350000E2,5.625309672E1 +8.426060000E2,5.627754144E1 +8.428710000E2,6.285304788E1 +8.431220000E2,6.089762622E1 +8.434160000E2,5.828079525E1 +8.436650000E2,5.581703965E1 +8.439650000E2,5.326092983E1 +8.442070000E2,5.247397640E1 +8.444500000E2,5.104216729E1 +8.447560000E2,4.981466747E1 +8.450730000E2,5.794387296E1 +8.453210000E2,6.103400827E1 +8.455680000E2,6.053778141E1 +8.458610000E2,5.413066164E1 +8.461240000E2,5.591468697E1 +8.463740000E2,5.289659812E1 +8.466770000E2,6.014390988E1 +8.469740000E2,5.713983843E1 +8.472340000E2,5.457406708E1 +8.474800000E2,5.848999564E1 +8.478210000E2,5.310404619E1 +8.481040000E2,5.463633704E1 +8.483620000E2,5.329096892E1 +8.486670000E2,5.667645304E1 +8.489890000E2,5.540515985E1 +8.492420000E2,5.014593999E1 +8.495060000E2,5.019949668E1 +8.497660000E2,4.724526190E1 +8.500410000E2,4.632701850E1 +8.502660000E2,4.436725745E1 +8.505710000E2,5.273585220E1 +8.508470000E2,5.232501704E1 +8.511370000E2,5.177389205E1 +8.513940000E2,5.236772038E1 +8.516560000E2,4.869019062E1 +8.518980000E2,5.254056589E1 +8.521620000E2,5.441215371E1 +8.524060000E2,5.431954181E1 +8.526720000E2,4.873515026E1 +8.529820000E2,5.253291311E1 +8.532350000E2,5.201920339E1 +8.535330000E2,5.083296820E1 +8.537750000E2,5.373650683E1 +8.540560000E2,6.162621210E1 +8.543710000E2,6.137876928E1 +8.546190000E2,6.347980201E1 +8.548850000E2,6.480134627E1 +8.551390000E2,6.344943059E1 +8.553830000E2,6.653758852E1 +8.556910000E2,6.821811094E1 +8.559900000E2,6.564040109E1 +8.562480000E2,6.310710880E1 +8.565060000E2,5.625485760E1 +8.567860000E2,5.886920329E1 +8.570590000E2,5.638007706E1 +8.573180000E2,5.477312089E1 +8.576670000E2,5.402637072E1 +8.579310000E2,5.282806817E1 +8.582400000E2,5.743205922E1 +8.584770000E2,5.608834078E1 +8.587730000E2,5.917700537E1 +8.590950000E2,5.757076232E1 +8.593390000E2,5.680975976E1 +8.596110000E2,5.316092446E1 +8.598560000E2,5.634389465E1 +8.601130000E2,5.912558361E1 +8.603880000E2,5.827706684E1 +8.606370000E2,5.580056474E1 +8.609720000E2,5.622551838E1 +8.612190000E2,5.816090597E1 +8.614650000E2,5.710633258E1 +8.617260000E2,6.762679027E1 +8.619970000E2,6.050550643E1 +8.622480000E2,6.017289530E1 +8.624960000E2,5.884551198E1 +8.627510000E2,5.823958631E1 +8.630120000E2,5.747421536E1 +8.632920000E2,5.891926612E1 +8.635810000E2,5.962176090E1 +8.638680000E2,5.932606834E1 +8.642430000E2,6.035939553E1 +8.645920000E2,5.892740034E1 +8.649090000E2,6.158225090E1 +8.651650000E2,5.941856931E1 +8.654560000E2,5.517726055E1 +8.656900000E2,5.573554393E1 +8.659400000E2,6.300977067E1 +8.662170000E2,6.346838855E1 +8.664760000E2,5.840482341E1 +8.667600000E2,5.656477763E1 +8.669980000E2,5.809371706E1 +8.672500000E2,5.957523428E1 +8.675890000E2,5.868790884E1 +8.678670000E2,6.643274765E1 +8.681530000E2,6.202304252E1 +8.684260000E2,6.167390940E1 +8.686760000E2,6.561664622E1 +8.689220000E2,6.221849135E1 +8.691620000E2,5.873701255E1 +8.694080000E2,5.721335717E1 +8.696600000E2,5.775578048E1 +8.699210000E2,6.139190630E1 +8.702060000E2,5.695582014E1 +8.705330000E2,5.285782467E1 +8.708800000E2,5.254436807E1 +8.711320000E2,5.941119733E1 +8.714840000E2,5.561687107E1 +8.717890000E2,5.226341013E1 +8.720340000E2,5.351737673E1 +8.723120000E2,5.581753669E1 +8.725450000E2,5.544476975E1 +8.727930000E2,5.112331517E1 +8.731050000E2,5.669948434E1 +8.733660000E2,5.553741274E1 +8.736450000E2,5.287392842E1 +8.738710000E2,5.342755356E1 +8.742030000E2,5.525376809E1 +8.745760000E2,5.790146612E1 +8.748470000E2,5.775550126E1 +8.750900000E2,5.828043309E1 +8.753860000E2,5.689517506E1 +8.756490000E2,5.836000549E1 +8.759170000E2,5.887049385E1 +8.761640000E2,5.731343570E1 +8.764240000E2,5.947081752E1 +8.766660000E2,5.735732777E1 +8.769150000E2,5.791222148E1 +8.771870000E2,5.217820200E1 +8.775110000E2,5.373516267E1 +8.777550000E2,5.639663701E1 +8.779960000E2,5.308435393E1 +8.782370000E2,5.327040257E1 +8.785510000E2,5.539866825E1 +8.788050000E2,5.451580533E1 +8.791100000E2,5.664888244E1 +8.793670000E2,5.439058144E1 +8.796110000E2,6.546629591E1 +8.799090000E2,6.080313073E1 +8.801560000E2,6.023654065E1 +8.804070000E2,5.547022044E1 +8.807450000E2,5.933402552E1 +8.809880000E2,6.073235462E1 +8.812850000E2,5.811897337E1 +8.815210000E2,5.670873426E1 +8.818240000E2,6.239450766E1 +8.821160000E2,6.033779387E1 +8.823610000E2,5.921328684E1 +8.826600000E2,5.808215882E1 +8.828910000E2,5.927124720E1 +8.831280000E2,5.254346564E1 +8.834120000E2,5.755316817E1 +8.837180000E2,5.815703318E1 +8.840150000E2,5.925974643E1 +8.842610000E2,5.406291788E1 +8.845520000E2,5.892672719E1 +8.847970000E2,6.343231596E1 +8.850390000E2,6.045689612E1 +8.853340000E2,5.903303339E1 +8.855810000E2,5.897514906E1 +8.858230000E2,5.682843230E1 +8.860690000E2,4.647265993E1 +8.863400000E2,5.617216143E1 +8.865730000E2,5.412892937E1 +8.869100000E2,6.210166513E1 +8.872070000E2,6.369099543E1 +8.874540000E2,6.052073025E1 +8.877480000E2,6.125108403E1 +8.879990000E2,6.087163347E1 +8.882550000E2,6.365510666E1 +8.885320000E2,5.341778352E1 +8.887600000E2,5.238943476E1 +8.890050000E2,6.378561240E1 +8.892460000E2,6.182956815E1 +8.895070000E2,6.027537659E1 +8.897770000E2,5.747996426E1 +8.901220000E2,5.606477689E1 +8.903620000E2,5.816493441E1 +8.907030000E2,5.740436721E1 +8.909540000E2,5.812990427E1 +8.912060000E2,5.757163286E1 +8.914520000E2,5.669306215E1 +8.917150000E2,5.593698617E1 +8.919580000E2,5.867011196E1 +8.922060000E2,6.001129970E1 +8.924480000E2,6.247831114E1 +8.927080000E2,5.501506807E1 +8.929550000E2,5.918039480E1 +8.932790000E2,5.750337148E1 +8.935260000E2,5.382626014E1 +8.937850000E2,5.632583646E1 +8.940370000E2,5.552393419E1 +8.943380000E2,5.417609473E1 +8.946050000E2,5.314873345E1 +8.948570000E2,5.537690953E1 +8.951790000E2,6.168371256E1 +8.954540000E2,6.142331687E1 +8.957690000E2,5.914263764E1 +8.960690000E2,6.039127428E1 +8.963670000E2,5.303465172E1 +8.966720000E2,5.819495208E1 +8.969200000E2,5.956457754E1 +8.972240000E2,5.554166388E1 +8.974940000E2,5.700583380E1 +8.978160000E2,5.525596264E1 +8.981210000E2,5.878997726E1 +8.983720000E2,5.661289659E1 +8.986510000E2,6.039909322E1 +8.988730000E2,5.569487247E1 +8.991240000E2,5.857026750E1 +8.993800000E2,6.116905404E1 +8.996580000E2,6.331625006E1 +8.998890000E2,5.612470465E1 +9.001440000E2,5.098243988E1 +9.004020000E2,5.779474181E1 +9.006650000E2,5.597754805E1 +9.009440000E2,5.706395638E1 +9.012380000E2,5.989184595E1 +9.015000000E2,5.905145002E1 +9.017620000E2,5.913397617E1 +9.020230000E2,5.831976398E1 +9.022900000E2,5.400731512E1 +9.025900000E2,6.547285797E1 +9.029050000E2,6.534571775E1 +9.032100000E2,5.428834230E1 +9.034580000E2,4.919896084E1 +9.037180000E2,5.326934205E1 +9.039740000E2,5.135684539E1 +9.042700000E2,5.784030554E1 +9.045180000E2,5.789711892E1 +9.048150000E2,5.501985460E1 +9.050680000E2,5.394185103E1 +9.053920000E2,5.504541187E1 +9.056620000E2,5.574384904E1 +9.059260000E2,5.198297704E1 +9.062920000E2,5.507423148E1 +9.065460000E2,5.073979477E1 +9.068090000E2,5.409355601E1 +9.071500000E2,5.842003605E1 +9.074380000E2,6.323761852E1 +9.076890000E2,5.475142925E1 +9.079510000E2,5.285089191E1 +9.082580000E2,6.228883476E1 +9.085110000E2,6.229139223E1 +9.087590000E2,5.849936549E1 +9.090220000E2,6.382664868E1 +9.092560000E2,5.234586511E1 +9.095720000E2,5.506613760E1 +9.098700000E2,5.883918884E1 +9.101180000E2,5.722745073E1 +9.103980000E2,6.006905181E1 +9.106670000E2,6.333821195E1 +9.109390000E2,5.997503412E1 +9.111770000E2,5.691091005E1 +9.114250000E2,5.629684565E1 +9.117070000E2,5.944947286E1 +9.119370000E2,5.757115704E1 +9.122030000E2,5.617546709E1 +9.125090000E2,5.506166951E1 +9.128480000E2,5.345826069E1 +9.131070000E2,5.586702127E1 +9.133900000E2,6.075354367E1 +9.137040000E2,5.668960998E1 +9.139920000E2,5.584388878E1 +9.142800000E2,5.668519299E1 +9.145740000E2,5.400550993E1 +9.148220000E2,5.668991412E1 +9.150670000E2,5.455006531E1 +9.153720000E2,5.750041942E1 +9.156590000E2,5.756327349E1 +9.159630000E2,5.822694927E1 +9.162110000E2,5.764545771E1 +9.164660000E2,5.716015909E1 +9.167560000E2,5.136001811E1 +9.170200000E2,4.706951064E1 +9.172710000E2,4.999131008E1 +9.175180000E2,5.619976433E1 +9.178030000E2,5.463675948E1 +9.180580000E2,4.995546642E1 +9.183000000E2,5.328928391E1 +9.185570000E2,4.808104957E1 +9.188650000E2,5.411517612E1 +9.191080000E2,5.672946344E1 +9.194270000E2,5.737096863E1 +9.196850000E2,5.974051238E1 +9.199830000E2,5.656564726E1 +9.202340000E2,5.709524531E1 +9.204810000E2,5.408385116E1 +9.208240000E2,5.414410830E1 +9.210650000E2,5.638214177E1 +9.213330000E2,5.753313030E1 +9.216130000E2,5.354803656E1 +9.219120000E2,6.191736419E1 +9.221480000E2,5.734366551E1 +9.224580000E2,5.684475304E1 +9.228030000E2,6.045431811E1 +9.230950000E2,5.973057312E1 +9.233960000E2,5.537690593E1 +9.236620000E2,5.411771801E1 +9.239600000E2,5.513839001E1 +9.242140000E2,5.699753068E1 +9.244670000E2,6.643461088E1 +9.247300000E2,6.062391899E1 +9.250330000E2,5.798096332E1 +9.253240000E2,6.347140522E1 +9.255740000E2,6.166496817E1 +9.259250000E2,6.190058171E1 +9.261820000E2,6.329204590E1 +9.264380000E2,6.389135880E1 +9.267030000E2,5.917517639E1 +9.269480000E2,5.809772267E1 +9.272170000E2,5.733235238E1 +9.274780000E2,5.226841119E1 +9.277860000E2,5.876554483E1 +9.280720000E2,6.281089568E1 +9.283510000E2,5.368859448E1 +9.286400000E2,5.449014251E1 +9.289370000E2,5.589991313E1 +9.292390000E2,5.452044152E1 +9.294860000E2,5.574135623E1 +9.297800000E2,5.656551806E1 +9.300200000E2,5.368800996E1 +9.302990000E2,5.374372369E1 +9.305490000E2,5.520696346E1 +9.308500000E2,5.642038107E1 +9.311480000E2,5.958603376E1 +9.314510000E2,5.775531382E1 +9.316980000E2,5.561486787E1 +9.319610000E2,5.826734748E1 +9.322700000E2,5.604871965E1 +9.325550000E2,5.170668645E1 +9.328670000E2,5.089285684E1 +9.331190000E2,4.724853188E1 +9.333790000E2,4.756075237E1 +9.336260000E2,5.199039629E1 +9.338890000E2,4.980140945E1 +9.341620000E2,5.530081877E1 +9.344120000E2,5.549144740E1 +9.347250000E2,5.515929093E1 +9.349780000E2,5.399104933E1 +9.352760000E2,5.325801117E1 +9.356240000E2,5.040008457E1 +9.359420000E2,5.360316460E1 +9.361890000E2,5.191591881E1 +9.364390000E2,5.324554606E1 +9.366970000E2,5.654671572E1 +9.370100000E2,5.711795620E1 +9.372590000E2,5.478625541E1 +9.375950000E2,5.667621371E1 +9.378550000E2,5.463565976E1 +9.381050000E2,5.398825590E1 +9.383580000E2,5.436030102E1 +9.386390000E2,5.091983440E1 +9.389120000E2,5.286705124E1 +9.391550000E2,5.236775571E1 +9.394300000E2,5.738794921E1 +9.397170000E2,5.727939554E1 +9.399750000E2,6.319402051E1 +9.402560000E2,5.468250624E1 +9.405530000E2,5.641852830E1 +9.408670000E2,6.200700436E1 +9.411390000E2,6.163446308E1 +9.413860000E2,7.148312536E1 +9.416340000E2,6.050927243E1 +9.419040000E2,5.667078757E1 +9.421350000E2,5.749142651E1 +9.424700000E2,5.240604485E1 +9.427760000E2,5.466454134E1 +9.430280000E2,6.082141946E1 +9.433300000E2,6.003969647E1 +9.436110000E2,6.121195378E1 +9.438460000E2,5.625129518E1 +9.441420000E2,5.911131348E1 +9.443880000E2,5.468317436E1 +9.446840000E2,6.009033853E1 +9.449440000E2,5.906624737E1 +9.452490000E2,5.464875325E1 +9.455970000E2,5.384566268E1 +9.458510000E2,5.044039840E1 +9.461140000E2,5.035886237E1 +9.463820000E2,5.734112986E1 +9.466620000E2,5.229112628E1 +9.469690000E2,6.028523542E1 +9.472250000E2,5.837101422E1 +9.475000000E2,5.619491985E1 +9.477970000E2,5.364209552E1 +9.480560000E2,5.511055516E1 +9.483560000E2,5.308396885E1 +9.486650000E2,5.587440008E1 +9.490640000E2,5.273632850E1 +9.493730000E2,6.231816715E1 +9.496570000E2,6.253734875E1 +9.499030000E2,5.554720788E1 +9.501460000E2,5.631566079E1 +9.503970000E2,5.626896653E1 +9.506490000E2,5.691941114E1 +9.508990000E2,5.116659255E1 +9.511440000E2,4.922875084E1 +9.514130000E2,5.936693495E1 +9.517070000E2,5.638156112E1 +9.520200000E2,5.180629212E1 +9.523780000E2,4.998674108E1 +9.526570000E2,4.841587788E1 +9.529100000E2,5.028896526E1 +9.531650000E2,4.965921907E1 +9.534690000E2,4.493319669E1 +9.537260000E2,4.598612712E1 +9.539740000E2,5.276251951E1 +9.542810000E2,4.126037796E1 +9.545830000E2,4.737114191E1 +9.548330000E2,4.411553821E1 +9.550850000E2,4.440050708E1 +9.553840000E2,5.260541790E1 +9.556980000E2,5.273901651E1 +9.559710000E2,5.383409632E1 +9.562220000E2,5.239354977E1 +9.564980000E2,4.759742823E1 +9.568040000E2,5.239869448E1 +9.570530000E2,5.238241691E1 +9.573300000E2,5.227349879E1 +9.575630000E2,5.272394727E1 +9.578410000E2,5.414710772E1 +9.580970000E2,5.325895305E1 +9.583410000E2,5.577122645E1 +9.586370000E2,5.015645058E1 +9.590040000E2,5.173028231E1 +9.593040000E2,5.447959265E1 +9.595640000E2,5.484713415E1 +9.598110000E2,5.470137539E1 +9.601060000E2,5.878769788E1 +9.603740000E2,5.851189839E1 +9.606810000E2,5.400762096E1 +9.609290000E2,5.749049444E1 +9.611870000E2,5.241750519E1 +9.614480000E2,4.979747952E1 +9.616960000E2,5.096881110E1 +9.620030000E2,5.149804171E1 +9.623180000E2,5.481599911E1 +9.625540000E2,5.138365056E1 +9.628240000E2,5.235851031E1 +9.630470000E2,4.871540913E1 +9.632880000E2,5.651540461E1 +9.635860000E2,5.650278128E1 +9.638210000E2,5.704973755E1 +9.641160000E2,5.757712252E1 +9.643960000E2,5.881159691E1 +9.646600000E2,5.355579494E1 +9.649750000E2,5.539751700E1 +9.652910000E2,4.797714339E1 +9.655520000E2,5.082548637E1 +9.658080000E2,5.579830605E1 +9.660780000E2,5.554406278E1 +9.663250000E2,5.354814316E1 +9.665660000E2,5.463107171E1 +9.668090000E2,5.368692433E1 +9.671300000E2,5.364867335E1 +9.674540000E2,5.468973775E1 +9.677060000E2,5.815904844E1 +9.680020000E2,5.598522308E1 +9.682480000E2,5.541083624E1 +9.685850000E2,5.512396132E1 +9.688400000E2,5.530796688E1 +9.691210000E2,5.433954611E1 +9.693810000E2,5.507440645E1 +9.696820000E2,5.086817906E1 +9.699140000E2,5.696191489E1 +9.701640000E2,5.845256581E1 +9.704420000E2,5.620226260E1 +9.706770000E2,5.629047170E1 +9.709750000E2,5.811655252E1 +9.712290000E2,5.703185419E1 +9.714900000E2,5.716734774E1 +9.718450000E2,5.493596869E1 +9.720910000E2,5.909437017E1 +9.723380000E2,5.710675060E1 +9.725910000E2,5.780279559E1 +9.728920000E2,5.860060144E1 +9.731360000E2,6.078900999E1 +9.734260000E2,5.852116194E1 +9.736640000E2,5.905899453E1 +9.739130000E2,5.636299630E1 +9.742090000E2,6.289355999E1 +9.744870000E2,6.167909115E1 +9.747290000E2,6.098057792E1 +9.750690000E2,5.906667343E1 +9.753320000E2,6.018572501E1 +9.756150000E2,5.718512970E1 +9.759100000E2,5.146063018E1 +9.761570000E2,5.733244632E1 +9.764050000E2,5.368365894E1 +9.766600000E2,5.486016267E1 +9.769150000E2,5.908582599E1 +9.771910000E2,5.733773036E1 +9.774400000E2,5.566361416E1 +9.777680000E2,5.819125256E1 +9.781220000E2,5.947694304E1 +9.783640000E2,6.140057637E1 +9.786330000E2,5.721849738E1 +9.788550000E2,5.617504209E1 +9.791010000E2,5.660293849E1 +9.793960000E2,5.174001770E1 +9.796880000E2,5.083474014E1 +9.799290000E2,5.184104339E1 +9.801850000E2,5.025385313E1 +9.804850000E2,5.286605500E1 +9.807270000E2,5.586849562E1 +9.809750000E2,5.666036754E1 +9.812950000E2,5.248500918E1 +9.815810000E2,5.416072977E1 +9.818360000E2,5.799655965E1 +9.821300000E2,5.801841935E1 +9.823770000E2,5.977514968E1 +9.826270000E2,5.676871456E1 +9.828850000E2,5.104814549E1 +9.831730000E2,5.834620153E1 +9.834010000E2,5.660640582E1 +9.836620000E2,5.686451748E1 +9.839750000E2,5.998440952E1 +9.842240000E2,5.556687478E1 +9.846000000E2,5.811069315E1 +9.848430000E2,5.843499893E1 +9.851250000E2,5.180956247E1 +9.853860000E2,5.206236639E1 +9.856480000E2,5.641840701E1 +9.859110000E2,5.518588565E1 +9.861920000E2,5.697237679E1 +9.864550000E2,5.411246614E1 +9.867510000E2,5.214533821E1 +9.869880000E2,5.642389575E1 +9.872440000E2,6.015294933E1 +9.875470000E2,5.809991100E1 +9.879150000E2,6.420044247E1 +9.881610000E2,6.042656173E1 +9.884280000E2,5.938959873E1 +9.886840000E2,6.059888233E1 +9.889870000E2,5.282749720E1 +9.892620000E2,5.638110380E1 +9.895440000E2,4.900409689E1 +9.897740000E2,4.971849802E1 +9.900320000E2,5.061428463E1 +9.903370000E2,5.829922071E1 +9.905860000E2,5.812083213E1 +9.908910000E2,5.500587720E1 +9.911860000E2,5.677481104E1 +9.914380000E2,5.502691141E1 +9.916830000E2,5.294500154E1 +9.919560000E2,5.700444986E1 +9.921770000E2,5.448756275E1 +9.924220000E2,5.785741234E1 +9.927280000E2,5.702180374E1 +9.929670000E2,6.013415875E1 +9.932080000E2,5.533496795E1 +9.934640000E2,5.695301526E1 +9.937440000E2,5.436173732E1 +9.940620000E2,5.092257074E1 +9.944480000E2,4.973000793E1 +9.946940000E2,4.871235512E1 +9.949410000E2,5.171412848E1 +9.951960000E2,5.643245777E1 +9.954520000E2,5.548819002E1 +9.957530000E2,5.694822585E1 +9.960600000E2,5.668072577E1 +9.963110000E2,5.547400320E1 +9.966010000E2,5.667137699E1 +9.968430000E2,5.866196066E1 +9.971120000E2,5.641527163E1 +9.974300000E2,5.505243365E1 +9.977140000E2,5.491253296E1 +9.979940000E2,5.642986287E1 +9.982400000E2,5.111113898E1 +9.985270000E2,5.228293633E1 +9.987770000E2,5.380023266E1 +9.990760000E2,5.259255492E1 +9.993610000E2,5.359948032E1 +9.996550000E2,5.817439497E1 +9.999080000E2,5.712087238E1 +1.000199000E3,6.016800470E1 +1.000435000E3,5.758076017E1 +1.000772000E3,5.328951429E1 +1.001047000E3,5.373102399E1 +1.001303000E3,5.905317642E1 +1.001622000E3,5.478240688E1 +1.001877000E3,5.648896451E1 +1.002173000E3,5.587033976E1 +1.002422000E3,5.995513955E1 +1.002724000E3,6.295760047E1 +1.003003000E3,5.978713154E1 +1.003261000E3,5.669754444E1 +1.003545000E3,5.577942906E1 +1.003827000E3,6.186873273E1 +1.004183000E3,6.253868639E1 +1.004493000E3,5.777226132E1 +1.004770000E3,6.482227668E1 +1.005072000E3,5.923751414E1 +1.005323000E3,5.644465637E1 +1.005601000E3,6.074750234E1 +1.005832000E3,5.683683327E1 +1.006147000E3,5.957418887E1 +1.006418000E3,6.134946851E1 +1.006713000E3,5.641852300E1 +1.006952000E3,5.637674327E1 +1.007310000E3,5.484290206E1 +1.007589000E3,6.426865013E1 +1.007886000E3,5.712036033E1 +1.008127000E3,5.768385080E1 +1.008427000E3,5.812466970E1 +1.008666000E3,6.112344783E1 +1.008973000E3,5.606588478E1 +1.009269000E3,5.809328667E1 +1.009507000E3,5.371315435E1 +1.009763000E3,5.527533595E1 +1.010003000E3,5.390597114E1 +1.010379000E3,5.652035402E1 +1.010658000E3,5.490058638E1 +1.010920000E3,5.927019017E1 +1.011197000E3,5.293113048E1 +1.011458000E3,5.179006266E1 +1.011718000E3,5.366462930E1 +1.011979000E3,5.569421827E1 +1.012229000E3,5.341899104E1 +1.012477000E3,4.863208748E1 +1.012772000E3,6.037154816E1 +1.013036000E3,5.430849576E1 +1.013284000E3,5.735938261E1 +1.013671000E3,5.526482118E1 +1.013957000E3,5.731780297E1 +1.014225000E3,5.205368153E1 +1.014486000E3,5.548863756E1 +1.014733000E3,5.265038263E1 +1.015033000E3,5.986876322E1 +1.015314000E3,5.130643680E1 +1.015590000E3,6.086878634E1 +1.015830000E3,5.798526739E1 +1.016137000E3,6.825745236E1 +1.016387000E3,5.828900876E1 +1.016655000E3,5.873097643E1 +1.017001000E3,6.454090665E1 +1.017329000E3,6.385512775E1 +1.017637000E3,6.691081911E1 +1.017938000E3,6.580217665E1 +1.018229000E3,6.485489311E1 +1.018470000E3,6.387101962E1 +1.018706000E3,6.616835921E1 +1.018997000E3,5.951737331E1 +1.019235000E3,5.386458503E1 +1.019536000E3,5.756977765E1 +1.019801000E3,5.811747841E1 +1.020064000E3,5.930001089E1 +1.020406000E3,5.469664450E1 +1.020673000E3,5.181220980E1 +1.020925000E3,5.483858346E1 +1.021232000E3,5.716842569E1 +1.021527000E3,5.738254897E1 +1.021762000E3,5.628034518E1 +1.022007000E3,5.850971228E1 +1.022258000E3,5.329919175E1 +1.022556000E3,5.482637446E1 +1.022813000E3,5.690503448E1 +1.023071000E3,5.317501594E1 +1.023336000E3,4.870888301E1 +1.023687000E3,6.132281620E1 +1.023965000E3,6.262505101E1 +1.024220000E3,6.180229149E1 +1.024496000E3,6.130993335E1 +1.024741000E3,6.231376381E1 +1.025040000E3,6.164360059E1 +1.025279000E3,5.910065798E1 +1.025533000E3,5.622173801E1 +1.025821000E3,5.290311975E1 +1.026116000E3,5.028293308E1 +1.026403000E3,5.581740437E1 +1.026664000E3,5.988277804E1 +1.027011000E3,5.730548262E1 +1.027305000E3,5.417769573E1 +1.027578000E3,5.250932185E1 +1.027819000E3,5.139919708E1 +1.028128000E3,5.061852216E1 +1.028380000E3,4.722292138E1 +1.028683000E3,5.983070917E1 +1.028956000E3,6.045269830E1 +1.029182000E3,5.777292957E1 +1.029431000E3,5.497807442E1 +1.029734000E3,5.533889528E1 +1.030063000E3,5.373558580E1 +1.030323000E3,5.600729212E1 +1.030620000E3,5.467159629E1 +1.030863000E3,5.246400101E1 +1.031110000E3,5.468037288E1 +1.031367000E3,5.850364516E1 +1.031646000E3,5.490958739E1 +1.031911000E3,5.866929845E1 +1.032210000E3,5.708288591E1 +1.032475000E3,5.498129629E1 +1.032736000E3,5.670272599E1 +1.032986000E3,5.317143219E1 +1.033315000E3,5.758413128E1 +1.033557000E3,6.361635596E1 +1.033846000E3,5.513973379E1 +1.034093000E3,5.215484095E1 +1.034399000E3,5.465926438E1 +1.034684000E3,5.588902955E1 +1.034978000E3,5.387672604E1 +1.035280000E3,5.595327755E1 +1.035543000E3,5.621513504E1 +1.035825000E3,5.991854954E1 +1.036079000E3,5.864640009E1 +1.036322000E3,6.072021936E1 +1.036666000E3,5.462749592E1 +1.036971000E3,5.329083651E1 +1.037264000E3,5.401214501E1 +1.037542000E3,5.242806591E1 +1.037843000E3,5.573267887E1 +1.038091000E3,5.224254554E1 +1.038380000E3,5.453929206E1 +1.038635000E3,5.371826859E1 +1.038891000E3,4.369246898E1 +1.039145000E3,4.547521933E1 +1.039418000E3,4.204639660E1 +1.039750000E3,4.426760298E1 +1.039990000E3,4.955659514E1 +1.040294000E3,4.960859899E1 +1.040560000E3,4.841380220E1 +1.040808000E3,4.914533708E1 +1.041104000E3,4.650609937E1 +1.041370000E3,4.849101938E1 +1.041622000E3,5.065930763E1 +1.041920000E3,4.744161935E1 +1.042161000E3,4.448519483E1 +1.042478000E3,4.726532690E1 +1.042725000E3,4.667923132E1 +1.043042000E3,4.704822757E1 +1.043307000E3,3.950691106E1 +1.043560000E3,5.249697508E1 +1.043835000E3,4.753687679E1 +1.044091000E3,4.843049138E1 +1.044350000E3,5.394643708E1 +1.044644000E3,4.769079035E1 +1.044887000E3,5.111291504E1 +1.045194000E3,5.247298633E1 +1.045445000E3,4.904344971E1 +1.045693000E3,4.405437847E1 +1.045988000E3,4.750888237E1 +1.046301000E3,4.305046000E1 +1.046518000E3,4.630901796E1 +1.046813000E3,4.756289225E1 +1.047053000E3,4.661089273E1 +1.047331000E3,6.143859736E1 +1.047566000E3,5.702483033E1 +1.047860000E3,5.015015196E1 +1.048098000E3,5.180675157E1 +1.048397000E3,4.645218330E1 +1.048640000E3,4.317726503E1 +1.048918000E3,4.962602549E1 +1.049159000E3,4.922447391E1 +1.049523000E3,4.310015818E1 +1.049767000E3,5.584844461E1 +1.050011000E3,5.550466055E1 +1.050294000E3,5.076679182E1 +1.050523000E3,4.777565498E1 +1.050776000E3,5.078379664E1 +1.051031000E3,4.412618688E1 +1.051298000E3,3.933148532E1 +1.051551000E3,4.240994962E1 +1.051799000E3,3.715036539E1 +1.052054000E3,4.541823437E1 +1.052312000E3,3.252240989E1 +1.052661000E3,4.298387800E1 +1.052922000E3,4.065675211E1 +1.053171000E3,3.851226965E1 +1.053417000E3,3.833414863E1 +1.053702000E3,3.734543870E1 +1.053967000E3,4.406198141E1 +1.054269000E3,3.397952572E1 +1.054518000E3,3.018425986E1 +1.054795000E3,2.659023927E1 +1.055055000E3,3.230579484E1 +1.055319000E3,4.027650377E1 +1.055588000E3,3.256611719E1 +1.055936000E3,3.203904394E1 +1.056189000E3,3.024692018E1 +1.056469000E3,4.044611203E1 +1.056698000E3,3.245705712E1 +1.056956000E3,5.087039919E1 +1.057201000E3,5.278557071E1 +1.057507000E3,6.996122129E1 +1.057766000E3,6.951439283E1 +1.058027000E3,6.731609209E1 +1.058291000E3,5.787293958E1 +1.058571000E3,5.774874245E1 +1.058801000E3,5.291748766E1 +1.059132000E3,4.352220528E1 +1.059391000E3,5.556254729E1 +1.059665000E3,5.339220405E1 +1.059951000E3,5.593145301E1 +1.060235000E3,5.299996372E1 +1.060492000E3,4.882317894E1 +1.060733000E3,3.790707311E1 +1.060975000E3,3.470192076E1 +1.061278000E3,4.481563830E1 +1.061519000E3,4.823008935E1 +1.061816000E3,4.719850269E1 +1.062076000E3,4.706381680E1 +1.062331000E3,4.530378435E1 +1.062576000E3,3.456809562E1 +1.062882000E3,3.742453964E1 +1.063154000E3,3.905594906E1 +1.063397000E3,3.672857244E1 +1.063694000E3,2.941779164E1 +1.063926000E3,2.995931983E1 +1.064168000E3,3.455311118E1 +1.064461000E3,3.254662869E1 +1.064708000E3,3.652583843E1 +1.065001000E3,5.229424666E1 +1.065352000E3,5.178814165E1 +1.065606000E3,4.798098259E1 +1.065854000E3,3.636652329E1 +1.066121000E3,4.558252535E1 +1.066366000E3,3.902840121E1 +1.066629000E3,3.106435508E1 +1.066887000E3,2.541330464E1 +1.067179000E3,3.474902335E1 +1.067449000E3,4.492275189E1 +1.067698000E3,3.860211372E1 +1.067955000E3,4.332670525E1 +1.068251000E3,5.147667691E1 +1.068546000E3,5.152069997E1 +1.068797000E3,4.540650098E1 +1.069105000E3,4.486446450E1 +1.069378000E3,4.196481867E1 +1.069632000E3,4.863200791E1 +1.069908000E3,3.878967071E1 +1.070151000E3,3.630888030E1 +1.070413000E3,2.964429880E1 +1.070682000E3,3.354707636E1 +1.070956000E3,4.008490969E1 +1.071248000E3,3.576577653E1 +1.071553000E3,4.349754488E1 +1.071886000E3,3.824859907E1 +1.072130000E3,3.455877689E1 +1.072406000E3,3.622999465E1 +1.072717000E3,3.637608237E1 +1.072984000E3,3.645219519E1 +1.073255000E3,4.353729148E1 +1.073603000E3,4.287473251E1 +1.073856000E3,4.842203791E1 +1.074097000E3,4.484407311E1 +1.074356000E3,4.397007110E1 +1.074628000E3,4.695884235E1 +1.074931000E3,4.627189963E1 +1.075264000E3,4.689571524E1 +1.075614000E3,5.203841291E1 +1.075923000E3,4.610184941E1 +1.076163000E3,4.404432471E1 +1.076475000E3,4.923215011E1 +1.076765000E3,4.466142180E1 +1.077062000E3,4.987282715E1 +1.077375000E3,4.461839454E1 +1.077687000E3,5.085403766E1 +1.077991000E3,4.674512295E1 +1.078232000E3,5.167180279E1 +1.078544000E3,4.780582457E1 +1.078939000E3,4.593914406E1 +1.079187000E3,4.061652220E1 +1.079434000E3,4.347669045E1 +1.079712000E3,4.326983820E1 +1.079966000E3,3.511950991E1 +1.080260000E3,4.755279745E1 +1.080506000E3,4.756343862E1 +1.080756000E3,4.779732167E1 +1.081049000E3,4.991962747E1 +1.081293000E3,5.213887128E1 +1.081586000E3,5.357624469E1 +1.081916000E3,5.141456645E1 +1.082165000E3,5.036532462E1 +1.082460000E3,4.962769973E1 +1.082696000E3,4.506404490E1 +1.082988000E3,4.537987312E1 +1.083220000E3,4.738457007E1 +1.083529000E3,4.698711193E1 +1.083769000E3,4.571430081E1 +1.084079000E3,4.980908007E1 +1.084324000E3,5.082282040E1 +1.084590000E3,5.406004268E1 +1.084876000E3,5.436375886E1 +1.085258000E3,5.361506257E1 +1.085509000E3,5.202937925E1 +1.085815000E3,5.324976969E1 +1.086057000E3,5.371445731E1 +1.086301000E3,5.282162917E1 +1.086550000E3,5.221281857E1 +1.086802000E3,5.263727375E1 +1.087126000E3,5.703022139E1 +1.087384000E3,5.519432869E1 +1.087646000E3,5.426647490E1 +1.087939000E3,5.407342864E1 +1.088175000E3,5.235924404E1 +1.088520000E3,4.681002832E1 +1.088812000E3,4.891237586E1 +1.089076000E3,4.699020733E1 +1.089350000E3,4.902871382E1 +1.089591000E3,5.078145117E1 +1.089837000E3,5.041791921E1 +1.090133000E3,4.603650794E1 +1.090430000E3,4.871755485E1 +1.090660000E3,5.111421073E1 +1.090911000E3,4.581894631E1 +1.091248000E3,4.988189917E1 +1.091630000E3,5.341365920E1 +1.091902000E3,4.962858025E1 +1.092183000E3,4.315344358E1 +1.092440000E3,4.664431132E1 +1.092683000E3,4.616459192E1 +1.092923000E3,4.765071496E1 +1.093171000E3,4.163360687E1 +1.093473000E3,4.537777608E1 +1.093714000E3,4.783603025E1 +1.094007000E3,4.845414260E1 +1.094261000E3,4.799870549E1 +1.094499000E3,4.651309815E1 +1.094792000E3,5.003648984E1 +1.095123000E3,5.202534254E1 +1.095372000E3,5.709400077E1 +1.095625000E3,5.694079106E1 +1.095896000E3,5.715452089E1 +1.096196000E3,5.523378380E1 +1.096438000E3,5.375558627E1 +1.096737000E3,5.665208041E1 +1.096991000E3,5.314654737E1 +1.097292000E3,5.142447849E1 +1.097557000E3,5.330628285E1 +1.097827000E3,5.512040694E1 +1.098167000E3,5.399583122E1 +1.098472000E3,5.540663813E1 +1.098720000E3,5.200546986E1 +1.098960000E3,4.676140326E1 +1.099243000E3,4.798657093E1 +1.099544000E3,4.841724285E1 +1.099804000E3,5.642371618E1 +1.100109000E3,5.409000726E1 +1.100381000E3,5.348646719E1 +1.100630000E3,5.346537578E1 +1.100927000E3,5.422782845E1 +1.101164000E3,5.395323822E1 +1.101495000E3,5.383967560E1 +1.101763000E3,5.667828538E1 +1.102044000E3,4.764690784E1 +1.102307000E3,5.353530254E1 +1.102613000E3,5.568430762E1 +1.102906000E3,5.431580275E1 +1.103147000E3,5.193331555E1 +1.103441000E3,5.040945762E1 +1.103677000E3,5.333005838E1 +1.103968000E3,4.947534745E1 +1.104272000E3,5.306270968E1 +1.104564000E3,5.537230515E1 +1.104799000E3,4.876041085E1 +1.105069000E3,5.109409535E1 +1.105330000E3,5.087734214E1 +1.105587000E3,5.225642483E1 +1.105838000E3,5.176680091E1 +1.106135000E3,5.535939212E1 +1.106380000E3,5.666892185E1 +1.106622000E3,5.658846562E1 +1.106895000E3,5.577897889E1 +1.107150000E3,5.157178717E1 +1.107431000E3,5.284488409E1 +1.107756000E3,5.415639955E1 +1.108002000E3,5.465643057E1 +1.108313000E3,4.654328988E1 +1.108563000E3,5.038890380E1 +1.108811000E3,4.602751738E1 +1.109073000E3,4.801243396E1 +1.109375000E3,4.782472616E1 +1.109667000E3,4.666447221E1 +1.109943000E3,5.156469126E1 +1.110192000E3,4.949682888E1 +1.110448000E3,4.919673339E1 +1.110752000E3,4.862521519E1 +1.111045000E3,5.122379655E1 +1.111295000E3,4.813892217E1 +1.111515000E3,4.901611396E1 +1.111761000E3,4.905664967E1 +1.112005000E3,4.647618514E1 +1.112265000E3,4.730688076E1 +1.112537000E3,5.039121351E1 +1.112793000E3,4.985611957E1 +1.113101000E3,5.474563863E1 +1.113387000E3,5.028870882E1 +1.113678000E3,5.073784750E1 +1.113952000E3,4.995138555E1 +1.114291000E3,4.790039203E1 +1.114554000E3,4.764335594E1 +1.114849000E3,5.057104591E1 +1.115096000E3,5.107398730E1 +1.115401000E3,4.800391913E1 +1.115672000E3,4.553282874E1 +1.115895000E3,4.569523337E1 +1.116194000E3,4.480844215E1 +1.116425000E3,4.772339962E1 +1.116664000E3,5.255452638E1 +1.116906000E3,4.927433934E1 +1.117202000E3,4.871369865E1 +1.117530000E3,4.928110420E1 +1.117840000E3,5.705383563E1 +1.118146000E3,4.880674861E1 +1.118418000E3,5.038180726E1 +1.118687000E3,5.145980404E1 +1.118950000E3,5.338008269E1 +1.119227000E3,5.227728425E1 +1.119468000E3,5.450689216E1 +1.119736000E3,5.844246451E1 +1.120049000E3,5.459398611E1 +1.120351000E3,5.526423567E1 +1.120605000E3,5.228963309E1 +1.120918000E3,5.598288902E1 +1.121182000E3,5.280889802E1 +1.121489000E3,4.974717420E1 +1.121729000E3,5.137523152E1 +1.121978000E3,5.052356297E1 +1.122235000E3,5.240368249E1 +1.122503000E3,4.826380791E1 +1.122775000E3,5.095403791E1 +1.123036000E3,5.799909934E1 +1.123291000E3,4.889512711E1 +1.123587000E3,5.622808486E1 +1.123874000E3,5.230369090E1 +1.124235000E3,5.081102316E1 +1.124544000E3,5.628773803E1 +1.124826000E3,5.810547372E1 +1.125153000E3,5.508029719E1 +1.125432000E3,5.576573503E1 +1.125722000E3,5.346022180E1 +1.125978000E3,5.279748306E1 +1.126234000E3,5.604802053E1 +1.126502000E3,5.937326657E1 +1.126804000E3,5.703447215E1 +1.127047000E3,5.520354594E1 +1.127314000E3,5.551787326E1 +1.127554000E3,5.740837773E1 +1.127843000E3,5.663015330E1 +1.128135000E3,5.649615150E1 +1.128380000E3,5.731556257E1 +1.128677000E3,6.079986861E1 +1.128914000E3,5.820128856E1 +1.129207000E3,6.091746513E1 +1.129442000E3,6.126941240E1 +1.129745000E3,4.541170906E1 +1.129980000E3,4.341485096E1 +1.130277000E3,4.833777967E1 +1.130573000E3,4.472710223E1 +1.130815000E3,5.059675199E1 +1.131062000E3,3.863826940E1 +1.131353000E3,4.925455740E1 +1.131589000E3,4.859989956E1 +1.131881000E3,5.113067908E1 +1.132117000E3,5.054542106E1 +1.132418000E3,4.827479925E1 +1.132654000E3,4.610884488E1 +1.132948000E3,4.879734536E1 +1.133241000E3,5.074680390E1 +1.133563000E3,5.119298220E1 +1.133864000E3,4.861265792E1 +1.134166000E3,5.001512903E1 +1.134452000E3,5.059053464E1 +1.134716000E3,4.999839479E1 +1.134967000E3,4.960069086E1 +1.135222000E3,5.320256888E1 +1.135494000E3,5.604818163E1 +1.135742000E3,5.625768045E1 +1.135999000E3,5.261645024E1 +1.136244000E3,5.105081932E1 +1.136501000E3,5.616444939E1 +1.136847000E3,5.624064264E1 +1.137105000E3,5.654097446E1 +1.137391000E3,5.807884104E1 +1.137717000E3,5.436169891E1 +1.137970000E3,5.763959225E1 +1.138239000E3,5.465216875E1 +1.138486000E3,5.094509116E1 +1.138731000E3,5.425415233E1 +1.138977000E3,5.143709697E1 +1.139259000E3,5.032545705E1 +1.139527000E3,5.906031130E1 +1.139800000E3,5.308709054E1 +1.140168000E3,5.407062541E1 +1.140423000E3,5.585261351E1 +1.140694000E3,5.463535881E1 +1.140949000E3,5.407603664E1 +1.141230000E3,5.495767686E1 +1.141512000E3,5.639433741E1 +1.141818000E3,5.555715330E1 +1.142072000E3,5.729232944E1 +1.142323000E3,5.553013253E1 +1.142578000E3,5.648251207E1 +1.142844000E3,5.786931075E1 +1.143143000E3,6.007493220E1 +1.143523000E3,5.752076543E1 +1.143836000E3,5.573324560E1 +1.144090000E3,5.641950784E1 +1.144396000E3,5.532270625E1 +1.144644000E3,5.561239732E1 +1.144940000E3,5.206707456E1 +1.145212000E3,5.092140902E1 +1.145511000E3,5.452891649E1 +1.145770000E3,5.331137977E1 +1.146042000E3,5.366568195E1 +1.146338000E3,5.227174013E1 +1.146650000E3,5.423955559E1 +1.146934000E3,5.781916580E1 +1.147218000E3,5.532962824E1 +1.147467000E3,5.502661676E1 +1.147687000E3,5.823979674E1 +1.147961000E3,5.538066560E1 +1.148276000E3,5.423260060E1 +1.148528000E3,5.197461977E1 +1.148799000E3,5.154724487E1 +1.149057000E3,5.473685923E1 +1.149367000E3,5.647867848E1 +1.149660000E3,5.489455072E1 +1.150037000E3,6.072892064E1 +1.150335000E3,5.543869835E1 +1.150594000E3,5.667713742E1 +1.150870000E3,5.818755157E1 +1.151164000E3,5.210849760E1 +1.151411000E3,5.095671455E1 +1.151703000E3,5.254983272E1 +1.152002000E3,5.585064224E1 +1.152253000E3,5.739007574E1 +1.152582000E3,5.895179917E1 +1.152860000E3,5.461317681E1 +1.153122000E3,5.345759293E1 +1.153381000E3,5.267971619E1 +1.153684000E3,6.006602205E1 +1.153986000E3,5.573552061E1 +1.154286000E3,5.518963618E1 +1.154531000E3,5.342922095E1 +1.154792000E3,5.257536969E1 +1.155139000E3,4.887945516E1 +1.155435000E3,4.702411688E1 +1.155680000E3,4.867646616E1 +1.155978000E3,4.811861077E1 +1.156361000E3,4.915586406E1 +1.156670000E3,5.033026069E1 +1.156976000E3,5.393908378E1 +1.157274000E3,5.295128205E1 +1.157524000E3,5.249671789E1 +1.157816000E3,5.314344994E1 +1.158052000E3,5.237342933E1 +1.158353000E3,5.300284286E1 +1.158590000E3,5.170068449E1 +1.158867000E3,5.174146304E1 +1.159147000E3,4.929588783E1 +1.159411000E3,5.699090425E1 +1.159752000E3,5.266690351E1 +1.160068000E3,5.746767577E1 +1.160360000E3,5.375850846E1 +1.160640000E3,5.373794020E1 +1.160985000E3,5.304914530E1 +1.161280000E3,5.198754593E1 +1.161525000E3,5.019848207E1 +1.161766000E3,5.164623609E1 +1.162020000E3,5.363319210E1 +1.162324000E3,5.439011044E1 +1.162564000E3,5.304648945E1 +1.162816000E3,5.174573718E1 +1.163177000E3,4.505755779E1 +1.163462000E3,4.894753105E1 +1.163738000E3,5.064933943E1 +1.164013000E3,5.245879056E1 +1.164255000E3,5.017914517E1 +1.164568000E3,5.189205429E1 +1.164823000E3,5.038961444E1 +1.165052000E3,5.072118593E1 +1.165297000E3,4.831662547E1 +1.165552000E3,5.050204887E1 +1.165808000E3,5.308107982E1 +1.166062000E3,4.878509871E1 +1.166392000E3,5.002605106E1 +1.166654000E3,5.320265697E1 +1.166911000E3,4.403273534E1 +1.167180000E3,5.161386051E1 +1.167455000E3,4.986209571E1 +1.167692000E3,4.993305836E1 +1.167973000E3,5.173621365E1 +1.168216000E3,5.385559129E1 +1.168491000E3,5.543019156E1 +1.168757000E3,5.019966657E1 +1.169035000E3,5.569516326E1 +1.169296000E3,5.216419082E1 +1.169676000E3,5.398731996E1 +1.169933000E3,5.465625282E1 +1.170197000E3,5.451774184E1 +1.170449000E3,5.328129322E1 +1.170705000E3,5.452639907E1 +1.170963000E3,5.713735254E1 +1.171272000E3,5.551413923E1 +1.171528000E3,5.604966001E1 +1.171779000E3,5.340478404E1 +1.172038000E3,5.107817821E1 +1.172291000E3,5.218990306E1 +1.172602000E3,4.830451720E1 +1.172964000E3,5.276802164E1 +1.173245000E3,5.191204687E1 +1.173527000E3,5.337367972E1 +1.173838000E3,5.462664550E1 +1.174090000E3,5.304724513E1 +1.174379000E3,5.193251440E1 +1.174628000E3,5.283915893E1 +1.174936000E3,5.036641160E1 +1.175236000E3,4.890810708E1 +1.175487000E3,4.805298565E1 +1.175750000E3,5.067335741E1 +1.176019000E3,4.961207397E1 +1.176335000E3,4.820862314E1 +1.176634000E3,5.328684116E1 +1.176883000E3,5.122009001E1 +1.177165000E3,5.878687770E1 +1.177412000E3,5.487235950E1 +1.177709000E3,5.224569426E1 +1.178006000E3,5.403405997E1 +1.178246000E3,5.388661901E1 +1.178490000E3,5.237426881E1 +1.178734000E3,5.372043820E1 +1.179050000E3,5.471170909E1 +1.179387000E3,5.129350436E1 +1.179686000E3,4.660070824E1 +1.179916000E3,4.541361068E1 +1.180159000E3,4.365576113E1 +1.180466000E3,4.771103553E1 +1.180756000E3,4.863237791E1 +1.181008000E3,5.534959697E1 +1.181314000E3,5.376444060E1 +1.181609000E3,5.130885425E1 +1.181851000E3,5.256948786E1 +1.182151000E3,5.321964637E1 +1.182393000E3,5.074776981E1 +1.182622000E3,4.979941250E1 +1.182873000E3,5.445637667E1 +1.183116000E3,4.449721128E1 +1.183420000E3,5.086906199E1 +1.183676000E3,5.067998506E1 +1.183927000E3,5.352019181E1 +1.184219000E3,4.851971310E1 +1.184517000E3,5.123853013E1 +1.184764000E3,5.278221141E1 +1.185010000E3,5.126409245E1 +1.185297000E3,5.249182764E1 +1.185665000E3,5.346599478E1 +1.185972000E3,5.052250297E1 +1.186225000E3,5.389354916E1 +1.186534000E3,5.372737626E1 +1.186796000E3,5.415645782E1 +1.187048000E3,5.441424865E1 +1.187317000E3,5.470553815E1 +1.187622000E3,5.559990781E1 +1.187913000E3,5.619293356E1 +1.188186000E3,4.869472445E1 +1.188442000E3,5.069948923E1 +1.188718000E3,5.296813397E1 +1.189051000E3,5.015003063E1 +1.189308000E3,5.110938827E1 +1.189570000E3,5.250182053E1 +1.189815000E3,5.240850659E1 +1.190062000E3,5.446862868E1 +1.190368000E3,5.270463767E1 +1.190629000E3,5.117539458E1 +1.190931000E3,5.543767536E1 +1.191207000E3,5.348622922E1 +1.191505000E3,5.112152946E1 +1.191761000E3,4.905277341E1 +1.192068000E3,5.456405848E1 +1.192487000E3,5.016322677E1 +1.192732000E3,4.971711263E1 +1.192976000E3,5.396031961E1 +1.193258000E3,5.018645567E1 +1.193531000E3,4.895586707E1 +1.193790000E3,5.442023654E1 +1.194055000E3,5.160697029E1 +1.194326000E3,4.822365107E1 +1.194605000E3,5.396633777E1 +1.194903000E3,5.031021734E1 +1.195141000E3,5.278015326E1 +1.195431000E3,4.949576105E1 +1.195801000E3,5.244682833E1 +1.196076000E3,5.508575727E1 +1.196371000E3,5.161802747E1 +1.196603000E3,5.716896987E1 +1.196858000E3,5.210002974E1 +1.197207000E3,5.483594793E1 +1.197503000E3,5.204828926E1 +1.197774000E3,5.339169315E1 +1.198054000E3,4.934781945E1 +1.198312000E3,5.918797425E1 +1.198559000E3,5.025254784E1 +1.198808000E3,5.317746302E1 +1.199152000E3,5.656715516E1 +1.199464000E3,5.448426177E1 +1.199717000E3,5.419526565E1 +1.199961000E3,5.304156540E1 +1.200219000E3,4.961182292E1 +1.200480000E3,5.259766625E1 +1.200730000E3,5.295115767E1 +1.201029000E3,5.365389524E1 +1.201288000E3,5.465027972E1 +1.201538000E3,5.131261505E1 +1.201807000E3,5.767453751E1 +1.202112000E3,5.316006082E1 +1.202485000E3,5.263333972E1 +1.202739000E3,4.966297173E1 +1.203041000E3,5.282706501E1 +1.203300000E3,4.950274237E1 +1.203539000E3,4.377779375E1 +1.203832000E3,5.274682795E1 +1.204077000E3,5.348405653E1 +1.204320000E3,5.647600154E1 +1.204615000E3,4.835002395E1 +1.204854000E3,4.440243109E1 +1.205149000E3,4.673035253E1 +1.205410000E3,4.901106802E1 +1.205666000E3,5.311033159E1 +1.205952000E3,5.020567211E1 +1.206248000E3,5.046889058E1 +1.206545000E3,6.150607502E1 +1.206779000E3,5.260331634E1 +1.207093000E3,5.183291791E1 +1.207367000E3,4.957331060E1 +1.207610000E3,5.139200370E1 +1.207857000E3,5.005726187E1 +1.208158000E3,4.979521937E1 +1.208398000E3,5.178137337E1 +1.208738000E3,4.632694184E1 +1.208994000E3,4.836915777E1 +1.209279000E3,4.869228435E1 +1.209528000E3,5.096507040E1 +1.209784000E3,4.718590489E1 +1.210053000E3,4.835967114E1 +1.210281000E3,4.725223201E1 +1.210542000E3,5.172958855E1 +1.210823000E3,5.546336112E1 +1.211051000E3,5.448218663E1 +1.211300000E3,5.371995163E1 +1.211551000E3,4.887559574E1 +1.211926000E3,4.975732945E1 +1.212205000E3,5.041543230E1 +1.212482000E3,4.863959509E1 +1.212730000E3,5.047232348E1 +1.212990000E3,4.824384094E1 +1.213232000E3,5.039377586E1 +1.213493000E3,4.517891187E1 +1.213814000E3,4.686032989E1 +1.214062000E3,4.852263494E1 +1.214337000E3,4.897277606E1 +1.214586000E3,4.662047985E1 +1.214832000E3,5.483925472E1 +1.215143000E3,5.677489998E1 +1.215372000E3,5.470688254E1 +1.215664000E3,5.408747991E1 +1.215962000E3,5.167832591E1 +1.216227000E3,5.463116224E1 +1.216504000E3,5.335564969E1 +1.216747000E3,4.832376612E1 +1.216996000E3,4.918538596E1 +1.217306000E3,5.329611015E1 +1.217618000E3,5.364881155E1 +1.217885000E3,5.087209115E1 +1.218149000E3,4.967310650E1 +1.218497000E3,4.842689624E1 +1.218801000E3,5.442588779E1 +1.219043000E3,5.338467746E1 +1.219349000E3,5.187371665E1 +1.219600000E3,4.992515182E1 +1.219883000E3,5.205809257E1 +1.220161000E3,5.374364962E1 +1.220471000E3,5.145920034E1 +1.220752000E3,5.112774200E1 +1.221009000E3,4.969936214E1 +1.221258000E3,4.906585252E1 +1.221519000E3,4.971022706E1 +1.221873000E3,5.039216656E1 +1.222125000E3,4.735018859E1 +1.222388000E3,5.025223930E1 +1.222647000E3,5.349102952E1 +1.222903000E3,5.894430216E1 +1.223210000E3,5.133834742E1 +1.223464000E3,5.378681025E1 +1.223708000E3,5.646161983E1 +1.223949000E3,5.127610878E1 +1.224189000E3,5.295211205E1 +1.224441000E3,5.074229414E1 +1.224698000E3,5.428527885E1 +1.225064000E3,6.064230054E1 +1.225333000E3,5.545461106E1 +1.225591000E3,5.085263163E1 +1.225847000E3,4.867332677E1 +1.226137000E3,4.828036819E1 +1.226394000E3,5.187031217E1 +1.226668000E3,4.691949774E1 +1.226931000E3,4.605300024E1 +1.227219000E3,4.319091646E1 +1.227493000E3,4.827268256E1 +1.227791000E3,4.873371181E1 +1.228031000E3,4.895629331E1 +1.228388000E3,4.831306026E1 +1.228651000E3,5.150144778E1 +1.228942000E3,5.210555115E1 +1.229190000E3,4.868630793E1 +1.229442000E3,5.072280558E1 +1.229686000E3,5.520857657E1 +1.229933000E3,5.597505745E1 +1.230228000E3,5.309096620E1 +1.230467000E3,5.340491117E1 +1.230765000E3,4.966814228E1 +1.231012000E3,4.811713105E1 +1.231316000E3,5.037869561E1 +1.231666000E3,4.768651081E1 +1.231948000E3,4.577834304E1 +1.232207000E3,4.455407567E1 +1.232510000E3,5.091422235E1 +1.232802000E3,4.990562511E1 +1.233047000E3,5.178152081E1 +1.233344000E3,5.312014577E1 +1.233592000E3,5.002236071E1 +1.233892000E3,5.158473192E1 +1.234173000E3,4.692863129E1 +1.234463000E3,4.643331531E1 +1.234792000E3,4.659156592E1 +1.235060000E3,4.662718910E1 +1.235313000E3,5.204491267E1 +1.235577000E3,5.165973487E1 +1.235837000E3,4.753691687E1 +1.236124000E3,5.179615379E1 +1.236401000E3,4.807409380E1 +1.236654000E3,5.474790946E1 +1.236923000E3,4.946475170E1 +1.237180000E3,4.949471083E1 +1.237426000E3,4.669168363E1 +1.237743000E3,5.529942944E1 +1.238061000E3,5.997488643E1 +1.238363000E3,5.302222406E1 +1.238611000E3,5.022506453E1 +1.238856000E3,4.864145193E1 +1.239102000E3,5.299123845E1 +1.239357000E3,4.682866815E1 +1.239657000E3,4.770894983E1 +1.239902000E3,4.813746372E1 +1.240150000E3,4.571771059E1 +1.240465000E3,5.354012247E1 +1.240765000E3,5.830707734E1 +1.241013000E3,5.483189048E1 +1.241344000E3,5.157405593E1 +1.241606000E3,5.072581437E1 +1.241868000E3,5.137979859E1 +1.242133000E3,4.849261303E1 +1.242396000E3,5.556107710E1 +1.242656000E3,4.958779284E1 +1.242959000E3,5.301548021E1 +1.243232000E3,5.475621292E1 +1.243501000E3,5.660789219E1 +1.243755000E3,5.350018163E1 +1.244010000E3,5.415674835E1 +1.244349000E3,5.699979568E1 +1.244717000E3,5.660044844E1 +1.245015000E3,5.808533709E1 +1.245259000E3,5.881859790E1 +1.245558000E3,5.728882886E1 +1.245808000E3,6.044308225E1 +1.246079000E3,5.893900513E1 +1.246326000E3,5.279872381E1 +1.246637000E3,5.769196864E1 +1.246935000E3,5.963088900E1 +1.247181000E3,5.367341836E1 +1.247508000E3,4.963645506E1 +1.247848000E3,5.265770489E1 +1.248115000E3,5.355743381E1 +1.248359000E3,4.891015342E1 +1.248659000E3,4.819353582E1 +1.248902000E3,4.966403220E1 +1.249199000E3,4.977495696E1 +1.249449000E3,5.715212626E1 +1.249708000E3,5.458337902E1 +1.249983000E3,4.910795823E1 +1.250282000E3,5.184902745E1 +1.250527000E3,5.416053460E1 +1.250777000E3,5.320773170E1 +1.251084000E3,5.422274265E1 +1.251342000E3,5.429456299E1 +1.251602000E3,5.910733722E1 +1.251866000E3,5.226490816E1 +1.252178000E3,5.191466859E1 +1.252452000E3,5.143339371E1 +1.252681000E3,5.066846779E1 +1.252975000E3,4.928639562E1 +1.253256000E3,4.916995298E1 +1.253528000E3,5.115941927E1 +1.253816000E3,4.850268402E1 +1.254063000E3,5.682920937E1 +1.254418000E3,5.583927157E1 +1.254700000E3,5.243405901E1 +1.254947000E3,5.411796563E1 +1.255215000E3,5.538314624E1 +1.255487000E3,5.447026824E1 +1.255748000E3,5.115232974E1 +1.256046000E3,5.273125350E1 +1.256281000E3,5.501639825E1 +1.256559000E3,5.470702619E1 +1.256867000E3,5.330168249E1 +1.257116000E3,5.680033697E1 +1.257361000E3,5.088137081E1 +1.257690000E3,4.771044205E1 +1.257935000E3,5.556188303E1 +1.258189000E3,5.821474305E1 +1.258460000E3,5.913083175E1 +1.258757000E3,5.624840253E1 +1.259001000E3,5.575040009E1 +1.259294000E3,5.295140054E1 +1.259581000E3,5.547885633E1 +1.259831000E3,5.659634167E1 +1.260084000E3,5.552607398E1 +1.260378000E3,5.399987136E1 +1.260676000E3,5.741946227E1 +1.260997000E3,5.622829253E1 +1.261272000E3,5.638519080E1 +1.261569000E3,5.222122782E1 +1.261810000E3,5.168558616E1 +1.262055000E3,5.937417075E1 +1.262351000E3,5.419990938E1 +1.262597000E3,5.469291977E1 +1.262893000E3,5.501007253E1 +1.263142000E3,5.356116387E1 +1.263421000E3,5.643294047E1 +1.263644000E3,5.627927149E1 +1.263964000E3,5.547827797E1 +1.264255000E3,5.434029164E1 +1.264552000E3,5.355134450E1 +1.264791000E3,5.268456483E1 +1.265090000E3,5.304298782E1 +1.265342000E3,5.292557941E1 +1.265637000E3,5.267823535E1 +1.265885000E3,5.076475521E1 +1.266186000E3,5.470463807E1 +1.266480000E3,5.369531663E1 +1.266727000E3,5.321314382E1 +1.267074000E3,5.430022488E1 +1.267386000E3,5.498366079E1 +1.267650000E3,5.373765381E1 +1.267926000E3,5.631680810E1 +1.268156000E3,5.314598601E1 +1.268459000E3,5.446778700E1 +1.268718000E3,5.461487175E1 +1.269029000E3,4.723979401E1 +1.269322000E3,5.050485841E1 +1.269602000E3,5.263446338E1 +1.269914000E3,5.195043172E1 +1.270180000E3,5.361139844E1 +1.270542000E3,5.127785292E1 +1.270796000E3,5.111084292E1 +1.271061000E3,5.030178225E1 +1.271329000E3,4.978955516E1 +1.271616000E3,5.398913319E1 +1.271862000E3,5.537806166E1 +1.272155000E3,5.301545016E1 +1.272407000E3,5.450597504E1 +1.272651000E3,5.090153644E1 +1.272906000E3,5.335437953E1 +1.273148000E3,4.673762491E1 +1.273392000E3,5.062539325E1 +1.273710000E3,5.110756444E1 +1.273960000E3,5.466659884E1 +1.274217000E3,5.158121780E1 +1.274511000E3,5.575560452E1 +1.274759000E3,5.536976579E1 +1.275054000E3,5.425250328E1 +1.275298000E3,5.448034930E1 +1.275544000E3,5.185016662E1 +1.275828000E3,5.206320816E1 +1.276126000E3,5.118466074E1 +1.276376000E3,4.943928704E1 +1.276707000E3,5.090592254E1 +1.276972000E3,5.767487174E1 +1.277251000E3,5.481331862E1 +1.277544000E3,5.385854096E1 +1.277810000E3,5.179333541E1 +1.278097000E3,5.161992279E1 +1.278344000E3,5.248655937E1 +1.278657000E3,5.064236034E1 +1.278927000E3,4.915402835E1 +1.279197000E3,5.321156971E1 +1.279471000E3,5.438812541E1 +1.279734000E3,5.482588411E1 +1.280065000E3,5.157318203E1 +1.280296000E3,5.173449962E1 +1.280546000E3,5.465953878E1 +1.280843000E3,5.457680704E1 +1.281077000E3,5.562152963E1 +1.281325000E3,5.460406982E1 +1.281570000E3,5.232421403E1 +1.281870000E3,5.207576719E1 +1.282135000E3,4.968186040E1 +1.282378000E3,5.237915347E1 +1.282628000E3,4.745539727E1 +1.282877000E3,5.255989147E1 +1.283195000E3,5.301690658E1 +1.283467000E3,5.283539029E1 +1.283717000E3,5.083105477E1 +1.283978000E3,4.559322742E1 +1.284235000E3,4.934435088E1 +1.284538000E3,5.265118466E1 +1.284812000E3,5.302155906E1 +1.285045000E3,5.294725202E1 +1.285352000E3,5.129236762E1 +1.285646000E3,5.402858483E1 +1.285898000E3,5.434527110E1 +1.286189000E3,5.525625388E1 +1.286515000E3,5.653073998E1 +1.286819000E3,5.704731902E1 +1.287101000E3,5.310035962E1 +1.287387000E3,5.474072190E1 +1.287649000E3,5.496979063E1 +1.287925000E3,5.528941101E1 +1.288193000E3,5.394330028E1 +1.288492000E3,4.829171318E1 +1.288740000E3,5.076324605E1 +1.289004000E3,4.673843249E1 +1.289280000E3,5.345749476E1 +1.289584000E3,4.955238815E1 +1.289923000E3,5.268555513E1 +1.290206000E3,5.092762320E1 +1.290445000E3,5.180504716E1 +1.290779000E3,5.421996562E1 +1.291081000E3,5.408565728E1 +1.291322000E3,5.466627749E1 +1.291622000E3,5.247549140E1 +1.291870000E3,5.438915347E1 +1.292125000E3,5.526358440E1 +1.292428000E3,5.407200655E1 +1.292723000E3,5.160593410E1 +1.293035000E3,5.231731426E1 +1.293342000E3,5.126765219E1 +1.293626000E3,4.802016847E1 +1.293922000E3,5.428603515E1 +1.294199000E3,5.305841291E1 +1.294451000E3,5.676250586E1 +1.294738000E3,5.921971496E1 +1.295005000E3,5.812051865E1 +1.295266000E3,5.671365947E1 +1.295512000E3,5.389157640E1 +1.295809000E3,5.417883641E1 +1.296087000E3,5.169085532E1 +1.296408000E3,5.027989141E1 +1.296704000E3,5.801273246E1 +1.296951000E3,5.777618357E1 +1.297241000E3,5.598217178E1 +1.297547000E3,5.590671112E1 +1.297806000E3,6.302454961E1 +1.298073000E3,5.716944646E1 +1.298330000E3,5.693666329E1 +1.298591000E3,5.374930006E1 +1.298851000E3,5.170089530E1 +1.299100000E3,6.243829367E1 +1.299340000E3,5.522680485E1 +1.299673000E3,5.451288060E1 +1.299933000E3,5.720613947E1 +1.300193000E3,5.131457759E1 +1.300510000E3,5.593393786E1 +1.300810000E3,5.344184529E1 +1.301099000E3,5.432320381E1 +1.301355000E3,5.294046944E1 +1.301602000E3,5.330691828E1 +1.301911000E3,4.899471979E1 +1.302175000E3,5.054546621E1 +1.302420000E3,4.914598102E1 +1.302706000E3,5.757950400E1 +1.303045000E3,5.798603958E1 +1.303343000E3,5.685278830E1 +1.303584000E3,5.272645619E1 +1.303869000E3,5.576083132E1 +1.304169000E3,5.311655900E1 +1.304414000E3,5.297304035E1 +1.304724000E3,6.119658997E1 +1.304998000E3,5.921259630E1 +1.305275000E3,5.974785927E1 +1.305567000E3,5.829108198E1 +1.305799000E3,5.656256791E1 +1.306151000E3,5.263150293E1 +1.306475000E3,5.719715846E1 +1.306754000E3,5.746813017E1 +1.307020000E3,6.063794361E1 +1.307320000E3,5.945639283E1 +1.307570000E3,5.898495898E1 +1.307856000E3,5.345744690E1 +1.308127000E3,5.882374416E1 +1.308390000E3,5.704844280E1 +1.308660000E3,6.230218860E1 +1.308982000E3,5.794977886E1 +1.309252000E3,5.609480230E1 +1.309620000E3,5.439173238E1 +1.309924000E3,5.804315704E1 +1.310253000E3,5.898090143E1 +1.310510000E3,5.933785859E1 +1.310826000E3,5.484966867E1 +1.311077000E3,5.841635068E1 +1.311358000E3,5.536029260E1 +1.311601000E3,5.555523834E1 +1.311895000E3,5.637714479E1 +1.312195000E3,5.253312652E1 +1.312445000E3,5.377927694E1 +1.312696000E3,5.757954833E1 +1.313038000E3,5.500733438E1 +1.313282000E3,5.367385274E1 +1.313558000E3,5.610715122E1 +1.313797000E3,5.528556803E1 +1.314063000E3,5.884958532E1 +1.314412000E3,5.458036035E1 +1.314671000E3,5.765344335E1 +1.314945000E3,5.139756723E1 +1.315223000E3,5.546002517E1 +1.315503000E3,5.608276603E1 +1.315733000E3,5.719791479E1 +1.315986000E3,5.413888898E1 +1.316329000E3,5.789500166E1 +1.316579000E3,5.404086097E1 +1.316819000E3,6.021843554E1 +1.317067000E3,5.929690830E1 +1.317365000E3,6.066063258E1 +1.317666000E3,5.465341745E1 +1.317917000E3,5.115712079E1 +1.318169000E3,4.986479689E1 +1.318470000E3,5.351977371E1 +1.318716000E3,5.614277654E1 +1.318987000E3,5.824140620E1 +1.319280000E3,5.863858703E1 +1.319646000E3,5.908977231E1 +1.319902000E3,5.867594430E1 +1.320142000E3,5.256185028E1 +1.320379000E3,5.916248935E1 +1.320672000E3,5.829134786E1 +1.320910000E3,5.729121950E1 +1.321203000E3,5.817253701E1 +1.321434000E3,5.958327052E1 +1.321726000E3,6.109571062E1 +1.321963000E3,6.309400740E1 +1.322263000E3,6.381431561E1 +1.322586000E3,6.124594205E1 +1.322839000E3,6.120886427E1 +1.323128000E3,5.624496406E1 +1.323377000E3,6.205845751E1 +1.323676000E3,6.248705287E1 +1.323968000E3,6.259357777E1 +1.324217000E3,6.168308921E1 +1.324496000E3,6.128297543E1 +1.324731000E3,5.975404370E1 +1.325024000E3,6.147148959E1 +1.325261000E3,6.101142333E1 +1.325573000E3,5.682124874E1 +1.325854000E3,5.869490284E1 +1.326149000E3,5.646663249E1 +1.326392000E3,5.662110608E1 +1.326643000E3,5.067702480E1 +1.326984000E3,5.759763927E1 +1.327264000E3,5.613584630E1 +1.327489000E3,5.826097161E1 +1.327735000E3,5.843702691E1 +1.328012000E3,5.352317094E1 +1.328253000E3,5.737674501E1 +1.328545000E3,5.736811408E1 +1.328911000E3,5.477233671E1 +1.329158000E3,5.481436604E1 +1.329403000E3,4.974322484E1 +1.329645000E3,5.490077996E1 +1.329890000E3,4.870505425E1 +1.330144000E3,4.955972956E1 +1.330428000E3,5.470042727E1 +1.330734000E3,5.618884112E1 +1.331026000E3,5.238151215E1 +1.331265000E3,5.344428978E1 +1.331515000E3,5.051963956E1 +1.331772000E3,5.068574448E1 +1.332120000E3,5.754233113E1 +1.332409000E3,5.498832674E1 +1.332740000E3,5.245036701E1 +1.333034000E3,5.885934606E1 +1.333286000E3,5.644915657E1 +1.333540000E3,5.532779852E1 +1.333784000E3,5.694511409E1 +1.334028000E3,5.553937724E1 +1.334302000E3,5.308286554E1 +1.334615000E3,5.140154995E1 +1.334876000E3,5.045296543E1 +1.335187000E3,5.631993217E1 +1.335451000E3,5.435091016E1 +1.335722000E3,5.624357652E1 +1.335986000E3,5.791043400E1 +1.336271000E3,5.847603086E1 +1.336545000E3,5.757219882E1 +1.336794000E3,6.070042624E1 +1.337072000E3,5.247827017E1 +1.337340000E3,5.208145921E1 +1.337609000E3,6.026756153E1 +1.337870000E3,6.012826199E1 +1.338134000E3,5.465450317E1 +1.338408000E3,5.768658418E1 +1.338755000E3,5.542991210E1 +1.339019000E3,5.279974580E1 +1.339289000E3,4.966927449E1 +1.339556000E3,4.563713389E1 +1.339804000E3,4.961972315E1 +1.340056000E3,5.287436972E1 +1.340316000E3,5.318950925E1 +1.340586000E3,5.037908496E1 +1.340881000E3,5.345184090E1 +1.341116000E3,5.016784238E1 +1.341407000E3,5.799295151E1 +1.341694000E3,5.875659808E1 +1.342051000E3,5.666657228E1 +1.342345000E3,5.241270038E1 +1.342638000E3,5.754780266E1 +1.342875000E3,5.669750570E1 +1.343177000E3,5.541629106E1 +1.343432000E3,5.556249818E1 +1.343726000E3,5.603182587E1 +1.343969000E3,5.961525777E1 +1.344257000E3,5.915223521E1 +1.344498000E3,5.820677933E1 +1.344777000E3,5.815031326E1 +1.345094000E3,5.733094423E1 +1.345363000E3,5.538469317E1 +1.345622000E3,6.270903439E1 +1.345877000E3,5.551461514E1 +1.346148000E3,5.750063996E1 +1.346395000E3,5.473739655E1 +1.346676000E3,5.131350753E1 +1.346958000E3,5.072615719E1 +1.347258000E3,4.882711207E1 +1.347518000E3,5.273988371E1 +1.347784000E3,6.269937361E1 +1.348040000E3,6.058958657E1 +1.348391000E3,5.894445662E1 +1.348716000E3,5.683213923E1 +1.348984000E3,5.875140523E1 +1.349236000E3,5.263650529E1 +1.349491000E3,4.630287352E1 +1.349847000E3,5.742006494E1 +1.350115000E3,6.486179330E1 +1.350358000E3,5.963871460E1 +1.350612000E3,5.220281373E1 +1.350868000E3,5.825229613E1 +1.351125000E3,5.822075100E1 +1.351374000E3,5.487419692E1 +1.351666000E3,5.461361208E1 +1.351934000E3,5.384511910E1 +1.352185000E3,5.782109838E1 +1.352440000E3,5.156901690E1 +1.352688000E3,5.262530942E1 +1.352990000E3,5.827406705E1 +1.353265000E3,6.164230870E1 +1.353493000E3,5.939319367E1 +1.353769000E3,5.491407227E1 +1.353989000E3,5.363390940E1 +1.354236000E3,5.108497673E1 +1.354516000E3,6.129017752E1 +1.354836000E3,5.594784457E1 +1.355095000E3,5.172378417E1 +1.355422000E3,5.975901259E1 +1.355685000E3,5.720857994E1 +1.355941000E3,5.600667557E1 +1.356197000E3,5.471836828E1 +1.356478000E3,5.319452565E1 +1.356745000E3,5.296912594E1 +1.357013000E3,5.811625635E1 +1.357280000E3,5.430511038E1 +1.357577000E3,5.277700001E1 +1.357824000E3,5.616769978E1 +1.358135000E3,5.406396803E1 +1.358401000E3,4.910300122E1 +1.358643000E3,5.077236009E1 +1.358892000E3,5.530877446E1 +1.359206000E3,5.787482939E1 +1.359485000E3,5.846197249E1 +1.359760000E3,6.103303991E1 +1.360055000E3,6.092009186E1 +1.360296000E3,5.979156049E1 +1.360590000E3,6.049263298E1 +1.360828000E3,5.895545308E1 +1.361114000E3,5.611946421E1 +1.361473000E3,5.480295831E1 +1.361726000E3,5.397626184E1 +1.361972000E3,5.443193027E1 +1.362314000E3,5.572591927E1 +1.362560000E3,5.224616115E1 +1.362808000E3,5.244486023E1 +1.363061000E3,5.179430466E1 +1.363307000E3,5.228822629E1 +1.363555000E3,5.248152719E1 +1.363850000E3,5.310816898E1 +1.364115000E3,5.586433987E1 +1.364397000E3,5.735023043E1 +1.364703000E3,6.002405491E1 +1.364950000E3,5.692273216E1 +1.365192000E3,5.941823705E1 +1.365459000E3,5.316793659E1 +1.365709000E3,5.869878442E1 +1.365953000E3,5.756526572E1 +1.366216000E3,5.687574379E1 +1.366491000E3,5.232478004E1 +1.366744000E3,5.424491879E1 +1.367001000E3,5.235481979E1 +1.367305000E3,5.164783122E1 +1.367588000E3,4.924997634E1 +1.367934000E3,4.924339558E1 +1.368196000E3,5.793398832E1 +1.368473000E3,5.529211657E1 +1.368719000E3,5.120874356E1 +1.368963000E3,5.470742612E1 +1.369285000E3,5.560989240E1 +1.369528000E3,5.197646059E1 +1.369822000E3,5.152328490E1 +1.370111000E3,5.791930576E1 +1.370416000E3,5.368811562E1 +1.370672000E3,5.769124019E1 +1.370919000E3,5.333549653E1 +1.371292000E3,5.847056292E1 +1.371551000E3,5.642894477E1 +1.371803000E3,5.817537921E1 +1.372074000E3,5.885584750E1 +1.372335000E3,5.395474736E1 +1.372602000E3,5.211537518E1 +1.372880000E3,4.924374923E1 +1.373126000E3,4.882665291E1 +1.373379000E3,5.483140316E1 +1.373636000E3,5.380197532E1 +1.373915000E3,5.629967483E1 +1.374251000E3,5.773524892E1 +1.374636000E3,6.271253195E1 +1.374894000E3,5.870587143E1 +1.375125000E3,5.496954916E1 +1.375369000E3,5.621931219E1 +1.375641000E3,5.700323462E1 +1.375912000E3,5.808968856E1 +1.376161000E3,5.697587873E1 +1.376437000E3,5.739415600E1 +1.376687000E3,5.874614285E1 +1.376941000E3,5.855325473E1 +1.377252000E3,5.287324040E1 +1.377495000E3,5.331405656E1 +1.377862000E3,5.163612814E1 +1.378109000E3,6.003152631E1 +1.378372000E3,6.448039849E1 +1.378641000E3,6.226927373E1 +1.378912000E3,6.355904277E1 +1.379208000E3,6.121718755E1 +1.379463000E3,6.371699462E1 +1.379738000E3,5.774542440E1 +1.380076000E3,5.579766677E1 +1.380318000E3,5.520595979E1 +1.380614000E3,5.395000262E1 +1.380855000E3,5.263752401E1 +1.381221000E3,5.267030150E1 +1.381492000E3,5.304251562E1 +1.381793000E3,4.959737221E1 +1.382100000E3,5.549829026E1 +1.382347000E3,5.821584994E1 +1.382642000E3,5.861199323E1 +1.382905000E3,5.256382895E1 +1.383164000E3,5.491877459E1 +1.383443000E3,5.644995893E1 +1.383702000E3,5.411249990E1 +1.383954000E3,5.324738213E1 +1.384305000E3,5.625052210E1 +1.384532000E3,6.070474662E1 +1.384789000E3,5.237062704E1 +1.385074000E3,5.442107865E1 +1.385361000E3,6.017483878E1 +1.385605000E3,6.237555822E1 +1.385869000E3,5.605951782E1 +1.386126000E3,6.511151133E1 +1.386382000E3,5.571785683E1 +1.386696000E3,5.398201636E1 +1.386954000E3,5.323734283E1 +1.387264000E3,5.635686029E1 +1.387623000E3,5.701357512E1 +1.387874000E3,5.632095063E1 +1.388187000E3,5.288354031E1 +1.388477000E3,5.152350906E1 +1.388761000E3,5.130627857E1 +1.388982000E3,4.918436870E1 +1.389239000E3,5.567775637E1 +1.389545000E3,5.465238648E1 +1.389786000E3,5.003079725E1 +1.390027000E3,5.504486936E1 +1.390282000E3,5.947272344E1 +1.390539000E3,6.106137952E1 +1.390892000E3,5.985290475E1 +1.391203000E3,5.500825546E1 +1.391507000E3,5.157102239E1 +1.391806000E3,5.517662265E1 +1.392108000E3,5.349243854E1 +1.392411000E3,5.386652866E1 +1.392707000E3,5.258839734E1 +1.392973000E3,5.376638351E1 +1.393221000E3,5.619475880E1 +1.393480000E3,5.846509931E1 +1.393767000E3,6.504346680E1 +1.394122000E3,5.865804348E1 +1.394392000E3,5.055217311E1 +1.394673000E3,4.837306759E1 +1.394931000E3,5.564689750E1 +1.395193000E3,5.416088817E1 +1.395489000E3,5.481584764E1 +1.395781000E3,5.356143065E1 +1.396078000E3,5.074158934E1 +1.396313000E3,5.177896206E1 +1.396618000E3,5.670327312E1 +1.396914000E3,6.043149132E1 +1.397246000E3,5.875453471E1 +1.397559000E3,5.725772305E1 +1.397842000E3,5.610169288E1 +1.398092000E3,6.098127982E1 +1.398354000E3,5.385330985E1 +1.398611000E3,5.345613584E1 +1.398873000E3,6.183897473E1 +1.399135000E3,5.898294985E1 +1.399399000E3,5.644599073E1 +1.399662000E3,6.288338842E1 +1.399923000E3,5.844786233E1 +1.400178000E3,6.145207907E1 +1.400438000E3,5.797678971E1 +1.400786000E3,5.805590691E1 +1.401082000E3,5.956739883E1 +1.401323000E3,5.537900496E1 +1.401618000E3,5.084213917E1 +1.401871000E3,4.807017206E1 +1.402118000E3,5.545233073E1 +1.402411000E3,5.516036366E1 +1.402644000E3,5.413431379E1 +1.402920000E3,5.388857626E1 +1.403209000E3,5.292068844E1 +1.403479000E3,5.775211983E1 +1.403718000E3,5.117484548E1 +1.404045000E3,5.912447648E1 +1.404295000E3,5.591921957E1 +1.404568000E3,5.565028551E1 +1.404828000E3,5.013398992E1 +1.405122000E3,5.465164253E1 +1.405364000E3,5.305211462E1 +1.405620000E3,5.755171154E1 +1.405929000E3,6.007655449E1 +1.406174000E3,5.899920387E1 +1.406463000E3,5.970773629E1 +1.406720000E3,5.770443308E1 +1.407009000E3,5.521297881E1 +1.407407000E3,5.604277064E1 +1.407677000E3,5.646208540E1 +1.407969000E3,4.906112006E1 +1.408239000E3,5.193830101E1 +1.408558000E3,4.835599484E1 +1.408830000E3,4.864558507E1 +1.409087000E3,5.566138381E1 +1.409349000E3,5.240816417E1 +1.409604000E3,4.366169359E1 +1.409843000E3,4.924613485E1 +1.410167000E3,5.289541091E1 +1.410462000E3,5.429333459E1 +1.410857000E3,5.232803186E1 +1.411115000E3,5.279391543E1 +1.411388000E3,5.698112108E1 +1.411689000E3,4.954635028E1 +1.411940000E3,5.347151392E1 +1.412202000E3,5.431542928E1 +1.412461000E3,5.708654506E1 +1.412712000E3,5.999867781E1 +1.412972000E3,5.836713300E1 +1.413243000E3,5.662529411E1 +1.413547000E3,5.760118844E1 +1.413790000E3,5.272334048E1 +1.414155000E3,5.585703000E1 +1.414407000E3,5.277217169E1 +1.414666000E3,5.575617717E1 +1.414970000E3,5.588142009E1 +1.415263000E3,5.043609445E1 +1.415519000E3,5.366091219E1 +1.415818000E3,6.729065738E1 +1.416082000E3,5.454700058E1 +1.416357000E3,5.542836481E1 +1.416608000E3,6.150002805E1 +1.416870000E3,5.918799699E1 +1.417164000E3,5.739551304E1 +1.417548000E3,5.312046747E1 +1.417864000E3,5.735989692E1 +1.418111000E3,5.463708503E1 +1.418368000E3,5.616594485E1 +1.418622000E3,5.674613857E1 +1.418880000E3,5.393284238E1 +1.419178000E3,5.477989298E1 +1.419414000E3,5.673628135E1 +1.419692000E3,5.246670124E1 +1.419935000E3,5.929492524E1 +1.420173000E3,5.718550468E1 +1.420417000E3,5.597503360E1 +1.420745000E3,5.209811810E1 +1.421016000E3,5.108820023E1 +1.421271000E3,5.704928631E1 +1.421524000E3,5.534619134E1 +1.421787000E3,5.298830069E1 +1.422048000E3,5.357926773E1 +1.422324000E3,5.150193558E1 +1.422590000E3,5.236977243E1 +1.422860000E3,5.598534631E1 +1.423111000E3,5.804712890E1 +1.423360000E3,5.584477369E1 +1.423617000E3,6.166819052E1 +1.423956000E3,6.217862533E1 +1.424239000E3,6.474885215E1 +1.424493000E3,6.561094566E1 +1.424771000E3,6.624921272E1 +1.425013000E3,6.269332683E1 +1.425310000E3,6.427501900E1 +1.425550000E3,6.406421996E1 +1.425806000E3,6.561696377E1 +1.426124000E3,5.757984813E1 +1.426392000E3,6.467113265E1 +1.426661000E3,6.110360998E1 +1.426971000E3,6.257935575E1 +1.427325000E3,6.059948571E1 +1.427600000E3,6.060080967E1 +1.427858000E3,6.129065918E1 +1.428157000E3,6.869907238E1 +1.428403000E3,6.216021300E1 +1.428668000E3,6.028715826E1 +1.428917000E3,5.215970407E1 +1.429175000E3,5.348756082E1 +1.429445000E3,5.866879342E1 +1.429775000E3,5.422412762E1 +1.430077000E3,5.967912654E1 +1.430370000E3,6.053958419E1 +1.430696000E3,5.642153628E1 +1.430959000E3,5.797803369E1 +1.431217000E3,5.265853131E1 +1.431545000E3,6.085541328E1 +1.431825000E3,6.579757863E1 +1.432095000E3,6.783858113E1 +1.432356000E3,6.680245969E1 +1.432609000E3,5.699539434E1 +1.432887000E3,5.495476405E1 +1.433146000E3,5.431336982E1 +1.433405000E3,5.468573805E1 +1.433768000E3,6.415525931E1 +1.434037000E3,5.996195649E1 +1.434305000E3,5.880144898E1 +1.434536000E3,5.062803370E1 +1.434794000E3,4.838886892E1 +1.435059000E3,4.852598648E1 +1.435348000E3,5.424758091E1 +1.435611000E3,6.028120001E1 +1.435845000E3,5.860165153E1 +1.436098000E3,5.820116177E1 +1.436348000E3,5.458976108E1 +1.436603000E3,5.748661459E1 +1.436983000E3,5.071157707E1 +1.437230000E3,5.187454119E1 +1.437505000E3,5.690962542E1 +1.437744000E3,5.898297949E1 +1.438006000E3,6.083548120E1 +1.438278000E3,4.929702369E1 +1.438556000E3,5.094464024E1 +1.438857000E3,5.451803318E1 +1.439157000E3,4.851675588E1 +1.439427000E3,4.781325912E1 +1.439724000E3,4.919544886E1 +1.439968000E3,4.662525194E1 +1.440374000E3,4.187537091E1 +1.440620000E3,5.083424523E1 +1.440895000E3,4.476479772E1 +1.441179000E3,5.236126827E1 +1.441495000E3,4.954212438E1 +1.441772000E3,5.444261950E1 +1.442048000E3,5.023278537E1 +1.442273000E3,4.640707667E1 +1.442557000E3,5.088583460E1 +1.442822000E3,5.041471443E1 +1.443067000E3,4.940152653E1 +1.443315000E3,4.834999124E1 +1.443550000E3,5.084173145E1 +1.443802000E3,4.674944421E1 +1.444118000E3,5.005548854E1 +1.444412000E3,4.880222753E1 +1.444695000E3,4.829349493E1 +1.444948000E3,4.815408858E1 +1.445231000E3,4.968297573E1 +1.445471000E3,5.263069989E1 +1.445763000E3,4.570389774E1 +1.446062000E3,4.674284816E1 +1.446364000E3,5.179136771E1 +1.446637000E3,5.007894257E1 +1.446884000E3,5.001285233E1 +1.447102000E3,5.063641057E1 +1.447373000E3,4.164946286E1 +1.447601000E3,3.981108666E1 +1.447894000E3,4.316358072E1 +1.448132000E3,5.465701871E1 +1.448431000E3,4.615144027E1 +1.448672000E3,4.353154230E1 +1.448965000E3,5.208221965E1 +1.449200000E3,5.530439334E1 +1.449496000E3,4.996075498E1 +1.449729000E3,5.218941020E1 +1.450060000E3,4.888890123E1 +1.450335000E3,5.030971329E1 +1.450629000E3,5.012870067E1 +1.450899000E3,4.847297804E1 +1.451151000E3,4.759762696E1 +1.451454000E3,4.978926902E1 +1.451751000E3,4.930919072E1 +1.452001000E3,5.004861581E1 +1.452285000E3,5.051309266E1 +1.452566000E3,4.810890055E1 +1.452826000E3,4.654354865E1 +1.453069000E3,4.761425190E1 +1.453369000E3,4.589508435E1 +1.453616000E3,4.954922405E1 +1.453886000E3,4.065983258E1 +1.454197000E3,4.220647307E1 +1.454513000E3,4.858310714E1 +1.454789000E3,5.196405012E1 +1.455012000E3,5.467685341E1 +1.455262000E3,5.753332593E1 +1.455513000E3,4.707036048E1 +1.455859000E3,3.942826471E1 +1.456237000E3,5.170062203E1 +1.456495000E3,6.022707597E1 +1.456743000E3,5.524301158E1 +1.456990000E3,5.482834451E1 +1.457257000E3,4.917995293E1 +1.457590000E3,4.739340640E1 +1.457831000E3,4.842051754E1 +1.458073000E3,6.166669432E1 +1.458329000E3,5.427876580E1 +1.458617000E3,4.896037674E1 +1.458889000E3,4.346397471E1 +1.459122000E3,4.481546196E1 +1.459424000E3,5.149740630E1 +1.459726000E3,4.614214660E1 +1.459975000E3,4.567227587E1 +1.460237000E3,5.348774305E1 +1.460488000E3,5.617792493E1 +1.460730000E3,5.122937085E1 +1.460971000E3,5.712815616E1 +1.461266000E3,5.592815325E1 +1.461504000E3,5.208026338E1 +1.461798000E3,5.368936290E1 +1.462033000E3,5.424431898E1 +1.462332000E3,5.229538114E1 +1.462686000E3,5.012562607E1 +1.462943000E3,5.517893002E1 +1.463292000E3,5.544440679E1 +1.463574000E3,5.195225561E1 +1.463851000E3,5.582804772E1 +1.464133000E3,5.163717454E1 +1.464392000E3,5.056978371E1 +1.464653000E3,5.085736348E1 +1.464931000E3,5.111025552E1 +1.465171000E3,5.008163028E1 +1.465468000E3,5.204681239E1 +1.465721000E3,4.873162615E1 +1.466070000E3,5.052420662E1 +1.466365000E3,5.115431116E1 +1.466626000E3,5.008089225E1 +1.466902000E3,5.455907242E1 +1.467123000E3,5.881328519E1 +1.467422000E3,5.654049662E1 +1.467665000E3,6.208900398E1 +1.467911000E3,5.573620080E1 +1.468210000E3,5.034178452E1 +1.468461000E3,4.644884091E1 +1.468716000E3,4.489036287E1 +1.469021000E3,4.555962209E1 +1.469437000E3,4.956164087E1 +1.469733000E3,5.014140659E1 +1.469995000E3,5.025508197E1 +1.470298000E3,4.976482928E1 +1.470552000E3,4.666552600E1 +1.470801000E3,5.164800320E1 +1.471107000E3,4.748865751E1 +1.471358000E3,5.068455306E1 +1.471623000E3,5.380657492E1 +1.471874000E3,4.918332364E1 +1.472155000E3,4.974368594E1 +1.472539000E3,5.519550202E1 +1.472795000E3,5.119649457E1 +1.473056000E3,5.406344748E1 +1.473370000E3,5.554928156E1 +1.473655000E3,5.458007948E1 +1.473895000E3,5.519923804E1 +1.474152000E3,5.580016483E1 +1.474437000E3,5.718813696E1 +1.474685000E3,5.734393611E1 +1.474960000E3,5.879862387E1 +1.475221000E3,5.602300215E1 +1.475474000E3,5.025640835E1 +1.475826000E3,5.543439402E1 +1.476071000E3,5.232164352E1 +1.476323000E3,5.898115961E1 +1.476584000E3,6.066467981E1 +1.476821000E3,5.071984472E1 +1.477123000E3,5.740447565E1 +1.477365000E3,5.959782608E1 +1.477662000E3,5.958620190E1 +1.477906000E3,5.753388342E1 +1.478144000E3,5.506848886E1 +1.478455000E3,5.769430513E1 +1.478723000E3,5.629679592E1 +1.478987000E3,5.649495967E1 +1.479262000E3,5.787253729E1 +1.479512000E3,5.216150167E1 +1.479813000E3,4.948302212E1 +1.480088000E3,5.080056078E1 +1.480342000E3,4.734041467E1 +1.480601000E3,4.440736689E1 +1.480866000E3,5.120725270E1 +1.481166000E3,5.053254929E1 +1.481466000E3,5.274685420E1 +1.481724000E3,5.071521067E1 +1.481973000E3,5.225995741E1 +1.482300000E3,5.133897759E1 +1.482575000E3,5.007250383E1 +1.482845000E3,5.042400131E1 +1.483101000E3,5.258901014E1 +1.483408000E3,5.618504625E1 +1.483668000E3,5.503349900E1 +1.483933000E3,4.974702245E1 +1.484194000E3,5.170781389E1 +1.484440000E3,5.072340799E1 +1.484707000E3,5.947536199E1 +1.485018000E3,5.467515596E1 +1.485306000E3,6.085614245E1 +1.485656000E3,5.990152864E1 +1.485935000E3,5.602550586E1 +1.486168000E3,5.561766537E1 +1.486422000E3,5.350876804E1 +1.486701000E3,5.699979875E1 +1.486960000E3,5.177464585E1 +1.487207000E3,5.249766501E1 +1.487486000E3,5.285366750E1 +1.487751000E3,5.316768095E1 +1.488002000E3,4.876639606E1 +1.488262000E3,5.179834313E1 +1.488516000E3,4.991892364E1 +1.488812000E3,5.156353661E1 +1.489125000E3,5.341434219E1 +1.489400000E3,5.426211096E1 +1.489675000E3,4.699672779E1 +1.489958000E3,5.361914521E1 +1.490219000E3,5.605827819E1 +1.490490000E3,5.089547448E1 +1.490772000E3,5.163564337E1 +1.491061000E3,5.841576784E1 +1.491309000E3,5.524417730E1 +1.491589000E3,5.450558122E1 +1.491873000E3,5.581032480E1 +1.492194000E3,5.802352567E1 +1.492448000E3,4.962366630E1 +1.492810000E3,5.873656508E1 +1.493058000E3,5.690804947E1 +1.493359000E3,5.262261274E1 +1.493674000E3,5.584655342E1 +1.493919000E3,5.542283425E1 +1.494163000E3,5.373884310E1 +1.494412000E3,5.084083433E1 +1.494678000E3,4.964027690E1 +1.494956000E3,5.125570040E1 +1.495204000E3,5.194895191E1 +1.495526000E3,4.961412488E1 +1.495784000E3,4.972405818E1 +1.496036000E3,4.777083448E1 +1.496283000E3,5.231556692E1 +1.496593000E3,5.894066851E1 +1.496842000E3,6.007182772E1 +1.497086000E3,6.003234807E1 +1.497358000E3,5.170627362E1 +1.497682000E3,5.564688341E1 +1.497937000E3,5.459086103E1 +1.498234000E3,5.654462748E1 +1.498530000E3,5.643601391E1 +1.498887000E3,5.593732695E1 +1.499182000E3,5.279859883E1 +1.499469000E3,5.063056157E1 +1.499723000E3,4.846330641E1 +1.499972000E3,5.696559719E1 +1.500236000E3,5.806291630E1 +1.500555000E3,5.485435177E1 +1.500851000E3,5.386376671E1 +1.501120000E3,5.529102258E1 +1.501400000E3,5.058415032E1 +1.501675000E3,5.420960743E1 +1.501928000E3,4.962388553E1 +1.502263000E3,5.167692375E1 +1.502567000E3,5.072695334E1 +1.502878000E3,5.319678523E1 +1.503119000E3,5.961199300E1 +1.503369000E3,5.299728366E1 +1.503631000E3,5.369404965E1 +1.503941000E3,5.426817134E1 +1.504209000E3,5.369336762E1 +1.504462000E3,5.246626497E1 +1.504724000E3,5.358557871E1 +1.505015000E3,4.957781391E1 +1.505279000E3,5.117668163E1 +1.505699000E3,5.216401891E1 +1.505963000E3,5.011348657E1 +1.506261000E3,5.259055540E1 +1.506507000E3,4.579432510E1 +1.506795000E3,4.877099475E1 +1.507032000E3,4.679595596E1 +1.507314000E3,5.136222565E1 +1.507549000E3,5.267101191E1 +1.507792000E3,5.244999525E1 +1.508074000E3,5.180561005E1 +1.508391000E3,5.030990700E1 +1.508607000E3,5.167226321E1 +1.508859000E3,5.218207738E1 +1.509151000E3,5.317725961E1 +1.509397000E3,5.318899610E1 +1.509689000E3,4.978257152E1 +1.509934000E3,5.032443800E1 +1.510228000E3,4.777293014E1 +1.510466000E3,4.646316587E1 +1.510767000E3,5.646850943E1 +1.511001000E3,5.638889819E1 +1.511293000E3,5.773758842E1 +1.511610000E3,5.580372922E1 +1.511900000E3,5.517502050E1 +1.512151000E3,5.684013484E1 +1.512393000E3,5.407249321E1 +1.512652000E3,5.725430710E1 +1.512902000E3,5.755876004E1 +1.513148000E3,5.492786930E1 +1.513404000E3,5.665177401E1 +1.513705000E3,5.675683028E1 +1.513957000E3,5.845897420E1 +1.514258000E3,5.334537973E1 +1.514488000E3,5.035361876E1 +1.514812000E3,4.886526824E1 +1.515059000E3,5.555156669E1 +1.515357000E3,5.401240780E1 +1.515600000E3,5.191330713E1 +1.515873000E3,5.158089375E1 +1.516102000E3,5.397456219E1 +1.516410000E3,5.205317520E1 +1.516679000E3,5.689433829E1 +1.516971000E3,5.397466306E1 +1.517230000E3,5.553699481E1 +1.517504000E3,5.550832571E1 +1.517763000E3,5.490604036E1 +1.518130000E3,5.129555301E1 +1.518403000E3,5.478479772E1 +1.518670000E3,5.687403653E1 +1.518921000E3,5.464295853E1 +1.519177000E3,5.713561839E1 +1.519461000E3,5.306473622E1 +1.519745000E3,5.320579073E1 +1.520002000E3,5.309385307E1 +1.520258000E3,5.058967996E1 +1.520552000E3,5.470724085E1 +1.520793000E3,5.303104936E1 +1.521156000E3,5.432496893E1 +1.521453000E3,5.594215604E1 +1.521721000E3,5.308545736E1 +1.521969000E3,5.327888421E1 +1.522220000E3,5.030915333E1 +1.522490000E3,5.230098434E1 +1.522776000E3,4.743827766E1 +1.523026000E3,5.464211349E1 +1.523327000E3,5.322537523E1 +1.523581000E3,5.154569729E1 +1.523826000E3,5.335950152E1 +1.524133000E3,5.482016506E1 +1.524417000E3,5.825411535E1 +1.524853000E3,5.879893849E1 +1.525179000E3,5.728744863E1 +1.525433000E3,5.737571640E1 +1.525696000E3,5.681107869E1 +1.525950000E3,5.695921586E1 +1.526210000E3,5.455429607E1 +1.526487000E3,5.808007225E1 +1.526729000E3,5.500512440E1 +1.527042000E3,5.476260812E1 +1.527339000E3,5.849962899E1 +1.527579000E3,5.719021529E1 +1.527910000E3,5.422226824E1 +1.528160000E3,5.266147572E1 +1.528411000E3,5.030747323E1 +1.528675000E3,5.057502492E1 +1.528920000E3,5.365292462E1 +1.529175000E3,5.444435151E1 +1.529423000E3,5.586906556E1 +1.529732000E3,5.808239082E1 +1.530030000E3,5.492304678E1 +1.530283000E3,5.727734117E1 +1.530542000E3,5.518682809E1 +1.530805000E3,5.838179726E1 +1.531133000E3,5.619103982E1 +1.531448000E3,5.705771680E1 +1.531738000E3,5.605732573E1 +1.531987000E3,5.497746164E1 +1.532293000E3,5.570350387E1 +1.532602000E3,5.687942595E1 +1.532873000E3,5.590365459E1 +1.533132000E3,5.379832162E1 +1.533387000E3,5.951317374E1 +1.533654000E3,5.728034638E1 +1.533915000E3,5.755019099E1 +1.534163000E3,5.625336618E1 +1.534512000E3,5.560455999E1 +1.534783000E3,5.186395468E1 +1.535086000E3,6.018952062E1 +1.535379000E3,5.360739703E1 +1.535619000E3,5.637744941E1 +1.535916000E3,5.710534601E1 +1.536153000E3,5.751101039E1 +1.536449000E3,5.888699469E1 +1.536688000E3,5.900809640E1 +1.536983000E3,5.539354346E1 +1.537218000E3,5.212761926E1 +1.537514000E3,6.113968309E1 +1.537773000E3,5.789795306E1 +1.538038000E3,6.065119472E1 +1.538356000E3,5.715251587E1 +1.538607000E3,5.728294892E1 +1.538911000E3,5.939537878E1 +1.539175000E3,5.879010449E1 +1.539417000E3,6.007594674E1 +1.539661000E3,5.983742076E1 +1.539908000E3,6.299497704E1 +1.540182000E3,6.042347696E1 +1.540457000E3,5.844914903E1 +1.540758000E3,5.775362746E1 +1.541037000E3,5.216165265E1 +1.541334000E3,5.255584969E1 +1.541593000E3,5.278098471E1 +1.541846000E3,5.581770981E1 +1.542092000E3,5.736301867E1 +1.542389000E3,5.733951694E1 +1.542623000E3,5.674705381E1 +1.542880000E3,5.506043774E1 +1.543125000E3,5.404728252E1 +1.543453000E3,5.428884791E1 +1.543732000E3,5.547580162E1 +1.544085000E3,5.471747417E1 +1.544346000E3,5.496243571E1 +1.544613000E3,5.288395526E1 +1.544860000E3,5.036194227E1 +1.545111000E3,5.124283852E1 +1.545413000E3,5.731432515E1 +1.545687000E3,5.663908688E1 +1.545955000E3,5.741659811E1 +1.546253000E3,5.084604561E1 +1.546502000E3,5.163330463E1 +1.546772000E3,4.777378739E1 +1.547025000E3,5.200725426E1 +1.547353000E3,5.049690945E1 +1.547625000E3,5.284766124E1 +1.547924000E3,5.396462244E1 +1.548148000E3,5.375524192E1 +1.548403000E3,5.670544075E1 +1.548716000E3,5.332369727E1 +1.548963000E3,5.544219871E1 +1.549238000E3,5.323430806E1 +1.549471000E3,5.180674965E1 +1.549727000E3,5.329467652E1 +1.550023000E3,5.080742485E1 +1.550310000E3,5.026906170E1 +1.550639000E3,5.582908231E1 +1.550905000E3,5.331150300E1 +1.551172000E3,5.186910180E1 +1.551471000E3,5.624561668E1 +1.551739000E3,5.555744845E1 +1.552012000E3,5.944044312E1 +1.552264000E3,6.002272858E1 +1.552531000E3,5.816546804E1 +1.552850000E3,5.936846960E1 +1.553097000E3,5.514794057E1 +1.553401000E3,5.160130424E1 +1.553757000E3,5.107783990E1 +1.554023000E3,5.871375450E1 +1.554276000E3,5.617325190E1 +1.554544000E3,5.736189521E1 +1.554800000E3,5.317828333E1 +1.555051000E3,5.715279916E1 +1.555321000E3,5.726931658E1 +1.555563000E3,5.567771069E1 +1.555823000E3,5.156101336E1 +1.556126000E3,5.688446569E1 +1.556378000E3,6.074118939E1 +1.556642000E3,5.974958265E1 +1.556918000E3,5.702757711E1 +1.557208000E3,5.874442787E1 +1.557457000E3,5.795683904E1 +1.557722000E3,6.039916355E1 +1.558025000E3,5.662755924E1 +1.558320000E3,5.332514547E1 +1.558595000E3,6.059700286E1 +1.558850000E3,5.775207016E1 +1.559098000E3,6.106988435E1 +1.559349000E3,6.039494527E1 +1.559644000E3,5.672405799E1 +1.559889000E3,5.814375710E1 +1.560135000E3,6.159401746E1 +1.560480000E3,5.397583636E1 +1.560770000E3,5.291692280E1 +1.561026000E3,5.439035965E1 +1.561320000E3,5.553984968E1 +1.561619000E3,5.808332247E1 +1.561927000E3,5.744100555E1 +1.562191000E3,5.636250023E1 +1.562451000E3,6.055150308E1 +1.562703000E3,5.624161562E1 +1.562979000E3,5.401048000E1 +1.563233000E3,5.588901558E1 +1.563595000E3,6.020828902E1 +1.563855000E3,6.586197618E1 +1.564143000E3,5.744692826E1 +1.564421000E3,5.175273280E1 +1.564681000E3,5.584828423E1 +1.564939000E3,5.622472521E1 +1.565190000E3,5.419184381E1 +1.565447000E3,4.818775863E1 +1.565701000E3,5.443344746E1 +1.565956000E3,4.960344337E1 +1.566224000E3,6.289868185E1 +1.566469000E3,6.499026885E1 +1.566794000E3,6.277031329E1 +1.567086000E3,5.336636778E1 +1.567405000E3,5.867761918E1 +1.567644000E3,5.135518394E1 +1.567909000E3,5.665720126E1 +1.568204000E3,5.915910399E1 +1.568455000E3,5.687790668E1 +1.568730000E3,5.815647569E1 +1.568976000E3,5.595761669E1 +1.569238000E3,5.367288589E1 +1.569491000E3,4.954593185E1 +1.569752000E3,5.199120702E1 +1.570099000E3,5.857172858E1 +1.570354000E3,5.533510860E1 +1.570614000E3,5.615291914E1 +1.570871000E3,4.816531300E1 +1.571136000E3,4.597509459E1 +1.571387000E3,5.454256971E1 +1.571722000E3,5.262076426E1 +1.572010000E3,5.108681545E1 +1.572285000E3,5.269091247E1 +1.572547000E3,4.898785412E1 +1.572807000E3,4.867008841E1 +1.573066000E3,5.306545801E1 +1.573313000E3,5.092331160E1 +1.573694000E3,5.549117670E1 +1.574009000E3,5.304099104E1 +1.574279000E3,5.377011563E1 +1.574520000E3,5.244694975E1 +1.574770000E3,5.542353961E1 +1.575031000E3,5.327330735E1 +1.575319000E3,5.123065406E1 +1.575617000E3,5.429517947E1 +1.575867000E3,5.443507599E1 +1.576132000E3,5.273613947E1 +1.576382000E3,5.717979407E1 +1.576705000E3,5.184816589E1 +1.576955000E3,4.851208329E1 +1.577250000E3,4.976440939E1 +1.577493000E3,5.236737582E1 +1.577737000E3,5.414723297E1 +1.577998000E3,5.490706774E1 +1.578342000E3,5.591011545E1 +1.578650000E3,5.689754115E1 +1.578906000E3,5.680987850E1 +1.579148000E3,5.379415708E1 +1.579394000E3,5.844713665E1 +1.579644000E3,4.927798375E1 +1.580006000E3,5.263100090E1 +1.580294000E3,5.410513055E1 +1.580548000E3,5.541047194E1 +1.580801000E3,5.058665778E1 +1.581070000E3,5.191468462E1 +1.581349000E3,4.623838572E1 +1.581601000E3,4.883886927E1 +1.581851000E3,4.951159763E1 +1.582152000E3,5.372806241E1 +1.582461000E3,4.077427406E1 +1.582742000E3,4.089897224E1 +1.582967000E3,4.661834708E1 +1.583330000E3,4.498181641E1 +1.583574000E3,4.413204165E1 +1.583835000E3,4.830731952E1 +1.584102000E3,5.133890730E1 +1.584385000E3,5.327819620E1 +1.584689000E3,5.148788947E1 +1.584935000E3,5.259351261E1 +1.585217000E3,5.210912674E1 +1.585449000E3,5.375523399E1 +1.585710000E3,5.030792675E1 +1.585957000E3,5.116594607E1 +1.586271000E3,5.729332409E1 +1.586601000E3,5.372439258E1 +1.586868000E3,5.283683191E1 +1.587111000E3,5.261490358E1 +1.587371000E3,5.394382083E1 +1.587617000E3,5.362104804E1 +1.587861000E3,5.192909002E1 +1.588111000E3,5.534291684E1 +1.588356000E3,5.529045875E1 +1.588616000E3,5.723903943E1 +1.588878000E3,5.769467674E1 +1.589116000E3,5.686991669E1 +1.589367000E3,5.472851050E1 +1.589709000E3,5.509501284E1 +1.589971000E3,6.218794924E1 +1.590276000E3,5.544714813E1 +1.590522000E3,5.587492513E1 +1.590770000E3,6.310127100E1 +1.591031000E3,6.016601681E1 +1.591331000E3,5.868635044E1 +1.591588000E3,5.739907262E1 +1.591847000E3,5.500154159E1 +1.592105000E3,5.382353142E1 +1.592358000E3,5.235465349E1 +1.592660000E3,5.432444683E1 +1.592979000E3,5.583837344E1 +1.593280000E3,5.890777444E1 +1.593531000E3,6.247008348E1 +1.593777000E3,5.524440051E1 +1.594082000E3,6.039849382E1 +1.594376000E3,5.779880973E1 +1.594616000E3,6.006977904E1 +1.594916000E3,6.157791897E1 +1.595158000E3,5.727348505E1 +1.595456000E3,6.219777130E1 +1.595702000E3,6.333776727E1 +1.596011000E3,6.315243887E1 +1.596287000E3,5.622487117E1 +1.596582000E3,4.999384026E1 +1.596838000E3,6.052096287E1 +1.597136000E3,5.730636753E1 +1.597383000E3,5.672770046E1 +1.597632000E3,5.282894107E1 +1.597943000E3,5.609826115E1 +1.598240000E3,5.950608691E1 +1.598483000E3,5.262580449E1 +1.598777000E3,5.638403375E1 +1.599039000E3,5.695994656E1 +1.599354000E3,5.595638462E1 +1.599677000E3,5.456948793E1 +1.599955000E3,5.641745933E1 +1.600254000E3,5.373490010E1 +1.600541000E3,5.613295480E1 +1.600824000E3,5.295628543E1 +1.601071000E3,5.036371368E1 +1.601313000E3,5.734560753E1 +1.601585000E3,5.869799540E1 +1.601832000E3,5.689867309E1 +1.602079000E3,5.521901034E1 +1.602376000E3,5.958743796E1 +1.602630000E3,5.697555749E1 +1.602881000E3,6.067520996E1 +1.603136000E3,6.296730837E1 +1.603381000E3,6.302345663E1 +1.603674000E3,5.614231839E1 +1.603920000E3,5.471880748E1 +1.604179000E3,6.025548138E1 +1.604432000E3,5.848975602E1 +1.604677000E3,6.051353275E1 +1.604988000E3,6.061163824E1 +1.605287000E3,5.127173554E1 +1.605535000E3,5.271948405E1 +1.605890000E3,5.457177629E1 +1.606143000E3,5.047420148E1 +1.606392000E3,5.197178768E1 +1.606684000E3,5.635777628E1 +1.606927000E3,5.691931577E1 +1.607165000E3,5.135114371E1 +1.607440000E3,5.173034620E1 +1.607734000E3,5.786109434E1 +1.607974000E3,5.620528212E1 +1.608236000E3,5.432552885E1 +1.608507000E3,5.036034087E1 +1.608763000E3,4.872303481E1 +1.609123000E3,5.516764205E1 +1.609377000E3,5.867465981E1 +1.609624000E3,5.634077767E1 +1.609869000E3,5.153316916E1 +1.610150000E3,5.212022412E1 +1.610428000E3,5.727395868E1 +1.610681000E3,5.443759521E1 +1.610944000E3,5.599199613E1 +1.611242000E3,5.709063131E1 +1.611495000E3,5.747461955E1 +1.611762000E3,5.445378087E1 +1.612040000E3,5.178206799E1 +1.612294000E3,5.347146008E1 +1.612548000E3,5.695533984E1 +1.612791000E3,5.852885666E1 +1.613050000E3,5.349710519E1 +1.613354000E3,5.482274130E1 +1.613598000E3,5.580201302E1 +1.613898000E3,5.533013655E1 +1.614151000E3,5.307302798E1 +1.614404000E3,5.034267096E1 +1.614651000E3,5.096368681E1 +1.614959000E3,5.358615730E1 +1.615202000E3,5.402822959E1 +1.615565000E3,5.173226008E1 +1.615815000E3,5.317238447E1 +1.616120000E3,5.490271856E1 +1.616406000E3,5.760350961E1 +1.616712000E3,5.516631401E1 +1.616950000E3,5.344247717E1 +1.617197000E3,5.105574764E1 +1.617480000E3,5.297874749E1 +1.617726000E3,5.181083735E1 +1.617978000E3,5.504462581E1 +1.618236000E3,5.652623382E1 +1.618484000E3,5.850281135E1 +1.618804000E3,5.207268405E1 +1.619061000E3,4.595989093E1 +1.619309000E3,5.832875112E1 +1.619574000E3,5.691639889E1 +1.619831000E3,5.277897330E1 +1.620092000E3,5.634285556E1 +1.620390000E3,5.782897026E1 +1.620660000E3,6.167326244E1 +1.620905000E3,5.736569246E1 +1.621145000E3,6.422841213E1 +1.621400000E3,6.037316593E1 +1.621649000E3,5.869946609E1 +1.622005000E3,6.007663283E1 +1.622308000E3,5.750286676E1 +1.622551000E3,5.315958033E1 +1.622849000E3,5.996646537E1 +1.623085000E3,6.310656156E1 +1.623382000E3,6.410911411E1 +1.623620000E3,6.559322950E1 +1.623914000E3,6.191537215E1 +1.624148000E3,6.509401862E1 +1.624441000E3,6.149444047E1 +1.624676000E3,5.887830140E1 +1.624914000E3,5.333395699E1 +1.625242000E3,5.080509527E1 +1.625531000E3,5.208999136E1 +1.625827000E3,4.936268455E1 +1.626072000E3,4.620940228E1 +1.626384000E3,4.812346411E1 +1.626678000E3,5.508818133E1 +1.626931000E3,5.929414420E1 +1.627193000E3,5.798382987E1 +1.627446000E3,5.695027340E1 +1.627690000E3,6.200547811E1 +1.627940000E3,5.895921781E1 +1.628278000E3,5.832121877E1 +1.628595000E3,5.727506493E1 +1.628914000E3,5.676841787E1 +1.629164000E3,5.904549933E1 +1.629453000E3,6.079247221E1 +1.629705000E3,5.978532207E1 +1.629973000E3,6.204876077E1 +1.630223000E3,6.278691878E1 +1.630527000E3,5.775584326E1 +1.630780000E3,5.715423799E1 +1.631076000E3,5.993810238E1 +1.631416000E3,5.945816984E1 +1.631690000E3,5.911038375E1 +1.631989000E3,6.401318161E1 +1.632251000E3,6.288325429E1 +1.632577000E3,6.142114348E1 +1.632857000E3,6.027735545E1 +1.633125000E3,6.058800698E1 +1.633410000E3,6.197295377E1 +1.633713000E3,5.649410931E1 +1.633983000E3,5.349526422E1 +1.634267000E3,5.160473432E1 +1.634550000E3,5.471426263E1 +1.634881000E3,5.381566790E1 +1.635145000E3,5.592472168E1 +1.635394000E3,5.502963456E1 +1.635636000E3,5.458091777E1 +1.635914000E3,5.361113418E1 +1.636211000E3,5.972112366E1 +1.636510000E3,6.134956919E1 +1.636770000E3,6.291498703E1 +1.637018000E3,6.051799303E1 +1.637272000E3,5.800319143E1 +1.637535000E3,6.099184952E1 +1.637791000E3,6.192072936E1 +1.638191000E3,5.592689657E1 +1.638462000E3,5.015193522E1 +1.638759000E3,5.662906295E1 +1.638997000E3,6.189212385E1 +1.639312000E3,5.656112303E1 +1.639618000E3,5.827187766E1 +1.639922000E3,5.894515280E1 +1.640188000E3,5.379936676E1 +1.640446000E3,5.498271927E1 +1.640705000E3,5.883708769E1 +1.641003000E3,5.515786146E1 +1.641329000E3,5.323855564E1 +1.641593000E3,5.000482182E1 +1.641876000E3,5.182077324E1 +1.642101000E3,5.319082569E1 +1.642344000E3,6.611850928E1 +1.642626000E3,5.190424983E1 +1.642867000E3,5.081734830E1 +1.643118000E3,5.711045841E1 +1.643458000E3,5.520016906E1 +1.643723000E3,5.247062228E1 +1.643997000E3,5.309157546E1 +1.644256000E3,5.339769460E1 +1.644621000E3,5.982216134E1 +1.644883000E3,5.915424673E1 +1.645133000E3,5.849263499E1 +1.645426000E3,5.826666974E1 +1.645723000E3,5.673329902E1 +1.645972000E3,5.580417722E1 +1.646244000E3,5.457004449E1 +1.646473000E3,5.835958867E1 +1.646716000E3,5.599398637E1 +1.646958000E3,5.928075116E1 +1.647232000E3,5.394053714E1 +1.647507000E3,5.853879118E1 +1.647858000E3,5.674494648E1 +1.648113000E3,5.640074652E1 +1.648414000E3,5.694867796E1 +1.648656000E3,5.573466688E1 +1.648962000E3,5.556104957E1 +1.649254000E3,5.770712773E1 +1.649548000E3,5.765349227E1 +1.649790000E3,5.583875333E1 +1.650054000E3,6.321152276E1 +1.650306000E3,5.966047080E1 +1.650600000E3,5.502015578E1 +1.650872000E3,5.066616477E1 +1.651172000E3,5.442335496E1 +1.651440000E3,5.956947456E1 +1.651736000E3,5.798320450E1 +1.651979000E3,5.739040713E1 +1.652228000E3,5.803662120E1 +1.652491000E3,6.146613872E1 +1.652750000E3,5.929116619E1 +1.653021000E3,5.936282359E1 +1.653288000E3,5.853226920E1 +1.653570000E3,5.954415072E1 +1.653872000E3,5.749576278E1 +1.654250000E3,5.567111200E1 +1.654518000E3,6.059415807E1 +1.654812000E3,5.855300274E1 +1.655081000E3,5.797601107E1 +1.655350000E3,6.029475669E1 +1.655647000E3,5.264118678E1 +1.655893000E3,5.715075800E1 +1.656153000E3,5.787679223E1 +1.656407000E3,6.038334743E1 +1.656655000E3,6.038245752E1 +1.656912000E3,5.475945603E1 +1.657171000E3,5.661674174E1 +1.657473000E3,5.618877186E1 +1.657717000E3,5.712918740E1 +1.657972000E3,5.834783502E1 +1.658283000E3,6.198115012E1 +1.658526000E3,5.639977894E1 +1.658788000E3,5.416850689E1 +1.659089000E3,5.679686188E1 +1.659335000E3,5.697270686E1 +1.659619000E3,5.371836804E1 +1.659873000E3,6.082252986E1 +1.660120000E3,6.285201132E1 +1.660416000E3,6.088574857E1 +1.660728000E3,6.109109391E1 +1.661004000E3,5.861240224E1 +1.661283000E3,6.123850168E1 +1.661519000E3,5.849447684E1 +1.661821000E3,5.472352136E1 +1.662065000E3,5.502625911E1 +1.662312000E3,5.606436387E1 +1.662565000E3,5.546236927E1 +1.662845000E3,6.075823181E1 +1.663075000E3,5.951357638E1 +1.663350000E3,5.956681026E1 +1.663575000E3,5.780116333E1 +1.663928000E3,6.184122024E1 +1.664178000E3,5.626291699E1 +1.664419000E3,5.635545931E1 +1.664671000E3,5.487242490E1 +1.664936000E3,5.392872477E1 +1.665237000E3,5.658170902E1 +1.665476000E3,5.449322435E1 +1.665752000E3,5.111063749E1 +1.665997000E3,5.288359358E1 +1.666249000E3,5.825102048E1 +1.666508000E3,6.087585373E1 +1.666750000E3,5.822210598E1 +1.667110000E3,6.320270923E1 +1.667355000E3,5.563170163E1 +1.667628000E3,5.240635194E1 +1.667875000E3,5.485055122E1 +1.668144000E3,5.590209292E1 +1.668402000E3,5.750031923E1 +1.668648000E3,5.301598344E1 +1.668896000E3,5.208077776E1 +1.669157000E3,5.024112467E1 +1.669414000E3,5.530220423E1 +1.669710000E3,5.585178295E1 +1.669955000E3,5.443268015E1 +1.670292000E3,5.292974908E1 +1.670566000E3,5.501741168E1 +1.670818000E3,5.190433464E1 +1.671077000E3,5.602388651E1 +1.671384000E3,5.384205522E1 +1.671688000E3,5.355394771E1 +1.671956000E3,4.896600257E1 +1.672212000E3,4.457728928E1 +1.672483000E3,5.407780485E1 +1.672726000E3,5.808535163E1 +1.672991000E3,5.497589856E1 +1.673269000E3,5.816061182E1 +1.673625000E3,5.457220472E1 +1.673896000E3,5.852786772E1 +1.674165000E3,5.615855966E1 +1.674439000E3,5.901141794E1 +1.674702000E3,5.821771493E1 +1.675040000E3,5.533746886E1 +1.675330000E3,5.469332456E1 +1.675631000E3,5.895976057E1 +1.675867000E3,5.565047570E1 +1.676161000E3,5.342216333E1 +1.676431000E3,5.339304237E1 +1.676716000E3,5.196130631E1 +1.677075000E3,5.500129023E1 +1.677346000E3,5.649474234E1 +1.677614000E3,5.620691351E1 +1.677867000E3,5.756400488E1 +1.678112000E3,5.571225073E1 +1.678362000E3,6.171466353E1 +1.678655000E3,5.523245256E1 +1.678909000E3,5.780473196E1 +1.679167000E3,5.918101801E1 +1.679536000E3,5.449831587E1 +1.679788000E3,5.278747036E1 +1.680072000E3,5.502423006E1 +1.680392000E3,5.603218813E1 +1.680667000E3,5.681691969E1 +1.680917000E3,5.574952817E1 +1.681227000E3,5.747793831E1 +1.681510000E3,5.831554727E1 +1.681811000E3,5.823344802E1 +1.682073000E3,5.677197169E1 +1.682402000E3,5.423243511E1 +1.682746000E3,5.568639423E1 +1.683007000E3,5.601571559E1 +1.683297000E3,5.788588795E1 +1.683563000E3,5.178162942E1 +1.683805000E3,5.244727762E1 +1.684102000E3,5.504021082E1 +1.684342000E3,5.312145782E1 +1.684637000E3,5.266466104E1 +1.684875000E3,5.430143327E1 +1.685171000E3,5.731848010E1 +1.685409000E3,5.314967575E1 +1.685703000E3,5.210480680E1 +1.685940000E3,5.447962472E1 +1.686242000E3,5.671930258E1 +1.686480000E3,5.298653153E1 +1.686837000E3,5.390672385E1 +1.687083000E3,5.256535993E1 +1.687387000E3,5.295433262E1 +1.687686000E3,4.693434793E1 +1.687930000E3,5.264001548E1 +1.688191000E3,4.696703102E1 +1.688514000E3,5.290693761E1 +1.688768000E3,5.572289252E1 +1.689025000E3,5.629476293E1 +1.689331000E3,5.221395629E1 +1.689585000E3,5.553268928E1 +1.689905000E3,5.392885939E1 +1.690136000E3,5.613018872E1 +1.690432000E3,5.323144022E1 +1.690690000E3,5.426457319E1 +1.690988000E3,5.869511223E1 +1.691244000E3,5.724931575E1 +1.691548000E3,5.702890727E1 +1.691819000E3,5.957894946E1 +1.692068000E3,5.833323285E1 +1.692367000E3,5.920896731E1 +1.692598000E3,5.809066040E1 +1.692847000E3,5.683194919E1 +1.693218000E3,5.880411413E1 +1.693536000E3,5.430005356E1 +1.693836000E3,5.347827494E1 +1.694082000E3,5.139526617E1 +1.694323000E3,6.486669482E1 +1.694607000E3,5.827670564E1 +1.694879000E3,5.749070135E1 +1.695112000E3,5.439297467E1 +1.695418000E3,5.591879208E1 +1.695720000E3,5.984156108E1 +1.695978000E3,5.763450389E1 +1.696238000E3,5.535113951E1 +1.696577000E3,5.468640858E1 +1.696840000E3,5.145216534E1 +1.697142000E3,5.633820526E1 +1.697434000E3,5.961813260E1 +1.697672000E3,5.761348305E1 +1.697970000E3,5.587832748E1 +1.698213000E3,5.615239979E1 +1.698514000E3,6.142159571E1 +1.698744000E3,5.868747140E1 +1.699038000E3,5.639074769E1 +1.699277000E3,5.843791784E1 +1.699602000E3,5.580904726E1 +1.699849000E3,5.188032815E1 +1.700148000E3,6.050592844E1 +1.700415000E3,5.851925341E1 +1.700742000E3,5.754370303E1 +1.700996000E3,5.792652906E1 +1.701265000E3,5.809754284E1 +1.701543000E3,5.435013872E1 +1.701827000E3,5.364293620E1 +1.702095000E3,5.742174876E1 +1.702342000E3,5.921232761E1 +1.702597000E3,5.246613397E1 +1.702852000E3,5.865178399E1 +1.703188000E3,6.209648540E1 +1.703456000E3,5.783126524E1 +1.703723000E3,6.129722089E1 +1.704021000E3,6.159059582E1 +1.704258000E3,6.290365934E1 +1.704500000E3,5.899658178E1 +1.704744000E3,5.570772177E1 +1.705020000E3,6.042975914E1 +1.705281000E3,6.063911519E1 +1.705578000E3,5.667741437E1 +1.705818000E3,5.616948640E1 +1.706065000E3,5.809228765E1 +1.706440000E3,6.194892333E1 +1.706707000E3,5.510896653E1 +1.706968000E3,5.648771637E1 +1.707226000E3,5.451026369E1 +1.707530000E3,5.655237570E1 +1.707813000E3,6.342687376E1 +1.708096000E3,5.687609223E1 +1.708345000E3,5.784030597E1 +1.708587000E3,5.696931166E1 +1.708832000E3,5.826055047E1 +1.709133000E3,6.171963981E1 +1.709444000E3,6.289993620E1 +1.709785000E3,6.196750111E1 +1.710095000E3,6.021872673E1 +1.710401000E3,5.493999514E1 +1.710645000E3,5.748920917E1 +1.710951000E3,5.990748875E1 +1.711204000E3,5.995493625E1 +1.711504000E3,5.608393688E1 +1.711807000E3,6.225697969E1 +1.712052000E3,6.005399346E1 +1.712297000E3,6.276583246E1 +1.712594000E3,6.409669700E1 +1.712952000E3,5.846223798E1 +1.713249000E3,6.222377893E1 +1.713511000E3,6.179119431E1 +1.713770000E3,6.687160955E1 +1.714020000E3,6.224215114E1 +1.714281000E3,6.460780580E1 +1.714608000E3,6.323149402E1 +1.714900000E3,5.890183616E1 +1.715139000E3,6.173404899E1 +1.715438000E3,6.193562982E1 +1.715674000E3,6.231645929E1 +1.715912000E3,5.798536661E1 +1.716293000E3,5.569607438E1 +1.716537000E3,6.131866955E1 +1.716790000E3,5.896584959E1 +1.717096000E3,5.693976131E1 +1.717346000E3,5.531403594E1 +1.717631000E3,5.794989861E1 +1.717933000E3,5.594899441E1 +1.718204000E3,5.601359132E1 +1.718501000E3,5.861037671E1 +1.718741000E3,6.432265266E1 +1.719043000E3,6.182586376E1 +1.719355000E3,6.076827417E1 +1.719645000E3,5.634225228E1 +1.719943000E3,5.935070169E1 +1.720188000E3,5.856877062E1 +1.720486000E3,5.761843709E1 +1.720741000E3,5.935030376E1 +1.720985000E3,5.413194972E1 +1.721289000E3,5.939733818E1 +1.721553000E3,5.617827250E1 +1.721847000E3,5.807085988E1 +1.722091000E3,5.877044817E1 +1.722445000E3,6.593854232E1 +1.722681000E3,6.027114564E1 +1.722973000E3,5.866411762E1 +1.723271000E3,5.588604319E1 +1.723508000E3,5.958751798E1 +1.723800000E3,6.077290351E1 +1.724039000E3,5.722905231E1 +1.724338000E3,5.619905124E1 +1.724576000E3,5.628809107E1 +1.724876000E3,5.560357878E1 +1.725168000E3,5.447509555E1 +1.725542000E3,5.278892866E1 +1.725841000E3,4.816211457E1 +1.726139000E3,4.622333411E1 +1.726399000E3,4.728231882E1 +1.726691000E3,5.101510224E1 +1.726947000E3,4.725933617E1 +1.727273000E3,5.333398449E1 +1.727569000E3,5.518583989E1 +1.727808000E3,5.719998093E1 +1.728061000E3,5.375072532E1 +1.728352000E3,5.631849408E1 +1.728644000E3,5.232994659E1 +1.729024000E3,5.045911420E1 +1.729295000E3,4.931808913E1 +1.729541000E3,4.866846016E1 +1.729788000E3,5.127644661E1 +1.730054000E3,4.769951033E1 +1.730296000E3,5.553885299E1 +1.730573000E3,5.629080236E1 +1.730816000E3,5.218818952E1 +1.731119000E3,5.112756333E1 +1.731379000E3,5.524890032E1 +1.731688000E3,5.530134621E1 +1.731949000E3,5.451831728E1 +1.732288000E3,5.380962689E1 +1.732589000E3,5.754684503E1 +1.732833000E3,5.184401682E1 +1.733102000E3,5.011373730E1 +1.733369000E3,5.541779655E1 +1.733647000E3,5.983699601E1 +1.733886000E3,6.131428317E1 +1.734163000E3,6.052345820E1 +1.734405000E3,5.852692054E1 +1.734659000E3,5.861191265E1 +1.734933000E3,5.957936529E1 +1.735219000E3,5.639739849E1 +1.735540000E3,5.207917019E1 +1.735832000E3,4.548490451E1 +1.736112000E3,5.219897691E1 +1.736384000E3,5.618314188E1 +1.736684000E3,5.720418785E1 +1.736946000E3,5.895068629E1 +1.737213000E3,5.652216932E1 +1.737468000E3,5.796687034E1 +1.737738000E3,5.591197017E1 +1.737996000E3,5.493985473E1 +1.738236000E3,5.752137274E1 +1.738586000E3,6.041563952E1 +1.738921000E3,6.199530447E1 +1.739167000E3,5.310800091E1 +1.739430000E3,5.600574849E1 +1.739683000E3,6.494981167E1 +1.739952000E3,6.157046745E1 +1.740293000E3,6.002681302E1 +1.740611000E3,5.943541790E1 +1.740910000E3,5.731619793E1 +1.741197000E3,5.885751119E1 +1.741508000E3,5.719237093E1 +1.741767000E3,5.958897825E1 +1.742034000E3,5.543499582E1 +1.742424000E3,5.632783570E1 +1.742688000E3,5.565042743E1 +1.742946000E3,5.622883854E1 +1.743204000E3,6.327777019E1 +1.743456000E3,5.663098185E1 +1.743721000E3,5.729384715E1 +1.743966000E3,6.200582057E1 +1.744273000E3,5.107652622E1 +1.744505000E3,5.491520459E1 +1.744752000E3,5.181266373E1 +1.745004000E3,5.014115745E1 +1.745297000E3,5.338585031E1 +1.745690000E3,5.654477286E1 +1.745966000E3,5.517036116E1 +1.746219000E3,5.200430375E1 +1.746475000E3,5.963355448E1 +1.746732000E3,5.854837006E1 +1.747002000E3,5.571277949E1 +1.747293000E3,5.825116458E1 +1.747522000E3,5.673248340E1 +1.747772000E3,5.683320783E1 +1.748035000E3,5.224053713E1 +1.748289000E3,5.713452273E1 +1.748568000E3,5.539076360E1 +1.748961000E3,6.015893340E1 +1.749211000E3,5.710921188E1 +1.749460000E3,6.114476082E1 +1.749715000E3,5.648052368E1 +1.749961000E3,5.897720288E1 +1.750207000E3,5.525435431E1 +1.750521000E3,5.447453139E1 +1.750765000E3,5.883968686E1 +1.751015000E3,5.450160052E1 +1.751290000E3,5.405183560E1 +1.751522000E3,5.501343440E1 +1.751848000E3,5.586635599E1 +1.752096000E3,5.631573217E1 +1.752372000E3,5.960964241E1 +1.752637000E3,5.320710483E1 +1.752941000E3,5.848434869E1 +1.753209000E3,5.619196315E1 +1.753510000E3,5.692291103E1 +1.753774000E3,5.505374149E1 +1.754051000E3,5.721759821E1 +1.754315000E3,5.539152446E1 +1.754625000E3,5.632890174E1 +1.754919000E3,5.918851802E1 +1.755262000E3,5.807294381E1 +1.755529000E3,5.748451885E1 +1.755827000E3,6.055251826E1 +1.756067000E3,6.208050524E1 +1.756367000E3,5.991655048E1 +1.756607000E3,6.073519941E1 +1.756900000E3,5.774998130E1 +1.757144000E3,5.751173009E1 +1.757417000E3,5.299288378E1 +1.757700000E3,5.913293772E1 +1.758005000E3,5.732040664E1 +1.758269000E3,6.221202462E1 +1.758585000E3,6.285457626E1 +1.758834000E3,5.870613535E1 +1.759137000E3,5.533279687E1 +1.759391000E3,5.194643865E1 +1.759644000E3,4.891449850E1 +1.759922000E3,4.784429271E1 +1.760236000E3,5.273391136E1 +1.760503000E3,5.475616990E1 +1.760758000E3,5.640096860E1 +1.761017000E3,5.329458627E1 +1.761282000E3,4.798672737E1 +1.761535000E3,5.532988346E1 +1.761794000E3,5.189579265E1 +1.762040000E3,5.068357941E1 +1.762299000E3,5.751972157E1 +1.762578000E3,5.430434207E1 +1.762831000E3,5.331943982E1 +1.763136000E3,5.699367350E1 +1.763409000E3,5.622858108E1 +1.763658000E3,5.631559008E1 +1.763910000E3,5.738562920E1 +1.764157000E3,6.030103345E1 +1.764400000E3,5.680309722E1 +1.764695000E3,5.703631315E1 +1.765017000E3,5.682945247E1 +1.765300000E3,5.317093897E1 +1.765575000E3,5.620624417E1 +1.765832000E3,5.550075987E1 +1.766100000E3,6.321349509E1 +1.766371000E3,5.938123887E1 +1.766635000E3,6.289622107E1 +1.766898000E3,5.890101653E1 +1.767155000E3,5.928826732E1 +1.767399000E3,5.872890625E1 +1.767638000E3,6.184345237E1 +1.767877000E3,6.131073260E1 +1.768211000E3,6.085041665E1 +1.768587000E3,6.015418617E1 +1.768835000E3,5.648473324E1 +1.769119000E3,5.746059957E1 +1.769380000E3,5.608054299E1 +1.769692000E3,6.542458852E1 +1.769998000E3,6.121618195E1 +1.770281000E3,5.842785672E1 +1.770536000E3,5.763776595E1 +1.770858000E3,5.630873419E1 +1.771133000E3,5.339704361E1 +1.771378000E3,5.463873835E1 +1.771723000E3,5.659388596E1 +1.772050000E3,5.449836230E1 +1.772294000E3,5.154616724E1 +1.772537000E3,5.082603581E1 +1.772795000E3,5.334183734E1 +1.773055000E3,5.096094928E1 +1.773365000E3,5.171061147E1 +1.773612000E3,5.477281719E1 +1.773878000E3,5.060909259E1 +1.774171000E3,5.285294921E1 +1.774452000E3,5.393730531E1 +1.774725000E3,5.333400186E1 +1.774980000E3,5.285705613E1 +1.775346000E3,5.719168586E1 +1.775663000E3,5.642193929E1 +1.775908000E3,4.659059970E1 +1.776150000E3,5.521168672E1 +1.776388000E3,5.693500665E1 +1.776630000E3,6.030483668E1 +1.776910000E3,5.944095915E1 +1.777153000E3,5.708951289E1 +1.777414000E3,5.291982189E1 +1.777666000E3,5.900042024E1 +1.777935000E3,6.010949926E1 +1.778229000E3,6.009411695E1 +1.778514000E3,5.804757181E1 +1.778758000E3,5.922775473E1 +1.779011000E3,6.063545461E1 +1.779277000E3,5.950242674E1 +1.779575000E3,6.057891518E1 +1.779819000E3,6.050018223E1 +1.780115000E3,5.965583098E1 +1.780361000E3,5.651792502E1 +1.780660000E3,5.814099422E1 +1.780904000E3,5.340077797E1 +1.781203000E3,5.734973286E1 +1.781481000E3,5.846278011E1 +1.781805000E3,5.369751607E1 +1.782048000E3,5.229063054E1 +1.782299000E3,5.345996994E1 +1.782583000E3,5.724353788E1 +1.782883000E3,5.610772411E1 +1.783181000E3,5.272586700E1 +1.783423000E3,5.272075137E1 +1.783692000E3,5.495532717E1 +1.783945000E3,5.594785882E1 +1.784202000E3,5.914935612E1 +1.784483000E3,6.427791570E1 +1.784735000E3,6.185652247E1 +1.785051000E3,6.178338943E1 +1.785352000E3,6.304285312E1 +1.785598000E3,5.699176354E1 +1.785897000E3,5.705567192E1 +1.786190000E3,5.975757470E1 +1.786467000E3,6.092866408E1 +1.786714000E3,5.771726615E1 +1.786984000E3,5.434727511E1 +1.787232000E3,5.250796794E1 +1.787486000E3,5.668884634E1 +1.787813000E3,5.600600547E1 +1.788061000E3,5.162213387E1 +1.788391000E3,5.782497792E1 +1.788636000E3,5.900804565E1 +1.788935000E3,6.056317474E1 +1.789175000E3,5.749029459E1 +1.789469000E3,6.053654612E1 +1.789714000E3,5.841478287E1 +1.789988000E3,5.700130118E1 +1.790219000E3,5.562837186E1 +1.790509000E3,5.430369658E1 +1.790806000E3,5.586895515E1 +1.791048000E3,5.809725956E1 +1.791409000E3,5.552827992E1 +1.791650000E3,5.534472171E1 +1.791981000E3,5.671474363E1 +1.792227000E3,5.716453332E1 +1.792522000E3,5.844249975E1 +1.792847000E3,5.961186667E1 +1.793109000E3,5.794833541E1 +1.793437000E3,5.832360597E1 +1.793698000E3,5.996001578E1 +1.793970000E3,5.849924827E1 +1.794223000E3,5.823551411E1 +1.794488000E3,5.480450178E1 +1.794819000E3,5.715609034E1 +1.795083000E3,5.418083703E1 +1.795329000E3,5.529883425E1 +1.795587000E3,5.729455769E1 +1.795853000E3,5.358946536E1 +1.796083000E3,5.534684059E1 +1.796374000E3,5.693696454E1 +1.796630000E3,5.642610016E1 +1.796927000E3,5.692548294E1 +1.797194000E3,5.931602223E1 +1.797469000E3,5.877569790E1 +1.797716000E3,5.527135197E1 +1.798053000E3,5.904674814E1 +1.798358000E3,5.655039196E1 +1.798612000E3,5.796779928E1 +1.798921000E3,5.499199210E1 +1.799185000E3,5.693837926E1 +1.799465000E3,6.235855457E1 +1.799695000E3,6.271612813E1 +1.799964000E3,6.118271582E1 +1.800233000E3,6.171552449E1 +1.800562000E3,6.293258336E1 +1.800818000E3,5.927940855E1 +1.801077000E3,5.836879001E1 +1.801406000E3,6.182854437E1 +1.801650000E3,5.918527405E1 +1.801894000E3,6.352260837E1 +1.802163000E3,6.142940723E1 +1.802385000E3,5.867772092E1 +1.802631000E3,5.916688243E1 +1.802927000E3,5.855222781E1 +1.803228000E3,6.125789004E1 +1.803533000E3,5.839377949E1 +1.803816000E3,5.705167204E1 +1.804057000E3,5.641730344E1 +1.804362000E3,6.771092582E1 +1.804585000E3,6.036461449E1 +1.804835000E3,6.742095194E1 +1.805132000E3,6.133151855E1 +1.805443000E3,6.658554202E1 +1.805718000E3,7.095511769E1 +1.806003000E3,7.330553664E1 +1.806290000E3,6.732809523E1 +1.806566000E3,6.106403544E1 +1.806844000E3,5.830930506E1 +1.807085000E3,6.610455401E1 +1.807442000E3,5.944325189E1 +1.807800000E3,5.667454347E1 +1.808044000E3,5.560521877E1 +1.808299000E3,5.488377812E1 +1.808542000E3,5.279721650E1 +1.808789000E3,4.834692654E1 +1.809029000E3,4.661669368E1 +1.809276000E3,5.501186804E1 +1.809526000E3,5.384830085E1 +1.809820000E3,5.526588307E1 +1.810084000E3,5.900458249E1 +1.810393000E3,5.557146256E1 +1.810647000E3,5.355619280E1 +1.811023000E3,5.627924000E1 +1.811283000E3,5.384503050E1 +1.811527000E3,5.309622401E1 +1.811816000E3,5.228523776E1 +1.812070000E3,5.317657142E1 +1.812328000E3,5.813846570E1 +1.812583000E3,5.621088360E1 +1.812927000E3,5.646965227E1 +1.813191000E3,5.322001188E1 +1.813436000E3,5.451886743E1 +1.813748000E3,5.558621720E1 +1.814006000E3,5.673920724E1 +1.814328000E3,5.582855401E1 +1.814591000E3,6.044196407E1 +1.814848000E3,5.769208427E1 +1.815109000E3,6.206015086E1 +1.815391000E3,5.918173335E1 +1.815660000E3,5.779702061E1 +1.815927000E3,6.516398742E1 +1.816218000E3,5.927869783E1 +1.816546000E3,6.320256740E1 +1.816802000E3,6.296743684E1 +1.817051000E3,5.869001212E1 +1.817329000E3,5.985536664E1 +1.817620000E3,5.435607380E1 +1.817905000E3,5.721703373E1 +1.818148000E3,6.314389823E1 +1.818376000E3,6.116752308E1 +1.818622000E3,5.773611736E1 +1.818863000E3,5.892899245E1 +1.819138000E3,5.791411351E1 +1.819457000E3,6.283307798E1 +1.819719000E3,5.805008540E1 +1.819967000E3,6.383011196E1 +1.820266000E3,5.915938870E1 +1.820515000E3,5.795811325E1 +1.820871000E3,5.730398564E1 +1.821113000E3,5.907223014E1 +1.821388000E3,5.566469845E1 +1.821612000E3,5.223652040E1 +1.821858000E3,5.461868826E1 +1.822118000E3,5.731142265E1 +1.822388000E3,5.743609212E1 +1.822672000E3,6.147918645E1 +1.822919000E3,6.109678537E1 +1.823167000E3,5.654516230E1 +1.823464000E3,6.010058675E1 +1.823716000E3,6.101649690E1 +1.824046000E3,5.741898993E1 +1.824372000E3,5.654969113E1 +1.824629000E3,5.489877253E1 +1.824894000E3,6.410593751E1 +1.825142000E3,5.923267903E1 +1.825399000E3,5.977300321E1 +1.825683000E3,5.945891570E1 +1.825907000E3,5.799474745E1 +1.826162000E3,5.485933719E1 +1.826447000E3,5.848818620E1 +1.826697000E3,5.937282663E1 +1.826944000E3,5.473647239E1 +1.827319000E3,5.611635619E1 +1.827649000E3,5.704234375E1 +1.827909000E3,5.174683398E1 +1.828172000E3,5.243070089E1 +1.828457000E3,5.835398328E1 +1.828710000E3,6.579711207E1 +1.828969000E3,6.063158540E1 +1.829218000E3,5.379307224E1 +1.829474000E3,5.791005982E1 +1.829779000E3,5.908028356E1 +1.830025000E3,5.476368407E1 +1.830307000E3,5.608145667E1 +1.830627000E3,5.417323034E1 +1.830843000E3,5.295530865E1 +1.831087000E3,5.335160491E1 +1.831385000E3,5.274441298E1 +1.831622000E3,5.307477504E1 +1.831918000E3,5.606159985E1 +1.832155000E3,6.009472302E1 +1.832471000E3,5.380117674E1 +1.832766000E3,5.382200579E1 +1.833012000E3,5.176006230E1 +1.833256000E3,5.956343573E1 +1.833577000E3,5.545935306E1 +1.833826000E3,5.528541848E1 +1.834083000E3,5.436381252E1 +1.834373000E3,5.684307553E1 +1.834669000E3,5.352399464E1 +1.834910000E3,5.651184236E1 +1.835208000E3,5.432875840E1 +1.835453000E3,5.442576527E1 +1.835752000E3,5.643309342E1 +1.836022000E3,5.781174029E1 +1.836293000E3,6.110602518E1 +1.836557000E3,5.591856301E1 +1.836932000E3,5.423752303E1 +1.837200000E3,5.716598850E1 +1.837455000E3,5.511743414E1 +1.837716000E3,5.819026063E1 +1.837988000E3,5.728773522E1 +1.838236000E3,5.959151016E1 +1.838540000E3,5.810767345E1 +1.838799000E3,5.779128856E1 +1.839096000E3,6.092094761E1 +1.839361000E3,5.957871329E1 +1.839608000E3,5.838702884E1 +1.839856000E3,5.927631822E1 +1.840242000E3,5.748386760E1 +1.840516000E3,5.957609475E1 +1.840759000E3,5.688693666E1 +1.841054000E3,5.883374773E1 +1.841320000E3,5.769470339E1 +1.841597000E3,5.894509733E1 +1.841885000E3,6.032854908E1 +1.842190000E3,5.891601570E1 +1.842444000E3,5.957860612E1 +1.842691000E3,5.968229576E1 +1.842933000E3,5.829247522E1 +1.843258000E3,6.183086549E1 +1.843539000E3,6.077794792E1 +1.843765000E3,5.928253866E1 +1.844002000E3,5.782805396E1 +1.844301000E3,5.975447959E1 +1.844589000E3,6.108169982E1 +1.844825000E3,5.915565503E1 +1.845116000E3,5.981302437E1 +1.845363000E3,6.019248645E1 +1.845636000E3,6.014223773E1 +1.845861000E3,6.160258605E1 +1.846139000E3,6.002388007E1 +1.846447000E3,6.004612452E1 +1.846706000E3,5.932487324E1 +1.846979000E3,5.718424575E1 +1.847284000E3,5.712987240E1 +1.847586000E3,5.557624595E1 +1.847888000E3,5.603981815E1 +1.848146000E3,5.769591687E1 +1.848418000E3,5.526085696E1 +1.848706000E3,5.815102401E1 +1.848972000E3,5.884177354E1 +1.849226000E3,5.853138751E1 +1.849515000E3,6.156208919E1 +1.849746000E3,6.064923427E1 +1.850008000E3,6.590305387E1 +1.850338000E3,5.853444981E1 +1.850640000E3,5.717447935E1 +1.850942000E3,5.680568615E1 +1.851242000E3,5.928468331E1 +1.851504000E3,5.798449444E1 +1.851757000E3,5.802619768E1 +1.852033000E3,5.998338312E1 +1.852296000E3,5.683616594E1 +1.852550000E3,5.692327884E1 +1.852886000E3,5.878610583E1 +1.853162000E3,5.538467470E1 +1.853432000E3,5.437085520E1 +1.853738000E3,5.469765317E1 +1.854038000E3,5.790268038E1 +1.854297000E3,5.836787866E1 +1.854582000E3,6.160807622E1 +1.854881000E3,5.878613196E1 +1.855158000E3,6.200103199E1 +1.855387000E3,6.087479870E1 +1.855688000E3,6.028304140E1 +1.855930000E3,6.159527875E1 +1.856226000E3,6.082174354E1 +1.856487000E3,5.932314061E1 +1.856744000E3,5.976570730E1 +1.857001000E3,5.473753247E1 +1.857299000E3,5.954612483E1 +1.857556000E3,6.052388497E1 +1.857849000E3,5.848282940E1 +1.858086000E3,5.879664566E1 +1.858384000E3,5.864589973E1 +1.858677000E3,5.659242719E1 +1.858917000E3,5.683870091E1 +1.859195000E3,5.582498919E1 +1.859427000E3,6.011873423E1 +1.859676000E3,5.796702396E1 +1.859911000E3,5.928400715E1 +1.860149000E3,5.826876733E1 +1.860396000E3,6.038481253E1 +1.860680000E3,6.030085568E1 +1.860944000E3,5.890166619E1 +1.861209000E3,6.654379171E1 +1.861519000E3,6.016187265E1 +1.861755000E3,6.139297542E1 +1.862049000E3,6.289106669E1 +1.862388000E3,5.872946965E1 +1.862675000E3,5.800836625E1 +1.862993000E3,5.701819685E1 +1.863248000E3,5.488359846E1 +1.863519000E3,5.747446133E1 +1.863768000E3,5.996388232E1 +1.864087000E3,5.686047813E1 +1.864334000E3,5.935760915E1 +1.864635000E3,6.438349972E1 +1.864894000E3,6.008599590E1 +1.865205000E3,5.995474236E1 +1.865502000E3,6.596906108E1 +1.865837000E3,6.091064347E1 +1.866114000E3,5.885056970E1 +1.866411000E3,6.474486832E1 +1.866666000E3,5.888758286E1 +1.866964000E3,6.138447683E1 +1.867211000E3,6.032596684E1 +1.867482000E3,5.848476935E1 +1.867736000E3,5.631330849E1 +1.867989000E3,5.927138373E1 +1.868246000E3,5.817171672E1 +1.868499000E3,5.358065381E1 +1.868763000E3,5.500264039E1 +1.869129000E3,5.663946315E1 +1.869384000E3,5.601392416E1 +1.869636000E3,5.640732154E1 +1.869947000E3,5.320213962E1 +1.870207000E3,4.907811811E1 +1.870470000E3,5.784153600E1 +1.870743000E3,5.988355074E1 +1.871011000E3,5.973830135E1 +1.871253000E3,5.769679044E1 +1.871519000E3,5.395770126E1 +1.871765000E3,5.751088186E1 +1.872011000E3,5.342275719E1 +1.872301000E3,5.638616310E1 +1.872563000E3,5.124369984E1 +1.872821000E3,5.357036185E1 +1.873129000E3,5.529809524E1 +1.873386000E3,5.442720524E1 +1.873650000E3,5.306298792E1 +1.873937000E3,5.703507672E1 +1.874184000E3,5.835246426E1 +1.874444000E3,5.638184247E1 +1.874707000E3,5.201779537E1 +1.874972000E3,5.217149520E1 +1.875244000E3,5.757612416E1 +1.875577000E3,5.387788750E1 +1.875865000E3,5.607108884E1 +1.876149000E3,5.692352283E1 +1.876407000E3,5.577296536E1 +1.876687000E3,5.259836493E1 +1.876982000E3,5.467571766E1 +1.877215000E3,5.256317748E1 +1.877521000E3,5.522593862E1 +1.877775000E3,5.432669245E1 +1.878036000E3,5.734031668E1 +1.878314000E3,6.027566119E1 +1.878587000E3,5.567003578E1 +1.878912000E3,5.307720644E1 +1.879176000E3,5.659939353E1 +1.879425000E3,5.110556861E1 +1.879723000E3,5.673190580E1 +1.879969000E3,5.437112204E1 +1.880274000E3,5.433297742E1 +1.880576000E3,5.585075865E1 +1.880875000E3,5.657006430E1 +1.881117000E3,5.701623858E1 +1.881424000E3,5.749679466E1 +1.881673000E3,5.623079196E1 +1.881986000E3,5.545187468E1 +1.882329000E3,5.781610131E1 +1.882611000E3,5.432916720E1 +1.882882000E3,4.940287270E1 +1.883127000E3,5.866223377E1 +1.883391000E3,5.654564177E1 +1.883644000E3,5.888782218E1 +1.883889000E3,5.586307703E1 +1.884148000E3,5.930725555E1 +1.884413000E3,5.963840788E1 +1.884660000E3,5.928611951E1 +1.884926000E3,5.621968819E1 +1.885181000E3,5.811455305E1 +1.885457000E3,5.585646129E1 +1.885714000E3,5.989591718E1 +1.885968000E3,6.058402104E1 +1.886267000E3,5.972100226E1 +1.886517000E3,6.220704457E1 +1.886832000E3,6.037773435E1 +1.887106000E3,6.039308032E1 +1.887385000E3,6.223647696E1 +1.887617000E3,5.854088114E1 +1.887876000E3,6.248517888E1 +1.888128000E3,6.222318884E1 +1.888437000E3,6.070320114E1 +1.888777000E3,5.817372188E1 +1.889076000E3,5.382250608E1 +1.889369000E3,7.004593531E1 +1.889616000E3,6.094415751E1 +1.889913000E3,5.455584628E1 +1.890163000E3,5.387250795E1 +1.890418000E3,5.219742496E1 +1.890714000E3,5.070715955E1 +1.890961000E3,5.362651533E1 +1.891207000E3,5.046817004E1 +1.891453000E3,5.129339201E1 +1.891764000E3,4.856730286E1 +1.892053000E3,5.220705734E1 +1.892321000E3,5.401068171E1 +1.892582000E3,5.109746146E1 +1.892834000E3,5.412675897E1 +1.893090000E3,5.347014573E1 +1.893340000E3,5.092720593E1 +1.893620000E3,5.341316175E1 +1.893886000E3,4.870918930E1 +1.894142000E3,4.929590175E1 +1.894389000E3,4.686294330E1 +1.894692000E3,5.100486031E1 +1.894995000E3,5.087478993E1 +1.895328000E3,4.940372977E1 +1.895606000E3,5.362468443E1 +1.895919000E3,5.608826750E1 +1.896241000E3,5.628756413E1 +1.896497000E3,5.817843169E1 +1.896749000E3,5.809119715E1 +1.897054000E3,5.469613872E1 +1.897287000E3,5.437807476E1 +1.897582000E3,5.794761863E1 +1.897897000E3,6.027023965E1 +1.898145000E3,5.913564460E1 +1.898511000E3,5.510014788E1 +1.898752000E3,5.499817732E1 +1.898999000E3,5.569220222E1 +1.899294000E3,5.368447548E1 +1.899547000E3,5.912109227E1 +1.899841000E3,6.076259223E1 +1.900104000E3,6.153129043E1 +1.900349000E3,5.679462536E1 +1.900634000E3,5.721135074E1 +1.900927000E3,5.674745728E1 +1.901166000E3,5.556227882E1 +1.901462000E3,4.994603734E1 +1.901841000E3,5.122656475E1 +1.902183000E3,5.127903645E1 +1.902436000E3,5.042064547E1 +1.902695000E3,5.425673681E1 +1.902998000E3,5.484388956E1 +1.903228000E3,5.322356297E1 +1.903483000E3,5.161093724E1 +1.903730000E3,5.302125687E1 +1.904019000E3,5.241958307E1 +1.904307000E3,5.116604316E1 +1.904614000E3,5.319513233E1 +1.904991000E3,5.530482451E1 +1.905243000E3,5.829713614E1 +1.905528000E3,4.891404960E1 +1.905774000E3,5.408250868E1 +1.906083000E3,5.272747143E1 +1.906381000E3,5.216068921E1 +1.906624000E3,5.292203291E1 +1.906885000E3,5.243548019E1 +1.907149000E3,4.981562618E1 +1.907448000E3,5.500279348E1 +1.907742000E3,5.481190601E1 +1.907999000E3,5.369800103E1 +1.908315000E3,6.390197571E1 +1.908579000E3,6.517990141E1 +1.908825000E3,5.822949910E1 +1.909064000E3,5.655728640E1 +1.909356000E3,5.292186662E1 +1.909600000E3,5.069372058E1 +1.909895000E3,5.368100654E1 +1.910138000E3,5.616508462E1 +1.910432000E3,6.285923815E1 +1.910670000E3,6.254266196E1 +1.910979000E3,5.628599605E1 +1.911260000E3,5.616383984E1 +1.911482000E3,5.074231882E1 +1.911728000E3,5.398858859E1 +1.911977000E3,5.585565083E1 +1.912237000E3,5.777112626E1 +1.912532000E3,6.036032129E1 +1.912783000E3,6.077032608E1 +1.913052000E3,5.839282786E1 +1.913316000E3,5.397912726E1 +1.913575000E3,5.582771928E1 +1.913848000E3,5.579334158E1 +1.914143000E3,5.778281485E1 +1.914450000E3,5.783459906E1 +1.914713000E3,6.199387267E1 +1.914943000E3,6.173706737E1 +1.915185000E3,5.621060236E1 +1.915433000E3,5.563784893E1 +1.915692000E3,5.470990272E1 +1.915951000E3,5.469960060E1 +1.916217000E3,6.171536544E1 +1.916470000E3,5.862130066E1 +1.916777000E3,5.839467924E1 +1.917028000E3,5.552209731E1 +1.917324000E3,5.763067987E1 +1.917687000E3,5.981653815E1 +1.917967000E3,5.790518789E1 +1.918210000E3,5.220287871E1 +1.918457000E3,5.707286116E1 +1.918759000E3,5.657529642E1 +1.918997000E3,6.000130629E1 +1.919241000E3,5.708419446E1 +1.919496000E3,5.749223221E1 +1.919768000E3,5.843781753E1 +1.920074000E3,5.671929683E1 +1.920373000E3,5.881070992E1 +1.920621000E3,5.603223824E1 +1.920956000E3,6.053511488E1 +1.921216000E3,5.525745837E1 +1.921476000E3,6.186721324E1 +1.921723000E3,6.214292360E1 +1.922025000E3,5.857206109E1 +1.922320000E3,5.934438900E1 +1.922561000E3,6.077867207E1 +1.922860000E3,5.578255978E1 +1.923099000E3,5.723807446E1 +1.923347000E3,5.785786452E1 +1.923636000E3,6.037753633E1 +1.923892000E3,6.106459696E1 +1.924223000E3,5.873119773E1 +1.924511000E3,5.862235861E1 +1.924814000E3,5.732521131E1 +1.925070000E3,5.161553090E1 +1.925373000E3,5.243351685E1 +1.925626000E3,5.041805469E1 +1.925919000E3,5.543714980E1 +1.926175000E3,5.338657816E1 +1.926425000E3,5.616854022E1 +1.926695000E3,5.699328540E1 +1.926965000E3,5.787312270E1 +1.927305000E3,5.558473925E1 +1.927614000E3,5.927685087E1 +1.927880000E3,6.254706193E1 +1.928125000E3,6.079427969E1 +1.928390000E3,5.412440784E1 +1.928634000E3,5.441834540E1 +1.928928000E3,5.220486428E1 +1.929215000E3,5.210908233E1 +1.929515000E3,5.352367419E1 +1.929766000E3,5.356350702E1 +1.930022000E3,5.184851991E1 +1.930322000E3,5.311742835E1 +1.930607000E3,5.453786592E1 +1.930870000E3,5.814140937E1 +1.931155000E3,5.779656646E1 +1.931440000E3,5.488757891E1 +1.931727000E3,5.385182390E1 +1.931981000E3,5.705491580E1 +1.932229000E3,5.576165296E1 +1.932491000E3,5.781333383E1 +1.932730000E3,5.616780300E1 +1.932971000E3,5.400230043E1 +1.933232000E3,5.518627884E1 +1.933510000E3,5.211300688E1 +1.933795000E3,5.292820587E1 +1.934127000E3,5.382097927E1 +1.934390000E3,6.102840439E1 +1.934671000E3,5.486275546E1 +1.934948000E3,5.206103103E1 +1.935198000E3,5.739150099E1 +1.935506000E3,5.310844778E1 +1.935756000E3,5.392681604E1 +1.936008000E3,5.250003264E1 +1.936256000E3,5.801399662E1 +1.936524000E3,5.696032820E1 +1.936785000E3,5.414492013E1 +1.937032000E3,5.536982174E1 +1.937391000E3,5.750979970E1 +1.937677000E3,5.370086514E1 +1.937972000E3,5.359409099E1 +1.938241000E3,4.663692517E1 +1.938508000E3,4.740501122E1 +1.938772000E3,4.812116539E1 +1.939051000E3,4.940260018E1 +1.939311000E3,5.211533825E1 +1.939553000E3,5.351181789E1 +1.939796000E3,5.597808269E1 +1.940081000E3,5.841474518E1 +1.940347000E3,5.900966915E1 +1.940680000E3,5.844032848E1 +1.940932000E3,6.047778057E1 +1.941187000E3,6.179458512E1 +1.941488000E3,5.569784051E1 +1.941730000E3,5.535681081E1 +1.941971000E3,5.409739450E1 +1.942227000E3,5.551927029E1 +1.942555000E3,5.259381649E1 +1.942855000E3,5.090743186E1 +1.943101000E3,5.330610416E1 +1.943383000E3,5.722147303E1 +1.943610000E3,5.564867598E1 +1.944013000E3,5.456395907E1 +1.944265000E3,5.442943523E1 +1.944557000E3,5.982581487E1 +1.944820000E3,5.751114261E1 +1.945081000E3,5.998630171E1 +1.945333000E3,5.908382499E1 +1.945646000E3,5.828329647E1 +1.945951000E3,5.602282904E1 +1.946199000E3,6.197108249E1 +1.946496000E3,5.533258874E1 +1.946770000E3,5.704060455E1 +1.947126000E3,5.457797110E1 +1.947363000E3,5.430717613E1 +1.947637000E3,5.940687974E1 +1.947953000E3,5.436076271E1 +1.948235000E3,5.660912008E1 +1.948550000E3,5.504399315E1 +1.948861000E3,5.464999644E1 +1.949122000E3,5.565806372E1 +1.949384000E3,5.190569146E1 +1.949646000E3,5.153937000E1 +1.949972000E3,5.628803963E1 +1.950248000E3,5.966716422E1 +1.950577000E3,5.820503815E1 +1.950822000E3,5.652058726E1 +1.951118000E3,5.802645793E1 +1.951349000E3,5.727916959E1 +1.951597000E3,5.784165576E1 +1.951900000E3,5.999225852E1 +1.952197000E3,6.048891831E1 +1.952433000E3,5.821794698E1 +1.952728000E3,5.416701806E1 +1.952964000E3,5.183738883E1 +1.953295000E3,5.384161890E1 +1.953675000E3,5.430376660E1 +1.953907000E3,5.257088063E1 +1.954151000E3,5.392186903E1 +1.954431000E3,6.167467738E1 +1.954678000E3,5.958790115E1 +1.954923000E3,5.822018477E1 +1.955185000E3,5.808448347E1 +1.955447000E3,5.733347749E1 +1.955703000E3,6.261390980E1 +1.956005000E3,5.829281758E1 +1.956246000E3,5.949056653E1 +1.956541000E3,5.839747914E1 +1.956810000E3,5.770882066E1 +1.957120000E3,5.690637302E1 +1.957421000E3,5.796705847E1 +1.957668000E3,5.867770180E1 +1.957936000E3,5.696585443E1 +1.958216000E3,5.738908049E1 +1.958463000E3,5.842272770E1 +1.958721000E3,5.966072568E1 +1.959033000E3,6.340725612E1 +1.959281000E3,6.193544465E1 +1.959566000E3,5.927164536E1 +1.959888000E3,6.146900670E1 +1.960249000E3,6.270186363E1 +1.960512000E3,5.695216686E1 +1.960779000E3,5.725758836E1 +1.961040000E3,5.788439963E1 +1.961303000E3,6.286977927E1 +1.961557000E3,6.361469653E1 +1.961802000E3,6.277422462E1 +1.962060000E3,6.032704022E1 +1.962310000E3,5.600516510E1 +1.962586000E3,6.188879617E1 +1.962805000E3,6.271522018E1 +1.963107000E3,6.025198847E1 +1.963453000E3,6.001529679E1 +1.963728000E3,5.375240125E1 +1.964036000E3,5.055228276E1 +1.964331000E3,5.257092943E1 +1.964568000E3,5.708661900E1 +1.964868000E3,5.629448239E1 +1.965178000E3,5.425890416E1 +1.965431000E3,5.575014937E1 +1.965679000E3,5.801461965E1 +1.965931000E3,5.400244473E1 +1.966191000E3,5.474887871E1 +1.966525000E3,5.196538635E1 +1.966783000E3,5.536524974E1 +1.967040000E3,5.974878933E1 +1.967338000E3,6.200932986E1 +1.967644000E3,6.295299888E1 +1.967909000E3,6.272635154E1 +1.968153000E3,5.902465660E1 +1.968474000E3,5.897159976E1 +1.968773000E3,5.506910037E1 +1.969014000E3,5.622897524E1 +1.969254000E3,5.457019516E1 +1.969505000E3,5.648049168E1 +1.969892000E3,5.656883155E1 +1.970152000E3,5.598423772E1 +1.970446000E3,5.186768597E1 +1.970726000E3,5.526177698E1 +1.971020000E3,5.810907246E1 +1.971304000E3,5.262875480E1 +1.971613000E3,5.141696402E1 +1.971915000E3,5.298264424E1 +1.972196000E3,5.641801556E1 +1.972483000E3,5.228737642E1 +1.972725000E3,5.649656740E1 +1.973036000E3,5.867645632E1 +1.973323000E3,5.679238187E1 +1.973633000E3,5.959682402E1 +1.973935000E3,5.617109756E1 +1.974236000E3,5.473085666E1 +1.974547000E3,5.589564412E1 +1.974836000E3,5.691193712E1 +1.975136000E3,5.808545953E1 +1.975385000E3,5.922478363E1 +1.975631000E3,5.707996013E1 +1.975881000E3,5.820923707E1 +1.976194000E3,5.897957095E1 +1.976453000E3,6.019944728E1 +1.976814000E3,6.472960186E1 +1.977076000E3,6.312075290E1 +1.977356000E3,5.886370461E1 +1.977618000E3,5.750754913E1 +1.977917000E3,5.531180501E1 +1.978189000E3,5.815410032E1 +1.978463000E3,5.735965971E1 +1.978732000E3,5.593071322E1 +1.978999000E3,5.835041964E1 +1.979245000E3,5.646810288E1 +1.979493000E3,5.392299875E1 +1.979902000E3,5.430590311E1 +1.980142000E3,5.447583546E1 +1.980384000E3,5.260389735E1 +1.980632000E3,5.537561423E1 +1.980873000E3,5.836960119E1 +1.981120000E3,5.425821286E1 +1.981389000E3,5.153336720E1 +1.981618000E3,5.420085973E1 +1.981915000E3,5.457985954E1 +1.982165000E3,5.637026749E1 +1.982404000E3,6.009656118E1 +1.982718000E3,5.903298531E1 +1.983029000E3,5.665152425E1 +1.983296000E3,5.778918758E1 +1.983538000E3,5.444374512E1 +1.983786000E3,5.619088618E1 +1.984047000E3,6.088482249E1 +1.984304000E3,5.678390940E1 +1.984575000E3,5.873820942E1 +1.984842000E3,6.004736340E1 +1.985142000E3,6.191465398E1 +1.985405000E3,6.154032648E1 +1.985653000E3,5.967034113E1 +1.985913000E3,5.855925349E1 +1.986211000E3,5.529356341E1 +1.986557000E3,5.823190054E1 +1.986847000E3,5.749679599E1 +1.987098000E3,5.855123449E1 +1.987369000E3,5.999203293E1 +1.987610000E3,6.139424716E1 +1.987876000E3,5.730078222E1 +1.988126000E3,5.649537684E1 +1.988425000E3,5.872458305E1 +1.988727000E3,5.704322852E1 +1.989024000E3,6.264447151E1 +1.989326000E3,5.763604303E1 +1.989641000E3,5.657919006E1 +1.989961000E3,5.706004491E1 +1.990255000E3,6.115159729E1 +1.990571000E3,5.721964371E1 +1.990829000E3,5.780420781E1 +1.991088000E3,5.782228640E1 +1.991353000E3,5.791642518E1 +1.991611000E3,5.820065680E1 +1.991935000E3,5.675756460E1 +1.992174000E3,5.720433643E1 +1.992482000E3,5.907701380E1 +1.992770000E3,5.791335620E1 +1.993107000E3,5.504589678E1 +1.993369000E3,6.117578252E1 +1.993619000E3,5.902046786E1 +1.993912000E3,6.024153080E1 +1.994216000E3,6.061721402E1 +1.994464000E3,6.185610038E1 +1.994715000E3,5.902440055E1 +1.995005000E3,6.112374185E1 +1.995249000E3,5.664710018E1 +1.995551000E3,5.841351492E1 +1.995787000E3,5.961393992E1 +1.996119000E3,5.614463215E1 +1.996387000E3,5.528223904E1 +1.996647000E3,5.706960328E1 +1.996947000E3,5.544195306E1 +1.997203000E3,5.747091679E1 +1.997452000E3,5.434233120E1 +1.997769000E3,5.794847441E1 +1.998019000E3,5.504963001E1 +1.998267000E3,5.470768853E1 +1.998498000E3,6.426300701E1 +1.998789000E3,6.070245213E1 +1.999090000E3,5.893271279E1 +1.999390000E3,5.873668669E1 +1.999698000E3,6.355663744E1 +1.999962000E3,6.500393379E1 +2.000214000E3,6.177640112E1 +2.000471000E3,6.122167361E1 +2.000775000E3,5.982616779E1 +2.001079000E3,5.944943300E1 +2.001339000E3,5.772707313E1 +2.001595000E3,5.934980117E1 +2.001862000E3,6.221301291E1 +2.002160000E3,6.098009785E1 +2.002491000E3,6.205877653E1 +2.002758000E3,5.978743388E1 +2.003062000E3,6.141065367E1 +2.003307000E3,6.146860620E1 +2.003555000E3,6.323368939E1 +2.003884000E3,6.072009355E1 +2.004185000E3,6.072017978E1 +2.004424000E3,6.079512782E1 +2.004673000E3,6.651000141E1 +2.004939000E3,6.185812181E1 +2.005202000E3,5.705353418E1 +2.005472000E3,5.820400818E1 +2.005800000E3,5.682542431E1 +2.006070000E3,6.224932691E1 +2.006350000E3,5.654791681E1 +2.006601000E3,6.160831985E1 +2.006857000E3,6.443497299E1 +2.007101000E3,6.091208862E1 +2.007395000E3,5.867323811E1 +2.007635000E3,5.850229824E1 +2.007945000E3,6.307832054E1 +2.008197000E3,5.931313312E1 +2.008453000E3,5.632990721E1 +2.008711000E3,5.662998085E1 +2.009032000E3,5.416655753E1 +2.009268000E3,6.273936844E1 +2.009521000E3,6.129068926E1 +2.009786000E3,6.485712301E1 +2.010037000E3,6.605690213E1 +2.010298000E3,6.243431425E1 +2.010541000E3,6.062714733E1 +2.010780000E3,6.369220544E1 +2.011082000E3,5.933701247E1 +2.011330000E3,6.141658123E1 +2.011605000E3,6.232326760E1 +2.011893000E3,5.983132844E1 +2.012226000E3,6.085684837E1 +2.012489000E3,5.844434641E1 +2.012752000E3,5.992485437E1 +2.013005000E3,5.745164278E1 +2.013272000E3,5.489362140E1 +2.013573000E3,5.734004331E1 +2.013861000E3,5.569303233E1 +2.014170000E3,5.619919203E1 +2.014467000E3,5.719248521E1 +2.014715000E3,5.898607642E1 +2.015015000E3,5.312334941E1 +2.015258000E3,4.707687024E1 +2.015594000E3,5.326213693E1 +2.015822000E3,4.977107581E1 +2.016071000E3,5.399380901E1 +2.016333000E3,5.528915982E1 +2.016634000E3,5.648344312E1 +2.016879000E3,5.853194276E1 +2.017143000E3,5.969968429E1 +2.017429000E3,6.121498547E1 +2.017723000E3,5.933414775E1 +2.017961000E3,6.375558171E1 +2.018248000E3,6.102538403E1 +2.018558000E3,6.066629858E1 +2.018830000E3,5.238394429E1 +2.019065000E3,5.528030903E1 +2.019316000E3,5.711235169E1 +2.019578000E3,6.069913503E1 +2.019847000E3,5.344730110E1 +2.020093000E3,5.593398360E1 +2.020413000E3,5.112453486E1 +2.020668000E3,5.529600172E1 +2.020922000E3,5.816841553E1 +2.021177000E3,6.105447683E1 +2.021449000E3,5.967528890E1 +2.021707000E3,5.677568689E1 +2.022115000E3,5.613246875E1 +2.022403000E3,5.846674311E1 +2.022679000E3,5.999468936E1 +2.022930000E3,6.268951545E1 +2.023232000E3,6.037378186E1 +2.023532000E3,6.123290650E1 +2.023784000E3,6.425880775E1 +2.024094000E3,6.043334594E1 +2.024356000E3,6.287321918E1 +2.024616000E3,6.178703582E1 +2.024868000E3,5.974424575E1 +2.025152000E3,5.863905018E1 +2.025429000E3,5.669082005E1 +2.025716000E3,6.192616195E1 +2.026008000E3,6.367561928E1 +2.026300000E3,6.061621393E1 +2.026543000E3,6.411900249E1 +2.026802000E3,6.060951858E1 +2.027066000E3,5.606119041E1 +2.027395000E3,5.099901519E1 +2.027693000E3,5.622472082E1 +2.027945000E3,5.354940616E1 +2.028237000E3,6.282566888E1 +2.028553000E3,5.775523802E1 +2.028868000E3,6.095006183E1 +2.029133000E3,6.333727439E1 +2.029399000E3,5.925545982E1 +2.029660000E3,6.045827699E1 +2.029962000E3,5.594587825E1 +2.030223000E3,5.708579081E1 +2.030478000E3,5.777704597E1 +2.030737000E3,5.406349508E1 +2.030990000E3,5.544037764E1 +2.031246000E3,5.912518025E1 +2.031508000E3,5.924806900E1 +2.031864000E3,6.105667153E1 +2.032110000E3,5.838466956E1 +2.032350000E3,5.923100201E1 +2.032598000E3,6.024290558E1 +2.032866000E3,5.971089342E1 +2.033112000E3,5.478665804E1 +2.033351000E3,5.966531235E1 +2.033644000E3,5.755565544E1 +2.033892000E3,5.982004182E1 +2.034190000E3,5.797424789E1 +2.034425000E3,5.856301863E1 +2.034717000E3,6.325478319E1 +2.035053000E3,6.168254294E1 +2.035364000E3,6.188857455E1 +2.035619000E3,6.156039581E1 +2.035901000E3,6.235770270E1 +2.036169000E3,6.262779828E1 +2.036471000E3,6.142542176E1 +2.036764000E3,5.923845966E1 +2.037022000E3,5.827266837E1 +2.037307000E3,6.314641141E1 +2.037615000E3,5.460230698E1 +2.037870000E3,5.396400232E1 +2.038120000E3,5.561122002E1 +2.038463000E3,5.928400391E1 +2.038767000E3,5.668934966E1 +2.039069000E3,5.831653467E1 +2.039316000E3,5.267103167E1 +2.039622000E3,5.557794232E1 +2.039859000E3,5.543606804E1 +2.040196000E3,5.836770370E1 +2.040499000E3,5.678092478E1 +2.040751000E3,5.612506795E1 +2.041024000E3,5.868430679E1 +2.041274000E3,5.264121586E1 +2.041581000E3,5.828774790E1 +2.041841000E3,5.647338053E1 +2.042088000E3,6.053709731E1 +2.042403000E3,5.614689861E1 +2.042691000E3,5.714845923E1 +2.042944000E3,5.256418368E1 +2.043191000E3,5.601486494E1 +2.043466000E3,5.810869150E1 +2.043715000E3,5.529893852E1 +2.043979000E3,5.708153712E1 +2.044245000E3,5.690179830E1 +2.044568000E3,5.994555064E1 +2.044825000E3,6.172126409E1 +2.045096000E3,6.015473895E1 +2.045377000E3,5.509344178E1 +2.045629000E3,5.568915719E1 +2.045902000E3,5.938619751E1 +2.046155000E3,5.534852098E1 +2.046409000E3,5.905391706E1 +2.046693000E3,5.250115201E1 +2.046947000E3,5.587771233E1 +2.047277000E3,5.599930929E1 +2.047517000E3,5.586822515E1 +2.047803000E3,5.740436533E1 +2.048105000E3,5.413600866E1 +2.048476000E3,5.595836709E1 +2.048737000E3,5.982743631E1 +2.048992000E3,6.001131240E1 +2.049305000E3,5.629713962E1 +2.049568000E3,5.505265617E1 +2.049904000E3,5.686004167E1 +2.050199000E3,6.078932545E1 +2.050470000E3,5.919030857E1 +2.050773000E3,5.640754436E1 +2.051052000E3,5.864124078E1 +2.051311000E3,5.683150656E1 +2.051642000E3,5.391893615E1 +2.051926000E3,4.513639699E1 +2.052174000E3,5.750824000E1 +2.052467000E3,5.945309138E1 +2.052703000E3,6.260915402E1 +2.052981000E3,6.017408744E1 +2.053276000E3,6.158293130E1 +2.053516000E3,6.279041899E1 +2.053759000E3,6.005362243E1 +2.054030000E3,5.776050932E1 +2.054357000E3,5.906607942E1 +2.054642000E3,6.002924771E1 +2.054978000E3,5.708591672E1 +2.055267000E3,5.932996992E1 +2.055552000E3,5.830703641E1 +2.055812000E3,5.428102985E1 +2.056063000E3,5.893384546E1 +2.056382000E3,6.028305726E1 +2.056682000E3,5.904357096E1 +2.056923000E3,6.015407432E1 +2.057171000E3,5.801677968E1 +2.057418000E3,6.561794532E1 +2.057665000E3,6.751214025E1 +2.057959000E3,5.899748641E1 +2.058279000E3,5.616162884E1 +2.058571000E3,5.813941707E1 +2.058834000E3,6.236684118E1 +2.059132000E3,6.058455193E1 +2.059376000E3,6.004963560E1 +2.059687000E3,6.255152045E1 +2.059984000E3,6.155697025E1 +2.060225000E3,6.124056229E1 +2.060517000E3,6.072549607E1 +2.060756000E3,6.119225814E1 +2.061060000E3,5.953618039E1 +2.061302000E3,5.869582322E1 +2.061578000E3,6.248269042E1 +2.061841000E3,6.070173510E1 +2.062089000E3,6.023992255E1 +2.062337000E3,5.848175462E1 +2.062607000E3,5.092907116E1 +2.062859000E3,5.442118268E1 +2.063124000E3,5.298599309E1 +2.063425000E3,6.030333428E1 +2.063671000E3,5.835700379E1 +2.063954000E3,5.943633389E1 +2.064268000E3,5.761479859E1 +2.064577000E3,5.520238299E1 +2.064822000E3,5.901822557E1 +2.065074000E3,5.705952734E1 +2.065339000E3,6.136116330E1 +2.065603000E3,5.746483296E1 +2.065865000E3,5.867757380E1 +2.066141000E3,5.709322981E1 +2.066441000E3,5.775131141E1 +2.066691000E3,5.886237327E1 +2.067036000E3,5.617972984E1 +2.067288000E3,5.802507148E1 +2.067560000E3,6.044497816E1 +2.067891000E3,5.450044868E1 +2.068148000E3,5.616761260E1 +2.068412000E3,6.243097888E1 +2.068673000E3,5.783788439E1 +2.068946000E3,5.764761585E1 +2.069196000E3,5.683737954E1 +2.069468000E3,5.609890848E1 +2.069778000E3,5.465619904E1 +2.070034000E3,5.368960846E1 +2.070328000E3,6.032893819E1 +2.070574000E3,5.862927742E1 +2.070842000E3,5.635830209E1 +2.071101000E3,5.822198053E1 +2.071339000E3,5.691346983E1 +2.071597000E3,5.865778618E1 +2.071860000E3,5.810560725E1 +2.072128000E3,5.968009174E1 +2.072425000E3,5.833852533E1 +2.072667000E3,5.784540163E1 +2.072934000E3,5.644439458E1 +2.073184000E3,5.178260396E1 +2.073488000E3,5.751445421E1 +2.073769000E3,5.974800721E1 +2.074068000E3,6.534291023E1 +2.074348000E3,6.371076652E1 +2.074624000E3,6.156132937E1 +2.074877000E3,6.012113548E1 +2.075119000E3,6.026351151E1 +2.075377000E3,6.142675581E1 +2.075661000E3,6.194478144E1 +2.075914000E3,6.183865569E1 +2.076267000E3,6.387512541E1 +2.076547000E3,6.077311287E1 +2.076803000E3,6.130963963E1 +2.077056000E3,5.862622582E1 +2.077295000E3,5.463497219E1 +2.077610000E3,5.484231095E1 +2.077891000E3,6.099801434E1 +2.078171000E3,5.475621164E1 +2.078466000E3,5.955577801E1 +2.078709000E3,5.720097088E1 +2.078954000E3,5.661944912E1 +2.079224000E3,5.443336360E1 +2.079503000E3,5.917559782E1 +2.079800000E3,5.424380486E1 +2.080057000E3,6.013762169E1 +2.080307000E3,6.100643768E1 +2.080558000E3,6.205128007E1 +2.080810000E3,6.007904071E1 +2.081092000E3,6.423414837E1 +2.081354000E3,5.938817614E1 +2.081601000E3,6.006860062E1 +2.081845000E3,5.833570272E1 +2.082143000E3,5.962915676E1 +2.082396000E3,5.844615966E1 +2.082663000E3,5.932060291E1 +2.082921000E3,6.037844323E1 +2.083227000E3,5.719168160E1 +2.083487000E3,5.597578938E1 +2.083743000E3,5.236775830E1 +2.084062000E3,5.471900653E1 +2.084318000E3,5.178371688E1 +2.084618000E3,5.707729304E1 +2.084858000E3,5.526812689E1 +2.085154000E3,5.716405930E1 +2.085391000E3,5.478798233E1 +2.085687000E3,5.496315929E1 +2.085932000E3,5.701239101E1 +2.086228000E3,5.776438308E1 +2.086467000E3,5.628202894E1 +2.086760000E3,5.042244376E1 +2.087015000E3,5.775963511E1 +2.087362000E3,4.982890988E1 +2.087671000E3,4.785672217E1 +2.087922000E3,4.762697394E1 +2.088178000E3,5.046726223E1 +2.088438000E3,4.890262424E1 +2.088711000E3,5.501277631E1 +2.088981000E3,5.666001705E1 +2.089249000E3,6.014252161E1 +2.089513000E3,5.925311989E1 +2.089806000E3,6.173820636E1 +2.090063000E3,5.350884215E1 +2.090366000E3,5.736408779E1 +2.090744000E3,5.450936109E1 +2.091005000E3,5.763377323E1 +2.091253000E3,6.042269191E1 +2.091515000E3,5.484903903E1 +2.091757000E3,5.882101591E1 +2.092028000E3,5.833139845E1 +2.092280000E3,5.703430671E1 +2.092527000E3,5.247783814E1 +2.092809000E3,5.233323676E1 +2.093037000E3,5.202869643E1 +2.093354000E3,5.628845797E1 +2.093634000E3,5.325396544E1 +2.094006000E3,5.654992892E1 +2.094280000E3,5.713253789E1 +2.094541000E3,5.967664240E1 +2.094800000E3,5.750232678E1 +2.095069000E3,5.544480371E1 +2.095333000E3,5.462176641E1 +2.095596000E3,5.811248949E1 +2.095853000E3,6.196847972E1 +2.096192000E3,5.842850461E1 +2.096488000E3,5.597774452E1 +2.096726000E3,5.601282925E1 +2.097104000E3,5.625832805E1 +2.097364000E3,5.315488909E1 +2.097602000E3,5.287250653E1 +2.097844000E3,5.523708836E1 +2.098081000E3,5.724292600E1 +2.098340000E3,5.659511238E1 +2.098670000E3,5.675324149E1 +2.098945000E3,5.485884276E1 +2.099219000E3,5.694143956E1 +2.099469000E3,5.561655413E1 +2.099765000E3,5.844909410E1 +2.100011000E3,6.135621316E1 +2.100343000E3,5.968766012E1 +2.100584000E3,5.173347950E1 +2.100832000E3,5.415548255E1 +2.101090000E3,5.271968845E1 +2.101339000E3,5.007174890E1 +2.101624000E3,5.279525002E1 +2.101895000E3,5.358558767E1 +2.102197000E3,5.559048142E1 +2.102438000E3,5.476305303E1 +2.102705000E3,5.237114911E1 +2.102947000E3,5.014972007E1 +2.103218000E3,4.895902935E1 +2.103469000E3,5.192053997E1 +2.103853000E3,4.647138436E1 +2.104101000E3,4.837766327E1 +2.104448000E3,5.088929287E1 +2.104740000E3,5.561591777E1 +2.104997000E3,5.440319534E1 +2.105260000E3,5.347164399E1 +2.105561000E3,5.151610441E1 +2.105813000E3,5.075382634E1 +2.106121000E3,5.244425755E1 +2.106357000E3,5.269617654E1 +2.106663000E3,5.149027406E1 +2.106954000E3,5.659456733E1 +2.107266000E3,5.282561460E1 +2.107606000E3,5.407918273E1 +2.107883000E3,5.643922092E1 +2.108164000E3,5.169657105E1 +2.108480000E3,5.713744586E1 +2.108748000E3,5.931186178E1 +2.109003000E3,5.645689600E1 +2.109252000E3,5.322874786E1 +2.109552000E3,5.363731782E1 +2.109821000E3,5.353815648E1 +2.110077000E3,5.445551750E1 +2.110418000E3,5.491110228E1 +2.110669000E3,5.291647814E1 +2.110921000E3,5.202914132E1 +2.111180000E3,5.363241827E1 +2.111479000E3,5.566624291E1 +2.111721000E3,5.645238247E1 +2.112027000E3,5.458458697E1 +2.112294000E3,5.469783372E1 +2.112597000E3,5.582449562E1 +2.112854000E3,5.595416398E1 +2.113105000E3,5.113785865E1 +2.113352000E3,6.248282803E1 +2.113711000E3,5.880495226E1 +2.113968000E3,5.941805617E1 +2.114248000E3,5.561632009E1 +2.114507000E3,5.501810850E1 +2.114754000E3,5.936291007E1 +2.115053000E3,6.127733734E1 +2.115321000E3,6.057491273E1 +2.115616000E3,6.127323198E1 +2.115893000E3,5.760488174E1 +2.116193000E3,6.030881831E1 +2.116434000E3,5.967518116E1 +2.116722000E3,5.720938908E1 +2.117066000E3,5.605932878E1 +2.117338000E3,6.068190844E1 +2.117598000E3,5.400374866E1 +2.117892000E3,5.332007667E1 +2.118133000E3,4.991979059E1 +2.118428000E3,5.700198654E1 +2.118666000E3,5.878418983E1 +2.118922000E3,5.703766890E1 +2.119230000E3,5.731012811E1 +2.119515000E3,5.865622099E1 +2.119741000E3,5.772295719E1 +2.120015000E3,5.851982083E1 +2.120322000E3,5.958645129E1 +2.120616000E3,6.233814130E1 +2.120861000E3,6.002711287E1 +2.121162000E3,5.939190004E1 +2.121437000E3,5.758195225E1 +2.121690000E3,5.564648712E1 +2.121946000E3,5.336629511E1 +2.122218000E3,5.199121426E1 +2.122476000E3,5.906368298E1 +2.122759000E3,5.917930836E1 +2.123014000E3,5.824882047E1 +2.123266000E3,5.770359270E1 +2.123492000E3,5.695638802E1 +2.123777000E3,5.720151485E1 +2.124027000E3,6.045411810E1 +2.124327000E3,5.540258870E1 +2.124575000E3,5.828000252E1 +2.124835000E3,5.500577731E1 +2.125106000E3,5.926473821E1 +2.125354000E3,5.472888078E1 +2.125611000E3,5.530970077E1 +2.125862000E3,5.595037084E1 +2.126117000E3,5.439239133E1 +2.126432000E3,5.961943996E1 +2.126692000E3,5.841091801E1 +2.126944000E3,5.863137443E1 +2.127282000E3,5.731398304E1 +2.127577000E3,5.665374527E1 +2.127843000E3,5.476493539E1 +2.128129000E3,5.580929465E1 +2.128437000E3,5.565551021E1 +2.128739000E3,5.869101147E1 +2.129026000E3,5.827114612E1 +2.129307000E3,5.507536074E1 +2.129577000E3,5.532393691E1 +2.129934000E3,5.233850306E1 +2.130215000E3,5.514372423E1 +2.130466000E3,5.757947445E1 +2.130714000E3,6.126034226E1 +2.131015000E3,6.074916673E1 +2.131279000E3,5.864911171E1 +2.131564000E3,5.680524431E1 +2.131825000E3,6.002252741E1 +2.132078000E3,5.953076168E1 +2.132390000E3,6.027427680E1 +2.132647000E3,5.955779136E1 +2.132902000E3,5.835756058E1 +2.133223000E3,6.286787860E1 +2.133471000E3,6.057291506E1 +2.133724000E3,5.893793659E1 +2.134002000E3,5.508555746E1 +2.134257000E3,5.619881839E1 +2.134512000E3,5.505764062E1 +2.134784000E3,5.808922162E1 +2.135054000E3,5.334583096E1 +2.135313000E3,5.298019930E1 +2.135595000E3,5.025342296E1 +2.135812000E3,5.409382682E1 +2.136057000E3,5.580950424E1 +2.136332000E3,5.523743716E1 +2.136661000E3,5.499005541E1 +2.136917000E3,5.745623005E1 +2.137196000E3,5.149169849E1 +2.137449000E3,5.261206885E1 +2.137711000E3,5.487518376E1 +2.138022000E3,5.898871991E1 +2.138270000E3,5.852026830E1 +2.138564000E3,5.868858262E1 +2.138802000E3,5.736353209E1 +2.139066000E3,5.529465652E1 +2.139332000E3,5.762578865E1 +2.139672000E3,5.790185487E1 +2.139930000E3,5.792373283E1 +2.140278000E3,5.597904656E1 +2.140535000E3,5.355980456E1 +2.140856000E3,5.411887429E1 +2.141146000E3,5.094976839E1 +2.141467000E3,5.658279242E1 +2.141735000E3,6.043792292E1 +2.142041000E3,5.996632022E1 +2.142276000E3,6.230155616E1 +2.142526000E3,6.102528468E1 +2.142783000E3,5.770338577E1 +2.143124000E3,5.827243883E1 +2.143406000E3,5.367650147E1 +2.143645000E3,5.777094487E1 +2.143915000E3,5.851595499E1 +2.144175000E3,5.573729509E1 +2.144454000E3,5.467626304E1 +2.144700000E3,5.699765591E1 +2.144968000E3,5.692170932E1 +2.145246000E3,6.030210344E1 +2.145550000E3,5.876913066E1 +2.145797000E3,5.698149837E1 +2.146042000E3,5.982717784E1 +2.146368000E3,5.905293636E1 +2.146676000E3,5.947032966E1 +2.146922000E3,5.910471730E1 +2.147225000E3,6.065874797E1 +2.147524000E3,5.680135408E1 +2.147831000E3,5.451199701E1 +2.148090000E3,5.301325775E1 +2.148365000E3,5.466040661E1 +2.148665000E3,5.658013689E1 +2.148952000E3,5.410667827E1 +2.149249000E3,5.788683658E1 +2.149597000E3,5.873903650E1 +2.149910000E3,5.314379433E1 +2.150150000E3,5.564952940E1 +2.150451000E3,6.000220607E1 +2.150691000E3,6.235870620E1 +2.150965000E3,6.387461990E1 +2.151194000E3,6.491001134E1 +2.151449000E3,5.932544814E1 +2.151756000E3,6.117684525E1 +2.152011000E3,6.059885605E1 +2.152282000E3,6.303246617E1 +2.152596000E3,6.399854390E1 +2.152961000E3,6.063746268E1 +2.153223000E3,6.122116723E1 +2.153495000E3,5.809397592E1 +2.153749000E3,5.903784259E1 +2.153999000E3,6.047826717E1 +2.154283000E3,5.846467986E1 +2.154537000E3,6.226879102E1 +2.154785000E3,5.980611807E1 +2.155079000E3,5.787450321E1 +2.155375000E3,5.676059962E1 +2.155616000E3,5.395823696E1 +2.155912000E3,5.953639288E1 +2.156221000E3,5.971614724E1 +2.156510000E3,6.039969801E1 +2.156758000E3,5.898776738E1 +2.157015000E3,6.100474003E1 +2.157289000E3,5.750129682E1 +2.157591000E3,5.995540643E1 +2.157844000E3,5.628303244E1 +2.158104000E3,5.892686601E1 +2.158366000E3,5.712884748E1 +2.158667000E3,5.727860760E1 +2.158932000E3,5.313556696E1 +2.159288000E3,5.635583768E1 +2.159555000E3,5.929473664E1 +2.159809000E3,5.396180560E1 +2.160112000E3,5.807023999E1 +2.160354000E3,5.639240346E1 +2.160608000E3,5.917728814E1 +2.160855000E3,5.429000157E1 +2.161130000E3,5.397827395E1 +2.161395000E3,5.647751800E1 +2.161656000E3,5.342605760E1 +2.162007000E3,5.324373839E1 +2.162263000E3,5.439383591E1 +2.162517000E3,5.727066505E1 +2.162888000E3,5.995593964E1 +2.163140000E3,6.130649482E1 +2.163392000E3,6.228130821E1 +2.163644000E3,6.279179388E1 +2.163938000E3,5.559527300E1 +2.164178000E3,5.200550071E1 +2.164481000E3,5.797363767E1 +2.164757000E3,5.902554678E1 +2.165040000E3,5.834647622E1 +2.165303000E3,5.713285380E1 +2.165575000E3,6.343633700E1 +2.165850000E3,5.896208706E1 +2.166219000E3,5.624501583E1 +2.166483000E3,5.696603075E1 +2.166769000E3,5.736978604E1 +2.167027000E3,5.837475894E1 +2.167278000E3,5.768129207E1 +2.167593000E3,5.660761865E1 +2.167856000E3,5.680076310E1 +2.168110000E3,5.883044450E1 +2.168385000E3,5.772028600E1 +2.168649000E3,5.342008664E1 +2.168914000E3,5.359113324E1 +2.169168000E3,5.849769703E1 +2.169536000E3,6.267181821E1 +2.169793000E3,5.719603223E1 +2.170040000E3,5.397233107E1 +2.170287000E3,4.861027503E1 +2.170579000E3,5.741564583E1 +2.170822000E3,6.207812430E1 +2.171115000E3,5.827753689E1 +2.171365000E3,6.042202215E1 +2.171629000E3,5.516417228E1 +2.171895000E3,4.912315476E1 +2.172163000E3,4.718316305E1 +2.172446000E3,5.363129541E1 +2.172813000E3,5.322378335E1 +2.173087000E3,5.228499961E1 +2.173349000E3,5.364722432E1 +2.173618000E3,5.964999675E1 +2.173917000E3,6.116591719E1 +2.174174000E3,5.668310324E1 +2.174436000E3,5.538937699E1 +2.174688000E3,5.539330891E1 +2.174944000E3,5.678019084E1 +2.175197000E3,5.655985061E1 +2.175490000E3,6.211643319E1 +2.175751000E3,5.899842059E1 +2.176153000E3,6.042080027E1 +2.176454000E3,5.956376587E1 +2.176730000E3,5.896716838E1 +2.177048000E3,5.729778676E1 +2.177305000E3,5.512323216E1 +2.177616000E3,5.573124529E1 +2.177883000E3,5.390669828E1 +2.178139000E3,5.435017850E1 +2.178403000E3,5.275779180E1 +2.178672000E3,5.469054235E1 +2.178938000E3,5.701832565E1 +2.179201000E3,6.063134316E1 +2.179540000E3,6.461030243E1 +2.179799000E3,6.345934666E1 +2.180043000E3,6.255021373E1 +2.180348000E3,6.265836689E1 +2.180640000E3,6.125083403E1 +2.180878000E3,5.721943432E1 +2.181125000E3,5.584429631E1 +2.181407000E3,5.679219567E1 +2.181647000E3,5.506189996E1 +2.181962000E3,5.950753578E1 +2.182227000E3,5.684863204E1 +2.182499000E3,5.318048388E1 +2.182825000E3,5.856807028E1 +2.183124000E3,6.201159961E1 +2.183360000E3,5.994279105E1 +2.183661000E3,6.155626338E1 +2.183904000E3,5.760612799E1 +2.184197000E3,5.557219911E1 +2.184436000E3,5.720299401E1 +2.184730000E3,5.496492062E1 +2.184965000E3,5.287669523E1 +2.185272000E3,5.534018340E1 +2.185572000E3,5.047897567E1 +2.185897000E3,5.289532450E1 +2.186149000E3,5.169587435E1 +2.186428000E3,5.811856565E1 +2.186722000E3,5.829930976E1 +2.187016000E3,5.767171180E1 +2.187297000E3,5.167293983E1 +2.187542000E3,5.634712904E1 +2.187793000E3,5.452173951E1 +2.188038000E3,5.242356157E1 +2.188332000E3,5.476946331E1 +2.188570000E3,5.506415879E1 +2.188807000E3,5.842757277E1 +2.189123000E3,5.579731569E1 +2.189400000E3,5.735467547E1 +2.189707000E3,5.510643622E1 +2.189947000E3,5.399605596E1 +2.190247000E3,5.231812124E1 +2.190482000E3,5.397423501E1 +2.190722000E3,5.467291530E1 +2.190972000E3,5.750340972E1 +2.191219000E3,5.451621797E1 +2.191527000E3,5.544744059E1 +2.191775000E3,5.570906247E1 +2.192040000E3,5.570238792E1 +2.192395000E3,5.704729905E1 +2.192674000E3,5.662202644E1 +2.192969000E3,6.130245708E1 +2.193206000E3,5.842239411E1 +2.193505000E3,5.813812757E1 +2.193745000E3,5.643123308E1 +2.194038000E3,5.810403241E1 +2.194275000E3,5.863690353E1 +2.194574000E3,5.519980518E1 +2.194810000E3,5.381530940E1 +2.195092000E3,5.781601666E1 +2.195335000E3,5.699265058E1 +2.195608000E3,5.477338243E1 +2.195929000E3,5.695412826E1 +2.196188000E3,5.575935497E1 +2.196439000E3,5.738570553E1 +2.196686000E3,6.194168224E1 +2.196969000E3,5.888525061E1 +2.197270000E3,5.830791470E1 +2.197516000E3,5.904778886E1 +2.197822000E3,5.987539712E1 +2.198117000E3,5.910637217E1 +2.198355000E3,5.676446576E1 +2.198673000E3,5.632729175E1 +2.198920000E3,5.826507178E1 +2.199227000E3,6.221847088E1 +2.199493000E3,6.023584539E1 +2.199739000E3,6.378124478E1 +2.199975000E3,6.457706819E1 +2.200218000E3,5.781084826E1 +2.200471000E3,5.833307765E1 +2.200715000E3,5.849295856E1 +2.200984000E3,5.695016071E1 +2.201255000E3,5.945608920E1 +2.201511000E3,5.923858391E1 +2.201821000E3,5.975381188E1 +2.202050000E3,5.657071344E1 +2.202297000E3,5.582353283E1 +2.202552000E3,5.634201272E1 +2.202803000E3,5.842061156E1 +2.203080000E3,5.511323996E1 +2.203339000E3,5.333816234E1 +2.203589000E3,5.586132206E1 +2.203867000E3,5.612282959E1 +2.204151000E3,5.390907932E1 +2.204405000E3,5.581501331E1 +2.204648000E3,5.691201261E1 +2.204938000E3,5.605209961E1 +2.205271000E3,5.337227455E1 +2.205520000E3,5.726868677E1 +2.205824000E3,5.678400386E1 +2.206068000E3,5.598615724E1 +2.206327000E3,6.245548090E1 +2.206634000E3,5.788335624E1 +2.206927000E3,5.672312442E1 +2.207166000E3,5.700846075E1 +2.207464000E3,5.693157148E1 +2.207703000E3,5.667671942E1 +2.207995000E3,5.655907845E1 +2.208344000E3,5.694003799E1 +2.208592000E3,5.812693102E1 +2.208844000E3,5.305590014E1 +2.209133000E3,5.963333488E1 +2.209376000E3,6.125764761E1 +2.209621000E3,5.708540532E1 +2.209865000E3,5.539532482E1 +2.210177000E3,6.086117928E1 +2.210432000E3,5.871599576E1 +2.210705000E3,5.720891289E1 +2.210929000E3,5.859137268E1 +2.211185000E3,5.492761595E1 +2.211566000E3,5.458369125E1 +2.211811000E3,5.704243717E1 +2.212094000E3,5.948204172E1 +2.212325000E3,5.442994388E1 +2.212570000E3,5.607391365E1 +2.212815000E3,5.349643391E1 +2.213089000E3,5.518134225E1 +2.213397000E3,5.879499176E1 +2.213659000E3,5.918920409E1 +2.213917000E3,6.317166487E1 +2.214205000E3,5.773325998E1 +2.214505000E3,6.021667659E1 +2.214834000E3,5.707564648E1 +2.215074000E3,5.411436798E1 +2.215412000E3,5.705541238E1 +2.215699000E3,6.721672427E1 +2.215946000E3,6.130402498E1 +2.216241000E3,5.914242022E1 +2.216493000E3,5.881747375E1 +2.216786000E3,5.920115687E1 +2.217030000E3,5.981753209E1 +2.217325000E3,5.379848698E1 +2.217566000E3,5.498057230E1 +2.217931000E3,5.647867672E1 +2.218210000E3,5.460935805E1 +2.218440000E3,5.579228446E1 +2.218740000E3,5.598523495E1 +2.218992000E3,5.501198671E1 +2.219248000E3,5.270876730E1 +2.219495000E3,5.711255338E1 +2.219767000E3,5.276578476E1 +2.220009000E3,6.171644376E1 +2.220307000E3,5.760035427E1 +2.220557000E3,6.039071701E1 +2.220820000E3,5.947563028E1 +2.221166000E3,5.781157464E1 +2.221459000E3,5.689764898E1 +2.221740000E3,5.361204154E1 +2.221998000E3,5.565584232E1 +2.222252000E3,6.236264054E1 +2.222508000E3,5.583706888E1 +2.222794000E3,5.998886151E1 +2.223038000E3,6.067027795E1 +2.223281000E3,5.953550256E1 +2.223512000E3,6.087865846E1 +2.223764000E3,5.880177247E1 +2.224056000E3,5.532032645E1 +2.224389000E3,5.110554887E1 +2.224697000E3,6.082114583E1 +2.224957000E3,6.332269799E1 +2.225225000E3,5.859152014E1 +2.225521000E3,6.312344162E1 +2.225760000E3,6.208500503E1 +2.226003000E3,6.030377984E1 +2.226280000E3,5.890306026E1 +2.226553000E3,6.412257006E1 +2.226813000E3,5.959239884E1 +2.227137000E3,5.603893495E1 +2.227460000E3,5.807576772E1 +2.227717000E3,6.034272760E1 +2.227950000E3,5.678924442E1 +2.228211000E3,5.767938832E1 +2.228489000E3,4.973605337E1 +2.228742000E3,5.227056153E1 +2.229007000E3,4.524576382E1 +2.229320000E3,5.163901012E1 +2.229633000E3,5.791269320E1 +2.229909000E3,5.832692980E1 +2.230223000E3,5.512940778E1 +2.230487000E3,5.639998631E1 +2.230845000E3,6.012111222E1 +2.231113000E3,6.632176219E1 +2.231407000E3,6.692769565E1 +2.231662000E3,6.409372191E1 +2.231945000E3,6.268702605E1 +2.232208000E3,6.192012265E1 +2.232460000E3,5.923306273E1 +2.232717000E3,5.726340446E1 +2.233005000E3,5.708270925E1 +2.233256000E3,6.172203942E1 +2.233510000E3,6.197059155E1 +2.233807000E3,6.691458644E1 +2.234160000E3,6.165007134E1 +2.234422000E3,6.172053486E1 +2.234714000E3,6.148833899E1 +2.234974000E3,6.190331921E1 +2.235253000E3,5.938090919E1 +2.235479000E3,6.223060920E1 +2.235722000E3,6.133640397E1 +2.236028000E3,6.400294095E1 +2.236269000E3,6.581462957E1 +2.236516000E3,6.094953675E1 +2.236828000E3,5.792232456E1 +2.237124000E3,5.750665846E1 +2.237367000E3,5.360734442E1 +2.237668000E3,5.239836763E1 +2.237914000E3,5.189659577E1 +2.238168000E3,5.779541581E1 +2.238431000E3,5.409030702E1 +2.238689000E3,5.064192938E1 +2.238941000E3,4.890244292E1 +2.239235000E3,4.958738332E1 +2.239486000E3,5.093509792E1 +2.239725000E3,5.421091975E1 +2.239970000E3,6.074883769E1 +2.240298000E3,5.611992467E1 +2.240604000E3,4.988071111E1 +2.240900000E3,4.952063126E1 +2.241187000E3,5.282005772E1 +2.241428000E3,5.672648648E1 +2.241685000E3,5.807464117E1 +2.241973000E3,5.565097745E1 +2.242224000E3,5.410363002E1 +2.242475000E3,5.548804216E1 +2.242720000E3,5.862108370E1 +2.242959000E3,5.101243713E1 +2.243259000E3,5.340920814E1 +2.243564000E3,5.471013043E1 +2.243801000E3,5.474536753E1 +2.244062000E3,5.454012147E1 +2.244333000E3,5.594751460E1 +2.244637000E3,5.486159050E1 +2.244913000E3,5.317501502E1 +2.245138000E3,5.100209753E1 +2.245397000E3,5.436827206E1 +2.245643000E3,5.483479867E1 +2.245916000E3,5.150486026E1 +2.246182000E3,5.049924887E1 +2.246449000E3,5.226067252E1 +2.246744000E3,5.389432372E1 +2.247057000E3,6.032791953E1 +2.247330000E3,5.966662928E1 +2.247666000E3,5.824962285E1 +2.247962000E3,5.700720490E1 +2.248202000E3,6.373200887E1 +2.248495000E3,6.648419927E1 +2.248743000E3,5.542652488E1 +2.249036000E3,5.256926371E1 +2.249272000E3,6.053195001E1 +2.249564000E3,4.959074314E1 +2.249800000E3,5.054384460E1 +2.250136000E3,5.008489809E1 +2.250431000E3,5.752384263E1 +2.250666000E3,5.367007636E1 +2.250931000E3,4.851936559E1 +2.251210000E3,4.965482987E1 +2.251497000E3,5.733244198E1 +2.251772000E3,5.370188093E1 +2.251997000E3,5.388650114E1 +2.252246000E3,5.331606518E1 +2.252516000E3,5.534782747E1 +2.252818000E3,5.271944154E1 +2.253047000E3,5.188974945E1 +2.253402000E3,5.040855384E1 +2.253689000E3,5.348452962E1 +2.253965000E3,5.685197701E1 +2.254240000E3,5.699151925E1 +2.254539000E3,5.217481719E1 +2.254794000E3,5.255063115E1 +2.255035000E3,5.258436032E1 +2.255283000E3,5.228429265E1 +2.255592000E3,5.187189315E1 +2.255851000E3,5.089851896E1 +2.256105000E3,5.323192817E1 +2.256387000E3,5.259240607E1 +2.256752000E3,5.489099725E1 +2.257016000E3,5.140699592E1 +2.257276000E3,5.478139635E1 +2.257600000E3,5.508183343E1 +2.257864000E3,5.539199709E1 +2.258160000E3,5.879728075E1 +2.258399000E3,6.145510373E1 +2.258645000E3,6.018082278E1 +2.258890000E3,6.203490998E1 +2.259131000E3,6.051201097E1 +2.259385000E3,5.741582229E1 +2.259629000E3,5.742200481E1 +2.259994000E3,5.205318956E1 +2.260295000E3,5.807019657E1 +2.260539000E3,5.843419178E1 +2.260841000E3,5.543595349E1 +2.261104000E3,5.208978608E1 +2.261348000E3,5.288295424E1 +2.261601000E3,5.593156434E1 +2.261856000E3,5.600009221E1 +2.262108000E3,5.581775464E1 +2.262358000E3,5.037081152E1 +2.262613000E3,5.059162693E1 +2.262916000E3,5.459372597E1 +2.263271000E3,5.581642194E1 +2.263548000E3,5.702582989E1 +2.263802000E3,5.531282217E1 +2.264049000E3,5.356460573E1 +2.264318000E3,5.682743962E1 +2.264564000E3,5.353127135E1 +2.264854000E3,5.962134934E1 +2.265080000E3,5.858968032E1 +2.265326000E3,5.681259568E1 +2.265625000E3,5.635120121E1 +2.265871000E3,5.433379551E1 +2.266211000E3,4.913835205E1 +2.266510000E3,5.243179137E1 +2.266783000E3,4.886918417E1 +2.267043000E3,4.774131335E1 +2.267292000E3,4.892025491E1 +2.267553000E3,4.710213612E1 +2.267796000E3,4.847827931E1 +2.268042000E3,5.624471818E1 +2.268281000E3,5.286977188E1 +2.268548000E3,5.683989489E1 +2.268800000E3,5.459251055E1 +2.269086000E3,5.272841607E1 +2.269389000E3,5.585343514E1 +2.269616000E3,5.452972356E1 +2.269865000E3,5.183250423E1 +2.270167000E3,4.733442261E1 +2.270442000E3,4.736450762E1 +2.270667000E3,4.430645798E1 +2.270915000E3,4.635257501E1 +2.271160000E3,4.914582650E1 +2.271407000E3,4.938157659E1 +2.271656000E3,4.788630853E1 +2.271896000E3,4.778446083E1 +2.272198000E3,5.081637081E1 +2.272482000E3,4.630509256E1 +2.272722000E3,4.551027932E1 +2.273048000E3,5.074623045E1 +2.273321000E3,4.689236254E1 +2.273562000E3,4.960242652E1 +2.273859000E3,5.310274016E1 +2.274104000E3,5.391997859E1 +2.274392000E3,4.854992165E1 +2.274648000E3,4.610161890E1 +2.274915000E3,5.325141064E1 +2.275196000E3,4.823989698E1 +2.275460000E3,5.167706762E1 +2.275772000E3,4.424461998E1 +2.276008000E3,4.957193490E1 +2.276258000E3,4.220429916E1 +2.276545000E3,4.614900045E1 +2.276809000E3,4.247109284E1 +2.277119000E3,5.104311310E1 +2.277385000E3,4.898949856E1 +2.277651000E3,5.033981280E1 +2.277920000E3,4.504255509E1 +2.278210000E3,4.851295637E1 +2.278452000E3,4.975001222E1 +2.278771000E3,5.198599663E1 +2.279101000E3,5.078534391E1 +2.279348000E3,5.056977572E1 +2.279614000E3,4.645427419E1 +2.279894000E3,4.837428182E1 +2.280121000E3,4.672417188E1 +2.280416000E3,4.338010131E1 +2.280671000E3,4.552410696E1 +2.280941000E3,4.107346609E1 +2.281195000E3,4.850760260E1 +2.281477000E3,4.449785068E1 +2.281730000E3,3.834743898E1 +2.282028000E3,3.160451104E1 +2.282275000E3,2.921367430E1 +2.282509000E3,3.929432216E1 +2.282771000E3,3.560833020E1 +2.283021000E3,4.204425230E1 +2.283277000E3,4.897505461E1 +2.283570000E3,4.492050546E1 +2.283802000E3,4.549624302E1 +2.284053000E3,4.703134831E1 +2.284302000E3,4.492779574E1 +2.284580000E3,5.573526523E1 +2.284888000E3,4.583204799E1 +2.285186000E3,3.987632497E1 +2.285426000E3,4.276483306E1 +2.285670000E3,4.196646636E1 +2.285974000E3,4.127295807E1 +2.286241000E3,3.392540836E1 +2.286513000E3,3.045281657E1 +2.286755000E3,3.056149566E1 +2.287058000E3,4.234115907E1 +2.287358000E3,4.148011807E1 +2.287615000E3,4.752316696E1 +2.287890000E3,4.261643768E1 +2.288186000E3,3.531031146E1 +2.288451000E3,3.336926272E1 +2.288830000E3,3.217663691E1 +2.289083000E3,3.280943829E1 +2.289350000E3,4.037024361E1 +2.289606000E3,4.463743016E1 +2.289870000E3,3.926930450E1 +2.290142000E3,3.549021170E1 +2.290376000E3,3.657210104E1 +2.290669000E3,3.609483404E1 +2.290917000E3,3.935001060E1 +2.291190000E3,3.968762383E1 +2.291417000E3,3.622062011E1 +2.291698000E3,5.052972627E1 +2.292019000E3,4.472329620E1 +2.292314000E3,3.528869928E1 +2.292580000E3,3.171318762E1 +2.292867000E3,3.293682859E1 +2.293112000E3,2.980662334E1 +2.293408000E3,3.108877030E1 +2.293645000E3,3.411108767E1 +2.293948000E3,2.929195023E1 +2.294231000E3,2.830259325E1 +2.294484000E3,2.905088910E1 +2.294732000E3,3.046102835E1 +2.295049000E3,2.679058069E1 +2.295347000E3,2.620731663E1 +2.295594000E3,3.509528145E1 +2.295836000E3,2.657946529E1 +2.296130000E3,2.511368258E1 +2.296378000E3,2.555955915E1 +2.296634000E3,2.785949260E1 +2.296875000E3,2.654407944E1 +2.297117000E3,3.658368449E1 +2.297412000E3,3.412054652E1 +2.297648000E3,3.448252102E1 +2.297956000E3,3.528486686E1 +2.298205000E3,3.265291425E1 +2.298494000E3,2.963788314E1 +2.298798000E3,3.350933300E1 +2.299085000E3,3.038301619E1 +2.299338000E3,3.357142506E1 +2.299610000E3,4.744800671E1 +2.299868000E3,3.435626076E1 +2.300142000E3,3.368274389E1 +2.300402000E3,2.881246111E1 +2.300655000E3,3.097762310E1 +2.300898000E3,2.947567056E1 +2.301182000E3,3.214187359E1 +2.301423000E3,3.421070745E1 +2.301786000E3,5.117970534E1 +2.302087000E3,5.037784077E1 +2.302335000E3,5.283937176E1 +2.302644000E3,5.164119106E1 +2.302941000E3,5.300709748E1 +2.303240000E3,4.713488810E1 +2.303488000E3,4.524114677E1 +2.303739000E3,3.080285972E1 +2.304022000E3,2.293405577E1 +2.304254000E3,2.235464386E1 +2.304552000E3,2.949911358E1 +2.304876000E3,4.141349798E1 +2.305182000E3,4.156611078E1 +2.305491000E3,4.347125429E1 +2.305797000E3,4.579894404E1 +2.306107000E3,4.646123013E1 +2.306358000E3,4.517240887E1 +2.306604000E3,5.308475174E1 +2.306870000E3,4.681256924E1 +2.307168000E3,2.942058533E1 +2.307450000E3,2.986114457E1 +2.307717000E3,3.195150356E1 +2.308031000E3,3.775567348E1 +2.308265000E3,3.823556499E1 +2.308570000E3,2.909536341E1 +2.308842000E3,3.096070220E1 +2.309098000E3,4.060687649E1 +2.309391000E3,4.820113946E1 +2.309687000E3,4.619079404E1 +2.309928000E3,4.304793785E1 +2.310216000E3,4.976144450E1 +2.310446000E3,4.779148829E1 +2.310686000E3,5.167703897E1 +2.310979000E3,3.773719280E1 +2.311248000E3,2.923821784E1 +2.311466000E3,2.654081756E1 +2.311763000E3,2.616593312E1 +2.312001000E3,2.460963519E1 +2.312285000E3,2.554564289E1 +2.312588000E3,3.572755404E1 +2.312856000E3,4.274835909E1 +2.313074000E3,4.355953935E1 +2.313375000E3,5.377727845E1 +2.313611000E3,5.435235813E1 +2.313893000E3,5.477010993E1 +2.314137000E3,5.142421895E1 +2.314483000E3,4.794670725E1 +2.314780000E3,5.149445419E1 +2.315019000E3,5.127618051E1 +2.315306000E3,4.939341348E1 +2.315533000E3,4.928824788E1 +2.315832000E3,4.617335031E1 +2.316069000E3,3.696469062E1 +2.316377000E3,4.552948924E1 +2.316627000E3,4.672923062E1 +2.316913000E3,4.504192742E1 +2.317215000E3,4.364234368E1 +2.317558000E3,4.231291453E1 +2.317853000E3,4.886663905E1 +2.318118000E3,4.492895691E1 +2.318412000E3,4.464681620E1 +2.318711000E3,4.698360224E1 +2.318950000E3,4.454369095E1 +2.319250000E3,4.409609939E1 +2.319494000E3,4.283121809E1 +2.319793000E3,4.398770219E1 +2.320040000E3,4.728522548E1 +2.320336000E3,4.533798443E1 +2.320660000E3,4.548359371E1 +2.320908000E3,4.366718291E1 +2.321152000E3,5.139935964E1 +2.321408000E3,4.747980864E1 +2.321709000E3,3.867643032E1 +2.321952000E3,4.294445900E1 +2.322196000E3,4.336333736E1 +2.322445000E3,3.890531131E1 +2.322682000E3,4.087281677E1 +2.322980000E3,3.979668464E1 +2.323225000E3,4.157042707E1 +2.323553000E3,4.515881082E1 +2.323886000E3,3.868360739E1 +2.324184000E3,4.839319184E1 +2.324428000E3,4.298284223E1 +2.324669000E3,4.433761346E1 +2.324987000E3,4.011512195E1 +2.325233000E3,3.478551365E1 +2.325486000E3,4.180203002E1 +2.325789000E3,4.323726184E1 +2.326086000E3,3.985791110E1 +2.326333000E3,3.946244529E1 +2.326667000E3,4.066537977E1 +2.326925000E3,3.986903649E1 +2.327223000E3,4.142461274E1 +2.327521000E3,3.461788217E1 +2.327778000E3,3.326602717E1 +2.328102000E3,4.357074645E1 +2.328367000E3,5.496493564E1 +2.328618000E3,4.413482695E1 +2.328920000E3,4.170999616E1 +2.329183000E3,4.107694173E1 +2.329486000E3,5.342371220E1 +2.329729000E3,5.103134188E1 +2.330028000E3,4.716459977E1 +2.330382000E3,4.916498276E1 +2.330642000E3,4.801561309E1 +2.330930000E3,4.860033329E1 +2.331211000E3,5.037441690E1 +2.331463000E3,5.227972551E1 +2.331719000E3,4.516533742E1 +2.331971000E3,4.623606604E1 +2.332268000E3,3.207985320E1 +2.332513000E3,3.485208029E1 +2.332801000E3,4.367306984E1 +2.333109000E3,4.764897626E1 +2.333397000E3,4.844411921E1 +2.333779000E3,4.624834459E1 +2.334088000E3,4.492130047E1 +2.334331000E3,4.172849812E1 +2.334618000E3,4.243441154E1 +2.334859000E3,4.155300890E1 +2.335165000E3,3.508017133E1 +2.335414000E3,3.102497597E1 +2.335689000E3,3.346102792E1 +2.335938000E3,2.980210924E1 +2.336237000E3,2.815695425E1 +2.336480000E3,4.530841757E1 +2.336824000E3,4.476742737E1 +2.337075000E3,4.460293889E1 +2.337332000E3,5.054872999E1 +2.337583000E3,4.962100100E1 +2.337845000E3,5.224787063E1 +2.338132000E3,4.845338775E1 +2.338374000E3,4.675501048E1 +2.338651000E3,4.806540095E1 +2.338903000E3,4.707869991E1 +2.339145000E3,4.747595477E1 +2.339395000E3,3.449909829E1 +2.339700000E3,4.619360178E1 +2.340033000E3,4.785644508E1 +2.340329000E3,4.721347586E1 +2.340579000E3,4.302992844E1 +2.340828000E3,4.629706327E1 +2.341122000E3,4.550319757E1 +2.341368000E3,4.510038554E1 +2.341611000E3,4.752886315E1 +2.341876000E3,4.524122211E1 +2.342135000E3,2.990386366E1 +2.342396000E3,3.647672774E1 +2.342679000E3,2.854891758E1 +2.342936000E3,3.995722191E1 +2.343310000E3,4.501906630E1 +2.343555000E3,4.872212276E1 +2.343839000E3,4.566863325E1 +2.344134000E3,3.946814595E1 +2.344384000E3,4.796193013E1 +2.344656000E3,4.858552009E1 +2.344961000E3,4.902627763E1 +2.345257000E3,4.467711671E1 +2.345498000E3,3.756709071E1 +2.345764000E3,2.964206509E1 +2.346064000E3,4.283044167E1 +2.346415000E3,4.191014925E1 +2.346743000E3,4.910031818E1 +2.347021000E3,5.022624274E1 +2.347337000E3,5.257970130E1 +2.347586000E3,4.764257555E1 +2.347831000E3,4.353349182E1 +2.348126000E3,4.318604201E1 +2.348436000E3,4.825752031E1 +2.348710000E3,4.464987037E1 +2.348968000E3,4.690302679E1 +2.349225000E3,4.464063657E1 +2.349495000E3,5.114524492E1 +2.349740000E3,4.345049547E1 +2.350133000E3,4.655800825E1 +2.350382000E3,4.419356370E1 +2.350688000E3,4.308388818E1 +2.350960000E3,4.964188075E1 +2.351269000E3,5.137042419E1 +2.351542000E3,4.751708919E1 +2.351836000E3,3.239228651E1 +2.352067000E3,3.331178705E1 +2.352357000E3,4.628654550E1 +2.352625000E3,4.653844798E1 +2.352938000E3,4.419734850E1 +2.353231000E3,3.771763539E1 +2.353458000E3,3.489550836E1 +2.353713000E3,2.965581776E1 +2.353962000E3,3.457100474E1 +2.354201000E3,3.291595658E1 +2.354446000E3,2.791603976E1 +2.354711000E3,3.307930362E1 +2.355027000E3,5.311162000E1 +2.355290000E3,4.688373373E1 +2.355581000E3,3.663543876E1 +2.355868000E3,2.834403560E1 +2.356176000E3,5.001680718E1 +2.356518000E3,5.349221251E1 +2.356780000E3,5.234097025E1 +2.357043000E3,4.476475434E1 +2.357349000E3,5.160193390E1 +2.357584000E3,4.375385010E1 +2.357840000E3,3.709166207E1 +2.358125000E3,2.927191182E1 +2.358378000E3,4.114289062E1 +2.358676000E3,4.266518399E1 +2.358921000E3,4.641380631E1 +2.359210000E3,4.551221179E1 +2.359545000E3,4.099683883E1 +2.359801000E3,5.202602500E1 +2.360072000E3,5.207875379E1 +2.360343000E3,4.670310433E1 +2.360619000E3,4.619168123E1 +2.360865000E3,4.348453495E1 +2.361113000E3,4.603882932E1 +2.361353000E3,4.061885274E1 +2.361649000E3,4.873355826E1 +2.361884000E3,4.796347566E1 +2.362174000E3,4.419543811E1 +2.362420000E3,4.412529768E1 +2.362674000E3,4.315515456E1 +2.363006000E3,3.718353950E1 +2.363303000E3,4.131746877E1 +2.363556000E3,3.462830696E1 +2.363825000E3,3.224809166E1 +2.364105000E3,2.946532539E1 +2.364420000E3,4.082560353E1 +2.364671000E3,4.169760242E1 +2.364916000E3,4.728483165E1 +2.365158000E3,4.384961396E1 +2.365493000E3,3.327447630E1 +2.365797000E3,2.406470586E1 +2.366141000E3,2.410271882E1 +2.366422000E3,4.124818432E1 +2.366699000E3,4.300386829E1 +2.366994000E3,4.592409288E1 +2.367239000E3,4.402074721E1 +2.367492000E3,4.331525310E1 +2.367744000E3,4.351543939E1 +2.368045000E3,4.861325913E1 +2.368277000E3,4.345520025E1 +2.368543000E3,5.037549285E1 +2.368790000E3,3.455268589E1 +2.369034000E3,3.454484220E1 +2.369300000E3,3.436570372E1 +2.369544000E3,3.180799867E1 +2.369820000E3,4.460893996E1 +2.370091000E3,5.635981603E1 +2.370383000E3,4.932803438E1 +2.370635000E3,5.123791361E1 +2.370939000E3,4.749913119E1 +2.371193000E3,4.606624254E1 +2.371498000E3,4.453668838E1 +2.371779000E3,4.424564317E1 +2.372081000E3,5.022357768E1 +2.372347000E3,4.983363592E1 +2.372720000E3,4.311987242E1 +2.372969000E3,4.071927446E1 +2.373234000E3,3.624584431E1 +2.373535000E3,3.338407859E1 +2.373777000E3,2.744030282E1 +2.374025000E3,4.017686066E1 +2.374281000E3,4.153799732E1 +2.374537000E3,5.163713220E1 +2.374786000E3,4.970373114E1 +2.375033000E3,4.601563593E1 +2.375284000E3,4.943210146E1 +2.375577000E3,5.208741018E1 +2.375935000E3,4.780129348E1 +2.376167000E3,4.632707744E1 +2.376478000E3,5.008962536E1 +2.376734000E3,4.691729314E1 +2.376987000E3,4.593220796E1 +2.377250000E3,4.703621615E1 +2.377550000E3,4.863501898E1 +2.377838000E3,4.747349412E1 +2.378102000E3,4.430216971E1 +2.378373000E3,5.038477253E1 +2.378648000E3,4.679597376E1 +2.378873000E3,3.998762784E1 +2.379232000E3,4.140472709E1 +2.379480000E3,3.803559367E1 +2.379735000E3,4.292956565E1 +2.379993000E3,3.275484639E1 +2.380260000E3,3.159298587E1 +2.380513000E3,3.066195183E1 +2.380756000E3,4.846258942E1 +2.381012000E3,4.617374426E1 +2.381278000E3,4.338282331E1 +2.381580000E3,2.990070560E1 +2.381878000E3,3.384826320E1 +2.382127000E3,4.352773294E1 +2.382476000E3,3.711143795E1 +2.382756000E3,4.818117865E1 +2.383001000E3,4.694356023E1 +2.383312000E3,4.713242320E1 +2.383556000E3,4.945634369E1 +2.383815000E3,3.710449888E1 +2.384109000E3,4.990714727E1 +2.384350000E3,5.101970483E1 +2.384663000E3,4.290224010E1 +2.384917000E3,3.958873166E1 +2.385203000E3,4.207919898E1 +2.385583000E3,3.937588823E1 +2.385864000E3,3.927490117E1 +2.386122000E3,3.708577985E1 +2.386378000E3,3.104425869E1 +2.386630000E3,2.579918418E1 +2.386935000E3,4.201717352E1 +2.387186000E3,4.469788103E1 +2.387445000E3,3.928301867E1 +2.387699000E3,4.425054811E1 +2.387999000E3,2.901032620E1 +2.388242000E3,2.431535493E1 +2.388542000E3,4.330806788E1 +2.388866000E3,4.587852948E1 +2.389138000E3,5.068663336E1 +2.389420000E3,5.151872270E1 +2.389764000E3,4.501157372E1 +2.390012000E3,4.508008781E1 +2.390288000E3,4.471818734E1 +2.390546000E3,4.453717168E1 +2.390828000E3,3.435610332E1 +2.391113000E3,3.644941891E1 +2.391398000E3,3.741409627E1 +2.391658000E3,4.311052254E1 +2.391963000E3,3.924877335E1 +2.392296000E3,3.956869731E1 +2.392537000E3,3.230149795E1 +2.392786000E3,2.941450360E1 +2.393103000E3,3.366208400E1 +2.393349000E3,2.633153711E1 +2.393653000E3,2.492589605E1 +2.393892000E3,3.518582310E1 +2.394201000E3,3.668564238E1 +2.394454000E3,3.528359554E1 +2.394744000E3,3.673717548E1 +2.395034000E3,2.851979476E1 +2.395378000E3,2.558396774E1 +2.395660000E3,3.919896752E1 +2.395930000E3,3.339597104E1 +2.396187000E3,3.351358057E1 +2.396431000E3,3.743420456E1 +2.396691000E3,4.220523227E1 +2.396991000E3,3.500233403E1 +2.397251000E3,3.475187142E1 +2.397513000E3,3.604068947E1 +2.397821000E3,4.628512725E1 +2.398126000E3,4.463943287E1 +2.398428000E3,4.311458163E1 +2.398781000E3,4.375329409E1 +2.399076000E3,3.749705009E1 +2.399316000E3,4.116349149E1 +2.399615000E3,4.694603167E1 +2.399852000E3,5.327851923E1 +2.400143000E3,5.028800274E1 +2.400380000E3,5.055607260E1 +2.400618000E3,4.184216649E1 +2.400901000E3,4.280576865E1 +2.401144000E3,4.285187037E1 +2.401437000E3,5.414729311E1 +2.401684000E3,5.760726428E1 +2.402102000E3,5.135939721E1 +2.402349000E3,5.519633184E1 +2.402608000E3,5.937895156E1 +2.402853000E3,5.722678447E1 +2.403146000E3,5.316891996E1 +2.403388000E3,5.231876976E1 +2.403684000E3,4.275047946E1 +2.403921000E3,4.497010821E1 +2.404216000E3,5.935375427E1 +2.404454000E3,5.736369919E1 +2.404707000E3,5.877823139E1 +2.404971000E3,6.138635894E1 +2.405219000E3,5.726046839E1 +2.405473000E3,5.213953550E1 +2.405771000E3,4.831408459E1 +2.406024000E3,5.195614478E1 +2.406276000E3,4.885485021E1 +2.406567000E3,4.806131720E1 +2.406866000E3,3.817379603E1 +2.407129000E3,3.496803230E1 +2.407401000E3,4.679161915E1 +2.407625000E3,4.456362030E1 +2.407878000E3,4.499112684E1 +2.408171000E3,4.695848411E1 +2.408491000E3,4.136053284E1 +2.408771000E3,3.435960184E1 +2.409033000E3,2.907775515E1 +2.409287000E3,3.179102298E1 +2.409536000E3,2.535492331E1 +2.409797000E3,2.893863695E1 +2.410015000E3,3.195695462E1 +2.410232000E3,2.883661354E1 +2.410481000E3,4.380812340E1 +2.410735000E3,5.435187737E1 +2.411017000E3,4.390478627E1 +2.411330000E3,4.136550501E1 +2.411572000E3,6.231552653E1 +2.411823000E3,4.988484474E1 +2.412072000E3,4.569499772E1 +2.412339000E3,5.207639469E1 +2.412605000E3,5.314724412E1 +2.412842000E3,5.014855129E1 +2.413111000E3,4.925815950E1 +2.413332000E3,5.545199009E1 +2.413608000E3,4.910878211E1 +2.413873000E3,5.481296501E1 +2.414229000E3,4.620355557E1 +2.414532000E3,4.757632406E1 +2.414792000E3,4.414835702E1 +2.415033000E3,4.178334533E1 +2.415296000E3,3.571558610E1 +2.415577000E3,3.622280285E1 +2.415839000E3,4.187963398E1 +2.416103000E3,4.120303067E1 +2.416426000E3,5.043875316E1 +2.416696000E3,4.738536839E1 +2.417006000E3,4.790698669E1 +2.417250000E3,4.717323409E1 +2.417613000E3,4.889624394E1 +2.417923000E3,4.615999302E1 +2.418209000E3,4.554232436E1 +2.418487000E3,4.963147342E1 +2.418748000E3,4.540077281E1 +2.419058000E3,4.402622058E1 +2.419355000E3,3.991430025E1 +2.419631000E3,5.699106589E1 +2.419880000E3,4.542610605E1 +2.420140000E3,5.871400849E1 +2.420387000E3,5.593691155E1 +2.420634000E3,5.642590944E1 +2.420987000E3,4.942882304E1 +2.421235000E3,5.122637091E1 +2.421504000E3,5.506353313E1 +2.421808000E3,4.974630362E1 +2.422098000E3,4.922446567E1 +2.422401000E3,4.711891494E1 +2.422653000E3,4.935851062E1 +2.422946000E3,5.223840607E1 +2.423180000E3,5.181747333E1 +2.423433000E3,5.106095739E1 +2.423699000E3,4.283067128E1 +2.424023000E3,4.620110870E1 +2.424283000E3,4.813646184E1 +2.424556000E3,4.673905704E1 +2.424833000E3,5.139038068E1 +2.425085000E3,4.187355918E1 +2.425330000E3,4.200690239E1 +2.425641000E3,4.094986905E1 +2.425891000E3,3.869951887E1 +2.426156000E3,4.295178440E1 +2.426411000E3,4.445235603E1 +2.426673000E3,4.180705342E1 +2.426915000E3,4.159918394E1 +2.427275000E3,5.193727105E1 +2.427528000E3,4.985744468E1 +2.427773000E3,5.143594155E1 +2.428021000E3,5.687627643E1 +2.428258000E3,4.984177159E1 +2.428554000E3,4.104898524E1 +2.428794000E3,3.740238657E1 +2.429102000E3,4.424577609E1 +2.429345000E3,5.022623751E1 +2.429627000E3,5.346928374E1 +2.429864000E3,4.448852620E1 +2.430156000E3,3.611387858E1 +2.430475000E3,3.592739777E1 +2.430726000E3,3.269867125E1 +2.431039000E3,4.089980433E1 +2.431331000E3,3.752068977E1 +2.431567000E3,3.972155082E1 +2.431870000E3,4.098289208E1 +2.432107000E3,4.068605974E1 +2.432406000E3,3.978950334E1 +2.432643000E3,3.435438837E1 +2.432933000E3,3.806187937E1 +2.433169000E3,3.613809925E1 +2.433407000E3,5.573542624E1 +2.433734000E3,4.812688919E1 +2.434035000E3,5.332611421E1 +2.434315000E3,5.453475878E1 +2.434557000E3,5.156731049E1 +2.434849000E3,4.452924889E1 +2.435086000E3,4.091217005E1 +2.435380000E3,3.495963916E1 +2.435633000E3,3.994418328E1 +2.435904000E3,5.345258512E1 +2.436200000E3,4.573029424E1 +2.436434000E3,4.666848361E1 +2.436802000E3,4.148612785E1 +2.437044000E3,3.785277445E1 +2.437301000E3,3.823545546E1 +2.437549000E3,3.883632471E1 +2.437839000E3,4.756553033E1 +2.438077000E3,4.282797221E1 +2.438369000E3,5.291874167E1 +2.438606000E3,5.394671897E1 +2.438862000E3,5.490926284E1 +2.439159000E3,5.465277565E1 +2.439395000E3,5.245345229E1 +2.439637000E3,4.823915254E1 +2.440022000E3,5.658050668E1 +2.440281000E3,5.255468157E1 +2.440546000E3,4.365897331E1 +2.440828000E3,4.187636724E1 +2.441125000E3,4.916172461E1 +2.441365000E3,5.038635874E1 +2.441645000E3,5.238005511E1 +2.441868000E3,4.979548238E1 +2.442114000E3,5.164563876E1 +2.442410000E3,4.795862612E1 +2.442694000E3,4.406311297E1 +2.442980000E3,4.461066687E1 +2.443265000E3,3.990213588E1 +2.443525000E3,4.270339676E1 +2.443815000E3,4.671533321E1 +2.444064000E3,4.922681237E1 +2.444311000E3,5.115751882E1 +2.444605000E3,4.659279655E1 +2.444851000E3,4.805254743E1 +2.445152000E3,4.646584218E1 +2.445447000E3,3.924248597E1 +2.445698000E3,3.657018775E1 +2.445976000E3,3.978585816E1 +2.446317000E3,5.134473527E1 +2.446569000E3,4.872028256E1 +2.446851000E3,4.793203365E1 +2.447088000E3,4.917648823E1 +2.447345000E3,4.514648035E1 +2.447599000E3,4.827609085E1 +2.447864000E3,5.009329877E1 +2.448138000E3,4.858127151E1 +2.448430000E3,4.885678900E1 +2.448726000E3,4.038666943E1 +2.448956000E3,3.788824065E1 +2.449214000E3,4.872306097E1 +2.449516000E3,5.112419798E1 +2.449767000E3,4.394357347E1 +2.450028000E3,5.187358067E1 +2.450298000E3,4.764520743E1 +2.450575000E3,5.323515688E1 +2.450844000E3,4.730661272E1 +2.451150000E3,5.022143967E1 +2.451400000E3,4.244080150E1 +2.451697000E3,4.540622562E1 +2.452002000E3,4.987171470E1 +2.452273000E3,4.928771096E1 +2.452519000E3,4.415614577E1 +2.452847000E3,4.529816891E1 +2.453138000E3,3.130480949E1 +2.453407000E3,3.727195618E1 +2.453707000E3,4.218798188E1 +2.453975000E3,3.196426842E1 +2.454240000E3,2.986758668E1 +2.454534000E3,4.365366219E1 +2.454795000E3,4.363233606E1 +2.455054000E3,4.576258560E1 +2.455297000E3,4.600510844E1 +2.455546000E3,5.143992334E1 +2.455816000E3,4.451792491E1 +2.456172000E3,3.834658463E1 +2.456438000E3,4.961865906E1 +2.456716000E3,4.301133302E1 +2.457025000E3,5.185950840E1 +2.457284000E3,4.578127088E1 +2.457582000E3,4.860789001E1 +2.457857000E3,4.548301241E1 +2.458087000E3,5.726595471E1 +2.458343000E3,4.581143143E1 +2.458590000E3,4.593076535E1 +2.458898000E3,4.646845677E1 +2.459143000E3,4.385664195E1 +2.459499000E3,3.921291428E1 +2.459756000E3,4.336490005E1 +2.460079000E3,5.059416731E1 +2.460323000E3,5.383728406E1 +2.460609000E3,4.336002656E1 +2.460894000E3,3.810358455E1 +2.461148000E3,4.341384577E1 +2.461406000E3,4.240002850E1 +2.461668000E3,4.220171306E1 +2.461957000E3,4.165441002E1 +2.462218000E3,4.110791112E1 +2.462543000E3,3.718059239E1 +2.462873000E3,4.490190793E1 +2.463162000E3,4.449127269E1 +2.463461000E3,5.110192526E1 +2.463709000E3,4.670759724E1 +2.464024000E3,4.554197086E1 +2.464345000E3,4.295638115E1 +2.464598000E3,4.260186095E1 +2.464844000E3,3.838281454E1 +2.465094000E3,4.864552318E1 +2.465348000E3,4.722694913E1 +2.465597000E3,5.723123112E1 +2.465970000E3,5.678247819E1 +2.466226000E3,5.304857482E1 +2.466490000E3,5.799491543E1 +2.466745000E3,5.566332539E1 +2.467000000E3,5.532803606E1 +2.467301000E3,5.480406224E1 +2.467518000E3,5.281426808E1 +2.467773000E3,5.319750336E1 +2.468030000E3,4.504180471E1 +2.468309000E3,4.011552860E1 +2.468536000E3,3.286668959E1 +2.468782000E3,5.187437917E1 +2.469159000E3,5.342027818E1 +2.469405000E3,4.655027014E1 +2.469685000E3,4.875434900E1 +2.469968000E3,4.400777727E1 +2.470228000E3,4.944370484E1 +2.470524000E3,4.819898526E1 +2.470826000E3,4.906267157E1 +2.471101000E3,4.559683511E1 +2.471407000E3,5.066052597E1 +2.471662000E3,5.052511938E1 +2.471933000E3,4.854316053E1 +2.472243000E3,4.720397127E1 +2.472513000E3,4.539713693E1 +2.472765000E3,4.504800702E1 +2.473077000E3,4.756996091E1 +2.473381000E3,4.502772911E1 +2.473668000E3,4.844141365E1 +2.473909000E3,4.718772198E1 +2.474176000E3,5.036014826E1 +2.474415000E3,4.734822430E1 +2.474659000E3,4.506554867E1 +2.474941000E3,4.590585801E1 +2.475227000E3,4.808550728E1 +2.475549000E3,4.744751902E1 +2.475816000E3,5.139502060E1 +2.476110000E3,4.565542501E1 +2.476367000E3,4.502651441E1 +2.476614000E3,4.529198411E1 +2.476876000E3,4.841642572E1 +2.477138000E3,4.904966766E1 +2.477430000E3,5.061185879E1 +2.477703000E3,4.805167318E1 +2.477973000E3,4.840268940E1 +2.478233000E3,4.609690512E1 +2.478491000E3,5.080806253E1 +2.478854000E3,4.929079330E1 +2.479112000E3,4.887431247E1 +2.479382000E3,4.582116343E1 +2.479677000E3,4.614295426E1 +2.479939000E3,5.004731017E1 +2.480247000E3,5.118895049E1 +2.480496000E3,4.750144805E1 +2.480785000E3,4.691637905E1 +2.481084000E3,4.575243018E1 +2.481328000E3,4.498034363E1 +2.481622000E3,5.049144453E1 +2.481951000E3,4.811617152E1 +2.482214000E3,4.600387593E1 +2.482494000E3,5.163944801E1 +2.482753000E3,4.933311419E1 +2.482991000E3,4.946534766E1 +2.483244000E3,4.580757204E1 +2.483487000E3,4.797573247E1 +2.483734000E3,4.560844100E1 +2.483990000E3,5.039329574E1 +2.484313000E3,5.052905321E1 +2.484577000E3,5.131938081E1 +2.484833000E3,4.901245069E1 +2.485113000E3,5.233648083E1 +2.485461000E3,5.215489758E1 +2.485749000E3,5.451606287E1 +2.486018000E3,5.043201098E1 +2.486334000E3,5.091085093E1 +2.486650000E3,4.972266732E1 +2.486916000E3,4.846864702E1 +2.487167000E3,4.843730663E1 +2.487412000E3,5.285205631E1 +2.487677000E3,5.695937588E1 +2.487965000E3,5.067248408E1 +2.488216000E3,4.955689254E1 +2.488580000E3,4.789771891E1 +2.488828000E3,4.640186686E1 +2.489150000E3,4.956289338E1 +2.489428000E3,4.916705799E1 +2.489718000E3,4.250319869E1 +2.489959000E3,4.211788948E1 +2.490259000E3,4.711467977E1 +2.490508000E3,5.336087879E1 +2.490805000E3,5.163346506E1 +2.491066000E3,5.303328317E1 +2.491377000E3,5.018594076E1 +2.491684000E3,4.569780009E1 +2.492029000E3,4.677168871E1 +2.492273000E3,4.586755987E1 +2.492522000E3,5.020047651E1 +2.492768000E3,4.585538278E1 +2.493006000E3,5.027464230E1 +2.493315000E3,4.719632652E1 +2.493608000E3,4.892998103E1 +2.493874000E3,4.659859577E1 +2.494131000E3,4.485377967E1 +2.494387000E3,4.661063763E1 +2.494635000E3,4.873112034E1 +2.494904000E3,5.011233058E1 +2.495259000E3,4.996207620E1 +2.495523000E3,5.026371938E1 +2.495789000E3,4.897334151E1 +2.496086000E3,4.919412247E1 +2.496330000E3,4.448238049E1 +2.496598000E3,5.779881243E1 +2.496845000E3,5.068443192E1 +2.497079000E3,5.452206946E1 +2.497328000E3,6.091811093E1 +2.497574000E3,5.545025588E1 +2.497819000E3,5.118451852E1 +2.498124000E3,5.647063434E1 +2.498436000E3,5.942897676E1 +2.498681000E3,6.063927987E1 +2.498932000E3,5.256584857E1 +2.499203000E3,5.942844343E1 +2.499465000E3,5.268198933E1 +2.499726000E3,5.561310022E1 +2.499989000E3,5.551348586E1 +2.500270000E3,5.728700965E1 +2.500550000E3,5.848024533E1 +2.500856000E3,5.545551244E1 +2.501156000E3,7.074712648E1 +2.501405000E3,6.649397556E1 +2.501727000E3,6.577106108E1 +2.501964000E3,5.791155905E1 +2.502223000E3,6.571272960E1 +2.502476000E3,5.223691777E1 +2.502731000E3,5.099379006E1 +2.502989000E3,4.996024440E1 +2.503265000E3,4.587573023E1 +2.503515000E3,6.660646739E1 +2.503792000E3,5.426812996E1 +2.504090000E3,4.221263073E1 +2.504348000E3,3.961359220E1 +2.504607000E3,3.317448387E1 +2.504957000E3,2.765634596E1 +2.505202000E3,5.260508289E1 +2.505444000E3,4.970766119E1 +2.505723000E3,5.961421356E1 +2.506010000E3,5.761735716E1 +2.506316000E3,4.386011183E1 +2.506629000E3,3.297646158E1 +2.506928000E3,3.461351567E1 +2.507171000E3,3.422494413E1 +2.507415000E3,3.898815557E1 +2.507661000E3,3.916714623E1 +2.507958000E3,4.409544564E1 +2.508199000E3,4.040812578E1 +2.508495000E3,4.100804729E1 +2.508767000E3,4.155083379E1 +2.509073000E3,4.256659126E1 +2.509346000E3,4.665111645E1 +2.509615000E3,4.785704834E1 +2.509926000E3,4.957995318E1 +2.510246000E3,5.281308228E1 +2.510533000E3,5.716195403E1 +2.510847000E3,5.384222007E1 +2.511087000E3,4.682850643E1 +2.511483000E3,5.585229854E1 +2.511769000E3,5.797880255E1 +2.512061000E3,5.008051045E1 +2.512305000E3,4.616221083E1 +2.512545000E3,5.837834308E1 +2.512782000E3,4.588894556E1 +2.513082000E3,5.827978204E1 +2.513321000E3,5.321307958E1 +2.513625000E3,5.419914666E1 +2.513860000E3,4.249936315E1 +2.514160000E3,5.093700871E1 +2.514505000E3,4.733309734E1 +2.514807000E3,5.739188753E1 +2.515049000E3,5.684870925E1 +2.515326000E3,5.429714525E1 +2.515551000E3,5.304528611E1 +2.515847000E3,6.048302750E1 +2.516097000E3,5.298092655E1 +2.516397000E3,5.664346713E1 +2.516634000E3,5.062362510E1 +2.516910000E3,5.059011404E1 +2.517165000E3,5.074931344E1 +2.517424000E3,5.193937267E1 +2.517672000E3,4.773080825E1 +2.517933000E3,4.886471101E1 +2.518191000E3,4.258084657E1 +2.518440000E3,4.144243799E1 +2.518697000E3,3.266068365E1 +2.518962000E3,3.662092465E1 +2.519211000E3,4.002326553E1 +2.519469000E3,5.193824268E1 +2.519821000E3,5.548381163E1 +2.520087000E3,5.245445808E1 +2.520336000E3,4.447536752E1 +2.520718000E3,5.931091731E1 +2.521010000E3,5.514928156E1 +2.521305000E3,5.194242569E1 +2.521541000E3,5.632439964E1 +2.521781000E3,4.768714929E1 +2.522074000E3,3.967116686E1 +2.522306000E3,3.457523914E1 +2.522554000E3,3.414939493E1 +2.522808000E3,3.034285017E1 +2.523103000E3,3.725639399E1 +2.523347000E3,5.824523011E1 +2.523645000E3,5.697741808E1 +2.524002000E3,5.995361389E1 +2.524244000E3,5.516819042E1 +2.524491000E3,5.520201782E1 +2.524765000E3,4.576677797E1 +2.524988000E3,5.785527848E1 +2.525299000E3,5.093237528E1 +2.525544000E3,4.090627494E1 +2.525822000E3,3.111750175E1 +2.526056000E3,2.764971736E1 +2.526311000E3,2.852524033E1 +2.526617000E3,3.508264660E1 +2.526905000E3,5.067917717E1 +2.527241000E3,4.646824007E1 +2.527487000E3,3.686495987E1 +2.527738000E3,3.822220480E1 +2.527988000E3,3.764348220E1 +2.528232000E3,4.278450517E1 +2.528563000E3,4.881983602E1 +2.528870000E3,4.048435148E1 +2.529125000E3,4.047282835E1 +2.529398000E3,4.602715630E1 +2.529632000E3,4.358719476E1 +2.529925000E3,4.185499728E1 +2.530224000E3,4.428160693E1 +2.530451000E3,5.370094630E1 +2.530771000E3,4.662369716E1 +2.531057000E3,4.486368653E1 +2.531322000E3,3.985753269E1 +2.531579000E3,3.868983993E1 +2.531842000E3,4.397673982E1 +2.532129000E3,4.465178920E1 +2.532379000E3,4.071629694E1 +2.532681000E3,3.700154265E1 +2.532925000E3,3.709745900E1 +2.533169000E3,3.856350220E1 +2.533454000E3,3.780017804E1 +2.533739000E3,4.079153270E1 +2.534053000E3,3.467337947E1 +2.534304000E3,3.872357849E1 +2.534571000E3,4.188092371E1 +2.534878000E3,4.226520735E1 +2.535180000E3,4.433351029E1 +2.535433000E3,4.196124368E1 +2.535679000E3,4.159710638E1 +2.535934000E3,4.131920574E1 +2.536230000E3,4.013333591E1 +2.536496000E3,3.861252617E1 +2.536812000E3,3.205810696E1 +2.537071000E3,3.900017908E1 +2.537321000E3,3.720890888E1 +2.537589000E3,3.571752088E1 +2.537899000E3,3.466875388E1 +2.538158000E3,3.490809444E1 +2.538414000E3,2.846246396E1 +2.538721000E3,3.471466025E1 +2.539000000E3,3.262267006E1 +2.539250000E3,2.900340615E1 +2.539526000E3,2.962734770E1 +2.539843000E3,4.051335289E1 +2.540219000E3,3.732414883E1 +2.540478000E3,3.212776280E1 +2.540731000E3,3.980002135E1 +2.541002000E3,4.402529692E1 +2.541305000E3,3.531142487E1 +2.541570000E3,4.157255463E1 +2.541892000E3,4.121686373E1 +2.542138000E3,3.512055425E1 +2.542435000E3,3.058422839E1 +2.542704000E3,3.860796470E1 +2.542951000E3,4.158955283E1 +2.543254000E3,4.126835549E1 +2.543598000E3,4.557459954E1 +2.543842000E3,4.195620726E1 +2.544088000E3,4.759905541E1 +2.544347000E3,4.089593512E1 +2.544592000E3,4.224934090E1 +2.544840000E3,3.548720999E1 +2.545141000E3,4.189266277E1 +2.545422000E3,4.058854606E1 +2.545652000E3,3.761551365E1 +2.545897000E3,3.643024250E1 +2.546173000E3,3.544845567E1 +2.546439000E3,3.816851754E1 +2.546779000E3,3.801212128E1 +2.547110000E3,3.288266257E1 +2.547379000E3,4.063952307E1 +2.547641000E3,4.765684387E1 +2.547893000E3,4.402640436E1 +2.548143000E3,4.172886183E1 +2.548441000E3,3.808222191E1 +2.548685000E3,3.637035664E1 +2.548962000E3,3.879815953E1 +2.549230000E3,5.433785228E1 +2.549540000E3,5.428002325E1 +2.549852000E3,5.430864003E1 +2.550121000E3,5.376325395E1 +2.550389000E3,5.250586376E1 +2.550641000E3,5.329413218E1 +2.550946000E3,3.817927317E1 +2.551218000E3,3.779289824E1 +2.551493000E3,4.904361964E1 +2.551759000E3,5.500168111E1 +2.552006000E3,4.745774118E1 +2.552261000E3,5.304049624E1 +2.552515000E3,4.933664563E1 +2.552779000E3,3.482983031E1 +2.553043000E3,3.914561037E1 +2.553378000E3,3.318943686E1 +2.553659000E3,2.674748735E1 +2.553917000E3,2.500565902E1 +2.554234000E3,3.331261434E1 +2.554489000E3,3.380079275E1 +2.554753000E3,3.632095841E1 +2.554996000E3,3.606888467E1 +2.555239000E3,4.759559903E1 +2.555541000E3,5.588542149E1 +2.555837000E3,5.768171500E1 +2.556076000E3,5.837962370E1 +2.556358000E3,5.761486260E1 +2.556647000E3,5.408185929E1 +2.556914000E3,5.624815374E1 +2.557248000E3,4.727853091E1 +2.557554000E3,3.999550071E1 +2.557822000E3,4.090986684E1 +2.558062000E3,3.411171601E1 +2.558302000E3,3.042998918E1 +2.558550000E3,3.392526215E1 +2.558807000E3,3.801243567E1 +2.559082000E3,4.390440101E1 +2.559357000E3,4.215163378E1 +2.559616000E3,4.616573562E1 +2.559972000E3,4.170066459E1 +2.560245000E3,2.972551911E1 +2.560517000E3,3.987643023E1 +2.560765000E3,4.046237199E1 +2.561011000E3,4.268708813E1 +2.561258000E3,4.450541644E1 +2.561531000E3,4.611922799E1 +2.561775000E3,4.492719317E1 +2.562027000E3,4.345851098E1 +2.562302000E3,5.022295857E1 +2.562533000E3,4.986016935E1 +2.562786000E3,3.932672790E1 +2.563211000E3,3.777119812E1 +2.563479000E3,4.577537823E1 +2.563731000E3,5.443473776E1 +2.563977000E3,5.947837126E1 +2.564252000E3,5.014881480E1 +2.564539000E3,4.884415531E1 +2.564781000E3,4.451698294E1 +2.565088000E3,3.693106642E1 +2.565361000E3,3.096881298E1 +2.565624000E3,2.635486448E1 +2.565885000E3,2.734213385E1 +2.566246000E3,3.979362654E1 +2.566493000E3,3.382738554E1 +2.566797000E3,3.469438245E1 +2.567097000E3,4.097528595E1 +2.567346000E3,4.285297734E1 +2.567644000E3,4.930003444E1 +2.567891000E3,4.540271843E1 +2.568170000E3,3.109775861E1 +2.568407000E3,2.738661195E1 +2.568701000E3,3.024785153E1 +2.568952000E3,3.235217301E1 +2.569220000E3,3.196941264E1 +2.569567000E3,4.299833718E1 +2.569862000E3,4.496000509E1 +2.570178000E3,4.562225815E1 +2.570442000E3,4.437451260E1 +2.570707000E3,3.949227756E1 +2.570950000E3,2.951847370E1 +2.571202000E3,3.800151296E1 +2.571472000E3,4.650517590E1 +2.571732000E3,3.967561664E1 +2.571975000E3,3.149456620E1 +2.572246000E3,5.234083710E1 +2.572527000E3,4.544839619E1 +2.572859000E3,4.436174777E1 +2.573168000E3,4.369290756E1 +2.573429000E3,4.420543128E1 +2.573728000E3,4.389854646E1 +2.573968000E3,4.580346210E1 +2.574268000E3,4.881141748E1 +2.574509000E3,4.708023256E1 +2.574802000E3,3.388696242E1 +2.575045000E3,2.922489212E1 +2.575339000E3,3.941924125E1 +2.575597000E3,4.733040375E1 +2.575906000E3,4.790376430E1 +2.576245000E3,4.328559785E1 +2.576517000E3,4.720947277E1 +2.576791000E3,4.076260480E1 +2.577092000E3,3.249905806E1 +2.577324000E3,3.886850876E1 +2.577566000E3,3.577483806E1 +2.577814000E3,4.105002685E1 +2.578080000E3,3.881208350E1 +2.578375000E3,5.720708534E1 +2.578624000E3,4.933084675E1 +2.578932000E3,5.989261963E1 +2.579254000E3,5.193127116E1 +2.579506000E3,4.843920497E1 +2.579747000E3,4.570821188E1 +2.580001000E3,4.446748829E1 +2.580244000E3,4.006228376E1 +2.580497000E3,2.933332862E1 +2.580745000E3,4.525678604E1 +2.580989000E3,4.717489692E1 +2.581288000E3,5.239736286E1 +2.581587000E3,5.268105849E1 +2.581851000E3,4.960616241E1 +2.582112000E3,4.637217789E1 +2.582361000E3,4.676379781E1 +2.582583000E3,4.083594902E1 +2.582903000E3,2.696140701E1 +2.583176000E3,2.668057590E1 +2.583429000E3,2.900886287E1 +2.583692000E3,2.732690452E1 +2.583951000E3,3.475308428E1 +2.584205000E3,4.782860484E1 +2.584480000E3,4.928978168E1 +2.584742000E3,3.697304160E1 +2.585017000E3,3.390321432E1 +2.585248000E3,4.818778278E1 +2.585552000E3,5.175969441E1 +2.585851000E3,4.752724055E1 +2.586108000E3,5.047732228E1 +2.586408000E3,5.003267867E1 +2.586651000E3,4.995698879E1 +2.586934000E3,4.985539117E1 +2.587202000E3,4.558719065E1 +2.587455000E3,4.973387236E1 +2.587702000E3,5.190737686E1 +2.587964000E3,4.955516560E1 +2.588211000E3,5.039526507E1 +2.588461000E3,3.897042435E1 +2.588748000E3,2.919124678E1 +2.589063000E3,3.061867322E1 +2.589398000E3,4.010104895E1 +2.589690000E3,3.640442215E1 +2.589998000E3,4.479952304E1 +2.590261000E3,4.757967128E1 +2.590558000E3,4.812333533E1 +2.590802000E3,4.603482331E1 +2.591083000E3,2.960043464E1 +2.591326000E3,3.684354753E1 +2.591591000E3,4.359182452E1 +2.591849000E3,4.788602237E1 +2.592228000E3,4.468031543E1 +2.592527000E3,3.894688899E1 +2.592778000E3,2.800490026E1 +2.593035000E3,4.310888325E1 +2.593333000E3,4.628339380E1 +2.593602000E3,4.440124594E1 +2.593883000E3,4.123163794E1 +2.594160000E3,3.127645239E1 +2.594429000E3,3.071812965E1 +2.594749000E3,4.618618296E1 +2.595070000E3,5.248181749E1 +2.595312000E3,4.786265879E1 +2.595668000E3,3.990233287E1 +2.595973000E3,4.173583037E1 +2.596256000E3,3.709278400E1 +2.596497000E3,3.229385861E1 +2.596813000E3,4.380573021E1 +2.597084000E3,4.783628282E1 +2.597325000E3,5.024593568E1 +2.597578000E3,5.102379549E1 +2.597828000E3,4.760481411E1 +2.598089000E3,3.822780835E1 +2.598387000E3,3.417342767E1 +2.598736000E3,2.863579065E1 +2.598981000E3,2.886228233E1 +2.599228000E3,2.855965247E1 +2.599493000E3,3.083396855E1 +2.599764000E3,3.581659374E1 +2.600032000E3,4.317647632E1 +2.600330000E3,4.853625621E1 +2.600623000E3,5.102467342E1 +2.600867000E3,4.877836926E1 +2.601112000E3,4.705612686E1 +2.601365000E3,4.889085742E1 +2.601612000E3,4.654488136E1 +2.601956000E3,4.055024190E1 +2.602220000E3,3.990851266E1 +2.602547000E3,3.648352551E1 +2.602794000E3,5.324982942E1 +2.603078000E3,5.268965363E1 +2.603338000E3,4.851189142E1 +2.603637000E3,5.135006473E1 +2.603925000E3,4.939301404E1 +2.604238000E3,5.337101389E1 +2.604488000E3,5.022765286E1 +2.604734000E3,5.253186666E1 +2.605064000E3,4.127453431E1 +2.605321000E3,4.114070867E1 +2.605572000E3,4.042282231E1 +2.605820000E3,4.255774466E1 +2.606073000E3,4.746726668E1 +2.606319000E3,4.761848671E1 +2.606565000E3,4.983628061E1 +2.606849000E3,3.046517787E1 +2.607082000E3,3.832211131E1 +2.607339000E3,4.741131966E1 +2.607609000E3,4.453335589E1 +2.607874000E3,3.545592153E1 +2.608197000E3,4.672891376E1 +2.608451000E3,4.755881287E1 +2.608706000E3,4.827652641E1 +2.608952000E3,4.727153141E1 +2.609226000E3,4.731450942E1 +2.609537000E3,3.981385402E1 +2.609784000E3,3.194698732E1 +2.610041000E3,3.314164027E1 +2.610283000E3,2.819786732E1 +2.610546000E3,2.664547785E1 +2.610857000E3,2.913544778E1 +2.611125000E3,3.961651759E1 +2.611432000E3,3.852777426E1 +2.611666000E3,3.205673146E1 +2.611951000E3,4.233182010E1 +2.612229000E3,3.378509898E1 +2.612454000E3,4.071755552E1 +2.612730000E3,5.018278065E1 +2.613050000E3,4.100034395E1 +2.613359000E3,3.892108016E1 +2.613628000E3,5.091321799E1 +2.613871000E3,4.336916838E1 +2.614108000E3,3.960788811E1 +2.614408000E3,3.948227358E1 +2.614722000E3,3.631863435E1 +2.614975000E3,4.057042340E1 +2.615256000E3,4.414132009E1 +2.615486000E3,4.180934435E1 +2.615750000E3,4.153999936E1 +2.615997000E3,3.521796466E1 +2.616260000E3,5.443854687E1 +2.616548000E3,5.408118563E1 +2.616842000E3,4.951275264E1 +2.617090000E3,5.182722031E1 +2.617344000E3,4.327522742E1 +2.617643000E3,5.375122422E1 +2.617975000E3,5.216635190E1 +2.618233000E3,4.126006713E1 +2.618497000E3,4.980260599E1 +2.618804000E3,4.655838197E1 +2.619044000E3,4.977945459E1 +2.619327000E3,4.875559075E1 +2.619562000E3,4.983226039E1 +2.619834000E3,4.741689273E1 +2.620075000E3,4.923498746E1 +2.620352000E3,4.923432072E1 +2.620664000E3,4.040876723E1 +2.620916000E3,3.889825840E1 +2.621142000E3,5.245081579E1 +2.621448000E3,4.684934794E1 +2.621687000E3,4.583906640E1 +2.621992000E3,4.366517623E1 +2.622230000E3,3.373873872E1 +2.622475000E3,3.701694694E1 +2.622750000E3,3.544967426E1 +2.623008000E3,3.363206222E1 +2.623285000E3,4.009589135E1 +2.623562000E3,4.408709562E1 +2.623825000E3,4.800133533E1 +2.624131000E3,4.855432282E1 +2.624414000E3,4.808187444E1 +2.624671000E3,5.252566194E1 +2.624932000E3,4.890333861E1 +2.625183000E3,4.370428781E1 +2.625430000E3,3.668118979E1 +2.625747000E3,4.353955331E1 +2.626003000E3,4.224026412E1 +2.626267000E3,4.311785789E1 +2.626514000E3,3.517806855E1 +2.626763000E3,3.981966751E1 +2.627025000E3,3.444602265E1 +2.627334000E3,3.341390757E1 +2.627660000E3,3.926570124E1 +2.627920000E3,4.341089288E1 +2.628216000E3,4.081134870E1 +2.628467000E3,3.912400300E1 +2.628730000E3,3.657553946E1 +2.629000000E3,3.072838888E1 +2.629284000E3,2.929703023E1 +2.629549000E3,3.378014550E1 +2.629844000E3,4.760306323E1 +2.630080000E3,4.024322042E1 +2.630373000E3,3.235913140E1 +2.630611000E3,3.920509877E1 +2.630919000E3,5.103841717E1 +2.631222000E3,5.813980805E1 +2.631514000E3,5.190256812E1 +2.631753000E3,4.653294376E1 +2.632054000E3,4.782140153E1 +2.632295000E3,4.977458693E1 +2.632592000E3,5.371197571E1 +2.632828000E3,5.056512655E1 +2.633140000E3,5.325824914E1 +2.633383000E3,4.973751947E1 +2.633632000E3,4.853342473E1 +2.633950000E3,3.905011010E1 +2.634254000E3,3.751700759E1 +2.634549000E3,5.292771607E1 +2.634786000E3,5.557450981E1 +2.635082000E3,4.974692283E1 +2.635319000E3,5.393938197E1 +2.635611000E3,4.675981835E1 +2.635848000E3,4.299614910E1 +2.636145000E3,3.756646750E1 +2.636395000E3,3.824353200E1 +2.636648000E3,3.045317917E1 +2.636942000E3,3.257931849E1 +2.637299000E3,3.010616025E1 +2.637599000E3,4.995329379E1 +2.637834000E3,4.824584689E1 +2.638071000E3,5.059212149E1 +2.638363000E3,5.330633429E1 +2.638612000E3,5.343612136E1 +2.638897000E3,4.755550111E1 +2.639122000E3,4.119881812E1 +2.639362000E3,3.902726568E1 +2.639659000E3,4.451944661E1 +2.639896000E3,4.587471035E1 +2.640164000E3,4.115502802E1 +2.640409000E3,4.505311495E1 +2.640656000E3,4.913968689E1 +2.640951000E3,5.110923180E1 +2.641208000E3,4.281604120E1 +2.641505000E3,4.825854961E1 +2.641748000E3,4.861588211E1 +2.642059000E3,4.450542116E1 +2.642304000E3,4.274821036E1 +2.642556000E3,3.503446158E1 +2.642862000E3,4.080900103E1 +2.643164000E3,4.152079562E1 +2.643527000E3,3.935881933E1 +2.643833000E3,3.760570593E1 +2.644082000E3,3.959144469E1 +2.644327000E3,4.007918652E1 +2.644573000E3,4.288120719E1 +2.644814000E3,4.793099478E1 +2.645114000E3,4.424069452E1 +2.645391000E3,4.078427844E1 +2.645635000E3,3.902795236E1 +2.645871000E3,4.393773718E1 +2.646111000E3,4.085627764E1 +2.646355000E3,4.393316509E1 +2.646690000E3,4.428892908E1 +2.646958000E3,4.601464396E1 +2.647235000E3,4.300358696E1 +2.647474000E3,4.083829680E1 +2.647758000E3,5.406220971E1 +2.648003000E3,4.253716581E1 +2.648273000E3,4.506680000E1 +2.648514000E3,3.500046728E1 +2.648758000E3,3.537281462E1 +2.649004000E3,5.013819891E1 +2.649251000E3,5.388943830E1 +2.649556000E3,5.656370208E1 +2.649891000E3,5.696480404E1 +2.650216000E3,4.675400561E1 +2.650515000E3,4.179549274E1 +2.650777000E3,4.536624285E1 +2.651084000E3,4.297370528E1 +2.651336000E3,4.376785410E1 +2.651635000E3,3.354560746E1 +2.651881000E3,2.537939319E1 +2.652180000E3,3.168783420E1 +2.652481000E3,4.898553010E1 +2.652737000E3,5.438993966E1 +2.652992000E3,4.963834041E1 +2.653252000E3,4.227369117E1 +2.653502000E3,4.301436765E1 +2.653812000E3,3.649724292E1 +2.654061000E3,4.086211966E1 +2.654320000E3,3.223281741E1 +2.654605000E3,2.807672508E1 +2.654836000E3,2.764825285E1 +2.655100000E3,4.598866982E1 +2.655350000E3,4.383741939E1 +2.655590000E3,4.883555528E1 +2.655837000E3,4.815765811E1 +2.656131000E3,5.047261312E1 +2.656369000E3,5.124829846E1 +2.656626000E3,3.956134092E1 +2.656925000E3,3.503286763E1 +2.657200000E3,3.224209198E1 +2.657447000E3,4.294806319E1 +2.657761000E3,4.898454413E1 +2.658011000E3,5.320780356E1 +2.658286000E3,5.345186604E1 +2.658542000E3,4.849291145E1 +2.658789000E3,5.098648363E1 +2.659034000E3,4.892931203E1 +2.659289000E3,4.580698225E1 +2.659530000E3,3.709695762E1 +2.659834000E3,3.457925551E1 +2.660081000E3,3.855219813E1 +2.660383000E3,3.845534481E1 +2.660628000E3,4.619372518E1 +2.660921000E3,4.848307744E1 +2.661167000E3,4.790880967E1 +2.661464000E3,4.667520128E1 +2.661710000E3,4.098851532E1 +2.662006000E3,4.035468673E1 +2.662245000E3,3.753010710E1 +2.662592000E3,4.792080660E1 +2.662862000E3,4.709835917E1 +2.663123000E3,3.501409506E1 +2.663374000E3,3.240664296E1 +2.663631000E3,4.326696615E1 +2.663874000E3,4.411177933E1 +2.664133000E3,3.936378145E1 +2.664382000E3,3.443614227E1 +2.664648000E3,3.761654306E1 +2.664944000E3,5.164457484E1 +2.665198000E3,2.810669920E1 +2.665512000E3,2.931307063E1 +2.665876000E3,3.108643425E1 +2.666131000E3,3.278101889E1 +2.666439000E3,4.277860150E1 +2.666693000E3,4.213131936E1 +2.667002000E3,3.935849781E1 +2.667259000E3,4.137879880E1 +2.667575000E3,3.790565018E1 +2.667827000E3,3.845274836E1 +2.668153000E3,3.676763670E1 +2.668452000E3,3.751975183E1 +2.668696000E3,3.224848897E1 +2.669023000E3,3.611134142E1 +2.669316000E3,4.467495655E1 +2.669607000E3,4.735906080E1 +2.669885000E3,5.159453510E1 +2.670167000E3,5.321308782E1 +2.670485000E3,5.282242631E1 +2.670747000E3,5.127719277E1 +2.670997000E3,4.902251972E1 +2.671243000E3,4.450532678E1 +2.671540000E3,3.864078148E1 +2.671788000E3,3.720620343E1 +2.672044000E3,4.496142790E1 +2.672357000E3,4.705640535E1 +2.672617000E3,3.890316941E1 +2.672864000E3,4.027639889E1 +2.673159000E3,4.202335245E1 +2.673421000E3,4.285452583E1 +2.673720000E3,3.626679930E1 +2.673964000E3,4.670395357E1 +2.674210000E3,4.915586670E1 +2.674514000E3,5.353785994E1 +2.674811000E3,5.414016767E1 +2.675048000E3,5.591079353E1 +2.675364000E3,3.844031623E1 +2.675661000E3,3.124520008E1 +2.675946000E3,3.566755596E1 +2.676189000E3,3.490423263E1 +2.676498000E3,5.070292882E1 +2.676799000E3,5.356134163E1 +2.677047000E3,5.161634227E1 +2.677305000E3,5.185439004E1 +2.677581000E3,5.315585532E1 +2.677832000E3,4.418578879E1 +2.678087000E3,3.972693415E1 +2.678335000E3,4.338465258E1 +2.678650000E3,5.168404535E1 +2.678934000E3,4.984483773E1 +2.679249000E3,4.977401184E1 +2.679507000E3,5.044345616E1 +2.679823000E3,4.232585634E1 +2.680128000E3,3.026551109E1 +2.680400000E3,3.009656886E1 +2.680660000E3,4.894119824E1 +2.680913000E3,4.712312643E1 +2.681208000E3,4.239602863E1 +2.681477000E3,4.875338950E1 +2.681768000E3,4.887945421E1 +2.682128000E3,4.379352407E1 +2.682394000E3,4.073494394E1 +2.682637000E3,3.685872977E1 +2.682895000E3,2.883047793E1 +2.683163000E3,3.769147996E1 +2.683455000E3,3.713975885E1 +2.683749000E3,4.855681627E1 +2.683994000E3,4.936430656E1 +2.684290000E3,5.303947120E1 +2.684540000E3,5.031092673E1 +2.684833000E3,4.783130186E1 +2.685073000E3,4.898734587E1 +2.685348000E3,4.686166956E1 +2.685598000E3,4.244245178E1 +2.685917000E3,3.872119900E1 +2.686161000E3,4.891396583E1 +2.686434000E3,4.491629365E1 +2.686687000E3,3.588391777E1 +2.686952000E3,3.156965948E1 +2.687206000E3,3.184725563E1 +2.687480000E3,3.153561496E1 +2.687733000E3,3.669659228E1 +2.688049000E3,3.507922771E1 +2.688340000E3,3.251056517E1 +2.688645000E3,4.079174670E1 +2.688915000E3,4.837277005E1 +2.689163000E3,4.669136560E1 +2.689426000E3,3.659115086E1 +2.689751000E3,4.814125321E1 +2.689994000E3,4.721335081E1 +2.690235000E3,5.119773767E1 +2.690471000E3,4.584232122E1 +2.690738000E3,4.687969307E1 +2.691006000E3,4.116197132E1 +2.691312000E3,2.850019915E1 +2.691659000E3,3.175399572E1 +2.691948000E3,3.215115185E1 +2.692197000E3,2.655209633E1 +2.692466000E3,3.136629444E1 +2.692727000E3,2.928762690E1 +2.692976000E3,2.688909217E1 +2.693281000E3,3.350197248E1 +2.693518000E3,3.760267236E1 +2.693776000E3,3.194141055E1 +2.694032000E3,3.113878807E1 +2.694299000E3,2.830606211E1 +2.694602000E3,2.632227285E1 +2.694941000E3,2.736240000E1 +2.695184000E3,3.956118458E1 +2.695488000E3,4.069974415E1 +2.695732000E3,4.498590768E1 +2.696030000E3,3.370199172E1 +2.696300000E3,3.284857688E1 +2.696535000E3,2.919082343E1 +2.696815000E3,3.146626789E1 +2.697056000E3,2.968971947E1 +2.697354000E3,4.116455896E1 +2.697640000E3,5.055341773E1 +2.697888000E3,5.163434474E1 +2.698155000E3,4.792936353E1 +2.698456000E3,4.111753823E1 +2.698732000E3,4.594070701E1 +2.699031000E3,3.204472070E1 +2.699273000E3,2.836668859E1 +2.699578000E3,2.624009297E1 +2.699855000E3,2.719538340E1 +2.700110000E3,2.868563476E1 +2.700399000E3,2.757039916E1 +2.700662000E3,2.546630310E1 +2.700960000E3,2.981844134E1 +2.701310000E3,3.063471239E1 +2.701629000E3,4.014173680E1 +2.701894000E3,3.281157953E1 +2.702206000E3,4.268438101E1 +2.702448000E3,4.272045970E1 +2.702710000E3,4.782744516E1 +2.702984000E3,4.067538265E1 +2.703255000E3,3.821763448E1 +2.703566000E3,3.373237040E1 +2.703865000E3,2.762261654E1 +2.704108000E3,3.058182972E1 +2.704366000E3,4.157303269E1 +2.704695000E3,4.128988216E1 +2.705002000E3,3.725674585E1 +2.705260000E3,3.318881716E1 +2.705544000E3,3.512644750E1 +2.705774000E3,3.012622541E1 +2.706039000E3,3.307868989E1 +2.706297000E3,3.089854998E1 +2.706599000E3,2.870455364E1 +2.706901000E3,2.573473536E1 +2.707155000E3,2.708285982E1 +2.707419000E3,2.641018696E1 +2.707644000E3,2.532685142E1 +2.707945000E3,2.741320006E1 +2.708188000E3,2.764718970E1 +2.708460000E3,3.745935532E1 +2.708711000E3,4.292241509E1 +2.708955000E3,4.431523077E1 +2.709266000E3,3.812245251E1 +2.709534000E3,3.199637282E1 +2.709802000E3,3.030937111E1 +2.710049000E3,3.172341474E1 +2.710303000E3,4.706685853E1 +2.710610000E3,4.372593931E1 +2.710859000E3,4.298246415E1 +2.711196000E3,4.313732995E1 +2.711485000E3,3.646858634E1 +2.711745000E3,3.547356546E1 +2.712003000E3,4.802507202E1 +2.712259000E3,4.666185634E1 +2.712527000E3,4.298723738E1 +2.712813000E3,3.203029787E1 +2.713082000E3,2.721140687E1 +2.713344000E3,3.967881707E1 +2.713594000E3,5.017429445E1 +2.713859000E3,4.690730331E1 +2.714106000E3,4.892140969E1 +2.714475000E3,4.312346900E1 +2.714730000E3,4.926615820E1 +2.714984000E3,4.690558758E1 +2.715298000E3,3.116292546E1 +2.715563000E3,2.731472603E1 +2.715855000E3,3.029992609E1 +2.716160000E3,3.149201904E1 +2.716442000E3,2.826058660E1 +2.716703000E3,2.713282366E1 +2.716957000E3,3.659207256E1 +2.717253000E3,3.982143620E1 +2.717592000E3,4.316888996E1 +2.717851000E3,4.348787554E1 +2.718149000E3,4.336902207E1 +2.718464000E3,4.494305168E1 +2.718765000E3,4.280996114E1 +2.719042000E3,4.083199069E1 +2.719277000E3,3.924180447E1 +2.719573000E3,2.985025677E1 +2.719800000E3,2.924980764E1 +2.720042000E3,2.589394072E1 +2.720346000E3,2.996884267E1 +2.720607000E3,2.951796470E1 +2.720882000E3,2.762273017E1 +2.721181000E3,4.946261833E1 +2.721422000E3,4.848220411E1 +2.721736000E3,4.816357380E1 +2.722001000E3,5.238238407E1 +2.722305000E3,5.586118797E1 +2.722602000E3,5.474108905E1 +2.722856000E3,5.089156984E1 +2.723105000E3,4.900978141E1 +2.723369000E3,5.541376880E1 +2.723666000E3,4.827427134E1 +2.723997000E3,4.802338633E1 +2.724296000E3,3.537215093E1 +2.724548000E3,3.822637167E1 +2.724844000E3,3.388327957E1 +2.725086000E3,3.756611639E1 +2.725338000E3,4.489615211E1 +2.725635000E3,5.048833137E1 +2.725871000E3,4.298428385E1 +2.726174000E3,3.303114009E1 +2.726475000E3,4.527811220E1 +2.726764000E3,4.815487328E1 +2.727017000E3,4.761823346E1 +2.727328000E3,4.180028821E1 +2.727607000E3,4.512936944E1 +2.727849000E3,4.337880786E1 +2.728101000E3,4.031817829E1 +2.728401000E3,3.509684782E1 +2.728650000E3,4.495565250E1 +2.728895000E3,4.157595660E1 +2.729138000E3,5.008202715E1 +2.729381000E3,5.308960545E1 +2.729622000E3,4.943413955E1 +2.729917000E3,4.820467383E1 +2.730234000E3,5.168344618E1 +2.730544000E3,5.128425900E1 +2.730837000E3,5.242528085E1 +2.731075000E3,5.125548047E1 +2.731382000E3,5.027678189E1 +2.731625000E3,4.595108129E1 +2.731917000E3,5.425640288E1 +2.732229000E3,5.493458667E1 +2.732522000E3,5.383738769E1 +2.732781000E3,4.577468908E1 +2.733036000E3,4.877165484E1 +2.733337000E3,5.155317163E1 +2.733582000E3,4.868465804E1 +2.733904000E3,5.094377769E1 +2.734158000E3,4.778052408E1 +2.734485000E3,4.980696312E1 +2.734788000E3,5.229980528E1 +2.735043000E3,4.487473927E1 +2.735323000E3,5.405477376E1 +2.735550000E3,5.095910777E1 +2.735795000E3,4.081340338E1 +2.736110000E3,3.942379743E1 +2.736352000E3,4.377765131E1 +2.736599000E3,4.311237352E1 +2.736822000E3,4.659947655E1 +2.737071000E3,4.430846393E1 +2.737313000E3,4.579154087E1 +2.737577000E3,4.628223866E1 +2.737831000E3,3.937286623E1 +2.738094000E3,3.852847368E1 +2.738336000E3,3.907921933E1 +2.738583000E3,5.112703685E1 +2.738825000E3,4.827754167E1 +2.739100000E3,4.022366081E1 +2.739352000E3,3.342841986E1 +2.739649000E3,3.354947585E1 +2.740003000E3,2.967395260E1 +2.740259000E3,4.724158021E1 +2.740515000E3,4.406232704E1 +2.740781000E3,4.128290785E1 +2.741030000E3,3.766271195E1 +2.741274000E3,3.234308905E1 +2.741542000E3,5.345026714E1 +2.741790000E3,5.189834860E1 +2.742037000E3,4.310520052E1 +2.742373000E3,3.005340200E1 +2.742661000E3,3.957498865E1 +2.742905000E3,4.298992085E1 +2.743235000E3,3.914359224E1 +2.743487000E3,4.665969106E1 +2.743742000E3,4.569837618E1 +2.743989000E3,4.037243126E1 +2.744288000E3,4.393151618E1 +2.744525000E3,4.191552922E1 +2.744830000E3,3.855450094E1 +2.745068000E3,3.137426682E1 +2.745312000E3,3.988970586E1 +2.745595000E3,4.261856210E1 +2.745912000E3,4.545535941E1 +2.746178000E3,3.982007681E1 +2.746515000E3,3.873990925E1 +2.746799000E3,4.024486228E1 +2.747097000E3,3.778822068E1 +2.747346000E3,3.349647091E1 +2.747587000E3,3.949530039E1 +2.747884000E3,4.424971453E1 +2.748182000E3,4.109440717E1 +2.748426000E3,4.429824127E1 +2.748724000E3,3.941870140E1 +2.749014000E3,3.719766140E1 +2.749309000E3,3.407061301E1 +2.749659000E3,3.362708714E1 +2.749929000E3,4.111324363E1 +2.750185000E3,4.275268079E1 +2.750445000E3,5.624172952E1 +2.750726000E3,4.374037489E1 +2.750957000E3,4.189644016E1 +2.751207000E3,3.621210842E1 +2.751519000E3,4.177841495E1 +2.751770000E3,4.048458953E1 +2.752052000E3,3.923884976E1 +2.752303000E3,3.426258793E1 +2.752575000E3,3.252443323E1 +2.752926000E3,3.211416673E1 +2.753222000E3,3.245023971E1 +2.753483000E3,3.266068265E1 +2.753758000E3,4.004662592E1 +2.754054000E3,4.872983792E1 +2.754320000E3,5.041613029E1 +2.754567000E3,4.540589836E1 +2.754814000E3,3.042430240E1 +2.755080000E3,3.072459076E1 +2.755376000E3,3.998104284E1 +2.755642000E3,4.049850263E1 +2.755970000E3,4.294486763E1 +2.756315000E3,4.067196783E1 +2.756573000E3,4.772031632E1 +2.756825000E3,4.988707098E1 +2.757139000E3,4.555538995E1 +2.757388000E3,4.252022698E1 +2.757651000E3,3.810962452E1 +2.757917000E3,3.494795311E1 +2.758159000E3,3.247098224E1 +2.758413000E3,3.588027190E1 +2.758665000E3,3.200494843E1 +2.758920000E3,4.772506231E1 +2.759171000E3,3.775844318E1 +2.759507000E3,3.920116655E1 +2.759772000E3,4.528245497E1 +2.760086000E3,4.240466142E1 +2.760349000E3,4.544544837E1 +2.760652000E3,4.039389797E1 +2.760923000E3,3.896680017E1 +2.761194000E3,4.381534416E1 +2.761436000E3,4.424202471E1 +2.761681000E3,4.737958135E1 +2.761960000E3,4.213672401E1 +2.762194000E3,4.516117441E1 +2.762462000E3,4.279973284E1 +2.762806000E3,3.859577230E1 +2.763061000E3,4.880977241E1 +2.763403000E3,4.365184399E1 +2.763660000E3,3.848143477E1 +2.763932000E3,4.787104427E1 +2.764214000E3,3.823665924E1 +2.764451000E3,3.049392521E1 +2.764732000E3,3.086844430E1 +2.764975000E3,2.587396098E1 +2.765284000E3,3.362049288E1 +2.765536000E3,3.353664382E1 +2.765825000E3,5.140360254E1 +2.766193000E3,5.105178275E1 +2.766449000E3,5.027787452E1 +2.766756000E3,4.961194015E1 +2.766992000E3,4.473604482E1 +2.767290000E3,5.567849424E1 +2.767540000E3,5.366739238E1 +2.767788000E3,5.268444481E1 +2.768092000E3,4.378358357E1 +2.768389000E3,4.285786187E1 +2.768638000E3,3.838737205E1 +2.768928000E3,4.053738598E1 +2.769250000E3,3.914310468E1 +2.769517000E3,3.950994015E1 +2.769781000E3,4.085678781E1 +2.770095000E3,3.706118568E1 +2.770362000E3,3.878826243E1 +2.770640000E3,4.509160576E1 +2.770877000E3,4.395611401E1 +2.771129000E3,3.894826552E1 +2.771368000E3,3.783168139E1 +2.771620000E3,3.074559821E1 +2.771881000E3,4.191911052E1 +2.772136000E3,4.492008577E1 +2.772447000E3,3.666714779E1 +2.772710000E3,4.135207765E1 +2.772994000E3,4.645886813E1 +2.773238000E3,5.078995440E1 +2.773478000E3,5.706152467E1 +2.773725000E3,5.135582573E1 +2.773990000E3,4.900548267E1 +2.774266000E3,5.275962483E1 +2.774567000E3,3.947101760E1 +2.774806000E3,4.078518654E1 +2.775113000E3,4.929998433E1 +2.775417000E3,4.396253608E1 +2.775784000E3,4.382194135E1 +2.776077000E3,4.131860223E1 +2.776341000E3,4.321133953E1 +2.776596000E3,3.942571045E1 +2.776881000E3,5.035254190E1 +2.777176000E3,5.596334670E1 +2.777432000E3,6.003222989E1 +2.777730000E3,5.139953750E1 +2.778036000E3,5.596001036E1 +2.778330000E3,5.632045587E1 +2.778567000E3,5.352711698E1 +2.778873000E3,5.160150080E1 +2.779243000E3,5.407354895E1 +2.779513000E3,5.151192380E1 +2.779810000E3,5.479493680E1 +2.780084000E3,5.006197117E1 +2.780351000E3,5.012247277E1 +2.780644000E3,4.598086802E1 +2.780884000E3,3.959492635E1 +2.781142000E3,3.571624227E1 +2.781421000E3,4.082207018E1 +2.781720000E3,5.162800696E1 +2.781984000E3,5.211692198E1 +2.782250000E3,5.017743125E1 +2.782617000E3,4.685740156E1 +2.782916000E3,4.348825959E1 +2.783213000E3,3.825858224E1 +2.783454000E3,4.923981343E1 +2.783750000E3,5.319160353E1 +2.783992000E3,4.967899375E1 +2.784288000E3,3.952802481E1 +2.784535000E3,3.328379343E1 +2.784779000E3,3.014350405E1 +2.785020000E3,3.405755755E1 +2.785313000E3,4.653255974E1 +2.785639000E3,4.571255084E1 +2.785896000E3,4.212654376E1 +2.786166000E3,4.635178938E1 +2.786421000E3,4.614547408E1 +2.786716000E3,4.279815144E1 +2.787018000E3,3.739201392E1 +2.787261000E3,4.297599275E1 +2.787569000E3,5.279236826E1 +2.787869000E3,4.385267374E1 +2.788181000E3,3.538660905E1 +2.788488000E3,4.283741498E1 +2.788738000E3,3.898018884E1 +2.789079000E3,4.417569536E1 +2.789327000E3,3.821417555E1 +2.789586000E3,4.124587088E1 +2.789850000E3,4.583617377E1 +2.790116000E3,4.758354441E1 +2.790413000E3,4.386951397E1 +2.790662000E3,4.527431896E1 +2.790956000E3,4.454979637E1 +2.791207000E3,4.019280914E1 +2.791465000E3,4.549375778E1 +2.791714000E3,4.076569420E1 +2.791963000E3,3.807465350E1 +2.792293000E3,5.201775254E1 +2.792550000E3,4.217772267E1 +2.792797000E3,5.472035384E1 +2.793107000E3,5.403984906E1 +2.793357000E3,5.591746790E1 +2.793622000E3,5.564159884E1 +2.793875000E3,5.646584479E1 +2.794118000E3,5.185594958E1 +2.794377000E3,4.895735059E1 +2.794636000E3,5.654557288E1 +2.794943000E3,5.012866956E1 +2.795254000E3,4.757016947E1 +2.795528000E3,5.211434220E1 +2.795790000E3,4.452402763E1 +2.796058000E3,4.290214665E1 +2.796307000E3,3.465820610E1 +2.796556000E3,4.339944359E1 +2.796852000E3,4.313164949E1 +2.797091000E3,5.438037991E1 +2.797389000E3,5.514175593E1 +2.797635000E3,4.928848190E1 +2.797924000E3,4.659784940E1 +2.798220000E3,4.998887096E1 +2.798537000E3,4.486399829E1 +2.798842000E3,4.885866840E1 +2.799091000E3,4.635335968E1 +2.799347000E3,4.504358299E1 +2.799594000E3,3.958005741E1 +2.799833000E3,4.827229253E1 +2.800082000E3,4.830536262E1 +2.800388000E3,4.659260793E1 +2.800673000E3,4.111758509E1 +2.800972000E3,4.464305855E1 +2.801233000E3,4.497276151E1 +2.801524000E3,3.374775892E1 +2.801884000E3,3.426238632E1 +2.802202000E3,3.521995684E1 +2.802451000E3,3.181302785E1 +2.802708000E3,2.794884084E1 +2.803019000E3,3.320140571E1 +2.803325000E3,3.478175393E1 +2.803626000E3,3.529465039E1 +2.803932000E3,3.962950189E1 +2.804222000E3,5.725685057E1 +2.804486000E3,5.740119524E1 +2.804784000E3,5.069347451E1 +2.805056000E3,5.047632669E1 +2.805376000E3,5.207930289E1 +2.805626000E3,5.264810014E1 +2.805887000E3,5.288954519E1 +2.806177000E3,4.457356662E1 +2.806431000E3,3.885566564E1 +2.806679000E3,3.768676842E1 +2.806944000E3,3.953483275E1 +2.807192000E3,4.348722722E1 +2.807514000E3,4.091620627E1 +2.807832000E3,4.192587435E1 +2.808086000E3,4.434501723E1 +2.808380000E3,4.393917252E1 +2.808686000E3,4.250763593E1 +2.809001000E3,4.146719312E1 +2.809249000E3,4.084508562E1 +2.809517000E3,4.466153637E1 +2.809817000E3,4.002274614E1 +2.810111000E3,4.310032831E1 +2.810375000E3,4.901386280E1 +2.810661000E3,4.607368963E1 +2.810927000E3,4.387647276E1 +2.811225000E3,5.143943484E1 +2.811469000E3,5.045193234E1 +2.811861000E3,4.363012565E1 +2.812115000E3,4.450854658E1 +2.812371000E3,4.453857946E1 +2.812631000E3,4.628101753E1 +2.812921000E3,4.634691523E1 +2.813212000E3,4.654803531E1 +2.813510000E3,4.718980060E1 +2.813758000E3,4.430765323E1 +2.814051000E3,4.322664022E1 +2.814349000E3,4.450224091E1 +2.814582000E3,4.170367724E1 +2.814868000E3,3.985315953E1 +2.815113000E3,5.280042862E1 +2.815400000E3,4.119993511E1 +2.815662000E3,4.251502783E1 +2.815937000E3,4.221594106E1 +2.816186000E3,4.475181393E1 +2.816425000E3,4.757705666E1 +2.816666000E3,4.971185267E1 +2.816968000E3,4.862141287E1 +2.817211000E3,4.713523003E1 +2.817492000E3,4.541478066E1 +2.817737000E3,4.363493262E1 +2.817996000E3,4.428814895E1 +2.818246000E3,4.395099122E1 +2.818516000E3,4.781334664E1 +2.818773000E3,4.439472962E1 +2.819027000E3,4.768107540E1 +2.819278000E3,4.535748265E1 +2.819523000E3,5.061196572E1 +2.819779000E3,4.816069594E1 +2.820044000E3,4.715573746E1 +2.820374000E3,4.919198579E1 +2.820635000E3,5.486134785E1 +2.820897000E3,4.845922458E1 +2.821173000E3,4.486224636E1 +2.821520000E3,4.543631827E1 +2.821781000E3,4.823449020E1 +2.822049000E3,4.622456265E1 +2.822354000E3,3.467019045E1 +2.822632000E3,3.820707315E1 +2.822892000E3,3.870865044E1 +2.823175000E3,3.526203974E1 +2.823424000E3,3.398332746E1 +2.823673000E3,4.060940798E1 +2.823924000E3,4.531267955E1 +2.824156000E3,4.823172894E1 +2.824426000E3,5.381643572E1 +2.824772000E3,5.219878503E1 +2.825053000E3,4.888255160E1 +2.825277000E3,4.023650802E1 +2.825526000E3,3.467455539E1 +2.825785000E3,3.818404386E1 +2.826078000E3,4.122702652E1 +2.826315000E3,3.713088668E1 +2.826619000E3,4.891468535E1 +2.826912000E3,5.266971981E1 +2.827148000E3,4.991025067E1 +2.827457000E3,5.435242869E1 +2.827718000E3,5.378448717E1 +2.828053000E3,5.171570017E1 +2.828327000E3,5.600593919E1 +2.828581000E3,5.175339102E1 +2.828821000E3,4.567582373E1 +2.829101000E3,3.417267221E1 +2.829337000E3,3.532670702E1 +2.829576000E3,4.323212593E1 +2.829823000E3,3.952189104E1 +2.830096000E3,4.372473758E1 +2.830363000E3,4.288959864E1 +2.830609000E3,3.903893871E1 +2.830954000E3,3.847274859E1 +2.831281000E3,4.911689413E1 +2.831539000E3,5.342672798E1 +2.831798000E3,5.558955965E1 +2.832091000E3,5.519004987E1 +2.832341000E3,5.877942264E1 +2.832589000E3,4.602825434E1 +2.832861000E3,3.380054471E1 +2.833107000E3,3.583644563E1 +2.833403000E3,4.160983164E1 +2.833653000E3,3.903662215E1 +2.833958000E3,3.879412363E1 +2.834222000E3,4.121083607E1 +2.834460000E3,4.235130104E1 +2.834723000E3,5.615135633E1 +2.834993000E3,5.355273371E1 +2.835271000E3,4.896976792E1 +2.835535000E3,5.132324538E1 +2.835792000E3,5.529277110E1 +2.836041000E3,5.163674064E1 +2.836366000E3,4.657927993E1 +2.836613000E3,4.238907241E1 +2.836875000E3,5.376683406E1 +2.837143000E3,5.052269952E1 +2.837398000E3,5.018740192E1 +2.837697000E3,4.680907883E1 +2.837961000E3,4.427452663E1 +2.838227000E3,3.300759096E1 +2.838490000E3,3.639504198E1 +2.838784000E3,4.617517315E1 +2.839084000E3,4.692063960E1 +2.839325000E3,4.445415179E1 +2.839620000E3,4.215561710E1 +2.839863000E3,4.433766229E1 +2.840168000E3,4.210423337E1 +2.840460000E3,3.873922427E1 +2.840768000E3,3.717852459E1 +2.841057000E3,3.957811826E1 +2.841313000E3,3.760389186E1 +2.841638000E3,4.310249633E1 +2.841921000E3,4.813095040E1 +2.842192000E3,4.623131926E1 +2.842444000E3,4.648620260E1 +2.842743000E3,4.620801315E1 +2.843027000E3,4.321069748E1 +2.843281000E3,4.205248893E1 +2.843587000E3,2.653536028E1 +2.843863000E3,2.940344619E1 +2.844270000E3,4.715941302E1 +2.844533000E3,4.512147604E1 +2.844793000E3,4.758865475E1 +2.845051000E3,4.853448129E1 +2.845325000E3,4.647479098E1 +2.845569000E3,4.600966189E1 +2.845842000E3,4.549543262E1 +2.846088000E3,4.262631529E1 +2.846347000E3,4.522394390E1 +2.846652000E3,4.657245211E1 +2.846924000E3,4.554651191E1 +2.847231000E3,4.501421864E1 +2.847609000E3,4.413715050E1 +2.847859000E3,3.641102730E1 +2.848158000E3,2.959594862E1 +2.848409000E3,3.229903797E1 +2.848684000E3,3.716282001E1 +2.848948000E3,4.864280315E1 +2.849195000E3,4.698625872E1 +2.849453000E3,4.475077374E1 +2.849725000E3,4.320130236E1 +2.850029000E3,4.052232702E1 +2.850286000E3,4.987213531E1 +2.850622000E3,4.470574790E1 +2.850953000E3,4.746715529E1 +2.851224000E3,4.817674396E1 +2.851475000E3,4.755384271E1 +2.851775000E3,4.606857790E1 +2.852037000E3,4.602549066E1 +2.852280000E3,4.107899882E1 +2.852578000E3,4.602936757E1 +2.852832000E3,4.594357604E1 +2.853123000E3,4.132874601E1 +2.853424000E3,3.891402985E1 +2.853676000E3,3.210431116E1 +2.854034000E3,4.148325967E1 +2.854336000E3,4.539420759E1 +2.854629000E3,3.813311910E1 +2.854857000E3,3.204826654E1 +2.855103000E3,4.042825728E1 +2.855348000E3,3.781799437E1 +2.855635000E3,3.485312778E1 +2.855901000E3,3.176423587E1 +2.856194000E3,3.286644404E1 +2.856446000E3,3.601261840E1 +2.856741000E3,3.056779431E1 +2.856990000E3,2.876904683E1 +2.857247000E3,2.336161379E1 +2.857525000E3,5.319777865E1 +2.857765000E3,4.924210585E1 +2.858030000E3,4.161506516E1 +2.858287000E3,3.471025819E1 +2.858592000E3,2.954431085E1 +2.858878000E3,3.551304021E1 +2.859146000E3,4.056554733E1 +2.859438000E3,4.716772205E1 +2.859749000E3,4.728214145E1 +2.860112000E3,4.333221553E1 +2.860355000E3,3.970290127E1 +2.860627000E3,4.675070996E1 +2.860922000E3,5.292655838E1 +2.861168000E3,5.560528000E1 +2.861448000E3,5.155203362E1 +2.861684000E3,4.854372910E1 +2.861981000E3,5.166225265E1 +2.862226000E3,5.239758268E1 +2.862536000E3,4.880079262E1 +2.862801000E3,5.860724491E1 +2.863049000E3,5.487085904E1 +2.863366000E3,4.477307493E1 +2.863622000E3,4.809216762E1 +2.863923000E3,4.128779228E1 +2.864180000E3,4.039902121E1 +2.864473000E3,3.763315716E1 +2.864758000E3,3.836830031E1 +2.865072000E3,3.562217561E1 +2.865375000E3,4.251016575E1 +2.865631000E3,3.959478231E1 +2.865894000E3,3.906491963E1 +2.866161000E3,3.169567809E1 +2.866409000E3,4.180907280E1 +2.866769000E3,5.009501966E1 +2.867095000E3,4.485052737E1 +2.867377000E3,4.543449817E1 +2.867634000E3,4.558186247E1 +2.867912000E3,3.310648260E1 +2.868160000E3,3.368680580E1 +2.868403000E3,3.259924908E1 +2.868652000E3,3.468868920E1 +2.868945000E3,3.811295096E1 +2.869214000E3,3.680532391E1 +2.869523000E3,4.480088276E1 +2.869800000E3,4.321197878E1 +2.870149000E3,3.870196995E1 +2.870426000E3,4.501549736E1 +2.870686000E3,3.869046251E1 +2.870998000E3,5.116138397E1 +2.871259000E3,4.565952095E1 +2.871545000E3,4.044036430E1 +2.871835000E3,3.776423584E1 +2.872146000E3,4.283314388E1 +2.872428000E3,4.822150076E1 +2.872666000E3,4.609488251E1 +2.872966000E3,4.199842198E1 +2.873258000E3,4.199452970E1 +2.873557000E3,4.094164548E1 +2.873868000E3,3.451929232E1 +2.874146000E3,3.725700957E1 +2.874378000E3,3.820854143E1 +2.874632000E3,3.261818797E1 +2.874949000E3,4.229639001E1 +2.875219000E3,4.314663650E1 +2.875496000E3,4.030472415E1 +2.875772000E3,3.740362597E1 +2.876082000E3,3.770704299E1 +2.876334000E3,4.016521241E1 +2.876600000E3,4.155568881E1 +2.876855000E3,3.864643482E1 +2.877164000E3,3.358142820E1 +2.877430000E3,2.988882280E1 +2.877698000E3,4.233125756E1 +2.877954000E3,4.245249096E1 +2.878273000E3,3.619646633E1 +2.878541000E3,3.199868066E1 +2.878801000E3,4.546979293E1 +2.879062000E3,5.523869784E1 +2.879342000E3,5.605267417E1 +2.879584000E3,5.653411529E1 +2.879928000E3,4.626290707E1 +2.880202000E3,3.540012043E1 +2.880447000E3,3.620700172E1 +2.880691000E3,2.922036878E1 +2.880938000E3,3.659816429E1 +2.881251000E3,4.145147882E1 +2.881527000E3,3.894444603E1 +2.881851000E3,3.741315407E1 +2.882112000E3,4.094962867E1 +2.882373000E3,4.333353585E1 +2.882625000E3,4.557565518E1 +2.882879000E3,4.308396997E1 +2.883145000E3,4.097722416E1 +2.883416000E3,3.927850137E1 +2.883669000E3,3.223716221E1 +2.883941000E3,3.004581442E1 +2.884209000E3,3.765685263E1 +2.884466000E3,3.878810543E1 +2.884718000E3,2.988953340E1 +2.884967000E3,3.346960294E1 +2.885221000E3,3.799647420E1 +2.885537000E3,3.116842616E1 +2.885796000E3,3.671552801E1 +2.886084000E3,4.459898232E1 +2.886404000E3,4.708370738E1 +2.886677000E3,5.036035843E1 +2.886979000E3,4.113513329E1 +2.887251000E3,3.503458684E1 +2.887528000E3,3.462090732E1 +2.887785000E3,4.001717165E1 +2.888037000E3,3.538133603E1 +2.888296000E3,3.662805649E1 +2.888547000E3,4.263542947E1 +2.888820000E3,4.431895872E1 +2.889079000E3,4.300413574E1 +2.889340000E3,4.173317530E1 +2.889582000E3,4.288275032E1 +2.889932000E3,3.944773526E1 +2.890197000E3,3.214266541E1 +2.890503000E3,3.060588708E1 +2.890777000E3,3.296322494E1 +2.891017000E3,3.394251803E1 +2.891320000E3,3.208741950E1 +2.891570000E3,3.441770910E1 +2.891849000E3,3.368561294E1 +2.892087000E3,3.475967611E1 +2.892337000E3,3.740055420E1 +2.892635000E3,3.542355307E1 +2.892981000E3,3.105741683E1 +2.893247000E3,3.245614761E1 +2.893513000E3,4.142391644E1 +2.893779000E3,4.497461971E1 +2.894029000E3,4.653178389E1 +2.894282000E3,4.703576342E1 +2.894540000E3,4.751169602E1 +2.894805000E3,4.201422178E1 +2.895062000E3,4.370261317E1 +2.895310000E3,4.660906406E1 +2.895596000E3,4.633159753E1 +2.895865000E3,4.381116332E1 +2.896155000E3,4.368523912E1 +2.896405000E3,4.747051902E1 +2.896651000E3,4.222577444E1 +2.896905000E3,4.572633660E1 +2.897184000E3,5.203776089E1 +2.897450000E3,5.010843836E1 +2.897744000E3,4.910530865E1 +2.898022000E3,4.664859833E1 +2.898308000E3,3.985336775E1 +2.898564000E3,3.683403533E1 +2.898812000E3,4.284820320E1 +2.899091000E3,4.286036404E1 +2.899396000E3,5.224070654E1 +2.899753000E3,4.568546748E1 +2.900018000E3,5.586433220E1 +2.900278000E3,4.514230837E1 +2.900559000E3,3.853422420E1 +2.900865000E3,3.299777990E1 +2.901139000E3,3.594596453E1 +2.901415000E3,2.896001699E1 +2.901650000E3,2.556794162E1 +2.901937000E3,2.525773120E1 +2.902206000E3,3.138035436E1 +2.902457000E3,3.725731802E1 +2.902816000E3,3.600302530E1 +2.903095000E3,3.476106384E1 +2.903340000E3,3.325569458E1 +2.903600000E3,3.217545002E1 +2.903858000E3,2.994578711E1 +2.904108000E3,3.277965280E1 +2.904372000E3,4.013450695E1 +2.904627000E3,3.103730297E1 +2.904913000E3,4.187502355E1 +2.905174000E3,3.591627686E1 +2.905452000E3,3.067277870E1 +2.905743000E3,2.813597523E1 +2.906004000E3,2.760542404E1 +2.906321000E3,3.327793113E1 +2.906579000E3,4.111963776E1 +2.906835000E3,4.309802180E1 +2.907113000E3,2.749088524E1 +2.907354000E3,2.269523459E1 +2.907657000E3,3.631225289E1 +2.907901000E3,4.146405590E1 +2.908156000E3,3.785670954E1 +2.908403000E3,4.498664409E1 +2.908675000E3,4.174614917E1 +2.908932000E3,4.632262643E1 +2.909189000E3,3.569839459E1 +2.909522000E3,4.635385444E1 +2.909802000E3,4.337190367E1 +2.910035000E3,3.796960383E1 +2.910287000E3,4.151951269E1 +2.910538000E3,4.245940710E1 +2.910795000E3,4.268454470E1 +2.911045000E3,4.280139929E1 +2.911335000E3,3.861780445E1 +2.911584000E3,4.028221299E1 +2.911885000E3,3.934408626E1 +2.912139000E3,3.091195323E1 +2.912386000E3,2.709027446E1 +2.912622000E3,2.721294148E1 +2.912915000E3,3.169063213E1 +2.913196000E3,3.663766462E1 +2.913461000E3,3.582442105E1 +2.913744000E3,2.742218375E1 +2.913990000E3,3.432349666E1 +2.914297000E3,4.586386591E1 +2.914575000E3,4.813383402E1 +2.914888000E3,5.016441505E1 +2.915190000E3,4.132593749E1 +2.915481000E3,3.992883324E1 +2.915827000E3,3.713218942E1 +2.916087000E3,4.862036940E1 +2.916351000E3,4.985137398E1 +2.916622000E3,5.126616609E1 +2.916881000E3,4.180876614E1 +2.917157000E3,4.057128207E1 +2.917418000E3,3.994520906E1 +2.917681000E3,3.719846748E1 +2.917964000E3,4.377214072E1 +2.918264000E3,4.081140664E1 +2.918518000E3,4.149712935E1 +2.918784000E3,3.965801174E1 +2.919127000E3,3.499332266E1 +2.919415000E3,3.454976163E1 +2.919745000E3,3.801205804E1 +2.920003000E3,4.266330834E1 +2.920244000E3,3.704497233E1 +2.920548000E3,3.869800412E1 +2.920840000E3,3.880762608E1 +2.921081000E3,3.967826348E1 +2.921325000E3,4.387098551E1 +2.921573000E3,3.795523909E1 +2.921876000E3,3.884773193E1 +2.922122000E3,3.949919351E1 +2.922481000E3,3.549368996E1 +2.922774000E3,5.176437750E1 +2.923023000E3,4.673969779E1 +2.923306000E3,3.729614967E1 +2.923573000E3,3.557242251E1 +2.923880000E3,5.351861504E1 +2.924155000E3,5.486661937E1 +2.924424000E3,5.693150230E1 +2.924735000E3,4.225245527E1 +2.924988000E3,4.082554353E1 +2.925252000E3,3.807826598E1 +2.925573000E3,3.587807510E1 +2.925935000E3,4.290242494E1 +2.926237000E3,3.960438869E1 +2.926496000E3,3.732088357E1 +2.926751000E3,3.216321546E1 +2.926991000E3,3.001846960E1 +2.927295000E3,3.634949804E1 +2.927531000E3,3.127042454E1 +2.927829000E3,3.158500209E1 +2.928073000E3,2.815993792E1 +2.928370000E3,2.793102526E1 +2.928613000E3,2.468786691E1 +2.928943000E3,2.345175993E1 +2.929256000E3,2.908559709E1 +2.929497000E3,2.580950455E1 +2.929819000E3,2.871707976E1 +2.930114000E3,2.977851279E1 +2.930374000E3,4.220437998E1 +2.930636000E3,3.122152770E1 +2.930945000E3,3.902308439E1 +2.931227000E3,3.648582434E1 +2.931474000E3,4.774090674E1 +2.931717000E3,4.487624905E1 +2.931963000E3,4.620728265E1 +2.932258000E3,4.011602626E1 +2.932585000E3,4.011469989E1 +2.932871000E3,4.531107143E1 +2.933117000E3,4.299757904E1 +2.933366000E3,4.255561828E1 +2.933662000E3,4.180851663E1 +2.933899000E3,3.354142728E1 +2.934139000E3,4.061788576E1 +2.934435000E3,3.190428864E1 +2.934678000E3,3.136545948E1 +2.934975000E3,3.172564299E1 +2.935227000E3,3.538616066E1 +2.935577000E3,3.227761247E1 +2.935826000E3,3.587578035E1 +2.936132000E3,2.830690319E1 +2.936391000E3,2.983281120E1 +2.936636000E3,3.198482114E1 +2.936936000E3,4.529436692E1 +2.937191000E3,3.904726622E1 +2.937498000E3,4.546792713E1 +2.937790000E3,4.178984789E1 +2.938055000E3,3.901507008E1 +2.938332000E3,3.530528642E1 +2.938634000E3,3.766035689E1 +2.939060000E3,5.595745424E1 +2.939318000E3,5.800941557E1 +2.939576000E3,5.061871726E1 +2.939836000E3,6.017617924E1 +2.940124000E3,5.889680612E1 +2.940380000E3,5.553527141E1 +2.940631000E3,4.982924060E1 +2.940889000E3,5.386899946E1 +2.941183000E3,5.511436312E1 +2.941477000E3,5.474658637E1 +2.941736000E3,5.669903896E1 +2.941985000E3,5.352207307E1 +2.942302000E3,5.089540084E1 +2.942556000E3,5.163069551E1 +2.942811000E3,4.946827448E1 +2.943144000E3,4.292332560E1 +2.943386000E3,4.769421745E1 +2.943625000E3,4.741300910E1 +2.943936000E3,4.918473310E1 +2.944182000E3,4.358732286E1 +2.944456000E3,4.338106770E1 +2.944722000E3,5.302068646E1 +2.945006000E3,4.800501219E1 +2.945370000E3,4.445792428E1 +2.945619000E3,3.768400599E1 +2.945867000E3,3.829540629E1 +2.946159000E3,3.766669508E1 +2.946411000E3,4.016839261E1 +2.946712000E3,4.041724233E1 +2.947009000E3,4.012217251E1 +2.947323000E3,3.568820570E1 +2.947568000E3,3.690839296E1 +2.947818000E3,4.813137033E1 +2.948084000E3,5.325274156E1 +2.948341000E3,5.892514859E1 +2.948730000E3,4.314585435E1 +2.948980000E3,4.049194134E1 +2.949257000E3,4.522053034E1 +2.949515000E3,4.263261915E1 +2.949826000E3,5.159034358E1 +2.950126000E3,4.094053529E1 +2.950370000E3,4.144504964E1 +2.950613000E3,4.584689520E1 +2.950933000E3,3.986259871E1 +2.951211000E3,5.835616238E1 +2.951492000E3,4.865922153E1 +2.951773000E3,4.646806952E1 +2.952049000E3,5.501145746E1 +2.952349000E3,5.395560549E1 +2.952606000E3,5.094776028E1 +2.952859000E3,5.987933082E1 +2.953123000E3,5.553863596E1 +2.953365000E3,6.056471643E1 +2.953626000E3,5.705129962E1 +2.953881000E3,5.620457969E1 +2.954143000E3,4.633104773E1 +2.954403000E3,4.542785483E1 +2.954666000E3,4.357363747E1 +2.954925000E3,5.905995366E1 +2.955255000E3,5.325307727E1 +2.955500000E3,6.730464031E1 +2.955795000E3,6.362836082E1 +2.956030000E3,6.057596417E1 +2.956332000E3,6.813918985E1 +2.956573000E3,6.403678903E1 +2.956871000E3,6.230635205E1 +2.957135000E3,6.746671531E1 +2.957401000E3,6.427695804E1 +2.957673000E3,5.206458526E1 +2.957933000E3,5.261265827E1 +2.958182000E3,4.877242183E1 +2.958552000E3,6.627461000E1 +2.958808000E3,6.741673158E1 +2.959062000E3,6.597614354E1 +2.959304000E3,6.540552328E1 +2.959551000E3,6.528289091E1 +2.959864000E3,5.830061674E1 +2.960121000E3,5.985112812E1 +2.960428000E3,6.090568068E1 +2.960720000E3,6.807446854E1 +2.960985000E3,6.930722199E1 +2.961226000E3,6.386100217E1 +2.961579000E3,6.028451745E1 +2.961849000E3,6.477814340E1 +2.962132000E3,6.837046944E1 +2.962373000E3,6.647209363E1 +2.962660000E3,6.694202205E1 +2.962967000E3,6.648756695E1 +2.963231000E3,6.482625001E1 +2.963518000E3,7.095796361E1 +2.963775000E3,6.454417662E1 +2.964062000E3,6.533171518E1 +2.964339000E3,6.471819922E1 +2.964629000E3,5.679367810E1 +2.964962000E3,5.573913208E1 +2.965271000E3,6.251351498E1 +2.965502000E3,6.071427502E1 +2.965745000E3,6.212696498E1 +2.966049000E3,5.601947939E1 +2.966292000E3,5.543203731E1 +2.966544000E3,5.440105204E1 +2.966807000E3,5.169354717E1 +2.967114000E3,5.098574914E1 +2.967354000E3,4.778774527E1 +2.967603000E3,5.527018336E1 +2.967874000E3,5.069142516E1 +2.968220000E3,5.540354927E1 +2.968470000E3,5.388190573E1 +2.968725000E3,5.648678631E1 +2.968994000E3,6.195289166E1 +2.969259000E3,5.924073062E1 +2.969526000E3,5.554902217E1 +2.969797000E3,6.073047002E1 +2.970049000E3,5.750580172E1 +2.970375000E3,6.205206850E1 +2.970685000E3,5.892672487E1 +2.971008000E3,5.603539479E1 +2.971306000E3,5.380141597E1 +2.971609000E3,6.182570937E1 +2.971860000E3,5.755792598E1 +2.972120000E3,7.094637252E1 +2.972374000E3,7.220321333E1 +2.972688000E3,6.074903881E1 +2.972946000E3,5.132390204E1 +2.973203000E3,5.555176793E1 +2.973482000E3,5.082163203E1 +2.973746000E3,6.668022761E1 +2.974024000E3,6.951681150E1 +2.974257000E3,6.170353739E1 +2.974507000E3,6.191784425E1 +2.974845000E3,6.249884739E1 +2.975129000E3,6.139715498E1 +2.975385000E3,5.458109058E1 +2.975684000E3,6.285593412E1 +2.975925000E3,6.801445640E1 +2.976223000E3,6.762358149E1 +2.976454000E3,6.007212586E1 +2.976698000E3,6.176376027E1 +2.976998000E3,5.489351528E1 +2.977244000E3,6.419682450E1 +2.977544000E3,6.335879864E1 +2.977813000E3,6.346249627E1 +2.978071000E3,6.122721977E1 +2.978303000E3,6.269343112E1 +2.978564000E3,5.719207644E1 +2.978818000E3,6.209398004E1 +2.979085000E3,6.570545323E1 +2.979335000E3,6.443300698E1 +2.979582000E3,6.395479352E1 +2.979841000E3,6.285971298E1 +2.980091000E3,6.452411240E1 +2.980337000E3,6.648403811E1 +2.980638000E3,6.146510082E1 +2.980898000E3,6.178604521E1 +2.981191000E3,5.906416732E1 +2.981418000E3,6.139524316E1 +2.981668000E3,6.754933795E1 +2.981958000E3,5.804633278E1 +2.982221000E3,5.544285219E1 +2.982480000E3,5.252390700E1 +2.982741000E3,5.442974682E1 +2.983009000E3,5.886662164E1 +2.983270000E3,6.039421332E1 +2.983532000E3,5.984826425E1 +2.983780000E3,6.038747451E1 +2.984020000E3,5.836799318E1 +2.984266000E3,6.011457774E1 +2.984654000E3,6.086793857E1 +2.984928000E3,6.104684994E1 +2.985246000E3,6.081085188E1 +2.985504000E3,6.338602633E1 +2.985771000E3,6.224702903E1 +2.986040000E3,5.771788346E1 +2.986351000E3,5.832375863E1 +2.986657000E3,6.179808645E1 +2.986893000E3,6.074067698E1 +2.987188000E3,5.763905723E1 +2.987459000E3,5.411975455E1 +2.987698000E3,5.609082395E1 +2.988020000E3,5.838775534E1 +2.988261000E3,5.545934196E1 +2.988564000E3,5.818253650E1 +2.988803000E3,5.693365858E1 +2.989084000E3,5.747877452E1 +2.989394000E3,6.108654481E1 +2.989646000E3,6.109521888E1 +2.989952000E3,5.453216708E1 +2.990235000E3,5.325056065E1 +2.990530000E3,5.226229633E1 +2.990796000E3,5.566734434E1 +2.991153000E3,5.983192138E1 +2.991409000E3,5.902282422E1 +2.991712000E3,6.553978750E1 +2.991962000E3,6.323109208E1 +2.992210000E3,6.430699278E1 +2.992477000E3,6.439502996E1 +2.992769000E3,5.882379749E1 +2.993024000E3,7.076998945E1 +2.993317000E3,6.710088514E1 +2.993554000E3,6.332152683E1 +2.993846000E3,6.013348006E1 +2.994081000E3,6.492156154E1 +2.994361000E3,6.054189638E1 +2.994671000E3,5.878685209E1 +2.994911000E3,6.363988355E1 +2.995218000E3,6.266127576E1 +2.995513000E3,6.231860976E1 +2.995750000E3,6.770663238E1 +2.996056000E3,6.411706706E1 +2.996346000E3,6.607053327E1 +2.996592000E3,6.231837938E1 +2.996884000E3,6.235557028E1 +2.997130000E3,6.626149607E1 +2.997386000E3,6.897456616E1 +2.997721000E3,6.896820400E1 +2.997984000E3,5.708709076E1 +2.998260000E3,5.465136518E1 +2.998532000E3,6.136090841E1 +2.998792000E3,6.427324700E1 +2.999047000E3,5.922924051E1 +2.999308000E3,5.964993479E1 +2.999619000E3,5.937495043E1 +2.999910000E3,6.345321013E1 +3.000196000E3,6.558504608E1 +3.000438000E3,6.566442906E1 +3.000721000E3,6.596782674E1 +3.001048000E3,6.493210478E1 +3.001299000E3,6.778071085E1 +3.001554000E3,5.810398860E1 +3.001834000E3,6.461256831E1 +3.002084000E3,5.637103240E1 +3.002332000E3,6.244497501E1 +3.002633000E3,5.749162406E1 +3.002980000E3,6.268391580E1 +3.003246000E3,6.122193913E1 +3.003572000E3,6.467185898E1 +3.003877000E3,6.239318427E1 +3.004266000E3,6.708558966E1 +3.004573000E3,6.293492178E1 +3.004871000E3,6.169168265E1 +3.005129000E3,5.944912128E1 +3.005404000E3,5.631628075E1 +3.005704000E3,6.080609102E1 +3.005964000E3,6.424565764E1 +3.006250000E3,6.447415860E1 +3.006481000E3,6.606824769E1 +3.006756000E3,6.337387069E1 +3.007004000E3,6.294291386E1 +3.007286000E3,6.430484746E1 +3.007612000E3,6.091848593E1 +3.007867000E3,6.343837854E1 +3.008169000E3,5.978702761E1 +3.008432000E3,5.965865421E1 +3.008675000E3,5.540362761E1 +3.008918000E3,5.443572137E1 +3.009202000E3,6.171389250E1 +3.009446000E3,6.487192568E1 +3.009738000E3,5.958143908E1 +3.009983000E3,6.189834719E1 +3.010232000E3,5.752745917E1 +3.010489000E3,6.339873723E1 +3.010846000E3,6.127984243E1 +3.011144000E3,6.065194767E1 +3.011387000E3,6.253646864E1 +3.011646000E3,6.179753794E1 +3.011925000E3,6.231808205E1 +3.012153000E3,6.101579519E1 +3.012442000E3,5.876502421E1 +3.012737000E3,5.809905793E1 +3.013015000E3,5.695141293E1 +3.013301000E3,5.973139928E1 +3.013577000E3,6.007240820E1 +3.013839000E3,7.136453087E1 +3.014063000E3,7.173892024E1 +3.014315000E3,6.885425335E1 +3.014559000E3,6.110376355E1 +3.014808000E3,6.296723224E1 +3.015075000E3,6.021879294E1 +3.015327000E3,6.012811489E1 +3.015577000E3,6.282613373E1 +3.015850000E3,6.884549735E1 +3.016115000E3,6.913958233E1 +3.016397000E3,6.608409337E1 +3.016648000E3,6.437779633E1 +3.016896000E3,6.412579817E1 +3.017253000E3,6.408373459E1 +3.017500000E3,6.487828946E1 +3.017743000E3,6.281964754E1 +3.018003000E3,6.153697843E1 +3.018258000E3,6.503307442E1 +3.018512000E3,6.508021131E1 +3.018791000E3,5.910017780E1 +3.019028000E3,5.757469918E1 +3.019325000E3,5.762978005E1 +3.019573000E3,5.366611226E1 +3.019824000E3,5.708763529E1 +3.020086000E3,5.488621207E1 +3.020437000E3,5.826722905E1 +3.020695000E3,5.951373108E1 +3.020968000E3,6.130623452E1 +3.021217000E3,6.025771329E1 +3.021490000E3,5.280103891E1 +3.021737000E3,6.123009986E1 +3.022037000E3,6.404958762E1 +3.022328000E3,6.469373641E1 +3.022599000E3,6.283727611E1 +3.022840000E3,6.248869497E1 +3.023123000E3,6.767270030E1 +3.023363000E3,6.436289402E1 +3.023706000E3,6.007121161E1 +3.023992000E3,6.067397941E1 +3.024255000E3,6.005092329E1 +3.024513000E3,6.146229561E1 +3.024803000E3,6.214304530E1 +3.025060000E3,6.107977952E1 +3.025317000E3,6.268440106E1 +3.025560000E3,5.744048190E1 +3.025823000E3,6.080102592E1 +3.026092000E3,6.359394744E1 +3.026384000E3,6.219604097E1 +3.026685000E3,6.296073955E1 +3.026912000E3,6.243574530E1 +3.027190000E3,6.540426031E1 +3.027426000E3,7.038009166E1 +3.027684000E3,7.133800291E1 +3.027943000E3,6.847497315E1 +3.028214000E3,7.049817235E1 +3.028486000E3,6.555713643E1 +3.028748000E3,6.762942526E1 +3.029008000E3,6.780082040E1 +3.029264000E3,6.644646205E1 +3.029533000E3,7.066497540E1 +3.029800000E3,6.700863421E1 +3.030174000E3,6.263767412E1 +3.030459000E3,5.937975562E1 +3.030697000E3,6.189133018E1 +3.030958000E3,6.479748496E1 +3.031218000E3,6.070421224E1 +3.031488000E3,5.567295684E1 +3.031754000E3,6.162939414E1 +3.032026000E3,6.462556380E1 +3.032293000E3,6.300561819E1 +3.032553000E3,6.320528504E1 +3.032852000E3,6.205536878E1 +3.033102000E3,7.179598993E1 +3.033490000E3,6.907149718E1 +3.033750000E3,6.110443799E1 +3.034008000E3,5.743025653E1 +3.034257000E3,5.714646515E1 +3.034505000E3,6.193634179E1 +3.034762000E3,6.511685208E1 +3.035034000E3,6.647840023E1 +3.035277000E3,6.637602928E1 +3.035534000E3,6.208743290E1 +3.035873000E3,6.158502662E1 +3.036127000E3,6.138896352E1 +3.036392000E3,5.988342330E1 +3.036737000E3,5.834272912E1 +3.036998000E3,6.504474047E1 +3.037253000E3,5.801637483E1 +3.037569000E3,6.208073459E1 +3.037831000E3,6.555093843E1 +3.038084000E3,6.686352963E1 +3.038356000E3,6.398821865E1 +3.038638000E3,6.053541888E1 +3.038927000E3,5.509282051E1 +3.039228000E3,6.213274835E1 +3.039473000E3,6.149105368E1 +3.039745000E3,6.097957376E1 +3.040056000E3,6.313145073E1 +3.040300000E3,6.749857058E1 +3.040549000E3,6.031561589E1 +3.040852000E3,5.991948868E1 +3.041110000E3,6.228314687E1 +3.041358000E3,6.281493679E1 +3.041621000E3,6.031124820E1 +3.041926000E3,6.035954468E1 +3.042177000E3,6.230627050E1 +3.042448000E3,5.381586458E1 +3.042741000E3,6.032611045E1 +3.043026000E3,5.796046788E1 +3.043304000E3,6.286261594E1 +3.043605000E3,6.188894569E1 +3.043848000E3,6.196336480E1 +3.044091000E3,6.506902622E1 +3.044345000E3,6.547913264E1 +3.044589000E3,6.701681380E1 +3.044849000E3,6.398074775E1 +3.045095000E3,6.102355933E1 +3.045350000E3,6.546609328E1 +3.045598000E3,6.626677347E1 +3.045845000E3,6.212155235E1 +3.046098000E3,6.475032486E1 +3.046433000E3,6.469401418E1 +3.046698000E3,6.335899573E1 +3.046970000E3,5.799459631E1 +3.047267000E3,5.777430210E1 +3.047527000E3,6.228044606E1 +3.047785000E3,5.521572273E1 +3.048044000E3,5.312506195E1 +3.048316000E3,5.877400717E1 +3.048592000E3,6.239358597E1 +3.048842000E3,6.019315355E1 +3.049164000E3,5.944515023E1 +3.049418000E3,6.571719967E1 +3.049752000E3,5.906077781E1 +3.050005000E3,6.269931225E1 +3.050242000E3,6.329267329E1 +3.050532000E3,6.094692628E1 +3.050797000E3,6.137608503E1 +3.051055000E3,6.019630450E1 +3.051299000E3,5.959056092E1 +3.051551000E3,6.195653625E1 +3.051802000E3,5.997942431E1 +3.052044000E3,6.071988649E1 +3.052348000E3,6.146559433E1 +3.052605000E3,6.320542640E1 +3.052903000E3,6.301314639E1 +3.053133000E3,6.491013087E1 +3.053386000E3,5.374424399E1 +3.053632000E3,5.337930652E1 +3.053925000E3,5.830420592E1 +3.054167000E3,5.827724976E1 +3.054414000E3,5.413373264E1 +3.054713000E3,5.438904566E1 +3.054952000E3,5.478972153E1 +3.055245000E3,6.026125791E1 +3.055545000E3,6.377000784E1 +3.055792000E3,6.273059884E1 +3.056116000E3,6.164463909E1 +3.056426000E3,6.310484015E1 +3.056665000E3,6.191865333E1 +3.056974000E3,6.044005004E1 +3.057225000E3,5.723160495E1 +3.057532000E3,6.482171923E1 +3.057799000E3,6.373654624E1 +3.058097000E3,6.579319958E1 +3.058333000E3,6.717439766E1 +3.058632000E3,6.244987186E1 +3.058874000E3,5.911459441E1 +3.059119000E3,6.246625617E1 +3.059514000E3,6.061929027E1 +3.059786000E3,6.141894857E1 +3.060044000E3,6.531006136E1 +3.060311000E3,6.745420282E1 +3.060564000E3,6.305040539E1 +3.060809000E3,6.250223063E1 +3.061063000E3,5.984183740E1 +3.061365000E3,6.201500936E1 +3.061610000E3,6.171968159E1 +3.061853000E3,5.636652524E1 +3.062137000E3,5.937450988E1 +3.062405000E3,5.424162977E1 +3.062724000E3,5.577353705E1 +3.062968000E3,6.265208868E1 +3.063225000E3,6.754657095E1 +3.063470000E3,6.259832443E1 +3.063731000E3,5.846954403E1 +3.063975000E3,5.735719718E1 +3.064220000E3,5.614657426E1 +3.064460000E3,5.493678071E1 +3.064711000E3,6.175770153E1 +3.064961000E3,6.502893325E1 +3.065266000E3,6.372557142E1 +3.065562000E3,6.165604672E1 +3.065921000E3,6.202265536E1 +3.066181000E3,5.894659424E1 +3.066427000E3,5.516515279E1 +3.066669000E3,5.227763917E1 +3.066911000E3,5.331294555E1 +3.067166000E3,5.535383534E1 +3.067460000E3,5.490405248E1 +3.067721000E3,5.927902794E1 +3.068030000E3,6.001209348E1 +3.068288000E3,5.925707402E1 +3.068553000E3,6.116769528E1 +3.068848000E3,5.907075037E1 +3.069160000E3,5.402384091E1 +3.069467000E3,6.078433547E1 +3.069706000E3,6.064305090E1 +3.069991000E3,6.099922555E1 +3.070247000E3,6.081028216E1 +3.070500000E3,6.857342881E1 +3.070795000E3,6.830085683E1 +3.071035000E3,7.092929468E1 +3.071334000E3,6.670654987E1 +3.071580000E3,6.198358410E1 +3.071845000E3,6.029427505E1 +3.072216000E3,6.271100503E1 +3.072476000E3,6.548403896E1 +3.072709000E3,6.655140024E1 +3.072958000E3,6.872933885E1 +3.073221000E3,6.840034062E1 +3.073524000E3,6.189262665E1 +3.073801000E3,6.315516618E1 +3.074029000E3,6.431689152E1 +3.074282000E3,7.008635825E1 +3.074531000E3,6.529488526E1 +3.074781000E3,5.362885622E1 +3.075079000E3,6.174622467E1 +3.075321000E3,6.106059522E1 +3.075569000E3,6.727558853E1 +3.075841000E3,6.068477373E1 +3.076089000E3,6.224550385E1 +3.076358000E3,6.049387981E1 +3.076618000E3,5.554290122E1 +3.076868000E3,5.232623619E1 +3.077136000E3,5.715980006E1 +3.077434000E3,6.112308912E1 +3.077738000E3,5.964598426E1 +3.077997000E3,5.774993649E1 +3.078301000E3,5.930552673E1 +3.078632000E3,6.204668908E1 +3.078903000E3,6.135182684E1 +3.079234000E3,6.010535577E1 +3.079530000E3,5.612975229E1 +3.079846000E3,5.894789721E1 +3.080130000E3,6.424282153E1 +3.080395000E3,6.696093787E1 +3.080696000E3,5.929656512E1 +3.080931000E3,5.577162965E1 +3.081168000E3,6.096321541E1 +3.081415000E3,6.147204445E1 +3.081708000E3,6.518353223E1 +3.082066000E3,6.565001970E1 +3.082347000E3,6.152216198E1 +3.082591000E3,6.232488129E1 +3.082884000E3,6.450829181E1 +3.083131000E3,6.727741702E1 +3.083373000E3,6.596172391E1 +3.083615000E3,6.588974420E1 +3.083909000E3,6.215985231E1 +3.084146000E3,5.417797447E1 +3.084444000E3,5.776086644E1 +3.084736000E3,6.145598006E1 +3.085067000E3,6.705675690E1 +3.085353000E3,7.032609091E1 +3.085621000E3,6.942809802E1 +3.085926000E3,6.673219093E1 +3.086170000E3,5.874483463E1 +3.086457000E3,6.163530440E1 +3.086730000E3,5.863155738E1 +3.086955000E3,5.804604701E1 +3.087247000E3,7.202263239E1 +3.087542000E3,6.907595594E1 +3.087796000E3,7.104760035E1 +3.088063000E3,6.060670654E1 +3.088371000E3,6.409876160E1 +3.088642000E3,6.504332531E1 +3.088891000E3,6.050178076E1 +3.089172000E3,5.988548041E1 +3.089448000E3,6.419311516E1 +3.089715000E3,6.072209436E1 +3.089992000E3,6.148544930E1 +3.090256000E3,6.667985585E1 +3.090551000E3,6.360479893E1 +3.090829000E3,6.675347002E1 +3.091081000E3,6.585951744E1 +3.091337000E3,5.998998345E1 +3.091582000E3,7.213751425E1 +3.091973000E3,7.002319175E1 +3.092225000E3,6.554991346E1 +3.092495000E3,5.438962824E1 +3.092757000E3,5.806427109E1 +3.093010000E3,5.611571138E1 +3.093290000E3,5.427298566E1 +3.093553000E3,6.332676554E1 +3.093801000E3,6.191283999E1 +3.094088000E3,6.222056485E1 +3.094383000E3,6.679558422E1 +3.094660000E3,6.396349695E1 +3.094980000E3,6.335657582E1 +3.095321000E3,6.368682935E1 +3.095574000E3,6.239728447E1 +3.095829000E3,6.560913932E1 +3.096083000E3,6.288470186E1 +3.096327000E3,6.063834800E1 +3.096611000E3,5.698542980E1 +3.096866000E3,6.214573666E1 +3.097125000E3,6.108001307E1 +3.097382000E3,6.098898235E1 +3.097639000E3,6.935379750E1 +3.097944000E3,6.076333803E1 +3.098235000E3,5.747447310E1 +3.098595000E3,5.896750888E1 +3.098845000E3,6.428262322E1 +3.099146000E3,6.073561603E1 +3.099435000E3,5.610862272E1 +3.099679000E3,5.808393750E1 +3.099971000E3,6.306244141E1 +3.100214000E3,6.493760740E1 +3.100511000E3,5.964091377E1 +3.100753000E3,5.949423253E1 +3.100995000E3,6.324186751E1 +3.101237000E3,6.294719776E1 +3.101481000E3,6.618420708E1 +3.101805000E3,6.039251647E1 +3.102105000E3,6.883376735E1 +3.102388000E3,6.215701199E1 +3.102635000E3,6.251944475E1 +3.102926000E3,6.387718652E1 +3.103175000E3,6.262879933E1 +3.103469000E3,6.094246273E1 +3.103717000E3,5.780442917E1 +3.104010000E3,5.805018882E1 +3.104245000E3,6.073911170E1 +3.104537000E3,5.820155990E1 +3.104880000E3,5.691870737E1 +3.105139000E3,5.609187778E1 +3.105418000E3,5.368790307E1 +3.105673000E3,5.733127796E1 +3.105933000E3,5.834617124E1 +3.106196000E3,5.665251568E1 +3.106447000E3,5.839993992E1 +3.106707000E3,5.765825797E1 +3.106989000E3,6.346036236E1 +3.107241000E3,6.088974139E1 +3.107536000E3,5.623231578E1 +3.107836000E3,5.905990454E1 +3.108208000E3,5.913546091E1 +3.108462000E3,5.921957697E1 +3.108732000E3,6.403378055E1 +3.109010000E3,6.829473891E1 +3.109237000E3,6.866131452E1 +3.109530000E3,5.759864554E1 +3.109769000E3,5.216447932E1 +3.110067000E3,5.887622687E1 +3.110356000E3,5.912152229E1 +3.110621000E3,6.343631440E1 +3.110862000E3,6.110189356E1 +3.111105000E3,5.925249209E1 +3.111441000E3,5.583559168E1 +3.111708000E3,6.397874973E1 +3.112049000E3,5.864630935E1 +3.112314000E3,5.876030726E1 +3.112620000E3,5.558460131E1 +3.112980000E3,5.336927775E1 +3.113232000E3,5.351895645E1 +3.113515000E3,4.932805120E1 +3.113763000E3,6.323075662E1 +3.114057000E3,6.375401647E1 +3.114318000E3,6.430798012E1 +3.114651000E3,6.745313705E1 +3.114909000E3,6.370697195E1 +3.115204000E3,6.719832935E1 +3.115517000E3,6.353352979E1 +3.115816000E3,6.421660294E1 +3.116074000E3,6.666449428E1 +3.116372000E3,6.209745804E1 +3.116612000E3,5.853853683E1 +3.116911000E3,6.153177442E1 +3.117151000E3,6.465277685E1 +3.117439000E3,6.054074617E1 +3.117698000E3,5.762180605E1 +3.118029000E3,5.904912096E1 +3.118292000E3,6.054469105E1 +3.118547000E3,6.570885599E1 +3.118854000E3,6.686989978E1 +3.119103000E3,6.506823644E1 +3.119359000E3,5.780133308E1 +3.119610000E3,5.983707630E1 +3.119896000E3,6.102798325E1 +3.120167000E3,5.940835035E1 +3.120446000E3,6.154008300E1 +3.120717000E3,6.031178539E1 +3.120969000E3,6.222997321E1 +3.121291000E3,6.676268308E1 +3.121532000E3,6.244629438E1 +3.121778000E3,6.014719673E1 +3.122038000E3,6.351124664E1 +3.122317000E3,5.786579019E1 +3.122607000E3,5.704033688E1 +3.122864000E3,5.941823253E1 +3.123160000E3,6.366298469E1 +3.123429000E3,6.545330590E1 +3.123678000E3,6.206143443E1 +3.123932000E3,6.250040348E1 +3.124250000E3,6.193784317E1 +3.124582000E3,6.679802083E1 +3.124888000E3,6.239911876E1 +3.125141000E3,6.227743005E1 +3.125407000E3,5.930162190E1 +3.125655000E3,5.692493613E1 +3.125897000E3,6.100851678E1 +3.126155000E3,6.356932883E1 +3.126470000E3,6.583742229E1 +3.126735000E3,6.828531785E1 +3.127049000E3,6.744954014E1 +3.127349000E3,6.892448306E1 +3.127620000E3,6.312172108E1 +3.127885000E3,6.549450530E1 +3.128150000E3,6.274114245E1 +3.128434000E3,5.987443555E1 +3.128694000E3,5.754092402E1 +3.128967000E3,6.140483336E1 +3.129224000E3,5.793735580E1 +3.129483000E3,5.640840091E1 +3.129735000E3,7.068460790E1 +3.130042000E3,6.831622259E1 +3.130308000E3,6.661131327E1 +3.130563000E3,7.032191033E1 +3.130897000E3,6.429012882E1 +3.131166000E3,6.890779868E1 +3.131427000E3,6.812897599E1 +3.131726000E3,6.440583932E1 +3.132039000E3,6.371305855E1 +3.132310000E3,6.071113649E1 +3.132582000E3,6.356904702E1 +3.132834000E3,6.335195410E1 +3.133078000E3,5.922748305E1 +3.133357000E3,5.790290676E1 +3.133581000E3,6.067150466E1 +3.133827000E3,5.936438225E1 +3.134075000E3,5.651144024E1 +3.134312000E3,5.707156804E1 +3.134564000E3,6.256442790E1 +3.134822000E3,5.680653319E1 +3.135099000E3,6.386946987E1 +3.135341000E3,6.183817556E1 +3.135588000E3,5.791592939E1 +3.135843000E3,5.415500200E1 +3.136159000E3,5.828393923E1 +3.136402000E3,5.584102234E1 +3.136645000E3,5.843965538E1 +3.136922000E3,6.032067675E1 +3.137231000E3,6.082235855E1 +3.137514000E3,6.216335250E1 +3.137763000E3,6.576895249E1 +3.138052000E3,5.935628673E1 +3.138348000E3,5.697436057E1 +3.138590000E3,6.713499986E1 +3.138833000E3,5.996032355E1 +3.139071000E3,6.566814076E1 +3.139366000E3,6.469315039E1 +3.139607000E3,6.414816039E1 +3.139901000E3,6.238348704E1 +3.140144000E3,5.975478602E1 +3.140477000E3,5.617333113E1 +3.140789000E3,6.140881460E1 +3.141038000E3,5.760925345E1 +3.141323000E3,5.813474075E1 +3.141616000E3,6.190304914E1 +3.141899000E3,5.853813516E1 +3.142123000E3,6.019478920E1 +3.142387000E3,5.824830032E1 +3.142639000E3,6.031650371E1 +3.142898000E3,5.874305926E1 +3.143211000E3,6.365997735E1 +3.143459000E3,6.182267241E1 +3.143814000E3,6.153305629E1 +3.144076000E3,6.040235966E1 +3.144345000E3,6.279707978E1 +3.144591000E3,6.261441373E1 +3.144837000E3,5.722591859E1 +3.145082000E3,5.791919274E1 +3.145387000E3,6.142016587E1 +3.145678000E3,5.996802308E1 +3.145994000E3,5.761245992E1 +3.146269000E3,5.915341256E1 +3.146531000E3,5.679987844E1 +3.146814000E3,6.228452904E1 +3.147163000E3,6.038592359E1 +3.147440000E3,6.662509726E1 +3.147705000E3,5.864713600E1 +3.147961000E3,6.383827006E1 +3.148228000E3,6.445939632E1 +3.148543000E3,6.206597752E1 +3.148800000E3,6.082056407E1 +3.149046000E3,5.872798480E1 +3.149340000E3,5.792404132E1 +3.149585000E3,5.917409009E1 +3.149845000E3,5.619795947E1 +3.150164000E3,6.447379623E1 +3.150501000E3,6.336546747E1 +3.150798000E3,6.022605646E1 +3.151059000E3,5.837139298E1 +3.151360000E3,5.721847889E1 +3.151614000E3,7.085699981E1 +3.151908000E3,6.031233854E1 +3.152206000E3,6.170839562E1 +3.152452000E3,6.336115962E1 +3.152697000E3,6.732286145E1 +3.152943000E3,6.043278366E1 +3.153235000E3,5.822950572E1 +3.153537000E3,6.155234216E1 +3.153813000E3,5.671966020E1 +3.154078000E3,5.613348243E1 +3.154333000E3,5.384913785E1 +3.154580000E3,5.739778382E1 +3.154869000E3,5.617144196E1 +3.155103000E3,5.699346940E1 +3.155351000E3,6.356393037E1 +3.155653000E3,5.483372318E1 +3.155949000E3,5.806865262E1 +3.156195000E3,5.725879338E1 +3.156459000E3,5.708272088E1 +3.156776000E3,5.736330762E1 +3.157028000E3,5.620178265E1 +3.157280000E3,5.557503250E1 +3.157521000E3,6.379766868E1 +3.157864000E3,6.175462639E1 +3.158113000E3,5.970375584E1 +3.158365000E3,5.482220327E1 +3.158625000E3,6.094938302E1 +3.158872000E3,6.189076140E1 +3.159128000E3,6.365906369E1 +3.159385000E3,6.365252593E1 +3.159699000E3,6.421784723E1 +3.160039000E3,5.952347777E1 +3.160337000E3,6.582170091E1 +3.160643000E3,6.400621400E1 +3.160905000E3,5.982923632E1 +3.161162000E3,5.912958512E1 +3.161449000E3,5.744161350E1 +3.161722000E3,6.208953034E1 +3.161984000E3,6.743490019E1 +3.162228000E3,5.893358785E1 +3.162506000E3,6.260442429E1 +3.162777000E3,6.054589944E1 +3.163072000E3,5.958101250E1 +3.163380000E3,5.756716970E1 +3.163623000E3,5.897741262E1 +3.163916000E3,5.199350029E1 +3.164173000E3,5.607364633E1 +3.164444000E3,6.846587546E1 +3.164756000E3,5.833953537E1 +3.165011000E3,6.699601536E1 +3.165255000E3,6.024033326E1 +3.165530000E3,5.636786936E1 +3.165825000E3,5.917346905E1 +3.166077000E3,5.684739711E1 +3.166343000E3,5.441684119E1 +3.166607000E3,5.708423030E1 +3.166871000E3,5.726160097E1 +3.167212000E3,5.795085756E1 +3.167513000E3,5.359033433E1 +3.167800000E3,5.481028168E1 +3.168051000E3,5.771426852E1 +3.168321000E3,5.720698183E1 +3.168574000E3,6.029484328E1 +3.168847000E3,6.594273179E1 +3.169141000E3,5.814954146E1 +3.169451000E3,5.741553332E1 +3.169717000E3,5.474949866E1 +3.170064000E3,5.858087337E1 +3.170388000E3,5.901398101E1 +3.170689000E3,6.599046976E1 +3.170942000E3,6.777823262E1 +3.171184000E3,6.339704259E1 +3.171437000E3,5.678237753E1 +3.171694000E3,6.067324941E1 +3.171975000E3,6.337570500E1 +3.172215000E3,6.060254578E1 +3.172509000E3,6.511602204E1 +3.172792000E3,6.491523998E1 +3.173086000E3,6.236437487E1 +3.173442000E3,6.132637014E1 +3.173725000E3,5.575670785E1 +3.173997000E3,5.450541115E1 +3.174243000E3,5.816223835E1 +3.174516000E3,5.991084873E1 +3.174771000E3,5.959264792E1 +3.175022000E3,6.001504494E1 +3.175268000E3,5.794233494E1 +3.175510000E3,5.875384007E1 +3.175752000E3,6.582497874E1 +3.176001000E3,6.385809704E1 +3.176310000E3,6.575292490E1 +3.176700000E3,6.328122862E1 +3.176947000E3,6.160374932E1 +3.177205000E3,6.233605233E1 +3.177480000E3,5.746120395E1 +3.177733000E3,5.491961653E1 +3.178002000E3,5.346590976E1 +3.178308000E3,4.910433719E1 +3.178598000E3,5.548086035E1 +3.178876000E3,5.834728013E1 +3.179129000E3,5.722852381E1 +3.179407000E3,5.371032540E1 +3.179686000E3,5.375017527E1 +3.180066000E3,5.741446005E1 +3.180325000E3,5.595914402E1 +3.180624000E3,5.784989425E1 +3.180867000E3,5.818330240E1 +3.181112000E3,5.651638359E1 +3.181407000E3,5.400925398E1 +3.181645000E3,5.134681346E1 +3.181939000E3,5.540645654E1 +3.182189000E3,5.603348674E1 +3.182489000E3,5.612576596E1 +3.182726000E3,5.412821683E1 +3.183072000E3,5.364995955E1 +3.183373000E3,5.685067634E1 +3.183631000E3,5.292396423E1 +3.183913000E3,5.037305724E1 +3.184139000E3,5.458652507E1 +3.184386000E3,5.336216390E1 +3.184625000E3,5.355204553E1 +3.184861000E3,5.798216811E1 +3.185170000E3,5.037998219E1 +3.185412000E3,5.253320042E1 +3.185661000E3,5.864558083E1 +3.185944000E3,5.568855775E1 +3.186307000E3,6.065674046E1 +3.186594000E3,5.486017232E1 +3.186846000E3,5.354898396E1 +3.187128000E3,5.606629368E1 +3.187373000E3,5.887335608E1 +3.187646000E3,5.932986575E1 +3.187996000E3,5.618144782E1 +3.188254000E3,5.279151533E1 +3.188538000E3,5.980979660E1 +3.188819000E3,5.959008295E1 +3.189058000E3,5.757326838E1 +3.189324000E3,5.814251633E1 +3.189681000E3,6.715432083E1 +3.189929000E3,5.659786492E1 +3.190183000E3,6.813933576E1 +3.190493000E3,6.423896785E1 +3.190762000E3,6.115594562E1 +3.191063000E3,6.466877383E1 +3.191295000E3,6.400176112E1 +3.191543000E3,6.061189134E1 +3.191813000E3,6.334758009E1 +3.192062000E3,6.268892194E1 +3.192384000E3,6.255649695E1 +3.192688000E3,6.440152216E1 +3.193095000E3,6.083356984E1 +3.193368000E3,5.702207605E1 +3.193630000E3,6.129862703E1 +3.193931000E3,6.511359313E1 +3.194208000E3,6.424113032E1 +3.194458000E3,6.277957456E1 +3.194751000E3,6.067489213E1 +3.195007000E3,6.044409325E1 +3.195267000E3,5.902485869E1 +3.195523000E3,5.940450479E1 +3.195769000E3,5.629667180E1 +3.196103000E3,5.773687048E1 +3.196362000E3,5.275604571E1 +3.196676000E3,5.321996877E1 +3.196932000E3,4.952922772E1 +3.197191000E3,5.411849627E1 +3.197458000E3,5.575997519E1 +3.197718000E3,5.782402980E1 +3.197982000E3,6.092045522E1 +3.198228000E3,6.504329265E1 +3.198474000E3,5.972589974E1 +3.198713000E3,5.816644178E1 +3.198958000E3,6.190720604E1 +3.199249000E3,6.026051864E1 +3.199481000E3,6.064697026E1 +3.199744000E3,5.715218400E1 +3.200003000E3,5.509276249E1 +3.200281000E3,5.035485844E1 +3.200607000E3,5.745123346E1 +3.200874000E3,5.874041571E1 +3.201157000E3,6.540993071E1 +3.201407000E3,6.592699897E1 +3.201730000E3,5.826687879E1 +3.201982000E3,5.966898415E1 +3.202228000E3,5.928022084E1 +3.202546000E3,5.492659239E1 +3.202811000E3,5.843773228E1 +3.203091000E3,5.615478265E1 +3.203365000E3,5.378265559E1 +3.203611000E3,5.724493737E1 +3.203868000E3,5.517839982E1 +3.204137000E3,5.166422622E1 +3.204439000E3,5.966362579E1 +3.204692000E3,5.837831137E1 +3.204952000E3,5.873474045E1 +3.205216000E3,6.025432286E1 +3.205460000E3,5.709891269E1 +3.205710000E3,5.946766606E1 +3.206062000E3,5.575402329E1 +3.206367000E3,5.597615265E1 +3.206620000E3,5.417374311E1 +3.206869000E3,5.785505194E1 +3.207152000E3,5.973144393E1 +3.207405000E3,5.494944595E1 +3.207684000E3,5.859159641E1 +3.207982000E3,5.909726368E1 +3.208273000E3,6.221796591E1 +3.208541000E3,6.248597715E1 +3.208787000E3,6.143432195E1 +3.209043000E3,5.767415987E1 +3.209357000E3,6.087003136E1 +3.209636000E3,5.816954701E1 +3.209920000E3,5.644196424E1 +3.210232000E3,5.726504339E1 +3.210505000E3,5.384487818E1 +3.210769000E3,6.092886049E1 +3.211044000E3,5.910647270E1 +3.211306000E3,5.855040927E1 +3.211560000E3,6.886189365E1 +3.211803000E3,6.193548709E1 +3.212075000E3,5.895667088E1 +3.212320000E3,5.613734816E1 +3.212669000E3,6.365011223E1 +3.212934000E3,6.616065582E1 +3.213195000E3,4.911720228E1 +3.213460000E3,5.429539168E1 +3.213713000E3,5.374714305E1 +3.213991000E3,5.505703483E1 +3.214231000E3,5.216197587E1 +3.214486000E3,6.958974683E1 +3.214787000E3,6.410499727E1 +3.215047000E3,5.795707420E1 +3.215308000E3,6.210641451E1 +3.215581000E3,5.724864620E1 +3.215943000E3,5.588397230E1 +3.216221000E3,5.281586206E1 +3.216477000E3,5.616597876E1 +3.216735000E3,7.016181845E1 +3.216992000E3,7.008234703E1 +3.217238000E3,6.883905131E1 +3.217482000E3,6.039428517E1 +3.217722000E3,6.572225500E1 +3.217971000E3,6.862082655E1 +3.218221000E3,6.392739620E1 +3.218481000E3,6.757625304E1 +3.218798000E3,6.468895575E1 +3.219137000E3,5.941097234E1 +3.219443000E3,6.639331379E1 +3.219715000E3,6.512137194E1 +3.219985000E3,6.137345425E1 +3.220244000E3,6.566739727E1 +3.220494000E3,5.684090738E1 +3.220758000E3,4.865476042E1 +3.221022000E3,5.571447424E1 +3.221324000E3,5.050200483E1 +3.221601000E3,5.262698993E1 +3.221858000E3,5.385544431E1 +3.222185000E3,5.793526709E1 +3.222548000E3,5.957102097E1 +3.222796000E3,5.026005559E1 +3.223068000E3,5.164515600E1 +3.223344000E3,6.575405490E1 +3.223598000E3,6.925353270E1 +3.223876000E3,5.909751181E1 +3.224152000E3,5.561020058E1 +3.224416000E3,5.257890354E1 +3.224662000E3,5.262446891E1 +3.224954000E3,5.599583257E1 +3.225202000E3,5.286294623E1 +3.225483000E3,5.049109924E1 +3.225830000E3,6.154494550E1 +3.226096000E3,5.433068412E1 +3.226350000E3,5.256602683E1 +3.226652000E3,5.283535150E1 +3.226989000E3,5.811852242E1 +3.227251000E3,5.842389129E1 +3.227505000E3,5.524471208E1 +3.227782000E3,6.207780754E1 +3.228053000E3,6.165130850E1 +3.228302000E3,5.818085510E1 +3.228557000E3,5.646455559E1 +3.228823000E3,5.903487317E1 +3.229201000E3,5.460588060E1 +3.229471000E3,5.534537953E1 +3.229720000E3,5.492103159E1 +3.229976000E3,5.474982433E1 +3.230276000E3,6.311967749E1 +3.230531000E3,6.144237593E1 +3.230845000E3,6.204497775E1 +3.231123000E3,6.192920277E1 +3.231382000E3,6.726064707E1 +3.231675000E3,5.951322284E1 +3.231970000E3,5.620608761E1 +3.232324000E3,5.597726308E1 +3.232555000E3,5.737347613E1 +3.232845000E3,5.515502781E1 +3.233172000E3,5.977186730E1 +3.233435000E3,6.131606000E1 +3.233742000E3,5.610580070E1 +3.234000000E3,5.978218601E1 +3.234272000E3,6.319970701E1 +3.234581000E3,5.608562509E1 +3.234862000E3,6.169746582E1 +3.235159000E3,6.105762669E1 +3.235416000E3,5.369522011E1 +3.235667000E3,6.580487109E1 +3.235906000E3,5.797374086E1 +3.236200000E3,6.981267784E1 +3.236445000E3,6.229515865E1 +3.236695000E3,6.858181426E1 +3.236976000E3,5.740787399E1 +3.237218000E3,5.455964692E1 +3.237457000E3,7.204325578E1 +3.237720000E3,6.142914611E1 +3.238013000E3,5.768794211E1 +3.238280000E3,5.732491467E1 +3.238580000E3,5.793744264E1 +3.238882000E3,5.626325471E1 +3.239149000E3,5.661724856E1 +3.239424000E3,6.969605219E1 +3.239726000E3,6.482965407E1 +3.239976000E3,5.947270091E1 +3.240278000E3,5.913422796E1 +3.240576000E3,5.630232959E1 +3.240877000E3,5.956366293E1 +3.241128000E3,6.177688280E1 +3.241391000E3,5.851951662E1 +3.241664000E3,5.959787493E1 +3.241944000E3,5.765523372E1 +3.242310000E3,5.961443978E1 +3.242602000E3,5.811194000E1 +3.242910000E3,5.765320401E1 +3.243188000E3,6.631148602E1 +3.243420000E3,6.916377121E1 +3.243673000E3,6.435158828E1 +3.243925000E3,6.486926440E1 +3.244170000E3,5.506348984E1 +3.244475000E3,6.702899260E1 +3.244772000E3,6.244838658E1 +3.245003000E3,6.057959417E1 +3.245328000E3,6.103137126E1 +3.245581000E3,5.723671640E1 +3.245864000E3,5.125127512E1 +3.246123000E3,5.748187394E1 +3.246395000E3,6.148075018E1 +3.246669000E3,6.226010686E1 +3.246940000E3,5.273573389E1 +3.247233000E3,5.462141876E1 +3.247482000E3,5.946160846E1 +3.247728000E3,6.623014757E1 +3.248041000E3,5.823129903E1 +3.248289000E3,5.689561843E1 +3.248538000E3,5.851473913E1 +3.248910000E3,5.778207994E1 +3.249187000E3,6.109108533E1 +3.249462000E3,6.368024039E1 +3.249726000E3,6.527718864E1 +3.249983000E3,5.855658653E1 +3.250281000E3,5.718860903E1 +3.250534000E3,5.946900486E1 +3.250785000E3,5.688578668E1 +3.251033000E3,5.444863300E1 +3.251316000E3,5.885016251E1 +3.251570000E3,6.172482417E1 +3.251833000E3,6.833245599E1 +3.252200000E3,6.656973280E1 +3.252441000E3,6.663686281E1 +3.252721000E3,6.380106140E1 +3.252991000E3,6.113258977E1 +3.253242000E3,7.270243700E1 +3.253457000E3,7.442711013E1 +3.253706000E3,7.097589831E1 +3.253999000E3,5.740107596E1 +3.254237000E3,5.407351324E1 +3.254532000E3,6.235563554E1 +3.254777000E3,6.148535018E1 +3.255085000E3,6.767985005E1 +3.255346000E3,5.893302101E1 +3.255628000E3,5.834235484E1 +3.255897000E3,6.152524318E1 +3.256146000E3,6.124474706E1 +3.256419000E3,5.928557591E1 +3.256642000E3,5.798678480E1 +3.256921000E3,5.800318977E1 +3.257149000E3,5.813391626E1 +3.257392000E3,6.200496820E1 +3.257645000E3,6.268368020E1 +3.257945000E3,6.783162804E1 +3.258296000E3,7.343015115E1 +3.258556000E3,7.258165803E1 +3.258805000E3,6.753466802E1 +3.259117000E3,7.134403593E1 +3.259421000E3,6.813653179E1 +3.259673000E3,6.449045726E1 +3.259939000E3,7.144310958E1 +3.260188000E3,6.619195201E1 +3.260438000E3,6.990193438E1 +3.260692000E3,6.791067771E1 +3.260944000E3,7.014061601E1 +3.261191000E3,7.271368424E1 +3.261532000E3,6.889323528E1 +3.261794000E3,6.087932672E1 +3.262047000E3,6.139975131E1 +3.262322000E3,6.684035582E1 +3.262586000E3,6.977079140E1 +3.262861000E3,6.711211223E1 +3.263137000E3,6.891542739E1 +3.263415000E3,6.450575202E1 +3.263671000E3,6.375083447E1 +3.263946000E3,6.525419018E1 +3.264250000E3,6.323969714E1 +3.264517000E3,7.351653517E1 +3.264813000E3,7.240916805E1 +3.265107000E3,6.991986455E1 +3.265349000E3,6.767718353E1 +3.265598000E3,7.020318016E1 +3.265847000E3,6.593396207E1 +3.266149000E3,6.776886494E1 +3.266400000E3,6.796917668E1 +3.266653000E3,6.234495715E1 +3.266897000E3,6.492303298E1 +3.267153000E3,6.551968402E1 +3.267398000E3,6.154456079E1 +3.267647000E3,6.087933145E1 +3.267896000E3,6.053677169E1 +3.268248000E3,6.893351216E1 +3.268513000E3,6.695525456E1 +3.268817000E3,6.263553940E1 +3.269070000E3,5.965971741E1 +3.269315000E3,6.136430702E1 +3.269582000E3,7.398506568E1 +3.269828000E3,7.145137487E1 +3.270128000E3,7.238266470E1 +3.270371000E3,7.289527120E1 +3.270623000E3,7.428636164E1 +3.270931000E3,7.248535741E1 +3.271185000E3,7.399445608E1 +3.271518000E3,7.355251323E1 +3.271795000E3,7.296660624E1 +3.272081000E3,7.131368475E1 +3.272358000E3,7.068792091E1 +3.272581000E3,6.623699177E1 +3.272835000E3,5.258987188E1 +3.273093000E3,6.044165509E1 +3.273337000E3,6.879817511E1 +3.273635000E3,6.970693453E1 +3.273931000E3,7.169623139E1 +3.274180000E3,7.112396098E1 +3.274428000E3,7.190035192E1 +3.274761000E3,7.089393329E1 +3.275038000E3,6.995869622E1 +3.275323000E3,6.900781199E1 +3.275569000E3,6.766263448E1 +3.275860000E3,6.881814388E1 +3.276116000E3,6.821596427E1 +3.276370000E3,6.896702672E1 +3.276649000E3,6.827119542E1 +3.276914000E3,6.795818984E1 +3.277171000E3,7.025945887E1 +3.277482000E3,6.685661764E1 +3.277741000E3,6.810082518E1 +3.278078000E3,6.902136690E1 +3.278358000E3,6.568611650E1 +3.278604000E3,7.123802039E1 +3.278848000E3,6.300940961E1 +3.279144000E3,6.292057856E1 +3.279382000E3,6.654167697E1 +3.279622000E3,6.808014942E1 +3.279917000E3,6.902808966E1 +3.280160000E3,6.685153426E1 +3.280471000E3,6.435621527E1 +3.280770000E3,6.765080490E1 +3.281059000E3,6.808248309E1 +3.281352000E3,6.477485011E1 +3.281602000E3,5.628454157E1 +3.281867000E3,5.800927668E1 +3.282130000E3,7.131716325E1 +3.282389000E3,7.355208108E1 +3.282663000E3,7.108584109E1 +3.282932000E3,5.710440961E1 +3.283191000E3,5.329699257E1 +3.283451000E3,5.003319724E1 +3.283709000E3,5.081704645E1 +3.284003000E3,5.075383483E1 +3.284259000E3,5.431712692E1 +3.284628000E3,5.277582101E1 +3.284917000E3,6.061307876E1 +3.285214000E3,6.168657926E1 +3.285472000E3,5.854988033E1 +3.285744000E3,4.913527641E1 +3.285999000E3,5.563664353E1 +3.286250000E3,5.841488419E1 +3.286517000E3,6.437604518E1 +3.286777000E3,6.124264602E1 +3.287035000E3,5.886049633E1 +3.287300000E3,6.196549102E1 +3.287630000E3,6.776239267E1 +3.287951000E3,6.702605133E1 +3.288259000E3,5.376695086E1 +3.288499000E3,5.095339550E1 +3.288807000E3,5.078317550E1 +3.289117000E3,5.659564827E1 +3.289411000E3,7.136818215E1 +3.289684000E3,6.629708396E1 +3.289982000E3,7.133804213E1 +3.290271000E3,6.994811010E1 +3.290544000E3,6.532422657E1 +3.290800000E3,6.451013008E1 +3.291132000E3,6.261305598E1 +3.291418000E3,6.696223022E1 +3.291676000E3,4.827412656E1 +3.291930000E3,4.724575587E1 +3.292202000E3,4.846609938E1 +3.292501000E3,5.276700476E1 +3.292822000E3,5.071547801E1 +3.293065000E3,4.944777186E1 +3.293349000E3,4.466809801E1 +3.293583000E3,4.432750067E1 +3.293832000E3,5.165471909E1 +3.294078000E3,4.606912616E1 +3.294427000E3,4.826074528E1 +3.294712000E3,4.434240888E1 +3.294985000E3,4.684583968E1 +3.295286000E3,5.104787864E1 +3.295548000E3,4.839146586E1 +3.295807000E3,5.479537456E1 +3.296066000E3,5.055213000E1 +3.296324000E3,3.933656037E1 +3.296585000E3,4.513652817E1 +3.296840000E3,4.805617654E1 +3.297099000E3,4.453428427E1 +3.297354000E3,5.205427791E1 +3.297705000E3,5.001223291E1 +3.297948000E3,5.342697607E1 +3.298200000E3,5.619467550E1 +3.298461000E3,5.565459347E1 +3.298738000E3,5.819577446E1 +3.298988000E3,5.077826383E1 +3.299236000E3,5.142261821E1 +3.299478000E3,5.610754709E1 +3.299775000E3,5.248015066E1 +3.300011000E3,4.742520943E1 +3.300325000E3,5.519481303E1 +3.300626000E3,4.628613419E1 +3.300959000E3,4.430731849E1 +3.301224000E3,4.380193782E1 +3.301473000E3,4.690647127E1 +3.301746000E3,4.845294386E1 +3.302057000E3,4.912389116E1 +3.302307000E3,5.155191791E1 +3.302563000E3,5.240902416E1 +3.302820000E3,4.677306339E1 +3.303083000E3,5.037145513E1 +3.303327000E3,4.506752152E1 +3.303573000E3,4.920686196E1 +3.303857000E3,4.935493485E1 +3.304189000E3,4.415801479E1 +3.304459000E3,4.423531181E1 +3.304768000E3,3.874162391E1 +3.305030000E3,4.189958295E1 +3.305333000E3,4.005870516E1 +3.305579000E3,5.072183491E1 +3.305843000E3,4.113754863E1 +3.306140000E3,5.548273149E1 +3.306383000E3,5.383424402E1 +3.306628000E3,5.205779319E1 +3.306877000E3,4.592085607E1 +3.307206000E3,5.092451979E1 +3.307449000E3,4.823039740E1 +3.307720000E3,5.026090042E1 +3.307982000E3,5.794901070E1 +3.308198000E3,5.239372011E1 +3.308502000E3,5.024517162E1 +3.308742000E3,4.253471720E1 +3.309044000E3,4.105523794E1 +3.309340000E3,3.028117703E1 +3.309596000E3,2.809150222E1 +3.309864000E3,2.626060468E1 +3.310135000E3,5.055452447E1 +3.310501000E3,7.199271156E1 +3.310777000E3,7.172468430E1 +3.311045000E3,7.282926204E1 +3.311313000E3,7.145580608E1 +3.311562000E3,7.218798353E1 +3.311867000E3,7.081603642E1 +3.312107000E3,7.122522782E1 +3.312348000E3,7.013128466E1 +3.312672000E3,7.138239962E1 +3.312976000E3,7.589001323E1 +3.313216000E3,6.988466628E1 +3.313506000E3,6.521999768E1 +3.313853000E3,5.781158269E1 +3.314129000E3,5.698768013E1 +3.314381000E3,5.954050680E1 +3.314636000E3,5.529467486E1 +3.314903000E3,6.884377149E1 +3.315163000E3,7.293133775E1 +3.315448000E3,7.186875504E1 +3.315697000E3,6.942752239E1 +3.315995000E3,6.899930460E1 +3.316247000E3,6.333687203E1 +3.316557000E3,6.820286469E1 +3.316856000E3,7.371764624E1 +3.317124000E3,7.475494405E1 +3.317411000E3,7.135849387E1 +3.317718000E3,5.726081152E1 +3.317965000E3,5.650406291E1 +3.318233000E3,4.901561410E1 +3.318490000E3,6.881993797E1 +3.318742000E3,7.251465406E1 +3.319010000E3,6.395213402E1 +3.319311000E3,7.197127027E1 +3.319615000E3,6.948849738E1 +3.319862000E3,6.664503435E1 +3.320187000E3,6.933008182E1 +3.320443000E3,6.121514242E1 +3.320753000E3,7.017439611E1 +3.321063000E3,7.393277725E1 +3.321329000E3,7.045535337E1 +3.321643000E3,6.985180357E1 +3.321896000E3,7.158196073E1 +3.322168000E3,6.999348148E1 +3.322483000E3,6.872091406E1 +3.322823000E3,6.386396976E1 +3.323116000E3,6.891641311E1 +3.323355000E3,6.790436633E1 +3.323733000E3,6.190629476E1 +3.324010000E3,6.307072034E1 +3.324306000E3,6.459812141E1 +3.324591000E3,6.928529051E1 +3.324846000E3,6.953301961E1 +3.325158000E3,6.946121501E1 +3.325471000E3,6.177266257E1 +3.325739000E3,6.057146439E1 +3.326000000E3,6.021658005E1 +3.326269000E3,6.588088303E1 +3.326536000E3,6.594068529E1 +3.326797000E3,5.957632846E1 +3.327117000E3,5.830018402E1 +3.327415000E3,5.952820917E1 +3.327678000E3,5.996997483E1 +3.327928000E3,6.374276040E1 +3.328204000E3,6.484785648E1 +3.328504000E3,6.253699213E1 +3.328743000E3,6.495848159E1 +3.329001000E3,6.390198219E1 +3.329317000E3,6.107203426E1 +3.329613000E3,6.678300135E1 +3.329901000E3,6.048531373E1 +3.330164000E3,6.806621622E1 +3.330501000E3,6.592361883E1 +3.330795000E3,6.652249790E1 +3.331059000E3,6.079261624E1 +3.331342000E3,7.055285274E1 +3.331620000E3,6.885169705E1 +3.331870000E3,6.676175072E1 +3.332125000E3,6.653456857E1 +3.332410000E3,6.539948315E1 +3.332658000E3,6.741723145E1 +3.332915000E3,5.982571500E1 +3.333236000E3,7.234399288E1 +3.333559000E3,7.555637810E1 +3.333801000E3,7.132946849E1 +3.334053000E3,7.012473325E1 +3.334345000E3,7.083313400E1 +3.334658000E3,6.159204912E1 +3.334951000E3,5.416652771E1 +3.335187000E3,5.331536045E1 +3.335488000E3,5.516853140E1 +3.335780000E3,5.755380245E1 +3.336028000E3,6.034949591E1 +3.336335000E3,5.933559907E1 +3.336577000E3,6.200660494E1 +3.336975000E3,6.752581884E1 +3.337230000E3,6.552308109E1 +3.337509000E3,6.043162012E1 +3.337804000E3,6.346167875E1 +3.338097000E3,5.762665769E1 +3.338354000E3,6.046465836E1 +3.338657000E3,5.841838084E1 +3.338937000E3,5.426549819E1 +3.339182000E3,5.312925890E1 +3.339425000E3,5.904532039E1 +3.339705000E3,5.548841740E1 +3.339970000E3,6.467955136E1 +3.340311000E3,6.518540616E1 +3.340567000E3,6.130157495E1 +3.340843000E3,4.234380604E1 +3.341102000E3,3.685811557E1 +3.341367000E3,5.229521155E1 +3.341631000E3,4.577123603E1 +3.341913000E3,5.522804687E1 +3.342191000E3,7.219670231E1 +3.342497000E3,6.138541536E1 +3.342739000E3,5.883033505E1 +3.342994000E3,5.692990468E1 +3.343272000E3,5.784770175E1 +3.343584000E3,5.851150722E1 +3.343847000E3,7.127137910E1 +3.344137000E3,7.004437015E1 +3.344432000E3,6.719880262E1 +3.344677000E3,6.266500726E1 +3.344966000E3,6.662051616E1 +3.345209000E3,6.259160849E1 +3.345462000E3,6.521765959E1 +3.345762000E3,6.373477950E1 +3.346056000E3,5.976833176E1 +3.346294000E3,5.557373783E1 +3.346597000E3,5.486821605E1 +3.346842000E3,4.854970484E1 +3.347096000E3,6.338774242E1 +3.347415000E3,6.646909489E1 +3.347712000E3,6.370164725E1 +3.347950000E3,6.577012972E1 +3.348257000E3,6.536203326E1 +3.348509000E3,5.777033235E1 +3.348799000E3,6.942121279E1 +3.349070000E3,6.552465655E1 +3.349329000E3,6.400867966E1 +3.349583000E3,5.955829212E1 +3.349911000E3,6.233007104E1 +3.350154000E3,7.360271557E1 +3.350432000E3,7.402471070E1 +3.350716000E3,7.225249055E1 +3.350966000E3,6.654334459E1 +3.351200000E3,6.590758849E1 +3.351507000E3,6.143698167E1 +3.351805000E3,7.197722167E1 +3.352079000E3,6.778594348E1 +3.352307000E3,5.712392879E1 +3.352566000E3,5.659236121E1 +3.352870000E3,5.352359430E1 +3.353127000E3,5.362353429E1 +3.353366000E3,5.964860406E1 +3.353638000E3,7.164177428E1 +3.353890000E3,6.730234717E1 +3.354173000E3,5.336089185E1 +3.354435000E3,4.770751864E1 +3.354689000E3,4.833001031E1 +3.354956000E3,4.464972004E1 +3.355220000E3,6.809720152E1 +3.355493000E3,7.032616040E1 +3.355723000E3,7.137092547E1 +3.356052000E3,7.106236065E1 +3.356287000E3,7.302101107E1 +3.356599000E3,6.868512076E1 +3.356867000E3,7.134905494E1 +3.357133000E3,7.032184319E1 +3.357463000E3,6.484515560E1 +3.357753000E3,5.949029357E1 +3.358081000E3,6.553405106E1 +3.358385000E3,5.460622041E1 +3.358634000E3,4.798111952E1 +3.358902000E3,5.356090224E1 +3.359186000E3,5.091993104E1 +3.359516000E3,5.980463665E1 +3.359805000E3,5.623340998E1 +3.360124000E3,4.885342740E1 +3.360404000E3,4.536632542E1 +3.360660000E3,5.726647509E1 +3.360941000E3,6.266477325E1 +3.361245000E3,5.265432523E1 +3.361521000E3,4.746518361E1 +3.361777000E3,5.341135388E1 +3.362038000E3,5.094337921E1 +3.362292000E3,5.832737886E1 +3.362616000E3,5.247742127E1 +3.363049000E3,5.123926483E1 +3.363313000E3,4.482127206E1 +3.363600000E3,4.813050338E1 +3.363848000E3,5.751744958E1 +3.364157000E3,5.045245795E1 diff --git a/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a1/MyWorld.java b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a1/MyWorld.java new file mode 100644 index 0000000..8ebbe35 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a1/MyWorld.java @@ -0,0 +1,36 @@ +import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot und MouseInfo) + +/** + * Ergänzen Sie hier eine Beschreibung für die Klasse MyWorld. + * + * @author (Ihr Name) + * @version (eine Versionsnummer oder ein Datum) + */ +public class MyWorld extends World +{ + + /** + * Konstruktor für Objekte der Klasse MyWorld + * + */ + public MyWorld() + { + // Erstellt eine neue Welt mit 1200x900 Pixeln + super(1000, 700, 1); + + prepare(); + } + + + /** + * Bereite die Welt für den Programmstart vor. + * Das heißt: Erzeuge die Anfangs-Objekte und füge sie der Welt hinzu. + */ + private void prepare() + { + XYDiagramm d = new XYDiagramm(); + addObject(d,500,350); + + } +} + diff --git a/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a1/Picture.java b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a1/Picture.java new file mode 100644 index 0000000..8df3d55 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a1/Picture.java @@ -0,0 +1,699 @@ +import java.awt.image.*; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.BasicStroke; +import java.util.Vector; +import javax.imageio.*; +import java.io.*; +import java.awt.*; +import javax.swing.*; +import java.util.Random; +import java.awt.geom.AffineTransform; +/** + * + * Bildklasse für die Simulation von Processing-Befehlen + * + * Diese Klasse stellt ein BufferedImage bereit, in das mit Processing-Befehlen gezeichnet + * werden kann. + * Zusätzlich kann ein Bildanzeiger über jede Änderung des Bildes informiert werden, + * um "Zurück"-Befehle zu ermöglichen. Der Bildanzeiger ist entweder eine normale Java + * ScrollPane oder ein Actor aus Greenfoot. + * Die Dokumentation der einzelnen Zeichenmethoden ist der Processing-Reference + * (https://processing.org/reference/ steht unter CC-Lizenz: https://creativecommons.org/) + * entnommen und mit Deepl.com ins Deutsche übersetzt. + * + * @version 1.0 from 23.01.2019 + * @author Thomas Schaller (ZPG Informatik Klasse 9) + */ + +public class Picture{ + + // Einstellungmöglichkeiten für das Zeichnen von Rechtecken und Ellipsen + // RADIUS = Mittelpunkt+Radius wird gegeben, CENTER = Mittelpunkt und Breite/Höhe wird gegeben, + // CORNER = Linke obere Ecke + Breite/Höhe, CORNERS = Linke obere und rechte untere Ecke + public static final int RADIUS = 1; + public static final int CENTER = 2; + public static final int CORNER = 3; + public static final int CORNERS = 4; + + // gespeichertes Bild, + private BufferedImage image; + + // aktuelle Farbeinstellungen + private Color background; + private Color pencolor; + private Color fillcolor; + + // aktuelle Stiftdicke + private double stroke; + + // akkteller Koordinatenmodus von Rechtecken und Ellipsen + private int ellipseMode = CENTER; + private int rectMode = CORNER; + + // aktueller Font + private Font textfont = null; + + // muss ein Bildanzeiger benachrichtigt werden + private PictureViewer observer = null; + private boolean autorefresh = true; + + /** + * Erzeugt ein Bild mit Standardgröße 500x400 + */ + public Picture() { + this(500,400); + } + + /** + * Erzeugt ein Bild der angegeben Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public Picture(int width, int height) { + this(width,height, "D0D0D0"); + } + + /** + * Erzeugt ein Bild aus einer Datei + * @param filename Dateiname des Bildes + */ + public Picture(String filename) { + load(filename); + } + + /** + * Erzeugt ein Bild der angegebenen Größe mit festgelegtem Hintergrund + * @param width Breite des Bildes + * @param height Höhe des Bildes + * @param background Farbe des Hintergrunds + */ + public Picture(int width, int height, String background) { + this.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + this.background = decode(background); + this.pencolor = new Color(0,0,0); + this.stroke = 1; + this.fillcolor = null; + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(this.background); + g.fillRect(0,0,width-1, height-1); + } + + /** + * Legt fest, wer das Bild anzeigt. + * Diese ermöglicht die Benachrichtung des Observers, wenn sich das Bild ändert. + * @param observer Anzeiger des Bildes + */ + + public void setObserver(PictureViewer observer) { + this.observer= observer; + } + + /** + * Direktes Setzen des Bildes (für interne Zwecke) + * @param b Bild, das gespeichert werden soll. + */ + public void setImage(BufferedImage b) { + image = b; + } + + /** + * Direktes Abfragen des Bildes (für interne Zwecke) + * @return Bild, das gerade gespeichert ist. + */ + public BufferedImage getImage() { + return image; + } + + /** + * Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + * Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + * der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu. + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public void size(int width, int height){ + pushImage(); + this.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(background); + g.fillRect(0,0,width-1, height-1); + } + + /** + * Liefert die Breite des Bildes zurück. + * @return Breite des Bildes + */ + public int getWidth() { + return image.getWidth(); + } + + /** + * Liefert die Höhe des Bildes zurück. + * @return Höhe des Bildes + */ + public int getHeight() { + return image.getHeight(); + } + + + /** + * Erzeugt eine Kopie des Bildes und übergibt sie an den Observer (falls existent), damit dieser die Versionen speichern kann + */ + private void pushImage() { + if(observer != null) { + observer.pushImage(); + } + } + + + /** + * Legt fest, ob nach jedem Zeichenbefehl automatisch das Bild auch in + * der Oberfläche aktualisiert wird. Die Einstellung "false" beschleunigt + * das Zeichnen aufwändiger Bilder und verhindert "Flackern". + * Das Neuzeichnen kann durch die Methode "refresh" gezielt ausgelöst werden. + * @param autorefresh true = nach jedem Zeichenbefehl die Anzeige aktualisieren, false= nur durch die Methode refresh neu zeichnen + */ + public void setAutoRefresh(boolean autoRefresh) { + this.autorefresh = autoRefresh; + } + + + /** + * Auch die anzeigenden Klasse wird zum Neuzeichnen aufgefordert. + */ + private void repaint() { + if(observer != null && autorefresh) { + observer.repaint(); + } + } + + /** + * Auch die anzeigenden Klasse wird zum Neuzeichnen aufgefordert. + */ + public void refresh() { + if(observer != null) { + observer.repaint(); + } + } + + // ----------------------------------------- Zeichenfunktionen ----------------------------------------------- + /** + * Löscht den Inhalt des Bildes. + * Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt. + */ + + public void clear(){ + pushImage(); + image = new BufferedImage(image.getWidth(), image.getHeight(), image.getType()); + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(background); + g.fillRect(0,0,image.getWidth()-1, image.getHeight()-1); + repaint(); + } + + /** + * Konvertiert die in einem bestimmten Modus gegebenen Koordinaten in die Java-übliche Links_Oben_Breite_Höhe Version + * Die Änderungen werden direkt im Array vorgenommen + * @param coord Array mit vier Koordinateneinträgen im gegebenen Modus + * @param mode Modus der Koordinaten (CORNER, CORNERS, RADIUS oder CENTER) + */ + private void convert(int[] coord, int mode) { + switch(mode) { + case CORNER: break; + case CORNERS: coord[2] -= coord[0]; coord[3] -= coord[1]; break; + case RADIUS: coord[2] *= 2; coord[3] *=2; + case CENTER: coord[0] -= coord[2]/2; coord[1] -= coord[3]/2; + } + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + * Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + * Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void rectMode(int mode) { + rectMode = mode; + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + * Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + * Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als Breite und Höhe der Form. + * ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void ellipseMode(int mode) { + ellipseMode = mode; + } + + + + /** + * Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + * Um eine Linie einzufärben, verwenden Sie die {@link #stroke(int, int, int) stroke()} Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + * Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + * {@link #strokeWeight(double) strokeWeight()} geändert werden. + * @param x1 x-Koordinate des 1. Punktes + * @param y1 y-Koordinate des 1. Punktes + * @param x2 x-Koordinate des 2. Punktes + * @param y2 y-Koordinate des 2. Punktes + */ + public void line(int x1, int y1, int x2, int y2) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + if (stroke > 0) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawLine(x1, y1, x2, y2); + } + repaint(); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, rectMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillRect(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawRect(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, ellipseMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillOval(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawOval(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + int px[] = {x1, x2, x3}; + int py[] = {y1, y2, y3}; + polygon(px, py); + + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + + int px[] = {x1, x2, x3, x4}; + int py[] = {y1, y2, y3, y4}; + polygon(px, py); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + + public void polygon(int[] x, int[] y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(fillcolor != null) { + + g.setColor(fillcolor); + g.fillPolygon(x,y, y.length); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawPolygon(x, y, x.length); + } + repaint(); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + ellipse(x,y,1, 1); + + } + + // ----------------------------------------- Schriftdarstellung ----------------------------------------------- + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param s Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String s, int x, int y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(pencolor != null) { + g.setColor(fillcolor); + g.setStroke(new BasicStroke((float) stroke)); + g.setFont(textfont); + g.drawString(s, x, y); + } + repaint(); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + this.textfont = font; + } + + + // ----------------------------------------- Farbfestlegungen ----------------------------------------------- + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(String color) { + try{ + return new Color( + Integer.valueOf( color.substring( 0, 2 ), 16 ), + Integer.valueOf( color.substring( 2, 4 ), 16 ), + Integer.valueOf( color.substring( 4, 6 ), 16 ) ); + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(int color) { + try{ + if(color >=0 && color < 256) { + return new Color(color,color,color); + } else { + int r = color / 0x010000 % 0xFF; + int g = color / 0x000100 % 0xFF; + int b = color % 0xFF; + System.out.println(""+r+","+g+","+b); + return new Color(r, g, b ); + } + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + this.pencolor = decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + this.pencolor=decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + this.pencolor = new Color(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + this.pencolor = null; + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + this.stroke = width; + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + this.fillcolor = decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + this.fillcolor=decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + this.fillcolor = new Color(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + this.fillcolor = null; + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + if(c < 256) { + this.background=new Color(c,c,c); + } else { + int r = c / 0x010000; + int g = c / 0x000100 % 0xFF; + int b = c % 0xFF; + this.background= new Color(r, g, b ); + } + + this.clear(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + this.background=new Color(r,g,b); + this.clear(); + } + + +// ----------------------------------------- Dateioperationen ----------------------------------------------- + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + try{ + this.image = ImageIO.read(new File(filename)); + this.background = decode("D0D0D0"); + this.pencolor = new Color(0,0,0); + this.fillcolor = null; + this.stroke = 1; + this.repaint(); + + } catch(Exception e) { + System.out.println("Fehler beim Einlesen der Bilddatei"); + } + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + try{ + String[] fn = filename.split("\\."); + if (fn.length== 1) { + ImageIO.write(image, "PNG", new File(filename+".png")); + } else { + + if (fn.length == 2 && (fn[1].toUpperCase().equals("PNG") || + fn[1].toUpperCase().equals("GIF"))){ + ImageIO.write(image, fn[1], new File(filename)); + }else { + System.out.println("Unbekanntes Bildformat"); + } + } + + } catch(Exception e) { + System.out.println("Fehler beim Speichern"); + } + } + + +// ----------------------------------------- Sonstiges ----------------------------------------------- + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + + public Color[][] getPixelArray() { + Color[][] pixel = new Color[image.getWidth()][image.getHeight()]; + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + pixel[x][y] = new java.awt.Color(image.getRGB(x,y)); + } + } + return pixel; + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + size(pixel.length,pixel[0].length); + Graphics2D g = (Graphics2D) image.getGraphics(); + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + g.setColor(pixel[x][y]); + g.fillRect(x, y, 1, 1); + } + } + repaint(); + } + + /** + * Hilfsfunktion zum Verzögern der Ausgabe + * @param millis Wartezeit in Millisekunden + */ + public void delay(int millis) { + try{ + Thread.sleep(millis); + + } catch(Exception e) { + + } + + } + + + +} diff --git a/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a1/PictureViewer.java b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a1/PictureViewer.java new file mode 100644 index 0000000..ecbb521 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a1/PictureViewer.java @@ -0,0 +1,499 @@ +import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot und MouseInfo) +import java.awt.image.*; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.BasicStroke; +import java.awt.Font; +import java.util.Vector; +import java.awt.Color; +import javax.imageio.*; +import java.io.*; + +/** + * Der PictureViewer ist ein Actor, der in der Lage ist ein + * Objekt der Klasse Picture anzuzeigen. Zusätzlich können + * mehrere Verarbeitungsschritte gespeichert werden, um ein + * "zurück"-Funktion zu ermöglichen. + * + * @author Thomas Schaller + * @version V1.0 vom 10.02.2019 + */ +public class PictureViewer extends Actor +{ + public static final int FIT = -1; + public static final int NORMAL = 1; + + private static final int ANZ_BACK = 0; + + private double zoom; + protected Picture picture = null; + private Vector history; + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der Größe 500x400 + */ + public PictureViewer() { + this(500,400); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public PictureViewer(int width, int height) { + this(width,height, "D0D0D0"); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + * @param background Farbe des Hintergrunds als HEX-String (z.B. "FF3A45") + */ + public PictureViewer(int width, int height, String background) { + picture = new Picture(width,height, background); + picture.setObserver(this); + this.history = new Vector(); + this.zoom = NORMAL; + repaint(); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild aus einer Bilddatei + * @param filename Name des Bildes + */ + public PictureViewer(String filename) { + picture = new Picture(filename); + picture.setObserver(this); + this.history = new Vector(); + this.zoom = NORMAL; + repaint(); + } + + /** + * Speichert das übergebene Bild in der History. + * @param b zu speicherndes Bild + */ + public void pushImage() { + if( this.ANZ_BACK > 0) { + if(history.size() == this.ANZ_BACK) { + history.removeElementAt(0); + } + + BufferedImage b = new BufferedImage(picture.getWidth(), picture.getHeight(), picture.getImage().getType()); + Graphics g = b.getGraphics(); + g.drawImage(picture.getImage(), 0, 0, null); + g.dispose(); + + history.add(b); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + private void popImage() { + int anz = history.size(); + if(anz>0) { + BufferedImage i = history.get(anz-1); + history.removeElementAt(anz-1); + picture.setImage(i); + repaint(); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + public void back() { + popImage(); + } + + /** + * Setzt den Zoom-Faktor für das Bild. + * Als Zoomfaktor sind auch die Konstanten Bildanzeiger.FIT (auf Bildschirmgröße zoomen) und Bildanzeiger.NORMAL (100%) möglich. + * @param factor Zoomfaktor (1.0 = 100%). + */ + public void setZoom(double zoom) { + this.zoom = zoom; + repaint(); + } + + /** + * Setzt die automatische Neuanzeige des Bildes. + * Mit dieser Methode kann man einstellen, ob nach jedem Zeichenbefehl + * die Anzeige auf dem Bildschirm aktualisiert werden soll. Bei sehr + * vielen Zeichenbefehlen wird die Ausgabe dadurch sehr langsam. Es reicht + * eine Anzeige am Ende der Zeichenbefehle. Rufen Sie dann für das Neuzeichnen + * die Methode refresh() auf. + * @param autoRefresh true, wenn nach jedem Zeichenbefehl die Anzeige aktualisiert werden soll. + */ + public void setAutoRefresh(boolean autoRefresh) { + picture.setAutoRefresh(autoRefresh); + } + + /** + * Sorgt für die Aktualisierung der Bildschrimanzeige. Das aktuelle Bild + * wird dadurch angezeigt. Durch Einstellung von autoRefresh kann die + * Anzeige automatisiert werden. + */ + public void refresh() { + repaint(); + } + + /** + * Setzt das angezeigt Bild neu und beachtet dabei den Zoomfaktor. + */ + public void repaint() { + double faktor = zoom; + + if (zoom == FIT) { + double faktorw = (double) this.getWorld().getWidth() / picture.getWidth(); + double faktorh = (double) this.getWorld().getHeight() / picture.getHeight(); + faktor = Math.min(faktorw, faktorh); + } + int gfi_width = (int) (picture.getWidth()*faktor); + int gfi_height = (int) (picture.getHeight()*faktor); + + setImage(new GreenfootImage(gfi_width, gfi_height)); + Graphics2D g = (Graphics2D) this.getImage().getAwtImage().getGraphics(); + g.drawImage(picture.getImage(),0,0,gfi_width, gfi_height, 0, 0, picture.getWidth(), picture.getHeight(), null); + g.setColor(new java.awt.Color(0,0,0)); + g.setStroke(new BasicStroke((float) 1)); + g.drawRect(0,0,gfi_width-1, gfi_height-1); + + } + + // Wrappermethoden + /** + * Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + * Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + * der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu. + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public void size(int width, int height){ + picture.size(width, height); + } + + /** + * Liefert die Breite des Bildes zurück. + * @return Breite des Bildes + */ + public int getImageWidth() { + return picture.getWidth(); + } + + /** + * Liefert die Höhe des Bildes zurück. + * @return Höhe des Bildes + */ + public int getImageHeight() { + return picture.getHeight(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + picture.background(c); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + picture.background(r,g,b); + } + + /** + * Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + * Um eine Linie einzufärben, verwenden Sie die {@link #stroke(int, int, int) stroke()} Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + * Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + * {@link #strokeWeight(double) strokeWeight()} geändert werden. + * @param x1 x-Koordinate des 1. Punktes + * @param y1 y-Koordinate des 1. Punktes + * @param x2 x-Koordinate des 2. Punktes + * @param y2 y-Koordinate des 2. Punktes + */ + public void line(int x1, int y1, int x2, int y2) { + picture.line(x1,y1,x2,y2); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + picture.rect(a,b,c,d); + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + picture.ellipse(a,b,c,d); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + picture.triangle(x1,y1,x2,y2,x3,y3); + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + picture.quad(x1,y1,x2,y2,x3,y3,x4,y4); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + public void polygon(int[] x, int[] y) { + picture.polygon(x,y); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + picture.point(x,y); + + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + * Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + * Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void rectMode(int mode) { + picture.rectMode(mode); + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + * Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + * Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als Breite und Höhe der Form. + * ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void ellipseMode(int mode) { + picture.ellipseMode(mode); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + picture.stroke(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + picture.noStroke(); + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + picture.strokeWeight(width); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + picture.fill(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + picture.noFill(); + } + + /** + * Löscht den Inhalt des Bildes. + * Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt. + */ + public void clear(){ + picture.clear(); + } + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + picture.load(filename); + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + picture.save(filename); + } + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param t Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String t, int x, int y) { + picture.text(t,x,y); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + picture.textFont(font); + } + + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + public Color[][] getPixelArray() { + return picture.getPixelArray(); + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + picture.setPixelArray(pixel); + } + + +} + diff --git a/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a1/Table.java b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a1/Table.java new file mode 100644 index 0000000..ee5a211 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a1/Table.java @@ -0,0 +1,894 @@ +/** + * Die Klasse Table vereinfacht den Zugriff auf CSV-Dateien. + * Die Klassen Table und TableRow ermöglichen einen einfachen Zugriff auf tabellenbasierte + * Dokumente. + * + * @author Thomas Schaller + * @version 1.0 vom 01.02.2019 + */ + +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.ArrayList; +import java.io.*; +import java.util.Scanner; + +import org.jdom.Document; +import org.jdom.Element; +import org.jdom.Attribute; +import org.jdom.JDOMException; +import org.jdom.input.SAXBuilder; +import org.jdom.output.XMLOutputter; +import org.jdom.output.Format; + +public class Table +{ + // Standardtrennzeichen für Spalten + private static final char DEFAULT_SEPARATOR = ';'; + // Standardmarkierung für Texte + private static final char DEFAULT_QUOTE = '"'; + // Standardtrennzeichen für Dezimalzahlen + private static final char DEFAULT_COMMA = ','; + + // mögliche Spaltentypen + private static final String UNKNOWN ="UNKOWN"; + private static final String INT = "INTEGER"; + private static final String DOUBLE = "DOUBLE"; + private static final String FLOAT = "FLOAT"; + + // interne Verwaltung des Dokuments als JDOM-Document-Objekt + private Document doc; + // Verweis auf Element für Kopfzeile + private Element header; + // Ende Attribute + + /** + * Erzeugt leeres Tabellen-Dokument. + */ + public Table() { + this.doc = new Document(); + doc.setRootElement(new Element("CSV-Data")); + this.header = new Element("Header"); + doc.getRootElement().addContent(header); + } + + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei und erstellt ein Tabellenobjekt mit seinen Werten. + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public Table(String filename, String options, char separator, char quote) { + loadCSV(filename, options, separator, quote); + } + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei und erstellt ein Tabellenobjekt mit seinen Werten (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + */ + public Table(String filename, String options) { + loadCSV(filename, options); + } + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei ohne Kopfzeile und erstellt ein Tabellenobjekt mit seinen Werten (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public Table(String filename) { + loadCSV(filename); + } + + // Anfang Methoden + /** + * Liest den Inhalt einer CSV-Datei ohne Kopfzeile (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public void loadCSV(String filename) { + loadCSV(filename, ""); + } + + /** + * Liest den Inhalt einer CSV-Datei (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + */ + public void loadCSV(String filename, String options) { + loadCSV(filename, options, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** + * Liest den Inhalt einer CSV-Datei. + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public void loadCSV(String filename, String options, char separator, char quote) { + doc = new Document(); + doc.setRootElement(new Element("CSV-Data")); + header = new Element("Header"); + doc.getRootElement().addContent(header); + try { + File f = new File(filename); + Scanner scanner = new Scanner(new File(filename)); + if(options.toLowerCase().contains("header") && scanner.hasNext()) { + List entries = parseLine(scanner.nextLine(), separator, quote); + int i= 0; + for(String s : entries) { + Element entry = new Element("Column"); + header.addContent(entry); + entry.setText(s); + entry.setAttribute("type", "unknown"); + i++; + } + } + + List cols = header.getChildren(); + + while (scanner.hasNext()) { + Element line = new Element("Row"); + doc.getRootElement().addContent(line); + List entries = parseLine(scanner.nextLine(), separator, quote); + int i= 0; + + for(String s : entries) { + + if(i==cols.size()) { + Element entry = new Element("Column"); + entry.setAttribute("type", "unknown"); + header.addContent(entry); + cols = header.getChildren(); + } + + Element entry = new Element("Entry"); + entry.setText(s); + line.addContent(entry); + i++; + } + } + scanner.close(); + + } catch (Exception e) { + System.out.println("Fehler beim Lesen der CSV-Datei"); + } + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei ohne Kopfzeile (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public void saveCSV(String filename) { + saveCSV(filename, ""); + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthalten, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile haben soll, + * dann lassen Sie einfach die Option "header" weg. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile haben soll. + * @param filename Dateiname der CSV-Datei. + */ + public void saveCSV(String filename, String options) { + saveCSV(filename, options, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei. + * Wenn die Datei eine Kopfzeile enthalten, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile haben soll, + * dann lassen Sie einfach die Option "header" weg. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile haben soll. + * @param filename Dateiname der CSV-Datei. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public void saveCSV(String filename, String options, char separator, char quote){ + try{ + File f = new File(filename); + PrintStream outputFile = new PrintStream (f); + System.out.println("Speicher in : "+f.getAbsolutePath()); + List columns = header.getChildren(); + String sq = ""+quote; + String ss = ""+separator; + if(quote =='"') sq = "\""; + if(separator =='"') ss = "\""; + + if(options.toLowerCase().contains("header")) { + String h = ""; + for(Element c : columns) { + h += ss + sq + c.getText()+sq; + } + outputFile.println(h.substring(1)); + } + for(int i = 0; i parseLine(String cvsLine) { + return parseLine(cvsLine, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** HIlfsfunktion für die Analyse einer Dateizeile + * @param cvsLine Zeile aus der Datei + * @param sparator Trennzeichen für die Spalten + * @return Liste von String für die einzelnen Spalten + */ + private List parseLine(String cvsLine, char separator) { + return parseLine(cvsLine, separator, DEFAULT_QUOTE); + } + + /** HIlfsfunktion für die Analyse einer Dateizeile + * @param cvsLine Zeile aus der Datei + * @param sparator Trennzeichen für die Spalten + * @param customQuote Kennung für Strings + * @return Liste von String für die einzelnen Spalten + */ + private List parseLine(String cvsLine, char separator, char customQuote) { + + List result = new ArrayList<>(); + + //if empty, return! + if (cvsLine == null && cvsLine.isEmpty()) { + return result; + } + + //ggf. Default-Value laden + if (customQuote == ' ') { + customQuote = DEFAULT_QUOTE; + } + + if (separator == ' ') { + separator = DEFAULT_SEPARATOR; + } + + StringBuffer curVal = new StringBuffer(); + boolean inQuotes = false; + boolean startCollectChar = false; + boolean doubleQuotesInColumn = false; + + char[] chars = cvsLine.toCharArray(); + + for (char ch : chars) { + + if (inQuotes) { // aktueller Text ist in Quotes eingeschlossen + startCollectChar = true; + + if (ch == customQuote) { // Quotes werden beendet, aber Achtung bei "" => Metazeichen + inQuotes = false; + if (ch == '\"') { + doubleQuotesInColumn = true; + } + + } else { + + if (ch == '\"' && !doubleQuotesInColumn) { + doubleQuotesInColumn = true; + } else { + curVal.append(ch); + doubleQuotesInColumn = false; + } + + } + } else { + if (ch == customQuote) { + + inQuotes = true; + + //Fixed : allow "" in empty quote enclosed + if (ch == '\"'){ + if(doubleQuotesInColumn) { + curVal.append('"'); + doubleQuotesInColumn = false; + } else doubleQuotesInColumn = true; + + + } + } + else { + doubleQuotesInColumn = false; + if (ch == separator) { + + result.add(curVal.toString()); + + curVal = new StringBuffer(); + startCollectChar = false; + + } else if (ch == '\r') { + //ignore LF characters + continue; + } else if (ch == '\n') { + //the end, break! + break; + } else { + curVal.append(ch); + } + } + } + + } + result.add(curVal.toString()); + return result; + } + + /** + * Sucht die Nummer einer durch Namen gegebenen Spalte. + * @param name Name der Spalte + * @return Nummer der Spalte + */ + + private int findColumnNumber(String name) { + List columns = header.getChildren(); + int i = 0; + for(Element c : columns) { + if (c.getText().toLowerCase().equals(name.toLowerCase())) { + return i; + + } + i++; + } + return -1; + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an. + */ + public void addColumn() { + Element entry = new Element("Column"); + entry.setAttribute("type", Table.UNKNOWN); + header.addContent(entry); + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an und benennt sie. + * @param title Bezeichnung der Spalte + */ + public void addColumn(String title) { + addColumn(); + Element nc = ((List)(header.getChildren())).get(header.getChildren().size()-1); + nc.setText(title); + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an und benennt und typisiert sie. + * @param title Bezeichnung der Spalte + * @param type Typ der Spalte (UNKNOWN, DOUBLE, INTEGER, FLOAT) + */ + public void addColumn(String title, String type) { + addColumn(title); + Element nc = ((List)(header.getChildren())).get(header.getChildren().size()-1); + nc.setAttribute("type", type); + } + + /** + * Löscht eine Spalte. + * @param i Nummer der Spalte. + */ + public void removeColumn(int i) { + List lines = doc.getRootElement().getChildren(); + for(Element l : lines) { + if(l.getChildren().size()>i) l.removeContent(i); + } + } + + /** + * Löscht eine Spalte + * @param name Name der Spalte + */ + public void removeColumn(String name) { + try{ + removeColumn(findColumnNumber(name)); + } catch(Exception e) { System.out.println("Unbekannter Spaltenname");} + } + + /** + * Liefert die Anzahl der Spalten in der Tabelle + * @return Anzahl der Spalten + */ + public int getColumnCount() { + return header.getChildren().size(); + } + + /** + * Liefert die Anzahl der Zeilen in der Tabelle + * @return Anzahl der Zeilen + */ + public int getRowCount() { + return doc.getRootElement().getChildren().size()-1; + } + + /** + * Löscht alle Zeilen der Tabelle. + * Die Spaltenüberschriften und Typen bleiben erhalten. + */ + public void clearRows() { + doc.getRootElement().removeChildren("Row"); + } + + /** + * Fügt eine neue Zeile an das Ende der Tabelle an. + * @return ein TableRow-Objekt für diese neue Zeile + */ + public TableRow addRow() { + Element row = new Element("Row"); + doc.getRootElement().addContent(row); + return new TableRow(doc, row); + } + + /** + * Löscht eine Zeile + * @param i Nummer der Zeile + */ + public void removeRow(int i) { + if(i rows = doc.getRootElement().getChildren(); + return new TableRow(doc, rows.get(i+1)); + } + return null; + } + + /** + * Liefert die ganze Tabelle als Array von TableRow-Objekten + * @return Array von TableRow-Objekten + */ + public TableRow[] rows() { + TableRow[] rows = new TableRow[getRowCount()]; + for(int i = 0; i < getRowCount(); i++) { + rows[i] = getRow(i); + } + return rows; + } + + /** + * Liefert den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param column Spaltennummer + * @return Wert der Zelle + */ + public int getInt(int row, int column) { + return getRow(row).getInt(column); + } + + /** + * Liefert den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param name Name der Spalte + * @return Wert der Zelle + */ + public int getInt(int row, String name) { + return getRow(row).getInt(name); + } + + /** + * Setzt den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param column Spaltennummer + * @param value neuer Wert der Zelle + */ + public void setInt(int row, int column,int value) { + getRow(row).setInt(column, value); + } + + /** + * Setzt den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(int row, String name, int value) { + getRow(row).setInt(name, value); + } + + /** + * Liefert alle Werte einer Zeile als Integer-Array. + * @param row Nummer der Zeile + * @return int-Array, dass alle Werte der Zeile enthält + */ + public int[] getIntRow(int row) { + try{ + TableRow trow = getRow(row); + int anz = getColumnCount(); + int[] r = new int[anz]; + for(int i=0; i) (header.getChildren())).get(i).getText(); + } else { + return ""; + } + } + + /** + * Liefert die Nummer einer Spalte + * @param name Name der Spalte + * @return Nummer der Spalte + */ + public int getColumn(String name) { + List columns = header.getChildren(); + int i = 0; + while (i < columns.size()) { + if (columns.get(i).getText().toLowerCase().equals(name.toLowerCase())) { + return i; + } + i++; + } // end of while + return -1; + } + + + /** + * Erzeugt eine neue Zeile mit i Spalten + * Wenn bisher nicht genügend Spalten vorhanden sind, werden automatisch neue Spalten hinzugefügt (auch zum Header) + * @param i Anzahl der Spalten + */ + private Element buildRow(int i) { + List columns = header.getChildren(); + Element entry=null; + for(int j=0; j<=i; j++) { + + if(j==columns.size()) { + Element h = new Element("Column"); + h.setAttribute("type", "unknown"); + header.addContent(h); + columns = header.getChildren(); + } + if(j==current.getChildren().size()) { + entry = new Element("Entry"); + current.addContent(entry); + + } + + } + return entry; + + } + + /** + * Erzeugt eine neue Zeile. + * Es werden genügend Spalten erzeugt, dass ein Wert in Spalte "name" eingetragen werden kann + * @param name Name der Spalte + */ + private Element buildRow(String name) { + List columns = header.getChildren(); + int i = 0; + for(Element c: columns) { + + if(c.getText().toLowerCase().equals(name.toLowerCase())) { + return buildRow(i); + } + i++; + } + return null; + + } + + /** + * Liefert den Wert einer Zelle als String + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public String getString(int i) { + if(i >= current.getContent().size()) return ""; + Element e = (Element) current.getContent(i) ; + if(e!=null) { + return e.getText(); + } else { + return ""; + } + } + + /** + * Liefert den Wert einer Zelle als String + * @param name Name der Spalte + * @return Wert der Zelle + */ + public String getString(String name) { + return getString(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als String + * @param i Nummer der Spalte + * @param text neuer Wert der Zelle + */ + public void setString(int i, String text) { + + Element e = buildRow(i); + if(e!=null) e.setText(text); + } + + /** + * Setzt den Wert einer Zelle als String + * @param name Name der Spalte + * @param text neuer Wert der Zelle + */ + public void setString(String name, String text) { + Element e = buildRow(name); + if(e!=null) e.setText(text); + } + + + /** + * Liefert den Wert einer Zelle als Int-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public int getInt(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Integer.parseInt(e.getText()); + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Int-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public int getInt(String name) { + return getInt(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Int-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(int i,int value) { + + Element e = buildRow(i); + if(e!=null) e.setText(""+value); + } + + /** + * Setzt den Wert einer Zelle als Int-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(String name, int value) { + Element e = buildRow(name); + if(e!=null) e.setText(""+value); + } + + /** + * Liefert den Wert einer Zelle als Float-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public float getFloat(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Float.parseFloat(e.getText().replace(",",".")); + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Float-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public float getFloat(String name) { + return getFloat(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Float-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setFloat(int i,float value) { + + Element e = buildRow(i); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Setzt den Wert einer Zelle als Float-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setFloat(String name, float value) { + Element e = buildRow(name); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Liefert den Wert einer Zelle als Double-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public double getDouble(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Double.parseDouble(e.getText().replace(",",".")); + + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Double-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public double getDouble(String name) { + return getDouble(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Double-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setDouble(int i,double value) { + + Element e = buildRow(i); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Setzt den Wert einer Zelle als Double-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setDouble(String name, double value) { + Element e = buildRow(name); + if(e!=null) e.setText(format.format(value)); + } + +} diff --git a/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a1/XML.java b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a1/XML.java new file mode 100644 index 0000000..c06c490 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a1/XML.java @@ -0,0 +1,637 @@ +/** + * Klasse zum Vereinfachten Zugriff auf XML-Dokumente + * Diese Klasse ist für den Einsatz in der Schule gedacht und soll den Schülern + * einen einfachen Zugriff auf XML-Dokumente ermöglichen. Die zur Verfügung + * stehenden Befehle sind wie in Processing realisiert. + * Dabei ist jeder Teilbaum des Dokuments wieder als XML-Objekt zugreifbar, das + * intern auf die gleiche XML-Dokumentstruktur zugreift. + * Dies ermöglicht bei unsachgemäßem Gebrauch die XML-Struktur zu zerstören. Im + * normalen Gebrauch sollte dies aber nicht relevant sein. + * + * Benötigt: jdom-1.1.3.jar + + * @author Thomas Schaller + * @version 1.0 vom 31.01.2019 + */ +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.ArrayList; +import java.io.*; + +import org.jdom.Document; +import org.jdom.Element; +import org.jdom.Attribute; +import org.jdom.JDOMException; +import org.jdom.input.SAXBuilder; +import org.jdom.output.XMLOutputter; +import org.jdom.output.Format; + +public class XML { + // Anfang Attribute + // XML-Dokumentstruktur + private Document doc; + // Zeiger auf das aktuelle Element + private Element current; + // Ende Attribute + + /** + * Erzeugt ein leeres XMLDokument + */ + public XML() { + this.doc = new Document(); + this.current = null; + } + + /** + * Erzeugt ein XML-Dokument aus einer Datei + * @param filename Dateiname der XML-Datei + */ + public XML(String filename) { + loadXML(filename); + } + + /** + * interner Konstruktor, um ein XML Objekt zu erzeugen, das auf einen bestimmten Knoten verweist + * @param doc die XML-Dokumentstruktur + * @param current Zeiger auf das aktuelle Element + */ + private XML(Document doc, Element current) { + this.doc = doc; + this.current = current; + } + + // Anfang Methoden + /** Öffnet das durch den Dateinamen gegebene Dokument + * @param filename Dateiname des XML-Files + */ + public void loadXML(String filename) { + doc = null; + File f = new File(filename); + + try { + // Das Dokument erstellen + SAXBuilder builder = new SAXBuilder(); + doc = builder.build(f); + + } catch (JDOMException e) { + e.printStackTrace(); + + } catch (IOException e) { + e.printStackTrace(); + } + // Zeiger im Baum auf Root-Element + current = doc.getRootElement(); + } + + /** Speichert den XML-Baum im angegebenen Dateinamen + * @param filename Dateiname des XML-Files + */ + public void saveXML(String filename) { + try { + // new XMLOutputter().output(doc, System.out); + XMLOutputter xmlOutput = new XMLOutputter(); + + // display nice nice + xmlOutput.setFormat(Format.getPrettyFormat()); + File f = new File(filename); + FileOutputStream outputFile = new FileOutputStream(f); + System.out.println("Speicher in : "+f.getAbsolutePath() ); + xmlOutput.output(doc, outputFile); + outputFile.close(); + System.out.println("File Saved!"); + } catch (IOException io) { + System.out.println(io.getMessage()); + } + + } + + //----------------------------------------------- Zeigerbewegungen -------------------------------------------------- + /** + * liefert ein XML-Objekt, das auf den Vaterknoten des aktuellen Elements zeigt. + * @return Vater des aktuellen Objekts. + */ + public XML getParent() { + if(current != null) { + Element parent = current.getParentElement(); + if (parent == null) { + return null; + } else { + return new XML(doc, parent); + } + } + return null; + } + + /** + * Überprüft, ob das Element irgendwelche Kinder hat oder nicht, und gibt das Ergebnis als boolean zurück. + * @return true, wenn Kinder vorhanden sind, sonst false + */ + public boolean hasChildren() { + if (current == null) { + return doc.hasRootElement(); + } else { + return current.getChildren().size()>0; + } + } + + /** + * Ermittelt die Namen aller Kinder des Elements und gibt die Namen als ein Array von Strings zurück. + * Dies ist dasselbe wie das Durchlaufen und Aufrufen von getName() auf jedem untergeordneten Element einzeln. + * @return Liste aller Namen der Kinder + */ + public String[] listChildren() { + if (current == null) { + if(doc.hasRootElement()) { + String[] names = new String[0]; + names[0] = doc.getRootElement().getName(); + return names; + } else { + return null; + } + } else { + List ch_element = current.getChildren(); + String[] names = new String[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + names[i] = ch_element.get(i).getName(); + } + return names; + } + } + + /** + * Liefert alle Kinder des Elements als Array von XML-Objekten. + * @return Array der Kinder als XML-Objekte + */ + public XML[] getChildren() { + if (current == null) { + if(doc.hasRootElement()) { + XML[] ch_xml = new XML[1]; + ch_xml[0] = new XML(doc, doc.getRootElement()); + return ch_xml; + } else { + return null; + } + } else { + List ch_element = current.getChildren(); + XML[] ch_xml = new XML[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + ch_xml[i] = new XML(doc, ch_element.get(i)); + } + return ch_xml; + } + } + + /** + * Liefert bestimmte Kinder des Elements als Array von XML-Objekten. + * Die Methode gibt dabei alle Kinder zurück, die dem angegebenen Namen entsprechen. + * @param name Name der gesuchten Kind-Objekte + * @return Array der Kinder als XML-Objekte + */ + public XML[] getChildren(String name) { + if (current == null) { + if(doc.hasRootElement()) { + XML[] ch_xml = new XML[1]; + ch_xml[0] = new XML(doc, doc.getRootElement()); + if(doc.getRootElement().getName().equals(name)){ + return ch_xml; + } else { + return null; + } + } else { + return null; + } + } else { + List ch_element = current.getChildren(name); + XML[] ch_xml = new XML[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + ch_xml[i] = new XML(doc, ch_element.get(i)); + } + return ch_xml; + } + } + + /** + * Liefert das erste Kind des Elements mit einem bestimmten Namen. + * Die Methode gibt das erste Kind zurück, das dem angegebenen Namen entsprechen. + * @param name Name des gesuchten Kind-Objektes + * @return Kind als XML-Objekt + */ + + public XML getChild(String name) { + if (current == null) { + Element e = doc.getRootElement(); + if (e.getName().equals(name)) { + return new XML(doc, e); + } else { + return null; + } + } else { + String[] names = name.split("/"); + Element e = current; + int i = 0; + while(i < names.length) { + e = e.getChild(names[i]); + if (e==null) return null; + i++; + } + return new XML(doc, e); + } + } + + /** + * Liefert das i. Kind des Elements. + * Die Methode gibt das i. Kind des aktuellen Elements zurück. + * @param i Nummer des Kindes + * @return Kind als XML-Objekt + */ + public XML getChild(int i) { + if (current == null) { + return new XML(doc, doc.getRootElement()); + } else { + List ch_element = current.getChildren(); + if (i>=ch_element.size()) return null; + return new XML(doc, ch_element.get(i)); + } + } + + //--------------------------------------------------- Methoden für das aktuelle Element ------------------------------------------------- + /** + * Frage den Namen des aktuellen Elements ab + * @return Namen des Elements + */ + public String getName() { + if (current==null) return ""; + return current.getName(); + } + + /** + * Setze den Namen des aktuellen Elements. + * @param name Neuer Name des Elements + */ + public void setName(String name) { + if (current==null) return; + current.setName(name); + } + + /** + * liefert die Anzahl der Attribute eines Elements. + * @return Anzahl des Attribute + */ + public int getAttributeCount() { + if (current == null) return 0; + return current.getAttributes().size(); + } + + /** + * liefert zurück, ob das aktuelle Element Attribute hat . + * @return true, wenn es Attribute gibt + */ + public boolean hasAttribute() { + if (current == null) return false; + return current.getAttributes().size()>0; + } + + /** + * Ruft alle Attribute des angegebenen Elements ab und gibt sie als Array von Strings zurück. + * @return Liste der Attributnamen + */ + public String[] listAttributes() { + if (current == null) return null; + List attr = current.getAttributes(); + String[] names = new String[attr.size()]; + for(int i=0; i < attr.size() ; i++) { + names[i] = attr.get(i).getName(); + } + return names; + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs + */ + public String getString(String attribute) { + if (current==null) return ""; + return current.getAttributeValue(attribute); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs + */ + public String getString(String attribute, String defaultValue) { + if (current==null) return defaultValue; + return current.getAttributeValue(attribute,defaultValue); + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param text neuer Wert des Attributs + */ + public void setString(String attribute, String text) { + if (current==null) return; + current.setAttribute(attribute, text); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Integer-Zahl + */ + public int getInt(String attribute) { + if (current==null) return 0; + try{ + int i = Integer.parseInt(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als Integer-Zahl + */ + public int getInt(String attribute, int defaultValue) { + if (current==null) return defaultValue; + try{ + int i = Integer.parseInt(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setInt(String attribute, int value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Float-Zahl + */ + public float getFloat(String attribute) { + if (current==null) return 0; + try{ + float i = Float.parseFloat(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als Float-Zahl + */ + public float getFloat(String attribute, float defaultValue) { + if (current==null) return defaultValue; + try{ + float i = Float.parseFloat(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setFloat(String attribute, float value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Double-Zahl + */ + public double getDouble(String attribute) { + if (current==null) return 0; + try{ + double i = Double.parseDouble(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + +/** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als double-Zahl + */ + public double getDouble(String attribute, double defaultValue) { + if (current==null) return defaultValue; + try{ + double i = Double.parseDouble(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setDouble(String attribute, double value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt den Inhalt/Text des aktuellen Elements ab + * @return Inhalt des Elements + */ + public String getContent() { + if ( current==null) return ""; + + return current.getText(); + } + + /** + * Fragt den Inhalt/Text des aktuellen Elements ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardtext + * @return Inhalt des Elements + */ + public String getContent(String defaultValue) { + if ( current==null) return defaultValue; + String t = current.getText(); + if(t.equals("")) t = defaultValue; + return t; + } + + /** + * Setzt den Inhalt/Text des aktuellen Elements + * @param text Neuer Inhalt des Elements + */ + public void setContent(String text) { + if ( current==null) return; + current.setText(text); + } + + + /** + * Fragt den Inhalt des aktuellen Elements als Integerzahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ public int getIntContent(int defaultValue) { + if ( current==null) return defaultValue; + try{ + int i = Integer.parseInt(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Integerzahl ab + * @return Inhalt des Elements + */ + public int getIntContent() { + if ( current==null) return 0; + try{ + int i = Integer.parseInt(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setIntContent(int value) { + if ( current==null) return; + current.setText(""+value); + } + + + /** + * Fragt den Inhalt des aktuellen Elements als Floatzahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ + public float getFloatContent(float defaultValue) { + if ( current==null) return defaultValue; + try{ + float i = Float.parseFloat(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Floatzahl ab + * @return Inhalt des Elements + */ + public float getFloatContent() { + if ( current==null) return 0; + try{ + float i = Float.parseFloat(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setFloatContent(float value) { + if ( current==null) return; + current.setText(""+value); + } + +/** + * Fragt den Inhalt des aktuellen Elements als Doublezahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ + public double getDoubleContent(double defaultValue) { + if ( current==null) return defaultValue; + try{ + double i = Double.parseDouble(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Doublezahl ab + * @return Inhalt des Elements + */ + public double getDoubleContent() { + if ( current==null) return 0; + try{ + double i = Double.parseDouble(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setDoubleContent(double value) { + if ( current==null) return; + current.setText(""+value); + } + + + // ----------------------------------------------- XML-Struktur aufbauen ------------------------------------------------ + /** Erzeuge neues Element nach der aktuellen Position und setze dieses als aktuelles Element + * @param name Name des neuen Elements + * @return neues Element als XML-Objekt + */ + public XML addChild(String name) { + Element e = new Element(name); + if(current == null){ // man ist auf Root-Ebene + doc.setRootElement(e); + + } + else { + current.addContent(e); + } // end of if-else + return new XML(doc, e); + } + + /** + * liefert das aktuelle Element als jdom-Element-Objekt + * @return aktuelles Element + */ + private Element getCurrent() { + return current; + } + + /** + * löscht ein Kind des aktuellen Knotens. + * Ist kid kein Kind des aktuellen Elements passiert gar nichts. + * @param kid XML-Objekt des Kindes + */ + public void removeChild(XML kid) { + if (current == null) return; + Element e = kid.getCurrent(); + int index = current.indexOf(e); + if(index >= 0) { current.removeContent(e);} + } + +} diff --git a/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a1/XYDiagramm.java b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a1/XYDiagramm.java new file mode 100644 index 0000000..207c562 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a1/XYDiagramm.java @@ -0,0 +1,117 @@ +import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot und MouseInfo) +import java.awt.Font; + + +/** + * XY-Diagramm für Schalldruckpegel, Zahlen werden aus CSV-Datei gelesen. + * + * @author Schaller + * @version 29.11.18 + */ +public class XYDiagramm extends PictureViewer + +{ + // Liste mit allen Werten + double[] x_werte; + double[] y_werte; + + // Hilfsvariablen für die Suche + int akt_maximum=-1; // aktuell groesstes Element + int akt=-1; // aktuell untersuchtes Element + int verzoegerung=0; // Geschwindigkeit der Ausführung + + // Schriften + Font kleineSchrift; + Font grosseSchrift; + + public XYDiagramm() { + size(1000, 700); + background(0); + kleineSchrift = new Font( Font.SANS_SERIF, Font.PLAIN, 12 ); + grosseSchrift = new Font( Font.SANS_SERIF, Font.PLAIN, 20 ); + + // CSV-Datei laden und anzeigen + ladeTabelle("Amplitudes.csv"); + stroke(250,250,200); + zeichneBalken(); + } + + public void ladeTabelle(String name) { + // Tabelle aus CSV-Datei laden + Table csv = new Table(name, "header",',','"'); + + if (csv != null && csv.getColumnCount()==2) { + + // Initialisiere Arrays, in die alle Zeilen der Tabelle passen + x_werte = new double[csv.getRowCount()]; + y_werte = new double[csv.getRowCount()]; + + // Fülle die Arrays mit Werten aus der Tabelle + for (int i = 0; i < 40; i++) { //x_werte.length; i++) { + // Lies Wert aus der i. Zeile und der Spalte "Punkte" bzw. "Name" + x_werte[i] = csv.getDouble(i, "Zeit"); + y_werte[i] = csv.getDouble(i, "Laerm"); + } + } + } + + public void zeichneBalken() { + + // Überschrift + fill(255,255,255); + textFont(grosseSchrift); + text("Lärmpegel", 2, 20); + textFont(kleineSchrift); + + // Alle Einträge darstellen + if (x_werte != null) { + for (int i = 0; i< 40; i++) { + + fill(20,25,165); + // aktuelle Elemente farblich hervorheben + if (i == akt) { + fill(140,230,20); + } + if (i == akt_maximum) { + fill(230,60,140); + } + + // Balkendiagramm zeichnen + int breite = (int) y_werte[i]; + if (breite>=0) rect(160, 25+i*15, breite+1, 13); + + // Beschriftung + fill(255,255,255); + text(String.format("%.4f", x_werte[i]), 2, 35+i*15); + text(String.format("%.4f", y_werte[i]), 70, 35+i*15); + + } + } + } + + public int sucheMaximum(int[] zahlen) { + // Sind überhaupt Daten da? + if(zahlen.length==0 ) { //<>// + return -1; + } + + // Startwerte setzen + akt_maximum = 0; + akt = 1; + + // Alle Arrayelemente untersuchen + while (akt < zahlen.length) { + + // Neues größtes Element?? + if (zahlen[akt]> zahlen[akt_maximum]) { + // Dann merke dir das neue + akt_maximum = akt; + + } + akt = akt + 1; + } + // Gib Position des größten Elements zurück + return akt_maximum; + } + +} diff --git a/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a1/images/balken.png b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a1/images/balken.png new file mode 100644 index 0000000..9ff1ffc Binary files /dev/null and b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a1/images/balken.png differ diff --git a/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a1/images/bilderrahmen.png b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a1/images/bilderrahmen.png new file mode 100644 index 0000000..7f34e32 Binary files /dev/null and b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a1/images/bilderrahmen.png differ diff --git a/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a1/images/xydiagramm.png b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a1/images/xydiagramm.png new file mode 100644 index 0000000..a13fc89 Binary files /dev/null and b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a1/images/xydiagramm.png differ diff --git a/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a1/jdom-1.1.3.jar b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a1/jdom-1.1.3.jar new file mode 100644 index 0000000..a287727 Binary files /dev/null and b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a1/jdom-1.1.3.jar differ diff --git a/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a1/project.greenfoot b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a1/project.greenfoot new file mode 100644 index 0000000..e47cc83 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a1/project.greenfoot @@ -0,0 +1,93 @@ +#Greenfoot project file +class.PictureViewer.image=bilderrahmen.png +class.XYDiagramm.image=xydiagramm.png +dependency1.from=MyWorld +dependency1.to=XYDiagramm +dependency1.type=UsesDependency +dependency2.from=PictureViewer +dependency2.to=Picture +dependency2.type=UsesDependency +dependency3.from=XYDiagramm +dependency3.to=Table +dependency3.type=UsesDependency +dependency4.from=Table +dependency4.to=TableRow +dependency4.type=UsesDependency +dependency5.from=Picture +dependency5.to=PictureViewer +dependency5.type=UsesDependency +editor.fx.0.height=739 +editor.fx.0.width=816 +editor.fx.0.x=552 +editor.fx.0.y=100 +height=885 +package.numDependencies=5 +package.numTargets=7 +project.charset=UTF-8 +publish.hasSource=false +publish.locked=true +publish.longDesc= +publish.shortDesc= +publish.tags= +publish.title= +publish.url= +readme.height=58 +readme.name=@README +readme.width=47 +readme.x=10 +readme.y=10 +simulation.speed=97 +target1.height=50 +target1.name=PictureViewer +target1.showInterface=false +target1.type=ClassTarget +target1.width=100 +target1.x=0 +target1.y=0 +target2.height=50 +target2.name=Table +target2.showInterface=false +target2.type=ClassTarget +target2.width=80 +target2.x=0 +target2.y=0 +target3.height=50 +target3.name=XYDiagramm +target3.showInterface=false +target3.type=ClassTarget +target3.width=90 +target3.x=0 +target3.y=0 +target4.height=50 +target4.name=Picture +target4.showInterface=true +target4.type=ClassTarget +target4.width=80 +target4.x=0 +target4.y=0 +target5.height=50 +target5.name=XML +target5.showInterface=false +target5.type=ClassTarget +target5.width=100 +target5.x=0 +target5.y=0 +target6.height=50 +target6.name=TableRow +target6.showInterface=false +target6.type=ClassTarget +target6.width=80 +target6.x=0 +target6.y=0 +target7.height=50 +target7.name=MyWorld +target7.showInterface=false +target7.type=ClassTarget +target7.width=80 +target7.x=0 +target7.y=0 +version=3.0.0 +width=1350 +world.lastInstantiated=MyWorld +xPosition=529 +yPosition=98 diff --git a/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a1/punkte.csv b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a1/punkte.csv new file mode 100644 index 0000000..d6e8dfd --- /dev/null +++ b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a1/punkte.csv @@ -0,0 +1,6 @@ +"Name","Punkte" +Niko,216 +Klaus,591 +Anna,857 +Lena,180 +Winfried,168 diff --git a/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a2/Amplitudes.csv b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a2/Amplitudes.csv new file mode 100644 index 0000000..6a3b121 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a2/Amplitudes.csv @@ -0,0 +1,12219 @@ +"Zeit","Laerm" +0.000000000E0,6.133205686E1 +1.130000000E-1,5.602431153E1 +3.840000000E-1,3.897519867E1 +7.780000000E-1,4.208195145E1 +1.036000000E0,3.840936313E1 +1.305000000E0,3.561092139E1 +1.587000000E0,4.663257633E1 +1.829000000E0,5.311883882E1 +2.084000000E0,5.299431820E1 +2.357000000E0,5.747397858E1 +2.643000000E0,5.626338063E1 +2.949000000E0,5.790811120E1 +3.238000000E0,5.874544026E1 +3.497000000E0,5.736162139E1 +3.775000000E0,5.897817442E1 +4.097000000E0,5.789822970E1 +4.357000000E0,5.312015799E1 +4.626000000E0,5.710192134E1 +4.941000000E0,6.275087240E1 +5.235000000E0,5.784358767E1 +5.535000000E0,5.388577420E1 +5.827000000E0,5.403495101E1 +6.090000000E0,5.428355086E1 +6.339000000E0,6.064473144E1 +6.616000000E0,6.271091291E1 +6.850000000E0,6.982615367E1 +7.128000000E0,7.050308750E1 +7.487000000E0,5.395311298E1 +7.760000000E0,5.036401582E1 +8.065000000E0,4.614125463E1 +8.361000000E0,6.244776407E1 +8.614000000E0,6.315719526E1 +8.862000000E0,5.981740395E1 +9.123000000E0,5.907292535E1 +9.374000000E0,5.661523092E1 +9.665000000E0,6.210368813E1 +9.948000000E0,6.140958115E1 +1.021100000E1,5.697007655E1 +1.058300000E1,5.460455934E1 +1.084000000E1,5.408516231E1 +1.115300000E1,5.907221377E1 +1.142100000E1,6.113412429E1 +1.172700000E1,6.267949704E1 +1.197100000E1,6.245109870E1 +1.226500000E1,6.342534529E1 +1.255800000E1,6.810008108E1 +1.287100000E1,6.036891848E1 +1.313400000E1,5.913231814E1 +1.342700000E1,5.973818566E1 +1.371600000E1,5.534371651E1 +1.401200000E1,5.694514867E1 +1.431200000E1,6.134814982E1 +1.461100000E1,5.900023912E1 +1.484600000E1,5.689908400E1 +1.515800000E1,5.296474858E1 +1.544000000E1,5.608528071E1 +1.569300000E1,5.728560404E1 +1.596900000E1,5.837984103E1 +1.620100000E1,5.718896638E1 +1.649200000E1,5.909973037E1 +1.678900000E1,5.705554272E1 +1.716300000E1,6.079937758E1 +1.747400000E1,5.618116117E1 +1.775200000E1,5.519881157E1 +1.803800000E1,5.402386340E1 +1.829100000E1,5.678484358E1 +1.858100000E1,5.954639303E1 +1.882300000E1,6.030021638E1 +1.908000000E1,5.588340744E1 +1.934400000E1,5.668691200E1 +1.958800000E1,6.042765467E1 +1.983400000E1,5.839794223E1 +2.008500000E1,5.457976882E1 +2.039500000E1,5.974390604E1 +2.064000000E1,6.049774386E1 +2.092900000E1,6.029857781E1 +2.117800000E1,6.116406203E1 +2.142700000E1,5.664722837E1 +2.173400000E1,5.823294996E1 +2.203100000E1,5.517538657E1 +2.229000000E1,5.322823206E1 +2.259900000E1,6.180779467E1 +2.285300000E1,6.106216386E1 +2.314900000E1,5.883321877E1 +2.347100000E1,6.045262422E1 +2.375000000E1,6.163931220E1 +2.406000000E1,4.841181734E1 +2.432800000E1,4.372149986E1 +2.462900000E1,5.625563946E1 +2.487100000E1,5.672759349E1 +2.513200000E1,5.896193725E1 +2.540800000E1,5.893011728E1 +2.566400000E1,5.857261268E1 +2.596700000E1,5.859012974E1 +2.621900000E1,5.635586832E1 +2.648700000E1,5.350948293E1 +2.673900000E1,5.430043092E1 +2.701400000E1,5.666610976E1 +2.727500000E1,5.218421407E1 +2.753100000E1,5.689076583E1 +2.782000000E1,5.796831886E1 +2.806900000E1,5.608205064E1 +2.831700000E1,5.482273815E1 +2.861600000E1,5.392425499E1 +2.888300000E1,5.329416010E1 +2.914800000E1,5.366916703E1 +2.940200000E1,5.280847155E1 +2.968000000E1,5.333298066E1 +2.994300000E1,5.497085471E1 +3.031200000E1,5.753094076E1 +3.057900000E1,5.655381974E1 +3.086100000E1,5.517704804E1 +3.115600000E1,5.592585858E1 +3.140700000E1,6.212826207E1 +3.166000000E1,5.699502474E1 +3.193500000E1,6.025129057E1 +3.223100000E1,5.686166208E1 +3.247300000E1,5.807641915E1 +3.271900000E1,6.065155151E1 +3.296400000E1,5.961384387E1 +3.320500000E1,6.119064420E1 +3.354400000E1,5.548464633E1 +3.378000000E1,5.699661616E1 +3.408000000E1,5.653770482E1 +3.438000000E1,5.083503664E1 +3.468200000E1,5.695639918E1 +3.495800000E1,5.566535489E1 +3.524700000E1,5.914853092E1 +3.552700000E1,5.758441289E1 +3.576600000E1,6.085665801E1 +3.606700000E1,5.862586334E1 +3.630600000E1,5.096841655E1 +3.662200000E1,6.009246966E1 +3.689400000E1,5.981749726E1 +3.715300000E1,6.108830629E1 +3.740300000E1,5.724514841E1 +3.766500000E1,5.934850613E1 +3.793000000E1,5.725470328E1 +3.819100000E1,5.843556167E1 +3.847700000E1,5.697759761E1 +3.874000000E1,5.721548979E1 +3.901600000E1,5.649629904E1 +3.927200000E1,5.850326911E1 +3.954600000E1,5.691951660E1 +3.993900000E1,5.357092442E1 +4.023400000E1,5.817046878E1 +4.053000000E1,5.554327077E1 +4.081200000E1,5.802928061E1 +4.103900000E1,5.663899845E1 +4.128700000E1,5.494654466E1 +4.155800000E1,5.564956216E1 +4.181900000E1,5.663250304E1 +4.211300000E1,5.652236278E1 +4.238100000E1,5.614203459E1 +4.264000000E1,5.433145844E1 +4.295000000E1,6.132645299E1 +4.326200000E1,6.040612545E1 +4.351400000E1,5.905916902E1 +4.377100000E1,5.885516023E1 +4.401000000E1,5.514814582E1 +4.430800000E1,5.663232510E1 +4.455900000E1,5.055807811E1 +4.482100000E1,5.614950318E1 +4.513300000E1,6.025044420E1 +4.537500000E1,5.643182261E1 +4.568900000E1,5.709089314E1 +4.600500000E1,5.480136123E1 +4.624500000E1,5.924046686E1 +4.656900000E1,6.172358505E1 +4.684100000E1,5.645515217E1 +4.711100000E1,6.002156043E1 +4.736300000E1,6.182669975E1 +4.759700000E1,5.557741963E1 +4.786700000E1,5.598662295E1 +4.818300000E1,5.664767890E1 +4.847900000E1,5.956168629E1 +4.874200000E1,5.713315811E1 +4.898900000E1,5.765479272E1 +4.931400000E1,5.507101982E1 +4.961600000E1,5.361677606E1 +4.990000000E1,5.558547080E1 +5.019600000E1,5.402951441E1 +5.046500000E1,5.805429700E1 +5.078800000E1,5.327636151E1 +5.110300000E1,4.980825483E1 +5.137100000E1,5.290981249E1 +5.165200000E1,4.817864123E1 +5.190100000E1,5.585478693E1 +5.214500000E1,5.457392293E1 +5.242900000E1,5.449921652E1 +5.272500000E1,5.537781025E1 +5.302100000E1,5.598018287E1 +5.326000000E1,5.612851081E1 +5.355800000E1,5.312697891E1 +5.384800000E1,5.799703575E1 +5.409200000E1,5.662162553E1 +5.433900000E1,5.392344795E1 +5.459100000E1,5.398098819E1 +5.494900000E1,5.489231889E1 +5.527100000E1,5.658153835E1 +5.552800000E1,5.624900056E1 +5.589500000E1,4.979935744E1 +5.616900000E1,5.146998424E1 +5.645400000E1,5.878755245E1 +5.668600000E1,5.846227673E1 +5.694400000E1,5.977267383E1 +5.726200000E1,5.508647523E1 +5.754400000E1,5.138853207E1 +5.784300000E1,5.327451232E1 +5.808600000E1,5.887142781E1 +5.837800000E1,5.858062431E1 +5.862200000E1,5.917458096E1 +5.889700000E1,6.050411670E1 +5.926300000E1,5.908687144E1 +5.952100000E1,5.570790758E1 +5.981900000E1,5.444849000E1 +6.006100000E1,5.201240285E1 +6.032000000E1,4.755830762E1 +6.061900000E1,5.204388424E1 +6.086500000E1,5.626914911E1 +6.117500000E1,5.280379974E1 +6.142900000E1,5.093923019E1 +6.173000000E1,5.460427137E1 +6.197800000E1,5.299601182E1 +6.230600000E1,5.424208739E1 +6.257600000E1,5.253762352E1 +6.283700000E1,5.544043962E1 +6.309800000E1,5.527614156E1 +6.335400000E1,5.747262922E1 +6.360700000E1,5.468151445E1 +6.384900000E1,5.582905565E1 +6.410700000E1,5.802400474E1 +6.435000000E1,5.204893636E1 +6.459600000E1,5.280146425E1 +6.486300000E1,4.876648093E1 +6.509700000E1,5.311679703E1 +6.537500000E1,5.192778643E1 +6.571400000E1,5.346709918E1 +6.597900000E1,5.370921552E1 +6.627900000E1,5.676705279E1 +6.652200000E1,5.832258643E1 +6.676600000E1,6.257736406E1 +6.703100000E1,6.295448429E1 +6.737800000E1,6.100964383E1 +6.766100000E1,5.182636016E1 +6.790700000E1,4.952717893E1 +6.821100000E1,5.667475715E1 +6.850300000E1,5.872819054E1 +6.882100000E1,6.004516195E1 +6.907300000E1,5.559244143E1 +6.935100000E1,5.600379936E1 +6.961500000E1,5.338006499E1 +6.987600000E1,5.360104859E1 +7.011900000E1,4.644905289E1 +7.037100000E1,4.528909123E1 +7.067200000E1,5.787885076E1 +7.091600000E1,5.602551032E1 +7.115700000E1,5.989544193E1 +7.142200000E1,6.110384869E1 +7.167900000E1,5.887448069E1 +7.192600000E1,5.797896456E1 +7.226000000E1,5.965665129E1 +7.251000000E1,6.477744226E1 +7.281200000E1,6.243775536E1 +7.310800000E1,5.921576979E1 +7.335600000E1,6.629420582E1 +7.364100000E1,6.683725429E1 +7.392300000E1,5.758295449E1 +7.418800000E1,5.654909286E1 +7.448600000E1,5.881341247E1 +7.472100000E1,5.546609910E1 +7.498300000E1,5.586542777E1 +7.526600000E1,5.463216262E1 +7.558500000E1,5.947397496E1 +7.586200000E1,6.218459899E1 +7.609800000E1,6.134189272E1 +7.635800000E1,5.727526170E1 +7.666700000E1,5.579062978E1 +7.699300000E1,6.015063828E1 +7.729000000E1,6.022787424E1 +7.756300000E1,5.646982462E1 +7.782200000E1,6.005734442E1 +7.813200000E1,5.950776839E1 +7.842200000E1,6.314009710E1 +7.880400000E1,5.425753266E1 +7.910400000E1,5.909139002E1 +7.935300000E1,5.600377253E1 +7.962300000E1,6.036368528E1 +7.993700000E1,5.940415340E1 +8.018900000E1,6.102152187E1 +8.050000000E1,6.619104713E1 +8.074000000E1,6.149981675E1 +8.098900000E1,5.978899259E1 +8.123800000E1,5.963150500E1 +8.150300000E1,6.509054947E1 +8.181300000E1,6.387458039E1 +8.220700000E1,6.421798778E1 +8.246100000E1,6.092500605E1 +8.271900000E1,6.039313205E1 +8.297100000E1,5.885189543E1 +8.328000000E1,6.068901175E1 +8.355600000E1,6.531581124E1 +8.381900000E1,6.460984287E1 +8.407800000E1,6.281147078E1 +8.435000000E1,5.961599483E1 +8.463400000E1,5.915457491E1 +8.489200000E1,5.383227231E1 +8.513000000E1,5.278474817E1 +8.551100000E1,6.165964712E1 +8.574900000E1,6.442604107E1 +8.600700000E1,6.551005247E1 +8.626000000E1,6.660338206E1 +8.650900000E1,6.304014634E1 +8.676000000E1,6.488065719E1 +8.701800000E1,6.416881833E1 +8.728000000E1,5.892166498E1 +8.754500000E1,5.946249393E1 +8.785000000E1,6.506678358E1 +8.809400000E1,5.703264442E1 +8.840500000E1,6.164086486E1 +8.876300000E1,6.276173959E1 +8.906100000E1,5.818071871E1 +8.930500000E1,5.844394446E1 +8.956300000E1,5.657440647E1 +8.987400000E1,6.120356137E1 +9.011500000E1,6.094306560E1 +9.041100000E1,5.978472131E1 +9.065500000E1,6.008128664E1 +9.092400000E1,5.758286780E1 +9.123300000E1,5.353387594E1 +9.151600000E1,5.676204998E1 +9.183800000E1,5.245702159E1 +9.218200000E1,5.642589170E1 +9.243600000E1,5.542467479E1 +9.268000000E1,5.580829615E1 +9.297600000E1,5.148061441E1 +9.322800000E1,4.635974806E1 +9.353200000E1,5.465579762E1 +9.377300000E1,5.154999739E1 +9.402200000E1,5.544992474E1 +9.427900000E1,5.302390200E1 +9.453300000E1,5.127982623E1 +9.478800000E1,5.263086656E1 +9.503100000E1,5.128121484E1 +9.532100000E1,5.061466876E1 +9.557700000E1,5.328260476E1 +9.582800000E1,5.101663724E1 +9.607100000E1,5.400893265E1 +9.640400000E1,5.756552061E1 +9.665500000E1,5.665487755E1 +9.690400000E1,5.719000980E1 +9.715400000E1,5.593995548E1 +9.740400000E1,5.420194495E1 +9.771300000E1,4.867232074E1 +9.802100000E1,5.053798103E1 +9.830700000E1,4.874294948E1 +9.857500000E1,5.754515654E1 +9.883700000E1,5.863618568E1 +9.909700000E1,6.070195076E1 +9.935300000E1,5.434874196E1 +9.961300000E1,6.163600431E1 +9.987300000E1,5.555228218E1 +1.001200000E2,5.733850418E1 +1.003910000E2,6.133233800E1 +1.006620000E2,5.853313440E1 +1.009020000E2,5.435835494E1 +1.011680000E2,5.329891948E1 +1.014680000E2,5.356470018E1 +1.018410000E2,5.574288130E1 +1.021370000E2,5.927571979E1 +1.024000000E2,5.789956910E1 +1.026980000E2,6.081738139E1 +1.029540000E2,5.575615853E1 +1.032580000E2,5.337382111E1 +1.035140000E2,5.562761746E1 +1.038150000E2,5.905624776E1 +1.041040000E2,5.696105750E1 +1.043990000E2,6.170938149E1 +1.046370000E2,5.823687000E1 +1.049080000E2,6.066674703E1 +1.051740000E2,6.220969933E1 +1.054810000E2,5.755805236E1 +1.057660000E2,5.735691579E1 +1.060450000E2,5.761618087E1 +1.063040000E2,5.188413372E1 +1.065680000E2,5.643639822E1 +1.068740000E2,5.312430876E1 +1.071280000E2,5.924995828E1 +1.073900000E2,5.546187342E1 +1.076920000E2,5.474389270E1 +1.079790000E2,5.600814816E1 +1.082440000E2,5.561453096E1 +1.084980000E2,5.408559240E1 +1.087580000E2,5.622058302E1 +1.090160000E2,5.768852773E1 +1.092670000E2,5.516804842E1 +1.095340000E2,5.973626648E1 +1.098120000E2,6.403409511E1 +1.100690000E2,6.035201036E1 +1.103490000E2,5.940482770E1 +1.105950000E2,5.932126109E1 +1.108600000E2,5.859387697E1 +1.111460000E2,5.929800416E1 +1.114110000E2,5.930503134E1 +1.117890000E2,6.170536210E1 +1.120410000E2,6.214563711E1 +1.123490000E2,5.810151097E1 +1.126320000E2,5.823719807E1 +1.128910000E2,6.454485320E1 +1.131870000E2,6.755031626E1 +1.134560000E2,6.410743881E1 +1.137200000E2,5.913442857E1 +1.139870000E2,6.382823805E1 +1.142400000E2,5.859239523E1 +1.145180000E2,5.135859796E1 +1.147890000E2,5.294563188E1 +1.151440000E2,5.357868048E1 +1.154220000E2,5.561359505E1 +1.156620000E2,5.645675088E1 +1.159670000E2,5.879425595E1 +1.162610000E2,5.918610512E1 +1.164990000E2,6.083658676E1 +1.167470000E2,5.526645697E1 +1.169880000E2,5.471312988E1 +1.172910000E2,6.211796732E1 +1.175510000E2,5.417468648E1 +1.177930000E2,5.576739557E1 +1.180750000E2,5.912472365E1 +1.184660000E2,5.718213173E1 +1.187710000E2,5.747081312E1 +1.190170000E2,5.741742618E1 +1.192690000E2,5.379557814E1 +1.195330000E2,5.428733520E1 +1.197780000E2,6.177329402E1 +1.200450000E2,5.672333166E1 +1.203170000E2,5.584947723E1 +1.205670000E2,5.382665718E1 +1.208400000E2,5.443690083E1 +1.211280000E2,5.221565874E1 +1.214800000E2,5.516249741E1 +1.217540000E2,5.676279334E1 +1.220050000E2,5.303796336E1 +1.222680000E2,5.258840561E1 +1.225120000E2,5.671935607E1 +1.227660000E2,4.902892756E1 +1.230240000E2,4.264962220E1 +1.232830000E2,4.818154680E1 +1.235340000E2,5.204058636E1 +1.238430000E2,5.649936271E1 +1.241410000E2,5.396154490E1 +1.244200000E2,5.428877275E1 +1.246760000E2,4.778715710E1 +1.249500000E2,4.912370762E1 +1.252110000E2,5.114426735E1 +1.255020000E2,5.345096378E1 +1.257410000E2,5.581149074E1 +1.260430000E2,5.211774829E1 +1.263320000E2,5.470047014E1 +1.265660000E2,5.399085344E1 +1.268600000E2,5.981732528E1 +1.271210000E2,5.944116770E1 +1.273530000E2,5.668281238E1 +1.275970000E2,5.042419391E1 +1.279080000E2,5.014554177E1 +1.282260000E2,5.350461413E1 +1.285240000E2,5.453533258E1 +1.287780000E2,5.809919663E1 +1.290280000E2,5.729580956E1 +1.292980000E2,5.681749266E1 +1.296010000E2,5.542882864E1 +1.298980000E2,5.612046892E1 +1.302070000E2,6.074750886E1 +1.304620000E2,5.979349108E1 +1.307520000E2,5.806574219E1 +1.310590000E2,5.738881777E1 +1.314010000E2,5.595280312E1 +1.316630000E2,5.401154636E1 +1.319120000E2,5.499471091E1 +1.321620000E2,5.551354327E1 +1.324640000E2,6.567912108E1 +1.327650000E2,5.725129100E1 +1.330150000E2,6.452906176E1 +1.333160000E2,5.778565576E1 +1.335760000E2,6.242194617E1 +1.338200000E2,5.570863747E1 +1.340710000E2,5.755877138E1 +1.343660000E2,6.819206156E1 +1.346260000E2,6.094769164E1 +1.349310000E2,6.447198163E1 +1.351810000E2,5.482297950E1 +1.354630000E2,6.327012623E1 +1.357210000E2,5.723157337E1 +1.359770000E2,5.835004111E1 +1.362140000E2,6.413045068E1 +1.365290000E2,6.022343539E1 +1.368110000E2,5.969265006E1 +1.371070000E2,5.589766444E1 +1.373670000E2,6.089100679E1 +1.376970000E2,6.762783521E1 +1.379410000E2,5.740809854E1 +1.381870000E2,6.711182247E1 +1.384650000E2,6.290175574E1 +1.387060000E2,6.352322572E1 +1.390400000E2,5.897504025E1 +1.392980000E2,5.872568346E1 +1.396520000E2,5.582882684E1 +1.399140000E2,5.874428562E1 +1.402160000E2,5.275369064E1 +1.404650000E2,5.181123336E1 +1.407250000E2,4.758951485E1 +1.410550000E2,4.601470876E1 +1.413500000E2,5.203790008E1 +1.416310000E2,5.380793436E1 +1.418780000E2,5.006781735E1 +1.421580000E2,4.792469964E1 +1.424020000E2,5.136650820E1 +1.427060000E2,5.127969468E1 +1.430200000E2,5.304643312E1 +1.433210000E2,5.218299100E1 +1.436050000E2,5.568762266E1 +1.439010000E2,5.522696018E1 +1.442570000E2,5.919224289E1 +1.445880000E2,6.201398016E1 +1.448680000E2,5.750742223E1 +1.451160000E2,5.811963790E1 +1.454090000E2,5.695462128E1 +1.456560000E2,5.854812337E1 +1.458980000E2,5.886107911E1 +1.461720000E2,5.454171305E1 +1.464480000E2,5.674410925E1 +1.466770000E2,5.450912101E1 +1.469270000E2,5.953864028E1 +1.471790000E2,6.097527460E1 +1.475260000E2,5.825769450E1 +1.478290000E2,5.780473579E1 +1.480790000E2,6.185542851E1 +1.483350000E2,5.390929394E1 +1.486330000E2,5.400087479E1 +1.488750000E2,5.328656685E1 +1.491190000E2,5.599536596E1 +1.494200000E2,5.721648542E1 +1.497150000E2,5.787493165E1 +1.500380000E2,5.480047158E1 +1.503480000E2,5.002404450E1 +1.506590000E2,5.486151348E1 +1.509700000E2,6.245235750E1 +1.512360000E2,5.831236552E1 +1.514820000E2,6.253825815E1 +1.517260000E2,6.440134635E1 +1.520120000E2,5.646251942E1 +1.523080000E2,5.569851104E1 +1.525630000E2,5.574195002E1 +1.528610000E2,6.073633455E1 +1.531220000E2,5.704364811E1 +1.533960000E2,5.858521931E1 +1.536900000E2,6.334346239E1 +1.540080000E2,5.734505299E1 +1.542490000E2,6.522555977E1 +1.544980000E2,5.500712815E1 +1.547420000E2,5.698741268E1 +1.549830000E2,5.097374633E1 +1.552760000E2,5.421781291E1 +1.555100000E2,5.276919678E1 +1.558070000E2,5.444895965E1 +1.560410000E2,5.023818561E1 +1.563440000E2,5.460917302E1 +1.565880000E2,5.459938847E1 +1.568920000E2,5.843131092E1 +1.572210000E2,5.876667307E1 +1.574850000E2,5.735202828E1 +1.577300000E2,5.496399564E1 +1.580290000E2,5.249359356E1 +1.582920000E2,5.216967072E1 +1.585400000E2,5.506360532E1 +1.588040000E2,4.854470136E1 +1.590480000E2,5.455647594E1 +1.593040000E2,5.480802962E1 +1.595560000E2,5.117555202E1 +1.598230000E2,5.525001141E1 +1.600680000E2,6.028739680E1 +1.604080000E2,6.051466285E1 +1.606910000E2,5.941686107E1 +1.609450000E2,6.263789003E1 +1.611920000E2,5.862463866E1 +1.614980000E2,5.858673558E1 +1.617730000E2,5.766546261E1 +1.620210000E2,5.485521148E1 +1.623080000E2,5.814732367E1 +1.625850000E2,5.829863647E1 +1.628370000E2,5.473457172E1 +1.631510000E2,5.323729241E1 +1.634320000E2,5.795543593E1 +1.637670000E2,5.845831909E1 +1.640670000E2,5.883503284E1 +1.643040000E2,5.933733684E1 +1.645990000E2,5.316483696E1 +1.648620000E2,5.628275472E1 +1.651110000E2,5.612764782E1 +1.654290000E2,5.739409022E1 +1.657290000E2,5.275374209E1 +1.660100000E2,5.606330732E1 +1.662350000E2,4.973765069E1 +1.664840000E2,4.855931683E1 +1.667820000E2,4.830487304E1 +1.670210000E2,5.643349546E1 +1.672820000E2,5.752246312E1 +1.675830000E2,5.576545129E1 +1.678330000E2,5.583582770E1 +1.681390000E2,5.301617697E1 +1.684460000E2,5.088408561E1 +1.686990000E2,5.149775091E1 +1.690030000E2,6.019099852E1 +1.692410000E2,6.143998752E1 +1.695380000E2,6.183098470E1 +1.697780000E2,5.964256200E1 +1.701420000E2,5.648358262E1 +1.703870000E2,5.768033788E1 +1.706360000E2,5.037521789E1 +1.709530000E2,5.268785935E1 +1.712030000E2,5.850048969E1 +1.714650000E2,5.537813713E1 +1.717710000E2,5.989062491E1 +1.720770000E2,6.371629733E1 +1.723380000E2,5.413135778E1 +1.726060000E2,5.582389161E1 +1.729040000E2,6.344770094E1 +1.731770000E2,6.038125570E1 +1.735090000E2,5.229655017E1 +1.737830000E2,5.594074665E1 +1.740430000E2,6.258802116E1 +1.743030000E2,5.773122794E1 +1.745600000E2,5.533899998E1 +1.748290000E2,5.069657364E1 +1.750850000E2,6.285550191E1 +1.753480000E2,5.470504416E1 +1.756240000E2,5.746379759E1 +1.758870000E2,5.928233462E1 +1.761350000E2,5.214791610E1 +1.763840000E2,5.260177806E1 +1.767030000E2,4.844041050E1 +1.769490000E2,5.275717684E1 +1.772330000E2,5.436891746E1 +1.774780000E2,5.441421810E1 +1.777590000E2,5.485847839E1 +1.780320000E2,5.714239097E1 +1.782910000E2,6.028837304E1 +1.785470000E2,5.706420775E1 +1.788380000E2,5.509582512E1 +1.791200000E2,5.674185072E1 +1.794340000E2,5.437491314E1 +1.796940000E2,5.696592309E1 +1.799990000E2,5.344092263E1 +1.802540000E2,5.414345246E1 +1.804960000E2,5.421992498E1 +1.808400000E2,5.317024536E1 +1.811450000E2,5.422714635E1 +1.814530000E2,5.933207779E1 +1.817720000E2,5.916706050E1 +1.820730000E2,5.685980261E1 +1.824210000E2,5.521649456E1 +1.826850000E2,5.651993888E1 +1.829810000E2,5.707596711E1 +1.832810000E2,5.464130538E1 +1.836160000E2,5.364065008E1 +1.838600000E2,5.913078622E1 +1.841080000E2,5.695541400E1 +1.843520000E2,6.237274690E1 +1.846510000E2,6.017101966E1 +1.848950000E2,5.670915019E1 +1.851380000E2,5.651470649E1 +1.854400000E2,5.919691857E1 +1.857560000E2,5.752836475E1 +1.860680000E2,6.133052078E1 +1.863670000E2,6.001801442E1 +1.866740000E2,5.871186574E1 +1.869510000E2,5.858669373E1 +1.872240000E2,5.722343490E1 +1.875200000E2,5.725198568E1 +1.877700000E2,5.560524182E1 +1.880340000E2,5.419540118E1 +1.882980000E2,6.169219144E1 +1.885790000E2,5.704261604E1 +1.888700000E2,5.651125138E1 +1.891060000E2,5.778536485E1 +1.894110000E2,5.304160496E1 +1.896990000E2,5.105254388E1 +1.900460000E2,5.338626279E1 +1.902980000E2,5.090929652E1 +1.905360000E2,5.235399183E1 +1.907970000E2,5.429173243E1 +1.910620000E2,5.376238901E1 +1.913500000E2,6.411203098E1 +1.916020000E2,6.235211697E1 +1.919100000E2,5.719243884E1 +1.922140000E2,5.965550680E1 +1.925010000E2,5.850063986E1 +1.928110000E2,6.013906156E1 +1.930480000E2,5.912633730E1 +1.934000000E2,5.860712099E1 +1.936870000E2,5.944287516E1 +1.939980000E2,5.676076088E1 +1.942520000E2,5.712881871E1 +1.945490000E2,5.515631677E1 +1.948870000E2,5.670925955E1 +1.951320000E2,5.768263389E1 +1.954210000E2,5.735243887E1 +1.957290000E2,5.883798740E1 +1.960030000E2,5.654393164E1 +1.963340000E2,5.345251733E1 +1.966710000E2,5.034487882E1 +1.969060000E2,5.741493139E1 +1.971980000E2,5.877434013E1 +1.974210000E2,5.965387227E1 +1.977200000E2,6.306941384E1 +1.979730000E2,6.004201692E1 +1.982230000E2,6.106500017E1 +1.984800000E2,5.674857861E1 +1.987290000E2,6.020914127E1 +1.990680000E2,6.067289060E1 +1.993460000E2,5.996658083E1 +1.996390000E2,5.676340490E1 +1.999500000E2,5.612304129E1 +2.002130000E2,6.289766509E1 +2.005150000E2,5.720971103E1 +2.008280000E2,5.752136939E1 +2.010940000E2,6.058659890E1 +2.013440000E2,5.618430636E1 +2.016270000E2,6.056271249E1 +2.019400000E2,5.729198827E1 +2.022100000E2,5.793084452E1 +2.025070000E2,5.787194228E1 +2.027910000E2,5.959620014E1 +2.030940000E2,6.012062596E1 +2.033180000E2,6.276377758E1 +2.036210000E2,5.834405857E1 +2.039320000E2,5.545225289E1 +2.042050000E2,5.829439447E1 +2.044730000E2,5.799912649E1 +2.047970000E2,5.444896398E1 +2.050680000E2,5.743866699E1 +2.053150000E2,5.862448994E1 +2.055880000E2,5.778478934E1 +2.058890000E2,5.527981007E1 +2.061620000E2,5.742523507E1 +2.064580000E2,5.472188821E1 +2.067100000E2,6.202721053E1 +2.069630000E2,5.861698013E1 +2.072080000E2,6.294616718E1 +2.074730000E2,6.321186761E1 +2.077380000E2,5.776609523E1 +2.080390000E2,6.061292698E1 +2.083320000E2,5.857532480E1 +2.085870000E2,5.800369352E1 +2.088450000E2,5.977447345E1 +2.091070000E2,5.957010157E1 +2.093520000E2,6.145770306E1 +2.096060000E2,6.176056517E1 +2.098580000E2,6.033519811E1 +2.100970000E2,6.429628489E1 +2.103980000E2,6.215353584E1 +2.106470000E2,6.299048914E1 +2.109300000E2,6.133544133E1 +2.112010000E2,5.397487394E1 +2.114250000E2,5.313920655E1 +2.116740000E2,5.552710709E1 +2.119140000E2,5.692289703E1 +2.121730000E2,5.618691953E1 +2.124220000E2,5.402804715E1 +2.127170000E2,5.390450402E1 +2.129570000E2,5.652515030E1 +2.132580000E2,5.490504921E1 +2.135120000E2,5.485761082E1 +2.137850000E2,6.486277416E1 +2.140520000E2,6.121826472E1 +2.143580000E2,6.355465948E1 +2.146390000E2,5.534291145E1 +2.148790000E2,6.610858745E1 +2.151670000E2,5.617739728E1 +2.154670000E2,5.426651762E1 +2.157300000E2,5.840247716E1 +2.160830000E2,5.257749691E1 +2.163200000E2,6.345809118E1 +2.165810000E2,6.020490407E1 +2.168390000E2,5.603372378E1 +2.170870000E2,5.452432165E1 +2.173530000E2,5.679931822E1 +2.176220000E2,6.225558234E1 +2.179360000E2,5.991886985E1 +2.182430000E2,6.307902574E1 +2.184780000E2,6.764692456E1 +2.187700000E2,6.696013302E1 +2.190280000E2,6.419552300E1 +2.193390000E2,6.401831507E1 +2.196000000E2,6.317016249E1 +2.198590000E2,6.093052958E1 +2.201380000E2,6.446513941E1 +2.204220000E2,6.075454080E1 +2.206690000E2,6.712020778E1 +2.209300000E2,5.440050354E1 +2.212550000E2,5.627963451E1 +2.215550000E2,6.358778444E1 +2.217990000E2,5.793661873E1 +2.220730000E2,6.448679664E1 +2.223050000E2,5.844994198E1 +2.226510000E2,5.802583418E1 +2.229440000E2,5.848297014E1 +2.231840000E2,6.170695891E1 +2.234220000E2,6.201301769E1 +2.236630000E2,6.049179870E1 +2.239600000E2,6.316843106E1 +2.242020000E2,5.818837652E1 +2.245150000E2,6.411353278E1 +2.248330000E2,6.458398711E1 +2.250670000E2,6.303280227E1 +2.253240000E2,6.378696379E1 +2.255670000E2,6.157533943E1 +2.259260000E2,5.845901257E1 +2.261910000E2,5.623331182E1 +2.264460000E2,5.550822889E1 +2.267020000E2,5.907003722E1 +2.270220000E2,6.300043778E1 +2.273130000E2,5.934584116E1 +2.275640000E2,5.367094537E1 +2.278520000E2,6.260544714E1 +2.281140000E2,5.666507163E1 +2.283970000E2,6.099713971E1 +2.287020000E2,5.943082312E1 +2.289450000E2,6.095935321E1 +2.292950000E2,5.939706013E1 +2.296230000E2,5.612117806E1 +2.299220000E2,5.805831404E1 +2.301570000E2,5.496048372E1 +2.304070000E2,5.335836124E1 +2.306490000E2,5.043808989E1 +2.309270000E2,4.778025574E1 +2.311680000E2,4.613189565E1 +2.314100000E2,4.740314381E1 +2.316580000E2,5.230056147E1 +2.319150000E2,5.672989332E1 +2.321590000E2,6.081799709E1 +2.325030000E2,5.909736866E1 +2.327570000E2,5.528762811E1 +2.330520000E2,6.623131701E1 +2.333360000E2,6.376149752E1 +2.335730000E2,6.088376871E1 +2.338700000E2,6.235681388E1 +2.341160000E2,6.060610548E1 +2.343930000E2,5.779254532E1 +2.346370000E2,5.570043106E1 +2.349010000E2,6.172637016E1 +2.351520000E2,5.865545525E1 +2.354420000E2,6.250465685E1 +2.356850000E2,6.494272879E1 +2.359310000E2,6.075163542E1 +2.361840000E2,5.742858606E1 +2.364460000E2,5.756917813E1 +2.366990000E2,6.169927684E1 +2.370080000E2,5.540268710E1 +2.373040000E2,5.484088652E1 +2.376000000E2,5.732112773E1 +2.378800000E2,5.184194161E1 +2.381270000E2,5.604168635E1 +2.383910000E2,5.644051218E1 +2.387130000E2,6.049774032E1 +2.390290000E2,6.303013407E1 +2.392800000E2,6.115111046E1 +2.395770000E2,6.294174883E1 +2.398740000E2,6.716012591E1 +2.401880000E2,7.075117191E1 +2.404890000E2,6.435561631E1 +2.407550000E2,5.593172595E1 +2.410720000E2,5.781614361E1 +2.413350000E2,5.497792445E1 +2.416080000E2,5.569244646E1 +2.418870000E2,5.408109683E1 +2.421100000E2,5.687440525E1 +2.424230000E2,6.415333296E1 +2.427170000E2,6.528722740E1 +2.429900000E2,6.229384329E1 +2.432350000E2,5.452507698E1 +2.434960000E2,5.248331654E1 +2.437450000E2,5.069826347E1 +2.439880000E2,4.989889277E1 +2.442610000E2,5.196931346E1 +2.445130000E2,4.988417717E1 +2.448120000E2,5.950968466E1 +2.451200000E2,5.725324421E1 +2.454210000E2,5.902908729E1 +2.456980000E2,5.857784521E1 +2.459650000E2,5.154496059E1 +2.462670000E2,5.316738342E1 +2.465660000E2,5.681338179E1 +2.468580000E2,5.486468116E1 +2.471080000E2,5.378622946E1 +2.473840000E2,5.263910847E1 +2.477040000E2,5.102724000E1 +2.479590000E2,4.958128022E1 +2.482070000E2,5.621813465E1 +2.486190000E2,5.553111013E1 +2.489120000E2,5.711728514E1 +2.491630000E2,6.098223102E1 +2.494610000E2,5.812970142E1 +2.497290000E2,5.874411947E1 +2.500090000E2,6.058797235E1 +2.503160000E2,5.921850964E1 +2.506300000E2,5.825659244E1 +2.508940000E2,5.902074554E1 +2.512250000E2,5.857720223E1 +2.514860000E2,5.834259509E1 +2.517560000E2,5.664723408E1 +2.520110000E2,6.245873243E1 +2.522800000E2,6.018081628E1 +2.525490000E2,6.060905480E1 +2.527980000E2,6.098924059E1 +2.530310000E2,6.604497204E1 +2.532750000E2,5.762503683E1 +2.535750000E2,5.946675250E1 +2.538150000E2,5.696283688E1 +2.541120000E2,5.795434272E1 +2.543420000E2,5.641662406E1 +2.546470000E2,6.001503419E1 +2.549610000E2,5.913147779E1 +2.552050000E2,5.772050526E1 +2.554250000E2,5.986895040E1 +2.557400000E2,4.836792039E1 +2.560130000E2,4.818172752E1 +2.563450000E2,5.244597112E1 +2.566130000E2,5.174954560E1 +2.568650000E2,5.165225717E1 +2.571100000E2,4.865803315E1 +2.573530000E2,4.773689375E1 +2.576460000E2,5.375353685E1 +2.579030000E2,5.630041837E1 +2.582540000E2,5.390583403E1 +2.585030000E2,5.686416101E1 +2.588120000E2,5.880170204E1 +2.590630000E2,5.373023259E1 +2.593590000E2,6.009405077E1 +2.596120000E2,5.710673366E1 +2.598560000E2,5.891240789E1 +2.600990000E2,5.960890080E1 +2.603510000E2,6.728594423E1 +2.606060000E2,6.334340199E1 +2.609270000E2,6.082175509E1 +2.611830000E2,5.750083619E1 +2.615060000E2,5.667484133E1 +2.618070000E2,6.152760439E1 +2.620430000E2,5.697586540E1 +2.623440000E2,5.674189037E1 +2.625730000E2,5.539036876E1 +2.628210000E2,4.901745514E1 +2.631270000E2,5.264848299E1 +2.634230000E2,5.038277380E1 +2.636750000E2,5.149234245E1 +2.639170000E2,4.604207892E1 +2.641630000E2,5.735184247E1 +2.644630000E2,5.659523444E1 +2.648080000E2,5.697978691E1 +2.650640000E2,5.691301726E1 +2.653540000E2,5.696584583E1 +2.656480000E2,5.138210199E1 +2.659030000E2,5.345758564E1 +2.661640000E2,5.363588256E1 +2.664240000E2,5.471656895E1 +2.666720000E2,5.140760448E1 +2.669400000E2,5.329005020E1 +2.671940000E2,5.422388323E1 +2.674460000E2,5.133919880E1 +2.677140000E2,5.690801972E1 +2.681270000E2,5.964609863E1 +2.684030000E2,6.167901240E1 +2.686970000E2,5.297205648E1 +2.689350000E2,5.530010894E1 +2.692310000E2,5.450325538E1 +2.694700000E2,5.391690578E1 +2.697660000E2,5.420666075E1 +2.700010000E2,4.962510480E1 +2.702390000E2,5.010058679E1 +2.705460000E2,5.345147952E1 +2.708590000E2,5.574757195E1 +2.711770000E2,5.571208034E1 +2.714720000E2,5.288998421E1 +2.717170000E2,5.214438195E1 +2.720190000E2,5.232798978E1 +2.723080000E2,6.045263056E1 +2.725500000E2,5.870512300E1 +2.727930000E2,5.577911819E1 +2.730760000E2,5.501493048E1 +2.733800000E2,5.433475343E1 +2.736720000E2,5.293457700E1 +2.739070000E2,5.486483547E1 +2.741780000E2,6.008208952E1 +2.745050000E2,5.845984546E1 +2.748040000E2,5.900764997E1 +2.751070000E2,5.760203457E1 +2.754240000E2,5.795024632E1 +2.757280000E2,6.182748257E1 +2.760340000E2,5.683205968E1 +2.763350000E2,5.821402367E1 +2.766080000E2,5.520672517E1 +2.768980000E2,5.645892504E1 +2.772030000E2,5.463906896E1 +2.775200000E2,5.412722413E1 +2.777910000E2,5.268636730E1 +2.780870000E2,5.566734184E1 +2.783350000E2,5.745256931E1 +2.785810000E2,5.645167582E1 +2.788270000E2,5.925831320E1 +2.790840000E2,5.591320738E1 +2.793690000E2,5.632637646E1 +2.796200000E2,6.252281740E1 +2.799120000E2,5.547643277E1 +2.801570000E2,6.021611275E1 +2.804580000E2,5.732676882E1 +2.808110000E2,5.909573770E1 +2.810780000E2,6.005240162E1 +2.813300000E2,5.965022185E1 +2.815820000E2,6.135840817E1 +2.818790000E2,5.970629096E1 +2.821590000E2,5.879025140E1 +2.824010000E2,5.747324456E1 +2.826520000E2,5.726379384E1 +2.828950000E2,5.871306541E1 +2.831920000E2,6.188032415E1 +2.834710000E2,6.066582287E1 +2.837110000E2,5.950933244E1 +2.840350000E2,5.901018860E1 +2.843000000E2,5.761182729E1 +2.846050000E2,5.446909438E1 +2.848570000E2,5.349219985E1 +2.851700000E2,5.015518748E1 +2.854330000E2,5.374610595E1 +2.857270000E2,5.877223624E1 +2.860310000E2,5.644512377E1 +2.863080000E2,5.711327205E1 +2.865540000E2,5.655239592E1 +2.867930000E2,5.833716670E1 +2.871150000E2,5.417781453E1 +2.874030000E2,5.332227783E1 +2.876540000E2,5.146836736E1 +2.879540000E2,5.452228720E1 +2.881970000E2,5.025406823E1 +2.884910000E2,5.490648375E1 +2.887280000E2,5.506242221E1 +2.890210000E2,5.400927835E1 +2.892600000E2,5.781126179E1 +2.895430000E2,6.384283902E1 +2.898470000E2,6.340395874E1 +2.901430000E2,5.555395770E1 +2.904560000E2,5.514224078E1 +2.907530000E2,5.346566906E1 +2.910000000E2,5.948406902E1 +2.912590000E2,6.362292628E1 +2.915300000E2,6.175065463E1 +2.918240000E2,6.129817533E1 +2.920790000E2,6.317618325E1 +2.923350000E2,6.137933812E1 +2.926010000E2,5.620086793E1 +2.928740000E2,5.715913846E1 +2.931780000E2,7.028942499E1 +2.934620000E2,6.774357618E1 +2.937770000E2,6.989950413E1 +2.940270000E2,6.631119439E1 +2.943030000E2,6.956920703E1 +2.945570000E2,6.352936554E1 +2.948100000E2,6.981123112E1 +2.951150000E2,5.607171784E1 +2.953950000E2,5.394017247E1 +2.956980000E2,7.110851253E1 +2.959460000E2,6.978848906E1 +2.961900000E2,5.446752823E1 +2.965090000E2,6.309281755E1 +2.968110000E2,6.647752141E1 +2.971300000E2,6.773248230E1 +2.974240000E2,6.289421429E1 +2.977060000E2,5.998905240E1 +2.979500000E2,6.016152671E1 +2.981940000E2,5.851705490E1 +2.984880000E2,6.506323043E1 +2.987430000E2,5.702053645E1 +2.990110000E2,4.890963733E1 +2.993040000E2,5.105737182E1 +2.995650000E2,4.950865545E1 +2.998150000E2,4.713536225E1 +3.000860000E2,6.170154569E1 +3.003780000E2,5.697995513E1 +3.006750000E2,6.496205179E1 +3.009180000E2,5.585602045E1 +3.012120000E2,5.317421587E1 +3.015130000E2,5.532213468E1 +3.017840000E2,5.371543715E1 +3.020520000E2,6.741141038E1 +3.023220000E2,6.638671809E1 +3.025730000E2,5.833940482E1 +3.028700000E2,6.272205104E1 +3.031230000E2,6.150676490E1 +3.034050000E2,6.571826996E1 +3.036710000E2,6.387001854E1 +3.039460000E2,5.704179120E1 +3.042380000E2,5.452420344E1 +3.044730000E2,6.911436343E1 +3.047670000E2,6.747337761E1 +3.050070000E2,6.642457947E1 +3.053010000E2,6.704052830E1 +3.055360000E2,6.335116163E1 +3.058350000E2,6.452879154E1 +3.061310000E2,6.588892290E1 +3.064460000E2,6.065604325E1 +3.066970000E2,5.884139521E1 +3.069890000E2,6.115548360E1 +3.072650000E2,5.474220631E1 +3.075290000E2,5.525228633E1 +3.077890000E2,5.546520153E1 +3.080280000E2,5.799541194E1 +3.083270000E2,5.467819740E1 +3.086250000E2,5.227747322E1 +3.089260000E2,5.802220937E1 +3.091970000E2,5.383690373E1 +3.095040000E2,5.794687305E1 +3.097810000E2,5.426386053E1 +3.100000000E2,5.745164866E1 +3.103300000E2,5.475501144E1 +3.106240000E2,5.154802151E1 +3.108750000E2,5.434380726E1 +3.111540000E2,5.533246388E1 +3.114150000E2,5.554218476E1 +3.116740000E2,5.375334275E1 +3.119200000E2,5.727216331E1 +3.121680000E2,5.235396651E1 +3.124720000E2,6.207307801E1 +3.127180000E2,6.488896117E1 +3.130530000E2,6.168970511E1 +3.133080000E2,6.010687101E1 +3.135950000E2,6.305386662E1 +3.138880000E2,6.214030252E1 +3.141410000E2,5.907513997E1 +3.143960000E2,6.064308138E1 +3.146480000E2,6.195321339E1 +3.148870000E2,6.088765310E1 +3.151830000E2,5.906360624E1 +3.154280000E2,5.864981040E1 +3.157360000E2,5.824424792E1 +3.159750000E2,5.826399021E1 +3.163740000E2,6.051726612E1 +3.166320000E2,6.011967909E1 +3.168940000E2,5.577110603E1 +3.172010000E2,5.372586587E1 +3.174460000E2,5.537091967E1 +3.176890000E2,5.504912063E1 +3.179320000E2,5.264203521E1 +3.182150000E2,5.344854544E1 +3.184600000E2,5.656777951E1 +3.187200000E2,5.398435402E1 +3.189820000E2,5.410695962E1 +3.192460000E2,5.344168860E1 +3.195780000E2,5.697626360E1 +3.198350000E2,6.073105615E1 +3.200880000E2,6.621432780E1 +3.203460000E2,6.597785722E1 +3.205980000E2,5.907542432E1 +3.208920000E2,5.702769809E1 +3.211760000E2,6.207459825E1 +3.214520000E2,5.921715282E1 +3.217010000E2,5.501368146E1 +3.220030000E2,5.927746858E1 +3.223090000E2,5.878714279E1 +3.226530000E2,6.209253703E1 +3.229180000E2,5.801419316E1 +3.231660000E2,6.150680788E1 +3.234110000E2,5.950436139E1 +3.236660000E2,5.694006868E1 +3.239890000E2,5.964691948E1 +3.242420000E2,6.322261269E1 +3.245070000E2,5.967413832E1 +3.247540000E2,5.743115651E1 +3.250010000E2,5.693057833E1 +3.252760000E2,5.076009335E1 +3.255600000E2,5.432440321E1 +3.258270000E2,5.728583073E1 +3.262160000E2,6.158050311E1 +3.264570000E2,5.788548067E1 +3.267330000E2,5.661485397E1 +3.270280000E2,5.698735139E1 +3.272870000E2,5.428158234E1 +3.275550000E2,5.401192370E1 +3.278320000E2,5.894424302E1 +3.281050000E2,5.279140275E1 +3.283850000E2,5.366788524E1 +3.286760000E2,5.569462346E1 +3.289750000E2,5.484501656E1 +3.292730000E2,5.654335493E1 +3.295550000E2,5.483429560E1 +3.298560000E2,5.516099131E1 +3.301720000E2,5.150081287E1 +3.304560000E2,5.126263973E1 +3.307930000E2,4.943715566E1 +3.310330000E2,5.297477083E1 +3.312800000E2,4.994759883E1 +3.316030000E2,5.283028939E1 +3.318860000E2,5.150402936E1 +3.321790000E2,5.777668868E1 +3.325470000E2,5.446937149E1 +3.328030000E2,5.754474494E1 +3.330410000E2,5.437750931E1 +3.333210000E2,5.378201308E1 +3.335760000E2,5.486825362E1 +3.338240000E2,5.338123539E1 +3.340700000E2,5.704649160E1 +3.343740000E2,5.576563429E1 +3.346640000E2,5.503590574E1 +3.349650000E2,5.539431503E1 +3.352080000E2,5.782097549E1 +3.355080000E2,5.260852375E1 +3.358690000E2,6.012616228E1 +3.361400000E2,5.534922411E1 +3.363810000E2,5.436765301E1 +3.366230000E2,5.007736554E1 +3.368850000E2,5.304270830E1 +3.371340000E2,5.106682022E1 +3.373960000E2,5.491262243E1 +3.376890000E2,5.891119644E1 +3.379320000E2,5.554676164E1 +3.382420000E2,5.491809401E1 +3.385700000E2,6.003743295E1 +3.389490000E2,5.964265847E1 +3.392140000E2,6.009419780E1 +3.394780000E2,5.950800538E1 +3.397810000E2,5.514081916E1 +3.400260000E2,5.654810222E1 +3.403230000E2,5.919098275E1 +3.405600000E2,5.937137097E1 +3.408650000E2,5.885711760E1 +3.411560000E2,6.122434193E1 +3.414060000E2,6.101494213E1 +3.416650000E2,5.685059098E1 +3.419710000E2,4.988163583E1 +3.423360000E2,5.097871962E1 +3.426300000E2,6.097968551E1 +3.429260000E2,5.246223058E1 +3.431760000E2,5.140448000E1 +3.434570000E2,5.162147831E1 +3.436910000E2,5.437509469E1 +3.439650000E2,5.588289675E1 +3.442010000E2,5.342482218E1 +3.444930000E2,5.621155564E1 +3.447310000E2,5.753713233E1 +3.450340000E2,5.873821374E1 +3.453240000E2,5.674648484E1 +3.455770000E2,5.843857274E1 +3.458770000E2,6.170678128E1 +3.461770000E2,5.848319050E1 +3.464240000E2,5.996271814E1 +3.467290000E2,5.583139448E1 +3.470000000E2,5.558324990E1 +3.472360000E2,5.638821787E1 +3.474880000E2,6.015129432E1 +3.477550000E2,6.074195357E1 +3.480530000E2,6.258101891E1 +3.483260000E2,6.280209300E1 +3.486840000E2,5.935598721E1 +3.489370000E2,6.423635683E1 +3.492060000E2,7.026891453E1 +3.495130000E2,5.477771858E1 +3.498240000E2,6.143080763E1 +3.500700000E2,6.077206860E1 +3.503130000E2,5.816670512E1 +3.506030000E2,6.220374728E1 +3.509040000E2,6.435510927E1 +3.511560000E2,6.387906049E1 +3.514240000E2,6.324188625E1 +3.517710000E2,6.217871174E1 +3.520510000E2,6.349767138E1 +3.523000000E2,5.947763114E1 +3.525840000E2,5.623947938E1 +3.528810000E2,5.940245648E1 +3.531830000E2,5.323006485E1 +3.534790000E2,4.756673680E1 +3.537830000E2,5.761743216E1 +3.540870000E2,5.701856444E1 +3.543720000E2,5.507707077E1 +3.546320000E2,5.561457107E1 +3.549330000E2,6.036785424E1 +3.552860000E2,5.818319920E1 +3.555390000E2,5.636477080E1 +3.557840000E2,5.686236286E1 +3.560330000E2,6.137502104E1 +3.563290000E2,6.039421004E1 +3.565710000E2,5.873926214E1 +3.568160000E2,5.984737812E1 +3.570890000E2,5.898549785E1 +3.573200000E2,5.804358229E1 +3.576080000E2,5.178825198E1 +3.578380000E2,5.333798630E1 +3.581470000E2,5.663121054E1 +3.584860000E2,5.705169894E1 +3.587470000E2,5.488627438E1 +3.590020000E2,5.493171173E1 +3.592590000E2,5.280801534E1 +3.595110000E2,5.919356657E1 +3.597710000E2,6.061921525E1 +3.600770000E2,5.781838960E1 +3.603810000E2,5.824405535E1 +3.606410000E2,5.734273072E1 +3.608930000E2,5.860073318E1 +3.611440000E2,5.158577335E1 +3.614110000E2,5.569804167E1 +3.617550000E2,5.732029627E1 +3.620530000E2,5.599725951E1 +3.623260000E2,5.427140428E1 +3.625700000E2,5.439119305E1 +3.628680000E2,5.768088704E1 +3.631160000E2,5.322266305E1 +3.634170000E2,5.611257515E1 +3.637150000E2,5.466283243E1 +3.639540000E2,5.648497192E1 +3.642520000E2,5.982456496E1 +3.644910000E2,5.683499776E1 +3.648080000E2,5.424977228E1 +3.650550000E2,5.261749952E1 +3.653010000E2,5.976464589E1 +3.655400000E2,5.630627545E1 +3.658370000E2,5.855663855E1 +3.660660000E2,5.839517218E1 +3.663050000E2,5.701336937E1 +3.666100000E2,6.057417753E1 +3.668530000E2,5.660058929E1 +3.671060000E2,5.360906173E1 +3.673270000E2,5.766761713E1 +3.676020000E2,5.473947199E1 +3.679270000E2,5.730791892E1 +3.681990000E2,5.368134624E1 +3.685210000E2,5.122725302E1 +3.688180000E2,5.413949330E1 +3.690720000E2,5.953240184E1 +3.693650000E2,5.834363401E1 +3.696110000E2,4.952962201E1 +3.698620000E2,6.082605721E1 +3.701240000E2,5.541205242E1 +3.703840000E2,5.595936781E1 +3.706570000E2,5.751180267E1 +3.709050000E2,5.510413826E1 +3.712530000E2,5.236304209E1 +3.715330000E2,5.429686706E1 +3.717680000E2,5.365135821E1 +3.720680000E2,5.442146139E1 +3.723070000E2,5.193301537E1 +3.726070000E2,5.573089397E1 +3.728540000E2,5.084704353E1 +3.731070000E2,5.244752708E1 +3.734250000E2,5.501438711E1 +3.737160000E2,5.701937821E1 +3.739830000E2,5.913008265E1 +3.743030000E2,6.329763996E1 +3.745490000E2,5.828010903E1 +3.748110000E2,5.514928454E1 +3.750560000E2,5.535724603E1 +3.753250000E2,6.062318511E1 +3.756820000E2,5.853801057E1 +3.759720000E2,6.218740595E1 +3.762560000E2,6.130322227E1 +3.764780000E2,5.705598438E1 +3.767430000E2,5.675025411E1 +3.770350000E2,5.562309411E1 +3.773330000E2,6.171478403E1 +3.776660000E2,5.752069737E1 +3.779640000E2,5.869913239E1 +3.782130000E2,5.802158707E1 +3.785030000E2,5.920699755E1 +3.787580000E2,5.984700757E1 +3.790120000E2,5.874214142E1 +3.792820000E2,5.792329599E1 +3.795460000E2,6.240429581E1 +3.798520000E2,5.924961400E1 +3.800960000E2,5.655548581E1 +3.803510000E2,5.997047167E1 +3.806590000E2,5.894207932E1 +3.810310000E2,5.556916558E1 +3.813250000E2,5.709965860E1 +3.815810000E2,5.724657649E1 +3.818690000E2,5.634885250E1 +3.821660000E2,5.381597934E1 +3.824070000E2,5.409431797E1 +3.827020000E2,5.558304395E1 +3.829400000E2,5.836087965E1 +3.832380000E2,5.621848827E1 +3.834740000E2,5.756105430E1 +3.837670000E2,5.972981317E1 +3.840620000E2,6.110722903E1 +3.842970000E2,6.011338906E1 +3.846120000E2,6.632548976E1 +3.849300000E2,5.632542095E1 +3.852340000E2,5.660090160E1 +3.854760000E2,5.637042997E1 +3.857700000E2,6.483820819E1 +3.860160000E2,6.294386681E1 +3.862760000E2,6.248693097E1 +3.865740000E2,5.966646580E1 +3.868130000E2,5.884596060E1 +3.871230000E2,6.069045984E1 +3.874660000E2,5.535227762E1 +3.877260000E2,5.453589064E1 +3.879920000E2,5.803286513E1 +3.882920000E2,6.338575111E1 +3.885370000E2,6.297665471E1 +3.888380000E2,6.078963895E1 +3.890870000E2,6.078711186E1 +3.893350000E2,5.918580133E1 +3.896040000E2,5.645003340E1 +3.899070000E2,5.868887980E1 +3.901560000E2,5.816727924E1 +3.904840000E2,5.908711574E1 +3.907830000E2,5.165109059E1 +3.910410000E2,5.747977046E1 +3.913230000E2,5.600926578E1 +3.916170000E2,5.743239537E1 +3.918580000E2,5.999528635E1 +3.921650000E2,5.924448814E1 +3.924670000E2,6.347749271E1 +3.927590000E2,6.285842009E1 +3.929960000E2,6.439104552E1 +3.933010000E2,6.092208558E1 +3.935450000E2,5.889760176E1 +3.939100000E2,5.798312040E1 +3.941770000E2,5.909426563E1 +3.944250000E2,5.971090911E1 +3.946810000E2,5.379436409E1 +3.949270000E2,5.134339741E1 +3.951700000E2,5.739586279E1 +3.954270000E2,5.255911571E1 +3.956850000E2,5.149310319E1 +3.959500000E2,5.723685944E1 +3.962270000E2,5.622087783E1 +3.964720000E2,6.119098643E1 +3.967310000E2,6.249797436E1 +3.970320000E2,5.838309249E1 +3.973440000E2,5.720898847E1 +3.976100000E2,5.357982700E1 +3.978600000E2,5.091452983E1 +3.981070000E2,4.781274510E1 +3.983520000E2,4.684320786E1 +3.986530000E2,4.867937405E1 +3.988970000E2,4.947454895E1 +3.991740000E2,4.941937240E1 +3.994180000E2,5.206925818E1 +3.997200000E2,5.099596962E1 +3.999720000E2,5.059119317E1 +4.002350000E2,4.980275756E1 +4.004940000E2,5.514017077E1 +4.008060000E2,5.354499430E1 +4.011150000E2,5.377825353E1 +4.013980000E2,5.657928040E1 +4.016460000E2,6.437756844E1 +4.019070000E2,6.072529486E1 +4.021970000E2,5.876291143E1 +4.024430000E2,6.118567430E1 +4.027460000E2,5.925186578E1 +4.030590000E2,5.727531678E1 +4.033610000E2,6.211123432E1 +4.036680000E2,6.041950332E1 +4.039230000E2,6.161200416E1 +4.041780000E2,6.047480336E1 +4.044620000E2,5.905442986E1 +4.047060000E2,5.729915709E1 +4.049630000E2,6.020933408E1 +4.052500000E2,5.845152603E1 +4.055600000E2,5.814304967E1 +4.058210000E2,5.866194002E1 +4.060640000E2,5.736420578E1 +4.063180000E2,6.107395805E1 +4.065790000E2,5.985269852E1 +4.069480000E2,5.745859610E1 +4.072050000E2,5.693680110E1 +4.074960000E2,6.165201185E1 +4.077470000E2,6.131132241E1 +4.079970000E2,5.824414723E1 +4.083050000E2,5.958451387E1 +4.085600000E2,5.739792126E1 +4.088150000E2,5.573389816E1 +4.090850000E2,5.530698039E1 +4.093810000E2,5.634371531E1 +4.096660000E2,5.880658089E1 +4.099920000E2,5.804298004E1 +4.102870000E2,5.688352401E1 +4.106310000E2,5.573115839E1 +4.109280000E2,5.368053116E1 +4.112180000E2,5.474384188E1 +4.114650000E2,5.380195893E1 +4.117660000E2,5.718608674E1 +4.120140000E2,5.703743686E1 +4.122910000E2,5.985228158E1 +4.125620000E2,6.278694860E1 +4.128210000E2,5.839550633E1 +4.130600000E2,6.029373556E1 +4.133710000E2,5.711050636E1 +4.136150000E2,5.200468588E1 +4.138820000E2,5.769230508E1 +4.141370000E2,5.333759168E1 +4.143860000E2,5.632377961E1 +4.146570000E2,5.647744894E1 +4.149040000E2,5.667945226E1 +4.151840000E2,5.669404445E1 +4.154420000E2,6.072374556E1 +4.157420000E2,5.606444578E1 +4.159850000E2,5.623596320E1 +4.162830000E2,5.264542492E1 +4.165340000E2,5.359803767E1 +4.168600000E2,5.691340897E1 +4.171060000E2,5.636326143E1 +4.173490000E2,6.276141082E1 +4.176080000E2,6.197471417E1 +4.178580000E2,5.777170976E1 +4.181050000E2,5.407671770E1 +4.183760000E2,4.795453020E1 +4.186580000E2,5.871005652E1 +4.188870000E2,6.069158080E1 +4.191320000E2,6.112379328E1 +4.193750000E2,5.584116633E1 +4.196280000E2,6.302854070E1 +4.199610000E2,6.640457067E1 +4.202240000E2,6.337314603E1 +4.205160000E2,5.904470105E1 +4.208200000E2,5.799078909E1 +4.210810000E2,5.975635789E1 +4.213260000E2,6.334088587E1 +4.215900000E2,5.849627934E1 +4.218550000E2,5.894070219E1 +4.221030000E2,5.961371776E1 +4.223550000E2,5.281830949E1 +4.225970000E2,4.892580508E1 +4.229130000E2,5.950646935E1 +4.232610000E2,6.303011111E1 +4.235630000E2,6.030515180E1 +4.238060000E2,5.832387195E1 +4.240560000E2,6.126571743E1 +4.243280000E2,5.961805347E1 +4.245710000E2,5.916464366E1 +4.248300000E2,6.404431780E1 +4.251020000E2,6.161392817E1 +4.253630000E2,6.303875005E1 +4.256110000E2,6.294329578E1 +4.258560000E2,6.495739223E1 +4.261620000E2,6.352748415E1 +4.265140000E2,6.360144813E1 +4.267650000E2,6.320185268E1 +4.270250000E2,6.598206760E1 +4.272910000E2,5.736158392E1 +4.275300000E2,5.632655800E1 +4.277760000E2,5.626186588E1 +4.280650000E2,5.992298879E1 +4.283460000E2,5.976814640E1 +4.285960000E2,5.617047451E1 +4.288540000E2,5.410240194E1 +4.291290000E2,5.524345530E1 +4.293550000E2,5.025485629E1 +4.297050000E2,5.094849624E1 +4.299600000E2,5.349595208E1 +4.302230000E2,5.668766668E1 +4.304690000E2,5.470073040E1 +4.307330000E2,5.808421323E1 +4.310240000E2,5.815977776E1 +4.312740000E2,5.751031291E1 +4.315190000E2,6.045600028E1 +4.318300000E2,5.967896339E1 +4.320980000E2,5.746835753E1 +4.324020000E2,5.874054152E1 +4.327010000E2,5.770096959E1 +4.330460000E2,5.851412717E1 +4.333220000E2,5.970473393E1 +4.335930000E2,6.024030776E1 +4.338530000E2,5.564089573E1 +4.341340000E2,5.328000065E1 +4.343790000E2,5.522789934E1 +4.346930000E2,5.271905966E1 +4.349910000E2,5.685384424E1 +4.352400000E2,5.751176106E1 +4.355350000E2,5.654290580E1 +4.357760000E2,5.976937629E1 +4.360780000E2,5.445311615E1 +4.363520000E2,5.460006243E1 +4.366010000E2,5.402958946E1 +4.369120000E2,5.611325616E1 +4.371660000E2,5.675575065E1 +4.374120000E2,5.605818704E1 +4.377070000E2,5.614720111E1 +4.379470000E2,5.596280974E1 +4.382450000E2,5.764305460E1 +4.384820000E2,6.015340826E1 +4.387240000E2,6.073594369E1 +4.390310000E2,5.846982437E1 +4.393110000E2,5.837342754E1 +4.396160000E2,5.758988397E1 +4.398810000E2,5.375393273E1 +4.401700000E2,5.590416510E1 +4.404180000E2,5.649267014E1 +4.406570000E2,5.809884175E1 +4.409200000E2,5.934788425E1 +4.411750000E2,5.883690392E1 +4.414270000E2,5.465512306E1 +4.416780000E2,5.456039720E1 +4.419260000E2,6.053551690E1 +4.422020000E2,5.446896121E1 +4.425270000E2,5.304300238E1 +4.428480000E2,5.413537656E1 +4.431230000E2,5.590535088E1 +4.433740000E2,5.516889265E1 +4.436180000E2,5.375803139E1 +4.439250000E2,5.440731706E1 +4.441670000E2,5.378894171E1 +4.444170000E2,5.676009311E1 +4.447160000E2,5.433224316E1 +4.449620000E2,5.431777666E1 +4.452100000E2,5.220353562E1 +4.454560000E2,5.525232641E1 +4.456950000E2,5.348687858E1 +4.459900000E2,5.571408478E1 +4.462320000E2,5.590054486E1 +4.464840000E2,5.627503595E1 +4.467390000E2,5.824548232E1 +4.469910000E2,5.637049423E1 +4.472460000E2,5.754096885E1 +4.474930000E2,5.335865942E1 +4.477890000E2,5.765888938E1 +4.480780000E2,6.102087464E1 +4.483520000E2,6.006145593E1 +4.486510000E2,5.685958774E1 +4.489610000E2,5.748149351E1 +4.492370000E2,5.709623916E1 +4.495040000E2,5.821496279E1 +4.497570000E2,5.970222946E1 +4.500030000E2,5.750976802E1 +4.502380000E2,5.796549321E1 +4.505370000E2,5.665777454E1 +4.508330000E2,5.605038109E1 +4.510750000E2,5.504306522E1 +4.513230000E2,5.112487870E1 +4.515900000E2,5.559150914E1 +4.518300000E2,5.656933458E1 +4.520810000E2,6.082180135E1 +4.524470000E2,5.774965281E1 +4.527120000E2,5.847728207E1 +4.529730000E2,5.711434047E1 +4.532810000E2,5.503285278E1 +4.535670000E2,5.614330822E1 +4.538610000E2,6.211492489E1 +4.541040000E2,6.003078695E1 +4.543760000E2,5.766611466E1 +4.546280000E2,5.912518267E1 +4.549300000E2,5.969489895E1 +4.551760000E2,5.509558621E1 +4.554320000E2,5.963291683E1 +4.556950000E2,6.194656842E1 +4.559980000E2,6.032793642E1 +4.562390000E2,5.874022110E1 +4.565060000E2,6.016749735E1 +4.567480000E2,5.985596964E1 +4.570070000E2,5.588678859E1 +4.572660000E2,5.541792762E1 +4.575660000E2,4.969164404E1 +4.578050000E2,4.976271573E1 +4.581060000E2,5.634137812E1 +4.583500000E2,5.321783082E1 +4.586280000E2,5.816393976E1 +4.588870000E2,5.817726916E1 +4.591860000E2,5.398220140E1 +4.594690000E2,5.572842498E1 +4.597270000E2,5.759574297E1 +4.600290000E2,5.492384706E1 +4.602790000E2,5.570826682E1 +4.605780000E2,5.619496661E1 +4.608690000E2,5.993990435E1 +4.611730000E2,6.185390750E1 +4.614300000E2,6.125031183E1 +4.617390000E2,6.047450440E1 +4.621070000E2,5.913093195E1 +4.623500000E2,6.032535990E1 +4.626490000E2,5.803726699E1 +4.628910000E2,5.968748294E1 +4.631850000E2,5.792594347E1 +4.634330000E2,5.623910190E1 +4.636850000E2,6.026318401E1 +4.639240000E2,6.002593060E1 +4.641990000E2,5.694813724E1 +4.644200000E2,5.456998819E1 +4.646660000E2,5.683591124E1 +4.649070000E2,5.893829862E1 +4.652630000E2,5.637983039E1 +4.655160000E2,5.571226470E1 +4.657720000E2,5.582065666E1 +4.660510000E2,5.436378979E1 +4.663550000E2,5.697364508E1 +4.666350000E2,5.716664070E1 +4.668800000E2,6.098104772E1 +4.671260000E2,5.932872997E1 +4.673960000E2,5.573089336E1 +4.676430000E2,5.791664461E1 +4.678890000E2,5.589855895E1 +4.681490000E2,6.359324433E1 +4.685010000E2,5.902079393E1 +4.687870000E2,6.085500324E1 +4.690180000E2,6.401116813E1 +4.693190000E2,6.157634911E1 +4.695830000E2,6.068297160E1 +4.698370000E2,5.867738322E1 +4.701080000E2,6.069776659E1 +4.703530000E2,5.904983802E1 +4.706060000E2,5.642725313E1 +4.708480000E2,5.600286970E1 +4.711080000E2,5.678564623E1 +4.714020000E2,5.139543439E1 +4.717220000E2,5.924511995E1 +4.720300000E2,5.309180697E1 +4.722790000E2,5.295961103E1 +4.725820000E2,5.448425692E1 +4.728350000E2,5.346047841E1 +4.731210000E2,5.563518239E1 +4.733630000E2,5.630991562E1 +4.736070000E2,5.519344442E1 +4.738520000E2,5.696356709E1 +4.741150000E2,5.721588368E1 +4.743810000E2,5.556082681E1 +4.746430000E2,5.453201409E1 +4.749610000E2,5.621559396E1 +4.752460000E2,6.170975330E1 +4.755640000E2,6.352753975E1 +4.758660000E2,5.818774343E1 +4.761780000E2,6.177058435E1 +4.764630000E2,5.829511769E1 +4.766910000E2,5.658732029E1 +4.769520000E2,6.006113158E1 +4.772530000E2,6.022385702E1 +4.775200000E2,5.965858240E1 +4.778410000E2,5.970326758E1 +4.780960000E2,5.911597661E1 +4.783440000E2,5.656338446E1 +4.786020000E2,5.723922467E1 +4.788680000E2,5.700163516E1 +4.791490000E2,6.083416080E1 +4.794510000E2,5.899425763E1 +4.797630000E2,5.820674449E1 +4.800620000E2,5.648898879E1 +4.803380000E2,5.465743937E1 +4.806090000E2,5.006847009E1 +4.809050000E2,5.870050130E1 +4.811580000E2,5.878066343E1 +4.814060000E2,5.929414686E1 +4.817070000E2,5.758425183E1 +4.819760000E2,5.151398214E1 +4.822410000E2,5.772956896E1 +4.824880000E2,5.913153701E1 +4.827710000E2,5.814746383E1 +4.830140000E2,6.018356701E1 +4.832870000E2,5.985078792E1 +4.835070000E2,6.081307149E1 +4.837500000E2,5.810932132E1 +4.840440000E2,5.700769218E1 +4.842880000E2,5.815119989E1 +4.845920000E2,5.595850943E1 +4.849330000E2,5.891167795E1 +4.851960000E2,5.413833723E1 +4.854760000E2,6.184122004E1 +4.857700000E2,6.074653742E1 +4.860130000E2,6.033024099E1 +4.862530000E2,5.218562994E1 +4.865560000E2,5.902882093E1 +4.868150000E2,6.397338635E1 +4.870790000E2,6.543155406E1 +4.873440000E2,6.181389827E1 +4.876070000E2,6.381240883E1 +4.878770000E2,6.121521197E1 +4.882210000E2,5.780293585E1 +4.884640000E2,5.941826112E1 +4.887100000E2,6.118399944E1 +4.889830000E2,6.000089150E1 +4.892940000E2,5.873163787E1 +4.895350000E2,5.943116280E1 +4.897770000E2,5.867927357E1 +4.900230000E2,6.190584219E1 +4.903270000E2,6.313044892E1 +4.905550000E2,6.096660510E1 +4.907970000E2,5.773464228E1 +4.911090000E2,5.720144266E1 +4.914750000E2,5.797465536E1 +4.917410000E2,6.063197812E1 +4.920040000E2,5.799562897E1 +4.922950000E2,5.391853563E1 +4.925940000E2,6.053973121E1 +4.928320000E2,5.781822977E1 +4.931250000E2,6.541242849E1 +4.933660000E2,6.151252976E1 +4.936620000E2,5.962569242E1 +4.939140000E2,6.114162989E1 +4.941750000E2,6.074296596E1 +4.944160000E2,5.738425867E1 +4.947510000E2,6.084173002E1 +4.950140000E2,5.911448476E1 +4.953100000E2,6.076832164E1 +4.955530000E2,6.357047625E1 +4.958480000E2,6.344590866E1 +4.960850000E2,6.154350148E1 +4.963870000E2,5.815666478E1 +4.966770000E2,5.862350251E1 +4.969720000E2,5.162851816E1 +4.972640000E2,5.887916548E1 +4.975020000E2,6.130693279E1 +4.977480000E2,6.164914583E1 +4.980300000E2,5.689153252E1 +4.983240000E2,6.054571109E1 +4.985610000E2,5.779234792E1 +4.987980000E2,6.281334084E1 +4.991290000E2,6.074883772E1 +4.994230000E2,6.344972933E1 +4.996620000E2,6.040546490E1 +4.999570000E2,6.143019571E1 +5.002020000E2,6.117826214E1 +5.004980000E2,6.217883653E1 +5.007380000E2,6.294102819E1 +5.010930000E2,6.516475449E1 +5.013550000E2,6.119184016E1 +5.016670000E2,6.096554209E1 +5.019390000E2,6.197647057E1 +5.022530000E2,6.186754720E1 +5.025630000E2,5.954982776E1 +5.028510000E2,6.115486405E1 +5.031440000E2,6.348254173E1 +5.033820000E2,5.960570527E1 +5.036780000E2,5.977682583E1 +5.039180000E2,5.709696054E1 +5.042580000E2,6.265263203E1 +5.045140000E2,6.166583393E1 +5.047590000E2,6.184451596E1 +5.050170000E2,6.196658471E1 +5.053150000E2,6.014630927E1 +5.055610000E2,6.055201466E1 +5.058690000E2,6.189129858E1 +5.062120000E2,6.557808579E1 +5.064770000E2,6.080176744E1 +5.067370000E2,6.164107472E1 +5.069870000E2,6.497302078E1 +5.072490000E2,6.320126990E1 +5.076210000E2,6.073801439E1 +5.078780000E2,5.612097300E1 +5.081420000E2,5.978501024E1 +5.084360000E2,6.061444996E1 +5.086860000E2,6.272142993E1 +5.089270000E2,6.250458760E1 +5.092250000E2,5.860749180E1 +5.094720000E2,6.368373725E1 +5.097760000E2,6.005985592E1 +5.100780000E2,5.959557057E1 +5.103410000E2,6.085764000E1 +5.106360000E2,6.210563273E1 +5.109960000E2,6.125336704E1 +5.112590000E2,5.627814405E1 +5.115470000E2,6.253958528E1 +5.118480000E2,6.261683940E1 +5.120990000E2,5.782347554E1 +5.123560000E2,6.181201679E1 +5.126370000E2,6.425542150E1 +5.129400000E2,6.148973489E1 +5.132300000E2,6.230215374E1 +5.134720000E2,6.332855968E1 +5.137620000E2,5.875203916E1 +5.140950000E2,6.043073123E1 +5.143340000E2,5.829778385E1 +5.146280000E2,6.530539120E1 +5.148660000E2,5.725439078E1 +5.151580000E2,6.255661351E1 +5.153960000E2,6.412193683E1 +5.156410000E2,6.315775814E1 +5.158840000E2,6.025521775E1 +5.161460000E2,5.892698587E1 +5.164080000E2,5.956507822E1 +5.166610000E2,6.162757540E1 +5.169960000E2,6.009082976E1 +5.173360000E2,5.999682475E1 +5.176380000E2,6.121463264E1 +5.178750000E2,5.929809726E1 +5.181460000E2,5.746668369E1 +5.183810000E2,5.919113180E1 +5.186360000E2,5.827917213E1 +5.189280000E2,5.902314388E1 +5.192310000E2,6.116063950E1 +5.195310000E2,6.026149556E1 +5.198180000E2,5.851929656E1 +5.200920000E2,5.750929671E1 +5.204160000E2,5.729942637E1 +5.207470000E2,5.472104161E1 +5.210390000E2,6.169397748E1 +5.213450000E2,6.081589597E1 +5.216480000E2,6.278728872E1 +5.219550000E2,6.266319096E1 +5.222160000E2,6.478840582E1 +5.224820000E2,6.255888661E1 +5.227330000E2,6.119451713E1 +5.229970000E2,6.244953097E1 +5.232800000E2,6.000703556E1 +5.236020000E2,5.885323025E1 +5.239510000E2,5.826073845E1 +5.242570000E2,5.807287072E1 +5.245200000E2,5.931641295E1 +5.247800000E2,5.775994158E1 +5.250310000E2,6.167249992E1 +5.253010000E2,6.027694641E1 +5.255430000E2,6.329659774E1 +5.258240000E2,6.254377160E1 +5.261330000E2,6.489975363E1 +5.263840000E2,5.999325642E1 +5.266440000E2,5.885077446E1 +5.268920000E2,6.439829299E1 +5.272450000E2,6.165608373E1 +5.275110000E2,5.418048629E1 +5.277700000E2,5.656005066E1 +5.280170000E2,6.215252288E1 +5.283170000E2,5.743407158E1 +5.285650000E2,5.831214783E1 +5.288200000E2,6.066735547E1 +5.290820000E2,5.994603081E1 +5.293240000E2,5.951550591E1 +5.295810000E2,6.264700953E1 +5.298380000E2,5.736628274E1 +5.301360000E2,5.590406638E1 +5.304530000E2,6.041033291E1 +5.307000000E2,5.968691140E1 +5.309950000E2,5.730835182E1 +5.312390000E2,5.823026311E1 +5.315470000E2,5.871167442E1 +5.318430000E2,5.990765833E1 +5.321400000E2,6.387020611E1 +5.324510000E2,6.077699448E1 +5.326980000E2,5.895294298E1 +5.329820000E2,6.041997988E1 +5.333050000E2,5.806877757E1 +5.336110000E2,5.682362418E1 +5.340220000E2,5.915478638E1 +5.342790000E2,6.110946170E1 +5.345430000E2,5.735857105E1 +5.348060000E2,5.684014045E1 +5.350480000E2,6.043627860E1 +5.353500000E2,5.982929159E1 +5.356290000E2,5.986217314E1 +5.358770000E2,5.677131614E1 +5.361310000E2,5.763848566E1 +5.363810000E2,6.142463983E1 +5.366730000E2,5.634211854E1 +5.369290000E2,5.547608220E1 +5.372430000E2,5.920768747E1 +5.375170000E2,6.113406656E1 +5.377700000E2,6.208964505E1 +5.380710000E2,6.100572025E1 +5.383260000E2,6.352283467E1 +5.386320000E2,5.898993907E1 +5.389570000E2,5.503782412E1 +5.392560000E2,5.663453376E1 +5.395360000E2,6.406828344E1 +5.398060000E2,5.890955595E1 +5.400700000E2,6.046868424E1 +5.403380000E2,5.979639772E1 +5.406170000E2,5.838685694E1 +5.409120000E2,5.933573087E1 +5.411500000E2,5.970536072E1 +5.414430000E2,5.461931777E1 +5.417380000E2,5.891969668E1 +5.419780000E2,6.086182172E1 +5.422730000E2,5.706230292E1 +5.425150000E2,6.002937875E1 +5.428150000E2,5.733734968E1 +5.430520000E2,5.791730719E1 +5.433430000E2,5.451667439E1 +5.436740000E2,5.601232928E1 +5.439430000E2,6.067749331E1 +5.441960000E2,6.044443396E1 +5.445120000E2,6.332642539E1 +5.448320000E2,6.369907597E1 +5.451010000E2,6.327412880E1 +5.453640000E2,6.380509737E1 +5.456090000E2,6.199528902E1 +5.458550000E2,5.905332967E1 +5.461530000E2,5.748064798E1 +5.463920000E2,5.793139247E1 +5.466900000E2,5.931551966E1 +5.470480000E2,6.345498755E1 +5.473610000E2,5.881486603E1 +5.476220000E2,5.928200098E1 +5.478810000E2,5.577309321E1 +5.481470000E2,5.875325885E1 +5.483980000E2,6.007409743E1 +5.486490000E2,6.070612531E1 +5.488940000E2,5.934549940E1 +5.491520000E2,6.170511636E1 +5.494020000E2,6.376886521E1 +5.497010000E2,6.406587518E1 +5.499360000E2,6.365684538E1 +5.503130000E2,6.009406633E1 +5.505850000E2,6.014270409E1 +5.508500000E2,5.879153887E1 +5.511470000E2,5.883782525E1 +5.513760000E2,5.773432280E1 +5.516350000E2,5.966648889E1 +5.518940000E2,5.472606108E1 +5.521930000E2,5.682429497E1 +5.524670000E2,5.619181968E1 +5.527770000E2,5.997719307E1 +5.530460000E2,5.879335465E1 +5.533410000E2,5.983416170E1 +5.537120000E2,5.957041909E1 +5.539420000E2,5.952828793E1 +5.542510000E2,5.971645274E1 +5.545000000E2,6.419337448E1 +5.547730000E2,6.634363344E1 +5.550770000E2,6.285856457E1 +5.553760000E2,5.654671197E1 +5.556440000E2,5.530754918E1 +5.558640000E2,5.889159880E1 +5.561110000E2,6.213947417E1 +5.563520000E2,6.860243311E1 +5.566480000E2,6.647018679E1 +5.569110000E2,6.420604516E1 +5.571650000E2,6.703462967E1 +5.574140000E2,6.648783593E1 +5.576540000E2,6.634001782E1 +5.579350000E2,6.293734135E1 +5.581770000E2,6.205918741E1 +5.584760000E2,5.247262167E1 +5.587220000E2,5.338734169E1 +5.589670000E2,5.662276325E1 +5.592110000E2,5.533465633E1 +5.595080000E2,5.854271946E1 +5.597740000E2,5.660649413E1 +5.600260000E2,6.333844075E1 +5.602860000E2,6.255943536E1 +5.605830000E2,5.392304486E1 +5.608700000E2,5.760897506E1 +5.611660000E2,5.713086887E1 +5.614070000E2,5.720157535E1 +5.617060000E2,5.026592539E1 +5.619510000E2,5.140995344E1 +5.621950000E2,5.663266073E1 +5.624370000E2,5.202695689E1 +5.627360000E2,6.084568668E1 +5.630550000E2,6.179643015E1 +5.632960000E2,5.833759539E1 +5.635420000E2,5.518782498E1 +5.638400000E2,6.578433315E1 +5.640880000E2,5.706187099E1 +5.643850000E2,5.456571992E1 +5.646300000E2,5.536479424E1 +5.649270000E2,5.930541070E1 +5.651540000E2,6.023199994E1 +5.653960000E2,5.612469871E1 +5.656980000E2,5.462007842E1 +5.659410000E2,5.278259804E1 +5.662890000E2,6.064478329E1 +5.666290000E2,5.682964802E1 +5.669030000E2,5.787828261E1 +5.671980000E2,5.712595091E1 +5.674890000E2,5.729764361E1 +5.677450000E2,5.241850056E1 +5.679980000E2,5.377155525E1 +5.682380000E2,5.485418547E1 +5.684830000E2,5.503746434E1 +5.687810000E2,5.398954643E1 +5.690230000E2,5.401913169E1 +5.693270000E2,5.953896215E1 +5.695680000E2,5.626247467E1 +5.698640000E2,6.040491706E1 +5.701050000E2,5.781813181E1 +5.703620000E2,5.733744349E1 +5.706600000E2,5.669032177E1 +5.709140000E2,5.453731954E1 +5.711580000E2,6.235364316E1 +5.714280000E2,5.958044055E1 +5.716860000E2,5.875696014E1 +5.719750000E2,5.570465139E1 +5.722310000E2,4.865236791E1 +5.725580000E2,5.257975627E1 +5.727900000E2,4.975389893E1 +5.730890000E2,5.658508958E1 +5.733660000E2,5.542284648E1 +5.735960000E2,5.536199936E1 +5.738990000E2,5.813474916E1 +5.741540000E2,5.417788207E1 +5.744370000E2,5.704170918E1 +5.746710000E2,5.736828455E1 +5.749280000E2,5.450874678E1 +5.751790000E2,5.610950442E1 +5.754890000E2,5.919887582E1 +5.758690000E2,5.780639378E1 +5.761700000E2,5.709220641E1 +5.764190000E2,5.815359781E1 +5.767060000E2,5.734155824E1 +5.769500000E2,5.925323086E1 +5.772430000E2,6.084767221E1 +5.775370000E2,5.852024889E1 +5.777780000E2,5.822649765E1 +5.780770000E2,5.829089322E1 +5.783770000E2,5.915481192E1 +5.786460000E2,5.996430642E1 +5.789780000E2,6.016421415E1 +5.792520000E2,6.221052482E1 +5.795090000E2,5.533993101E1 +5.798230000E2,6.537257407E1 +5.801220000E2,6.068836920E1 +5.803770000E2,5.728273812E1 +5.806510000E2,5.648369901E1 +5.809070000E2,5.397363349E1 +5.811690000E2,5.755294689E1 +5.814510000E2,5.957149991E1 +5.816900000E2,5.963092636E1 +5.820650000E2,6.778811076E1 +5.823240000E2,6.247529404E1 +5.825840000E2,6.073516327E1 +5.828380000E2,6.039356998E1 +5.830970000E2,5.764504824E1 +5.833990000E2,6.041396176E1 +5.836470000E2,6.355942860E1 +5.838990000E2,5.785560268E1 +5.841390000E2,6.060017525E1 +5.844440000E2,6.032069521E1 +5.847010000E2,5.760371100E1 +5.849440000E2,5.491620812E1 +5.851990000E2,5.957978671E1 +5.855370000E2,6.103184032E1 +5.857970000E2,5.896875350E1 +5.861120000E2,6.008190546E1 +5.863990000E2,5.687378544E1 +5.866450000E2,5.874294643E1 +5.869410000E2,5.870806017E1 +5.871860000E2,5.809143232E1 +5.874740000E2,5.847828699E1 +5.877850000E2,5.846232778E1 +5.880500000E2,5.755876921E1 +5.883650000E2,5.609032758E1 +5.887050000E2,5.685283394E1 +5.889730000E2,5.945975832E1 +5.892710000E2,6.114741701E1 +5.895110000E2,6.316132147E1 +5.898100000E2,6.715155367E1 +5.900480000E2,6.367866992E1 +5.903470000E2,5.131949120E1 +5.905900000E2,5.646494575E1 +5.908880000E2,6.096218752E1 +5.911270000E2,6.089171796E1 +5.913720000E2,6.319522071E1 +5.916410000E2,6.016553529E1 +5.920560000E2,5.915189166E1 +5.923330000E2,5.776862186E1 +5.925640000E2,5.840366445E1 +5.927890000E2,5.978914182E1 +5.930440000E2,6.058699711E1 +5.932650000E2,6.012895387E1 +5.935140000E2,6.295025578E1 +5.937520000E2,6.280196012E1 +5.940110000E2,6.194014009E1 +5.943340000E2,6.483906300E1 +5.945870000E2,5.918257578E1 +5.948380000E2,5.620333930E1 +5.951900000E2,6.323403421E1 +5.954240000E2,6.183177681E1 +5.956620000E2,6.120300936E1 +5.959650000E2,5.836925111E1 +5.961890000E2,6.106023171E1 +5.964920000E2,6.153658324E1 +5.967310000E2,6.490772593E1 +5.969960000E2,6.274228676E1 +5.972520000E2,6.139008510E1 +5.975050000E2,6.281232833E1 +5.978180000E2,6.254982632E1 +5.980890000E2,6.205794184E1 +5.983900000E2,6.438771503E1 +5.986230000E2,6.052772463E1 +5.988520000E2,6.375966703E1 +5.991380000E2,5.869985301E1 +5.993860000E2,6.050357712E1 +5.996630000E2,5.547835745E1 +5.999280000E2,5.400421666E1 +6.001960000E2,5.668252186E1 +6.004880000E2,6.001970320E1 +6.007680000E2,6.056987745E1 +6.010550000E2,6.461211967E1 +6.014090000E2,6.399838195E1 +6.016840000E2,5.485596323E1 +6.019450000E2,5.731519087E1 +6.022080000E2,6.691878914E1 +6.024720000E2,6.479201876E1 +6.027260000E2,6.412847214E1 +6.029760000E2,6.025795068E1 +6.032190000E2,6.098133491E1 +6.035120000E2,5.689387521E1 +6.038040000E2,5.639928101E1 +6.041550000E2,5.328068252E1 +6.044370000E2,5.639829798E1 +6.046770000E2,5.892330560E1 +6.049510000E2,5.315638413E1 +6.051900000E2,5.740260439E1 +6.054620000E2,5.339391440E1 +6.057500000E2,5.310371918E1 +6.060710000E2,5.460903952E1 +6.063050000E2,5.407304270E1 +6.065540000E2,5.870790541E1 +6.068060000E2,5.576782972E1 +6.070790000E2,5.976954147E1 +6.074640000E2,6.181180531E1 +6.077240000E2,6.194364733E1 +6.080150000E2,6.794225297E1 +6.082590000E2,6.236601361E1 +6.085470000E2,6.002700779E1 +6.088450000E2,5.971993236E1 +6.090930000E2,5.954735434E1 +6.093460000E2,5.907202371E1 +6.095920000E2,5.993658420E1 +6.098910000E2,5.530332259E1 +6.101850000E2,5.531802018E1 +6.104220000E2,5.376885939E1 +6.107780000E2,5.735355871E1 +6.110210000E2,5.868610156E1 +6.112710000E2,5.312122754E1 +6.115670000E2,5.745102631E1 +6.118550000E2,5.535536940E1 +6.121540000E2,5.088728731E1 +6.123960000E2,5.266907791E1 +6.126860000E2,5.386493253E1 +6.130010000E2,5.670623073E1 +6.132810000E2,5.563278655E1 +6.135150000E2,5.267172926E1 +6.138540000E2,5.386148816E1 +6.141880000E2,5.716468210E1 +6.144880000E2,5.526918781E1 +6.147190000E2,5.659553915E1 +6.149610000E2,5.648341007E1 +6.152730000E2,5.711745846E1 +6.155520000E2,5.918800114E1 +6.158010000E2,5.642548609E1 +6.161000000E2,5.635896926E1 +6.163480000E2,5.899225051E1 +6.166180000E2,5.374343244E1 +6.168690000E2,4.891042404E1 +6.172050000E2,5.065835680E1 +6.174560000E2,5.685264653E1 +6.177340000E2,5.429270039E1 +6.179930000E2,5.499548313E1 +6.182940000E2,5.407177565E1 +6.185300000E2,5.356533799E1 +6.188300000E2,5.378190643E1 +6.191140000E2,5.189020817E1 +6.193870000E2,5.046647494E1 +6.196450000E2,5.501107364E1 +6.198910000E2,5.798814538E1 +6.201660000E2,5.360844474E1 +6.205080000E2,5.353935610E1 +6.208080000E2,5.620189936E1 +6.210820000E2,6.216008765E1 +6.213360000E2,5.767015155E1 +6.216520000E2,6.210101060E1 +6.219320000E2,5.928042926E1 +6.221800000E2,6.394496555E1 +6.224980000E2,5.872213561E1 +6.227430000E2,5.927091626E1 +6.230010000E2,5.235592166E1 +6.232430000E2,6.313120608E1 +6.235470000E2,6.005436888E1 +6.238480000E2,5.999836557E1 +6.240930000E2,5.879748041E1 +6.243920000E2,5.978277378E1 +6.246440000E2,6.050724590E1 +6.249480000E2,6.282777276E1 +6.252520000E2,6.080897043E1 +6.255640000E2,5.889462949E1 +6.258270000E2,5.550476615E1 +6.260730000E2,5.586785505E1 +6.263620000E2,6.576560120E1 +6.266590000E2,6.102361259E1 +6.270050000E2,6.110507706E1 +6.272870000E2,5.753592100E1 +6.275410000E2,6.297666729E1 +6.278490000E2,6.037594793E1 +6.281160000E2,5.849898506E1 +6.284180000E2,6.165631601E1 +6.287090000E2,6.096774109E1 +6.289510000E2,6.176590968E1 +6.292460000E2,5.947061017E1 +6.294820000E2,6.109202024E1 +6.297790000E2,5.322559935E1 +6.301160000E2,4.971181861E1 +6.303880000E2,5.533921521E1 +6.307250000E2,5.478410742E1 +6.310240000E2,5.647795083E1 +6.313200000E2,5.797504265E1 +6.315690000E2,5.403019222E1 +6.318640000E2,5.301910781E1 +6.321010000E2,5.096544207E1 +6.324030000E2,5.324435941E1 +6.326360000E2,5.447050361E1 +6.328960000E2,5.932781903E1 +6.331500000E2,5.967228428E1 +6.334640000E2,6.319489971E1 +6.337810000E2,5.820271574E1 +6.340710000E2,5.910289699E1 +6.343170000E2,5.681937370E1 +6.346260000E2,5.582227275E1 +6.349350000E2,5.745831651E1 +6.352100000E2,5.504019385E1 +6.354620000E2,5.072303887E1 +6.357190000E2,5.366082959E1 +6.359690000E2,5.380227314E1 +6.362560000E2,4.818205454E1 +6.365090000E2,5.989908626E1 +6.368780000E2,5.659012846E1 +6.371610000E2,5.593157997E1 +6.374460000E2,5.135237935E1 +6.377000000E2,5.687788515E1 +6.379550000E2,5.943975502E1 +6.382630000E2,6.290957992E1 +6.385230000E2,5.827099811E1 +6.387780000E2,5.686391746E1 +6.390620000E2,5.771790911E1 +6.393200000E2,5.390066131E1 +6.395830000E2,5.358231960E1 +6.398480000E2,5.564565007E1 +6.401490000E2,5.205482155E1 +6.404200000E2,5.852280051E1 +6.407340000E2,4.836326193E1 +6.409980000E2,5.905115701E1 +6.412560000E2,5.622349390E1 +6.415040000E2,5.891737338E1 +6.417460000E2,5.749377856E1 +6.420310000E2,5.414095183E1 +6.422680000E2,5.482109112E1 +6.425170000E2,5.202942051E1 +6.428000000E2,4.903409276E1 +6.431250000E2,5.495098254E1 +6.434650000E2,5.777911761E1 +6.437680000E2,5.329076638E1 +6.440080000E2,5.886592322E1 +6.443070000E2,5.661637111E1 +6.445560000E2,5.459133399E1 +6.448230000E2,4.858613706E1 +6.450990000E2,5.642020356E1 +6.453590000E2,5.634614530E1 +6.456240000E2,5.769024626E1 +6.458900000E2,6.037646239E1 +6.461470000E2,5.712013563E1 +6.464260000E2,5.393237723E1 +6.467570000E2,5.443825449E1 +6.469850000E2,5.464133184E1 +6.472460000E2,5.185343249E1 +6.475170000E2,5.670688718E1 +6.477900000E2,5.808659132E1 +6.480150000E2,5.879711687E1 +6.483250000E2,5.860991669E1 +6.485730000E2,5.600484597E1 +6.488230000E2,5.291438286E1 +6.491020000E2,5.869236753E1 +6.493260000E2,5.826316690E1 +6.496250000E2,5.619306699E1 +6.499850000E2,6.085970714E1 +6.502400000E2,6.051231588E1 +6.505400000E2,6.096601072E1 +6.507990000E2,6.197068990E1 +6.511180000E2,6.520817743E1 +6.513810000E2,6.377577246E1 +6.516860000E2,6.105485617E1 +6.519940000E2,5.890751001E1 +6.522910000E2,5.911253604E1 +6.525370000E2,6.291937986E1 +6.528540000E2,6.252638881E1 +6.532210000E2,6.337356348E1 +6.535270000E2,5.894334263E1 +6.537830000E2,5.754939005E1 +6.540930000E2,5.500698560E1 +6.543880000E2,5.014350898E1 +6.546880000E2,5.646260920E1 +6.549870000E2,5.951282585E1 +6.552920000E2,6.099782791E1 +6.555480000E2,6.065538365E1 +6.558100000E2,6.827371953E1 +6.560790000E2,6.035931154E1 +6.563820000E2,6.267306134E1 +6.566350000E2,5.826452213E1 +6.568970000E2,6.092938143E1 +6.572010000E2,6.534130041E1 +6.575130000E2,6.111837506E1 +6.577770000E2,5.826481723E1 +6.580330000E2,5.918147323E1 +6.582980000E2,6.100230752E1 +6.585510000E2,6.302217459E1 +6.588060000E2,5.754956715E1 +6.591080000E2,6.111201710E1 +6.593520000E2,6.017410469E1 +6.597040000E2,6.031944923E1 +6.599450000E2,5.943575512E1 +6.602120000E2,5.868776340E1 +6.605570000E2,5.940543513E1 +6.608500000E2,5.886327816E1 +6.610920000E2,5.770522648E1 +6.613840000E2,5.442777508E1 +6.616200000E2,5.394232060E1 +6.619220000E2,5.856638842E1 +6.622160000E2,5.742664400E1 +6.624600000E2,5.472498345E1 +6.627560000E2,5.672985390E1 +6.629770000E2,5.834702318E1 +6.632250000E2,5.907602823E1 +6.634810000E2,5.873031221E1 +6.637670000E2,5.757130737E1 +6.640040000E2,5.572185824E1 +6.643070000E2,5.959142979E1 +6.645480000E2,5.851623707E1 +6.648520000E2,5.856887935E1 +6.650940000E2,6.397218192E1 +6.653890000E2,5.963692586E1 +6.656210000E2,5.934207027E1 +6.659580000E2,5.667856430E1 +6.662640000E2,5.811017468E1 +6.665550000E2,5.505265787E1 +6.667990000E2,5.558350894E1 +6.671320000E2,6.063017800E1 +6.674000000E2,5.568411381E1 +6.676510000E2,5.981422062E1 +6.679580000E2,5.723024768E1 +6.682820000E2,5.036028104E1 +6.685240000E2,5.199205823E1 +6.687970000E2,5.367328475E1 +6.691280000E2,5.936914884E1 +6.693940000E2,5.657797691E1 +6.696490000E2,6.065879377E1 +6.699270000E2,5.657054255E1 +6.702000000E2,5.655716576E1 +6.704770000E2,5.823562265E1 +6.707350000E2,6.065030224E1 +6.710140000E2,6.110776530E1 +6.712700000E2,5.714357796E1 +6.715170000E2,5.604236164E1 +6.717930000E2,6.041748871E1 +6.721240000E2,6.019765334E1 +6.724270000E2,5.928602786E1 +6.727750000E2,5.973060669E1 +6.730710000E2,6.059869751E1 +6.733250000E2,6.116850166E1 +6.736400000E2,6.145214709E1 +6.738890000E2,6.020118097E1 +6.741670000E2,6.048579637E1 +6.744720000E2,6.225337088E1 +6.747550000E2,5.853636068E1 +6.750030000E2,5.999204871E1 +6.752840000E2,5.433989895E1 +6.755100000E2,5.847308735E1 +6.758420000E2,5.913726954E1 +6.760830000E2,6.049449503E1 +6.763830000E2,5.545572399E1 +6.766370000E2,6.246077536E1 +6.768920000E2,6.029598130E1 +6.771340000E2,6.005864514E1 +6.774230000E2,6.582269585E1 +6.776700000E2,6.255104294E1 +6.779140000E2,6.623711836E1 +6.781740000E2,6.684819787E1 +6.784850000E2,6.877250850E1 +6.787420000E2,6.157084767E1 +6.789860000E2,6.054068573E1 +6.793290000E2,6.069583213E1 +6.795810000E2,6.124898856E1 +6.798240000E2,6.136691849E1 +6.800900000E2,6.035594762E1 +6.803920000E2,5.654106541E1 +6.806920000E2,5.587565134E1 +6.809940000E2,5.642134155E1 +6.813020000E2,5.749983358E1 +6.815830000E2,5.576151961E1 +6.818120000E2,5.714589311E1 +6.820580000E2,5.969510914E1 +6.823020000E2,5.824123453E1 +6.825680000E2,5.779273115E1 +6.828630000E2,5.699644891E1 +6.831010000E2,5.900876644E1 +6.833500000E2,6.335540424E1 +6.835940000E2,6.280432027E1 +6.838340000E2,6.194675910E1 +6.841290000E2,5.801082069E1 +6.843650000E2,5.652506879E1 +6.846570000E2,5.895404856E1 +6.848910000E2,5.873705448E1 +6.851950000E2,5.589704153E1 +6.855380000E2,5.379672362E1 +6.857910000E2,6.287056471E1 +6.860900000E2,6.081817617E1 +6.863340000E2,6.807593043E1 +6.866320000E2,5.604389930E1 +6.868800000E2,6.712075434E1 +6.871750000E2,6.290238552E1 +6.874740000E2,6.473105179E1 +6.877330000E2,5.873835234E1 +6.880180000E2,5.800563858E1 +6.882620000E2,5.540095032E1 +6.885810000E2,6.197881428E1 +6.888280000E2,5.541258482E1 +6.890890000E2,5.558277465E1 +6.894010000E2,4.965923685E1 +6.897080000E2,4.860020107E1 +6.899730000E2,5.608167548E1 +6.902300000E2,5.381305593E1 +6.904990000E2,6.079286270E1 +6.908000000E2,6.446965644E1 +6.910380000E2,6.556266140E1 +6.913400000E2,5.418444209E1 +6.916350000E2,5.205102491E1 +6.919820000E2,5.812981404E1 +6.922410000E2,6.500705260E1 +6.925070000E2,6.149947285E1 +6.927750000E2,5.695315316E1 +6.930870000E2,5.775854948E1 +6.933870000E2,6.523399833E1 +6.936300000E2,6.692630865E1 +6.939270000E2,5.793447825E1 +6.942230000E2,5.746396110E1 +6.944770000E2,6.017975210E1 +6.947150000E2,5.956759439E1 +6.950320000E2,6.391288151E1 +6.953110000E2,6.484415086E1 +6.955650000E2,6.664209540E1 +6.958410000E2,6.746668632E1 +6.961050000E2,5.775664920E1 +6.964050000E2,6.383035698E1 +6.967020000E2,5.816763892E1 +6.969600000E2,6.921190909E1 +6.972400000E2,6.165047809E1 +6.975080000E2,5.666810057E1 +6.977540000E2,6.417546300E1 +6.980020000E2,5.788971486E1 +6.982730000E2,5.486922606E1 +6.985850000E2,5.576434723E1 +6.988820000E2,5.548978795E1 +6.991460000E2,5.886820316E1 +6.993970000E2,6.226406326E1 +6.996480000E2,5.601534080E1 +6.999400000E2,5.901385758E1 +7.002040000E2,5.720709772E1 +7.005120000E2,6.318399213E1 +7.007580000E2,6.338981741E1 +7.010170000E2,6.747312486E1 +7.012670000E2,5.788999692E1 +7.015450000E2,4.434465006E1 +7.018710000E2,6.439013955E1 +7.021480000E2,5.375342664E1 +7.023700000E2,6.398282027E1 +7.026160000E2,5.857909138E1 +7.029130000E2,5.670439641E1 +7.031590000E2,5.749786365E1 +7.034320000E2,5.181710985E1 +7.036770000E2,5.871535868E1 +7.039520000E2,5.470297527E1 +7.042240000E2,5.771822323E1 +7.044750000E2,5.236261523E1 +7.047130000E2,5.595332709E1 +7.050480000E2,5.576748295E1 +7.053040000E2,5.334869600E1 +7.055590000E2,5.337806625E1 +7.058180000E2,5.499892680E1 +7.060900000E2,5.490963435E1 +7.063980000E2,5.551078540E1 +7.066680000E2,5.358868238E1 +7.069300000E2,5.203182642E1 +7.071760000E2,5.771053387E1 +7.074630000E2,5.175835182E1 +7.077440000E2,5.402526598E1 +7.080400000E2,5.754717994E1 +7.083470000E2,6.103880587E1 +7.086400000E2,6.284824916E1 +7.088840000E2,6.674666322E1 +7.092010000E2,6.194114278E1 +7.094980000E2,5.796289911E1 +7.097580000E2,5.475547679E1 +7.100170000E2,5.804024708E1 +7.102650000E2,5.606423134E1 +7.105550000E2,5.319247933E1 +7.107930000E2,5.625991375E1 +7.110940000E2,5.589539698E1 +7.114730000E2,6.073460415E1 +7.117930000E2,6.208342045E1 +7.120530000E2,6.335117127E1 +7.123290000E2,5.821275565E1 +7.126280000E2,5.793160357E1 +7.128780000E2,5.509944006E1 +7.131790000E2,5.578357696E1 +7.134760000E2,5.632534225E1 +7.137350000E2,5.466315647E1 +7.140450000E2,5.914530785E1 +7.143020000E2,6.280432125E1 +7.146020000E2,6.333348539E1 +7.149790000E2,5.698482465E1 +7.152920000E2,5.474810308E1 +7.155370000E2,5.417920207E1 +7.157880000E2,6.392184792E1 +7.160720000E2,6.565549591E1 +7.163130000E2,6.082705714E1 +7.166120000E2,5.816285927E1 +7.168430000E2,5.809201859E1 +7.170930000E2,6.016105207E1 +7.173350000E2,5.162287691E1 +7.176230000E2,5.754317879E1 +7.179310000E2,6.166304542E1 +7.181770000E2,6.177004553E1 +7.184320000E2,6.274574776E1 +7.186900000E2,6.104994734E1 +7.189920000E2,5.735301480E1 +7.192340000E2,5.830205645E1 +7.194890000E2,6.212782217E1 +7.197420000E2,5.467685243E1 +7.200420000E2,5.313970583E1 +7.202920000E2,5.278680647E1 +7.205360000E2,5.474141102E1 +7.209140000E2,6.241771654E1 +7.212600000E2,6.394594172E1 +7.215560000E2,6.348358734E1 +7.217980000E2,6.112734048E1 +7.220450000E2,6.226451183E1 +7.222930000E2,6.534082516E1 +7.225960000E2,6.114019283E1 +7.228390000E2,6.421228964E1 +7.231230000E2,6.814847387E1 +7.233690000E2,6.275446304E1 +7.236190000E2,6.679153921E1 +7.239280000E2,6.537583699E1 +7.241850000E2,6.212976374E1 +7.245300000E2,6.553556935E1 +7.248220000E2,5.834030427E1 +7.250930000E2,5.992153646E1 +7.253380000E2,5.595099295E1 +7.256370000E2,5.720822528E1 +7.258800000E2,5.423516872E1 +7.261770000E2,5.906139652E1 +7.264140000E2,6.204477132E1 +7.267140000E2,6.368823365E1 +7.269550000E2,6.513672214E1 +7.272500000E2,6.364997971E1 +7.275370000E2,6.269941998E1 +7.278570000E2,5.948773609E1 +7.281020000E2,5.789544973E1 +7.283740000E2,6.305528689E1 +7.286400000E2,6.245554089E1 +7.289690000E2,6.033221518E1 +7.292310000E2,5.940071821E1 +7.294970000E2,6.176178101E1 +7.298020000E2,5.355172623E1 +7.300580000E2,5.535292187E1 +7.303150000E2,5.274398781E1 +7.305750000E2,5.399957194E1 +7.308780000E2,5.819691646E1 +7.312070000E2,5.434897588E1 +7.315090000E2,6.041787911E1 +7.317850000E2,5.617860881E1 +7.320560000E2,5.558770875E1 +7.323290000E2,5.151264449E1 +7.325860000E2,5.612143969E1 +7.328800000E2,5.405001557E1 +7.331120000E2,5.455354216E1 +7.334090000E2,5.716252136E1 +7.337070000E2,6.416157102E1 +7.339910000E2,6.098010142E1 +7.343020000E2,6.194029449E1 +7.346500000E2,6.091313037E1 +7.349540000E2,5.846954669E1 +7.352410000E2,5.743489407E1 +7.355320000E2,5.872669957E1 +7.357800000E2,5.859080967E1 +7.360560000E2,6.053269456E1 +7.363220000E2,6.117884455E1 +7.366590000E2,5.809887850E1 +7.369420000E2,5.453224539E1 +7.372510000E2,5.639337460E1 +7.375040000E2,5.373613181E1 +7.378630000E2,5.066236714E1 +7.381160000E2,4.653740377E1 +7.383650000E2,6.375011526E1 +7.386730000E2,6.282181577E1 +7.389830000E2,6.727660972E1 +7.392340000E2,6.413328322E1 +7.394790000E2,6.184881400E1 +7.397290000E2,6.430634497E1 +7.400250000E2,6.276256291E1 +7.402610000E2,6.297441350E1 +7.405590000E2,5.306586823E1 +7.408610000E2,5.403016569E1 +7.412260000E2,5.749263443E1 +7.415060000E2,5.657932114E1 +7.417820000E2,5.532222303E1 +7.420430000E2,5.911133378E1 +7.423450000E2,5.822379827E1 +7.426470000E2,6.311870884E1 +7.428860000E2,5.964121243E1 +7.431940000E2,5.708688763E1 +7.434960000E2,5.782189241E1 +7.437480000E2,5.745118469E1 +7.440380000E2,5.258772989E1 +7.442830000E2,5.325984780E1 +7.445410000E2,5.216709684E1 +7.447900000E2,5.485283680E1 +7.450520000E2,6.638751453E1 +7.453640000E2,6.256149725E1 +7.456370000E2,6.851667797E1 +7.459020000E2,6.356784575E1 +7.462040000E2,6.586178842E1 +7.464510000E2,6.099626883E1 +7.467420000E2,6.874341983E1 +7.470300000E2,5.690479739E1 +7.472670000E2,5.749513215E1 +7.475860000E2,5.743840209E1 +7.478480000E2,6.695338823E1 +7.481550000E2,6.575566103E1 +7.484170000E2,6.244751264E1 +7.486690000E2,6.206430480E1 +7.489520000E2,5.755143157E1 +7.492450000E2,6.343498072E1 +7.494820000E2,6.599354682E1 +7.497800000E2,5.994269627E1 +7.500210000E2,6.480563885E1 +7.503160000E2,5.962320355E1 +7.505550000E2,5.907805627E1 +7.508860000E2,5.452673237E1 +7.511450000E2,5.413358853E1 +7.514110000E2,5.786691992E1 +7.516870000E2,6.185088179E1 +7.519570000E2,5.432685780E1 +7.522050000E2,5.297819944E1 +7.524920000E2,5.290855554E1 +7.527910000E2,5.828859659E1 +7.530300000E2,5.880189294E1 +7.533360000E2,5.500578631E1 +7.535910000E2,5.476677878E1 +7.538330000E2,5.414240587E1 +7.541650000E2,5.332866170E1 +7.544620000E2,5.193802785E1 +7.547080000E2,5.242932681E1 +7.549590000E2,6.024921863E1 +7.552020000E2,5.537701523E1 +7.554960000E2,5.489617845E1 +7.557330000E2,5.384280286E1 +7.560410000E2,5.406125999E1 +7.562870000E2,5.246560959E1 +7.565320000E2,5.374729291E1 +7.567680000E2,5.542801483E1 +7.570630000E2,5.525770987E1 +7.573930000E2,5.847670432E1 +7.576660000E2,5.822188632E1 +7.579180000E2,5.822901451E1 +7.582040000E2,5.458975346E1 +7.584820000E2,5.438683247E1 +7.587800000E2,5.260449368E1 +7.590260000E2,5.371245859E1 +7.592870000E2,4.983203663E1 +7.595420000E2,5.018089077E1 +7.598380000E2,5.950969681E1 +7.601480000E2,5.769305363E1 +7.604800000E2,5.747567937E1 +7.607190000E2,5.446335810E1 +7.610040000E2,5.463229896E1 +7.612970000E2,5.644916160E1 +7.615560000E2,5.809520116E1 +7.618460000E2,5.406577519E1 +7.621050000E2,5.362277750E1 +7.623930000E2,5.868559294E1 +7.626230000E2,5.548744129E1 +7.628890000E2,5.613986675E1 +7.631890000E2,5.592058678E1 +7.634870000E2,5.947938191E1 +7.638120000E2,5.945990241E1 +7.640830000E2,5.354091788E1 +7.643270000E2,5.910847411E1 +7.645670000E2,6.112853730E1 +7.648120000E2,5.617469613E1 +7.650520000E2,5.678172470E1 +7.653190000E2,5.293731054E1 +7.655730000E2,5.571573154E1 +7.658430000E2,5.239475172E1 +7.660900000E2,5.710555790E1 +7.663840000E2,5.593714408E1 +7.666500000E2,5.506488062E1 +7.669100000E2,5.276148627E1 +7.671530000E2,5.087813070E1 +7.674500000E2,4.966858228E1 +7.677070000E2,4.690170064E1 +7.679870000E2,5.097718665E1 +7.682460000E2,5.173969669E1 +7.685220000E2,5.562988056E1 +7.687630000E2,5.194720020E1 +7.690630000E2,5.590118249E1 +7.693610000E2,5.613585205E1 +7.696030000E2,5.417299550E1 +7.698530000E2,5.925774948E1 +7.702010000E2,5.729895975E1 +7.704610000E2,5.765570707E1 +7.707610000E2,6.211008380E1 +7.710570000E2,5.846530012E1 +7.712970000E2,5.766544416E1 +7.715460000E2,5.716238768E1 +7.718080000E2,5.700535494E1 +7.720510000E2,5.592606747E1 +7.723260000E2,5.771214429E1 +7.725940000E2,5.753442175E1 +7.728830000E2,5.541298336E1 +7.731860000E2,5.137853822E1 +7.735420000E2,5.462649470E1 +7.738320000E2,5.454281912E1 +7.740820000E2,6.803752283E1 +7.743260000E2,6.852980541E1 +7.745820000E2,7.007631543E1 +7.748270000E2,7.009876218E1 +7.751160000E2,6.950363051E1 +7.753520000E2,6.338954984E1 +7.755910000E2,5.500200077E1 +7.758880000E2,5.358702362E1 +7.761340000E2,5.718303470E1 +7.763730000E2,5.887519420E1 +7.767050000E2,5.795457078E1 +7.769970000E2,5.796499201E1 +7.773000000E2,5.644912180E1 +7.775570000E2,5.804780214E1 +7.778740000E2,5.958528627E1 +7.781300000E2,5.635913866E1 +7.784430000E2,5.593106857E1 +7.787280000E2,6.063168213E1 +7.789960000E2,5.917208792E1 +7.792560000E2,5.719923422E1 +7.795050000E2,6.400429125E1 +7.797680000E2,5.733192807E1 +7.800440000E2,6.018331087E1 +7.803000000E2,6.350407169E1 +7.805530000E2,6.357762743E1 +7.808590000E2,6.772563953E1 +7.811430000E2,6.431848914E1 +7.814050000E2,5.710721917E1 +7.816950000E2,5.646111127E1 +7.819500000E2,5.564600214E1 +7.822050000E2,6.362802489E1 +7.824550000E2,6.278310471E1 +7.827010000E2,5.851995741E1 +7.829620000E2,5.759567059E1 +7.832630000E2,5.449669640E1 +7.835070000E2,6.040303881E1 +7.837500000E2,5.743841461E1 +7.839990000E2,6.096558185E1 +7.842840000E2,7.161293257E1 +7.845270000E2,7.417435903E1 +7.848410000E2,6.386070968E1 +7.851390000E2,6.234904760E1 +7.854350000E2,6.321731436E1 +7.856820000E2,6.294103551E1 +7.859780000E2,6.210337552E1 +7.862150000E2,6.765383904E1 +7.865650000E2,6.346682761E1 +7.868610000E2,6.221020232E1 +7.871280000E2,6.119530731E1 +7.873850000E2,5.314248269E1 +7.876880000E2,5.288680780E1 +7.879230000E2,5.064349321E1 +7.882230000E2,5.786336298E1 +7.884630000E2,5.341864841E1 +7.887250000E2,5.286568073E1 +7.890140000E2,5.272997567E1 +7.893180000E2,5.904110581E1 +7.896690000E2,5.748622391E1 +7.899200000E2,5.773986136E1 +7.902160000E2,5.480967078E1 +7.904710000E2,5.627241382E1 +7.907280000E2,5.456362797E1 +7.909900000E2,5.766408512E1 +7.912380000E2,5.413586400E1 +7.914940000E2,5.234403284E1 +7.917720000E2,5.190170354E1 +7.920440000E2,5.227759392E1 +7.923170000E2,4.410400383E1 +7.926220000E2,3.508270700E1 +7.929370000E2,3.887828085E1 +7.932030000E2,4.522069604E1 +7.934660000E2,4.928233980E1 +7.937420000E2,4.706401379E1 +7.940710000E2,4.988989997E1 +7.943700000E2,5.767827889E1 +7.946060000E2,5.506606719E1 +7.949050000E2,6.107887773E1 +7.952060000E2,5.849609892E1 +7.955030000E2,5.343173328E1 +7.957490000E2,5.007726003E1 +7.960580000E2,4.763873915E1 +7.963010000E2,5.045894898E1 +7.966040000E2,6.859700710E1 +7.968900000E2,6.734256534E1 +7.971550000E2,6.661489392E1 +7.974110000E2,6.556398865E1 +7.976580000E2,5.519705677E1 +7.979230000E2,5.503316479E1 +7.982060000E2,5.955770829E1 +7.984280000E2,5.777834711E1 +7.987260000E2,6.050467535E1 +7.989700000E2,5.583639573E1 +7.993330000E2,5.988908902E1 +7.995750000E2,5.875791040E1 +7.998670000E2,6.166637478E1 +8.001160000E2,5.690435901E1 +8.004160000E2,5.599911293E1 +8.006610000E2,5.889628547E1 +8.009180000E2,6.227540789E1 +8.011740000E2,6.572663811E1 +8.014300000E2,6.013467784E1 +8.016770000E2,6.250368579E1 +8.019910000E2,6.532292099E1 +8.023560000E2,5.377170031E1 +8.026370000E2,5.535595108E1 +8.029110000E2,5.147526495E1 +8.031720000E2,4.993046061E1 +8.034760000E2,6.394035794E1 +8.037260000E2,5.983119170E1 +8.040270000E2,5.967243802E1 +8.042930000E2,6.559340840E1 +8.046100000E2,5.262215496E1 +8.049160000E2,5.397812040E1 +8.051780000E2,5.680330381E1 +8.054740000E2,5.857171626E1 +8.058060000E2,5.577198454E1 +8.060880000E2,5.916891157E1 +8.063460000E2,6.120078548E1 +8.066060000E2,6.223167379E1 +8.069230000E2,6.161077093E1 +8.071720000E2,5.812180846E1 +8.074300000E2,5.665535607E1 +8.077230000E2,5.401482687E1 +8.079600000E2,5.631804256E1 +8.082610000E2,5.267806276E1 +8.085540000E2,5.766120113E1 +8.088100000E2,5.717509884E1 +8.091690000E2,5.698714543E1 +8.094130000E2,5.807918354E1 +8.096940000E2,5.364566959E1 +8.099320000E2,5.678502402E1 +8.102110000E2,5.494444844E1 +8.104710000E2,6.216218230E1 +8.107550000E2,5.504588420E1 +8.110030000E2,5.220186059E1 +8.112810000E2,5.338487037E1 +8.115430000E2,5.422122114E1 +8.118180000E2,6.217546099E1 +8.121430000E2,5.739027439E1 +8.124800000E2,5.218554734E1 +8.128080000E2,6.183667492E1 +8.130850000E2,6.028246668E1 +8.133620000E2,6.620979851E1 +8.135950000E2,5.810667246E1 +8.138630000E2,6.096670869E1 +8.141300000E2,5.149777407E1 +8.143960000E2,4.993954713E1 +8.146400000E2,5.196561010E1 +8.149350000E2,5.727966309E1 +8.151710000E2,5.489316784E1 +8.154100000E2,5.619291420E1 +8.157500000E2,5.425831711E1 +8.160430000E2,5.677079709E1 +8.163250000E2,5.289383275E1 +8.165600000E2,5.573749616E1 +8.168090000E2,5.211960412E1 +8.170840000E2,5.029895102E1 +8.173170000E2,5.085418245E1 +8.175630000E2,5.101392152E1 +8.178870000E2,5.228690479E1 +8.182130000E2,5.919931006E1 +8.184680000E2,5.288617356E1 +8.188320000E2,5.626269479E1 +8.191030000E2,6.124827198E1 +8.193870000E2,5.889071517E1 +8.196160000E2,5.957980623E1 +8.199180000E2,5.440069788E1 +8.201590000E2,5.524226830E1 +8.204560000E2,5.147688867E1 +8.206870000E2,5.390780082E1 +8.209820000E2,6.509870984E1 +8.212270000E2,6.421388309E1 +8.215230000E2,5.843840462E1 +8.218170000E2,5.422512027E1 +8.221280000E2,5.468614274E1 +8.223780000E2,5.922850585E1 +8.226710000E2,6.486031186E1 +8.229330000E2,6.154967201E1 +8.232420000E2,5.893257410E1 +8.235100000E2,6.020329639E1 +8.238290000E2,5.483779552E1 +8.240760000E2,5.692914998E1 +8.243280000E2,6.347347085E1 +8.245930000E2,5.345306004E1 +8.248670000E2,6.141647052E1 +8.252000000E2,5.672783001E1 +8.254550000E2,5.605661334E1 +8.257610000E2,5.699330885E1 +8.260410000E2,5.489256860E1 +8.263010000E2,6.262090025E1 +8.265830000E2,5.457719262E1 +8.268180000E2,5.416382407E1 +8.271260000E2,4.993919751E1 +8.273700000E2,5.569569056E1 +8.276330000E2,5.514364162E1 +8.278890000E2,5.653204472E1 +8.281470000E2,5.784406489E1 +8.284370000E2,5.752811490E1 +8.286720000E2,5.727510089E1 +8.289650000E2,5.900575965E1 +8.292510000E2,5.679022390E1 +8.294860000E2,5.722234118E1 +8.297350000E2,5.952638514E1 +8.300320000E2,5.925181191E1 +8.302740000E2,5.930148258E1 +8.305160000E2,5.668145507E1 +8.307730000E2,5.590492759E1 +8.310130000E2,6.302930486E1 +8.312510000E2,5.733539345E1 +8.315800000E2,5.620349253E1 +8.318910000E2,5.495250031E1 +8.322000000E2,5.501979251E1 +8.324620000E2,5.208226415E1 +8.327390000E2,5.765748383E1 +8.329950000E2,5.489193423E1 +8.332490000E2,5.593428331E1 +8.335720000E2,5.714652117E1 +8.338250000E2,5.832769426E1 +8.341370000E2,5.884156077E1 +8.344030000E2,5.840498509E1 +8.347020000E2,5.864505811E1 +8.350330000E2,6.356982434E1 +8.353340000E2,6.286445683E1 +8.355720000E2,5.657384439E1 +8.358940000E2,5.660970318E1 +8.361720000E2,5.918731584E1 +8.364160000E2,5.825788220E1 +8.366580000E2,5.592754487E1 +8.369110000E2,5.553717092E1 +8.371910000E2,5.495027293E1 +8.374510000E2,5.546329287E1 +8.377420000E2,5.746402701E1 +8.379890000E2,5.891922359E1 +8.383130000E2,6.522858798E1 +8.385710000E2,6.384617776E1 +8.388430000E2,5.435088619E1 +8.390670000E2,5.460135210E1 +8.393610000E2,5.982769627E1 +8.396020000E2,5.936265195E1 +8.398550000E2,6.034701146E1 +8.401470000E2,6.875861473E1 +8.403840000E2,6.968788985E1 +8.406760000E2,6.653493651E1 +8.409120000E2,6.664139767E1 +8.412200000E2,6.195236791E1 +8.415280000E2,5.759269564E1 +8.418110000E2,5.704906263E1 +8.420770000E2,5.199124728E1 +8.423350000E2,5.625309672E1 +8.426060000E2,5.627754144E1 +8.428710000E2,6.285304788E1 +8.431220000E2,6.089762622E1 +8.434160000E2,5.828079525E1 +8.436650000E2,5.581703965E1 +8.439650000E2,5.326092983E1 +8.442070000E2,5.247397640E1 +8.444500000E2,5.104216729E1 +8.447560000E2,4.981466747E1 +8.450730000E2,5.794387296E1 +8.453210000E2,6.103400827E1 +8.455680000E2,6.053778141E1 +8.458610000E2,5.413066164E1 +8.461240000E2,5.591468697E1 +8.463740000E2,5.289659812E1 +8.466770000E2,6.014390988E1 +8.469740000E2,5.713983843E1 +8.472340000E2,5.457406708E1 +8.474800000E2,5.848999564E1 +8.478210000E2,5.310404619E1 +8.481040000E2,5.463633704E1 +8.483620000E2,5.329096892E1 +8.486670000E2,5.667645304E1 +8.489890000E2,5.540515985E1 +8.492420000E2,5.014593999E1 +8.495060000E2,5.019949668E1 +8.497660000E2,4.724526190E1 +8.500410000E2,4.632701850E1 +8.502660000E2,4.436725745E1 +8.505710000E2,5.273585220E1 +8.508470000E2,5.232501704E1 +8.511370000E2,5.177389205E1 +8.513940000E2,5.236772038E1 +8.516560000E2,4.869019062E1 +8.518980000E2,5.254056589E1 +8.521620000E2,5.441215371E1 +8.524060000E2,5.431954181E1 +8.526720000E2,4.873515026E1 +8.529820000E2,5.253291311E1 +8.532350000E2,5.201920339E1 +8.535330000E2,5.083296820E1 +8.537750000E2,5.373650683E1 +8.540560000E2,6.162621210E1 +8.543710000E2,6.137876928E1 +8.546190000E2,6.347980201E1 +8.548850000E2,6.480134627E1 +8.551390000E2,6.344943059E1 +8.553830000E2,6.653758852E1 +8.556910000E2,6.821811094E1 +8.559900000E2,6.564040109E1 +8.562480000E2,6.310710880E1 +8.565060000E2,5.625485760E1 +8.567860000E2,5.886920329E1 +8.570590000E2,5.638007706E1 +8.573180000E2,5.477312089E1 +8.576670000E2,5.402637072E1 +8.579310000E2,5.282806817E1 +8.582400000E2,5.743205922E1 +8.584770000E2,5.608834078E1 +8.587730000E2,5.917700537E1 +8.590950000E2,5.757076232E1 +8.593390000E2,5.680975976E1 +8.596110000E2,5.316092446E1 +8.598560000E2,5.634389465E1 +8.601130000E2,5.912558361E1 +8.603880000E2,5.827706684E1 +8.606370000E2,5.580056474E1 +8.609720000E2,5.622551838E1 +8.612190000E2,5.816090597E1 +8.614650000E2,5.710633258E1 +8.617260000E2,6.762679027E1 +8.619970000E2,6.050550643E1 +8.622480000E2,6.017289530E1 +8.624960000E2,5.884551198E1 +8.627510000E2,5.823958631E1 +8.630120000E2,5.747421536E1 +8.632920000E2,5.891926612E1 +8.635810000E2,5.962176090E1 +8.638680000E2,5.932606834E1 +8.642430000E2,6.035939553E1 +8.645920000E2,5.892740034E1 +8.649090000E2,6.158225090E1 +8.651650000E2,5.941856931E1 +8.654560000E2,5.517726055E1 +8.656900000E2,5.573554393E1 +8.659400000E2,6.300977067E1 +8.662170000E2,6.346838855E1 +8.664760000E2,5.840482341E1 +8.667600000E2,5.656477763E1 +8.669980000E2,5.809371706E1 +8.672500000E2,5.957523428E1 +8.675890000E2,5.868790884E1 +8.678670000E2,6.643274765E1 +8.681530000E2,6.202304252E1 +8.684260000E2,6.167390940E1 +8.686760000E2,6.561664622E1 +8.689220000E2,6.221849135E1 +8.691620000E2,5.873701255E1 +8.694080000E2,5.721335717E1 +8.696600000E2,5.775578048E1 +8.699210000E2,6.139190630E1 +8.702060000E2,5.695582014E1 +8.705330000E2,5.285782467E1 +8.708800000E2,5.254436807E1 +8.711320000E2,5.941119733E1 +8.714840000E2,5.561687107E1 +8.717890000E2,5.226341013E1 +8.720340000E2,5.351737673E1 +8.723120000E2,5.581753669E1 +8.725450000E2,5.544476975E1 +8.727930000E2,5.112331517E1 +8.731050000E2,5.669948434E1 +8.733660000E2,5.553741274E1 +8.736450000E2,5.287392842E1 +8.738710000E2,5.342755356E1 +8.742030000E2,5.525376809E1 +8.745760000E2,5.790146612E1 +8.748470000E2,5.775550126E1 +8.750900000E2,5.828043309E1 +8.753860000E2,5.689517506E1 +8.756490000E2,5.836000549E1 +8.759170000E2,5.887049385E1 +8.761640000E2,5.731343570E1 +8.764240000E2,5.947081752E1 +8.766660000E2,5.735732777E1 +8.769150000E2,5.791222148E1 +8.771870000E2,5.217820200E1 +8.775110000E2,5.373516267E1 +8.777550000E2,5.639663701E1 +8.779960000E2,5.308435393E1 +8.782370000E2,5.327040257E1 +8.785510000E2,5.539866825E1 +8.788050000E2,5.451580533E1 +8.791100000E2,5.664888244E1 +8.793670000E2,5.439058144E1 +8.796110000E2,6.546629591E1 +8.799090000E2,6.080313073E1 +8.801560000E2,6.023654065E1 +8.804070000E2,5.547022044E1 +8.807450000E2,5.933402552E1 +8.809880000E2,6.073235462E1 +8.812850000E2,5.811897337E1 +8.815210000E2,5.670873426E1 +8.818240000E2,6.239450766E1 +8.821160000E2,6.033779387E1 +8.823610000E2,5.921328684E1 +8.826600000E2,5.808215882E1 +8.828910000E2,5.927124720E1 +8.831280000E2,5.254346564E1 +8.834120000E2,5.755316817E1 +8.837180000E2,5.815703318E1 +8.840150000E2,5.925974643E1 +8.842610000E2,5.406291788E1 +8.845520000E2,5.892672719E1 +8.847970000E2,6.343231596E1 +8.850390000E2,6.045689612E1 +8.853340000E2,5.903303339E1 +8.855810000E2,5.897514906E1 +8.858230000E2,5.682843230E1 +8.860690000E2,4.647265993E1 +8.863400000E2,5.617216143E1 +8.865730000E2,5.412892937E1 +8.869100000E2,6.210166513E1 +8.872070000E2,6.369099543E1 +8.874540000E2,6.052073025E1 +8.877480000E2,6.125108403E1 +8.879990000E2,6.087163347E1 +8.882550000E2,6.365510666E1 +8.885320000E2,5.341778352E1 +8.887600000E2,5.238943476E1 +8.890050000E2,6.378561240E1 +8.892460000E2,6.182956815E1 +8.895070000E2,6.027537659E1 +8.897770000E2,5.747996426E1 +8.901220000E2,5.606477689E1 +8.903620000E2,5.816493441E1 +8.907030000E2,5.740436721E1 +8.909540000E2,5.812990427E1 +8.912060000E2,5.757163286E1 +8.914520000E2,5.669306215E1 +8.917150000E2,5.593698617E1 +8.919580000E2,5.867011196E1 +8.922060000E2,6.001129970E1 +8.924480000E2,6.247831114E1 +8.927080000E2,5.501506807E1 +8.929550000E2,5.918039480E1 +8.932790000E2,5.750337148E1 +8.935260000E2,5.382626014E1 +8.937850000E2,5.632583646E1 +8.940370000E2,5.552393419E1 +8.943380000E2,5.417609473E1 +8.946050000E2,5.314873345E1 +8.948570000E2,5.537690953E1 +8.951790000E2,6.168371256E1 +8.954540000E2,6.142331687E1 +8.957690000E2,5.914263764E1 +8.960690000E2,6.039127428E1 +8.963670000E2,5.303465172E1 +8.966720000E2,5.819495208E1 +8.969200000E2,5.956457754E1 +8.972240000E2,5.554166388E1 +8.974940000E2,5.700583380E1 +8.978160000E2,5.525596264E1 +8.981210000E2,5.878997726E1 +8.983720000E2,5.661289659E1 +8.986510000E2,6.039909322E1 +8.988730000E2,5.569487247E1 +8.991240000E2,5.857026750E1 +8.993800000E2,6.116905404E1 +8.996580000E2,6.331625006E1 +8.998890000E2,5.612470465E1 +9.001440000E2,5.098243988E1 +9.004020000E2,5.779474181E1 +9.006650000E2,5.597754805E1 +9.009440000E2,5.706395638E1 +9.012380000E2,5.989184595E1 +9.015000000E2,5.905145002E1 +9.017620000E2,5.913397617E1 +9.020230000E2,5.831976398E1 +9.022900000E2,5.400731512E1 +9.025900000E2,6.547285797E1 +9.029050000E2,6.534571775E1 +9.032100000E2,5.428834230E1 +9.034580000E2,4.919896084E1 +9.037180000E2,5.326934205E1 +9.039740000E2,5.135684539E1 +9.042700000E2,5.784030554E1 +9.045180000E2,5.789711892E1 +9.048150000E2,5.501985460E1 +9.050680000E2,5.394185103E1 +9.053920000E2,5.504541187E1 +9.056620000E2,5.574384904E1 +9.059260000E2,5.198297704E1 +9.062920000E2,5.507423148E1 +9.065460000E2,5.073979477E1 +9.068090000E2,5.409355601E1 +9.071500000E2,5.842003605E1 +9.074380000E2,6.323761852E1 +9.076890000E2,5.475142925E1 +9.079510000E2,5.285089191E1 +9.082580000E2,6.228883476E1 +9.085110000E2,6.229139223E1 +9.087590000E2,5.849936549E1 +9.090220000E2,6.382664868E1 +9.092560000E2,5.234586511E1 +9.095720000E2,5.506613760E1 +9.098700000E2,5.883918884E1 +9.101180000E2,5.722745073E1 +9.103980000E2,6.006905181E1 +9.106670000E2,6.333821195E1 +9.109390000E2,5.997503412E1 +9.111770000E2,5.691091005E1 +9.114250000E2,5.629684565E1 +9.117070000E2,5.944947286E1 +9.119370000E2,5.757115704E1 +9.122030000E2,5.617546709E1 +9.125090000E2,5.506166951E1 +9.128480000E2,5.345826069E1 +9.131070000E2,5.586702127E1 +9.133900000E2,6.075354367E1 +9.137040000E2,5.668960998E1 +9.139920000E2,5.584388878E1 +9.142800000E2,5.668519299E1 +9.145740000E2,5.400550993E1 +9.148220000E2,5.668991412E1 +9.150670000E2,5.455006531E1 +9.153720000E2,5.750041942E1 +9.156590000E2,5.756327349E1 +9.159630000E2,5.822694927E1 +9.162110000E2,5.764545771E1 +9.164660000E2,5.716015909E1 +9.167560000E2,5.136001811E1 +9.170200000E2,4.706951064E1 +9.172710000E2,4.999131008E1 +9.175180000E2,5.619976433E1 +9.178030000E2,5.463675948E1 +9.180580000E2,4.995546642E1 +9.183000000E2,5.328928391E1 +9.185570000E2,4.808104957E1 +9.188650000E2,5.411517612E1 +9.191080000E2,5.672946344E1 +9.194270000E2,5.737096863E1 +9.196850000E2,5.974051238E1 +9.199830000E2,5.656564726E1 +9.202340000E2,5.709524531E1 +9.204810000E2,5.408385116E1 +9.208240000E2,5.414410830E1 +9.210650000E2,5.638214177E1 +9.213330000E2,5.753313030E1 +9.216130000E2,5.354803656E1 +9.219120000E2,6.191736419E1 +9.221480000E2,5.734366551E1 +9.224580000E2,5.684475304E1 +9.228030000E2,6.045431811E1 +9.230950000E2,5.973057312E1 +9.233960000E2,5.537690593E1 +9.236620000E2,5.411771801E1 +9.239600000E2,5.513839001E1 +9.242140000E2,5.699753068E1 +9.244670000E2,6.643461088E1 +9.247300000E2,6.062391899E1 +9.250330000E2,5.798096332E1 +9.253240000E2,6.347140522E1 +9.255740000E2,6.166496817E1 +9.259250000E2,6.190058171E1 +9.261820000E2,6.329204590E1 +9.264380000E2,6.389135880E1 +9.267030000E2,5.917517639E1 +9.269480000E2,5.809772267E1 +9.272170000E2,5.733235238E1 +9.274780000E2,5.226841119E1 +9.277860000E2,5.876554483E1 +9.280720000E2,6.281089568E1 +9.283510000E2,5.368859448E1 +9.286400000E2,5.449014251E1 +9.289370000E2,5.589991313E1 +9.292390000E2,5.452044152E1 +9.294860000E2,5.574135623E1 +9.297800000E2,5.656551806E1 +9.300200000E2,5.368800996E1 +9.302990000E2,5.374372369E1 +9.305490000E2,5.520696346E1 +9.308500000E2,5.642038107E1 +9.311480000E2,5.958603376E1 +9.314510000E2,5.775531382E1 +9.316980000E2,5.561486787E1 +9.319610000E2,5.826734748E1 +9.322700000E2,5.604871965E1 +9.325550000E2,5.170668645E1 +9.328670000E2,5.089285684E1 +9.331190000E2,4.724853188E1 +9.333790000E2,4.756075237E1 +9.336260000E2,5.199039629E1 +9.338890000E2,4.980140945E1 +9.341620000E2,5.530081877E1 +9.344120000E2,5.549144740E1 +9.347250000E2,5.515929093E1 +9.349780000E2,5.399104933E1 +9.352760000E2,5.325801117E1 +9.356240000E2,5.040008457E1 +9.359420000E2,5.360316460E1 +9.361890000E2,5.191591881E1 +9.364390000E2,5.324554606E1 +9.366970000E2,5.654671572E1 +9.370100000E2,5.711795620E1 +9.372590000E2,5.478625541E1 +9.375950000E2,5.667621371E1 +9.378550000E2,5.463565976E1 +9.381050000E2,5.398825590E1 +9.383580000E2,5.436030102E1 +9.386390000E2,5.091983440E1 +9.389120000E2,5.286705124E1 +9.391550000E2,5.236775571E1 +9.394300000E2,5.738794921E1 +9.397170000E2,5.727939554E1 +9.399750000E2,6.319402051E1 +9.402560000E2,5.468250624E1 +9.405530000E2,5.641852830E1 +9.408670000E2,6.200700436E1 +9.411390000E2,6.163446308E1 +9.413860000E2,7.148312536E1 +9.416340000E2,6.050927243E1 +9.419040000E2,5.667078757E1 +9.421350000E2,5.749142651E1 +9.424700000E2,5.240604485E1 +9.427760000E2,5.466454134E1 +9.430280000E2,6.082141946E1 +9.433300000E2,6.003969647E1 +9.436110000E2,6.121195378E1 +9.438460000E2,5.625129518E1 +9.441420000E2,5.911131348E1 +9.443880000E2,5.468317436E1 +9.446840000E2,6.009033853E1 +9.449440000E2,5.906624737E1 +9.452490000E2,5.464875325E1 +9.455970000E2,5.384566268E1 +9.458510000E2,5.044039840E1 +9.461140000E2,5.035886237E1 +9.463820000E2,5.734112986E1 +9.466620000E2,5.229112628E1 +9.469690000E2,6.028523542E1 +9.472250000E2,5.837101422E1 +9.475000000E2,5.619491985E1 +9.477970000E2,5.364209552E1 +9.480560000E2,5.511055516E1 +9.483560000E2,5.308396885E1 +9.486650000E2,5.587440008E1 +9.490640000E2,5.273632850E1 +9.493730000E2,6.231816715E1 +9.496570000E2,6.253734875E1 +9.499030000E2,5.554720788E1 +9.501460000E2,5.631566079E1 +9.503970000E2,5.626896653E1 +9.506490000E2,5.691941114E1 +9.508990000E2,5.116659255E1 +9.511440000E2,4.922875084E1 +9.514130000E2,5.936693495E1 +9.517070000E2,5.638156112E1 +9.520200000E2,5.180629212E1 +9.523780000E2,4.998674108E1 +9.526570000E2,4.841587788E1 +9.529100000E2,5.028896526E1 +9.531650000E2,4.965921907E1 +9.534690000E2,4.493319669E1 +9.537260000E2,4.598612712E1 +9.539740000E2,5.276251951E1 +9.542810000E2,4.126037796E1 +9.545830000E2,4.737114191E1 +9.548330000E2,4.411553821E1 +9.550850000E2,4.440050708E1 +9.553840000E2,5.260541790E1 +9.556980000E2,5.273901651E1 +9.559710000E2,5.383409632E1 +9.562220000E2,5.239354977E1 +9.564980000E2,4.759742823E1 +9.568040000E2,5.239869448E1 +9.570530000E2,5.238241691E1 +9.573300000E2,5.227349879E1 +9.575630000E2,5.272394727E1 +9.578410000E2,5.414710772E1 +9.580970000E2,5.325895305E1 +9.583410000E2,5.577122645E1 +9.586370000E2,5.015645058E1 +9.590040000E2,5.173028231E1 +9.593040000E2,5.447959265E1 +9.595640000E2,5.484713415E1 +9.598110000E2,5.470137539E1 +9.601060000E2,5.878769788E1 +9.603740000E2,5.851189839E1 +9.606810000E2,5.400762096E1 +9.609290000E2,5.749049444E1 +9.611870000E2,5.241750519E1 +9.614480000E2,4.979747952E1 +9.616960000E2,5.096881110E1 +9.620030000E2,5.149804171E1 +9.623180000E2,5.481599911E1 +9.625540000E2,5.138365056E1 +9.628240000E2,5.235851031E1 +9.630470000E2,4.871540913E1 +9.632880000E2,5.651540461E1 +9.635860000E2,5.650278128E1 +9.638210000E2,5.704973755E1 +9.641160000E2,5.757712252E1 +9.643960000E2,5.881159691E1 +9.646600000E2,5.355579494E1 +9.649750000E2,5.539751700E1 +9.652910000E2,4.797714339E1 +9.655520000E2,5.082548637E1 +9.658080000E2,5.579830605E1 +9.660780000E2,5.554406278E1 +9.663250000E2,5.354814316E1 +9.665660000E2,5.463107171E1 +9.668090000E2,5.368692433E1 +9.671300000E2,5.364867335E1 +9.674540000E2,5.468973775E1 +9.677060000E2,5.815904844E1 +9.680020000E2,5.598522308E1 +9.682480000E2,5.541083624E1 +9.685850000E2,5.512396132E1 +9.688400000E2,5.530796688E1 +9.691210000E2,5.433954611E1 +9.693810000E2,5.507440645E1 +9.696820000E2,5.086817906E1 +9.699140000E2,5.696191489E1 +9.701640000E2,5.845256581E1 +9.704420000E2,5.620226260E1 +9.706770000E2,5.629047170E1 +9.709750000E2,5.811655252E1 +9.712290000E2,5.703185419E1 +9.714900000E2,5.716734774E1 +9.718450000E2,5.493596869E1 +9.720910000E2,5.909437017E1 +9.723380000E2,5.710675060E1 +9.725910000E2,5.780279559E1 +9.728920000E2,5.860060144E1 +9.731360000E2,6.078900999E1 +9.734260000E2,5.852116194E1 +9.736640000E2,5.905899453E1 +9.739130000E2,5.636299630E1 +9.742090000E2,6.289355999E1 +9.744870000E2,6.167909115E1 +9.747290000E2,6.098057792E1 +9.750690000E2,5.906667343E1 +9.753320000E2,6.018572501E1 +9.756150000E2,5.718512970E1 +9.759100000E2,5.146063018E1 +9.761570000E2,5.733244632E1 +9.764050000E2,5.368365894E1 +9.766600000E2,5.486016267E1 +9.769150000E2,5.908582599E1 +9.771910000E2,5.733773036E1 +9.774400000E2,5.566361416E1 +9.777680000E2,5.819125256E1 +9.781220000E2,5.947694304E1 +9.783640000E2,6.140057637E1 +9.786330000E2,5.721849738E1 +9.788550000E2,5.617504209E1 +9.791010000E2,5.660293849E1 +9.793960000E2,5.174001770E1 +9.796880000E2,5.083474014E1 +9.799290000E2,5.184104339E1 +9.801850000E2,5.025385313E1 +9.804850000E2,5.286605500E1 +9.807270000E2,5.586849562E1 +9.809750000E2,5.666036754E1 +9.812950000E2,5.248500918E1 +9.815810000E2,5.416072977E1 +9.818360000E2,5.799655965E1 +9.821300000E2,5.801841935E1 +9.823770000E2,5.977514968E1 +9.826270000E2,5.676871456E1 +9.828850000E2,5.104814549E1 +9.831730000E2,5.834620153E1 +9.834010000E2,5.660640582E1 +9.836620000E2,5.686451748E1 +9.839750000E2,5.998440952E1 +9.842240000E2,5.556687478E1 +9.846000000E2,5.811069315E1 +9.848430000E2,5.843499893E1 +9.851250000E2,5.180956247E1 +9.853860000E2,5.206236639E1 +9.856480000E2,5.641840701E1 +9.859110000E2,5.518588565E1 +9.861920000E2,5.697237679E1 +9.864550000E2,5.411246614E1 +9.867510000E2,5.214533821E1 +9.869880000E2,5.642389575E1 +9.872440000E2,6.015294933E1 +9.875470000E2,5.809991100E1 +9.879150000E2,6.420044247E1 +9.881610000E2,6.042656173E1 +9.884280000E2,5.938959873E1 +9.886840000E2,6.059888233E1 +9.889870000E2,5.282749720E1 +9.892620000E2,5.638110380E1 +9.895440000E2,4.900409689E1 +9.897740000E2,4.971849802E1 +9.900320000E2,5.061428463E1 +9.903370000E2,5.829922071E1 +9.905860000E2,5.812083213E1 +9.908910000E2,5.500587720E1 +9.911860000E2,5.677481104E1 +9.914380000E2,5.502691141E1 +9.916830000E2,5.294500154E1 +9.919560000E2,5.700444986E1 +9.921770000E2,5.448756275E1 +9.924220000E2,5.785741234E1 +9.927280000E2,5.702180374E1 +9.929670000E2,6.013415875E1 +9.932080000E2,5.533496795E1 +9.934640000E2,5.695301526E1 +9.937440000E2,5.436173732E1 +9.940620000E2,5.092257074E1 +9.944480000E2,4.973000793E1 +9.946940000E2,4.871235512E1 +9.949410000E2,5.171412848E1 +9.951960000E2,5.643245777E1 +9.954520000E2,5.548819002E1 +9.957530000E2,5.694822585E1 +9.960600000E2,5.668072577E1 +9.963110000E2,5.547400320E1 +9.966010000E2,5.667137699E1 +9.968430000E2,5.866196066E1 +9.971120000E2,5.641527163E1 +9.974300000E2,5.505243365E1 +9.977140000E2,5.491253296E1 +9.979940000E2,5.642986287E1 +9.982400000E2,5.111113898E1 +9.985270000E2,5.228293633E1 +9.987770000E2,5.380023266E1 +9.990760000E2,5.259255492E1 +9.993610000E2,5.359948032E1 +9.996550000E2,5.817439497E1 +9.999080000E2,5.712087238E1 +1.000199000E3,6.016800470E1 +1.000435000E3,5.758076017E1 +1.000772000E3,5.328951429E1 +1.001047000E3,5.373102399E1 +1.001303000E3,5.905317642E1 +1.001622000E3,5.478240688E1 +1.001877000E3,5.648896451E1 +1.002173000E3,5.587033976E1 +1.002422000E3,5.995513955E1 +1.002724000E3,6.295760047E1 +1.003003000E3,5.978713154E1 +1.003261000E3,5.669754444E1 +1.003545000E3,5.577942906E1 +1.003827000E3,6.186873273E1 +1.004183000E3,6.253868639E1 +1.004493000E3,5.777226132E1 +1.004770000E3,6.482227668E1 +1.005072000E3,5.923751414E1 +1.005323000E3,5.644465637E1 +1.005601000E3,6.074750234E1 +1.005832000E3,5.683683327E1 +1.006147000E3,5.957418887E1 +1.006418000E3,6.134946851E1 +1.006713000E3,5.641852300E1 +1.006952000E3,5.637674327E1 +1.007310000E3,5.484290206E1 +1.007589000E3,6.426865013E1 +1.007886000E3,5.712036033E1 +1.008127000E3,5.768385080E1 +1.008427000E3,5.812466970E1 +1.008666000E3,6.112344783E1 +1.008973000E3,5.606588478E1 +1.009269000E3,5.809328667E1 +1.009507000E3,5.371315435E1 +1.009763000E3,5.527533595E1 +1.010003000E3,5.390597114E1 +1.010379000E3,5.652035402E1 +1.010658000E3,5.490058638E1 +1.010920000E3,5.927019017E1 +1.011197000E3,5.293113048E1 +1.011458000E3,5.179006266E1 +1.011718000E3,5.366462930E1 +1.011979000E3,5.569421827E1 +1.012229000E3,5.341899104E1 +1.012477000E3,4.863208748E1 +1.012772000E3,6.037154816E1 +1.013036000E3,5.430849576E1 +1.013284000E3,5.735938261E1 +1.013671000E3,5.526482118E1 +1.013957000E3,5.731780297E1 +1.014225000E3,5.205368153E1 +1.014486000E3,5.548863756E1 +1.014733000E3,5.265038263E1 +1.015033000E3,5.986876322E1 +1.015314000E3,5.130643680E1 +1.015590000E3,6.086878634E1 +1.015830000E3,5.798526739E1 +1.016137000E3,6.825745236E1 +1.016387000E3,5.828900876E1 +1.016655000E3,5.873097643E1 +1.017001000E3,6.454090665E1 +1.017329000E3,6.385512775E1 +1.017637000E3,6.691081911E1 +1.017938000E3,6.580217665E1 +1.018229000E3,6.485489311E1 +1.018470000E3,6.387101962E1 +1.018706000E3,6.616835921E1 +1.018997000E3,5.951737331E1 +1.019235000E3,5.386458503E1 +1.019536000E3,5.756977765E1 +1.019801000E3,5.811747841E1 +1.020064000E3,5.930001089E1 +1.020406000E3,5.469664450E1 +1.020673000E3,5.181220980E1 +1.020925000E3,5.483858346E1 +1.021232000E3,5.716842569E1 +1.021527000E3,5.738254897E1 +1.021762000E3,5.628034518E1 +1.022007000E3,5.850971228E1 +1.022258000E3,5.329919175E1 +1.022556000E3,5.482637446E1 +1.022813000E3,5.690503448E1 +1.023071000E3,5.317501594E1 +1.023336000E3,4.870888301E1 +1.023687000E3,6.132281620E1 +1.023965000E3,6.262505101E1 +1.024220000E3,6.180229149E1 +1.024496000E3,6.130993335E1 +1.024741000E3,6.231376381E1 +1.025040000E3,6.164360059E1 +1.025279000E3,5.910065798E1 +1.025533000E3,5.622173801E1 +1.025821000E3,5.290311975E1 +1.026116000E3,5.028293308E1 +1.026403000E3,5.581740437E1 +1.026664000E3,5.988277804E1 +1.027011000E3,5.730548262E1 +1.027305000E3,5.417769573E1 +1.027578000E3,5.250932185E1 +1.027819000E3,5.139919708E1 +1.028128000E3,5.061852216E1 +1.028380000E3,4.722292138E1 +1.028683000E3,5.983070917E1 +1.028956000E3,6.045269830E1 +1.029182000E3,5.777292957E1 +1.029431000E3,5.497807442E1 +1.029734000E3,5.533889528E1 +1.030063000E3,5.373558580E1 +1.030323000E3,5.600729212E1 +1.030620000E3,5.467159629E1 +1.030863000E3,5.246400101E1 +1.031110000E3,5.468037288E1 +1.031367000E3,5.850364516E1 +1.031646000E3,5.490958739E1 +1.031911000E3,5.866929845E1 +1.032210000E3,5.708288591E1 +1.032475000E3,5.498129629E1 +1.032736000E3,5.670272599E1 +1.032986000E3,5.317143219E1 +1.033315000E3,5.758413128E1 +1.033557000E3,6.361635596E1 +1.033846000E3,5.513973379E1 +1.034093000E3,5.215484095E1 +1.034399000E3,5.465926438E1 +1.034684000E3,5.588902955E1 +1.034978000E3,5.387672604E1 +1.035280000E3,5.595327755E1 +1.035543000E3,5.621513504E1 +1.035825000E3,5.991854954E1 +1.036079000E3,5.864640009E1 +1.036322000E3,6.072021936E1 +1.036666000E3,5.462749592E1 +1.036971000E3,5.329083651E1 +1.037264000E3,5.401214501E1 +1.037542000E3,5.242806591E1 +1.037843000E3,5.573267887E1 +1.038091000E3,5.224254554E1 +1.038380000E3,5.453929206E1 +1.038635000E3,5.371826859E1 +1.038891000E3,4.369246898E1 +1.039145000E3,4.547521933E1 +1.039418000E3,4.204639660E1 +1.039750000E3,4.426760298E1 +1.039990000E3,4.955659514E1 +1.040294000E3,4.960859899E1 +1.040560000E3,4.841380220E1 +1.040808000E3,4.914533708E1 +1.041104000E3,4.650609937E1 +1.041370000E3,4.849101938E1 +1.041622000E3,5.065930763E1 +1.041920000E3,4.744161935E1 +1.042161000E3,4.448519483E1 +1.042478000E3,4.726532690E1 +1.042725000E3,4.667923132E1 +1.043042000E3,4.704822757E1 +1.043307000E3,3.950691106E1 +1.043560000E3,5.249697508E1 +1.043835000E3,4.753687679E1 +1.044091000E3,4.843049138E1 +1.044350000E3,5.394643708E1 +1.044644000E3,4.769079035E1 +1.044887000E3,5.111291504E1 +1.045194000E3,5.247298633E1 +1.045445000E3,4.904344971E1 +1.045693000E3,4.405437847E1 +1.045988000E3,4.750888237E1 +1.046301000E3,4.305046000E1 +1.046518000E3,4.630901796E1 +1.046813000E3,4.756289225E1 +1.047053000E3,4.661089273E1 +1.047331000E3,6.143859736E1 +1.047566000E3,5.702483033E1 +1.047860000E3,5.015015196E1 +1.048098000E3,5.180675157E1 +1.048397000E3,4.645218330E1 +1.048640000E3,4.317726503E1 +1.048918000E3,4.962602549E1 +1.049159000E3,4.922447391E1 +1.049523000E3,4.310015818E1 +1.049767000E3,5.584844461E1 +1.050011000E3,5.550466055E1 +1.050294000E3,5.076679182E1 +1.050523000E3,4.777565498E1 +1.050776000E3,5.078379664E1 +1.051031000E3,4.412618688E1 +1.051298000E3,3.933148532E1 +1.051551000E3,4.240994962E1 +1.051799000E3,3.715036539E1 +1.052054000E3,4.541823437E1 +1.052312000E3,3.252240989E1 +1.052661000E3,4.298387800E1 +1.052922000E3,4.065675211E1 +1.053171000E3,3.851226965E1 +1.053417000E3,3.833414863E1 +1.053702000E3,3.734543870E1 +1.053967000E3,4.406198141E1 +1.054269000E3,3.397952572E1 +1.054518000E3,3.018425986E1 +1.054795000E3,2.659023927E1 +1.055055000E3,3.230579484E1 +1.055319000E3,4.027650377E1 +1.055588000E3,3.256611719E1 +1.055936000E3,3.203904394E1 +1.056189000E3,3.024692018E1 +1.056469000E3,4.044611203E1 +1.056698000E3,3.245705712E1 +1.056956000E3,5.087039919E1 +1.057201000E3,5.278557071E1 +1.057507000E3,6.996122129E1 +1.057766000E3,6.951439283E1 +1.058027000E3,6.731609209E1 +1.058291000E3,5.787293958E1 +1.058571000E3,5.774874245E1 +1.058801000E3,5.291748766E1 +1.059132000E3,4.352220528E1 +1.059391000E3,5.556254729E1 +1.059665000E3,5.339220405E1 +1.059951000E3,5.593145301E1 +1.060235000E3,5.299996372E1 +1.060492000E3,4.882317894E1 +1.060733000E3,3.790707311E1 +1.060975000E3,3.470192076E1 +1.061278000E3,4.481563830E1 +1.061519000E3,4.823008935E1 +1.061816000E3,4.719850269E1 +1.062076000E3,4.706381680E1 +1.062331000E3,4.530378435E1 +1.062576000E3,3.456809562E1 +1.062882000E3,3.742453964E1 +1.063154000E3,3.905594906E1 +1.063397000E3,3.672857244E1 +1.063694000E3,2.941779164E1 +1.063926000E3,2.995931983E1 +1.064168000E3,3.455311118E1 +1.064461000E3,3.254662869E1 +1.064708000E3,3.652583843E1 +1.065001000E3,5.229424666E1 +1.065352000E3,5.178814165E1 +1.065606000E3,4.798098259E1 +1.065854000E3,3.636652329E1 +1.066121000E3,4.558252535E1 +1.066366000E3,3.902840121E1 +1.066629000E3,3.106435508E1 +1.066887000E3,2.541330464E1 +1.067179000E3,3.474902335E1 +1.067449000E3,4.492275189E1 +1.067698000E3,3.860211372E1 +1.067955000E3,4.332670525E1 +1.068251000E3,5.147667691E1 +1.068546000E3,5.152069997E1 +1.068797000E3,4.540650098E1 +1.069105000E3,4.486446450E1 +1.069378000E3,4.196481867E1 +1.069632000E3,4.863200791E1 +1.069908000E3,3.878967071E1 +1.070151000E3,3.630888030E1 +1.070413000E3,2.964429880E1 +1.070682000E3,3.354707636E1 +1.070956000E3,4.008490969E1 +1.071248000E3,3.576577653E1 +1.071553000E3,4.349754488E1 +1.071886000E3,3.824859907E1 +1.072130000E3,3.455877689E1 +1.072406000E3,3.622999465E1 +1.072717000E3,3.637608237E1 +1.072984000E3,3.645219519E1 +1.073255000E3,4.353729148E1 +1.073603000E3,4.287473251E1 +1.073856000E3,4.842203791E1 +1.074097000E3,4.484407311E1 +1.074356000E3,4.397007110E1 +1.074628000E3,4.695884235E1 +1.074931000E3,4.627189963E1 +1.075264000E3,4.689571524E1 +1.075614000E3,5.203841291E1 +1.075923000E3,4.610184941E1 +1.076163000E3,4.404432471E1 +1.076475000E3,4.923215011E1 +1.076765000E3,4.466142180E1 +1.077062000E3,4.987282715E1 +1.077375000E3,4.461839454E1 +1.077687000E3,5.085403766E1 +1.077991000E3,4.674512295E1 +1.078232000E3,5.167180279E1 +1.078544000E3,4.780582457E1 +1.078939000E3,4.593914406E1 +1.079187000E3,4.061652220E1 +1.079434000E3,4.347669045E1 +1.079712000E3,4.326983820E1 +1.079966000E3,3.511950991E1 +1.080260000E3,4.755279745E1 +1.080506000E3,4.756343862E1 +1.080756000E3,4.779732167E1 +1.081049000E3,4.991962747E1 +1.081293000E3,5.213887128E1 +1.081586000E3,5.357624469E1 +1.081916000E3,5.141456645E1 +1.082165000E3,5.036532462E1 +1.082460000E3,4.962769973E1 +1.082696000E3,4.506404490E1 +1.082988000E3,4.537987312E1 +1.083220000E3,4.738457007E1 +1.083529000E3,4.698711193E1 +1.083769000E3,4.571430081E1 +1.084079000E3,4.980908007E1 +1.084324000E3,5.082282040E1 +1.084590000E3,5.406004268E1 +1.084876000E3,5.436375886E1 +1.085258000E3,5.361506257E1 +1.085509000E3,5.202937925E1 +1.085815000E3,5.324976969E1 +1.086057000E3,5.371445731E1 +1.086301000E3,5.282162917E1 +1.086550000E3,5.221281857E1 +1.086802000E3,5.263727375E1 +1.087126000E3,5.703022139E1 +1.087384000E3,5.519432869E1 +1.087646000E3,5.426647490E1 +1.087939000E3,5.407342864E1 +1.088175000E3,5.235924404E1 +1.088520000E3,4.681002832E1 +1.088812000E3,4.891237586E1 +1.089076000E3,4.699020733E1 +1.089350000E3,4.902871382E1 +1.089591000E3,5.078145117E1 +1.089837000E3,5.041791921E1 +1.090133000E3,4.603650794E1 +1.090430000E3,4.871755485E1 +1.090660000E3,5.111421073E1 +1.090911000E3,4.581894631E1 +1.091248000E3,4.988189917E1 +1.091630000E3,5.341365920E1 +1.091902000E3,4.962858025E1 +1.092183000E3,4.315344358E1 +1.092440000E3,4.664431132E1 +1.092683000E3,4.616459192E1 +1.092923000E3,4.765071496E1 +1.093171000E3,4.163360687E1 +1.093473000E3,4.537777608E1 +1.093714000E3,4.783603025E1 +1.094007000E3,4.845414260E1 +1.094261000E3,4.799870549E1 +1.094499000E3,4.651309815E1 +1.094792000E3,5.003648984E1 +1.095123000E3,5.202534254E1 +1.095372000E3,5.709400077E1 +1.095625000E3,5.694079106E1 +1.095896000E3,5.715452089E1 +1.096196000E3,5.523378380E1 +1.096438000E3,5.375558627E1 +1.096737000E3,5.665208041E1 +1.096991000E3,5.314654737E1 +1.097292000E3,5.142447849E1 +1.097557000E3,5.330628285E1 +1.097827000E3,5.512040694E1 +1.098167000E3,5.399583122E1 +1.098472000E3,5.540663813E1 +1.098720000E3,5.200546986E1 +1.098960000E3,4.676140326E1 +1.099243000E3,4.798657093E1 +1.099544000E3,4.841724285E1 +1.099804000E3,5.642371618E1 +1.100109000E3,5.409000726E1 +1.100381000E3,5.348646719E1 +1.100630000E3,5.346537578E1 +1.100927000E3,5.422782845E1 +1.101164000E3,5.395323822E1 +1.101495000E3,5.383967560E1 +1.101763000E3,5.667828538E1 +1.102044000E3,4.764690784E1 +1.102307000E3,5.353530254E1 +1.102613000E3,5.568430762E1 +1.102906000E3,5.431580275E1 +1.103147000E3,5.193331555E1 +1.103441000E3,5.040945762E1 +1.103677000E3,5.333005838E1 +1.103968000E3,4.947534745E1 +1.104272000E3,5.306270968E1 +1.104564000E3,5.537230515E1 +1.104799000E3,4.876041085E1 +1.105069000E3,5.109409535E1 +1.105330000E3,5.087734214E1 +1.105587000E3,5.225642483E1 +1.105838000E3,5.176680091E1 +1.106135000E3,5.535939212E1 +1.106380000E3,5.666892185E1 +1.106622000E3,5.658846562E1 +1.106895000E3,5.577897889E1 +1.107150000E3,5.157178717E1 +1.107431000E3,5.284488409E1 +1.107756000E3,5.415639955E1 +1.108002000E3,5.465643057E1 +1.108313000E3,4.654328988E1 +1.108563000E3,5.038890380E1 +1.108811000E3,4.602751738E1 +1.109073000E3,4.801243396E1 +1.109375000E3,4.782472616E1 +1.109667000E3,4.666447221E1 +1.109943000E3,5.156469126E1 +1.110192000E3,4.949682888E1 +1.110448000E3,4.919673339E1 +1.110752000E3,4.862521519E1 +1.111045000E3,5.122379655E1 +1.111295000E3,4.813892217E1 +1.111515000E3,4.901611396E1 +1.111761000E3,4.905664967E1 +1.112005000E3,4.647618514E1 +1.112265000E3,4.730688076E1 +1.112537000E3,5.039121351E1 +1.112793000E3,4.985611957E1 +1.113101000E3,5.474563863E1 +1.113387000E3,5.028870882E1 +1.113678000E3,5.073784750E1 +1.113952000E3,4.995138555E1 +1.114291000E3,4.790039203E1 +1.114554000E3,4.764335594E1 +1.114849000E3,5.057104591E1 +1.115096000E3,5.107398730E1 +1.115401000E3,4.800391913E1 +1.115672000E3,4.553282874E1 +1.115895000E3,4.569523337E1 +1.116194000E3,4.480844215E1 +1.116425000E3,4.772339962E1 +1.116664000E3,5.255452638E1 +1.116906000E3,4.927433934E1 +1.117202000E3,4.871369865E1 +1.117530000E3,4.928110420E1 +1.117840000E3,5.705383563E1 +1.118146000E3,4.880674861E1 +1.118418000E3,5.038180726E1 +1.118687000E3,5.145980404E1 +1.118950000E3,5.338008269E1 +1.119227000E3,5.227728425E1 +1.119468000E3,5.450689216E1 +1.119736000E3,5.844246451E1 +1.120049000E3,5.459398611E1 +1.120351000E3,5.526423567E1 +1.120605000E3,5.228963309E1 +1.120918000E3,5.598288902E1 +1.121182000E3,5.280889802E1 +1.121489000E3,4.974717420E1 +1.121729000E3,5.137523152E1 +1.121978000E3,5.052356297E1 +1.122235000E3,5.240368249E1 +1.122503000E3,4.826380791E1 +1.122775000E3,5.095403791E1 +1.123036000E3,5.799909934E1 +1.123291000E3,4.889512711E1 +1.123587000E3,5.622808486E1 +1.123874000E3,5.230369090E1 +1.124235000E3,5.081102316E1 +1.124544000E3,5.628773803E1 +1.124826000E3,5.810547372E1 +1.125153000E3,5.508029719E1 +1.125432000E3,5.576573503E1 +1.125722000E3,5.346022180E1 +1.125978000E3,5.279748306E1 +1.126234000E3,5.604802053E1 +1.126502000E3,5.937326657E1 +1.126804000E3,5.703447215E1 +1.127047000E3,5.520354594E1 +1.127314000E3,5.551787326E1 +1.127554000E3,5.740837773E1 +1.127843000E3,5.663015330E1 +1.128135000E3,5.649615150E1 +1.128380000E3,5.731556257E1 +1.128677000E3,6.079986861E1 +1.128914000E3,5.820128856E1 +1.129207000E3,6.091746513E1 +1.129442000E3,6.126941240E1 +1.129745000E3,4.541170906E1 +1.129980000E3,4.341485096E1 +1.130277000E3,4.833777967E1 +1.130573000E3,4.472710223E1 +1.130815000E3,5.059675199E1 +1.131062000E3,3.863826940E1 +1.131353000E3,4.925455740E1 +1.131589000E3,4.859989956E1 +1.131881000E3,5.113067908E1 +1.132117000E3,5.054542106E1 +1.132418000E3,4.827479925E1 +1.132654000E3,4.610884488E1 +1.132948000E3,4.879734536E1 +1.133241000E3,5.074680390E1 +1.133563000E3,5.119298220E1 +1.133864000E3,4.861265792E1 +1.134166000E3,5.001512903E1 +1.134452000E3,5.059053464E1 +1.134716000E3,4.999839479E1 +1.134967000E3,4.960069086E1 +1.135222000E3,5.320256888E1 +1.135494000E3,5.604818163E1 +1.135742000E3,5.625768045E1 +1.135999000E3,5.261645024E1 +1.136244000E3,5.105081932E1 +1.136501000E3,5.616444939E1 +1.136847000E3,5.624064264E1 +1.137105000E3,5.654097446E1 +1.137391000E3,5.807884104E1 +1.137717000E3,5.436169891E1 +1.137970000E3,5.763959225E1 +1.138239000E3,5.465216875E1 +1.138486000E3,5.094509116E1 +1.138731000E3,5.425415233E1 +1.138977000E3,5.143709697E1 +1.139259000E3,5.032545705E1 +1.139527000E3,5.906031130E1 +1.139800000E3,5.308709054E1 +1.140168000E3,5.407062541E1 +1.140423000E3,5.585261351E1 +1.140694000E3,5.463535881E1 +1.140949000E3,5.407603664E1 +1.141230000E3,5.495767686E1 +1.141512000E3,5.639433741E1 +1.141818000E3,5.555715330E1 +1.142072000E3,5.729232944E1 +1.142323000E3,5.553013253E1 +1.142578000E3,5.648251207E1 +1.142844000E3,5.786931075E1 +1.143143000E3,6.007493220E1 +1.143523000E3,5.752076543E1 +1.143836000E3,5.573324560E1 +1.144090000E3,5.641950784E1 +1.144396000E3,5.532270625E1 +1.144644000E3,5.561239732E1 +1.144940000E3,5.206707456E1 +1.145212000E3,5.092140902E1 +1.145511000E3,5.452891649E1 +1.145770000E3,5.331137977E1 +1.146042000E3,5.366568195E1 +1.146338000E3,5.227174013E1 +1.146650000E3,5.423955559E1 +1.146934000E3,5.781916580E1 +1.147218000E3,5.532962824E1 +1.147467000E3,5.502661676E1 +1.147687000E3,5.823979674E1 +1.147961000E3,5.538066560E1 +1.148276000E3,5.423260060E1 +1.148528000E3,5.197461977E1 +1.148799000E3,5.154724487E1 +1.149057000E3,5.473685923E1 +1.149367000E3,5.647867848E1 +1.149660000E3,5.489455072E1 +1.150037000E3,6.072892064E1 +1.150335000E3,5.543869835E1 +1.150594000E3,5.667713742E1 +1.150870000E3,5.818755157E1 +1.151164000E3,5.210849760E1 +1.151411000E3,5.095671455E1 +1.151703000E3,5.254983272E1 +1.152002000E3,5.585064224E1 +1.152253000E3,5.739007574E1 +1.152582000E3,5.895179917E1 +1.152860000E3,5.461317681E1 +1.153122000E3,5.345759293E1 +1.153381000E3,5.267971619E1 +1.153684000E3,6.006602205E1 +1.153986000E3,5.573552061E1 +1.154286000E3,5.518963618E1 +1.154531000E3,5.342922095E1 +1.154792000E3,5.257536969E1 +1.155139000E3,4.887945516E1 +1.155435000E3,4.702411688E1 +1.155680000E3,4.867646616E1 +1.155978000E3,4.811861077E1 +1.156361000E3,4.915586406E1 +1.156670000E3,5.033026069E1 +1.156976000E3,5.393908378E1 +1.157274000E3,5.295128205E1 +1.157524000E3,5.249671789E1 +1.157816000E3,5.314344994E1 +1.158052000E3,5.237342933E1 +1.158353000E3,5.300284286E1 +1.158590000E3,5.170068449E1 +1.158867000E3,5.174146304E1 +1.159147000E3,4.929588783E1 +1.159411000E3,5.699090425E1 +1.159752000E3,5.266690351E1 +1.160068000E3,5.746767577E1 +1.160360000E3,5.375850846E1 +1.160640000E3,5.373794020E1 +1.160985000E3,5.304914530E1 +1.161280000E3,5.198754593E1 +1.161525000E3,5.019848207E1 +1.161766000E3,5.164623609E1 +1.162020000E3,5.363319210E1 +1.162324000E3,5.439011044E1 +1.162564000E3,5.304648945E1 +1.162816000E3,5.174573718E1 +1.163177000E3,4.505755779E1 +1.163462000E3,4.894753105E1 +1.163738000E3,5.064933943E1 +1.164013000E3,5.245879056E1 +1.164255000E3,5.017914517E1 +1.164568000E3,5.189205429E1 +1.164823000E3,5.038961444E1 +1.165052000E3,5.072118593E1 +1.165297000E3,4.831662547E1 +1.165552000E3,5.050204887E1 +1.165808000E3,5.308107982E1 +1.166062000E3,4.878509871E1 +1.166392000E3,5.002605106E1 +1.166654000E3,5.320265697E1 +1.166911000E3,4.403273534E1 +1.167180000E3,5.161386051E1 +1.167455000E3,4.986209571E1 +1.167692000E3,4.993305836E1 +1.167973000E3,5.173621365E1 +1.168216000E3,5.385559129E1 +1.168491000E3,5.543019156E1 +1.168757000E3,5.019966657E1 +1.169035000E3,5.569516326E1 +1.169296000E3,5.216419082E1 +1.169676000E3,5.398731996E1 +1.169933000E3,5.465625282E1 +1.170197000E3,5.451774184E1 +1.170449000E3,5.328129322E1 +1.170705000E3,5.452639907E1 +1.170963000E3,5.713735254E1 +1.171272000E3,5.551413923E1 +1.171528000E3,5.604966001E1 +1.171779000E3,5.340478404E1 +1.172038000E3,5.107817821E1 +1.172291000E3,5.218990306E1 +1.172602000E3,4.830451720E1 +1.172964000E3,5.276802164E1 +1.173245000E3,5.191204687E1 +1.173527000E3,5.337367972E1 +1.173838000E3,5.462664550E1 +1.174090000E3,5.304724513E1 +1.174379000E3,5.193251440E1 +1.174628000E3,5.283915893E1 +1.174936000E3,5.036641160E1 +1.175236000E3,4.890810708E1 +1.175487000E3,4.805298565E1 +1.175750000E3,5.067335741E1 +1.176019000E3,4.961207397E1 +1.176335000E3,4.820862314E1 +1.176634000E3,5.328684116E1 +1.176883000E3,5.122009001E1 +1.177165000E3,5.878687770E1 +1.177412000E3,5.487235950E1 +1.177709000E3,5.224569426E1 +1.178006000E3,5.403405997E1 +1.178246000E3,5.388661901E1 +1.178490000E3,5.237426881E1 +1.178734000E3,5.372043820E1 +1.179050000E3,5.471170909E1 +1.179387000E3,5.129350436E1 +1.179686000E3,4.660070824E1 +1.179916000E3,4.541361068E1 +1.180159000E3,4.365576113E1 +1.180466000E3,4.771103553E1 +1.180756000E3,4.863237791E1 +1.181008000E3,5.534959697E1 +1.181314000E3,5.376444060E1 +1.181609000E3,5.130885425E1 +1.181851000E3,5.256948786E1 +1.182151000E3,5.321964637E1 +1.182393000E3,5.074776981E1 +1.182622000E3,4.979941250E1 +1.182873000E3,5.445637667E1 +1.183116000E3,4.449721128E1 +1.183420000E3,5.086906199E1 +1.183676000E3,5.067998506E1 +1.183927000E3,5.352019181E1 +1.184219000E3,4.851971310E1 +1.184517000E3,5.123853013E1 +1.184764000E3,5.278221141E1 +1.185010000E3,5.126409245E1 +1.185297000E3,5.249182764E1 +1.185665000E3,5.346599478E1 +1.185972000E3,5.052250297E1 +1.186225000E3,5.389354916E1 +1.186534000E3,5.372737626E1 +1.186796000E3,5.415645782E1 +1.187048000E3,5.441424865E1 +1.187317000E3,5.470553815E1 +1.187622000E3,5.559990781E1 +1.187913000E3,5.619293356E1 +1.188186000E3,4.869472445E1 +1.188442000E3,5.069948923E1 +1.188718000E3,5.296813397E1 +1.189051000E3,5.015003063E1 +1.189308000E3,5.110938827E1 +1.189570000E3,5.250182053E1 +1.189815000E3,5.240850659E1 +1.190062000E3,5.446862868E1 +1.190368000E3,5.270463767E1 +1.190629000E3,5.117539458E1 +1.190931000E3,5.543767536E1 +1.191207000E3,5.348622922E1 +1.191505000E3,5.112152946E1 +1.191761000E3,4.905277341E1 +1.192068000E3,5.456405848E1 +1.192487000E3,5.016322677E1 +1.192732000E3,4.971711263E1 +1.192976000E3,5.396031961E1 +1.193258000E3,5.018645567E1 +1.193531000E3,4.895586707E1 +1.193790000E3,5.442023654E1 +1.194055000E3,5.160697029E1 +1.194326000E3,4.822365107E1 +1.194605000E3,5.396633777E1 +1.194903000E3,5.031021734E1 +1.195141000E3,5.278015326E1 +1.195431000E3,4.949576105E1 +1.195801000E3,5.244682833E1 +1.196076000E3,5.508575727E1 +1.196371000E3,5.161802747E1 +1.196603000E3,5.716896987E1 +1.196858000E3,5.210002974E1 +1.197207000E3,5.483594793E1 +1.197503000E3,5.204828926E1 +1.197774000E3,5.339169315E1 +1.198054000E3,4.934781945E1 +1.198312000E3,5.918797425E1 +1.198559000E3,5.025254784E1 +1.198808000E3,5.317746302E1 +1.199152000E3,5.656715516E1 +1.199464000E3,5.448426177E1 +1.199717000E3,5.419526565E1 +1.199961000E3,5.304156540E1 +1.200219000E3,4.961182292E1 +1.200480000E3,5.259766625E1 +1.200730000E3,5.295115767E1 +1.201029000E3,5.365389524E1 +1.201288000E3,5.465027972E1 +1.201538000E3,5.131261505E1 +1.201807000E3,5.767453751E1 +1.202112000E3,5.316006082E1 +1.202485000E3,5.263333972E1 +1.202739000E3,4.966297173E1 +1.203041000E3,5.282706501E1 +1.203300000E3,4.950274237E1 +1.203539000E3,4.377779375E1 +1.203832000E3,5.274682795E1 +1.204077000E3,5.348405653E1 +1.204320000E3,5.647600154E1 +1.204615000E3,4.835002395E1 +1.204854000E3,4.440243109E1 +1.205149000E3,4.673035253E1 +1.205410000E3,4.901106802E1 +1.205666000E3,5.311033159E1 +1.205952000E3,5.020567211E1 +1.206248000E3,5.046889058E1 +1.206545000E3,6.150607502E1 +1.206779000E3,5.260331634E1 +1.207093000E3,5.183291791E1 +1.207367000E3,4.957331060E1 +1.207610000E3,5.139200370E1 +1.207857000E3,5.005726187E1 +1.208158000E3,4.979521937E1 +1.208398000E3,5.178137337E1 +1.208738000E3,4.632694184E1 +1.208994000E3,4.836915777E1 +1.209279000E3,4.869228435E1 +1.209528000E3,5.096507040E1 +1.209784000E3,4.718590489E1 +1.210053000E3,4.835967114E1 +1.210281000E3,4.725223201E1 +1.210542000E3,5.172958855E1 +1.210823000E3,5.546336112E1 +1.211051000E3,5.448218663E1 +1.211300000E3,5.371995163E1 +1.211551000E3,4.887559574E1 +1.211926000E3,4.975732945E1 +1.212205000E3,5.041543230E1 +1.212482000E3,4.863959509E1 +1.212730000E3,5.047232348E1 +1.212990000E3,4.824384094E1 +1.213232000E3,5.039377586E1 +1.213493000E3,4.517891187E1 +1.213814000E3,4.686032989E1 +1.214062000E3,4.852263494E1 +1.214337000E3,4.897277606E1 +1.214586000E3,4.662047985E1 +1.214832000E3,5.483925472E1 +1.215143000E3,5.677489998E1 +1.215372000E3,5.470688254E1 +1.215664000E3,5.408747991E1 +1.215962000E3,5.167832591E1 +1.216227000E3,5.463116224E1 +1.216504000E3,5.335564969E1 +1.216747000E3,4.832376612E1 +1.216996000E3,4.918538596E1 +1.217306000E3,5.329611015E1 +1.217618000E3,5.364881155E1 +1.217885000E3,5.087209115E1 +1.218149000E3,4.967310650E1 +1.218497000E3,4.842689624E1 +1.218801000E3,5.442588779E1 +1.219043000E3,5.338467746E1 +1.219349000E3,5.187371665E1 +1.219600000E3,4.992515182E1 +1.219883000E3,5.205809257E1 +1.220161000E3,5.374364962E1 +1.220471000E3,5.145920034E1 +1.220752000E3,5.112774200E1 +1.221009000E3,4.969936214E1 +1.221258000E3,4.906585252E1 +1.221519000E3,4.971022706E1 +1.221873000E3,5.039216656E1 +1.222125000E3,4.735018859E1 +1.222388000E3,5.025223930E1 +1.222647000E3,5.349102952E1 +1.222903000E3,5.894430216E1 +1.223210000E3,5.133834742E1 +1.223464000E3,5.378681025E1 +1.223708000E3,5.646161983E1 +1.223949000E3,5.127610878E1 +1.224189000E3,5.295211205E1 +1.224441000E3,5.074229414E1 +1.224698000E3,5.428527885E1 +1.225064000E3,6.064230054E1 +1.225333000E3,5.545461106E1 +1.225591000E3,5.085263163E1 +1.225847000E3,4.867332677E1 +1.226137000E3,4.828036819E1 +1.226394000E3,5.187031217E1 +1.226668000E3,4.691949774E1 +1.226931000E3,4.605300024E1 +1.227219000E3,4.319091646E1 +1.227493000E3,4.827268256E1 +1.227791000E3,4.873371181E1 +1.228031000E3,4.895629331E1 +1.228388000E3,4.831306026E1 +1.228651000E3,5.150144778E1 +1.228942000E3,5.210555115E1 +1.229190000E3,4.868630793E1 +1.229442000E3,5.072280558E1 +1.229686000E3,5.520857657E1 +1.229933000E3,5.597505745E1 +1.230228000E3,5.309096620E1 +1.230467000E3,5.340491117E1 +1.230765000E3,4.966814228E1 +1.231012000E3,4.811713105E1 +1.231316000E3,5.037869561E1 +1.231666000E3,4.768651081E1 +1.231948000E3,4.577834304E1 +1.232207000E3,4.455407567E1 +1.232510000E3,5.091422235E1 +1.232802000E3,4.990562511E1 +1.233047000E3,5.178152081E1 +1.233344000E3,5.312014577E1 +1.233592000E3,5.002236071E1 +1.233892000E3,5.158473192E1 +1.234173000E3,4.692863129E1 +1.234463000E3,4.643331531E1 +1.234792000E3,4.659156592E1 +1.235060000E3,4.662718910E1 +1.235313000E3,5.204491267E1 +1.235577000E3,5.165973487E1 +1.235837000E3,4.753691687E1 +1.236124000E3,5.179615379E1 +1.236401000E3,4.807409380E1 +1.236654000E3,5.474790946E1 +1.236923000E3,4.946475170E1 +1.237180000E3,4.949471083E1 +1.237426000E3,4.669168363E1 +1.237743000E3,5.529942944E1 +1.238061000E3,5.997488643E1 +1.238363000E3,5.302222406E1 +1.238611000E3,5.022506453E1 +1.238856000E3,4.864145193E1 +1.239102000E3,5.299123845E1 +1.239357000E3,4.682866815E1 +1.239657000E3,4.770894983E1 +1.239902000E3,4.813746372E1 +1.240150000E3,4.571771059E1 +1.240465000E3,5.354012247E1 +1.240765000E3,5.830707734E1 +1.241013000E3,5.483189048E1 +1.241344000E3,5.157405593E1 +1.241606000E3,5.072581437E1 +1.241868000E3,5.137979859E1 +1.242133000E3,4.849261303E1 +1.242396000E3,5.556107710E1 +1.242656000E3,4.958779284E1 +1.242959000E3,5.301548021E1 +1.243232000E3,5.475621292E1 +1.243501000E3,5.660789219E1 +1.243755000E3,5.350018163E1 +1.244010000E3,5.415674835E1 +1.244349000E3,5.699979568E1 +1.244717000E3,5.660044844E1 +1.245015000E3,5.808533709E1 +1.245259000E3,5.881859790E1 +1.245558000E3,5.728882886E1 +1.245808000E3,6.044308225E1 +1.246079000E3,5.893900513E1 +1.246326000E3,5.279872381E1 +1.246637000E3,5.769196864E1 +1.246935000E3,5.963088900E1 +1.247181000E3,5.367341836E1 +1.247508000E3,4.963645506E1 +1.247848000E3,5.265770489E1 +1.248115000E3,5.355743381E1 +1.248359000E3,4.891015342E1 +1.248659000E3,4.819353582E1 +1.248902000E3,4.966403220E1 +1.249199000E3,4.977495696E1 +1.249449000E3,5.715212626E1 +1.249708000E3,5.458337902E1 +1.249983000E3,4.910795823E1 +1.250282000E3,5.184902745E1 +1.250527000E3,5.416053460E1 +1.250777000E3,5.320773170E1 +1.251084000E3,5.422274265E1 +1.251342000E3,5.429456299E1 +1.251602000E3,5.910733722E1 +1.251866000E3,5.226490816E1 +1.252178000E3,5.191466859E1 +1.252452000E3,5.143339371E1 +1.252681000E3,5.066846779E1 +1.252975000E3,4.928639562E1 +1.253256000E3,4.916995298E1 +1.253528000E3,5.115941927E1 +1.253816000E3,4.850268402E1 +1.254063000E3,5.682920937E1 +1.254418000E3,5.583927157E1 +1.254700000E3,5.243405901E1 +1.254947000E3,5.411796563E1 +1.255215000E3,5.538314624E1 +1.255487000E3,5.447026824E1 +1.255748000E3,5.115232974E1 +1.256046000E3,5.273125350E1 +1.256281000E3,5.501639825E1 +1.256559000E3,5.470702619E1 +1.256867000E3,5.330168249E1 +1.257116000E3,5.680033697E1 +1.257361000E3,5.088137081E1 +1.257690000E3,4.771044205E1 +1.257935000E3,5.556188303E1 +1.258189000E3,5.821474305E1 +1.258460000E3,5.913083175E1 +1.258757000E3,5.624840253E1 +1.259001000E3,5.575040009E1 +1.259294000E3,5.295140054E1 +1.259581000E3,5.547885633E1 +1.259831000E3,5.659634167E1 +1.260084000E3,5.552607398E1 +1.260378000E3,5.399987136E1 +1.260676000E3,5.741946227E1 +1.260997000E3,5.622829253E1 +1.261272000E3,5.638519080E1 +1.261569000E3,5.222122782E1 +1.261810000E3,5.168558616E1 +1.262055000E3,5.937417075E1 +1.262351000E3,5.419990938E1 +1.262597000E3,5.469291977E1 +1.262893000E3,5.501007253E1 +1.263142000E3,5.356116387E1 +1.263421000E3,5.643294047E1 +1.263644000E3,5.627927149E1 +1.263964000E3,5.547827797E1 +1.264255000E3,5.434029164E1 +1.264552000E3,5.355134450E1 +1.264791000E3,5.268456483E1 +1.265090000E3,5.304298782E1 +1.265342000E3,5.292557941E1 +1.265637000E3,5.267823535E1 +1.265885000E3,5.076475521E1 +1.266186000E3,5.470463807E1 +1.266480000E3,5.369531663E1 +1.266727000E3,5.321314382E1 +1.267074000E3,5.430022488E1 +1.267386000E3,5.498366079E1 +1.267650000E3,5.373765381E1 +1.267926000E3,5.631680810E1 +1.268156000E3,5.314598601E1 +1.268459000E3,5.446778700E1 +1.268718000E3,5.461487175E1 +1.269029000E3,4.723979401E1 +1.269322000E3,5.050485841E1 +1.269602000E3,5.263446338E1 +1.269914000E3,5.195043172E1 +1.270180000E3,5.361139844E1 +1.270542000E3,5.127785292E1 +1.270796000E3,5.111084292E1 +1.271061000E3,5.030178225E1 +1.271329000E3,4.978955516E1 +1.271616000E3,5.398913319E1 +1.271862000E3,5.537806166E1 +1.272155000E3,5.301545016E1 +1.272407000E3,5.450597504E1 +1.272651000E3,5.090153644E1 +1.272906000E3,5.335437953E1 +1.273148000E3,4.673762491E1 +1.273392000E3,5.062539325E1 +1.273710000E3,5.110756444E1 +1.273960000E3,5.466659884E1 +1.274217000E3,5.158121780E1 +1.274511000E3,5.575560452E1 +1.274759000E3,5.536976579E1 +1.275054000E3,5.425250328E1 +1.275298000E3,5.448034930E1 +1.275544000E3,5.185016662E1 +1.275828000E3,5.206320816E1 +1.276126000E3,5.118466074E1 +1.276376000E3,4.943928704E1 +1.276707000E3,5.090592254E1 +1.276972000E3,5.767487174E1 +1.277251000E3,5.481331862E1 +1.277544000E3,5.385854096E1 +1.277810000E3,5.179333541E1 +1.278097000E3,5.161992279E1 +1.278344000E3,5.248655937E1 +1.278657000E3,5.064236034E1 +1.278927000E3,4.915402835E1 +1.279197000E3,5.321156971E1 +1.279471000E3,5.438812541E1 +1.279734000E3,5.482588411E1 +1.280065000E3,5.157318203E1 +1.280296000E3,5.173449962E1 +1.280546000E3,5.465953878E1 +1.280843000E3,5.457680704E1 +1.281077000E3,5.562152963E1 +1.281325000E3,5.460406982E1 +1.281570000E3,5.232421403E1 +1.281870000E3,5.207576719E1 +1.282135000E3,4.968186040E1 +1.282378000E3,5.237915347E1 +1.282628000E3,4.745539727E1 +1.282877000E3,5.255989147E1 +1.283195000E3,5.301690658E1 +1.283467000E3,5.283539029E1 +1.283717000E3,5.083105477E1 +1.283978000E3,4.559322742E1 +1.284235000E3,4.934435088E1 +1.284538000E3,5.265118466E1 +1.284812000E3,5.302155906E1 +1.285045000E3,5.294725202E1 +1.285352000E3,5.129236762E1 +1.285646000E3,5.402858483E1 +1.285898000E3,5.434527110E1 +1.286189000E3,5.525625388E1 +1.286515000E3,5.653073998E1 +1.286819000E3,5.704731902E1 +1.287101000E3,5.310035962E1 +1.287387000E3,5.474072190E1 +1.287649000E3,5.496979063E1 +1.287925000E3,5.528941101E1 +1.288193000E3,5.394330028E1 +1.288492000E3,4.829171318E1 +1.288740000E3,5.076324605E1 +1.289004000E3,4.673843249E1 +1.289280000E3,5.345749476E1 +1.289584000E3,4.955238815E1 +1.289923000E3,5.268555513E1 +1.290206000E3,5.092762320E1 +1.290445000E3,5.180504716E1 +1.290779000E3,5.421996562E1 +1.291081000E3,5.408565728E1 +1.291322000E3,5.466627749E1 +1.291622000E3,5.247549140E1 +1.291870000E3,5.438915347E1 +1.292125000E3,5.526358440E1 +1.292428000E3,5.407200655E1 +1.292723000E3,5.160593410E1 +1.293035000E3,5.231731426E1 +1.293342000E3,5.126765219E1 +1.293626000E3,4.802016847E1 +1.293922000E3,5.428603515E1 +1.294199000E3,5.305841291E1 +1.294451000E3,5.676250586E1 +1.294738000E3,5.921971496E1 +1.295005000E3,5.812051865E1 +1.295266000E3,5.671365947E1 +1.295512000E3,5.389157640E1 +1.295809000E3,5.417883641E1 +1.296087000E3,5.169085532E1 +1.296408000E3,5.027989141E1 +1.296704000E3,5.801273246E1 +1.296951000E3,5.777618357E1 +1.297241000E3,5.598217178E1 +1.297547000E3,5.590671112E1 +1.297806000E3,6.302454961E1 +1.298073000E3,5.716944646E1 +1.298330000E3,5.693666329E1 +1.298591000E3,5.374930006E1 +1.298851000E3,5.170089530E1 +1.299100000E3,6.243829367E1 +1.299340000E3,5.522680485E1 +1.299673000E3,5.451288060E1 +1.299933000E3,5.720613947E1 +1.300193000E3,5.131457759E1 +1.300510000E3,5.593393786E1 +1.300810000E3,5.344184529E1 +1.301099000E3,5.432320381E1 +1.301355000E3,5.294046944E1 +1.301602000E3,5.330691828E1 +1.301911000E3,4.899471979E1 +1.302175000E3,5.054546621E1 +1.302420000E3,4.914598102E1 +1.302706000E3,5.757950400E1 +1.303045000E3,5.798603958E1 +1.303343000E3,5.685278830E1 +1.303584000E3,5.272645619E1 +1.303869000E3,5.576083132E1 +1.304169000E3,5.311655900E1 +1.304414000E3,5.297304035E1 +1.304724000E3,6.119658997E1 +1.304998000E3,5.921259630E1 +1.305275000E3,5.974785927E1 +1.305567000E3,5.829108198E1 +1.305799000E3,5.656256791E1 +1.306151000E3,5.263150293E1 +1.306475000E3,5.719715846E1 +1.306754000E3,5.746813017E1 +1.307020000E3,6.063794361E1 +1.307320000E3,5.945639283E1 +1.307570000E3,5.898495898E1 +1.307856000E3,5.345744690E1 +1.308127000E3,5.882374416E1 +1.308390000E3,5.704844280E1 +1.308660000E3,6.230218860E1 +1.308982000E3,5.794977886E1 +1.309252000E3,5.609480230E1 +1.309620000E3,5.439173238E1 +1.309924000E3,5.804315704E1 +1.310253000E3,5.898090143E1 +1.310510000E3,5.933785859E1 +1.310826000E3,5.484966867E1 +1.311077000E3,5.841635068E1 +1.311358000E3,5.536029260E1 +1.311601000E3,5.555523834E1 +1.311895000E3,5.637714479E1 +1.312195000E3,5.253312652E1 +1.312445000E3,5.377927694E1 +1.312696000E3,5.757954833E1 +1.313038000E3,5.500733438E1 +1.313282000E3,5.367385274E1 +1.313558000E3,5.610715122E1 +1.313797000E3,5.528556803E1 +1.314063000E3,5.884958532E1 +1.314412000E3,5.458036035E1 +1.314671000E3,5.765344335E1 +1.314945000E3,5.139756723E1 +1.315223000E3,5.546002517E1 +1.315503000E3,5.608276603E1 +1.315733000E3,5.719791479E1 +1.315986000E3,5.413888898E1 +1.316329000E3,5.789500166E1 +1.316579000E3,5.404086097E1 +1.316819000E3,6.021843554E1 +1.317067000E3,5.929690830E1 +1.317365000E3,6.066063258E1 +1.317666000E3,5.465341745E1 +1.317917000E3,5.115712079E1 +1.318169000E3,4.986479689E1 +1.318470000E3,5.351977371E1 +1.318716000E3,5.614277654E1 +1.318987000E3,5.824140620E1 +1.319280000E3,5.863858703E1 +1.319646000E3,5.908977231E1 +1.319902000E3,5.867594430E1 +1.320142000E3,5.256185028E1 +1.320379000E3,5.916248935E1 +1.320672000E3,5.829134786E1 +1.320910000E3,5.729121950E1 +1.321203000E3,5.817253701E1 +1.321434000E3,5.958327052E1 +1.321726000E3,6.109571062E1 +1.321963000E3,6.309400740E1 +1.322263000E3,6.381431561E1 +1.322586000E3,6.124594205E1 +1.322839000E3,6.120886427E1 +1.323128000E3,5.624496406E1 +1.323377000E3,6.205845751E1 +1.323676000E3,6.248705287E1 +1.323968000E3,6.259357777E1 +1.324217000E3,6.168308921E1 +1.324496000E3,6.128297543E1 +1.324731000E3,5.975404370E1 +1.325024000E3,6.147148959E1 +1.325261000E3,6.101142333E1 +1.325573000E3,5.682124874E1 +1.325854000E3,5.869490284E1 +1.326149000E3,5.646663249E1 +1.326392000E3,5.662110608E1 +1.326643000E3,5.067702480E1 +1.326984000E3,5.759763927E1 +1.327264000E3,5.613584630E1 +1.327489000E3,5.826097161E1 +1.327735000E3,5.843702691E1 +1.328012000E3,5.352317094E1 +1.328253000E3,5.737674501E1 +1.328545000E3,5.736811408E1 +1.328911000E3,5.477233671E1 +1.329158000E3,5.481436604E1 +1.329403000E3,4.974322484E1 +1.329645000E3,5.490077996E1 +1.329890000E3,4.870505425E1 +1.330144000E3,4.955972956E1 +1.330428000E3,5.470042727E1 +1.330734000E3,5.618884112E1 +1.331026000E3,5.238151215E1 +1.331265000E3,5.344428978E1 +1.331515000E3,5.051963956E1 +1.331772000E3,5.068574448E1 +1.332120000E3,5.754233113E1 +1.332409000E3,5.498832674E1 +1.332740000E3,5.245036701E1 +1.333034000E3,5.885934606E1 +1.333286000E3,5.644915657E1 +1.333540000E3,5.532779852E1 +1.333784000E3,5.694511409E1 +1.334028000E3,5.553937724E1 +1.334302000E3,5.308286554E1 +1.334615000E3,5.140154995E1 +1.334876000E3,5.045296543E1 +1.335187000E3,5.631993217E1 +1.335451000E3,5.435091016E1 +1.335722000E3,5.624357652E1 +1.335986000E3,5.791043400E1 +1.336271000E3,5.847603086E1 +1.336545000E3,5.757219882E1 +1.336794000E3,6.070042624E1 +1.337072000E3,5.247827017E1 +1.337340000E3,5.208145921E1 +1.337609000E3,6.026756153E1 +1.337870000E3,6.012826199E1 +1.338134000E3,5.465450317E1 +1.338408000E3,5.768658418E1 +1.338755000E3,5.542991210E1 +1.339019000E3,5.279974580E1 +1.339289000E3,4.966927449E1 +1.339556000E3,4.563713389E1 +1.339804000E3,4.961972315E1 +1.340056000E3,5.287436972E1 +1.340316000E3,5.318950925E1 +1.340586000E3,5.037908496E1 +1.340881000E3,5.345184090E1 +1.341116000E3,5.016784238E1 +1.341407000E3,5.799295151E1 +1.341694000E3,5.875659808E1 +1.342051000E3,5.666657228E1 +1.342345000E3,5.241270038E1 +1.342638000E3,5.754780266E1 +1.342875000E3,5.669750570E1 +1.343177000E3,5.541629106E1 +1.343432000E3,5.556249818E1 +1.343726000E3,5.603182587E1 +1.343969000E3,5.961525777E1 +1.344257000E3,5.915223521E1 +1.344498000E3,5.820677933E1 +1.344777000E3,5.815031326E1 +1.345094000E3,5.733094423E1 +1.345363000E3,5.538469317E1 +1.345622000E3,6.270903439E1 +1.345877000E3,5.551461514E1 +1.346148000E3,5.750063996E1 +1.346395000E3,5.473739655E1 +1.346676000E3,5.131350753E1 +1.346958000E3,5.072615719E1 +1.347258000E3,4.882711207E1 +1.347518000E3,5.273988371E1 +1.347784000E3,6.269937361E1 +1.348040000E3,6.058958657E1 +1.348391000E3,5.894445662E1 +1.348716000E3,5.683213923E1 +1.348984000E3,5.875140523E1 +1.349236000E3,5.263650529E1 +1.349491000E3,4.630287352E1 +1.349847000E3,5.742006494E1 +1.350115000E3,6.486179330E1 +1.350358000E3,5.963871460E1 +1.350612000E3,5.220281373E1 +1.350868000E3,5.825229613E1 +1.351125000E3,5.822075100E1 +1.351374000E3,5.487419692E1 +1.351666000E3,5.461361208E1 +1.351934000E3,5.384511910E1 +1.352185000E3,5.782109838E1 +1.352440000E3,5.156901690E1 +1.352688000E3,5.262530942E1 +1.352990000E3,5.827406705E1 +1.353265000E3,6.164230870E1 +1.353493000E3,5.939319367E1 +1.353769000E3,5.491407227E1 +1.353989000E3,5.363390940E1 +1.354236000E3,5.108497673E1 +1.354516000E3,6.129017752E1 +1.354836000E3,5.594784457E1 +1.355095000E3,5.172378417E1 +1.355422000E3,5.975901259E1 +1.355685000E3,5.720857994E1 +1.355941000E3,5.600667557E1 +1.356197000E3,5.471836828E1 +1.356478000E3,5.319452565E1 +1.356745000E3,5.296912594E1 +1.357013000E3,5.811625635E1 +1.357280000E3,5.430511038E1 +1.357577000E3,5.277700001E1 +1.357824000E3,5.616769978E1 +1.358135000E3,5.406396803E1 +1.358401000E3,4.910300122E1 +1.358643000E3,5.077236009E1 +1.358892000E3,5.530877446E1 +1.359206000E3,5.787482939E1 +1.359485000E3,5.846197249E1 +1.359760000E3,6.103303991E1 +1.360055000E3,6.092009186E1 +1.360296000E3,5.979156049E1 +1.360590000E3,6.049263298E1 +1.360828000E3,5.895545308E1 +1.361114000E3,5.611946421E1 +1.361473000E3,5.480295831E1 +1.361726000E3,5.397626184E1 +1.361972000E3,5.443193027E1 +1.362314000E3,5.572591927E1 +1.362560000E3,5.224616115E1 +1.362808000E3,5.244486023E1 +1.363061000E3,5.179430466E1 +1.363307000E3,5.228822629E1 +1.363555000E3,5.248152719E1 +1.363850000E3,5.310816898E1 +1.364115000E3,5.586433987E1 +1.364397000E3,5.735023043E1 +1.364703000E3,6.002405491E1 +1.364950000E3,5.692273216E1 +1.365192000E3,5.941823705E1 +1.365459000E3,5.316793659E1 +1.365709000E3,5.869878442E1 +1.365953000E3,5.756526572E1 +1.366216000E3,5.687574379E1 +1.366491000E3,5.232478004E1 +1.366744000E3,5.424491879E1 +1.367001000E3,5.235481979E1 +1.367305000E3,5.164783122E1 +1.367588000E3,4.924997634E1 +1.367934000E3,4.924339558E1 +1.368196000E3,5.793398832E1 +1.368473000E3,5.529211657E1 +1.368719000E3,5.120874356E1 +1.368963000E3,5.470742612E1 +1.369285000E3,5.560989240E1 +1.369528000E3,5.197646059E1 +1.369822000E3,5.152328490E1 +1.370111000E3,5.791930576E1 +1.370416000E3,5.368811562E1 +1.370672000E3,5.769124019E1 +1.370919000E3,5.333549653E1 +1.371292000E3,5.847056292E1 +1.371551000E3,5.642894477E1 +1.371803000E3,5.817537921E1 +1.372074000E3,5.885584750E1 +1.372335000E3,5.395474736E1 +1.372602000E3,5.211537518E1 +1.372880000E3,4.924374923E1 +1.373126000E3,4.882665291E1 +1.373379000E3,5.483140316E1 +1.373636000E3,5.380197532E1 +1.373915000E3,5.629967483E1 +1.374251000E3,5.773524892E1 +1.374636000E3,6.271253195E1 +1.374894000E3,5.870587143E1 +1.375125000E3,5.496954916E1 +1.375369000E3,5.621931219E1 +1.375641000E3,5.700323462E1 +1.375912000E3,5.808968856E1 +1.376161000E3,5.697587873E1 +1.376437000E3,5.739415600E1 +1.376687000E3,5.874614285E1 +1.376941000E3,5.855325473E1 +1.377252000E3,5.287324040E1 +1.377495000E3,5.331405656E1 +1.377862000E3,5.163612814E1 +1.378109000E3,6.003152631E1 +1.378372000E3,6.448039849E1 +1.378641000E3,6.226927373E1 +1.378912000E3,6.355904277E1 +1.379208000E3,6.121718755E1 +1.379463000E3,6.371699462E1 +1.379738000E3,5.774542440E1 +1.380076000E3,5.579766677E1 +1.380318000E3,5.520595979E1 +1.380614000E3,5.395000262E1 +1.380855000E3,5.263752401E1 +1.381221000E3,5.267030150E1 +1.381492000E3,5.304251562E1 +1.381793000E3,4.959737221E1 +1.382100000E3,5.549829026E1 +1.382347000E3,5.821584994E1 +1.382642000E3,5.861199323E1 +1.382905000E3,5.256382895E1 +1.383164000E3,5.491877459E1 +1.383443000E3,5.644995893E1 +1.383702000E3,5.411249990E1 +1.383954000E3,5.324738213E1 +1.384305000E3,5.625052210E1 +1.384532000E3,6.070474662E1 +1.384789000E3,5.237062704E1 +1.385074000E3,5.442107865E1 +1.385361000E3,6.017483878E1 +1.385605000E3,6.237555822E1 +1.385869000E3,5.605951782E1 +1.386126000E3,6.511151133E1 +1.386382000E3,5.571785683E1 +1.386696000E3,5.398201636E1 +1.386954000E3,5.323734283E1 +1.387264000E3,5.635686029E1 +1.387623000E3,5.701357512E1 +1.387874000E3,5.632095063E1 +1.388187000E3,5.288354031E1 +1.388477000E3,5.152350906E1 +1.388761000E3,5.130627857E1 +1.388982000E3,4.918436870E1 +1.389239000E3,5.567775637E1 +1.389545000E3,5.465238648E1 +1.389786000E3,5.003079725E1 +1.390027000E3,5.504486936E1 +1.390282000E3,5.947272344E1 +1.390539000E3,6.106137952E1 +1.390892000E3,5.985290475E1 +1.391203000E3,5.500825546E1 +1.391507000E3,5.157102239E1 +1.391806000E3,5.517662265E1 +1.392108000E3,5.349243854E1 +1.392411000E3,5.386652866E1 +1.392707000E3,5.258839734E1 +1.392973000E3,5.376638351E1 +1.393221000E3,5.619475880E1 +1.393480000E3,5.846509931E1 +1.393767000E3,6.504346680E1 +1.394122000E3,5.865804348E1 +1.394392000E3,5.055217311E1 +1.394673000E3,4.837306759E1 +1.394931000E3,5.564689750E1 +1.395193000E3,5.416088817E1 +1.395489000E3,5.481584764E1 +1.395781000E3,5.356143065E1 +1.396078000E3,5.074158934E1 +1.396313000E3,5.177896206E1 +1.396618000E3,5.670327312E1 +1.396914000E3,6.043149132E1 +1.397246000E3,5.875453471E1 +1.397559000E3,5.725772305E1 +1.397842000E3,5.610169288E1 +1.398092000E3,6.098127982E1 +1.398354000E3,5.385330985E1 +1.398611000E3,5.345613584E1 +1.398873000E3,6.183897473E1 +1.399135000E3,5.898294985E1 +1.399399000E3,5.644599073E1 +1.399662000E3,6.288338842E1 +1.399923000E3,5.844786233E1 +1.400178000E3,6.145207907E1 +1.400438000E3,5.797678971E1 +1.400786000E3,5.805590691E1 +1.401082000E3,5.956739883E1 +1.401323000E3,5.537900496E1 +1.401618000E3,5.084213917E1 +1.401871000E3,4.807017206E1 +1.402118000E3,5.545233073E1 +1.402411000E3,5.516036366E1 +1.402644000E3,5.413431379E1 +1.402920000E3,5.388857626E1 +1.403209000E3,5.292068844E1 +1.403479000E3,5.775211983E1 +1.403718000E3,5.117484548E1 +1.404045000E3,5.912447648E1 +1.404295000E3,5.591921957E1 +1.404568000E3,5.565028551E1 +1.404828000E3,5.013398992E1 +1.405122000E3,5.465164253E1 +1.405364000E3,5.305211462E1 +1.405620000E3,5.755171154E1 +1.405929000E3,6.007655449E1 +1.406174000E3,5.899920387E1 +1.406463000E3,5.970773629E1 +1.406720000E3,5.770443308E1 +1.407009000E3,5.521297881E1 +1.407407000E3,5.604277064E1 +1.407677000E3,5.646208540E1 +1.407969000E3,4.906112006E1 +1.408239000E3,5.193830101E1 +1.408558000E3,4.835599484E1 +1.408830000E3,4.864558507E1 +1.409087000E3,5.566138381E1 +1.409349000E3,5.240816417E1 +1.409604000E3,4.366169359E1 +1.409843000E3,4.924613485E1 +1.410167000E3,5.289541091E1 +1.410462000E3,5.429333459E1 +1.410857000E3,5.232803186E1 +1.411115000E3,5.279391543E1 +1.411388000E3,5.698112108E1 +1.411689000E3,4.954635028E1 +1.411940000E3,5.347151392E1 +1.412202000E3,5.431542928E1 +1.412461000E3,5.708654506E1 +1.412712000E3,5.999867781E1 +1.412972000E3,5.836713300E1 +1.413243000E3,5.662529411E1 +1.413547000E3,5.760118844E1 +1.413790000E3,5.272334048E1 +1.414155000E3,5.585703000E1 +1.414407000E3,5.277217169E1 +1.414666000E3,5.575617717E1 +1.414970000E3,5.588142009E1 +1.415263000E3,5.043609445E1 +1.415519000E3,5.366091219E1 +1.415818000E3,6.729065738E1 +1.416082000E3,5.454700058E1 +1.416357000E3,5.542836481E1 +1.416608000E3,6.150002805E1 +1.416870000E3,5.918799699E1 +1.417164000E3,5.739551304E1 +1.417548000E3,5.312046747E1 +1.417864000E3,5.735989692E1 +1.418111000E3,5.463708503E1 +1.418368000E3,5.616594485E1 +1.418622000E3,5.674613857E1 +1.418880000E3,5.393284238E1 +1.419178000E3,5.477989298E1 +1.419414000E3,5.673628135E1 +1.419692000E3,5.246670124E1 +1.419935000E3,5.929492524E1 +1.420173000E3,5.718550468E1 +1.420417000E3,5.597503360E1 +1.420745000E3,5.209811810E1 +1.421016000E3,5.108820023E1 +1.421271000E3,5.704928631E1 +1.421524000E3,5.534619134E1 +1.421787000E3,5.298830069E1 +1.422048000E3,5.357926773E1 +1.422324000E3,5.150193558E1 +1.422590000E3,5.236977243E1 +1.422860000E3,5.598534631E1 +1.423111000E3,5.804712890E1 +1.423360000E3,5.584477369E1 +1.423617000E3,6.166819052E1 +1.423956000E3,6.217862533E1 +1.424239000E3,6.474885215E1 +1.424493000E3,6.561094566E1 +1.424771000E3,6.624921272E1 +1.425013000E3,6.269332683E1 +1.425310000E3,6.427501900E1 +1.425550000E3,6.406421996E1 +1.425806000E3,6.561696377E1 +1.426124000E3,5.757984813E1 +1.426392000E3,6.467113265E1 +1.426661000E3,6.110360998E1 +1.426971000E3,6.257935575E1 +1.427325000E3,6.059948571E1 +1.427600000E3,6.060080967E1 +1.427858000E3,6.129065918E1 +1.428157000E3,6.869907238E1 +1.428403000E3,6.216021300E1 +1.428668000E3,6.028715826E1 +1.428917000E3,5.215970407E1 +1.429175000E3,5.348756082E1 +1.429445000E3,5.866879342E1 +1.429775000E3,5.422412762E1 +1.430077000E3,5.967912654E1 +1.430370000E3,6.053958419E1 +1.430696000E3,5.642153628E1 +1.430959000E3,5.797803369E1 +1.431217000E3,5.265853131E1 +1.431545000E3,6.085541328E1 +1.431825000E3,6.579757863E1 +1.432095000E3,6.783858113E1 +1.432356000E3,6.680245969E1 +1.432609000E3,5.699539434E1 +1.432887000E3,5.495476405E1 +1.433146000E3,5.431336982E1 +1.433405000E3,5.468573805E1 +1.433768000E3,6.415525931E1 +1.434037000E3,5.996195649E1 +1.434305000E3,5.880144898E1 +1.434536000E3,5.062803370E1 +1.434794000E3,4.838886892E1 +1.435059000E3,4.852598648E1 +1.435348000E3,5.424758091E1 +1.435611000E3,6.028120001E1 +1.435845000E3,5.860165153E1 +1.436098000E3,5.820116177E1 +1.436348000E3,5.458976108E1 +1.436603000E3,5.748661459E1 +1.436983000E3,5.071157707E1 +1.437230000E3,5.187454119E1 +1.437505000E3,5.690962542E1 +1.437744000E3,5.898297949E1 +1.438006000E3,6.083548120E1 +1.438278000E3,4.929702369E1 +1.438556000E3,5.094464024E1 +1.438857000E3,5.451803318E1 +1.439157000E3,4.851675588E1 +1.439427000E3,4.781325912E1 +1.439724000E3,4.919544886E1 +1.439968000E3,4.662525194E1 +1.440374000E3,4.187537091E1 +1.440620000E3,5.083424523E1 +1.440895000E3,4.476479772E1 +1.441179000E3,5.236126827E1 +1.441495000E3,4.954212438E1 +1.441772000E3,5.444261950E1 +1.442048000E3,5.023278537E1 +1.442273000E3,4.640707667E1 +1.442557000E3,5.088583460E1 +1.442822000E3,5.041471443E1 +1.443067000E3,4.940152653E1 +1.443315000E3,4.834999124E1 +1.443550000E3,5.084173145E1 +1.443802000E3,4.674944421E1 +1.444118000E3,5.005548854E1 +1.444412000E3,4.880222753E1 +1.444695000E3,4.829349493E1 +1.444948000E3,4.815408858E1 +1.445231000E3,4.968297573E1 +1.445471000E3,5.263069989E1 +1.445763000E3,4.570389774E1 +1.446062000E3,4.674284816E1 +1.446364000E3,5.179136771E1 +1.446637000E3,5.007894257E1 +1.446884000E3,5.001285233E1 +1.447102000E3,5.063641057E1 +1.447373000E3,4.164946286E1 +1.447601000E3,3.981108666E1 +1.447894000E3,4.316358072E1 +1.448132000E3,5.465701871E1 +1.448431000E3,4.615144027E1 +1.448672000E3,4.353154230E1 +1.448965000E3,5.208221965E1 +1.449200000E3,5.530439334E1 +1.449496000E3,4.996075498E1 +1.449729000E3,5.218941020E1 +1.450060000E3,4.888890123E1 +1.450335000E3,5.030971329E1 +1.450629000E3,5.012870067E1 +1.450899000E3,4.847297804E1 +1.451151000E3,4.759762696E1 +1.451454000E3,4.978926902E1 +1.451751000E3,4.930919072E1 +1.452001000E3,5.004861581E1 +1.452285000E3,5.051309266E1 +1.452566000E3,4.810890055E1 +1.452826000E3,4.654354865E1 +1.453069000E3,4.761425190E1 +1.453369000E3,4.589508435E1 +1.453616000E3,4.954922405E1 +1.453886000E3,4.065983258E1 +1.454197000E3,4.220647307E1 +1.454513000E3,4.858310714E1 +1.454789000E3,5.196405012E1 +1.455012000E3,5.467685341E1 +1.455262000E3,5.753332593E1 +1.455513000E3,4.707036048E1 +1.455859000E3,3.942826471E1 +1.456237000E3,5.170062203E1 +1.456495000E3,6.022707597E1 +1.456743000E3,5.524301158E1 +1.456990000E3,5.482834451E1 +1.457257000E3,4.917995293E1 +1.457590000E3,4.739340640E1 +1.457831000E3,4.842051754E1 +1.458073000E3,6.166669432E1 +1.458329000E3,5.427876580E1 +1.458617000E3,4.896037674E1 +1.458889000E3,4.346397471E1 +1.459122000E3,4.481546196E1 +1.459424000E3,5.149740630E1 +1.459726000E3,4.614214660E1 +1.459975000E3,4.567227587E1 +1.460237000E3,5.348774305E1 +1.460488000E3,5.617792493E1 +1.460730000E3,5.122937085E1 +1.460971000E3,5.712815616E1 +1.461266000E3,5.592815325E1 +1.461504000E3,5.208026338E1 +1.461798000E3,5.368936290E1 +1.462033000E3,5.424431898E1 +1.462332000E3,5.229538114E1 +1.462686000E3,5.012562607E1 +1.462943000E3,5.517893002E1 +1.463292000E3,5.544440679E1 +1.463574000E3,5.195225561E1 +1.463851000E3,5.582804772E1 +1.464133000E3,5.163717454E1 +1.464392000E3,5.056978371E1 +1.464653000E3,5.085736348E1 +1.464931000E3,5.111025552E1 +1.465171000E3,5.008163028E1 +1.465468000E3,5.204681239E1 +1.465721000E3,4.873162615E1 +1.466070000E3,5.052420662E1 +1.466365000E3,5.115431116E1 +1.466626000E3,5.008089225E1 +1.466902000E3,5.455907242E1 +1.467123000E3,5.881328519E1 +1.467422000E3,5.654049662E1 +1.467665000E3,6.208900398E1 +1.467911000E3,5.573620080E1 +1.468210000E3,5.034178452E1 +1.468461000E3,4.644884091E1 +1.468716000E3,4.489036287E1 +1.469021000E3,4.555962209E1 +1.469437000E3,4.956164087E1 +1.469733000E3,5.014140659E1 +1.469995000E3,5.025508197E1 +1.470298000E3,4.976482928E1 +1.470552000E3,4.666552600E1 +1.470801000E3,5.164800320E1 +1.471107000E3,4.748865751E1 +1.471358000E3,5.068455306E1 +1.471623000E3,5.380657492E1 +1.471874000E3,4.918332364E1 +1.472155000E3,4.974368594E1 +1.472539000E3,5.519550202E1 +1.472795000E3,5.119649457E1 +1.473056000E3,5.406344748E1 +1.473370000E3,5.554928156E1 +1.473655000E3,5.458007948E1 +1.473895000E3,5.519923804E1 +1.474152000E3,5.580016483E1 +1.474437000E3,5.718813696E1 +1.474685000E3,5.734393611E1 +1.474960000E3,5.879862387E1 +1.475221000E3,5.602300215E1 +1.475474000E3,5.025640835E1 +1.475826000E3,5.543439402E1 +1.476071000E3,5.232164352E1 +1.476323000E3,5.898115961E1 +1.476584000E3,6.066467981E1 +1.476821000E3,5.071984472E1 +1.477123000E3,5.740447565E1 +1.477365000E3,5.959782608E1 +1.477662000E3,5.958620190E1 +1.477906000E3,5.753388342E1 +1.478144000E3,5.506848886E1 +1.478455000E3,5.769430513E1 +1.478723000E3,5.629679592E1 +1.478987000E3,5.649495967E1 +1.479262000E3,5.787253729E1 +1.479512000E3,5.216150167E1 +1.479813000E3,4.948302212E1 +1.480088000E3,5.080056078E1 +1.480342000E3,4.734041467E1 +1.480601000E3,4.440736689E1 +1.480866000E3,5.120725270E1 +1.481166000E3,5.053254929E1 +1.481466000E3,5.274685420E1 +1.481724000E3,5.071521067E1 +1.481973000E3,5.225995741E1 +1.482300000E3,5.133897759E1 +1.482575000E3,5.007250383E1 +1.482845000E3,5.042400131E1 +1.483101000E3,5.258901014E1 +1.483408000E3,5.618504625E1 +1.483668000E3,5.503349900E1 +1.483933000E3,4.974702245E1 +1.484194000E3,5.170781389E1 +1.484440000E3,5.072340799E1 +1.484707000E3,5.947536199E1 +1.485018000E3,5.467515596E1 +1.485306000E3,6.085614245E1 +1.485656000E3,5.990152864E1 +1.485935000E3,5.602550586E1 +1.486168000E3,5.561766537E1 +1.486422000E3,5.350876804E1 +1.486701000E3,5.699979875E1 +1.486960000E3,5.177464585E1 +1.487207000E3,5.249766501E1 +1.487486000E3,5.285366750E1 +1.487751000E3,5.316768095E1 +1.488002000E3,4.876639606E1 +1.488262000E3,5.179834313E1 +1.488516000E3,4.991892364E1 +1.488812000E3,5.156353661E1 +1.489125000E3,5.341434219E1 +1.489400000E3,5.426211096E1 +1.489675000E3,4.699672779E1 +1.489958000E3,5.361914521E1 +1.490219000E3,5.605827819E1 +1.490490000E3,5.089547448E1 +1.490772000E3,5.163564337E1 +1.491061000E3,5.841576784E1 +1.491309000E3,5.524417730E1 +1.491589000E3,5.450558122E1 +1.491873000E3,5.581032480E1 +1.492194000E3,5.802352567E1 +1.492448000E3,4.962366630E1 +1.492810000E3,5.873656508E1 +1.493058000E3,5.690804947E1 +1.493359000E3,5.262261274E1 +1.493674000E3,5.584655342E1 +1.493919000E3,5.542283425E1 +1.494163000E3,5.373884310E1 +1.494412000E3,5.084083433E1 +1.494678000E3,4.964027690E1 +1.494956000E3,5.125570040E1 +1.495204000E3,5.194895191E1 +1.495526000E3,4.961412488E1 +1.495784000E3,4.972405818E1 +1.496036000E3,4.777083448E1 +1.496283000E3,5.231556692E1 +1.496593000E3,5.894066851E1 +1.496842000E3,6.007182772E1 +1.497086000E3,6.003234807E1 +1.497358000E3,5.170627362E1 +1.497682000E3,5.564688341E1 +1.497937000E3,5.459086103E1 +1.498234000E3,5.654462748E1 +1.498530000E3,5.643601391E1 +1.498887000E3,5.593732695E1 +1.499182000E3,5.279859883E1 +1.499469000E3,5.063056157E1 +1.499723000E3,4.846330641E1 +1.499972000E3,5.696559719E1 +1.500236000E3,5.806291630E1 +1.500555000E3,5.485435177E1 +1.500851000E3,5.386376671E1 +1.501120000E3,5.529102258E1 +1.501400000E3,5.058415032E1 +1.501675000E3,5.420960743E1 +1.501928000E3,4.962388553E1 +1.502263000E3,5.167692375E1 +1.502567000E3,5.072695334E1 +1.502878000E3,5.319678523E1 +1.503119000E3,5.961199300E1 +1.503369000E3,5.299728366E1 +1.503631000E3,5.369404965E1 +1.503941000E3,5.426817134E1 +1.504209000E3,5.369336762E1 +1.504462000E3,5.246626497E1 +1.504724000E3,5.358557871E1 +1.505015000E3,4.957781391E1 +1.505279000E3,5.117668163E1 +1.505699000E3,5.216401891E1 +1.505963000E3,5.011348657E1 +1.506261000E3,5.259055540E1 +1.506507000E3,4.579432510E1 +1.506795000E3,4.877099475E1 +1.507032000E3,4.679595596E1 +1.507314000E3,5.136222565E1 +1.507549000E3,5.267101191E1 +1.507792000E3,5.244999525E1 +1.508074000E3,5.180561005E1 +1.508391000E3,5.030990700E1 +1.508607000E3,5.167226321E1 +1.508859000E3,5.218207738E1 +1.509151000E3,5.317725961E1 +1.509397000E3,5.318899610E1 +1.509689000E3,4.978257152E1 +1.509934000E3,5.032443800E1 +1.510228000E3,4.777293014E1 +1.510466000E3,4.646316587E1 +1.510767000E3,5.646850943E1 +1.511001000E3,5.638889819E1 +1.511293000E3,5.773758842E1 +1.511610000E3,5.580372922E1 +1.511900000E3,5.517502050E1 +1.512151000E3,5.684013484E1 +1.512393000E3,5.407249321E1 +1.512652000E3,5.725430710E1 +1.512902000E3,5.755876004E1 +1.513148000E3,5.492786930E1 +1.513404000E3,5.665177401E1 +1.513705000E3,5.675683028E1 +1.513957000E3,5.845897420E1 +1.514258000E3,5.334537973E1 +1.514488000E3,5.035361876E1 +1.514812000E3,4.886526824E1 +1.515059000E3,5.555156669E1 +1.515357000E3,5.401240780E1 +1.515600000E3,5.191330713E1 +1.515873000E3,5.158089375E1 +1.516102000E3,5.397456219E1 +1.516410000E3,5.205317520E1 +1.516679000E3,5.689433829E1 +1.516971000E3,5.397466306E1 +1.517230000E3,5.553699481E1 +1.517504000E3,5.550832571E1 +1.517763000E3,5.490604036E1 +1.518130000E3,5.129555301E1 +1.518403000E3,5.478479772E1 +1.518670000E3,5.687403653E1 +1.518921000E3,5.464295853E1 +1.519177000E3,5.713561839E1 +1.519461000E3,5.306473622E1 +1.519745000E3,5.320579073E1 +1.520002000E3,5.309385307E1 +1.520258000E3,5.058967996E1 +1.520552000E3,5.470724085E1 +1.520793000E3,5.303104936E1 +1.521156000E3,5.432496893E1 +1.521453000E3,5.594215604E1 +1.521721000E3,5.308545736E1 +1.521969000E3,5.327888421E1 +1.522220000E3,5.030915333E1 +1.522490000E3,5.230098434E1 +1.522776000E3,4.743827766E1 +1.523026000E3,5.464211349E1 +1.523327000E3,5.322537523E1 +1.523581000E3,5.154569729E1 +1.523826000E3,5.335950152E1 +1.524133000E3,5.482016506E1 +1.524417000E3,5.825411535E1 +1.524853000E3,5.879893849E1 +1.525179000E3,5.728744863E1 +1.525433000E3,5.737571640E1 +1.525696000E3,5.681107869E1 +1.525950000E3,5.695921586E1 +1.526210000E3,5.455429607E1 +1.526487000E3,5.808007225E1 +1.526729000E3,5.500512440E1 +1.527042000E3,5.476260812E1 +1.527339000E3,5.849962899E1 +1.527579000E3,5.719021529E1 +1.527910000E3,5.422226824E1 +1.528160000E3,5.266147572E1 +1.528411000E3,5.030747323E1 +1.528675000E3,5.057502492E1 +1.528920000E3,5.365292462E1 +1.529175000E3,5.444435151E1 +1.529423000E3,5.586906556E1 +1.529732000E3,5.808239082E1 +1.530030000E3,5.492304678E1 +1.530283000E3,5.727734117E1 +1.530542000E3,5.518682809E1 +1.530805000E3,5.838179726E1 +1.531133000E3,5.619103982E1 +1.531448000E3,5.705771680E1 +1.531738000E3,5.605732573E1 +1.531987000E3,5.497746164E1 +1.532293000E3,5.570350387E1 +1.532602000E3,5.687942595E1 +1.532873000E3,5.590365459E1 +1.533132000E3,5.379832162E1 +1.533387000E3,5.951317374E1 +1.533654000E3,5.728034638E1 +1.533915000E3,5.755019099E1 +1.534163000E3,5.625336618E1 +1.534512000E3,5.560455999E1 +1.534783000E3,5.186395468E1 +1.535086000E3,6.018952062E1 +1.535379000E3,5.360739703E1 +1.535619000E3,5.637744941E1 +1.535916000E3,5.710534601E1 +1.536153000E3,5.751101039E1 +1.536449000E3,5.888699469E1 +1.536688000E3,5.900809640E1 +1.536983000E3,5.539354346E1 +1.537218000E3,5.212761926E1 +1.537514000E3,6.113968309E1 +1.537773000E3,5.789795306E1 +1.538038000E3,6.065119472E1 +1.538356000E3,5.715251587E1 +1.538607000E3,5.728294892E1 +1.538911000E3,5.939537878E1 +1.539175000E3,5.879010449E1 +1.539417000E3,6.007594674E1 +1.539661000E3,5.983742076E1 +1.539908000E3,6.299497704E1 +1.540182000E3,6.042347696E1 +1.540457000E3,5.844914903E1 +1.540758000E3,5.775362746E1 +1.541037000E3,5.216165265E1 +1.541334000E3,5.255584969E1 +1.541593000E3,5.278098471E1 +1.541846000E3,5.581770981E1 +1.542092000E3,5.736301867E1 +1.542389000E3,5.733951694E1 +1.542623000E3,5.674705381E1 +1.542880000E3,5.506043774E1 +1.543125000E3,5.404728252E1 +1.543453000E3,5.428884791E1 +1.543732000E3,5.547580162E1 +1.544085000E3,5.471747417E1 +1.544346000E3,5.496243571E1 +1.544613000E3,5.288395526E1 +1.544860000E3,5.036194227E1 +1.545111000E3,5.124283852E1 +1.545413000E3,5.731432515E1 +1.545687000E3,5.663908688E1 +1.545955000E3,5.741659811E1 +1.546253000E3,5.084604561E1 +1.546502000E3,5.163330463E1 +1.546772000E3,4.777378739E1 +1.547025000E3,5.200725426E1 +1.547353000E3,5.049690945E1 +1.547625000E3,5.284766124E1 +1.547924000E3,5.396462244E1 +1.548148000E3,5.375524192E1 +1.548403000E3,5.670544075E1 +1.548716000E3,5.332369727E1 +1.548963000E3,5.544219871E1 +1.549238000E3,5.323430806E1 +1.549471000E3,5.180674965E1 +1.549727000E3,5.329467652E1 +1.550023000E3,5.080742485E1 +1.550310000E3,5.026906170E1 +1.550639000E3,5.582908231E1 +1.550905000E3,5.331150300E1 +1.551172000E3,5.186910180E1 +1.551471000E3,5.624561668E1 +1.551739000E3,5.555744845E1 +1.552012000E3,5.944044312E1 +1.552264000E3,6.002272858E1 +1.552531000E3,5.816546804E1 +1.552850000E3,5.936846960E1 +1.553097000E3,5.514794057E1 +1.553401000E3,5.160130424E1 +1.553757000E3,5.107783990E1 +1.554023000E3,5.871375450E1 +1.554276000E3,5.617325190E1 +1.554544000E3,5.736189521E1 +1.554800000E3,5.317828333E1 +1.555051000E3,5.715279916E1 +1.555321000E3,5.726931658E1 +1.555563000E3,5.567771069E1 +1.555823000E3,5.156101336E1 +1.556126000E3,5.688446569E1 +1.556378000E3,6.074118939E1 +1.556642000E3,5.974958265E1 +1.556918000E3,5.702757711E1 +1.557208000E3,5.874442787E1 +1.557457000E3,5.795683904E1 +1.557722000E3,6.039916355E1 +1.558025000E3,5.662755924E1 +1.558320000E3,5.332514547E1 +1.558595000E3,6.059700286E1 +1.558850000E3,5.775207016E1 +1.559098000E3,6.106988435E1 +1.559349000E3,6.039494527E1 +1.559644000E3,5.672405799E1 +1.559889000E3,5.814375710E1 +1.560135000E3,6.159401746E1 +1.560480000E3,5.397583636E1 +1.560770000E3,5.291692280E1 +1.561026000E3,5.439035965E1 +1.561320000E3,5.553984968E1 +1.561619000E3,5.808332247E1 +1.561927000E3,5.744100555E1 +1.562191000E3,5.636250023E1 +1.562451000E3,6.055150308E1 +1.562703000E3,5.624161562E1 +1.562979000E3,5.401048000E1 +1.563233000E3,5.588901558E1 +1.563595000E3,6.020828902E1 +1.563855000E3,6.586197618E1 +1.564143000E3,5.744692826E1 +1.564421000E3,5.175273280E1 +1.564681000E3,5.584828423E1 +1.564939000E3,5.622472521E1 +1.565190000E3,5.419184381E1 +1.565447000E3,4.818775863E1 +1.565701000E3,5.443344746E1 +1.565956000E3,4.960344337E1 +1.566224000E3,6.289868185E1 +1.566469000E3,6.499026885E1 +1.566794000E3,6.277031329E1 +1.567086000E3,5.336636778E1 +1.567405000E3,5.867761918E1 +1.567644000E3,5.135518394E1 +1.567909000E3,5.665720126E1 +1.568204000E3,5.915910399E1 +1.568455000E3,5.687790668E1 +1.568730000E3,5.815647569E1 +1.568976000E3,5.595761669E1 +1.569238000E3,5.367288589E1 +1.569491000E3,4.954593185E1 +1.569752000E3,5.199120702E1 +1.570099000E3,5.857172858E1 +1.570354000E3,5.533510860E1 +1.570614000E3,5.615291914E1 +1.570871000E3,4.816531300E1 +1.571136000E3,4.597509459E1 +1.571387000E3,5.454256971E1 +1.571722000E3,5.262076426E1 +1.572010000E3,5.108681545E1 +1.572285000E3,5.269091247E1 +1.572547000E3,4.898785412E1 +1.572807000E3,4.867008841E1 +1.573066000E3,5.306545801E1 +1.573313000E3,5.092331160E1 +1.573694000E3,5.549117670E1 +1.574009000E3,5.304099104E1 +1.574279000E3,5.377011563E1 +1.574520000E3,5.244694975E1 +1.574770000E3,5.542353961E1 +1.575031000E3,5.327330735E1 +1.575319000E3,5.123065406E1 +1.575617000E3,5.429517947E1 +1.575867000E3,5.443507599E1 +1.576132000E3,5.273613947E1 +1.576382000E3,5.717979407E1 +1.576705000E3,5.184816589E1 +1.576955000E3,4.851208329E1 +1.577250000E3,4.976440939E1 +1.577493000E3,5.236737582E1 +1.577737000E3,5.414723297E1 +1.577998000E3,5.490706774E1 +1.578342000E3,5.591011545E1 +1.578650000E3,5.689754115E1 +1.578906000E3,5.680987850E1 +1.579148000E3,5.379415708E1 +1.579394000E3,5.844713665E1 +1.579644000E3,4.927798375E1 +1.580006000E3,5.263100090E1 +1.580294000E3,5.410513055E1 +1.580548000E3,5.541047194E1 +1.580801000E3,5.058665778E1 +1.581070000E3,5.191468462E1 +1.581349000E3,4.623838572E1 +1.581601000E3,4.883886927E1 +1.581851000E3,4.951159763E1 +1.582152000E3,5.372806241E1 +1.582461000E3,4.077427406E1 +1.582742000E3,4.089897224E1 +1.582967000E3,4.661834708E1 +1.583330000E3,4.498181641E1 +1.583574000E3,4.413204165E1 +1.583835000E3,4.830731952E1 +1.584102000E3,5.133890730E1 +1.584385000E3,5.327819620E1 +1.584689000E3,5.148788947E1 +1.584935000E3,5.259351261E1 +1.585217000E3,5.210912674E1 +1.585449000E3,5.375523399E1 +1.585710000E3,5.030792675E1 +1.585957000E3,5.116594607E1 +1.586271000E3,5.729332409E1 +1.586601000E3,5.372439258E1 +1.586868000E3,5.283683191E1 +1.587111000E3,5.261490358E1 +1.587371000E3,5.394382083E1 +1.587617000E3,5.362104804E1 +1.587861000E3,5.192909002E1 +1.588111000E3,5.534291684E1 +1.588356000E3,5.529045875E1 +1.588616000E3,5.723903943E1 +1.588878000E3,5.769467674E1 +1.589116000E3,5.686991669E1 +1.589367000E3,5.472851050E1 +1.589709000E3,5.509501284E1 +1.589971000E3,6.218794924E1 +1.590276000E3,5.544714813E1 +1.590522000E3,5.587492513E1 +1.590770000E3,6.310127100E1 +1.591031000E3,6.016601681E1 +1.591331000E3,5.868635044E1 +1.591588000E3,5.739907262E1 +1.591847000E3,5.500154159E1 +1.592105000E3,5.382353142E1 +1.592358000E3,5.235465349E1 +1.592660000E3,5.432444683E1 +1.592979000E3,5.583837344E1 +1.593280000E3,5.890777444E1 +1.593531000E3,6.247008348E1 +1.593777000E3,5.524440051E1 +1.594082000E3,6.039849382E1 +1.594376000E3,5.779880973E1 +1.594616000E3,6.006977904E1 +1.594916000E3,6.157791897E1 +1.595158000E3,5.727348505E1 +1.595456000E3,6.219777130E1 +1.595702000E3,6.333776727E1 +1.596011000E3,6.315243887E1 +1.596287000E3,5.622487117E1 +1.596582000E3,4.999384026E1 +1.596838000E3,6.052096287E1 +1.597136000E3,5.730636753E1 +1.597383000E3,5.672770046E1 +1.597632000E3,5.282894107E1 +1.597943000E3,5.609826115E1 +1.598240000E3,5.950608691E1 +1.598483000E3,5.262580449E1 +1.598777000E3,5.638403375E1 +1.599039000E3,5.695994656E1 +1.599354000E3,5.595638462E1 +1.599677000E3,5.456948793E1 +1.599955000E3,5.641745933E1 +1.600254000E3,5.373490010E1 +1.600541000E3,5.613295480E1 +1.600824000E3,5.295628543E1 +1.601071000E3,5.036371368E1 +1.601313000E3,5.734560753E1 +1.601585000E3,5.869799540E1 +1.601832000E3,5.689867309E1 +1.602079000E3,5.521901034E1 +1.602376000E3,5.958743796E1 +1.602630000E3,5.697555749E1 +1.602881000E3,6.067520996E1 +1.603136000E3,6.296730837E1 +1.603381000E3,6.302345663E1 +1.603674000E3,5.614231839E1 +1.603920000E3,5.471880748E1 +1.604179000E3,6.025548138E1 +1.604432000E3,5.848975602E1 +1.604677000E3,6.051353275E1 +1.604988000E3,6.061163824E1 +1.605287000E3,5.127173554E1 +1.605535000E3,5.271948405E1 +1.605890000E3,5.457177629E1 +1.606143000E3,5.047420148E1 +1.606392000E3,5.197178768E1 +1.606684000E3,5.635777628E1 +1.606927000E3,5.691931577E1 +1.607165000E3,5.135114371E1 +1.607440000E3,5.173034620E1 +1.607734000E3,5.786109434E1 +1.607974000E3,5.620528212E1 +1.608236000E3,5.432552885E1 +1.608507000E3,5.036034087E1 +1.608763000E3,4.872303481E1 +1.609123000E3,5.516764205E1 +1.609377000E3,5.867465981E1 +1.609624000E3,5.634077767E1 +1.609869000E3,5.153316916E1 +1.610150000E3,5.212022412E1 +1.610428000E3,5.727395868E1 +1.610681000E3,5.443759521E1 +1.610944000E3,5.599199613E1 +1.611242000E3,5.709063131E1 +1.611495000E3,5.747461955E1 +1.611762000E3,5.445378087E1 +1.612040000E3,5.178206799E1 +1.612294000E3,5.347146008E1 +1.612548000E3,5.695533984E1 +1.612791000E3,5.852885666E1 +1.613050000E3,5.349710519E1 +1.613354000E3,5.482274130E1 +1.613598000E3,5.580201302E1 +1.613898000E3,5.533013655E1 +1.614151000E3,5.307302798E1 +1.614404000E3,5.034267096E1 +1.614651000E3,5.096368681E1 +1.614959000E3,5.358615730E1 +1.615202000E3,5.402822959E1 +1.615565000E3,5.173226008E1 +1.615815000E3,5.317238447E1 +1.616120000E3,5.490271856E1 +1.616406000E3,5.760350961E1 +1.616712000E3,5.516631401E1 +1.616950000E3,5.344247717E1 +1.617197000E3,5.105574764E1 +1.617480000E3,5.297874749E1 +1.617726000E3,5.181083735E1 +1.617978000E3,5.504462581E1 +1.618236000E3,5.652623382E1 +1.618484000E3,5.850281135E1 +1.618804000E3,5.207268405E1 +1.619061000E3,4.595989093E1 +1.619309000E3,5.832875112E1 +1.619574000E3,5.691639889E1 +1.619831000E3,5.277897330E1 +1.620092000E3,5.634285556E1 +1.620390000E3,5.782897026E1 +1.620660000E3,6.167326244E1 +1.620905000E3,5.736569246E1 +1.621145000E3,6.422841213E1 +1.621400000E3,6.037316593E1 +1.621649000E3,5.869946609E1 +1.622005000E3,6.007663283E1 +1.622308000E3,5.750286676E1 +1.622551000E3,5.315958033E1 +1.622849000E3,5.996646537E1 +1.623085000E3,6.310656156E1 +1.623382000E3,6.410911411E1 +1.623620000E3,6.559322950E1 +1.623914000E3,6.191537215E1 +1.624148000E3,6.509401862E1 +1.624441000E3,6.149444047E1 +1.624676000E3,5.887830140E1 +1.624914000E3,5.333395699E1 +1.625242000E3,5.080509527E1 +1.625531000E3,5.208999136E1 +1.625827000E3,4.936268455E1 +1.626072000E3,4.620940228E1 +1.626384000E3,4.812346411E1 +1.626678000E3,5.508818133E1 +1.626931000E3,5.929414420E1 +1.627193000E3,5.798382987E1 +1.627446000E3,5.695027340E1 +1.627690000E3,6.200547811E1 +1.627940000E3,5.895921781E1 +1.628278000E3,5.832121877E1 +1.628595000E3,5.727506493E1 +1.628914000E3,5.676841787E1 +1.629164000E3,5.904549933E1 +1.629453000E3,6.079247221E1 +1.629705000E3,5.978532207E1 +1.629973000E3,6.204876077E1 +1.630223000E3,6.278691878E1 +1.630527000E3,5.775584326E1 +1.630780000E3,5.715423799E1 +1.631076000E3,5.993810238E1 +1.631416000E3,5.945816984E1 +1.631690000E3,5.911038375E1 +1.631989000E3,6.401318161E1 +1.632251000E3,6.288325429E1 +1.632577000E3,6.142114348E1 +1.632857000E3,6.027735545E1 +1.633125000E3,6.058800698E1 +1.633410000E3,6.197295377E1 +1.633713000E3,5.649410931E1 +1.633983000E3,5.349526422E1 +1.634267000E3,5.160473432E1 +1.634550000E3,5.471426263E1 +1.634881000E3,5.381566790E1 +1.635145000E3,5.592472168E1 +1.635394000E3,5.502963456E1 +1.635636000E3,5.458091777E1 +1.635914000E3,5.361113418E1 +1.636211000E3,5.972112366E1 +1.636510000E3,6.134956919E1 +1.636770000E3,6.291498703E1 +1.637018000E3,6.051799303E1 +1.637272000E3,5.800319143E1 +1.637535000E3,6.099184952E1 +1.637791000E3,6.192072936E1 +1.638191000E3,5.592689657E1 +1.638462000E3,5.015193522E1 +1.638759000E3,5.662906295E1 +1.638997000E3,6.189212385E1 +1.639312000E3,5.656112303E1 +1.639618000E3,5.827187766E1 +1.639922000E3,5.894515280E1 +1.640188000E3,5.379936676E1 +1.640446000E3,5.498271927E1 +1.640705000E3,5.883708769E1 +1.641003000E3,5.515786146E1 +1.641329000E3,5.323855564E1 +1.641593000E3,5.000482182E1 +1.641876000E3,5.182077324E1 +1.642101000E3,5.319082569E1 +1.642344000E3,6.611850928E1 +1.642626000E3,5.190424983E1 +1.642867000E3,5.081734830E1 +1.643118000E3,5.711045841E1 +1.643458000E3,5.520016906E1 +1.643723000E3,5.247062228E1 +1.643997000E3,5.309157546E1 +1.644256000E3,5.339769460E1 +1.644621000E3,5.982216134E1 +1.644883000E3,5.915424673E1 +1.645133000E3,5.849263499E1 +1.645426000E3,5.826666974E1 +1.645723000E3,5.673329902E1 +1.645972000E3,5.580417722E1 +1.646244000E3,5.457004449E1 +1.646473000E3,5.835958867E1 +1.646716000E3,5.599398637E1 +1.646958000E3,5.928075116E1 +1.647232000E3,5.394053714E1 +1.647507000E3,5.853879118E1 +1.647858000E3,5.674494648E1 +1.648113000E3,5.640074652E1 +1.648414000E3,5.694867796E1 +1.648656000E3,5.573466688E1 +1.648962000E3,5.556104957E1 +1.649254000E3,5.770712773E1 +1.649548000E3,5.765349227E1 +1.649790000E3,5.583875333E1 +1.650054000E3,6.321152276E1 +1.650306000E3,5.966047080E1 +1.650600000E3,5.502015578E1 +1.650872000E3,5.066616477E1 +1.651172000E3,5.442335496E1 +1.651440000E3,5.956947456E1 +1.651736000E3,5.798320450E1 +1.651979000E3,5.739040713E1 +1.652228000E3,5.803662120E1 +1.652491000E3,6.146613872E1 +1.652750000E3,5.929116619E1 +1.653021000E3,5.936282359E1 +1.653288000E3,5.853226920E1 +1.653570000E3,5.954415072E1 +1.653872000E3,5.749576278E1 +1.654250000E3,5.567111200E1 +1.654518000E3,6.059415807E1 +1.654812000E3,5.855300274E1 +1.655081000E3,5.797601107E1 +1.655350000E3,6.029475669E1 +1.655647000E3,5.264118678E1 +1.655893000E3,5.715075800E1 +1.656153000E3,5.787679223E1 +1.656407000E3,6.038334743E1 +1.656655000E3,6.038245752E1 +1.656912000E3,5.475945603E1 +1.657171000E3,5.661674174E1 +1.657473000E3,5.618877186E1 +1.657717000E3,5.712918740E1 +1.657972000E3,5.834783502E1 +1.658283000E3,6.198115012E1 +1.658526000E3,5.639977894E1 +1.658788000E3,5.416850689E1 +1.659089000E3,5.679686188E1 +1.659335000E3,5.697270686E1 +1.659619000E3,5.371836804E1 +1.659873000E3,6.082252986E1 +1.660120000E3,6.285201132E1 +1.660416000E3,6.088574857E1 +1.660728000E3,6.109109391E1 +1.661004000E3,5.861240224E1 +1.661283000E3,6.123850168E1 +1.661519000E3,5.849447684E1 +1.661821000E3,5.472352136E1 +1.662065000E3,5.502625911E1 +1.662312000E3,5.606436387E1 +1.662565000E3,5.546236927E1 +1.662845000E3,6.075823181E1 +1.663075000E3,5.951357638E1 +1.663350000E3,5.956681026E1 +1.663575000E3,5.780116333E1 +1.663928000E3,6.184122024E1 +1.664178000E3,5.626291699E1 +1.664419000E3,5.635545931E1 +1.664671000E3,5.487242490E1 +1.664936000E3,5.392872477E1 +1.665237000E3,5.658170902E1 +1.665476000E3,5.449322435E1 +1.665752000E3,5.111063749E1 +1.665997000E3,5.288359358E1 +1.666249000E3,5.825102048E1 +1.666508000E3,6.087585373E1 +1.666750000E3,5.822210598E1 +1.667110000E3,6.320270923E1 +1.667355000E3,5.563170163E1 +1.667628000E3,5.240635194E1 +1.667875000E3,5.485055122E1 +1.668144000E3,5.590209292E1 +1.668402000E3,5.750031923E1 +1.668648000E3,5.301598344E1 +1.668896000E3,5.208077776E1 +1.669157000E3,5.024112467E1 +1.669414000E3,5.530220423E1 +1.669710000E3,5.585178295E1 +1.669955000E3,5.443268015E1 +1.670292000E3,5.292974908E1 +1.670566000E3,5.501741168E1 +1.670818000E3,5.190433464E1 +1.671077000E3,5.602388651E1 +1.671384000E3,5.384205522E1 +1.671688000E3,5.355394771E1 +1.671956000E3,4.896600257E1 +1.672212000E3,4.457728928E1 +1.672483000E3,5.407780485E1 +1.672726000E3,5.808535163E1 +1.672991000E3,5.497589856E1 +1.673269000E3,5.816061182E1 +1.673625000E3,5.457220472E1 +1.673896000E3,5.852786772E1 +1.674165000E3,5.615855966E1 +1.674439000E3,5.901141794E1 +1.674702000E3,5.821771493E1 +1.675040000E3,5.533746886E1 +1.675330000E3,5.469332456E1 +1.675631000E3,5.895976057E1 +1.675867000E3,5.565047570E1 +1.676161000E3,5.342216333E1 +1.676431000E3,5.339304237E1 +1.676716000E3,5.196130631E1 +1.677075000E3,5.500129023E1 +1.677346000E3,5.649474234E1 +1.677614000E3,5.620691351E1 +1.677867000E3,5.756400488E1 +1.678112000E3,5.571225073E1 +1.678362000E3,6.171466353E1 +1.678655000E3,5.523245256E1 +1.678909000E3,5.780473196E1 +1.679167000E3,5.918101801E1 +1.679536000E3,5.449831587E1 +1.679788000E3,5.278747036E1 +1.680072000E3,5.502423006E1 +1.680392000E3,5.603218813E1 +1.680667000E3,5.681691969E1 +1.680917000E3,5.574952817E1 +1.681227000E3,5.747793831E1 +1.681510000E3,5.831554727E1 +1.681811000E3,5.823344802E1 +1.682073000E3,5.677197169E1 +1.682402000E3,5.423243511E1 +1.682746000E3,5.568639423E1 +1.683007000E3,5.601571559E1 +1.683297000E3,5.788588795E1 +1.683563000E3,5.178162942E1 +1.683805000E3,5.244727762E1 +1.684102000E3,5.504021082E1 +1.684342000E3,5.312145782E1 +1.684637000E3,5.266466104E1 +1.684875000E3,5.430143327E1 +1.685171000E3,5.731848010E1 +1.685409000E3,5.314967575E1 +1.685703000E3,5.210480680E1 +1.685940000E3,5.447962472E1 +1.686242000E3,5.671930258E1 +1.686480000E3,5.298653153E1 +1.686837000E3,5.390672385E1 +1.687083000E3,5.256535993E1 +1.687387000E3,5.295433262E1 +1.687686000E3,4.693434793E1 +1.687930000E3,5.264001548E1 +1.688191000E3,4.696703102E1 +1.688514000E3,5.290693761E1 +1.688768000E3,5.572289252E1 +1.689025000E3,5.629476293E1 +1.689331000E3,5.221395629E1 +1.689585000E3,5.553268928E1 +1.689905000E3,5.392885939E1 +1.690136000E3,5.613018872E1 +1.690432000E3,5.323144022E1 +1.690690000E3,5.426457319E1 +1.690988000E3,5.869511223E1 +1.691244000E3,5.724931575E1 +1.691548000E3,5.702890727E1 +1.691819000E3,5.957894946E1 +1.692068000E3,5.833323285E1 +1.692367000E3,5.920896731E1 +1.692598000E3,5.809066040E1 +1.692847000E3,5.683194919E1 +1.693218000E3,5.880411413E1 +1.693536000E3,5.430005356E1 +1.693836000E3,5.347827494E1 +1.694082000E3,5.139526617E1 +1.694323000E3,6.486669482E1 +1.694607000E3,5.827670564E1 +1.694879000E3,5.749070135E1 +1.695112000E3,5.439297467E1 +1.695418000E3,5.591879208E1 +1.695720000E3,5.984156108E1 +1.695978000E3,5.763450389E1 +1.696238000E3,5.535113951E1 +1.696577000E3,5.468640858E1 +1.696840000E3,5.145216534E1 +1.697142000E3,5.633820526E1 +1.697434000E3,5.961813260E1 +1.697672000E3,5.761348305E1 +1.697970000E3,5.587832748E1 +1.698213000E3,5.615239979E1 +1.698514000E3,6.142159571E1 +1.698744000E3,5.868747140E1 +1.699038000E3,5.639074769E1 +1.699277000E3,5.843791784E1 +1.699602000E3,5.580904726E1 +1.699849000E3,5.188032815E1 +1.700148000E3,6.050592844E1 +1.700415000E3,5.851925341E1 +1.700742000E3,5.754370303E1 +1.700996000E3,5.792652906E1 +1.701265000E3,5.809754284E1 +1.701543000E3,5.435013872E1 +1.701827000E3,5.364293620E1 +1.702095000E3,5.742174876E1 +1.702342000E3,5.921232761E1 +1.702597000E3,5.246613397E1 +1.702852000E3,5.865178399E1 +1.703188000E3,6.209648540E1 +1.703456000E3,5.783126524E1 +1.703723000E3,6.129722089E1 +1.704021000E3,6.159059582E1 +1.704258000E3,6.290365934E1 +1.704500000E3,5.899658178E1 +1.704744000E3,5.570772177E1 +1.705020000E3,6.042975914E1 +1.705281000E3,6.063911519E1 +1.705578000E3,5.667741437E1 +1.705818000E3,5.616948640E1 +1.706065000E3,5.809228765E1 +1.706440000E3,6.194892333E1 +1.706707000E3,5.510896653E1 +1.706968000E3,5.648771637E1 +1.707226000E3,5.451026369E1 +1.707530000E3,5.655237570E1 +1.707813000E3,6.342687376E1 +1.708096000E3,5.687609223E1 +1.708345000E3,5.784030597E1 +1.708587000E3,5.696931166E1 +1.708832000E3,5.826055047E1 +1.709133000E3,6.171963981E1 +1.709444000E3,6.289993620E1 +1.709785000E3,6.196750111E1 +1.710095000E3,6.021872673E1 +1.710401000E3,5.493999514E1 +1.710645000E3,5.748920917E1 +1.710951000E3,5.990748875E1 +1.711204000E3,5.995493625E1 +1.711504000E3,5.608393688E1 +1.711807000E3,6.225697969E1 +1.712052000E3,6.005399346E1 +1.712297000E3,6.276583246E1 +1.712594000E3,6.409669700E1 +1.712952000E3,5.846223798E1 +1.713249000E3,6.222377893E1 +1.713511000E3,6.179119431E1 +1.713770000E3,6.687160955E1 +1.714020000E3,6.224215114E1 +1.714281000E3,6.460780580E1 +1.714608000E3,6.323149402E1 +1.714900000E3,5.890183616E1 +1.715139000E3,6.173404899E1 +1.715438000E3,6.193562982E1 +1.715674000E3,6.231645929E1 +1.715912000E3,5.798536661E1 +1.716293000E3,5.569607438E1 +1.716537000E3,6.131866955E1 +1.716790000E3,5.896584959E1 +1.717096000E3,5.693976131E1 +1.717346000E3,5.531403594E1 +1.717631000E3,5.794989861E1 +1.717933000E3,5.594899441E1 +1.718204000E3,5.601359132E1 +1.718501000E3,5.861037671E1 +1.718741000E3,6.432265266E1 +1.719043000E3,6.182586376E1 +1.719355000E3,6.076827417E1 +1.719645000E3,5.634225228E1 +1.719943000E3,5.935070169E1 +1.720188000E3,5.856877062E1 +1.720486000E3,5.761843709E1 +1.720741000E3,5.935030376E1 +1.720985000E3,5.413194972E1 +1.721289000E3,5.939733818E1 +1.721553000E3,5.617827250E1 +1.721847000E3,5.807085988E1 +1.722091000E3,5.877044817E1 +1.722445000E3,6.593854232E1 +1.722681000E3,6.027114564E1 +1.722973000E3,5.866411762E1 +1.723271000E3,5.588604319E1 +1.723508000E3,5.958751798E1 +1.723800000E3,6.077290351E1 +1.724039000E3,5.722905231E1 +1.724338000E3,5.619905124E1 +1.724576000E3,5.628809107E1 +1.724876000E3,5.560357878E1 +1.725168000E3,5.447509555E1 +1.725542000E3,5.278892866E1 +1.725841000E3,4.816211457E1 +1.726139000E3,4.622333411E1 +1.726399000E3,4.728231882E1 +1.726691000E3,5.101510224E1 +1.726947000E3,4.725933617E1 +1.727273000E3,5.333398449E1 +1.727569000E3,5.518583989E1 +1.727808000E3,5.719998093E1 +1.728061000E3,5.375072532E1 +1.728352000E3,5.631849408E1 +1.728644000E3,5.232994659E1 +1.729024000E3,5.045911420E1 +1.729295000E3,4.931808913E1 +1.729541000E3,4.866846016E1 +1.729788000E3,5.127644661E1 +1.730054000E3,4.769951033E1 +1.730296000E3,5.553885299E1 +1.730573000E3,5.629080236E1 +1.730816000E3,5.218818952E1 +1.731119000E3,5.112756333E1 +1.731379000E3,5.524890032E1 +1.731688000E3,5.530134621E1 +1.731949000E3,5.451831728E1 +1.732288000E3,5.380962689E1 +1.732589000E3,5.754684503E1 +1.732833000E3,5.184401682E1 +1.733102000E3,5.011373730E1 +1.733369000E3,5.541779655E1 +1.733647000E3,5.983699601E1 +1.733886000E3,6.131428317E1 +1.734163000E3,6.052345820E1 +1.734405000E3,5.852692054E1 +1.734659000E3,5.861191265E1 +1.734933000E3,5.957936529E1 +1.735219000E3,5.639739849E1 +1.735540000E3,5.207917019E1 +1.735832000E3,4.548490451E1 +1.736112000E3,5.219897691E1 +1.736384000E3,5.618314188E1 +1.736684000E3,5.720418785E1 +1.736946000E3,5.895068629E1 +1.737213000E3,5.652216932E1 +1.737468000E3,5.796687034E1 +1.737738000E3,5.591197017E1 +1.737996000E3,5.493985473E1 +1.738236000E3,5.752137274E1 +1.738586000E3,6.041563952E1 +1.738921000E3,6.199530447E1 +1.739167000E3,5.310800091E1 +1.739430000E3,5.600574849E1 +1.739683000E3,6.494981167E1 +1.739952000E3,6.157046745E1 +1.740293000E3,6.002681302E1 +1.740611000E3,5.943541790E1 +1.740910000E3,5.731619793E1 +1.741197000E3,5.885751119E1 +1.741508000E3,5.719237093E1 +1.741767000E3,5.958897825E1 +1.742034000E3,5.543499582E1 +1.742424000E3,5.632783570E1 +1.742688000E3,5.565042743E1 +1.742946000E3,5.622883854E1 +1.743204000E3,6.327777019E1 +1.743456000E3,5.663098185E1 +1.743721000E3,5.729384715E1 +1.743966000E3,6.200582057E1 +1.744273000E3,5.107652622E1 +1.744505000E3,5.491520459E1 +1.744752000E3,5.181266373E1 +1.745004000E3,5.014115745E1 +1.745297000E3,5.338585031E1 +1.745690000E3,5.654477286E1 +1.745966000E3,5.517036116E1 +1.746219000E3,5.200430375E1 +1.746475000E3,5.963355448E1 +1.746732000E3,5.854837006E1 +1.747002000E3,5.571277949E1 +1.747293000E3,5.825116458E1 +1.747522000E3,5.673248340E1 +1.747772000E3,5.683320783E1 +1.748035000E3,5.224053713E1 +1.748289000E3,5.713452273E1 +1.748568000E3,5.539076360E1 +1.748961000E3,6.015893340E1 +1.749211000E3,5.710921188E1 +1.749460000E3,6.114476082E1 +1.749715000E3,5.648052368E1 +1.749961000E3,5.897720288E1 +1.750207000E3,5.525435431E1 +1.750521000E3,5.447453139E1 +1.750765000E3,5.883968686E1 +1.751015000E3,5.450160052E1 +1.751290000E3,5.405183560E1 +1.751522000E3,5.501343440E1 +1.751848000E3,5.586635599E1 +1.752096000E3,5.631573217E1 +1.752372000E3,5.960964241E1 +1.752637000E3,5.320710483E1 +1.752941000E3,5.848434869E1 +1.753209000E3,5.619196315E1 +1.753510000E3,5.692291103E1 +1.753774000E3,5.505374149E1 +1.754051000E3,5.721759821E1 +1.754315000E3,5.539152446E1 +1.754625000E3,5.632890174E1 +1.754919000E3,5.918851802E1 +1.755262000E3,5.807294381E1 +1.755529000E3,5.748451885E1 +1.755827000E3,6.055251826E1 +1.756067000E3,6.208050524E1 +1.756367000E3,5.991655048E1 +1.756607000E3,6.073519941E1 +1.756900000E3,5.774998130E1 +1.757144000E3,5.751173009E1 +1.757417000E3,5.299288378E1 +1.757700000E3,5.913293772E1 +1.758005000E3,5.732040664E1 +1.758269000E3,6.221202462E1 +1.758585000E3,6.285457626E1 +1.758834000E3,5.870613535E1 +1.759137000E3,5.533279687E1 +1.759391000E3,5.194643865E1 +1.759644000E3,4.891449850E1 +1.759922000E3,4.784429271E1 +1.760236000E3,5.273391136E1 +1.760503000E3,5.475616990E1 +1.760758000E3,5.640096860E1 +1.761017000E3,5.329458627E1 +1.761282000E3,4.798672737E1 +1.761535000E3,5.532988346E1 +1.761794000E3,5.189579265E1 +1.762040000E3,5.068357941E1 +1.762299000E3,5.751972157E1 +1.762578000E3,5.430434207E1 +1.762831000E3,5.331943982E1 +1.763136000E3,5.699367350E1 +1.763409000E3,5.622858108E1 +1.763658000E3,5.631559008E1 +1.763910000E3,5.738562920E1 +1.764157000E3,6.030103345E1 +1.764400000E3,5.680309722E1 +1.764695000E3,5.703631315E1 +1.765017000E3,5.682945247E1 +1.765300000E3,5.317093897E1 +1.765575000E3,5.620624417E1 +1.765832000E3,5.550075987E1 +1.766100000E3,6.321349509E1 +1.766371000E3,5.938123887E1 +1.766635000E3,6.289622107E1 +1.766898000E3,5.890101653E1 +1.767155000E3,5.928826732E1 +1.767399000E3,5.872890625E1 +1.767638000E3,6.184345237E1 +1.767877000E3,6.131073260E1 +1.768211000E3,6.085041665E1 +1.768587000E3,6.015418617E1 +1.768835000E3,5.648473324E1 +1.769119000E3,5.746059957E1 +1.769380000E3,5.608054299E1 +1.769692000E3,6.542458852E1 +1.769998000E3,6.121618195E1 +1.770281000E3,5.842785672E1 +1.770536000E3,5.763776595E1 +1.770858000E3,5.630873419E1 +1.771133000E3,5.339704361E1 +1.771378000E3,5.463873835E1 +1.771723000E3,5.659388596E1 +1.772050000E3,5.449836230E1 +1.772294000E3,5.154616724E1 +1.772537000E3,5.082603581E1 +1.772795000E3,5.334183734E1 +1.773055000E3,5.096094928E1 +1.773365000E3,5.171061147E1 +1.773612000E3,5.477281719E1 +1.773878000E3,5.060909259E1 +1.774171000E3,5.285294921E1 +1.774452000E3,5.393730531E1 +1.774725000E3,5.333400186E1 +1.774980000E3,5.285705613E1 +1.775346000E3,5.719168586E1 +1.775663000E3,5.642193929E1 +1.775908000E3,4.659059970E1 +1.776150000E3,5.521168672E1 +1.776388000E3,5.693500665E1 +1.776630000E3,6.030483668E1 +1.776910000E3,5.944095915E1 +1.777153000E3,5.708951289E1 +1.777414000E3,5.291982189E1 +1.777666000E3,5.900042024E1 +1.777935000E3,6.010949926E1 +1.778229000E3,6.009411695E1 +1.778514000E3,5.804757181E1 +1.778758000E3,5.922775473E1 +1.779011000E3,6.063545461E1 +1.779277000E3,5.950242674E1 +1.779575000E3,6.057891518E1 +1.779819000E3,6.050018223E1 +1.780115000E3,5.965583098E1 +1.780361000E3,5.651792502E1 +1.780660000E3,5.814099422E1 +1.780904000E3,5.340077797E1 +1.781203000E3,5.734973286E1 +1.781481000E3,5.846278011E1 +1.781805000E3,5.369751607E1 +1.782048000E3,5.229063054E1 +1.782299000E3,5.345996994E1 +1.782583000E3,5.724353788E1 +1.782883000E3,5.610772411E1 +1.783181000E3,5.272586700E1 +1.783423000E3,5.272075137E1 +1.783692000E3,5.495532717E1 +1.783945000E3,5.594785882E1 +1.784202000E3,5.914935612E1 +1.784483000E3,6.427791570E1 +1.784735000E3,6.185652247E1 +1.785051000E3,6.178338943E1 +1.785352000E3,6.304285312E1 +1.785598000E3,5.699176354E1 +1.785897000E3,5.705567192E1 +1.786190000E3,5.975757470E1 +1.786467000E3,6.092866408E1 +1.786714000E3,5.771726615E1 +1.786984000E3,5.434727511E1 +1.787232000E3,5.250796794E1 +1.787486000E3,5.668884634E1 +1.787813000E3,5.600600547E1 +1.788061000E3,5.162213387E1 +1.788391000E3,5.782497792E1 +1.788636000E3,5.900804565E1 +1.788935000E3,6.056317474E1 +1.789175000E3,5.749029459E1 +1.789469000E3,6.053654612E1 +1.789714000E3,5.841478287E1 +1.789988000E3,5.700130118E1 +1.790219000E3,5.562837186E1 +1.790509000E3,5.430369658E1 +1.790806000E3,5.586895515E1 +1.791048000E3,5.809725956E1 +1.791409000E3,5.552827992E1 +1.791650000E3,5.534472171E1 +1.791981000E3,5.671474363E1 +1.792227000E3,5.716453332E1 +1.792522000E3,5.844249975E1 +1.792847000E3,5.961186667E1 +1.793109000E3,5.794833541E1 +1.793437000E3,5.832360597E1 +1.793698000E3,5.996001578E1 +1.793970000E3,5.849924827E1 +1.794223000E3,5.823551411E1 +1.794488000E3,5.480450178E1 +1.794819000E3,5.715609034E1 +1.795083000E3,5.418083703E1 +1.795329000E3,5.529883425E1 +1.795587000E3,5.729455769E1 +1.795853000E3,5.358946536E1 +1.796083000E3,5.534684059E1 +1.796374000E3,5.693696454E1 +1.796630000E3,5.642610016E1 +1.796927000E3,5.692548294E1 +1.797194000E3,5.931602223E1 +1.797469000E3,5.877569790E1 +1.797716000E3,5.527135197E1 +1.798053000E3,5.904674814E1 +1.798358000E3,5.655039196E1 +1.798612000E3,5.796779928E1 +1.798921000E3,5.499199210E1 +1.799185000E3,5.693837926E1 +1.799465000E3,6.235855457E1 +1.799695000E3,6.271612813E1 +1.799964000E3,6.118271582E1 +1.800233000E3,6.171552449E1 +1.800562000E3,6.293258336E1 +1.800818000E3,5.927940855E1 +1.801077000E3,5.836879001E1 +1.801406000E3,6.182854437E1 +1.801650000E3,5.918527405E1 +1.801894000E3,6.352260837E1 +1.802163000E3,6.142940723E1 +1.802385000E3,5.867772092E1 +1.802631000E3,5.916688243E1 +1.802927000E3,5.855222781E1 +1.803228000E3,6.125789004E1 +1.803533000E3,5.839377949E1 +1.803816000E3,5.705167204E1 +1.804057000E3,5.641730344E1 +1.804362000E3,6.771092582E1 +1.804585000E3,6.036461449E1 +1.804835000E3,6.742095194E1 +1.805132000E3,6.133151855E1 +1.805443000E3,6.658554202E1 +1.805718000E3,7.095511769E1 +1.806003000E3,7.330553664E1 +1.806290000E3,6.732809523E1 +1.806566000E3,6.106403544E1 +1.806844000E3,5.830930506E1 +1.807085000E3,6.610455401E1 +1.807442000E3,5.944325189E1 +1.807800000E3,5.667454347E1 +1.808044000E3,5.560521877E1 +1.808299000E3,5.488377812E1 +1.808542000E3,5.279721650E1 +1.808789000E3,4.834692654E1 +1.809029000E3,4.661669368E1 +1.809276000E3,5.501186804E1 +1.809526000E3,5.384830085E1 +1.809820000E3,5.526588307E1 +1.810084000E3,5.900458249E1 +1.810393000E3,5.557146256E1 +1.810647000E3,5.355619280E1 +1.811023000E3,5.627924000E1 +1.811283000E3,5.384503050E1 +1.811527000E3,5.309622401E1 +1.811816000E3,5.228523776E1 +1.812070000E3,5.317657142E1 +1.812328000E3,5.813846570E1 +1.812583000E3,5.621088360E1 +1.812927000E3,5.646965227E1 +1.813191000E3,5.322001188E1 +1.813436000E3,5.451886743E1 +1.813748000E3,5.558621720E1 +1.814006000E3,5.673920724E1 +1.814328000E3,5.582855401E1 +1.814591000E3,6.044196407E1 +1.814848000E3,5.769208427E1 +1.815109000E3,6.206015086E1 +1.815391000E3,5.918173335E1 +1.815660000E3,5.779702061E1 +1.815927000E3,6.516398742E1 +1.816218000E3,5.927869783E1 +1.816546000E3,6.320256740E1 +1.816802000E3,6.296743684E1 +1.817051000E3,5.869001212E1 +1.817329000E3,5.985536664E1 +1.817620000E3,5.435607380E1 +1.817905000E3,5.721703373E1 +1.818148000E3,6.314389823E1 +1.818376000E3,6.116752308E1 +1.818622000E3,5.773611736E1 +1.818863000E3,5.892899245E1 +1.819138000E3,5.791411351E1 +1.819457000E3,6.283307798E1 +1.819719000E3,5.805008540E1 +1.819967000E3,6.383011196E1 +1.820266000E3,5.915938870E1 +1.820515000E3,5.795811325E1 +1.820871000E3,5.730398564E1 +1.821113000E3,5.907223014E1 +1.821388000E3,5.566469845E1 +1.821612000E3,5.223652040E1 +1.821858000E3,5.461868826E1 +1.822118000E3,5.731142265E1 +1.822388000E3,5.743609212E1 +1.822672000E3,6.147918645E1 +1.822919000E3,6.109678537E1 +1.823167000E3,5.654516230E1 +1.823464000E3,6.010058675E1 +1.823716000E3,6.101649690E1 +1.824046000E3,5.741898993E1 +1.824372000E3,5.654969113E1 +1.824629000E3,5.489877253E1 +1.824894000E3,6.410593751E1 +1.825142000E3,5.923267903E1 +1.825399000E3,5.977300321E1 +1.825683000E3,5.945891570E1 +1.825907000E3,5.799474745E1 +1.826162000E3,5.485933719E1 +1.826447000E3,5.848818620E1 +1.826697000E3,5.937282663E1 +1.826944000E3,5.473647239E1 +1.827319000E3,5.611635619E1 +1.827649000E3,5.704234375E1 +1.827909000E3,5.174683398E1 +1.828172000E3,5.243070089E1 +1.828457000E3,5.835398328E1 +1.828710000E3,6.579711207E1 +1.828969000E3,6.063158540E1 +1.829218000E3,5.379307224E1 +1.829474000E3,5.791005982E1 +1.829779000E3,5.908028356E1 +1.830025000E3,5.476368407E1 +1.830307000E3,5.608145667E1 +1.830627000E3,5.417323034E1 +1.830843000E3,5.295530865E1 +1.831087000E3,5.335160491E1 +1.831385000E3,5.274441298E1 +1.831622000E3,5.307477504E1 +1.831918000E3,5.606159985E1 +1.832155000E3,6.009472302E1 +1.832471000E3,5.380117674E1 +1.832766000E3,5.382200579E1 +1.833012000E3,5.176006230E1 +1.833256000E3,5.956343573E1 +1.833577000E3,5.545935306E1 +1.833826000E3,5.528541848E1 +1.834083000E3,5.436381252E1 +1.834373000E3,5.684307553E1 +1.834669000E3,5.352399464E1 +1.834910000E3,5.651184236E1 +1.835208000E3,5.432875840E1 +1.835453000E3,5.442576527E1 +1.835752000E3,5.643309342E1 +1.836022000E3,5.781174029E1 +1.836293000E3,6.110602518E1 +1.836557000E3,5.591856301E1 +1.836932000E3,5.423752303E1 +1.837200000E3,5.716598850E1 +1.837455000E3,5.511743414E1 +1.837716000E3,5.819026063E1 +1.837988000E3,5.728773522E1 +1.838236000E3,5.959151016E1 +1.838540000E3,5.810767345E1 +1.838799000E3,5.779128856E1 +1.839096000E3,6.092094761E1 +1.839361000E3,5.957871329E1 +1.839608000E3,5.838702884E1 +1.839856000E3,5.927631822E1 +1.840242000E3,5.748386760E1 +1.840516000E3,5.957609475E1 +1.840759000E3,5.688693666E1 +1.841054000E3,5.883374773E1 +1.841320000E3,5.769470339E1 +1.841597000E3,5.894509733E1 +1.841885000E3,6.032854908E1 +1.842190000E3,5.891601570E1 +1.842444000E3,5.957860612E1 +1.842691000E3,5.968229576E1 +1.842933000E3,5.829247522E1 +1.843258000E3,6.183086549E1 +1.843539000E3,6.077794792E1 +1.843765000E3,5.928253866E1 +1.844002000E3,5.782805396E1 +1.844301000E3,5.975447959E1 +1.844589000E3,6.108169982E1 +1.844825000E3,5.915565503E1 +1.845116000E3,5.981302437E1 +1.845363000E3,6.019248645E1 +1.845636000E3,6.014223773E1 +1.845861000E3,6.160258605E1 +1.846139000E3,6.002388007E1 +1.846447000E3,6.004612452E1 +1.846706000E3,5.932487324E1 +1.846979000E3,5.718424575E1 +1.847284000E3,5.712987240E1 +1.847586000E3,5.557624595E1 +1.847888000E3,5.603981815E1 +1.848146000E3,5.769591687E1 +1.848418000E3,5.526085696E1 +1.848706000E3,5.815102401E1 +1.848972000E3,5.884177354E1 +1.849226000E3,5.853138751E1 +1.849515000E3,6.156208919E1 +1.849746000E3,6.064923427E1 +1.850008000E3,6.590305387E1 +1.850338000E3,5.853444981E1 +1.850640000E3,5.717447935E1 +1.850942000E3,5.680568615E1 +1.851242000E3,5.928468331E1 +1.851504000E3,5.798449444E1 +1.851757000E3,5.802619768E1 +1.852033000E3,5.998338312E1 +1.852296000E3,5.683616594E1 +1.852550000E3,5.692327884E1 +1.852886000E3,5.878610583E1 +1.853162000E3,5.538467470E1 +1.853432000E3,5.437085520E1 +1.853738000E3,5.469765317E1 +1.854038000E3,5.790268038E1 +1.854297000E3,5.836787866E1 +1.854582000E3,6.160807622E1 +1.854881000E3,5.878613196E1 +1.855158000E3,6.200103199E1 +1.855387000E3,6.087479870E1 +1.855688000E3,6.028304140E1 +1.855930000E3,6.159527875E1 +1.856226000E3,6.082174354E1 +1.856487000E3,5.932314061E1 +1.856744000E3,5.976570730E1 +1.857001000E3,5.473753247E1 +1.857299000E3,5.954612483E1 +1.857556000E3,6.052388497E1 +1.857849000E3,5.848282940E1 +1.858086000E3,5.879664566E1 +1.858384000E3,5.864589973E1 +1.858677000E3,5.659242719E1 +1.858917000E3,5.683870091E1 +1.859195000E3,5.582498919E1 +1.859427000E3,6.011873423E1 +1.859676000E3,5.796702396E1 +1.859911000E3,5.928400715E1 +1.860149000E3,5.826876733E1 +1.860396000E3,6.038481253E1 +1.860680000E3,6.030085568E1 +1.860944000E3,5.890166619E1 +1.861209000E3,6.654379171E1 +1.861519000E3,6.016187265E1 +1.861755000E3,6.139297542E1 +1.862049000E3,6.289106669E1 +1.862388000E3,5.872946965E1 +1.862675000E3,5.800836625E1 +1.862993000E3,5.701819685E1 +1.863248000E3,5.488359846E1 +1.863519000E3,5.747446133E1 +1.863768000E3,5.996388232E1 +1.864087000E3,5.686047813E1 +1.864334000E3,5.935760915E1 +1.864635000E3,6.438349972E1 +1.864894000E3,6.008599590E1 +1.865205000E3,5.995474236E1 +1.865502000E3,6.596906108E1 +1.865837000E3,6.091064347E1 +1.866114000E3,5.885056970E1 +1.866411000E3,6.474486832E1 +1.866666000E3,5.888758286E1 +1.866964000E3,6.138447683E1 +1.867211000E3,6.032596684E1 +1.867482000E3,5.848476935E1 +1.867736000E3,5.631330849E1 +1.867989000E3,5.927138373E1 +1.868246000E3,5.817171672E1 +1.868499000E3,5.358065381E1 +1.868763000E3,5.500264039E1 +1.869129000E3,5.663946315E1 +1.869384000E3,5.601392416E1 +1.869636000E3,5.640732154E1 +1.869947000E3,5.320213962E1 +1.870207000E3,4.907811811E1 +1.870470000E3,5.784153600E1 +1.870743000E3,5.988355074E1 +1.871011000E3,5.973830135E1 +1.871253000E3,5.769679044E1 +1.871519000E3,5.395770126E1 +1.871765000E3,5.751088186E1 +1.872011000E3,5.342275719E1 +1.872301000E3,5.638616310E1 +1.872563000E3,5.124369984E1 +1.872821000E3,5.357036185E1 +1.873129000E3,5.529809524E1 +1.873386000E3,5.442720524E1 +1.873650000E3,5.306298792E1 +1.873937000E3,5.703507672E1 +1.874184000E3,5.835246426E1 +1.874444000E3,5.638184247E1 +1.874707000E3,5.201779537E1 +1.874972000E3,5.217149520E1 +1.875244000E3,5.757612416E1 +1.875577000E3,5.387788750E1 +1.875865000E3,5.607108884E1 +1.876149000E3,5.692352283E1 +1.876407000E3,5.577296536E1 +1.876687000E3,5.259836493E1 +1.876982000E3,5.467571766E1 +1.877215000E3,5.256317748E1 +1.877521000E3,5.522593862E1 +1.877775000E3,5.432669245E1 +1.878036000E3,5.734031668E1 +1.878314000E3,6.027566119E1 +1.878587000E3,5.567003578E1 +1.878912000E3,5.307720644E1 +1.879176000E3,5.659939353E1 +1.879425000E3,5.110556861E1 +1.879723000E3,5.673190580E1 +1.879969000E3,5.437112204E1 +1.880274000E3,5.433297742E1 +1.880576000E3,5.585075865E1 +1.880875000E3,5.657006430E1 +1.881117000E3,5.701623858E1 +1.881424000E3,5.749679466E1 +1.881673000E3,5.623079196E1 +1.881986000E3,5.545187468E1 +1.882329000E3,5.781610131E1 +1.882611000E3,5.432916720E1 +1.882882000E3,4.940287270E1 +1.883127000E3,5.866223377E1 +1.883391000E3,5.654564177E1 +1.883644000E3,5.888782218E1 +1.883889000E3,5.586307703E1 +1.884148000E3,5.930725555E1 +1.884413000E3,5.963840788E1 +1.884660000E3,5.928611951E1 +1.884926000E3,5.621968819E1 +1.885181000E3,5.811455305E1 +1.885457000E3,5.585646129E1 +1.885714000E3,5.989591718E1 +1.885968000E3,6.058402104E1 +1.886267000E3,5.972100226E1 +1.886517000E3,6.220704457E1 +1.886832000E3,6.037773435E1 +1.887106000E3,6.039308032E1 +1.887385000E3,6.223647696E1 +1.887617000E3,5.854088114E1 +1.887876000E3,6.248517888E1 +1.888128000E3,6.222318884E1 +1.888437000E3,6.070320114E1 +1.888777000E3,5.817372188E1 +1.889076000E3,5.382250608E1 +1.889369000E3,7.004593531E1 +1.889616000E3,6.094415751E1 +1.889913000E3,5.455584628E1 +1.890163000E3,5.387250795E1 +1.890418000E3,5.219742496E1 +1.890714000E3,5.070715955E1 +1.890961000E3,5.362651533E1 +1.891207000E3,5.046817004E1 +1.891453000E3,5.129339201E1 +1.891764000E3,4.856730286E1 +1.892053000E3,5.220705734E1 +1.892321000E3,5.401068171E1 +1.892582000E3,5.109746146E1 +1.892834000E3,5.412675897E1 +1.893090000E3,5.347014573E1 +1.893340000E3,5.092720593E1 +1.893620000E3,5.341316175E1 +1.893886000E3,4.870918930E1 +1.894142000E3,4.929590175E1 +1.894389000E3,4.686294330E1 +1.894692000E3,5.100486031E1 +1.894995000E3,5.087478993E1 +1.895328000E3,4.940372977E1 +1.895606000E3,5.362468443E1 +1.895919000E3,5.608826750E1 +1.896241000E3,5.628756413E1 +1.896497000E3,5.817843169E1 +1.896749000E3,5.809119715E1 +1.897054000E3,5.469613872E1 +1.897287000E3,5.437807476E1 +1.897582000E3,5.794761863E1 +1.897897000E3,6.027023965E1 +1.898145000E3,5.913564460E1 +1.898511000E3,5.510014788E1 +1.898752000E3,5.499817732E1 +1.898999000E3,5.569220222E1 +1.899294000E3,5.368447548E1 +1.899547000E3,5.912109227E1 +1.899841000E3,6.076259223E1 +1.900104000E3,6.153129043E1 +1.900349000E3,5.679462536E1 +1.900634000E3,5.721135074E1 +1.900927000E3,5.674745728E1 +1.901166000E3,5.556227882E1 +1.901462000E3,4.994603734E1 +1.901841000E3,5.122656475E1 +1.902183000E3,5.127903645E1 +1.902436000E3,5.042064547E1 +1.902695000E3,5.425673681E1 +1.902998000E3,5.484388956E1 +1.903228000E3,5.322356297E1 +1.903483000E3,5.161093724E1 +1.903730000E3,5.302125687E1 +1.904019000E3,5.241958307E1 +1.904307000E3,5.116604316E1 +1.904614000E3,5.319513233E1 +1.904991000E3,5.530482451E1 +1.905243000E3,5.829713614E1 +1.905528000E3,4.891404960E1 +1.905774000E3,5.408250868E1 +1.906083000E3,5.272747143E1 +1.906381000E3,5.216068921E1 +1.906624000E3,5.292203291E1 +1.906885000E3,5.243548019E1 +1.907149000E3,4.981562618E1 +1.907448000E3,5.500279348E1 +1.907742000E3,5.481190601E1 +1.907999000E3,5.369800103E1 +1.908315000E3,6.390197571E1 +1.908579000E3,6.517990141E1 +1.908825000E3,5.822949910E1 +1.909064000E3,5.655728640E1 +1.909356000E3,5.292186662E1 +1.909600000E3,5.069372058E1 +1.909895000E3,5.368100654E1 +1.910138000E3,5.616508462E1 +1.910432000E3,6.285923815E1 +1.910670000E3,6.254266196E1 +1.910979000E3,5.628599605E1 +1.911260000E3,5.616383984E1 +1.911482000E3,5.074231882E1 +1.911728000E3,5.398858859E1 +1.911977000E3,5.585565083E1 +1.912237000E3,5.777112626E1 +1.912532000E3,6.036032129E1 +1.912783000E3,6.077032608E1 +1.913052000E3,5.839282786E1 +1.913316000E3,5.397912726E1 +1.913575000E3,5.582771928E1 +1.913848000E3,5.579334158E1 +1.914143000E3,5.778281485E1 +1.914450000E3,5.783459906E1 +1.914713000E3,6.199387267E1 +1.914943000E3,6.173706737E1 +1.915185000E3,5.621060236E1 +1.915433000E3,5.563784893E1 +1.915692000E3,5.470990272E1 +1.915951000E3,5.469960060E1 +1.916217000E3,6.171536544E1 +1.916470000E3,5.862130066E1 +1.916777000E3,5.839467924E1 +1.917028000E3,5.552209731E1 +1.917324000E3,5.763067987E1 +1.917687000E3,5.981653815E1 +1.917967000E3,5.790518789E1 +1.918210000E3,5.220287871E1 +1.918457000E3,5.707286116E1 +1.918759000E3,5.657529642E1 +1.918997000E3,6.000130629E1 +1.919241000E3,5.708419446E1 +1.919496000E3,5.749223221E1 +1.919768000E3,5.843781753E1 +1.920074000E3,5.671929683E1 +1.920373000E3,5.881070992E1 +1.920621000E3,5.603223824E1 +1.920956000E3,6.053511488E1 +1.921216000E3,5.525745837E1 +1.921476000E3,6.186721324E1 +1.921723000E3,6.214292360E1 +1.922025000E3,5.857206109E1 +1.922320000E3,5.934438900E1 +1.922561000E3,6.077867207E1 +1.922860000E3,5.578255978E1 +1.923099000E3,5.723807446E1 +1.923347000E3,5.785786452E1 +1.923636000E3,6.037753633E1 +1.923892000E3,6.106459696E1 +1.924223000E3,5.873119773E1 +1.924511000E3,5.862235861E1 +1.924814000E3,5.732521131E1 +1.925070000E3,5.161553090E1 +1.925373000E3,5.243351685E1 +1.925626000E3,5.041805469E1 +1.925919000E3,5.543714980E1 +1.926175000E3,5.338657816E1 +1.926425000E3,5.616854022E1 +1.926695000E3,5.699328540E1 +1.926965000E3,5.787312270E1 +1.927305000E3,5.558473925E1 +1.927614000E3,5.927685087E1 +1.927880000E3,6.254706193E1 +1.928125000E3,6.079427969E1 +1.928390000E3,5.412440784E1 +1.928634000E3,5.441834540E1 +1.928928000E3,5.220486428E1 +1.929215000E3,5.210908233E1 +1.929515000E3,5.352367419E1 +1.929766000E3,5.356350702E1 +1.930022000E3,5.184851991E1 +1.930322000E3,5.311742835E1 +1.930607000E3,5.453786592E1 +1.930870000E3,5.814140937E1 +1.931155000E3,5.779656646E1 +1.931440000E3,5.488757891E1 +1.931727000E3,5.385182390E1 +1.931981000E3,5.705491580E1 +1.932229000E3,5.576165296E1 +1.932491000E3,5.781333383E1 +1.932730000E3,5.616780300E1 +1.932971000E3,5.400230043E1 +1.933232000E3,5.518627884E1 +1.933510000E3,5.211300688E1 +1.933795000E3,5.292820587E1 +1.934127000E3,5.382097927E1 +1.934390000E3,6.102840439E1 +1.934671000E3,5.486275546E1 +1.934948000E3,5.206103103E1 +1.935198000E3,5.739150099E1 +1.935506000E3,5.310844778E1 +1.935756000E3,5.392681604E1 +1.936008000E3,5.250003264E1 +1.936256000E3,5.801399662E1 +1.936524000E3,5.696032820E1 +1.936785000E3,5.414492013E1 +1.937032000E3,5.536982174E1 +1.937391000E3,5.750979970E1 +1.937677000E3,5.370086514E1 +1.937972000E3,5.359409099E1 +1.938241000E3,4.663692517E1 +1.938508000E3,4.740501122E1 +1.938772000E3,4.812116539E1 +1.939051000E3,4.940260018E1 +1.939311000E3,5.211533825E1 +1.939553000E3,5.351181789E1 +1.939796000E3,5.597808269E1 +1.940081000E3,5.841474518E1 +1.940347000E3,5.900966915E1 +1.940680000E3,5.844032848E1 +1.940932000E3,6.047778057E1 +1.941187000E3,6.179458512E1 +1.941488000E3,5.569784051E1 +1.941730000E3,5.535681081E1 +1.941971000E3,5.409739450E1 +1.942227000E3,5.551927029E1 +1.942555000E3,5.259381649E1 +1.942855000E3,5.090743186E1 +1.943101000E3,5.330610416E1 +1.943383000E3,5.722147303E1 +1.943610000E3,5.564867598E1 +1.944013000E3,5.456395907E1 +1.944265000E3,5.442943523E1 +1.944557000E3,5.982581487E1 +1.944820000E3,5.751114261E1 +1.945081000E3,5.998630171E1 +1.945333000E3,5.908382499E1 +1.945646000E3,5.828329647E1 +1.945951000E3,5.602282904E1 +1.946199000E3,6.197108249E1 +1.946496000E3,5.533258874E1 +1.946770000E3,5.704060455E1 +1.947126000E3,5.457797110E1 +1.947363000E3,5.430717613E1 +1.947637000E3,5.940687974E1 +1.947953000E3,5.436076271E1 +1.948235000E3,5.660912008E1 +1.948550000E3,5.504399315E1 +1.948861000E3,5.464999644E1 +1.949122000E3,5.565806372E1 +1.949384000E3,5.190569146E1 +1.949646000E3,5.153937000E1 +1.949972000E3,5.628803963E1 +1.950248000E3,5.966716422E1 +1.950577000E3,5.820503815E1 +1.950822000E3,5.652058726E1 +1.951118000E3,5.802645793E1 +1.951349000E3,5.727916959E1 +1.951597000E3,5.784165576E1 +1.951900000E3,5.999225852E1 +1.952197000E3,6.048891831E1 +1.952433000E3,5.821794698E1 +1.952728000E3,5.416701806E1 +1.952964000E3,5.183738883E1 +1.953295000E3,5.384161890E1 +1.953675000E3,5.430376660E1 +1.953907000E3,5.257088063E1 +1.954151000E3,5.392186903E1 +1.954431000E3,6.167467738E1 +1.954678000E3,5.958790115E1 +1.954923000E3,5.822018477E1 +1.955185000E3,5.808448347E1 +1.955447000E3,5.733347749E1 +1.955703000E3,6.261390980E1 +1.956005000E3,5.829281758E1 +1.956246000E3,5.949056653E1 +1.956541000E3,5.839747914E1 +1.956810000E3,5.770882066E1 +1.957120000E3,5.690637302E1 +1.957421000E3,5.796705847E1 +1.957668000E3,5.867770180E1 +1.957936000E3,5.696585443E1 +1.958216000E3,5.738908049E1 +1.958463000E3,5.842272770E1 +1.958721000E3,5.966072568E1 +1.959033000E3,6.340725612E1 +1.959281000E3,6.193544465E1 +1.959566000E3,5.927164536E1 +1.959888000E3,6.146900670E1 +1.960249000E3,6.270186363E1 +1.960512000E3,5.695216686E1 +1.960779000E3,5.725758836E1 +1.961040000E3,5.788439963E1 +1.961303000E3,6.286977927E1 +1.961557000E3,6.361469653E1 +1.961802000E3,6.277422462E1 +1.962060000E3,6.032704022E1 +1.962310000E3,5.600516510E1 +1.962586000E3,6.188879617E1 +1.962805000E3,6.271522018E1 +1.963107000E3,6.025198847E1 +1.963453000E3,6.001529679E1 +1.963728000E3,5.375240125E1 +1.964036000E3,5.055228276E1 +1.964331000E3,5.257092943E1 +1.964568000E3,5.708661900E1 +1.964868000E3,5.629448239E1 +1.965178000E3,5.425890416E1 +1.965431000E3,5.575014937E1 +1.965679000E3,5.801461965E1 +1.965931000E3,5.400244473E1 +1.966191000E3,5.474887871E1 +1.966525000E3,5.196538635E1 +1.966783000E3,5.536524974E1 +1.967040000E3,5.974878933E1 +1.967338000E3,6.200932986E1 +1.967644000E3,6.295299888E1 +1.967909000E3,6.272635154E1 +1.968153000E3,5.902465660E1 +1.968474000E3,5.897159976E1 +1.968773000E3,5.506910037E1 +1.969014000E3,5.622897524E1 +1.969254000E3,5.457019516E1 +1.969505000E3,5.648049168E1 +1.969892000E3,5.656883155E1 +1.970152000E3,5.598423772E1 +1.970446000E3,5.186768597E1 +1.970726000E3,5.526177698E1 +1.971020000E3,5.810907246E1 +1.971304000E3,5.262875480E1 +1.971613000E3,5.141696402E1 +1.971915000E3,5.298264424E1 +1.972196000E3,5.641801556E1 +1.972483000E3,5.228737642E1 +1.972725000E3,5.649656740E1 +1.973036000E3,5.867645632E1 +1.973323000E3,5.679238187E1 +1.973633000E3,5.959682402E1 +1.973935000E3,5.617109756E1 +1.974236000E3,5.473085666E1 +1.974547000E3,5.589564412E1 +1.974836000E3,5.691193712E1 +1.975136000E3,5.808545953E1 +1.975385000E3,5.922478363E1 +1.975631000E3,5.707996013E1 +1.975881000E3,5.820923707E1 +1.976194000E3,5.897957095E1 +1.976453000E3,6.019944728E1 +1.976814000E3,6.472960186E1 +1.977076000E3,6.312075290E1 +1.977356000E3,5.886370461E1 +1.977618000E3,5.750754913E1 +1.977917000E3,5.531180501E1 +1.978189000E3,5.815410032E1 +1.978463000E3,5.735965971E1 +1.978732000E3,5.593071322E1 +1.978999000E3,5.835041964E1 +1.979245000E3,5.646810288E1 +1.979493000E3,5.392299875E1 +1.979902000E3,5.430590311E1 +1.980142000E3,5.447583546E1 +1.980384000E3,5.260389735E1 +1.980632000E3,5.537561423E1 +1.980873000E3,5.836960119E1 +1.981120000E3,5.425821286E1 +1.981389000E3,5.153336720E1 +1.981618000E3,5.420085973E1 +1.981915000E3,5.457985954E1 +1.982165000E3,5.637026749E1 +1.982404000E3,6.009656118E1 +1.982718000E3,5.903298531E1 +1.983029000E3,5.665152425E1 +1.983296000E3,5.778918758E1 +1.983538000E3,5.444374512E1 +1.983786000E3,5.619088618E1 +1.984047000E3,6.088482249E1 +1.984304000E3,5.678390940E1 +1.984575000E3,5.873820942E1 +1.984842000E3,6.004736340E1 +1.985142000E3,6.191465398E1 +1.985405000E3,6.154032648E1 +1.985653000E3,5.967034113E1 +1.985913000E3,5.855925349E1 +1.986211000E3,5.529356341E1 +1.986557000E3,5.823190054E1 +1.986847000E3,5.749679599E1 +1.987098000E3,5.855123449E1 +1.987369000E3,5.999203293E1 +1.987610000E3,6.139424716E1 +1.987876000E3,5.730078222E1 +1.988126000E3,5.649537684E1 +1.988425000E3,5.872458305E1 +1.988727000E3,5.704322852E1 +1.989024000E3,6.264447151E1 +1.989326000E3,5.763604303E1 +1.989641000E3,5.657919006E1 +1.989961000E3,5.706004491E1 +1.990255000E3,6.115159729E1 +1.990571000E3,5.721964371E1 +1.990829000E3,5.780420781E1 +1.991088000E3,5.782228640E1 +1.991353000E3,5.791642518E1 +1.991611000E3,5.820065680E1 +1.991935000E3,5.675756460E1 +1.992174000E3,5.720433643E1 +1.992482000E3,5.907701380E1 +1.992770000E3,5.791335620E1 +1.993107000E3,5.504589678E1 +1.993369000E3,6.117578252E1 +1.993619000E3,5.902046786E1 +1.993912000E3,6.024153080E1 +1.994216000E3,6.061721402E1 +1.994464000E3,6.185610038E1 +1.994715000E3,5.902440055E1 +1.995005000E3,6.112374185E1 +1.995249000E3,5.664710018E1 +1.995551000E3,5.841351492E1 +1.995787000E3,5.961393992E1 +1.996119000E3,5.614463215E1 +1.996387000E3,5.528223904E1 +1.996647000E3,5.706960328E1 +1.996947000E3,5.544195306E1 +1.997203000E3,5.747091679E1 +1.997452000E3,5.434233120E1 +1.997769000E3,5.794847441E1 +1.998019000E3,5.504963001E1 +1.998267000E3,5.470768853E1 +1.998498000E3,6.426300701E1 +1.998789000E3,6.070245213E1 +1.999090000E3,5.893271279E1 +1.999390000E3,5.873668669E1 +1.999698000E3,6.355663744E1 +1.999962000E3,6.500393379E1 +2.000214000E3,6.177640112E1 +2.000471000E3,6.122167361E1 +2.000775000E3,5.982616779E1 +2.001079000E3,5.944943300E1 +2.001339000E3,5.772707313E1 +2.001595000E3,5.934980117E1 +2.001862000E3,6.221301291E1 +2.002160000E3,6.098009785E1 +2.002491000E3,6.205877653E1 +2.002758000E3,5.978743388E1 +2.003062000E3,6.141065367E1 +2.003307000E3,6.146860620E1 +2.003555000E3,6.323368939E1 +2.003884000E3,6.072009355E1 +2.004185000E3,6.072017978E1 +2.004424000E3,6.079512782E1 +2.004673000E3,6.651000141E1 +2.004939000E3,6.185812181E1 +2.005202000E3,5.705353418E1 +2.005472000E3,5.820400818E1 +2.005800000E3,5.682542431E1 +2.006070000E3,6.224932691E1 +2.006350000E3,5.654791681E1 +2.006601000E3,6.160831985E1 +2.006857000E3,6.443497299E1 +2.007101000E3,6.091208862E1 +2.007395000E3,5.867323811E1 +2.007635000E3,5.850229824E1 +2.007945000E3,6.307832054E1 +2.008197000E3,5.931313312E1 +2.008453000E3,5.632990721E1 +2.008711000E3,5.662998085E1 +2.009032000E3,5.416655753E1 +2.009268000E3,6.273936844E1 +2.009521000E3,6.129068926E1 +2.009786000E3,6.485712301E1 +2.010037000E3,6.605690213E1 +2.010298000E3,6.243431425E1 +2.010541000E3,6.062714733E1 +2.010780000E3,6.369220544E1 +2.011082000E3,5.933701247E1 +2.011330000E3,6.141658123E1 +2.011605000E3,6.232326760E1 +2.011893000E3,5.983132844E1 +2.012226000E3,6.085684837E1 +2.012489000E3,5.844434641E1 +2.012752000E3,5.992485437E1 +2.013005000E3,5.745164278E1 +2.013272000E3,5.489362140E1 +2.013573000E3,5.734004331E1 +2.013861000E3,5.569303233E1 +2.014170000E3,5.619919203E1 +2.014467000E3,5.719248521E1 +2.014715000E3,5.898607642E1 +2.015015000E3,5.312334941E1 +2.015258000E3,4.707687024E1 +2.015594000E3,5.326213693E1 +2.015822000E3,4.977107581E1 +2.016071000E3,5.399380901E1 +2.016333000E3,5.528915982E1 +2.016634000E3,5.648344312E1 +2.016879000E3,5.853194276E1 +2.017143000E3,5.969968429E1 +2.017429000E3,6.121498547E1 +2.017723000E3,5.933414775E1 +2.017961000E3,6.375558171E1 +2.018248000E3,6.102538403E1 +2.018558000E3,6.066629858E1 +2.018830000E3,5.238394429E1 +2.019065000E3,5.528030903E1 +2.019316000E3,5.711235169E1 +2.019578000E3,6.069913503E1 +2.019847000E3,5.344730110E1 +2.020093000E3,5.593398360E1 +2.020413000E3,5.112453486E1 +2.020668000E3,5.529600172E1 +2.020922000E3,5.816841553E1 +2.021177000E3,6.105447683E1 +2.021449000E3,5.967528890E1 +2.021707000E3,5.677568689E1 +2.022115000E3,5.613246875E1 +2.022403000E3,5.846674311E1 +2.022679000E3,5.999468936E1 +2.022930000E3,6.268951545E1 +2.023232000E3,6.037378186E1 +2.023532000E3,6.123290650E1 +2.023784000E3,6.425880775E1 +2.024094000E3,6.043334594E1 +2.024356000E3,6.287321918E1 +2.024616000E3,6.178703582E1 +2.024868000E3,5.974424575E1 +2.025152000E3,5.863905018E1 +2.025429000E3,5.669082005E1 +2.025716000E3,6.192616195E1 +2.026008000E3,6.367561928E1 +2.026300000E3,6.061621393E1 +2.026543000E3,6.411900249E1 +2.026802000E3,6.060951858E1 +2.027066000E3,5.606119041E1 +2.027395000E3,5.099901519E1 +2.027693000E3,5.622472082E1 +2.027945000E3,5.354940616E1 +2.028237000E3,6.282566888E1 +2.028553000E3,5.775523802E1 +2.028868000E3,6.095006183E1 +2.029133000E3,6.333727439E1 +2.029399000E3,5.925545982E1 +2.029660000E3,6.045827699E1 +2.029962000E3,5.594587825E1 +2.030223000E3,5.708579081E1 +2.030478000E3,5.777704597E1 +2.030737000E3,5.406349508E1 +2.030990000E3,5.544037764E1 +2.031246000E3,5.912518025E1 +2.031508000E3,5.924806900E1 +2.031864000E3,6.105667153E1 +2.032110000E3,5.838466956E1 +2.032350000E3,5.923100201E1 +2.032598000E3,6.024290558E1 +2.032866000E3,5.971089342E1 +2.033112000E3,5.478665804E1 +2.033351000E3,5.966531235E1 +2.033644000E3,5.755565544E1 +2.033892000E3,5.982004182E1 +2.034190000E3,5.797424789E1 +2.034425000E3,5.856301863E1 +2.034717000E3,6.325478319E1 +2.035053000E3,6.168254294E1 +2.035364000E3,6.188857455E1 +2.035619000E3,6.156039581E1 +2.035901000E3,6.235770270E1 +2.036169000E3,6.262779828E1 +2.036471000E3,6.142542176E1 +2.036764000E3,5.923845966E1 +2.037022000E3,5.827266837E1 +2.037307000E3,6.314641141E1 +2.037615000E3,5.460230698E1 +2.037870000E3,5.396400232E1 +2.038120000E3,5.561122002E1 +2.038463000E3,5.928400391E1 +2.038767000E3,5.668934966E1 +2.039069000E3,5.831653467E1 +2.039316000E3,5.267103167E1 +2.039622000E3,5.557794232E1 +2.039859000E3,5.543606804E1 +2.040196000E3,5.836770370E1 +2.040499000E3,5.678092478E1 +2.040751000E3,5.612506795E1 +2.041024000E3,5.868430679E1 +2.041274000E3,5.264121586E1 +2.041581000E3,5.828774790E1 +2.041841000E3,5.647338053E1 +2.042088000E3,6.053709731E1 +2.042403000E3,5.614689861E1 +2.042691000E3,5.714845923E1 +2.042944000E3,5.256418368E1 +2.043191000E3,5.601486494E1 +2.043466000E3,5.810869150E1 +2.043715000E3,5.529893852E1 +2.043979000E3,5.708153712E1 +2.044245000E3,5.690179830E1 +2.044568000E3,5.994555064E1 +2.044825000E3,6.172126409E1 +2.045096000E3,6.015473895E1 +2.045377000E3,5.509344178E1 +2.045629000E3,5.568915719E1 +2.045902000E3,5.938619751E1 +2.046155000E3,5.534852098E1 +2.046409000E3,5.905391706E1 +2.046693000E3,5.250115201E1 +2.046947000E3,5.587771233E1 +2.047277000E3,5.599930929E1 +2.047517000E3,5.586822515E1 +2.047803000E3,5.740436533E1 +2.048105000E3,5.413600866E1 +2.048476000E3,5.595836709E1 +2.048737000E3,5.982743631E1 +2.048992000E3,6.001131240E1 +2.049305000E3,5.629713962E1 +2.049568000E3,5.505265617E1 +2.049904000E3,5.686004167E1 +2.050199000E3,6.078932545E1 +2.050470000E3,5.919030857E1 +2.050773000E3,5.640754436E1 +2.051052000E3,5.864124078E1 +2.051311000E3,5.683150656E1 +2.051642000E3,5.391893615E1 +2.051926000E3,4.513639699E1 +2.052174000E3,5.750824000E1 +2.052467000E3,5.945309138E1 +2.052703000E3,6.260915402E1 +2.052981000E3,6.017408744E1 +2.053276000E3,6.158293130E1 +2.053516000E3,6.279041899E1 +2.053759000E3,6.005362243E1 +2.054030000E3,5.776050932E1 +2.054357000E3,5.906607942E1 +2.054642000E3,6.002924771E1 +2.054978000E3,5.708591672E1 +2.055267000E3,5.932996992E1 +2.055552000E3,5.830703641E1 +2.055812000E3,5.428102985E1 +2.056063000E3,5.893384546E1 +2.056382000E3,6.028305726E1 +2.056682000E3,5.904357096E1 +2.056923000E3,6.015407432E1 +2.057171000E3,5.801677968E1 +2.057418000E3,6.561794532E1 +2.057665000E3,6.751214025E1 +2.057959000E3,5.899748641E1 +2.058279000E3,5.616162884E1 +2.058571000E3,5.813941707E1 +2.058834000E3,6.236684118E1 +2.059132000E3,6.058455193E1 +2.059376000E3,6.004963560E1 +2.059687000E3,6.255152045E1 +2.059984000E3,6.155697025E1 +2.060225000E3,6.124056229E1 +2.060517000E3,6.072549607E1 +2.060756000E3,6.119225814E1 +2.061060000E3,5.953618039E1 +2.061302000E3,5.869582322E1 +2.061578000E3,6.248269042E1 +2.061841000E3,6.070173510E1 +2.062089000E3,6.023992255E1 +2.062337000E3,5.848175462E1 +2.062607000E3,5.092907116E1 +2.062859000E3,5.442118268E1 +2.063124000E3,5.298599309E1 +2.063425000E3,6.030333428E1 +2.063671000E3,5.835700379E1 +2.063954000E3,5.943633389E1 +2.064268000E3,5.761479859E1 +2.064577000E3,5.520238299E1 +2.064822000E3,5.901822557E1 +2.065074000E3,5.705952734E1 +2.065339000E3,6.136116330E1 +2.065603000E3,5.746483296E1 +2.065865000E3,5.867757380E1 +2.066141000E3,5.709322981E1 +2.066441000E3,5.775131141E1 +2.066691000E3,5.886237327E1 +2.067036000E3,5.617972984E1 +2.067288000E3,5.802507148E1 +2.067560000E3,6.044497816E1 +2.067891000E3,5.450044868E1 +2.068148000E3,5.616761260E1 +2.068412000E3,6.243097888E1 +2.068673000E3,5.783788439E1 +2.068946000E3,5.764761585E1 +2.069196000E3,5.683737954E1 +2.069468000E3,5.609890848E1 +2.069778000E3,5.465619904E1 +2.070034000E3,5.368960846E1 +2.070328000E3,6.032893819E1 +2.070574000E3,5.862927742E1 +2.070842000E3,5.635830209E1 +2.071101000E3,5.822198053E1 +2.071339000E3,5.691346983E1 +2.071597000E3,5.865778618E1 +2.071860000E3,5.810560725E1 +2.072128000E3,5.968009174E1 +2.072425000E3,5.833852533E1 +2.072667000E3,5.784540163E1 +2.072934000E3,5.644439458E1 +2.073184000E3,5.178260396E1 +2.073488000E3,5.751445421E1 +2.073769000E3,5.974800721E1 +2.074068000E3,6.534291023E1 +2.074348000E3,6.371076652E1 +2.074624000E3,6.156132937E1 +2.074877000E3,6.012113548E1 +2.075119000E3,6.026351151E1 +2.075377000E3,6.142675581E1 +2.075661000E3,6.194478144E1 +2.075914000E3,6.183865569E1 +2.076267000E3,6.387512541E1 +2.076547000E3,6.077311287E1 +2.076803000E3,6.130963963E1 +2.077056000E3,5.862622582E1 +2.077295000E3,5.463497219E1 +2.077610000E3,5.484231095E1 +2.077891000E3,6.099801434E1 +2.078171000E3,5.475621164E1 +2.078466000E3,5.955577801E1 +2.078709000E3,5.720097088E1 +2.078954000E3,5.661944912E1 +2.079224000E3,5.443336360E1 +2.079503000E3,5.917559782E1 +2.079800000E3,5.424380486E1 +2.080057000E3,6.013762169E1 +2.080307000E3,6.100643768E1 +2.080558000E3,6.205128007E1 +2.080810000E3,6.007904071E1 +2.081092000E3,6.423414837E1 +2.081354000E3,5.938817614E1 +2.081601000E3,6.006860062E1 +2.081845000E3,5.833570272E1 +2.082143000E3,5.962915676E1 +2.082396000E3,5.844615966E1 +2.082663000E3,5.932060291E1 +2.082921000E3,6.037844323E1 +2.083227000E3,5.719168160E1 +2.083487000E3,5.597578938E1 +2.083743000E3,5.236775830E1 +2.084062000E3,5.471900653E1 +2.084318000E3,5.178371688E1 +2.084618000E3,5.707729304E1 +2.084858000E3,5.526812689E1 +2.085154000E3,5.716405930E1 +2.085391000E3,5.478798233E1 +2.085687000E3,5.496315929E1 +2.085932000E3,5.701239101E1 +2.086228000E3,5.776438308E1 +2.086467000E3,5.628202894E1 +2.086760000E3,5.042244376E1 +2.087015000E3,5.775963511E1 +2.087362000E3,4.982890988E1 +2.087671000E3,4.785672217E1 +2.087922000E3,4.762697394E1 +2.088178000E3,5.046726223E1 +2.088438000E3,4.890262424E1 +2.088711000E3,5.501277631E1 +2.088981000E3,5.666001705E1 +2.089249000E3,6.014252161E1 +2.089513000E3,5.925311989E1 +2.089806000E3,6.173820636E1 +2.090063000E3,5.350884215E1 +2.090366000E3,5.736408779E1 +2.090744000E3,5.450936109E1 +2.091005000E3,5.763377323E1 +2.091253000E3,6.042269191E1 +2.091515000E3,5.484903903E1 +2.091757000E3,5.882101591E1 +2.092028000E3,5.833139845E1 +2.092280000E3,5.703430671E1 +2.092527000E3,5.247783814E1 +2.092809000E3,5.233323676E1 +2.093037000E3,5.202869643E1 +2.093354000E3,5.628845797E1 +2.093634000E3,5.325396544E1 +2.094006000E3,5.654992892E1 +2.094280000E3,5.713253789E1 +2.094541000E3,5.967664240E1 +2.094800000E3,5.750232678E1 +2.095069000E3,5.544480371E1 +2.095333000E3,5.462176641E1 +2.095596000E3,5.811248949E1 +2.095853000E3,6.196847972E1 +2.096192000E3,5.842850461E1 +2.096488000E3,5.597774452E1 +2.096726000E3,5.601282925E1 +2.097104000E3,5.625832805E1 +2.097364000E3,5.315488909E1 +2.097602000E3,5.287250653E1 +2.097844000E3,5.523708836E1 +2.098081000E3,5.724292600E1 +2.098340000E3,5.659511238E1 +2.098670000E3,5.675324149E1 +2.098945000E3,5.485884276E1 +2.099219000E3,5.694143956E1 +2.099469000E3,5.561655413E1 +2.099765000E3,5.844909410E1 +2.100011000E3,6.135621316E1 +2.100343000E3,5.968766012E1 +2.100584000E3,5.173347950E1 +2.100832000E3,5.415548255E1 +2.101090000E3,5.271968845E1 +2.101339000E3,5.007174890E1 +2.101624000E3,5.279525002E1 +2.101895000E3,5.358558767E1 +2.102197000E3,5.559048142E1 +2.102438000E3,5.476305303E1 +2.102705000E3,5.237114911E1 +2.102947000E3,5.014972007E1 +2.103218000E3,4.895902935E1 +2.103469000E3,5.192053997E1 +2.103853000E3,4.647138436E1 +2.104101000E3,4.837766327E1 +2.104448000E3,5.088929287E1 +2.104740000E3,5.561591777E1 +2.104997000E3,5.440319534E1 +2.105260000E3,5.347164399E1 +2.105561000E3,5.151610441E1 +2.105813000E3,5.075382634E1 +2.106121000E3,5.244425755E1 +2.106357000E3,5.269617654E1 +2.106663000E3,5.149027406E1 +2.106954000E3,5.659456733E1 +2.107266000E3,5.282561460E1 +2.107606000E3,5.407918273E1 +2.107883000E3,5.643922092E1 +2.108164000E3,5.169657105E1 +2.108480000E3,5.713744586E1 +2.108748000E3,5.931186178E1 +2.109003000E3,5.645689600E1 +2.109252000E3,5.322874786E1 +2.109552000E3,5.363731782E1 +2.109821000E3,5.353815648E1 +2.110077000E3,5.445551750E1 +2.110418000E3,5.491110228E1 +2.110669000E3,5.291647814E1 +2.110921000E3,5.202914132E1 +2.111180000E3,5.363241827E1 +2.111479000E3,5.566624291E1 +2.111721000E3,5.645238247E1 +2.112027000E3,5.458458697E1 +2.112294000E3,5.469783372E1 +2.112597000E3,5.582449562E1 +2.112854000E3,5.595416398E1 +2.113105000E3,5.113785865E1 +2.113352000E3,6.248282803E1 +2.113711000E3,5.880495226E1 +2.113968000E3,5.941805617E1 +2.114248000E3,5.561632009E1 +2.114507000E3,5.501810850E1 +2.114754000E3,5.936291007E1 +2.115053000E3,6.127733734E1 +2.115321000E3,6.057491273E1 +2.115616000E3,6.127323198E1 +2.115893000E3,5.760488174E1 +2.116193000E3,6.030881831E1 +2.116434000E3,5.967518116E1 +2.116722000E3,5.720938908E1 +2.117066000E3,5.605932878E1 +2.117338000E3,6.068190844E1 +2.117598000E3,5.400374866E1 +2.117892000E3,5.332007667E1 +2.118133000E3,4.991979059E1 +2.118428000E3,5.700198654E1 +2.118666000E3,5.878418983E1 +2.118922000E3,5.703766890E1 +2.119230000E3,5.731012811E1 +2.119515000E3,5.865622099E1 +2.119741000E3,5.772295719E1 +2.120015000E3,5.851982083E1 +2.120322000E3,5.958645129E1 +2.120616000E3,6.233814130E1 +2.120861000E3,6.002711287E1 +2.121162000E3,5.939190004E1 +2.121437000E3,5.758195225E1 +2.121690000E3,5.564648712E1 +2.121946000E3,5.336629511E1 +2.122218000E3,5.199121426E1 +2.122476000E3,5.906368298E1 +2.122759000E3,5.917930836E1 +2.123014000E3,5.824882047E1 +2.123266000E3,5.770359270E1 +2.123492000E3,5.695638802E1 +2.123777000E3,5.720151485E1 +2.124027000E3,6.045411810E1 +2.124327000E3,5.540258870E1 +2.124575000E3,5.828000252E1 +2.124835000E3,5.500577731E1 +2.125106000E3,5.926473821E1 +2.125354000E3,5.472888078E1 +2.125611000E3,5.530970077E1 +2.125862000E3,5.595037084E1 +2.126117000E3,5.439239133E1 +2.126432000E3,5.961943996E1 +2.126692000E3,5.841091801E1 +2.126944000E3,5.863137443E1 +2.127282000E3,5.731398304E1 +2.127577000E3,5.665374527E1 +2.127843000E3,5.476493539E1 +2.128129000E3,5.580929465E1 +2.128437000E3,5.565551021E1 +2.128739000E3,5.869101147E1 +2.129026000E3,5.827114612E1 +2.129307000E3,5.507536074E1 +2.129577000E3,5.532393691E1 +2.129934000E3,5.233850306E1 +2.130215000E3,5.514372423E1 +2.130466000E3,5.757947445E1 +2.130714000E3,6.126034226E1 +2.131015000E3,6.074916673E1 +2.131279000E3,5.864911171E1 +2.131564000E3,5.680524431E1 +2.131825000E3,6.002252741E1 +2.132078000E3,5.953076168E1 +2.132390000E3,6.027427680E1 +2.132647000E3,5.955779136E1 +2.132902000E3,5.835756058E1 +2.133223000E3,6.286787860E1 +2.133471000E3,6.057291506E1 +2.133724000E3,5.893793659E1 +2.134002000E3,5.508555746E1 +2.134257000E3,5.619881839E1 +2.134512000E3,5.505764062E1 +2.134784000E3,5.808922162E1 +2.135054000E3,5.334583096E1 +2.135313000E3,5.298019930E1 +2.135595000E3,5.025342296E1 +2.135812000E3,5.409382682E1 +2.136057000E3,5.580950424E1 +2.136332000E3,5.523743716E1 +2.136661000E3,5.499005541E1 +2.136917000E3,5.745623005E1 +2.137196000E3,5.149169849E1 +2.137449000E3,5.261206885E1 +2.137711000E3,5.487518376E1 +2.138022000E3,5.898871991E1 +2.138270000E3,5.852026830E1 +2.138564000E3,5.868858262E1 +2.138802000E3,5.736353209E1 +2.139066000E3,5.529465652E1 +2.139332000E3,5.762578865E1 +2.139672000E3,5.790185487E1 +2.139930000E3,5.792373283E1 +2.140278000E3,5.597904656E1 +2.140535000E3,5.355980456E1 +2.140856000E3,5.411887429E1 +2.141146000E3,5.094976839E1 +2.141467000E3,5.658279242E1 +2.141735000E3,6.043792292E1 +2.142041000E3,5.996632022E1 +2.142276000E3,6.230155616E1 +2.142526000E3,6.102528468E1 +2.142783000E3,5.770338577E1 +2.143124000E3,5.827243883E1 +2.143406000E3,5.367650147E1 +2.143645000E3,5.777094487E1 +2.143915000E3,5.851595499E1 +2.144175000E3,5.573729509E1 +2.144454000E3,5.467626304E1 +2.144700000E3,5.699765591E1 +2.144968000E3,5.692170932E1 +2.145246000E3,6.030210344E1 +2.145550000E3,5.876913066E1 +2.145797000E3,5.698149837E1 +2.146042000E3,5.982717784E1 +2.146368000E3,5.905293636E1 +2.146676000E3,5.947032966E1 +2.146922000E3,5.910471730E1 +2.147225000E3,6.065874797E1 +2.147524000E3,5.680135408E1 +2.147831000E3,5.451199701E1 +2.148090000E3,5.301325775E1 +2.148365000E3,5.466040661E1 +2.148665000E3,5.658013689E1 +2.148952000E3,5.410667827E1 +2.149249000E3,5.788683658E1 +2.149597000E3,5.873903650E1 +2.149910000E3,5.314379433E1 +2.150150000E3,5.564952940E1 +2.150451000E3,6.000220607E1 +2.150691000E3,6.235870620E1 +2.150965000E3,6.387461990E1 +2.151194000E3,6.491001134E1 +2.151449000E3,5.932544814E1 +2.151756000E3,6.117684525E1 +2.152011000E3,6.059885605E1 +2.152282000E3,6.303246617E1 +2.152596000E3,6.399854390E1 +2.152961000E3,6.063746268E1 +2.153223000E3,6.122116723E1 +2.153495000E3,5.809397592E1 +2.153749000E3,5.903784259E1 +2.153999000E3,6.047826717E1 +2.154283000E3,5.846467986E1 +2.154537000E3,6.226879102E1 +2.154785000E3,5.980611807E1 +2.155079000E3,5.787450321E1 +2.155375000E3,5.676059962E1 +2.155616000E3,5.395823696E1 +2.155912000E3,5.953639288E1 +2.156221000E3,5.971614724E1 +2.156510000E3,6.039969801E1 +2.156758000E3,5.898776738E1 +2.157015000E3,6.100474003E1 +2.157289000E3,5.750129682E1 +2.157591000E3,5.995540643E1 +2.157844000E3,5.628303244E1 +2.158104000E3,5.892686601E1 +2.158366000E3,5.712884748E1 +2.158667000E3,5.727860760E1 +2.158932000E3,5.313556696E1 +2.159288000E3,5.635583768E1 +2.159555000E3,5.929473664E1 +2.159809000E3,5.396180560E1 +2.160112000E3,5.807023999E1 +2.160354000E3,5.639240346E1 +2.160608000E3,5.917728814E1 +2.160855000E3,5.429000157E1 +2.161130000E3,5.397827395E1 +2.161395000E3,5.647751800E1 +2.161656000E3,5.342605760E1 +2.162007000E3,5.324373839E1 +2.162263000E3,5.439383591E1 +2.162517000E3,5.727066505E1 +2.162888000E3,5.995593964E1 +2.163140000E3,6.130649482E1 +2.163392000E3,6.228130821E1 +2.163644000E3,6.279179388E1 +2.163938000E3,5.559527300E1 +2.164178000E3,5.200550071E1 +2.164481000E3,5.797363767E1 +2.164757000E3,5.902554678E1 +2.165040000E3,5.834647622E1 +2.165303000E3,5.713285380E1 +2.165575000E3,6.343633700E1 +2.165850000E3,5.896208706E1 +2.166219000E3,5.624501583E1 +2.166483000E3,5.696603075E1 +2.166769000E3,5.736978604E1 +2.167027000E3,5.837475894E1 +2.167278000E3,5.768129207E1 +2.167593000E3,5.660761865E1 +2.167856000E3,5.680076310E1 +2.168110000E3,5.883044450E1 +2.168385000E3,5.772028600E1 +2.168649000E3,5.342008664E1 +2.168914000E3,5.359113324E1 +2.169168000E3,5.849769703E1 +2.169536000E3,6.267181821E1 +2.169793000E3,5.719603223E1 +2.170040000E3,5.397233107E1 +2.170287000E3,4.861027503E1 +2.170579000E3,5.741564583E1 +2.170822000E3,6.207812430E1 +2.171115000E3,5.827753689E1 +2.171365000E3,6.042202215E1 +2.171629000E3,5.516417228E1 +2.171895000E3,4.912315476E1 +2.172163000E3,4.718316305E1 +2.172446000E3,5.363129541E1 +2.172813000E3,5.322378335E1 +2.173087000E3,5.228499961E1 +2.173349000E3,5.364722432E1 +2.173618000E3,5.964999675E1 +2.173917000E3,6.116591719E1 +2.174174000E3,5.668310324E1 +2.174436000E3,5.538937699E1 +2.174688000E3,5.539330891E1 +2.174944000E3,5.678019084E1 +2.175197000E3,5.655985061E1 +2.175490000E3,6.211643319E1 +2.175751000E3,5.899842059E1 +2.176153000E3,6.042080027E1 +2.176454000E3,5.956376587E1 +2.176730000E3,5.896716838E1 +2.177048000E3,5.729778676E1 +2.177305000E3,5.512323216E1 +2.177616000E3,5.573124529E1 +2.177883000E3,5.390669828E1 +2.178139000E3,5.435017850E1 +2.178403000E3,5.275779180E1 +2.178672000E3,5.469054235E1 +2.178938000E3,5.701832565E1 +2.179201000E3,6.063134316E1 +2.179540000E3,6.461030243E1 +2.179799000E3,6.345934666E1 +2.180043000E3,6.255021373E1 +2.180348000E3,6.265836689E1 +2.180640000E3,6.125083403E1 +2.180878000E3,5.721943432E1 +2.181125000E3,5.584429631E1 +2.181407000E3,5.679219567E1 +2.181647000E3,5.506189996E1 +2.181962000E3,5.950753578E1 +2.182227000E3,5.684863204E1 +2.182499000E3,5.318048388E1 +2.182825000E3,5.856807028E1 +2.183124000E3,6.201159961E1 +2.183360000E3,5.994279105E1 +2.183661000E3,6.155626338E1 +2.183904000E3,5.760612799E1 +2.184197000E3,5.557219911E1 +2.184436000E3,5.720299401E1 +2.184730000E3,5.496492062E1 +2.184965000E3,5.287669523E1 +2.185272000E3,5.534018340E1 +2.185572000E3,5.047897567E1 +2.185897000E3,5.289532450E1 +2.186149000E3,5.169587435E1 +2.186428000E3,5.811856565E1 +2.186722000E3,5.829930976E1 +2.187016000E3,5.767171180E1 +2.187297000E3,5.167293983E1 +2.187542000E3,5.634712904E1 +2.187793000E3,5.452173951E1 +2.188038000E3,5.242356157E1 +2.188332000E3,5.476946331E1 +2.188570000E3,5.506415879E1 +2.188807000E3,5.842757277E1 +2.189123000E3,5.579731569E1 +2.189400000E3,5.735467547E1 +2.189707000E3,5.510643622E1 +2.189947000E3,5.399605596E1 +2.190247000E3,5.231812124E1 +2.190482000E3,5.397423501E1 +2.190722000E3,5.467291530E1 +2.190972000E3,5.750340972E1 +2.191219000E3,5.451621797E1 +2.191527000E3,5.544744059E1 +2.191775000E3,5.570906247E1 +2.192040000E3,5.570238792E1 +2.192395000E3,5.704729905E1 +2.192674000E3,5.662202644E1 +2.192969000E3,6.130245708E1 +2.193206000E3,5.842239411E1 +2.193505000E3,5.813812757E1 +2.193745000E3,5.643123308E1 +2.194038000E3,5.810403241E1 +2.194275000E3,5.863690353E1 +2.194574000E3,5.519980518E1 +2.194810000E3,5.381530940E1 +2.195092000E3,5.781601666E1 +2.195335000E3,5.699265058E1 +2.195608000E3,5.477338243E1 +2.195929000E3,5.695412826E1 +2.196188000E3,5.575935497E1 +2.196439000E3,5.738570553E1 +2.196686000E3,6.194168224E1 +2.196969000E3,5.888525061E1 +2.197270000E3,5.830791470E1 +2.197516000E3,5.904778886E1 +2.197822000E3,5.987539712E1 +2.198117000E3,5.910637217E1 +2.198355000E3,5.676446576E1 +2.198673000E3,5.632729175E1 +2.198920000E3,5.826507178E1 +2.199227000E3,6.221847088E1 +2.199493000E3,6.023584539E1 +2.199739000E3,6.378124478E1 +2.199975000E3,6.457706819E1 +2.200218000E3,5.781084826E1 +2.200471000E3,5.833307765E1 +2.200715000E3,5.849295856E1 +2.200984000E3,5.695016071E1 +2.201255000E3,5.945608920E1 +2.201511000E3,5.923858391E1 +2.201821000E3,5.975381188E1 +2.202050000E3,5.657071344E1 +2.202297000E3,5.582353283E1 +2.202552000E3,5.634201272E1 +2.202803000E3,5.842061156E1 +2.203080000E3,5.511323996E1 +2.203339000E3,5.333816234E1 +2.203589000E3,5.586132206E1 +2.203867000E3,5.612282959E1 +2.204151000E3,5.390907932E1 +2.204405000E3,5.581501331E1 +2.204648000E3,5.691201261E1 +2.204938000E3,5.605209961E1 +2.205271000E3,5.337227455E1 +2.205520000E3,5.726868677E1 +2.205824000E3,5.678400386E1 +2.206068000E3,5.598615724E1 +2.206327000E3,6.245548090E1 +2.206634000E3,5.788335624E1 +2.206927000E3,5.672312442E1 +2.207166000E3,5.700846075E1 +2.207464000E3,5.693157148E1 +2.207703000E3,5.667671942E1 +2.207995000E3,5.655907845E1 +2.208344000E3,5.694003799E1 +2.208592000E3,5.812693102E1 +2.208844000E3,5.305590014E1 +2.209133000E3,5.963333488E1 +2.209376000E3,6.125764761E1 +2.209621000E3,5.708540532E1 +2.209865000E3,5.539532482E1 +2.210177000E3,6.086117928E1 +2.210432000E3,5.871599576E1 +2.210705000E3,5.720891289E1 +2.210929000E3,5.859137268E1 +2.211185000E3,5.492761595E1 +2.211566000E3,5.458369125E1 +2.211811000E3,5.704243717E1 +2.212094000E3,5.948204172E1 +2.212325000E3,5.442994388E1 +2.212570000E3,5.607391365E1 +2.212815000E3,5.349643391E1 +2.213089000E3,5.518134225E1 +2.213397000E3,5.879499176E1 +2.213659000E3,5.918920409E1 +2.213917000E3,6.317166487E1 +2.214205000E3,5.773325998E1 +2.214505000E3,6.021667659E1 +2.214834000E3,5.707564648E1 +2.215074000E3,5.411436798E1 +2.215412000E3,5.705541238E1 +2.215699000E3,6.721672427E1 +2.215946000E3,6.130402498E1 +2.216241000E3,5.914242022E1 +2.216493000E3,5.881747375E1 +2.216786000E3,5.920115687E1 +2.217030000E3,5.981753209E1 +2.217325000E3,5.379848698E1 +2.217566000E3,5.498057230E1 +2.217931000E3,5.647867672E1 +2.218210000E3,5.460935805E1 +2.218440000E3,5.579228446E1 +2.218740000E3,5.598523495E1 +2.218992000E3,5.501198671E1 +2.219248000E3,5.270876730E1 +2.219495000E3,5.711255338E1 +2.219767000E3,5.276578476E1 +2.220009000E3,6.171644376E1 +2.220307000E3,5.760035427E1 +2.220557000E3,6.039071701E1 +2.220820000E3,5.947563028E1 +2.221166000E3,5.781157464E1 +2.221459000E3,5.689764898E1 +2.221740000E3,5.361204154E1 +2.221998000E3,5.565584232E1 +2.222252000E3,6.236264054E1 +2.222508000E3,5.583706888E1 +2.222794000E3,5.998886151E1 +2.223038000E3,6.067027795E1 +2.223281000E3,5.953550256E1 +2.223512000E3,6.087865846E1 +2.223764000E3,5.880177247E1 +2.224056000E3,5.532032645E1 +2.224389000E3,5.110554887E1 +2.224697000E3,6.082114583E1 +2.224957000E3,6.332269799E1 +2.225225000E3,5.859152014E1 +2.225521000E3,6.312344162E1 +2.225760000E3,6.208500503E1 +2.226003000E3,6.030377984E1 +2.226280000E3,5.890306026E1 +2.226553000E3,6.412257006E1 +2.226813000E3,5.959239884E1 +2.227137000E3,5.603893495E1 +2.227460000E3,5.807576772E1 +2.227717000E3,6.034272760E1 +2.227950000E3,5.678924442E1 +2.228211000E3,5.767938832E1 +2.228489000E3,4.973605337E1 +2.228742000E3,5.227056153E1 +2.229007000E3,4.524576382E1 +2.229320000E3,5.163901012E1 +2.229633000E3,5.791269320E1 +2.229909000E3,5.832692980E1 +2.230223000E3,5.512940778E1 +2.230487000E3,5.639998631E1 +2.230845000E3,6.012111222E1 +2.231113000E3,6.632176219E1 +2.231407000E3,6.692769565E1 +2.231662000E3,6.409372191E1 +2.231945000E3,6.268702605E1 +2.232208000E3,6.192012265E1 +2.232460000E3,5.923306273E1 +2.232717000E3,5.726340446E1 +2.233005000E3,5.708270925E1 +2.233256000E3,6.172203942E1 +2.233510000E3,6.197059155E1 +2.233807000E3,6.691458644E1 +2.234160000E3,6.165007134E1 +2.234422000E3,6.172053486E1 +2.234714000E3,6.148833899E1 +2.234974000E3,6.190331921E1 +2.235253000E3,5.938090919E1 +2.235479000E3,6.223060920E1 +2.235722000E3,6.133640397E1 +2.236028000E3,6.400294095E1 +2.236269000E3,6.581462957E1 +2.236516000E3,6.094953675E1 +2.236828000E3,5.792232456E1 +2.237124000E3,5.750665846E1 +2.237367000E3,5.360734442E1 +2.237668000E3,5.239836763E1 +2.237914000E3,5.189659577E1 +2.238168000E3,5.779541581E1 +2.238431000E3,5.409030702E1 +2.238689000E3,5.064192938E1 +2.238941000E3,4.890244292E1 +2.239235000E3,4.958738332E1 +2.239486000E3,5.093509792E1 +2.239725000E3,5.421091975E1 +2.239970000E3,6.074883769E1 +2.240298000E3,5.611992467E1 +2.240604000E3,4.988071111E1 +2.240900000E3,4.952063126E1 +2.241187000E3,5.282005772E1 +2.241428000E3,5.672648648E1 +2.241685000E3,5.807464117E1 +2.241973000E3,5.565097745E1 +2.242224000E3,5.410363002E1 +2.242475000E3,5.548804216E1 +2.242720000E3,5.862108370E1 +2.242959000E3,5.101243713E1 +2.243259000E3,5.340920814E1 +2.243564000E3,5.471013043E1 +2.243801000E3,5.474536753E1 +2.244062000E3,5.454012147E1 +2.244333000E3,5.594751460E1 +2.244637000E3,5.486159050E1 +2.244913000E3,5.317501502E1 +2.245138000E3,5.100209753E1 +2.245397000E3,5.436827206E1 +2.245643000E3,5.483479867E1 +2.245916000E3,5.150486026E1 +2.246182000E3,5.049924887E1 +2.246449000E3,5.226067252E1 +2.246744000E3,5.389432372E1 +2.247057000E3,6.032791953E1 +2.247330000E3,5.966662928E1 +2.247666000E3,5.824962285E1 +2.247962000E3,5.700720490E1 +2.248202000E3,6.373200887E1 +2.248495000E3,6.648419927E1 +2.248743000E3,5.542652488E1 +2.249036000E3,5.256926371E1 +2.249272000E3,6.053195001E1 +2.249564000E3,4.959074314E1 +2.249800000E3,5.054384460E1 +2.250136000E3,5.008489809E1 +2.250431000E3,5.752384263E1 +2.250666000E3,5.367007636E1 +2.250931000E3,4.851936559E1 +2.251210000E3,4.965482987E1 +2.251497000E3,5.733244198E1 +2.251772000E3,5.370188093E1 +2.251997000E3,5.388650114E1 +2.252246000E3,5.331606518E1 +2.252516000E3,5.534782747E1 +2.252818000E3,5.271944154E1 +2.253047000E3,5.188974945E1 +2.253402000E3,5.040855384E1 +2.253689000E3,5.348452962E1 +2.253965000E3,5.685197701E1 +2.254240000E3,5.699151925E1 +2.254539000E3,5.217481719E1 +2.254794000E3,5.255063115E1 +2.255035000E3,5.258436032E1 +2.255283000E3,5.228429265E1 +2.255592000E3,5.187189315E1 +2.255851000E3,5.089851896E1 +2.256105000E3,5.323192817E1 +2.256387000E3,5.259240607E1 +2.256752000E3,5.489099725E1 +2.257016000E3,5.140699592E1 +2.257276000E3,5.478139635E1 +2.257600000E3,5.508183343E1 +2.257864000E3,5.539199709E1 +2.258160000E3,5.879728075E1 +2.258399000E3,6.145510373E1 +2.258645000E3,6.018082278E1 +2.258890000E3,6.203490998E1 +2.259131000E3,6.051201097E1 +2.259385000E3,5.741582229E1 +2.259629000E3,5.742200481E1 +2.259994000E3,5.205318956E1 +2.260295000E3,5.807019657E1 +2.260539000E3,5.843419178E1 +2.260841000E3,5.543595349E1 +2.261104000E3,5.208978608E1 +2.261348000E3,5.288295424E1 +2.261601000E3,5.593156434E1 +2.261856000E3,5.600009221E1 +2.262108000E3,5.581775464E1 +2.262358000E3,5.037081152E1 +2.262613000E3,5.059162693E1 +2.262916000E3,5.459372597E1 +2.263271000E3,5.581642194E1 +2.263548000E3,5.702582989E1 +2.263802000E3,5.531282217E1 +2.264049000E3,5.356460573E1 +2.264318000E3,5.682743962E1 +2.264564000E3,5.353127135E1 +2.264854000E3,5.962134934E1 +2.265080000E3,5.858968032E1 +2.265326000E3,5.681259568E1 +2.265625000E3,5.635120121E1 +2.265871000E3,5.433379551E1 +2.266211000E3,4.913835205E1 +2.266510000E3,5.243179137E1 +2.266783000E3,4.886918417E1 +2.267043000E3,4.774131335E1 +2.267292000E3,4.892025491E1 +2.267553000E3,4.710213612E1 +2.267796000E3,4.847827931E1 +2.268042000E3,5.624471818E1 +2.268281000E3,5.286977188E1 +2.268548000E3,5.683989489E1 +2.268800000E3,5.459251055E1 +2.269086000E3,5.272841607E1 +2.269389000E3,5.585343514E1 +2.269616000E3,5.452972356E1 +2.269865000E3,5.183250423E1 +2.270167000E3,4.733442261E1 +2.270442000E3,4.736450762E1 +2.270667000E3,4.430645798E1 +2.270915000E3,4.635257501E1 +2.271160000E3,4.914582650E1 +2.271407000E3,4.938157659E1 +2.271656000E3,4.788630853E1 +2.271896000E3,4.778446083E1 +2.272198000E3,5.081637081E1 +2.272482000E3,4.630509256E1 +2.272722000E3,4.551027932E1 +2.273048000E3,5.074623045E1 +2.273321000E3,4.689236254E1 +2.273562000E3,4.960242652E1 +2.273859000E3,5.310274016E1 +2.274104000E3,5.391997859E1 +2.274392000E3,4.854992165E1 +2.274648000E3,4.610161890E1 +2.274915000E3,5.325141064E1 +2.275196000E3,4.823989698E1 +2.275460000E3,5.167706762E1 +2.275772000E3,4.424461998E1 +2.276008000E3,4.957193490E1 +2.276258000E3,4.220429916E1 +2.276545000E3,4.614900045E1 +2.276809000E3,4.247109284E1 +2.277119000E3,5.104311310E1 +2.277385000E3,4.898949856E1 +2.277651000E3,5.033981280E1 +2.277920000E3,4.504255509E1 +2.278210000E3,4.851295637E1 +2.278452000E3,4.975001222E1 +2.278771000E3,5.198599663E1 +2.279101000E3,5.078534391E1 +2.279348000E3,5.056977572E1 +2.279614000E3,4.645427419E1 +2.279894000E3,4.837428182E1 +2.280121000E3,4.672417188E1 +2.280416000E3,4.338010131E1 +2.280671000E3,4.552410696E1 +2.280941000E3,4.107346609E1 +2.281195000E3,4.850760260E1 +2.281477000E3,4.449785068E1 +2.281730000E3,3.834743898E1 +2.282028000E3,3.160451104E1 +2.282275000E3,2.921367430E1 +2.282509000E3,3.929432216E1 +2.282771000E3,3.560833020E1 +2.283021000E3,4.204425230E1 +2.283277000E3,4.897505461E1 +2.283570000E3,4.492050546E1 +2.283802000E3,4.549624302E1 +2.284053000E3,4.703134831E1 +2.284302000E3,4.492779574E1 +2.284580000E3,5.573526523E1 +2.284888000E3,4.583204799E1 +2.285186000E3,3.987632497E1 +2.285426000E3,4.276483306E1 +2.285670000E3,4.196646636E1 +2.285974000E3,4.127295807E1 +2.286241000E3,3.392540836E1 +2.286513000E3,3.045281657E1 +2.286755000E3,3.056149566E1 +2.287058000E3,4.234115907E1 +2.287358000E3,4.148011807E1 +2.287615000E3,4.752316696E1 +2.287890000E3,4.261643768E1 +2.288186000E3,3.531031146E1 +2.288451000E3,3.336926272E1 +2.288830000E3,3.217663691E1 +2.289083000E3,3.280943829E1 +2.289350000E3,4.037024361E1 +2.289606000E3,4.463743016E1 +2.289870000E3,3.926930450E1 +2.290142000E3,3.549021170E1 +2.290376000E3,3.657210104E1 +2.290669000E3,3.609483404E1 +2.290917000E3,3.935001060E1 +2.291190000E3,3.968762383E1 +2.291417000E3,3.622062011E1 +2.291698000E3,5.052972627E1 +2.292019000E3,4.472329620E1 +2.292314000E3,3.528869928E1 +2.292580000E3,3.171318762E1 +2.292867000E3,3.293682859E1 +2.293112000E3,2.980662334E1 +2.293408000E3,3.108877030E1 +2.293645000E3,3.411108767E1 +2.293948000E3,2.929195023E1 +2.294231000E3,2.830259325E1 +2.294484000E3,2.905088910E1 +2.294732000E3,3.046102835E1 +2.295049000E3,2.679058069E1 +2.295347000E3,2.620731663E1 +2.295594000E3,3.509528145E1 +2.295836000E3,2.657946529E1 +2.296130000E3,2.511368258E1 +2.296378000E3,2.555955915E1 +2.296634000E3,2.785949260E1 +2.296875000E3,2.654407944E1 +2.297117000E3,3.658368449E1 +2.297412000E3,3.412054652E1 +2.297648000E3,3.448252102E1 +2.297956000E3,3.528486686E1 +2.298205000E3,3.265291425E1 +2.298494000E3,2.963788314E1 +2.298798000E3,3.350933300E1 +2.299085000E3,3.038301619E1 +2.299338000E3,3.357142506E1 +2.299610000E3,4.744800671E1 +2.299868000E3,3.435626076E1 +2.300142000E3,3.368274389E1 +2.300402000E3,2.881246111E1 +2.300655000E3,3.097762310E1 +2.300898000E3,2.947567056E1 +2.301182000E3,3.214187359E1 +2.301423000E3,3.421070745E1 +2.301786000E3,5.117970534E1 +2.302087000E3,5.037784077E1 +2.302335000E3,5.283937176E1 +2.302644000E3,5.164119106E1 +2.302941000E3,5.300709748E1 +2.303240000E3,4.713488810E1 +2.303488000E3,4.524114677E1 +2.303739000E3,3.080285972E1 +2.304022000E3,2.293405577E1 +2.304254000E3,2.235464386E1 +2.304552000E3,2.949911358E1 +2.304876000E3,4.141349798E1 +2.305182000E3,4.156611078E1 +2.305491000E3,4.347125429E1 +2.305797000E3,4.579894404E1 +2.306107000E3,4.646123013E1 +2.306358000E3,4.517240887E1 +2.306604000E3,5.308475174E1 +2.306870000E3,4.681256924E1 +2.307168000E3,2.942058533E1 +2.307450000E3,2.986114457E1 +2.307717000E3,3.195150356E1 +2.308031000E3,3.775567348E1 +2.308265000E3,3.823556499E1 +2.308570000E3,2.909536341E1 +2.308842000E3,3.096070220E1 +2.309098000E3,4.060687649E1 +2.309391000E3,4.820113946E1 +2.309687000E3,4.619079404E1 +2.309928000E3,4.304793785E1 +2.310216000E3,4.976144450E1 +2.310446000E3,4.779148829E1 +2.310686000E3,5.167703897E1 +2.310979000E3,3.773719280E1 +2.311248000E3,2.923821784E1 +2.311466000E3,2.654081756E1 +2.311763000E3,2.616593312E1 +2.312001000E3,2.460963519E1 +2.312285000E3,2.554564289E1 +2.312588000E3,3.572755404E1 +2.312856000E3,4.274835909E1 +2.313074000E3,4.355953935E1 +2.313375000E3,5.377727845E1 +2.313611000E3,5.435235813E1 +2.313893000E3,5.477010993E1 +2.314137000E3,5.142421895E1 +2.314483000E3,4.794670725E1 +2.314780000E3,5.149445419E1 +2.315019000E3,5.127618051E1 +2.315306000E3,4.939341348E1 +2.315533000E3,4.928824788E1 +2.315832000E3,4.617335031E1 +2.316069000E3,3.696469062E1 +2.316377000E3,4.552948924E1 +2.316627000E3,4.672923062E1 +2.316913000E3,4.504192742E1 +2.317215000E3,4.364234368E1 +2.317558000E3,4.231291453E1 +2.317853000E3,4.886663905E1 +2.318118000E3,4.492895691E1 +2.318412000E3,4.464681620E1 +2.318711000E3,4.698360224E1 +2.318950000E3,4.454369095E1 +2.319250000E3,4.409609939E1 +2.319494000E3,4.283121809E1 +2.319793000E3,4.398770219E1 +2.320040000E3,4.728522548E1 +2.320336000E3,4.533798443E1 +2.320660000E3,4.548359371E1 +2.320908000E3,4.366718291E1 +2.321152000E3,5.139935964E1 +2.321408000E3,4.747980864E1 +2.321709000E3,3.867643032E1 +2.321952000E3,4.294445900E1 +2.322196000E3,4.336333736E1 +2.322445000E3,3.890531131E1 +2.322682000E3,4.087281677E1 +2.322980000E3,3.979668464E1 +2.323225000E3,4.157042707E1 +2.323553000E3,4.515881082E1 +2.323886000E3,3.868360739E1 +2.324184000E3,4.839319184E1 +2.324428000E3,4.298284223E1 +2.324669000E3,4.433761346E1 +2.324987000E3,4.011512195E1 +2.325233000E3,3.478551365E1 +2.325486000E3,4.180203002E1 +2.325789000E3,4.323726184E1 +2.326086000E3,3.985791110E1 +2.326333000E3,3.946244529E1 +2.326667000E3,4.066537977E1 +2.326925000E3,3.986903649E1 +2.327223000E3,4.142461274E1 +2.327521000E3,3.461788217E1 +2.327778000E3,3.326602717E1 +2.328102000E3,4.357074645E1 +2.328367000E3,5.496493564E1 +2.328618000E3,4.413482695E1 +2.328920000E3,4.170999616E1 +2.329183000E3,4.107694173E1 +2.329486000E3,5.342371220E1 +2.329729000E3,5.103134188E1 +2.330028000E3,4.716459977E1 +2.330382000E3,4.916498276E1 +2.330642000E3,4.801561309E1 +2.330930000E3,4.860033329E1 +2.331211000E3,5.037441690E1 +2.331463000E3,5.227972551E1 +2.331719000E3,4.516533742E1 +2.331971000E3,4.623606604E1 +2.332268000E3,3.207985320E1 +2.332513000E3,3.485208029E1 +2.332801000E3,4.367306984E1 +2.333109000E3,4.764897626E1 +2.333397000E3,4.844411921E1 +2.333779000E3,4.624834459E1 +2.334088000E3,4.492130047E1 +2.334331000E3,4.172849812E1 +2.334618000E3,4.243441154E1 +2.334859000E3,4.155300890E1 +2.335165000E3,3.508017133E1 +2.335414000E3,3.102497597E1 +2.335689000E3,3.346102792E1 +2.335938000E3,2.980210924E1 +2.336237000E3,2.815695425E1 +2.336480000E3,4.530841757E1 +2.336824000E3,4.476742737E1 +2.337075000E3,4.460293889E1 +2.337332000E3,5.054872999E1 +2.337583000E3,4.962100100E1 +2.337845000E3,5.224787063E1 +2.338132000E3,4.845338775E1 +2.338374000E3,4.675501048E1 +2.338651000E3,4.806540095E1 +2.338903000E3,4.707869991E1 +2.339145000E3,4.747595477E1 +2.339395000E3,3.449909829E1 +2.339700000E3,4.619360178E1 +2.340033000E3,4.785644508E1 +2.340329000E3,4.721347586E1 +2.340579000E3,4.302992844E1 +2.340828000E3,4.629706327E1 +2.341122000E3,4.550319757E1 +2.341368000E3,4.510038554E1 +2.341611000E3,4.752886315E1 +2.341876000E3,4.524122211E1 +2.342135000E3,2.990386366E1 +2.342396000E3,3.647672774E1 +2.342679000E3,2.854891758E1 +2.342936000E3,3.995722191E1 +2.343310000E3,4.501906630E1 +2.343555000E3,4.872212276E1 +2.343839000E3,4.566863325E1 +2.344134000E3,3.946814595E1 +2.344384000E3,4.796193013E1 +2.344656000E3,4.858552009E1 +2.344961000E3,4.902627763E1 +2.345257000E3,4.467711671E1 +2.345498000E3,3.756709071E1 +2.345764000E3,2.964206509E1 +2.346064000E3,4.283044167E1 +2.346415000E3,4.191014925E1 +2.346743000E3,4.910031818E1 +2.347021000E3,5.022624274E1 +2.347337000E3,5.257970130E1 +2.347586000E3,4.764257555E1 +2.347831000E3,4.353349182E1 +2.348126000E3,4.318604201E1 +2.348436000E3,4.825752031E1 +2.348710000E3,4.464987037E1 +2.348968000E3,4.690302679E1 +2.349225000E3,4.464063657E1 +2.349495000E3,5.114524492E1 +2.349740000E3,4.345049547E1 +2.350133000E3,4.655800825E1 +2.350382000E3,4.419356370E1 +2.350688000E3,4.308388818E1 +2.350960000E3,4.964188075E1 +2.351269000E3,5.137042419E1 +2.351542000E3,4.751708919E1 +2.351836000E3,3.239228651E1 +2.352067000E3,3.331178705E1 +2.352357000E3,4.628654550E1 +2.352625000E3,4.653844798E1 +2.352938000E3,4.419734850E1 +2.353231000E3,3.771763539E1 +2.353458000E3,3.489550836E1 +2.353713000E3,2.965581776E1 +2.353962000E3,3.457100474E1 +2.354201000E3,3.291595658E1 +2.354446000E3,2.791603976E1 +2.354711000E3,3.307930362E1 +2.355027000E3,5.311162000E1 +2.355290000E3,4.688373373E1 +2.355581000E3,3.663543876E1 +2.355868000E3,2.834403560E1 +2.356176000E3,5.001680718E1 +2.356518000E3,5.349221251E1 +2.356780000E3,5.234097025E1 +2.357043000E3,4.476475434E1 +2.357349000E3,5.160193390E1 +2.357584000E3,4.375385010E1 +2.357840000E3,3.709166207E1 +2.358125000E3,2.927191182E1 +2.358378000E3,4.114289062E1 +2.358676000E3,4.266518399E1 +2.358921000E3,4.641380631E1 +2.359210000E3,4.551221179E1 +2.359545000E3,4.099683883E1 +2.359801000E3,5.202602500E1 +2.360072000E3,5.207875379E1 +2.360343000E3,4.670310433E1 +2.360619000E3,4.619168123E1 +2.360865000E3,4.348453495E1 +2.361113000E3,4.603882932E1 +2.361353000E3,4.061885274E1 +2.361649000E3,4.873355826E1 +2.361884000E3,4.796347566E1 +2.362174000E3,4.419543811E1 +2.362420000E3,4.412529768E1 +2.362674000E3,4.315515456E1 +2.363006000E3,3.718353950E1 +2.363303000E3,4.131746877E1 +2.363556000E3,3.462830696E1 +2.363825000E3,3.224809166E1 +2.364105000E3,2.946532539E1 +2.364420000E3,4.082560353E1 +2.364671000E3,4.169760242E1 +2.364916000E3,4.728483165E1 +2.365158000E3,4.384961396E1 +2.365493000E3,3.327447630E1 +2.365797000E3,2.406470586E1 +2.366141000E3,2.410271882E1 +2.366422000E3,4.124818432E1 +2.366699000E3,4.300386829E1 +2.366994000E3,4.592409288E1 +2.367239000E3,4.402074721E1 +2.367492000E3,4.331525310E1 +2.367744000E3,4.351543939E1 +2.368045000E3,4.861325913E1 +2.368277000E3,4.345520025E1 +2.368543000E3,5.037549285E1 +2.368790000E3,3.455268589E1 +2.369034000E3,3.454484220E1 +2.369300000E3,3.436570372E1 +2.369544000E3,3.180799867E1 +2.369820000E3,4.460893996E1 +2.370091000E3,5.635981603E1 +2.370383000E3,4.932803438E1 +2.370635000E3,5.123791361E1 +2.370939000E3,4.749913119E1 +2.371193000E3,4.606624254E1 +2.371498000E3,4.453668838E1 +2.371779000E3,4.424564317E1 +2.372081000E3,5.022357768E1 +2.372347000E3,4.983363592E1 +2.372720000E3,4.311987242E1 +2.372969000E3,4.071927446E1 +2.373234000E3,3.624584431E1 +2.373535000E3,3.338407859E1 +2.373777000E3,2.744030282E1 +2.374025000E3,4.017686066E1 +2.374281000E3,4.153799732E1 +2.374537000E3,5.163713220E1 +2.374786000E3,4.970373114E1 +2.375033000E3,4.601563593E1 +2.375284000E3,4.943210146E1 +2.375577000E3,5.208741018E1 +2.375935000E3,4.780129348E1 +2.376167000E3,4.632707744E1 +2.376478000E3,5.008962536E1 +2.376734000E3,4.691729314E1 +2.376987000E3,4.593220796E1 +2.377250000E3,4.703621615E1 +2.377550000E3,4.863501898E1 +2.377838000E3,4.747349412E1 +2.378102000E3,4.430216971E1 +2.378373000E3,5.038477253E1 +2.378648000E3,4.679597376E1 +2.378873000E3,3.998762784E1 +2.379232000E3,4.140472709E1 +2.379480000E3,3.803559367E1 +2.379735000E3,4.292956565E1 +2.379993000E3,3.275484639E1 +2.380260000E3,3.159298587E1 +2.380513000E3,3.066195183E1 +2.380756000E3,4.846258942E1 +2.381012000E3,4.617374426E1 +2.381278000E3,4.338282331E1 +2.381580000E3,2.990070560E1 +2.381878000E3,3.384826320E1 +2.382127000E3,4.352773294E1 +2.382476000E3,3.711143795E1 +2.382756000E3,4.818117865E1 +2.383001000E3,4.694356023E1 +2.383312000E3,4.713242320E1 +2.383556000E3,4.945634369E1 +2.383815000E3,3.710449888E1 +2.384109000E3,4.990714727E1 +2.384350000E3,5.101970483E1 +2.384663000E3,4.290224010E1 +2.384917000E3,3.958873166E1 +2.385203000E3,4.207919898E1 +2.385583000E3,3.937588823E1 +2.385864000E3,3.927490117E1 +2.386122000E3,3.708577985E1 +2.386378000E3,3.104425869E1 +2.386630000E3,2.579918418E1 +2.386935000E3,4.201717352E1 +2.387186000E3,4.469788103E1 +2.387445000E3,3.928301867E1 +2.387699000E3,4.425054811E1 +2.387999000E3,2.901032620E1 +2.388242000E3,2.431535493E1 +2.388542000E3,4.330806788E1 +2.388866000E3,4.587852948E1 +2.389138000E3,5.068663336E1 +2.389420000E3,5.151872270E1 +2.389764000E3,4.501157372E1 +2.390012000E3,4.508008781E1 +2.390288000E3,4.471818734E1 +2.390546000E3,4.453717168E1 +2.390828000E3,3.435610332E1 +2.391113000E3,3.644941891E1 +2.391398000E3,3.741409627E1 +2.391658000E3,4.311052254E1 +2.391963000E3,3.924877335E1 +2.392296000E3,3.956869731E1 +2.392537000E3,3.230149795E1 +2.392786000E3,2.941450360E1 +2.393103000E3,3.366208400E1 +2.393349000E3,2.633153711E1 +2.393653000E3,2.492589605E1 +2.393892000E3,3.518582310E1 +2.394201000E3,3.668564238E1 +2.394454000E3,3.528359554E1 +2.394744000E3,3.673717548E1 +2.395034000E3,2.851979476E1 +2.395378000E3,2.558396774E1 +2.395660000E3,3.919896752E1 +2.395930000E3,3.339597104E1 +2.396187000E3,3.351358057E1 +2.396431000E3,3.743420456E1 +2.396691000E3,4.220523227E1 +2.396991000E3,3.500233403E1 +2.397251000E3,3.475187142E1 +2.397513000E3,3.604068947E1 +2.397821000E3,4.628512725E1 +2.398126000E3,4.463943287E1 +2.398428000E3,4.311458163E1 +2.398781000E3,4.375329409E1 +2.399076000E3,3.749705009E1 +2.399316000E3,4.116349149E1 +2.399615000E3,4.694603167E1 +2.399852000E3,5.327851923E1 +2.400143000E3,5.028800274E1 +2.400380000E3,5.055607260E1 +2.400618000E3,4.184216649E1 +2.400901000E3,4.280576865E1 +2.401144000E3,4.285187037E1 +2.401437000E3,5.414729311E1 +2.401684000E3,5.760726428E1 +2.402102000E3,5.135939721E1 +2.402349000E3,5.519633184E1 +2.402608000E3,5.937895156E1 +2.402853000E3,5.722678447E1 +2.403146000E3,5.316891996E1 +2.403388000E3,5.231876976E1 +2.403684000E3,4.275047946E1 +2.403921000E3,4.497010821E1 +2.404216000E3,5.935375427E1 +2.404454000E3,5.736369919E1 +2.404707000E3,5.877823139E1 +2.404971000E3,6.138635894E1 +2.405219000E3,5.726046839E1 +2.405473000E3,5.213953550E1 +2.405771000E3,4.831408459E1 +2.406024000E3,5.195614478E1 +2.406276000E3,4.885485021E1 +2.406567000E3,4.806131720E1 +2.406866000E3,3.817379603E1 +2.407129000E3,3.496803230E1 +2.407401000E3,4.679161915E1 +2.407625000E3,4.456362030E1 +2.407878000E3,4.499112684E1 +2.408171000E3,4.695848411E1 +2.408491000E3,4.136053284E1 +2.408771000E3,3.435960184E1 +2.409033000E3,2.907775515E1 +2.409287000E3,3.179102298E1 +2.409536000E3,2.535492331E1 +2.409797000E3,2.893863695E1 +2.410015000E3,3.195695462E1 +2.410232000E3,2.883661354E1 +2.410481000E3,4.380812340E1 +2.410735000E3,5.435187737E1 +2.411017000E3,4.390478627E1 +2.411330000E3,4.136550501E1 +2.411572000E3,6.231552653E1 +2.411823000E3,4.988484474E1 +2.412072000E3,4.569499772E1 +2.412339000E3,5.207639469E1 +2.412605000E3,5.314724412E1 +2.412842000E3,5.014855129E1 +2.413111000E3,4.925815950E1 +2.413332000E3,5.545199009E1 +2.413608000E3,4.910878211E1 +2.413873000E3,5.481296501E1 +2.414229000E3,4.620355557E1 +2.414532000E3,4.757632406E1 +2.414792000E3,4.414835702E1 +2.415033000E3,4.178334533E1 +2.415296000E3,3.571558610E1 +2.415577000E3,3.622280285E1 +2.415839000E3,4.187963398E1 +2.416103000E3,4.120303067E1 +2.416426000E3,5.043875316E1 +2.416696000E3,4.738536839E1 +2.417006000E3,4.790698669E1 +2.417250000E3,4.717323409E1 +2.417613000E3,4.889624394E1 +2.417923000E3,4.615999302E1 +2.418209000E3,4.554232436E1 +2.418487000E3,4.963147342E1 +2.418748000E3,4.540077281E1 +2.419058000E3,4.402622058E1 +2.419355000E3,3.991430025E1 +2.419631000E3,5.699106589E1 +2.419880000E3,4.542610605E1 +2.420140000E3,5.871400849E1 +2.420387000E3,5.593691155E1 +2.420634000E3,5.642590944E1 +2.420987000E3,4.942882304E1 +2.421235000E3,5.122637091E1 +2.421504000E3,5.506353313E1 +2.421808000E3,4.974630362E1 +2.422098000E3,4.922446567E1 +2.422401000E3,4.711891494E1 +2.422653000E3,4.935851062E1 +2.422946000E3,5.223840607E1 +2.423180000E3,5.181747333E1 +2.423433000E3,5.106095739E1 +2.423699000E3,4.283067128E1 +2.424023000E3,4.620110870E1 +2.424283000E3,4.813646184E1 +2.424556000E3,4.673905704E1 +2.424833000E3,5.139038068E1 +2.425085000E3,4.187355918E1 +2.425330000E3,4.200690239E1 +2.425641000E3,4.094986905E1 +2.425891000E3,3.869951887E1 +2.426156000E3,4.295178440E1 +2.426411000E3,4.445235603E1 +2.426673000E3,4.180705342E1 +2.426915000E3,4.159918394E1 +2.427275000E3,5.193727105E1 +2.427528000E3,4.985744468E1 +2.427773000E3,5.143594155E1 +2.428021000E3,5.687627643E1 +2.428258000E3,4.984177159E1 +2.428554000E3,4.104898524E1 +2.428794000E3,3.740238657E1 +2.429102000E3,4.424577609E1 +2.429345000E3,5.022623751E1 +2.429627000E3,5.346928374E1 +2.429864000E3,4.448852620E1 +2.430156000E3,3.611387858E1 +2.430475000E3,3.592739777E1 +2.430726000E3,3.269867125E1 +2.431039000E3,4.089980433E1 +2.431331000E3,3.752068977E1 +2.431567000E3,3.972155082E1 +2.431870000E3,4.098289208E1 +2.432107000E3,4.068605974E1 +2.432406000E3,3.978950334E1 +2.432643000E3,3.435438837E1 +2.432933000E3,3.806187937E1 +2.433169000E3,3.613809925E1 +2.433407000E3,5.573542624E1 +2.433734000E3,4.812688919E1 +2.434035000E3,5.332611421E1 +2.434315000E3,5.453475878E1 +2.434557000E3,5.156731049E1 +2.434849000E3,4.452924889E1 +2.435086000E3,4.091217005E1 +2.435380000E3,3.495963916E1 +2.435633000E3,3.994418328E1 +2.435904000E3,5.345258512E1 +2.436200000E3,4.573029424E1 +2.436434000E3,4.666848361E1 +2.436802000E3,4.148612785E1 +2.437044000E3,3.785277445E1 +2.437301000E3,3.823545546E1 +2.437549000E3,3.883632471E1 +2.437839000E3,4.756553033E1 +2.438077000E3,4.282797221E1 +2.438369000E3,5.291874167E1 +2.438606000E3,5.394671897E1 +2.438862000E3,5.490926284E1 +2.439159000E3,5.465277565E1 +2.439395000E3,5.245345229E1 +2.439637000E3,4.823915254E1 +2.440022000E3,5.658050668E1 +2.440281000E3,5.255468157E1 +2.440546000E3,4.365897331E1 +2.440828000E3,4.187636724E1 +2.441125000E3,4.916172461E1 +2.441365000E3,5.038635874E1 +2.441645000E3,5.238005511E1 +2.441868000E3,4.979548238E1 +2.442114000E3,5.164563876E1 +2.442410000E3,4.795862612E1 +2.442694000E3,4.406311297E1 +2.442980000E3,4.461066687E1 +2.443265000E3,3.990213588E1 +2.443525000E3,4.270339676E1 +2.443815000E3,4.671533321E1 +2.444064000E3,4.922681237E1 +2.444311000E3,5.115751882E1 +2.444605000E3,4.659279655E1 +2.444851000E3,4.805254743E1 +2.445152000E3,4.646584218E1 +2.445447000E3,3.924248597E1 +2.445698000E3,3.657018775E1 +2.445976000E3,3.978585816E1 +2.446317000E3,5.134473527E1 +2.446569000E3,4.872028256E1 +2.446851000E3,4.793203365E1 +2.447088000E3,4.917648823E1 +2.447345000E3,4.514648035E1 +2.447599000E3,4.827609085E1 +2.447864000E3,5.009329877E1 +2.448138000E3,4.858127151E1 +2.448430000E3,4.885678900E1 +2.448726000E3,4.038666943E1 +2.448956000E3,3.788824065E1 +2.449214000E3,4.872306097E1 +2.449516000E3,5.112419798E1 +2.449767000E3,4.394357347E1 +2.450028000E3,5.187358067E1 +2.450298000E3,4.764520743E1 +2.450575000E3,5.323515688E1 +2.450844000E3,4.730661272E1 +2.451150000E3,5.022143967E1 +2.451400000E3,4.244080150E1 +2.451697000E3,4.540622562E1 +2.452002000E3,4.987171470E1 +2.452273000E3,4.928771096E1 +2.452519000E3,4.415614577E1 +2.452847000E3,4.529816891E1 +2.453138000E3,3.130480949E1 +2.453407000E3,3.727195618E1 +2.453707000E3,4.218798188E1 +2.453975000E3,3.196426842E1 +2.454240000E3,2.986758668E1 +2.454534000E3,4.365366219E1 +2.454795000E3,4.363233606E1 +2.455054000E3,4.576258560E1 +2.455297000E3,4.600510844E1 +2.455546000E3,5.143992334E1 +2.455816000E3,4.451792491E1 +2.456172000E3,3.834658463E1 +2.456438000E3,4.961865906E1 +2.456716000E3,4.301133302E1 +2.457025000E3,5.185950840E1 +2.457284000E3,4.578127088E1 +2.457582000E3,4.860789001E1 +2.457857000E3,4.548301241E1 +2.458087000E3,5.726595471E1 +2.458343000E3,4.581143143E1 +2.458590000E3,4.593076535E1 +2.458898000E3,4.646845677E1 +2.459143000E3,4.385664195E1 +2.459499000E3,3.921291428E1 +2.459756000E3,4.336490005E1 +2.460079000E3,5.059416731E1 +2.460323000E3,5.383728406E1 +2.460609000E3,4.336002656E1 +2.460894000E3,3.810358455E1 +2.461148000E3,4.341384577E1 +2.461406000E3,4.240002850E1 +2.461668000E3,4.220171306E1 +2.461957000E3,4.165441002E1 +2.462218000E3,4.110791112E1 +2.462543000E3,3.718059239E1 +2.462873000E3,4.490190793E1 +2.463162000E3,4.449127269E1 +2.463461000E3,5.110192526E1 +2.463709000E3,4.670759724E1 +2.464024000E3,4.554197086E1 +2.464345000E3,4.295638115E1 +2.464598000E3,4.260186095E1 +2.464844000E3,3.838281454E1 +2.465094000E3,4.864552318E1 +2.465348000E3,4.722694913E1 +2.465597000E3,5.723123112E1 +2.465970000E3,5.678247819E1 +2.466226000E3,5.304857482E1 +2.466490000E3,5.799491543E1 +2.466745000E3,5.566332539E1 +2.467000000E3,5.532803606E1 +2.467301000E3,5.480406224E1 +2.467518000E3,5.281426808E1 +2.467773000E3,5.319750336E1 +2.468030000E3,4.504180471E1 +2.468309000E3,4.011552860E1 +2.468536000E3,3.286668959E1 +2.468782000E3,5.187437917E1 +2.469159000E3,5.342027818E1 +2.469405000E3,4.655027014E1 +2.469685000E3,4.875434900E1 +2.469968000E3,4.400777727E1 +2.470228000E3,4.944370484E1 +2.470524000E3,4.819898526E1 +2.470826000E3,4.906267157E1 +2.471101000E3,4.559683511E1 +2.471407000E3,5.066052597E1 +2.471662000E3,5.052511938E1 +2.471933000E3,4.854316053E1 +2.472243000E3,4.720397127E1 +2.472513000E3,4.539713693E1 +2.472765000E3,4.504800702E1 +2.473077000E3,4.756996091E1 +2.473381000E3,4.502772911E1 +2.473668000E3,4.844141365E1 +2.473909000E3,4.718772198E1 +2.474176000E3,5.036014826E1 +2.474415000E3,4.734822430E1 +2.474659000E3,4.506554867E1 +2.474941000E3,4.590585801E1 +2.475227000E3,4.808550728E1 +2.475549000E3,4.744751902E1 +2.475816000E3,5.139502060E1 +2.476110000E3,4.565542501E1 +2.476367000E3,4.502651441E1 +2.476614000E3,4.529198411E1 +2.476876000E3,4.841642572E1 +2.477138000E3,4.904966766E1 +2.477430000E3,5.061185879E1 +2.477703000E3,4.805167318E1 +2.477973000E3,4.840268940E1 +2.478233000E3,4.609690512E1 +2.478491000E3,5.080806253E1 +2.478854000E3,4.929079330E1 +2.479112000E3,4.887431247E1 +2.479382000E3,4.582116343E1 +2.479677000E3,4.614295426E1 +2.479939000E3,5.004731017E1 +2.480247000E3,5.118895049E1 +2.480496000E3,4.750144805E1 +2.480785000E3,4.691637905E1 +2.481084000E3,4.575243018E1 +2.481328000E3,4.498034363E1 +2.481622000E3,5.049144453E1 +2.481951000E3,4.811617152E1 +2.482214000E3,4.600387593E1 +2.482494000E3,5.163944801E1 +2.482753000E3,4.933311419E1 +2.482991000E3,4.946534766E1 +2.483244000E3,4.580757204E1 +2.483487000E3,4.797573247E1 +2.483734000E3,4.560844100E1 +2.483990000E3,5.039329574E1 +2.484313000E3,5.052905321E1 +2.484577000E3,5.131938081E1 +2.484833000E3,4.901245069E1 +2.485113000E3,5.233648083E1 +2.485461000E3,5.215489758E1 +2.485749000E3,5.451606287E1 +2.486018000E3,5.043201098E1 +2.486334000E3,5.091085093E1 +2.486650000E3,4.972266732E1 +2.486916000E3,4.846864702E1 +2.487167000E3,4.843730663E1 +2.487412000E3,5.285205631E1 +2.487677000E3,5.695937588E1 +2.487965000E3,5.067248408E1 +2.488216000E3,4.955689254E1 +2.488580000E3,4.789771891E1 +2.488828000E3,4.640186686E1 +2.489150000E3,4.956289338E1 +2.489428000E3,4.916705799E1 +2.489718000E3,4.250319869E1 +2.489959000E3,4.211788948E1 +2.490259000E3,4.711467977E1 +2.490508000E3,5.336087879E1 +2.490805000E3,5.163346506E1 +2.491066000E3,5.303328317E1 +2.491377000E3,5.018594076E1 +2.491684000E3,4.569780009E1 +2.492029000E3,4.677168871E1 +2.492273000E3,4.586755987E1 +2.492522000E3,5.020047651E1 +2.492768000E3,4.585538278E1 +2.493006000E3,5.027464230E1 +2.493315000E3,4.719632652E1 +2.493608000E3,4.892998103E1 +2.493874000E3,4.659859577E1 +2.494131000E3,4.485377967E1 +2.494387000E3,4.661063763E1 +2.494635000E3,4.873112034E1 +2.494904000E3,5.011233058E1 +2.495259000E3,4.996207620E1 +2.495523000E3,5.026371938E1 +2.495789000E3,4.897334151E1 +2.496086000E3,4.919412247E1 +2.496330000E3,4.448238049E1 +2.496598000E3,5.779881243E1 +2.496845000E3,5.068443192E1 +2.497079000E3,5.452206946E1 +2.497328000E3,6.091811093E1 +2.497574000E3,5.545025588E1 +2.497819000E3,5.118451852E1 +2.498124000E3,5.647063434E1 +2.498436000E3,5.942897676E1 +2.498681000E3,6.063927987E1 +2.498932000E3,5.256584857E1 +2.499203000E3,5.942844343E1 +2.499465000E3,5.268198933E1 +2.499726000E3,5.561310022E1 +2.499989000E3,5.551348586E1 +2.500270000E3,5.728700965E1 +2.500550000E3,5.848024533E1 +2.500856000E3,5.545551244E1 +2.501156000E3,7.074712648E1 +2.501405000E3,6.649397556E1 +2.501727000E3,6.577106108E1 +2.501964000E3,5.791155905E1 +2.502223000E3,6.571272960E1 +2.502476000E3,5.223691777E1 +2.502731000E3,5.099379006E1 +2.502989000E3,4.996024440E1 +2.503265000E3,4.587573023E1 +2.503515000E3,6.660646739E1 +2.503792000E3,5.426812996E1 +2.504090000E3,4.221263073E1 +2.504348000E3,3.961359220E1 +2.504607000E3,3.317448387E1 +2.504957000E3,2.765634596E1 +2.505202000E3,5.260508289E1 +2.505444000E3,4.970766119E1 +2.505723000E3,5.961421356E1 +2.506010000E3,5.761735716E1 +2.506316000E3,4.386011183E1 +2.506629000E3,3.297646158E1 +2.506928000E3,3.461351567E1 +2.507171000E3,3.422494413E1 +2.507415000E3,3.898815557E1 +2.507661000E3,3.916714623E1 +2.507958000E3,4.409544564E1 +2.508199000E3,4.040812578E1 +2.508495000E3,4.100804729E1 +2.508767000E3,4.155083379E1 +2.509073000E3,4.256659126E1 +2.509346000E3,4.665111645E1 +2.509615000E3,4.785704834E1 +2.509926000E3,4.957995318E1 +2.510246000E3,5.281308228E1 +2.510533000E3,5.716195403E1 +2.510847000E3,5.384222007E1 +2.511087000E3,4.682850643E1 +2.511483000E3,5.585229854E1 +2.511769000E3,5.797880255E1 +2.512061000E3,5.008051045E1 +2.512305000E3,4.616221083E1 +2.512545000E3,5.837834308E1 +2.512782000E3,4.588894556E1 +2.513082000E3,5.827978204E1 +2.513321000E3,5.321307958E1 +2.513625000E3,5.419914666E1 +2.513860000E3,4.249936315E1 +2.514160000E3,5.093700871E1 +2.514505000E3,4.733309734E1 +2.514807000E3,5.739188753E1 +2.515049000E3,5.684870925E1 +2.515326000E3,5.429714525E1 +2.515551000E3,5.304528611E1 +2.515847000E3,6.048302750E1 +2.516097000E3,5.298092655E1 +2.516397000E3,5.664346713E1 +2.516634000E3,5.062362510E1 +2.516910000E3,5.059011404E1 +2.517165000E3,5.074931344E1 +2.517424000E3,5.193937267E1 +2.517672000E3,4.773080825E1 +2.517933000E3,4.886471101E1 +2.518191000E3,4.258084657E1 +2.518440000E3,4.144243799E1 +2.518697000E3,3.266068365E1 +2.518962000E3,3.662092465E1 +2.519211000E3,4.002326553E1 +2.519469000E3,5.193824268E1 +2.519821000E3,5.548381163E1 +2.520087000E3,5.245445808E1 +2.520336000E3,4.447536752E1 +2.520718000E3,5.931091731E1 +2.521010000E3,5.514928156E1 +2.521305000E3,5.194242569E1 +2.521541000E3,5.632439964E1 +2.521781000E3,4.768714929E1 +2.522074000E3,3.967116686E1 +2.522306000E3,3.457523914E1 +2.522554000E3,3.414939493E1 +2.522808000E3,3.034285017E1 +2.523103000E3,3.725639399E1 +2.523347000E3,5.824523011E1 +2.523645000E3,5.697741808E1 +2.524002000E3,5.995361389E1 +2.524244000E3,5.516819042E1 +2.524491000E3,5.520201782E1 +2.524765000E3,4.576677797E1 +2.524988000E3,5.785527848E1 +2.525299000E3,5.093237528E1 +2.525544000E3,4.090627494E1 +2.525822000E3,3.111750175E1 +2.526056000E3,2.764971736E1 +2.526311000E3,2.852524033E1 +2.526617000E3,3.508264660E1 +2.526905000E3,5.067917717E1 +2.527241000E3,4.646824007E1 +2.527487000E3,3.686495987E1 +2.527738000E3,3.822220480E1 +2.527988000E3,3.764348220E1 +2.528232000E3,4.278450517E1 +2.528563000E3,4.881983602E1 +2.528870000E3,4.048435148E1 +2.529125000E3,4.047282835E1 +2.529398000E3,4.602715630E1 +2.529632000E3,4.358719476E1 +2.529925000E3,4.185499728E1 +2.530224000E3,4.428160693E1 +2.530451000E3,5.370094630E1 +2.530771000E3,4.662369716E1 +2.531057000E3,4.486368653E1 +2.531322000E3,3.985753269E1 +2.531579000E3,3.868983993E1 +2.531842000E3,4.397673982E1 +2.532129000E3,4.465178920E1 +2.532379000E3,4.071629694E1 +2.532681000E3,3.700154265E1 +2.532925000E3,3.709745900E1 +2.533169000E3,3.856350220E1 +2.533454000E3,3.780017804E1 +2.533739000E3,4.079153270E1 +2.534053000E3,3.467337947E1 +2.534304000E3,3.872357849E1 +2.534571000E3,4.188092371E1 +2.534878000E3,4.226520735E1 +2.535180000E3,4.433351029E1 +2.535433000E3,4.196124368E1 +2.535679000E3,4.159710638E1 +2.535934000E3,4.131920574E1 +2.536230000E3,4.013333591E1 +2.536496000E3,3.861252617E1 +2.536812000E3,3.205810696E1 +2.537071000E3,3.900017908E1 +2.537321000E3,3.720890888E1 +2.537589000E3,3.571752088E1 +2.537899000E3,3.466875388E1 +2.538158000E3,3.490809444E1 +2.538414000E3,2.846246396E1 +2.538721000E3,3.471466025E1 +2.539000000E3,3.262267006E1 +2.539250000E3,2.900340615E1 +2.539526000E3,2.962734770E1 +2.539843000E3,4.051335289E1 +2.540219000E3,3.732414883E1 +2.540478000E3,3.212776280E1 +2.540731000E3,3.980002135E1 +2.541002000E3,4.402529692E1 +2.541305000E3,3.531142487E1 +2.541570000E3,4.157255463E1 +2.541892000E3,4.121686373E1 +2.542138000E3,3.512055425E1 +2.542435000E3,3.058422839E1 +2.542704000E3,3.860796470E1 +2.542951000E3,4.158955283E1 +2.543254000E3,4.126835549E1 +2.543598000E3,4.557459954E1 +2.543842000E3,4.195620726E1 +2.544088000E3,4.759905541E1 +2.544347000E3,4.089593512E1 +2.544592000E3,4.224934090E1 +2.544840000E3,3.548720999E1 +2.545141000E3,4.189266277E1 +2.545422000E3,4.058854606E1 +2.545652000E3,3.761551365E1 +2.545897000E3,3.643024250E1 +2.546173000E3,3.544845567E1 +2.546439000E3,3.816851754E1 +2.546779000E3,3.801212128E1 +2.547110000E3,3.288266257E1 +2.547379000E3,4.063952307E1 +2.547641000E3,4.765684387E1 +2.547893000E3,4.402640436E1 +2.548143000E3,4.172886183E1 +2.548441000E3,3.808222191E1 +2.548685000E3,3.637035664E1 +2.548962000E3,3.879815953E1 +2.549230000E3,5.433785228E1 +2.549540000E3,5.428002325E1 +2.549852000E3,5.430864003E1 +2.550121000E3,5.376325395E1 +2.550389000E3,5.250586376E1 +2.550641000E3,5.329413218E1 +2.550946000E3,3.817927317E1 +2.551218000E3,3.779289824E1 +2.551493000E3,4.904361964E1 +2.551759000E3,5.500168111E1 +2.552006000E3,4.745774118E1 +2.552261000E3,5.304049624E1 +2.552515000E3,4.933664563E1 +2.552779000E3,3.482983031E1 +2.553043000E3,3.914561037E1 +2.553378000E3,3.318943686E1 +2.553659000E3,2.674748735E1 +2.553917000E3,2.500565902E1 +2.554234000E3,3.331261434E1 +2.554489000E3,3.380079275E1 +2.554753000E3,3.632095841E1 +2.554996000E3,3.606888467E1 +2.555239000E3,4.759559903E1 +2.555541000E3,5.588542149E1 +2.555837000E3,5.768171500E1 +2.556076000E3,5.837962370E1 +2.556358000E3,5.761486260E1 +2.556647000E3,5.408185929E1 +2.556914000E3,5.624815374E1 +2.557248000E3,4.727853091E1 +2.557554000E3,3.999550071E1 +2.557822000E3,4.090986684E1 +2.558062000E3,3.411171601E1 +2.558302000E3,3.042998918E1 +2.558550000E3,3.392526215E1 +2.558807000E3,3.801243567E1 +2.559082000E3,4.390440101E1 +2.559357000E3,4.215163378E1 +2.559616000E3,4.616573562E1 +2.559972000E3,4.170066459E1 +2.560245000E3,2.972551911E1 +2.560517000E3,3.987643023E1 +2.560765000E3,4.046237199E1 +2.561011000E3,4.268708813E1 +2.561258000E3,4.450541644E1 +2.561531000E3,4.611922799E1 +2.561775000E3,4.492719317E1 +2.562027000E3,4.345851098E1 +2.562302000E3,5.022295857E1 +2.562533000E3,4.986016935E1 +2.562786000E3,3.932672790E1 +2.563211000E3,3.777119812E1 +2.563479000E3,4.577537823E1 +2.563731000E3,5.443473776E1 +2.563977000E3,5.947837126E1 +2.564252000E3,5.014881480E1 +2.564539000E3,4.884415531E1 +2.564781000E3,4.451698294E1 +2.565088000E3,3.693106642E1 +2.565361000E3,3.096881298E1 +2.565624000E3,2.635486448E1 +2.565885000E3,2.734213385E1 +2.566246000E3,3.979362654E1 +2.566493000E3,3.382738554E1 +2.566797000E3,3.469438245E1 +2.567097000E3,4.097528595E1 +2.567346000E3,4.285297734E1 +2.567644000E3,4.930003444E1 +2.567891000E3,4.540271843E1 +2.568170000E3,3.109775861E1 +2.568407000E3,2.738661195E1 +2.568701000E3,3.024785153E1 +2.568952000E3,3.235217301E1 +2.569220000E3,3.196941264E1 +2.569567000E3,4.299833718E1 +2.569862000E3,4.496000509E1 +2.570178000E3,4.562225815E1 +2.570442000E3,4.437451260E1 +2.570707000E3,3.949227756E1 +2.570950000E3,2.951847370E1 +2.571202000E3,3.800151296E1 +2.571472000E3,4.650517590E1 +2.571732000E3,3.967561664E1 +2.571975000E3,3.149456620E1 +2.572246000E3,5.234083710E1 +2.572527000E3,4.544839619E1 +2.572859000E3,4.436174777E1 +2.573168000E3,4.369290756E1 +2.573429000E3,4.420543128E1 +2.573728000E3,4.389854646E1 +2.573968000E3,4.580346210E1 +2.574268000E3,4.881141748E1 +2.574509000E3,4.708023256E1 +2.574802000E3,3.388696242E1 +2.575045000E3,2.922489212E1 +2.575339000E3,3.941924125E1 +2.575597000E3,4.733040375E1 +2.575906000E3,4.790376430E1 +2.576245000E3,4.328559785E1 +2.576517000E3,4.720947277E1 +2.576791000E3,4.076260480E1 +2.577092000E3,3.249905806E1 +2.577324000E3,3.886850876E1 +2.577566000E3,3.577483806E1 +2.577814000E3,4.105002685E1 +2.578080000E3,3.881208350E1 +2.578375000E3,5.720708534E1 +2.578624000E3,4.933084675E1 +2.578932000E3,5.989261963E1 +2.579254000E3,5.193127116E1 +2.579506000E3,4.843920497E1 +2.579747000E3,4.570821188E1 +2.580001000E3,4.446748829E1 +2.580244000E3,4.006228376E1 +2.580497000E3,2.933332862E1 +2.580745000E3,4.525678604E1 +2.580989000E3,4.717489692E1 +2.581288000E3,5.239736286E1 +2.581587000E3,5.268105849E1 +2.581851000E3,4.960616241E1 +2.582112000E3,4.637217789E1 +2.582361000E3,4.676379781E1 +2.582583000E3,4.083594902E1 +2.582903000E3,2.696140701E1 +2.583176000E3,2.668057590E1 +2.583429000E3,2.900886287E1 +2.583692000E3,2.732690452E1 +2.583951000E3,3.475308428E1 +2.584205000E3,4.782860484E1 +2.584480000E3,4.928978168E1 +2.584742000E3,3.697304160E1 +2.585017000E3,3.390321432E1 +2.585248000E3,4.818778278E1 +2.585552000E3,5.175969441E1 +2.585851000E3,4.752724055E1 +2.586108000E3,5.047732228E1 +2.586408000E3,5.003267867E1 +2.586651000E3,4.995698879E1 +2.586934000E3,4.985539117E1 +2.587202000E3,4.558719065E1 +2.587455000E3,4.973387236E1 +2.587702000E3,5.190737686E1 +2.587964000E3,4.955516560E1 +2.588211000E3,5.039526507E1 +2.588461000E3,3.897042435E1 +2.588748000E3,2.919124678E1 +2.589063000E3,3.061867322E1 +2.589398000E3,4.010104895E1 +2.589690000E3,3.640442215E1 +2.589998000E3,4.479952304E1 +2.590261000E3,4.757967128E1 +2.590558000E3,4.812333533E1 +2.590802000E3,4.603482331E1 +2.591083000E3,2.960043464E1 +2.591326000E3,3.684354753E1 +2.591591000E3,4.359182452E1 +2.591849000E3,4.788602237E1 +2.592228000E3,4.468031543E1 +2.592527000E3,3.894688899E1 +2.592778000E3,2.800490026E1 +2.593035000E3,4.310888325E1 +2.593333000E3,4.628339380E1 +2.593602000E3,4.440124594E1 +2.593883000E3,4.123163794E1 +2.594160000E3,3.127645239E1 +2.594429000E3,3.071812965E1 +2.594749000E3,4.618618296E1 +2.595070000E3,5.248181749E1 +2.595312000E3,4.786265879E1 +2.595668000E3,3.990233287E1 +2.595973000E3,4.173583037E1 +2.596256000E3,3.709278400E1 +2.596497000E3,3.229385861E1 +2.596813000E3,4.380573021E1 +2.597084000E3,4.783628282E1 +2.597325000E3,5.024593568E1 +2.597578000E3,5.102379549E1 +2.597828000E3,4.760481411E1 +2.598089000E3,3.822780835E1 +2.598387000E3,3.417342767E1 +2.598736000E3,2.863579065E1 +2.598981000E3,2.886228233E1 +2.599228000E3,2.855965247E1 +2.599493000E3,3.083396855E1 +2.599764000E3,3.581659374E1 +2.600032000E3,4.317647632E1 +2.600330000E3,4.853625621E1 +2.600623000E3,5.102467342E1 +2.600867000E3,4.877836926E1 +2.601112000E3,4.705612686E1 +2.601365000E3,4.889085742E1 +2.601612000E3,4.654488136E1 +2.601956000E3,4.055024190E1 +2.602220000E3,3.990851266E1 +2.602547000E3,3.648352551E1 +2.602794000E3,5.324982942E1 +2.603078000E3,5.268965363E1 +2.603338000E3,4.851189142E1 +2.603637000E3,5.135006473E1 +2.603925000E3,4.939301404E1 +2.604238000E3,5.337101389E1 +2.604488000E3,5.022765286E1 +2.604734000E3,5.253186666E1 +2.605064000E3,4.127453431E1 +2.605321000E3,4.114070867E1 +2.605572000E3,4.042282231E1 +2.605820000E3,4.255774466E1 +2.606073000E3,4.746726668E1 +2.606319000E3,4.761848671E1 +2.606565000E3,4.983628061E1 +2.606849000E3,3.046517787E1 +2.607082000E3,3.832211131E1 +2.607339000E3,4.741131966E1 +2.607609000E3,4.453335589E1 +2.607874000E3,3.545592153E1 +2.608197000E3,4.672891376E1 +2.608451000E3,4.755881287E1 +2.608706000E3,4.827652641E1 +2.608952000E3,4.727153141E1 +2.609226000E3,4.731450942E1 +2.609537000E3,3.981385402E1 +2.609784000E3,3.194698732E1 +2.610041000E3,3.314164027E1 +2.610283000E3,2.819786732E1 +2.610546000E3,2.664547785E1 +2.610857000E3,2.913544778E1 +2.611125000E3,3.961651759E1 +2.611432000E3,3.852777426E1 +2.611666000E3,3.205673146E1 +2.611951000E3,4.233182010E1 +2.612229000E3,3.378509898E1 +2.612454000E3,4.071755552E1 +2.612730000E3,5.018278065E1 +2.613050000E3,4.100034395E1 +2.613359000E3,3.892108016E1 +2.613628000E3,5.091321799E1 +2.613871000E3,4.336916838E1 +2.614108000E3,3.960788811E1 +2.614408000E3,3.948227358E1 +2.614722000E3,3.631863435E1 +2.614975000E3,4.057042340E1 +2.615256000E3,4.414132009E1 +2.615486000E3,4.180934435E1 +2.615750000E3,4.153999936E1 +2.615997000E3,3.521796466E1 +2.616260000E3,5.443854687E1 +2.616548000E3,5.408118563E1 +2.616842000E3,4.951275264E1 +2.617090000E3,5.182722031E1 +2.617344000E3,4.327522742E1 +2.617643000E3,5.375122422E1 +2.617975000E3,5.216635190E1 +2.618233000E3,4.126006713E1 +2.618497000E3,4.980260599E1 +2.618804000E3,4.655838197E1 +2.619044000E3,4.977945459E1 +2.619327000E3,4.875559075E1 +2.619562000E3,4.983226039E1 +2.619834000E3,4.741689273E1 +2.620075000E3,4.923498746E1 +2.620352000E3,4.923432072E1 +2.620664000E3,4.040876723E1 +2.620916000E3,3.889825840E1 +2.621142000E3,5.245081579E1 +2.621448000E3,4.684934794E1 +2.621687000E3,4.583906640E1 +2.621992000E3,4.366517623E1 +2.622230000E3,3.373873872E1 +2.622475000E3,3.701694694E1 +2.622750000E3,3.544967426E1 +2.623008000E3,3.363206222E1 +2.623285000E3,4.009589135E1 +2.623562000E3,4.408709562E1 +2.623825000E3,4.800133533E1 +2.624131000E3,4.855432282E1 +2.624414000E3,4.808187444E1 +2.624671000E3,5.252566194E1 +2.624932000E3,4.890333861E1 +2.625183000E3,4.370428781E1 +2.625430000E3,3.668118979E1 +2.625747000E3,4.353955331E1 +2.626003000E3,4.224026412E1 +2.626267000E3,4.311785789E1 +2.626514000E3,3.517806855E1 +2.626763000E3,3.981966751E1 +2.627025000E3,3.444602265E1 +2.627334000E3,3.341390757E1 +2.627660000E3,3.926570124E1 +2.627920000E3,4.341089288E1 +2.628216000E3,4.081134870E1 +2.628467000E3,3.912400300E1 +2.628730000E3,3.657553946E1 +2.629000000E3,3.072838888E1 +2.629284000E3,2.929703023E1 +2.629549000E3,3.378014550E1 +2.629844000E3,4.760306323E1 +2.630080000E3,4.024322042E1 +2.630373000E3,3.235913140E1 +2.630611000E3,3.920509877E1 +2.630919000E3,5.103841717E1 +2.631222000E3,5.813980805E1 +2.631514000E3,5.190256812E1 +2.631753000E3,4.653294376E1 +2.632054000E3,4.782140153E1 +2.632295000E3,4.977458693E1 +2.632592000E3,5.371197571E1 +2.632828000E3,5.056512655E1 +2.633140000E3,5.325824914E1 +2.633383000E3,4.973751947E1 +2.633632000E3,4.853342473E1 +2.633950000E3,3.905011010E1 +2.634254000E3,3.751700759E1 +2.634549000E3,5.292771607E1 +2.634786000E3,5.557450981E1 +2.635082000E3,4.974692283E1 +2.635319000E3,5.393938197E1 +2.635611000E3,4.675981835E1 +2.635848000E3,4.299614910E1 +2.636145000E3,3.756646750E1 +2.636395000E3,3.824353200E1 +2.636648000E3,3.045317917E1 +2.636942000E3,3.257931849E1 +2.637299000E3,3.010616025E1 +2.637599000E3,4.995329379E1 +2.637834000E3,4.824584689E1 +2.638071000E3,5.059212149E1 +2.638363000E3,5.330633429E1 +2.638612000E3,5.343612136E1 +2.638897000E3,4.755550111E1 +2.639122000E3,4.119881812E1 +2.639362000E3,3.902726568E1 +2.639659000E3,4.451944661E1 +2.639896000E3,4.587471035E1 +2.640164000E3,4.115502802E1 +2.640409000E3,4.505311495E1 +2.640656000E3,4.913968689E1 +2.640951000E3,5.110923180E1 +2.641208000E3,4.281604120E1 +2.641505000E3,4.825854961E1 +2.641748000E3,4.861588211E1 +2.642059000E3,4.450542116E1 +2.642304000E3,4.274821036E1 +2.642556000E3,3.503446158E1 +2.642862000E3,4.080900103E1 +2.643164000E3,4.152079562E1 +2.643527000E3,3.935881933E1 +2.643833000E3,3.760570593E1 +2.644082000E3,3.959144469E1 +2.644327000E3,4.007918652E1 +2.644573000E3,4.288120719E1 +2.644814000E3,4.793099478E1 +2.645114000E3,4.424069452E1 +2.645391000E3,4.078427844E1 +2.645635000E3,3.902795236E1 +2.645871000E3,4.393773718E1 +2.646111000E3,4.085627764E1 +2.646355000E3,4.393316509E1 +2.646690000E3,4.428892908E1 +2.646958000E3,4.601464396E1 +2.647235000E3,4.300358696E1 +2.647474000E3,4.083829680E1 +2.647758000E3,5.406220971E1 +2.648003000E3,4.253716581E1 +2.648273000E3,4.506680000E1 +2.648514000E3,3.500046728E1 +2.648758000E3,3.537281462E1 +2.649004000E3,5.013819891E1 +2.649251000E3,5.388943830E1 +2.649556000E3,5.656370208E1 +2.649891000E3,5.696480404E1 +2.650216000E3,4.675400561E1 +2.650515000E3,4.179549274E1 +2.650777000E3,4.536624285E1 +2.651084000E3,4.297370528E1 +2.651336000E3,4.376785410E1 +2.651635000E3,3.354560746E1 +2.651881000E3,2.537939319E1 +2.652180000E3,3.168783420E1 +2.652481000E3,4.898553010E1 +2.652737000E3,5.438993966E1 +2.652992000E3,4.963834041E1 +2.653252000E3,4.227369117E1 +2.653502000E3,4.301436765E1 +2.653812000E3,3.649724292E1 +2.654061000E3,4.086211966E1 +2.654320000E3,3.223281741E1 +2.654605000E3,2.807672508E1 +2.654836000E3,2.764825285E1 +2.655100000E3,4.598866982E1 +2.655350000E3,4.383741939E1 +2.655590000E3,4.883555528E1 +2.655837000E3,4.815765811E1 +2.656131000E3,5.047261312E1 +2.656369000E3,5.124829846E1 +2.656626000E3,3.956134092E1 +2.656925000E3,3.503286763E1 +2.657200000E3,3.224209198E1 +2.657447000E3,4.294806319E1 +2.657761000E3,4.898454413E1 +2.658011000E3,5.320780356E1 +2.658286000E3,5.345186604E1 +2.658542000E3,4.849291145E1 +2.658789000E3,5.098648363E1 +2.659034000E3,4.892931203E1 +2.659289000E3,4.580698225E1 +2.659530000E3,3.709695762E1 +2.659834000E3,3.457925551E1 +2.660081000E3,3.855219813E1 +2.660383000E3,3.845534481E1 +2.660628000E3,4.619372518E1 +2.660921000E3,4.848307744E1 +2.661167000E3,4.790880967E1 +2.661464000E3,4.667520128E1 +2.661710000E3,4.098851532E1 +2.662006000E3,4.035468673E1 +2.662245000E3,3.753010710E1 +2.662592000E3,4.792080660E1 +2.662862000E3,4.709835917E1 +2.663123000E3,3.501409506E1 +2.663374000E3,3.240664296E1 +2.663631000E3,4.326696615E1 +2.663874000E3,4.411177933E1 +2.664133000E3,3.936378145E1 +2.664382000E3,3.443614227E1 +2.664648000E3,3.761654306E1 +2.664944000E3,5.164457484E1 +2.665198000E3,2.810669920E1 +2.665512000E3,2.931307063E1 +2.665876000E3,3.108643425E1 +2.666131000E3,3.278101889E1 +2.666439000E3,4.277860150E1 +2.666693000E3,4.213131936E1 +2.667002000E3,3.935849781E1 +2.667259000E3,4.137879880E1 +2.667575000E3,3.790565018E1 +2.667827000E3,3.845274836E1 +2.668153000E3,3.676763670E1 +2.668452000E3,3.751975183E1 +2.668696000E3,3.224848897E1 +2.669023000E3,3.611134142E1 +2.669316000E3,4.467495655E1 +2.669607000E3,4.735906080E1 +2.669885000E3,5.159453510E1 +2.670167000E3,5.321308782E1 +2.670485000E3,5.282242631E1 +2.670747000E3,5.127719277E1 +2.670997000E3,4.902251972E1 +2.671243000E3,4.450532678E1 +2.671540000E3,3.864078148E1 +2.671788000E3,3.720620343E1 +2.672044000E3,4.496142790E1 +2.672357000E3,4.705640535E1 +2.672617000E3,3.890316941E1 +2.672864000E3,4.027639889E1 +2.673159000E3,4.202335245E1 +2.673421000E3,4.285452583E1 +2.673720000E3,3.626679930E1 +2.673964000E3,4.670395357E1 +2.674210000E3,4.915586670E1 +2.674514000E3,5.353785994E1 +2.674811000E3,5.414016767E1 +2.675048000E3,5.591079353E1 +2.675364000E3,3.844031623E1 +2.675661000E3,3.124520008E1 +2.675946000E3,3.566755596E1 +2.676189000E3,3.490423263E1 +2.676498000E3,5.070292882E1 +2.676799000E3,5.356134163E1 +2.677047000E3,5.161634227E1 +2.677305000E3,5.185439004E1 +2.677581000E3,5.315585532E1 +2.677832000E3,4.418578879E1 +2.678087000E3,3.972693415E1 +2.678335000E3,4.338465258E1 +2.678650000E3,5.168404535E1 +2.678934000E3,4.984483773E1 +2.679249000E3,4.977401184E1 +2.679507000E3,5.044345616E1 +2.679823000E3,4.232585634E1 +2.680128000E3,3.026551109E1 +2.680400000E3,3.009656886E1 +2.680660000E3,4.894119824E1 +2.680913000E3,4.712312643E1 +2.681208000E3,4.239602863E1 +2.681477000E3,4.875338950E1 +2.681768000E3,4.887945421E1 +2.682128000E3,4.379352407E1 +2.682394000E3,4.073494394E1 +2.682637000E3,3.685872977E1 +2.682895000E3,2.883047793E1 +2.683163000E3,3.769147996E1 +2.683455000E3,3.713975885E1 +2.683749000E3,4.855681627E1 +2.683994000E3,4.936430656E1 +2.684290000E3,5.303947120E1 +2.684540000E3,5.031092673E1 +2.684833000E3,4.783130186E1 +2.685073000E3,4.898734587E1 +2.685348000E3,4.686166956E1 +2.685598000E3,4.244245178E1 +2.685917000E3,3.872119900E1 +2.686161000E3,4.891396583E1 +2.686434000E3,4.491629365E1 +2.686687000E3,3.588391777E1 +2.686952000E3,3.156965948E1 +2.687206000E3,3.184725563E1 +2.687480000E3,3.153561496E1 +2.687733000E3,3.669659228E1 +2.688049000E3,3.507922771E1 +2.688340000E3,3.251056517E1 +2.688645000E3,4.079174670E1 +2.688915000E3,4.837277005E1 +2.689163000E3,4.669136560E1 +2.689426000E3,3.659115086E1 +2.689751000E3,4.814125321E1 +2.689994000E3,4.721335081E1 +2.690235000E3,5.119773767E1 +2.690471000E3,4.584232122E1 +2.690738000E3,4.687969307E1 +2.691006000E3,4.116197132E1 +2.691312000E3,2.850019915E1 +2.691659000E3,3.175399572E1 +2.691948000E3,3.215115185E1 +2.692197000E3,2.655209633E1 +2.692466000E3,3.136629444E1 +2.692727000E3,2.928762690E1 +2.692976000E3,2.688909217E1 +2.693281000E3,3.350197248E1 +2.693518000E3,3.760267236E1 +2.693776000E3,3.194141055E1 +2.694032000E3,3.113878807E1 +2.694299000E3,2.830606211E1 +2.694602000E3,2.632227285E1 +2.694941000E3,2.736240000E1 +2.695184000E3,3.956118458E1 +2.695488000E3,4.069974415E1 +2.695732000E3,4.498590768E1 +2.696030000E3,3.370199172E1 +2.696300000E3,3.284857688E1 +2.696535000E3,2.919082343E1 +2.696815000E3,3.146626789E1 +2.697056000E3,2.968971947E1 +2.697354000E3,4.116455896E1 +2.697640000E3,5.055341773E1 +2.697888000E3,5.163434474E1 +2.698155000E3,4.792936353E1 +2.698456000E3,4.111753823E1 +2.698732000E3,4.594070701E1 +2.699031000E3,3.204472070E1 +2.699273000E3,2.836668859E1 +2.699578000E3,2.624009297E1 +2.699855000E3,2.719538340E1 +2.700110000E3,2.868563476E1 +2.700399000E3,2.757039916E1 +2.700662000E3,2.546630310E1 +2.700960000E3,2.981844134E1 +2.701310000E3,3.063471239E1 +2.701629000E3,4.014173680E1 +2.701894000E3,3.281157953E1 +2.702206000E3,4.268438101E1 +2.702448000E3,4.272045970E1 +2.702710000E3,4.782744516E1 +2.702984000E3,4.067538265E1 +2.703255000E3,3.821763448E1 +2.703566000E3,3.373237040E1 +2.703865000E3,2.762261654E1 +2.704108000E3,3.058182972E1 +2.704366000E3,4.157303269E1 +2.704695000E3,4.128988216E1 +2.705002000E3,3.725674585E1 +2.705260000E3,3.318881716E1 +2.705544000E3,3.512644750E1 +2.705774000E3,3.012622541E1 +2.706039000E3,3.307868989E1 +2.706297000E3,3.089854998E1 +2.706599000E3,2.870455364E1 +2.706901000E3,2.573473536E1 +2.707155000E3,2.708285982E1 +2.707419000E3,2.641018696E1 +2.707644000E3,2.532685142E1 +2.707945000E3,2.741320006E1 +2.708188000E3,2.764718970E1 +2.708460000E3,3.745935532E1 +2.708711000E3,4.292241509E1 +2.708955000E3,4.431523077E1 +2.709266000E3,3.812245251E1 +2.709534000E3,3.199637282E1 +2.709802000E3,3.030937111E1 +2.710049000E3,3.172341474E1 +2.710303000E3,4.706685853E1 +2.710610000E3,4.372593931E1 +2.710859000E3,4.298246415E1 +2.711196000E3,4.313732995E1 +2.711485000E3,3.646858634E1 +2.711745000E3,3.547356546E1 +2.712003000E3,4.802507202E1 +2.712259000E3,4.666185634E1 +2.712527000E3,4.298723738E1 +2.712813000E3,3.203029787E1 +2.713082000E3,2.721140687E1 +2.713344000E3,3.967881707E1 +2.713594000E3,5.017429445E1 +2.713859000E3,4.690730331E1 +2.714106000E3,4.892140969E1 +2.714475000E3,4.312346900E1 +2.714730000E3,4.926615820E1 +2.714984000E3,4.690558758E1 +2.715298000E3,3.116292546E1 +2.715563000E3,2.731472603E1 +2.715855000E3,3.029992609E1 +2.716160000E3,3.149201904E1 +2.716442000E3,2.826058660E1 +2.716703000E3,2.713282366E1 +2.716957000E3,3.659207256E1 +2.717253000E3,3.982143620E1 +2.717592000E3,4.316888996E1 +2.717851000E3,4.348787554E1 +2.718149000E3,4.336902207E1 +2.718464000E3,4.494305168E1 +2.718765000E3,4.280996114E1 +2.719042000E3,4.083199069E1 +2.719277000E3,3.924180447E1 +2.719573000E3,2.985025677E1 +2.719800000E3,2.924980764E1 +2.720042000E3,2.589394072E1 +2.720346000E3,2.996884267E1 +2.720607000E3,2.951796470E1 +2.720882000E3,2.762273017E1 +2.721181000E3,4.946261833E1 +2.721422000E3,4.848220411E1 +2.721736000E3,4.816357380E1 +2.722001000E3,5.238238407E1 +2.722305000E3,5.586118797E1 +2.722602000E3,5.474108905E1 +2.722856000E3,5.089156984E1 +2.723105000E3,4.900978141E1 +2.723369000E3,5.541376880E1 +2.723666000E3,4.827427134E1 +2.723997000E3,4.802338633E1 +2.724296000E3,3.537215093E1 +2.724548000E3,3.822637167E1 +2.724844000E3,3.388327957E1 +2.725086000E3,3.756611639E1 +2.725338000E3,4.489615211E1 +2.725635000E3,5.048833137E1 +2.725871000E3,4.298428385E1 +2.726174000E3,3.303114009E1 +2.726475000E3,4.527811220E1 +2.726764000E3,4.815487328E1 +2.727017000E3,4.761823346E1 +2.727328000E3,4.180028821E1 +2.727607000E3,4.512936944E1 +2.727849000E3,4.337880786E1 +2.728101000E3,4.031817829E1 +2.728401000E3,3.509684782E1 +2.728650000E3,4.495565250E1 +2.728895000E3,4.157595660E1 +2.729138000E3,5.008202715E1 +2.729381000E3,5.308960545E1 +2.729622000E3,4.943413955E1 +2.729917000E3,4.820467383E1 +2.730234000E3,5.168344618E1 +2.730544000E3,5.128425900E1 +2.730837000E3,5.242528085E1 +2.731075000E3,5.125548047E1 +2.731382000E3,5.027678189E1 +2.731625000E3,4.595108129E1 +2.731917000E3,5.425640288E1 +2.732229000E3,5.493458667E1 +2.732522000E3,5.383738769E1 +2.732781000E3,4.577468908E1 +2.733036000E3,4.877165484E1 +2.733337000E3,5.155317163E1 +2.733582000E3,4.868465804E1 +2.733904000E3,5.094377769E1 +2.734158000E3,4.778052408E1 +2.734485000E3,4.980696312E1 +2.734788000E3,5.229980528E1 +2.735043000E3,4.487473927E1 +2.735323000E3,5.405477376E1 +2.735550000E3,5.095910777E1 +2.735795000E3,4.081340338E1 +2.736110000E3,3.942379743E1 +2.736352000E3,4.377765131E1 +2.736599000E3,4.311237352E1 +2.736822000E3,4.659947655E1 +2.737071000E3,4.430846393E1 +2.737313000E3,4.579154087E1 +2.737577000E3,4.628223866E1 +2.737831000E3,3.937286623E1 +2.738094000E3,3.852847368E1 +2.738336000E3,3.907921933E1 +2.738583000E3,5.112703685E1 +2.738825000E3,4.827754167E1 +2.739100000E3,4.022366081E1 +2.739352000E3,3.342841986E1 +2.739649000E3,3.354947585E1 +2.740003000E3,2.967395260E1 +2.740259000E3,4.724158021E1 +2.740515000E3,4.406232704E1 +2.740781000E3,4.128290785E1 +2.741030000E3,3.766271195E1 +2.741274000E3,3.234308905E1 +2.741542000E3,5.345026714E1 +2.741790000E3,5.189834860E1 +2.742037000E3,4.310520052E1 +2.742373000E3,3.005340200E1 +2.742661000E3,3.957498865E1 +2.742905000E3,4.298992085E1 +2.743235000E3,3.914359224E1 +2.743487000E3,4.665969106E1 +2.743742000E3,4.569837618E1 +2.743989000E3,4.037243126E1 +2.744288000E3,4.393151618E1 +2.744525000E3,4.191552922E1 +2.744830000E3,3.855450094E1 +2.745068000E3,3.137426682E1 +2.745312000E3,3.988970586E1 +2.745595000E3,4.261856210E1 +2.745912000E3,4.545535941E1 +2.746178000E3,3.982007681E1 +2.746515000E3,3.873990925E1 +2.746799000E3,4.024486228E1 +2.747097000E3,3.778822068E1 +2.747346000E3,3.349647091E1 +2.747587000E3,3.949530039E1 +2.747884000E3,4.424971453E1 +2.748182000E3,4.109440717E1 +2.748426000E3,4.429824127E1 +2.748724000E3,3.941870140E1 +2.749014000E3,3.719766140E1 +2.749309000E3,3.407061301E1 +2.749659000E3,3.362708714E1 +2.749929000E3,4.111324363E1 +2.750185000E3,4.275268079E1 +2.750445000E3,5.624172952E1 +2.750726000E3,4.374037489E1 +2.750957000E3,4.189644016E1 +2.751207000E3,3.621210842E1 +2.751519000E3,4.177841495E1 +2.751770000E3,4.048458953E1 +2.752052000E3,3.923884976E1 +2.752303000E3,3.426258793E1 +2.752575000E3,3.252443323E1 +2.752926000E3,3.211416673E1 +2.753222000E3,3.245023971E1 +2.753483000E3,3.266068265E1 +2.753758000E3,4.004662592E1 +2.754054000E3,4.872983792E1 +2.754320000E3,5.041613029E1 +2.754567000E3,4.540589836E1 +2.754814000E3,3.042430240E1 +2.755080000E3,3.072459076E1 +2.755376000E3,3.998104284E1 +2.755642000E3,4.049850263E1 +2.755970000E3,4.294486763E1 +2.756315000E3,4.067196783E1 +2.756573000E3,4.772031632E1 +2.756825000E3,4.988707098E1 +2.757139000E3,4.555538995E1 +2.757388000E3,4.252022698E1 +2.757651000E3,3.810962452E1 +2.757917000E3,3.494795311E1 +2.758159000E3,3.247098224E1 +2.758413000E3,3.588027190E1 +2.758665000E3,3.200494843E1 +2.758920000E3,4.772506231E1 +2.759171000E3,3.775844318E1 +2.759507000E3,3.920116655E1 +2.759772000E3,4.528245497E1 +2.760086000E3,4.240466142E1 +2.760349000E3,4.544544837E1 +2.760652000E3,4.039389797E1 +2.760923000E3,3.896680017E1 +2.761194000E3,4.381534416E1 +2.761436000E3,4.424202471E1 +2.761681000E3,4.737958135E1 +2.761960000E3,4.213672401E1 +2.762194000E3,4.516117441E1 +2.762462000E3,4.279973284E1 +2.762806000E3,3.859577230E1 +2.763061000E3,4.880977241E1 +2.763403000E3,4.365184399E1 +2.763660000E3,3.848143477E1 +2.763932000E3,4.787104427E1 +2.764214000E3,3.823665924E1 +2.764451000E3,3.049392521E1 +2.764732000E3,3.086844430E1 +2.764975000E3,2.587396098E1 +2.765284000E3,3.362049288E1 +2.765536000E3,3.353664382E1 +2.765825000E3,5.140360254E1 +2.766193000E3,5.105178275E1 +2.766449000E3,5.027787452E1 +2.766756000E3,4.961194015E1 +2.766992000E3,4.473604482E1 +2.767290000E3,5.567849424E1 +2.767540000E3,5.366739238E1 +2.767788000E3,5.268444481E1 +2.768092000E3,4.378358357E1 +2.768389000E3,4.285786187E1 +2.768638000E3,3.838737205E1 +2.768928000E3,4.053738598E1 +2.769250000E3,3.914310468E1 +2.769517000E3,3.950994015E1 +2.769781000E3,4.085678781E1 +2.770095000E3,3.706118568E1 +2.770362000E3,3.878826243E1 +2.770640000E3,4.509160576E1 +2.770877000E3,4.395611401E1 +2.771129000E3,3.894826552E1 +2.771368000E3,3.783168139E1 +2.771620000E3,3.074559821E1 +2.771881000E3,4.191911052E1 +2.772136000E3,4.492008577E1 +2.772447000E3,3.666714779E1 +2.772710000E3,4.135207765E1 +2.772994000E3,4.645886813E1 +2.773238000E3,5.078995440E1 +2.773478000E3,5.706152467E1 +2.773725000E3,5.135582573E1 +2.773990000E3,4.900548267E1 +2.774266000E3,5.275962483E1 +2.774567000E3,3.947101760E1 +2.774806000E3,4.078518654E1 +2.775113000E3,4.929998433E1 +2.775417000E3,4.396253608E1 +2.775784000E3,4.382194135E1 +2.776077000E3,4.131860223E1 +2.776341000E3,4.321133953E1 +2.776596000E3,3.942571045E1 +2.776881000E3,5.035254190E1 +2.777176000E3,5.596334670E1 +2.777432000E3,6.003222989E1 +2.777730000E3,5.139953750E1 +2.778036000E3,5.596001036E1 +2.778330000E3,5.632045587E1 +2.778567000E3,5.352711698E1 +2.778873000E3,5.160150080E1 +2.779243000E3,5.407354895E1 +2.779513000E3,5.151192380E1 +2.779810000E3,5.479493680E1 +2.780084000E3,5.006197117E1 +2.780351000E3,5.012247277E1 +2.780644000E3,4.598086802E1 +2.780884000E3,3.959492635E1 +2.781142000E3,3.571624227E1 +2.781421000E3,4.082207018E1 +2.781720000E3,5.162800696E1 +2.781984000E3,5.211692198E1 +2.782250000E3,5.017743125E1 +2.782617000E3,4.685740156E1 +2.782916000E3,4.348825959E1 +2.783213000E3,3.825858224E1 +2.783454000E3,4.923981343E1 +2.783750000E3,5.319160353E1 +2.783992000E3,4.967899375E1 +2.784288000E3,3.952802481E1 +2.784535000E3,3.328379343E1 +2.784779000E3,3.014350405E1 +2.785020000E3,3.405755755E1 +2.785313000E3,4.653255974E1 +2.785639000E3,4.571255084E1 +2.785896000E3,4.212654376E1 +2.786166000E3,4.635178938E1 +2.786421000E3,4.614547408E1 +2.786716000E3,4.279815144E1 +2.787018000E3,3.739201392E1 +2.787261000E3,4.297599275E1 +2.787569000E3,5.279236826E1 +2.787869000E3,4.385267374E1 +2.788181000E3,3.538660905E1 +2.788488000E3,4.283741498E1 +2.788738000E3,3.898018884E1 +2.789079000E3,4.417569536E1 +2.789327000E3,3.821417555E1 +2.789586000E3,4.124587088E1 +2.789850000E3,4.583617377E1 +2.790116000E3,4.758354441E1 +2.790413000E3,4.386951397E1 +2.790662000E3,4.527431896E1 +2.790956000E3,4.454979637E1 +2.791207000E3,4.019280914E1 +2.791465000E3,4.549375778E1 +2.791714000E3,4.076569420E1 +2.791963000E3,3.807465350E1 +2.792293000E3,5.201775254E1 +2.792550000E3,4.217772267E1 +2.792797000E3,5.472035384E1 +2.793107000E3,5.403984906E1 +2.793357000E3,5.591746790E1 +2.793622000E3,5.564159884E1 +2.793875000E3,5.646584479E1 +2.794118000E3,5.185594958E1 +2.794377000E3,4.895735059E1 +2.794636000E3,5.654557288E1 +2.794943000E3,5.012866956E1 +2.795254000E3,4.757016947E1 +2.795528000E3,5.211434220E1 +2.795790000E3,4.452402763E1 +2.796058000E3,4.290214665E1 +2.796307000E3,3.465820610E1 +2.796556000E3,4.339944359E1 +2.796852000E3,4.313164949E1 +2.797091000E3,5.438037991E1 +2.797389000E3,5.514175593E1 +2.797635000E3,4.928848190E1 +2.797924000E3,4.659784940E1 +2.798220000E3,4.998887096E1 +2.798537000E3,4.486399829E1 +2.798842000E3,4.885866840E1 +2.799091000E3,4.635335968E1 +2.799347000E3,4.504358299E1 +2.799594000E3,3.958005741E1 +2.799833000E3,4.827229253E1 +2.800082000E3,4.830536262E1 +2.800388000E3,4.659260793E1 +2.800673000E3,4.111758509E1 +2.800972000E3,4.464305855E1 +2.801233000E3,4.497276151E1 +2.801524000E3,3.374775892E1 +2.801884000E3,3.426238632E1 +2.802202000E3,3.521995684E1 +2.802451000E3,3.181302785E1 +2.802708000E3,2.794884084E1 +2.803019000E3,3.320140571E1 +2.803325000E3,3.478175393E1 +2.803626000E3,3.529465039E1 +2.803932000E3,3.962950189E1 +2.804222000E3,5.725685057E1 +2.804486000E3,5.740119524E1 +2.804784000E3,5.069347451E1 +2.805056000E3,5.047632669E1 +2.805376000E3,5.207930289E1 +2.805626000E3,5.264810014E1 +2.805887000E3,5.288954519E1 +2.806177000E3,4.457356662E1 +2.806431000E3,3.885566564E1 +2.806679000E3,3.768676842E1 +2.806944000E3,3.953483275E1 +2.807192000E3,4.348722722E1 +2.807514000E3,4.091620627E1 +2.807832000E3,4.192587435E1 +2.808086000E3,4.434501723E1 +2.808380000E3,4.393917252E1 +2.808686000E3,4.250763593E1 +2.809001000E3,4.146719312E1 +2.809249000E3,4.084508562E1 +2.809517000E3,4.466153637E1 +2.809817000E3,4.002274614E1 +2.810111000E3,4.310032831E1 +2.810375000E3,4.901386280E1 +2.810661000E3,4.607368963E1 +2.810927000E3,4.387647276E1 +2.811225000E3,5.143943484E1 +2.811469000E3,5.045193234E1 +2.811861000E3,4.363012565E1 +2.812115000E3,4.450854658E1 +2.812371000E3,4.453857946E1 +2.812631000E3,4.628101753E1 +2.812921000E3,4.634691523E1 +2.813212000E3,4.654803531E1 +2.813510000E3,4.718980060E1 +2.813758000E3,4.430765323E1 +2.814051000E3,4.322664022E1 +2.814349000E3,4.450224091E1 +2.814582000E3,4.170367724E1 +2.814868000E3,3.985315953E1 +2.815113000E3,5.280042862E1 +2.815400000E3,4.119993511E1 +2.815662000E3,4.251502783E1 +2.815937000E3,4.221594106E1 +2.816186000E3,4.475181393E1 +2.816425000E3,4.757705666E1 +2.816666000E3,4.971185267E1 +2.816968000E3,4.862141287E1 +2.817211000E3,4.713523003E1 +2.817492000E3,4.541478066E1 +2.817737000E3,4.363493262E1 +2.817996000E3,4.428814895E1 +2.818246000E3,4.395099122E1 +2.818516000E3,4.781334664E1 +2.818773000E3,4.439472962E1 +2.819027000E3,4.768107540E1 +2.819278000E3,4.535748265E1 +2.819523000E3,5.061196572E1 +2.819779000E3,4.816069594E1 +2.820044000E3,4.715573746E1 +2.820374000E3,4.919198579E1 +2.820635000E3,5.486134785E1 +2.820897000E3,4.845922458E1 +2.821173000E3,4.486224636E1 +2.821520000E3,4.543631827E1 +2.821781000E3,4.823449020E1 +2.822049000E3,4.622456265E1 +2.822354000E3,3.467019045E1 +2.822632000E3,3.820707315E1 +2.822892000E3,3.870865044E1 +2.823175000E3,3.526203974E1 +2.823424000E3,3.398332746E1 +2.823673000E3,4.060940798E1 +2.823924000E3,4.531267955E1 +2.824156000E3,4.823172894E1 +2.824426000E3,5.381643572E1 +2.824772000E3,5.219878503E1 +2.825053000E3,4.888255160E1 +2.825277000E3,4.023650802E1 +2.825526000E3,3.467455539E1 +2.825785000E3,3.818404386E1 +2.826078000E3,4.122702652E1 +2.826315000E3,3.713088668E1 +2.826619000E3,4.891468535E1 +2.826912000E3,5.266971981E1 +2.827148000E3,4.991025067E1 +2.827457000E3,5.435242869E1 +2.827718000E3,5.378448717E1 +2.828053000E3,5.171570017E1 +2.828327000E3,5.600593919E1 +2.828581000E3,5.175339102E1 +2.828821000E3,4.567582373E1 +2.829101000E3,3.417267221E1 +2.829337000E3,3.532670702E1 +2.829576000E3,4.323212593E1 +2.829823000E3,3.952189104E1 +2.830096000E3,4.372473758E1 +2.830363000E3,4.288959864E1 +2.830609000E3,3.903893871E1 +2.830954000E3,3.847274859E1 +2.831281000E3,4.911689413E1 +2.831539000E3,5.342672798E1 +2.831798000E3,5.558955965E1 +2.832091000E3,5.519004987E1 +2.832341000E3,5.877942264E1 +2.832589000E3,4.602825434E1 +2.832861000E3,3.380054471E1 +2.833107000E3,3.583644563E1 +2.833403000E3,4.160983164E1 +2.833653000E3,3.903662215E1 +2.833958000E3,3.879412363E1 +2.834222000E3,4.121083607E1 +2.834460000E3,4.235130104E1 +2.834723000E3,5.615135633E1 +2.834993000E3,5.355273371E1 +2.835271000E3,4.896976792E1 +2.835535000E3,5.132324538E1 +2.835792000E3,5.529277110E1 +2.836041000E3,5.163674064E1 +2.836366000E3,4.657927993E1 +2.836613000E3,4.238907241E1 +2.836875000E3,5.376683406E1 +2.837143000E3,5.052269952E1 +2.837398000E3,5.018740192E1 +2.837697000E3,4.680907883E1 +2.837961000E3,4.427452663E1 +2.838227000E3,3.300759096E1 +2.838490000E3,3.639504198E1 +2.838784000E3,4.617517315E1 +2.839084000E3,4.692063960E1 +2.839325000E3,4.445415179E1 +2.839620000E3,4.215561710E1 +2.839863000E3,4.433766229E1 +2.840168000E3,4.210423337E1 +2.840460000E3,3.873922427E1 +2.840768000E3,3.717852459E1 +2.841057000E3,3.957811826E1 +2.841313000E3,3.760389186E1 +2.841638000E3,4.310249633E1 +2.841921000E3,4.813095040E1 +2.842192000E3,4.623131926E1 +2.842444000E3,4.648620260E1 +2.842743000E3,4.620801315E1 +2.843027000E3,4.321069748E1 +2.843281000E3,4.205248893E1 +2.843587000E3,2.653536028E1 +2.843863000E3,2.940344619E1 +2.844270000E3,4.715941302E1 +2.844533000E3,4.512147604E1 +2.844793000E3,4.758865475E1 +2.845051000E3,4.853448129E1 +2.845325000E3,4.647479098E1 +2.845569000E3,4.600966189E1 +2.845842000E3,4.549543262E1 +2.846088000E3,4.262631529E1 +2.846347000E3,4.522394390E1 +2.846652000E3,4.657245211E1 +2.846924000E3,4.554651191E1 +2.847231000E3,4.501421864E1 +2.847609000E3,4.413715050E1 +2.847859000E3,3.641102730E1 +2.848158000E3,2.959594862E1 +2.848409000E3,3.229903797E1 +2.848684000E3,3.716282001E1 +2.848948000E3,4.864280315E1 +2.849195000E3,4.698625872E1 +2.849453000E3,4.475077374E1 +2.849725000E3,4.320130236E1 +2.850029000E3,4.052232702E1 +2.850286000E3,4.987213531E1 +2.850622000E3,4.470574790E1 +2.850953000E3,4.746715529E1 +2.851224000E3,4.817674396E1 +2.851475000E3,4.755384271E1 +2.851775000E3,4.606857790E1 +2.852037000E3,4.602549066E1 +2.852280000E3,4.107899882E1 +2.852578000E3,4.602936757E1 +2.852832000E3,4.594357604E1 +2.853123000E3,4.132874601E1 +2.853424000E3,3.891402985E1 +2.853676000E3,3.210431116E1 +2.854034000E3,4.148325967E1 +2.854336000E3,4.539420759E1 +2.854629000E3,3.813311910E1 +2.854857000E3,3.204826654E1 +2.855103000E3,4.042825728E1 +2.855348000E3,3.781799437E1 +2.855635000E3,3.485312778E1 +2.855901000E3,3.176423587E1 +2.856194000E3,3.286644404E1 +2.856446000E3,3.601261840E1 +2.856741000E3,3.056779431E1 +2.856990000E3,2.876904683E1 +2.857247000E3,2.336161379E1 +2.857525000E3,5.319777865E1 +2.857765000E3,4.924210585E1 +2.858030000E3,4.161506516E1 +2.858287000E3,3.471025819E1 +2.858592000E3,2.954431085E1 +2.858878000E3,3.551304021E1 +2.859146000E3,4.056554733E1 +2.859438000E3,4.716772205E1 +2.859749000E3,4.728214145E1 +2.860112000E3,4.333221553E1 +2.860355000E3,3.970290127E1 +2.860627000E3,4.675070996E1 +2.860922000E3,5.292655838E1 +2.861168000E3,5.560528000E1 +2.861448000E3,5.155203362E1 +2.861684000E3,4.854372910E1 +2.861981000E3,5.166225265E1 +2.862226000E3,5.239758268E1 +2.862536000E3,4.880079262E1 +2.862801000E3,5.860724491E1 +2.863049000E3,5.487085904E1 +2.863366000E3,4.477307493E1 +2.863622000E3,4.809216762E1 +2.863923000E3,4.128779228E1 +2.864180000E3,4.039902121E1 +2.864473000E3,3.763315716E1 +2.864758000E3,3.836830031E1 +2.865072000E3,3.562217561E1 +2.865375000E3,4.251016575E1 +2.865631000E3,3.959478231E1 +2.865894000E3,3.906491963E1 +2.866161000E3,3.169567809E1 +2.866409000E3,4.180907280E1 +2.866769000E3,5.009501966E1 +2.867095000E3,4.485052737E1 +2.867377000E3,4.543449817E1 +2.867634000E3,4.558186247E1 +2.867912000E3,3.310648260E1 +2.868160000E3,3.368680580E1 +2.868403000E3,3.259924908E1 +2.868652000E3,3.468868920E1 +2.868945000E3,3.811295096E1 +2.869214000E3,3.680532391E1 +2.869523000E3,4.480088276E1 +2.869800000E3,4.321197878E1 +2.870149000E3,3.870196995E1 +2.870426000E3,4.501549736E1 +2.870686000E3,3.869046251E1 +2.870998000E3,5.116138397E1 +2.871259000E3,4.565952095E1 +2.871545000E3,4.044036430E1 +2.871835000E3,3.776423584E1 +2.872146000E3,4.283314388E1 +2.872428000E3,4.822150076E1 +2.872666000E3,4.609488251E1 +2.872966000E3,4.199842198E1 +2.873258000E3,4.199452970E1 +2.873557000E3,4.094164548E1 +2.873868000E3,3.451929232E1 +2.874146000E3,3.725700957E1 +2.874378000E3,3.820854143E1 +2.874632000E3,3.261818797E1 +2.874949000E3,4.229639001E1 +2.875219000E3,4.314663650E1 +2.875496000E3,4.030472415E1 +2.875772000E3,3.740362597E1 +2.876082000E3,3.770704299E1 +2.876334000E3,4.016521241E1 +2.876600000E3,4.155568881E1 +2.876855000E3,3.864643482E1 +2.877164000E3,3.358142820E1 +2.877430000E3,2.988882280E1 +2.877698000E3,4.233125756E1 +2.877954000E3,4.245249096E1 +2.878273000E3,3.619646633E1 +2.878541000E3,3.199868066E1 +2.878801000E3,4.546979293E1 +2.879062000E3,5.523869784E1 +2.879342000E3,5.605267417E1 +2.879584000E3,5.653411529E1 +2.879928000E3,4.626290707E1 +2.880202000E3,3.540012043E1 +2.880447000E3,3.620700172E1 +2.880691000E3,2.922036878E1 +2.880938000E3,3.659816429E1 +2.881251000E3,4.145147882E1 +2.881527000E3,3.894444603E1 +2.881851000E3,3.741315407E1 +2.882112000E3,4.094962867E1 +2.882373000E3,4.333353585E1 +2.882625000E3,4.557565518E1 +2.882879000E3,4.308396997E1 +2.883145000E3,4.097722416E1 +2.883416000E3,3.927850137E1 +2.883669000E3,3.223716221E1 +2.883941000E3,3.004581442E1 +2.884209000E3,3.765685263E1 +2.884466000E3,3.878810543E1 +2.884718000E3,2.988953340E1 +2.884967000E3,3.346960294E1 +2.885221000E3,3.799647420E1 +2.885537000E3,3.116842616E1 +2.885796000E3,3.671552801E1 +2.886084000E3,4.459898232E1 +2.886404000E3,4.708370738E1 +2.886677000E3,5.036035843E1 +2.886979000E3,4.113513329E1 +2.887251000E3,3.503458684E1 +2.887528000E3,3.462090732E1 +2.887785000E3,4.001717165E1 +2.888037000E3,3.538133603E1 +2.888296000E3,3.662805649E1 +2.888547000E3,4.263542947E1 +2.888820000E3,4.431895872E1 +2.889079000E3,4.300413574E1 +2.889340000E3,4.173317530E1 +2.889582000E3,4.288275032E1 +2.889932000E3,3.944773526E1 +2.890197000E3,3.214266541E1 +2.890503000E3,3.060588708E1 +2.890777000E3,3.296322494E1 +2.891017000E3,3.394251803E1 +2.891320000E3,3.208741950E1 +2.891570000E3,3.441770910E1 +2.891849000E3,3.368561294E1 +2.892087000E3,3.475967611E1 +2.892337000E3,3.740055420E1 +2.892635000E3,3.542355307E1 +2.892981000E3,3.105741683E1 +2.893247000E3,3.245614761E1 +2.893513000E3,4.142391644E1 +2.893779000E3,4.497461971E1 +2.894029000E3,4.653178389E1 +2.894282000E3,4.703576342E1 +2.894540000E3,4.751169602E1 +2.894805000E3,4.201422178E1 +2.895062000E3,4.370261317E1 +2.895310000E3,4.660906406E1 +2.895596000E3,4.633159753E1 +2.895865000E3,4.381116332E1 +2.896155000E3,4.368523912E1 +2.896405000E3,4.747051902E1 +2.896651000E3,4.222577444E1 +2.896905000E3,4.572633660E1 +2.897184000E3,5.203776089E1 +2.897450000E3,5.010843836E1 +2.897744000E3,4.910530865E1 +2.898022000E3,4.664859833E1 +2.898308000E3,3.985336775E1 +2.898564000E3,3.683403533E1 +2.898812000E3,4.284820320E1 +2.899091000E3,4.286036404E1 +2.899396000E3,5.224070654E1 +2.899753000E3,4.568546748E1 +2.900018000E3,5.586433220E1 +2.900278000E3,4.514230837E1 +2.900559000E3,3.853422420E1 +2.900865000E3,3.299777990E1 +2.901139000E3,3.594596453E1 +2.901415000E3,2.896001699E1 +2.901650000E3,2.556794162E1 +2.901937000E3,2.525773120E1 +2.902206000E3,3.138035436E1 +2.902457000E3,3.725731802E1 +2.902816000E3,3.600302530E1 +2.903095000E3,3.476106384E1 +2.903340000E3,3.325569458E1 +2.903600000E3,3.217545002E1 +2.903858000E3,2.994578711E1 +2.904108000E3,3.277965280E1 +2.904372000E3,4.013450695E1 +2.904627000E3,3.103730297E1 +2.904913000E3,4.187502355E1 +2.905174000E3,3.591627686E1 +2.905452000E3,3.067277870E1 +2.905743000E3,2.813597523E1 +2.906004000E3,2.760542404E1 +2.906321000E3,3.327793113E1 +2.906579000E3,4.111963776E1 +2.906835000E3,4.309802180E1 +2.907113000E3,2.749088524E1 +2.907354000E3,2.269523459E1 +2.907657000E3,3.631225289E1 +2.907901000E3,4.146405590E1 +2.908156000E3,3.785670954E1 +2.908403000E3,4.498664409E1 +2.908675000E3,4.174614917E1 +2.908932000E3,4.632262643E1 +2.909189000E3,3.569839459E1 +2.909522000E3,4.635385444E1 +2.909802000E3,4.337190367E1 +2.910035000E3,3.796960383E1 +2.910287000E3,4.151951269E1 +2.910538000E3,4.245940710E1 +2.910795000E3,4.268454470E1 +2.911045000E3,4.280139929E1 +2.911335000E3,3.861780445E1 +2.911584000E3,4.028221299E1 +2.911885000E3,3.934408626E1 +2.912139000E3,3.091195323E1 +2.912386000E3,2.709027446E1 +2.912622000E3,2.721294148E1 +2.912915000E3,3.169063213E1 +2.913196000E3,3.663766462E1 +2.913461000E3,3.582442105E1 +2.913744000E3,2.742218375E1 +2.913990000E3,3.432349666E1 +2.914297000E3,4.586386591E1 +2.914575000E3,4.813383402E1 +2.914888000E3,5.016441505E1 +2.915190000E3,4.132593749E1 +2.915481000E3,3.992883324E1 +2.915827000E3,3.713218942E1 +2.916087000E3,4.862036940E1 +2.916351000E3,4.985137398E1 +2.916622000E3,5.126616609E1 +2.916881000E3,4.180876614E1 +2.917157000E3,4.057128207E1 +2.917418000E3,3.994520906E1 +2.917681000E3,3.719846748E1 +2.917964000E3,4.377214072E1 +2.918264000E3,4.081140664E1 +2.918518000E3,4.149712935E1 +2.918784000E3,3.965801174E1 +2.919127000E3,3.499332266E1 +2.919415000E3,3.454976163E1 +2.919745000E3,3.801205804E1 +2.920003000E3,4.266330834E1 +2.920244000E3,3.704497233E1 +2.920548000E3,3.869800412E1 +2.920840000E3,3.880762608E1 +2.921081000E3,3.967826348E1 +2.921325000E3,4.387098551E1 +2.921573000E3,3.795523909E1 +2.921876000E3,3.884773193E1 +2.922122000E3,3.949919351E1 +2.922481000E3,3.549368996E1 +2.922774000E3,5.176437750E1 +2.923023000E3,4.673969779E1 +2.923306000E3,3.729614967E1 +2.923573000E3,3.557242251E1 +2.923880000E3,5.351861504E1 +2.924155000E3,5.486661937E1 +2.924424000E3,5.693150230E1 +2.924735000E3,4.225245527E1 +2.924988000E3,4.082554353E1 +2.925252000E3,3.807826598E1 +2.925573000E3,3.587807510E1 +2.925935000E3,4.290242494E1 +2.926237000E3,3.960438869E1 +2.926496000E3,3.732088357E1 +2.926751000E3,3.216321546E1 +2.926991000E3,3.001846960E1 +2.927295000E3,3.634949804E1 +2.927531000E3,3.127042454E1 +2.927829000E3,3.158500209E1 +2.928073000E3,2.815993792E1 +2.928370000E3,2.793102526E1 +2.928613000E3,2.468786691E1 +2.928943000E3,2.345175993E1 +2.929256000E3,2.908559709E1 +2.929497000E3,2.580950455E1 +2.929819000E3,2.871707976E1 +2.930114000E3,2.977851279E1 +2.930374000E3,4.220437998E1 +2.930636000E3,3.122152770E1 +2.930945000E3,3.902308439E1 +2.931227000E3,3.648582434E1 +2.931474000E3,4.774090674E1 +2.931717000E3,4.487624905E1 +2.931963000E3,4.620728265E1 +2.932258000E3,4.011602626E1 +2.932585000E3,4.011469989E1 +2.932871000E3,4.531107143E1 +2.933117000E3,4.299757904E1 +2.933366000E3,4.255561828E1 +2.933662000E3,4.180851663E1 +2.933899000E3,3.354142728E1 +2.934139000E3,4.061788576E1 +2.934435000E3,3.190428864E1 +2.934678000E3,3.136545948E1 +2.934975000E3,3.172564299E1 +2.935227000E3,3.538616066E1 +2.935577000E3,3.227761247E1 +2.935826000E3,3.587578035E1 +2.936132000E3,2.830690319E1 +2.936391000E3,2.983281120E1 +2.936636000E3,3.198482114E1 +2.936936000E3,4.529436692E1 +2.937191000E3,3.904726622E1 +2.937498000E3,4.546792713E1 +2.937790000E3,4.178984789E1 +2.938055000E3,3.901507008E1 +2.938332000E3,3.530528642E1 +2.938634000E3,3.766035689E1 +2.939060000E3,5.595745424E1 +2.939318000E3,5.800941557E1 +2.939576000E3,5.061871726E1 +2.939836000E3,6.017617924E1 +2.940124000E3,5.889680612E1 +2.940380000E3,5.553527141E1 +2.940631000E3,4.982924060E1 +2.940889000E3,5.386899946E1 +2.941183000E3,5.511436312E1 +2.941477000E3,5.474658637E1 +2.941736000E3,5.669903896E1 +2.941985000E3,5.352207307E1 +2.942302000E3,5.089540084E1 +2.942556000E3,5.163069551E1 +2.942811000E3,4.946827448E1 +2.943144000E3,4.292332560E1 +2.943386000E3,4.769421745E1 +2.943625000E3,4.741300910E1 +2.943936000E3,4.918473310E1 +2.944182000E3,4.358732286E1 +2.944456000E3,4.338106770E1 +2.944722000E3,5.302068646E1 +2.945006000E3,4.800501219E1 +2.945370000E3,4.445792428E1 +2.945619000E3,3.768400599E1 +2.945867000E3,3.829540629E1 +2.946159000E3,3.766669508E1 +2.946411000E3,4.016839261E1 +2.946712000E3,4.041724233E1 +2.947009000E3,4.012217251E1 +2.947323000E3,3.568820570E1 +2.947568000E3,3.690839296E1 +2.947818000E3,4.813137033E1 +2.948084000E3,5.325274156E1 +2.948341000E3,5.892514859E1 +2.948730000E3,4.314585435E1 +2.948980000E3,4.049194134E1 +2.949257000E3,4.522053034E1 +2.949515000E3,4.263261915E1 +2.949826000E3,5.159034358E1 +2.950126000E3,4.094053529E1 +2.950370000E3,4.144504964E1 +2.950613000E3,4.584689520E1 +2.950933000E3,3.986259871E1 +2.951211000E3,5.835616238E1 +2.951492000E3,4.865922153E1 +2.951773000E3,4.646806952E1 +2.952049000E3,5.501145746E1 +2.952349000E3,5.395560549E1 +2.952606000E3,5.094776028E1 +2.952859000E3,5.987933082E1 +2.953123000E3,5.553863596E1 +2.953365000E3,6.056471643E1 +2.953626000E3,5.705129962E1 +2.953881000E3,5.620457969E1 +2.954143000E3,4.633104773E1 +2.954403000E3,4.542785483E1 +2.954666000E3,4.357363747E1 +2.954925000E3,5.905995366E1 +2.955255000E3,5.325307727E1 +2.955500000E3,6.730464031E1 +2.955795000E3,6.362836082E1 +2.956030000E3,6.057596417E1 +2.956332000E3,6.813918985E1 +2.956573000E3,6.403678903E1 +2.956871000E3,6.230635205E1 +2.957135000E3,6.746671531E1 +2.957401000E3,6.427695804E1 +2.957673000E3,5.206458526E1 +2.957933000E3,5.261265827E1 +2.958182000E3,4.877242183E1 +2.958552000E3,6.627461000E1 +2.958808000E3,6.741673158E1 +2.959062000E3,6.597614354E1 +2.959304000E3,6.540552328E1 +2.959551000E3,6.528289091E1 +2.959864000E3,5.830061674E1 +2.960121000E3,5.985112812E1 +2.960428000E3,6.090568068E1 +2.960720000E3,6.807446854E1 +2.960985000E3,6.930722199E1 +2.961226000E3,6.386100217E1 +2.961579000E3,6.028451745E1 +2.961849000E3,6.477814340E1 +2.962132000E3,6.837046944E1 +2.962373000E3,6.647209363E1 +2.962660000E3,6.694202205E1 +2.962967000E3,6.648756695E1 +2.963231000E3,6.482625001E1 +2.963518000E3,7.095796361E1 +2.963775000E3,6.454417662E1 +2.964062000E3,6.533171518E1 +2.964339000E3,6.471819922E1 +2.964629000E3,5.679367810E1 +2.964962000E3,5.573913208E1 +2.965271000E3,6.251351498E1 +2.965502000E3,6.071427502E1 +2.965745000E3,6.212696498E1 +2.966049000E3,5.601947939E1 +2.966292000E3,5.543203731E1 +2.966544000E3,5.440105204E1 +2.966807000E3,5.169354717E1 +2.967114000E3,5.098574914E1 +2.967354000E3,4.778774527E1 +2.967603000E3,5.527018336E1 +2.967874000E3,5.069142516E1 +2.968220000E3,5.540354927E1 +2.968470000E3,5.388190573E1 +2.968725000E3,5.648678631E1 +2.968994000E3,6.195289166E1 +2.969259000E3,5.924073062E1 +2.969526000E3,5.554902217E1 +2.969797000E3,6.073047002E1 +2.970049000E3,5.750580172E1 +2.970375000E3,6.205206850E1 +2.970685000E3,5.892672487E1 +2.971008000E3,5.603539479E1 +2.971306000E3,5.380141597E1 +2.971609000E3,6.182570937E1 +2.971860000E3,5.755792598E1 +2.972120000E3,7.094637252E1 +2.972374000E3,7.220321333E1 +2.972688000E3,6.074903881E1 +2.972946000E3,5.132390204E1 +2.973203000E3,5.555176793E1 +2.973482000E3,5.082163203E1 +2.973746000E3,6.668022761E1 +2.974024000E3,6.951681150E1 +2.974257000E3,6.170353739E1 +2.974507000E3,6.191784425E1 +2.974845000E3,6.249884739E1 +2.975129000E3,6.139715498E1 +2.975385000E3,5.458109058E1 +2.975684000E3,6.285593412E1 +2.975925000E3,6.801445640E1 +2.976223000E3,6.762358149E1 +2.976454000E3,6.007212586E1 +2.976698000E3,6.176376027E1 +2.976998000E3,5.489351528E1 +2.977244000E3,6.419682450E1 +2.977544000E3,6.335879864E1 +2.977813000E3,6.346249627E1 +2.978071000E3,6.122721977E1 +2.978303000E3,6.269343112E1 +2.978564000E3,5.719207644E1 +2.978818000E3,6.209398004E1 +2.979085000E3,6.570545323E1 +2.979335000E3,6.443300698E1 +2.979582000E3,6.395479352E1 +2.979841000E3,6.285971298E1 +2.980091000E3,6.452411240E1 +2.980337000E3,6.648403811E1 +2.980638000E3,6.146510082E1 +2.980898000E3,6.178604521E1 +2.981191000E3,5.906416732E1 +2.981418000E3,6.139524316E1 +2.981668000E3,6.754933795E1 +2.981958000E3,5.804633278E1 +2.982221000E3,5.544285219E1 +2.982480000E3,5.252390700E1 +2.982741000E3,5.442974682E1 +2.983009000E3,5.886662164E1 +2.983270000E3,6.039421332E1 +2.983532000E3,5.984826425E1 +2.983780000E3,6.038747451E1 +2.984020000E3,5.836799318E1 +2.984266000E3,6.011457774E1 +2.984654000E3,6.086793857E1 +2.984928000E3,6.104684994E1 +2.985246000E3,6.081085188E1 +2.985504000E3,6.338602633E1 +2.985771000E3,6.224702903E1 +2.986040000E3,5.771788346E1 +2.986351000E3,5.832375863E1 +2.986657000E3,6.179808645E1 +2.986893000E3,6.074067698E1 +2.987188000E3,5.763905723E1 +2.987459000E3,5.411975455E1 +2.987698000E3,5.609082395E1 +2.988020000E3,5.838775534E1 +2.988261000E3,5.545934196E1 +2.988564000E3,5.818253650E1 +2.988803000E3,5.693365858E1 +2.989084000E3,5.747877452E1 +2.989394000E3,6.108654481E1 +2.989646000E3,6.109521888E1 +2.989952000E3,5.453216708E1 +2.990235000E3,5.325056065E1 +2.990530000E3,5.226229633E1 +2.990796000E3,5.566734434E1 +2.991153000E3,5.983192138E1 +2.991409000E3,5.902282422E1 +2.991712000E3,6.553978750E1 +2.991962000E3,6.323109208E1 +2.992210000E3,6.430699278E1 +2.992477000E3,6.439502996E1 +2.992769000E3,5.882379749E1 +2.993024000E3,7.076998945E1 +2.993317000E3,6.710088514E1 +2.993554000E3,6.332152683E1 +2.993846000E3,6.013348006E1 +2.994081000E3,6.492156154E1 +2.994361000E3,6.054189638E1 +2.994671000E3,5.878685209E1 +2.994911000E3,6.363988355E1 +2.995218000E3,6.266127576E1 +2.995513000E3,6.231860976E1 +2.995750000E3,6.770663238E1 +2.996056000E3,6.411706706E1 +2.996346000E3,6.607053327E1 +2.996592000E3,6.231837938E1 +2.996884000E3,6.235557028E1 +2.997130000E3,6.626149607E1 +2.997386000E3,6.897456616E1 +2.997721000E3,6.896820400E1 +2.997984000E3,5.708709076E1 +2.998260000E3,5.465136518E1 +2.998532000E3,6.136090841E1 +2.998792000E3,6.427324700E1 +2.999047000E3,5.922924051E1 +2.999308000E3,5.964993479E1 +2.999619000E3,5.937495043E1 +2.999910000E3,6.345321013E1 +3.000196000E3,6.558504608E1 +3.000438000E3,6.566442906E1 +3.000721000E3,6.596782674E1 +3.001048000E3,6.493210478E1 +3.001299000E3,6.778071085E1 +3.001554000E3,5.810398860E1 +3.001834000E3,6.461256831E1 +3.002084000E3,5.637103240E1 +3.002332000E3,6.244497501E1 +3.002633000E3,5.749162406E1 +3.002980000E3,6.268391580E1 +3.003246000E3,6.122193913E1 +3.003572000E3,6.467185898E1 +3.003877000E3,6.239318427E1 +3.004266000E3,6.708558966E1 +3.004573000E3,6.293492178E1 +3.004871000E3,6.169168265E1 +3.005129000E3,5.944912128E1 +3.005404000E3,5.631628075E1 +3.005704000E3,6.080609102E1 +3.005964000E3,6.424565764E1 +3.006250000E3,6.447415860E1 +3.006481000E3,6.606824769E1 +3.006756000E3,6.337387069E1 +3.007004000E3,6.294291386E1 +3.007286000E3,6.430484746E1 +3.007612000E3,6.091848593E1 +3.007867000E3,6.343837854E1 +3.008169000E3,5.978702761E1 +3.008432000E3,5.965865421E1 +3.008675000E3,5.540362761E1 +3.008918000E3,5.443572137E1 +3.009202000E3,6.171389250E1 +3.009446000E3,6.487192568E1 +3.009738000E3,5.958143908E1 +3.009983000E3,6.189834719E1 +3.010232000E3,5.752745917E1 +3.010489000E3,6.339873723E1 +3.010846000E3,6.127984243E1 +3.011144000E3,6.065194767E1 +3.011387000E3,6.253646864E1 +3.011646000E3,6.179753794E1 +3.011925000E3,6.231808205E1 +3.012153000E3,6.101579519E1 +3.012442000E3,5.876502421E1 +3.012737000E3,5.809905793E1 +3.013015000E3,5.695141293E1 +3.013301000E3,5.973139928E1 +3.013577000E3,6.007240820E1 +3.013839000E3,7.136453087E1 +3.014063000E3,7.173892024E1 +3.014315000E3,6.885425335E1 +3.014559000E3,6.110376355E1 +3.014808000E3,6.296723224E1 +3.015075000E3,6.021879294E1 +3.015327000E3,6.012811489E1 +3.015577000E3,6.282613373E1 +3.015850000E3,6.884549735E1 +3.016115000E3,6.913958233E1 +3.016397000E3,6.608409337E1 +3.016648000E3,6.437779633E1 +3.016896000E3,6.412579817E1 +3.017253000E3,6.408373459E1 +3.017500000E3,6.487828946E1 +3.017743000E3,6.281964754E1 +3.018003000E3,6.153697843E1 +3.018258000E3,6.503307442E1 +3.018512000E3,6.508021131E1 +3.018791000E3,5.910017780E1 +3.019028000E3,5.757469918E1 +3.019325000E3,5.762978005E1 +3.019573000E3,5.366611226E1 +3.019824000E3,5.708763529E1 +3.020086000E3,5.488621207E1 +3.020437000E3,5.826722905E1 +3.020695000E3,5.951373108E1 +3.020968000E3,6.130623452E1 +3.021217000E3,6.025771329E1 +3.021490000E3,5.280103891E1 +3.021737000E3,6.123009986E1 +3.022037000E3,6.404958762E1 +3.022328000E3,6.469373641E1 +3.022599000E3,6.283727611E1 +3.022840000E3,6.248869497E1 +3.023123000E3,6.767270030E1 +3.023363000E3,6.436289402E1 +3.023706000E3,6.007121161E1 +3.023992000E3,6.067397941E1 +3.024255000E3,6.005092329E1 +3.024513000E3,6.146229561E1 +3.024803000E3,6.214304530E1 +3.025060000E3,6.107977952E1 +3.025317000E3,6.268440106E1 +3.025560000E3,5.744048190E1 +3.025823000E3,6.080102592E1 +3.026092000E3,6.359394744E1 +3.026384000E3,6.219604097E1 +3.026685000E3,6.296073955E1 +3.026912000E3,6.243574530E1 +3.027190000E3,6.540426031E1 +3.027426000E3,7.038009166E1 +3.027684000E3,7.133800291E1 +3.027943000E3,6.847497315E1 +3.028214000E3,7.049817235E1 +3.028486000E3,6.555713643E1 +3.028748000E3,6.762942526E1 +3.029008000E3,6.780082040E1 +3.029264000E3,6.644646205E1 +3.029533000E3,7.066497540E1 +3.029800000E3,6.700863421E1 +3.030174000E3,6.263767412E1 +3.030459000E3,5.937975562E1 +3.030697000E3,6.189133018E1 +3.030958000E3,6.479748496E1 +3.031218000E3,6.070421224E1 +3.031488000E3,5.567295684E1 +3.031754000E3,6.162939414E1 +3.032026000E3,6.462556380E1 +3.032293000E3,6.300561819E1 +3.032553000E3,6.320528504E1 +3.032852000E3,6.205536878E1 +3.033102000E3,7.179598993E1 +3.033490000E3,6.907149718E1 +3.033750000E3,6.110443799E1 +3.034008000E3,5.743025653E1 +3.034257000E3,5.714646515E1 +3.034505000E3,6.193634179E1 +3.034762000E3,6.511685208E1 +3.035034000E3,6.647840023E1 +3.035277000E3,6.637602928E1 +3.035534000E3,6.208743290E1 +3.035873000E3,6.158502662E1 +3.036127000E3,6.138896352E1 +3.036392000E3,5.988342330E1 +3.036737000E3,5.834272912E1 +3.036998000E3,6.504474047E1 +3.037253000E3,5.801637483E1 +3.037569000E3,6.208073459E1 +3.037831000E3,6.555093843E1 +3.038084000E3,6.686352963E1 +3.038356000E3,6.398821865E1 +3.038638000E3,6.053541888E1 +3.038927000E3,5.509282051E1 +3.039228000E3,6.213274835E1 +3.039473000E3,6.149105368E1 +3.039745000E3,6.097957376E1 +3.040056000E3,6.313145073E1 +3.040300000E3,6.749857058E1 +3.040549000E3,6.031561589E1 +3.040852000E3,5.991948868E1 +3.041110000E3,6.228314687E1 +3.041358000E3,6.281493679E1 +3.041621000E3,6.031124820E1 +3.041926000E3,6.035954468E1 +3.042177000E3,6.230627050E1 +3.042448000E3,5.381586458E1 +3.042741000E3,6.032611045E1 +3.043026000E3,5.796046788E1 +3.043304000E3,6.286261594E1 +3.043605000E3,6.188894569E1 +3.043848000E3,6.196336480E1 +3.044091000E3,6.506902622E1 +3.044345000E3,6.547913264E1 +3.044589000E3,6.701681380E1 +3.044849000E3,6.398074775E1 +3.045095000E3,6.102355933E1 +3.045350000E3,6.546609328E1 +3.045598000E3,6.626677347E1 +3.045845000E3,6.212155235E1 +3.046098000E3,6.475032486E1 +3.046433000E3,6.469401418E1 +3.046698000E3,6.335899573E1 +3.046970000E3,5.799459631E1 +3.047267000E3,5.777430210E1 +3.047527000E3,6.228044606E1 +3.047785000E3,5.521572273E1 +3.048044000E3,5.312506195E1 +3.048316000E3,5.877400717E1 +3.048592000E3,6.239358597E1 +3.048842000E3,6.019315355E1 +3.049164000E3,5.944515023E1 +3.049418000E3,6.571719967E1 +3.049752000E3,5.906077781E1 +3.050005000E3,6.269931225E1 +3.050242000E3,6.329267329E1 +3.050532000E3,6.094692628E1 +3.050797000E3,6.137608503E1 +3.051055000E3,6.019630450E1 +3.051299000E3,5.959056092E1 +3.051551000E3,6.195653625E1 +3.051802000E3,5.997942431E1 +3.052044000E3,6.071988649E1 +3.052348000E3,6.146559433E1 +3.052605000E3,6.320542640E1 +3.052903000E3,6.301314639E1 +3.053133000E3,6.491013087E1 +3.053386000E3,5.374424399E1 +3.053632000E3,5.337930652E1 +3.053925000E3,5.830420592E1 +3.054167000E3,5.827724976E1 +3.054414000E3,5.413373264E1 +3.054713000E3,5.438904566E1 +3.054952000E3,5.478972153E1 +3.055245000E3,6.026125791E1 +3.055545000E3,6.377000784E1 +3.055792000E3,6.273059884E1 +3.056116000E3,6.164463909E1 +3.056426000E3,6.310484015E1 +3.056665000E3,6.191865333E1 +3.056974000E3,6.044005004E1 +3.057225000E3,5.723160495E1 +3.057532000E3,6.482171923E1 +3.057799000E3,6.373654624E1 +3.058097000E3,6.579319958E1 +3.058333000E3,6.717439766E1 +3.058632000E3,6.244987186E1 +3.058874000E3,5.911459441E1 +3.059119000E3,6.246625617E1 +3.059514000E3,6.061929027E1 +3.059786000E3,6.141894857E1 +3.060044000E3,6.531006136E1 +3.060311000E3,6.745420282E1 +3.060564000E3,6.305040539E1 +3.060809000E3,6.250223063E1 +3.061063000E3,5.984183740E1 +3.061365000E3,6.201500936E1 +3.061610000E3,6.171968159E1 +3.061853000E3,5.636652524E1 +3.062137000E3,5.937450988E1 +3.062405000E3,5.424162977E1 +3.062724000E3,5.577353705E1 +3.062968000E3,6.265208868E1 +3.063225000E3,6.754657095E1 +3.063470000E3,6.259832443E1 +3.063731000E3,5.846954403E1 +3.063975000E3,5.735719718E1 +3.064220000E3,5.614657426E1 +3.064460000E3,5.493678071E1 +3.064711000E3,6.175770153E1 +3.064961000E3,6.502893325E1 +3.065266000E3,6.372557142E1 +3.065562000E3,6.165604672E1 +3.065921000E3,6.202265536E1 +3.066181000E3,5.894659424E1 +3.066427000E3,5.516515279E1 +3.066669000E3,5.227763917E1 +3.066911000E3,5.331294555E1 +3.067166000E3,5.535383534E1 +3.067460000E3,5.490405248E1 +3.067721000E3,5.927902794E1 +3.068030000E3,6.001209348E1 +3.068288000E3,5.925707402E1 +3.068553000E3,6.116769528E1 +3.068848000E3,5.907075037E1 +3.069160000E3,5.402384091E1 +3.069467000E3,6.078433547E1 +3.069706000E3,6.064305090E1 +3.069991000E3,6.099922555E1 +3.070247000E3,6.081028216E1 +3.070500000E3,6.857342881E1 +3.070795000E3,6.830085683E1 +3.071035000E3,7.092929468E1 +3.071334000E3,6.670654987E1 +3.071580000E3,6.198358410E1 +3.071845000E3,6.029427505E1 +3.072216000E3,6.271100503E1 +3.072476000E3,6.548403896E1 +3.072709000E3,6.655140024E1 +3.072958000E3,6.872933885E1 +3.073221000E3,6.840034062E1 +3.073524000E3,6.189262665E1 +3.073801000E3,6.315516618E1 +3.074029000E3,6.431689152E1 +3.074282000E3,7.008635825E1 +3.074531000E3,6.529488526E1 +3.074781000E3,5.362885622E1 +3.075079000E3,6.174622467E1 +3.075321000E3,6.106059522E1 +3.075569000E3,6.727558853E1 +3.075841000E3,6.068477373E1 +3.076089000E3,6.224550385E1 +3.076358000E3,6.049387981E1 +3.076618000E3,5.554290122E1 +3.076868000E3,5.232623619E1 +3.077136000E3,5.715980006E1 +3.077434000E3,6.112308912E1 +3.077738000E3,5.964598426E1 +3.077997000E3,5.774993649E1 +3.078301000E3,5.930552673E1 +3.078632000E3,6.204668908E1 +3.078903000E3,6.135182684E1 +3.079234000E3,6.010535577E1 +3.079530000E3,5.612975229E1 +3.079846000E3,5.894789721E1 +3.080130000E3,6.424282153E1 +3.080395000E3,6.696093787E1 +3.080696000E3,5.929656512E1 +3.080931000E3,5.577162965E1 +3.081168000E3,6.096321541E1 +3.081415000E3,6.147204445E1 +3.081708000E3,6.518353223E1 +3.082066000E3,6.565001970E1 +3.082347000E3,6.152216198E1 +3.082591000E3,6.232488129E1 +3.082884000E3,6.450829181E1 +3.083131000E3,6.727741702E1 +3.083373000E3,6.596172391E1 +3.083615000E3,6.588974420E1 +3.083909000E3,6.215985231E1 +3.084146000E3,5.417797447E1 +3.084444000E3,5.776086644E1 +3.084736000E3,6.145598006E1 +3.085067000E3,6.705675690E1 +3.085353000E3,7.032609091E1 +3.085621000E3,6.942809802E1 +3.085926000E3,6.673219093E1 +3.086170000E3,5.874483463E1 +3.086457000E3,6.163530440E1 +3.086730000E3,5.863155738E1 +3.086955000E3,5.804604701E1 +3.087247000E3,7.202263239E1 +3.087542000E3,6.907595594E1 +3.087796000E3,7.104760035E1 +3.088063000E3,6.060670654E1 +3.088371000E3,6.409876160E1 +3.088642000E3,6.504332531E1 +3.088891000E3,6.050178076E1 +3.089172000E3,5.988548041E1 +3.089448000E3,6.419311516E1 +3.089715000E3,6.072209436E1 +3.089992000E3,6.148544930E1 +3.090256000E3,6.667985585E1 +3.090551000E3,6.360479893E1 +3.090829000E3,6.675347002E1 +3.091081000E3,6.585951744E1 +3.091337000E3,5.998998345E1 +3.091582000E3,7.213751425E1 +3.091973000E3,7.002319175E1 +3.092225000E3,6.554991346E1 +3.092495000E3,5.438962824E1 +3.092757000E3,5.806427109E1 +3.093010000E3,5.611571138E1 +3.093290000E3,5.427298566E1 +3.093553000E3,6.332676554E1 +3.093801000E3,6.191283999E1 +3.094088000E3,6.222056485E1 +3.094383000E3,6.679558422E1 +3.094660000E3,6.396349695E1 +3.094980000E3,6.335657582E1 +3.095321000E3,6.368682935E1 +3.095574000E3,6.239728447E1 +3.095829000E3,6.560913932E1 +3.096083000E3,6.288470186E1 +3.096327000E3,6.063834800E1 +3.096611000E3,5.698542980E1 +3.096866000E3,6.214573666E1 +3.097125000E3,6.108001307E1 +3.097382000E3,6.098898235E1 +3.097639000E3,6.935379750E1 +3.097944000E3,6.076333803E1 +3.098235000E3,5.747447310E1 +3.098595000E3,5.896750888E1 +3.098845000E3,6.428262322E1 +3.099146000E3,6.073561603E1 +3.099435000E3,5.610862272E1 +3.099679000E3,5.808393750E1 +3.099971000E3,6.306244141E1 +3.100214000E3,6.493760740E1 +3.100511000E3,5.964091377E1 +3.100753000E3,5.949423253E1 +3.100995000E3,6.324186751E1 +3.101237000E3,6.294719776E1 +3.101481000E3,6.618420708E1 +3.101805000E3,6.039251647E1 +3.102105000E3,6.883376735E1 +3.102388000E3,6.215701199E1 +3.102635000E3,6.251944475E1 +3.102926000E3,6.387718652E1 +3.103175000E3,6.262879933E1 +3.103469000E3,6.094246273E1 +3.103717000E3,5.780442917E1 +3.104010000E3,5.805018882E1 +3.104245000E3,6.073911170E1 +3.104537000E3,5.820155990E1 +3.104880000E3,5.691870737E1 +3.105139000E3,5.609187778E1 +3.105418000E3,5.368790307E1 +3.105673000E3,5.733127796E1 +3.105933000E3,5.834617124E1 +3.106196000E3,5.665251568E1 +3.106447000E3,5.839993992E1 +3.106707000E3,5.765825797E1 +3.106989000E3,6.346036236E1 +3.107241000E3,6.088974139E1 +3.107536000E3,5.623231578E1 +3.107836000E3,5.905990454E1 +3.108208000E3,5.913546091E1 +3.108462000E3,5.921957697E1 +3.108732000E3,6.403378055E1 +3.109010000E3,6.829473891E1 +3.109237000E3,6.866131452E1 +3.109530000E3,5.759864554E1 +3.109769000E3,5.216447932E1 +3.110067000E3,5.887622687E1 +3.110356000E3,5.912152229E1 +3.110621000E3,6.343631440E1 +3.110862000E3,6.110189356E1 +3.111105000E3,5.925249209E1 +3.111441000E3,5.583559168E1 +3.111708000E3,6.397874973E1 +3.112049000E3,5.864630935E1 +3.112314000E3,5.876030726E1 +3.112620000E3,5.558460131E1 +3.112980000E3,5.336927775E1 +3.113232000E3,5.351895645E1 +3.113515000E3,4.932805120E1 +3.113763000E3,6.323075662E1 +3.114057000E3,6.375401647E1 +3.114318000E3,6.430798012E1 +3.114651000E3,6.745313705E1 +3.114909000E3,6.370697195E1 +3.115204000E3,6.719832935E1 +3.115517000E3,6.353352979E1 +3.115816000E3,6.421660294E1 +3.116074000E3,6.666449428E1 +3.116372000E3,6.209745804E1 +3.116612000E3,5.853853683E1 +3.116911000E3,6.153177442E1 +3.117151000E3,6.465277685E1 +3.117439000E3,6.054074617E1 +3.117698000E3,5.762180605E1 +3.118029000E3,5.904912096E1 +3.118292000E3,6.054469105E1 +3.118547000E3,6.570885599E1 +3.118854000E3,6.686989978E1 +3.119103000E3,6.506823644E1 +3.119359000E3,5.780133308E1 +3.119610000E3,5.983707630E1 +3.119896000E3,6.102798325E1 +3.120167000E3,5.940835035E1 +3.120446000E3,6.154008300E1 +3.120717000E3,6.031178539E1 +3.120969000E3,6.222997321E1 +3.121291000E3,6.676268308E1 +3.121532000E3,6.244629438E1 +3.121778000E3,6.014719673E1 +3.122038000E3,6.351124664E1 +3.122317000E3,5.786579019E1 +3.122607000E3,5.704033688E1 +3.122864000E3,5.941823253E1 +3.123160000E3,6.366298469E1 +3.123429000E3,6.545330590E1 +3.123678000E3,6.206143443E1 +3.123932000E3,6.250040348E1 +3.124250000E3,6.193784317E1 +3.124582000E3,6.679802083E1 +3.124888000E3,6.239911876E1 +3.125141000E3,6.227743005E1 +3.125407000E3,5.930162190E1 +3.125655000E3,5.692493613E1 +3.125897000E3,6.100851678E1 +3.126155000E3,6.356932883E1 +3.126470000E3,6.583742229E1 +3.126735000E3,6.828531785E1 +3.127049000E3,6.744954014E1 +3.127349000E3,6.892448306E1 +3.127620000E3,6.312172108E1 +3.127885000E3,6.549450530E1 +3.128150000E3,6.274114245E1 +3.128434000E3,5.987443555E1 +3.128694000E3,5.754092402E1 +3.128967000E3,6.140483336E1 +3.129224000E3,5.793735580E1 +3.129483000E3,5.640840091E1 +3.129735000E3,7.068460790E1 +3.130042000E3,6.831622259E1 +3.130308000E3,6.661131327E1 +3.130563000E3,7.032191033E1 +3.130897000E3,6.429012882E1 +3.131166000E3,6.890779868E1 +3.131427000E3,6.812897599E1 +3.131726000E3,6.440583932E1 +3.132039000E3,6.371305855E1 +3.132310000E3,6.071113649E1 +3.132582000E3,6.356904702E1 +3.132834000E3,6.335195410E1 +3.133078000E3,5.922748305E1 +3.133357000E3,5.790290676E1 +3.133581000E3,6.067150466E1 +3.133827000E3,5.936438225E1 +3.134075000E3,5.651144024E1 +3.134312000E3,5.707156804E1 +3.134564000E3,6.256442790E1 +3.134822000E3,5.680653319E1 +3.135099000E3,6.386946987E1 +3.135341000E3,6.183817556E1 +3.135588000E3,5.791592939E1 +3.135843000E3,5.415500200E1 +3.136159000E3,5.828393923E1 +3.136402000E3,5.584102234E1 +3.136645000E3,5.843965538E1 +3.136922000E3,6.032067675E1 +3.137231000E3,6.082235855E1 +3.137514000E3,6.216335250E1 +3.137763000E3,6.576895249E1 +3.138052000E3,5.935628673E1 +3.138348000E3,5.697436057E1 +3.138590000E3,6.713499986E1 +3.138833000E3,5.996032355E1 +3.139071000E3,6.566814076E1 +3.139366000E3,6.469315039E1 +3.139607000E3,6.414816039E1 +3.139901000E3,6.238348704E1 +3.140144000E3,5.975478602E1 +3.140477000E3,5.617333113E1 +3.140789000E3,6.140881460E1 +3.141038000E3,5.760925345E1 +3.141323000E3,5.813474075E1 +3.141616000E3,6.190304914E1 +3.141899000E3,5.853813516E1 +3.142123000E3,6.019478920E1 +3.142387000E3,5.824830032E1 +3.142639000E3,6.031650371E1 +3.142898000E3,5.874305926E1 +3.143211000E3,6.365997735E1 +3.143459000E3,6.182267241E1 +3.143814000E3,6.153305629E1 +3.144076000E3,6.040235966E1 +3.144345000E3,6.279707978E1 +3.144591000E3,6.261441373E1 +3.144837000E3,5.722591859E1 +3.145082000E3,5.791919274E1 +3.145387000E3,6.142016587E1 +3.145678000E3,5.996802308E1 +3.145994000E3,5.761245992E1 +3.146269000E3,5.915341256E1 +3.146531000E3,5.679987844E1 +3.146814000E3,6.228452904E1 +3.147163000E3,6.038592359E1 +3.147440000E3,6.662509726E1 +3.147705000E3,5.864713600E1 +3.147961000E3,6.383827006E1 +3.148228000E3,6.445939632E1 +3.148543000E3,6.206597752E1 +3.148800000E3,6.082056407E1 +3.149046000E3,5.872798480E1 +3.149340000E3,5.792404132E1 +3.149585000E3,5.917409009E1 +3.149845000E3,5.619795947E1 +3.150164000E3,6.447379623E1 +3.150501000E3,6.336546747E1 +3.150798000E3,6.022605646E1 +3.151059000E3,5.837139298E1 +3.151360000E3,5.721847889E1 +3.151614000E3,7.085699981E1 +3.151908000E3,6.031233854E1 +3.152206000E3,6.170839562E1 +3.152452000E3,6.336115962E1 +3.152697000E3,6.732286145E1 +3.152943000E3,6.043278366E1 +3.153235000E3,5.822950572E1 +3.153537000E3,6.155234216E1 +3.153813000E3,5.671966020E1 +3.154078000E3,5.613348243E1 +3.154333000E3,5.384913785E1 +3.154580000E3,5.739778382E1 +3.154869000E3,5.617144196E1 +3.155103000E3,5.699346940E1 +3.155351000E3,6.356393037E1 +3.155653000E3,5.483372318E1 +3.155949000E3,5.806865262E1 +3.156195000E3,5.725879338E1 +3.156459000E3,5.708272088E1 +3.156776000E3,5.736330762E1 +3.157028000E3,5.620178265E1 +3.157280000E3,5.557503250E1 +3.157521000E3,6.379766868E1 +3.157864000E3,6.175462639E1 +3.158113000E3,5.970375584E1 +3.158365000E3,5.482220327E1 +3.158625000E3,6.094938302E1 +3.158872000E3,6.189076140E1 +3.159128000E3,6.365906369E1 +3.159385000E3,6.365252593E1 +3.159699000E3,6.421784723E1 +3.160039000E3,5.952347777E1 +3.160337000E3,6.582170091E1 +3.160643000E3,6.400621400E1 +3.160905000E3,5.982923632E1 +3.161162000E3,5.912958512E1 +3.161449000E3,5.744161350E1 +3.161722000E3,6.208953034E1 +3.161984000E3,6.743490019E1 +3.162228000E3,5.893358785E1 +3.162506000E3,6.260442429E1 +3.162777000E3,6.054589944E1 +3.163072000E3,5.958101250E1 +3.163380000E3,5.756716970E1 +3.163623000E3,5.897741262E1 +3.163916000E3,5.199350029E1 +3.164173000E3,5.607364633E1 +3.164444000E3,6.846587546E1 +3.164756000E3,5.833953537E1 +3.165011000E3,6.699601536E1 +3.165255000E3,6.024033326E1 +3.165530000E3,5.636786936E1 +3.165825000E3,5.917346905E1 +3.166077000E3,5.684739711E1 +3.166343000E3,5.441684119E1 +3.166607000E3,5.708423030E1 +3.166871000E3,5.726160097E1 +3.167212000E3,5.795085756E1 +3.167513000E3,5.359033433E1 +3.167800000E3,5.481028168E1 +3.168051000E3,5.771426852E1 +3.168321000E3,5.720698183E1 +3.168574000E3,6.029484328E1 +3.168847000E3,6.594273179E1 +3.169141000E3,5.814954146E1 +3.169451000E3,5.741553332E1 +3.169717000E3,5.474949866E1 +3.170064000E3,5.858087337E1 +3.170388000E3,5.901398101E1 +3.170689000E3,6.599046976E1 +3.170942000E3,6.777823262E1 +3.171184000E3,6.339704259E1 +3.171437000E3,5.678237753E1 +3.171694000E3,6.067324941E1 +3.171975000E3,6.337570500E1 +3.172215000E3,6.060254578E1 +3.172509000E3,6.511602204E1 +3.172792000E3,6.491523998E1 +3.173086000E3,6.236437487E1 +3.173442000E3,6.132637014E1 +3.173725000E3,5.575670785E1 +3.173997000E3,5.450541115E1 +3.174243000E3,5.816223835E1 +3.174516000E3,5.991084873E1 +3.174771000E3,5.959264792E1 +3.175022000E3,6.001504494E1 +3.175268000E3,5.794233494E1 +3.175510000E3,5.875384007E1 +3.175752000E3,6.582497874E1 +3.176001000E3,6.385809704E1 +3.176310000E3,6.575292490E1 +3.176700000E3,6.328122862E1 +3.176947000E3,6.160374932E1 +3.177205000E3,6.233605233E1 +3.177480000E3,5.746120395E1 +3.177733000E3,5.491961653E1 +3.178002000E3,5.346590976E1 +3.178308000E3,4.910433719E1 +3.178598000E3,5.548086035E1 +3.178876000E3,5.834728013E1 +3.179129000E3,5.722852381E1 +3.179407000E3,5.371032540E1 +3.179686000E3,5.375017527E1 +3.180066000E3,5.741446005E1 +3.180325000E3,5.595914402E1 +3.180624000E3,5.784989425E1 +3.180867000E3,5.818330240E1 +3.181112000E3,5.651638359E1 +3.181407000E3,5.400925398E1 +3.181645000E3,5.134681346E1 +3.181939000E3,5.540645654E1 +3.182189000E3,5.603348674E1 +3.182489000E3,5.612576596E1 +3.182726000E3,5.412821683E1 +3.183072000E3,5.364995955E1 +3.183373000E3,5.685067634E1 +3.183631000E3,5.292396423E1 +3.183913000E3,5.037305724E1 +3.184139000E3,5.458652507E1 +3.184386000E3,5.336216390E1 +3.184625000E3,5.355204553E1 +3.184861000E3,5.798216811E1 +3.185170000E3,5.037998219E1 +3.185412000E3,5.253320042E1 +3.185661000E3,5.864558083E1 +3.185944000E3,5.568855775E1 +3.186307000E3,6.065674046E1 +3.186594000E3,5.486017232E1 +3.186846000E3,5.354898396E1 +3.187128000E3,5.606629368E1 +3.187373000E3,5.887335608E1 +3.187646000E3,5.932986575E1 +3.187996000E3,5.618144782E1 +3.188254000E3,5.279151533E1 +3.188538000E3,5.980979660E1 +3.188819000E3,5.959008295E1 +3.189058000E3,5.757326838E1 +3.189324000E3,5.814251633E1 +3.189681000E3,6.715432083E1 +3.189929000E3,5.659786492E1 +3.190183000E3,6.813933576E1 +3.190493000E3,6.423896785E1 +3.190762000E3,6.115594562E1 +3.191063000E3,6.466877383E1 +3.191295000E3,6.400176112E1 +3.191543000E3,6.061189134E1 +3.191813000E3,6.334758009E1 +3.192062000E3,6.268892194E1 +3.192384000E3,6.255649695E1 +3.192688000E3,6.440152216E1 +3.193095000E3,6.083356984E1 +3.193368000E3,5.702207605E1 +3.193630000E3,6.129862703E1 +3.193931000E3,6.511359313E1 +3.194208000E3,6.424113032E1 +3.194458000E3,6.277957456E1 +3.194751000E3,6.067489213E1 +3.195007000E3,6.044409325E1 +3.195267000E3,5.902485869E1 +3.195523000E3,5.940450479E1 +3.195769000E3,5.629667180E1 +3.196103000E3,5.773687048E1 +3.196362000E3,5.275604571E1 +3.196676000E3,5.321996877E1 +3.196932000E3,4.952922772E1 +3.197191000E3,5.411849627E1 +3.197458000E3,5.575997519E1 +3.197718000E3,5.782402980E1 +3.197982000E3,6.092045522E1 +3.198228000E3,6.504329265E1 +3.198474000E3,5.972589974E1 +3.198713000E3,5.816644178E1 +3.198958000E3,6.190720604E1 +3.199249000E3,6.026051864E1 +3.199481000E3,6.064697026E1 +3.199744000E3,5.715218400E1 +3.200003000E3,5.509276249E1 +3.200281000E3,5.035485844E1 +3.200607000E3,5.745123346E1 +3.200874000E3,5.874041571E1 +3.201157000E3,6.540993071E1 +3.201407000E3,6.592699897E1 +3.201730000E3,5.826687879E1 +3.201982000E3,5.966898415E1 +3.202228000E3,5.928022084E1 +3.202546000E3,5.492659239E1 +3.202811000E3,5.843773228E1 +3.203091000E3,5.615478265E1 +3.203365000E3,5.378265559E1 +3.203611000E3,5.724493737E1 +3.203868000E3,5.517839982E1 +3.204137000E3,5.166422622E1 +3.204439000E3,5.966362579E1 +3.204692000E3,5.837831137E1 +3.204952000E3,5.873474045E1 +3.205216000E3,6.025432286E1 +3.205460000E3,5.709891269E1 +3.205710000E3,5.946766606E1 +3.206062000E3,5.575402329E1 +3.206367000E3,5.597615265E1 +3.206620000E3,5.417374311E1 +3.206869000E3,5.785505194E1 +3.207152000E3,5.973144393E1 +3.207405000E3,5.494944595E1 +3.207684000E3,5.859159641E1 +3.207982000E3,5.909726368E1 +3.208273000E3,6.221796591E1 +3.208541000E3,6.248597715E1 +3.208787000E3,6.143432195E1 +3.209043000E3,5.767415987E1 +3.209357000E3,6.087003136E1 +3.209636000E3,5.816954701E1 +3.209920000E3,5.644196424E1 +3.210232000E3,5.726504339E1 +3.210505000E3,5.384487818E1 +3.210769000E3,6.092886049E1 +3.211044000E3,5.910647270E1 +3.211306000E3,5.855040927E1 +3.211560000E3,6.886189365E1 +3.211803000E3,6.193548709E1 +3.212075000E3,5.895667088E1 +3.212320000E3,5.613734816E1 +3.212669000E3,6.365011223E1 +3.212934000E3,6.616065582E1 +3.213195000E3,4.911720228E1 +3.213460000E3,5.429539168E1 +3.213713000E3,5.374714305E1 +3.213991000E3,5.505703483E1 +3.214231000E3,5.216197587E1 +3.214486000E3,6.958974683E1 +3.214787000E3,6.410499727E1 +3.215047000E3,5.795707420E1 +3.215308000E3,6.210641451E1 +3.215581000E3,5.724864620E1 +3.215943000E3,5.588397230E1 +3.216221000E3,5.281586206E1 +3.216477000E3,5.616597876E1 +3.216735000E3,7.016181845E1 +3.216992000E3,7.008234703E1 +3.217238000E3,6.883905131E1 +3.217482000E3,6.039428517E1 +3.217722000E3,6.572225500E1 +3.217971000E3,6.862082655E1 +3.218221000E3,6.392739620E1 +3.218481000E3,6.757625304E1 +3.218798000E3,6.468895575E1 +3.219137000E3,5.941097234E1 +3.219443000E3,6.639331379E1 +3.219715000E3,6.512137194E1 +3.219985000E3,6.137345425E1 +3.220244000E3,6.566739727E1 +3.220494000E3,5.684090738E1 +3.220758000E3,4.865476042E1 +3.221022000E3,5.571447424E1 +3.221324000E3,5.050200483E1 +3.221601000E3,5.262698993E1 +3.221858000E3,5.385544431E1 +3.222185000E3,5.793526709E1 +3.222548000E3,5.957102097E1 +3.222796000E3,5.026005559E1 +3.223068000E3,5.164515600E1 +3.223344000E3,6.575405490E1 +3.223598000E3,6.925353270E1 +3.223876000E3,5.909751181E1 +3.224152000E3,5.561020058E1 +3.224416000E3,5.257890354E1 +3.224662000E3,5.262446891E1 +3.224954000E3,5.599583257E1 +3.225202000E3,5.286294623E1 +3.225483000E3,5.049109924E1 +3.225830000E3,6.154494550E1 +3.226096000E3,5.433068412E1 +3.226350000E3,5.256602683E1 +3.226652000E3,5.283535150E1 +3.226989000E3,5.811852242E1 +3.227251000E3,5.842389129E1 +3.227505000E3,5.524471208E1 +3.227782000E3,6.207780754E1 +3.228053000E3,6.165130850E1 +3.228302000E3,5.818085510E1 +3.228557000E3,5.646455559E1 +3.228823000E3,5.903487317E1 +3.229201000E3,5.460588060E1 +3.229471000E3,5.534537953E1 +3.229720000E3,5.492103159E1 +3.229976000E3,5.474982433E1 +3.230276000E3,6.311967749E1 +3.230531000E3,6.144237593E1 +3.230845000E3,6.204497775E1 +3.231123000E3,6.192920277E1 +3.231382000E3,6.726064707E1 +3.231675000E3,5.951322284E1 +3.231970000E3,5.620608761E1 +3.232324000E3,5.597726308E1 +3.232555000E3,5.737347613E1 +3.232845000E3,5.515502781E1 +3.233172000E3,5.977186730E1 +3.233435000E3,6.131606000E1 +3.233742000E3,5.610580070E1 +3.234000000E3,5.978218601E1 +3.234272000E3,6.319970701E1 +3.234581000E3,5.608562509E1 +3.234862000E3,6.169746582E1 +3.235159000E3,6.105762669E1 +3.235416000E3,5.369522011E1 +3.235667000E3,6.580487109E1 +3.235906000E3,5.797374086E1 +3.236200000E3,6.981267784E1 +3.236445000E3,6.229515865E1 +3.236695000E3,6.858181426E1 +3.236976000E3,5.740787399E1 +3.237218000E3,5.455964692E1 +3.237457000E3,7.204325578E1 +3.237720000E3,6.142914611E1 +3.238013000E3,5.768794211E1 +3.238280000E3,5.732491467E1 +3.238580000E3,5.793744264E1 +3.238882000E3,5.626325471E1 +3.239149000E3,5.661724856E1 +3.239424000E3,6.969605219E1 +3.239726000E3,6.482965407E1 +3.239976000E3,5.947270091E1 +3.240278000E3,5.913422796E1 +3.240576000E3,5.630232959E1 +3.240877000E3,5.956366293E1 +3.241128000E3,6.177688280E1 +3.241391000E3,5.851951662E1 +3.241664000E3,5.959787493E1 +3.241944000E3,5.765523372E1 +3.242310000E3,5.961443978E1 +3.242602000E3,5.811194000E1 +3.242910000E3,5.765320401E1 +3.243188000E3,6.631148602E1 +3.243420000E3,6.916377121E1 +3.243673000E3,6.435158828E1 +3.243925000E3,6.486926440E1 +3.244170000E3,5.506348984E1 +3.244475000E3,6.702899260E1 +3.244772000E3,6.244838658E1 +3.245003000E3,6.057959417E1 +3.245328000E3,6.103137126E1 +3.245581000E3,5.723671640E1 +3.245864000E3,5.125127512E1 +3.246123000E3,5.748187394E1 +3.246395000E3,6.148075018E1 +3.246669000E3,6.226010686E1 +3.246940000E3,5.273573389E1 +3.247233000E3,5.462141876E1 +3.247482000E3,5.946160846E1 +3.247728000E3,6.623014757E1 +3.248041000E3,5.823129903E1 +3.248289000E3,5.689561843E1 +3.248538000E3,5.851473913E1 +3.248910000E3,5.778207994E1 +3.249187000E3,6.109108533E1 +3.249462000E3,6.368024039E1 +3.249726000E3,6.527718864E1 +3.249983000E3,5.855658653E1 +3.250281000E3,5.718860903E1 +3.250534000E3,5.946900486E1 +3.250785000E3,5.688578668E1 +3.251033000E3,5.444863300E1 +3.251316000E3,5.885016251E1 +3.251570000E3,6.172482417E1 +3.251833000E3,6.833245599E1 +3.252200000E3,6.656973280E1 +3.252441000E3,6.663686281E1 +3.252721000E3,6.380106140E1 +3.252991000E3,6.113258977E1 +3.253242000E3,7.270243700E1 +3.253457000E3,7.442711013E1 +3.253706000E3,7.097589831E1 +3.253999000E3,5.740107596E1 +3.254237000E3,5.407351324E1 +3.254532000E3,6.235563554E1 +3.254777000E3,6.148535018E1 +3.255085000E3,6.767985005E1 +3.255346000E3,5.893302101E1 +3.255628000E3,5.834235484E1 +3.255897000E3,6.152524318E1 +3.256146000E3,6.124474706E1 +3.256419000E3,5.928557591E1 +3.256642000E3,5.798678480E1 +3.256921000E3,5.800318977E1 +3.257149000E3,5.813391626E1 +3.257392000E3,6.200496820E1 +3.257645000E3,6.268368020E1 +3.257945000E3,6.783162804E1 +3.258296000E3,7.343015115E1 +3.258556000E3,7.258165803E1 +3.258805000E3,6.753466802E1 +3.259117000E3,7.134403593E1 +3.259421000E3,6.813653179E1 +3.259673000E3,6.449045726E1 +3.259939000E3,7.144310958E1 +3.260188000E3,6.619195201E1 +3.260438000E3,6.990193438E1 +3.260692000E3,6.791067771E1 +3.260944000E3,7.014061601E1 +3.261191000E3,7.271368424E1 +3.261532000E3,6.889323528E1 +3.261794000E3,6.087932672E1 +3.262047000E3,6.139975131E1 +3.262322000E3,6.684035582E1 +3.262586000E3,6.977079140E1 +3.262861000E3,6.711211223E1 +3.263137000E3,6.891542739E1 +3.263415000E3,6.450575202E1 +3.263671000E3,6.375083447E1 +3.263946000E3,6.525419018E1 +3.264250000E3,6.323969714E1 +3.264517000E3,7.351653517E1 +3.264813000E3,7.240916805E1 +3.265107000E3,6.991986455E1 +3.265349000E3,6.767718353E1 +3.265598000E3,7.020318016E1 +3.265847000E3,6.593396207E1 +3.266149000E3,6.776886494E1 +3.266400000E3,6.796917668E1 +3.266653000E3,6.234495715E1 +3.266897000E3,6.492303298E1 +3.267153000E3,6.551968402E1 +3.267398000E3,6.154456079E1 +3.267647000E3,6.087933145E1 +3.267896000E3,6.053677169E1 +3.268248000E3,6.893351216E1 +3.268513000E3,6.695525456E1 +3.268817000E3,6.263553940E1 +3.269070000E3,5.965971741E1 +3.269315000E3,6.136430702E1 +3.269582000E3,7.398506568E1 +3.269828000E3,7.145137487E1 +3.270128000E3,7.238266470E1 +3.270371000E3,7.289527120E1 +3.270623000E3,7.428636164E1 +3.270931000E3,7.248535741E1 +3.271185000E3,7.399445608E1 +3.271518000E3,7.355251323E1 +3.271795000E3,7.296660624E1 +3.272081000E3,7.131368475E1 +3.272358000E3,7.068792091E1 +3.272581000E3,6.623699177E1 +3.272835000E3,5.258987188E1 +3.273093000E3,6.044165509E1 +3.273337000E3,6.879817511E1 +3.273635000E3,6.970693453E1 +3.273931000E3,7.169623139E1 +3.274180000E3,7.112396098E1 +3.274428000E3,7.190035192E1 +3.274761000E3,7.089393329E1 +3.275038000E3,6.995869622E1 +3.275323000E3,6.900781199E1 +3.275569000E3,6.766263448E1 +3.275860000E3,6.881814388E1 +3.276116000E3,6.821596427E1 +3.276370000E3,6.896702672E1 +3.276649000E3,6.827119542E1 +3.276914000E3,6.795818984E1 +3.277171000E3,7.025945887E1 +3.277482000E3,6.685661764E1 +3.277741000E3,6.810082518E1 +3.278078000E3,6.902136690E1 +3.278358000E3,6.568611650E1 +3.278604000E3,7.123802039E1 +3.278848000E3,6.300940961E1 +3.279144000E3,6.292057856E1 +3.279382000E3,6.654167697E1 +3.279622000E3,6.808014942E1 +3.279917000E3,6.902808966E1 +3.280160000E3,6.685153426E1 +3.280471000E3,6.435621527E1 +3.280770000E3,6.765080490E1 +3.281059000E3,6.808248309E1 +3.281352000E3,6.477485011E1 +3.281602000E3,5.628454157E1 +3.281867000E3,5.800927668E1 +3.282130000E3,7.131716325E1 +3.282389000E3,7.355208108E1 +3.282663000E3,7.108584109E1 +3.282932000E3,5.710440961E1 +3.283191000E3,5.329699257E1 +3.283451000E3,5.003319724E1 +3.283709000E3,5.081704645E1 +3.284003000E3,5.075383483E1 +3.284259000E3,5.431712692E1 +3.284628000E3,5.277582101E1 +3.284917000E3,6.061307876E1 +3.285214000E3,6.168657926E1 +3.285472000E3,5.854988033E1 +3.285744000E3,4.913527641E1 +3.285999000E3,5.563664353E1 +3.286250000E3,5.841488419E1 +3.286517000E3,6.437604518E1 +3.286777000E3,6.124264602E1 +3.287035000E3,5.886049633E1 +3.287300000E3,6.196549102E1 +3.287630000E3,6.776239267E1 +3.287951000E3,6.702605133E1 +3.288259000E3,5.376695086E1 +3.288499000E3,5.095339550E1 +3.288807000E3,5.078317550E1 +3.289117000E3,5.659564827E1 +3.289411000E3,7.136818215E1 +3.289684000E3,6.629708396E1 +3.289982000E3,7.133804213E1 +3.290271000E3,6.994811010E1 +3.290544000E3,6.532422657E1 +3.290800000E3,6.451013008E1 +3.291132000E3,6.261305598E1 +3.291418000E3,6.696223022E1 +3.291676000E3,4.827412656E1 +3.291930000E3,4.724575587E1 +3.292202000E3,4.846609938E1 +3.292501000E3,5.276700476E1 +3.292822000E3,5.071547801E1 +3.293065000E3,4.944777186E1 +3.293349000E3,4.466809801E1 +3.293583000E3,4.432750067E1 +3.293832000E3,5.165471909E1 +3.294078000E3,4.606912616E1 +3.294427000E3,4.826074528E1 +3.294712000E3,4.434240888E1 +3.294985000E3,4.684583968E1 +3.295286000E3,5.104787864E1 +3.295548000E3,4.839146586E1 +3.295807000E3,5.479537456E1 +3.296066000E3,5.055213000E1 +3.296324000E3,3.933656037E1 +3.296585000E3,4.513652817E1 +3.296840000E3,4.805617654E1 +3.297099000E3,4.453428427E1 +3.297354000E3,5.205427791E1 +3.297705000E3,5.001223291E1 +3.297948000E3,5.342697607E1 +3.298200000E3,5.619467550E1 +3.298461000E3,5.565459347E1 +3.298738000E3,5.819577446E1 +3.298988000E3,5.077826383E1 +3.299236000E3,5.142261821E1 +3.299478000E3,5.610754709E1 +3.299775000E3,5.248015066E1 +3.300011000E3,4.742520943E1 +3.300325000E3,5.519481303E1 +3.300626000E3,4.628613419E1 +3.300959000E3,4.430731849E1 +3.301224000E3,4.380193782E1 +3.301473000E3,4.690647127E1 +3.301746000E3,4.845294386E1 +3.302057000E3,4.912389116E1 +3.302307000E3,5.155191791E1 +3.302563000E3,5.240902416E1 +3.302820000E3,4.677306339E1 +3.303083000E3,5.037145513E1 +3.303327000E3,4.506752152E1 +3.303573000E3,4.920686196E1 +3.303857000E3,4.935493485E1 +3.304189000E3,4.415801479E1 +3.304459000E3,4.423531181E1 +3.304768000E3,3.874162391E1 +3.305030000E3,4.189958295E1 +3.305333000E3,4.005870516E1 +3.305579000E3,5.072183491E1 +3.305843000E3,4.113754863E1 +3.306140000E3,5.548273149E1 +3.306383000E3,5.383424402E1 +3.306628000E3,5.205779319E1 +3.306877000E3,4.592085607E1 +3.307206000E3,5.092451979E1 +3.307449000E3,4.823039740E1 +3.307720000E3,5.026090042E1 +3.307982000E3,5.794901070E1 +3.308198000E3,5.239372011E1 +3.308502000E3,5.024517162E1 +3.308742000E3,4.253471720E1 +3.309044000E3,4.105523794E1 +3.309340000E3,3.028117703E1 +3.309596000E3,2.809150222E1 +3.309864000E3,2.626060468E1 +3.310135000E3,5.055452447E1 +3.310501000E3,7.199271156E1 +3.310777000E3,7.172468430E1 +3.311045000E3,7.282926204E1 +3.311313000E3,7.145580608E1 +3.311562000E3,7.218798353E1 +3.311867000E3,7.081603642E1 +3.312107000E3,7.122522782E1 +3.312348000E3,7.013128466E1 +3.312672000E3,7.138239962E1 +3.312976000E3,7.589001323E1 +3.313216000E3,6.988466628E1 +3.313506000E3,6.521999768E1 +3.313853000E3,5.781158269E1 +3.314129000E3,5.698768013E1 +3.314381000E3,5.954050680E1 +3.314636000E3,5.529467486E1 +3.314903000E3,6.884377149E1 +3.315163000E3,7.293133775E1 +3.315448000E3,7.186875504E1 +3.315697000E3,6.942752239E1 +3.315995000E3,6.899930460E1 +3.316247000E3,6.333687203E1 +3.316557000E3,6.820286469E1 +3.316856000E3,7.371764624E1 +3.317124000E3,7.475494405E1 +3.317411000E3,7.135849387E1 +3.317718000E3,5.726081152E1 +3.317965000E3,5.650406291E1 +3.318233000E3,4.901561410E1 +3.318490000E3,6.881993797E1 +3.318742000E3,7.251465406E1 +3.319010000E3,6.395213402E1 +3.319311000E3,7.197127027E1 +3.319615000E3,6.948849738E1 +3.319862000E3,6.664503435E1 +3.320187000E3,6.933008182E1 +3.320443000E3,6.121514242E1 +3.320753000E3,7.017439611E1 +3.321063000E3,7.393277725E1 +3.321329000E3,7.045535337E1 +3.321643000E3,6.985180357E1 +3.321896000E3,7.158196073E1 +3.322168000E3,6.999348148E1 +3.322483000E3,6.872091406E1 +3.322823000E3,6.386396976E1 +3.323116000E3,6.891641311E1 +3.323355000E3,6.790436633E1 +3.323733000E3,6.190629476E1 +3.324010000E3,6.307072034E1 +3.324306000E3,6.459812141E1 +3.324591000E3,6.928529051E1 +3.324846000E3,6.953301961E1 +3.325158000E3,6.946121501E1 +3.325471000E3,6.177266257E1 +3.325739000E3,6.057146439E1 +3.326000000E3,6.021658005E1 +3.326269000E3,6.588088303E1 +3.326536000E3,6.594068529E1 +3.326797000E3,5.957632846E1 +3.327117000E3,5.830018402E1 +3.327415000E3,5.952820917E1 +3.327678000E3,5.996997483E1 +3.327928000E3,6.374276040E1 +3.328204000E3,6.484785648E1 +3.328504000E3,6.253699213E1 +3.328743000E3,6.495848159E1 +3.329001000E3,6.390198219E1 +3.329317000E3,6.107203426E1 +3.329613000E3,6.678300135E1 +3.329901000E3,6.048531373E1 +3.330164000E3,6.806621622E1 +3.330501000E3,6.592361883E1 +3.330795000E3,6.652249790E1 +3.331059000E3,6.079261624E1 +3.331342000E3,7.055285274E1 +3.331620000E3,6.885169705E1 +3.331870000E3,6.676175072E1 +3.332125000E3,6.653456857E1 +3.332410000E3,6.539948315E1 +3.332658000E3,6.741723145E1 +3.332915000E3,5.982571500E1 +3.333236000E3,7.234399288E1 +3.333559000E3,7.555637810E1 +3.333801000E3,7.132946849E1 +3.334053000E3,7.012473325E1 +3.334345000E3,7.083313400E1 +3.334658000E3,6.159204912E1 +3.334951000E3,5.416652771E1 +3.335187000E3,5.331536045E1 +3.335488000E3,5.516853140E1 +3.335780000E3,5.755380245E1 +3.336028000E3,6.034949591E1 +3.336335000E3,5.933559907E1 +3.336577000E3,6.200660494E1 +3.336975000E3,6.752581884E1 +3.337230000E3,6.552308109E1 +3.337509000E3,6.043162012E1 +3.337804000E3,6.346167875E1 +3.338097000E3,5.762665769E1 +3.338354000E3,6.046465836E1 +3.338657000E3,5.841838084E1 +3.338937000E3,5.426549819E1 +3.339182000E3,5.312925890E1 +3.339425000E3,5.904532039E1 +3.339705000E3,5.548841740E1 +3.339970000E3,6.467955136E1 +3.340311000E3,6.518540616E1 +3.340567000E3,6.130157495E1 +3.340843000E3,4.234380604E1 +3.341102000E3,3.685811557E1 +3.341367000E3,5.229521155E1 +3.341631000E3,4.577123603E1 +3.341913000E3,5.522804687E1 +3.342191000E3,7.219670231E1 +3.342497000E3,6.138541536E1 +3.342739000E3,5.883033505E1 +3.342994000E3,5.692990468E1 +3.343272000E3,5.784770175E1 +3.343584000E3,5.851150722E1 +3.343847000E3,7.127137910E1 +3.344137000E3,7.004437015E1 +3.344432000E3,6.719880262E1 +3.344677000E3,6.266500726E1 +3.344966000E3,6.662051616E1 +3.345209000E3,6.259160849E1 +3.345462000E3,6.521765959E1 +3.345762000E3,6.373477950E1 +3.346056000E3,5.976833176E1 +3.346294000E3,5.557373783E1 +3.346597000E3,5.486821605E1 +3.346842000E3,4.854970484E1 +3.347096000E3,6.338774242E1 +3.347415000E3,6.646909489E1 +3.347712000E3,6.370164725E1 +3.347950000E3,6.577012972E1 +3.348257000E3,6.536203326E1 +3.348509000E3,5.777033235E1 +3.348799000E3,6.942121279E1 +3.349070000E3,6.552465655E1 +3.349329000E3,6.400867966E1 +3.349583000E3,5.955829212E1 +3.349911000E3,6.233007104E1 +3.350154000E3,7.360271557E1 +3.350432000E3,7.402471070E1 +3.350716000E3,7.225249055E1 +3.350966000E3,6.654334459E1 +3.351200000E3,6.590758849E1 +3.351507000E3,6.143698167E1 +3.351805000E3,7.197722167E1 +3.352079000E3,6.778594348E1 +3.352307000E3,5.712392879E1 +3.352566000E3,5.659236121E1 +3.352870000E3,5.352359430E1 +3.353127000E3,5.362353429E1 +3.353366000E3,5.964860406E1 +3.353638000E3,7.164177428E1 +3.353890000E3,6.730234717E1 +3.354173000E3,5.336089185E1 +3.354435000E3,4.770751864E1 +3.354689000E3,4.833001031E1 +3.354956000E3,4.464972004E1 +3.355220000E3,6.809720152E1 +3.355493000E3,7.032616040E1 +3.355723000E3,7.137092547E1 +3.356052000E3,7.106236065E1 +3.356287000E3,7.302101107E1 +3.356599000E3,6.868512076E1 +3.356867000E3,7.134905494E1 +3.357133000E3,7.032184319E1 +3.357463000E3,6.484515560E1 +3.357753000E3,5.949029357E1 +3.358081000E3,6.553405106E1 +3.358385000E3,5.460622041E1 +3.358634000E3,4.798111952E1 +3.358902000E3,5.356090224E1 +3.359186000E3,5.091993104E1 +3.359516000E3,5.980463665E1 +3.359805000E3,5.623340998E1 +3.360124000E3,4.885342740E1 +3.360404000E3,4.536632542E1 +3.360660000E3,5.726647509E1 +3.360941000E3,6.266477325E1 +3.361245000E3,5.265432523E1 +3.361521000E3,4.746518361E1 +3.361777000E3,5.341135388E1 +3.362038000E3,5.094337921E1 +3.362292000E3,5.832737886E1 +3.362616000E3,5.247742127E1 +3.363049000E3,5.123926483E1 +3.363313000E3,4.482127206E1 +3.363600000E3,4.813050338E1 +3.363848000E3,5.751744958E1 +3.364157000E3,5.045245795E1 diff --git a/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a2/MyWorld.java b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a2/MyWorld.java new file mode 100644 index 0000000..8ebbe35 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a2/MyWorld.java @@ -0,0 +1,36 @@ +import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot und MouseInfo) + +/** + * Ergänzen Sie hier eine Beschreibung für die Klasse MyWorld. + * + * @author (Ihr Name) + * @version (eine Versionsnummer oder ein Datum) + */ +public class MyWorld extends World +{ + + /** + * Konstruktor für Objekte der Klasse MyWorld + * + */ + public MyWorld() + { + // Erstellt eine neue Welt mit 1200x900 Pixeln + super(1000, 700, 1); + + prepare(); + } + + + /** + * Bereite die Welt für den Programmstart vor. + * Das heißt: Erzeuge die Anfangs-Objekte und füge sie der Welt hinzu. + */ + private void prepare() + { + XYDiagramm d = new XYDiagramm(); + addObject(d,500,350); + + } +} + diff --git a/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a2/Picture.java b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a2/Picture.java new file mode 100644 index 0000000..8df3d55 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a2/Picture.java @@ -0,0 +1,699 @@ +import java.awt.image.*; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.BasicStroke; +import java.util.Vector; +import javax.imageio.*; +import java.io.*; +import java.awt.*; +import javax.swing.*; +import java.util.Random; +import java.awt.geom.AffineTransform; +/** + * + * Bildklasse für die Simulation von Processing-Befehlen + * + * Diese Klasse stellt ein BufferedImage bereit, in das mit Processing-Befehlen gezeichnet + * werden kann. + * Zusätzlich kann ein Bildanzeiger über jede Änderung des Bildes informiert werden, + * um "Zurück"-Befehle zu ermöglichen. Der Bildanzeiger ist entweder eine normale Java + * ScrollPane oder ein Actor aus Greenfoot. + * Die Dokumentation der einzelnen Zeichenmethoden ist der Processing-Reference + * (https://processing.org/reference/ steht unter CC-Lizenz: https://creativecommons.org/) + * entnommen und mit Deepl.com ins Deutsche übersetzt. + * + * @version 1.0 from 23.01.2019 + * @author Thomas Schaller (ZPG Informatik Klasse 9) + */ + +public class Picture{ + + // Einstellungmöglichkeiten für das Zeichnen von Rechtecken und Ellipsen + // RADIUS = Mittelpunkt+Radius wird gegeben, CENTER = Mittelpunkt und Breite/Höhe wird gegeben, + // CORNER = Linke obere Ecke + Breite/Höhe, CORNERS = Linke obere und rechte untere Ecke + public static final int RADIUS = 1; + public static final int CENTER = 2; + public static final int CORNER = 3; + public static final int CORNERS = 4; + + // gespeichertes Bild, + private BufferedImage image; + + // aktuelle Farbeinstellungen + private Color background; + private Color pencolor; + private Color fillcolor; + + // aktuelle Stiftdicke + private double stroke; + + // akkteller Koordinatenmodus von Rechtecken und Ellipsen + private int ellipseMode = CENTER; + private int rectMode = CORNER; + + // aktueller Font + private Font textfont = null; + + // muss ein Bildanzeiger benachrichtigt werden + private PictureViewer observer = null; + private boolean autorefresh = true; + + /** + * Erzeugt ein Bild mit Standardgröße 500x400 + */ + public Picture() { + this(500,400); + } + + /** + * Erzeugt ein Bild der angegeben Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public Picture(int width, int height) { + this(width,height, "D0D0D0"); + } + + /** + * Erzeugt ein Bild aus einer Datei + * @param filename Dateiname des Bildes + */ + public Picture(String filename) { + load(filename); + } + + /** + * Erzeugt ein Bild der angegebenen Größe mit festgelegtem Hintergrund + * @param width Breite des Bildes + * @param height Höhe des Bildes + * @param background Farbe des Hintergrunds + */ + public Picture(int width, int height, String background) { + this.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + this.background = decode(background); + this.pencolor = new Color(0,0,0); + this.stroke = 1; + this.fillcolor = null; + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(this.background); + g.fillRect(0,0,width-1, height-1); + } + + /** + * Legt fest, wer das Bild anzeigt. + * Diese ermöglicht die Benachrichtung des Observers, wenn sich das Bild ändert. + * @param observer Anzeiger des Bildes + */ + + public void setObserver(PictureViewer observer) { + this.observer= observer; + } + + /** + * Direktes Setzen des Bildes (für interne Zwecke) + * @param b Bild, das gespeichert werden soll. + */ + public void setImage(BufferedImage b) { + image = b; + } + + /** + * Direktes Abfragen des Bildes (für interne Zwecke) + * @return Bild, das gerade gespeichert ist. + */ + public BufferedImage getImage() { + return image; + } + + /** + * Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + * Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + * der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu. + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public void size(int width, int height){ + pushImage(); + this.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(background); + g.fillRect(0,0,width-1, height-1); + } + + /** + * Liefert die Breite des Bildes zurück. + * @return Breite des Bildes + */ + public int getWidth() { + return image.getWidth(); + } + + /** + * Liefert die Höhe des Bildes zurück. + * @return Höhe des Bildes + */ + public int getHeight() { + return image.getHeight(); + } + + + /** + * Erzeugt eine Kopie des Bildes und übergibt sie an den Observer (falls existent), damit dieser die Versionen speichern kann + */ + private void pushImage() { + if(observer != null) { + observer.pushImage(); + } + } + + + /** + * Legt fest, ob nach jedem Zeichenbefehl automatisch das Bild auch in + * der Oberfläche aktualisiert wird. Die Einstellung "false" beschleunigt + * das Zeichnen aufwändiger Bilder und verhindert "Flackern". + * Das Neuzeichnen kann durch die Methode "refresh" gezielt ausgelöst werden. + * @param autorefresh true = nach jedem Zeichenbefehl die Anzeige aktualisieren, false= nur durch die Methode refresh neu zeichnen + */ + public void setAutoRefresh(boolean autoRefresh) { + this.autorefresh = autoRefresh; + } + + + /** + * Auch die anzeigenden Klasse wird zum Neuzeichnen aufgefordert. + */ + private void repaint() { + if(observer != null && autorefresh) { + observer.repaint(); + } + } + + /** + * Auch die anzeigenden Klasse wird zum Neuzeichnen aufgefordert. + */ + public void refresh() { + if(observer != null) { + observer.repaint(); + } + } + + // ----------------------------------------- Zeichenfunktionen ----------------------------------------------- + /** + * Löscht den Inhalt des Bildes. + * Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt. + */ + + public void clear(){ + pushImage(); + image = new BufferedImage(image.getWidth(), image.getHeight(), image.getType()); + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(background); + g.fillRect(0,0,image.getWidth()-1, image.getHeight()-1); + repaint(); + } + + /** + * Konvertiert die in einem bestimmten Modus gegebenen Koordinaten in die Java-übliche Links_Oben_Breite_Höhe Version + * Die Änderungen werden direkt im Array vorgenommen + * @param coord Array mit vier Koordinateneinträgen im gegebenen Modus + * @param mode Modus der Koordinaten (CORNER, CORNERS, RADIUS oder CENTER) + */ + private void convert(int[] coord, int mode) { + switch(mode) { + case CORNER: break; + case CORNERS: coord[2] -= coord[0]; coord[3] -= coord[1]; break; + case RADIUS: coord[2] *= 2; coord[3] *=2; + case CENTER: coord[0] -= coord[2]/2; coord[1] -= coord[3]/2; + } + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + * Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + * Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void rectMode(int mode) { + rectMode = mode; + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + * Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + * Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als Breite und Höhe der Form. + * ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void ellipseMode(int mode) { + ellipseMode = mode; + } + + + + /** + * Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + * Um eine Linie einzufärben, verwenden Sie die {@link #stroke(int, int, int) stroke()} Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + * Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + * {@link #strokeWeight(double) strokeWeight()} geändert werden. + * @param x1 x-Koordinate des 1. Punktes + * @param y1 y-Koordinate des 1. Punktes + * @param x2 x-Koordinate des 2. Punktes + * @param y2 y-Koordinate des 2. Punktes + */ + public void line(int x1, int y1, int x2, int y2) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + if (stroke > 0) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawLine(x1, y1, x2, y2); + } + repaint(); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, rectMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillRect(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawRect(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, ellipseMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillOval(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawOval(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + int px[] = {x1, x2, x3}; + int py[] = {y1, y2, y3}; + polygon(px, py); + + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + + int px[] = {x1, x2, x3, x4}; + int py[] = {y1, y2, y3, y4}; + polygon(px, py); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + + public void polygon(int[] x, int[] y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(fillcolor != null) { + + g.setColor(fillcolor); + g.fillPolygon(x,y, y.length); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawPolygon(x, y, x.length); + } + repaint(); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + ellipse(x,y,1, 1); + + } + + // ----------------------------------------- Schriftdarstellung ----------------------------------------------- + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param s Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String s, int x, int y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(pencolor != null) { + g.setColor(fillcolor); + g.setStroke(new BasicStroke((float) stroke)); + g.setFont(textfont); + g.drawString(s, x, y); + } + repaint(); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + this.textfont = font; + } + + + // ----------------------------------------- Farbfestlegungen ----------------------------------------------- + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(String color) { + try{ + return new Color( + Integer.valueOf( color.substring( 0, 2 ), 16 ), + Integer.valueOf( color.substring( 2, 4 ), 16 ), + Integer.valueOf( color.substring( 4, 6 ), 16 ) ); + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(int color) { + try{ + if(color >=0 && color < 256) { + return new Color(color,color,color); + } else { + int r = color / 0x010000 % 0xFF; + int g = color / 0x000100 % 0xFF; + int b = color % 0xFF; + System.out.println(""+r+","+g+","+b); + return new Color(r, g, b ); + } + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + this.pencolor = decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + this.pencolor=decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + this.pencolor = new Color(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + this.pencolor = null; + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + this.stroke = width; + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + this.fillcolor = decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + this.fillcolor=decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + this.fillcolor = new Color(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + this.fillcolor = null; + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + if(c < 256) { + this.background=new Color(c,c,c); + } else { + int r = c / 0x010000; + int g = c / 0x000100 % 0xFF; + int b = c % 0xFF; + this.background= new Color(r, g, b ); + } + + this.clear(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + this.background=new Color(r,g,b); + this.clear(); + } + + +// ----------------------------------------- Dateioperationen ----------------------------------------------- + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + try{ + this.image = ImageIO.read(new File(filename)); + this.background = decode("D0D0D0"); + this.pencolor = new Color(0,0,0); + this.fillcolor = null; + this.stroke = 1; + this.repaint(); + + } catch(Exception e) { + System.out.println("Fehler beim Einlesen der Bilddatei"); + } + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + try{ + String[] fn = filename.split("\\."); + if (fn.length== 1) { + ImageIO.write(image, "PNG", new File(filename+".png")); + } else { + + if (fn.length == 2 && (fn[1].toUpperCase().equals("PNG") || + fn[1].toUpperCase().equals("GIF"))){ + ImageIO.write(image, fn[1], new File(filename)); + }else { + System.out.println("Unbekanntes Bildformat"); + } + } + + } catch(Exception e) { + System.out.println("Fehler beim Speichern"); + } + } + + +// ----------------------------------------- Sonstiges ----------------------------------------------- + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + + public Color[][] getPixelArray() { + Color[][] pixel = new Color[image.getWidth()][image.getHeight()]; + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + pixel[x][y] = new java.awt.Color(image.getRGB(x,y)); + } + } + return pixel; + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + size(pixel.length,pixel[0].length); + Graphics2D g = (Graphics2D) image.getGraphics(); + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + g.setColor(pixel[x][y]); + g.fillRect(x, y, 1, 1); + } + } + repaint(); + } + + /** + * Hilfsfunktion zum Verzögern der Ausgabe + * @param millis Wartezeit in Millisekunden + */ + public void delay(int millis) { + try{ + Thread.sleep(millis); + + } catch(Exception e) { + + } + + } + + + +} diff --git a/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a2/PictureViewer.java b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a2/PictureViewer.java new file mode 100644 index 0000000..ecbb521 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a2/PictureViewer.java @@ -0,0 +1,499 @@ +import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot und MouseInfo) +import java.awt.image.*; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.BasicStroke; +import java.awt.Font; +import java.util.Vector; +import java.awt.Color; +import javax.imageio.*; +import java.io.*; + +/** + * Der PictureViewer ist ein Actor, der in der Lage ist ein + * Objekt der Klasse Picture anzuzeigen. Zusätzlich können + * mehrere Verarbeitungsschritte gespeichert werden, um ein + * "zurück"-Funktion zu ermöglichen. + * + * @author Thomas Schaller + * @version V1.0 vom 10.02.2019 + */ +public class PictureViewer extends Actor +{ + public static final int FIT = -1; + public static final int NORMAL = 1; + + private static final int ANZ_BACK = 0; + + private double zoom; + protected Picture picture = null; + private Vector history; + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der Größe 500x400 + */ + public PictureViewer() { + this(500,400); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public PictureViewer(int width, int height) { + this(width,height, "D0D0D0"); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + * @param background Farbe des Hintergrunds als HEX-String (z.B. "FF3A45") + */ + public PictureViewer(int width, int height, String background) { + picture = new Picture(width,height, background); + picture.setObserver(this); + this.history = new Vector(); + this.zoom = NORMAL; + repaint(); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild aus einer Bilddatei + * @param filename Name des Bildes + */ + public PictureViewer(String filename) { + picture = new Picture(filename); + picture.setObserver(this); + this.history = new Vector(); + this.zoom = NORMAL; + repaint(); + } + + /** + * Speichert das übergebene Bild in der History. + * @param b zu speicherndes Bild + */ + public void pushImage() { + if( this.ANZ_BACK > 0) { + if(history.size() == this.ANZ_BACK) { + history.removeElementAt(0); + } + + BufferedImage b = new BufferedImage(picture.getWidth(), picture.getHeight(), picture.getImage().getType()); + Graphics g = b.getGraphics(); + g.drawImage(picture.getImage(), 0, 0, null); + g.dispose(); + + history.add(b); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + private void popImage() { + int anz = history.size(); + if(anz>0) { + BufferedImage i = history.get(anz-1); + history.removeElementAt(anz-1); + picture.setImage(i); + repaint(); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + public void back() { + popImage(); + } + + /** + * Setzt den Zoom-Faktor für das Bild. + * Als Zoomfaktor sind auch die Konstanten Bildanzeiger.FIT (auf Bildschirmgröße zoomen) und Bildanzeiger.NORMAL (100%) möglich. + * @param factor Zoomfaktor (1.0 = 100%). + */ + public void setZoom(double zoom) { + this.zoom = zoom; + repaint(); + } + + /** + * Setzt die automatische Neuanzeige des Bildes. + * Mit dieser Methode kann man einstellen, ob nach jedem Zeichenbefehl + * die Anzeige auf dem Bildschirm aktualisiert werden soll. Bei sehr + * vielen Zeichenbefehlen wird die Ausgabe dadurch sehr langsam. Es reicht + * eine Anzeige am Ende der Zeichenbefehle. Rufen Sie dann für das Neuzeichnen + * die Methode refresh() auf. + * @param autoRefresh true, wenn nach jedem Zeichenbefehl die Anzeige aktualisiert werden soll. + */ + public void setAutoRefresh(boolean autoRefresh) { + picture.setAutoRefresh(autoRefresh); + } + + /** + * Sorgt für die Aktualisierung der Bildschrimanzeige. Das aktuelle Bild + * wird dadurch angezeigt. Durch Einstellung von autoRefresh kann die + * Anzeige automatisiert werden. + */ + public void refresh() { + repaint(); + } + + /** + * Setzt das angezeigt Bild neu und beachtet dabei den Zoomfaktor. + */ + public void repaint() { + double faktor = zoom; + + if (zoom == FIT) { + double faktorw = (double) this.getWorld().getWidth() / picture.getWidth(); + double faktorh = (double) this.getWorld().getHeight() / picture.getHeight(); + faktor = Math.min(faktorw, faktorh); + } + int gfi_width = (int) (picture.getWidth()*faktor); + int gfi_height = (int) (picture.getHeight()*faktor); + + setImage(new GreenfootImage(gfi_width, gfi_height)); + Graphics2D g = (Graphics2D) this.getImage().getAwtImage().getGraphics(); + g.drawImage(picture.getImage(),0,0,gfi_width, gfi_height, 0, 0, picture.getWidth(), picture.getHeight(), null); + g.setColor(new java.awt.Color(0,0,0)); + g.setStroke(new BasicStroke((float) 1)); + g.drawRect(0,0,gfi_width-1, gfi_height-1); + + } + + // Wrappermethoden + /** + * Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + * Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + * der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu. + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public void size(int width, int height){ + picture.size(width, height); + } + + /** + * Liefert die Breite des Bildes zurück. + * @return Breite des Bildes + */ + public int getImageWidth() { + return picture.getWidth(); + } + + /** + * Liefert die Höhe des Bildes zurück. + * @return Höhe des Bildes + */ + public int getImageHeight() { + return picture.getHeight(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + picture.background(c); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + picture.background(r,g,b); + } + + /** + * Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + * Um eine Linie einzufärben, verwenden Sie die {@link #stroke(int, int, int) stroke()} Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + * Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + * {@link #strokeWeight(double) strokeWeight()} geändert werden. + * @param x1 x-Koordinate des 1. Punktes + * @param y1 y-Koordinate des 1. Punktes + * @param x2 x-Koordinate des 2. Punktes + * @param y2 y-Koordinate des 2. Punktes + */ + public void line(int x1, int y1, int x2, int y2) { + picture.line(x1,y1,x2,y2); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + picture.rect(a,b,c,d); + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + picture.ellipse(a,b,c,d); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + picture.triangle(x1,y1,x2,y2,x3,y3); + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + picture.quad(x1,y1,x2,y2,x3,y3,x4,y4); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + public void polygon(int[] x, int[] y) { + picture.polygon(x,y); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + picture.point(x,y); + + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + * Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + * Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void rectMode(int mode) { + picture.rectMode(mode); + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + * Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + * Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als Breite und Höhe der Form. + * ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void ellipseMode(int mode) { + picture.ellipseMode(mode); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + picture.stroke(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + picture.noStroke(); + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + picture.strokeWeight(width); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + picture.fill(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + picture.noFill(); + } + + /** + * Löscht den Inhalt des Bildes. + * Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt. + */ + public void clear(){ + picture.clear(); + } + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + picture.load(filename); + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + picture.save(filename); + } + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param t Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String t, int x, int y) { + picture.text(t,x,y); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + picture.textFont(font); + } + + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + public Color[][] getPixelArray() { + return picture.getPixelArray(); + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + picture.setPixelArray(pixel); + } + + +} + diff --git a/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a2/Table.java b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a2/Table.java new file mode 100644 index 0000000..ee5a211 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a2/Table.java @@ -0,0 +1,894 @@ +/** + * Die Klasse Table vereinfacht den Zugriff auf CSV-Dateien. + * Die Klassen Table und TableRow ermöglichen einen einfachen Zugriff auf tabellenbasierte + * Dokumente. + * + * @author Thomas Schaller + * @version 1.0 vom 01.02.2019 + */ + +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.ArrayList; +import java.io.*; +import java.util.Scanner; + +import org.jdom.Document; +import org.jdom.Element; +import org.jdom.Attribute; +import org.jdom.JDOMException; +import org.jdom.input.SAXBuilder; +import org.jdom.output.XMLOutputter; +import org.jdom.output.Format; + +public class Table +{ + // Standardtrennzeichen für Spalten + private static final char DEFAULT_SEPARATOR = ';'; + // Standardmarkierung für Texte + private static final char DEFAULT_QUOTE = '"'; + // Standardtrennzeichen für Dezimalzahlen + private static final char DEFAULT_COMMA = ','; + + // mögliche Spaltentypen + private static final String UNKNOWN ="UNKOWN"; + private static final String INT = "INTEGER"; + private static final String DOUBLE = "DOUBLE"; + private static final String FLOAT = "FLOAT"; + + // interne Verwaltung des Dokuments als JDOM-Document-Objekt + private Document doc; + // Verweis auf Element für Kopfzeile + private Element header; + // Ende Attribute + + /** + * Erzeugt leeres Tabellen-Dokument. + */ + public Table() { + this.doc = new Document(); + doc.setRootElement(new Element("CSV-Data")); + this.header = new Element("Header"); + doc.getRootElement().addContent(header); + } + + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei und erstellt ein Tabellenobjekt mit seinen Werten. + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public Table(String filename, String options, char separator, char quote) { + loadCSV(filename, options, separator, quote); + } + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei und erstellt ein Tabellenobjekt mit seinen Werten (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + */ + public Table(String filename, String options) { + loadCSV(filename, options); + } + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei ohne Kopfzeile und erstellt ein Tabellenobjekt mit seinen Werten (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public Table(String filename) { + loadCSV(filename); + } + + // Anfang Methoden + /** + * Liest den Inhalt einer CSV-Datei ohne Kopfzeile (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public void loadCSV(String filename) { + loadCSV(filename, ""); + } + + /** + * Liest den Inhalt einer CSV-Datei (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + */ + public void loadCSV(String filename, String options) { + loadCSV(filename, options, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** + * Liest den Inhalt einer CSV-Datei. + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public void loadCSV(String filename, String options, char separator, char quote) { + doc = new Document(); + doc.setRootElement(new Element("CSV-Data")); + header = new Element("Header"); + doc.getRootElement().addContent(header); + try { + File f = new File(filename); + Scanner scanner = new Scanner(new File(filename)); + if(options.toLowerCase().contains("header") && scanner.hasNext()) { + List entries = parseLine(scanner.nextLine(), separator, quote); + int i= 0; + for(String s : entries) { + Element entry = new Element("Column"); + header.addContent(entry); + entry.setText(s); + entry.setAttribute("type", "unknown"); + i++; + } + } + + List cols = header.getChildren(); + + while (scanner.hasNext()) { + Element line = new Element("Row"); + doc.getRootElement().addContent(line); + List entries = parseLine(scanner.nextLine(), separator, quote); + int i= 0; + + for(String s : entries) { + + if(i==cols.size()) { + Element entry = new Element("Column"); + entry.setAttribute("type", "unknown"); + header.addContent(entry); + cols = header.getChildren(); + } + + Element entry = new Element("Entry"); + entry.setText(s); + line.addContent(entry); + i++; + } + } + scanner.close(); + + } catch (Exception e) { + System.out.println("Fehler beim Lesen der CSV-Datei"); + } + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei ohne Kopfzeile (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public void saveCSV(String filename) { + saveCSV(filename, ""); + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthalten, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile haben soll, + * dann lassen Sie einfach die Option "header" weg. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile haben soll. + * @param filename Dateiname der CSV-Datei. + */ + public void saveCSV(String filename, String options) { + saveCSV(filename, options, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei. + * Wenn die Datei eine Kopfzeile enthalten, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile haben soll, + * dann lassen Sie einfach die Option "header" weg. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile haben soll. + * @param filename Dateiname der CSV-Datei. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public void saveCSV(String filename, String options, char separator, char quote){ + try{ + File f = new File(filename); + PrintStream outputFile = new PrintStream (f); + System.out.println("Speicher in : "+f.getAbsolutePath()); + List columns = header.getChildren(); + String sq = ""+quote; + String ss = ""+separator; + if(quote =='"') sq = "\""; + if(separator =='"') ss = "\""; + + if(options.toLowerCase().contains("header")) { + String h = ""; + for(Element c : columns) { + h += ss + sq + c.getText()+sq; + } + outputFile.println(h.substring(1)); + } + for(int i = 0; i parseLine(String cvsLine) { + return parseLine(cvsLine, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** HIlfsfunktion für die Analyse einer Dateizeile + * @param cvsLine Zeile aus der Datei + * @param sparator Trennzeichen für die Spalten + * @return Liste von String für die einzelnen Spalten + */ + private List parseLine(String cvsLine, char separator) { + return parseLine(cvsLine, separator, DEFAULT_QUOTE); + } + + /** HIlfsfunktion für die Analyse einer Dateizeile + * @param cvsLine Zeile aus der Datei + * @param sparator Trennzeichen für die Spalten + * @param customQuote Kennung für Strings + * @return Liste von String für die einzelnen Spalten + */ + private List parseLine(String cvsLine, char separator, char customQuote) { + + List result = new ArrayList<>(); + + //if empty, return! + if (cvsLine == null && cvsLine.isEmpty()) { + return result; + } + + //ggf. Default-Value laden + if (customQuote == ' ') { + customQuote = DEFAULT_QUOTE; + } + + if (separator == ' ') { + separator = DEFAULT_SEPARATOR; + } + + StringBuffer curVal = new StringBuffer(); + boolean inQuotes = false; + boolean startCollectChar = false; + boolean doubleQuotesInColumn = false; + + char[] chars = cvsLine.toCharArray(); + + for (char ch : chars) { + + if (inQuotes) { // aktueller Text ist in Quotes eingeschlossen + startCollectChar = true; + + if (ch == customQuote) { // Quotes werden beendet, aber Achtung bei "" => Metazeichen + inQuotes = false; + if (ch == '\"') { + doubleQuotesInColumn = true; + } + + } else { + + if (ch == '\"' && !doubleQuotesInColumn) { + doubleQuotesInColumn = true; + } else { + curVal.append(ch); + doubleQuotesInColumn = false; + } + + } + } else { + if (ch == customQuote) { + + inQuotes = true; + + //Fixed : allow "" in empty quote enclosed + if (ch == '\"'){ + if(doubleQuotesInColumn) { + curVal.append('"'); + doubleQuotesInColumn = false; + } else doubleQuotesInColumn = true; + + + } + } + else { + doubleQuotesInColumn = false; + if (ch == separator) { + + result.add(curVal.toString()); + + curVal = new StringBuffer(); + startCollectChar = false; + + } else if (ch == '\r') { + //ignore LF characters + continue; + } else if (ch == '\n') { + //the end, break! + break; + } else { + curVal.append(ch); + } + } + } + + } + result.add(curVal.toString()); + return result; + } + + /** + * Sucht die Nummer einer durch Namen gegebenen Spalte. + * @param name Name der Spalte + * @return Nummer der Spalte + */ + + private int findColumnNumber(String name) { + List columns = header.getChildren(); + int i = 0; + for(Element c : columns) { + if (c.getText().toLowerCase().equals(name.toLowerCase())) { + return i; + + } + i++; + } + return -1; + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an. + */ + public void addColumn() { + Element entry = new Element("Column"); + entry.setAttribute("type", Table.UNKNOWN); + header.addContent(entry); + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an und benennt sie. + * @param title Bezeichnung der Spalte + */ + public void addColumn(String title) { + addColumn(); + Element nc = ((List)(header.getChildren())).get(header.getChildren().size()-1); + nc.setText(title); + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an und benennt und typisiert sie. + * @param title Bezeichnung der Spalte + * @param type Typ der Spalte (UNKNOWN, DOUBLE, INTEGER, FLOAT) + */ + public void addColumn(String title, String type) { + addColumn(title); + Element nc = ((List)(header.getChildren())).get(header.getChildren().size()-1); + nc.setAttribute("type", type); + } + + /** + * Löscht eine Spalte. + * @param i Nummer der Spalte. + */ + public void removeColumn(int i) { + List lines = doc.getRootElement().getChildren(); + for(Element l : lines) { + if(l.getChildren().size()>i) l.removeContent(i); + } + } + + /** + * Löscht eine Spalte + * @param name Name der Spalte + */ + public void removeColumn(String name) { + try{ + removeColumn(findColumnNumber(name)); + } catch(Exception e) { System.out.println("Unbekannter Spaltenname");} + } + + /** + * Liefert die Anzahl der Spalten in der Tabelle + * @return Anzahl der Spalten + */ + public int getColumnCount() { + return header.getChildren().size(); + } + + /** + * Liefert die Anzahl der Zeilen in der Tabelle + * @return Anzahl der Zeilen + */ + public int getRowCount() { + return doc.getRootElement().getChildren().size()-1; + } + + /** + * Löscht alle Zeilen der Tabelle. + * Die Spaltenüberschriften und Typen bleiben erhalten. + */ + public void clearRows() { + doc.getRootElement().removeChildren("Row"); + } + + /** + * Fügt eine neue Zeile an das Ende der Tabelle an. + * @return ein TableRow-Objekt für diese neue Zeile + */ + public TableRow addRow() { + Element row = new Element("Row"); + doc.getRootElement().addContent(row); + return new TableRow(doc, row); + } + + /** + * Löscht eine Zeile + * @param i Nummer der Zeile + */ + public void removeRow(int i) { + if(i rows = doc.getRootElement().getChildren(); + return new TableRow(doc, rows.get(i+1)); + } + return null; + } + + /** + * Liefert die ganze Tabelle als Array von TableRow-Objekten + * @return Array von TableRow-Objekten + */ + public TableRow[] rows() { + TableRow[] rows = new TableRow[getRowCount()]; + for(int i = 0; i < getRowCount(); i++) { + rows[i] = getRow(i); + } + return rows; + } + + /** + * Liefert den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param column Spaltennummer + * @return Wert der Zelle + */ + public int getInt(int row, int column) { + return getRow(row).getInt(column); + } + + /** + * Liefert den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param name Name der Spalte + * @return Wert der Zelle + */ + public int getInt(int row, String name) { + return getRow(row).getInt(name); + } + + /** + * Setzt den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param column Spaltennummer + * @param value neuer Wert der Zelle + */ + public void setInt(int row, int column,int value) { + getRow(row).setInt(column, value); + } + + /** + * Setzt den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(int row, String name, int value) { + getRow(row).setInt(name, value); + } + + /** + * Liefert alle Werte einer Zeile als Integer-Array. + * @param row Nummer der Zeile + * @return int-Array, dass alle Werte der Zeile enthält + */ + public int[] getIntRow(int row) { + try{ + TableRow trow = getRow(row); + int anz = getColumnCount(); + int[] r = new int[anz]; + for(int i=0; i) (header.getChildren())).get(i).getText(); + } else { + return ""; + } + } + + /** + * Liefert die Nummer einer Spalte + * @param name Name der Spalte + * @return Nummer der Spalte + */ + public int getColumn(String name) { + List columns = header.getChildren(); + int i = 0; + while (i < columns.size()) { + if (columns.get(i).getText().toLowerCase().equals(name.toLowerCase())) { + return i; + } + i++; + } // end of while + return -1; + } + + + /** + * Erzeugt eine neue Zeile mit i Spalten + * Wenn bisher nicht genügend Spalten vorhanden sind, werden automatisch neue Spalten hinzugefügt (auch zum Header) + * @param i Anzahl der Spalten + */ + private Element buildRow(int i) { + List columns = header.getChildren(); + Element entry=null; + for(int j=0; j<=i; j++) { + + if(j==columns.size()) { + Element h = new Element("Column"); + h.setAttribute("type", "unknown"); + header.addContent(h); + columns = header.getChildren(); + } + if(j==current.getChildren().size()) { + entry = new Element("Entry"); + current.addContent(entry); + + } + + } + return entry; + + } + + /** + * Erzeugt eine neue Zeile. + * Es werden genügend Spalten erzeugt, dass ein Wert in Spalte "name" eingetragen werden kann + * @param name Name der Spalte + */ + private Element buildRow(String name) { + List columns = header.getChildren(); + int i = 0; + for(Element c: columns) { + + if(c.getText().toLowerCase().equals(name.toLowerCase())) { + return buildRow(i); + } + i++; + } + return null; + + } + + /** + * Liefert den Wert einer Zelle als String + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public String getString(int i) { + if(i >= current.getContent().size()) return ""; + Element e = (Element) current.getContent(i) ; + if(e!=null) { + return e.getText(); + } else { + return ""; + } + } + + /** + * Liefert den Wert einer Zelle als String + * @param name Name der Spalte + * @return Wert der Zelle + */ + public String getString(String name) { + return getString(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als String + * @param i Nummer der Spalte + * @param text neuer Wert der Zelle + */ + public void setString(int i, String text) { + + Element e = buildRow(i); + if(e!=null) e.setText(text); + } + + /** + * Setzt den Wert einer Zelle als String + * @param name Name der Spalte + * @param text neuer Wert der Zelle + */ + public void setString(String name, String text) { + Element e = buildRow(name); + if(e!=null) e.setText(text); + } + + + /** + * Liefert den Wert einer Zelle als Int-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public int getInt(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Integer.parseInt(e.getText()); + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Int-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public int getInt(String name) { + return getInt(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Int-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(int i,int value) { + + Element e = buildRow(i); + if(e!=null) e.setText(""+value); + } + + /** + * Setzt den Wert einer Zelle als Int-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(String name, int value) { + Element e = buildRow(name); + if(e!=null) e.setText(""+value); + } + + /** + * Liefert den Wert einer Zelle als Float-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public float getFloat(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Float.parseFloat(e.getText().replace(",",".")); + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Float-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public float getFloat(String name) { + return getFloat(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Float-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setFloat(int i,float value) { + + Element e = buildRow(i); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Setzt den Wert einer Zelle als Float-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setFloat(String name, float value) { + Element e = buildRow(name); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Liefert den Wert einer Zelle als Double-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public double getDouble(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Double.parseDouble(e.getText().replace(",",".")); + + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Double-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public double getDouble(String name) { + return getDouble(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Double-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setDouble(int i,double value) { + + Element e = buildRow(i); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Setzt den Wert einer Zelle als Double-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setDouble(String name, double value) { + Element e = buildRow(name); + if(e!=null) e.setText(format.format(value)); + } + +} diff --git a/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a2/XML.java b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a2/XML.java new file mode 100644 index 0000000..c06c490 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a2/XML.java @@ -0,0 +1,637 @@ +/** + * Klasse zum Vereinfachten Zugriff auf XML-Dokumente + * Diese Klasse ist für den Einsatz in der Schule gedacht und soll den Schülern + * einen einfachen Zugriff auf XML-Dokumente ermöglichen. Die zur Verfügung + * stehenden Befehle sind wie in Processing realisiert. + * Dabei ist jeder Teilbaum des Dokuments wieder als XML-Objekt zugreifbar, das + * intern auf die gleiche XML-Dokumentstruktur zugreift. + * Dies ermöglicht bei unsachgemäßem Gebrauch die XML-Struktur zu zerstören. Im + * normalen Gebrauch sollte dies aber nicht relevant sein. + * + * Benötigt: jdom-1.1.3.jar + + * @author Thomas Schaller + * @version 1.0 vom 31.01.2019 + */ +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.ArrayList; +import java.io.*; + +import org.jdom.Document; +import org.jdom.Element; +import org.jdom.Attribute; +import org.jdom.JDOMException; +import org.jdom.input.SAXBuilder; +import org.jdom.output.XMLOutputter; +import org.jdom.output.Format; + +public class XML { + // Anfang Attribute + // XML-Dokumentstruktur + private Document doc; + // Zeiger auf das aktuelle Element + private Element current; + // Ende Attribute + + /** + * Erzeugt ein leeres XMLDokument + */ + public XML() { + this.doc = new Document(); + this.current = null; + } + + /** + * Erzeugt ein XML-Dokument aus einer Datei + * @param filename Dateiname der XML-Datei + */ + public XML(String filename) { + loadXML(filename); + } + + /** + * interner Konstruktor, um ein XML Objekt zu erzeugen, das auf einen bestimmten Knoten verweist + * @param doc die XML-Dokumentstruktur + * @param current Zeiger auf das aktuelle Element + */ + private XML(Document doc, Element current) { + this.doc = doc; + this.current = current; + } + + // Anfang Methoden + /** Öffnet das durch den Dateinamen gegebene Dokument + * @param filename Dateiname des XML-Files + */ + public void loadXML(String filename) { + doc = null; + File f = new File(filename); + + try { + // Das Dokument erstellen + SAXBuilder builder = new SAXBuilder(); + doc = builder.build(f); + + } catch (JDOMException e) { + e.printStackTrace(); + + } catch (IOException e) { + e.printStackTrace(); + } + // Zeiger im Baum auf Root-Element + current = doc.getRootElement(); + } + + /** Speichert den XML-Baum im angegebenen Dateinamen + * @param filename Dateiname des XML-Files + */ + public void saveXML(String filename) { + try { + // new XMLOutputter().output(doc, System.out); + XMLOutputter xmlOutput = new XMLOutputter(); + + // display nice nice + xmlOutput.setFormat(Format.getPrettyFormat()); + File f = new File(filename); + FileOutputStream outputFile = new FileOutputStream(f); + System.out.println("Speicher in : "+f.getAbsolutePath() ); + xmlOutput.output(doc, outputFile); + outputFile.close(); + System.out.println("File Saved!"); + } catch (IOException io) { + System.out.println(io.getMessage()); + } + + } + + //----------------------------------------------- Zeigerbewegungen -------------------------------------------------- + /** + * liefert ein XML-Objekt, das auf den Vaterknoten des aktuellen Elements zeigt. + * @return Vater des aktuellen Objekts. + */ + public XML getParent() { + if(current != null) { + Element parent = current.getParentElement(); + if (parent == null) { + return null; + } else { + return new XML(doc, parent); + } + } + return null; + } + + /** + * Überprüft, ob das Element irgendwelche Kinder hat oder nicht, und gibt das Ergebnis als boolean zurück. + * @return true, wenn Kinder vorhanden sind, sonst false + */ + public boolean hasChildren() { + if (current == null) { + return doc.hasRootElement(); + } else { + return current.getChildren().size()>0; + } + } + + /** + * Ermittelt die Namen aller Kinder des Elements und gibt die Namen als ein Array von Strings zurück. + * Dies ist dasselbe wie das Durchlaufen und Aufrufen von getName() auf jedem untergeordneten Element einzeln. + * @return Liste aller Namen der Kinder + */ + public String[] listChildren() { + if (current == null) { + if(doc.hasRootElement()) { + String[] names = new String[0]; + names[0] = doc.getRootElement().getName(); + return names; + } else { + return null; + } + } else { + List ch_element = current.getChildren(); + String[] names = new String[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + names[i] = ch_element.get(i).getName(); + } + return names; + } + } + + /** + * Liefert alle Kinder des Elements als Array von XML-Objekten. + * @return Array der Kinder als XML-Objekte + */ + public XML[] getChildren() { + if (current == null) { + if(doc.hasRootElement()) { + XML[] ch_xml = new XML[1]; + ch_xml[0] = new XML(doc, doc.getRootElement()); + return ch_xml; + } else { + return null; + } + } else { + List ch_element = current.getChildren(); + XML[] ch_xml = new XML[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + ch_xml[i] = new XML(doc, ch_element.get(i)); + } + return ch_xml; + } + } + + /** + * Liefert bestimmte Kinder des Elements als Array von XML-Objekten. + * Die Methode gibt dabei alle Kinder zurück, die dem angegebenen Namen entsprechen. + * @param name Name der gesuchten Kind-Objekte + * @return Array der Kinder als XML-Objekte + */ + public XML[] getChildren(String name) { + if (current == null) { + if(doc.hasRootElement()) { + XML[] ch_xml = new XML[1]; + ch_xml[0] = new XML(doc, doc.getRootElement()); + if(doc.getRootElement().getName().equals(name)){ + return ch_xml; + } else { + return null; + } + } else { + return null; + } + } else { + List ch_element = current.getChildren(name); + XML[] ch_xml = new XML[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + ch_xml[i] = new XML(doc, ch_element.get(i)); + } + return ch_xml; + } + } + + /** + * Liefert das erste Kind des Elements mit einem bestimmten Namen. + * Die Methode gibt das erste Kind zurück, das dem angegebenen Namen entsprechen. + * @param name Name des gesuchten Kind-Objektes + * @return Kind als XML-Objekt + */ + + public XML getChild(String name) { + if (current == null) { + Element e = doc.getRootElement(); + if (e.getName().equals(name)) { + return new XML(doc, e); + } else { + return null; + } + } else { + String[] names = name.split("/"); + Element e = current; + int i = 0; + while(i < names.length) { + e = e.getChild(names[i]); + if (e==null) return null; + i++; + } + return new XML(doc, e); + } + } + + /** + * Liefert das i. Kind des Elements. + * Die Methode gibt das i. Kind des aktuellen Elements zurück. + * @param i Nummer des Kindes + * @return Kind als XML-Objekt + */ + public XML getChild(int i) { + if (current == null) { + return new XML(doc, doc.getRootElement()); + } else { + List ch_element = current.getChildren(); + if (i>=ch_element.size()) return null; + return new XML(doc, ch_element.get(i)); + } + } + + //--------------------------------------------------- Methoden für das aktuelle Element ------------------------------------------------- + /** + * Frage den Namen des aktuellen Elements ab + * @return Namen des Elements + */ + public String getName() { + if (current==null) return ""; + return current.getName(); + } + + /** + * Setze den Namen des aktuellen Elements. + * @param name Neuer Name des Elements + */ + public void setName(String name) { + if (current==null) return; + current.setName(name); + } + + /** + * liefert die Anzahl der Attribute eines Elements. + * @return Anzahl des Attribute + */ + public int getAttributeCount() { + if (current == null) return 0; + return current.getAttributes().size(); + } + + /** + * liefert zurück, ob das aktuelle Element Attribute hat . + * @return true, wenn es Attribute gibt + */ + public boolean hasAttribute() { + if (current == null) return false; + return current.getAttributes().size()>0; + } + + /** + * Ruft alle Attribute des angegebenen Elements ab und gibt sie als Array von Strings zurück. + * @return Liste der Attributnamen + */ + public String[] listAttributes() { + if (current == null) return null; + List attr = current.getAttributes(); + String[] names = new String[attr.size()]; + for(int i=0; i < attr.size() ; i++) { + names[i] = attr.get(i).getName(); + } + return names; + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs + */ + public String getString(String attribute) { + if (current==null) return ""; + return current.getAttributeValue(attribute); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs + */ + public String getString(String attribute, String defaultValue) { + if (current==null) return defaultValue; + return current.getAttributeValue(attribute,defaultValue); + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param text neuer Wert des Attributs + */ + public void setString(String attribute, String text) { + if (current==null) return; + current.setAttribute(attribute, text); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Integer-Zahl + */ + public int getInt(String attribute) { + if (current==null) return 0; + try{ + int i = Integer.parseInt(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als Integer-Zahl + */ + public int getInt(String attribute, int defaultValue) { + if (current==null) return defaultValue; + try{ + int i = Integer.parseInt(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setInt(String attribute, int value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Float-Zahl + */ + public float getFloat(String attribute) { + if (current==null) return 0; + try{ + float i = Float.parseFloat(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als Float-Zahl + */ + public float getFloat(String attribute, float defaultValue) { + if (current==null) return defaultValue; + try{ + float i = Float.parseFloat(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setFloat(String attribute, float value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Double-Zahl + */ + public double getDouble(String attribute) { + if (current==null) return 0; + try{ + double i = Double.parseDouble(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + +/** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als double-Zahl + */ + public double getDouble(String attribute, double defaultValue) { + if (current==null) return defaultValue; + try{ + double i = Double.parseDouble(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setDouble(String attribute, double value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt den Inhalt/Text des aktuellen Elements ab + * @return Inhalt des Elements + */ + public String getContent() { + if ( current==null) return ""; + + return current.getText(); + } + + /** + * Fragt den Inhalt/Text des aktuellen Elements ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardtext + * @return Inhalt des Elements + */ + public String getContent(String defaultValue) { + if ( current==null) return defaultValue; + String t = current.getText(); + if(t.equals("")) t = defaultValue; + return t; + } + + /** + * Setzt den Inhalt/Text des aktuellen Elements + * @param text Neuer Inhalt des Elements + */ + public void setContent(String text) { + if ( current==null) return; + current.setText(text); + } + + + /** + * Fragt den Inhalt des aktuellen Elements als Integerzahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ public int getIntContent(int defaultValue) { + if ( current==null) return defaultValue; + try{ + int i = Integer.parseInt(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Integerzahl ab + * @return Inhalt des Elements + */ + public int getIntContent() { + if ( current==null) return 0; + try{ + int i = Integer.parseInt(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setIntContent(int value) { + if ( current==null) return; + current.setText(""+value); + } + + + /** + * Fragt den Inhalt des aktuellen Elements als Floatzahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ + public float getFloatContent(float defaultValue) { + if ( current==null) return defaultValue; + try{ + float i = Float.parseFloat(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Floatzahl ab + * @return Inhalt des Elements + */ + public float getFloatContent() { + if ( current==null) return 0; + try{ + float i = Float.parseFloat(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setFloatContent(float value) { + if ( current==null) return; + current.setText(""+value); + } + +/** + * Fragt den Inhalt des aktuellen Elements als Doublezahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ + public double getDoubleContent(double defaultValue) { + if ( current==null) return defaultValue; + try{ + double i = Double.parseDouble(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Doublezahl ab + * @return Inhalt des Elements + */ + public double getDoubleContent() { + if ( current==null) return 0; + try{ + double i = Double.parseDouble(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setDoubleContent(double value) { + if ( current==null) return; + current.setText(""+value); + } + + + // ----------------------------------------------- XML-Struktur aufbauen ------------------------------------------------ + /** Erzeuge neues Element nach der aktuellen Position und setze dieses als aktuelles Element + * @param name Name des neuen Elements + * @return neues Element als XML-Objekt + */ + public XML addChild(String name) { + Element e = new Element(name); + if(current == null){ // man ist auf Root-Ebene + doc.setRootElement(e); + + } + else { + current.addContent(e); + } // end of if-else + return new XML(doc, e); + } + + /** + * liefert das aktuelle Element als jdom-Element-Objekt + * @return aktuelles Element + */ + private Element getCurrent() { + return current; + } + + /** + * löscht ein Kind des aktuellen Knotens. + * Ist kid kein Kind des aktuellen Elements passiert gar nichts. + * @param kid XML-Objekt des Kindes + */ + public void removeChild(XML kid) { + if (current == null) return; + Element e = kid.getCurrent(); + int index = current.indexOf(e); + if(index >= 0) { current.removeContent(e);} + } + +} diff --git a/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a2/XYDiagramm.java b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a2/XYDiagramm.java new file mode 100644 index 0000000..32e6ecd --- /dev/null +++ b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a2/XYDiagramm.java @@ -0,0 +1,112 @@ +import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot und MouseInfo) +import java.awt.Font; + +/** + * XY-Diagramm für Schalldruckpegel, Zahlen werden aus CSV-Datei gelesen. + * + * @author Schaller + * @version 29.11.18 + */ +public class XYDiagramm extends PictureViewer + +{ + // Liste mit allen Werten + double[] x_werte; + double[] y_werte; + + // Hilfsvariablen für die Suche + int akt_maximum=-1; // aktuell groesstes Element + int akt=-1; // aktuell untersuchtes Element + int verzoegerung=0; // Geschwindigkeit der Ausführung + + // Schriften + Font kleineSchrift; + Font grosseSchrift; + + public XYDiagramm() { + size(1000, 700); + background(0); + kleineSchrift = new Font( Font.SANS_SERIF, Font.PLAIN, 12 ); + grosseSchrift = new Font( Font.SANS_SERIF, Font.PLAIN, 20 ); + + // Deaktiviere die automatische Neudarstellung nach einem Zeichenbefehl + setAutoRefresh(false); + + // CSV-Datei laden und anzeigen + ladeTabelle("Amplitudes.csv"); + stroke(250,250,200); + zeichneXYDiagramm(); + } + + public void ladeTabelle(String name) { + // Tabelle aus CSV-Datei laden + Table csv = new Table(name, "header",',','"'); + + if (csv != null && csv.getColumnCount()==2) { + + // Initialisiere Arrays, in die alle Zeilen der Tabelle passen + x_werte = new double[csv.getRowCount()]; + y_werte = new double[csv.getRowCount()]; + + // Fülle die Arrays mit Werten aus der Tabelle + for (int i = 0; i < x_werte.length; i++) { //x_werte.length; i++) { + // Lies Wert aus der i. Zeile und der Spalte "Punkte" bzw. "Name" + x_werte[i] = csv.getDouble(i, "Zeit"); + y_werte[i] = csv.getDouble(i, "Laerm"); + System.out.println("Lade Zeile: "+i); + } + } + } + + public void zeichneXYDiagramm() { + + // Überschrift + fill(255,255,255); + textFont(grosseSchrift); + text("Lärmpegel", 2, 20); + textFont(kleineSchrift); + + // Alle Einträge darstellen + if (x_werte != null) { + for (int i = 0; i< x_werte.length; i++) { + + fill(20,25,165); + + // XY-Punktdiagramm zeichnen + int x = (int) x_werte[i]; + int y = (int) y_werte[i]; + point(x,y); + System.out.println("Zeichne Punkt: "+i); + + } + } + + //Bildschrimanzeige erneuern. AutoRefresh ist aus Zeitgründen deaktiviert. + refresh(); + + } + + public int sucheMaximum(int[] zahlen) { + // Sind überhaupt Daten da? + if(zahlen.length==0 ) { //<>// + return -1; + } + + // Startwerte setzen + akt_maximum = 0; + akt = 1; + + // Alle Arrayelemente untersuchen + while (akt < zahlen.length) { + // Neues größtes Element?? + if (zahlen[akt]> zahlen[akt_maximum]) { + // Dann merke dir das neue + akt_maximum = akt; + } + akt = akt + 1; + } + // Gib Position des größten Elements zurück + return akt_maximum; + } + +} diff --git a/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a2/images/balken.png b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a2/images/balken.png new file mode 100644 index 0000000..9ff1ffc Binary files /dev/null and b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a2/images/balken.png differ diff --git a/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a2/images/bilderrahmen.png b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a2/images/bilderrahmen.png new file mode 100644 index 0000000..7f34e32 Binary files /dev/null and b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a2/images/bilderrahmen.png differ diff --git a/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a2/images/xydiagramm.png b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a2/images/xydiagramm.png new file mode 100644 index 0000000..a13fc89 Binary files /dev/null and b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a2/images/xydiagramm.png differ diff --git a/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a2/jdom-1.1.3.jar b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a2/jdom-1.1.3.jar new file mode 100644 index 0000000..a287727 Binary files /dev/null and b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a2/jdom-1.1.3.jar differ diff --git a/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a2/project.greenfoot b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a2/project.greenfoot new file mode 100644 index 0000000..ac0497c --- /dev/null +++ b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a2/project.greenfoot @@ -0,0 +1,93 @@ +#Greenfoot project file +class.PictureViewer.image=bilderrahmen.png +class.XYDiagramm.image=xydiagramm.png +dependency1.from=MyWorld +dependency1.to=XYDiagramm +dependency1.type=UsesDependency +dependency2.from=PictureViewer +dependency2.to=Picture +dependency2.type=UsesDependency +dependency3.from=XYDiagramm +dependency3.to=Table +dependency3.type=UsesDependency +dependency4.from=Table +dependency4.to=TableRow +dependency4.type=UsesDependency +dependency5.from=Picture +dependency5.to=PictureViewer +dependency5.type=UsesDependency +editor.fx.0.height=739 +editor.fx.0.width=816 +editor.fx.0.x=408 +editor.fx.0.y=166 +height=880 +package.numDependencies=5 +package.numTargets=7 +project.charset=UTF-8 +publish.hasSource=false +publish.locked=true +publish.longDesc= +publish.shortDesc= +publish.tags= +publish.title= +publish.url= +readme.height=58 +readme.name=@README +readme.width=47 +readme.x=10 +readme.y=10 +simulation.speed=97 +target1.height=50 +target1.name=PictureViewer +target1.showInterface=false +target1.type=ClassTarget +target1.width=100 +target1.x=0 +target1.y=0 +target2.height=50 +target2.name=Table +target2.showInterface=false +target2.type=ClassTarget +target2.width=80 +target2.x=0 +target2.y=0 +target3.height=50 +target3.name=XYDiagramm +target3.showInterface=false +target3.type=ClassTarget +target3.width=90 +target3.x=0 +target3.y=0 +target4.height=50 +target4.name=Picture +target4.showInterface=false +target4.type=ClassTarget +target4.width=80 +target4.x=0 +target4.y=0 +target5.height=50 +target5.name=XML +target5.showInterface=false +target5.type=ClassTarget +target5.width=100 +target5.x=0 +target5.y=0 +target6.height=50 +target6.name=TableRow +target6.showInterface=false +target6.type=ClassTarget +target6.width=80 +target6.x=0 +target6.y=0 +target7.height=50 +target7.name=MyWorld +target7.showInterface=false +target7.type=ClassTarget +target7.width=80 +target7.x=0 +target7.y=0 +version=3.0.0 +width=1350 +world.lastInstantiated=MyWorld +xPosition=320 +yPosition=91 diff --git a/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a3/Amplitudes.csv b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a3/Amplitudes.csv new file mode 100644 index 0000000..6a3b121 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a3/Amplitudes.csv @@ -0,0 +1,12219 @@ +"Zeit","Laerm" +0.000000000E0,6.133205686E1 +1.130000000E-1,5.602431153E1 +3.840000000E-1,3.897519867E1 +7.780000000E-1,4.208195145E1 +1.036000000E0,3.840936313E1 +1.305000000E0,3.561092139E1 +1.587000000E0,4.663257633E1 +1.829000000E0,5.311883882E1 +2.084000000E0,5.299431820E1 +2.357000000E0,5.747397858E1 +2.643000000E0,5.626338063E1 +2.949000000E0,5.790811120E1 +3.238000000E0,5.874544026E1 +3.497000000E0,5.736162139E1 +3.775000000E0,5.897817442E1 +4.097000000E0,5.789822970E1 +4.357000000E0,5.312015799E1 +4.626000000E0,5.710192134E1 +4.941000000E0,6.275087240E1 +5.235000000E0,5.784358767E1 +5.535000000E0,5.388577420E1 +5.827000000E0,5.403495101E1 +6.090000000E0,5.428355086E1 +6.339000000E0,6.064473144E1 +6.616000000E0,6.271091291E1 +6.850000000E0,6.982615367E1 +7.128000000E0,7.050308750E1 +7.487000000E0,5.395311298E1 +7.760000000E0,5.036401582E1 +8.065000000E0,4.614125463E1 +8.361000000E0,6.244776407E1 +8.614000000E0,6.315719526E1 +8.862000000E0,5.981740395E1 +9.123000000E0,5.907292535E1 +9.374000000E0,5.661523092E1 +9.665000000E0,6.210368813E1 +9.948000000E0,6.140958115E1 +1.021100000E1,5.697007655E1 +1.058300000E1,5.460455934E1 +1.084000000E1,5.408516231E1 +1.115300000E1,5.907221377E1 +1.142100000E1,6.113412429E1 +1.172700000E1,6.267949704E1 +1.197100000E1,6.245109870E1 +1.226500000E1,6.342534529E1 +1.255800000E1,6.810008108E1 +1.287100000E1,6.036891848E1 +1.313400000E1,5.913231814E1 +1.342700000E1,5.973818566E1 +1.371600000E1,5.534371651E1 +1.401200000E1,5.694514867E1 +1.431200000E1,6.134814982E1 +1.461100000E1,5.900023912E1 +1.484600000E1,5.689908400E1 +1.515800000E1,5.296474858E1 +1.544000000E1,5.608528071E1 +1.569300000E1,5.728560404E1 +1.596900000E1,5.837984103E1 +1.620100000E1,5.718896638E1 +1.649200000E1,5.909973037E1 +1.678900000E1,5.705554272E1 +1.716300000E1,6.079937758E1 +1.747400000E1,5.618116117E1 +1.775200000E1,5.519881157E1 +1.803800000E1,5.402386340E1 +1.829100000E1,5.678484358E1 +1.858100000E1,5.954639303E1 +1.882300000E1,6.030021638E1 +1.908000000E1,5.588340744E1 +1.934400000E1,5.668691200E1 +1.958800000E1,6.042765467E1 +1.983400000E1,5.839794223E1 +2.008500000E1,5.457976882E1 +2.039500000E1,5.974390604E1 +2.064000000E1,6.049774386E1 +2.092900000E1,6.029857781E1 +2.117800000E1,6.116406203E1 +2.142700000E1,5.664722837E1 +2.173400000E1,5.823294996E1 +2.203100000E1,5.517538657E1 +2.229000000E1,5.322823206E1 +2.259900000E1,6.180779467E1 +2.285300000E1,6.106216386E1 +2.314900000E1,5.883321877E1 +2.347100000E1,6.045262422E1 +2.375000000E1,6.163931220E1 +2.406000000E1,4.841181734E1 +2.432800000E1,4.372149986E1 +2.462900000E1,5.625563946E1 +2.487100000E1,5.672759349E1 +2.513200000E1,5.896193725E1 +2.540800000E1,5.893011728E1 +2.566400000E1,5.857261268E1 +2.596700000E1,5.859012974E1 +2.621900000E1,5.635586832E1 +2.648700000E1,5.350948293E1 +2.673900000E1,5.430043092E1 +2.701400000E1,5.666610976E1 +2.727500000E1,5.218421407E1 +2.753100000E1,5.689076583E1 +2.782000000E1,5.796831886E1 +2.806900000E1,5.608205064E1 +2.831700000E1,5.482273815E1 +2.861600000E1,5.392425499E1 +2.888300000E1,5.329416010E1 +2.914800000E1,5.366916703E1 +2.940200000E1,5.280847155E1 +2.968000000E1,5.333298066E1 +2.994300000E1,5.497085471E1 +3.031200000E1,5.753094076E1 +3.057900000E1,5.655381974E1 +3.086100000E1,5.517704804E1 +3.115600000E1,5.592585858E1 +3.140700000E1,6.212826207E1 +3.166000000E1,5.699502474E1 +3.193500000E1,6.025129057E1 +3.223100000E1,5.686166208E1 +3.247300000E1,5.807641915E1 +3.271900000E1,6.065155151E1 +3.296400000E1,5.961384387E1 +3.320500000E1,6.119064420E1 +3.354400000E1,5.548464633E1 +3.378000000E1,5.699661616E1 +3.408000000E1,5.653770482E1 +3.438000000E1,5.083503664E1 +3.468200000E1,5.695639918E1 +3.495800000E1,5.566535489E1 +3.524700000E1,5.914853092E1 +3.552700000E1,5.758441289E1 +3.576600000E1,6.085665801E1 +3.606700000E1,5.862586334E1 +3.630600000E1,5.096841655E1 +3.662200000E1,6.009246966E1 +3.689400000E1,5.981749726E1 +3.715300000E1,6.108830629E1 +3.740300000E1,5.724514841E1 +3.766500000E1,5.934850613E1 +3.793000000E1,5.725470328E1 +3.819100000E1,5.843556167E1 +3.847700000E1,5.697759761E1 +3.874000000E1,5.721548979E1 +3.901600000E1,5.649629904E1 +3.927200000E1,5.850326911E1 +3.954600000E1,5.691951660E1 +3.993900000E1,5.357092442E1 +4.023400000E1,5.817046878E1 +4.053000000E1,5.554327077E1 +4.081200000E1,5.802928061E1 +4.103900000E1,5.663899845E1 +4.128700000E1,5.494654466E1 +4.155800000E1,5.564956216E1 +4.181900000E1,5.663250304E1 +4.211300000E1,5.652236278E1 +4.238100000E1,5.614203459E1 +4.264000000E1,5.433145844E1 +4.295000000E1,6.132645299E1 +4.326200000E1,6.040612545E1 +4.351400000E1,5.905916902E1 +4.377100000E1,5.885516023E1 +4.401000000E1,5.514814582E1 +4.430800000E1,5.663232510E1 +4.455900000E1,5.055807811E1 +4.482100000E1,5.614950318E1 +4.513300000E1,6.025044420E1 +4.537500000E1,5.643182261E1 +4.568900000E1,5.709089314E1 +4.600500000E1,5.480136123E1 +4.624500000E1,5.924046686E1 +4.656900000E1,6.172358505E1 +4.684100000E1,5.645515217E1 +4.711100000E1,6.002156043E1 +4.736300000E1,6.182669975E1 +4.759700000E1,5.557741963E1 +4.786700000E1,5.598662295E1 +4.818300000E1,5.664767890E1 +4.847900000E1,5.956168629E1 +4.874200000E1,5.713315811E1 +4.898900000E1,5.765479272E1 +4.931400000E1,5.507101982E1 +4.961600000E1,5.361677606E1 +4.990000000E1,5.558547080E1 +5.019600000E1,5.402951441E1 +5.046500000E1,5.805429700E1 +5.078800000E1,5.327636151E1 +5.110300000E1,4.980825483E1 +5.137100000E1,5.290981249E1 +5.165200000E1,4.817864123E1 +5.190100000E1,5.585478693E1 +5.214500000E1,5.457392293E1 +5.242900000E1,5.449921652E1 +5.272500000E1,5.537781025E1 +5.302100000E1,5.598018287E1 +5.326000000E1,5.612851081E1 +5.355800000E1,5.312697891E1 +5.384800000E1,5.799703575E1 +5.409200000E1,5.662162553E1 +5.433900000E1,5.392344795E1 +5.459100000E1,5.398098819E1 +5.494900000E1,5.489231889E1 +5.527100000E1,5.658153835E1 +5.552800000E1,5.624900056E1 +5.589500000E1,4.979935744E1 +5.616900000E1,5.146998424E1 +5.645400000E1,5.878755245E1 +5.668600000E1,5.846227673E1 +5.694400000E1,5.977267383E1 +5.726200000E1,5.508647523E1 +5.754400000E1,5.138853207E1 +5.784300000E1,5.327451232E1 +5.808600000E1,5.887142781E1 +5.837800000E1,5.858062431E1 +5.862200000E1,5.917458096E1 +5.889700000E1,6.050411670E1 +5.926300000E1,5.908687144E1 +5.952100000E1,5.570790758E1 +5.981900000E1,5.444849000E1 +6.006100000E1,5.201240285E1 +6.032000000E1,4.755830762E1 +6.061900000E1,5.204388424E1 +6.086500000E1,5.626914911E1 +6.117500000E1,5.280379974E1 +6.142900000E1,5.093923019E1 +6.173000000E1,5.460427137E1 +6.197800000E1,5.299601182E1 +6.230600000E1,5.424208739E1 +6.257600000E1,5.253762352E1 +6.283700000E1,5.544043962E1 +6.309800000E1,5.527614156E1 +6.335400000E1,5.747262922E1 +6.360700000E1,5.468151445E1 +6.384900000E1,5.582905565E1 +6.410700000E1,5.802400474E1 +6.435000000E1,5.204893636E1 +6.459600000E1,5.280146425E1 +6.486300000E1,4.876648093E1 +6.509700000E1,5.311679703E1 +6.537500000E1,5.192778643E1 +6.571400000E1,5.346709918E1 +6.597900000E1,5.370921552E1 +6.627900000E1,5.676705279E1 +6.652200000E1,5.832258643E1 +6.676600000E1,6.257736406E1 +6.703100000E1,6.295448429E1 +6.737800000E1,6.100964383E1 +6.766100000E1,5.182636016E1 +6.790700000E1,4.952717893E1 +6.821100000E1,5.667475715E1 +6.850300000E1,5.872819054E1 +6.882100000E1,6.004516195E1 +6.907300000E1,5.559244143E1 +6.935100000E1,5.600379936E1 +6.961500000E1,5.338006499E1 +6.987600000E1,5.360104859E1 +7.011900000E1,4.644905289E1 +7.037100000E1,4.528909123E1 +7.067200000E1,5.787885076E1 +7.091600000E1,5.602551032E1 +7.115700000E1,5.989544193E1 +7.142200000E1,6.110384869E1 +7.167900000E1,5.887448069E1 +7.192600000E1,5.797896456E1 +7.226000000E1,5.965665129E1 +7.251000000E1,6.477744226E1 +7.281200000E1,6.243775536E1 +7.310800000E1,5.921576979E1 +7.335600000E1,6.629420582E1 +7.364100000E1,6.683725429E1 +7.392300000E1,5.758295449E1 +7.418800000E1,5.654909286E1 +7.448600000E1,5.881341247E1 +7.472100000E1,5.546609910E1 +7.498300000E1,5.586542777E1 +7.526600000E1,5.463216262E1 +7.558500000E1,5.947397496E1 +7.586200000E1,6.218459899E1 +7.609800000E1,6.134189272E1 +7.635800000E1,5.727526170E1 +7.666700000E1,5.579062978E1 +7.699300000E1,6.015063828E1 +7.729000000E1,6.022787424E1 +7.756300000E1,5.646982462E1 +7.782200000E1,6.005734442E1 +7.813200000E1,5.950776839E1 +7.842200000E1,6.314009710E1 +7.880400000E1,5.425753266E1 +7.910400000E1,5.909139002E1 +7.935300000E1,5.600377253E1 +7.962300000E1,6.036368528E1 +7.993700000E1,5.940415340E1 +8.018900000E1,6.102152187E1 +8.050000000E1,6.619104713E1 +8.074000000E1,6.149981675E1 +8.098900000E1,5.978899259E1 +8.123800000E1,5.963150500E1 +8.150300000E1,6.509054947E1 +8.181300000E1,6.387458039E1 +8.220700000E1,6.421798778E1 +8.246100000E1,6.092500605E1 +8.271900000E1,6.039313205E1 +8.297100000E1,5.885189543E1 +8.328000000E1,6.068901175E1 +8.355600000E1,6.531581124E1 +8.381900000E1,6.460984287E1 +8.407800000E1,6.281147078E1 +8.435000000E1,5.961599483E1 +8.463400000E1,5.915457491E1 +8.489200000E1,5.383227231E1 +8.513000000E1,5.278474817E1 +8.551100000E1,6.165964712E1 +8.574900000E1,6.442604107E1 +8.600700000E1,6.551005247E1 +8.626000000E1,6.660338206E1 +8.650900000E1,6.304014634E1 +8.676000000E1,6.488065719E1 +8.701800000E1,6.416881833E1 +8.728000000E1,5.892166498E1 +8.754500000E1,5.946249393E1 +8.785000000E1,6.506678358E1 +8.809400000E1,5.703264442E1 +8.840500000E1,6.164086486E1 +8.876300000E1,6.276173959E1 +8.906100000E1,5.818071871E1 +8.930500000E1,5.844394446E1 +8.956300000E1,5.657440647E1 +8.987400000E1,6.120356137E1 +9.011500000E1,6.094306560E1 +9.041100000E1,5.978472131E1 +9.065500000E1,6.008128664E1 +9.092400000E1,5.758286780E1 +9.123300000E1,5.353387594E1 +9.151600000E1,5.676204998E1 +9.183800000E1,5.245702159E1 +9.218200000E1,5.642589170E1 +9.243600000E1,5.542467479E1 +9.268000000E1,5.580829615E1 +9.297600000E1,5.148061441E1 +9.322800000E1,4.635974806E1 +9.353200000E1,5.465579762E1 +9.377300000E1,5.154999739E1 +9.402200000E1,5.544992474E1 +9.427900000E1,5.302390200E1 +9.453300000E1,5.127982623E1 +9.478800000E1,5.263086656E1 +9.503100000E1,5.128121484E1 +9.532100000E1,5.061466876E1 +9.557700000E1,5.328260476E1 +9.582800000E1,5.101663724E1 +9.607100000E1,5.400893265E1 +9.640400000E1,5.756552061E1 +9.665500000E1,5.665487755E1 +9.690400000E1,5.719000980E1 +9.715400000E1,5.593995548E1 +9.740400000E1,5.420194495E1 +9.771300000E1,4.867232074E1 +9.802100000E1,5.053798103E1 +9.830700000E1,4.874294948E1 +9.857500000E1,5.754515654E1 +9.883700000E1,5.863618568E1 +9.909700000E1,6.070195076E1 +9.935300000E1,5.434874196E1 +9.961300000E1,6.163600431E1 +9.987300000E1,5.555228218E1 +1.001200000E2,5.733850418E1 +1.003910000E2,6.133233800E1 +1.006620000E2,5.853313440E1 +1.009020000E2,5.435835494E1 +1.011680000E2,5.329891948E1 +1.014680000E2,5.356470018E1 +1.018410000E2,5.574288130E1 +1.021370000E2,5.927571979E1 +1.024000000E2,5.789956910E1 +1.026980000E2,6.081738139E1 +1.029540000E2,5.575615853E1 +1.032580000E2,5.337382111E1 +1.035140000E2,5.562761746E1 +1.038150000E2,5.905624776E1 +1.041040000E2,5.696105750E1 +1.043990000E2,6.170938149E1 +1.046370000E2,5.823687000E1 +1.049080000E2,6.066674703E1 +1.051740000E2,6.220969933E1 +1.054810000E2,5.755805236E1 +1.057660000E2,5.735691579E1 +1.060450000E2,5.761618087E1 +1.063040000E2,5.188413372E1 +1.065680000E2,5.643639822E1 +1.068740000E2,5.312430876E1 +1.071280000E2,5.924995828E1 +1.073900000E2,5.546187342E1 +1.076920000E2,5.474389270E1 +1.079790000E2,5.600814816E1 +1.082440000E2,5.561453096E1 +1.084980000E2,5.408559240E1 +1.087580000E2,5.622058302E1 +1.090160000E2,5.768852773E1 +1.092670000E2,5.516804842E1 +1.095340000E2,5.973626648E1 +1.098120000E2,6.403409511E1 +1.100690000E2,6.035201036E1 +1.103490000E2,5.940482770E1 +1.105950000E2,5.932126109E1 +1.108600000E2,5.859387697E1 +1.111460000E2,5.929800416E1 +1.114110000E2,5.930503134E1 +1.117890000E2,6.170536210E1 +1.120410000E2,6.214563711E1 +1.123490000E2,5.810151097E1 +1.126320000E2,5.823719807E1 +1.128910000E2,6.454485320E1 +1.131870000E2,6.755031626E1 +1.134560000E2,6.410743881E1 +1.137200000E2,5.913442857E1 +1.139870000E2,6.382823805E1 +1.142400000E2,5.859239523E1 +1.145180000E2,5.135859796E1 +1.147890000E2,5.294563188E1 +1.151440000E2,5.357868048E1 +1.154220000E2,5.561359505E1 +1.156620000E2,5.645675088E1 +1.159670000E2,5.879425595E1 +1.162610000E2,5.918610512E1 +1.164990000E2,6.083658676E1 +1.167470000E2,5.526645697E1 +1.169880000E2,5.471312988E1 +1.172910000E2,6.211796732E1 +1.175510000E2,5.417468648E1 +1.177930000E2,5.576739557E1 +1.180750000E2,5.912472365E1 +1.184660000E2,5.718213173E1 +1.187710000E2,5.747081312E1 +1.190170000E2,5.741742618E1 +1.192690000E2,5.379557814E1 +1.195330000E2,5.428733520E1 +1.197780000E2,6.177329402E1 +1.200450000E2,5.672333166E1 +1.203170000E2,5.584947723E1 +1.205670000E2,5.382665718E1 +1.208400000E2,5.443690083E1 +1.211280000E2,5.221565874E1 +1.214800000E2,5.516249741E1 +1.217540000E2,5.676279334E1 +1.220050000E2,5.303796336E1 +1.222680000E2,5.258840561E1 +1.225120000E2,5.671935607E1 +1.227660000E2,4.902892756E1 +1.230240000E2,4.264962220E1 +1.232830000E2,4.818154680E1 +1.235340000E2,5.204058636E1 +1.238430000E2,5.649936271E1 +1.241410000E2,5.396154490E1 +1.244200000E2,5.428877275E1 +1.246760000E2,4.778715710E1 +1.249500000E2,4.912370762E1 +1.252110000E2,5.114426735E1 +1.255020000E2,5.345096378E1 +1.257410000E2,5.581149074E1 +1.260430000E2,5.211774829E1 +1.263320000E2,5.470047014E1 +1.265660000E2,5.399085344E1 +1.268600000E2,5.981732528E1 +1.271210000E2,5.944116770E1 +1.273530000E2,5.668281238E1 +1.275970000E2,5.042419391E1 +1.279080000E2,5.014554177E1 +1.282260000E2,5.350461413E1 +1.285240000E2,5.453533258E1 +1.287780000E2,5.809919663E1 +1.290280000E2,5.729580956E1 +1.292980000E2,5.681749266E1 +1.296010000E2,5.542882864E1 +1.298980000E2,5.612046892E1 +1.302070000E2,6.074750886E1 +1.304620000E2,5.979349108E1 +1.307520000E2,5.806574219E1 +1.310590000E2,5.738881777E1 +1.314010000E2,5.595280312E1 +1.316630000E2,5.401154636E1 +1.319120000E2,5.499471091E1 +1.321620000E2,5.551354327E1 +1.324640000E2,6.567912108E1 +1.327650000E2,5.725129100E1 +1.330150000E2,6.452906176E1 +1.333160000E2,5.778565576E1 +1.335760000E2,6.242194617E1 +1.338200000E2,5.570863747E1 +1.340710000E2,5.755877138E1 +1.343660000E2,6.819206156E1 +1.346260000E2,6.094769164E1 +1.349310000E2,6.447198163E1 +1.351810000E2,5.482297950E1 +1.354630000E2,6.327012623E1 +1.357210000E2,5.723157337E1 +1.359770000E2,5.835004111E1 +1.362140000E2,6.413045068E1 +1.365290000E2,6.022343539E1 +1.368110000E2,5.969265006E1 +1.371070000E2,5.589766444E1 +1.373670000E2,6.089100679E1 +1.376970000E2,6.762783521E1 +1.379410000E2,5.740809854E1 +1.381870000E2,6.711182247E1 +1.384650000E2,6.290175574E1 +1.387060000E2,6.352322572E1 +1.390400000E2,5.897504025E1 +1.392980000E2,5.872568346E1 +1.396520000E2,5.582882684E1 +1.399140000E2,5.874428562E1 +1.402160000E2,5.275369064E1 +1.404650000E2,5.181123336E1 +1.407250000E2,4.758951485E1 +1.410550000E2,4.601470876E1 +1.413500000E2,5.203790008E1 +1.416310000E2,5.380793436E1 +1.418780000E2,5.006781735E1 +1.421580000E2,4.792469964E1 +1.424020000E2,5.136650820E1 +1.427060000E2,5.127969468E1 +1.430200000E2,5.304643312E1 +1.433210000E2,5.218299100E1 +1.436050000E2,5.568762266E1 +1.439010000E2,5.522696018E1 +1.442570000E2,5.919224289E1 +1.445880000E2,6.201398016E1 +1.448680000E2,5.750742223E1 +1.451160000E2,5.811963790E1 +1.454090000E2,5.695462128E1 +1.456560000E2,5.854812337E1 +1.458980000E2,5.886107911E1 +1.461720000E2,5.454171305E1 +1.464480000E2,5.674410925E1 +1.466770000E2,5.450912101E1 +1.469270000E2,5.953864028E1 +1.471790000E2,6.097527460E1 +1.475260000E2,5.825769450E1 +1.478290000E2,5.780473579E1 +1.480790000E2,6.185542851E1 +1.483350000E2,5.390929394E1 +1.486330000E2,5.400087479E1 +1.488750000E2,5.328656685E1 +1.491190000E2,5.599536596E1 +1.494200000E2,5.721648542E1 +1.497150000E2,5.787493165E1 +1.500380000E2,5.480047158E1 +1.503480000E2,5.002404450E1 +1.506590000E2,5.486151348E1 +1.509700000E2,6.245235750E1 +1.512360000E2,5.831236552E1 +1.514820000E2,6.253825815E1 +1.517260000E2,6.440134635E1 +1.520120000E2,5.646251942E1 +1.523080000E2,5.569851104E1 +1.525630000E2,5.574195002E1 +1.528610000E2,6.073633455E1 +1.531220000E2,5.704364811E1 +1.533960000E2,5.858521931E1 +1.536900000E2,6.334346239E1 +1.540080000E2,5.734505299E1 +1.542490000E2,6.522555977E1 +1.544980000E2,5.500712815E1 +1.547420000E2,5.698741268E1 +1.549830000E2,5.097374633E1 +1.552760000E2,5.421781291E1 +1.555100000E2,5.276919678E1 +1.558070000E2,5.444895965E1 +1.560410000E2,5.023818561E1 +1.563440000E2,5.460917302E1 +1.565880000E2,5.459938847E1 +1.568920000E2,5.843131092E1 +1.572210000E2,5.876667307E1 +1.574850000E2,5.735202828E1 +1.577300000E2,5.496399564E1 +1.580290000E2,5.249359356E1 +1.582920000E2,5.216967072E1 +1.585400000E2,5.506360532E1 +1.588040000E2,4.854470136E1 +1.590480000E2,5.455647594E1 +1.593040000E2,5.480802962E1 +1.595560000E2,5.117555202E1 +1.598230000E2,5.525001141E1 +1.600680000E2,6.028739680E1 +1.604080000E2,6.051466285E1 +1.606910000E2,5.941686107E1 +1.609450000E2,6.263789003E1 +1.611920000E2,5.862463866E1 +1.614980000E2,5.858673558E1 +1.617730000E2,5.766546261E1 +1.620210000E2,5.485521148E1 +1.623080000E2,5.814732367E1 +1.625850000E2,5.829863647E1 +1.628370000E2,5.473457172E1 +1.631510000E2,5.323729241E1 +1.634320000E2,5.795543593E1 +1.637670000E2,5.845831909E1 +1.640670000E2,5.883503284E1 +1.643040000E2,5.933733684E1 +1.645990000E2,5.316483696E1 +1.648620000E2,5.628275472E1 +1.651110000E2,5.612764782E1 +1.654290000E2,5.739409022E1 +1.657290000E2,5.275374209E1 +1.660100000E2,5.606330732E1 +1.662350000E2,4.973765069E1 +1.664840000E2,4.855931683E1 +1.667820000E2,4.830487304E1 +1.670210000E2,5.643349546E1 +1.672820000E2,5.752246312E1 +1.675830000E2,5.576545129E1 +1.678330000E2,5.583582770E1 +1.681390000E2,5.301617697E1 +1.684460000E2,5.088408561E1 +1.686990000E2,5.149775091E1 +1.690030000E2,6.019099852E1 +1.692410000E2,6.143998752E1 +1.695380000E2,6.183098470E1 +1.697780000E2,5.964256200E1 +1.701420000E2,5.648358262E1 +1.703870000E2,5.768033788E1 +1.706360000E2,5.037521789E1 +1.709530000E2,5.268785935E1 +1.712030000E2,5.850048969E1 +1.714650000E2,5.537813713E1 +1.717710000E2,5.989062491E1 +1.720770000E2,6.371629733E1 +1.723380000E2,5.413135778E1 +1.726060000E2,5.582389161E1 +1.729040000E2,6.344770094E1 +1.731770000E2,6.038125570E1 +1.735090000E2,5.229655017E1 +1.737830000E2,5.594074665E1 +1.740430000E2,6.258802116E1 +1.743030000E2,5.773122794E1 +1.745600000E2,5.533899998E1 +1.748290000E2,5.069657364E1 +1.750850000E2,6.285550191E1 +1.753480000E2,5.470504416E1 +1.756240000E2,5.746379759E1 +1.758870000E2,5.928233462E1 +1.761350000E2,5.214791610E1 +1.763840000E2,5.260177806E1 +1.767030000E2,4.844041050E1 +1.769490000E2,5.275717684E1 +1.772330000E2,5.436891746E1 +1.774780000E2,5.441421810E1 +1.777590000E2,5.485847839E1 +1.780320000E2,5.714239097E1 +1.782910000E2,6.028837304E1 +1.785470000E2,5.706420775E1 +1.788380000E2,5.509582512E1 +1.791200000E2,5.674185072E1 +1.794340000E2,5.437491314E1 +1.796940000E2,5.696592309E1 +1.799990000E2,5.344092263E1 +1.802540000E2,5.414345246E1 +1.804960000E2,5.421992498E1 +1.808400000E2,5.317024536E1 +1.811450000E2,5.422714635E1 +1.814530000E2,5.933207779E1 +1.817720000E2,5.916706050E1 +1.820730000E2,5.685980261E1 +1.824210000E2,5.521649456E1 +1.826850000E2,5.651993888E1 +1.829810000E2,5.707596711E1 +1.832810000E2,5.464130538E1 +1.836160000E2,5.364065008E1 +1.838600000E2,5.913078622E1 +1.841080000E2,5.695541400E1 +1.843520000E2,6.237274690E1 +1.846510000E2,6.017101966E1 +1.848950000E2,5.670915019E1 +1.851380000E2,5.651470649E1 +1.854400000E2,5.919691857E1 +1.857560000E2,5.752836475E1 +1.860680000E2,6.133052078E1 +1.863670000E2,6.001801442E1 +1.866740000E2,5.871186574E1 +1.869510000E2,5.858669373E1 +1.872240000E2,5.722343490E1 +1.875200000E2,5.725198568E1 +1.877700000E2,5.560524182E1 +1.880340000E2,5.419540118E1 +1.882980000E2,6.169219144E1 +1.885790000E2,5.704261604E1 +1.888700000E2,5.651125138E1 +1.891060000E2,5.778536485E1 +1.894110000E2,5.304160496E1 +1.896990000E2,5.105254388E1 +1.900460000E2,5.338626279E1 +1.902980000E2,5.090929652E1 +1.905360000E2,5.235399183E1 +1.907970000E2,5.429173243E1 +1.910620000E2,5.376238901E1 +1.913500000E2,6.411203098E1 +1.916020000E2,6.235211697E1 +1.919100000E2,5.719243884E1 +1.922140000E2,5.965550680E1 +1.925010000E2,5.850063986E1 +1.928110000E2,6.013906156E1 +1.930480000E2,5.912633730E1 +1.934000000E2,5.860712099E1 +1.936870000E2,5.944287516E1 +1.939980000E2,5.676076088E1 +1.942520000E2,5.712881871E1 +1.945490000E2,5.515631677E1 +1.948870000E2,5.670925955E1 +1.951320000E2,5.768263389E1 +1.954210000E2,5.735243887E1 +1.957290000E2,5.883798740E1 +1.960030000E2,5.654393164E1 +1.963340000E2,5.345251733E1 +1.966710000E2,5.034487882E1 +1.969060000E2,5.741493139E1 +1.971980000E2,5.877434013E1 +1.974210000E2,5.965387227E1 +1.977200000E2,6.306941384E1 +1.979730000E2,6.004201692E1 +1.982230000E2,6.106500017E1 +1.984800000E2,5.674857861E1 +1.987290000E2,6.020914127E1 +1.990680000E2,6.067289060E1 +1.993460000E2,5.996658083E1 +1.996390000E2,5.676340490E1 +1.999500000E2,5.612304129E1 +2.002130000E2,6.289766509E1 +2.005150000E2,5.720971103E1 +2.008280000E2,5.752136939E1 +2.010940000E2,6.058659890E1 +2.013440000E2,5.618430636E1 +2.016270000E2,6.056271249E1 +2.019400000E2,5.729198827E1 +2.022100000E2,5.793084452E1 +2.025070000E2,5.787194228E1 +2.027910000E2,5.959620014E1 +2.030940000E2,6.012062596E1 +2.033180000E2,6.276377758E1 +2.036210000E2,5.834405857E1 +2.039320000E2,5.545225289E1 +2.042050000E2,5.829439447E1 +2.044730000E2,5.799912649E1 +2.047970000E2,5.444896398E1 +2.050680000E2,5.743866699E1 +2.053150000E2,5.862448994E1 +2.055880000E2,5.778478934E1 +2.058890000E2,5.527981007E1 +2.061620000E2,5.742523507E1 +2.064580000E2,5.472188821E1 +2.067100000E2,6.202721053E1 +2.069630000E2,5.861698013E1 +2.072080000E2,6.294616718E1 +2.074730000E2,6.321186761E1 +2.077380000E2,5.776609523E1 +2.080390000E2,6.061292698E1 +2.083320000E2,5.857532480E1 +2.085870000E2,5.800369352E1 +2.088450000E2,5.977447345E1 +2.091070000E2,5.957010157E1 +2.093520000E2,6.145770306E1 +2.096060000E2,6.176056517E1 +2.098580000E2,6.033519811E1 +2.100970000E2,6.429628489E1 +2.103980000E2,6.215353584E1 +2.106470000E2,6.299048914E1 +2.109300000E2,6.133544133E1 +2.112010000E2,5.397487394E1 +2.114250000E2,5.313920655E1 +2.116740000E2,5.552710709E1 +2.119140000E2,5.692289703E1 +2.121730000E2,5.618691953E1 +2.124220000E2,5.402804715E1 +2.127170000E2,5.390450402E1 +2.129570000E2,5.652515030E1 +2.132580000E2,5.490504921E1 +2.135120000E2,5.485761082E1 +2.137850000E2,6.486277416E1 +2.140520000E2,6.121826472E1 +2.143580000E2,6.355465948E1 +2.146390000E2,5.534291145E1 +2.148790000E2,6.610858745E1 +2.151670000E2,5.617739728E1 +2.154670000E2,5.426651762E1 +2.157300000E2,5.840247716E1 +2.160830000E2,5.257749691E1 +2.163200000E2,6.345809118E1 +2.165810000E2,6.020490407E1 +2.168390000E2,5.603372378E1 +2.170870000E2,5.452432165E1 +2.173530000E2,5.679931822E1 +2.176220000E2,6.225558234E1 +2.179360000E2,5.991886985E1 +2.182430000E2,6.307902574E1 +2.184780000E2,6.764692456E1 +2.187700000E2,6.696013302E1 +2.190280000E2,6.419552300E1 +2.193390000E2,6.401831507E1 +2.196000000E2,6.317016249E1 +2.198590000E2,6.093052958E1 +2.201380000E2,6.446513941E1 +2.204220000E2,6.075454080E1 +2.206690000E2,6.712020778E1 +2.209300000E2,5.440050354E1 +2.212550000E2,5.627963451E1 +2.215550000E2,6.358778444E1 +2.217990000E2,5.793661873E1 +2.220730000E2,6.448679664E1 +2.223050000E2,5.844994198E1 +2.226510000E2,5.802583418E1 +2.229440000E2,5.848297014E1 +2.231840000E2,6.170695891E1 +2.234220000E2,6.201301769E1 +2.236630000E2,6.049179870E1 +2.239600000E2,6.316843106E1 +2.242020000E2,5.818837652E1 +2.245150000E2,6.411353278E1 +2.248330000E2,6.458398711E1 +2.250670000E2,6.303280227E1 +2.253240000E2,6.378696379E1 +2.255670000E2,6.157533943E1 +2.259260000E2,5.845901257E1 +2.261910000E2,5.623331182E1 +2.264460000E2,5.550822889E1 +2.267020000E2,5.907003722E1 +2.270220000E2,6.300043778E1 +2.273130000E2,5.934584116E1 +2.275640000E2,5.367094537E1 +2.278520000E2,6.260544714E1 +2.281140000E2,5.666507163E1 +2.283970000E2,6.099713971E1 +2.287020000E2,5.943082312E1 +2.289450000E2,6.095935321E1 +2.292950000E2,5.939706013E1 +2.296230000E2,5.612117806E1 +2.299220000E2,5.805831404E1 +2.301570000E2,5.496048372E1 +2.304070000E2,5.335836124E1 +2.306490000E2,5.043808989E1 +2.309270000E2,4.778025574E1 +2.311680000E2,4.613189565E1 +2.314100000E2,4.740314381E1 +2.316580000E2,5.230056147E1 +2.319150000E2,5.672989332E1 +2.321590000E2,6.081799709E1 +2.325030000E2,5.909736866E1 +2.327570000E2,5.528762811E1 +2.330520000E2,6.623131701E1 +2.333360000E2,6.376149752E1 +2.335730000E2,6.088376871E1 +2.338700000E2,6.235681388E1 +2.341160000E2,6.060610548E1 +2.343930000E2,5.779254532E1 +2.346370000E2,5.570043106E1 +2.349010000E2,6.172637016E1 +2.351520000E2,5.865545525E1 +2.354420000E2,6.250465685E1 +2.356850000E2,6.494272879E1 +2.359310000E2,6.075163542E1 +2.361840000E2,5.742858606E1 +2.364460000E2,5.756917813E1 +2.366990000E2,6.169927684E1 +2.370080000E2,5.540268710E1 +2.373040000E2,5.484088652E1 +2.376000000E2,5.732112773E1 +2.378800000E2,5.184194161E1 +2.381270000E2,5.604168635E1 +2.383910000E2,5.644051218E1 +2.387130000E2,6.049774032E1 +2.390290000E2,6.303013407E1 +2.392800000E2,6.115111046E1 +2.395770000E2,6.294174883E1 +2.398740000E2,6.716012591E1 +2.401880000E2,7.075117191E1 +2.404890000E2,6.435561631E1 +2.407550000E2,5.593172595E1 +2.410720000E2,5.781614361E1 +2.413350000E2,5.497792445E1 +2.416080000E2,5.569244646E1 +2.418870000E2,5.408109683E1 +2.421100000E2,5.687440525E1 +2.424230000E2,6.415333296E1 +2.427170000E2,6.528722740E1 +2.429900000E2,6.229384329E1 +2.432350000E2,5.452507698E1 +2.434960000E2,5.248331654E1 +2.437450000E2,5.069826347E1 +2.439880000E2,4.989889277E1 +2.442610000E2,5.196931346E1 +2.445130000E2,4.988417717E1 +2.448120000E2,5.950968466E1 +2.451200000E2,5.725324421E1 +2.454210000E2,5.902908729E1 +2.456980000E2,5.857784521E1 +2.459650000E2,5.154496059E1 +2.462670000E2,5.316738342E1 +2.465660000E2,5.681338179E1 +2.468580000E2,5.486468116E1 +2.471080000E2,5.378622946E1 +2.473840000E2,5.263910847E1 +2.477040000E2,5.102724000E1 +2.479590000E2,4.958128022E1 +2.482070000E2,5.621813465E1 +2.486190000E2,5.553111013E1 +2.489120000E2,5.711728514E1 +2.491630000E2,6.098223102E1 +2.494610000E2,5.812970142E1 +2.497290000E2,5.874411947E1 +2.500090000E2,6.058797235E1 +2.503160000E2,5.921850964E1 +2.506300000E2,5.825659244E1 +2.508940000E2,5.902074554E1 +2.512250000E2,5.857720223E1 +2.514860000E2,5.834259509E1 +2.517560000E2,5.664723408E1 +2.520110000E2,6.245873243E1 +2.522800000E2,6.018081628E1 +2.525490000E2,6.060905480E1 +2.527980000E2,6.098924059E1 +2.530310000E2,6.604497204E1 +2.532750000E2,5.762503683E1 +2.535750000E2,5.946675250E1 +2.538150000E2,5.696283688E1 +2.541120000E2,5.795434272E1 +2.543420000E2,5.641662406E1 +2.546470000E2,6.001503419E1 +2.549610000E2,5.913147779E1 +2.552050000E2,5.772050526E1 +2.554250000E2,5.986895040E1 +2.557400000E2,4.836792039E1 +2.560130000E2,4.818172752E1 +2.563450000E2,5.244597112E1 +2.566130000E2,5.174954560E1 +2.568650000E2,5.165225717E1 +2.571100000E2,4.865803315E1 +2.573530000E2,4.773689375E1 +2.576460000E2,5.375353685E1 +2.579030000E2,5.630041837E1 +2.582540000E2,5.390583403E1 +2.585030000E2,5.686416101E1 +2.588120000E2,5.880170204E1 +2.590630000E2,5.373023259E1 +2.593590000E2,6.009405077E1 +2.596120000E2,5.710673366E1 +2.598560000E2,5.891240789E1 +2.600990000E2,5.960890080E1 +2.603510000E2,6.728594423E1 +2.606060000E2,6.334340199E1 +2.609270000E2,6.082175509E1 +2.611830000E2,5.750083619E1 +2.615060000E2,5.667484133E1 +2.618070000E2,6.152760439E1 +2.620430000E2,5.697586540E1 +2.623440000E2,5.674189037E1 +2.625730000E2,5.539036876E1 +2.628210000E2,4.901745514E1 +2.631270000E2,5.264848299E1 +2.634230000E2,5.038277380E1 +2.636750000E2,5.149234245E1 +2.639170000E2,4.604207892E1 +2.641630000E2,5.735184247E1 +2.644630000E2,5.659523444E1 +2.648080000E2,5.697978691E1 +2.650640000E2,5.691301726E1 +2.653540000E2,5.696584583E1 +2.656480000E2,5.138210199E1 +2.659030000E2,5.345758564E1 +2.661640000E2,5.363588256E1 +2.664240000E2,5.471656895E1 +2.666720000E2,5.140760448E1 +2.669400000E2,5.329005020E1 +2.671940000E2,5.422388323E1 +2.674460000E2,5.133919880E1 +2.677140000E2,5.690801972E1 +2.681270000E2,5.964609863E1 +2.684030000E2,6.167901240E1 +2.686970000E2,5.297205648E1 +2.689350000E2,5.530010894E1 +2.692310000E2,5.450325538E1 +2.694700000E2,5.391690578E1 +2.697660000E2,5.420666075E1 +2.700010000E2,4.962510480E1 +2.702390000E2,5.010058679E1 +2.705460000E2,5.345147952E1 +2.708590000E2,5.574757195E1 +2.711770000E2,5.571208034E1 +2.714720000E2,5.288998421E1 +2.717170000E2,5.214438195E1 +2.720190000E2,5.232798978E1 +2.723080000E2,6.045263056E1 +2.725500000E2,5.870512300E1 +2.727930000E2,5.577911819E1 +2.730760000E2,5.501493048E1 +2.733800000E2,5.433475343E1 +2.736720000E2,5.293457700E1 +2.739070000E2,5.486483547E1 +2.741780000E2,6.008208952E1 +2.745050000E2,5.845984546E1 +2.748040000E2,5.900764997E1 +2.751070000E2,5.760203457E1 +2.754240000E2,5.795024632E1 +2.757280000E2,6.182748257E1 +2.760340000E2,5.683205968E1 +2.763350000E2,5.821402367E1 +2.766080000E2,5.520672517E1 +2.768980000E2,5.645892504E1 +2.772030000E2,5.463906896E1 +2.775200000E2,5.412722413E1 +2.777910000E2,5.268636730E1 +2.780870000E2,5.566734184E1 +2.783350000E2,5.745256931E1 +2.785810000E2,5.645167582E1 +2.788270000E2,5.925831320E1 +2.790840000E2,5.591320738E1 +2.793690000E2,5.632637646E1 +2.796200000E2,6.252281740E1 +2.799120000E2,5.547643277E1 +2.801570000E2,6.021611275E1 +2.804580000E2,5.732676882E1 +2.808110000E2,5.909573770E1 +2.810780000E2,6.005240162E1 +2.813300000E2,5.965022185E1 +2.815820000E2,6.135840817E1 +2.818790000E2,5.970629096E1 +2.821590000E2,5.879025140E1 +2.824010000E2,5.747324456E1 +2.826520000E2,5.726379384E1 +2.828950000E2,5.871306541E1 +2.831920000E2,6.188032415E1 +2.834710000E2,6.066582287E1 +2.837110000E2,5.950933244E1 +2.840350000E2,5.901018860E1 +2.843000000E2,5.761182729E1 +2.846050000E2,5.446909438E1 +2.848570000E2,5.349219985E1 +2.851700000E2,5.015518748E1 +2.854330000E2,5.374610595E1 +2.857270000E2,5.877223624E1 +2.860310000E2,5.644512377E1 +2.863080000E2,5.711327205E1 +2.865540000E2,5.655239592E1 +2.867930000E2,5.833716670E1 +2.871150000E2,5.417781453E1 +2.874030000E2,5.332227783E1 +2.876540000E2,5.146836736E1 +2.879540000E2,5.452228720E1 +2.881970000E2,5.025406823E1 +2.884910000E2,5.490648375E1 +2.887280000E2,5.506242221E1 +2.890210000E2,5.400927835E1 +2.892600000E2,5.781126179E1 +2.895430000E2,6.384283902E1 +2.898470000E2,6.340395874E1 +2.901430000E2,5.555395770E1 +2.904560000E2,5.514224078E1 +2.907530000E2,5.346566906E1 +2.910000000E2,5.948406902E1 +2.912590000E2,6.362292628E1 +2.915300000E2,6.175065463E1 +2.918240000E2,6.129817533E1 +2.920790000E2,6.317618325E1 +2.923350000E2,6.137933812E1 +2.926010000E2,5.620086793E1 +2.928740000E2,5.715913846E1 +2.931780000E2,7.028942499E1 +2.934620000E2,6.774357618E1 +2.937770000E2,6.989950413E1 +2.940270000E2,6.631119439E1 +2.943030000E2,6.956920703E1 +2.945570000E2,6.352936554E1 +2.948100000E2,6.981123112E1 +2.951150000E2,5.607171784E1 +2.953950000E2,5.394017247E1 +2.956980000E2,7.110851253E1 +2.959460000E2,6.978848906E1 +2.961900000E2,5.446752823E1 +2.965090000E2,6.309281755E1 +2.968110000E2,6.647752141E1 +2.971300000E2,6.773248230E1 +2.974240000E2,6.289421429E1 +2.977060000E2,5.998905240E1 +2.979500000E2,6.016152671E1 +2.981940000E2,5.851705490E1 +2.984880000E2,6.506323043E1 +2.987430000E2,5.702053645E1 +2.990110000E2,4.890963733E1 +2.993040000E2,5.105737182E1 +2.995650000E2,4.950865545E1 +2.998150000E2,4.713536225E1 +3.000860000E2,6.170154569E1 +3.003780000E2,5.697995513E1 +3.006750000E2,6.496205179E1 +3.009180000E2,5.585602045E1 +3.012120000E2,5.317421587E1 +3.015130000E2,5.532213468E1 +3.017840000E2,5.371543715E1 +3.020520000E2,6.741141038E1 +3.023220000E2,6.638671809E1 +3.025730000E2,5.833940482E1 +3.028700000E2,6.272205104E1 +3.031230000E2,6.150676490E1 +3.034050000E2,6.571826996E1 +3.036710000E2,6.387001854E1 +3.039460000E2,5.704179120E1 +3.042380000E2,5.452420344E1 +3.044730000E2,6.911436343E1 +3.047670000E2,6.747337761E1 +3.050070000E2,6.642457947E1 +3.053010000E2,6.704052830E1 +3.055360000E2,6.335116163E1 +3.058350000E2,6.452879154E1 +3.061310000E2,6.588892290E1 +3.064460000E2,6.065604325E1 +3.066970000E2,5.884139521E1 +3.069890000E2,6.115548360E1 +3.072650000E2,5.474220631E1 +3.075290000E2,5.525228633E1 +3.077890000E2,5.546520153E1 +3.080280000E2,5.799541194E1 +3.083270000E2,5.467819740E1 +3.086250000E2,5.227747322E1 +3.089260000E2,5.802220937E1 +3.091970000E2,5.383690373E1 +3.095040000E2,5.794687305E1 +3.097810000E2,5.426386053E1 +3.100000000E2,5.745164866E1 +3.103300000E2,5.475501144E1 +3.106240000E2,5.154802151E1 +3.108750000E2,5.434380726E1 +3.111540000E2,5.533246388E1 +3.114150000E2,5.554218476E1 +3.116740000E2,5.375334275E1 +3.119200000E2,5.727216331E1 +3.121680000E2,5.235396651E1 +3.124720000E2,6.207307801E1 +3.127180000E2,6.488896117E1 +3.130530000E2,6.168970511E1 +3.133080000E2,6.010687101E1 +3.135950000E2,6.305386662E1 +3.138880000E2,6.214030252E1 +3.141410000E2,5.907513997E1 +3.143960000E2,6.064308138E1 +3.146480000E2,6.195321339E1 +3.148870000E2,6.088765310E1 +3.151830000E2,5.906360624E1 +3.154280000E2,5.864981040E1 +3.157360000E2,5.824424792E1 +3.159750000E2,5.826399021E1 +3.163740000E2,6.051726612E1 +3.166320000E2,6.011967909E1 +3.168940000E2,5.577110603E1 +3.172010000E2,5.372586587E1 +3.174460000E2,5.537091967E1 +3.176890000E2,5.504912063E1 +3.179320000E2,5.264203521E1 +3.182150000E2,5.344854544E1 +3.184600000E2,5.656777951E1 +3.187200000E2,5.398435402E1 +3.189820000E2,5.410695962E1 +3.192460000E2,5.344168860E1 +3.195780000E2,5.697626360E1 +3.198350000E2,6.073105615E1 +3.200880000E2,6.621432780E1 +3.203460000E2,6.597785722E1 +3.205980000E2,5.907542432E1 +3.208920000E2,5.702769809E1 +3.211760000E2,6.207459825E1 +3.214520000E2,5.921715282E1 +3.217010000E2,5.501368146E1 +3.220030000E2,5.927746858E1 +3.223090000E2,5.878714279E1 +3.226530000E2,6.209253703E1 +3.229180000E2,5.801419316E1 +3.231660000E2,6.150680788E1 +3.234110000E2,5.950436139E1 +3.236660000E2,5.694006868E1 +3.239890000E2,5.964691948E1 +3.242420000E2,6.322261269E1 +3.245070000E2,5.967413832E1 +3.247540000E2,5.743115651E1 +3.250010000E2,5.693057833E1 +3.252760000E2,5.076009335E1 +3.255600000E2,5.432440321E1 +3.258270000E2,5.728583073E1 +3.262160000E2,6.158050311E1 +3.264570000E2,5.788548067E1 +3.267330000E2,5.661485397E1 +3.270280000E2,5.698735139E1 +3.272870000E2,5.428158234E1 +3.275550000E2,5.401192370E1 +3.278320000E2,5.894424302E1 +3.281050000E2,5.279140275E1 +3.283850000E2,5.366788524E1 +3.286760000E2,5.569462346E1 +3.289750000E2,5.484501656E1 +3.292730000E2,5.654335493E1 +3.295550000E2,5.483429560E1 +3.298560000E2,5.516099131E1 +3.301720000E2,5.150081287E1 +3.304560000E2,5.126263973E1 +3.307930000E2,4.943715566E1 +3.310330000E2,5.297477083E1 +3.312800000E2,4.994759883E1 +3.316030000E2,5.283028939E1 +3.318860000E2,5.150402936E1 +3.321790000E2,5.777668868E1 +3.325470000E2,5.446937149E1 +3.328030000E2,5.754474494E1 +3.330410000E2,5.437750931E1 +3.333210000E2,5.378201308E1 +3.335760000E2,5.486825362E1 +3.338240000E2,5.338123539E1 +3.340700000E2,5.704649160E1 +3.343740000E2,5.576563429E1 +3.346640000E2,5.503590574E1 +3.349650000E2,5.539431503E1 +3.352080000E2,5.782097549E1 +3.355080000E2,5.260852375E1 +3.358690000E2,6.012616228E1 +3.361400000E2,5.534922411E1 +3.363810000E2,5.436765301E1 +3.366230000E2,5.007736554E1 +3.368850000E2,5.304270830E1 +3.371340000E2,5.106682022E1 +3.373960000E2,5.491262243E1 +3.376890000E2,5.891119644E1 +3.379320000E2,5.554676164E1 +3.382420000E2,5.491809401E1 +3.385700000E2,6.003743295E1 +3.389490000E2,5.964265847E1 +3.392140000E2,6.009419780E1 +3.394780000E2,5.950800538E1 +3.397810000E2,5.514081916E1 +3.400260000E2,5.654810222E1 +3.403230000E2,5.919098275E1 +3.405600000E2,5.937137097E1 +3.408650000E2,5.885711760E1 +3.411560000E2,6.122434193E1 +3.414060000E2,6.101494213E1 +3.416650000E2,5.685059098E1 +3.419710000E2,4.988163583E1 +3.423360000E2,5.097871962E1 +3.426300000E2,6.097968551E1 +3.429260000E2,5.246223058E1 +3.431760000E2,5.140448000E1 +3.434570000E2,5.162147831E1 +3.436910000E2,5.437509469E1 +3.439650000E2,5.588289675E1 +3.442010000E2,5.342482218E1 +3.444930000E2,5.621155564E1 +3.447310000E2,5.753713233E1 +3.450340000E2,5.873821374E1 +3.453240000E2,5.674648484E1 +3.455770000E2,5.843857274E1 +3.458770000E2,6.170678128E1 +3.461770000E2,5.848319050E1 +3.464240000E2,5.996271814E1 +3.467290000E2,5.583139448E1 +3.470000000E2,5.558324990E1 +3.472360000E2,5.638821787E1 +3.474880000E2,6.015129432E1 +3.477550000E2,6.074195357E1 +3.480530000E2,6.258101891E1 +3.483260000E2,6.280209300E1 +3.486840000E2,5.935598721E1 +3.489370000E2,6.423635683E1 +3.492060000E2,7.026891453E1 +3.495130000E2,5.477771858E1 +3.498240000E2,6.143080763E1 +3.500700000E2,6.077206860E1 +3.503130000E2,5.816670512E1 +3.506030000E2,6.220374728E1 +3.509040000E2,6.435510927E1 +3.511560000E2,6.387906049E1 +3.514240000E2,6.324188625E1 +3.517710000E2,6.217871174E1 +3.520510000E2,6.349767138E1 +3.523000000E2,5.947763114E1 +3.525840000E2,5.623947938E1 +3.528810000E2,5.940245648E1 +3.531830000E2,5.323006485E1 +3.534790000E2,4.756673680E1 +3.537830000E2,5.761743216E1 +3.540870000E2,5.701856444E1 +3.543720000E2,5.507707077E1 +3.546320000E2,5.561457107E1 +3.549330000E2,6.036785424E1 +3.552860000E2,5.818319920E1 +3.555390000E2,5.636477080E1 +3.557840000E2,5.686236286E1 +3.560330000E2,6.137502104E1 +3.563290000E2,6.039421004E1 +3.565710000E2,5.873926214E1 +3.568160000E2,5.984737812E1 +3.570890000E2,5.898549785E1 +3.573200000E2,5.804358229E1 +3.576080000E2,5.178825198E1 +3.578380000E2,5.333798630E1 +3.581470000E2,5.663121054E1 +3.584860000E2,5.705169894E1 +3.587470000E2,5.488627438E1 +3.590020000E2,5.493171173E1 +3.592590000E2,5.280801534E1 +3.595110000E2,5.919356657E1 +3.597710000E2,6.061921525E1 +3.600770000E2,5.781838960E1 +3.603810000E2,5.824405535E1 +3.606410000E2,5.734273072E1 +3.608930000E2,5.860073318E1 +3.611440000E2,5.158577335E1 +3.614110000E2,5.569804167E1 +3.617550000E2,5.732029627E1 +3.620530000E2,5.599725951E1 +3.623260000E2,5.427140428E1 +3.625700000E2,5.439119305E1 +3.628680000E2,5.768088704E1 +3.631160000E2,5.322266305E1 +3.634170000E2,5.611257515E1 +3.637150000E2,5.466283243E1 +3.639540000E2,5.648497192E1 +3.642520000E2,5.982456496E1 +3.644910000E2,5.683499776E1 +3.648080000E2,5.424977228E1 +3.650550000E2,5.261749952E1 +3.653010000E2,5.976464589E1 +3.655400000E2,5.630627545E1 +3.658370000E2,5.855663855E1 +3.660660000E2,5.839517218E1 +3.663050000E2,5.701336937E1 +3.666100000E2,6.057417753E1 +3.668530000E2,5.660058929E1 +3.671060000E2,5.360906173E1 +3.673270000E2,5.766761713E1 +3.676020000E2,5.473947199E1 +3.679270000E2,5.730791892E1 +3.681990000E2,5.368134624E1 +3.685210000E2,5.122725302E1 +3.688180000E2,5.413949330E1 +3.690720000E2,5.953240184E1 +3.693650000E2,5.834363401E1 +3.696110000E2,4.952962201E1 +3.698620000E2,6.082605721E1 +3.701240000E2,5.541205242E1 +3.703840000E2,5.595936781E1 +3.706570000E2,5.751180267E1 +3.709050000E2,5.510413826E1 +3.712530000E2,5.236304209E1 +3.715330000E2,5.429686706E1 +3.717680000E2,5.365135821E1 +3.720680000E2,5.442146139E1 +3.723070000E2,5.193301537E1 +3.726070000E2,5.573089397E1 +3.728540000E2,5.084704353E1 +3.731070000E2,5.244752708E1 +3.734250000E2,5.501438711E1 +3.737160000E2,5.701937821E1 +3.739830000E2,5.913008265E1 +3.743030000E2,6.329763996E1 +3.745490000E2,5.828010903E1 +3.748110000E2,5.514928454E1 +3.750560000E2,5.535724603E1 +3.753250000E2,6.062318511E1 +3.756820000E2,5.853801057E1 +3.759720000E2,6.218740595E1 +3.762560000E2,6.130322227E1 +3.764780000E2,5.705598438E1 +3.767430000E2,5.675025411E1 +3.770350000E2,5.562309411E1 +3.773330000E2,6.171478403E1 +3.776660000E2,5.752069737E1 +3.779640000E2,5.869913239E1 +3.782130000E2,5.802158707E1 +3.785030000E2,5.920699755E1 +3.787580000E2,5.984700757E1 +3.790120000E2,5.874214142E1 +3.792820000E2,5.792329599E1 +3.795460000E2,6.240429581E1 +3.798520000E2,5.924961400E1 +3.800960000E2,5.655548581E1 +3.803510000E2,5.997047167E1 +3.806590000E2,5.894207932E1 +3.810310000E2,5.556916558E1 +3.813250000E2,5.709965860E1 +3.815810000E2,5.724657649E1 +3.818690000E2,5.634885250E1 +3.821660000E2,5.381597934E1 +3.824070000E2,5.409431797E1 +3.827020000E2,5.558304395E1 +3.829400000E2,5.836087965E1 +3.832380000E2,5.621848827E1 +3.834740000E2,5.756105430E1 +3.837670000E2,5.972981317E1 +3.840620000E2,6.110722903E1 +3.842970000E2,6.011338906E1 +3.846120000E2,6.632548976E1 +3.849300000E2,5.632542095E1 +3.852340000E2,5.660090160E1 +3.854760000E2,5.637042997E1 +3.857700000E2,6.483820819E1 +3.860160000E2,6.294386681E1 +3.862760000E2,6.248693097E1 +3.865740000E2,5.966646580E1 +3.868130000E2,5.884596060E1 +3.871230000E2,6.069045984E1 +3.874660000E2,5.535227762E1 +3.877260000E2,5.453589064E1 +3.879920000E2,5.803286513E1 +3.882920000E2,6.338575111E1 +3.885370000E2,6.297665471E1 +3.888380000E2,6.078963895E1 +3.890870000E2,6.078711186E1 +3.893350000E2,5.918580133E1 +3.896040000E2,5.645003340E1 +3.899070000E2,5.868887980E1 +3.901560000E2,5.816727924E1 +3.904840000E2,5.908711574E1 +3.907830000E2,5.165109059E1 +3.910410000E2,5.747977046E1 +3.913230000E2,5.600926578E1 +3.916170000E2,5.743239537E1 +3.918580000E2,5.999528635E1 +3.921650000E2,5.924448814E1 +3.924670000E2,6.347749271E1 +3.927590000E2,6.285842009E1 +3.929960000E2,6.439104552E1 +3.933010000E2,6.092208558E1 +3.935450000E2,5.889760176E1 +3.939100000E2,5.798312040E1 +3.941770000E2,5.909426563E1 +3.944250000E2,5.971090911E1 +3.946810000E2,5.379436409E1 +3.949270000E2,5.134339741E1 +3.951700000E2,5.739586279E1 +3.954270000E2,5.255911571E1 +3.956850000E2,5.149310319E1 +3.959500000E2,5.723685944E1 +3.962270000E2,5.622087783E1 +3.964720000E2,6.119098643E1 +3.967310000E2,6.249797436E1 +3.970320000E2,5.838309249E1 +3.973440000E2,5.720898847E1 +3.976100000E2,5.357982700E1 +3.978600000E2,5.091452983E1 +3.981070000E2,4.781274510E1 +3.983520000E2,4.684320786E1 +3.986530000E2,4.867937405E1 +3.988970000E2,4.947454895E1 +3.991740000E2,4.941937240E1 +3.994180000E2,5.206925818E1 +3.997200000E2,5.099596962E1 +3.999720000E2,5.059119317E1 +4.002350000E2,4.980275756E1 +4.004940000E2,5.514017077E1 +4.008060000E2,5.354499430E1 +4.011150000E2,5.377825353E1 +4.013980000E2,5.657928040E1 +4.016460000E2,6.437756844E1 +4.019070000E2,6.072529486E1 +4.021970000E2,5.876291143E1 +4.024430000E2,6.118567430E1 +4.027460000E2,5.925186578E1 +4.030590000E2,5.727531678E1 +4.033610000E2,6.211123432E1 +4.036680000E2,6.041950332E1 +4.039230000E2,6.161200416E1 +4.041780000E2,6.047480336E1 +4.044620000E2,5.905442986E1 +4.047060000E2,5.729915709E1 +4.049630000E2,6.020933408E1 +4.052500000E2,5.845152603E1 +4.055600000E2,5.814304967E1 +4.058210000E2,5.866194002E1 +4.060640000E2,5.736420578E1 +4.063180000E2,6.107395805E1 +4.065790000E2,5.985269852E1 +4.069480000E2,5.745859610E1 +4.072050000E2,5.693680110E1 +4.074960000E2,6.165201185E1 +4.077470000E2,6.131132241E1 +4.079970000E2,5.824414723E1 +4.083050000E2,5.958451387E1 +4.085600000E2,5.739792126E1 +4.088150000E2,5.573389816E1 +4.090850000E2,5.530698039E1 +4.093810000E2,5.634371531E1 +4.096660000E2,5.880658089E1 +4.099920000E2,5.804298004E1 +4.102870000E2,5.688352401E1 +4.106310000E2,5.573115839E1 +4.109280000E2,5.368053116E1 +4.112180000E2,5.474384188E1 +4.114650000E2,5.380195893E1 +4.117660000E2,5.718608674E1 +4.120140000E2,5.703743686E1 +4.122910000E2,5.985228158E1 +4.125620000E2,6.278694860E1 +4.128210000E2,5.839550633E1 +4.130600000E2,6.029373556E1 +4.133710000E2,5.711050636E1 +4.136150000E2,5.200468588E1 +4.138820000E2,5.769230508E1 +4.141370000E2,5.333759168E1 +4.143860000E2,5.632377961E1 +4.146570000E2,5.647744894E1 +4.149040000E2,5.667945226E1 +4.151840000E2,5.669404445E1 +4.154420000E2,6.072374556E1 +4.157420000E2,5.606444578E1 +4.159850000E2,5.623596320E1 +4.162830000E2,5.264542492E1 +4.165340000E2,5.359803767E1 +4.168600000E2,5.691340897E1 +4.171060000E2,5.636326143E1 +4.173490000E2,6.276141082E1 +4.176080000E2,6.197471417E1 +4.178580000E2,5.777170976E1 +4.181050000E2,5.407671770E1 +4.183760000E2,4.795453020E1 +4.186580000E2,5.871005652E1 +4.188870000E2,6.069158080E1 +4.191320000E2,6.112379328E1 +4.193750000E2,5.584116633E1 +4.196280000E2,6.302854070E1 +4.199610000E2,6.640457067E1 +4.202240000E2,6.337314603E1 +4.205160000E2,5.904470105E1 +4.208200000E2,5.799078909E1 +4.210810000E2,5.975635789E1 +4.213260000E2,6.334088587E1 +4.215900000E2,5.849627934E1 +4.218550000E2,5.894070219E1 +4.221030000E2,5.961371776E1 +4.223550000E2,5.281830949E1 +4.225970000E2,4.892580508E1 +4.229130000E2,5.950646935E1 +4.232610000E2,6.303011111E1 +4.235630000E2,6.030515180E1 +4.238060000E2,5.832387195E1 +4.240560000E2,6.126571743E1 +4.243280000E2,5.961805347E1 +4.245710000E2,5.916464366E1 +4.248300000E2,6.404431780E1 +4.251020000E2,6.161392817E1 +4.253630000E2,6.303875005E1 +4.256110000E2,6.294329578E1 +4.258560000E2,6.495739223E1 +4.261620000E2,6.352748415E1 +4.265140000E2,6.360144813E1 +4.267650000E2,6.320185268E1 +4.270250000E2,6.598206760E1 +4.272910000E2,5.736158392E1 +4.275300000E2,5.632655800E1 +4.277760000E2,5.626186588E1 +4.280650000E2,5.992298879E1 +4.283460000E2,5.976814640E1 +4.285960000E2,5.617047451E1 +4.288540000E2,5.410240194E1 +4.291290000E2,5.524345530E1 +4.293550000E2,5.025485629E1 +4.297050000E2,5.094849624E1 +4.299600000E2,5.349595208E1 +4.302230000E2,5.668766668E1 +4.304690000E2,5.470073040E1 +4.307330000E2,5.808421323E1 +4.310240000E2,5.815977776E1 +4.312740000E2,5.751031291E1 +4.315190000E2,6.045600028E1 +4.318300000E2,5.967896339E1 +4.320980000E2,5.746835753E1 +4.324020000E2,5.874054152E1 +4.327010000E2,5.770096959E1 +4.330460000E2,5.851412717E1 +4.333220000E2,5.970473393E1 +4.335930000E2,6.024030776E1 +4.338530000E2,5.564089573E1 +4.341340000E2,5.328000065E1 +4.343790000E2,5.522789934E1 +4.346930000E2,5.271905966E1 +4.349910000E2,5.685384424E1 +4.352400000E2,5.751176106E1 +4.355350000E2,5.654290580E1 +4.357760000E2,5.976937629E1 +4.360780000E2,5.445311615E1 +4.363520000E2,5.460006243E1 +4.366010000E2,5.402958946E1 +4.369120000E2,5.611325616E1 +4.371660000E2,5.675575065E1 +4.374120000E2,5.605818704E1 +4.377070000E2,5.614720111E1 +4.379470000E2,5.596280974E1 +4.382450000E2,5.764305460E1 +4.384820000E2,6.015340826E1 +4.387240000E2,6.073594369E1 +4.390310000E2,5.846982437E1 +4.393110000E2,5.837342754E1 +4.396160000E2,5.758988397E1 +4.398810000E2,5.375393273E1 +4.401700000E2,5.590416510E1 +4.404180000E2,5.649267014E1 +4.406570000E2,5.809884175E1 +4.409200000E2,5.934788425E1 +4.411750000E2,5.883690392E1 +4.414270000E2,5.465512306E1 +4.416780000E2,5.456039720E1 +4.419260000E2,6.053551690E1 +4.422020000E2,5.446896121E1 +4.425270000E2,5.304300238E1 +4.428480000E2,5.413537656E1 +4.431230000E2,5.590535088E1 +4.433740000E2,5.516889265E1 +4.436180000E2,5.375803139E1 +4.439250000E2,5.440731706E1 +4.441670000E2,5.378894171E1 +4.444170000E2,5.676009311E1 +4.447160000E2,5.433224316E1 +4.449620000E2,5.431777666E1 +4.452100000E2,5.220353562E1 +4.454560000E2,5.525232641E1 +4.456950000E2,5.348687858E1 +4.459900000E2,5.571408478E1 +4.462320000E2,5.590054486E1 +4.464840000E2,5.627503595E1 +4.467390000E2,5.824548232E1 +4.469910000E2,5.637049423E1 +4.472460000E2,5.754096885E1 +4.474930000E2,5.335865942E1 +4.477890000E2,5.765888938E1 +4.480780000E2,6.102087464E1 +4.483520000E2,6.006145593E1 +4.486510000E2,5.685958774E1 +4.489610000E2,5.748149351E1 +4.492370000E2,5.709623916E1 +4.495040000E2,5.821496279E1 +4.497570000E2,5.970222946E1 +4.500030000E2,5.750976802E1 +4.502380000E2,5.796549321E1 +4.505370000E2,5.665777454E1 +4.508330000E2,5.605038109E1 +4.510750000E2,5.504306522E1 +4.513230000E2,5.112487870E1 +4.515900000E2,5.559150914E1 +4.518300000E2,5.656933458E1 +4.520810000E2,6.082180135E1 +4.524470000E2,5.774965281E1 +4.527120000E2,5.847728207E1 +4.529730000E2,5.711434047E1 +4.532810000E2,5.503285278E1 +4.535670000E2,5.614330822E1 +4.538610000E2,6.211492489E1 +4.541040000E2,6.003078695E1 +4.543760000E2,5.766611466E1 +4.546280000E2,5.912518267E1 +4.549300000E2,5.969489895E1 +4.551760000E2,5.509558621E1 +4.554320000E2,5.963291683E1 +4.556950000E2,6.194656842E1 +4.559980000E2,6.032793642E1 +4.562390000E2,5.874022110E1 +4.565060000E2,6.016749735E1 +4.567480000E2,5.985596964E1 +4.570070000E2,5.588678859E1 +4.572660000E2,5.541792762E1 +4.575660000E2,4.969164404E1 +4.578050000E2,4.976271573E1 +4.581060000E2,5.634137812E1 +4.583500000E2,5.321783082E1 +4.586280000E2,5.816393976E1 +4.588870000E2,5.817726916E1 +4.591860000E2,5.398220140E1 +4.594690000E2,5.572842498E1 +4.597270000E2,5.759574297E1 +4.600290000E2,5.492384706E1 +4.602790000E2,5.570826682E1 +4.605780000E2,5.619496661E1 +4.608690000E2,5.993990435E1 +4.611730000E2,6.185390750E1 +4.614300000E2,6.125031183E1 +4.617390000E2,6.047450440E1 +4.621070000E2,5.913093195E1 +4.623500000E2,6.032535990E1 +4.626490000E2,5.803726699E1 +4.628910000E2,5.968748294E1 +4.631850000E2,5.792594347E1 +4.634330000E2,5.623910190E1 +4.636850000E2,6.026318401E1 +4.639240000E2,6.002593060E1 +4.641990000E2,5.694813724E1 +4.644200000E2,5.456998819E1 +4.646660000E2,5.683591124E1 +4.649070000E2,5.893829862E1 +4.652630000E2,5.637983039E1 +4.655160000E2,5.571226470E1 +4.657720000E2,5.582065666E1 +4.660510000E2,5.436378979E1 +4.663550000E2,5.697364508E1 +4.666350000E2,5.716664070E1 +4.668800000E2,6.098104772E1 +4.671260000E2,5.932872997E1 +4.673960000E2,5.573089336E1 +4.676430000E2,5.791664461E1 +4.678890000E2,5.589855895E1 +4.681490000E2,6.359324433E1 +4.685010000E2,5.902079393E1 +4.687870000E2,6.085500324E1 +4.690180000E2,6.401116813E1 +4.693190000E2,6.157634911E1 +4.695830000E2,6.068297160E1 +4.698370000E2,5.867738322E1 +4.701080000E2,6.069776659E1 +4.703530000E2,5.904983802E1 +4.706060000E2,5.642725313E1 +4.708480000E2,5.600286970E1 +4.711080000E2,5.678564623E1 +4.714020000E2,5.139543439E1 +4.717220000E2,5.924511995E1 +4.720300000E2,5.309180697E1 +4.722790000E2,5.295961103E1 +4.725820000E2,5.448425692E1 +4.728350000E2,5.346047841E1 +4.731210000E2,5.563518239E1 +4.733630000E2,5.630991562E1 +4.736070000E2,5.519344442E1 +4.738520000E2,5.696356709E1 +4.741150000E2,5.721588368E1 +4.743810000E2,5.556082681E1 +4.746430000E2,5.453201409E1 +4.749610000E2,5.621559396E1 +4.752460000E2,6.170975330E1 +4.755640000E2,6.352753975E1 +4.758660000E2,5.818774343E1 +4.761780000E2,6.177058435E1 +4.764630000E2,5.829511769E1 +4.766910000E2,5.658732029E1 +4.769520000E2,6.006113158E1 +4.772530000E2,6.022385702E1 +4.775200000E2,5.965858240E1 +4.778410000E2,5.970326758E1 +4.780960000E2,5.911597661E1 +4.783440000E2,5.656338446E1 +4.786020000E2,5.723922467E1 +4.788680000E2,5.700163516E1 +4.791490000E2,6.083416080E1 +4.794510000E2,5.899425763E1 +4.797630000E2,5.820674449E1 +4.800620000E2,5.648898879E1 +4.803380000E2,5.465743937E1 +4.806090000E2,5.006847009E1 +4.809050000E2,5.870050130E1 +4.811580000E2,5.878066343E1 +4.814060000E2,5.929414686E1 +4.817070000E2,5.758425183E1 +4.819760000E2,5.151398214E1 +4.822410000E2,5.772956896E1 +4.824880000E2,5.913153701E1 +4.827710000E2,5.814746383E1 +4.830140000E2,6.018356701E1 +4.832870000E2,5.985078792E1 +4.835070000E2,6.081307149E1 +4.837500000E2,5.810932132E1 +4.840440000E2,5.700769218E1 +4.842880000E2,5.815119989E1 +4.845920000E2,5.595850943E1 +4.849330000E2,5.891167795E1 +4.851960000E2,5.413833723E1 +4.854760000E2,6.184122004E1 +4.857700000E2,6.074653742E1 +4.860130000E2,6.033024099E1 +4.862530000E2,5.218562994E1 +4.865560000E2,5.902882093E1 +4.868150000E2,6.397338635E1 +4.870790000E2,6.543155406E1 +4.873440000E2,6.181389827E1 +4.876070000E2,6.381240883E1 +4.878770000E2,6.121521197E1 +4.882210000E2,5.780293585E1 +4.884640000E2,5.941826112E1 +4.887100000E2,6.118399944E1 +4.889830000E2,6.000089150E1 +4.892940000E2,5.873163787E1 +4.895350000E2,5.943116280E1 +4.897770000E2,5.867927357E1 +4.900230000E2,6.190584219E1 +4.903270000E2,6.313044892E1 +4.905550000E2,6.096660510E1 +4.907970000E2,5.773464228E1 +4.911090000E2,5.720144266E1 +4.914750000E2,5.797465536E1 +4.917410000E2,6.063197812E1 +4.920040000E2,5.799562897E1 +4.922950000E2,5.391853563E1 +4.925940000E2,6.053973121E1 +4.928320000E2,5.781822977E1 +4.931250000E2,6.541242849E1 +4.933660000E2,6.151252976E1 +4.936620000E2,5.962569242E1 +4.939140000E2,6.114162989E1 +4.941750000E2,6.074296596E1 +4.944160000E2,5.738425867E1 +4.947510000E2,6.084173002E1 +4.950140000E2,5.911448476E1 +4.953100000E2,6.076832164E1 +4.955530000E2,6.357047625E1 +4.958480000E2,6.344590866E1 +4.960850000E2,6.154350148E1 +4.963870000E2,5.815666478E1 +4.966770000E2,5.862350251E1 +4.969720000E2,5.162851816E1 +4.972640000E2,5.887916548E1 +4.975020000E2,6.130693279E1 +4.977480000E2,6.164914583E1 +4.980300000E2,5.689153252E1 +4.983240000E2,6.054571109E1 +4.985610000E2,5.779234792E1 +4.987980000E2,6.281334084E1 +4.991290000E2,6.074883772E1 +4.994230000E2,6.344972933E1 +4.996620000E2,6.040546490E1 +4.999570000E2,6.143019571E1 +5.002020000E2,6.117826214E1 +5.004980000E2,6.217883653E1 +5.007380000E2,6.294102819E1 +5.010930000E2,6.516475449E1 +5.013550000E2,6.119184016E1 +5.016670000E2,6.096554209E1 +5.019390000E2,6.197647057E1 +5.022530000E2,6.186754720E1 +5.025630000E2,5.954982776E1 +5.028510000E2,6.115486405E1 +5.031440000E2,6.348254173E1 +5.033820000E2,5.960570527E1 +5.036780000E2,5.977682583E1 +5.039180000E2,5.709696054E1 +5.042580000E2,6.265263203E1 +5.045140000E2,6.166583393E1 +5.047590000E2,6.184451596E1 +5.050170000E2,6.196658471E1 +5.053150000E2,6.014630927E1 +5.055610000E2,6.055201466E1 +5.058690000E2,6.189129858E1 +5.062120000E2,6.557808579E1 +5.064770000E2,6.080176744E1 +5.067370000E2,6.164107472E1 +5.069870000E2,6.497302078E1 +5.072490000E2,6.320126990E1 +5.076210000E2,6.073801439E1 +5.078780000E2,5.612097300E1 +5.081420000E2,5.978501024E1 +5.084360000E2,6.061444996E1 +5.086860000E2,6.272142993E1 +5.089270000E2,6.250458760E1 +5.092250000E2,5.860749180E1 +5.094720000E2,6.368373725E1 +5.097760000E2,6.005985592E1 +5.100780000E2,5.959557057E1 +5.103410000E2,6.085764000E1 +5.106360000E2,6.210563273E1 +5.109960000E2,6.125336704E1 +5.112590000E2,5.627814405E1 +5.115470000E2,6.253958528E1 +5.118480000E2,6.261683940E1 +5.120990000E2,5.782347554E1 +5.123560000E2,6.181201679E1 +5.126370000E2,6.425542150E1 +5.129400000E2,6.148973489E1 +5.132300000E2,6.230215374E1 +5.134720000E2,6.332855968E1 +5.137620000E2,5.875203916E1 +5.140950000E2,6.043073123E1 +5.143340000E2,5.829778385E1 +5.146280000E2,6.530539120E1 +5.148660000E2,5.725439078E1 +5.151580000E2,6.255661351E1 +5.153960000E2,6.412193683E1 +5.156410000E2,6.315775814E1 +5.158840000E2,6.025521775E1 +5.161460000E2,5.892698587E1 +5.164080000E2,5.956507822E1 +5.166610000E2,6.162757540E1 +5.169960000E2,6.009082976E1 +5.173360000E2,5.999682475E1 +5.176380000E2,6.121463264E1 +5.178750000E2,5.929809726E1 +5.181460000E2,5.746668369E1 +5.183810000E2,5.919113180E1 +5.186360000E2,5.827917213E1 +5.189280000E2,5.902314388E1 +5.192310000E2,6.116063950E1 +5.195310000E2,6.026149556E1 +5.198180000E2,5.851929656E1 +5.200920000E2,5.750929671E1 +5.204160000E2,5.729942637E1 +5.207470000E2,5.472104161E1 +5.210390000E2,6.169397748E1 +5.213450000E2,6.081589597E1 +5.216480000E2,6.278728872E1 +5.219550000E2,6.266319096E1 +5.222160000E2,6.478840582E1 +5.224820000E2,6.255888661E1 +5.227330000E2,6.119451713E1 +5.229970000E2,6.244953097E1 +5.232800000E2,6.000703556E1 +5.236020000E2,5.885323025E1 +5.239510000E2,5.826073845E1 +5.242570000E2,5.807287072E1 +5.245200000E2,5.931641295E1 +5.247800000E2,5.775994158E1 +5.250310000E2,6.167249992E1 +5.253010000E2,6.027694641E1 +5.255430000E2,6.329659774E1 +5.258240000E2,6.254377160E1 +5.261330000E2,6.489975363E1 +5.263840000E2,5.999325642E1 +5.266440000E2,5.885077446E1 +5.268920000E2,6.439829299E1 +5.272450000E2,6.165608373E1 +5.275110000E2,5.418048629E1 +5.277700000E2,5.656005066E1 +5.280170000E2,6.215252288E1 +5.283170000E2,5.743407158E1 +5.285650000E2,5.831214783E1 +5.288200000E2,6.066735547E1 +5.290820000E2,5.994603081E1 +5.293240000E2,5.951550591E1 +5.295810000E2,6.264700953E1 +5.298380000E2,5.736628274E1 +5.301360000E2,5.590406638E1 +5.304530000E2,6.041033291E1 +5.307000000E2,5.968691140E1 +5.309950000E2,5.730835182E1 +5.312390000E2,5.823026311E1 +5.315470000E2,5.871167442E1 +5.318430000E2,5.990765833E1 +5.321400000E2,6.387020611E1 +5.324510000E2,6.077699448E1 +5.326980000E2,5.895294298E1 +5.329820000E2,6.041997988E1 +5.333050000E2,5.806877757E1 +5.336110000E2,5.682362418E1 +5.340220000E2,5.915478638E1 +5.342790000E2,6.110946170E1 +5.345430000E2,5.735857105E1 +5.348060000E2,5.684014045E1 +5.350480000E2,6.043627860E1 +5.353500000E2,5.982929159E1 +5.356290000E2,5.986217314E1 +5.358770000E2,5.677131614E1 +5.361310000E2,5.763848566E1 +5.363810000E2,6.142463983E1 +5.366730000E2,5.634211854E1 +5.369290000E2,5.547608220E1 +5.372430000E2,5.920768747E1 +5.375170000E2,6.113406656E1 +5.377700000E2,6.208964505E1 +5.380710000E2,6.100572025E1 +5.383260000E2,6.352283467E1 +5.386320000E2,5.898993907E1 +5.389570000E2,5.503782412E1 +5.392560000E2,5.663453376E1 +5.395360000E2,6.406828344E1 +5.398060000E2,5.890955595E1 +5.400700000E2,6.046868424E1 +5.403380000E2,5.979639772E1 +5.406170000E2,5.838685694E1 +5.409120000E2,5.933573087E1 +5.411500000E2,5.970536072E1 +5.414430000E2,5.461931777E1 +5.417380000E2,5.891969668E1 +5.419780000E2,6.086182172E1 +5.422730000E2,5.706230292E1 +5.425150000E2,6.002937875E1 +5.428150000E2,5.733734968E1 +5.430520000E2,5.791730719E1 +5.433430000E2,5.451667439E1 +5.436740000E2,5.601232928E1 +5.439430000E2,6.067749331E1 +5.441960000E2,6.044443396E1 +5.445120000E2,6.332642539E1 +5.448320000E2,6.369907597E1 +5.451010000E2,6.327412880E1 +5.453640000E2,6.380509737E1 +5.456090000E2,6.199528902E1 +5.458550000E2,5.905332967E1 +5.461530000E2,5.748064798E1 +5.463920000E2,5.793139247E1 +5.466900000E2,5.931551966E1 +5.470480000E2,6.345498755E1 +5.473610000E2,5.881486603E1 +5.476220000E2,5.928200098E1 +5.478810000E2,5.577309321E1 +5.481470000E2,5.875325885E1 +5.483980000E2,6.007409743E1 +5.486490000E2,6.070612531E1 +5.488940000E2,5.934549940E1 +5.491520000E2,6.170511636E1 +5.494020000E2,6.376886521E1 +5.497010000E2,6.406587518E1 +5.499360000E2,6.365684538E1 +5.503130000E2,6.009406633E1 +5.505850000E2,6.014270409E1 +5.508500000E2,5.879153887E1 +5.511470000E2,5.883782525E1 +5.513760000E2,5.773432280E1 +5.516350000E2,5.966648889E1 +5.518940000E2,5.472606108E1 +5.521930000E2,5.682429497E1 +5.524670000E2,5.619181968E1 +5.527770000E2,5.997719307E1 +5.530460000E2,5.879335465E1 +5.533410000E2,5.983416170E1 +5.537120000E2,5.957041909E1 +5.539420000E2,5.952828793E1 +5.542510000E2,5.971645274E1 +5.545000000E2,6.419337448E1 +5.547730000E2,6.634363344E1 +5.550770000E2,6.285856457E1 +5.553760000E2,5.654671197E1 +5.556440000E2,5.530754918E1 +5.558640000E2,5.889159880E1 +5.561110000E2,6.213947417E1 +5.563520000E2,6.860243311E1 +5.566480000E2,6.647018679E1 +5.569110000E2,6.420604516E1 +5.571650000E2,6.703462967E1 +5.574140000E2,6.648783593E1 +5.576540000E2,6.634001782E1 +5.579350000E2,6.293734135E1 +5.581770000E2,6.205918741E1 +5.584760000E2,5.247262167E1 +5.587220000E2,5.338734169E1 +5.589670000E2,5.662276325E1 +5.592110000E2,5.533465633E1 +5.595080000E2,5.854271946E1 +5.597740000E2,5.660649413E1 +5.600260000E2,6.333844075E1 +5.602860000E2,6.255943536E1 +5.605830000E2,5.392304486E1 +5.608700000E2,5.760897506E1 +5.611660000E2,5.713086887E1 +5.614070000E2,5.720157535E1 +5.617060000E2,5.026592539E1 +5.619510000E2,5.140995344E1 +5.621950000E2,5.663266073E1 +5.624370000E2,5.202695689E1 +5.627360000E2,6.084568668E1 +5.630550000E2,6.179643015E1 +5.632960000E2,5.833759539E1 +5.635420000E2,5.518782498E1 +5.638400000E2,6.578433315E1 +5.640880000E2,5.706187099E1 +5.643850000E2,5.456571992E1 +5.646300000E2,5.536479424E1 +5.649270000E2,5.930541070E1 +5.651540000E2,6.023199994E1 +5.653960000E2,5.612469871E1 +5.656980000E2,5.462007842E1 +5.659410000E2,5.278259804E1 +5.662890000E2,6.064478329E1 +5.666290000E2,5.682964802E1 +5.669030000E2,5.787828261E1 +5.671980000E2,5.712595091E1 +5.674890000E2,5.729764361E1 +5.677450000E2,5.241850056E1 +5.679980000E2,5.377155525E1 +5.682380000E2,5.485418547E1 +5.684830000E2,5.503746434E1 +5.687810000E2,5.398954643E1 +5.690230000E2,5.401913169E1 +5.693270000E2,5.953896215E1 +5.695680000E2,5.626247467E1 +5.698640000E2,6.040491706E1 +5.701050000E2,5.781813181E1 +5.703620000E2,5.733744349E1 +5.706600000E2,5.669032177E1 +5.709140000E2,5.453731954E1 +5.711580000E2,6.235364316E1 +5.714280000E2,5.958044055E1 +5.716860000E2,5.875696014E1 +5.719750000E2,5.570465139E1 +5.722310000E2,4.865236791E1 +5.725580000E2,5.257975627E1 +5.727900000E2,4.975389893E1 +5.730890000E2,5.658508958E1 +5.733660000E2,5.542284648E1 +5.735960000E2,5.536199936E1 +5.738990000E2,5.813474916E1 +5.741540000E2,5.417788207E1 +5.744370000E2,5.704170918E1 +5.746710000E2,5.736828455E1 +5.749280000E2,5.450874678E1 +5.751790000E2,5.610950442E1 +5.754890000E2,5.919887582E1 +5.758690000E2,5.780639378E1 +5.761700000E2,5.709220641E1 +5.764190000E2,5.815359781E1 +5.767060000E2,5.734155824E1 +5.769500000E2,5.925323086E1 +5.772430000E2,6.084767221E1 +5.775370000E2,5.852024889E1 +5.777780000E2,5.822649765E1 +5.780770000E2,5.829089322E1 +5.783770000E2,5.915481192E1 +5.786460000E2,5.996430642E1 +5.789780000E2,6.016421415E1 +5.792520000E2,6.221052482E1 +5.795090000E2,5.533993101E1 +5.798230000E2,6.537257407E1 +5.801220000E2,6.068836920E1 +5.803770000E2,5.728273812E1 +5.806510000E2,5.648369901E1 +5.809070000E2,5.397363349E1 +5.811690000E2,5.755294689E1 +5.814510000E2,5.957149991E1 +5.816900000E2,5.963092636E1 +5.820650000E2,6.778811076E1 +5.823240000E2,6.247529404E1 +5.825840000E2,6.073516327E1 +5.828380000E2,6.039356998E1 +5.830970000E2,5.764504824E1 +5.833990000E2,6.041396176E1 +5.836470000E2,6.355942860E1 +5.838990000E2,5.785560268E1 +5.841390000E2,6.060017525E1 +5.844440000E2,6.032069521E1 +5.847010000E2,5.760371100E1 +5.849440000E2,5.491620812E1 +5.851990000E2,5.957978671E1 +5.855370000E2,6.103184032E1 +5.857970000E2,5.896875350E1 +5.861120000E2,6.008190546E1 +5.863990000E2,5.687378544E1 +5.866450000E2,5.874294643E1 +5.869410000E2,5.870806017E1 +5.871860000E2,5.809143232E1 +5.874740000E2,5.847828699E1 +5.877850000E2,5.846232778E1 +5.880500000E2,5.755876921E1 +5.883650000E2,5.609032758E1 +5.887050000E2,5.685283394E1 +5.889730000E2,5.945975832E1 +5.892710000E2,6.114741701E1 +5.895110000E2,6.316132147E1 +5.898100000E2,6.715155367E1 +5.900480000E2,6.367866992E1 +5.903470000E2,5.131949120E1 +5.905900000E2,5.646494575E1 +5.908880000E2,6.096218752E1 +5.911270000E2,6.089171796E1 +5.913720000E2,6.319522071E1 +5.916410000E2,6.016553529E1 +5.920560000E2,5.915189166E1 +5.923330000E2,5.776862186E1 +5.925640000E2,5.840366445E1 +5.927890000E2,5.978914182E1 +5.930440000E2,6.058699711E1 +5.932650000E2,6.012895387E1 +5.935140000E2,6.295025578E1 +5.937520000E2,6.280196012E1 +5.940110000E2,6.194014009E1 +5.943340000E2,6.483906300E1 +5.945870000E2,5.918257578E1 +5.948380000E2,5.620333930E1 +5.951900000E2,6.323403421E1 +5.954240000E2,6.183177681E1 +5.956620000E2,6.120300936E1 +5.959650000E2,5.836925111E1 +5.961890000E2,6.106023171E1 +5.964920000E2,6.153658324E1 +5.967310000E2,6.490772593E1 +5.969960000E2,6.274228676E1 +5.972520000E2,6.139008510E1 +5.975050000E2,6.281232833E1 +5.978180000E2,6.254982632E1 +5.980890000E2,6.205794184E1 +5.983900000E2,6.438771503E1 +5.986230000E2,6.052772463E1 +5.988520000E2,6.375966703E1 +5.991380000E2,5.869985301E1 +5.993860000E2,6.050357712E1 +5.996630000E2,5.547835745E1 +5.999280000E2,5.400421666E1 +6.001960000E2,5.668252186E1 +6.004880000E2,6.001970320E1 +6.007680000E2,6.056987745E1 +6.010550000E2,6.461211967E1 +6.014090000E2,6.399838195E1 +6.016840000E2,5.485596323E1 +6.019450000E2,5.731519087E1 +6.022080000E2,6.691878914E1 +6.024720000E2,6.479201876E1 +6.027260000E2,6.412847214E1 +6.029760000E2,6.025795068E1 +6.032190000E2,6.098133491E1 +6.035120000E2,5.689387521E1 +6.038040000E2,5.639928101E1 +6.041550000E2,5.328068252E1 +6.044370000E2,5.639829798E1 +6.046770000E2,5.892330560E1 +6.049510000E2,5.315638413E1 +6.051900000E2,5.740260439E1 +6.054620000E2,5.339391440E1 +6.057500000E2,5.310371918E1 +6.060710000E2,5.460903952E1 +6.063050000E2,5.407304270E1 +6.065540000E2,5.870790541E1 +6.068060000E2,5.576782972E1 +6.070790000E2,5.976954147E1 +6.074640000E2,6.181180531E1 +6.077240000E2,6.194364733E1 +6.080150000E2,6.794225297E1 +6.082590000E2,6.236601361E1 +6.085470000E2,6.002700779E1 +6.088450000E2,5.971993236E1 +6.090930000E2,5.954735434E1 +6.093460000E2,5.907202371E1 +6.095920000E2,5.993658420E1 +6.098910000E2,5.530332259E1 +6.101850000E2,5.531802018E1 +6.104220000E2,5.376885939E1 +6.107780000E2,5.735355871E1 +6.110210000E2,5.868610156E1 +6.112710000E2,5.312122754E1 +6.115670000E2,5.745102631E1 +6.118550000E2,5.535536940E1 +6.121540000E2,5.088728731E1 +6.123960000E2,5.266907791E1 +6.126860000E2,5.386493253E1 +6.130010000E2,5.670623073E1 +6.132810000E2,5.563278655E1 +6.135150000E2,5.267172926E1 +6.138540000E2,5.386148816E1 +6.141880000E2,5.716468210E1 +6.144880000E2,5.526918781E1 +6.147190000E2,5.659553915E1 +6.149610000E2,5.648341007E1 +6.152730000E2,5.711745846E1 +6.155520000E2,5.918800114E1 +6.158010000E2,5.642548609E1 +6.161000000E2,5.635896926E1 +6.163480000E2,5.899225051E1 +6.166180000E2,5.374343244E1 +6.168690000E2,4.891042404E1 +6.172050000E2,5.065835680E1 +6.174560000E2,5.685264653E1 +6.177340000E2,5.429270039E1 +6.179930000E2,5.499548313E1 +6.182940000E2,5.407177565E1 +6.185300000E2,5.356533799E1 +6.188300000E2,5.378190643E1 +6.191140000E2,5.189020817E1 +6.193870000E2,5.046647494E1 +6.196450000E2,5.501107364E1 +6.198910000E2,5.798814538E1 +6.201660000E2,5.360844474E1 +6.205080000E2,5.353935610E1 +6.208080000E2,5.620189936E1 +6.210820000E2,6.216008765E1 +6.213360000E2,5.767015155E1 +6.216520000E2,6.210101060E1 +6.219320000E2,5.928042926E1 +6.221800000E2,6.394496555E1 +6.224980000E2,5.872213561E1 +6.227430000E2,5.927091626E1 +6.230010000E2,5.235592166E1 +6.232430000E2,6.313120608E1 +6.235470000E2,6.005436888E1 +6.238480000E2,5.999836557E1 +6.240930000E2,5.879748041E1 +6.243920000E2,5.978277378E1 +6.246440000E2,6.050724590E1 +6.249480000E2,6.282777276E1 +6.252520000E2,6.080897043E1 +6.255640000E2,5.889462949E1 +6.258270000E2,5.550476615E1 +6.260730000E2,5.586785505E1 +6.263620000E2,6.576560120E1 +6.266590000E2,6.102361259E1 +6.270050000E2,6.110507706E1 +6.272870000E2,5.753592100E1 +6.275410000E2,6.297666729E1 +6.278490000E2,6.037594793E1 +6.281160000E2,5.849898506E1 +6.284180000E2,6.165631601E1 +6.287090000E2,6.096774109E1 +6.289510000E2,6.176590968E1 +6.292460000E2,5.947061017E1 +6.294820000E2,6.109202024E1 +6.297790000E2,5.322559935E1 +6.301160000E2,4.971181861E1 +6.303880000E2,5.533921521E1 +6.307250000E2,5.478410742E1 +6.310240000E2,5.647795083E1 +6.313200000E2,5.797504265E1 +6.315690000E2,5.403019222E1 +6.318640000E2,5.301910781E1 +6.321010000E2,5.096544207E1 +6.324030000E2,5.324435941E1 +6.326360000E2,5.447050361E1 +6.328960000E2,5.932781903E1 +6.331500000E2,5.967228428E1 +6.334640000E2,6.319489971E1 +6.337810000E2,5.820271574E1 +6.340710000E2,5.910289699E1 +6.343170000E2,5.681937370E1 +6.346260000E2,5.582227275E1 +6.349350000E2,5.745831651E1 +6.352100000E2,5.504019385E1 +6.354620000E2,5.072303887E1 +6.357190000E2,5.366082959E1 +6.359690000E2,5.380227314E1 +6.362560000E2,4.818205454E1 +6.365090000E2,5.989908626E1 +6.368780000E2,5.659012846E1 +6.371610000E2,5.593157997E1 +6.374460000E2,5.135237935E1 +6.377000000E2,5.687788515E1 +6.379550000E2,5.943975502E1 +6.382630000E2,6.290957992E1 +6.385230000E2,5.827099811E1 +6.387780000E2,5.686391746E1 +6.390620000E2,5.771790911E1 +6.393200000E2,5.390066131E1 +6.395830000E2,5.358231960E1 +6.398480000E2,5.564565007E1 +6.401490000E2,5.205482155E1 +6.404200000E2,5.852280051E1 +6.407340000E2,4.836326193E1 +6.409980000E2,5.905115701E1 +6.412560000E2,5.622349390E1 +6.415040000E2,5.891737338E1 +6.417460000E2,5.749377856E1 +6.420310000E2,5.414095183E1 +6.422680000E2,5.482109112E1 +6.425170000E2,5.202942051E1 +6.428000000E2,4.903409276E1 +6.431250000E2,5.495098254E1 +6.434650000E2,5.777911761E1 +6.437680000E2,5.329076638E1 +6.440080000E2,5.886592322E1 +6.443070000E2,5.661637111E1 +6.445560000E2,5.459133399E1 +6.448230000E2,4.858613706E1 +6.450990000E2,5.642020356E1 +6.453590000E2,5.634614530E1 +6.456240000E2,5.769024626E1 +6.458900000E2,6.037646239E1 +6.461470000E2,5.712013563E1 +6.464260000E2,5.393237723E1 +6.467570000E2,5.443825449E1 +6.469850000E2,5.464133184E1 +6.472460000E2,5.185343249E1 +6.475170000E2,5.670688718E1 +6.477900000E2,5.808659132E1 +6.480150000E2,5.879711687E1 +6.483250000E2,5.860991669E1 +6.485730000E2,5.600484597E1 +6.488230000E2,5.291438286E1 +6.491020000E2,5.869236753E1 +6.493260000E2,5.826316690E1 +6.496250000E2,5.619306699E1 +6.499850000E2,6.085970714E1 +6.502400000E2,6.051231588E1 +6.505400000E2,6.096601072E1 +6.507990000E2,6.197068990E1 +6.511180000E2,6.520817743E1 +6.513810000E2,6.377577246E1 +6.516860000E2,6.105485617E1 +6.519940000E2,5.890751001E1 +6.522910000E2,5.911253604E1 +6.525370000E2,6.291937986E1 +6.528540000E2,6.252638881E1 +6.532210000E2,6.337356348E1 +6.535270000E2,5.894334263E1 +6.537830000E2,5.754939005E1 +6.540930000E2,5.500698560E1 +6.543880000E2,5.014350898E1 +6.546880000E2,5.646260920E1 +6.549870000E2,5.951282585E1 +6.552920000E2,6.099782791E1 +6.555480000E2,6.065538365E1 +6.558100000E2,6.827371953E1 +6.560790000E2,6.035931154E1 +6.563820000E2,6.267306134E1 +6.566350000E2,5.826452213E1 +6.568970000E2,6.092938143E1 +6.572010000E2,6.534130041E1 +6.575130000E2,6.111837506E1 +6.577770000E2,5.826481723E1 +6.580330000E2,5.918147323E1 +6.582980000E2,6.100230752E1 +6.585510000E2,6.302217459E1 +6.588060000E2,5.754956715E1 +6.591080000E2,6.111201710E1 +6.593520000E2,6.017410469E1 +6.597040000E2,6.031944923E1 +6.599450000E2,5.943575512E1 +6.602120000E2,5.868776340E1 +6.605570000E2,5.940543513E1 +6.608500000E2,5.886327816E1 +6.610920000E2,5.770522648E1 +6.613840000E2,5.442777508E1 +6.616200000E2,5.394232060E1 +6.619220000E2,5.856638842E1 +6.622160000E2,5.742664400E1 +6.624600000E2,5.472498345E1 +6.627560000E2,5.672985390E1 +6.629770000E2,5.834702318E1 +6.632250000E2,5.907602823E1 +6.634810000E2,5.873031221E1 +6.637670000E2,5.757130737E1 +6.640040000E2,5.572185824E1 +6.643070000E2,5.959142979E1 +6.645480000E2,5.851623707E1 +6.648520000E2,5.856887935E1 +6.650940000E2,6.397218192E1 +6.653890000E2,5.963692586E1 +6.656210000E2,5.934207027E1 +6.659580000E2,5.667856430E1 +6.662640000E2,5.811017468E1 +6.665550000E2,5.505265787E1 +6.667990000E2,5.558350894E1 +6.671320000E2,6.063017800E1 +6.674000000E2,5.568411381E1 +6.676510000E2,5.981422062E1 +6.679580000E2,5.723024768E1 +6.682820000E2,5.036028104E1 +6.685240000E2,5.199205823E1 +6.687970000E2,5.367328475E1 +6.691280000E2,5.936914884E1 +6.693940000E2,5.657797691E1 +6.696490000E2,6.065879377E1 +6.699270000E2,5.657054255E1 +6.702000000E2,5.655716576E1 +6.704770000E2,5.823562265E1 +6.707350000E2,6.065030224E1 +6.710140000E2,6.110776530E1 +6.712700000E2,5.714357796E1 +6.715170000E2,5.604236164E1 +6.717930000E2,6.041748871E1 +6.721240000E2,6.019765334E1 +6.724270000E2,5.928602786E1 +6.727750000E2,5.973060669E1 +6.730710000E2,6.059869751E1 +6.733250000E2,6.116850166E1 +6.736400000E2,6.145214709E1 +6.738890000E2,6.020118097E1 +6.741670000E2,6.048579637E1 +6.744720000E2,6.225337088E1 +6.747550000E2,5.853636068E1 +6.750030000E2,5.999204871E1 +6.752840000E2,5.433989895E1 +6.755100000E2,5.847308735E1 +6.758420000E2,5.913726954E1 +6.760830000E2,6.049449503E1 +6.763830000E2,5.545572399E1 +6.766370000E2,6.246077536E1 +6.768920000E2,6.029598130E1 +6.771340000E2,6.005864514E1 +6.774230000E2,6.582269585E1 +6.776700000E2,6.255104294E1 +6.779140000E2,6.623711836E1 +6.781740000E2,6.684819787E1 +6.784850000E2,6.877250850E1 +6.787420000E2,6.157084767E1 +6.789860000E2,6.054068573E1 +6.793290000E2,6.069583213E1 +6.795810000E2,6.124898856E1 +6.798240000E2,6.136691849E1 +6.800900000E2,6.035594762E1 +6.803920000E2,5.654106541E1 +6.806920000E2,5.587565134E1 +6.809940000E2,5.642134155E1 +6.813020000E2,5.749983358E1 +6.815830000E2,5.576151961E1 +6.818120000E2,5.714589311E1 +6.820580000E2,5.969510914E1 +6.823020000E2,5.824123453E1 +6.825680000E2,5.779273115E1 +6.828630000E2,5.699644891E1 +6.831010000E2,5.900876644E1 +6.833500000E2,6.335540424E1 +6.835940000E2,6.280432027E1 +6.838340000E2,6.194675910E1 +6.841290000E2,5.801082069E1 +6.843650000E2,5.652506879E1 +6.846570000E2,5.895404856E1 +6.848910000E2,5.873705448E1 +6.851950000E2,5.589704153E1 +6.855380000E2,5.379672362E1 +6.857910000E2,6.287056471E1 +6.860900000E2,6.081817617E1 +6.863340000E2,6.807593043E1 +6.866320000E2,5.604389930E1 +6.868800000E2,6.712075434E1 +6.871750000E2,6.290238552E1 +6.874740000E2,6.473105179E1 +6.877330000E2,5.873835234E1 +6.880180000E2,5.800563858E1 +6.882620000E2,5.540095032E1 +6.885810000E2,6.197881428E1 +6.888280000E2,5.541258482E1 +6.890890000E2,5.558277465E1 +6.894010000E2,4.965923685E1 +6.897080000E2,4.860020107E1 +6.899730000E2,5.608167548E1 +6.902300000E2,5.381305593E1 +6.904990000E2,6.079286270E1 +6.908000000E2,6.446965644E1 +6.910380000E2,6.556266140E1 +6.913400000E2,5.418444209E1 +6.916350000E2,5.205102491E1 +6.919820000E2,5.812981404E1 +6.922410000E2,6.500705260E1 +6.925070000E2,6.149947285E1 +6.927750000E2,5.695315316E1 +6.930870000E2,5.775854948E1 +6.933870000E2,6.523399833E1 +6.936300000E2,6.692630865E1 +6.939270000E2,5.793447825E1 +6.942230000E2,5.746396110E1 +6.944770000E2,6.017975210E1 +6.947150000E2,5.956759439E1 +6.950320000E2,6.391288151E1 +6.953110000E2,6.484415086E1 +6.955650000E2,6.664209540E1 +6.958410000E2,6.746668632E1 +6.961050000E2,5.775664920E1 +6.964050000E2,6.383035698E1 +6.967020000E2,5.816763892E1 +6.969600000E2,6.921190909E1 +6.972400000E2,6.165047809E1 +6.975080000E2,5.666810057E1 +6.977540000E2,6.417546300E1 +6.980020000E2,5.788971486E1 +6.982730000E2,5.486922606E1 +6.985850000E2,5.576434723E1 +6.988820000E2,5.548978795E1 +6.991460000E2,5.886820316E1 +6.993970000E2,6.226406326E1 +6.996480000E2,5.601534080E1 +6.999400000E2,5.901385758E1 +7.002040000E2,5.720709772E1 +7.005120000E2,6.318399213E1 +7.007580000E2,6.338981741E1 +7.010170000E2,6.747312486E1 +7.012670000E2,5.788999692E1 +7.015450000E2,4.434465006E1 +7.018710000E2,6.439013955E1 +7.021480000E2,5.375342664E1 +7.023700000E2,6.398282027E1 +7.026160000E2,5.857909138E1 +7.029130000E2,5.670439641E1 +7.031590000E2,5.749786365E1 +7.034320000E2,5.181710985E1 +7.036770000E2,5.871535868E1 +7.039520000E2,5.470297527E1 +7.042240000E2,5.771822323E1 +7.044750000E2,5.236261523E1 +7.047130000E2,5.595332709E1 +7.050480000E2,5.576748295E1 +7.053040000E2,5.334869600E1 +7.055590000E2,5.337806625E1 +7.058180000E2,5.499892680E1 +7.060900000E2,5.490963435E1 +7.063980000E2,5.551078540E1 +7.066680000E2,5.358868238E1 +7.069300000E2,5.203182642E1 +7.071760000E2,5.771053387E1 +7.074630000E2,5.175835182E1 +7.077440000E2,5.402526598E1 +7.080400000E2,5.754717994E1 +7.083470000E2,6.103880587E1 +7.086400000E2,6.284824916E1 +7.088840000E2,6.674666322E1 +7.092010000E2,6.194114278E1 +7.094980000E2,5.796289911E1 +7.097580000E2,5.475547679E1 +7.100170000E2,5.804024708E1 +7.102650000E2,5.606423134E1 +7.105550000E2,5.319247933E1 +7.107930000E2,5.625991375E1 +7.110940000E2,5.589539698E1 +7.114730000E2,6.073460415E1 +7.117930000E2,6.208342045E1 +7.120530000E2,6.335117127E1 +7.123290000E2,5.821275565E1 +7.126280000E2,5.793160357E1 +7.128780000E2,5.509944006E1 +7.131790000E2,5.578357696E1 +7.134760000E2,5.632534225E1 +7.137350000E2,5.466315647E1 +7.140450000E2,5.914530785E1 +7.143020000E2,6.280432125E1 +7.146020000E2,6.333348539E1 +7.149790000E2,5.698482465E1 +7.152920000E2,5.474810308E1 +7.155370000E2,5.417920207E1 +7.157880000E2,6.392184792E1 +7.160720000E2,6.565549591E1 +7.163130000E2,6.082705714E1 +7.166120000E2,5.816285927E1 +7.168430000E2,5.809201859E1 +7.170930000E2,6.016105207E1 +7.173350000E2,5.162287691E1 +7.176230000E2,5.754317879E1 +7.179310000E2,6.166304542E1 +7.181770000E2,6.177004553E1 +7.184320000E2,6.274574776E1 +7.186900000E2,6.104994734E1 +7.189920000E2,5.735301480E1 +7.192340000E2,5.830205645E1 +7.194890000E2,6.212782217E1 +7.197420000E2,5.467685243E1 +7.200420000E2,5.313970583E1 +7.202920000E2,5.278680647E1 +7.205360000E2,5.474141102E1 +7.209140000E2,6.241771654E1 +7.212600000E2,6.394594172E1 +7.215560000E2,6.348358734E1 +7.217980000E2,6.112734048E1 +7.220450000E2,6.226451183E1 +7.222930000E2,6.534082516E1 +7.225960000E2,6.114019283E1 +7.228390000E2,6.421228964E1 +7.231230000E2,6.814847387E1 +7.233690000E2,6.275446304E1 +7.236190000E2,6.679153921E1 +7.239280000E2,6.537583699E1 +7.241850000E2,6.212976374E1 +7.245300000E2,6.553556935E1 +7.248220000E2,5.834030427E1 +7.250930000E2,5.992153646E1 +7.253380000E2,5.595099295E1 +7.256370000E2,5.720822528E1 +7.258800000E2,5.423516872E1 +7.261770000E2,5.906139652E1 +7.264140000E2,6.204477132E1 +7.267140000E2,6.368823365E1 +7.269550000E2,6.513672214E1 +7.272500000E2,6.364997971E1 +7.275370000E2,6.269941998E1 +7.278570000E2,5.948773609E1 +7.281020000E2,5.789544973E1 +7.283740000E2,6.305528689E1 +7.286400000E2,6.245554089E1 +7.289690000E2,6.033221518E1 +7.292310000E2,5.940071821E1 +7.294970000E2,6.176178101E1 +7.298020000E2,5.355172623E1 +7.300580000E2,5.535292187E1 +7.303150000E2,5.274398781E1 +7.305750000E2,5.399957194E1 +7.308780000E2,5.819691646E1 +7.312070000E2,5.434897588E1 +7.315090000E2,6.041787911E1 +7.317850000E2,5.617860881E1 +7.320560000E2,5.558770875E1 +7.323290000E2,5.151264449E1 +7.325860000E2,5.612143969E1 +7.328800000E2,5.405001557E1 +7.331120000E2,5.455354216E1 +7.334090000E2,5.716252136E1 +7.337070000E2,6.416157102E1 +7.339910000E2,6.098010142E1 +7.343020000E2,6.194029449E1 +7.346500000E2,6.091313037E1 +7.349540000E2,5.846954669E1 +7.352410000E2,5.743489407E1 +7.355320000E2,5.872669957E1 +7.357800000E2,5.859080967E1 +7.360560000E2,6.053269456E1 +7.363220000E2,6.117884455E1 +7.366590000E2,5.809887850E1 +7.369420000E2,5.453224539E1 +7.372510000E2,5.639337460E1 +7.375040000E2,5.373613181E1 +7.378630000E2,5.066236714E1 +7.381160000E2,4.653740377E1 +7.383650000E2,6.375011526E1 +7.386730000E2,6.282181577E1 +7.389830000E2,6.727660972E1 +7.392340000E2,6.413328322E1 +7.394790000E2,6.184881400E1 +7.397290000E2,6.430634497E1 +7.400250000E2,6.276256291E1 +7.402610000E2,6.297441350E1 +7.405590000E2,5.306586823E1 +7.408610000E2,5.403016569E1 +7.412260000E2,5.749263443E1 +7.415060000E2,5.657932114E1 +7.417820000E2,5.532222303E1 +7.420430000E2,5.911133378E1 +7.423450000E2,5.822379827E1 +7.426470000E2,6.311870884E1 +7.428860000E2,5.964121243E1 +7.431940000E2,5.708688763E1 +7.434960000E2,5.782189241E1 +7.437480000E2,5.745118469E1 +7.440380000E2,5.258772989E1 +7.442830000E2,5.325984780E1 +7.445410000E2,5.216709684E1 +7.447900000E2,5.485283680E1 +7.450520000E2,6.638751453E1 +7.453640000E2,6.256149725E1 +7.456370000E2,6.851667797E1 +7.459020000E2,6.356784575E1 +7.462040000E2,6.586178842E1 +7.464510000E2,6.099626883E1 +7.467420000E2,6.874341983E1 +7.470300000E2,5.690479739E1 +7.472670000E2,5.749513215E1 +7.475860000E2,5.743840209E1 +7.478480000E2,6.695338823E1 +7.481550000E2,6.575566103E1 +7.484170000E2,6.244751264E1 +7.486690000E2,6.206430480E1 +7.489520000E2,5.755143157E1 +7.492450000E2,6.343498072E1 +7.494820000E2,6.599354682E1 +7.497800000E2,5.994269627E1 +7.500210000E2,6.480563885E1 +7.503160000E2,5.962320355E1 +7.505550000E2,5.907805627E1 +7.508860000E2,5.452673237E1 +7.511450000E2,5.413358853E1 +7.514110000E2,5.786691992E1 +7.516870000E2,6.185088179E1 +7.519570000E2,5.432685780E1 +7.522050000E2,5.297819944E1 +7.524920000E2,5.290855554E1 +7.527910000E2,5.828859659E1 +7.530300000E2,5.880189294E1 +7.533360000E2,5.500578631E1 +7.535910000E2,5.476677878E1 +7.538330000E2,5.414240587E1 +7.541650000E2,5.332866170E1 +7.544620000E2,5.193802785E1 +7.547080000E2,5.242932681E1 +7.549590000E2,6.024921863E1 +7.552020000E2,5.537701523E1 +7.554960000E2,5.489617845E1 +7.557330000E2,5.384280286E1 +7.560410000E2,5.406125999E1 +7.562870000E2,5.246560959E1 +7.565320000E2,5.374729291E1 +7.567680000E2,5.542801483E1 +7.570630000E2,5.525770987E1 +7.573930000E2,5.847670432E1 +7.576660000E2,5.822188632E1 +7.579180000E2,5.822901451E1 +7.582040000E2,5.458975346E1 +7.584820000E2,5.438683247E1 +7.587800000E2,5.260449368E1 +7.590260000E2,5.371245859E1 +7.592870000E2,4.983203663E1 +7.595420000E2,5.018089077E1 +7.598380000E2,5.950969681E1 +7.601480000E2,5.769305363E1 +7.604800000E2,5.747567937E1 +7.607190000E2,5.446335810E1 +7.610040000E2,5.463229896E1 +7.612970000E2,5.644916160E1 +7.615560000E2,5.809520116E1 +7.618460000E2,5.406577519E1 +7.621050000E2,5.362277750E1 +7.623930000E2,5.868559294E1 +7.626230000E2,5.548744129E1 +7.628890000E2,5.613986675E1 +7.631890000E2,5.592058678E1 +7.634870000E2,5.947938191E1 +7.638120000E2,5.945990241E1 +7.640830000E2,5.354091788E1 +7.643270000E2,5.910847411E1 +7.645670000E2,6.112853730E1 +7.648120000E2,5.617469613E1 +7.650520000E2,5.678172470E1 +7.653190000E2,5.293731054E1 +7.655730000E2,5.571573154E1 +7.658430000E2,5.239475172E1 +7.660900000E2,5.710555790E1 +7.663840000E2,5.593714408E1 +7.666500000E2,5.506488062E1 +7.669100000E2,5.276148627E1 +7.671530000E2,5.087813070E1 +7.674500000E2,4.966858228E1 +7.677070000E2,4.690170064E1 +7.679870000E2,5.097718665E1 +7.682460000E2,5.173969669E1 +7.685220000E2,5.562988056E1 +7.687630000E2,5.194720020E1 +7.690630000E2,5.590118249E1 +7.693610000E2,5.613585205E1 +7.696030000E2,5.417299550E1 +7.698530000E2,5.925774948E1 +7.702010000E2,5.729895975E1 +7.704610000E2,5.765570707E1 +7.707610000E2,6.211008380E1 +7.710570000E2,5.846530012E1 +7.712970000E2,5.766544416E1 +7.715460000E2,5.716238768E1 +7.718080000E2,5.700535494E1 +7.720510000E2,5.592606747E1 +7.723260000E2,5.771214429E1 +7.725940000E2,5.753442175E1 +7.728830000E2,5.541298336E1 +7.731860000E2,5.137853822E1 +7.735420000E2,5.462649470E1 +7.738320000E2,5.454281912E1 +7.740820000E2,6.803752283E1 +7.743260000E2,6.852980541E1 +7.745820000E2,7.007631543E1 +7.748270000E2,7.009876218E1 +7.751160000E2,6.950363051E1 +7.753520000E2,6.338954984E1 +7.755910000E2,5.500200077E1 +7.758880000E2,5.358702362E1 +7.761340000E2,5.718303470E1 +7.763730000E2,5.887519420E1 +7.767050000E2,5.795457078E1 +7.769970000E2,5.796499201E1 +7.773000000E2,5.644912180E1 +7.775570000E2,5.804780214E1 +7.778740000E2,5.958528627E1 +7.781300000E2,5.635913866E1 +7.784430000E2,5.593106857E1 +7.787280000E2,6.063168213E1 +7.789960000E2,5.917208792E1 +7.792560000E2,5.719923422E1 +7.795050000E2,6.400429125E1 +7.797680000E2,5.733192807E1 +7.800440000E2,6.018331087E1 +7.803000000E2,6.350407169E1 +7.805530000E2,6.357762743E1 +7.808590000E2,6.772563953E1 +7.811430000E2,6.431848914E1 +7.814050000E2,5.710721917E1 +7.816950000E2,5.646111127E1 +7.819500000E2,5.564600214E1 +7.822050000E2,6.362802489E1 +7.824550000E2,6.278310471E1 +7.827010000E2,5.851995741E1 +7.829620000E2,5.759567059E1 +7.832630000E2,5.449669640E1 +7.835070000E2,6.040303881E1 +7.837500000E2,5.743841461E1 +7.839990000E2,6.096558185E1 +7.842840000E2,7.161293257E1 +7.845270000E2,7.417435903E1 +7.848410000E2,6.386070968E1 +7.851390000E2,6.234904760E1 +7.854350000E2,6.321731436E1 +7.856820000E2,6.294103551E1 +7.859780000E2,6.210337552E1 +7.862150000E2,6.765383904E1 +7.865650000E2,6.346682761E1 +7.868610000E2,6.221020232E1 +7.871280000E2,6.119530731E1 +7.873850000E2,5.314248269E1 +7.876880000E2,5.288680780E1 +7.879230000E2,5.064349321E1 +7.882230000E2,5.786336298E1 +7.884630000E2,5.341864841E1 +7.887250000E2,5.286568073E1 +7.890140000E2,5.272997567E1 +7.893180000E2,5.904110581E1 +7.896690000E2,5.748622391E1 +7.899200000E2,5.773986136E1 +7.902160000E2,5.480967078E1 +7.904710000E2,5.627241382E1 +7.907280000E2,5.456362797E1 +7.909900000E2,5.766408512E1 +7.912380000E2,5.413586400E1 +7.914940000E2,5.234403284E1 +7.917720000E2,5.190170354E1 +7.920440000E2,5.227759392E1 +7.923170000E2,4.410400383E1 +7.926220000E2,3.508270700E1 +7.929370000E2,3.887828085E1 +7.932030000E2,4.522069604E1 +7.934660000E2,4.928233980E1 +7.937420000E2,4.706401379E1 +7.940710000E2,4.988989997E1 +7.943700000E2,5.767827889E1 +7.946060000E2,5.506606719E1 +7.949050000E2,6.107887773E1 +7.952060000E2,5.849609892E1 +7.955030000E2,5.343173328E1 +7.957490000E2,5.007726003E1 +7.960580000E2,4.763873915E1 +7.963010000E2,5.045894898E1 +7.966040000E2,6.859700710E1 +7.968900000E2,6.734256534E1 +7.971550000E2,6.661489392E1 +7.974110000E2,6.556398865E1 +7.976580000E2,5.519705677E1 +7.979230000E2,5.503316479E1 +7.982060000E2,5.955770829E1 +7.984280000E2,5.777834711E1 +7.987260000E2,6.050467535E1 +7.989700000E2,5.583639573E1 +7.993330000E2,5.988908902E1 +7.995750000E2,5.875791040E1 +7.998670000E2,6.166637478E1 +8.001160000E2,5.690435901E1 +8.004160000E2,5.599911293E1 +8.006610000E2,5.889628547E1 +8.009180000E2,6.227540789E1 +8.011740000E2,6.572663811E1 +8.014300000E2,6.013467784E1 +8.016770000E2,6.250368579E1 +8.019910000E2,6.532292099E1 +8.023560000E2,5.377170031E1 +8.026370000E2,5.535595108E1 +8.029110000E2,5.147526495E1 +8.031720000E2,4.993046061E1 +8.034760000E2,6.394035794E1 +8.037260000E2,5.983119170E1 +8.040270000E2,5.967243802E1 +8.042930000E2,6.559340840E1 +8.046100000E2,5.262215496E1 +8.049160000E2,5.397812040E1 +8.051780000E2,5.680330381E1 +8.054740000E2,5.857171626E1 +8.058060000E2,5.577198454E1 +8.060880000E2,5.916891157E1 +8.063460000E2,6.120078548E1 +8.066060000E2,6.223167379E1 +8.069230000E2,6.161077093E1 +8.071720000E2,5.812180846E1 +8.074300000E2,5.665535607E1 +8.077230000E2,5.401482687E1 +8.079600000E2,5.631804256E1 +8.082610000E2,5.267806276E1 +8.085540000E2,5.766120113E1 +8.088100000E2,5.717509884E1 +8.091690000E2,5.698714543E1 +8.094130000E2,5.807918354E1 +8.096940000E2,5.364566959E1 +8.099320000E2,5.678502402E1 +8.102110000E2,5.494444844E1 +8.104710000E2,6.216218230E1 +8.107550000E2,5.504588420E1 +8.110030000E2,5.220186059E1 +8.112810000E2,5.338487037E1 +8.115430000E2,5.422122114E1 +8.118180000E2,6.217546099E1 +8.121430000E2,5.739027439E1 +8.124800000E2,5.218554734E1 +8.128080000E2,6.183667492E1 +8.130850000E2,6.028246668E1 +8.133620000E2,6.620979851E1 +8.135950000E2,5.810667246E1 +8.138630000E2,6.096670869E1 +8.141300000E2,5.149777407E1 +8.143960000E2,4.993954713E1 +8.146400000E2,5.196561010E1 +8.149350000E2,5.727966309E1 +8.151710000E2,5.489316784E1 +8.154100000E2,5.619291420E1 +8.157500000E2,5.425831711E1 +8.160430000E2,5.677079709E1 +8.163250000E2,5.289383275E1 +8.165600000E2,5.573749616E1 +8.168090000E2,5.211960412E1 +8.170840000E2,5.029895102E1 +8.173170000E2,5.085418245E1 +8.175630000E2,5.101392152E1 +8.178870000E2,5.228690479E1 +8.182130000E2,5.919931006E1 +8.184680000E2,5.288617356E1 +8.188320000E2,5.626269479E1 +8.191030000E2,6.124827198E1 +8.193870000E2,5.889071517E1 +8.196160000E2,5.957980623E1 +8.199180000E2,5.440069788E1 +8.201590000E2,5.524226830E1 +8.204560000E2,5.147688867E1 +8.206870000E2,5.390780082E1 +8.209820000E2,6.509870984E1 +8.212270000E2,6.421388309E1 +8.215230000E2,5.843840462E1 +8.218170000E2,5.422512027E1 +8.221280000E2,5.468614274E1 +8.223780000E2,5.922850585E1 +8.226710000E2,6.486031186E1 +8.229330000E2,6.154967201E1 +8.232420000E2,5.893257410E1 +8.235100000E2,6.020329639E1 +8.238290000E2,5.483779552E1 +8.240760000E2,5.692914998E1 +8.243280000E2,6.347347085E1 +8.245930000E2,5.345306004E1 +8.248670000E2,6.141647052E1 +8.252000000E2,5.672783001E1 +8.254550000E2,5.605661334E1 +8.257610000E2,5.699330885E1 +8.260410000E2,5.489256860E1 +8.263010000E2,6.262090025E1 +8.265830000E2,5.457719262E1 +8.268180000E2,5.416382407E1 +8.271260000E2,4.993919751E1 +8.273700000E2,5.569569056E1 +8.276330000E2,5.514364162E1 +8.278890000E2,5.653204472E1 +8.281470000E2,5.784406489E1 +8.284370000E2,5.752811490E1 +8.286720000E2,5.727510089E1 +8.289650000E2,5.900575965E1 +8.292510000E2,5.679022390E1 +8.294860000E2,5.722234118E1 +8.297350000E2,5.952638514E1 +8.300320000E2,5.925181191E1 +8.302740000E2,5.930148258E1 +8.305160000E2,5.668145507E1 +8.307730000E2,5.590492759E1 +8.310130000E2,6.302930486E1 +8.312510000E2,5.733539345E1 +8.315800000E2,5.620349253E1 +8.318910000E2,5.495250031E1 +8.322000000E2,5.501979251E1 +8.324620000E2,5.208226415E1 +8.327390000E2,5.765748383E1 +8.329950000E2,5.489193423E1 +8.332490000E2,5.593428331E1 +8.335720000E2,5.714652117E1 +8.338250000E2,5.832769426E1 +8.341370000E2,5.884156077E1 +8.344030000E2,5.840498509E1 +8.347020000E2,5.864505811E1 +8.350330000E2,6.356982434E1 +8.353340000E2,6.286445683E1 +8.355720000E2,5.657384439E1 +8.358940000E2,5.660970318E1 +8.361720000E2,5.918731584E1 +8.364160000E2,5.825788220E1 +8.366580000E2,5.592754487E1 +8.369110000E2,5.553717092E1 +8.371910000E2,5.495027293E1 +8.374510000E2,5.546329287E1 +8.377420000E2,5.746402701E1 +8.379890000E2,5.891922359E1 +8.383130000E2,6.522858798E1 +8.385710000E2,6.384617776E1 +8.388430000E2,5.435088619E1 +8.390670000E2,5.460135210E1 +8.393610000E2,5.982769627E1 +8.396020000E2,5.936265195E1 +8.398550000E2,6.034701146E1 +8.401470000E2,6.875861473E1 +8.403840000E2,6.968788985E1 +8.406760000E2,6.653493651E1 +8.409120000E2,6.664139767E1 +8.412200000E2,6.195236791E1 +8.415280000E2,5.759269564E1 +8.418110000E2,5.704906263E1 +8.420770000E2,5.199124728E1 +8.423350000E2,5.625309672E1 +8.426060000E2,5.627754144E1 +8.428710000E2,6.285304788E1 +8.431220000E2,6.089762622E1 +8.434160000E2,5.828079525E1 +8.436650000E2,5.581703965E1 +8.439650000E2,5.326092983E1 +8.442070000E2,5.247397640E1 +8.444500000E2,5.104216729E1 +8.447560000E2,4.981466747E1 +8.450730000E2,5.794387296E1 +8.453210000E2,6.103400827E1 +8.455680000E2,6.053778141E1 +8.458610000E2,5.413066164E1 +8.461240000E2,5.591468697E1 +8.463740000E2,5.289659812E1 +8.466770000E2,6.014390988E1 +8.469740000E2,5.713983843E1 +8.472340000E2,5.457406708E1 +8.474800000E2,5.848999564E1 +8.478210000E2,5.310404619E1 +8.481040000E2,5.463633704E1 +8.483620000E2,5.329096892E1 +8.486670000E2,5.667645304E1 +8.489890000E2,5.540515985E1 +8.492420000E2,5.014593999E1 +8.495060000E2,5.019949668E1 +8.497660000E2,4.724526190E1 +8.500410000E2,4.632701850E1 +8.502660000E2,4.436725745E1 +8.505710000E2,5.273585220E1 +8.508470000E2,5.232501704E1 +8.511370000E2,5.177389205E1 +8.513940000E2,5.236772038E1 +8.516560000E2,4.869019062E1 +8.518980000E2,5.254056589E1 +8.521620000E2,5.441215371E1 +8.524060000E2,5.431954181E1 +8.526720000E2,4.873515026E1 +8.529820000E2,5.253291311E1 +8.532350000E2,5.201920339E1 +8.535330000E2,5.083296820E1 +8.537750000E2,5.373650683E1 +8.540560000E2,6.162621210E1 +8.543710000E2,6.137876928E1 +8.546190000E2,6.347980201E1 +8.548850000E2,6.480134627E1 +8.551390000E2,6.344943059E1 +8.553830000E2,6.653758852E1 +8.556910000E2,6.821811094E1 +8.559900000E2,6.564040109E1 +8.562480000E2,6.310710880E1 +8.565060000E2,5.625485760E1 +8.567860000E2,5.886920329E1 +8.570590000E2,5.638007706E1 +8.573180000E2,5.477312089E1 +8.576670000E2,5.402637072E1 +8.579310000E2,5.282806817E1 +8.582400000E2,5.743205922E1 +8.584770000E2,5.608834078E1 +8.587730000E2,5.917700537E1 +8.590950000E2,5.757076232E1 +8.593390000E2,5.680975976E1 +8.596110000E2,5.316092446E1 +8.598560000E2,5.634389465E1 +8.601130000E2,5.912558361E1 +8.603880000E2,5.827706684E1 +8.606370000E2,5.580056474E1 +8.609720000E2,5.622551838E1 +8.612190000E2,5.816090597E1 +8.614650000E2,5.710633258E1 +8.617260000E2,6.762679027E1 +8.619970000E2,6.050550643E1 +8.622480000E2,6.017289530E1 +8.624960000E2,5.884551198E1 +8.627510000E2,5.823958631E1 +8.630120000E2,5.747421536E1 +8.632920000E2,5.891926612E1 +8.635810000E2,5.962176090E1 +8.638680000E2,5.932606834E1 +8.642430000E2,6.035939553E1 +8.645920000E2,5.892740034E1 +8.649090000E2,6.158225090E1 +8.651650000E2,5.941856931E1 +8.654560000E2,5.517726055E1 +8.656900000E2,5.573554393E1 +8.659400000E2,6.300977067E1 +8.662170000E2,6.346838855E1 +8.664760000E2,5.840482341E1 +8.667600000E2,5.656477763E1 +8.669980000E2,5.809371706E1 +8.672500000E2,5.957523428E1 +8.675890000E2,5.868790884E1 +8.678670000E2,6.643274765E1 +8.681530000E2,6.202304252E1 +8.684260000E2,6.167390940E1 +8.686760000E2,6.561664622E1 +8.689220000E2,6.221849135E1 +8.691620000E2,5.873701255E1 +8.694080000E2,5.721335717E1 +8.696600000E2,5.775578048E1 +8.699210000E2,6.139190630E1 +8.702060000E2,5.695582014E1 +8.705330000E2,5.285782467E1 +8.708800000E2,5.254436807E1 +8.711320000E2,5.941119733E1 +8.714840000E2,5.561687107E1 +8.717890000E2,5.226341013E1 +8.720340000E2,5.351737673E1 +8.723120000E2,5.581753669E1 +8.725450000E2,5.544476975E1 +8.727930000E2,5.112331517E1 +8.731050000E2,5.669948434E1 +8.733660000E2,5.553741274E1 +8.736450000E2,5.287392842E1 +8.738710000E2,5.342755356E1 +8.742030000E2,5.525376809E1 +8.745760000E2,5.790146612E1 +8.748470000E2,5.775550126E1 +8.750900000E2,5.828043309E1 +8.753860000E2,5.689517506E1 +8.756490000E2,5.836000549E1 +8.759170000E2,5.887049385E1 +8.761640000E2,5.731343570E1 +8.764240000E2,5.947081752E1 +8.766660000E2,5.735732777E1 +8.769150000E2,5.791222148E1 +8.771870000E2,5.217820200E1 +8.775110000E2,5.373516267E1 +8.777550000E2,5.639663701E1 +8.779960000E2,5.308435393E1 +8.782370000E2,5.327040257E1 +8.785510000E2,5.539866825E1 +8.788050000E2,5.451580533E1 +8.791100000E2,5.664888244E1 +8.793670000E2,5.439058144E1 +8.796110000E2,6.546629591E1 +8.799090000E2,6.080313073E1 +8.801560000E2,6.023654065E1 +8.804070000E2,5.547022044E1 +8.807450000E2,5.933402552E1 +8.809880000E2,6.073235462E1 +8.812850000E2,5.811897337E1 +8.815210000E2,5.670873426E1 +8.818240000E2,6.239450766E1 +8.821160000E2,6.033779387E1 +8.823610000E2,5.921328684E1 +8.826600000E2,5.808215882E1 +8.828910000E2,5.927124720E1 +8.831280000E2,5.254346564E1 +8.834120000E2,5.755316817E1 +8.837180000E2,5.815703318E1 +8.840150000E2,5.925974643E1 +8.842610000E2,5.406291788E1 +8.845520000E2,5.892672719E1 +8.847970000E2,6.343231596E1 +8.850390000E2,6.045689612E1 +8.853340000E2,5.903303339E1 +8.855810000E2,5.897514906E1 +8.858230000E2,5.682843230E1 +8.860690000E2,4.647265993E1 +8.863400000E2,5.617216143E1 +8.865730000E2,5.412892937E1 +8.869100000E2,6.210166513E1 +8.872070000E2,6.369099543E1 +8.874540000E2,6.052073025E1 +8.877480000E2,6.125108403E1 +8.879990000E2,6.087163347E1 +8.882550000E2,6.365510666E1 +8.885320000E2,5.341778352E1 +8.887600000E2,5.238943476E1 +8.890050000E2,6.378561240E1 +8.892460000E2,6.182956815E1 +8.895070000E2,6.027537659E1 +8.897770000E2,5.747996426E1 +8.901220000E2,5.606477689E1 +8.903620000E2,5.816493441E1 +8.907030000E2,5.740436721E1 +8.909540000E2,5.812990427E1 +8.912060000E2,5.757163286E1 +8.914520000E2,5.669306215E1 +8.917150000E2,5.593698617E1 +8.919580000E2,5.867011196E1 +8.922060000E2,6.001129970E1 +8.924480000E2,6.247831114E1 +8.927080000E2,5.501506807E1 +8.929550000E2,5.918039480E1 +8.932790000E2,5.750337148E1 +8.935260000E2,5.382626014E1 +8.937850000E2,5.632583646E1 +8.940370000E2,5.552393419E1 +8.943380000E2,5.417609473E1 +8.946050000E2,5.314873345E1 +8.948570000E2,5.537690953E1 +8.951790000E2,6.168371256E1 +8.954540000E2,6.142331687E1 +8.957690000E2,5.914263764E1 +8.960690000E2,6.039127428E1 +8.963670000E2,5.303465172E1 +8.966720000E2,5.819495208E1 +8.969200000E2,5.956457754E1 +8.972240000E2,5.554166388E1 +8.974940000E2,5.700583380E1 +8.978160000E2,5.525596264E1 +8.981210000E2,5.878997726E1 +8.983720000E2,5.661289659E1 +8.986510000E2,6.039909322E1 +8.988730000E2,5.569487247E1 +8.991240000E2,5.857026750E1 +8.993800000E2,6.116905404E1 +8.996580000E2,6.331625006E1 +8.998890000E2,5.612470465E1 +9.001440000E2,5.098243988E1 +9.004020000E2,5.779474181E1 +9.006650000E2,5.597754805E1 +9.009440000E2,5.706395638E1 +9.012380000E2,5.989184595E1 +9.015000000E2,5.905145002E1 +9.017620000E2,5.913397617E1 +9.020230000E2,5.831976398E1 +9.022900000E2,5.400731512E1 +9.025900000E2,6.547285797E1 +9.029050000E2,6.534571775E1 +9.032100000E2,5.428834230E1 +9.034580000E2,4.919896084E1 +9.037180000E2,5.326934205E1 +9.039740000E2,5.135684539E1 +9.042700000E2,5.784030554E1 +9.045180000E2,5.789711892E1 +9.048150000E2,5.501985460E1 +9.050680000E2,5.394185103E1 +9.053920000E2,5.504541187E1 +9.056620000E2,5.574384904E1 +9.059260000E2,5.198297704E1 +9.062920000E2,5.507423148E1 +9.065460000E2,5.073979477E1 +9.068090000E2,5.409355601E1 +9.071500000E2,5.842003605E1 +9.074380000E2,6.323761852E1 +9.076890000E2,5.475142925E1 +9.079510000E2,5.285089191E1 +9.082580000E2,6.228883476E1 +9.085110000E2,6.229139223E1 +9.087590000E2,5.849936549E1 +9.090220000E2,6.382664868E1 +9.092560000E2,5.234586511E1 +9.095720000E2,5.506613760E1 +9.098700000E2,5.883918884E1 +9.101180000E2,5.722745073E1 +9.103980000E2,6.006905181E1 +9.106670000E2,6.333821195E1 +9.109390000E2,5.997503412E1 +9.111770000E2,5.691091005E1 +9.114250000E2,5.629684565E1 +9.117070000E2,5.944947286E1 +9.119370000E2,5.757115704E1 +9.122030000E2,5.617546709E1 +9.125090000E2,5.506166951E1 +9.128480000E2,5.345826069E1 +9.131070000E2,5.586702127E1 +9.133900000E2,6.075354367E1 +9.137040000E2,5.668960998E1 +9.139920000E2,5.584388878E1 +9.142800000E2,5.668519299E1 +9.145740000E2,5.400550993E1 +9.148220000E2,5.668991412E1 +9.150670000E2,5.455006531E1 +9.153720000E2,5.750041942E1 +9.156590000E2,5.756327349E1 +9.159630000E2,5.822694927E1 +9.162110000E2,5.764545771E1 +9.164660000E2,5.716015909E1 +9.167560000E2,5.136001811E1 +9.170200000E2,4.706951064E1 +9.172710000E2,4.999131008E1 +9.175180000E2,5.619976433E1 +9.178030000E2,5.463675948E1 +9.180580000E2,4.995546642E1 +9.183000000E2,5.328928391E1 +9.185570000E2,4.808104957E1 +9.188650000E2,5.411517612E1 +9.191080000E2,5.672946344E1 +9.194270000E2,5.737096863E1 +9.196850000E2,5.974051238E1 +9.199830000E2,5.656564726E1 +9.202340000E2,5.709524531E1 +9.204810000E2,5.408385116E1 +9.208240000E2,5.414410830E1 +9.210650000E2,5.638214177E1 +9.213330000E2,5.753313030E1 +9.216130000E2,5.354803656E1 +9.219120000E2,6.191736419E1 +9.221480000E2,5.734366551E1 +9.224580000E2,5.684475304E1 +9.228030000E2,6.045431811E1 +9.230950000E2,5.973057312E1 +9.233960000E2,5.537690593E1 +9.236620000E2,5.411771801E1 +9.239600000E2,5.513839001E1 +9.242140000E2,5.699753068E1 +9.244670000E2,6.643461088E1 +9.247300000E2,6.062391899E1 +9.250330000E2,5.798096332E1 +9.253240000E2,6.347140522E1 +9.255740000E2,6.166496817E1 +9.259250000E2,6.190058171E1 +9.261820000E2,6.329204590E1 +9.264380000E2,6.389135880E1 +9.267030000E2,5.917517639E1 +9.269480000E2,5.809772267E1 +9.272170000E2,5.733235238E1 +9.274780000E2,5.226841119E1 +9.277860000E2,5.876554483E1 +9.280720000E2,6.281089568E1 +9.283510000E2,5.368859448E1 +9.286400000E2,5.449014251E1 +9.289370000E2,5.589991313E1 +9.292390000E2,5.452044152E1 +9.294860000E2,5.574135623E1 +9.297800000E2,5.656551806E1 +9.300200000E2,5.368800996E1 +9.302990000E2,5.374372369E1 +9.305490000E2,5.520696346E1 +9.308500000E2,5.642038107E1 +9.311480000E2,5.958603376E1 +9.314510000E2,5.775531382E1 +9.316980000E2,5.561486787E1 +9.319610000E2,5.826734748E1 +9.322700000E2,5.604871965E1 +9.325550000E2,5.170668645E1 +9.328670000E2,5.089285684E1 +9.331190000E2,4.724853188E1 +9.333790000E2,4.756075237E1 +9.336260000E2,5.199039629E1 +9.338890000E2,4.980140945E1 +9.341620000E2,5.530081877E1 +9.344120000E2,5.549144740E1 +9.347250000E2,5.515929093E1 +9.349780000E2,5.399104933E1 +9.352760000E2,5.325801117E1 +9.356240000E2,5.040008457E1 +9.359420000E2,5.360316460E1 +9.361890000E2,5.191591881E1 +9.364390000E2,5.324554606E1 +9.366970000E2,5.654671572E1 +9.370100000E2,5.711795620E1 +9.372590000E2,5.478625541E1 +9.375950000E2,5.667621371E1 +9.378550000E2,5.463565976E1 +9.381050000E2,5.398825590E1 +9.383580000E2,5.436030102E1 +9.386390000E2,5.091983440E1 +9.389120000E2,5.286705124E1 +9.391550000E2,5.236775571E1 +9.394300000E2,5.738794921E1 +9.397170000E2,5.727939554E1 +9.399750000E2,6.319402051E1 +9.402560000E2,5.468250624E1 +9.405530000E2,5.641852830E1 +9.408670000E2,6.200700436E1 +9.411390000E2,6.163446308E1 +9.413860000E2,7.148312536E1 +9.416340000E2,6.050927243E1 +9.419040000E2,5.667078757E1 +9.421350000E2,5.749142651E1 +9.424700000E2,5.240604485E1 +9.427760000E2,5.466454134E1 +9.430280000E2,6.082141946E1 +9.433300000E2,6.003969647E1 +9.436110000E2,6.121195378E1 +9.438460000E2,5.625129518E1 +9.441420000E2,5.911131348E1 +9.443880000E2,5.468317436E1 +9.446840000E2,6.009033853E1 +9.449440000E2,5.906624737E1 +9.452490000E2,5.464875325E1 +9.455970000E2,5.384566268E1 +9.458510000E2,5.044039840E1 +9.461140000E2,5.035886237E1 +9.463820000E2,5.734112986E1 +9.466620000E2,5.229112628E1 +9.469690000E2,6.028523542E1 +9.472250000E2,5.837101422E1 +9.475000000E2,5.619491985E1 +9.477970000E2,5.364209552E1 +9.480560000E2,5.511055516E1 +9.483560000E2,5.308396885E1 +9.486650000E2,5.587440008E1 +9.490640000E2,5.273632850E1 +9.493730000E2,6.231816715E1 +9.496570000E2,6.253734875E1 +9.499030000E2,5.554720788E1 +9.501460000E2,5.631566079E1 +9.503970000E2,5.626896653E1 +9.506490000E2,5.691941114E1 +9.508990000E2,5.116659255E1 +9.511440000E2,4.922875084E1 +9.514130000E2,5.936693495E1 +9.517070000E2,5.638156112E1 +9.520200000E2,5.180629212E1 +9.523780000E2,4.998674108E1 +9.526570000E2,4.841587788E1 +9.529100000E2,5.028896526E1 +9.531650000E2,4.965921907E1 +9.534690000E2,4.493319669E1 +9.537260000E2,4.598612712E1 +9.539740000E2,5.276251951E1 +9.542810000E2,4.126037796E1 +9.545830000E2,4.737114191E1 +9.548330000E2,4.411553821E1 +9.550850000E2,4.440050708E1 +9.553840000E2,5.260541790E1 +9.556980000E2,5.273901651E1 +9.559710000E2,5.383409632E1 +9.562220000E2,5.239354977E1 +9.564980000E2,4.759742823E1 +9.568040000E2,5.239869448E1 +9.570530000E2,5.238241691E1 +9.573300000E2,5.227349879E1 +9.575630000E2,5.272394727E1 +9.578410000E2,5.414710772E1 +9.580970000E2,5.325895305E1 +9.583410000E2,5.577122645E1 +9.586370000E2,5.015645058E1 +9.590040000E2,5.173028231E1 +9.593040000E2,5.447959265E1 +9.595640000E2,5.484713415E1 +9.598110000E2,5.470137539E1 +9.601060000E2,5.878769788E1 +9.603740000E2,5.851189839E1 +9.606810000E2,5.400762096E1 +9.609290000E2,5.749049444E1 +9.611870000E2,5.241750519E1 +9.614480000E2,4.979747952E1 +9.616960000E2,5.096881110E1 +9.620030000E2,5.149804171E1 +9.623180000E2,5.481599911E1 +9.625540000E2,5.138365056E1 +9.628240000E2,5.235851031E1 +9.630470000E2,4.871540913E1 +9.632880000E2,5.651540461E1 +9.635860000E2,5.650278128E1 +9.638210000E2,5.704973755E1 +9.641160000E2,5.757712252E1 +9.643960000E2,5.881159691E1 +9.646600000E2,5.355579494E1 +9.649750000E2,5.539751700E1 +9.652910000E2,4.797714339E1 +9.655520000E2,5.082548637E1 +9.658080000E2,5.579830605E1 +9.660780000E2,5.554406278E1 +9.663250000E2,5.354814316E1 +9.665660000E2,5.463107171E1 +9.668090000E2,5.368692433E1 +9.671300000E2,5.364867335E1 +9.674540000E2,5.468973775E1 +9.677060000E2,5.815904844E1 +9.680020000E2,5.598522308E1 +9.682480000E2,5.541083624E1 +9.685850000E2,5.512396132E1 +9.688400000E2,5.530796688E1 +9.691210000E2,5.433954611E1 +9.693810000E2,5.507440645E1 +9.696820000E2,5.086817906E1 +9.699140000E2,5.696191489E1 +9.701640000E2,5.845256581E1 +9.704420000E2,5.620226260E1 +9.706770000E2,5.629047170E1 +9.709750000E2,5.811655252E1 +9.712290000E2,5.703185419E1 +9.714900000E2,5.716734774E1 +9.718450000E2,5.493596869E1 +9.720910000E2,5.909437017E1 +9.723380000E2,5.710675060E1 +9.725910000E2,5.780279559E1 +9.728920000E2,5.860060144E1 +9.731360000E2,6.078900999E1 +9.734260000E2,5.852116194E1 +9.736640000E2,5.905899453E1 +9.739130000E2,5.636299630E1 +9.742090000E2,6.289355999E1 +9.744870000E2,6.167909115E1 +9.747290000E2,6.098057792E1 +9.750690000E2,5.906667343E1 +9.753320000E2,6.018572501E1 +9.756150000E2,5.718512970E1 +9.759100000E2,5.146063018E1 +9.761570000E2,5.733244632E1 +9.764050000E2,5.368365894E1 +9.766600000E2,5.486016267E1 +9.769150000E2,5.908582599E1 +9.771910000E2,5.733773036E1 +9.774400000E2,5.566361416E1 +9.777680000E2,5.819125256E1 +9.781220000E2,5.947694304E1 +9.783640000E2,6.140057637E1 +9.786330000E2,5.721849738E1 +9.788550000E2,5.617504209E1 +9.791010000E2,5.660293849E1 +9.793960000E2,5.174001770E1 +9.796880000E2,5.083474014E1 +9.799290000E2,5.184104339E1 +9.801850000E2,5.025385313E1 +9.804850000E2,5.286605500E1 +9.807270000E2,5.586849562E1 +9.809750000E2,5.666036754E1 +9.812950000E2,5.248500918E1 +9.815810000E2,5.416072977E1 +9.818360000E2,5.799655965E1 +9.821300000E2,5.801841935E1 +9.823770000E2,5.977514968E1 +9.826270000E2,5.676871456E1 +9.828850000E2,5.104814549E1 +9.831730000E2,5.834620153E1 +9.834010000E2,5.660640582E1 +9.836620000E2,5.686451748E1 +9.839750000E2,5.998440952E1 +9.842240000E2,5.556687478E1 +9.846000000E2,5.811069315E1 +9.848430000E2,5.843499893E1 +9.851250000E2,5.180956247E1 +9.853860000E2,5.206236639E1 +9.856480000E2,5.641840701E1 +9.859110000E2,5.518588565E1 +9.861920000E2,5.697237679E1 +9.864550000E2,5.411246614E1 +9.867510000E2,5.214533821E1 +9.869880000E2,5.642389575E1 +9.872440000E2,6.015294933E1 +9.875470000E2,5.809991100E1 +9.879150000E2,6.420044247E1 +9.881610000E2,6.042656173E1 +9.884280000E2,5.938959873E1 +9.886840000E2,6.059888233E1 +9.889870000E2,5.282749720E1 +9.892620000E2,5.638110380E1 +9.895440000E2,4.900409689E1 +9.897740000E2,4.971849802E1 +9.900320000E2,5.061428463E1 +9.903370000E2,5.829922071E1 +9.905860000E2,5.812083213E1 +9.908910000E2,5.500587720E1 +9.911860000E2,5.677481104E1 +9.914380000E2,5.502691141E1 +9.916830000E2,5.294500154E1 +9.919560000E2,5.700444986E1 +9.921770000E2,5.448756275E1 +9.924220000E2,5.785741234E1 +9.927280000E2,5.702180374E1 +9.929670000E2,6.013415875E1 +9.932080000E2,5.533496795E1 +9.934640000E2,5.695301526E1 +9.937440000E2,5.436173732E1 +9.940620000E2,5.092257074E1 +9.944480000E2,4.973000793E1 +9.946940000E2,4.871235512E1 +9.949410000E2,5.171412848E1 +9.951960000E2,5.643245777E1 +9.954520000E2,5.548819002E1 +9.957530000E2,5.694822585E1 +9.960600000E2,5.668072577E1 +9.963110000E2,5.547400320E1 +9.966010000E2,5.667137699E1 +9.968430000E2,5.866196066E1 +9.971120000E2,5.641527163E1 +9.974300000E2,5.505243365E1 +9.977140000E2,5.491253296E1 +9.979940000E2,5.642986287E1 +9.982400000E2,5.111113898E1 +9.985270000E2,5.228293633E1 +9.987770000E2,5.380023266E1 +9.990760000E2,5.259255492E1 +9.993610000E2,5.359948032E1 +9.996550000E2,5.817439497E1 +9.999080000E2,5.712087238E1 +1.000199000E3,6.016800470E1 +1.000435000E3,5.758076017E1 +1.000772000E3,5.328951429E1 +1.001047000E3,5.373102399E1 +1.001303000E3,5.905317642E1 +1.001622000E3,5.478240688E1 +1.001877000E3,5.648896451E1 +1.002173000E3,5.587033976E1 +1.002422000E3,5.995513955E1 +1.002724000E3,6.295760047E1 +1.003003000E3,5.978713154E1 +1.003261000E3,5.669754444E1 +1.003545000E3,5.577942906E1 +1.003827000E3,6.186873273E1 +1.004183000E3,6.253868639E1 +1.004493000E3,5.777226132E1 +1.004770000E3,6.482227668E1 +1.005072000E3,5.923751414E1 +1.005323000E3,5.644465637E1 +1.005601000E3,6.074750234E1 +1.005832000E3,5.683683327E1 +1.006147000E3,5.957418887E1 +1.006418000E3,6.134946851E1 +1.006713000E3,5.641852300E1 +1.006952000E3,5.637674327E1 +1.007310000E3,5.484290206E1 +1.007589000E3,6.426865013E1 +1.007886000E3,5.712036033E1 +1.008127000E3,5.768385080E1 +1.008427000E3,5.812466970E1 +1.008666000E3,6.112344783E1 +1.008973000E3,5.606588478E1 +1.009269000E3,5.809328667E1 +1.009507000E3,5.371315435E1 +1.009763000E3,5.527533595E1 +1.010003000E3,5.390597114E1 +1.010379000E3,5.652035402E1 +1.010658000E3,5.490058638E1 +1.010920000E3,5.927019017E1 +1.011197000E3,5.293113048E1 +1.011458000E3,5.179006266E1 +1.011718000E3,5.366462930E1 +1.011979000E3,5.569421827E1 +1.012229000E3,5.341899104E1 +1.012477000E3,4.863208748E1 +1.012772000E3,6.037154816E1 +1.013036000E3,5.430849576E1 +1.013284000E3,5.735938261E1 +1.013671000E3,5.526482118E1 +1.013957000E3,5.731780297E1 +1.014225000E3,5.205368153E1 +1.014486000E3,5.548863756E1 +1.014733000E3,5.265038263E1 +1.015033000E3,5.986876322E1 +1.015314000E3,5.130643680E1 +1.015590000E3,6.086878634E1 +1.015830000E3,5.798526739E1 +1.016137000E3,6.825745236E1 +1.016387000E3,5.828900876E1 +1.016655000E3,5.873097643E1 +1.017001000E3,6.454090665E1 +1.017329000E3,6.385512775E1 +1.017637000E3,6.691081911E1 +1.017938000E3,6.580217665E1 +1.018229000E3,6.485489311E1 +1.018470000E3,6.387101962E1 +1.018706000E3,6.616835921E1 +1.018997000E3,5.951737331E1 +1.019235000E3,5.386458503E1 +1.019536000E3,5.756977765E1 +1.019801000E3,5.811747841E1 +1.020064000E3,5.930001089E1 +1.020406000E3,5.469664450E1 +1.020673000E3,5.181220980E1 +1.020925000E3,5.483858346E1 +1.021232000E3,5.716842569E1 +1.021527000E3,5.738254897E1 +1.021762000E3,5.628034518E1 +1.022007000E3,5.850971228E1 +1.022258000E3,5.329919175E1 +1.022556000E3,5.482637446E1 +1.022813000E3,5.690503448E1 +1.023071000E3,5.317501594E1 +1.023336000E3,4.870888301E1 +1.023687000E3,6.132281620E1 +1.023965000E3,6.262505101E1 +1.024220000E3,6.180229149E1 +1.024496000E3,6.130993335E1 +1.024741000E3,6.231376381E1 +1.025040000E3,6.164360059E1 +1.025279000E3,5.910065798E1 +1.025533000E3,5.622173801E1 +1.025821000E3,5.290311975E1 +1.026116000E3,5.028293308E1 +1.026403000E3,5.581740437E1 +1.026664000E3,5.988277804E1 +1.027011000E3,5.730548262E1 +1.027305000E3,5.417769573E1 +1.027578000E3,5.250932185E1 +1.027819000E3,5.139919708E1 +1.028128000E3,5.061852216E1 +1.028380000E3,4.722292138E1 +1.028683000E3,5.983070917E1 +1.028956000E3,6.045269830E1 +1.029182000E3,5.777292957E1 +1.029431000E3,5.497807442E1 +1.029734000E3,5.533889528E1 +1.030063000E3,5.373558580E1 +1.030323000E3,5.600729212E1 +1.030620000E3,5.467159629E1 +1.030863000E3,5.246400101E1 +1.031110000E3,5.468037288E1 +1.031367000E3,5.850364516E1 +1.031646000E3,5.490958739E1 +1.031911000E3,5.866929845E1 +1.032210000E3,5.708288591E1 +1.032475000E3,5.498129629E1 +1.032736000E3,5.670272599E1 +1.032986000E3,5.317143219E1 +1.033315000E3,5.758413128E1 +1.033557000E3,6.361635596E1 +1.033846000E3,5.513973379E1 +1.034093000E3,5.215484095E1 +1.034399000E3,5.465926438E1 +1.034684000E3,5.588902955E1 +1.034978000E3,5.387672604E1 +1.035280000E3,5.595327755E1 +1.035543000E3,5.621513504E1 +1.035825000E3,5.991854954E1 +1.036079000E3,5.864640009E1 +1.036322000E3,6.072021936E1 +1.036666000E3,5.462749592E1 +1.036971000E3,5.329083651E1 +1.037264000E3,5.401214501E1 +1.037542000E3,5.242806591E1 +1.037843000E3,5.573267887E1 +1.038091000E3,5.224254554E1 +1.038380000E3,5.453929206E1 +1.038635000E3,5.371826859E1 +1.038891000E3,4.369246898E1 +1.039145000E3,4.547521933E1 +1.039418000E3,4.204639660E1 +1.039750000E3,4.426760298E1 +1.039990000E3,4.955659514E1 +1.040294000E3,4.960859899E1 +1.040560000E3,4.841380220E1 +1.040808000E3,4.914533708E1 +1.041104000E3,4.650609937E1 +1.041370000E3,4.849101938E1 +1.041622000E3,5.065930763E1 +1.041920000E3,4.744161935E1 +1.042161000E3,4.448519483E1 +1.042478000E3,4.726532690E1 +1.042725000E3,4.667923132E1 +1.043042000E3,4.704822757E1 +1.043307000E3,3.950691106E1 +1.043560000E3,5.249697508E1 +1.043835000E3,4.753687679E1 +1.044091000E3,4.843049138E1 +1.044350000E3,5.394643708E1 +1.044644000E3,4.769079035E1 +1.044887000E3,5.111291504E1 +1.045194000E3,5.247298633E1 +1.045445000E3,4.904344971E1 +1.045693000E3,4.405437847E1 +1.045988000E3,4.750888237E1 +1.046301000E3,4.305046000E1 +1.046518000E3,4.630901796E1 +1.046813000E3,4.756289225E1 +1.047053000E3,4.661089273E1 +1.047331000E3,6.143859736E1 +1.047566000E3,5.702483033E1 +1.047860000E3,5.015015196E1 +1.048098000E3,5.180675157E1 +1.048397000E3,4.645218330E1 +1.048640000E3,4.317726503E1 +1.048918000E3,4.962602549E1 +1.049159000E3,4.922447391E1 +1.049523000E3,4.310015818E1 +1.049767000E3,5.584844461E1 +1.050011000E3,5.550466055E1 +1.050294000E3,5.076679182E1 +1.050523000E3,4.777565498E1 +1.050776000E3,5.078379664E1 +1.051031000E3,4.412618688E1 +1.051298000E3,3.933148532E1 +1.051551000E3,4.240994962E1 +1.051799000E3,3.715036539E1 +1.052054000E3,4.541823437E1 +1.052312000E3,3.252240989E1 +1.052661000E3,4.298387800E1 +1.052922000E3,4.065675211E1 +1.053171000E3,3.851226965E1 +1.053417000E3,3.833414863E1 +1.053702000E3,3.734543870E1 +1.053967000E3,4.406198141E1 +1.054269000E3,3.397952572E1 +1.054518000E3,3.018425986E1 +1.054795000E3,2.659023927E1 +1.055055000E3,3.230579484E1 +1.055319000E3,4.027650377E1 +1.055588000E3,3.256611719E1 +1.055936000E3,3.203904394E1 +1.056189000E3,3.024692018E1 +1.056469000E3,4.044611203E1 +1.056698000E3,3.245705712E1 +1.056956000E3,5.087039919E1 +1.057201000E3,5.278557071E1 +1.057507000E3,6.996122129E1 +1.057766000E3,6.951439283E1 +1.058027000E3,6.731609209E1 +1.058291000E3,5.787293958E1 +1.058571000E3,5.774874245E1 +1.058801000E3,5.291748766E1 +1.059132000E3,4.352220528E1 +1.059391000E3,5.556254729E1 +1.059665000E3,5.339220405E1 +1.059951000E3,5.593145301E1 +1.060235000E3,5.299996372E1 +1.060492000E3,4.882317894E1 +1.060733000E3,3.790707311E1 +1.060975000E3,3.470192076E1 +1.061278000E3,4.481563830E1 +1.061519000E3,4.823008935E1 +1.061816000E3,4.719850269E1 +1.062076000E3,4.706381680E1 +1.062331000E3,4.530378435E1 +1.062576000E3,3.456809562E1 +1.062882000E3,3.742453964E1 +1.063154000E3,3.905594906E1 +1.063397000E3,3.672857244E1 +1.063694000E3,2.941779164E1 +1.063926000E3,2.995931983E1 +1.064168000E3,3.455311118E1 +1.064461000E3,3.254662869E1 +1.064708000E3,3.652583843E1 +1.065001000E3,5.229424666E1 +1.065352000E3,5.178814165E1 +1.065606000E3,4.798098259E1 +1.065854000E3,3.636652329E1 +1.066121000E3,4.558252535E1 +1.066366000E3,3.902840121E1 +1.066629000E3,3.106435508E1 +1.066887000E3,2.541330464E1 +1.067179000E3,3.474902335E1 +1.067449000E3,4.492275189E1 +1.067698000E3,3.860211372E1 +1.067955000E3,4.332670525E1 +1.068251000E3,5.147667691E1 +1.068546000E3,5.152069997E1 +1.068797000E3,4.540650098E1 +1.069105000E3,4.486446450E1 +1.069378000E3,4.196481867E1 +1.069632000E3,4.863200791E1 +1.069908000E3,3.878967071E1 +1.070151000E3,3.630888030E1 +1.070413000E3,2.964429880E1 +1.070682000E3,3.354707636E1 +1.070956000E3,4.008490969E1 +1.071248000E3,3.576577653E1 +1.071553000E3,4.349754488E1 +1.071886000E3,3.824859907E1 +1.072130000E3,3.455877689E1 +1.072406000E3,3.622999465E1 +1.072717000E3,3.637608237E1 +1.072984000E3,3.645219519E1 +1.073255000E3,4.353729148E1 +1.073603000E3,4.287473251E1 +1.073856000E3,4.842203791E1 +1.074097000E3,4.484407311E1 +1.074356000E3,4.397007110E1 +1.074628000E3,4.695884235E1 +1.074931000E3,4.627189963E1 +1.075264000E3,4.689571524E1 +1.075614000E3,5.203841291E1 +1.075923000E3,4.610184941E1 +1.076163000E3,4.404432471E1 +1.076475000E3,4.923215011E1 +1.076765000E3,4.466142180E1 +1.077062000E3,4.987282715E1 +1.077375000E3,4.461839454E1 +1.077687000E3,5.085403766E1 +1.077991000E3,4.674512295E1 +1.078232000E3,5.167180279E1 +1.078544000E3,4.780582457E1 +1.078939000E3,4.593914406E1 +1.079187000E3,4.061652220E1 +1.079434000E3,4.347669045E1 +1.079712000E3,4.326983820E1 +1.079966000E3,3.511950991E1 +1.080260000E3,4.755279745E1 +1.080506000E3,4.756343862E1 +1.080756000E3,4.779732167E1 +1.081049000E3,4.991962747E1 +1.081293000E3,5.213887128E1 +1.081586000E3,5.357624469E1 +1.081916000E3,5.141456645E1 +1.082165000E3,5.036532462E1 +1.082460000E3,4.962769973E1 +1.082696000E3,4.506404490E1 +1.082988000E3,4.537987312E1 +1.083220000E3,4.738457007E1 +1.083529000E3,4.698711193E1 +1.083769000E3,4.571430081E1 +1.084079000E3,4.980908007E1 +1.084324000E3,5.082282040E1 +1.084590000E3,5.406004268E1 +1.084876000E3,5.436375886E1 +1.085258000E3,5.361506257E1 +1.085509000E3,5.202937925E1 +1.085815000E3,5.324976969E1 +1.086057000E3,5.371445731E1 +1.086301000E3,5.282162917E1 +1.086550000E3,5.221281857E1 +1.086802000E3,5.263727375E1 +1.087126000E3,5.703022139E1 +1.087384000E3,5.519432869E1 +1.087646000E3,5.426647490E1 +1.087939000E3,5.407342864E1 +1.088175000E3,5.235924404E1 +1.088520000E3,4.681002832E1 +1.088812000E3,4.891237586E1 +1.089076000E3,4.699020733E1 +1.089350000E3,4.902871382E1 +1.089591000E3,5.078145117E1 +1.089837000E3,5.041791921E1 +1.090133000E3,4.603650794E1 +1.090430000E3,4.871755485E1 +1.090660000E3,5.111421073E1 +1.090911000E3,4.581894631E1 +1.091248000E3,4.988189917E1 +1.091630000E3,5.341365920E1 +1.091902000E3,4.962858025E1 +1.092183000E3,4.315344358E1 +1.092440000E3,4.664431132E1 +1.092683000E3,4.616459192E1 +1.092923000E3,4.765071496E1 +1.093171000E3,4.163360687E1 +1.093473000E3,4.537777608E1 +1.093714000E3,4.783603025E1 +1.094007000E3,4.845414260E1 +1.094261000E3,4.799870549E1 +1.094499000E3,4.651309815E1 +1.094792000E3,5.003648984E1 +1.095123000E3,5.202534254E1 +1.095372000E3,5.709400077E1 +1.095625000E3,5.694079106E1 +1.095896000E3,5.715452089E1 +1.096196000E3,5.523378380E1 +1.096438000E3,5.375558627E1 +1.096737000E3,5.665208041E1 +1.096991000E3,5.314654737E1 +1.097292000E3,5.142447849E1 +1.097557000E3,5.330628285E1 +1.097827000E3,5.512040694E1 +1.098167000E3,5.399583122E1 +1.098472000E3,5.540663813E1 +1.098720000E3,5.200546986E1 +1.098960000E3,4.676140326E1 +1.099243000E3,4.798657093E1 +1.099544000E3,4.841724285E1 +1.099804000E3,5.642371618E1 +1.100109000E3,5.409000726E1 +1.100381000E3,5.348646719E1 +1.100630000E3,5.346537578E1 +1.100927000E3,5.422782845E1 +1.101164000E3,5.395323822E1 +1.101495000E3,5.383967560E1 +1.101763000E3,5.667828538E1 +1.102044000E3,4.764690784E1 +1.102307000E3,5.353530254E1 +1.102613000E3,5.568430762E1 +1.102906000E3,5.431580275E1 +1.103147000E3,5.193331555E1 +1.103441000E3,5.040945762E1 +1.103677000E3,5.333005838E1 +1.103968000E3,4.947534745E1 +1.104272000E3,5.306270968E1 +1.104564000E3,5.537230515E1 +1.104799000E3,4.876041085E1 +1.105069000E3,5.109409535E1 +1.105330000E3,5.087734214E1 +1.105587000E3,5.225642483E1 +1.105838000E3,5.176680091E1 +1.106135000E3,5.535939212E1 +1.106380000E3,5.666892185E1 +1.106622000E3,5.658846562E1 +1.106895000E3,5.577897889E1 +1.107150000E3,5.157178717E1 +1.107431000E3,5.284488409E1 +1.107756000E3,5.415639955E1 +1.108002000E3,5.465643057E1 +1.108313000E3,4.654328988E1 +1.108563000E3,5.038890380E1 +1.108811000E3,4.602751738E1 +1.109073000E3,4.801243396E1 +1.109375000E3,4.782472616E1 +1.109667000E3,4.666447221E1 +1.109943000E3,5.156469126E1 +1.110192000E3,4.949682888E1 +1.110448000E3,4.919673339E1 +1.110752000E3,4.862521519E1 +1.111045000E3,5.122379655E1 +1.111295000E3,4.813892217E1 +1.111515000E3,4.901611396E1 +1.111761000E3,4.905664967E1 +1.112005000E3,4.647618514E1 +1.112265000E3,4.730688076E1 +1.112537000E3,5.039121351E1 +1.112793000E3,4.985611957E1 +1.113101000E3,5.474563863E1 +1.113387000E3,5.028870882E1 +1.113678000E3,5.073784750E1 +1.113952000E3,4.995138555E1 +1.114291000E3,4.790039203E1 +1.114554000E3,4.764335594E1 +1.114849000E3,5.057104591E1 +1.115096000E3,5.107398730E1 +1.115401000E3,4.800391913E1 +1.115672000E3,4.553282874E1 +1.115895000E3,4.569523337E1 +1.116194000E3,4.480844215E1 +1.116425000E3,4.772339962E1 +1.116664000E3,5.255452638E1 +1.116906000E3,4.927433934E1 +1.117202000E3,4.871369865E1 +1.117530000E3,4.928110420E1 +1.117840000E3,5.705383563E1 +1.118146000E3,4.880674861E1 +1.118418000E3,5.038180726E1 +1.118687000E3,5.145980404E1 +1.118950000E3,5.338008269E1 +1.119227000E3,5.227728425E1 +1.119468000E3,5.450689216E1 +1.119736000E3,5.844246451E1 +1.120049000E3,5.459398611E1 +1.120351000E3,5.526423567E1 +1.120605000E3,5.228963309E1 +1.120918000E3,5.598288902E1 +1.121182000E3,5.280889802E1 +1.121489000E3,4.974717420E1 +1.121729000E3,5.137523152E1 +1.121978000E3,5.052356297E1 +1.122235000E3,5.240368249E1 +1.122503000E3,4.826380791E1 +1.122775000E3,5.095403791E1 +1.123036000E3,5.799909934E1 +1.123291000E3,4.889512711E1 +1.123587000E3,5.622808486E1 +1.123874000E3,5.230369090E1 +1.124235000E3,5.081102316E1 +1.124544000E3,5.628773803E1 +1.124826000E3,5.810547372E1 +1.125153000E3,5.508029719E1 +1.125432000E3,5.576573503E1 +1.125722000E3,5.346022180E1 +1.125978000E3,5.279748306E1 +1.126234000E3,5.604802053E1 +1.126502000E3,5.937326657E1 +1.126804000E3,5.703447215E1 +1.127047000E3,5.520354594E1 +1.127314000E3,5.551787326E1 +1.127554000E3,5.740837773E1 +1.127843000E3,5.663015330E1 +1.128135000E3,5.649615150E1 +1.128380000E3,5.731556257E1 +1.128677000E3,6.079986861E1 +1.128914000E3,5.820128856E1 +1.129207000E3,6.091746513E1 +1.129442000E3,6.126941240E1 +1.129745000E3,4.541170906E1 +1.129980000E3,4.341485096E1 +1.130277000E3,4.833777967E1 +1.130573000E3,4.472710223E1 +1.130815000E3,5.059675199E1 +1.131062000E3,3.863826940E1 +1.131353000E3,4.925455740E1 +1.131589000E3,4.859989956E1 +1.131881000E3,5.113067908E1 +1.132117000E3,5.054542106E1 +1.132418000E3,4.827479925E1 +1.132654000E3,4.610884488E1 +1.132948000E3,4.879734536E1 +1.133241000E3,5.074680390E1 +1.133563000E3,5.119298220E1 +1.133864000E3,4.861265792E1 +1.134166000E3,5.001512903E1 +1.134452000E3,5.059053464E1 +1.134716000E3,4.999839479E1 +1.134967000E3,4.960069086E1 +1.135222000E3,5.320256888E1 +1.135494000E3,5.604818163E1 +1.135742000E3,5.625768045E1 +1.135999000E3,5.261645024E1 +1.136244000E3,5.105081932E1 +1.136501000E3,5.616444939E1 +1.136847000E3,5.624064264E1 +1.137105000E3,5.654097446E1 +1.137391000E3,5.807884104E1 +1.137717000E3,5.436169891E1 +1.137970000E3,5.763959225E1 +1.138239000E3,5.465216875E1 +1.138486000E3,5.094509116E1 +1.138731000E3,5.425415233E1 +1.138977000E3,5.143709697E1 +1.139259000E3,5.032545705E1 +1.139527000E3,5.906031130E1 +1.139800000E3,5.308709054E1 +1.140168000E3,5.407062541E1 +1.140423000E3,5.585261351E1 +1.140694000E3,5.463535881E1 +1.140949000E3,5.407603664E1 +1.141230000E3,5.495767686E1 +1.141512000E3,5.639433741E1 +1.141818000E3,5.555715330E1 +1.142072000E3,5.729232944E1 +1.142323000E3,5.553013253E1 +1.142578000E3,5.648251207E1 +1.142844000E3,5.786931075E1 +1.143143000E3,6.007493220E1 +1.143523000E3,5.752076543E1 +1.143836000E3,5.573324560E1 +1.144090000E3,5.641950784E1 +1.144396000E3,5.532270625E1 +1.144644000E3,5.561239732E1 +1.144940000E3,5.206707456E1 +1.145212000E3,5.092140902E1 +1.145511000E3,5.452891649E1 +1.145770000E3,5.331137977E1 +1.146042000E3,5.366568195E1 +1.146338000E3,5.227174013E1 +1.146650000E3,5.423955559E1 +1.146934000E3,5.781916580E1 +1.147218000E3,5.532962824E1 +1.147467000E3,5.502661676E1 +1.147687000E3,5.823979674E1 +1.147961000E3,5.538066560E1 +1.148276000E3,5.423260060E1 +1.148528000E3,5.197461977E1 +1.148799000E3,5.154724487E1 +1.149057000E3,5.473685923E1 +1.149367000E3,5.647867848E1 +1.149660000E3,5.489455072E1 +1.150037000E3,6.072892064E1 +1.150335000E3,5.543869835E1 +1.150594000E3,5.667713742E1 +1.150870000E3,5.818755157E1 +1.151164000E3,5.210849760E1 +1.151411000E3,5.095671455E1 +1.151703000E3,5.254983272E1 +1.152002000E3,5.585064224E1 +1.152253000E3,5.739007574E1 +1.152582000E3,5.895179917E1 +1.152860000E3,5.461317681E1 +1.153122000E3,5.345759293E1 +1.153381000E3,5.267971619E1 +1.153684000E3,6.006602205E1 +1.153986000E3,5.573552061E1 +1.154286000E3,5.518963618E1 +1.154531000E3,5.342922095E1 +1.154792000E3,5.257536969E1 +1.155139000E3,4.887945516E1 +1.155435000E3,4.702411688E1 +1.155680000E3,4.867646616E1 +1.155978000E3,4.811861077E1 +1.156361000E3,4.915586406E1 +1.156670000E3,5.033026069E1 +1.156976000E3,5.393908378E1 +1.157274000E3,5.295128205E1 +1.157524000E3,5.249671789E1 +1.157816000E3,5.314344994E1 +1.158052000E3,5.237342933E1 +1.158353000E3,5.300284286E1 +1.158590000E3,5.170068449E1 +1.158867000E3,5.174146304E1 +1.159147000E3,4.929588783E1 +1.159411000E3,5.699090425E1 +1.159752000E3,5.266690351E1 +1.160068000E3,5.746767577E1 +1.160360000E3,5.375850846E1 +1.160640000E3,5.373794020E1 +1.160985000E3,5.304914530E1 +1.161280000E3,5.198754593E1 +1.161525000E3,5.019848207E1 +1.161766000E3,5.164623609E1 +1.162020000E3,5.363319210E1 +1.162324000E3,5.439011044E1 +1.162564000E3,5.304648945E1 +1.162816000E3,5.174573718E1 +1.163177000E3,4.505755779E1 +1.163462000E3,4.894753105E1 +1.163738000E3,5.064933943E1 +1.164013000E3,5.245879056E1 +1.164255000E3,5.017914517E1 +1.164568000E3,5.189205429E1 +1.164823000E3,5.038961444E1 +1.165052000E3,5.072118593E1 +1.165297000E3,4.831662547E1 +1.165552000E3,5.050204887E1 +1.165808000E3,5.308107982E1 +1.166062000E3,4.878509871E1 +1.166392000E3,5.002605106E1 +1.166654000E3,5.320265697E1 +1.166911000E3,4.403273534E1 +1.167180000E3,5.161386051E1 +1.167455000E3,4.986209571E1 +1.167692000E3,4.993305836E1 +1.167973000E3,5.173621365E1 +1.168216000E3,5.385559129E1 +1.168491000E3,5.543019156E1 +1.168757000E3,5.019966657E1 +1.169035000E3,5.569516326E1 +1.169296000E3,5.216419082E1 +1.169676000E3,5.398731996E1 +1.169933000E3,5.465625282E1 +1.170197000E3,5.451774184E1 +1.170449000E3,5.328129322E1 +1.170705000E3,5.452639907E1 +1.170963000E3,5.713735254E1 +1.171272000E3,5.551413923E1 +1.171528000E3,5.604966001E1 +1.171779000E3,5.340478404E1 +1.172038000E3,5.107817821E1 +1.172291000E3,5.218990306E1 +1.172602000E3,4.830451720E1 +1.172964000E3,5.276802164E1 +1.173245000E3,5.191204687E1 +1.173527000E3,5.337367972E1 +1.173838000E3,5.462664550E1 +1.174090000E3,5.304724513E1 +1.174379000E3,5.193251440E1 +1.174628000E3,5.283915893E1 +1.174936000E3,5.036641160E1 +1.175236000E3,4.890810708E1 +1.175487000E3,4.805298565E1 +1.175750000E3,5.067335741E1 +1.176019000E3,4.961207397E1 +1.176335000E3,4.820862314E1 +1.176634000E3,5.328684116E1 +1.176883000E3,5.122009001E1 +1.177165000E3,5.878687770E1 +1.177412000E3,5.487235950E1 +1.177709000E3,5.224569426E1 +1.178006000E3,5.403405997E1 +1.178246000E3,5.388661901E1 +1.178490000E3,5.237426881E1 +1.178734000E3,5.372043820E1 +1.179050000E3,5.471170909E1 +1.179387000E3,5.129350436E1 +1.179686000E3,4.660070824E1 +1.179916000E3,4.541361068E1 +1.180159000E3,4.365576113E1 +1.180466000E3,4.771103553E1 +1.180756000E3,4.863237791E1 +1.181008000E3,5.534959697E1 +1.181314000E3,5.376444060E1 +1.181609000E3,5.130885425E1 +1.181851000E3,5.256948786E1 +1.182151000E3,5.321964637E1 +1.182393000E3,5.074776981E1 +1.182622000E3,4.979941250E1 +1.182873000E3,5.445637667E1 +1.183116000E3,4.449721128E1 +1.183420000E3,5.086906199E1 +1.183676000E3,5.067998506E1 +1.183927000E3,5.352019181E1 +1.184219000E3,4.851971310E1 +1.184517000E3,5.123853013E1 +1.184764000E3,5.278221141E1 +1.185010000E3,5.126409245E1 +1.185297000E3,5.249182764E1 +1.185665000E3,5.346599478E1 +1.185972000E3,5.052250297E1 +1.186225000E3,5.389354916E1 +1.186534000E3,5.372737626E1 +1.186796000E3,5.415645782E1 +1.187048000E3,5.441424865E1 +1.187317000E3,5.470553815E1 +1.187622000E3,5.559990781E1 +1.187913000E3,5.619293356E1 +1.188186000E3,4.869472445E1 +1.188442000E3,5.069948923E1 +1.188718000E3,5.296813397E1 +1.189051000E3,5.015003063E1 +1.189308000E3,5.110938827E1 +1.189570000E3,5.250182053E1 +1.189815000E3,5.240850659E1 +1.190062000E3,5.446862868E1 +1.190368000E3,5.270463767E1 +1.190629000E3,5.117539458E1 +1.190931000E3,5.543767536E1 +1.191207000E3,5.348622922E1 +1.191505000E3,5.112152946E1 +1.191761000E3,4.905277341E1 +1.192068000E3,5.456405848E1 +1.192487000E3,5.016322677E1 +1.192732000E3,4.971711263E1 +1.192976000E3,5.396031961E1 +1.193258000E3,5.018645567E1 +1.193531000E3,4.895586707E1 +1.193790000E3,5.442023654E1 +1.194055000E3,5.160697029E1 +1.194326000E3,4.822365107E1 +1.194605000E3,5.396633777E1 +1.194903000E3,5.031021734E1 +1.195141000E3,5.278015326E1 +1.195431000E3,4.949576105E1 +1.195801000E3,5.244682833E1 +1.196076000E3,5.508575727E1 +1.196371000E3,5.161802747E1 +1.196603000E3,5.716896987E1 +1.196858000E3,5.210002974E1 +1.197207000E3,5.483594793E1 +1.197503000E3,5.204828926E1 +1.197774000E3,5.339169315E1 +1.198054000E3,4.934781945E1 +1.198312000E3,5.918797425E1 +1.198559000E3,5.025254784E1 +1.198808000E3,5.317746302E1 +1.199152000E3,5.656715516E1 +1.199464000E3,5.448426177E1 +1.199717000E3,5.419526565E1 +1.199961000E3,5.304156540E1 +1.200219000E3,4.961182292E1 +1.200480000E3,5.259766625E1 +1.200730000E3,5.295115767E1 +1.201029000E3,5.365389524E1 +1.201288000E3,5.465027972E1 +1.201538000E3,5.131261505E1 +1.201807000E3,5.767453751E1 +1.202112000E3,5.316006082E1 +1.202485000E3,5.263333972E1 +1.202739000E3,4.966297173E1 +1.203041000E3,5.282706501E1 +1.203300000E3,4.950274237E1 +1.203539000E3,4.377779375E1 +1.203832000E3,5.274682795E1 +1.204077000E3,5.348405653E1 +1.204320000E3,5.647600154E1 +1.204615000E3,4.835002395E1 +1.204854000E3,4.440243109E1 +1.205149000E3,4.673035253E1 +1.205410000E3,4.901106802E1 +1.205666000E3,5.311033159E1 +1.205952000E3,5.020567211E1 +1.206248000E3,5.046889058E1 +1.206545000E3,6.150607502E1 +1.206779000E3,5.260331634E1 +1.207093000E3,5.183291791E1 +1.207367000E3,4.957331060E1 +1.207610000E3,5.139200370E1 +1.207857000E3,5.005726187E1 +1.208158000E3,4.979521937E1 +1.208398000E3,5.178137337E1 +1.208738000E3,4.632694184E1 +1.208994000E3,4.836915777E1 +1.209279000E3,4.869228435E1 +1.209528000E3,5.096507040E1 +1.209784000E3,4.718590489E1 +1.210053000E3,4.835967114E1 +1.210281000E3,4.725223201E1 +1.210542000E3,5.172958855E1 +1.210823000E3,5.546336112E1 +1.211051000E3,5.448218663E1 +1.211300000E3,5.371995163E1 +1.211551000E3,4.887559574E1 +1.211926000E3,4.975732945E1 +1.212205000E3,5.041543230E1 +1.212482000E3,4.863959509E1 +1.212730000E3,5.047232348E1 +1.212990000E3,4.824384094E1 +1.213232000E3,5.039377586E1 +1.213493000E3,4.517891187E1 +1.213814000E3,4.686032989E1 +1.214062000E3,4.852263494E1 +1.214337000E3,4.897277606E1 +1.214586000E3,4.662047985E1 +1.214832000E3,5.483925472E1 +1.215143000E3,5.677489998E1 +1.215372000E3,5.470688254E1 +1.215664000E3,5.408747991E1 +1.215962000E3,5.167832591E1 +1.216227000E3,5.463116224E1 +1.216504000E3,5.335564969E1 +1.216747000E3,4.832376612E1 +1.216996000E3,4.918538596E1 +1.217306000E3,5.329611015E1 +1.217618000E3,5.364881155E1 +1.217885000E3,5.087209115E1 +1.218149000E3,4.967310650E1 +1.218497000E3,4.842689624E1 +1.218801000E3,5.442588779E1 +1.219043000E3,5.338467746E1 +1.219349000E3,5.187371665E1 +1.219600000E3,4.992515182E1 +1.219883000E3,5.205809257E1 +1.220161000E3,5.374364962E1 +1.220471000E3,5.145920034E1 +1.220752000E3,5.112774200E1 +1.221009000E3,4.969936214E1 +1.221258000E3,4.906585252E1 +1.221519000E3,4.971022706E1 +1.221873000E3,5.039216656E1 +1.222125000E3,4.735018859E1 +1.222388000E3,5.025223930E1 +1.222647000E3,5.349102952E1 +1.222903000E3,5.894430216E1 +1.223210000E3,5.133834742E1 +1.223464000E3,5.378681025E1 +1.223708000E3,5.646161983E1 +1.223949000E3,5.127610878E1 +1.224189000E3,5.295211205E1 +1.224441000E3,5.074229414E1 +1.224698000E3,5.428527885E1 +1.225064000E3,6.064230054E1 +1.225333000E3,5.545461106E1 +1.225591000E3,5.085263163E1 +1.225847000E3,4.867332677E1 +1.226137000E3,4.828036819E1 +1.226394000E3,5.187031217E1 +1.226668000E3,4.691949774E1 +1.226931000E3,4.605300024E1 +1.227219000E3,4.319091646E1 +1.227493000E3,4.827268256E1 +1.227791000E3,4.873371181E1 +1.228031000E3,4.895629331E1 +1.228388000E3,4.831306026E1 +1.228651000E3,5.150144778E1 +1.228942000E3,5.210555115E1 +1.229190000E3,4.868630793E1 +1.229442000E3,5.072280558E1 +1.229686000E3,5.520857657E1 +1.229933000E3,5.597505745E1 +1.230228000E3,5.309096620E1 +1.230467000E3,5.340491117E1 +1.230765000E3,4.966814228E1 +1.231012000E3,4.811713105E1 +1.231316000E3,5.037869561E1 +1.231666000E3,4.768651081E1 +1.231948000E3,4.577834304E1 +1.232207000E3,4.455407567E1 +1.232510000E3,5.091422235E1 +1.232802000E3,4.990562511E1 +1.233047000E3,5.178152081E1 +1.233344000E3,5.312014577E1 +1.233592000E3,5.002236071E1 +1.233892000E3,5.158473192E1 +1.234173000E3,4.692863129E1 +1.234463000E3,4.643331531E1 +1.234792000E3,4.659156592E1 +1.235060000E3,4.662718910E1 +1.235313000E3,5.204491267E1 +1.235577000E3,5.165973487E1 +1.235837000E3,4.753691687E1 +1.236124000E3,5.179615379E1 +1.236401000E3,4.807409380E1 +1.236654000E3,5.474790946E1 +1.236923000E3,4.946475170E1 +1.237180000E3,4.949471083E1 +1.237426000E3,4.669168363E1 +1.237743000E3,5.529942944E1 +1.238061000E3,5.997488643E1 +1.238363000E3,5.302222406E1 +1.238611000E3,5.022506453E1 +1.238856000E3,4.864145193E1 +1.239102000E3,5.299123845E1 +1.239357000E3,4.682866815E1 +1.239657000E3,4.770894983E1 +1.239902000E3,4.813746372E1 +1.240150000E3,4.571771059E1 +1.240465000E3,5.354012247E1 +1.240765000E3,5.830707734E1 +1.241013000E3,5.483189048E1 +1.241344000E3,5.157405593E1 +1.241606000E3,5.072581437E1 +1.241868000E3,5.137979859E1 +1.242133000E3,4.849261303E1 +1.242396000E3,5.556107710E1 +1.242656000E3,4.958779284E1 +1.242959000E3,5.301548021E1 +1.243232000E3,5.475621292E1 +1.243501000E3,5.660789219E1 +1.243755000E3,5.350018163E1 +1.244010000E3,5.415674835E1 +1.244349000E3,5.699979568E1 +1.244717000E3,5.660044844E1 +1.245015000E3,5.808533709E1 +1.245259000E3,5.881859790E1 +1.245558000E3,5.728882886E1 +1.245808000E3,6.044308225E1 +1.246079000E3,5.893900513E1 +1.246326000E3,5.279872381E1 +1.246637000E3,5.769196864E1 +1.246935000E3,5.963088900E1 +1.247181000E3,5.367341836E1 +1.247508000E3,4.963645506E1 +1.247848000E3,5.265770489E1 +1.248115000E3,5.355743381E1 +1.248359000E3,4.891015342E1 +1.248659000E3,4.819353582E1 +1.248902000E3,4.966403220E1 +1.249199000E3,4.977495696E1 +1.249449000E3,5.715212626E1 +1.249708000E3,5.458337902E1 +1.249983000E3,4.910795823E1 +1.250282000E3,5.184902745E1 +1.250527000E3,5.416053460E1 +1.250777000E3,5.320773170E1 +1.251084000E3,5.422274265E1 +1.251342000E3,5.429456299E1 +1.251602000E3,5.910733722E1 +1.251866000E3,5.226490816E1 +1.252178000E3,5.191466859E1 +1.252452000E3,5.143339371E1 +1.252681000E3,5.066846779E1 +1.252975000E3,4.928639562E1 +1.253256000E3,4.916995298E1 +1.253528000E3,5.115941927E1 +1.253816000E3,4.850268402E1 +1.254063000E3,5.682920937E1 +1.254418000E3,5.583927157E1 +1.254700000E3,5.243405901E1 +1.254947000E3,5.411796563E1 +1.255215000E3,5.538314624E1 +1.255487000E3,5.447026824E1 +1.255748000E3,5.115232974E1 +1.256046000E3,5.273125350E1 +1.256281000E3,5.501639825E1 +1.256559000E3,5.470702619E1 +1.256867000E3,5.330168249E1 +1.257116000E3,5.680033697E1 +1.257361000E3,5.088137081E1 +1.257690000E3,4.771044205E1 +1.257935000E3,5.556188303E1 +1.258189000E3,5.821474305E1 +1.258460000E3,5.913083175E1 +1.258757000E3,5.624840253E1 +1.259001000E3,5.575040009E1 +1.259294000E3,5.295140054E1 +1.259581000E3,5.547885633E1 +1.259831000E3,5.659634167E1 +1.260084000E3,5.552607398E1 +1.260378000E3,5.399987136E1 +1.260676000E3,5.741946227E1 +1.260997000E3,5.622829253E1 +1.261272000E3,5.638519080E1 +1.261569000E3,5.222122782E1 +1.261810000E3,5.168558616E1 +1.262055000E3,5.937417075E1 +1.262351000E3,5.419990938E1 +1.262597000E3,5.469291977E1 +1.262893000E3,5.501007253E1 +1.263142000E3,5.356116387E1 +1.263421000E3,5.643294047E1 +1.263644000E3,5.627927149E1 +1.263964000E3,5.547827797E1 +1.264255000E3,5.434029164E1 +1.264552000E3,5.355134450E1 +1.264791000E3,5.268456483E1 +1.265090000E3,5.304298782E1 +1.265342000E3,5.292557941E1 +1.265637000E3,5.267823535E1 +1.265885000E3,5.076475521E1 +1.266186000E3,5.470463807E1 +1.266480000E3,5.369531663E1 +1.266727000E3,5.321314382E1 +1.267074000E3,5.430022488E1 +1.267386000E3,5.498366079E1 +1.267650000E3,5.373765381E1 +1.267926000E3,5.631680810E1 +1.268156000E3,5.314598601E1 +1.268459000E3,5.446778700E1 +1.268718000E3,5.461487175E1 +1.269029000E3,4.723979401E1 +1.269322000E3,5.050485841E1 +1.269602000E3,5.263446338E1 +1.269914000E3,5.195043172E1 +1.270180000E3,5.361139844E1 +1.270542000E3,5.127785292E1 +1.270796000E3,5.111084292E1 +1.271061000E3,5.030178225E1 +1.271329000E3,4.978955516E1 +1.271616000E3,5.398913319E1 +1.271862000E3,5.537806166E1 +1.272155000E3,5.301545016E1 +1.272407000E3,5.450597504E1 +1.272651000E3,5.090153644E1 +1.272906000E3,5.335437953E1 +1.273148000E3,4.673762491E1 +1.273392000E3,5.062539325E1 +1.273710000E3,5.110756444E1 +1.273960000E3,5.466659884E1 +1.274217000E3,5.158121780E1 +1.274511000E3,5.575560452E1 +1.274759000E3,5.536976579E1 +1.275054000E3,5.425250328E1 +1.275298000E3,5.448034930E1 +1.275544000E3,5.185016662E1 +1.275828000E3,5.206320816E1 +1.276126000E3,5.118466074E1 +1.276376000E3,4.943928704E1 +1.276707000E3,5.090592254E1 +1.276972000E3,5.767487174E1 +1.277251000E3,5.481331862E1 +1.277544000E3,5.385854096E1 +1.277810000E3,5.179333541E1 +1.278097000E3,5.161992279E1 +1.278344000E3,5.248655937E1 +1.278657000E3,5.064236034E1 +1.278927000E3,4.915402835E1 +1.279197000E3,5.321156971E1 +1.279471000E3,5.438812541E1 +1.279734000E3,5.482588411E1 +1.280065000E3,5.157318203E1 +1.280296000E3,5.173449962E1 +1.280546000E3,5.465953878E1 +1.280843000E3,5.457680704E1 +1.281077000E3,5.562152963E1 +1.281325000E3,5.460406982E1 +1.281570000E3,5.232421403E1 +1.281870000E3,5.207576719E1 +1.282135000E3,4.968186040E1 +1.282378000E3,5.237915347E1 +1.282628000E3,4.745539727E1 +1.282877000E3,5.255989147E1 +1.283195000E3,5.301690658E1 +1.283467000E3,5.283539029E1 +1.283717000E3,5.083105477E1 +1.283978000E3,4.559322742E1 +1.284235000E3,4.934435088E1 +1.284538000E3,5.265118466E1 +1.284812000E3,5.302155906E1 +1.285045000E3,5.294725202E1 +1.285352000E3,5.129236762E1 +1.285646000E3,5.402858483E1 +1.285898000E3,5.434527110E1 +1.286189000E3,5.525625388E1 +1.286515000E3,5.653073998E1 +1.286819000E3,5.704731902E1 +1.287101000E3,5.310035962E1 +1.287387000E3,5.474072190E1 +1.287649000E3,5.496979063E1 +1.287925000E3,5.528941101E1 +1.288193000E3,5.394330028E1 +1.288492000E3,4.829171318E1 +1.288740000E3,5.076324605E1 +1.289004000E3,4.673843249E1 +1.289280000E3,5.345749476E1 +1.289584000E3,4.955238815E1 +1.289923000E3,5.268555513E1 +1.290206000E3,5.092762320E1 +1.290445000E3,5.180504716E1 +1.290779000E3,5.421996562E1 +1.291081000E3,5.408565728E1 +1.291322000E3,5.466627749E1 +1.291622000E3,5.247549140E1 +1.291870000E3,5.438915347E1 +1.292125000E3,5.526358440E1 +1.292428000E3,5.407200655E1 +1.292723000E3,5.160593410E1 +1.293035000E3,5.231731426E1 +1.293342000E3,5.126765219E1 +1.293626000E3,4.802016847E1 +1.293922000E3,5.428603515E1 +1.294199000E3,5.305841291E1 +1.294451000E3,5.676250586E1 +1.294738000E3,5.921971496E1 +1.295005000E3,5.812051865E1 +1.295266000E3,5.671365947E1 +1.295512000E3,5.389157640E1 +1.295809000E3,5.417883641E1 +1.296087000E3,5.169085532E1 +1.296408000E3,5.027989141E1 +1.296704000E3,5.801273246E1 +1.296951000E3,5.777618357E1 +1.297241000E3,5.598217178E1 +1.297547000E3,5.590671112E1 +1.297806000E3,6.302454961E1 +1.298073000E3,5.716944646E1 +1.298330000E3,5.693666329E1 +1.298591000E3,5.374930006E1 +1.298851000E3,5.170089530E1 +1.299100000E3,6.243829367E1 +1.299340000E3,5.522680485E1 +1.299673000E3,5.451288060E1 +1.299933000E3,5.720613947E1 +1.300193000E3,5.131457759E1 +1.300510000E3,5.593393786E1 +1.300810000E3,5.344184529E1 +1.301099000E3,5.432320381E1 +1.301355000E3,5.294046944E1 +1.301602000E3,5.330691828E1 +1.301911000E3,4.899471979E1 +1.302175000E3,5.054546621E1 +1.302420000E3,4.914598102E1 +1.302706000E3,5.757950400E1 +1.303045000E3,5.798603958E1 +1.303343000E3,5.685278830E1 +1.303584000E3,5.272645619E1 +1.303869000E3,5.576083132E1 +1.304169000E3,5.311655900E1 +1.304414000E3,5.297304035E1 +1.304724000E3,6.119658997E1 +1.304998000E3,5.921259630E1 +1.305275000E3,5.974785927E1 +1.305567000E3,5.829108198E1 +1.305799000E3,5.656256791E1 +1.306151000E3,5.263150293E1 +1.306475000E3,5.719715846E1 +1.306754000E3,5.746813017E1 +1.307020000E3,6.063794361E1 +1.307320000E3,5.945639283E1 +1.307570000E3,5.898495898E1 +1.307856000E3,5.345744690E1 +1.308127000E3,5.882374416E1 +1.308390000E3,5.704844280E1 +1.308660000E3,6.230218860E1 +1.308982000E3,5.794977886E1 +1.309252000E3,5.609480230E1 +1.309620000E3,5.439173238E1 +1.309924000E3,5.804315704E1 +1.310253000E3,5.898090143E1 +1.310510000E3,5.933785859E1 +1.310826000E3,5.484966867E1 +1.311077000E3,5.841635068E1 +1.311358000E3,5.536029260E1 +1.311601000E3,5.555523834E1 +1.311895000E3,5.637714479E1 +1.312195000E3,5.253312652E1 +1.312445000E3,5.377927694E1 +1.312696000E3,5.757954833E1 +1.313038000E3,5.500733438E1 +1.313282000E3,5.367385274E1 +1.313558000E3,5.610715122E1 +1.313797000E3,5.528556803E1 +1.314063000E3,5.884958532E1 +1.314412000E3,5.458036035E1 +1.314671000E3,5.765344335E1 +1.314945000E3,5.139756723E1 +1.315223000E3,5.546002517E1 +1.315503000E3,5.608276603E1 +1.315733000E3,5.719791479E1 +1.315986000E3,5.413888898E1 +1.316329000E3,5.789500166E1 +1.316579000E3,5.404086097E1 +1.316819000E3,6.021843554E1 +1.317067000E3,5.929690830E1 +1.317365000E3,6.066063258E1 +1.317666000E3,5.465341745E1 +1.317917000E3,5.115712079E1 +1.318169000E3,4.986479689E1 +1.318470000E3,5.351977371E1 +1.318716000E3,5.614277654E1 +1.318987000E3,5.824140620E1 +1.319280000E3,5.863858703E1 +1.319646000E3,5.908977231E1 +1.319902000E3,5.867594430E1 +1.320142000E3,5.256185028E1 +1.320379000E3,5.916248935E1 +1.320672000E3,5.829134786E1 +1.320910000E3,5.729121950E1 +1.321203000E3,5.817253701E1 +1.321434000E3,5.958327052E1 +1.321726000E3,6.109571062E1 +1.321963000E3,6.309400740E1 +1.322263000E3,6.381431561E1 +1.322586000E3,6.124594205E1 +1.322839000E3,6.120886427E1 +1.323128000E3,5.624496406E1 +1.323377000E3,6.205845751E1 +1.323676000E3,6.248705287E1 +1.323968000E3,6.259357777E1 +1.324217000E3,6.168308921E1 +1.324496000E3,6.128297543E1 +1.324731000E3,5.975404370E1 +1.325024000E3,6.147148959E1 +1.325261000E3,6.101142333E1 +1.325573000E3,5.682124874E1 +1.325854000E3,5.869490284E1 +1.326149000E3,5.646663249E1 +1.326392000E3,5.662110608E1 +1.326643000E3,5.067702480E1 +1.326984000E3,5.759763927E1 +1.327264000E3,5.613584630E1 +1.327489000E3,5.826097161E1 +1.327735000E3,5.843702691E1 +1.328012000E3,5.352317094E1 +1.328253000E3,5.737674501E1 +1.328545000E3,5.736811408E1 +1.328911000E3,5.477233671E1 +1.329158000E3,5.481436604E1 +1.329403000E3,4.974322484E1 +1.329645000E3,5.490077996E1 +1.329890000E3,4.870505425E1 +1.330144000E3,4.955972956E1 +1.330428000E3,5.470042727E1 +1.330734000E3,5.618884112E1 +1.331026000E3,5.238151215E1 +1.331265000E3,5.344428978E1 +1.331515000E3,5.051963956E1 +1.331772000E3,5.068574448E1 +1.332120000E3,5.754233113E1 +1.332409000E3,5.498832674E1 +1.332740000E3,5.245036701E1 +1.333034000E3,5.885934606E1 +1.333286000E3,5.644915657E1 +1.333540000E3,5.532779852E1 +1.333784000E3,5.694511409E1 +1.334028000E3,5.553937724E1 +1.334302000E3,5.308286554E1 +1.334615000E3,5.140154995E1 +1.334876000E3,5.045296543E1 +1.335187000E3,5.631993217E1 +1.335451000E3,5.435091016E1 +1.335722000E3,5.624357652E1 +1.335986000E3,5.791043400E1 +1.336271000E3,5.847603086E1 +1.336545000E3,5.757219882E1 +1.336794000E3,6.070042624E1 +1.337072000E3,5.247827017E1 +1.337340000E3,5.208145921E1 +1.337609000E3,6.026756153E1 +1.337870000E3,6.012826199E1 +1.338134000E3,5.465450317E1 +1.338408000E3,5.768658418E1 +1.338755000E3,5.542991210E1 +1.339019000E3,5.279974580E1 +1.339289000E3,4.966927449E1 +1.339556000E3,4.563713389E1 +1.339804000E3,4.961972315E1 +1.340056000E3,5.287436972E1 +1.340316000E3,5.318950925E1 +1.340586000E3,5.037908496E1 +1.340881000E3,5.345184090E1 +1.341116000E3,5.016784238E1 +1.341407000E3,5.799295151E1 +1.341694000E3,5.875659808E1 +1.342051000E3,5.666657228E1 +1.342345000E3,5.241270038E1 +1.342638000E3,5.754780266E1 +1.342875000E3,5.669750570E1 +1.343177000E3,5.541629106E1 +1.343432000E3,5.556249818E1 +1.343726000E3,5.603182587E1 +1.343969000E3,5.961525777E1 +1.344257000E3,5.915223521E1 +1.344498000E3,5.820677933E1 +1.344777000E3,5.815031326E1 +1.345094000E3,5.733094423E1 +1.345363000E3,5.538469317E1 +1.345622000E3,6.270903439E1 +1.345877000E3,5.551461514E1 +1.346148000E3,5.750063996E1 +1.346395000E3,5.473739655E1 +1.346676000E3,5.131350753E1 +1.346958000E3,5.072615719E1 +1.347258000E3,4.882711207E1 +1.347518000E3,5.273988371E1 +1.347784000E3,6.269937361E1 +1.348040000E3,6.058958657E1 +1.348391000E3,5.894445662E1 +1.348716000E3,5.683213923E1 +1.348984000E3,5.875140523E1 +1.349236000E3,5.263650529E1 +1.349491000E3,4.630287352E1 +1.349847000E3,5.742006494E1 +1.350115000E3,6.486179330E1 +1.350358000E3,5.963871460E1 +1.350612000E3,5.220281373E1 +1.350868000E3,5.825229613E1 +1.351125000E3,5.822075100E1 +1.351374000E3,5.487419692E1 +1.351666000E3,5.461361208E1 +1.351934000E3,5.384511910E1 +1.352185000E3,5.782109838E1 +1.352440000E3,5.156901690E1 +1.352688000E3,5.262530942E1 +1.352990000E3,5.827406705E1 +1.353265000E3,6.164230870E1 +1.353493000E3,5.939319367E1 +1.353769000E3,5.491407227E1 +1.353989000E3,5.363390940E1 +1.354236000E3,5.108497673E1 +1.354516000E3,6.129017752E1 +1.354836000E3,5.594784457E1 +1.355095000E3,5.172378417E1 +1.355422000E3,5.975901259E1 +1.355685000E3,5.720857994E1 +1.355941000E3,5.600667557E1 +1.356197000E3,5.471836828E1 +1.356478000E3,5.319452565E1 +1.356745000E3,5.296912594E1 +1.357013000E3,5.811625635E1 +1.357280000E3,5.430511038E1 +1.357577000E3,5.277700001E1 +1.357824000E3,5.616769978E1 +1.358135000E3,5.406396803E1 +1.358401000E3,4.910300122E1 +1.358643000E3,5.077236009E1 +1.358892000E3,5.530877446E1 +1.359206000E3,5.787482939E1 +1.359485000E3,5.846197249E1 +1.359760000E3,6.103303991E1 +1.360055000E3,6.092009186E1 +1.360296000E3,5.979156049E1 +1.360590000E3,6.049263298E1 +1.360828000E3,5.895545308E1 +1.361114000E3,5.611946421E1 +1.361473000E3,5.480295831E1 +1.361726000E3,5.397626184E1 +1.361972000E3,5.443193027E1 +1.362314000E3,5.572591927E1 +1.362560000E3,5.224616115E1 +1.362808000E3,5.244486023E1 +1.363061000E3,5.179430466E1 +1.363307000E3,5.228822629E1 +1.363555000E3,5.248152719E1 +1.363850000E3,5.310816898E1 +1.364115000E3,5.586433987E1 +1.364397000E3,5.735023043E1 +1.364703000E3,6.002405491E1 +1.364950000E3,5.692273216E1 +1.365192000E3,5.941823705E1 +1.365459000E3,5.316793659E1 +1.365709000E3,5.869878442E1 +1.365953000E3,5.756526572E1 +1.366216000E3,5.687574379E1 +1.366491000E3,5.232478004E1 +1.366744000E3,5.424491879E1 +1.367001000E3,5.235481979E1 +1.367305000E3,5.164783122E1 +1.367588000E3,4.924997634E1 +1.367934000E3,4.924339558E1 +1.368196000E3,5.793398832E1 +1.368473000E3,5.529211657E1 +1.368719000E3,5.120874356E1 +1.368963000E3,5.470742612E1 +1.369285000E3,5.560989240E1 +1.369528000E3,5.197646059E1 +1.369822000E3,5.152328490E1 +1.370111000E3,5.791930576E1 +1.370416000E3,5.368811562E1 +1.370672000E3,5.769124019E1 +1.370919000E3,5.333549653E1 +1.371292000E3,5.847056292E1 +1.371551000E3,5.642894477E1 +1.371803000E3,5.817537921E1 +1.372074000E3,5.885584750E1 +1.372335000E3,5.395474736E1 +1.372602000E3,5.211537518E1 +1.372880000E3,4.924374923E1 +1.373126000E3,4.882665291E1 +1.373379000E3,5.483140316E1 +1.373636000E3,5.380197532E1 +1.373915000E3,5.629967483E1 +1.374251000E3,5.773524892E1 +1.374636000E3,6.271253195E1 +1.374894000E3,5.870587143E1 +1.375125000E3,5.496954916E1 +1.375369000E3,5.621931219E1 +1.375641000E3,5.700323462E1 +1.375912000E3,5.808968856E1 +1.376161000E3,5.697587873E1 +1.376437000E3,5.739415600E1 +1.376687000E3,5.874614285E1 +1.376941000E3,5.855325473E1 +1.377252000E3,5.287324040E1 +1.377495000E3,5.331405656E1 +1.377862000E3,5.163612814E1 +1.378109000E3,6.003152631E1 +1.378372000E3,6.448039849E1 +1.378641000E3,6.226927373E1 +1.378912000E3,6.355904277E1 +1.379208000E3,6.121718755E1 +1.379463000E3,6.371699462E1 +1.379738000E3,5.774542440E1 +1.380076000E3,5.579766677E1 +1.380318000E3,5.520595979E1 +1.380614000E3,5.395000262E1 +1.380855000E3,5.263752401E1 +1.381221000E3,5.267030150E1 +1.381492000E3,5.304251562E1 +1.381793000E3,4.959737221E1 +1.382100000E3,5.549829026E1 +1.382347000E3,5.821584994E1 +1.382642000E3,5.861199323E1 +1.382905000E3,5.256382895E1 +1.383164000E3,5.491877459E1 +1.383443000E3,5.644995893E1 +1.383702000E3,5.411249990E1 +1.383954000E3,5.324738213E1 +1.384305000E3,5.625052210E1 +1.384532000E3,6.070474662E1 +1.384789000E3,5.237062704E1 +1.385074000E3,5.442107865E1 +1.385361000E3,6.017483878E1 +1.385605000E3,6.237555822E1 +1.385869000E3,5.605951782E1 +1.386126000E3,6.511151133E1 +1.386382000E3,5.571785683E1 +1.386696000E3,5.398201636E1 +1.386954000E3,5.323734283E1 +1.387264000E3,5.635686029E1 +1.387623000E3,5.701357512E1 +1.387874000E3,5.632095063E1 +1.388187000E3,5.288354031E1 +1.388477000E3,5.152350906E1 +1.388761000E3,5.130627857E1 +1.388982000E3,4.918436870E1 +1.389239000E3,5.567775637E1 +1.389545000E3,5.465238648E1 +1.389786000E3,5.003079725E1 +1.390027000E3,5.504486936E1 +1.390282000E3,5.947272344E1 +1.390539000E3,6.106137952E1 +1.390892000E3,5.985290475E1 +1.391203000E3,5.500825546E1 +1.391507000E3,5.157102239E1 +1.391806000E3,5.517662265E1 +1.392108000E3,5.349243854E1 +1.392411000E3,5.386652866E1 +1.392707000E3,5.258839734E1 +1.392973000E3,5.376638351E1 +1.393221000E3,5.619475880E1 +1.393480000E3,5.846509931E1 +1.393767000E3,6.504346680E1 +1.394122000E3,5.865804348E1 +1.394392000E3,5.055217311E1 +1.394673000E3,4.837306759E1 +1.394931000E3,5.564689750E1 +1.395193000E3,5.416088817E1 +1.395489000E3,5.481584764E1 +1.395781000E3,5.356143065E1 +1.396078000E3,5.074158934E1 +1.396313000E3,5.177896206E1 +1.396618000E3,5.670327312E1 +1.396914000E3,6.043149132E1 +1.397246000E3,5.875453471E1 +1.397559000E3,5.725772305E1 +1.397842000E3,5.610169288E1 +1.398092000E3,6.098127982E1 +1.398354000E3,5.385330985E1 +1.398611000E3,5.345613584E1 +1.398873000E3,6.183897473E1 +1.399135000E3,5.898294985E1 +1.399399000E3,5.644599073E1 +1.399662000E3,6.288338842E1 +1.399923000E3,5.844786233E1 +1.400178000E3,6.145207907E1 +1.400438000E3,5.797678971E1 +1.400786000E3,5.805590691E1 +1.401082000E3,5.956739883E1 +1.401323000E3,5.537900496E1 +1.401618000E3,5.084213917E1 +1.401871000E3,4.807017206E1 +1.402118000E3,5.545233073E1 +1.402411000E3,5.516036366E1 +1.402644000E3,5.413431379E1 +1.402920000E3,5.388857626E1 +1.403209000E3,5.292068844E1 +1.403479000E3,5.775211983E1 +1.403718000E3,5.117484548E1 +1.404045000E3,5.912447648E1 +1.404295000E3,5.591921957E1 +1.404568000E3,5.565028551E1 +1.404828000E3,5.013398992E1 +1.405122000E3,5.465164253E1 +1.405364000E3,5.305211462E1 +1.405620000E3,5.755171154E1 +1.405929000E3,6.007655449E1 +1.406174000E3,5.899920387E1 +1.406463000E3,5.970773629E1 +1.406720000E3,5.770443308E1 +1.407009000E3,5.521297881E1 +1.407407000E3,5.604277064E1 +1.407677000E3,5.646208540E1 +1.407969000E3,4.906112006E1 +1.408239000E3,5.193830101E1 +1.408558000E3,4.835599484E1 +1.408830000E3,4.864558507E1 +1.409087000E3,5.566138381E1 +1.409349000E3,5.240816417E1 +1.409604000E3,4.366169359E1 +1.409843000E3,4.924613485E1 +1.410167000E3,5.289541091E1 +1.410462000E3,5.429333459E1 +1.410857000E3,5.232803186E1 +1.411115000E3,5.279391543E1 +1.411388000E3,5.698112108E1 +1.411689000E3,4.954635028E1 +1.411940000E3,5.347151392E1 +1.412202000E3,5.431542928E1 +1.412461000E3,5.708654506E1 +1.412712000E3,5.999867781E1 +1.412972000E3,5.836713300E1 +1.413243000E3,5.662529411E1 +1.413547000E3,5.760118844E1 +1.413790000E3,5.272334048E1 +1.414155000E3,5.585703000E1 +1.414407000E3,5.277217169E1 +1.414666000E3,5.575617717E1 +1.414970000E3,5.588142009E1 +1.415263000E3,5.043609445E1 +1.415519000E3,5.366091219E1 +1.415818000E3,6.729065738E1 +1.416082000E3,5.454700058E1 +1.416357000E3,5.542836481E1 +1.416608000E3,6.150002805E1 +1.416870000E3,5.918799699E1 +1.417164000E3,5.739551304E1 +1.417548000E3,5.312046747E1 +1.417864000E3,5.735989692E1 +1.418111000E3,5.463708503E1 +1.418368000E3,5.616594485E1 +1.418622000E3,5.674613857E1 +1.418880000E3,5.393284238E1 +1.419178000E3,5.477989298E1 +1.419414000E3,5.673628135E1 +1.419692000E3,5.246670124E1 +1.419935000E3,5.929492524E1 +1.420173000E3,5.718550468E1 +1.420417000E3,5.597503360E1 +1.420745000E3,5.209811810E1 +1.421016000E3,5.108820023E1 +1.421271000E3,5.704928631E1 +1.421524000E3,5.534619134E1 +1.421787000E3,5.298830069E1 +1.422048000E3,5.357926773E1 +1.422324000E3,5.150193558E1 +1.422590000E3,5.236977243E1 +1.422860000E3,5.598534631E1 +1.423111000E3,5.804712890E1 +1.423360000E3,5.584477369E1 +1.423617000E3,6.166819052E1 +1.423956000E3,6.217862533E1 +1.424239000E3,6.474885215E1 +1.424493000E3,6.561094566E1 +1.424771000E3,6.624921272E1 +1.425013000E3,6.269332683E1 +1.425310000E3,6.427501900E1 +1.425550000E3,6.406421996E1 +1.425806000E3,6.561696377E1 +1.426124000E3,5.757984813E1 +1.426392000E3,6.467113265E1 +1.426661000E3,6.110360998E1 +1.426971000E3,6.257935575E1 +1.427325000E3,6.059948571E1 +1.427600000E3,6.060080967E1 +1.427858000E3,6.129065918E1 +1.428157000E3,6.869907238E1 +1.428403000E3,6.216021300E1 +1.428668000E3,6.028715826E1 +1.428917000E3,5.215970407E1 +1.429175000E3,5.348756082E1 +1.429445000E3,5.866879342E1 +1.429775000E3,5.422412762E1 +1.430077000E3,5.967912654E1 +1.430370000E3,6.053958419E1 +1.430696000E3,5.642153628E1 +1.430959000E3,5.797803369E1 +1.431217000E3,5.265853131E1 +1.431545000E3,6.085541328E1 +1.431825000E3,6.579757863E1 +1.432095000E3,6.783858113E1 +1.432356000E3,6.680245969E1 +1.432609000E3,5.699539434E1 +1.432887000E3,5.495476405E1 +1.433146000E3,5.431336982E1 +1.433405000E3,5.468573805E1 +1.433768000E3,6.415525931E1 +1.434037000E3,5.996195649E1 +1.434305000E3,5.880144898E1 +1.434536000E3,5.062803370E1 +1.434794000E3,4.838886892E1 +1.435059000E3,4.852598648E1 +1.435348000E3,5.424758091E1 +1.435611000E3,6.028120001E1 +1.435845000E3,5.860165153E1 +1.436098000E3,5.820116177E1 +1.436348000E3,5.458976108E1 +1.436603000E3,5.748661459E1 +1.436983000E3,5.071157707E1 +1.437230000E3,5.187454119E1 +1.437505000E3,5.690962542E1 +1.437744000E3,5.898297949E1 +1.438006000E3,6.083548120E1 +1.438278000E3,4.929702369E1 +1.438556000E3,5.094464024E1 +1.438857000E3,5.451803318E1 +1.439157000E3,4.851675588E1 +1.439427000E3,4.781325912E1 +1.439724000E3,4.919544886E1 +1.439968000E3,4.662525194E1 +1.440374000E3,4.187537091E1 +1.440620000E3,5.083424523E1 +1.440895000E3,4.476479772E1 +1.441179000E3,5.236126827E1 +1.441495000E3,4.954212438E1 +1.441772000E3,5.444261950E1 +1.442048000E3,5.023278537E1 +1.442273000E3,4.640707667E1 +1.442557000E3,5.088583460E1 +1.442822000E3,5.041471443E1 +1.443067000E3,4.940152653E1 +1.443315000E3,4.834999124E1 +1.443550000E3,5.084173145E1 +1.443802000E3,4.674944421E1 +1.444118000E3,5.005548854E1 +1.444412000E3,4.880222753E1 +1.444695000E3,4.829349493E1 +1.444948000E3,4.815408858E1 +1.445231000E3,4.968297573E1 +1.445471000E3,5.263069989E1 +1.445763000E3,4.570389774E1 +1.446062000E3,4.674284816E1 +1.446364000E3,5.179136771E1 +1.446637000E3,5.007894257E1 +1.446884000E3,5.001285233E1 +1.447102000E3,5.063641057E1 +1.447373000E3,4.164946286E1 +1.447601000E3,3.981108666E1 +1.447894000E3,4.316358072E1 +1.448132000E3,5.465701871E1 +1.448431000E3,4.615144027E1 +1.448672000E3,4.353154230E1 +1.448965000E3,5.208221965E1 +1.449200000E3,5.530439334E1 +1.449496000E3,4.996075498E1 +1.449729000E3,5.218941020E1 +1.450060000E3,4.888890123E1 +1.450335000E3,5.030971329E1 +1.450629000E3,5.012870067E1 +1.450899000E3,4.847297804E1 +1.451151000E3,4.759762696E1 +1.451454000E3,4.978926902E1 +1.451751000E3,4.930919072E1 +1.452001000E3,5.004861581E1 +1.452285000E3,5.051309266E1 +1.452566000E3,4.810890055E1 +1.452826000E3,4.654354865E1 +1.453069000E3,4.761425190E1 +1.453369000E3,4.589508435E1 +1.453616000E3,4.954922405E1 +1.453886000E3,4.065983258E1 +1.454197000E3,4.220647307E1 +1.454513000E3,4.858310714E1 +1.454789000E3,5.196405012E1 +1.455012000E3,5.467685341E1 +1.455262000E3,5.753332593E1 +1.455513000E3,4.707036048E1 +1.455859000E3,3.942826471E1 +1.456237000E3,5.170062203E1 +1.456495000E3,6.022707597E1 +1.456743000E3,5.524301158E1 +1.456990000E3,5.482834451E1 +1.457257000E3,4.917995293E1 +1.457590000E3,4.739340640E1 +1.457831000E3,4.842051754E1 +1.458073000E3,6.166669432E1 +1.458329000E3,5.427876580E1 +1.458617000E3,4.896037674E1 +1.458889000E3,4.346397471E1 +1.459122000E3,4.481546196E1 +1.459424000E3,5.149740630E1 +1.459726000E3,4.614214660E1 +1.459975000E3,4.567227587E1 +1.460237000E3,5.348774305E1 +1.460488000E3,5.617792493E1 +1.460730000E3,5.122937085E1 +1.460971000E3,5.712815616E1 +1.461266000E3,5.592815325E1 +1.461504000E3,5.208026338E1 +1.461798000E3,5.368936290E1 +1.462033000E3,5.424431898E1 +1.462332000E3,5.229538114E1 +1.462686000E3,5.012562607E1 +1.462943000E3,5.517893002E1 +1.463292000E3,5.544440679E1 +1.463574000E3,5.195225561E1 +1.463851000E3,5.582804772E1 +1.464133000E3,5.163717454E1 +1.464392000E3,5.056978371E1 +1.464653000E3,5.085736348E1 +1.464931000E3,5.111025552E1 +1.465171000E3,5.008163028E1 +1.465468000E3,5.204681239E1 +1.465721000E3,4.873162615E1 +1.466070000E3,5.052420662E1 +1.466365000E3,5.115431116E1 +1.466626000E3,5.008089225E1 +1.466902000E3,5.455907242E1 +1.467123000E3,5.881328519E1 +1.467422000E3,5.654049662E1 +1.467665000E3,6.208900398E1 +1.467911000E3,5.573620080E1 +1.468210000E3,5.034178452E1 +1.468461000E3,4.644884091E1 +1.468716000E3,4.489036287E1 +1.469021000E3,4.555962209E1 +1.469437000E3,4.956164087E1 +1.469733000E3,5.014140659E1 +1.469995000E3,5.025508197E1 +1.470298000E3,4.976482928E1 +1.470552000E3,4.666552600E1 +1.470801000E3,5.164800320E1 +1.471107000E3,4.748865751E1 +1.471358000E3,5.068455306E1 +1.471623000E3,5.380657492E1 +1.471874000E3,4.918332364E1 +1.472155000E3,4.974368594E1 +1.472539000E3,5.519550202E1 +1.472795000E3,5.119649457E1 +1.473056000E3,5.406344748E1 +1.473370000E3,5.554928156E1 +1.473655000E3,5.458007948E1 +1.473895000E3,5.519923804E1 +1.474152000E3,5.580016483E1 +1.474437000E3,5.718813696E1 +1.474685000E3,5.734393611E1 +1.474960000E3,5.879862387E1 +1.475221000E3,5.602300215E1 +1.475474000E3,5.025640835E1 +1.475826000E3,5.543439402E1 +1.476071000E3,5.232164352E1 +1.476323000E3,5.898115961E1 +1.476584000E3,6.066467981E1 +1.476821000E3,5.071984472E1 +1.477123000E3,5.740447565E1 +1.477365000E3,5.959782608E1 +1.477662000E3,5.958620190E1 +1.477906000E3,5.753388342E1 +1.478144000E3,5.506848886E1 +1.478455000E3,5.769430513E1 +1.478723000E3,5.629679592E1 +1.478987000E3,5.649495967E1 +1.479262000E3,5.787253729E1 +1.479512000E3,5.216150167E1 +1.479813000E3,4.948302212E1 +1.480088000E3,5.080056078E1 +1.480342000E3,4.734041467E1 +1.480601000E3,4.440736689E1 +1.480866000E3,5.120725270E1 +1.481166000E3,5.053254929E1 +1.481466000E3,5.274685420E1 +1.481724000E3,5.071521067E1 +1.481973000E3,5.225995741E1 +1.482300000E3,5.133897759E1 +1.482575000E3,5.007250383E1 +1.482845000E3,5.042400131E1 +1.483101000E3,5.258901014E1 +1.483408000E3,5.618504625E1 +1.483668000E3,5.503349900E1 +1.483933000E3,4.974702245E1 +1.484194000E3,5.170781389E1 +1.484440000E3,5.072340799E1 +1.484707000E3,5.947536199E1 +1.485018000E3,5.467515596E1 +1.485306000E3,6.085614245E1 +1.485656000E3,5.990152864E1 +1.485935000E3,5.602550586E1 +1.486168000E3,5.561766537E1 +1.486422000E3,5.350876804E1 +1.486701000E3,5.699979875E1 +1.486960000E3,5.177464585E1 +1.487207000E3,5.249766501E1 +1.487486000E3,5.285366750E1 +1.487751000E3,5.316768095E1 +1.488002000E3,4.876639606E1 +1.488262000E3,5.179834313E1 +1.488516000E3,4.991892364E1 +1.488812000E3,5.156353661E1 +1.489125000E3,5.341434219E1 +1.489400000E3,5.426211096E1 +1.489675000E3,4.699672779E1 +1.489958000E3,5.361914521E1 +1.490219000E3,5.605827819E1 +1.490490000E3,5.089547448E1 +1.490772000E3,5.163564337E1 +1.491061000E3,5.841576784E1 +1.491309000E3,5.524417730E1 +1.491589000E3,5.450558122E1 +1.491873000E3,5.581032480E1 +1.492194000E3,5.802352567E1 +1.492448000E3,4.962366630E1 +1.492810000E3,5.873656508E1 +1.493058000E3,5.690804947E1 +1.493359000E3,5.262261274E1 +1.493674000E3,5.584655342E1 +1.493919000E3,5.542283425E1 +1.494163000E3,5.373884310E1 +1.494412000E3,5.084083433E1 +1.494678000E3,4.964027690E1 +1.494956000E3,5.125570040E1 +1.495204000E3,5.194895191E1 +1.495526000E3,4.961412488E1 +1.495784000E3,4.972405818E1 +1.496036000E3,4.777083448E1 +1.496283000E3,5.231556692E1 +1.496593000E3,5.894066851E1 +1.496842000E3,6.007182772E1 +1.497086000E3,6.003234807E1 +1.497358000E3,5.170627362E1 +1.497682000E3,5.564688341E1 +1.497937000E3,5.459086103E1 +1.498234000E3,5.654462748E1 +1.498530000E3,5.643601391E1 +1.498887000E3,5.593732695E1 +1.499182000E3,5.279859883E1 +1.499469000E3,5.063056157E1 +1.499723000E3,4.846330641E1 +1.499972000E3,5.696559719E1 +1.500236000E3,5.806291630E1 +1.500555000E3,5.485435177E1 +1.500851000E3,5.386376671E1 +1.501120000E3,5.529102258E1 +1.501400000E3,5.058415032E1 +1.501675000E3,5.420960743E1 +1.501928000E3,4.962388553E1 +1.502263000E3,5.167692375E1 +1.502567000E3,5.072695334E1 +1.502878000E3,5.319678523E1 +1.503119000E3,5.961199300E1 +1.503369000E3,5.299728366E1 +1.503631000E3,5.369404965E1 +1.503941000E3,5.426817134E1 +1.504209000E3,5.369336762E1 +1.504462000E3,5.246626497E1 +1.504724000E3,5.358557871E1 +1.505015000E3,4.957781391E1 +1.505279000E3,5.117668163E1 +1.505699000E3,5.216401891E1 +1.505963000E3,5.011348657E1 +1.506261000E3,5.259055540E1 +1.506507000E3,4.579432510E1 +1.506795000E3,4.877099475E1 +1.507032000E3,4.679595596E1 +1.507314000E3,5.136222565E1 +1.507549000E3,5.267101191E1 +1.507792000E3,5.244999525E1 +1.508074000E3,5.180561005E1 +1.508391000E3,5.030990700E1 +1.508607000E3,5.167226321E1 +1.508859000E3,5.218207738E1 +1.509151000E3,5.317725961E1 +1.509397000E3,5.318899610E1 +1.509689000E3,4.978257152E1 +1.509934000E3,5.032443800E1 +1.510228000E3,4.777293014E1 +1.510466000E3,4.646316587E1 +1.510767000E3,5.646850943E1 +1.511001000E3,5.638889819E1 +1.511293000E3,5.773758842E1 +1.511610000E3,5.580372922E1 +1.511900000E3,5.517502050E1 +1.512151000E3,5.684013484E1 +1.512393000E3,5.407249321E1 +1.512652000E3,5.725430710E1 +1.512902000E3,5.755876004E1 +1.513148000E3,5.492786930E1 +1.513404000E3,5.665177401E1 +1.513705000E3,5.675683028E1 +1.513957000E3,5.845897420E1 +1.514258000E3,5.334537973E1 +1.514488000E3,5.035361876E1 +1.514812000E3,4.886526824E1 +1.515059000E3,5.555156669E1 +1.515357000E3,5.401240780E1 +1.515600000E3,5.191330713E1 +1.515873000E3,5.158089375E1 +1.516102000E3,5.397456219E1 +1.516410000E3,5.205317520E1 +1.516679000E3,5.689433829E1 +1.516971000E3,5.397466306E1 +1.517230000E3,5.553699481E1 +1.517504000E3,5.550832571E1 +1.517763000E3,5.490604036E1 +1.518130000E3,5.129555301E1 +1.518403000E3,5.478479772E1 +1.518670000E3,5.687403653E1 +1.518921000E3,5.464295853E1 +1.519177000E3,5.713561839E1 +1.519461000E3,5.306473622E1 +1.519745000E3,5.320579073E1 +1.520002000E3,5.309385307E1 +1.520258000E3,5.058967996E1 +1.520552000E3,5.470724085E1 +1.520793000E3,5.303104936E1 +1.521156000E3,5.432496893E1 +1.521453000E3,5.594215604E1 +1.521721000E3,5.308545736E1 +1.521969000E3,5.327888421E1 +1.522220000E3,5.030915333E1 +1.522490000E3,5.230098434E1 +1.522776000E3,4.743827766E1 +1.523026000E3,5.464211349E1 +1.523327000E3,5.322537523E1 +1.523581000E3,5.154569729E1 +1.523826000E3,5.335950152E1 +1.524133000E3,5.482016506E1 +1.524417000E3,5.825411535E1 +1.524853000E3,5.879893849E1 +1.525179000E3,5.728744863E1 +1.525433000E3,5.737571640E1 +1.525696000E3,5.681107869E1 +1.525950000E3,5.695921586E1 +1.526210000E3,5.455429607E1 +1.526487000E3,5.808007225E1 +1.526729000E3,5.500512440E1 +1.527042000E3,5.476260812E1 +1.527339000E3,5.849962899E1 +1.527579000E3,5.719021529E1 +1.527910000E3,5.422226824E1 +1.528160000E3,5.266147572E1 +1.528411000E3,5.030747323E1 +1.528675000E3,5.057502492E1 +1.528920000E3,5.365292462E1 +1.529175000E3,5.444435151E1 +1.529423000E3,5.586906556E1 +1.529732000E3,5.808239082E1 +1.530030000E3,5.492304678E1 +1.530283000E3,5.727734117E1 +1.530542000E3,5.518682809E1 +1.530805000E3,5.838179726E1 +1.531133000E3,5.619103982E1 +1.531448000E3,5.705771680E1 +1.531738000E3,5.605732573E1 +1.531987000E3,5.497746164E1 +1.532293000E3,5.570350387E1 +1.532602000E3,5.687942595E1 +1.532873000E3,5.590365459E1 +1.533132000E3,5.379832162E1 +1.533387000E3,5.951317374E1 +1.533654000E3,5.728034638E1 +1.533915000E3,5.755019099E1 +1.534163000E3,5.625336618E1 +1.534512000E3,5.560455999E1 +1.534783000E3,5.186395468E1 +1.535086000E3,6.018952062E1 +1.535379000E3,5.360739703E1 +1.535619000E3,5.637744941E1 +1.535916000E3,5.710534601E1 +1.536153000E3,5.751101039E1 +1.536449000E3,5.888699469E1 +1.536688000E3,5.900809640E1 +1.536983000E3,5.539354346E1 +1.537218000E3,5.212761926E1 +1.537514000E3,6.113968309E1 +1.537773000E3,5.789795306E1 +1.538038000E3,6.065119472E1 +1.538356000E3,5.715251587E1 +1.538607000E3,5.728294892E1 +1.538911000E3,5.939537878E1 +1.539175000E3,5.879010449E1 +1.539417000E3,6.007594674E1 +1.539661000E3,5.983742076E1 +1.539908000E3,6.299497704E1 +1.540182000E3,6.042347696E1 +1.540457000E3,5.844914903E1 +1.540758000E3,5.775362746E1 +1.541037000E3,5.216165265E1 +1.541334000E3,5.255584969E1 +1.541593000E3,5.278098471E1 +1.541846000E3,5.581770981E1 +1.542092000E3,5.736301867E1 +1.542389000E3,5.733951694E1 +1.542623000E3,5.674705381E1 +1.542880000E3,5.506043774E1 +1.543125000E3,5.404728252E1 +1.543453000E3,5.428884791E1 +1.543732000E3,5.547580162E1 +1.544085000E3,5.471747417E1 +1.544346000E3,5.496243571E1 +1.544613000E3,5.288395526E1 +1.544860000E3,5.036194227E1 +1.545111000E3,5.124283852E1 +1.545413000E3,5.731432515E1 +1.545687000E3,5.663908688E1 +1.545955000E3,5.741659811E1 +1.546253000E3,5.084604561E1 +1.546502000E3,5.163330463E1 +1.546772000E3,4.777378739E1 +1.547025000E3,5.200725426E1 +1.547353000E3,5.049690945E1 +1.547625000E3,5.284766124E1 +1.547924000E3,5.396462244E1 +1.548148000E3,5.375524192E1 +1.548403000E3,5.670544075E1 +1.548716000E3,5.332369727E1 +1.548963000E3,5.544219871E1 +1.549238000E3,5.323430806E1 +1.549471000E3,5.180674965E1 +1.549727000E3,5.329467652E1 +1.550023000E3,5.080742485E1 +1.550310000E3,5.026906170E1 +1.550639000E3,5.582908231E1 +1.550905000E3,5.331150300E1 +1.551172000E3,5.186910180E1 +1.551471000E3,5.624561668E1 +1.551739000E3,5.555744845E1 +1.552012000E3,5.944044312E1 +1.552264000E3,6.002272858E1 +1.552531000E3,5.816546804E1 +1.552850000E3,5.936846960E1 +1.553097000E3,5.514794057E1 +1.553401000E3,5.160130424E1 +1.553757000E3,5.107783990E1 +1.554023000E3,5.871375450E1 +1.554276000E3,5.617325190E1 +1.554544000E3,5.736189521E1 +1.554800000E3,5.317828333E1 +1.555051000E3,5.715279916E1 +1.555321000E3,5.726931658E1 +1.555563000E3,5.567771069E1 +1.555823000E3,5.156101336E1 +1.556126000E3,5.688446569E1 +1.556378000E3,6.074118939E1 +1.556642000E3,5.974958265E1 +1.556918000E3,5.702757711E1 +1.557208000E3,5.874442787E1 +1.557457000E3,5.795683904E1 +1.557722000E3,6.039916355E1 +1.558025000E3,5.662755924E1 +1.558320000E3,5.332514547E1 +1.558595000E3,6.059700286E1 +1.558850000E3,5.775207016E1 +1.559098000E3,6.106988435E1 +1.559349000E3,6.039494527E1 +1.559644000E3,5.672405799E1 +1.559889000E3,5.814375710E1 +1.560135000E3,6.159401746E1 +1.560480000E3,5.397583636E1 +1.560770000E3,5.291692280E1 +1.561026000E3,5.439035965E1 +1.561320000E3,5.553984968E1 +1.561619000E3,5.808332247E1 +1.561927000E3,5.744100555E1 +1.562191000E3,5.636250023E1 +1.562451000E3,6.055150308E1 +1.562703000E3,5.624161562E1 +1.562979000E3,5.401048000E1 +1.563233000E3,5.588901558E1 +1.563595000E3,6.020828902E1 +1.563855000E3,6.586197618E1 +1.564143000E3,5.744692826E1 +1.564421000E3,5.175273280E1 +1.564681000E3,5.584828423E1 +1.564939000E3,5.622472521E1 +1.565190000E3,5.419184381E1 +1.565447000E3,4.818775863E1 +1.565701000E3,5.443344746E1 +1.565956000E3,4.960344337E1 +1.566224000E3,6.289868185E1 +1.566469000E3,6.499026885E1 +1.566794000E3,6.277031329E1 +1.567086000E3,5.336636778E1 +1.567405000E3,5.867761918E1 +1.567644000E3,5.135518394E1 +1.567909000E3,5.665720126E1 +1.568204000E3,5.915910399E1 +1.568455000E3,5.687790668E1 +1.568730000E3,5.815647569E1 +1.568976000E3,5.595761669E1 +1.569238000E3,5.367288589E1 +1.569491000E3,4.954593185E1 +1.569752000E3,5.199120702E1 +1.570099000E3,5.857172858E1 +1.570354000E3,5.533510860E1 +1.570614000E3,5.615291914E1 +1.570871000E3,4.816531300E1 +1.571136000E3,4.597509459E1 +1.571387000E3,5.454256971E1 +1.571722000E3,5.262076426E1 +1.572010000E3,5.108681545E1 +1.572285000E3,5.269091247E1 +1.572547000E3,4.898785412E1 +1.572807000E3,4.867008841E1 +1.573066000E3,5.306545801E1 +1.573313000E3,5.092331160E1 +1.573694000E3,5.549117670E1 +1.574009000E3,5.304099104E1 +1.574279000E3,5.377011563E1 +1.574520000E3,5.244694975E1 +1.574770000E3,5.542353961E1 +1.575031000E3,5.327330735E1 +1.575319000E3,5.123065406E1 +1.575617000E3,5.429517947E1 +1.575867000E3,5.443507599E1 +1.576132000E3,5.273613947E1 +1.576382000E3,5.717979407E1 +1.576705000E3,5.184816589E1 +1.576955000E3,4.851208329E1 +1.577250000E3,4.976440939E1 +1.577493000E3,5.236737582E1 +1.577737000E3,5.414723297E1 +1.577998000E3,5.490706774E1 +1.578342000E3,5.591011545E1 +1.578650000E3,5.689754115E1 +1.578906000E3,5.680987850E1 +1.579148000E3,5.379415708E1 +1.579394000E3,5.844713665E1 +1.579644000E3,4.927798375E1 +1.580006000E3,5.263100090E1 +1.580294000E3,5.410513055E1 +1.580548000E3,5.541047194E1 +1.580801000E3,5.058665778E1 +1.581070000E3,5.191468462E1 +1.581349000E3,4.623838572E1 +1.581601000E3,4.883886927E1 +1.581851000E3,4.951159763E1 +1.582152000E3,5.372806241E1 +1.582461000E3,4.077427406E1 +1.582742000E3,4.089897224E1 +1.582967000E3,4.661834708E1 +1.583330000E3,4.498181641E1 +1.583574000E3,4.413204165E1 +1.583835000E3,4.830731952E1 +1.584102000E3,5.133890730E1 +1.584385000E3,5.327819620E1 +1.584689000E3,5.148788947E1 +1.584935000E3,5.259351261E1 +1.585217000E3,5.210912674E1 +1.585449000E3,5.375523399E1 +1.585710000E3,5.030792675E1 +1.585957000E3,5.116594607E1 +1.586271000E3,5.729332409E1 +1.586601000E3,5.372439258E1 +1.586868000E3,5.283683191E1 +1.587111000E3,5.261490358E1 +1.587371000E3,5.394382083E1 +1.587617000E3,5.362104804E1 +1.587861000E3,5.192909002E1 +1.588111000E3,5.534291684E1 +1.588356000E3,5.529045875E1 +1.588616000E3,5.723903943E1 +1.588878000E3,5.769467674E1 +1.589116000E3,5.686991669E1 +1.589367000E3,5.472851050E1 +1.589709000E3,5.509501284E1 +1.589971000E3,6.218794924E1 +1.590276000E3,5.544714813E1 +1.590522000E3,5.587492513E1 +1.590770000E3,6.310127100E1 +1.591031000E3,6.016601681E1 +1.591331000E3,5.868635044E1 +1.591588000E3,5.739907262E1 +1.591847000E3,5.500154159E1 +1.592105000E3,5.382353142E1 +1.592358000E3,5.235465349E1 +1.592660000E3,5.432444683E1 +1.592979000E3,5.583837344E1 +1.593280000E3,5.890777444E1 +1.593531000E3,6.247008348E1 +1.593777000E3,5.524440051E1 +1.594082000E3,6.039849382E1 +1.594376000E3,5.779880973E1 +1.594616000E3,6.006977904E1 +1.594916000E3,6.157791897E1 +1.595158000E3,5.727348505E1 +1.595456000E3,6.219777130E1 +1.595702000E3,6.333776727E1 +1.596011000E3,6.315243887E1 +1.596287000E3,5.622487117E1 +1.596582000E3,4.999384026E1 +1.596838000E3,6.052096287E1 +1.597136000E3,5.730636753E1 +1.597383000E3,5.672770046E1 +1.597632000E3,5.282894107E1 +1.597943000E3,5.609826115E1 +1.598240000E3,5.950608691E1 +1.598483000E3,5.262580449E1 +1.598777000E3,5.638403375E1 +1.599039000E3,5.695994656E1 +1.599354000E3,5.595638462E1 +1.599677000E3,5.456948793E1 +1.599955000E3,5.641745933E1 +1.600254000E3,5.373490010E1 +1.600541000E3,5.613295480E1 +1.600824000E3,5.295628543E1 +1.601071000E3,5.036371368E1 +1.601313000E3,5.734560753E1 +1.601585000E3,5.869799540E1 +1.601832000E3,5.689867309E1 +1.602079000E3,5.521901034E1 +1.602376000E3,5.958743796E1 +1.602630000E3,5.697555749E1 +1.602881000E3,6.067520996E1 +1.603136000E3,6.296730837E1 +1.603381000E3,6.302345663E1 +1.603674000E3,5.614231839E1 +1.603920000E3,5.471880748E1 +1.604179000E3,6.025548138E1 +1.604432000E3,5.848975602E1 +1.604677000E3,6.051353275E1 +1.604988000E3,6.061163824E1 +1.605287000E3,5.127173554E1 +1.605535000E3,5.271948405E1 +1.605890000E3,5.457177629E1 +1.606143000E3,5.047420148E1 +1.606392000E3,5.197178768E1 +1.606684000E3,5.635777628E1 +1.606927000E3,5.691931577E1 +1.607165000E3,5.135114371E1 +1.607440000E3,5.173034620E1 +1.607734000E3,5.786109434E1 +1.607974000E3,5.620528212E1 +1.608236000E3,5.432552885E1 +1.608507000E3,5.036034087E1 +1.608763000E3,4.872303481E1 +1.609123000E3,5.516764205E1 +1.609377000E3,5.867465981E1 +1.609624000E3,5.634077767E1 +1.609869000E3,5.153316916E1 +1.610150000E3,5.212022412E1 +1.610428000E3,5.727395868E1 +1.610681000E3,5.443759521E1 +1.610944000E3,5.599199613E1 +1.611242000E3,5.709063131E1 +1.611495000E3,5.747461955E1 +1.611762000E3,5.445378087E1 +1.612040000E3,5.178206799E1 +1.612294000E3,5.347146008E1 +1.612548000E3,5.695533984E1 +1.612791000E3,5.852885666E1 +1.613050000E3,5.349710519E1 +1.613354000E3,5.482274130E1 +1.613598000E3,5.580201302E1 +1.613898000E3,5.533013655E1 +1.614151000E3,5.307302798E1 +1.614404000E3,5.034267096E1 +1.614651000E3,5.096368681E1 +1.614959000E3,5.358615730E1 +1.615202000E3,5.402822959E1 +1.615565000E3,5.173226008E1 +1.615815000E3,5.317238447E1 +1.616120000E3,5.490271856E1 +1.616406000E3,5.760350961E1 +1.616712000E3,5.516631401E1 +1.616950000E3,5.344247717E1 +1.617197000E3,5.105574764E1 +1.617480000E3,5.297874749E1 +1.617726000E3,5.181083735E1 +1.617978000E3,5.504462581E1 +1.618236000E3,5.652623382E1 +1.618484000E3,5.850281135E1 +1.618804000E3,5.207268405E1 +1.619061000E3,4.595989093E1 +1.619309000E3,5.832875112E1 +1.619574000E3,5.691639889E1 +1.619831000E3,5.277897330E1 +1.620092000E3,5.634285556E1 +1.620390000E3,5.782897026E1 +1.620660000E3,6.167326244E1 +1.620905000E3,5.736569246E1 +1.621145000E3,6.422841213E1 +1.621400000E3,6.037316593E1 +1.621649000E3,5.869946609E1 +1.622005000E3,6.007663283E1 +1.622308000E3,5.750286676E1 +1.622551000E3,5.315958033E1 +1.622849000E3,5.996646537E1 +1.623085000E3,6.310656156E1 +1.623382000E3,6.410911411E1 +1.623620000E3,6.559322950E1 +1.623914000E3,6.191537215E1 +1.624148000E3,6.509401862E1 +1.624441000E3,6.149444047E1 +1.624676000E3,5.887830140E1 +1.624914000E3,5.333395699E1 +1.625242000E3,5.080509527E1 +1.625531000E3,5.208999136E1 +1.625827000E3,4.936268455E1 +1.626072000E3,4.620940228E1 +1.626384000E3,4.812346411E1 +1.626678000E3,5.508818133E1 +1.626931000E3,5.929414420E1 +1.627193000E3,5.798382987E1 +1.627446000E3,5.695027340E1 +1.627690000E3,6.200547811E1 +1.627940000E3,5.895921781E1 +1.628278000E3,5.832121877E1 +1.628595000E3,5.727506493E1 +1.628914000E3,5.676841787E1 +1.629164000E3,5.904549933E1 +1.629453000E3,6.079247221E1 +1.629705000E3,5.978532207E1 +1.629973000E3,6.204876077E1 +1.630223000E3,6.278691878E1 +1.630527000E3,5.775584326E1 +1.630780000E3,5.715423799E1 +1.631076000E3,5.993810238E1 +1.631416000E3,5.945816984E1 +1.631690000E3,5.911038375E1 +1.631989000E3,6.401318161E1 +1.632251000E3,6.288325429E1 +1.632577000E3,6.142114348E1 +1.632857000E3,6.027735545E1 +1.633125000E3,6.058800698E1 +1.633410000E3,6.197295377E1 +1.633713000E3,5.649410931E1 +1.633983000E3,5.349526422E1 +1.634267000E3,5.160473432E1 +1.634550000E3,5.471426263E1 +1.634881000E3,5.381566790E1 +1.635145000E3,5.592472168E1 +1.635394000E3,5.502963456E1 +1.635636000E3,5.458091777E1 +1.635914000E3,5.361113418E1 +1.636211000E3,5.972112366E1 +1.636510000E3,6.134956919E1 +1.636770000E3,6.291498703E1 +1.637018000E3,6.051799303E1 +1.637272000E3,5.800319143E1 +1.637535000E3,6.099184952E1 +1.637791000E3,6.192072936E1 +1.638191000E3,5.592689657E1 +1.638462000E3,5.015193522E1 +1.638759000E3,5.662906295E1 +1.638997000E3,6.189212385E1 +1.639312000E3,5.656112303E1 +1.639618000E3,5.827187766E1 +1.639922000E3,5.894515280E1 +1.640188000E3,5.379936676E1 +1.640446000E3,5.498271927E1 +1.640705000E3,5.883708769E1 +1.641003000E3,5.515786146E1 +1.641329000E3,5.323855564E1 +1.641593000E3,5.000482182E1 +1.641876000E3,5.182077324E1 +1.642101000E3,5.319082569E1 +1.642344000E3,6.611850928E1 +1.642626000E3,5.190424983E1 +1.642867000E3,5.081734830E1 +1.643118000E3,5.711045841E1 +1.643458000E3,5.520016906E1 +1.643723000E3,5.247062228E1 +1.643997000E3,5.309157546E1 +1.644256000E3,5.339769460E1 +1.644621000E3,5.982216134E1 +1.644883000E3,5.915424673E1 +1.645133000E3,5.849263499E1 +1.645426000E3,5.826666974E1 +1.645723000E3,5.673329902E1 +1.645972000E3,5.580417722E1 +1.646244000E3,5.457004449E1 +1.646473000E3,5.835958867E1 +1.646716000E3,5.599398637E1 +1.646958000E3,5.928075116E1 +1.647232000E3,5.394053714E1 +1.647507000E3,5.853879118E1 +1.647858000E3,5.674494648E1 +1.648113000E3,5.640074652E1 +1.648414000E3,5.694867796E1 +1.648656000E3,5.573466688E1 +1.648962000E3,5.556104957E1 +1.649254000E3,5.770712773E1 +1.649548000E3,5.765349227E1 +1.649790000E3,5.583875333E1 +1.650054000E3,6.321152276E1 +1.650306000E3,5.966047080E1 +1.650600000E3,5.502015578E1 +1.650872000E3,5.066616477E1 +1.651172000E3,5.442335496E1 +1.651440000E3,5.956947456E1 +1.651736000E3,5.798320450E1 +1.651979000E3,5.739040713E1 +1.652228000E3,5.803662120E1 +1.652491000E3,6.146613872E1 +1.652750000E3,5.929116619E1 +1.653021000E3,5.936282359E1 +1.653288000E3,5.853226920E1 +1.653570000E3,5.954415072E1 +1.653872000E3,5.749576278E1 +1.654250000E3,5.567111200E1 +1.654518000E3,6.059415807E1 +1.654812000E3,5.855300274E1 +1.655081000E3,5.797601107E1 +1.655350000E3,6.029475669E1 +1.655647000E3,5.264118678E1 +1.655893000E3,5.715075800E1 +1.656153000E3,5.787679223E1 +1.656407000E3,6.038334743E1 +1.656655000E3,6.038245752E1 +1.656912000E3,5.475945603E1 +1.657171000E3,5.661674174E1 +1.657473000E3,5.618877186E1 +1.657717000E3,5.712918740E1 +1.657972000E3,5.834783502E1 +1.658283000E3,6.198115012E1 +1.658526000E3,5.639977894E1 +1.658788000E3,5.416850689E1 +1.659089000E3,5.679686188E1 +1.659335000E3,5.697270686E1 +1.659619000E3,5.371836804E1 +1.659873000E3,6.082252986E1 +1.660120000E3,6.285201132E1 +1.660416000E3,6.088574857E1 +1.660728000E3,6.109109391E1 +1.661004000E3,5.861240224E1 +1.661283000E3,6.123850168E1 +1.661519000E3,5.849447684E1 +1.661821000E3,5.472352136E1 +1.662065000E3,5.502625911E1 +1.662312000E3,5.606436387E1 +1.662565000E3,5.546236927E1 +1.662845000E3,6.075823181E1 +1.663075000E3,5.951357638E1 +1.663350000E3,5.956681026E1 +1.663575000E3,5.780116333E1 +1.663928000E3,6.184122024E1 +1.664178000E3,5.626291699E1 +1.664419000E3,5.635545931E1 +1.664671000E3,5.487242490E1 +1.664936000E3,5.392872477E1 +1.665237000E3,5.658170902E1 +1.665476000E3,5.449322435E1 +1.665752000E3,5.111063749E1 +1.665997000E3,5.288359358E1 +1.666249000E3,5.825102048E1 +1.666508000E3,6.087585373E1 +1.666750000E3,5.822210598E1 +1.667110000E3,6.320270923E1 +1.667355000E3,5.563170163E1 +1.667628000E3,5.240635194E1 +1.667875000E3,5.485055122E1 +1.668144000E3,5.590209292E1 +1.668402000E3,5.750031923E1 +1.668648000E3,5.301598344E1 +1.668896000E3,5.208077776E1 +1.669157000E3,5.024112467E1 +1.669414000E3,5.530220423E1 +1.669710000E3,5.585178295E1 +1.669955000E3,5.443268015E1 +1.670292000E3,5.292974908E1 +1.670566000E3,5.501741168E1 +1.670818000E3,5.190433464E1 +1.671077000E3,5.602388651E1 +1.671384000E3,5.384205522E1 +1.671688000E3,5.355394771E1 +1.671956000E3,4.896600257E1 +1.672212000E3,4.457728928E1 +1.672483000E3,5.407780485E1 +1.672726000E3,5.808535163E1 +1.672991000E3,5.497589856E1 +1.673269000E3,5.816061182E1 +1.673625000E3,5.457220472E1 +1.673896000E3,5.852786772E1 +1.674165000E3,5.615855966E1 +1.674439000E3,5.901141794E1 +1.674702000E3,5.821771493E1 +1.675040000E3,5.533746886E1 +1.675330000E3,5.469332456E1 +1.675631000E3,5.895976057E1 +1.675867000E3,5.565047570E1 +1.676161000E3,5.342216333E1 +1.676431000E3,5.339304237E1 +1.676716000E3,5.196130631E1 +1.677075000E3,5.500129023E1 +1.677346000E3,5.649474234E1 +1.677614000E3,5.620691351E1 +1.677867000E3,5.756400488E1 +1.678112000E3,5.571225073E1 +1.678362000E3,6.171466353E1 +1.678655000E3,5.523245256E1 +1.678909000E3,5.780473196E1 +1.679167000E3,5.918101801E1 +1.679536000E3,5.449831587E1 +1.679788000E3,5.278747036E1 +1.680072000E3,5.502423006E1 +1.680392000E3,5.603218813E1 +1.680667000E3,5.681691969E1 +1.680917000E3,5.574952817E1 +1.681227000E3,5.747793831E1 +1.681510000E3,5.831554727E1 +1.681811000E3,5.823344802E1 +1.682073000E3,5.677197169E1 +1.682402000E3,5.423243511E1 +1.682746000E3,5.568639423E1 +1.683007000E3,5.601571559E1 +1.683297000E3,5.788588795E1 +1.683563000E3,5.178162942E1 +1.683805000E3,5.244727762E1 +1.684102000E3,5.504021082E1 +1.684342000E3,5.312145782E1 +1.684637000E3,5.266466104E1 +1.684875000E3,5.430143327E1 +1.685171000E3,5.731848010E1 +1.685409000E3,5.314967575E1 +1.685703000E3,5.210480680E1 +1.685940000E3,5.447962472E1 +1.686242000E3,5.671930258E1 +1.686480000E3,5.298653153E1 +1.686837000E3,5.390672385E1 +1.687083000E3,5.256535993E1 +1.687387000E3,5.295433262E1 +1.687686000E3,4.693434793E1 +1.687930000E3,5.264001548E1 +1.688191000E3,4.696703102E1 +1.688514000E3,5.290693761E1 +1.688768000E3,5.572289252E1 +1.689025000E3,5.629476293E1 +1.689331000E3,5.221395629E1 +1.689585000E3,5.553268928E1 +1.689905000E3,5.392885939E1 +1.690136000E3,5.613018872E1 +1.690432000E3,5.323144022E1 +1.690690000E3,5.426457319E1 +1.690988000E3,5.869511223E1 +1.691244000E3,5.724931575E1 +1.691548000E3,5.702890727E1 +1.691819000E3,5.957894946E1 +1.692068000E3,5.833323285E1 +1.692367000E3,5.920896731E1 +1.692598000E3,5.809066040E1 +1.692847000E3,5.683194919E1 +1.693218000E3,5.880411413E1 +1.693536000E3,5.430005356E1 +1.693836000E3,5.347827494E1 +1.694082000E3,5.139526617E1 +1.694323000E3,6.486669482E1 +1.694607000E3,5.827670564E1 +1.694879000E3,5.749070135E1 +1.695112000E3,5.439297467E1 +1.695418000E3,5.591879208E1 +1.695720000E3,5.984156108E1 +1.695978000E3,5.763450389E1 +1.696238000E3,5.535113951E1 +1.696577000E3,5.468640858E1 +1.696840000E3,5.145216534E1 +1.697142000E3,5.633820526E1 +1.697434000E3,5.961813260E1 +1.697672000E3,5.761348305E1 +1.697970000E3,5.587832748E1 +1.698213000E3,5.615239979E1 +1.698514000E3,6.142159571E1 +1.698744000E3,5.868747140E1 +1.699038000E3,5.639074769E1 +1.699277000E3,5.843791784E1 +1.699602000E3,5.580904726E1 +1.699849000E3,5.188032815E1 +1.700148000E3,6.050592844E1 +1.700415000E3,5.851925341E1 +1.700742000E3,5.754370303E1 +1.700996000E3,5.792652906E1 +1.701265000E3,5.809754284E1 +1.701543000E3,5.435013872E1 +1.701827000E3,5.364293620E1 +1.702095000E3,5.742174876E1 +1.702342000E3,5.921232761E1 +1.702597000E3,5.246613397E1 +1.702852000E3,5.865178399E1 +1.703188000E3,6.209648540E1 +1.703456000E3,5.783126524E1 +1.703723000E3,6.129722089E1 +1.704021000E3,6.159059582E1 +1.704258000E3,6.290365934E1 +1.704500000E3,5.899658178E1 +1.704744000E3,5.570772177E1 +1.705020000E3,6.042975914E1 +1.705281000E3,6.063911519E1 +1.705578000E3,5.667741437E1 +1.705818000E3,5.616948640E1 +1.706065000E3,5.809228765E1 +1.706440000E3,6.194892333E1 +1.706707000E3,5.510896653E1 +1.706968000E3,5.648771637E1 +1.707226000E3,5.451026369E1 +1.707530000E3,5.655237570E1 +1.707813000E3,6.342687376E1 +1.708096000E3,5.687609223E1 +1.708345000E3,5.784030597E1 +1.708587000E3,5.696931166E1 +1.708832000E3,5.826055047E1 +1.709133000E3,6.171963981E1 +1.709444000E3,6.289993620E1 +1.709785000E3,6.196750111E1 +1.710095000E3,6.021872673E1 +1.710401000E3,5.493999514E1 +1.710645000E3,5.748920917E1 +1.710951000E3,5.990748875E1 +1.711204000E3,5.995493625E1 +1.711504000E3,5.608393688E1 +1.711807000E3,6.225697969E1 +1.712052000E3,6.005399346E1 +1.712297000E3,6.276583246E1 +1.712594000E3,6.409669700E1 +1.712952000E3,5.846223798E1 +1.713249000E3,6.222377893E1 +1.713511000E3,6.179119431E1 +1.713770000E3,6.687160955E1 +1.714020000E3,6.224215114E1 +1.714281000E3,6.460780580E1 +1.714608000E3,6.323149402E1 +1.714900000E3,5.890183616E1 +1.715139000E3,6.173404899E1 +1.715438000E3,6.193562982E1 +1.715674000E3,6.231645929E1 +1.715912000E3,5.798536661E1 +1.716293000E3,5.569607438E1 +1.716537000E3,6.131866955E1 +1.716790000E3,5.896584959E1 +1.717096000E3,5.693976131E1 +1.717346000E3,5.531403594E1 +1.717631000E3,5.794989861E1 +1.717933000E3,5.594899441E1 +1.718204000E3,5.601359132E1 +1.718501000E3,5.861037671E1 +1.718741000E3,6.432265266E1 +1.719043000E3,6.182586376E1 +1.719355000E3,6.076827417E1 +1.719645000E3,5.634225228E1 +1.719943000E3,5.935070169E1 +1.720188000E3,5.856877062E1 +1.720486000E3,5.761843709E1 +1.720741000E3,5.935030376E1 +1.720985000E3,5.413194972E1 +1.721289000E3,5.939733818E1 +1.721553000E3,5.617827250E1 +1.721847000E3,5.807085988E1 +1.722091000E3,5.877044817E1 +1.722445000E3,6.593854232E1 +1.722681000E3,6.027114564E1 +1.722973000E3,5.866411762E1 +1.723271000E3,5.588604319E1 +1.723508000E3,5.958751798E1 +1.723800000E3,6.077290351E1 +1.724039000E3,5.722905231E1 +1.724338000E3,5.619905124E1 +1.724576000E3,5.628809107E1 +1.724876000E3,5.560357878E1 +1.725168000E3,5.447509555E1 +1.725542000E3,5.278892866E1 +1.725841000E3,4.816211457E1 +1.726139000E3,4.622333411E1 +1.726399000E3,4.728231882E1 +1.726691000E3,5.101510224E1 +1.726947000E3,4.725933617E1 +1.727273000E3,5.333398449E1 +1.727569000E3,5.518583989E1 +1.727808000E3,5.719998093E1 +1.728061000E3,5.375072532E1 +1.728352000E3,5.631849408E1 +1.728644000E3,5.232994659E1 +1.729024000E3,5.045911420E1 +1.729295000E3,4.931808913E1 +1.729541000E3,4.866846016E1 +1.729788000E3,5.127644661E1 +1.730054000E3,4.769951033E1 +1.730296000E3,5.553885299E1 +1.730573000E3,5.629080236E1 +1.730816000E3,5.218818952E1 +1.731119000E3,5.112756333E1 +1.731379000E3,5.524890032E1 +1.731688000E3,5.530134621E1 +1.731949000E3,5.451831728E1 +1.732288000E3,5.380962689E1 +1.732589000E3,5.754684503E1 +1.732833000E3,5.184401682E1 +1.733102000E3,5.011373730E1 +1.733369000E3,5.541779655E1 +1.733647000E3,5.983699601E1 +1.733886000E3,6.131428317E1 +1.734163000E3,6.052345820E1 +1.734405000E3,5.852692054E1 +1.734659000E3,5.861191265E1 +1.734933000E3,5.957936529E1 +1.735219000E3,5.639739849E1 +1.735540000E3,5.207917019E1 +1.735832000E3,4.548490451E1 +1.736112000E3,5.219897691E1 +1.736384000E3,5.618314188E1 +1.736684000E3,5.720418785E1 +1.736946000E3,5.895068629E1 +1.737213000E3,5.652216932E1 +1.737468000E3,5.796687034E1 +1.737738000E3,5.591197017E1 +1.737996000E3,5.493985473E1 +1.738236000E3,5.752137274E1 +1.738586000E3,6.041563952E1 +1.738921000E3,6.199530447E1 +1.739167000E3,5.310800091E1 +1.739430000E3,5.600574849E1 +1.739683000E3,6.494981167E1 +1.739952000E3,6.157046745E1 +1.740293000E3,6.002681302E1 +1.740611000E3,5.943541790E1 +1.740910000E3,5.731619793E1 +1.741197000E3,5.885751119E1 +1.741508000E3,5.719237093E1 +1.741767000E3,5.958897825E1 +1.742034000E3,5.543499582E1 +1.742424000E3,5.632783570E1 +1.742688000E3,5.565042743E1 +1.742946000E3,5.622883854E1 +1.743204000E3,6.327777019E1 +1.743456000E3,5.663098185E1 +1.743721000E3,5.729384715E1 +1.743966000E3,6.200582057E1 +1.744273000E3,5.107652622E1 +1.744505000E3,5.491520459E1 +1.744752000E3,5.181266373E1 +1.745004000E3,5.014115745E1 +1.745297000E3,5.338585031E1 +1.745690000E3,5.654477286E1 +1.745966000E3,5.517036116E1 +1.746219000E3,5.200430375E1 +1.746475000E3,5.963355448E1 +1.746732000E3,5.854837006E1 +1.747002000E3,5.571277949E1 +1.747293000E3,5.825116458E1 +1.747522000E3,5.673248340E1 +1.747772000E3,5.683320783E1 +1.748035000E3,5.224053713E1 +1.748289000E3,5.713452273E1 +1.748568000E3,5.539076360E1 +1.748961000E3,6.015893340E1 +1.749211000E3,5.710921188E1 +1.749460000E3,6.114476082E1 +1.749715000E3,5.648052368E1 +1.749961000E3,5.897720288E1 +1.750207000E3,5.525435431E1 +1.750521000E3,5.447453139E1 +1.750765000E3,5.883968686E1 +1.751015000E3,5.450160052E1 +1.751290000E3,5.405183560E1 +1.751522000E3,5.501343440E1 +1.751848000E3,5.586635599E1 +1.752096000E3,5.631573217E1 +1.752372000E3,5.960964241E1 +1.752637000E3,5.320710483E1 +1.752941000E3,5.848434869E1 +1.753209000E3,5.619196315E1 +1.753510000E3,5.692291103E1 +1.753774000E3,5.505374149E1 +1.754051000E3,5.721759821E1 +1.754315000E3,5.539152446E1 +1.754625000E3,5.632890174E1 +1.754919000E3,5.918851802E1 +1.755262000E3,5.807294381E1 +1.755529000E3,5.748451885E1 +1.755827000E3,6.055251826E1 +1.756067000E3,6.208050524E1 +1.756367000E3,5.991655048E1 +1.756607000E3,6.073519941E1 +1.756900000E3,5.774998130E1 +1.757144000E3,5.751173009E1 +1.757417000E3,5.299288378E1 +1.757700000E3,5.913293772E1 +1.758005000E3,5.732040664E1 +1.758269000E3,6.221202462E1 +1.758585000E3,6.285457626E1 +1.758834000E3,5.870613535E1 +1.759137000E3,5.533279687E1 +1.759391000E3,5.194643865E1 +1.759644000E3,4.891449850E1 +1.759922000E3,4.784429271E1 +1.760236000E3,5.273391136E1 +1.760503000E3,5.475616990E1 +1.760758000E3,5.640096860E1 +1.761017000E3,5.329458627E1 +1.761282000E3,4.798672737E1 +1.761535000E3,5.532988346E1 +1.761794000E3,5.189579265E1 +1.762040000E3,5.068357941E1 +1.762299000E3,5.751972157E1 +1.762578000E3,5.430434207E1 +1.762831000E3,5.331943982E1 +1.763136000E3,5.699367350E1 +1.763409000E3,5.622858108E1 +1.763658000E3,5.631559008E1 +1.763910000E3,5.738562920E1 +1.764157000E3,6.030103345E1 +1.764400000E3,5.680309722E1 +1.764695000E3,5.703631315E1 +1.765017000E3,5.682945247E1 +1.765300000E3,5.317093897E1 +1.765575000E3,5.620624417E1 +1.765832000E3,5.550075987E1 +1.766100000E3,6.321349509E1 +1.766371000E3,5.938123887E1 +1.766635000E3,6.289622107E1 +1.766898000E3,5.890101653E1 +1.767155000E3,5.928826732E1 +1.767399000E3,5.872890625E1 +1.767638000E3,6.184345237E1 +1.767877000E3,6.131073260E1 +1.768211000E3,6.085041665E1 +1.768587000E3,6.015418617E1 +1.768835000E3,5.648473324E1 +1.769119000E3,5.746059957E1 +1.769380000E3,5.608054299E1 +1.769692000E3,6.542458852E1 +1.769998000E3,6.121618195E1 +1.770281000E3,5.842785672E1 +1.770536000E3,5.763776595E1 +1.770858000E3,5.630873419E1 +1.771133000E3,5.339704361E1 +1.771378000E3,5.463873835E1 +1.771723000E3,5.659388596E1 +1.772050000E3,5.449836230E1 +1.772294000E3,5.154616724E1 +1.772537000E3,5.082603581E1 +1.772795000E3,5.334183734E1 +1.773055000E3,5.096094928E1 +1.773365000E3,5.171061147E1 +1.773612000E3,5.477281719E1 +1.773878000E3,5.060909259E1 +1.774171000E3,5.285294921E1 +1.774452000E3,5.393730531E1 +1.774725000E3,5.333400186E1 +1.774980000E3,5.285705613E1 +1.775346000E3,5.719168586E1 +1.775663000E3,5.642193929E1 +1.775908000E3,4.659059970E1 +1.776150000E3,5.521168672E1 +1.776388000E3,5.693500665E1 +1.776630000E3,6.030483668E1 +1.776910000E3,5.944095915E1 +1.777153000E3,5.708951289E1 +1.777414000E3,5.291982189E1 +1.777666000E3,5.900042024E1 +1.777935000E3,6.010949926E1 +1.778229000E3,6.009411695E1 +1.778514000E3,5.804757181E1 +1.778758000E3,5.922775473E1 +1.779011000E3,6.063545461E1 +1.779277000E3,5.950242674E1 +1.779575000E3,6.057891518E1 +1.779819000E3,6.050018223E1 +1.780115000E3,5.965583098E1 +1.780361000E3,5.651792502E1 +1.780660000E3,5.814099422E1 +1.780904000E3,5.340077797E1 +1.781203000E3,5.734973286E1 +1.781481000E3,5.846278011E1 +1.781805000E3,5.369751607E1 +1.782048000E3,5.229063054E1 +1.782299000E3,5.345996994E1 +1.782583000E3,5.724353788E1 +1.782883000E3,5.610772411E1 +1.783181000E3,5.272586700E1 +1.783423000E3,5.272075137E1 +1.783692000E3,5.495532717E1 +1.783945000E3,5.594785882E1 +1.784202000E3,5.914935612E1 +1.784483000E3,6.427791570E1 +1.784735000E3,6.185652247E1 +1.785051000E3,6.178338943E1 +1.785352000E3,6.304285312E1 +1.785598000E3,5.699176354E1 +1.785897000E3,5.705567192E1 +1.786190000E3,5.975757470E1 +1.786467000E3,6.092866408E1 +1.786714000E3,5.771726615E1 +1.786984000E3,5.434727511E1 +1.787232000E3,5.250796794E1 +1.787486000E3,5.668884634E1 +1.787813000E3,5.600600547E1 +1.788061000E3,5.162213387E1 +1.788391000E3,5.782497792E1 +1.788636000E3,5.900804565E1 +1.788935000E3,6.056317474E1 +1.789175000E3,5.749029459E1 +1.789469000E3,6.053654612E1 +1.789714000E3,5.841478287E1 +1.789988000E3,5.700130118E1 +1.790219000E3,5.562837186E1 +1.790509000E3,5.430369658E1 +1.790806000E3,5.586895515E1 +1.791048000E3,5.809725956E1 +1.791409000E3,5.552827992E1 +1.791650000E3,5.534472171E1 +1.791981000E3,5.671474363E1 +1.792227000E3,5.716453332E1 +1.792522000E3,5.844249975E1 +1.792847000E3,5.961186667E1 +1.793109000E3,5.794833541E1 +1.793437000E3,5.832360597E1 +1.793698000E3,5.996001578E1 +1.793970000E3,5.849924827E1 +1.794223000E3,5.823551411E1 +1.794488000E3,5.480450178E1 +1.794819000E3,5.715609034E1 +1.795083000E3,5.418083703E1 +1.795329000E3,5.529883425E1 +1.795587000E3,5.729455769E1 +1.795853000E3,5.358946536E1 +1.796083000E3,5.534684059E1 +1.796374000E3,5.693696454E1 +1.796630000E3,5.642610016E1 +1.796927000E3,5.692548294E1 +1.797194000E3,5.931602223E1 +1.797469000E3,5.877569790E1 +1.797716000E3,5.527135197E1 +1.798053000E3,5.904674814E1 +1.798358000E3,5.655039196E1 +1.798612000E3,5.796779928E1 +1.798921000E3,5.499199210E1 +1.799185000E3,5.693837926E1 +1.799465000E3,6.235855457E1 +1.799695000E3,6.271612813E1 +1.799964000E3,6.118271582E1 +1.800233000E3,6.171552449E1 +1.800562000E3,6.293258336E1 +1.800818000E3,5.927940855E1 +1.801077000E3,5.836879001E1 +1.801406000E3,6.182854437E1 +1.801650000E3,5.918527405E1 +1.801894000E3,6.352260837E1 +1.802163000E3,6.142940723E1 +1.802385000E3,5.867772092E1 +1.802631000E3,5.916688243E1 +1.802927000E3,5.855222781E1 +1.803228000E3,6.125789004E1 +1.803533000E3,5.839377949E1 +1.803816000E3,5.705167204E1 +1.804057000E3,5.641730344E1 +1.804362000E3,6.771092582E1 +1.804585000E3,6.036461449E1 +1.804835000E3,6.742095194E1 +1.805132000E3,6.133151855E1 +1.805443000E3,6.658554202E1 +1.805718000E3,7.095511769E1 +1.806003000E3,7.330553664E1 +1.806290000E3,6.732809523E1 +1.806566000E3,6.106403544E1 +1.806844000E3,5.830930506E1 +1.807085000E3,6.610455401E1 +1.807442000E3,5.944325189E1 +1.807800000E3,5.667454347E1 +1.808044000E3,5.560521877E1 +1.808299000E3,5.488377812E1 +1.808542000E3,5.279721650E1 +1.808789000E3,4.834692654E1 +1.809029000E3,4.661669368E1 +1.809276000E3,5.501186804E1 +1.809526000E3,5.384830085E1 +1.809820000E3,5.526588307E1 +1.810084000E3,5.900458249E1 +1.810393000E3,5.557146256E1 +1.810647000E3,5.355619280E1 +1.811023000E3,5.627924000E1 +1.811283000E3,5.384503050E1 +1.811527000E3,5.309622401E1 +1.811816000E3,5.228523776E1 +1.812070000E3,5.317657142E1 +1.812328000E3,5.813846570E1 +1.812583000E3,5.621088360E1 +1.812927000E3,5.646965227E1 +1.813191000E3,5.322001188E1 +1.813436000E3,5.451886743E1 +1.813748000E3,5.558621720E1 +1.814006000E3,5.673920724E1 +1.814328000E3,5.582855401E1 +1.814591000E3,6.044196407E1 +1.814848000E3,5.769208427E1 +1.815109000E3,6.206015086E1 +1.815391000E3,5.918173335E1 +1.815660000E3,5.779702061E1 +1.815927000E3,6.516398742E1 +1.816218000E3,5.927869783E1 +1.816546000E3,6.320256740E1 +1.816802000E3,6.296743684E1 +1.817051000E3,5.869001212E1 +1.817329000E3,5.985536664E1 +1.817620000E3,5.435607380E1 +1.817905000E3,5.721703373E1 +1.818148000E3,6.314389823E1 +1.818376000E3,6.116752308E1 +1.818622000E3,5.773611736E1 +1.818863000E3,5.892899245E1 +1.819138000E3,5.791411351E1 +1.819457000E3,6.283307798E1 +1.819719000E3,5.805008540E1 +1.819967000E3,6.383011196E1 +1.820266000E3,5.915938870E1 +1.820515000E3,5.795811325E1 +1.820871000E3,5.730398564E1 +1.821113000E3,5.907223014E1 +1.821388000E3,5.566469845E1 +1.821612000E3,5.223652040E1 +1.821858000E3,5.461868826E1 +1.822118000E3,5.731142265E1 +1.822388000E3,5.743609212E1 +1.822672000E3,6.147918645E1 +1.822919000E3,6.109678537E1 +1.823167000E3,5.654516230E1 +1.823464000E3,6.010058675E1 +1.823716000E3,6.101649690E1 +1.824046000E3,5.741898993E1 +1.824372000E3,5.654969113E1 +1.824629000E3,5.489877253E1 +1.824894000E3,6.410593751E1 +1.825142000E3,5.923267903E1 +1.825399000E3,5.977300321E1 +1.825683000E3,5.945891570E1 +1.825907000E3,5.799474745E1 +1.826162000E3,5.485933719E1 +1.826447000E3,5.848818620E1 +1.826697000E3,5.937282663E1 +1.826944000E3,5.473647239E1 +1.827319000E3,5.611635619E1 +1.827649000E3,5.704234375E1 +1.827909000E3,5.174683398E1 +1.828172000E3,5.243070089E1 +1.828457000E3,5.835398328E1 +1.828710000E3,6.579711207E1 +1.828969000E3,6.063158540E1 +1.829218000E3,5.379307224E1 +1.829474000E3,5.791005982E1 +1.829779000E3,5.908028356E1 +1.830025000E3,5.476368407E1 +1.830307000E3,5.608145667E1 +1.830627000E3,5.417323034E1 +1.830843000E3,5.295530865E1 +1.831087000E3,5.335160491E1 +1.831385000E3,5.274441298E1 +1.831622000E3,5.307477504E1 +1.831918000E3,5.606159985E1 +1.832155000E3,6.009472302E1 +1.832471000E3,5.380117674E1 +1.832766000E3,5.382200579E1 +1.833012000E3,5.176006230E1 +1.833256000E3,5.956343573E1 +1.833577000E3,5.545935306E1 +1.833826000E3,5.528541848E1 +1.834083000E3,5.436381252E1 +1.834373000E3,5.684307553E1 +1.834669000E3,5.352399464E1 +1.834910000E3,5.651184236E1 +1.835208000E3,5.432875840E1 +1.835453000E3,5.442576527E1 +1.835752000E3,5.643309342E1 +1.836022000E3,5.781174029E1 +1.836293000E3,6.110602518E1 +1.836557000E3,5.591856301E1 +1.836932000E3,5.423752303E1 +1.837200000E3,5.716598850E1 +1.837455000E3,5.511743414E1 +1.837716000E3,5.819026063E1 +1.837988000E3,5.728773522E1 +1.838236000E3,5.959151016E1 +1.838540000E3,5.810767345E1 +1.838799000E3,5.779128856E1 +1.839096000E3,6.092094761E1 +1.839361000E3,5.957871329E1 +1.839608000E3,5.838702884E1 +1.839856000E3,5.927631822E1 +1.840242000E3,5.748386760E1 +1.840516000E3,5.957609475E1 +1.840759000E3,5.688693666E1 +1.841054000E3,5.883374773E1 +1.841320000E3,5.769470339E1 +1.841597000E3,5.894509733E1 +1.841885000E3,6.032854908E1 +1.842190000E3,5.891601570E1 +1.842444000E3,5.957860612E1 +1.842691000E3,5.968229576E1 +1.842933000E3,5.829247522E1 +1.843258000E3,6.183086549E1 +1.843539000E3,6.077794792E1 +1.843765000E3,5.928253866E1 +1.844002000E3,5.782805396E1 +1.844301000E3,5.975447959E1 +1.844589000E3,6.108169982E1 +1.844825000E3,5.915565503E1 +1.845116000E3,5.981302437E1 +1.845363000E3,6.019248645E1 +1.845636000E3,6.014223773E1 +1.845861000E3,6.160258605E1 +1.846139000E3,6.002388007E1 +1.846447000E3,6.004612452E1 +1.846706000E3,5.932487324E1 +1.846979000E3,5.718424575E1 +1.847284000E3,5.712987240E1 +1.847586000E3,5.557624595E1 +1.847888000E3,5.603981815E1 +1.848146000E3,5.769591687E1 +1.848418000E3,5.526085696E1 +1.848706000E3,5.815102401E1 +1.848972000E3,5.884177354E1 +1.849226000E3,5.853138751E1 +1.849515000E3,6.156208919E1 +1.849746000E3,6.064923427E1 +1.850008000E3,6.590305387E1 +1.850338000E3,5.853444981E1 +1.850640000E3,5.717447935E1 +1.850942000E3,5.680568615E1 +1.851242000E3,5.928468331E1 +1.851504000E3,5.798449444E1 +1.851757000E3,5.802619768E1 +1.852033000E3,5.998338312E1 +1.852296000E3,5.683616594E1 +1.852550000E3,5.692327884E1 +1.852886000E3,5.878610583E1 +1.853162000E3,5.538467470E1 +1.853432000E3,5.437085520E1 +1.853738000E3,5.469765317E1 +1.854038000E3,5.790268038E1 +1.854297000E3,5.836787866E1 +1.854582000E3,6.160807622E1 +1.854881000E3,5.878613196E1 +1.855158000E3,6.200103199E1 +1.855387000E3,6.087479870E1 +1.855688000E3,6.028304140E1 +1.855930000E3,6.159527875E1 +1.856226000E3,6.082174354E1 +1.856487000E3,5.932314061E1 +1.856744000E3,5.976570730E1 +1.857001000E3,5.473753247E1 +1.857299000E3,5.954612483E1 +1.857556000E3,6.052388497E1 +1.857849000E3,5.848282940E1 +1.858086000E3,5.879664566E1 +1.858384000E3,5.864589973E1 +1.858677000E3,5.659242719E1 +1.858917000E3,5.683870091E1 +1.859195000E3,5.582498919E1 +1.859427000E3,6.011873423E1 +1.859676000E3,5.796702396E1 +1.859911000E3,5.928400715E1 +1.860149000E3,5.826876733E1 +1.860396000E3,6.038481253E1 +1.860680000E3,6.030085568E1 +1.860944000E3,5.890166619E1 +1.861209000E3,6.654379171E1 +1.861519000E3,6.016187265E1 +1.861755000E3,6.139297542E1 +1.862049000E3,6.289106669E1 +1.862388000E3,5.872946965E1 +1.862675000E3,5.800836625E1 +1.862993000E3,5.701819685E1 +1.863248000E3,5.488359846E1 +1.863519000E3,5.747446133E1 +1.863768000E3,5.996388232E1 +1.864087000E3,5.686047813E1 +1.864334000E3,5.935760915E1 +1.864635000E3,6.438349972E1 +1.864894000E3,6.008599590E1 +1.865205000E3,5.995474236E1 +1.865502000E3,6.596906108E1 +1.865837000E3,6.091064347E1 +1.866114000E3,5.885056970E1 +1.866411000E3,6.474486832E1 +1.866666000E3,5.888758286E1 +1.866964000E3,6.138447683E1 +1.867211000E3,6.032596684E1 +1.867482000E3,5.848476935E1 +1.867736000E3,5.631330849E1 +1.867989000E3,5.927138373E1 +1.868246000E3,5.817171672E1 +1.868499000E3,5.358065381E1 +1.868763000E3,5.500264039E1 +1.869129000E3,5.663946315E1 +1.869384000E3,5.601392416E1 +1.869636000E3,5.640732154E1 +1.869947000E3,5.320213962E1 +1.870207000E3,4.907811811E1 +1.870470000E3,5.784153600E1 +1.870743000E3,5.988355074E1 +1.871011000E3,5.973830135E1 +1.871253000E3,5.769679044E1 +1.871519000E3,5.395770126E1 +1.871765000E3,5.751088186E1 +1.872011000E3,5.342275719E1 +1.872301000E3,5.638616310E1 +1.872563000E3,5.124369984E1 +1.872821000E3,5.357036185E1 +1.873129000E3,5.529809524E1 +1.873386000E3,5.442720524E1 +1.873650000E3,5.306298792E1 +1.873937000E3,5.703507672E1 +1.874184000E3,5.835246426E1 +1.874444000E3,5.638184247E1 +1.874707000E3,5.201779537E1 +1.874972000E3,5.217149520E1 +1.875244000E3,5.757612416E1 +1.875577000E3,5.387788750E1 +1.875865000E3,5.607108884E1 +1.876149000E3,5.692352283E1 +1.876407000E3,5.577296536E1 +1.876687000E3,5.259836493E1 +1.876982000E3,5.467571766E1 +1.877215000E3,5.256317748E1 +1.877521000E3,5.522593862E1 +1.877775000E3,5.432669245E1 +1.878036000E3,5.734031668E1 +1.878314000E3,6.027566119E1 +1.878587000E3,5.567003578E1 +1.878912000E3,5.307720644E1 +1.879176000E3,5.659939353E1 +1.879425000E3,5.110556861E1 +1.879723000E3,5.673190580E1 +1.879969000E3,5.437112204E1 +1.880274000E3,5.433297742E1 +1.880576000E3,5.585075865E1 +1.880875000E3,5.657006430E1 +1.881117000E3,5.701623858E1 +1.881424000E3,5.749679466E1 +1.881673000E3,5.623079196E1 +1.881986000E3,5.545187468E1 +1.882329000E3,5.781610131E1 +1.882611000E3,5.432916720E1 +1.882882000E3,4.940287270E1 +1.883127000E3,5.866223377E1 +1.883391000E3,5.654564177E1 +1.883644000E3,5.888782218E1 +1.883889000E3,5.586307703E1 +1.884148000E3,5.930725555E1 +1.884413000E3,5.963840788E1 +1.884660000E3,5.928611951E1 +1.884926000E3,5.621968819E1 +1.885181000E3,5.811455305E1 +1.885457000E3,5.585646129E1 +1.885714000E3,5.989591718E1 +1.885968000E3,6.058402104E1 +1.886267000E3,5.972100226E1 +1.886517000E3,6.220704457E1 +1.886832000E3,6.037773435E1 +1.887106000E3,6.039308032E1 +1.887385000E3,6.223647696E1 +1.887617000E3,5.854088114E1 +1.887876000E3,6.248517888E1 +1.888128000E3,6.222318884E1 +1.888437000E3,6.070320114E1 +1.888777000E3,5.817372188E1 +1.889076000E3,5.382250608E1 +1.889369000E3,7.004593531E1 +1.889616000E3,6.094415751E1 +1.889913000E3,5.455584628E1 +1.890163000E3,5.387250795E1 +1.890418000E3,5.219742496E1 +1.890714000E3,5.070715955E1 +1.890961000E3,5.362651533E1 +1.891207000E3,5.046817004E1 +1.891453000E3,5.129339201E1 +1.891764000E3,4.856730286E1 +1.892053000E3,5.220705734E1 +1.892321000E3,5.401068171E1 +1.892582000E3,5.109746146E1 +1.892834000E3,5.412675897E1 +1.893090000E3,5.347014573E1 +1.893340000E3,5.092720593E1 +1.893620000E3,5.341316175E1 +1.893886000E3,4.870918930E1 +1.894142000E3,4.929590175E1 +1.894389000E3,4.686294330E1 +1.894692000E3,5.100486031E1 +1.894995000E3,5.087478993E1 +1.895328000E3,4.940372977E1 +1.895606000E3,5.362468443E1 +1.895919000E3,5.608826750E1 +1.896241000E3,5.628756413E1 +1.896497000E3,5.817843169E1 +1.896749000E3,5.809119715E1 +1.897054000E3,5.469613872E1 +1.897287000E3,5.437807476E1 +1.897582000E3,5.794761863E1 +1.897897000E3,6.027023965E1 +1.898145000E3,5.913564460E1 +1.898511000E3,5.510014788E1 +1.898752000E3,5.499817732E1 +1.898999000E3,5.569220222E1 +1.899294000E3,5.368447548E1 +1.899547000E3,5.912109227E1 +1.899841000E3,6.076259223E1 +1.900104000E3,6.153129043E1 +1.900349000E3,5.679462536E1 +1.900634000E3,5.721135074E1 +1.900927000E3,5.674745728E1 +1.901166000E3,5.556227882E1 +1.901462000E3,4.994603734E1 +1.901841000E3,5.122656475E1 +1.902183000E3,5.127903645E1 +1.902436000E3,5.042064547E1 +1.902695000E3,5.425673681E1 +1.902998000E3,5.484388956E1 +1.903228000E3,5.322356297E1 +1.903483000E3,5.161093724E1 +1.903730000E3,5.302125687E1 +1.904019000E3,5.241958307E1 +1.904307000E3,5.116604316E1 +1.904614000E3,5.319513233E1 +1.904991000E3,5.530482451E1 +1.905243000E3,5.829713614E1 +1.905528000E3,4.891404960E1 +1.905774000E3,5.408250868E1 +1.906083000E3,5.272747143E1 +1.906381000E3,5.216068921E1 +1.906624000E3,5.292203291E1 +1.906885000E3,5.243548019E1 +1.907149000E3,4.981562618E1 +1.907448000E3,5.500279348E1 +1.907742000E3,5.481190601E1 +1.907999000E3,5.369800103E1 +1.908315000E3,6.390197571E1 +1.908579000E3,6.517990141E1 +1.908825000E3,5.822949910E1 +1.909064000E3,5.655728640E1 +1.909356000E3,5.292186662E1 +1.909600000E3,5.069372058E1 +1.909895000E3,5.368100654E1 +1.910138000E3,5.616508462E1 +1.910432000E3,6.285923815E1 +1.910670000E3,6.254266196E1 +1.910979000E3,5.628599605E1 +1.911260000E3,5.616383984E1 +1.911482000E3,5.074231882E1 +1.911728000E3,5.398858859E1 +1.911977000E3,5.585565083E1 +1.912237000E3,5.777112626E1 +1.912532000E3,6.036032129E1 +1.912783000E3,6.077032608E1 +1.913052000E3,5.839282786E1 +1.913316000E3,5.397912726E1 +1.913575000E3,5.582771928E1 +1.913848000E3,5.579334158E1 +1.914143000E3,5.778281485E1 +1.914450000E3,5.783459906E1 +1.914713000E3,6.199387267E1 +1.914943000E3,6.173706737E1 +1.915185000E3,5.621060236E1 +1.915433000E3,5.563784893E1 +1.915692000E3,5.470990272E1 +1.915951000E3,5.469960060E1 +1.916217000E3,6.171536544E1 +1.916470000E3,5.862130066E1 +1.916777000E3,5.839467924E1 +1.917028000E3,5.552209731E1 +1.917324000E3,5.763067987E1 +1.917687000E3,5.981653815E1 +1.917967000E3,5.790518789E1 +1.918210000E3,5.220287871E1 +1.918457000E3,5.707286116E1 +1.918759000E3,5.657529642E1 +1.918997000E3,6.000130629E1 +1.919241000E3,5.708419446E1 +1.919496000E3,5.749223221E1 +1.919768000E3,5.843781753E1 +1.920074000E3,5.671929683E1 +1.920373000E3,5.881070992E1 +1.920621000E3,5.603223824E1 +1.920956000E3,6.053511488E1 +1.921216000E3,5.525745837E1 +1.921476000E3,6.186721324E1 +1.921723000E3,6.214292360E1 +1.922025000E3,5.857206109E1 +1.922320000E3,5.934438900E1 +1.922561000E3,6.077867207E1 +1.922860000E3,5.578255978E1 +1.923099000E3,5.723807446E1 +1.923347000E3,5.785786452E1 +1.923636000E3,6.037753633E1 +1.923892000E3,6.106459696E1 +1.924223000E3,5.873119773E1 +1.924511000E3,5.862235861E1 +1.924814000E3,5.732521131E1 +1.925070000E3,5.161553090E1 +1.925373000E3,5.243351685E1 +1.925626000E3,5.041805469E1 +1.925919000E3,5.543714980E1 +1.926175000E3,5.338657816E1 +1.926425000E3,5.616854022E1 +1.926695000E3,5.699328540E1 +1.926965000E3,5.787312270E1 +1.927305000E3,5.558473925E1 +1.927614000E3,5.927685087E1 +1.927880000E3,6.254706193E1 +1.928125000E3,6.079427969E1 +1.928390000E3,5.412440784E1 +1.928634000E3,5.441834540E1 +1.928928000E3,5.220486428E1 +1.929215000E3,5.210908233E1 +1.929515000E3,5.352367419E1 +1.929766000E3,5.356350702E1 +1.930022000E3,5.184851991E1 +1.930322000E3,5.311742835E1 +1.930607000E3,5.453786592E1 +1.930870000E3,5.814140937E1 +1.931155000E3,5.779656646E1 +1.931440000E3,5.488757891E1 +1.931727000E3,5.385182390E1 +1.931981000E3,5.705491580E1 +1.932229000E3,5.576165296E1 +1.932491000E3,5.781333383E1 +1.932730000E3,5.616780300E1 +1.932971000E3,5.400230043E1 +1.933232000E3,5.518627884E1 +1.933510000E3,5.211300688E1 +1.933795000E3,5.292820587E1 +1.934127000E3,5.382097927E1 +1.934390000E3,6.102840439E1 +1.934671000E3,5.486275546E1 +1.934948000E3,5.206103103E1 +1.935198000E3,5.739150099E1 +1.935506000E3,5.310844778E1 +1.935756000E3,5.392681604E1 +1.936008000E3,5.250003264E1 +1.936256000E3,5.801399662E1 +1.936524000E3,5.696032820E1 +1.936785000E3,5.414492013E1 +1.937032000E3,5.536982174E1 +1.937391000E3,5.750979970E1 +1.937677000E3,5.370086514E1 +1.937972000E3,5.359409099E1 +1.938241000E3,4.663692517E1 +1.938508000E3,4.740501122E1 +1.938772000E3,4.812116539E1 +1.939051000E3,4.940260018E1 +1.939311000E3,5.211533825E1 +1.939553000E3,5.351181789E1 +1.939796000E3,5.597808269E1 +1.940081000E3,5.841474518E1 +1.940347000E3,5.900966915E1 +1.940680000E3,5.844032848E1 +1.940932000E3,6.047778057E1 +1.941187000E3,6.179458512E1 +1.941488000E3,5.569784051E1 +1.941730000E3,5.535681081E1 +1.941971000E3,5.409739450E1 +1.942227000E3,5.551927029E1 +1.942555000E3,5.259381649E1 +1.942855000E3,5.090743186E1 +1.943101000E3,5.330610416E1 +1.943383000E3,5.722147303E1 +1.943610000E3,5.564867598E1 +1.944013000E3,5.456395907E1 +1.944265000E3,5.442943523E1 +1.944557000E3,5.982581487E1 +1.944820000E3,5.751114261E1 +1.945081000E3,5.998630171E1 +1.945333000E3,5.908382499E1 +1.945646000E3,5.828329647E1 +1.945951000E3,5.602282904E1 +1.946199000E3,6.197108249E1 +1.946496000E3,5.533258874E1 +1.946770000E3,5.704060455E1 +1.947126000E3,5.457797110E1 +1.947363000E3,5.430717613E1 +1.947637000E3,5.940687974E1 +1.947953000E3,5.436076271E1 +1.948235000E3,5.660912008E1 +1.948550000E3,5.504399315E1 +1.948861000E3,5.464999644E1 +1.949122000E3,5.565806372E1 +1.949384000E3,5.190569146E1 +1.949646000E3,5.153937000E1 +1.949972000E3,5.628803963E1 +1.950248000E3,5.966716422E1 +1.950577000E3,5.820503815E1 +1.950822000E3,5.652058726E1 +1.951118000E3,5.802645793E1 +1.951349000E3,5.727916959E1 +1.951597000E3,5.784165576E1 +1.951900000E3,5.999225852E1 +1.952197000E3,6.048891831E1 +1.952433000E3,5.821794698E1 +1.952728000E3,5.416701806E1 +1.952964000E3,5.183738883E1 +1.953295000E3,5.384161890E1 +1.953675000E3,5.430376660E1 +1.953907000E3,5.257088063E1 +1.954151000E3,5.392186903E1 +1.954431000E3,6.167467738E1 +1.954678000E3,5.958790115E1 +1.954923000E3,5.822018477E1 +1.955185000E3,5.808448347E1 +1.955447000E3,5.733347749E1 +1.955703000E3,6.261390980E1 +1.956005000E3,5.829281758E1 +1.956246000E3,5.949056653E1 +1.956541000E3,5.839747914E1 +1.956810000E3,5.770882066E1 +1.957120000E3,5.690637302E1 +1.957421000E3,5.796705847E1 +1.957668000E3,5.867770180E1 +1.957936000E3,5.696585443E1 +1.958216000E3,5.738908049E1 +1.958463000E3,5.842272770E1 +1.958721000E3,5.966072568E1 +1.959033000E3,6.340725612E1 +1.959281000E3,6.193544465E1 +1.959566000E3,5.927164536E1 +1.959888000E3,6.146900670E1 +1.960249000E3,6.270186363E1 +1.960512000E3,5.695216686E1 +1.960779000E3,5.725758836E1 +1.961040000E3,5.788439963E1 +1.961303000E3,6.286977927E1 +1.961557000E3,6.361469653E1 +1.961802000E3,6.277422462E1 +1.962060000E3,6.032704022E1 +1.962310000E3,5.600516510E1 +1.962586000E3,6.188879617E1 +1.962805000E3,6.271522018E1 +1.963107000E3,6.025198847E1 +1.963453000E3,6.001529679E1 +1.963728000E3,5.375240125E1 +1.964036000E3,5.055228276E1 +1.964331000E3,5.257092943E1 +1.964568000E3,5.708661900E1 +1.964868000E3,5.629448239E1 +1.965178000E3,5.425890416E1 +1.965431000E3,5.575014937E1 +1.965679000E3,5.801461965E1 +1.965931000E3,5.400244473E1 +1.966191000E3,5.474887871E1 +1.966525000E3,5.196538635E1 +1.966783000E3,5.536524974E1 +1.967040000E3,5.974878933E1 +1.967338000E3,6.200932986E1 +1.967644000E3,6.295299888E1 +1.967909000E3,6.272635154E1 +1.968153000E3,5.902465660E1 +1.968474000E3,5.897159976E1 +1.968773000E3,5.506910037E1 +1.969014000E3,5.622897524E1 +1.969254000E3,5.457019516E1 +1.969505000E3,5.648049168E1 +1.969892000E3,5.656883155E1 +1.970152000E3,5.598423772E1 +1.970446000E3,5.186768597E1 +1.970726000E3,5.526177698E1 +1.971020000E3,5.810907246E1 +1.971304000E3,5.262875480E1 +1.971613000E3,5.141696402E1 +1.971915000E3,5.298264424E1 +1.972196000E3,5.641801556E1 +1.972483000E3,5.228737642E1 +1.972725000E3,5.649656740E1 +1.973036000E3,5.867645632E1 +1.973323000E3,5.679238187E1 +1.973633000E3,5.959682402E1 +1.973935000E3,5.617109756E1 +1.974236000E3,5.473085666E1 +1.974547000E3,5.589564412E1 +1.974836000E3,5.691193712E1 +1.975136000E3,5.808545953E1 +1.975385000E3,5.922478363E1 +1.975631000E3,5.707996013E1 +1.975881000E3,5.820923707E1 +1.976194000E3,5.897957095E1 +1.976453000E3,6.019944728E1 +1.976814000E3,6.472960186E1 +1.977076000E3,6.312075290E1 +1.977356000E3,5.886370461E1 +1.977618000E3,5.750754913E1 +1.977917000E3,5.531180501E1 +1.978189000E3,5.815410032E1 +1.978463000E3,5.735965971E1 +1.978732000E3,5.593071322E1 +1.978999000E3,5.835041964E1 +1.979245000E3,5.646810288E1 +1.979493000E3,5.392299875E1 +1.979902000E3,5.430590311E1 +1.980142000E3,5.447583546E1 +1.980384000E3,5.260389735E1 +1.980632000E3,5.537561423E1 +1.980873000E3,5.836960119E1 +1.981120000E3,5.425821286E1 +1.981389000E3,5.153336720E1 +1.981618000E3,5.420085973E1 +1.981915000E3,5.457985954E1 +1.982165000E3,5.637026749E1 +1.982404000E3,6.009656118E1 +1.982718000E3,5.903298531E1 +1.983029000E3,5.665152425E1 +1.983296000E3,5.778918758E1 +1.983538000E3,5.444374512E1 +1.983786000E3,5.619088618E1 +1.984047000E3,6.088482249E1 +1.984304000E3,5.678390940E1 +1.984575000E3,5.873820942E1 +1.984842000E3,6.004736340E1 +1.985142000E3,6.191465398E1 +1.985405000E3,6.154032648E1 +1.985653000E3,5.967034113E1 +1.985913000E3,5.855925349E1 +1.986211000E3,5.529356341E1 +1.986557000E3,5.823190054E1 +1.986847000E3,5.749679599E1 +1.987098000E3,5.855123449E1 +1.987369000E3,5.999203293E1 +1.987610000E3,6.139424716E1 +1.987876000E3,5.730078222E1 +1.988126000E3,5.649537684E1 +1.988425000E3,5.872458305E1 +1.988727000E3,5.704322852E1 +1.989024000E3,6.264447151E1 +1.989326000E3,5.763604303E1 +1.989641000E3,5.657919006E1 +1.989961000E3,5.706004491E1 +1.990255000E3,6.115159729E1 +1.990571000E3,5.721964371E1 +1.990829000E3,5.780420781E1 +1.991088000E3,5.782228640E1 +1.991353000E3,5.791642518E1 +1.991611000E3,5.820065680E1 +1.991935000E3,5.675756460E1 +1.992174000E3,5.720433643E1 +1.992482000E3,5.907701380E1 +1.992770000E3,5.791335620E1 +1.993107000E3,5.504589678E1 +1.993369000E3,6.117578252E1 +1.993619000E3,5.902046786E1 +1.993912000E3,6.024153080E1 +1.994216000E3,6.061721402E1 +1.994464000E3,6.185610038E1 +1.994715000E3,5.902440055E1 +1.995005000E3,6.112374185E1 +1.995249000E3,5.664710018E1 +1.995551000E3,5.841351492E1 +1.995787000E3,5.961393992E1 +1.996119000E3,5.614463215E1 +1.996387000E3,5.528223904E1 +1.996647000E3,5.706960328E1 +1.996947000E3,5.544195306E1 +1.997203000E3,5.747091679E1 +1.997452000E3,5.434233120E1 +1.997769000E3,5.794847441E1 +1.998019000E3,5.504963001E1 +1.998267000E3,5.470768853E1 +1.998498000E3,6.426300701E1 +1.998789000E3,6.070245213E1 +1.999090000E3,5.893271279E1 +1.999390000E3,5.873668669E1 +1.999698000E3,6.355663744E1 +1.999962000E3,6.500393379E1 +2.000214000E3,6.177640112E1 +2.000471000E3,6.122167361E1 +2.000775000E3,5.982616779E1 +2.001079000E3,5.944943300E1 +2.001339000E3,5.772707313E1 +2.001595000E3,5.934980117E1 +2.001862000E3,6.221301291E1 +2.002160000E3,6.098009785E1 +2.002491000E3,6.205877653E1 +2.002758000E3,5.978743388E1 +2.003062000E3,6.141065367E1 +2.003307000E3,6.146860620E1 +2.003555000E3,6.323368939E1 +2.003884000E3,6.072009355E1 +2.004185000E3,6.072017978E1 +2.004424000E3,6.079512782E1 +2.004673000E3,6.651000141E1 +2.004939000E3,6.185812181E1 +2.005202000E3,5.705353418E1 +2.005472000E3,5.820400818E1 +2.005800000E3,5.682542431E1 +2.006070000E3,6.224932691E1 +2.006350000E3,5.654791681E1 +2.006601000E3,6.160831985E1 +2.006857000E3,6.443497299E1 +2.007101000E3,6.091208862E1 +2.007395000E3,5.867323811E1 +2.007635000E3,5.850229824E1 +2.007945000E3,6.307832054E1 +2.008197000E3,5.931313312E1 +2.008453000E3,5.632990721E1 +2.008711000E3,5.662998085E1 +2.009032000E3,5.416655753E1 +2.009268000E3,6.273936844E1 +2.009521000E3,6.129068926E1 +2.009786000E3,6.485712301E1 +2.010037000E3,6.605690213E1 +2.010298000E3,6.243431425E1 +2.010541000E3,6.062714733E1 +2.010780000E3,6.369220544E1 +2.011082000E3,5.933701247E1 +2.011330000E3,6.141658123E1 +2.011605000E3,6.232326760E1 +2.011893000E3,5.983132844E1 +2.012226000E3,6.085684837E1 +2.012489000E3,5.844434641E1 +2.012752000E3,5.992485437E1 +2.013005000E3,5.745164278E1 +2.013272000E3,5.489362140E1 +2.013573000E3,5.734004331E1 +2.013861000E3,5.569303233E1 +2.014170000E3,5.619919203E1 +2.014467000E3,5.719248521E1 +2.014715000E3,5.898607642E1 +2.015015000E3,5.312334941E1 +2.015258000E3,4.707687024E1 +2.015594000E3,5.326213693E1 +2.015822000E3,4.977107581E1 +2.016071000E3,5.399380901E1 +2.016333000E3,5.528915982E1 +2.016634000E3,5.648344312E1 +2.016879000E3,5.853194276E1 +2.017143000E3,5.969968429E1 +2.017429000E3,6.121498547E1 +2.017723000E3,5.933414775E1 +2.017961000E3,6.375558171E1 +2.018248000E3,6.102538403E1 +2.018558000E3,6.066629858E1 +2.018830000E3,5.238394429E1 +2.019065000E3,5.528030903E1 +2.019316000E3,5.711235169E1 +2.019578000E3,6.069913503E1 +2.019847000E3,5.344730110E1 +2.020093000E3,5.593398360E1 +2.020413000E3,5.112453486E1 +2.020668000E3,5.529600172E1 +2.020922000E3,5.816841553E1 +2.021177000E3,6.105447683E1 +2.021449000E3,5.967528890E1 +2.021707000E3,5.677568689E1 +2.022115000E3,5.613246875E1 +2.022403000E3,5.846674311E1 +2.022679000E3,5.999468936E1 +2.022930000E3,6.268951545E1 +2.023232000E3,6.037378186E1 +2.023532000E3,6.123290650E1 +2.023784000E3,6.425880775E1 +2.024094000E3,6.043334594E1 +2.024356000E3,6.287321918E1 +2.024616000E3,6.178703582E1 +2.024868000E3,5.974424575E1 +2.025152000E3,5.863905018E1 +2.025429000E3,5.669082005E1 +2.025716000E3,6.192616195E1 +2.026008000E3,6.367561928E1 +2.026300000E3,6.061621393E1 +2.026543000E3,6.411900249E1 +2.026802000E3,6.060951858E1 +2.027066000E3,5.606119041E1 +2.027395000E3,5.099901519E1 +2.027693000E3,5.622472082E1 +2.027945000E3,5.354940616E1 +2.028237000E3,6.282566888E1 +2.028553000E3,5.775523802E1 +2.028868000E3,6.095006183E1 +2.029133000E3,6.333727439E1 +2.029399000E3,5.925545982E1 +2.029660000E3,6.045827699E1 +2.029962000E3,5.594587825E1 +2.030223000E3,5.708579081E1 +2.030478000E3,5.777704597E1 +2.030737000E3,5.406349508E1 +2.030990000E3,5.544037764E1 +2.031246000E3,5.912518025E1 +2.031508000E3,5.924806900E1 +2.031864000E3,6.105667153E1 +2.032110000E3,5.838466956E1 +2.032350000E3,5.923100201E1 +2.032598000E3,6.024290558E1 +2.032866000E3,5.971089342E1 +2.033112000E3,5.478665804E1 +2.033351000E3,5.966531235E1 +2.033644000E3,5.755565544E1 +2.033892000E3,5.982004182E1 +2.034190000E3,5.797424789E1 +2.034425000E3,5.856301863E1 +2.034717000E3,6.325478319E1 +2.035053000E3,6.168254294E1 +2.035364000E3,6.188857455E1 +2.035619000E3,6.156039581E1 +2.035901000E3,6.235770270E1 +2.036169000E3,6.262779828E1 +2.036471000E3,6.142542176E1 +2.036764000E3,5.923845966E1 +2.037022000E3,5.827266837E1 +2.037307000E3,6.314641141E1 +2.037615000E3,5.460230698E1 +2.037870000E3,5.396400232E1 +2.038120000E3,5.561122002E1 +2.038463000E3,5.928400391E1 +2.038767000E3,5.668934966E1 +2.039069000E3,5.831653467E1 +2.039316000E3,5.267103167E1 +2.039622000E3,5.557794232E1 +2.039859000E3,5.543606804E1 +2.040196000E3,5.836770370E1 +2.040499000E3,5.678092478E1 +2.040751000E3,5.612506795E1 +2.041024000E3,5.868430679E1 +2.041274000E3,5.264121586E1 +2.041581000E3,5.828774790E1 +2.041841000E3,5.647338053E1 +2.042088000E3,6.053709731E1 +2.042403000E3,5.614689861E1 +2.042691000E3,5.714845923E1 +2.042944000E3,5.256418368E1 +2.043191000E3,5.601486494E1 +2.043466000E3,5.810869150E1 +2.043715000E3,5.529893852E1 +2.043979000E3,5.708153712E1 +2.044245000E3,5.690179830E1 +2.044568000E3,5.994555064E1 +2.044825000E3,6.172126409E1 +2.045096000E3,6.015473895E1 +2.045377000E3,5.509344178E1 +2.045629000E3,5.568915719E1 +2.045902000E3,5.938619751E1 +2.046155000E3,5.534852098E1 +2.046409000E3,5.905391706E1 +2.046693000E3,5.250115201E1 +2.046947000E3,5.587771233E1 +2.047277000E3,5.599930929E1 +2.047517000E3,5.586822515E1 +2.047803000E3,5.740436533E1 +2.048105000E3,5.413600866E1 +2.048476000E3,5.595836709E1 +2.048737000E3,5.982743631E1 +2.048992000E3,6.001131240E1 +2.049305000E3,5.629713962E1 +2.049568000E3,5.505265617E1 +2.049904000E3,5.686004167E1 +2.050199000E3,6.078932545E1 +2.050470000E3,5.919030857E1 +2.050773000E3,5.640754436E1 +2.051052000E3,5.864124078E1 +2.051311000E3,5.683150656E1 +2.051642000E3,5.391893615E1 +2.051926000E3,4.513639699E1 +2.052174000E3,5.750824000E1 +2.052467000E3,5.945309138E1 +2.052703000E3,6.260915402E1 +2.052981000E3,6.017408744E1 +2.053276000E3,6.158293130E1 +2.053516000E3,6.279041899E1 +2.053759000E3,6.005362243E1 +2.054030000E3,5.776050932E1 +2.054357000E3,5.906607942E1 +2.054642000E3,6.002924771E1 +2.054978000E3,5.708591672E1 +2.055267000E3,5.932996992E1 +2.055552000E3,5.830703641E1 +2.055812000E3,5.428102985E1 +2.056063000E3,5.893384546E1 +2.056382000E3,6.028305726E1 +2.056682000E3,5.904357096E1 +2.056923000E3,6.015407432E1 +2.057171000E3,5.801677968E1 +2.057418000E3,6.561794532E1 +2.057665000E3,6.751214025E1 +2.057959000E3,5.899748641E1 +2.058279000E3,5.616162884E1 +2.058571000E3,5.813941707E1 +2.058834000E3,6.236684118E1 +2.059132000E3,6.058455193E1 +2.059376000E3,6.004963560E1 +2.059687000E3,6.255152045E1 +2.059984000E3,6.155697025E1 +2.060225000E3,6.124056229E1 +2.060517000E3,6.072549607E1 +2.060756000E3,6.119225814E1 +2.061060000E3,5.953618039E1 +2.061302000E3,5.869582322E1 +2.061578000E3,6.248269042E1 +2.061841000E3,6.070173510E1 +2.062089000E3,6.023992255E1 +2.062337000E3,5.848175462E1 +2.062607000E3,5.092907116E1 +2.062859000E3,5.442118268E1 +2.063124000E3,5.298599309E1 +2.063425000E3,6.030333428E1 +2.063671000E3,5.835700379E1 +2.063954000E3,5.943633389E1 +2.064268000E3,5.761479859E1 +2.064577000E3,5.520238299E1 +2.064822000E3,5.901822557E1 +2.065074000E3,5.705952734E1 +2.065339000E3,6.136116330E1 +2.065603000E3,5.746483296E1 +2.065865000E3,5.867757380E1 +2.066141000E3,5.709322981E1 +2.066441000E3,5.775131141E1 +2.066691000E3,5.886237327E1 +2.067036000E3,5.617972984E1 +2.067288000E3,5.802507148E1 +2.067560000E3,6.044497816E1 +2.067891000E3,5.450044868E1 +2.068148000E3,5.616761260E1 +2.068412000E3,6.243097888E1 +2.068673000E3,5.783788439E1 +2.068946000E3,5.764761585E1 +2.069196000E3,5.683737954E1 +2.069468000E3,5.609890848E1 +2.069778000E3,5.465619904E1 +2.070034000E3,5.368960846E1 +2.070328000E3,6.032893819E1 +2.070574000E3,5.862927742E1 +2.070842000E3,5.635830209E1 +2.071101000E3,5.822198053E1 +2.071339000E3,5.691346983E1 +2.071597000E3,5.865778618E1 +2.071860000E3,5.810560725E1 +2.072128000E3,5.968009174E1 +2.072425000E3,5.833852533E1 +2.072667000E3,5.784540163E1 +2.072934000E3,5.644439458E1 +2.073184000E3,5.178260396E1 +2.073488000E3,5.751445421E1 +2.073769000E3,5.974800721E1 +2.074068000E3,6.534291023E1 +2.074348000E3,6.371076652E1 +2.074624000E3,6.156132937E1 +2.074877000E3,6.012113548E1 +2.075119000E3,6.026351151E1 +2.075377000E3,6.142675581E1 +2.075661000E3,6.194478144E1 +2.075914000E3,6.183865569E1 +2.076267000E3,6.387512541E1 +2.076547000E3,6.077311287E1 +2.076803000E3,6.130963963E1 +2.077056000E3,5.862622582E1 +2.077295000E3,5.463497219E1 +2.077610000E3,5.484231095E1 +2.077891000E3,6.099801434E1 +2.078171000E3,5.475621164E1 +2.078466000E3,5.955577801E1 +2.078709000E3,5.720097088E1 +2.078954000E3,5.661944912E1 +2.079224000E3,5.443336360E1 +2.079503000E3,5.917559782E1 +2.079800000E3,5.424380486E1 +2.080057000E3,6.013762169E1 +2.080307000E3,6.100643768E1 +2.080558000E3,6.205128007E1 +2.080810000E3,6.007904071E1 +2.081092000E3,6.423414837E1 +2.081354000E3,5.938817614E1 +2.081601000E3,6.006860062E1 +2.081845000E3,5.833570272E1 +2.082143000E3,5.962915676E1 +2.082396000E3,5.844615966E1 +2.082663000E3,5.932060291E1 +2.082921000E3,6.037844323E1 +2.083227000E3,5.719168160E1 +2.083487000E3,5.597578938E1 +2.083743000E3,5.236775830E1 +2.084062000E3,5.471900653E1 +2.084318000E3,5.178371688E1 +2.084618000E3,5.707729304E1 +2.084858000E3,5.526812689E1 +2.085154000E3,5.716405930E1 +2.085391000E3,5.478798233E1 +2.085687000E3,5.496315929E1 +2.085932000E3,5.701239101E1 +2.086228000E3,5.776438308E1 +2.086467000E3,5.628202894E1 +2.086760000E3,5.042244376E1 +2.087015000E3,5.775963511E1 +2.087362000E3,4.982890988E1 +2.087671000E3,4.785672217E1 +2.087922000E3,4.762697394E1 +2.088178000E3,5.046726223E1 +2.088438000E3,4.890262424E1 +2.088711000E3,5.501277631E1 +2.088981000E3,5.666001705E1 +2.089249000E3,6.014252161E1 +2.089513000E3,5.925311989E1 +2.089806000E3,6.173820636E1 +2.090063000E3,5.350884215E1 +2.090366000E3,5.736408779E1 +2.090744000E3,5.450936109E1 +2.091005000E3,5.763377323E1 +2.091253000E3,6.042269191E1 +2.091515000E3,5.484903903E1 +2.091757000E3,5.882101591E1 +2.092028000E3,5.833139845E1 +2.092280000E3,5.703430671E1 +2.092527000E3,5.247783814E1 +2.092809000E3,5.233323676E1 +2.093037000E3,5.202869643E1 +2.093354000E3,5.628845797E1 +2.093634000E3,5.325396544E1 +2.094006000E3,5.654992892E1 +2.094280000E3,5.713253789E1 +2.094541000E3,5.967664240E1 +2.094800000E3,5.750232678E1 +2.095069000E3,5.544480371E1 +2.095333000E3,5.462176641E1 +2.095596000E3,5.811248949E1 +2.095853000E3,6.196847972E1 +2.096192000E3,5.842850461E1 +2.096488000E3,5.597774452E1 +2.096726000E3,5.601282925E1 +2.097104000E3,5.625832805E1 +2.097364000E3,5.315488909E1 +2.097602000E3,5.287250653E1 +2.097844000E3,5.523708836E1 +2.098081000E3,5.724292600E1 +2.098340000E3,5.659511238E1 +2.098670000E3,5.675324149E1 +2.098945000E3,5.485884276E1 +2.099219000E3,5.694143956E1 +2.099469000E3,5.561655413E1 +2.099765000E3,5.844909410E1 +2.100011000E3,6.135621316E1 +2.100343000E3,5.968766012E1 +2.100584000E3,5.173347950E1 +2.100832000E3,5.415548255E1 +2.101090000E3,5.271968845E1 +2.101339000E3,5.007174890E1 +2.101624000E3,5.279525002E1 +2.101895000E3,5.358558767E1 +2.102197000E3,5.559048142E1 +2.102438000E3,5.476305303E1 +2.102705000E3,5.237114911E1 +2.102947000E3,5.014972007E1 +2.103218000E3,4.895902935E1 +2.103469000E3,5.192053997E1 +2.103853000E3,4.647138436E1 +2.104101000E3,4.837766327E1 +2.104448000E3,5.088929287E1 +2.104740000E3,5.561591777E1 +2.104997000E3,5.440319534E1 +2.105260000E3,5.347164399E1 +2.105561000E3,5.151610441E1 +2.105813000E3,5.075382634E1 +2.106121000E3,5.244425755E1 +2.106357000E3,5.269617654E1 +2.106663000E3,5.149027406E1 +2.106954000E3,5.659456733E1 +2.107266000E3,5.282561460E1 +2.107606000E3,5.407918273E1 +2.107883000E3,5.643922092E1 +2.108164000E3,5.169657105E1 +2.108480000E3,5.713744586E1 +2.108748000E3,5.931186178E1 +2.109003000E3,5.645689600E1 +2.109252000E3,5.322874786E1 +2.109552000E3,5.363731782E1 +2.109821000E3,5.353815648E1 +2.110077000E3,5.445551750E1 +2.110418000E3,5.491110228E1 +2.110669000E3,5.291647814E1 +2.110921000E3,5.202914132E1 +2.111180000E3,5.363241827E1 +2.111479000E3,5.566624291E1 +2.111721000E3,5.645238247E1 +2.112027000E3,5.458458697E1 +2.112294000E3,5.469783372E1 +2.112597000E3,5.582449562E1 +2.112854000E3,5.595416398E1 +2.113105000E3,5.113785865E1 +2.113352000E3,6.248282803E1 +2.113711000E3,5.880495226E1 +2.113968000E3,5.941805617E1 +2.114248000E3,5.561632009E1 +2.114507000E3,5.501810850E1 +2.114754000E3,5.936291007E1 +2.115053000E3,6.127733734E1 +2.115321000E3,6.057491273E1 +2.115616000E3,6.127323198E1 +2.115893000E3,5.760488174E1 +2.116193000E3,6.030881831E1 +2.116434000E3,5.967518116E1 +2.116722000E3,5.720938908E1 +2.117066000E3,5.605932878E1 +2.117338000E3,6.068190844E1 +2.117598000E3,5.400374866E1 +2.117892000E3,5.332007667E1 +2.118133000E3,4.991979059E1 +2.118428000E3,5.700198654E1 +2.118666000E3,5.878418983E1 +2.118922000E3,5.703766890E1 +2.119230000E3,5.731012811E1 +2.119515000E3,5.865622099E1 +2.119741000E3,5.772295719E1 +2.120015000E3,5.851982083E1 +2.120322000E3,5.958645129E1 +2.120616000E3,6.233814130E1 +2.120861000E3,6.002711287E1 +2.121162000E3,5.939190004E1 +2.121437000E3,5.758195225E1 +2.121690000E3,5.564648712E1 +2.121946000E3,5.336629511E1 +2.122218000E3,5.199121426E1 +2.122476000E3,5.906368298E1 +2.122759000E3,5.917930836E1 +2.123014000E3,5.824882047E1 +2.123266000E3,5.770359270E1 +2.123492000E3,5.695638802E1 +2.123777000E3,5.720151485E1 +2.124027000E3,6.045411810E1 +2.124327000E3,5.540258870E1 +2.124575000E3,5.828000252E1 +2.124835000E3,5.500577731E1 +2.125106000E3,5.926473821E1 +2.125354000E3,5.472888078E1 +2.125611000E3,5.530970077E1 +2.125862000E3,5.595037084E1 +2.126117000E3,5.439239133E1 +2.126432000E3,5.961943996E1 +2.126692000E3,5.841091801E1 +2.126944000E3,5.863137443E1 +2.127282000E3,5.731398304E1 +2.127577000E3,5.665374527E1 +2.127843000E3,5.476493539E1 +2.128129000E3,5.580929465E1 +2.128437000E3,5.565551021E1 +2.128739000E3,5.869101147E1 +2.129026000E3,5.827114612E1 +2.129307000E3,5.507536074E1 +2.129577000E3,5.532393691E1 +2.129934000E3,5.233850306E1 +2.130215000E3,5.514372423E1 +2.130466000E3,5.757947445E1 +2.130714000E3,6.126034226E1 +2.131015000E3,6.074916673E1 +2.131279000E3,5.864911171E1 +2.131564000E3,5.680524431E1 +2.131825000E3,6.002252741E1 +2.132078000E3,5.953076168E1 +2.132390000E3,6.027427680E1 +2.132647000E3,5.955779136E1 +2.132902000E3,5.835756058E1 +2.133223000E3,6.286787860E1 +2.133471000E3,6.057291506E1 +2.133724000E3,5.893793659E1 +2.134002000E3,5.508555746E1 +2.134257000E3,5.619881839E1 +2.134512000E3,5.505764062E1 +2.134784000E3,5.808922162E1 +2.135054000E3,5.334583096E1 +2.135313000E3,5.298019930E1 +2.135595000E3,5.025342296E1 +2.135812000E3,5.409382682E1 +2.136057000E3,5.580950424E1 +2.136332000E3,5.523743716E1 +2.136661000E3,5.499005541E1 +2.136917000E3,5.745623005E1 +2.137196000E3,5.149169849E1 +2.137449000E3,5.261206885E1 +2.137711000E3,5.487518376E1 +2.138022000E3,5.898871991E1 +2.138270000E3,5.852026830E1 +2.138564000E3,5.868858262E1 +2.138802000E3,5.736353209E1 +2.139066000E3,5.529465652E1 +2.139332000E3,5.762578865E1 +2.139672000E3,5.790185487E1 +2.139930000E3,5.792373283E1 +2.140278000E3,5.597904656E1 +2.140535000E3,5.355980456E1 +2.140856000E3,5.411887429E1 +2.141146000E3,5.094976839E1 +2.141467000E3,5.658279242E1 +2.141735000E3,6.043792292E1 +2.142041000E3,5.996632022E1 +2.142276000E3,6.230155616E1 +2.142526000E3,6.102528468E1 +2.142783000E3,5.770338577E1 +2.143124000E3,5.827243883E1 +2.143406000E3,5.367650147E1 +2.143645000E3,5.777094487E1 +2.143915000E3,5.851595499E1 +2.144175000E3,5.573729509E1 +2.144454000E3,5.467626304E1 +2.144700000E3,5.699765591E1 +2.144968000E3,5.692170932E1 +2.145246000E3,6.030210344E1 +2.145550000E3,5.876913066E1 +2.145797000E3,5.698149837E1 +2.146042000E3,5.982717784E1 +2.146368000E3,5.905293636E1 +2.146676000E3,5.947032966E1 +2.146922000E3,5.910471730E1 +2.147225000E3,6.065874797E1 +2.147524000E3,5.680135408E1 +2.147831000E3,5.451199701E1 +2.148090000E3,5.301325775E1 +2.148365000E3,5.466040661E1 +2.148665000E3,5.658013689E1 +2.148952000E3,5.410667827E1 +2.149249000E3,5.788683658E1 +2.149597000E3,5.873903650E1 +2.149910000E3,5.314379433E1 +2.150150000E3,5.564952940E1 +2.150451000E3,6.000220607E1 +2.150691000E3,6.235870620E1 +2.150965000E3,6.387461990E1 +2.151194000E3,6.491001134E1 +2.151449000E3,5.932544814E1 +2.151756000E3,6.117684525E1 +2.152011000E3,6.059885605E1 +2.152282000E3,6.303246617E1 +2.152596000E3,6.399854390E1 +2.152961000E3,6.063746268E1 +2.153223000E3,6.122116723E1 +2.153495000E3,5.809397592E1 +2.153749000E3,5.903784259E1 +2.153999000E3,6.047826717E1 +2.154283000E3,5.846467986E1 +2.154537000E3,6.226879102E1 +2.154785000E3,5.980611807E1 +2.155079000E3,5.787450321E1 +2.155375000E3,5.676059962E1 +2.155616000E3,5.395823696E1 +2.155912000E3,5.953639288E1 +2.156221000E3,5.971614724E1 +2.156510000E3,6.039969801E1 +2.156758000E3,5.898776738E1 +2.157015000E3,6.100474003E1 +2.157289000E3,5.750129682E1 +2.157591000E3,5.995540643E1 +2.157844000E3,5.628303244E1 +2.158104000E3,5.892686601E1 +2.158366000E3,5.712884748E1 +2.158667000E3,5.727860760E1 +2.158932000E3,5.313556696E1 +2.159288000E3,5.635583768E1 +2.159555000E3,5.929473664E1 +2.159809000E3,5.396180560E1 +2.160112000E3,5.807023999E1 +2.160354000E3,5.639240346E1 +2.160608000E3,5.917728814E1 +2.160855000E3,5.429000157E1 +2.161130000E3,5.397827395E1 +2.161395000E3,5.647751800E1 +2.161656000E3,5.342605760E1 +2.162007000E3,5.324373839E1 +2.162263000E3,5.439383591E1 +2.162517000E3,5.727066505E1 +2.162888000E3,5.995593964E1 +2.163140000E3,6.130649482E1 +2.163392000E3,6.228130821E1 +2.163644000E3,6.279179388E1 +2.163938000E3,5.559527300E1 +2.164178000E3,5.200550071E1 +2.164481000E3,5.797363767E1 +2.164757000E3,5.902554678E1 +2.165040000E3,5.834647622E1 +2.165303000E3,5.713285380E1 +2.165575000E3,6.343633700E1 +2.165850000E3,5.896208706E1 +2.166219000E3,5.624501583E1 +2.166483000E3,5.696603075E1 +2.166769000E3,5.736978604E1 +2.167027000E3,5.837475894E1 +2.167278000E3,5.768129207E1 +2.167593000E3,5.660761865E1 +2.167856000E3,5.680076310E1 +2.168110000E3,5.883044450E1 +2.168385000E3,5.772028600E1 +2.168649000E3,5.342008664E1 +2.168914000E3,5.359113324E1 +2.169168000E3,5.849769703E1 +2.169536000E3,6.267181821E1 +2.169793000E3,5.719603223E1 +2.170040000E3,5.397233107E1 +2.170287000E3,4.861027503E1 +2.170579000E3,5.741564583E1 +2.170822000E3,6.207812430E1 +2.171115000E3,5.827753689E1 +2.171365000E3,6.042202215E1 +2.171629000E3,5.516417228E1 +2.171895000E3,4.912315476E1 +2.172163000E3,4.718316305E1 +2.172446000E3,5.363129541E1 +2.172813000E3,5.322378335E1 +2.173087000E3,5.228499961E1 +2.173349000E3,5.364722432E1 +2.173618000E3,5.964999675E1 +2.173917000E3,6.116591719E1 +2.174174000E3,5.668310324E1 +2.174436000E3,5.538937699E1 +2.174688000E3,5.539330891E1 +2.174944000E3,5.678019084E1 +2.175197000E3,5.655985061E1 +2.175490000E3,6.211643319E1 +2.175751000E3,5.899842059E1 +2.176153000E3,6.042080027E1 +2.176454000E3,5.956376587E1 +2.176730000E3,5.896716838E1 +2.177048000E3,5.729778676E1 +2.177305000E3,5.512323216E1 +2.177616000E3,5.573124529E1 +2.177883000E3,5.390669828E1 +2.178139000E3,5.435017850E1 +2.178403000E3,5.275779180E1 +2.178672000E3,5.469054235E1 +2.178938000E3,5.701832565E1 +2.179201000E3,6.063134316E1 +2.179540000E3,6.461030243E1 +2.179799000E3,6.345934666E1 +2.180043000E3,6.255021373E1 +2.180348000E3,6.265836689E1 +2.180640000E3,6.125083403E1 +2.180878000E3,5.721943432E1 +2.181125000E3,5.584429631E1 +2.181407000E3,5.679219567E1 +2.181647000E3,5.506189996E1 +2.181962000E3,5.950753578E1 +2.182227000E3,5.684863204E1 +2.182499000E3,5.318048388E1 +2.182825000E3,5.856807028E1 +2.183124000E3,6.201159961E1 +2.183360000E3,5.994279105E1 +2.183661000E3,6.155626338E1 +2.183904000E3,5.760612799E1 +2.184197000E3,5.557219911E1 +2.184436000E3,5.720299401E1 +2.184730000E3,5.496492062E1 +2.184965000E3,5.287669523E1 +2.185272000E3,5.534018340E1 +2.185572000E3,5.047897567E1 +2.185897000E3,5.289532450E1 +2.186149000E3,5.169587435E1 +2.186428000E3,5.811856565E1 +2.186722000E3,5.829930976E1 +2.187016000E3,5.767171180E1 +2.187297000E3,5.167293983E1 +2.187542000E3,5.634712904E1 +2.187793000E3,5.452173951E1 +2.188038000E3,5.242356157E1 +2.188332000E3,5.476946331E1 +2.188570000E3,5.506415879E1 +2.188807000E3,5.842757277E1 +2.189123000E3,5.579731569E1 +2.189400000E3,5.735467547E1 +2.189707000E3,5.510643622E1 +2.189947000E3,5.399605596E1 +2.190247000E3,5.231812124E1 +2.190482000E3,5.397423501E1 +2.190722000E3,5.467291530E1 +2.190972000E3,5.750340972E1 +2.191219000E3,5.451621797E1 +2.191527000E3,5.544744059E1 +2.191775000E3,5.570906247E1 +2.192040000E3,5.570238792E1 +2.192395000E3,5.704729905E1 +2.192674000E3,5.662202644E1 +2.192969000E3,6.130245708E1 +2.193206000E3,5.842239411E1 +2.193505000E3,5.813812757E1 +2.193745000E3,5.643123308E1 +2.194038000E3,5.810403241E1 +2.194275000E3,5.863690353E1 +2.194574000E3,5.519980518E1 +2.194810000E3,5.381530940E1 +2.195092000E3,5.781601666E1 +2.195335000E3,5.699265058E1 +2.195608000E3,5.477338243E1 +2.195929000E3,5.695412826E1 +2.196188000E3,5.575935497E1 +2.196439000E3,5.738570553E1 +2.196686000E3,6.194168224E1 +2.196969000E3,5.888525061E1 +2.197270000E3,5.830791470E1 +2.197516000E3,5.904778886E1 +2.197822000E3,5.987539712E1 +2.198117000E3,5.910637217E1 +2.198355000E3,5.676446576E1 +2.198673000E3,5.632729175E1 +2.198920000E3,5.826507178E1 +2.199227000E3,6.221847088E1 +2.199493000E3,6.023584539E1 +2.199739000E3,6.378124478E1 +2.199975000E3,6.457706819E1 +2.200218000E3,5.781084826E1 +2.200471000E3,5.833307765E1 +2.200715000E3,5.849295856E1 +2.200984000E3,5.695016071E1 +2.201255000E3,5.945608920E1 +2.201511000E3,5.923858391E1 +2.201821000E3,5.975381188E1 +2.202050000E3,5.657071344E1 +2.202297000E3,5.582353283E1 +2.202552000E3,5.634201272E1 +2.202803000E3,5.842061156E1 +2.203080000E3,5.511323996E1 +2.203339000E3,5.333816234E1 +2.203589000E3,5.586132206E1 +2.203867000E3,5.612282959E1 +2.204151000E3,5.390907932E1 +2.204405000E3,5.581501331E1 +2.204648000E3,5.691201261E1 +2.204938000E3,5.605209961E1 +2.205271000E3,5.337227455E1 +2.205520000E3,5.726868677E1 +2.205824000E3,5.678400386E1 +2.206068000E3,5.598615724E1 +2.206327000E3,6.245548090E1 +2.206634000E3,5.788335624E1 +2.206927000E3,5.672312442E1 +2.207166000E3,5.700846075E1 +2.207464000E3,5.693157148E1 +2.207703000E3,5.667671942E1 +2.207995000E3,5.655907845E1 +2.208344000E3,5.694003799E1 +2.208592000E3,5.812693102E1 +2.208844000E3,5.305590014E1 +2.209133000E3,5.963333488E1 +2.209376000E3,6.125764761E1 +2.209621000E3,5.708540532E1 +2.209865000E3,5.539532482E1 +2.210177000E3,6.086117928E1 +2.210432000E3,5.871599576E1 +2.210705000E3,5.720891289E1 +2.210929000E3,5.859137268E1 +2.211185000E3,5.492761595E1 +2.211566000E3,5.458369125E1 +2.211811000E3,5.704243717E1 +2.212094000E3,5.948204172E1 +2.212325000E3,5.442994388E1 +2.212570000E3,5.607391365E1 +2.212815000E3,5.349643391E1 +2.213089000E3,5.518134225E1 +2.213397000E3,5.879499176E1 +2.213659000E3,5.918920409E1 +2.213917000E3,6.317166487E1 +2.214205000E3,5.773325998E1 +2.214505000E3,6.021667659E1 +2.214834000E3,5.707564648E1 +2.215074000E3,5.411436798E1 +2.215412000E3,5.705541238E1 +2.215699000E3,6.721672427E1 +2.215946000E3,6.130402498E1 +2.216241000E3,5.914242022E1 +2.216493000E3,5.881747375E1 +2.216786000E3,5.920115687E1 +2.217030000E3,5.981753209E1 +2.217325000E3,5.379848698E1 +2.217566000E3,5.498057230E1 +2.217931000E3,5.647867672E1 +2.218210000E3,5.460935805E1 +2.218440000E3,5.579228446E1 +2.218740000E3,5.598523495E1 +2.218992000E3,5.501198671E1 +2.219248000E3,5.270876730E1 +2.219495000E3,5.711255338E1 +2.219767000E3,5.276578476E1 +2.220009000E3,6.171644376E1 +2.220307000E3,5.760035427E1 +2.220557000E3,6.039071701E1 +2.220820000E3,5.947563028E1 +2.221166000E3,5.781157464E1 +2.221459000E3,5.689764898E1 +2.221740000E3,5.361204154E1 +2.221998000E3,5.565584232E1 +2.222252000E3,6.236264054E1 +2.222508000E3,5.583706888E1 +2.222794000E3,5.998886151E1 +2.223038000E3,6.067027795E1 +2.223281000E3,5.953550256E1 +2.223512000E3,6.087865846E1 +2.223764000E3,5.880177247E1 +2.224056000E3,5.532032645E1 +2.224389000E3,5.110554887E1 +2.224697000E3,6.082114583E1 +2.224957000E3,6.332269799E1 +2.225225000E3,5.859152014E1 +2.225521000E3,6.312344162E1 +2.225760000E3,6.208500503E1 +2.226003000E3,6.030377984E1 +2.226280000E3,5.890306026E1 +2.226553000E3,6.412257006E1 +2.226813000E3,5.959239884E1 +2.227137000E3,5.603893495E1 +2.227460000E3,5.807576772E1 +2.227717000E3,6.034272760E1 +2.227950000E3,5.678924442E1 +2.228211000E3,5.767938832E1 +2.228489000E3,4.973605337E1 +2.228742000E3,5.227056153E1 +2.229007000E3,4.524576382E1 +2.229320000E3,5.163901012E1 +2.229633000E3,5.791269320E1 +2.229909000E3,5.832692980E1 +2.230223000E3,5.512940778E1 +2.230487000E3,5.639998631E1 +2.230845000E3,6.012111222E1 +2.231113000E3,6.632176219E1 +2.231407000E3,6.692769565E1 +2.231662000E3,6.409372191E1 +2.231945000E3,6.268702605E1 +2.232208000E3,6.192012265E1 +2.232460000E3,5.923306273E1 +2.232717000E3,5.726340446E1 +2.233005000E3,5.708270925E1 +2.233256000E3,6.172203942E1 +2.233510000E3,6.197059155E1 +2.233807000E3,6.691458644E1 +2.234160000E3,6.165007134E1 +2.234422000E3,6.172053486E1 +2.234714000E3,6.148833899E1 +2.234974000E3,6.190331921E1 +2.235253000E3,5.938090919E1 +2.235479000E3,6.223060920E1 +2.235722000E3,6.133640397E1 +2.236028000E3,6.400294095E1 +2.236269000E3,6.581462957E1 +2.236516000E3,6.094953675E1 +2.236828000E3,5.792232456E1 +2.237124000E3,5.750665846E1 +2.237367000E3,5.360734442E1 +2.237668000E3,5.239836763E1 +2.237914000E3,5.189659577E1 +2.238168000E3,5.779541581E1 +2.238431000E3,5.409030702E1 +2.238689000E3,5.064192938E1 +2.238941000E3,4.890244292E1 +2.239235000E3,4.958738332E1 +2.239486000E3,5.093509792E1 +2.239725000E3,5.421091975E1 +2.239970000E3,6.074883769E1 +2.240298000E3,5.611992467E1 +2.240604000E3,4.988071111E1 +2.240900000E3,4.952063126E1 +2.241187000E3,5.282005772E1 +2.241428000E3,5.672648648E1 +2.241685000E3,5.807464117E1 +2.241973000E3,5.565097745E1 +2.242224000E3,5.410363002E1 +2.242475000E3,5.548804216E1 +2.242720000E3,5.862108370E1 +2.242959000E3,5.101243713E1 +2.243259000E3,5.340920814E1 +2.243564000E3,5.471013043E1 +2.243801000E3,5.474536753E1 +2.244062000E3,5.454012147E1 +2.244333000E3,5.594751460E1 +2.244637000E3,5.486159050E1 +2.244913000E3,5.317501502E1 +2.245138000E3,5.100209753E1 +2.245397000E3,5.436827206E1 +2.245643000E3,5.483479867E1 +2.245916000E3,5.150486026E1 +2.246182000E3,5.049924887E1 +2.246449000E3,5.226067252E1 +2.246744000E3,5.389432372E1 +2.247057000E3,6.032791953E1 +2.247330000E3,5.966662928E1 +2.247666000E3,5.824962285E1 +2.247962000E3,5.700720490E1 +2.248202000E3,6.373200887E1 +2.248495000E3,6.648419927E1 +2.248743000E3,5.542652488E1 +2.249036000E3,5.256926371E1 +2.249272000E3,6.053195001E1 +2.249564000E3,4.959074314E1 +2.249800000E3,5.054384460E1 +2.250136000E3,5.008489809E1 +2.250431000E3,5.752384263E1 +2.250666000E3,5.367007636E1 +2.250931000E3,4.851936559E1 +2.251210000E3,4.965482987E1 +2.251497000E3,5.733244198E1 +2.251772000E3,5.370188093E1 +2.251997000E3,5.388650114E1 +2.252246000E3,5.331606518E1 +2.252516000E3,5.534782747E1 +2.252818000E3,5.271944154E1 +2.253047000E3,5.188974945E1 +2.253402000E3,5.040855384E1 +2.253689000E3,5.348452962E1 +2.253965000E3,5.685197701E1 +2.254240000E3,5.699151925E1 +2.254539000E3,5.217481719E1 +2.254794000E3,5.255063115E1 +2.255035000E3,5.258436032E1 +2.255283000E3,5.228429265E1 +2.255592000E3,5.187189315E1 +2.255851000E3,5.089851896E1 +2.256105000E3,5.323192817E1 +2.256387000E3,5.259240607E1 +2.256752000E3,5.489099725E1 +2.257016000E3,5.140699592E1 +2.257276000E3,5.478139635E1 +2.257600000E3,5.508183343E1 +2.257864000E3,5.539199709E1 +2.258160000E3,5.879728075E1 +2.258399000E3,6.145510373E1 +2.258645000E3,6.018082278E1 +2.258890000E3,6.203490998E1 +2.259131000E3,6.051201097E1 +2.259385000E3,5.741582229E1 +2.259629000E3,5.742200481E1 +2.259994000E3,5.205318956E1 +2.260295000E3,5.807019657E1 +2.260539000E3,5.843419178E1 +2.260841000E3,5.543595349E1 +2.261104000E3,5.208978608E1 +2.261348000E3,5.288295424E1 +2.261601000E3,5.593156434E1 +2.261856000E3,5.600009221E1 +2.262108000E3,5.581775464E1 +2.262358000E3,5.037081152E1 +2.262613000E3,5.059162693E1 +2.262916000E3,5.459372597E1 +2.263271000E3,5.581642194E1 +2.263548000E3,5.702582989E1 +2.263802000E3,5.531282217E1 +2.264049000E3,5.356460573E1 +2.264318000E3,5.682743962E1 +2.264564000E3,5.353127135E1 +2.264854000E3,5.962134934E1 +2.265080000E3,5.858968032E1 +2.265326000E3,5.681259568E1 +2.265625000E3,5.635120121E1 +2.265871000E3,5.433379551E1 +2.266211000E3,4.913835205E1 +2.266510000E3,5.243179137E1 +2.266783000E3,4.886918417E1 +2.267043000E3,4.774131335E1 +2.267292000E3,4.892025491E1 +2.267553000E3,4.710213612E1 +2.267796000E3,4.847827931E1 +2.268042000E3,5.624471818E1 +2.268281000E3,5.286977188E1 +2.268548000E3,5.683989489E1 +2.268800000E3,5.459251055E1 +2.269086000E3,5.272841607E1 +2.269389000E3,5.585343514E1 +2.269616000E3,5.452972356E1 +2.269865000E3,5.183250423E1 +2.270167000E3,4.733442261E1 +2.270442000E3,4.736450762E1 +2.270667000E3,4.430645798E1 +2.270915000E3,4.635257501E1 +2.271160000E3,4.914582650E1 +2.271407000E3,4.938157659E1 +2.271656000E3,4.788630853E1 +2.271896000E3,4.778446083E1 +2.272198000E3,5.081637081E1 +2.272482000E3,4.630509256E1 +2.272722000E3,4.551027932E1 +2.273048000E3,5.074623045E1 +2.273321000E3,4.689236254E1 +2.273562000E3,4.960242652E1 +2.273859000E3,5.310274016E1 +2.274104000E3,5.391997859E1 +2.274392000E3,4.854992165E1 +2.274648000E3,4.610161890E1 +2.274915000E3,5.325141064E1 +2.275196000E3,4.823989698E1 +2.275460000E3,5.167706762E1 +2.275772000E3,4.424461998E1 +2.276008000E3,4.957193490E1 +2.276258000E3,4.220429916E1 +2.276545000E3,4.614900045E1 +2.276809000E3,4.247109284E1 +2.277119000E3,5.104311310E1 +2.277385000E3,4.898949856E1 +2.277651000E3,5.033981280E1 +2.277920000E3,4.504255509E1 +2.278210000E3,4.851295637E1 +2.278452000E3,4.975001222E1 +2.278771000E3,5.198599663E1 +2.279101000E3,5.078534391E1 +2.279348000E3,5.056977572E1 +2.279614000E3,4.645427419E1 +2.279894000E3,4.837428182E1 +2.280121000E3,4.672417188E1 +2.280416000E3,4.338010131E1 +2.280671000E3,4.552410696E1 +2.280941000E3,4.107346609E1 +2.281195000E3,4.850760260E1 +2.281477000E3,4.449785068E1 +2.281730000E3,3.834743898E1 +2.282028000E3,3.160451104E1 +2.282275000E3,2.921367430E1 +2.282509000E3,3.929432216E1 +2.282771000E3,3.560833020E1 +2.283021000E3,4.204425230E1 +2.283277000E3,4.897505461E1 +2.283570000E3,4.492050546E1 +2.283802000E3,4.549624302E1 +2.284053000E3,4.703134831E1 +2.284302000E3,4.492779574E1 +2.284580000E3,5.573526523E1 +2.284888000E3,4.583204799E1 +2.285186000E3,3.987632497E1 +2.285426000E3,4.276483306E1 +2.285670000E3,4.196646636E1 +2.285974000E3,4.127295807E1 +2.286241000E3,3.392540836E1 +2.286513000E3,3.045281657E1 +2.286755000E3,3.056149566E1 +2.287058000E3,4.234115907E1 +2.287358000E3,4.148011807E1 +2.287615000E3,4.752316696E1 +2.287890000E3,4.261643768E1 +2.288186000E3,3.531031146E1 +2.288451000E3,3.336926272E1 +2.288830000E3,3.217663691E1 +2.289083000E3,3.280943829E1 +2.289350000E3,4.037024361E1 +2.289606000E3,4.463743016E1 +2.289870000E3,3.926930450E1 +2.290142000E3,3.549021170E1 +2.290376000E3,3.657210104E1 +2.290669000E3,3.609483404E1 +2.290917000E3,3.935001060E1 +2.291190000E3,3.968762383E1 +2.291417000E3,3.622062011E1 +2.291698000E3,5.052972627E1 +2.292019000E3,4.472329620E1 +2.292314000E3,3.528869928E1 +2.292580000E3,3.171318762E1 +2.292867000E3,3.293682859E1 +2.293112000E3,2.980662334E1 +2.293408000E3,3.108877030E1 +2.293645000E3,3.411108767E1 +2.293948000E3,2.929195023E1 +2.294231000E3,2.830259325E1 +2.294484000E3,2.905088910E1 +2.294732000E3,3.046102835E1 +2.295049000E3,2.679058069E1 +2.295347000E3,2.620731663E1 +2.295594000E3,3.509528145E1 +2.295836000E3,2.657946529E1 +2.296130000E3,2.511368258E1 +2.296378000E3,2.555955915E1 +2.296634000E3,2.785949260E1 +2.296875000E3,2.654407944E1 +2.297117000E3,3.658368449E1 +2.297412000E3,3.412054652E1 +2.297648000E3,3.448252102E1 +2.297956000E3,3.528486686E1 +2.298205000E3,3.265291425E1 +2.298494000E3,2.963788314E1 +2.298798000E3,3.350933300E1 +2.299085000E3,3.038301619E1 +2.299338000E3,3.357142506E1 +2.299610000E3,4.744800671E1 +2.299868000E3,3.435626076E1 +2.300142000E3,3.368274389E1 +2.300402000E3,2.881246111E1 +2.300655000E3,3.097762310E1 +2.300898000E3,2.947567056E1 +2.301182000E3,3.214187359E1 +2.301423000E3,3.421070745E1 +2.301786000E3,5.117970534E1 +2.302087000E3,5.037784077E1 +2.302335000E3,5.283937176E1 +2.302644000E3,5.164119106E1 +2.302941000E3,5.300709748E1 +2.303240000E3,4.713488810E1 +2.303488000E3,4.524114677E1 +2.303739000E3,3.080285972E1 +2.304022000E3,2.293405577E1 +2.304254000E3,2.235464386E1 +2.304552000E3,2.949911358E1 +2.304876000E3,4.141349798E1 +2.305182000E3,4.156611078E1 +2.305491000E3,4.347125429E1 +2.305797000E3,4.579894404E1 +2.306107000E3,4.646123013E1 +2.306358000E3,4.517240887E1 +2.306604000E3,5.308475174E1 +2.306870000E3,4.681256924E1 +2.307168000E3,2.942058533E1 +2.307450000E3,2.986114457E1 +2.307717000E3,3.195150356E1 +2.308031000E3,3.775567348E1 +2.308265000E3,3.823556499E1 +2.308570000E3,2.909536341E1 +2.308842000E3,3.096070220E1 +2.309098000E3,4.060687649E1 +2.309391000E3,4.820113946E1 +2.309687000E3,4.619079404E1 +2.309928000E3,4.304793785E1 +2.310216000E3,4.976144450E1 +2.310446000E3,4.779148829E1 +2.310686000E3,5.167703897E1 +2.310979000E3,3.773719280E1 +2.311248000E3,2.923821784E1 +2.311466000E3,2.654081756E1 +2.311763000E3,2.616593312E1 +2.312001000E3,2.460963519E1 +2.312285000E3,2.554564289E1 +2.312588000E3,3.572755404E1 +2.312856000E3,4.274835909E1 +2.313074000E3,4.355953935E1 +2.313375000E3,5.377727845E1 +2.313611000E3,5.435235813E1 +2.313893000E3,5.477010993E1 +2.314137000E3,5.142421895E1 +2.314483000E3,4.794670725E1 +2.314780000E3,5.149445419E1 +2.315019000E3,5.127618051E1 +2.315306000E3,4.939341348E1 +2.315533000E3,4.928824788E1 +2.315832000E3,4.617335031E1 +2.316069000E3,3.696469062E1 +2.316377000E3,4.552948924E1 +2.316627000E3,4.672923062E1 +2.316913000E3,4.504192742E1 +2.317215000E3,4.364234368E1 +2.317558000E3,4.231291453E1 +2.317853000E3,4.886663905E1 +2.318118000E3,4.492895691E1 +2.318412000E3,4.464681620E1 +2.318711000E3,4.698360224E1 +2.318950000E3,4.454369095E1 +2.319250000E3,4.409609939E1 +2.319494000E3,4.283121809E1 +2.319793000E3,4.398770219E1 +2.320040000E3,4.728522548E1 +2.320336000E3,4.533798443E1 +2.320660000E3,4.548359371E1 +2.320908000E3,4.366718291E1 +2.321152000E3,5.139935964E1 +2.321408000E3,4.747980864E1 +2.321709000E3,3.867643032E1 +2.321952000E3,4.294445900E1 +2.322196000E3,4.336333736E1 +2.322445000E3,3.890531131E1 +2.322682000E3,4.087281677E1 +2.322980000E3,3.979668464E1 +2.323225000E3,4.157042707E1 +2.323553000E3,4.515881082E1 +2.323886000E3,3.868360739E1 +2.324184000E3,4.839319184E1 +2.324428000E3,4.298284223E1 +2.324669000E3,4.433761346E1 +2.324987000E3,4.011512195E1 +2.325233000E3,3.478551365E1 +2.325486000E3,4.180203002E1 +2.325789000E3,4.323726184E1 +2.326086000E3,3.985791110E1 +2.326333000E3,3.946244529E1 +2.326667000E3,4.066537977E1 +2.326925000E3,3.986903649E1 +2.327223000E3,4.142461274E1 +2.327521000E3,3.461788217E1 +2.327778000E3,3.326602717E1 +2.328102000E3,4.357074645E1 +2.328367000E3,5.496493564E1 +2.328618000E3,4.413482695E1 +2.328920000E3,4.170999616E1 +2.329183000E3,4.107694173E1 +2.329486000E3,5.342371220E1 +2.329729000E3,5.103134188E1 +2.330028000E3,4.716459977E1 +2.330382000E3,4.916498276E1 +2.330642000E3,4.801561309E1 +2.330930000E3,4.860033329E1 +2.331211000E3,5.037441690E1 +2.331463000E3,5.227972551E1 +2.331719000E3,4.516533742E1 +2.331971000E3,4.623606604E1 +2.332268000E3,3.207985320E1 +2.332513000E3,3.485208029E1 +2.332801000E3,4.367306984E1 +2.333109000E3,4.764897626E1 +2.333397000E3,4.844411921E1 +2.333779000E3,4.624834459E1 +2.334088000E3,4.492130047E1 +2.334331000E3,4.172849812E1 +2.334618000E3,4.243441154E1 +2.334859000E3,4.155300890E1 +2.335165000E3,3.508017133E1 +2.335414000E3,3.102497597E1 +2.335689000E3,3.346102792E1 +2.335938000E3,2.980210924E1 +2.336237000E3,2.815695425E1 +2.336480000E3,4.530841757E1 +2.336824000E3,4.476742737E1 +2.337075000E3,4.460293889E1 +2.337332000E3,5.054872999E1 +2.337583000E3,4.962100100E1 +2.337845000E3,5.224787063E1 +2.338132000E3,4.845338775E1 +2.338374000E3,4.675501048E1 +2.338651000E3,4.806540095E1 +2.338903000E3,4.707869991E1 +2.339145000E3,4.747595477E1 +2.339395000E3,3.449909829E1 +2.339700000E3,4.619360178E1 +2.340033000E3,4.785644508E1 +2.340329000E3,4.721347586E1 +2.340579000E3,4.302992844E1 +2.340828000E3,4.629706327E1 +2.341122000E3,4.550319757E1 +2.341368000E3,4.510038554E1 +2.341611000E3,4.752886315E1 +2.341876000E3,4.524122211E1 +2.342135000E3,2.990386366E1 +2.342396000E3,3.647672774E1 +2.342679000E3,2.854891758E1 +2.342936000E3,3.995722191E1 +2.343310000E3,4.501906630E1 +2.343555000E3,4.872212276E1 +2.343839000E3,4.566863325E1 +2.344134000E3,3.946814595E1 +2.344384000E3,4.796193013E1 +2.344656000E3,4.858552009E1 +2.344961000E3,4.902627763E1 +2.345257000E3,4.467711671E1 +2.345498000E3,3.756709071E1 +2.345764000E3,2.964206509E1 +2.346064000E3,4.283044167E1 +2.346415000E3,4.191014925E1 +2.346743000E3,4.910031818E1 +2.347021000E3,5.022624274E1 +2.347337000E3,5.257970130E1 +2.347586000E3,4.764257555E1 +2.347831000E3,4.353349182E1 +2.348126000E3,4.318604201E1 +2.348436000E3,4.825752031E1 +2.348710000E3,4.464987037E1 +2.348968000E3,4.690302679E1 +2.349225000E3,4.464063657E1 +2.349495000E3,5.114524492E1 +2.349740000E3,4.345049547E1 +2.350133000E3,4.655800825E1 +2.350382000E3,4.419356370E1 +2.350688000E3,4.308388818E1 +2.350960000E3,4.964188075E1 +2.351269000E3,5.137042419E1 +2.351542000E3,4.751708919E1 +2.351836000E3,3.239228651E1 +2.352067000E3,3.331178705E1 +2.352357000E3,4.628654550E1 +2.352625000E3,4.653844798E1 +2.352938000E3,4.419734850E1 +2.353231000E3,3.771763539E1 +2.353458000E3,3.489550836E1 +2.353713000E3,2.965581776E1 +2.353962000E3,3.457100474E1 +2.354201000E3,3.291595658E1 +2.354446000E3,2.791603976E1 +2.354711000E3,3.307930362E1 +2.355027000E3,5.311162000E1 +2.355290000E3,4.688373373E1 +2.355581000E3,3.663543876E1 +2.355868000E3,2.834403560E1 +2.356176000E3,5.001680718E1 +2.356518000E3,5.349221251E1 +2.356780000E3,5.234097025E1 +2.357043000E3,4.476475434E1 +2.357349000E3,5.160193390E1 +2.357584000E3,4.375385010E1 +2.357840000E3,3.709166207E1 +2.358125000E3,2.927191182E1 +2.358378000E3,4.114289062E1 +2.358676000E3,4.266518399E1 +2.358921000E3,4.641380631E1 +2.359210000E3,4.551221179E1 +2.359545000E3,4.099683883E1 +2.359801000E3,5.202602500E1 +2.360072000E3,5.207875379E1 +2.360343000E3,4.670310433E1 +2.360619000E3,4.619168123E1 +2.360865000E3,4.348453495E1 +2.361113000E3,4.603882932E1 +2.361353000E3,4.061885274E1 +2.361649000E3,4.873355826E1 +2.361884000E3,4.796347566E1 +2.362174000E3,4.419543811E1 +2.362420000E3,4.412529768E1 +2.362674000E3,4.315515456E1 +2.363006000E3,3.718353950E1 +2.363303000E3,4.131746877E1 +2.363556000E3,3.462830696E1 +2.363825000E3,3.224809166E1 +2.364105000E3,2.946532539E1 +2.364420000E3,4.082560353E1 +2.364671000E3,4.169760242E1 +2.364916000E3,4.728483165E1 +2.365158000E3,4.384961396E1 +2.365493000E3,3.327447630E1 +2.365797000E3,2.406470586E1 +2.366141000E3,2.410271882E1 +2.366422000E3,4.124818432E1 +2.366699000E3,4.300386829E1 +2.366994000E3,4.592409288E1 +2.367239000E3,4.402074721E1 +2.367492000E3,4.331525310E1 +2.367744000E3,4.351543939E1 +2.368045000E3,4.861325913E1 +2.368277000E3,4.345520025E1 +2.368543000E3,5.037549285E1 +2.368790000E3,3.455268589E1 +2.369034000E3,3.454484220E1 +2.369300000E3,3.436570372E1 +2.369544000E3,3.180799867E1 +2.369820000E3,4.460893996E1 +2.370091000E3,5.635981603E1 +2.370383000E3,4.932803438E1 +2.370635000E3,5.123791361E1 +2.370939000E3,4.749913119E1 +2.371193000E3,4.606624254E1 +2.371498000E3,4.453668838E1 +2.371779000E3,4.424564317E1 +2.372081000E3,5.022357768E1 +2.372347000E3,4.983363592E1 +2.372720000E3,4.311987242E1 +2.372969000E3,4.071927446E1 +2.373234000E3,3.624584431E1 +2.373535000E3,3.338407859E1 +2.373777000E3,2.744030282E1 +2.374025000E3,4.017686066E1 +2.374281000E3,4.153799732E1 +2.374537000E3,5.163713220E1 +2.374786000E3,4.970373114E1 +2.375033000E3,4.601563593E1 +2.375284000E3,4.943210146E1 +2.375577000E3,5.208741018E1 +2.375935000E3,4.780129348E1 +2.376167000E3,4.632707744E1 +2.376478000E3,5.008962536E1 +2.376734000E3,4.691729314E1 +2.376987000E3,4.593220796E1 +2.377250000E3,4.703621615E1 +2.377550000E3,4.863501898E1 +2.377838000E3,4.747349412E1 +2.378102000E3,4.430216971E1 +2.378373000E3,5.038477253E1 +2.378648000E3,4.679597376E1 +2.378873000E3,3.998762784E1 +2.379232000E3,4.140472709E1 +2.379480000E3,3.803559367E1 +2.379735000E3,4.292956565E1 +2.379993000E3,3.275484639E1 +2.380260000E3,3.159298587E1 +2.380513000E3,3.066195183E1 +2.380756000E3,4.846258942E1 +2.381012000E3,4.617374426E1 +2.381278000E3,4.338282331E1 +2.381580000E3,2.990070560E1 +2.381878000E3,3.384826320E1 +2.382127000E3,4.352773294E1 +2.382476000E3,3.711143795E1 +2.382756000E3,4.818117865E1 +2.383001000E3,4.694356023E1 +2.383312000E3,4.713242320E1 +2.383556000E3,4.945634369E1 +2.383815000E3,3.710449888E1 +2.384109000E3,4.990714727E1 +2.384350000E3,5.101970483E1 +2.384663000E3,4.290224010E1 +2.384917000E3,3.958873166E1 +2.385203000E3,4.207919898E1 +2.385583000E3,3.937588823E1 +2.385864000E3,3.927490117E1 +2.386122000E3,3.708577985E1 +2.386378000E3,3.104425869E1 +2.386630000E3,2.579918418E1 +2.386935000E3,4.201717352E1 +2.387186000E3,4.469788103E1 +2.387445000E3,3.928301867E1 +2.387699000E3,4.425054811E1 +2.387999000E3,2.901032620E1 +2.388242000E3,2.431535493E1 +2.388542000E3,4.330806788E1 +2.388866000E3,4.587852948E1 +2.389138000E3,5.068663336E1 +2.389420000E3,5.151872270E1 +2.389764000E3,4.501157372E1 +2.390012000E3,4.508008781E1 +2.390288000E3,4.471818734E1 +2.390546000E3,4.453717168E1 +2.390828000E3,3.435610332E1 +2.391113000E3,3.644941891E1 +2.391398000E3,3.741409627E1 +2.391658000E3,4.311052254E1 +2.391963000E3,3.924877335E1 +2.392296000E3,3.956869731E1 +2.392537000E3,3.230149795E1 +2.392786000E3,2.941450360E1 +2.393103000E3,3.366208400E1 +2.393349000E3,2.633153711E1 +2.393653000E3,2.492589605E1 +2.393892000E3,3.518582310E1 +2.394201000E3,3.668564238E1 +2.394454000E3,3.528359554E1 +2.394744000E3,3.673717548E1 +2.395034000E3,2.851979476E1 +2.395378000E3,2.558396774E1 +2.395660000E3,3.919896752E1 +2.395930000E3,3.339597104E1 +2.396187000E3,3.351358057E1 +2.396431000E3,3.743420456E1 +2.396691000E3,4.220523227E1 +2.396991000E3,3.500233403E1 +2.397251000E3,3.475187142E1 +2.397513000E3,3.604068947E1 +2.397821000E3,4.628512725E1 +2.398126000E3,4.463943287E1 +2.398428000E3,4.311458163E1 +2.398781000E3,4.375329409E1 +2.399076000E3,3.749705009E1 +2.399316000E3,4.116349149E1 +2.399615000E3,4.694603167E1 +2.399852000E3,5.327851923E1 +2.400143000E3,5.028800274E1 +2.400380000E3,5.055607260E1 +2.400618000E3,4.184216649E1 +2.400901000E3,4.280576865E1 +2.401144000E3,4.285187037E1 +2.401437000E3,5.414729311E1 +2.401684000E3,5.760726428E1 +2.402102000E3,5.135939721E1 +2.402349000E3,5.519633184E1 +2.402608000E3,5.937895156E1 +2.402853000E3,5.722678447E1 +2.403146000E3,5.316891996E1 +2.403388000E3,5.231876976E1 +2.403684000E3,4.275047946E1 +2.403921000E3,4.497010821E1 +2.404216000E3,5.935375427E1 +2.404454000E3,5.736369919E1 +2.404707000E3,5.877823139E1 +2.404971000E3,6.138635894E1 +2.405219000E3,5.726046839E1 +2.405473000E3,5.213953550E1 +2.405771000E3,4.831408459E1 +2.406024000E3,5.195614478E1 +2.406276000E3,4.885485021E1 +2.406567000E3,4.806131720E1 +2.406866000E3,3.817379603E1 +2.407129000E3,3.496803230E1 +2.407401000E3,4.679161915E1 +2.407625000E3,4.456362030E1 +2.407878000E3,4.499112684E1 +2.408171000E3,4.695848411E1 +2.408491000E3,4.136053284E1 +2.408771000E3,3.435960184E1 +2.409033000E3,2.907775515E1 +2.409287000E3,3.179102298E1 +2.409536000E3,2.535492331E1 +2.409797000E3,2.893863695E1 +2.410015000E3,3.195695462E1 +2.410232000E3,2.883661354E1 +2.410481000E3,4.380812340E1 +2.410735000E3,5.435187737E1 +2.411017000E3,4.390478627E1 +2.411330000E3,4.136550501E1 +2.411572000E3,6.231552653E1 +2.411823000E3,4.988484474E1 +2.412072000E3,4.569499772E1 +2.412339000E3,5.207639469E1 +2.412605000E3,5.314724412E1 +2.412842000E3,5.014855129E1 +2.413111000E3,4.925815950E1 +2.413332000E3,5.545199009E1 +2.413608000E3,4.910878211E1 +2.413873000E3,5.481296501E1 +2.414229000E3,4.620355557E1 +2.414532000E3,4.757632406E1 +2.414792000E3,4.414835702E1 +2.415033000E3,4.178334533E1 +2.415296000E3,3.571558610E1 +2.415577000E3,3.622280285E1 +2.415839000E3,4.187963398E1 +2.416103000E3,4.120303067E1 +2.416426000E3,5.043875316E1 +2.416696000E3,4.738536839E1 +2.417006000E3,4.790698669E1 +2.417250000E3,4.717323409E1 +2.417613000E3,4.889624394E1 +2.417923000E3,4.615999302E1 +2.418209000E3,4.554232436E1 +2.418487000E3,4.963147342E1 +2.418748000E3,4.540077281E1 +2.419058000E3,4.402622058E1 +2.419355000E3,3.991430025E1 +2.419631000E3,5.699106589E1 +2.419880000E3,4.542610605E1 +2.420140000E3,5.871400849E1 +2.420387000E3,5.593691155E1 +2.420634000E3,5.642590944E1 +2.420987000E3,4.942882304E1 +2.421235000E3,5.122637091E1 +2.421504000E3,5.506353313E1 +2.421808000E3,4.974630362E1 +2.422098000E3,4.922446567E1 +2.422401000E3,4.711891494E1 +2.422653000E3,4.935851062E1 +2.422946000E3,5.223840607E1 +2.423180000E3,5.181747333E1 +2.423433000E3,5.106095739E1 +2.423699000E3,4.283067128E1 +2.424023000E3,4.620110870E1 +2.424283000E3,4.813646184E1 +2.424556000E3,4.673905704E1 +2.424833000E3,5.139038068E1 +2.425085000E3,4.187355918E1 +2.425330000E3,4.200690239E1 +2.425641000E3,4.094986905E1 +2.425891000E3,3.869951887E1 +2.426156000E3,4.295178440E1 +2.426411000E3,4.445235603E1 +2.426673000E3,4.180705342E1 +2.426915000E3,4.159918394E1 +2.427275000E3,5.193727105E1 +2.427528000E3,4.985744468E1 +2.427773000E3,5.143594155E1 +2.428021000E3,5.687627643E1 +2.428258000E3,4.984177159E1 +2.428554000E3,4.104898524E1 +2.428794000E3,3.740238657E1 +2.429102000E3,4.424577609E1 +2.429345000E3,5.022623751E1 +2.429627000E3,5.346928374E1 +2.429864000E3,4.448852620E1 +2.430156000E3,3.611387858E1 +2.430475000E3,3.592739777E1 +2.430726000E3,3.269867125E1 +2.431039000E3,4.089980433E1 +2.431331000E3,3.752068977E1 +2.431567000E3,3.972155082E1 +2.431870000E3,4.098289208E1 +2.432107000E3,4.068605974E1 +2.432406000E3,3.978950334E1 +2.432643000E3,3.435438837E1 +2.432933000E3,3.806187937E1 +2.433169000E3,3.613809925E1 +2.433407000E3,5.573542624E1 +2.433734000E3,4.812688919E1 +2.434035000E3,5.332611421E1 +2.434315000E3,5.453475878E1 +2.434557000E3,5.156731049E1 +2.434849000E3,4.452924889E1 +2.435086000E3,4.091217005E1 +2.435380000E3,3.495963916E1 +2.435633000E3,3.994418328E1 +2.435904000E3,5.345258512E1 +2.436200000E3,4.573029424E1 +2.436434000E3,4.666848361E1 +2.436802000E3,4.148612785E1 +2.437044000E3,3.785277445E1 +2.437301000E3,3.823545546E1 +2.437549000E3,3.883632471E1 +2.437839000E3,4.756553033E1 +2.438077000E3,4.282797221E1 +2.438369000E3,5.291874167E1 +2.438606000E3,5.394671897E1 +2.438862000E3,5.490926284E1 +2.439159000E3,5.465277565E1 +2.439395000E3,5.245345229E1 +2.439637000E3,4.823915254E1 +2.440022000E3,5.658050668E1 +2.440281000E3,5.255468157E1 +2.440546000E3,4.365897331E1 +2.440828000E3,4.187636724E1 +2.441125000E3,4.916172461E1 +2.441365000E3,5.038635874E1 +2.441645000E3,5.238005511E1 +2.441868000E3,4.979548238E1 +2.442114000E3,5.164563876E1 +2.442410000E3,4.795862612E1 +2.442694000E3,4.406311297E1 +2.442980000E3,4.461066687E1 +2.443265000E3,3.990213588E1 +2.443525000E3,4.270339676E1 +2.443815000E3,4.671533321E1 +2.444064000E3,4.922681237E1 +2.444311000E3,5.115751882E1 +2.444605000E3,4.659279655E1 +2.444851000E3,4.805254743E1 +2.445152000E3,4.646584218E1 +2.445447000E3,3.924248597E1 +2.445698000E3,3.657018775E1 +2.445976000E3,3.978585816E1 +2.446317000E3,5.134473527E1 +2.446569000E3,4.872028256E1 +2.446851000E3,4.793203365E1 +2.447088000E3,4.917648823E1 +2.447345000E3,4.514648035E1 +2.447599000E3,4.827609085E1 +2.447864000E3,5.009329877E1 +2.448138000E3,4.858127151E1 +2.448430000E3,4.885678900E1 +2.448726000E3,4.038666943E1 +2.448956000E3,3.788824065E1 +2.449214000E3,4.872306097E1 +2.449516000E3,5.112419798E1 +2.449767000E3,4.394357347E1 +2.450028000E3,5.187358067E1 +2.450298000E3,4.764520743E1 +2.450575000E3,5.323515688E1 +2.450844000E3,4.730661272E1 +2.451150000E3,5.022143967E1 +2.451400000E3,4.244080150E1 +2.451697000E3,4.540622562E1 +2.452002000E3,4.987171470E1 +2.452273000E3,4.928771096E1 +2.452519000E3,4.415614577E1 +2.452847000E3,4.529816891E1 +2.453138000E3,3.130480949E1 +2.453407000E3,3.727195618E1 +2.453707000E3,4.218798188E1 +2.453975000E3,3.196426842E1 +2.454240000E3,2.986758668E1 +2.454534000E3,4.365366219E1 +2.454795000E3,4.363233606E1 +2.455054000E3,4.576258560E1 +2.455297000E3,4.600510844E1 +2.455546000E3,5.143992334E1 +2.455816000E3,4.451792491E1 +2.456172000E3,3.834658463E1 +2.456438000E3,4.961865906E1 +2.456716000E3,4.301133302E1 +2.457025000E3,5.185950840E1 +2.457284000E3,4.578127088E1 +2.457582000E3,4.860789001E1 +2.457857000E3,4.548301241E1 +2.458087000E3,5.726595471E1 +2.458343000E3,4.581143143E1 +2.458590000E3,4.593076535E1 +2.458898000E3,4.646845677E1 +2.459143000E3,4.385664195E1 +2.459499000E3,3.921291428E1 +2.459756000E3,4.336490005E1 +2.460079000E3,5.059416731E1 +2.460323000E3,5.383728406E1 +2.460609000E3,4.336002656E1 +2.460894000E3,3.810358455E1 +2.461148000E3,4.341384577E1 +2.461406000E3,4.240002850E1 +2.461668000E3,4.220171306E1 +2.461957000E3,4.165441002E1 +2.462218000E3,4.110791112E1 +2.462543000E3,3.718059239E1 +2.462873000E3,4.490190793E1 +2.463162000E3,4.449127269E1 +2.463461000E3,5.110192526E1 +2.463709000E3,4.670759724E1 +2.464024000E3,4.554197086E1 +2.464345000E3,4.295638115E1 +2.464598000E3,4.260186095E1 +2.464844000E3,3.838281454E1 +2.465094000E3,4.864552318E1 +2.465348000E3,4.722694913E1 +2.465597000E3,5.723123112E1 +2.465970000E3,5.678247819E1 +2.466226000E3,5.304857482E1 +2.466490000E3,5.799491543E1 +2.466745000E3,5.566332539E1 +2.467000000E3,5.532803606E1 +2.467301000E3,5.480406224E1 +2.467518000E3,5.281426808E1 +2.467773000E3,5.319750336E1 +2.468030000E3,4.504180471E1 +2.468309000E3,4.011552860E1 +2.468536000E3,3.286668959E1 +2.468782000E3,5.187437917E1 +2.469159000E3,5.342027818E1 +2.469405000E3,4.655027014E1 +2.469685000E3,4.875434900E1 +2.469968000E3,4.400777727E1 +2.470228000E3,4.944370484E1 +2.470524000E3,4.819898526E1 +2.470826000E3,4.906267157E1 +2.471101000E3,4.559683511E1 +2.471407000E3,5.066052597E1 +2.471662000E3,5.052511938E1 +2.471933000E3,4.854316053E1 +2.472243000E3,4.720397127E1 +2.472513000E3,4.539713693E1 +2.472765000E3,4.504800702E1 +2.473077000E3,4.756996091E1 +2.473381000E3,4.502772911E1 +2.473668000E3,4.844141365E1 +2.473909000E3,4.718772198E1 +2.474176000E3,5.036014826E1 +2.474415000E3,4.734822430E1 +2.474659000E3,4.506554867E1 +2.474941000E3,4.590585801E1 +2.475227000E3,4.808550728E1 +2.475549000E3,4.744751902E1 +2.475816000E3,5.139502060E1 +2.476110000E3,4.565542501E1 +2.476367000E3,4.502651441E1 +2.476614000E3,4.529198411E1 +2.476876000E3,4.841642572E1 +2.477138000E3,4.904966766E1 +2.477430000E3,5.061185879E1 +2.477703000E3,4.805167318E1 +2.477973000E3,4.840268940E1 +2.478233000E3,4.609690512E1 +2.478491000E3,5.080806253E1 +2.478854000E3,4.929079330E1 +2.479112000E3,4.887431247E1 +2.479382000E3,4.582116343E1 +2.479677000E3,4.614295426E1 +2.479939000E3,5.004731017E1 +2.480247000E3,5.118895049E1 +2.480496000E3,4.750144805E1 +2.480785000E3,4.691637905E1 +2.481084000E3,4.575243018E1 +2.481328000E3,4.498034363E1 +2.481622000E3,5.049144453E1 +2.481951000E3,4.811617152E1 +2.482214000E3,4.600387593E1 +2.482494000E3,5.163944801E1 +2.482753000E3,4.933311419E1 +2.482991000E3,4.946534766E1 +2.483244000E3,4.580757204E1 +2.483487000E3,4.797573247E1 +2.483734000E3,4.560844100E1 +2.483990000E3,5.039329574E1 +2.484313000E3,5.052905321E1 +2.484577000E3,5.131938081E1 +2.484833000E3,4.901245069E1 +2.485113000E3,5.233648083E1 +2.485461000E3,5.215489758E1 +2.485749000E3,5.451606287E1 +2.486018000E3,5.043201098E1 +2.486334000E3,5.091085093E1 +2.486650000E3,4.972266732E1 +2.486916000E3,4.846864702E1 +2.487167000E3,4.843730663E1 +2.487412000E3,5.285205631E1 +2.487677000E3,5.695937588E1 +2.487965000E3,5.067248408E1 +2.488216000E3,4.955689254E1 +2.488580000E3,4.789771891E1 +2.488828000E3,4.640186686E1 +2.489150000E3,4.956289338E1 +2.489428000E3,4.916705799E1 +2.489718000E3,4.250319869E1 +2.489959000E3,4.211788948E1 +2.490259000E3,4.711467977E1 +2.490508000E3,5.336087879E1 +2.490805000E3,5.163346506E1 +2.491066000E3,5.303328317E1 +2.491377000E3,5.018594076E1 +2.491684000E3,4.569780009E1 +2.492029000E3,4.677168871E1 +2.492273000E3,4.586755987E1 +2.492522000E3,5.020047651E1 +2.492768000E3,4.585538278E1 +2.493006000E3,5.027464230E1 +2.493315000E3,4.719632652E1 +2.493608000E3,4.892998103E1 +2.493874000E3,4.659859577E1 +2.494131000E3,4.485377967E1 +2.494387000E3,4.661063763E1 +2.494635000E3,4.873112034E1 +2.494904000E3,5.011233058E1 +2.495259000E3,4.996207620E1 +2.495523000E3,5.026371938E1 +2.495789000E3,4.897334151E1 +2.496086000E3,4.919412247E1 +2.496330000E3,4.448238049E1 +2.496598000E3,5.779881243E1 +2.496845000E3,5.068443192E1 +2.497079000E3,5.452206946E1 +2.497328000E3,6.091811093E1 +2.497574000E3,5.545025588E1 +2.497819000E3,5.118451852E1 +2.498124000E3,5.647063434E1 +2.498436000E3,5.942897676E1 +2.498681000E3,6.063927987E1 +2.498932000E3,5.256584857E1 +2.499203000E3,5.942844343E1 +2.499465000E3,5.268198933E1 +2.499726000E3,5.561310022E1 +2.499989000E3,5.551348586E1 +2.500270000E3,5.728700965E1 +2.500550000E3,5.848024533E1 +2.500856000E3,5.545551244E1 +2.501156000E3,7.074712648E1 +2.501405000E3,6.649397556E1 +2.501727000E3,6.577106108E1 +2.501964000E3,5.791155905E1 +2.502223000E3,6.571272960E1 +2.502476000E3,5.223691777E1 +2.502731000E3,5.099379006E1 +2.502989000E3,4.996024440E1 +2.503265000E3,4.587573023E1 +2.503515000E3,6.660646739E1 +2.503792000E3,5.426812996E1 +2.504090000E3,4.221263073E1 +2.504348000E3,3.961359220E1 +2.504607000E3,3.317448387E1 +2.504957000E3,2.765634596E1 +2.505202000E3,5.260508289E1 +2.505444000E3,4.970766119E1 +2.505723000E3,5.961421356E1 +2.506010000E3,5.761735716E1 +2.506316000E3,4.386011183E1 +2.506629000E3,3.297646158E1 +2.506928000E3,3.461351567E1 +2.507171000E3,3.422494413E1 +2.507415000E3,3.898815557E1 +2.507661000E3,3.916714623E1 +2.507958000E3,4.409544564E1 +2.508199000E3,4.040812578E1 +2.508495000E3,4.100804729E1 +2.508767000E3,4.155083379E1 +2.509073000E3,4.256659126E1 +2.509346000E3,4.665111645E1 +2.509615000E3,4.785704834E1 +2.509926000E3,4.957995318E1 +2.510246000E3,5.281308228E1 +2.510533000E3,5.716195403E1 +2.510847000E3,5.384222007E1 +2.511087000E3,4.682850643E1 +2.511483000E3,5.585229854E1 +2.511769000E3,5.797880255E1 +2.512061000E3,5.008051045E1 +2.512305000E3,4.616221083E1 +2.512545000E3,5.837834308E1 +2.512782000E3,4.588894556E1 +2.513082000E3,5.827978204E1 +2.513321000E3,5.321307958E1 +2.513625000E3,5.419914666E1 +2.513860000E3,4.249936315E1 +2.514160000E3,5.093700871E1 +2.514505000E3,4.733309734E1 +2.514807000E3,5.739188753E1 +2.515049000E3,5.684870925E1 +2.515326000E3,5.429714525E1 +2.515551000E3,5.304528611E1 +2.515847000E3,6.048302750E1 +2.516097000E3,5.298092655E1 +2.516397000E3,5.664346713E1 +2.516634000E3,5.062362510E1 +2.516910000E3,5.059011404E1 +2.517165000E3,5.074931344E1 +2.517424000E3,5.193937267E1 +2.517672000E3,4.773080825E1 +2.517933000E3,4.886471101E1 +2.518191000E3,4.258084657E1 +2.518440000E3,4.144243799E1 +2.518697000E3,3.266068365E1 +2.518962000E3,3.662092465E1 +2.519211000E3,4.002326553E1 +2.519469000E3,5.193824268E1 +2.519821000E3,5.548381163E1 +2.520087000E3,5.245445808E1 +2.520336000E3,4.447536752E1 +2.520718000E3,5.931091731E1 +2.521010000E3,5.514928156E1 +2.521305000E3,5.194242569E1 +2.521541000E3,5.632439964E1 +2.521781000E3,4.768714929E1 +2.522074000E3,3.967116686E1 +2.522306000E3,3.457523914E1 +2.522554000E3,3.414939493E1 +2.522808000E3,3.034285017E1 +2.523103000E3,3.725639399E1 +2.523347000E3,5.824523011E1 +2.523645000E3,5.697741808E1 +2.524002000E3,5.995361389E1 +2.524244000E3,5.516819042E1 +2.524491000E3,5.520201782E1 +2.524765000E3,4.576677797E1 +2.524988000E3,5.785527848E1 +2.525299000E3,5.093237528E1 +2.525544000E3,4.090627494E1 +2.525822000E3,3.111750175E1 +2.526056000E3,2.764971736E1 +2.526311000E3,2.852524033E1 +2.526617000E3,3.508264660E1 +2.526905000E3,5.067917717E1 +2.527241000E3,4.646824007E1 +2.527487000E3,3.686495987E1 +2.527738000E3,3.822220480E1 +2.527988000E3,3.764348220E1 +2.528232000E3,4.278450517E1 +2.528563000E3,4.881983602E1 +2.528870000E3,4.048435148E1 +2.529125000E3,4.047282835E1 +2.529398000E3,4.602715630E1 +2.529632000E3,4.358719476E1 +2.529925000E3,4.185499728E1 +2.530224000E3,4.428160693E1 +2.530451000E3,5.370094630E1 +2.530771000E3,4.662369716E1 +2.531057000E3,4.486368653E1 +2.531322000E3,3.985753269E1 +2.531579000E3,3.868983993E1 +2.531842000E3,4.397673982E1 +2.532129000E3,4.465178920E1 +2.532379000E3,4.071629694E1 +2.532681000E3,3.700154265E1 +2.532925000E3,3.709745900E1 +2.533169000E3,3.856350220E1 +2.533454000E3,3.780017804E1 +2.533739000E3,4.079153270E1 +2.534053000E3,3.467337947E1 +2.534304000E3,3.872357849E1 +2.534571000E3,4.188092371E1 +2.534878000E3,4.226520735E1 +2.535180000E3,4.433351029E1 +2.535433000E3,4.196124368E1 +2.535679000E3,4.159710638E1 +2.535934000E3,4.131920574E1 +2.536230000E3,4.013333591E1 +2.536496000E3,3.861252617E1 +2.536812000E3,3.205810696E1 +2.537071000E3,3.900017908E1 +2.537321000E3,3.720890888E1 +2.537589000E3,3.571752088E1 +2.537899000E3,3.466875388E1 +2.538158000E3,3.490809444E1 +2.538414000E3,2.846246396E1 +2.538721000E3,3.471466025E1 +2.539000000E3,3.262267006E1 +2.539250000E3,2.900340615E1 +2.539526000E3,2.962734770E1 +2.539843000E3,4.051335289E1 +2.540219000E3,3.732414883E1 +2.540478000E3,3.212776280E1 +2.540731000E3,3.980002135E1 +2.541002000E3,4.402529692E1 +2.541305000E3,3.531142487E1 +2.541570000E3,4.157255463E1 +2.541892000E3,4.121686373E1 +2.542138000E3,3.512055425E1 +2.542435000E3,3.058422839E1 +2.542704000E3,3.860796470E1 +2.542951000E3,4.158955283E1 +2.543254000E3,4.126835549E1 +2.543598000E3,4.557459954E1 +2.543842000E3,4.195620726E1 +2.544088000E3,4.759905541E1 +2.544347000E3,4.089593512E1 +2.544592000E3,4.224934090E1 +2.544840000E3,3.548720999E1 +2.545141000E3,4.189266277E1 +2.545422000E3,4.058854606E1 +2.545652000E3,3.761551365E1 +2.545897000E3,3.643024250E1 +2.546173000E3,3.544845567E1 +2.546439000E3,3.816851754E1 +2.546779000E3,3.801212128E1 +2.547110000E3,3.288266257E1 +2.547379000E3,4.063952307E1 +2.547641000E3,4.765684387E1 +2.547893000E3,4.402640436E1 +2.548143000E3,4.172886183E1 +2.548441000E3,3.808222191E1 +2.548685000E3,3.637035664E1 +2.548962000E3,3.879815953E1 +2.549230000E3,5.433785228E1 +2.549540000E3,5.428002325E1 +2.549852000E3,5.430864003E1 +2.550121000E3,5.376325395E1 +2.550389000E3,5.250586376E1 +2.550641000E3,5.329413218E1 +2.550946000E3,3.817927317E1 +2.551218000E3,3.779289824E1 +2.551493000E3,4.904361964E1 +2.551759000E3,5.500168111E1 +2.552006000E3,4.745774118E1 +2.552261000E3,5.304049624E1 +2.552515000E3,4.933664563E1 +2.552779000E3,3.482983031E1 +2.553043000E3,3.914561037E1 +2.553378000E3,3.318943686E1 +2.553659000E3,2.674748735E1 +2.553917000E3,2.500565902E1 +2.554234000E3,3.331261434E1 +2.554489000E3,3.380079275E1 +2.554753000E3,3.632095841E1 +2.554996000E3,3.606888467E1 +2.555239000E3,4.759559903E1 +2.555541000E3,5.588542149E1 +2.555837000E3,5.768171500E1 +2.556076000E3,5.837962370E1 +2.556358000E3,5.761486260E1 +2.556647000E3,5.408185929E1 +2.556914000E3,5.624815374E1 +2.557248000E3,4.727853091E1 +2.557554000E3,3.999550071E1 +2.557822000E3,4.090986684E1 +2.558062000E3,3.411171601E1 +2.558302000E3,3.042998918E1 +2.558550000E3,3.392526215E1 +2.558807000E3,3.801243567E1 +2.559082000E3,4.390440101E1 +2.559357000E3,4.215163378E1 +2.559616000E3,4.616573562E1 +2.559972000E3,4.170066459E1 +2.560245000E3,2.972551911E1 +2.560517000E3,3.987643023E1 +2.560765000E3,4.046237199E1 +2.561011000E3,4.268708813E1 +2.561258000E3,4.450541644E1 +2.561531000E3,4.611922799E1 +2.561775000E3,4.492719317E1 +2.562027000E3,4.345851098E1 +2.562302000E3,5.022295857E1 +2.562533000E3,4.986016935E1 +2.562786000E3,3.932672790E1 +2.563211000E3,3.777119812E1 +2.563479000E3,4.577537823E1 +2.563731000E3,5.443473776E1 +2.563977000E3,5.947837126E1 +2.564252000E3,5.014881480E1 +2.564539000E3,4.884415531E1 +2.564781000E3,4.451698294E1 +2.565088000E3,3.693106642E1 +2.565361000E3,3.096881298E1 +2.565624000E3,2.635486448E1 +2.565885000E3,2.734213385E1 +2.566246000E3,3.979362654E1 +2.566493000E3,3.382738554E1 +2.566797000E3,3.469438245E1 +2.567097000E3,4.097528595E1 +2.567346000E3,4.285297734E1 +2.567644000E3,4.930003444E1 +2.567891000E3,4.540271843E1 +2.568170000E3,3.109775861E1 +2.568407000E3,2.738661195E1 +2.568701000E3,3.024785153E1 +2.568952000E3,3.235217301E1 +2.569220000E3,3.196941264E1 +2.569567000E3,4.299833718E1 +2.569862000E3,4.496000509E1 +2.570178000E3,4.562225815E1 +2.570442000E3,4.437451260E1 +2.570707000E3,3.949227756E1 +2.570950000E3,2.951847370E1 +2.571202000E3,3.800151296E1 +2.571472000E3,4.650517590E1 +2.571732000E3,3.967561664E1 +2.571975000E3,3.149456620E1 +2.572246000E3,5.234083710E1 +2.572527000E3,4.544839619E1 +2.572859000E3,4.436174777E1 +2.573168000E3,4.369290756E1 +2.573429000E3,4.420543128E1 +2.573728000E3,4.389854646E1 +2.573968000E3,4.580346210E1 +2.574268000E3,4.881141748E1 +2.574509000E3,4.708023256E1 +2.574802000E3,3.388696242E1 +2.575045000E3,2.922489212E1 +2.575339000E3,3.941924125E1 +2.575597000E3,4.733040375E1 +2.575906000E3,4.790376430E1 +2.576245000E3,4.328559785E1 +2.576517000E3,4.720947277E1 +2.576791000E3,4.076260480E1 +2.577092000E3,3.249905806E1 +2.577324000E3,3.886850876E1 +2.577566000E3,3.577483806E1 +2.577814000E3,4.105002685E1 +2.578080000E3,3.881208350E1 +2.578375000E3,5.720708534E1 +2.578624000E3,4.933084675E1 +2.578932000E3,5.989261963E1 +2.579254000E3,5.193127116E1 +2.579506000E3,4.843920497E1 +2.579747000E3,4.570821188E1 +2.580001000E3,4.446748829E1 +2.580244000E3,4.006228376E1 +2.580497000E3,2.933332862E1 +2.580745000E3,4.525678604E1 +2.580989000E3,4.717489692E1 +2.581288000E3,5.239736286E1 +2.581587000E3,5.268105849E1 +2.581851000E3,4.960616241E1 +2.582112000E3,4.637217789E1 +2.582361000E3,4.676379781E1 +2.582583000E3,4.083594902E1 +2.582903000E3,2.696140701E1 +2.583176000E3,2.668057590E1 +2.583429000E3,2.900886287E1 +2.583692000E3,2.732690452E1 +2.583951000E3,3.475308428E1 +2.584205000E3,4.782860484E1 +2.584480000E3,4.928978168E1 +2.584742000E3,3.697304160E1 +2.585017000E3,3.390321432E1 +2.585248000E3,4.818778278E1 +2.585552000E3,5.175969441E1 +2.585851000E3,4.752724055E1 +2.586108000E3,5.047732228E1 +2.586408000E3,5.003267867E1 +2.586651000E3,4.995698879E1 +2.586934000E3,4.985539117E1 +2.587202000E3,4.558719065E1 +2.587455000E3,4.973387236E1 +2.587702000E3,5.190737686E1 +2.587964000E3,4.955516560E1 +2.588211000E3,5.039526507E1 +2.588461000E3,3.897042435E1 +2.588748000E3,2.919124678E1 +2.589063000E3,3.061867322E1 +2.589398000E3,4.010104895E1 +2.589690000E3,3.640442215E1 +2.589998000E3,4.479952304E1 +2.590261000E3,4.757967128E1 +2.590558000E3,4.812333533E1 +2.590802000E3,4.603482331E1 +2.591083000E3,2.960043464E1 +2.591326000E3,3.684354753E1 +2.591591000E3,4.359182452E1 +2.591849000E3,4.788602237E1 +2.592228000E3,4.468031543E1 +2.592527000E3,3.894688899E1 +2.592778000E3,2.800490026E1 +2.593035000E3,4.310888325E1 +2.593333000E3,4.628339380E1 +2.593602000E3,4.440124594E1 +2.593883000E3,4.123163794E1 +2.594160000E3,3.127645239E1 +2.594429000E3,3.071812965E1 +2.594749000E3,4.618618296E1 +2.595070000E3,5.248181749E1 +2.595312000E3,4.786265879E1 +2.595668000E3,3.990233287E1 +2.595973000E3,4.173583037E1 +2.596256000E3,3.709278400E1 +2.596497000E3,3.229385861E1 +2.596813000E3,4.380573021E1 +2.597084000E3,4.783628282E1 +2.597325000E3,5.024593568E1 +2.597578000E3,5.102379549E1 +2.597828000E3,4.760481411E1 +2.598089000E3,3.822780835E1 +2.598387000E3,3.417342767E1 +2.598736000E3,2.863579065E1 +2.598981000E3,2.886228233E1 +2.599228000E3,2.855965247E1 +2.599493000E3,3.083396855E1 +2.599764000E3,3.581659374E1 +2.600032000E3,4.317647632E1 +2.600330000E3,4.853625621E1 +2.600623000E3,5.102467342E1 +2.600867000E3,4.877836926E1 +2.601112000E3,4.705612686E1 +2.601365000E3,4.889085742E1 +2.601612000E3,4.654488136E1 +2.601956000E3,4.055024190E1 +2.602220000E3,3.990851266E1 +2.602547000E3,3.648352551E1 +2.602794000E3,5.324982942E1 +2.603078000E3,5.268965363E1 +2.603338000E3,4.851189142E1 +2.603637000E3,5.135006473E1 +2.603925000E3,4.939301404E1 +2.604238000E3,5.337101389E1 +2.604488000E3,5.022765286E1 +2.604734000E3,5.253186666E1 +2.605064000E3,4.127453431E1 +2.605321000E3,4.114070867E1 +2.605572000E3,4.042282231E1 +2.605820000E3,4.255774466E1 +2.606073000E3,4.746726668E1 +2.606319000E3,4.761848671E1 +2.606565000E3,4.983628061E1 +2.606849000E3,3.046517787E1 +2.607082000E3,3.832211131E1 +2.607339000E3,4.741131966E1 +2.607609000E3,4.453335589E1 +2.607874000E3,3.545592153E1 +2.608197000E3,4.672891376E1 +2.608451000E3,4.755881287E1 +2.608706000E3,4.827652641E1 +2.608952000E3,4.727153141E1 +2.609226000E3,4.731450942E1 +2.609537000E3,3.981385402E1 +2.609784000E3,3.194698732E1 +2.610041000E3,3.314164027E1 +2.610283000E3,2.819786732E1 +2.610546000E3,2.664547785E1 +2.610857000E3,2.913544778E1 +2.611125000E3,3.961651759E1 +2.611432000E3,3.852777426E1 +2.611666000E3,3.205673146E1 +2.611951000E3,4.233182010E1 +2.612229000E3,3.378509898E1 +2.612454000E3,4.071755552E1 +2.612730000E3,5.018278065E1 +2.613050000E3,4.100034395E1 +2.613359000E3,3.892108016E1 +2.613628000E3,5.091321799E1 +2.613871000E3,4.336916838E1 +2.614108000E3,3.960788811E1 +2.614408000E3,3.948227358E1 +2.614722000E3,3.631863435E1 +2.614975000E3,4.057042340E1 +2.615256000E3,4.414132009E1 +2.615486000E3,4.180934435E1 +2.615750000E3,4.153999936E1 +2.615997000E3,3.521796466E1 +2.616260000E3,5.443854687E1 +2.616548000E3,5.408118563E1 +2.616842000E3,4.951275264E1 +2.617090000E3,5.182722031E1 +2.617344000E3,4.327522742E1 +2.617643000E3,5.375122422E1 +2.617975000E3,5.216635190E1 +2.618233000E3,4.126006713E1 +2.618497000E3,4.980260599E1 +2.618804000E3,4.655838197E1 +2.619044000E3,4.977945459E1 +2.619327000E3,4.875559075E1 +2.619562000E3,4.983226039E1 +2.619834000E3,4.741689273E1 +2.620075000E3,4.923498746E1 +2.620352000E3,4.923432072E1 +2.620664000E3,4.040876723E1 +2.620916000E3,3.889825840E1 +2.621142000E3,5.245081579E1 +2.621448000E3,4.684934794E1 +2.621687000E3,4.583906640E1 +2.621992000E3,4.366517623E1 +2.622230000E3,3.373873872E1 +2.622475000E3,3.701694694E1 +2.622750000E3,3.544967426E1 +2.623008000E3,3.363206222E1 +2.623285000E3,4.009589135E1 +2.623562000E3,4.408709562E1 +2.623825000E3,4.800133533E1 +2.624131000E3,4.855432282E1 +2.624414000E3,4.808187444E1 +2.624671000E3,5.252566194E1 +2.624932000E3,4.890333861E1 +2.625183000E3,4.370428781E1 +2.625430000E3,3.668118979E1 +2.625747000E3,4.353955331E1 +2.626003000E3,4.224026412E1 +2.626267000E3,4.311785789E1 +2.626514000E3,3.517806855E1 +2.626763000E3,3.981966751E1 +2.627025000E3,3.444602265E1 +2.627334000E3,3.341390757E1 +2.627660000E3,3.926570124E1 +2.627920000E3,4.341089288E1 +2.628216000E3,4.081134870E1 +2.628467000E3,3.912400300E1 +2.628730000E3,3.657553946E1 +2.629000000E3,3.072838888E1 +2.629284000E3,2.929703023E1 +2.629549000E3,3.378014550E1 +2.629844000E3,4.760306323E1 +2.630080000E3,4.024322042E1 +2.630373000E3,3.235913140E1 +2.630611000E3,3.920509877E1 +2.630919000E3,5.103841717E1 +2.631222000E3,5.813980805E1 +2.631514000E3,5.190256812E1 +2.631753000E3,4.653294376E1 +2.632054000E3,4.782140153E1 +2.632295000E3,4.977458693E1 +2.632592000E3,5.371197571E1 +2.632828000E3,5.056512655E1 +2.633140000E3,5.325824914E1 +2.633383000E3,4.973751947E1 +2.633632000E3,4.853342473E1 +2.633950000E3,3.905011010E1 +2.634254000E3,3.751700759E1 +2.634549000E3,5.292771607E1 +2.634786000E3,5.557450981E1 +2.635082000E3,4.974692283E1 +2.635319000E3,5.393938197E1 +2.635611000E3,4.675981835E1 +2.635848000E3,4.299614910E1 +2.636145000E3,3.756646750E1 +2.636395000E3,3.824353200E1 +2.636648000E3,3.045317917E1 +2.636942000E3,3.257931849E1 +2.637299000E3,3.010616025E1 +2.637599000E3,4.995329379E1 +2.637834000E3,4.824584689E1 +2.638071000E3,5.059212149E1 +2.638363000E3,5.330633429E1 +2.638612000E3,5.343612136E1 +2.638897000E3,4.755550111E1 +2.639122000E3,4.119881812E1 +2.639362000E3,3.902726568E1 +2.639659000E3,4.451944661E1 +2.639896000E3,4.587471035E1 +2.640164000E3,4.115502802E1 +2.640409000E3,4.505311495E1 +2.640656000E3,4.913968689E1 +2.640951000E3,5.110923180E1 +2.641208000E3,4.281604120E1 +2.641505000E3,4.825854961E1 +2.641748000E3,4.861588211E1 +2.642059000E3,4.450542116E1 +2.642304000E3,4.274821036E1 +2.642556000E3,3.503446158E1 +2.642862000E3,4.080900103E1 +2.643164000E3,4.152079562E1 +2.643527000E3,3.935881933E1 +2.643833000E3,3.760570593E1 +2.644082000E3,3.959144469E1 +2.644327000E3,4.007918652E1 +2.644573000E3,4.288120719E1 +2.644814000E3,4.793099478E1 +2.645114000E3,4.424069452E1 +2.645391000E3,4.078427844E1 +2.645635000E3,3.902795236E1 +2.645871000E3,4.393773718E1 +2.646111000E3,4.085627764E1 +2.646355000E3,4.393316509E1 +2.646690000E3,4.428892908E1 +2.646958000E3,4.601464396E1 +2.647235000E3,4.300358696E1 +2.647474000E3,4.083829680E1 +2.647758000E3,5.406220971E1 +2.648003000E3,4.253716581E1 +2.648273000E3,4.506680000E1 +2.648514000E3,3.500046728E1 +2.648758000E3,3.537281462E1 +2.649004000E3,5.013819891E1 +2.649251000E3,5.388943830E1 +2.649556000E3,5.656370208E1 +2.649891000E3,5.696480404E1 +2.650216000E3,4.675400561E1 +2.650515000E3,4.179549274E1 +2.650777000E3,4.536624285E1 +2.651084000E3,4.297370528E1 +2.651336000E3,4.376785410E1 +2.651635000E3,3.354560746E1 +2.651881000E3,2.537939319E1 +2.652180000E3,3.168783420E1 +2.652481000E3,4.898553010E1 +2.652737000E3,5.438993966E1 +2.652992000E3,4.963834041E1 +2.653252000E3,4.227369117E1 +2.653502000E3,4.301436765E1 +2.653812000E3,3.649724292E1 +2.654061000E3,4.086211966E1 +2.654320000E3,3.223281741E1 +2.654605000E3,2.807672508E1 +2.654836000E3,2.764825285E1 +2.655100000E3,4.598866982E1 +2.655350000E3,4.383741939E1 +2.655590000E3,4.883555528E1 +2.655837000E3,4.815765811E1 +2.656131000E3,5.047261312E1 +2.656369000E3,5.124829846E1 +2.656626000E3,3.956134092E1 +2.656925000E3,3.503286763E1 +2.657200000E3,3.224209198E1 +2.657447000E3,4.294806319E1 +2.657761000E3,4.898454413E1 +2.658011000E3,5.320780356E1 +2.658286000E3,5.345186604E1 +2.658542000E3,4.849291145E1 +2.658789000E3,5.098648363E1 +2.659034000E3,4.892931203E1 +2.659289000E3,4.580698225E1 +2.659530000E3,3.709695762E1 +2.659834000E3,3.457925551E1 +2.660081000E3,3.855219813E1 +2.660383000E3,3.845534481E1 +2.660628000E3,4.619372518E1 +2.660921000E3,4.848307744E1 +2.661167000E3,4.790880967E1 +2.661464000E3,4.667520128E1 +2.661710000E3,4.098851532E1 +2.662006000E3,4.035468673E1 +2.662245000E3,3.753010710E1 +2.662592000E3,4.792080660E1 +2.662862000E3,4.709835917E1 +2.663123000E3,3.501409506E1 +2.663374000E3,3.240664296E1 +2.663631000E3,4.326696615E1 +2.663874000E3,4.411177933E1 +2.664133000E3,3.936378145E1 +2.664382000E3,3.443614227E1 +2.664648000E3,3.761654306E1 +2.664944000E3,5.164457484E1 +2.665198000E3,2.810669920E1 +2.665512000E3,2.931307063E1 +2.665876000E3,3.108643425E1 +2.666131000E3,3.278101889E1 +2.666439000E3,4.277860150E1 +2.666693000E3,4.213131936E1 +2.667002000E3,3.935849781E1 +2.667259000E3,4.137879880E1 +2.667575000E3,3.790565018E1 +2.667827000E3,3.845274836E1 +2.668153000E3,3.676763670E1 +2.668452000E3,3.751975183E1 +2.668696000E3,3.224848897E1 +2.669023000E3,3.611134142E1 +2.669316000E3,4.467495655E1 +2.669607000E3,4.735906080E1 +2.669885000E3,5.159453510E1 +2.670167000E3,5.321308782E1 +2.670485000E3,5.282242631E1 +2.670747000E3,5.127719277E1 +2.670997000E3,4.902251972E1 +2.671243000E3,4.450532678E1 +2.671540000E3,3.864078148E1 +2.671788000E3,3.720620343E1 +2.672044000E3,4.496142790E1 +2.672357000E3,4.705640535E1 +2.672617000E3,3.890316941E1 +2.672864000E3,4.027639889E1 +2.673159000E3,4.202335245E1 +2.673421000E3,4.285452583E1 +2.673720000E3,3.626679930E1 +2.673964000E3,4.670395357E1 +2.674210000E3,4.915586670E1 +2.674514000E3,5.353785994E1 +2.674811000E3,5.414016767E1 +2.675048000E3,5.591079353E1 +2.675364000E3,3.844031623E1 +2.675661000E3,3.124520008E1 +2.675946000E3,3.566755596E1 +2.676189000E3,3.490423263E1 +2.676498000E3,5.070292882E1 +2.676799000E3,5.356134163E1 +2.677047000E3,5.161634227E1 +2.677305000E3,5.185439004E1 +2.677581000E3,5.315585532E1 +2.677832000E3,4.418578879E1 +2.678087000E3,3.972693415E1 +2.678335000E3,4.338465258E1 +2.678650000E3,5.168404535E1 +2.678934000E3,4.984483773E1 +2.679249000E3,4.977401184E1 +2.679507000E3,5.044345616E1 +2.679823000E3,4.232585634E1 +2.680128000E3,3.026551109E1 +2.680400000E3,3.009656886E1 +2.680660000E3,4.894119824E1 +2.680913000E3,4.712312643E1 +2.681208000E3,4.239602863E1 +2.681477000E3,4.875338950E1 +2.681768000E3,4.887945421E1 +2.682128000E3,4.379352407E1 +2.682394000E3,4.073494394E1 +2.682637000E3,3.685872977E1 +2.682895000E3,2.883047793E1 +2.683163000E3,3.769147996E1 +2.683455000E3,3.713975885E1 +2.683749000E3,4.855681627E1 +2.683994000E3,4.936430656E1 +2.684290000E3,5.303947120E1 +2.684540000E3,5.031092673E1 +2.684833000E3,4.783130186E1 +2.685073000E3,4.898734587E1 +2.685348000E3,4.686166956E1 +2.685598000E3,4.244245178E1 +2.685917000E3,3.872119900E1 +2.686161000E3,4.891396583E1 +2.686434000E3,4.491629365E1 +2.686687000E3,3.588391777E1 +2.686952000E3,3.156965948E1 +2.687206000E3,3.184725563E1 +2.687480000E3,3.153561496E1 +2.687733000E3,3.669659228E1 +2.688049000E3,3.507922771E1 +2.688340000E3,3.251056517E1 +2.688645000E3,4.079174670E1 +2.688915000E3,4.837277005E1 +2.689163000E3,4.669136560E1 +2.689426000E3,3.659115086E1 +2.689751000E3,4.814125321E1 +2.689994000E3,4.721335081E1 +2.690235000E3,5.119773767E1 +2.690471000E3,4.584232122E1 +2.690738000E3,4.687969307E1 +2.691006000E3,4.116197132E1 +2.691312000E3,2.850019915E1 +2.691659000E3,3.175399572E1 +2.691948000E3,3.215115185E1 +2.692197000E3,2.655209633E1 +2.692466000E3,3.136629444E1 +2.692727000E3,2.928762690E1 +2.692976000E3,2.688909217E1 +2.693281000E3,3.350197248E1 +2.693518000E3,3.760267236E1 +2.693776000E3,3.194141055E1 +2.694032000E3,3.113878807E1 +2.694299000E3,2.830606211E1 +2.694602000E3,2.632227285E1 +2.694941000E3,2.736240000E1 +2.695184000E3,3.956118458E1 +2.695488000E3,4.069974415E1 +2.695732000E3,4.498590768E1 +2.696030000E3,3.370199172E1 +2.696300000E3,3.284857688E1 +2.696535000E3,2.919082343E1 +2.696815000E3,3.146626789E1 +2.697056000E3,2.968971947E1 +2.697354000E3,4.116455896E1 +2.697640000E3,5.055341773E1 +2.697888000E3,5.163434474E1 +2.698155000E3,4.792936353E1 +2.698456000E3,4.111753823E1 +2.698732000E3,4.594070701E1 +2.699031000E3,3.204472070E1 +2.699273000E3,2.836668859E1 +2.699578000E3,2.624009297E1 +2.699855000E3,2.719538340E1 +2.700110000E3,2.868563476E1 +2.700399000E3,2.757039916E1 +2.700662000E3,2.546630310E1 +2.700960000E3,2.981844134E1 +2.701310000E3,3.063471239E1 +2.701629000E3,4.014173680E1 +2.701894000E3,3.281157953E1 +2.702206000E3,4.268438101E1 +2.702448000E3,4.272045970E1 +2.702710000E3,4.782744516E1 +2.702984000E3,4.067538265E1 +2.703255000E3,3.821763448E1 +2.703566000E3,3.373237040E1 +2.703865000E3,2.762261654E1 +2.704108000E3,3.058182972E1 +2.704366000E3,4.157303269E1 +2.704695000E3,4.128988216E1 +2.705002000E3,3.725674585E1 +2.705260000E3,3.318881716E1 +2.705544000E3,3.512644750E1 +2.705774000E3,3.012622541E1 +2.706039000E3,3.307868989E1 +2.706297000E3,3.089854998E1 +2.706599000E3,2.870455364E1 +2.706901000E3,2.573473536E1 +2.707155000E3,2.708285982E1 +2.707419000E3,2.641018696E1 +2.707644000E3,2.532685142E1 +2.707945000E3,2.741320006E1 +2.708188000E3,2.764718970E1 +2.708460000E3,3.745935532E1 +2.708711000E3,4.292241509E1 +2.708955000E3,4.431523077E1 +2.709266000E3,3.812245251E1 +2.709534000E3,3.199637282E1 +2.709802000E3,3.030937111E1 +2.710049000E3,3.172341474E1 +2.710303000E3,4.706685853E1 +2.710610000E3,4.372593931E1 +2.710859000E3,4.298246415E1 +2.711196000E3,4.313732995E1 +2.711485000E3,3.646858634E1 +2.711745000E3,3.547356546E1 +2.712003000E3,4.802507202E1 +2.712259000E3,4.666185634E1 +2.712527000E3,4.298723738E1 +2.712813000E3,3.203029787E1 +2.713082000E3,2.721140687E1 +2.713344000E3,3.967881707E1 +2.713594000E3,5.017429445E1 +2.713859000E3,4.690730331E1 +2.714106000E3,4.892140969E1 +2.714475000E3,4.312346900E1 +2.714730000E3,4.926615820E1 +2.714984000E3,4.690558758E1 +2.715298000E3,3.116292546E1 +2.715563000E3,2.731472603E1 +2.715855000E3,3.029992609E1 +2.716160000E3,3.149201904E1 +2.716442000E3,2.826058660E1 +2.716703000E3,2.713282366E1 +2.716957000E3,3.659207256E1 +2.717253000E3,3.982143620E1 +2.717592000E3,4.316888996E1 +2.717851000E3,4.348787554E1 +2.718149000E3,4.336902207E1 +2.718464000E3,4.494305168E1 +2.718765000E3,4.280996114E1 +2.719042000E3,4.083199069E1 +2.719277000E3,3.924180447E1 +2.719573000E3,2.985025677E1 +2.719800000E3,2.924980764E1 +2.720042000E3,2.589394072E1 +2.720346000E3,2.996884267E1 +2.720607000E3,2.951796470E1 +2.720882000E3,2.762273017E1 +2.721181000E3,4.946261833E1 +2.721422000E3,4.848220411E1 +2.721736000E3,4.816357380E1 +2.722001000E3,5.238238407E1 +2.722305000E3,5.586118797E1 +2.722602000E3,5.474108905E1 +2.722856000E3,5.089156984E1 +2.723105000E3,4.900978141E1 +2.723369000E3,5.541376880E1 +2.723666000E3,4.827427134E1 +2.723997000E3,4.802338633E1 +2.724296000E3,3.537215093E1 +2.724548000E3,3.822637167E1 +2.724844000E3,3.388327957E1 +2.725086000E3,3.756611639E1 +2.725338000E3,4.489615211E1 +2.725635000E3,5.048833137E1 +2.725871000E3,4.298428385E1 +2.726174000E3,3.303114009E1 +2.726475000E3,4.527811220E1 +2.726764000E3,4.815487328E1 +2.727017000E3,4.761823346E1 +2.727328000E3,4.180028821E1 +2.727607000E3,4.512936944E1 +2.727849000E3,4.337880786E1 +2.728101000E3,4.031817829E1 +2.728401000E3,3.509684782E1 +2.728650000E3,4.495565250E1 +2.728895000E3,4.157595660E1 +2.729138000E3,5.008202715E1 +2.729381000E3,5.308960545E1 +2.729622000E3,4.943413955E1 +2.729917000E3,4.820467383E1 +2.730234000E3,5.168344618E1 +2.730544000E3,5.128425900E1 +2.730837000E3,5.242528085E1 +2.731075000E3,5.125548047E1 +2.731382000E3,5.027678189E1 +2.731625000E3,4.595108129E1 +2.731917000E3,5.425640288E1 +2.732229000E3,5.493458667E1 +2.732522000E3,5.383738769E1 +2.732781000E3,4.577468908E1 +2.733036000E3,4.877165484E1 +2.733337000E3,5.155317163E1 +2.733582000E3,4.868465804E1 +2.733904000E3,5.094377769E1 +2.734158000E3,4.778052408E1 +2.734485000E3,4.980696312E1 +2.734788000E3,5.229980528E1 +2.735043000E3,4.487473927E1 +2.735323000E3,5.405477376E1 +2.735550000E3,5.095910777E1 +2.735795000E3,4.081340338E1 +2.736110000E3,3.942379743E1 +2.736352000E3,4.377765131E1 +2.736599000E3,4.311237352E1 +2.736822000E3,4.659947655E1 +2.737071000E3,4.430846393E1 +2.737313000E3,4.579154087E1 +2.737577000E3,4.628223866E1 +2.737831000E3,3.937286623E1 +2.738094000E3,3.852847368E1 +2.738336000E3,3.907921933E1 +2.738583000E3,5.112703685E1 +2.738825000E3,4.827754167E1 +2.739100000E3,4.022366081E1 +2.739352000E3,3.342841986E1 +2.739649000E3,3.354947585E1 +2.740003000E3,2.967395260E1 +2.740259000E3,4.724158021E1 +2.740515000E3,4.406232704E1 +2.740781000E3,4.128290785E1 +2.741030000E3,3.766271195E1 +2.741274000E3,3.234308905E1 +2.741542000E3,5.345026714E1 +2.741790000E3,5.189834860E1 +2.742037000E3,4.310520052E1 +2.742373000E3,3.005340200E1 +2.742661000E3,3.957498865E1 +2.742905000E3,4.298992085E1 +2.743235000E3,3.914359224E1 +2.743487000E3,4.665969106E1 +2.743742000E3,4.569837618E1 +2.743989000E3,4.037243126E1 +2.744288000E3,4.393151618E1 +2.744525000E3,4.191552922E1 +2.744830000E3,3.855450094E1 +2.745068000E3,3.137426682E1 +2.745312000E3,3.988970586E1 +2.745595000E3,4.261856210E1 +2.745912000E3,4.545535941E1 +2.746178000E3,3.982007681E1 +2.746515000E3,3.873990925E1 +2.746799000E3,4.024486228E1 +2.747097000E3,3.778822068E1 +2.747346000E3,3.349647091E1 +2.747587000E3,3.949530039E1 +2.747884000E3,4.424971453E1 +2.748182000E3,4.109440717E1 +2.748426000E3,4.429824127E1 +2.748724000E3,3.941870140E1 +2.749014000E3,3.719766140E1 +2.749309000E3,3.407061301E1 +2.749659000E3,3.362708714E1 +2.749929000E3,4.111324363E1 +2.750185000E3,4.275268079E1 +2.750445000E3,5.624172952E1 +2.750726000E3,4.374037489E1 +2.750957000E3,4.189644016E1 +2.751207000E3,3.621210842E1 +2.751519000E3,4.177841495E1 +2.751770000E3,4.048458953E1 +2.752052000E3,3.923884976E1 +2.752303000E3,3.426258793E1 +2.752575000E3,3.252443323E1 +2.752926000E3,3.211416673E1 +2.753222000E3,3.245023971E1 +2.753483000E3,3.266068265E1 +2.753758000E3,4.004662592E1 +2.754054000E3,4.872983792E1 +2.754320000E3,5.041613029E1 +2.754567000E3,4.540589836E1 +2.754814000E3,3.042430240E1 +2.755080000E3,3.072459076E1 +2.755376000E3,3.998104284E1 +2.755642000E3,4.049850263E1 +2.755970000E3,4.294486763E1 +2.756315000E3,4.067196783E1 +2.756573000E3,4.772031632E1 +2.756825000E3,4.988707098E1 +2.757139000E3,4.555538995E1 +2.757388000E3,4.252022698E1 +2.757651000E3,3.810962452E1 +2.757917000E3,3.494795311E1 +2.758159000E3,3.247098224E1 +2.758413000E3,3.588027190E1 +2.758665000E3,3.200494843E1 +2.758920000E3,4.772506231E1 +2.759171000E3,3.775844318E1 +2.759507000E3,3.920116655E1 +2.759772000E3,4.528245497E1 +2.760086000E3,4.240466142E1 +2.760349000E3,4.544544837E1 +2.760652000E3,4.039389797E1 +2.760923000E3,3.896680017E1 +2.761194000E3,4.381534416E1 +2.761436000E3,4.424202471E1 +2.761681000E3,4.737958135E1 +2.761960000E3,4.213672401E1 +2.762194000E3,4.516117441E1 +2.762462000E3,4.279973284E1 +2.762806000E3,3.859577230E1 +2.763061000E3,4.880977241E1 +2.763403000E3,4.365184399E1 +2.763660000E3,3.848143477E1 +2.763932000E3,4.787104427E1 +2.764214000E3,3.823665924E1 +2.764451000E3,3.049392521E1 +2.764732000E3,3.086844430E1 +2.764975000E3,2.587396098E1 +2.765284000E3,3.362049288E1 +2.765536000E3,3.353664382E1 +2.765825000E3,5.140360254E1 +2.766193000E3,5.105178275E1 +2.766449000E3,5.027787452E1 +2.766756000E3,4.961194015E1 +2.766992000E3,4.473604482E1 +2.767290000E3,5.567849424E1 +2.767540000E3,5.366739238E1 +2.767788000E3,5.268444481E1 +2.768092000E3,4.378358357E1 +2.768389000E3,4.285786187E1 +2.768638000E3,3.838737205E1 +2.768928000E3,4.053738598E1 +2.769250000E3,3.914310468E1 +2.769517000E3,3.950994015E1 +2.769781000E3,4.085678781E1 +2.770095000E3,3.706118568E1 +2.770362000E3,3.878826243E1 +2.770640000E3,4.509160576E1 +2.770877000E3,4.395611401E1 +2.771129000E3,3.894826552E1 +2.771368000E3,3.783168139E1 +2.771620000E3,3.074559821E1 +2.771881000E3,4.191911052E1 +2.772136000E3,4.492008577E1 +2.772447000E3,3.666714779E1 +2.772710000E3,4.135207765E1 +2.772994000E3,4.645886813E1 +2.773238000E3,5.078995440E1 +2.773478000E3,5.706152467E1 +2.773725000E3,5.135582573E1 +2.773990000E3,4.900548267E1 +2.774266000E3,5.275962483E1 +2.774567000E3,3.947101760E1 +2.774806000E3,4.078518654E1 +2.775113000E3,4.929998433E1 +2.775417000E3,4.396253608E1 +2.775784000E3,4.382194135E1 +2.776077000E3,4.131860223E1 +2.776341000E3,4.321133953E1 +2.776596000E3,3.942571045E1 +2.776881000E3,5.035254190E1 +2.777176000E3,5.596334670E1 +2.777432000E3,6.003222989E1 +2.777730000E3,5.139953750E1 +2.778036000E3,5.596001036E1 +2.778330000E3,5.632045587E1 +2.778567000E3,5.352711698E1 +2.778873000E3,5.160150080E1 +2.779243000E3,5.407354895E1 +2.779513000E3,5.151192380E1 +2.779810000E3,5.479493680E1 +2.780084000E3,5.006197117E1 +2.780351000E3,5.012247277E1 +2.780644000E3,4.598086802E1 +2.780884000E3,3.959492635E1 +2.781142000E3,3.571624227E1 +2.781421000E3,4.082207018E1 +2.781720000E3,5.162800696E1 +2.781984000E3,5.211692198E1 +2.782250000E3,5.017743125E1 +2.782617000E3,4.685740156E1 +2.782916000E3,4.348825959E1 +2.783213000E3,3.825858224E1 +2.783454000E3,4.923981343E1 +2.783750000E3,5.319160353E1 +2.783992000E3,4.967899375E1 +2.784288000E3,3.952802481E1 +2.784535000E3,3.328379343E1 +2.784779000E3,3.014350405E1 +2.785020000E3,3.405755755E1 +2.785313000E3,4.653255974E1 +2.785639000E3,4.571255084E1 +2.785896000E3,4.212654376E1 +2.786166000E3,4.635178938E1 +2.786421000E3,4.614547408E1 +2.786716000E3,4.279815144E1 +2.787018000E3,3.739201392E1 +2.787261000E3,4.297599275E1 +2.787569000E3,5.279236826E1 +2.787869000E3,4.385267374E1 +2.788181000E3,3.538660905E1 +2.788488000E3,4.283741498E1 +2.788738000E3,3.898018884E1 +2.789079000E3,4.417569536E1 +2.789327000E3,3.821417555E1 +2.789586000E3,4.124587088E1 +2.789850000E3,4.583617377E1 +2.790116000E3,4.758354441E1 +2.790413000E3,4.386951397E1 +2.790662000E3,4.527431896E1 +2.790956000E3,4.454979637E1 +2.791207000E3,4.019280914E1 +2.791465000E3,4.549375778E1 +2.791714000E3,4.076569420E1 +2.791963000E3,3.807465350E1 +2.792293000E3,5.201775254E1 +2.792550000E3,4.217772267E1 +2.792797000E3,5.472035384E1 +2.793107000E3,5.403984906E1 +2.793357000E3,5.591746790E1 +2.793622000E3,5.564159884E1 +2.793875000E3,5.646584479E1 +2.794118000E3,5.185594958E1 +2.794377000E3,4.895735059E1 +2.794636000E3,5.654557288E1 +2.794943000E3,5.012866956E1 +2.795254000E3,4.757016947E1 +2.795528000E3,5.211434220E1 +2.795790000E3,4.452402763E1 +2.796058000E3,4.290214665E1 +2.796307000E3,3.465820610E1 +2.796556000E3,4.339944359E1 +2.796852000E3,4.313164949E1 +2.797091000E3,5.438037991E1 +2.797389000E3,5.514175593E1 +2.797635000E3,4.928848190E1 +2.797924000E3,4.659784940E1 +2.798220000E3,4.998887096E1 +2.798537000E3,4.486399829E1 +2.798842000E3,4.885866840E1 +2.799091000E3,4.635335968E1 +2.799347000E3,4.504358299E1 +2.799594000E3,3.958005741E1 +2.799833000E3,4.827229253E1 +2.800082000E3,4.830536262E1 +2.800388000E3,4.659260793E1 +2.800673000E3,4.111758509E1 +2.800972000E3,4.464305855E1 +2.801233000E3,4.497276151E1 +2.801524000E3,3.374775892E1 +2.801884000E3,3.426238632E1 +2.802202000E3,3.521995684E1 +2.802451000E3,3.181302785E1 +2.802708000E3,2.794884084E1 +2.803019000E3,3.320140571E1 +2.803325000E3,3.478175393E1 +2.803626000E3,3.529465039E1 +2.803932000E3,3.962950189E1 +2.804222000E3,5.725685057E1 +2.804486000E3,5.740119524E1 +2.804784000E3,5.069347451E1 +2.805056000E3,5.047632669E1 +2.805376000E3,5.207930289E1 +2.805626000E3,5.264810014E1 +2.805887000E3,5.288954519E1 +2.806177000E3,4.457356662E1 +2.806431000E3,3.885566564E1 +2.806679000E3,3.768676842E1 +2.806944000E3,3.953483275E1 +2.807192000E3,4.348722722E1 +2.807514000E3,4.091620627E1 +2.807832000E3,4.192587435E1 +2.808086000E3,4.434501723E1 +2.808380000E3,4.393917252E1 +2.808686000E3,4.250763593E1 +2.809001000E3,4.146719312E1 +2.809249000E3,4.084508562E1 +2.809517000E3,4.466153637E1 +2.809817000E3,4.002274614E1 +2.810111000E3,4.310032831E1 +2.810375000E3,4.901386280E1 +2.810661000E3,4.607368963E1 +2.810927000E3,4.387647276E1 +2.811225000E3,5.143943484E1 +2.811469000E3,5.045193234E1 +2.811861000E3,4.363012565E1 +2.812115000E3,4.450854658E1 +2.812371000E3,4.453857946E1 +2.812631000E3,4.628101753E1 +2.812921000E3,4.634691523E1 +2.813212000E3,4.654803531E1 +2.813510000E3,4.718980060E1 +2.813758000E3,4.430765323E1 +2.814051000E3,4.322664022E1 +2.814349000E3,4.450224091E1 +2.814582000E3,4.170367724E1 +2.814868000E3,3.985315953E1 +2.815113000E3,5.280042862E1 +2.815400000E3,4.119993511E1 +2.815662000E3,4.251502783E1 +2.815937000E3,4.221594106E1 +2.816186000E3,4.475181393E1 +2.816425000E3,4.757705666E1 +2.816666000E3,4.971185267E1 +2.816968000E3,4.862141287E1 +2.817211000E3,4.713523003E1 +2.817492000E3,4.541478066E1 +2.817737000E3,4.363493262E1 +2.817996000E3,4.428814895E1 +2.818246000E3,4.395099122E1 +2.818516000E3,4.781334664E1 +2.818773000E3,4.439472962E1 +2.819027000E3,4.768107540E1 +2.819278000E3,4.535748265E1 +2.819523000E3,5.061196572E1 +2.819779000E3,4.816069594E1 +2.820044000E3,4.715573746E1 +2.820374000E3,4.919198579E1 +2.820635000E3,5.486134785E1 +2.820897000E3,4.845922458E1 +2.821173000E3,4.486224636E1 +2.821520000E3,4.543631827E1 +2.821781000E3,4.823449020E1 +2.822049000E3,4.622456265E1 +2.822354000E3,3.467019045E1 +2.822632000E3,3.820707315E1 +2.822892000E3,3.870865044E1 +2.823175000E3,3.526203974E1 +2.823424000E3,3.398332746E1 +2.823673000E3,4.060940798E1 +2.823924000E3,4.531267955E1 +2.824156000E3,4.823172894E1 +2.824426000E3,5.381643572E1 +2.824772000E3,5.219878503E1 +2.825053000E3,4.888255160E1 +2.825277000E3,4.023650802E1 +2.825526000E3,3.467455539E1 +2.825785000E3,3.818404386E1 +2.826078000E3,4.122702652E1 +2.826315000E3,3.713088668E1 +2.826619000E3,4.891468535E1 +2.826912000E3,5.266971981E1 +2.827148000E3,4.991025067E1 +2.827457000E3,5.435242869E1 +2.827718000E3,5.378448717E1 +2.828053000E3,5.171570017E1 +2.828327000E3,5.600593919E1 +2.828581000E3,5.175339102E1 +2.828821000E3,4.567582373E1 +2.829101000E3,3.417267221E1 +2.829337000E3,3.532670702E1 +2.829576000E3,4.323212593E1 +2.829823000E3,3.952189104E1 +2.830096000E3,4.372473758E1 +2.830363000E3,4.288959864E1 +2.830609000E3,3.903893871E1 +2.830954000E3,3.847274859E1 +2.831281000E3,4.911689413E1 +2.831539000E3,5.342672798E1 +2.831798000E3,5.558955965E1 +2.832091000E3,5.519004987E1 +2.832341000E3,5.877942264E1 +2.832589000E3,4.602825434E1 +2.832861000E3,3.380054471E1 +2.833107000E3,3.583644563E1 +2.833403000E3,4.160983164E1 +2.833653000E3,3.903662215E1 +2.833958000E3,3.879412363E1 +2.834222000E3,4.121083607E1 +2.834460000E3,4.235130104E1 +2.834723000E3,5.615135633E1 +2.834993000E3,5.355273371E1 +2.835271000E3,4.896976792E1 +2.835535000E3,5.132324538E1 +2.835792000E3,5.529277110E1 +2.836041000E3,5.163674064E1 +2.836366000E3,4.657927993E1 +2.836613000E3,4.238907241E1 +2.836875000E3,5.376683406E1 +2.837143000E3,5.052269952E1 +2.837398000E3,5.018740192E1 +2.837697000E3,4.680907883E1 +2.837961000E3,4.427452663E1 +2.838227000E3,3.300759096E1 +2.838490000E3,3.639504198E1 +2.838784000E3,4.617517315E1 +2.839084000E3,4.692063960E1 +2.839325000E3,4.445415179E1 +2.839620000E3,4.215561710E1 +2.839863000E3,4.433766229E1 +2.840168000E3,4.210423337E1 +2.840460000E3,3.873922427E1 +2.840768000E3,3.717852459E1 +2.841057000E3,3.957811826E1 +2.841313000E3,3.760389186E1 +2.841638000E3,4.310249633E1 +2.841921000E3,4.813095040E1 +2.842192000E3,4.623131926E1 +2.842444000E3,4.648620260E1 +2.842743000E3,4.620801315E1 +2.843027000E3,4.321069748E1 +2.843281000E3,4.205248893E1 +2.843587000E3,2.653536028E1 +2.843863000E3,2.940344619E1 +2.844270000E3,4.715941302E1 +2.844533000E3,4.512147604E1 +2.844793000E3,4.758865475E1 +2.845051000E3,4.853448129E1 +2.845325000E3,4.647479098E1 +2.845569000E3,4.600966189E1 +2.845842000E3,4.549543262E1 +2.846088000E3,4.262631529E1 +2.846347000E3,4.522394390E1 +2.846652000E3,4.657245211E1 +2.846924000E3,4.554651191E1 +2.847231000E3,4.501421864E1 +2.847609000E3,4.413715050E1 +2.847859000E3,3.641102730E1 +2.848158000E3,2.959594862E1 +2.848409000E3,3.229903797E1 +2.848684000E3,3.716282001E1 +2.848948000E3,4.864280315E1 +2.849195000E3,4.698625872E1 +2.849453000E3,4.475077374E1 +2.849725000E3,4.320130236E1 +2.850029000E3,4.052232702E1 +2.850286000E3,4.987213531E1 +2.850622000E3,4.470574790E1 +2.850953000E3,4.746715529E1 +2.851224000E3,4.817674396E1 +2.851475000E3,4.755384271E1 +2.851775000E3,4.606857790E1 +2.852037000E3,4.602549066E1 +2.852280000E3,4.107899882E1 +2.852578000E3,4.602936757E1 +2.852832000E3,4.594357604E1 +2.853123000E3,4.132874601E1 +2.853424000E3,3.891402985E1 +2.853676000E3,3.210431116E1 +2.854034000E3,4.148325967E1 +2.854336000E3,4.539420759E1 +2.854629000E3,3.813311910E1 +2.854857000E3,3.204826654E1 +2.855103000E3,4.042825728E1 +2.855348000E3,3.781799437E1 +2.855635000E3,3.485312778E1 +2.855901000E3,3.176423587E1 +2.856194000E3,3.286644404E1 +2.856446000E3,3.601261840E1 +2.856741000E3,3.056779431E1 +2.856990000E3,2.876904683E1 +2.857247000E3,2.336161379E1 +2.857525000E3,5.319777865E1 +2.857765000E3,4.924210585E1 +2.858030000E3,4.161506516E1 +2.858287000E3,3.471025819E1 +2.858592000E3,2.954431085E1 +2.858878000E3,3.551304021E1 +2.859146000E3,4.056554733E1 +2.859438000E3,4.716772205E1 +2.859749000E3,4.728214145E1 +2.860112000E3,4.333221553E1 +2.860355000E3,3.970290127E1 +2.860627000E3,4.675070996E1 +2.860922000E3,5.292655838E1 +2.861168000E3,5.560528000E1 +2.861448000E3,5.155203362E1 +2.861684000E3,4.854372910E1 +2.861981000E3,5.166225265E1 +2.862226000E3,5.239758268E1 +2.862536000E3,4.880079262E1 +2.862801000E3,5.860724491E1 +2.863049000E3,5.487085904E1 +2.863366000E3,4.477307493E1 +2.863622000E3,4.809216762E1 +2.863923000E3,4.128779228E1 +2.864180000E3,4.039902121E1 +2.864473000E3,3.763315716E1 +2.864758000E3,3.836830031E1 +2.865072000E3,3.562217561E1 +2.865375000E3,4.251016575E1 +2.865631000E3,3.959478231E1 +2.865894000E3,3.906491963E1 +2.866161000E3,3.169567809E1 +2.866409000E3,4.180907280E1 +2.866769000E3,5.009501966E1 +2.867095000E3,4.485052737E1 +2.867377000E3,4.543449817E1 +2.867634000E3,4.558186247E1 +2.867912000E3,3.310648260E1 +2.868160000E3,3.368680580E1 +2.868403000E3,3.259924908E1 +2.868652000E3,3.468868920E1 +2.868945000E3,3.811295096E1 +2.869214000E3,3.680532391E1 +2.869523000E3,4.480088276E1 +2.869800000E3,4.321197878E1 +2.870149000E3,3.870196995E1 +2.870426000E3,4.501549736E1 +2.870686000E3,3.869046251E1 +2.870998000E3,5.116138397E1 +2.871259000E3,4.565952095E1 +2.871545000E3,4.044036430E1 +2.871835000E3,3.776423584E1 +2.872146000E3,4.283314388E1 +2.872428000E3,4.822150076E1 +2.872666000E3,4.609488251E1 +2.872966000E3,4.199842198E1 +2.873258000E3,4.199452970E1 +2.873557000E3,4.094164548E1 +2.873868000E3,3.451929232E1 +2.874146000E3,3.725700957E1 +2.874378000E3,3.820854143E1 +2.874632000E3,3.261818797E1 +2.874949000E3,4.229639001E1 +2.875219000E3,4.314663650E1 +2.875496000E3,4.030472415E1 +2.875772000E3,3.740362597E1 +2.876082000E3,3.770704299E1 +2.876334000E3,4.016521241E1 +2.876600000E3,4.155568881E1 +2.876855000E3,3.864643482E1 +2.877164000E3,3.358142820E1 +2.877430000E3,2.988882280E1 +2.877698000E3,4.233125756E1 +2.877954000E3,4.245249096E1 +2.878273000E3,3.619646633E1 +2.878541000E3,3.199868066E1 +2.878801000E3,4.546979293E1 +2.879062000E3,5.523869784E1 +2.879342000E3,5.605267417E1 +2.879584000E3,5.653411529E1 +2.879928000E3,4.626290707E1 +2.880202000E3,3.540012043E1 +2.880447000E3,3.620700172E1 +2.880691000E3,2.922036878E1 +2.880938000E3,3.659816429E1 +2.881251000E3,4.145147882E1 +2.881527000E3,3.894444603E1 +2.881851000E3,3.741315407E1 +2.882112000E3,4.094962867E1 +2.882373000E3,4.333353585E1 +2.882625000E3,4.557565518E1 +2.882879000E3,4.308396997E1 +2.883145000E3,4.097722416E1 +2.883416000E3,3.927850137E1 +2.883669000E3,3.223716221E1 +2.883941000E3,3.004581442E1 +2.884209000E3,3.765685263E1 +2.884466000E3,3.878810543E1 +2.884718000E3,2.988953340E1 +2.884967000E3,3.346960294E1 +2.885221000E3,3.799647420E1 +2.885537000E3,3.116842616E1 +2.885796000E3,3.671552801E1 +2.886084000E3,4.459898232E1 +2.886404000E3,4.708370738E1 +2.886677000E3,5.036035843E1 +2.886979000E3,4.113513329E1 +2.887251000E3,3.503458684E1 +2.887528000E3,3.462090732E1 +2.887785000E3,4.001717165E1 +2.888037000E3,3.538133603E1 +2.888296000E3,3.662805649E1 +2.888547000E3,4.263542947E1 +2.888820000E3,4.431895872E1 +2.889079000E3,4.300413574E1 +2.889340000E3,4.173317530E1 +2.889582000E3,4.288275032E1 +2.889932000E3,3.944773526E1 +2.890197000E3,3.214266541E1 +2.890503000E3,3.060588708E1 +2.890777000E3,3.296322494E1 +2.891017000E3,3.394251803E1 +2.891320000E3,3.208741950E1 +2.891570000E3,3.441770910E1 +2.891849000E3,3.368561294E1 +2.892087000E3,3.475967611E1 +2.892337000E3,3.740055420E1 +2.892635000E3,3.542355307E1 +2.892981000E3,3.105741683E1 +2.893247000E3,3.245614761E1 +2.893513000E3,4.142391644E1 +2.893779000E3,4.497461971E1 +2.894029000E3,4.653178389E1 +2.894282000E3,4.703576342E1 +2.894540000E3,4.751169602E1 +2.894805000E3,4.201422178E1 +2.895062000E3,4.370261317E1 +2.895310000E3,4.660906406E1 +2.895596000E3,4.633159753E1 +2.895865000E3,4.381116332E1 +2.896155000E3,4.368523912E1 +2.896405000E3,4.747051902E1 +2.896651000E3,4.222577444E1 +2.896905000E3,4.572633660E1 +2.897184000E3,5.203776089E1 +2.897450000E3,5.010843836E1 +2.897744000E3,4.910530865E1 +2.898022000E3,4.664859833E1 +2.898308000E3,3.985336775E1 +2.898564000E3,3.683403533E1 +2.898812000E3,4.284820320E1 +2.899091000E3,4.286036404E1 +2.899396000E3,5.224070654E1 +2.899753000E3,4.568546748E1 +2.900018000E3,5.586433220E1 +2.900278000E3,4.514230837E1 +2.900559000E3,3.853422420E1 +2.900865000E3,3.299777990E1 +2.901139000E3,3.594596453E1 +2.901415000E3,2.896001699E1 +2.901650000E3,2.556794162E1 +2.901937000E3,2.525773120E1 +2.902206000E3,3.138035436E1 +2.902457000E3,3.725731802E1 +2.902816000E3,3.600302530E1 +2.903095000E3,3.476106384E1 +2.903340000E3,3.325569458E1 +2.903600000E3,3.217545002E1 +2.903858000E3,2.994578711E1 +2.904108000E3,3.277965280E1 +2.904372000E3,4.013450695E1 +2.904627000E3,3.103730297E1 +2.904913000E3,4.187502355E1 +2.905174000E3,3.591627686E1 +2.905452000E3,3.067277870E1 +2.905743000E3,2.813597523E1 +2.906004000E3,2.760542404E1 +2.906321000E3,3.327793113E1 +2.906579000E3,4.111963776E1 +2.906835000E3,4.309802180E1 +2.907113000E3,2.749088524E1 +2.907354000E3,2.269523459E1 +2.907657000E3,3.631225289E1 +2.907901000E3,4.146405590E1 +2.908156000E3,3.785670954E1 +2.908403000E3,4.498664409E1 +2.908675000E3,4.174614917E1 +2.908932000E3,4.632262643E1 +2.909189000E3,3.569839459E1 +2.909522000E3,4.635385444E1 +2.909802000E3,4.337190367E1 +2.910035000E3,3.796960383E1 +2.910287000E3,4.151951269E1 +2.910538000E3,4.245940710E1 +2.910795000E3,4.268454470E1 +2.911045000E3,4.280139929E1 +2.911335000E3,3.861780445E1 +2.911584000E3,4.028221299E1 +2.911885000E3,3.934408626E1 +2.912139000E3,3.091195323E1 +2.912386000E3,2.709027446E1 +2.912622000E3,2.721294148E1 +2.912915000E3,3.169063213E1 +2.913196000E3,3.663766462E1 +2.913461000E3,3.582442105E1 +2.913744000E3,2.742218375E1 +2.913990000E3,3.432349666E1 +2.914297000E3,4.586386591E1 +2.914575000E3,4.813383402E1 +2.914888000E3,5.016441505E1 +2.915190000E3,4.132593749E1 +2.915481000E3,3.992883324E1 +2.915827000E3,3.713218942E1 +2.916087000E3,4.862036940E1 +2.916351000E3,4.985137398E1 +2.916622000E3,5.126616609E1 +2.916881000E3,4.180876614E1 +2.917157000E3,4.057128207E1 +2.917418000E3,3.994520906E1 +2.917681000E3,3.719846748E1 +2.917964000E3,4.377214072E1 +2.918264000E3,4.081140664E1 +2.918518000E3,4.149712935E1 +2.918784000E3,3.965801174E1 +2.919127000E3,3.499332266E1 +2.919415000E3,3.454976163E1 +2.919745000E3,3.801205804E1 +2.920003000E3,4.266330834E1 +2.920244000E3,3.704497233E1 +2.920548000E3,3.869800412E1 +2.920840000E3,3.880762608E1 +2.921081000E3,3.967826348E1 +2.921325000E3,4.387098551E1 +2.921573000E3,3.795523909E1 +2.921876000E3,3.884773193E1 +2.922122000E3,3.949919351E1 +2.922481000E3,3.549368996E1 +2.922774000E3,5.176437750E1 +2.923023000E3,4.673969779E1 +2.923306000E3,3.729614967E1 +2.923573000E3,3.557242251E1 +2.923880000E3,5.351861504E1 +2.924155000E3,5.486661937E1 +2.924424000E3,5.693150230E1 +2.924735000E3,4.225245527E1 +2.924988000E3,4.082554353E1 +2.925252000E3,3.807826598E1 +2.925573000E3,3.587807510E1 +2.925935000E3,4.290242494E1 +2.926237000E3,3.960438869E1 +2.926496000E3,3.732088357E1 +2.926751000E3,3.216321546E1 +2.926991000E3,3.001846960E1 +2.927295000E3,3.634949804E1 +2.927531000E3,3.127042454E1 +2.927829000E3,3.158500209E1 +2.928073000E3,2.815993792E1 +2.928370000E3,2.793102526E1 +2.928613000E3,2.468786691E1 +2.928943000E3,2.345175993E1 +2.929256000E3,2.908559709E1 +2.929497000E3,2.580950455E1 +2.929819000E3,2.871707976E1 +2.930114000E3,2.977851279E1 +2.930374000E3,4.220437998E1 +2.930636000E3,3.122152770E1 +2.930945000E3,3.902308439E1 +2.931227000E3,3.648582434E1 +2.931474000E3,4.774090674E1 +2.931717000E3,4.487624905E1 +2.931963000E3,4.620728265E1 +2.932258000E3,4.011602626E1 +2.932585000E3,4.011469989E1 +2.932871000E3,4.531107143E1 +2.933117000E3,4.299757904E1 +2.933366000E3,4.255561828E1 +2.933662000E3,4.180851663E1 +2.933899000E3,3.354142728E1 +2.934139000E3,4.061788576E1 +2.934435000E3,3.190428864E1 +2.934678000E3,3.136545948E1 +2.934975000E3,3.172564299E1 +2.935227000E3,3.538616066E1 +2.935577000E3,3.227761247E1 +2.935826000E3,3.587578035E1 +2.936132000E3,2.830690319E1 +2.936391000E3,2.983281120E1 +2.936636000E3,3.198482114E1 +2.936936000E3,4.529436692E1 +2.937191000E3,3.904726622E1 +2.937498000E3,4.546792713E1 +2.937790000E3,4.178984789E1 +2.938055000E3,3.901507008E1 +2.938332000E3,3.530528642E1 +2.938634000E3,3.766035689E1 +2.939060000E3,5.595745424E1 +2.939318000E3,5.800941557E1 +2.939576000E3,5.061871726E1 +2.939836000E3,6.017617924E1 +2.940124000E3,5.889680612E1 +2.940380000E3,5.553527141E1 +2.940631000E3,4.982924060E1 +2.940889000E3,5.386899946E1 +2.941183000E3,5.511436312E1 +2.941477000E3,5.474658637E1 +2.941736000E3,5.669903896E1 +2.941985000E3,5.352207307E1 +2.942302000E3,5.089540084E1 +2.942556000E3,5.163069551E1 +2.942811000E3,4.946827448E1 +2.943144000E3,4.292332560E1 +2.943386000E3,4.769421745E1 +2.943625000E3,4.741300910E1 +2.943936000E3,4.918473310E1 +2.944182000E3,4.358732286E1 +2.944456000E3,4.338106770E1 +2.944722000E3,5.302068646E1 +2.945006000E3,4.800501219E1 +2.945370000E3,4.445792428E1 +2.945619000E3,3.768400599E1 +2.945867000E3,3.829540629E1 +2.946159000E3,3.766669508E1 +2.946411000E3,4.016839261E1 +2.946712000E3,4.041724233E1 +2.947009000E3,4.012217251E1 +2.947323000E3,3.568820570E1 +2.947568000E3,3.690839296E1 +2.947818000E3,4.813137033E1 +2.948084000E3,5.325274156E1 +2.948341000E3,5.892514859E1 +2.948730000E3,4.314585435E1 +2.948980000E3,4.049194134E1 +2.949257000E3,4.522053034E1 +2.949515000E3,4.263261915E1 +2.949826000E3,5.159034358E1 +2.950126000E3,4.094053529E1 +2.950370000E3,4.144504964E1 +2.950613000E3,4.584689520E1 +2.950933000E3,3.986259871E1 +2.951211000E3,5.835616238E1 +2.951492000E3,4.865922153E1 +2.951773000E3,4.646806952E1 +2.952049000E3,5.501145746E1 +2.952349000E3,5.395560549E1 +2.952606000E3,5.094776028E1 +2.952859000E3,5.987933082E1 +2.953123000E3,5.553863596E1 +2.953365000E3,6.056471643E1 +2.953626000E3,5.705129962E1 +2.953881000E3,5.620457969E1 +2.954143000E3,4.633104773E1 +2.954403000E3,4.542785483E1 +2.954666000E3,4.357363747E1 +2.954925000E3,5.905995366E1 +2.955255000E3,5.325307727E1 +2.955500000E3,6.730464031E1 +2.955795000E3,6.362836082E1 +2.956030000E3,6.057596417E1 +2.956332000E3,6.813918985E1 +2.956573000E3,6.403678903E1 +2.956871000E3,6.230635205E1 +2.957135000E3,6.746671531E1 +2.957401000E3,6.427695804E1 +2.957673000E3,5.206458526E1 +2.957933000E3,5.261265827E1 +2.958182000E3,4.877242183E1 +2.958552000E3,6.627461000E1 +2.958808000E3,6.741673158E1 +2.959062000E3,6.597614354E1 +2.959304000E3,6.540552328E1 +2.959551000E3,6.528289091E1 +2.959864000E3,5.830061674E1 +2.960121000E3,5.985112812E1 +2.960428000E3,6.090568068E1 +2.960720000E3,6.807446854E1 +2.960985000E3,6.930722199E1 +2.961226000E3,6.386100217E1 +2.961579000E3,6.028451745E1 +2.961849000E3,6.477814340E1 +2.962132000E3,6.837046944E1 +2.962373000E3,6.647209363E1 +2.962660000E3,6.694202205E1 +2.962967000E3,6.648756695E1 +2.963231000E3,6.482625001E1 +2.963518000E3,7.095796361E1 +2.963775000E3,6.454417662E1 +2.964062000E3,6.533171518E1 +2.964339000E3,6.471819922E1 +2.964629000E3,5.679367810E1 +2.964962000E3,5.573913208E1 +2.965271000E3,6.251351498E1 +2.965502000E3,6.071427502E1 +2.965745000E3,6.212696498E1 +2.966049000E3,5.601947939E1 +2.966292000E3,5.543203731E1 +2.966544000E3,5.440105204E1 +2.966807000E3,5.169354717E1 +2.967114000E3,5.098574914E1 +2.967354000E3,4.778774527E1 +2.967603000E3,5.527018336E1 +2.967874000E3,5.069142516E1 +2.968220000E3,5.540354927E1 +2.968470000E3,5.388190573E1 +2.968725000E3,5.648678631E1 +2.968994000E3,6.195289166E1 +2.969259000E3,5.924073062E1 +2.969526000E3,5.554902217E1 +2.969797000E3,6.073047002E1 +2.970049000E3,5.750580172E1 +2.970375000E3,6.205206850E1 +2.970685000E3,5.892672487E1 +2.971008000E3,5.603539479E1 +2.971306000E3,5.380141597E1 +2.971609000E3,6.182570937E1 +2.971860000E3,5.755792598E1 +2.972120000E3,7.094637252E1 +2.972374000E3,7.220321333E1 +2.972688000E3,6.074903881E1 +2.972946000E3,5.132390204E1 +2.973203000E3,5.555176793E1 +2.973482000E3,5.082163203E1 +2.973746000E3,6.668022761E1 +2.974024000E3,6.951681150E1 +2.974257000E3,6.170353739E1 +2.974507000E3,6.191784425E1 +2.974845000E3,6.249884739E1 +2.975129000E3,6.139715498E1 +2.975385000E3,5.458109058E1 +2.975684000E3,6.285593412E1 +2.975925000E3,6.801445640E1 +2.976223000E3,6.762358149E1 +2.976454000E3,6.007212586E1 +2.976698000E3,6.176376027E1 +2.976998000E3,5.489351528E1 +2.977244000E3,6.419682450E1 +2.977544000E3,6.335879864E1 +2.977813000E3,6.346249627E1 +2.978071000E3,6.122721977E1 +2.978303000E3,6.269343112E1 +2.978564000E3,5.719207644E1 +2.978818000E3,6.209398004E1 +2.979085000E3,6.570545323E1 +2.979335000E3,6.443300698E1 +2.979582000E3,6.395479352E1 +2.979841000E3,6.285971298E1 +2.980091000E3,6.452411240E1 +2.980337000E3,6.648403811E1 +2.980638000E3,6.146510082E1 +2.980898000E3,6.178604521E1 +2.981191000E3,5.906416732E1 +2.981418000E3,6.139524316E1 +2.981668000E3,6.754933795E1 +2.981958000E3,5.804633278E1 +2.982221000E3,5.544285219E1 +2.982480000E3,5.252390700E1 +2.982741000E3,5.442974682E1 +2.983009000E3,5.886662164E1 +2.983270000E3,6.039421332E1 +2.983532000E3,5.984826425E1 +2.983780000E3,6.038747451E1 +2.984020000E3,5.836799318E1 +2.984266000E3,6.011457774E1 +2.984654000E3,6.086793857E1 +2.984928000E3,6.104684994E1 +2.985246000E3,6.081085188E1 +2.985504000E3,6.338602633E1 +2.985771000E3,6.224702903E1 +2.986040000E3,5.771788346E1 +2.986351000E3,5.832375863E1 +2.986657000E3,6.179808645E1 +2.986893000E3,6.074067698E1 +2.987188000E3,5.763905723E1 +2.987459000E3,5.411975455E1 +2.987698000E3,5.609082395E1 +2.988020000E3,5.838775534E1 +2.988261000E3,5.545934196E1 +2.988564000E3,5.818253650E1 +2.988803000E3,5.693365858E1 +2.989084000E3,5.747877452E1 +2.989394000E3,6.108654481E1 +2.989646000E3,6.109521888E1 +2.989952000E3,5.453216708E1 +2.990235000E3,5.325056065E1 +2.990530000E3,5.226229633E1 +2.990796000E3,5.566734434E1 +2.991153000E3,5.983192138E1 +2.991409000E3,5.902282422E1 +2.991712000E3,6.553978750E1 +2.991962000E3,6.323109208E1 +2.992210000E3,6.430699278E1 +2.992477000E3,6.439502996E1 +2.992769000E3,5.882379749E1 +2.993024000E3,7.076998945E1 +2.993317000E3,6.710088514E1 +2.993554000E3,6.332152683E1 +2.993846000E3,6.013348006E1 +2.994081000E3,6.492156154E1 +2.994361000E3,6.054189638E1 +2.994671000E3,5.878685209E1 +2.994911000E3,6.363988355E1 +2.995218000E3,6.266127576E1 +2.995513000E3,6.231860976E1 +2.995750000E3,6.770663238E1 +2.996056000E3,6.411706706E1 +2.996346000E3,6.607053327E1 +2.996592000E3,6.231837938E1 +2.996884000E3,6.235557028E1 +2.997130000E3,6.626149607E1 +2.997386000E3,6.897456616E1 +2.997721000E3,6.896820400E1 +2.997984000E3,5.708709076E1 +2.998260000E3,5.465136518E1 +2.998532000E3,6.136090841E1 +2.998792000E3,6.427324700E1 +2.999047000E3,5.922924051E1 +2.999308000E3,5.964993479E1 +2.999619000E3,5.937495043E1 +2.999910000E3,6.345321013E1 +3.000196000E3,6.558504608E1 +3.000438000E3,6.566442906E1 +3.000721000E3,6.596782674E1 +3.001048000E3,6.493210478E1 +3.001299000E3,6.778071085E1 +3.001554000E3,5.810398860E1 +3.001834000E3,6.461256831E1 +3.002084000E3,5.637103240E1 +3.002332000E3,6.244497501E1 +3.002633000E3,5.749162406E1 +3.002980000E3,6.268391580E1 +3.003246000E3,6.122193913E1 +3.003572000E3,6.467185898E1 +3.003877000E3,6.239318427E1 +3.004266000E3,6.708558966E1 +3.004573000E3,6.293492178E1 +3.004871000E3,6.169168265E1 +3.005129000E3,5.944912128E1 +3.005404000E3,5.631628075E1 +3.005704000E3,6.080609102E1 +3.005964000E3,6.424565764E1 +3.006250000E3,6.447415860E1 +3.006481000E3,6.606824769E1 +3.006756000E3,6.337387069E1 +3.007004000E3,6.294291386E1 +3.007286000E3,6.430484746E1 +3.007612000E3,6.091848593E1 +3.007867000E3,6.343837854E1 +3.008169000E3,5.978702761E1 +3.008432000E3,5.965865421E1 +3.008675000E3,5.540362761E1 +3.008918000E3,5.443572137E1 +3.009202000E3,6.171389250E1 +3.009446000E3,6.487192568E1 +3.009738000E3,5.958143908E1 +3.009983000E3,6.189834719E1 +3.010232000E3,5.752745917E1 +3.010489000E3,6.339873723E1 +3.010846000E3,6.127984243E1 +3.011144000E3,6.065194767E1 +3.011387000E3,6.253646864E1 +3.011646000E3,6.179753794E1 +3.011925000E3,6.231808205E1 +3.012153000E3,6.101579519E1 +3.012442000E3,5.876502421E1 +3.012737000E3,5.809905793E1 +3.013015000E3,5.695141293E1 +3.013301000E3,5.973139928E1 +3.013577000E3,6.007240820E1 +3.013839000E3,7.136453087E1 +3.014063000E3,7.173892024E1 +3.014315000E3,6.885425335E1 +3.014559000E3,6.110376355E1 +3.014808000E3,6.296723224E1 +3.015075000E3,6.021879294E1 +3.015327000E3,6.012811489E1 +3.015577000E3,6.282613373E1 +3.015850000E3,6.884549735E1 +3.016115000E3,6.913958233E1 +3.016397000E3,6.608409337E1 +3.016648000E3,6.437779633E1 +3.016896000E3,6.412579817E1 +3.017253000E3,6.408373459E1 +3.017500000E3,6.487828946E1 +3.017743000E3,6.281964754E1 +3.018003000E3,6.153697843E1 +3.018258000E3,6.503307442E1 +3.018512000E3,6.508021131E1 +3.018791000E3,5.910017780E1 +3.019028000E3,5.757469918E1 +3.019325000E3,5.762978005E1 +3.019573000E3,5.366611226E1 +3.019824000E3,5.708763529E1 +3.020086000E3,5.488621207E1 +3.020437000E3,5.826722905E1 +3.020695000E3,5.951373108E1 +3.020968000E3,6.130623452E1 +3.021217000E3,6.025771329E1 +3.021490000E3,5.280103891E1 +3.021737000E3,6.123009986E1 +3.022037000E3,6.404958762E1 +3.022328000E3,6.469373641E1 +3.022599000E3,6.283727611E1 +3.022840000E3,6.248869497E1 +3.023123000E3,6.767270030E1 +3.023363000E3,6.436289402E1 +3.023706000E3,6.007121161E1 +3.023992000E3,6.067397941E1 +3.024255000E3,6.005092329E1 +3.024513000E3,6.146229561E1 +3.024803000E3,6.214304530E1 +3.025060000E3,6.107977952E1 +3.025317000E3,6.268440106E1 +3.025560000E3,5.744048190E1 +3.025823000E3,6.080102592E1 +3.026092000E3,6.359394744E1 +3.026384000E3,6.219604097E1 +3.026685000E3,6.296073955E1 +3.026912000E3,6.243574530E1 +3.027190000E3,6.540426031E1 +3.027426000E3,7.038009166E1 +3.027684000E3,7.133800291E1 +3.027943000E3,6.847497315E1 +3.028214000E3,7.049817235E1 +3.028486000E3,6.555713643E1 +3.028748000E3,6.762942526E1 +3.029008000E3,6.780082040E1 +3.029264000E3,6.644646205E1 +3.029533000E3,7.066497540E1 +3.029800000E3,6.700863421E1 +3.030174000E3,6.263767412E1 +3.030459000E3,5.937975562E1 +3.030697000E3,6.189133018E1 +3.030958000E3,6.479748496E1 +3.031218000E3,6.070421224E1 +3.031488000E3,5.567295684E1 +3.031754000E3,6.162939414E1 +3.032026000E3,6.462556380E1 +3.032293000E3,6.300561819E1 +3.032553000E3,6.320528504E1 +3.032852000E3,6.205536878E1 +3.033102000E3,7.179598993E1 +3.033490000E3,6.907149718E1 +3.033750000E3,6.110443799E1 +3.034008000E3,5.743025653E1 +3.034257000E3,5.714646515E1 +3.034505000E3,6.193634179E1 +3.034762000E3,6.511685208E1 +3.035034000E3,6.647840023E1 +3.035277000E3,6.637602928E1 +3.035534000E3,6.208743290E1 +3.035873000E3,6.158502662E1 +3.036127000E3,6.138896352E1 +3.036392000E3,5.988342330E1 +3.036737000E3,5.834272912E1 +3.036998000E3,6.504474047E1 +3.037253000E3,5.801637483E1 +3.037569000E3,6.208073459E1 +3.037831000E3,6.555093843E1 +3.038084000E3,6.686352963E1 +3.038356000E3,6.398821865E1 +3.038638000E3,6.053541888E1 +3.038927000E3,5.509282051E1 +3.039228000E3,6.213274835E1 +3.039473000E3,6.149105368E1 +3.039745000E3,6.097957376E1 +3.040056000E3,6.313145073E1 +3.040300000E3,6.749857058E1 +3.040549000E3,6.031561589E1 +3.040852000E3,5.991948868E1 +3.041110000E3,6.228314687E1 +3.041358000E3,6.281493679E1 +3.041621000E3,6.031124820E1 +3.041926000E3,6.035954468E1 +3.042177000E3,6.230627050E1 +3.042448000E3,5.381586458E1 +3.042741000E3,6.032611045E1 +3.043026000E3,5.796046788E1 +3.043304000E3,6.286261594E1 +3.043605000E3,6.188894569E1 +3.043848000E3,6.196336480E1 +3.044091000E3,6.506902622E1 +3.044345000E3,6.547913264E1 +3.044589000E3,6.701681380E1 +3.044849000E3,6.398074775E1 +3.045095000E3,6.102355933E1 +3.045350000E3,6.546609328E1 +3.045598000E3,6.626677347E1 +3.045845000E3,6.212155235E1 +3.046098000E3,6.475032486E1 +3.046433000E3,6.469401418E1 +3.046698000E3,6.335899573E1 +3.046970000E3,5.799459631E1 +3.047267000E3,5.777430210E1 +3.047527000E3,6.228044606E1 +3.047785000E3,5.521572273E1 +3.048044000E3,5.312506195E1 +3.048316000E3,5.877400717E1 +3.048592000E3,6.239358597E1 +3.048842000E3,6.019315355E1 +3.049164000E3,5.944515023E1 +3.049418000E3,6.571719967E1 +3.049752000E3,5.906077781E1 +3.050005000E3,6.269931225E1 +3.050242000E3,6.329267329E1 +3.050532000E3,6.094692628E1 +3.050797000E3,6.137608503E1 +3.051055000E3,6.019630450E1 +3.051299000E3,5.959056092E1 +3.051551000E3,6.195653625E1 +3.051802000E3,5.997942431E1 +3.052044000E3,6.071988649E1 +3.052348000E3,6.146559433E1 +3.052605000E3,6.320542640E1 +3.052903000E3,6.301314639E1 +3.053133000E3,6.491013087E1 +3.053386000E3,5.374424399E1 +3.053632000E3,5.337930652E1 +3.053925000E3,5.830420592E1 +3.054167000E3,5.827724976E1 +3.054414000E3,5.413373264E1 +3.054713000E3,5.438904566E1 +3.054952000E3,5.478972153E1 +3.055245000E3,6.026125791E1 +3.055545000E3,6.377000784E1 +3.055792000E3,6.273059884E1 +3.056116000E3,6.164463909E1 +3.056426000E3,6.310484015E1 +3.056665000E3,6.191865333E1 +3.056974000E3,6.044005004E1 +3.057225000E3,5.723160495E1 +3.057532000E3,6.482171923E1 +3.057799000E3,6.373654624E1 +3.058097000E3,6.579319958E1 +3.058333000E3,6.717439766E1 +3.058632000E3,6.244987186E1 +3.058874000E3,5.911459441E1 +3.059119000E3,6.246625617E1 +3.059514000E3,6.061929027E1 +3.059786000E3,6.141894857E1 +3.060044000E3,6.531006136E1 +3.060311000E3,6.745420282E1 +3.060564000E3,6.305040539E1 +3.060809000E3,6.250223063E1 +3.061063000E3,5.984183740E1 +3.061365000E3,6.201500936E1 +3.061610000E3,6.171968159E1 +3.061853000E3,5.636652524E1 +3.062137000E3,5.937450988E1 +3.062405000E3,5.424162977E1 +3.062724000E3,5.577353705E1 +3.062968000E3,6.265208868E1 +3.063225000E3,6.754657095E1 +3.063470000E3,6.259832443E1 +3.063731000E3,5.846954403E1 +3.063975000E3,5.735719718E1 +3.064220000E3,5.614657426E1 +3.064460000E3,5.493678071E1 +3.064711000E3,6.175770153E1 +3.064961000E3,6.502893325E1 +3.065266000E3,6.372557142E1 +3.065562000E3,6.165604672E1 +3.065921000E3,6.202265536E1 +3.066181000E3,5.894659424E1 +3.066427000E3,5.516515279E1 +3.066669000E3,5.227763917E1 +3.066911000E3,5.331294555E1 +3.067166000E3,5.535383534E1 +3.067460000E3,5.490405248E1 +3.067721000E3,5.927902794E1 +3.068030000E3,6.001209348E1 +3.068288000E3,5.925707402E1 +3.068553000E3,6.116769528E1 +3.068848000E3,5.907075037E1 +3.069160000E3,5.402384091E1 +3.069467000E3,6.078433547E1 +3.069706000E3,6.064305090E1 +3.069991000E3,6.099922555E1 +3.070247000E3,6.081028216E1 +3.070500000E3,6.857342881E1 +3.070795000E3,6.830085683E1 +3.071035000E3,7.092929468E1 +3.071334000E3,6.670654987E1 +3.071580000E3,6.198358410E1 +3.071845000E3,6.029427505E1 +3.072216000E3,6.271100503E1 +3.072476000E3,6.548403896E1 +3.072709000E3,6.655140024E1 +3.072958000E3,6.872933885E1 +3.073221000E3,6.840034062E1 +3.073524000E3,6.189262665E1 +3.073801000E3,6.315516618E1 +3.074029000E3,6.431689152E1 +3.074282000E3,7.008635825E1 +3.074531000E3,6.529488526E1 +3.074781000E3,5.362885622E1 +3.075079000E3,6.174622467E1 +3.075321000E3,6.106059522E1 +3.075569000E3,6.727558853E1 +3.075841000E3,6.068477373E1 +3.076089000E3,6.224550385E1 +3.076358000E3,6.049387981E1 +3.076618000E3,5.554290122E1 +3.076868000E3,5.232623619E1 +3.077136000E3,5.715980006E1 +3.077434000E3,6.112308912E1 +3.077738000E3,5.964598426E1 +3.077997000E3,5.774993649E1 +3.078301000E3,5.930552673E1 +3.078632000E3,6.204668908E1 +3.078903000E3,6.135182684E1 +3.079234000E3,6.010535577E1 +3.079530000E3,5.612975229E1 +3.079846000E3,5.894789721E1 +3.080130000E3,6.424282153E1 +3.080395000E3,6.696093787E1 +3.080696000E3,5.929656512E1 +3.080931000E3,5.577162965E1 +3.081168000E3,6.096321541E1 +3.081415000E3,6.147204445E1 +3.081708000E3,6.518353223E1 +3.082066000E3,6.565001970E1 +3.082347000E3,6.152216198E1 +3.082591000E3,6.232488129E1 +3.082884000E3,6.450829181E1 +3.083131000E3,6.727741702E1 +3.083373000E3,6.596172391E1 +3.083615000E3,6.588974420E1 +3.083909000E3,6.215985231E1 +3.084146000E3,5.417797447E1 +3.084444000E3,5.776086644E1 +3.084736000E3,6.145598006E1 +3.085067000E3,6.705675690E1 +3.085353000E3,7.032609091E1 +3.085621000E3,6.942809802E1 +3.085926000E3,6.673219093E1 +3.086170000E3,5.874483463E1 +3.086457000E3,6.163530440E1 +3.086730000E3,5.863155738E1 +3.086955000E3,5.804604701E1 +3.087247000E3,7.202263239E1 +3.087542000E3,6.907595594E1 +3.087796000E3,7.104760035E1 +3.088063000E3,6.060670654E1 +3.088371000E3,6.409876160E1 +3.088642000E3,6.504332531E1 +3.088891000E3,6.050178076E1 +3.089172000E3,5.988548041E1 +3.089448000E3,6.419311516E1 +3.089715000E3,6.072209436E1 +3.089992000E3,6.148544930E1 +3.090256000E3,6.667985585E1 +3.090551000E3,6.360479893E1 +3.090829000E3,6.675347002E1 +3.091081000E3,6.585951744E1 +3.091337000E3,5.998998345E1 +3.091582000E3,7.213751425E1 +3.091973000E3,7.002319175E1 +3.092225000E3,6.554991346E1 +3.092495000E3,5.438962824E1 +3.092757000E3,5.806427109E1 +3.093010000E3,5.611571138E1 +3.093290000E3,5.427298566E1 +3.093553000E3,6.332676554E1 +3.093801000E3,6.191283999E1 +3.094088000E3,6.222056485E1 +3.094383000E3,6.679558422E1 +3.094660000E3,6.396349695E1 +3.094980000E3,6.335657582E1 +3.095321000E3,6.368682935E1 +3.095574000E3,6.239728447E1 +3.095829000E3,6.560913932E1 +3.096083000E3,6.288470186E1 +3.096327000E3,6.063834800E1 +3.096611000E3,5.698542980E1 +3.096866000E3,6.214573666E1 +3.097125000E3,6.108001307E1 +3.097382000E3,6.098898235E1 +3.097639000E3,6.935379750E1 +3.097944000E3,6.076333803E1 +3.098235000E3,5.747447310E1 +3.098595000E3,5.896750888E1 +3.098845000E3,6.428262322E1 +3.099146000E3,6.073561603E1 +3.099435000E3,5.610862272E1 +3.099679000E3,5.808393750E1 +3.099971000E3,6.306244141E1 +3.100214000E3,6.493760740E1 +3.100511000E3,5.964091377E1 +3.100753000E3,5.949423253E1 +3.100995000E3,6.324186751E1 +3.101237000E3,6.294719776E1 +3.101481000E3,6.618420708E1 +3.101805000E3,6.039251647E1 +3.102105000E3,6.883376735E1 +3.102388000E3,6.215701199E1 +3.102635000E3,6.251944475E1 +3.102926000E3,6.387718652E1 +3.103175000E3,6.262879933E1 +3.103469000E3,6.094246273E1 +3.103717000E3,5.780442917E1 +3.104010000E3,5.805018882E1 +3.104245000E3,6.073911170E1 +3.104537000E3,5.820155990E1 +3.104880000E3,5.691870737E1 +3.105139000E3,5.609187778E1 +3.105418000E3,5.368790307E1 +3.105673000E3,5.733127796E1 +3.105933000E3,5.834617124E1 +3.106196000E3,5.665251568E1 +3.106447000E3,5.839993992E1 +3.106707000E3,5.765825797E1 +3.106989000E3,6.346036236E1 +3.107241000E3,6.088974139E1 +3.107536000E3,5.623231578E1 +3.107836000E3,5.905990454E1 +3.108208000E3,5.913546091E1 +3.108462000E3,5.921957697E1 +3.108732000E3,6.403378055E1 +3.109010000E3,6.829473891E1 +3.109237000E3,6.866131452E1 +3.109530000E3,5.759864554E1 +3.109769000E3,5.216447932E1 +3.110067000E3,5.887622687E1 +3.110356000E3,5.912152229E1 +3.110621000E3,6.343631440E1 +3.110862000E3,6.110189356E1 +3.111105000E3,5.925249209E1 +3.111441000E3,5.583559168E1 +3.111708000E3,6.397874973E1 +3.112049000E3,5.864630935E1 +3.112314000E3,5.876030726E1 +3.112620000E3,5.558460131E1 +3.112980000E3,5.336927775E1 +3.113232000E3,5.351895645E1 +3.113515000E3,4.932805120E1 +3.113763000E3,6.323075662E1 +3.114057000E3,6.375401647E1 +3.114318000E3,6.430798012E1 +3.114651000E3,6.745313705E1 +3.114909000E3,6.370697195E1 +3.115204000E3,6.719832935E1 +3.115517000E3,6.353352979E1 +3.115816000E3,6.421660294E1 +3.116074000E3,6.666449428E1 +3.116372000E3,6.209745804E1 +3.116612000E3,5.853853683E1 +3.116911000E3,6.153177442E1 +3.117151000E3,6.465277685E1 +3.117439000E3,6.054074617E1 +3.117698000E3,5.762180605E1 +3.118029000E3,5.904912096E1 +3.118292000E3,6.054469105E1 +3.118547000E3,6.570885599E1 +3.118854000E3,6.686989978E1 +3.119103000E3,6.506823644E1 +3.119359000E3,5.780133308E1 +3.119610000E3,5.983707630E1 +3.119896000E3,6.102798325E1 +3.120167000E3,5.940835035E1 +3.120446000E3,6.154008300E1 +3.120717000E3,6.031178539E1 +3.120969000E3,6.222997321E1 +3.121291000E3,6.676268308E1 +3.121532000E3,6.244629438E1 +3.121778000E3,6.014719673E1 +3.122038000E3,6.351124664E1 +3.122317000E3,5.786579019E1 +3.122607000E3,5.704033688E1 +3.122864000E3,5.941823253E1 +3.123160000E3,6.366298469E1 +3.123429000E3,6.545330590E1 +3.123678000E3,6.206143443E1 +3.123932000E3,6.250040348E1 +3.124250000E3,6.193784317E1 +3.124582000E3,6.679802083E1 +3.124888000E3,6.239911876E1 +3.125141000E3,6.227743005E1 +3.125407000E3,5.930162190E1 +3.125655000E3,5.692493613E1 +3.125897000E3,6.100851678E1 +3.126155000E3,6.356932883E1 +3.126470000E3,6.583742229E1 +3.126735000E3,6.828531785E1 +3.127049000E3,6.744954014E1 +3.127349000E3,6.892448306E1 +3.127620000E3,6.312172108E1 +3.127885000E3,6.549450530E1 +3.128150000E3,6.274114245E1 +3.128434000E3,5.987443555E1 +3.128694000E3,5.754092402E1 +3.128967000E3,6.140483336E1 +3.129224000E3,5.793735580E1 +3.129483000E3,5.640840091E1 +3.129735000E3,7.068460790E1 +3.130042000E3,6.831622259E1 +3.130308000E3,6.661131327E1 +3.130563000E3,7.032191033E1 +3.130897000E3,6.429012882E1 +3.131166000E3,6.890779868E1 +3.131427000E3,6.812897599E1 +3.131726000E3,6.440583932E1 +3.132039000E3,6.371305855E1 +3.132310000E3,6.071113649E1 +3.132582000E3,6.356904702E1 +3.132834000E3,6.335195410E1 +3.133078000E3,5.922748305E1 +3.133357000E3,5.790290676E1 +3.133581000E3,6.067150466E1 +3.133827000E3,5.936438225E1 +3.134075000E3,5.651144024E1 +3.134312000E3,5.707156804E1 +3.134564000E3,6.256442790E1 +3.134822000E3,5.680653319E1 +3.135099000E3,6.386946987E1 +3.135341000E3,6.183817556E1 +3.135588000E3,5.791592939E1 +3.135843000E3,5.415500200E1 +3.136159000E3,5.828393923E1 +3.136402000E3,5.584102234E1 +3.136645000E3,5.843965538E1 +3.136922000E3,6.032067675E1 +3.137231000E3,6.082235855E1 +3.137514000E3,6.216335250E1 +3.137763000E3,6.576895249E1 +3.138052000E3,5.935628673E1 +3.138348000E3,5.697436057E1 +3.138590000E3,6.713499986E1 +3.138833000E3,5.996032355E1 +3.139071000E3,6.566814076E1 +3.139366000E3,6.469315039E1 +3.139607000E3,6.414816039E1 +3.139901000E3,6.238348704E1 +3.140144000E3,5.975478602E1 +3.140477000E3,5.617333113E1 +3.140789000E3,6.140881460E1 +3.141038000E3,5.760925345E1 +3.141323000E3,5.813474075E1 +3.141616000E3,6.190304914E1 +3.141899000E3,5.853813516E1 +3.142123000E3,6.019478920E1 +3.142387000E3,5.824830032E1 +3.142639000E3,6.031650371E1 +3.142898000E3,5.874305926E1 +3.143211000E3,6.365997735E1 +3.143459000E3,6.182267241E1 +3.143814000E3,6.153305629E1 +3.144076000E3,6.040235966E1 +3.144345000E3,6.279707978E1 +3.144591000E3,6.261441373E1 +3.144837000E3,5.722591859E1 +3.145082000E3,5.791919274E1 +3.145387000E3,6.142016587E1 +3.145678000E3,5.996802308E1 +3.145994000E3,5.761245992E1 +3.146269000E3,5.915341256E1 +3.146531000E3,5.679987844E1 +3.146814000E3,6.228452904E1 +3.147163000E3,6.038592359E1 +3.147440000E3,6.662509726E1 +3.147705000E3,5.864713600E1 +3.147961000E3,6.383827006E1 +3.148228000E3,6.445939632E1 +3.148543000E3,6.206597752E1 +3.148800000E3,6.082056407E1 +3.149046000E3,5.872798480E1 +3.149340000E3,5.792404132E1 +3.149585000E3,5.917409009E1 +3.149845000E3,5.619795947E1 +3.150164000E3,6.447379623E1 +3.150501000E3,6.336546747E1 +3.150798000E3,6.022605646E1 +3.151059000E3,5.837139298E1 +3.151360000E3,5.721847889E1 +3.151614000E3,7.085699981E1 +3.151908000E3,6.031233854E1 +3.152206000E3,6.170839562E1 +3.152452000E3,6.336115962E1 +3.152697000E3,6.732286145E1 +3.152943000E3,6.043278366E1 +3.153235000E3,5.822950572E1 +3.153537000E3,6.155234216E1 +3.153813000E3,5.671966020E1 +3.154078000E3,5.613348243E1 +3.154333000E3,5.384913785E1 +3.154580000E3,5.739778382E1 +3.154869000E3,5.617144196E1 +3.155103000E3,5.699346940E1 +3.155351000E3,6.356393037E1 +3.155653000E3,5.483372318E1 +3.155949000E3,5.806865262E1 +3.156195000E3,5.725879338E1 +3.156459000E3,5.708272088E1 +3.156776000E3,5.736330762E1 +3.157028000E3,5.620178265E1 +3.157280000E3,5.557503250E1 +3.157521000E3,6.379766868E1 +3.157864000E3,6.175462639E1 +3.158113000E3,5.970375584E1 +3.158365000E3,5.482220327E1 +3.158625000E3,6.094938302E1 +3.158872000E3,6.189076140E1 +3.159128000E3,6.365906369E1 +3.159385000E3,6.365252593E1 +3.159699000E3,6.421784723E1 +3.160039000E3,5.952347777E1 +3.160337000E3,6.582170091E1 +3.160643000E3,6.400621400E1 +3.160905000E3,5.982923632E1 +3.161162000E3,5.912958512E1 +3.161449000E3,5.744161350E1 +3.161722000E3,6.208953034E1 +3.161984000E3,6.743490019E1 +3.162228000E3,5.893358785E1 +3.162506000E3,6.260442429E1 +3.162777000E3,6.054589944E1 +3.163072000E3,5.958101250E1 +3.163380000E3,5.756716970E1 +3.163623000E3,5.897741262E1 +3.163916000E3,5.199350029E1 +3.164173000E3,5.607364633E1 +3.164444000E3,6.846587546E1 +3.164756000E3,5.833953537E1 +3.165011000E3,6.699601536E1 +3.165255000E3,6.024033326E1 +3.165530000E3,5.636786936E1 +3.165825000E3,5.917346905E1 +3.166077000E3,5.684739711E1 +3.166343000E3,5.441684119E1 +3.166607000E3,5.708423030E1 +3.166871000E3,5.726160097E1 +3.167212000E3,5.795085756E1 +3.167513000E3,5.359033433E1 +3.167800000E3,5.481028168E1 +3.168051000E3,5.771426852E1 +3.168321000E3,5.720698183E1 +3.168574000E3,6.029484328E1 +3.168847000E3,6.594273179E1 +3.169141000E3,5.814954146E1 +3.169451000E3,5.741553332E1 +3.169717000E3,5.474949866E1 +3.170064000E3,5.858087337E1 +3.170388000E3,5.901398101E1 +3.170689000E3,6.599046976E1 +3.170942000E3,6.777823262E1 +3.171184000E3,6.339704259E1 +3.171437000E3,5.678237753E1 +3.171694000E3,6.067324941E1 +3.171975000E3,6.337570500E1 +3.172215000E3,6.060254578E1 +3.172509000E3,6.511602204E1 +3.172792000E3,6.491523998E1 +3.173086000E3,6.236437487E1 +3.173442000E3,6.132637014E1 +3.173725000E3,5.575670785E1 +3.173997000E3,5.450541115E1 +3.174243000E3,5.816223835E1 +3.174516000E3,5.991084873E1 +3.174771000E3,5.959264792E1 +3.175022000E3,6.001504494E1 +3.175268000E3,5.794233494E1 +3.175510000E3,5.875384007E1 +3.175752000E3,6.582497874E1 +3.176001000E3,6.385809704E1 +3.176310000E3,6.575292490E1 +3.176700000E3,6.328122862E1 +3.176947000E3,6.160374932E1 +3.177205000E3,6.233605233E1 +3.177480000E3,5.746120395E1 +3.177733000E3,5.491961653E1 +3.178002000E3,5.346590976E1 +3.178308000E3,4.910433719E1 +3.178598000E3,5.548086035E1 +3.178876000E3,5.834728013E1 +3.179129000E3,5.722852381E1 +3.179407000E3,5.371032540E1 +3.179686000E3,5.375017527E1 +3.180066000E3,5.741446005E1 +3.180325000E3,5.595914402E1 +3.180624000E3,5.784989425E1 +3.180867000E3,5.818330240E1 +3.181112000E3,5.651638359E1 +3.181407000E3,5.400925398E1 +3.181645000E3,5.134681346E1 +3.181939000E3,5.540645654E1 +3.182189000E3,5.603348674E1 +3.182489000E3,5.612576596E1 +3.182726000E3,5.412821683E1 +3.183072000E3,5.364995955E1 +3.183373000E3,5.685067634E1 +3.183631000E3,5.292396423E1 +3.183913000E3,5.037305724E1 +3.184139000E3,5.458652507E1 +3.184386000E3,5.336216390E1 +3.184625000E3,5.355204553E1 +3.184861000E3,5.798216811E1 +3.185170000E3,5.037998219E1 +3.185412000E3,5.253320042E1 +3.185661000E3,5.864558083E1 +3.185944000E3,5.568855775E1 +3.186307000E3,6.065674046E1 +3.186594000E3,5.486017232E1 +3.186846000E3,5.354898396E1 +3.187128000E3,5.606629368E1 +3.187373000E3,5.887335608E1 +3.187646000E3,5.932986575E1 +3.187996000E3,5.618144782E1 +3.188254000E3,5.279151533E1 +3.188538000E3,5.980979660E1 +3.188819000E3,5.959008295E1 +3.189058000E3,5.757326838E1 +3.189324000E3,5.814251633E1 +3.189681000E3,6.715432083E1 +3.189929000E3,5.659786492E1 +3.190183000E3,6.813933576E1 +3.190493000E3,6.423896785E1 +3.190762000E3,6.115594562E1 +3.191063000E3,6.466877383E1 +3.191295000E3,6.400176112E1 +3.191543000E3,6.061189134E1 +3.191813000E3,6.334758009E1 +3.192062000E3,6.268892194E1 +3.192384000E3,6.255649695E1 +3.192688000E3,6.440152216E1 +3.193095000E3,6.083356984E1 +3.193368000E3,5.702207605E1 +3.193630000E3,6.129862703E1 +3.193931000E3,6.511359313E1 +3.194208000E3,6.424113032E1 +3.194458000E3,6.277957456E1 +3.194751000E3,6.067489213E1 +3.195007000E3,6.044409325E1 +3.195267000E3,5.902485869E1 +3.195523000E3,5.940450479E1 +3.195769000E3,5.629667180E1 +3.196103000E3,5.773687048E1 +3.196362000E3,5.275604571E1 +3.196676000E3,5.321996877E1 +3.196932000E3,4.952922772E1 +3.197191000E3,5.411849627E1 +3.197458000E3,5.575997519E1 +3.197718000E3,5.782402980E1 +3.197982000E3,6.092045522E1 +3.198228000E3,6.504329265E1 +3.198474000E3,5.972589974E1 +3.198713000E3,5.816644178E1 +3.198958000E3,6.190720604E1 +3.199249000E3,6.026051864E1 +3.199481000E3,6.064697026E1 +3.199744000E3,5.715218400E1 +3.200003000E3,5.509276249E1 +3.200281000E3,5.035485844E1 +3.200607000E3,5.745123346E1 +3.200874000E3,5.874041571E1 +3.201157000E3,6.540993071E1 +3.201407000E3,6.592699897E1 +3.201730000E3,5.826687879E1 +3.201982000E3,5.966898415E1 +3.202228000E3,5.928022084E1 +3.202546000E3,5.492659239E1 +3.202811000E3,5.843773228E1 +3.203091000E3,5.615478265E1 +3.203365000E3,5.378265559E1 +3.203611000E3,5.724493737E1 +3.203868000E3,5.517839982E1 +3.204137000E3,5.166422622E1 +3.204439000E3,5.966362579E1 +3.204692000E3,5.837831137E1 +3.204952000E3,5.873474045E1 +3.205216000E3,6.025432286E1 +3.205460000E3,5.709891269E1 +3.205710000E3,5.946766606E1 +3.206062000E3,5.575402329E1 +3.206367000E3,5.597615265E1 +3.206620000E3,5.417374311E1 +3.206869000E3,5.785505194E1 +3.207152000E3,5.973144393E1 +3.207405000E3,5.494944595E1 +3.207684000E3,5.859159641E1 +3.207982000E3,5.909726368E1 +3.208273000E3,6.221796591E1 +3.208541000E3,6.248597715E1 +3.208787000E3,6.143432195E1 +3.209043000E3,5.767415987E1 +3.209357000E3,6.087003136E1 +3.209636000E3,5.816954701E1 +3.209920000E3,5.644196424E1 +3.210232000E3,5.726504339E1 +3.210505000E3,5.384487818E1 +3.210769000E3,6.092886049E1 +3.211044000E3,5.910647270E1 +3.211306000E3,5.855040927E1 +3.211560000E3,6.886189365E1 +3.211803000E3,6.193548709E1 +3.212075000E3,5.895667088E1 +3.212320000E3,5.613734816E1 +3.212669000E3,6.365011223E1 +3.212934000E3,6.616065582E1 +3.213195000E3,4.911720228E1 +3.213460000E3,5.429539168E1 +3.213713000E3,5.374714305E1 +3.213991000E3,5.505703483E1 +3.214231000E3,5.216197587E1 +3.214486000E3,6.958974683E1 +3.214787000E3,6.410499727E1 +3.215047000E3,5.795707420E1 +3.215308000E3,6.210641451E1 +3.215581000E3,5.724864620E1 +3.215943000E3,5.588397230E1 +3.216221000E3,5.281586206E1 +3.216477000E3,5.616597876E1 +3.216735000E3,7.016181845E1 +3.216992000E3,7.008234703E1 +3.217238000E3,6.883905131E1 +3.217482000E3,6.039428517E1 +3.217722000E3,6.572225500E1 +3.217971000E3,6.862082655E1 +3.218221000E3,6.392739620E1 +3.218481000E3,6.757625304E1 +3.218798000E3,6.468895575E1 +3.219137000E3,5.941097234E1 +3.219443000E3,6.639331379E1 +3.219715000E3,6.512137194E1 +3.219985000E3,6.137345425E1 +3.220244000E3,6.566739727E1 +3.220494000E3,5.684090738E1 +3.220758000E3,4.865476042E1 +3.221022000E3,5.571447424E1 +3.221324000E3,5.050200483E1 +3.221601000E3,5.262698993E1 +3.221858000E3,5.385544431E1 +3.222185000E3,5.793526709E1 +3.222548000E3,5.957102097E1 +3.222796000E3,5.026005559E1 +3.223068000E3,5.164515600E1 +3.223344000E3,6.575405490E1 +3.223598000E3,6.925353270E1 +3.223876000E3,5.909751181E1 +3.224152000E3,5.561020058E1 +3.224416000E3,5.257890354E1 +3.224662000E3,5.262446891E1 +3.224954000E3,5.599583257E1 +3.225202000E3,5.286294623E1 +3.225483000E3,5.049109924E1 +3.225830000E3,6.154494550E1 +3.226096000E3,5.433068412E1 +3.226350000E3,5.256602683E1 +3.226652000E3,5.283535150E1 +3.226989000E3,5.811852242E1 +3.227251000E3,5.842389129E1 +3.227505000E3,5.524471208E1 +3.227782000E3,6.207780754E1 +3.228053000E3,6.165130850E1 +3.228302000E3,5.818085510E1 +3.228557000E3,5.646455559E1 +3.228823000E3,5.903487317E1 +3.229201000E3,5.460588060E1 +3.229471000E3,5.534537953E1 +3.229720000E3,5.492103159E1 +3.229976000E3,5.474982433E1 +3.230276000E3,6.311967749E1 +3.230531000E3,6.144237593E1 +3.230845000E3,6.204497775E1 +3.231123000E3,6.192920277E1 +3.231382000E3,6.726064707E1 +3.231675000E3,5.951322284E1 +3.231970000E3,5.620608761E1 +3.232324000E3,5.597726308E1 +3.232555000E3,5.737347613E1 +3.232845000E3,5.515502781E1 +3.233172000E3,5.977186730E1 +3.233435000E3,6.131606000E1 +3.233742000E3,5.610580070E1 +3.234000000E3,5.978218601E1 +3.234272000E3,6.319970701E1 +3.234581000E3,5.608562509E1 +3.234862000E3,6.169746582E1 +3.235159000E3,6.105762669E1 +3.235416000E3,5.369522011E1 +3.235667000E3,6.580487109E1 +3.235906000E3,5.797374086E1 +3.236200000E3,6.981267784E1 +3.236445000E3,6.229515865E1 +3.236695000E3,6.858181426E1 +3.236976000E3,5.740787399E1 +3.237218000E3,5.455964692E1 +3.237457000E3,7.204325578E1 +3.237720000E3,6.142914611E1 +3.238013000E3,5.768794211E1 +3.238280000E3,5.732491467E1 +3.238580000E3,5.793744264E1 +3.238882000E3,5.626325471E1 +3.239149000E3,5.661724856E1 +3.239424000E3,6.969605219E1 +3.239726000E3,6.482965407E1 +3.239976000E3,5.947270091E1 +3.240278000E3,5.913422796E1 +3.240576000E3,5.630232959E1 +3.240877000E3,5.956366293E1 +3.241128000E3,6.177688280E1 +3.241391000E3,5.851951662E1 +3.241664000E3,5.959787493E1 +3.241944000E3,5.765523372E1 +3.242310000E3,5.961443978E1 +3.242602000E3,5.811194000E1 +3.242910000E3,5.765320401E1 +3.243188000E3,6.631148602E1 +3.243420000E3,6.916377121E1 +3.243673000E3,6.435158828E1 +3.243925000E3,6.486926440E1 +3.244170000E3,5.506348984E1 +3.244475000E3,6.702899260E1 +3.244772000E3,6.244838658E1 +3.245003000E3,6.057959417E1 +3.245328000E3,6.103137126E1 +3.245581000E3,5.723671640E1 +3.245864000E3,5.125127512E1 +3.246123000E3,5.748187394E1 +3.246395000E3,6.148075018E1 +3.246669000E3,6.226010686E1 +3.246940000E3,5.273573389E1 +3.247233000E3,5.462141876E1 +3.247482000E3,5.946160846E1 +3.247728000E3,6.623014757E1 +3.248041000E3,5.823129903E1 +3.248289000E3,5.689561843E1 +3.248538000E3,5.851473913E1 +3.248910000E3,5.778207994E1 +3.249187000E3,6.109108533E1 +3.249462000E3,6.368024039E1 +3.249726000E3,6.527718864E1 +3.249983000E3,5.855658653E1 +3.250281000E3,5.718860903E1 +3.250534000E3,5.946900486E1 +3.250785000E3,5.688578668E1 +3.251033000E3,5.444863300E1 +3.251316000E3,5.885016251E1 +3.251570000E3,6.172482417E1 +3.251833000E3,6.833245599E1 +3.252200000E3,6.656973280E1 +3.252441000E3,6.663686281E1 +3.252721000E3,6.380106140E1 +3.252991000E3,6.113258977E1 +3.253242000E3,7.270243700E1 +3.253457000E3,7.442711013E1 +3.253706000E3,7.097589831E1 +3.253999000E3,5.740107596E1 +3.254237000E3,5.407351324E1 +3.254532000E3,6.235563554E1 +3.254777000E3,6.148535018E1 +3.255085000E3,6.767985005E1 +3.255346000E3,5.893302101E1 +3.255628000E3,5.834235484E1 +3.255897000E3,6.152524318E1 +3.256146000E3,6.124474706E1 +3.256419000E3,5.928557591E1 +3.256642000E3,5.798678480E1 +3.256921000E3,5.800318977E1 +3.257149000E3,5.813391626E1 +3.257392000E3,6.200496820E1 +3.257645000E3,6.268368020E1 +3.257945000E3,6.783162804E1 +3.258296000E3,7.343015115E1 +3.258556000E3,7.258165803E1 +3.258805000E3,6.753466802E1 +3.259117000E3,7.134403593E1 +3.259421000E3,6.813653179E1 +3.259673000E3,6.449045726E1 +3.259939000E3,7.144310958E1 +3.260188000E3,6.619195201E1 +3.260438000E3,6.990193438E1 +3.260692000E3,6.791067771E1 +3.260944000E3,7.014061601E1 +3.261191000E3,7.271368424E1 +3.261532000E3,6.889323528E1 +3.261794000E3,6.087932672E1 +3.262047000E3,6.139975131E1 +3.262322000E3,6.684035582E1 +3.262586000E3,6.977079140E1 +3.262861000E3,6.711211223E1 +3.263137000E3,6.891542739E1 +3.263415000E3,6.450575202E1 +3.263671000E3,6.375083447E1 +3.263946000E3,6.525419018E1 +3.264250000E3,6.323969714E1 +3.264517000E3,7.351653517E1 +3.264813000E3,7.240916805E1 +3.265107000E3,6.991986455E1 +3.265349000E3,6.767718353E1 +3.265598000E3,7.020318016E1 +3.265847000E3,6.593396207E1 +3.266149000E3,6.776886494E1 +3.266400000E3,6.796917668E1 +3.266653000E3,6.234495715E1 +3.266897000E3,6.492303298E1 +3.267153000E3,6.551968402E1 +3.267398000E3,6.154456079E1 +3.267647000E3,6.087933145E1 +3.267896000E3,6.053677169E1 +3.268248000E3,6.893351216E1 +3.268513000E3,6.695525456E1 +3.268817000E3,6.263553940E1 +3.269070000E3,5.965971741E1 +3.269315000E3,6.136430702E1 +3.269582000E3,7.398506568E1 +3.269828000E3,7.145137487E1 +3.270128000E3,7.238266470E1 +3.270371000E3,7.289527120E1 +3.270623000E3,7.428636164E1 +3.270931000E3,7.248535741E1 +3.271185000E3,7.399445608E1 +3.271518000E3,7.355251323E1 +3.271795000E3,7.296660624E1 +3.272081000E3,7.131368475E1 +3.272358000E3,7.068792091E1 +3.272581000E3,6.623699177E1 +3.272835000E3,5.258987188E1 +3.273093000E3,6.044165509E1 +3.273337000E3,6.879817511E1 +3.273635000E3,6.970693453E1 +3.273931000E3,7.169623139E1 +3.274180000E3,7.112396098E1 +3.274428000E3,7.190035192E1 +3.274761000E3,7.089393329E1 +3.275038000E3,6.995869622E1 +3.275323000E3,6.900781199E1 +3.275569000E3,6.766263448E1 +3.275860000E3,6.881814388E1 +3.276116000E3,6.821596427E1 +3.276370000E3,6.896702672E1 +3.276649000E3,6.827119542E1 +3.276914000E3,6.795818984E1 +3.277171000E3,7.025945887E1 +3.277482000E3,6.685661764E1 +3.277741000E3,6.810082518E1 +3.278078000E3,6.902136690E1 +3.278358000E3,6.568611650E1 +3.278604000E3,7.123802039E1 +3.278848000E3,6.300940961E1 +3.279144000E3,6.292057856E1 +3.279382000E3,6.654167697E1 +3.279622000E3,6.808014942E1 +3.279917000E3,6.902808966E1 +3.280160000E3,6.685153426E1 +3.280471000E3,6.435621527E1 +3.280770000E3,6.765080490E1 +3.281059000E3,6.808248309E1 +3.281352000E3,6.477485011E1 +3.281602000E3,5.628454157E1 +3.281867000E3,5.800927668E1 +3.282130000E3,7.131716325E1 +3.282389000E3,7.355208108E1 +3.282663000E3,7.108584109E1 +3.282932000E3,5.710440961E1 +3.283191000E3,5.329699257E1 +3.283451000E3,5.003319724E1 +3.283709000E3,5.081704645E1 +3.284003000E3,5.075383483E1 +3.284259000E3,5.431712692E1 +3.284628000E3,5.277582101E1 +3.284917000E3,6.061307876E1 +3.285214000E3,6.168657926E1 +3.285472000E3,5.854988033E1 +3.285744000E3,4.913527641E1 +3.285999000E3,5.563664353E1 +3.286250000E3,5.841488419E1 +3.286517000E3,6.437604518E1 +3.286777000E3,6.124264602E1 +3.287035000E3,5.886049633E1 +3.287300000E3,6.196549102E1 +3.287630000E3,6.776239267E1 +3.287951000E3,6.702605133E1 +3.288259000E3,5.376695086E1 +3.288499000E3,5.095339550E1 +3.288807000E3,5.078317550E1 +3.289117000E3,5.659564827E1 +3.289411000E3,7.136818215E1 +3.289684000E3,6.629708396E1 +3.289982000E3,7.133804213E1 +3.290271000E3,6.994811010E1 +3.290544000E3,6.532422657E1 +3.290800000E3,6.451013008E1 +3.291132000E3,6.261305598E1 +3.291418000E3,6.696223022E1 +3.291676000E3,4.827412656E1 +3.291930000E3,4.724575587E1 +3.292202000E3,4.846609938E1 +3.292501000E3,5.276700476E1 +3.292822000E3,5.071547801E1 +3.293065000E3,4.944777186E1 +3.293349000E3,4.466809801E1 +3.293583000E3,4.432750067E1 +3.293832000E3,5.165471909E1 +3.294078000E3,4.606912616E1 +3.294427000E3,4.826074528E1 +3.294712000E3,4.434240888E1 +3.294985000E3,4.684583968E1 +3.295286000E3,5.104787864E1 +3.295548000E3,4.839146586E1 +3.295807000E3,5.479537456E1 +3.296066000E3,5.055213000E1 +3.296324000E3,3.933656037E1 +3.296585000E3,4.513652817E1 +3.296840000E3,4.805617654E1 +3.297099000E3,4.453428427E1 +3.297354000E3,5.205427791E1 +3.297705000E3,5.001223291E1 +3.297948000E3,5.342697607E1 +3.298200000E3,5.619467550E1 +3.298461000E3,5.565459347E1 +3.298738000E3,5.819577446E1 +3.298988000E3,5.077826383E1 +3.299236000E3,5.142261821E1 +3.299478000E3,5.610754709E1 +3.299775000E3,5.248015066E1 +3.300011000E3,4.742520943E1 +3.300325000E3,5.519481303E1 +3.300626000E3,4.628613419E1 +3.300959000E3,4.430731849E1 +3.301224000E3,4.380193782E1 +3.301473000E3,4.690647127E1 +3.301746000E3,4.845294386E1 +3.302057000E3,4.912389116E1 +3.302307000E3,5.155191791E1 +3.302563000E3,5.240902416E1 +3.302820000E3,4.677306339E1 +3.303083000E3,5.037145513E1 +3.303327000E3,4.506752152E1 +3.303573000E3,4.920686196E1 +3.303857000E3,4.935493485E1 +3.304189000E3,4.415801479E1 +3.304459000E3,4.423531181E1 +3.304768000E3,3.874162391E1 +3.305030000E3,4.189958295E1 +3.305333000E3,4.005870516E1 +3.305579000E3,5.072183491E1 +3.305843000E3,4.113754863E1 +3.306140000E3,5.548273149E1 +3.306383000E3,5.383424402E1 +3.306628000E3,5.205779319E1 +3.306877000E3,4.592085607E1 +3.307206000E3,5.092451979E1 +3.307449000E3,4.823039740E1 +3.307720000E3,5.026090042E1 +3.307982000E3,5.794901070E1 +3.308198000E3,5.239372011E1 +3.308502000E3,5.024517162E1 +3.308742000E3,4.253471720E1 +3.309044000E3,4.105523794E1 +3.309340000E3,3.028117703E1 +3.309596000E3,2.809150222E1 +3.309864000E3,2.626060468E1 +3.310135000E3,5.055452447E1 +3.310501000E3,7.199271156E1 +3.310777000E3,7.172468430E1 +3.311045000E3,7.282926204E1 +3.311313000E3,7.145580608E1 +3.311562000E3,7.218798353E1 +3.311867000E3,7.081603642E1 +3.312107000E3,7.122522782E1 +3.312348000E3,7.013128466E1 +3.312672000E3,7.138239962E1 +3.312976000E3,7.589001323E1 +3.313216000E3,6.988466628E1 +3.313506000E3,6.521999768E1 +3.313853000E3,5.781158269E1 +3.314129000E3,5.698768013E1 +3.314381000E3,5.954050680E1 +3.314636000E3,5.529467486E1 +3.314903000E3,6.884377149E1 +3.315163000E3,7.293133775E1 +3.315448000E3,7.186875504E1 +3.315697000E3,6.942752239E1 +3.315995000E3,6.899930460E1 +3.316247000E3,6.333687203E1 +3.316557000E3,6.820286469E1 +3.316856000E3,7.371764624E1 +3.317124000E3,7.475494405E1 +3.317411000E3,7.135849387E1 +3.317718000E3,5.726081152E1 +3.317965000E3,5.650406291E1 +3.318233000E3,4.901561410E1 +3.318490000E3,6.881993797E1 +3.318742000E3,7.251465406E1 +3.319010000E3,6.395213402E1 +3.319311000E3,7.197127027E1 +3.319615000E3,6.948849738E1 +3.319862000E3,6.664503435E1 +3.320187000E3,6.933008182E1 +3.320443000E3,6.121514242E1 +3.320753000E3,7.017439611E1 +3.321063000E3,7.393277725E1 +3.321329000E3,7.045535337E1 +3.321643000E3,6.985180357E1 +3.321896000E3,7.158196073E1 +3.322168000E3,6.999348148E1 +3.322483000E3,6.872091406E1 +3.322823000E3,6.386396976E1 +3.323116000E3,6.891641311E1 +3.323355000E3,6.790436633E1 +3.323733000E3,6.190629476E1 +3.324010000E3,6.307072034E1 +3.324306000E3,6.459812141E1 +3.324591000E3,6.928529051E1 +3.324846000E3,6.953301961E1 +3.325158000E3,6.946121501E1 +3.325471000E3,6.177266257E1 +3.325739000E3,6.057146439E1 +3.326000000E3,6.021658005E1 +3.326269000E3,6.588088303E1 +3.326536000E3,6.594068529E1 +3.326797000E3,5.957632846E1 +3.327117000E3,5.830018402E1 +3.327415000E3,5.952820917E1 +3.327678000E3,5.996997483E1 +3.327928000E3,6.374276040E1 +3.328204000E3,6.484785648E1 +3.328504000E3,6.253699213E1 +3.328743000E3,6.495848159E1 +3.329001000E3,6.390198219E1 +3.329317000E3,6.107203426E1 +3.329613000E3,6.678300135E1 +3.329901000E3,6.048531373E1 +3.330164000E3,6.806621622E1 +3.330501000E3,6.592361883E1 +3.330795000E3,6.652249790E1 +3.331059000E3,6.079261624E1 +3.331342000E3,7.055285274E1 +3.331620000E3,6.885169705E1 +3.331870000E3,6.676175072E1 +3.332125000E3,6.653456857E1 +3.332410000E3,6.539948315E1 +3.332658000E3,6.741723145E1 +3.332915000E3,5.982571500E1 +3.333236000E3,7.234399288E1 +3.333559000E3,7.555637810E1 +3.333801000E3,7.132946849E1 +3.334053000E3,7.012473325E1 +3.334345000E3,7.083313400E1 +3.334658000E3,6.159204912E1 +3.334951000E3,5.416652771E1 +3.335187000E3,5.331536045E1 +3.335488000E3,5.516853140E1 +3.335780000E3,5.755380245E1 +3.336028000E3,6.034949591E1 +3.336335000E3,5.933559907E1 +3.336577000E3,6.200660494E1 +3.336975000E3,6.752581884E1 +3.337230000E3,6.552308109E1 +3.337509000E3,6.043162012E1 +3.337804000E3,6.346167875E1 +3.338097000E3,5.762665769E1 +3.338354000E3,6.046465836E1 +3.338657000E3,5.841838084E1 +3.338937000E3,5.426549819E1 +3.339182000E3,5.312925890E1 +3.339425000E3,5.904532039E1 +3.339705000E3,5.548841740E1 +3.339970000E3,6.467955136E1 +3.340311000E3,6.518540616E1 +3.340567000E3,6.130157495E1 +3.340843000E3,4.234380604E1 +3.341102000E3,3.685811557E1 +3.341367000E3,5.229521155E1 +3.341631000E3,4.577123603E1 +3.341913000E3,5.522804687E1 +3.342191000E3,7.219670231E1 +3.342497000E3,6.138541536E1 +3.342739000E3,5.883033505E1 +3.342994000E3,5.692990468E1 +3.343272000E3,5.784770175E1 +3.343584000E3,5.851150722E1 +3.343847000E3,7.127137910E1 +3.344137000E3,7.004437015E1 +3.344432000E3,6.719880262E1 +3.344677000E3,6.266500726E1 +3.344966000E3,6.662051616E1 +3.345209000E3,6.259160849E1 +3.345462000E3,6.521765959E1 +3.345762000E3,6.373477950E1 +3.346056000E3,5.976833176E1 +3.346294000E3,5.557373783E1 +3.346597000E3,5.486821605E1 +3.346842000E3,4.854970484E1 +3.347096000E3,6.338774242E1 +3.347415000E3,6.646909489E1 +3.347712000E3,6.370164725E1 +3.347950000E3,6.577012972E1 +3.348257000E3,6.536203326E1 +3.348509000E3,5.777033235E1 +3.348799000E3,6.942121279E1 +3.349070000E3,6.552465655E1 +3.349329000E3,6.400867966E1 +3.349583000E3,5.955829212E1 +3.349911000E3,6.233007104E1 +3.350154000E3,7.360271557E1 +3.350432000E3,7.402471070E1 +3.350716000E3,7.225249055E1 +3.350966000E3,6.654334459E1 +3.351200000E3,6.590758849E1 +3.351507000E3,6.143698167E1 +3.351805000E3,7.197722167E1 +3.352079000E3,6.778594348E1 +3.352307000E3,5.712392879E1 +3.352566000E3,5.659236121E1 +3.352870000E3,5.352359430E1 +3.353127000E3,5.362353429E1 +3.353366000E3,5.964860406E1 +3.353638000E3,7.164177428E1 +3.353890000E3,6.730234717E1 +3.354173000E3,5.336089185E1 +3.354435000E3,4.770751864E1 +3.354689000E3,4.833001031E1 +3.354956000E3,4.464972004E1 +3.355220000E3,6.809720152E1 +3.355493000E3,7.032616040E1 +3.355723000E3,7.137092547E1 +3.356052000E3,7.106236065E1 +3.356287000E3,7.302101107E1 +3.356599000E3,6.868512076E1 +3.356867000E3,7.134905494E1 +3.357133000E3,7.032184319E1 +3.357463000E3,6.484515560E1 +3.357753000E3,5.949029357E1 +3.358081000E3,6.553405106E1 +3.358385000E3,5.460622041E1 +3.358634000E3,4.798111952E1 +3.358902000E3,5.356090224E1 +3.359186000E3,5.091993104E1 +3.359516000E3,5.980463665E1 +3.359805000E3,5.623340998E1 +3.360124000E3,4.885342740E1 +3.360404000E3,4.536632542E1 +3.360660000E3,5.726647509E1 +3.360941000E3,6.266477325E1 +3.361245000E3,5.265432523E1 +3.361521000E3,4.746518361E1 +3.361777000E3,5.341135388E1 +3.362038000E3,5.094337921E1 +3.362292000E3,5.832737886E1 +3.362616000E3,5.247742127E1 +3.363049000E3,5.123926483E1 +3.363313000E3,4.482127206E1 +3.363600000E3,4.813050338E1 +3.363848000E3,5.751744958E1 +3.364157000E3,5.045245795E1 diff --git a/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a3/MyWorld.java b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a3/MyWorld.java new file mode 100644 index 0000000..8ebbe35 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a3/MyWorld.java @@ -0,0 +1,36 @@ +import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot und MouseInfo) + +/** + * Ergänzen Sie hier eine Beschreibung für die Klasse MyWorld. + * + * @author (Ihr Name) + * @version (eine Versionsnummer oder ein Datum) + */ +public class MyWorld extends World +{ + + /** + * Konstruktor für Objekte der Klasse MyWorld + * + */ + public MyWorld() + { + // Erstellt eine neue Welt mit 1200x900 Pixeln + super(1000, 700, 1); + + prepare(); + } + + + /** + * Bereite die Welt für den Programmstart vor. + * Das heißt: Erzeuge die Anfangs-Objekte und füge sie der Welt hinzu. + */ + private void prepare() + { + XYDiagramm d = new XYDiagramm(); + addObject(d,500,350); + + } +} + diff --git a/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a3/Picture.java b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a3/Picture.java new file mode 100644 index 0000000..8df3d55 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a3/Picture.java @@ -0,0 +1,699 @@ +import java.awt.image.*; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.BasicStroke; +import java.util.Vector; +import javax.imageio.*; +import java.io.*; +import java.awt.*; +import javax.swing.*; +import java.util.Random; +import java.awt.geom.AffineTransform; +/** + * + * Bildklasse für die Simulation von Processing-Befehlen + * + * Diese Klasse stellt ein BufferedImage bereit, in das mit Processing-Befehlen gezeichnet + * werden kann. + * Zusätzlich kann ein Bildanzeiger über jede Änderung des Bildes informiert werden, + * um "Zurück"-Befehle zu ermöglichen. Der Bildanzeiger ist entweder eine normale Java + * ScrollPane oder ein Actor aus Greenfoot. + * Die Dokumentation der einzelnen Zeichenmethoden ist der Processing-Reference + * (https://processing.org/reference/ steht unter CC-Lizenz: https://creativecommons.org/) + * entnommen und mit Deepl.com ins Deutsche übersetzt. + * + * @version 1.0 from 23.01.2019 + * @author Thomas Schaller (ZPG Informatik Klasse 9) + */ + +public class Picture{ + + // Einstellungmöglichkeiten für das Zeichnen von Rechtecken und Ellipsen + // RADIUS = Mittelpunkt+Radius wird gegeben, CENTER = Mittelpunkt und Breite/Höhe wird gegeben, + // CORNER = Linke obere Ecke + Breite/Höhe, CORNERS = Linke obere und rechte untere Ecke + public static final int RADIUS = 1; + public static final int CENTER = 2; + public static final int CORNER = 3; + public static final int CORNERS = 4; + + // gespeichertes Bild, + private BufferedImage image; + + // aktuelle Farbeinstellungen + private Color background; + private Color pencolor; + private Color fillcolor; + + // aktuelle Stiftdicke + private double stroke; + + // akkteller Koordinatenmodus von Rechtecken und Ellipsen + private int ellipseMode = CENTER; + private int rectMode = CORNER; + + // aktueller Font + private Font textfont = null; + + // muss ein Bildanzeiger benachrichtigt werden + private PictureViewer observer = null; + private boolean autorefresh = true; + + /** + * Erzeugt ein Bild mit Standardgröße 500x400 + */ + public Picture() { + this(500,400); + } + + /** + * Erzeugt ein Bild der angegeben Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public Picture(int width, int height) { + this(width,height, "D0D0D0"); + } + + /** + * Erzeugt ein Bild aus einer Datei + * @param filename Dateiname des Bildes + */ + public Picture(String filename) { + load(filename); + } + + /** + * Erzeugt ein Bild der angegebenen Größe mit festgelegtem Hintergrund + * @param width Breite des Bildes + * @param height Höhe des Bildes + * @param background Farbe des Hintergrunds + */ + public Picture(int width, int height, String background) { + this.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + this.background = decode(background); + this.pencolor = new Color(0,0,0); + this.stroke = 1; + this.fillcolor = null; + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(this.background); + g.fillRect(0,0,width-1, height-1); + } + + /** + * Legt fest, wer das Bild anzeigt. + * Diese ermöglicht die Benachrichtung des Observers, wenn sich das Bild ändert. + * @param observer Anzeiger des Bildes + */ + + public void setObserver(PictureViewer observer) { + this.observer= observer; + } + + /** + * Direktes Setzen des Bildes (für interne Zwecke) + * @param b Bild, das gespeichert werden soll. + */ + public void setImage(BufferedImage b) { + image = b; + } + + /** + * Direktes Abfragen des Bildes (für interne Zwecke) + * @return Bild, das gerade gespeichert ist. + */ + public BufferedImage getImage() { + return image; + } + + /** + * Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + * Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + * der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu. + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public void size(int width, int height){ + pushImage(); + this.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(background); + g.fillRect(0,0,width-1, height-1); + } + + /** + * Liefert die Breite des Bildes zurück. + * @return Breite des Bildes + */ + public int getWidth() { + return image.getWidth(); + } + + /** + * Liefert die Höhe des Bildes zurück. + * @return Höhe des Bildes + */ + public int getHeight() { + return image.getHeight(); + } + + + /** + * Erzeugt eine Kopie des Bildes und übergibt sie an den Observer (falls existent), damit dieser die Versionen speichern kann + */ + private void pushImage() { + if(observer != null) { + observer.pushImage(); + } + } + + + /** + * Legt fest, ob nach jedem Zeichenbefehl automatisch das Bild auch in + * der Oberfläche aktualisiert wird. Die Einstellung "false" beschleunigt + * das Zeichnen aufwändiger Bilder und verhindert "Flackern". + * Das Neuzeichnen kann durch die Methode "refresh" gezielt ausgelöst werden. + * @param autorefresh true = nach jedem Zeichenbefehl die Anzeige aktualisieren, false= nur durch die Methode refresh neu zeichnen + */ + public void setAutoRefresh(boolean autoRefresh) { + this.autorefresh = autoRefresh; + } + + + /** + * Auch die anzeigenden Klasse wird zum Neuzeichnen aufgefordert. + */ + private void repaint() { + if(observer != null && autorefresh) { + observer.repaint(); + } + } + + /** + * Auch die anzeigenden Klasse wird zum Neuzeichnen aufgefordert. + */ + public void refresh() { + if(observer != null) { + observer.repaint(); + } + } + + // ----------------------------------------- Zeichenfunktionen ----------------------------------------------- + /** + * Löscht den Inhalt des Bildes. + * Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt. + */ + + public void clear(){ + pushImage(); + image = new BufferedImage(image.getWidth(), image.getHeight(), image.getType()); + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(background); + g.fillRect(0,0,image.getWidth()-1, image.getHeight()-1); + repaint(); + } + + /** + * Konvertiert die in einem bestimmten Modus gegebenen Koordinaten in die Java-übliche Links_Oben_Breite_Höhe Version + * Die Änderungen werden direkt im Array vorgenommen + * @param coord Array mit vier Koordinateneinträgen im gegebenen Modus + * @param mode Modus der Koordinaten (CORNER, CORNERS, RADIUS oder CENTER) + */ + private void convert(int[] coord, int mode) { + switch(mode) { + case CORNER: break; + case CORNERS: coord[2] -= coord[0]; coord[3] -= coord[1]; break; + case RADIUS: coord[2] *= 2; coord[3] *=2; + case CENTER: coord[0] -= coord[2]/2; coord[1] -= coord[3]/2; + } + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + * Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + * Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void rectMode(int mode) { + rectMode = mode; + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + * Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + * Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als Breite und Höhe der Form. + * ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void ellipseMode(int mode) { + ellipseMode = mode; + } + + + + /** + * Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + * Um eine Linie einzufärben, verwenden Sie die {@link #stroke(int, int, int) stroke()} Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + * Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + * {@link #strokeWeight(double) strokeWeight()} geändert werden. + * @param x1 x-Koordinate des 1. Punktes + * @param y1 y-Koordinate des 1. Punktes + * @param x2 x-Koordinate des 2. Punktes + * @param y2 y-Koordinate des 2. Punktes + */ + public void line(int x1, int y1, int x2, int y2) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + if (stroke > 0) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawLine(x1, y1, x2, y2); + } + repaint(); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, rectMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillRect(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawRect(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, ellipseMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillOval(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawOval(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + int px[] = {x1, x2, x3}; + int py[] = {y1, y2, y3}; + polygon(px, py); + + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + + int px[] = {x1, x2, x3, x4}; + int py[] = {y1, y2, y3, y4}; + polygon(px, py); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + + public void polygon(int[] x, int[] y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(fillcolor != null) { + + g.setColor(fillcolor); + g.fillPolygon(x,y, y.length); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawPolygon(x, y, x.length); + } + repaint(); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + ellipse(x,y,1, 1); + + } + + // ----------------------------------------- Schriftdarstellung ----------------------------------------------- + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param s Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String s, int x, int y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(pencolor != null) { + g.setColor(fillcolor); + g.setStroke(new BasicStroke((float) stroke)); + g.setFont(textfont); + g.drawString(s, x, y); + } + repaint(); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + this.textfont = font; + } + + + // ----------------------------------------- Farbfestlegungen ----------------------------------------------- + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(String color) { + try{ + return new Color( + Integer.valueOf( color.substring( 0, 2 ), 16 ), + Integer.valueOf( color.substring( 2, 4 ), 16 ), + Integer.valueOf( color.substring( 4, 6 ), 16 ) ); + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(int color) { + try{ + if(color >=0 && color < 256) { + return new Color(color,color,color); + } else { + int r = color / 0x010000 % 0xFF; + int g = color / 0x000100 % 0xFF; + int b = color % 0xFF; + System.out.println(""+r+","+g+","+b); + return new Color(r, g, b ); + } + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + this.pencolor = decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + this.pencolor=decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + this.pencolor = new Color(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + this.pencolor = null; + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + this.stroke = width; + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + this.fillcolor = decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + this.fillcolor=decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + this.fillcolor = new Color(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + this.fillcolor = null; + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + if(c < 256) { + this.background=new Color(c,c,c); + } else { + int r = c / 0x010000; + int g = c / 0x000100 % 0xFF; + int b = c % 0xFF; + this.background= new Color(r, g, b ); + } + + this.clear(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + this.background=new Color(r,g,b); + this.clear(); + } + + +// ----------------------------------------- Dateioperationen ----------------------------------------------- + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + try{ + this.image = ImageIO.read(new File(filename)); + this.background = decode("D0D0D0"); + this.pencolor = new Color(0,0,0); + this.fillcolor = null; + this.stroke = 1; + this.repaint(); + + } catch(Exception e) { + System.out.println("Fehler beim Einlesen der Bilddatei"); + } + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + try{ + String[] fn = filename.split("\\."); + if (fn.length== 1) { + ImageIO.write(image, "PNG", new File(filename+".png")); + } else { + + if (fn.length == 2 && (fn[1].toUpperCase().equals("PNG") || + fn[1].toUpperCase().equals("GIF"))){ + ImageIO.write(image, fn[1], new File(filename)); + }else { + System.out.println("Unbekanntes Bildformat"); + } + } + + } catch(Exception e) { + System.out.println("Fehler beim Speichern"); + } + } + + +// ----------------------------------------- Sonstiges ----------------------------------------------- + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + + public Color[][] getPixelArray() { + Color[][] pixel = new Color[image.getWidth()][image.getHeight()]; + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + pixel[x][y] = new java.awt.Color(image.getRGB(x,y)); + } + } + return pixel; + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + size(pixel.length,pixel[0].length); + Graphics2D g = (Graphics2D) image.getGraphics(); + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + g.setColor(pixel[x][y]); + g.fillRect(x, y, 1, 1); + } + } + repaint(); + } + + /** + * Hilfsfunktion zum Verzögern der Ausgabe + * @param millis Wartezeit in Millisekunden + */ + public void delay(int millis) { + try{ + Thread.sleep(millis); + + } catch(Exception e) { + + } + + } + + + +} diff --git a/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a3/PictureViewer.java b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a3/PictureViewer.java new file mode 100644 index 0000000..ecbb521 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a3/PictureViewer.java @@ -0,0 +1,499 @@ +import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot und MouseInfo) +import java.awt.image.*; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.BasicStroke; +import java.awt.Font; +import java.util.Vector; +import java.awt.Color; +import javax.imageio.*; +import java.io.*; + +/** + * Der PictureViewer ist ein Actor, der in der Lage ist ein + * Objekt der Klasse Picture anzuzeigen. Zusätzlich können + * mehrere Verarbeitungsschritte gespeichert werden, um ein + * "zurück"-Funktion zu ermöglichen. + * + * @author Thomas Schaller + * @version V1.0 vom 10.02.2019 + */ +public class PictureViewer extends Actor +{ + public static final int FIT = -1; + public static final int NORMAL = 1; + + private static final int ANZ_BACK = 0; + + private double zoom; + protected Picture picture = null; + private Vector history; + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der Größe 500x400 + */ + public PictureViewer() { + this(500,400); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public PictureViewer(int width, int height) { + this(width,height, "D0D0D0"); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + * @param background Farbe des Hintergrunds als HEX-String (z.B. "FF3A45") + */ + public PictureViewer(int width, int height, String background) { + picture = new Picture(width,height, background); + picture.setObserver(this); + this.history = new Vector(); + this.zoom = NORMAL; + repaint(); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild aus einer Bilddatei + * @param filename Name des Bildes + */ + public PictureViewer(String filename) { + picture = new Picture(filename); + picture.setObserver(this); + this.history = new Vector(); + this.zoom = NORMAL; + repaint(); + } + + /** + * Speichert das übergebene Bild in der History. + * @param b zu speicherndes Bild + */ + public void pushImage() { + if( this.ANZ_BACK > 0) { + if(history.size() == this.ANZ_BACK) { + history.removeElementAt(0); + } + + BufferedImage b = new BufferedImage(picture.getWidth(), picture.getHeight(), picture.getImage().getType()); + Graphics g = b.getGraphics(); + g.drawImage(picture.getImage(), 0, 0, null); + g.dispose(); + + history.add(b); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + private void popImage() { + int anz = history.size(); + if(anz>0) { + BufferedImage i = history.get(anz-1); + history.removeElementAt(anz-1); + picture.setImage(i); + repaint(); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + public void back() { + popImage(); + } + + /** + * Setzt den Zoom-Faktor für das Bild. + * Als Zoomfaktor sind auch die Konstanten Bildanzeiger.FIT (auf Bildschirmgröße zoomen) und Bildanzeiger.NORMAL (100%) möglich. + * @param factor Zoomfaktor (1.0 = 100%). + */ + public void setZoom(double zoom) { + this.zoom = zoom; + repaint(); + } + + /** + * Setzt die automatische Neuanzeige des Bildes. + * Mit dieser Methode kann man einstellen, ob nach jedem Zeichenbefehl + * die Anzeige auf dem Bildschirm aktualisiert werden soll. Bei sehr + * vielen Zeichenbefehlen wird die Ausgabe dadurch sehr langsam. Es reicht + * eine Anzeige am Ende der Zeichenbefehle. Rufen Sie dann für das Neuzeichnen + * die Methode refresh() auf. + * @param autoRefresh true, wenn nach jedem Zeichenbefehl die Anzeige aktualisiert werden soll. + */ + public void setAutoRefresh(boolean autoRefresh) { + picture.setAutoRefresh(autoRefresh); + } + + /** + * Sorgt für die Aktualisierung der Bildschrimanzeige. Das aktuelle Bild + * wird dadurch angezeigt. Durch Einstellung von autoRefresh kann die + * Anzeige automatisiert werden. + */ + public void refresh() { + repaint(); + } + + /** + * Setzt das angezeigt Bild neu und beachtet dabei den Zoomfaktor. + */ + public void repaint() { + double faktor = zoom; + + if (zoom == FIT) { + double faktorw = (double) this.getWorld().getWidth() / picture.getWidth(); + double faktorh = (double) this.getWorld().getHeight() / picture.getHeight(); + faktor = Math.min(faktorw, faktorh); + } + int gfi_width = (int) (picture.getWidth()*faktor); + int gfi_height = (int) (picture.getHeight()*faktor); + + setImage(new GreenfootImage(gfi_width, gfi_height)); + Graphics2D g = (Graphics2D) this.getImage().getAwtImage().getGraphics(); + g.drawImage(picture.getImage(),0,0,gfi_width, gfi_height, 0, 0, picture.getWidth(), picture.getHeight(), null); + g.setColor(new java.awt.Color(0,0,0)); + g.setStroke(new BasicStroke((float) 1)); + g.drawRect(0,0,gfi_width-1, gfi_height-1); + + } + + // Wrappermethoden + /** + * Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + * Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + * der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu. + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public void size(int width, int height){ + picture.size(width, height); + } + + /** + * Liefert die Breite des Bildes zurück. + * @return Breite des Bildes + */ + public int getImageWidth() { + return picture.getWidth(); + } + + /** + * Liefert die Höhe des Bildes zurück. + * @return Höhe des Bildes + */ + public int getImageHeight() { + return picture.getHeight(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + picture.background(c); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + picture.background(r,g,b); + } + + /** + * Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + * Um eine Linie einzufärben, verwenden Sie die {@link #stroke(int, int, int) stroke()} Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + * Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + * {@link #strokeWeight(double) strokeWeight()} geändert werden. + * @param x1 x-Koordinate des 1. Punktes + * @param y1 y-Koordinate des 1. Punktes + * @param x2 x-Koordinate des 2. Punktes + * @param y2 y-Koordinate des 2. Punktes + */ + public void line(int x1, int y1, int x2, int y2) { + picture.line(x1,y1,x2,y2); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + picture.rect(a,b,c,d); + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + picture.ellipse(a,b,c,d); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + picture.triangle(x1,y1,x2,y2,x3,y3); + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + picture.quad(x1,y1,x2,y2,x3,y3,x4,y4); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + public void polygon(int[] x, int[] y) { + picture.polygon(x,y); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + picture.point(x,y); + + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + * Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + * Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void rectMode(int mode) { + picture.rectMode(mode); + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + * Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + * Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als Breite und Höhe der Form. + * ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void ellipseMode(int mode) { + picture.ellipseMode(mode); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + picture.stroke(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + picture.noStroke(); + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + picture.strokeWeight(width); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + picture.fill(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + picture.noFill(); + } + + /** + * Löscht den Inhalt des Bildes. + * Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt. + */ + public void clear(){ + picture.clear(); + } + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + picture.load(filename); + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + picture.save(filename); + } + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param t Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String t, int x, int y) { + picture.text(t,x,y); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + picture.textFont(font); + } + + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + public Color[][] getPixelArray() { + return picture.getPixelArray(); + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + picture.setPixelArray(pixel); + } + + +} + diff --git a/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a3/Table.java b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a3/Table.java new file mode 100644 index 0000000..ee5a211 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a3/Table.java @@ -0,0 +1,894 @@ +/** + * Die Klasse Table vereinfacht den Zugriff auf CSV-Dateien. + * Die Klassen Table und TableRow ermöglichen einen einfachen Zugriff auf tabellenbasierte + * Dokumente. + * + * @author Thomas Schaller + * @version 1.0 vom 01.02.2019 + */ + +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.ArrayList; +import java.io.*; +import java.util.Scanner; + +import org.jdom.Document; +import org.jdom.Element; +import org.jdom.Attribute; +import org.jdom.JDOMException; +import org.jdom.input.SAXBuilder; +import org.jdom.output.XMLOutputter; +import org.jdom.output.Format; + +public class Table +{ + // Standardtrennzeichen für Spalten + private static final char DEFAULT_SEPARATOR = ';'; + // Standardmarkierung für Texte + private static final char DEFAULT_QUOTE = '"'; + // Standardtrennzeichen für Dezimalzahlen + private static final char DEFAULT_COMMA = ','; + + // mögliche Spaltentypen + private static final String UNKNOWN ="UNKOWN"; + private static final String INT = "INTEGER"; + private static final String DOUBLE = "DOUBLE"; + private static final String FLOAT = "FLOAT"; + + // interne Verwaltung des Dokuments als JDOM-Document-Objekt + private Document doc; + // Verweis auf Element für Kopfzeile + private Element header; + // Ende Attribute + + /** + * Erzeugt leeres Tabellen-Dokument. + */ + public Table() { + this.doc = new Document(); + doc.setRootElement(new Element("CSV-Data")); + this.header = new Element("Header"); + doc.getRootElement().addContent(header); + } + + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei und erstellt ein Tabellenobjekt mit seinen Werten. + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public Table(String filename, String options, char separator, char quote) { + loadCSV(filename, options, separator, quote); + } + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei und erstellt ein Tabellenobjekt mit seinen Werten (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + */ + public Table(String filename, String options) { + loadCSV(filename, options); + } + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei ohne Kopfzeile und erstellt ein Tabellenobjekt mit seinen Werten (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public Table(String filename) { + loadCSV(filename); + } + + // Anfang Methoden + /** + * Liest den Inhalt einer CSV-Datei ohne Kopfzeile (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public void loadCSV(String filename) { + loadCSV(filename, ""); + } + + /** + * Liest den Inhalt einer CSV-Datei (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + */ + public void loadCSV(String filename, String options) { + loadCSV(filename, options, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** + * Liest den Inhalt einer CSV-Datei. + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public void loadCSV(String filename, String options, char separator, char quote) { + doc = new Document(); + doc.setRootElement(new Element("CSV-Data")); + header = new Element("Header"); + doc.getRootElement().addContent(header); + try { + File f = new File(filename); + Scanner scanner = new Scanner(new File(filename)); + if(options.toLowerCase().contains("header") && scanner.hasNext()) { + List entries = parseLine(scanner.nextLine(), separator, quote); + int i= 0; + for(String s : entries) { + Element entry = new Element("Column"); + header.addContent(entry); + entry.setText(s); + entry.setAttribute("type", "unknown"); + i++; + } + } + + List cols = header.getChildren(); + + while (scanner.hasNext()) { + Element line = new Element("Row"); + doc.getRootElement().addContent(line); + List entries = parseLine(scanner.nextLine(), separator, quote); + int i= 0; + + for(String s : entries) { + + if(i==cols.size()) { + Element entry = new Element("Column"); + entry.setAttribute("type", "unknown"); + header.addContent(entry); + cols = header.getChildren(); + } + + Element entry = new Element("Entry"); + entry.setText(s); + line.addContent(entry); + i++; + } + } + scanner.close(); + + } catch (Exception e) { + System.out.println("Fehler beim Lesen der CSV-Datei"); + } + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei ohne Kopfzeile (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public void saveCSV(String filename) { + saveCSV(filename, ""); + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthalten, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile haben soll, + * dann lassen Sie einfach die Option "header" weg. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile haben soll. + * @param filename Dateiname der CSV-Datei. + */ + public void saveCSV(String filename, String options) { + saveCSV(filename, options, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei. + * Wenn die Datei eine Kopfzeile enthalten, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile haben soll, + * dann lassen Sie einfach die Option "header" weg. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile haben soll. + * @param filename Dateiname der CSV-Datei. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public void saveCSV(String filename, String options, char separator, char quote){ + try{ + File f = new File(filename); + PrintStream outputFile = new PrintStream (f); + System.out.println("Speicher in : "+f.getAbsolutePath()); + List columns = header.getChildren(); + String sq = ""+quote; + String ss = ""+separator; + if(quote =='"') sq = "\""; + if(separator =='"') ss = "\""; + + if(options.toLowerCase().contains("header")) { + String h = ""; + for(Element c : columns) { + h += ss + sq + c.getText()+sq; + } + outputFile.println(h.substring(1)); + } + for(int i = 0; i parseLine(String cvsLine) { + return parseLine(cvsLine, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** HIlfsfunktion für die Analyse einer Dateizeile + * @param cvsLine Zeile aus der Datei + * @param sparator Trennzeichen für die Spalten + * @return Liste von String für die einzelnen Spalten + */ + private List parseLine(String cvsLine, char separator) { + return parseLine(cvsLine, separator, DEFAULT_QUOTE); + } + + /** HIlfsfunktion für die Analyse einer Dateizeile + * @param cvsLine Zeile aus der Datei + * @param sparator Trennzeichen für die Spalten + * @param customQuote Kennung für Strings + * @return Liste von String für die einzelnen Spalten + */ + private List parseLine(String cvsLine, char separator, char customQuote) { + + List result = new ArrayList<>(); + + //if empty, return! + if (cvsLine == null && cvsLine.isEmpty()) { + return result; + } + + //ggf. Default-Value laden + if (customQuote == ' ') { + customQuote = DEFAULT_QUOTE; + } + + if (separator == ' ') { + separator = DEFAULT_SEPARATOR; + } + + StringBuffer curVal = new StringBuffer(); + boolean inQuotes = false; + boolean startCollectChar = false; + boolean doubleQuotesInColumn = false; + + char[] chars = cvsLine.toCharArray(); + + for (char ch : chars) { + + if (inQuotes) { // aktueller Text ist in Quotes eingeschlossen + startCollectChar = true; + + if (ch == customQuote) { // Quotes werden beendet, aber Achtung bei "" => Metazeichen + inQuotes = false; + if (ch == '\"') { + doubleQuotesInColumn = true; + } + + } else { + + if (ch == '\"' && !doubleQuotesInColumn) { + doubleQuotesInColumn = true; + } else { + curVal.append(ch); + doubleQuotesInColumn = false; + } + + } + } else { + if (ch == customQuote) { + + inQuotes = true; + + //Fixed : allow "" in empty quote enclosed + if (ch == '\"'){ + if(doubleQuotesInColumn) { + curVal.append('"'); + doubleQuotesInColumn = false; + } else doubleQuotesInColumn = true; + + + } + } + else { + doubleQuotesInColumn = false; + if (ch == separator) { + + result.add(curVal.toString()); + + curVal = new StringBuffer(); + startCollectChar = false; + + } else if (ch == '\r') { + //ignore LF characters + continue; + } else if (ch == '\n') { + //the end, break! + break; + } else { + curVal.append(ch); + } + } + } + + } + result.add(curVal.toString()); + return result; + } + + /** + * Sucht die Nummer einer durch Namen gegebenen Spalte. + * @param name Name der Spalte + * @return Nummer der Spalte + */ + + private int findColumnNumber(String name) { + List columns = header.getChildren(); + int i = 0; + for(Element c : columns) { + if (c.getText().toLowerCase().equals(name.toLowerCase())) { + return i; + + } + i++; + } + return -1; + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an. + */ + public void addColumn() { + Element entry = new Element("Column"); + entry.setAttribute("type", Table.UNKNOWN); + header.addContent(entry); + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an und benennt sie. + * @param title Bezeichnung der Spalte + */ + public void addColumn(String title) { + addColumn(); + Element nc = ((List)(header.getChildren())).get(header.getChildren().size()-1); + nc.setText(title); + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an und benennt und typisiert sie. + * @param title Bezeichnung der Spalte + * @param type Typ der Spalte (UNKNOWN, DOUBLE, INTEGER, FLOAT) + */ + public void addColumn(String title, String type) { + addColumn(title); + Element nc = ((List)(header.getChildren())).get(header.getChildren().size()-1); + nc.setAttribute("type", type); + } + + /** + * Löscht eine Spalte. + * @param i Nummer der Spalte. + */ + public void removeColumn(int i) { + List lines = doc.getRootElement().getChildren(); + for(Element l : lines) { + if(l.getChildren().size()>i) l.removeContent(i); + } + } + + /** + * Löscht eine Spalte + * @param name Name der Spalte + */ + public void removeColumn(String name) { + try{ + removeColumn(findColumnNumber(name)); + } catch(Exception e) { System.out.println("Unbekannter Spaltenname");} + } + + /** + * Liefert die Anzahl der Spalten in der Tabelle + * @return Anzahl der Spalten + */ + public int getColumnCount() { + return header.getChildren().size(); + } + + /** + * Liefert die Anzahl der Zeilen in der Tabelle + * @return Anzahl der Zeilen + */ + public int getRowCount() { + return doc.getRootElement().getChildren().size()-1; + } + + /** + * Löscht alle Zeilen der Tabelle. + * Die Spaltenüberschriften und Typen bleiben erhalten. + */ + public void clearRows() { + doc.getRootElement().removeChildren("Row"); + } + + /** + * Fügt eine neue Zeile an das Ende der Tabelle an. + * @return ein TableRow-Objekt für diese neue Zeile + */ + public TableRow addRow() { + Element row = new Element("Row"); + doc.getRootElement().addContent(row); + return new TableRow(doc, row); + } + + /** + * Löscht eine Zeile + * @param i Nummer der Zeile + */ + public void removeRow(int i) { + if(i rows = doc.getRootElement().getChildren(); + return new TableRow(doc, rows.get(i+1)); + } + return null; + } + + /** + * Liefert die ganze Tabelle als Array von TableRow-Objekten + * @return Array von TableRow-Objekten + */ + public TableRow[] rows() { + TableRow[] rows = new TableRow[getRowCount()]; + for(int i = 0; i < getRowCount(); i++) { + rows[i] = getRow(i); + } + return rows; + } + + /** + * Liefert den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param column Spaltennummer + * @return Wert der Zelle + */ + public int getInt(int row, int column) { + return getRow(row).getInt(column); + } + + /** + * Liefert den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param name Name der Spalte + * @return Wert der Zelle + */ + public int getInt(int row, String name) { + return getRow(row).getInt(name); + } + + /** + * Setzt den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param column Spaltennummer + * @param value neuer Wert der Zelle + */ + public void setInt(int row, int column,int value) { + getRow(row).setInt(column, value); + } + + /** + * Setzt den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(int row, String name, int value) { + getRow(row).setInt(name, value); + } + + /** + * Liefert alle Werte einer Zeile als Integer-Array. + * @param row Nummer der Zeile + * @return int-Array, dass alle Werte der Zeile enthält + */ + public int[] getIntRow(int row) { + try{ + TableRow trow = getRow(row); + int anz = getColumnCount(); + int[] r = new int[anz]; + for(int i=0; i) (header.getChildren())).get(i).getText(); + } else { + return ""; + } + } + + /** + * Liefert die Nummer einer Spalte + * @param name Name der Spalte + * @return Nummer der Spalte + */ + public int getColumn(String name) { + List columns = header.getChildren(); + int i = 0; + while (i < columns.size()) { + if (columns.get(i).getText().toLowerCase().equals(name.toLowerCase())) { + return i; + } + i++; + } // end of while + return -1; + } + + + /** + * Erzeugt eine neue Zeile mit i Spalten + * Wenn bisher nicht genügend Spalten vorhanden sind, werden automatisch neue Spalten hinzugefügt (auch zum Header) + * @param i Anzahl der Spalten + */ + private Element buildRow(int i) { + List columns = header.getChildren(); + Element entry=null; + for(int j=0; j<=i; j++) { + + if(j==columns.size()) { + Element h = new Element("Column"); + h.setAttribute("type", "unknown"); + header.addContent(h); + columns = header.getChildren(); + } + if(j==current.getChildren().size()) { + entry = new Element("Entry"); + current.addContent(entry); + + } + + } + return entry; + + } + + /** + * Erzeugt eine neue Zeile. + * Es werden genügend Spalten erzeugt, dass ein Wert in Spalte "name" eingetragen werden kann + * @param name Name der Spalte + */ + private Element buildRow(String name) { + List columns = header.getChildren(); + int i = 0; + for(Element c: columns) { + + if(c.getText().toLowerCase().equals(name.toLowerCase())) { + return buildRow(i); + } + i++; + } + return null; + + } + + /** + * Liefert den Wert einer Zelle als String + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public String getString(int i) { + if(i >= current.getContent().size()) return ""; + Element e = (Element) current.getContent(i) ; + if(e!=null) { + return e.getText(); + } else { + return ""; + } + } + + /** + * Liefert den Wert einer Zelle als String + * @param name Name der Spalte + * @return Wert der Zelle + */ + public String getString(String name) { + return getString(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als String + * @param i Nummer der Spalte + * @param text neuer Wert der Zelle + */ + public void setString(int i, String text) { + + Element e = buildRow(i); + if(e!=null) e.setText(text); + } + + /** + * Setzt den Wert einer Zelle als String + * @param name Name der Spalte + * @param text neuer Wert der Zelle + */ + public void setString(String name, String text) { + Element e = buildRow(name); + if(e!=null) e.setText(text); + } + + + /** + * Liefert den Wert einer Zelle als Int-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public int getInt(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Integer.parseInt(e.getText()); + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Int-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public int getInt(String name) { + return getInt(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Int-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(int i,int value) { + + Element e = buildRow(i); + if(e!=null) e.setText(""+value); + } + + /** + * Setzt den Wert einer Zelle als Int-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(String name, int value) { + Element e = buildRow(name); + if(e!=null) e.setText(""+value); + } + + /** + * Liefert den Wert einer Zelle als Float-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public float getFloat(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Float.parseFloat(e.getText().replace(",",".")); + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Float-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public float getFloat(String name) { + return getFloat(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Float-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setFloat(int i,float value) { + + Element e = buildRow(i); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Setzt den Wert einer Zelle als Float-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setFloat(String name, float value) { + Element e = buildRow(name); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Liefert den Wert einer Zelle als Double-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public double getDouble(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Double.parseDouble(e.getText().replace(",",".")); + + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Double-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public double getDouble(String name) { + return getDouble(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Double-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setDouble(int i,double value) { + + Element e = buildRow(i); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Setzt den Wert einer Zelle als Double-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setDouble(String name, double value) { + Element e = buildRow(name); + if(e!=null) e.setText(format.format(value)); + } + +} diff --git a/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a3/XML.java b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a3/XML.java new file mode 100644 index 0000000..c06c490 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a3/XML.java @@ -0,0 +1,637 @@ +/** + * Klasse zum Vereinfachten Zugriff auf XML-Dokumente + * Diese Klasse ist für den Einsatz in der Schule gedacht und soll den Schülern + * einen einfachen Zugriff auf XML-Dokumente ermöglichen. Die zur Verfügung + * stehenden Befehle sind wie in Processing realisiert. + * Dabei ist jeder Teilbaum des Dokuments wieder als XML-Objekt zugreifbar, das + * intern auf die gleiche XML-Dokumentstruktur zugreift. + * Dies ermöglicht bei unsachgemäßem Gebrauch die XML-Struktur zu zerstören. Im + * normalen Gebrauch sollte dies aber nicht relevant sein. + * + * Benötigt: jdom-1.1.3.jar + + * @author Thomas Schaller + * @version 1.0 vom 31.01.2019 + */ +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.ArrayList; +import java.io.*; + +import org.jdom.Document; +import org.jdom.Element; +import org.jdom.Attribute; +import org.jdom.JDOMException; +import org.jdom.input.SAXBuilder; +import org.jdom.output.XMLOutputter; +import org.jdom.output.Format; + +public class XML { + // Anfang Attribute + // XML-Dokumentstruktur + private Document doc; + // Zeiger auf das aktuelle Element + private Element current; + // Ende Attribute + + /** + * Erzeugt ein leeres XMLDokument + */ + public XML() { + this.doc = new Document(); + this.current = null; + } + + /** + * Erzeugt ein XML-Dokument aus einer Datei + * @param filename Dateiname der XML-Datei + */ + public XML(String filename) { + loadXML(filename); + } + + /** + * interner Konstruktor, um ein XML Objekt zu erzeugen, das auf einen bestimmten Knoten verweist + * @param doc die XML-Dokumentstruktur + * @param current Zeiger auf das aktuelle Element + */ + private XML(Document doc, Element current) { + this.doc = doc; + this.current = current; + } + + // Anfang Methoden + /** Öffnet das durch den Dateinamen gegebene Dokument + * @param filename Dateiname des XML-Files + */ + public void loadXML(String filename) { + doc = null; + File f = new File(filename); + + try { + // Das Dokument erstellen + SAXBuilder builder = new SAXBuilder(); + doc = builder.build(f); + + } catch (JDOMException e) { + e.printStackTrace(); + + } catch (IOException e) { + e.printStackTrace(); + } + // Zeiger im Baum auf Root-Element + current = doc.getRootElement(); + } + + /** Speichert den XML-Baum im angegebenen Dateinamen + * @param filename Dateiname des XML-Files + */ + public void saveXML(String filename) { + try { + // new XMLOutputter().output(doc, System.out); + XMLOutputter xmlOutput = new XMLOutputter(); + + // display nice nice + xmlOutput.setFormat(Format.getPrettyFormat()); + File f = new File(filename); + FileOutputStream outputFile = new FileOutputStream(f); + System.out.println("Speicher in : "+f.getAbsolutePath() ); + xmlOutput.output(doc, outputFile); + outputFile.close(); + System.out.println("File Saved!"); + } catch (IOException io) { + System.out.println(io.getMessage()); + } + + } + + //----------------------------------------------- Zeigerbewegungen -------------------------------------------------- + /** + * liefert ein XML-Objekt, das auf den Vaterknoten des aktuellen Elements zeigt. + * @return Vater des aktuellen Objekts. + */ + public XML getParent() { + if(current != null) { + Element parent = current.getParentElement(); + if (parent == null) { + return null; + } else { + return new XML(doc, parent); + } + } + return null; + } + + /** + * Überprüft, ob das Element irgendwelche Kinder hat oder nicht, und gibt das Ergebnis als boolean zurück. + * @return true, wenn Kinder vorhanden sind, sonst false + */ + public boolean hasChildren() { + if (current == null) { + return doc.hasRootElement(); + } else { + return current.getChildren().size()>0; + } + } + + /** + * Ermittelt die Namen aller Kinder des Elements und gibt die Namen als ein Array von Strings zurück. + * Dies ist dasselbe wie das Durchlaufen und Aufrufen von getName() auf jedem untergeordneten Element einzeln. + * @return Liste aller Namen der Kinder + */ + public String[] listChildren() { + if (current == null) { + if(doc.hasRootElement()) { + String[] names = new String[0]; + names[0] = doc.getRootElement().getName(); + return names; + } else { + return null; + } + } else { + List ch_element = current.getChildren(); + String[] names = new String[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + names[i] = ch_element.get(i).getName(); + } + return names; + } + } + + /** + * Liefert alle Kinder des Elements als Array von XML-Objekten. + * @return Array der Kinder als XML-Objekte + */ + public XML[] getChildren() { + if (current == null) { + if(doc.hasRootElement()) { + XML[] ch_xml = new XML[1]; + ch_xml[0] = new XML(doc, doc.getRootElement()); + return ch_xml; + } else { + return null; + } + } else { + List ch_element = current.getChildren(); + XML[] ch_xml = new XML[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + ch_xml[i] = new XML(doc, ch_element.get(i)); + } + return ch_xml; + } + } + + /** + * Liefert bestimmte Kinder des Elements als Array von XML-Objekten. + * Die Methode gibt dabei alle Kinder zurück, die dem angegebenen Namen entsprechen. + * @param name Name der gesuchten Kind-Objekte + * @return Array der Kinder als XML-Objekte + */ + public XML[] getChildren(String name) { + if (current == null) { + if(doc.hasRootElement()) { + XML[] ch_xml = new XML[1]; + ch_xml[0] = new XML(doc, doc.getRootElement()); + if(doc.getRootElement().getName().equals(name)){ + return ch_xml; + } else { + return null; + } + } else { + return null; + } + } else { + List ch_element = current.getChildren(name); + XML[] ch_xml = new XML[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + ch_xml[i] = new XML(doc, ch_element.get(i)); + } + return ch_xml; + } + } + + /** + * Liefert das erste Kind des Elements mit einem bestimmten Namen. + * Die Methode gibt das erste Kind zurück, das dem angegebenen Namen entsprechen. + * @param name Name des gesuchten Kind-Objektes + * @return Kind als XML-Objekt + */ + + public XML getChild(String name) { + if (current == null) { + Element e = doc.getRootElement(); + if (e.getName().equals(name)) { + return new XML(doc, e); + } else { + return null; + } + } else { + String[] names = name.split("/"); + Element e = current; + int i = 0; + while(i < names.length) { + e = e.getChild(names[i]); + if (e==null) return null; + i++; + } + return new XML(doc, e); + } + } + + /** + * Liefert das i. Kind des Elements. + * Die Methode gibt das i. Kind des aktuellen Elements zurück. + * @param i Nummer des Kindes + * @return Kind als XML-Objekt + */ + public XML getChild(int i) { + if (current == null) { + return new XML(doc, doc.getRootElement()); + } else { + List ch_element = current.getChildren(); + if (i>=ch_element.size()) return null; + return new XML(doc, ch_element.get(i)); + } + } + + //--------------------------------------------------- Methoden für das aktuelle Element ------------------------------------------------- + /** + * Frage den Namen des aktuellen Elements ab + * @return Namen des Elements + */ + public String getName() { + if (current==null) return ""; + return current.getName(); + } + + /** + * Setze den Namen des aktuellen Elements. + * @param name Neuer Name des Elements + */ + public void setName(String name) { + if (current==null) return; + current.setName(name); + } + + /** + * liefert die Anzahl der Attribute eines Elements. + * @return Anzahl des Attribute + */ + public int getAttributeCount() { + if (current == null) return 0; + return current.getAttributes().size(); + } + + /** + * liefert zurück, ob das aktuelle Element Attribute hat . + * @return true, wenn es Attribute gibt + */ + public boolean hasAttribute() { + if (current == null) return false; + return current.getAttributes().size()>0; + } + + /** + * Ruft alle Attribute des angegebenen Elements ab und gibt sie als Array von Strings zurück. + * @return Liste der Attributnamen + */ + public String[] listAttributes() { + if (current == null) return null; + List attr = current.getAttributes(); + String[] names = new String[attr.size()]; + for(int i=0; i < attr.size() ; i++) { + names[i] = attr.get(i).getName(); + } + return names; + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs + */ + public String getString(String attribute) { + if (current==null) return ""; + return current.getAttributeValue(attribute); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs + */ + public String getString(String attribute, String defaultValue) { + if (current==null) return defaultValue; + return current.getAttributeValue(attribute,defaultValue); + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param text neuer Wert des Attributs + */ + public void setString(String attribute, String text) { + if (current==null) return; + current.setAttribute(attribute, text); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Integer-Zahl + */ + public int getInt(String attribute) { + if (current==null) return 0; + try{ + int i = Integer.parseInt(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als Integer-Zahl + */ + public int getInt(String attribute, int defaultValue) { + if (current==null) return defaultValue; + try{ + int i = Integer.parseInt(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setInt(String attribute, int value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Float-Zahl + */ + public float getFloat(String attribute) { + if (current==null) return 0; + try{ + float i = Float.parseFloat(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als Float-Zahl + */ + public float getFloat(String attribute, float defaultValue) { + if (current==null) return defaultValue; + try{ + float i = Float.parseFloat(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setFloat(String attribute, float value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Double-Zahl + */ + public double getDouble(String attribute) { + if (current==null) return 0; + try{ + double i = Double.parseDouble(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + +/** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als double-Zahl + */ + public double getDouble(String attribute, double defaultValue) { + if (current==null) return defaultValue; + try{ + double i = Double.parseDouble(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setDouble(String attribute, double value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt den Inhalt/Text des aktuellen Elements ab + * @return Inhalt des Elements + */ + public String getContent() { + if ( current==null) return ""; + + return current.getText(); + } + + /** + * Fragt den Inhalt/Text des aktuellen Elements ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardtext + * @return Inhalt des Elements + */ + public String getContent(String defaultValue) { + if ( current==null) return defaultValue; + String t = current.getText(); + if(t.equals("")) t = defaultValue; + return t; + } + + /** + * Setzt den Inhalt/Text des aktuellen Elements + * @param text Neuer Inhalt des Elements + */ + public void setContent(String text) { + if ( current==null) return; + current.setText(text); + } + + + /** + * Fragt den Inhalt des aktuellen Elements als Integerzahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ public int getIntContent(int defaultValue) { + if ( current==null) return defaultValue; + try{ + int i = Integer.parseInt(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Integerzahl ab + * @return Inhalt des Elements + */ + public int getIntContent() { + if ( current==null) return 0; + try{ + int i = Integer.parseInt(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setIntContent(int value) { + if ( current==null) return; + current.setText(""+value); + } + + + /** + * Fragt den Inhalt des aktuellen Elements als Floatzahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ + public float getFloatContent(float defaultValue) { + if ( current==null) return defaultValue; + try{ + float i = Float.parseFloat(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Floatzahl ab + * @return Inhalt des Elements + */ + public float getFloatContent() { + if ( current==null) return 0; + try{ + float i = Float.parseFloat(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setFloatContent(float value) { + if ( current==null) return; + current.setText(""+value); + } + +/** + * Fragt den Inhalt des aktuellen Elements als Doublezahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ + public double getDoubleContent(double defaultValue) { + if ( current==null) return defaultValue; + try{ + double i = Double.parseDouble(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Doublezahl ab + * @return Inhalt des Elements + */ + public double getDoubleContent() { + if ( current==null) return 0; + try{ + double i = Double.parseDouble(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setDoubleContent(double value) { + if ( current==null) return; + current.setText(""+value); + } + + + // ----------------------------------------------- XML-Struktur aufbauen ------------------------------------------------ + /** Erzeuge neues Element nach der aktuellen Position und setze dieses als aktuelles Element + * @param name Name des neuen Elements + * @return neues Element als XML-Objekt + */ + public XML addChild(String name) { + Element e = new Element(name); + if(current == null){ // man ist auf Root-Ebene + doc.setRootElement(e); + + } + else { + current.addContent(e); + } // end of if-else + return new XML(doc, e); + } + + /** + * liefert das aktuelle Element als jdom-Element-Objekt + * @return aktuelles Element + */ + private Element getCurrent() { + return current; + } + + /** + * löscht ein Kind des aktuellen Knotens. + * Ist kid kein Kind des aktuellen Elements passiert gar nichts. + * @param kid XML-Objekt des Kindes + */ + public void removeChild(XML kid) { + if (current == null) return; + Element e = kid.getCurrent(); + int index = current.indexOf(e); + if(index >= 0) { current.removeContent(e);} + } + +} diff --git a/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a3/XYDiagramm.java b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a3/XYDiagramm.java new file mode 100644 index 0000000..59246ce --- /dev/null +++ b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a3/XYDiagramm.java @@ -0,0 +1,122 @@ +import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot und MouseInfo) +import java.awt.Font; + +/** + * XY-Diagramm für Schalldruckpegel, Zahlen werden aus CSV-Datei gelesen. + * + * @author Schaller + * @version 29.11.18 + */ +public class XYDiagramm extends PictureViewer + +{ + // Liste mit allen Werten + double[] x_werte; + double[] y_werte; + + // Hilfsvariablen für die Suche + int akt_maximum=-1; // aktuell groesstes Element + int akt=-1; // aktuell untersuchtes Element + int verzoegerung=0; // Geschwindigkeit der Ausführung + + // Schriften + Font kleineSchrift; + Font grosseSchrift; + + public XYDiagramm() { + size(1000, 700); + background(0); + kleineSchrift = new Font( Font.SANS_SERIF, Font.PLAIN, 12 ); + grosseSchrift = new Font( Font.SANS_SERIF, Font.PLAIN, 20 ); + + // Deaktiviere die automatische Neudarstellung nach einem Zeichenbefehl + setAutoRefresh(false); + + // CSV-Datei laden und anzeigen + ladeTabelle("Amplitudes.csv"); + stroke(250,250,200); + zeichneXYDiagramm(); + } + + public void ladeTabelle(String name) { + // Tabelle aus CSV-Datei laden + Table csv = new Table(name, "header",',','"'); + + if (csv != null && csv.getColumnCount()==2) { + + // Initialisiere Arrays, in die alle Zeilen der Tabelle passen + x_werte = new double[csv.getRowCount()]; + y_werte = new double[csv.getRowCount()]; + + // Fülle die Arrays mit Werten aus der Tabelle + for (int i = 0; i < x_werte.length; i++) { //x_werte.length; i++) { + // Lies Wert aus der i. Zeile und der Spalte "Punkte" bzw. "Name" + x_werte[i] = csv.getDouble(i, "Zeit"); + y_werte[i] = csv.getDouble(i, "Laerm"); + System.out.println("Lade Zeile: "+i); + } + } + } + + public void zeichneXYDiagramm() { + + // Überschrift + fill(255, 255, 255); + textFont(grosseSchrift); + text("Lärmpegel", 2, 20); + textFont(kleineSchrift); + + // Alle Einträge darstellen + + if (x_werte != null) { + // Maximum bestimmen + int max_x_pos = sucheMaximum(x_werte); + int max_y_pos = sucheMaximum(y_werte); + double max_x = x_werte[max_x_pos]; + double max_y = y_werte[max_y_pos]; + + // Skalierungsfaktoren + double faktor_x = 1000.0 / max_x; + double faktor_y = 700.0 / max_y; + + for (int i = 0; i< x_werte.length; i++) { + + // XY-Punktdiagramm zeichnen + int x = (int) (x_werte[i]*faktor_x); + int y = (int) (700- y_werte[i]*faktor_y); + System.out.println("x:"+x+"y:"+y); + + point(x, y); + } + } + //Bildschrimanzeige erneuern. AutoRefresh ist aus Zeitgründen deaktiviert. + refresh(); + + } + + public int sucheMaximum(double[] zahlen) { + // Sind überhaupt Daten da? + if (zahlen.length==0 ) { + return -1; + } + + // Startwerte setzen + akt_maximum = 0; + akt = 1; + + // Alle Arrayelemente untersuchen + while (akt < zahlen.length) { + + // Neues größtes Element?? + if (zahlen[akt]> zahlen[akt_maximum]) { + // Dann merke dir das neue + akt_maximum = akt; + + } + akt = akt + 1; + } + // Gib Position des größten Elements zurück + return akt_maximum; + } + +} diff --git a/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a3/images/balken.png b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a3/images/balken.png new file mode 100644 index 0000000..9ff1ffc Binary files /dev/null and b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a3/images/balken.png differ diff --git a/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a3/images/bilderrahmen.png b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a3/images/bilderrahmen.png new file mode 100644 index 0000000..7f34e32 Binary files /dev/null and b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a3/images/bilderrahmen.png differ diff --git a/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a3/images/xydiagramm.png b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a3/images/xydiagramm.png new file mode 100644 index 0000000..a13fc89 Binary files /dev/null and b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a3/images/xydiagramm.png differ diff --git a/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a3/jdom-1.1.3.jar b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a3/jdom-1.1.3.jar new file mode 100644 index 0000000..a287727 Binary files /dev/null and b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a3/jdom-1.1.3.jar differ diff --git a/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a3/project.greenfoot b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a3/project.greenfoot new file mode 100644 index 0000000..d84bd84 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a3/project.greenfoot @@ -0,0 +1,93 @@ +#Greenfoot project file +class.PictureViewer.image=bilderrahmen.png +class.XYDiagramm.image=xydiagramm.png +dependency1.from=MyWorld +dependency1.to=XYDiagramm +dependency1.type=UsesDependency +dependency2.from=PictureViewer +dependency2.to=Picture +dependency2.type=UsesDependency +dependency3.from=XYDiagramm +dependency3.to=Table +dependency3.type=UsesDependency +dependency4.from=Table +dependency4.to=TableRow +dependency4.type=UsesDependency +dependency5.from=Picture +dependency5.to=PictureViewer +dependency5.type=UsesDependency +editor.fx.0.height=739 +editor.fx.0.width=816 +editor.fx.0.x=778 +editor.fx.0.y=117 +height=880 +package.numDependencies=5 +package.numTargets=7 +project.charset=UTF-8 +publish.hasSource=false +publish.locked=true +publish.longDesc= +publish.shortDesc= +publish.tags= +publish.title= +publish.url= +readme.height=58 +readme.name=@README +readme.width=47 +readme.x=10 +readme.y=10 +simulation.speed=97 +target1.height=50 +target1.name=PictureViewer +target1.showInterface=false +target1.type=ClassTarget +target1.width=100 +target1.x=0 +target1.y=0 +target2.height=50 +target2.name=Table +target2.showInterface=false +target2.type=ClassTarget +target2.width=80 +target2.x=0 +target2.y=0 +target3.height=50 +target3.name=XYDiagramm +target3.showInterface=false +target3.type=ClassTarget +target3.width=90 +target3.x=0 +target3.y=0 +target4.height=50 +target4.name=Picture +target4.showInterface=false +target4.type=ClassTarget +target4.width=80 +target4.x=0 +target4.y=0 +target5.height=50 +target5.name=XML +target5.showInterface=false +target5.type=ClassTarget +target5.width=100 +target5.x=0 +target5.y=0 +target6.height=50 +target6.name=TableRow +target6.showInterface=false +target6.type=ClassTarget +target6.width=80 +target6.x=0 +target6.y=0 +target7.height=50 +target7.name=MyWorld +target7.showInterface=false +target7.type=ClassTarget +target7.width=80 +target7.x=0 +target7.y=0 +version=3.0.0 +width=1350 +world.lastInstantiated=MyWorld +xPosition=497 +yPosition=80 diff --git a/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a4/Amplitudes.csv b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a4/Amplitudes.csv new file mode 100644 index 0000000..6a3b121 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a4/Amplitudes.csv @@ -0,0 +1,12219 @@ +"Zeit","Laerm" +0.000000000E0,6.133205686E1 +1.130000000E-1,5.602431153E1 +3.840000000E-1,3.897519867E1 +7.780000000E-1,4.208195145E1 +1.036000000E0,3.840936313E1 +1.305000000E0,3.561092139E1 +1.587000000E0,4.663257633E1 +1.829000000E0,5.311883882E1 +2.084000000E0,5.299431820E1 +2.357000000E0,5.747397858E1 +2.643000000E0,5.626338063E1 +2.949000000E0,5.790811120E1 +3.238000000E0,5.874544026E1 +3.497000000E0,5.736162139E1 +3.775000000E0,5.897817442E1 +4.097000000E0,5.789822970E1 +4.357000000E0,5.312015799E1 +4.626000000E0,5.710192134E1 +4.941000000E0,6.275087240E1 +5.235000000E0,5.784358767E1 +5.535000000E0,5.388577420E1 +5.827000000E0,5.403495101E1 +6.090000000E0,5.428355086E1 +6.339000000E0,6.064473144E1 +6.616000000E0,6.271091291E1 +6.850000000E0,6.982615367E1 +7.128000000E0,7.050308750E1 +7.487000000E0,5.395311298E1 +7.760000000E0,5.036401582E1 +8.065000000E0,4.614125463E1 +8.361000000E0,6.244776407E1 +8.614000000E0,6.315719526E1 +8.862000000E0,5.981740395E1 +9.123000000E0,5.907292535E1 +9.374000000E0,5.661523092E1 +9.665000000E0,6.210368813E1 +9.948000000E0,6.140958115E1 +1.021100000E1,5.697007655E1 +1.058300000E1,5.460455934E1 +1.084000000E1,5.408516231E1 +1.115300000E1,5.907221377E1 +1.142100000E1,6.113412429E1 +1.172700000E1,6.267949704E1 +1.197100000E1,6.245109870E1 +1.226500000E1,6.342534529E1 +1.255800000E1,6.810008108E1 +1.287100000E1,6.036891848E1 +1.313400000E1,5.913231814E1 +1.342700000E1,5.973818566E1 +1.371600000E1,5.534371651E1 +1.401200000E1,5.694514867E1 +1.431200000E1,6.134814982E1 +1.461100000E1,5.900023912E1 +1.484600000E1,5.689908400E1 +1.515800000E1,5.296474858E1 +1.544000000E1,5.608528071E1 +1.569300000E1,5.728560404E1 +1.596900000E1,5.837984103E1 +1.620100000E1,5.718896638E1 +1.649200000E1,5.909973037E1 +1.678900000E1,5.705554272E1 +1.716300000E1,6.079937758E1 +1.747400000E1,5.618116117E1 +1.775200000E1,5.519881157E1 +1.803800000E1,5.402386340E1 +1.829100000E1,5.678484358E1 +1.858100000E1,5.954639303E1 +1.882300000E1,6.030021638E1 +1.908000000E1,5.588340744E1 +1.934400000E1,5.668691200E1 +1.958800000E1,6.042765467E1 +1.983400000E1,5.839794223E1 +2.008500000E1,5.457976882E1 +2.039500000E1,5.974390604E1 +2.064000000E1,6.049774386E1 +2.092900000E1,6.029857781E1 +2.117800000E1,6.116406203E1 +2.142700000E1,5.664722837E1 +2.173400000E1,5.823294996E1 +2.203100000E1,5.517538657E1 +2.229000000E1,5.322823206E1 +2.259900000E1,6.180779467E1 +2.285300000E1,6.106216386E1 +2.314900000E1,5.883321877E1 +2.347100000E1,6.045262422E1 +2.375000000E1,6.163931220E1 +2.406000000E1,4.841181734E1 +2.432800000E1,4.372149986E1 +2.462900000E1,5.625563946E1 +2.487100000E1,5.672759349E1 +2.513200000E1,5.896193725E1 +2.540800000E1,5.893011728E1 +2.566400000E1,5.857261268E1 +2.596700000E1,5.859012974E1 +2.621900000E1,5.635586832E1 +2.648700000E1,5.350948293E1 +2.673900000E1,5.430043092E1 +2.701400000E1,5.666610976E1 +2.727500000E1,5.218421407E1 +2.753100000E1,5.689076583E1 +2.782000000E1,5.796831886E1 +2.806900000E1,5.608205064E1 +2.831700000E1,5.482273815E1 +2.861600000E1,5.392425499E1 +2.888300000E1,5.329416010E1 +2.914800000E1,5.366916703E1 +2.940200000E1,5.280847155E1 +2.968000000E1,5.333298066E1 +2.994300000E1,5.497085471E1 +3.031200000E1,5.753094076E1 +3.057900000E1,5.655381974E1 +3.086100000E1,5.517704804E1 +3.115600000E1,5.592585858E1 +3.140700000E1,6.212826207E1 +3.166000000E1,5.699502474E1 +3.193500000E1,6.025129057E1 +3.223100000E1,5.686166208E1 +3.247300000E1,5.807641915E1 +3.271900000E1,6.065155151E1 +3.296400000E1,5.961384387E1 +3.320500000E1,6.119064420E1 +3.354400000E1,5.548464633E1 +3.378000000E1,5.699661616E1 +3.408000000E1,5.653770482E1 +3.438000000E1,5.083503664E1 +3.468200000E1,5.695639918E1 +3.495800000E1,5.566535489E1 +3.524700000E1,5.914853092E1 +3.552700000E1,5.758441289E1 +3.576600000E1,6.085665801E1 +3.606700000E1,5.862586334E1 +3.630600000E1,5.096841655E1 +3.662200000E1,6.009246966E1 +3.689400000E1,5.981749726E1 +3.715300000E1,6.108830629E1 +3.740300000E1,5.724514841E1 +3.766500000E1,5.934850613E1 +3.793000000E1,5.725470328E1 +3.819100000E1,5.843556167E1 +3.847700000E1,5.697759761E1 +3.874000000E1,5.721548979E1 +3.901600000E1,5.649629904E1 +3.927200000E1,5.850326911E1 +3.954600000E1,5.691951660E1 +3.993900000E1,5.357092442E1 +4.023400000E1,5.817046878E1 +4.053000000E1,5.554327077E1 +4.081200000E1,5.802928061E1 +4.103900000E1,5.663899845E1 +4.128700000E1,5.494654466E1 +4.155800000E1,5.564956216E1 +4.181900000E1,5.663250304E1 +4.211300000E1,5.652236278E1 +4.238100000E1,5.614203459E1 +4.264000000E1,5.433145844E1 +4.295000000E1,6.132645299E1 +4.326200000E1,6.040612545E1 +4.351400000E1,5.905916902E1 +4.377100000E1,5.885516023E1 +4.401000000E1,5.514814582E1 +4.430800000E1,5.663232510E1 +4.455900000E1,5.055807811E1 +4.482100000E1,5.614950318E1 +4.513300000E1,6.025044420E1 +4.537500000E1,5.643182261E1 +4.568900000E1,5.709089314E1 +4.600500000E1,5.480136123E1 +4.624500000E1,5.924046686E1 +4.656900000E1,6.172358505E1 +4.684100000E1,5.645515217E1 +4.711100000E1,6.002156043E1 +4.736300000E1,6.182669975E1 +4.759700000E1,5.557741963E1 +4.786700000E1,5.598662295E1 +4.818300000E1,5.664767890E1 +4.847900000E1,5.956168629E1 +4.874200000E1,5.713315811E1 +4.898900000E1,5.765479272E1 +4.931400000E1,5.507101982E1 +4.961600000E1,5.361677606E1 +4.990000000E1,5.558547080E1 +5.019600000E1,5.402951441E1 +5.046500000E1,5.805429700E1 +5.078800000E1,5.327636151E1 +5.110300000E1,4.980825483E1 +5.137100000E1,5.290981249E1 +5.165200000E1,4.817864123E1 +5.190100000E1,5.585478693E1 +5.214500000E1,5.457392293E1 +5.242900000E1,5.449921652E1 +5.272500000E1,5.537781025E1 +5.302100000E1,5.598018287E1 +5.326000000E1,5.612851081E1 +5.355800000E1,5.312697891E1 +5.384800000E1,5.799703575E1 +5.409200000E1,5.662162553E1 +5.433900000E1,5.392344795E1 +5.459100000E1,5.398098819E1 +5.494900000E1,5.489231889E1 +5.527100000E1,5.658153835E1 +5.552800000E1,5.624900056E1 +5.589500000E1,4.979935744E1 +5.616900000E1,5.146998424E1 +5.645400000E1,5.878755245E1 +5.668600000E1,5.846227673E1 +5.694400000E1,5.977267383E1 +5.726200000E1,5.508647523E1 +5.754400000E1,5.138853207E1 +5.784300000E1,5.327451232E1 +5.808600000E1,5.887142781E1 +5.837800000E1,5.858062431E1 +5.862200000E1,5.917458096E1 +5.889700000E1,6.050411670E1 +5.926300000E1,5.908687144E1 +5.952100000E1,5.570790758E1 +5.981900000E1,5.444849000E1 +6.006100000E1,5.201240285E1 +6.032000000E1,4.755830762E1 +6.061900000E1,5.204388424E1 +6.086500000E1,5.626914911E1 +6.117500000E1,5.280379974E1 +6.142900000E1,5.093923019E1 +6.173000000E1,5.460427137E1 +6.197800000E1,5.299601182E1 +6.230600000E1,5.424208739E1 +6.257600000E1,5.253762352E1 +6.283700000E1,5.544043962E1 +6.309800000E1,5.527614156E1 +6.335400000E1,5.747262922E1 +6.360700000E1,5.468151445E1 +6.384900000E1,5.582905565E1 +6.410700000E1,5.802400474E1 +6.435000000E1,5.204893636E1 +6.459600000E1,5.280146425E1 +6.486300000E1,4.876648093E1 +6.509700000E1,5.311679703E1 +6.537500000E1,5.192778643E1 +6.571400000E1,5.346709918E1 +6.597900000E1,5.370921552E1 +6.627900000E1,5.676705279E1 +6.652200000E1,5.832258643E1 +6.676600000E1,6.257736406E1 +6.703100000E1,6.295448429E1 +6.737800000E1,6.100964383E1 +6.766100000E1,5.182636016E1 +6.790700000E1,4.952717893E1 +6.821100000E1,5.667475715E1 +6.850300000E1,5.872819054E1 +6.882100000E1,6.004516195E1 +6.907300000E1,5.559244143E1 +6.935100000E1,5.600379936E1 +6.961500000E1,5.338006499E1 +6.987600000E1,5.360104859E1 +7.011900000E1,4.644905289E1 +7.037100000E1,4.528909123E1 +7.067200000E1,5.787885076E1 +7.091600000E1,5.602551032E1 +7.115700000E1,5.989544193E1 +7.142200000E1,6.110384869E1 +7.167900000E1,5.887448069E1 +7.192600000E1,5.797896456E1 +7.226000000E1,5.965665129E1 +7.251000000E1,6.477744226E1 +7.281200000E1,6.243775536E1 +7.310800000E1,5.921576979E1 +7.335600000E1,6.629420582E1 +7.364100000E1,6.683725429E1 +7.392300000E1,5.758295449E1 +7.418800000E1,5.654909286E1 +7.448600000E1,5.881341247E1 +7.472100000E1,5.546609910E1 +7.498300000E1,5.586542777E1 +7.526600000E1,5.463216262E1 +7.558500000E1,5.947397496E1 +7.586200000E1,6.218459899E1 +7.609800000E1,6.134189272E1 +7.635800000E1,5.727526170E1 +7.666700000E1,5.579062978E1 +7.699300000E1,6.015063828E1 +7.729000000E1,6.022787424E1 +7.756300000E1,5.646982462E1 +7.782200000E1,6.005734442E1 +7.813200000E1,5.950776839E1 +7.842200000E1,6.314009710E1 +7.880400000E1,5.425753266E1 +7.910400000E1,5.909139002E1 +7.935300000E1,5.600377253E1 +7.962300000E1,6.036368528E1 +7.993700000E1,5.940415340E1 +8.018900000E1,6.102152187E1 +8.050000000E1,6.619104713E1 +8.074000000E1,6.149981675E1 +8.098900000E1,5.978899259E1 +8.123800000E1,5.963150500E1 +8.150300000E1,6.509054947E1 +8.181300000E1,6.387458039E1 +8.220700000E1,6.421798778E1 +8.246100000E1,6.092500605E1 +8.271900000E1,6.039313205E1 +8.297100000E1,5.885189543E1 +8.328000000E1,6.068901175E1 +8.355600000E1,6.531581124E1 +8.381900000E1,6.460984287E1 +8.407800000E1,6.281147078E1 +8.435000000E1,5.961599483E1 +8.463400000E1,5.915457491E1 +8.489200000E1,5.383227231E1 +8.513000000E1,5.278474817E1 +8.551100000E1,6.165964712E1 +8.574900000E1,6.442604107E1 +8.600700000E1,6.551005247E1 +8.626000000E1,6.660338206E1 +8.650900000E1,6.304014634E1 +8.676000000E1,6.488065719E1 +8.701800000E1,6.416881833E1 +8.728000000E1,5.892166498E1 +8.754500000E1,5.946249393E1 +8.785000000E1,6.506678358E1 +8.809400000E1,5.703264442E1 +8.840500000E1,6.164086486E1 +8.876300000E1,6.276173959E1 +8.906100000E1,5.818071871E1 +8.930500000E1,5.844394446E1 +8.956300000E1,5.657440647E1 +8.987400000E1,6.120356137E1 +9.011500000E1,6.094306560E1 +9.041100000E1,5.978472131E1 +9.065500000E1,6.008128664E1 +9.092400000E1,5.758286780E1 +9.123300000E1,5.353387594E1 +9.151600000E1,5.676204998E1 +9.183800000E1,5.245702159E1 +9.218200000E1,5.642589170E1 +9.243600000E1,5.542467479E1 +9.268000000E1,5.580829615E1 +9.297600000E1,5.148061441E1 +9.322800000E1,4.635974806E1 +9.353200000E1,5.465579762E1 +9.377300000E1,5.154999739E1 +9.402200000E1,5.544992474E1 +9.427900000E1,5.302390200E1 +9.453300000E1,5.127982623E1 +9.478800000E1,5.263086656E1 +9.503100000E1,5.128121484E1 +9.532100000E1,5.061466876E1 +9.557700000E1,5.328260476E1 +9.582800000E1,5.101663724E1 +9.607100000E1,5.400893265E1 +9.640400000E1,5.756552061E1 +9.665500000E1,5.665487755E1 +9.690400000E1,5.719000980E1 +9.715400000E1,5.593995548E1 +9.740400000E1,5.420194495E1 +9.771300000E1,4.867232074E1 +9.802100000E1,5.053798103E1 +9.830700000E1,4.874294948E1 +9.857500000E1,5.754515654E1 +9.883700000E1,5.863618568E1 +9.909700000E1,6.070195076E1 +9.935300000E1,5.434874196E1 +9.961300000E1,6.163600431E1 +9.987300000E1,5.555228218E1 +1.001200000E2,5.733850418E1 +1.003910000E2,6.133233800E1 +1.006620000E2,5.853313440E1 +1.009020000E2,5.435835494E1 +1.011680000E2,5.329891948E1 +1.014680000E2,5.356470018E1 +1.018410000E2,5.574288130E1 +1.021370000E2,5.927571979E1 +1.024000000E2,5.789956910E1 +1.026980000E2,6.081738139E1 +1.029540000E2,5.575615853E1 +1.032580000E2,5.337382111E1 +1.035140000E2,5.562761746E1 +1.038150000E2,5.905624776E1 +1.041040000E2,5.696105750E1 +1.043990000E2,6.170938149E1 +1.046370000E2,5.823687000E1 +1.049080000E2,6.066674703E1 +1.051740000E2,6.220969933E1 +1.054810000E2,5.755805236E1 +1.057660000E2,5.735691579E1 +1.060450000E2,5.761618087E1 +1.063040000E2,5.188413372E1 +1.065680000E2,5.643639822E1 +1.068740000E2,5.312430876E1 +1.071280000E2,5.924995828E1 +1.073900000E2,5.546187342E1 +1.076920000E2,5.474389270E1 +1.079790000E2,5.600814816E1 +1.082440000E2,5.561453096E1 +1.084980000E2,5.408559240E1 +1.087580000E2,5.622058302E1 +1.090160000E2,5.768852773E1 +1.092670000E2,5.516804842E1 +1.095340000E2,5.973626648E1 +1.098120000E2,6.403409511E1 +1.100690000E2,6.035201036E1 +1.103490000E2,5.940482770E1 +1.105950000E2,5.932126109E1 +1.108600000E2,5.859387697E1 +1.111460000E2,5.929800416E1 +1.114110000E2,5.930503134E1 +1.117890000E2,6.170536210E1 +1.120410000E2,6.214563711E1 +1.123490000E2,5.810151097E1 +1.126320000E2,5.823719807E1 +1.128910000E2,6.454485320E1 +1.131870000E2,6.755031626E1 +1.134560000E2,6.410743881E1 +1.137200000E2,5.913442857E1 +1.139870000E2,6.382823805E1 +1.142400000E2,5.859239523E1 +1.145180000E2,5.135859796E1 +1.147890000E2,5.294563188E1 +1.151440000E2,5.357868048E1 +1.154220000E2,5.561359505E1 +1.156620000E2,5.645675088E1 +1.159670000E2,5.879425595E1 +1.162610000E2,5.918610512E1 +1.164990000E2,6.083658676E1 +1.167470000E2,5.526645697E1 +1.169880000E2,5.471312988E1 +1.172910000E2,6.211796732E1 +1.175510000E2,5.417468648E1 +1.177930000E2,5.576739557E1 +1.180750000E2,5.912472365E1 +1.184660000E2,5.718213173E1 +1.187710000E2,5.747081312E1 +1.190170000E2,5.741742618E1 +1.192690000E2,5.379557814E1 +1.195330000E2,5.428733520E1 +1.197780000E2,6.177329402E1 +1.200450000E2,5.672333166E1 +1.203170000E2,5.584947723E1 +1.205670000E2,5.382665718E1 +1.208400000E2,5.443690083E1 +1.211280000E2,5.221565874E1 +1.214800000E2,5.516249741E1 +1.217540000E2,5.676279334E1 +1.220050000E2,5.303796336E1 +1.222680000E2,5.258840561E1 +1.225120000E2,5.671935607E1 +1.227660000E2,4.902892756E1 +1.230240000E2,4.264962220E1 +1.232830000E2,4.818154680E1 +1.235340000E2,5.204058636E1 +1.238430000E2,5.649936271E1 +1.241410000E2,5.396154490E1 +1.244200000E2,5.428877275E1 +1.246760000E2,4.778715710E1 +1.249500000E2,4.912370762E1 +1.252110000E2,5.114426735E1 +1.255020000E2,5.345096378E1 +1.257410000E2,5.581149074E1 +1.260430000E2,5.211774829E1 +1.263320000E2,5.470047014E1 +1.265660000E2,5.399085344E1 +1.268600000E2,5.981732528E1 +1.271210000E2,5.944116770E1 +1.273530000E2,5.668281238E1 +1.275970000E2,5.042419391E1 +1.279080000E2,5.014554177E1 +1.282260000E2,5.350461413E1 +1.285240000E2,5.453533258E1 +1.287780000E2,5.809919663E1 +1.290280000E2,5.729580956E1 +1.292980000E2,5.681749266E1 +1.296010000E2,5.542882864E1 +1.298980000E2,5.612046892E1 +1.302070000E2,6.074750886E1 +1.304620000E2,5.979349108E1 +1.307520000E2,5.806574219E1 +1.310590000E2,5.738881777E1 +1.314010000E2,5.595280312E1 +1.316630000E2,5.401154636E1 +1.319120000E2,5.499471091E1 +1.321620000E2,5.551354327E1 +1.324640000E2,6.567912108E1 +1.327650000E2,5.725129100E1 +1.330150000E2,6.452906176E1 +1.333160000E2,5.778565576E1 +1.335760000E2,6.242194617E1 +1.338200000E2,5.570863747E1 +1.340710000E2,5.755877138E1 +1.343660000E2,6.819206156E1 +1.346260000E2,6.094769164E1 +1.349310000E2,6.447198163E1 +1.351810000E2,5.482297950E1 +1.354630000E2,6.327012623E1 +1.357210000E2,5.723157337E1 +1.359770000E2,5.835004111E1 +1.362140000E2,6.413045068E1 +1.365290000E2,6.022343539E1 +1.368110000E2,5.969265006E1 +1.371070000E2,5.589766444E1 +1.373670000E2,6.089100679E1 +1.376970000E2,6.762783521E1 +1.379410000E2,5.740809854E1 +1.381870000E2,6.711182247E1 +1.384650000E2,6.290175574E1 +1.387060000E2,6.352322572E1 +1.390400000E2,5.897504025E1 +1.392980000E2,5.872568346E1 +1.396520000E2,5.582882684E1 +1.399140000E2,5.874428562E1 +1.402160000E2,5.275369064E1 +1.404650000E2,5.181123336E1 +1.407250000E2,4.758951485E1 +1.410550000E2,4.601470876E1 +1.413500000E2,5.203790008E1 +1.416310000E2,5.380793436E1 +1.418780000E2,5.006781735E1 +1.421580000E2,4.792469964E1 +1.424020000E2,5.136650820E1 +1.427060000E2,5.127969468E1 +1.430200000E2,5.304643312E1 +1.433210000E2,5.218299100E1 +1.436050000E2,5.568762266E1 +1.439010000E2,5.522696018E1 +1.442570000E2,5.919224289E1 +1.445880000E2,6.201398016E1 +1.448680000E2,5.750742223E1 +1.451160000E2,5.811963790E1 +1.454090000E2,5.695462128E1 +1.456560000E2,5.854812337E1 +1.458980000E2,5.886107911E1 +1.461720000E2,5.454171305E1 +1.464480000E2,5.674410925E1 +1.466770000E2,5.450912101E1 +1.469270000E2,5.953864028E1 +1.471790000E2,6.097527460E1 +1.475260000E2,5.825769450E1 +1.478290000E2,5.780473579E1 +1.480790000E2,6.185542851E1 +1.483350000E2,5.390929394E1 +1.486330000E2,5.400087479E1 +1.488750000E2,5.328656685E1 +1.491190000E2,5.599536596E1 +1.494200000E2,5.721648542E1 +1.497150000E2,5.787493165E1 +1.500380000E2,5.480047158E1 +1.503480000E2,5.002404450E1 +1.506590000E2,5.486151348E1 +1.509700000E2,6.245235750E1 +1.512360000E2,5.831236552E1 +1.514820000E2,6.253825815E1 +1.517260000E2,6.440134635E1 +1.520120000E2,5.646251942E1 +1.523080000E2,5.569851104E1 +1.525630000E2,5.574195002E1 +1.528610000E2,6.073633455E1 +1.531220000E2,5.704364811E1 +1.533960000E2,5.858521931E1 +1.536900000E2,6.334346239E1 +1.540080000E2,5.734505299E1 +1.542490000E2,6.522555977E1 +1.544980000E2,5.500712815E1 +1.547420000E2,5.698741268E1 +1.549830000E2,5.097374633E1 +1.552760000E2,5.421781291E1 +1.555100000E2,5.276919678E1 +1.558070000E2,5.444895965E1 +1.560410000E2,5.023818561E1 +1.563440000E2,5.460917302E1 +1.565880000E2,5.459938847E1 +1.568920000E2,5.843131092E1 +1.572210000E2,5.876667307E1 +1.574850000E2,5.735202828E1 +1.577300000E2,5.496399564E1 +1.580290000E2,5.249359356E1 +1.582920000E2,5.216967072E1 +1.585400000E2,5.506360532E1 +1.588040000E2,4.854470136E1 +1.590480000E2,5.455647594E1 +1.593040000E2,5.480802962E1 +1.595560000E2,5.117555202E1 +1.598230000E2,5.525001141E1 +1.600680000E2,6.028739680E1 +1.604080000E2,6.051466285E1 +1.606910000E2,5.941686107E1 +1.609450000E2,6.263789003E1 +1.611920000E2,5.862463866E1 +1.614980000E2,5.858673558E1 +1.617730000E2,5.766546261E1 +1.620210000E2,5.485521148E1 +1.623080000E2,5.814732367E1 +1.625850000E2,5.829863647E1 +1.628370000E2,5.473457172E1 +1.631510000E2,5.323729241E1 +1.634320000E2,5.795543593E1 +1.637670000E2,5.845831909E1 +1.640670000E2,5.883503284E1 +1.643040000E2,5.933733684E1 +1.645990000E2,5.316483696E1 +1.648620000E2,5.628275472E1 +1.651110000E2,5.612764782E1 +1.654290000E2,5.739409022E1 +1.657290000E2,5.275374209E1 +1.660100000E2,5.606330732E1 +1.662350000E2,4.973765069E1 +1.664840000E2,4.855931683E1 +1.667820000E2,4.830487304E1 +1.670210000E2,5.643349546E1 +1.672820000E2,5.752246312E1 +1.675830000E2,5.576545129E1 +1.678330000E2,5.583582770E1 +1.681390000E2,5.301617697E1 +1.684460000E2,5.088408561E1 +1.686990000E2,5.149775091E1 +1.690030000E2,6.019099852E1 +1.692410000E2,6.143998752E1 +1.695380000E2,6.183098470E1 +1.697780000E2,5.964256200E1 +1.701420000E2,5.648358262E1 +1.703870000E2,5.768033788E1 +1.706360000E2,5.037521789E1 +1.709530000E2,5.268785935E1 +1.712030000E2,5.850048969E1 +1.714650000E2,5.537813713E1 +1.717710000E2,5.989062491E1 +1.720770000E2,6.371629733E1 +1.723380000E2,5.413135778E1 +1.726060000E2,5.582389161E1 +1.729040000E2,6.344770094E1 +1.731770000E2,6.038125570E1 +1.735090000E2,5.229655017E1 +1.737830000E2,5.594074665E1 +1.740430000E2,6.258802116E1 +1.743030000E2,5.773122794E1 +1.745600000E2,5.533899998E1 +1.748290000E2,5.069657364E1 +1.750850000E2,6.285550191E1 +1.753480000E2,5.470504416E1 +1.756240000E2,5.746379759E1 +1.758870000E2,5.928233462E1 +1.761350000E2,5.214791610E1 +1.763840000E2,5.260177806E1 +1.767030000E2,4.844041050E1 +1.769490000E2,5.275717684E1 +1.772330000E2,5.436891746E1 +1.774780000E2,5.441421810E1 +1.777590000E2,5.485847839E1 +1.780320000E2,5.714239097E1 +1.782910000E2,6.028837304E1 +1.785470000E2,5.706420775E1 +1.788380000E2,5.509582512E1 +1.791200000E2,5.674185072E1 +1.794340000E2,5.437491314E1 +1.796940000E2,5.696592309E1 +1.799990000E2,5.344092263E1 +1.802540000E2,5.414345246E1 +1.804960000E2,5.421992498E1 +1.808400000E2,5.317024536E1 +1.811450000E2,5.422714635E1 +1.814530000E2,5.933207779E1 +1.817720000E2,5.916706050E1 +1.820730000E2,5.685980261E1 +1.824210000E2,5.521649456E1 +1.826850000E2,5.651993888E1 +1.829810000E2,5.707596711E1 +1.832810000E2,5.464130538E1 +1.836160000E2,5.364065008E1 +1.838600000E2,5.913078622E1 +1.841080000E2,5.695541400E1 +1.843520000E2,6.237274690E1 +1.846510000E2,6.017101966E1 +1.848950000E2,5.670915019E1 +1.851380000E2,5.651470649E1 +1.854400000E2,5.919691857E1 +1.857560000E2,5.752836475E1 +1.860680000E2,6.133052078E1 +1.863670000E2,6.001801442E1 +1.866740000E2,5.871186574E1 +1.869510000E2,5.858669373E1 +1.872240000E2,5.722343490E1 +1.875200000E2,5.725198568E1 +1.877700000E2,5.560524182E1 +1.880340000E2,5.419540118E1 +1.882980000E2,6.169219144E1 +1.885790000E2,5.704261604E1 +1.888700000E2,5.651125138E1 +1.891060000E2,5.778536485E1 +1.894110000E2,5.304160496E1 +1.896990000E2,5.105254388E1 +1.900460000E2,5.338626279E1 +1.902980000E2,5.090929652E1 +1.905360000E2,5.235399183E1 +1.907970000E2,5.429173243E1 +1.910620000E2,5.376238901E1 +1.913500000E2,6.411203098E1 +1.916020000E2,6.235211697E1 +1.919100000E2,5.719243884E1 +1.922140000E2,5.965550680E1 +1.925010000E2,5.850063986E1 +1.928110000E2,6.013906156E1 +1.930480000E2,5.912633730E1 +1.934000000E2,5.860712099E1 +1.936870000E2,5.944287516E1 +1.939980000E2,5.676076088E1 +1.942520000E2,5.712881871E1 +1.945490000E2,5.515631677E1 +1.948870000E2,5.670925955E1 +1.951320000E2,5.768263389E1 +1.954210000E2,5.735243887E1 +1.957290000E2,5.883798740E1 +1.960030000E2,5.654393164E1 +1.963340000E2,5.345251733E1 +1.966710000E2,5.034487882E1 +1.969060000E2,5.741493139E1 +1.971980000E2,5.877434013E1 +1.974210000E2,5.965387227E1 +1.977200000E2,6.306941384E1 +1.979730000E2,6.004201692E1 +1.982230000E2,6.106500017E1 +1.984800000E2,5.674857861E1 +1.987290000E2,6.020914127E1 +1.990680000E2,6.067289060E1 +1.993460000E2,5.996658083E1 +1.996390000E2,5.676340490E1 +1.999500000E2,5.612304129E1 +2.002130000E2,6.289766509E1 +2.005150000E2,5.720971103E1 +2.008280000E2,5.752136939E1 +2.010940000E2,6.058659890E1 +2.013440000E2,5.618430636E1 +2.016270000E2,6.056271249E1 +2.019400000E2,5.729198827E1 +2.022100000E2,5.793084452E1 +2.025070000E2,5.787194228E1 +2.027910000E2,5.959620014E1 +2.030940000E2,6.012062596E1 +2.033180000E2,6.276377758E1 +2.036210000E2,5.834405857E1 +2.039320000E2,5.545225289E1 +2.042050000E2,5.829439447E1 +2.044730000E2,5.799912649E1 +2.047970000E2,5.444896398E1 +2.050680000E2,5.743866699E1 +2.053150000E2,5.862448994E1 +2.055880000E2,5.778478934E1 +2.058890000E2,5.527981007E1 +2.061620000E2,5.742523507E1 +2.064580000E2,5.472188821E1 +2.067100000E2,6.202721053E1 +2.069630000E2,5.861698013E1 +2.072080000E2,6.294616718E1 +2.074730000E2,6.321186761E1 +2.077380000E2,5.776609523E1 +2.080390000E2,6.061292698E1 +2.083320000E2,5.857532480E1 +2.085870000E2,5.800369352E1 +2.088450000E2,5.977447345E1 +2.091070000E2,5.957010157E1 +2.093520000E2,6.145770306E1 +2.096060000E2,6.176056517E1 +2.098580000E2,6.033519811E1 +2.100970000E2,6.429628489E1 +2.103980000E2,6.215353584E1 +2.106470000E2,6.299048914E1 +2.109300000E2,6.133544133E1 +2.112010000E2,5.397487394E1 +2.114250000E2,5.313920655E1 +2.116740000E2,5.552710709E1 +2.119140000E2,5.692289703E1 +2.121730000E2,5.618691953E1 +2.124220000E2,5.402804715E1 +2.127170000E2,5.390450402E1 +2.129570000E2,5.652515030E1 +2.132580000E2,5.490504921E1 +2.135120000E2,5.485761082E1 +2.137850000E2,6.486277416E1 +2.140520000E2,6.121826472E1 +2.143580000E2,6.355465948E1 +2.146390000E2,5.534291145E1 +2.148790000E2,6.610858745E1 +2.151670000E2,5.617739728E1 +2.154670000E2,5.426651762E1 +2.157300000E2,5.840247716E1 +2.160830000E2,5.257749691E1 +2.163200000E2,6.345809118E1 +2.165810000E2,6.020490407E1 +2.168390000E2,5.603372378E1 +2.170870000E2,5.452432165E1 +2.173530000E2,5.679931822E1 +2.176220000E2,6.225558234E1 +2.179360000E2,5.991886985E1 +2.182430000E2,6.307902574E1 +2.184780000E2,6.764692456E1 +2.187700000E2,6.696013302E1 +2.190280000E2,6.419552300E1 +2.193390000E2,6.401831507E1 +2.196000000E2,6.317016249E1 +2.198590000E2,6.093052958E1 +2.201380000E2,6.446513941E1 +2.204220000E2,6.075454080E1 +2.206690000E2,6.712020778E1 +2.209300000E2,5.440050354E1 +2.212550000E2,5.627963451E1 +2.215550000E2,6.358778444E1 +2.217990000E2,5.793661873E1 +2.220730000E2,6.448679664E1 +2.223050000E2,5.844994198E1 +2.226510000E2,5.802583418E1 +2.229440000E2,5.848297014E1 +2.231840000E2,6.170695891E1 +2.234220000E2,6.201301769E1 +2.236630000E2,6.049179870E1 +2.239600000E2,6.316843106E1 +2.242020000E2,5.818837652E1 +2.245150000E2,6.411353278E1 +2.248330000E2,6.458398711E1 +2.250670000E2,6.303280227E1 +2.253240000E2,6.378696379E1 +2.255670000E2,6.157533943E1 +2.259260000E2,5.845901257E1 +2.261910000E2,5.623331182E1 +2.264460000E2,5.550822889E1 +2.267020000E2,5.907003722E1 +2.270220000E2,6.300043778E1 +2.273130000E2,5.934584116E1 +2.275640000E2,5.367094537E1 +2.278520000E2,6.260544714E1 +2.281140000E2,5.666507163E1 +2.283970000E2,6.099713971E1 +2.287020000E2,5.943082312E1 +2.289450000E2,6.095935321E1 +2.292950000E2,5.939706013E1 +2.296230000E2,5.612117806E1 +2.299220000E2,5.805831404E1 +2.301570000E2,5.496048372E1 +2.304070000E2,5.335836124E1 +2.306490000E2,5.043808989E1 +2.309270000E2,4.778025574E1 +2.311680000E2,4.613189565E1 +2.314100000E2,4.740314381E1 +2.316580000E2,5.230056147E1 +2.319150000E2,5.672989332E1 +2.321590000E2,6.081799709E1 +2.325030000E2,5.909736866E1 +2.327570000E2,5.528762811E1 +2.330520000E2,6.623131701E1 +2.333360000E2,6.376149752E1 +2.335730000E2,6.088376871E1 +2.338700000E2,6.235681388E1 +2.341160000E2,6.060610548E1 +2.343930000E2,5.779254532E1 +2.346370000E2,5.570043106E1 +2.349010000E2,6.172637016E1 +2.351520000E2,5.865545525E1 +2.354420000E2,6.250465685E1 +2.356850000E2,6.494272879E1 +2.359310000E2,6.075163542E1 +2.361840000E2,5.742858606E1 +2.364460000E2,5.756917813E1 +2.366990000E2,6.169927684E1 +2.370080000E2,5.540268710E1 +2.373040000E2,5.484088652E1 +2.376000000E2,5.732112773E1 +2.378800000E2,5.184194161E1 +2.381270000E2,5.604168635E1 +2.383910000E2,5.644051218E1 +2.387130000E2,6.049774032E1 +2.390290000E2,6.303013407E1 +2.392800000E2,6.115111046E1 +2.395770000E2,6.294174883E1 +2.398740000E2,6.716012591E1 +2.401880000E2,7.075117191E1 +2.404890000E2,6.435561631E1 +2.407550000E2,5.593172595E1 +2.410720000E2,5.781614361E1 +2.413350000E2,5.497792445E1 +2.416080000E2,5.569244646E1 +2.418870000E2,5.408109683E1 +2.421100000E2,5.687440525E1 +2.424230000E2,6.415333296E1 +2.427170000E2,6.528722740E1 +2.429900000E2,6.229384329E1 +2.432350000E2,5.452507698E1 +2.434960000E2,5.248331654E1 +2.437450000E2,5.069826347E1 +2.439880000E2,4.989889277E1 +2.442610000E2,5.196931346E1 +2.445130000E2,4.988417717E1 +2.448120000E2,5.950968466E1 +2.451200000E2,5.725324421E1 +2.454210000E2,5.902908729E1 +2.456980000E2,5.857784521E1 +2.459650000E2,5.154496059E1 +2.462670000E2,5.316738342E1 +2.465660000E2,5.681338179E1 +2.468580000E2,5.486468116E1 +2.471080000E2,5.378622946E1 +2.473840000E2,5.263910847E1 +2.477040000E2,5.102724000E1 +2.479590000E2,4.958128022E1 +2.482070000E2,5.621813465E1 +2.486190000E2,5.553111013E1 +2.489120000E2,5.711728514E1 +2.491630000E2,6.098223102E1 +2.494610000E2,5.812970142E1 +2.497290000E2,5.874411947E1 +2.500090000E2,6.058797235E1 +2.503160000E2,5.921850964E1 +2.506300000E2,5.825659244E1 +2.508940000E2,5.902074554E1 +2.512250000E2,5.857720223E1 +2.514860000E2,5.834259509E1 +2.517560000E2,5.664723408E1 +2.520110000E2,6.245873243E1 +2.522800000E2,6.018081628E1 +2.525490000E2,6.060905480E1 +2.527980000E2,6.098924059E1 +2.530310000E2,6.604497204E1 +2.532750000E2,5.762503683E1 +2.535750000E2,5.946675250E1 +2.538150000E2,5.696283688E1 +2.541120000E2,5.795434272E1 +2.543420000E2,5.641662406E1 +2.546470000E2,6.001503419E1 +2.549610000E2,5.913147779E1 +2.552050000E2,5.772050526E1 +2.554250000E2,5.986895040E1 +2.557400000E2,4.836792039E1 +2.560130000E2,4.818172752E1 +2.563450000E2,5.244597112E1 +2.566130000E2,5.174954560E1 +2.568650000E2,5.165225717E1 +2.571100000E2,4.865803315E1 +2.573530000E2,4.773689375E1 +2.576460000E2,5.375353685E1 +2.579030000E2,5.630041837E1 +2.582540000E2,5.390583403E1 +2.585030000E2,5.686416101E1 +2.588120000E2,5.880170204E1 +2.590630000E2,5.373023259E1 +2.593590000E2,6.009405077E1 +2.596120000E2,5.710673366E1 +2.598560000E2,5.891240789E1 +2.600990000E2,5.960890080E1 +2.603510000E2,6.728594423E1 +2.606060000E2,6.334340199E1 +2.609270000E2,6.082175509E1 +2.611830000E2,5.750083619E1 +2.615060000E2,5.667484133E1 +2.618070000E2,6.152760439E1 +2.620430000E2,5.697586540E1 +2.623440000E2,5.674189037E1 +2.625730000E2,5.539036876E1 +2.628210000E2,4.901745514E1 +2.631270000E2,5.264848299E1 +2.634230000E2,5.038277380E1 +2.636750000E2,5.149234245E1 +2.639170000E2,4.604207892E1 +2.641630000E2,5.735184247E1 +2.644630000E2,5.659523444E1 +2.648080000E2,5.697978691E1 +2.650640000E2,5.691301726E1 +2.653540000E2,5.696584583E1 +2.656480000E2,5.138210199E1 +2.659030000E2,5.345758564E1 +2.661640000E2,5.363588256E1 +2.664240000E2,5.471656895E1 +2.666720000E2,5.140760448E1 +2.669400000E2,5.329005020E1 +2.671940000E2,5.422388323E1 +2.674460000E2,5.133919880E1 +2.677140000E2,5.690801972E1 +2.681270000E2,5.964609863E1 +2.684030000E2,6.167901240E1 +2.686970000E2,5.297205648E1 +2.689350000E2,5.530010894E1 +2.692310000E2,5.450325538E1 +2.694700000E2,5.391690578E1 +2.697660000E2,5.420666075E1 +2.700010000E2,4.962510480E1 +2.702390000E2,5.010058679E1 +2.705460000E2,5.345147952E1 +2.708590000E2,5.574757195E1 +2.711770000E2,5.571208034E1 +2.714720000E2,5.288998421E1 +2.717170000E2,5.214438195E1 +2.720190000E2,5.232798978E1 +2.723080000E2,6.045263056E1 +2.725500000E2,5.870512300E1 +2.727930000E2,5.577911819E1 +2.730760000E2,5.501493048E1 +2.733800000E2,5.433475343E1 +2.736720000E2,5.293457700E1 +2.739070000E2,5.486483547E1 +2.741780000E2,6.008208952E1 +2.745050000E2,5.845984546E1 +2.748040000E2,5.900764997E1 +2.751070000E2,5.760203457E1 +2.754240000E2,5.795024632E1 +2.757280000E2,6.182748257E1 +2.760340000E2,5.683205968E1 +2.763350000E2,5.821402367E1 +2.766080000E2,5.520672517E1 +2.768980000E2,5.645892504E1 +2.772030000E2,5.463906896E1 +2.775200000E2,5.412722413E1 +2.777910000E2,5.268636730E1 +2.780870000E2,5.566734184E1 +2.783350000E2,5.745256931E1 +2.785810000E2,5.645167582E1 +2.788270000E2,5.925831320E1 +2.790840000E2,5.591320738E1 +2.793690000E2,5.632637646E1 +2.796200000E2,6.252281740E1 +2.799120000E2,5.547643277E1 +2.801570000E2,6.021611275E1 +2.804580000E2,5.732676882E1 +2.808110000E2,5.909573770E1 +2.810780000E2,6.005240162E1 +2.813300000E2,5.965022185E1 +2.815820000E2,6.135840817E1 +2.818790000E2,5.970629096E1 +2.821590000E2,5.879025140E1 +2.824010000E2,5.747324456E1 +2.826520000E2,5.726379384E1 +2.828950000E2,5.871306541E1 +2.831920000E2,6.188032415E1 +2.834710000E2,6.066582287E1 +2.837110000E2,5.950933244E1 +2.840350000E2,5.901018860E1 +2.843000000E2,5.761182729E1 +2.846050000E2,5.446909438E1 +2.848570000E2,5.349219985E1 +2.851700000E2,5.015518748E1 +2.854330000E2,5.374610595E1 +2.857270000E2,5.877223624E1 +2.860310000E2,5.644512377E1 +2.863080000E2,5.711327205E1 +2.865540000E2,5.655239592E1 +2.867930000E2,5.833716670E1 +2.871150000E2,5.417781453E1 +2.874030000E2,5.332227783E1 +2.876540000E2,5.146836736E1 +2.879540000E2,5.452228720E1 +2.881970000E2,5.025406823E1 +2.884910000E2,5.490648375E1 +2.887280000E2,5.506242221E1 +2.890210000E2,5.400927835E1 +2.892600000E2,5.781126179E1 +2.895430000E2,6.384283902E1 +2.898470000E2,6.340395874E1 +2.901430000E2,5.555395770E1 +2.904560000E2,5.514224078E1 +2.907530000E2,5.346566906E1 +2.910000000E2,5.948406902E1 +2.912590000E2,6.362292628E1 +2.915300000E2,6.175065463E1 +2.918240000E2,6.129817533E1 +2.920790000E2,6.317618325E1 +2.923350000E2,6.137933812E1 +2.926010000E2,5.620086793E1 +2.928740000E2,5.715913846E1 +2.931780000E2,7.028942499E1 +2.934620000E2,6.774357618E1 +2.937770000E2,6.989950413E1 +2.940270000E2,6.631119439E1 +2.943030000E2,6.956920703E1 +2.945570000E2,6.352936554E1 +2.948100000E2,6.981123112E1 +2.951150000E2,5.607171784E1 +2.953950000E2,5.394017247E1 +2.956980000E2,7.110851253E1 +2.959460000E2,6.978848906E1 +2.961900000E2,5.446752823E1 +2.965090000E2,6.309281755E1 +2.968110000E2,6.647752141E1 +2.971300000E2,6.773248230E1 +2.974240000E2,6.289421429E1 +2.977060000E2,5.998905240E1 +2.979500000E2,6.016152671E1 +2.981940000E2,5.851705490E1 +2.984880000E2,6.506323043E1 +2.987430000E2,5.702053645E1 +2.990110000E2,4.890963733E1 +2.993040000E2,5.105737182E1 +2.995650000E2,4.950865545E1 +2.998150000E2,4.713536225E1 +3.000860000E2,6.170154569E1 +3.003780000E2,5.697995513E1 +3.006750000E2,6.496205179E1 +3.009180000E2,5.585602045E1 +3.012120000E2,5.317421587E1 +3.015130000E2,5.532213468E1 +3.017840000E2,5.371543715E1 +3.020520000E2,6.741141038E1 +3.023220000E2,6.638671809E1 +3.025730000E2,5.833940482E1 +3.028700000E2,6.272205104E1 +3.031230000E2,6.150676490E1 +3.034050000E2,6.571826996E1 +3.036710000E2,6.387001854E1 +3.039460000E2,5.704179120E1 +3.042380000E2,5.452420344E1 +3.044730000E2,6.911436343E1 +3.047670000E2,6.747337761E1 +3.050070000E2,6.642457947E1 +3.053010000E2,6.704052830E1 +3.055360000E2,6.335116163E1 +3.058350000E2,6.452879154E1 +3.061310000E2,6.588892290E1 +3.064460000E2,6.065604325E1 +3.066970000E2,5.884139521E1 +3.069890000E2,6.115548360E1 +3.072650000E2,5.474220631E1 +3.075290000E2,5.525228633E1 +3.077890000E2,5.546520153E1 +3.080280000E2,5.799541194E1 +3.083270000E2,5.467819740E1 +3.086250000E2,5.227747322E1 +3.089260000E2,5.802220937E1 +3.091970000E2,5.383690373E1 +3.095040000E2,5.794687305E1 +3.097810000E2,5.426386053E1 +3.100000000E2,5.745164866E1 +3.103300000E2,5.475501144E1 +3.106240000E2,5.154802151E1 +3.108750000E2,5.434380726E1 +3.111540000E2,5.533246388E1 +3.114150000E2,5.554218476E1 +3.116740000E2,5.375334275E1 +3.119200000E2,5.727216331E1 +3.121680000E2,5.235396651E1 +3.124720000E2,6.207307801E1 +3.127180000E2,6.488896117E1 +3.130530000E2,6.168970511E1 +3.133080000E2,6.010687101E1 +3.135950000E2,6.305386662E1 +3.138880000E2,6.214030252E1 +3.141410000E2,5.907513997E1 +3.143960000E2,6.064308138E1 +3.146480000E2,6.195321339E1 +3.148870000E2,6.088765310E1 +3.151830000E2,5.906360624E1 +3.154280000E2,5.864981040E1 +3.157360000E2,5.824424792E1 +3.159750000E2,5.826399021E1 +3.163740000E2,6.051726612E1 +3.166320000E2,6.011967909E1 +3.168940000E2,5.577110603E1 +3.172010000E2,5.372586587E1 +3.174460000E2,5.537091967E1 +3.176890000E2,5.504912063E1 +3.179320000E2,5.264203521E1 +3.182150000E2,5.344854544E1 +3.184600000E2,5.656777951E1 +3.187200000E2,5.398435402E1 +3.189820000E2,5.410695962E1 +3.192460000E2,5.344168860E1 +3.195780000E2,5.697626360E1 +3.198350000E2,6.073105615E1 +3.200880000E2,6.621432780E1 +3.203460000E2,6.597785722E1 +3.205980000E2,5.907542432E1 +3.208920000E2,5.702769809E1 +3.211760000E2,6.207459825E1 +3.214520000E2,5.921715282E1 +3.217010000E2,5.501368146E1 +3.220030000E2,5.927746858E1 +3.223090000E2,5.878714279E1 +3.226530000E2,6.209253703E1 +3.229180000E2,5.801419316E1 +3.231660000E2,6.150680788E1 +3.234110000E2,5.950436139E1 +3.236660000E2,5.694006868E1 +3.239890000E2,5.964691948E1 +3.242420000E2,6.322261269E1 +3.245070000E2,5.967413832E1 +3.247540000E2,5.743115651E1 +3.250010000E2,5.693057833E1 +3.252760000E2,5.076009335E1 +3.255600000E2,5.432440321E1 +3.258270000E2,5.728583073E1 +3.262160000E2,6.158050311E1 +3.264570000E2,5.788548067E1 +3.267330000E2,5.661485397E1 +3.270280000E2,5.698735139E1 +3.272870000E2,5.428158234E1 +3.275550000E2,5.401192370E1 +3.278320000E2,5.894424302E1 +3.281050000E2,5.279140275E1 +3.283850000E2,5.366788524E1 +3.286760000E2,5.569462346E1 +3.289750000E2,5.484501656E1 +3.292730000E2,5.654335493E1 +3.295550000E2,5.483429560E1 +3.298560000E2,5.516099131E1 +3.301720000E2,5.150081287E1 +3.304560000E2,5.126263973E1 +3.307930000E2,4.943715566E1 +3.310330000E2,5.297477083E1 +3.312800000E2,4.994759883E1 +3.316030000E2,5.283028939E1 +3.318860000E2,5.150402936E1 +3.321790000E2,5.777668868E1 +3.325470000E2,5.446937149E1 +3.328030000E2,5.754474494E1 +3.330410000E2,5.437750931E1 +3.333210000E2,5.378201308E1 +3.335760000E2,5.486825362E1 +3.338240000E2,5.338123539E1 +3.340700000E2,5.704649160E1 +3.343740000E2,5.576563429E1 +3.346640000E2,5.503590574E1 +3.349650000E2,5.539431503E1 +3.352080000E2,5.782097549E1 +3.355080000E2,5.260852375E1 +3.358690000E2,6.012616228E1 +3.361400000E2,5.534922411E1 +3.363810000E2,5.436765301E1 +3.366230000E2,5.007736554E1 +3.368850000E2,5.304270830E1 +3.371340000E2,5.106682022E1 +3.373960000E2,5.491262243E1 +3.376890000E2,5.891119644E1 +3.379320000E2,5.554676164E1 +3.382420000E2,5.491809401E1 +3.385700000E2,6.003743295E1 +3.389490000E2,5.964265847E1 +3.392140000E2,6.009419780E1 +3.394780000E2,5.950800538E1 +3.397810000E2,5.514081916E1 +3.400260000E2,5.654810222E1 +3.403230000E2,5.919098275E1 +3.405600000E2,5.937137097E1 +3.408650000E2,5.885711760E1 +3.411560000E2,6.122434193E1 +3.414060000E2,6.101494213E1 +3.416650000E2,5.685059098E1 +3.419710000E2,4.988163583E1 +3.423360000E2,5.097871962E1 +3.426300000E2,6.097968551E1 +3.429260000E2,5.246223058E1 +3.431760000E2,5.140448000E1 +3.434570000E2,5.162147831E1 +3.436910000E2,5.437509469E1 +3.439650000E2,5.588289675E1 +3.442010000E2,5.342482218E1 +3.444930000E2,5.621155564E1 +3.447310000E2,5.753713233E1 +3.450340000E2,5.873821374E1 +3.453240000E2,5.674648484E1 +3.455770000E2,5.843857274E1 +3.458770000E2,6.170678128E1 +3.461770000E2,5.848319050E1 +3.464240000E2,5.996271814E1 +3.467290000E2,5.583139448E1 +3.470000000E2,5.558324990E1 +3.472360000E2,5.638821787E1 +3.474880000E2,6.015129432E1 +3.477550000E2,6.074195357E1 +3.480530000E2,6.258101891E1 +3.483260000E2,6.280209300E1 +3.486840000E2,5.935598721E1 +3.489370000E2,6.423635683E1 +3.492060000E2,7.026891453E1 +3.495130000E2,5.477771858E1 +3.498240000E2,6.143080763E1 +3.500700000E2,6.077206860E1 +3.503130000E2,5.816670512E1 +3.506030000E2,6.220374728E1 +3.509040000E2,6.435510927E1 +3.511560000E2,6.387906049E1 +3.514240000E2,6.324188625E1 +3.517710000E2,6.217871174E1 +3.520510000E2,6.349767138E1 +3.523000000E2,5.947763114E1 +3.525840000E2,5.623947938E1 +3.528810000E2,5.940245648E1 +3.531830000E2,5.323006485E1 +3.534790000E2,4.756673680E1 +3.537830000E2,5.761743216E1 +3.540870000E2,5.701856444E1 +3.543720000E2,5.507707077E1 +3.546320000E2,5.561457107E1 +3.549330000E2,6.036785424E1 +3.552860000E2,5.818319920E1 +3.555390000E2,5.636477080E1 +3.557840000E2,5.686236286E1 +3.560330000E2,6.137502104E1 +3.563290000E2,6.039421004E1 +3.565710000E2,5.873926214E1 +3.568160000E2,5.984737812E1 +3.570890000E2,5.898549785E1 +3.573200000E2,5.804358229E1 +3.576080000E2,5.178825198E1 +3.578380000E2,5.333798630E1 +3.581470000E2,5.663121054E1 +3.584860000E2,5.705169894E1 +3.587470000E2,5.488627438E1 +3.590020000E2,5.493171173E1 +3.592590000E2,5.280801534E1 +3.595110000E2,5.919356657E1 +3.597710000E2,6.061921525E1 +3.600770000E2,5.781838960E1 +3.603810000E2,5.824405535E1 +3.606410000E2,5.734273072E1 +3.608930000E2,5.860073318E1 +3.611440000E2,5.158577335E1 +3.614110000E2,5.569804167E1 +3.617550000E2,5.732029627E1 +3.620530000E2,5.599725951E1 +3.623260000E2,5.427140428E1 +3.625700000E2,5.439119305E1 +3.628680000E2,5.768088704E1 +3.631160000E2,5.322266305E1 +3.634170000E2,5.611257515E1 +3.637150000E2,5.466283243E1 +3.639540000E2,5.648497192E1 +3.642520000E2,5.982456496E1 +3.644910000E2,5.683499776E1 +3.648080000E2,5.424977228E1 +3.650550000E2,5.261749952E1 +3.653010000E2,5.976464589E1 +3.655400000E2,5.630627545E1 +3.658370000E2,5.855663855E1 +3.660660000E2,5.839517218E1 +3.663050000E2,5.701336937E1 +3.666100000E2,6.057417753E1 +3.668530000E2,5.660058929E1 +3.671060000E2,5.360906173E1 +3.673270000E2,5.766761713E1 +3.676020000E2,5.473947199E1 +3.679270000E2,5.730791892E1 +3.681990000E2,5.368134624E1 +3.685210000E2,5.122725302E1 +3.688180000E2,5.413949330E1 +3.690720000E2,5.953240184E1 +3.693650000E2,5.834363401E1 +3.696110000E2,4.952962201E1 +3.698620000E2,6.082605721E1 +3.701240000E2,5.541205242E1 +3.703840000E2,5.595936781E1 +3.706570000E2,5.751180267E1 +3.709050000E2,5.510413826E1 +3.712530000E2,5.236304209E1 +3.715330000E2,5.429686706E1 +3.717680000E2,5.365135821E1 +3.720680000E2,5.442146139E1 +3.723070000E2,5.193301537E1 +3.726070000E2,5.573089397E1 +3.728540000E2,5.084704353E1 +3.731070000E2,5.244752708E1 +3.734250000E2,5.501438711E1 +3.737160000E2,5.701937821E1 +3.739830000E2,5.913008265E1 +3.743030000E2,6.329763996E1 +3.745490000E2,5.828010903E1 +3.748110000E2,5.514928454E1 +3.750560000E2,5.535724603E1 +3.753250000E2,6.062318511E1 +3.756820000E2,5.853801057E1 +3.759720000E2,6.218740595E1 +3.762560000E2,6.130322227E1 +3.764780000E2,5.705598438E1 +3.767430000E2,5.675025411E1 +3.770350000E2,5.562309411E1 +3.773330000E2,6.171478403E1 +3.776660000E2,5.752069737E1 +3.779640000E2,5.869913239E1 +3.782130000E2,5.802158707E1 +3.785030000E2,5.920699755E1 +3.787580000E2,5.984700757E1 +3.790120000E2,5.874214142E1 +3.792820000E2,5.792329599E1 +3.795460000E2,6.240429581E1 +3.798520000E2,5.924961400E1 +3.800960000E2,5.655548581E1 +3.803510000E2,5.997047167E1 +3.806590000E2,5.894207932E1 +3.810310000E2,5.556916558E1 +3.813250000E2,5.709965860E1 +3.815810000E2,5.724657649E1 +3.818690000E2,5.634885250E1 +3.821660000E2,5.381597934E1 +3.824070000E2,5.409431797E1 +3.827020000E2,5.558304395E1 +3.829400000E2,5.836087965E1 +3.832380000E2,5.621848827E1 +3.834740000E2,5.756105430E1 +3.837670000E2,5.972981317E1 +3.840620000E2,6.110722903E1 +3.842970000E2,6.011338906E1 +3.846120000E2,6.632548976E1 +3.849300000E2,5.632542095E1 +3.852340000E2,5.660090160E1 +3.854760000E2,5.637042997E1 +3.857700000E2,6.483820819E1 +3.860160000E2,6.294386681E1 +3.862760000E2,6.248693097E1 +3.865740000E2,5.966646580E1 +3.868130000E2,5.884596060E1 +3.871230000E2,6.069045984E1 +3.874660000E2,5.535227762E1 +3.877260000E2,5.453589064E1 +3.879920000E2,5.803286513E1 +3.882920000E2,6.338575111E1 +3.885370000E2,6.297665471E1 +3.888380000E2,6.078963895E1 +3.890870000E2,6.078711186E1 +3.893350000E2,5.918580133E1 +3.896040000E2,5.645003340E1 +3.899070000E2,5.868887980E1 +3.901560000E2,5.816727924E1 +3.904840000E2,5.908711574E1 +3.907830000E2,5.165109059E1 +3.910410000E2,5.747977046E1 +3.913230000E2,5.600926578E1 +3.916170000E2,5.743239537E1 +3.918580000E2,5.999528635E1 +3.921650000E2,5.924448814E1 +3.924670000E2,6.347749271E1 +3.927590000E2,6.285842009E1 +3.929960000E2,6.439104552E1 +3.933010000E2,6.092208558E1 +3.935450000E2,5.889760176E1 +3.939100000E2,5.798312040E1 +3.941770000E2,5.909426563E1 +3.944250000E2,5.971090911E1 +3.946810000E2,5.379436409E1 +3.949270000E2,5.134339741E1 +3.951700000E2,5.739586279E1 +3.954270000E2,5.255911571E1 +3.956850000E2,5.149310319E1 +3.959500000E2,5.723685944E1 +3.962270000E2,5.622087783E1 +3.964720000E2,6.119098643E1 +3.967310000E2,6.249797436E1 +3.970320000E2,5.838309249E1 +3.973440000E2,5.720898847E1 +3.976100000E2,5.357982700E1 +3.978600000E2,5.091452983E1 +3.981070000E2,4.781274510E1 +3.983520000E2,4.684320786E1 +3.986530000E2,4.867937405E1 +3.988970000E2,4.947454895E1 +3.991740000E2,4.941937240E1 +3.994180000E2,5.206925818E1 +3.997200000E2,5.099596962E1 +3.999720000E2,5.059119317E1 +4.002350000E2,4.980275756E1 +4.004940000E2,5.514017077E1 +4.008060000E2,5.354499430E1 +4.011150000E2,5.377825353E1 +4.013980000E2,5.657928040E1 +4.016460000E2,6.437756844E1 +4.019070000E2,6.072529486E1 +4.021970000E2,5.876291143E1 +4.024430000E2,6.118567430E1 +4.027460000E2,5.925186578E1 +4.030590000E2,5.727531678E1 +4.033610000E2,6.211123432E1 +4.036680000E2,6.041950332E1 +4.039230000E2,6.161200416E1 +4.041780000E2,6.047480336E1 +4.044620000E2,5.905442986E1 +4.047060000E2,5.729915709E1 +4.049630000E2,6.020933408E1 +4.052500000E2,5.845152603E1 +4.055600000E2,5.814304967E1 +4.058210000E2,5.866194002E1 +4.060640000E2,5.736420578E1 +4.063180000E2,6.107395805E1 +4.065790000E2,5.985269852E1 +4.069480000E2,5.745859610E1 +4.072050000E2,5.693680110E1 +4.074960000E2,6.165201185E1 +4.077470000E2,6.131132241E1 +4.079970000E2,5.824414723E1 +4.083050000E2,5.958451387E1 +4.085600000E2,5.739792126E1 +4.088150000E2,5.573389816E1 +4.090850000E2,5.530698039E1 +4.093810000E2,5.634371531E1 +4.096660000E2,5.880658089E1 +4.099920000E2,5.804298004E1 +4.102870000E2,5.688352401E1 +4.106310000E2,5.573115839E1 +4.109280000E2,5.368053116E1 +4.112180000E2,5.474384188E1 +4.114650000E2,5.380195893E1 +4.117660000E2,5.718608674E1 +4.120140000E2,5.703743686E1 +4.122910000E2,5.985228158E1 +4.125620000E2,6.278694860E1 +4.128210000E2,5.839550633E1 +4.130600000E2,6.029373556E1 +4.133710000E2,5.711050636E1 +4.136150000E2,5.200468588E1 +4.138820000E2,5.769230508E1 +4.141370000E2,5.333759168E1 +4.143860000E2,5.632377961E1 +4.146570000E2,5.647744894E1 +4.149040000E2,5.667945226E1 +4.151840000E2,5.669404445E1 +4.154420000E2,6.072374556E1 +4.157420000E2,5.606444578E1 +4.159850000E2,5.623596320E1 +4.162830000E2,5.264542492E1 +4.165340000E2,5.359803767E1 +4.168600000E2,5.691340897E1 +4.171060000E2,5.636326143E1 +4.173490000E2,6.276141082E1 +4.176080000E2,6.197471417E1 +4.178580000E2,5.777170976E1 +4.181050000E2,5.407671770E1 +4.183760000E2,4.795453020E1 +4.186580000E2,5.871005652E1 +4.188870000E2,6.069158080E1 +4.191320000E2,6.112379328E1 +4.193750000E2,5.584116633E1 +4.196280000E2,6.302854070E1 +4.199610000E2,6.640457067E1 +4.202240000E2,6.337314603E1 +4.205160000E2,5.904470105E1 +4.208200000E2,5.799078909E1 +4.210810000E2,5.975635789E1 +4.213260000E2,6.334088587E1 +4.215900000E2,5.849627934E1 +4.218550000E2,5.894070219E1 +4.221030000E2,5.961371776E1 +4.223550000E2,5.281830949E1 +4.225970000E2,4.892580508E1 +4.229130000E2,5.950646935E1 +4.232610000E2,6.303011111E1 +4.235630000E2,6.030515180E1 +4.238060000E2,5.832387195E1 +4.240560000E2,6.126571743E1 +4.243280000E2,5.961805347E1 +4.245710000E2,5.916464366E1 +4.248300000E2,6.404431780E1 +4.251020000E2,6.161392817E1 +4.253630000E2,6.303875005E1 +4.256110000E2,6.294329578E1 +4.258560000E2,6.495739223E1 +4.261620000E2,6.352748415E1 +4.265140000E2,6.360144813E1 +4.267650000E2,6.320185268E1 +4.270250000E2,6.598206760E1 +4.272910000E2,5.736158392E1 +4.275300000E2,5.632655800E1 +4.277760000E2,5.626186588E1 +4.280650000E2,5.992298879E1 +4.283460000E2,5.976814640E1 +4.285960000E2,5.617047451E1 +4.288540000E2,5.410240194E1 +4.291290000E2,5.524345530E1 +4.293550000E2,5.025485629E1 +4.297050000E2,5.094849624E1 +4.299600000E2,5.349595208E1 +4.302230000E2,5.668766668E1 +4.304690000E2,5.470073040E1 +4.307330000E2,5.808421323E1 +4.310240000E2,5.815977776E1 +4.312740000E2,5.751031291E1 +4.315190000E2,6.045600028E1 +4.318300000E2,5.967896339E1 +4.320980000E2,5.746835753E1 +4.324020000E2,5.874054152E1 +4.327010000E2,5.770096959E1 +4.330460000E2,5.851412717E1 +4.333220000E2,5.970473393E1 +4.335930000E2,6.024030776E1 +4.338530000E2,5.564089573E1 +4.341340000E2,5.328000065E1 +4.343790000E2,5.522789934E1 +4.346930000E2,5.271905966E1 +4.349910000E2,5.685384424E1 +4.352400000E2,5.751176106E1 +4.355350000E2,5.654290580E1 +4.357760000E2,5.976937629E1 +4.360780000E2,5.445311615E1 +4.363520000E2,5.460006243E1 +4.366010000E2,5.402958946E1 +4.369120000E2,5.611325616E1 +4.371660000E2,5.675575065E1 +4.374120000E2,5.605818704E1 +4.377070000E2,5.614720111E1 +4.379470000E2,5.596280974E1 +4.382450000E2,5.764305460E1 +4.384820000E2,6.015340826E1 +4.387240000E2,6.073594369E1 +4.390310000E2,5.846982437E1 +4.393110000E2,5.837342754E1 +4.396160000E2,5.758988397E1 +4.398810000E2,5.375393273E1 +4.401700000E2,5.590416510E1 +4.404180000E2,5.649267014E1 +4.406570000E2,5.809884175E1 +4.409200000E2,5.934788425E1 +4.411750000E2,5.883690392E1 +4.414270000E2,5.465512306E1 +4.416780000E2,5.456039720E1 +4.419260000E2,6.053551690E1 +4.422020000E2,5.446896121E1 +4.425270000E2,5.304300238E1 +4.428480000E2,5.413537656E1 +4.431230000E2,5.590535088E1 +4.433740000E2,5.516889265E1 +4.436180000E2,5.375803139E1 +4.439250000E2,5.440731706E1 +4.441670000E2,5.378894171E1 +4.444170000E2,5.676009311E1 +4.447160000E2,5.433224316E1 +4.449620000E2,5.431777666E1 +4.452100000E2,5.220353562E1 +4.454560000E2,5.525232641E1 +4.456950000E2,5.348687858E1 +4.459900000E2,5.571408478E1 +4.462320000E2,5.590054486E1 +4.464840000E2,5.627503595E1 +4.467390000E2,5.824548232E1 +4.469910000E2,5.637049423E1 +4.472460000E2,5.754096885E1 +4.474930000E2,5.335865942E1 +4.477890000E2,5.765888938E1 +4.480780000E2,6.102087464E1 +4.483520000E2,6.006145593E1 +4.486510000E2,5.685958774E1 +4.489610000E2,5.748149351E1 +4.492370000E2,5.709623916E1 +4.495040000E2,5.821496279E1 +4.497570000E2,5.970222946E1 +4.500030000E2,5.750976802E1 +4.502380000E2,5.796549321E1 +4.505370000E2,5.665777454E1 +4.508330000E2,5.605038109E1 +4.510750000E2,5.504306522E1 +4.513230000E2,5.112487870E1 +4.515900000E2,5.559150914E1 +4.518300000E2,5.656933458E1 +4.520810000E2,6.082180135E1 +4.524470000E2,5.774965281E1 +4.527120000E2,5.847728207E1 +4.529730000E2,5.711434047E1 +4.532810000E2,5.503285278E1 +4.535670000E2,5.614330822E1 +4.538610000E2,6.211492489E1 +4.541040000E2,6.003078695E1 +4.543760000E2,5.766611466E1 +4.546280000E2,5.912518267E1 +4.549300000E2,5.969489895E1 +4.551760000E2,5.509558621E1 +4.554320000E2,5.963291683E1 +4.556950000E2,6.194656842E1 +4.559980000E2,6.032793642E1 +4.562390000E2,5.874022110E1 +4.565060000E2,6.016749735E1 +4.567480000E2,5.985596964E1 +4.570070000E2,5.588678859E1 +4.572660000E2,5.541792762E1 +4.575660000E2,4.969164404E1 +4.578050000E2,4.976271573E1 +4.581060000E2,5.634137812E1 +4.583500000E2,5.321783082E1 +4.586280000E2,5.816393976E1 +4.588870000E2,5.817726916E1 +4.591860000E2,5.398220140E1 +4.594690000E2,5.572842498E1 +4.597270000E2,5.759574297E1 +4.600290000E2,5.492384706E1 +4.602790000E2,5.570826682E1 +4.605780000E2,5.619496661E1 +4.608690000E2,5.993990435E1 +4.611730000E2,6.185390750E1 +4.614300000E2,6.125031183E1 +4.617390000E2,6.047450440E1 +4.621070000E2,5.913093195E1 +4.623500000E2,6.032535990E1 +4.626490000E2,5.803726699E1 +4.628910000E2,5.968748294E1 +4.631850000E2,5.792594347E1 +4.634330000E2,5.623910190E1 +4.636850000E2,6.026318401E1 +4.639240000E2,6.002593060E1 +4.641990000E2,5.694813724E1 +4.644200000E2,5.456998819E1 +4.646660000E2,5.683591124E1 +4.649070000E2,5.893829862E1 +4.652630000E2,5.637983039E1 +4.655160000E2,5.571226470E1 +4.657720000E2,5.582065666E1 +4.660510000E2,5.436378979E1 +4.663550000E2,5.697364508E1 +4.666350000E2,5.716664070E1 +4.668800000E2,6.098104772E1 +4.671260000E2,5.932872997E1 +4.673960000E2,5.573089336E1 +4.676430000E2,5.791664461E1 +4.678890000E2,5.589855895E1 +4.681490000E2,6.359324433E1 +4.685010000E2,5.902079393E1 +4.687870000E2,6.085500324E1 +4.690180000E2,6.401116813E1 +4.693190000E2,6.157634911E1 +4.695830000E2,6.068297160E1 +4.698370000E2,5.867738322E1 +4.701080000E2,6.069776659E1 +4.703530000E2,5.904983802E1 +4.706060000E2,5.642725313E1 +4.708480000E2,5.600286970E1 +4.711080000E2,5.678564623E1 +4.714020000E2,5.139543439E1 +4.717220000E2,5.924511995E1 +4.720300000E2,5.309180697E1 +4.722790000E2,5.295961103E1 +4.725820000E2,5.448425692E1 +4.728350000E2,5.346047841E1 +4.731210000E2,5.563518239E1 +4.733630000E2,5.630991562E1 +4.736070000E2,5.519344442E1 +4.738520000E2,5.696356709E1 +4.741150000E2,5.721588368E1 +4.743810000E2,5.556082681E1 +4.746430000E2,5.453201409E1 +4.749610000E2,5.621559396E1 +4.752460000E2,6.170975330E1 +4.755640000E2,6.352753975E1 +4.758660000E2,5.818774343E1 +4.761780000E2,6.177058435E1 +4.764630000E2,5.829511769E1 +4.766910000E2,5.658732029E1 +4.769520000E2,6.006113158E1 +4.772530000E2,6.022385702E1 +4.775200000E2,5.965858240E1 +4.778410000E2,5.970326758E1 +4.780960000E2,5.911597661E1 +4.783440000E2,5.656338446E1 +4.786020000E2,5.723922467E1 +4.788680000E2,5.700163516E1 +4.791490000E2,6.083416080E1 +4.794510000E2,5.899425763E1 +4.797630000E2,5.820674449E1 +4.800620000E2,5.648898879E1 +4.803380000E2,5.465743937E1 +4.806090000E2,5.006847009E1 +4.809050000E2,5.870050130E1 +4.811580000E2,5.878066343E1 +4.814060000E2,5.929414686E1 +4.817070000E2,5.758425183E1 +4.819760000E2,5.151398214E1 +4.822410000E2,5.772956896E1 +4.824880000E2,5.913153701E1 +4.827710000E2,5.814746383E1 +4.830140000E2,6.018356701E1 +4.832870000E2,5.985078792E1 +4.835070000E2,6.081307149E1 +4.837500000E2,5.810932132E1 +4.840440000E2,5.700769218E1 +4.842880000E2,5.815119989E1 +4.845920000E2,5.595850943E1 +4.849330000E2,5.891167795E1 +4.851960000E2,5.413833723E1 +4.854760000E2,6.184122004E1 +4.857700000E2,6.074653742E1 +4.860130000E2,6.033024099E1 +4.862530000E2,5.218562994E1 +4.865560000E2,5.902882093E1 +4.868150000E2,6.397338635E1 +4.870790000E2,6.543155406E1 +4.873440000E2,6.181389827E1 +4.876070000E2,6.381240883E1 +4.878770000E2,6.121521197E1 +4.882210000E2,5.780293585E1 +4.884640000E2,5.941826112E1 +4.887100000E2,6.118399944E1 +4.889830000E2,6.000089150E1 +4.892940000E2,5.873163787E1 +4.895350000E2,5.943116280E1 +4.897770000E2,5.867927357E1 +4.900230000E2,6.190584219E1 +4.903270000E2,6.313044892E1 +4.905550000E2,6.096660510E1 +4.907970000E2,5.773464228E1 +4.911090000E2,5.720144266E1 +4.914750000E2,5.797465536E1 +4.917410000E2,6.063197812E1 +4.920040000E2,5.799562897E1 +4.922950000E2,5.391853563E1 +4.925940000E2,6.053973121E1 +4.928320000E2,5.781822977E1 +4.931250000E2,6.541242849E1 +4.933660000E2,6.151252976E1 +4.936620000E2,5.962569242E1 +4.939140000E2,6.114162989E1 +4.941750000E2,6.074296596E1 +4.944160000E2,5.738425867E1 +4.947510000E2,6.084173002E1 +4.950140000E2,5.911448476E1 +4.953100000E2,6.076832164E1 +4.955530000E2,6.357047625E1 +4.958480000E2,6.344590866E1 +4.960850000E2,6.154350148E1 +4.963870000E2,5.815666478E1 +4.966770000E2,5.862350251E1 +4.969720000E2,5.162851816E1 +4.972640000E2,5.887916548E1 +4.975020000E2,6.130693279E1 +4.977480000E2,6.164914583E1 +4.980300000E2,5.689153252E1 +4.983240000E2,6.054571109E1 +4.985610000E2,5.779234792E1 +4.987980000E2,6.281334084E1 +4.991290000E2,6.074883772E1 +4.994230000E2,6.344972933E1 +4.996620000E2,6.040546490E1 +4.999570000E2,6.143019571E1 +5.002020000E2,6.117826214E1 +5.004980000E2,6.217883653E1 +5.007380000E2,6.294102819E1 +5.010930000E2,6.516475449E1 +5.013550000E2,6.119184016E1 +5.016670000E2,6.096554209E1 +5.019390000E2,6.197647057E1 +5.022530000E2,6.186754720E1 +5.025630000E2,5.954982776E1 +5.028510000E2,6.115486405E1 +5.031440000E2,6.348254173E1 +5.033820000E2,5.960570527E1 +5.036780000E2,5.977682583E1 +5.039180000E2,5.709696054E1 +5.042580000E2,6.265263203E1 +5.045140000E2,6.166583393E1 +5.047590000E2,6.184451596E1 +5.050170000E2,6.196658471E1 +5.053150000E2,6.014630927E1 +5.055610000E2,6.055201466E1 +5.058690000E2,6.189129858E1 +5.062120000E2,6.557808579E1 +5.064770000E2,6.080176744E1 +5.067370000E2,6.164107472E1 +5.069870000E2,6.497302078E1 +5.072490000E2,6.320126990E1 +5.076210000E2,6.073801439E1 +5.078780000E2,5.612097300E1 +5.081420000E2,5.978501024E1 +5.084360000E2,6.061444996E1 +5.086860000E2,6.272142993E1 +5.089270000E2,6.250458760E1 +5.092250000E2,5.860749180E1 +5.094720000E2,6.368373725E1 +5.097760000E2,6.005985592E1 +5.100780000E2,5.959557057E1 +5.103410000E2,6.085764000E1 +5.106360000E2,6.210563273E1 +5.109960000E2,6.125336704E1 +5.112590000E2,5.627814405E1 +5.115470000E2,6.253958528E1 +5.118480000E2,6.261683940E1 +5.120990000E2,5.782347554E1 +5.123560000E2,6.181201679E1 +5.126370000E2,6.425542150E1 +5.129400000E2,6.148973489E1 +5.132300000E2,6.230215374E1 +5.134720000E2,6.332855968E1 +5.137620000E2,5.875203916E1 +5.140950000E2,6.043073123E1 +5.143340000E2,5.829778385E1 +5.146280000E2,6.530539120E1 +5.148660000E2,5.725439078E1 +5.151580000E2,6.255661351E1 +5.153960000E2,6.412193683E1 +5.156410000E2,6.315775814E1 +5.158840000E2,6.025521775E1 +5.161460000E2,5.892698587E1 +5.164080000E2,5.956507822E1 +5.166610000E2,6.162757540E1 +5.169960000E2,6.009082976E1 +5.173360000E2,5.999682475E1 +5.176380000E2,6.121463264E1 +5.178750000E2,5.929809726E1 +5.181460000E2,5.746668369E1 +5.183810000E2,5.919113180E1 +5.186360000E2,5.827917213E1 +5.189280000E2,5.902314388E1 +5.192310000E2,6.116063950E1 +5.195310000E2,6.026149556E1 +5.198180000E2,5.851929656E1 +5.200920000E2,5.750929671E1 +5.204160000E2,5.729942637E1 +5.207470000E2,5.472104161E1 +5.210390000E2,6.169397748E1 +5.213450000E2,6.081589597E1 +5.216480000E2,6.278728872E1 +5.219550000E2,6.266319096E1 +5.222160000E2,6.478840582E1 +5.224820000E2,6.255888661E1 +5.227330000E2,6.119451713E1 +5.229970000E2,6.244953097E1 +5.232800000E2,6.000703556E1 +5.236020000E2,5.885323025E1 +5.239510000E2,5.826073845E1 +5.242570000E2,5.807287072E1 +5.245200000E2,5.931641295E1 +5.247800000E2,5.775994158E1 +5.250310000E2,6.167249992E1 +5.253010000E2,6.027694641E1 +5.255430000E2,6.329659774E1 +5.258240000E2,6.254377160E1 +5.261330000E2,6.489975363E1 +5.263840000E2,5.999325642E1 +5.266440000E2,5.885077446E1 +5.268920000E2,6.439829299E1 +5.272450000E2,6.165608373E1 +5.275110000E2,5.418048629E1 +5.277700000E2,5.656005066E1 +5.280170000E2,6.215252288E1 +5.283170000E2,5.743407158E1 +5.285650000E2,5.831214783E1 +5.288200000E2,6.066735547E1 +5.290820000E2,5.994603081E1 +5.293240000E2,5.951550591E1 +5.295810000E2,6.264700953E1 +5.298380000E2,5.736628274E1 +5.301360000E2,5.590406638E1 +5.304530000E2,6.041033291E1 +5.307000000E2,5.968691140E1 +5.309950000E2,5.730835182E1 +5.312390000E2,5.823026311E1 +5.315470000E2,5.871167442E1 +5.318430000E2,5.990765833E1 +5.321400000E2,6.387020611E1 +5.324510000E2,6.077699448E1 +5.326980000E2,5.895294298E1 +5.329820000E2,6.041997988E1 +5.333050000E2,5.806877757E1 +5.336110000E2,5.682362418E1 +5.340220000E2,5.915478638E1 +5.342790000E2,6.110946170E1 +5.345430000E2,5.735857105E1 +5.348060000E2,5.684014045E1 +5.350480000E2,6.043627860E1 +5.353500000E2,5.982929159E1 +5.356290000E2,5.986217314E1 +5.358770000E2,5.677131614E1 +5.361310000E2,5.763848566E1 +5.363810000E2,6.142463983E1 +5.366730000E2,5.634211854E1 +5.369290000E2,5.547608220E1 +5.372430000E2,5.920768747E1 +5.375170000E2,6.113406656E1 +5.377700000E2,6.208964505E1 +5.380710000E2,6.100572025E1 +5.383260000E2,6.352283467E1 +5.386320000E2,5.898993907E1 +5.389570000E2,5.503782412E1 +5.392560000E2,5.663453376E1 +5.395360000E2,6.406828344E1 +5.398060000E2,5.890955595E1 +5.400700000E2,6.046868424E1 +5.403380000E2,5.979639772E1 +5.406170000E2,5.838685694E1 +5.409120000E2,5.933573087E1 +5.411500000E2,5.970536072E1 +5.414430000E2,5.461931777E1 +5.417380000E2,5.891969668E1 +5.419780000E2,6.086182172E1 +5.422730000E2,5.706230292E1 +5.425150000E2,6.002937875E1 +5.428150000E2,5.733734968E1 +5.430520000E2,5.791730719E1 +5.433430000E2,5.451667439E1 +5.436740000E2,5.601232928E1 +5.439430000E2,6.067749331E1 +5.441960000E2,6.044443396E1 +5.445120000E2,6.332642539E1 +5.448320000E2,6.369907597E1 +5.451010000E2,6.327412880E1 +5.453640000E2,6.380509737E1 +5.456090000E2,6.199528902E1 +5.458550000E2,5.905332967E1 +5.461530000E2,5.748064798E1 +5.463920000E2,5.793139247E1 +5.466900000E2,5.931551966E1 +5.470480000E2,6.345498755E1 +5.473610000E2,5.881486603E1 +5.476220000E2,5.928200098E1 +5.478810000E2,5.577309321E1 +5.481470000E2,5.875325885E1 +5.483980000E2,6.007409743E1 +5.486490000E2,6.070612531E1 +5.488940000E2,5.934549940E1 +5.491520000E2,6.170511636E1 +5.494020000E2,6.376886521E1 +5.497010000E2,6.406587518E1 +5.499360000E2,6.365684538E1 +5.503130000E2,6.009406633E1 +5.505850000E2,6.014270409E1 +5.508500000E2,5.879153887E1 +5.511470000E2,5.883782525E1 +5.513760000E2,5.773432280E1 +5.516350000E2,5.966648889E1 +5.518940000E2,5.472606108E1 +5.521930000E2,5.682429497E1 +5.524670000E2,5.619181968E1 +5.527770000E2,5.997719307E1 +5.530460000E2,5.879335465E1 +5.533410000E2,5.983416170E1 +5.537120000E2,5.957041909E1 +5.539420000E2,5.952828793E1 +5.542510000E2,5.971645274E1 +5.545000000E2,6.419337448E1 +5.547730000E2,6.634363344E1 +5.550770000E2,6.285856457E1 +5.553760000E2,5.654671197E1 +5.556440000E2,5.530754918E1 +5.558640000E2,5.889159880E1 +5.561110000E2,6.213947417E1 +5.563520000E2,6.860243311E1 +5.566480000E2,6.647018679E1 +5.569110000E2,6.420604516E1 +5.571650000E2,6.703462967E1 +5.574140000E2,6.648783593E1 +5.576540000E2,6.634001782E1 +5.579350000E2,6.293734135E1 +5.581770000E2,6.205918741E1 +5.584760000E2,5.247262167E1 +5.587220000E2,5.338734169E1 +5.589670000E2,5.662276325E1 +5.592110000E2,5.533465633E1 +5.595080000E2,5.854271946E1 +5.597740000E2,5.660649413E1 +5.600260000E2,6.333844075E1 +5.602860000E2,6.255943536E1 +5.605830000E2,5.392304486E1 +5.608700000E2,5.760897506E1 +5.611660000E2,5.713086887E1 +5.614070000E2,5.720157535E1 +5.617060000E2,5.026592539E1 +5.619510000E2,5.140995344E1 +5.621950000E2,5.663266073E1 +5.624370000E2,5.202695689E1 +5.627360000E2,6.084568668E1 +5.630550000E2,6.179643015E1 +5.632960000E2,5.833759539E1 +5.635420000E2,5.518782498E1 +5.638400000E2,6.578433315E1 +5.640880000E2,5.706187099E1 +5.643850000E2,5.456571992E1 +5.646300000E2,5.536479424E1 +5.649270000E2,5.930541070E1 +5.651540000E2,6.023199994E1 +5.653960000E2,5.612469871E1 +5.656980000E2,5.462007842E1 +5.659410000E2,5.278259804E1 +5.662890000E2,6.064478329E1 +5.666290000E2,5.682964802E1 +5.669030000E2,5.787828261E1 +5.671980000E2,5.712595091E1 +5.674890000E2,5.729764361E1 +5.677450000E2,5.241850056E1 +5.679980000E2,5.377155525E1 +5.682380000E2,5.485418547E1 +5.684830000E2,5.503746434E1 +5.687810000E2,5.398954643E1 +5.690230000E2,5.401913169E1 +5.693270000E2,5.953896215E1 +5.695680000E2,5.626247467E1 +5.698640000E2,6.040491706E1 +5.701050000E2,5.781813181E1 +5.703620000E2,5.733744349E1 +5.706600000E2,5.669032177E1 +5.709140000E2,5.453731954E1 +5.711580000E2,6.235364316E1 +5.714280000E2,5.958044055E1 +5.716860000E2,5.875696014E1 +5.719750000E2,5.570465139E1 +5.722310000E2,4.865236791E1 +5.725580000E2,5.257975627E1 +5.727900000E2,4.975389893E1 +5.730890000E2,5.658508958E1 +5.733660000E2,5.542284648E1 +5.735960000E2,5.536199936E1 +5.738990000E2,5.813474916E1 +5.741540000E2,5.417788207E1 +5.744370000E2,5.704170918E1 +5.746710000E2,5.736828455E1 +5.749280000E2,5.450874678E1 +5.751790000E2,5.610950442E1 +5.754890000E2,5.919887582E1 +5.758690000E2,5.780639378E1 +5.761700000E2,5.709220641E1 +5.764190000E2,5.815359781E1 +5.767060000E2,5.734155824E1 +5.769500000E2,5.925323086E1 +5.772430000E2,6.084767221E1 +5.775370000E2,5.852024889E1 +5.777780000E2,5.822649765E1 +5.780770000E2,5.829089322E1 +5.783770000E2,5.915481192E1 +5.786460000E2,5.996430642E1 +5.789780000E2,6.016421415E1 +5.792520000E2,6.221052482E1 +5.795090000E2,5.533993101E1 +5.798230000E2,6.537257407E1 +5.801220000E2,6.068836920E1 +5.803770000E2,5.728273812E1 +5.806510000E2,5.648369901E1 +5.809070000E2,5.397363349E1 +5.811690000E2,5.755294689E1 +5.814510000E2,5.957149991E1 +5.816900000E2,5.963092636E1 +5.820650000E2,6.778811076E1 +5.823240000E2,6.247529404E1 +5.825840000E2,6.073516327E1 +5.828380000E2,6.039356998E1 +5.830970000E2,5.764504824E1 +5.833990000E2,6.041396176E1 +5.836470000E2,6.355942860E1 +5.838990000E2,5.785560268E1 +5.841390000E2,6.060017525E1 +5.844440000E2,6.032069521E1 +5.847010000E2,5.760371100E1 +5.849440000E2,5.491620812E1 +5.851990000E2,5.957978671E1 +5.855370000E2,6.103184032E1 +5.857970000E2,5.896875350E1 +5.861120000E2,6.008190546E1 +5.863990000E2,5.687378544E1 +5.866450000E2,5.874294643E1 +5.869410000E2,5.870806017E1 +5.871860000E2,5.809143232E1 +5.874740000E2,5.847828699E1 +5.877850000E2,5.846232778E1 +5.880500000E2,5.755876921E1 +5.883650000E2,5.609032758E1 +5.887050000E2,5.685283394E1 +5.889730000E2,5.945975832E1 +5.892710000E2,6.114741701E1 +5.895110000E2,6.316132147E1 +5.898100000E2,6.715155367E1 +5.900480000E2,6.367866992E1 +5.903470000E2,5.131949120E1 +5.905900000E2,5.646494575E1 +5.908880000E2,6.096218752E1 +5.911270000E2,6.089171796E1 +5.913720000E2,6.319522071E1 +5.916410000E2,6.016553529E1 +5.920560000E2,5.915189166E1 +5.923330000E2,5.776862186E1 +5.925640000E2,5.840366445E1 +5.927890000E2,5.978914182E1 +5.930440000E2,6.058699711E1 +5.932650000E2,6.012895387E1 +5.935140000E2,6.295025578E1 +5.937520000E2,6.280196012E1 +5.940110000E2,6.194014009E1 +5.943340000E2,6.483906300E1 +5.945870000E2,5.918257578E1 +5.948380000E2,5.620333930E1 +5.951900000E2,6.323403421E1 +5.954240000E2,6.183177681E1 +5.956620000E2,6.120300936E1 +5.959650000E2,5.836925111E1 +5.961890000E2,6.106023171E1 +5.964920000E2,6.153658324E1 +5.967310000E2,6.490772593E1 +5.969960000E2,6.274228676E1 +5.972520000E2,6.139008510E1 +5.975050000E2,6.281232833E1 +5.978180000E2,6.254982632E1 +5.980890000E2,6.205794184E1 +5.983900000E2,6.438771503E1 +5.986230000E2,6.052772463E1 +5.988520000E2,6.375966703E1 +5.991380000E2,5.869985301E1 +5.993860000E2,6.050357712E1 +5.996630000E2,5.547835745E1 +5.999280000E2,5.400421666E1 +6.001960000E2,5.668252186E1 +6.004880000E2,6.001970320E1 +6.007680000E2,6.056987745E1 +6.010550000E2,6.461211967E1 +6.014090000E2,6.399838195E1 +6.016840000E2,5.485596323E1 +6.019450000E2,5.731519087E1 +6.022080000E2,6.691878914E1 +6.024720000E2,6.479201876E1 +6.027260000E2,6.412847214E1 +6.029760000E2,6.025795068E1 +6.032190000E2,6.098133491E1 +6.035120000E2,5.689387521E1 +6.038040000E2,5.639928101E1 +6.041550000E2,5.328068252E1 +6.044370000E2,5.639829798E1 +6.046770000E2,5.892330560E1 +6.049510000E2,5.315638413E1 +6.051900000E2,5.740260439E1 +6.054620000E2,5.339391440E1 +6.057500000E2,5.310371918E1 +6.060710000E2,5.460903952E1 +6.063050000E2,5.407304270E1 +6.065540000E2,5.870790541E1 +6.068060000E2,5.576782972E1 +6.070790000E2,5.976954147E1 +6.074640000E2,6.181180531E1 +6.077240000E2,6.194364733E1 +6.080150000E2,6.794225297E1 +6.082590000E2,6.236601361E1 +6.085470000E2,6.002700779E1 +6.088450000E2,5.971993236E1 +6.090930000E2,5.954735434E1 +6.093460000E2,5.907202371E1 +6.095920000E2,5.993658420E1 +6.098910000E2,5.530332259E1 +6.101850000E2,5.531802018E1 +6.104220000E2,5.376885939E1 +6.107780000E2,5.735355871E1 +6.110210000E2,5.868610156E1 +6.112710000E2,5.312122754E1 +6.115670000E2,5.745102631E1 +6.118550000E2,5.535536940E1 +6.121540000E2,5.088728731E1 +6.123960000E2,5.266907791E1 +6.126860000E2,5.386493253E1 +6.130010000E2,5.670623073E1 +6.132810000E2,5.563278655E1 +6.135150000E2,5.267172926E1 +6.138540000E2,5.386148816E1 +6.141880000E2,5.716468210E1 +6.144880000E2,5.526918781E1 +6.147190000E2,5.659553915E1 +6.149610000E2,5.648341007E1 +6.152730000E2,5.711745846E1 +6.155520000E2,5.918800114E1 +6.158010000E2,5.642548609E1 +6.161000000E2,5.635896926E1 +6.163480000E2,5.899225051E1 +6.166180000E2,5.374343244E1 +6.168690000E2,4.891042404E1 +6.172050000E2,5.065835680E1 +6.174560000E2,5.685264653E1 +6.177340000E2,5.429270039E1 +6.179930000E2,5.499548313E1 +6.182940000E2,5.407177565E1 +6.185300000E2,5.356533799E1 +6.188300000E2,5.378190643E1 +6.191140000E2,5.189020817E1 +6.193870000E2,5.046647494E1 +6.196450000E2,5.501107364E1 +6.198910000E2,5.798814538E1 +6.201660000E2,5.360844474E1 +6.205080000E2,5.353935610E1 +6.208080000E2,5.620189936E1 +6.210820000E2,6.216008765E1 +6.213360000E2,5.767015155E1 +6.216520000E2,6.210101060E1 +6.219320000E2,5.928042926E1 +6.221800000E2,6.394496555E1 +6.224980000E2,5.872213561E1 +6.227430000E2,5.927091626E1 +6.230010000E2,5.235592166E1 +6.232430000E2,6.313120608E1 +6.235470000E2,6.005436888E1 +6.238480000E2,5.999836557E1 +6.240930000E2,5.879748041E1 +6.243920000E2,5.978277378E1 +6.246440000E2,6.050724590E1 +6.249480000E2,6.282777276E1 +6.252520000E2,6.080897043E1 +6.255640000E2,5.889462949E1 +6.258270000E2,5.550476615E1 +6.260730000E2,5.586785505E1 +6.263620000E2,6.576560120E1 +6.266590000E2,6.102361259E1 +6.270050000E2,6.110507706E1 +6.272870000E2,5.753592100E1 +6.275410000E2,6.297666729E1 +6.278490000E2,6.037594793E1 +6.281160000E2,5.849898506E1 +6.284180000E2,6.165631601E1 +6.287090000E2,6.096774109E1 +6.289510000E2,6.176590968E1 +6.292460000E2,5.947061017E1 +6.294820000E2,6.109202024E1 +6.297790000E2,5.322559935E1 +6.301160000E2,4.971181861E1 +6.303880000E2,5.533921521E1 +6.307250000E2,5.478410742E1 +6.310240000E2,5.647795083E1 +6.313200000E2,5.797504265E1 +6.315690000E2,5.403019222E1 +6.318640000E2,5.301910781E1 +6.321010000E2,5.096544207E1 +6.324030000E2,5.324435941E1 +6.326360000E2,5.447050361E1 +6.328960000E2,5.932781903E1 +6.331500000E2,5.967228428E1 +6.334640000E2,6.319489971E1 +6.337810000E2,5.820271574E1 +6.340710000E2,5.910289699E1 +6.343170000E2,5.681937370E1 +6.346260000E2,5.582227275E1 +6.349350000E2,5.745831651E1 +6.352100000E2,5.504019385E1 +6.354620000E2,5.072303887E1 +6.357190000E2,5.366082959E1 +6.359690000E2,5.380227314E1 +6.362560000E2,4.818205454E1 +6.365090000E2,5.989908626E1 +6.368780000E2,5.659012846E1 +6.371610000E2,5.593157997E1 +6.374460000E2,5.135237935E1 +6.377000000E2,5.687788515E1 +6.379550000E2,5.943975502E1 +6.382630000E2,6.290957992E1 +6.385230000E2,5.827099811E1 +6.387780000E2,5.686391746E1 +6.390620000E2,5.771790911E1 +6.393200000E2,5.390066131E1 +6.395830000E2,5.358231960E1 +6.398480000E2,5.564565007E1 +6.401490000E2,5.205482155E1 +6.404200000E2,5.852280051E1 +6.407340000E2,4.836326193E1 +6.409980000E2,5.905115701E1 +6.412560000E2,5.622349390E1 +6.415040000E2,5.891737338E1 +6.417460000E2,5.749377856E1 +6.420310000E2,5.414095183E1 +6.422680000E2,5.482109112E1 +6.425170000E2,5.202942051E1 +6.428000000E2,4.903409276E1 +6.431250000E2,5.495098254E1 +6.434650000E2,5.777911761E1 +6.437680000E2,5.329076638E1 +6.440080000E2,5.886592322E1 +6.443070000E2,5.661637111E1 +6.445560000E2,5.459133399E1 +6.448230000E2,4.858613706E1 +6.450990000E2,5.642020356E1 +6.453590000E2,5.634614530E1 +6.456240000E2,5.769024626E1 +6.458900000E2,6.037646239E1 +6.461470000E2,5.712013563E1 +6.464260000E2,5.393237723E1 +6.467570000E2,5.443825449E1 +6.469850000E2,5.464133184E1 +6.472460000E2,5.185343249E1 +6.475170000E2,5.670688718E1 +6.477900000E2,5.808659132E1 +6.480150000E2,5.879711687E1 +6.483250000E2,5.860991669E1 +6.485730000E2,5.600484597E1 +6.488230000E2,5.291438286E1 +6.491020000E2,5.869236753E1 +6.493260000E2,5.826316690E1 +6.496250000E2,5.619306699E1 +6.499850000E2,6.085970714E1 +6.502400000E2,6.051231588E1 +6.505400000E2,6.096601072E1 +6.507990000E2,6.197068990E1 +6.511180000E2,6.520817743E1 +6.513810000E2,6.377577246E1 +6.516860000E2,6.105485617E1 +6.519940000E2,5.890751001E1 +6.522910000E2,5.911253604E1 +6.525370000E2,6.291937986E1 +6.528540000E2,6.252638881E1 +6.532210000E2,6.337356348E1 +6.535270000E2,5.894334263E1 +6.537830000E2,5.754939005E1 +6.540930000E2,5.500698560E1 +6.543880000E2,5.014350898E1 +6.546880000E2,5.646260920E1 +6.549870000E2,5.951282585E1 +6.552920000E2,6.099782791E1 +6.555480000E2,6.065538365E1 +6.558100000E2,6.827371953E1 +6.560790000E2,6.035931154E1 +6.563820000E2,6.267306134E1 +6.566350000E2,5.826452213E1 +6.568970000E2,6.092938143E1 +6.572010000E2,6.534130041E1 +6.575130000E2,6.111837506E1 +6.577770000E2,5.826481723E1 +6.580330000E2,5.918147323E1 +6.582980000E2,6.100230752E1 +6.585510000E2,6.302217459E1 +6.588060000E2,5.754956715E1 +6.591080000E2,6.111201710E1 +6.593520000E2,6.017410469E1 +6.597040000E2,6.031944923E1 +6.599450000E2,5.943575512E1 +6.602120000E2,5.868776340E1 +6.605570000E2,5.940543513E1 +6.608500000E2,5.886327816E1 +6.610920000E2,5.770522648E1 +6.613840000E2,5.442777508E1 +6.616200000E2,5.394232060E1 +6.619220000E2,5.856638842E1 +6.622160000E2,5.742664400E1 +6.624600000E2,5.472498345E1 +6.627560000E2,5.672985390E1 +6.629770000E2,5.834702318E1 +6.632250000E2,5.907602823E1 +6.634810000E2,5.873031221E1 +6.637670000E2,5.757130737E1 +6.640040000E2,5.572185824E1 +6.643070000E2,5.959142979E1 +6.645480000E2,5.851623707E1 +6.648520000E2,5.856887935E1 +6.650940000E2,6.397218192E1 +6.653890000E2,5.963692586E1 +6.656210000E2,5.934207027E1 +6.659580000E2,5.667856430E1 +6.662640000E2,5.811017468E1 +6.665550000E2,5.505265787E1 +6.667990000E2,5.558350894E1 +6.671320000E2,6.063017800E1 +6.674000000E2,5.568411381E1 +6.676510000E2,5.981422062E1 +6.679580000E2,5.723024768E1 +6.682820000E2,5.036028104E1 +6.685240000E2,5.199205823E1 +6.687970000E2,5.367328475E1 +6.691280000E2,5.936914884E1 +6.693940000E2,5.657797691E1 +6.696490000E2,6.065879377E1 +6.699270000E2,5.657054255E1 +6.702000000E2,5.655716576E1 +6.704770000E2,5.823562265E1 +6.707350000E2,6.065030224E1 +6.710140000E2,6.110776530E1 +6.712700000E2,5.714357796E1 +6.715170000E2,5.604236164E1 +6.717930000E2,6.041748871E1 +6.721240000E2,6.019765334E1 +6.724270000E2,5.928602786E1 +6.727750000E2,5.973060669E1 +6.730710000E2,6.059869751E1 +6.733250000E2,6.116850166E1 +6.736400000E2,6.145214709E1 +6.738890000E2,6.020118097E1 +6.741670000E2,6.048579637E1 +6.744720000E2,6.225337088E1 +6.747550000E2,5.853636068E1 +6.750030000E2,5.999204871E1 +6.752840000E2,5.433989895E1 +6.755100000E2,5.847308735E1 +6.758420000E2,5.913726954E1 +6.760830000E2,6.049449503E1 +6.763830000E2,5.545572399E1 +6.766370000E2,6.246077536E1 +6.768920000E2,6.029598130E1 +6.771340000E2,6.005864514E1 +6.774230000E2,6.582269585E1 +6.776700000E2,6.255104294E1 +6.779140000E2,6.623711836E1 +6.781740000E2,6.684819787E1 +6.784850000E2,6.877250850E1 +6.787420000E2,6.157084767E1 +6.789860000E2,6.054068573E1 +6.793290000E2,6.069583213E1 +6.795810000E2,6.124898856E1 +6.798240000E2,6.136691849E1 +6.800900000E2,6.035594762E1 +6.803920000E2,5.654106541E1 +6.806920000E2,5.587565134E1 +6.809940000E2,5.642134155E1 +6.813020000E2,5.749983358E1 +6.815830000E2,5.576151961E1 +6.818120000E2,5.714589311E1 +6.820580000E2,5.969510914E1 +6.823020000E2,5.824123453E1 +6.825680000E2,5.779273115E1 +6.828630000E2,5.699644891E1 +6.831010000E2,5.900876644E1 +6.833500000E2,6.335540424E1 +6.835940000E2,6.280432027E1 +6.838340000E2,6.194675910E1 +6.841290000E2,5.801082069E1 +6.843650000E2,5.652506879E1 +6.846570000E2,5.895404856E1 +6.848910000E2,5.873705448E1 +6.851950000E2,5.589704153E1 +6.855380000E2,5.379672362E1 +6.857910000E2,6.287056471E1 +6.860900000E2,6.081817617E1 +6.863340000E2,6.807593043E1 +6.866320000E2,5.604389930E1 +6.868800000E2,6.712075434E1 +6.871750000E2,6.290238552E1 +6.874740000E2,6.473105179E1 +6.877330000E2,5.873835234E1 +6.880180000E2,5.800563858E1 +6.882620000E2,5.540095032E1 +6.885810000E2,6.197881428E1 +6.888280000E2,5.541258482E1 +6.890890000E2,5.558277465E1 +6.894010000E2,4.965923685E1 +6.897080000E2,4.860020107E1 +6.899730000E2,5.608167548E1 +6.902300000E2,5.381305593E1 +6.904990000E2,6.079286270E1 +6.908000000E2,6.446965644E1 +6.910380000E2,6.556266140E1 +6.913400000E2,5.418444209E1 +6.916350000E2,5.205102491E1 +6.919820000E2,5.812981404E1 +6.922410000E2,6.500705260E1 +6.925070000E2,6.149947285E1 +6.927750000E2,5.695315316E1 +6.930870000E2,5.775854948E1 +6.933870000E2,6.523399833E1 +6.936300000E2,6.692630865E1 +6.939270000E2,5.793447825E1 +6.942230000E2,5.746396110E1 +6.944770000E2,6.017975210E1 +6.947150000E2,5.956759439E1 +6.950320000E2,6.391288151E1 +6.953110000E2,6.484415086E1 +6.955650000E2,6.664209540E1 +6.958410000E2,6.746668632E1 +6.961050000E2,5.775664920E1 +6.964050000E2,6.383035698E1 +6.967020000E2,5.816763892E1 +6.969600000E2,6.921190909E1 +6.972400000E2,6.165047809E1 +6.975080000E2,5.666810057E1 +6.977540000E2,6.417546300E1 +6.980020000E2,5.788971486E1 +6.982730000E2,5.486922606E1 +6.985850000E2,5.576434723E1 +6.988820000E2,5.548978795E1 +6.991460000E2,5.886820316E1 +6.993970000E2,6.226406326E1 +6.996480000E2,5.601534080E1 +6.999400000E2,5.901385758E1 +7.002040000E2,5.720709772E1 +7.005120000E2,6.318399213E1 +7.007580000E2,6.338981741E1 +7.010170000E2,6.747312486E1 +7.012670000E2,5.788999692E1 +7.015450000E2,4.434465006E1 +7.018710000E2,6.439013955E1 +7.021480000E2,5.375342664E1 +7.023700000E2,6.398282027E1 +7.026160000E2,5.857909138E1 +7.029130000E2,5.670439641E1 +7.031590000E2,5.749786365E1 +7.034320000E2,5.181710985E1 +7.036770000E2,5.871535868E1 +7.039520000E2,5.470297527E1 +7.042240000E2,5.771822323E1 +7.044750000E2,5.236261523E1 +7.047130000E2,5.595332709E1 +7.050480000E2,5.576748295E1 +7.053040000E2,5.334869600E1 +7.055590000E2,5.337806625E1 +7.058180000E2,5.499892680E1 +7.060900000E2,5.490963435E1 +7.063980000E2,5.551078540E1 +7.066680000E2,5.358868238E1 +7.069300000E2,5.203182642E1 +7.071760000E2,5.771053387E1 +7.074630000E2,5.175835182E1 +7.077440000E2,5.402526598E1 +7.080400000E2,5.754717994E1 +7.083470000E2,6.103880587E1 +7.086400000E2,6.284824916E1 +7.088840000E2,6.674666322E1 +7.092010000E2,6.194114278E1 +7.094980000E2,5.796289911E1 +7.097580000E2,5.475547679E1 +7.100170000E2,5.804024708E1 +7.102650000E2,5.606423134E1 +7.105550000E2,5.319247933E1 +7.107930000E2,5.625991375E1 +7.110940000E2,5.589539698E1 +7.114730000E2,6.073460415E1 +7.117930000E2,6.208342045E1 +7.120530000E2,6.335117127E1 +7.123290000E2,5.821275565E1 +7.126280000E2,5.793160357E1 +7.128780000E2,5.509944006E1 +7.131790000E2,5.578357696E1 +7.134760000E2,5.632534225E1 +7.137350000E2,5.466315647E1 +7.140450000E2,5.914530785E1 +7.143020000E2,6.280432125E1 +7.146020000E2,6.333348539E1 +7.149790000E2,5.698482465E1 +7.152920000E2,5.474810308E1 +7.155370000E2,5.417920207E1 +7.157880000E2,6.392184792E1 +7.160720000E2,6.565549591E1 +7.163130000E2,6.082705714E1 +7.166120000E2,5.816285927E1 +7.168430000E2,5.809201859E1 +7.170930000E2,6.016105207E1 +7.173350000E2,5.162287691E1 +7.176230000E2,5.754317879E1 +7.179310000E2,6.166304542E1 +7.181770000E2,6.177004553E1 +7.184320000E2,6.274574776E1 +7.186900000E2,6.104994734E1 +7.189920000E2,5.735301480E1 +7.192340000E2,5.830205645E1 +7.194890000E2,6.212782217E1 +7.197420000E2,5.467685243E1 +7.200420000E2,5.313970583E1 +7.202920000E2,5.278680647E1 +7.205360000E2,5.474141102E1 +7.209140000E2,6.241771654E1 +7.212600000E2,6.394594172E1 +7.215560000E2,6.348358734E1 +7.217980000E2,6.112734048E1 +7.220450000E2,6.226451183E1 +7.222930000E2,6.534082516E1 +7.225960000E2,6.114019283E1 +7.228390000E2,6.421228964E1 +7.231230000E2,6.814847387E1 +7.233690000E2,6.275446304E1 +7.236190000E2,6.679153921E1 +7.239280000E2,6.537583699E1 +7.241850000E2,6.212976374E1 +7.245300000E2,6.553556935E1 +7.248220000E2,5.834030427E1 +7.250930000E2,5.992153646E1 +7.253380000E2,5.595099295E1 +7.256370000E2,5.720822528E1 +7.258800000E2,5.423516872E1 +7.261770000E2,5.906139652E1 +7.264140000E2,6.204477132E1 +7.267140000E2,6.368823365E1 +7.269550000E2,6.513672214E1 +7.272500000E2,6.364997971E1 +7.275370000E2,6.269941998E1 +7.278570000E2,5.948773609E1 +7.281020000E2,5.789544973E1 +7.283740000E2,6.305528689E1 +7.286400000E2,6.245554089E1 +7.289690000E2,6.033221518E1 +7.292310000E2,5.940071821E1 +7.294970000E2,6.176178101E1 +7.298020000E2,5.355172623E1 +7.300580000E2,5.535292187E1 +7.303150000E2,5.274398781E1 +7.305750000E2,5.399957194E1 +7.308780000E2,5.819691646E1 +7.312070000E2,5.434897588E1 +7.315090000E2,6.041787911E1 +7.317850000E2,5.617860881E1 +7.320560000E2,5.558770875E1 +7.323290000E2,5.151264449E1 +7.325860000E2,5.612143969E1 +7.328800000E2,5.405001557E1 +7.331120000E2,5.455354216E1 +7.334090000E2,5.716252136E1 +7.337070000E2,6.416157102E1 +7.339910000E2,6.098010142E1 +7.343020000E2,6.194029449E1 +7.346500000E2,6.091313037E1 +7.349540000E2,5.846954669E1 +7.352410000E2,5.743489407E1 +7.355320000E2,5.872669957E1 +7.357800000E2,5.859080967E1 +7.360560000E2,6.053269456E1 +7.363220000E2,6.117884455E1 +7.366590000E2,5.809887850E1 +7.369420000E2,5.453224539E1 +7.372510000E2,5.639337460E1 +7.375040000E2,5.373613181E1 +7.378630000E2,5.066236714E1 +7.381160000E2,4.653740377E1 +7.383650000E2,6.375011526E1 +7.386730000E2,6.282181577E1 +7.389830000E2,6.727660972E1 +7.392340000E2,6.413328322E1 +7.394790000E2,6.184881400E1 +7.397290000E2,6.430634497E1 +7.400250000E2,6.276256291E1 +7.402610000E2,6.297441350E1 +7.405590000E2,5.306586823E1 +7.408610000E2,5.403016569E1 +7.412260000E2,5.749263443E1 +7.415060000E2,5.657932114E1 +7.417820000E2,5.532222303E1 +7.420430000E2,5.911133378E1 +7.423450000E2,5.822379827E1 +7.426470000E2,6.311870884E1 +7.428860000E2,5.964121243E1 +7.431940000E2,5.708688763E1 +7.434960000E2,5.782189241E1 +7.437480000E2,5.745118469E1 +7.440380000E2,5.258772989E1 +7.442830000E2,5.325984780E1 +7.445410000E2,5.216709684E1 +7.447900000E2,5.485283680E1 +7.450520000E2,6.638751453E1 +7.453640000E2,6.256149725E1 +7.456370000E2,6.851667797E1 +7.459020000E2,6.356784575E1 +7.462040000E2,6.586178842E1 +7.464510000E2,6.099626883E1 +7.467420000E2,6.874341983E1 +7.470300000E2,5.690479739E1 +7.472670000E2,5.749513215E1 +7.475860000E2,5.743840209E1 +7.478480000E2,6.695338823E1 +7.481550000E2,6.575566103E1 +7.484170000E2,6.244751264E1 +7.486690000E2,6.206430480E1 +7.489520000E2,5.755143157E1 +7.492450000E2,6.343498072E1 +7.494820000E2,6.599354682E1 +7.497800000E2,5.994269627E1 +7.500210000E2,6.480563885E1 +7.503160000E2,5.962320355E1 +7.505550000E2,5.907805627E1 +7.508860000E2,5.452673237E1 +7.511450000E2,5.413358853E1 +7.514110000E2,5.786691992E1 +7.516870000E2,6.185088179E1 +7.519570000E2,5.432685780E1 +7.522050000E2,5.297819944E1 +7.524920000E2,5.290855554E1 +7.527910000E2,5.828859659E1 +7.530300000E2,5.880189294E1 +7.533360000E2,5.500578631E1 +7.535910000E2,5.476677878E1 +7.538330000E2,5.414240587E1 +7.541650000E2,5.332866170E1 +7.544620000E2,5.193802785E1 +7.547080000E2,5.242932681E1 +7.549590000E2,6.024921863E1 +7.552020000E2,5.537701523E1 +7.554960000E2,5.489617845E1 +7.557330000E2,5.384280286E1 +7.560410000E2,5.406125999E1 +7.562870000E2,5.246560959E1 +7.565320000E2,5.374729291E1 +7.567680000E2,5.542801483E1 +7.570630000E2,5.525770987E1 +7.573930000E2,5.847670432E1 +7.576660000E2,5.822188632E1 +7.579180000E2,5.822901451E1 +7.582040000E2,5.458975346E1 +7.584820000E2,5.438683247E1 +7.587800000E2,5.260449368E1 +7.590260000E2,5.371245859E1 +7.592870000E2,4.983203663E1 +7.595420000E2,5.018089077E1 +7.598380000E2,5.950969681E1 +7.601480000E2,5.769305363E1 +7.604800000E2,5.747567937E1 +7.607190000E2,5.446335810E1 +7.610040000E2,5.463229896E1 +7.612970000E2,5.644916160E1 +7.615560000E2,5.809520116E1 +7.618460000E2,5.406577519E1 +7.621050000E2,5.362277750E1 +7.623930000E2,5.868559294E1 +7.626230000E2,5.548744129E1 +7.628890000E2,5.613986675E1 +7.631890000E2,5.592058678E1 +7.634870000E2,5.947938191E1 +7.638120000E2,5.945990241E1 +7.640830000E2,5.354091788E1 +7.643270000E2,5.910847411E1 +7.645670000E2,6.112853730E1 +7.648120000E2,5.617469613E1 +7.650520000E2,5.678172470E1 +7.653190000E2,5.293731054E1 +7.655730000E2,5.571573154E1 +7.658430000E2,5.239475172E1 +7.660900000E2,5.710555790E1 +7.663840000E2,5.593714408E1 +7.666500000E2,5.506488062E1 +7.669100000E2,5.276148627E1 +7.671530000E2,5.087813070E1 +7.674500000E2,4.966858228E1 +7.677070000E2,4.690170064E1 +7.679870000E2,5.097718665E1 +7.682460000E2,5.173969669E1 +7.685220000E2,5.562988056E1 +7.687630000E2,5.194720020E1 +7.690630000E2,5.590118249E1 +7.693610000E2,5.613585205E1 +7.696030000E2,5.417299550E1 +7.698530000E2,5.925774948E1 +7.702010000E2,5.729895975E1 +7.704610000E2,5.765570707E1 +7.707610000E2,6.211008380E1 +7.710570000E2,5.846530012E1 +7.712970000E2,5.766544416E1 +7.715460000E2,5.716238768E1 +7.718080000E2,5.700535494E1 +7.720510000E2,5.592606747E1 +7.723260000E2,5.771214429E1 +7.725940000E2,5.753442175E1 +7.728830000E2,5.541298336E1 +7.731860000E2,5.137853822E1 +7.735420000E2,5.462649470E1 +7.738320000E2,5.454281912E1 +7.740820000E2,6.803752283E1 +7.743260000E2,6.852980541E1 +7.745820000E2,7.007631543E1 +7.748270000E2,7.009876218E1 +7.751160000E2,6.950363051E1 +7.753520000E2,6.338954984E1 +7.755910000E2,5.500200077E1 +7.758880000E2,5.358702362E1 +7.761340000E2,5.718303470E1 +7.763730000E2,5.887519420E1 +7.767050000E2,5.795457078E1 +7.769970000E2,5.796499201E1 +7.773000000E2,5.644912180E1 +7.775570000E2,5.804780214E1 +7.778740000E2,5.958528627E1 +7.781300000E2,5.635913866E1 +7.784430000E2,5.593106857E1 +7.787280000E2,6.063168213E1 +7.789960000E2,5.917208792E1 +7.792560000E2,5.719923422E1 +7.795050000E2,6.400429125E1 +7.797680000E2,5.733192807E1 +7.800440000E2,6.018331087E1 +7.803000000E2,6.350407169E1 +7.805530000E2,6.357762743E1 +7.808590000E2,6.772563953E1 +7.811430000E2,6.431848914E1 +7.814050000E2,5.710721917E1 +7.816950000E2,5.646111127E1 +7.819500000E2,5.564600214E1 +7.822050000E2,6.362802489E1 +7.824550000E2,6.278310471E1 +7.827010000E2,5.851995741E1 +7.829620000E2,5.759567059E1 +7.832630000E2,5.449669640E1 +7.835070000E2,6.040303881E1 +7.837500000E2,5.743841461E1 +7.839990000E2,6.096558185E1 +7.842840000E2,7.161293257E1 +7.845270000E2,7.417435903E1 +7.848410000E2,6.386070968E1 +7.851390000E2,6.234904760E1 +7.854350000E2,6.321731436E1 +7.856820000E2,6.294103551E1 +7.859780000E2,6.210337552E1 +7.862150000E2,6.765383904E1 +7.865650000E2,6.346682761E1 +7.868610000E2,6.221020232E1 +7.871280000E2,6.119530731E1 +7.873850000E2,5.314248269E1 +7.876880000E2,5.288680780E1 +7.879230000E2,5.064349321E1 +7.882230000E2,5.786336298E1 +7.884630000E2,5.341864841E1 +7.887250000E2,5.286568073E1 +7.890140000E2,5.272997567E1 +7.893180000E2,5.904110581E1 +7.896690000E2,5.748622391E1 +7.899200000E2,5.773986136E1 +7.902160000E2,5.480967078E1 +7.904710000E2,5.627241382E1 +7.907280000E2,5.456362797E1 +7.909900000E2,5.766408512E1 +7.912380000E2,5.413586400E1 +7.914940000E2,5.234403284E1 +7.917720000E2,5.190170354E1 +7.920440000E2,5.227759392E1 +7.923170000E2,4.410400383E1 +7.926220000E2,3.508270700E1 +7.929370000E2,3.887828085E1 +7.932030000E2,4.522069604E1 +7.934660000E2,4.928233980E1 +7.937420000E2,4.706401379E1 +7.940710000E2,4.988989997E1 +7.943700000E2,5.767827889E1 +7.946060000E2,5.506606719E1 +7.949050000E2,6.107887773E1 +7.952060000E2,5.849609892E1 +7.955030000E2,5.343173328E1 +7.957490000E2,5.007726003E1 +7.960580000E2,4.763873915E1 +7.963010000E2,5.045894898E1 +7.966040000E2,6.859700710E1 +7.968900000E2,6.734256534E1 +7.971550000E2,6.661489392E1 +7.974110000E2,6.556398865E1 +7.976580000E2,5.519705677E1 +7.979230000E2,5.503316479E1 +7.982060000E2,5.955770829E1 +7.984280000E2,5.777834711E1 +7.987260000E2,6.050467535E1 +7.989700000E2,5.583639573E1 +7.993330000E2,5.988908902E1 +7.995750000E2,5.875791040E1 +7.998670000E2,6.166637478E1 +8.001160000E2,5.690435901E1 +8.004160000E2,5.599911293E1 +8.006610000E2,5.889628547E1 +8.009180000E2,6.227540789E1 +8.011740000E2,6.572663811E1 +8.014300000E2,6.013467784E1 +8.016770000E2,6.250368579E1 +8.019910000E2,6.532292099E1 +8.023560000E2,5.377170031E1 +8.026370000E2,5.535595108E1 +8.029110000E2,5.147526495E1 +8.031720000E2,4.993046061E1 +8.034760000E2,6.394035794E1 +8.037260000E2,5.983119170E1 +8.040270000E2,5.967243802E1 +8.042930000E2,6.559340840E1 +8.046100000E2,5.262215496E1 +8.049160000E2,5.397812040E1 +8.051780000E2,5.680330381E1 +8.054740000E2,5.857171626E1 +8.058060000E2,5.577198454E1 +8.060880000E2,5.916891157E1 +8.063460000E2,6.120078548E1 +8.066060000E2,6.223167379E1 +8.069230000E2,6.161077093E1 +8.071720000E2,5.812180846E1 +8.074300000E2,5.665535607E1 +8.077230000E2,5.401482687E1 +8.079600000E2,5.631804256E1 +8.082610000E2,5.267806276E1 +8.085540000E2,5.766120113E1 +8.088100000E2,5.717509884E1 +8.091690000E2,5.698714543E1 +8.094130000E2,5.807918354E1 +8.096940000E2,5.364566959E1 +8.099320000E2,5.678502402E1 +8.102110000E2,5.494444844E1 +8.104710000E2,6.216218230E1 +8.107550000E2,5.504588420E1 +8.110030000E2,5.220186059E1 +8.112810000E2,5.338487037E1 +8.115430000E2,5.422122114E1 +8.118180000E2,6.217546099E1 +8.121430000E2,5.739027439E1 +8.124800000E2,5.218554734E1 +8.128080000E2,6.183667492E1 +8.130850000E2,6.028246668E1 +8.133620000E2,6.620979851E1 +8.135950000E2,5.810667246E1 +8.138630000E2,6.096670869E1 +8.141300000E2,5.149777407E1 +8.143960000E2,4.993954713E1 +8.146400000E2,5.196561010E1 +8.149350000E2,5.727966309E1 +8.151710000E2,5.489316784E1 +8.154100000E2,5.619291420E1 +8.157500000E2,5.425831711E1 +8.160430000E2,5.677079709E1 +8.163250000E2,5.289383275E1 +8.165600000E2,5.573749616E1 +8.168090000E2,5.211960412E1 +8.170840000E2,5.029895102E1 +8.173170000E2,5.085418245E1 +8.175630000E2,5.101392152E1 +8.178870000E2,5.228690479E1 +8.182130000E2,5.919931006E1 +8.184680000E2,5.288617356E1 +8.188320000E2,5.626269479E1 +8.191030000E2,6.124827198E1 +8.193870000E2,5.889071517E1 +8.196160000E2,5.957980623E1 +8.199180000E2,5.440069788E1 +8.201590000E2,5.524226830E1 +8.204560000E2,5.147688867E1 +8.206870000E2,5.390780082E1 +8.209820000E2,6.509870984E1 +8.212270000E2,6.421388309E1 +8.215230000E2,5.843840462E1 +8.218170000E2,5.422512027E1 +8.221280000E2,5.468614274E1 +8.223780000E2,5.922850585E1 +8.226710000E2,6.486031186E1 +8.229330000E2,6.154967201E1 +8.232420000E2,5.893257410E1 +8.235100000E2,6.020329639E1 +8.238290000E2,5.483779552E1 +8.240760000E2,5.692914998E1 +8.243280000E2,6.347347085E1 +8.245930000E2,5.345306004E1 +8.248670000E2,6.141647052E1 +8.252000000E2,5.672783001E1 +8.254550000E2,5.605661334E1 +8.257610000E2,5.699330885E1 +8.260410000E2,5.489256860E1 +8.263010000E2,6.262090025E1 +8.265830000E2,5.457719262E1 +8.268180000E2,5.416382407E1 +8.271260000E2,4.993919751E1 +8.273700000E2,5.569569056E1 +8.276330000E2,5.514364162E1 +8.278890000E2,5.653204472E1 +8.281470000E2,5.784406489E1 +8.284370000E2,5.752811490E1 +8.286720000E2,5.727510089E1 +8.289650000E2,5.900575965E1 +8.292510000E2,5.679022390E1 +8.294860000E2,5.722234118E1 +8.297350000E2,5.952638514E1 +8.300320000E2,5.925181191E1 +8.302740000E2,5.930148258E1 +8.305160000E2,5.668145507E1 +8.307730000E2,5.590492759E1 +8.310130000E2,6.302930486E1 +8.312510000E2,5.733539345E1 +8.315800000E2,5.620349253E1 +8.318910000E2,5.495250031E1 +8.322000000E2,5.501979251E1 +8.324620000E2,5.208226415E1 +8.327390000E2,5.765748383E1 +8.329950000E2,5.489193423E1 +8.332490000E2,5.593428331E1 +8.335720000E2,5.714652117E1 +8.338250000E2,5.832769426E1 +8.341370000E2,5.884156077E1 +8.344030000E2,5.840498509E1 +8.347020000E2,5.864505811E1 +8.350330000E2,6.356982434E1 +8.353340000E2,6.286445683E1 +8.355720000E2,5.657384439E1 +8.358940000E2,5.660970318E1 +8.361720000E2,5.918731584E1 +8.364160000E2,5.825788220E1 +8.366580000E2,5.592754487E1 +8.369110000E2,5.553717092E1 +8.371910000E2,5.495027293E1 +8.374510000E2,5.546329287E1 +8.377420000E2,5.746402701E1 +8.379890000E2,5.891922359E1 +8.383130000E2,6.522858798E1 +8.385710000E2,6.384617776E1 +8.388430000E2,5.435088619E1 +8.390670000E2,5.460135210E1 +8.393610000E2,5.982769627E1 +8.396020000E2,5.936265195E1 +8.398550000E2,6.034701146E1 +8.401470000E2,6.875861473E1 +8.403840000E2,6.968788985E1 +8.406760000E2,6.653493651E1 +8.409120000E2,6.664139767E1 +8.412200000E2,6.195236791E1 +8.415280000E2,5.759269564E1 +8.418110000E2,5.704906263E1 +8.420770000E2,5.199124728E1 +8.423350000E2,5.625309672E1 +8.426060000E2,5.627754144E1 +8.428710000E2,6.285304788E1 +8.431220000E2,6.089762622E1 +8.434160000E2,5.828079525E1 +8.436650000E2,5.581703965E1 +8.439650000E2,5.326092983E1 +8.442070000E2,5.247397640E1 +8.444500000E2,5.104216729E1 +8.447560000E2,4.981466747E1 +8.450730000E2,5.794387296E1 +8.453210000E2,6.103400827E1 +8.455680000E2,6.053778141E1 +8.458610000E2,5.413066164E1 +8.461240000E2,5.591468697E1 +8.463740000E2,5.289659812E1 +8.466770000E2,6.014390988E1 +8.469740000E2,5.713983843E1 +8.472340000E2,5.457406708E1 +8.474800000E2,5.848999564E1 +8.478210000E2,5.310404619E1 +8.481040000E2,5.463633704E1 +8.483620000E2,5.329096892E1 +8.486670000E2,5.667645304E1 +8.489890000E2,5.540515985E1 +8.492420000E2,5.014593999E1 +8.495060000E2,5.019949668E1 +8.497660000E2,4.724526190E1 +8.500410000E2,4.632701850E1 +8.502660000E2,4.436725745E1 +8.505710000E2,5.273585220E1 +8.508470000E2,5.232501704E1 +8.511370000E2,5.177389205E1 +8.513940000E2,5.236772038E1 +8.516560000E2,4.869019062E1 +8.518980000E2,5.254056589E1 +8.521620000E2,5.441215371E1 +8.524060000E2,5.431954181E1 +8.526720000E2,4.873515026E1 +8.529820000E2,5.253291311E1 +8.532350000E2,5.201920339E1 +8.535330000E2,5.083296820E1 +8.537750000E2,5.373650683E1 +8.540560000E2,6.162621210E1 +8.543710000E2,6.137876928E1 +8.546190000E2,6.347980201E1 +8.548850000E2,6.480134627E1 +8.551390000E2,6.344943059E1 +8.553830000E2,6.653758852E1 +8.556910000E2,6.821811094E1 +8.559900000E2,6.564040109E1 +8.562480000E2,6.310710880E1 +8.565060000E2,5.625485760E1 +8.567860000E2,5.886920329E1 +8.570590000E2,5.638007706E1 +8.573180000E2,5.477312089E1 +8.576670000E2,5.402637072E1 +8.579310000E2,5.282806817E1 +8.582400000E2,5.743205922E1 +8.584770000E2,5.608834078E1 +8.587730000E2,5.917700537E1 +8.590950000E2,5.757076232E1 +8.593390000E2,5.680975976E1 +8.596110000E2,5.316092446E1 +8.598560000E2,5.634389465E1 +8.601130000E2,5.912558361E1 +8.603880000E2,5.827706684E1 +8.606370000E2,5.580056474E1 +8.609720000E2,5.622551838E1 +8.612190000E2,5.816090597E1 +8.614650000E2,5.710633258E1 +8.617260000E2,6.762679027E1 +8.619970000E2,6.050550643E1 +8.622480000E2,6.017289530E1 +8.624960000E2,5.884551198E1 +8.627510000E2,5.823958631E1 +8.630120000E2,5.747421536E1 +8.632920000E2,5.891926612E1 +8.635810000E2,5.962176090E1 +8.638680000E2,5.932606834E1 +8.642430000E2,6.035939553E1 +8.645920000E2,5.892740034E1 +8.649090000E2,6.158225090E1 +8.651650000E2,5.941856931E1 +8.654560000E2,5.517726055E1 +8.656900000E2,5.573554393E1 +8.659400000E2,6.300977067E1 +8.662170000E2,6.346838855E1 +8.664760000E2,5.840482341E1 +8.667600000E2,5.656477763E1 +8.669980000E2,5.809371706E1 +8.672500000E2,5.957523428E1 +8.675890000E2,5.868790884E1 +8.678670000E2,6.643274765E1 +8.681530000E2,6.202304252E1 +8.684260000E2,6.167390940E1 +8.686760000E2,6.561664622E1 +8.689220000E2,6.221849135E1 +8.691620000E2,5.873701255E1 +8.694080000E2,5.721335717E1 +8.696600000E2,5.775578048E1 +8.699210000E2,6.139190630E1 +8.702060000E2,5.695582014E1 +8.705330000E2,5.285782467E1 +8.708800000E2,5.254436807E1 +8.711320000E2,5.941119733E1 +8.714840000E2,5.561687107E1 +8.717890000E2,5.226341013E1 +8.720340000E2,5.351737673E1 +8.723120000E2,5.581753669E1 +8.725450000E2,5.544476975E1 +8.727930000E2,5.112331517E1 +8.731050000E2,5.669948434E1 +8.733660000E2,5.553741274E1 +8.736450000E2,5.287392842E1 +8.738710000E2,5.342755356E1 +8.742030000E2,5.525376809E1 +8.745760000E2,5.790146612E1 +8.748470000E2,5.775550126E1 +8.750900000E2,5.828043309E1 +8.753860000E2,5.689517506E1 +8.756490000E2,5.836000549E1 +8.759170000E2,5.887049385E1 +8.761640000E2,5.731343570E1 +8.764240000E2,5.947081752E1 +8.766660000E2,5.735732777E1 +8.769150000E2,5.791222148E1 +8.771870000E2,5.217820200E1 +8.775110000E2,5.373516267E1 +8.777550000E2,5.639663701E1 +8.779960000E2,5.308435393E1 +8.782370000E2,5.327040257E1 +8.785510000E2,5.539866825E1 +8.788050000E2,5.451580533E1 +8.791100000E2,5.664888244E1 +8.793670000E2,5.439058144E1 +8.796110000E2,6.546629591E1 +8.799090000E2,6.080313073E1 +8.801560000E2,6.023654065E1 +8.804070000E2,5.547022044E1 +8.807450000E2,5.933402552E1 +8.809880000E2,6.073235462E1 +8.812850000E2,5.811897337E1 +8.815210000E2,5.670873426E1 +8.818240000E2,6.239450766E1 +8.821160000E2,6.033779387E1 +8.823610000E2,5.921328684E1 +8.826600000E2,5.808215882E1 +8.828910000E2,5.927124720E1 +8.831280000E2,5.254346564E1 +8.834120000E2,5.755316817E1 +8.837180000E2,5.815703318E1 +8.840150000E2,5.925974643E1 +8.842610000E2,5.406291788E1 +8.845520000E2,5.892672719E1 +8.847970000E2,6.343231596E1 +8.850390000E2,6.045689612E1 +8.853340000E2,5.903303339E1 +8.855810000E2,5.897514906E1 +8.858230000E2,5.682843230E1 +8.860690000E2,4.647265993E1 +8.863400000E2,5.617216143E1 +8.865730000E2,5.412892937E1 +8.869100000E2,6.210166513E1 +8.872070000E2,6.369099543E1 +8.874540000E2,6.052073025E1 +8.877480000E2,6.125108403E1 +8.879990000E2,6.087163347E1 +8.882550000E2,6.365510666E1 +8.885320000E2,5.341778352E1 +8.887600000E2,5.238943476E1 +8.890050000E2,6.378561240E1 +8.892460000E2,6.182956815E1 +8.895070000E2,6.027537659E1 +8.897770000E2,5.747996426E1 +8.901220000E2,5.606477689E1 +8.903620000E2,5.816493441E1 +8.907030000E2,5.740436721E1 +8.909540000E2,5.812990427E1 +8.912060000E2,5.757163286E1 +8.914520000E2,5.669306215E1 +8.917150000E2,5.593698617E1 +8.919580000E2,5.867011196E1 +8.922060000E2,6.001129970E1 +8.924480000E2,6.247831114E1 +8.927080000E2,5.501506807E1 +8.929550000E2,5.918039480E1 +8.932790000E2,5.750337148E1 +8.935260000E2,5.382626014E1 +8.937850000E2,5.632583646E1 +8.940370000E2,5.552393419E1 +8.943380000E2,5.417609473E1 +8.946050000E2,5.314873345E1 +8.948570000E2,5.537690953E1 +8.951790000E2,6.168371256E1 +8.954540000E2,6.142331687E1 +8.957690000E2,5.914263764E1 +8.960690000E2,6.039127428E1 +8.963670000E2,5.303465172E1 +8.966720000E2,5.819495208E1 +8.969200000E2,5.956457754E1 +8.972240000E2,5.554166388E1 +8.974940000E2,5.700583380E1 +8.978160000E2,5.525596264E1 +8.981210000E2,5.878997726E1 +8.983720000E2,5.661289659E1 +8.986510000E2,6.039909322E1 +8.988730000E2,5.569487247E1 +8.991240000E2,5.857026750E1 +8.993800000E2,6.116905404E1 +8.996580000E2,6.331625006E1 +8.998890000E2,5.612470465E1 +9.001440000E2,5.098243988E1 +9.004020000E2,5.779474181E1 +9.006650000E2,5.597754805E1 +9.009440000E2,5.706395638E1 +9.012380000E2,5.989184595E1 +9.015000000E2,5.905145002E1 +9.017620000E2,5.913397617E1 +9.020230000E2,5.831976398E1 +9.022900000E2,5.400731512E1 +9.025900000E2,6.547285797E1 +9.029050000E2,6.534571775E1 +9.032100000E2,5.428834230E1 +9.034580000E2,4.919896084E1 +9.037180000E2,5.326934205E1 +9.039740000E2,5.135684539E1 +9.042700000E2,5.784030554E1 +9.045180000E2,5.789711892E1 +9.048150000E2,5.501985460E1 +9.050680000E2,5.394185103E1 +9.053920000E2,5.504541187E1 +9.056620000E2,5.574384904E1 +9.059260000E2,5.198297704E1 +9.062920000E2,5.507423148E1 +9.065460000E2,5.073979477E1 +9.068090000E2,5.409355601E1 +9.071500000E2,5.842003605E1 +9.074380000E2,6.323761852E1 +9.076890000E2,5.475142925E1 +9.079510000E2,5.285089191E1 +9.082580000E2,6.228883476E1 +9.085110000E2,6.229139223E1 +9.087590000E2,5.849936549E1 +9.090220000E2,6.382664868E1 +9.092560000E2,5.234586511E1 +9.095720000E2,5.506613760E1 +9.098700000E2,5.883918884E1 +9.101180000E2,5.722745073E1 +9.103980000E2,6.006905181E1 +9.106670000E2,6.333821195E1 +9.109390000E2,5.997503412E1 +9.111770000E2,5.691091005E1 +9.114250000E2,5.629684565E1 +9.117070000E2,5.944947286E1 +9.119370000E2,5.757115704E1 +9.122030000E2,5.617546709E1 +9.125090000E2,5.506166951E1 +9.128480000E2,5.345826069E1 +9.131070000E2,5.586702127E1 +9.133900000E2,6.075354367E1 +9.137040000E2,5.668960998E1 +9.139920000E2,5.584388878E1 +9.142800000E2,5.668519299E1 +9.145740000E2,5.400550993E1 +9.148220000E2,5.668991412E1 +9.150670000E2,5.455006531E1 +9.153720000E2,5.750041942E1 +9.156590000E2,5.756327349E1 +9.159630000E2,5.822694927E1 +9.162110000E2,5.764545771E1 +9.164660000E2,5.716015909E1 +9.167560000E2,5.136001811E1 +9.170200000E2,4.706951064E1 +9.172710000E2,4.999131008E1 +9.175180000E2,5.619976433E1 +9.178030000E2,5.463675948E1 +9.180580000E2,4.995546642E1 +9.183000000E2,5.328928391E1 +9.185570000E2,4.808104957E1 +9.188650000E2,5.411517612E1 +9.191080000E2,5.672946344E1 +9.194270000E2,5.737096863E1 +9.196850000E2,5.974051238E1 +9.199830000E2,5.656564726E1 +9.202340000E2,5.709524531E1 +9.204810000E2,5.408385116E1 +9.208240000E2,5.414410830E1 +9.210650000E2,5.638214177E1 +9.213330000E2,5.753313030E1 +9.216130000E2,5.354803656E1 +9.219120000E2,6.191736419E1 +9.221480000E2,5.734366551E1 +9.224580000E2,5.684475304E1 +9.228030000E2,6.045431811E1 +9.230950000E2,5.973057312E1 +9.233960000E2,5.537690593E1 +9.236620000E2,5.411771801E1 +9.239600000E2,5.513839001E1 +9.242140000E2,5.699753068E1 +9.244670000E2,6.643461088E1 +9.247300000E2,6.062391899E1 +9.250330000E2,5.798096332E1 +9.253240000E2,6.347140522E1 +9.255740000E2,6.166496817E1 +9.259250000E2,6.190058171E1 +9.261820000E2,6.329204590E1 +9.264380000E2,6.389135880E1 +9.267030000E2,5.917517639E1 +9.269480000E2,5.809772267E1 +9.272170000E2,5.733235238E1 +9.274780000E2,5.226841119E1 +9.277860000E2,5.876554483E1 +9.280720000E2,6.281089568E1 +9.283510000E2,5.368859448E1 +9.286400000E2,5.449014251E1 +9.289370000E2,5.589991313E1 +9.292390000E2,5.452044152E1 +9.294860000E2,5.574135623E1 +9.297800000E2,5.656551806E1 +9.300200000E2,5.368800996E1 +9.302990000E2,5.374372369E1 +9.305490000E2,5.520696346E1 +9.308500000E2,5.642038107E1 +9.311480000E2,5.958603376E1 +9.314510000E2,5.775531382E1 +9.316980000E2,5.561486787E1 +9.319610000E2,5.826734748E1 +9.322700000E2,5.604871965E1 +9.325550000E2,5.170668645E1 +9.328670000E2,5.089285684E1 +9.331190000E2,4.724853188E1 +9.333790000E2,4.756075237E1 +9.336260000E2,5.199039629E1 +9.338890000E2,4.980140945E1 +9.341620000E2,5.530081877E1 +9.344120000E2,5.549144740E1 +9.347250000E2,5.515929093E1 +9.349780000E2,5.399104933E1 +9.352760000E2,5.325801117E1 +9.356240000E2,5.040008457E1 +9.359420000E2,5.360316460E1 +9.361890000E2,5.191591881E1 +9.364390000E2,5.324554606E1 +9.366970000E2,5.654671572E1 +9.370100000E2,5.711795620E1 +9.372590000E2,5.478625541E1 +9.375950000E2,5.667621371E1 +9.378550000E2,5.463565976E1 +9.381050000E2,5.398825590E1 +9.383580000E2,5.436030102E1 +9.386390000E2,5.091983440E1 +9.389120000E2,5.286705124E1 +9.391550000E2,5.236775571E1 +9.394300000E2,5.738794921E1 +9.397170000E2,5.727939554E1 +9.399750000E2,6.319402051E1 +9.402560000E2,5.468250624E1 +9.405530000E2,5.641852830E1 +9.408670000E2,6.200700436E1 +9.411390000E2,6.163446308E1 +9.413860000E2,7.148312536E1 +9.416340000E2,6.050927243E1 +9.419040000E2,5.667078757E1 +9.421350000E2,5.749142651E1 +9.424700000E2,5.240604485E1 +9.427760000E2,5.466454134E1 +9.430280000E2,6.082141946E1 +9.433300000E2,6.003969647E1 +9.436110000E2,6.121195378E1 +9.438460000E2,5.625129518E1 +9.441420000E2,5.911131348E1 +9.443880000E2,5.468317436E1 +9.446840000E2,6.009033853E1 +9.449440000E2,5.906624737E1 +9.452490000E2,5.464875325E1 +9.455970000E2,5.384566268E1 +9.458510000E2,5.044039840E1 +9.461140000E2,5.035886237E1 +9.463820000E2,5.734112986E1 +9.466620000E2,5.229112628E1 +9.469690000E2,6.028523542E1 +9.472250000E2,5.837101422E1 +9.475000000E2,5.619491985E1 +9.477970000E2,5.364209552E1 +9.480560000E2,5.511055516E1 +9.483560000E2,5.308396885E1 +9.486650000E2,5.587440008E1 +9.490640000E2,5.273632850E1 +9.493730000E2,6.231816715E1 +9.496570000E2,6.253734875E1 +9.499030000E2,5.554720788E1 +9.501460000E2,5.631566079E1 +9.503970000E2,5.626896653E1 +9.506490000E2,5.691941114E1 +9.508990000E2,5.116659255E1 +9.511440000E2,4.922875084E1 +9.514130000E2,5.936693495E1 +9.517070000E2,5.638156112E1 +9.520200000E2,5.180629212E1 +9.523780000E2,4.998674108E1 +9.526570000E2,4.841587788E1 +9.529100000E2,5.028896526E1 +9.531650000E2,4.965921907E1 +9.534690000E2,4.493319669E1 +9.537260000E2,4.598612712E1 +9.539740000E2,5.276251951E1 +9.542810000E2,4.126037796E1 +9.545830000E2,4.737114191E1 +9.548330000E2,4.411553821E1 +9.550850000E2,4.440050708E1 +9.553840000E2,5.260541790E1 +9.556980000E2,5.273901651E1 +9.559710000E2,5.383409632E1 +9.562220000E2,5.239354977E1 +9.564980000E2,4.759742823E1 +9.568040000E2,5.239869448E1 +9.570530000E2,5.238241691E1 +9.573300000E2,5.227349879E1 +9.575630000E2,5.272394727E1 +9.578410000E2,5.414710772E1 +9.580970000E2,5.325895305E1 +9.583410000E2,5.577122645E1 +9.586370000E2,5.015645058E1 +9.590040000E2,5.173028231E1 +9.593040000E2,5.447959265E1 +9.595640000E2,5.484713415E1 +9.598110000E2,5.470137539E1 +9.601060000E2,5.878769788E1 +9.603740000E2,5.851189839E1 +9.606810000E2,5.400762096E1 +9.609290000E2,5.749049444E1 +9.611870000E2,5.241750519E1 +9.614480000E2,4.979747952E1 +9.616960000E2,5.096881110E1 +9.620030000E2,5.149804171E1 +9.623180000E2,5.481599911E1 +9.625540000E2,5.138365056E1 +9.628240000E2,5.235851031E1 +9.630470000E2,4.871540913E1 +9.632880000E2,5.651540461E1 +9.635860000E2,5.650278128E1 +9.638210000E2,5.704973755E1 +9.641160000E2,5.757712252E1 +9.643960000E2,5.881159691E1 +9.646600000E2,5.355579494E1 +9.649750000E2,5.539751700E1 +9.652910000E2,4.797714339E1 +9.655520000E2,5.082548637E1 +9.658080000E2,5.579830605E1 +9.660780000E2,5.554406278E1 +9.663250000E2,5.354814316E1 +9.665660000E2,5.463107171E1 +9.668090000E2,5.368692433E1 +9.671300000E2,5.364867335E1 +9.674540000E2,5.468973775E1 +9.677060000E2,5.815904844E1 +9.680020000E2,5.598522308E1 +9.682480000E2,5.541083624E1 +9.685850000E2,5.512396132E1 +9.688400000E2,5.530796688E1 +9.691210000E2,5.433954611E1 +9.693810000E2,5.507440645E1 +9.696820000E2,5.086817906E1 +9.699140000E2,5.696191489E1 +9.701640000E2,5.845256581E1 +9.704420000E2,5.620226260E1 +9.706770000E2,5.629047170E1 +9.709750000E2,5.811655252E1 +9.712290000E2,5.703185419E1 +9.714900000E2,5.716734774E1 +9.718450000E2,5.493596869E1 +9.720910000E2,5.909437017E1 +9.723380000E2,5.710675060E1 +9.725910000E2,5.780279559E1 +9.728920000E2,5.860060144E1 +9.731360000E2,6.078900999E1 +9.734260000E2,5.852116194E1 +9.736640000E2,5.905899453E1 +9.739130000E2,5.636299630E1 +9.742090000E2,6.289355999E1 +9.744870000E2,6.167909115E1 +9.747290000E2,6.098057792E1 +9.750690000E2,5.906667343E1 +9.753320000E2,6.018572501E1 +9.756150000E2,5.718512970E1 +9.759100000E2,5.146063018E1 +9.761570000E2,5.733244632E1 +9.764050000E2,5.368365894E1 +9.766600000E2,5.486016267E1 +9.769150000E2,5.908582599E1 +9.771910000E2,5.733773036E1 +9.774400000E2,5.566361416E1 +9.777680000E2,5.819125256E1 +9.781220000E2,5.947694304E1 +9.783640000E2,6.140057637E1 +9.786330000E2,5.721849738E1 +9.788550000E2,5.617504209E1 +9.791010000E2,5.660293849E1 +9.793960000E2,5.174001770E1 +9.796880000E2,5.083474014E1 +9.799290000E2,5.184104339E1 +9.801850000E2,5.025385313E1 +9.804850000E2,5.286605500E1 +9.807270000E2,5.586849562E1 +9.809750000E2,5.666036754E1 +9.812950000E2,5.248500918E1 +9.815810000E2,5.416072977E1 +9.818360000E2,5.799655965E1 +9.821300000E2,5.801841935E1 +9.823770000E2,5.977514968E1 +9.826270000E2,5.676871456E1 +9.828850000E2,5.104814549E1 +9.831730000E2,5.834620153E1 +9.834010000E2,5.660640582E1 +9.836620000E2,5.686451748E1 +9.839750000E2,5.998440952E1 +9.842240000E2,5.556687478E1 +9.846000000E2,5.811069315E1 +9.848430000E2,5.843499893E1 +9.851250000E2,5.180956247E1 +9.853860000E2,5.206236639E1 +9.856480000E2,5.641840701E1 +9.859110000E2,5.518588565E1 +9.861920000E2,5.697237679E1 +9.864550000E2,5.411246614E1 +9.867510000E2,5.214533821E1 +9.869880000E2,5.642389575E1 +9.872440000E2,6.015294933E1 +9.875470000E2,5.809991100E1 +9.879150000E2,6.420044247E1 +9.881610000E2,6.042656173E1 +9.884280000E2,5.938959873E1 +9.886840000E2,6.059888233E1 +9.889870000E2,5.282749720E1 +9.892620000E2,5.638110380E1 +9.895440000E2,4.900409689E1 +9.897740000E2,4.971849802E1 +9.900320000E2,5.061428463E1 +9.903370000E2,5.829922071E1 +9.905860000E2,5.812083213E1 +9.908910000E2,5.500587720E1 +9.911860000E2,5.677481104E1 +9.914380000E2,5.502691141E1 +9.916830000E2,5.294500154E1 +9.919560000E2,5.700444986E1 +9.921770000E2,5.448756275E1 +9.924220000E2,5.785741234E1 +9.927280000E2,5.702180374E1 +9.929670000E2,6.013415875E1 +9.932080000E2,5.533496795E1 +9.934640000E2,5.695301526E1 +9.937440000E2,5.436173732E1 +9.940620000E2,5.092257074E1 +9.944480000E2,4.973000793E1 +9.946940000E2,4.871235512E1 +9.949410000E2,5.171412848E1 +9.951960000E2,5.643245777E1 +9.954520000E2,5.548819002E1 +9.957530000E2,5.694822585E1 +9.960600000E2,5.668072577E1 +9.963110000E2,5.547400320E1 +9.966010000E2,5.667137699E1 +9.968430000E2,5.866196066E1 +9.971120000E2,5.641527163E1 +9.974300000E2,5.505243365E1 +9.977140000E2,5.491253296E1 +9.979940000E2,5.642986287E1 +9.982400000E2,5.111113898E1 +9.985270000E2,5.228293633E1 +9.987770000E2,5.380023266E1 +9.990760000E2,5.259255492E1 +9.993610000E2,5.359948032E1 +9.996550000E2,5.817439497E1 +9.999080000E2,5.712087238E1 +1.000199000E3,6.016800470E1 +1.000435000E3,5.758076017E1 +1.000772000E3,5.328951429E1 +1.001047000E3,5.373102399E1 +1.001303000E3,5.905317642E1 +1.001622000E3,5.478240688E1 +1.001877000E3,5.648896451E1 +1.002173000E3,5.587033976E1 +1.002422000E3,5.995513955E1 +1.002724000E3,6.295760047E1 +1.003003000E3,5.978713154E1 +1.003261000E3,5.669754444E1 +1.003545000E3,5.577942906E1 +1.003827000E3,6.186873273E1 +1.004183000E3,6.253868639E1 +1.004493000E3,5.777226132E1 +1.004770000E3,6.482227668E1 +1.005072000E3,5.923751414E1 +1.005323000E3,5.644465637E1 +1.005601000E3,6.074750234E1 +1.005832000E3,5.683683327E1 +1.006147000E3,5.957418887E1 +1.006418000E3,6.134946851E1 +1.006713000E3,5.641852300E1 +1.006952000E3,5.637674327E1 +1.007310000E3,5.484290206E1 +1.007589000E3,6.426865013E1 +1.007886000E3,5.712036033E1 +1.008127000E3,5.768385080E1 +1.008427000E3,5.812466970E1 +1.008666000E3,6.112344783E1 +1.008973000E3,5.606588478E1 +1.009269000E3,5.809328667E1 +1.009507000E3,5.371315435E1 +1.009763000E3,5.527533595E1 +1.010003000E3,5.390597114E1 +1.010379000E3,5.652035402E1 +1.010658000E3,5.490058638E1 +1.010920000E3,5.927019017E1 +1.011197000E3,5.293113048E1 +1.011458000E3,5.179006266E1 +1.011718000E3,5.366462930E1 +1.011979000E3,5.569421827E1 +1.012229000E3,5.341899104E1 +1.012477000E3,4.863208748E1 +1.012772000E3,6.037154816E1 +1.013036000E3,5.430849576E1 +1.013284000E3,5.735938261E1 +1.013671000E3,5.526482118E1 +1.013957000E3,5.731780297E1 +1.014225000E3,5.205368153E1 +1.014486000E3,5.548863756E1 +1.014733000E3,5.265038263E1 +1.015033000E3,5.986876322E1 +1.015314000E3,5.130643680E1 +1.015590000E3,6.086878634E1 +1.015830000E3,5.798526739E1 +1.016137000E3,6.825745236E1 +1.016387000E3,5.828900876E1 +1.016655000E3,5.873097643E1 +1.017001000E3,6.454090665E1 +1.017329000E3,6.385512775E1 +1.017637000E3,6.691081911E1 +1.017938000E3,6.580217665E1 +1.018229000E3,6.485489311E1 +1.018470000E3,6.387101962E1 +1.018706000E3,6.616835921E1 +1.018997000E3,5.951737331E1 +1.019235000E3,5.386458503E1 +1.019536000E3,5.756977765E1 +1.019801000E3,5.811747841E1 +1.020064000E3,5.930001089E1 +1.020406000E3,5.469664450E1 +1.020673000E3,5.181220980E1 +1.020925000E3,5.483858346E1 +1.021232000E3,5.716842569E1 +1.021527000E3,5.738254897E1 +1.021762000E3,5.628034518E1 +1.022007000E3,5.850971228E1 +1.022258000E3,5.329919175E1 +1.022556000E3,5.482637446E1 +1.022813000E3,5.690503448E1 +1.023071000E3,5.317501594E1 +1.023336000E3,4.870888301E1 +1.023687000E3,6.132281620E1 +1.023965000E3,6.262505101E1 +1.024220000E3,6.180229149E1 +1.024496000E3,6.130993335E1 +1.024741000E3,6.231376381E1 +1.025040000E3,6.164360059E1 +1.025279000E3,5.910065798E1 +1.025533000E3,5.622173801E1 +1.025821000E3,5.290311975E1 +1.026116000E3,5.028293308E1 +1.026403000E3,5.581740437E1 +1.026664000E3,5.988277804E1 +1.027011000E3,5.730548262E1 +1.027305000E3,5.417769573E1 +1.027578000E3,5.250932185E1 +1.027819000E3,5.139919708E1 +1.028128000E3,5.061852216E1 +1.028380000E3,4.722292138E1 +1.028683000E3,5.983070917E1 +1.028956000E3,6.045269830E1 +1.029182000E3,5.777292957E1 +1.029431000E3,5.497807442E1 +1.029734000E3,5.533889528E1 +1.030063000E3,5.373558580E1 +1.030323000E3,5.600729212E1 +1.030620000E3,5.467159629E1 +1.030863000E3,5.246400101E1 +1.031110000E3,5.468037288E1 +1.031367000E3,5.850364516E1 +1.031646000E3,5.490958739E1 +1.031911000E3,5.866929845E1 +1.032210000E3,5.708288591E1 +1.032475000E3,5.498129629E1 +1.032736000E3,5.670272599E1 +1.032986000E3,5.317143219E1 +1.033315000E3,5.758413128E1 +1.033557000E3,6.361635596E1 +1.033846000E3,5.513973379E1 +1.034093000E3,5.215484095E1 +1.034399000E3,5.465926438E1 +1.034684000E3,5.588902955E1 +1.034978000E3,5.387672604E1 +1.035280000E3,5.595327755E1 +1.035543000E3,5.621513504E1 +1.035825000E3,5.991854954E1 +1.036079000E3,5.864640009E1 +1.036322000E3,6.072021936E1 +1.036666000E3,5.462749592E1 +1.036971000E3,5.329083651E1 +1.037264000E3,5.401214501E1 +1.037542000E3,5.242806591E1 +1.037843000E3,5.573267887E1 +1.038091000E3,5.224254554E1 +1.038380000E3,5.453929206E1 +1.038635000E3,5.371826859E1 +1.038891000E3,4.369246898E1 +1.039145000E3,4.547521933E1 +1.039418000E3,4.204639660E1 +1.039750000E3,4.426760298E1 +1.039990000E3,4.955659514E1 +1.040294000E3,4.960859899E1 +1.040560000E3,4.841380220E1 +1.040808000E3,4.914533708E1 +1.041104000E3,4.650609937E1 +1.041370000E3,4.849101938E1 +1.041622000E3,5.065930763E1 +1.041920000E3,4.744161935E1 +1.042161000E3,4.448519483E1 +1.042478000E3,4.726532690E1 +1.042725000E3,4.667923132E1 +1.043042000E3,4.704822757E1 +1.043307000E3,3.950691106E1 +1.043560000E3,5.249697508E1 +1.043835000E3,4.753687679E1 +1.044091000E3,4.843049138E1 +1.044350000E3,5.394643708E1 +1.044644000E3,4.769079035E1 +1.044887000E3,5.111291504E1 +1.045194000E3,5.247298633E1 +1.045445000E3,4.904344971E1 +1.045693000E3,4.405437847E1 +1.045988000E3,4.750888237E1 +1.046301000E3,4.305046000E1 +1.046518000E3,4.630901796E1 +1.046813000E3,4.756289225E1 +1.047053000E3,4.661089273E1 +1.047331000E3,6.143859736E1 +1.047566000E3,5.702483033E1 +1.047860000E3,5.015015196E1 +1.048098000E3,5.180675157E1 +1.048397000E3,4.645218330E1 +1.048640000E3,4.317726503E1 +1.048918000E3,4.962602549E1 +1.049159000E3,4.922447391E1 +1.049523000E3,4.310015818E1 +1.049767000E3,5.584844461E1 +1.050011000E3,5.550466055E1 +1.050294000E3,5.076679182E1 +1.050523000E3,4.777565498E1 +1.050776000E3,5.078379664E1 +1.051031000E3,4.412618688E1 +1.051298000E3,3.933148532E1 +1.051551000E3,4.240994962E1 +1.051799000E3,3.715036539E1 +1.052054000E3,4.541823437E1 +1.052312000E3,3.252240989E1 +1.052661000E3,4.298387800E1 +1.052922000E3,4.065675211E1 +1.053171000E3,3.851226965E1 +1.053417000E3,3.833414863E1 +1.053702000E3,3.734543870E1 +1.053967000E3,4.406198141E1 +1.054269000E3,3.397952572E1 +1.054518000E3,3.018425986E1 +1.054795000E3,2.659023927E1 +1.055055000E3,3.230579484E1 +1.055319000E3,4.027650377E1 +1.055588000E3,3.256611719E1 +1.055936000E3,3.203904394E1 +1.056189000E3,3.024692018E1 +1.056469000E3,4.044611203E1 +1.056698000E3,3.245705712E1 +1.056956000E3,5.087039919E1 +1.057201000E3,5.278557071E1 +1.057507000E3,6.996122129E1 +1.057766000E3,6.951439283E1 +1.058027000E3,6.731609209E1 +1.058291000E3,5.787293958E1 +1.058571000E3,5.774874245E1 +1.058801000E3,5.291748766E1 +1.059132000E3,4.352220528E1 +1.059391000E3,5.556254729E1 +1.059665000E3,5.339220405E1 +1.059951000E3,5.593145301E1 +1.060235000E3,5.299996372E1 +1.060492000E3,4.882317894E1 +1.060733000E3,3.790707311E1 +1.060975000E3,3.470192076E1 +1.061278000E3,4.481563830E1 +1.061519000E3,4.823008935E1 +1.061816000E3,4.719850269E1 +1.062076000E3,4.706381680E1 +1.062331000E3,4.530378435E1 +1.062576000E3,3.456809562E1 +1.062882000E3,3.742453964E1 +1.063154000E3,3.905594906E1 +1.063397000E3,3.672857244E1 +1.063694000E3,2.941779164E1 +1.063926000E3,2.995931983E1 +1.064168000E3,3.455311118E1 +1.064461000E3,3.254662869E1 +1.064708000E3,3.652583843E1 +1.065001000E3,5.229424666E1 +1.065352000E3,5.178814165E1 +1.065606000E3,4.798098259E1 +1.065854000E3,3.636652329E1 +1.066121000E3,4.558252535E1 +1.066366000E3,3.902840121E1 +1.066629000E3,3.106435508E1 +1.066887000E3,2.541330464E1 +1.067179000E3,3.474902335E1 +1.067449000E3,4.492275189E1 +1.067698000E3,3.860211372E1 +1.067955000E3,4.332670525E1 +1.068251000E3,5.147667691E1 +1.068546000E3,5.152069997E1 +1.068797000E3,4.540650098E1 +1.069105000E3,4.486446450E1 +1.069378000E3,4.196481867E1 +1.069632000E3,4.863200791E1 +1.069908000E3,3.878967071E1 +1.070151000E3,3.630888030E1 +1.070413000E3,2.964429880E1 +1.070682000E3,3.354707636E1 +1.070956000E3,4.008490969E1 +1.071248000E3,3.576577653E1 +1.071553000E3,4.349754488E1 +1.071886000E3,3.824859907E1 +1.072130000E3,3.455877689E1 +1.072406000E3,3.622999465E1 +1.072717000E3,3.637608237E1 +1.072984000E3,3.645219519E1 +1.073255000E3,4.353729148E1 +1.073603000E3,4.287473251E1 +1.073856000E3,4.842203791E1 +1.074097000E3,4.484407311E1 +1.074356000E3,4.397007110E1 +1.074628000E3,4.695884235E1 +1.074931000E3,4.627189963E1 +1.075264000E3,4.689571524E1 +1.075614000E3,5.203841291E1 +1.075923000E3,4.610184941E1 +1.076163000E3,4.404432471E1 +1.076475000E3,4.923215011E1 +1.076765000E3,4.466142180E1 +1.077062000E3,4.987282715E1 +1.077375000E3,4.461839454E1 +1.077687000E3,5.085403766E1 +1.077991000E3,4.674512295E1 +1.078232000E3,5.167180279E1 +1.078544000E3,4.780582457E1 +1.078939000E3,4.593914406E1 +1.079187000E3,4.061652220E1 +1.079434000E3,4.347669045E1 +1.079712000E3,4.326983820E1 +1.079966000E3,3.511950991E1 +1.080260000E3,4.755279745E1 +1.080506000E3,4.756343862E1 +1.080756000E3,4.779732167E1 +1.081049000E3,4.991962747E1 +1.081293000E3,5.213887128E1 +1.081586000E3,5.357624469E1 +1.081916000E3,5.141456645E1 +1.082165000E3,5.036532462E1 +1.082460000E3,4.962769973E1 +1.082696000E3,4.506404490E1 +1.082988000E3,4.537987312E1 +1.083220000E3,4.738457007E1 +1.083529000E3,4.698711193E1 +1.083769000E3,4.571430081E1 +1.084079000E3,4.980908007E1 +1.084324000E3,5.082282040E1 +1.084590000E3,5.406004268E1 +1.084876000E3,5.436375886E1 +1.085258000E3,5.361506257E1 +1.085509000E3,5.202937925E1 +1.085815000E3,5.324976969E1 +1.086057000E3,5.371445731E1 +1.086301000E3,5.282162917E1 +1.086550000E3,5.221281857E1 +1.086802000E3,5.263727375E1 +1.087126000E3,5.703022139E1 +1.087384000E3,5.519432869E1 +1.087646000E3,5.426647490E1 +1.087939000E3,5.407342864E1 +1.088175000E3,5.235924404E1 +1.088520000E3,4.681002832E1 +1.088812000E3,4.891237586E1 +1.089076000E3,4.699020733E1 +1.089350000E3,4.902871382E1 +1.089591000E3,5.078145117E1 +1.089837000E3,5.041791921E1 +1.090133000E3,4.603650794E1 +1.090430000E3,4.871755485E1 +1.090660000E3,5.111421073E1 +1.090911000E3,4.581894631E1 +1.091248000E3,4.988189917E1 +1.091630000E3,5.341365920E1 +1.091902000E3,4.962858025E1 +1.092183000E3,4.315344358E1 +1.092440000E3,4.664431132E1 +1.092683000E3,4.616459192E1 +1.092923000E3,4.765071496E1 +1.093171000E3,4.163360687E1 +1.093473000E3,4.537777608E1 +1.093714000E3,4.783603025E1 +1.094007000E3,4.845414260E1 +1.094261000E3,4.799870549E1 +1.094499000E3,4.651309815E1 +1.094792000E3,5.003648984E1 +1.095123000E3,5.202534254E1 +1.095372000E3,5.709400077E1 +1.095625000E3,5.694079106E1 +1.095896000E3,5.715452089E1 +1.096196000E3,5.523378380E1 +1.096438000E3,5.375558627E1 +1.096737000E3,5.665208041E1 +1.096991000E3,5.314654737E1 +1.097292000E3,5.142447849E1 +1.097557000E3,5.330628285E1 +1.097827000E3,5.512040694E1 +1.098167000E3,5.399583122E1 +1.098472000E3,5.540663813E1 +1.098720000E3,5.200546986E1 +1.098960000E3,4.676140326E1 +1.099243000E3,4.798657093E1 +1.099544000E3,4.841724285E1 +1.099804000E3,5.642371618E1 +1.100109000E3,5.409000726E1 +1.100381000E3,5.348646719E1 +1.100630000E3,5.346537578E1 +1.100927000E3,5.422782845E1 +1.101164000E3,5.395323822E1 +1.101495000E3,5.383967560E1 +1.101763000E3,5.667828538E1 +1.102044000E3,4.764690784E1 +1.102307000E3,5.353530254E1 +1.102613000E3,5.568430762E1 +1.102906000E3,5.431580275E1 +1.103147000E3,5.193331555E1 +1.103441000E3,5.040945762E1 +1.103677000E3,5.333005838E1 +1.103968000E3,4.947534745E1 +1.104272000E3,5.306270968E1 +1.104564000E3,5.537230515E1 +1.104799000E3,4.876041085E1 +1.105069000E3,5.109409535E1 +1.105330000E3,5.087734214E1 +1.105587000E3,5.225642483E1 +1.105838000E3,5.176680091E1 +1.106135000E3,5.535939212E1 +1.106380000E3,5.666892185E1 +1.106622000E3,5.658846562E1 +1.106895000E3,5.577897889E1 +1.107150000E3,5.157178717E1 +1.107431000E3,5.284488409E1 +1.107756000E3,5.415639955E1 +1.108002000E3,5.465643057E1 +1.108313000E3,4.654328988E1 +1.108563000E3,5.038890380E1 +1.108811000E3,4.602751738E1 +1.109073000E3,4.801243396E1 +1.109375000E3,4.782472616E1 +1.109667000E3,4.666447221E1 +1.109943000E3,5.156469126E1 +1.110192000E3,4.949682888E1 +1.110448000E3,4.919673339E1 +1.110752000E3,4.862521519E1 +1.111045000E3,5.122379655E1 +1.111295000E3,4.813892217E1 +1.111515000E3,4.901611396E1 +1.111761000E3,4.905664967E1 +1.112005000E3,4.647618514E1 +1.112265000E3,4.730688076E1 +1.112537000E3,5.039121351E1 +1.112793000E3,4.985611957E1 +1.113101000E3,5.474563863E1 +1.113387000E3,5.028870882E1 +1.113678000E3,5.073784750E1 +1.113952000E3,4.995138555E1 +1.114291000E3,4.790039203E1 +1.114554000E3,4.764335594E1 +1.114849000E3,5.057104591E1 +1.115096000E3,5.107398730E1 +1.115401000E3,4.800391913E1 +1.115672000E3,4.553282874E1 +1.115895000E3,4.569523337E1 +1.116194000E3,4.480844215E1 +1.116425000E3,4.772339962E1 +1.116664000E3,5.255452638E1 +1.116906000E3,4.927433934E1 +1.117202000E3,4.871369865E1 +1.117530000E3,4.928110420E1 +1.117840000E3,5.705383563E1 +1.118146000E3,4.880674861E1 +1.118418000E3,5.038180726E1 +1.118687000E3,5.145980404E1 +1.118950000E3,5.338008269E1 +1.119227000E3,5.227728425E1 +1.119468000E3,5.450689216E1 +1.119736000E3,5.844246451E1 +1.120049000E3,5.459398611E1 +1.120351000E3,5.526423567E1 +1.120605000E3,5.228963309E1 +1.120918000E3,5.598288902E1 +1.121182000E3,5.280889802E1 +1.121489000E3,4.974717420E1 +1.121729000E3,5.137523152E1 +1.121978000E3,5.052356297E1 +1.122235000E3,5.240368249E1 +1.122503000E3,4.826380791E1 +1.122775000E3,5.095403791E1 +1.123036000E3,5.799909934E1 +1.123291000E3,4.889512711E1 +1.123587000E3,5.622808486E1 +1.123874000E3,5.230369090E1 +1.124235000E3,5.081102316E1 +1.124544000E3,5.628773803E1 +1.124826000E3,5.810547372E1 +1.125153000E3,5.508029719E1 +1.125432000E3,5.576573503E1 +1.125722000E3,5.346022180E1 +1.125978000E3,5.279748306E1 +1.126234000E3,5.604802053E1 +1.126502000E3,5.937326657E1 +1.126804000E3,5.703447215E1 +1.127047000E3,5.520354594E1 +1.127314000E3,5.551787326E1 +1.127554000E3,5.740837773E1 +1.127843000E3,5.663015330E1 +1.128135000E3,5.649615150E1 +1.128380000E3,5.731556257E1 +1.128677000E3,6.079986861E1 +1.128914000E3,5.820128856E1 +1.129207000E3,6.091746513E1 +1.129442000E3,6.126941240E1 +1.129745000E3,4.541170906E1 +1.129980000E3,4.341485096E1 +1.130277000E3,4.833777967E1 +1.130573000E3,4.472710223E1 +1.130815000E3,5.059675199E1 +1.131062000E3,3.863826940E1 +1.131353000E3,4.925455740E1 +1.131589000E3,4.859989956E1 +1.131881000E3,5.113067908E1 +1.132117000E3,5.054542106E1 +1.132418000E3,4.827479925E1 +1.132654000E3,4.610884488E1 +1.132948000E3,4.879734536E1 +1.133241000E3,5.074680390E1 +1.133563000E3,5.119298220E1 +1.133864000E3,4.861265792E1 +1.134166000E3,5.001512903E1 +1.134452000E3,5.059053464E1 +1.134716000E3,4.999839479E1 +1.134967000E3,4.960069086E1 +1.135222000E3,5.320256888E1 +1.135494000E3,5.604818163E1 +1.135742000E3,5.625768045E1 +1.135999000E3,5.261645024E1 +1.136244000E3,5.105081932E1 +1.136501000E3,5.616444939E1 +1.136847000E3,5.624064264E1 +1.137105000E3,5.654097446E1 +1.137391000E3,5.807884104E1 +1.137717000E3,5.436169891E1 +1.137970000E3,5.763959225E1 +1.138239000E3,5.465216875E1 +1.138486000E3,5.094509116E1 +1.138731000E3,5.425415233E1 +1.138977000E3,5.143709697E1 +1.139259000E3,5.032545705E1 +1.139527000E3,5.906031130E1 +1.139800000E3,5.308709054E1 +1.140168000E3,5.407062541E1 +1.140423000E3,5.585261351E1 +1.140694000E3,5.463535881E1 +1.140949000E3,5.407603664E1 +1.141230000E3,5.495767686E1 +1.141512000E3,5.639433741E1 +1.141818000E3,5.555715330E1 +1.142072000E3,5.729232944E1 +1.142323000E3,5.553013253E1 +1.142578000E3,5.648251207E1 +1.142844000E3,5.786931075E1 +1.143143000E3,6.007493220E1 +1.143523000E3,5.752076543E1 +1.143836000E3,5.573324560E1 +1.144090000E3,5.641950784E1 +1.144396000E3,5.532270625E1 +1.144644000E3,5.561239732E1 +1.144940000E3,5.206707456E1 +1.145212000E3,5.092140902E1 +1.145511000E3,5.452891649E1 +1.145770000E3,5.331137977E1 +1.146042000E3,5.366568195E1 +1.146338000E3,5.227174013E1 +1.146650000E3,5.423955559E1 +1.146934000E3,5.781916580E1 +1.147218000E3,5.532962824E1 +1.147467000E3,5.502661676E1 +1.147687000E3,5.823979674E1 +1.147961000E3,5.538066560E1 +1.148276000E3,5.423260060E1 +1.148528000E3,5.197461977E1 +1.148799000E3,5.154724487E1 +1.149057000E3,5.473685923E1 +1.149367000E3,5.647867848E1 +1.149660000E3,5.489455072E1 +1.150037000E3,6.072892064E1 +1.150335000E3,5.543869835E1 +1.150594000E3,5.667713742E1 +1.150870000E3,5.818755157E1 +1.151164000E3,5.210849760E1 +1.151411000E3,5.095671455E1 +1.151703000E3,5.254983272E1 +1.152002000E3,5.585064224E1 +1.152253000E3,5.739007574E1 +1.152582000E3,5.895179917E1 +1.152860000E3,5.461317681E1 +1.153122000E3,5.345759293E1 +1.153381000E3,5.267971619E1 +1.153684000E3,6.006602205E1 +1.153986000E3,5.573552061E1 +1.154286000E3,5.518963618E1 +1.154531000E3,5.342922095E1 +1.154792000E3,5.257536969E1 +1.155139000E3,4.887945516E1 +1.155435000E3,4.702411688E1 +1.155680000E3,4.867646616E1 +1.155978000E3,4.811861077E1 +1.156361000E3,4.915586406E1 +1.156670000E3,5.033026069E1 +1.156976000E3,5.393908378E1 +1.157274000E3,5.295128205E1 +1.157524000E3,5.249671789E1 +1.157816000E3,5.314344994E1 +1.158052000E3,5.237342933E1 +1.158353000E3,5.300284286E1 +1.158590000E3,5.170068449E1 +1.158867000E3,5.174146304E1 +1.159147000E3,4.929588783E1 +1.159411000E3,5.699090425E1 +1.159752000E3,5.266690351E1 +1.160068000E3,5.746767577E1 +1.160360000E3,5.375850846E1 +1.160640000E3,5.373794020E1 +1.160985000E3,5.304914530E1 +1.161280000E3,5.198754593E1 +1.161525000E3,5.019848207E1 +1.161766000E3,5.164623609E1 +1.162020000E3,5.363319210E1 +1.162324000E3,5.439011044E1 +1.162564000E3,5.304648945E1 +1.162816000E3,5.174573718E1 +1.163177000E3,4.505755779E1 +1.163462000E3,4.894753105E1 +1.163738000E3,5.064933943E1 +1.164013000E3,5.245879056E1 +1.164255000E3,5.017914517E1 +1.164568000E3,5.189205429E1 +1.164823000E3,5.038961444E1 +1.165052000E3,5.072118593E1 +1.165297000E3,4.831662547E1 +1.165552000E3,5.050204887E1 +1.165808000E3,5.308107982E1 +1.166062000E3,4.878509871E1 +1.166392000E3,5.002605106E1 +1.166654000E3,5.320265697E1 +1.166911000E3,4.403273534E1 +1.167180000E3,5.161386051E1 +1.167455000E3,4.986209571E1 +1.167692000E3,4.993305836E1 +1.167973000E3,5.173621365E1 +1.168216000E3,5.385559129E1 +1.168491000E3,5.543019156E1 +1.168757000E3,5.019966657E1 +1.169035000E3,5.569516326E1 +1.169296000E3,5.216419082E1 +1.169676000E3,5.398731996E1 +1.169933000E3,5.465625282E1 +1.170197000E3,5.451774184E1 +1.170449000E3,5.328129322E1 +1.170705000E3,5.452639907E1 +1.170963000E3,5.713735254E1 +1.171272000E3,5.551413923E1 +1.171528000E3,5.604966001E1 +1.171779000E3,5.340478404E1 +1.172038000E3,5.107817821E1 +1.172291000E3,5.218990306E1 +1.172602000E3,4.830451720E1 +1.172964000E3,5.276802164E1 +1.173245000E3,5.191204687E1 +1.173527000E3,5.337367972E1 +1.173838000E3,5.462664550E1 +1.174090000E3,5.304724513E1 +1.174379000E3,5.193251440E1 +1.174628000E3,5.283915893E1 +1.174936000E3,5.036641160E1 +1.175236000E3,4.890810708E1 +1.175487000E3,4.805298565E1 +1.175750000E3,5.067335741E1 +1.176019000E3,4.961207397E1 +1.176335000E3,4.820862314E1 +1.176634000E3,5.328684116E1 +1.176883000E3,5.122009001E1 +1.177165000E3,5.878687770E1 +1.177412000E3,5.487235950E1 +1.177709000E3,5.224569426E1 +1.178006000E3,5.403405997E1 +1.178246000E3,5.388661901E1 +1.178490000E3,5.237426881E1 +1.178734000E3,5.372043820E1 +1.179050000E3,5.471170909E1 +1.179387000E3,5.129350436E1 +1.179686000E3,4.660070824E1 +1.179916000E3,4.541361068E1 +1.180159000E3,4.365576113E1 +1.180466000E3,4.771103553E1 +1.180756000E3,4.863237791E1 +1.181008000E3,5.534959697E1 +1.181314000E3,5.376444060E1 +1.181609000E3,5.130885425E1 +1.181851000E3,5.256948786E1 +1.182151000E3,5.321964637E1 +1.182393000E3,5.074776981E1 +1.182622000E3,4.979941250E1 +1.182873000E3,5.445637667E1 +1.183116000E3,4.449721128E1 +1.183420000E3,5.086906199E1 +1.183676000E3,5.067998506E1 +1.183927000E3,5.352019181E1 +1.184219000E3,4.851971310E1 +1.184517000E3,5.123853013E1 +1.184764000E3,5.278221141E1 +1.185010000E3,5.126409245E1 +1.185297000E3,5.249182764E1 +1.185665000E3,5.346599478E1 +1.185972000E3,5.052250297E1 +1.186225000E3,5.389354916E1 +1.186534000E3,5.372737626E1 +1.186796000E3,5.415645782E1 +1.187048000E3,5.441424865E1 +1.187317000E3,5.470553815E1 +1.187622000E3,5.559990781E1 +1.187913000E3,5.619293356E1 +1.188186000E3,4.869472445E1 +1.188442000E3,5.069948923E1 +1.188718000E3,5.296813397E1 +1.189051000E3,5.015003063E1 +1.189308000E3,5.110938827E1 +1.189570000E3,5.250182053E1 +1.189815000E3,5.240850659E1 +1.190062000E3,5.446862868E1 +1.190368000E3,5.270463767E1 +1.190629000E3,5.117539458E1 +1.190931000E3,5.543767536E1 +1.191207000E3,5.348622922E1 +1.191505000E3,5.112152946E1 +1.191761000E3,4.905277341E1 +1.192068000E3,5.456405848E1 +1.192487000E3,5.016322677E1 +1.192732000E3,4.971711263E1 +1.192976000E3,5.396031961E1 +1.193258000E3,5.018645567E1 +1.193531000E3,4.895586707E1 +1.193790000E3,5.442023654E1 +1.194055000E3,5.160697029E1 +1.194326000E3,4.822365107E1 +1.194605000E3,5.396633777E1 +1.194903000E3,5.031021734E1 +1.195141000E3,5.278015326E1 +1.195431000E3,4.949576105E1 +1.195801000E3,5.244682833E1 +1.196076000E3,5.508575727E1 +1.196371000E3,5.161802747E1 +1.196603000E3,5.716896987E1 +1.196858000E3,5.210002974E1 +1.197207000E3,5.483594793E1 +1.197503000E3,5.204828926E1 +1.197774000E3,5.339169315E1 +1.198054000E3,4.934781945E1 +1.198312000E3,5.918797425E1 +1.198559000E3,5.025254784E1 +1.198808000E3,5.317746302E1 +1.199152000E3,5.656715516E1 +1.199464000E3,5.448426177E1 +1.199717000E3,5.419526565E1 +1.199961000E3,5.304156540E1 +1.200219000E3,4.961182292E1 +1.200480000E3,5.259766625E1 +1.200730000E3,5.295115767E1 +1.201029000E3,5.365389524E1 +1.201288000E3,5.465027972E1 +1.201538000E3,5.131261505E1 +1.201807000E3,5.767453751E1 +1.202112000E3,5.316006082E1 +1.202485000E3,5.263333972E1 +1.202739000E3,4.966297173E1 +1.203041000E3,5.282706501E1 +1.203300000E3,4.950274237E1 +1.203539000E3,4.377779375E1 +1.203832000E3,5.274682795E1 +1.204077000E3,5.348405653E1 +1.204320000E3,5.647600154E1 +1.204615000E3,4.835002395E1 +1.204854000E3,4.440243109E1 +1.205149000E3,4.673035253E1 +1.205410000E3,4.901106802E1 +1.205666000E3,5.311033159E1 +1.205952000E3,5.020567211E1 +1.206248000E3,5.046889058E1 +1.206545000E3,6.150607502E1 +1.206779000E3,5.260331634E1 +1.207093000E3,5.183291791E1 +1.207367000E3,4.957331060E1 +1.207610000E3,5.139200370E1 +1.207857000E3,5.005726187E1 +1.208158000E3,4.979521937E1 +1.208398000E3,5.178137337E1 +1.208738000E3,4.632694184E1 +1.208994000E3,4.836915777E1 +1.209279000E3,4.869228435E1 +1.209528000E3,5.096507040E1 +1.209784000E3,4.718590489E1 +1.210053000E3,4.835967114E1 +1.210281000E3,4.725223201E1 +1.210542000E3,5.172958855E1 +1.210823000E3,5.546336112E1 +1.211051000E3,5.448218663E1 +1.211300000E3,5.371995163E1 +1.211551000E3,4.887559574E1 +1.211926000E3,4.975732945E1 +1.212205000E3,5.041543230E1 +1.212482000E3,4.863959509E1 +1.212730000E3,5.047232348E1 +1.212990000E3,4.824384094E1 +1.213232000E3,5.039377586E1 +1.213493000E3,4.517891187E1 +1.213814000E3,4.686032989E1 +1.214062000E3,4.852263494E1 +1.214337000E3,4.897277606E1 +1.214586000E3,4.662047985E1 +1.214832000E3,5.483925472E1 +1.215143000E3,5.677489998E1 +1.215372000E3,5.470688254E1 +1.215664000E3,5.408747991E1 +1.215962000E3,5.167832591E1 +1.216227000E3,5.463116224E1 +1.216504000E3,5.335564969E1 +1.216747000E3,4.832376612E1 +1.216996000E3,4.918538596E1 +1.217306000E3,5.329611015E1 +1.217618000E3,5.364881155E1 +1.217885000E3,5.087209115E1 +1.218149000E3,4.967310650E1 +1.218497000E3,4.842689624E1 +1.218801000E3,5.442588779E1 +1.219043000E3,5.338467746E1 +1.219349000E3,5.187371665E1 +1.219600000E3,4.992515182E1 +1.219883000E3,5.205809257E1 +1.220161000E3,5.374364962E1 +1.220471000E3,5.145920034E1 +1.220752000E3,5.112774200E1 +1.221009000E3,4.969936214E1 +1.221258000E3,4.906585252E1 +1.221519000E3,4.971022706E1 +1.221873000E3,5.039216656E1 +1.222125000E3,4.735018859E1 +1.222388000E3,5.025223930E1 +1.222647000E3,5.349102952E1 +1.222903000E3,5.894430216E1 +1.223210000E3,5.133834742E1 +1.223464000E3,5.378681025E1 +1.223708000E3,5.646161983E1 +1.223949000E3,5.127610878E1 +1.224189000E3,5.295211205E1 +1.224441000E3,5.074229414E1 +1.224698000E3,5.428527885E1 +1.225064000E3,6.064230054E1 +1.225333000E3,5.545461106E1 +1.225591000E3,5.085263163E1 +1.225847000E3,4.867332677E1 +1.226137000E3,4.828036819E1 +1.226394000E3,5.187031217E1 +1.226668000E3,4.691949774E1 +1.226931000E3,4.605300024E1 +1.227219000E3,4.319091646E1 +1.227493000E3,4.827268256E1 +1.227791000E3,4.873371181E1 +1.228031000E3,4.895629331E1 +1.228388000E3,4.831306026E1 +1.228651000E3,5.150144778E1 +1.228942000E3,5.210555115E1 +1.229190000E3,4.868630793E1 +1.229442000E3,5.072280558E1 +1.229686000E3,5.520857657E1 +1.229933000E3,5.597505745E1 +1.230228000E3,5.309096620E1 +1.230467000E3,5.340491117E1 +1.230765000E3,4.966814228E1 +1.231012000E3,4.811713105E1 +1.231316000E3,5.037869561E1 +1.231666000E3,4.768651081E1 +1.231948000E3,4.577834304E1 +1.232207000E3,4.455407567E1 +1.232510000E3,5.091422235E1 +1.232802000E3,4.990562511E1 +1.233047000E3,5.178152081E1 +1.233344000E3,5.312014577E1 +1.233592000E3,5.002236071E1 +1.233892000E3,5.158473192E1 +1.234173000E3,4.692863129E1 +1.234463000E3,4.643331531E1 +1.234792000E3,4.659156592E1 +1.235060000E3,4.662718910E1 +1.235313000E3,5.204491267E1 +1.235577000E3,5.165973487E1 +1.235837000E3,4.753691687E1 +1.236124000E3,5.179615379E1 +1.236401000E3,4.807409380E1 +1.236654000E3,5.474790946E1 +1.236923000E3,4.946475170E1 +1.237180000E3,4.949471083E1 +1.237426000E3,4.669168363E1 +1.237743000E3,5.529942944E1 +1.238061000E3,5.997488643E1 +1.238363000E3,5.302222406E1 +1.238611000E3,5.022506453E1 +1.238856000E3,4.864145193E1 +1.239102000E3,5.299123845E1 +1.239357000E3,4.682866815E1 +1.239657000E3,4.770894983E1 +1.239902000E3,4.813746372E1 +1.240150000E3,4.571771059E1 +1.240465000E3,5.354012247E1 +1.240765000E3,5.830707734E1 +1.241013000E3,5.483189048E1 +1.241344000E3,5.157405593E1 +1.241606000E3,5.072581437E1 +1.241868000E3,5.137979859E1 +1.242133000E3,4.849261303E1 +1.242396000E3,5.556107710E1 +1.242656000E3,4.958779284E1 +1.242959000E3,5.301548021E1 +1.243232000E3,5.475621292E1 +1.243501000E3,5.660789219E1 +1.243755000E3,5.350018163E1 +1.244010000E3,5.415674835E1 +1.244349000E3,5.699979568E1 +1.244717000E3,5.660044844E1 +1.245015000E3,5.808533709E1 +1.245259000E3,5.881859790E1 +1.245558000E3,5.728882886E1 +1.245808000E3,6.044308225E1 +1.246079000E3,5.893900513E1 +1.246326000E3,5.279872381E1 +1.246637000E3,5.769196864E1 +1.246935000E3,5.963088900E1 +1.247181000E3,5.367341836E1 +1.247508000E3,4.963645506E1 +1.247848000E3,5.265770489E1 +1.248115000E3,5.355743381E1 +1.248359000E3,4.891015342E1 +1.248659000E3,4.819353582E1 +1.248902000E3,4.966403220E1 +1.249199000E3,4.977495696E1 +1.249449000E3,5.715212626E1 +1.249708000E3,5.458337902E1 +1.249983000E3,4.910795823E1 +1.250282000E3,5.184902745E1 +1.250527000E3,5.416053460E1 +1.250777000E3,5.320773170E1 +1.251084000E3,5.422274265E1 +1.251342000E3,5.429456299E1 +1.251602000E3,5.910733722E1 +1.251866000E3,5.226490816E1 +1.252178000E3,5.191466859E1 +1.252452000E3,5.143339371E1 +1.252681000E3,5.066846779E1 +1.252975000E3,4.928639562E1 +1.253256000E3,4.916995298E1 +1.253528000E3,5.115941927E1 +1.253816000E3,4.850268402E1 +1.254063000E3,5.682920937E1 +1.254418000E3,5.583927157E1 +1.254700000E3,5.243405901E1 +1.254947000E3,5.411796563E1 +1.255215000E3,5.538314624E1 +1.255487000E3,5.447026824E1 +1.255748000E3,5.115232974E1 +1.256046000E3,5.273125350E1 +1.256281000E3,5.501639825E1 +1.256559000E3,5.470702619E1 +1.256867000E3,5.330168249E1 +1.257116000E3,5.680033697E1 +1.257361000E3,5.088137081E1 +1.257690000E3,4.771044205E1 +1.257935000E3,5.556188303E1 +1.258189000E3,5.821474305E1 +1.258460000E3,5.913083175E1 +1.258757000E3,5.624840253E1 +1.259001000E3,5.575040009E1 +1.259294000E3,5.295140054E1 +1.259581000E3,5.547885633E1 +1.259831000E3,5.659634167E1 +1.260084000E3,5.552607398E1 +1.260378000E3,5.399987136E1 +1.260676000E3,5.741946227E1 +1.260997000E3,5.622829253E1 +1.261272000E3,5.638519080E1 +1.261569000E3,5.222122782E1 +1.261810000E3,5.168558616E1 +1.262055000E3,5.937417075E1 +1.262351000E3,5.419990938E1 +1.262597000E3,5.469291977E1 +1.262893000E3,5.501007253E1 +1.263142000E3,5.356116387E1 +1.263421000E3,5.643294047E1 +1.263644000E3,5.627927149E1 +1.263964000E3,5.547827797E1 +1.264255000E3,5.434029164E1 +1.264552000E3,5.355134450E1 +1.264791000E3,5.268456483E1 +1.265090000E3,5.304298782E1 +1.265342000E3,5.292557941E1 +1.265637000E3,5.267823535E1 +1.265885000E3,5.076475521E1 +1.266186000E3,5.470463807E1 +1.266480000E3,5.369531663E1 +1.266727000E3,5.321314382E1 +1.267074000E3,5.430022488E1 +1.267386000E3,5.498366079E1 +1.267650000E3,5.373765381E1 +1.267926000E3,5.631680810E1 +1.268156000E3,5.314598601E1 +1.268459000E3,5.446778700E1 +1.268718000E3,5.461487175E1 +1.269029000E3,4.723979401E1 +1.269322000E3,5.050485841E1 +1.269602000E3,5.263446338E1 +1.269914000E3,5.195043172E1 +1.270180000E3,5.361139844E1 +1.270542000E3,5.127785292E1 +1.270796000E3,5.111084292E1 +1.271061000E3,5.030178225E1 +1.271329000E3,4.978955516E1 +1.271616000E3,5.398913319E1 +1.271862000E3,5.537806166E1 +1.272155000E3,5.301545016E1 +1.272407000E3,5.450597504E1 +1.272651000E3,5.090153644E1 +1.272906000E3,5.335437953E1 +1.273148000E3,4.673762491E1 +1.273392000E3,5.062539325E1 +1.273710000E3,5.110756444E1 +1.273960000E3,5.466659884E1 +1.274217000E3,5.158121780E1 +1.274511000E3,5.575560452E1 +1.274759000E3,5.536976579E1 +1.275054000E3,5.425250328E1 +1.275298000E3,5.448034930E1 +1.275544000E3,5.185016662E1 +1.275828000E3,5.206320816E1 +1.276126000E3,5.118466074E1 +1.276376000E3,4.943928704E1 +1.276707000E3,5.090592254E1 +1.276972000E3,5.767487174E1 +1.277251000E3,5.481331862E1 +1.277544000E3,5.385854096E1 +1.277810000E3,5.179333541E1 +1.278097000E3,5.161992279E1 +1.278344000E3,5.248655937E1 +1.278657000E3,5.064236034E1 +1.278927000E3,4.915402835E1 +1.279197000E3,5.321156971E1 +1.279471000E3,5.438812541E1 +1.279734000E3,5.482588411E1 +1.280065000E3,5.157318203E1 +1.280296000E3,5.173449962E1 +1.280546000E3,5.465953878E1 +1.280843000E3,5.457680704E1 +1.281077000E3,5.562152963E1 +1.281325000E3,5.460406982E1 +1.281570000E3,5.232421403E1 +1.281870000E3,5.207576719E1 +1.282135000E3,4.968186040E1 +1.282378000E3,5.237915347E1 +1.282628000E3,4.745539727E1 +1.282877000E3,5.255989147E1 +1.283195000E3,5.301690658E1 +1.283467000E3,5.283539029E1 +1.283717000E3,5.083105477E1 +1.283978000E3,4.559322742E1 +1.284235000E3,4.934435088E1 +1.284538000E3,5.265118466E1 +1.284812000E3,5.302155906E1 +1.285045000E3,5.294725202E1 +1.285352000E3,5.129236762E1 +1.285646000E3,5.402858483E1 +1.285898000E3,5.434527110E1 +1.286189000E3,5.525625388E1 +1.286515000E3,5.653073998E1 +1.286819000E3,5.704731902E1 +1.287101000E3,5.310035962E1 +1.287387000E3,5.474072190E1 +1.287649000E3,5.496979063E1 +1.287925000E3,5.528941101E1 +1.288193000E3,5.394330028E1 +1.288492000E3,4.829171318E1 +1.288740000E3,5.076324605E1 +1.289004000E3,4.673843249E1 +1.289280000E3,5.345749476E1 +1.289584000E3,4.955238815E1 +1.289923000E3,5.268555513E1 +1.290206000E3,5.092762320E1 +1.290445000E3,5.180504716E1 +1.290779000E3,5.421996562E1 +1.291081000E3,5.408565728E1 +1.291322000E3,5.466627749E1 +1.291622000E3,5.247549140E1 +1.291870000E3,5.438915347E1 +1.292125000E3,5.526358440E1 +1.292428000E3,5.407200655E1 +1.292723000E3,5.160593410E1 +1.293035000E3,5.231731426E1 +1.293342000E3,5.126765219E1 +1.293626000E3,4.802016847E1 +1.293922000E3,5.428603515E1 +1.294199000E3,5.305841291E1 +1.294451000E3,5.676250586E1 +1.294738000E3,5.921971496E1 +1.295005000E3,5.812051865E1 +1.295266000E3,5.671365947E1 +1.295512000E3,5.389157640E1 +1.295809000E3,5.417883641E1 +1.296087000E3,5.169085532E1 +1.296408000E3,5.027989141E1 +1.296704000E3,5.801273246E1 +1.296951000E3,5.777618357E1 +1.297241000E3,5.598217178E1 +1.297547000E3,5.590671112E1 +1.297806000E3,6.302454961E1 +1.298073000E3,5.716944646E1 +1.298330000E3,5.693666329E1 +1.298591000E3,5.374930006E1 +1.298851000E3,5.170089530E1 +1.299100000E3,6.243829367E1 +1.299340000E3,5.522680485E1 +1.299673000E3,5.451288060E1 +1.299933000E3,5.720613947E1 +1.300193000E3,5.131457759E1 +1.300510000E3,5.593393786E1 +1.300810000E3,5.344184529E1 +1.301099000E3,5.432320381E1 +1.301355000E3,5.294046944E1 +1.301602000E3,5.330691828E1 +1.301911000E3,4.899471979E1 +1.302175000E3,5.054546621E1 +1.302420000E3,4.914598102E1 +1.302706000E3,5.757950400E1 +1.303045000E3,5.798603958E1 +1.303343000E3,5.685278830E1 +1.303584000E3,5.272645619E1 +1.303869000E3,5.576083132E1 +1.304169000E3,5.311655900E1 +1.304414000E3,5.297304035E1 +1.304724000E3,6.119658997E1 +1.304998000E3,5.921259630E1 +1.305275000E3,5.974785927E1 +1.305567000E3,5.829108198E1 +1.305799000E3,5.656256791E1 +1.306151000E3,5.263150293E1 +1.306475000E3,5.719715846E1 +1.306754000E3,5.746813017E1 +1.307020000E3,6.063794361E1 +1.307320000E3,5.945639283E1 +1.307570000E3,5.898495898E1 +1.307856000E3,5.345744690E1 +1.308127000E3,5.882374416E1 +1.308390000E3,5.704844280E1 +1.308660000E3,6.230218860E1 +1.308982000E3,5.794977886E1 +1.309252000E3,5.609480230E1 +1.309620000E3,5.439173238E1 +1.309924000E3,5.804315704E1 +1.310253000E3,5.898090143E1 +1.310510000E3,5.933785859E1 +1.310826000E3,5.484966867E1 +1.311077000E3,5.841635068E1 +1.311358000E3,5.536029260E1 +1.311601000E3,5.555523834E1 +1.311895000E3,5.637714479E1 +1.312195000E3,5.253312652E1 +1.312445000E3,5.377927694E1 +1.312696000E3,5.757954833E1 +1.313038000E3,5.500733438E1 +1.313282000E3,5.367385274E1 +1.313558000E3,5.610715122E1 +1.313797000E3,5.528556803E1 +1.314063000E3,5.884958532E1 +1.314412000E3,5.458036035E1 +1.314671000E3,5.765344335E1 +1.314945000E3,5.139756723E1 +1.315223000E3,5.546002517E1 +1.315503000E3,5.608276603E1 +1.315733000E3,5.719791479E1 +1.315986000E3,5.413888898E1 +1.316329000E3,5.789500166E1 +1.316579000E3,5.404086097E1 +1.316819000E3,6.021843554E1 +1.317067000E3,5.929690830E1 +1.317365000E3,6.066063258E1 +1.317666000E3,5.465341745E1 +1.317917000E3,5.115712079E1 +1.318169000E3,4.986479689E1 +1.318470000E3,5.351977371E1 +1.318716000E3,5.614277654E1 +1.318987000E3,5.824140620E1 +1.319280000E3,5.863858703E1 +1.319646000E3,5.908977231E1 +1.319902000E3,5.867594430E1 +1.320142000E3,5.256185028E1 +1.320379000E3,5.916248935E1 +1.320672000E3,5.829134786E1 +1.320910000E3,5.729121950E1 +1.321203000E3,5.817253701E1 +1.321434000E3,5.958327052E1 +1.321726000E3,6.109571062E1 +1.321963000E3,6.309400740E1 +1.322263000E3,6.381431561E1 +1.322586000E3,6.124594205E1 +1.322839000E3,6.120886427E1 +1.323128000E3,5.624496406E1 +1.323377000E3,6.205845751E1 +1.323676000E3,6.248705287E1 +1.323968000E3,6.259357777E1 +1.324217000E3,6.168308921E1 +1.324496000E3,6.128297543E1 +1.324731000E3,5.975404370E1 +1.325024000E3,6.147148959E1 +1.325261000E3,6.101142333E1 +1.325573000E3,5.682124874E1 +1.325854000E3,5.869490284E1 +1.326149000E3,5.646663249E1 +1.326392000E3,5.662110608E1 +1.326643000E3,5.067702480E1 +1.326984000E3,5.759763927E1 +1.327264000E3,5.613584630E1 +1.327489000E3,5.826097161E1 +1.327735000E3,5.843702691E1 +1.328012000E3,5.352317094E1 +1.328253000E3,5.737674501E1 +1.328545000E3,5.736811408E1 +1.328911000E3,5.477233671E1 +1.329158000E3,5.481436604E1 +1.329403000E3,4.974322484E1 +1.329645000E3,5.490077996E1 +1.329890000E3,4.870505425E1 +1.330144000E3,4.955972956E1 +1.330428000E3,5.470042727E1 +1.330734000E3,5.618884112E1 +1.331026000E3,5.238151215E1 +1.331265000E3,5.344428978E1 +1.331515000E3,5.051963956E1 +1.331772000E3,5.068574448E1 +1.332120000E3,5.754233113E1 +1.332409000E3,5.498832674E1 +1.332740000E3,5.245036701E1 +1.333034000E3,5.885934606E1 +1.333286000E3,5.644915657E1 +1.333540000E3,5.532779852E1 +1.333784000E3,5.694511409E1 +1.334028000E3,5.553937724E1 +1.334302000E3,5.308286554E1 +1.334615000E3,5.140154995E1 +1.334876000E3,5.045296543E1 +1.335187000E3,5.631993217E1 +1.335451000E3,5.435091016E1 +1.335722000E3,5.624357652E1 +1.335986000E3,5.791043400E1 +1.336271000E3,5.847603086E1 +1.336545000E3,5.757219882E1 +1.336794000E3,6.070042624E1 +1.337072000E3,5.247827017E1 +1.337340000E3,5.208145921E1 +1.337609000E3,6.026756153E1 +1.337870000E3,6.012826199E1 +1.338134000E3,5.465450317E1 +1.338408000E3,5.768658418E1 +1.338755000E3,5.542991210E1 +1.339019000E3,5.279974580E1 +1.339289000E3,4.966927449E1 +1.339556000E3,4.563713389E1 +1.339804000E3,4.961972315E1 +1.340056000E3,5.287436972E1 +1.340316000E3,5.318950925E1 +1.340586000E3,5.037908496E1 +1.340881000E3,5.345184090E1 +1.341116000E3,5.016784238E1 +1.341407000E3,5.799295151E1 +1.341694000E3,5.875659808E1 +1.342051000E3,5.666657228E1 +1.342345000E3,5.241270038E1 +1.342638000E3,5.754780266E1 +1.342875000E3,5.669750570E1 +1.343177000E3,5.541629106E1 +1.343432000E3,5.556249818E1 +1.343726000E3,5.603182587E1 +1.343969000E3,5.961525777E1 +1.344257000E3,5.915223521E1 +1.344498000E3,5.820677933E1 +1.344777000E3,5.815031326E1 +1.345094000E3,5.733094423E1 +1.345363000E3,5.538469317E1 +1.345622000E3,6.270903439E1 +1.345877000E3,5.551461514E1 +1.346148000E3,5.750063996E1 +1.346395000E3,5.473739655E1 +1.346676000E3,5.131350753E1 +1.346958000E3,5.072615719E1 +1.347258000E3,4.882711207E1 +1.347518000E3,5.273988371E1 +1.347784000E3,6.269937361E1 +1.348040000E3,6.058958657E1 +1.348391000E3,5.894445662E1 +1.348716000E3,5.683213923E1 +1.348984000E3,5.875140523E1 +1.349236000E3,5.263650529E1 +1.349491000E3,4.630287352E1 +1.349847000E3,5.742006494E1 +1.350115000E3,6.486179330E1 +1.350358000E3,5.963871460E1 +1.350612000E3,5.220281373E1 +1.350868000E3,5.825229613E1 +1.351125000E3,5.822075100E1 +1.351374000E3,5.487419692E1 +1.351666000E3,5.461361208E1 +1.351934000E3,5.384511910E1 +1.352185000E3,5.782109838E1 +1.352440000E3,5.156901690E1 +1.352688000E3,5.262530942E1 +1.352990000E3,5.827406705E1 +1.353265000E3,6.164230870E1 +1.353493000E3,5.939319367E1 +1.353769000E3,5.491407227E1 +1.353989000E3,5.363390940E1 +1.354236000E3,5.108497673E1 +1.354516000E3,6.129017752E1 +1.354836000E3,5.594784457E1 +1.355095000E3,5.172378417E1 +1.355422000E3,5.975901259E1 +1.355685000E3,5.720857994E1 +1.355941000E3,5.600667557E1 +1.356197000E3,5.471836828E1 +1.356478000E3,5.319452565E1 +1.356745000E3,5.296912594E1 +1.357013000E3,5.811625635E1 +1.357280000E3,5.430511038E1 +1.357577000E3,5.277700001E1 +1.357824000E3,5.616769978E1 +1.358135000E3,5.406396803E1 +1.358401000E3,4.910300122E1 +1.358643000E3,5.077236009E1 +1.358892000E3,5.530877446E1 +1.359206000E3,5.787482939E1 +1.359485000E3,5.846197249E1 +1.359760000E3,6.103303991E1 +1.360055000E3,6.092009186E1 +1.360296000E3,5.979156049E1 +1.360590000E3,6.049263298E1 +1.360828000E3,5.895545308E1 +1.361114000E3,5.611946421E1 +1.361473000E3,5.480295831E1 +1.361726000E3,5.397626184E1 +1.361972000E3,5.443193027E1 +1.362314000E3,5.572591927E1 +1.362560000E3,5.224616115E1 +1.362808000E3,5.244486023E1 +1.363061000E3,5.179430466E1 +1.363307000E3,5.228822629E1 +1.363555000E3,5.248152719E1 +1.363850000E3,5.310816898E1 +1.364115000E3,5.586433987E1 +1.364397000E3,5.735023043E1 +1.364703000E3,6.002405491E1 +1.364950000E3,5.692273216E1 +1.365192000E3,5.941823705E1 +1.365459000E3,5.316793659E1 +1.365709000E3,5.869878442E1 +1.365953000E3,5.756526572E1 +1.366216000E3,5.687574379E1 +1.366491000E3,5.232478004E1 +1.366744000E3,5.424491879E1 +1.367001000E3,5.235481979E1 +1.367305000E3,5.164783122E1 +1.367588000E3,4.924997634E1 +1.367934000E3,4.924339558E1 +1.368196000E3,5.793398832E1 +1.368473000E3,5.529211657E1 +1.368719000E3,5.120874356E1 +1.368963000E3,5.470742612E1 +1.369285000E3,5.560989240E1 +1.369528000E3,5.197646059E1 +1.369822000E3,5.152328490E1 +1.370111000E3,5.791930576E1 +1.370416000E3,5.368811562E1 +1.370672000E3,5.769124019E1 +1.370919000E3,5.333549653E1 +1.371292000E3,5.847056292E1 +1.371551000E3,5.642894477E1 +1.371803000E3,5.817537921E1 +1.372074000E3,5.885584750E1 +1.372335000E3,5.395474736E1 +1.372602000E3,5.211537518E1 +1.372880000E3,4.924374923E1 +1.373126000E3,4.882665291E1 +1.373379000E3,5.483140316E1 +1.373636000E3,5.380197532E1 +1.373915000E3,5.629967483E1 +1.374251000E3,5.773524892E1 +1.374636000E3,6.271253195E1 +1.374894000E3,5.870587143E1 +1.375125000E3,5.496954916E1 +1.375369000E3,5.621931219E1 +1.375641000E3,5.700323462E1 +1.375912000E3,5.808968856E1 +1.376161000E3,5.697587873E1 +1.376437000E3,5.739415600E1 +1.376687000E3,5.874614285E1 +1.376941000E3,5.855325473E1 +1.377252000E3,5.287324040E1 +1.377495000E3,5.331405656E1 +1.377862000E3,5.163612814E1 +1.378109000E3,6.003152631E1 +1.378372000E3,6.448039849E1 +1.378641000E3,6.226927373E1 +1.378912000E3,6.355904277E1 +1.379208000E3,6.121718755E1 +1.379463000E3,6.371699462E1 +1.379738000E3,5.774542440E1 +1.380076000E3,5.579766677E1 +1.380318000E3,5.520595979E1 +1.380614000E3,5.395000262E1 +1.380855000E3,5.263752401E1 +1.381221000E3,5.267030150E1 +1.381492000E3,5.304251562E1 +1.381793000E3,4.959737221E1 +1.382100000E3,5.549829026E1 +1.382347000E3,5.821584994E1 +1.382642000E3,5.861199323E1 +1.382905000E3,5.256382895E1 +1.383164000E3,5.491877459E1 +1.383443000E3,5.644995893E1 +1.383702000E3,5.411249990E1 +1.383954000E3,5.324738213E1 +1.384305000E3,5.625052210E1 +1.384532000E3,6.070474662E1 +1.384789000E3,5.237062704E1 +1.385074000E3,5.442107865E1 +1.385361000E3,6.017483878E1 +1.385605000E3,6.237555822E1 +1.385869000E3,5.605951782E1 +1.386126000E3,6.511151133E1 +1.386382000E3,5.571785683E1 +1.386696000E3,5.398201636E1 +1.386954000E3,5.323734283E1 +1.387264000E3,5.635686029E1 +1.387623000E3,5.701357512E1 +1.387874000E3,5.632095063E1 +1.388187000E3,5.288354031E1 +1.388477000E3,5.152350906E1 +1.388761000E3,5.130627857E1 +1.388982000E3,4.918436870E1 +1.389239000E3,5.567775637E1 +1.389545000E3,5.465238648E1 +1.389786000E3,5.003079725E1 +1.390027000E3,5.504486936E1 +1.390282000E3,5.947272344E1 +1.390539000E3,6.106137952E1 +1.390892000E3,5.985290475E1 +1.391203000E3,5.500825546E1 +1.391507000E3,5.157102239E1 +1.391806000E3,5.517662265E1 +1.392108000E3,5.349243854E1 +1.392411000E3,5.386652866E1 +1.392707000E3,5.258839734E1 +1.392973000E3,5.376638351E1 +1.393221000E3,5.619475880E1 +1.393480000E3,5.846509931E1 +1.393767000E3,6.504346680E1 +1.394122000E3,5.865804348E1 +1.394392000E3,5.055217311E1 +1.394673000E3,4.837306759E1 +1.394931000E3,5.564689750E1 +1.395193000E3,5.416088817E1 +1.395489000E3,5.481584764E1 +1.395781000E3,5.356143065E1 +1.396078000E3,5.074158934E1 +1.396313000E3,5.177896206E1 +1.396618000E3,5.670327312E1 +1.396914000E3,6.043149132E1 +1.397246000E3,5.875453471E1 +1.397559000E3,5.725772305E1 +1.397842000E3,5.610169288E1 +1.398092000E3,6.098127982E1 +1.398354000E3,5.385330985E1 +1.398611000E3,5.345613584E1 +1.398873000E3,6.183897473E1 +1.399135000E3,5.898294985E1 +1.399399000E3,5.644599073E1 +1.399662000E3,6.288338842E1 +1.399923000E3,5.844786233E1 +1.400178000E3,6.145207907E1 +1.400438000E3,5.797678971E1 +1.400786000E3,5.805590691E1 +1.401082000E3,5.956739883E1 +1.401323000E3,5.537900496E1 +1.401618000E3,5.084213917E1 +1.401871000E3,4.807017206E1 +1.402118000E3,5.545233073E1 +1.402411000E3,5.516036366E1 +1.402644000E3,5.413431379E1 +1.402920000E3,5.388857626E1 +1.403209000E3,5.292068844E1 +1.403479000E3,5.775211983E1 +1.403718000E3,5.117484548E1 +1.404045000E3,5.912447648E1 +1.404295000E3,5.591921957E1 +1.404568000E3,5.565028551E1 +1.404828000E3,5.013398992E1 +1.405122000E3,5.465164253E1 +1.405364000E3,5.305211462E1 +1.405620000E3,5.755171154E1 +1.405929000E3,6.007655449E1 +1.406174000E3,5.899920387E1 +1.406463000E3,5.970773629E1 +1.406720000E3,5.770443308E1 +1.407009000E3,5.521297881E1 +1.407407000E3,5.604277064E1 +1.407677000E3,5.646208540E1 +1.407969000E3,4.906112006E1 +1.408239000E3,5.193830101E1 +1.408558000E3,4.835599484E1 +1.408830000E3,4.864558507E1 +1.409087000E3,5.566138381E1 +1.409349000E3,5.240816417E1 +1.409604000E3,4.366169359E1 +1.409843000E3,4.924613485E1 +1.410167000E3,5.289541091E1 +1.410462000E3,5.429333459E1 +1.410857000E3,5.232803186E1 +1.411115000E3,5.279391543E1 +1.411388000E3,5.698112108E1 +1.411689000E3,4.954635028E1 +1.411940000E3,5.347151392E1 +1.412202000E3,5.431542928E1 +1.412461000E3,5.708654506E1 +1.412712000E3,5.999867781E1 +1.412972000E3,5.836713300E1 +1.413243000E3,5.662529411E1 +1.413547000E3,5.760118844E1 +1.413790000E3,5.272334048E1 +1.414155000E3,5.585703000E1 +1.414407000E3,5.277217169E1 +1.414666000E3,5.575617717E1 +1.414970000E3,5.588142009E1 +1.415263000E3,5.043609445E1 +1.415519000E3,5.366091219E1 +1.415818000E3,6.729065738E1 +1.416082000E3,5.454700058E1 +1.416357000E3,5.542836481E1 +1.416608000E3,6.150002805E1 +1.416870000E3,5.918799699E1 +1.417164000E3,5.739551304E1 +1.417548000E3,5.312046747E1 +1.417864000E3,5.735989692E1 +1.418111000E3,5.463708503E1 +1.418368000E3,5.616594485E1 +1.418622000E3,5.674613857E1 +1.418880000E3,5.393284238E1 +1.419178000E3,5.477989298E1 +1.419414000E3,5.673628135E1 +1.419692000E3,5.246670124E1 +1.419935000E3,5.929492524E1 +1.420173000E3,5.718550468E1 +1.420417000E3,5.597503360E1 +1.420745000E3,5.209811810E1 +1.421016000E3,5.108820023E1 +1.421271000E3,5.704928631E1 +1.421524000E3,5.534619134E1 +1.421787000E3,5.298830069E1 +1.422048000E3,5.357926773E1 +1.422324000E3,5.150193558E1 +1.422590000E3,5.236977243E1 +1.422860000E3,5.598534631E1 +1.423111000E3,5.804712890E1 +1.423360000E3,5.584477369E1 +1.423617000E3,6.166819052E1 +1.423956000E3,6.217862533E1 +1.424239000E3,6.474885215E1 +1.424493000E3,6.561094566E1 +1.424771000E3,6.624921272E1 +1.425013000E3,6.269332683E1 +1.425310000E3,6.427501900E1 +1.425550000E3,6.406421996E1 +1.425806000E3,6.561696377E1 +1.426124000E3,5.757984813E1 +1.426392000E3,6.467113265E1 +1.426661000E3,6.110360998E1 +1.426971000E3,6.257935575E1 +1.427325000E3,6.059948571E1 +1.427600000E3,6.060080967E1 +1.427858000E3,6.129065918E1 +1.428157000E3,6.869907238E1 +1.428403000E3,6.216021300E1 +1.428668000E3,6.028715826E1 +1.428917000E3,5.215970407E1 +1.429175000E3,5.348756082E1 +1.429445000E3,5.866879342E1 +1.429775000E3,5.422412762E1 +1.430077000E3,5.967912654E1 +1.430370000E3,6.053958419E1 +1.430696000E3,5.642153628E1 +1.430959000E3,5.797803369E1 +1.431217000E3,5.265853131E1 +1.431545000E3,6.085541328E1 +1.431825000E3,6.579757863E1 +1.432095000E3,6.783858113E1 +1.432356000E3,6.680245969E1 +1.432609000E3,5.699539434E1 +1.432887000E3,5.495476405E1 +1.433146000E3,5.431336982E1 +1.433405000E3,5.468573805E1 +1.433768000E3,6.415525931E1 +1.434037000E3,5.996195649E1 +1.434305000E3,5.880144898E1 +1.434536000E3,5.062803370E1 +1.434794000E3,4.838886892E1 +1.435059000E3,4.852598648E1 +1.435348000E3,5.424758091E1 +1.435611000E3,6.028120001E1 +1.435845000E3,5.860165153E1 +1.436098000E3,5.820116177E1 +1.436348000E3,5.458976108E1 +1.436603000E3,5.748661459E1 +1.436983000E3,5.071157707E1 +1.437230000E3,5.187454119E1 +1.437505000E3,5.690962542E1 +1.437744000E3,5.898297949E1 +1.438006000E3,6.083548120E1 +1.438278000E3,4.929702369E1 +1.438556000E3,5.094464024E1 +1.438857000E3,5.451803318E1 +1.439157000E3,4.851675588E1 +1.439427000E3,4.781325912E1 +1.439724000E3,4.919544886E1 +1.439968000E3,4.662525194E1 +1.440374000E3,4.187537091E1 +1.440620000E3,5.083424523E1 +1.440895000E3,4.476479772E1 +1.441179000E3,5.236126827E1 +1.441495000E3,4.954212438E1 +1.441772000E3,5.444261950E1 +1.442048000E3,5.023278537E1 +1.442273000E3,4.640707667E1 +1.442557000E3,5.088583460E1 +1.442822000E3,5.041471443E1 +1.443067000E3,4.940152653E1 +1.443315000E3,4.834999124E1 +1.443550000E3,5.084173145E1 +1.443802000E3,4.674944421E1 +1.444118000E3,5.005548854E1 +1.444412000E3,4.880222753E1 +1.444695000E3,4.829349493E1 +1.444948000E3,4.815408858E1 +1.445231000E3,4.968297573E1 +1.445471000E3,5.263069989E1 +1.445763000E3,4.570389774E1 +1.446062000E3,4.674284816E1 +1.446364000E3,5.179136771E1 +1.446637000E3,5.007894257E1 +1.446884000E3,5.001285233E1 +1.447102000E3,5.063641057E1 +1.447373000E3,4.164946286E1 +1.447601000E3,3.981108666E1 +1.447894000E3,4.316358072E1 +1.448132000E3,5.465701871E1 +1.448431000E3,4.615144027E1 +1.448672000E3,4.353154230E1 +1.448965000E3,5.208221965E1 +1.449200000E3,5.530439334E1 +1.449496000E3,4.996075498E1 +1.449729000E3,5.218941020E1 +1.450060000E3,4.888890123E1 +1.450335000E3,5.030971329E1 +1.450629000E3,5.012870067E1 +1.450899000E3,4.847297804E1 +1.451151000E3,4.759762696E1 +1.451454000E3,4.978926902E1 +1.451751000E3,4.930919072E1 +1.452001000E3,5.004861581E1 +1.452285000E3,5.051309266E1 +1.452566000E3,4.810890055E1 +1.452826000E3,4.654354865E1 +1.453069000E3,4.761425190E1 +1.453369000E3,4.589508435E1 +1.453616000E3,4.954922405E1 +1.453886000E3,4.065983258E1 +1.454197000E3,4.220647307E1 +1.454513000E3,4.858310714E1 +1.454789000E3,5.196405012E1 +1.455012000E3,5.467685341E1 +1.455262000E3,5.753332593E1 +1.455513000E3,4.707036048E1 +1.455859000E3,3.942826471E1 +1.456237000E3,5.170062203E1 +1.456495000E3,6.022707597E1 +1.456743000E3,5.524301158E1 +1.456990000E3,5.482834451E1 +1.457257000E3,4.917995293E1 +1.457590000E3,4.739340640E1 +1.457831000E3,4.842051754E1 +1.458073000E3,6.166669432E1 +1.458329000E3,5.427876580E1 +1.458617000E3,4.896037674E1 +1.458889000E3,4.346397471E1 +1.459122000E3,4.481546196E1 +1.459424000E3,5.149740630E1 +1.459726000E3,4.614214660E1 +1.459975000E3,4.567227587E1 +1.460237000E3,5.348774305E1 +1.460488000E3,5.617792493E1 +1.460730000E3,5.122937085E1 +1.460971000E3,5.712815616E1 +1.461266000E3,5.592815325E1 +1.461504000E3,5.208026338E1 +1.461798000E3,5.368936290E1 +1.462033000E3,5.424431898E1 +1.462332000E3,5.229538114E1 +1.462686000E3,5.012562607E1 +1.462943000E3,5.517893002E1 +1.463292000E3,5.544440679E1 +1.463574000E3,5.195225561E1 +1.463851000E3,5.582804772E1 +1.464133000E3,5.163717454E1 +1.464392000E3,5.056978371E1 +1.464653000E3,5.085736348E1 +1.464931000E3,5.111025552E1 +1.465171000E3,5.008163028E1 +1.465468000E3,5.204681239E1 +1.465721000E3,4.873162615E1 +1.466070000E3,5.052420662E1 +1.466365000E3,5.115431116E1 +1.466626000E3,5.008089225E1 +1.466902000E3,5.455907242E1 +1.467123000E3,5.881328519E1 +1.467422000E3,5.654049662E1 +1.467665000E3,6.208900398E1 +1.467911000E3,5.573620080E1 +1.468210000E3,5.034178452E1 +1.468461000E3,4.644884091E1 +1.468716000E3,4.489036287E1 +1.469021000E3,4.555962209E1 +1.469437000E3,4.956164087E1 +1.469733000E3,5.014140659E1 +1.469995000E3,5.025508197E1 +1.470298000E3,4.976482928E1 +1.470552000E3,4.666552600E1 +1.470801000E3,5.164800320E1 +1.471107000E3,4.748865751E1 +1.471358000E3,5.068455306E1 +1.471623000E3,5.380657492E1 +1.471874000E3,4.918332364E1 +1.472155000E3,4.974368594E1 +1.472539000E3,5.519550202E1 +1.472795000E3,5.119649457E1 +1.473056000E3,5.406344748E1 +1.473370000E3,5.554928156E1 +1.473655000E3,5.458007948E1 +1.473895000E3,5.519923804E1 +1.474152000E3,5.580016483E1 +1.474437000E3,5.718813696E1 +1.474685000E3,5.734393611E1 +1.474960000E3,5.879862387E1 +1.475221000E3,5.602300215E1 +1.475474000E3,5.025640835E1 +1.475826000E3,5.543439402E1 +1.476071000E3,5.232164352E1 +1.476323000E3,5.898115961E1 +1.476584000E3,6.066467981E1 +1.476821000E3,5.071984472E1 +1.477123000E3,5.740447565E1 +1.477365000E3,5.959782608E1 +1.477662000E3,5.958620190E1 +1.477906000E3,5.753388342E1 +1.478144000E3,5.506848886E1 +1.478455000E3,5.769430513E1 +1.478723000E3,5.629679592E1 +1.478987000E3,5.649495967E1 +1.479262000E3,5.787253729E1 +1.479512000E3,5.216150167E1 +1.479813000E3,4.948302212E1 +1.480088000E3,5.080056078E1 +1.480342000E3,4.734041467E1 +1.480601000E3,4.440736689E1 +1.480866000E3,5.120725270E1 +1.481166000E3,5.053254929E1 +1.481466000E3,5.274685420E1 +1.481724000E3,5.071521067E1 +1.481973000E3,5.225995741E1 +1.482300000E3,5.133897759E1 +1.482575000E3,5.007250383E1 +1.482845000E3,5.042400131E1 +1.483101000E3,5.258901014E1 +1.483408000E3,5.618504625E1 +1.483668000E3,5.503349900E1 +1.483933000E3,4.974702245E1 +1.484194000E3,5.170781389E1 +1.484440000E3,5.072340799E1 +1.484707000E3,5.947536199E1 +1.485018000E3,5.467515596E1 +1.485306000E3,6.085614245E1 +1.485656000E3,5.990152864E1 +1.485935000E3,5.602550586E1 +1.486168000E3,5.561766537E1 +1.486422000E3,5.350876804E1 +1.486701000E3,5.699979875E1 +1.486960000E3,5.177464585E1 +1.487207000E3,5.249766501E1 +1.487486000E3,5.285366750E1 +1.487751000E3,5.316768095E1 +1.488002000E3,4.876639606E1 +1.488262000E3,5.179834313E1 +1.488516000E3,4.991892364E1 +1.488812000E3,5.156353661E1 +1.489125000E3,5.341434219E1 +1.489400000E3,5.426211096E1 +1.489675000E3,4.699672779E1 +1.489958000E3,5.361914521E1 +1.490219000E3,5.605827819E1 +1.490490000E3,5.089547448E1 +1.490772000E3,5.163564337E1 +1.491061000E3,5.841576784E1 +1.491309000E3,5.524417730E1 +1.491589000E3,5.450558122E1 +1.491873000E3,5.581032480E1 +1.492194000E3,5.802352567E1 +1.492448000E3,4.962366630E1 +1.492810000E3,5.873656508E1 +1.493058000E3,5.690804947E1 +1.493359000E3,5.262261274E1 +1.493674000E3,5.584655342E1 +1.493919000E3,5.542283425E1 +1.494163000E3,5.373884310E1 +1.494412000E3,5.084083433E1 +1.494678000E3,4.964027690E1 +1.494956000E3,5.125570040E1 +1.495204000E3,5.194895191E1 +1.495526000E3,4.961412488E1 +1.495784000E3,4.972405818E1 +1.496036000E3,4.777083448E1 +1.496283000E3,5.231556692E1 +1.496593000E3,5.894066851E1 +1.496842000E3,6.007182772E1 +1.497086000E3,6.003234807E1 +1.497358000E3,5.170627362E1 +1.497682000E3,5.564688341E1 +1.497937000E3,5.459086103E1 +1.498234000E3,5.654462748E1 +1.498530000E3,5.643601391E1 +1.498887000E3,5.593732695E1 +1.499182000E3,5.279859883E1 +1.499469000E3,5.063056157E1 +1.499723000E3,4.846330641E1 +1.499972000E3,5.696559719E1 +1.500236000E3,5.806291630E1 +1.500555000E3,5.485435177E1 +1.500851000E3,5.386376671E1 +1.501120000E3,5.529102258E1 +1.501400000E3,5.058415032E1 +1.501675000E3,5.420960743E1 +1.501928000E3,4.962388553E1 +1.502263000E3,5.167692375E1 +1.502567000E3,5.072695334E1 +1.502878000E3,5.319678523E1 +1.503119000E3,5.961199300E1 +1.503369000E3,5.299728366E1 +1.503631000E3,5.369404965E1 +1.503941000E3,5.426817134E1 +1.504209000E3,5.369336762E1 +1.504462000E3,5.246626497E1 +1.504724000E3,5.358557871E1 +1.505015000E3,4.957781391E1 +1.505279000E3,5.117668163E1 +1.505699000E3,5.216401891E1 +1.505963000E3,5.011348657E1 +1.506261000E3,5.259055540E1 +1.506507000E3,4.579432510E1 +1.506795000E3,4.877099475E1 +1.507032000E3,4.679595596E1 +1.507314000E3,5.136222565E1 +1.507549000E3,5.267101191E1 +1.507792000E3,5.244999525E1 +1.508074000E3,5.180561005E1 +1.508391000E3,5.030990700E1 +1.508607000E3,5.167226321E1 +1.508859000E3,5.218207738E1 +1.509151000E3,5.317725961E1 +1.509397000E3,5.318899610E1 +1.509689000E3,4.978257152E1 +1.509934000E3,5.032443800E1 +1.510228000E3,4.777293014E1 +1.510466000E3,4.646316587E1 +1.510767000E3,5.646850943E1 +1.511001000E3,5.638889819E1 +1.511293000E3,5.773758842E1 +1.511610000E3,5.580372922E1 +1.511900000E3,5.517502050E1 +1.512151000E3,5.684013484E1 +1.512393000E3,5.407249321E1 +1.512652000E3,5.725430710E1 +1.512902000E3,5.755876004E1 +1.513148000E3,5.492786930E1 +1.513404000E3,5.665177401E1 +1.513705000E3,5.675683028E1 +1.513957000E3,5.845897420E1 +1.514258000E3,5.334537973E1 +1.514488000E3,5.035361876E1 +1.514812000E3,4.886526824E1 +1.515059000E3,5.555156669E1 +1.515357000E3,5.401240780E1 +1.515600000E3,5.191330713E1 +1.515873000E3,5.158089375E1 +1.516102000E3,5.397456219E1 +1.516410000E3,5.205317520E1 +1.516679000E3,5.689433829E1 +1.516971000E3,5.397466306E1 +1.517230000E3,5.553699481E1 +1.517504000E3,5.550832571E1 +1.517763000E3,5.490604036E1 +1.518130000E3,5.129555301E1 +1.518403000E3,5.478479772E1 +1.518670000E3,5.687403653E1 +1.518921000E3,5.464295853E1 +1.519177000E3,5.713561839E1 +1.519461000E3,5.306473622E1 +1.519745000E3,5.320579073E1 +1.520002000E3,5.309385307E1 +1.520258000E3,5.058967996E1 +1.520552000E3,5.470724085E1 +1.520793000E3,5.303104936E1 +1.521156000E3,5.432496893E1 +1.521453000E3,5.594215604E1 +1.521721000E3,5.308545736E1 +1.521969000E3,5.327888421E1 +1.522220000E3,5.030915333E1 +1.522490000E3,5.230098434E1 +1.522776000E3,4.743827766E1 +1.523026000E3,5.464211349E1 +1.523327000E3,5.322537523E1 +1.523581000E3,5.154569729E1 +1.523826000E3,5.335950152E1 +1.524133000E3,5.482016506E1 +1.524417000E3,5.825411535E1 +1.524853000E3,5.879893849E1 +1.525179000E3,5.728744863E1 +1.525433000E3,5.737571640E1 +1.525696000E3,5.681107869E1 +1.525950000E3,5.695921586E1 +1.526210000E3,5.455429607E1 +1.526487000E3,5.808007225E1 +1.526729000E3,5.500512440E1 +1.527042000E3,5.476260812E1 +1.527339000E3,5.849962899E1 +1.527579000E3,5.719021529E1 +1.527910000E3,5.422226824E1 +1.528160000E3,5.266147572E1 +1.528411000E3,5.030747323E1 +1.528675000E3,5.057502492E1 +1.528920000E3,5.365292462E1 +1.529175000E3,5.444435151E1 +1.529423000E3,5.586906556E1 +1.529732000E3,5.808239082E1 +1.530030000E3,5.492304678E1 +1.530283000E3,5.727734117E1 +1.530542000E3,5.518682809E1 +1.530805000E3,5.838179726E1 +1.531133000E3,5.619103982E1 +1.531448000E3,5.705771680E1 +1.531738000E3,5.605732573E1 +1.531987000E3,5.497746164E1 +1.532293000E3,5.570350387E1 +1.532602000E3,5.687942595E1 +1.532873000E3,5.590365459E1 +1.533132000E3,5.379832162E1 +1.533387000E3,5.951317374E1 +1.533654000E3,5.728034638E1 +1.533915000E3,5.755019099E1 +1.534163000E3,5.625336618E1 +1.534512000E3,5.560455999E1 +1.534783000E3,5.186395468E1 +1.535086000E3,6.018952062E1 +1.535379000E3,5.360739703E1 +1.535619000E3,5.637744941E1 +1.535916000E3,5.710534601E1 +1.536153000E3,5.751101039E1 +1.536449000E3,5.888699469E1 +1.536688000E3,5.900809640E1 +1.536983000E3,5.539354346E1 +1.537218000E3,5.212761926E1 +1.537514000E3,6.113968309E1 +1.537773000E3,5.789795306E1 +1.538038000E3,6.065119472E1 +1.538356000E3,5.715251587E1 +1.538607000E3,5.728294892E1 +1.538911000E3,5.939537878E1 +1.539175000E3,5.879010449E1 +1.539417000E3,6.007594674E1 +1.539661000E3,5.983742076E1 +1.539908000E3,6.299497704E1 +1.540182000E3,6.042347696E1 +1.540457000E3,5.844914903E1 +1.540758000E3,5.775362746E1 +1.541037000E3,5.216165265E1 +1.541334000E3,5.255584969E1 +1.541593000E3,5.278098471E1 +1.541846000E3,5.581770981E1 +1.542092000E3,5.736301867E1 +1.542389000E3,5.733951694E1 +1.542623000E3,5.674705381E1 +1.542880000E3,5.506043774E1 +1.543125000E3,5.404728252E1 +1.543453000E3,5.428884791E1 +1.543732000E3,5.547580162E1 +1.544085000E3,5.471747417E1 +1.544346000E3,5.496243571E1 +1.544613000E3,5.288395526E1 +1.544860000E3,5.036194227E1 +1.545111000E3,5.124283852E1 +1.545413000E3,5.731432515E1 +1.545687000E3,5.663908688E1 +1.545955000E3,5.741659811E1 +1.546253000E3,5.084604561E1 +1.546502000E3,5.163330463E1 +1.546772000E3,4.777378739E1 +1.547025000E3,5.200725426E1 +1.547353000E3,5.049690945E1 +1.547625000E3,5.284766124E1 +1.547924000E3,5.396462244E1 +1.548148000E3,5.375524192E1 +1.548403000E3,5.670544075E1 +1.548716000E3,5.332369727E1 +1.548963000E3,5.544219871E1 +1.549238000E3,5.323430806E1 +1.549471000E3,5.180674965E1 +1.549727000E3,5.329467652E1 +1.550023000E3,5.080742485E1 +1.550310000E3,5.026906170E1 +1.550639000E3,5.582908231E1 +1.550905000E3,5.331150300E1 +1.551172000E3,5.186910180E1 +1.551471000E3,5.624561668E1 +1.551739000E3,5.555744845E1 +1.552012000E3,5.944044312E1 +1.552264000E3,6.002272858E1 +1.552531000E3,5.816546804E1 +1.552850000E3,5.936846960E1 +1.553097000E3,5.514794057E1 +1.553401000E3,5.160130424E1 +1.553757000E3,5.107783990E1 +1.554023000E3,5.871375450E1 +1.554276000E3,5.617325190E1 +1.554544000E3,5.736189521E1 +1.554800000E3,5.317828333E1 +1.555051000E3,5.715279916E1 +1.555321000E3,5.726931658E1 +1.555563000E3,5.567771069E1 +1.555823000E3,5.156101336E1 +1.556126000E3,5.688446569E1 +1.556378000E3,6.074118939E1 +1.556642000E3,5.974958265E1 +1.556918000E3,5.702757711E1 +1.557208000E3,5.874442787E1 +1.557457000E3,5.795683904E1 +1.557722000E3,6.039916355E1 +1.558025000E3,5.662755924E1 +1.558320000E3,5.332514547E1 +1.558595000E3,6.059700286E1 +1.558850000E3,5.775207016E1 +1.559098000E3,6.106988435E1 +1.559349000E3,6.039494527E1 +1.559644000E3,5.672405799E1 +1.559889000E3,5.814375710E1 +1.560135000E3,6.159401746E1 +1.560480000E3,5.397583636E1 +1.560770000E3,5.291692280E1 +1.561026000E3,5.439035965E1 +1.561320000E3,5.553984968E1 +1.561619000E3,5.808332247E1 +1.561927000E3,5.744100555E1 +1.562191000E3,5.636250023E1 +1.562451000E3,6.055150308E1 +1.562703000E3,5.624161562E1 +1.562979000E3,5.401048000E1 +1.563233000E3,5.588901558E1 +1.563595000E3,6.020828902E1 +1.563855000E3,6.586197618E1 +1.564143000E3,5.744692826E1 +1.564421000E3,5.175273280E1 +1.564681000E3,5.584828423E1 +1.564939000E3,5.622472521E1 +1.565190000E3,5.419184381E1 +1.565447000E3,4.818775863E1 +1.565701000E3,5.443344746E1 +1.565956000E3,4.960344337E1 +1.566224000E3,6.289868185E1 +1.566469000E3,6.499026885E1 +1.566794000E3,6.277031329E1 +1.567086000E3,5.336636778E1 +1.567405000E3,5.867761918E1 +1.567644000E3,5.135518394E1 +1.567909000E3,5.665720126E1 +1.568204000E3,5.915910399E1 +1.568455000E3,5.687790668E1 +1.568730000E3,5.815647569E1 +1.568976000E3,5.595761669E1 +1.569238000E3,5.367288589E1 +1.569491000E3,4.954593185E1 +1.569752000E3,5.199120702E1 +1.570099000E3,5.857172858E1 +1.570354000E3,5.533510860E1 +1.570614000E3,5.615291914E1 +1.570871000E3,4.816531300E1 +1.571136000E3,4.597509459E1 +1.571387000E3,5.454256971E1 +1.571722000E3,5.262076426E1 +1.572010000E3,5.108681545E1 +1.572285000E3,5.269091247E1 +1.572547000E3,4.898785412E1 +1.572807000E3,4.867008841E1 +1.573066000E3,5.306545801E1 +1.573313000E3,5.092331160E1 +1.573694000E3,5.549117670E1 +1.574009000E3,5.304099104E1 +1.574279000E3,5.377011563E1 +1.574520000E3,5.244694975E1 +1.574770000E3,5.542353961E1 +1.575031000E3,5.327330735E1 +1.575319000E3,5.123065406E1 +1.575617000E3,5.429517947E1 +1.575867000E3,5.443507599E1 +1.576132000E3,5.273613947E1 +1.576382000E3,5.717979407E1 +1.576705000E3,5.184816589E1 +1.576955000E3,4.851208329E1 +1.577250000E3,4.976440939E1 +1.577493000E3,5.236737582E1 +1.577737000E3,5.414723297E1 +1.577998000E3,5.490706774E1 +1.578342000E3,5.591011545E1 +1.578650000E3,5.689754115E1 +1.578906000E3,5.680987850E1 +1.579148000E3,5.379415708E1 +1.579394000E3,5.844713665E1 +1.579644000E3,4.927798375E1 +1.580006000E3,5.263100090E1 +1.580294000E3,5.410513055E1 +1.580548000E3,5.541047194E1 +1.580801000E3,5.058665778E1 +1.581070000E3,5.191468462E1 +1.581349000E3,4.623838572E1 +1.581601000E3,4.883886927E1 +1.581851000E3,4.951159763E1 +1.582152000E3,5.372806241E1 +1.582461000E3,4.077427406E1 +1.582742000E3,4.089897224E1 +1.582967000E3,4.661834708E1 +1.583330000E3,4.498181641E1 +1.583574000E3,4.413204165E1 +1.583835000E3,4.830731952E1 +1.584102000E3,5.133890730E1 +1.584385000E3,5.327819620E1 +1.584689000E3,5.148788947E1 +1.584935000E3,5.259351261E1 +1.585217000E3,5.210912674E1 +1.585449000E3,5.375523399E1 +1.585710000E3,5.030792675E1 +1.585957000E3,5.116594607E1 +1.586271000E3,5.729332409E1 +1.586601000E3,5.372439258E1 +1.586868000E3,5.283683191E1 +1.587111000E3,5.261490358E1 +1.587371000E3,5.394382083E1 +1.587617000E3,5.362104804E1 +1.587861000E3,5.192909002E1 +1.588111000E3,5.534291684E1 +1.588356000E3,5.529045875E1 +1.588616000E3,5.723903943E1 +1.588878000E3,5.769467674E1 +1.589116000E3,5.686991669E1 +1.589367000E3,5.472851050E1 +1.589709000E3,5.509501284E1 +1.589971000E3,6.218794924E1 +1.590276000E3,5.544714813E1 +1.590522000E3,5.587492513E1 +1.590770000E3,6.310127100E1 +1.591031000E3,6.016601681E1 +1.591331000E3,5.868635044E1 +1.591588000E3,5.739907262E1 +1.591847000E3,5.500154159E1 +1.592105000E3,5.382353142E1 +1.592358000E3,5.235465349E1 +1.592660000E3,5.432444683E1 +1.592979000E3,5.583837344E1 +1.593280000E3,5.890777444E1 +1.593531000E3,6.247008348E1 +1.593777000E3,5.524440051E1 +1.594082000E3,6.039849382E1 +1.594376000E3,5.779880973E1 +1.594616000E3,6.006977904E1 +1.594916000E3,6.157791897E1 +1.595158000E3,5.727348505E1 +1.595456000E3,6.219777130E1 +1.595702000E3,6.333776727E1 +1.596011000E3,6.315243887E1 +1.596287000E3,5.622487117E1 +1.596582000E3,4.999384026E1 +1.596838000E3,6.052096287E1 +1.597136000E3,5.730636753E1 +1.597383000E3,5.672770046E1 +1.597632000E3,5.282894107E1 +1.597943000E3,5.609826115E1 +1.598240000E3,5.950608691E1 +1.598483000E3,5.262580449E1 +1.598777000E3,5.638403375E1 +1.599039000E3,5.695994656E1 +1.599354000E3,5.595638462E1 +1.599677000E3,5.456948793E1 +1.599955000E3,5.641745933E1 +1.600254000E3,5.373490010E1 +1.600541000E3,5.613295480E1 +1.600824000E3,5.295628543E1 +1.601071000E3,5.036371368E1 +1.601313000E3,5.734560753E1 +1.601585000E3,5.869799540E1 +1.601832000E3,5.689867309E1 +1.602079000E3,5.521901034E1 +1.602376000E3,5.958743796E1 +1.602630000E3,5.697555749E1 +1.602881000E3,6.067520996E1 +1.603136000E3,6.296730837E1 +1.603381000E3,6.302345663E1 +1.603674000E3,5.614231839E1 +1.603920000E3,5.471880748E1 +1.604179000E3,6.025548138E1 +1.604432000E3,5.848975602E1 +1.604677000E3,6.051353275E1 +1.604988000E3,6.061163824E1 +1.605287000E3,5.127173554E1 +1.605535000E3,5.271948405E1 +1.605890000E3,5.457177629E1 +1.606143000E3,5.047420148E1 +1.606392000E3,5.197178768E1 +1.606684000E3,5.635777628E1 +1.606927000E3,5.691931577E1 +1.607165000E3,5.135114371E1 +1.607440000E3,5.173034620E1 +1.607734000E3,5.786109434E1 +1.607974000E3,5.620528212E1 +1.608236000E3,5.432552885E1 +1.608507000E3,5.036034087E1 +1.608763000E3,4.872303481E1 +1.609123000E3,5.516764205E1 +1.609377000E3,5.867465981E1 +1.609624000E3,5.634077767E1 +1.609869000E3,5.153316916E1 +1.610150000E3,5.212022412E1 +1.610428000E3,5.727395868E1 +1.610681000E3,5.443759521E1 +1.610944000E3,5.599199613E1 +1.611242000E3,5.709063131E1 +1.611495000E3,5.747461955E1 +1.611762000E3,5.445378087E1 +1.612040000E3,5.178206799E1 +1.612294000E3,5.347146008E1 +1.612548000E3,5.695533984E1 +1.612791000E3,5.852885666E1 +1.613050000E3,5.349710519E1 +1.613354000E3,5.482274130E1 +1.613598000E3,5.580201302E1 +1.613898000E3,5.533013655E1 +1.614151000E3,5.307302798E1 +1.614404000E3,5.034267096E1 +1.614651000E3,5.096368681E1 +1.614959000E3,5.358615730E1 +1.615202000E3,5.402822959E1 +1.615565000E3,5.173226008E1 +1.615815000E3,5.317238447E1 +1.616120000E3,5.490271856E1 +1.616406000E3,5.760350961E1 +1.616712000E3,5.516631401E1 +1.616950000E3,5.344247717E1 +1.617197000E3,5.105574764E1 +1.617480000E3,5.297874749E1 +1.617726000E3,5.181083735E1 +1.617978000E3,5.504462581E1 +1.618236000E3,5.652623382E1 +1.618484000E3,5.850281135E1 +1.618804000E3,5.207268405E1 +1.619061000E3,4.595989093E1 +1.619309000E3,5.832875112E1 +1.619574000E3,5.691639889E1 +1.619831000E3,5.277897330E1 +1.620092000E3,5.634285556E1 +1.620390000E3,5.782897026E1 +1.620660000E3,6.167326244E1 +1.620905000E3,5.736569246E1 +1.621145000E3,6.422841213E1 +1.621400000E3,6.037316593E1 +1.621649000E3,5.869946609E1 +1.622005000E3,6.007663283E1 +1.622308000E3,5.750286676E1 +1.622551000E3,5.315958033E1 +1.622849000E3,5.996646537E1 +1.623085000E3,6.310656156E1 +1.623382000E3,6.410911411E1 +1.623620000E3,6.559322950E1 +1.623914000E3,6.191537215E1 +1.624148000E3,6.509401862E1 +1.624441000E3,6.149444047E1 +1.624676000E3,5.887830140E1 +1.624914000E3,5.333395699E1 +1.625242000E3,5.080509527E1 +1.625531000E3,5.208999136E1 +1.625827000E3,4.936268455E1 +1.626072000E3,4.620940228E1 +1.626384000E3,4.812346411E1 +1.626678000E3,5.508818133E1 +1.626931000E3,5.929414420E1 +1.627193000E3,5.798382987E1 +1.627446000E3,5.695027340E1 +1.627690000E3,6.200547811E1 +1.627940000E3,5.895921781E1 +1.628278000E3,5.832121877E1 +1.628595000E3,5.727506493E1 +1.628914000E3,5.676841787E1 +1.629164000E3,5.904549933E1 +1.629453000E3,6.079247221E1 +1.629705000E3,5.978532207E1 +1.629973000E3,6.204876077E1 +1.630223000E3,6.278691878E1 +1.630527000E3,5.775584326E1 +1.630780000E3,5.715423799E1 +1.631076000E3,5.993810238E1 +1.631416000E3,5.945816984E1 +1.631690000E3,5.911038375E1 +1.631989000E3,6.401318161E1 +1.632251000E3,6.288325429E1 +1.632577000E3,6.142114348E1 +1.632857000E3,6.027735545E1 +1.633125000E3,6.058800698E1 +1.633410000E3,6.197295377E1 +1.633713000E3,5.649410931E1 +1.633983000E3,5.349526422E1 +1.634267000E3,5.160473432E1 +1.634550000E3,5.471426263E1 +1.634881000E3,5.381566790E1 +1.635145000E3,5.592472168E1 +1.635394000E3,5.502963456E1 +1.635636000E3,5.458091777E1 +1.635914000E3,5.361113418E1 +1.636211000E3,5.972112366E1 +1.636510000E3,6.134956919E1 +1.636770000E3,6.291498703E1 +1.637018000E3,6.051799303E1 +1.637272000E3,5.800319143E1 +1.637535000E3,6.099184952E1 +1.637791000E3,6.192072936E1 +1.638191000E3,5.592689657E1 +1.638462000E3,5.015193522E1 +1.638759000E3,5.662906295E1 +1.638997000E3,6.189212385E1 +1.639312000E3,5.656112303E1 +1.639618000E3,5.827187766E1 +1.639922000E3,5.894515280E1 +1.640188000E3,5.379936676E1 +1.640446000E3,5.498271927E1 +1.640705000E3,5.883708769E1 +1.641003000E3,5.515786146E1 +1.641329000E3,5.323855564E1 +1.641593000E3,5.000482182E1 +1.641876000E3,5.182077324E1 +1.642101000E3,5.319082569E1 +1.642344000E3,6.611850928E1 +1.642626000E3,5.190424983E1 +1.642867000E3,5.081734830E1 +1.643118000E3,5.711045841E1 +1.643458000E3,5.520016906E1 +1.643723000E3,5.247062228E1 +1.643997000E3,5.309157546E1 +1.644256000E3,5.339769460E1 +1.644621000E3,5.982216134E1 +1.644883000E3,5.915424673E1 +1.645133000E3,5.849263499E1 +1.645426000E3,5.826666974E1 +1.645723000E3,5.673329902E1 +1.645972000E3,5.580417722E1 +1.646244000E3,5.457004449E1 +1.646473000E3,5.835958867E1 +1.646716000E3,5.599398637E1 +1.646958000E3,5.928075116E1 +1.647232000E3,5.394053714E1 +1.647507000E3,5.853879118E1 +1.647858000E3,5.674494648E1 +1.648113000E3,5.640074652E1 +1.648414000E3,5.694867796E1 +1.648656000E3,5.573466688E1 +1.648962000E3,5.556104957E1 +1.649254000E3,5.770712773E1 +1.649548000E3,5.765349227E1 +1.649790000E3,5.583875333E1 +1.650054000E3,6.321152276E1 +1.650306000E3,5.966047080E1 +1.650600000E3,5.502015578E1 +1.650872000E3,5.066616477E1 +1.651172000E3,5.442335496E1 +1.651440000E3,5.956947456E1 +1.651736000E3,5.798320450E1 +1.651979000E3,5.739040713E1 +1.652228000E3,5.803662120E1 +1.652491000E3,6.146613872E1 +1.652750000E3,5.929116619E1 +1.653021000E3,5.936282359E1 +1.653288000E3,5.853226920E1 +1.653570000E3,5.954415072E1 +1.653872000E3,5.749576278E1 +1.654250000E3,5.567111200E1 +1.654518000E3,6.059415807E1 +1.654812000E3,5.855300274E1 +1.655081000E3,5.797601107E1 +1.655350000E3,6.029475669E1 +1.655647000E3,5.264118678E1 +1.655893000E3,5.715075800E1 +1.656153000E3,5.787679223E1 +1.656407000E3,6.038334743E1 +1.656655000E3,6.038245752E1 +1.656912000E3,5.475945603E1 +1.657171000E3,5.661674174E1 +1.657473000E3,5.618877186E1 +1.657717000E3,5.712918740E1 +1.657972000E3,5.834783502E1 +1.658283000E3,6.198115012E1 +1.658526000E3,5.639977894E1 +1.658788000E3,5.416850689E1 +1.659089000E3,5.679686188E1 +1.659335000E3,5.697270686E1 +1.659619000E3,5.371836804E1 +1.659873000E3,6.082252986E1 +1.660120000E3,6.285201132E1 +1.660416000E3,6.088574857E1 +1.660728000E3,6.109109391E1 +1.661004000E3,5.861240224E1 +1.661283000E3,6.123850168E1 +1.661519000E3,5.849447684E1 +1.661821000E3,5.472352136E1 +1.662065000E3,5.502625911E1 +1.662312000E3,5.606436387E1 +1.662565000E3,5.546236927E1 +1.662845000E3,6.075823181E1 +1.663075000E3,5.951357638E1 +1.663350000E3,5.956681026E1 +1.663575000E3,5.780116333E1 +1.663928000E3,6.184122024E1 +1.664178000E3,5.626291699E1 +1.664419000E3,5.635545931E1 +1.664671000E3,5.487242490E1 +1.664936000E3,5.392872477E1 +1.665237000E3,5.658170902E1 +1.665476000E3,5.449322435E1 +1.665752000E3,5.111063749E1 +1.665997000E3,5.288359358E1 +1.666249000E3,5.825102048E1 +1.666508000E3,6.087585373E1 +1.666750000E3,5.822210598E1 +1.667110000E3,6.320270923E1 +1.667355000E3,5.563170163E1 +1.667628000E3,5.240635194E1 +1.667875000E3,5.485055122E1 +1.668144000E3,5.590209292E1 +1.668402000E3,5.750031923E1 +1.668648000E3,5.301598344E1 +1.668896000E3,5.208077776E1 +1.669157000E3,5.024112467E1 +1.669414000E3,5.530220423E1 +1.669710000E3,5.585178295E1 +1.669955000E3,5.443268015E1 +1.670292000E3,5.292974908E1 +1.670566000E3,5.501741168E1 +1.670818000E3,5.190433464E1 +1.671077000E3,5.602388651E1 +1.671384000E3,5.384205522E1 +1.671688000E3,5.355394771E1 +1.671956000E3,4.896600257E1 +1.672212000E3,4.457728928E1 +1.672483000E3,5.407780485E1 +1.672726000E3,5.808535163E1 +1.672991000E3,5.497589856E1 +1.673269000E3,5.816061182E1 +1.673625000E3,5.457220472E1 +1.673896000E3,5.852786772E1 +1.674165000E3,5.615855966E1 +1.674439000E3,5.901141794E1 +1.674702000E3,5.821771493E1 +1.675040000E3,5.533746886E1 +1.675330000E3,5.469332456E1 +1.675631000E3,5.895976057E1 +1.675867000E3,5.565047570E1 +1.676161000E3,5.342216333E1 +1.676431000E3,5.339304237E1 +1.676716000E3,5.196130631E1 +1.677075000E3,5.500129023E1 +1.677346000E3,5.649474234E1 +1.677614000E3,5.620691351E1 +1.677867000E3,5.756400488E1 +1.678112000E3,5.571225073E1 +1.678362000E3,6.171466353E1 +1.678655000E3,5.523245256E1 +1.678909000E3,5.780473196E1 +1.679167000E3,5.918101801E1 +1.679536000E3,5.449831587E1 +1.679788000E3,5.278747036E1 +1.680072000E3,5.502423006E1 +1.680392000E3,5.603218813E1 +1.680667000E3,5.681691969E1 +1.680917000E3,5.574952817E1 +1.681227000E3,5.747793831E1 +1.681510000E3,5.831554727E1 +1.681811000E3,5.823344802E1 +1.682073000E3,5.677197169E1 +1.682402000E3,5.423243511E1 +1.682746000E3,5.568639423E1 +1.683007000E3,5.601571559E1 +1.683297000E3,5.788588795E1 +1.683563000E3,5.178162942E1 +1.683805000E3,5.244727762E1 +1.684102000E3,5.504021082E1 +1.684342000E3,5.312145782E1 +1.684637000E3,5.266466104E1 +1.684875000E3,5.430143327E1 +1.685171000E3,5.731848010E1 +1.685409000E3,5.314967575E1 +1.685703000E3,5.210480680E1 +1.685940000E3,5.447962472E1 +1.686242000E3,5.671930258E1 +1.686480000E3,5.298653153E1 +1.686837000E3,5.390672385E1 +1.687083000E3,5.256535993E1 +1.687387000E3,5.295433262E1 +1.687686000E3,4.693434793E1 +1.687930000E3,5.264001548E1 +1.688191000E3,4.696703102E1 +1.688514000E3,5.290693761E1 +1.688768000E3,5.572289252E1 +1.689025000E3,5.629476293E1 +1.689331000E3,5.221395629E1 +1.689585000E3,5.553268928E1 +1.689905000E3,5.392885939E1 +1.690136000E3,5.613018872E1 +1.690432000E3,5.323144022E1 +1.690690000E3,5.426457319E1 +1.690988000E3,5.869511223E1 +1.691244000E3,5.724931575E1 +1.691548000E3,5.702890727E1 +1.691819000E3,5.957894946E1 +1.692068000E3,5.833323285E1 +1.692367000E3,5.920896731E1 +1.692598000E3,5.809066040E1 +1.692847000E3,5.683194919E1 +1.693218000E3,5.880411413E1 +1.693536000E3,5.430005356E1 +1.693836000E3,5.347827494E1 +1.694082000E3,5.139526617E1 +1.694323000E3,6.486669482E1 +1.694607000E3,5.827670564E1 +1.694879000E3,5.749070135E1 +1.695112000E3,5.439297467E1 +1.695418000E3,5.591879208E1 +1.695720000E3,5.984156108E1 +1.695978000E3,5.763450389E1 +1.696238000E3,5.535113951E1 +1.696577000E3,5.468640858E1 +1.696840000E3,5.145216534E1 +1.697142000E3,5.633820526E1 +1.697434000E3,5.961813260E1 +1.697672000E3,5.761348305E1 +1.697970000E3,5.587832748E1 +1.698213000E3,5.615239979E1 +1.698514000E3,6.142159571E1 +1.698744000E3,5.868747140E1 +1.699038000E3,5.639074769E1 +1.699277000E3,5.843791784E1 +1.699602000E3,5.580904726E1 +1.699849000E3,5.188032815E1 +1.700148000E3,6.050592844E1 +1.700415000E3,5.851925341E1 +1.700742000E3,5.754370303E1 +1.700996000E3,5.792652906E1 +1.701265000E3,5.809754284E1 +1.701543000E3,5.435013872E1 +1.701827000E3,5.364293620E1 +1.702095000E3,5.742174876E1 +1.702342000E3,5.921232761E1 +1.702597000E3,5.246613397E1 +1.702852000E3,5.865178399E1 +1.703188000E3,6.209648540E1 +1.703456000E3,5.783126524E1 +1.703723000E3,6.129722089E1 +1.704021000E3,6.159059582E1 +1.704258000E3,6.290365934E1 +1.704500000E3,5.899658178E1 +1.704744000E3,5.570772177E1 +1.705020000E3,6.042975914E1 +1.705281000E3,6.063911519E1 +1.705578000E3,5.667741437E1 +1.705818000E3,5.616948640E1 +1.706065000E3,5.809228765E1 +1.706440000E3,6.194892333E1 +1.706707000E3,5.510896653E1 +1.706968000E3,5.648771637E1 +1.707226000E3,5.451026369E1 +1.707530000E3,5.655237570E1 +1.707813000E3,6.342687376E1 +1.708096000E3,5.687609223E1 +1.708345000E3,5.784030597E1 +1.708587000E3,5.696931166E1 +1.708832000E3,5.826055047E1 +1.709133000E3,6.171963981E1 +1.709444000E3,6.289993620E1 +1.709785000E3,6.196750111E1 +1.710095000E3,6.021872673E1 +1.710401000E3,5.493999514E1 +1.710645000E3,5.748920917E1 +1.710951000E3,5.990748875E1 +1.711204000E3,5.995493625E1 +1.711504000E3,5.608393688E1 +1.711807000E3,6.225697969E1 +1.712052000E3,6.005399346E1 +1.712297000E3,6.276583246E1 +1.712594000E3,6.409669700E1 +1.712952000E3,5.846223798E1 +1.713249000E3,6.222377893E1 +1.713511000E3,6.179119431E1 +1.713770000E3,6.687160955E1 +1.714020000E3,6.224215114E1 +1.714281000E3,6.460780580E1 +1.714608000E3,6.323149402E1 +1.714900000E3,5.890183616E1 +1.715139000E3,6.173404899E1 +1.715438000E3,6.193562982E1 +1.715674000E3,6.231645929E1 +1.715912000E3,5.798536661E1 +1.716293000E3,5.569607438E1 +1.716537000E3,6.131866955E1 +1.716790000E3,5.896584959E1 +1.717096000E3,5.693976131E1 +1.717346000E3,5.531403594E1 +1.717631000E3,5.794989861E1 +1.717933000E3,5.594899441E1 +1.718204000E3,5.601359132E1 +1.718501000E3,5.861037671E1 +1.718741000E3,6.432265266E1 +1.719043000E3,6.182586376E1 +1.719355000E3,6.076827417E1 +1.719645000E3,5.634225228E1 +1.719943000E3,5.935070169E1 +1.720188000E3,5.856877062E1 +1.720486000E3,5.761843709E1 +1.720741000E3,5.935030376E1 +1.720985000E3,5.413194972E1 +1.721289000E3,5.939733818E1 +1.721553000E3,5.617827250E1 +1.721847000E3,5.807085988E1 +1.722091000E3,5.877044817E1 +1.722445000E3,6.593854232E1 +1.722681000E3,6.027114564E1 +1.722973000E3,5.866411762E1 +1.723271000E3,5.588604319E1 +1.723508000E3,5.958751798E1 +1.723800000E3,6.077290351E1 +1.724039000E3,5.722905231E1 +1.724338000E3,5.619905124E1 +1.724576000E3,5.628809107E1 +1.724876000E3,5.560357878E1 +1.725168000E3,5.447509555E1 +1.725542000E3,5.278892866E1 +1.725841000E3,4.816211457E1 +1.726139000E3,4.622333411E1 +1.726399000E3,4.728231882E1 +1.726691000E3,5.101510224E1 +1.726947000E3,4.725933617E1 +1.727273000E3,5.333398449E1 +1.727569000E3,5.518583989E1 +1.727808000E3,5.719998093E1 +1.728061000E3,5.375072532E1 +1.728352000E3,5.631849408E1 +1.728644000E3,5.232994659E1 +1.729024000E3,5.045911420E1 +1.729295000E3,4.931808913E1 +1.729541000E3,4.866846016E1 +1.729788000E3,5.127644661E1 +1.730054000E3,4.769951033E1 +1.730296000E3,5.553885299E1 +1.730573000E3,5.629080236E1 +1.730816000E3,5.218818952E1 +1.731119000E3,5.112756333E1 +1.731379000E3,5.524890032E1 +1.731688000E3,5.530134621E1 +1.731949000E3,5.451831728E1 +1.732288000E3,5.380962689E1 +1.732589000E3,5.754684503E1 +1.732833000E3,5.184401682E1 +1.733102000E3,5.011373730E1 +1.733369000E3,5.541779655E1 +1.733647000E3,5.983699601E1 +1.733886000E3,6.131428317E1 +1.734163000E3,6.052345820E1 +1.734405000E3,5.852692054E1 +1.734659000E3,5.861191265E1 +1.734933000E3,5.957936529E1 +1.735219000E3,5.639739849E1 +1.735540000E3,5.207917019E1 +1.735832000E3,4.548490451E1 +1.736112000E3,5.219897691E1 +1.736384000E3,5.618314188E1 +1.736684000E3,5.720418785E1 +1.736946000E3,5.895068629E1 +1.737213000E3,5.652216932E1 +1.737468000E3,5.796687034E1 +1.737738000E3,5.591197017E1 +1.737996000E3,5.493985473E1 +1.738236000E3,5.752137274E1 +1.738586000E3,6.041563952E1 +1.738921000E3,6.199530447E1 +1.739167000E3,5.310800091E1 +1.739430000E3,5.600574849E1 +1.739683000E3,6.494981167E1 +1.739952000E3,6.157046745E1 +1.740293000E3,6.002681302E1 +1.740611000E3,5.943541790E1 +1.740910000E3,5.731619793E1 +1.741197000E3,5.885751119E1 +1.741508000E3,5.719237093E1 +1.741767000E3,5.958897825E1 +1.742034000E3,5.543499582E1 +1.742424000E3,5.632783570E1 +1.742688000E3,5.565042743E1 +1.742946000E3,5.622883854E1 +1.743204000E3,6.327777019E1 +1.743456000E3,5.663098185E1 +1.743721000E3,5.729384715E1 +1.743966000E3,6.200582057E1 +1.744273000E3,5.107652622E1 +1.744505000E3,5.491520459E1 +1.744752000E3,5.181266373E1 +1.745004000E3,5.014115745E1 +1.745297000E3,5.338585031E1 +1.745690000E3,5.654477286E1 +1.745966000E3,5.517036116E1 +1.746219000E3,5.200430375E1 +1.746475000E3,5.963355448E1 +1.746732000E3,5.854837006E1 +1.747002000E3,5.571277949E1 +1.747293000E3,5.825116458E1 +1.747522000E3,5.673248340E1 +1.747772000E3,5.683320783E1 +1.748035000E3,5.224053713E1 +1.748289000E3,5.713452273E1 +1.748568000E3,5.539076360E1 +1.748961000E3,6.015893340E1 +1.749211000E3,5.710921188E1 +1.749460000E3,6.114476082E1 +1.749715000E3,5.648052368E1 +1.749961000E3,5.897720288E1 +1.750207000E3,5.525435431E1 +1.750521000E3,5.447453139E1 +1.750765000E3,5.883968686E1 +1.751015000E3,5.450160052E1 +1.751290000E3,5.405183560E1 +1.751522000E3,5.501343440E1 +1.751848000E3,5.586635599E1 +1.752096000E3,5.631573217E1 +1.752372000E3,5.960964241E1 +1.752637000E3,5.320710483E1 +1.752941000E3,5.848434869E1 +1.753209000E3,5.619196315E1 +1.753510000E3,5.692291103E1 +1.753774000E3,5.505374149E1 +1.754051000E3,5.721759821E1 +1.754315000E3,5.539152446E1 +1.754625000E3,5.632890174E1 +1.754919000E3,5.918851802E1 +1.755262000E3,5.807294381E1 +1.755529000E3,5.748451885E1 +1.755827000E3,6.055251826E1 +1.756067000E3,6.208050524E1 +1.756367000E3,5.991655048E1 +1.756607000E3,6.073519941E1 +1.756900000E3,5.774998130E1 +1.757144000E3,5.751173009E1 +1.757417000E3,5.299288378E1 +1.757700000E3,5.913293772E1 +1.758005000E3,5.732040664E1 +1.758269000E3,6.221202462E1 +1.758585000E3,6.285457626E1 +1.758834000E3,5.870613535E1 +1.759137000E3,5.533279687E1 +1.759391000E3,5.194643865E1 +1.759644000E3,4.891449850E1 +1.759922000E3,4.784429271E1 +1.760236000E3,5.273391136E1 +1.760503000E3,5.475616990E1 +1.760758000E3,5.640096860E1 +1.761017000E3,5.329458627E1 +1.761282000E3,4.798672737E1 +1.761535000E3,5.532988346E1 +1.761794000E3,5.189579265E1 +1.762040000E3,5.068357941E1 +1.762299000E3,5.751972157E1 +1.762578000E3,5.430434207E1 +1.762831000E3,5.331943982E1 +1.763136000E3,5.699367350E1 +1.763409000E3,5.622858108E1 +1.763658000E3,5.631559008E1 +1.763910000E3,5.738562920E1 +1.764157000E3,6.030103345E1 +1.764400000E3,5.680309722E1 +1.764695000E3,5.703631315E1 +1.765017000E3,5.682945247E1 +1.765300000E3,5.317093897E1 +1.765575000E3,5.620624417E1 +1.765832000E3,5.550075987E1 +1.766100000E3,6.321349509E1 +1.766371000E3,5.938123887E1 +1.766635000E3,6.289622107E1 +1.766898000E3,5.890101653E1 +1.767155000E3,5.928826732E1 +1.767399000E3,5.872890625E1 +1.767638000E3,6.184345237E1 +1.767877000E3,6.131073260E1 +1.768211000E3,6.085041665E1 +1.768587000E3,6.015418617E1 +1.768835000E3,5.648473324E1 +1.769119000E3,5.746059957E1 +1.769380000E3,5.608054299E1 +1.769692000E3,6.542458852E1 +1.769998000E3,6.121618195E1 +1.770281000E3,5.842785672E1 +1.770536000E3,5.763776595E1 +1.770858000E3,5.630873419E1 +1.771133000E3,5.339704361E1 +1.771378000E3,5.463873835E1 +1.771723000E3,5.659388596E1 +1.772050000E3,5.449836230E1 +1.772294000E3,5.154616724E1 +1.772537000E3,5.082603581E1 +1.772795000E3,5.334183734E1 +1.773055000E3,5.096094928E1 +1.773365000E3,5.171061147E1 +1.773612000E3,5.477281719E1 +1.773878000E3,5.060909259E1 +1.774171000E3,5.285294921E1 +1.774452000E3,5.393730531E1 +1.774725000E3,5.333400186E1 +1.774980000E3,5.285705613E1 +1.775346000E3,5.719168586E1 +1.775663000E3,5.642193929E1 +1.775908000E3,4.659059970E1 +1.776150000E3,5.521168672E1 +1.776388000E3,5.693500665E1 +1.776630000E3,6.030483668E1 +1.776910000E3,5.944095915E1 +1.777153000E3,5.708951289E1 +1.777414000E3,5.291982189E1 +1.777666000E3,5.900042024E1 +1.777935000E3,6.010949926E1 +1.778229000E3,6.009411695E1 +1.778514000E3,5.804757181E1 +1.778758000E3,5.922775473E1 +1.779011000E3,6.063545461E1 +1.779277000E3,5.950242674E1 +1.779575000E3,6.057891518E1 +1.779819000E3,6.050018223E1 +1.780115000E3,5.965583098E1 +1.780361000E3,5.651792502E1 +1.780660000E3,5.814099422E1 +1.780904000E3,5.340077797E1 +1.781203000E3,5.734973286E1 +1.781481000E3,5.846278011E1 +1.781805000E3,5.369751607E1 +1.782048000E3,5.229063054E1 +1.782299000E3,5.345996994E1 +1.782583000E3,5.724353788E1 +1.782883000E3,5.610772411E1 +1.783181000E3,5.272586700E1 +1.783423000E3,5.272075137E1 +1.783692000E3,5.495532717E1 +1.783945000E3,5.594785882E1 +1.784202000E3,5.914935612E1 +1.784483000E3,6.427791570E1 +1.784735000E3,6.185652247E1 +1.785051000E3,6.178338943E1 +1.785352000E3,6.304285312E1 +1.785598000E3,5.699176354E1 +1.785897000E3,5.705567192E1 +1.786190000E3,5.975757470E1 +1.786467000E3,6.092866408E1 +1.786714000E3,5.771726615E1 +1.786984000E3,5.434727511E1 +1.787232000E3,5.250796794E1 +1.787486000E3,5.668884634E1 +1.787813000E3,5.600600547E1 +1.788061000E3,5.162213387E1 +1.788391000E3,5.782497792E1 +1.788636000E3,5.900804565E1 +1.788935000E3,6.056317474E1 +1.789175000E3,5.749029459E1 +1.789469000E3,6.053654612E1 +1.789714000E3,5.841478287E1 +1.789988000E3,5.700130118E1 +1.790219000E3,5.562837186E1 +1.790509000E3,5.430369658E1 +1.790806000E3,5.586895515E1 +1.791048000E3,5.809725956E1 +1.791409000E3,5.552827992E1 +1.791650000E3,5.534472171E1 +1.791981000E3,5.671474363E1 +1.792227000E3,5.716453332E1 +1.792522000E3,5.844249975E1 +1.792847000E3,5.961186667E1 +1.793109000E3,5.794833541E1 +1.793437000E3,5.832360597E1 +1.793698000E3,5.996001578E1 +1.793970000E3,5.849924827E1 +1.794223000E3,5.823551411E1 +1.794488000E3,5.480450178E1 +1.794819000E3,5.715609034E1 +1.795083000E3,5.418083703E1 +1.795329000E3,5.529883425E1 +1.795587000E3,5.729455769E1 +1.795853000E3,5.358946536E1 +1.796083000E3,5.534684059E1 +1.796374000E3,5.693696454E1 +1.796630000E3,5.642610016E1 +1.796927000E3,5.692548294E1 +1.797194000E3,5.931602223E1 +1.797469000E3,5.877569790E1 +1.797716000E3,5.527135197E1 +1.798053000E3,5.904674814E1 +1.798358000E3,5.655039196E1 +1.798612000E3,5.796779928E1 +1.798921000E3,5.499199210E1 +1.799185000E3,5.693837926E1 +1.799465000E3,6.235855457E1 +1.799695000E3,6.271612813E1 +1.799964000E3,6.118271582E1 +1.800233000E3,6.171552449E1 +1.800562000E3,6.293258336E1 +1.800818000E3,5.927940855E1 +1.801077000E3,5.836879001E1 +1.801406000E3,6.182854437E1 +1.801650000E3,5.918527405E1 +1.801894000E3,6.352260837E1 +1.802163000E3,6.142940723E1 +1.802385000E3,5.867772092E1 +1.802631000E3,5.916688243E1 +1.802927000E3,5.855222781E1 +1.803228000E3,6.125789004E1 +1.803533000E3,5.839377949E1 +1.803816000E3,5.705167204E1 +1.804057000E3,5.641730344E1 +1.804362000E3,6.771092582E1 +1.804585000E3,6.036461449E1 +1.804835000E3,6.742095194E1 +1.805132000E3,6.133151855E1 +1.805443000E3,6.658554202E1 +1.805718000E3,7.095511769E1 +1.806003000E3,7.330553664E1 +1.806290000E3,6.732809523E1 +1.806566000E3,6.106403544E1 +1.806844000E3,5.830930506E1 +1.807085000E3,6.610455401E1 +1.807442000E3,5.944325189E1 +1.807800000E3,5.667454347E1 +1.808044000E3,5.560521877E1 +1.808299000E3,5.488377812E1 +1.808542000E3,5.279721650E1 +1.808789000E3,4.834692654E1 +1.809029000E3,4.661669368E1 +1.809276000E3,5.501186804E1 +1.809526000E3,5.384830085E1 +1.809820000E3,5.526588307E1 +1.810084000E3,5.900458249E1 +1.810393000E3,5.557146256E1 +1.810647000E3,5.355619280E1 +1.811023000E3,5.627924000E1 +1.811283000E3,5.384503050E1 +1.811527000E3,5.309622401E1 +1.811816000E3,5.228523776E1 +1.812070000E3,5.317657142E1 +1.812328000E3,5.813846570E1 +1.812583000E3,5.621088360E1 +1.812927000E3,5.646965227E1 +1.813191000E3,5.322001188E1 +1.813436000E3,5.451886743E1 +1.813748000E3,5.558621720E1 +1.814006000E3,5.673920724E1 +1.814328000E3,5.582855401E1 +1.814591000E3,6.044196407E1 +1.814848000E3,5.769208427E1 +1.815109000E3,6.206015086E1 +1.815391000E3,5.918173335E1 +1.815660000E3,5.779702061E1 +1.815927000E3,6.516398742E1 +1.816218000E3,5.927869783E1 +1.816546000E3,6.320256740E1 +1.816802000E3,6.296743684E1 +1.817051000E3,5.869001212E1 +1.817329000E3,5.985536664E1 +1.817620000E3,5.435607380E1 +1.817905000E3,5.721703373E1 +1.818148000E3,6.314389823E1 +1.818376000E3,6.116752308E1 +1.818622000E3,5.773611736E1 +1.818863000E3,5.892899245E1 +1.819138000E3,5.791411351E1 +1.819457000E3,6.283307798E1 +1.819719000E3,5.805008540E1 +1.819967000E3,6.383011196E1 +1.820266000E3,5.915938870E1 +1.820515000E3,5.795811325E1 +1.820871000E3,5.730398564E1 +1.821113000E3,5.907223014E1 +1.821388000E3,5.566469845E1 +1.821612000E3,5.223652040E1 +1.821858000E3,5.461868826E1 +1.822118000E3,5.731142265E1 +1.822388000E3,5.743609212E1 +1.822672000E3,6.147918645E1 +1.822919000E3,6.109678537E1 +1.823167000E3,5.654516230E1 +1.823464000E3,6.010058675E1 +1.823716000E3,6.101649690E1 +1.824046000E3,5.741898993E1 +1.824372000E3,5.654969113E1 +1.824629000E3,5.489877253E1 +1.824894000E3,6.410593751E1 +1.825142000E3,5.923267903E1 +1.825399000E3,5.977300321E1 +1.825683000E3,5.945891570E1 +1.825907000E3,5.799474745E1 +1.826162000E3,5.485933719E1 +1.826447000E3,5.848818620E1 +1.826697000E3,5.937282663E1 +1.826944000E3,5.473647239E1 +1.827319000E3,5.611635619E1 +1.827649000E3,5.704234375E1 +1.827909000E3,5.174683398E1 +1.828172000E3,5.243070089E1 +1.828457000E3,5.835398328E1 +1.828710000E3,6.579711207E1 +1.828969000E3,6.063158540E1 +1.829218000E3,5.379307224E1 +1.829474000E3,5.791005982E1 +1.829779000E3,5.908028356E1 +1.830025000E3,5.476368407E1 +1.830307000E3,5.608145667E1 +1.830627000E3,5.417323034E1 +1.830843000E3,5.295530865E1 +1.831087000E3,5.335160491E1 +1.831385000E3,5.274441298E1 +1.831622000E3,5.307477504E1 +1.831918000E3,5.606159985E1 +1.832155000E3,6.009472302E1 +1.832471000E3,5.380117674E1 +1.832766000E3,5.382200579E1 +1.833012000E3,5.176006230E1 +1.833256000E3,5.956343573E1 +1.833577000E3,5.545935306E1 +1.833826000E3,5.528541848E1 +1.834083000E3,5.436381252E1 +1.834373000E3,5.684307553E1 +1.834669000E3,5.352399464E1 +1.834910000E3,5.651184236E1 +1.835208000E3,5.432875840E1 +1.835453000E3,5.442576527E1 +1.835752000E3,5.643309342E1 +1.836022000E3,5.781174029E1 +1.836293000E3,6.110602518E1 +1.836557000E3,5.591856301E1 +1.836932000E3,5.423752303E1 +1.837200000E3,5.716598850E1 +1.837455000E3,5.511743414E1 +1.837716000E3,5.819026063E1 +1.837988000E3,5.728773522E1 +1.838236000E3,5.959151016E1 +1.838540000E3,5.810767345E1 +1.838799000E3,5.779128856E1 +1.839096000E3,6.092094761E1 +1.839361000E3,5.957871329E1 +1.839608000E3,5.838702884E1 +1.839856000E3,5.927631822E1 +1.840242000E3,5.748386760E1 +1.840516000E3,5.957609475E1 +1.840759000E3,5.688693666E1 +1.841054000E3,5.883374773E1 +1.841320000E3,5.769470339E1 +1.841597000E3,5.894509733E1 +1.841885000E3,6.032854908E1 +1.842190000E3,5.891601570E1 +1.842444000E3,5.957860612E1 +1.842691000E3,5.968229576E1 +1.842933000E3,5.829247522E1 +1.843258000E3,6.183086549E1 +1.843539000E3,6.077794792E1 +1.843765000E3,5.928253866E1 +1.844002000E3,5.782805396E1 +1.844301000E3,5.975447959E1 +1.844589000E3,6.108169982E1 +1.844825000E3,5.915565503E1 +1.845116000E3,5.981302437E1 +1.845363000E3,6.019248645E1 +1.845636000E3,6.014223773E1 +1.845861000E3,6.160258605E1 +1.846139000E3,6.002388007E1 +1.846447000E3,6.004612452E1 +1.846706000E3,5.932487324E1 +1.846979000E3,5.718424575E1 +1.847284000E3,5.712987240E1 +1.847586000E3,5.557624595E1 +1.847888000E3,5.603981815E1 +1.848146000E3,5.769591687E1 +1.848418000E3,5.526085696E1 +1.848706000E3,5.815102401E1 +1.848972000E3,5.884177354E1 +1.849226000E3,5.853138751E1 +1.849515000E3,6.156208919E1 +1.849746000E3,6.064923427E1 +1.850008000E3,6.590305387E1 +1.850338000E3,5.853444981E1 +1.850640000E3,5.717447935E1 +1.850942000E3,5.680568615E1 +1.851242000E3,5.928468331E1 +1.851504000E3,5.798449444E1 +1.851757000E3,5.802619768E1 +1.852033000E3,5.998338312E1 +1.852296000E3,5.683616594E1 +1.852550000E3,5.692327884E1 +1.852886000E3,5.878610583E1 +1.853162000E3,5.538467470E1 +1.853432000E3,5.437085520E1 +1.853738000E3,5.469765317E1 +1.854038000E3,5.790268038E1 +1.854297000E3,5.836787866E1 +1.854582000E3,6.160807622E1 +1.854881000E3,5.878613196E1 +1.855158000E3,6.200103199E1 +1.855387000E3,6.087479870E1 +1.855688000E3,6.028304140E1 +1.855930000E3,6.159527875E1 +1.856226000E3,6.082174354E1 +1.856487000E3,5.932314061E1 +1.856744000E3,5.976570730E1 +1.857001000E3,5.473753247E1 +1.857299000E3,5.954612483E1 +1.857556000E3,6.052388497E1 +1.857849000E3,5.848282940E1 +1.858086000E3,5.879664566E1 +1.858384000E3,5.864589973E1 +1.858677000E3,5.659242719E1 +1.858917000E3,5.683870091E1 +1.859195000E3,5.582498919E1 +1.859427000E3,6.011873423E1 +1.859676000E3,5.796702396E1 +1.859911000E3,5.928400715E1 +1.860149000E3,5.826876733E1 +1.860396000E3,6.038481253E1 +1.860680000E3,6.030085568E1 +1.860944000E3,5.890166619E1 +1.861209000E3,6.654379171E1 +1.861519000E3,6.016187265E1 +1.861755000E3,6.139297542E1 +1.862049000E3,6.289106669E1 +1.862388000E3,5.872946965E1 +1.862675000E3,5.800836625E1 +1.862993000E3,5.701819685E1 +1.863248000E3,5.488359846E1 +1.863519000E3,5.747446133E1 +1.863768000E3,5.996388232E1 +1.864087000E3,5.686047813E1 +1.864334000E3,5.935760915E1 +1.864635000E3,6.438349972E1 +1.864894000E3,6.008599590E1 +1.865205000E3,5.995474236E1 +1.865502000E3,6.596906108E1 +1.865837000E3,6.091064347E1 +1.866114000E3,5.885056970E1 +1.866411000E3,6.474486832E1 +1.866666000E3,5.888758286E1 +1.866964000E3,6.138447683E1 +1.867211000E3,6.032596684E1 +1.867482000E3,5.848476935E1 +1.867736000E3,5.631330849E1 +1.867989000E3,5.927138373E1 +1.868246000E3,5.817171672E1 +1.868499000E3,5.358065381E1 +1.868763000E3,5.500264039E1 +1.869129000E3,5.663946315E1 +1.869384000E3,5.601392416E1 +1.869636000E3,5.640732154E1 +1.869947000E3,5.320213962E1 +1.870207000E3,4.907811811E1 +1.870470000E3,5.784153600E1 +1.870743000E3,5.988355074E1 +1.871011000E3,5.973830135E1 +1.871253000E3,5.769679044E1 +1.871519000E3,5.395770126E1 +1.871765000E3,5.751088186E1 +1.872011000E3,5.342275719E1 +1.872301000E3,5.638616310E1 +1.872563000E3,5.124369984E1 +1.872821000E3,5.357036185E1 +1.873129000E3,5.529809524E1 +1.873386000E3,5.442720524E1 +1.873650000E3,5.306298792E1 +1.873937000E3,5.703507672E1 +1.874184000E3,5.835246426E1 +1.874444000E3,5.638184247E1 +1.874707000E3,5.201779537E1 +1.874972000E3,5.217149520E1 +1.875244000E3,5.757612416E1 +1.875577000E3,5.387788750E1 +1.875865000E3,5.607108884E1 +1.876149000E3,5.692352283E1 +1.876407000E3,5.577296536E1 +1.876687000E3,5.259836493E1 +1.876982000E3,5.467571766E1 +1.877215000E3,5.256317748E1 +1.877521000E3,5.522593862E1 +1.877775000E3,5.432669245E1 +1.878036000E3,5.734031668E1 +1.878314000E3,6.027566119E1 +1.878587000E3,5.567003578E1 +1.878912000E3,5.307720644E1 +1.879176000E3,5.659939353E1 +1.879425000E3,5.110556861E1 +1.879723000E3,5.673190580E1 +1.879969000E3,5.437112204E1 +1.880274000E3,5.433297742E1 +1.880576000E3,5.585075865E1 +1.880875000E3,5.657006430E1 +1.881117000E3,5.701623858E1 +1.881424000E3,5.749679466E1 +1.881673000E3,5.623079196E1 +1.881986000E3,5.545187468E1 +1.882329000E3,5.781610131E1 +1.882611000E3,5.432916720E1 +1.882882000E3,4.940287270E1 +1.883127000E3,5.866223377E1 +1.883391000E3,5.654564177E1 +1.883644000E3,5.888782218E1 +1.883889000E3,5.586307703E1 +1.884148000E3,5.930725555E1 +1.884413000E3,5.963840788E1 +1.884660000E3,5.928611951E1 +1.884926000E3,5.621968819E1 +1.885181000E3,5.811455305E1 +1.885457000E3,5.585646129E1 +1.885714000E3,5.989591718E1 +1.885968000E3,6.058402104E1 +1.886267000E3,5.972100226E1 +1.886517000E3,6.220704457E1 +1.886832000E3,6.037773435E1 +1.887106000E3,6.039308032E1 +1.887385000E3,6.223647696E1 +1.887617000E3,5.854088114E1 +1.887876000E3,6.248517888E1 +1.888128000E3,6.222318884E1 +1.888437000E3,6.070320114E1 +1.888777000E3,5.817372188E1 +1.889076000E3,5.382250608E1 +1.889369000E3,7.004593531E1 +1.889616000E3,6.094415751E1 +1.889913000E3,5.455584628E1 +1.890163000E3,5.387250795E1 +1.890418000E3,5.219742496E1 +1.890714000E3,5.070715955E1 +1.890961000E3,5.362651533E1 +1.891207000E3,5.046817004E1 +1.891453000E3,5.129339201E1 +1.891764000E3,4.856730286E1 +1.892053000E3,5.220705734E1 +1.892321000E3,5.401068171E1 +1.892582000E3,5.109746146E1 +1.892834000E3,5.412675897E1 +1.893090000E3,5.347014573E1 +1.893340000E3,5.092720593E1 +1.893620000E3,5.341316175E1 +1.893886000E3,4.870918930E1 +1.894142000E3,4.929590175E1 +1.894389000E3,4.686294330E1 +1.894692000E3,5.100486031E1 +1.894995000E3,5.087478993E1 +1.895328000E3,4.940372977E1 +1.895606000E3,5.362468443E1 +1.895919000E3,5.608826750E1 +1.896241000E3,5.628756413E1 +1.896497000E3,5.817843169E1 +1.896749000E3,5.809119715E1 +1.897054000E3,5.469613872E1 +1.897287000E3,5.437807476E1 +1.897582000E3,5.794761863E1 +1.897897000E3,6.027023965E1 +1.898145000E3,5.913564460E1 +1.898511000E3,5.510014788E1 +1.898752000E3,5.499817732E1 +1.898999000E3,5.569220222E1 +1.899294000E3,5.368447548E1 +1.899547000E3,5.912109227E1 +1.899841000E3,6.076259223E1 +1.900104000E3,6.153129043E1 +1.900349000E3,5.679462536E1 +1.900634000E3,5.721135074E1 +1.900927000E3,5.674745728E1 +1.901166000E3,5.556227882E1 +1.901462000E3,4.994603734E1 +1.901841000E3,5.122656475E1 +1.902183000E3,5.127903645E1 +1.902436000E3,5.042064547E1 +1.902695000E3,5.425673681E1 +1.902998000E3,5.484388956E1 +1.903228000E3,5.322356297E1 +1.903483000E3,5.161093724E1 +1.903730000E3,5.302125687E1 +1.904019000E3,5.241958307E1 +1.904307000E3,5.116604316E1 +1.904614000E3,5.319513233E1 +1.904991000E3,5.530482451E1 +1.905243000E3,5.829713614E1 +1.905528000E3,4.891404960E1 +1.905774000E3,5.408250868E1 +1.906083000E3,5.272747143E1 +1.906381000E3,5.216068921E1 +1.906624000E3,5.292203291E1 +1.906885000E3,5.243548019E1 +1.907149000E3,4.981562618E1 +1.907448000E3,5.500279348E1 +1.907742000E3,5.481190601E1 +1.907999000E3,5.369800103E1 +1.908315000E3,6.390197571E1 +1.908579000E3,6.517990141E1 +1.908825000E3,5.822949910E1 +1.909064000E3,5.655728640E1 +1.909356000E3,5.292186662E1 +1.909600000E3,5.069372058E1 +1.909895000E3,5.368100654E1 +1.910138000E3,5.616508462E1 +1.910432000E3,6.285923815E1 +1.910670000E3,6.254266196E1 +1.910979000E3,5.628599605E1 +1.911260000E3,5.616383984E1 +1.911482000E3,5.074231882E1 +1.911728000E3,5.398858859E1 +1.911977000E3,5.585565083E1 +1.912237000E3,5.777112626E1 +1.912532000E3,6.036032129E1 +1.912783000E3,6.077032608E1 +1.913052000E3,5.839282786E1 +1.913316000E3,5.397912726E1 +1.913575000E3,5.582771928E1 +1.913848000E3,5.579334158E1 +1.914143000E3,5.778281485E1 +1.914450000E3,5.783459906E1 +1.914713000E3,6.199387267E1 +1.914943000E3,6.173706737E1 +1.915185000E3,5.621060236E1 +1.915433000E3,5.563784893E1 +1.915692000E3,5.470990272E1 +1.915951000E3,5.469960060E1 +1.916217000E3,6.171536544E1 +1.916470000E3,5.862130066E1 +1.916777000E3,5.839467924E1 +1.917028000E3,5.552209731E1 +1.917324000E3,5.763067987E1 +1.917687000E3,5.981653815E1 +1.917967000E3,5.790518789E1 +1.918210000E3,5.220287871E1 +1.918457000E3,5.707286116E1 +1.918759000E3,5.657529642E1 +1.918997000E3,6.000130629E1 +1.919241000E3,5.708419446E1 +1.919496000E3,5.749223221E1 +1.919768000E3,5.843781753E1 +1.920074000E3,5.671929683E1 +1.920373000E3,5.881070992E1 +1.920621000E3,5.603223824E1 +1.920956000E3,6.053511488E1 +1.921216000E3,5.525745837E1 +1.921476000E3,6.186721324E1 +1.921723000E3,6.214292360E1 +1.922025000E3,5.857206109E1 +1.922320000E3,5.934438900E1 +1.922561000E3,6.077867207E1 +1.922860000E3,5.578255978E1 +1.923099000E3,5.723807446E1 +1.923347000E3,5.785786452E1 +1.923636000E3,6.037753633E1 +1.923892000E3,6.106459696E1 +1.924223000E3,5.873119773E1 +1.924511000E3,5.862235861E1 +1.924814000E3,5.732521131E1 +1.925070000E3,5.161553090E1 +1.925373000E3,5.243351685E1 +1.925626000E3,5.041805469E1 +1.925919000E3,5.543714980E1 +1.926175000E3,5.338657816E1 +1.926425000E3,5.616854022E1 +1.926695000E3,5.699328540E1 +1.926965000E3,5.787312270E1 +1.927305000E3,5.558473925E1 +1.927614000E3,5.927685087E1 +1.927880000E3,6.254706193E1 +1.928125000E3,6.079427969E1 +1.928390000E3,5.412440784E1 +1.928634000E3,5.441834540E1 +1.928928000E3,5.220486428E1 +1.929215000E3,5.210908233E1 +1.929515000E3,5.352367419E1 +1.929766000E3,5.356350702E1 +1.930022000E3,5.184851991E1 +1.930322000E3,5.311742835E1 +1.930607000E3,5.453786592E1 +1.930870000E3,5.814140937E1 +1.931155000E3,5.779656646E1 +1.931440000E3,5.488757891E1 +1.931727000E3,5.385182390E1 +1.931981000E3,5.705491580E1 +1.932229000E3,5.576165296E1 +1.932491000E3,5.781333383E1 +1.932730000E3,5.616780300E1 +1.932971000E3,5.400230043E1 +1.933232000E3,5.518627884E1 +1.933510000E3,5.211300688E1 +1.933795000E3,5.292820587E1 +1.934127000E3,5.382097927E1 +1.934390000E3,6.102840439E1 +1.934671000E3,5.486275546E1 +1.934948000E3,5.206103103E1 +1.935198000E3,5.739150099E1 +1.935506000E3,5.310844778E1 +1.935756000E3,5.392681604E1 +1.936008000E3,5.250003264E1 +1.936256000E3,5.801399662E1 +1.936524000E3,5.696032820E1 +1.936785000E3,5.414492013E1 +1.937032000E3,5.536982174E1 +1.937391000E3,5.750979970E1 +1.937677000E3,5.370086514E1 +1.937972000E3,5.359409099E1 +1.938241000E3,4.663692517E1 +1.938508000E3,4.740501122E1 +1.938772000E3,4.812116539E1 +1.939051000E3,4.940260018E1 +1.939311000E3,5.211533825E1 +1.939553000E3,5.351181789E1 +1.939796000E3,5.597808269E1 +1.940081000E3,5.841474518E1 +1.940347000E3,5.900966915E1 +1.940680000E3,5.844032848E1 +1.940932000E3,6.047778057E1 +1.941187000E3,6.179458512E1 +1.941488000E3,5.569784051E1 +1.941730000E3,5.535681081E1 +1.941971000E3,5.409739450E1 +1.942227000E3,5.551927029E1 +1.942555000E3,5.259381649E1 +1.942855000E3,5.090743186E1 +1.943101000E3,5.330610416E1 +1.943383000E3,5.722147303E1 +1.943610000E3,5.564867598E1 +1.944013000E3,5.456395907E1 +1.944265000E3,5.442943523E1 +1.944557000E3,5.982581487E1 +1.944820000E3,5.751114261E1 +1.945081000E3,5.998630171E1 +1.945333000E3,5.908382499E1 +1.945646000E3,5.828329647E1 +1.945951000E3,5.602282904E1 +1.946199000E3,6.197108249E1 +1.946496000E3,5.533258874E1 +1.946770000E3,5.704060455E1 +1.947126000E3,5.457797110E1 +1.947363000E3,5.430717613E1 +1.947637000E3,5.940687974E1 +1.947953000E3,5.436076271E1 +1.948235000E3,5.660912008E1 +1.948550000E3,5.504399315E1 +1.948861000E3,5.464999644E1 +1.949122000E3,5.565806372E1 +1.949384000E3,5.190569146E1 +1.949646000E3,5.153937000E1 +1.949972000E3,5.628803963E1 +1.950248000E3,5.966716422E1 +1.950577000E3,5.820503815E1 +1.950822000E3,5.652058726E1 +1.951118000E3,5.802645793E1 +1.951349000E3,5.727916959E1 +1.951597000E3,5.784165576E1 +1.951900000E3,5.999225852E1 +1.952197000E3,6.048891831E1 +1.952433000E3,5.821794698E1 +1.952728000E3,5.416701806E1 +1.952964000E3,5.183738883E1 +1.953295000E3,5.384161890E1 +1.953675000E3,5.430376660E1 +1.953907000E3,5.257088063E1 +1.954151000E3,5.392186903E1 +1.954431000E3,6.167467738E1 +1.954678000E3,5.958790115E1 +1.954923000E3,5.822018477E1 +1.955185000E3,5.808448347E1 +1.955447000E3,5.733347749E1 +1.955703000E3,6.261390980E1 +1.956005000E3,5.829281758E1 +1.956246000E3,5.949056653E1 +1.956541000E3,5.839747914E1 +1.956810000E3,5.770882066E1 +1.957120000E3,5.690637302E1 +1.957421000E3,5.796705847E1 +1.957668000E3,5.867770180E1 +1.957936000E3,5.696585443E1 +1.958216000E3,5.738908049E1 +1.958463000E3,5.842272770E1 +1.958721000E3,5.966072568E1 +1.959033000E3,6.340725612E1 +1.959281000E3,6.193544465E1 +1.959566000E3,5.927164536E1 +1.959888000E3,6.146900670E1 +1.960249000E3,6.270186363E1 +1.960512000E3,5.695216686E1 +1.960779000E3,5.725758836E1 +1.961040000E3,5.788439963E1 +1.961303000E3,6.286977927E1 +1.961557000E3,6.361469653E1 +1.961802000E3,6.277422462E1 +1.962060000E3,6.032704022E1 +1.962310000E3,5.600516510E1 +1.962586000E3,6.188879617E1 +1.962805000E3,6.271522018E1 +1.963107000E3,6.025198847E1 +1.963453000E3,6.001529679E1 +1.963728000E3,5.375240125E1 +1.964036000E3,5.055228276E1 +1.964331000E3,5.257092943E1 +1.964568000E3,5.708661900E1 +1.964868000E3,5.629448239E1 +1.965178000E3,5.425890416E1 +1.965431000E3,5.575014937E1 +1.965679000E3,5.801461965E1 +1.965931000E3,5.400244473E1 +1.966191000E3,5.474887871E1 +1.966525000E3,5.196538635E1 +1.966783000E3,5.536524974E1 +1.967040000E3,5.974878933E1 +1.967338000E3,6.200932986E1 +1.967644000E3,6.295299888E1 +1.967909000E3,6.272635154E1 +1.968153000E3,5.902465660E1 +1.968474000E3,5.897159976E1 +1.968773000E3,5.506910037E1 +1.969014000E3,5.622897524E1 +1.969254000E3,5.457019516E1 +1.969505000E3,5.648049168E1 +1.969892000E3,5.656883155E1 +1.970152000E3,5.598423772E1 +1.970446000E3,5.186768597E1 +1.970726000E3,5.526177698E1 +1.971020000E3,5.810907246E1 +1.971304000E3,5.262875480E1 +1.971613000E3,5.141696402E1 +1.971915000E3,5.298264424E1 +1.972196000E3,5.641801556E1 +1.972483000E3,5.228737642E1 +1.972725000E3,5.649656740E1 +1.973036000E3,5.867645632E1 +1.973323000E3,5.679238187E1 +1.973633000E3,5.959682402E1 +1.973935000E3,5.617109756E1 +1.974236000E3,5.473085666E1 +1.974547000E3,5.589564412E1 +1.974836000E3,5.691193712E1 +1.975136000E3,5.808545953E1 +1.975385000E3,5.922478363E1 +1.975631000E3,5.707996013E1 +1.975881000E3,5.820923707E1 +1.976194000E3,5.897957095E1 +1.976453000E3,6.019944728E1 +1.976814000E3,6.472960186E1 +1.977076000E3,6.312075290E1 +1.977356000E3,5.886370461E1 +1.977618000E3,5.750754913E1 +1.977917000E3,5.531180501E1 +1.978189000E3,5.815410032E1 +1.978463000E3,5.735965971E1 +1.978732000E3,5.593071322E1 +1.978999000E3,5.835041964E1 +1.979245000E3,5.646810288E1 +1.979493000E3,5.392299875E1 +1.979902000E3,5.430590311E1 +1.980142000E3,5.447583546E1 +1.980384000E3,5.260389735E1 +1.980632000E3,5.537561423E1 +1.980873000E3,5.836960119E1 +1.981120000E3,5.425821286E1 +1.981389000E3,5.153336720E1 +1.981618000E3,5.420085973E1 +1.981915000E3,5.457985954E1 +1.982165000E3,5.637026749E1 +1.982404000E3,6.009656118E1 +1.982718000E3,5.903298531E1 +1.983029000E3,5.665152425E1 +1.983296000E3,5.778918758E1 +1.983538000E3,5.444374512E1 +1.983786000E3,5.619088618E1 +1.984047000E3,6.088482249E1 +1.984304000E3,5.678390940E1 +1.984575000E3,5.873820942E1 +1.984842000E3,6.004736340E1 +1.985142000E3,6.191465398E1 +1.985405000E3,6.154032648E1 +1.985653000E3,5.967034113E1 +1.985913000E3,5.855925349E1 +1.986211000E3,5.529356341E1 +1.986557000E3,5.823190054E1 +1.986847000E3,5.749679599E1 +1.987098000E3,5.855123449E1 +1.987369000E3,5.999203293E1 +1.987610000E3,6.139424716E1 +1.987876000E3,5.730078222E1 +1.988126000E3,5.649537684E1 +1.988425000E3,5.872458305E1 +1.988727000E3,5.704322852E1 +1.989024000E3,6.264447151E1 +1.989326000E3,5.763604303E1 +1.989641000E3,5.657919006E1 +1.989961000E3,5.706004491E1 +1.990255000E3,6.115159729E1 +1.990571000E3,5.721964371E1 +1.990829000E3,5.780420781E1 +1.991088000E3,5.782228640E1 +1.991353000E3,5.791642518E1 +1.991611000E3,5.820065680E1 +1.991935000E3,5.675756460E1 +1.992174000E3,5.720433643E1 +1.992482000E3,5.907701380E1 +1.992770000E3,5.791335620E1 +1.993107000E3,5.504589678E1 +1.993369000E3,6.117578252E1 +1.993619000E3,5.902046786E1 +1.993912000E3,6.024153080E1 +1.994216000E3,6.061721402E1 +1.994464000E3,6.185610038E1 +1.994715000E3,5.902440055E1 +1.995005000E3,6.112374185E1 +1.995249000E3,5.664710018E1 +1.995551000E3,5.841351492E1 +1.995787000E3,5.961393992E1 +1.996119000E3,5.614463215E1 +1.996387000E3,5.528223904E1 +1.996647000E3,5.706960328E1 +1.996947000E3,5.544195306E1 +1.997203000E3,5.747091679E1 +1.997452000E3,5.434233120E1 +1.997769000E3,5.794847441E1 +1.998019000E3,5.504963001E1 +1.998267000E3,5.470768853E1 +1.998498000E3,6.426300701E1 +1.998789000E3,6.070245213E1 +1.999090000E3,5.893271279E1 +1.999390000E3,5.873668669E1 +1.999698000E3,6.355663744E1 +1.999962000E3,6.500393379E1 +2.000214000E3,6.177640112E1 +2.000471000E3,6.122167361E1 +2.000775000E3,5.982616779E1 +2.001079000E3,5.944943300E1 +2.001339000E3,5.772707313E1 +2.001595000E3,5.934980117E1 +2.001862000E3,6.221301291E1 +2.002160000E3,6.098009785E1 +2.002491000E3,6.205877653E1 +2.002758000E3,5.978743388E1 +2.003062000E3,6.141065367E1 +2.003307000E3,6.146860620E1 +2.003555000E3,6.323368939E1 +2.003884000E3,6.072009355E1 +2.004185000E3,6.072017978E1 +2.004424000E3,6.079512782E1 +2.004673000E3,6.651000141E1 +2.004939000E3,6.185812181E1 +2.005202000E3,5.705353418E1 +2.005472000E3,5.820400818E1 +2.005800000E3,5.682542431E1 +2.006070000E3,6.224932691E1 +2.006350000E3,5.654791681E1 +2.006601000E3,6.160831985E1 +2.006857000E3,6.443497299E1 +2.007101000E3,6.091208862E1 +2.007395000E3,5.867323811E1 +2.007635000E3,5.850229824E1 +2.007945000E3,6.307832054E1 +2.008197000E3,5.931313312E1 +2.008453000E3,5.632990721E1 +2.008711000E3,5.662998085E1 +2.009032000E3,5.416655753E1 +2.009268000E3,6.273936844E1 +2.009521000E3,6.129068926E1 +2.009786000E3,6.485712301E1 +2.010037000E3,6.605690213E1 +2.010298000E3,6.243431425E1 +2.010541000E3,6.062714733E1 +2.010780000E3,6.369220544E1 +2.011082000E3,5.933701247E1 +2.011330000E3,6.141658123E1 +2.011605000E3,6.232326760E1 +2.011893000E3,5.983132844E1 +2.012226000E3,6.085684837E1 +2.012489000E3,5.844434641E1 +2.012752000E3,5.992485437E1 +2.013005000E3,5.745164278E1 +2.013272000E3,5.489362140E1 +2.013573000E3,5.734004331E1 +2.013861000E3,5.569303233E1 +2.014170000E3,5.619919203E1 +2.014467000E3,5.719248521E1 +2.014715000E3,5.898607642E1 +2.015015000E3,5.312334941E1 +2.015258000E3,4.707687024E1 +2.015594000E3,5.326213693E1 +2.015822000E3,4.977107581E1 +2.016071000E3,5.399380901E1 +2.016333000E3,5.528915982E1 +2.016634000E3,5.648344312E1 +2.016879000E3,5.853194276E1 +2.017143000E3,5.969968429E1 +2.017429000E3,6.121498547E1 +2.017723000E3,5.933414775E1 +2.017961000E3,6.375558171E1 +2.018248000E3,6.102538403E1 +2.018558000E3,6.066629858E1 +2.018830000E3,5.238394429E1 +2.019065000E3,5.528030903E1 +2.019316000E3,5.711235169E1 +2.019578000E3,6.069913503E1 +2.019847000E3,5.344730110E1 +2.020093000E3,5.593398360E1 +2.020413000E3,5.112453486E1 +2.020668000E3,5.529600172E1 +2.020922000E3,5.816841553E1 +2.021177000E3,6.105447683E1 +2.021449000E3,5.967528890E1 +2.021707000E3,5.677568689E1 +2.022115000E3,5.613246875E1 +2.022403000E3,5.846674311E1 +2.022679000E3,5.999468936E1 +2.022930000E3,6.268951545E1 +2.023232000E3,6.037378186E1 +2.023532000E3,6.123290650E1 +2.023784000E3,6.425880775E1 +2.024094000E3,6.043334594E1 +2.024356000E3,6.287321918E1 +2.024616000E3,6.178703582E1 +2.024868000E3,5.974424575E1 +2.025152000E3,5.863905018E1 +2.025429000E3,5.669082005E1 +2.025716000E3,6.192616195E1 +2.026008000E3,6.367561928E1 +2.026300000E3,6.061621393E1 +2.026543000E3,6.411900249E1 +2.026802000E3,6.060951858E1 +2.027066000E3,5.606119041E1 +2.027395000E3,5.099901519E1 +2.027693000E3,5.622472082E1 +2.027945000E3,5.354940616E1 +2.028237000E3,6.282566888E1 +2.028553000E3,5.775523802E1 +2.028868000E3,6.095006183E1 +2.029133000E3,6.333727439E1 +2.029399000E3,5.925545982E1 +2.029660000E3,6.045827699E1 +2.029962000E3,5.594587825E1 +2.030223000E3,5.708579081E1 +2.030478000E3,5.777704597E1 +2.030737000E3,5.406349508E1 +2.030990000E3,5.544037764E1 +2.031246000E3,5.912518025E1 +2.031508000E3,5.924806900E1 +2.031864000E3,6.105667153E1 +2.032110000E3,5.838466956E1 +2.032350000E3,5.923100201E1 +2.032598000E3,6.024290558E1 +2.032866000E3,5.971089342E1 +2.033112000E3,5.478665804E1 +2.033351000E3,5.966531235E1 +2.033644000E3,5.755565544E1 +2.033892000E3,5.982004182E1 +2.034190000E3,5.797424789E1 +2.034425000E3,5.856301863E1 +2.034717000E3,6.325478319E1 +2.035053000E3,6.168254294E1 +2.035364000E3,6.188857455E1 +2.035619000E3,6.156039581E1 +2.035901000E3,6.235770270E1 +2.036169000E3,6.262779828E1 +2.036471000E3,6.142542176E1 +2.036764000E3,5.923845966E1 +2.037022000E3,5.827266837E1 +2.037307000E3,6.314641141E1 +2.037615000E3,5.460230698E1 +2.037870000E3,5.396400232E1 +2.038120000E3,5.561122002E1 +2.038463000E3,5.928400391E1 +2.038767000E3,5.668934966E1 +2.039069000E3,5.831653467E1 +2.039316000E3,5.267103167E1 +2.039622000E3,5.557794232E1 +2.039859000E3,5.543606804E1 +2.040196000E3,5.836770370E1 +2.040499000E3,5.678092478E1 +2.040751000E3,5.612506795E1 +2.041024000E3,5.868430679E1 +2.041274000E3,5.264121586E1 +2.041581000E3,5.828774790E1 +2.041841000E3,5.647338053E1 +2.042088000E3,6.053709731E1 +2.042403000E3,5.614689861E1 +2.042691000E3,5.714845923E1 +2.042944000E3,5.256418368E1 +2.043191000E3,5.601486494E1 +2.043466000E3,5.810869150E1 +2.043715000E3,5.529893852E1 +2.043979000E3,5.708153712E1 +2.044245000E3,5.690179830E1 +2.044568000E3,5.994555064E1 +2.044825000E3,6.172126409E1 +2.045096000E3,6.015473895E1 +2.045377000E3,5.509344178E1 +2.045629000E3,5.568915719E1 +2.045902000E3,5.938619751E1 +2.046155000E3,5.534852098E1 +2.046409000E3,5.905391706E1 +2.046693000E3,5.250115201E1 +2.046947000E3,5.587771233E1 +2.047277000E3,5.599930929E1 +2.047517000E3,5.586822515E1 +2.047803000E3,5.740436533E1 +2.048105000E3,5.413600866E1 +2.048476000E3,5.595836709E1 +2.048737000E3,5.982743631E1 +2.048992000E3,6.001131240E1 +2.049305000E3,5.629713962E1 +2.049568000E3,5.505265617E1 +2.049904000E3,5.686004167E1 +2.050199000E3,6.078932545E1 +2.050470000E3,5.919030857E1 +2.050773000E3,5.640754436E1 +2.051052000E3,5.864124078E1 +2.051311000E3,5.683150656E1 +2.051642000E3,5.391893615E1 +2.051926000E3,4.513639699E1 +2.052174000E3,5.750824000E1 +2.052467000E3,5.945309138E1 +2.052703000E3,6.260915402E1 +2.052981000E3,6.017408744E1 +2.053276000E3,6.158293130E1 +2.053516000E3,6.279041899E1 +2.053759000E3,6.005362243E1 +2.054030000E3,5.776050932E1 +2.054357000E3,5.906607942E1 +2.054642000E3,6.002924771E1 +2.054978000E3,5.708591672E1 +2.055267000E3,5.932996992E1 +2.055552000E3,5.830703641E1 +2.055812000E3,5.428102985E1 +2.056063000E3,5.893384546E1 +2.056382000E3,6.028305726E1 +2.056682000E3,5.904357096E1 +2.056923000E3,6.015407432E1 +2.057171000E3,5.801677968E1 +2.057418000E3,6.561794532E1 +2.057665000E3,6.751214025E1 +2.057959000E3,5.899748641E1 +2.058279000E3,5.616162884E1 +2.058571000E3,5.813941707E1 +2.058834000E3,6.236684118E1 +2.059132000E3,6.058455193E1 +2.059376000E3,6.004963560E1 +2.059687000E3,6.255152045E1 +2.059984000E3,6.155697025E1 +2.060225000E3,6.124056229E1 +2.060517000E3,6.072549607E1 +2.060756000E3,6.119225814E1 +2.061060000E3,5.953618039E1 +2.061302000E3,5.869582322E1 +2.061578000E3,6.248269042E1 +2.061841000E3,6.070173510E1 +2.062089000E3,6.023992255E1 +2.062337000E3,5.848175462E1 +2.062607000E3,5.092907116E1 +2.062859000E3,5.442118268E1 +2.063124000E3,5.298599309E1 +2.063425000E3,6.030333428E1 +2.063671000E3,5.835700379E1 +2.063954000E3,5.943633389E1 +2.064268000E3,5.761479859E1 +2.064577000E3,5.520238299E1 +2.064822000E3,5.901822557E1 +2.065074000E3,5.705952734E1 +2.065339000E3,6.136116330E1 +2.065603000E3,5.746483296E1 +2.065865000E3,5.867757380E1 +2.066141000E3,5.709322981E1 +2.066441000E3,5.775131141E1 +2.066691000E3,5.886237327E1 +2.067036000E3,5.617972984E1 +2.067288000E3,5.802507148E1 +2.067560000E3,6.044497816E1 +2.067891000E3,5.450044868E1 +2.068148000E3,5.616761260E1 +2.068412000E3,6.243097888E1 +2.068673000E3,5.783788439E1 +2.068946000E3,5.764761585E1 +2.069196000E3,5.683737954E1 +2.069468000E3,5.609890848E1 +2.069778000E3,5.465619904E1 +2.070034000E3,5.368960846E1 +2.070328000E3,6.032893819E1 +2.070574000E3,5.862927742E1 +2.070842000E3,5.635830209E1 +2.071101000E3,5.822198053E1 +2.071339000E3,5.691346983E1 +2.071597000E3,5.865778618E1 +2.071860000E3,5.810560725E1 +2.072128000E3,5.968009174E1 +2.072425000E3,5.833852533E1 +2.072667000E3,5.784540163E1 +2.072934000E3,5.644439458E1 +2.073184000E3,5.178260396E1 +2.073488000E3,5.751445421E1 +2.073769000E3,5.974800721E1 +2.074068000E3,6.534291023E1 +2.074348000E3,6.371076652E1 +2.074624000E3,6.156132937E1 +2.074877000E3,6.012113548E1 +2.075119000E3,6.026351151E1 +2.075377000E3,6.142675581E1 +2.075661000E3,6.194478144E1 +2.075914000E3,6.183865569E1 +2.076267000E3,6.387512541E1 +2.076547000E3,6.077311287E1 +2.076803000E3,6.130963963E1 +2.077056000E3,5.862622582E1 +2.077295000E3,5.463497219E1 +2.077610000E3,5.484231095E1 +2.077891000E3,6.099801434E1 +2.078171000E3,5.475621164E1 +2.078466000E3,5.955577801E1 +2.078709000E3,5.720097088E1 +2.078954000E3,5.661944912E1 +2.079224000E3,5.443336360E1 +2.079503000E3,5.917559782E1 +2.079800000E3,5.424380486E1 +2.080057000E3,6.013762169E1 +2.080307000E3,6.100643768E1 +2.080558000E3,6.205128007E1 +2.080810000E3,6.007904071E1 +2.081092000E3,6.423414837E1 +2.081354000E3,5.938817614E1 +2.081601000E3,6.006860062E1 +2.081845000E3,5.833570272E1 +2.082143000E3,5.962915676E1 +2.082396000E3,5.844615966E1 +2.082663000E3,5.932060291E1 +2.082921000E3,6.037844323E1 +2.083227000E3,5.719168160E1 +2.083487000E3,5.597578938E1 +2.083743000E3,5.236775830E1 +2.084062000E3,5.471900653E1 +2.084318000E3,5.178371688E1 +2.084618000E3,5.707729304E1 +2.084858000E3,5.526812689E1 +2.085154000E3,5.716405930E1 +2.085391000E3,5.478798233E1 +2.085687000E3,5.496315929E1 +2.085932000E3,5.701239101E1 +2.086228000E3,5.776438308E1 +2.086467000E3,5.628202894E1 +2.086760000E3,5.042244376E1 +2.087015000E3,5.775963511E1 +2.087362000E3,4.982890988E1 +2.087671000E3,4.785672217E1 +2.087922000E3,4.762697394E1 +2.088178000E3,5.046726223E1 +2.088438000E3,4.890262424E1 +2.088711000E3,5.501277631E1 +2.088981000E3,5.666001705E1 +2.089249000E3,6.014252161E1 +2.089513000E3,5.925311989E1 +2.089806000E3,6.173820636E1 +2.090063000E3,5.350884215E1 +2.090366000E3,5.736408779E1 +2.090744000E3,5.450936109E1 +2.091005000E3,5.763377323E1 +2.091253000E3,6.042269191E1 +2.091515000E3,5.484903903E1 +2.091757000E3,5.882101591E1 +2.092028000E3,5.833139845E1 +2.092280000E3,5.703430671E1 +2.092527000E3,5.247783814E1 +2.092809000E3,5.233323676E1 +2.093037000E3,5.202869643E1 +2.093354000E3,5.628845797E1 +2.093634000E3,5.325396544E1 +2.094006000E3,5.654992892E1 +2.094280000E3,5.713253789E1 +2.094541000E3,5.967664240E1 +2.094800000E3,5.750232678E1 +2.095069000E3,5.544480371E1 +2.095333000E3,5.462176641E1 +2.095596000E3,5.811248949E1 +2.095853000E3,6.196847972E1 +2.096192000E3,5.842850461E1 +2.096488000E3,5.597774452E1 +2.096726000E3,5.601282925E1 +2.097104000E3,5.625832805E1 +2.097364000E3,5.315488909E1 +2.097602000E3,5.287250653E1 +2.097844000E3,5.523708836E1 +2.098081000E3,5.724292600E1 +2.098340000E3,5.659511238E1 +2.098670000E3,5.675324149E1 +2.098945000E3,5.485884276E1 +2.099219000E3,5.694143956E1 +2.099469000E3,5.561655413E1 +2.099765000E3,5.844909410E1 +2.100011000E3,6.135621316E1 +2.100343000E3,5.968766012E1 +2.100584000E3,5.173347950E1 +2.100832000E3,5.415548255E1 +2.101090000E3,5.271968845E1 +2.101339000E3,5.007174890E1 +2.101624000E3,5.279525002E1 +2.101895000E3,5.358558767E1 +2.102197000E3,5.559048142E1 +2.102438000E3,5.476305303E1 +2.102705000E3,5.237114911E1 +2.102947000E3,5.014972007E1 +2.103218000E3,4.895902935E1 +2.103469000E3,5.192053997E1 +2.103853000E3,4.647138436E1 +2.104101000E3,4.837766327E1 +2.104448000E3,5.088929287E1 +2.104740000E3,5.561591777E1 +2.104997000E3,5.440319534E1 +2.105260000E3,5.347164399E1 +2.105561000E3,5.151610441E1 +2.105813000E3,5.075382634E1 +2.106121000E3,5.244425755E1 +2.106357000E3,5.269617654E1 +2.106663000E3,5.149027406E1 +2.106954000E3,5.659456733E1 +2.107266000E3,5.282561460E1 +2.107606000E3,5.407918273E1 +2.107883000E3,5.643922092E1 +2.108164000E3,5.169657105E1 +2.108480000E3,5.713744586E1 +2.108748000E3,5.931186178E1 +2.109003000E3,5.645689600E1 +2.109252000E3,5.322874786E1 +2.109552000E3,5.363731782E1 +2.109821000E3,5.353815648E1 +2.110077000E3,5.445551750E1 +2.110418000E3,5.491110228E1 +2.110669000E3,5.291647814E1 +2.110921000E3,5.202914132E1 +2.111180000E3,5.363241827E1 +2.111479000E3,5.566624291E1 +2.111721000E3,5.645238247E1 +2.112027000E3,5.458458697E1 +2.112294000E3,5.469783372E1 +2.112597000E3,5.582449562E1 +2.112854000E3,5.595416398E1 +2.113105000E3,5.113785865E1 +2.113352000E3,6.248282803E1 +2.113711000E3,5.880495226E1 +2.113968000E3,5.941805617E1 +2.114248000E3,5.561632009E1 +2.114507000E3,5.501810850E1 +2.114754000E3,5.936291007E1 +2.115053000E3,6.127733734E1 +2.115321000E3,6.057491273E1 +2.115616000E3,6.127323198E1 +2.115893000E3,5.760488174E1 +2.116193000E3,6.030881831E1 +2.116434000E3,5.967518116E1 +2.116722000E3,5.720938908E1 +2.117066000E3,5.605932878E1 +2.117338000E3,6.068190844E1 +2.117598000E3,5.400374866E1 +2.117892000E3,5.332007667E1 +2.118133000E3,4.991979059E1 +2.118428000E3,5.700198654E1 +2.118666000E3,5.878418983E1 +2.118922000E3,5.703766890E1 +2.119230000E3,5.731012811E1 +2.119515000E3,5.865622099E1 +2.119741000E3,5.772295719E1 +2.120015000E3,5.851982083E1 +2.120322000E3,5.958645129E1 +2.120616000E3,6.233814130E1 +2.120861000E3,6.002711287E1 +2.121162000E3,5.939190004E1 +2.121437000E3,5.758195225E1 +2.121690000E3,5.564648712E1 +2.121946000E3,5.336629511E1 +2.122218000E3,5.199121426E1 +2.122476000E3,5.906368298E1 +2.122759000E3,5.917930836E1 +2.123014000E3,5.824882047E1 +2.123266000E3,5.770359270E1 +2.123492000E3,5.695638802E1 +2.123777000E3,5.720151485E1 +2.124027000E3,6.045411810E1 +2.124327000E3,5.540258870E1 +2.124575000E3,5.828000252E1 +2.124835000E3,5.500577731E1 +2.125106000E3,5.926473821E1 +2.125354000E3,5.472888078E1 +2.125611000E3,5.530970077E1 +2.125862000E3,5.595037084E1 +2.126117000E3,5.439239133E1 +2.126432000E3,5.961943996E1 +2.126692000E3,5.841091801E1 +2.126944000E3,5.863137443E1 +2.127282000E3,5.731398304E1 +2.127577000E3,5.665374527E1 +2.127843000E3,5.476493539E1 +2.128129000E3,5.580929465E1 +2.128437000E3,5.565551021E1 +2.128739000E3,5.869101147E1 +2.129026000E3,5.827114612E1 +2.129307000E3,5.507536074E1 +2.129577000E3,5.532393691E1 +2.129934000E3,5.233850306E1 +2.130215000E3,5.514372423E1 +2.130466000E3,5.757947445E1 +2.130714000E3,6.126034226E1 +2.131015000E3,6.074916673E1 +2.131279000E3,5.864911171E1 +2.131564000E3,5.680524431E1 +2.131825000E3,6.002252741E1 +2.132078000E3,5.953076168E1 +2.132390000E3,6.027427680E1 +2.132647000E3,5.955779136E1 +2.132902000E3,5.835756058E1 +2.133223000E3,6.286787860E1 +2.133471000E3,6.057291506E1 +2.133724000E3,5.893793659E1 +2.134002000E3,5.508555746E1 +2.134257000E3,5.619881839E1 +2.134512000E3,5.505764062E1 +2.134784000E3,5.808922162E1 +2.135054000E3,5.334583096E1 +2.135313000E3,5.298019930E1 +2.135595000E3,5.025342296E1 +2.135812000E3,5.409382682E1 +2.136057000E3,5.580950424E1 +2.136332000E3,5.523743716E1 +2.136661000E3,5.499005541E1 +2.136917000E3,5.745623005E1 +2.137196000E3,5.149169849E1 +2.137449000E3,5.261206885E1 +2.137711000E3,5.487518376E1 +2.138022000E3,5.898871991E1 +2.138270000E3,5.852026830E1 +2.138564000E3,5.868858262E1 +2.138802000E3,5.736353209E1 +2.139066000E3,5.529465652E1 +2.139332000E3,5.762578865E1 +2.139672000E3,5.790185487E1 +2.139930000E3,5.792373283E1 +2.140278000E3,5.597904656E1 +2.140535000E3,5.355980456E1 +2.140856000E3,5.411887429E1 +2.141146000E3,5.094976839E1 +2.141467000E3,5.658279242E1 +2.141735000E3,6.043792292E1 +2.142041000E3,5.996632022E1 +2.142276000E3,6.230155616E1 +2.142526000E3,6.102528468E1 +2.142783000E3,5.770338577E1 +2.143124000E3,5.827243883E1 +2.143406000E3,5.367650147E1 +2.143645000E3,5.777094487E1 +2.143915000E3,5.851595499E1 +2.144175000E3,5.573729509E1 +2.144454000E3,5.467626304E1 +2.144700000E3,5.699765591E1 +2.144968000E3,5.692170932E1 +2.145246000E3,6.030210344E1 +2.145550000E3,5.876913066E1 +2.145797000E3,5.698149837E1 +2.146042000E3,5.982717784E1 +2.146368000E3,5.905293636E1 +2.146676000E3,5.947032966E1 +2.146922000E3,5.910471730E1 +2.147225000E3,6.065874797E1 +2.147524000E3,5.680135408E1 +2.147831000E3,5.451199701E1 +2.148090000E3,5.301325775E1 +2.148365000E3,5.466040661E1 +2.148665000E3,5.658013689E1 +2.148952000E3,5.410667827E1 +2.149249000E3,5.788683658E1 +2.149597000E3,5.873903650E1 +2.149910000E3,5.314379433E1 +2.150150000E3,5.564952940E1 +2.150451000E3,6.000220607E1 +2.150691000E3,6.235870620E1 +2.150965000E3,6.387461990E1 +2.151194000E3,6.491001134E1 +2.151449000E3,5.932544814E1 +2.151756000E3,6.117684525E1 +2.152011000E3,6.059885605E1 +2.152282000E3,6.303246617E1 +2.152596000E3,6.399854390E1 +2.152961000E3,6.063746268E1 +2.153223000E3,6.122116723E1 +2.153495000E3,5.809397592E1 +2.153749000E3,5.903784259E1 +2.153999000E3,6.047826717E1 +2.154283000E3,5.846467986E1 +2.154537000E3,6.226879102E1 +2.154785000E3,5.980611807E1 +2.155079000E3,5.787450321E1 +2.155375000E3,5.676059962E1 +2.155616000E3,5.395823696E1 +2.155912000E3,5.953639288E1 +2.156221000E3,5.971614724E1 +2.156510000E3,6.039969801E1 +2.156758000E3,5.898776738E1 +2.157015000E3,6.100474003E1 +2.157289000E3,5.750129682E1 +2.157591000E3,5.995540643E1 +2.157844000E3,5.628303244E1 +2.158104000E3,5.892686601E1 +2.158366000E3,5.712884748E1 +2.158667000E3,5.727860760E1 +2.158932000E3,5.313556696E1 +2.159288000E3,5.635583768E1 +2.159555000E3,5.929473664E1 +2.159809000E3,5.396180560E1 +2.160112000E3,5.807023999E1 +2.160354000E3,5.639240346E1 +2.160608000E3,5.917728814E1 +2.160855000E3,5.429000157E1 +2.161130000E3,5.397827395E1 +2.161395000E3,5.647751800E1 +2.161656000E3,5.342605760E1 +2.162007000E3,5.324373839E1 +2.162263000E3,5.439383591E1 +2.162517000E3,5.727066505E1 +2.162888000E3,5.995593964E1 +2.163140000E3,6.130649482E1 +2.163392000E3,6.228130821E1 +2.163644000E3,6.279179388E1 +2.163938000E3,5.559527300E1 +2.164178000E3,5.200550071E1 +2.164481000E3,5.797363767E1 +2.164757000E3,5.902554678E1 +2.165040000E3,5.834647622E1 +2.165303000E3,5.713285380E1 +2.165575000E3,6.343633700E1 +2.165850000E3,5.896208706E1 +2.166219000E3,5.624501583E1 +2.166483000E3,5.696603075E1 +2.166769000E3,5.736978604E1 +2.167027000E3,5.837475894E1 +2.167278000E3,5.768129207E1 +2.167593000E3,5.660761865E1 +2.167856000E3,5.680076310E1 +2.168110000E3,5.883044450E1 +2.168385000E3,5.772028600E1 +2.168649000E3,5.342008664E1 +2.168914000E3,5.359113324E1 +2.169168000E3,5.849769703E1 +2.169536000E3,6.267181821E1 +2.169793000E3,5.719603223E1 +2.170040000E3,5.397233107E1 +2.170287000E3,4.861027503E1 +2.170579000E3,5.741564583E1 +2.170822000E3,6.207812430E1 +2.171115000E3,5.827753689E1 +2.171365000E3,6.042202215E1 +2.171629000E3,5.516417228E1 +2.171895000E3,4.912315476E1 +2.172163000E3,4.718316305E1 +2.172446000E3,5.363129541E1 +2.172813000E3,5.322378335E1 +2.173087000E3,5.228499961E1 +2.173349000E3,5.364722432E1 +2.173618000E3,5.964999675E1 +2.173917000E3,6.116591719E1 +2.174174000E3,5.668310324E1 +2.174436000E3,5.538937699E1 +2.174688000E3,5.539330891E1 +2.174944000E3,5.678019084E1 +2.175197000E3,5.655985061E1 +2.175490000E3,6.211643319E1 +2.175751000E3,5.899842059E1 +2.176153000E3,6.042080027E1 +2.176454000E3,5.956376587E1 +2.176730000E3,5.896716838E1 +2.177048000E3,5.729778676E1 +2.177305000E3,5.512323216E1 +2.177616000E3,5.573124529E1 +2.177883000E3,5.390669828E1 +2.178139000E3,5.435017850E1 +2.178403000E3,5.275779180E1 +2.178672000E3,5.469054235E1 +2.178938000E3,5.701832565E1 +2.179201000E3,6.063134316E1 +2.179540000E3,6.461030243E1 +2.179799000E3,6.345934666E1 +2.180043000E3,6.255021373E1 +2.180348000E3,6.265836689E1 +2.180640000E3,6.125083403E1 +2.180878000E3,5.721943432E1 +2.181125000E3,5.584429631E1 +2.181407000E3,5.679219567E1 +2.181647000E3,5.506189996E1 +2.181962000E3,5.950753578E1 +2.182227000E3,5.684863204E1 +2.182499000E3,5.318048388E1 +2.182825000E3,5.856807028E1 +2.183124000E3,6.201159961E1 +2.183360000E3,5.994279105E1 +2.183661000E3,6.155626338E1 +2.183904000E3,5.760612799E1 +2.184197000E3,5.557219911E1 +2.184436000E3,5.720299401E1 +2.184730000E3,5.496492062E1 +2.184965000E3,5.287669523E1 +2.185272000E3,5.534018340E1 +2.185572000E3,5.047897567E1 +2.185897000E3,5.289532450E1 +2.186149000E3,5.169587435E1 +2.186428000E3,5.811856565E1 +2.186722000E3,5.829930976E1 +2.187016000E3,5.767171180E1 +2.187297000E3,5.167293983E1 +2.187542000E3,5.634712904E1 +2.187793000E3,5.452173951E1 +2.188038000E3,5.242356157E1 +2.188332000E3,5.476946331E1 +2.188570000E3,5.506415879E1 +2.188807000E3,5.842757277E1 +2.189123000E3,5.579731569E1 +2.189400000E3,5.735467547E1 +2.189707000E3,5.510643622E1 +2.189947000E3,5.399605596E1 +2.190247000E3,5.231812124E1 +2.190482000E3,5.397423501E1 +2.190722000E3,5.467291530E1 +2.190972000E3,5.750340972E1 +2.191219000E3,5.451621797E1 +2.191527000E3,5.544744059E1 +2.191775000E3,5.570906247E1 +2.192040000E3,5.570238792E1 +2.192395000E3,5.704729905E1 +2.192674000E3,5.662202644E1 +2.192969000E3,6.130245708E1 +2.193206000E3,5.842239411E1 +2.193505000E3,5.813812757E1 +2.193745000E3,5.643123308E1 +2.194038000E3,5.810403241E1 +2.194275000E3,5.863690353E1 +2.194574000E3,5.519980518E1 +2.194810000E3,5.381530940E1 +2.195092000E3,5.781601666E1 +2.195335000E3,5.699265058E1 +2.195608000E3,5.477338243E1 +2.195929000E3,5.695412826E1 +2.196188000E3,5.575935497E1 +2.196439000E3,5.738570553E1 +2.196686000E3,6.194168224E1 +2.196969000E3,5.888525061E1 +2.197270000E3,5.830791470E1 +2.197516000E3,5.904778886E1 +2.197822000E3,5.987539712E1 +2.198117000E3,5.910637217E1 +2.198355000E3,5.676446576E1 +2.198673000E3,5.632729175E1 +2.198920000E3,5.826507178E1 +2.199227000E3,6.221847088E1 +2.199493000E3,6.023584539E1 +2.199739000E3,6.378124478E1 +2.199975000E3,6.457706819E1 +2.200218000E3,5.781084826E1 +2.200471000E3,5.833307765E1 +2.200715000E3,5.849295856E1 +2.200984000E3,5.695016071E1 +2.201255000E3,5.945608920E1 +2.201511000E3,5.923858391E1 +2.201821000E3,5.975381188E1 +2.202050000E3,5.657071344E1 +2.202297000E3,5.582353283E1 +2.202552000E3,5.634201272E1 +2.202803000E3,5.842061156E1 +2.203080000E3,5.511323996E1 +2.203339000E3,5.333816234E1 +2.203589000E3,5.586132206E1 +2.203867000E3,5.612282959E1 +2.204151000E3,5.390907932E1 +2.204405000E3,5.581501331E1 +2.204648000E3,5.691201261E1 +2.204938000E3,5.605209961E1 +2.205271000E3,5.337227455E1 +2.205520000E3,5.726868677E1 +2.205824000E3,5.678400386E1 +2.206068000E3,5.598615724E1 +2.206327000E3,6.245548090E1 +2.206634000E3,5.788335624E1 +2.206927000E3,5.672312442E1 +2.207166000E3,5.700846075E1 +2.207464000E3,5.693157148E1 +2.207703000E3,5.667671942E1 +2.207995000E3,5.655907845E1 +2.208344000E3,5.694003799E1 +2.208592000E3,5.812693102E1 +2.208844000E3,5.305590014E1 +2.209133000E3,5.963333488E1 +2.209376000E3,6.125764761E1 +2.209621000E3,5.708540532E1 +2.209865000E3,5.539532482E1 +2.210177000E3,6.086117928E1 +2.210432000E3,5.871599576E1 +2.210705000E3,5.720891289E1 +2.210929000E3,5.859137268E1 +2.211185000E3,5.492761595E1 +2.211566000E3,5.458369125E1 +2.211811000E3,5.704243717E1 +2.212094000E3,5.948204172E1 +2.212325000E3,5.442994388E1 +2.212570000E3,5.607391365E1 +2.212815000E3,5.349643391E1 +2.213089000E3,5.518134225E1 +2.213397000E3,5.879499176E1 +2.213659000E3,5.918920409E1 +2.213917000E3,6.317166487E1 +2.214205000E3,5.773325998E1 +2.214505000E3,6.021667659E1 +2.214834000E3,5.707564648E1 +2.215074000E3,5.411436798E1 +2.215412000E3,5.705541238E1 +2.215699000E3,6.721672427E1 +2.215946000E3,6.130402498E1 +2.216241000E3,5.914242022E1 +2.216493000E3,5.881747375E1 +2.216786000E3,5.920115687E1 +2.217030000E3,5.981753209E1 +2.217325000E3,5.379848698E1 +2.217566000E3,5.498057230E1 +2.217931000E3,5.647867672E1 +2.218210000E3,5.460935805E1 +2.218440000E3,5.579228446E1 +2.218740000E3,5.598523495E1 +2.218992000E3,5.501198671E1 +2.219248000E3,5.270876730E1 +2.219495000E3,5.711255338E1 +2.219767000E3,5.276578476E1 +2.220009000E3,6.171644376E1 +2.220307000E3,5.760035427E1 +2.220557000E3,6.039071701E1 +2.220820000E3,5.947563028E1 +2.221166000E3,5.781157464E1 +2.221459000E3,5.689764898E1 +2.221740000E3,5.361204154E1 +2.221998000E3,5.565584232E1 +2.222252000E3,6.236264054E1 +2.222508000E3,5.583706888E1 +2.222794000E3,5.998886151E1 +2.223038000E3,6.067027795E1 +2.223281000E3,5.953550256E1 +2.223512000E3,6.087865846E1 +2.223764000E3,5.880177247E1 +2.224056000E3,5.532032645E1 +2.224389000E3,5.110554887E1 +2.224697000E3,6.082114583E1 +2.224957000E3,6.332269799E1 +2.225225000E3,5.859152014E1 +2.225521000E3,6.312344162E1 +2.225760000E3,6.208500503E1 +2.226003000E3,6.030377984E1 +2.226280000E3,5.890306026E1 +2.226553000E3,6.412257006E1 +2.226813000E3,5.959239884E1 +2.227137000E3,5.603893495E1 +2.227460000E3,5.807576772E1 +2.227717000E3,6.034272760E1 +2.227950000E3,5.678924442E1 +2.228211000E3,5.767938832E1 +2.228489000E3,4.973605337E1 +2.228742000E3,5.227056153E1 +2.229007000E3,4.524576382E1 +2.229320000E3,5.163901012E1 +2.229633000E3,5.791269320E1 +2.229909000E3,5.832692980E1 +2.230223000E3,5.512940778E1 +2.230487000E3,5.639998631E1 +2.230845000E3,6.012111222E1 +2.231113000E3,6.632176219E1 +2.231407000E3,6.692769565E1 +2.231662000E3,6.409372191E1 +2.231945000E3,6.268702605E1 +2.232208000E3,6.192012265E1 +2.232460000E3,5.923306273E1 +2.232717000E3,5.726340446E1 +2.233005000E3,5.708270925E1 +2.233256000E3,6.172203942E1 +2.233510000E3,6.197059155E1 +2.233807000E3,6.691458644E1 +2.234160000E3,6.165007134E1 +2.234422000E3,6.172053486E1 +2.234714000E3,6.148833899E1 +2.234974000E3,6.190331921E1 +2.235253000E3,5.938090919E1 +2.235479000E3,6.223060920E1 +2.235722000E3,6.133640397E1 +2.236028000E3,6.400294095E1 +2.236269000E3,6.581462957E1 +2.236516000E3,6.094953675E1 +2.236828000E3,5.792232456E1 +2.237124000E3,5.750665846E1 +2.237367000E3,5.360734442E1 +2.237668000E3,5.239836763E1 +2.237914000E3,5.189659577E1 +2.238168000E3,5.779541581E1 +2.238431000E3,5.409030702E1 +2.238689000E3,5.064192938E1 +2.238941000E3,4.890244292E1 +2.239235000E3,4.958738332E1 +2.239486000E3,5.093509792E1 +2.239725000E3,5.421091975E1 +2.239970000E3,6.074883769E1 +2.240298000E3,5.611992467E1 +2.240604000E3,4.988071111E1 +2.240900000E3,4.952063126E1 +2.241187000E3,5.282005772E1 +2.241428000E3,5.672648648E1 +2.241685000E3,5.807464117E1 +2.241973000E3,5.565097745E1 +2.242224000E3,5.410363002E1 +2.242475000E3,5.548804216E1 +2.242720000E3,5.862108370E1 +2.242959000E3,5.101243713E1 +2.243259000E3,5.340920814E1 +2.243564000E3,5.471013043E1 +2.243801000E3,5.474536753E1 +2.244062000E3,5.454012147E1 +2.244333000E3,5.594751460E1 +2.244637000E3,5.486159050E1 +2.244913000E3,5.317501502E1 +2.245138000E3,5.100209753E1 +2.245397000E3,5.436827206E1 +2.245643000E3,5.483479867E1 +2.245916000E3,5.150486026E1 +2.246182000E3,5.049924887E1 +2.246449000E3,5.226067252E1 +2.246744000E3,5.389432372E1 +2.247057000E3,6.032791953E1 +2.247330000E3,5.966662928E1 +2.247666000E3,5.824962285E1 +2.247962000E3,5.700720490E1 +2.248202000E3,6.373200887E1 +2.248495000E3,6.648419927E1 +2.248743000E3,5.542652488E1 +2.249036000E3,5.256926371E1 +2.249272000E3,6.053195001E1 +2.249564000E3,4.959074314E1 +2.249800000E3,5.054384460E1 +2.250136000E3,5.008489809E1 +2.250431000E3,5.752384263E1 +2.250666000E3,5.367007636E1 +2.250931000E3,4.851936559E1 +2.251210000E3,4.965482987E1 +2.251497000E3,5.733244198E1 +2.251772000E3,5.370188093E1 +2.251997000E3,5.388650114E1 +2.252246000E3,5.331606518E1 +2.252516000E3,5.534782747E1 +2.252818000E3,5.271944154E1 +2.253047000E3,5.188974945E1 +2.253402000E3,5.040855384E1 +2.253689000E3,5.348452962E1 +2.253965000E3,5.685197701E1 +2.254240000E3,5.699151925E1 +2.254539000E3,5.217481719E1 +2.254794000E3,5.255063115E1 +2.255035000E3,5.258436032E1 +2.255283000E3,5.228429265E1 +2.255592000E3,5.187189315E1 +2.255851000E3,5.089851896E1 +2.256105000E3,5.323192817E1 +2.256387000E3,5.259240607E1 +2.256752000E3,5.489099725E1 +2.257016000E3,5.140699592E1 +2.257276000E3,5.478139635E1 +2.257600000E3,5.508183343E1 +2.257864000E3,5.539199709E1 +2.258160000E3,5.879728075E1 +2.258399000E3,6.145510373E1 +2.258645000E3,6.018082278E1 +2.258890000E3,6.203490998E1 +2.259131000E3,6.051201097E1 +2.259385000E3,5.741582229E1 +2.259629000E3,5.742200481E1 +2.259994000E3,5.205318956E1 +2.260295000E3,5.807019657E1 +2.260539000E3,5.843419178E1 +2.260841000E3,5.543595349E1 +2.261104000E3,5.208978608E1 +2.261348000E3,5.288295424E1 +2.261601000E3,5.593156434E1 +2.261856000E3,5.600009221E1 +2.262108000E3,5.581775464E1 +2.262358000E3,5.037081152E1 +2.262613000E3,5.059162693E1 +2.262916000E3,5.459372597E1 +2.263271000E3,5.581642194E1 +2.263548000E3,5.702582989E1 +2.263802000E3,5.531282217E1 +2.264049000E3,5.356460573E1 +2.264318000E3,5.682743962E1 +2.264564000E3,5.353127135E1 +2.264854000E3,5.962134934E1 +2.265080000E3,5.858968032E1 +2.265326000E3,5.681259568E1 +2.265625000E3,5.635120121E1 +2.265871000E3,5.433379551E1 +2.266211000E3,4.913835205E1 +2.266510000E3,5.243179137E1 +2.266783000E3,4.886918417E1 +2.267043000E3,4.774131335E1 +2.267292000E3,4.892025491E1 +2.267553000E3,4.710213612E1 +2.267796000E3,4.847827931E1 +2.268042000E3,5.624471818E1 +2.268281000E3,5.286977188E1 +2.268548000E3,5.683989489E1 +2.268800000E3,5.459251055E1 +2.269086000E3,5.272841607E1 +2.269389000E3,5.585343514E1 +2.269616000E3,5.452972356E1 +2.269865000E3,5.183250423E1 +2.270167000E3,4.733442261E1 +2.270442000E3,4.736450762E1 +2.270667000E3,4.430645798E1 +2.270915000E3,4.635257501E1 +2.271160000E3,4.914582650E1 +2.271407000E3,4.938157659E1 +2.271656000E3,4.788630853E1 +2.271896000E3,4.778446083E1 +2.272198000E3,5.081637081E1 +2.272482000E3,4.630509256E1 +2.272722000E3,4.551027932E1 +2.273048000E3,5.074623045E1 +2.273321000E3,4.689236254E1 +2.273562000E3,4.960242652E1 +2.273859000E3,5.310274016E1 +2.274104000E3,5.391997859E1 +2.274392000E3,4.854992165E1 +2.274648000E3,4.610161890E1 +2.274915000E3,5.325141064E1 +2.275196000E3,4.823989698E1 +2.275460000E3,5.167706762E1 +2.275772000E3,4.424461998E1 +2.276008000E3,4.957193490E1 +2.276258000E3,4.220429916E1 +2.276545000E3,4.614900045E1 +2.276809000E3,4.247109284E1 +2.277119000E3,5.104311310E1 +2.277385000E3,4.898949856E1 +2.277651000E3,5.033981280E1 +2.277920000E3,4.504255509E1 +2.278210000E3,4.851295637E1 +2.278452000E3,4.975001222E1 +2.278771000E3,5.198599663E1 +2.279101000E3,5.078534391E1 +2.279348000E3,5.056977572E1 +2.279614000E3,4.645427419E1 +2.279894000E3,4.837428182E1 +2.280121000E3,4.672417188E1 +2.280416000E3,4.338010131E1 +2.280671000E3,4.552410696E1 +2.280941000E3,4.107346609E1 +2.281195000E3,4.850760260E1 +2.281477000E3,4.449785068E1 +2.281730000E3,3.834743898E1 +2.282028000E3,3.160451104E1 +2.282275000E3,2.921367430E1 +2.282509000E3,3.929432216E1 +2.282771000E3,3.560833020E1 +2.283021000E3,4.204425230E1 +2.283277000E3,4.897505461E1 +2.283570000E3,4.492050546E1 +2.283802000E3,4.549624302E1 +2.284053000E3,4.703134831E1 +2.284302000E3,4.492779574E1 +2.284580000E3,5.573526523E1 +2.284888000E3,4.583204799E1 +2.285186000E3,3.987632497E1 +2.285426000E3,4.276483306E1 +2.285670000E3,4.196646636E1 +2.285974000E3,4.127295807E1 +2.286241000E3,3.392540836E1 +2.286513000E3,3.045281657E1 +2.286755000E3,3.056149566E1 +2.287058000E3,4.234115907E1 +2.287358000E3,4.148011807E1 +2.287615000E3,4.752316696E1 +2.287890000E3,4.261643768E1 +2.288186000E3,3.531031146E1 +2.288451000E3,3.336926272E1 +2.288830000E3,3.217663691E1 +2.289083000E3,3.280943829E1 +2.289350000E3,4.037024361E1 +2.289606000E3,4.463743016E1 +2.289870000E3,3.926930450E1 +2.290142000E3,3.549021170E1 +2.290376000E3,3.657210104E1 +2.290669000E3,3.609483404E1 +2.290917000E3,3.935001060E1 +2.291190000E3,3.968762383E1 +2.291417000E3,3.622062011E1 +2.291698000E3,5.052972627E1 +2.292019000E3,4.472329620E1 +2.292314000E3,3.528869928E1 +2.292580000E3,3.171318762E1 +2.292867000E3,3.293682859E1 +2.293112000E3,2.980662334E1 +2.293408000E3,3.108877030E1 +2.293645000E3,3.411108767E1 +2.293948000E3,2.929195023E1 +2.294231000E3,2.830259325E1 +2.294484000E3,2.905088910E1 +2.294732000E3,3.046102835E1 +2.295049000E3,2.679058069E1 +2.295347000E3,2.620731663E1 +2.295594000E3,3.509528145E1 +2.295836000E3,2.657946529E1 +2.296130000E3,2.511368258E1 +2.296378000E3,2.555955915E1 +2.296634000E3,2.785949260E1 +2.296875000E3,2.654407944E1 +2.297117000E3,3.658368449E1 +2.297412000E3,3.412054652E1 +2.297648000E3,3.448252102E1 +2.297956000E3,3.528486686E1 +2.298205000E3,3.265291425E1 +2.298494000E3,2.963788314E1 +2.298798000E3,3.350933300E1 +2.299085000E3,3.038301619E1 +2.299338000E3,3.357142506E1 +2.299610000E3,4.744800671E1 +2.299868000E3,3.435626076E1 +2.300142000E3,3.368274389E1 +2.300402000E3,2.881246111E1 +2.300655000E3,3.097762310E1 +2.300898000E3,2.947567056E1 +2.301182000E3,3.214187359E1 +2.301423000E3,3.421070745E1 +2.301786000E3,5.117970534E1 +2.302087000E3,5.037784077E1 +2.302335000E3,5.283937176E1 +2.302644000E3,5.164119106E1 +2.302941000E3,5.300709748E1 +2.303240000E3,4.713488810E1 +2.303488000E3,4.524114677E1 +2.303739000E3,3.080285972E1 +2.304022000E3,2.293405577E1 +2.304254000E3,2.235464386E1 +2.304552000E3,2.949911358E1 +2.304876000E3,4.141349798E1 +2.305182000E3,4.156611078E1 +2.305491000E3,4.347125429E1 +2.305797000E3,4.579894404E1 +2.306107000E3,4.646123013E1 +2.306358000E3,4.517240887E1 +2.306604000E3,5.308475174E1 +2.306870000E3,4.681256924E1 +2.307168000E3,2.942058533E1 +2.307450000E3,2.986114457E1 +2.307717000E3,3.195150356E1 +2.308031000E3,3.775567348E1 +2.308265000E3,3.823556499E1 +2.308570000E3,2.909536341E1 +2.308842000E3,3.096070220E1 +2.309098000E3,4.060687649E1 +2.309391000E3,4.820113946E1 +2.309687000E3,4.619079404E1 +2.309928000E3,4.304793785E1 +2.310216000E3,4.976144450E1 +2.310446000E3,4.779148829E1 +2.310686000E3,5.167703897E1 +2.310979000E3,3.773719280E1 +2.311248000E3,2.923821784E1 +2.311466000E3,2.654081756E1 +2.311763000E3,2.616593312E1 +2.312001000E3,2.460963519E1 +2.312285000E3,2.554564289E1 +2.312588000E3,3.572755404E1 +2.312856000E3,4.274835909E1 +2.313074000E3,4.355953935E1 +2.313375000E3,5.377727845E1 +2.313611000E3,5.435235813E1 +2.313893000E3,5.477010993E1 +2.314137000E3,5.142421895E1 +2.314483000E3,4.794670725E1 +2.314780000E3,5.149445419E1 +2.315019000E3,5.127618051E1 +2.315306000E3,4.939341348E1 +2.315533000E3,4.928824788E1 +2.315832000E3,4.617335031E1 +2.316069000E3,3.696469062E1 +2.316377000E3,4.552948924E1 +2.316627000E3,4.672923062E1 +2.316913000E3,4.504192742E1 +2.317215000E3,4.364234368E1 +2.317558000E3,4.231291453E1 +2.317853000E3,4.886663905E1 +2.318118000E3,4.492895691E1 +2.318412000E3,4.464681620E1 +2.318711000E3,4.698360224E1 +2.318950000E3,4.454369095E1 +2.319250000E3,4.409609939E1 +2.319494000E3,4.283121809E1 +2.319793000E3,4.398770219E1 +2.320040000E3,4.728522548E1 +2.320336000E3,4.533798443E1 +2.320660000E3,4.548359371E1 +2.320908000E3,4.366718291E1 +2.321152000E3,5.139935964E1 +2.321408000E3,4.747980864E1 +2.321709000E3,3.867643032E1 +2.321952000E3,4.294445900E1 +2.322196000E3,4.336333736E1 +2.322445000E3,3.890531131E1 +2.322682000E3,4.087281677E1 +2.322980000E3,3.979668464E1 +2.323225000E3,4.157042707E1 +2.323553000E3,4.515881082E1 +2.323886000E3,3.868360739E1 +2.324184000E3,4.839319184E1 +2.324428000E3,4.298284223E1 +2.324669000E3,4.433761346E1 +2.324987000E3,4.011512195E1 +2.325233000E3,3.478551365E1 +2.325486000E3,4.180203002E1 +2.325789000E3,4.323726184E1 +2.326086000E3,3.985791110E1 +2.326333000E3,3.946244529E1 +2.326667000E3,4.066537977E1 +2.326925000E3,3.986903649E1 +2.327223000E3,4.142461274E1 +2.327521000E3,3.461788217E1 +2.327778000E3,3.326602717E1 +2.328102000E3,4.357074645E1 +2.328367000E3,5.496493564E1 +2.328618000E3,4.413482695E1 +2.328920000E3,4.170999616E1 +2.329183000E3,4.107694173E1 +2.329486000E3,5.342371220E1 +2.329729000E3,5.103134188E1 +2.330028000E3,4.716459977E1 +2.330382000E3,4.916498276E1 +2.330642000E3,4.801561309E1 +2.330930000E3,4.860033329E1 +2.331211000E3,5.037441690E1 +2.331463000E3,5.227972551E1 +2.331719000E3,4.516533742E1 +2.331971000E3,4.623606604E1 +2.332268000E3,3.207985320E1 +2.332513000E3,3.485208029E1 +2.332801000E3,4.367306984E1 +2.333109000E3,4.764897626E1 +2.333397000E3,4.844411921E1 +2.333779000E3,4.624834459E1 +2.334088000E3,4.492130047E1 +2.334331000E3,4.172849812E1 +2.334618000E3,4.243441154E1 +2.334859000E3,4.155300890E1 +2.335165000E3,3.508017133E1 +2.335414000E3,3.102497597E1 +2.335689000E3,3.346102792E1 +2.335938000E3,2.980210924E1 +2.336237000E3,2.815695425E1 +2.336480000E3,4.530841757E1 +2.336824000E3,4.476742737E1 +2.337075000E3,4.460293889E1 +2.337332000E3,5.054872999E1 +2.337583000E3,4.962100100E1 +2.337845000E3,5.224787063E1 +2.338132000E3,4.845338775E1 +2.338374000E3,4.675501048E1 +2.338651000E3,4.806540095E1 +2.338903000E3,4.707869991E1 +2.339145000E3,4.747595477E1 +2.339395000E3,3.449909829E1 +2.339700000E3,4.619360178E1 +2.340033000E3,4.785644508E1 +2.340329000E3,4.721347586E1 +2.340579000E3,4.302992844E1 +2.340828000E3,4.629706327E1 +2.341122000E3,4.550319757E1 +2.341368000E3,4.510038554E1 +2.341611000E3,4.752886315E1 +2.341876000E3,4.524122211E1 +2.342135000E3,2.990386366E1 +2.342396000E3,3.647672774E1 +2.342679000E3,2.854891758E1 +2.342936000E3,3.995722191E1 +2.343310000E3,4.501906630E1 +2.343555000E3,4.872212276E1 +2.343839000E3,4.566863325E1 +2.344134000E3,3.946814595E1 +2.344384000E3,4.796193013E1 +2.344656000E3,4.858552009E1 +2.344961000E3,4.902627763E1 +2.345257000E3,4.467711671E1 +2.345498000E3,3.756709071E1 +2.345764000E3,2.964206509E1 +2.346064000E3,4.283044167E1 +2.346415000E3,4.191014925E1 +2.346743000E3,4.910031818E1 +2.347021000E3,5.022624274E1 +2.347337000E3,5.257970130E1 +2.347586000E3,4.764257555E1 +2.347831000E3,4.353349182E1 +2.348126000E3,4.318604201E1 +2.348436000E3,4.825752031E1 +2.348710000E3,4.464987037E1 +2.348968000E3,4.690302679E1 +2.349225000E3,4.464063657E1 +2.349495000E3,5.114524492E1 +2.349740000E3,4.345049547E1 +2.350133000E3,4.655800825E1 +2.350382000E3,4.419356370E1 +2.350688000E3,4.308388818E1 +2.350960000E3,4.964188075E1 +2.351269000E3,5.137042419E1 +2.351542000E3,4.751708919E1 +2.351836000E3,3.239228651E1 +2.352067000E3,3.331178705E1 +2.352357000E3,4.628654550E1 +2.352625000E3,4.653844798E1 +2.352938000E3,4.419734850E1 +2.353231000E3,3.771763539E1 +2.353458000E3,3.489550836E1 +2.353713000E3,2.965581776E1 +2.353962000E3,3.457100474E1 +2.354201000E3,3.291595658E1 +2.354446000E3,2.791603976E1 +2.354711000E3,3.307930362E1 +2.355027000E3,5.311162000E1 +2.355290000E3,4.688373373E1 +2.355581000E3,3.663543876E1 +2.355868000E3,2.834403560E1 +2.356176000E3,5.001680718E1 +2.356518000E3,5.349221251E1 +2.356780000E3,5.234097025E1 +2.357043000E3,4.476475434E1 +2.357349000E3,5.160193390E1 +2.357584000E3,4.375385010E1 +2.357840000E3,3.709166207E1 +2.358125000E3,2.927191182E1 +2.358378000E3,4.114289062E1 +2.358676000E3,4.266518399E1 +2.358921000E3,4.641380631E1 +2.359210000E3,4.551221179E1 +2.359545000E3,4.099683883E1 +2.359801000E3,5.202602500E1 +2.360072000E3,5.207875379E1 +2.360343000E3,4.670310433E1 +2.360619000E3,4.619168123E1 +2.360865000E3,4.348453495E1 +2.361113000E3,4.603882932E1 +2.361353000E3,4.061885274E1 +2.361649000E3,4.873355826E1 +2.361884000E3,4.796347566E1 +2.362174000E3,4.419543811E1 +2.362420000E3,4.412529768E1 +2.362674000E3,4.315515456E1 +2.363006000E3,3.718353950E1 +2.363303000E3,4.131746877E1 +2.363556000E3,3.462830696E1 +2.363825000E3,3.224809166E1 +2.364105000E3,2.946532539E1 +2.364420000E3,4.082560353E1 +2.364671000E3,4.169760242E1 +2.364916000E3,4.728483165E1 +2.365158000E3,4.384961396E1 +2.365493000E3,3.327447630E1 +2.365797000E3,2.406470586E1 +2.366141000E3,2.410271882E1 +2.366422000E3,4.124818432E1 +2.366699000E3,4.300386829E1 +2.366994000E3,4.592409288E1 +2.367239000E3,4.402074721E1 +2.367492000E3,4.331525310E1 +2.367744000E3,4.351543939E1 +2.368045000E3,4.861325913E1 +2.368277000E3,4.345520025E1 +2.368543000E3,5.037549285E1 +2.368790000E3,3.455268589E1 +2.369034000E3,3.454484220E1 +2.369300000E3,3.436570372E1 +2.369544000E3,3.180799867E1 +2.369820000E3,4.460893996E1 +2.370091000E3,5.635981603E1 +2.370383000E3,4.932803438E1 +2.370635000E3,5.123791361E1 +2.370939000E3,4.749913119E1 +2.371193000E3,4.606624254E1 +2.371498000E3,4.453668838E1 +2.371779000E3,4.424564317E1 +2.372081000E3,5.022357768E1 +2.372347000E3,4.983363592E1 +2.372720000E3,4.311987242E1 +2.372969000E3,4.071927446E1 +2.373234000E3,3.624584431E1 +2.373535000E3,3.338407859E1 +2.373777000E3,2.744030282E1 +2.374025000E3,4.017686066E1 +2.374281000E3,4.153799732E1 +2.374537000E3,5.163713220E1 +2.374786000E3,4.970373114E1 +2.375033000E3,4.601563593E1 +2.375284000E3,4.943210146E1 +2.375577000E3,5.208741018E1 +2.375935000E3,4.780129348E1 +2.376167000E3,4.632707744E1 +2.376478000E3,5.008962536E1 +2.376734000E3,4.691729314E1 +2.376987000E3,4.593220796E1 +2.377250000E3,4.703621615E1 +2.377550000E3,4.863501898E1 +2.377838000E3,4.747349412E1 +2.378102000E3,4.430216971E1 +2.378373000E3,5.038477253E1 +2.378648000E3,4.679597376E1 +2.378873000E3,3.998762784E1 +2.379232000E3,4.140472709E1 +2.379480000E3,3.803559367E1 +2.379735000E3,4.292956565E1 +2.379993000E3,3.275484639E1 +2.380260000E3,3.159298587E1 +2.380513000E3,3.066195183E1 +2.380756000E3,4.846258942E1 +2.381012000E3,4.617374426E1 +2.381278000E3,4.338282331E1 +2.381580000E3,2.990070560E1 +2.381878000E3,3.384826320E1 +2.382127000E3,4.352773294E1 +2.382476000E3,3.711143795E1 +2.382756000E3,4.818117865E1 +2.383001000E3,4.694356023E1 +2.383312000E3,4.713242320E1 +2.383556000E3,4.945634369E1 +2.383815000E3,3.710449888E1 +2.384109000E3,4.990714727E1 +2.384350000E3,5.101970483E1 +2.384663000E3,4.290224010E1 +2.384917000E3,3.958873166E1 +2.385203000E3,4.207919898E1 +2.385583000E3,3.937588823E1 +2.385864000E3,3.927490117E1 +2.386122000E3,3.708577985E1 +2.386378000E3,3.104425869E1 +2.386630000E3,2.579918418E1 +2.386935000E3,4.201717352E1 +2.387186000E3,4.469788103E1 +2.387445000E3,3.928301867E1 +2.387699000E3,4.425054811E1 +2.387999000E3,2.901032620E1 +2.388242000E3,2.431535493E1 +2.388542000E3,4.330806788E1 +2.388866000E3,4.587852948E1 +2.389138000E3,5.068663336E1 +2.389420000E3,5.151872270E1 +2.389764000E3,4.501157372E1 +2.390012000E3,4.508008781E1 +2.390288000E3,4.471818734E1 +2.390546000E3,4.453717168E1 +2.390828000E3,3.435610332E1 +2.391113000E3,3.644941891E1 +2.391398000E3,3.741409627E1 +2.391658000E3,4.311052254E1 +2.391963000E3,3.924877335E1 +2.392296000E3,3.956869731E1 +2.392537000E3,3.230149795E1 +2.392786000E3,2.941450360E1 +2.393103000E3,3.366208400E1 +2.393349000E3,2.633153711E1 +2.393653000E3,2.492589605E1 +2.393892000E3,3.518582310E1 +2.394201000E3,3.668564238E1 +2.394454000E3,3.528359554E1 +2.394744000E3,3.673717548E1 +2.395034000E3,2.851979476E1 +2.395378000E3,2.558396774E1 +2.395660000E3,3.919896752E1 +2.395930000E3,3.339597104E1 +2.396187000E3,3.351358057E1 +2.396431000E3,3.743420456E1 +2.396691000E3,4.220523227E1 +2.396991000E3,3.500233403E1 +2.397251000E3,3.475187142E1 +2.397513000E3,3.604068947E1 +2.397821000E3,4.628512725E1 +2.398126000E3,4.463943287E1 +2.398428000E3,4.311458163E1 +2.398781000E3,4.375329409E1 +2.399076000E3,3.749705009E1 +2.399316000E3,4.116349149E1 +2.399615000E3,4.694603167E1 +2.399852000E3,5.327851923E1 +2.400143000E3,5.028800274E1 +2.400380000E3,5.055607260E1 +2.400618000E3,4.184216649E1 +2.400901000E3,4.280576865E1 +2.401144000E3,4.285187037E1 +2.401437000E3,5.414729311E1 +2.401684000E3,5.760726428E1 +2.402102000E3,5.135939721E1 +2.402349000E3,5.519633184E1 +2.402608000E3,5.937895156E1 +2.402853000E3,5.722678447E1 +2.403146000E3,5.316891996E1 +2.403388000E3,5.231876976E1 +2.403684000E3,4.275047946E1 +2.403921000E3,4.497010821E1 +2.404216000E3,5.935375427E1 +2.404454000E3,5.736369919E1 +2.404707000E3,5.877823139E1 +2.404971000E3,6.138635894E1 +2.405219000E3,5.726046839E1 +2.405473000E3,5.213953550E1 +2.405771000E3,4.831408459E1 +2.406024000E3,5.195614478E1 +2.406276000E3,4.885485021E1 +2.406567000E3,4.806131720E1 +2.406866000E3,3.817379603E1 +2.407129000E3,3.496803230E1 +2.407401000E3,4.679161915E1 +2.407625000E3,4.456362030E1 +2.407878000E3,4.499112684E1 +2.408171000E3,4.695848411E1 +2.408491000E3,4.136053284E1 +2.408771000E3,3.435960184E1 +2.409033000E3,2.907775515E1 +2.409287000E3,3.179102298E1 +2.409536000E3,2.535492331E1 +2.409797000E3,2.893863695E1 +2.410015000E3,3.195695462E1 +2.410232000E3,2.883661354E1 +2.410481000E3,4.380812340E1 +2.410735000E3,5.435187737E1 +2.411017000E3,4.390478627E1 +2.411330000E3,4.136550501E1 +2.411572000E3,6.231552653E1 +2.411823000E3,4.988484474E1 +2.412072000E3,4.569499772E1 +2.412339000E3,5.207639469E1 +2.412605000E3,5.314724412E1 +2.412842000E3,5.014855129E1 +2.413111000E3,4.925815950E1 +2.413332000E3,5.545199009E1 +2.413608000E3,4.910878211E1 +2.413873000E3,5.481296501E1 +2.414229000E3,4.620355557E1 +2.414532000E3,4.757632406E1 +2.414792000E3,4.414835702E1 +2.415033000E3,4.178334533E1 +2.415296000E3,3.571558610E1 +2.415577000E3,3.622280285E1 +2.415839000E3,4.187963398E1 +2.416103000E3,4.120303067E1 +2.416426000E3,5.043875316E1 +2.416696000E3,4.738536839E1 +2.417006000E3,4.790698669E1 +2.417250000E3,4.717323409E1 +2.417613000E3,4.889624394E1 +2.417923000E3,4.615999302E1 +2.418209000E3,4.554232436E1 +2.418487000E3,4.963147342E1 +2.418748000E3,4.540077281E1 +2.419058000E3,4.402622058E1 +2.419355000E3,3.991430025E1 +2.419631000E3,5.699106589E1 +2.419880000E3,4.542610605E1 +2.420140000E3,5.871400849E1 +2.420387000E3,5.593691155E1 +2.420634000E3,5.642590944E1 +2.420987000E3,4.942882304E1 +2.421235000E3,5.122637091E1 +2.421504000E3,5.506353313E1 +2.421808000E3,4.974630362E1 +2.422098000E3,4.922446567E1 +2.422401000E3,4.711891494E1 +2.422653000E3,4.935851062E1 +2.422946000E3,5.223840607E1 +2.423180000E3,5.181747333E1 +2.423433000E3,5.106095739E1 +2.423699000E3,4.283067128E1 +2.424023000E3,4.620110870E1 +2.424283000E3,4.813646184E1 +2.424556000E3,4.673905704E1 +2.424833000E3,5.139038068E1 +2.425085000E3,4.187355918E1 +2.425330000E3,4.200690239E1 +2.425641000E3,4.094986905E1 +2.425891000E3,3.869951887E1 +2.426156000E3,4.295178440E1 +2.426411000E3,4.445235603E1 +2.426673000E3,4.180705342E1 +2.426915000E3,4.159918394E1 +2.427275000E3,5.193727105E1 +2.427528000E3,4.985744468E1 +2.427773000E3,5.143594155E1 +2.428021000E3,5.687627643E1 +2.428258000E3,4.984177159E1 +2.428554000E3,4.104898524E1 +2.428794000E3,3.740238657E1 +2.429102000E3,4.424577609E1 +2.429345000E3,5.022623751E1 +2.429627000E3,5.346928374E1 +2.429864000E3,4.448852620E1 +2.430156000E3,3.611387858E1 +2.430475000E3,3.592739777E1 +2.430726000E3,3.269867125E1 +2.431039000E3,4.089980433E1 +2.431331000E3,3.752068977E1 +2.431567000E3,3.972155082E1 +2.431870000E3,4.098289208E1 +2.432107000E3,4.068605974E1 +2.432406000E3,3.978950334E1 +2.432643000E3,3.435438837E1 +2.432933000E3,3.806187937E1 +2.433169000E3,3.613809925E1 +2.433407000E3,5.573542624E1 +2.433734000E3,4.812688919E1 +2.434035000E3,5.332611421E1 +2.434315000E3,5.453475878E1 +2.434557000E3,5.156731049E1 +2.434849000E3,4.452924889E1 +2.435086000E3,4.091217005E1 +2.435380000E3,3.495963916E1 +2.435633000E3,3.994418328E1 +2.435904000E3,5.345258512E1 +2.436200000E3,4.573029424E1 +2.436434000E3,4.666848361E1 +2.436802000E3,4.148612785E1 +2.437044000E3,3.785277445E1 +2.437301000E3,3.823545546E1 +2.437549000E3,3.883632471E1 +2.437839000E3,4.756553033E1 +2.438077000E3,4.282797221E1 +2.438369000E3,5.291874167E1 +2.438606000E3,5.394671897E1 +2.438862000E3,5.490926284E1 +2.439159000E3,5.465277565E1 +2.439395000E3,5.245345229E1 +2.439637000E3,4.823915254E1 +2.440022000E3,5.658050668E1 +2.440281000E3,5.255468157E1 +2.440546000E3,4.365897331E1 +2.440828000E3,4.187636724E1 +2.441125000E3,4.916172461E1 +2.441365000E3,5.038635874E1 +2.441645000E3,5.238005511E1 +2.441868000E3,4.979548238E1 +2.442114000E3,5.164563876E1 +2.442410000E3,4.795862612E1 +2.442694000E3,4.406311297E1 +2.442980000E3,4.461066687E1 +2.443265000E3,3.990213588E1 +2.443525000E3,4.270339676E1 +2.443815000E3,4.671533321E1 +2.444064000E3,4.922681237E1 +2.444311000E3,5.115751882E1 +2.444605000E3,4.659279655E1 +2.444851000E3,4.805254743E1 +2.445152000E3,4.646584218E1 +2.445447000E3,3.924248597E1 +2.445698000E3,3.657018775E1 +2.445976000E3,3.978585816E1 +2.446317000E3,5.134473527E1 +2.446569000E3,4.872028256E1 +2.446851000E3,4.793203365E1 +2.447088000E3,4.917648823E1 +2.447345000E3,4.514648035E1 +2.447599000E3,4.827609085E1 +2.447864000E3,5.009329877E1 +2.448138000E3,4.858127151E1 +2.448430000E3,4.885678900E1 +2.448726000E3,4.038666943E1 +2.448956000E3,3.788824065E1 +2.449214000E3,4.872306097E1 +2.449516000E3,5.112419798E1 +2.449767000E3,4.394357347E1 +2.450028000E3,5.187358067E1 +2.450298000E3,4.764520743E1 +2.450575000E3,5.323515688E1 +2.450844000E3,4.730661272E1 +2.451150000E3,5.022143967E1 +2.451400000E3,4.244080150E1 +2.451697000E3,4.540622562E1 +2.452002000E3,4.987171470E1 +2.452273000E3,4.928771096E1 +2.452519000E3,4.415614577E1 +2.452847000E3,4.529816891E1 +2.453138000E3,3.130480949E1 +2.453407000E3,3.727195618E1 +2.453707000E3,4.218798188E1 +2.453975000E3,3.196426842E1 +2.454240000E3,2.986758668E1 +2.454534000E3,4.365366219E1 +2.454795000E3,4.363233606E1 +2.455054000E3,4.576258560E1 +2.455297000E3,4.600510844E1 +2.455546000E3,5.143992334E1 +2.455816000E3,4.451792491E1 +2.456172000E3,3.834658463E1 +2.456438000E3,4.961865906E1 +2.456716000E3,4.301133302E1 +2.457025000E3,5.185950840E1 +2.457284000E3,4.578127088E1 +2.457582000E3,4.860789001E1 +2.457857000E3,4.548301241E1 +2.458087000E3,5.726595471E1 +2.458343000E3,4.581143143E1 +2.458590000E3,4.593076535E1 +2.458898000E3,4.646845677E1 +2.459143000E3,4.385664195E1 +2.459499000E3,3.921291428E1 +2.459756000E3,4.336490005E1 +2.460079000E3,5.059416731E1 +2.460323000E3,5.383728406E1 +2.460609000E3,4.336002656E1 +2.460894000E3,3.810358455E1 +2.461148000E3,4.341384577E1 +2.461406000E3,4.240002850E1 +2.461668000E3,4.220171306E1 +2.461957000E3,4.165441002E1 +2.462218000E3,4.110791112E1 +2.462543000E3,3.718059239E1 +2.462873000E3,4.490190793E1 +2.463162000E3,4.449127269E1 +2.463461000E3,5.110192526E1 +2.463709000E3,4.670759724E1 +2.464024000E3,4.554197086E1 +2.464345000E3,4.295638115E1 +2.464598000E3,4.260186095E1 +2.464844000E3,3.838281454E1 +2.465094000E3,4.864552318E1 +2.465348000E3,4.722694913E1 +2.465597000E3,5.723123112E1 +2.465970000E3,5.678247819E1 +2.466226000E3,5.304857482E1 +2.466490000E3,5.799491543E1 +2.466745000E3,5.566332539E1 +2.467000000E3,5.532803606E1 +2.467301000E3,5.480406224E1 +2.467518000E3,5.281426808E1 +2.467773000E3,5.319750336E1 +2.468030000E3,4.504180471E1 +2.468309000E3,4.011552860E1 +2.468536000E3,3.286668959E1 +2.468782000E3,5.187437917E1 +2.469159000E3,5.342027818E1 +2.469405000E3,4.655027014E1 +2.469685000E3,4.875434900E1 +2.469968000E3,4.400777727E1 +2.470228000E3,4.944370484E1 +2.470524000E3,4.819898526E1 +2.470826000E3,4.906267157E1 +2.471101000E3,4.559683511E1 +2.471407000E3,5.066052597E1 +2.471662000E3,5.052511938E1 +2.471933000E3,4.854316053E1 +2.472243000E3,4.720397127E1 +2.472513000E3,4.539713693E1 +2.472765000E3,4.504800702E1 +2.473077000E3,4.756996091E1 +2.473381000E3,4.502772911E1 +2.473668000E3,4.844141365E1 +2.473909000E3,4.718772198E1 +2.474176000E3,5.036014826E1 +2.474415000E3,4.734822430E1 +2.474659000E3,4.506554867E1 +2.474941000E3,4.590585801E1 +2.475227000E3,4.808550728E1 +2.475549000E3,4.744751902E1 +2.475816000E3,5.139502060E1 +2.476110000E3,4.565542501E1 +2.476367000E3,4.502651441E1 +2.476614000E3,4.529198411E1 +2.476876000E3,4.841642572E1 +2.477138000E3,4.904966766E1 +2.477430000E3,5.061185879E1 +2.477703000E3,4.805167318E1 +2.477973000E3,4.840268940E1 +2.478233000E3,4.609690512E1 +2.478491000E3,5.080806253E1 +2.478854000E3,4.929079330E1 +2.479112000E3,4.887431247E1 +2.479382000E3,4.582116343E1 +2.479677000E3,4.614295426E1 +2.479939000E3,5.004731017E1 +2.480247000E3,5.118895049E1 +2.480496000E3,4.750144805E1 +2.480785000E3,4.691637905E1 +2.481084000E3,4.575243018E1 +2.481328000E3,4.498034363E1 +2.481622000E3,5.049144453E1 +2.481951000E3,4.811617152E1 +2.482214000E3,4.600387593E1 +2.482494000E3,5.163944801E1 +2.482753000E3,4.933311419E1 +2.482991000E3,4.946534766E1 +2.483244000E3,4.580757204E1 +2.483487000E3,4.797573247E1 +2.483734000E3,4.560844100E1 +2.483990000E3,5.039329574E1 +2.484313000E3,5.052905321E1 +2.484577000E3,5.131938081E1 +2.484833000E3,4.901245069E1 +2.485113000E3,5.233648083E1 +2.485461000E3,5.215489758E1 +2.485749000E3,5.451606287E1 +2.486018000E3,5.043201098E1 +2.486334000E3,5.091085093E1 +2.486650000E3,4.972266732E1 +2.486916000E3,4.846864702E1 +2.487167000E3,4.843730663E1 +2.487412000E3,5.285205631E1 +2.487677000E3,5.695937588E1 +2.487965000E3,5.067248408E1 +2.488216000E3,4.955689254E1 +2.488580000E3,4.789771891E1 +2.488828000E3,4.640186686E1 +2.489150000E3,4.956289338E1 +2.489428000E3,4.916705799E1 +2.489718000E3,4.250319869E1 +2.489959000E3,4.211788948E1 +2.490259000E3,4.711467977E1 +2.490508000E3,5.336087879E1 +2.490805000E3,5.163346506E1 +2.491066000E3,5.303328317E1 +2.491377000E3,5.018594076E1 +2.491684000E3,4.569780009E1 +2.492029000E3,4.677168871E1 +2.492273000E3,4.586755987E1 +2.492522000E3,5.020047651E1 +2.492768000E3,4.585538278E1 +2.493006000E3,5.027464230E1 +2.493315000E3,4.719632652E1 +2.493608000E3,4.892998103E1 +2.493874000E3,4.659859577E1 +2.494131000E3,4.485377967E1 +2.494387000E3,4.661063763E1 +2.494635000E3,4.873112034E1 +2.494904000E3,5.011233058E1 +2.495259000E3,4.996207620E1 +2.495523000E3,5.026371938E1 +2.495789000E3,4.897334151E1 +2.496086000E3,4.919412247E1 +2.496330000E3,4.448238049E1 +2.496598000E3,5.779881243E1 +2.496845000E3,5.068443192E1 +2.497079000E3,5.452206946E1 +2.497328000E3,6.091811093E1 +2.497574000E3,5.545025588E1 +2.497819000E3,5.118451852E1 +2.498124000E3,5.647063434E1 +2.498436000E3,5.942897676E1 +2.498681000E3,6.063927987E1 +2.498932000E3,5.256584857E1 +2.499203000E3,5.942844343E1 +2.499465000E3,5.268198933E1 +2.499726000E3,5.561310022E1 +2.499989000E3,5.551348586E1 +2.500270000E3,5.728700965E1 +2.500550000E3,5.848024533E1 +2.500856000E3,5.545551244E1 +2.501156000E3,7.074712648E1 +2.501405000E3,6.649397556E1 +2.501727000E3,6.577106108E1 +2.501964000E3,5.791155905E1 +2.502223000E3,6.571272960E1 +2.502476000E3,5.223691777E1 +2.502731000E3,5.099379006E1 +2.502989000E3,4.996024440E1 +2.503265000E3,4.587573023E1 +2.503515000E3,6.660646739E1 +2.503792000E3,5.426812996E1 +2.504090000E3,4.221263073E1 +2.504348000E3,3.961359220E1 +2.504607000E3,3.317448387E1 +2.504957000E3,2.765634596E1 +2.505202000E3,5.260508289E1 +2.505444000E3,4.970766119E1 +2.505723000E3,5.961421356E1 +2.506010000E3,5.761735716E1 +2.506316000E3,4.386011183E1 +2.506629000E3,3.297646158E1 +2.506928000E3,3.461351567E1 +2.507171000E3,3.422494413E1 +2.507415000E3,3.898815557E1 +2.507661000E3,3.916714623E1 +2.507958000E3,4.409544564E1 +2.508199000E3,4.040812578E1 +2.508495000E3,4.100804729E1 +2.508767000E3,4.155083379E1 +2.509073000E3,4.256659126E1 +2.509346000E3,4.665111645E1 +2.509615000E3,4.785704834E1 +2.509926000E3,4.957995318E1 +2.510246000E3,5.281308228E1 +2.510533000E3,5.716195403E1 +2.510847000E3,5.384222007E1 +2.511087000E3,4.682850643E1 +2.511483000E3,5.585229854E1 +2.511769000E3,5.797880255E1 +2.512061000E3,5.008051045E1 +2.512305000E3,4.616221083E1 +2.512545000E3,5.837834308E1 +2.512782000E3,4.588894556E1 +2.513082000E3,5.827978204E1 +2.513321000E3,5.321307958E1 +2.513625000E3,5.419914666E1 +2.513860000E3,4.249936315E1 +2.514160000E3,5.093700871E1 +2.514505000E3,4.733309734E1 +2.514807000E3,5.739188753E1 +2.515049000E3,5.684870925E1 +2.515326000E3,5.429714525E1 +2.515551000E3,5.304528611E1 +2.515847000E3,6.048302750E1 +2.516097000E3,5.298092655E1 +2.516397000E3,5.664346713E1 +2.516634000E3,5.062362510E1 +2.516910000E3,5.059011404E1 +2.517165000E3,5.074931344E1 +2.517424000E3,5.193937267E1 +2.517672000E3,4.773080825E1 +2.517933000E3,4.886471101E1 +2.518191000E3,4.258084657E1 +2.518440000E3,4.144243799E1 +2.518697000E3,3.266068365E1 +2.518962000E3,3.662092465E1 +2.519211000E3,4.002326553E1 +2.519469000E3,5.193824268E1 +2.519821000E3,5.548381163E1 +2.520087000E3,5.245445808E1 +2.520336000E3,4.447536752E1 +2.520718000E3,5.931091731E1 +2.521010000E3,5.514928156E1 +2.521305000E3,5.194242569E1 +2.521541000E3,5.632439964E1 +2.521781000E3,4.768714929E1 +2.522074000E3,3.967116686E1 +2.522306000E3,3.457523914E1 +2.522554000E3,3.414939493E1 +2.522808000E3,3.034285017E1 +2.523103000E3,3.725639399E1 +2.523347000E3,5.824523011E1 +2.523645000E3,5.697741808E1 +2.524002000E3,5.995361389E1 +2.524244000E3,5.516819042E1 +2.524491000E3,5.520201782E1 +2.524765000E3,4.576677797E1 +2.524988000E3,5.785527848E1 +2.525299000E3,5.093237528E1 +2.525544000E3,4.090627494E1 +2.525822000E3,3.111750175E1 +2.526056000E3,2.764971736E1 +2.526311000E3,2.852524033E1 +2.526617000E3,3.508264660E1 +2.526905000E3,5.067917717E1 +2.527241000E3,4.646824007E1 +2.527487000E3,3.686495987E1 +2.527738000E3,3.822220480E1 +2.527988000E3,3.764348220E1 +2.528232000E3,4.278450517E1 +2.528563000E3,4.881983602E1 +2.528870000E3,4.048435148E1 +2.529125000E3,4.047282835E1 +2.529398000E3,4.602715630E1 +2.529632000E3,4.358719476E1 +2.529925000E3,4.185499728E1 +2.530224000E3,4.428160693E1 +2.530451000E3,5.370094630E1 +2.530771000E3,4.662369716E1 +2.531057000E3,4.486368653E1 +2.531322000E3,3.985753269E1 +2.531579000E3,3.868983993E1 +2.531842000E3,4.397673982E1 +2.532129000E3,4.465178920E1 +2.532379000E3,4.071629694E1 +2.532681000E3,3.700154265E1 +2.532925000E3,3.709745900E1 +2.533169000E3,3.856350220E1 +2.533454000E3,3.780017804E1 +2.533739000E3,4.079153270E1 +2.534053000E3,3.467337947E1 +2.534304000E3,3.872357849E1 +2.534571000E3,4.188092371E1 +2.534878000E3,4.226520735E1 +2.535180000E3,4.433351029E1 +2.535433000E3,4.196124368E1 +2.535679000E3,4.159710638E1 +2.535934000E3,4.131920574E1 +2.536230000E3,4.013333591E1 +2.536496000E3,3.861252617E1 +2.536812000E3,3.205810696E1 +2.537071000E3,3.900017908E1 +2.537321000E3,3.720890888E1 +2.537589000E3,3.571752088E1 +2.537899000E3,3.466875388E1 +2.538158000E3,3.490809444E1 +2.538414000E3,2.846246396E1 +2.538721000E3,3.471466025E1 +2.539000000E3,3.262267006E1 +2.539250000E3,2.900340615E1 +2.539526000E3,2.962734770E1 +2.539843000E3,4.051335289E1 +2.540219000E3,3.732414883E1 +2.540478000E3,3.212776280E1 +2.540731000E3,3.980002135E1 +2.541002000E3,4.402529692E1 +2.541305000E3,3.531142487E1 +2.541570000E3,4.157255463E1 +2.541892000E3,4.121686373E1 +2.542138000E3,3.512055425E1 +2.542435000E3,3.058422839E1 +2.542704000E3,3.860796470E1 +2.542951000E3,4.158955283E1 +2.543254000E3,4.126835549E1 +2.543598000E3,4.557459954E1 +2.543842000E3,4.195620726E1 +2.544088000E3,4.759905541E1 +2.544347000E3,4.089593512E1 +2.544592000E3,4.224934090E1 +2.544840000E3,3.548720999E1 +2.545141000E3,4.189266277E1 +2.545422000E3,4.058854606E1 +2.545652000E3,3.761551365E1 +2.545897000E3,3.643024250E1 +2.546173000E3,3.544845567E1 +2.546439000E3,3.816851754E1 +2.546779000E3,3.801212128E1 +2.547110000E3,3.288266257E1 +2.547379000E3,4.063952307E1 +2.547641000E3,4.765684387E1 +2.547893000E3,4.402640436E1 +2.548143000E3,4.172886183E1 +2.548441000E3,3.808222191E1 +2.548685000E3,3.637035664E1 +2.548962000E3,3.879815953E1 +2.549230000E3,5.433785228E1 +2.549540000E3,5.428002325E1 +2.549852000E3,5.430864003E1 +2.550121000E3,5.376325395E1 +2.550389000E3,5.250586376E1 +2.550641000E3,5.329413218E1 +2.550946000E3,3.817927317E1 +2.551218000E3,3.779289824E1 +2.551493000E3,4.904361964E1 +2.551759000E3,5.500168111E1 +2.552006000E3,4.745774118E1 +2.552261000E3,5.304049624E1 +2.552515000E3,4.933664563E1 +2.552779000E3,3.482983031E1 +2.553043000E3,3.914561037E1 +2.553378000E3,3.318943686E1 +2.553659000E3,2.674748735E1 +2.553917000E3,2.500565902E1 +2.554234000E3,3.331261434E1 +2.554489000E3,3.380079275E1 +2.554753000E3,3.632095841E1 +2.554996000E3,3.606888467E1 +2.555239000E3,4.759559903E1 +2.555541000E3,5.588542149E1 +2.555837000E3,5.768171500E1 +2.556076000E3,5.837962370E1 +2.556358000E3,5.761486260E1 +2.556647000E3,5.408185929E1 +2.556914000E3,5.624815374E1 +2.557248000E3,4.727853091E1 +2.557554000E3,3.999550071E1 +2.557822000E3,4.090986684E1 +2.558062000E3,3.411171601E1 +2.558302000E3,3.042998918E1 +2.558550000E3,3.392526215E1 +2.558807000E3,3.801243567E1 +2.559082000E3,4.390440101E1 +2.559357000E3,4.215163378E1 +2.559616000E3,4.616573562E1 +2.559972000E3,4.170066459E1 +2.560245000E3,2.972551911E1 +2.560517000E3,3.987643023E1 +2.560765000E3,4.046237199E1 +2.561011000E3,4.268708813E1 +2.561258000E3,4.450541644E1 +2.561531000E3,4.611922799E1 +2.561775000E3,4.492719317E1 +2.562027000E3,4.345851098E1 +2.562302000E3,5.022295857E1 +2.562533000E3,4.986016935E1 +2.562786000E3,3.932672790E1 +2.563211000E3,3.777119812E1 +2.563479000E3,4.577537823E1 +2.563731000E3,5.443473776E1 +2.563977000E3,5.947837126E1 +2.564252000E3,5.014881480E1 +2.564539000E3,4.884415531E1 +2.564781000E3,4.451698294E1 +2.565088000E3,3.693106642E1 +2.565361000E3,3.096881298E1 +2.565624000E3,2.635486448E1 +2.565885000E3,2.734213385E1 +2.566246000E3,3.979362654E1 +2.566493000E3,3.382738554E1 +2.566797000E3,3.469438245E1 +2.567097000E3,4.097528595E1 +2.567346000E3,4.285297734E1 +2.567644000E3,4.930003444E1 +2.567891000E3,4.540271843E1 +2.568170000E3,3.109775861E1 +2.568407000E3,2.738661195E1 +2.568701000E3,3.024785153E1 +2.568952000E3,3.235217301E1 +2.569220000E3,3.196941264E1 +2.569567000E3,4.299833718E1 +2.569862000E3,4.496000509E1 +2.570178000E3,4.562225815E1 +2.570442000E3,4.437451260E1 +2.570707000E3,3.949227756E1 +2.570950000E3,2.951847370E1 +2.571202000E3,3.800151296E1 +2.571472000E3,4.650517590E1 +2.571732000E3,3.967561664E1 +2.571975000E3,3.149456620E1 +2.572246000E3,5.234083710E1 +2.572527000E3,4.544839619E1 +2.572859000E3,4.436174777E1 +2.573168000E3,4.369290756E1 +2.573429000E3,4.420543128E1 +2.573728000E3,4.389854646E1 +2.573968000E3,4.580346210E1 +2.574268000E3,4.881141748E1 +2.574509000E3,4.708023256E1 +2.574802000E3,3.388696242E1 +2.575045000E3,2.922489212E1 +2.575339000E3,3.941924125E1 +2.575597000E3,4.733040375E1 +2.575906000E3,4.790376430E1 +2.576245000E3,4.328559785E1 +2.576517000E3,4.720947277E1 +2.576791000E3,4.076260480E1 +2.577092000E3,3.249905806E1 +2.577324000E3,3.886850876E1 +2.577566000E3,3.577483806E1 +2.577814000E3,4.105002685E1 +2.578080000E3,3.881208350E1 +2.578375000E3,5.720708534E1 +2.578624000E3,4.933084675E1 +2.578932000E3,5.989261963E1 +2.579254000E3,5.193127116E1 +2.579506000E3,4.843920497E1 +2.579747000E3,4.570821188E1 +2.580001000E3,4.446748829E1 +2.580244000E3,4.006228376E1 +2.580497000E3,2.933332862E1 +2.580745000E3,4.525678604E1 +2.580989000E3,4.717489692E1 +2.581288000E3,5.239736286E1 +2.581587000E3,5.268105849E1 +2.581851000E3,4.960616241E1 +2.582112000E3,4.637217789E1 +2.582361000E3,4.676379781E1 +2.582583000E3,4.083594902E1 +2.582903000E3,2.696140701E1 +2.583176000E3,2.668057590E1 +2.583429000E3,2.900886287E1 +2.583692000E3,2.732690452E1 +2.583951000E3,3.475308428E1 +2.584205000E3,4.782860484E1 +2.584480000E3,4.928978168E1 +2.584742000E3,3.697304160E1 +2.585017000E3,3.390321432E1 +2.585248000E3,4.818778278E1 +2.585552000E3,5.175969441E1 +2.585851000E3,4.752724055E1 +2.586108000E3,5.047732228E1 +2.586408000E3,5.003267867E1 +2.586651000E3,4.995698879E1 +2.586934000E3,4.985539117E1 +2.587202000E3,4.558719065E1 +2.587455000E3,4.973387236E1 +2.587702000E3,5.190737686E1 +2.587964000E3,4.955516560E1 +2.588211000E3,5.039526507E1 +2.588461000E3,3.897042435E1 +2.588748000E3,2.919124678E1 +2.589063000E3,3.061867322E1 +2.589398000E3,4.010104895E1 +2.589690000E3,3.640442215E1 +2.589998000E3,4.479952304E1 +2.590261000E3,4.757967128E1 +2.590558000E3,4.812333533E1 +2.590802000E3,4.603482331E1 +2.591083000E3,2.960043464E1 +2.591326000E3,3.684354753E1 +2.591591000E3,4.359182452E1 +2.591849000E3,4.788602237E1 +2.592228000E3,4.468031543E1 +2.592527000E3,3.894688899E1 +2.592778000E3,2.800490026E1 +2.593035000E3,4.310888325E1 +2.593333000E3,4.628339380E1 +2.593602000E3,4.440124594E1 +2.593883000E3,4.123163794E1 +2.594160000E3,3.127645239E1 +2.594429000E3,3.071812965E1 +2.594749000E3,4.618618296E1 +2.595070000E3,5.248181749E1 +2.595312000E3,4.786265879E1 +2.595668000E3,3.990233287E1 +2.595973000E3,4.173583037E1 +2.596256000E3,3.709278400E1 +2.596497000E3,3.229385861E1 +2.596813000E3,4.380573021E1 +2.597084000E3,4.783628282E1 +2.597325000E3,5.024593568E1 +2.597578000E3,5.102379549E1 +2.597828000E3,4.760481411E1 +2.598089000E3,3.822780835E1 +2.598387000E3,3.417342767E1 +2.598736000E3,2.863579065E1 +2.598981000E3,2.886228233E1 +2.599228000E3,2.855965247E1 +2.599493000E3,3.083396855E1 +2.599764000E3,3.581659374E1 +2.600032000E3,4.317647632E1 +2.600330000E3,4.853625621E1 +2.600623000E3,5.102467342E1 +2.600867000E3,4.877836926E1 +2.601112000E3,4.705612686E1 +2.601365000E3,4.889085742E1 +2.601612000E3,4.654488136E1 +2.601956000E3,4.055024190E1 +2.602220000E3,3.990851266E1 +2.602547000E3,3.648352551E1 +2.602794000E3,5.324982942E1 +2.603078000E3,5.268965363E1 +2.603338000E3,4.851189142E1 +2.603637000E3,5.135006473E1 +2.603925000E3,4.939301404E1 +2.604238000E3,5.337101389E1 +2.604488000E3,5.022765286E1 +2.604734000E3,5.253186666E1 +2.605064000E3,4.127453431E1 +2.605321000E3,4.114070867E1 +2.605572000E3,4.042282231E1 +2.605820000E3,4.255774466E1 +2.606073000E3,4.746726668E1 +2.606319000E3,4.761848671E1 +2.606565000E3,4.983628061E1 +2.606849000E3,3.046517787E1 +2.607082000E3,3.832211131E1 +2.607339000E3,4.741131966E1 +2.607609000E3,4.453335589E1 +2.607874000E3,3.545592153E1 +2.608197000E3,4.672891376E1 +2.608451000E3,4.755881287E1 +2.608706000E3,4.827652641E1 +2.608952000E3,4.727153141E1 +2.609226000E3,4.731450942E1 +2.609537000E3,3.981385402E1 +2.609784000E3,3.194698732E1 +2.610041000E3,3.314164027E1 +2.610283000E3,2.819786732E1 +2.610546000E3,2.664547785E1 +2.610857000E3,2.913544778E1 +2.611125000E3,3.961651759E1 +2.611432000E3,3.852777426E1 +2.611666000E3,3.205673146E1 +2.611951000E3,4.233182010E1 +2.612229000E3,3.378509898E1 +2.612454000E3,4.071755552E1 +2.612730000E3,5.018278065E1 +2.613050000E3,4.100034395E1 +2.613359000E3,3.892108016E1 +2.613628000E3,5.091321799E1 +2.613871000E3,4.336916838E1 +2.614108000E3,3.960788811E1 +2.614408000E3,3.948227358E1 +2.614722000E3,3.631863435E1 +2.614975000E3,4.057042340E1 +2.615256000E3,4.414132009E1 +2.615486000E3,4.180934435E1 +2.615750000E3,4.153999936E1 +2.615997000E3,3.521796466E1 +2.616260000E3,5.443854687E1 +2.616548000E3,5.408118563E1 +2.616842000E3,4.951275264E1 +2.617090000E3,5.182722031E1 +2.617344000E3,4.327522742E1 +2.617643000E3,5.375122422E1 +2.617975000E3,5.216635190E1 +2.618233000E3,4.126006713E1 +2.618497000E3,4.980260599E1 +2.618804000E3,4.655838197E1 +2.619044000E3,4.977945459E1 +2.619327000E3,4.875559075E1 +2.619562000E3,4.983226039E1 +2.619834000E3,4.741689273E1 +2.620075000E3,4.923498746E1 +2.620352000E3,4.923432072E1 +2.620664000E3,4.040876723E1 +2.620916000E3,3.889825840E1 +2.621142000E3,5.245081579E1 +2.621448000E3,4.684934794E1 +2.621687000E3,4.583906640E1 +2.621992000E3,4.366517623E1 +2.622230000E3,3.373873872E1 +2.622475000E3,3.701694694E1 +2.622750000E3,3.544967426E1 +2.623008000E3,3.363206222E1 +2.623285000E3,4.009589135E1 +2.623562000E3,4.408709562E1 +2.623825000E3,4.800133533E1 +2.624131000E3,4.855432282E1 +2.624414000E3,4.808187444E1 +2.624671000E3,5.252566194E1 +2.624932000E3,4.890333861E1 +2.625183000E3,4.370428781E1 +2.625430000E3,3.668118979E1 +2.625747000E3,4.353955331E1 +2.626003000E3,4.224026412E1 +2.626267000E3,4.311785789E1 +2.626514000E3,3.517806855E1 +2.626763000E3,3.981966751E1 +2.627025000E3,3.444602265E1 +2.627334000E3,3.341390757E1 +2.627660000E3,3.926570124E1 +2.627920000E3,4.341089288E1 +2.628216000E3,4.081134870E1 +2.628467000E3,3.912400300E1 +2.628730000E3,3.657553946E1 +2.629000000E3,3.072838888E1 +2.629284000E3,2.929703023E1 +2.629549000E3,3.378014550E1 +2.629844000E3,4.760306323E1 +2.630080000E3,4.024322042E1 +2.630373000E3,3.235913140E1 +2.630611000E3,3.920509877E1 +2.630919000E3,5.103841717E1 +2.631222000E3,5.813980805E1 +2.631514000E3,5.190256812E1 +2.631753000E3,4.653294376E1 +2.632054000E3,4.782140153E1 +2.632295000E3,4.977458693E1 +2.632592000E3,5.371197571E1 +2.632828000E3,5.056512655E1 +2.633140000E3,5.325824914E1 +2.633383000E3,4.973751947E1 +2.633632000E3,4.853342473E1 +2.633950000E3,3.905011010E1 +2.634254000E3,3.751700759E1 +2.634549000E3,5.292771607E1 +2.634786000E3,5.557450981E1 +2.635082000E3,4.974692283E1 +2.635319000E3,5.393938197E1 +2.635611000E3,4.675981835E1 +2.635848000E3,4.299614910E1 +2.636145000E3,3.756646750E1 +2.636395000E3,3.824353200E1 +2.636648000E3,3.045317917E1 +2.636942000E3,3.257931849E1 +2.637299000E3,3.010616025E1 +2.637599000E3,4.995329379E1 +2.637834000E3,4.824584689E1 +2.638071000E3,5.059212149E1 +2.638363000E3,5.330633429E1 +2.638612000E3,5.343612136E1 +2.638897000E3,4.755550111E1 +2.639122000E3,4.119881812E1 +2.639362000E3,3.902726568E1 +2.639659000E3,4.451944661E1 +2.639896000E3,4.587471035E1 +2.640164000E3,4.115502802E1 +2.640409000E3,4.505311495E1 +2.640656000E3,4.913968689E1 +2.640951000E3,5.110923180E1 +2.641208000E3,4.281604120E1 +2.641505000E3,4.825854961E1 +2.641748000E3,4.861588211E1 +2.642059000E3,4.450542116E1 +2.642304000E3,4.274821036E1 +2.642556000E3,3.503446158E1 +2.642862000E3,4.080900103E1 +2.643164000E3,4.152079562E1 +2.643527000E3,3.935881933E1 +2.643833000E3,3.760570593E1 +2.644082000E3,3.959144469E1 +2.644327000E3,4.007918652E1 +2.644573000E3,4.288120719E1 +2.644814000E3,4.793099478E1 +2.645114000E3,4.424069452E1 +2.645391000E3,4.078427844E1 +2.645635000E3,3.902795236E1 +2.645871000E3,4.393773718E1 +2.646111000E3,4.085627764E1 +2.646355000E3,4.393316509E1 +2.646690000E3,4.428892908E1 +2.646958000E3,4.601464396E1 +2.647235000E3,4.300358696E1 +2.647474000E3,4.083829680E1 +2.647758000E3,5.406220971E1 +2.648003000E3,4.253716581E1 +2.648273000E3,4.506680000E1 +2.648514000E3,3.500046728E1 +2.648758000E3,3.537281462E1 +2.649004000E3,5.013819891E1 +2.649251000E3,5.388943830E1 +2.649556000E3,5.656370208E1 +2.649891000E3,5.696480404E1 +2.650216000E3,4.675400561E1 +2.650515000E3,4.179549274E1 +2.650777000E3,4.536624285E1 +2.651084000E3,4.297370528E1 +2.651336000E3,4.376785410E1 +2.651635000E3,3.354560746E1 +2.651881000E3,2.537939319E1 +2.652180000E3,3.168783420E1 +2.652481000E3,4.898553010E1 +2.652737000E3,5.438993966E1 +2.652992000E3,4.963834041E1 +2.653252000E3,4.227369117E1 +2.653502000E3,4.301436765E1 +2.653812000E3,3.649724292E1 +2.654061000E3,4.086211966E1 +2.654320000E3,3.223281741E1 +2.654605000E3,2.807672508E1 +2.654836000E3,2.764825285E1 +2.655100000E3,4.598866982E1 +2.655350000E3,4.383741939E1 +2.655590000E3,4.883555528E1 +2.655837000E3,4.815765811E1 +2.656131000E3,5.047261312E1 +2.656369000E3,5.124829846E1 +2.656626000E3,3.956134092E1 +2.656925000E3,3.503286763E1 +2.657200000E3,3.224209198E1 +2.657447000E3,4.294806319E1 +2.657761000E3,4.898454413E1 +2.658011000E3,5.320780356E1 +2.658286000E3,5.345186604E1 +2.658542000E3,4.849291145E1 +2.658789000E3,5.098648363E1 +2.659034000E3,4.892931203E1 +2.659289000E3,4.580698225E1 +2.659530000E3,3.709695762E1 +2.659834000E3,3.457925551E1 +2.660081000E3,3.855219813E1 +2.660383000E3,3.845534481E1 +2.660628000E3,4.619372518E1 +2.660921000E3,4.848307744E1 +2.661167000E3,4.790880967E1 +2.661464000E3,4.667520128E1 +2.661710000E3,4.098851532E1 +2.662006000E3,4.035468673E1 +2.662245000E3,3.753010710E1 +2.662592000E3,4.792080660E1 +2.662862000E3,4.709835917E1 +2.663123000E3,3.501409506E1 +2.663374000E3,3.240664296E1 +2.663631000E3,4.326696615E1 +2.663874000E3,4.411177933E1 +2.664133000E3,3.936378145E1 +2.664382000E3,3.443614227E1 +2.664648000E3,3.761654306E1 +2.664944000E3,5.164457484E1 +2.665198000E3,2.810669920E1 +2.665512000E3,2.931307063E1 +2.665876000E3,3.108643425E1 +2.666131000E3,3.278101889E1 +2.666439000E3,4.277860150E1 +2.666693000E3,4.213131936E1 +2.667002000E3,3.935849781E1 +2.667259000E3,4.137879880E1 +2.667575000E3,3.790565018E1 +2.667827000E3,3.845274836E1 +2.668153000E3,3.676763670E1 +2.668452000E3,3.751975183E1 +2.668696000E3,3.224848897E1 +2.669023000E3,3.611134142E1 +2.669316000E3,4.467495655E1 +2.669607000E3,4.735906080E1 +2.669885000E3,5.159453510E1 +2.670167000E3,5.321308782E1 +2.670485000E3,5.282242631E1 +2.670747000E3,5.127719277E1 +2.670997000E3,4.902251972E1 +2.671243000E3,4.450532678E1 +2.671540000E3,3.864078148E1 +2.671788000E3,3.720620343E1 +2.672044000E3,4.496142790E1 +2.672357000E3,4.705640535E1 +2.672617000E3,3.890316941E1 +2.672864000E3,4.027639889E1 +2.673159000E3,4.202335245E1 +2.673421000E3,4.285452583E1 +2.673720000E3,3.626679930E1 +2.673964000E3,4.670395357E1 +2.674210000E3,4.915586670E1 +2.674514000E3,5.353785994E1 +2.674811000E3,5.414016767E1 +2.675048000E3,5.591079353E1 +2.675364000E3,3.844031623E1 +2.675661000E3,3.124520008E1 +2.675946000E3,3.566755596E1 +2.676189000E3,3.490423263E1 +2.676498000E3,5.070292882E1 +2.676799000E3,5.356134163E1 +2.677047000E3,5.161634227E1 +2.677305000E3,5.185439004E1 +2.677581000E3,5.315585532E1 +2.677832000E3,4.418578879E1 +2.678087000E3,3.972693415E1 +2.678335000E3,4.338465258E1 +2.678650000E3,5.168404535E1 +2.678934000E3,4.984483773E1 +2.679249000E3,4.977401184E1 +2.679507000E3,5.044345616E1 +2.679823000E3,4.232585634E1 +2.680128000E3,3.026551109E1 +2.680400000E3,3.009656886E1 +2.680660000E3,4.894119824E1 +2.680913000E3,4.712312643E1 +2.681208000E3,4.239602863E1 +2.681477000E3,4.875338950E1 +2.681768000E3,4.887945421E1 +2.682128000E3,4.379352407E1 +2.682394000E3,4.073494394E1 +2.682637000E3,3.685872977E1 +2.682895000E3,2.883047793E1 +2.683163000E3,3.769147996E1 +2.683455000E3,3.713975885E1 +2.683749000E3,4.855681627E1 +2.683994000E3,4.936430656E1 +2.684290000E3,5.303947120E1 +2.684540000E3,5.031092673E1 +2.684833000E3,4.783130186E1 +2.685073000E3,4.898734587E1 +2.685348000E3,4.686166956E1 +2.685598000E3,4.244245178E1 +2.685917000E3,3.872119900E1 +2.686161000E3,4.891396583E1 +2.686434000E3,4.491629365E1 +2.686687000E3,3.588391777E1 +2.686952000E3,3.156965948E1 +2.687206000E3,3.184725563E1 +2.687480000E3,3.153561496E1 +2.687733000E3,3.669659228E1 +2.688049000E3,3.507922771E1 +2.688340000E3,3.251056517E1 +2.688645000E3,4.079174670E1 +2.688915000E3,4.837277005E1 +2.689163000E3,4.669136560E1 +2.689426000E3,3.659115086E1 +2.689751000E3,4.814125321E1 +2.689994000E3,4.721335081E1 +2.690235000E3,5.119773767E1 +2.690471000E3,4.584232122E1 +2.690738000E3,4.687969307E1 +2.691006000E3,4.116197132E1 +2.691312000E3,2.850019915E1 +2.691659000E3,3.175399572E1 +2.691948000E3,3.215115185E1 +2.692197000E3,2.655209633E1 +2.692466000E3,3.136629444E1 +2.692727000E3,2.928762690E1 +2.692976000E3,2.688909217E1 +2.693281000E3,3.350197248E1 +2.693518000E3,3.760267236E1 +2.693776000E3,3.194141055E1 +2.694032000E3,3.113878807E1 +2.694299000E3,2.830606211E1 +2.694602000E3,2.632227285E1 +2.694941000E3,2.736240000E1 +2.695184000E3,3.956118458E1 +2.695488000E3,4.069974415E1 +2.695732000E3,4.498590768E1 +2.696030000E3,3.370199172E1 +2.696300000E3,3.284857688E1 +2.696535000E3,2.919082343E1 +2.696815000E3,3.146626789E1 +2.697056000E3,2.968971947E1 +2.697354000E3,4.116455896E1 +2.697640000E3,5.055341773E1 +2.697888000E3,5.163434474E1 +2.698155000E3,4.792936353E1 +2.698456000E3,4.111753823E1 +2.698732000E3,4.594070701E1 +2.699031000E3,3.204472070E1 +2.699273000E3,2.836668859E1 +2.699578000E3,2.624009297E1 +2.699855000E3,2.719538340E1 +2.700110000E3,2.868563476E1 +2.700399000E3,2.757039916E1 +2.700662000E3,2.546630310E1 +2.700960000E3,2.981844134E1 +2.701310000E3,3.063471239E1 +2.701629000E3,4.014173680E1 +2.701894000E3,3.281157953E1 +2.702206000E3,4.268438101E1 +2.702448000E3,4.272045970E1 +2.702710000E3,4.782744516E1 +2.702984000E3,4.067538265E1 +2.703255000E3,3.821763448E1 +2.703566000E3,3.373237040E1 +2.703865000E3,2.762261654E1 +2.704108000E3,3.058182972E1 +2.704366000E3,4.157303269E1 +2.704695000E3,4.128988216E1 +2.705002000E3,3.725674585E1 +2.705260000E3,3.318881716E1 +2.705544000E3,3.512644750E1 +2.705774000E3,3.012622541E1 +2.706039000E3,3.307868989E1 +2.706297000E3,3.089854998E1 +2.706599000E3,2.870455364E1 +2.706901000E3,2.573473536E1 +2.707155000E3,2.708285982E1 +2.707419000E3,2.641018696E1 +2.707644000E3,2.532685142E1 +2.707945000E3,2.741320006E1 +2.708188000E3,2.764718970E1 +2.708460000E3,3.745935532E1 +2.708711000E3,4.292241509E1 +2.708955000E3,4.431523077E1 +2.709266000E3,3.812245251E1 +2.709534000E3,3.199637282E1 +2.709802000E3,3.030937111E1 +2.710049000E3,3.172341474E1 +2.710303000E3,4.706685853E1 +2.710610000E3,4.372593931E1 +2.710859000E3,4.298246415E1 +2.711196000E3,4.313732995E1 +2.711485000E3,3.646858634E1 +2.711745000E3,3.547356546E1 +2.712003000E3,4.802507202E1 +2.712259000E3,4.666185634E1 +2.712527000E3,4.298723738E1 +2.712813000E3,3.203029787E1 +2.713082000E3,2.721140687E1 +2.713344000E3,3.967881707E1 +2.713594000E3,5.017429445E1 +2.713859000E3,4.690730331E1 +2.714106000E3,4.892140969E1 +2.714475000E3,4.312346900E1 +2.714730000E3,4.926615820E1 +2.714984000E3,4.690558758E1 +2.715298000E3,3.116292546E1 +2.715563000E3,2.731472603E1 +2.715855000E3,3.029992609E1 +2.716160000E3,3.149201904E1 +2.716442000E3,2.826058660E1 +2.716703000E3,2.713282366E1 +2.716957000E3,3.659207256E1 +2.717253000E3,3.982143620E1 +2.717592000E3,4.316888996E1 +2.717851000E3,4.348787554E1 +2.718149000E3,4.336902207E1 +2.718464000E3,4.494305168E1 +2.718765000E3,4.280996114E1 +2.719042000E3,4.083199069E1 +2.719277000E3,3.924180447E1 +2.719573000E3,2.985025677E1 +2.719800000E3,2.924980764E1 +2.720042000E3,2.589394072E1 +2.720346000E3,2.996884267E1 +2.720607000E3,2.951796470E1 +2.720882000E3,2.762273017E1 +2.721181000E3,4.946261833E1 +2.721422000E3,4.848220411E1 +2.721736000E3,4.816357380E1 +2.722001000E3,5.238238407E1 +2.722305000E3,5.586118797E1 +2.722602000E3,5.474108905E1 +2.722856000E3,5.089156984E1 +2.723105000E3,4.900978141E1 +2.723369000E3,5.541376880E1 +2.723666000E3,4.827427134E1 +2.723997000E3,4.802338633E1 +2.724296000E3,3.537215093E1 +2.724548000E3,3.822637167E1 +2.724844000E3,3.388327957E1 +2.725086000E3,3.756611639E1 +2.725338000E3,4.489615211E1 +2.725635000E3,5.048833137E1 +2.725871000E3,4.298428385E1 +2.726174000E3,3.303114009E1 +2.726475000E3,4.527811220E1 +2.726764000E3,4.815487328E1 +2.727017000E3,4.761823346E1 +2.727328000E3,4.180028821E1 +2.727607000E3,4.512936944E1 +2.727849000E3,4.337880786E1 +2.728101000E3,4.031817829E1 +2.728401000E3,3.509684782E1 +2.728650000E3,4.495565250E1 +2.728895000E3,4.157595660E1 +2.729138000E3,5.008202715E1 +2.729381000E3,5.308960545E1 +2.729622000E3,4.943413955E1 +2.729917000E3,4.820467383E1 +2.730234000E3,5.168344618E1 +2.730544000E3,5.128425900E1 +2.730837000E3,5.242528085E1 +2.731075000E3,5.125548047E1 +2.731382000E3,5.027678189E1 +2.731625000E3,4.595108129E1 +2.731917000E3,5.425640288E1 +2.732229000E3,5.493458667E1 +2.732522000E3,5.383738769E1 +2.732781000E3,4.577468908E1 +2.733036000E3,4.877165484E1 +2.733337000E3,5.155317163E1 +2.733582000E3,4.868465804E1 +2.733904000E3,5.094377769E1 +2.734158000E3,4.778052408E1 +2.734485000E3,4.980696312E1 +2.734788000E3,5.229980528E1 +2.735043000E3,4.487473927E1 +2.735323000E3,5.405477376E1 +2.735550000E3,5.095910777E1 +2.735795000E3,4.081340338E1 +2.736110000E3,3.942379743E1 +2.736352000E3,4.377765131E1 +2.736599000E3,4.311237352E1 +2.736822000E3,4.659947655E1 +2.737071000E3,4.430846393E1 +2.737313000E3,4.579154087E1 +2.737577000E3,4.628223866E1 +2.737831000E3,3.937286623E1 +2.738094000E3,3.852847368E1 +2.738336000E3,3.907921933E1 +2.738583000E3,5.112703685E1 +2.738825000E3,4.827754167E1 +2.739100000E3,4.022366081E1 +2.739352000E3,3.342841986E1 +2.739649000E3,3.354947585E1 +2.740003000E3,2.967395260E1 +2.740259000E3,4.724158021E1 +2.740515000E3,4.406232704E1 +2.740781000E3,4.128290785E1 +2.741030000E3,3.766271195E1 +2.741274000E3,3.234308905E1 +2.741542000E3,5.345026714E1 +2.741790000E3,5.189834860E1 +2.742037000E3,4.310520052E1 +2.742373000E3,3.005340200E1 +2.742661000E3,3.957498865E1 +2.742905000E3,4.298992085E1 +2.743235000E3,3.914359224E1 +2.743487000E3,4.665969106E1 +2.743742000E3,4.569837618E1 +2.743989000E3,4.037243126E1 +2.744288000E3,4.393151618E1 +2.744525000E3,4.191552922E1 +2.744830000E3,3.855450094E1 +2.745068000E3,3.137426682E1 +2.745312000E3,3.988970586E1 +2.745595000E3,4.261856210E1 +2.745912000E3,4.545535941E1 +2.746178000E3,3.982007681E1 +2.746515000E3,3.873990925E1 +2.746799000E3,4.024486228E1 +2.747097000E3,3.778822068E1 +2.747346000E3,3.349647091E1 +2.747587000E3,3.949530039E1 +2.747884000E3,4.424971453E1 +2.748182000E3,4.109440717E1 +2.748426000E3,4.429824127E1 +2.748724000E3,3.941870140E1 +2.749014000E3,3.719766140E1 +2.749309000E3,3.407061301E1 +2.749659000E3,3.362708714E1 +2.749929000E3,4.111324363E1 +2.750185000E3,4.275268079E1 +2.750445000E3,5.624172952E1 +2.750726000E3,4.374037489E1 +2.750957000E3,4.189644016E1 +2.751207000E3,3.621210842E1 +2.751519000E3,4.177841495E1 +2.751770000E3,4.048458953E1 +2.752052000E3,3.923884976E1 +2.752303000E3,3.426258793E1 +2.752575000E3,3.252443323E1 +2.752926000E3,3.211416673E1 +2.753222000E3,3.245023971E1 +2.753483000E3,3.266068265E1 +2.753758000E3,4.004662592E1 +2.754054000E3,4.872983792E1 +2.754320000E3,5.041613029E1 +2.754567000E3,4.540589836E1 +2.754814000E3,3.042430240E1 +2.755080000E3,3.072459076E1 +2.755376000E3,3.998104284E1 +2.755642000E3,4.049850263E1 +2.755970000E3,4.294486763E1 +2.756315000E3,4.067196783E1 +2.756573000E3,4.772031632E1 +2.756825000E3,4.988707098E1 +2.757139000E3,4.555538995E1 +2.757388000E3,4.252022698E1 +2.757651000E3,3.810962452E1 +2.757917000E3,3.494795311E1 +2.758159000E3,3.247098224E1 +2.758413000E3,3.588027190E1 +2.758665000E3,3.200494843E1 +2.758920000E3,4.772506231E1 +2.759171000E3,3.775844318E1 +2.759507000E3,3.920116655E1 +2.759772000E3,4.528245497E1 +2.760086000E3,4.240466142E1 +2.760349000E3,4.544544837E1 +2.760652000E3,4.039389797E1 +2.760923000E3,3.896680017E1 +2.761194000E3,4.381534416E1 +2.761436000E3,4.424202471E1 +2.761681000E3,4.737958135E1 +2.761960000E3,4.213672401E1 +2.762194000E3,4.516117441E1 +2.762462000E3,4.279973284E1 +2.762806000E3,3.859577230E1 +2.763061000E3,4.880977241E1 +2.763403000E3,4.365184399E1 +2.763660000E3,3.848143477E1 +2.763932000E3,4.787104427E1 +2.764214000E3,3.823665924E1 +2.764451000E3,3.049392521E1 +2.764732000E3,3.086844430E1 +2.764975000E3,2.587396098E1 +2.765284000E3,3.362049288E1 +2.765536000E3,3.353664382E1 +2.765825000E3,5.140360254E1 +2.766193000E3,5.105178275E1 +2.766449000E3,5.027787452E1 +2.766756000E3,4.961194015E1 +2.766992000E3,4.473604482E1 +2.767290000E3,5.567849424E1 +2.767540000E3,5.366739238E1 +2.767788000E3,5.268444481E1 +2.768092000E3,4.378358357E1 +2.768389000E3,4.285786187E1 +2.768638000E3,3.838737205E1 +2.768928000E3,4.053738598E1 +2.769250000E3,3.914310468E1 +2.769517000E3,3.950994015E1 +2.769781000E3,4.085678781E1 +2.770095000E3,3.706118568E1 +2.770362000E3,3.878826243E1 +2.770640000E3,4.509160576E1 +2.770877000E3,4.395611401E1 +2.771129000E3,3.894826552E1 +2.771368000E3,3.783168139E1 +2.771620000E3,3.074559821E1 +2.771881000E3,4.191911052E1 +2.772136000E3,4.492008577E1 +2.772447000E3,3.666714779E1 +2.772710000E3,4.135207765E1 +2.772994000E3,4.645886813E1 +2.773238000E3,5.078995440E1 +2.773478000E3,5.706152467E1 +2.773725000E3,5.135582573E1 +2.773990000E3,4.900548267E1 +2.774266000E3,5.275962483E1 +2.774567000E3,3.947101760E1 +2.774806000E3,4.078518654E1 +2.775113000E3,4.929998433E1 +2.775417000E3,4.396253608E1 +2.775784000E3,4.382194135E1 +2.776077000E3,4.131860223E1 +2.776341000E3,4.321133953E1 +2.776596000E3,3.942571045E1 +2.776881000E3,5.035254190E1 +2.777176000E3,5.596334670E1 +2.777432000E3,6.003222989E1 +2.777730000E3,5.139953750E1 +2.778036000E3,5.596001036E1 +2.778330000E3,5.632045587E1 +2.778567000E3,5.352711698E1 +2.778873000E3,5.160150080E1 +2.779243000E3,5.407354895E1 +2.779513000E3,5.151192380E1 +2.779810000E3,5.479493680E1 +2.780084000E3,5.006197117E1 +2.780351000E3,5.012247277E1 +2.780644000E3,4.598086802E1 +2.780884000E3,3.959492635E1 +2.781142000E3,3.571624227E1 +2.781421000E3,4.082207018E1 +2.781720000E3,5.162800696E1 +2.781984000E3,5.211692198E1 +2.782250000E3,5.017743125E1 +2.782617000E3,4.685740156E1 +2.782916000E3,4.348825959E1 +2.783213000E3,3.825858224E1 +2.783454000E3,4.923981343E1 +2.783750000E3,5.319160353E1 +2.783992000E3,4.967899375E1 +2.784288000E3,3.952802481E1 +2.784535000E3,3.328379343E1 +2.784779000E3,3.014350405E1 +2.785020000E3,3.405755755E1 +2.785313000E3,4.653255974E1 +2.785639000E3,4.571255084E1 +2.785896000E3,4.212654376E1 +2.786166000E3,4.635178938E1 +2.786421000E3,4.614547408E1 +2.786716000E3,4.279815144E1 +2.787018000E3,3.739201392E1 +2.787261000E3,4.297599275E1 +2.787569000E3,5.279236826E1 +2.787869000E3,4.385267374E1 +2.788181000E3,3.538660905E1 +2.788488000E3,4.283741498E1 +2.788738000E3,3.898018884E1 +2.789079000E3,4.417569536E1 +2.789327000E3,3.821417555E1 +2.789586000E3,4.124587088E1 +2.789850000E3,4.583617377E1 +2.790116000E3,4.758354441E1 +2.790413000E3,4.386951397E1 +2.790662000E3,4.527431896E1 +2.790956000E3,4.454979637E1 +2.791207000E3,4.019280914E1 +2.791465000E3,4.549375778E1 +2.791714000E3,4.076569420E1 +2.791963000E3,3.807465350E1 +2.792293000E3,5.201775254E1 +2.792550000E3,4.217772267E1 +2.792797000E3,5.472035384E1 +2.793107000E3,5.403984906E1 +2.793357000E3,5.591746790E1 +2.793622000E3,5.564159884E1 +2.793875000E3,5.646584479E1 +2.794118000E3,5.185594958E1 +2.794377000E3,4.895735059E1 +2.794636000E3,5.654557288E1 +2.794943000E3,5.012866956E1 +2.795254000E3,4.757016947E1 +2.795528000E3,5.211434220E1 +2.795790000E3,4.452402763E1 +2.796058000E3,4.290214665E1 +2.796307000E3,3.465820610E1 +2.796556000E3,4.339944359E1 +2.796852000E3,4.313164949E1 +2.797091000E3,5.438037991E1 +2.797389000E3,5.514175593E1 +2.797635000E3,4.928848190E1 +2.797924000E3,4.659784940E1 +2.798220000E3,4.998887096E1 +2.798537000E3,4.486399829E1 +2.798842000E3,4.885866840E1 +2.799091000E3,4.635335968E1 +2.799347000E3,4.504358299E1 +2.799594000E3,3.958005741E1 +2.799833000E3,4.827229253E1 +2.800082000E3,4.830536262E1 +2.800388000E3,4.659260793E1 +2.800673000E3,4.111758509E1 +2.800972000E3,4.464305855E1 +2.801233000E3,4.497276151E1 +2.801524000E3,3.374775892E1 +2.801884000E3,3.426238632E1 +2.802202000E3,3.521995684E1 +2.802451000E3,3.181302785E1 +2.802708000E3,2.794884084E1 +2.803019000E3,3.320140571E1 +2.803325000E3,3.478175393E1 +2.803626000E3,3.529465039E1 +2.803932000E3,3.962950189E1 +2.804222000E3,5.725685057E1 +2.804486000E3,5.740119524E1 +2.804784000E3,5.069347451E1 +2.805056000E3,5.047632669E1 +2.805376000E3,5.207930289E1 +2.805626000E3,5.264810014E1 +2.805887000E3,5.288954519E1 +2.806177000E3,4.457356662E1 +2.806431000E3,3.885566564E1 +2.806679000E3,3.768676842E1 +2.806944000E3,3.953483275E1 +2.807192000E3,4.348722722E1 +2.807514000E3,4.091620627E1 +2.807832000E3,4.192587435E1 +2.808086000E3,4.434501723E1 +2.808380000E3,4.393917252E1 +2.808686000E3,4.250763593E1 +2.809001000E3,4.146719312E1 +2.809249000E3,4.084508562E1 +2.809517000E3,4.466153637E1 +2.809817000E3,4.002274614E1 +2.810111000E3,4.310032831E1 +2.810375000E3,4.901386280E1 +2.810661000E3,4.607368963E1 +2.810927000E3,4.387647276E1 +2.811225000E3,5.143943484E1 +2.811469000E3,5.045193234E1 +2.811861000E3,4.363012565E1 +2.812115000E3,4.450854658E1 +2.812371000E3,4.453857946E1 +2.812631000E3,4.628101753E1 +2.812921000E3,4.634691523E1 +2.813212000E3,4.654803531E1 +2.813510000E3,4.718980060E1 +2.813758000E3,4.430765323E1 +2.814051000E3,4.322664022E1 +2.814349000E3,4.450224091E1 +2.814582000E3,4.170367724E1 +2.814868000E3,3.985315953E1 +2.815113000E3,5.280042862E1 +2.815400000E3,4.119993511E1 +2.815662000E3,4.251502783E1 +2.815937000E3,4.221594106E1 +2.816186000E3,4.475181393E1 +2.816425000E3,4.757705666E1 +2.816666000E3,4.971185267E1 +2.816968000E3,4.862141287E1 +2.817211000E3,4.713523003E1 +2.817492000E3,4.541478066E1 +2.817737000E3,4.363493262E1 +2.817996000E3,4.428814895E1 +2.818246000E3,4.395099122E1 +2.818516000E3,4.781334664E1 +2.818773000E3,4.439472962E1 +2.819027000E3,4.768107540E1 +2.819278000E3,4.535748265E1 +2.819523000E3,5.061196572E1 +2.819779000E3,4.816069594E1 +2.820044000E3,4.715573746E1 +2.820374000E3,4.919198579E1 +2.820635000E3,5.486134785E1 +2.820897000E3,4.845922458E1 +2.821173000E3,4.486224636E1 +2.821520000E3,4.543631827E1 +2.821781000E3,4.823449020E1 +2.822049000E3,4.622456265E1 +2.822354000E3,3.467019045E1 +2.822632000E3,3.820707315E1 +2.822892000E3,3.870865044E1 +2.823175000E3,3.526203974E1 +2.823424000E3,3.398332746E1 +2.823673000E3,4.060940798E1 +2.823924000E3,4.531267955E1 +2.824156000E3,4.823172894E1 +2.824426000E3,5.381643572E1 +2.824772000E3,5.219878503E1 +2.825053000E3,4.888255160E1 +2.825277000E3,4.023650802E1 +2.825526000E3,3.467455539E1 +2.825785000E3,3.818404386E1 +2.826078000E3,4.122702652E1 +2.826315000E3,3.713088668E1 +2.826619000E3,4.891468535E1 +2.826912000E3,5.266971981E1 +2.827148000E3,4.991025067E1 +2.827457000E3,5.435242869E1 +2.827718000E3,5.378448717E1 +2.828053000E3,5.171570017E1 +2.828327000E3,5.600593919E1 +2.828581000E3,5.175339102E1 +2.828821000E3,4.567582373E1 +2.829101000E3,3.417267221E1 +2.829337000E3,3.532670702E1 +2.829576000E3,4.323212593E1 +2.829823000E3,3.952189104E1 +2.830096000E3,4.372473758E1 +2.830363000E3,4.288959864E1 +2.830609000E3,3.903893871E1 +2.830954000E3,3.847274859E1 +2.831281000E3,4.911689413E1 +2.831539000E3,5.342672798E1 +2.831798000E3,5.558955965E1 +2.832091000E3,5.519004987E1 +2.832341000E3,5.877942264E1 +2.832589000E3,4.602825434E1 +2.832861000E3,3.380054471E1 +2.833107000E3,3.583644563E1 +2.833403000E3,4.160983164E1 +2.833653000E3,3.903662215E1 +2.833958000E3,3.879412363E1 +2.834222000E3,4.121083607E1 +2.834460000E3,4.235130104E1 +2.834723000E3,5.615135633E1 +2.834993000E3,5.355273371E1 +2.835271000E3,4.896976792E1 +2.835535000E3,5.132324538E1 +2.835792000E3,5.529277110E1 +2.836041000E3,5.163674064E1 +2.836366000E3,4.657927993E1 +2.836613000E3,4.238907241E1 +2.836875000E3,5.376683406E1 +2.837143000E3,5.052269952E1 +2.837398000E3,5.018740192E1 +2.837697000E3,4.680907883E1 +2.837961000E3,4.427452663E1 +2.838227000E3,3.300759096E1 +2.838490000E3,3.639504198E1 +2.838784000E3,4.617517315E1 +2.839084000E3,4.692063960E1 +2.839325000E3,4.445415179E1 +2.839620000E3,4.215561710E1 +2.839863000E3,4.433766229E1 +2.840168000E3,4.210423337E1 +2.840460000E3,3.873922427E1 +2.840768000E3,3.717852459E1 +2.841057000E3,3.957811826E1 +2.841313000E3,3.760389186E1 +2.841638000E3,4.310249633E1 +2.841921000E3,4.813095040E1 +2.842192000E3,4.623131926E1 +2.842444000E3,4.648620260E1 +2.842743000E3,4.620801315E1 +2.843027000E3,4.321069748E1 +2.843281000E3,4.205248893E1 +2.843587000E3,2.653536028E1 +2.843863000E3,2.940344619E1 +2.844270000E3,4.715941302E1 +2.844533000E3,4.512147604E1 +2.844793000E3,4.758865475E1 +2.845051000E3,4.853448129E1 +2.845325000E3,4.647479098E1 +2.845569000E3,4.600966189E1 +2.845842000E3,4.549543262E1 +2.846088000E3,4.262631529E1 +2.846347000E3,4.522394390E1 +2.846652000E3,4.657245211E1 +2.846924000E3,4.554651191E1 +2.847231000E3,4.501421864E1 +2.847609000E3,4.413715050E1 +2.847859000E3,3.641102730E1 +2.848158000E3,2.959594862E1 +2.848409000E3,3.229903797E1 +2.848684000E3,3.716282001E1 +2.848948000E3,4.864280315E1 +2.849195000E3,4.698625872E1 +2.849453000E3,4.475077374E1 +2.849725000E3,4.320130236E1 +2.850029000E3,4.052232702E1 +2.850286000E3,4.987213531E1 +2.850622000E3,4.470574790E1 +2.850953000E3,4.746715529E1 +2.851224000E3,4.817674396E1 +2.851475000E3,4.755384271E1 +2.851775000E3,4.606857790E1 +2.852037000E3,4.602549066E1 +2.852280000E3,4.107899882E1 +2.852578000E3,4.602936757E1 +2.852832000E3,4.594357604E1 +2.853123000E3,4.132874601E1 +2.853424000E3,3.891402985E1 +2.853676000E3,3.210431116E1 +2.854034000E3,4.148325967E1 +2.854336000E3,4.539420759E1 +2.854629000E3,3.813311910E1 +2.854857000E3,3.204826654E1 +2.855103000E3,4.042825728E1 +2.855348000E3,3.781799437E1 +2.855635000E3,3.485312778E1 +2.855901000E3,3.176423587E1 +2.856194000E3,3.286644404E1 +2.856446000E3,3.601261840E1 +2.856741000E3,3.056779431E1 +2.856990000E3,2.876904683E1 +2.857247000E3,2.336161379E1 +2.857525000E3,5.319777865E1 +2.857765000E3,4.924210585E1 +2.858030000E3,4.161506516E1 +2.858287000E3,3.471025819E1 +2.858592000E3,2.954431085E1 +2.858878000E3,3.551304021E1 +2.859146000E3,4.056554733E1 +2.859438000E3,4.716772205E1 +2.859749000E3,4.728214145E1 +2.860112000E3,4.333221553E1 +2.860355000E3,3.970290127E1 +2.860627000E3,4.675070996E1 +2.860922000E3,5.292655838E1 +2.861168000E3,5.560528000E1 +2.861448000E3,5.155203362E1 +2.861684000E3,4.854372910E1 +2.861981000E3,5.166225265E1 +2.862226000E3,5.239758268E1 +2.862536000E3,4.880079262E1 +2.862801000E3,5.860724491E1 +2.863049000E3,5.487085904E1 +2.863366000E3,4.477307493E1 +2.863622000E3,4.809216762E1 +2.863923000E3,4.128779228E1 +2.864180000E3,4.039902121E1 +2.864473000E3,3.763315716E1 +2.864758000E3,3.836830031E1 +2.865072000E3,3.562217561E1 +2.865375000E3,4.251016575E1 +2.865631000E3,3.959478231E1 +2.865894000E3,3.906491963E1 +2.866161000E3,3.169567809E1 +2.866409000E3,4.180907280E1 +2.866769000E3,5.009501966E1 +2.867095000E3,4.485052737E1 +2.867377000E3,4.543449817E1 +2.867634000E3,4.558186247E1 +2.867912000E3,3.310648260E1 +2.868160000E3,3.368680580E1 +2.868403000E3,3.259924908E1 +2.868652000E3,3.468868920E1 +2.868945000E3,3.811295096E1 +2.869214000E3,3.680532391E1 +2.869523000E3,4.480088276E1 +2.869800000E3,4.321197878E1 +2.870149000E3,3.870196995E1 +2.870426000E3,4.501549736E1 +2.870686000E3,3.869046251E1 +2.870998000E3,5.116138397E1 +2.871259000E3,4.565952095E1 +2.871545000E3,4.044036430E1 +2.871835000E3,3.776423584E1 +2.872146000E3,4.283314388E1 +2.872428000E3,4.822150076E1 +2.872666000E3,4.609488251E1 +2.872966000E3,4.199842198E1 +2.873258000E3,4.199452970E1 +2.873557000E3,4.094164548E1 +2.873868000E3,3.451929232E1 +2.874146000E3,3.725700957E1 +2.874378000E3,3.820854143E1 +2.874632000E3,3.261818797E1 +2.874949000E3,4.229639001E1 +2.875219000E3,4.314663650E1 +2.875496000E3,4.030472415E1 +2.875772000E3,3.740362597E1 +2.876082000E3,3.770704299E1 +2.876334000E3,4.016521241E1 +2.876600000E3,4.155568881E1 +2.876855000E3,3.864643482E1 +2.877164000E3,3.358142820E1 +2.877430000E3,2.988882280E1 +2.877698000E3,4.233125756E1 +2.877954000E3,4.245249096E1 +2.878273000E3,3.619646633E1 +2.878541000E3,3.199868066E1 +2.878801000E3,4.546979293E1 +2.879062000E3,5.523869784E1 +2.879342000E3,5.605267417E1 +2.879584000E3,5.653411529E1 +2.879928000E3,4.626290707E1 +2.880202000E3,3.540012043E1 +2.880447000E3,3.620700172E1 +2.880691000E3,2.922036878E1 +2.880938000E3,3.659816429E1 +2.881251000E3,4.145147882E1 +2.881527000E3,3.894444603E1 +2.881851000E3,3.741315407E1 +2.882112000E3,4.094962867E1 +2.882373000E3,4.333353585E1 +2.882625000E3,4.557565518E1 +2.882879000E3,4.308396997E1 +2.883145000E3,4.097722416E1 +2.883416000E3,3.927850137E1 +2.883669000E3,3.223716221E1 +2.883941000E3,3.004581442E1 +2.884209000E3,3.765685263E1 +2.884466000E3,3.878810543E1 +2.884718000E3,2.988953340E1 +2.884967000E3,3.346960294E1 +2.885221000E3,3.799647420E1 +2.885537000E3,3.116842616E1 +2.885796000E3,3.671552801E1 +2.886084000E3,4.459898232E1 +2.886404000E3,4.708370738E1 +2.886677000E3,5.036035843E1 +2.886979000E3,4.113513329E1 +2.887251000E3,3.503458684E1 +2.887528000E3,3.462090732E1 +2.887785000E3,4.001717165E1 +2.888037000E3,3.538133603E1 +2.888296000E3,3.662805649E1 +2.888547000E3,4.263542947E1 +2.888820000E3,4.431895872E1 +2.889079000E3,4.300413574E1 +2.889340000E3,4.173317530E1 +2.889582000E3,4.288275032E1 +2.889932000E3,3.944773526E1 +2.890197000E3,3.214266541E1 +2.890503000E3,3.060588708E1 +2.890777000E3,3.296322494E1 +2.891017000E3,3.394251803E1 +2.891320000E3,3.208741950E1 +2.891570000E3,3.441770910E1 +2.891849000E3,3.368561294E1 +2.892087000E3,3.475967611E1 +2.892337000E3,3.740055420E1 +2.892635000E3,3.542355307E1 +2.892981000E3,3.105741683E1 +2.893247000E3,3.245614761E1 +2.893513000E3,4.142391644E1 +2.893779000E3,4.497461971E1 +2.894029000E3,4.653178389E1 +2.894282000E3,4.703576342E1 +2.894540000E3,4.751169602E1 +2.894805000E3,4.201422178E1 +2.895062000E3,4.370261317E1 +2.895310000E3,4.660906406E1 +2.895596000E3,4.633159753E1 +2.895865000E3,4.381116332E1 +2.896155000E3,4.368523912E1 +2.896405000E3,4.747051902E1 +2.896651000E3,4.222577444E1 +2.896905000E3,4.572633660E1 +2.897184000E3,5.203776089E1 +2.897450000E3,5.010843836E1 +2.897744000E3,4.910530865E1 +2.898022000E3,4.664859833E1 +2.898308000E3,3.985336775E1 +2.898564000E3,3.683403533E1 +2.898812000E3,4.284820320E1 +2.899091000E3,4.286036404E1 +2.899396000E3,5.224070654E1 +2.899753000E3,4.568546748E1 +2.900018000E3,5.586433220E1 +2.900278000E3,4.514230837E1 +2.900559000E3,3.853422420E1 +2.900865000E3,3.299777990E1 +2.901139000E3,3.594596453E1 +2.901415000E3,2.896001699E1 +2.901650000E3,2.556794162E1 +2.901937000E3,2.525773120E1 +2.902206000E3,3.138035436E1 +2.902457000E3,3.725731802E1 +2.902816000E3,3.600302530E1 +2.903095000E3,3.476106384E1 +2.903340000E3,3.325569458E1 +2.903600000E3,3.217545002E1 +2.903858000E3,2.994578711E1 +2.904108000E3,3.277965280E1 +2.904372000E3,4.013450695E1 +2.904627000E3,3.103730297E1 +2.904913000E3,4.187502355E1 +2.905174000E3,3.591627686E1 +2.905452000E3,3.067277870E1 +2.905743000E3,2.813597523E1 +2.906004000E3,2.760542404E1 +2.906321000E3,3.327793113E1 +2.906579000E3,4.111963776E1 +2.906835000E3,4.309802180E1 +2.907113000E3,2.749088524E1 +2.907354000E3,2.269523459E1 +2.907657000E3,3.631225289E1 +2.907901000E3,4.146405590E1 +2.908156000E3,3.785670954E1 +2.908403000E3,4.498664409E1 +2.908675000E3,4.174614917E1 +2.908932000E3,4.632262643E1 +2.909189000E3,3.569839459E1 +2.909522000E3,4.635385444E1 +2.909802000E3,4.337190367E1 +2.910035000E3,3.796960383E1 +2.910287000E3,4.151951269E1 +2.910538000E3,4.245940710E1 +2.910795000E3,4.268454470E1 +2.911045000E3,4.280139929E1 +2.911335000E3,3.861780445E1 +2.911584000E3,4.028221299E1 +2.911885000E3,3.934408626E1 +2.912139000E3,3.091195323E1 +2.912386000E3,2.709027446E1 +2.912622000E3,2.721294148E1 +2.912915000E3,3.169063213E1 +2.913196000E3,3.663766462E1 +2.913461000E3,3.582442105E1 +2.913744000E3,2.742218375E1 +2.913990000E3,3.432349666E1 +2.914297000E3,4.586386591E1 +2.914575000E3,4.813383402E1 +2.914888000E3,5.016441505E1 +2.915190000E3,4.132593749E1 +2.915481000E3,3.992883324E1 +2.915827000E3,3.713218942E1 +2.916087000E3,4.862036940E1 +2.916351000E3,4.985137398E1 +2.916622000E3,5.126616609E1 +2.916881000E3,4.180876614E1 +2.917157000E3,4.057128207E1 +2.917418000E3,3.994520906E1 +2.917681000E3,3.719846748E1 +2.917964000E3,4.377214072E1 +2.918264000E3,4.081140664E1 +2.918518000E3,4.149712935E1 +2.918784000E3,3.965801174E1 +2.919127000E3,3.499332266E1 +2.919415000E3,3.454976163E1 +2.919745000E3,3.801205804E1 +2.920003000E3,4.266330834E1 +2.920244000E3,3.704497233E1 +2.920548000E3,3.869800412E1 +2.920840000E3,3.880762608E1 +2.921081000E3,3.967826348E1 +2.921325000E3,4.387098551E1 +2.921573000E3,3.795523909E1 +2.921876000E3,3.884773193E1 +2.922122000E3,3.949919351E1 +2.922481000E3,3.549368996E1 +2.922774000E3,5.176437750E1 +2.923023000E3,4.673969779E1 +2.923306000E3,3.729614967E1 +2.923573000E3,3.557242251E1 +2.923880000E3,5.351861504E1 +2.924155000E3,5.486661937E1 +2.924424000E3,5.693150230E1 +2.924735000E3,4.225245527E1 +2.924988000E3,4.082554353E1 +2.925252000E3,3.807826598E1 +2.925573000E3,3.587807510E1 +2.925935000E3,4.290242494E1 +2.926237000E3,3.960438869E1 +2.926496000E3,3.732088357E1 +2.926751000E3,3.216321546E1 +2.926991000E3,3.001846960E1 +2.927295000E3,3.634949804E1 +2.927531000E3,3.127042454E1 +2.927829000E3,3.158500209E1 +2.928073000E3,2.815993792E1 +2.928370000E3,2.793102526E1 +2.928613000E3,2.468786691E1 +2.928943000E3,2.345175993E1 +2.929256000E3,2.908559709E1 +2.929497000E3,2.580950455E1 +2.929819000E3,2.871707976E1 +2.930114000E3,2.977851279E1 +2.930374000E3,4.220437998E1 +2.930636000E3,3.122152770E1 +2.930945000E3,3.902308439E1 +2.931227000E3,3.648582434E1 +2.931474000E3,4.774090674E1 +2.931717000E3,4.487624905E1 +2.931963000E3,4.620728265E1 +2.932258000E3,4.011602626E1 +2.932585000E3,4.011469989E1 +2.932871000E3,4.531107143E1 +2.933117000E3,4.299757904E1 +2.933366000E3,4.255561828E1 +2.933662000E3,4.180851663E1 +2.933899000E3,3.354142728E1 +2.934139000E3,4.061788576E1 +2.934435000E3,3.190428864E1 +2.934678000E3,3.136545948E1 +2.934975000E3,3.172564299E1 +2.935227000E3,3.538616066E1 +2.935577000E3,3.227761247E1 +2.935826000E3,3.587578035E1 +2.936132000E3,2.830690319E1 +2.936391000E3,2.983281120E1 +2.936636000E3,3.198482114E1 +2.936936000E3,4.529436692E1 +2.937191000E3,3.904726622E1 +2.937498000E3,4.546792713E1 +2.937790000E3,4.178984789E1 +2.938055000E3,3.901507008E1 +2.938332000E3,3.530528642E1 +2.938634000E3,3.766035689E1 +2.939060000E3,5.595745424E1 +2.939318000E3,5.800941557E1 +2.939576000E3,5.061871726E1 +2.939836000E3,6.017617924E1 +2.940124000E3,5.889680612E1 +2.940380000E3,5.553527141E1 +2.940631000E3,4.982924060E1 +2.940889000E3,5.386899946E1 +2.941183000E3,5.511436312E1 +2.941477000E3,5.474658637E1 +2.941736000E3,5.669903896E1 +2.941985000E3,5.352207307E1 +2.942302000E3,5.089540084E1 +2.942556000E3,5.163069551E1 +2.942811000E3,4.946827448E1 +2.943144000E3,4.292332560E1 +2.943386000E3,4.769421745E1 +2.943625000E3,4.741300910E1 +2.943936000E3,4.918473310E1 +2.944182000E3,4.358732286E1 +2.944456000E3,4.338106770E1 +2.944722000E3,5.302068646E1 +2.945006000E3,4.800501219E1 +2.945370000E3,4.445792428E1 +2.945619000E3,3.768400599E1 +2.945867000E3,3.829540629E1 +2.946159000E3,3.766669508E1 +2.946411000E3,4.016839261E1 +2.946712000E3,4.041724233E1 +2.947009000E3,4.012217251E1 +2.947323000E3,3.568820570E1 +2.947568000E3,3.690839296E1 +2.947818000E3,4.813137033E1 +2.948084000E3,5.325274156E1 +2.948341000E3,5.892514859E1 +2.948730000E3,4.314585435E1 +2.948980000E3,4.049194134E1 +2.949257000E3,4.522053034E1 +2.949515000E3,4.263261915E1 +2.949826000E3,5.159034358E1 +2.950126000E3,4.094053529E1 +2.950370000E3,4.144504964E1 +2.950613000E3,4.584689520E1 +2.950933000E3,3.986259871E1 +2.951211000E3,5.835616238E1 +2.951492000E3,4.865922153E1 +2.951773000E3,4.646806952E1 +2.952049000E3,5.501145746E1 +2.952349000E3,5.395560549E1 +2.952606000E3,5.094776028E1 +2.952859000E3,5.987933082E1 +2.953123000E3,5.553863596E1 +2.953365000E3,6.056471643E1 +2.953626000E3,5.705129962E1 +2.953881000E3,5.620457969E1 +2.954143000E3,4.633104773E1 +2.954403000E3,4.542785483E1 +2.954666000E3,4.357363747E1 +2.954925000E3,5.905995366E1 +2.955255000E3,5.325307727E1 +2.955500000E3,6.730464031E1 +2.955795000E3,6.362836082E1 +2.956030000E3,6.057596417E1 +2.956332000E3,6.813918985E1 +2.956573000E3,6.403678903E1 +2.956871000E3,6.230635205E1 +2.957135000E3,6.746671531E1 +2.957401000E3,6.427695804E1 +2.957673000E3,5.206458526E1 +2.957933000E3,5.261265827E1 +2.958182000E3,4.877242183E1 +2.958552000E3,6.627461000E1 +2.958808000E3,6.741673158E1 +2.959062000E3,6.597614354E1 +2.959304000E3,6.540552328E1 +2.959551000E3,6.528289091E1 +2.959864000E3,5.830061674E1 +2.960121000E3,5.985112812E1 +2.960428000E3,6.090568068E1 +2.960720000E3,6.807446854E1 +2.960985000E3,6.930722199E1 +2.961226000E3,6.386100217E1 +2.961579000E3,6.028451745E1 +2.961849000E3,6.477814340E1 +2.962132000E3,6.837046944E1 +2.962373000E3,6.647209363E1 +2.962660000E3,6.694202205E1 +2.962967000E3,6.648756695E1 +2.963231000E3,6.482625001E1 +2.963518000E3,7.095796361E1 +2.963775000E3,6.454417662E1 +2.964062000E3,6.533171518E1 +2.964339000E3,6.471819922E1 +2.964629000E3,5.679367810E1 +2.964962000E3,5.573913208E1 +2.965271000E3,6.251351498E1 +2.965502000E3,6.071427502E1 +2.965745000E3,6.212696498E1 +2.966049000E3,5.601947939E1 +2.966292000E3,5.543203731E1 +2.966544000E3,5.440105204E1 +2.966807000E3,5.169354717E1 +2.967114000E3,5.098574914E1 +2.967354000E3,4.778774527E1 +2.967603000E3,5.527018336E1 +2.967874000E3,5.069142516E1 +2.968220000E3,5.540354927E1 +2.968470000E3,5.388190573E1 +2.968725000E3,5.648678631E1 +2.968994000E3,6.195289166E1 +2.969259000E3,5.924073062E1 +2.969526000E3,5.554902217E1 +2.969797000E3,6.073047002E1 +2.970049000E3,5.750580172E1 +2.970375000E3,6.205206850E1 +2.970685000E3,5.892672487E1 +2.971008000E3,5.603539479E1 +2.971306000E3,5.380141597E1 +2.971609000E3,6.182570937E1 +2.971860000E3,5.755792598E1 +2.972120000E3,7.094637252E1 +2.972374000E3,7.220321333E1 +2.972688000E3,6.074903881E1 +2.972946000E3,5.132390204E1 +2.973203000E3,5.555176793E1 +2.973482000E3,5.082163203E1 +2.973746000E3,6.668022761E1 +2.974024000E3,6.951681150E1 +2.974257000E3,6.170353739E1 +2.974507000E3,6.191784425E1 +2.974845000E3,6.249884739E1 +2.975129000E3,6.139715498E1 +2.975385000E3,5.458109058E1 +2.975684000E3,6.285593412E1 +2.975925000E3,6.801445640E1 +2.976223000E3,6.762358149E1 +2.976454000E3,6.007212586E1 +2.976698000E3,6.176376027E1 +2.976998000E3,5.489351528E1 +2.977244000E3,6.419682450E1 +2.977544000E3,6.335879864E1 +2.977813000E3,6.346249627E1 +2.978071000E3,6.122721977E1 +2.978303000E3,6.269343112E1 +2.978564000E3,5.719207644E1 +2.978818000E3,6.209398004E1 +2.979085000E3,6.570545323E1 +2.979335000E3,6.443300698E1 +2.979582000E3,6.395479352E1 +2.979841000E3,6.285971298E1 +2.980091000E3,6.452411240E1 +2.980337000E3,6.648403811E1 +2.980638000E3,6.146510082E1 +2.980898000E3,6.178604521E1 +2.981191000E3,5.906416732E1 +2.981418000E3,6.139524316E1 +2.981668000E3,6.754933795E1 +2.981958000E3,5.804633278E1 +2.982221000E3,5.544285219E1 +2.982480000E3,5.252390700E1 +2.982741000E3,5.442974682E1 +2.983009000E3,5.886662164E1 +2.983270000E3,6.039421332E1 +2.983532000E3,5.984826425E1 +2.983780000E3,6.038747451E1 +2.984020000E3,5.836799318E1 +2.984266000E3,6.011457774E1 +2.984654000E3,6.086793857E1 +2.984928000E3,6.104684994E1 +2.985246000E3,6.081085188E1 +2.985504000E3,6.338602633E1 +2.985771000E3,6.224702903E1 +2.986040000E3,5.771788346E1 +2.986351000E3,5.832375863E1 +2.986657000E3,6.179808645E1 +2.986893000E3,6.074067698E1 +2.987188000E3,5.763905723E1 +2.987459000E3,5.411975455E1 +2.987698000E3,5.609082395E1 +2.988020000E3,5.838775534E1 +2.988261000E3,5.545934196E1 +2.988564000E3,5.818253650E1 +2.988803000E3,5.693365858E1 +2.989084000E3,5.747877452E1 +2.989394000E3,6.108654481E1 +2.989646000E3,6.109521888E1 +2.989952000E3,5.453216708E1 +2.990235000E3,5.325056065E1 +2.990530000E3,5.226229633E1 +2.990796000E3,5.566734434E1 +2.991153000E3,5.983192138E1 +2.991409000E3,5.902282422E1 +2.991712000E3,6.553978750E1 +2.991962000E3,6.323109208E1 +2.992210000E3,6.430699278E1 +2.992477000E3,6.439502996E1 +2.992769000E3,5.882379749E1 +2.993024000E3,7.076998945E1 +2.993317000E3,6.710088514E1 +2.993554000E3,6.332152683E1 +2.993846000E3,6.013348006E1 +2.994081000E3,6.492156154E1 +2.994361000E3,6.054189638E1 +2.994671000E3,5.878685209E1 +2.994911000E3,6.363988355E1 +2.995218000E3,6.266127576E1 +2.995513000E3,6.231860976E1 +2.995750000E3,6.770663238E1 +2.996056000E3,6.411706706E1 +2.996346000E3,6.607053327E1 +2.996592000E3,6.231837938E1 +2.996884000E3,6.235557028E1 +2.997130000E3,6.626149607E1 +2.997386000E3,6.897456616E1 +2.997721000E3,6.896820400E1 +2.997984000E3,5.708709076E1 +2.998260000E3,5.465136518E1 +2.998532000E3,6.136090841E1 +2.998792000E3,6.427324700E1 +2.999047000E3,5.922924051E1 +2.999308000E3,5.964993479E1 +2.999619000E3,5.937495043E1 +2.999910000E3,6.345321013E1 +3.000196000E3,6.558504608E1 +3.000438000E3,6.566442906E1 +3.000721000E3,6.596782674E1 +3.001048000E3,6.493210478E1 +3.001299000E3,6.778071085E1 +3.001554000E3,5.810398860E1 +3.001834000E3,6.461256831E1 +3.002084000E3,5.637103240E1 +3.002332000E3,6.244497501E1 +3.002633000E3,5.749162406E1 +3.002980000E3,6.268391580E1 +3.003246000E3,6.122193913E1 +3.003572000E3,6.467185898E1 +3.003877000E3,6.239318427E1 +3.004266000E3,6.708558966E1 +3.004573000E3,6.293492178E1 +3.004871000E3,6.169168265E1 +3.005129000E3,5.944912128E1 +3.005404000E3,5.631628075E1 +3.005704000E3,6.080609102E1 +3.005964000E3,6.424565764E1 +3.006250000E3,6.447415860E1 +3.006481000E3,6.606824769E1 +3.006756000E3,6.337387069E1 +3.007004000E3,6.294291386E1 +3.007286000E3,6.430484746E1 +3.007612000E3,6.091848593E1 +3.007867000E3,6.343837854E1 +3.008169000E3,5.978702761E1 +3.008432000E3,5.965865421E1 +3.008675000E3,5.540362761E1 +3.008918000E3,5.443572137E1 +3.009202000E3,6.171389250E1 +3.009446000E3,6.487192568E1 +3.009738000E3,5.958143908E1 +3.009983000E3,6.189834719E1 +3.010232000E3,5.752745917E1 +3.010489000E3,6.339873723E1 +3.010846000E3,6.127984243E1 +3.011144000E3,6.065194767E1 +3.011387000E3,6.253646864E1 +3.011646000E3,6.179753794E1 +3.011925000E3,6.231808205E1 +3.012153000E3,6.101579519E1 +3.012442000E3,5.876502421E1 +3.012737000E3,5.809905793E1 +3.013015000E3,5.695141293E1 +3.013301000E3,5.973139928E1 +3.013577000E3,6.007240820E1 +3.013839000E3,7.136453087E1 +3.014063000E3,7.173892024E1 +3.014315000E3,6.885425335E1 +3.014559000E3,6.110376355E1 +3.014808000E3,6.296723224E1 +3.015075000E3,6.021879294E1 +3.015327000E3,6.012811489E1 +3.015577000E3,6.282613373E1 +3.015850000E3,6.884549735E1 +3.016115000E3,6.913958233E1 +3.016397000E3,6.608409337E1 +3.016648000E3,6.437779633E1 +3.016896000E3,6.412579817E1 +3.017253000E3,6.408373459E1 +3.017500000E3,6.487828946E1 +3.017743000E3,6.281964754E1 +3.018003000E3,6.153697843E1 +3.018258000E3,6.503307442E1 +3.018512000E3,6.508021131E1 +3.018791000E3,5.910017780E1 +3.019028000E3,5.757469918E1 +3.019325000E3,5.762978005E1 +3.019573000E3,5.366611226E1 +3.019824000E3,5.708763529E1 +3.020086000E3,5.488621207E1 +3.020437000E3,5.826722905E1 +3.020695000E3,5.951373108E1 +3.020968000E3,6.130623452E1 +3.021217000E3,6.025771329E1 +3.021490000E3,5.280103891E1 +3.021737000E3,6.123009986E1 +3.022037000E3,6.404958762E1 +3.022328000E3,6.469373641E1 +3.022599000E3,6.283727611E1 +3.022840000E3,6.248869497E1 +3.023123000E3,6.767270030E1 +3.023363000E3,6.436289402E1 +3.023706000E3,6.007121161E1 +3.023992000E3,6.067397941E1 +3.024255000E3,6.005092329E1 +3.024513000E3,6.146229561E1 +3.024803000E3,6.214304530E1 +3.025060000E3,6.107977952E1 +3.025317000E3,6.268440106E1 +3.025560000E3,5.744048190E1 +3.025823000E3,6.080102592E1 +3.026092000E3,6.359394744E1 +3.026384000E3,6.219604097E1 +3.026685000E3,6.296073955E1 +3.026912000E3,6.243574530E1 +3.027190000E3,6.540426031E1 +3.027426000E3,7.038009166E1 +3.027684000E3,7.133800291E1 +3.027943000E3,6.847497315E1 +3.028214000E3,7.049817235E1 +3.028486000E3,6.555713643E1 +3.028748000E3,6.762942526E1 +3.029008000E3,6.780082040E1 +3.029264000E3,6.644646205E1 +3.029533000E3,7.066497540E1 +3.029800000E3,6.700863421E1 +3.030174000E3,6.263767412E1 +3.030459000E3,5.937975562E1 +3.030697000E3,6.189133018E1 +3.030958000E3,6.479748496E1 +3.031218000E3,6.070421224E1 +3.031488000E3,5.567295684E1 +3.031754000E3,6.162939414E1 +3.032026000E3,6.462556380E1 +3.032293000E3,6.300561819E1 +3.032553000E3,6.320528504E1 +3.032852000E3,6.205536878E1 +3.033102000E3,7.179598993E1 +3.033490000E3,6.907149718E1 +3.033750000E3,6.110443799E1 +3.034008000E3,5.743025653E1 +3.034257000E3,5.714646515E1 +3.034505000E3,6.193634179E1 +3.034762000E3,6.511685208E1 +3.035034000E3,6.647840023E1 +3.035277000E3,6.637602928E1 +3.035534000E3,6.208743290E1 +3.035873000E3,6.158502662E1 +3.036127000E3,6.138896352E1 +3.036392000E3,5.988342330E1 +3.036737000E3,5.834272912E1 +3.036998000E3,6.504474047E1 +3.037253000E3,5.801637483E1 +3.037569000E3,6.208073459E1 +3.037831000E3,6.555093843E1 +3.038084000E3,6.686352963E1 +3.038356000E3,6.398821865E1 +3.038638000E3,6.053541888E1 +3.038927000E3,5.509282051E1 +3.039228000E3,6.213274835E1 +3.039473000E3,6.149105368E1 +3.039745000E3,6.097957376E1 +3.040056000E3,6.313145073E1 +3.040300000E3,6.749857058E1 +3.040549000E3,6.031561589E1 +3.040852000E3,5.991948868E1 +3.041110000E3,6.228314687E1 +3.041358000E3,6.281493679E1 +3.041621000E3,6.031124820E1 +3.041926000E3,6.035954468E1 +3.042177000E3,6.230627050E1 +3.042448000E3,5.381586458E1 +3.042741000E3,6.032611045E1 +3.043026000E3,5.796046788E1 +3.043304000E3,6.286261594E1 +3.043605000E3,6.188894569E1 +3.043848000E3,6.196336480E1 +3.044091000E3,6.506902622E1 +3.044345000E3,6.547913264E1 +3.044589000E3,6.701681380E1 +3.044849000E3,6.398074775E1 +3.045095000E3,6.102355933E1 +3.045350000E3,6.546609328E1 +3.045598000E3,6.626677347E1 +3.045845000E3,6.212155235E1 +3.046098000E3,6.475032486E1 +3.046433000E3,6.469401418E1 +3.046698000E3,6.335899573E1 +3.046970000E3,5.799459631E1 +3.047267000E3,5.777430210E1 +3.047527000E3,6.228044606E1 +3.047785000E3,5.521572273E1 +3.048044000E3,5.312506195E1 +3.048316000E3,5.877400717E1 +3.048592000E3,6.239358597E1 +3.048842000E3,6.019315355E1 +3.049164000E3,5.944515023E1 +3.049418000E3,6.571719967E1 +3.049752000E3,5.906077781E1 +3.050005000E3,6.269931225E1 +3.050242000E3,6.329267329E1 +3.050532000E3,6.094692628E1 +3.050797000E3,6.137608503E1 +3.051055000E3,6.019630450E1 +3.051299000E3,5.959056092E1 +3.051551000E3,6.195653625E1 +3.051802000E3,5.997942431E1 +3.052044000E3,6.071988649E1 +3.052348000E3,6.146559433E1 +3.052605000E3,6.320542640E1 +3.052903000E3,6.301314639E1 +3.053133000E3,6.491013087E1 +3.053386000E3,5.374424399E1 +3.053632000E3,5.337930652E1 +3.053925000E3,5.830420592E1 +3.054167000E3,5.827724976E1 +3.054414000E3,5.413373264E1 +3.054713000E3,5.438904566E1 +3.054952000E3,5.478972153E1 +3.055245000E3,6.026125791E1 +3.055545000E3,6.377000784E1 +3.055792000E3,6.273059884E1 +3.056116000E3,6.164463909E1 +3.056426000E3,6.310484015E1 +3.056665000E3,6.191865333E1 +3.056974000E3,6.044005004E1 +3.057225000E3,5.723160495E1 +3.057532000E3,6.482171923E1 +3.057799000E3,6.373654624E1 +3.058097000E3,6.579319958E1 +3.058333000E3,6.717439766E1 +3.058632000E3,6.244987186E1 +3.058874000E3,5.911459441E1 +3.059119000E3,6.246625617E1 +3.059514000E3,6.061929027E1 +3.059786000E3,6.141894857E1 +3.060044000E3,6.531006136E1 +3.060311000E3,6.745420282E1 +3.060564000E3,6.305040539E1 +3.060809000E3,6.250223063E1 +3.061063000E3,5.984183740E1 +3.061365000E3,6.201500936E1 +3.061610000E3,6.171968159E1 +3.061853000E3,5.636652524E1 +3.062137000E3,5.937450988E1 +3.062405000E3,5.424162977E1 +3.062724000E3,5.577353705E1 +3.062968000E3,6.265208868E1 +3.063225000E3,6.754657095E1 +3.063470000E3,6.259832443E1 +3.063731000E3,5.846954403E1 +3.063975000E3,5.735719718E1 +3.064220000E3,5.614657426E1 +3.064460000E3,5.493678071E1 +3.064711000E3,6.175770153E1 +3.064961000E3,6.502893325E1 +3.065266000E3,6.372557142E1 +3.065562000E3,6.165604672E1 +3.065921000E3,6.202265536E1 +3.066181000E3,5.894659424E1 +3.066427000E3,5.516515279E1 +3.066669000E3,5.227763917E1 +3.066911000E3,5.331294555E1 +3.067166000E3,5.535383534E1 +3.067460000E3,5.490405248E1 +3.067721000E3,5.927902794E1 +3.068030000E3,6.001209348E1 +3.068288000E3,5.925707402E1 +3.068553000E3,6.116769528E1 +3.068848000E3,5.907075037E1 +3.069160000E3,5.402384091E1 +3.069467000E3,6.078433547E1 +3.069706000E3,6.064305090E1 +3.069991000E3,6.099922555E1 +3.070247000E3,6.081028216E1 +3.070500000E3,6.857342881E1 +3.070795000E3,6.830085683E1 +3.071035000E3,7.092929468E1 +3.071334000E3,6.670654987E1 +3.071580000E3,6.198358410E1 +3.071845000E3,6.029427505E1 +3.072216000E3,6.271100503E1 +3.072476000E3,6.548403896E1 +3.072709000E3,6.655140024E1 +3.072958000E3,6.872933885E1 +3.073221000E3,6.840034062E1 +3.073524000E3,6.189262665E1 +3.073801000E3,6.315516618E1 +3.074029000E3,6.431689152E1 +3.074282000E3,7.008635825E1 +3.074531000E3,6.529488526E1 +3.074781000E3,5.362885622E1 +3.075079000E3,6.174622467E1 +3.075321000E3,6.106059522E1 +3.075569000E3,6.727558853E1 +3.075841000E3,6.068477373E1 +3.076089000E3,6.224550385E1 +3.076358000E3,6.049387981E1 +3.076618000E3,5.554290122E1 +3.076868000E3,5.232623619E1 +3.077136000E3,5.715980006E1 +3.077434000E3,6.112308912E1 +3.077738000E3,5.964598426E1 +3.077997000E3,5.774993649E1 +3.078301000E3,5.930552673E1 +3.078632000E3,6.204668908E1 +3.078903000E3,6.135182684E1 +3.079234000E3,6.010535577E1 +3.079530000E3,5.612975229E1 +3.079846000E3,5.894789721E1 +3.080130000E3,6.424282153E1 +3.080395000E3,6.696093787E1 +3.080696000E3,5.929656512E1 +3.080931000E3,5.577162965E1 +3.081168000E3,6.096321541E1 +3.081415000E3,6.147204445E1 +3.081708000E3,6.518353223E1 +3.082066000E3,6.565001970E1 +3.082347000E3,6.152216198E1 +3.082591000E3,6.232488129E1 +3.082884000E3,6.450829181E1 +3.083131000E3,6.727741702E1 +3.083373000E3,6.596172391E1 +3.083615000E3,6.588974420E1 +3.083909000E3,6.215985231E1 +3.084146000E3,5.417797447E1 +3.084444000E3,5.776086644E1 +3.084736000E3,6.145598006E1 +3.085067000E3,6.705675690E1 +3.085353000E3,7.032609091E1 +3.085621000E3,6.942809802E1 +3.085926000E3,6.673219093E1 +3.086170000E3,5.874483463E1 +3.086457000E3,6.163530440E1 +3.086730000E3,5.863155738E1 +3.086955000E3,5.804604701E1 +3.087247000E3,7.202263239E1 +3.087542000E3,6.907595594E1 +3.087796000E3,7.104760035E1 +3.088063000E3,6.060670654E1 +3.088371000E3,6.409876160E1 +3.088642000E3,6.504332531E1 +3.088891000E3,6.050178076E1 +3.089172000E3,5.988548041E1 +3.089448000E3,6.419311516E1 +3.089715000E3,6.072209436E1 +3.089992000E3,6.148544930E1 +3.090256000E3,6.667985585E1 +3.090551000E3,6.360479893E1 +3.090829000E3,6.675347002E1 +3.091081000E3,6.585951744E1 +3.091337000E3,5.998998345E1 +3.091582000E3,7.213751425E1 +3.091973000E3,7.002319175E1 +3.092225000E3,6.554991346E1 +3.092495000E3,5.438962824E1 +3.092757000E3,5.806427109E1 +3.093010000E3,5.611571138E1 +3.093290000E3,5.427298566E1 +3.093553000E3,6.332676554E1 +3.093801000E3,6.191283999E1 +3.094088000E3,6.222056485E1 +3.094383000E3,6.679558422E1 +3.094660000E3,6.396349695E1 +3.094980000E3,6.335657582E1 +3.095321000E3,6.368682935E1 +3.095574000E3,6.239728447E1 +3.095829000E3,6.560913932E1 +3.096083000E3,6.288470186E1 +3.096327000E3,6.063834800E1 +3.096611000E3,5.698542980E1 +3.096866000E3,6.214573666E1 +3.097125000E3,6.108001307E1 +3.097382000E3,6.098898235E1 +3.097639000E3,6.935379750E1 +3.097944000E3,6.076333803E1 +3.098235000E3,5.747447310E1 +3.098595000E3,5.896750888E1 +3.098845000E3,6.428262322E1 +3.099146000E3,6.073561603E1 +3.099435000E3,5.610862272E1 +3.099679000E3,5.808393750E1 +3.099971000E3,6.306244141E1 +3.100214000E3,6.493760740E1 +3.100511000E3,5.964091377E1 +3.100753000E3,5.949423253E1 +3.100995000E3,6.324186751E1 +3.101237000E3,6.294719776E1 +3.101481000E3,6.618420708E1 +3.101805000E3,6.039251647E1 +3.102105000E3,6.883376735E1 +3.102388000E3,6.215701199E1 +3.102635000E3,6.251944475E1 +3.102926000E3,6.387718652E1 +3.103175000E3,6.262879933E1 +3.103469000E3,6.094246273E1 +3.103717000E3,5.780442917E1 +3.104010000E3,5.805018882E1 +3.104245000E3,6.073911170E1 +3.104537000E3,5.820155990E1 +3.104880000E3,5.691870737E1 +3.105139000E3,5.609187778E1 +3.105418000E3,5.368790307E1 +3.105673000E3,5.733127796E1 +3.105933000E3,5.834617124E1 +3.106196000E3,5.665251568E1 +3.106447000E3,5.839993992E1 +3.106707000E3,5.765825797E1 +3.106989000E3,6.346036236E1 +3.107241000E3,6.088974139E1 +3.107536000E3,5.623231578E1 +3.107836000E3,5.905990454E1 +3.108208000E3,5.913546091E1 +3.108462000E3,5.921957697E1 +3.108732000E3,6.403378055E1 +3.109010000E3,6.829473891E1 +3.109237000E3,6.866131452E1 +3.109530000E3,5.759864554E1 +3.109769000E3,5.216447932E1 +3.110067000E3,5.887622687E1 +3.110356000E3,5.912152229E1 +3.110621000E3,6.343631440E1 +3.110862000E3,6.110189356E1 +3.111105000E3,5.925249209E1 +3.111441000E3,5.583559168E1 +3.111708000E3,6.397874973E1 +3.112049000E3,5.864630935E1 +3.112314000E3,5.876030726E1 +3.112620000E3,5.558460131E1 +3.112980000E3,5.336927775E1 +3.113232000E3,5.351895645E1 +3.113515000E3,4.932805120E1 +3.113763000E3,6.323075662E1 +3.114057000E3,6.375401647E1 +3.114318000E3,6.430798012E1 +3.114651000E3,6.745313705E1 +3.114909000E3,6.370697195E1 +3.115204000E3,6.719832935E1 +3.115517000E3,6.353352979E1 +3.115816000E3,6.421660294E1 +3.116074000E3,6.666449428E1 +3.116372000E3,6.209745804E1 +3.116612000E3,5.853853683E1 +3.116911000E3,6.153177442E1 +3.117151000E3,6.465277685E1 +3.117439000E3,6.054074617E1 +3.117698000E3,5.762180605E1 +3.118029000E3,5.904912096E1 +3.118292000E3,6.054469105E1 +3.118547000E3,6.570885599E1 +3.118854000E3,6.686989978E1 +3.119103000E3,6.506823644E1 +3.119359000E3,5.780133308E1 +3.119610000E3,5.983707630E1 +3.119896000E3,6.102798325E1 +3.120167000E3,5.940835035E1 +3.120446000E3,6.154008300E1 +3.120717000E3,6.031178539E1 +3.120969000E3,6.222997321E1 +3.121291000E3,6.676268308E1 +3.121532000E3,6.244629438E1 +3.121778000E3,6.014719673E1 +3.122038000E3,6.351124664E1 +3.122317000E3,5.786579019E1 +3.122607000E3,5.704033688E1 +3.122864000E3,5.941823253E1 +3.123160000E3,6.366298469E1 +3.123429000E3,6.545330590E1 +3.123678000E3,6.206143443E1 +3.123932000E3,6.250040348E1 +3.124250000E3,6.193784317E1 +3.124582000E3,6.679802083E1 +3.124888000E3,6.239911876E1 +3.125141000E3,6.227743005E1 +3.125407000E3,5.930162190E1 +3.125655000E3,5.692493613E1 +3.125897000E3,6.100851678E1 +3.126155000E3,6.356932883E1 +3.126470000E3,6.583742229E1 +3.126735000E3,6.828531785E1 +3.127049000E3,6.744954014E1 +3.127349000E3,6.892448306E1 +3.127620000E3,6.312172108E1 +3.127885000E3,6.549450530E1 +3.128150000E3,6.274114245E1 +3.128434000E3,5.987443555E1 +3.128694000E3,5.754092402E1 +3.128967000E3,6.140483336E1 +3.129224000E3,5.793735580E1 +3.129483000E3,5.640840091E1 +3.129735000E3,7.068460790E1 +3.130042000E3,6.831622259E1 +3.130308000E3,6.661131327E1 +3.130563000E3,7.032191033E1 +3.130897000E3,6.429012882E1 +3.131166000E3,6.890779868E1 +3.131427000E3,6.812897599E1 +3.131726000E3,6.440583932E1 +3.132039000E3,6.371305855E1 +3.132310000E3,6.071113649E1 +3.132582000E3,6.356904702E1 +3.132834000E3,6.335195410E1 +3.133078000E3,5.922748305E1 +3.133357000E3,5.790290676E1 +3.133581000E3,6.067150466E1 +3.133827000E3,5.936438225E1 +3.134075000E3,5.651144024E1 +3.134312000E3,5.707156804E1 +3.134564000E3,6.256442790E1 +3.134822000E3,5.680653319E1 +3.135099000E3,6.386946987E1 +3.135341000E3,6.183817556E1 +3.135588000E3,5.791592939E1 +3.135843000E3,5.415500200E1 +3.136159000E3,5.828393923E1 +3.136402000E3,5.584102234E1 +3.136645000E3,5.843965538E1 +3.136922000E3,6.032067675E1 +3.137231000E3,6.082235855E1 +3.137514000E3,6.216335250E1 +3.137763000E3,6.576895249E1 +3.138052000E3,5.935628673E1 +3.138348000E3,5.697436057E1 +3.138590000E3,6.713499986E1 +3.138833000E3,5.996032355E1 +3.139071000E3,6.566814076E1 +3.139366000E3,6.469315039E1 +3.139607000E3,6.414816039E1 +3.139901000E3,6.238348704E1 +3.140144000E3,5.975478602E1 +3.140477000E3,5.617333113E1 +3.140789000E3,6.140881460E1 +3.141038000E3,5.760925345E1 +3.141323000E3,5.813474075E1 +3.141616000E3,6.190304914E1 +3.141899000E3,5.853813516E1 +3.142123000E3,6.019478920E1 +3.142387000E3,5.824830032E1 +3.142639000E3,6.031650371E1 +3.142898000E3,5.874305926E1 +3.143211000E3,6.365997735E1 +3.143459000E3,6.182267241E1 +3.143814000E3,6.153305629E1 +3.144076000E3,6.040235966E1 +3.144345000E3,6.279707978E1 +3.144591000E3,6.261441373E1 +3.144837000E3,5.722591859E1 +3.145082000E3,5.791919274E1 +3.145387000E3,6.142016587E1 +3.145678000E3,5.996802308E1 +3.145994000E3,5.761245992E1 +3.146269000E3,5.915341256E1 +3.146531000E3,5.679987844E1 +3.146814000E3,6.228452904E1 +3.147163000E3,6.038592359E1 +3.147440000E3,6.662509726E1 +3.147705000E3,5.864713600E1 +3.147961000E3,6.383827006E1 +3.148228000E3,6.445939632E1 +3.148543000E3,6.206597752E1 +3.148800000E3,6.082056407E1 +3.149046000E3,5.872798480E1 +3.149340000E3,5.792404132E1 +3.149585000E3,5.917409009E1 +3.149845000E3,5.619795947E1 +3.150164000E3,6.447379623E1 +3.150501000E3,6.336546747E1 +3.150798000E3,6.022605646E1 +3.151059000E3,5.837139298E1 +3.151360000E3,5.721847889E1 +3.151614000E3,7.085699981E1 +3.151908000E3,6.031233854E1 +3.152206000E3,6.170839562E1 +3.152452000E3,6.336115962E1 +3.152697000E3,6.732286145E1 +3.152943000E3,6.043278366E1 +3.153235000E3,5.822950572E1 +3.153537000E3,6.155234216E1 +3.153813000E3,5.671966020E1 +3.154078000E3,5.613348243E1 +3.154333000E3,5.384913785E1 +3.154580000E3,5.739778382E1 +3.154869000E3,5.617144196E1 +3.155103000E3,5.699346940E1 +3.155351000E3,6.356393037E1 +3.155653000E3,5.483372318E1 +3.155949000E3,5.806865262E1 +3.156195000E3,5.725879338E1 +3.156459000E3,5.708272088E1 +3.156776000E3,5.736330762E1 +3.157028000E3,5.620178265E1 +3.157280000E3,5.557503250E1 +3.157521000E3,6.379766868E1 +3.157864000E3,6.175462639E1 +3.158113000E3,5.970375584E1 +3.158365000E3,5.482220327E1 +3.158625000E3,6.094938302E1 +3.158872000E3,6.189076140E1 +3.159128000E3,6.365906369E1 +3.159385000E3,6.365252593E1 +3.159699000E3,6.421784723E1 +3.160039000E3,5.952347777E1 +3.160337000E3,6.582170091E1 +3.160643000E3,6.400621400E1 +3.160905000E3,5.982923632E1 +3.161162000E3,5.912958512E1 +3.161449000E3,5.744161350E1 +3.161722000E3,6.208953034E1 +3.161984000E3,6.743490019E1 +3.162228000E3,5.893358785E1 +3.162506000E3,6.260442429E1 +3.162777000E3,6.054589944E1 +3.163072000E3,5.958101250E1 +3.163380000E3,5.756716970E1 +3.163623000E3,5.897741262E1 +3.163916000E3,5.199350029E1 +3.164173000E3,5.607364633E1 +3.164444000E3,6.846587546E1 +3.164756000E3,5.833953537E1 +3.165011000E3,6.699601536E1 +3.165255000E3,6.024033326E1 +3.165530000E3,5.636786936E1 +3.165825000E3,5.917346905E1 +3.166077000E3,5.684739711E1 +3.166343000E3,5.441684119E1 +3.166607000E3,5.708423030E1 +3.166871000E3,5.726160097E1 +3.167212000E3,5.795085756E1 +3.167513000E3,5.359033433E1 +3.167800000E3,5.481028168E1 +3.168051000E3,5.771426852E1 +3.168321000E3,5.720698183E1 +3.168574000E3,6.029484328E1 +3.168847000E3,6.594273179E1 +3.169141000E3,5.814954146E1 +3.169451000E3,5.741553332E1 +3.169717000E3,5.474949866E1 +3.170064000E3,5.858087337E1 +3.170388000E3,5.901398101E1 +3.170689000E3,6.599046976E1 +3.170942000E3,6.777823262E1 +3.171184000E3,6.339704259E1 +3.171437000E3,5.678237753E1 +3.171694000E3,6.067324941E1 +3.171975000E3,6.337570500E1 +3.172215000E3,6.060254578E1 +3.172509000E3,6.511602204E1 +3.172792000E3,6.491523998E1 +3.173086000E3,6.236437487E1 +3.173442000E3,6.132637014E1 +3.173725000E3,5.575670785E1 +3.173997000E3,5.450541115E1 +3.174243000E3,5.816223835E1 +3.174516000E3,5.991084873E1 +3.174771000E3,5.959264792E1 +3.175022000E3,6.001504494E1 +3.175268000E3,5.794233494E1 +3.175510000E3,5.875384007E1 +3.175752000E3,6.582497874E1 +3.176001000E3,6.385809704E1 +3.176310000E3,6.575292490E1 +3.176700000E3,6.328122862E1 +3.176947000E3,6.160374932E1 +3.177205000E3,6.233605233E1 +3.177480000E3,5.746120395E1 +3.177733000E3,5.491961653E1 +3.178002000E3,5.346590976E1 +3.178308000E3,4.910433719E1 +3.178598000E3,5.548086035E1 +3.178876000E3,5.834728013E1 +3.179129000E3,5.722852381E1 +3.179407000E3,5.371032540E1 +3.179686000E3,5.375017527E1 +3.180066000E3,5.741446005E1 +3.180325000E3,5.595914402E1 +3.180624000E3,5.784989425E1 +3.180867000E3,5.818330240E1 +3.181112000E3,5.651638359E1 +3.181407000E3,5.400925398E1 +3.181645000E3,5.134681346E1 +3.181939000E3,5.540645654E1 +3.182189000E3,5.603348674E1 +3.182489000E3,5.612576596E1 +3.182726000E3,5.412821683E1 +3.183072000E3,5.364995955E1 +3.183373000E3,5.685067634E1 +3.183631000E3,5.292396423E1 +3.183913000E3,5.037305724E1 +3.184139000E3,5.458652507E1 +3.184386000E3,5.336216390E1 +3.184625000E3,5.355204553E1 +3.184861000E3,5.798216811E1 +3.185170000E3,5.037998219E1 +3.185412000E3,5.253320042E1 +3.185661000E3,5.864558083E1 +3.185944000E3,5.568855775E1 +3.186307000E3,6.065674046E1 +3.186594000E3,5.486017232E1 +3.186846000E3,5.354898396E1 +3.187128000E3,5.606629368E1 +3.187373000E3,5.887335608E1 +3.187646000E3,5.932986575E1 +3.187996000E3,5.618144782E1 +3.188254000E3,5.279151533E1 +3.188538000E3,5.980979660E1 +3.188819000E3,5.959008295E1 +3.189058000E3,5.757326838E1 +3.189324000E3,5.814251633E1 +3.189681000E3,6.715432083E1 +3.189929000E3,5.659786492E1 +3.190183000E3,6.813933576E1 +3.190493000E3,6.423896785E1 +3.190762000E3,6.115594562E1 +3.191063000E3,6.466877383E1 +3.191295000E3,6.400176112E1 +3.191543000E3,6.061189134E1 +3.191813000E3,6.334758009E1 +3.192062000E3,6.268892194E1 +3.192384000E3,6.255649695E1 +3.192688000E3,6.440152216E1 +3.193095000E3,6.083356984E1 +3.193368000E3,5.702207605E1 +3.193630000E3,6.129862703E1 +3.193931000E3,6.511359313E1 +3.194208000E3,6.424113032E1 +3.194458000E3,6.277957456E1 +3.194751000E3,6.067489213E1 +3.195007000E3,6.044409325E1 +3.195267000E3,5.902485869E1 +3.195523000E3,5.940450479E1 +3.195769000E3,5.629667180E1 +3.196103000E3,5.773687048E1 +3.196362000E3,5.275604571E1 +3.196676000E3,5.321996877E1 +3.196932000E3,4.952922772E1 +3.197191000E3,5.411849627E1 +3.197458000E3,5.575997519E1 +3.197718000E3,5.782402980E1 +3.197982000E3,6.092045522E1 +3.198228000E3,6.504329265E1 +3.198474000E3,5.972589974E1 +3.198713000E3,5.816644178E1 +3.198958000E3,6.190720604E1 +3.199249000E3,6.026051864E1 +3.199481000E3,6.064697026E1 +3.199744000E3,5.715218400E1 +3.200003000E3,5.509276249E1 +3.200281000E3,5.035485844E1 +3.200607000E3,5.745123346E1 +3.200874000E3,5.874041571E1 +3.201157000E3,6.540993071E1 +3.201407000E3,6.592699897E1 +3.201730000E3,5.826687879E1 +3.201982000E3,5.966898415E1 +3.202228000E3,5.928022084E1 +3.202546000E3,5.492659239E1 +3.202811000E3,5.843773228E1 +3.203091000E3,5.615478265E1 +3.203365000E3,5.378265559E1 +3.203611000E3,5.724493737E1 +3.203868000E3,5.517839982E1 +3.204137000E3,5.166422622E1 +3.204439000E3,5.966362579E1 +3.204692000E3,5.837831137E1 +3.204952000E3,5.873474045E1 +3.205216000E3,6.025432286E1 +3.205460000E3,5.709891269E1 +3.205710000E3,5.946766606E1 +3.206062000E3,5.575402329E1 +3.206367000E3,5.597615265E1 +3.206620000E3,5.417374311E1 +3.206869000E3,5.785505194E1 +3.207152000E3,5.973144393E1 +3.207405000E3,5.494944595E1 +3.207684000E3,5.859159641E1 +3.207982000E3,5.909726368E1 +3.208273000E3,6.221796591E1 +3.208541000E3,6.248597715E1 +3.208787000E3,6.143432195E1 +3.209043000E3,5.767415987E1 +3.209357000E3,6.087003136E1 +3.209636000E3,5.816954701E1 +3.209920000E3,5.644196424E1 +3.210232000E3,5.726504339E1 +3.210505000E3,5.384487818E1 +3.210769000E3,6.092886049E1 +3.211044000E3,5.910647270E1 +3.211306000E3,5.855040927E1 +3.211560000E3,6.886189365E1 +3.211803000E3,6.193548709E1 +3.212075000E3,5.895667088E1 +3.212320000E3,5.613734816E1 +3.212669000E3,6.365011223E1 +3.212934000E3,6.616065582E1 +3.213195000E3,4.911720228E1 +3.213460000E3,5.429539168E1 +3.213713000E3,5.374714305E1 +3.213991000E3,5.505703483E1 +3.214231000E3,5.216197587E1 +3.214486000E3,6.958974683E1 +3.214787000E3,6.410499727E1 +3.215047000E3,5.795707420E1 +3.215308000E3,6.210641451E1 +3.215581000E3,5.724864620E1 +3.215943000E3,5.588397230E1 +3.216221000E3,5.281586206E1 +3.216477000E3,5.616597876E1 +3.216735000E3,7.016181845E1 +3.216992000E3,7.008234703E1 +3.217238000E3,6.883905131E1 +3.217482000E3,6.039428517E1 +3.217722000E3,6.572225500E1 +3.217971000E3,6.862082655E1 +3.218221000E3,6.392739620E1 +3.218481000E3,6.757625304E1 +3.218798000E3,6.468895575E1 +3.219137000E3,5.941097234E1 +3.219443000E3,6.639331379E1 +3.219715000E3,6.512137194E1 +3.219985000E3,6.137345425E1 +3.220244000E3,6.566739727E1 +3.220494000E3,5.684090738E1 +3.220758000E3,4.865476042E1 +3.221022000E3,5.571447424E1 +3.221324000E3,5.050200483E1 +3.221601000E3,5.262698993E1 +3.221858000E3,5.385544431E1 +3.222185000E3,5.793526709E1 +3.222548000E3,5.957102097E1 +3.222796000E3,5.026005559E1 +3.223068000E3,5.164515600E1 +3.223344000E3,6.575405490E1 +3.223598000E3,6.925353270E1 +3.223876000E3,5.909751181E1 +3.224152000E3,5.561020058E1 +3.224416000E3,5.257890354E1 +3.224662000E3,5.262446891E1 +3.224954000E3,5.599583257E1 +3.225202000E3,5.286294623E1 +3.225483000E3,5.049109924E1 +3.225830000E3,6.154494550E1 +3.226096000E3,5.433068412E1 +3.226350000E3,5.256602683E1 +3.226652000E3,5.283535150E1 +3.226989000E3,5.811852242E1 +3.227251000E3,5.842389129E1 +3.227505000E3,5.524471208E1 +3.227782000E3,6.207780754E1 +3.228053000E3,6.165130850E1 +3.228302000E3,5.818085510E1 +3.228557000E3,5.646455559E1 +3.228823000E3,5.903487317E1 +3.229201000E3,5.460588060E1 +3.229471000E3,5.534537953E1 +3.229720000E3,5.492103159E1 +3.229976000E3,5.474982433E1 +3.230276000E3,6.311967749E1 +3.230531000E3,6.144237593E1 +3.230845000E3,6.204497775E1 +3.231123000E3,6.192920277E1 +3.231382000E3,6.726064707E1 +3.231675000E3,5.951322284E1 +3.231970000E3,5.620608761E1 +3.232324000E3,5.597726308E1 +3.232555000E3,5.737347613E1 +3.232845000E3,5.515502781E1 +3.233172000E3,5.977186730E1 +3.233435000E3,6.131606000E1 +3.233742000E3,5.610580070E1 +3.234000000E3,5.978218601E1 +3.234272000E3,6.319970701E1 +3.234581000E3,5.608562509E1 +3.234862000E3,6.169746582E1 +3.235159000E3,6.105762669E1 +3.235416000E3,5.369522011E1 +3.235667000E3,6.580487109E1 +3.235906000E3,5.797374086E1 +3.236200000E3,6.981267784E1 +3.236445000E3,6.229515865E1 +3.236695000E3,6.858181426E1 +3.236976000E3,5.740787399E1 +3.237218000E3,5.455964692E1 +3.237457000E3,7.204325578E1 +3.237720000E3,6.142914611E1 +3.238013000E3,5.768794211E1 +3.238280000E3,5.732491467E1 +3.238580000E3,5.793744264E1 +3.238882000E3,5.626325471E1 +3.239149000E3,5.661724856E1 +3.239424000E3,6.969605219E1 +3.239726000E3,6.482965407E1 +3.239976000E3,5.947270091E1 +3.240278000E3,5.913422796E1 +3.240576000E3,5.630232959E1 +3.240877000E3,5.956366293E1 +3.241128000E3,6.177688280E1 +3.241391000E3,5.851951662E1 +3.241664000E3,5.959787493E1 +3.241944000E3,5.765523372E1 +3.242310000E3,5.961443978E1 +3.242602000E3,5.811194000E1 +3.242910000E3,5.765320401E1 +3.243188000E3,6.631148602E1 +3.243420000E3,6.916377121E1 +3.243673000E3,6.435158828E1 +3.243925000E3,6.486926440E1 +3.244170000E3,5.506348984E1 +3.244475000E3,6.702899260E1 +3.244772000E3,6.244838658E1 +3.245003000E3,6.057959417E1 +3.245328000E3,6.103137126E1 +3.245581000E3,5.723671640E1 +3.245864000E3,5.125127512E1 +3.246123000E3,5.748187394E1 +3.246395000E3,6.148075018E1 +3.246669000E3,6.226010686E1 +3.246940000E3,5.273573389E1 +3.247233000E3,5.462141876E1 +3.247482000E3,5.946160846E1 +3.247728000E3,6.623014757E1 +3.248041000E3,5.823129903E1 +3.248289000E3,5.689561843E1 +3.248538000E3,5.851473913E1 +3.248910000E3,5.778207994E1 +3.249187000E3,6.109108533E1 +3.249462000E3,6.368024039E1 +3.249726000E3,6.527718864E1 +3.249983000E3,5.855658653E1 +3.250281000E3,5.718860903E1 +3.250534000E3,5.946900486E1 +3.250785000E3,5.688578668E1 +3.251033000E3,5.444863300E1 +3.251316000E3,5.885016251E1 +3.251570000E3,6.172482417E1 +3.251833000E3,6.833245599E1 +3.252200000E3,6.656973280E1 +3.252441000E3,6.663686281E1 +3.252721000E3,6.380106140E1 +3.252991000E3,6.113258977E1 +3.253242000E3,7.270243700E1 +3.253457000E3,7.442711013E1 +3.253706000E3,7.097589831E1 +3.253999000E3,5.740107596E1 +3.254237000E3,5.407351324E1 +3.254532000E3,6.235563554E1 +3.254777000E3,6.148535018E1 +3.255085000E3,6.767985005E1 +3.255346000E3,5.893302101E1 +3.255628000E3,5.834235484E1 +3.255897000E3,6.152524318E1 +3.256146000E3,6.124474706E1 +3.256419000E3,5.928557591E1 +3.256642000E3,5.798678480E1 +3.256921000E3,5.800318977E1 +3.257149000E3,5.813391626E1 +3.257392000E3,6.200496820E1 +3.257645000E3,6.268368020E1 +3.257945000E3,6.783162804E1 +3.258296000E3,7.343015115E1 +3.258556000E3,7.258165803E1 +3.258805000E3,6.753466802E1 +3.259117000E3,7.134403593E1 +3.259421000E3,6.813653179E1 +3.259673000E3,6.449045726E1 +3.259939000E3,7.144310958E1 +3.260188000E3,6.619195201E1 +3.260438000E3,6.990193438E1 +3.260692000E3,6.791067771E1 +3.260944000E3,7.014061601E1 +3.261191000E3,7.271368424E1 +3.261532000E3,6.889323528E1 +3.261794000E3,6.087932672E1 +3.262047000E3,6.139975131E1 +3.262322000E3,6.684035582E1 +3.262586000E3,6.977079140E1 +3.262861000E3,6.711211223E1 +3.263137000E3,6.891542739E1 +3.263415000E3,6.450575202E1 +3.263671000E3,6.375083447E1 +3.263946000E3,6.525419018E1 +3.264250000E3,6.323969714E1 +3.264517000E3,7.351653517E1 +3.264813000E3,7.240916805E1 +3.265107000E3,6.991986455E1 +3.265349000E3,6.767718353E1 +3.265598000E3,7.020318016E1 +3.265847000E3,6.593396207E1 +3.266149000E3,6.776886494E1 +3.266400000E3,6.796917668E1 +3.266653000E3,6.234495715E1 +3.266897000E3,6.492303298E1 +3.267153000E3,6.551968402E1 +3.267398000E3,6.154456079E1 +3.267647000E3,6.087933145E1 +3.267896000E3,6.053677169E1 +3.268248000E3,6.893351216E1 +3.268513000E3,6.695525456E1 +3.268817000E3,6.263553940E1 +3.269070000E3,5.965971741E1 +3.269315000E3,6.136430702E1 +3.269582000E3,7.398506568E1 +3.269828000E3,7.145137487E1 +3.270128000E3,7.238266470E1 +3.270371000E3,7.289527120E1 +3.270623000E3,7.428636164E1 +3.270931000E3,7.248535741E1 +3.271185000E3,7.399445608E1 +3.271518000E3,7.355251323E1 +3.271795000E3,7.296660624E1 +3.272081000E3,7.131368475E1 +3.272358000E3,7.068792091E1 +3.272581000E3,6.623699177E1 +3.272835000E3,5.258987188E1 +3.273093000E3,6.044165509E1 +3.273337000E3,6.879817511E1 +3.273635000E3,6.970693453E1 +3.273931000E3,7.169623139E1 +3.274180000E3,7.112396098E1 +3.274428000E3,7.190035192E1 +3.274761000E3,7.089393329E1 +3.275038000E3,6.995869622E1 +3.275323000E3,6.900781199E1 +3.275569000E3,6.766263448E1 +3.275860000E3,6.881814388E1 +3.276116000E3,6.821596427E1 +3.276370000E3,6.896702672E1 +3.276649000E3,6.827119542E1 +3.276914000E3,6.795818984E1 +3.277171000E3,7.025945887E1 +3.277482000E3,6.685661764E1 +3.277741000E3,6.810082518E1 +3.278078000E3,6.902136690E1 +3.278358000E3,6.568611650E1 +3.278604000E3,7.123802039E1 +3.278848000E3,6.300940961E1 +3.279144000E3,6.292057856E1 +3.279382000E3,6.654167697E1 +3.279622000E3,6.808014942E1 +3.279917000E3,6.902808966E1 +3.280160000E3,6.685153426E1 +3.280471000E3,6.435621527E1 +3.280770000E3,6.765080490E1 +3.281059000E3,6.808248309E1 +3.281352000E3,6.477485011E1 +3.281602000E3,5.628454157E1 +3.281867000E3,5.800927668E1 +3.282130000E3,7.131716325E1 +3.282389000E3,7.355208108E1 +3.282663000E3,7.108584109E1 +3.282932000E3,5.710440961E1 +3.283191000E3,5.329699257E1 +3.283451000E3,5.003319724E1 +3.283709000E3,5.081704645E1 +3.284003000E3,5.075383483E1 +3.284259000E3,5.431712692E1 +3.284628000E3,5.277582101E1 +3.284917000E3,6.061307876E1 +3.285214000E3,6.168657926E1 +3.285472000E3,5.854988033E1 +3.285744000E3,4.913527641E1 +3.285999000E3,5.563664353E1 +3.286250000E3,5.841488419E1 +3.286517000E3,6.437604518E1 +3.286777000E3,6.124264602E1 +3.287035000E3,5.886049633E1 +3.287300000E3,6.196549102E1 +3.287630000E3,6.776239267E1 +3.287951000E3,6.702605133E1 +3.288259000E3,5.376695086E1 +3.288499000E3,5.095339550E1 +3.288807000E3,5.078317550E1 +3.289117000E3,5.659564827E1 +3.289411000E3,7.136818215E1 +3.289684000E3,6.629708396E1 +3.289982000E3,7.133804213E1 +3.290271000E3,6.994811010E1 +3.290544000E3,6.532422657E1 +3.290800000E3,6.451013008E1 +3.291132000E3,6.261305598E1 +3.291418000E3,6.696223022E1 +3.291676000E3,4.827412656E1 +3.291930000E3,4.724575587E1 +3.292202000E3,4.846609938E1 +3.292501000E3,5.276700476E1 +3.292822000E3,5.071547801E1 +3.293065000E3,4.944777186E1 +3.293349000E3,4.466809801E1 +3.293583000E3,4.432750067E1 +3.293832000E3,5.165471909E1 +3.294078000E3,4.606912616E1 +3.294427000E3,4.826074528E1 +3.294712000E3,4.434240888E1 +3.294985000E3,4.684583968E1 +3.295286000E3,5.104787864E1 +3.295548000E3,4.839146586E1 +3.295807000E3,5.479537456E1 +3.296066000E3,5.055213000E1 +3.296324000E3,3.933656037E1 +3.296585000E3,4.513652817E1 +3.296840000E3,4.805617654E1 +3.297099000E3,4.453428427E1 +3.297354000E3,5.205427791E1 +3.297705000E3,5.001223291E1 +3.297948000E3,5.342697607E1 +3.298200000E3,5.619467550E1 +3.298461000E3,5.565459347E1 +3.298738000E3,5.819577446E1 +3.298988000E3,5.077826383E1 +3.299236000E3,5.142261821E1 +3.299478000E3,5.610754709E1 +3.299775000E3,5.248015066E1 +3.300011000E3,4.742520943E1 +3.300325000E3,5.519481303E1 +3.300626000E3,4.628613419E1 +3.300959000E3,4.430731849E1 +3.301224000E3,4.380193782E1 +3.301473000E3,4.690647127E1 +3.301746000E3,4.845294386E1 +3.302057000E3,4.912389116E1 +3.302307000E3,5.155191791E1 +3.302563000E3,5.240902416E1 +3.302820000E3,4.677306339E1 +3.303083000E3,5.037145513E1 +3.303327000E3,4.506752152E1 +3.303573000E3,4.920686196E1 +3.303857000E3,4.935493485E1 +3.304189000E3,4.415801479E1 +3.304459000E3,4.423531181E1 +3.304768000E3,3.874162391E1 +3.305030000E3,4.189958295E1 +3.305333000E3,4.005870516E1 +3.305579000E3,5.072183491E1 +3.305843000E3,4.113754863E1 +3.306140000E3,5.548273149E1 +3.306383000E3,5.383424402E1 +3.306628000E3,5.205779319E1 +3.306877000E3,4.592085607E1 +3.307206000E3,5.092451979E1 +3.307449000E3,4.823039740E1 +3.307720000E3,5.026090042E1 +3.307982000E3,5.794901070E1 +3.308198000E3,5.239372011E1 +3.308502000E3,5.024517162E1 +3.308742000E3,4.253471720E1 +3.309044000E3,4.105523794E1 +3.309340000E3,3.028117703E1 +3.309596000E3,2.809150222E1 +3.309864000E3,2.626060468E1 +3.310135000E3,5.055452447E1 +3.310501000E3,7.199271156E1 +3.310777000E3,7.172468430E1 +3.311045000E3,7.282926204E1 +3.311313000E3,7.145580608E1 +3.311562000E3,7.218798353E1 +3.311867000E3,7.081603642E1 +3.312107000E3,7.122522782E1 +3.312348000E3,7.013128466E1 +3.312672000E3,7.138239962E1 +3.312976000E3,7.589001323E1 +3.313216000E3,6.988466628E1 +3.313506000E3,6.521999768E1 +3.313853000E3,5.781158269E1 +3.314129000E3,5.698768013E1 +3.314381000E3,5.954050680E1 +3.314636000E3,5.529467486E1 +3.314903000E3,6.884377149E1 +3.315163000E3,7.293133775E1 +3.315448000E3,7.186875504E1 +3.315697000E3,6.942752239E1 +3.315995000E3,6.899930460E1 +3.316247000E3,6.333687203E1 +3.316557000E3,6.820286469E1 +3.316856000E3,7.371764624E1 +3.317124000E3,7.475494405E1 +3.317411000E3,7.135849387E1 +3.317718000E3,5.726081152E1 +3.317965000E3,5.650406291E1 +3.318233000E3,4.901561410E1 +3.318490000E3,6.881993797E1 +3.318742000E3,7.251465406E1 +3.319010000E3,6.395213402E1 +3.319311000E3,7.197127027E1 +3.319615000E3,6.948849738E1 +3.319862000E3,6.664503435E1 +3.320187000E3,6.933008182E1 +3.320443000E3,6.121514242E1 +3.320753000E3,7.017439611E1 +3.321063000E3,7.393277725E1 +3.321329000E3,7.045535337E1 +3.321643000E3,6.985180357E1 +3.321896000E3,7.158196073E1 +3.322168000E3,6.999348148E1 +3.322483000E3,6.872091406E1 +3.322823000E3,6.386396976E1 +3.323116000E3,6.891641311E1 +3.323355000E3,6.790436633E1 +3.323733000E3,6.190629476E1 +3.324010000E3,6.307072034E1 +3.324306000E3,6.459812141E1 +3.324591000E3,6.928529051E1 +3.324846000E3,6.953301961E1 +3.325158000E3,6.946121501E1 +3.325471000E3,6.177266257E1 +3.325739000E3,6.057146439E1 +3.326000000E3,6.021658005E1 +3.326269000E3,6.588088303E1 +3.326536000E3,6.594068529E1 +3.326797000E3,5.957632846E1 +3.327117000E3,5.830018402E1 +3.327415000E3,5.952820917E1 +3.327678000E3,5.996997483E1 +3.327928000E3,6.374276040E1 +3.328204000E3,6.484785648E1 +3.328504000E3,6.253699213E1 +3.328743000E3,6.495848159E1 +3.329001000E3,6.390198219E1 +3.329317000E3,6.107203426E1 +3.329613000E3,6.678300135E1 +3.329901000E3,6.048531373E1 +3.330164000E3,6.806621622E1 +3.330501000E3,6.592361883E1 +3.330795000E3,6.652249790E1 +3.331059000E3,6.079261624E1 +3.331342000E3,7.055285274E1 +3.331620000E3,6.885169705E1 +3.331870000E3,6.676175072E1 +3.332125000E3,6.653456857E1 +3.332410000E3,6.539948315E1 +3.332658000E3,6.741723145E1 +3.332915000E3,5.982571500E1 +3.333236000E3,7.234399288E1 +3.333559000E3,7.555637810E1 +3.333801000E3,7.132946849E1 +3.334053000E3,7.012473325E1 +3.334345000E3,7.083313400E1 +3.334658000E3,6.159204912E1 +3.334951000E3,5.416652771E1 +3.335187000E3,5.331536045E1 +3.335488000E3,5.516853140E1 +3.335780000E3,5.755380245E1 +3.336028000E3,6.034949591E1 +3.336335000E3,5.933559907E1 +3.336577000E3,6.200660494E1 +3.336975000E3,6.752581884E1 +3.337230000E3,6.552308109E1 +3.337509000E3,6.043162012E1 +3.337804000E3,6.346167875E1 +3.338097000E3,5.762665769E1 +3.338354000E3,6.046465836E1 +3.338657000E3,5.841838084E1 +3.338937000E3,5.426549819E1 +3.339182000E3,5.312925890E1 +3.339425000E3,5.904532039E1 +3.339705000E3,5.548841740E1 +3.339970000E3,6.467955136E1 +3.340311000E3,6.518540616E1 +3.340567000E3,6.130157495E1 +3.340843000E3,4.234380604E1 +3.341102000E3,3.685811557E1 +3.341367000E3,5.229521155E1 +3.341631000E3,4.577123603E1 +3.341913000E3,5.522804687E1 +3.342191000E3,7.219670231E1 +3.342497000E3,6.138541536E1 +3.342739000E3,5.883033505E1 +3.342994000E3,5.692990468E1 +3.343272000E3,5.784770175E1 +3.343584000E3,5.851150722E1 +3.343847000E3,7.127137910E1 +3.344137000E3,7.004437015E1 +3.344432000E3,6.719880262E1 +3.344677000E3,6.266500726E1 +3.344966000E3,6.662051616E1 +3.345209000E3,6.259160849E1 +3.345462000E3,6.521765959E1 +3.345762000E3,6.373477950E1 +3.346056000E3,5.976833176E1 +3.346294000E3,5.557373783E1 +3.346597000E3,5.486821605E1 +3.346842000E3,4.854970484E1 +3.347096000E3,6.338774242E1 +3.347415000E3,6.646909489E1 +3.347712000E3,6.370164725E1 +3.347950000E3,6.577012972E1 +3.348257000E3,6.536203326E1 +3.348509000E3,5.777033235E1 +3.348799000E3,6.942121279E1 +3.349070000E3,6.552465655E1 +3.349329000E3,6.400867966E1 +3.349583000E3,5.955829212E1 +3.349911000E3,6.233007104E1 +3.350154000E3,7.360271557E1 +3.350432000E3,7.402471070E1 +3.350716000E3,7.225249055E1 +3.350966000E3,6.654334459E1 +3.351200000E3,6.590758849E1 +3.351507000E3,6.143698167E1 +3.351805000E3,7.197722167E1 +3.352079000E3,6.778594348E1 +3.352307000E3,5.712392879E1 +3.352566000E3,5.659236121E1 +3.352870000E3,5.352359430E1 +3.353127000E3,5.362353429E1 +3.353366000E3,5.964860406E1 +3.353638000E3,7.164177428E1 +3.353890000E3,6.730234717E1 +3.354173000E3,5.336089185E1 +3.354435000E3,4.770751864E1 +3.354689000E3,4.833001031E1 +3.354956000E3,4.464972004E1 +3.355220000E3,6.809720152E1 +3.355493000E3,7.032616040E1 +3.355723000E3,7.137092547E1 +3.356052000E3,7.106236065E1 +3.356287000E3,7.302101107E1 +3.356599000E3,6.868512076E1 +3.356867000E3,7.134905494E1 +3.357133000E3,7.032184319E1 +3.357463000E3,6.484515560E1 +3.357753000E3,5.949029357E1 +3.358081000E3,6.553405106E1 +3.358385000E3,5.460622041E1 +3.358634000E3,4.798111952E1 +3.358902000E3,5.356090224E1 +3.359186000E3,5.091993104E1 +3.359516000E3,5.980463665E1 +3.359805000E3,5.623340998E1 +3.360124000E3,4.885342740E1 +3.360404000E3,4.536632542E1 +3.360660000E3,5.726647509E1 +3.360941000E3,6.266477325E1 +3.361245000E3,5.265432523E1 +3.361521000E3,4.746518361E1 +3.361777000E3,5.341135388E1 +3.362038000E3,5.094337921E1 +3.362292000E3,5.832737886E1 +3.362616000E3,5.247742127E1 +3.363049000E3,5.123926483E1 +3.363313000E3,4.482127206E1 +3.363600000E3,4.813050338E1 +3.363848000E3,5.751744958E1 +3.364157000E3,5.045245795E1 diff --git a/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a4/MyWorld.java b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a4/MyWorld.java new file mode 100644 index 0000000..8ebbe35 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a4/MyWorld.java @@ -0,0 +1,36 @@ +import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot und MouseInfo) + +/** + * Ergänzen Sie hier eine Beschreibung für die Klasse MyWorld. + * + * @author (Ihr Name) + * @version (eine Versionsnummer oder ein Datum) + */ +public class MyWorld extends World +{ + + /** + * Konstruktor für Objekte der Klasse MyWorld + * + */ + public MyWorld() + { + // Erstellt eine neue Welt mit 1200x900 Pixeln + super(1000, 700, 1); + + prepare(); + } + + + /** + * Bereite die Welt für den Programmstart vor. + * Das heißt: Erzeuge die Anfangs-Objekte und füge sie der Welt hinzu. + */ + private void prepare() + { + XYDiagramm d = new XYDiagramm(); + addObject(d,500,350); + + } +} + diff --git a/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a4/Picture.java b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a4/Picture.java new file mode 100644 index 0000000..8df3d55 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a4/Picture.java @@ -0,0 +1,699 @@ +import java.awt.image.*; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.BasicStroke; +import java.util.Vector; +import javax.imageio.*; +import java.io.*; +import java.awt.*; +import javax.swing.*; +import java.util.Random; +import java.awt.geom.AffineTransform; +/** + * + * Bildklasse für die Simulation von Processing-Befehlen + * + * Diese Klasse stellt ein BufferedImage bereit, in das mit Processing-Befehlen gezeichnet + * werden kann. + * Zusätzlich kann ein Bildanzeiger über jede Änderung des Bildes informiert werden, + * um "Zurück"-Befehle zu ermöglichen. Der Bildanzeiger ist entweder eine normale Java + * ScrollPane oder ein Actor aus Greenfoot. + * Die Dokumentation der einzelnen Zeichenmethoden ist der Processing-Reference + * (https://processing.org/reference/ steht unter CC-Lizenz: https://creativecommons.org/) + * entnommen und mit Deepl.com ins Deutsche übersetzt. + * + * @version 1.0 from 23.01.2019 + * @author Thomas Schaller (ZPG Informatik Klasse 9) + */ + +public class Picture{ + + // Einstellungmöglichkeiten für das Zeichnen von Rechtecken und Ellipsen + // RADIUS = Mittelpunkt+Radius wird gegeben, CENTER = Mittelpunkt und Breite/Höhe wird gegeben, + // CORNER = Linke obere Ecke + Breite/Höhe, CORNERS = Linke obere und rechte untere Ecke + public static final int RADIUS = 1; + public static final int CENTER = 2; + public static final int CORNER = 3; + public static final int CORNERS = 4; + + // gespeichertes Bild, + private BufferedImage image; + + // aktuelle Farbeinstellungen + private Color background; + private Color pencolor; + private Color fillcolor; + + // aktuelle Stiftdicke + private double stroke; + + // akkteller Koordinatenmodus von Rechtecken und Ellipsen + private int ellipseMode = CENTER; + private int rectMode = CORNER; + + // aktueller Font + private Font textfont = null; + + // muss ein Bildanzeiger benachrichtigt werden + private PictureViewer observer = null; + private boolean autorefresh = true; + + /** + * Erzeugt ein Bild mit Standardgröße 500x400 + */ + public Picture() { + this(500,400); + } + + /** + * Erzeugt ein Bild der angegeben Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public Picture(int width, int height) { + this(width,height, "D0D0D0"); + } + + /** + * Erzeugt ein Bild aus einer Datei + * @param filename Dateiname des Bildes + */ + public Picture(String filename) { + load(filename); + } + + /** + * Erzeugt ein Bild der angegebenen Größe mit festgelegtem Hintergrund + * @param width Breite des Bildes + * @param height Höhe des Bildes + * @param background Farbe des Hintergrunds + */ + public Picture(int width, int height, String background) { + this.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + this.background = decode(background); + this.pencolor = new Color(0,0,0); + this.stroke = 1; + this.fillcolor = null; + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(this.background); + g.fillRect(0,0,width-1, height-1); + } + + /** + * Legt fest, wer das Bild anzeigt. + * Diese ermöglicht die Benachrichtung des Observers, wenn sich das Bild ändert. + * @param observer Anzeiger des Bildes + */ + + public void setObserver(PictureViewer observer) { + this.observer= observer; + } + + /** + * Direktes Setzen des Bildes (für interne Zwecke) + * @param b Bild, das gespeichert werden soll. + */ + public void setImage(BufferedImage b) { + image = b; + } + + /** + * Direktes Abfragen des Bildes (für interne Zwecke) + * @return Bild, das gerade gespeichert ist. + */ + public BufferedImage getImage() { + return image; + } + + /** + * Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + * Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + * der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu. + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public void size(int width, int height){ + pushImage(); + this.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(background); + g.fillRect(0,0,width-1, height-1); + } + + /** + * Liefert die Breite des Bildes zurück. + * @return Breite des Bildes + */ + public int getWidth() { + return image.getWidth(); + } + + /** + * Liefert die Höhe des Bildes zurück. + * @return Höhe des Bildes + */ + public int getHeight() { + return image.getHeight(); + } + + + /** + * Erzeugt eine Kopie des Bildes und übergibt sie an den Observer (falls existent), damit dieser die Versionen speichern kann + */ + private void pushImage() { + if(observer != null) { + observer.pushImage(); + } + } + + + /** + * Legt fest, ob nach jedem Zeichenbefehl automatisch das Bild auch in + * der Oberfläche aktualisiert wird. Die Einstellung "false" beschleunigt + * das Zeichnen aufwändiger Bilder und verhindert "Flackern". + * Das Neuzeichnen kann durch die Methode "refresh" gezielt ausgelöst werden. + * @param autorefresh true = nach jedem Zeichenbefehl die Anzeige aktualisieren, false= nur durch die Methode refresh neu zeichnen + */ + public void setAutoRefresh(boolean autoRefresh) { + this.autorefresh = autoRefresh; + } + + + /** + * Auch die anzeigenden Klasse wird zum Neuzeichnen aufgefordert. + */ + private void repaint() { + if(observer != null && autorefresh) { + observer.repaint(); + } + } + + /** + * Auch die anzeigenden Klasse wird zum Neuzeichnen aufgefordert. + */ + public void refresh() { + if(observer != null) { + observer.repaint(); + } + } + + // ----------------------------------------- Zeichenfunktionen ----------------------------------------------- + /** + * Löscht den Inhalt des Bildes. + * Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt. + */ + + public void clear(){ + pushImage(); + image = new BufferedImage(image.getWidth(), image.getHeight(), image.getType()); + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(background); + g.fillRect(0,0,image.getWidth()-1, image.getHeight()-1); + repaint(); + } + + /** + * Konvertiert die in einem bestimmten Modus gegebenen Koordinaten in die Java-übliche Links_Oben_Breite_Höhe Version + * Die Änderungen werden direkt im Array vorgenommen + * @param coord Array mit vier Koordinateneinträgen im gegebenen Modus + * @param mode Modus der Koordinaten (CORNER, CORNERS, RADIUS oder CENTER) + */ + private void convert(int[] coord, int mode) { + switch(mode) { + case CORNER: break; + case CORNERS: coord[2] -= coord[0]; coord[3] -= coord[1]; break; + case RADIUS: coord[2] *= 2; coord[3] *=2; + case CENTER: coord[0] -= coord[2]/2; coord[1] -= coord[3]/2; + } + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + * Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + * Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void rectMode(int mode) { + rectMode = mode; + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + * Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + * Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als Breite und Höhe der Form. + * ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void ellipseMode(int mode) { + ellipseMode = mode; + } + + + + /** + * Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + * Um eine Linie einzufärben, verwenden Sie die {@link #stroke(int, int, int) stroke()} Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + * Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + * {@link #strokeWeight(double) strokeWeight()} geändert werden. + * @param x1 x-Koordinate des 1. Punktes + * @param y1 y-Koordinate des 1. Punktes + * @param x2 x-Koordinate des 2. Punktes + * @param y2 y-Koordinate des 2. Punktes + */ + public void line(int x1, int y1, int x2, int y2) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + if (stroke > 0) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawLine(x1, y1, x2, y2); + } + repaint(); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, rectMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillRect(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawRect(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, ellipseMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillOval(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawOval(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + int px[] = {x1, x2, x3}; + int py[] = {y1, y2, y3}; + polygon(px, py); + + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + + int px[] = {x1, x2, x3, x4}; + int py[] = {y1, y2, y3, y4}; + polygon(px, py); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + + public void polygon(int[] x, int[] y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(fillcolor != null) { + + g.setColor(fillcolor); + g.fillPolygon(x,y, y.length); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawPolygon(x, y, x.length); + } + repaint(); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + ellipse(x,y,1, 1); + + } + + // ----------------------------------------- Schriftdarstellung ----------------------------------------------- + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param s Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String s, int x, int y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(pencolor != null) { + g.setColor(fillcolor); + g.setStroke(new BasicStroke((float) stroke)); + g.setFont(textfont); + g.drawString(s, x, y); + } + repaint(); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + this.textfont = font; + } + + + // ----------------------------------------- Farbfestlegungen ----------------------------------------------- + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(String color) { + try{ + return new Color( + Integer.valueOf( color.substring( 0, 2 ), 16 ), + Integer.valueOf( color.substring( 2, 4 ), 16 ), + Integer.valueOf( color.substring( 4, 6 ), 16 ) ); + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(int color) { + try{ + if(color >=0 && color < 256) { + return new Color(color,color,color); + } else { + int r = color / 0x010000 % 0xFF; + int g = color / 0x000100 % 0xFF; + int b = color % 0xFF; + System.out.println(""+r+","+g+","+b); + return new Color(r, g, b ); + } + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + this.pencolor = decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + this.pencolor=decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + this.pencolor = new Color(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + this.pencolor = null; + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + this.stroke = width; + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + this.fillcolor = decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + this.fillcolor=decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + this.fillcolor = new Color(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + this.fillcolor = null; + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + if(c < 256) { + this.background=new Color(c,c,c); + } else { + int r = c / 0x010000; + int g = c / 0x000100 % 0xFF; + int b = c % 0xFF; + this.background= new Color(r, g, b ); + } + + this.clear(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + this.background=new Color(r,g,b); + this.clear(); + } + + +// ----------------------------------------- Dateioperationen ----------------------------------------------- + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + try{ + this.image = ImageIO.read(new File(filename)); + this.background = decode("D0D0D0"); + this.pencolor = new Color(0,0,0); + this.fillcolor = null; + this.stroke = 1; + this.repaint(); + + } catch(Exception e) { + System.out.println("Fehler beim Einlesen der Bilddatei"); + } + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + try{ + String[] fn = filename.split("\\."); + if (fn.length== 1) { + ImageIO.write(image, "PNG", new File(filename+".png")); + } else { + + if (fn.length == 2 && (fn[1].toUpperCase().equals("PNG") || + fn[1].toUpperCase().equals("GIF"))){ + ImageIO.write(image, fn[1], new File(filename)); + }else { + System.out.println("Unbekanntes Bildformat"); + } + } + + } catch(Exception e) { + System.out.println("Fehler beim Speichern"); + } + } + + +// ----------------------------------------- Sonstiges ----------------------------------------------- + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + + public Color[][] getPixelArray() { + Color[][] pixel = new Color[image.getWidth()][image.getHeight()]; + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + pixel[x][y] = new java.awt.Color(image.getRGB(x,y)); + } + } + return pixel; + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + size(pixel.length,pixel[0].length); + Graphics2D g = (Graphics2D) image.getGraphics(); + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + g.setColor(pixel[x][y]); + g.fillRect(x, y, 1, 1); + } + } + repaint(); + } + + /** + * Hilfsfunktion zum Verzögern der Ausgabe + * @param millis Wartezeit in Millisekunden + */ + public void delay(int millis) { + try{ + Thread.sleep(millis); + + } catch(Exception e) { + + } + + } + + + +} diff --git a/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a4/PictureViewer.java b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a4/PictureViewer.java new file mode 100644 index 0000000..ecbb521 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a4/PictureViewer.java @@ -0,0 +1,499 @@ +import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot und MouseInfo) +import java.awt.image.*; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.BasicStroke; +import java.awt.Font; +import java.util.Vector; +import java.awt.Color; +import javax.imageio.*; +import java.io.*; + +/** + * Der PictureViewer ist ein Actor, der in der Lage ist ein + * Objekt der Klasse Picture anzuzeigen. Zusätzlich können + * mehrere Verarbeitungsschritte gespeichert werden, um ein + * "zurück"-Funktion zu ermöglichen. + * + * @author Thomas Schaller + * @version V1.0 vom 10.02.2019 + */ +public class PictureViewer extends Actor +{ + public static final int FIT = -1; + public static final int NORMAL = 1; + + private static final int ANZ_BACK = 0; + + private double zoom; + protected Picture picture = null; + private Vector history; + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der Größe 500x400 + */ + public PictureViewer() { + this(500,400); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public PictureViewer(int width, int height) { + this(width,height, "D0D0D0"); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + * @param background Farbe des Hintergrunds als HEX-String (z.B. "FF3A45") + */ + public PictureViewer(int width, int height, String background) { + picture = new Picture(width,height, background); + picture.setObserver(this); + this.history = new Vector(); + this.zoom = NORMAL; + repaint(); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild aus einer Bilddatei + * @param filename Name des Bildes + */ + public PictureViewer(String filename) { + picture = new Picture(filename); + picture.setObserver(this); + this.history = new Vector(); + this.zoom = NORMAL; + repaint(); + } + + /** + * Speichert das übergebene Bild in der History. + * @param b zu speicherndes Bild + */ + public void pushImage() { + if( this.ANZ_BACK > 0) { + if(history.size() == this.ANZ_BACK) { + history.removeElementAt(0); + } + + BufferedImage b = new BufferedImage(picture.getWidth(), picture.getHeight(), picture.getImage().getType()); + Graphics g = b.getGraphics(); + g.drawImage(picture.getImage(), 0, 0, null); + g.dispose(); + + history.add(b); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + private void popImage() { + int anz = history.size(); + if(anz>0) { + BufferedImage i = history.get(anz-1); + history.removeElementAt(anz-1); + picture.setImage(i); + repaint(); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + public void back() { + popImage(); + } + + /** + * Setzt den Zoom-Faktor für das Bild. + * Als Zoomfaktor sind auch die Konstanten Bildanzeiger.FIT (auf Bildschirmgröße zoomen) und Bildanzeiger.NORMAL (100%) möglich. + * @param factor Zoomfaktor (1.0 = 100%). + */ + public void setZoom(double zoom) { + this.zoom = zoom; + repaint(); + } + + /** + * Setzt die automatische Neuanzeige des Bildes. + * Mit dieser Methode kann man einstellen, ob nach jedem Zeichenbefehl + * die Anzeige auf dem Bildschirm aktualisiert werden soll. Bei sehr + * vielen Zeichenbefehlen wird die Ausgabe dadurch sehr langsam. Es reicht + * eine Anzeige am Ende der Zeichenbefehle. Rufen Sie dann für das Neuzeichnen + * die Methode refresh() auf. + * @param autoRefresh true, wenn nach jedem Zeichenbefehl die Anzeige aktualisiert werden soll. + */ + public void setAutoRefresh(boolean autoRefresh) { + picture.setAutoRefresh(autoRefresh); + } + + /** + * Sorgt für die Aktualisierung der Bildschrimanzeige. Das aktuelle Bild + * wird dadurch angezeigt. Durch Einstellung von autoRefresh kann die + * Anzeige automatisiert werden. + */ + public void refresh() { + repaint(); + } + + /** + * Setzt das angezeigt Bild neu und beachtet dabei den Zoomfaktor. + */ + public void repaint() { + double faktor = zoom; + + if (zoom == FIT) { + double faktorw = (double) this.getWorld().getWidth() / picture.getWidth(); + double faktorh = (double) this.getWorld().getHeight() / picture.getHeight(); + faktor = Math.min(faktorw, faktorh); + } + int gfi_width = (int) (picture.getWidth()*faktor); + int gfi_height = (int) (picture.getHeight()*faktor); + + setImage(new GreenfootImage(gfi_width, gfi_height)); + Graphics2D g = (Graphics2D) this.getImage().getAwtImage().getGraphics(); + g.drawImage(picture.getImage(),0,0,gfi_width, gfi_height, 0, 0, picture.getWidth(), picture.getHeight(), null); + g.setColor(new java.awt.Color(0,0,0)); + g.setStroke(new BasicStroke((float) 1)); + g.drawRect(0,0,gfi_width-1, gfi_height-1); + + } + + // Wrappermethoden + /** + * Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + * Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + * der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu. + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public void size(int width, int height){ + picture.size(width, height); + } + + /** + * Liefert die Breite des Bildes zurück. + * @return Breite des Bildes + */ + public int getImageWidth() { + return picture.getWidth(); + } + + /** + * Liefert die Höhe des Bildes zurück. + * @return Höhe des Bildes + */ + public int getImageHeight() { + return picture.getHeight(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + picture.background(c); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + picture.background(r,g,b); + } + + /** + * Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + * Um eine Linie einzufärben, verwenden Sie die {@link #stroke(int, int, int) stroke()} Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + * Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + * {@link #strokeWeight(double) strokeWeight()} geändert werden. + * @param x1 x-Koordinate des 1. Punktes + * @param y1 y-Koordinate des 1. Punktes + * @param x2 x-Koordinate des 2. Punktes + * @param y2 y-Koordinate des 2. Punktes + */ + public void line(int x1, int y1, int x2, int y2) { + picture.line(x1,y1,x2,y2); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + picture.rect(a,b,c,d); + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + picture.ellipse(a,b,c,d); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + picture.triangle(x1,y1,x2,y2,x3,y3); + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + picture.quad(x1,y1,x2,y2,x3,y3,x4,y4); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + public void polygon(int[] x, int[] y) { + picture.polygon(x,y); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + picture.point(x,y); + + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + * Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + * Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void rectMode(int mode) { + picture.rectMode(mode); + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + * Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + * Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als Breite und Höhe der Form. + * ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void ellipseMode(int mode) { + picture.ellipseMode(mode); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + picture.stroke(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + picture.noStroke(); + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + picture.strokeWeight(width); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + picture.fill(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + picture.noFill(); + } + + /** + * Löscht den Inhalt des Bildes. + * Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt. + */ + public void clear(){ + picture.clear(); + } + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + picture.load(filename); + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + picture.save(filename); + } + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param t Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String t, int x, int y) { + picture.text(t,x,y); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + picture.textFont(font); + } + + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + public Color[][] getPixelArray() { + return picture.getPixelArray(); + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + picture.setPixelArray(pixel); + } + + +} + diff --git a/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a4/Table.java b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a4/Table.java new file mode 100644 index 0000000..ee5a211 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a4/Table.java @@ -0,0 +1,894 @@ +/** + * Die Klasse Table vereinfacht den Zugriff auf CSV-Dateien. + * Die Klassen Table und TableRow ermöglichen einen einfachen Zugriff auf tabellenbasierte + * Dokumente. + * + * @author Thomas Schaller + * @version 1.0 vom 01.02.2019 + */ + +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.ArrayList; +import java.io.*; +import java.util.Scanner; + +import org.jdom.Document; +import org.jdom.Element; +import org.jdom.Attribute; +import org.jdom.JDOMException; +import org.jdom.input.SAXBuilder; +import org.jdom.output.XMLOutputter; +import org.jdom.output.Format; + +public class Table +{ + // Standardtrennzeichen für Spalten + private static final char DEFAULT_SEPARATOR = ';'; + // Standardmarkierung für Texte + private static final char DEFAULT_QUOTE = '"'; + // Standardtrennzeichen für Dezimalzahlen + private static final char DEFAULT_COMMA = ','; + + // mögliche Spaltentypen + private static final String UNKNOWN ="UNKOWN"; + private static final String INT = "INTEGER"; + private static final String DOUBLE = "DOUBLE"; + private static final String FLOAT = "FLOAT"; + + // interne Verwaltung des Dokuments als JDOM-Document-Objekt + private Document doc; + // Verweis auf Element für Kopfzeile + private Element header; + // Ende Attribute + + /** + * Erzeugt leeres Tabellen-Dokument. + */ + public Table() { + this.doc = new Document(); + doc.setRootElement(new Element("CSV-Data")); + this.header = new Element("Header"); + doc.getRootElement().addContent(header); + } + + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei und erstellt ein Tabellenobjekt mit seinen Werten. + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public Table(String filename, String options, char separator, char quote) { + loadCSV(filename, options, separator, quote); + } + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei und erstellt ein Tabellenobjekt mit seinen Werten (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + */ + public Table(String filename, String options) { + loadCSV(filename, options); + } + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei ohne Kopfzeile und erstellt ein Tabellenobjekt mit seinen Werten (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public Table(String filename) { + loadCSV(filename); + } + + // Anfang Methoden + /** + * Liest den Inhalt einer CSV-Datei ohne Kopfzeile (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public void loadCSV(String filename) { + loadCSV(filename, ""); + } + + /** + * Liest den Inhalt einer CSV-Datei (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + */ + public void loadCSV(String filename, String options) { + loadCSV(filename, options, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** + * Liest den Inhalt einer CSV-Datei. + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public void loadCSV(String filename, String options, char separator, char quote) { + doc = new Document(); + doc.setRootElement(new Element("CSV-Data")); + header = new Element("Header"); + doc.getRootElement().addContent(header); + try { + File f = new File(filename); + Scanner scanner = new Scanner(new File(filename)); + if(options.toLowerCase().contains("header") && scanner.hasNext()) { + List entries = parseLine(scanner.nextLine(), separator, quote); + int i= 0; + for(String s : entries) { + Element entry = new Element("Column"); + header.addContent(entry); + entry.setText(s); + entry.setAttribute("type", "unknown"); + i++; + } + } + + List cols = header.getChildren(); + + while (scanner.hasNext()) { + Element line = new Element("Row"); + doc.getRootElement().addContent(line); + List entries = parseLine(scanner.nextLine(), separator, quote); + int i= 0; + + for(String s : entries) { + + if(i==cols.size()) { + Element entry = new Element("Column"); + entry.setAttribute("type", "unknown"); + header.addContent(entry); + cols = header.getChildren(); + } + + Element entry = new Element("Entry"); + entry.setText(s); + line.addContent(entry); + i++; + } + } + scanner.close(); + + } catch (Exception e) { + System.out.println("Fehler beim Lesen der CSV-Datei"); + } + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei ohne Kopfzeile (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public void saveCSV(String filename) { + saveCSV(filename, ""); + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthalten, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile haben soll, + * dann lassen Sie einfach die Option "header" weg. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile haben soll. + * @param filename Dateiname der CSV-Datei. + */ + public void saveCSV(String filename, String options) { + saveCSV(filename, options, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei. + * Wenn die Datei eine Kopfzeile enthalten, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile haben soll, + * dann lassen Sie einfach die Option "header" weg. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile haben soll. + * @param filename Dateiname der CSV-Datei. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public void saveCSV(String filename, String options, char separator, char quote){ + try{ + File f = new File(filename); + PrintStream outputFile = new PrintStream (f); + System.out.println("Speicher in : "+f.getAbsolutePath()); + List columns = header.getChildren(); + String sq = ""+quote; + String ss = ""+separator; + if(quote =='"') sq = "\""; + if(separator =='"') ss = "\""; + + if(options.toLowerCase().contains("header")) { + String h = ""; + for(Element c : columns) { + h += ss + sq + c.getText()+sq; + } + outputFile.println(h.substring(1)); + } + for(int i = 0; i parseLine(String cvsLine) { + return parseLine(cvsLine, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** HIlfsfunktion für die Analyse einer Dateizeile + * @param cvsLine Zeile aus der Datei + * @param sparator Trennzeichen für die Spalten + * @return Liste von String für die einzelnen Spalten + */ + private List parseLine(String cvsLine, char separator) { + return parseLine(cvsLine, separator, DEFAULT_QUOTE); + } + + /** HIlfsfunktion für die Analyse einer Dateizeile + * @param cvsLine Zeile aus der Datei + * @param sparator Trennzeichen für die Spalten + * @param customQuote Kennung für Strings + * @return Liste von String für die einzelnen Spalten + */ + private List parseLine(String cvsLine, char separator, char customQuote) { + + List result = new ArrayList<>(); + + //if empty, return! + if (cvsLine == null && cvsLine.isEmpty()) { + return result; + } + + //ggf. Default-Value laden + if (customQuote == ' ') { + customQuote = DEFAULT_QUOTE; + } + + if (separator == ' ') { + separator = DEFAULT_SEPARATOR; + } + + StringBuffer curVal = new StringBuffer(); + boolean inQuotes = false; + boolean startCollectChar = false; + boolean doubleQuotesInColumn = false; + + char[] chars = cvsLine.toCharArray(); + + for (char ch : chars) { + + if (inQuotes) { // aktueller Text ist in Quotes eingeschlossen + startCollectChar = true; + + if (ch == customQuote) { // Quotes werden beendet, aber Achtung bei "" => Metazeichen + inQuotes = false; + if (ch == '\"') { + doubleQuotesInColumn = true; + } + + } else { + + if (ch == '\"' && !doubleQuotesInColumn) { + doubleQuotesInColumn = true; + } else { + curVal.append(ch); + doubleQuotesInColumn = false; + } + + } + } else { + if (ch == customQuote) { + + inQuotes = true; + + //Fixed : allow "" in empty quote enclosed + if (ch == '\"'){ + if(doubleQuotesInColumn) { + curVal.append('"'); + doubleQuotesInColumn = false; + } else doubleQuotesInColumn = true; + + + } + } + else { + doubleQuotesInColumn = false; + if (ch == separator) { + + result.add(curVal.toString()); + + curVal = new StringBuffer(); + startCollectChar = false; + + } else if (ch == '\r') { + //ignore LF characters + continue; + } else if (ch == '\n') { + //the end, break! + break; + } else { + curVal.append(ch); + } + } + } + + } + result.add(curVal.toString()); + return result; + } + + /** + * Sucht die Nummer einer durch Namen gegebenen Spalte. + * @param name Name der Spalte + * @return Nummer der Spalte + */ + + private int findColumnNumber(String name) { + List columns = header.getChildren(); + int i = 0; + for(Element c : columns) { + if (c.getText().toLowerCase().equals(name.toLowerCase())) { + return i; + + } + i++; + } + return -1; + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an. + */ + public void addColumn() { + Element entry = new Element("Column"); + entry.setAttribute("type", Table.UNKNOWN); + header.addContent(entry); + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an und benennt sie. + * @param title Bezeichnung der Spalte + */ + public void addColumn(String title) { + addColumn(); + Element nc = ((List)(header.getChildren())).get(header.getChildren().size()-1); + nc.setText(title); + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an und benennt und typisiert sie. + * @param title Bezeichnung der Spalte + * @param type Typ der Spalte (UNKNOWN, DOUBLE, INTEGER, FLOAT) + */ + public void addColumn(String title, String type) { + addColumn(title); + Element nc = ((List)(header.getChildren())).get(header.getChildren().size()-1); + nc.setAttribute("type", type); + } + + /** + * Löscht eine Spalte. + * @param i Nummer der Spalte. + */ + public void removeColumn(int i) { + List lines = doc.getRootElement().getChildren(); + for(Element l : lines) { + if(l.getChildren().size()>i) l.removeContent(i); + } + } + + /** + * Löscht eine Spalte + * @param name Name der Spalte + */ + public void removeColumn(String name) { + try{ + removeColumn(findColumnNumber(name)); + } catch(Exception e) { System.out.println("Unbekannter Spaltenname");} + } + + /** + * Liefert die Anzahl der Spalten in der Tabelle + * @return Anzahl der Spalten + */ + public int getColumnCount() { + return header.getChildren().size(); + } + + /** + * Liefert die Anzahl der Zeilen in der Tabelle + * @return Anzahl der Zeilen + */ + public int getRowCount() { + return doc.getRootElement().getChildren().size()-1; + } + + /** + * Löscht alle Zeilen der Tabelle. + * Die Spaltenüberschriften und Typen bleiben erhalten. + */ + public void clearRows() { + doc.getRootElement().removeChildren("Row"); + } + + /** + * Fügt eine neue Zeile an das Ende der Tabelle an. + * @return ein TableRow-Objekt für diese neue Zeile + */ + public TableRow addRow() { + Element row = new Element("Row"); + doc.getRootElement().addContent(row); + return new TableRow(doc, row); + } + + /** + * Löscht eine Zeile + * @param i Nummer der Zeile + */ + public void removeRow(int i) { + if(i rows = doc.getRootElement().getChildren(); + return new TableRow(doc, rows.get(i+1)); + } + return null; + } + + /** + * Liefert die ganze Tabelle als Array von TableRow-Objekten + * @return Array von TableRow-Objekten + */ + public TableRow[] rows() { + TableRow[] rows = new TableRow[getRowCount()]; + for(int i = 0; i < getRowCount(); i++) { + rows[i] = getRow(i); + } + return rows; + } + + /** + * Liefert den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param column Spaltennummer + * @return Wert der Zelle + */ + public int getInt(int row, int column) { + return getRow(row).getInt(column); + } + + /** + * Liefert den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param name Name der Spalte + * @return Wert der Zelle + */ + public int getInt(int row, String name) { + return getRow(row).getInt(name); + } + + /** + * Setzt den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param column Spaltennummer + * @param value neuer Wert der Zelle + */ + public void setInt(int row, int column,int value) { + getRow(row).setInt(column, value); + } + + /** + * Setzt den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(int row, String name, int value) { + getRow(row).setInt(name, value); + } + + /** + * Liefert alle Werte einer Zeile als Integer-Array. + * @param row Nummer der Zeile + * @return int-Array, dass alle Werte der Zeile enthält + */ + public int[] getIntRow(int row) { + try{ + TableRow trow = getRow(row); + int anz = getColumnCount(); + int[] r = new int[anz]; + for(int i=0; i) (header.getChildren())).get(i).getText(); + } else { + return ""; + } + } + + /** + * Liefert die Nummer einer Spalte + * @param name Name der Spalte + * @return Nummer der Spalte + */ + public int getColumn(String name) { + List columns = header.getChildren(); + int i = 0; + while (i < columns.size()) { + if (columns.get(i).getText().toLowerCase().equals(name.toLowerCase())) { + return i; + } + i++; + } // end of while + return -1; + } + + + /** + * Erzeugt eine neue Zeile mit i Spalten + * Wenn bisher nicht genügend Spalten vorhanden sind, werden automatisch neue Spalten hinzugefügt (auch zum Header) + * @param i Anzahl der Spalten + */ + private Element buildRow(int i) { + List columns = header.getChildren(); + Element entry=null; + for(int j=0; j<=i; j++) { + + if(j==columns.size()) { + Element h = new Element("Column"); + h.setAttribute("type", "unknown"); + header.addContent(h); + columns = header.getChildren(); + } + if(j==current.getChildren().size()) { + entry = new Element("Entry"); + current.addContent(entry); + + } + + } + return entry; + + } + + /** + * Erzeugt eine neue Zeile. + * Es werden genügend Spalten erzeugt, dass ein Wert in Spalte "name" eingetragen werden kann + * @param name Name der Spalte + */ + private Element buildRow(String name) { + List columns = header.getChildren(); + int i = 0; + for(Element c: columns) { + + if(c.getText().toLowerCase().equals(name.toLowerCase())) { + return buildRow(i); + } + i++; + } + return null; + + } + + /** + * Liefert den Wert einer Zelle als String + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public String getString(int i) { + if(i >= current.getContent().size()) return ""; + Element e = (Element) current.getContent(i) ; + if(e!=null) { + return e.getText(); + } else { + return ""; + } + } + + /** + * Liefert den Wert einer Zelle als String + * @param name Name der Spalte + * @return Wert der Zelle + */ + public String getString(String name) { + return getString(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als String + * @param i Nummer der Spalte + * @param text neuer Wert der Zelle + */ + public void setString(int i, String text) { + + Element e = buildRow(i); + if(e!=null) e.setText(text); + } + + /** + * Setzt den Wert einer Zelle als String + * @param name Name der Spalte + * @param text neuer Wert der Zelle + */ + public void setString(String name, String text) { + Element e = buildRow(name); + if(e!=null) e.setText(text); + } + + + /** + * Liefert den Wert einer Zelle als Int-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public int getInt(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Integer.parseInt(e.getText()); + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Int-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public int getInt(String name) { + return getInt(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Int-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(int i,int value) { + + Element e = buildRow(i); + if(e!=null) e.setText(""+value); + } + + /** + * Setzt den Wert einer Zelle als Int-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(String name, int value) { + Element e = buildRow(name); + if(e!=null) e.setText(""+value); + } + + /** + * Liefert den Wert einer Zelle als Float-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public float getFloat(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Float.parseFloat(e.getText().replace(",",".")); + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Float-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public float getFloat(String name) { + return getFloat(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Float-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setFloat(int i,float value) { + + Element e = buildRow(i); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Setzt den Wert einer Zelle als Float-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setFloat(String name, float value) { + Element e = buildRow(name); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Liefert den Wert einer Zelle als Double-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public double getDouble(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Double.parseDouble(e.getText().replace(",",".")); + + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Double-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public double getDouble(String name) { + return getDouble(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Double-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setDouble(int i,double value) { + + Element e = buildRow(i); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Setzt den Wert einer Zelle als Double-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setDouble(String name, double value) { + Element e = buildRow(name); + if(e!=null) e.setText(format.format(value)); + } + +} diff --git a/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a4/XML.java b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a4/XML.java new file mode 100644 index 0000000..c06c490 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a4/XML.java @@ -0,0 +1,637 @@ +/** + * Klasse zum Vereinfachten Zugriff auf XML-Dokumente + * Diese Klasse ist für den Einsatz in der Schule gedacht und soll den Schülern + * einen einfachen Zugriff auf XML-Dokumente ermöglichen. Die zur Verfügung + * stehenden Befehle sind wie in Processing realisiert. + * Dabei ist jeder Teilbaum des Dokuments wieder als XML-Objekt zugreifbar, das + * intern auf die gleiche XML-Dokumentstruktur zugreift. + * Dies ermöglicht bei unsachgemäßem Gebrauch die XML-Struktur zu zerstören. Im + * normalen Gebrauch sollte dies aber nicht relevant sein. + * + * Benötigt: jdom-1.1.3.jar + + * @author Thomas Schaller + * @version 1.0 vom 31.01.2019 + */ +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.ArrayList; +import java.io.*; + +import org.jdom.Document; +import org.jdom.Element; +import org.jdom.Attribute; +import org.jdom.JDOMException; +import org.jdom.input.SAXBuilder; +import org.jdom.output.XMLOutputter; +import org.jdom.output.Format; + +public class XML { + // Anfang Attribute + // XML-Dokumentstruktur + private Document doc; + // Zeiger auf das aktuelle Element + private Element current; + // Ende Attribute + + /** + * Erzeugt ein leeres XMLDokument + */ + public XML() { + this.doc = new Document(); + this.current = null; + } + + /** + * Erzeugt ein XML-Dokument aus einer Datei + * @param filename Dateiname der XML-Datei + */ + public XML(String filename) { + loadXML(filename); + } + + /** + * interner Konstruktor, um ein XML Objekt zu erzeugen, das auf einen bestimmten Knoten verweist + * @param doc die XML-Dokumentstruktur + * @param current Zeiger auf das aktuelle Element + */ + private XML(Document doc, Element current) { + this.doc = doc; + this.current = current; + } + + // Anfang Methoden + /** Öffnet das durch den Dateinamen gegebene Dokument + * @param filename Dateiname des XML-Files + */ + public void loadXML(String filename) { + doc = null; + File f = new File(filename); + + try { + // Das Dokument erstellen + SAXBuilder builder = new SAXBuilder(); + doc = builder.build(f); + + } catch (JDOMException e) { + e.printStackTrace(); + + } catch (IOException e) { + e.printStackTrace(); + } + // Zeiger im Baum auf Root-Element + current = doc.getRootElement(); + } + + /** Speichert den XML-Baum im angegebenen Dateinamen + * @param filename Dateiname des XML-Files + */ + public void saveXML(String filename) { + try { + // new XMLOutputter().output(doc, System.out); + XMLOutputter xmlOutput = new XMLOutputter(); + + // display nice nice + xmlOutput.setFormat(Format.getPrettyFormat()); + File f = new File(filename); + FileOutputStream outputFile = new FileOutputStream(f); + System.out.println("Speicher in : "+f.getAbsolutePath() ); + xmlOutput.output(doc, outputFile); + outputFile.close(); + System.out.println("File Saved!"); + } catch (IOException io) { + System.out.println(io.getMessage()); + } + + } + + //----------------------------------------------- Zeigerbewegungen -------------------------------------------------- + /** + * liefert ein XML-Objekt, das auf den Vaterknoten des aktuellen Elements zeigt. + * @return Vater des aktuellen Objekts. + */ + public XML getParent() { + if(current != null) { + Element parent = current.getParentElement(); + if (parent == null) { + return null; + } else { + return new XML(doc, parent); + } + } + return null; + } + + /** + * Überprüft, ob das Element irgendwelche Kinder hat oder nicht, und gibt das Ergebnis als boolean zurück. + * @return true, wenn Kinder vorhanden sind, sonst false + */ + public boolean hasChildren() { + if (current == null) { + return doc.hasRootElement(); + } else { + return current.getChildren().size()>0; + } + } + + /** + * Ermittelt die Namen aller Kinder des Elements und gibt die Namen als ein Array von Strings zurück. + * Dies ist dasselbe wie das Durchlaufen und Aufrufen von getName() auf jedem untergeordneten Element einzeln. + * @return Liste aller Namen der Kinder + */ + public String[] listChildren() { + if (current == null) { + if(doc.hasRootElement()) { + String[] names = new String[0]; + names[0] = doc.getRootElement().getName(); + return names; + } else { + return null; + } + } else { + List ch_element = current.getChildren(); + String[] names = new String[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + names[i] = ch_element.get(i).getName(); + } + return names; + } + } + + /** + * Liefert alle Kinder des Elements als Array von XML-Objekten. + * @return Array der Kinder als XML-Objekte + */ + public XML[] getChildren() { + if (current == null) { + if(doc.hasRootElement()) { + XML[] ch_xml = new XML[1]; + ch_xml[0] = new XML(doc, doc.getRootElement()); + return ch_xml; + } else { + return null; + } + } else { + List ch_element = current.getChildren(); + XML[] ch_xml = new XML[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + ch_xml[i] = new XML(doc, ch_element.get(i)); + } + return ch_xml; + } + } + + /** + * Liefert bestimmte Kinder des Elements als Array von XML-Objekten. + * Die Methode gibt dabei alle Kinder zurück, die dem angegebenen Namen entsprechen. + * @param name Name der gesuchten Kind-Objekte + * @return Array der Kinder als XML-Objekte + */ + public XML[] getChildren(String name) { + if (current == null) { + if(doc.hasRootElement()) { + XML[] ch_xml = new XML[1]; + ch_xml[0] = new XML(doc, doc.getRootElement()); + if(doc.getRootElement().getName().equals(name)){ + return ch_xml; + } else { + return null; + } + } else { + return null; + } + } else { + List ch_element = current.getChildren(name); + XML[] ch_xml = new XML[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + ch_xml[i] = new XML(doc, ch_element.get(i)); + } + return ch_xml; + } + } + + /** + * Liefert das erste Kind des Elements mit einem bestimmten Namen. + * Die Methode gibt das erste Kind zurück, das dem angegebenen Namen entsprechen. + * @param name Name des gesuchten Kind-Objektes + * @return Kind als XML-Objekt + */ + + public XML getChild(String name) { + if (current == null) { + Element e = doc.getRootElement(); + if (e.getName().equals(name)) { + return new XML(doc, e); + } else { + return null; + } + } else { + String[] names = name.split("/"); + Element e = current; + int i = 0; + while(i < names.length) { + e = e.getChild(names[i]); + if (e==null) return null; + i++; + } + return new XML(doc, e); + } + } + + /** + * Liefert das i. Kind des Elements. + * Die Methode gibt das i. Kind des aktuellen Elements zurück. + * @param i Nummer des Kindes + * @return Kind als XML-Objekt + */ + public XML getChild(int i) { + if (current == null) { + return new XML(doc, doc.getRootElement()); + } else { + List ch_element = current.getChildren(); + if (i>=ch_element.size()) return null; + return new XML(doc, ch_element.get(i)); + } + } + + //--------------------------------------------------- Methoden für das aktuelle Element ------------------------------------------------- + /** + * Frage den Namen des aktuellen Elements ab + * @return Namen des Elements + */ + public String getName() { + if (current==null) return ""; + return current.getName(); + } + + /** + * Setze den Namen des aktuellen Elements. + * @param name Neuer Name des Elements + */ + public void setName(String name) { + if (current==null) return; + current.setName(name); + } + + /** + * liefert die Anzahl der Attribute eines Elements. + * @return Anzahl des Attribute + */ + public int getAttributeCount() { + if (current == null) return 0; + return current.getAttributes().size(); + } + + /** + * liefert zurück, ob das aktuelle Element Attribute hat . + * @return true, wenn es Attribute gibt + */ + public boolean hasAttribute() { + if (current == null) return false; + return current.getAttributes().size()>0; + } + + /** + * Ruft alle Attribute des angegebenen Elements ab und gibt sie als Array von Strings zurück. + * @return Liste der Attributnamen + */ + public String[] listAttributes() { + if (current == null) return null; + List attr = current.getAttributes(); + String[] names = new String[attr.size()]; + for(int i=0; i < attr.size() ; i++) { + names[i] = attr.get(i).getName(); + } + return names; + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs + */ + public String getString(String attribute) { + if (current==null) return ""; + return current.getAttributeValue(attribute); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs + */ + public String getString(String attribute, String defaultValue) { + if (current==null) return defaultValue; + return current.getAttributeValue(attribute,defaultValue); + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param text neuer Wert des Attributs + */ + public void setString(String attribute, String text) { + if (current==null) return; + current.setAttribute(attribute, text); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Integer-Zahl + */ + public int getInt(String attribute) { + if (current==null) return 0; + try{ + int i = Integer.parseInt(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als Integer-Zahl + */ + public int getInt(String attribute, int defaultValue) { + if (current==null) return defaultValue; + try{ + int i = Integer.parseInt(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setInt(String attribute, int value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Float-Zahl + */ + public float getFloat(String attribute) { + if (current==null) return 0; + try{ + float i = Float.parseFloat(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als Float-Zahl + */ + public float getFloat(String attribute, float defaultValue) { + if (current==null) return defaultValue; + try{ + float i = Float.parseFloat(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setFloat(String attribute, float value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Double-Zahl + */ + public double getDouble(String attribute) { + if (current==null) return 0; + try{ + double i = Double.parseDouble(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + +/** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als double-Zahl + */ + public double getDouble(String attribute, double defaultValue) { + if (current==null) return defaultValue; + try{ + double i = Double.parseDouble(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setDouble(String attribute, double value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt den Inhalt/Text des aktuellen Elements ab + * @return Inhalt des Elements + */ + public String getContent() { + if ( current==null) return ""; + + return current.getText(); + } + + /** + * Fragt den Inhalt/Text des aktuellen Elements ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardtext + * @return Inhalt des Elements + */ + public String getContent(String defaultValue) { + if ( current==null) return defaultValue; + String t = current.getText(); + if(t.equals("")) t = defaultValue; + return t; + } + + /** + * Setzt den Inhalt/Text des aktuellen Elements + * @param text Neuer Inhalt des Elements + */ + public void setContent(String text) { + if ( current==null) return; + current.setText(text); + } + + + /** + * Fragt den Inhalt des aktuellen Elements als Integerzahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ public int getIntContent(int defaultValue) { + if ( current==null) return defaultValue; + try{ + int i = Integer.parseInt(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Integerzahl ab + * @return Inhalt des Elements + */ + public int getIntContent() { + if ( current==null) return 0; + try{ + int i = Integer.parseInt(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setIntContent(int value) { + if ( current==null) return; + current.setText(""+value); + } + + + /** + * Fragt den Inhalt des aktuellen Elements als Floatzahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ + public float getFloatContent(float defaultValue) { + if ( current==null) return defaultValue; + try{ + float i = Float.parseFloat(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Floatzahl ab + * @return Inhalt des Elements + */ + public float getFloatContent() { + if ( current==null) return 0; + try{ + float i = Float.parseFloat(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setFloatContent(float value) { + if ( current==null) return; + current.setText(""+value); + } + +/** + * Fragt den Inhalt des aktuellen Elements als Doublezahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ + public double getDoubleContent(double defaultValue) { + if ( current==null) return defaultValue; + try{ + double i = Double.parseDouble(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Doublezahl ab + * @return Inhalt des Elements + */ + public double getDoubleContent() { + if ( current==null) return 0; + try{ + double i = Double.parseDouble(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setDoubleContent(double value) { + if ( current==null) return; + current.setText(""+value); + } + + + // ----------------------------------------------- XML-Struktur aufbauen ------------------------------------------------ + /** Erzeuge neues Element nach der aktuellen Position und setze dieses als aktuelles Element + * @param name Name des neuen Elements + * @return neues Element als XML-Objekt + */ + public XML addChild(String name) { + Element e = new Element(name); + if(current == null){ // man ist auf Root-Ebene + doc.setRootElement(e); + + } + else { + current.addContent(e); + } // end of if-else + return new XML(doc, e); + } + + /** + * liefert das aktuelle Element als jdom-Element-Objekt + * @return aktuelles Element + */ + private Element getCurrent() { + return current; + } + + /** + * löscht ein Kind des aktuellen Knotens. + * Ist kid kein Kind des aktuellen Elements passiert gar nichts. + * @param kid XML-Objekt des Kindes + */ + public void removeChild(XML kid) { + if (current == null) return; + Element e = kid.getCurrent(); + int index = current.indexOf(e); + if(index >= 0) { current.removeContent(e);} + } + +} diff --git a/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a4/XYDiagramm.java b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a4/XYDiagramm.java new file mode 100644 index 0000000..68703c1 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a4/XYDiagramm.java @@ -0,0 +1,124 @@ +import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot und MouseInfo) +import java.awt.Font; + +/** + * XY-Diagramm für Schalldruckpegel, Zahlen werden aus CSV-Datei gelesen. + * + * @author Schaller + * @version 29.11.18 + */ +public class XYDiagramm extends PictureViewer + +{ + // Liste mit allen Werten + double[] x_werte; + double[] y_werte; + + // Hilfsvariablen für die Suche + int akt_maximum=-1; // aktuell groesstes Element + int akt=-1; // aktuell untersuchtes Element + int verzoegerung=0; // Geschwindigkeit der Ausführung + + // Schriften + Font kleineSchrift; + Font grosseSchrift; + + public XYDiagramm() { + size(1000, 700); + background(0); + kleineSchrift = new Font( Font.SANS_SERIF, Font.PLAIN, 12 ); + grosseSchrift = new Font( Font.SANS_SERIF, Font.PLAIN, 20 ); + + // Deaktiviere die automatische Neudarstellung nach einem Zeichenbefehl + setAutoRefresh(false); + + // CSV-Datei laden und anzeigen + ladeTabelle("Amplitudes.csv"); + stroke(250,250,200); + zeichneXYDiagramm(); + } + + public void ladeTabelle(String name) { + // Tabelle aus CSV-Datei laden + Table csv = new Table(name, "header",',','"'); + + if (csv != null && csv.getColumnCount()==2) { + + // Initialisiere Arrays, in die alle Zeilen der Tabelle passen + x_werte = new double[csv.getRowCount()]; + y_werte = new double[csv.getRowCount()]; + + // Fülle die Arrays mit Werten aus der Tabelle + for (int i = 0; i < x_werte.length; i++) { //x_werte.length; i++) { + // Lies Wert aus der i. Zeile und der Spalte "Punkte" bzw. "Name" + x_werte[i] = csv.getDouble(i, "Zeit"); + y_werte[i] = csv.getDouble(i, "Laerm"); + System.out.println("Lade Zeile: "+i); + } + } + } + + public void zeichneXYDiagramm() { + + // Überschrift + fill(255, 255, 255); + textFont(grosseSchrift); + text("Lärmpegel", 2, 20); + textFont(kleineSchrift); + + // Alle Einträge darstellen + + if (x_werte != null) { + // Maximum bestimmen + int max_x_pos = sucheMaximum(x_werte); + int max_y_pos = sucheMaximum(y_werte); + double max_x = x_werte[max_x_pos]; + double max_y = y_werte[max_y_pos]; + + // Skalierungsfaktoren + double faktor_x = 1000.0 / max_x; + double faktor_y = 700.0 / max_y; + + for (int i = 0; i+1< x_werte.length; i++) { + + // Linien zeichnen + int x1 = (int) (x_werte[i]*faktor_x); + int y1 = (int) (700- y_werte[i]*faktor_y); + int x2 = (int) (x_werte[i+1]*faktor_x); + int y2 = (int) (700- y_werte[i+1]*faktor_y); + System.out.println("i:"+i); + + line(x1,y1,x2,y2); + } + } + //Bildschrimanzeige erneuern. AutoRefresh ist aus Zeitgründen deaktiviert. + refresh(); + + } + + public int sucheMaximum(double[] zahlen) { + // Sind überhaupt Daten da? + if (zahlen.length==0 ) { + return -1; + } + + // Startwerte setzen + akt_maximum = 0; + akt = 1; + + // Alle Arrayelemente untersuchen + while (akt < zahlen.length) { + + // Neues größtes Element?? + if (zahlen[akt]> zahlen[akt_maximum]) { + // Dann merke dir das neue + akt_maximum = akt; + + } + akt = akt + 1; + } + // Gib Position des größten Elements zurück + return akt_maximum; + } + +} diff --git a/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a4/images/balken.png b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a4/images/balken.png new file mode 100644 index 0000000..9ff1ffc Binary files /dev/null and b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a4/images/balken.png differ diff --git a/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a4/images/bilderrahmen.png b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a4/images/bilderrahmen.png new file mode 100644 index 0000000..7f34e32 Binary files /dev/null and b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a4/images/bilderrahmen.png differ diff --git a/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a4/images/xydiagramm.png b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a4/images/xydiagramm.png new file mode 100644 index 0000000..a13fc89 Binary files /dev/null and b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a4/images/xydiagramm.png differ diff --git a/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a4/jdom-1.1.3.jar b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a4/jdom-1.1.3.jar new file mode 100644 index 0000000..a287727 Binary files /dev/null and b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a4/jdom-1.1.3.jar differ diff --git a/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a4/project.greenfoot b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a4/project.greenfoot new file mode 100644 index 0000000..d84bd84 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a4/project.greenfoot @@ -0,0 +1,93 @@ +#Greenfoot project file +class.PictureViewer.image=bilderrahmen.png +class.XYDiagramm.image=xydiagramm.png +dependency1.from=MyWorld +dependency1.to=XYDiagramm +dependency1.type=UsesDependency +dependency2.from=PictureViewer +dependency2.to=Picture +dependency2.type=UsesDependency +dependency3.from=XYDiagramm +dependency3.to=Table +dependency3.type=UsesDependency +dependency4.from=Table +dependency4.to=TableRow +dependency4.type=UsesDependency +dependency5.from=Picture +dependency5.to=PictureViewer +dependency5.type=UsesDependency +editor.fx.0.height=739 +editor.fx.0.width=816 +editor.fx.0.x=778 +editor.fx.0.y=117 +height=880 +package.numDependencies=5 +package.numTargets=7 +project.charset=UTF-8 +publish.hasSource=false +publish.locked=true +publish.longDesc= +publish.shortDesc= +publish.tags= +publish.title= +publish.url= +readme.height=58 +readme.name=@README +readme.width=47 +readme.x=10 +readme.y=10 +simulation.speed=97 +target1.height=50 +target1.name=PictureViewer +target1.showInterface=false +target1.type=ClassTarget +target1.width=100 +target1.x=0 +target1.y=0 +target2.height=50 +target2.name=Table +target2.showInterface=false +target2.type=ClassTarget +target2.width=80 +target2.x=0 +target2.y=0 +target3.height=50 +target3.name=XYDiagramm +target3.showInterface=false +target3.type=ClassTarget +target3.width=90 +target3.x=0 +target3.y=0 +target4.height=50 +target4.name=Picture +target4.showInterface=false +target4.type=ClassTarget +target4.width=80 +target4.x=0 +target4.y=0 +target5.height=50 +target5.name=XML +target5.showInterface=false +target5.type=ClassTarget +target5.width=100 +target5.x=0 +target5.y=0 +target6.height=50 +target6.name=TableRow +target6.showInterface=false +target6.type=ClassTarget +target6.width=80 +target6.x=0 +target6.y=0 +target7.height=50 +target7.name=MyWorld +target7.showInterface=false +target7.type=ClassTarget +target7.width=80 +target7.x=0 +target7.y=0 +version=3.0.0 +width=1350 +world.lastInstantiated=MyWorld +xPosition=497 +yPosition=80 diff --git a/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a6/Amplitudes.csv b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a6/Amplitudes.csv new file mode 100644 index 0000000..6a3b121 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a6/Amplitudes.csv @@ -0,0 +1,12219 @@ +"Zeit","Laerm" +0.000000000E0,6.133205686E1 +1.130000000E-1,5.602431153E1 +3.840000000E-1,3.897519867E1 +7.780000000E-1,4.208195145E1 +1.036000000E0,3.840936313E1 +1.305000000E0,3.561092139E1 +1.587000000E0,4.663257633E1 +1.829000000E0,5.311883882E1 +2.084000000E0,5.299431820E1 +2.357000000E0,5.747397858E1 +2.643000000E0,5.626338063E1 +2.949000000E0,5.790811120E1 +3.238000000E0,5.874544026E1 +3.497000000E0,5.736162139E1 +3.775000000E0,5.897817442E1 +4.097000000E0,5.789822970E1 +4.357000000E0,5.312015799E1 +4.626000000E0,5.710192134E1 +4.941000000E0,6.275087240E1 +5.235000000E0,5.784358767E1 +5.535000000E0,5.388577420E1 +5.827000000E0,5.403495101E1 +6.090000000E0,5.428355086E1 +6.339000000E0,6.064473144E1 +6.616000000E0,6.271091291E1 +6.850000000E0,6.982615367E1 +7.128000000E0,7.050308750E1 +7.487000000E0,5.395311298E1 +7.760000000E0,5.036401582E1 +8.065000000E0,4.614125463E1 +8.361000000E0,6.244776407E1 +8.614000000E0,6.315719526E1 +8.862000000E0,5.981740395E1 +9.123000000E0,5.907292535E1 +9.374000000E0,5.661523092E1 +9.665000000E0,6.210368813E1 +9.948000000E0,6.140958115E1 +1.021100000E1,5.697007655E1 +1.058300000E1,5.460455934E1 +1.084000000E1,5.408516231E1 +1.115300000E1,5.907221377E1 +1.142100000E1,6.113412429E1 +1.172700000E1,6.267949704E1 +1.197100000E1,6.245109870E1 +1.226500000E1,6.342534529E1 +1.255800000E1,6.810008108E1 +1.287100000E1,6.036891848E1 +1.313400000E1,5.913231814E1 +1.342700000E1,5.973818566E1 +1.371600000E1,5.534371651E1 +1.401200000E1,5.694514867E1 +1.431200000E1,6.134814982E1 +1.461100000E1,5.900023912E1 +1.484600000E1,5.689908400E1 +1.515800000E1,5.296474858E1 +1.544000000E1,5.608528071E1 +1.569300000E1,5.728560404E1 +1.596900000E1,5.837984103E1 +1.620100000E1,5.718896638E1 +1.649200000E1,5.909973037E1 +1.678900000E1,5.705554272E1 +1.716300000E1,6.079937758E1 +1.747400000E1,5.618116117E1 +1.775200000E1,5.519881157E1 +1.803800000E1,5.402386340E1 +1.829100000E1,5.678484358E1 +1.858100000E1,5.954639303E1 +1.882300000E1,6.030021638E1 +1.908000000E1,5.588340744E1 +1.934400000E1,5.668691200E1 +1.958800000E1,6.042765467E1 +1.983400000E1,5.839794223E1 +2.008500000E1,5.457976882E1 +2.039500000E1,5.974390604E1 +2.064000000E1,6.049774386E1 +2.092900000E1,6.029857781E1 +2.117800000E1,6.116406203E1 +2.142700000E1,5.664722837E1 +2.173400000E1,5.823294996E1 +2.203100000E1,5.517538657E1 +2.229000000E1,5.322823206E1 +2.259900000E1,6.180779467E1 +2.285300000E1,6.106216386E1 +2.314900000E1,5.883321877E1 +2.347100000E1,6.045262422E1 +2.375000000E1,6.163931220E1 +2.406000000E1,4.841181734E1 +2.432800000E1,4.372149986E1 +2.462900000E1,5.625563946E1 +2.487100000E1,5.672759349E1 +2.513200000E1,5.896193725E1 +2.540800000E1,5.893011728E1 +2.566400000E1,5.857261268E1 +2.596700000E1,5.859012974E1 +2.621900000E1,5.635586832E1 +2.648700000E1,5.350948293E1 +2.673900000E1,5.430043092E1 +2.701400000E1,5.666610976E1 +2.727500000E1,5.218421407E1 +2.753100000E1,5.689076583E1 +2.782000000E1,5.796831886E1 +2.806900000E1,5.608205064E1 +2.831700000E1,5.482273815E1 +2.861600000E1,5.392425499E1 +2.888300000E1,5.329416010E1 +2.914800000E1,5.366916703E1 +2.940200000E1,5.280847155E1 +2.968000000E1,5.333298066E1 +2.994300000E1,5.497085471E1 +3.031200000E1,5.753094076E1 +3.057900000E1,5.655381974E1 +3.086100000E1,5.517704804E1 +3.115600000E1,5.592585858E1 +3.140700000E1,6.212826207E1 +3.166000000E1,5.699502474E1 +3.193500000E1,6.025129057E1 +3.223100000E1,5.686166208E1 +3.247300000E1,5.807641915E1 +3.271900000E1,6.065155151E1 +3.296400000E1,5.961384387E1 +3.320500000E1,6.119064420E1 +3.354400000E1,5.548464633E1 +3.378000000E1,5.699661616E1 +3.408000000E1,5.653770482E1 +3.438000000E1,5.083503664E1 +3.468200000E1,5.695639918E1 +3.495800000E1,5.566535489E1 +3.524700000E1,5.914853092E1 +3.552700000E1,5.758441289E1 +3.576600000E1,6.085665801E1 +3.606700000E1,5.862586334E1 +3.630600000E1,5.096841655E1 +3.662200000E1,6.009246966E1 +3.689400000E1,5.981749726E1 +3.715300000E1,6.108830629E1 +3.740300000E1,5.724514841E1 +3.766500000E1,5.934850613E1 +3.793000000E1,5.725470328E1 +3.819100000E1,5.843556167E1 +3.847700000E1,5.697759761E1 +3.874000000E1,5.721548979E1 +3.901600000E1,5.649629904E1 +3.927200000E1,5.850326911E1 +3.954600000E1,5.691951660E1 +3.993900000E1,5.357092442E1 +4.023400000E1,5.817046878E1 +4.053000000E1,5.554327077E1 +4.081200000E1,5.802928061E1 +4.103900000E1,5.663899845E1 +4.128700000E1,5.494654466E1 +4.155800000E1,5.564956216E1 +4.181900000E1,5.663250304E1 +4.211300000E1,5.652236278E1 +4.238100000E1,5.614203459E1 +4.264000000E1,5.433145844E1 +4.295000000E1,6.132645299E1 +4.326200000E1,6.040612545E1 +4.351400000E1,5.905916902E1 +4.377100000E1,5.885516023E1 +4.401000000E1,5.514814582E1 +4.430800000E1,5.663232510E1 +4.455900000E1,5.055807811E1 +4.482100000E1,5.614950318E1 +4.513300000E1,6.025044420E1 +4.537500000E1,5.643182261E1 +4.568900000E1,5.709089314E1 +4.600500000E1,5.480136123E1 +4.624500000E1,5.924046686E1 +4.656900000E1,6.172358505E1 +4.684100000E1,5.645515217E1 +4.711100000E1,6.002156043E1 +4.736300000E1,6.182669975E1 +4.759700000E1,5.557741963E1 +4.786700000E1,5.598662295E1 +4.818300000E1,5.664767890E1 +4.847900000E1,5.956168629E1 +4.874200000E1,5.713315811E1 +4.898900000E1,5.765479272E1 +4.931400000E1,5.507101982E1 +4.961600000E1,5.361677606E1 +4.990000000E1,5.558547080E1 +5.019600000E1,5.402951441E1 +5.046500000E1,5.805429700E1 +5.078800000E1,5.327636151E1 +5.110300000E1,4.980825483E1 +5.137100000E1,5.290981249E1 +5.165200000E1,4.817864123E1 +5.190100000E1,5.585478693E1 +5.214500000E1,5.457392293E1 +5.242900000E1,5.449921652E1 +5.272500000E1,5.537781025E1 +5.302100000E1,5.598018287E1 +5.326000000E1,5.612851081E1 +5.355800000E1,5.312697891E1 +5.384800000E1,5.799703575E1 +5.409200000E1,5.662162553E1 +5.433900000E1,5.392344795E1 +5.459100000E1,5.398098819E1 +5.494900000E1,5.489231889E1 +5.527100000E1,5.658153835E1 +5.552800000E1,5.624900056E1 +5.589500000E1,4.979935744E1 +5.616900000E1,5.146998424E1 +5.645400000E1,5.878755245E1 +5.668600000E1,5.846227673E1 +5.694400000E1,5.977267383E1 +5.726200000E1,5.508647523E1 +5.754400000E1,5.138853207E1 +5.784300000E1,5.327451232E1 +5.808600000E1,5.887142781E1 +5.837800000E1,5.858062431E1 +5.862200000E1,5.917458096E1 +5.889700000E1,6.050411670E1 +5.926300000E1,5.908687144E1 +5.952100000E1,5.570790758E1 +5.981900000E1,5.444849000E1 +6.006100000E1,5.201240285E1 +6.032000000E1,4.755830762E1 +6.061900000E1,5.204388424E1 +6.086500000E1,5.626914911E1 +6.117500000E1,5.280379974E1 +6.142900000E1,5.093923019E1 +6.173000000E1,5.460427137E1 +6.197800000E1,5.299601182E1 +6.230600000E1,5.424208739E1 +6.257600000E1,5.253762352E1 +6.283700000E1,5.544043962E1 +6.309800000E1,5.527614156E1 +6.335400000E1,5.747262922E1 +6.360700000E1,5.468151445E1 +6.384900000E1,5.582905565E1 +6.410700000E1,5.802400474E1 +6.435000000E1,5.204893636E1 +6.459600000E1,5.280146425E1 +6.486300000E1,4.876648093E1 +6.509700000E1,5.311679703E1 +6.537500000E1,5.192778643E1 +6.571400000E1,5.346709918E1 +6.597900000E1,5.370921552E1 +6.627900000E1,5.676705279E1 +6.652200000E1,5.832258643E1 +6.676600000E1,6.257736406E1 +6.703100000E1,6.295448429E1 +6.737800000E1,6.100964383E1 +6.766100000E1,5.182636016E1 +6.790700000E1,4.952717893E1 +6.821100000E1,5.667475715E1 +6.850300000E1,5.872819054E1 +6.882100000E1,6.004516195E1 +6.907300000E1,5.559244143E1 +6.935100000E1,5.600379936E1 +6.961500000E1,5.338006499E1 +6.987600000E1,5.360104859E1 +7.011900000E1,4.644905289E1 +7.037100000E1,4.528909123E1 +7.067200000E1,5.787885076E1 +7.091600000E1,5.602551032E1 +7.115700000E1,5.989544193E1 +7.142200000E1,6.110384869E1 +7.167900000E1,5.887448069E1 +7.192600000E1,5.797896456E1 +7.226000000E1,5.965665129E1 +7.251000000E1,6.477744226E1 +7.281200000E1,6.243775536E1 +7.310800000E1,5.921576979E1 +7.335600000E1,6.629420582E1 +7.364100000E1,6.683725429E1 +7.392300000E1,5.758295449E1 +7.418800000E1,5.654909286E1 +7.448600000E1,5.881341247E1 +7.472100000E1,5.546609910E1 +7.498300000E1,5.586542777E1 +7.526600000E1,5.463216262E1 +7.558500000E1,5.947397496E1 +7.586200000E1,6.218459899E1 +7.609800000E1,6.134189272E1 +7.635800000E1,5.727526170E1 +7.666700000E1,5.579062978E1 +7.699300000E1,6.015063828E1 +7.729000000E1,6.022787424E1 +7.756300000E1,5.646982462E1 +7.782200000E1,6.005734442E1 +7.813200000E1,5.950776839E1 +7.842200000E1,6.314009710E1 +7.880400000E1,5.425753266E1 +7.910400000E1,5.909139002E1 +7.935300000E1,5.600377253E1 +7.962300000E1,6.036368528E1 +7.993700000E1,5.940415340E1 +8.018900000E1,6.102152187E1 +8.050000000E1,6.619104713E1 +8.074000000E1,6.149981675E1 +8.098900000E1,5.978899259E1 +8.123800000E1,5.963150500E1 +8.150300000E1,6.509054947E1 +8.181300000E1,6.387458039E1 +8.220700000E1,6.421798778E1 +8.246100000E1,6.092500605E1 +8.271900000E1,6.039313205E1 +8.297100000E1,5.885189543E1 +8.328000000E1,6.068901175E1 +8.355600000E1,6.531581124E1 +8.381900000E1,6.460984287E1 +8.407800000E1,6.281147078E1 +8.435000000E1,5.961599483E1 +8.463400000E1,5.915457491E1 +8.489200000E1,5.383227231E1 +8.513000000E1,5.278474817E1 +8.551100000E1,6.165964712E1 +8.574900000E1,6.442604107E1 +8.600700000E1,6.551005247E1 +8.626000000E1,6.660338206E1 +8.650900000E1,6.304014634E1 +8.676000000E1,6.488065719E1 +8.701800000E1,6.416881833E1 +8.728000000E1,5.892166498E1 +8.754500000E1,5.946249393E1 +8.785000000E1,6.506678358E1 +8.809400000E1,5.703264442E1 +8.840500000E1,6.164086486E1 +8.876300000E1,6.276173959E1 +8.906100000E1,5.818071871E1 +8.930500000E1,5.844394446E1 +8.956300000E1,5.657440647E1 +8.987400000E1,6.120356137E1 +9.011500000E1,6.094306560E1 +9.041100000E1,5.978472131E1 +9.065500000E1,6.008128664E1 +9.092400000E1,5.758286780E1 +9.123300000E1,5.353387594E1 +9.151600000E1,5.676204998E1 +9.183800000E1,5.245702159E1 +9.218200000E1,5.642589170E1 +9.243600000E1,5.542467479E1 +9.268000000E1,5.580829615E1 +9.297600000E1,5.148061441E1 +9.322800000E1,4.635974806E1 +9.353200000E1,5.465579762E1 +9.377300000E1,5.154999739E1 +9.402200000E1,5.544992474E1 +9.427900000E1,5.302390200E1 +9.453300000E1,5.127982623E1 +9.478800000E1,5.263086656E1 +9.503100000E1,5.128121484E1 +9.532100000E1,5.061466876E1 +9.557700000E1,5.328260476E1 +9.582800000E1,5.101663724E1 +9.607100000E1,5.400893265E1 +9.640400000E1,5.756552061E1 +9.665500000E1,5.665487755E1 +9.690400000E1,5.719000980E1 +9.715400000E1,5.593995548E1 +9.740400000E1,5.420194495E1 +9.771300000E1,4.867232074E1 +9.802100000E1,5.053798103E1 +9.830700000E1,4.874294948E1 +9.857500000E1,5.754515654E1 +9.883700000E1,5.863618568E1 +9.909700000E1,6.070195076E1 +9.935300000E1,5.434874196E1 +9.961300000E1,6.163600431E1 +9.987300000E1,5.555228218E1 +1.001200000E2,5.733850418E1 +1.003910000E2,6.133233800E1 +1.006620000E2,5.853313440E1 +1.009020000E2,5.435835494E1 +1.011680000E2,5.329891948E1 +1.014680000E2,5.356470018E1 +1.018410000E2,5.574288130E1 +1.021370000E2,5.927571979E1 +1.024000000E2,5.789956910E1 +1.026980000E2,6.081738139E1 +1.029540000E2,5.575615853E1 +1.032580000E2,5.337382111E1 +1.035140000E2,5.562761746E1 +1.038150000E2,5.905624776E1 +1.041040000E2,5.696105750E1 +1.043990000E2,6.170938149E1 +1.046370000E2,5.823687000E1 +1.049080000E2,6.066674703E1 +1.051740000E2,6.220969933E1 +1.054810000E2,5.755805236E1 +1.057660000E2,5.735691579E1 +1.060450000E2,5.761618087E1 +1.063040000E2,5.188413372E1 +1.065680000E2,5.643639822E1 +1.068740000E2,5.312430876E1 +1.071280000E2,5.924995828E1 +1.073900000E2,5.546187342E1 +1.076920000E2,5.474389270E1 +1.079790000E2,5.600814816E1 +1.082440000E2,5.561453096E1 +1.084980000E2,5.408559240E1 +1.087580000E2,5.622058302E1 +1.090160000E2,5.768852773E1 +1.092670000E2,5.516804842E1 +1.095340000E2,5.973626648E1 +1.098120000E2,6.403409511E1 +1.100690000E2,6.035201036E1 +1.103490000E2,5.940482770E1 +1.105950000E2,5.932126109E1 +1.108600000E2,5.859387697E1 +1.111460000E2,5.929800416E1 +1.114110000E2,5.930503134E1 +1.117890000E2,6.170536210E1 +1.120410000E2,6.214563711E1 +1.123490000E2,5.810151097E1 +1.126320000E2,5.823719807E1 +1.128910000E2,6.454485320E1 +1.131870000E2,6.755031626E1 +1.134560000E2,6.410743881E1 +1.137200000E2,5.913442857E1 +1.139870000E2,6.382823805E1 +1.142400000E2,5.859239523E1 +1.145180000E2,5.135859796E1 +1.147890000E2,5.294563188E1 +1.151440000E2,5.357868048E1 +1.154220000E2,5.561359505E1 +1.156620000E2,5.645675088E1 +1.159670000E2,5.879425595E1 +1.162610000E2,5.918610512E1 +1.164990000E2,6.083658676E1 +1.167470000E2,5.526645697E1 +1.169880000E2,5.471312988E1 +1.172910000E2,6.211796732E1 +1.175510000E2,5.417468648E1 +1.177930000E2,5.576739557E1 +1.180750000E2,5.912472365E1 +1.184660000E2,5.718213173E1 +1.187710000E2,5.747081312E1 +1.190170000E2,5.741742618E1 +1.192690000E2,5.379557814E1 +1.195330000E2,5.428733520E1 +1.197780000E2,6.177329402E1 +1.200450000E2,5.672333166E1 +1.203170000E2,5.584947723E1 +1.205670000E2,5.382665718E1 +1.208400000E2,5.443690083E1 +1.211280000E2,5.221565874E1 +1.214800000E2,5.516249741E1 +1.217540000E2,5.676279334E1 +1.220050000E2,5.303796336E1 +1.222680000E2,5.258840561E1 +1.225120000E2,5.671935607E1 +1.227660000E2,4.902892756E1 +1.230240000E2,4.264962220E1 +1.232830000E2,4.818154680E1 +1.235340000E2,5.204058636E1 +1.238430000E2,5.649936271E1 +1.241410000E2,5.396154490E1 +1.244200000E2,5.428877275E1 +1.246760000E2,4.778715710E1 +1.249500000E2,4.912370762E1 +1.252110000E2,5.114426735E1 +1.255020000E2,5.345096378E1 +1.257410000E2,5.581149074E1 +1.260430000E2,5.211774829E1 +1.263320000E2,5.470047014E1 +1.265660000E2,5.399085344E1 +1.268600000E2,5.981732528E1 +1.271210000E2,5.944116770E1 +1.273530000E2,5.668281238E1 +1.275970000E2,5.042419391E1 +1.279080000E2,5.014554177E1 +1.282260000E2,5.350461413E1 +1.285240000E2,5.453533258E1 +1.287780000E2,5.809919663E1 +1.290280000E2,5.729580956E1 +1.292980000E2,5.681749266E1 +1.296010000E2,5.542882864E1 +1.298980000E2,5.612046892E1 +1.302070000E2,6.074750886E1 +1.304620000E2,5.979349108E1 +1.307520000E2,5.806574219E1 +1.310590000E2,5.738881777E1 +1.314010000E2,5.595280312E1 +1.316630000E2,5.401154636E1 +1.319120000E2,5.499471091E1 +1.321620000E2,5.551354327E1 +1.324640000E2,6.567912108E1 +1.327650000E2,5.725129100E1 +1.330150000E2,6.452906176E1 +1.333160000E2,5.778565576E1 +1.335760000E2,6.242194617E1 +1.338200000E2,5.570863747E1 +1.340710000E2,5.755877138E1 +1.343660000E2,6.819206156E1 +1.346260000E2,6.094769164E1 +1.349310000E2,6.447198163E1 +1.351810000E2,5.482297950E1 +1.354630000E2,6.327012623E1 +1.357210000E2,5.723157337E1 +1.359770000E2,5.835004111E1 +1.362140000E2,6.413045068E1 +1.365290000E2,6.022343539E1 +1.368110000E2,5.969265006E1 +1.371070000E2,5.589766444E1 +1.373670000E2,6.089100679E1 +1.376970000E2,6.762783521E1 +1.379410000E2,5.740809854E1 +1.381870000E2,6.711182247E1 +1.384650000E2,6.290175574E1 +1.387060000E2,6.352322572E1 +1.390400000E2,5.897504025E1 +1.392980000E2,5.872568346E1 +1.396520000E2,5.582882684E1 +1.399140000E2,5.874428562E1 +1.402160000E2,5.275369064E1 +1.404650000E2,5.181123336E1 +1.407250000E2,4.758951485E1 +1.410550000E2,4.601470876E1 +1.413500000E2,5.203790008E1 +1.416310000E2,5.380793436E1 +1.418780000E2,5.006781735E1 +1.421580000E2,4.792469964E1 +1.424020000E2,5.136650820E1 +1.427060000E2,5.127969468E1 +1.430200000E2,5.304643312E1 +1.433210000E2,5.218299100E1 +1.436050000E2,5.568762266E1 +1.439010000E2,5.522696018E1 +1.442570000E2,5.919224289E1 +1.445880000E2,6.201398016E1 +1.448680000E2,5.750742223E1 +1.451160000E2,5.811963790E1 +1.454090000E2,5.695462128E1 +1.456560000E2,5.854812337E1 +1.458980000E2,5.886107911E1 +1.461720000E2,5.454171305E1 +1.464480000E2,5.674410925E1 +1.466770000E2,5.450912101E1 +1.469270000E2,5.953864028E1 +1.471790000E2,6.097527460E1 +1.475260000E2,5.825769450E1 +1.478290000E2,5.780473579E1 +1.480790000E2,6.185542851E1 +1.483350000E2,5.390929394E1 +1.486330000E2,5.400087479E1 +1.488750000E2,5.328656685E1 +1.491190000E2,5.599536596E1 +1.494200000E2,5.721648542E1 +1.497150000E2,5.787493165E1 +1.500380000E2,5.480047158E1 +1.503480000E2,5.002404450E1 +1.506590000E2,5.486151348E1 +1.509700000E2,6.245235750E1 +1.512360000E2,5.831236552E1 +1.514820000E2,6.253825815E1 +1.517260000E2,6.440134635E1 +1.520120000E2,5.646251942E1 +1.523080000E2,5.569851104E1 +1.525630000E2,5.574195002E1 +1.528610000E2,6.073633455E1 +1.531220000E2,5.704364811E1 +1.533960000E2,5.858521931E1 +1.536900000E2,6.334346239E1 +1.540080000E2,5.734505299E1 +1.542490000E2,6.522555977E1 +1.544980000E2,5.500712815E1 +1.547420000E2,5.698741268E1 +1.549830000E2,5.097374633E1 +1.552760000E2,5.421781291E1 +1.555100000E2,5.276919678E1 +1.558070000E2,5.444895965E1 +1.560410000E2,5.023818561E1 +1.563440000E2,5.460917302E1 +1.565880000E2,5.459938847E1 +1.568920000E2,5.843131092E1 +1.572210000E2,5.876667307E1 +1.574850000E2,5.735202828E1 +1.577300000E2,5.496399564E1 +1.580290000E2,5.249359356E1 +1.582920000E2,5.216967072E1 +1.585400000E2,5.506360532E1 +1.588040000E2,4.854470136E1 +1.590480000E2,5.455647594E1 +1.593040000E2,5.480802962E1 +1.595560000E2,5.117555202E1 +1.598230000E2,5.525001141E1 +1.600680000E2,6.028739680E1 +1.604080000E2,6.051466285E1 +1.606910000E2,5.941686107E1 +1.609450000E2,6.263789003E1 +1.611920000E2,5.862463866E1 +1.614980000E2,5.858673558E1 +1.617730000E2,5.766546261E1 +1.620210000E2,5.485521148E1 +1.623080000E2,5.814732367E1 +1.625850000E2,5.829863647E1 +1.628370000E2,5.473457172E1 +1.631510000E2,5.323729241E1 +1.634320000E2,5.795543593E1 +1.637670000E2,5.845831909E1 +1.640670000E2,5.883503284E1 +1.643040000E2,5.933733684E1 +1.645990000E2,5.316483696E1 +1.648620000E2,5.628275472E1 +1.651110000E2,5.612764782E1 +1.654290000E2,5.739409022E1 +1.657290000E2,5.275374209E1 +1.660100000E2,5.606330732E1 +1.662350000E2,4.973765069E1 +1.664840000E2,4.855931683E1 +1.667820000E2,4.830487304E1 +1.670210000E2,5.643349546E1 +1.672820000E2,5.752246312E1 +1.675830000E2,5.576545129E1 +1.678330000E2,5.583582770E1 +1.681390000E2,5.301617697E1 +1.684460000E2,5.088408561E1 +1.686990000E2,5.149775091E1 +1.690030000E2,6.019099852E1 +1.692410000E2,6.143998752E1 +1.695380000E2,6.183098470E1 +1.697780000E2,5.964256200E1 +1.701420000E2,5.648358262E1 +1.703870000E2,5.768033788E1 +1.706360000E2,5.037521789E1 +1.709530000E2,5.268785935E1 +1.712030000E2,5.850048969E1 +1.714650000E2,5.537813713E1 +1.717710000E2,5.989062491E1 +1.720770000E2,6.371629733E1 +1.723380000E2,5.413135778E1 +1.726060000E2,5.582389161E1 +1.729040000E2,6.344770094E1 +1.731770000E2,6.038125570E1 +1.735090000E2,5.229655017E1 +1.737830000E2,5.594074665E1 +1.740430000E2,6.258802116E1 +1.743030000E2,5.773122794E1 +1.745600000E2,5.533899998E1 +1.748290000E2,5.069657364E1 +1.750850000E2,6.285550191E1 +1.753480000E2,5.470504416E1 +1.756240000E2,5.746379759E1 +1.758870000E2,5.928233462E1 +1.761350000E2,5.214791610E1 +1.763840000E2,5.260177806E1 +1.767030000E2,4.844041050E1 +1.769490000E2,5.275717684E1 +1.772330000E2,5.436891746E1 +1.774780000E2,5.441421810E1 +1.777590000E2,5.485847839E1 +1.780320000E2,5.714239097E1 +1.782910000E2,6.028837304E1 +1.785470000E2,5.706420775E1 +1.788380000E2,5.509582512E1 +1.791200000E2,5.674185072E1 +1.794340000E2,5.437491314E1 +1.796940000E2,5.696592309E1 +1.799990000E2,5.344092263E1 +1.802540000E2,5.414345246E1 +1.804960000E2,5.421992498E1 +1.808400000E2,5.317024536E1 +1.811450000E2,5.422714635E1 +1.814530000E2,5.933207779E1 +1.817720000E2,5.916706050E1 +1.820730000E2,5.685980261E1 +1.824210000E2,5.521649456E1 +1.826850000E2,5.651993888E1 +1.829810000E2,5.707596711E1 +1.832810000E2,5.464130538E1 +1.836160000E2,5.364065008E1 +1.838600000E2,5.913078622E1 +1.841080000E2,5.695541400E1 +1.843520000E2,6.237274690E1 +1.846510000E2,6.017101966E1 +1.848950000E2,5.670915019E1 +1.851380000E2,5.651470649E1 +1.854400000E2,5.919691857E1 +1.857560000E2,5.752836475E1 +1.860680000E2,6.133052078E1 +1.863670000E2,6.001801442E1 +1.866740000E2,5.871186574E1 +1.869510000E2,5.858669373E1 +1.872240000E2,5.722343490E1 +1.875200000E2,5.725198568E1 +1.877700000E2,5.560524182E1 +1.880340000E2,5.419540118E1 +1.882980000E2,6.169219144E1 +1.885790000E2,5.704261604E1 +1.888700000E2,5.651125138E1 +1.891060000E2,5.778536485E1 +1.894110000E2,5.304160496E1 +1.896990000E2,5.105254388E1 +1.900460000E2,5.338626279E1 +1.902980000E2,5.090929652E1 +1.905360000E2,5.235399183E1 +1.907970000E2,5.429173243E1 +1.910620000E2,5.376238901E1 +1.913500000E2,6.411203098E1 +1.916020000E2,6.235211697E1 +1.919100000E2,5.719243884E1 +1.922140000E2,5.965550680E1 +1.925010000E2,5.850063986E1 +1.928110000E2,6.013906156E1 +1.930480000E2,5.912633730E1 +1.934000000E2,5.860712099E1 +1.936870000E2,5.944287516E1 +1.939980000E2,5.676076088E1 +1.942520000E2,5.712881871E1 +1.945490000E2,5.515631677E1 +1.948870000E2,5.670925955E1 +1.951320000E2,5.768263389E1 +1.954210000E2,5.735243887E1 +1.957290000E2,5.883798740E1 +1.960030000E2,5.654393164E1 +1.963340000E2,5.345251733E1 +1.966710000E2,5.034487882E1 +1.969060000E2,5.741493139E1 +1.971980000E2,5.877434013E1 +1.974210000E2,5.965387227E1 +1.977200000E2,6.306941384E1 +1.979730000E2,6.004201692E1 +1.982230000E2,6.106500017E1 +1.984800000E2,5.674857861E1 +1.987290000E2,6.020914127E1 +1.990680000E2,6.067289060E1 +1.993460000E2,5.996658083E1 +1.996390000E2,5.676340490E1 +1.999500000E2,5.612304129E1 +2.002130000E2,6.289766509E1 +2.005150000E2,5.720971103E1 +2.008280000E2,5.752136939E1 +2.010940000E2,6.058659890E1 +2.013440000E2,5.618430636E1 +2.016270000E2,6.056271249E1 +2.019400000E2,5.729198827E1 +2.022100000E2,5.793084452E1 +2.025070000E2,5.787194228E1 +2.027910000E2,5.959620014E1 +2.030940000E2,6.012062596E1 +2.033180000E2,6.276377758E1 +2.036210000E2,5.834405857E1 +2.039320000E2,5.545225289E1 +2.042050000E2,5.829439447E1 +2.044730000E2,5.799912649E1 +2.047970000E2,5.444896398E1 +2.050680000E2,5.743866699E1 +2.053150000E2,5.862448994E1 +2.055880000E2,5.778478934E1 +2.058890000E2,5.527981007E1 +2.061620000E2,5.742523507E1 +2.064580000E2,5.472188821E1 +2.067100000E2,6.202721053E1 +2.069630000E2,5.861698013E1 +2.072080000E2,6.294616718E1 +2.074730000E2,6.321186761E1 +2.077380000E2,5.776609523E1 +2.080390000E2,6.061292698E1 +2.083320000E2,5.857532480E1 +2.085870000E2,5.800369352E1 +2.088450000E2,5.977447345E1 +2.091070000E2,5.957010157E1 +2.093520000E2,6.145770306E1 +2.096060000E2,6.176056517E1 +2.098580000E2,6.033519811E1 +2.100970000E2,6.429628489E1 +2.103980000E2,6.215353584E1 +2.106470000E2,6.299048914E1 +2.109300000E2,6.133544133E1 +2.112010000E2,5.397487394E1 +2.114250000E2,5.313920655E1 +2.116740000E2,5.552710709E1 +2.119140000E2,5.692289703E1 +2.121730000E2,5.618691953E1 +2.124220000E2,5.402804715E1 +2.127170000E2,5.390450402E1 +2.129570000E2,5.652515030E1 +2.132580000E2,5.490504921E1 +2.135120000E2,5.485761082E1 +2.137850000E2,6.486277416E1 +2.140520000E2,6.121826472E1 +2.143580000E2,6.355465948E1 +2.146390000E2,5.534291145E1 +2.148790000E2,6.610858745E1 +2.151670000E2,5.617739728E1 +2.154670000E2,5.426651762E1 +2.157300000E2,5.840247716E1 +2.160830000E2,5.257749691E1 +2.163200000E2,6.345809118E1 +2.165810000E2,6.020490407E1 +2.168390000E2,5.603372378E1 +2.170870000E2,5.452432165E1 +2.173530000E2,5.679931822E1 +2.176220000E2,6.225558234E1 +2.179360000E2,5.991886985E1 +2.182430000E2,6.307902574E1 +2.184780000E2,6.764692456E1 +2.187700000E2,6.696013302E1 +2.190280000E2,6.419552300E1 +2.193390000E2,6.401831507E1 +2.196000000E2,6.317016249E1 +2.198590000E2,6.093052958E1 +2.201380000E2,6.446513941E1 +2.204220000E2,6.075454080E1 +2.206690000E2,6.712020778E1 +2.209300000E2,5.440050354E1 +2.212550000E2,5.627963451E1 +2.215550000E2,6.358778444E1 +2.217990000E2,5.793661873E1 +2.220730000E2,6.448679664E1 +2.223050000E2,5.844994198E1 +2.226510000E2,5.802583418E1 +2.229440000E2,5.848297014E1 +2.231840000E2,6.170695891E1 +2.234220000E2,6.201301769E1 +2.236630000E2,6.049179870E1 +2.239600000E2,6.316843106E1 +2.242020000E2,5.818837652E1 +2.245150000E2,6.411353278E1 +2.248330000E2,6.458398711E1 +2.250670000E2,6.303280227E1 +2.253240000E2,6.378696379E1 +2.255670000E2,6.157533943E1 +2.259260000E2,5.845901257E1 +2.261910000E2,5.623331182E1 +2.264460000E2,5.550822889E1 +2.267020000E2,5.907003722E1 +2.270220000E2,6.300043778E1 +2.273130000E2,5.934584116E1 +2.275640000E2,5.367094537E1 +2.278520000E2,6.260544714E1 +2.281140000E2,5.666507163E1 +2.283970000E2,6.099713971E1 +2.287020000E2,5.943082312E1 +2.289450000E2,6.095935321E1 +2.292950000E2,5.939706013E1 +2.296230000E2,5.612117806E1 +2.299220000E2,5.805831404E1 +2.301570000E2,5.496048372E1 +2.304070000E2,5.335836124E1 +2.306490000E2,5.043808989E1 +2.309270000E2,4.778025574E1 +2.311680000E2,4.613189565E1 +2.314100000E2,4.740314381E1 +2.316580000E2,5.230056147E1 +2.319150000E2,5.672989332E1 +2.321590000E2,6.081799709E1 +2.325030000E2,5.909736866E1 +2.327570000E2,5.528762811E1 +2.330520000E2,6.623131701E1 +2.333360000E2,6.376149752E1 +2.335730000E2,6.088376871E1 +2.338700000E2,6.235681388E1 +2.341160000E2,6.060610548E1 +2.343930000E2,5.779254532E1 +2.346370000E2,5.570043106E1 +2.349010000E2,6.172637016E1 +2.351520000E2,5.865545525E1 +2.354420000E2,6.250465685E1 +2.356850000E2,6.494272879E1 +2.359310000E2,6.075163542E1 +2.361840000E2,5.742858606E1 +2.364460000E2,5.756917813E1 +2.366990000E2,6.169927684E1 +2.370080000E2,5.540268710E1 +2.373040000E2,5.484088652E1 +2.376000000E2,5.732112773E1 +2.378800000E2,5.184194161E1 +2.381270000E2,5.604168635E1 +2.383910000E2,5.644051218E1 +2.387130000E2,6.049774032E1 +2.390290000E2,6.303013407E1 +2.392800000E2,6.115111046E1 +2.395770000E2,6.294174883E1 +2.398740000E2,6.716012591E1 +2.401880000E2,7.075117191E1 +2.404890000E2,6.435561631E1 +2.407550000E2,5.593172595E1 +2.410720000E2,5.781614361E1 +2.413350000E2,5.497792445E1 +2.416080000E2,5.569244646E1 +2.418870000E2,5.408109683E1 +2.421100000E2,5.687440525E1 +2.424230000E2,6.415333296E1 +2.427170000E2,6.528722740E1 +2.429900000E2,6.229384329E1 +2.432350000E2,5.452507698E1 +2.434960000E2,5.248331654E1 +2.437450000E2,5.069826347E1 +2.439880000E2,4.989889277E1 +2.442610000E2,5.196931346E1 +2.445130000E2,4.988417717E1 +2.448120000E2,5.950968466E1 +2.451200000E2,5.725324421E1 +2.454210000E2,5.902908729E1 +2.456980000E2,5.857784521E1 +2.459650000E2,5.154496059E1 +2.462670000E2,5.316738342E1 +2.465660000E2,5.681338179E1 +2.468580000E2,5.486468116E1 +2.471080000E2,5.378622946E1 +2.473840000E2,5.263910847E1 +2.477040000E2,5.102724000E1 +2.479590000E2,4.958128022E1 +2.482070000E2,5.621813465E1 +2.486190000E2,5.553111013E1 +2.489120000E2,5.711728514E1 +2.491630000E2,6.098223102E1 +2.494610000E2,5.812970142E1 +2.497290000E2,5.874411947E1 +2.500090000E2,6.058797235E1 +2.503160000E2,5.921850964E1 +2.506300000E2,5.825659244E1 +2.508940000E2,5.902074554E1 +2.512250000E2,5.857720223E1 +2.514860000E2,5.834259509E1 +2.517560000E2,5.664723408E1 +2.520110000E2,6.245873243E1 +2.522800000E2,6.018081628E1 +2.525490000E2,6.060905480E1 +2.527980000E2,6.098924059E1 +2.530310000E2,6.604497204E1 +2.532750000E2,5.762503683E1 +2.535750000E2,5.946675250E1 +2.538150000E2,5.696283688E1 +2.541120000E2,5.795434272E1 +2.543420000E2,5.641662406E1 +2.546470000E2,6.001503419E1 +2.549610000E2,5.913147779E1 +2.552050000E2,5.772050526E1 +2.554250000E2,5.986895040E1 +2.557400000E2,4.836792039E1 +2.560130000E2,4.818172752E1 +2.563450000E2,5.244597112E1 +2.566130000E2,5.174954560E1 +2.568650000E2,5.165225717E1 +2.571100000E2,4.865803315E1 +2.573530000E2,4.773689375E1 +2.576460000E2,5.375353685E1 +2.579030000E2,5.630041837E1 +2.582540000E2,5.390583403E1 +2.585030000E2,5.686416101E1 +2.588120000E2,5.880170204E1 +2.590630000E2,5.373023259E1 +2.593590000E2,6.009405077E1 +2.596120000E2,5.710673366E1 +2.598560000E2,5.891240789E1 +2.600990000E2,5.960890080E1 +2.603510000E2,6.728594423E1 +2.606060000E2,6.334340199E1 +2.609270000E2,6.082175509E1 +2.611830000E2,5.750083619E1 +2.615060000E2,5.667484133E1 +2.618070000E2,6.152760439E1 +2.620430000E2,5.697586540E1 +2.623440000E2,5.674189037E1 +2.625730000E2,5.539036876E1 +2.628210000E2,4.901745514E1 +2.631270000E2,5.264848299E1 +2.634230000E2,5.038277380E1 +2.636750000E2,5.149234245E1 +2.639170000E2,4.604207892E1 +2.641630000E2,5.735184247E1 +2.644630000E2,5.659523444E1 +2.648080000E2,5.697978691E1 +2.650640000E2,5.691301726E1 +2.653540000E2,5.696584583E1 +2.656480000E2,5.138210199E1 +2.659030000E2,5.345758564E1 +2.661640000E2,5.363588256E1 +2.664240000E2,5.471656895E1 +2.666720000E2,5.140760448E1 +2.669400000E2,5.329005020E1 +2.671940000E2,5.422388323E1 +2.674460000E2,5.133919880E1 +2.677140000E2,5.690801972E1 +2.681270000E2,5.964609863E1 +2.684030000E2,6.167901240E1 +2.686970000E2,5.297205648E1 +2.689350000E2,5.530010894E1 +2.692310000E2,5.450325538E1 +2.694700000E2,5.391690578E1 +2.697660000E2,5.420666075E1 +2.700010000E2,4.962510480E1 +2.702390000E2,5.010058679E1 +2.705460000E2,5.345147952E1 +2.708590000E2,5.574757195E1 +2.711770000E2,5.571208034E1 +2.714720000E2,5.288998421E1 +2.717170000E2,5.214438195E1 +2.720190000E2,5.232798978E1 +2.723080000E2,6.045263056E1 +2.725500000E2,5.870512300E1 +2.727930000E2,5.577911819E1 +2.730760000E2,5.501493048E1 +2.733800000E2,5.433475343E1 +2.736720000E2,5.293457700E1 +2.739070000E2,5.486483547E1 +2.741780000E2,6.008208952E1 +2.745050000E2,5.845984546E1 +2.748040000E2,5.900764997E1 +2.751070000E2,5.760203457E1 +2.754240000E2,5.795024632E1 +2.757280000E2,6.182748257E1 +2.760340000E2,5.683205968E1 +2.763350000E2,5.821402367E1 +2.766080000E2,5.520672517E1 +2.768980000E2,5.645892504E1 +2.772030000E2,5.463906896E1 +2.775200000E2,5.412722413E1 +2.777910000E2,5.268636730E1 +2.780870000E2,5.566734184E1 +2.783350000E2,5.745256931E1 +2.785810000E2,5.645167582E1 +2.788270000E2,5.925831320E1 +2.790840000E2,5.591320738E1 +2.793690000E2,5.632637646E1 +2.796200000E2,6.252281740E1 +2.799120000E2,5.547643277E1 +2.801570000E2,6.021611275E1 +2.804580000E2,5.732676882E1 +2.808110000E2,5.909573770E1 +2.810780000E2,6.005240162E1 +2.813300000E2,5.965022185E1 +2.815820000E2,6.135840817E1 +2.818790000E2,5.970629096E1 +2.821590000E2,5.879025140E1 +2.824010000E2,5.747324456E1 +2.826520000E2,5.726379384E1 +2.828950000E2,5.871306541E1 +2.831920000E2,6.188032415E1 +2.834710000E2,6.066582287E1 +2.837110000E2,5.950933244E1 +2.840350000E2,5.901018860E1 +2.843000000E2,5.761182729E1 +2.846050000E2,5.446909438E1 +2.848570000E2,5.349219985E1 +2.851700000E2,5.015518748E1 +2.854330000E2,5.374610595E1 +2.857270000E2,5.877223624E1 +2.860310000E2,5.644512377E1 +2.863080000E2,5.711327205E1 +2.865540000E2,5.655239592E1 +2.867930000E2,5.833716670E1 +2.871150000E2,5.417781453E1 +2.874030000E2,5.332227783E1 +2.876540000E2,5.146836736E1 +2.879540000E2,5.452228720E1 +2.881970000E2,5.025406823E1 +2.884910000E2,5.490648375E1 +2.887280000E2,5.506242221E1 +2.890210000E2,5.400927835E1 +2.892600000E2,5.781126179E1 +2.895430000E2,6.384283902E1 +2.898470000E2,6.340395874E1 +2.901430000E2,5.555395770E1 +2.904560000E2,5.514224078E1 +2.907530000E2,5.346566906E1 +2.910000000E2,5.948406902E1 +2.912590000E2,6.362292628E1 +2.915300000E2,6.175065463E1 +2.918240000E2,6.129817533E1 +2.920790000E2,6.317618325E1 +2.923350000E2,6.137933812E1 +2.926010000E2,5.620086793E1 +2.928740000E2,5.715913846E1 +2.931780000E2,7.028942499E1 +2.934620000E2,6.774357618E1 +2.937770000E2,6.989950413E1 +2.940270000E2,6.631119439E1 +2.943030000E2,6.956920703E1 +2.945570000E2,6.352936554E1 +2.948100000E2,6.981123112E1 +2.951150000E2,5.607171784E1 +2.953950000E2,5.394017247E1 +2.956980000E2,7.110851253E1 +2.959460000E2,6.978848906E1 +2.961900000E2,5.446752823E1 +2.965090000E2,6.309281755E1 +2.968110000E2,6.647752141E1 +2.971300000E2,6.773248230E1 +2.974240000E2,6.289421429E1 +2.977060000E2,5.998905240E1 +2.979500000E2,6.016152671E1 +2.981940000E2,5.851705490E1 +2.984880000E2,6.506323043E1 +2.987430000E2,5.702053645E1 +2.990110000E2,4.890963733E1 +2.993040000E2,5.105737182E1 +2.995650000E2,4.950865545E1 +2.998150000E2,4.713536225E1 +3.000860000E2,6.170154569E1 +3.003780000E2,5.697995513E1 +3.006750000E2,6.496205179E1 +3.009180000E2,5.585602045E1 +3.012120000E2,5.317421587E1 +3.015130000E2,5.532213468E1 +3.017840000E2,5.371543715E1 +3.020520000E2,6.741141038E1 +3.023220000E2,6.638671809E1 +3.025730000E2,5.833940482E1 +3.028700000E2,6.272205104E1 +3.031230000E2,6.150676490E1 +3.034050000E2,6.571826996E1 +3.036710000E2,6.387001854E1 +3.039460000E2,5.704179120E1 +3.042380000E2,5.452420344E1 +3.044730000E2,6.911436343E1 +3.047670000E2,6.747337761E1 +3.050070000E2,6.642457947E1 +3.053010000E2,6.704052830E1 +3.055360000E2,6.335116163E1 +3.058350000E2,6.452879154E1 +3.061310000E2,6.588892290E1 +3.064460000E2,6.065604325E1 +3.066970000E2,5.884139521E1 +3.069890000E2,6.115548360E1 +3.072650000E2,5.474220631E1 +3.075290000E2,5.525228633E1 +3.077890000E2,5.546520153E1 +3.080280000E2,5.799541194E1 +3.083270000E2,5.467819740E1 +3.086250000E2,5.227747322E1 +3.089260000E2,5.802220937E1 +3.091970000E2,5.383690373E1 +3.095040000E2,5.794687305E1 +3.097810000E2,5.426386053E1 +3.100000000E2,5.745164866E1 +3.103300000E2,5.475501144E1 +3.106240000E2,5.154802151E1 +3.108750000E2,5.434380726E1 +3.111540000E2,5.533246388E1 +3.114150000E2,5.554218476E1 +3.116740000E2,5.375334275E1 +3.119200000E2,5.727216331E1 +3.121680000E2,5.235396651E1 +3.124720000E2,6.207307801E1 +3.127180000E2,6.488896117E1 +3.130530000E2,6.168970511E1 +3.133080000E2,6.010687101E1 +3.135950000E2,6.305386662E1 +3.138880000E2,6.214030252E1 +3.141410000E2,5.907513997E1 +3.143960000E2,6.064308138E1 +3.146480000E2,6.195321339E1 +3.148870000E2,6.088765310E1 +3.151830000E2,5.906360624E1 +3.154280000E2,5.864981040E1 +3.157360000E2,5.824424792E1 +3.159750000E2,5.826399021E1 +3.163740000E2,6.051726612E1 +3.166320000E2,6.011967909E1 +3.168940000E2,5.577110603E1 +3.172010000E2,5.372586587E1 +3.174460000E2,5.537091967E1 +3.176890000E2,5.504912063E1 +3.179320000E2,5.264203521E1 +3.182150000E2,5.344854544E1 +3.184600000E2,5.656777951E1 +3.187200000E2,5.398435402E1 +3.189820000E2,5.410695962E1 +3.192460000E2,5.344168860E1 +3.195780000E2,5.697626360E1 +3.198350000E2,6.073105615E1 +3.200880000E2,6.621432780E1 +3.203460000E2,6.597785722E1 +3.205980000E2,5.907542432E1 +3.208920000E2,5.702769809E1 +3.211760000E2,6.207459825E1 +3.214520000E2,5.921715282E1 +3.217010000E2,5.501368146E1 +3.220030000E2,5.927746858E1 +3.223090000E2,5.878714279E1 +3.226530000E2,6.209253703E1 +3.229180000E2,5.801419316E1 +3.231660000E2,6.150680788E1 +3.234110000E2,5.950436139E1 +3.236660000E2,5.694006868E1 +3.239890000E2,5.964691948E1 +3.242420000E2,6.322261269E1 +3.245070000E2,5.967413832E1 +3.247540000E2,5.743115651E1 +3.250010000E2,5.693057833E1 +3.252760000E2,5.076009335E1 +3.255600000E2,5.432440321E1 +3.258270000E2,5.728583073E1 +3.262160000E2,6.158050311E1 +3.264570000E2,5.788548067E1 +3.267330000E2,5.661485397E1 +3.270280000E2,5.698735139E1 +3.272870000E2,5.428158234E1 +3.275550000E2,5.401192370E1 +3.278320000E2,5.894424302E1 +3.281050000E2,5.279140275E1 +3.283850000E2,5.366788524E1 +3.286760000E2,5.569462346E1 +3.289750000E2,5.484501656E1 +3.292730000E2,5.654335493E1 +3.295550000E2,5.483429560E1 +3.298560000E2,5.516099131E1 +3.301720000E2,5.150081287E1 +3.304560000E2,5.126263973E1 +3.307930000E2,4.943715566E1 +3.310330000E2,5.297477083E1 +3.312800000E2,4.994759883E1 +3.316030000E2,5.283028939E1 +3.318860000E2,5.150402936E1 +3.321790000E2,5.777668868E1 +3.325470000E2,5.446937149E1 +3.328030000E2,5.754474494E1 +3.330410000E2,5.437750931E1 +3.333210000E2,5.378201308E1 +3.335760000E2,5.486825362E1 +3.338240000E2,5.338123539E1 +3.340700000E2,5.704649160E1 +3.343740000E2,5.576563429E1 +3.346640000E2,5.503590574E1 +3.349650000E2,5.539431503E1 +3.352080000E2,5.782097549E1 +3.355080000E2,5.260852375E1 +3.358690000E2,6.012616228E1 +3.361400000E2,5.534922411E1 +3.363810000E2,5.436765301E1 +3.366230000E2,5.007736554E1 +3.368850000E2,5.304270830E1 +3.371340000E2,5.106682022E1 +3.373960000E2,5.491262243E1 +3.376890000E2,5.891119644E1 +3.379320000E2,5.554676164E1 +3.382420000E2,5.491809401E1 +3.385700000E2,6.003743295E1 +3.389490000E2,5.964265847E1 +3.392140000E2,6.009419780E1 +3.394780000E2,5.950800538E1 +3.397810000E2,5.514081916E1 +3.400260000E2,5.654810222E1 +3.403230000E2,5.919098275E1 +3.405600000E2,5.937137097E1 +3.408650000E2,5.885711760E1 +3.411560000E2,6.122434193E1 +3.414060000E2,6.101494213E1 +3.416650000E2,5.685059098E1 +3.419710000E2,4.988163583E1 +3.423360000E2,5.097871962E1 +3.426300000E2,6.097968551E1 +3.429260000E2,5.246223058E1 +3.431760000E2,5.140448000E1 +3.434570000E2,5.162147831E1 +3.436910000E2,5.437509469E1 +3.439650000E2,5.588289675E1 +3.442010000E2,5.342482218E1 +3.444930000E2,5.621155564E1 +3.447310000E2,5.753713233E1 +3.450340000E2,5.873821374E1 +3.453240000E2,5.674648484E1 +3.455770000E2,5.843857274E1 +3.458770000E2,6.170678128E1 +3.461770000E2,5.848319050E1 +3.464240000E2,5.996271814E1 +3.467290000E2,5.583139448E1 +3.470000000E2,5.558324990E1 +3.472360000E2,5.638821787E1 +3.474880000E2,6.015129432E1 +3.477550000E2,6.074195357E1 +3.480530000E2,6.258101891E1 +3.483260000E2,6.280209300E1 +3.486840000E2,5.935598721E1 +3.489370000E2,6.423635683E1 +3.492060000E2,7.026891453E1 +3.495130000E2,5.477771858E1 +3.498240000E2,6.143080763E1 +3.500700000E2,6.077206860E1 +3.503130000E2,5.816670512E1 +3.506030000E2,6.220374728E1 +3.509040000E2,6.435510927E1 +3.511560000E2,6.387906049E1 +3.514240000E2,6.324188625E1 +3.517710000E2,6.217871174E1 +3.520510000E2,6.349767138E1 +3.523000000E2,5.947763114E1 +3.525840000E2,5.623947938E1 +3.528810000E2,5.940245648E1 +3.531830000E2,5.323006485E1 +3.534790000E2,4.756673680E1 +3.537830000E2,5.761743216E1 +3.540870000E2,5.701856444E1 +3.543720000E2,5.507707077E1 +3.546320000E2,5.561457107E1 +3.549330000E2,6.036785424E1 +3.552860000E2,5.818319920E1 +3.555390000E2,5.636477080E1 +3.557840000E2,5.686236286E1 +3.560330000E2,6.137502104E1 +3.563290000E2,6.039421004E1 +3.565710000E2,5.873926214E1 +3.568160000E2,5.984737812E1 +3.570890000E2,5.898549785E1 +3.573200000E2,5.804358229E1 +3.576080000E2,5.178825198E1 +3.578380000E2,5.333798630E1 +3.581470000E2,5.663121054E1 +3.584860000E2,5.705169894E1 +3.587470000E2,5.488627438E1 +3.590020000E2,5.493171173E1 +3.592590000E2,5.280801534E1 +3.595110000E2,5.919356657E1 +3.597710000E2,6.061921525E1 +3.600770000E2,5.781838960E1 +3.603810000E2,5.824405535E1 +3.606410000E2,5.734273072E1 +3.608930000E2,5.860073318E1 +3.611440000E2,5.158577335E1 +3.614110000E2,5.569804167E1 +3.617550000E2,5.732029627E1 +3.620530000E2,5.599725951E1 +3.623260000E2,5.427140428E1 +3.625700000E2,5.439119305E1 +3.628680000E2,5.768088704E1 +3.631160000E2,5.322266305E1 +3.634170000E2,5.611257515E1 +3.637150000E2,5.466283243E1 +3.639540000E2,5.648497192E1 +3.642520000E2,5.982456496E1 +3.644910000E2,5.683499776E1 +3.648080000E2,5.424977228E1 +3.650550000E2,5.261749952E1 +3.653010000E2,5.976464589E1 +3.655400000E2,5.630627545E1 +3.658370000E2,5.855663855E1 +3.660660000E2,5.839517218E1 +3.663050000E2,5.701336937E1 +3.666100000E2,6.057417753E1 +3.668530000E2,5.660058929E1 +3.671060000E2,5.360906173E1 +3.673270000E2,5.766761713E1 +3.676020000E2,5.473947199E1 +3.679270000E2,5.730791892E1 +3.681990000E2,5.368134624E1 +3.685210000E2,5.122725302E1 +3.688180000E2,5.413949330E1 +3.690720000E2,5.953240184E1 +3.693650000E2,5.834363401E1 +3.696110000E2,4.952962201E1 +3.698620000E2,6.082605721E1 +3.701240000E2,5.541205242E1 +3.703840000E2,5.595936781E1 +3.706570000E2,5.751180267E1 +3.709050000E2,5.510413826E1 +3.712530000E2,5.236304209E1 +3.715330000E2,5.429686706E1 +3.717680000E2,5.365135821E1 +3.720680000E2,5.442146139E1 +3.723070000E2,5.193301537E1 +3.726070000E2,5.573089397E1 +3.728540000E2,5.084704353E1 +3.731070000E2,5.244752708E1 +3.734250000E2,5.501438711E1 +3.737160000E2,5.701937821E1 +3.739830000E2,5.913008265E1 +3.743030000E2,6.329763996E1 +3.745490000E2,5.828010903E1 +3.748110000E2,5.514928454E1 +3.750560000E2,5.535724603E1 +3.753250000E2,6.062318511E1 +3.756820000E2,5.853801057E1 +3.759720000E2,6.218740595E1 +3.762560000E2,6.130322227E1 +3.764780000E2,5.705598438E1 +3.767430000E2,5.675025411E1 +3.770350000E2,5.562309411E1 +3.773330000E2,6.171478403E1 +3.776660000E2,5.752069737E1 +3.779640000E2,5.869913239E1 +3.782130000E2,5.802158707E1 +3.785030000E2,5.920699755E1 +3.787580000E2,5.984700757E1 +3.790120000E2,5.874214142E1 +3.792820000E2,5.792329599E1 +3.795460000E2,6.240429581E1 +3.798520000E2,5.924961400E1 +3.800960000E2,5.655548581E1 +3.803510000E2,5.997047167E1 +3.806590000E2,5.894207932E1 +3.810310000E2,5.556916558E1 +3.813250000E2,5.709965860E1 +3.815810000E2,5.724657649E1 +3.818690000E2,5.634885250E1 +3.821660000E2,5.381597934E1 +3.824070000E2,5.409431797E1 +3.827020000E2,5.558304395E1 +3.829400000E2,5.836087965E1 +3.832380000E2,5.621848827E1 +3.834740000E2,5.756105430E1 +3.837670000E2,5.972981317E1 +3.840620000E2,6.110722903E1 +3.842970000E2,6.011338906E1 +3.846120000E2,6.632548976E1 +3.849300000E2,5.632542095E1 +3.852340000E2,5.660090160E1 +3.854760000E2,5.637042997E1 +3.857700000E2,6.483820819E1 +3.860160000E2,6.294386681E1 +3.862760000E2,6.248693097E1 +3.865740000E2,5.966646580E1 +3.868130000E2,5.884596060E1 +3.871230000E2,6.069045984E1 +3.874660000E2,5.535227762E1 +3.877260000E2,5.453589064E1 +3.879920000E2,5.803286513E1 +3.882920000E2,6.338575111E1 +3.885370000E2,6.297665471E1 +3.888380000E2,6.078963895E1 +3.890870000E2,6.078711186E1 +3.893350000E2,5.918580133E1 +3.896040000E2,5.645003340E1 +3.899070000E2,5.868887980E1 +3.901560000E2,5.816727924E1 +3.904840000E2,5.908711574E1 +3.907830000E2,5.165109059E1 +3.910410000E2,5.747977046E1 +3.913230000E2,5.600926578E1 +3.916170000E2,5.743239537E1 +3.918580000E2,5.999528635E1 +3.921650000E2,5.924448814E1 +3.924670000E2,6.347749271E1 +3.927590000E2,6.285842009E1 +3.929960000E2,6.439104552E1 +3.933010000E2,6.092208558E1 +3.935450000E2,5.889760176E1 +3.939100000E2,5.798312040E1 +3.941770000E2,5.909426563E1 +3.944250000E2,5.971090911E1 +3.946810000E2,5.379436409E1 +3.949270000E2,5.134339741E1 +3.951700000E2,5.739586279E1 +3.954270000E2,5.255911571E1 +3.956850000E2,5.149310319E1 +3.959500000E2,5.723685944E1 +3.962270000E2,5.622087783E1 +3.964720000E2,6.119098643E1 +3.967310000E2,6.249797436E1 +3.970320000E2,5.838309249E1 +3.973440000E2,5.720898847E1 +3.976100000E2,5.357982700E1 +3.978600000E2,5.091452983E1 +3.981070000E2,4.781274510E1 +3.983520000E2,4.684320786E1 +3.986530000E2,4.867937405E1 +3.988970000E2,4.947454895E1 +3.991740000E2,4.941937240E1 +3.994180000E2,5.206925818E1 +3.997200000E2,5.099596962E1 +3.999720000E2,5.059119317E1 +4.002350000E2,4.980275756E1 +4.004940000E2,5.514017077E1 +4.008060000E2,5.354499430E1 +4.011150000E2,5.377825353E1 +4.013980000E2,5.657928040E1 +4.016460000E2,6.437756844E1 +4.019070000E2,6.072529486E1 +4.021970000E2,5.876291143E1 +4.024430000E2,6.118567430E1 +4.027460000E2,5.925186578E1 +4.030590000E2,5.727531678E1 +4.033610000E2,6.211123432E1 +4.036680000E2,6.041950332E1 +4.039230000E2,6.161200416E1 +4.041780000E2,6.047480336E1 +4.044620000E2,5.905442986E1 +4.047060000E2,5.729915709E1 +4.049630000E2,6.020933408E1 +4.052500000E2,5.845152603E1 +4.055600000E2,5.814304967E1 +4.058210000E2,5.866194002E1 +4.060640000E2,5.736420578E1 +4.063180000E2,6.107395805E1 +4.065790000E2,5.985269852E1 +4.069480000E2,5.745859610E1 +4.072050000E2,5.693680110E1 +4.074960000E2,6.165201185E1 +4.077470000E2,6.131132241E1 +4.079970000E2,5.824414723E1 +4.083050000E2,5.958451387E1 +4.085600000E2,5.739792126E1 +4.088150000E2,5.573389816E1 +4.090850000E2,5.530698039E1 +4.093810000E2,5.634371531E1 +4.096660000E2,5.880658089E1 +4.099920000E2,5.804298004E1 +4.102870000E2,5.688352401E1 +4.106310000E2,5.573115839E1 +4.109280000E2,5.368053116E1 +4.112180000E2,5.474384188E1 +4.114650000E2,5.380195893E1 +4.117660000E2,5.718608674E1 +4.120140000E2,5.703743686E1 +4.122910000E2,5.985228158E1 +4.125620000E2,6.278694860E1 +4.128210000E2,5.839550633E1 +4.130600000E2,6.029373556E1 +4.133710000E2,5.711050636E1 +4.136150000E2,5.200468588E1 +4.138820000E2,5.769230508E1 +4.141370000E2,5.333759168E1 +4.143860000E2,5.632377961E1 +4.146570000E2,5.647744894E1 +4.149040000E2,5.667945226E1 +4.151840000E2,5.669404445E1 +4.154420000E2,6.072374556E1 +4.157420000E2,5.606444578E1 +4.159850000E2,5.623596320E1 +4.162830000E2,5.264542492E1 +4.165340000E2,5.359803767E1 +4.168600000E2,5.691340897E1 +4.171060000E2,5.636326143E1 +4.173490000E2,6.276141082E1 +4.176080000E2,6.197471417E1 +4.178580000E2,5.777170976E1 +4.181050000E2,5.407671770E1 +4.183760000E2,4.795453020E1 +4.186580000E2,5.871005652E1 +4.188870000E2,6.069158080E1 +4.191320000E2,6.112379328E1 +4.193750000E2,5.584116633E1 +4.196280000E2,6.302854070E1 +4.199610000E2,6.640457067E1 +4.202240000E2,6.337314603E1 +4.205160000E2,5.904470105E1 +4.208200000E2,5.799078909E1 +4.210810000E2,5.975635789E1 +4.213260000E2,6.334088587E1 +4.215900000E2,5.849627934E1 +4.218550000E2,5.894070219E1 +4.221030000E2,5.961371776E1 +4.223550000E2,5.281830949E1 +4.225970000E2,4.892580508E1 +4.229130000E2,5.950646935E1 +4.232610000E2,6.303011111E1 +4.235630000E2,6.030515180E1 +4.238060000E2,5.832387195E1 +4.240560000E2,6.126571743E1 +4.243280000E2,5.961805347E1 +4.245710000E2,5.916464366E1 +4.248300000E2,6.404431780E1 +4.251020000E2,6.161392817E1 +4.253630000E2,6.303875005E1 +4.256110000E2,6.294329578E1 +4.258560000E2,6.495739223E1 +4.261620000E2,6.352748415E1 +4.265140000E2,6.360144813E1 +4.267650000E2,6.320185268E1 +4.270250000E2,6.598206760E1 +4.272910000E2,5.736158392E1 +4.275300000E2,5.632655800E1 +4.277760000E2,5.626186588E1 +4.280650000E2,5.992298879E1 +4.283460000E2,5.976814640E1 +4.285960000E2,5.617047451E1 +4.288540000E2,5.410240194E1 +4.291290000E2,5.524345530E1 +4.293550000E2,5.025485629E1 +4.297050000E2,5.094849624E1 +4.299600000E2,5.349595208E1 +4.302230000E2,5.668766668E1 +4.304690000E2,5.470073040E1 +4.307330000E2,5.808421323E1 +4.310240000E2,5.815977776E1 +4.312740000E2,5.751031291E1 +4.315190000E2,6.045600028E1 +4.318300000E2,5.967896339E1 +4.320980000E2,5.746835753E1 +4.324020000E2,5.874054152E1 +4.327010000E2,5.770096959E1 +4.330460000E2,5.851412717E1 +4.333220000E2,5.970473393E1 +4.335930000E2,6.024030776E1 +4.338530000E2,5.564089573E1 +4.341340000E2,5.328000065E1 +4.343790000E2,5.522789934E1 +4.346930000E2,5.271905966E1 +4.349910000E2,5.685384424E1 +4.352400000E2,5.751176106E1 +4.355350000E2,5.654290580E1 +4.357760000E2,5.976937629E1 +4.360780000E2,5.445311615E1 +4.363520000E2,5.460006243E1 +4.366010000E2,5.402958946E1 +4.369120000E2,5.611325616E1 +4.371660000E2,5.675575065E1 +4.374120000E2,5.605818704E1 +4.377070000E2,5.614720111E1 +4.379470000E2,5.596280974E1 +4.382450000E2,5.764305460E1 +4.384820000E2,6.015340826E1 +4.387240000E2,6.073594369E1 +4.390310000E2,5.846982437E1 +4.393110000E2,5.837342754E1 +4.396160000E2,5.758988397E1 +4.398810000E2,5.375393273E1 +4.401700000E2,5.590416510E1 +4.404180000E2,5.649267014E1 +4.406570000E2,5.809884175E1 +4.409200000E2,5.934788425E1 +4.411750000E2,5.883690392E1 +4.414270000E2,5.465512306E1 +4.416780000E2,5.456039720E1 +4.419260000E2,6.053551690E1 +4.422020000E2,5.446896121E1 +4.425270000E2,5.304300238E1 +4.428480000E2,5.413537656E1 +4.431230000E2,5.590535088E1 +4.433740000E2,5.516889265E1 +4.436180000E2,5.375803139E1 +4.439250000E2,5.440731706E1 +4.441670000E2,5.378894171E1 +4.444170000E2,5.676009311E1 +4.447160000E2,5.433224316E1 +4.449620000E2,5.431777666E1 +4.452100000E2,5.220353562E1 +4.454560000E2,5.525232641E1 +4.456950000E2,5.348687858E1 +4.459900000E2,5.571408478E1 +4.462320000E2,5.590054486E1 +4.464840000E2,5.627503595E1 +4.467390000E2,5.824548232E1 +4.469910000E2,5.637049423E1 +4.472460000E2,5.754096885E1 +4.474930000E2,5.335865942E1 +4.477890000E2,5.765888938E1 +4.480780000E2,6.102087464E1 +4.483520000E2,6.006145593E1 +4.486510000E2,5.685958774E1 +4.489610000E2,5.748149351E1 +4.492370000E2,5.709623916E1 +4.495040000E2,5.821496279E1 +4.497570000E2,5.970222946E1 +4.500030000E2,5.750976802E1 +4.502380000E2,5.796549321E1 +4.505370000E2,5.665777454E1 +4.508330000E2,5.605038109E1 +4.510750000E2,5.504306522E1 +4.513230000E2,5.112487870E1 +4.515900000E2,5.559150914E1 +4.518300000E2,5.656933458E1 +4.520810000E2,6.082180135E1 +4.524470000E2,5.774965281E1 +4.527120000E2,5.847728207E1 +4.529730000E2,5.711434047E1 +4.532810000E2,5.503285278E1 +4.535670000E2,5.614330822E1 +4.538610000E2,6.211492489E1 +4.541040000E2,6.003078695E1 +4.543760000E2,5.766611466E1 +4.546280000E2,5.912518267E1 +4.549300000E2,5.969489895E1 +4.551760000E2,5.509558621E1 +4.554320000E2,5.963291683E1 +4.556950000E2,6.194656842E1 +4.559980000E2,6.032793642E1 +4.562390000E2,5.874022110E1 +4.565060000E2,6.016749735E1 +4.567480000E2,5.985596964E1 +4.570070000E2,5.588678859E1 +4.572660000E2,5.541792762E1 +4.575660000E2,4.969164404E1 +4.578050000E2,4.976271573E1 +4.581060000E2,5.634137812E1 +4.583500000E2,5.321783082E1 +4.586280000E2,5.816393976E1 +4.588870000E2,5.817726916E1 +4.591860000E2,5.398220140E1 +4.594690000E2,5.572842498E1 +4.597270000E2,5.759574297E1 +4.600290000E2,5.492384706E1 +4.602790000E2,5.570826682E1 +4.605780000E2,5.619496661E1 +4.608690000E2,5.993990435E1 +4.611730000E2,6.185390750E1 +4.614300000E2,6.125031183E1 +4.617390000E2,6.047450440E1 +4.621070000E2,5.913093195E1 +4.623500000E2,6.032535990E1 +4.626490000E2,5.803726699E1 +4.628910000E2,5.968748294E1 +4.631850000E2,5.792594347E1 +4.634330000E2,5.623910190E1 +4.636850000E2,6.026318401E1 +4.639240000E2,6.002593060E1 +4.641990000E2,5.694813724E1 +4.644200000E2,5.456998819E1 +4.646660000E2,5.683591124E1 +4.649070000E2,5.893829862E1 +4.652630000E2,5.637983039E1 +4.655160000E2,5.571226470E1 +4.657720000E2,5.582065666E1 +4.660510000E2,5.436378979E1 +4.663550000E2,5.697364508E1 +4.666350000E2,5.716664070E1 +4.668800000E2,6.098104772E1 +4.671260000E2,5.932872997E1 +4.673960000E2,5.573089336E1 +4.676430000E2,5.791664461E1 +4.678890000E2,5.589855895E1 +4.681490000E2,6.359324433E1 +4.685010000E2,5.902079393E1 +4.687870000E2,6.085500324E1 +4.690180000E2,6.401116813E1 +4.693190000E2,6.157634911E1 +4.695830000E2,6.068297160E1 +4.698370000E2,5.867738322E1 +4.701080000E2,6.069776659E1 +4.703530000E2,5.904983802E1 +4.706060000E2,5.642725313E1 +4.708480000E2,5.600286970E1 +4.711080000E2,5.678564623E1 +4.714020000E2,5.139543439E1 +4.717220000E2,5.924511995E1 +4.720300000E2,5.309180697E1 +4.722790000E2,5.295961103E1 +4.725820000E2,5.448425692E1 +4.728350000E2,5.346047841E1 +4.731210000E2,5.563518239E1 +4.733630000E2,5.630991562E1 +4.736070000E2,5.519344442E1 +4.738520000E2,5.696356709E1 +4.741150000E2,5.721588368E1 +4.743810000E2,5.556082681E1 +4.746430000E2,5.453201409E1 +4.749610000E2,5.621559396E1 +4.752460000E2,6.170975330E1 +4.755640000E2,6.352753975E1 +4.758660000E2,5.818774343E1 +4.761780000E2,6.177058435E1 +4.764630000E2,5.829511769E1 +4.766910000E2,5.658732029E1 +4.769520000E2,6.006113158E1 +4.772530000E2,6.022385702E1 +4.775200000E2,5.965858240E1 +4.778410000E2,5.970326758E1 +4.780960000E2,5.911597661E1 +4.783440000E2,5.656338446E1 +4.786020000E2,5.723922467E1 +4.788680000E2,5.700163516E1 +4.791490000E2,6.083416080E1 +4.794510000E2,5.899425763E1 +4.797630000E2,5.820674449E1 +4.800620000E2,5.648898879E1 +4.803380000E2,5.465743937E1 +4.806090000E2,5.006847009E1 +4.809050000E2,5.870050130E1 +4.811580000E2,5.878066343E1 +4.814060000E2,5.929414686E1 +4.817070000E2,5.758425183E1 +4.819760000E2,5.151398214E1 +4.822410000E2,5.772956896E1 +4.824880000E2,5.913153701E1 +4.827710000E2,5.814746383E1 +4.830140000E2,6.018356701E1 +4.832870000E2,5.985078792E1 +4.835070000E2,6.081307149E1 +4.837500000E2,5.810932132E1 +4.840440000E2,5.700769218E1 +4.842880000E2,5.815119989E1 +4.845920000E2,5.595850943E1 +4.849330000E2,5.891167795E1 +4.851960000E2,5.413833723E1 +4.854760000E2,6.184122004E1 +4.857700000E2,6.074653742E1 +4.860130000E2,6.033024099E1 +4.862530000E2,5.218562994E1 +4.865560000E2,5.902882093E1 +4.868150000E2,6.397338635E1 +4.870790000E2,6.543155406E1 +4.873440000E2,6.181389827E1 +4.876070000E2,6.381240883E1 +4.878770000E2,6.121521197E1 +4.882210000E2,5.780293585E1 +4.884640000E2,5.941826112E1 +4.887100000E2,6.118399944E1 +4.889830000E2,6.000089150E1 +4.892940000E2,5.873163787E1 +4.895350000E2,5.943116280E1 +4.897770000E2,5.867927357E1 +4.900230000E2,6.190584219E1 +4.903270000E2,6.313044892E1 +4.905550000E2,6.096660510E1 +4.907970000E2,5.773464228E1 +4.911090000E2,5.720144266E1 +4.914750000E2,5.797465536E1 +4.917410000E2,6.063197812E1 +4.920040000E2,5.799562897E1 +4.922950000E2,5.391853563E1 +4.925940000E2,6.053973121E1 +4.928320000E2,5.781822977E1 +4.931250000E2,6.541242849E1 +4.933660000E2,6.151252976E1 +4.936620000E2,5.962569242E1 +4.939140000E2,6.114162989E1 +4.941750000E2,6.074296596E1 +4.944160000E2,5.738425867E1 +4.947510000E2,6.084173002E1 +4.950140000E2,5.911448476E1 +4.953100000E2,6.076832164E1 +4.955530000E2,6.357047625E1 +4.958480000E2,6.344590866E1 +4.960850000E2,6.154350148E1 +4.963870000E2,5.815666478E1 +4.966770000E2,5.862350251E1 +4.969720000E2,5.162851816E1 +4.972640000E2,5.887916548E1 +4.975020000E2,6.130693279E1 +4.977480000E2,6.164914583E1 +4.980300000E2,5.689153252E1 +4.983240000E2,6.054571109E1 +4.985610000E2,5.779234792E1 +4.987980000E2,6.281334084E1 +4.991290000E2,6.074883772E1 +4.994230000E2,6.344972933E1 +4.996620000E2,6.040546490E1 +4.999570000E2,6.143019571E1 +5.002020000E2,6.117826214E1 +5.004980000E2,6.217883653E1 +5.007380000E2,6.294102819E1 +5.010930000E2,6.516475449E1 +5.013550000E2,6.119184016E1 +5.016670000E2,6.096554209E1 +5.019390000E2,6.197647057E1 +5.022530000E2,6.186754720E1 +5.025630000E2,5.954982776E1 +5.028510000E2,6.115486405E1 +5.031440000E2,6.348254173E1 +5.033820000E2,5.960570527E1 +5.036780000E2,5.977682583E1 +5.039180000E2,5.709696054E1 +5.042580000E2,6.265263203E1 +5.045140000E2,6.166583393E1 +5.047590000E2,6.184451596E1 +5.050170000E2,6.196658471E1 +5.053150000E2,6.014630927E1 +5.055610000E2,6.055201466E1 +5.058690000E2,6.189129858E1 +5.062120000E2,6.557808579E1 +5.064770000E2,6.080176744E1 +5.067370000E2,6.164107472E1 +5.069870000E2,6.497302078E1 +5.072490000E2,6.320126990E1 +5.076210000E2,6.073801439E1 +5.078780000E2,5.612097300E1 +5.081420000E2,5.978501024E1 +5.084360000E2,6.061444996E1 +5.086860000E2,6.272142993E1 +5.089270000E2,6.250458760E1 +5.092250000E2,5.860749180E1 +5.094720000E2,6.368373725E1 +5.097760000E2,6.005985592E1 +5.100780000E2,5.959557057E1 +5.103410000E2,6.085764000E1 +5.106360000E2,6.210563273E1 +5.109960000E2,6.125336704E1 +5.112590000E2,5.627814405E1 +5.115470000E2,6.253958528E1 +5.118480000E2,6.261683940E1 +5.120990000E2,5.782347554E1 +5.123560000E2,6.181201679E1 +5.126370000E2,6.425542150E1 +5.129400000E2,6.148973489E1 +5.132300000E2,6.230215374E1 +5.134720000E2,6.332855968E1 +5.137620000E2,5.875203916E1 +5.140950000E2,6.043073123E1 +5.143340000E2,5.829778385E1 +5.146280000E2,6.530539120E1 +5.148660000E2,5.725439078E1 +5.151580000E2,6.255661351E1 +5.153960000E2,6.412193683E1 +5.156410000E2,6.315775814E1 +5.158840000E2,6.025521775E1 +5.161460000E2,5.892698587E1 +5.164080000E2,5.956507822E1 +5.166610000E2,6.162757540E1 +5.169960000E2,6.009082976E1 +5.173360000E2,5.999682475E1 +5.176380000E2,6.121463264E1 +5.178750000E2,5.929809726E1 +5.181460000E2,5.746668369E1 +5.183810000E2,5.919113180E1 +5.186360000E2,5.827917213E1 +5.189280000E2,5.902314388E1 +5.192310000E2,6.116063950E1 +5.195310000E2,6.026149556E1 +5.198180000E2,5.851929656E1 +5.200920000E2,5.750929671E1 +5.204160000E2,5.729942637E1 +5.207470000E2,5.472104161E1 +5.210390000E2,6.169397748E1 +5.213450000E2,6.081589597E1 +5.216480000E2,6.278728872E1 +5.219550000E2,6.266319096E1 +5.222160000E2,6.478840582E1 +5.224820000E2,6.255888661E1 +5.227330000E2,6.119451713E1 +5.229970000E2,6.244953097E1 +5.232800000E2,6.000703556E1 +5.236020000E2,5.885323025E1 +5.239510000E2,5.826073845E1 +5.242570000E2,5.807287072E1 +5.245200000E2,5.931641295E1 +5.247800000E2,5.775994158E1 +5.250310000E2,6.167249992E1 +5.253010000E2,6.027694641E1 +5.255430000E2,6.329659774E1 +5.258240000E2,6.254377160E1 +5.261330000E2,6.489975363E1 +5.263840000E2,5.999325642E1 +5.266440000E2,5.885077446E1 +5.268920000E2,6.439829299E1 +5.272450000E2,6.165608373E1 +5.275110000E2,5.418048629E1 +5.277700000E2,5.656005066E1 +5.280170000E2,6.215252288E1 +5.283170000E2,5.743407158E1 +5.285650000E2,5.831214783E1 +5.288200000E2,6.066735547E1 +5.290820000E2,5.994603081E1 +5.293240000E2,5.951550591E1 +5.295810000E2,6.264700953E1 +5.298380000E2,5.736628274E1 +5.301360000E2,5.590406638E1 +5.304530000E2,6.041033291E1 +5.307000000E2,5.968691140E1 +5.309950000E2,5.730835182E1 +5.312390000E2,5.823026311E1 +5.315470000E2,5.871167442E1 +5.318430000E2,5.990765833E1 +5.321400000E2,6.387020611E1 +5.324510000E2,6.077699448E1 +5.326980000E2,5.895294298E1 +5.329820000E2,6.041997988E1 +5.333050000E2,5.806877757E1 +5.336110000E2,5.682362418E1 +5.340220000E2,5.915478638E1 +5.342790000E2,6.110946170E1 +5.345430000E2,5.735857105E1 +5.348060000E2,5.684014045E1 +5.350480000E2,6.043627860E1 +5.353500000E2,5.982929159E1 +5.356290000E2,5.986217314E1 +5.358770000E2,5.677131614E1 +5.361310000E2,5.763848566E1 +5.363810000E2,6.142463983E1 +5.366730000E2,5.634211854E1 +5.369290000E2,5.547608220E1 +5.372430000E2,5.920768747E1 +5.375170000E2,6.113406656E1 +5.377700000E2,6.208964505E1 +5.380710000E2,6.100572025E1 +5.383260000E2,6.352283467E1 +5.386320000E2,5.898993907E1 +5.389570000E2,5.503782412E1 +5.392560000E2,5.663453376E1 +5.395360000E2,6.406828344E1 +5.398060000E2,5.890955595E1 +5.400700000E2,6.046868424E1 +5.403380000E2,5.979639772E1 +5.406170000E2,5.838685694E1 +5.409120000E2,5.933573087E1 +5.411500000E2,5.970536072E1 +5.414430000E2,5.461931777E1 +5.417380000E2,5.891969668E1 +5.419780000E2,6.086182172E1 +5.422730000E2,5.706230292E1 +5.425150000E2,6.002937875E1 +5.428150000E2,5.733734968E1 +5.430520000E2,5.791730719E1 +5.433430000E2,5.451667439E1 +5.436740000E2,5.601232928E1 +5.439430000E2,6.067749331E1 +5.441960000E2,6.044443396E1 +5.445120000E2,6.332642539E1 +5.448320000E2,6.369907597E1 +5.451010000E2,6.327412880E1 +5.453640000E2,6.380509737E1 +5.456090000E2,6.199528902E1 +5.458550000E2,5.905332967E1 +5.461530000E2,5.748064798E1 +5.463920000E2,5.793139247E1 +5.466900000E2,5.931551966E1 +5.470480000E2,6.345498755E1 +5.473610000E2,5.881486603E1 +5.476220000E2,5.928200098E1 +5.478810000E2,5.577309321E1 +5.481470000E2,5.875325885E1 +5.483980000E2,6.007409743E1 +5.486490000E2,6.070612531E1 +5.488940000E2,5.934549940E1 +5.491520000E2,6.170511636E1 +5.494020000E2,6.376886521E1 +5.497010000E2,6.406587518E1 +5.499360000E2,6.365684538E1 +5.503130000E2,6.009406633E1 +5.505850000E2,6.014270409E1 +5.508500000E2,5.879153887E1 +5.511470000E2,5.883782525E1 +5.513760000E2,5.773432280E1 +5.516350000E2,5.966648889E1 +5.518940000E2,5.472606108E1 +5.521930000E2,5.682429497E1 +5.524670000E2,5.619181968E1 +5.527770000E2,5.997719307E1 +5.530460000E2,5.879335465E1 +5.533410000E2,5.983416170E1 +5.537120000E2,5.957041909E1 +5.539420000E2,5.952828793E1 +5.542510000E2,5.971645274E1 +5.545000000E2,6.419337448E1 +5.547730000E2,6.634363344E1 +5.550770000E2,6.285856457E1 +5.553760000E2,5.654671197E1 +5.556440000E2,5.530754918E1 +5.558640000E2,5.889159880E1 +5.561110000E2,6.213947417E1 +5.563520000E2,6.860243311E1 +5.566480000E2,6.647018679E1 +5.569110000E2,6.420604516E1 +5.571650000E2,6.703462967E1 +5.574140000E2,6.648783593E1 +5.576540000E2,6.634001782E1 +5.579350000E2,6.293734135E1 +5.581770000E2,6.205918741E1 +5.584760000E2,5.247262167E1 +5.587220000E2,5.338734169E1 +5.589670000E2,5.662276325E1 +5.592110000E2,5.533465633E1 +5.595080000E2,5.854271946E1 +5.597740000E2,5.660649413E1 +5.600260000E2,6.333844075E1 +5.602860000E2,6.255943536E1 +5.605830000E2,5.392304486E1 +5.608700000E2,5.760897506E1 +5.611660000E2,5.713086887E1 +5.614070000E2,5.720157535E1 +5.617060000E2,5.026592539E1 +5.619510000E2,5.140995344E1 +5.621950000E2,5.663266073E1 +5.624370000E2,5.202695689E1 +5.627360000E2,6.084568668E1 +5.630550000E2,6.179643015E1 +5.632960000E2,5.833759539E1 +5.635420000E2,5.518782498E1 +5.638400000E2,6.578433315E1 +5.640880000E2,5.706187099E1 +5.643850000E2,5.456571992E1 +5.646300000E2,5.536479424E1 +5.649270000E2,5.930541070E1 +5.651540000E2,6.023199994E1 +5.653960000E2,5.612469871E1 +5.656980000E2,5.462007842E1 +5.659410000E2,5.278259804E1 +5.662890000E2,6.064478329E1 +5.666290000E2,5.682964802E1 +5.669030000E2,5.787828261E1 +5.671980000E2,5.712595091E1 +5.674890000E2,5.729764361E1 +5.677450000E2,5.241850056E1 +5.679980000E2,5.377155525E1 +5.682380000E2,5.485418547E1 +5.684830000E2,5.503746434E1 +5.687810000E2,5.398954643E1 +5.690230000E2,5.401913169E1 +5.693270000E2,5.953896215E1 +5.695680000E2,5.626247467E1 +5.698640000E2,6.040491706E1 +5.701050000E2,5.781813181E1 +5.703620000E2,5.733744349E1 +5.706600000E2,5.669032177E1 +5.709140000E2,5.453731954E1 +5.711580000E2,6.235364316E1 +5.714280000E2,5.958044055E1 +5.716860000E2,5.875696014E1 +5.719750000E2,5.570465139E1 +5.722310000E2,4.865236791E1 +5.725580000E2,5.257975627E1 +5.727900000E2,4.975389893E1 +5.730890000E2,5.658508958E1 +5.733660000E2,5.542284648E1 +5.735960000E2,5.536199936E1 +5.738990000E2,5.813474916E1 +5.741540000E2,5.417788207E1 +5.744370000E2,5.704170918E1 +5.746710000E2,5.736828455E1 +5.749280000E2,5.450874678E1 +5.751790000E2,5.610950442E1 +5.754890000E2,5.919887582E1 +5.758690000E2,5.780639378E1 +5.761700000E2,5.709220641E1 +5.764190000E2,5.815359781E1 +5.767060000E2,5.734155824E1 +5.769500000E2,5.925323086E1 +5.772430000E2,6.084767221E1 +5.775370000E2,5.852024889E1 +5.777780000E2,5.822649765E1 +5.780770000E2,5.829089322E1 +5.783770000E2,5.915481192E1 +5.786460000E2,5.996430642E1 +5.789780000E2,6.016421415E1 +5.792520000E2,6.221052482E1 +5.795090000E2,5.533993101E1 +5.798230000E2,6.537257407E1 +5.801220000E2,6.068836920E1 +5.803770000E2,5.728273812E1 +5.806510000E2,5.648369901E1 +5.809070000E2,5.397363349E1 +5.811690000E2,5.755294689E1 +5.814510000E2,5.957149991E1 +5.816900000E2,5.963092636E1 +5.820650000E2,6.778811076E1 +5.823240000E2,6.247529404E1 +5.825840000E2,6.073516327E1 +5.828380000E2,6.039356998E1 +5.830970000E2,5.764504824E1 +5.833990000E2,6.041396176E1 +5.836470000E2,6.355942860E1 +5.838990000E2,5.785560268E1 +5.841390000E2,6.060017525E1 +5.844440000E2,6.032069521E1 +5.847010000E2,5.760371100E1 +5.849440000E2,5.491620812E1 +5.851990000E2,5.957978671E1 +5.855370000E2,6.103184032E1 +5.857970000E2,5.896875350E1 +5.861120000E2,6.008190546E1 +5.863990000E2,5.687378544E1 +5.866450000E2,5.874294643E1 +5.869410000E2,5.870806017E1 +5.871860000E2,5.809143232E1 +5.874740000E2,5.847828699E1 +5.877850000E2,5.846232778E1 +5.880500000E2,5.755876921E1 +5.883650000E2,5.609032758E1 +5.887050000E2,5.685283394E1 +5.889730000E2,5.945975832E1 +5.892710000E2,6.114741701E1 +5.895110000E2,6.316132147E1 +5.898100000E2,6.715155367E1 +5.900480000E2,6.367866992E1 +5.903470000E2,5.131949120E1 +5.905900000E2,5.646494575E1 +5.908880000E2,6.096218752E1 +5.911270000E2,6.089171796E1 +5.913720000E2,6.319522071E1 +5.916410000E2,6.016553529E1 +5.920560000E2,5.915189166E1 +5.923330000E2,5.776862186E1 +5.925640000E2,5.840366445E1 +5.927890000E2,5.978914182E1 +5.930440000E2,6.058699711E1 +5.932650000E2,6.012895387E1 +5.935140000E2,6.295025578E1 +5.937520000E2,6.280196012E1 +5.940110000E2,6.194014009E1 +5.943340000E2,6.483906300E1 +5.945870000E2,5.918257578E1 +5.948380000E2,5.620333930E1 +5.951900000E2,6.323403421E1 +5.954240000E2,6.183177681E1 +5.956620000E2,6.120300936E1 +5.959650000E2,5.836925111E1 +5.961890000E2,6.106023171E1 +5.964920000E2,6.153658324E1 +5.967310000E2,6.490772593E1 +5.969960000E2,6.274228676E1 +5.972520000E2,6.139008510E1 +5.975050000E2,6.281232833E1 +5.978180000E2,6.254982632E1 +5.980890000E2,6.205794184E1 +5.983900000E2,6.438771503E1 +5.986230000E2,6.052772463E1 +5.988520000E2,6.375966703E1 +5.991380000E2,5.869985301E1 +5.993860000E2,6.050357712E1 +5.996630000E2,5.547835745E1 +5.999280000E2,5.400421666E1 +6.001960000E2,5.668252186E1 +6.004880000E2,6.001970320E1 +6.007680000E2,6.056987745E1 +6.010550000E2,6.461211967E1 +6.014090000E2,6.399838195E1 +6.016840000E2,5.485596323E1 +6.019450000E2,5.731519087E1 +6.022080000E2,6.691878914E1 +6.024720000E2,6.479201876E1 +6.027260000E2,6.412847214E1 +6.029760000E2,6.025795068E1 +6.032190000E2,6.098133491E1 +6.035120000E2,5.689387521E1 +6.038040000E2,5.639928101E1 +6.041550000E2,5.328068252E1 +6.044370000E2,5.639829798E1 +6.046770000E2,5.892330560E1 +6.049510000E2,5.315638413E1 +6.051900000E2,5.740260439E1 +6.054620000E2,5.339391440E1 +6.057500000E2,5.310371918E1 +6.060710000E2,5.460903952E1 +6.063050000E2,5.407304270E1 +6.065540000E2,5.870790541E1 +6.068060000E2,5.576782972E1 +6.070790000E2,5.976954147E1 +6.074640000E2,6.181180531E1 +6.077240000E2,6.194364733E1 +6.080150000E2,6.794225297E1 +6.082590000E2,6.236601361E1 +6.085470000E2,6.002700779E1 +6.088450000E2,5.971993236E1 +6.090930000E2,5.954735434E1 +6.093460000E2,5.907202371E1 +6.095920000E2,5.993658420E1 +6.098910000E2,5.530332259E1 +6.101850000E2,5.531802018E1 +6.104220000E2,5.376885939E1 +6.107780000E2,5.735355871E1 +6.110210000E2,5.868610156E1 +6.112710000E2,5.312122754E1 +6.115670000E2,5.745102631E1 +6.118550000E2,5.535536940E1 +6.121540000E2,5.088728731E1 +6.123960000E2,5.266907791E1 +6.126860000E2,5.386493253E1 +6.130010000E2,5.670623073E1 +6.132810000E2,5.563278655E1 +6.135150000E2,5.267172926E1 +6.138540000E2,5.386148816E1 +6.141880000E2,5.716468210E1 +6.144880000E2,5.526918781E1 +6.147190000E2,5.659553915E1 +6.149610000E2,5.648341007E1 +6.152730000E2,5.711745846E1 +6.155520000E2,5.918800114E1 +6.158010000E2,5.642548609E1 +6.161000000E2,5.635896926E1 +6.163480000E2,5.899225051E1 +6.166180000E2,5.374343244E1 +6.168690000E2,4.891042404E1 +6.172050000E2,5.065835680E1 +6.174560000E2,5.685264653E1 +6.177340000E2,5.429270039E1 +6.179930000E2,5.499548313E1 +6.182940000E2,5.407177565E1 +6.185300000E2,5.356533799E1 +6.188300000E2,5.378190643E1 +6.191140000E2,5.189020817E1 +6.193870000E2,5.046647494E1 +6.196450000E2,5.501107364E1 +6.198910000E2,5.798814538E1 +6.201660000E2,5.360844474E1 +6.205080000E2,5.353935610E1 +6.208080000E2,5.620189936E1 +6.210820000E2,6.216008765E1 +6.213360000E2,5.767015155E1 +6.216520000E2,6.210101060E1 +6.219320000E2,5.928042926E1 +6.221800000E2,6.394496555E1 +6.224980000E2,5.872213561E1 +6.227430000E2,5.927091626E1 +6.230010000E2,5.235592166E1 +6.232430000E2,6.313120608E1 +6.235470000E2,6.005436888E1 +6.238480000E2,5.999836557E1 +6.240930000E2,5.879748041E1 +6.243920000E2,5.978277378E1 +6.246440000E2,6.050724590E1 +6.249480000E2,6.282777276E1 +6.252520000E2,6.080897043E1 +6.255640000E2,5.889462949E1 +6.258270000E2,5.550476615E1 +6.260730000E2,5.586785505E1 +6.263620000E2,6.576560120E1 +6.266590000E2,6.102361259E1 +6.270050000E2,6.110507706E1 +6.272870000E2,5.753592100E1 +6.275410000E2,6.297666729E1 +6.278490000E2,6.037594793E1 +6.281160000E2,5.849898506E1 +6.284180000E2,6.165631601E1 +6.287090000E2,6.096774109E1 +6.289510000E2,6.176590968E1 +6.292460000E2,5.947061017E1 +6.294820000E2,6.109202024E1 +6.297790000E2,5.322559935E1 +6.301160000E2,4.971181861E1 +6.303880000E2,5.533921521E1 +6.307250000E2,5.478410742E1 +6.310240000E2,5.647795083E1 +6.313200000E2,5.797504265E1 +6.315690000E2,5.403019222E1 +6.318640000E2,5.301910781E1 +6.321010000E2,5.096544207E1 +6.324030000E2,5.324435941E1 +6.326360000E2,5.447050361E1 +6.328960000E2,5.932781903E1 +6.331500000E2,5.967228428E1 +6.334640000E2,6.319489971E1 +6.337810000E2,5.820271574E1 +6.340710000E2,5.910289699E1 +6.343170000E2,5.681937370E1 +6.346260000E2,5.582227275E1 +6.349350000E2,5.745831651E1 +6.352100000E2,5.504019385E1 +6.354620000E2,5.072303887E1 +6.357190000E2,5.366082959E1 +6.359690000E2,5.380227314E1 +6.362560000E2,4.818205454E1 +6.365090000E2,5.989908626E1 +6.368780000E2,5.659012846E1 +6.371610000E2,5.593157997E1 +6.374460000E2,5.135237935E1 +6.377000000E2,5.687788515E1 +6.379550000E2,5.943975502E1 +6.382630000E2,6.290957992E1 +6.385230000E2,5.827099811E1 +6.387780000E2,5.686391746E1 +6.390620000E2,5.771790911E1 +6.393200000E2,5.390066131E1 +6.395830000E2,5.358231960E1 +6.398480000E2,5.564565007E1 +6.401490000E2,5.205482155E1 +6.404200000E2,5.852280051E1 +6.407340000E2,4.836326193E1 +6.409980000E2,5.905115701E1 +6.412560000E2,5.622349390E1 +6.415040000E2,5.891737338E1 +6.417460000E2,5.749377856E1 +6.420310000E2,5.414095183E1 +6.422680000E2,5.482109112E1 +6.425170000E2,5.202942051E1 +6.428000000E2,4.903409276E1 +6.431250000E2,5.495098254E1 +6.434650000E2,5.777911761E1 +6.437680000E2,5.329076638E1 +6.440080000E2,5.886592322E1 +6.443070000E2,5.661637111E1 +6.445560000E2,5.459133399E1 +6.448230000E2,4.858613706E1 +6.450990000E2,5.642020356E1 +6.453590000E2,5.634614530E1 +6.456240000E2,5.769024626E1 +6.458900000E2,6.037646239E1 +6.461470000E2,5.712013563E1 +6.464260000E2,5.393237723E1 +6.467570000E2,5.443825449E1 +6.469850000E2,5.464133184E1 +6.472460000E2,5.185343249E1 +6.475170000E2,5.670688718E1 +6.477900000E2,5.808659132E1 +6.480150000E2,5.879711687E1 +6.483250000E2,5.860991669E1 +6.485730000E2,5.600484597E1 +6.488230000E2,5.291438286E1 +6.491020000E2,5.869236753E1 +6.493260000E2,5.826316690E1 +6.496250000E2,5.619306699E1 +6.499850000E2,6.085970714E1 +6.502400000E2,6.051231588E1 +6.505400000E2,6.096601072E1 +6.507990000E2,6.197068990E1 +6.511180000E2,6.520817743E1 +6.513810000E2,6.377577246E1 +6.516860000E2,6.105485617E1 +6.519940000E2,5.890751001E1 +6.522910000E2,5.911253604E1 +6.525370000E2,6.291937986E1 +6.528540000E2,6.252638881E1 +6.532210000E2,6.337356348E1 +6.535270000E2,5.894334263E1 +6.537830000E2,5.754939005E1 +6.540930000E2,5.500698560E1 +6.543880000E2,5.014350898E1 +6.546880000E2,5.646260920E1 +6.549870000E2,5.951282585E1 +6.552920000E2,6.099782791E1 +6.555480000E2,6.065538365E1 +6.558100000E2,6.827371953E1 +6.560790000E2,6.035931154E1 +6.563820000E2,6.267306134E1 +6.566350000E2,5.826452213E1 +6.568970000E2,6.092938143E1 +6.572010000E2,6.534130041E1 +6.575130000E2,6.111837506E1 +6.577770000E2,5.826481723E1 +6.580330000E2,5.918147323E1 +6.582980000E2,6.100230752E1 +6.585510000E2,6.302217459E1 +6.588060000E2,5.754956715E1 +6.591080000E2,6.111201710E1 +6.593520000E2,6.017410469E1 +6.597040000E2,6.031944923E1 +6.599450000E2,5.943575512E1 +6.602120000E2,5.868776340E1 +6.605570000E2,5.940543513E1 +6.608500000E2,5.886327816E1 +6.610920000E2,5.770522648E1 +6.613840000E2,5.442777508E1 +6.616200000E2,5.394232060E1 +6.619220000E2,5.856638842E1 +6.622160000E2,5.742664400E1 +6.624600000E2,5.472498345E1 +6.627560000E2,5.672985390E1 +6.629770000E2,5.834702318E1 +6.632250000E2,5.907602823E1 +6.634810000E2,5.873031221E1 +6.637670000E2,5.757130737E1 +6.640040000E2,5.572185824E1 +6.643070000E2,5.959142979E1 +6.645480000E2,5.851623707E1 +6.648520000E2,5.856887935E1 +6.650940000E2,6.397218192E1 +6.653890000E2,5.963692586E1 +6.656210000E2,5.934207027E1 +6.659580000E2,5.667856430E1 +6.662640000E2,5.811017468E1 +6.665550000E2,5.505265787E1 +6.667990000E2,5.558350894E1 +6.671320000E2,6.063017800E1 +6.674000000E2,5.568411381E1 +6.676510000E2,5.981422062E1 +6.679580000E2,5.723024768E1 +6.682820000E2,5.036028104E1 +6.685240000E2,5.199205823E1 +6.687970000E2,5.367328475E1 +6.691280000E2,5.936914884E1 +6.693940000E2,5.657797691E1 +6.696490000E2,6.065879377E1 +6.699270000E2,5.657054255E1 +6.702000000E2,5.655716576E1 +6.704770000E2,5.823562265E1 +6.707350000E2,6.065030224E1 +6.710140000E2,6.110776530E1 +6.712700000E2,5.714357796E1 +6.715170000E2,5.604236164E1 +6.717930000E2,6.041748871E1 +6.721240000E2,6.019765334E1 +6.724270000E2,5.928602786E1 +6.727750000E2,5.973060669E1 +6.730710000E2,6.059869751E1 +6.733250000E2,6.116850166E1 +6.736400000E2,6.145214709E1 +6.738890000E2,6.020118097E1 +6.741670000E2,6.048579637E1 +6.744720000E2,6.225337088E1 +6.747550000E2,5.853636068E1 +6.750030000E2,5.999204871E1 +6.752840000E2,5.433989895E1 +6.755100000E2,5.847308735E1 +6.758420000E2,5.913726954E1 +6.760830000E2,6.049449503E1 +6.763830000E2,5.545572399E1 +6.766370000E2,6.246077536E1 +6.768920000E2,6.029598130E1 +6.771340000E2,6.005864514E1 +6.774230000E2,6.582269585E1 +6.776700000E2,6.255104294E1 +6.779140000E2,6.623711836E1 +6.781740000E2,6.684819787E1 +6.784850000E2,6.877250850E1 +6.787420000E2,6.157084767E1 +6.789860000E2,6.054068573E1 +6.793290000E2,6.069583213E1 +6.795810000E2,6.124898856E1 +6.798240000E2,6.136691849E1 +6.800900000E2,6.035594762E1 +6.803920000E2,5.654106541E1 +6.806920000E2,5.587565134E1 +6.809940000E2,5.642134155E1 +6.813020000E2,5.749983358E1 +6.815830000E2,5.576151961E1 +6.818120000E2,5.714589311E1 +6.820580000E2,5.969510914E1 +6.823020000E2,5.824123453E1 +6.825680000E2,5.779273115E1 +6.828630000E2,5.699644891E1 +6.831010000E2,5.900876644E1 +6.833500000E2,6.335540424E1 +6.835940000E2,6.280432027E1 +6.838340000E2,6.194675910E1 +6.841290000E2,5.801082069E1 +6.843650000E2,5.652506879E1 +6.846570000E2,5.895404856E1 +6.848910000E2,5.873705448E1 +6.851950000E2,5.589704153E1 +6.855380000E2,5.379672362E1 +6.857910000E2,6.287056471E1 +6.860900000E2,6.081817617E1 +6.863340000E2,6.807593043E1 +6.866320000E2,5.604389930E1 +6.868800000E2,6.712075434E1 +6.871750000E2,6.290238552E1 +6.874740000E2,6.473105179E1 +6.877330000E2,5.873835234E1 +6.880180000E2,5.800563858E1 +6.882620000E2,5.540095032E1 +6.885810000E2,6.197881428E1 +6.888280000E2,5.541258482E1 +6.890890000E2,5.558277465E1 +6.894010000E2,4.965923685E1 +6.897080000E2,4.860020107E1 +6.899730000E2,5.608167548E1 +6.902300000E2,5.381305593E1 +6.904990000E2,6.079286270E1 +6.908000000E2,6.446965644E1 +6.910380000E2,6.556266140E1 +6.913400000E2,5.418444209E1 +6.916350000E2,5.205102491E1 +6.919820000E2,5.812981404E1 +6.922410000E2,6.500705260E1 +6.925070000E2,6.149947285E1 +6.927750000E2,5.695315316E1 +6.930870000E2,5.775854948E1 +6.933870000E2,6.523399833E1 +6.936300000E2,6.692630865E1 +6.939270000E2,5.793447825E1 +6.942230000E2,5.746396110E1 +6.944770000E2,6.017975210E1 +6.947150000E2,5.956759439E1 +6.950320000E2,6.391288151E1 +6.953110000E2,6.484415086E1 +6.955650000E2,6.664209540E1 +6.958410000E2,6.746668632E1 +6.961050000E2,5.775664920E1 +6.964050000E2,6.383035698E1 +6.967020000E2,5.816763892E1 +6.969600000E2,6.921190909E1 +6.972400000E2,6.165047809E1 +6.975080000E2,5.666810057E1 +6.977540000E2,6.417546300E1 +6.980020000E2,5.788971486E1 +6.982730000E2,5.486922606E1 +6.985850000E2,5.576434723E1 +6.988820000E2,5.548978795E1 +6.991460000E2,5.886820316E1 +6.993970000E2,6.226406326E1 +6.996480000E2,5.601534080E1 +6.999400000E2,5.901385758E1 +7.002040000E2,5.720709772E1 +7.005120000E2,6.318399213E1 +7.007580000E2,6.338981741E1 +7.010170000E2,6.747312486E1 +7.012670000E2,5.788999692E1 +7.015450000E2,4.434465006E1 +7.018710000E2,6.439013955E1 +7.021480000E2,5.375342664E1 +7.023700000E2,6.398282027E1 +7.026160000E2,5.857909138E1 +7.029130000E2,5.670439641E1 +7.031590000E2,5.749786365E1 +7.034320000E2,5.181710985E1 +7.036770000E2,5.871535868E1 +7.039520000E2,5.470297527E1 +7.042240000E2,5.771822323E1 +7.044750000E2,5.236261523E1 +7.047130000E2,5.595332709E1 +7.050480000E2,5.576748295E1 +7.053040000E2,5.334869600E1 +7.055590000E2,5.337806625E1 +7.058180000E2,5.499892680E1 +7.060900000E2,5.490963435E1 +7.063980000E2,5.551078540E1 +7.066680000E2,5.358868238E1 +7.069300000E2,5.203182642E1 +7.071760000E2,5.771053387E1 +7.074630000E2,5.175835182E1 +7.077440000E2,5.402526598E1 +7.080400000E2,5.754717994E1 +7.083470000E2,6.103880587E1 +7.086400000E2,6.284824916E1 +7.088840000E2,6.674666322E1 +7.092010000E2,6.194114278E1 +7.094980000E2,5.796289911E1 +7.097580000E2,5.475547679E1 +7.100170000E2,5.804024708E1 +7.102650000E2,5.606423134E1 +7.105550000E2,5.319247933E1 +7.107930000E2,5.625991375E1 +7.110940000E2,5.589539698E1 +7.114730000E2,6.073460415E1 +7.117930000E2,6.208342045E1 +7.120530000E2,6.335117127E1 +7.123290000E2,5.821275565E1 +7.126280000E2,5.793160357E1 +7.128780000E2,5.509944006E1 +7.131790000E2,5.578357696E1 +7.134760000E2,5.632534225E1 +7.137350000E2,5.466315647E1 +7.140450000E2,5.914530785E1 +7.143020000E2,6.280432125E1 +7.146020000E2,6.333348539E1 +7.149790000E2,5.698482465E1 +7.152920000E2,5.474810308E1 +7.155370000E2,5.417920207E1 +7.157880000E2,6.392184792E1 +7.160720000E2,6.565549591E1 +7.163130000E2,6.082705714E1 +7.166120000E2,5.816285927E1 +7.168430000E2,5.809201859E1 +7.170930000E2,6.016105207E1 +7.173350000E2,5.162287691E1 +7.176230000E2,5.754317879E1 +7.179310000E2,6.166304542E1 +7.181770000E2,6.177004553E1 +7.184320000E2,6.274574776E1 +7.186900000E2,6.104994734E1 +7.189920000E2,5.735301480E1 +7.192340000E2,5.830205645E1 +7.194890000E2,6.212782217E1 +7.197420000E2,5.467685243E1 +7.200420000E2,5.313970583E1 +7.202920000E2,5.278680647E1 +7.205360000E2,5.474141102E1 +7.209140000E2,6.241771654E1 +7.212600000E2,6.394594172E1 +7.215560000E2,6.348358734E1 +7.217980000E2,6.112734048E1 +7.220450000E2,6.226451183E1 +7.222930000E2,6.534082516E1 +7.225960000E2,6.114019283E1 +7.228390000E2,6.421228964E1 +7.231230000E2,6.814847387E1 +7.233690000E2,6.275446304E1 +7.236190000E2,6.679153921E1 +7.239280000E2,6.537583699E1 +7.241850000E2,6.212976374E1 +7.245300000E2,6.553556935E1 +7.248220000E2,5.834030427E1 +7.250930000E2,5.992153646E1 +7.253380000E2,5.595099295E1 +7.256370000E2,5.720822528E1 +7.258800000E2,5.423516872E1 +7.261770000E2,5.906139652E1 +7.264140000E2,6.204477132E1 +7.267140000E2,6.368823365E1 +7.269550000E2,6.513672214E1 +7.272500000E2,6.364997971E1 +7.275370000E2,6.269941998E1 +7.278570000E2,5.948773609E1 +7.281020000E2,5.789544973E1 +7.283740000E2,6.305528689E1 +7.286400000E2,6.245554089E1 +7.289690000E2,6.033221518E1 +7.292310000E2,5.940071821E1 +7.294970000E2,6.176178101E1 +7.298020000E2,5.355172623E1 +7.300580000E2,5.535292187E1 +7.303150000E2,5.274398781E1 +7.305750000E2,5.399957194E1 +7.308780000E2,5.819691646E1 +7.312070000E2,5.434897588E1 +7.315090000E2,6.041787911E1 +7.317850000E2,5.617860881E1 +7.320560000E2,5.558770875E1 +7.323290000E2,5.151264449E1 +7.325860000E2,5.612143969E1 +7.328800000E2,5.405001557E1 +7.331120000E2,5.455354216E1 +7.334090000E2,5.716252136E1 +7.337070000E2,6.416157102E1 +7.339910000E2,6.098010142E1 +7.343020000E2,6.194029449E1 +7.346500000E2,6.091313037E1 +7.349540000E2,5.846954669E1 +7.352410000E2,5.743489407E1 +7.355320000E2,5.872669957E1 +7.357800000E2,5.859080967E1 +7.360560000E2,6.053269456E1 +7.363220000E2,6.117884455E1 +7.366590000E2,5.809887850E1 +7.369420000E2,5.453224539E1 +7.372510000E2,5.639337460E1 +7.375040000E2,5.373613181E1 +7.378630000E2,5.066236714E1 +7.381160000E2,4.653740377E1 +7.383650000E2,6.375011526E1 +7.386730000E2,6.282181577E1 +7.389830000E2,6.727660972E1 +7.392340000E2,6.413328322E1 +7.394790000E2,6.184881400E1 +7.397290000E2,6.430634497E1 +7.400250000E2,6.276256291E1 +7.402610000E2,6.297441350E1 +7.405590000E2,5.306586823E1 +7.408610000E2,5.403016569E1 +7.412260000E2,5.749263443E1 +7.415060000E2,5.657932114E1 +7.417820000E2,5.532222303E1 +7.420430000E2,5.911133378E1 +7.423450000E2,5.822379827E1 +7.426470000E2,6.311870884E1 +7.428860000E2,5.964121243E1 +7.431940000E2,5.708688763E1 +7.434960000E2,5.782189241E1 +7.437480000E2,5.745118469E1 +7.440380000E2,5.258772989E1 +7.442830000E2,5.325984780E1 +7.445410000E2,5.216709684E1 +7.447900000E2,5.485283680E1 +7.450520000E2,6.638751453E1 +7.453640000E2,6.256149725E1 +7.456370000E2,6.851667797E1 +7.459020000E2,6.356784575E1 +7.462040000E2,6.586178842E1 +7.464510000E2,6.099626883E1 +7.467420000E2,6.874341983E1 +7.470300000E2,5.690479739E1 +7.472670000E2,5.749513215E1 +7.475860000E2,5.743840209E1 +7.478480000E2,6.695338823E1 +7.481550000E2,6.575566103E1 +7.484170000E2,6.244751264E1 +7.486690000E2,6.206430480E1 +7.489520000E2,5.755143157E1 +7.492450000E2,6.343498072E1 +7.494820000E2,6.599354682E1 +7.497800000E2,5.994269627E1 +7.500210000E2,6.480563885E1 +7.503160000E2,5.962320355E1 +7.505550000E2,5.907805627E1 +7.508860000E2,5.452673237E1 +7.511450000E2,5.413358853E1 +7.514110000E2,5.786691992E1 +7.516870000E2,6.185088179E1 +7.519570000E2,5.432685780E1 +7.522050000E2,5.297819944E1 +7.524920000E2,5.290855554E1 +7.527910000E2,5.828859659E1 +7.530300000E2,5.880189294E1 +7.533360000E2,5.500578631E1 +7.535910000E2,5.476677878E1 +7.538330000E2,5.414240587E1 +7.541650000E2,5.332866170E1 +7.544620000E2,5.193802785E1 +7.547080000E2,5.242932681E1 +7.549590000E2,6.024921863E1 +7.552020000E2,5.537701523E1 +7.554960000E2,5.489617845E1 +7.557330000E2,5.384280286E1 +7.560410000E2,5.406125999E1 +7.562870000E2,5.246560959E1 +7.565320000E2,5.374729291E1 +7.567680000E2,5.542801483E1 +7.570630000E2,5.525770987E1 +7.573930000E2,5.847670432E1 +7.576660000E2,5.822188632E1 +7.579180000E2,5.822901451E1 +7.582040000E2,5.458975346E1 +7.584820000E2,5.438683247E1 +7.587800000E2,5.260449368E1 +7.590260000E2,5.371245859E1 +7.592870000E2,4.983203663E1 +7.595420000E2,5.018089077E1 +7.598380000E2,5.950969681E1 +7.601480000E2,5.769305363E1 +7.604800000E2,5.747567937E1 +7.607190000E2,5.446335810E1 +7.610040000E2,5.463229896E1 +7.612970000E2,5.644916160E1 +7.615560000E2,5.809520116E1 +7.618460000E2,5.406577519E1 +7.621050000E2,5.362277750E1 +7.623930000E2,5.868559294E1 +7.626230000E2,5.548744129E1 +7.628890000E2,5.613986675E1 +7.631890000E2,5.592058678E1 +7.634870000E2,5.947938191E1 +7.638120000E2,5.945990241E1 +7.640830000E2,5.354091788E1 +7.643270000E2,5.910847411E1 +7.645670000E2,6.112853730E1 +7.648120000E2,5.617469613E1 +7.650520000E2,5.678172470E1 +7.653190000E2,5.293731054E1 +7.655730000E2,5.571573154E1 +7.658430000E2,5.239475172E1 +7.660900000E2,5.710555790E1 +7.663840000E2,5.593714408E1 +7.666500000E2,5.506488062E1 +7.669100000E2,5.276148627E1 +7.671530000E2,5.087813070E1 +7.674500000E2,4.966858228E1 +7.677070000E2,4.690170064E1 +7.679870000E2,5.097718665E1 +7.682460000E2,5.173969669E1 +7.685220000E2,5.562988056E1 +7.687630000E2,5.194720020E1 +7.690630000E2,5.590118249E1 +7.693610000E2,5.613585205E1 +7.696030000E2,5.417299550E1 +7.698530000E2,5.925774948E1 +7.702010000E2,5.729895975E1 +7.704610000E2,5.765570707E1 +7.707610000E2,6.211008380E1 +7.710570000E2,5.846530012E1 +7.712970000E2,5.766544416E1 +7.715460000E2,5.716238768E1 +7.718080000E2,5.700535494E1 +7.720510000E2,5.592606747E1 +7.723260000E2,5.771214429E1 +7.725940000E2,5.753442175E1 +7.728830000E2,5.541298336E1 +7.731860000E2,5.137853822E1 +7.735420000E2,5.462649470E1 +7.738320000E2,5.454281912E1 +7.740820000E2,6.803752283E1 +7.743260000E2,6.852980541E1 +7.745820000E2,7.007631543E1 +7.748270000E2,7.009876218E1 +7.751160000E2,6.950363051E1 +7.753520000E2,6.338954984E1 +7.755910000E2,5.500200077E1 +7.758880000E2,5.358702362E1 +7.761340000E2,5.718303470E1 +7.763730000E2,5.887519420E1 +7.767050000E2,5.795457078E1 +7.769970000E2,5.796499201E1 +7.773000000E2,5.644912180E1 +7.775570000E2,5.804780214E1 +7.778740000E2,5.958528627E1 +7.781300000E2,5.635913866E1 +7.784430000E2,5.593106857E1 +7.787280000E2,6.063168213E1 +7.789960000E2,5.917208792E1 +7.792560000E2,5.719923422E1 +7.795050000E2,6.400429125E1 +7.797680000E2,5.733192807E1 +7.800440000E2,6.018331087E1 +7.803000000E2,6.350407169E1 +7.805530000E2,6.357762743E1 +7.808590000E2,6.772563953E1 +7.811430000E2,6.431848914E1 +7.814050000E2,5.710721917E1 +7.816950000E2,5.646111127E1 +7.819500000E2,5.564600214E1 +7.822050000E2,6.362802489E1 +7.824550000E2,6.278310471E1 +7.827010000E2,5.851995741E1 +7.829620000E2,5.759567059E1 +7.832630000E2,5.449669640E1 +7.835070000E2,6.040303881E1 +7.837500000E2,5.743841461E1 +7.839990000E2,6.096558185E1 +7.842840000E2,7.161293257E1 +7.845270000E2,7.417435903E1 +7.848410000E2,6.386070968E1 +7.851390000E2,6.234904760E1 +7.854350000E2,6.321731436E1 +7.856820000E2,6.294103551E1 +7.859780000E2,6.210337552E1 +7.862150000E2,6.765383904E1 +7.865650000E2,6.346682761E1 +7.868610000E2,6.221020232E1 +7.871280000E2,6.119530731E1 +7.873850000E2,5.314248269E1 +7.876880000E2,5.288680780E1 +7.879230000E2,5.064349321E1 +7.882230000E2,5.786336298E1 +7.884630000E2,5.341864841E1 +7.887250000E2,5.286568073E1 +7.890140000E2,5.272997567E1 +7.893180000E2,5.904110581E1 +7.896690000E2,5.748622391E1 +7.899200000E2,5.773986136E1 +7.902160000E2,5.480967078E1 +7.904710000E2,5.627241382E1 +7.907280000E2,5.456362797E1 +7.909900000E2,5.766408512E1 +7.912380000E2,5.413586400E1 +7.914940000E2,5.234403284E1 +7.917720000E2,5.190170354E1 +7.920440000E2,5.227759392E1 +7.923170000E2,4.410400383E1 +7.926220000E2,3.508270700E1 +7.929370000E2,3.887828085E1 +7.932030000E2,4.522069604E1 +7.934660000E2,4.928233980E1 +7.937420000E2,4.706401379E1 +7.940710000E2,4.988989997E1 +7.943700000E2,5.767827889E1 +7.946060000E2,5.506606719E1 +7.949050000E2,6.107887773E1 +7.952060000E2,5.849609892E1 +7.955030000E2,5.343173328E1 +7.957490000E2,5.007726003E1 +7.960580000E2,4.763873915E1 +7.963010000E2,5.045894898E1 +7.966040000E2,6.859700710E1 +7.968900000E2,6.734256534E1 +7.971550000E2,6.661489392E1 +7.974110000E2,6.556398865E1 +7.976580000E2,5.519705677E1 +7.979230000E2,5.503316479E1 +7.982060000E2,5.955770829E1 +7.984280000E2,5.777834711E1 +7.987260000E2,6.050467535E1 +7.989700000E2,5.583639573E1 +7.993330000E2,5.988908902E1 +7.995750000E2,5.875791040E1 +7.998670000E2,6.166637478E1 +8.001160000E2,5.690435901E1 +8.004160000E2,5.599911293E1 +8.006610000E2,5.889628547E1 +8.009180000E2,6.227540789E1 +8.011740000E2,6.572663811E1 +8.014300000E2,6.013467784E1 +8.016770000E2,6.250368579E1 +8.019910000E2,6.532292099E1 +8.023560000E2,5.377170031E1 +8.026370000E2,5.535595108E1 +8.029110000E2,5.147526495E1 +8.031720000E2,4.993046061E1 +8.034760000E2,6.394035794E1 +8.037260000E2,5.983119170E1 +8.040270000E2,5.967243802E1 +8.042930000E2,6.559340840E1 +8.046100000E2,5.262215496E1 +8.049160000E2,5.397812040E1 +8.051780000E2,5.680330381E1 +8.054740000E2,5.857171626E1 +8.058060000E2,5.577198454E1 +8.060880000E2,5.916891157E1 +8.063460000E2,6.120078548E1 +8.066060000E2,6.223167379E1 +8.069230000E2,6.161077093E1 +8.071720000E2,5.812180846E1 +8.074300000E2,5.665535607E1 +8.077230000E2,5.401482687E1 +8.079600000E2,5.631804256E1 +8.082610000E2,5.267806276E1 +8.085540000E2,5.766120113E1 +8.088100000E2,5.717509884E1 +8.091690000E2,5.698714543E1 +8.094130000E2,5.807918354E1 +8.096940000E2,5.364566959E1 +8.099320000E2,5.678502402E1 +8.102110000E2,5.494444844E1 +8.104710000E2,6.216218230E1 +8.107550000E2,5.504588420E1 +8.110030000E2,5.220186059E1 +8.112810000E2,5.338487037E1 +8.115430000E2,5.422122114E1 +8.118180000E2,6.217546099E1 +8.121430000E2,5.739027439E1 +8.124800000E2,5.218554734E1 +8.128080000E2,6.183667492E1 +8.130850000E2,6.028246668E1 +8.133620000E2,6.620979851E1 +8.135950000E2,5.810667246E1 +8.138630000E2,6.096670869E1 +8.141300000E2,5.149777407E1 +8.143960000E2,4.993954713E1 +8.146400000E2,5.196561010E1 +8.149350000E2,5.727966309E1 +8.151710000E2,5.489316784E1 +8.154100000E2,5.619291420E1 +8.157500000E2,5.425831711E1 +8.160430000E2,5.677079709E1 +8.163250000E2,5.289383275E1 +8.165600000E2,5.573749616E1 +8.168090000E2,5.211960412E1 +8.170840000E2,5.029895102E1 +8.173170000E2,5.085418245E1 +8.175630000E2,5.101392152E1 +8.178870000E2,5.228690479E1 +8.182130000E2,5.919931006E1 +8.184680000E2,5.288617356E1 +8.188320000E2,5.626269479E1 +8.191030000E2,6.124827198E1 +8.193870000E2,5.889071517E1 +8.196160000E2,5.957980623E1 +8.199180000E2,5.440069788E1 +8.201590000E2,5.524226830E1 +8.204560000E2,5.147688867E1 +8.206870000E2,5.390780082E1 +8.209820000E2,6.509870984E1 +8.212270000E2,6.421388309E1 +8.215230000E2,5.843840462E1 +8.218170000E2,5.422512027E1 +8.221280000E2,5.468614274E1 +8.223780000E2,5.922850585E1 +8.226710000E2,6.486031186E1 +8.229330000E2,6.154967201E1 +8.232420000E2,5.893257410E1 +8.235100000E2,6.020329639E1 +8.238290000E2,5.483779552E1 +8.240760000E2,5.692914998E1 +8.243280000E2,6.347347085E1 +8.245930000E2,5.345306004E1 +8.248670000E2,6.141647052E1 +8.252000000E2,5.672783001E1 +8.254550000E2,5.605661334E1 +8.257610000E2,5.699330885E1 +8.260410000E2,5.489256860E1 +8.263010000E2,6.262090025E1 +8.265830000E2,5.457719262E1 +8.268180000E2,5.416382407E1 +8.271260000E2,4.993919751E1 +8.273700000E2,5.569569056E1 +8.276330000E2,5.514364162E1 +8.278890000E2,5.653204472E1 +8.281470000E2,5.784406489E1 +8.284370000E2,5.752811490E1 +8.286720000E2,5.727510089E1 +8.289650000E2,5.900575965E1 +8.292510000E2,5.679022390E1 +8.294860000E2,5.722234118E1 +8.297350000E2,5.952638514E1 +8.300320000E2,5.925181191E1 +8.302740000E2,5.930148258E1 +8.305160000E2,5.668145507E1 +8.307730000E2,5.590492759E1 +8.310130000E2,6.302930486E1 +8.312510000E2,5.733539345E1 +8.315800000E2,5.620349253E1 +8.318910000E2,5.495250031E1 +8.322000000E2,5.501979251E1 +8.324620000E2,5.208226415E1 +8.327390000E2,5.765748383E1 +8.329950000E2,5.489193423E1 +8.332490000E2,5.593428331E1 +8.335720000E2,5.714652117E1 +8.338250000E2,5.832769426E1 +8.341370000E2,5.884156077E1 +8.344030000E2,5.840498509E1 +8.347020000E2,5.864505811E1 +8.350330000E2,6.356982434E1 +8.353340000E2,6.286445683E1 +8.355720000E2,5.657384439E1 +8.358940000E2,5.660970318E1 +8.361720000E2,5.918731584E1 +8.364160000E2,5.825788220E1 +8.366580000E2,5.592754487E1 +8.369110000E2,5.553717092E1 +8.371910000E2,5.495027293E1 +8.374510000E2,5.546329287E1 +8.377420000E2,5.746402701E1 +8.379890000E2,5.891922359E1 +8.383130000E2,6.522858798E1 +8.385710000E2,6.384617776E1 +8.388430000E2,5.435088619E1 +8.390670000E2,5.460135210E1 +8.393610000E2,5.982769627E1 +8.396020000E2,5.936265195E1 +8.398550000E2,6.034701146E1 +8.401470000E2,6.875861473E1 +8.403840000E2,6.968788985E1 +8.406760000E2,6.653493651E1 +8.409120000E2,6.664139767E1 +8.412200000E2,6.195236791E1 +8.415280000E2,5.759269564E1 +8.418110000E2,5.704906263E1 +8.420770000E2,5.199124728E1 +8.423350000E2,5.625309672E1 +8.426060000E2,5.627754144E1 +8.428710000E2,6.285304788E1 +8.431220000E2,6.089762622E1 +8.434160000E2,5.828079525E1 +8.436650000E2,5.581703965E1 +8.439650000E2,5.326092983E1 +8.442070000E2,5.247397640E1 +8.444500000E2,5.104216729E1 +8.447560000E2,4.981466747E1 +8.450730000E2,5.794387296E1 +8.453210000E2,6.103400827E1 +8.455680000E2,6.053778141E1 +8.458610000E2,5.413066164E1 +8.461240000E2,5.591468697E1 +8.463740000E2,5.289659812E1 +8.466770000E2,6.014390988E1 +8.469740000E2,5.713983843E1 +8.472340000E2,5.457406708E1 +8.474800000E2,5.848999564E1 +8.478210000E2,5.310404619E1 +8.481040000E2,5.463633704E1 +8.483620000E2,5.329096892E1 +8.486670000E2,5.667645304E1 +8.489890000E2,5.540515985E1 +8.492420000E2,5.014593999E1 +8.495060000E2,5.019949668E1 +8.497660000E2,4.724526190E1 +8.500410000E2,4.632701850E1 +8.502660000E2,4.436725745E1 +8.505710000E2,5.273585220E1 +8.508470000E2,5.232501704E1 +8.511370000E2,5.177389205E1 +8.513940000E2,5.236772038E1 +8.516560000E2,4.869019062E1 +8.518980000E2,5.254056589E1 +8.521620000E2,5.441215371E1 +8.524060000E2,5.431954181E1 +8.526720000E2,4.873515026E1 +8.529820000E2,5.253291311E1 +8.532350000E2,5.201920339E1 +8.535330000E2,5.083296820E1 +8.537750000E2,5.373650683E1 +8.540560000E2,6.162621210E1 +8.543710000E2,6.137876928E1 +8.546190000E2,6.347980201E1 +8.548850000E2,6.480134627E1 +8.551390000E2,6.344943059E1 +8.553830000E2,6.653758852E1 +8.556910000E2,6.821811094E1 +8.559900000E2,6.564040109E1 +8.562480000E2,6.310710880E1 +8.565060000E2,5.625485760E1 +8.567860000E2,5.886920329E1 +8.570590000E2,5.638007706E1 +8.573180000E2,5.477312089E1 +8.576670000E2,5.402637072E1 +8.579310000E2,5.282806817E1 +8.582400000E2,5.743205922E1 +8.584770000E2,5.608834078E1 +8.587730000E2,5.917700537E1 +8.590950000E2,5.757076232E1 +8.593390000E2,5.680975976E1 +8.596110000E2,5.316092446E1 +8.598560000E2,5.634389465E1 +8.601130000E2,5.912558361E1 +8.603880000E2,5.827706684E1 +8.606370000E2,5.580056474E1 +8.609720000E2,5.622551838E1 +8.612190000E2,5.816090597E1 +8.614650000E2,5.710633258E1 +8.617260000E2,6.762679027E1 +8.619970000E2,6.050550643E1 +8.622480000E2,6.017289530E1 +8.624960000E2,5.884551198E1 +8.627510000E2,5.823958631E1 +8.630120000E2,5.747421536E1 +8.632920000E2,5.891926612E1 +8.635810000E2,5.962176090E1 +8.638680000E2,5.932606834E1 +8.642430000E2,6.035939553E1 +8.645920000E2,5.892740034E1 +8.649090000E2,6.158225090E1 +8.651650000E2,5.941856931E1 +8.654560000E2,5.517726055E1 +8.656900000E2,5.573554393E1 +8.659400000E2,6.300977067E1 +8.662170000E2,6.346838855E1 +8.664760000E2,5.840482341E1 +8.667600000E2,5.656477763E1 +8.669980000E2,5.809371706E1 +8.672500000E2,5.957523428E1 +8.675890000E2,5.868790884E1 +8.678670000E2,6.643274765E1 +8.681530000E2,6.202304252E1 +8.684260000E2,6.167390940E1 +8.686760000E2,6.561664622E1 +8.689220000E2,6.221849135E1 +8.691620000E2,5.873701255E1 +8.694080000E2,5.721335717E1 +8.696600000E2,5.775578048E1 +8.699210000E2,6.139190630E1 +8.702060000E2,5.695582014E1 +8.705330000E2,5.285782467E1 +8.708800000E2,5.254436807E1 +8.711320000E2,5.941119733E1 +8.714840000E2,5.561687107E1 +8.717890000E2,5.226341013E1 +8.720340000E2,5.351737673E1 +8.723120000E2,5.581753669E1 +8.725450000E2,5.544476975E1 +8.727930000E2,5.112331517E1 +8.731050000E2,5.669948434E1 +8.733660000E2,5.553741274E1 +8.736450000E2,5.287392842E1 +8.738710000E2,5.342755356E1 +8.742030000E2,5.525376809E1 +8.745760000E2,5.790146612E1 +8.748470000E2,5.775550126E1 +8.750900000E2,5.828043309E1 +8.753860000E2,5.689517506E1 +8.756490000E2,5.836000549E1 +8.759170000E2,5.887049385E1 +8.761640000E2,5.731343570E1 +8.764240000E2,5.947081752E1 +8.766660000E2,5.735732777E1 +8.769150000E2,5.791222148E1 +8.771870000E2,5.217820200E1 +8.775110000E2,5.373516267E1 +8.777550000E2,5.639663701E1 +8.779960000E2,5.308435393E1 +8.782370000E2,5.327040257E1 +8.785510000E2,5.539866825E1 +8.788050000E2,5.451580533E1 +8.791100000E2,5.664888244E1 +8.793670000E2,5.439058144E1 +8.796110000E2,6.546629591E1 +8.799090000E2,6.080313073E1 +8.801560000E2,6.023654065E1 +8.804070000E2,5.547022044E1 +8.807450000E2,5.933402552E1 +8.809880000E2,6.073235462E1 +8.812850000E2,5.811897337E1 +8.815210000E2,5.670873426E1 +8.818240000E2,6.239450766E1 +8.821160000E2,6.033779387E1 +8.823610000E2,5.921328684E1 +8.826600000E2,5.808215882E1 +8.828910000E2,5.927124720E1 +8.831280000E2,5.254346564E1 +8.834120000E2,5.755316817E1 +8.837180000E2,5.815703318E1 +8.840150000E2,5.925974643E1 +8.842610000E2,5.406291788E1 +8.845520000E2,5.892672719E1 +8.847970000E2,6.343231596E1 +8.850390000E2,6.045689612E1 +8.853340000E2,5.903303339E1 +8.855810000E2,5.897514906E1 +8.858230000E2,5.682843230E1 +8.860690000E2,4.647265993E1 +8.863400000E2,5.617216143E1 +8.865730000E2,5.412892937E1 +8.869100000E2,6.210166513E1 +8.872070000E2,6.369099543E1 +8.874540000E2,6.052073025E1 +8.877480000E2,6.125108403E1 +8.879990000E2,6.087163347E1 +8.882550000E2,6.365510666E1 +8.885320000E2,5.341778352E1 +8.887600000E2,5.238943476E1 +8.890050000E2,6.378561240E1 +8.892460000E2,6.182956815E1 +8.895070000E2,6.027537659E1 +8.897770000E2,5.747996426E1 +8.901220000E2,5.606477689E1 +8.903620000E2,5.816493441E1 +8.907030000E2,5.740436721E1 +8.909540000E2,5.812990427E1 +8.912060000E2,5.757163286E1 +8.914520000E2,5.669306215E1 +8.917150000E2,5.593698617E1 +8.919580000E2,5.867011196E1 +8.922060000E2,6.001129970E1 +8.924480000E2,6.247831114E1 +8.927080000E2,5.501506807E1 +8.929550000E2,5.918039480E1 +8.932790000E2,5.750337148E1 +8.935260000E2,5.382626014E1 +8.937850000E2,5.632583646E1 +8.940370000E2,5.552393419E1 +8.943380000E2,5.417609473E1 +8.946050000E2,5.314873345E1 +8.948570000E2,5.537690953E1 +8.951790000E2,6.168371256E1 +8.954540000E2,6.142331687E1 +8.957690000E2,5.914263764E1 +8.960690000E2,6.039127428E1 +8.963670000E2,5.303465172E1 +8.966720000E2,5.819495208E1 +8.969200000E2,5.956457754E1 +8.972240000E2,5.554166388E1 +8.974940000E2,5.700583380E1 +8.978160000E2,5.525596264E1 +8.981210000E2,5.878997726E1 +8.983720000E2,5.661289659E1 +8.986510000E2,6.039909322E1 +8.988730000E2,5.569487247E1 +8.991240000E2,5.857026750E1 +8.993800000E2,6.116905404E1 +8.996580000E2,6.331625006E1 +8.998890000E2,5.612470465E1 +9.001440000E2,5.098243988E1 +9.004020000E2,5.779474181E1 +9.006650000E2,5.597754805E1 +9.009440000E2,5.706395638E1 +9.012380000E2,5.989184595E1 +9.015000000E2,5.905145002E1 +9.017620000E2,5.913397617E1 +9.020230000E2,5.831976398E1 +9.022900000E2,5.400731512E1 +9.025900000E2,6.547285797E1 +9.029050000E2,6.534571775E1 +9.032100000E2,5.428834230E1 +9.034580000E2,4.919896084E1 +9.037180000E2,5.326934205E1 +9.039740000E2,5.135684539E1 +9.042700000E2,5.784030554E1 +9.045180000E2,5.789711892E1 +9.048150000E2,5.501985460E1 +9.050680000E2,5.394185103E1 +9.053920000E2,5.504541187E1 +9.056620000E2,5.574384904E1 +9.059260000E2,5.198297704E1 +9.062920000E2,5.507423148E1 +9.065460000E2,5.073979477E1 +9.068090000E2,5.409355601E1 +9.071500000E2,5.842003605E1 +9.074380000E2,6.323761852E1 +9.076890000E2,5.475142925E1 +9.079510000E2,5.285089191E1 +9.082580000E2,6.228883476E1 +9.085110000E2,6.229139223E1 +9.087590000E2,5.849936549E1 +9.090220000E2,6.382664868E1 +9.092560000E2,5.234586511E1 +9.095720000E2,5.506613760E1 +9.098700000E2,5.883918884E1 +9.101180000E2,5.722745073E1 +9.103980000E2,6.006905181E1 +9.106670000E2,6.333821195E1 +9.109390000E2,5.997503412E1 +9.111770000E2,5.691091005E1 +9.114250000E2,5.629684565E1 +9.117070000E2,5.944947286E1 +9.119370000E2,5.757115704E1 +9.122030000E2,5.617546709E1 +9.125090000E2,5.506166951E1 +9.128480000E2,5.345826069E1 +9.131070000E2,5.586702127E1 +9.133900000E2,6.075354367E1 +9.137040000E2,5.668960998E1 +9.139920000E2,5.584388878E1 +9.142800000E2,5.668519299E1 +9.145740000E2,5.400550993E1 +9.148220000E2,5.668991412E1 +9.150670000E2,5.455006531E1 +9.153720000E2,5.750041942E1 +9.156590000E2,5.756327349E1 +9.159630000E2,5.822694927E1 +9.162110000E2,5.764545771E1 +9.164660000E2,5.716015909E1 +9.167560000E2,5.136001811E1 +9.170200000E2,4.706951064E1 +9.172710000E2,4.999131008E1 +9.175180000E2,5.619976433E1 +9.178030000E2,5.463675948E1 +9.180580000E2,4.995546642E1 +9.183000000E2,5.328928391E1 +9.185570000E2,4.808104957E1 +9.188650000E2,5.411517612E1 +9.191080000E2,5.672946344E1 +9.194270000E2,5.737096863E1 +9.196850000E2,5.974051238E1 +9.199830000E2,5.656564726E1 +9.202340000E2,5.709524531E1 +9.204810000E2,5.408385116E1 +9.208240000E2,5.414410830E1 +9.210650000E2,5.638214177E1 +9.213330000E2,5.753313030E1 +9.216130000E2,5.354803656E1 +9.219120000E2,6.191736419E1 +9.221480000E2,5.734366551E1 +9.224580000E2,5.684475304E1 +9.228030000E2,6.045431811E1 +9.230950000E2,5.973057312E1 +9.233960000E2,5.537690593E1 +9.236620000E2,5.411771801E1 +9.239600000E2,5.513839001E1 +9.242140000E2,5.699753068E1 +9.244670000E2,6.643461088E1 +9.247300000E2,6.062391899E1 +9.250330000E2,5.798096332E1 +9.253240000E2,6.347140522E1 +9.255740000E2,6.166496817E1 +9.259250000E2,6.190058171E1 +9.261820000E2,6.329204590E1 +9.264380000E2,6.389135880E1 +9.267030000E2,5.917517639E1 +9.269480000E2,5.809772267E1 +9.272170000E2,5.733235238E1 +9.274780000E2,5.226841119E1 +9.277860000E2,5.876554483E1 +9.280720000E2,6.281089568E1 +9.283510000E2,5.368859448E1 +9.286400000E2,5.449014251E1 +9.289370000E2,5.589991313E1 +9.292390000E2,5.452044152E1 +9.294860000E2,5.574135623E1 +9.297800000E2,5.656551806E1 +9.300200000E2,5.368800996E1 +9.302990000E2,5.374372369E1 +9.305490000E2,5.520696346E1 +9.308500000E2,5.642038107E1 +9.311480000E2,5.958603376E1 +9.314510000E2,5.775531382E1 +9.316980000E2,5.561486787E1 +9.319610000E2,5.826734748E1 +9.322700000E2,5.604871965E1 +9.325550000E2,5.170668645E1 +9.328670000E2,5.089285684E1 +9.331190000E2,4.724853188E1 +9.333790000E2,4.756075237E1 +9.336260000E2,5.199039629E1 +9.338890000E2,4.980140945E1 +9.341620000E2,5.530081877E1 +9.344120000E2,5.549144740E1 +9.347250000E2,5.515929093E1 +9.349780000E2,5.399104933E1 +9.352760000E2,5.325801117E1 +9.356240000E2,5.040008457E1 +9.359420000E2,5.360316460E1 +9.361890000E2,5.191591881E1 +9.364390000E2,5.324554606E1 +9.366970000E2,5.654671572E1 +9.370100000E2,5.711795620E1 +9.372590000E2,5.478625541E1 +9.375950000E2,5.667621371E1 +9.378550000E2,5.463565976E1 +9.381050000E2,5.398825590E1 +9.383580000E2,5.436030102E1 +9.386390000E2,5.091983440E1 +9.389120000E2,5.286705124E1 +9.391550000E2,5.236775571E1 +9.394300000E2,5.738794921E1 +9.397170000E2,5.727939554E1 +9.399750000E2,6.319402051E1 +9.402560000E2,5.468250624E1 +9.405530000E2,5.641852830E1 +9.408670000E2,6.200700436E1 +9.411390000E2,6.163446308E1 +9.413860000E2,7.148312536E1 +9.416340000E2,6.050927243E1 +9.419040000E2,5.667078757E1 +9.421350000E2,5.749142651E1 +9.424700000E2,5.240604485E1 +9.427760000E2,5.466454134E1 +9.430280000E2,6.082141946E1 +9.433300000E2,6.003969647E1 +9.436110000E2,6.121195378E1 +9.438460000E2,5.625129518E1 +9.441420000E2,5.911131348E1 +9.443880000E2,5.468317436E1 +9.446840000E2,6.009033853E1 +9.449440000E2,5.906624737E1 +9.452490000E2,5.464875325E1 +9.455970000E2,5.384566268E1 +9.458510000E2,5.044039840E1 +9.461140000E2,5.035886237E1 +9.463820000E2,5.734112986E1 +9.466620000E2,5.229112628E1 +9.469690000E2,6.028523542E1 +9.472250000E2,5.837101422E1 +9.475000000E2,5.619491985E1 +9.477970000E2,5.364209552E1 +9.480560000E2,5.511055516E1 +9.483560000E2,5.308396885E1 +9.486650000E2,5.587440008E1 +9.490640000E2,5.273632850E1 +9.493730000E2,6.231816715E1 +9.496570000E2,6.253734875E1 +9.499030000E2,5.554720788E1 +9.501460000E2,5.631566079E1 +9.503970000E2,5.626896653E1 +9.506490000E2,5.691941114E1 +9.508990000E2,5.116659255E1 +9.511440000E2,4.922875084E1 +9.514130000E2,5.936693495E1 +9.517070000E2,5.638156112E1 +9.520200000E2,5.180629212E1 +9.523780000E2,4.998674108E1 +9.526570000E2,4.841587788E1 +9.529100000E2,5.028896526E1 +9.531650000E2,4.965921907E1 +9.534690000E2,4.493319669E1 +9.537260000E2,4.598612712E1 +9.539740000E2,5.276251951E1 +9.542810000E2,4.126037796E1 +9.545830000E2,4.737114191E1 +9.548330000E2,4.411553821E1 +9.550850000E2,4.440050708E1 +9.553840000E2,5.260541790E1 +9.556980000E2,5.273901651E1 +9.559710000E2,5.383409632E1 +9.562220000E2,5.239354977E1 +9.564980000E2,4.759742823E1 +9.568040000E2,5.239869448E1 +9.570530000E2,5.238241691E1 +9.573300000E2,5.227349879E1 +9.575630000E2,5.272394727E1 +9.578410000E2,5.414710772E1 +9.580970000E2,5.325895305E1 +9.583410000E2,5.577122645E1 +9.586370000E2,5.015645058E1 +9.590040000E2,5.173028231E1 +9.593040000E2,5.447959265E1 +9.595640000E2,5.484713415E1 +9.598110000E2,5.470137539E1 +9.601060000E2,5.878769788E1 +9.603740000E2,5.851189839E1 +9.606810000E2,5.400762096E1 +9.609290000E2,5.749049444E1 +9.611870000E2,5.241750519E1 +9.614480000E2,4.979747952E1 +9.616960000E2,5.096881110E1 +9.620030000E2,5.149804171E1 +9.623180000E2,5.481599911E1 +9.625540000E2,5.138365056E1 +9.628240000E2,5.235851031E1 +9.630470000E2,4.871540913E1 +9.632880000E2,5.651540461E1 +9.635860000E2,5.650278128E1 +9.638210000E2,5.704973755E1 +9.641160000E2,5.757712252E1 +9.643960000E2,5.881159691E1 +9.646600000E2,5.355579494E1 +9.649750000E2,5.539751700E1 +9.652910000E2,4.797714339E1 +9.655520000E2,5.082548637E1 +9.658080000E2,5.579830605E1 +9.660780000E2,5.554406278E1 +9.663250000E2,5.354814316E1 +9.665660000E2,5.463107171E1 +9.668090000E2,5.368692433E1 +9.671300000E2,5.364867335E1 +9.674540000E2,5.468973775E1 +9.677060000E2,5.815904844E1 +9.680020000E2,5.598522308E1 +9.682480000E2,5.541083624E1 +9.685850000E2,5.512396132E1 +9.688400000E2,5.530796688E1 +9.691210000E2,5.433954611E1 +9.693810000E2,5.507440645E1 +9.696820000E2,5.086817906E1 +9.699140000E2,5.696191489E1 +9.701640000E2,5.845256581E1 +9.704420000E2,5.620226260E1 +9.706770000E2,5.629047170E1 +9.709750000E2,5.811655252E1 +9.712290000E2,5.703185419E1 +9.714900000E2,5.716734774E1 +9.718450000E2,5.493596869E1 +9.720910000E2,5.909437017E1 +9.723380000E2,5.710675060E1 +9.725910000E2,5.780279559E1 +9.728920000E2,5.860060144E1 +9.731360000E2,6.078900999E1 +9.734260000E2,5.852116194E1 +9.736640000E2,5.905899453E1 +9.739130000E2,5.636299630E1 +9.742090000E2,6.289355999E1 +9.744870000E2,6.167909115E1 +9.747290000E2,6.098057792E1 +9.750690000E2,5.906667343E1 +9.753320000E2,6.018572501E1 +9.756150000E2,5.718512970E1 +9.759100000E2,5.146063018E1 +9.761570000E2,5.733244632E1 +9.764050000E2,5.368365894E1 +9.766600000E2,5.486016267E1 +9.769150000E2,5.908582599E1 +9.771910000E2,5.733773036E1 +9.774400000E2,5.566361416E1 +9.777680000E2,5.819125256E1 +9.781220000E2,5.947694304E1 +9.783640000E2,6.140057637E1 +9.786330000E2,5.721849738E1 +9.788550000E2,5.617504209E1 +9.791010000E2,5.660293849E1 +9.793960000E2,5.174001770E1 +9.796880000E2,5.083474014E1 +9.799290000E2,5.184104339E1 +9.801850000E2,5.025385313E1 +9.804850000E2,5.286605500E1 +9.807270000E2,5.586849562E1 +9.809750000E2,5.666036754E1 +9.812950000E2,5.248500918E1 +9.815810000E2,5.416072977E1 +9.818360000E2,5.799655965E1 +9.821300000E2,5.801841935E1 +9.823770000E2,5.977514968E1 +9.826270000E2,5.676871456E1 +9.828850000E2,5.104814549E1 +9.831730000E2,5.834620153E1 +9.834010000E2,5.660640582E1 +9.836620000E2,5.686451748E1 +9.839750000E2,5.998440952E1 +9.842240000E2,5.556687478E1 +9.846000000E2,5.811069315E1 +9.848430000E2,5.843499893E1 +9.851250000E2,5.180956247E1 +9.853860000E2,5.206236639E1 +9.856480000E2,5.641840701E1 +9.859110000E2,5.518588565E1 +9.861920000E2,5.697237679E1 +9.864550000E2,5.411246614E1 +9.867510000E2,5.214533821E1 +9.869880000E2,5.642389575E1 +9.872440000E2,6.015294933E1 +9.875470000E2,5.809991100E1 +9.879150000E2,6.420044247E1 +9.881610000E2,6.042656173E1 +9.884280000E2,5.938959873E1 +9.886840000E2,6.059888233E1 +9.889870000E2,5.282749720E1 +9.892620000E2,5.638110380E1 +9.895440000E2,4.900409689E1 +9.897740000E2,4.971849802E1 +9.900320000E2,5.061428463E1 +9.903370000E2,5.829922071E1 +9.905860000E2,5.812083213E1 +9.908910000E2,5.500587720E1 +9.911860000E2,5.677481104E1 +9.914380000E2,5.502691141E1 +9.916830000E2,5.294500154E1 +9.919560000E2,5.700444986E1 +9.921770000E2,5.448756275E1 +9.924220000E2,5.785741234E1 +9.927280000E2,5.702180374E1 +9.929670000E2,6.013415875E1 +9.932080000E2,5.533496795E1 +9.934640000E2,5.695301526E1 +9.937440000E2,5.436173732E1 +9.940620000E2,5.092257074E1 +9.944480000E2,4.973000793E1 +9.946940000E2,4.871235512E1 +9.949410000E2,5.171412848E1 +9.951960000E2,5.643245777E1 +9.954520000E2,5.548819002E1 +9.957530000E2,5.694822585E1 +9.960600000E2,5.668072577E1 +9.963110000E2,5.547400320E1 +9.966010000E2,5.667137699E1 +9.968430000E2,5.866196066E1 +9.971120000E2,5.641527163E1 +9.974300000E2,5.505243365E1 +9.977140000E2,5.491253296E1 +9.979940000E2,5.642986287E1 +9.982400000E2,5.111113898E1 +9.985270000E2,5.228293633E1 +9.987770000E2,5.380023266E1 +9.990760000E2,5.259255492E1 +9.993610000E2,5.359948032E1 +9.996550000E2,5.817439497E1 +9.999080000E2,5.712087238E1 +1.000199000E3,6.016800470E1 +1.000435000E3,5.758076017E1 +1.000772000E3,5.328951429E1 +1.001047000E3,5.373102399E1 +1.001303000E3,5.905317642E1 +1.001622000E3,5.478240688E1 +1.001877000E3,5.648896451E1 +1.002173000E3,5.587033976E1 +1.002422000E3,5.995513955E1 +1.002724000E3,6.295760047E1 +1.003003000E3,5.978713154E1 +1.003261000E3,5.669754444E1 +1.003545000E3,5.577942906E1 +1.003827000E3,6.186873273E1 +1.004183000E3,6.253868639E1 +1.004493000E3,5.777226132E1 +1.004770000E3,6.482227668E1 +1.005072000E3,5.923751414E1 +1.005323000E3,5.644465637E1 +1.005601000E3,6.074750234E1 +1.005832000E3,5.683683327E1 +1.006147000E3,5.957418887E1 +1.006418000E3,6.134946851E1 +1.006713000E3,5.641852300E1 +1.006952000E3,5.637674327E1 +1.007310000E3,5.484290206E1 +1.007589000E3,6.426865013E1 +1.007886000E3,5.712036033E1 +1.008127000E3,5.768385080E1 +1.008427000E3,5.812466970E1 +1.008666000E3,6.112344783E1 +1.008973000E3,5.606588478E1 +1.009269000E3,5.809328667E1 +1.009507000E3,5.371315435E1 +1.009763000E3,5.527533595E1 +1.010003000E3,5.390597114E1 +1.010379000E3,5.652035402E1 +1.010658000E3,5.490058638E1 +1.010920000E3,5.927019017E1 +1.011197000E3,5.293113048E1 +1.011458000E3,5.179006266E1 +1.011718000E3,5.366462930E1 +1.011979000E3,5.569421827E1 +1.012229000E3,5.341899104E1 +1.012477000E3,4.863208748E1 +1.012772000E3,6.037154816E1 +1.013036000E3,5.430849576E1 +1.013284000E3,5.735938261E1 +1.013671000E3,5.526482118E1 +1.013957000E3,5.731780297E1 +1.014225000E3,5.205368153E1 +1.014486000E3,5.548863756E1 +1.014733000E3,5.265038263E1 +1.015033000E3,5.986876322E1 +1.015314000E3,5.130643680E1 +1.015590000E3,6.086878634E1 +1.015830000E3,5.798526739E1 +1.016137000E3,6.825745236E1 +1.016387000E3,5.828900876E1 +1.016655000E3,5.873097643E1 +1.017001000E3,6.454090665E1 +1.017329000E3,6.385512775E1 +1.017637000E3,6.691081911E1 +1.017938000E3,6.580217665E1 +1.018229000E3,6.485489311E1 +1.018470000E3,6.387101962E1 +1.018706000E3,6.616835921E1 +1.018997000E3,5.951737331E1 +1.019235000E3,5.386458503E1 +1.019536000E3,5.756977765E1 +1.019801000E3,5.811747841E1 +1.020064000E3,5.930001089E1 +1.020406000E3,5.469664450E1 +1.020673000E3,5.181220980E1 +1.020925000E3,5.483858346E1 +1.021232000E3,5.716842569E1 +1.021527000E3,5.738254897E1 +1.021762000E3,5.628034518E1 +1.022007000E3,5.850971228E1 +1.022258000E3,5.329919175E1 +1.022556000E3,5.482637446E1 +1.022813000E3,5.690503448E1 +1.023071000E3,5.317501594E1 +1.023336000E3,4.870888301E1 +1.023687000E3,6.132281620E1 +1.023965000E3,6.262505101E1 +1.024220000E3,6.180229149E1 +1.024496000E3,6.130993335E1 +1.024741000E3,6.231376381E1 +1.025040000E3,6.164360059E1 +1.025279000E3,5.910065798E1 +1.025533000E3,5.622173801E1 +1.025821000E3,5.290311975E1 +1.026116000E3,5.028293308E1 +1.026403000E3,5.581740437E1 +1.026664000E3,5.988277804E1 +1.027011000E3,5.730548262E1 +1.027305000E3,5.417769573E1 +1.027578000E3,5.250932185E1 +1.027819000E3,5.139919708E1 +1.028128000E3,5.061852216E1 +1.028380000E3,4.722292138E1 +1.028683000E3,5.983070917E1 +1.028956000E3,6.045269830E1 +1.029182000E3,5.777292957E1 +1.029431000E3,5.497807442E1 +1.029734000E3,5.533889528E1 +1.030063000E3,5.373558580E1 +1.030323000E3,5.600729212E1 +1.030620000E3,5.467159629E1 +1.030863000E3,5.246400101E1 +1.031110000E3,5.468037288E1 +1.031367000E3,5.850364516E1 +1.031646000E3,5.490958739E1 +1.031911000E3,5.866929845E1 +1.032210000E3,5.708288591E1 +1.032475000E3,5.498129629E1 +1.032736000E3,5.670272599E1 +1.032986000E3,5.317143219E1 +1.033315000E3,5.758413128E1 +1.033557000E3,6.361635596E1 +1.033846000E3,5.513973379E1 +1.034093000E3,5.215484095E1 +1.034399000E3,5.465926438E1 +1.034684000E3,5.588902955E1 +1.034978000E3,5.387672604E1 +1.035280000E3,5.595327755E1 +1.035543000E3,5.621513504E1 +1.035825000E3,5.991854954E1 +1.036079000E3,5.864640009E1 +1.036322000E3,6.072021936E1 +1.036666000E3,5.462749592E1 +1.036971000E3,5.329083651E1 +1.037264000E3,5.401214501E1 +1.037542000E3,5.242806591E1 +1.037843000E3,5.573267887E1 +1.038091000E3,5.224254554E1 +1.038380000E3,5.453929206E1 +1.038635000E3,5.371826859E1 +1.038891000E3,4.369246898E1 +1.039145000E3,4.547521933E1 +1.039418000E3,4.204639660E1 +1.039750000E3,4.426760298E1 +1.039990000E3,4.955659514E1 +1.040294000E3,4.960859899E1 +1.040560000E3,4.841380220E1 +1.040808000E3,4.914533708E1 +1.041104000E3,4.650609937E1 +1.041370000E3,4.849101938E1 +1.041622000E3,5.065930763E1 +1.041920000E3,4.744161935E1 +1.042161000E3,4.448519483E1 +1.042478000E3,4.726532690E1 +1.042725000E3,4.667923132E1 +1.043042000E3,4.704822757E1 +1.043307000E3,3.950691106E1 +1.043560000E3,5.249697508E1 +1.043835000E3,4.753687679E1 +1.044091000E3,4.843049138E1 +1.044350000E3,5.394643708E1 +1.044644000E3,4.769079035E1 +1.044887000E3,5.111291504E1 +1.045194000E3,5.247298633E1 +1.045445000E3,4.904344971E1 +1.045693000E3,4.405437847E1 +1.045988000E3,4.750888237E1 +1.046301000E3,4.305046000E1 +1.046518000E3,4.630901796E1 +1.046813000E3,4.756289225E1 +1.047053000E3,4.661089273E1 +1.047331000E3,6.143859736E1 +1.047566000E3,5.702483033E1 +1.047860000E3,5.015015196E1 +1.048098000E3,5.180675157E1 +1.048397000E3,4.645218330E1 +1.048640000E3,4.317726503E1 +1.048918000E3,4.962602549E1 +1.049159000E3,4.922447391E1 +1.049523000E3,4.310015818E1 +1.049767000E3,5.584844461E1 +1.050011000E3,5.550466055E1 +1.050294000E3,5.076679182E1 +1.050523000E3,4.777565498E1 +1.050776000E3,5.078379664E1 +1.051031000E3,4.412618688E1 +1.051298000E3,3.933148532E1 +1.051551000E3,4.240994962E1 +1.051799000E3,3.715036539E1 +1.052054000E3,4.541823437E1 +1.052312000E3,3.252240989E1 +1.052661000E3,4.298387800E1 +1.052922000E3,4.065675211E1 +1.053171000E3,3.851226965E1 +1.053417000E3,3.833414863E1 +1.053702000E3,3.734543870E1 +1.053967000E3,4.406198141E1 +1.054269000E3,3.397952572E1 +1.054518000E3,3.018425986E1 +1.054795000E3,2.659023927E1 +1.055055000E3,3.230579484E1 +1.055319000E3,4.027650377E1 +1.055588000E3,3.256611719E1 +1.055936000E3,3.203904394E1 +1.056189000E3,3.024692018E1 +1.056469000E3,4.044611203E1 +1.056698000E3,3.245705712E1 +1.056956000E3,5.087039919E1 +1.057201000E3,5.278557071E1 +1.057507000E3,6.996122129E1 +1.057766000E3,6.951439283E1 +1.058027000E3,6.731609209E1 +1.058291000E3,5.787293958E1 +1.058571000E3,5.774874245E1 +1.058801000E3,5.291748766E1 +1.059132000E3,4.352220528E1 +1.059391000E3,5.556254729E1 +1.059665000E3,5.339220405E1 +1.059951000E3,5.593145301E1 +1.060235000E3,5.299996372E1 +1.060492000E3,4.882317894E1 +1.060733000E3,3.790707311E1 +1.060975000E3,3.470192076E1 +1.061278000E3,4.481563830E1 +1.061519000E3,4.823008935E1 +1.061816000E3,4.719850269E1 +1.062076000E3,4.706381680E1 +1.062331000E3,4.530378435E1 +1.062576000E3,3.456809562E1 +1.062882000E3,3.742453964E1 +1.063154000E3,3.905594906E1 +1.063397000E3,3.672857244E1 +1.063694000E3,2.941779164E1 +1.063926000E3,2.995931983E1 +1.064168000E3,3.455311118E1 +1.064461000E3,3.254662869E1 +1.064708000E3,3.652583843E1 +1.065001000E3,5.229424666E1 +1.065352000E3,5.178814165E1 +1.065606000E3,4.798098259E1 +1.065854000E3,3.636652329E1 +1.066121000E3,4.558252535E1 +1.066366000E3,3.902840121E1 +1.066629000E3,3.106435508E1 +1.066887000E3,2.541330464E1 +1.067179000E3,3.474902335E1 +1.067449000E3,4.492275189E1 +1.067698000E3,3.860211372E1 +1.067955000E3,4.332670525E1 +1.068251000E3,5.147667691E1 +1.068546000E3,5.152069997E1 +1.068797000E3,4.540650098E1 +1.069105000E3,4.486446450E1 +1.069378000E3,4.196481867E1 +1.069632000E3,4.863200791E1 +1.069908000E3,3.878967071E1 +1.070151000E3,3.630888030E1 +1.070413000E3,2.964429880E1 +1.070682000E3,3.354707636E1 +1.070956000E3,4.008490969E1 +1.071248000E3,3.576577653E1 +1.071553000E3,4.349754488E1 +1.071886000E3,3.824859907E1 +1.072130000E3,3.455877689E1 +1.072406000E3,3.622999465E1 +1.072717000E3,3.637608237E1 +1.072984000E3,3.645219519E1 +1.073255000E3,4.353729148E1 +1.073603000E3,4.287473251E1 +1.073856000E3,4.842203791E1 +1.074097000E3,4.484407311E1 +1.074356000E3,4.397007110E1 +1.074628000E3,4.695884235E1 +1.074931000E3,4.627189963E1 +1.075264000E3,4.689571524E1 +1.075614000E3,5.203841291E1 +1.075923000E3,4.610184941E1 +1.076163000E3,4.404432471E1 +1.076475000E3,4.923215011E1 +1.076765000E3,4.466142180E1 +1.077062000E3,4.987282715E1 +1.077375000E3,4.461839454E1 +1.077687000E3,5.085403766E1 +1.077991000E3,4.674512295E1 +1.078232000E3,5.167180279E1 +1.078544000E3,4.780582457E1 +1.078939000E3,4.593914406E1 +1.079187000E3,4.061652220E1 +1.079434000E3,4.347669045E1 +1.079712000E3,4.326983820E1 +1.079966000E3,3.511950991E1 +1.080260000E3,4.755279745E1 +1.080506000E3,4.756343862E1 +1.080756000E3,4.779732167E1 +1.081049000E3,4.991962747E1 +1.081293000E3,5.213887128E1 +1.081586000E3,5.357624469E1 +1.081916000E3,5.141456645E1 +1.082165000E3,5.036532462E1 +1.082460000E3,4.962769973E1 +1.082696000E3,4.506404490E1 +1.082988000E3,4.537987312E1 +1.083220000E3,4.738457007E1 +1.083529000E3,4.698711193E1 +1.083769000E3,4.571430081E1 +1.084079000E3,4.980908007E1 +1.084324000E3,5.082282040E1 +1.084590000E3,5.406004268E1 +1.084876000E3,5.436375886E1 +1.085258000E3,5.361506257E1 +1.085509000E3,5.202937925E1 +1.085815000E3,5.324976969E1 +1.086057000E3,5.371445731E1 +1.086301000E3,5.282162917E1 +1.086550000E3,5.221281857E1 +1.086802000E3,5.263727375E1 +1.087126000E3,5.703022139E1 +1.087384000E3,5.519432869E1 +1.087646000E3,5.426647490E1 +1.087939000E3,5.407342864E1 +1.088175000E3,5.235924404E1 +1.088520000E3,4.681002832E1 +1.088812000E3,4.891237586E1 +1.089076000E3,4.699020733E1 +1.089350000E3,4.902871382E1 +1.089591000E3,5.078145117E1 +1.089837000E3,5.041791921E1 +1.090133000E3,4.603650794E1 +1.090430000E3,4.871755485E1 +1.090660000E3,5.111421073E1 +1.090911000E3,4.581894631E1 +1.091248000E3,4.988189917E1 +1.091630000E3,5.341365920E1 +1.091902000E3,4.962858025E1 +1.092183000E3,4.315344358E1 +1.092440000E3,4.664431132E1 +1.092683000E3,4.616459192E1 +1.092923000E3,4.765071496E1 +1.093171000E3,4.163360687E1 +1.093473000E3,4.537777608E1 +1.093714000E3,4.783603025E1 +1.094007000E3,4.845414260E1 +1.094261000E3,4.799870549E1 +1.094499000E3,4.651309815E1 +1.094792000E3,5.003648984E1 +1.095123000E3,5.202534254E1 +1.095372000E3,5.709400077E1 +1.095625000E3,5.694079106E1 +1.095896000E3,5.715452089E1 +1.096196000E3,5.523378380E1 +1.096438000E3,5.375558627E1 +1.096737000E3,5.665208041E1 +1.096991000E3,5.314654737E1 +1.097292000E3,5.142447849E1 +1.097557000E3,5.330628285E1 +1.097827000E3,5.512040694E1 +1.098167000E3,5.399583122E1 +1.098472000E3,5.540663813E1 +1.098720000E3,5.200546986E1 +1.098960000E3,4.676140326E1 +1.099243000E3,4.798657093E1 +1.099544000E3,4.841724285E1 +1.099804000E3,5.642371618E1 +1.100109000E3,5.409000726E1 +1.100381000E3,5.348646719E1 +1.100630000E3,5.346537578E1 +1.100927000E3,5.422782845E1 +1.101164000E3,5.395323822E1 +1.101495000E3,5.383967560E1 +1.101763000E3,5.667828538E1 +1.102044000E3,4.764690784E1 +1.102307000E3,5.353530254E1 +1.102613000E3,5.568430762E1 +1.102906000E3,5.431580275E1 +1.103147000E3,5.193331555E1 +1.103441000E3,5.040945762E1 +1.103677000E3,5.333005838E1 +1.103968000E3,4.947534745E1 +1.104272000E3,5.306270968E1 +1.104564000E3,5.537230515E1 +1.104799000E3,4.876041085E1 +1.105069000E3,5.109409535E1 +1.105330000E3,5.087734214E1 +1.105587000E3,5.225642483E1 +1.105838000E3,5.176680091E1 +1.106135000E3,5.535939212E1 +1.106380000E3,5.666892185E1 +1.106622000E3,5.658846562E1 +1.106895000E3,5.577897889E1 +1.107150000E3,5.157178717E1 +1.107431000E3,5.284488409E1 +1.107756000E3,5.415639955E1 +1.108002000E3,5.465643057E1 +1.108313000E3,4.654328988E1 +1.108563000E3,5.038890380E1 +1.108811000E3,4.602751738E1 +1.109073000E3,4.801243396E1 +1.109375000E3,4.782472616E1 +1.109667000E3,4.666447221E1 +1.109943000E3,5.156469126E1 +1.110192000E3,4.949682888E1 +1.110448000E3,4.919673339E1 +1.110752000E3,4.862521519E1 +1.111045000E3,5.122379655E1 +1.111295000E3,4.813892217E1 +1.111515000E3,4.901611396E1 +1.111761000E3,4.905664967E1 +1.112005000E3,4.647618514E1 +1.112265000E3,4.730688076E1 +1.112537000E3,5.039121351E1 +1.112793000E3,4.985611957E1 +1.113101000E3,5.474563863E1 +1.113387000E3,5.028870882E1 +1.113678000E3,5.073784750E1 +1.113952000E3,4.995138555E1 +1.114291000E3,4.790039203E1 +1.114554000E3,4.764335594E1 +1.114849000E3,5.057104591E1 +1.115096000E3,5.107398730E1 +1.115401000E3,4.800391913E1 +1.115672000E3,4.553282874E1 +1.115895000E3,4.569523337E1 +1.116194000E3,4.480844215E1 +1.116425000E3,4.772339962E1 +1.116664000E3,5.255452638E1 +1.116906000E3,4.927433934E1 +1.117202000E3,4.871369865E1 +1.117530000E3,4.928110420E1 +1.117840000E3,5.705383563E1 +1.118146000E3,4.880674861E1 +1.118418000E3,5.038180726E1 +1.118687000E3,5.145980404E1 +1.118950000E3,5.338008269E1 +1.119227000E3,5.227728425E1 +1.119468000E3,5.450689216E1 +1.119736000E3,5.844246451E1 +1.120049000E3,5.459398611E1 +1.120351000E3,5.526423567E1 +1.120605000E3,5.228963309E1 +1.120918000E3,5.598288902E1 +1.121182000E3,5.280889802E1 +1.121489000E3,4.974717420E1 +1.121729000E3,5.137523152E1 +1.121978000E3,5.052356297E1 +1.122235000E3,5.240368249E1 +1.122503000E3,4.826380791E1 +1.122775000E3,5.095403791E1 +1.123036000E3,5.799909934E1 +1.123291000E3,4.889512711E1 +1.123587000E3,5.622808486E1 +1.123874000E3,5.230369090E1 +1.124235000E3,5.081102316E1 +1.124544000E3,5.628773803E1 +1.124826000E3,5.810547372E1 +1.125153000E3,5.508029719E1 +1.125432000E3,5.576573503E1 +1.125722000E3,5.346022180E1 +1.125978000E3,5.279748306E1 +1.126234000E3,5.604802053E1 +1.126502000E3,5.937326657E1 +1.126804000E3,5.703447215E1 +1.127047000E3,5.520354594E1 +1.127314000E3,5.551787326E1 +1.127554000E3,5.740837773E1 +1.127843000E3,5.663015330E1 +1.128135000E3,5.649615150E1 +1.128380000E3,5.731556257E1 +1.128677000E3,6.079986861E1 +1.128914000E3,5.820128856E1 +1.129207000E3,6.091746513E1 +1.129442000E3,6.126941240E1 +1.129745000E3,4.541170906E1 +1.129980000E3,4.341485096E1 +1.130277000E3,4.833777967E1 +1.130573000E3,4.472710223E1 +1.130815000E3,5.059675199E1 +1.131062000E3,3.863826940E1 +1.131353000E3,4.925455740E1 +1.131589000E3,4.859989956E1 +1.131881000E3,5.113067908E1 +1.132117000E3,5.054542106E1 +1.132418000E3,4.827479925E1 +1.132654000E3,4.610884488E1 +1.132948000E3,4.879734536E1 +1.133241000E3,5.074680390E1 +1.133563000E3,5.119298220E1 +1.133864000E3,4.861265792E1 +1.134166000E3,5.001512903E1 +1.134452000E3,5.059053464E1 +1.134716000E3,4.999839479E1 +1.134967000E3,4.960069086E1 +1.135222000E3,5.320256888E1 +1.135494000E3,5.604818163E1 +1.135742000E3,5.625768045E1 +1.135999000E3,5.261645024E1 +1.136244000E3,5.105081932E1 +1.136501000E3,5.616444939E1 +1.136847000E3,5.624064264E1 +1.137105000E3,5.654097446E1 +1.137391000E3,5.807884104E1 +1.137717000E3,5.436169891E1 +1.137970000E3,5.763959225E1 +1.138239000E3,5.465216875E1 +1.138486000E3,5.094509116E1 +1.138731000E3,5.425415233E1 +1.138977000E3,5.143709697E1 +1.139259000E3,5.032545705E1 +1.139527000E3,5.906031130E1 +1.139800000E3,5.308709054E1 +1.140168000E3,5.407062541E1 +1.140423000E3,5.585261351E1 +1.140694000E3,5.463535881E1 +1.140949000E3,5.407603664E1 +1.141230000E3,5.495767686E1 +1.141512000E3,5.639433741E1 +1.141818000E3,5.555715330E1 +1.142072000E3,5.729232944E1 +1.142323000E3,5.553013253E1 +1.142578000E3,5.648251207E1 +1.142844000E3,5.786931075E1 +1.143143000E3,6.007493220E1 +1.143523000E3,5.752076543E1 +1.143836000E3,5.573324560E1 +1.144090000E3,5.641950784E1 +1.144396000E3,5.532270625E1 +1.144644000E3,5.561239732E1 +1.144940000E3,5.206707456E1 +1.145212000E3,5.092140902E1 +1.145511000E3,5.452891649E1 +1.145770000E3,5.331137977E1 +1.146042000E3,5.366568195E1 +1.146338000E3,5.227174013E1 +1.146650000E3,5.423955559E1 +1.146934000E3,5.781916580E1 +1.147218000E3,5.532962824E1 +1.147467000E3,5.502661676E1 +1.147687000E3,5.823979674E1 +1.147961000E3,5.538066560E1 +1.148276000E3,5.423260060E1 +1.148528000E3,5.197461977E1 +1.148799000E3,5.154724487E1 +1.149057000E3,5.473685923E1 +1.149367000E3,5.647867848E1 +1.149660000E3,5.489455072E1 +1.150037000E3,6.072892064E1 +1.150335000E3,5.543869835E1 +1.150594000E3,5.667713742E1 +1.150870000E3,5.818755157E1 +1.151164000E3,5.210849760E1 +1.151411000E3,5.095671455E1 +1.151703000E3,5.254983272E1 +1.152002000E3,5.585064224E1 +1.152253000E3,5.739007574E1 +1.152582000E3,5.895179917E1 +1.152860000E3,5.461317681E1 +1.153122000E3,5.345759293E1 +1.153381000E3,5.267971619E1 +1.153684000E3,6.006602205E1 +1.153986000E3,5.573552061E1 +1.154286000E3,5.518963618E1 +1.154531000E3,5.342922095E1 +1.154792000E3,5.257536969E1 +1.155139000E3,4.887945516E1 +1.155435000E3,4.702411688E1 +1.155680000E3,4.867646616E1 +1.155978000E3,4.811861077E1 +1.156361000E3,4.915586406E1 +1.156670000E3,5.033026069E1 +1.156976000E3,5.393908378E1 +1.157274000E3,5.295128205E1 +1.157524000E3,5.249671789E1 +1.157816000E3,5.314344994E1 +1.158052000E3,5.237342933E1 +1.158353000E3,5.300284286E1 +1.158590000E3,5.170068449E1 +1.158867000E3,5.174146304E1 +1.159147000E3,4.929588783E1 +1.159411000E3,5.699090425E1 +1.159752000E3,5.266690351E1 +1.160068000E3,5.746767577E1 +1.160360000E3,5.375850846E1 +1.160640000E3,5.373794020E1 +1.160985000E3,5.304914530E1 +1.161280000E3,5.198754593E1 +1.161525000E3,5.019848207E1 +1.161766000E3,5.164623609E1 +1.162020000E3,5.363319210E1 +1.162324000E3,5.439011044E1 +1.162564000E3,5.304648945E1 +1.162816000E3,5.174573718E1 +1.163177000E3,4.505755779E1 +1.163462000E3,4.894753105E1 +1.163738000E3,5.064933943E1 +1.164013000E3,5.245879056E1 +1.164255000E3,5.017914517E1 +1.164568000E3,5.189205429E1 +1.164823000E3,5.038961444E1 +1.165052000E3,5.072118593E1 +1.165297000E3,4.831662547E1 +1.165552000E3,5.050204887E1 +1.165808000E3,5.308107982E1 +1.166062000E3,4.878509871E1 +1.166392000E3,5.002605106E1 +1.166654000E3,5.320265697E1 +1.166911000E3,4.403273534E1 +1.167180000E3,5.161386051E1 +1.167455000E3,4.986209571E1 +1.167692000E3,4.993305836E1 +1.167973000E3,5.173621365E1 +1.168216000E3,5.385559129E1 +1.168491000E3,5.543019156E1 +1.168757000E3,5.019966657E1 +1.169035000E3,5.569516326E1 +1.169296000E3,5.216419082E1 +1.169676000E3,5.398731996E1 +1.169933000E3,5.465625282E1 +1.170197000E3,5.451774184E1 +1.170449000E3,5.328129322E1 +1.170705000E3,5.452639907E1 +1.170963000E3,5.713735254E1 +1.171272000E3,5.551413923E1 +1.171528000E3,5.604966001E1 +1.171779000E3,5.340478404E1 +1.172038000E3,5.107817821E1 +1.172291000E3,5.218990306E1 +1.172602000E3,4.830451720E1 +1.172964000E3,5.276802164E1 +1.173245000E3,5.191204687E1 +1.173527000E3,5.337367972E1 +1.173838000E3,5.462664550E1 +1.174090000E3,5.304724513E1 +1.174379000E3,5.193251440E1 +1.174628000E3,5.283915893E1 +1.174936000E3,5.036641160E1 +1.175236000E3,4.890810708E1 +1.175487000E3,4.805298565E1 +1.175750000E3,5.067335741E1 +1.176019000E3,4.961207397E1 +1.176335000E3,4.820862314E1 +1.176634000E3,5.328684116E1 +1.176883000E3,5.122009001E1 +1.177165000E3,5.878687770E1 +1.177412000E3,5.487235950E1 +1.177709000E3,5.224569426E1 +1.178006000E3,5.403405997E1 +1.178246000E3,5.388661901E1 +1.178490000E3,5.237426881E1 +1.178734000E3,5.372043820E1 +1.179050000E3,5.471170909E1 +1.179387000E3,5.129350436E1 +1.179686000E3,4.660070824E1 +1.179916000E3,4.541361068E1 +1.180159000E3,4.365576113E1 +1.180466000E3,4.771103553E1 +1.180756000E3,4.863237791E1 +1.181008000E3,5.534959697E1 +1.181314000E3,5.376444060E1 +1.181609000E3,5.130885425E1 +1.181851000E3,5.256948786E1 +1.182151000E3,5.321964637E1 +1.182393000E3,5.074776981E1 +1.182622000E3,4.979941250E1 +1.182873000E3,5.445637667E1 +1.183116000E3,4.449721128E1 +1.183420000E3,5.086906199E1 +1.183676000E3,5.067998506E1 +1.183927000E3,5.352019181E1 +1.184219000E3,4.851971310E1 +1.184517000E3,5.123853013E1 +1.184764000E3,5.278221141E1 +1.185010000E3,5.126409245E1 +1.185297000E3,5.249182764E1 +1.185665000E3,5.346599478E1 +1.185972000E3,5.052250297E1 +1.186225000E3,5.389354916E1 +1.186534000E3,5.372737626E1 +1.186796000E3,5.415645782E1 +1.187048000E3,5.441424865E1 +1.187317000E3,5.470553815E1 +1.187622000E3,5.559990781E1 +1.187913000E3,5.619293356E1 +1.188186000E3,4.869472445E1 +1.188442000E3,5.069948923E1 +1.188718000E3,5.296813397E1 +1.189051000E3,5.015003063E1 +1.189308000E3,5.110938827E1 +1.189570000E3,5.250182053E1 +1.189815000E3,5.240850659E1 +1.190062000E3,5.446862868E1 +1.190368000E3,5.270463767E1 +1.190629000E3,5.117539458E1 +1.190931000E3,5.543767536E1 +1.191207000E3,5.348622922E1 +1.191505000E3,5.112152946E1 +1.191761000E3,4.905277341E1 +1.192068000E3,5.456405848E1 +1.192487000E3,5.016322677E1 +1.192732000E3,4.971711263E1 +1.192976000E3,5.396031961E1 +1.193258000E3,5.018645567E1 +1.193531000E3,4.895586707E1 +1.193790000E3,5.442023654E1 +1.194055000E3,5.160697029E1 +1.194326000E3,4.822365107E1 +1.194605000E3,5.396633777E1 +1.194903000E3,5.031021734E1 +1.195141000E3,5.278015326E1 +1.195431000E3,4.949576105E1 +1.195801000E3,5.244682833E1 +1.196076000E3,5.508575727E1 +1.196371000E3,5.161802747E1 +1.196603000E3,5.716896987E1 +1.196858000E3,5.210002974E1 +1.197207000E3,5.483594793E1 +1.197503000E3,5.204828926E1 +1.197774000E3,5.339169315E1 +1.198054000E3,4.934781945E1 +1.198312000E3,5.918797425E1 +1.198559000E3,5.025254784E1 +1.198808000E3,5.317746302E1 +1.199152000E3,5.656715516E1 +1.199464000E3,5.448426177E1 +1.199717000E3,5.419526565E1 +1.199961000E3,5.304156540E1 +1.200219000E3,4.961182292E1 +1.200480000E3,5.259766625E1 +1.200730000E3,5.295115767E1 +1.201029000E3,5.365389524E1 +1.201288000E3,5.465027972E1 +1.201538000E3,5.131261505E1 +1.201807000E3,5.767453751E1 +1.202112000E3,5.316006082E1 +1.202485000E3,5.263333972E1 +1.202739000E3,4.966297173E1 +1.203041000E3,5.282706501E1 +1.203300000E3,4.950274237E1 +1.203539000E3,4.377779375E1 +1.203832000E3,5.274682795E1 +1.204077000E3,5.348405653E1 +1.204320000E3,5.647600154E1 +1.204615000E3,4.835002395E1 +1.204854000E3,4.440243109E1 +1.205149000E3,4.673035253E1 +1.205410000E3,4.901106802E1 +1.205666000E3,5.311033159E1 +1.205952000E3,5.020567211E1 +1.206248000E3,5.046889058E1 +1.206545000E3,6.150607502E1 +1.206779000E3,5.260331634E1 +1.207093000E3,5.183291791E1 +1.207367000E3,4.957331060E1 +1.207610000E3,5.139200370E1 +1.207857000E3,5.005726187E1 +1.208158000E3,4.979521937E1 +1.208398000E3,5.178137337E1 +1.208738000E3,4.632694184E1 +1.208994000E3,4.836915777E1 +1.209279000E3,4.869228435E1 +1.209528000E3,5.096507040E1 +1.209784000E3,4.718590489E1 +1.210053000E3,4.835967114E1 +1.210281000E3,4.725223201E1 +1.210542000E3,5.172958855E1 +1.210823000E3,5.546336112E1 +1.211051000E3,5.448218663E1 +1.211300000E3,5.371995163E1 +1.211551000E3,4.887559574E1 +1.211926000E3,4.975732945E1 +1.212205000E3,5.041543230E1 +1.212482000E3,4.863959509E1 +1.212730000E3,5.047232348E1 +1.212990000E3,4.824384094E1 +1.213232000E3,5.039377586E1 +1.213493000E3,4.517891187E1 +1.213814000E3,4.686032989E1 +1.214062000E3,4.852263494E1 +1.214337000E3,4.897277606E1 +1.214586000E3,4.662047985E1 +1.214832000E3,5.483925472E1 +1.215143000E3,5.677489998E1 +1.215372000E3,5.470688254E1 +1.215664000E3,5.408747991E1 +1.215962000E3,5.167832591E1 +1.216227000E3,5.463116224E1 +1.216504000E3,5.335564969E1 +1.216747000E3,4.832376612E1 +1.216996000E3,4.918538596E1 +1.217306000E3,5.329611015E1 +1.217618000E3,5.364881155E1 +1.217885000E3,5.087209115E1 +1.218149000E3,4.967310650E1 +1.218497000E3,4.842689624E1 +1.218801000E3,5.442588779E1 +1.219043000E3,5.338467746E1 +1.219349000E3,5.187371665E1 +1.219600000E3,4.992515182E1 +1.219883000E3,5.205809257E1 +1.220161000E3,5.374364962E1 +1.220471000E3,5.145920034E1 +1.220752000E3,5.112774200E1 +1.221009000E3,4.969936214E1 +1.221258000E3,4.906585252E1 +1.221519000E3,4.971022706E1 +1.221873000E3,5.039216656E1 +1.222125000E3,4.735018859E1 +1.222388000E3,5.025223930E1 +1.222647000E3,5.349102952E1 +1.222903000E3,5.894430216E1 +1.223210000E3,5.133834742E1 +1.223464000E3,5.378681025E1 +1.223708000E3,5.646161983E1 +1.223949000E3,5.127610878E1 +1.224189000E3,5.295211205E1 +1.224441000E3,5.074229414E1 +1.224698000E3,5.428527885E1 +1.225064000E3,6.064230054E1 +1.225333000E3,5.545461106E1 +1.225591000E3,5.085263163E1 +1.225847000E3,4.867332677E1 +1.226137000E3,4.828036819E1 +1.226394000E3,5.187031217E1 +1.226668000E3,4.691949774E1 +1.226931000E3,4.605300024E1 +1.227219000E3,4.319091646E1 +1.227493000E3,4.827268256E1 +1.227791000E3,4.873371181E1 +1.228031000E3,4.895629331E1 +1.228388000E3,4.831306026E1 +1.228651000E3,5.150144778E1 +1.228942000E3,5.210555115E1 +1.229190000E3,4.868630793E1 +1.229442000E3,5.072280558E1 +1.229686000E3,5.520857657E1 +1.229933000E3,5.597505745E1 +1.230228000E3,5.309096620E1 +1.230467000E3,5.340491117E1 +1.230765000E3,4.966814228E1 +1.231012000E3,4.811713105E1 +1.231316000E3,5.037869561E1 +1.231666000E3,4.768651081E1 +1.231948000E3,4.577834304E1 +1.232207000E3,4.455407567E1 +1.232510000E3,5.091422235E1 +1.232802000E3,4.990562511E1 +1.233047000E3,5.178152081E1 +1.233344000E3,5.312014577E1 +1.233592000E3,5.002236071E1 +1.233892000E3,5.158473192E1 +1.234173000E3,4.692863129E1 +1.234463000E3,4.643331531E1 +1.234792000E3,4.659156592E1 +1.235060000E3,4.662718910E1 +1.235313000E3,5.204491267E1 +1.235577000E3,5.165973487E1 +1.235837000E3,4.753691687E1 +1.236124000E3,5.179615379E1 +1.236401000E3,4.807409380E1 +1.236654000E3,5.474790946E1 +1.236923000E3,4.946475170E1 +1.237180000E3,4.949471083E1 +1.237426000E3,4.669168363E1 +1.237743000E3,5.529942944E1 +1.238061000E3,5.997488643E1 +1.238363000E3,5.302222406E1 +1.238611000E3,5.022506453E1 +1.238856000E3,4.864145193E1 +1.239102000E3,5.299123845E1 +1.239357000E3,4.682866815E1 +1.239657000E3,4.770894983E1 +1.239902000E3,4.813746372E1 +1.240150000E3,4.571771059E1 +1.240465000E3,5.354012247E1 +1.240765000E3,5.830707734E1 +1.241013000E3,5.483189048E1 +1.241344000E3,5.157405593E1 +1.241606000E3,5.072581437E1 +1.241868000E3,5.137979859E1 +1.242133000E3,4.849261303E1 +1.242396000E3,5.556107710E1 +1.242656000E3,4.958779284E1 +1.242959000E3,5.301548021E1 +1.243232000E3,5.475621292E1 +1.243501000E3,5.660789219E1 +1.243755000E3,5.350018163E1 +1.244010000E3,5.415674835E1 +1.244349000E3,5.699979568E1 +1.244717000E3,5.660044844E1 +1.245015000E3,5.808533709E1 +1.245259000E3,5.881859790E1 +1.245558000E3,5.728882886E1 +1.245808000E3,6.044308225E1 +1.246079000E3,5.893900513E1 +1.246326000E3,5.279872381E1 +1.246637000E3,5.769196864E1 +1.246935000E3,5.963088900E1 +1.247181000E3,5.367341836E1 +1.247508000E3,4.963645506E1 +1.247848000E3,5.265770489E1 +1.248115000E3,5.355743381E1 +1.248359000E3,4.891015342E1 +1.248659000E3,4.819353582E1 +1.248902000E3,4.966403220E1 +1.249199000E3,4.977495696E1 +1.249449000E3,5.715212626E1 +1.249708000E3,5.458337902E1 +1.249983000E3,4.910795823E1 +1.250282000E3,5.184902745E1 +1.250527000E3,5.416053460E1 +1.250777000E3,5.320773170E1 +1.251084000E3,5.422274265E1 +1.251342000E3,5.429456299E1 +1.251602000E3,5.910733722E1 +1.251866000E3,5.226490816E1 +1.252178000E3,5.191466859E1 +1.252452000E3,5.143339371E1 +1.252681000E3,5.066846779E1 +1.252975000E3,4.928639562E1 +1.253256000E3,4.916995298E1 +1.253528000E3,5.115941927E1 +1.253816000E3,4.850268402E1 +1.254063000E3,5.682920937E1 +1.254418000E3,5.583927157E1 +1.254700000E3,5.243405901E1 +1.254947000E3,5.411796563E1 +1.255215000E3,5.538314624E1 +1.255487000E3,5.447026824E1 +1.255748000E3,5.115232974E1 +1.256046000E3,5.273125350E1 +1.256281000E3,5.501639825E1 +1.256559000E3,5.470702619E1 +1.256867000E3,5.330168249E1 +1.257116000E3,5.680033697E1 +1.257361000E3,5.088137081E1 +1.257690000E3,4.771044205E1 +1.257935000E3,5.556188303E1 +1.258189000E3,5.821474305E1 +1.258460000E3,5.913083175E1 +1.258757000E3,5.624840253E1 +1.259001000E3,5.575040009E1 +1.259294000E3,5.295140054E1 +1.259581000E3,5.547885633E1 +1.259831000E3,5.659634167E1 +1.260084000E3,5.552607398E1 +1.260378000E3,5.399987136E1 +1.260676000E3,5.741946227E1 +1.260997000E3,5.622829253E1 +1.261272000E3,5.638519080E1 +1.261569000E3,5.222122782E1 +1.261810000E3,5.168558616E1 +1.262055000E3,5.937417075E1 +1.262351000E3,5.419990938E1 +1.262597000E3,5.469291977E1 +1.262893000E3,5.501007253E1 +1.263142000E3,5.356116387E1 +1.263421000E3,5.643294047E1 +1.263644000E3,5.627927149E1 +1.263964000E3,5.547827797E1 +1.264255000E3,5.434029164E1 +1.264552000E3,5.355134450E1 +1.264791000E3,5.268456483E1 +1.265090000E3,5.304298782E1 +1.265342000E3,5.292557941E1 +1.265637000E3,5.267823535E1 +1.265885000E3,5.076475521E1 +1.266186000E3,5.470463807E1 +1.266480000E3,5.369531663E1 +1.266727000E3,5.321314382E1 +1.267074000E3,5.430022488E1 +1.267386000E3,5.498366079E1 +1.267650000E3,5.373765381E1 +1.267926000E3,5.631680810E1 +1.268156000E3,5.314598601E1 +1.268459000E3,5.446778700E1 +1.268718000E3,5.461487175E1 +1.269029000E3,4.723979401E1 +1.269322000E3,5.050485841E1 +1.269602000E3,5.263446338E1 +1.269914000E3,5.195043172E1 +1.270180000E3,5.361139844E1 +1.270542000E3,5.127785292E1 +1.270796000E3,5.111084292E1 +1.271061000E3,5.030178225E1 +1.271329000E3,4.978955516E1 +1.271616000E3,5.398913319E1 +1.271862000E3,5.537806166E1 +1.272155000E3,5.301545016E1 +1.272407000E3,5.450597504E1 +1.272651000E3,5.090153644E1 +1.272906000E3,5.335437953E1 +1.273148000E3,4.673762491E1 +1.273392000E3,5.062539325E1 +1.273710000E3,5.110756444E1 +1.273960000E3,5.466659884E1 +1.274217000E3,5.158121780E1 +1.274511000E3,5.575560452E1 +1.274759000E3,5.536976579E1 +1.275054000E3,5.425250328E1 +1.275298000E3,5.448034930E1 +1.275544000E3,5.185016662E1 +1.275828000E3,5.206320816E1 +1.276126000E3,5.118466074E1 +1.276376000E3,4.943928704E1 +1.276707000E3,5.090592254E1 +1.276972000E3,5.767487174E1 +1.277251000E3,5.481331862E1 +1.277544000E3,5.385854096E1 +1.277810000E3,5.179333541E1 +1.278097000E3,5.161992279E1 +1.278344000E3,5.248655937E1 +1.278657000E3,5.064236034E1 +1.278927000E3,4.915402835E1 +1.279197000E3,5.321156971E1 +1.279471000E3,5.438812541E1 +1.279734000E3,5.482588411E1 +1.280065000E3,5.157318203E1 +1.280296000E3,5.173449962E1 +1.280546000E3,5.465953878E1 +1.280843000E3,5.457680704E1 +1.281077000E3,5.562152963E1 +1.281325000E3,5.460406982E1 +1.281570000E3,5.232421403E1 +1.281870000E3,5.207576719E1 +1.282135000E3,4.968186040E1 +1.282378000E3,5.237915347E1 +1.282628000E3,4.745539727E1 +1.282877000E3,5.255989147E1 +1.283195000E3,5.301690658E1 +1.283467000E3,5.283539029E1 +1.283717000E3,5.083105477E1 +1.283978000E3,4.559322742E1 +1.284235000E3,4.934435088E1 +1.284538000E3,5.265118466E1 +1.284812000E3,5.302155906E1 +1.285045000E3,5.294725202E1 +1.285352000E3,5.129236762E1 +1.285646000E3,5.402858483E1 +1.285898000E3,5.434527110E1 +1.286189000E3,5.525625388E1 +1.286515000E3,5.653073998E1 +1.286819000E3,5.704731902E1 +1.287101000E3,5.310035962E1 +1.287387000E3,5.474072190E1 +1.287649000E3,5.496979063E1 +1.287925000E3,5.528941101E1 +1.288193000E3,5.394330028E1 +1.288492000E3,4.829171318E1 +1.288740000E3,5.076324605E1 +1.289004000E3,4.673843249E1 +1.289280000E3,5.345749476E1 +1.289584000E3,4.955238815E1 +1.289923000E3,5.268555513E1 +1.290206000E3,5.092762320E1 +1.290445000E3,5.180504716E1 +1.290779000E3,5.421996562E1 +1.291081000E3,5.408565728E1 +1.291322000E3,5.466627749E1 +1.291622000E3,5.247549140E1 +1.291870000E3,5.438915347E1 +1.292125000E3,5.526358440E1 +1.292428000E3,5.407200655E1 +1.292723000E3,5.160593410E1 +1.293035000E3,5.231731426E1 +1.293342000E3,5.126765219E1 +1.293626000E3,4.802016847E1 +1.293922000E3,5.428603515E1 +1.294199000E3,5.305841291E1 +1.294451000E3,5.676250586E1 +1.294738000E3,5.921971496E1 +1.295005000E3,5.812051865E1 +1.295266000E3,5.671365947E1 +1.295512000E3,5.389157640E1 +1.295809000E3,5.417883641E1 +1.296087000E3,5.169085532E1 +1.296408000E3,5.027989141E1 +1.296704000E3,5.801273246E1 +1.296951000E3,5.777618357E1 +1.297241000E3,5.598217178E1 +1.297547000E3,5.590671112E1 +1.297806000E3,6.302454961E1 +1.298073000E3,5.716944646E1 +1.298330000E3,5.693666329E1 +1.298591000E3,5.374930006E1 +1.298851000E3,5.170089530E1 +1.299100000E3,6.243829367E1 +1.299340000E3,5.522680485E1 +1.299673000E3,5.451288060E1 +1.299933000E3,5.720613947E1 +1.300193000E3,5.131457759E1 +1.300510000E3,5.593393786E1 +1.300810000E3,5.344184529E1 +1.301099000E3,5.432320381E1 +1.301355000E3,5.294046944E1 +1.301602000E3,5.330691828E1 +1.301911000E3,4.899471979E1 +1.302175000E3,5.054546621E1 +1.302420000E3,4.914598102E1 +1.302706000E3,5.757950400E1 +1.303045000E3,5.798603958E1 +1.303343000E3,5.685278830E1 +1.303584000E3,5.272645619E1 +1.303869000E3,5.576083132E1 +1.304169000E3,5.311655900E1 +1.304414000E3,5.297304035E1 +1.304724000E3,6.119658997E1 +1.304998000E3,5.921259630E1 +1.305275000E3,5.974785927E1 +1.305567000E3,5.829108198E1 +1.305799000E3,5.656256791E1 +1.306151000E3,5.263150293E1 +1.306475000E3,5.719715846E1 +1.306754000E3,5.746813017E1 +1.307020000E3,6.063794361E1 +1.307320000E3,5.945639283E1 +1.307570000E3,5.898495898E1 +1.307856000E3,5.345744690E1 +1.308127000E3,5.882374416E1 +1.308390000E3,5.704844280E1 +1.308660000E3,6.230218860E1 +1.308982000E3,5.794977886E1 +1.309252000E3,5.609480230E1 +1.309620000E3,5.439173238E1 +1.309924000E3,5.804315704E1 +1.310253000E3,5.898090143E1 +1.310510000E3,5.933785859E1 +1.310826000E3,5.484966867E1 +1.311077000E3,5.841635068E1 +1.311358000E3,5.536029260E1 +1.311601000E3,5.555523834E1 +1.311895000E3,5.637714479E1 +1.312195000E3,5.253312652E1 +1.312445000E3,5.377927694E1 +1.312696000E3,5.757954833E1 +1.313038000E3,5.500733438E1 +1.313282000E3,5.367385274E1 +1.313558000E3,5.610715122E1 +1.313797000E3,5.528556803E1 +1.314063000E3,5.884958532E1 +1.314412000E3,5.458036035E1 +1.314671000E3,5.765344335E1 +1.314945000E3,5.139756723E1 +1.315223000E3,5.546002517E1 +1.315503000E3,5.608276603E1 +1.315733000E3,5.719791479E1 +1.315986000E3,5.413888898E1 +1.316329000E3,5.789500166E1 +1.316579000E3,5.404086097E1 +1.316819000E3,6.021843554E1 +1.317067000E3,5.929690830E1 +1.317365000E3,6.066063258E1 +1.317666000E3,5.465341745E1 +1.317917000E3,5.115712079E1 +1.318169000E3,4.986479689E1 +1.318470000E3,5.351977371E1 +1.318716000E3,5.614277654E1 +1.318987000E3,5.824140620E1 +1.319280000E3,5.863858703E1 +1.319646000E3,5.908977231E1 +1.319902000E3,5.867594430E1 +1.320142000E3,5.256185028E1 +1.320379000E3,5.916248935E1 +1.320672000E3,5.829134786E1 +1.320910000E3,5.729121950E1 +1.321203000E3,5.817253701E1 +1.321434000E3,5.958327052E1 +1.321726000E3,6.109571062E1 +1.321963000E3,6.309400740E1 +1.322263000E3,6.381431561E1 +1.322586000E3,6.124594205E1 +1.322839000E3,6.120886427E1 +1.323128000E3,5.624496406E1 +1.323377000E3,6.205845751E1 +1.323676000E3,6.248705287E1 +1.323968000E3,6.259357777E1 +1.324217000E3,6.168308921E1 +1.324496000E3,6.128297543E1 +1.324731000E3,5.975404370E1 +1.325024000E3,6.147148959E1 +1.325261000E3,6.101142333E1 +1.325573000E3,5.682124874E1 +1.325854000E3,5.869490284E1 +1.326149000E3,5.646663249E1 +1.326392000E3,5.662110608E1 +1.326643000E3,5.067702480E1 +1.326984000E3,5.759763927E1 +1.327264000E3,5.613584630E1 +1.327489000E3,5.826097161E1 +1.327735000E3,5.843702691E1 +1.328012000E3,5.352317094E1 +1.328253000E3,5.737674501E1 +1.328545000E3,5.736811408E1 +1.328911000E3,5.477233671E1 +1.329158000E3,5.481436604E1 +1.329403000E3,4.974322484E1 +1.329645000E3,5.490077996E1 +1.329890000E3,4.870505425E1 +1.330144000E3,4.955972956E1 +1.330428000E3,5.470042727E1 +1.330734000E3,5.618884112E1 +1.331026000E3,5.238151215E1 +1.331265000E3,5.344428978E1 +1.331515000E3,5.051963956E1 +1.331772000E3,5.068574448E1 +1.332120000E3,5.754233113E1 +1.332409000E3,5.498832674E1 +1.332740000E3,5.245036701E1 +1.333034000E3,5.885934606E1 +1.333286000E3,5.644915657E1 +1.333540000E3,5.532779852E1 +1.333784000E3,5.694511409E1 +1.334028000E3,5.553937724E1 +1.334302000E3,5.308286554E1 +1.334615000E3,5.140154995E1 +1.334876000E3,5.045296543E1 +1.335187000E3,5.631993217E1 +1.335451000E3,5.435091016E1 +1.335722000E3,5.624357652E1 +1.335986000E3,5.791043400E1 +1.336271000E3,5.847603086E1 +1.336545000E3,5.757219882E1 +1.336794000E3,6.070042624E1 +1.337072000E3,5.247827017E1 +1.337340000E3,5.208145921E1 +1.337609000E3,6.026756153E1 +1.337870000E3,6.012826199E1 +1.338134000E3,5.465450317E1 +1.338408000E3,5.768658418E1 +1.338755000E3,5.542991210E1 +1.339019000E3,5.279974580E1 +1.339289000E3,4.966927449E1 +1.339556000E3,4.563713389E1 +1.339804000E3,4.961972315E1 +1.340056000E3,5.287436972E1 +1.340316000E3,5.318950925E1 +1.340586000E3,5.037908496E1 +1.340881000E3,5.345184090E1 +1.341116000E3,5.016784238E1 +1.341407000E3,5.799295151E1 +1.341694000E3,5.875659808E1 +1.342051000E3,5.666657228E1 +1.342345000E3,5.241270038E1 +1.342638000E3,5.754780266E1 +1.342875000E3,5.669750570E1 +1.343177000E3,5.541629106E1 +1.343432000E3,5.556249818E1 +1.343726000E3,5.603182587E1 +1.343969000E3,5.961525777E1 +1.344257000E3,5.915223521E1 +1.344498000E3,5.820677933E1 +1.344777000E3,5.815031326E1 +1.345094000E3,5.733094423E1 +1.345363000E3,5.538469317E1 +1.345622000E3,6.270903439E1 +1.345877000E3,5.551461514E1 +1.346148000E3,5.750063996E1 +1.346395000E3,5.473739655E1 +1.346676000E3,5.131350753E1 +1.346958000E3,5.072615719E1 +1.347258000E3,4.882711207E1 +1.347518000E3,5.273988371E1 +1.347784000E3,6.269937361E1 +1.348040000E3,6.058958657E1 +1.348391000E3,5.894445662E1 +1.348716000E3,5.683213923E1 +1.348984000E3,5.875140523E1 +1.349236000E3,5.263650529E1 +1.349491000E3,4.630287352E1 +1.349847000E3,5.742006494E1 +1.350115000E3,6.486179330E1 +1.350358000E3,5.963871460E1 +1.350612000E3,5.220281373E1 +1.350868000E3,5.825229613E1 +1.351125000E3,5.822075100E1 +1.351374000E3,5.487419692E1 +1.351666000E3,5.461361208E1 +1.351934000E3,5.384511910E1 +1.352185000E3,5.782109838E1 +1.352440000E3,5.156901690E1 +1.352688000E3,5.262530942E1 +1.352990000E3,5.827406705E1 +1.353265000E3,6.164230870E1 +1.353493000E3,5.939319367E1 +1.353769000E3,5.491407227E1 +1.353989000E3,5.363390940E1 +1.354236000E3,5.108497673E1 +1.354516000E3,6.129017752E1 +1.354836000E3,5.594784457E1 +1.355095000E3,5.172378417E1 +1.355422000E3,5.975901259E1 +1.355685000E3,5.720857994E1 +1.355941000E3,5.600667557E1 +1.356197000E3,5.471836828E1 +1.356478000E3,5.319452565E1 +1.356745000E3,5.296912594E1 +1.357013000E3,5.811625635E1 +1.357280000E3,5.430511038E1 +1.357577000E3,5.277700001E1 +1.357824000E3,5.616769978E1 +1.358135000E3,5.406396803E1 +1.358401000E3,4.910300122E1 +1.358643000E3,5.077236009E1 +1.358892000E3,5.530877446E1 +1.359206000E3,5.787482939E1 +1.359485000E3,5.846197249E1 +1.359760000E3,6.103303991E1 +1.360055000E3,6.092009186E1 +1.360296000E3,5.979156049E1 +1.360590000E3,6.049263298E1 +1.360828000E3,5.895545308E1 +1.361114000E3,5.611946421E1 +1.361473000E3,5.480295831E1 +1.361726000E3,5.397626184E1 +1.361972000E3,5.443193027E1 +1.362314000E3,5.572591927E1 +1.362560000E3,5.224616115E1 +1.362808000E3,5.244486023E1 +1.363061000E3,5.179430466E1 +1.363307000E3,5.228822629E1 +1.363555000E3,5.248152719E1 +1.363850000E3,5.310816898E1 +1.364115000E3,5.586433987E1 +1.364397000E3,5.735023043E1 +1.364703000E3,6.002405491E1 +1.364950000E3,5.692273216E1 +1.365192000E3,5.941823705E1 +1.365459000E3,5.316793659E1 +1.365709000E3,5.869878442E1 +1.365953000E3,5.756526572E1 +1.366216000E3,5.687574379E1 +1.366491000E3,5.232478004E1 +1.366744000E3,5.424491879E1 +1.367001000E3,5.235481979E1 +1.367305000E3,5.164783122E1 +1.367588000E3,4.924997634E1 +1.367934000E3,4.924339558E1 +1.368196000E3,5.793398832E1 +1.368473000E3,5.529211657E1 +1.368719000E3,5.120874356E1 +1.368963000E3,5.470742612E1 +1.369285000E3,5.560989240E1 +1.369528000E3,5.197646059E1 +1.369822000E3,5.152328490E1 +1.370111000E3,5.791930576E1 +1.370416000E3,5.368811562E1 +1.370672000E3,5.769124019E1 +1.370919000E3,5.333549653E1 +1.371292000E3,5.847056292E1 +1.371551000E3,5.642894477E1 +1.371803000E3,5.817537921E1 +1.372074000E3,5.885584750E1 +1.372335000E3,5.395474736E1 +1.372602000E3,5.211537518E1 +1.372880000E3,4.924374923E1 +1.373126000E3,4.882665291E1 +1.373379000E3,5.483140316E1 +1.373636000E3,5.380197532E1 +1.373915000E3,5.629967483E1 +1.374251000E3,5.773524892E1 +1.374636000E3,6.271253195E1 +1.374894000E3,5.870587143E1 +1.375125000E3,5.496954916E1 +1.375369000E3,5.621931219E1 +1.375641000E3,5.700323462E1 +1.375912000E3,5.808968856E1 +1.376161000E3,5.697587873E1 +1.376437000E3,5.739415600E1 +1.376687000E3,5.874614285E1 +1.376941000E3,5.855325473E1 +1.377252000E3,5.287324040E1 +1.377495000E3,5.331405656E1 +1.377862000E3,5.163612814E1 +1.378109000E3,6.003152631E1 +1.378372000E3,6.448039849E1 +1.378641000E3,6.226927373E1 +1.378912000E3,6.355904277E1 +1.379208000E3,6.121718755E1 +1.379463000E3,6.371699462E1 +1.379738000E3,5.774542440E1 +1.380076000E3,5.579766677E1 +1.380318000E3,5.520595979E1 +1.380614000E3,5.395000262E1 +1.380855000E3,5.263752401E1 +1.381221000E3,5.267030150E1 +1.381492000E3,5.304251562E1 +1.381793000E3,4.959737221E1 +1.382100000E3,5.549829026E1 +1.382347000E3,5.821584994E1 +1.382642000E3,5.861199323E1 +1.382905000E3,5.256382895E1 +1.383164000E3,5.491877459E1 +1.383443000E3,5.644995893E1 +1.383702000E3,5.411249990E1 +1.383954000E3,5.324738213E1 +1.384305000E3,5.625052210E1 +1.384532000E3,6.070474662E1 +1.384789000E3,5.237062704E1 +1.385074000E3,5.442107865E1 +1.385361000E3,6.017483878E1 +1.385605000E3,6.237555822E1 +1.385869000E3,5.605951782E1 +1.386126000E3,6.511151133E1 +1.386382000E3,5.571785683E1 +1.386696000E3,5.398201636E1 +1.386954000E3,5.323734283E1 +1.387264000E3,5.635686029E1 +1.387623000E3,5.701357512E1 +1.387874000E3,5.632095063E1 +1.388187000E3,5.288354031E1 +1.388477000E3,5.152350906E1 +1.388761000E3,5.130627857E1 +1.388982000E3,4.918436870E1 +1.389239000E3,5.567775637E1 +1.389545000E3,5.465238648E1 +1.389786000E3,5.003079725E1 +1.390027000E3,5.504486936E1 +1.390282000E3,5.947272344E1 +1.390539000E3,6.106137952E1 +1.390892000E3,5.985290475E1 +1.391203000E3,5.500825546E1 +1.391507000E3,5.157102239E1 +1.391806000E3,5.517662265E1 +1.392108000E3,5.349243854E1 +1.392411000E3,5.386652866E1 +1.392707000E3,5.258839734E1 +1.392973000E3,5.376638351E1 +1.393221000E3,5.619475880E1 +1.393480000E3,5.846509931E1 +1.393767000E3,6.504346680E1 +1.394122000E3,5.865804348E1 +1.394392000E3,5.055217311E1 +1.394673000E3,4.837306759E1 +1.394931000E3,5.564689750E1 +1.395193000E3,5.416088817E1 +1.395489000E3,5.481584764E1 +1.395781000E3,5.356143065E1 +1.396078000E3,5.074158934E1 +1.396313000E3,5.177896206E1 +1.396618000E3,5.670327312E1 +1.396914000E3,6.043149132E1 +1.397246000E3,5.875453471E1 +1.397559000E3,5.725772305E1 +1.397842000E3,5.610169288E1 +1.398092000E3,6.098127982E1 +1.398354000E3,5.385330985E1 +1.398611000E3,5.345613584E1 +1.398873000E3,6.183897473E1 +1.399135000E3,5.898294985E1 +1.399399000E3,5.644599073E1 +1.399662000E3,6.288338842E1 +1.399923000E3,5.844786233E1 +1.400178000E3,6.145207907E1 +1.400438000E3,5.797678971E1 +1.400786000E3,5.805590691E1 +1.401082000E3,5.956739883E1 +1.401323000E3,5.537900496E1 +1.401618000E3,5.084213917E1 +1.401871000E3,4.807017206E1 +1.402118000E3,5.545233073E1 +1.402411000E3,5.516036366E1 +1.402644000E3,5.413431379E1 +1.402920000E3,5.388857626E1 +1.403209000E3,5.292068844E1 +1.403479000E3,5.775211983E1 +1.403718000E3,5.117484548E1 +1.404045000E3,5.912447648E1 +1.404295000E3,5.591921957E1 +1.404568000E3,5.565028551E1 +1.404828000E3,5.013398992E1 +1.405122000E3,5.465164253E1 +1.405364000E3,5.305211462E1 +1.405620000E3,5.755171154E1 +1.405929000E3,6.007655449E1 +1.406174000E3,5.899920387E1 +1.406463000E3,5.970773629E1 +1.406720000E3,5.770443308E1 +1.407009000E3,5.521297881E1 +1.407407000E3,5.604277064E1 +1.407677000E3,5.646208540E1 +1.407969000E3,4.906112006E1 +1.408239000E3,5.193830101E1 +1.408558000E3,4.835599484E1 +1.408830000E3,4.864558507E1 +1.409087000E3,5.566138381E1 +1.409349000E3,5.240816417E1 +1.409604000E3,4.366169359E1 +1.409843000E3,4.924613485E1 +1.410167000E3,5.289541091E1 +1.410462000E3,5.429333459E1 +1.410857000E3,5.232803186E1 +1.411115000E3,5.279391543E1 +1.411388000E3,5.698112108E1 +1.411689000E3,4.954635028E1 +1.411940000E3,5.347151392E1 +1.412202000E3,5.431542928E1 +1.412461000E3,5.708654506E1 +1.412712000E3,5.999867781E1 +1.412972000E3,5.836713300E1 +1.413243000E3,5.662529411E1 +1.413547000E3,5.760118844E1 +1.413790000E3,5.272334048E1 +1.414155000E3,5.585703000E1 +1.414407000E3,5.277217169E1 +1.414666000E3,5.575617717E1 +1.414970000E3,5.588142009E1 +1.415263000E3,5.043609445E1 +1.415519000E3,5.366091219E1 +1.415818000E3,6.729065738E1 +1.416082000E3,5.454700058E1 +1.416357000E3,5.542836481E1 +1.416608000E3,6.150002805E1 +1.416870000E3,5.918799699E1 +1.417164000E3,5.739551304E1 +1.417548000E3,5.312046747E1 +1.417864000E3,5.735989692E1 +1.418111000E3,5.463708503E1 +1.418368000E3,5.616594485E1 +1.418622000E3,5.674613857E1 +1.418880000E3,5.393284238E1 +1.419178000E3,5.477989298E1 +1.419414000E3,5.673628135E1 +1.419692000E3,5.246670124E1 +1.419935000E3,5.929492524E1 +1.420173000E3,5.718550468E1 +1.420417000E3,5.597503360E1 +1.420745000E3,5.209811810E1 +1.421016000E3,5.108820023E1 +1.421271000E3,5.704928631E1 +1.421524000E3,5.534619134E1 +1.421787000E3,5.298830069E1 +1.422048000E3,5.357926773E1 +1.422324000E3,5.150193558E1 +1.422590000E3,5.236977243E1 +1.422860000E3,5.598534631E1 +1.423111000E3,5.804712890E1 +1.423360000E3,5.584477369E1 +1.423617000E3,6.166819052E1 +1.423956000E3,6.217862533E1 +1.424239000E3,6.474885215E1 +1.424493000E3,6.561094566E1 +1.424771000E3,6.624921272E1 +1.425013000E3,6.269332683E1 +1.425310000E3,6.427501900E1 +1.425550000E3,6.406421996E1 +1.425806000E3,6.561696377E1 +1.426124000E3,5.757984813E1 +1.426392000E3,6.467113265E1 +1.426661000E3,6.110360998E1 +1.426971000E3,6.257935575E1 +1.427325000E3,6.059948571E1 +1.427600000E3,6.060080967E1 +1.427858000E3,6.129065918E1 +1.428157000E3,6.869907238E1 +1.428403000E3,6.216021300E1 +1.428668000E3,6.028715826E1 +1.428917000E3,5.215970407E1 +1.429175000E3,5.348756082E1 +1.429445000E3,5.866879342E1 +1.429775000E3,5.422412762E1 +1.430077000E3,5.967912654E1 +1.430370000E3,6.053958419E1 +1.430696000E3,5.642153628E1 +1.430959000E3,5.797803369E1 +1.431217000E3,5.265853131E1 +1.431545000E3,6.085541328E1 +1.431825000E3,6.579757863E1 +1.432095000E3,6.783858113E1 +1.432356000E3,6.680245969E1 +1.432609000E3,5.699539434E1 +1.432887000E3,5.495476405E1 +1.433146000E3,5.431336982E1 +1.433405000E3,5.468573805E1 +1.433768000E3,6.415525931E1 +1.434037000E3,5.996195649E1 +1.434305000E3,5.880144898E1 +1.434536000E3,5.062803370E1 +1.434794000E3,4.838886892E1 +1.435059000E3,4.852598648E1 +1.435348000E3,5.424758091E1 +1.435611000E3,6.028120001E1 +1.435845000E3,5.860165153E1 +1.436098000E3,5.820116177E1 +1.436348000E3,5.458976108E1 +1.436603000E3,5.748661459E1 +1.436983000E3,5.071157707E1 +1.437230000E3,5.187454119E1 +1.437505000E3,5.690962542E1 +1.437744000E3,5.898297949E1 +1.438006000E3,6.083548120E1 +1.438278000E3,4.929702369E1 +1.438556000E3,5.094464024E1 +1.438857000E3,5.451803318E1 +1.439157000E3,4.851675588E1 +1.439427000E3,4.781325912E1 +1.439724000E3,4.919544886E1 +1.439968000E3,4.662525194E1 +1.440374000E3,4.187537091E1 +1.440620000E3,5.083424523E1 +1.440895000E3,4.476479772E1 +1.441179000E3,5.236126827E1 +1.441495000E3,4.954212438E1 +1.441772000E3,5.444261950E1 +1.442048000E3,5.023278537E1 +1.442273000E3,4.640707667E1 +1.442557000E3,5.088583460E1 +1.442822000E3,5.041471443E1 +1.443067000E3,4.940152653E1 +1.443315000E3,4.834999124E1 +1.443550000E3,5.084173145E1 +1.443802000E3,4.674944421E1 +1.444118000E3,5.005548854E1 +1.444412000E3,4.880222753E1 +1.444695000E3,4.829349493E1 +1.444948000E3,4.815408858E1 +1.445231000E3,4.968297573E1 +1.445471000E3,5.263069989E1 +1.445763000E3,4.570389774E1 +1.446062000E3,4.674284816E1 +1.446364000E3,5.179136771E1 +1.446637000E3,5.007894257E1 +1.446884000E3,5.001285233E1 +1.447102000E3,5.063641057E1 +1.447373000E3,4.164946286E1 +1.447601000E3,3.981108666E1 +1.447894000E3,4.316358072E1 +1.448132000E3,5.465701871E1 +1.448431000E3,4.615144027E1 +1.448672000E3,4.353154230E1 +1.448965000E3,5.208221965E1 +1.449200000E3,5.530439334E1 +1.449496000E3,4.996075498E1 +1.449729000E3,5.218941020E1 +1.450060000E3,4.888890123E1 +1.450335000E3,5.030971329E1 +1.450629000E3,5.012870067E1 +1.450899000E3,4.847297804E1 +1.451151000E3,4.759762696E1 +1.451454000E3,4.978926902E1 +1.451751000E3,4.930919072E1 +1.452001000E3,5.004861581E1 +1.452285000E3,5.051309266E1 +1.452566000E3,4.810890055E1 +1.452826000E3,4.654354865E1 +1.453069000E3,4.761425190E1 +1.453369000E3,4.589508435E1 +1.453616000E3,4.954922405E1 +1.453886000E3,4.065983258E1 +1.454197000E3,4.220647307E1 +1.454513000E3,4.858310714E1 +1.454789000E3,5.196405012E1 +1.455012000E3,5.467685341E1 +1.455262000E3,5.753332593E1 +1.455513000E3,4.707036048E1 +1.455859000E3,3.942826471E1 +1.456237000E3,5.170062203E1 +1.456495000E3,6.022707597E1 +1.456743000E3,5.524301158E1 +1.456990000E3,5.482834451E1 +1.457257000E3,4.917995293E1 +1.457590000E3,4.739340640E1 +1.457831000E3,4.842051754E1 +1.458073000E3,6.166669432E1 +1.458329000E3,5.427876580E1 +1.458617000E3,4.896037674E1 +1.458889000E3,4.346397471E1 +1.459122000E3,4.481546196E1 +1.459424000E3,5.149740630E1 +1.459726000E3,4.614214660E1 +1.459975000E3,4.567227587E1 +1.460237000E3,5.348774305E1 +1.460488000E3,5.617792493E1 +1.460730000E3,5.122937085E1 +1.460971000E3,5.712815616E1 +1.461266000E3,5.592815325E1 +1.461504000E3,5.208026338E1 +1.461798000E3,5.368936290E1 +1.462033000E3,5.424431898E1 +1.462332000E3,5.229538114E1 +1.462686000E3,5.012562607E1 +1.462943000E3,5.517893002E1 +1.463292000E3,5.544440679E1 +1.463574000E3,5.195225561E1 +1.463851000E3,5.582804772E1 +1.464133000E3,5.163717454E1 +1.464392000E3,5.056978371E1 +1.464653000E3,5.085736348E1 +1.464931000E3,5.111025552E1 +1.465171000E3,5.008163028E1 +1.465468000E3,5.204681239E1 +1.465721000E3,4.873162615E1 +1.466070000E3,5.052420662E1 +1.466365000E3,5.115431116E1 +1.466626000E3,5.008089225E1 +1.466902000E3,5.455907242E1 +1.467123000E3,5.881328519E1 +1.467422000E3,5.654049662E1 +1.467665000E3,6.208900398E1 +1.467911000E3,5.573620080E1 +1.468210000E3,5.034178452E1 +1.468461000E3,4.644884091E1 +1.468716000E3,4.489036287E1 +1.469021000E3,4.555962209E1 +1.469437000E3,4.956164087E1 +1.469733000E3,5.014140659E1 +1.469995000E3,5.025508197E1 +1.470298000E3,4.976482928E1 +1.470552000E3,4.666552600E1 +1.470801000E3,5.164800320E1 +1.471107000E3,4.748865751E1 +1.471358000E3,5.068455306E1 +1.471623000E3,5.380657492E1 +1.471874000E3,4.918332364E1 +1.472155000E3,4.974368594E1 +1.472539000E3,5.519550202E1 +1.472795000E3,5.119649457E1 +1.473056000E3,5.406344748E1 +1.473370000E3,5.554928156E1 +1.473655000E3,5.458007948E1 +1.473895000E3,5.519923804E1 +1.474152000E3,5.580016483E1 +1.474437000E3,5.718813696E1 +1.474685000E3,5.734393611E1 +1.474960000E3,5.879862387E1 +1.475221000E3,5.602300215E1 +1.475474000E3,5.025640835E1 +1.475826000E3,5.543439402E1 +1.476071000E3,5.232164352E1 +1.476323000E3,5.898115961E1 +1.476584000E3,6.066467981E1 +1.476821000E3,5.071984472E1 +1.477123000E3,5.740447565E1 +1.477365000E3,5.959782608E1 +1.477662000E3,5.958620190E1 +1.477906000E3,5.753388342E1 +1.478144000E3,5.506848886E1 +1.478455000E3,5.769430513E1 +1.478723000E3,5.629679592E1 +1.478987000E3,5.649495967E1 +1.479262000E3,5.787253729E1 +1.479512000E3,5.216150167E1 +1.479813000E3,4.948302212E1 +1.480088000E3,5.080056078E1 +1.480342000E3,4.734041467E1 +1.480601000E3,4.440736689E1 +1.480866000E3,5.120725270E1 +1.481166000E3,5.053254929E1 +1.481466000E3,5.274685420E1 +1.481724000E3,5.071521067E1 +1.481973000E3,5.225995741E1 +1.482300000E3,5.133897759E1 +1.482575000E3,5.007250383E1 +1.482845000E3,5.042400131E1 +1.483101000E3,5.258901014E1 +1.483408000E3,5.618504625E1 +1.483668000E3,5.503349900E1 +1.483933000E3,4.974702245E1 +1.484194000E3,5.170781389E1 +1.484440000E3,5.072340799E1 +1.484707000E3,5.947536199E1 +1.485018000E3,5.467515596E1 +1.485306000E3,6.085614245E1 +1.485656000E3,5.990152864E1 +1.485935000E3,5.602550586E1 +1.486168000E3,5.561766537E1 +1.486422000E3,5.350876804E1 +1.486701000E3,5.699979875E1 +1.486960000E3,5.177464585E1 +1.487207000E3,5.249766501E1 +1.487486000E3,5.285366750E1 +1.487751000E3,5.316768095E1 +1.488002000E3,4.876639606E1 +1.488262000E3,5.179834313E1 +1.488516000E3,4.991892364E1 +1.488812000E3,5.156353661E1 +1.489125000E3,5.341434219E1 +1.489400000E3,5.426211096E1 +1.489675000E3,4.699672779E1 +1.489958000E3,5.361914521E1 +1.490219000E3,5.605827819E1 +1.490490000E3,5.089547448E1 +1.490772000E3,5.163564337E1 +1.491061000E3,5.841576784E1 +1.491309000E3,5.524417730E1 +1.491589000E3,5.450558122E1 +1.491873000E3,5.581032480E1 +1.492194000E3,5.802352567E1 +1.492448000E3,4.962366630E1 +1.492810000E3,5.873656508E1 +1.493058000E3,5.690804947E1 +1.493359000E3,5.262261274E1 +1.493674000E3,5.584655342E1 +1.493919000E3,5.542283425E1 +1.494163000E3,5.373884310E1 +1.494412000E3,5.084083433E1 +1.494678000E3,4.964027690E1 +1.494956000E3,5.125570040E1 +1.495204000E3,5.194895191E1 +1.495526000E3,4.961412488E1 +1.495784000E3,4.972405818E1 +1.496036000E3,4.777083448E1 +1.496283000E3,5.231556692E1 +1.496593000E3,5.894066851E1 +1.496842000E3,6.007182772E1 +1.497086000E3,6.003234807E1 +1.497358000E3,5.170627362E1 +1.497682000E3,5.564688341E1 +1.497937000E3,5.459086103E1 +1.498234000E3,5.654462748E1 +1.498530000E3,5.643601391E1 +1.498887000E3,5.593732695E1 +1.499182000E3,5.279859883E1 +1.499469000E3,5.063056157E1 +1.499723000E3,4.846330641E1 +1.499972000E3,5.696559719E1 +1.500236000E3,5.806291630E1 +1.500555000E3,5.485435177E1 +1.500851000E3,5.386376671E1 +1.501120000E3,5.529102258E1 +1.501400000E3,5.058415032E1 +1.501675000E3,5.420960743E1 +1.501928000E3,4.962388553E1 +1.502263000E3,5.167692375E1 +1.502567000E3,5.072695334E1 +1.502878000E3,5.319678523E1 +1.503119000E3,5.961199300E1 +1.503369000E3,5.299728366E1 +1.503631000E3,5.369404965E1 +1.503941000E3,5.426817134E1 +1.504209000E3,5.369336762E1 +1.504462000E3,5.246626497E1 +1.504724000E3,5.358557871E1 +1.505015000E3,4.957781391E1 +1.505279000E3,5.117668163E1 +1.505699000E3,5.216401891E1 +1.505963000E3,5.011348657E1 +1.506261000E3,5.259055540E1 +1.506507000E3,4.579432510E1 +1.506795000E3,4.877099475E1 +1.507032000E3,4.679595596E1 +1.507314000E3,5.136222565E1 +1.507549000E3,5.267101191E1 +1.507792000E3,5.244999525E1 +1.508074000E3,5.180561005E1 +1.508391000E3,5.030990700E1 +1.508607000E3,5.167226321E1 +1.508859000E3,5.218207738E1 +1.509151000E3,5.317725961E1 +1.509397000E3,5.318899610E1 +1.509689000E3,4.978257152E1 +1.509934000E3,5.032443800E1 +1.510228000E3,4.777293014E1 +1.510466000E3,4.646316587E1 +1.510767000E3,5.646850943E1 +1.511001000E3,5.638889819E1 +1.511293000E3,5.773758842E1 +1.511610000E3,5.580372922E1 +1.511900000E3,5.517502050E1 +1.512151000E3,5.684013484E1 +1.512393000E3,5.407249321E1 +1.512652000E3,5.725430710E1 +1.512902000E3,5.755876004E1 +1.513148000E3,5.492786930E1 +1.513404000E3,5.665177401E1 +1.513705000E3,5.675683028E1 +1.513957000E3,5.845897420E1 +1.514258000E3,5.334537973E1 +1.514488000E3,5.035361876E1 +1.514812000E3,4.886526824E1 +1.515059000E3,5.555156669E1 +1.515357000E3,5.401240780E1 +1.515600000E3,5.191330713E1 +1.515873000E3,5.158089375E1 +1.516102000E3,5.397456219E1 +1.516410000E3,5.205317520E1 +1.516679000E3,5.689433829E1 +1.516971000E3,5.397466306E1 +1.517230000E3,5.553699481E1 +1.517504000E3,5.550832571E1 +1.517763000E3,5.490604036E1 +1.518130000E3,5.129555301E1 +1.518403000E3,5.478479772E1 +1.518670000E3,5.687403653E1 +1.518921000E3,5.464295853E1 +1.519177000E3,5.713561839E1 +1.519461000E3,5.306473622E1 +1.519745000E3,5.320579073E1 +1.520002000E3,5.309385307E1 +1.520258000E3,5.058967996E1 +1.520552000E3,5.470724085E1 +1.520793000E3,5.303104936E1 +1.521156000E3,5.432496893E1 +1.521453000E3,5.594215604E1 +1.521721000E3,5.308545736E1 +1.521969000E3,5.327888421E1 +1.522220000E3,5.030915333E1 +1.522490000E3,5.230098434E1 +1.522776000E3,4.743827766E1 +1.523026000E3,5.464211349E1 +1.523327000E3,5.322537523E1 +1.523581000E3,5.154569729E1 +1.523826000E3,5.335950152E1 +1.524133000E3,5.482016506E1 +1.524417000E3,5.825411535E1 +1.524853000E3,5.879893849E1 +1.525179000E3,5.728744863E1 +1.525433000E3,5.737571640E1 +1.525696000E3,5.681107869E1 +1.525950000E3,5.695921586E1 +1.526210000E3,5.455429607E1 +1.526487000E3,5.808007225E1 +1.526729000E3,5.500512440E1 +1.527042000E3,5.476260812E1 +1.527339000E3,5.849962899E1 +1.527579000E3,5.719021529E1 +1.527910000E3,5.422226824E1 +1.528160000E3,5.266147572E1 +1.528411000E3,5.030747323E1 +1.528675000E3,5.057502492E1 +1.528920000E3,5.365292462E1 +1.529175000E3,5.444435151E1 +1.529423000E3,5.586906556E1 +1.529732000E3,5.808239082E1 +1.530030000E3,5.492304678E1 +1.530283000E3,5.727734117E1 +1.530542000E3,5.518682809E1 +1.530805000E3,5.838179726E1 +1.531133000E3,5.619103982E1 +1.531448000E3,5.705771680E1 +1.531738000E3,5.605732573E1 +1.531987000E3,5.497746164E1 +1.532293000E3,5.570350387E1 +1.532602000E3,5.687942595E1 +1.532873000E3,5.590365459E1 +1.533132000E3,5.379832162E1 +1.533387000E3,5.951317374E1 +1.533654000E3,5.728034638E1 +1.533915000E3,5.755019099E1 +1.534163000E3,5.625336618E1 +1.534512000E3,5.560455999E1 +1.534783000E3,5.186395468E1 +1.535086000E3,6.018952062E1 +1.535379000E3,5.360739703E1 +1.535619000E3,5.637744941E1 +1.535916000E3,5.710534601E1 +1.536153000E3,5.751101039E1 +1.536449000E3,5.888699469E1 +1.536688000E3,5.900809640E1 +1.536983000E3,5.539354346E1 +1.537218000E3,5.212761926E1 +1.537514000E3,6.113968309E1 +1.537773000E3,5.789795306E1 +1.538038000E3,6.065119472E1 +1.538356000E3,5.715251587E1 +1.538607000E3,5.728294892E1 +1.538911000E3,5.939537878E1 +1.539175000E3,5.879010449E1 +1.539417000E3,6.007594674E1 +1.539661000E3,5.983742076E1 +1.539908000E3,6.299497704E1 +1.540182000E3,6.042347696E1 +1.540457000E3,5.844914903E1 +1.540758000E3,5.775362746E1 +1.541037000E3,5.216165265E1 +1.541334000E3,5.255584969E1 +1.541593000E3,5.278098471E1 +1.541846000E3,5.581770981E1 +1.542092000E3,5.736301867E1 +1.542389000E3,5.733951694E1 +1.542623000E3,5.674705381E1 +1.542880000E3,5.506043774E1 +1.543125000E3,5.404728252E1 +1.543453000E3,5.428884791E1 +1.543732000E3,5.547580162E1 +1.544085000E3,5.471747417E1 +1.544346000E3,5.496243571E1 +1.544613000E3,5.288395526E1 +1.544860000E3,5.036194227E1 +1.545111000E3,5.124283852E1 +1.545413000E3,5.731432515E1 +1.545687000E3,5.663908688E1 +1.545955000E3,5.741659811E1 +1.546253000E3,5.084604561E1 +1.546502000E3,5.163330463E1 +1.546772000E3,4.777378739E1 +1.547025000E3,5.200725426E1 +1.547353000E3,5.049690945E1 +1.547625000E3,5.284766124E1 +1.547924000E3,5.396462244E1 +1.548148000E3,5.375524192E1 +1.548403000E3,5.670544075E1 +1.548716000E3,5.332369727E1 +1.548963000E3,5.544219871E1 +1.549238000E3,5.323430806E1 +1.549471000E3,5.180674965E1 +1.549727000E3,5.329467652E1 +1.550023000E3,5.080742485E1 +1.550310000E3,5.026906170E1 +1.550639000E3,5.582908231E1 +1.550905000E3,5.331150300E1 +1.551172000E3,5.186910180E1 +1.551471000E3,5.624561668E1 +1.551739000E3,5.555744845E1 +1.552012000E3,5.944044312E1 +1.552264000E3,6.002272858E1 +1.552531000E3,5.816546804E1 +1.552850000E3,5.936846960E1 +1.553097000E3,5.514794057E1 +1.553401000E3,5.160130424E1 +1.553757000E3,5.107783990E1 +1.554023000E3,5.871375450E1 +1.554276000E3,5.617325190E1 +1.554544000E3,5.736189521E1 +1.554800000E3,5.317828333E1 +1.555051000E3,5.715279916E1 +1.555321000E3,5.726931658E1 +1.555563000E3,5.567771069E1 +1.555823000E3,5.156101336E1 +1.556126000E3,5.688446569E1 +1.556378000E3,6.074118939E1 +1.556642000E3,5.974958265E1 +1.556918000E3,5.702757711E1 +1.557208000E3,5.874442787E1 +1.557457000E3,5.795683904E1 +1.557722000E3,6.039916355E1 +1.558025000E3,5.662755924E1 +1.558320000E3,5.332514547E1 +1.558595000E3,6.059700286E1 +1.558850000E3,5.775207016E1 +1.559098000E3,6.106988435E1 +1.559349000E3,6.039494527E1 +1.559644000E3,5.672405799E1 +1.559889000E3,5.814375710E1 +1.560135000E3,6.159401746E1 +1.560480000E3,5.397583636E1 +1.560770000E3,5.291692280E1 +1.561026000E3,5.439035965E1 +1.561320000E3,5.553984968E1 +1.561619000E3,5.808332247E1 +1.561927000E3,5.744100555E1 +1.562191000E3,5.636250023E1 +1.562451000E3,6.055150308E1 +1.562703000E3,5.624161562E1 +1.562979000E3,5.401048000E1 +1.563233000E3,5.588901558E1 +1.563595000E3,6.020828902E1 +1.563855000E3,6.586197618E1 +1.564143000E3,5.744692826E1 +1.564421000E3,5.175273280E1 +1.564681000E3,5.584828423E1 +1.564939000E3,5.622472521E1 +1.565190000E3,5.419184381E1 +1.565447000E3,4.818775863E1 +1.565701000E3,5.443344746E1 +1.565956000E3,4.960344337E1 +1.566224000E3,6.289868185E1 +1.566469000E3,6.499026885E1 +1.566794000E3,6.277031329E1 +1.567086000E3,5.336636778E1 +1.567405000E3,5.867761918E1 +1.567644000E3,5.135518394E1 +1.567909000E3,5.665720126E1 +1.568204000E3,5.915910399E1 +1.568455000E3,5.687790668E1 +1.568730000E3,5.815647569E1 +1.568976000E3,5.595761669E1 +1.569238000E3,5.367288589E1 +1.569491000E3,4.954593185E1 +1.569752000E3,5.199120702E1 +1.570099000E3,5.857172858E1 +1.570354000E3,5.533510860E1 +1.570614000E3,5.615291914E1 +1.570871000E3,4.816531300E1 +1.571136000E3,4.597509459E1 +1.571387000E3,5.454256971E1 +1.571722000E3,5.262076426E1 +1.572010000E3,5.108681545E1 +1.572285000E3,5.269091247E1 +1.572547000E3,4.898785412E1 +1.572807000E3,4.867008841E1 +1.573066000E3,5.306545801E1 +1.573313000E3,5.092331160E1 +1.573694000E3,5.549117670E1 +1.574009000E3,5.304099104E1 +1.574279000E3,5.377011563E1 +1.574520000E3,5.244694975E1 +1.574770000E3,5.542353961E1 +1.575031000E3,5.327330735E1 +1.575319000E3,5.123065406E1 +1.575617000E3,5.429517947E1 +1.575867000E3,5.443507599E1 +1.576132000E3,5.273613947E1 +1.576382000E3,5.717979407E1 +1.576705000E3,5.184816589E1 +1.576955000E3,4.851208329E1 +1.577250000E3,4.976440939E1 +1.577493000E3,5.236737582E1 +1.577737000E3,5.414723297E1 +1.577998000E3,5.490706774E1 +1.578342000E3,5.591011545E1 +1.578650000E3,5.689754115E1 +1.578906000E3,5.680987850E1 +1.579148000E3,5.379415708E1 +1.579394000E3,5.844713665E1 +1.579644000E3,4.927798375E1 +1.580006000E3,5.263100090E1 +1.580294000E3,5.410513055E1 +1.580548000E3,5.541047194E1 +1.580801000E3,5.058665778E1 +1.581070000E3,5.191468462E1 +1.581349000E3,4.623838572E1 +1.581601000E3,4.883886927E1 +1.581851000E3,4.951159763E1 +1.582152000E3,5.372806241E1 +1.582461000E3,4.077427406E1 +1.582742000E3,4.089897224E1 +1.582967000E3,4.661834708E1 +1.583330000E3,4.498181641E1 +1.583574000E3,4.413204165E1 +1.583835000E3,4.830731952E1 +1.584102000E3,5.133890730E1 +1.584385000E3,5.327819620E1 +1.584689000E3,5.148788947E1 +1.584935000E3,5.259351261E1 +1.585217000E3,5.210912674E1 +1.585449000E3,5.375523399E1 +1.585710000E3,5.030792675E1 +1.585957000E3,5.116594607E1 +1.586271000E3,5.729332409E1 +1.586601000E3,5.372439258E1 +1.586868000E3,5.283683191E1 +1.587111000E3,5.261490358E1 +1.587371000E3,5.394382083E1 +1.587617000E3,5.362104804E1 +1.587861000E3,5.192909002E1 +1.588111000E3,5.534291684E1 +1.588356000E3,5.529045875E1 +1.588616000E3,5.723903943E1 +1.588878000E3,5.769467674E1 +1.589116000E3,5.686991669E1 +1.589367000E3,5.472851050E1 +1.589709000E3,5.509501284E1 +1.589971000E3,6.218794924E1 +1.590276000E3,5.544714813E1 +1.590522000E3,5.587492513E1 +1.590770000E3,6.310127100E1 +1.591031000E3,6.016601681E1 +1.591331000E3,5.868635044E1 +1.591588000E3,5.739907262E1 +1.591847000E3,5.500154159E1 +1.592105000E3,5.382353142E1 +1.592358000E3,5.235465349E1 +1.592660000E3,5.432444683E1 +1.592979000E3,5.583837344E1 +1.593280000E3,5.890777444E1 +1.593531000E3,6.247008348E1 +1.593777000E3,5.524440051E1 +1.594082000E3,6.039849382E1 +1.594376000E3,5.779880973E1 +1.594616000E3,6.006977904E1 +1.594916000E3,6.157791897E1 +1.595158000E3,5.727348505E1 +1.595456000E3,6.219777130E1 +1.595702000E3,6.333776727E1 +1.596011000E3,6.315243887E1 +1.596287000E3,5.622487117E1 +1.596582000E3,4.999384026E1 +1.596838000E3,6.052096287E1 +1.597136000E3,5.730636753E1 +1.597383000E3,5.672770046E1 +1.597632000E3,5.282894107E1 +1.597943000E3,5.609826115E1 +1.598240000E3,5.950608691E1 +1.598483000E3,5.262580449E1 +1.598777000E3,5.638403375E1 +1.599039000E3,5.695994656E1 +1.599354000E3,5.595638462E1 +1.599677000E3,5.456948793E1 +1.599955000E3,5.641745933E1 +1.600254000E3,5.373490010E1 +1.600541000E3,5.613295480E1 +1.600824000E3,5.295628543E1 +1.601071000E3,5.036371368E1 +1.601313000E3,5.734560753E1 +1.601585000E3,5.869799540E1 +1.601832000E3,5.689867309E1 +1.602079000E3,5.521901034E1 +1.602376000E3,5.958743796E1 +1.602630000E3,5.697555749E1 +1.602881000E3,6.067520996E1 +1.603136000E3,6.296730837E1 +1.603381000E3,6.302345663E1 +1.603674000E3,5.614231839E1 +1.603920000E3,5.471880748E1 +1.604179000E3,6.025548138E1 +1.604432000E3,5.848975602E1 +1.604677000E3,6.051353275E1 +1.604988000E3,6.061163824E1 +1.605287000E3,5.127173554E1 +1.605535000E3,5.271948405E1 +1.605890000E3,5.457177629E1 +1.606143000E3,5.047420148E1 +1.606392000E3,5.197178768E1 +1.606684000E3,5.635777628E1 +1.606927000E3,5.691931577E1 +1.607165000E3,5.135114371E1 +1.607440000E3,5.173034620E1 +1.607734000E3,5.786109434E1 +1.607974000E3,5.620528212E1 +1.608236000E3,5.432552885E1 +1.608507000E3,5.036034087E1 +1.608763000E3,4.872303481E1 +1.609123000E3,5.516764205E1 +1.609377000E3,5.867465981E1 +1.609624000E3,5.634077767E1 +1.609869000E3,5.153316916E1 +1.610150000E3,5.212022412E1 +1.610428000E3,5.727395868E1 +1.610681000E3,5.443759521E1 +1.610944000E3,5.599199613E1 +1.611242000E3,5.709063131E1 +1.611495000E3,5.747461955E1 +1.611762000E3,5.445378087E1 +1.612040000E3,5.178206799E1 +1.612294000E3,5.347146008E1 +1.612548000E3,5.695533984E1 +1.612791000E3,5.852885666E1 +1.613050000E3,5.349710519E1 +1.613354000E3,5.482274130E1 +1.613598000E3,5.580201302E1 +1.613898000E3,5.533013655E1 +1.614151000E3,5.307302798E1 +1.614404000E3,5.034267096E1 +1.614651000E3,5.096368681E1 +1.614959000E3,5.358615730E1 +1.615202000E3,5.402822959E1 +1.615565000E3,5.173226008E1 +1.615815000E3,5.317238447E1 +1.616120000E3,5.490271856E1 +1.616406000E3,5.760350961E1 +1.616712000E3,5.516631401E1 +1.616950000E3,5.344247717E1 +1.617197000E3,5.105574764E1 +1.617480000E3,5.297874749E1 +1.617726000E3,5.181083735E1 +1.617978000E3,5.504462581E1 +1.618236000E3,5.652623382E1 +1.618484000E3,5.850281135E1 +1.618804000E3,5.207268405E1 +1.619061000E3,4.595989093E1 +1.619309000E3,5.832875112E1 +1.619574000E3,5.691639889E1 +1.619831000E3,5.277897330E1 +1.620092000E3,5.634285556E1 +1.620390000E3,5.782897026E1 +1.620660000E3,6.167326244E1 +1.620905000E3,5.736569246E1 +1.621145000E3,6.422841213E1 +1.621400000E3,6.037316593E1 +1.621649000E3,5.869946609E1 +1.622005000E3,6.007663283E1 +1.622308000E3,5.750286676E1 +1.622551000E3,5.315958033E1 +1.622849000E3,5.996646537E1 +1.623085000E3,6.310656156E1 +1.623382000E3,6.410911411E1 +1.623620000E3,6.559322950E1 +1.623914000E3,6.191537215E1 +1.624148000E3,6.509401862E1 +1.624441000E3,6.149444047E1 +1.624676000E3,5.887830140E1 +1.624914000E3,5.333395699E1 +1.625242000E3,5.080509527E1 +1.625531000E3,5.208999136E1 +1.625827000E3,4.936268455E1 +1.626072000E3,4.620940228E1 +1.626384000E3,4.812346411E1 +1.626678000E3,5.508818133E1 +1.626931000E3,5.929414420E1 +1.627193000E3,5.798382987E1 +1.627446000E3,5.695027340E1 +1.627690000E3,6.200547811E1 +1.627940000E3,5.895921781E1 +1.628278000E3,5.832121877E1 +1.628595000E3,5.727506493E1 +1.628914000E3,5.676841787E1 +1.629164000E3,5.904549933E1 +1.629453000E3,6.079247221E1 +1.629705000E3,5.978532207E1 +1.629973000E3,6.204876077E1 +1.630223000E3,6.278691878E1 +1.630527000E3,5.775584326E1 +1.630780000E3,5.715423799E1 +1.631076000E3,5.993810238E1 +1.631416000E3,5.945816984E1 +1.631690000E3,5.911038375E1 +1.631989000E3,6.401318161E1 +1.632251000E3,6.288325429E1 +1.632577000E3,6.142114348E1 +1.632857000E3,6.027735545E1 +1.633125000E3,6.058800698E1 +1.633410000E3,6.197295377E1 +1.633713000E3,5.649410931E1 +1.633983000E3,5.349526422E1 +1.634267000E3,5.160473432E1 +1.634550000E3,5.471426263E1 +1.634881000E3,5.381566790E1 +1.635145000E3,5.592472168E1 +1.635394000E3,5.502963456E1 +1.635636000E3,5.458091777E1 +1.635914000E3,5.361113418E1 +1.636211000E3,5.972112366E1 +1.636510000E3,6.134956919E1 +1.636770000E3,6.291498703E1 +1.637018000E3,6.051799303E1 +1.637272000E3,5.800319143E1 +1.637535000E3,6.099184952E1 +1.637791000E3,6.192072936E1 +1.638191000E3,5.592689657E1 +1.638462000E3,5.015193522E1 +1.638759000E3,5.662906295E1 +1.638997000E3,6.189212385E1 +1.639312000E3,5.656112303E1 +1.639618000E3,5.827187766E1 +1.639922000E3,5.894515280E1 +1.640188000E3,5.379936676E1 +1.640446000E3,5.498271927E1 +1.640705000E3,5.883708769E1 +1.641003000E3,5.515786146E1 +1.641329000E3,5.323855564E1 +1.641593000E3,5.000482182E1 +1.641876000E3,5.182077324E1 +1.642101000E3,5.319082569E1 +1.642344000E3,6.611850928E1 +1.642626000E3,5.190424983E1 +1.642867000E3,5.081734830E1 +1.643118000E3,5.711045841E1 +1.643458000E3,5.520016906E1 +1.643723000E3,5.247062228E1 +1.643997000E3,5.309157546E1 +1.644256000E3,5.339769460E1 +1.644621000E3,5.982216134E1 +1.644883000E3,5.915424673E1 +1.645133000E3,5.849263499E1 +1.645426000E3,5.826666974E1 +1.645723000E3,5.673329902E1 +1.645972000E3,5.580417722E1 +1.646244000E3,5.457004449E1 +1.646473000E3,5.835958867E1 +1.646716000E3,5.599398637E1 +1.646958000E3,5.928075116E1 +1.647232000E3,5.394053714E1 +1.647507000E3,5.853879118E1 +1.647858000E3,5.674494648E1 +1.648113000E3,5.640074652E1 +1.648414000E3,5.694867796E1 +1.648656000E3,5.573466688E1 +1.648962000E3,5.556104957E1 +1.649254000E3,5.770712773E1 +1.649548000E3,5.765349227E1 +1.649790000E3,5.583875333E1 +1.650054000E3,6.321152276E1 +1.650306000E3,5.966047080E1 +1.650600000E3,5.502015578E1 +1.650872000E3,5.066616477E1 +1.651172000E3,5.442335496E1 +1.651440000E3,5.956947456E1 +1.651736000E3,5.798320450E1 +1.651979000E3,5.739040713E1 +1.652228000E3,5.803662120E1 +1.652491000E3,6.146613872E1 +1.652750000E3,5.929116619E1 +1.653021000E3,5.936282359E1 +1.653288000E3,5.853226920E1 +1.653570000E3,5.954415072E1 +1.653872000E3,5.749576278E1 +1.654250000E3,5.567111200E1 +1.654518000E3,6.059415807E1 +1.654812000E3,5.855300274E1 +1.655081000E3,5.797601107E1 +1.655350000E3,6.029475669E1 +1.655647000E3,5.264118678E1 +1.655893000E3,5.715075800E1 +1.656153000E3,5.787679223E1 +1.656407000E3,6.038334743E1 +1.656655000E3,6.038245752E1 +1.656912000E3,5.475945603E1 +1.657171000E3,5.661674174E1 +1.657473000E3,5.618877186E1 +1.657717000E3,5.712918740E1 +1.657972000E3,5.834783502E1 +1.658283000E3,6.198115012E1 +1.658526000E3,5.639977894E1 +1.658788000E3,5.416850689E1 +1.659089000E3,5.679686188E1 +1.659335000E3,5.697270686E1 +1.659619000E3,5.371836804E1 +1.659873000E3,6.082252986E1 +1.660120000E3,6.285201132E1 +1.660416000E3,6.088574857E1 +1.660728000E3,6.109109391E1 +1.661004000E3,5.861240224E1 +1.661283000E3,6.123850168E1 +1.661519000E3,5.849447684E1 +1.661821000E3,5.472352136E1 +1.662065000E3,5.502625911E1 +1.662312000E3,5.606436387E1 +1.662565000E3,5.546236927E1 +1.662845000E3,6.075823181E1 +1.663075000E3,5.951357638E1 +1.663350000E3,5.956681026E1 +1.663575000E3,5.780116333E1 +1.663928000E3,6.184122024E1 +1.664178000E3,5.626291699E1 +1.664419000E3,5.635545931E1 +1.664671000E3,5.487242490E1 +1.664936000E3,5.392872477E1 +1.665237000E3,5.658170902E1 +1.665476000E3,5.449322435E1 +1.665752000E3,5.111063749E1 +1.665997000E3,5.288359358E1 +1.666249000E3,5.825102048E1 +1.666508000E3,6.087585373E1 +1.666750000E3,5.822210598E1 +1.667110000E3,6.320270923E1 +1.667355000E3,5.563170163E1 +1.667628000E3,5.240635194E1 +1.667875000E3,5.485055122E1 +1.668144000E3,5.590209292E1 +1.668402000E3,5.750031923E1 +1.668648000E3,5.301598344E1 +1.668896000E3,5.208077776E1 +1.669157000E3,5.024112467E1 +1.669414000E3,5.530220423E1 +1.669710000E3,5.585178295E1 +1.669955000E3,5.443268015E1 +1.670292000E3,5.292974908E1 +1.670566000E3,5.501741168E1 +1.670818000E3,5.190433464E1 +1.671077000E3,5.602388651E1 +1.671384000E3,5.384205522E1 +1.671688000E3,5.355394771E1 +1.671956000E3,4.896600257E1 +1.672212000E3,4.457728928E1 +1.672483000E3,5.407780485E1 +1.672726000E3,5.808535163E1 +1.672991000E3,5.497589856E1 +1.673269000E3,5.816061182E1 +1.673625000E3,5.457220472E1 +1.673896000E3,5.852786772E1 +1.674165000E3,5.615855966E1 +1.674439000E3,5.901141794E1 +1.674702000E3,5.821771493E1 +1.675040000E3,5.533746886E1 +1.675330000E3,5.469332456E1 +1.675631000E3,5.895976057E1 +1.675867000E3,5.565047570E1 +1.676161000E3,5.342216333E1 +1.676431000E3,5.339304237E1 +1.676716000E3,5.196130631E1 +1.677075000E3,5.500129023E1 +1.677346000E3,5.649474234E1 +1.677614000E3,5.620691351E1 +1.677867000E3,5.756400488E1 +1.678112000E3,5.571225073E1 +1.678362000E3,6.171466353E1 +1.678655000E3,5.523245256E1 +1.678909000E3,5.780473196E1 +1.679167000E3,5.918101801E1 +1.679536000E3,5.449831587E1 +1.679788000E3,5.278747036E1 +1.680072000E3,5.502423006E1 +1.680392000E3,5.603218813E1 +1.680667000E3,5.681691969E1 +1.680917000E3,5.574952817E1 +1.681227000E3,5.747793831E1 +1.681510000E3,5.831554727E1 +1.681811000E3,5.823344802E1 +1.682073000E3,5.677197169E1 +1.682402000E3,5.423243511E1 +1.682746000E3,5.568639423E1 +1.683007000E3,5.601571559E1 +1.683297000E3,5.788588795E1 +1.683563000E3,5.178162942E1 +1.683805000E3,5.244727762E1 +1.684102000E3,5.504021082E1 +1.684342000E3,5.312145782E1 +1.684637000E3,5.266466104E1 +1.684875000E3,5.430143327E1 +1.685171000E3,5.731848010E1 +1.685409000E3,5.314967575E1 +1.685703000E3,5.210480680E1 +1.685940000E3,5.447962472E1 +1.686242000E3,5.671930258E1 +1.686480000E3,5.298653153E1 +1.686837000E3,5.390672385E1 +1.687083000E3,5.256535993E1 +1.687387000E3,5.295433262E1 +1.687686000E3,4.693434793E1 +1.687930000E3,5.264001548E1 +1.688191000E3,4.696703102E1 +1.688514000E3,5.290693761E1 +1.688768000E3,5.572289252E1 +1.689025000E3,5.629476293E1 +1.689331000E3,5.221395629E1 +1.689585000E3,5.553268928E1 +1.689905000E3,5.392885939E1 +1.690136000E3,5.613018872E1 +1.690432000E3,5.323144022E1 +1.690690000E3,5.426457319E1 +1.690988000E3,5.869511223E1 +1.691244000E3,5.724931575E1 +1.691548000E3,5.702890727E1 +1.691819000E3,5.957894946E1 +1.692068000E3,5.833323285E1 +1.692367000E3,5.920896731E1 +1.692598000E3,5.809066040E1 +1.692847000E3,5.683194919E1 +1.693218000E3,5.880411413E1 +1.693536000E3,5.430005356E1 +1.693836000E3,5.347827494E1 +1.694082000E3,5.139526617E1 +1.694323000E3,6.486669482E1 +1.694607000E3,5.827670564E1 +1.694879000E3,5.749070135E1 +1.695112000E3,5.439297467E1 +1.695418000E3,5.591879208E1 +1.695720000E3,5.984156108E1 +1.695978000E3,5.763450389E1 +1.696238000E3,5.535113951E1 +1.696577000E3,5.468640858E1 +1.696840000E3,5.145216534E1 +1.697142000E3,5.633820526E1 +1.697434000E3,5.961813260E1 +1.697672000E3,5.761348305E1 +1.697970000E3,5.587832748E1 +1.698213000E3,5.615239979E1 +1.698514000E3,6.142159571E1 +1.698744000E3,5.868747140E1 +1.699038000E3,5.639074769E1 +1.699277000E3,5.843791784E1 +1.699602000E3,5.580904726E1 +1.699849000E3,5.188032815E1 +1.700148000E3,6.050592844E1 +1.700415000E3,5.851925341E1 +1.700742000E3,5.754370303E1 +1.700996000E3,5.792652906E1 +1.701265000E3,5.809754284E1 +1.701543000E3,5.435013872E1 +1.701827000E3,5.364293620E1 +1.702095000E3,5.742174876E1 +1.702342000E3,5.921232761E1 +1.702597000E3,5.246613397E1 +1.702852000E3,5.865178399E1 +1.703188000E3,6.209648540E1 +1.703456000E3,5.783126524E1 +1.703723000E3,6.129722089E1 +1.704021000E3,6.159059582E1 +1.704258000E3,6.290365934E1 +1.704500000E3,5.899658178E1 +1.704744000E3,5.570772177E1 +1.705020000E3,6.042975914E1 +1.705281000E3,6.063911519E1 +1.705578000E3,5.667741437E1 +1.705818000E3,5.616948640E1 +1.706065000E3,5.809228765E1 +1.706440000E3,6.194892333E1 +1.706707000E3,5.510896653E1 +1.706968000E3,5.648771637E1 +1.707226000E3,5.451026369E1 +1.707530000E3,5.655237570E1 +1.707813000E3,6.342687376E1 +1.708096000E3,5.687609223E1 +1.708345000E3,5.784030597E1 +1.708587000E3,5.696931166E1 +1.708832000E3,5.826055047E1 +1.709133000E3,6.171963981E1 +1.709444000E3,6.289993620E1 +1.709785000E3,6.196750111E1 +1.710095000E3,6.021872673E1 +1.710401000E3,5.493999514E1 +1.710645000E3,5.748920917E1 +1.710951000E3,5.990748875E1 +1.711204000E3,5.995493625E1 +1.711504000E3,5.608393688E1 +1.711807000E3,6.225697969E1 +1.712052000E3,6.005399346E1 +1.712297000E3,6.276583246E1 +1.712594000E3,6.409669700E1 +1.712952000E3,5.846223798E1 +1.713249000E3,6.222377893E1 +1.713511000E3,6.179119431E1 +1.713770000E3,6.687160955E1 +1.714020000E3,6.224215114E1 +1.714281000E3,6.460780580E1 +1.714608000E3,6.323149402E1 +1.714900000E3,5.890183616E1 +1.715139000E3,6.173404899E1 +1.715438000E3,6.193562982E1 +1.715674000E3,6.231645929E1 +1.715912000E3,5.798536661E1 +1.716293000E3,5.569607438E1 +1.716537000E3,6.131866955E1 +1.716790000E3,5.896584959E1 +1.717096000E3,5.693976131E1 +1.717346000E3,5.531403594E1 +1.717631000E3,5.794989861E1 +1.717933000E3,5.594899441E1 +1.718204000E3,5.601359132E1 +1.718501000E3,5.861037671E1 +1.718741000E3,6.432265266E1 +1.719043000E3,6.182586376E1 +1.719355000E3,6.076827417E1 +1.719645000E3,5.634225228E1 +1.719943000E3,5.935070169E1 +1.720188000E3,5.856877062E1 +1.720486000E3,5.761843709E1 +1.720741000E3,5.935030376E1 +1.720985000E3,5.413194972E1 +1.721289000E3,5.939733818E1 +1.721553000E3,5.617827250E1 +1.721847000E3,5.807085988E1 +1.722091000E3,5.877044817E1 +1.722445000E3,6.593854232E1 +1.722681000E3,6.027114564E1 +1.722973000E3,5.866411762E1 +1.723271000E3,5.588604319E1 +1.723508000E3,5.958751798E1 +1.723800000E3,6.077290351E1 +1.724039000E3,5.722905231E1 +1.724338000E3,5.619905124E1 +1.724576000E3,5.628809107E1 +1.724876000E3,5.560357878E1 +1.725168000E3,5.447509555E1 +1.725542000E3,5.278892866E1 +1.725841000E3,4.816211457E1 +1.726139000E3,4.622333411E1 +1.726399000E3,4.728231882E1 +1.726691000E3,5.101510224E1 +1.726947000E3,4.725933617E1 +1.727273000E3,5.333398449E1 +1.727569000E3,5.518583989E1 +1.727808000E3,5.719998093E1 +1.728061000E3,5.375072532E1 +1.728352000E3,5.631849408E1 +1.728644000E3,5.232994659E1 +1.729024000E3,5.045911420E1 +1.729295000E3,4.931808913E1 +1.729541000E3,4.866846016E1 +1.729788000E3,5.127644661E1 +1.730054000E3,4.769951033E1 +1.730296000E3,5.553885299E1 +1.730573000E3,5.629080236E1 +1.730816000E3,5.218818952E1 +1.731119000E3,5.112756333E1 +1.731379000E3,5.524890032E1 +1.731688000E3,5.530134621E1 +1.731949000E3,5.451831728E1 +1.732288000E3,5.380962689E1 +1.732589000E3,5.754684503E1 +1.732833000E3,5.184401682E1 +1.733102000E3,5.011373730E1 +1.733369000E3,5.541779655E1 +1.733647000E3,5.983699601E1 +1.733886000E3,6.131428317E1 +1.734163000E3,6.052345820E1 +1.734405000E3,5.852692054E1 +1.734659000E3,5.861191265E1 +1.734933000E3,5.957936529E1 +1.735219000E3,5.639739849E1 +1.735540000E3,5.207917019E1 +1.735832000E3,4.548490451E1 +1.736112000E3,5.219897691E1 +1.736384000E3,5.618314188E1 +1.736684000E3,5.720418785E1 +1.736946000E3,5.895068629E1 +1.737213000E3,5.652216932E1 +1.737468000E3,5.796687034E1 +1.737738000E3,5.591197017E1 +1.737996000E3,5.493985473E1 +1.738236000E3,5.752137274E1 +1.738586000E3,6.041563952E1 +1.738921000E3,6.199530447E1 +1.739167000E3,5.310800091E1 +1.739430000E3,5.600574849E1 +1.739683000E3,6.494981167E1 +1.739952000E3,6.157046745E1 +1.740293000E3,6.002681302E1 +1.740611000E3,5.943541790E1 +1.740910000E3,5.731619793E1 +1.741197000E3,5.885751119E1 +1.741508000E3,5.719237093E1 +1.741767000E3,5.958897825E1 +1.742034000E3,5.543499582E1 +1.742424000E3,5.632783570E1 +1.742688000E3,5.565042743E1 +1.742946000E3,5.622883854E1 +1.743204000E3,6.327777019E1 +1.743456000E3,5.663098185E1 +1.743721000E3,5.729384715E1 +1.743966000E3,6.200582057E1 +1.744273000E3,5.107652622E1 +1.744505000E3,5.491520459E1 +1.744752000E3,5.181266373E1 +1.745004000E3,5.014115745E1 +1.745297000E3,5.338585031E1 +1.745690000E3,5.654477286E1 +1.745966000E3,5.517036116E1 +1.746219000E3,5.200430375E1 +1.746475000E3,5.963355448E1 +1.746732000E3,5.854837006E1 +1.747002000E3,5.571277949E1 +1.747293000E3,5.825116458E1 +1.747522000E3,5.673248340E1 +1.747772000E3,5.683320783E1 +1.748035000E3,5.224053713E1 +1.748289000E3,5.713452273E1 +1.748568000E3,5.539076360E1 +1.748961000E3,6.015893340E1 +1.749211000E3,5.710921188E1 +1.749460000E3,6.114476082E1 +1.749715000E3,5.648052368E1 +1.749961000E3,5.897720288E1 +1.750207000E3,5.525435431E1 +1.750521000E3,5.447453139E1 +1.750765000E3,5.883968686E1 +1.751015000E3,5.450160052E1 +1.751290000E3,5.405183560E1 +1.751522000E3,5.501343440E1 +1.751848000E3,5.586635599E1 +1.752096000E3,5.631573217E1 +1.752372000E3,5.960964241E1 +1.752637000E3,5.320710483E1 +1.752941000E3,5.848434869E1 +1.753209000E3,5.619196315E1 +1.753510000E3,5.692291103E1 +1.753774000E3,5.505374149E1 +1.754051000E3,5.721759821E1 +1.754315000E3,5.539152446E1 +1.754625000E3,5.632890174E1 +1.754919000E3,5.918851802E1 +1.755262000E3,5.807294381E1 +1.755529000E3,5.748451885E1 +1.755827000E3,6.055251826E1 +1.756067000E3,6.208050524E1 +1.756367000E3,5.991655048E1 +1.756607000E3,6.073519941E1 +1.756900000E3,5.774998130E1 +1.757144000E3,5.751173009E1 +1.757417000E3,5.299288378E1 +1.757700000E3,5.913293772E1 +1.758005000E3,5.732040664E1 +1.758269000E3,6.221202462E1 +1.758585000E3,6.285457626E1 +1.758834000E3,5.870613535E1 +1.759137000E3,5.533279687E1 +1.759391000E3,5.194643865E1 +1.759644000E3,4.891449850E1 +1.759922000E3,4.784429271E1 +1.760236000E3,5.273391136E1 +1.760503000E3,5.475616990E1 +1.760758000E3,5.640096860E1 +1.761017000E3,5.329458627E1 +1.761282000E3,4.798672737E1 +1.761535000E3,5.532988346E1 +1.761794000E3,5.189579265E1 +1.762040000E3,5.068357941E1 +1.762299000E3,5.751972157E1 +1.762578000E3,5.430434207E1 +1.762831000E3,5.331943982E1 +1.763136000E3,5.699367350E1 +1.763409000E3,5.622858108E1 +1.763658000E3,5.631559008E1 +1.763910000E3,5.738562920E1 +1.764157000E3,6.030103345E1 +1.764400000E3,5.680309722E1 +1.764695000E3,5.703631315E1 +1.765017000E3,5.682945247E1 +1.765300000E3,5.317093897E1 +1.765575000E3,5.620624417E1 +1.765832000E3,5.550075987E1 +1.766100000E3,6.321349509E1 +1.766371000E3,5.938123887E1 +1.766635000E3,6.289622107E1 +1.766898000E3,5.890101653E1 +1.767155000E3,5.928826732E1 +1.767399000E3,5.872890625E1 +1.767638000E3,6.184345237E1 +1.767877000E3,6.131073260E1 +1.768211000E3,6.085041665E1 +1.768587000E3,6.015418617E1 +1.768835000E3,5.648473324E1 +1.769119000E3,5.746059957E1 +1.769380000E3,5.608054299E1 +1.769692000E3,6.542458852E1 +1.769998000E3,6.121618195E1 +1.770281000E3,5.842785672E1 +1.770536000E3,5.763776595E1 +1.770858000E3,5.630873419E1 +1.771133000E3,5.339704361E1 +1.771378000E3,5.463873835E1 +1.771723000E3,5.659388596E1 +1.772050000E3,5.449836230E1 +1.772294000E3,5.154616724E1 +1.772537000E3,5.082603581E1 +1.772795000E3,5.334183734E1 +1.773055000E3,5.096094928E1 +1.773365000E3,5.171061147E1 +1.773612000E3,5.477281719E1 +1.773878000E3,5.060909259E1 +1.774171000E3,5.285294921E1 +1.774452000E3,5.393730531E1 +1.774725000E3,5.333400186E1 +1.774980000E3,5.285705613E1 +1.775346000E3,5.719168586E1 +1.775663000E3,5.642193929E1 +1.775908000E3,4.659059970E1 +1.776150000E3,5.521168672E1 +1.776388000E3,5.693500665E1 +1.776630000E3,6.030483668E1 +1.776910000E3,5.944095915E1 +1.777153000E3,5.708951289E1 +1.777414000E3,5.291982189E1 +1.777666000E3,5.900042024E1 +1.777935000E3,6.010949926E1 +1.778229000E3,6.009411695E1 +1.778514000E3,5.804757181E1 +1.778758000E3,5.922775473E1 +1.779011000E3,6.063545461E1 +1.779277000E3,5.950242674E1 +1.779575000E3,6.057891518E1 +1.779819000E3,6.050018223E1 +1.780115000E3,5.965583098E1 +1.780361000E3,5.651792502E1 +1.780660000E3,5.814099422E1 +1.780904000E3,5.340077797E1 +1.781203000E3,5.734973286E1 +1.781481000E3,5.846278011E1 +1.781805000E3,5.369751607E1 +1.782048000E3,5.229063054E1 +1.782299000E3,5.345996994E1 +1.782583000E3,5.724353788E1 +1.782883000E3,5.610772411E1 +1.783181000E3,5.272586700E1 +1.783423000E3,5.272075137E1 +1.783692000E3,5.495532717E1 +1.783945000E3,5.594785882E1 +1.784202000E3,5.914935612E1 +1.784483000E3,6.427791570E1 +1.784735000E3,6.185652247E1 +1.785051000E3,6.178338943E1 +1.785352000E3,6.304285312E1 +1.785598000E3,5.699176354E1 +1.785897000E3,5.705567192E1 +1.786190000E3,5.975757470E1 +1.786467000E3,6.092866408E1 +1.786714000E3,5.771726615E1 +1.786984000E3,5.434727511E1 +1.787232000E3,5.250796794E1 +1.787486000E3,5.668884634E1 +1.787813000E3,5.600600547E1 +1.788061000E3,5.162213387E1 +1.788391000E3,5.782497792E1 +1.788636000E3,5.900804565E1 +1.788935000E3,6.056317474E1 +1.789175000E3,5.749029459E1 +1.789469000E3,6.053654612E1 +1.789714000E3,5.841478287E1 +1.789988000E3,5.700130118E1 +1.790219000E3,5.562837186E1 +1.790509000E3,5.430369658E1 +1.790806000E3,5.586895515E1 +1.791048000E3,5.809725956E1 +1.791409000E3,5.552827992E1 +1.791650000E3,5.534472171E1 +1.791981000E3,5.671474363E1 +1.792227000E3,5.716453332E1 +1.792522000E3,5.844249975E1 +1.792847000E3,5.961186667E1 +1.793109000E3,5.794833541E1 +1.793437000E3,5.832360597E1 +1.793698000E3,5.996001578E1 +1.793970000E3,5.849924827E1 +1.794223000E3,5.823551411E1 +1.794488000E3,5.480450178E1 +1.794819000E3,5.715609034E1 +1.795083000E3,5.418083703E1 +1.795329000E3,5.529883425E1 +1.795587000E3,5.729455769E1 +1.795853000E3,5.358946536E1 +1.796083000E3,5.534684059E1 +1.796374000E3,5.693696454E1 +1.796630000E3,5.642610016E1 +1.796927000E3,5.692548294E1 +1.797194000E3,5.931602223E1 +1.797469000E3,5.877569790E1 +1.797716000E3,5.527135197E1 +1.798053000E3,5.904674814E1 +1.798358000E3,5.655039196E1 +1.798612000E3,5.796779928E1 +1.798921000E3,5.499199210E1 +1.799185000E3,5.693837926E1 +1.799465000E3,6.235855457E1 +1.799695000E3,6.271612813E1 +1.799964000E3,6.118271582E1 +1.800233000E3,6.171552449E1 +1.800562000E3,6.293258336E1 +1.800818000E3,5.927940855E1 +1.801077000E3,5.836879001E1 +1.801406000E3,6.182854437E1 +1.801650000E3,5.918527405E1 +1.801894000E3,6.352260837E1 +1.802163000E3,6.142940723E1 +1.802385000E3,5.867772092E1 +1.802631000E3,5.916688243E1 +1.802927000E3,5.855222781E1 +1.803228000E3,6.125789004E1 +1.803533000E3,5.839377949E1 +1.803816000E3,5.705167204E1 +1.804057000E3,5.641730344E1 +1.804362000E3,6.771092582E1 +1.804585000E3,6.036461449E1 +1.804835000E3,6.742095194E1 +1.805132000E3,6.133151855E1 +1.805443000E3,6.658554202E1 +1.805718000E3,7.095511769E1 +1.806003000E3,7.330553664E1 +1.806290000E3,6.732809523E1 +1.806566000E3,6.106403544E1 +1.806844000E3,5.830930506E1 +1.807085000E3,6.610455401E1 +1.807442000E3,5.944325189E1 +1.807800000E3,5.667454347E1 +1.808044000E3,5.560521877E1 +1.808299000E3,5.488377812E1 +1.808542000E3,5.279721650E1 +1.808789000E3,4.834692654E1 +1.809029000E3,4.661669368E1 +1.809276000E3,5.501186804E1 +1.809526000E3,5.384830085E1 +1.809820000E3,5.526588307E1 +1.810084000E3,5.900458249E1 +1.810393000E3,5.557146256E1 +1.810647000E3,5.355619280E1 +1.811023000E3,5.627924000E1 +1.811283000E3,5.384503050E1 +1.811527000E3,5.309622401E1 +1.811816000E3,5.228523776E1 +1.812070000E3,5.317657142E1 +1.812328000E3,5.813846570E1 +1.812583000E3,5.621088360E1 +1.812927000E3,5.646965227E1 +1.813191000E3,5.322001188E1 +1.813436000E3,5.451886743E1 +1.813748000E3,5.558621720E1 +1.814006000E3,5.673920724E1 +1.814328000E3,5.582855401E1 +1.814591000E3,6.044196407E1 +1.814848000E3,5.769208427E1 +1.815109000E3,6.206015086E1 +1.815391000E3,5.918173335E1 +1.815660000E3,5.779702061E1 +1.815927000E3,6.516398742E1 +1.816218000E3,5.927869783E1 +1.816546000E3,6.320256740E1 +1.816802000E3,6.296743684E1 +1.817051000E3,5.869001212E1 +1.817329000E3,5.985536664E1 +1.817620000E3,5.435607380E1 +1.817905000E3,5.721703373E1 +1.818148000E3,6.314389823E1 +1.818376000E3,6.116752308E1 +1.818622000E3,5.773611736E1 +1.818863000E3,5.892899245E1 +1.819138000E3,5.791411351E1 +1.819457000E3,6.283307798E1 +1.819719000E3,5.805008540E1 +1.819967000E3,6.383011196E1 +1.820266000E3,5.915938870E1 +1.820515000E3,5.795811325E1 +1.820871000E3,5.730398564E1 +1.821113000E3,5.907223014E1 +1.821388000E3,5.566469845E1 +1.821612000E3,5.223652040E1 +1.821858000E3,5.461868826E1 +1.822118000E3,5.731142265E1 +1.822388000E3,5.743609212E1 +1.822672000E3,6.147918645E1 +1.822919000E3,6.109678537E1 +1.823167000E3,5.654516230E1 +1.823464000E3,6.010058675E1 +1.823716000E3,6.101649690E1 +1.824046000E3,5.741898993E1 +1.824372000E3,5.654969113E1 +1.824629000E3,5.489877253E1 +1.824894000E3,6.410593751E1 +1.825142000E3,5.923267903E1 +1.825399000E3,5.977300321E1 +1.825683000E3,5.945891570E1 +1.825907000E3,5.799474745E1 +1.826162000E3,5.485933719E1 +1.826447000E3,5.848818620E1 +1.826697000E3,5.937282663E1 +1.826944000E3,5.473647239E1 +1.827319000E3,5.611635619E1 +1.827649000E3,5.704234375E1 +1.827909000E3,5.174683398E1 +1.828172000E3,5.243070089E1 +1.828457000E3,5.835398328E1 +1.828710000E3,6.579711207E1 +1.828969000E3,6.063158540E1 +1.829218000E3,5.379307224E1 +1.829474000E3,5.791005982E1 +1.829779000E3,5.908028356E1 +1.830025000E3,5.476368407E1 +1.830307000E3,5.608145667E1 +1.830627000E3,5.417323034E1 +1.830843000E3,5.295530865E1 +1.831087000E3,5.335160491E1 +1.831385000E3,5.274441298E1 +1.831622000E3,5.307477504E1 +1.831918000E3,5.606159985E1 +1.832155000E3,6.009472302E1 +1.832471000E3,5.380117674E1 +1.832766000E3,5.382200579E1 +1.833012000E3,5.176006230E1 +1.833256000E3,5.956343573E1 +1.833577000E3,5.545935306E1 +1.833826000E3,5.528541848E1 +1.834083000E3,5.436381252E1 +1.834373000E3,5.684307553E1 +1.834669000E3,5.352399464E1 +1.834910000E3,5.651184236E1 +1.835208000E3,5.432875840E1 +1.835453000E3,5.442576527E1 +1.835752000E3,5.643309342E1 +1.836022000E3,5.781174029E1 +1.836293000E3,6.110602518E1 +1.836557000E3,5.591856301E1 +1.836932000E3,5.423752303E1 +1.837200000E3,5.716598850E1 +1.837455000E3,5.511743414E1 +1.837716000E3,5.819026063E1 +1.837988000E3,5.728773522E1 +1.838236000E3,5.959151016E1 +1.838540000E3,5.810767345E1 +1.838799000E3,5.779128856E1 +1.839096000E3,6.092094761E1 +1.839361000E3,5.957871329E1 +1.839608000E3,5.838702884E1 +1.839856000E3,5.927631822E1 +1.840242000E3,5.748386760E1 +1.840516000E3,5.957609475E1 +1.840759000E3,5.688693666E1 +1.841054000E3,5.883374773E1 +1.841320000E3,5.769470339E1 +1.841597000E3,5.894509733E1 +1.841885000E3,6.032854908E1 +1.842190000E3,5.891601570E1 +1.842444000E3,5.957860612E1 +1.842691000E3,5.968229576E1 +1.842933000E3,5.829247522E1 +1.843258000E3,6.183086549E1 +1.843539000E3,6.077794792E1 +1.843765000E3,5.928253866E1 +1.844002000E3,5.782805396E1 +1.844301000E3,5.975447959E1 +1.844589000E3,6.108169982E1 +1.844825000E3,5.915565503E1 +1.845116000E3,5.981302437E1 +1.845363000E3,6.019248645E1 +1.845636000E3,6.014223773E1 +1.845861000E3,6.160258605E1 +1.846139000E3,6.002388007E1 +1.846447000E3,6.004612452E1 +1.846706000E3,5.932487324E1 +1.846979000E3,5.718424575E1 +1.847284000E3,5.712987240E1 +1.847586000E3,5.557624595E1 +1.847888000E3,5.603981815E1 +1.848146000E3,5.769591687E1 +1.848418000E3,5.526085696E1 +1.848706000E3,5.815102401E1 +1.848972000E3,5.884177354E1 +1.849226000E3,5.853138751E1 +1.849515000E3,6.156208919E1 +1.849746000E3,6.064923427E1 +1.850008000E3,6.590305387E1 +1.850338000E3,5.853444981E1 +1.850640000E3,5.717447935E1 +1.850942000E3,5.680568615E1 +1.851242000E3,5.928468331E1 +1.851504000E3,5.798449444E1 +1.851757000E3,5.802619768E1 +1.852033000E3,5.998338312E1 +1.852296000E3,5.683616594E1 +1.852550000E3,5.692327884E1 +1.852886000E3,5.878610583E1 +1.853162000E3,5.538467470E1 +1.853432000E3,5.437085520E1 +1.853738000E3,5.469765317E1 +1.854038000E3,5.790268038E1 +1.854297000E3,5.836787866E1 +1.854582000E3,6.160807622E1 +1.854881000E3,5.878613196E1 +1.855158000E3,6.200103199E1 +1.855387000E3,6.087479870E1 +1.855688000E3,6.028304140E1 +1.855930000E3,6.159527875E1 +1.856226000E3,6.082174354E1 +1.856487000E3,5.932314061E1 +1.856744000E3,5.976570730E1 +1.857001000E3,5.473753247E1 +1.857299000E3,5.954612483E1 +1.857556000E3,6.052388497E1 +1.857849000E3,5.848282940E1 +1.858086000E3,5.879664566E1 +1.858384000E3,5.864589973E1 +1.858677000E3,5.659242719E1 +1.858917000E3,5.683870091E1 +1.859195000E3,5.582498919E1 +1.859427000E3,6.011873423E1 +1.859676000E3,5.796702396E1 +1.859911000E3,5.928400715E1 +1.860149000E3,5.826876733E1 +1.860396000E3,6.038481253E1 +1.860680000E3,6.030085568E1 +1.860944000E3,5.890166619E1 +1.861209000E3,6.654379171E1 +1.861519000E3,6.016187265E1 +1.861755000E3,6.139297542E1 +1.862049000E3,6.289106669E1 +1.862388000E3,5.872946965E1 +1.862675000E3,5.800836625E1 +1.862993000E3,5.701819685E1 +1.863248000E3,5.488359846E1 +1.863519000E3,5.747446133E1 +1.863768000E3,5.996388232E1 +1.864087000E3,5.686047813E1 +1.864334000E3,5.935760915E1 +1.864635000E3,6.438349972E1 +1.864894000E3,6.008599590E1 +1.865205000E3,5.995474236E1 +1.865502000E3,6.596906108E1 +1.865837000E3,6.091064347E1 +1.866114000E3,5.885056970E1 +1.866411000E3,6.474486832E1 +1.866666000E3,5.888758286E1 +1.866964000E3,6.138447683E1 +1.867211000E3,6.032596684E1 +1.867482000E3,5.848476935E1 +1.867736000E3,5.631330849E1 +1.867989000E3,5.927138373E1 +1.868246000E3,5.817171672E1 +1.868499000E3,5.358065381E1 +1.868763000E3,5.500264039E1 +1.869129000E3,5.663946315E1 +1.869384000E3,5.601392416E1 +1.869636000E3,5.640732154E1 +1.869947000E3,5.320213962E1 +1.870207000E3,4.907811811E1 +1.870470000E3,5.784153600E1 +1.870743000E3,5.988355074E1 +1.871011000E3,5.973830135E1 +1.871253000E3,5.769679044E1 +1.871519000E3,5.395770126E1 +1.871765000E3,5.751088186E1 +1.872011000E3,5.342275719E1 +1.872301000E3,5.638616310E1 +1.872563000E3,5.124369984E1 +1.872821000E3,5.357036185E1 +1.873129000E3,5.529809524E1 +1.873386000E3,5.442720524E1 +1.873650000E3,5.306298792E1 +1.873937000E3,5.703507672E1 +1.874184000E3,5.835246426E1 +1.874444000E3,5.638184247E1 +1.874707000E3,5.201779537E1 +1.874972000E3,5.217149520E1 +1.875244000E3,5.757612416E1 +1.875577000E3,5.387788750E1 +1.875865000E3,5.607108884E1 +1.876149000E3,5.692352283E1 +1.876407000E3,5.577296536E1 +1.876687000E3,5.259836493E1 +1.876982000E3,5.467571766E1 +1.877215000E3,5.256317748E1 +1.877521000E3,5.522593862E1 +1.877775000E3,5.432669245E1 +1.878036000E3,5.734031668E1 +1.878314000E3,6.027566119E1 +1.878587000E3,5.567003578E1 +1.878912000E3,5.307720644E1 +1.879176000E3,5.659939353E1 +1.879425000E3,5.110556861E1 +1.879723000E3,5.673190580E1 +1.879969000E3,5.437112204E1 +1.880274000E3,5.433297742E1 +1.880576000E3,5.585075865E1 +1.880875000E3,5.657006430E1 +1.881117000E3,5.701623858E1 +1.881424000E3,5.749679466E1 +1.881673000E3,5.623079196E1 +1.881986000E3,5.545187468E1 +1.882329000E3,5.781610131E1 +1.882611000E3,5.432916720E1 +1.882882000E3,4.940287270E1 +1.883127000E3,5.866223377E1 +1.883391000E3,5.654564177E1 +1.883644000E3,5.888782218E1 +1.883889000E3,5.586307703E1 +1.884148000E3,5.930725555E1 +1.884413000E3,5.963840788E1 +1.884660000E3,5.928611951E1 +1.884926000E3,5.621968819E1 +1.885181000E3,5.811455305E1 +1.885457000E3,5.585646129E1 +1.885714000E3,5.989591718E1 +1.885968000E3,6.058402104E1 +1.886267000E3,5.972100226E1 +1.886517000E3,6.220704457E1 +1.886832000E3,6.037773435E1 +1.887106000E3,6.039308032E1 +1.887385000E3,6.223647696E1 +1.887617000E3,5.854088114E1 +1.887876000E3,6.248517888E1 +1.888128000E3,6.222318884E1 +1.888437000E3,6.070320114E1 +1.888777000E3,5.817372188E1 +1.889076000E3,5.382250608E1 +1.889369000E3,7.004593531E1 +1.889616000E3,6.094415751E1 +1.889913000E3,5.455584628E1 +1.890163000E3,5.387250795E1 +1.890418000E3,5.219742496E1 +1.890714000E3,5.070715955E1 +1.890961000E3,5.362651533E1 +1.891207000E3,5.046817004E1 +1.891453000E3,5.129339201E1 +1.891764000E3,4.856730286E1 +1.892053000E3,5.220705734E1 +1.892321000E3,5.401068171E1 +1.892582000E3,5.109746146E1 +1.892834000E3,5.412675897E1 +1.893090000E3,5.347014573E1 +1.893340000E3,5.092720593E1 +1.893620000E3,5.341316175E1 +1.893886000E3,4.870918930E1 +1.894142000E3,4.929590175E1 +1.894389000E3,4.686294330E1 +1.894692000E3,5.100486031E1 +1.894995000E3,5.087478993E1 +1.895328000E3,4.940372977E1 +1.895606000E3,5.362468443E1 +1.895919000E3,5.608826750E1 +1.896241000E3,5.628756413E1 +1.896497000E3,5.817843169E1 +1.896749000E3,5.809119715E1 +1.897054000E3,5.469613872E1 +1.897287000E3,5.437807476E1 +1.897582000E3,5.794761863E1 +1.897897000E3,6.027023965E1 +1.898145000E3,5.913564460E1 +1.898511000E3,5.510014788E1 +1.898752000E3,5.499817732E1 +1.898999000E3,5.569220222E1 +1.899294000E3,5.368447548E1 +1.899547000E3,5.912109227E1 +1.899841000E3,6.076259223E1 +1.900104000E3,6.153129043E1 +1.900349000E3,5.679462536E1 +1.900634000E3,5.721135074E1 +1.900927000E3,5.674745728E1 +1.901166000E3,5.556227882E1 +1.901462000E3,4.994603734E1 +1.901841000E3,5.122656475E1 +1.902183000E3,5.127903645E1 +1.902436000E3,5.042064547E1 +1.902695000E3,5.425673681E1 +1.902998000E3,5.484388956E1 +1.903228000E3,5.322356297E1 +1.903483000E3,5.161093724E1 +1.903730000E3,5.302125687E1 +1.904019000E3,5.241958307E1 +1.904307000E3,5.116604316E1 +1.904614000E3,5.319513233E1 +1.904991000E3,5.530482451E1 +1.905243000E3,5.829713614E1 +1.905528000E3,4.891404960E1 +1.905774000E3,5.408250868E1 +1.906083000E3,5.272747143E1 +1.906381000E3,5.216068921E1 +1.906624000E3,5.292203291E1 +1.906885000E3,5.243548019E1 +1.907149000E3,4.981562618E1 +1.907448000E3,5.500279348E1 +1.907742000E3,5.481190601E1 +1.907999000E3,5.369800103E1 +1.908315000E3,6.390197571E1 +1.908579000E3,6.517990141E1 +1.908825000E3,5.822949910E1 +1.909064000E3,5.655728640E1 +1.909356000E3,5.292186662E1 +1.909600000E3,5.069372058E1 +1.909895000E3,5.368100654E1 +1.910138000E3,5.616508462E1 +1.910432000E3,6.285923815E1 +1.910670000E3,6.254266196E1 +1.910979000E3,5.628599605E1 +1.911260000E3,5.616383984E1 +1.911482000E3,5.074231882E1 +1.911728000E3,5.398858859E1 +1.911977000E3,5.585565083E1 +1.912237000E3,5.777112626E1 +1.912532000E3,6.036032129E1 +1.912783000E3,6.077032608E1 +1.913052000E3,5.839282786E1 +1.913316000E3,5.397912726E1 +1.913575000E3,5.582771928E1 +1.913848000E3,5.579334158E1 +1.914143000E3,5.778281485E1 +1.914450000E3,5.783459906E1 +1.914713000E3,6.199387267E1 +1.914943000E3,6.173706737E1 +1.915185000E3,5.621060236E1 +1.915433000E3,5.563784893E1 +1.915692000E3,5.470990272E1 +1.915951000E3,5.469960060E1 +1.916217000E3,6.171536544E1 +1.916470000E3,5.862130066E1 +1.916777000E3,5.839467924E1 +1.917028000E3,5.552209731E1 +1.917324000E3,5.763067987E1 +1.917687000E3,5.981653815E1 +1.917967000E3,5.790518789E1 +1.918210000E3,5.220287871E1 +1.918457000E3,5.707286116E1 +1.918759000E3,5.657529642E1 +1.918997000E3,6.000130629E1 +1.919241000E3,5.708419446E1 +1.919496000E3,5.749223221E1 +1.919768000E3,5.843781753E1 +1.920074000E3,5.671929683E1 +1.920373000E3,5.881070992E1 +1.920621000E3,5.603223824E1 +1.920956000E3,6.053511488E1 +1.921216000E3,5.525745837E1 +1.921476000E3,6.186721324E1 +1.921723000E3,6.214292360E1 +1.922025000E3,5.857206109E1 +1.922320000E3,5.934438900E1 +1.922561000E3,6.077867207E1 +1.922860000E3,5.578255978E1 +1.923099000E3,5.723807446E1 +1.923347000E3,5.785786452E1 +1.923636000E3,6.037753633E1 +1.923892000E3,6.106459696E1 +1.924223000E3,5.873119773E1 +1.924511000E3,5.862235861E1 +1.924814000E3,5.732521131E1 +1.925070000E3,5.161553090E1 +1.925373000E3,5.243351685E1 +1.925626000E3,5.041805469E1 +1.925919000E3,5.543714980E1 +1.926175000E3,5.338657816E1 +1.926425000E3,5.616854022E1 +1.926695000E3,5.699328540E1 +1.926965000E3,5.787312270E1 +1.927305000E3,5.558473925E1 +1.927614000E3,5.927685087E1 +1.927880000E3,6.254706193E1 +1.928125000E3,6.079427969E1 +1.928390000E3,5.412440784E1 +1.928634000E3,5.441834540E1 +1.928928000E3,5.220486428E1 +1.929215000E3,5.210908233E1 +1.929515000E3,5.352367419E1 +1.929766000E3,5.356350702E1 +1.930022000E3,5.184851991E1 +1.930322000E3,5.311742835E1 +1.930607000E3,5.453786592E1 +1.930870000E3,5.814140937E1 +1.931155000E3,5.779656646E1 +1.931440000E3,5.488757891E1 +1.931727000E3,5.385182390E1 +1.931981000E3,5.705491580E1 +1.932229000E3,5.576165296E1 +1.932491000E3,5.781333383E1 +1.932730000E3,5.616780300E1 +1.932971000E3,5.400230043E1 +1.933232000E3,5.518627884E1 +1.933510000E3,5.211300688E1 +1.933795000E3,5.292820587E1 +1.934127000E3,5.382097927E1 +1.934390000E3,6.102840439E1 +1.934671000E3,5.486275546E1 +1.934948000E3,5.206103103E1 +1.935198000E3,5.739150099E1 +1.935506000E3,5.310844778E1 +1.935756000E3,5.392681604E1 +1.936008000E3,5.250003264E1 +1.936256000E3,5.801399662E1 +1.936524000E3,5.696032820E1 +1.936785000E3,5.414492013E1 +1.937032000E3,5.536982174E1 +1.937391000E3,5.750979970E1 +1.937677000E3,5.370086514E1 +1.937972000E3,5.359409099E1 +1.938241000E3,4.663692517E1 +1.938508000E3,4.740501122E1 +1.938772000E3,4.812116539E1 +1.939051000E3,4.940260018E1 +1.939311000E3,5.211533825E1 +1.939553000E3,5.351181789E1 +1.939796000E3,5.597808269E1 +1.940081000E3,5.841474518E1 +1.940347000E3,5.900966915E1 +1.940680000E3,5.844032848E1 +1.940932000E3,6.047778057E1 +1.941187000E3,6.179458512E1 +1.941488000E3,5.569784051E1 +1.941730000E3,5.535681081E1 +1.941971000E3,5.409739450E1 +1.942227000E3,5.551927029E1 +1.942555000E3,5.259381649E1 +1.942855000E3,5.090743186E1 +1.943101000E3,5.330610416E1 +1.943383000E3,5.722147303E1 +1.943610000E3,5.564867598E1 +1.944013000E3,5.456395907E1 +1.944265000E3,5.442943523E1 +1.944557000E3,5.982581487E1 +1.944820000E3,5.751114261E1 +1.945081000E3,5.998630171E1 +1.945333000E3,5.908382499E1 +1.945646000E3,5.828329647E1 +1.945951000E3,5.602282904E1 +1.946199000E3,6.197108249E1 +1.946496000E3,5.533258874E1 +1.946770000E3,5.704060455E1 +1.947126000E3,5.457797110E1 +1.947363000E3,5.430717613E1 +1.947637000E3,5.940687974E1 +1.947953000E3,5.436076271E1 +1.948235000E3,5.660912008E1 +1.948550000E3,5.504399315E1 +1.948861000E3,5.464999644E1 +1.949122000E3,5.565806372E1 +1.949384000E3,5.190569146E1 +1.949646000E3,5.153937000E1 +1.949972000E3,5.628803963E1 +1.950248000E3,5.966716422E1 +1.950577000E3,5.820503815E1 +1.950822000E3,5.652058726E1 +1.951118000E3,5.802645793E1 +1.951349000E3,5.727916959E1 +1.951597000E3,5.784165576E1 +1.951900000E3,5.999225852E1 +1.952197000E3,6.048891831E1 +1.952433000E3,5.821794698E1 +1.952728000E3,5.416701806E1 +1.952964000E3,5.183738883E1 +1.953295000E3,5.384161890E1 +1.953675000E3,5.430376660E1 +1.953907000E3,5.257088063E1 +1.954151000E3,5.392186903E1 +1.954431000E3,6.167467738E1 +1.954678000E3,5.958790115E1 +1.954923000E3,5.822018477E1 +1.955185000E3,5.808448347E1 +1.955447000E3,5.733347749E1 +1.955703000E3,6.261390980E1 +1.956005000E3,5.829281758E1 +1.956246000E3,5.949056653E1 +1.956541000E3,5.839747914E1 +1.956810000E3,5.770882066E1 +1.957120000E3,5.690637302E1 +1.957421000E3,5.796705847E1 +1.957668000E3,5.867770180E1 +1.957936000E3,5.696585443E1 +1.958216000E3,5.738908049E1 +1.958463000E3,5.842272770E1 +1.958721000E3,5.966072568E1 +1.959033000E3,6.340725612E1 +1.959281000E3,6.193544465E1 +1.959566000E3,5.927164536E1 +1.959888000E3,6.146900670E1 +1.960249000E3,6.270186363E1 +1.960512000E3,5.695216686E1 +1.960779000E3,5.725758836E1 +1.961040000E3,5.788439963E1 +1.961303000E3,6.286977927E1 +1.961557000E3,6.361469653E1 +1.961802000E3,6.277422462E1 +1.962060000E3,6.032704022E1 +1.962310000E3,5.600516510E1 +1.962586000E3,6.188879617E1 +1.962805000E3,6.271522018E1 +1.963107000E3,6.025198847E1 +1.963453000E3,6.001529679E1 +1.963728000E3,5.375240125E1 +1.964036000E3,5.055228276E1 +1.964331000E3,5.257092943E1 +1.964568000E3,5.708661900E1 +1.964868000E3,5.629448239E1 +1.965178000E3,5.425890416E1 +1.965431000E3,5.575014937E1 +1.965679000E3,5.801461965E1 +1.965931000E3,5.400244473E1 +1.966191000E3,5.474887871E1 +1.966525000E3,5.196538635E1 +1.966783000E3,5.536524974E1 +1.967040000E3,5.974878933E1 +1.967338000E3,6.200932986E1 +1.967644000E3,6.295299888E1 +1.967909000E3,6.272635154E1 +1.968153000E3,5.902465660E1 +1.968474000E3,5.897159976E1 +1.968773000E3,5.506910037E1 +1.969014000E3,5.622897524E1 +1.969254000E3,5.457019516E1 +1.969505000E3,5.648049168E1 +1.969892000E3,5.656883155E1 +1.970152000E3,5.598423772E1 +1.970446000E3,5.186768597E1 +1.970726000E3,5.526177698E1 +1.971020000E3,5.810907246E1 +1.971304000E3,5.262875480E1 +1.971613000E3,5.141696402E1 +1.971915000E3,5.298264424E1 +1.972196000E3,5.641801556E1 +1.972483000E3,5.228737642E1 +1.972725000E3,5.649656740E1 +1.973036000E3,5.867645632E1 +1.973323000E3,5.679238187E1 +1.973633000E3,5.959682402E1 +1.973935000E3,5.617109756E1 +1.974236000E3,5.473085666E1 +1.974547000E3,5.589564412E1 +1.974836000E3,5.691193712E1 +1.975136000E3,5.808545953E1 +1.975385000E3,5.922478363E1 +1.975631000E3,5.707996013E1 +1.975881000E3,5.820923707E1 +1.976194000E3,5.897957095E1 +1.976453000E3,6.019944728E1 +1.976814000E3,6.472960186E1 +1.977076000E3,6.312075290E1 +1.977356000E3,5.886370461E1 +1.977618000E3,5.750754913E1 +1.977917000E3,5.531180501E1 +1.978189000E3,5.815410032E1 +1.978463000E3,5.735965971E1 +1.978732000E3,5.593071322E1 +1.978999000E3,5.835041964E1 +1.979245000E3,5.646810288E1 +1.979493000E3,5.392299875E1 +1.979902000E3,5.430590311E1 +1.980142000E3,5.447583546E1 +1.980384000E3,5.260389735E1 +1.980632000E3,5.537561423E1 +1.980873000E3,5.836960119E1 +1.981120000E3,5.425821286E1 +1.981389000E3,5.153336720E1 +1.981618000E3,5.420085973E1 +1.981915000E3,5.457985954E1 +1.982165000E3,5.637026749E1 +1.982404000E3,6.009656118E1 +1.982718000E3,5.903298531E1 +1.983029000E3,5.665152425E1 +1.983296000E3,5.778918758E1 +1.983538000E3,5.444374512E1 +1.983786000E3,5.619088618E1 +1.984047000E3,6.088482249E1 +1.984304000E3,5.678390940E1 +1.984575000E3,5.873820942E1 +1.984842000E3,6.004736340E1 +1.985142000E3,6.191465398E1 +1.985405000E3,6.154032648E1 +1.985653000E3,5.967034113E1 +1.985913000E3,5.855925349E1 +1.986211000E3,5.529356341E1 +1.986557000E3,5.823190054E1 +1.986847000E3,5.749679599E1 +1.987098000E3,5.855123449E1 +1.987369000E3,5.999203293E1 +1.987610000E3,6.139424716E1 +1.987876000E3,5.730078222E1 +1.988126000E3,5.649537684E1 +1.988425000E3,5.872458305E1 +1.988727000E3,5.704322852E1 +1.989024000E3,6.264447151E1 +1.989326000E3,5.763604303E1 +1.989641000E3,5.657919006E1 +1.989961000E3,5.706004491E1 +1.990255000E3,6.115159729E1 +1.990571000E3,5.721964371E1 +1.990829000E3,5.780420781E1 +1.991088000E3,5.782228640E1 +1.991353000E3,5.791642518E1 +1.991611000E3,5.820065680E1 +1.991935000E3,5.675756460E1 +1.992174000E3,5.720433643E1 +1.992482000E3,5.907701380E1 +1.992770000E3,5.791335620E1 +1.993107000E3,5.504589678E1 +1.993369000E3,6.117578252E1 +1.993619000E3,5.902046786E1 +1.993912000E3,6.024153080E1 +1.994216000E3,6.061721402E1 +1.994464000E3,6.185610038E1 +1.994715000E3,5.902440055E1 +1.995005000E3,6.112374185E1 +1.995249000E3,5.664710018E1 +1.995551000E3,5.841351492E1 +1.995787000E3,5.961393992E1 +1.996119000E3,5.614463215E1 +1.996387000E3,5.528223904E1 +1.996647000E3,5.706960328E1 +1.996947000E3,5.544195306E1 +1.997203000E3,5.747091679E1 +1.997452000E3,5.434233120E1 +1.997769000E3,5.794847441E1 +1.998019000E3,5.504963001E1 +1.998267000E3,5.470768853E1 +1.998498000E3,6.426300701E1 +1.998789000E3,6.070245213E1 +1.999090000E3,5.893271279E1 +1.999390000E3,5.873668669E1 +1.999698000E3,6.355663744E1 +1.999962000E3,6.500393379E1 +2.000214000E3,6.177640112E1 +2.000471000E3,6.122167361E1 +2.000775000E3,5.982616779E1 +2.001079000E3,5.944943300E1 +2.001339000E3,5.772707313E1 +2.001595000E3,5.934980117E1 +2.001862000E3,6.221301291E1 +2.002160000E3,6.098009785E1 +2.002491000E3,6.205877653E1 +2.002758000E3,5.978743388E1 +2.003062000E3,6.141065367E1 +2.003307000E3,6.146860620E1 +2.003555000E3,6.323368939E1 +2.003884000E3,6.072009355E1 +2.004185000E3,6.072017978E1 +2.004424000E3,6.079512782E1 +2.004673000E3,6.651000141E1 +2.004939000E3,6.185812181E1 +2.005202000E3,5.705353418E1 +2.005472000E3,5.820400818E1 +2.005800000E3,5.682542431E1 +2.006070000E3,6.224932691E1 +2.006350000E3,5.654791681E1 +2.006601000E3,6.160831985E1 +2.006857000E3,6.443497299E1 +2.007101000E3,6.091208862E1 +2.007395000E3,5.867323811E1 +2.007635000E3,5.850229824E1 +2.007945000E3,6.307832054E1 +2.008197000E3,5.931313312E1 +2.008453000E3,5.632990721E1 +2.008711000E3,5.662998085E1 +2.009032000E3,5.416655753E1 +2.009268000E3,6.273936844E1 +2.009521000E3,6.129068926E1 +2.009786000E3,6.485712301E1 +2.010037000E3,6.605690213E1 +2.010298000E3,6.243431425E1 +2.010541000E3,6.062714733E1 +2.010780000E3,6.369220544E1 +2.011082000E3,5.933701247E1 +2.011330000E3,6.141658123E1 +2.011605000E3,6.232326760E1 +2.011893000E3,5.983132844E1 +2.012226000E3,6.085684837E1 +2.012489000E3,5.844434641E1 +2.012752000E3,5.992485437E1 +2.013005000E3,5.745164278E1 +2.013272000E3,5.489362140E1 +2.013573000E3,5.734004331E1 +2.013861000E3,5.569303233E1 +2.014170000E3,5.619919203E1 +2.014467000E3,5.719248521E1 +2.014715000E3,5.898607642E1 +2.015015000E3,5.312334941E1 +2.015258000E3,4.707687024E1 +2.015594000E3,5.326213693E1 +2.015822000E3,4.977107581E1 +2.016071000E3,5.399380901E1 +2.016333000E3,5.528915982E1 +2.016634000E3,5.648344312E1 +2.016879000E3,5.853194276E1 +2.017143000E3,5.969968429E1 +2.017429000E3,6.121498547E1 +2.017723000E3,5.933414775E1 +2.017961000E3,6.375558171E1 +2.018248000E3,6.102538403E1 +2.018558000E3,6.066629858E1 +2.018830000E3,5.238394429E1 +2.019065000E3,5.528030903E1 +2.019316000E3,5.711235169E1 +2.019578000E3,6.069913503E1 +2.019847000E3,5.344730110E1 +2.020093000E3,5.593398360E1 +2.020413000E3,5.112453486E1 +2.020668000E3,5.529600172E1 +2.020922000E3,5.816841553E1 +2.021177000E3,6.105447683E1 +2.021449000E3,5.967528890E1 +2.021707000E3,5.677568689E1 +2.022115000E3,5.613246875E1 +2.022403000E3,5.846674311E1 +2.022679000E3,5.999468936E1 +2.022930000E3,6.268951545E1 +2.023232000E3,6.037378186E1 +2.023532000E3,6.123290650E1 +2.023784000E3,6.425880775E1 +2.024094000E3,6.043334594E1 +2.024356000E3,6.287321918E1 +2.024616000E3,6.178703582E1 +2.024868000E3,5.974424575E1 +2.025152000E3,5.863905018E1 +2.025429000E3,5.669082005E1 +2.025716000E3,6.192616195E1 +2.026008000E3,6.367561928E1 +2.026300000E3,6.061621393E1 +2.026543000E3,6.411900249E1 +2.026802000E3,6.060951858E1 +2.027066000E3,5.606119041E1 +2.027395000E3,5.099901519E1 +2.027693000E3,5.622472082E1 +2.027945000E3,5.354940616E1 +2.028237000E3,6.282566888E1 +2.028553000E3,5.775523802E1 +2.028868000E3,6.095006183E1 +2.029133000E3,6.333727439E1 +2.029399000E3,5.925545982E1 +2.029660000E3,6.045827699E1 +2.029962000E3,5.594587825E1 +2.030223000E3,5.708579081E1 +2.030478000E3,5.777704597E1 +2.030737000E3,5.406349508E1 +2.030990000E3,5.544037764E1 +2.031246000E3,5.912518025E1 +2.031508000E3,5.924806900E1 +2.031864000E3,6.105667153E1 +2.032110000E3,5.838466956E1 +2.032350000E3,5.923100201E1 +2.032598000E3,6.024290558E1 +2.032866000E3,5.971089342E1 +2.033112000E3,5.478665804E1 +2.033351000E3,5.966531235E1 +2.033644000E3,5.755565544E1 +2.033892000E3,5.982004182E1 +2.034190000E3,5.797424789E1 +2.034425000E3,5.856301863E1 +2.034717000E3,6.325478319E1 +2.035053000E3,6.168254294E1 +2.035364000E3,6.188857455E1 +2.035619000E3,6.156039581E1 +2.035901000E3,6.235770270E1 +2.036169000E3,6.262779828E1 +2.036471000E3,6.142542176E1 +2.036764000E3,5.923845966E1 +2.037022000E3,5.827266837E1 +2.037307000E3,6.314641141E1 +2.037615000E3,5.460230698E1 +2.037870000E3,5.396400232E1 +2.038120000E3,5.561122002E1 +2.038463000E3,5.928400391E1 +2.038767000E3,5.668934966E1 +2.039069000E3,5.831653467E1 +2.039316000E3,5.267103167E1 +2.039622000E3,5.557794232E1 +2.039859000E3,5.543606804E1 +2.040196000E3,5.836770370E1 +2.040499000E3,5.678092478E1 +2.040751000E3,5.612506795E1 +2.041024000E3,5.868430679E1 +2.041274000E3,5.264121586E1 +2.041581000E3,5.828774790E1 +2.041841000E3,5.647338053E1 +2.042088000E3,6.053709731E1 +2.042403000E3,5.614689861E1 +2.042691000E3,5.714845923E1 +2.042944000E3,5.256418368E1 +2.043191000E3,5.601486494E1 +2.043466000E3,5.810869150E1 +2.043715000E3,5.529893852E1 +2.043979000E3,5.708153712E1 +2.044245000E3,5.690179830E1 +2.044568000E3,5.994555064E1 +2.044825000E3,6.172126409E1 +2.045096000E3,6.015473895E1 +2.045377000E3,5.509344178E1 +2.045629000E3,5.568915719E1 +2.045902000E3,5.938619751E1 +2.046155000E3,5.534852098E1 +2.046409000E3,5.905391706E1 +2.046693000E3,5.250115201E1 +2.046947000E3,5.587771233E1 +2.047277000E3,5.599930929E1 +2.047517000E3,5.586822515E1 +2.047803000E3,5.740436533E1 +2.048105000E3,5.413600866E1 +2.048476000E3,5.595836709E1 +2.048737000E3,5.982743631E1 +2.048992000E3,6.001131240E1 +2.049305000E3,5.629713962E1 +2.049568000E3,5.505265617E1 +2.049904000E3,5.686004167E1 +2.050199000E3,6.078932545E1 +2.050470000E3,5.919030857E1 +2.050773000E3,5.640754436E1 +2.051052000E3,5.864124078E1 +2.051311000E3,5.683150656E1 +2.051642000E3,5.391893615E1 +2.051926000E3,4.513639699E1 +2.052174000E3,5.750824000E1 +2.052467000E3,5.945309138E1 +2.052703000E3,6.260915402E1 +2.052981000E3,6.017408744E1 +2.053276000E3,6.158293130E1 +2.053516000E3,6.279041899E1 +2.053759000E3,6.005362243E1 +2.054030000E3,5.776050932E1 +2.054357000E3,5.906607942E1 +2.054642000E3,6.002924771E1 +2.054978000E3,5.708591672E1 +2.055267000E3,5.932996992E1 +2.055552000E3,5.830703641E1 +2.055812000E3,5.428102985E1 +2.056063000E3,5.893384546E1 +2.056382000E3,6.028305726E1 +2.056682000E3,5.904357096E1 +2.056923000E3,6.015407432E1 +2.057171000E3,5.801677968E1 +2.057418000E3,6.561794532E1 +2.057665000E3,6.751214025E1 +2.057959000E3,5.899748641E1 +2.058279000E3,5.616162884E1 +2.058571000E3,5.813941707E1 +2.058834000E3,6.236684118E1 +2.059132000E3,6.058455193E1 +2.059376000E3,6.004963560E1 +2.059687000E3,6.255152045E1 +2.059984000E3,6.155697025E1 +2.060225000E3,6.124056229E1 +2.060517000E3,6.072549607E1 +2.060756000E3,6.119225814E1 +2.061060000E3,5.953618039E1 +2.061302000E3,5.869582322E1 +2.061578000E3,6.248269042E1 +2.061841000E3,6.070173510E1 +2.062089000E3,6.023992255E1 +2.062337000E3,5.848175462E1 +2.062607000E3,5.092907116E1 +2.062859000E3,5.442118268E1 +2.063124000E3,5.298599309E1 +2.063425000E3,6.030333428E1 +2.063671000E3,5.835700379E1 +2.063954000E3,5.943633389E1 +2.064268000E3,5.761479859E1 +2.064577000E3,5.520238299E1 +2.064822000E3,5.901822557E1 +2.065074000E3,5.705952734E1 +2.065339000E3,6.136116330E1 +2.065603000E3,5.746483296E1 +2.065865000E3,5.867757380E1 +2.066141000E3,5.709322981E1 +2.066441000E3,5.775131141E1 +2.066691000E3,5.886237327E1 +2.067036000E3,5.617972984E1 +2.067288000E3,5.802507148E1 +2.067560000E3,6.044497816E1 +2.067891000E3,5.450044868E1 +2.068148000E3,5.616761260E1 +2.068412000E3,6.243097888E1 +2.068673000E3,5.783788439E1 +2.068946000E3,5.764761585E1 +2.069196000E3,5.683737954E1 +2.069468000E3,5.609890848E1 +2.069778000E3,5.465619904E1 +2.070034000E3,5.368960846E1 +2.070328000E3,6.032893819E1 +2.070574000E3,5.862927742E1 +2.070842000E3,5.635830209E1 +2.071101000E3,5.822198053E1 +2.071339000E3,5.691346983E1 +2.071597000E3,5.865778618E1 +2.071860000E3,5.810560725E1 +2.072128000E3,5.968009174E1 +2.072425000E3,5.833852533E1 +2.072667000E3,5.784540163E1 +2.072934000E3,5.644439458E1 +2.073184000E3,5.178260396E1 +2.073488000E3,5.751445421E1 +2.073769000E3,5.974800721E1 +2.074068000E3,6.534291023E1 +2.074348000E3,6.371076652E1 +2.074624000E3,6.156132937E1 +2.074877000E3,6.012113548E1 +2.075119000E3,6.026351151E1 +2.075377000E3,6.142675581E1 +2.075661000E3,6.194478144E1 +2.075914000E3,6.183865569E1 +2.076267000E3,6.387512541E1 +2.076547000E3,6.077311287E1 +2.076803000E3,6.130963963E1 +2.077056000E3,5.862622582E1 +2.077295000E3,5.463497219E1 +2.077610000E3,5.484231095E1 +2.077891000E3,6.099801434E1 +2.078171000E3,5.475621164E1 +2.078466000E3,5.955577801E1 +2.078709000E3,5.720097088E1 +2.078954000E3,5.661944912E1 +2.079224000E3,5.443336360E1 +2.079503000E3,5.917559782E1 +2.079800000E3,5.424380486E1 +2.080057000E3,6.013762169E1 +2.080307000E3,6.100643768E1 +2.080558000E3,6.205128007E1 +2.080810000E3,6.007904071E1 +2.081092000E3,6.423414837E1 +2.081354000E3,5.938817614E1 +2.081601000E3,6.006860062E1 +2.081845000E3,5.833570272E1 +2.082143000E3,5.962915676E1 +2.082396000E3,5.844615966E1 +2.082663000E3,5.932060291E1 +2.082921000E3,6.037844323E1 +2.083227000E3,5.719168160E1 +2.083487000E3,5.597578938E1 +2.083743000E3,5.236775830E1 +2.084062000E3,5.471900653E1 +2.084318000E3,5.178371688E1 +2.084618000E3,5.707729304E1 +2.084858000E3,5.526812689E1 +2.085154000E3,5.716405930E1 +2.085391000E3,5.478798233E1 +2.085687000E3,5.496315929E1 +2.085932000E3,5.701239101E1 +2.086228000E3,5.776438308E1 +2.086467000E3,5.628202894E1 +2.086760000E3,5.042244376E1 +2.087015000E3,5.775963511E1 +2.087362000E3,4.982890988E1 +2.087671000E3,4.785672217E1 +2.087922000E3,4.762697394E1 +2.088178000E3,5.046726223E1 +2.088438000E3,4.890262424E1 +2.088711000E3,5.501277631E1 +2.088981000E3,5.666001705E1 +2.089249000E3,6.014252161E1 +2.089513000E3,5.925311989E1 +2.089806000E3,6.173820636E1 +2.090063000E3,5.350884215E1 +2.090366000E3,5.736408779E1 +2.090744000E3,5.450936109E1 +2.091005000E3,5.763377323E1 +2.091253000E3,6.042269191E1 +2.091515000E3,5.484903903E1 +2.091757000E3,5.882101591E1 +2.092028000E3,5.833139845E1 +2.092280000E3,5.703430671E1 +2.092527000E3,5.247783814E1 +2.092809000E3,5.233323676E1 +2.093037000E3,5.202869643E1 +2.093354000E3,5.628845797E1 +2.093634000E3,5.325396544E1 +2.094006000E3,5.654992892E1 +2.094280000E3,5.713253789E1 +2.094541000E3,5.967664240E1 +2.094800000E3,5.750232678E1 +2.095069000E3,5.544480371E1 +2.095333000E3,5.462176641E1 +2.095596000E3,5.811248949E1 +2.095853000E3,6.196847972E1 +2.096192000E3,5.842850461E1 +2.096488000E3,5.597774452E1 +2.096726000E3,5.601282925E1 +2.097104000E3,5.625832805E1 +2.097364000E3,5.315488909E1 +2.097602000E3,5.287250653E1 +2.097844000E3,5.523708836E1 +2.098081000E3,5.724292600E1 +2.098340000E3,5.659511238E1 +2.098670000E3,5.675324149E1 +2.098945000E3,5.485884276E1 +2.099219000E3,5.694143956E1 +2.099469000E3,5.561655413E1 +2.099765000E3,5.844909410E1 +2.100011000E3,6.135621316E1 +2.100343000E3,5.968766012E1 +2.100584000E3,5.173347950E1 +2.100832000E3,5.415548255E1 +2.101090000E3,5.271968845E1 +2.101339000E3,5.007174890E1 +2.101624000E3,5.279525002E1 +2.101895000E3,5.358558767E1 +2.102197000E3,5.559048142E1 +2.102438000E3,5.476305303E1 +2.102705000E3,5.237114911E1 +2.102947000E3,5.014972007E1 +2.103218000E3,4.895902935E1 +2.103469000E3,5.192053997E1 +2.103853000E3,4.647138436E1 +2.104101000E3,4.837766327E1 +2.104448000E3,5.088929287E1 +2.104740000E3,5.561591777E1 +2.104997000E3,5.440319534E1 +2.105260000E3,5.347164399E1 +2.105561000E3,5.151610441E1 +2.105813000E3,5.075382634E1 +2.106121000E3,5.244425755E1 +2.106357000E3,5.269617654E1 +2.106663000E3,5.149027406E1 +2.106954000E3,5.659456733E1 +2.107266000E3,5.282561460E1 +2.107606000E3,5.407918273E1 +2.107883000E3,5.643922092E1 +2.108164000E3,5.169657105E1 +2.108480000E3,5.713744586E1 +2.108748000E3,5.931186178E1 +2.109003000E3,5.645689600E1 +2.109252000E3,5.322874786E1 +2.109552000E3,5.363731782E1 +2.109821000E3,5.353815648E1 +2.110077000E3,5.445551750E1 +2.110418000E3,5.491110228E1 +2.110669000E3,5.291647814E1 +2.110921000E3,5.202914132E1 +2.111180000E3,5.363241827E1 +2.111479000E3,5.566624291E1 +2.111721000E3,5.645238247E1 +2.112027000E3,5.458458697E1 +2.112294000E3,5.469783372E1 +2.112597000E3,5.582449562E1 +2.112854000E3,5.595416398E1 +2.113105000E3,5.113785865E1 +2.113352000E3,6.248282803E1 +2.113711000E3,5.880495226E1 +2.113968000E3,5.941805617E1 +2.114248000E3,5.561632009E1 +2.114507000E3,5.501810850E1 +2.114754000E3,5.936291007E1 +2.115053000E3,6.127733734E1 +2.115321000E3,6.057491273E1 +2.115616000E3,6.127323198E1 +2.115893000E3,5.760488174E1 +2.116193000E3,6.030881831E1 +2.116434000E3,5.967518116E1 +2.116722000E3,5.720938908E1 +2.117066000E3,5.605932878E1 +2.117338000E3,6.068190844E1 +2.117598000E3,5.400374866E1 +2.117892000E3,5.332007667E1 +2.118133000E3,4.991979059E1 +2.118428000E3,5.700198654E1 +2.118666000E3,5.878418983E1 +2.118922000E3,5.703766890E1 +2.119230000E3,5.731012811E1 +2.119515000E3,5.865622099E1 +2.119741000E3,5.772295719E1 +2.120015000E3,5.851982083E1 +2.120322000E3,5.958645129E1 +2.120616000E3,6.233814130E1 +2.120861000E3,6.002711287E1 +2.121162000E3,5.939190004E1 +2.121437000E3,5.758195225E1 +2.121690000E3,5.564648712E1 +2.121946000E3,5.336629511E1 +2.122218000E3,5.199121426E1 +2.122476000E3,5.906368298E1 +2.122759000E3,5.917930836E1 +2.123014000E3,5.824882047E1 +2.123266000E3,5.770359270E1 +2.123492000E3,5.695638802E1 +2.123777000E3,5.720151485E1 +2.124027000E3,6.045411810E1 +2.124327000E3,5.540258870E1 +2.124575000E3,5.828000252E1 +2.124835000E3,5.500577731E1 +2.125106000E3,5.926473821E1 +2.125354000E3,5.472888078E1 +2.125611000E3,5.530970077E1 +2.125862000E3,5.595037084E1 +2.126117000E3,5.439239133E1 +2.126432000E3,5.961943996E1 +2.126692000E3,5.841091801E1 +2.126944000E3,5.863137443E1 +2.127282000E3,5.731398304E1 +2.127577000E3,5.665374527E1 +2.127843000E3,5.476493539E1 +2.128129000E3,5.580929465E1 +2.128437000E3,5.565551021E1 +2.128739000E3,5.869101147E1 +2.129026000E3,5.827114612E1 +2.129307000E3,5.507536074E1 +2.129577000E3,5.532393691E1 +2.129934000E3,5.233850306E1 +2.130215000E3,5.514372423E1 +2.130466000E3,5.757947445E1 +2.130714000E3,6.126034226E1 +2.131015000E3,6.074916673E1 +2.131279000E3,5.864911171E1 +2.131564000E3,5.680524431E1 +2.131825000E3,6.002252741E1 +2.132078000E3,5.953076168E1 +2.132390000E3,6.027427680E1 +2.132647000E3,5.955779136E1 +2.132902000E3,5.835756058E1 +2.133223000E3,6.286787860E1 +2.133471000E3,6.057291506E1 +2.133724000E3,5.893793659E1 +2.134002000E3,5.508555746E1 +2.134257000E3,5.619881839E1 +2.134512000E3,5.505764062E1 +2.134784000E3,5.808922162E1 +2.135054000E3,5.334583096E1 +2.135313000E3,5.298019930E1 +2.135595000E3,5.025342296E1 +2.135812000E3,5.409382682E1 +2.136057000E3,5.580950424E1 +2.136332000E3,5.523743716E1 +2.136661000E3,5.499005541E1 +2.136917000E3,5.745623005E1 +2.137196000E3,5.149169849E1 +2.137449000E3,5.261206885E1 +2.137711000E3,5.487518376E1 +2.138022000E3,5.898871991E1 +2.138270000E3,5.852026830E1 +2.138564000E3,5.868858262E1 +2.138802000E3,5.736353209E1 +2.139066000E3,5.529465652E1 +2.139332000E3,5.762578865E1 +2.139672000E3,5.790185487E1 +2.139930000E3,5.792373283E1 +2.140278000E3,5.597904656E1 +2.140535000E3,5.355980456E1 +2.140856000E3,5.411887429E1 +2.141146000E3,5.094976839E1 +2.141467000E3,5.658279242E1 +2.141735000E3,6.043792292E1 +2.142041000E3,5.996632022E1 +2.142276000E3,6.230155616E1 +2.142526000E3,6.102528468E1 +2.142783000E3,5.770338577E1 +2.143124000E3,5.827243883E1 +2.143406000E3,5.367650147E1 +2.143645000E3,5.777094487E1 +2.143915000E3,5.851595499E1 +2.144175000E3,5.573729509E1 +2.144454000E3,5.467626304E1 +2.144700000E3,5.699765591E1 +2.144968000E3,5.692170932E1 +2.145246000E3,6.030210344E1 +2.145550000E3,5.876913066E1 +2.145797000E3,5.698149837E1 +2.146042000E3,5.982717784E1 +2.146368000E3,5.905293636E1 +2.146676000E3,5.947032966E1 +2.146922000E3,5.910471730E1 +2.147225000E3,6.065874797E1 +2.147524000E3,5.680135408E1 +2.147831000E3,5.451199701E1 +2.148090000E3,5.301325775E1 +2.148365000E3,5.466040661E1 +2.148665000E3,5.658013689E1 +2.148952000E3,5.410667827E1 +2.149249000E3,5.788683658E1 +2.149597000E3,5.873903650E1 +2.149910000E3,5.314379433E1 +2.150150000E3,5.564952940E1 +2.150451000E3,6.000220607E1 +2.150691000E3,6.235870620E1 +2.150965000E3,6.387461990E1 +2.151194000E3,6.491001134E1 +2.151449000E3,5.932544814E1 +2.151756000E3,6.117684525E1 +2.152011000E3,6.059885605E1 +2.152282000E3,6.303246617E1 +2.152596000E3,6.399854390E1 +2.152961000E3,6.063746268E1 +2.153223000E3,6.122116723E1 +2.153495000E3,5.809397592E1 +2.153749000E3,5.903784259E1 +2.153999000E3,6.047826717E1 +2.154283000E3,5.846467986E1 +2.154537000E3,6.226879102E1 +2.154785000E3,5.980611807E1 +2.155079000E3,5.787450321E1 +2.155375000E3,5.676059962E1 +2.155616000E3,5.395823696E1 +2.155912000E3,5.953639288E1 +2.156221000E3,5.971614724E1 +2.156510000E3,6.039969801E1 +2.156758000E3,5.898776738E1 +2.157015000E3,6.100474003E1 +2.157289000E3,5.750129682E1 +2.157591000E3,5.995540643E1 +2.157844000E3,5.628303244E1 +2.158104000E3,5.892686601E1 +2.158366000E3,5.712884748E1 +2.158667000E3,5.727860760E1 +2.158932000E3,5.313556696E1 +2.159288000E3,5.635583768E1 +2.159555000E3,5.929473664E1 +2.159809000E3,5.396180560E1 +2.160112000E3,5.807023999E1 +2.160354000E3,5.639240346E1 +2.160608000E3,5.917728814E1 +2.160855000E3,5.429000157E1 +2.161130000E3,5.397827395E1 +2.161395000E3,5.647751800E1 +2.161656000E3,5.342605760E1 +2.162007000E3,5.324373839E1 +2.162263000E3,5.439383591E1 +2.162517000E3,5.727066505E1 +2.162888000E3,5.995593964E1 +2.163140000E3,6.130649482E1 +2.163392000E3,6.228130821E1 +2.163644000E3,6.279179388E1 +2.163938000E3,5.559527300E1 +2.164178000E3,5.200550071E1 +2.164481000E3,5.797363767E1 +2.164757000E3,5.902554678E1 +2.165040000E3,5.834647622E1 +2.165303000E3,5.713285380E1 +2.165575000E3,6.343633700E1 +2.165850000E3,5.896208706E1 +2.166219000E3,5.624501583E1 +2.166483000E3,5.696603075E1 +2.166769000E3,5.736978604E1 +2.167027000E3,5.837475894E1 +2.167278000E3,5.768129207E1 +2.167593000E3,5.660761865E1 +2.167856000E3,5.680076310E1 +2.168110000E3,5.883044450E1 +2.168385000E3,5.772028600E1 +2.168649000E3,5.342008664E1 +2.168914000E3,5.359113324E1 +2.169168000E3,5.849769703E1 +2.169536000E3,6.267181821E1 +2.169793000E3,5.719603223E1 +2.170040000E3,5.397233107E1 +2.170287000E3,4.861027503E1 +2.170579000E3,5.741564583E1 +2.170822000E3,6.207812430E1 +2.171115000E3,5.827753689E1 +2.171365000E3,6.042202215E1 +2.171629000E3,5.516417228E1 +2.171895000E3,4.912315476E1 +2.172163000E3,4.718316305E1 +2.172446000E3,5.363129541E1 +2.172813000E3,5.322378335E1 +2.173087000E3,5.228499961E1 +2.173349000E3,5.364722432E1 +2.173618000E3,5.964999675E1 +2.173917000E3,6.116591719E1 +2.174174000E3,5.668310324E1 +2.174436000E3,5.538937699E1 +2.174688000E3,5.539330891E1 +2.174944000E3,5.678019084E1 +2.175197000E3,5.655985061E1 +2.175490000E3,6.211643319E1 +2.175751000E3,5.899842059E1 +2.176153000E3,6.042080027E1 +2.176454000E3,5.956376587E1 +2.176730000E3,5.896716838E1 +2.177048000E3,5.729778676E1 +2.177305000E3,5.512323216E1 +2.177616000E3,5.573124529E1 +2.177883000E3,5.390669828E1 +2.178139000E3,5.435017850E1 +2.178403000E3,5.275779180E1 +2.178672000E3,5.469054235E1 +2.178938000E3,5.701832565E1 +2.179201000E3,6.063134316E1 +2.179540000E3,6.461030243E1 +2.179799000E3,6.345934666E1 +2.180043000E3,6.255021373E1 +2.180348000E3,6.265836689E1 +2.180640000E3,6.125083403E1 +2.180878000E3,5.721943432E1 +2.181125000E3,5.584429631E1 +2.181407000E3,5.679219567E1 +2.181647000E3,5.506189996E1 +2.181962000E3,5.950753578E1 +2.182227000E3,5.684863204E1 +2.182499000E3,5.318048388E1 +2.182825000E3,5.856807028E1 +2.183124000E3,6.201159961E1 +2.183360000E3,5.994279105E1 +2.183661000E3,6.155626338E1 +2.183904000E3,5.760612799E1 +2.184197000E3,5.557219911E1 +2.184436000E3,5.720299401E1 +2.184730000E3,5.496492062E1 +2.184965000E3,5.287669523E1 +2.185272000E3,5.534018340E1 +2.185572000E3,5.047897567E1 +2.185897000E3,5.289532450E1 +2.186149000E3,5.169587435E1 +2.186428000E3,5.811856565E1 +2.186722000E3,5.829930976E1 +2.187016000E3,5.767171180E1 +2.187297000E3,5.167293983E1 +2.187542000E3,5.634712904E1 +2.187793000E3,5.452173951E1 +2.188038000E3,5.242356157E1 +2.188332000E3,5.476946331E1 +2.188570000E3,5.506415879E1 +2.188807000E3,5.842757277E1 +2.189123000E3,5.579731569E1 +2.189400000E3,5.735467547E1 +2.189707000E3,5.510643622E1 +2.189947000E3,5.399605596E1 +2.190247000E3,5.231812124E1 +2.190482000E3,5.397423501E1 +2.190722000E3,5.467291530E1 +2.190972000E3,5.750340972E1 +2.191219000E3,5.451621797E1 +2.191527000E3,5.544744059E1 +2.191775000E3,5.570906247E1 +2.192040000E3,5.570238792E1 +2.192395000E3,5.704729905E1 +2.192674000E3,5.662202644E1 +2.192969000E3,6.130245708E1 +2.193206000E3,5.842239411E1 +2.193505000E3,5.813812757E1 +2.193745000E3,5.643123308E1 +2.194038000E3,5.810403241E1 +2.194275000E3,5.863690353E1 +2.194574000E3,5.519980518E1 +2.194810000E3,5.381530940E1 +2.195092000E3,5.781601666E1 +2.195335000E3,5.699265058E1 +2.195608000E3,5.477338243E1 +2.195929000E3,5.695412826E1 +2.196188000E3,5.575935497E1 +2.196439000E3,5.738570553E1 +2.196686000E3,6.194168224E1 +2.196969000E3,5.888525061E1 +2.197270000E3,5.830791470E1 +2.197516000E3,5.904778886E1 +2.197822000E3,5.987539712E1 +2.198117000E3,5.910637217E1 +2.198355000E3,5.676446576E1 +2.198673000E3,5.632729175E1 +2.198920000E3,5.826507178E1 +2.199227000E3,6.221847088E1 +2.199493000E3,6.023584539E1 +2.199739000E3,6.378124478E1 +2.199975000E3,6.457706819E1 +2.200218000E3,5.781084826E1 +2.200471000E3,5.833307765E1 +2.200715000E3,5.849295856E1 +2.200984000E3,5.695016071E1 +2.201255000E3,5.945608920E1 +2.201511000E3,5.923858391E1 +2.201821000E3,5.975381188E1 +2.202050000E3,5.657071344E1 +2.202297000E3,5.582353283E1 +2.202552000E3,5.634201272E1 +2.202803000E3,5.842061156E1 +2.203080000E3,5.511323996E1 +2.203339000E3,5.333816234E1 +2.203589000E3,5.586132206E1 +2.203867000E3,5.612282959E1 +2.204151000E3,5.390907932E1 +2.204405000E3,5.581501331E1 +2.204648000E3,5.691201261E1 +2.204938000E3,5.605209961E1 +2.205271000E3,5.337227455E1 +2.205520000E3,5.726868677E1 +2.205824000E3,5.678400386E1 +2.206068000E3,5.598615724E1 +2.206327000E3,6.245548090E1 +2.206634000E3,5.788335624E1 +2.206927000E3,5.672312442E1 +2.207166000E3,5.700846075E1 +2.207464000E3,5.693157148E1 +2.207703000E3,5.667671942E1 +2.207995000E3,5.655907845E1 +2.208344000E3,5.694003799E1 +2.208592000E3,5.812693102E1 +2.208844000E3,5.305590014E1 +2.209133000E3,5.963333488E1 +2.209376000E3,6.125764761E1 +2.209621000E3,5.708540532E1 +2.209865000E3,5.539532482E1 +2.210177000E3,6.086117928E1 +2.210432000E3,5.871599576E1 +2.210705000E3,5.720891289E1 +2.210929000E3,5.859137268E1 +2.211185000E3,5.492761595E1 +2.211566000E3,5.458369125E1 +2.211811000E3,5.704243717E1 +2.212094000E3,5.948204172E1 +2.212325000E3,5.442994388E1 +2.212570000E3,5.607391365E1 +2.212815000E3,5.349643391E1 +2.213089000E3,5.518134225E1 +2.213397000E3,5.879499176E1 +2.213659000E3,5.918920409E1 +2.213917000E3,6.317166487E1 +2.214205000E3,5.773325998E1 +2.214505000E3,6.021667659E1 +2.214834000E3,5.707564648E1 +2.215074000E3,5.411436798E1 +2.215412000E3,5.705541238E1 +2.215699000E3,6.721672427E1 +2.215946000E3,6.130402498E1 +2.216241000E3,5.914242022E1 +2.216493000E3,5.881747375E1 +2.216786000E3,5.920115687E1 +2.217030000E3,5.981753209E1 +2.217325000E3,5.379848698E1 +2.217566000E3,5.498057230E1 +2.217931000E3,5.647867672E1 +2.218210000E3,5.460935805E1 +2.218440000E3,5.579228446E1 +2.218740000E3,5.598523495E1 +2.218992000E3,5.501198671E1 +2.219248000E3,5.270876730E1 +2.219495000E3,5.711255338E1 +2.219767000E3,5.276578476E1 +2.220009000E3,6.171644376E1 +2.220307000E3,5.760035427E1 +2.220557000E3,6.039071701E1 +2.220820000E3,5.947563028E1 +2.221166000E3,5.781157464E1 +2.221459000E3,5.689764898E1 +2.221740000E3,5.361204154E1 +2.221998000E3,5.565584232E1 +2.222252000E3,6.236264054E1 +2.222508000E3,5.583706888E1 +2.222794000E3,5.998886151E1 +2.223038000E3,6.067027795E1 +2.223281000E3,5.953550256E1 +2.223512000E3,6.087865846E1 +2.223764000E3,5.880177247E1 +2.224056000E3,5.532032645E1 +2.224389000E3,5.110554887E1 +2.224697000E3,6.082114583E1 +2.224957000E3,6.332269799E1 +2.225225000E3,5.859152014E1 +2.225521000E3,6.312344162E1 +2.225760000E3,6.208500503E1 +2.226003000E3,6.030377984E1 +2.226280000E3,5.890306026E1 +2.226553000E3,6.412257006E1 +2.226813000E3,5.959239884E1 +2.227137000E3,5.603893495E1 +2.227460000E3,5.807576772E1 +2.227717000E3,6.034272760E1 +2.227950000E3,5.678924442E1 +2.228211000E3,5.767938832E1 +2.228489000E3,4.973605337E1 +2.228742000E3,5.227056153E1 +2.229007000E3,4.524576382E1 +2.229320000E3,5.163901012E1 +2.229633000E3,5.791269320E1 +2.229909000E3,5.832692980E1 +2.230223000E3,5.512940778E1 +2.230487000E3,5.639998631E1 +2.230845000E3,6.012111222E1 +2.231113000E3,6.632176219E1 +2.231407000E3,6.692769565E1 +2.231662000E3,6.409372191E1 +2.231945000E3,6.268702605E1 +2.232208000E3,6.192012265E1 +2.232460000E3,5.923306273E1 +2.232717000E3,5.726340446E1 +2.233005000E3,5.708270925E1 +2.233256000E3,6.172203942E1 +2.233510000E3,6.197059155E1 +2.233807000E3,6.691458644E1 +2.234160000E3,6.165007134E1 +2.234422000E3,6.172053486E1 +2.234714000E3,6.148833899E1 +2.234974000E3,6.190331921E1 +2.235253000E3,5.938090919E1 +2.235479000E3,6.223060920E1 +2.235722000E3,6.133640397E1 +2.236028000E3,6.400294095E1 +2.236269000E3,6.581462957E1 +2.236516000E3,6.094953675E1 +2.236828000E3,5.792232456E1 +2.237124000E3,5.750665846E1 +2.237367000E3,5.360734442E1 +2.237668000E3,5.239836763E1 +2.237914000E3,5.189659577E1 +2.238168000E3,5.779541581E1 +2.238431000E3,5.409030702E1 +2.238689000E3,5.064192938E1 +2.238941000E3,4.890244292E1 +2.239235000E3,4.958738332E1 +2.239486000E3,5.093509792E1 +2.239725000E3,5.421091975E1 +2.239970000E3,6.074883769E1 +2.240298000E3,5.611992467E1 +2.240604000E3,4.988071111E1 +2.240900000E3,4.952063126E1 +2.241187000E3,5.282005772E1 +2.241428000E3,5.672648648E1 +2.241685000E3,5.807464117E1 +2.241973000E3,5.565097745E1 +2.242224000E3,5.410363002E1 +2.242475000E3,5.548804216E1 +2.242720000E3,5.862108370E1 +2.242959000E3,5.101243713E1 +2.243259000E3,5.340920814E1 +2.243564000E3,5.471013043E1 +2.243801000E3,5.474536753E1 +2.244062000E3,5.454012147E1 +2.244333000E3,5.594751460E1 +2.244637000E3,5.486159050E1 +2.244913000E3,5.317501502E1 +2.245138000E3,5.100209753E1 +2.245397000E3,5.436827206E1 +2.245643000E3,5.483479867E1 +2.245916000E3,5.150486026E1 +2.246182000E3,5.049924887E1 +2.246449000E3,5.226067252E1 +2.246744000E3,5.389432372E1 +2.247057000E3,6.032791953E1 +2.247330000E3,5.966662928E1 +2.247666000E3,5.824962285E1 +2.247962000E3,5.700720490E1 +2.248202000E3,6.373200887E1 +2.248495000E3,6.648419927E1 +2.248743000E3,5.542652488E1 +2.249036000E3,5.256926371E1 +2.249272000E3,6.053195001E1 +2.249564000E3,4.959074314E1 +2.249800000E3,5.054384460E1 +2.250136000E3,5.008489809E1 +2.250431000E3,5.752384263E1 +2.250666000E3,5.367007636E1 +2.250931000E3,4.851936559E1 +2.251210000E3,4.965482987E1 +2.251497000E3,5.733244198E1 +2.251772000E3,5.370188093E1 +2.251997000E3,5.388650114E1 +2.252246000E3,5.331606518E1 +2.252516000E3,5.534782747E1 +2.252818000E3,5.271944154E1 +2.253047000E3,5.188974945E1 +2.253402000E3,5.040855384E1 +2.253689000E3,5.348452962E1 +2.253965000E3,5.685197701E1 +2.254240000E3,5.699151925E1 +2.254539000E3,5.217481719E1 +2.254794000E3,5.255063115E1 +2.255035000E3,5.258436032E1 +2.255283000E3,5.228429265E1 +2.255592000E3,5.187189315E1 +2.255851000E3,5.089851896E1 +2.256105000E3,5.323192817E1 +2.256387000E3,5.259240607E1 +2.256752000E3,5.489099725E1 +2.257016000E3,5.140699592E1 +2.257276000E3,5.478139635E1 +2.257600000E3,5.508183343E1 +2.257864000E3,5.539199709E1 +2.258160000E3,5.879728075E1 +2.258399000E3,6.145510373E1 +2.258645000E3,6.018082278E1 +2.258890000E3,6.203490998E1 +2.259131000E3,6.051201097E1 +2.259385000E3,5.741582229E1 +2.259629000E3,5.742200481E1 +2.259994000E3,5.205318956E1 +2.260295000E3,5.807019657E1 +2.260539000E3,5.843419178E1 +2.260841000E3,5.543595349E1 +2.261104000E3,5.208978608E1 +2.261348000E3,5.288295424E1 +2.261601000E3,5.593156434E1 +2.261856000E3,5.600009221E1 +2.262108000E3,5.581775464E1 +2.262358000E3,5.037081152E1 +2.262613000E3,5.059162693E1 +2.262916000E3,5.459372597E1 +2.263271000E3,5.581642194E1 +2.263548000E3,5.702582989E1 +2.263802000E3,5.531282217E1 +2.264049000E3,5.356460573E1 +2.264318000E3,5.682743962E1 +2.264564000E3,5.353127135E1 +2.264854000E3,5.962134934E1 +2.265080000E3,5.858968032E1 +2.265326000E3,5.681259568E1 +2.265625000E3,5.635120121E1 +2.265871000E3,5.433379551E1 +2.266211000E3,4.913835205E1 +2.266510000E3,5.243179137E1 +2.266783000E3,4.886918417E1 +2.267043000E3,4.774131335E1 +2.267292000E3,4.892025491E1 +2.267553000E3,4.710213612E1 +2.267796000E3,4.847827931E1 +2.268042000E3,5.624471818E1 +2.268281000E3,5.286977188E1 +2.268548000E3,5.683989489E1 +2.268800000E3,5.459251055E1 +2.269086000E3,5.272841607E1 +2.269389000E3,5.585343514E1 +2.269616000E3,5.452972356E1 +2.269865000E3,5.183250423E1 +2.270167000E3,4.733442261E1 +2.270442000E3,4.736450762E1 +2.270667000E3,4.430645798E1 +2.270915000E3,4.635257501E1 +2.271160000E3,4.914582650E1 +2.271407000E3,4.938157659E1 +2.271656000E3,4.788630853E1 +2.271896000E3,4.778446083E1 +2.272198000E3,5.081637081E1 +2.272482000E3,4.630509256E1 +2.272722000E3,4.551027932E1 +2.273048000E3,5.074623045E1 +2.273321000E3,4.689236254E1 +2.273562000E3,4.960242652E1 +2.273859000E3,5.310274016E1 +2.274104000E3,5.391997859E1 +2.274392000E3,4.854992165E1 +2.274648000E3,4.610161890E1 +2.274915000E3,5.325141064E1 +2.275196000E3,4.823989698E1 +2.275460000E3,5.167706762E1 +2.275772000E3,4.424461998E1 +2.276008000E3,4.957193490E1 +2.276258000E3,4.220429916E1 +2.276545000E3,4.614900045E1 +2.276809000E3,4.247109284E1 +2.277119000E3,5.104311310E1 +2.277385000E3,4.898949856E1 +2.277651000E3,5.033981280E1 +2.277920000E3,4.504255509E1 +2.278210000E3,4.851295637E1 +2.278452000E3,4.975001222E1 +2.278771000E3,5.198599663E1 +2.279101000E3,5.078534391E1 +2.279348000E3,5.056977572E1 +2.279614000E3,4.645427419E1 +2.279894000E3,4.837428182E1 +2.280121000E3,4.672417188E1 +2.280416000E3,4.338010131E1 +2.280671000E3,4.552410696E1 +2.280941000E3,4.107346609E1 +2.281195000E3,4.850760260E1 +2.281477000E3,4.449785068E1 +2.281730000E3,3.834743898E1 +2.282028000E3,3.160451104E1 +2.282275000E3,2.921367430E1 +2.282509000E3,3.929432216E1 +2.282771000E3,3.560833020E1 +2.283021000E3,4.204425230E1 +2.283277000E3,4.897505461E1 +2.283570000E3,4.492050546E1 +2.283802000E3,4.549624302E1 +2.284053000E3,4.703134831E1 +2.284302000E3,4.492779574E1 +2.284580000E3,5.573526523E1 +2.284888000E3,4.583204799E1 +2.285186000E3,3.987632497E1 +2.285426000E3,4.276483306E1 +2.285670000E3,4.196646636E1 +2.285974000E3,4.127295807E1 +2.286241000E3,3.392540836E1 +2.286513000E3,3.045281657E1 +2.286755000E3,3.056149566E1 +2.287058000E3,4.234115907E1 +2.287358000E3,4.148011807E1 +2.287615000E3,4.752316696E1 +2.287890000E3,4.261643768E1 +2.288186000E3,3.531031146E1 +2.288451000E3,3.336926272E1 +2.288830000E3,3.217663691E1 +2.289083000E3,3.280943829E1 +2.289350000E3,4.037024361E1 +2.289606000E3,4.463743016E1 +2.289870000E3,3.926930450E1 +2.290142000E3,3.549021170E1 +2.290376000E3,3.657210104E1 +2.290669000E3,3.609483404E1 +2.290917000E3,3.935001060E1 +2.291190000E3,3.968762383E1 +2.291417000E3,3.622062011E1 +2.291698000E3,5.052972627E1 +2.292019000E3,4.472329620E1 +2.292314000E3,3.528869928E1 +2.292580000E3,3.171318762E1 +2.292867000E3,3.293682859E1 +2.293112000E3,2.980662334E1 +2.293408000E3,3.108877030E1 +2.293645000E3,3.411108767E1 +2.293948000E3,2.929195023E1 +2.294231000E3,2.830259325E1 +2.294484000E3,2.905088910E1 +2.294732000E3,3.046102835E1 +2.295049000E3,2.679058069E1 +2.295347000E3,2.620731663E1 +2.295594000E3,3.509528145E1 +2.295836000E3,2.657946529E1 +2.296130000E3,2.511368258E1 +2.296378000E3,2.555955915E1 +2.296634000E3,2.785949260E1 +2.296875000E3,2.654407944E1 +2.297117000E3,3.658368449E1 +2.297412000E3,3.412054652E1 +2.297648000E3,3.448252102E1 +2.297956000E3,3.528486686E1 +2.298205000E3,3.265291425E1 +2.298494000E3,2.963788314E1 +2.298798000E3,3.350933300E1 +2.299085000E3,3.038301619E1 +2.299338000E3,3.357142506E1 +2.299610000E3,4.744800671E1 +2.299868000E3,3.435626076E1 +2.300142000E3,3.368274389E1 +2.300402000E3,2.881246111E1 +2.300655000E3,3.097762310E1 +2.300898000E3,2.947567056E1 +2.301182000E3,3.214187359E1 +2.301423000E3,3.421070745E1 +2.301786000E3,5.117970534E1 +2.302087000E3,5.037784077E1 +2.302335000E3,5.283937176E1 +2.302644000E3,5.164119106E1 +2.302941000E3,5.300709748E1 +2.303240000E3,4.713488810E1 +2.303488000E3,4.524114677E1 +2.303739000E3,3.080285972E1 +2.304022000E3,2.293405577E1 +2.304254000E3,2.235464386E1 +2.304552000E3,2.949911358E1 +2.304876000E3,4.141349798E1 +2.305182000E3,4.156611078E1 +2.305491000E3,4.347125429E1 +2.305797000E3,4.579894404E1 +2.306107000E3,4.646123013E1 +2.306358000E3,4.517240887E1 +2.306604000E3,5.308475174E1 +2.306870000E3,4.681256924E1 +2.307168000E3,2.942058533E1 +2.307450000E3,2.986114457E1 +2.307717000E3,3.195150356E1 +2.308031000E3,3.775567348E1 +2.308265000E3,3.823556499E1 +2.308570000E3,2.909536341E1 +2.308842000E3,3.096070220E1 +2.309098000E3,4.060687649E1 +2.309391000E3,4.820113946E1 +2.309687000E3,4.619079404E1 +2.309928000E3,4.304793785E1 +2.310216000E3,4.976144450E1 +2.310446000E3,4.779148829E1 +2.310686000E3,5.167703897E1 +2.310979000E3,3.773719280E1 +2.311248000E3,2.923821784E1 +2.311466000E3,2.654081756E1 +2.311763000E3,2.616593312E1 +2.312001000E3,2.460963519E1 +2.312285000E3,2.554564289E1 +2.312588000E3,3.572755404E1 +2.312856000E3,4.274835909E1 +2.313074000E3,4.355953935E1 +2.313375000E3,5.377727845E1 +2.313611000E3,5.435235813E1 +2.313893000E3,5.477010993E1 +2.314137000E3,5.142421895E1 +2.314483000E3,4.794670725E1 +2.314780000E3,5.149445419E1 +2.315019000E3,5.127618051E1 +2.315306000E3,4.939341348E1 +2.315533000E3,4.928824788E1 +2.315832000E3,4.617335031E1 +2.316069000E3,3.696469062E1 +2.316377000E3,4.552948924E1 +2.316627000E3,4.672923062E1 +2.316913000E3,4.504192742E1 +2.317215000E3,4.364234368E1 +2.317558000E3,4.231291453E1 +2.317853000E3,4.886663905E1 +2.318118000E3,4.492895691E1 +2.318412000E3,4.464681620E1 +2.318711000E3,4.698360224E1 +2.318950000E3,4.454369095E1 +2.319250000E3,4.409609939E1 +2.319494000E3,4.283121809E1 +2.319793000E3,4.398770219E1 +2.320040000E3,4.728522548E1 +2.320336000E3,4.533798443E1 +2.320660000E3,4.548359371E1 +2.320908000E3,4.366718291E1 +2.321152000E3,5.139935964E1 +2.321408000E3,4.747980864E1 +2.321709000E3,3.867643032E1 +2.321952000E3,4.294445900E1 +2.322196000E3,4.336333736E1 +2.322445000E3,3.890531131E1 +2.322682000E3,4.087281677E1 +2.322980000E3,3.979668464E1 +2.323225000E3,4.157042707E1 +2.323553000E3,4.515881082E1 +2.323886000E3,3.868360739E1 +2.324184000E3,4.839319184E1 +2.324428000E3,4.298284223E1 +2.324669000E3,4.433761346E1 +2.324987000E3,4.011512195E1 +2.325233000E3,3.478551365E1 +2.325486000E3,4.180203002E1 +2.325789000E3,4.323726184E1 +2.326086000E3,3.985791110E1 +2.326333000E3,3.946244529E1 +2.326667000E3,4.066537977E1 +2.326925000E3,3.986903649E1 +2.327223000E3,4.142461274E1 +2.327521000E3,3.461788217E1 +2.327778000E3,3.326602717E1 +2.328102000E3,4.357074645E1 +2.328367000E3,5.496493564E1 +2.328618000E3,4.413482695E1 +2.328920000E3,4.170999616E1 +2.329183000E3,4.107694173E1 +2.329486000E3,5.342371220E1 +2.329729000E3,5.103134188E1 +2.330028000E3,4.716459977E1 +2.330382000E3,4.916498276E1 +2.330642000E3,4.801561309E1 +2.330930000E3,4.860033329E1 +2.331211000E3,5.037441690E1 +2.331463000E3,5.227972551E1 +2.331719000E3,4.516533742E1 +2.331971000E3,4.623606604E1 +2.332268000E3,3.207985320E1 +2.332513000E3,3.485208029E1 +2.332801000E3,4.367306984E1 +2.333109000E3,4.764897626E1 +2.333397000E3,4.844411921E1 +2.333779000E3,4.624834459E1 +2.334088000E3,4.492130047E1 +2.334331000E3,4.172849812E1 +2.334618000E3,4.243441154E1 +2.334859000E3,4.155300890E1 +2.335165000E3,3.508017133E1 +2.335414000E3,3.102497597E1 +2.335689000E3,3.346102792E1 +2.335938000E3,2.980210924E1 +2.336237000E3,2.815695425E1 +2.336480000E3,4.530841757E1 +2.336824000E3,4.476742737E1 +2.337075000E3,4.460293889E1 +2.337332000E3,5.054872999E1 +2.337583000E3,4.962100100E1 +2.337845000E3,5.224787063E1 +2.338132000E3,4.845338775E1 +2.338374000E3,4.675501048E1 +2.338651000E3,4.806540095E1 +2.338903000E3,4.707869991E1 +2.339145000E3,4.747595477E1 +2.339395000E3,3.449909829E1 +2.339700000E3,4.619360178E1 +2.340033000E3,4.785644508E1 +2.340329000E3,4.721347586E1 +2.340579000E3,4.302992844E1 +2.340828000E3,4.629706327E1 +2.341122000E3,4.550319757E1 +2.341368000E3,4.510038554E1 +2.341611000E3,4.752886315E1 +2.341876000E3,4.524122211E1 +2.342135000E3,2.990386366E1 +2.342396000E3,3.647672774E1 +2.342679000E3,2.854891758E1 +2.342936000E3,3.995722191E1 +2.343310000E3,4.501906630E1 +2.343555000E3,4.872212276E1 +2.343839000E3,4.566863325E1 +2.344134000E3,3.946814595E1 +2.344384000E3,4.796193013E1 +2.344656000E3,4.858552009E1 +2.344961000E3,4.902627763E1 +2.345257000E3,4.467711671E1 +2.345498000E3,3.756709071E1 +2.345764000E3,2.964206509E1 +2.346064000E3,4.283044167E1 +2.346415000E3,4.191014925E1 +2.346743000E3,4.910031818E1 +2.347021000E3,5.022624274E1 +2.347337000E3,5.257970130E1 +2.347586000E3,4.764257555E1 +2.347831000E3,4.353349182E1 +2.348126000E3,4.318604201E1 +2.348436000E3,4.825752031E1 +2.348710000E3,4.464987037E1 +2.348968000E3,4.690302679E1 +2.349225000E3,4.464063657E1 +2.349495000E3,5.114524492E1 +2.349740000E3,4.345049547E1 +2.350133000E3,4.655800825E1 +2.350382000E3,4.419356370E1 +2.350688000E3,4.308388818E1 +2.350960000E3,4.964188075E1 +2.351269000E3,5.137042419E1 +2.351542000E3,4.751708919E1 +2.351836000E3,3.239228651E1 +2.352067000E3,3.331178705E1 +2.352357000E3,4.628654550E1 +2.352625000E3,4.653844798E1 +2.352938000E3,4.419734850E1 +2.353231000E3,3.771763539E1 +2.353458000E3,3.489550836E1 +2.353713000E3,2.965581776E1 +2.353962000E3,3.457100474E1 +2.354201000E3,3.291595658E1 +2.354446000E3,2.791603976E1 +2.354711000E3,3.307930362E1 +2.355027000E3,5.311162000E1 +2.355290000E3,4.688373373E1 +2.355581000E3,3.663543876E1 +2.355868000E3,2.834403560E1 +2.356176000E3,5.001680718E1 +2.356518000E3,5.349221251E1 +2.356780000E3,5.234097025E1 +2.357043000E3,4.476475434E1 +2.357349000E3,5.160193390E1 +2.357584000E3,4.375385010E1 +2.357840000E3,3.709166207E1 +2.358125000E3,2.927191182E1 +2.358378000E3,4.114289062E1 +2.358676000E3,4.266518399E1 +2.358921000E3,4.641380631E1 +2.359210000E3,4.551221179E1 +2.359545000E3,4.099683883E1 +2.359801000E3,5.202602500E1 +2.360072000E3,5.207875379E1 +2.360343000E3,4.670310433E1 +2.360619000E3,4.619168123E1 +2.360865000E3,4.348453495E1 +2.361113000E3,4.603882932E1 +2.361353000E3,4.061885274E1 +2.361649000E3,4.873355826E1 +2.361884000E3,4.796347566E1 +2.362174000E3,4.419543811E1 +2.362420000E3,4.412529768E1 +2.362674000E3,4.315515456E1 +2.363006000E3,3.718353950E1 +2.363303000E3,4.131746877E1 +2.363556000E3,3.462830696E1 +2.363825000E3,3.224809166E1 +2.364105000E3,2.946532539E1 +2.364420000E3,4.082560353E1 +2.364671000E3,4.169760242E1 +2.364916000E3,4.728483165E1 +2.365158000E3,4.384961396E1 +2.365493000E3,3.327447630E1 +2.365797000E3,2.406470586E1 +2.366141000E3,2.410271882E1 +2.366422000E3,4.124818432E1 +2.366699000E3,4.300386829E1 +2.366994000E3,4.592409288E1 +2.367239000E3,4.402074721E1 +2.367492000E3,4.331525310E1 +2.367744000E3,4.351543939E1 +2.368045000E3,4.861325913E1 +2.368277000E3,4.345520025E1 +2.368543000E3,5.037549285E1 +2.368790000E3,3.455268589E1 +2.369034000E3,3.454484220E1 +2.369300000E3,3.436570372E1 +2.369544000E3,3.180799867E1 +2.369820000E3,4.460893996E1 +2.370091000E3,5.635981603E1 +2.370383000E3,4.932803438E1 +2.370635000E3,5.123791361E1 +2.370939000E3,4.749913119E1 +2.371193000E3,4.606624254E1 +2.371498000E3,4.453668838E1 +2.371779000E3,4.424564317E1 +2.372081000E3,5.022357768E1 +2.372347000E3,4.983363592E1 +2.372720000E3,4.311987242E1 +2.372969000E3,4.071927446E1 +2.373234000E3,3.624584431E1 +2.373535000E3,3.338407859E1 +2.373777000E3,2.744030282E1 +2.374025000E3,4.017686066E1 +2.374281000E3,4.153799732E1 +2.374537000E3,5.163713220E1 +2.374786000E3,4.970373114E1 +2.375033000E3,4.601563593E1 +2.375284000E3,4.943210146E1 +2.375577000E3,5.208741018E1 +2.375935000E3,4.780129348E1 +2.376167000E3,4.632707744E1 +2.376478000E3,5.008962536E1 +2.376734000E3,4.691729314E1 +2.376987000E3,4.593220796E1 +2.377250000E3,4.703621615E1 +2.377550000E3,4.863501898E1 +2.377838000E3,4.747349412E1 +2.378102000E3,4.430216971E1 +2.378373000E3,5.038477253E1 +2.378648000E3,4.679597376E1 +2.378873000E3,3.998762784E1 +2.379232000E3,4.140472709E1 +2.379480000E3,3.803559367E1 +2.379735000E3,4.292956565E1 +2.379993000E3,3.275484639E1 +2.380260000E3,3.159298587E1 +2.380513000E3,3.066195183E1 +2.380756000E3,4.846258942E1 +2.381012000E3,4.617374426E1 +2.381278000E3,4.338282331E1 +2.381580000E3,2.990070560E1 +2.381878000E3,3.384826320E1 +2.382127000E3,4.352773294E1 +2.382476000E3,3.711143795E1 +2.382756000E3,4.818117865E1 +2.383001000E3,4.694356023E1 +2.383312000E3,4.713242320E1 +2.383556000E3,4.945634369E1 +2.383815000E3,3.710449888E1 +2.384109000E3,4.990714727E1 +2.384350000E3,5.101970483E1 +2.384663000E3,4.290224010E1 +2.384917000E3,3.958873166E1 +2.385203000E3,4.207919898E1 +2.385583000E3,3.937588823E1 +2.385864000E3,3.927490117E1 +2.386122000E3,3.708577985E1 +2.386378000E3,3.104425869E1 +2.386630000E3,2.579918418E1 +2.386935000E3,4.201717352E1 +2.387186000E3,4.469788103E1 +2.387445000E3,3.928301867E1 +2.387699000E3,4.425054811E1 +2.387999000E3,2.901032620E1 +2.388242000E3,2.431535493E1 +2.388542000E3,4.330806788E1 +2.388866000E3,4.587852948E1 +2.389138000E3,5.068663336E1 +2.389420000E3,5.151872270E1 +2.389764000E3,4.501157372E1 +2.390012000E3,4.508008781E1 +2.390288000E3,4.471818734E1 +2.390546000E3,4.453717168E1 +2.390828000E3,3.435610332E1 +2.391113000E3,3.644941891E1 +2.391398000E3,3.741409627E1 +2.391658000E3,4.311052254E1 +2.391963000E3,3.924877335E1 +2.392296000E3,3.956869731E1 +2.392537000E3,3.230149795E1 +2.392786000E3,2.941450360E1 +2.393103000E3,3.366208400E1 +2.393349000E3,2.633153711E1 +2.393653000E3,2.492589605E1 +2.393892000E3,3.518582310E1 +2.394201000E3,3.668564238E1 +2.394454000E3,3.528359554E1 +2.394744000E3,3.673717548E1 +2.395034000E3,2.851979476E1 +2.395378000E3,2.558396774E1 +2.395660000E3,3.919896752E1 +2.395930000E3,3.339597104E1 +2.396187000E3,3.351358057E1 +2.396431000E3,3.743420456E1 +2.396691000E3,4.220523227E1 +2.396991000E3,3.500233403E1 +2.397251000E3,3.475187142E1 +2.397513000E3,3.604068947E1 +2.397821000E3,4.628512725E1 +2.398126000E3,4.463943287E1 +2.398428000E3,4.311458163E1 +2.398781000E3,4.375329409E1 +2.399076000E3,3.749705009E1 +2.399316000E3,4.116349149E1 +2.399615000E3,4.694603167E1 +2.399852000E3,5.327851923E1 +2.400143000E3,5.028800274E1 +2.400380000E3,5.055607260E1 +2.400618000E3,4.184216649E1 +2.400901000E3,4.280576865E1 +2.401144000E3,4.285187037E1 +2.401437000E3,5.414729311E1 +2.401684000E3,5.760726428E1 +2.402102000E3,5.135939721E1 +2.402349000E3,5.519633184E1 +2.402608000E3,5.937895156E1 +2.402853000E3,5.722678447E1 +2.403146000E3,5.316891996E1 +2.403388000E3,5.231876976E1 +2.403684000E3,4.275047946E1 +2.403921000E3,4.497010821E1 +2.404216000E3,5.935375427E1 +2.404454000E3,5.736369919E1 +2.404707000E3,5.877823139E1 +2.404971000E3,6.138635894E1 +2.405219000E3,5.726046839E1 +2.405473000E3,5.213953550E1 +2.405771000E3,4.831408459E1 +2.406024000E3,5.195614478E1 +2.406276000E3,4.885485021E1 +2.406567000E3,4.806131720E1 +2.406866000E3,3.817379603E1 +2.407129000E3,3.496803230E1 +2.407401000E3,4.679161915E1 +2.407625000E3,4.456362030E1 +2.407878000E3,4.499112684E1 +2.408171000E3,4.695848411E1 +2.408491000E3,4.136053284E1 +2.408771000E3,3.435960184E1 +2.409033000E3,2.907775515E1 +2.409287000E3,3.179102298E1 +2.409536000E3,2.535492331E1 +2.409797000E3,2.893863695E1 +2.410015000E3,3.195695462E1 +2.410232000E3,2.883661354E1 +2.410481000E3,4.380812340E1 +2.410735000E3,5.435187737E1 +2.411017000E3,4.390478627E1 +2.411330000E3,4.136550501E1 +2.411572000E3,6.231552653E1 +2.411823000E3,4.988484474E1 +2.412072000E3,4.569499772E1 +2.412339000E3,5.207639469E1 +2.412605000E3,5.314724412E1 +2.412842000E3,5.014855129E1 +2.413111000E3,4.925815950E1 +2.413332000E3,5.545199009E1 +2.413608000E3,4.910878211E1 +2.413873000E3,5.481296501E1 +2.414229000E3,4.620355557E1 +2.414532000E3,4.757632406E1 +2.414792000E3,4.414835702E1 +2.415033000E3,4.178334533E1 +2.415296000E3,3.571558610E1 +2.415577000E3,3.622280285E1 +2.415839000E3,4.187963398E1 +2.416103000E3,4.120303067E1 +2.416426000E3,5.043875316E1 +2.416696000E3,4.738536839E1 +2.417006000E3,4.790698669E1 +2.417250000E3,4.717323409E1 +2.417613000E3,4.889624394E1 +2.417923000E3,4.615999302E1 +2.418209000E3,4.554232436E1 +2.418487000E3,4.963147342E1 +2.418748000E3,4.540077281E1 +2.419058000E3,4.402622058E1 +2.419355000E3,3.991430025E1 +2.419631000E3,5.699106589E1 +2.419880000E3,4.542610605E1 +2.420140000E3,5.871400849E1 +2.420387000E3,5.593691155E1 +2.420634000E3,5.642590944E1 +2.420987000E3,4.942882304E1 +2.421235000E3,5.122637091E1 +2.421504000E3,5.506353313E1 +2.421808000E3,4.974630362E1 +2.422098000E3,4.922446567E1 +2.422401000E3,4.711891494E1 +2.422653000E3,4.935851062E1 +2.422946000E3,5.223840607E1 +2.423180000E3,5.181747333E1 +2.423433000E3,5.106095739E1 +2.423699000E3,4.283067128E1 +2.424023000E3,4.620110870E1 +2.424283000E3,4.813646184E1 +2.424556000E3,4.673905704E1 +2.424833000E3,5.139038068E1 +2.425085000E3,4.187355918E1 +2.425330000E3,4.200690239E1 +2.425641000E3,4.094986905E1 +2.425891000E3,3.869951887E1 +2.426156000E3,4.295178440E1 +2.426411000E3,4.445235603E1 +2.426673000E3,4.180705342E1 +2.426915000E3,4.159918394E1 +2.427275000E3,5.193727105E1 +2.427528000E3,4.985744468E1 +2.427773000E3,5.143594155E1 +2.428021000E3,5.687627643E1 +2.428258000E3,4.984177159E1 +2.428554000E3,4.104898524E1 +2.428794000E3,3.740238657E1 +2.429102000E3,4.424577609E1 +2.429345000E3,5.022623751E1 +2.429627000E3,5.346928374E1 +2.429864000E3,4.448852620E1 +2.430156000E3,3.611387858E1 +2.430475000E3,3.592739777E1 +2.430726000E3,3.269867125E1 +2.431039000E3,4.089980433E1 +2.431331000E3,3.752068977E1 +2.431567000E3,3.972155082E1 +2.431870000E3,4.098289208E1 +2.432107000E3,4.068605974E1 +2.432406000E3,3.978950334E1 +2.432643000E3,3.435438837E1 +2.432933000E3,3.806187937E1 +2.433169000E3,3.613809925E1 +2.433407000E3,5.573542624E1 +2.433734000E3,4.812688919E1 +2.434035000E3,5.332611421E1 +2.434315000E3,5.453475878E1 +2.434557000E3,5.156731049E1 +2.434849000E3,4.452924889E1 +2.435086000E3,4.091217005E1 +2.435380000E3,3.495963916E1 +2.435633000E3,3.994418328E1 +2.435904000E3,5.345258512E1 +2.436200000E3,4.573029424E1 +2.436434000E3,4.666848361E1 +2.436802000E3,4.148612785E1 +2.437044000E3,3.785277445E1 +2.437301000E3,3.823545546E1 +2.437549000E3,3.883632471E1 +2.437839000E3,4.756553033E1 +2.438077000E3,4.282797221E1 +2.438369000E3,5.291874167E1 +2.438606000E3,5.394671897E1 +2.438862000E3,5.490926284E1 +2.439159000E3,5.465277565E1 +2.439395000E3,5.245345229E1 +2.439637000E3,4.823915254E1 +2.440022000E3,5.658050668E1 +2.440281000E3,5.255468157E1 +2.440546000E3,4.365897331E1 +2.440828000E3,4.187636724E1 +2.441125000E3,4.916172461E1 +2.441365000E3,5.038635874E1 +2.441645000E3,5.238005511E1 +2.441868000E3,4.979548238E1 +2.442114000E3,5.164563876E1 +2.442410000E3,4.795862612E1 +2.442694000E3,4.406311297E1 +2.442980000E3,4.461066687E1 +2.443265000E3,3.990213588E1 +2.443525000E3,4.270339676E1 +2.443815000E3,4.671533321E1 +2.444064000E3,4.922681237E1 +2.444311000E3,5.115751882E1 +2.444605000E3,4.659279655E1 +2.444851000E3,4.805254743E1 +2.445152000E3,4.646584218E1 +2.445447000E3,3.924248597E1 +2.445698000E3,3.657018775E1 +2.445976000E3,3.978585816E1 +2.446317000E3,5.134473527E1 +2.446569000E3,4.872028256E1 +2.446851000E3,4.793203365E1 +2.447088000E3,4.917648823E1 +2.447345000E3,4.514648035E1 +2.447599000E3,4.827609085E1 +2.447864000E3,5.009329877E1 +2.448138000E3,4.858127151E1 +2.448430000E3,4.885678900E1 +2.448726000E3,4.038666943E1 +2.448956000E3,3.788824065E1 +2.449214000E3,4.872306097E1 +2.449516000E3,5.112419798E1 +2.449767000E3,4.394357347E1 +2.450028000E3,5.187358067E1 +2.450298000E3,4.764520743E1 +2.450575000E3,5.323515688E1 +2.450844000E3,4.730661272E1 +2.451150000E3,5.022143967E1 +2.451400000E3,4.244080150E1 +2.451697000E3,4.540622562E1 +2.452002000E3,4.987171470E1 +2.452273000E3,4.928771096E1 +2.452519000E3,4.415614577E1 +2.452847000E3,4.529816891E1 +2.453138000E3,3.130480949E1 +2.453407000E3,3.727195618E1 +2.453707000E3,4.218798188E1 +2.453975000E3,3.196426842E1 +2.454240000E3,2.986758668E1 +2.454534000E3,4.365366219E1 +2.454795000E3,4.363233606E1 +2.455054000E3,4.576258560E1 +2.455297000E3,4.600510844E1 +2.455546000E3,5.143992334E1 +2.455816000E3,4.451792491E1 +2.456172000E3,3.834658463E1 +2.456438000E3,4.961865906E1 +2.456716000E3,4.301133302E1 +2.457025000E3,5.185950840E1 +2.457284000E3,4.578127088E1 +2.457582000E3,4.860789001E1 +2.457857000E3,4.548301241E1 +2.458087000E3,5.726595471E1 +2.458343000E3,4.581143143E1 +2.458590000E3,4.593076535E1 +2.458898000E3,4.646845677E1 +2.459143000E3,4.385664195E1 +2.459499000E3,3.921291428E1 +2.459756000E3,4.336490005E1 +2.460079000E3,5.059416731E1 +2.460323000E3,5.383728406E1 +2.460609000E3,4.336002656E1 +2.460894000E3,3.810358455E1 +2.461148000E3,4.341384577E1 +2.461406000E3,4.240002850E1 +2.461668000E3,4.220171306E1 +2.461957000E3,4.165441002E1 +2.462218000E3,4.110791112E1 +2.462543000E3,3.718059239E1 +2.462873000E3,4.490190793E1 +2.463162000E3,4.449127269E1 +2.463461000E3,5.110192526E1 +2.463709000E3,4.670759724E1 +2.464024000E3,4.554197086E1 +2.464345000E3,4.295638115E1 +2.464598000E3,4.260186095E1 +2.464844000E3,3.838281454E1 +2.465094000E3,4.864552318E1 +2.465348000E3,4.722694913E1 +2.465597000E3,5.723123112E1 +2.465970000E3,5.678247819E1 +2.466226000E3,5.304857482E1 +2.466490000E3,5.799491543E1 +2.466745000E3,5.566332539E1 +2.467000000E3,5.532803606E1 +2.467301000E3,5.480406224E1 +2.467518000E3,5.281426808E1 +2.467773000E3,5.319750336E1 +2.468030000E3,4.504180471E1 +2.468309000E3,4.011552860E1 +2.468536000E3,3.286668959E1 +2.468782000E3,5.187437917E1 +2.469159000E3,5.342027818E1 +2.469405000E3,4.655027014E1 +2.469685000E3,4.875434900E1 +2.469968000E3,4.400777727E1 +2.470228000E3,4.944370484E1 +2.470524000E3,4.819898526E1 +2.470826000E3,4.906267157E1 +2.471101000E3,4.559683511E1 +2.471407000E3,5.066052597E1 +2.471662000E3,5.052511938E1 +2.471933000E3,4.854316053E1 +2.472243000E3,4.720397127E1 +2.472513000E3,4.539713693E1 +2.472765000E3,4.504800702E1 +2.473077000E3,4.756996091E1 +2.473381000E3,4.502772911E1 +2.473668000E3,4.844141365E1 +2.473909000E3,4.718772198E1 +2.474176000E3,5.036014826E1 +2.474415000E3,4.734822430E1 +2.474659000E3,4.506554867E1 +2.474941000E3,4.590585801E1 +2.475227000E3,4.808550728E1 +2.475549000E3,4.744751902E1 +2.475816000E3,5.139502060E1 +2.476110000E3,4.565542501E1 +2.476367000E3,4.502651441E1 +2.476614000E3,4.529198411E1 +2.476876000E3,4.841642572E1 +2.477138000E3,4.904966766E1 +2.477430000E3,5.061185879E1 +2.477703000E3,4.805167318E1 +2.477973000E3,4.840268940E1 +2.478233000E3,4.609690512E1 +2.478491000E3,5.080806253E1 +2.478854000E3,4.929079330E1 +2.479112000E3,4.887431247E1 +2.479382000E3,4.582116343E1 +2.479677000E3,4.614295426E1 +2.479939000E3,5.004731017E1 +2.480247000E3,5.118895049E1 +2.480496000E3,4.750144805E1 +2.480785000E3,4.691637905E1 +2.481084000E3,4.575243018E1 +2.481328000E3,4.498034363E1 +2.481622000E3,5.049144453E1 +2.481951000E3,4.811617152E1 +2.482214000E3,4.600387593E1 +2.482494000E3,5.163944801E1 +2.482753000E3,4.933311419E1 +2.482991000E3,4.946534766E1 +2.483244000E3,4.580757204E1 +2.483487000E3,4.797573247E1 +2.483734000E3,4.560844100E1 +2.483990000E3,5.039329574E1 +2.484313000E3,5.052905321E1 +2.484577000E3,5.131938081E1 +2.484833000E3,4.901245069E1 +2.485113000E3,5.233648083E1 +2.485461000E3,5.215489758E1 +2.485749000E3,5.451606287E1 +2.486018000E3,5.043201098E1 +2.486334000E3,5.091085093E1 +2.486650000E3,4.972266732E1 +2.486916000E3,4.846864702E1 +2.487167000E3,4.843730663E1 +2.487412000E3,5.285205631E1 +2.487677000E3,5.695937588E1 +2.487965000E3,5.067248408E1 +2.488216000E3,4.955689254E1 +2.488580000E3,4.789771891E1 +2.488828000E3,4.640186686E1 +2.489150000E3,4.956289338E1 +2.489428000E3,4.916705799E1 +2.489718000E3,4.250319869E1 +2.489959000E3,4.211788948E1 +2.490259000E3,4.711467977E1 +2.490508000E3,5.336087879E1 +2.490805000E3,5.163346506E1 +2.491066000E3,5.303328317E1 +2.491377000E3,5.018594076E1 +2.491684000E3,4.569780009E1 +2.492029000E3,4.677168871E1 +2.492273000E3,4.586755987E1 +2.492522000E3,5.020047651E1 +2.492768000E3,4.585538278E1 +2.493006000E3,5.027464230E1 +2.493315000E3,4.719632652E1 +2.493608000E3,4.892998103E1 +2.493874000E3,4.659859577E1 +2.494131000E3,4.485377967E1 +2.494387000E3,4.661063763E1 +2.494635000E3,4.873112034E1 +2.494904000E3,5.011233058E1 +2.495259000E3,4.996207620E1 +2.495523000E3,5.026371938E1 +2.495789000E3,4.897334151E1 +2.496086000E3,4.919412247E1 +2.496330000E3,4.448238049E1 +2.496598000E3,5.779881243E1 +2.496845000E3,5.068443192E1 +2.497079000E3,5.452206946E1 +2.497328000E3,6.091811093E1 +2.497574000E3,5.545025588E1 +2.497819000E3,5.118451852E1 +2.498124000E3,5.647063434E1 +2.498436000E3,5.942897676E1 +2.498681000E3,6.063927987E1 +2.498932000E3,5.256584857E1 +2.499203000E3,5.942844343E1 +2.499465000E3,5.268198933E1 +2.499726000E3,5.561310022E1 +2.499989000E3,5.551348586E1 +2.500270000E3,5.728700965E1 +2.500550000E3,5.848024533E1 +2.500856000E3,5.545551244E1 +2.501156000E3,7.074712648E1 +2.501405000E3,6.649397556E1 +2.501727000E3,6.577106108E1 +2.501964000E3,5.791155905E1 +2.502223000E3,6.571272960E1 +2.502476000E3,5.223691777E1 +2.502731000E3,5.099379006E1 +2.502989000E3,4.996024440E1 +2.503265000E3,4.587573023E1 +2.503515000E3,6.660646739E1 +2.503792000E3,5.426812996E1 +2.504090000E3,4.221263073E1 +2.504348000E3,3.961359220E1 +2.504607000E3,3.317448387E1 +2.504957000E3,2.765634596E1 +2.505202000E3,5.260508289E1 +2.505444000E3,4.970766119E1 +2.505723000E3,5.961421356E1 +2.506010000E3,5.761735716E1 +2.506316000E3,4.386011183E1 +2.506629000E3,3.297646158E1 +2.506928000E3,3.461351567E1 +2.507171000E3,3.422494413E1 +2.507415000E3,3.898815557E1 +2.507661000E3,3.916714623E1 +2.507958000E3,4.409544564E1 +2.508199000E3,4.040812578E1 +2.508495000E3,4.100804729E1 +2.508767000E3,4.155083379E1 +2.509073000E3,4.256659126E1 +2.509346000E3,4.665111645E1 +2.509615000E3,4.785704834E1 +2.509926000E3,4.957995318E1 +2.510246000E3,5.281308228E1 +2.510533000E3,5.716195403E1 +2.510847000E3,5.384222007E1 +2.511087000E3,4.682850643E1 +2.511483000E3,5.585229854E1 +2.511769000E3,5.797880255E1 +2.512061000E3,5.008051045E1 +2.512305000E3,4.616221083E1 +2.512545000E3,5.837834308E1 +2.512782000E3,4.588894556E1 +2.513082000E3,5.827978204E1 +2.513321000E3,5.321307958E1 +2.513625000E3,5.419914666E1 +2.513860000E3,4.249936315E1 +2.514160000E3,5.093700871E1 +2.514505000E3,4.733309734E1 +2.514807000E3,5.739188753E1 +2.515049000E3,5.684870925E1 +2.515326000E3,5.429714525E1 +2.515551000E3,5.304528611E1 +2.515847000E3,6.048302750E1 +2.516097000E3,5.298092655E1 +2.516397000E3,5.664346713E1 +2.516634000E3,5.062362510E1 +2.516910000E3,5.059011404E1 +2.517165000E3,5.074931344E1 +2.517424000E3,5.193937267E1 +2.517672000E3,4.773080825E1 +2.517933000E3,4.886471101E1 +2.518191000E3,4.258084657E1 +2.518440000E3,4.144243799E1 +2.518697000E3,3.266068365E1 +2.518962000E3,3.662092465E1 +2.519211000E3,4.002326553E1 +2.519469000E3,5.193824268E1 +2.519821000E3,5.548381163E1 +2.520087000E3,5.245445808E1 +2.520336000E3,4.447536752E1 +2.520718000E3,5.931091731E1 +2.521010000E3,5.514928156E1 +2.521305000E3,5.194242569E1 +2.521541000E3,5.632439964E1 +2.521781000E3,4.768714929E1 +2.522074000E3,3.967116686E1 +2.522306000E3,3.457523914E1 +2.522554000E3,3.414939493E1 +2.522808000E3,3.034285017E1 +2.523103000E3,3.725639399E1 +2.523347000E3,5.824523011E1 +2.523645000E3,5.697741808E1 +2.524002000E3,5.995361389E1 +2.524244000E3,5.516819042E1 +2.524491000E3,5.520201782E1 +2.524765000E3,4.576677797E1 +2.524988000E3,5.785527848E1 +2.525299000E3,5.093237528E1 +2.525544000E3,4.090627494E1 +2.525822000E3,3.111750175E1 +2.526056000E3,2.764971736E1 +2.526311000E3,2.852524033E1 +2.526617000E3,3.508264660E1 +2.526905000E3,5.067917717E1 +2.527241000E3,4.646824007E1 +2.527487000E3,3.686495987E1 +2.527738000E3,3.822220480E1 +2.527988000E3,3.764348220E1 +2.528232000E3,4.278450517E1 +2.528563000E3,4.881983602E1 +2.528870000E3,4.048435148E1 +2.529125000E3,4.047282835E1 +2.529398000E3,4.602715630E1 +2.529632000E3,4.358719476E1 +2.529925000E3,4.185499728E1 +2.530224000E3,4.428160693E1 +2.530451000E3,5.370094630E1 +2.530771000E3,4.662369716E1 +2.531057000E3,4.486368653E1 +2.531322000E3,3.985753269E1 +2.531579000E3,3.868983993E1 +2.531842000E3,4.397673982E1 +2.532129000E3,4.465178920E1 +2.532379000E3,4.071629694E1 +2.532681000E3,3.700154265E1 +2.532925000E3,3.709745900E1 +2.533169000E3,3.856350220E1 +2.533454000E3,3.780017804E1 +2.533739000E3,4.079153270E1 +2.534053000E3,3.467337947E1 +2.534304000E3,3.872357849E1 +2.534571000E3,4.188092371E1 +2.534878000E3,4.226520735E1 +2.535180000E3,4.433351029E1 +2.535433000E3,4.196124368E1 +2.535679000E3,4.159710638E1 +2.535934000E3,4.131920574E1 +2.536230000E3,4.013333591E1 +2.536496000E3,3.861252617E1 +2.536812000E3,3.205810696E1 +2.537071000E3,3.900017908E1 +2.537321000E3,3.720890888E1 +2.537589000E3,3.571752088E1 +2.537899000E3,3.466875388E1 +2.538158000E3,3.490809444E1 +2.538414000E3,2.846246396E1 +2.538721000E3,3.471466025E1 +2.539000000E3,3.262267006E1 +2.539250000E3,2.900340615E1 +2.539526000E3,2.962734770E1 +2.539843000E3,4.051335289E1 +2.540219000E3,3.732414883E1 +2.540478000E3,3.212776280E1 +2.540731000E3,3.980002135E1 +2.541002000E3,4.402529692E1 +2.541305000E3,3.531142487E1 +2.541570000E3,4.157255463E1 +2.541892000E3,4.121686373E1 +2.542138000E3,3.512055425E1 +2.542435000E3,3.058422839E1 +2.542704000E3,3.860796470E1 +2.542951000E3,4.158955283E1 +2.543254000E3,4.126835549E1 +2.543598000E3,4.557459954E1 +2.543842000E3,4.195620726E1 +2.544088000E3,4.759905541E1 +2.544347000E3,4.089593512E1 +2.544592000E3,4.224934090E1 +2.544840000E3,3.548720999E1 +2.545141000E3,4.189266277E1 +2.545422000E3,4.058854606E1 +2.545652000E3,3.761551365E1 +2.545897000E3,3.643024250E1 +2.546173000E3,3.544845567E1 +2.546439000E3,3.816851754E1 +2.546779000E3,3.801212128E1 +2.547110000E3,3.288266257E1 +2.547379000E3,4.063952307E1 +2.547641000E3,4.765684387E1 +2.547893000E3,4.402640436E1 +2.548143000E3,4.172886183E1 +2.548441000E3,3.808222191E1 +2.548685000E3,3.637035664E1 +2.548962000E3,3.879815953E1 +2.549230000E3,5.433785228E1 +2.549540000E3,5.428002325E1 +2.549852000E3,5.430864003E1 +2.550121000E3,5.376325395E1 +2.550389000E3,5.250586376E1 +2.550641000E3,5.329413218E1 +2.550946000E3,3.817927317E1 +2.551218000E3,3.779289824E1 +2.551493000E3,4.904361964E1 +2.551759000E3,5.500168111E1 +2.552006000E3,4.745774118E1 +2.552261000E3,5.304049624E1 +2.552515000E3,4.933664563E1 +2.552779000E3,3.482983031E1 +2.553043000E3,3.914561037E1 +2.553378000E3,3.318943686E1 +2.553659000E3,2.674748735E1 +2.553917000E3,2.500565902E1 +2.554234000E3,3.331261434E1 +2.554489000E3,3.380079275E1 +2.554753000E3,3.632095841E1 +2.554996000E3,3.606888467E1 +2.555239000E3,4.759559903E1 +2.555541000E3,5.588542149E1 +2.555837000E3,5.768171500E1 +2.556076000E3,5.837962370E1 +2.556358000E3,5.761486260E1 +2.556647000E3,5.408185929E1 +2.556914000E3,5.624815374E1 +2.557248000E3,4.727853091E1 +2.557554000E3,3.999550071E1 +2.557822000E3,4.090986684E1 +2.558062000E3,3.411171601E1 +2.558302000E3,3.042998918E1 +2.558550000E3,3.392526215E1 +2.558807000E3,3.801243567E1 +2.559082000E3,4.390440101E1 +2.559357000E3,4.215163378E1 +2.559616000E3,4.616573562E1 +2.559972000E3,4.170066459E1 +2.560245000E3,2.972551911E1 +2.560517000E3,3.987643023E1 +2.560765000E3,4.046237199E1 +2.561011000E3,4.268708813E1 +2.561258000E3,4.450541644E1 +2.561531000E3,4.611922799E1 +2.561775000E3,4.492719317E1 +2.562027000E3,4.345851098E1 +2.562302000E3,5.022295857E1 +2.562533000E3,4.986016935E1 +2.562786000E3,3.932672790E1 +2.563211000E3,3.777119812E1 +2.563479000E3,4.577537823E1 +2.563731000E3,5.443473776E1 +2.563977000E3,5.947837126E1 +2.564252000E3,5.014881480E1 +2.564539000E3,4.884415531E1 +2.564781000E3,4.451698294E1 +2.565088000E3,3.693106642E1 +2.565361000E3,3.096881298E1 +2.565624000E3,2.635486448E1 +2.565885000E3,2.734213385E1 +2.566246000E3,3.979362654E1 +2.566493000E3,3.382738554E1 +2.566797000E3,3.469438245E1 +2.567097000E3,4.097528595E1 +2.567346000E3,4.285297734E1 +2.567644000E3,4.930003444E1 +2.567891000E3,4.540271843E1 +2.568170000E3,3.109775861E1 +2.568407000E3,2.738661195E1 +2.568701000E3,3.024785153E1 +2.568952000E3,3.235217301E1 +2.569220000E3,3.196941264E1 +2.569567000E3,4.299833718E1 +2.569862000E3,4.496000509E1 +2.570178000E3,4.562225815E1 +2.570442000E3,4.437451260E1 +2.570707000E3,3.949227756E1 +2.570950000E3,2.951847370E1 +2.571202000E3,3.800151296E1 +2.571472000E3,4.650517590E1 +2.571732000E3,3.967561664E1 +2.571975000E3,3.149456620E1 +2.572246000E3,5.234083710E1 +2.572527000E3,4.544839619E1 +2.572859000E3,4.436174777E1 +2.573168000E3,4.369290756E1 +2.573429000E3,4.420543128E1 +2.573728000E3,4.389854646E1 +2.573968000E3,4.580346210E1 +2.574268000E3,4.881141748E1 +2.574509000E3,4.708023256E1 +2.574802000E3,3.388696242E1 +2.575045000E3,2.922489212E1 +2.575339000E3,3.941924125E1 +2.575597000E3,4.733040375E1 +2.575906000E3,4.790376430E1 +2.576245000E3,4.328559785E1 +2.576517000E3,4.720947277E1 +2.576791000E3,4.076260480E1 +2.577092000E3,3.249905806E1 +2.577324000E3,3.886850876E1 +2.577566000E3,3.577483806E1 +2.577814000E3,4.105002685E1 +2.578080000E3,3.881208350E1 +2.578375000E3,5.720708534E1 +2.578624000E3,4.933084675E1 +2.578932000E3,5.989261963E1 +2.579254000E3,5.193127116E1 +2.579506000E3,4.843920497E1 +2.579747000E3,4.570821188E1 +2.580001000E3,4.446748829E1 +2.580244000E3,4.006228376E1 +2.580497000E3,2.933332862E1 +2.580745000E3,4.525678604E1 +2.580989000E3,4.717489692E1 +2.581288000E3,5.239736286E1 +2.581587000E3,5.268105849E1 +2.581851000E3,4.960616241E1 +2.582112000E3,4.637217789E1 +2.582361000E3,4.676379781E1 +2.582583000E3,4.083594902E1 +2.582903000E3,2.696140701E1 +2.583176000E3,2.668057590E1 +2.583429000E3,2.900886287E1 +2.583692000E3,2.732690452E1 +2.583951000E3,3.475308428E1 +2.584205000E3,4.782860484E1 +2.584480000E3,4.928978168E1 +2.584742000E3,3.697304160E1 +2.585017000E3,3.390321432E1 +2.585248000E3,4.818778278E1 +2.585552000E3,5.175969441E1 +2.585851000E3,4.752724055E1 +2.586108000E3,5.047732228E1 +2.586408000E3,5.003267867E1 +2.586651000E3,4.995698879E1 +2.586934000E3,4.985539117E1 +2.587202000E3,4.558719065E1 +2.587455000E3,4.973387236E1 +2.587702000E3,5.190737686E1 +2.587964000E3,4.955516560E1 +2.588211000E3,5.039526507E1 +2.588461000E3,3.897042435E1 +2.588748000E3,2.919124678E1 +2.589063000E3,3.061867322E1 +2.589398000E3,4.010104895E1 +2.589690000E3,3.640442215E1 +2.589998000E3,4.479952304E1 +2.590261000E3,4.757967128E1 +2.590558000E3,4.812333533E1 +2.590802000E3,4.603482331E1 +2.591083000E3,2.960043464E1 +2.591326000E3,3.684354753E1 +2.591591000E3,4.359182452E1 +2.591849000E3,4.788602237E1 +2.592228000E3,4.468031543E1 +2.592527000E3,3.894688899E1 +2.592778000E3,2.800490026E1 +2.593035000E3,4.310888325E1 +2.593333000E3,4.628339380E1 +2.593602000E3,4.440124594E1 +2.593883000E3,4.123163794E1 +2.594160000E3,3.127645239E1 +2.594429000E3,3.071812965E1 +2.594749000E3,4.618618296E1 +2.595070000E3,5.248181749E1 +2.595312000E3,4.786265879E1 +2.595668000E3,3.990233287E1 +2.595973000E3,4.173583037E1 +2.596256000E3,3.709278400E1 +2.596497000E3,3.229385861E1 +2.596813000E3,4.380573021E1 +2.597084000E3,4.783628282E1 +2.597325000E3,5.024593568E1 +2.597578000E3,5.102379549E1 +2.597828000E3,4.760481411E1 +2.598089000E3,3.822780835E1 +2.598387000E3,3.417342767E1 +2.598736000E3,2.863579065E1 +2.598981000E3,2.886228233E1 +2.599228000E3,2.855965247E1 +2.599493000E3,3.083396855E1 +2.599764000E3,3.581659374E1 +2.600032000E3,4.317647632E1 +2.600330000E3,4.853625621E1 +2.600623000E3,5.102467342E1 +2.600867000E3,4.877836926E1 +2.601112000E3,4.705612686E1 +2.601365000E3,4.889085742E1 +2.601612000E3,4.654488136E1 +2.601956000E3,4.055024190E1 +2.602220000E3,3.990851266E1 +2.602547000E3,3.648352551E1 +2.602794000E3,5.324982942E1 +2.603078000E3,5.268965363E1 +2.603338000E3,4.851189142E1 +2.603637000E3,5.135006473E1 +2.603925000E3,4.939301404E1 +2.604238000E3,5.337101389E1 +2.604488000E3,5.022765286E1 +2.604734000E3,5.253186666E1 +2.605064000E3,4.127453431E1 +2.605321000E3,4.114070867E1 +2.605572000E3,4.042282231E1 +2.605820000E3,4.255774466E1 +2.606073000E3,4.746726668E1 +2.606319000E3,4.761848671E1 +2.606565000E3,4.983628061E1 +2.606849000E3,3.046517787E1 +2.607082000E3,3.832211131E1 +2.607339000E3,4.741131966E1 +2.607609000E3,4.453335589E1 +2.607874000E3,3.545592153E1 +2.608197000E3,4.672891376E1 +2.608451000E3,4.755881287E1 +2.608706000E3,4.827652641E1 +2.608952000E3,4.727153141E1 +2.609226000E3,4.731450942E1 +2.609537000E3,3.981385402E1 +2.609784000E3,3.194698732E1 +2.610041000E3,3.314164027E1 +2.610283000E3,2.819786732E1 +2.610546000E3,2.664547785E1 +2.610857000E3,2.913544778E1 +2.611125000E3,3.961651759E1 +2.611432000E3,3.852777426E1 +2.611666000E3,3.205673146E1 +2.611951000E3,4.233182010E1 +2.612229000E3,3.378509898E1 +2.612454000E3,4.071755552E1 +2.612730000E3,5.018278065E1 +2.613050000E3,4.100034395E1 +2.613359000E3,3.892108016E1 +2.613628000E3,5.091321799E1 +2.613871000E3,4.336916838E1 +2.614108000E3,3.960788811E1 +2.614408000E3,3.948227358E1 +2.614722000E3,3.631863435E1 +2.614975000E3,4.057042340E1 +2.615256000E3,4.414132009E1 +2.615486000E3,4.180934435E1 +2.615750000E3,4.153999936E1 +2.615997000E3,3.521796466E1 +2.616260000E3,5.443854687E1 +2.616548000E3,5.408118563E1 +2.616842000E3,4.951275264E1 +2.617090000E3,5.182722031E1 +2.617344000E3,4.327522742E1 +2.617643000E3,5.375122422E1 +2.617975000E3,5.216635190E1 +2.618233000E3,4.126006713E1 +2.618497000E3,4.980260599E1 +2.618804000E3,4.655838197E1 +2.619044000E3,4.977945459E1 +2.619327000E3,4.875559075E1 +2.619562000E3,4.983226039E1 +2.619834000E3,4.741689273E1 +2.620075000E3,4.923498746E1 +2.620352000E3,4.923432072E1 +2.620664000E3,4.040876723E1 +2.620916000E3,3.889825840E1 +2.621142000E3,5.245081579E1 +2.621448000E3,4.684934794E1 +2.621687000E3,4.583906640E1 +2.621992000E3,4.366517623E1 +2.622230000E3,3.373873872E1 +2.622475000E3,3.701694694E1 +2.622750000E3,3.544967426E1 +2.623008000E3,3.363206222E1 +2.623285000E3,4.009589135E1 +2.623562000E3,4.408709562E1 +2.623825000E3,4.800133533E1 +2.624131000E3,4.855432282E1 +2.624414000E3,4.808187444E1 +2.624671000E3,5.252566194E1 +2.624932000E3,4.890333861E1 +2.625183000E3,4.370428781E1 +2.625430000E3,3.668118979E1 +2.625747000E3,4.353955331E1 +2.626003000E3,4.224026412E1 +2.626267000E3,4.311785789E1 +2.626514000E3,3.517806855E1 +2.626763000E3,3.981966751E1 +2.627025000E3,3.444602265E1 +2.627334000E3,3.341390757E1 +2.627660000E3,3.926570124E1 +2.627920000E3,4.341089288E1 +2.628216000E3,4.081134870E1 +2.628467000E3,3.912400300E1 +2.628730000E3,3.657553946E1 +2.629000000E3,3.072838888E1 +2.629284000E3,2.929703023E1 +2.629549000E3,3.378014550E1 +2.629844000E3,4.760306323E1 +2.630080000E3,4.024322042E1 +2.630373000E3,3.235913140E1 +2.630611000E3,3.920509877E1 +2.630919000E3,5.103841717E1 +2.631222000E3,5.813980805E1 +2.631514000E3,5.190256812E1 +2.631753000E3,4.653294376E1 +2.632054000E3,4.782140153E1 +2.632295000E3,4.977458693E1 +2.632592000E3,5.371197571E1 +2.632828000E3,5.056512655E1 +2.633140000E3,5.325824914E1 +2.633383000E3,4.973751947E1 +2.633632000E3,4.853342473E1 +2.633950000E3,3.905011010E1 +2.634254000E3,3.751700759E1 +2.634549000E3,5.292771607E1 +2.634786000E3,5.557450981E1 +2.635082000E3,4.974692283E1 +2.635319000E3,5.393938197E1 +2.635611000E3,4.675981835E1 +2.635848000E3,4.299614910E1 +2.636145000E3,3.756646750E1 +2.636395000E3,3.824353200E1 +2.636648000E3,3.045317917E1 +2.636942000E3,3.257931849E1 +2.637299000E3,3.010616025E1 +2.637599000E3,4.995329379E1 +2.637834000E3,4.824584689E1 +2.638071000E3,5.059212149E1 +2.638363000E3,5.330633429E1 +2.638612000E3,5.343612136E1 +2.638897000E3,4.755550111E1 +2.639122000E3,4.119881812E1 +2.639362000E3,3.902726568E1 +2.639659000E3,4.451944661E1 +2.639896000E3,4.587471035E1 +2.640164000E3,4.115502802E1 +2.640409000E3,4.505311495E1 +2.640656000E3,4.913968689E1 +2.640951000E3,5.110923180E1 +2.641208000E3,4.281604120E1 +2.641505000E3,4.825854961E1 +2.641748000E3,4.861588211E1 +2.642059000E3,4.450542116E1 +2.642304000E3,4.274821036E1 +2.642556000E3,3.503446158E1 +2.642862000E3,4.080900103E1 +2.643164000E3,4.152079562E1 +2.643527000E3,3.935881933E1 +2.643833000E3,3.760570593E1 +2.644082000E3,3.959144469E1 +2.644327000E3,4.007918652E1 +2.644573000E3,4.288120719E1 +2.644814000E3,4.793099478E1 +2.645114000E3,4.424069452E1 +2.645391000E3,4.078427844E1 +2.645635000E3,3.902795236E1 +2.645871000E3,4.393773718E1 +2.646111000E3,4.085627764E1 +2.646355000E3,4.393316509E1 +2.646690000E3,4.428892908E1 +2.646958000E3,4.601464396E1 +2.647235000E3,4.300358696E1 +2.647474000E3,4.083829680E1 +2.647758000E3,5.406220971E1 +2.648003000E3,4.253716581E1 +2.648273000E3,4.506680000E1 +2.648514000E3,3.500046728E1 +2.648758000E3,3.537281462E1 +2.649004000E3,5.013819891E1 +2.649251000E3,5.388943830E1 +2.649556000E3,5.656370208E1 +2.649891000E3,5.696480404E1 +2.650216000E3,4.675400561E1 +2.650515000E3,4.179549274E1 +2.650777000E3,4.536624285E1 +2.651084000E3,4.297370528E1 +2.651336000E3,4.376785410E1 +2.651635000E3,3.354560746E1 +2.651881000E3,2.537939319E1 +2.652180000E3,3.168783420E1 +2.652481000E3,4.898553010E1 +2.652737000E3,5.438993966E1 +2.652992000E3,4.963834041E1 +2.653252000E3,4.227369117E1 +2.653502000E3,4.301436765E1 +2.653812000E3,3.649724292E1 +2.654061000E3,4.086211966E1 +2.654320000E3,3.223281741E1 +2.654605000E3,2.807672508E1 +2.654836000E3,2.764825285E1 +2.655100000E3,4.598866982E1 +2.655350000E3,4.383741939E1 +2.655590000E3,4.883555528E1 +2.655837000E3,4.815765811E1 +2.656131000E3,5.047261312E1 +2.656369000E3,5.124829846E1 +2.656626000E3,3.956134092E1 +2.656925000E3,3.503286763E1 +2.657200000E3,3.224209198E1 +2.657447000E3,4.294806319E1 +2.657761000E3,4.898454413E1 +2.658011000E3,5.320780356E1 +2.658286000E3,5.345186604E1 +2.658542000E3,4.849291145E1 +2.658789000E3,5.098648363E1 +2.659034000E3,4.892931203E1 +2.659289000E3,4.580698225E1 +2.659530000E3,3.709695762E1 +2.659834000E3,3.457925551E1 +2.660081000E3,3.855219813E1 +2.660383000E3,3.845534481E1 +2.660628000E3,4.619372518E1 +2.660921000E3,4.848307744E1 +2.661167000E3,4.790880967E1 +2.661464000E3,4.667520128E1 +2.661710000E3,4.098851532E1 +2.662006000E3,4.035468673E1 +2.662245000E3,3.753010710E1 +2.662592000E3,4.792080660E1 +2.662862000E3,4.709835917E1 +2.663123000E3,3.501409506E1 +2.663374000E3,3.240664296E1 +2.663631000E3,4.326696615E1 +2.663874000E3,4.411177933E1 +2.664133000E3,3.936378145E1 +2.664382000E3,3.443614227E1 +2.664648000E3,3.761654306E1 +2.664944000E3,5.164457484E1 +2.665198000E3,2.810669920E1 +2.665512000E3,2.931307063E1 +2.665876000E3,3.108643425E1 +2.666131000E3,3.278101889E1 +2.666439000E3,4.277860150E1 +2.666693000E3,4.213131936E1 +2.667002000E3,3.935849781E1 +2.667259000E3,4.137879880E1 +2.667575000E3,3.790565018E1 +2.667827000E3,3.845274836E1 +2.668153000E3,3.676763670E1 +2.668452000E3,3.751975183E1 +2.668696000E3,3.224848897E1 +2.669023000E3,3.611134142E1 +2.669316000E3,4.467495655E1 +2.669607000E3,4.735906080E1 +2.669885000E3,5.159453510E1 +2.670167000E3,5.321308782E1 +2.670485000E3,5.282242631E1 +2.670747000E3,5.127719277E1 +2.670997000E3,4.902251972E1 +2.671243000E3,4.450532678E1 +2.671540000E3,3.864078148E1 +2.671788000E3,3.720620343E1 +2.672044000E3,4.496142790E1 +2.672357000E3,4.705640535E1 +2.672617000E3,3.890316941E1 +2.672864000E3,4.027639889E1 +2.673159000E3,4.202335245E1 +2.673421000E3,4.285452583E1 +2.673720000E3,3.626679930E1 +2.673964000E3,4.670395357E1 +2.674210000E3,4.915586670E1 +2.674514000E3,5.353785994E1 +2.674811000E3,5.414016767E1 +2.675048000E3,5.591079353E1 +2.675364000E3,3.844031623E1 +2.675661000E3,3.124520008E1 +2.675946000E3,3.566755596E1 +2.676189000E3,3.490423263E1 +2.676498000E3,5.070292882E1 +2.676799000E3,5.356134163E1 +2.677047000E3,5.161634227E1 +2.677305000E3,5.185439004E1 +2.677581000E3,5.315585532E1 +2.677832000E3,4.418578879E1 +2.678087000E3,3.972693415E1 +2.678335000E3,4.338465258E1 +2.678650000E3,5.168404535E1 +2.678934000E3,4.984483773E1 +2.679249000E3,4.977401184E1 +2.679507000E3,5.044345616E1 +2.679823000E3,4.232585634E1 +2.680128000E3,3.026551109E1 +2.680400000E3,3.009656886E1 +2.680660000E3,4.894119824E1 +2.680913000E3,4.712312643E1 +2.681208000E3,4.239602863E1 +2.681477000E3,4.875338950E1 +2.681768000E3,4.887945421E1 +2.682128000E3,4.379352407E1 +2.682394000E3,4.073494394E1 +2.682637000E3,3.685872977E1 +2.682895000E3,2.883047793E1 +2.683163000E3,3.769147996E1 +2.683455000E3,3.713975885E1 +2.683749000E3,4.855681627E1 +2.683994000E3,4.936430656E1 +2.684290000E3,5.303947120E1 +2.684540000E3,5.031092673E1 +2.684833000E3,4.783130186E1 +2.685073000E3,4.898734587E1 +2.685348000E3,4.686166956E1 +2.685598000E3,4.244245178E1 +2.685917000E3,3.872119900E1 +2.686161000E3,4.891396583E1 +2.686434000E3,4.491629365E1 +2.686687000E3,3.588391777E1 +2.686952000E3,3.156965948E1 +2.687206000E3,3.184725563E1 +2.687480000E3,3.153561496E1 +2.687733000E3,3.669659228E1 +2.688049000E3,3.507922771E1 +2.688340000E3,3.251056517E1 +2.688645000E3,4.079174670E1 +2.688915000E3,4.837277005E1 +2.689163000E3,4.669136560E1 +2.689426000E3,3.659115086E1 +2.689751000E3,4.814125321E1 +2.689994000E3,4.721335081E1 +2.690235000E3,5.119773767E1 +2.690471000E3,4.584232122E1 +2.690738000E3,4.687969307E1 +2.691006000E3,4.116197132E1 +2.691312000E3,2.850019915E1 +2.691659000E3,3.175399572E1 +2.691948000E3,3.215115185E1 +2.692197000E3,2.655209633E1 +2.692466000E3,3.136629444E1 +2.692727000E3,2.928762690E1 +2.692976000E3,2.688909217E1 +2.693281000E3,3.350197248E1 +2.693518000E3,3.760267236E1 +2.693776000E3,3.194141055E1 +2.694032000E3,3.113878807E1 +2.694299000E3,2.830606211E1 +2.694602000E3,2.632227285E1 +2.694941000E3,2.736240000E1 +2.695184000E3,3.956118458E1 +2.695488000E3,4.069974415E1 +2.695732000E3,4.498590768E1 +2.696030000E3,3.370199172E1 +2.696300000E3,3.284857688E1 +2.696535000E3,2.919082343E1 +2.696815000E3,3.146626789E1 +2.697056000E3,2.968971947E1 +2.697354000E3,4.116455896E1 +2.697640000E3,5.055341773E1 +2.697888000E3,5.163434474E1 +2.698155000E3,4.792936353E1 +2.698456000E3,4.111753823E1 +2.698732000E3,4.594070701E1 +2.699031000E3,3.204472070E1 +2.699273000E3,2.836668859E1 +2.699578000E3,2.624009297E1 +2.699855000E3,2.719538340E1 +2.700110000E3,2.868563476E1 +2.700399000E3,2.757039916E1 +2.700662000E3,2.546630310E1 +2.700960000E3,2.981844134E1 +2.701310000E3,3.063471239E1 +2.701629000E3,4.014173680E1 +2.701894000E3,3.281157953E1 +2.702206000E3,4.268438101E1 +2.702448000E3,4.272045970E1 +2.702710000E3,4.782744516E1 +2.702984000E3,4.067538265E1 +2.703255000E3,3.821763448E1 +2.703566000E3,3.373237040E1 +2.703865000E3,2.762261654E1 +2.704108000E3,3.058182972E1 +2.704366000E3,4.157303269E1 +2.704695000E3,4.128988216E1 +2.705002000E3,3.725674585E1 +2.705260000E3,3.318881716E1 +2.705544000E3,3.512644750E1 +2.705774000E3,3.012622541E1 +2.706039000E3,3.307868989E1 +2.706297000E3,3.089854998E1 +2.706599000E3,2.870455364E1 +2.706901000E3,2.573473536E1 +2.707155000E3,2.708285982E1 +2.707419000E3,2.641018696E1 +2.707644000E3,2.532685142E1 +2.707945000E3,2.741320006E1 +2.708188000E3,2.764718970E1 +2.708460000E3,3.745935532E1 +2.708711000E3,4.292241509E1 +2.708955000E3,4.431523077E1 +2.709266000E3,3.812245251E1 +2.709534000E3,3.199637282E1 +2.709802000E3,3.030937111E1 +2.710049000E3,3.172341474E1 +2.710303000E3,4.706685853E1 +2.710610000E3,4.372593931E1 +2.710859000E3,4.298246415E1 +2.711196000E3,4.313732995E1 +2.711485000E3,3.646858634E1 +2.711745000E3,3.547356546E1 +2.712003000E3,4.802507202E1 +2.712259000E3,4.666185634E1 +2.712527000E3,4.298723738E1 +2.712813000E3,3.203029787E1 +2.713082000E3,2.721140687E1 +2.713344000E3,3.967881707E1 +2.713594000E3,5.017429445E1 +2.713859000E3,4.690730331E1 +2.714106000E3,4.892140969E1 +2.714475000E3,4.312346900E1 +2.714730000E3,4.926615820E1 +2.714984000E3,4.690558758E1 +2.715298000E3,3.116292546E1 +2.715563000E3,2.731472603E1 +2.715855000E3,3.029992609E1 +2.716160000E3,3.149201904E1 +2.716442000E3,2.826058660E1 +2.716703000E3,2.713282366E1 +2.716957000E3,3.659207256E1 +2.717253000E3,3.982143620E1 +2.717592000E3,4.316888996E1 +2.717851000E3,4.348787554E1 +2.718149000E3,4.336902207E1 +2.718464000E3,4.494305168E1 +2.718765000E3,4.280996114E1 +2.719042000E3,4.083199069E1 +2.719277000E3,3.924180447E1 +2.719573000E3,2.985025677E1 +2.719800000E3,2.924980764E1 +2.720042000E3,2.589394072E1 +2.720346000E3,2.996884267E1 +2.720607000E3,2.951796470E1 +2.720882000E3,2.762273017E1 +2.721181000E3,4.946261833E1 +2.721422000E3,4.848220411E1 +2.721736000E3,4.816357380E1 +2.722001000E3,5.238238407E1 +2.722305000E3,5.586118797E1 +2.722602000E3,5.474108905E1 +2.722856000E3,5.089156984E1 +2.723105000E3,4.900978141E1 +2.723369000E3,5.541376880E1 +2.723666000E3,4.827427134E1 +2.723997000E3,4.802338633E1 +2.724296000E3,3.537215093E1 +2.724548000E3,3.822637167E1 +2.724844000E3,3.388327957E1 +2.725086000E3,3.756611639E1 +2.725338000E3,4.489615211E1 +2.725635000E3,5.048833137E1 +2.725871000E3,4.298428385E1 +2.726174000E3,3.303114009E1 +2.726475000E3,4.527811220E1 +2.726764000E3,4.815487328E1 +2.727017000E3,4.761823346E1 +2.727328000E3,4.180028821E1 +2.727607000E3,4.512936944E1 +2.727849000E3,4.337880786E1 +2.728101000E3,4.031817829E1 +2.728401000E3,3.509684782E1 +2.728650000E3,4.495565250E1 +2.728895000E3,4.157595660E1 +2.729138000E3,5.008202715E1 +2.729381000E3,5.308960545E1 +2.729622000E3,4.943413955E1 +2.729917000E3,4.820467383E1 +2.730234000E3,5.168344618E1 +2.730544000E3,5.128425900E1 +2.730837000E3,5.242528085E1 +2.731075000E3,5.125548047E1 +2.731382000E3,5.027678189E1 +2.731625000E3,4.595108129E1 +2.731917000E3,5.425640288E1 +2.732229000E3,5.493458667E1 +2.732522000E3,5.383738769E1 +2.732781000E3,4.577468908E1 +2.733036000E3,4.877165484E1 +2.733337000E3,5.155317163E1 +2.733582000E3,4.868465804E1 +2.733904000E3,5.094377769E1 +2.734158000E3,4.778052408E1 +2.734485000E3,4.980696312E1 +2.734788000E3,5.229980528E1 +2.735043000E3,4.487473927E1 +2.735323000E3,5.405477376E1 +2.735550000E3,5.095910777E1 +2.735795000E3,4.081340338E1 +2.736110000E3,3.942379743E1 +2.736352000E3,4.377765131E1 +2.736599000E3,4.311237352E1 +2.736822000E3,4.659947655E1 +2.737071000E3,4.430846393E1 +2.737313000E3,4.579154087E1 +2.737577000E3,4.628223866E1 +2.737831000E3,3.937286623E1 +2.738094000E3,3.852847368E1 +2.738336000E3,3.907921933E1 +2.738583000E3,5.112703685E1 +2.738825000E3,4.827754167E1 +2.739100000E3,4.022366081E1 +2.739352000E3,3.342841986E1 +2.739649000E3,3.354947585E1 +2.740003000E3,2.967395260E1 +2.740259000E3,4.724158021E1 +2.740515000E3,4.406232704E1 +2.740781000E3,4.128290785E1 +2.741030000E3,3.766271195E1 +2.741274000E3,3.234308905E1 +2.741542000E3,5.345026714E1 +2.741790000E3,5.189834860E1 +2.742037000E3,4.310520052E1 +2.742373000E3,3.005340200E1 +2.742661000E3,3.957498865E1 +2.742905000E3,4.298992085E1 +2.743235000E3,3.914359224E1 +2.743487000E3,4.665969106E1 +2.743742000E3,4.569837618E1 +2.743989000E3,4.037243126E1 +2.744288000E3,4.393151618E1 +2.744525000E3,4.191552922E1 +2.744830000E3,3.855450094E1 +2.745068000E3,3.137426682E1 +2.745312000E3,3.988970586E1 +2.745595000E3,4.261856210E1 +2.745912000E3,4.545535941E1 +2.746178000E3,3.982007681E1 +2.746515000E3,3.873990925E1 +2.746799000E3,4.024486228E1 +2.747097000E3,3.778822068E1 +2.747346000E3,3.349647091E1 +2.747587000E3,3.949530039E1 +2.747884000E3,4.424971453E1 +2.748182000E3,4.109440717E1 +2.748426000E3,4.429824127E1 +2.748724000E3,3.941870140E1 +2.749014000E3,3.719766140E1 +2.749309000E3,3.407061301E1 +2.749659000E3,3.362708714E1 +2.749929000E3,4.111324363E1 +2.750185000E3,4.275268079E1 +2.750445000E3,5.624172952E1 +2.750726000E3,4.374037489E1 +2.750957000E3,4.189644016E1 +2.751207000E3,3.621210842E1 +2.751519000E3,4.177841495E1 +2.751770000E3,4.048458953E1 +2.752052000E3,3.923884976E1 +2.752303000E3,3.426258793E1 +2.752575000E3,3.252443323E1 +2.752926000E3,3.211416673E1 +2.753222000E3,3.245023971E1 +2.753483000E3,3.266068265E1 +2.753758000E3,4.004662592E1 +2.754054000E3,4.872983792E1 +2.754320000E3,5.041613029E1 +2.754567000E3,4.540589836E1 +2.754814000E3,3.042430240E1 +2.755080000E3,3.072459076E1 +2.755376000E3,3.998104284E1 +2.755642000E3,4.049850263E1 +2.755970000E3,4.294486763E1 +2.756315000E3,4.067196783E1 +2.756573000E3,4.772031632E1 +2.756825000E3,4.988707098E1 +2.757139000E3,4.555538995E1 +2.757388000E3,4.252022698E1 +2.757651000E3,3.810962452E1 +2.757917000E3,3.494795311E1 +2.758159000E3,3.247098224E1 +2.758413000E3,3.588027190E1 +2.758665000E3,3.200494843E1 +2.758920000E3,4.772506231E1 +2.759171000E3,3.775844318E1 +2.759507000E3,3.920116655E1 +2.759772000E3,4.528245497E1 +2.760086000E3,4.240466142E1 +2.760349000E3,4.544544837E1 +2.760652000E3,4.039389797E1 +2.760923000E3,3.896680017E1 +2.761194000E3,4.381534416E1 +2.761436000E3,4.424202471E1 +2.761681000E3,4.737958135E1 +2.761960000E3,4.213672401E1 +2.762194000E3,4.516117441E1 +2.762462000E3,4.279973284E1 +2.762806000E3,3.859577230E1 +2.763061000E3,4.880977241E1 +2.763403000E3,4.365184399E1 +2.763660000E3,3.848143477E1 +2.763932000E3,4.787104427E1 +2.764214000E3,3.823665924E1 +2.764451000E3,3.049392521E1 +2.764732000E3,3.086844430E1 +2.764975000E3,2.587396098E1 +2.765284000E3,3.362049288E1 +2.765536000E3,3.353664382E1 +2.765825000E3,5.140360254E1 +2.766193000E3,5.105178275E1 +2.766449000E3,5.027787452E1 +2.766756000E3,4.961194015E1 +2.766992000E3,4.473604482E1 +2.767290000E3,5.567849424E1 +2.767540000E3,5.366739238E1 +2.767788000E3,5.268444481E1 +2.768092000E3,4.378358357E1 +2.768389000E3,4.285786187E1 +2.768638000E3,3.838737205E1 +2.768928000E3,4.053738598E1 +2.769250000E3,3.914310468E1 +2.769517000E3,3.950994015E1 +2.769781000E3,4.085678781E1 +2.770095000E3,3.706118568E1 +2.770362000E3,3.878826243E1 +2.770640000E3,4.509160576E1 +2.770877000E3,4.395611401E1 +2.771129000E3,3.894826552E1 +2.771368000E3,3.783168139E1 +2.771620000E3,3.074559821E1 +2.771881000E3,4.191911052E1 +2.772136000E3,4.492008577E1 +2.772447000E3,3.666714779E1 +2.772710000E3,4.135207765E1 +2.772994000E3,4.645886813E1 +2.773238000E3,5.078995440E1 +2.773478000E3,5.706152467E1 +2.773725000E3,5.135582573E1 +2.773990000E3,4.900548267E1 +2.774266000E3,5.275962483E1 +2.774567000E3,3.947101760E1 +2.774806000E3,4.078518654E1 +2.775113000E3,4.929998433E1 +2.775417000E3,4.396253608E1 +2.775784000E3,4.382194135E1 +2.776077000E3,4.131860223E1 +2.776341000E3,4.321133953E1 +2.776596000E3,3.942571045E1 +2.776881000E3,5.035254190E1 +2.777176000E3,5.596334670E1 +2.777432000E3,6.003222989E1 +2.777730000E3,5.139953750E1 +2.778036000E3,5.596001036E1 +2.778330000E3,5.632045587E1 +2.778567000E3,5.352711698E1 +2.778873000E3,5.160150080E1 +2.779243000E3,5.407354895E1 +2.779513000E3,5.151192380E1 +2.779810000E3,5.479493680E1 +2.780084000E3,5.006197117E1 +2.780351000E3,5.012247277E1 +2.780644000E3,4.598086802E1 +2.780884000E3,3.959492635E1 +2.781142000E3,3.571624227E1 +2.781421000E3,4.082207018E1 +2.781720000E3,5.162800696E1 +2.781984000E3,5.211692198E1 +2.782250000E3,5.017743125E1 +2.782617000E3,4.685740156E1 +2.782916000E3,4.348825959E1 +2.783213000E3,3.825858224E1 +2.783454000E3,4.923981343E1 +2.783750000E3,5.319160353E1 +2.783992000E3,4.967899375E1 +2.784288000E3,3.952802481E1 +2.784535000E3,3.328379343E1 +2.784779000E3,3.014350405E1 +2.785020000E3,3.405755755E1 +2.785313000E3,4.653255974E1 +2.785639000E3,4.571255084E1 +2.785896000E3,4.212654376E1 +2.786166000E3,4.635178938E1 +2.786421000E3,4.614547408E1 +2.786716000E3,4.279815144E1 +2.787018000E3,3.739201392E1 +2.787261000E3,4.297599275E1 +2.787569000E3,5.279236826E1 +2.787869000E3,4.385267374E1 +2.788181000E3,3.538660905E1 +2.788488000E3,4.283741498E1 +2.788738000E3,3.898018884E1 +2.789079000E3,4.417569536E1 +2.789327000E3,3.821417555E1 +2.789586000E3,4.124587088E1 +2.789850000E3,4.583617377E1 +2.790116000E3,4.758354441E1 +2.790413000E3,4.386951397E1 +2.790662000E3,4.527431896E1 +2.790956000E3,4.454979637E1 +2.791207000E3,4.019280914E1 +2.791465000E3,4.549375778E1 +2.791714000E3,4.076569420E1 +2.791963000E3,3.807465350E1 +2.792293000E3,5.201775254E1 +2.792550000E3,4.217772267E1 +2.792797000E3,5.472035384E1 +2.793107000E3,5.403984906E1 +2.793357000E3,5.591746790E1 +2.793622000E3,5.564159884E1 +2.793875000E3,5.646584479E1 +2.794118000E3,5.185594958E1 +2.794377000E3,4.895735059E1 +2.794636000E3,5.654557288E1 +2.794943000E3,5.012866956E1 +2.795254000E3,4.757016947E1 +2.795528000E3,5.211434220E1 +2.795790000E3,4.452402763E1 +2.796058000E3,4.290214665E1 +2.796307000E3,3.465820610E1 +2.796556000E3,4.339944359E1 +2.796852000E3,4.313164949E1 +2.797091000E3,5.438037991E1 +2.797389000E3,5.514175593E1 +2.797635000E3,4.928848190E1 +2.797924000E3,4.659784940E1 +2.798220000E3,4.998887096E1 +2.798537000E3,4.486399829E1 +2.798842000E3,4.885866840E1 +2.799091000E3,4.635335968E1 +2.799347000E3,4.504358299E1 +2.799594000E3,3.958005741E1 +2.799833000E3,4.827229253E1 +2.800082000E3,4.830536262E1 +2.800388000E3,4.659260793E1 +2.800673000E3,4.111758509E1 +2.800972000E3,4.464305855E1 +2.801233000E3,4.497276151E1 +2.801524000E3,3.374775892E1 +2.801884000E3,3.426238632E1 +2.802202000E3,3.521995684E1 +2.802451000E3,3.181302785E1 +2.802708000E3,2.794884084E1 +2.803019000E3,3.320140571E1 +2.803325000E3,3.478175393E1 +2.803626000E3,3.529465039E1 +2.803932000E3,3.962950189E1 +2.804222000E3,5.725685057E1 +2.804486000E3,5.740119524E1 +2.804784000E3,5.069347451E1 +2.805056000E3,5.047632669E1 +2.805376000E3,5.207930289E1 +2.805626000E3,5.264810014E1 +2.805887000E3,5.288954519E1 +2.806177000E3,4.457356662E1 +2.806431000E3,3.885566564E1 +2.806679000E3,3.768676842E1 +2.806944000E3,3.953483275E1 +2.807192000E3,4.348722722E1 +2.807514000E3,4.091620627E1 +2.807832000E3,4.192587435E1 +2.808086000E3,4.434501723E1 +2.808380000E3,4.393917252E1 +2.808686000E3,4.250763593E1 +2.809001000E3,4.146719312E1 +2.809249000E3,4.084508562E1 +2.809517000E3,4.466153637E1 +2.809817000E3,4.002274614E1 +2.810111000E3,4.310032831E1 +2.810375000E3,4.901386280E1 +2.810661000E3,4.607368963E1 +2.810927000E3,4.387647276E1 +2.811225000E3,5.143943484E1 +2.811469000E3,5.045193234E1 +2.811861000E3,4.363012565E1 +2.812115000E3,4.450854658E1 +2.812371000E3,4.453857946E1 +2.812631000E3,4.628101753E1 +2.812921000E3,4.634691523E1 +2.813212000E3,4.654803531E1 +2.813510000E3,4.718980060E1 +2.813758000E3,4.430765323E1 +2.814051000E3,4.322664022E1 +2.814349000E3,4.450224091E1 +2.814582000E3,4.170367724E1 +2.814868000E3,3.985315953E1 +2.815113000E3,5.280042862E1 +2.815400000E3,4.119993511E1 +2.815662000E3,4.251502783E1 +2.815937000E3,4.221594106E1 +2.816186000E3,4.475181393E1 +2.816425000E3,4.757705666E1 +2.816666000E3,4.971185267E1 +2.816968000E3,4.862141287E1 +2.817211000E3,4.713523003E1 +2.817492000E3,4.541478066E1 +2.817737000E3,4.363493262E1 +2.817996000E3,4.428814895E1 +2.818246000E3,4.395099122E1 +2.818516000E3,4.781334664E1 +2.818773000E3,4.439472962E1 +2.819027000E3,4.768107540E1 +2.819278000E3,4.535748265E1 +2.819523000E3,5.061196572E1 +2.819779000E3,4.816069594E1 +2.820044000E3,4.715573746E1 +2.820374000E3,4.919198579E1 +2.820635000E3,5.486134785E1 +2.820897000E3,4.845922458E1 +2.821173000E3,4.486224636E1 +2.821520000E3,4.543631827E1 +2.821781000E3,4.823449020E1 +2.822049000E3,4.622456265E1 +2.822354000E3,3.467019045E1 +2.822632000E3,3.820707315E1 +2.822892000E3,3.870865044E1 +2.823175000E3,3.526203974E1 +2.823424000E3,3.398332746E1 +2.823673000E3,4.060940798E1 +2.823924000E3,4.531267955E1 +2.824156000E3,4.823172894E1 +2.824426000E3,5.381643572E1 +2.824772000E3,5.219878503E1 +2.825053000E3,4.888255160E1 +2.825277000E3,4.023650802E1 +2.825526000E3,3.467455539E1 +2.825785000E3,3.818404386E1 +2.826078000E3,4.122702652E1 +2.826315000E3,3.713088668E1 +2.826619000E3,4.891468535E1 +2.826912000E3,5.266971981E1 +2.827148000E3,4.991025067E1 +2.827457000E3,5.435242869E1 +2.827718000E3,5.378448717E1 +2.828053000E3,5.171570017E1 +2.828327000E3,5.600593919E1 +2.828581000E3,5.175339102E1 +2.828821000E3,4.567582373E1 +2.829101000E3,3.417267221E1 +2.829337000E3,3.532670702E1 +2.829576000E3,4.323212593E1 +2.829823000E3,3.952189104E1 +2.830096000E3,4.372473758E1 +2.830363000E3,4.288959864E1 +2.830609000E3,3.903893871E1 +2.830954000E3,3.847274859E1 +2.831281000E3,4.911689413E1 +2.831539000E3,5.342672798E1 +2.831798000E3,5.558955965E1 +2.832091000E3,5.519004987E1 +2.832341000E3,5.877942264E1 +2.832589000E3,4.602825434E1 +2.832861000E3,3.380054471E1 +2.833107000E3,3.583644563E1 +2.833403000E3,4.160983164E1 +2.833653000E3,3.903662215E1 +2.833958000E3,3.879412363E1 +2.834222000E3,4.121083607E1 +2.834460000E3,4.235130104E1 +2.834723000E3,5.615135633E1 +2.834993000E3,5.355273371E1 +2.835271000E3,4.896976792E1 +2.835535000E3,5.132324538E1 +2.835792000E3,5.529277110E1 +2.836041000E3,5.163674064E1 +2.836366000E3,4.657927993E1 +2.836613000E3,4.238907241E1 +2.836875000E3,5.376683406E1 +2.837143000E3,5.052269952E1 +2.837398000E3,5.018740192E1 +2.837697000E3,4.680907883E1 +2.837961000E3,4.427452663E1 +2.838227000E3,3.300759096E1 +2.838490000E3,3.639504198E1 +2.838784000E3,4.617517315E1 +2.839084000E3,4.692063960E1 +2.839325000E3,4.445415179E1 +2.839620000E3,4.215561710E1 +2.839863000E3,4.433766229E1 +2.840168000E3,4.210423337E1 +2.840460000E3,3.873922427E1 +2.840768000E3,3.717852459E1 +2.841057000E3,3.957811826E1 +2.841313000E3,3.760389186E1 +2.841638000E3,4.310249633E1 +2.841921000E3,4.813095040E1 +2.842192000E3,4.623131926E1 +2.842444000E3,4.648620260E1 +2.842743000E3,4.620801315E1 +2.843027000E3,4.321069748E1 +2.843281000E3,4.205248893E1 +2.843587000E3,2.653536028E1 +2.843863000E3,2.940344619E1 +2.844270000E3,4.715941302E1 +2.844533000E3,4.512147604E1 +2.844793000E3,4.758865475E1 +2.845051000E3,4.853448129E1 +2.845325000E3,4.647479098E1 +2.845569000E3,4.600966189E1 +2.845842000E3,4.549543262E1 +2.846088000E3,4.262631529E1 +2.846347000E3,4.522394390E1 +2.846652000E3,4.657245211E1 +2.846924000E3,4.554651191E1 +2.847231000E3,4.501421864E1 +2.847609000E3,4.413715050E1 +2.847859000E3,3.641102730E1 +2.848158000E3,2.959594862E1 +2.848409000E3,3.229903797E1 +2.848684000E3,3.716282001E1 +2.848948000E3,4.864280315E1 +2.849195000E3,4.698625872E1 +2.849453000E3,4.475077374E1 +2.849725000E3,4.320130236E1 +2.850029000E3,4.052232702E1 +2.850286000E3,4.987213531E1 +2.850622000E3,4.470574790E1 +2.850953000E3,4.746715529E1 +2.851224000E3,4.817674396E1 +2.851475000E3,4.755384271E1 +2.851775000E3,4.606857790E1 +2.852037000E3,4.602549066E1 +2.852280000E3,4.107899882E1 +2.852578000E3,4.602936757E1 +2.852832000E3,4.594357604E1 +2.853123000E3,4.132874601E1 +2.853424000E3,3.891402985E1 +2.853676000E3,3.210431116E1 +2.854034000E3,4.148325967E1 +2.854336000E3,4.539420759E1 +2.854629000E3,3.813311910E1 +2.854857000E3,3.204826654E1 +2.855103000E3,4.042825728E1 +2.855348000E3,3.781799437E1 +2.855635000E3,3.485312778E1 +2.855901000E3,3.176423587E1 +2.856194000E3,3.286644404E1 +2.856446000E3,3.601261840E1 +2.856741000E3,3.056779431E1 +2.856990000E3,2.876904683E1 +2.857247000E3,2.336161379E1 +2.857525000E3,5.319777865E1 +2.857765000E3,4.924210585E1 +2.858030000E3,4.161506516E1 +2.858287000E3,3.471025819E1 +2.858592000E3,2.954431085E1 +2.858878000E3,3.551304021E1 +2.859146000E3,4.056554733E1 +2.859438000E3,4.716772205E1 +2.859749000E3,4.728214145E1 +2.860112000E3,4.333221553E1 +2.860355000E3,3.970290127E1 +2.860627000E3,4.675070996E1 +2.860922000E3,5.292655838E1 +2.861168000E3,5.560528000E1 +2.861448000E3,5.155203362E1 +2.861684000E3,4.854372910E1 +2.861981000E3,5.166225265E1 +2.862226000E3,5.239758268E1 +2.862536000E3,4.880079262E1 +2.862801000E3,5.860724491E1 +2.863049000E3,5.487085904E1 +2.863366000E3,4.477307493E1 +2.863622000E3,4.809216762E1 +2.863923000E3,4.128779228E1 +2.864180000E3,4.039902121E1 +2.864473000E3,3.763315716E1 +2.864758000E3,3.836830031E1 +2.865072000E3,3.562217561E1 +2.865375000E3,4.251016575E1 +2.865631000E3,3.959478231E1 +2.865894000E3,3.906491963E1 +2.866161000E3,3.169567809E1 +2.866409000E3,4.180907280E1 +2.866769000E3,5.009501966E1 +2.867095000E3,4.485052737E1 +2.867377000E3,4.543449817E1 +2.867634000E3,4.558186247E1 +2.867912000E3,3.310648260E1 +2.868160000E3,3.368680580E1 +2.868403000E3,3.259924908E1 +2.868652000E3,3.468868920E1 +2.868945000E3,3.811295096E1 +2.869214000E3,3.680532391E1 +2.869523000E3,4.480088276E1 +2.869800000E3,4.321197878E1 +2.870149000E3,3.870196995E1 +2.870426000E3,4.501549736E1 +2.870686000E3,3.869046251E1 +2.870998000E3,5.116138397E1 +2.871259000E3,4.565952095E1 +2.871545000E3,4.044036430E1 +2.871835000E3,3.776423584E1 +2.872146000E3,4.283314388E1 +2.872428000E3,4.822150076E1 +2.872666000E3,4.609488251E1 +2.872966000E3,4.199842198E1 +2.873258000E3,4.199452970E1 +2.873557000E3,4.094164548E1 +2.873868000E3,3.451929232E1 +2.874146000E3,3.725700957E1 +2.874378000E3,3.820854143E1 +2.874632000E3,3.261818797E1 +2.874949000E3,4.229639001E1 +2.875219000E3,4.314663650E1 +2.875496000E3,4.030472415E1 +2.875772000E3,3.740362597E1 +2.876082000E3,3.770704299E1 +2.876334000E3,4.016521241E1 +2.876600000E3,4.155568881E1 +2.876855000E3,3.864643482E1 +2.877164000E3,3.358142820E1 +2.877430000E3,2.988882280E1 +2.877698000E3,4.233125756E1 +2.877954000E3,4.245249096E1 +2.878273000E3,3.619646633E1 +2.878541000E3,3.199868066E1 +2.878801000E3,4.546979293E1 +2.879062000E3,5.523869784E1 +2.879342000E3,5.605267417E1 +2.879584000E3,5.653411529E1 +2.879928000E3,4.626290707E1 +2.880202000E3,3.540012043E1 +2.880447000E3,3.620700172E1 +2.880691000E3,2.922036878E1 +2.880938000E3,3.659816429E1 +2.881251000E3,4.145147882E1 +2.881527000E3,3.894444603E1 +2.881851000E3,3.741315407E1 +2.882112000E3,4.094962867E1 +2.882373000E3,4.333353585E1 +2.882625000E3,4.557565518E1 +2.882879000E3,4.308396997E1 +2.883145000E3,4.097722416E1 +2.883416000E3,3.927850137E1 +2.883669000E3,3.223716221E1 +2.883941000E3,3.004581442E1 +2.884209000E3,3.765685263E1 +2.884466000E3,3.878810543E1 +2.884718000E3,2.988953340E1 +2.884967000E3,3.346960294E1 +2.885221000E3,3.799647420E1 +2.885537000E3,3.116842616E1 +2.885796000E3,3.671552801E1 +2.886084000E3,4.459898232E1 +2.886404000E3,4.708370738E1 +2.886677000E3,5.036035843E1 +2.886979000E3,4.113513329E1 +2.887251000E3,3.503458684E1 +2.887528000E3,3.462090732E1 +2.887785000E3,4.001717165E1 +2.888037000E3,3.538133603E1 +2.888296000E3,3.662805649E1 +2.888547000E3,4.263542947E1 +2.888820000E3,4.431895872E1 +2.889079000E3,4.300413574E1 +2.889340000E3,4.173317530E1 +2.889582000E3,4.288275032E1 +2.889932000E3,3.944773526E1 +2.890197000E3,3.214266541E1 +2.890503000E3,3.060588708E1 +2.890777000E3,3.296322494E1 +2.891017000E3,3.394251803E1 +2.891320000E3,3.208741950E1 +2.891570000E3,3.441770910E1 +2.891849000E3,3.368561294E1 +2.892087000E3,3.475967611E1 +2.892337000E3,3.740055420E1 +2.892635000E3,3.542355307E1 +2.892981000E3,3.105741683E1 +2.893247000E3,3.245614761E1 +2.893513000E3,4.142391644E1 +2.893779000E3,4.497461971E1 +2.894029000E3,4.653178389E1 +2.894282000E3,4.703576342E1 +2.894540000E3,4.751169602E1 +2.894805000E3,4.201422178E1 +2.895062000E3,4.370261317E1 +2.895310000E3,4.660906406E1 +2.895596000E3,4.633159753E1 +2.895865000E3,4.381116332E1 +2.896155000E3,4.368523912E1 +2.896405000E3,4.747051902E1 +2.896651000E3,4.222577444E1 +2.896905000E3,4.572633660E1 +2.897184000E3,5.203776089E1 +2.897450000E3,5.010843836E1 +2.897744000E3,4.910530865E1 +2.898022000E3,4.664859833E1 +2.898308000E3,3.985336775E1 +2.898564000E3,3.683403533E1 +2.898812000E3,4.284820320E1 +2.899091000E3,4.286036404E1 +2.899396000E3,5.224070654E1 +2.899753000E3,4.568546748E1 +2.900018000E3,5.586433220E1 +2.900278000E3,4.514230837E1 +2.900559000E3,3.853422420E1 +2.900865000E3,3.299777990E1 +2.901139000E3,3.594596453E1 +2.901415000E3,2.896001699E1 +2.901650000E3,2.556794162E1 +2.901937000E3,2.525773120E1 +2.902206000E3,3.138035436E1 +2.902457000E3,3.725731802E1 +2.902816000E3,3.600302530E1 +2.903095000E3,3.476106384E1 +2.903340000E3,3.325569458E1 +2.903600000E3,3.217545002E1 +2.903858000E3,2.994578711E1 +2.904108000E3,3.277965280E1 +2.904372000E3,4.013450695E1 +2.904627000E3,3.103730297E1 +2.904913000E3,4.187502355E1 +2.905174000E3,3.591627686E1 +2.905452000E3,3.067277870E1 +2.905743000E3,2.813597523E1 +2.906004000E3,2.760542404E1 +2.906321000E3,3.327793113E1 +2.906579000E3,4.111963776E1 +2.906835000E3,4.309802180E1 +2.907113000E3,2.749088524E1 +2.907354000E3,2.269523459E1 +2.907657000E3,3.631225289E1 +2.907901000E3,4.146405590E1 +2.908156000E3,3.785670954E1 +2.908403000E3,4.498664409E1 +2.908675000E3,4.174614917E1 +2.908932000E3,4.632262643E1 +2.909189000E3,3.569839459E1 +2.909522000E3,4.635385444E1 +2.909802000E3,4.337190367E1 +2.910035000E3,3.796960383E1 +2.910287000E3,4.151951269E1 +2.910538000E3,4.245940710E1 +2.910795000E3,4.268454470E1 +2.911045000E3,4.280139929E1 +2.911335000E3,3.861780445E1 +2.911584000E3,4.028221299E1 +2.911885000E3,3.934408626E1 +2.912139000E3,3.091195323E1 +2.912386000E3,2.709027446E1 +2.912622000E3,2.721294148E1 +2.912915000E3,3.169063213E1 +2.913196000E3,3.663766462E1 +2.913461000E3,3.582442105E1 +2.913744000E3,2.742218375E1 +2.913990000E3,3.432349666E1 +2.914297000E3,4.586386591E1 +2.914575000E3,4.813383402E1 +2.914888000E3,5.016441505E1 +2.915190000E3,4.132593749E1 +2.915481000E3,3.992883324E1 +2.915827000E3,3.713218942E1 +2.916087000E3,4.862036940E1 +2.916351000E3,4.985137398E1 +2.916622000E3,5.126616609E1 +2.916881000E3,4.180876614E1 +2.917157000E3,4.057128207E1 +2.917418000E3,3.994520906E1 +2.917681000E3,3.719846748E1 +2.917964000E3,4.377214072E1 +2.918264000E3,4.081140664E1 +2.918518000E3,4.149712935E1 +2.918784000E3,3.965801174E1 +2.919127000E3,3.499332266E1 +2.919415000E3,3.454976163E1 +2.919745000E3,3.801205804E1 +2.920003000E3,4.266330834E1 +2.920244000E3,3.704497233E1 +2.920548000E3,3.869800412E1 +2.920840000E3,3.880762608E1 +2.921081000E3,3.967826348E1 +2.921325000E3,4.387098551E1 +2.921573000E3,3.795523909E1 +2.921876000E3,3.884773193E1 +2.922122000E3,3.949919351E1 +2.922481000E3,3.549368996E1 +2.922774000E3,5.176437750E1 +2.923023000E3,4.673969779E1 +2.923306000E3,3.729614967E1 +2.923573000E3,3.557242251E1 +2.923880000E3,5.351861504E1 +2.924155000E3,5.486661937E1 +2.924424000E3,5.693150230E1 +2.924735000E3,4.225245527E1 +2.924988000E3,4.082554353E1 +2.925252000E3,3.807826598E1 +2.925573000E3,3.587807510E1 +2.925935000E3,4.290242494E1 +2.926237000E3,3.960438869E1 +2.926496000E3,3.732088357E1 +2.926751000E3,3.216321546E1 +2.926991000E3,3.001846960E1 +2.927295000E3,3.634949804E1 +2.927531000E3,3.127042454E1 +2.927829000E3,3.158500209E1 +2.928073000E3,2.815993792E1 +2.928370000E3,2.793102526E1 +2.928613000E3,2.468786691E1 +2.928943000E3,2.345175993E1 +2.929256000E3,2.908559709E1 +2.929497000E3,2.580950455E1 +2.929819000E3,2.871707976E1 +2.930114000E3,2.977851279E1 +2.930374000E3,4.220437998E1 +2.930636000E3,3.122152770E1 +2.930945000E3,3.902308439E1 +2.931227000E3,3.648582434E1 +2.931474000E3,4.774090674E1 +2.931717000E3,4.487624905E1 +2.931963000E3,4.620728265E1 +2.932258000E3,4.011602626E1 +2.932585000E3,4.011469989E1 +2.932871000E3,4.531107143E1 +2.933117000E3,4.299757904E1 +2.933366000E3,4.255561828E1 +2.933662000E3,4.180851663E1 +2.933899000E3,3.354142728E1 +2.934139000E3,4.061788576E1 +2.934435000E3,3.190428864E1 +2.934678000E3,3.136545948E1 +2.934975000E3,3.172564299E1 +2.935227000E3,3.538616066E1 +2.935577000E3,3.227761247E1 +2.935826000E3,3.587578035E1 +2.936132000E3,2.830690319E1 +2.936391000E3,2.983281120E1 +2.936636000E3,3.198482114E1 +2.936936000E3,4.529436692E1 +2.937191000E3,3.904726622E1 +2.937498000E3,4.546792713E1 +2.937790000E3,4.178984789E1 +2.938055000E3,3.901507008E1 +2.938332000E3,3.530528642E1 +2.938634000E3,3.766035689E1 +2.939060000E3,5.595745424E1 +2.939318000E3,5.800941557E1 +2.939576000E3,5.061871726E1 +2.939836000E3,6.017617924E1 +2.940124000E3,5.889680612E1 +2.940380000E3,5.553527141E1 +2.940631000E3,4.982924060E1 +2.940889000E3,5.386899946E1 +2.941183000E3,5.511436312E1 +2.941477000E3,5.474658637E1 +2.941736000E3,5.669903896E1 +2.941985000E3,5.352207307E1 +2.942302000E3,5.089540084E1 +2.942556000E3,5.163069551E1 +2.942811000E3,4.946827448E1 +2.943144000E3,4.292332560E1 +2.943386000E3,4.769421745E1 +2.943625000E3,4.741300910E1 +2.943936000E3,4.918473310E1 +2.944182000E3,4.358732286E1 +2.944456000E3,4.338106770E1 +2.944722000E3,5.302068646E1 +2.945006000E3,4.800501219E1 +2.945370000E3,4.445792428E1 +2.945619000E3,3.768400599E1 +2.945867000E3,3.829540629E1 +2.946159000E3,3.766669508E1 +2.946411000E3,4.016839261E1 +2.946712000E3,4.041724233E1 +2.947009000E3,4.012217251E1 +2.947323000E3,3.568820570E1 +2.947568000E3,3.690839296E1 +2.947818000E3,4.813137033E1 +2.948084000E3,5.325274156E1 +2.948341000E3,5.892514859E1 +2.948730000E3,4.314585435E1 +2.948980000E3,4.049194134E1 +2.949257000E3,4.522053034E1 +2.949515000E3,4.263261915E1 +2.949826000E3,5.159034358E1 +2.950126000E3,4.094053529E1 +2.950370000E3,4.144504964E1 +2.950613000E3,4.584689520E1 +2.950933000E3,3.986259871E1 +2.951211000E3,5.835616238E1 +2.951492000E3,4.865922153E1 +2.951773000E3,4.646806952E1 +2.952049000E3,5.501145746E1 +2.952349000E3,5.395560549E1 +2.952606000E3,5.094776028E1 +2.952859000E3,5.987933082E1 +2.953123000E3,5.553863596E1 +2.953365000E3,6.056471643E1 +2.953626000E3,5.705129962E1 +2.953881000E3,5.620457969E1 +2.954143000E3,4.633104773E1 +2.954403000E3,4.542785483E1 +2.954666000E3,4.357363747E1 +2.954925000E3,5.905995366E1 +2.955255000E3,5.325307727E1 +2.955500000E3,6.730464031E1 +2.955795000E3,6.362836082E1 +2.956030000E3,6.057596417E1 +2.956332000E3,6.813918985E1 +2.956573000E3,6.403678903E1 +2.956871000E3,6.230635205E1 +2.957135000E3,6.746671531E1 +2.957401000E3,6.427695804E1 +2.957673000E3,5.206458526E1 +2.957933000E3,5.261265827E1 +2.958182000E3,4.877242183E1 +2.958552000E3,6.627461000E1 +2.958808000E3,6.741673158E1 +2.959062000E3,6.597614354E1 +2.959304000E3,6.540552328E1 +2.959551000E3,6.528289091E1 +2.959864000E3,5.830061674E1 +2.960121000E3,5.985112812E1 +2.960428000E3,6.090568068E1 +2.960720000E3,6.807446854E1 +2.960985000E3,6.930722199E1 +2.961226000E3,6.386100217E1 +2.961579000E3,6.028451745E1 +2.961849000E3,6.477814340E1 +2.962132000E3,6.837046944E1 +2.962373000E3,6.647209363E1 +2.962660000E3,6.694202205E1 +2.962967000E3,6.648756695E1 +2.963231000E3,6.482625001E1 +2.963518000E3,7.095796361E1 +2.963775000E3,6.454417662E1 +2.964062000E3,6.533171518E1 +2.964339000E3,6.471819922E1 +2.964629000E3,5.679367810E1 +2.964962000E3,5.573913208E1 +2.965271000E3,6.251351498E1 +2.965502000E3,6.071427502E1 +2.965745000E3,6.212696498E1 +2.966049000E3,5.601947939E1 +2.966292000E3,5.543203731E1 +2.966544000E3,5.440105204E1 +2.966807000E3,5.169354717E1 +2.967114000E3,5.098574914E1 +2.967354000E3,4.778774527E1 +2.967603000E3,5.527018336E1 +2.967874000E3,5.069142516E1 +2.968220000E3,5.540354927E1 +2.968470000E3,5.388190573E1 +2.968725000E3,5.648678631E1 +2.968994000E3,6.195289166E1 +2.969259000E3,5.924073062E1 +2.969526000E3,5.554902217E1 +2.969797000E3,6.073047002E1 +2.970049000E3,5.750580172E1 +2.970375000E3,6.205206850E1 +2.970685000E3,5.892672487E1 +2.971008000E3,5.603539479E1 +2.971306000E3,5.380141597E1 +2.971609000E3,6.182570937E1 +2.971860000E3,5.755792598E1 +2.972120000E3,7.094637252E1 +2.972374000E3,7.220321333E1 +2.972688000E3,6.074903881E1 +2.972946000E3,5.132390204E1 +2.973203000E3,5.555176793E1 +2.973482000E3,5.082163203E1 +2.973746000E3,6.668022761E1 +2.974024000E3,6.951681150E1 +2.974257000E3,6.170353739E1 +2.974507000E3,6.191784425E1 +2.974845000E3,6.249884739E1 +2.975129000E3,6.139715498E1 +2.975385000E3,5.458109058E1 +2.975684000E3,6.285593412E1 +2.975925000E3,6.801445640E1 +2.976223000E3,6.762358149E1 +2.976454000E3,6.007212586E1 +2.976698000E3,6.176376027E1 +2.976998000E3,5.489351528E1 +2.977244000E3,6.419682450E1 +2.977544000E3,6.335879864E1 +2.977813000E3,6.346249627E1 +2.978071000E3,6.122721977E1 +2.978303000E3,6.269343112E1 +2.978564000E3,5.719207644E1 +2.978818000E3,6.209398004E1 +2.979085000E3,6.570545323E1 +2.979335000E3,6.443300698E1 +2.979582000E3,6.395479352E1 +2.979841000E3,6.285971298E1 +2.980091000E3,6.452411240E1 +2.980337000E3,6.648403811E1 +2.980638000E3,6.146510082E1 +2.980898000E3,6.178604521E1 +2.981191000E3,5.906416732E1 +2.981418000E3,6.139524316E1 +2.981668000E3,6.754933795E1 +2.981958000E3,5.804633278E1 +2.982221000E3,5.544285219E1 +2.982480000E3,5.252390700E1 +2.982741000E3,5.442974682E1 +2.983009000E3,5.886662164E1 +2.983270000E3,6.039421332E1 +2.983532000E3,5.984826425E1 +2.983780000E3,6.038747451E1 +2.984020000E3,5.836799318E1 +2.984266000E3,6.011457774E1 +2.984654000E3,6.086793857E1 +2.984928000E3,6.104684994E1 +2.985246000E3,6.081085188E1 +2.985504000E3,6.338602633E1 +2.985771000E3,6.224702903E1 +2.986040000E3,5.771788346E1 +2.986351000E3,5.832375863E1 +2.986657000E3,6.179808645E1 +2.986893000E3,6.074067698E1 +2.987188000E3,5.763905723E1 +2.987459000E3,5.411975455E1 +2.987698000E3,5.609082395E1 +2.988020000E3,5.838775534E1 +2.988261000E3,5.545934196E1 +2.988564000E3,5.818253650E1 +2.988803000E3,5.693365858E1 +2.989084000E3,5.747877452E1 +2.989394000E3,6.108654481E1 +2.989646000E3,6.109521888E1 +2.989952000E3,5.453216708E1 +2.990235000E3,5.325056065E1 +2.990530000E3,5.226229633E1 +2.990796000E3,5.566734434E1 +2.991153000E3,5.983192138E1 +2.991409000E3,5.902282422E1 +2.991712000E3,6.553978750E1 +2.991962000E3,6.323109208E1 +2.992210000E3,6.430699278E1 +2.992477000E3,6.439502996E1 +2.992769000E3,5.882379749E1 +2.993024000E3,7.076998945E1 +2.993317000E3,6.710088514E1 +2.993554000E3,6.332152683E1 +2.993846000E3,6.013348006E1 +2.994081000E3,6.492156154E1 +2.994361000E3,6.054189638E1 +2.994671000E3,5.878685209E1 +2.994911000E3,6.363988355E1 +2.995218000E3,6.266127576E1 +2.995513000E3,6.231860976E1 +2.995750000E3,6.770663238E1 +2.996056000E3,6.411706706E1 +2.996346000E3,6.607053327E1 +2.996592000E3,6.231837938E1 +2.996884000E3,6.235557028E1 +2.997130000E3,6.626149607E1 +2.997386000E3,6.897456616E1 +2.997721000E3,6.896820400E1 +2.997984000E3,5.708709076E1 +2.998260000E3,5.465136518E1 +2.998532000E3,6.136090841E1 +2.998792000E3,6.427324700E1 +2.999047000E3,5.922924051E1 +2.999308000E3,5.964993479E1 +2.999619000E3,5.937495043E1 +2.999910000E3,6.345321013E1 +3.000196000E3,6.558504608E1 +3.000438000E3,6.566442906E1 +3.000721000E3,6.596782674E1 +3.001048000E3,6.493210478E1 +3.001299000E3,6.778071085E1 +3.001554000E3,5.810398860E1 +3.001834000E3,6.461256831E1 +3.002084000E3,5.637103240E1 +3.002332000E3,6.244497501E1 +3.002633000E3,5.749162406E1 +3.002980000E3,6.268391580E1 +3.003246000E3,6.122193913E1 +3.003572000E3,6.467185898E1 +3.003877000E3,6.239318427E1 +3.004266000E3,6.708558966E1 +3.004573000E3,6.293492178E1 +3.004871000E3,6.169168265E1 +3.005129000E3,5.944912128E1 +3.005404000E3,5.631628075E1 +3.005704000E3,6.080609102E1 +3.005964000E3,6.424565764E1 +3.006250000E3,6.447415860E1 +3.006481000E3,6.606824769E1 +3.006756000E3,6.337387069E1 +3.007004000E3,6.294291386E1 +3.007286000E3,6.430484746E1 +3.007612000E3,6.091848593E1 +3.007867000E3,6.343837854E1 +3.008169000E3,5.978702761E1 +3.008432000E3,5.965865421E1 +3.008675000E3,5.540362761E1 +3.008918000E3,5.443572137E1 +3.009202000E3,6.171389250E1 +3.009446000E3,6.487192568E1 +3.009738000E3,5.958143908E1 +3.009983000E3,6.189834719E1 +3.010232000E3,5.752745917E1 +3.010489000E3,6.339873723E1 +3.010846000E3,6.127984243E1 +3.011144000E3,6.065194767E1 +3.011387000E3,6.253646864E1 +3.011646000E3,6.179753794E1 +3.011925000E3,6.231808205E1 +3.012153000E3,6.101579519E1 +3.012442000E3,5.876502421E1 +3.012737000E3,5.809905793E1 +3.013015000E3,5.695141293E1 +3.013301000E3,5.973139928E1 +3.013577000E3,6.007240820E1 +3.013839000E3,7.136453087E1 +3.014063000E3,7.173892024E1 +3.014315000E3,6.885425335E1 +3.014559000E3,6.110376355E1 +3.014808000E3,6.296723224E1 +3.015075000E3,6.021879294E1 +3.015327000E3,6.012811489E1 +3.015577000E3,6.282613373E1 +3.015850000E3,6.884549735E1 +3.016115000E3,6.913958233E1 +3.016397000E3,6.608409337E1 +3.016648000E3,6.437779633E1 +3.016896000E3,6.412579817E1 +3.017253000E3,6.408373459E1 +3.017500000E3,6.487828946E1 +3.017743000E3,6.281964754E1 +3.018003000E3,6.153697843E1 +3.018258000E3,6.503307442E1 +3.018512000E3,6.508021131E1 +3.018791000E3,5.910017780E1 +3.019028000E3,5.757469918E1 +3.019325000E3,5.762978005E1 +3.019573000E3,5.366611226E1 +3.019824000E3,5.708763529E1 +3.020086000E3,5.488621207E1 +3.020437000E3,5.826722905E1 +3.020695000E3,5.951373108E1 +3.020968000E3,6.130623452E1 +3.021217000E3,6.025771329E1 +3.021490000E3,5.280103891E1 +3.021737000E3,6.123009986E1 +3.022037000E3,6.404958762E1 +3.022328000E3,6.469373641E1 +3.022599000E3,6.283727611E1 +3.022840000E3,6.248869497E1 +3.023123000E3,6.767270030E1 +3.023363000E3,6.436289402E1 +3.023706000E3,6.007121161E1 +3.023992000E3,6.067397941E1 +3.024255000E3,6.005092329E1 +3.024513000E3,6.146229561E1 +3.024803000E3,6.214304530E1 +3.025060000E3,6.107977952E1 +3.025317000E3,6.268440106E1 +3.025560000E3,5.744048190E1 +3.025823000E3,6.080102592E1 +3.026092000E3,6.359394744E1 +3.026384000E3,6.219604097E1 +3.026685000E3,6.296073955E1 +3.026912000E3,6.243574530E1 +3.027190000E3,6.540426031E1 +3.027426000E3,7.038009166E1 +3.027684000E3,7.133800291E1 +3.027943000E3,6.847497315E1 +3.028214000E3,7.049817235E1 +3.028486000E3,6.555713643E1 +3.028748000E3,6.762942526E1 +3.029008000E3,6.780082040E1 +3.029264000E3,6.644646205E1 +3.029533000E3,7.066497540E1 +3.029800000E3,6.700863421E1 +3.030174000E3,6.263767412E1 +3.030459000E3,5.937975562E1 +3.030697000E3,6.189133018E1 +3.030958000E3,6.479748496E1 +3.031218000E3,6.070421224E1 +3.031488000E3,5.567295684E1 +3.031754000E3,6.162939414E1 +3.032026000E3,6.462556380E1 +3.032293000E3,6.300561819E1 +3.032553000E3,6.320528504E1 +3.032852000E3,6.205536878E1 +3.033102000E3,7.179598993E1 +3.033490000E3,6.907149718E1 +3.033750000E3,6.110443799E1 +3.034008000E3,5.743025653E1 +3.034257000E3,5.714646515E1 +3.034505000E3,6.193634179E1 +3.034762000E3,6.511685208E1 +3.035034000E3,6.647840023E1 +3.035277000E3,6.637602928E1 +3.035534000E3,6.208743290E1 +3.035873000E3,6.158502662E1 +3.036127000E3,6.138896352E1 +3.036392000E3,5.988342330E1 +3.036737000E3,5.834272912E1 +3.036998000E3,6.504474047E1 +3.037253000E3,5.801637483E1 +3.037569000E3,6.208073459E1 +3.037831000E3,6.555093843E1 +3.038084000E3,6.686352963E1 +3.038356000E3,6.398821865E1 +3.038638000E3,6.053541888E1 +3.038927000E3,5.509282051E1 +3.039228000E3,6.213274835E1 +3.039473000E3,6.149105368E1 +3.039745000E3,6.097957376E1 +3.040056000E3,6.313145073E1 +3.040300000E3,6.749857058E1 +3.040549000E3,6.031561589E1 +3.040852000E3,5.991948868E1 +3.041110000E3,6.228314687E1 +3.041358000E3,6.281493679E1 +3.041621000E3,6.031124820E1 +3.041926000E3,6.035954468E1 +3.042177000E3,6.230627050E1 +3.042448000E3,5.381586458E1 +3.042741000E3,6.032611045E1 +3.043026000E3,5.796046788E1 +3.043304000E3,6.286261594E1 +3.043605000E3,6.188894569E1 +3.043848000E3,6.196336480E1 +3.044091000E3,6.506902622E1 +3.044345000E3,6.547913264E1 +3.044589000E3,6.701681380E1 +3.044849000E3,6.398074775E1 +3.045095000E3,6.102355933E1 +3.045350000E3,6.546609328E1 +3.045598000E3,6.626677347E1 +3.045845000E3,6.212155235E1 +3.046098000E3,6.475032486E1 +3.046433000E3,6.469401418E1 +3.046698000E3,6.335899573E1 +3.046970000E3,5.799459631E1 +3.047267000E3,5.777430210E1 +3.047527000E3,6.228044606E1 +3.047785000E3,5.521572273E1 +3.048044000E3,5.312506195E1 +3.048316000E3,5.877400717E1 +3.048592000E3,6.239358597E1 +3.048842000E3,6.019315355E1 +3.049164000E3,5.944515023E1 +3.049418000E3,6.571719967E1 +3.049752000E3,5.906077781E1 +3.050005000E3,6.269931225E1 +3.050242000E3,6.329267329E1 +3.050532000E3,6.094692628E1 +3.050797000E3,6.137608503E1 +3.051055000E3,6.019630450E1 +3.051299000E3,5.959056092E1 +3.051551000E3,6.195653625E1 +3.051802000E3,5.997942431E1 +3.052044000E3,6.071988649E1 +3.052348000E3,6.146559433E1 +3.052605000E3,6.320542640E1 +3.052903000E3,6.301314639E1 +3.053133000E3,6.491013087E1 +3.053386000E3,5.374424399E1 +3.053632000E3,5.337930652E1 +3.053925000E3,5.830420592E1 +3.054167000E3,5.827724976E1 +3.054414000E3,5.413373264E1 +3.054713000E3,5.438904566E1 +3.054952000E3,5.478972153E1 +3.055245000E3,6.026125791E1 +3.055545000E3,6.377000784E1 +3.055792000E3,6.273059884E1 +3.056116000E3,6.164463909E1 +3.056426000E3,6.310484015E1 +3.056665000E3,6.191865333E1 +3.056974000E3,6.044005004E1 +3.057225000E3,5.723160495E1 +3.057532000E3,6.482171923E1 +3.057799000E3,6.373654624E1 +3.058097000E3,6.579319958E1 +3.058333000E3,6.717439766E1 +3.058632000E3,6.244987186E1 +3.058874000E3,5.911459441E1 +3.059119000E3,6.246625617E1 +3.059514000E3,6.061929027E1 +3.059786000E3,6.141894857E1 +3.060044000E3,6.531006136E1 +3.060311000E3,6.745420282E1 +3.060564000E3,6.305040539E1 +3.060809000E3,6.250223063E1 +3.061063000E3,5.984183740E1 +3.061365000E3,6.201500936E1 +3.061610000E3,6.171968159E1 +3.061853000E3,5.636652524E1 +3.062137000E3,5.937450988E1 +3.062405000E3,5.424162977E1 +3.062724000E3,5.577353705E1 +3.062968000E3,6.265208868E1 +3.063225000E3,6.754657095E1 +3.063470000E3,6.259832443E1 +3.063731000E3,5.846954403E1 +3.063975000E3,5.735719718E1 +3.064220000E3,5.614657426E1 +3.064460000E3,5.493678071E1 +3.064711000E3,6.175770153E1 +3.064961000E3,6.502893325E1 +3.065266000E3,6.372557142E1 +3.065562000E3,6.165604672E1 +3.065921000E3,6.202265536E1 +3.066181000E3,5.894659424E1 +3.066427000E3,5.516515279E1 +3.066669000E3,5.227763917E1 +3.066911000E3,5.331294555E1 +3.067166000E3,5.535383534E1 +3.067460000E3,5.490405248E1 +3.067721000E3,5.927902794E1 +3.068030000E3,6.001209348E1 +3.068288000E3,5.925707402E1 +3.068553000E3,6.116769528E1 +3.068848000E3,5.907075037E1 +3.069160000E3,5.402384091E1 +3.069467000E3,6.078433547E1 +3.069706000E3,6.064305090E1 +3.069991000E3,6.099922555E1 +3.070247000E3,6.081028216E1 +3.070500000E3,6.857342881E1 +3.070795000E3,6.830085683E1 +3.071035000E3,7.092929468E1 +3.071334000E3,6.670654987E1 +3.071580000E3,6.198358410E1 +3.071845000E3,6.029427505E1 +3.072216000E3,6.271100503E1 +3.072476000E3,6.548403896E1 +3.072709000E3,6.655140024E1 +3.072958000E3,6.872933885E1 +3.073221000E3,6.840034062E1 +3.073524000E3,6.189262665E1 +3.073801000E3,6.315516618E1 +3.074029000E3,6.431689152E1 +3.074282000E3,7.008635825E1 +3.074531000E3,6.529488526E1 +3.074781000E3,5.362885622E1 +3.075079000E3,6.174622467E1 +3.075321000E3,6.106059522E1 +3.075569000E3,6.727558853E1 +3.075841000E3,6.068477373E1 +3.076089000E3,6.224550385E1 +3.076358000E3,6.049387981E1 +3.076618000E3,5.554290122E1 +3.076868000E3,5.232623619E1 +3.077136000E3,5.715980006E1 +3.077434000E3,6.112308912E1 +3.077738000E3,5.964598426E1 +3.077997000E3,5.774993649E1 +3.078301000E3,5.930552673E1 +3.078632000E3,6.204668908E1 +3.078903000E3,6.135182684E1 +3.079234000E3,6.010535577E1 +3.079530000E3,5.612975229E1 +3.079846000E3,5.894789721E1 +3.080130000E3,6.424282153E1 +3.080395000E3,6.696093787E1 +3.080696000E3,5.929656512E1 +3.080931000E3,5.577162965E1 +3.081168000E3,6.096321541E1 +3.081415000E3,6.147204445E1 +3.081708000E3,6.518353223E1 +3.082066000E3,6.565001970E1 +3.082347000E3,6.152216198E1 +3.082591000E3,6.232488129E1 +3.082884000E3,6.450829181E1 +3.083131000E3,6.727741702E1 +3.083373000E3,6.596172391E1 +3.083615000E3,6.588974420E1 +3.083909000E3,6.215985231E1 +3.084146000E3,5.417797447E1 +3.084444000E3,5.776086644E1 +3.084736000E3,6.145598006E1 +3.085067000E3,6.705675690E1 +3.085353000E3,7.032609091E1 +3.085621000E3,6.942809802E1 +3.085926000E3,6.673219093E1 +3.086170000E3,5.874483463E1 +3.086457000E3,6.163530440E1 +3.086730000E3,5.863155738E1 +3.086955000E3,5.804604701E1 +3.087247000E3,7.202263239E1 +3.087542000E3,6.907595594E1 +3.087796000E3,7.104760035E1 +3.088063000E3,6.060670654E1 +3.088371000E3,6.409876160E1 +3.088642000E3,6.504332531E1 +3.088891000E3,6.050178076E1 +3.089172000E3,5.988548041E1 +3.089448000E3,6.419311516E1 +3.089715000E3,6.072209436E1 +3.089992000E3,6.148544930E1 +3.090256000E3,6.667985585E1 +3.090551000E3,6.360479893E1 +3.090829000E3,6.675347002E1 +3.091081000E3,6.585951744E1 +3.091337000E3,5.998998345E1 +3.091582000E3,7.213751425E1 +3.091973000E3,7.002319175E1 +3.092225000E3,6.554991346E1 +3.092495000E3,5.438962824E1 +3.092757000E3,5.806427109E1 +3.093010000E3,5.611571138E1 +3.093290000E3,5.427298566E1 +3.093553000E3,6.332676554E1 +3.093801000E3,6.191283999E1 +3.094088000E3,6.222056485E1 +3.094383000E3,6.679558422E1 +3.094660000E3,6.396349695E1 +3.094980000E3,6.335657582E1 +3.095321000E3,6.368682935E1 +3.095574000E3,6.239728447E1 +3.095829000E3,6.560913932E1 +3.096083000E3,6.288470186E1 +3.096327000E3,6.063834800E1 +3.096611000E3,5.698542980E1 +3.096866000E3,6.214573666E1 +3.097125000E3,6.108001307E1 +3.097382000E3,6.098898235E1 +3.097639000E3,6.935379750E1 +3.097944000E3,6.076333803E1 +3.098235000E3,5.747447310E1 +3.098595000E3,5.896750888E1 +3.098845000E3,6.428262322E1 +3.099146000E3,6.073561603E1 +3.099435000E3,5.610862272E1 +3.099679000E3,5.808393750E1 +3.099971000E3,6.306244141E1 +3.100214000E3,6.493760740E1 +3.100511000E3,5.964091377E1 +3.100753000E3,5.949423253E1 +3.100995000E3,6.324186751E1 +3.101237000E3,6.294719776E1 +3.101481000E3,6.618420708E1 +3.101805000E3,6.039251647E1 +3.102105000E3,6.883376735E1 +3.102388000E3,6.215701199E1 +3.102635000E3,6.251944475E1 +3.102926000E3,6.387718652E1 +3.103175000E3,6.262879933E1 +3.103469000E3,6.094246273E1 +3.103717000E3,5.780442917E1 +3.104010000E3,5.805018882E1 +3.104245000E3,6.073911170E1 +3.104537000E3,5.820155990E1 +3.104880000E3,5.691870737E1 +3.105139000E3,5.609187778E1 +3.105418000E3,5.368790307E1 +3.105673000E3,5.733127796E1 +3.105933000E3,5.834617124E1 +3.106196000E3,5.665251568E1 +3.106447000E3,5.839993992E1 +3.106707000E3,5.765825797E1 +3.106989000E3,6.346036236E1 +3.107241000E3,6.088974139E1 +3.107536000E3,5.623231578E1 +3.107836000E3,5.905990454E1 +3.108208000E3,5.913546091E1 +3.108462000E3,5.921957697E1 +3.108732000E3,6.403378055E1 +3.109010000E3,6.829473891E1 +3.109237000E3,6.866131452E1 +3.109530000E3,5.759864554E1 +3.109769000E3,5.216447932E1 +3.110067000E3,5.887622687E1 +3.110356000E3,5.912152229E1 +3.110621000E3,6.343631440E1 +3.110862000E3,6.110189356E1 +3.111105000E3,5.925249209E1 +3.111441000E3,5.583559168E1 +3.111708000E3,6.397874973E1 +3.112049000E3,5.864630935E1 +3.112314000E3,5.876030726E1 +3.112620000E3,5.558460131E1 +3.112980000E3,5.336927775E1 +3.113232000E3,5.351895645E1 +3.113515000E3,4.932805120E1 +3.113763000E3,6.323075662E1 +3.114057000E3,6.375401647E1 +3.114318000E3,6.430798012E1 +3.114651000E3,6.745313705E1 +3.114909000E3,6.370697195E1 +3.115204000E3,6.719832935E1 +3.115517000E3,6.353352979E1 +3.115816000E3,6.421660294E1 +3.116074000E3,6.666449428E1 +3.116372000E3,6.209745804E1 +3.116612000E3,5.853853683E1 +3.116911000E3,6.153177442E1 +3.117151000E3,6.465277685E1 +3.117439000E3,6.054074617E1 +3.117698000E3,5.762180605E1 +3.118029000E3,5.904912096E1 +3.118292000E3,6.054469105E1 +3.118547000E3,6.570885599E1 +3.118854000E3,6.686989978E1 +3.119103000E3,6.506823644E1 +3.119359000E3,5.780133308E1 +3.119610000E3,5.983707630E1 +3.119896000E3,6.102798325E1 +3.120167000E3,5.940835035E1 +3.120446000E3,6.154008300E1 +3.120717000E3,6.031178539E1 +3.120969000E3,6.222997321E1 +3.121291000E3,6.676268308E1 +3.121532000E3,6.244629438E1 +3.121778000E3,6.014719673E1 +3.122038000E3,6.351124664E1 +3.122317000E3,5.786579019E1 +3.122607000E3,5.704033688E1 +3.122864000E3,5.941823253E1 +3.123160000E3,6.366298469E1 +3.123429000E3,6.545330590E1 +3.123678000E3,6.206143443E1 +3.123932000E3,6.250040348E1 +3.124250000E3,6.193784317E1 +3.124582000E3,6.679802083E1 +3.124888000E3,6.239911876E1 +3.125141000E3,6.227743005E1 +3.125407000E3,5.930162190E1 +3.125655000E3,5.692493613E1 +3.125897000E3,6.100851678E1 +3.126155000E3,6.356932883E1 +3.126470000E3,6.583742229E1 +3.126735000E3,6.828531785E1 +3.127049000E3,6.744954014E1 +3.127349000E3,6.892448306E1 +3.127620000E3,6.312172108E1 +3.127885000E3,6.549450530E1 +3.128150000E3,6.274114245E1 +3.128434000E3,5.987443555E1 +3.128694000E3,5.754092402E1 +3.128967000E3,6.140483336E1 +3.129224000E3,5.793735580E1 +3.129483000E3,5.640840091E1 +3.129735000E3,7.068460790E1 +3.130042000E3,6.831622259E1 +3.130308000E3,6.661131327E1 +3.130563000E3,7.032191033E1 +3.130897000E3,6.429012882E1 +3.131166000E3,6.890779868E1 +3.131427000E3,6.812897599E1 +3.131726000E3,6.440583932E1 +3.132039000E3,6.371305855E1 +3.132310000E3,6.071113649E1 +3.132582000E3,6.356904702E1 +3.132834000E3,6.335195410E1 +3.133078000E3,5.922748305E1 +3.133357000E3,5.790290676E1 +3.133581000E3,6.067150466E1 +3.133827000E3,5.936438225E1 +3.134075000E3,5.651144024E1 +3.134312000E3,5.707156804E1 +3.134564000E3,6.256442790E1 +3.134822000E3,5.680653319E1 +3.135099000E3,6.386946987E1 +3.135341000E3,6.183817556E1 +3.135588000E3,5.791592939E1 +3.135843000E3,5.415500200E1 +3.136159000E3,5.828393923E1 +3.136402000E3,5.584102234E1 +3.136645000E3,5.843965538E1 +3.136922000E3,6.032067675E1 +3.137231000E3,6.082235855E1 +3.137514000E3,6.216335250E1 +3.137763000E3,6.576895249E1 +3.138052000E3,5.935628673E1 +3.138348000E3,5.697436057E1 +3.138590000E3,6.713499986E1 +3.138833000E3,5.996032355E1 +3.139071000E3,6.566814076E1 +3.139366000E3,6.469315039E1 +3.139607000E3,6.414816039E1 +3.139901000E3,6.238348704E1 +3.140144000E3,5.975478602E1 +3.140477000E3,5.617333113E1 +3.140789000E3,6.140881460E1 +3.141038000E3,5.760925345E1 +3.141323000E3,5.813474075E1 +3.141616000E3,6.190304914E1 +3.141899000E3,5.853813516E1 +3.142123000E3,6.019478920E1 +3.142387000E3,5.824830032E1 +3.142639000E3,6.031650371E1 +3.142898000E3,5.874305926E1 +3.143211000E3,6.365997735E1 +3.143459000E3,6.182267241E1 +3.143814000E3,6.153305629E1 +3.144076000E3,6.040235966E1 +3.144345000E3,6.279707978E1 +3.144591000E3,6.261441373E1 +3.144837000E3,5.722591859E1 +3.145082000E3,5.791919274E1 +3.145387000E3,6.142016587E1 +3.145678000E3,5.996802308E1 +3.145994000E3,5.761245992E1 +3.146269000E3,5.915341256E1 +3.146531000E3,5.679987844E1 +3.146814000E3,6.228452904E1 +3.147163000E3,6.038592359E1 +3.147440000E3,6.662509726E1 +3.147705000E3,5.864713600E1 +3.147961000E3,6.383827006E1 +3.148228000E3,6.445939632E1 +3.148543000E3,6.206597752E1 +3.148800000E3,6.082056407E1 +3.149046000E3,5.872798480E1 +3.149340000E3,5.792404132E1 +3.149585000E3,5.917409009E1 +3.149845000E3,5.619795947E1 +3.150164000E3,6.447379623E1 +3.150501000E3,6.336546747E1 +3.150798000E3,6.022605646E1 +3.151059000E3,5.837139298E1 +3.151360000E3,5.721847889E1 +3.151614000E3,7.085699981E1 +3.151908000E3,6.031233854E1 +3.152206000E3,6.170839562E1 +3.152452000E3,6.336115962E1 +3.152697000E3,6.732286145E1 +3.152943000E3,6.043278366E1 +3.153235000E3,5.822950572E1 +3.153537000E3,6.155234216E1 +3.153813000E3,5.671966020E1 +3.154078000E3,5.613348243E1 +3.154333000E3,5.384913785E1 +3.154580000E3,5.739778382E1 +3.154869000E3,5.617144196E1 +3.155103000E3,5.699346940E1 +3.155351000E3,6.356393037E1 +3.155653000E3,5.483372318E1 +3.155949000E3,5.806865262E1 +3.156195000E3,5.725879338E1 +3.156459000E3,5.708272088E1 +3.156776000E3,5.736330762E1 +3.157028000E3,5.620178265E1 +3.157280000E3,5.557503250E1 +3.157521000E3,6.379766868E1 +3.157864000E3,6.175462639E1 +3.158113000E3,5.970375584E1 +3.158365000E3,5.482220327E1 +3.158625000E3,6.094938302E1 +3.158872000E3,6.189076140E1 +3.159128000E3,6.365906369E1 +3.159385000E3,6.365252593E1 +3.159699000E3,6.421784723E1 +3.160039000E3,5.952347777E1 +3.160337000E3,6.582170091E1 +3.160643000E3,6.400621400E1 +3.160905000E3,5.982923632E1 +3.161162000E3,5.912958512E1 +3.161449000E3,5.744161350E1 +3.161722000E3,6.208953034E1 +3.161984000E3,6.743490019E1 +3.162228000E3,5.893358785E1 +3.162506000E3,6.260442429E1 +3.162777000E3,6.054589944E1 +3.163072000E3,5.958101250E1 +3.163380000E3,5.756716970E1 +3.163623000E3,5.897741262E1 +3.163916000E3,5.199350029E1 +3.164173000E3,5.607364633E1 +3.164444000E3,6.846587546E1 +3.164756000E3,5.833953537E1 +3.165011000E3,6.699601536E1 +3.165255000E3,6.024033326E1 +3.165530000E3,5.636786936E1 +3.165825000E3,5.917346905E1 +3.166077000E3,5.684739711E1 +3.166343000E3,5.441684119E1 +3.166607000E3,5.708423030E1 +3.166871000E3,5.726160097E1 +3.167212000E3,5.795085756E1 +3.167513000E3,5.359033433E1 +3.167800000E3,5.481028168E1 +3.168051000E3,5.771426852E1 +3.168321000E3,5.720698183E1 +3.168574000E3,6.029484328E1 +3.168847000E3,6.594273179E1 +3.169141000E3,5.814954146E1 +3.169451000E3,5.741553332E1 +3.169717000E3,5.474949866E1 +3.170064000E3,5.858087337E1 +3.170388000E3,5.901398101E1 +3.170689000E3,6.599046976E1 +3.170942000E3,6.777823262E1 +3.171184000E3,6.339704259E1 +3.171437000E3,5.678237753E1 +3.171694000E3,6.067324941E1 +3.171975000E3,6.337570500E1 +3.172215000E3,6.060254578E1 +3.172509000E3,6.511602204E1 +3.172792000E3,6.491523998E1 +3.173086000E3,6.236437487E1 +3.173442000E3,6.132637014E1 +3.173725000E3,5.575670785E1 +3.173997000E3,5.450541115E1 +3.174243000E3,5.816223835E1 +3.174516000E3,5.991084873E1 +3.174771000E3,5.959264792E1 +3.175022000E3,6.001504494E1 +3.175268000E3,5.794233494E1 +3.175510000E3,5.875384007E1 +3.175752000E3,6.582497874E1 +3.176001000E3,6.385809704E1 +3.176310000E3,6.575292490E1 +3.176700000E3,6.328122862E1 +3.176947000E3,6.160374932E1 +3.177205000E3,6.233605233E1 +3.177480000E3,5.746120395E1 +3.177733000E3,5.491961653E1 +3.178002000E3,5.346590976E1 +3.178308000E3,4.910433719E1 +3.178598000E3,5.548086035E1 +3.178876000E3,5.834728013E1 +3.179129000E3,5.722852381E1 +3.179407000E3,5.371032540E1 +3.179686000E3,5.375017527E1 +3.180066000E3,5.741446005E1 +3.180325000E3,5.595914402E1 +3.180624000E3,5.784989425E1 +3.180867000E3,5.818330240E1 +3.181112000E3,5.651638359E1 +3.181407000E3,5.400925398E1 +3.181645000E3,5.134681346E1 +3.181939000E3,5.540645654E1 +3.182189000E3,5.603348674E1 +3.182489000E3,5.612576596E1 +3.182726000E3,5.412821683E1 +3.183072000E3,5.364995955E1 +3.183373000E3,5.685067634E1 +3.183631000E3,5.292396423E1 +3.183913000E3,5.037305724E1 +3.184139000E3,5.458652507E1 +3.184386000E3,5.336216390E1 +3.184625000E3,5.355204553E1 +3.184861000E3,5.798216811E1 +3.185170000E3,5.037998219E1 +3.185412000E3,5.253320042E1 +3.185661000E3,5.864558083E1 +3.185944000E3,5.568855775E1 +3.186307000E3,6.065674046E1 +3.186594000E3,5.486017232E1 +3.186846000E3,5.354898396E1 +3.187128000E3,5.606629368E1 +3.187373000E3,5.887335608E1 +3.187646000E3,5.932986575E1 +3.187996000E3,5.618144782E1 +3.188254000E3,5.279151533E1 +3.188538000E3,5.980979660E1 +3.188819000E3,5.959008295E1 +3.189058000E3,5.757326838E1 +3.189324000E3,5.814251633E1 +3.189681000E3,6.715432083E1 +3.189929000E3,5.659786492E1 +3.190183000E3,6.813933576E1 +3.190493000E3,6.423896785E1 +3.190762000E3,6.115594562E1 +3.191063000E3,6.466877383E1 +3.191295000E3,6.400176112E1 +3.191543000E3,6.061189134E1 +3.191813000E3,6.334758009E1 +3.192062000E3,6.268892194E1 +3.192384000E3,6.255649695E1 +3.192688000E3,6.440152216E1 +3.193095000E3,6.083356984E1 +3.193368000E3,5.702207605E1 +3.193630000E3,6.129862703E1 +3.193931000E3,6.511359313E1 +3.194208000E3,6.424113032E1 +3.194458000E3,6.277957456E1 +3.194751000E3,6.067489213E1 +3.195007000E3,6.044409325E1 +3.195267000E3,5.902485869E1 +3.195523000E3,5.940450479E1 +3.195769000E3,5.629667180E1 +3.196103000E3,5.773687048E1 +3.196362000E3,5.275604571E1 +3.196676000E3,5.321996877E1 +3.196932000E3,4.952922772E1 +3.197191000E3,5.411849627E1 +3.197458000E3,5.575997519E1 +3.197718000E3,5.782402980E1 +3.197982000E3,6.092045522E1 +3.198228000E3,6.504329265E1 +3.198474000E3,5.972589974E1 +3.198713000E3,5.816644178E1 +3.198958000E3,6.190720604E1 +3.199249000E3,6.026051864E1 +3.199481000E3,6.064697026E1 +3.199744000E3,5.715218400E1 +3.200003000E3,5.509276249E1 +3.200281000E3,5.035485844E1 +3.200607000E3,5.745123346E1 +3.200874000E3,5.874041571E1 +3.201157000E3,6.540993071E1 +3.201407000E3,6.592699897E1 +3.201730000E3,5.826687879E1 +3.201982000E3,5.966898415E1 +3.202228000E3,5.928022084E1 +3.202546000E3,5.492659239E1 +3.202811000E3,5.843773228E1 +3.203091000E3,5.615478265E1 +3.203365000E3,5.378265559E1 +3.203611000E3,5.724493737E1 +3.203868000E3,5.517839982E1 +3.204137000E3,5.166422622E1 +3.204439000E3,5.966362579E1 +3.204692000E3,5.837831137E1 +3.204952000E3,5.873474045E1 +3.205216000E3,6.025432286E1 +3.205460000E3,5.709891269E1 +3.205710000E3,5.946766606E1 +3.206062000E3,5.575402329E1 +3.206367000E3,5.597615265E1 +3.206620000E3,5.417374311E1 +3.206869000E3,5.785505194E1 +3.207152000E3,5.973144393E1 +3.207405000E3,5.494944595E1 +3.207684000E3,5.859159641E1 +3.207982000E3,5.909726368E1 +3.208273000E3,6.221796591E1 +3.208541000E3,6.248597715E1 +3.208787000E3,6.143432195E1 +3.209043000E3,5.767415987E1 +3.209357000E3,6.087003136E1 +3.209636000E3,5.816954701E1 +3.209920000E3,5.644196424E1 +3.210232000E3,5.726504339E1 +3.210505000E3,5.384487818E1 +3.210769000E3,6.092886049E1 +3.211044000E3,5.910647270E1 +3.211306000E3,5.855040927E1 +3.211560000E3,6.886189365E1 +3.211803000E3,6.193548709E1 +3.212075000E3,5.895667088E1 +3.212320000E3,5.613734816E1 +3.212669000E3,6.365011223E1 +3.212934000E3,6.616065582E1 +3.213195000E3,4.911720228E1 +3.213460000E3,5.429539168E1 +3.213713000E3,5.374714305E1 +3.213991000E3,5.505703483E1 +3.214231000E3,5.216197587E1 +3.214486000E3,6.958974683E1 +3.214787000E3,6.410499727E1 +3.215047000E3,5.795707420E1 +3.215308000E3,6.210641451E1 +3.215581000E3,5.724864620E1 +3.215943000E3,5.588397230E1 +3.216221000E3,5.281586206E1 +3.216477000E3,5.616597876E1 +3.216735000E3,7.016181845E1 +3.216992000E3,7.008234703E1 +3.217238000E3,6.883905131E1 +3.217482000E3,6.039428517E1 +3.217722000E3,6.572225500E1 +3.217971000E3,6.862082655E1 +3.218221000E3,6.392739620E1 +3.218481000E3,6.757625304E1 +3.218798000E3,6.468895575E1 +3.219137000E3,5.941097234E1 +3.219443000E3,6.639331379E1 +3.219715000E3,6.512137194E1 +3.219985000E3,6.137345425E1 +3.220244000E3,6.566739727E1 +3.220494000E3,5.684090738E1 +3.220758000E3,4.865476042E1 +3.221022000E3,5.571447424E1 +3.221324000E3,5.050200483E1 +3.221601000E3,5.262698993E1 +3.221858000E3,5.385544431E1 +3.222185000E3,5.793526709E1 +3.222548000E3,5.957102097E1 +3.222796000E3,5.026005559E1 +3.223068000E3,5.164515600E1 +3.223344000E3,6.575405490E1 +3.223598000E3,6.925353270E1 +3.223876000E3,5.909751181E1 +3.224152000E3,5.561020058E1 +3.224416000E3,5.257890354E1 +3.224662000E3,5.262446891E1 +3.224954000E3,5.599583257E1 +3.225202000E3,5.286294623E1 +3.225483000E3,5.049109924E1 +3.225830000E3,6.154494550E1 +3.226096000E3,5.433068412E1 +3.226350000E3,5.256602683E1 +3.226652000E3,5.283535150E1 +3.226989000E3,5.811852242E1 +3.227251000E3,5.842389129E1 +3.227505000E3,5.524471208E1 +3.227782000E3,6.207780754E1 +3.228053000E3,6.165130850E1 +3.228302000E3,5.818085510E1 +3.228557000E3,5.646455559E1 +3.228823000E3,5.903487317E1 +3.229201000E3,5.460588060E1 +3.229471000E3,5.534537953E1 +3.229720000E3,5.492103159E1 +3.229976000E3,5.474982433E1 +3.230276000E3,6.311967749E1 +3.230531000E3,6.144237593E1 +3.230845000E3,6.204497775E1 +3.231123000E3,6.192920277E1 +3.231382000E3,6.726064707E1 +3.231675000E3,5.951322284E1 +3.231970000E3,5.620608761E1 +3.232324000E3,5.597726308E1 +3.232555000E3,5.737347613E1 +3.232845000E3,5.515502781E1 +3.233172000E3,5.977186730E1 +3.233435000E3,6.131606000E1 +3.233742000E3,5.610580070E1 +3.234000000E3,5.978218601E1 +3.234272000E3,6.319970701E1 +3.234581000E3,5.608562509E1 +3.234862000E3,6.169746582E1 +3.235159000E3,6.105762669E1 +3.235416000E3,5.369522011E1 +3.235667000E3,6.580487109E1 +3.235906000E3,5.797374086E1 +3.236200000E3,6.981267784E1 +3.236445000E3,6.229515865E1 +3.236695000E3,6.858181426E1 +3.236976000E3,5.740787399E1 +3.237218000E3,5.455964692E1 +3.237457000E3,7.204325578E1 +3.237720000E3,6.142914611E1 +3.238013000E3,5.768794211E1 +3.238280000E3,5.732491467E1 +3.238580000E3,5.793744264E1 +3.238882000E3,5.626325471E1 +3.239149000E3,5.661724856E1 +3.239424000E3,6.969605219E1 +3.239726000E3,6.482965407E1 +3.239976000E3,5.947270091E1 +3.240278000E3,5.913422796E1 +3.240576000E3,5.630232959E1 +3.240877000E3,5.956366293E1 +3.241128000E3,6.177688280E1 +3.241391000E3,5.851951662E1 +3.241664000E3,5.959787493E1 +3.241944000E3,5.765523372E1 +3.242310000E3,5.961443978E1 +3.242602000E3,5.811194000E1 +3.242910000E3,5.765320401E1 +3.243188000E3,6.631148602E1 +3.243420000E3,6.916377121E1 +3.243673000E3,6.435158828E1 +3.243925000E3,6.486926440E1 +3.244170000E3,5.506348984E1 +3.244475000E3,6.702899260E1 +3.244772000E3,6.244838658E1 +3.245003000E3,6.057959417E1 +3.245328000E3,6.103137126E1 +3.245581000E3,5.723671640E1 +3.245864000E3,5.125127512E1 +3.246123000E3,5.748187394E1 +3.246395000E3,6.148075018E1 +3.246669000E3,6.226010686E1 +3.246940000E3,5.273573389E1 +3.247233000E3,5.462141876E1 +3.247482000E3,5.946160846E1 +3.247728000E3,6.623014757E1 +3.248041000E3,5.823129903E1 +3.248289000E3,5.689561843E1 +3.248538000E3,5.851473913E1 +3.248910000E3,5.778207994E1 +3.249187000E3,6.109108533E1 +3.249462000E3,6.368024039E1 +3.249726000E3,6.527718864E1 +3.249983000E3,5.855658653E1 +3.250281000E3,5.718860903E1 +3.250534000E3,5.946900486E1 +3.250785000E3,5.688578668E1 +3.251033000E3,5.444863300E1 +3.251316000E3,5.885016251E1 +3.251570000E3,6.172482417E1 +3.251833000E3,6.833245599E1 +3.252200000E3,6.656973280E1 +3.252441000E3,6.663686281E1 +3.252721000E3,6.380106140E1 +3.252991000E3,6.113258977E1 +3.253242000E3,7.270243700E1 +3.253457000E3,7.442711013E1 +3.253706000E3,7.097589831E1 +3.253999000E3,5.740107596E1 +3.254237000E3,5.407351324E1 +3.254532000E3,6.235563554E1 +3.254777000E3,6.148535018E1 +3.255085000E3,6.767985005E1 +3.255346000E3,5.893302101E1 +3.255628000E3,5.834235484E1 +3.255897000E3,6.152524318E1 +3.256146000E3,6.124474706E1 +3.256419000E3,5.928557591E1 +3.256642000E3,5.798678480E1 +3.256921000E3,5.800318977E1 +3.257149000E3,5.813391626E1 +3.257392000E3,6.200496820E1 +3.257645000E3,6.268368020E1 +3.257945000E3,6.783162804E1 +3.258296000E3,7.343015115E1 +3.258556000E3,7.258165803E1 +3.258805000E3,6.753466802E1 +3.259117000E3,7.134403593E1 +3.259421000E3,6.813653179E1 +3.259673000E3,6.449045726E1 +3.259939000E3,7.144310958E1 +3.260188000E3,6.619195201E1 +3.260438000E3,6.990193438E1 +3.260692000E3,6.791067771E1 +3.260944000E3,7.014061601E1 +3.261191000E3,7.271368424E1 +3.261532000E3,6.889323528E1 +3.261794000E3,6.087932672E1 +3.262047000E3,6.139975131E1 +3.262322000E3,6.684035582E1 +3.262586000E3,6.977079140E1 +3.262861000E3,6.711211223E1 +3.263137000E3,6.891542739E1 +3.263415000E3,6.450575202E1 +3.263671000E3,6.375083447E1 +3.263946000E3,6.525419018E1 +3.264250000E3,6.323969714E1 +3.264517000E3,7.351653517E1 +3.264813000E3,7.240916805E1 +3.265107000E3,6.991986455E1 +3.265349000E3,6.767718353E1 +3.265598000E3,7.020318016E1 +3.265847000E3,6.593396207E1 +3.266149000E3,6.776886494E1 +3.266400000E3,6.796917668E1 +3.266653000E3,6.234495715E1 +3.266897000E3,6.492303298E1 +3.267153000E3,6.551968402E1 +3.267398000E3,6.154456079E1 +3.267647000E3,6.087933145E1 +3.267896000E3,6.053677169E1 +3.268248000E3,6.893351216E1 +3.268513000E3,6.695525456E1 +3.268817000E3,6.263553940E1 +3.269070000E3,5.965971741E1 +3.269315000E3,6.136430702E1 +3.269582000E3,7.398506568E1 +3.269828000E3,7.145137487E1 +3.270128000E3,7.238266470E1 +3.270371000E3,7.289527120E1 +3.270623000E3,7.428636164E1 +3.270931000E3,7.248535741E1 +3.271185000E3,7.399445608E1 +3.271518000E3,7.355251323E1 +3.271795000E3,7.296660624E1 +3.272081000E3,7.131368475E1 +3.272358000E3,7.068792091E1 +3.272581000E3,6.623699177E1 +3.272835000E3,5.258987188E1 +3.273093000E3,6.044165509E1 +3.273337000E3,6.879817511E1 +3.273635000E3,6.970693453E1 +3.273931000E3,7.169623139E1 +3.274180000E3,7.112396098E1 +3.274428000E3,7.190035192E1 +3.274761000E3,7.089393329E1 +3.275038000E3,6.995869622E1 +3.275323000E3,6.900781199E1 +3.275569000E3,6.766263448E1 +3.275860000E3,6.881814388E1 +3.276116000E3,6.821596427E1 +3.276370000E3,6.896702672E1 +3.276649000E3,6.827119542E1 +3.276914000E3,6.795818984E1 +3.277171000E3,7.025945887E1 +3.277482000E3,6.685661764E1 +3.277741000E3,6.810082518E1 +3.278078000E3,6.902136690E1 +3.278358000E3,6.568611650E1 +3.278604000E3,7.123802039E1 +3.278848000E3,6.300940961E1 +3.279144000E3,6.292057856E1 +3.279382000E3,6.654167697E1 +3.279622000E3,6.808014942E1 +3.279917000E3,6.902808966E1 +3.280160000E3,6.685153426E1 +3.280471000E3,6.435621527E1 +3.280770000E3,6.765080490E1 +3.281059000E3,6.808248309E1 +3.281352000E3,6.477485011E1 +3.281602000E3,5.628454157E1 +3.281867000E3,5.800927668E1 +3.282130000E3,7.131716325E1 +3.282389000E3,7.355208108E1 +3.282663000E3,7.108584109E1 +3.282932000E3,5.710440961E1 +3.283191000E3,5.329699257E1 +3.283451000E3,5.003319724E1 +3.283709000E3,5.081704645E1 +3.284003000E3,5.075383483E1 +3.284259000E3,5.431712692E1 +3.284628000E3,5.277582101E1 +3.284917000E3,6.061307876E1 +3.285214000E3,6.168657926E1 +3.285472000E3,5.854988033E1 +3.285744000E3,4.913527641E1 +3.285999000E3,5.563664353E1 +3.286250000E3,5.841488419E1 +3.286517000E3,6.437604518E1 +3.286777000E3,6.124264602E1 +3.287035000E3,5.886049633E1 +3.287300000E3,6.196549102E1 +3.287630000E3,6.776239267E1 +3.287951000E3,6.702605133E1 +3.288259000E3,5.376695086E1 +3.288499000E3,5.095339550E1 +3.288807000E3,5.078317550E1 +3.289117000E3,5.659564827E1 +3.289411000E3,7.136818215E1 +3.289684000E3,6.629708396E1 +3.289982000E3,7.133804213E1 +3.290271000E3,6.994811010E1 +3.290544000E3,6.532422657E1 +3.290800000E3,6.451013008E1 +3.291132000E3,6.261305598E1 +3.291418000E3,6.696223022E1 +3.291676000E3,4.827412656E1 +3.291930000E3,4.724575587E1 +3.292202000E3,4.846609938E1 +3.292501000E3,5.276700476E1 +3.292822000E3,5.071547801E1 +3.293065000E3,4.944777186E1 +3.293349000E3,4.466809801E1 +3.293583000E3,4.432750067E1 +3.293832000E3,5.165471909E1 +3.294078000E3,4.606912616E1 +3.294427000E3,4.826074528E1 +3.294712000E3,4.434240888E1 +3.294985000E3,4.684583968E1 +3.295286000E3,5.104787864E1 +3.295548000E3,4.839146586E1 +3.295807000E3,5.479537456E1 +3.296066000E3,5.055213000E1 +3.296324000E3,3.933656037E1 +3.296585000E3,4.513652817E1 +3.296840000E3,4.805617654E1 +3.297099000E3,4.453428427E1 +3.297354000E3,5.205427791E1 +3.297705000E3,5.001223291E1 +3.297948000E3,5.342697607E1 +3.298200000E3,5.619467550E1 +3.298461000E3,5.565459347E1 +3.298738000E3,5.819577446E1 +3.298988000E3,5.077826383E1 +3.299236000E3,5.142261821E1 +3.299478000E3,5.610754709E1 +3.299775000E3,5.248015066E1 +3.300011000E3,4.742520943E1 +3.300325000E3,5.519481303E1 +3.300626000E3,4.628613419E1 +3.300959000E3,4.430731849E1 +3.301224000E3,4.380193782E1 +3.301473000E3,4.690647127E1 +3.301746000E3,4.845294386E1 +3.302057000E3,4.912389116E1 +3.302307000E3,5.155191791E1 +3.302563000E3,5.240902416E1 +3.302820000E3,4.677306339E1 +3.303083000E3,5.037145513E1 +3.303327000E3,4.506752152E1 +3.303573000E3,4.920686196E1 +3.303857000E3,4.935493485E1 +3.304189000E3,4.415801479E1 +3.304459000E3,4.423531181E1 +3.304768000E3,3.874162391E1 +3.305030000E3,4.189958295E1 +3.305333000E3,4.005870516E1 +3.305579000E3,5.072183491E1 +3.305843000E3,4.113754863E1 +3.306140000E3,5.548273149E1 +3.306383000E3,5.383424402E1 +3.306628000E3,5.205779319E1 +3.306877000E3,4.592085607E1 +3.307206000E3,5.092451979E1 +3.307449000E3,4.823039740E1 +3.307720000E3,5.026090042E1 +3.307982000E3,5.794901070E1 +3.308198000E3,5.239372011E1 +3.308502000E3,5.024517162E1 +3.308742000E3,4.253471720E1 +3.309044000E3,4.105523794E1 +3.309340000E3,3.028117703E1 +3.309596000E3,2.809150222E1 +3.309864000E3,2.626060468E1 +3.310135000E3,5.055452447E1 +3.310501000E3,7.199271156E1 +3.310777000E3,7.172468430E1 +3.311045000E3,7.282926204E1 +3.311313000E3,7.145580608E1 +3.311562000E3,7.218798353E1 +3.311867000E3,7.081603642E1 +3.312107000E3,7.122522782E1 +3.312348000E3,7.013128466E1 +3.312672000E3,7.138239962E1 +3.312976000E3,7.589001323E1 +3.313216000E3,6.988466628E1 +3.313506000E3,6.521999768E1 +3.313853000E3,5.781158269E1 +3.314129000E3,5.698768013E1 +3.314381000E3,5.954050680E1 +3.314636000E3,5.529467486E1 +3.314903000E3,6.884377149E1 +3.315163000E3,7.293133775E1 +3.315448000E3,7.186875504E1 +3.315697000E3,6.942752239E1 +3.315995000E3,6.899930460E1 +3.316247000E3,6.333687203E1 +3.316557000E3,6.820286469E1 +3.316856000E3,7.371764624E1 +3.317124000E3,7.475494405E1 +3.317411000E3,7.135849387E1 +3.317718000E3,5.726081152E1 +3.317965000E3,5.650406291E1 +3.318233000E3,4.901561410E1 +3.318490000E3,6.881993797E1 +3.318742000E3,7.251465406E1 +3.319010000E3,6.395213402E1 +3.319311000E3,7.197127027E1 +3.319615000E3,6.948849738E1 +3.319862000E3,6.664503435E1 +3.320187000E3,6.933008182E1 +3.320443000E3,6.121514242E1 +3.320753000E3,7.017439611E1 +3.321063000E3,7.393277725E1 +3.321329000E3,7.045535337E1 +3.321643000E3,6.985180357E1 +3.321896000E3,7.158196073E1 +3.322168000E3,6.999348148E1 +3.322483000E3,6.872091406E1 +3.322823000E3,6.386396976E1 +3.323116000E3,6.891641311E1 +3.323355000E3,6.790436633E1 +3.323733000E3,6.190629476E1 +3.324010000E3,6.307072034E1 +3.324306000E3,6.459812141E1 +3.324591000E3,6.928529051E1 +3.324846000E3,6.953301961E1 +3.325158000E3,6.946121501E1 +3.325471000E3,6.177266257E1 +3.325739000E3,6.057146439E1 +3.326000000E3,6.021658005E1 +3.326269000E3,6.588088303E1 +3.326536000E3,6.594068529E1 +3.326797000E3,5.957632846E1 +3.327117000E3,5.830018402E1 +3.327415000E3,5.952820917E1 +3.327678000E3,5.996997483E1 +3.327928000E3,6.374276040E1 +3.328204000E3,6.484785648E1 +3.328504000E3,6.253699213E1 +3.328743000E3,6.495848159E1 +3.329001000E3,6.390198219E1 +3.329317000E3,6.107203426E1 +3.329613000E3,6.678300135E1 +3.329901000E3,6.048531373E1 +3.330164000E3,6.806621622E1 +3.330501000E3,6.592361883E1 +3.330795000E3,6.652249790E1 +3.331059000E3,6.079261624E1 +3.331342000E3,7.055285274E1 +3.331620000E3,6.885169705E1 +3.331870000E3,6.676175072E1 +3.332125000E3,6.653456857E1 +3.332410000E3,6.539948315E1 +3.332658000E3,6.741723145E1 +3.332915000E3,5.982571500E1 +3.333236000E3,7.234399288E1 +3.333559000E3,7.555637810E1 +3.333801000E3,7.132946849E1 +3.334053000E3,7.012473325E1 +3.334345000E3,7.083313400E1 +3.334658000E3,6.159204912E1 +3.334951000E3,5.416652771E1 +3.335187000E3,5.331536045E1 +3.335488000E3,5.516853140E1 +3.335780000E3,5.755380245E1 +3.336028000E3,6.034949591E1 +3.336335000E3,5.933559907E1 +3.336577000E3,6.200660494E1 +3.336975000E3,6.752581884E1 +3.337230000E3,6.552308109E1 +3.337509000E3,6.043162012E1 +3.337804000E3,6.346167875E1 +3.338097000E3,5.762665769E1 +3.338354000E3,6.046465836E1 +3.338657000E3,5.841838084E1 +3.338937000E3,5.426549819E1 +3.339182000E3,5.312925890E1 +3.339425000E3,5.904532039E1 +3.339705000E3,5.548841740E1 +3.339970000E3,6.467955136E1 +3.340311000E3,6.518540616E1 +3.340567000E3,6.130157495E1 +3.340843000E3,4.234380604E1 +3.341102000E3,3.685811557E1 +3.341367000E3,5.229521155E1 +3.341631000E3,4.577123603E1 +3.341913000E3,5.522804687E1 +3.342191000E3,7.219670231E1 +3.342497000E3,6.138541536E1 +3.342739000E3,5.883033505E1 +3.342994000E3,5.692990468E1 +3.343272000E3,5.784770175E1 +3.343584000E3,5.851150722E1 +3.343847000E3,7.127137910E1 +3.344137000E3,7.004437015E1 +3.344432000E3,6.719880262E1 +3.344677000E3,6.266500726E1 +3.344966000E3,6.662051616E1 +3.345209000E3,6.259160849E1 +3.345462000E3,6.521765959E1 +3.345762000E3,6.373477950E1 +3.346056000E3,5.976833176E1 +3.346294000E3,5.557373783E1 +3.346597000E3,5.486821605E1 +3.346842000E3,4.854970484E1 +3.347096000E3,6.338774242E1 +3.347415000E3,6.646909489E1 +3.347712000E3,6.370164725E1 +3.347950000E3,6.577012972E1 +3.348257000E3,6.536203326E1 +3.348509000E3,5.777033235E1 +3.348799000E3,6.942121279E1 +3.349070000E3,6.552465655E1 +3.349329000E3,6.400867966E1 +3.349583000E3,5.955829212E1 +3.349911000E3,6.233007104E1 +3.350154000E3,7.360271557E1 +3.350432000E3,7.402471070E1 +3.350716000E3,7.225249055E1 +3.350966000E3,6.654334459E1 +3.351200000E3,6.590758849E1 +3.351507000E3,6.143698167E1 +3.351805000E3,7.197722167E1 +3.352079000E3,6.778594348E1 +3.352307000E3,5.712392879E1 +3.352566000E3,5.659236121E1 +3.352870000E3,5.352359430E1 +3.353127000E3,5.362353429E1 +3.353366000E3,5.964860406E1 +3.353638000E3,7.164177428E1 +3.353890000E3,6.730234717E1 +3.354173000E3,5.336089185E1 +3.354435000E3,4.770751864E1 +3.354689000E3,4.833001031E1 +3.354956000E3,4.464972004E1 +3.355220000E3,6.809720152E1 +3.355493000E3,7.032616040E1 +3.355723000E3,7.137092547E1 +3.356052000E3,7.106236065E1 +3.356287000E3,7.302101107E1 +3.356599000E3,6.868512076E1 +3.356867000E3,7.134905494E1 +3.357133000E3,7.032184319E1 +3.357463000E3,6.484515560E1 +3.357753000E3,5.949029357E1 +3.358081000E3,6.553405106E1 +3.358385000E3,5.460622041E1 +3.358634000E3,4.798111952E1 +3.358902000E3,5.356090224E1 +3.359186000E3,5.091993104E1 +3.359516000E3,5.980463665E1 +3.359805000E3,5.623340998E1 +3.360124000E3,4.885342740E1 +3.360404000E3,4.536632542E1 +3.360660000E3,5.726647509E1 +3.360941000E3,6.266477325E1 +3.361245000E3,5.265432523E1 +3.361521000E3,4.746518361E1 +3.361777000E3,5.341135388E1 +3.362038000E3,5.094337921E1 +3.362292000E3,5.832737886E1 +3.362616000E3,5.247742127E1 +3.363049000E3,5.123926483E1 +3.363313000E3,4.482127206E1 +3.363600000E3,4.813050338E1 +3.363848000E3,5.751744958E1 +3.364157000E3,5.045245795E1 diff --git a/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a6/MyWorld.java b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a6/MyWorld.java new file mode 100644 index 0000000..8ebbe35 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a6/MyWorld.java @@ -0,0 +1,36 @@ +import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot und MouseInfo) + +/** + * Ergänzen Sie hier eine Beschreibung für die Klasse MyWorld. + * + * @author (Ihr Name) + * @version (eine Versionsnummer oder ein Datum) + */ +public class MyWorld extends World +{ + + /** + * Konstruktor für Objekte der Klasse MyWorld + * + */ + public MyWorld() + { + // Erstellt eine neue Welt mit 1200x900 Pixeln + super(1000, 700, 1); + + prepare(); + } + + + /** + * Bereite die Welt für den Programmstart vor. + * Das heißt: Erzeuge die Anfangs-Objekte und füge sie der Welt hinzu. + */ + private void prepare() + { + XYDiagramm d = new XYDiagramm(); + addObject(d,500,350); + + } +} + diff --git a/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a6/Picture.java b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a6/Picture.java new file mode 100644 index 0000000..8df3d55 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a6/Picture.java @@ -0,0 +1,699 @@ +import java.awt.image.*; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.BasicStroke; +import java.util.Vector; +import javax.imageio.*; +import java.io.*; +import java.awt.*; +import javax.swing.*; +import java.util.Random; +import java.awt.geom.AffineTransform; +/** + * + * Bildklasse für die Simulation von Processing-Befehlen + * + * Diese Klasse stellt ein BufferedImage bereit, in das mit Processing-Befehlen gezeichnet + * werden kann. + * Zusätzlich kann ein Bildanzeiger über jede Änderung des Bildes informiert werden, + * um "Zurück"-Befehle zu ermöglichen. Der Bildanzeiger ist entweder eine normale Java + * ScrollPane oder ein Actor aus Greenfoot. + * Die Dokumentation der einzelnen Zeichenmethoden ist der Processing-Reference + * (https://processing.org/reference/ steht unter CC-Lizenz: https://creativecommons.org/) + * entnommen und mit Deepl.com ins Deutsche übersetzt. + * + * @version 1.0 from 23.01.2019 + * @author Thomas Schaller (ZPG Informatik Klasse 9) + */ + +public class Picture{ + + // Einstellungmöglichkeiten für das Zeichnen von Rechtecken und Ellipsen + // RADIUS = Mittelpunkt+Radius wird gegeben, CENTER = Mittelpunkt und Breite/Höhe wird gegeben, + // CORNER = Linke obere Ecke + Breite/Höhe, CORNERS = Linke obere und rechte untere Ecke + public static final int RADIUS = 1; + public static final int CENTER = 2; + public static final int CORNER = 3; + public static final int CORNERS = 4; + + // gespeichertes Bild, + private BufferedImage image; + + // aktuelle Farbeinstellungen + private Color background; + private Color pencolor; + private Color fillcolor; + + // aktuelle Stiftdicke + private double stroke; + + // akkteller Koordinatenmodus von Rechtecken und Ellipsen + private int ellipseMode = CENTER; + private int rectMode = CORNER; + + // aktueller Font + private Font textfont = null; + + // muss ein Bildanzeiger benachrichtigt werden + private PictureViewer observer = null; + private boolean autorefresh = true; + + /** + * Erzeugt ein Bild mit Standardgröße 500x400 + */ + public Picture() { + this(500,400); + } + + /** + * Erzeugt ein Bild der angegeben Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public Picture(int width, int height) { + this(width,height, "D0D0D0"); + } + + /** + * Erzeugt ein Bild aus einer Datei + * @param filename Dateiname des Bildes + */ + public Picture(String filename) { + load(filename); + } + + /** + * Erzeugt ein Bild der angegebenen Größe mit festgelegtem Hintergrund + * @param width Breite des Bildes + * @param height Höhe des Bildes + * @param background Farbe des Hintergrunds + */ + public Picture(int width, int height, String background) { + this.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + this.background = decode(background); + this.pencolor = new Color(0,0,0); + this.stroke = 1; + this.fillcolor = null; + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(this.background); + g.fillRect(0,0,width-1, height-1); + } + + /** + * Legt fest, wer das Bild anzeigt. + * Diese ermöglicht die Benachrichtung des Observers, wenn sich das Bild ändert. + * @param observer Anzeiger des Bildes + */ + + public void setObserver(PictureViewer observer) { + this.observer= observer; + } + + /** + * Direktes Setzen des Bildes (für interne Zwecke) + * @param b Bild, das gespeichert werden soll. + */ + public void setImage(BufferedImage b) { + image = b; + } + + /** + * Direktes Abfragen des Bildes (für interne Zwecke) + * @return Bild, das gerade gespeichert ist. + */ + public BufferedImage getImage() { + return image; + } + + /** + * Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + * Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + * der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu. + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public void size(int width, int height){ + pushImage(); + this.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(background); + g.fillRect(0,0,width-1, height-1); + } + + /** + * Liefert die Breite des Bildes zurück. + * @return Breite des Bildes + */ + public int getWidth() { + return image.getWidth(); + } + + /** + * Liefert die Höhe des Bildes zurück. + * @return Höhe des Bildes + */ + public int getHeight() { + return image.getHeight(); + } + + + /** + * Erzeugt eine Kopie des Bildes und übergibt sie an den Observer (falls existent), damit dieser die Versionen speichern kann + */ + private void pushImage() { + if(observer != null) { + observer.pushImage(); + } + } + + + /** + * Legt fest, ob nach jedem Zeichenbefehl automatisch das Bild auch in + * der Oberfläche aktualisiert wird. Die Einstellung "false" beschleunigt + * das Zeichnen aufwändiger Bilder und verhindert "Flackern". + * Das Neuzeichnen kann durch die Methode "refresh" gezielt ausgelöst werden. + * @param autorefresh true = nach jedem Zeichenbefehl die Anzeige aktualisieren, false= nur durch die Methode refresh neu zeichnen + */ + public void setAutoRefresh(boolean autoRefresh) { + this.autorefresh = autoRefresh; + } + + + /** + * Auch die anzeigenden Klasse wird zum Neuzeichnen aufgefordert. + */ + private void repaint() { + if(observer != null && autorefresh) { + observer.repaint(); + } + } + + /** + * Auch die anzeigenden Klasse wird zum Neuzeichnen aufgefordert. + */ + public void refresh() { + if(observer != null) { + observer.repaint(); + } + } + + // ----------------------------------------- Zeichenfunktionen ----------------------------------------------- + /** + * Löscht den Inhalt des Bildes. + * Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt. + */ + + public void clear(){ + pushImage(); + image = new BufferedImage(image.getWidth(), image.getHeight(), image.getType()); + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(background); + g.fillRect(0,0,image.getWidth()-1, image.getHeight()-1); + repaint(); + } + + /** + * Konvertiert die in einem bestimmten Modus gegebenen Koordinaten in die Java-übliche Links_Oben_Breite_Höhe Version + * Die Änderungen werden direkt im Array vorgenommen + * @param coord Array mit vier Koordinateneinträgen im gegebenen Modus + * @param mode Modus der Koordinaten (CORNER, CORNERS, RADIUS oder CENTER) + */ + private void convert(int[] coord, int mode) { + switch(mode) { + case CORNER: break; + case CORNERS: coord[2] -= coord[0]; coord[3] -= coord[1]; break; + case RADIUS: coord[2] *= 2; coord[3] *=2; + case CENTER: coord[0] -= coord[2]/2; coord[1] -= coord[3]/2; + } + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + * Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + * Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void rectMode(int mode) { + rectMode = mode; + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + * Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + * Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als Breite und Höhe der Form. + * ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void ellipseMode(int mode) { + ellipseMode = mode; + } + + + + /** + * Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + * Um eine Linie einzufärben, verwenden Sie die {@link #stroke(int, int, int) stroke()} Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + * Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + * {@link #strokeWeight(double) strokeWeight()} geändert werden. + * @param x1 x-Koordinate des 1. Punktes + * @param y1 y-Koordinate des 1. Punktes + * @param x2 x-Koordinate des 2. Punktes + * @param y2 y-Koordinate des 2. Punktes + */ + public void line(int x1, int y1, int x2, int y2) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + if (stroke > 0) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawLine(x1, y1, x2, y2); + } + repaint(); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, rectMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillRect(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawRect(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, ellipseMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillOval(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawOval(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + int px[] = {x1, x2, x3}; + int py[] = {y1, y2, y3}; + polygon(px, py); + + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + + int px[] = {x1, x2, x3, x4}; + int py[] = {y1, y2, y3, y4}; + polygon(px, py); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + + public void polygon(int[] x, int[] y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(fillcolor != null) { + + g.setColor(fillcolor); + g.fillPolygon(x,y, y.length); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawPolygon(x, y, x.length); + } + repaint(); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + ellipse(x,y,1, 1); + + } + + // ----------------------------------------- Schriftdarstellung ----------------------------------------------- + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param s Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String s, int x, int y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(pencolor != null) { + g.setColor(fillcolor); + g.setStroke(new BasicStroke((float) stroke)); + g.setFont(textfont); + g.drawString(s, x, y); + } + repaint(); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + this.textfont = font; + } + + + // ----------------------------------------- Farbfestlegungen ----------------------------------------------- + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(String color) { + try{ + return new Color( + Integer.valueOf( color.substring( 0, 2 ), 16 ), + Integer.valueOf( color.substring( 2, 4 ), 16 ), + Integer.valueOf( color.substring( 4, 6 ), 16 ) ); + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(int color) { + try{ + if(color >=0 && color < 256) { + return new Color(color,color,color); + } else { + int r = color / 0x010000 % 0xFF; + int g = color / 0x000100 % 0xFF; + int b = color % 0xFF; + System.out.println(""+r+","+g+","+b); + return new Color(r, g, b ); + } + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + this.pencolor = decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + this.pencolor=decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + this.pencolor = new Color(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + this.pencolor = null; + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + this.stroke = width; + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + this.fillcolor = decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + this.fillcolor=decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + this.fillcolor = new Color(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + this.fillcolor = null; + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + if(c < 256) { + this.background=new Color(c,c,c); + } else { + int r = c / 0x010000; + int g = c / 0x000100 % 0xFF; + int b = c % 0xFF; + this.background= new Color(r, g, b ); + } + + this.clear(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + this.background=new Color(r,g,b); + this.clear(); + } + + +// ----------------------------------------- Dateioperationen ----------------------------------------------- + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + try{ + this.image = ImageIO.read(new File(filename)); + this.background = decode("D0D0D0"); + this.pencolor = new Color(0,0,0); + this.fillcolor = null; + this.stroke = 1; + this.repaint(); + + } catch(Exception e) { + System.out.println("Fehler beim Einlesen der Bilddatei"); + } + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + try{ + String[] fn = filename.split("\\."); + if (fn.length== 1) { + ImageIO.write(image, "PNG", new File(filename+".png")); + } else { + + if (fn.length == 2 && (fn[1].toUpperCase().equals("PNG") || + fn[1].toUpperCase().equals("GIF"))){ + ImageIO.write(image, fn[1], new File(filename)); + }else { + System.out.println("Unbekanntes Bildformat"); + } + } + + } catch(Exception e) { + System.out.println("Fehler beim Speichern"); + } + } + + +// ----------------------------------------- Sonstiges ----------------------------------------------- + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + + public Color[][] getPixelArray() { + Color[][] pixel = new Color[image.getWidth()][image.getHeight()]; + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + pixel[x][y] = new java.awt.Color(image.getRGB(x,y)); + } + } + return pixel; + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + size(pixel.length,pixel[0].length); + Graphics2D g = (Graphics2D) image.getGraphics(); + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + g.setColor(pixel[x][y]); + g.fillRect(x, y, 1, 1); + } + } + repaint(); + } + + /** + * Hilfsfunktion zum Verzögern der Ausgabe + * @param millis Wartezeit in Millisekunden + */ + public void delay(int millis) { + try{ + Thread.sleep(millis); + + } catch(Exception e) { + + } + + } + + + +} diff --git a/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a6/PictureViewer.java b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a6/PictureViewer.java new file mode 100644 index 0000000..ecbb521 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a6/PictureViewer.java @@ -0,0 +1,499 @@ +import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot und MouseInfo) +import java.awt.image.*; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.BasicStroke; +import java.awt.Font; +import java.util.Vector; +import java.awt.Color; +import javax.imageio.*; +import java.io.*; + +/** + * Der PictureViewer ist ein Actor, der in der Lage ist ein + * Objekt der Klasse Picture anzuzeigen. Zusätzlich können + * mehrere Verarbeitungsschritte gespeichert werden, um ein + * "zurück"-Funktion zu ermöglichen. + * + * @author Thomas Schaller + * @version V1.0 vom 10.02.2019 + */ +public class PictureViewer extends Actor +{ + public static final int FIT = -1; + public static final int NORMAL = 1; + + private static final int ANZ_BACK = 0; + + private double zoom; + protected Picture picture = null; + private Vector history; + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der Größe 500x400 + */ + public PictureViewer() { + this(500,400); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public PictureViewer(int width, int height) { + this(width,height, "D0D0D0"); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + * @param background Farbe des Hintergrunds als HEX-String (z.B. "FF3A45") + */ + public PictureViewer(int width, int height, String background) { + picture = new Picture(width,height, background); + picture.setObserver(this); + this.history = new Vector(); + this.zoom = NORMAL; + repaint(); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild aus einer Bilddatei + * @param filename Name des Bildes + */ + public PictureViewer(String filename) { + picture = new Picture(filename); + picture.setObserver(this); + this.history = new Vector(); + this.zoom = NORMAL; + repaint(); + } + + /** + * Speichert das übergebene Bild in der History. + * @param b zu speicherndes Bild + */ + public void pushImage() { + if( this.ANZ_BACK > 0) { + if(history.size() == this.ANZ_BACK) { + history.removeElementAt(0); + } + + BufferedImage b = new BufferedImage(picture.getWidth(), picture.getHeight(), picture.getImage().getType()); + Graphics g = b.getGraphics(); + g.drawImage(picture.getImage(), 0, 0, null); + g.dispose(); + + history.add(b); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + private void popImage() { + int anz = history.size(); + if(anz>0) { + BufferedImage i = history.get(anz-1); + history.removeElementAt(anz-1); + picture.setImage(i); + repaint(); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + public void back() { + popImage(); + } + + /** + * Setzt den Zoom-Faktor für das Bild. + * Als Zoomfaktor sind auch die Konstanten Bildanzeiger.FIT (auf Bildschirmgröße zoomen) und Bildanzeiger.NORMAL (100%) möglich. + * @param factor Zoomfaktor (1.0 = 100%). + */ + public void setZoom(double zoom) { + this.zoom = zoom; + repaint(); + } + + /** + * Setzt die automatische Neuanzeige des Bildes. + * Mit dieser Methode kann man einstellen, ob nach jedem Zeichenbefehl + * die Anzeige auf dem Bildschirm aktualisiert werden soll. Bei sehr + * vielen Zeichenbefehlen wird die Ausgabe dadurch sehr langsam. Es reicht + * eine Anzeige am Ende der Zeichenbefehle. Rufen Sie dann für das Neuzeichnen + * die Methode refresh() auf. + * @param autoRefresh true, wenn nach jedem Zeichenbefehl die Anzeige aktualisiert werden soll. + */ + public void setAutoRefresh(boolean autoRefresh) { + picture.setAutoRefresh(autoRefresh); + } + + /** + * Sorgt für die Aktualisierung der Bildschrimanzeige. Das aktuelle Bild + * wird dadurch angezeigt. Durch Einstellung von autoRefresh kann die + * Anzeige automatisiert werden. + */ + public void refresh() { + repaint(); + } + + /** + * Setzt das angezeigt Bild neu und beachtet dabei den Zoomfaktor. + */ + public void repaint() { + double faktor = zoom; + + if (zoom == FIT) { + double faktorw = (double) this.getWorld().getWidth() / picture.getWidth(); + double faktorh = (double) this.getWorld().getHeight() / picture.getHeight(); + faktor = Math.min(faktorw, faktorh); + } + int gfi_width = (int) (picture.getWidth()*faktor); + int gfi_height = (int) (picture.getHeight()*faktor); + + setImage(new GreenfootImage(gfi_width, gfi_height)); + Graphics2D g = (Graphics2D) this.getImage().getAwtImage().getGraphics(); + g.drawImage(picture.getImage(),0,0,gfi_width, gfi_height, 0, 0, picture.getWidth(), picture.getHeight(), null); + g.setColor(new java.awt.Color(0,0,0)); + g.setStroke(new BasicStroke((float) 1)); + g.drawRect(0,0,gfi_width-1, gfi_height-1); + + } + + // Wrappermethoden + /** + * Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + * Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + * der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu. + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public void size(int width, int height){ + picture.size(width, height); + } + + /** + * Liefert die Breite des Bildes zurück. + * @return Breite des Bildes + */ + public int getImageWidth() { + return picture.getWidth(); + } + + /** + * Liefert die Höhe des Bildes zurück. + * @return Höhe des Bildes + */ + public int getImageHeight() { + return picture.getHeight(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + picture.background(c); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + picture.background(r,g,b); + } + + /** + * Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + * Um eine Linie einzufärben, verwenden Sie die {@link #stroke(int, int, int) stroke()} Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + * Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + * {@link #strokeWeight(double) strokeWeight()} geändert werden. + * @param x1 x-Koordinate des 1. Punktes + * @param y1 y-Koordinate des 1. Punktes + * @param x2 x-Koordinate des 2. Punktes + * @param y2 y-Koordinate des 2. Punktes + */ + public void line(int x1, int y1, int x2, int y2) { + picture.line(x1,y1,x2,y2); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + picture.rect(a,b,c,d); + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + picture.ellipse(a,b,c,d); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + picture.triangle(x1,y1,x2,y2,x3,y3); + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + picture.quad(x1,y1,x2,y2,x3,y3,x4,y4); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + public void polygon(int[] x, int[] y) { + picture.polygon(x,y); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + picture.point(x,y); + + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + * Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + * Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void rectMode(int mode) { + picture.rectMode(mode); + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + * Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + * Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als Breite und Höhe der Form. + * ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void ellipseMode(int mode) { + picture.ellipseMode(mode); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + picture.stroke(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + picture.noStroke(); + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + picture.strokeWeight(width); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + picture.fill(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + picture.noFill(); + } + + /** + * Löscht den Inhalt des Bildes. + * Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt. + */ + public void clear(){ + picture.clear(); + } + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + picture.load(filename); + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + picture.save(filename); + } + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param t Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String t, int x, int y) { + picture.text(t,x,y); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + picture.textFont(font); + } + + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + public Color[][] getPixelArray() { + return picture.getPixelArray(); + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + picture.setPixelArray(pixel); + } + + +} + diff --git a/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a6/Table.java b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a6/Table.java new file mode 100644 index 0000000..ee5a211 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a6/Table.java @@ -0,0 +1,894 @@ +/** + * Die Klasse Table vereinfacht den Zugriff auf CSV-Dateien. + * Die Klassen Table und TableRow ermöglichen einen einfachen Zugriff auf tabellenbasierte + * Dokumente. + * + * @author Thomas Schaller + * @version 1.0 vom 01.02.2019 + */ + +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.ArrayList; +import java.io.*; +import java.util.Scanner; + +import org.jdom.Document; +import org.jdom.Element; +import org.jdom.Attribute; +import org.jdom.JDOMException; +import org.jdom.input.SAXBuilder; +import org.jdom.output.XMLOutputter; +import org.jdom.output.Format; + +public class Table +{ + // Standardtrennzeichen für Spalten + private static final char DEFAULT_SEPARATOR = ';'; + // Standardmarkierung für Texte + private static final char DEFAULT_QUOTE = '"'; + // Standardtrennzeichen für Dezimalzahlen + private static final char DEFAULT_COMMA = ','; + + // mögliche Spaltentypen + private static final String UNKNOWN ="UNKOWN"; + private static final String INT = "INTEGER"; + private static final String DOUBLE = "DOUBLE"; + private static final String FLOAT = "FLOAT"; + + // interne Verwaltung des Dokuments als JDOM-Document-Objekt + private Document doc; + // Verweis auf Element für Kopfzeile + private Element header; + // Ende Attribute + + /** + * Erzeugt leeres Tabellen-Dokument. + */ + public Table() { + this.doc = new Document(); + doc.setRootElement(new Element("CSV-Data")); + this.header = new Element("Header"); + doc.getRootElement().addContent(header); + } + + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei und erstellt ein Tabellenobjekt mit seinen Werten. + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public Table(String filename, String options, char separator, char quote) { + loadCSV(filename, options, separator, quote); + } + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei und erstellt ein Tabellenobjekt mit seinen Werten (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + */ + public Table(String filename, String options) { + loadCSV(filename, options); + } + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei ohne Kopfzeile und erstellt ein Tabellenobjekt mit seinen Werten (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public Table(String filename) { + loadCSV(filename); + } + + // Anfang Methoden + /** + * Liest den Inhalt einer CSV-Datei ohne Kopfzeile (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public void loadCSV(String filename) { + loadCSV(filename, ""); + } + + /** + * Liest den Inhalt einer CSV-Datei (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + */ + public void loadCSV(String filename, String options) { + loadCSV(filename, options, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** + * Liest den Inhalt einer CSV-Datei. + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public void loadCSV(String filename, String options, char separator, char quote) { + doc = new Document(); + doc.setRootElement(new Element("CSV-Data")); + header = new Element("Header"); + doc.getRootElement().addContent(header); + try { + File f = new File(filename); + Scanner scanner = new Scanner(new File(filename)); + if(options.toLowerCase().contains("header") && scanner.hasNext()) { + List entries = parseLine(scanner.nextLine(), separator, quote); + int i= 0; + for(String s : entries) { + Element entry = new Element("Column"); + header.addContent(entry); + entry.setText(s); + entry.setAttribute("type", "unknown"); + i++; + } + } + + List cols = header.getChildren(); + + while (scanner.hasNext()) { + Element line = new Element("Row"); + doc.getRootElement().addContent(line); + List entries = parseLine(scanner.nextLine(), separator, quote); + int i= 0; + + for(String s : entries) { + + if(i==cols.size()) { + Element entry = new Element("Column"); + entry.setAttribute("type", "unknown"); + header.addContent(entry); + cols = header.getChildren(); + } + + Element entry = new Element("Entry"); + entry.setText(s); + line.addContent(entry); + i++; + } + } + scanner.close(); + + } catch (Exception e) { + System.out.println("Fehler beim Lesen der CSV-Datei"); + } + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei ohne Kopfzeile (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public void saveCSV(String filename) { + saveCSV(filename, ""); + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthalten, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile haben soll, + * dann lassen Sie einfach die Option "header" weg. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile haben soll. + * @param filename Dateiname der CSV-Datei. + */ + public void saveCSV(String filename, String options) { + saveCSV(filename, options, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei. + * Wenn die Datei eine Kopfzeile enthalten, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile haben soll, + * dann lassen Sie einfach die Option "header" weg. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile haben soll. + * @param filename Dateiname der CSV-Datei. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public void saveCSV(String filename, String options, char separator, char quote){ + try{ + File f = new File(filename); + PrintStream outputFile = new PrintStream (f); + System.out.println("Speicher in : "+f.getAbsolutePath()); + List columns = header.getChildren(); + String sq = ""+quote; + String ss = ""+separator; + if(quote =='"') sq = "\""; + if(separator =='"') ss = "\""; + + if(options.toLowerCase().contains("header")) { + String h = ""; + for(Element c : columns) { + h += ss + sq + c.getText()+sq; + } + outputFile.println(h.substring(1)); + } + for(int i = 0; i parseLine(String cvsLine) { + return parseLine(cvsLine, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** HIlfsfunktion für die Analyse einer Dateizeile + * @param cvsLine Zeile aus der Datei + * @param sparator Trennzeichen für die Spalten + * @return Liste von String für die einzelnen Spalten + */ + private List parseLine(String cvsLine, char separator) { + return parseLine(cvsLine, separator, DEFAULT_QUOTE); + } + + /** HIlfsfunktion für die Analyse einer Dateizeile + * @param cvsLine Zeile aus der Datei + * @param sparator Trennzeichen für die Spalten + * @param customQuote Kennung für Strings + * @return Liste von String für die einzelnen Spalten + */ + private List parseLine(String cvsLine, char separator, char customQuote) { + + List result = new ArrayList<>(); + + //if empty, return! + if (cvsLine == null && cvsLine.isEmpty()) { + return result; + } + + //ggf. Default-Value laden + if (customQuote == ' ') { + customQuote = DEFAULT_QUOTE; + } + + if (separator == ' ') { + separator = DEFAULT_SEPARATOR; + } + + StringBuffer curVal = new StringBuffer(); + boolean inQuotes = false; + boolean startCollectChar = false; + boolean doubleQuotesInColumn = false; + + char[] chars = cvsLine.toCharArray(); + + for (char ch : chars) { + + if (inQuotes) { // aktueller Text ist in Quotes eingeschlossen + startCollectChar = true; + + if (ch == customQuote) { // Quotes werden beendet, aber Achtung bei "" => Metazeichen + inQuotes = false; + if (ch == '\"') { + doubleQuotesInColumn = true; + } + + } else { + + if (ch == '\"' && !doubleQuotesInColumn) { + doubleQuotesInColumn = true; + } else { + curVal.append(ch); + doubleQuotesInColumn = false; + } + + } + } else { + if (ch == customQuote) { + + inQuotes = true; + + //Fixed : allow "" in empty quote enclosed + if (ch == '\"'){ + if(doubleQuotesInColumn) { + curVal.append('"'); + doubleQuotesInColumn = false; + } else doubleQuotesInColumn = true; + + + } + } + else { + doubleQuotesInColumn = false; + if (ch == separator) { + + result.add(curVal.toString()); + + curVal = new StringBuffer(); + startCollectChar = false; + + } else if (ch == '\r') { + //ignore LF characters + continue; + } else if (ch == '\n') { + //the end, break! + break; + } else { + curVal.append(ch); + } + } + } + + } + result.add(curVal.toString()); + return result; + } + + /** + * Sucht die Nummer einer durch Namen gegebenen Spalte. + * @param name Name der Spalte + * @return Nummer der Spalte + */ + + private int findColumnNumber(String name) { + List columns = header.getChildren(); + int i = 0; + for(Element c : columns) { + if (c.getText().toLowerCase().equals(name.toLowerCase())) { + return i; + + } + i++; + } + return -1; + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an. + */ + public void addColumn() { + Element entry = new Element("Column"); + entry.setAttribute("type", Table.UNKNOWN); + header.addContent(entry); + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an und benennt sie. + * @param title Bezeichnung der Spalte + */ + public void addColumn(String title) { + addColumn(); + Element nc = ((List)(header.getChildren())).get(header.getChildren().size()-1); + nc.setText(title); + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an und benennt und typisiert sie. + * @param title Bezeichnung der Spalte + * @param type Typ der Spalte (UNKNOWN, DOUBLE, INTEGER, FLOAT) + */ + public void addColumn(String title, String type) { + addColumn(title); + Element nc = ((List)(header.getChildren())).get(header.getChildren().size()-1); + nc.setAttribute("type", type); + } + + /** + * Löscht eine Spalte. + * @param i Nummer der Spalte. + */ + public void removeColumn(int i) { + List lines = doc.getRootElement().getChildren(); + for(Element l : lines) { + if(l.getChildren().size()>i) l.removeContent(i); + } + } + + /** + * Löscht eine Spalte + * @param name Name der Spalte + */ + public void removeColumn(String name) { + try{ + removeColumn(findColumnNumber(name)); + } catch(Exception e) { System.out.println("Unbekannter Spaltenname");} + } + + /** + * Liefert die Anzahl der Spalten in der Tabelle + * @return Anzahl der Spalten + */ + public int getColumnCount() { + return header.getChildren().size(); + } + + /** + * Liefert die Anzahl der Zeilen in der Tabelle + * @return Anzahl der Zeilen + */ + public int getRowCount() { + return doc.getRootElement().getChildren().size()-1; + } + + /** + * Löscht alle Zeilen der Tabelle. + * Die Spaltenüberschriften und Typen bleiben erhalten. + */ + public void clearRows() { + doc.getRootElement().removeChildren("Row"); + } + + /** + * Fügt eine neue Zeile an das Ende der Tabelle an. + * @return ein TableRow-Objekt für diese neue Zeile + */ + public TableRow addRow() { + Element row = new Element("Row"); + doc.getRootElement().addContent(row); + return new TableRow(doc, row); + } + + /** + * Löscht eine Zeile + * @param i Nummer der Zeile + */ + public void removeRow(int i) { + if(i rows = doc.getRootElement().getChildren(); + return new TableRow(doc, rows.get(i+1)); + } + return null; + } + + /** + * Liefert die ganze Tabelle als Array von TableRow-Objekten + * @return Array von TableRow-Objekten + */ + public TableRow[] rows() { + TableRow[] rows = new TableRow[getRowCount()]; + for(int i = 0; i < getRowCount(); i++) { + rows[i] = getRow(i); + } + return rows; + } + + /** + * Liefert den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param column Spaltennummer + * @return Wert der Zelle + */ + public int getInt(int row, int column) { + return getRow(row).getInt(column); + } + + /** + * Liefert den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param name Name der Spalte + * @return Wert der Zelle + */ + public int getInt(int row, String name) { + return getRow(row).getInt(name); + } + + /** + * Setzt den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param column Spaltennummer + * @param value neuer Wert der Zelle + */ + public void setInt(int row, int column,int value) { + getRow(row).setInt(column, value); + } + + /** + * Setzt den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(int row, String name, int value) { + getRow(row).setInt(name, value); + } + + /** + * Liefert alle Werte einer Zeile als Integer-Array. + * @param row Nummer der Zeile + * @return int-Array, dass alle Werte der Zeile enthält + */ + public int[] getIntRow(int row) { + try{ + TableRow trow = getRow(row); + int anz = getColumnCount(); + int[] r = new int[anz]; + for(int i=0; i) (header.getChildren())).get(i).getText(); + } else { + return ""; + } + } + + /** + * Liefert die Nummer einer Spalte + * @param name Name der Spalte + * @return Nummer der Spalte + */ + public int getColumn(String name) { + List columns = header.getChildren(); + int i = 0; + while (i < columns.size()) { + if (columns.get(i).getText().toLowerCase().equals(name.toLowerCase())) { + return i; + } + i++; + } // end of while + return -1; + } + + + /** + * Erzeugt eine neue Zeile mit i Spalten + * Wenn bisher nicht genügend Spalten vorhanden sind, werden automatisch neue Spalten hinzugefügt (auch zum Header) + * @param i Anzahl der Spalten + */ + private Element buildRow(int i) { + List columns = header.getChildren(); + Element entry=null; + for(int j=0; j<=i; j++) { + + if(j==columns.size()) { + Element h = new Element("Column"); + h.setAttribute("type", "unknown"); + header.addContent(h); + columns = header.getChildren(); + } + if(j==current.getChildren().size()) { + entry = new Element("Entry"); + current.addContent(entry); + + } + + } + return entry; + + } + + /** + * Erzeugt eine neue Zeile. + * Es werden genügend Spalten erzeugt, dass ein Wert in Spalte "name" eingetragen werden kann + * @param name Name der Spalte + */ + private Element buildRow(String name) { + List columns = header.getChildren(); + int i = 0; + for(Element c: columns) { + + if(c.getText().toLowerCase().equals(name.toLowerCase())) { + return buildRow(i); + } + i++; + } + return null; + + } + + /** + * Liefert den Wert einer Zelle als String + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public String getString(int i) { + if(i >= current.getContent().size()) return ""; + Element e = (Element) current.getContent(i) ; + if(e!=null) { + return e.getText(); + } else { + return ""; + } + } + + /** + * Liefert den Wert einer Zelle als String + * @param name Name der Spalte + * @return Wert der Zelle + */ + public String getString(String name) { + return getString(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als String + * @param i Nummer der Spalte + * @param text neuer Wert der Zelle + */ + public void setString(int i, String text) { + + Element e = buildRow(i); + if(e!=null) e.setText(text); + } + + /** + * Setzt den Wert einer Zelle als String + * @param name Name der Spalte + * @param text neuer Wert der Zelle + */ + public void setString(String name, String text) { + Element e = buildRow(name); + if(e!=null) e.setText(text); + } + + + /** + * Liefert den Wert einer Zelle als Int-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public int getInt(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Integer.parseInt(e.getText()); + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Int-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public int getInt(String name) { + return getInt(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Int-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(int i,int value) { + + Element e = buildRow(i); + if(e!=null) e.setText(""+value); + } + + /** + * Setzt den Wert einer Zelle als Int-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(String name, int value) { + Element e = buildRow(name); + if(e!=null) e.setText(""+value); + } + + /** + * Liefert den Wert einer Zelle als Float-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public float getFloat(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Float.parseFloat(e.getText().replace(",",".")); + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Float-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public float getFloat(String name) { + return getFloat(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Float-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setFloat(int i,float value) { + + Element e = buildRow(i); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Setzt den Wert einer Zelle als Float-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setFloat(String name, float value) { + Element e = buildRow(name); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Liefert den Wert einer Zelle als Double-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public double getDouble(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Double.parseDouble(e.getText().replace(",",".")); + + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Double-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public double getDouble(String name) { + return getDouble(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Double-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setDouble(int i,double value) { + + Element e = buildRow(i); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Setzt den Wert einer Zelle als Double-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setDouble(String name, double value) { + Element e = buildRow(name); + if(e!=null) e.setText(format.format(value)); + } + +} diff --git a/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a6/XML.java b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a6/XML.java new file mode 100644 index 0000000..c06c490 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a6/XML.java @@ -0,0 +1,637 @@ +/** + * Klasse zum Vereinfachten Zugriff auf XML-Dokumente + * Diese Klasse ist für den Einsatz in der Schule gedacht und soll den Schülern + * einen einfachen Zugriff auf XML-Dokumente ermöglichen. Die zur Verfügung + * stehenden Befehle sind wie in Processing realisiert. + * Dabei ist jeder Teilbaum des Dokuments wieder als XML-Objekt zugreifbar, das + * intern auf die gleiche XML-Dokumentstruktur zugreift. + * Dies ermöglicht bei unsachgemäßem Gebrauch die XML-Struktur zu zerstören. Im + * normalen Gebrauch sollte dies aber nicht relevant sein. + * + * Benötigt: jdom-1.1.3.jar + + * @author Thomas Schaller + * @version 1.0 vom 31.01.2019 + */ +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.ArrayList; +import java.io.*; + +import org.jdom.Document; +import org.jdom.Element; +import org.jdom.Attribute; +import org.jdom.JDOMException; +import org.jdom.input.SAXBuilder; +import org.jdom.output.XMLOutputter; +import org.jdom.output.Format; + +public class XML { + // Anfang Attribute + // XML-Dokumentstruktur + private Document doc; + // Zeiger auf das aktuelle Element + private Element current; + // Ende Attribute + + /** + * Erzeugt ein leeres XMLDokument + */ + public XML() { + this.doc = new Document(); + this.current = null; + } + + /** + * Erzeugt ein XML-Dokument aus einer Datei + * @param filename Dateiname der XML-Datei + */ + public XML(String filename) { + loadXML(filename); + } + + /** + * interner Konstruktor, um ein XML Objekt zu erzeugen, das auf einen bestimmten Knoten verweist + * @param doc die XML-Dokumentstruktur + * @param current Zeiger auf das aktuelle Element + */ + private XML(Document doc, Element current) { + this.doc = doc; + this.current = current; + } + + // Anfang Methoden + /** Öffnet das durch den Dateinamen gegebene Dokument + * @param filename Dateiname des XML-Files + */ + public void loadXML(String filename) { + doc = null; + File f = new File(filename); + + try { + // Das Dokument erstellen + SAXBuilder builder = new SAXBuilder(); + doc = builder.build(f); + + } catch (JDOMException e) { + e.printStackTrace(); + + } catch (IOException e) { + e.printStackTrace(); + } + // Zeiger im Baum auf Root-Element + current = doc.getRootElement(); + } + + /** Speichert den XML-Baum im angegebenen Dateinamen + * @param filename Dateiname des XML-Files + */ + public void saveXML(String filename) { + try { + // new XMLOutputter().output(doc, System.out); + XMLOutputter xmlOutput = new XMLOutputter(); + + // display nice nice + xmlOutput.setFormat(Format.getPrettyFormat()); + File f = new File(filename); + FileOutputStream outputFile = new FileOutputStream(f); + System.out.println("Speicher in : "+f.getAbsolutePath() ); + xmlOutput.output(doc, outputFile); + outputFile.close(); + System.out.println("File Saved!"); + } catch (IOException io) { + System.out.println(io.getMessage()); + } + + } + + //----------------------------------------------- Zeigerbewegungen -------------------------------------------------- + /** + * liefert ein XML-Objekt, das auf den Vaterknoten des aktuellen Elements zeigt. + * @return Vater des aktuellen Objekts. + */ + public XML getParent() { + if(current != null) { + Element parent = current.getParentElement(); + if (parent == null) { + return null; + } else { + return new XML(doc, parent); + } + } + return null; + } + + /** + * Überprüft, ob das Element irgendwelche Kinder hat oder nicht, und gibt das Ergebnis als boolean zurück. + * @return true, wenn Kinder vorhanden sind, sonst false + */ + public boolean hasChildren() { + if (current == null) { + return doc.hasRootElement(); + } else { + return current.getChildren().size()>0; + } + } + + /** + * Ermittelt die Namen aller Kinder des Elements und gibt die Namen als ein Array von Strings zurück. + * Dies ist dasselbe wie das Durchlaufen und Aufrufen von getName() auf jedem untergeordneten Element einzeln. + * @return Liste aller Namen der Kinder + */ + public String[] listChildren() { + if (current == null) { + if(doc.hasRootElement()) { + String[] names = new String[0]; + names[0] = doc.getRootElement().getName(); + return names; + } else { + return null; + } + } else { + List ch_element = current.getChildren(); + String[] names = new String[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + names[i] = ch_element.get(i).getName(); + } + return names; + } + } + + /** + * Liefert alle Kinder des Elements als Array von XML-Objekten. + * @return Array der Kinder als XML-Objekte + */ + public XML[] getChildren() { + if (current == null) { + if(doc.hasRootElement()) { + XML[] ch_xml = new XML[1]; + ch_xml[0] = new XML(doc, doc.getRootElement()); + return ch_xml; + } else { + return null; + } + } else { + List ch_element = current.getChildren(); + XML[] ch_xml = new XML[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + ch_xml[i] = new XML(doc, ch_element.get(i)); + } + return ch_xml; + } + } + + /** + * Liefert bestimmte Kinder des Elements als Array von XML-Objekten. + * Die Methode gibt dabei alle Kinder zurück, die dem angegebenen Namen entsprechen. + * @param name Name der gesuchten Kind-Objekte + * @return Array der Kinder als XML-Objekte + */ + public XML[] getChildren(String name) { + if (current == null) { + if(doc.hasRootElement()) { + XML[] ch_xml = new XML[1]; + ch_xml[0] = new XML(doc, doc.getRootElement()); + if(doc.getRootElement().getName().equals(name)){ + return ch_xml; + } else { + return null; + } + } else { + return null; + } + } else { + List ch_element = current.getChildren(name); + XML[] ch_xml = new XML[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + ch_xml[i] = new XML(doc, ch_element.get(i)); + } + return ch_xml; + } + } + + /** + * Liefert das erste Kind des Elements mit einem bestimmten Namen. + * Die Methode gibt das erste Kind zurück, das dem angegebenen Namen entsprechen. + * @param name Name des gesuchten Kind-Objektes + * @return Kind als XML-Objekt + */ + + public XML getChild(String name) { + if (current == null) { + Element e = doc.getRootElement(); + if (e.getName().equals(name)) { + return new XML(doc, e); + } else { + return null; + } + } else { + String[] names = name.split("/"); + Element e = current; + int i = 0; + while(i < names.length) { + e = e.getChild(names[i]); + if (e==null) return null; + i++; + } + return new XML(doc, e); + } + } + + /** + * Liefert das i. Kind des Elements. + * Die Methode gibt das i. Kind des aktuellen Elements zurück. + * @param i Nummer des Kindes + * @return Kind als XML-Objekt + */ + public XML getChild(int i) { + if (current == null) { + return new XML(doc, doc.getRootElement()); + } else { + List ch_element = current.getChildren(); + if (i>=ch_element.size()) return null; + return new XML(doc, ch_element.get(i)); + } + } + + //--------------------------------------------------- Methoden für das aktuelle Element ------------------------------------------------- + /** + * Frage den Namen des aktuellen Elements ab + * @return Namen des Elements + */ + public String getName() { + if (current==null) return ""; + return current.getName(); + } + + /** + * Setze den Namen des aktuellen Elements. + * @param name Neuer Name des Elements + */ + public void setName(String name) { + if (current==null) return; + current.setName(name); + } + + /** + * liefert die Anzahl der Attribute eines Elements. + * @return Anzahl des Attribute + */ + public int getAttributeCount() { + if (current == null) return 0; + return current.getAttributes().size(); + } + + /** + * liefert zurück, ob das aktuelle Element Attribute hat . + * @return true, wenn es Attribute gibt + */ + public boolean hasAttribute() { + if (current == null) return false; + return current.getAttributes().size()>0; + } + + /** + * Ruft alle Attribute des angegebenen Elements ab und gibt sie als Array von Strings zurück. + * @return Liste der Attributnamen + */ + public String[] listAttributes() { + if (current == null) return null; + List attr = current.getAttributes(); + String[] names = new String[attr.size()]; + for(int i=0; i < attr.size() ; i++) { + names[i] = attr.get(i).getName(); + } + return names; + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs + */ + public String getString(String attribute) { + if (current==null) return ""; + return current.getAttributeValue(attribute); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs + */ + public String getString(String attribute, String defaultValue) { + if (current==null) return defaultValue; + return current.getAttributeValue(attribute,defaultValue); + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param text neuer Wert des Attributs + */ + public void setString(String attribute, String text) { + if (current==null) return; + current.setAttribute(attribute, text); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Integer-Zahl + */ + public int getInt(String attribute) { + if (current==null) return 0; + try{ + int i = Integer.parseInt(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als Integer-Zahl + */ + public int getInt(String attribute, int defaultValue) { + if (current==null) return defaultValue; + try{ + int i = Integer.parseInt(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setInt(String attribute, int value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Float-Zahl + */ + public float getFloat(String attribute) { + if (current==null) return 0; + try{ + float i = Float.parseFloat(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als Float-Zahl + */ + public float getFloat(String attribute, float defaultValue) { + if (current==null) return defaultValue; + try{ + float i = Float.parseFloat(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setFloat(String attribute, float value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Double-Zahl + */ + public double getDouble(String attribute) { + if (current==null) return 0; + try{ + double i = Double.parseDouble(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + +/** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als double-Zahl + */ + public double getDouble(String attribute, double defaultValue) { + if (current==null) return defaultValue; + try{ + double i = Double.parseDouble(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setDouble(String attribute, double value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt den Inhalt/Text des aktuellen Elements ab + * @return Inhalt des Elements + */ + public String getContent() { + if ( current==null) return ""; + + return current.getText(); + } + + /** + * Fragt den Inhalt/Text des aktuellen Elements ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardtext + * @return Inhalt des Elements + */ + public String getContent(String defaultValue) { + if ( current==null) return defaultValue; + String t = current.getText(); + if(t.equals("")) t = defaultValue; + return t; + } + + /** + * Setzt den Inhalt/Text des aktuellen Elements + * @param text Neuer Inhalt des Elements + */ + public void setContent(String text) { + if ( current==null) return; + current.setText(text); + } + + + /** + * Fragt den Inhalt des aktuellen Elements als Integerzahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ public int getIntContent(int defaultValue) { + if ( current==null) return defaultValue; + try{ + int i = Integer.parseInt(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Integerzahl ab + * @return Inhalt des Elements + */ + public int getIntContent() { + if ( current==null) return 0; + try{ + int i = Integer.parseInt(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setIntContent(int value) { + if ( current==null) return; + current.setText(""+value); + } + + + /** + * Fragt den Inhalt des aktuellen Elements als Floatzahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ + public float getFloatContent(float defaultValue) { + if ( current==null) return defaultValue; + try{ + float i = Float.parseFloat(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Floatzahl ab + * @return Inhalt des Elements + */ + public float getFloatContent() { + if ( current==null) return 0; + try{ + float i = Float.parseFloat(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setFloatContent(float value) { + if ( current==null) return; + current.setText(""+value); + } + +/** + * Fragt den Inhalt des aktuellen Elements als Doublezahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ + public double getDoubleContent(double defaultValue) { + if ( current==null) return defaultValue; + try{ + double i = Double.parseDouble(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Doublezahl ab + * @return Inhalt des Elements + */ + public double getDoubleContent() { + if ( current==null) return 0; + try{ + double i = Double.parseDouble(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setDoubleContent(double value) { + if ( current==null) return; + current.setText(""+value); + } + + + // ----------------------------------------------- XML-Struktur aufbauen ------------------------------------------------ + /** Erzeuge neues Element nach der aktuellen Position und setze dieses als aktuelles Element + * @param name Name des neuen Elements + * @return neues Element als XML-Objekt + */ + public XML addChild(String name) { + Element e = new Element(name); + if(current == null){ // man ist auf Root-Ebene + doc.setRootElement(e); + + } + else { + current.addContent(e); + } // end of if-else + return new XML(doc, e); + } + + /** + * liefert das aktuelle Element als jdom-Element-Objekt + * @return aktuelles Element + */ + private Element getCurrent() { + return current; + } + + /** + * löscht ein Kind des aktuellen Knotens. + * Ist kid kein Kind des aktuellen Elements passiert gar nichts. + * @param kid XML-Objekt des Kindes + */ + public void removeChild(XML kid) { + if (current == null) return; + Element e = kid.getCurrent(); + int index = current.indexOf(e); + if(index >= 0) { current.removeContent(e);} + } + +} diff --git a/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a6/XYDiagramm.java b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a6/XYDiagramm.java new file mode 100644 index 0000000..f8e0580 --- /dev/null +++ b/04_loesungen/02_greenfoot/alg15_xydiagramm_loesung_a6/XYDiagramm.java @@ -0,0 +1,152 @@ +import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot und MouseInfo) +import java.awt.Font; + +/** + * XY-Diagramm für Schalldruckpegel, Zahlen werden aus CSV-Datei gelesen. + * + * @author Schaller + * @version 29.11.18 + */ +public class XYDiagramm extends PictureViewer + +{ + // Liste mit allen Werten + double[] x_werte; + double[] y_werte; + + // Hilfsvariablen für die Suche + int akt_maximum=-1; // aktuell groesstes Element + int akt=-1; // aktuell untersuchtes Element + int verzoegerung=0; // Geschwindigkeit der Ausführung + + // Schriften + Font kleineSchrift; + Font grosseSchrift; + + public XYDiagramm() { + size(1000, 700); + background(0); + kleineSchrift = new Font( Font.SANS_SERIF, Font.PLAIN, 12 ); + grosseSchrift = new Font( Font.SANS_SERIF, Font.PLAIN, 20 ); + + // Deaktiviere die automatische Neudarstellung nach einem Zeichenbefehl + setAutoRefresh(false); + + // CSV-Datei laden und anzeigen + ladeTabelle("Amplitudes.csv"); + stroke(250,250,200); + stroke(250, 250, 250); + zeichneXYDiagramm(40); + stroke(250, 100, 100); + zeichneXYDiagramm(100); + } + + public void ladeTabelle(String name) { + // Tabelle aus CSV-Datei laden + Table csv = new Table(name, "header",',','"'); + + if (csv != null && csv.getColumnCount()==2) { + + // Initialisiere Arrays, in die alle Zeilen der Tabelle passen + x_werte = new double[csv.getRowCount()]; + y_werte = new double[csv.getRowCount()]; + + // Fülle die Arrays mit Werten aus der Tabelle + for (int i = 0; i < x_werte.length; i++) { //x_werte.length; i++) { + // Lies Wert aus der i. Zeile und der Spalte "Punkte" bzw. "Name" + x_werte[i] = csv.getDouble(i, "Zeit"); + y_werte[i] = csv.getDouble(i, "Laerm"); + System.out.println("Lade Zeile: "+i); + } + } + } + + public void zeichneXYDiagramm(int schrittweite) { + + // Überschrift + fill(255, 255, 255); + textFont(grosseSchrift); + text("Lärmpegel", 2, 20); + textFont(kleineSchrift); + + // Alle Einträge darstellen + if (x_werte != null) { + // Maximum bestimmen + int max_x_pos = sucheMaximum(x_werte); + int max_y_pos = sucheMaximum(y_werte); + double max_x = x_werte[max_x_pos]; + double max_y = y_werte[max_y_pos]; + + // Skalierungsfaktoren + double faktor_x = 1000.0 / max_x; + double faktor_y = 700.0 / max_y; + + for (int i = 0; i+schrittweite< x_werte.length; i+=schrittweite) { + + // Durchschnitt berechnen + double x_durchschnitt1 = berechneDurchschnitt(x_werte,i,schrittweite); + double y_durchschnitt1 = berechneDurchschnitt(y_werte,i,schrittweite); + double x_durchschnitt2 = berechneDurchschnitt(x_werte,i+schrittweite,schrittweite); + double y_durchschnitt2 = berechneDurchschnitt(y_werte,i+schrittweite,schrittweite); + // Linien zeichnen + int x1 = (int) (x_durchschnitt1*faktor_x); + int y1 = (int) (700- y_durchschnitt1*faktor_y); + int x2 = (int) (x_durchschnitt2*faktor_x); + int y2 = (int) (700- y_durchschnitt2*faktor_y); + System.out.println("x1:"+x1+"y1:"+y1); + + line(x1,y1,x2,y2); + } + } + //Bildschrimanzeige erneuern. AutoRefresh ist aus Zeitgründen deaktiviert. + refresh(); + + } + + public int sucheMaximum(double[] zahlen) { + // Sind überhaupt Daten da? + if (zahlen.length==0 ) { + return -1; + } + + // Startwerte setzen + akt_maximum = 0; + akt = 1; + + // Alle Arrayelemente untersuchen + while (akt < zahlen.length) { + + // Neues größtes Element?? + if (zahlen[akt]> zahlen[akt_maximum]) { + // Dann merke dir das neue + akt_maximum = akt; + + } + akt = akt + 1; + } + // Gib Position des größten Elements zurück + return akt_maximum; + } + + public double berechneDurchschnitt(double[] zahlen, int start, int n) { + double summe; + int i; + + // Sind überhaupt Daten da? + if(zahlen.length==0 ) { + return -1; + } + + // Startwerte setzen + summe = 0; + + // n Arrayelemente ab start addieren + for (i=0; start+i< zahlen.length && i 0) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawLine(x1, y1, x2, y2); + } + repaint(); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, rectMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillRect(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawRect(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, ellipseMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillOval(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawOval(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + int px[] = {x1, x2, x3}; + int py[] = {y1, y2, y3}; + polygon(px, py); + + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + + int px[] = {x1, x2, x3, x4}; + int py[] = {y1, y2, y3, y4}; + polygon(px, py); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + + public void polygon(int[] x, int[] y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(fillcolor != null) { + + g.setColor(fillcolor); + g.fillPolygon(x,y, y.length); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawPolygon(x, y, x.length); + } + repaint(); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + ellipse(x,y,1, 1); + + } + + // ----------------------------------------- Schriftdarstellung ----------------------------------------------- + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param s Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String s, int x, int y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(pencolor != null) { + g.setColor(fillcolor); + g.setStroke(new BasicStroke((float) stroke)); + g.setFont(textfont); + g.drawString(s, x, y); + } + repaint(); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + this.textfont = font; + } + + + // ----------------------------------------- Farbfestlegungen ----------------------------------------------- + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(String color) { + try{ + return new Color( + Integer.valueOf( color.substring( 0, 2 ), 16 ), + Integer.valueOf( color.substring( 2, 4 ), 16 ), + Integer.valueOf( color.substring( 4, 6 ), 16 ) ); + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(int color) { + try{ + if(color >=0 && color < 256) { + return new Color(color,color,color); + } else { + int r = color / 0x010000 % 0xFF; + int g = color / 0x000100 % 0xFF; + int b = color % 0xFF; + System.out.println(""+r+","+g+","+b); + return new Color(r, g, b ); + } + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + this.pencolor = decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + this.pencolor=decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + this.pencolor = new Color(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + this.pencolor = null; + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + this.stroke = width; + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + this.fillcolor = decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + this.fillcolor=decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + this.fillcolor = new Color(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + this.fillcolor = null; + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + if(c < 256) { + this.background=new Color(c,c,c); + } else { + int r = c / 0x010000; + int g = c / 0x000100 % 0xFF; + int b = c % 0xFF; + this.background= new Color(r, g, b ); + } + + this.clear(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + this.background=new Color(r,g,b); + this.clear(); + } + + +// ----------------------------------------- Dateioperationen ----------------------------------------------- + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + try{ + this.image = ImageIO.read(new File(filename)); + this.background = decode("D0D0D0"); + this.pencolor = new Color(0,0,0); + this.fillcolor = null; + this.stroke = 1; + this.repaint(); + + } catch(Exception e) { + System.out.println("Fehler beim Einlesen der Bilddatei"); + } + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + try{ + String[] fn = filename.split("\\."); + if (fn.length== 1) { + ImageIO.write(image, "PNG", new File(filename+".png")); + } else { + + if (fn.length == 2 && (fn[1].toUpperCase().equals("PNG") || + fn[1].toUpperCase().equals("GIF"))){ + ImageIO.write(image, fn[1], new File(filename)); + }else { + System.out.println("Unbekanntes Bildformat"); + } + } + + } catch(Exception e) { + System.out.println("Fehler beim Speichern"); + } + } + + +// ----------------------------------------- Sonstiges ----------------------------------------------- + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + + public Color[][] getPixelArray() { + Color[][] pixel = new Color[image.getWidth()][image.getHeight()]; + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + pixel[x][y] = new java.awt.Color(image.getRGB(x,y)); + } + } + return pixel; + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + size(pixel.length,pixel[0].length); + Graphics2D g = (Graphics2D) image.getGraphics(); + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + g.setColor(pixel[x][y]); + g.fillRect(x, y, 1, 1); + } + } + repaint(); + } + + /** + * Hilfsfunktion zum Verzögern der Ausgabe + * @param millis Wartezeit in Millisekunden + */ + public void delay(int millis) { + try{ + Thread.sleep(millis); + + } catch(Exception e) { + + } + + } + + + +} diff --git a/04_loesungen/03_javaeditor/alg10_balkendiagramm_loesung/PictureViewer.java b/04_loesungen/03_javaeditor/alg10_balkendiagramm_loesung/PictureViewer.java new file mode 100644 index 0000000..9e6b151 --- /dev/null +++ b/04_loesungen/03_javaeditor/alg10_balkendiagramm_loesung/PictureViewer.java @@ -0,0 +1,505 @@ +/** + * Zeigt ein Bild in einem Scrollbereich an. + * Es ist möglich das Bild zu zoomen und mehrere Versionen des Bildes zu speichern, um eine "Rückgängig" Operation durchzuführen. + * @author Thomas Schaller + * @version 1.0 vom 01.02.2019 + */ + +import java.awt.*; +import java.awt.event.*; +import javax.swing.*; +import java.awt.image.*; +import java.util.Vector; + +public class PictureViewer extends JScrollPane +{ + + // das aktuelle Bild + private Picture picture; + + // Bilder für den Züruck-Modus speichern + private static final int ANZ_BACK = 20; + private Vector history; + + // Zeichenfläche + private ImageIcon scrollImageIcon; + private JLabel imageLabel; + + // Zoom Faktor + private double zoomFactor; + public static final int FIT = -1; + public static final int NORMAL = 1; + + + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der Größe 1000x1000 + */ + public PictureViewer() { + this(1000,1000); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public PictureViewer(int width, int height) { + this(width,height, "D0D0D0"); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + * @param background Farbe des Hintergrunds als HEX-String (z.B. "FF3A45") + */ + public PictureViewer(int width, int height, String background) { + this(new Picture(width,height, background)); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild aus einer Bilddatei + * @param filename Name des Bildes + */ + public PictureViewer(String filename) { + this(new Picture(filename)); + } + + /** + * Erzeugt ein ScrollPanel und zeigt das Bild-Objekt an + * @param picture anzuzeigendes Bild + */ + public PictureViewer(Picture picture) + { + this.picture=picture; + + zoomFactor=1; + + scrollImageIcon = new ImageIcon(picture.getImage().getScaledInstance(picture.getImage().getWidth(), picture.getImage().getHeight(), Image.SCALE_FAST)); + imageLabel = new JLabel(scrollImageIcon); + imageLabel.setVerticalAlignment(JLabel.CENTER); + imageLabel.setHorizontalAlignment(JLabel.CENTER); + setViewportView(imageLabel); + + this.setBorder(BorderFactory.createLineBorder(Color.black)); + picture.setObserver(this); + history = new Vector(); + + } + + /** + * Setzt das anzuzeigende Bild neu + * @param picture anzuzeigendes Bild + */ + public void setImage(Picture picture) { + this.history = new Vector(); + this.picture = picture; + setZoom(NORMAL); + } + + /** + * Speichert das übergebene Bild in der History. + * @param b zu speicherndes Bild + */ + public void pushImage() { + if( this.ANZ_BACK > 0) { + if(history.size() == this.ANZ_BACK) { + history.removeElementAt(0); + } + + BufferedImage b = new BufferedImage(picture.getWidth(), picture.getHeight(), picture.getImage().getType()); + Graphics g = b.getGraphics(); + g.drawImage(picture.getImage(), 0, 0, null); + g.dispose(); + + history.add(b); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + private void popImage() { + int anz = history.size(); + if(anz>0) { + BufferedImage img = history.get(anz-1); + history.removeElementAt(anz-1); + picture.setImage(img); + setZoom(zoomFactor); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + public void back() { + popImage(); + } + + /** + * Setzt das angezeigt Bild neu und beachtet dabei den Zoomfaktor. + */ + public void repaint() { + if( picture != null) { + double factor= zoomFactor; + if (zoomFactor == FIT) { + double factorw = ((double) getWidth()-2) / picture.getWidth(); + double factorh = ((double) getHeight()-2) / picture.getHeight(); + factor = Math.min(factorw, factorh); + } + int width = (int) (picture.getWidth()*factor); + int height = (int) (picture.getHeight()*factor); + + + + scrollImageIcon.setImage(picture.getImage().getScaledInstance(width, height, Image.SCALE_DEFAULT)); + revalidate(); + } + } + + /** + * Setzt den Zoom-Faktor für das Bild. + * Als Zoomfaktor sind auch die Konstanten Bildanzeiger.FIT (auf Bildschirmgröße zoomen) und Bildanzeiger.NORMAL (100%) möglich. + * @param factor Zoomfaktor (1.0 = 100%). + */ + public void setZoom(double factor) + { + zoomFactor = factor; + repaint(); + } + + + // Wrappermethoden + /** + * Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + * Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + * der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu. + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public void size(int width, int height){ + picture.size(width, height); + } + + /** + * Liefert die Breite des Bildes zurück. + * @return Breite des Bildes + */ + public int getImageWidth() { + return picture.getWidth(); + } + + /** + * Liefert die Höhe des Bildes zurück. + * @return Höhe des Bildes + */ + public int getImageHeight() { + return picture.getHeight(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + picture.background(c); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + picture.background(r,g,b); + } + + /** + * Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + * Um eine Linie einzufärben, verwenden Sie die {@link #stroke(int, int, int) stroke()} Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + * Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + * {@link #strokeWeight(double) strokeWeight()} geändert werden. + * @param x1 x-Koordinate des 1. Punktes + * @param y1 y-Koordinate des 1. Punktes + * @param x2 x-Koordinate des 2. Punktes + * @param y2 y-Koordinate des 2. Punktes + */ + public void line(int x1, int y1, int x2, int y2) { + picture.line(x1,y1,x2,y2); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + picture.rect(a,b,c,d); + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + picture.ellipse(a,b,c,d); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + picture.triangle(x1,y1,x2,y2,x3,y3); + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + picture.quad(x1,y1,x2,y2,x3,y3,x4,y4); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + public void polygon(int[] x, int[] y) { + picture.polygon(x,y); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + picture.point(x,y); + + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + * Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + * Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void rectMode(int mode) { + picture.rectMode(mode); + } + + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + * Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + * Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als Breite und Höhe der Form. + * ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void ellipseMode(int mode) { + picture.ellipseMode(mode); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + picture.stroke(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + picture.noStroke(); + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + picture.strokeWeight(width); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + picture.fill(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + picture.noFill(); + } + + /** + * Löscht den Inhalt des Bildes. + * Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt. + */ + public void clear(){ + picture.clear(); + } + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + picture.load(filename); + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + picture.save(filename); + } + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param t Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String t, int x, int y) { + picture.text(t,x,y); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + picture.textFont(font); + } + + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + public Color[][] getPixelArray() { + return picture.getPixelArray(); + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + picture.setPixelArray(pixel); + } + + + +} diff --git a/04_loesungen/03_javaeditor/alg10_balkendiagramm_loesung/Table.java b/04_loesungen/03_javaeditor/alg10_balkendiagramm_loesung/Table.java new file mode 100644 index 0000000..ee5a211 --- /dev/null +++ b/04_loesungen/03_javaeditor/alg10_balkendiagramm_loesung/Table.java @@ -0,0 +1,894 @@ +/** + * Die Klasse Table vereinfacht den Zugriff auf CSV-Dateien. + * Die Klassen Table und TableRow ermöglichen einen einfachen Zugriff auf tabellenbasierte + * Dokumente. + * + * @author Thomas Schaller + * @version 1.0 vom 01.02.2019 + */ + +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.ArrayList; +import java.io.*; +import java.util.Scanner; + +import org.jdom.Document; +import org.jdom.Element; +import org.jdom.Attribute; +import org.jdom.JDOMException; +import org.jdom.input.SAXBuilder; +import org.jdom.output.XMLOutputter; +import org.jdom.output.Format; + +public class Table +{ + // Standardtrennzeichen für Spalten + private static final char DEFAULT_SEPARATOR = ';'; + // Standardmarkierung für Texte + private static final char DEFAULT_QUOTE = '"'; + // Standardtrennzeichen für Dezimalzahlen + private static final char DEFAULT_COMMA = ','; + + // mögliche Spaltentypen + private static final String UNKNOWN ="UNKOWN"; + private static final String INT = "INTEGER"; + private static final String DOUBLE = "DOUBLE"; + private static final String FLOAT = "FLOAT"; + + // interne Verwaltung des Dokuments als JDOM-Document-Objekt + private Document doc; + // Verweis auf Element für Kopfzeile + private Element header; + // Ende Attribute + + /** + * Erzeugt leeres Tabellen-Dokument. + */ + public Table() { + this.doc = new Document(); + doc.setRootElement(new Element("CSV-Data")); + this.header = new Element("Header"); + doc.getRootElement().addContent(header); + } + + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei und erstellt ein Tabellenobjekt mit seinen Werten. + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public Table(String filename, String options, char separator, char quote) { + loadCSV(filename, options, separator, quote); + } + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei und erstellt ein Tabellenobjekt mit seinen Werten (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + */ + public Table(String filename, String options) { + loadCSV(filename, options); + } + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei ohne Kopfzeile und erstellt ein Tabellenobjekt mit seinen Werten (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public Table(String filename) { + loadCSV(filename); + } + + // Anfang Methoden + /** + * Liest den Inhalt einer CSV-Datei ohne Kopfzeile (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public void loadCSV(String filename) { + loadCSV(filename, ""); + } + + /** + * Liest den Inhalt einer CSV-Datei (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + */ + public void loadCSV(String filename, String options) { + loadCSV(filename, options, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** + * Liest den Inhalt einer CSV-Datei. + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public void loadCSV(String filename, String options, char separator, char quote) { + doc = new Document(); + doc.setRootElement(new Element("CSV-Data")); + header = new Element("Header"); + doc.getRootElement().addContent(header); + try { + File f = new File(filename); + Scanner scanner = new Scanner(new File(filename)); + if(options.toLowerCase().contains("header") && scanner.hasNext()) { + List entries = parseLine(scanner.nextLine(), separator, quote); + int i= 0; + for(String s : entries) { + Element entry = new Element("Column"); + header.addContent(entry); + entry.setText(s); + entry.setAttribute("type", "unknown"); + i++; + } + } + + List cols = header.getChildren(); + + while (scanner.hasNext()) { + Element line = new Element("Row"); + doc.getRootElement().addContent(line); + List entries = parseLine(scanner.nextLine(), separator, quote); + int i= 0; + + for(String s : entries) { + + if(i==cols.size()) { + Element entry = new Element("Column"); + entry.setAttribute("type", "unknown"); + header.addContent(entry); + cols = header.getChildren(); + } + + Element entry = new Element("Entry"); + entry.setText(s); + line.addContent(entry); + i++; + } + } + scanner.close(); + + } catch (Exception e) { + System.out.println("Fehler beim Lesen der CSV-Datei"); + } + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei ohne Kopfzeile (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public void saveCSV(String filename) { + saveCSV(filename, ""); + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthalten, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile haben soll, + * dann lassen Sie einfach die Option "header" weg. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile haben soll. + * @param filename Dateiname der CSV-Datei. + */ + public void saveCSV(String filename, String options) { + saveCSV(filename, options, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei. + * Wenn die Datei eine Kopfzeile enthalten, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile haben soll, + * dann lassen Sie einfach die Option "header" weg. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile haben soll. + * @param filename Dateiname der CSV-Datei. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public void saveCSV(String filename, String options, char separator, char quote){ + try{ + File f = new File(filename); + PrintStream outputFile = new PrintStream (f); + System.out.println("Speicher in : "+f.getAbsolutePath()); + List columns = header.getChildren(); + String sq = ""+quote; + String ss = ""+separator; + if(quote =='"') sq = "\""; + if(separator =='"') ss = "\""; + + if(options.toLowerCase().contains("header")) { + String h = ""; + for(Element c : columns) { + h += ss + sq + c.getText()+sq; + } + outputFile.println(h.substring(1)); + } + for(int i = 0; i parseLine(String cvsLine) { + return parseLine(cvsLine, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** HIlfsfunktion für die Analyse einer Dateizeile + * @param cvsLine Zeile aus der Datei + * @param sparator Trennzeichen für die Spalten + * @return Liste von String für die einzelnen Spalten + */ + private List parseLine(String cvsLine, char separator) { + return parseLine(cvsLine, separator, DEFAULT_QUOTE); + } + + /** HIlfsfunktion für die Analyse einer Dateizeile + * @param cvsLine Zeile aus der Datei + * @param sparator Trennzeichen für die Spalten + * @param customQuote Kennung für Strings + * @return Liste von String für die einzelnen Spalten + */ + private List parseLine(String cvsLine, char separator, char customQuote) { + + List result = new ArrayList<>(); + + //if empty, return! + if (cvsLine == null && cvsLine.isEmpty()) { + return result; + } + + //ggf. Default-Value laden + if (customQuote == ' ') { + customQuote = DEFAULT_QUOTE; + } + + if (separator == ' ') { + separator = DEFAULT_SEPARATOR; + } + + StringBuffer curVal = new StringBuffer(); + boolean inQuotes = false; + boolean startCollectChar = false; + boolean doubleQuotesInColumn = false; + + char[] chars = cvsLine.toCharArray(); + + for (char ch : chars) { + + if (inQuotes) { // aktueller Text ist in Quotes eingeschlossen + startCollectChar = true; + + if (ch == customQuote) { // Quotes werden beendet, aber Achtung bei "" => Metazeichen + inQuotes = false; + if (ch == '\"') { + doubleQuotesInColumn = true; + } + + } else { + + if (ch == '\"' && !doubleQuotesInColumn) { + doubleQuotesInColumn = true; + } else { + curVal.append(ch); + doubleQuotesInColumn = false; + } + + } + } else { + if (ch == customQuote) { + + inQuotes = true; + + //Fixed : allow "" in empty quote enclosed + if (ch == '\"'){ + if(doubleQuotesInColumn) { + curVal.append('"'); + doubleQuotesInColumn = false; + } else doubleQuotesInColumn = true; + + + } + } + else { + doubleQuotesInColumn = false; + if (ch == separator) { + + result.add(curVal.toString()); + + curVal = new StringBuffer(); + startCollectChar = false; + + } else if (ch == '\r') { + //ignore LF characters + continue; + } else if (ch == '\n') { + //the end, break! + break; + } else { + curVal.append(ch); + } + } + } + + } + result.add(curVal.toString()); + return result; + } + + /** + * Sucht die Nummer einer durch Namen gegebenen Spalte. + * @param name Name der Spalte + * @return Nummer der Spalte + */ + + private int findColumnNumber(String name) { + List columns = header.getChildren(); + int i = 0; + for(Element c : columns) { + if (c.getText().toLowerCase().equals(name.toLowerCase())) { + return i; + + } + i++; + } + return -1; + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an. + */ + public void addColumn() { + Element entry = new Element("Column"); + entry.setAttribute("type", Table.UNKNOWN); + header.addContent(entry); + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an und benennt sie. + * @param title Bezeichnung der Spalte + */ + public void addColumn(String title) { + addColumn(); + Element nc = ((List)(header.getChildren())).get(header.getChildren().size()-1); + nc.setText(title); + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an und benennt und typisiert sie. + * @param title Bezeichnung der Spalte + * @param type Typ der Spalte (UNKNOWN, DOUBLE, INTEGER, FLOAT) + */ + public void addColumn(String title, String type) { + addColumn(title); + Element nc = ((List)(header.getChildren())).get(header.getChildren().size()-1); + nc.setAttribute("type", type); + } + + /** + * Löscht eine Spalte. + * @param i Nummer der Spalte. + */ + public void removeColumn(int i) { + List lines = doc.getRootElement().getChildren(); + for(Element l : lines) { + if(l.getChildren().size()>i) l.removeContent(i); + } + } + + /** + * Löscht eine Spalte + * @param name Name der Spalte + */ + public void removeColumn(String name) { + try{ + removeColumn(findColumnNumber(name)); + } catch(Exception e) { System.out.println("Unbekannter Spaltenname");} + } + + /** + * Liefert die Anzahl der Spalten in der Tabelle + * @return Anzahl der Spalten + */ + public int getColumnCount() { + return header.getChildren().size(); + } + + /** + * Liefert die Anzahl der Zeilen in der Tabelle + * @return Anzahl der Zeilen + */ + public int getRowCount() { + return doc.getRootElement().getChildren().size()-1; + } + + /** + * Löscht alle Zeilen der Tabelle. + * Die Spaltenüberschriften und Typen bleiben erhalten. + */ + public void clearRows() { + doc.getRootElement().removeChildren("Row"); + } + + /** + * Fügt eine neue Zeile an das Ende der Tabelle an. + * @return ein TableRow-Objekt für diese neue Zeile + */ + public TableRow addRow() { + Element row = new Element("Row"); + doc.getRootElement().addContent(row); + return new TableRow(doc, row); + } + + /** + * Löscht eine Zeile + * @param i Nummer der Zeile + */ + public void removeRow(int i) { + if(i rows = doc.getRootElement().getChildren(); + return new TableRow(doc, rows.get(i+1)); + } + return null; + } + + /** + * Liefert die ganze Tabelle als Array von TableRow-Objekten + * @return Array von TableRow-Objekten + */ + public TableRow[] rows() { + TableRow[] rows = new TableRow[getRowCount()]; + for(int i = 0; i < getRowCount(); i++) { + rows[i] = getRow(i); + } + return rows; + } + + /** + * Liefert den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param column Spaltennummer + * @return Wert der Zelle + */ + public int getInt(int row, int column) { + return getRow(row).getInt(column); + } + + /** + * Liefert den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param name Name der Spalte + * @return Wert der Zelle + */ + public int getInt(int row, String name) { + return getRow(row).getInt(name); + } + + /** + * Setzt den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param column Spaltennummer + * @param value neuer Wert der Zelle + */ + public void setInt(int row, int column,int value) { + getRow(row).setInt(column, value); + } + + /** + * Setzt den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(int row, String name, int value) { + getRow(row).setInt(name, value); + } + + /** + * Liefert alle Werte einer Zeile als Integer-Array. + * @param row Nummer der Zeile + * @return int-Array, dass alle Werte der Zeile enthält + */ + public int[] getIntRow(int row) { + try{ + TableRow trow = getRow(row); + int anz = getColumnCount(); + int[] r = new int[anz]; + for(int i=0; i) (header.getChildren())).get(i).getText(); + } else { + return ""; + } + } + + /** + * Liefert die Nummer einer Spalte + * @param name Name der Spalte + * @return Nummer der Spalte + */ + public int getColumn(String name) { + List columns = header.getChildren(); + int i = 0; + while (i < columns.size()) { + if (columns.get(i).getText().toLowerCase().equals(name.toLowerCase())) { + return i; + } + i++; + } // end of while + return -1; + } + + + /** + * Erzeugt eine neue Zeile mit i Spalten + * Wenn bisher nicht genügend Spalten vorhanden sind, werden automatisch neue Spalten hinzugefügt (auch zum Header) + * @param i Anzahl der Spalten + */ + private Element buildRow(int i) { + List columns = header.getChildren(); + Element entry=null; + for(int j=0; j<=i; j++) { + + if(j==columns.size()) { + Element h = new Element("Column"); + h.setAttribute("type", "unknown"); + header.addContent(h); + columns = header.getChildren(); + } + if(j==current.getChildren().size()) { + entry = new Element("Entry"); + current.addContent(entry); + + } + + } + return entry; + + } + + /** + * Erzeugt eine neue Zeile. + * Es werden genügend Spalten erzeugt, dass ein Wert in Spalte "name" eingetragen werden kann + * @param name Name der Spalte + */ + private Element buildRow(String name) { + List columns = header.getChildren(); + int i = 0; + for(Element c: columns) { + + if(c.getText().toLowerCase().equals(name.toLowerCase())) { + return buildRow(i); + } + i++; + } + return null; + + } + + /** + * Liefert den Wert einer Zelle als String + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public String getString(int i) { + if(i >= current.getContent().size()) return ""; + Element e = (Element) current.getContent(i) ; + if(e!=null) { + return e.getText(); + } else { + return ""; + } + } + + /** + * Liefert den Wert einer Zelle als String + * @param name Name der Spalte + * @return Wert der Zelle + */ + public String getString(String name) { + return getString(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als String + * @param i Nummer der Spalte + * @param text neuer Wert der Zelle + */ + public void setString(int i, String text) { + + Element e = buildRow(i); + if(e!=null) e.setText(text); + } + + /** + * Setzt den Wert einer Zelle als String + * @param name Name der Spalte + * @param text neuer Wert der Zelle + */ + public void setString(String name, String text) { + Element e = buildRow(name); + if(e!=null) e.setText(text); + } + + + /** + * Liefert den Wert einer Zelle als Int-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public int getInt(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Integer.parseInt(e.getText()); + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Int-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public int getInt(String name) { + return getInt(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Int-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(int i,int value) { + + Element e = buildRow(i); + if(e!=null) e.setText(""+value); + } + + /** + * Setzt den Wert einer Zelle als Int-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(String name, int value) { + Element e = buildRow(name); + if(e!=null) e.setText(""+value); + } + + /** + * Liefert den Wert einer Zelle als Float-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public float getFloat(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Float.parseFloat(e.getText().replace(",",".")); + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Float-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public float getFloat(String name) { + return getFloat(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Float-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setFloat(int i,float value) { + + Element e = buildRow(i); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Setzt den Wert einer Zelle als Float-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setFloat(String name, float value) { + Element e = buildRow(name); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Liefert den Wert einer Zelle als Double-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public double getDouble(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Double.parseDouble(e.getText().replace(",",".")); + + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Double-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public double getDouble(String name) { + return getDouble(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Double-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setDouble(int i,double value) { + + Element e = buildRow(i); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Setzt den Wert einer Zelle als Double-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setDouble(String name, double value) { + Element e = buildRow(name); + if(e!=null) e.setText(format.format(value)); + } + +} diff --git a/04_loesungen/03_javaeditor/alg10_balkendiagramm_loesung/XML.java b/04_loesungen/03_javaeditor/alg10_balkendiagramm_loesung/XML.java new file mode 100644 index 0000000..c06c490 --- /dev/null +++ b/04_loesungen/03_javaeditor/alg10_balkendiagramm_loesung/XML.java @@ -0,0 +1,637 @@ +/** + * Klasse zum Vereinfachten Zugriff auf XML-Dokumente + * Diese Klasse ist für den Einsatz in der Schule gedacht und soll den Schülern + * einen einfachen Zugriff auf XML-Dokumente ermöglichen. Die zur Verfügung + * stehenden Befehle sind wie in Processing realisiert. + * Dabei ist jeder Teilbaum des Dokuments wieder als XML-Objekt zugreifbar, das + * intern auf die gleiche XML-Dokumentstruktur zugreift. + * Dies ermöglicht bei unsachgemäßem Gebrauch die XML-Struktur zu zerstören. Im + * normalen Gebrauch sollte dies aber nicht relevant sein. + * + * Benötigt: jdom-1.1.3.jar + + * @author Thomas Schaller + * @version 1.0 vom 31.01.2019 + */ +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.ArrayList; +import java.io.*; + +import org.jdom.Document; +import org.jdom.Element; +import org.jdom.Attribute; +import org.jdom.JDOMException; +import org.jdom.input.SAXBuilder; +import org.jdom.output.XMLOutputter; +import org.jdom.output.Format; + +public class XML { + // Anfang Attribute + // XML-Dokumentstruktur + private Document doc; + // Zeiger auf das aktuelle Element + private Element current; + // Ende Attribute + + /** + * Erzeugt ein leeres XMLDokument + */ + public XML() { + this.doc = new Document(); + this.current = null; + } + + /** + * Erzeugt ein XML-Dokument aus einer Datei + * @param filename Dateiname der XML-Datei + */ + public XML(String filename) { + loadXML(filename); + } + + /** + * interner Konstruktor, um ein XML Objekt zu erzeugen, das auf einen bestimmten Knoten verweist + * @param doc die XML-Dokumentstruktur + * @param current Zeiger auf das aktuelle Element + */ + private XML(Document doc, Element current) { + this.doc = doc; + this.current = current; + } + + // Anfang Methoden + /** Öffnet das durch den Dateinamen gegebene Dokument + * @param filename Dateiname des XML-Files + */ + public void loadXML(String filename) { + doc = null; + File f = new File(filename); + + try { + // Das Dokument erstellen + SAXBuilder builder = new SAXBuilder(); + doc = builder.build(f); + + } catch (JDOMException e) { + e.printStackTrace(); + + } catch (IOException e) { + e.printStackTrace(); + } + // Zeiger im Baum auf Root-Element + current = doc.getRootElement(); + } + + /** Speichert den XML-Baum im angegebenen Dateinamen + * @param filename Dateiname des XML-Files + */ + public void saveXML(String filename) { + try { + // new XMLOutputter().output(doc, System.out); + XMLOutputter xmlOutput = new XMLOutputter(); + + // display nice nice + xmlOutput.setFormat(Format.getPrettyFormat()); + File f = new File(filename); + FileOutputStream outputFile = new FileOutputStream(f); + System.out.println("Speicher in : "+f.getAbsolutePath() ); + xmlOutput.output(doc, outputFile); + outputFile.close(); + System.out.println("File Saved!"); + } catch (IOException io) { + System.out.println(io.getMessage()); + } + + } + + //----------------------------------------------- Zeigerbewegungen -------------------------------------------------- + /** + * liefert ein XML-Objekt, das auf den Vaterknoten des aktuellen Elements zeigt. + * @return Vater des aktuellen Objekts. + */ + public XML getParent() { + if(current != null) { + Element parent = current.getParentElement(); + if (parent == null) { + return null; + } else { + return new XML(doc, parent); + } + } + return null; + } + + /** + * Überprüft, ob das Element irgendwelche Kinder hat oder nicht, und gibt das Ergebnis als boolean zurück. + * @return true, wenn Kinder vorhanden sind, sonst false + */ + public boolean hasChildren() { + if (current == null) { + return doc.hasRootElement(); + } else { + return current.getChildren().size()>0; + } + } + + /** + * Ermittelt die Namen aller Kinder des Elements und gibt die Namen als ein Array von Strings zurück. + * Dies ist dasselbe wie das Durchlaufen und Aufrufen von getName() auf jedem untergeordneten Element einzeln. + * @return Liste aller Namen der Kinder + */ + public String[] listChildren() { + if (current == null) { + if(doc.hasRootElement()) { + String[] names = new String[0]; + names[0] = doc.getRootElement().getName(); + return names; + } else { + return null; + } + } else { + List ch_element = current.getChildren(); + String[] names = new String[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + names[i] = ch_element.get(i).getName(); + } + return names; + } + } + + /** + * Liefert alle Kinder des Elements als Array von XML-Objekten. + * @return Array der Kinder als XML-Objekte + */ + public XML[] getChildren() { + if (current == null) { + if(doc.hasRootElement()) { + XML[] ch_xml = new XML[1]; + ch_xml[0] = new XML(doc, doc.getRootElement()); + return ch_xml; + } else { + return null; + } + } else { + List ch_element = current.getChildren(); + XML[] ch_xml = new XML[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + ch_xml[i] = new XML(doc, ch_element.get(i)); + } + return ch_xml; + } + } + + /** + * Liefert bestimmte Kinder des Elements als Array von XML-Objekten. + * Die Methode gibt dabei alle Kinder zurück, die dem angegebenen Namen entsprechen. + * @param name Name der gesuchten Kind-Objekte + * @return Array der Kinder als XML-Objekte + */ + public XML[] getChildren(String name) { + if (current == null) { + if(doc.hasRootElement()) { + XML[] ch_xml = new XML[1]; + ch_xml[0] = new XML(doc, doc.getRootElement()); + if(doc.getRootElement().getName().equals(name)){ + return ch_xml; + } else { + return null; + } + } else { + return null; + } + } else { + List ch_element = current.getChildren(name); + XML[] ch_xml = new XML[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + ch_xml[i] = new XML(doc, ch_element.get(i)); + } + return ch_xml; + } + } + + /** + * Liefert das erste Kind des Elements mit einem bestimmten Namen. + * Die Methode gibt das erste Kind zurück, das dem angegebenen Namen entsprechen. + * @param name Name des gesuchten Kind-Objektes + * @return Kind als XML-Objekt + */ + + public XML getChild(String name) { + if (current == null) { + Element e = doc.getRootElement(); + if (e.getName().equals(name)) { + return new XML(doc, e); + } else { + return null; + } + } else { + String[] names = name.split("/"); + Element e = current; + int i = 0; + while(i < names.length) { + e = e.getChild(names[i]); + if (e==null) return null; + i++; + } + return new XML(doc, e); + } + } + + /** + * Liefert das i. Kind des Elements. + * Die Methode gibt das i. Kind des aktuellen Elements zurück. + * @param i Nummer des Kindes + * @return Kind als XML-Objekt + */ + public XML getChild(int i) { + if (current == null) { + return new XML(doc, doc.getRootElement()); + } else { + List ch_element = current.getChildren(); + if (i>=ch_element.size()) return null; + return new XML(doc, ch_element.get(i)); + } + } + + //--------------------------------------------------- Methoden für das aktuelle Element ------------------------------------------------- + /** + * Frage den Namen des aktuellen Elements ab + * @return Namen des Elements + */ + public String getName() { + if (current==null) return ""; + return current.getName(); + } + + /** + * Setze den Namen des aktuellen Elements. + * @param name Neuer Name des Elements + */ + public void setName(String name) { + if (current==null) return; + current.setName(name); + } + + /** + * liefert die Anzahl der Attribute eines Elements. + * @return Anzahl des Attribute + */ + public int getAttributeCount() { + if (current == null) return 0; + return current.getAttributes().size(); + } + + /** + * liefert zurück, ob das aktuelle Element Attribute hat . + * @return true, wenn es Attribute gibt + */ + public boolean hasAttribute() { + if (current == null) return false; + return current.getAttributes().size()>0; + } + + /** + * Ruft alle Attribute des angegebenen Elements ab und gibt sie als Array von Strings zurück. + * @return Liste der Attributnamen + */ + public String[] listAttributes() { + if (current == null) return null; + List attr = current.getAttributes(); + String[] names = new String[attr.size()]; + for(int i=0; i < attr.size() ; i++) { + names[i] = attr.get(i).getName(); + } + return names; + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs + */ + public String getString(String attribute) { + if (current==null) return ""; + return current.getAttributeValue(attribute); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs + */ + public String getString(String attribute, String defaultValue) { + if (current==null) return defaultValue; + return current.getAttributeValue(attribute,defaultValue); + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param text neuer Wert des Attributs + */ + public void setString(String attribute, String text) { + if (current==null) return; + current.setAttribute(attribute, text); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Integer-Zahl + */ + public int getInt(String attribute) { + if (current==null) return 0; + try{ + int i = Integer.parseInt(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als Integer-Zahl + */ + public int getInt(String attribute, int defaultValue) { + if (current==null) return defaultValue; + try{ + int i = Integer.parseInt(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setInt(String attribute, int value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Float-Zahl + */ + public float getFloat(String attribute) { + if (current==null) return 0; + try{ + float i = Float.parseFloat(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als Float-Zahl + */ + public float getFloat(String attribute, float defaultValue) { + if (current==null) return defaultValue; + try{ + float i = Float.parseFloat(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setFloat(String attribute, float value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Double-Zahl + */ + public double getDouble(String attribute) { + if (current==null) return 0; + try{ + double i = Double.parseDouble(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + +/** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als double-Zahl + */ + public double getDouble(String attribute, double defaultValue) { + if (current==null) return defaultValue; + try{ + double i = Double.parseDouble(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setDouble(String attribute, double value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt den Inhalt/Text des aktuellen Elements ab + * @return Inhalt des Elements + */ + public String getContent() { + if ( current==null) return ""; + + return current.getText(); + } + + /** + * Fragt den Inhalt/Text des aktuellen Elements ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardtext + * @return Inhalt des Elements + */ + public String getContent(String defaultValue) { + if ( current==null) return defaultValue; + String t = current.getText(); + if(t.equals("")) t = defaultValue; + return t; + } + + /** + * Setzt den Inhalt/Text des aktuellen Elements + * @param text Neuer Inhalt des Elements + */ + public void setContent(String text) { + if ( current==null) return; + current.setText(text); + } + + + /** + * Fragt den Inhalt des aktuellen Elements als Integerzahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ public int getIntContent(int defaultValue) { + if ( current==null) return defaultValue; + try{ + int i = Integer.parseInt(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Integerzahl ab + * @return Inhalt des Elements + */ + public int getIntContent() { + if ( current==null) return 0; + try{ + int i = Integer.parseInt(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setIntContent(int value) { + if ( current==null) return; + current.setText(""+value); + } + + + /** + * Fragt den Inhalt des aktuellen Elements als Floatzahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ + public float getFloatContent(float defaultValue) { + if ( current==null) return defaultValue; + try{ + float i = Float.parseFloat(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Floatzahl ab + * @return Inhalt des Elements + */ + public float getFloatContent() { + if ( current==null) return 0; + try{ + float i = Float.parseFloat(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setFloatContent(float value) { + if ( current==null) return; + current.setText(""+value); + } + +/** + * Fragt den Inhalt des aktuellen Elements als Doublezahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ + public double getDoubleContent(double defaultValue) { + if ( current==null) return defaultValue; + try{ + double i = Double.parseDouble(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Doublezahl ab + * @return Inhalt des Elements + */ + public double getDoubleContent() { + if ( current==null) return 0; + try{ + double i = Double.parseDouble(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setDoubleContent(double value) { + if ( current==null) return; + current.setText(""+value); + } + + + // ----------------------------------------------- XML-Struktur aufbauen ------------------------------------------------ + /** Erzeuge neues Element nach der aktuellen Position und setze dieses als aktuelles Element + * @param name Name des neuen Elements + * @return neues Element als XML-Objekt + */ + public XML addChild(String name) { + Element e = new Element(name); + if(current == null){ // man ist auf Root-Ebene + doc.setRootElement(e); + + } + else { + current.addContent(e); + } // end of if-else + return new XML(doc, e); + } + + /** + * liefert das aktuelle Element als jdom-Element-Objekt + * @return aktuelles Element + */ + private Element getCurrent() { + return current; + } + + /** + * löscht ein Kind des aktuellen Knotens. + * Ist kid kein Kind des aktuellen Elements passiert gar nichts. + * @param kid XML-Objekt des Kindes + */ + public void removeChild(XML kid) { + if (current == null) return; + Element e = kid.getCurrent(); + int index = current.indexOf(e); + if(index >= 0) { current.removeContent(e);} + } + +} diff --git a/04_loesungen/03_javaeditor/alg10_balkendiagramm_loesung/jdom-1.1.3.jar b/04_loesungen/03_javaeditor/alg10_balkendiagramm_loesung/jdom-1.1.3.jar new file mode 100644 index 0000000..a287727 Binary files /dev/null and b/04_loesungen/03_javaeditor/alg10_balkendiagramm_loesung/jdom-1.1.3.jar differ diff --git a/04_loesungen/03_javaeditor/alg11_balkendiagramm_zufall_loesung/Balkendiagramm.java b/04_loesungen/03_javaeditor/alg11_balkendiagramm_zufall_loesung/Balkendiagramm.java new file mode 100644 index 0000000..041ad09 --- /dev/null +++ b/04_loesungen/03_javaeditor/alg11_balkendiagramm_zufall_loesung/Balkendiagramm.java @@ -0,0 +1,70 @@ +import java.awt.Font; + +/** + * Balkendiagramm für int-Array, Zahlen werden zufällig erzeugt. + * + * @author Schaller + * @version 29.11.18 + */ +public class Balkendiagramm extends Picture +{ + // Liste mit allen Werten + int[] zahlen; + + // Schriften + Font kleineSchrift; + Font grosseSchrift; + + public Balkendiagramm() { + size(1000, 700); + background(0); + kleineSchrift = new Font( Font.SANS_SERIF, Font.PLAIN, 12 ); + grosseSchrift = new Font( Font.SANS_SERIF, Font.PLAIN, 20 ); + + // Zufallszahlen erzeugen und anzeigen + erzeugeZufallsarray(20); + + zeichneBalken(); + } + + public int getZufallszahl(int min, int max) { + java.util.Random r = new java.util.Random(); + return r.nextInt(max-min+1)+min; + } + + public void erzeugeZufallsarray(int laenge) { + // Neues Array der richtigen Länge erzeugen + zahlen = new int[laenge]; + + // Jedes Element mit einer Zufallszahl belegen + for(int i= 0; i< laenge; i++) { + zahlen[i] = getZufallszahl(1, 300); + } + } + + public void zeichneBalken() { + clear(); + + // Überschrift + fill(255,255,255); + textFont(grosseSchrift); + text("Balkendiagramm", 2, 20); + textFont(kleineSchrift); + + // Alle Einträge darstellen + for (int i = 0; i< zahlen.length; i++) { + + fill(20,30,170); + + // Balkendiagramm zeichnen + rect(120, 25+i*15, zahlen[i]+1, 13); + + // Beschriftung + fill(255,255,255); + text("i="+i, 2, 35+i*15); + text("zahlen["+i+"]="+zahlen[i], 30, 35+i*15); + } + } + + +} diff --git a/04_loesungen/03_javaeditor/alg11_balkendiagramm_zufall_loesung/BalkendiagrammGUI.java b/04_loesungen/03_javaeditor/alg11_balkendiagramm_zufall_loesung/BalkendiagrammGUI.java new file mode 100644 index 0000000..97d6e5e --- /dev/null +++ b/04_loesungen/03_javaeditor/alg11_balkendiagramm_zufall_loesung/BalkendiagrammGUI.java @@ -0,0 +1,66 @@ +import java.awt.*; +import java.awt.event.*; +import javax.swing.*; +import javax.swing.event.*; + +/** + * + * description + * + * @version 1.0 from 06.10.2018 + * @author + */ + +public class BalkendiagrammGUI extends JFrame { + // Anfang Attribute + private JButton bZeichnen = new JButton(); + private PictureViewer imagePanel1 = new PictureViewer(); + + // Ende Attribute + + public BalkendiagrammGUI (String title) { + super (title); + setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); + int frameWidth = 768; + int frameHeight = 551; + setSize(frameWidth, frameHeight); + Dimension d = Toolkit.getDefaultToolkit().getScreenSize(); + int x = (d.width - getSize().width) / 2; + int y = (d.height - getSize().height) / 2; + setLocation(x, y); + Container cp = getContentPane(); + cp.setLayout(null); + // Anfang Komponenten + bZeichnen.setBounds(256, 456, 273, 33); + bZeichnen.setText("Balkendiagramm zeichnen"); + bZeichnen.setMargin(new Insets(2, 2, 2, 2)); + bZeichnen.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent evt) { + bZeichnen_ActionPerformed(evt); + } + }); + cp.add(bZeichnen); + imagePanel1.setBounds(24, 16, 705, 409); + cp.add(imagePanel1); + + // Ende Komponenten + setResizable(false); + setVisible(true); + } + + // Anfang Methoden + public void bZeichnen_ActionPerformed(ActionEvent evt) { + Balkendiagramm bild = new Balkendiagramm(); + imagePanel1.setImage(bild); + imagePanel1.getViewport().repaint(); + imagePanel1.getVerticalScrollBar().setValue(1); + imagePanel1.getVerticalScrollBar().setValue(0); + } // end of bZeichnen_ActionPerformed + + // Ende Methoden + + public static void main(String[] args) { + new BalkendiagrammGUI("BalkendiagrammGUI"); + } +} + diff --git a/04_loesungen/03_javaeditor/alg11_balkendiagramm_zufall_loesung/BalkendiagrammGUI.jfm b/04_loesungen/03_javaeditor/alg11_balkendiagramm_zufall_loesung/BalkendiagrammGUI.jfm new file mode 100644 index 0000000..707d571 --- /dev/null +++ b/04_loesungen/03_javaeditor/alg11_balkendiagramm_zufall_loesung/BalkendiagrammGUI.jfm @@ -0,0 +1,103 @@ +object BalkendiagrammGUI: TFGUIForm + Left = 761 + Top = 237 + BorderIcons = [biSystemMenu] + Caption = 'BalkendiagrammGUI' + ClientHeight = 512 + ClientWidth = 752 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -10 + Font.Name = 'MS Sans Serif' + Font.Style = [] + FormStyle = fsStayOnTop + OldCreateOrder = True + Position = poDesigned + ShowHint = True + Visible = True + OnClose = FormClose + OnCloseQuery = FormCloseQuery + OnResize = FormResize + FrameType = 5 + Resizable = False + Undecorated = False + Background = clBtnFace + PixelsPerInch = 96 + TextHeight = 13 + object bOptischeTauschungzeichnen: TJButton + Tag = 4 + Left = 256 + Top = 456 + Width = 273 + Height = 33 + Hint = 'jButton1' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Dialog' + Font.Style = [fsBold] + Foreground = 3355443 + Background = 15658734 + actionPerformed = 'bOptischeTauschungzeichnen_ActionPerformed' + Text = 'Optische T'#228'uschung zeichnen' + Mnemonic = 0 + DisplayedMnemonicIndex = 0 + Selected = False + BorderPainted = True + FocusPainted = False + ContentAreaFilled = True + HorizontalAlignment = CENTER + VerticalAlignment = CENTER + HorizontalTextPosition = RIGHT + VerticalTextPosition = CENTER + IconTextGap = 4 + RolloverEnabled = False + Border.BorderType = NoBorder + Border.LineColor = clBlack + Border.LineThickness = 0 + Border.LineRounded = False + Border.EtchHighlightColor = clBlack + Border.EtchShadowColor = clBlack + Border.Etchtype = 0 + Border.BevelHighlightColor = clBlack + Border.BevelShadowColor = clBlack + Border.Beveltype = 0 + Border.MatteColor = clBlack + Border.MatteTop = 0 + Border.MatteLeft = 0 + Border.MatteBottom = 0 + Border.MatteRight = 0 + end + object imagePanel1: TJPanel + Tag = 38 + Left = 24 + Top = 16 + Width = 705 + Height = 409 + Hint = 'imagePanel1' + HelpKeyword = 'ImagePanel' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Dialog' + Font.Style = [fsBold] + Foreground = 3355443 + Background = clBtnFace + Border.BorderType = NoBorder + Border.LineColor = clBlack + Border.LineThickness = 0 + Border.LineRounded = False + Border.EtchHighlightColor = clBlack + Border.EtchShadowColor = clBlack + Border.Etchtype = 0 + Border.BevelHighlightColor = clBlack + Border.BevelShadowColor = clBlack + Border.Beveltype = 0 + Border.MatteColor = clBlack + Border.MatteTop = 0 + Border.MatteLeft = 0 + Border.MatteBottom = 0 + Border.MatteRight = 0 + end +end diff --git a/04_loesungen/03_javaeditor/alg11_balkendiagramm_zufall_loesung/Picture.java b/04_loesungen/03_javaeditor/alg11_balkendiagramm_zufall_loesung/Picture.java new file mode 100644 index 0000000..8df3d55 --- /dev/null +++ b/04_loesungen/03_javaeditor/alg11_balkendiagramm_zufall_loesung/Picture.java @@ -0,0 +1,699 @@ +import java.awt.image.*; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.BasicStroke; +import java.util.Vector; +import javax.imageio.*; +import java.io.*; +import java.awt.*; +import javax.swing.*; +import java.util.Random; +import java.awt.geom.AffineTransform; +/** + * + * Bildklasse für die Simulation von Processing-Befehlen + * + * Diese Klasse stellt ein BufferedImage bereit, in das mit Processing-Befehlen gezeichnet + * werden kann. + * Zusätzlich kann ein Bildanzeiger über jede Änderung des Bildes informiert werden, + * um "Zurück"-Befehle zu ermöglichen. Der Bildanzeiger ist entweder eine normale Java + * ScrollPane oder ein Actor aus Greenfoot. + * Die Dokumentation der einzelnen Zeichenmethoden ist der Processing-Reference + * (https://processing.org/reference/ steht unter CC-Lizenz: https://creativecommons.org/) + * entnommen und mit Deepl.com ins Deutsche übersetzt. + * + * @version 1.0 from 23.01.2019 + * @author Thomas Schaller (ZPG Informatik Klasse 9) + */ + +public class Picture{ + + // Einstellungmöglichkeiten für das Zeichnen von Rechtecken und Ellipsen + // RADIUS = Mittelpunkt+Radius wird gegeben, CENTER = Mittelpunkt und Breite/Höhe wird gegeben, + // CORNER = Linke obere Ecke + Breite/Höhe, CORNERS = Linke obere und rechte untere Ecke + public static final int RADIUS = 1; + public static final int CENTER = 2; + public static final int CORNER = 3; + public static final int CORNERS = 4; + + // gespeichertes Bild, + private BufferedImage image; + + // aktuelle Farbeinstellungen + private Color background; + private Color pencolor; + private Color fillcolor; + + // aktuelle Stiftdicke + private double stroke; + + // akkteller Koordinatenmodus von Rechtecken und Ellipsen + private int ellipseMode = CENTER; + private int rectMode = CORNER; + + // aktueller Font + private Font textfont = null; + + // muss ein Bildanzeiger benachrichtigt werden + private PictureViewer observer = null; + private boolean autorefresh = true; + + /** + * Erzeugt ein Bild mit Standardgröße 500x400 + */ + public Picture() { + this(500,400); + } + + /** + * Erzeugt ein Bild der angegeben Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public Picture(int width, int height) { + this(width,height, "D0D0D0"); + } + + /** + * Erzeugt ein Bild aus einer Datei + * @param filename Dateiname des Bildes + */ + public Picture(String filename) { + load(filename); + } + + /** + * Erzeugt ein Bild der angegebenen Größe mit festgelegtem Hintergrund + * @param width Breite des Bildes + * @param height Höhe des Bildes + * @param background Farbe des Hintergrunds + */ + public Picture(int width, int height, String background) { + this.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + this.background = decode(background); + this.pencolor = new Color(0,0,0); + this.stroke = 1; + this.fillcolor = null; + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(this.background); + g.fillRect(0,0,width-1, height-1); + } + + /** + * Legt fest, wer das Bild anzeigt. + * Diese ermöglicht die Benachrichtung des Observers, wenn sich das Bild ändert. + * @param observer Anzeiger des Bildes + */ + + public void setObserver(PictureViewer observer) { + this.observer= observer; + } + + /** + * Direktes Setzen des Bildes (für interne Zwecke) + * @param b Bild, das gespeichert werden soll. + */ + public void setImage(BufferedImage b) { + image = b; + } + + /** + * Direktes Abfragen des Bildes (für interne Zwecke) + * @return Bild, das gerade gespeichert ist. + */ + public BufferedImage getImage() { + return image; + } + + /** + * Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + * Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + * der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu. + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public void size(int width, int height){ + pushImage(); + this.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(background); + g.fillRect(0,0,width-1, height-1); + } + + /** + * Liefert die Breite des Bildes zurück. + * @return Breite des Bildes + */ + public int getWidth() { + return image.getWidth(); + } + + /** + * Liefert die Höhe des Bildes zurück. + * @return Höhe des Bildes + */ + public int getHeight() { + return image.getHeight(); + } + + + /** + * Erzeugt eine Kopie des Bildes und übergibt sie an den Observer (falls existent), damit dieser die Versionen speichern kann + */ + private void pushImage() { + if(observer != null) { + observer.pushImage(); + } + } + + + /** + * Legt fest, ob nach jedem Zeichenbefehl automatisch das Bild auch in + * der Oberfläche aktualisiert wird. Die Einstellung "false" beschleunigt + * das Zeichnen aufwändiger Bilder und verhindert "Flackern". + * Das Neuzeichnen kann durch die Methode "refresh" gezielt ausgelöst werden. + * @param autorefresh true = nach jedem Zeichenbefehl die Anzeige aktualisieren, false= nur durch die Methode refresh neu zeichnen + */ + public void setAutoRefresh(boolean autoRefresh) { + this.autorefresh = autoRefresh; + } + + + /** + * Auch die anzeigenden Klasse wird zum Neuzeichnen aufgefordert. + */ + private void repaint() { + if(observer != null && autorefresh) { + observer.repaint(); + } + } + + /** + * Auch die anzeigenden Klasse wird zum Neuzeichnen aufgefordert. + */ + public void refresh() { + if(observer != null) { + observer.repaint(); + } + } + + // ----------------------------------------- Zeichenfunktionen ----------------------------------------------- + /** + * Löscht den Inhalt des Bildes. + * Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt. + */ + + public void clear(){ + pushImage(); + image = new BufferedImage(image.getWidth(), image.getHeight(), image.getType()); + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(background); + g.fillRect(0,0,image.getWidth()-1, image.getHeight()-1); + repaint(); + } + + /** + * Konvertiert die in einem bestimmten Modus gegebenen Koordinaten in die Java-übliche Links_Oben_Breite_Höhe Version + * Die Änderungen werden direkt im Array vorgenommen + * @param coord Array mit vier Koordinateneinträgen im gegebenen Modus + * @param mode Modus der Koordinaten (CORNER, CORNERS, RADIUS oder CENTER) + */ + private void convert(int[] coord, int mode) { + switch(mode) { + case CORNER: break; + case CORNERS: coord[2] -= coord[0]; coord[3] -= coord[1]; break; + case RADIUS: coord[2] *= 2; coord[3] *=2; + case CENTER: coord[0] -= coord[2]/2; coord[1] -= coord[3]/2; + } + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + * Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + * Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void rectMode(int mode) { + rectMode = mode; + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + * Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + * Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als Breite und Höhe der Form. + * ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void ellipseMode(int mode) { + ellipseMode = mode; + } + + + + /** + * Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + * Um eine Linie einzufärben, verwenden Sie die {@link #stroke(int, int, int) stroke()} Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + * Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + * {@link #strokeWeight(double) strokeWeight()} geändert werden. + * @param x1 x-Koordinate des 1. Punktes + * @param y1 y-Koordinate des 1. Punktes + * @param x2 x-Koordinate des 2. Punktes + * @param y2 y-Koordinate des 2. Punktes + */ + public void line(int x1, int y1, int x2, int y2) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + if (stroke > 0) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawLine(x1, y1, x2, y2); + } + repaint(); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, rectMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillRect(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawRect(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, ellipseMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillOval(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawOval(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + int px[] = {x1, x2, x3}; + int py[] = {y1, y2, y3}; + polygon(px, py); + + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + + int px[] = {x1, x2, x3, x4}; + int py[] = {y1, y2, y3, y4}; + polygon(px, py); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + + public void polygon(int[] x, int[] y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(fillcolor != null) { + + g.setColor(fillcolor); + g.fillPolygon(x,y, y.length); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawPolygon(x, y, x.length); + } + repaint(); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + ellipse(x,y,1, 1); + + } + + // ----------------------------------------- Schriftdarstellung ----------------------------------------------- + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param s Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String s, int x, int y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(pencolor != null) { + g.setColor(fillcolor); + g.setStroke(new BasicStroke((float) stroke)); + g.setFont(textfont); + g.drawString(s, x, y); + } + repaint(); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + this.textfont = font; + } + + + // ----------------------------------------- Farbfestlegungen ----------------------------------------------- + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(String color) { + try{ + return new Color( + Integer.valueOf( color.substring( 0, 2 ), 16 ), + Integer.valueOf( color.substring( 2, 4 ), 16 ), + Integer.valueOf( color.substring( 4, 6 ), 16 ) ); + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(int color) { + try{ + if(color >=0 && color < 256) { + return new Color(color,color,color); + } else { + int r = color / 0x010000 % 0xFF; + int g = color / 0x000100 % 0xFF; + int b = color % 0xFF; + System.out.println(""+r+","+g+","+b); + return new Color(r, g, b ); + } + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + this.pencolor = decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + this.pencolor=decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + this.pencolor = new Color(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + this.pencolor = null; + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + this.stroke = width; + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + this.fillcolor = decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + this.fillcolor=decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + this.fillcolor = new Color(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + this.fillcolor = null; + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + if(c < 256) { + this.background=new Color(c,c,c); + } else { + int r = c / 0x010000; + int g = c / 0x000100 % 0xFF; + int b = c % 0xFF; + this.background= new Color(r, g, b ); + } + + this.clear(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + this.background=new Color(r,g,b); + this.clear(); + } + + +// ----------------------------------------- Dateioperationen ----------------------------------------------- + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + try{ + this.image = ImageIO.read(new File(filename)); + this.background = decode("D0D0D0"); + this.pencolor = new Color(0,0,0); + this.fillcolor = null; + this.stroke = 1; + this.repaint(); + + } catch(Exception e) { + System.out.println("Fehler beim Einlesen der Bilddatei"); + } + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + try{ + String[] fn = filename.split("\\."); + if (fn.length== 1) { + ImageIO.write(image, "PNG", new File(filename+".png")); + } else { + + if (fn.length == 2 && (fn[1].toUpperCase().equals("PNG") || + fn[1].toUpperCase().equals("GIF"))){ + ImageIO.write(image, fn[1], new File(filename)); + }else { + System.out.println("Unbekanntes Bildformat"); + } + } + + } catch(Exception e) { + System.out.println("Fehler beim Speichern"); + } + } + + +// ----------------------------------------- Sonstiges ----------------------------------------------- + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + + public Color[][] getPixelArray() { + Color[][] pixel = new Color[image.getWidth()][image.getHeight()]; + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + pixel[x][y] = new java.awt.Color(image.getRGB(x,y)); + } + } + return pixel; + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + size(pixel.length,pixel[0].length); + Graphics2D g = (Graphics2D) image.getGraphics(); + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + g.setColor(pixel[x][y]); + g.fillRect(x, y, 1, 1); + } + } + repaint(); + } + + /** + * Hilfsfunktion zum Verzögern der Ausgabe + * @param millis Wartezeit in Millisekunden + */ + public void delay(int millis) { + try{ + Thread.sleep(millis); + + } catch(Exception e) { + + } + + } + + + +} diff --git a/04_loesungen/03_javaeditor/alg11_balkendiagramm_zufall_loesung/PictureViewer.java b/04_loesungen/03_javaeditor/alg11_balkendiagramm_zufall_loesung/PictureViewer.java new file mode 100644 index 0000000..9e6b151 --- /dev/null +++ b/04_loesungen/03_javaeditor/alg11_balkendiagramm_zufall_loesung/PictureViewer.java @@ -0,0 +1,505 @@ +/** + * Zeigt ein Bild in einem Scrollbereich an. + * Es ist möglich das Bild zu zoomen und mehrere Versionen des Bildes zu speichern, um eine "Rückgängig" Operation durchzuführen. + * @author Thomas Schaller + * @version 1.0 vom 01.02.2019 + */ + +import java.awt.*; +import java.awt.event.*; +import javax.swing.*; +import java.awt.image.*; +import java.util.Vector; + +public class PictureViewer extends JScrollPane +{ + + // das aktuelle Bild + private Picture picture; + + // Bilder für den Züruck-Modus speichern + private static final int ANZ_BACK = 20; + private Vector history; + + // Zeichenfläche + private ImageIcon scrollImageIcon; + private JLabel imageLabel; + + // Zoom Faktor + private double zoomFactor; + public static final int FIT = -1; + public static final int NORMAL = 1; + + + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der Größe 1000x1000 + */ + public PictureViewer() { + this(1000,1000); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public PictureViewer(int width, int height) { + this(width,height, "D0D0D0"); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + * @param background Farbe des Hintergrunds als HEX-String (z.B. "FF3A45") + */ + public PictureViewer(int width, int height, String background) { + this(new Picture(width,height, background)); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild aus einer Bilddatei + * @param filename Name des Bildes + */ + public PictureViewer(String filename) { + this(new Picture(filename)); + } + + /** + * Erzeugt ein ScrollPanel und zeigt das Bild-Objekt an + * @param picture anzuzeigendes Bild + */ + public PictureViewer(Picture picture) + { + this.picture=picture; + + zoomFactor=1; + + scrollImageIcon = new ImageIcon(picture.getImage().getScaledInstance(picture.getImage().getWidth(), picture.getImage().getHeight(), Image.SCALE_FAST)); + imageLabel = new JLabel(scrollImageIcon); + imageLabel.setVerticalAlignment(JLabel.CENTER); + imageLabel.setHorizontalAlignment(JLabel.CENTER); + setViewportView(imageLabel); + + this.setBorder(BorderFactory.createLineBorder(Color.black)); + picture.setObserver(this); + history = new Vector(); + + } + + /** + * Setzt das anzuzeigende Bild neu + * @param picture anzuzeigendes Bild + */ + public void setImage(Picture picture) { + this.history = new Vector(); + this.picture = picture; + setZoom(NORMAL); + } + + /** + * Speichert das übergebene Bild in der History. + * @param b zu speicherndes Bild + */ + public void pushImage() { + if( this.ANZ_BACK > 0) { + if(history.size() == this.ANZ_BACK) { + history.removeElementAt(0); + } + + BufferedImage b = new BufferedImage(picture.getWidth(), picture.getHeight(), picture.getImage().getType()); + Graphics g = b.getGraphics(); + g.drawImage(picture.getImage(), 0, 0, null); + g.dispose(); + + history.add(b); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + private void popImage() { + int anz = history.size(); + if(anz>0) { + BufferedImage img = history.get(anz-1); + history.removeElementAt(anz-1); + picture.setImage(img); + setZoom(zoomFactor); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + public void back() { + popImage(); + } + + /** + * Setzt das angezeigt Bild neu und beachtet dabei den Zoomfaktor. + */ + public void repaint() { + if( picture != null) { + double factor= zoomFactor; + if (zoomFactor == FIT) { + double factorw = ((double) getWidth()-2) / picture.getWidth(); + double factorh = ((double) getHeight()-2) / picture.getHeight(); + factor = Math.min(factorw, factorh); + } + int width = (int) (picture.getWidth()*factor); + int height = (int) (picture.getHeight()*factor); + + + + scrollImageIcon.setImage(picture.getImage().getScaledInstance(width, height, Image.SCALE_DEFAULT)); + revalidate(); + } + } + + /** + * Setzt den Zoom-Faktor für das Bild. + * Als Zoomfaktor sind auch die Konstanten Bildanzeiger.FIT (auf Bildschirmgröße zoomen) und Bildanzeiger.NORMAL (100%) möglich. + * @param factor Zoomfaktor (1.0 = 100%). + */ + public void setZoom(double factor) + { + zoomFactor = factor; + repaint(); + } + + + // Wrappermethoden + /** + * Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + * Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + * der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu. + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public void size(int width, int height){ + picture.size(width, height); + } + + /** + * Liefert die Breite des Bildes zurück. + * @return Breite des Bildes + */ + public int getImageWidth() { + return picture.getWidth(); + } + + /** + * Liefert die Höhe des Bildes zurück. + * @return Höhe des Bildes + */ + public int getImageHeight() { + return picture.getHeight(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + picture.background(c); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + picture.background(r,g,b); + } + + /** + * Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + * Um eine Linie einzufärben, verwenden Sie die {@link #stroke(int, int, int) stroke()} Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + * Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + * {@link #strokeWeight(double) strokeWeight()} geändert werden. + * @param x1 x-Koordinate des 1. Punktes + * @param y1 y-Koordinate des 1. Punktes + * @param x2 x-Koordinate des 2. Punktes + * @param y2 y-Koordinate des 2. Punktes + */ + public void line(int x1, int y1, int x2, int y2) { + picture.line(x1,y1,x2,y2); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + picture.rect(a,b,c,d); + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + picture.ellipse(a,b,c,d); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + picture.triangle(x1,y1,x2,y2,x3,y3); + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + picture.quad(x1,y1,x2,y2,x3,y3,x4,y4); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + public void polygon(int[] x, int[] y) { + picture.polygon(x,y); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + picture.point(x,y); + + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + * Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + * Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void rectMode(int mode) { + picture.rectMode(mode); + } + + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + * Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + * Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als Breite und Höhe der Form. + * ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void ellipseMode(int mode) { + picture.ellipseMode(mode); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + picture.stroke(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + picture.noStroke(); + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + picture.strokeWeight(width); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + picture.fill(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + picture.noFill(); + } + + /** + * Löscht den Inhalt des Bildes. + * Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt. + */ + public void clear(){ + picture.clear(); + } + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + picture.load(filename); + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + picture.save(filename); + } + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param t Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String t, int x, int y) { + picture.text(t,x,y); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + picture.textFont(font); + } + + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + public Color[][] getPixelArray() { + return picture.getPixelArray(); + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + picture.setPixelArray(pixel); + } + + + +} diff --git a/04_loesungen/03_javaeditor/alg11_balkendiagramm_zufall_loesung/Table.java b/04_loesungen/03_javaeditor/alg11_balkendiagramm_zufall_loesung/Table.java new file mode 100644 index 0000000..ee5a211 --- /dev/null +++ b/04_loesungen/03_javaeditor/alg11_balkendiagramm_zufall_loesung/Table.java @@ -0,0 +1,894 @@ +/** + * Die Klasse Table vereinfacht den Zugriff auf CSV-Dateien. + * Die Klassen Table und TableRow ermöglichen einen einfachen Zugriff auf tabellenbasierte + * Dokumente. + * + * @author Thomas Schaller + * @version 1.0 vom 01.02.2019 + */ + +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.ArrayList; +import java.io.*; +import java.util.Scanner; + +import org.jdom.Document; +import org.jdom.Element; +import org.jdom.Attribute; +import org.jdom.JDOMException; +import org.jdom.input.SAXBuilder; +import org.jdom.output.XMLOutputter; +import org.jdom.output.Format; + +public class Table +{ + // Standardtrennzeichen für Spalten + private static final char DEFAULT_SEPARATOR = ';'; + // Standardmarkierung für Texte + private static final char DEFAULT_QUOTE = '"'; + // Standardtrennzeichen für Dezimalzahlen + private static final char DEFAULT_COMMA = ','; + + // mögliche Spaltentypen + private static final String UNKNOWN ="UNKOWN"; + private static final String INT = "INTEGER"; + private static final String DOUBLE = "DOUBLE"; + private static final String FLOAT = "FLOAT"; + + // interne Verwaltung des Dokuments als JDOM-Document-Objekt + private Document doc; + // Verweis auf Element für Kopfzeile + private Element header; + // Ende Attribute + + /** + * Erzeugt leeres Tabellen-Dokument. + */ + public Table() { + this.doc = new Document(); + doc.setRootElement(new Element("CSV-Data")); + this.header = new Element("Header"); + doc.getRootElement().addContent(header); + } + + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei und erstellt ein Tabellenobjekt mit seinen Werten. + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public Table(String filename, String options, char separator, char quote) { + loadCSV(filename, options, separator, quote); + } + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei und erstellt ein Tabellenobjekt mit seinen Werten (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + */ + public Table(String filename, String options) { + loadCSV(filename, options); + } + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei ohne Kopfzeile und erstellt ein Tabellenobjekt mit seinen Werten (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public Table(String filename) { + loadCSV(filename); + } + + // Anfang Methoden + /** + * Liest den Inhalt einer CSV-Datei ohne Kopfzeile (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public void loadCSV(String filename) { + loadCSV(filename, ""); + } + + /** + * Liest den Inhalt einer CSV-Datei (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + */ + public void loadCSV(String filename, String options) { + loadCSV(filename, options, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** + * Liest den Inhalt einer CSV-Datei. + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public void loadCSV(String filename, String options, char separator, char quote) { + doc = new Document(); + doc.setRootElement(new Element("CSV-Data")); + header = new Element("Header"); + doc.getRootElement().addContent(header); + try { + File f = new File(filename); + Scanner scanner = new Scanner(new File(filename)); + if(options.toLowerCase().contains("header") && scanner.hasNext()) { + List entries = parseLine(scanner.nextLine(), separator, quote); + int i= 0; + for(String s : entries) { + Element entry = new Element("Column"); + header.addContent(entry); + entry.setText(s); + entry.setAttribute("type", "unknown"); + i++; + } + } + + List cols = header.getChildren(); + + while (scanner.hasNext()) { + Element line = new Element("Row"); + doc.getRootElement().addContent(line); + List entries = parseLine(scanner.nextLine(), separator, quote); + int i= 0; + + for(String s : entries) { + + if(i==cols.size()) { + Element entry = new Element("Column"); + entry.setAttribute("type", "unknown"); + header.addContent(entry); + cols = header.getChildren(); + } + + Element entry = new Element("Entry"); + entry.setText(s); + line.addContent(entry); + i++; + } + } + scanner.close(); + + } catch (Exception e) { + System.out.println("Fehler beim Lesen der CSV-Datei"); + } + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei ohne Kopfzeile (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public void saveCSV(String filename) { + saveCSV(filename, ""); + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthalten, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile haben soll, + * dann lassen Sie einfach die Option "header" weg. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile haben soll. + * @param filename Dateiname der CSV-Datei. + */ + public void saveCSV(String filename, String options) { + saveCSV(filename, options, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei. + * Wenn die Datei eine Kopfzeile enthalten, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile haben soll, + * dann lassen Sie einfach die Option "header" weg. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile haben soll. + * @param filename Dateiname der CSV-Datei. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public void saveCSV(String filename, String options, char separator, char quote){ + try{ + File f = new File(filename); + PrintStream outputFile = new PrintStream (f); + System.out.println("Speicher in : "+f.getAbsolutePath()); + List columns = header.getChildren(); + String sq = ""+quote; + String ss = ""+separator; + if(quote =='"') sq = "\""; + if(separator =='"') ss = "\""; + + if(options.toLowerCase().contains("header")) { + String h = ""; + for(Element c : columns) { + h += ss + sq + c.getText()+sq; + } + outputFile.println(h.substring(1)); + } + for(int i = 0; i parseLine(String cvsLine) { + return parseLine(cvsLine, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** HIlfsfunktion für die Analyse einer Dateizeile + * @param cvsLine Zeile aus der Datei + * @param sparator Trennzeichen für die Spalten + * @return Liste von String für die einzelnen Spalten + */ + private List parseLine(String cvsLine, char separator) { + return parseLine(cvsLine, separator, DEFAULT_QUOTE); + } + + /** HIlfsfunktion für die Analyse einer Dateizeile + * @param cvsLine Zeile aus der Datei + * @param sparator Trennzeichen für die Spalten + * @param customQuote Kennung für Strings + * @return Liste von String für die einzelnen Spalten + */ + private List parseLine(String cvsLine, char separator, char customQuote) { + + List result = new ArrayList<>(); + + //if empty, return! + if (cvsLine == null && cvsLine.isEmpty()) { + return result; + } + + //ggf. Default-Value laden + if (customQuote == ' ') { + customQuote = DEFAULT_QUOTE; + } + + if (separator == ' ') { + separator = DEFAULT_SEPARATOR; + } + + StringBuffer curVal = new StringBuffer(); + boolean inQuotes = false; + boolean startCollectChar = false; + boolean doubleQuotesInColumn = false; + + char[] chars = cvsLine.toCharArray(); + + for (char ch : chars) { + + if (inQuotes) { // aktueller Text ist in Quotes eingeschlossen + startCollectChar = true; + + if (ch == customQuote) { // Quotes werden beendet, aber Achtung bei "" => Metazeichen + inQuotes = false; + if (ch == '\"') { + doubleQuotesInColumn = true; + } + + } else { + + if (ch == '\"' && !doubleQuotesInColumn) { + doubleQuotesInColumn = true; + } else { + curVal.append(ch); + doubleQuotesInColumn = false; + } + + } + } else { + if (ch == customQuote) { + + inQuotes = true; + + //Fixed : allow "" in empty quote enclosed + if (ch == '\"'){ + if(doubleQuotesInColumn) { + curVal.append('"'); + doubleQuotesInColumn = false; + } else doubleQuotesInColumn = true; + + + } + } + else { + doubleQuotesInColumn = false; + if (ch == separator) { + + result.add(curVal.toString()); + + curVal = new StringBuffer(); + startCollectChar = false; + + } else if (ch == '\r') { + //ignore LF characters + continue; + } else if (ch == '\n') { + //the end, break! + break; + } else { + curVal.append(ch); + } + } + } + + } + result.add(curVal.toString()); + return result; + } + + /** + * Sucht die Nummer einer durch Namen gegebenen Spalte. + * @param name Name der Spalte + * @return Nummer der Spalte + */ + + private int findColumnNumber(String name) { + List columns = header.getChildren(); + int i = 0; + for(Element c : columns) { + if (c.getText().toLowerCase().equals(name.toLowerCase())) { + return i; + + } + i++; + } + return -1; + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an. + */ + public void addColumn() { + Element entry = new Element("Column"); + entry.setAttribute("type", Table.UNKNOWN); + header.addContent(entry); + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an und benennt sie. + * @param title Bezeichnung der Spalte + */ + public void addColumn(String title) { + addColumn(); + Element nc = ((List)(header.getChildren())).get(header.getChildren().size()-1); + nc.setText(title); + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an und benennt und typisiert sie. + * @param title Bezeichnung der Spalte + * @param type Typ der Spalte (UNKNOWN, DOUBLE, INTEGER, FLOAT) + */ + public void addColumn(String title, String type) { + addColumn(title); + Element nc = ((List)(header.getChildren())).get(header.getChildren().size()-1); + nc.setAttribute("type", type); + } + + /** + * Löscht eine Spalte. + * @param i Nummer der Spalte. + */ + public void removeColumn(int i) { + List lines = doc.getRootElement().getChildren(); + for(Element l : lines) { + if(l.getChildren().size()>i) l.removeContent(i); + } + } + + /** + * Löscht eine Spalte + * @param name Name der Spalte + */ + public void removeColumn(String name) { + try{ + removeColumn(findColumnNumber(name)); + } catch(Exception e) { System.out.println("Unbekannter Spaltenname");} + } + + /** + * Liefert die Anzahl der Spalten in der Tabelle + * @return Anzahl der Spalten + */ + public int getColumnCount() { + return header.getChildren().size(); + } + + /** + * Liefert die Anzahl der Zeilen in der Tabelle + * @return Anzahl der Zeilen + */ + public int getRowCount() { + return doc.getRootElement().getChildren().size()-1; + } + + /** + * Löscht alle Zeilen der Tabelle. + * Die Spaltenüberschriften und Typen bleiben erhalten. + */ + public void clearRows() { + doc.getRootElement().removeChildren("Row"); + } + + /** + * Fügt eine neue Zeile an das Ende der Tabelle an. + * @return ein TableRow-Objekt für diese neue Zeile + */ + public TableRow addRow() { + Element row = new Element("Row"); + doc.getRootElement().addContent(row); + return new TableRow(doc, row); + } + + /** + * Löscht eine Zeile + * @param i Nummer der Zeile + */ + public void removeRow(int i) { + if(i rows = doc.getRootElement().getChildren(); + return new TableRow(doc, rows.get(i+1)); + } + return null; + } + + /** + * Liefert die ganze Tabelle als Array von TableRow-Objekten + * @return Array von TableRow-Objekten + */ + public TableRow[] rows() { + TableRow[] rows = new TableRow[getRowCount()]; + for(int i = 0; i < getRowCount(); i++) { + rows[i] = getRow(i); + } + return rows; + } + + /** + * Liefert den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param column Spaltennummer + * @return Wert der Zelle + */ + public int getInt(int row, int column) { + return getRow(row).getInt(column); + } + + /** + * Liefert den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param name Name der Spalte + * @return Wert der Zelle + */ + public int getInt(int row, String name) { + return getRow(row).getInt(name); + } + + /** + * Setzt den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param column Spaltennummer + * @param value neuer Wert der Zelle + */ + public void setInt(int row, int column,int value) { + getRow(row).setInt(column, value); + } + + /** + * Setzt den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(int row, String name, int value) { + getRow(row).setInt(name, value); + } + + /** + * Liefert alle Werte einer Zeile als Integer-Array. + * @param row Nummer der Zeile + * @return int-Array, dass alle Werte der Zeile enthält + */ + public int[] getIntRow(int row) { + try{ + TableRow trow = getRow(row); + int anz = getColumnCount(); + int[] r = new int[anz]; + for(int i=0; i) (header.getChildren())).get(i).getText(); + } else { + return ""; + } + } + + /** + * Liefert die Nummer einer Spalte + * @param name Name der Spalte + * @return Nummer der Spalte + */ + public int getColumn(String name) { + List columns = header.getChildren(); + int i = 0; + while (i < columns.size()) { + if (columns.get(i).getText().toLowerCase().equals(name.toLowerCase())) { + return i; + } + i++; + } // end of while + return -1; + } + + + /** + * Erzeugt eine neue Zeile mit i Spalten + * Wenn bisher nicht genügend Spalten vorhanden sind, werden automatisch neue Spalten hinzugefügt (auch zum Header) + * @param i Anzahl der Spalten + */ + private Element buildRow(int i) { + List columns = header.getChildren(); + Element entry=null; + for(int j=0; j<=i; j++) { + + if(j==columns.size()) { + Element h = new Element("Column"); + h.setAttribute("type", "unknown"); + header.addContent(h); + columns = header.getChildren(); + } + if(j==current.getChildren().size()) { + entry = new Element("Entry"); + current.addContent(entry); + + } + + } + return entry; + + } + + /** + * Erzeugt eine neue Zeile. + * Es werden genügend Spalten erzeugt, dass ein Wert in Spalte "name" eingetragen werden kann + * @param name Name der Spalte + */ + private Element buildRow(String name) { + List columns = header.getChildren(); + int i = 0; + for(Element c: columns) { + + if(c.getText().toLowerCase().equals(name.toLowerCase())) { + return buildRow(i); + } + i++; + } + return null; + + } + + /** + * Liefert den Wert einer Zelle als String + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public String getString(int i) { + if(i >= current.getContent().size()) return ""; + Element e = (Element) current.getContent(i) ; + if(e!=null) { + return e.getText(); + } else { + return ""; + } + } + + /** + * Liefert den Wert einer Zelle als String + * @param name Name der Spalte + * @return Wert der Zelle + */ + public String getString(String name) { + return getString(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als String + * @param i Nummer der Spalte + * @param text neuer Wert der Zelle + */ + public void setString(int i, String text) { + + Element e = buildRow(i); + if(e!=null) e.setText(text); + } + + /** + * Setzt den Wert einer Zelle als String + * @param name Name der Spalte + * @param text neuer Wert der Zelle + */ + public void setString(String name, String text) { + Element e = buildRow(name); + if(e!=null) e.setText(text); + } + + + /** + * Liefert den Wert einer Zelle als Int-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public int getInt(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Integer.parseInt(e.getText()); + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Int-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public int getInt(String name) { + return getInt(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Int-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(int i,int value) { + + Element e = buildRow(i); + if(e!=null) e.setText(""+value); + } + + /** + * Setzt den Wert einer Zelle als Int-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(String name, int value) { + Element e = buildRow(name); + if(e!=null) e.setText(""+value); + } + + /** + * Liefert den Wert einer Zelle als Float-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public float getFloat(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Float.parseFloat(e.getText().replace(",",".")); + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Float-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public float getFloat(String name) { + return getFloat(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Float-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setFloat(int i,float value) { + + Element e = buildRow(i); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Setzt den Wert einer Zelle als Float-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setFloat(String name, float value) { + Element e = buildRow(name); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Liefert den Wert einer Zelle als Double-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public double getDouble(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Double.parseDouble(e.getText().replace(",",".")); + + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Double-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public double getDouble(String name) { + return getDouble(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Double-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setDouble(int i,double value) { + + Element e = buildRow(i); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Setzt den Wert einer Zelle als Double-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setDouble(String name, double value) { + Element e = buildRow(name); + if(e!=null) e.setText(format.format(value)); + } + +} diff --git a/04_loesungen/03_javaeditor/alg11_balkendiagramm_zufall_loesung/XML.java b/04_loesungen/03_javaeditor/alg11_balkendiagramm_zufall_loesung/XML.java new file mode 100644 index 0000000..c06c490 --- /dev/null +++ b/04_loesungen/03_javaeditor/alg11_balkendiagramm_zufall_loesung/XML.java @@ -0,0 +1,637 @@ +/** + * Klasse zum Vereinfachten Zugriff auf XML-Dokumente + * Diese Klasse ist für den Einsatz in der Schule gedacht und soll den Schülern + * einen einfachen Zugriff auf XML-Dokumente ermöglichen. Die zur Verfügung + * stehenden Befehle sind wie in Processing realisiert. + * Dabei ist jeder Teilbaum des Dokuments wieder als XML-Objekt zugreifbar, das + * intern auf die gleiche XML-Dokumentstruktur zugreift. + * Dies ermöglicht bei unsachgemäßem Gebrauch die XML-Struktur zu zerstören. Im + * normalen Gebrauch sollte dies aber nicht relevant sein. + * + * Benötigt: jdom-1.1.3.jar + + * @author Thomas Schaller + * @version 1.0 vom 31.01.2019 + */ +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.ArrayList; +import java.io.*; + +import org.jdom.Document; +import org.jdom.Element; +import org.jdom.Attribute; +import org.jdom.JDOMException; +import org.jdom.input.SAXBuilder; +import org.jdom.output.XMLOutputter; +import org.jdom.output.Format; + +public class XML { + // Anfang Attribute + // XML-Dokumentstruktur + private Document doc; + // Zeiger auf das aktuelle Element + private Element current; + // Ende Attribute + + /** + * Erzeugt ein leeres XMLDokument + */ + public XML() { + this.doc = new Document(); + this.current = null; + } + + /** + * Erzeugt ein XML-Dokument aus einer Datei + * @param filename Dateiname der XML-Datei + */ + public XML(String filename) { + loadXML(filename); + } + + /** + * interner Konstruktor, um ein XML Objekt zu erzeugen, das auf einen bestimmten Knoten verweist + * @param doc die XML-Dokumentstruktur + * @param current Zeiger auf das aktuelle Element + */ + private XML(Document doc, Element current) { + this.doc = doc; + this.current = current; + } + + // Anfang Methoden + /** Öffnet das durch den Dateinamen gegebene Dokument + * @param filename Dateiname des XML-Files + */ + public void loadXML(String filename) { + doc = null; + File f = new File(filename); + + try { + // Das Dokument erstellen + SAXBuilder builder = new SAXBuilder(); + doc = builder.build(f); + + } catch (JDOMException e) { + e.printStackTrace(); + + } catch (IOException e) { + e.printStackTrace(); + } + // Zeiger im Baum auf Root-Element + current = doc.getRootElement(); + } + + /** Speichert den XML-Baum im angegebenen Dateinamen + * @param filename Dateiname des XML-Files + */ + public void saveXML(String filename) { + try { + // new XMLOutputter().output(doc, System.out); + XMLOutputter xmlOutput = new XMLOutputter(); + + // display nice nice + xmlOutput.setFormat(Format.getPrettyFormat()); + File f = new File(filename); + FileOutputStream outputFile = new FileOutputStream(f); + System.out.println("Speicher in : "+f.getAbsolutePath() ); + xmlOutput.output(doc, outputFile); + outputFile.close(); + System.out.println("File Saved!"); + } catch (IOException io) { + System.out.println(io.getMessage()); + } + + } + + //----------------------------------------------- Zeigerbewegungen -------------------------------------------------- + /** + * liefert ein XML-Objekt, das auf den Vaterknoten des aktuellen Elements zeigt. + * @return Vater des aktuellen Objekts. + */ + public XML getParent() { + if(current != null) { + Element parent = current.getParentElement(); + if (parent == null) { + return null; + } else { + return new XML(doc, parent); + } + } + return null; + } + + /** + * Überprüft, ob das Element irgendwelche Kinder hat oder nicht, und gibt das Ergebnis als boolean zurück. + * @return true, wenn Kinder vorhanden sind, sonst false + */ + public boolean hasChildren() { + if (current == null) { + return doc.hasRootElement(); + } else { + return current.getChildren().size()>0; + } + } + + /** + * Ermittelt die Namen aller Kinder des Elements und gibt die Namen als ein Array von Strings zurück. + * Dies ist dasselbe wie das Durchlaufen und Aufrufen von getName() auf jedem untergeordneten Element einzeln. + * @return Liste aller Namen der Kinder + */ + public String[] listChildren() { + if (current == null) { + if(doc.hasRootElement()) { + String[] names = new String[0]; + names[0] = doc.getRootElement().getName(); + return names; + } else { + return null; + } + } else { + List ch_element = current.getChildren(); + String[] names = new String[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + names[i] = ch_element.get(i).getName(); + } + return names; + } + } + + /** + * Liefert alle Kinder des Elements als Array von XML-Objekten. + * @return Array der Kinder als XML-Objekte + */ + public XML[] getChildren() { + if (current == null) { + if(doc.hasRootElement()) { + XML[] ch_xml = new XML[1]; + ch_xml[0] = new XML(doc, doc.getRootElement()); + return ch_xml; + } else { + return null; + } + } else { + List ch_element = current.getChildren(); + XML[] ch_xml = new XML[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + ch_xml[i] = new XML(doc, ch_element.get(i)); + } + return ch_xml; + } + } + + /** + * Liefert bestimmte Kinder des Elements als Array von XML-Objekten. + * Die Methode gibt dabei alle Kinder zurück, die dem angegebenen Namen entsprechen. + * @param name Name der gesuchten Kind-Objekte + * @return Array der Kinder als XML-Objekte + */ + public XML[] getChildren(String name) { + if (current == null) { + if(doc.hasRootElement()) { + XML[] ch_xml = new XML[1]; + ch_xml[0] = new XML(doc, doc.getRootElement()); + if(doc.getRootElement().getName().equals(name)){ + return ch_xml; + } else { + return null; + } + } else { + return null; + } + } else { + List ch_element = current.getChildren(name); + XML[] ch_xml = new XML[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + ch_xml[i] = new XML(doc, ch_element.get(i)); + } + return ch_xml; + } + } + + /** + * Liefert das erste Kind des Elements mit einem bestimmten Namen. + * Die Methode gibt das erste Kind zurück, das dem angegebenen Namen entsprechen. + * @param name Name des gesuchten Kind-Objektes + * @return Kind als XML-Objekt + */ + + public XML getChild(String name) { + if (current == null) { + Element e = doc.getRootElement(); + if (e.getName().equals(name)) { + return new XML(doc, e); + } else { + return null; + } + } else { + String[] names = name.split("/"); + Element e = current; + int i = 0; + while(i < names.length) { + e = e.getChild(names[i]); + if (e==null) return null; + i++; + } + return new XML(doc, e); + } + } + + /** + * Liefert das i. Kind des Elements. + * Die Methode gibt das i. Kind des aktuellen Elements zurück. + * @param i Nummer des Kindes + * @return Kind als XML-Objekt + */ + public XML getChild(int i) { + if (current == null) { + return new XML(doc, doc.getRootElement()); + } else { + List ch_element = current.getChildren(); + if (i>=ch_element.size()) return null; + return new XML(doc, ch_element.get(i)); + } + } + + //--------------------------------------------------- Methoden für das aktuelle Element ------------------------------------------------- + /** + * Frage den Namen des aktuellen Elements ab + * @return Namen des Elements + */ + public String getName() { + if (current==null) return ""; + return current.getName(); + } + + /** + * Setze den Namen des aktuellen Elements. + * @param name Neuer Name des Elements + */ + public void setName(String name) { + if (current==null) return; + current.setName(name); + } + + /** + * liefert die Anzahl der Attribute eines Elements. + * @return Anzahl des Attribute + */ + public int getAttributeCount() { + if (current == null) return 0; + return current.getAttributes().size(); + } + + /** + * liefert zurück, ob das aktuelle Element Attribute hat . + * @return true, wenn es Attribute gibt + */ + public boolean hasAttribute() { + if (current == null) return false; + return current.getAttributes().size()>0; + } + + /** + * Ruft alle Attribute des angegebenen Elements ab und gibt sie als Array von Strings zurück. + * @return Liste der Attributnamen + */ + public String[] listAttributes() { + if (current == null) return null; + List attr = current.getAttributes(); + String[] names = new String[attr.size()]; + for(int i=0; i < attr.size() ; i++) { + names[i] = attr.get(i).getName(); + } + return names; + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs + */ + public String getString(String attribute) { + if (current==null) return ""; + return current.getAttributeValue(attribute); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs + */ + public String getString(String attribute, String defaultValue) { + if (current==null) return defaultValue; + return current.getAttributeValue(attribute,defaultValue); + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param text neuer Wert des Attributs + */ + public void setString(String attribute, String text) { + if (current==null) return; + current.setAttribute(attribute, text); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Integer-Zahl + */ + public int getInt(String attribute) { + if (current==null) return 0; + try{ + int i = Integer.parseInt(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als Integer-Zahl + */ + public int getInt(String attribute, int defaultValue) { + if (current==null) return defaultValue; + try{ + int i = Integer.parseInt(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setInt(String attribute, int value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Float-Zahl + */ + public float getFloat(String attribute) { + if (current==null) return 0; + try{ + float i = Float.parseFloat(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als Float-Zahl + */ + public float getFloat(String attribute, float defaultValue) { + if (current==null) return defaultValue; + try{ + float i = Float.parseFloat(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setFloat(String attribute, float value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Double-Zahl + */ + public double getDouble(String attribute) { + if (current==null) return 0; + try{ + double i = Double.parseDouble(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + +/** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als double-Zahl + */ + public double getDouble(String attribute, double defaultValue) { + if (current==null) return defaultValue; + try{ + double i = Double.parseDouble(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setDouble(String attribute, double value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt den Inhalt/Text des aktuellen Elements ab + * @return Inhalt des Elements + */ + public String getContent() { + if ( current==null) return ""; + + return current.getText(); + } + + /** + * Fragt den Inhalt/Text des aktuellen Elements ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardtext + * @return Inhalt des Elements + */ + public String getContent(String defaultValue) { + if ( current==null) return defaultValue; + String t = current.getText(); + if(t.equals("")) t = defaultValue; + return t; + } + + /** + * Setzt den Inhalt/Text des aktuellen Elements + * @param text Neuer Inhalt des Elements + */ + public void setContent(String text) { + if ( current==null) return; + current.setText(text); + } + + + /** + * Fragt den Inhalt des aktuellen Elements als Integerzahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ public int getIntContent(int defaultValue) { + if ( current==null) return defaultValue; + try{ + int i = Integer.parseInt(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Integerzahl ab + * @return Inhalt des Elements + */ + public int getIntContent() { + if ( current==null) return 0; + try{ + int i = Integer.parseInt(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setIntContent(int value) { + if ( current==null) return; + current.setText(""+value); + } + + + /** + * Fragt den Inhalt des aktuellen Elements als Floatzahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ + public float getFloatContent(float defaultValue) { + if ( current==null) return defaultValue; + try{ + float i = Float.parseFloat(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Floatzahl ab + * @return Inhalt des Elements + */ + public float getFloatContent() { + if ( current==null) return 0; + try{ + float i = Float.parseFloat(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setFloatContent(float value) { + if ( current==null) return; + current.setText(""+value); + } + +/** + * Fragt den Inhalt des aktuellen Elements als Doublezahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ + public double getDoubleContent(double defaultValue) { + if ( current==null) return defaultValue; + try{ + double i = Double.parseDouble(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Doublezahl ab + * @return Inhalt des Elements + */ + public double getDoubleContent() { + if ( current==null) return 0; + try{ + double i = Double.parseDouble(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setDoubleContent(double value) { + if ( current==null) return; + current.setText(""+value); + } + + + // ----------------------------------------------- XML-Struktur aufbauen ------------------------------------------------ + /** Erzeuge neues Element nach der aktuellen Position und setze dieses als aktuelles Element + * @param name Name des neuen Elements + * @return neues Element als XML-Objekt + */ + public XML addChild(String name) { + Element e = new Element(name); + if(current == null){ // man ist auf Root-Ebene + doc.setRootElement(e); + + } + else { + current.addContent(e); + } // end of if-else + return new XML(doc, e); + } + + /** + * liefert das aktuelle Element als jdom-Element-Objekt + * @return aktuelles Element + */ + private Element getCurrent() { + return current; + } + + /** + * löscht ein Kind des aktuellen Knotens. + * Ist kid kein Kind des aktuellen Elements passiert gar nichts. + * @param kid XML-Objekt des Kindes + */ + public void removeChild(XML kid) { + if (current == null) return; + Element e = kid.getCurrent(); + int index = current.indexOf(e); + if(index >= 0) { current.removeContent(e);} + } + +} diff --git a/04_loesungen/03_javaeditor/alg11_balkendiagramm_zufall_loesung/jdom-1.1.3.jar b/04_loesungen/03_javaeditor/alg11_balkendiagramm_zufall_loesung/jdom-1.1.3.jar new file mode 100644 index 0000000..a287727 Binary files /dev/null and b/04_loesungen/03_javaeditor/alg11_balkendiagramm_zufall_loesung/jdom-1.1.3.jar differ diff --git a/04_loesungen/03_javaeditor/alg12_balkendiagramm_csv_loesung/Balkendiagramm.java b/04_loesungen/03_javaeditor/alg12_balkendiagramm_csv_loesung/Balkendiagramm.java new file mode 100644 index 0000000..1b754a5 --- /dev/null +++ b/04_loesungen/03_javaeditor/alg12_balkendiagramm_csv_loesung/Balkendiagramm.java @@ -0,0 +1,74 @@ +import java.awt.Font; + +/** + * Balkendiagramm für int-Array, Zahlen werden aus CSV-Datei gelesen. + * + * @author Schaller + * @version 29.11.18 + */ +public class Balkendiagramm extends Picture + +{ + // Liste mit allen Werten //<>// + int[] zahlen; + String[] namen; + + // Schriften + Font kleineSchrift; + Font grosseSchrift; + + public Balkendiagramm() { + size(1000, 700); + background(0); + kleineSchrift = new Font( Font.SANS_SERIF, Font.PLAIN, 12 ); + grosseSchrift = new Font( Font.SANS_SERIF, Font.PLAIN, 20 ); + + // CSV-Datei laden und anzeigen + ladeTabelle("punkte.csv"); + + zeichneBalken(); + } + + public void ladeTabelle(String name) { + // Tabelle aus CSV-Datei laden + Table csv = new Table(name,"header",',','"'); + + // Initialisiere Arrays, in die alle Zeilen der Tabelle passen + zahlen = new int[csv.getRowCount()]; + namen = new String[csv.getRowCount()]; + + // Fülle die Arrays mit Werten aus der Tabelle + for (int i = 0; i < zahlen.length; i++) { + // Lies Wert aus der i. Zeile und der Spalte "Punkte" bzw. "Name" + zahlen[i] = csv.getInt(i,"Punkte"); + namen[i] = csv.getString(i,"Name"); + } + } + + public void zeichneBalken() { + clear(); + + // Überschrift + fill(255,255,255); + textFont(grosseSchrift); + text("Punkte", 2, 20); + textFont(kleineSchrift); + + // Alle Einträge darstellen + + for (int i = 0; i< zahlen.length; i++) { + + fill(20,30,170); + + // Balkendiagramm zeichnen + rect(120, 25+i*15, zahlen[i]+1, 13); + + // Beschriftung + fill(255,255,255); + text(namen[i], 2, 35+i*15); + text(""+zahlen[i], 70, 35+i*15); + } + } + +} + diff --git a/04_loesungen/03_javaeditor/alg12_balkendiagramm_csv_loesung/BalkendiagrammGUI.java b/04_loesungen/03_javaeditor/alg12_balkendiagramm_csv_loesung/BalkendiagrammGUI.java new file mode 100644 index 0000000..97d6e5e --- /dev/null +++ b/04_loesungen/03_javaeditor/alg12_balkendiagramm_csv_loesung/BalkendiagrammGUI.java @@ -0,0 +1,66 @@ +import java.awt.*; +import java.awt.event.*; +import javax.swing.*; +import javax.swing.event.*; + +/** + * + * description + * + * @version 1.0 from 06.10.2018 + * @author + */ + +public class BalkendiagrammGUI extends JFrame { + // Anfang Attribute + private JButton bZeichnen = new JButton(); + private PictureViewer imagePanel1 = new PictureViewer(); + + // Ende Attribute + + public BalkendiagrammGUI (String title) { + super (title); + setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); + int frameWidth = 768; + int frameHeight = 551; + setSize(frameWidth, frameHeight); + Dimension d = Toolkit.getDefaultToolkit().getScreenSize(); + int x = (d.width - getSize().width) / 2; + int y = (d.height - getSize().height) / 2; + setLocation(x, y); + Container cp = getContentPane(); + cp.setLayout(null); + // Anfang Komponenten + bZeichnen.setBounds(256, 456, 273, 33); + bZeichnen.setText("Balkendiagramm zeichnen"); + bZeichnen.setMargin(new Insets(2, 2, 2, 2)); + bZeichnen.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent evt) { + bZeichnen_ActionPerformed(evt); + } + }); + cp.add(bZeichnen); + imagePanel1.setBounds(24, 16, 705, 409); + cp.add(imagePanel1); + + // Ende Komponenten + setResizable(false); + setVisible(true); + } + + // Anfang Methoden + public void bZeichnen_ActionPerformed(ActionEvent evt) { + Balkendiagramm bild = new Balkendiagramm(); + imagePanel1.setImage(bild); + imagePanel1.getViewport().repaint(); + imagePanel1.getVerticalScrollBar().setValue(1); + imagePanel1.getVerticalScrollBar().setValue(0); + } // end of bZeichnen_ActionPerformed + + // Ende Methoden + + public static void main(String[] args) { + new BalkendiagrammGUI("BalkendiagrammGUI"); + } +} + diff --git a/04_loesungen/03_javaeditor/alg12_balkendiagramm_csv_loesung/BalkendiagrammGUI.jfm b/04_loesungen/03_javaeditor/alg12_balkendiagramm_csv_loesung/BalkendiagrammGUI.jfm new file mode 100644 index 0000000..707d571 --- /dev/null +++ b/04_loesungen/03_javaeditor/alg12_balkendiagramm_csv_loesung/BalkendiagrammGUI.jfm @@ -0,0 +1,103 @@ +object BalkendiagrammGUI: TFGUIForm + Left = 761 + Top = 237 + BorderIcons = [biSystemMenu] + Caption = 'BalkendiagrammGUI' + ClientHeight = 512 + ClientWidth = 752 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -10 + Font.Name = 'MS Sans Serif' + Font.Style = [] + FormStyle = fsStayOnTop + OldCreateOrder = True + Position = poDesigned + ShowHint = True + Visible = True + OnClose = FormClose + OnCloseQuery = FormCloseQuery + OnResize = FormResize + FrameType = 5 + Resizable = False + Undecorated = False + Background = clBtnFace + PixelsPerInch = 96 + TextHeight = 13 + object bOptischeTauschungzeichnen: TJButton + Tag = 4 + Left = 256 + Top = 456 + Width = 273 + Height = 33 + Hint = 'jButton1' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Dialog' + Font.Style = [fsBold] + Foreground = 3355443 + Background = 15658734 + actionPerformed = 'bOptischeTauschungzeichnen_ActionPerformed' + Text = 'Optische T'#228'uschung zeichnen' + Mnemonic = 0 + DisplayedMnemonicIndex = 0 + Selected = False + BorderPainted = True + FocusPainted = False + ContentAreaFilled = True + HorizontalAlignment = CENTER + VerticalAlignment = CENTER + HorizontalTextPosition = RIGHT + VerticalTextPosition = CENTER + IconTextGap = 4 + RolloverEnabled = False + Border.BorderType = NoBorder + Border.LineColor = clBlack + Border.LineThickness = 0 + Border.LineRounded = False + Border.EtchHighlightColor = clBlack + Border.EtchShadowColor = clBlack + Border.Etchtype = 0 + Border.BevelHighlightColor = clBlack + Border.BevelShadowColor = clBlack + Border.Beveltype = 0 + Border.MatteColor = clBlack + Border.MatteTop = 0 + Border.MatteLeft = 0 + Border.MatteBottom = 0 + Border.MatteRight = 0 + end + object imagePanel1: TJPanel + Tag = 38 + Left = 24 + Top = 16 + Width = 705 + Height = 409 + Hint = 'imagePanel1' + HelpKeyword = 'ImagePanel' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Dialog' + Font.Style = [fsBold] + Foreground = 3355443 + Background = clBtnFace + Border.BorderType = NoBorder + Border.LineColor = clBlack + Border.LineThickness = 0 + Border.LineRounded = False + Border.EtchHighlightColor = clBlack + Border.EtchShadowColor = clBlack + Border.Etchtype = 0 + Border.BevelHighlightColor = clBlack + Border.BevelShadowColor = clBlack + Border.Beveltype = 0 + Border.MatteColor = clBlack + Border.MatteTop = 0 + Border.MatteLeft = 0 + Border.MatteBottom = 0 + Border.MatteRight = 0 + end +end diff --git a/04_loesungen/03_javaeditor/alg12_balkendiagramm_csv_loesung/Picture.java b/04_loesungen/03_javaeditor/alg12_balkendiagramm_csv_loesung/Picture.java new file mode 100644 index 0000000..8df3d55 --- /dev/null +++ b/04_loesungen/03_javaeditor/alg12_balkendiagramm_csv_loesung/Picture.java @@ -0,0 +1,699 @@ +import java.awt.image.*; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.BasicStroke; +import java.util.Vector; +import javax.imageio.*; +import java.io.*; +import java.awt.*; +import javax.swing.*; +import java.util.Random; +import java.awt.geom.AffineTransform; +/** + * + * Bildklasse für die Simulation von Processing-Befehlen + * + * Diese Klasse stellt ein BufferedImage bereit, in das mit Processing-Befehlen gezeichnet + * werden kann. + * Zusätzlich kann ein Bildanzeiger über jede Änderung des Bildes informiert werden, + * um "Zurück"-Befehle zu ermöglichen. Der Bildanzeiger ist entweder eine normale Java + * ScrollPane oder ein Actor aus Greenfoot. + * Die Dokumentation der einzelnen Zeichenmethoden ist der Processing-Reference + * (https://processing.org/reference/ steht unter CC-Lizenz: https://creativecommons.org/) + * entnommen und mit Deepl.com ins Deutsche übersetzt. + * + * @version 1.0 from 23.01.2019 + * @author Thomas Schaller (ZPG Informatik Klasse 9) + */ + +public class Picture{ + + // Einstellungmöglichkeiten für das Zeichnen von Rechtecken und Ellipsen + // RADIUS = Mittelpunkt+Radius wird gegeben, CENTER = Mittelpunkt und Breite/Höhe wird gegeben, + // CORNER = Linke obere Ecke + Breite/Höhe, CORNERS = Linke obere und rechte untere Ecke + public static final int RADIUS = 1; + public static final int CENTER = 2; + public static final int CORNER = 3; + public static final int CORNERS = 4; + + // gespeichertes Bild, + private BufferedImage image; + + // aktuelle Farbeinstellungen + private Color background; + private Color pencolor; + private Color fillcolor; + + // aktuelle Stiftdicke + private double stroke; + + // akkteller Koordinatenmodus von Rechtecken und Ellipsen + private int ellipseMode = CENTER; + private int rectMode = CORNER; + + // aktueller Font + private Font textfont = null; + + // muss ein Bildanzeiger benachrichtigt werden + private PictureViewer observer = null; + private boolean autorefresh = true; + + /** + * Erzeugt ein Bild mit Standardgröße 500x400 + */ + public Picture() { + this(500,400); + } + + /** + * Erzeugt ein Bild der angegeben Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public Picture(int width, int height) { + this(width,height, "D0D0D0"); + } + + /** + * Erzeugt ein Bild aus einer Datei + * @param filename Dateiname des Bildes + */ + public Picture(String filename) { + load(filename); + } + + /** + * Erzeugt ein Bild der angegebenen Größe mit festgelegtem Hintergrund + * @param width Breite des Bildes + * @param height Höhe des Bildes + * @param background Farbe des Hintergrunds + */ + public Picture(int width, int height, String background) { + this.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + this.background = decode(background); + this.pencolor = new Color(0,0,0); + this.stroke = 1; + this.fillcolor = null; + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(this.background); + g.fillRect(0,0,width-1, height-1); + } + + /** + * Legt fest, wer das Bild anzeigt. + * Diese ermöglicht die Benachrichtung des Observers, wenn sich das Bild ändert. + * @param observer Anzeiger des Bildes + */ + + public void setObserver(PictureViewer observer) { + this.observer= observer; + } + + /** + * Direktes Setzen des Bildes (für interne Zwecke) + * @param b Bild, das gespeichert werden soll. + */ + public void setImage(BufferedImage b) { + image = b; + } + + /** + * Direktes Abfragen des Bildes (für interne Zwecke) + * @return Bild, das gerade gespeichert ist. + */ + public BufferedImage getImage() { + return image; + } + + /** + * Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + * Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + * der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu. + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public void size(int width, int height){ + pushImage(); + this.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(background); + g.fillRect(0,0,width-1, height-1); + } + + /** + * Liefert die Breite des Bildes zurück. + * @return Breite des Bildes + */ + public int getWidth() { + return image.getWidth(); + } + + /** + * Liefert die Höhe des Bildes zurück. + * @return Höhe des Bildes + */ + public int getHeight() { + return image.getHeight(); + } + + + /** + * Erzeugt eine Kopie des Bildes und übergibt sie an den Observer (falls existent), damit dieser die Versionen speichern kann + */ + private void pushImage() { + if(observer != null) { + observer.pushImage(); + } + } + + + /** + * Legt fest, ob nach jedem Zeichenbefehl automatisch das Bild auch in + * der Oberfläche aktualisiert wird. Die Einstellung "false" beschleunigt + * das Zeichnen aufwändiger Bilder und verhindert "Flackern". + * Das Neuzeichnen kann durch die Methode "refresh" gezielt ausgelöst werden. + * @param autorefresh true = nach jedem Zeichenbefehl die Anzeige aktualisieren, false= nur durch die Methode refresh neu zeichnen + */ + public void setAutoRefresh(boolean autoRefresh) { + this.autorefresh = autoRefresh; + } + + + /** + * Auch die anzeigenden Klasse wird zum Neuzeichnen aufgefordert. + */ + private void repaint() { + if(observer != null && autorefresh) { + observer.repaint(); + } + } + + /** + * Auch die anzeigenden Klasse wird zum Neuzeichnen aufgefordert. + */ + public void refresh() { + if(observer != null) { + observer.repaint(); + } + } + + // ----------------------------------------- Zeichenfunktionen ----------------------------------------------- + /** + * Löscht den Inhalt des Bildes. + * Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt. + */ + + public void clear(){ + pushImage(); + image = new BufferedImage(image.getWidth(), image.getHeight(), image.getType()); + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(background); + g.fillRect(0,0,image.getWidth()-1, image.getHeight()-1); + repaint(); + } + + /** + * Konvertiert die in einem bestimmten Modus gegebenen Koordinaten in die Java-übliche Links_Oben_Breite_Höhe Version + * Die Änderungen werden direkt im Array vorgenommen + * @param coord Array mit vier Koordinateneinträgen im gegebenen Modus + * @param mode Modus der Koordinaten (CORNER, CORNERS, RADIUS oder CENTER) + */ + private void convert(int[] coord, int mode) { + switch(mode) { + case CORNER: break; + case CORNERS: coord[2] -= coord[0]; coord[3] -= coord[1]; break; + case RADIUS: coord[2] *= 2; coord[3] *=2; + case CENTER: coord[0] -= coord[2]/2; coord[1] -= coord[3]/2; + } + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + * Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + * Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void rectMode(int mode) { + rectMode = mode; + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + * Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + * Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als Breite und Höhe der Form. + * ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void ellipseMode(int mode) { + ellipseMode = mode; + } + + + + /** + * Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + * Um eine Linie einzufärben, verwenden Sie die {@link #stroke(int, int, int) stroke()} Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + * Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + * {@link #strokeWeight(double) strokeWeight()} geändert werden. + * @param x1 x-Koordinate des 1. Punktes + * @param y1 y-Koordinate des 1. Punktes + * @param x2 x-Koordinate des 2. Punktes + * @param y2 y-Koordinate des 2. Punktes + */ + public void line(int x1, int y1, int x2, int y2) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + if (stroke > 0) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawLine(x1, y1, x2, y2); + } + repaint(); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, rectMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillRect(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawRect(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, ellipseMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillOval(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawOval(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + int px[] = {x1, x2, x3}; + int py[] = {y1, y2, y3}; + polygon(px, py); + + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + + int px[] = {x1, x2, x3, x4}; + int py[] = {y1, y2, y3, y4}; + polygon(px, py); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + + public void polygon(int[] x, int[] y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(fillcolor != null) { + + g.setColor(fillcolor); + g.fillPolygon(x,y, y.length); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawPolygon(x, y, x.length); + } + repaint(); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + ellipse(x,y,1, 1); + + } + + // ----------------------------------------- Schriftdarstellung ----------------------------------------------- + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param s Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String s, int x, int y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(pencolor != null) { + g.setColor(fillcolor); + g.setStroke(new BasicStroke((float) stroke)); + g.setFont(textfont); + g.drawString(s, x, y); + } + repaint(); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + this.textfont = font; + } + + + // ----------------------------------------- Farbfestlegungen ----------------------------------------------- + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(String color) { + try{ + return new Color( + Integer.valueOf( color.substring( 0, 2 ), 16 ), + Integer.valueOf( color.substring( 2, 4 ), 16 ), + Integer.valueOf( color.substring( 4, 6 ), 16 ) ); + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(int color) { + try{ + if(color >=0 && color < 256) { + return new Color(color,color,color); + } else { + int r = color / 0x010000 % 0xFF; + int g = color / 0x000100 % 0xFF; + int b = color % 0xFF; + System.out.println(""+r+","+g+","+b); + return new Color(r, g, b ); + } + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + this.pencolor = decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + this.pencolor=decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + this.pencolor = new Color(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + this.pencolor = null; + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + this.stroke = width; + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + this.fillcolor = decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + this.fillcolor=decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + this.fillcolor = new Color(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + this.fillcolor = null; + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + if(c < 256) { + this.background=new Color(c,c,c); + } else { + int r = c / 0x010000; + int g = c / 0x000100 % 0xFF; + int b = c % 0xFF; + this.background= new Color(r, g, b ); + } + + this.clear(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + this.background=new Color(r,g,b); + this.clear(); + } + + +// ----------------------------------------- Dateioperationen ----------------------------------------------- + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + try{ + this.image = ImageIO.read(new File(filename)); + this.background = decode("D0D0D0"); + this.pencolor = new Color(0,0,0); + this.fillcolor = null; + this.stroke = 1; + this.repaint(); + + } catch(Exception e) { + System.out.println("Fehler beim Einlesen der Bilddatei"); + } + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + try{ + String[] fn = filename.split("\\."); + if (fn.length== 1) { + ImageIO.write(image, "PNG", new File(filename+".png")); + } else { + + if (fn.length == 2 && (fn[1].toUpperCase().equals("PNG") || + fn[1].toUpperCase().equals("GIF"))){ + ImageIO.write(image, fn[1], new File(filename)); + }else { + System.out.println("Unbekanntes Bildformat"); + } + } + + } catch(Exception e) { + System.out.println("Fehler beim Speichern"); + } + } + + +// ----------------------------------------- Sonstiges ----------------------------------------------- + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + + public Color[][] getPixelArray() { + Color[][] pixel = new Color[image.getWidth()][image.getHeight()]; + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + pixel[x][y] = new java.awt.Color(image.getRGB(x,y)); + } + } + return pixel; + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + size(pixel.length,pixel[0].length); + Graphics2D g = (Graphics2D) image.getGraphics(); + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + g.setColor(pixel[x][y]); + g.fillRect(x, y, 1, 1); + } + } + repaint(); + } + + /** + * Hilfsfunktion zum Verzögern der Ausgabe + * @param millis Wartezeit in Millisekunden + */ + public void delay(int millis) { + try{ + Thread.sleep(millis); + + } catch(Exception e) { + + } + + } + + + +} diff --git a/04_loesungen/03_javaeditor/alg12_balkendiagramm_csv_loesung/PictureViewer.java b/04_loesungen/03_javaeditor/alg12_balkendiagramm_csv_loesung/PictureViewer.java new file mode 100644 index 0000000..9e6b151 --- /dev/null +++ b/04_loesungen/03_javaeditor/alg12_balkendiagramm_csv_loesung/PictureViewer.java @@ -0,0 +1,505 @@ +/** + * Zeigt ein Bild in einem Scrollbereich an. + * Es ist möglich das Bild zu zoomen und mehrere Versionen des Bildes zu speichern, um eine "Rückgängig" Operation durchzuführen. + * @author Thomas Schaller + * @version 1.0 vom 01.02.2019 + */ + +import java.awt.*; +import java.awt.event.*; +import javax.swing.*; +import java.awt.image.*; +import java.util.Vector; + +public class PictureViewer extends JScrollPane +{ + + // das aktuelle Bild + private Picture picture; + + // Bilder für den Züruck-Modus speichern + private static final int ANZ_BACK = 20; + private Vector history; + + // Zeichenfläche + private ImageIcon scrollImageIcon; + private JLabel imageLabel; + + // Zoom Faktor + private double zoomFactor; + public static final int FIT = -1; + public static final int NORMAL = 1; + + + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der Größe 1000x1000 + */ + public PictureViewer() { + this(1000,1000); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public PictureViewer(int width, int height) { + this(width,height, "D0D0D0"); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + * @param background Farbe des Hintergrunds als HEX-String (z.B. "FF3A45") + */ + public PictureViewer(int width, int height, String background) { + this(new Picture(width,height, background)); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild aus einer Bilddatei + * @param filename Name des Bildes + */ + public PictureViewer(String filename) { + this(new Picture(filename)); + } + + /** + * Erzeugt ein ScrollPanel und zeigt das Bild-Objekt an + * @param picture anzuzeigendes Bild + */ + public PictureViewer(Picture picture) + { + this.picture=picture; + + zoomFactor=1; + + scrollImageIcon = new ImageIcon(picture.getImage().getScaledInstance(picture.getImage().getWidth(), picture.getImage().getHeight(), Image.SCALE_FAST)); + imageLabel = new JLabel(scrollImageIcon); + imageLabel.setVerticalAlignment(JLabel.CENTER); + imageLabel.setHorizontalAlignment(JLabel.CENTER); + setViewportView(imageLabel); + + this.setBorder(BorderFactory.createLineBorder(Color.black)); + picture.setObserver(this); + history = new Vector(); + + } + + /** + * Setzt das anzuzeigende Bild neu + * @param picture anzuzeigendes Bild + */ + public void setImage(Picture picture) { + this.history = new Vector(); + this.picture = picture; + setZoom(NORMAL); + } + + /** + * Speichert das übergebene Bild in der History. + * @param b zu speicherndes Bild + */ + public void pushImage() { + if( this.ANZ_BACK > 0) { + if(history.size() == this.ANZ_BACK) { + history.removeElementAt(0); + } + + BufferedImage b = new BufferedImage(picture.getWidth(), picture.getHeight(), picture.getImage().getType()); + Graphics g = b.getGraphics(); + g.drawImage(picture.getImage(), 0, 0, null); + g.dispose(); + + history.add(b); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + private void popImage() { + int anz = history.size(); + if(anz>0) { + BufferedImage img = history.get(anz-1); + history.removeElementAt(anz-1); + picture.setImage(img); + setZoom(zoomFactor); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + public void back() { + popImage(); + } + + /** + * Setzt das angezeigt Bild neu und beachtet dabei den Zoomfaktor. + */ + public void repaint() { + if( picture != null) { + double factor= zoomFactor; + if (zoomFactor == FIT) { + double factorw = ((double) getWidth()-2) / picture.getWidth(); + double factorh = ((double) getHeight()-2) / picture.getHeight(); + factor = Math.min(factorw, factorh); + } + int width = (int) (picture.getWidth()*factor); + int height = (int) (picture.getHeight()*factor); + + + + scrollImageIcon.setImage(picture.getImage().getScaledInstance(width, height, Image.SCALE_DEFAULT)); + revalidate(); + } + } + + /** + * Setzt den Zoom-Faktor für das Bild. + * Als Zoomfaktor sind auch die Konstanten Bildanzeiger.FIT (auf Bildschirmgröße zoomen) und Bildanzeiger.NORMAL (100%) möglich. + * @param factor Zoomfaktor (1.0 = 100%). + */ + public void setZoom(double factor) + { + zoomFactor = factor; + repaint(); + } + + + // Wrappermethoden + /** + * Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + * Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + * der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu. + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public void size(int width, int height){ + picture.size(width, height); + } + + /** + * Liefert die Breite des Bildes zurück. + * @return Breite des Bildes + */ + public int getImageWidth() { + return picture.getWidth(); + } + + /** + * Liefert die Höhe des Bildes zurück. + * @return Höhe des Bildes + */ + public int getImageHeight() { + return picture.getHeight(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + picture.background(c); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + picture.background(r,g,b); + } + + /** + * Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + * Um eine Linie einzufärben, verwenden Sie die {@link #stroke(int, int, int) stroke()} Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + * Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + * {@link #strokeWeight(double) strokeWeight()} geändert werden. + * @param x1 x-Koordinate des 1. Punktes + * @param y1 y-Koordinate des 1. Punktes + * @param x2 x-Koordinate des 2. Punktes + * @param y2 y-Koordinate des 2. Punktes + */ + public void line(int x1, int y1, int x2, int y2) { + picture.line(x1,y1,x2,y2); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + picture.rect(a,b,c,d); + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + picture.ellipse(a,b,c,d); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + picture.triangle(x1,y1,x2,y2,x3,y3); + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + picture.quad(x1,y1,x2,y2,x3,y3,x4,y4); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + public void polygon(int[] x, int[] y) { + picture.polygon(x,y); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + picture.point(x,y); + + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + * Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + * Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void rectMode(int mode) { + picture.rectMode(mode); + } + + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + * Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + * Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als Breite und Höhe der Form. + * ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void ellipseMode(int mode) { + picture.ellipseMode(mode); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + picture.stroke(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + picture.noStroke(); + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + picture.strokeWeight(width); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + picture.fill(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + picture.noFill(); + } + + /** + * Löscht den Inhalt des Bildes. + * Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt. + */ + public void clear(){ + picture.clear(); + } + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + picture.load(filename); + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + picture.save(filename); + } + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param t Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String t, int x, int y) { + picture.text(t,x,y); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + picture.textFont(font); + } + + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + public Color[][] getPixelArray() { + return picture.getPixelArray(); + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + picture.setPixelArray(pixel); + } + + + +} diff --git a/04_loesungen/03_javaeditor/alg12_balkendiagramm_csv_loesung/Table.java b/04_loesungen/03_javaeditor/alg12_balkendiagramm_csv_loesung/Table.java new file mode 100644 index 0000000..ee5a211 --- /dev/null +++ b/04_loesungen/03_javaeditor/alg12_balkendiagramm_csv_loesung/Table.java @@ -0,0 +1,894 @@ +/** + * Die Klasse Table vereinfacht den Zugriff auf CSV-Dateien. + * Die Klassen Table und TableRow ermöglichen einen einfachen Zugriff auf tabellenbasierte + * Dokumente. + * + * @author Thomas Schaller + * @version 1.0 vom 01.02.2019 + */ + +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.ArrayList; +import java.io.*; +import java.util.Scanner; + +import org.jdom.Document; +import org.jdom.Element; +import org.jdom.Attribute; +import org.jdom.JDOMException; +import org.jdom.input.SAXBuilder; +import org.jdom.output.XMLOutputter; +import org.jdom.output.Format; + +public class Table +{ + // Standardtrennzeichen für Spalten + private static final char DEFAULT_SEPARATOR = ';'; + // Standardmarkierung für Texte + private static final char DEFAULT_QUOTE = '"'; + // Standardtrennzeichen für Dezimalzahlen + private static final char DEFAULT_COMMA = ','; + + // mögliche Spaltentypen + private static final String UNKNOWN ="UNKOWN"; + private static final String INT = "INTEGER"; + private static final String DOUBLE = "DOUBLE"; + private static final String FLOAT = "FLOAT"; + + // interne Verwaltung des Dokuments als JDOM-Document-Objekt + private Document doc; + // Verweis auf Element für Kopfzeile + private Element header; + // Ende Attribute + + /** + * Erzeugt leeres Tabellen-Dokument. + */ + public Table() { + this.doc = new Document(); + doc.setRootElement(new Element("CSV-Data")); + this.header = new Element("Header"); + doc.getRootElement().addContent(header); + } + + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei und erstellt ein Tabellenobjekt mit seinen Werten. + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public Table(String filename, String options, char separator, char quote) { + loadCSV(filename, options, separator, quote); + } + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei und erstellt ein Tabellenobjekt mit seinen Werten (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + */ + public Table(String filename, String options) { + loadCSV(filename, options); + } + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei ohne Kopfzeile und erstellt ein Tabellenobjekt mit seinen Werten (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public Table(String filename) { + loadCSV(filename); + } + + // Anfang Methoden + /** + * Liest den Inhalt einer CSV-Datei ohne Kopfzeile (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public void loadCSV(String filename) { + loadCSV(filename, ""); + } + + /** + * Liest den Inhalt einer CSV-Datei (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + */ + public void loadCSV(String filename, String options) { + loadCSV(filename, options, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** + * Liest den Inhalt einer CSV-Datei. + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public void loadCSV(String filename, String options, char separator, char quote) { + doc = new Document(); + doc.setRootElement(new Element("CSV-Data")); + header = new Element("Header"); + doc.getRootElement().addContent(header); + try { + File f = new File(filename); + Scanner scanner = new Scanner(new File(filename)); + if(options.toLowerCase().contains("header") && scanner.hasNext()) { + List entries = parseLine(scanner.nextLine(), separator, quote); + int i= 0; + for(String s : entries) { + Element entry = new Element("Column"); + header.addContent(entry); + entry.setText(s); + entry.setAttribute("type", "unknown"); + i++; + } + } + + List cols = header.getChildren(); + + while (scanner.hasNext()) { + Element line = new Element("Row"); + doc.getRootElement().addContent(line); + List entries = parseLine(scanner.nextLine(), separator, quote); + int i= 0; + + for(String s : entries) { + + if(i==cols.size()) { + Element entry = new Element("Column"); + entry.setAttribute("type", "unknown"); + header.addContent(entry); + cols = header.getChildren(); + } + + Element entry = new Element("Entry"); + entry.setText(s); + line.addContent(entry); + i++; + } + } + scanner.close(); + + } catch (Exception e) { + System.out.println("Fehler beim Lesen der CSV-Datei"); + } + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei ohne Kopfzeile (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public void saveCSV(String filename) { + saveCSV(filename, ""); + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthalten, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile haben soll, + * dann lassen Sie einfach die Option "header" weg. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile haben soll. + * @param filename Dateiname der CSV-Datei. + */ + public void saveCSV(String filename, String options) { + saveCSV(filename, options, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei. + * Wenn die Datei eine Kopfzeile enthalten, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile haben soll, + * dann lassen Sie einfach die Option "header" weg. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile haben soll. + * @param filename Dateiname der CSV-Datei. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public void saveCSV(String filename, String options, char separator, char quote){ + try{ + File f = new File(filename); + PrintStream outputFile = new PrintStream (f); + System.out.println("Speicher in : "+f.getAbsolutePath()); + List columns = header.getChildren(); + String sq = ""+quote; + String ss = ""+separator; + if(quote =='"') sq = "\""; + if(separator =='"') ss = "\""; + + if(options.toLowerCase().contains("header")) { + String h = ""; + for(Element c : columns) { + h += ss + sq + c.getText()+sq; + } + outputFile.println(h.substring(1)); + } + for(int i = 0; i parseLine(String cvsLine) { + return parseLine(cvsLine, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** HIlfsfunktion für die Analyse einer Dateizeile + * @param cvsLine Zeile aus der Datei + * @param sparator Trennzeichen für die Spalten + * @return Liste von String für die einzelnen Spalten + */ + private List parseLine(String cvsLine, char separator) { + return parseLine(cvsLine, separator, DEFAULT_QUOTE); + } + + /** HIlfsfunktion für die Analyse einer Dateizeile + * @param cvsLine Zeile aus der Datei + * @param sparator Trennzeichen für die Spalten + * @param customQuote Kennung für Strings + * @return Liste von String für die einzelnen Spalten + */ + private List parseLine(String cvsLine, char separator, char customQuote) { + + List result = new ArrayList<>(); + + //if empty, return! + if (cvsLine == null && cvsLine.isEmpty()) { + return result; + } + + //ggf. Default-Value laden + if (customQuote == ' ') { + customQuote = DEFAULT_QUOTE; + } + + if (separator == ' ') { + separator = DEFAULT_SEPARATOR; + } + + StringBuffer curVal = new StringBuffer(); + boolean inQuotes = false; + boolean startCollectChar = false; + boolean doubleQuotesInColumn = false; + + char[] chars = cvsLine.toCharArray(); + + for (char ch : chars) { + + if (inQuotes) { // aktueller Text ist in Quotes eingeschlossen + startCollectChar = true; + + if (ch == customQuote) { // Quotes werden beendet, aber Achtung bei "" => Metazeichen + inQuotes = false; + if (ch == '\"') { + doubleQuotesInColumn = true; + } + + } else { + + if (ch == '\"' && !doubleQuotesInColumn) { + doubleQuotesInColumn = true; + } else { + curVal.append(ch); + doubleQuotesInColumn = false; + } + + } + } else { + if (ch == customQuote) { + + inQuotes = true; + + //Fixed : allow "" in empty quote enclosed + if (ch == '\"'){ + if(doubleQuotesInColumn) { + curVal.append('"'); + doubleQuotesInColumn = false; + } else doubleQuotesInColumn = true; + + + } + } + else { + doubleQuotesInColumn = false; + if (ch == separator) { + + result.add(curVal.toString()); + + curVal = new StringBuffer(); + startCollectChar = false; + + } else if (ch == '\r') { + //ignore LF characters + continue; + } else if (ch == '\n') { + //the end, break! + break; + } else { + curVal.append(ch); + } + } + } + + } + result.add(curVal.toString()); + return result; + } + + /** + * Sucht die Nummer einer durch Namen gegebenen Spalte. + * @param name Name der Spalte + * @return Nummer der Spalte + */ + + private int findColumnNumber(String name) { + List columns = header.getChildren(); + int i = 0; + for(Element c : columns) { + if (c.getText().toLowerCase().equals(name.toLowerCase())) { + return i; + + } + i++; + } + return -1; + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an. + */ + public void addColumn() { + Element entry = new Element("Column"); + entry.setAttribute("type", Table.UNKNOWN); + header.addContent(entry); + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an und benennt sie. + * @param title Bezeichnung der Spalte + */ + public void addColumn(String title) { + addColumn(); + Element nc = ((List)(header.getChildren())).get(header.getChildren().size()-1); + nc.setText(title); + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an und benennt und typisiert sie. + * @param title Bezeichnung der Spalte + * @param type Typ der Spalte (UNKNOWN, DOUBLE, INTEGER, FLOAT) + */ + public void addColumn(String title, String type) { + addColumn(title); + Element nc = ((List)(header.getChildren())).get(header.getChildren().size()-1); + nc.setAttribute("type", type); + } + + /** + * Löscht eine Spalte. + * @param i Nummer der Spalte. + */ + public void removeColumn(int i) { + List lines = doc.getRootElement().getChildren(); + for(Element l : lines) { + if(l.getChildren().size()>i) l.removeContent(i); + } + } + + /** + * Löscht eine Spalte + * @param name Name der Spalte + */ + public void removeColumn(String name) { + try{ + removeColumn(findColumnNumber(name)); + } catch(Exception e) { System.out.println("Unbekannter Spaltenname");} + } + + /** + * Liefert die Anzahl der Spalten in der Tabelle + * @return Anzahl der Spalten + */ + public int getColumnCount() { + return header.getChildren().size(); + } + + /** + * Liefert die Anzahl der Zeilen in der Tabelle + * @return Anzahl der Zeilen + */ + public int getRowCount() { + return doc.getRootElement().getChildren().size()-1; + } + + /** + * Löscht alle Zeilen der Tabelle. + * Die Spaltenüberschriften und Typen bleiben erhalten. + */ + public void clearRows() { + doc.getRootElement().removeChildren("Row"); + } + + /** + * Fügt eine neue Zeile an das Ende der Tabelle an. + * @return ein TableRow-Objekt für diese neue Zeile + */ + public TableRow addRow() { + Element row = new Element("Row"); + doc.getRootElement().addContent(row); + return new TableRow(doc, row); + } + + /** + * Löscht eine Zeile + * @param i Nummer der Zeile + */ + public void removeRow(int i) { + if(i rows = doc.getRootElement().getChildren(); + return new TableRow(doc, rows.get(i+1)); + } + return null; + } + + /** + * Liefert die ganze Tabelle als Array von TableRow-Objekten + * @return Array von TableRow-Objekten + */ + public TableRow[] rows() { + TableRow[] rows = new TableRow[getRowCount()]; + for(int i = 0; i < getRowCount(); i++) { + rows[i] = getRow(i); + } + return rows; + } + + /** + * Liefert den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param column Spaltennummer + * @return Wert der Zelle + */ + public int getInt(int row, int column) { + return getRow(row).getInt(column); + } + + /** + * Liefert den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param name Name der Spalte + * @return Wert der Zelle + */ + public int getInt(int row, String name) { + return getRow(row).getInt(name); + } + + /** + * Setzt den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param column Spaltennummer + * @param value neuer Wert der Zelle + */ + public void setInt(int row, int column,int value) { + getRow(row).setInt(column, value); + } + + /** + * Setzt den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(int row, String name, int value) { + getRow(row).setInt(name, value); + } + + /** + * Liefert alle Werte einer Zeile als Integer-Array. + * @param row Nummer der Zeile + * @return int-Array, dass alle Werte der Zeile enthält + */ + public int[] getIntRow(int row) { + try{ + TableRow trow = getRow(row); + int anz = getColumnCount(); + int[] r = new int[anz]; + for(int i=0; i) (header.getChildren())).get(i).getText(); + } else { + return ""; + } + } + + /** + * Liefert die Nummer einer Spalte + * @param name Name der Spalte + * @return Nummer der Spalte + */ + public int getColumn(String name) { + List columns = header.getChildren(); + int i = 0; + while (i < columns.size()) { + if (columns.get(i).getText().toLowerCase().equals(name.toLowerCase())) { + return i; + } + i++; + } // end of while + return -1; + } + + + /** + * Erzeugt eine neue Zeile mit i Spalten + * Wenn bisher nicht genügend Spalten vorhanden sind, werden automatisch neue Spalten hinzugefügt (auch zum Header) + * @param i Anzahl der Spalten + */ + private Element buildRow(int i) { + List columns = header.getChildren(); + Element entry=null; + for(int j=0; j<=i; j++) { + + if(j==columns.size()) { + Element h = new Element("Column"); + h.setAttribute("type", "unknown"); + header.addContent(h); + columns = header.getChildren(); + } + if(j==current.getChildren().size()) { + entry = new Element("Entry"); + current.addContent(entry); + + } + + } + return entry; + + } + + /** + * Erzeugt eine neue Zeile. + * Es werden genügend Spalten erzeugt, dass ein Wert in Spalte "name" eingetragen werden kann + * @param name Name der Spalte + */ + private Element buildRow(String name) { + List columns = header.getChildren(); + int i = 0; + for(Element c: columns) { + + if(c.getText().toLowerCase().equals(name.toLowerCase())) { + return buildRow(i); + } + i++; + } + return null; + + } + + /** + * Liefert den Wert einer Zelle als String + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public String getString(int i) { + if(i >= current.getContent().size()) return ""; + Element e = (Element) current.getContent(i) ; + if(e!=null) { + return e.getText(); + } else { + return ""; + } + } + + /** + * Liefert den Wert einer Zelle als String + * @param name Name der Spalte + * @return Wert der Zelle + */ + public String getString(String name) { + return getString(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als String + * @param i Nummer der Spalte + * @param text neuer Wert der Zelle + */ + public void setString(int i, String text) { + + Element e = buildRow(i); + if(e!=null) e.setText(text); + } + + /** + * Setzt den Wert einer Zelle als String + * @param name Name der Spalte + * @param text neuer Wert der Zelle + */ + public void setString(String name, String text) { + Element e = buildRow(name); + if(e!=null) e.setText(text); + } + + + /** + * Liefert den Wert einer Zelle als Int-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public int getInt(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Integer.parseInt(e.getText()); + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Int-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public int getInt(String name) { + return getInt(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Int-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(int i,int value) { + + Element e = buildRow(i); + if(e!=null) e.setText(""+value); + } + + /** + * Setzt den Wert einer Zelle als Int-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(String name, int value) { + Element e = buildRow(name); + if(e!=null) e.setText(""+value); + } + + /** + * Liefert den Wert einer Zelle als Float-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public float getFloat(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Float.parseFloat(e.getText().replace(",",".")); + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Float-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public float getFloat(String name) { + return getFloat(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Float-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setFloat(int i,float value) { + + Element e = buildRow(i); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Setzt den Wert einer Zelle als Float-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setFloat(String name, float value) { + Element e = buildRow(name); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Liefert den Wert einer Zelle als Double-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public double getDouble(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Double.parseDouble(e.getText().replace(",",".")); + + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Double-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public double getDouble(String name) { + return getDouble(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Double-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setDouble(int i,double value) { + + Element e = buildRow(i); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Setzt den Wert einer Zelle als Double-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setDouble(String name, double value) { + Element e = buildRow(name); + if(e!=null) e.setText(format.format(value)); + } + +} diff --git a/04_loesungen/03_javaeditor/alg12_balkendiagramm_csv_loesung/XML.java b/04_loesungen/03_javaeditor/alg12_balkendiagramm_csv_loesung/XML.java new file mode 100644 index 0000000..c06c490 --- /dev/null +++ b/04_loesungen/03_javaeditor/alg12_balkendiagramm_csv_loesung/XML.java @@ -0,0 +1,637 @@ +/** + * Klasse zum Vereinfachten Zugriff auf XML-Dokumente + * Diese Klasse ist für den Einsatz in der Schule gedacht und soll den Schülern + * einen einfachen Zugriff auf XML-Dokumente ermöglichen. Die zur Verfügung + * stehenden Befehle sind wie in Processing realisiert. + * Dabei ist jeder Teilbaum des Dokuments wieder als XML-Objekt zugreifbar, das + * intern auf die gleiche XML-Dokumentstruktur zugreift. + * Dies ermöglicht bei unsachgemäßem Gebrauch die XML-Struktur zu zerstören. Im + * normalen Gebrauch sollte dies aber nicht relevant sein. + * + * Benötigt: jdom-1.1.3.jar + + * @author Thomas Schaller + * @version 1.0 vom 31.01.2019 + */ +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.ArrayList; +import java.io.*; + +import org.jdom.Document; +import org.jdom.Element; +import org.jdom.Attribute; +import org.jdom.JDOMException; +import org.jdom.input.SAXBuilder; +import org.jdom.output.XMLOutputter; +import org.jdom.output.Format; + +public class XML { + // Anfang Attribute + // XML-Dokumentstruktur + private Document doc; + // Zeiger auf das aktuelle Element + private Element current; + // Ende Attribute + + /** + * Erzeugt ein leeres XMLDokument + */ + public XML() { + this.doc = new Document(); + this.current = null; + } + + /** + * Erzeugt ein XML-Dokument aus einer Datei + * @param filename Dateiname der XML-Datei + */ + public XML(String filename) { + loadXML(filename); + } + + /** + * interner Konstruktor, um ein XML Objekt zu erzeugen, das auf einen bestimmten Knoten verweist + * @param doc die XML-Dokumentstruktur + * @param current Zeiger auf das aktuelle Element + */ + private XML(Document doc, Element current) { + this.doc = doc; + this.current = current; + } + + // Anfang Methoden + /** Öffnet das durch den Dateinamen gegebene Dokument + * @param filename Dateiname des XML-Files + */ + public void loadXML(String filename) { + doc = null; + File f = new File(filename); + + try { + // Das Dokument erstellen + SAXBuilder builder = new SAXBuilder(); + doc = builder.build(f); + + } catch (JDOMException e) { + e.printStackTrace(); + + } catch (IOException e) { + e.printStackTrace(); + } + // Zeiger im Baum auf Root-Element + current = doc.getRootElement(); + } + + /** Speichert den XML-Baum im angegebenen Dateinamen + * @param filename Dateiname des XML-Files + */ + public void saveXML(String filename) { + try { + // new XMLOutputter().output(doc, System.out); + XMLOutputter xmlOutput = new XMLOutputter(); + + // display nice nice + xmlOutput.setFormat(Format.getPrettyFormat()); + File f = new File(filename); + FileOutputStream outputFile = new FileOutputStream(f); + System.out.println("Speicher in : "+f.getAbsolutePath() ); + xmlOutput.output(doc, outputFile); + outputFile.close(); + System.out.println("File Saved!"); + } catch (IOException io) { + System.out.println(io.getMessage()); + } + + } + + //----------------------------------------------- Zeigerbewegungen -------------------------------------------------- + /** + * liefert ein XML-Objekt, das auf den Vaterknoten des aktuellen Elements zeigt. + * @return Vater des aktuellen Objekts. + */ + public XML getParent() { + if(current != null) { + Element parent = current.getParentElement(); + if (parent == null) { + return null; + } else { + return new XML(doc, parent); + } + } + return null; + } + + /** + * Überprüft, ob das Element irgendwelche Kinder hat oder nicht, und gibt das Ergebnis als boolean zurück. + * @return true, wenn Kinder vorhanden sind, sonst false + */ + public boolean hasChildren() { + if (current == null) { + return doc.hasRootElement(); + } else { + return current.getChildren().size()>0; + } + } + + /** + * Ermittelt die Namen aller Kinder des Elements und gibt die Namen als ein Array von Strings zurück. + * Dies ist dasselbe wie das Durchlaufen und Aufrufen von getName() auf jedem untergeordneten Element einzeln. + * @return Liste aller Namen der Kinder + */ + public String[] listChildren() { + if (current == null) { + if(doc.hasRootElement()) { + String[] names = new String[0]; + names[0] = doc.getRootElement().getName(); + return names; + } else { + return null; + } + } else { + List ch_element = current.getChildren(); + String[] names = new String[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + names[i] = ch_element.get(i).getName(); + } + return names; + } + } + + /** + * Liefert alle Kinder des Elements als Array von XML-Objekten. + * @return Array der Kinder als XML-Objekte + */ + public XML[] getChildren() { + if (current == null) { + if(doc.hasRootElement()) { + XML[] ch_xml = new XML[1]; + ch_xml[0] = new XML(doc, doc.getRootElement()); + return ch_xml; + } else { + return null; + } + } else { + List ch_element = current.getChildren(); + XML[] ch_xml = new XML[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + ch_xml[i] = new XML(doc, ch_element.get(i)); + } + return ch_xml; + } + } + + /** + * Liefert bestimmte Kinder des Elements als Array von XML-Objekten. + * Die Methode gibt dabei alle Kinder zurück, die dem angegebenen Namen entsprechen. + * @param name Name der gesuchten Kind-Objekte + * @return Array der Kinder als XML-Objekte + */ + public XML[] getChildren(String name) { + if (current == null) { + if(doc.hasRootElement()) { + XML[] ch_xml = new XML[1]; + ch_xml[0] = new XML(doc, doc.getRootElement()); + if(doc.getRootElement().getName().equals(name)){ + return ch_xml; + } else { + return null; + } + } else { + return null; + } + } else { + List ch_element = current.getChildren(name); + XML[] ch_xml = new XML[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + ch_xml[i] = new XML(doc, ch_element.get(i)); + } + return ch_xml; + } + } + + /** + * Liefert das erste Kind des Elements mit einem bestimmten Namen. + * Die Methode gibt das erste Kind zurück, das dem angegebenen Namen entsprechen. + * @param name Name des gesuchten Kind-Objektes + * @return Kind als XML-Objekt + */ + + public XML getChild(String name) { + if (current == null) { + Element e = doc.getRootElement(); + if (e.getName().equals(name)) { + return new XML(doc, e); + } else { + return null; + } + } else { + String[] names = name.split("/"); + Element e = current; + int i = 0; + while(i < names.length) { + e = e.getChild(names[i]); + if (e==null) return null; + i++; + } + return new XML(doc, e); + } + } + + /** + * Liefert das i. Kind des Elements. + * Die Methode gibt das i. Kind des aktuellen Elements zurück. + * @param i Nummer des Kindes + * @return Kind als XML-Objekt + */ + public XML getChild(int i) { + if (current == null) { + return new XML(doc, doc.getRootElement()); + } else { + List ch_element = current.getChildren(); + if (i>=ch_element.size()) return null; + return new XML(doc, ch_element.get(i)); + } + } + + //--------------------------------------------------- Methoden für das aktuelle Element ------------------------------------------------- + /** + * Frage den Namen des aktuellen Elements ab + * @return Namen des Elements + */ + public String getName() { + if (current==null) return ""; + return current.getName(); + } + + /** + * Setze den Namen des aktuellen Elements. + * @param name Neuer Name des Elements + */ + public void setName(String name) { + if (current==null) return; + current.setName(name); + } + + /** + * liefert die Anzahl der Attribute eines Elements. + * @return Anzahl des Attribute + */ + public int getAttributeCount() { + if (current == null) return 0; + return current.getAttributes().size(); + } + + /** + * liefert zurück, ob das aktuelle Element Attribute hat . + * @return true, wenn es Attribute gibt + */ + public boolean hasAttribute() { + if (current == null) return false; + return current.getAttributes().size()>0; + } + + /** + * Ruft alle Attribute des angegebenen Elements ab und gibt sie als Array von Strings zurück. + * @return Liste der Attributnamen + */ + public String[] listAttributes() { + if (current == null) return null; + List attr = current.getAttributes(); + String[] names = new String[attr.size()]; + for(int i=0; i < attr.size() ; i++) { + names[i] = attr.get(i).getName(); + } + return names; + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs + */ + public String getString(String attribute) { + if (current==null) return ""; + return current.getAttributeValue(attribute); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs + */ + public String getString(String attribute, String defaultValue) { + if (current==null) return defaultValue; + return current.getAttributeValue(attribute,defaultValue); + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param text neuer Wert des Attributs + */ + public void setString(String attribute, String text) { + if (current==null) return; + current.setAttribute(attribute, text); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Integer-Zahl + */ + public int getInt(String attribute) { + if (current==null) return 0; + try{ + int i = Integer.parseInt(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als Integer-Zahl + */ + public int getInt(String attribute, int defaultValue) { + if (current==null) return defaultValue; + try{ + int i = Integer.parseInt(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setInt(String attribute, int value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Float-Zahl + */ + public float getFloat(String attribute) { + if (current==null) return 0; + try{ + float i = Float.parseFloat(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als Float-Zahl + */ + public float getFloat(String attribute, float defaultValue) { + if (current==null) return defaultValue; + try{ + float i = Float.parseFloat(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setFloat(String attribute, float value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Double-Zahl + */ + public double getDouble(String attribute) { + if (current==null) return 0; + try{ + double i = Double.parseDouble(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + +/** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als double-Zahl + */ + public double getDouble(String attribute, double defaultValue) { + if (current==null) return defaultValue; + try{ + double i = Double.parseDouble(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setDouble(String attribute, double value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt den Inhalt/Text des aktuellen Elements ab + * @return Inhalt des Elements + */ + public String getContent() { + if ( current==null) return ""; + + return current.getText(); + } + + /** + * Fragt den Inhalt/Text des aktuellen Elements ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardtext + * @return Inhalt des Elements + */ + public String getContent(String defaultValue) { + if ( current==null) return defaultValue; + String t = current.getText(); + if(t.equals("")) t = defaultValue; + return t; + } + + /** + * Setzt den Inhalt/Text des aktuellen Elements + * @param text Neuer Inhalt des Elements + */ + public void setContent(String text) { + if ( current==null) return; + current.setText(text); + } + + + /** + * Fragt den Inhalt des aktuellen Elements als Integerzahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ public int getIntContent(int defaultValue) { + if ( current==null) return defaultValue; + try{ + int i = Integer.parseInt(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Integerzahl ab + * @return Inhalt des Elements + */ + public int getIntContent() { + if ( current==null) return 0; + try{ + int i = Integer.parseInt(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setIntContent(int value) { + if ( current==null) return; + current.setText(""+value); + } + + + /** + * Fragt den Inhalt des aktuellen Elements als Floatzahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ + public float getFloatContent(float defaultValue) { + if ( current==null) return defaultValue; + try{ + float i = Float.parseFloat(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Floatzahl ab + * @return Inhalt des Elements + */ + public float getFloatContent() { + if ( current==null) return 0; + try{ + float i = Float.parseFloat(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setFloatContent(float value) { + if ( current==null) return; + current.setText(""+value); + } + +/** + * Fragt den Inhalt des aktuellen Elements als Doublezahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ + public double getDoubleContent(double defaultValue) { + if ( current==null) return defaultValue; + try{ + double i = Double.parseDouble(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Doublezahl ab + * @return Inhalt des Elements + */ + public double getDoubleContent() { + if ( current==null) return 0; + try{ + double i = Double.parseDouble(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setDoubleContent(double value) { + if ( current==null) return; + current.setText(""+value); + } + + + // ----------------------------------------------- XML-Struktur aufbauen ------------------------------------------------ + /** Erzeuge neues Element nach der aktuellen Position und setze dieses als aktuelles Element + * @param name Name des neuen Elements + * @return neues Element als XML-Objekt + */ + public XML addChild(String name) { + Element e = new Element(name); + if(current == null){ // man ist auf Root-Ebene + doc.setRootElement(e); + + } + else { + current.addContent(e); + } // end of if-else + return new XML(doc, e); + } + + /** + * liefert das aktuelle Element als jdom-Element-Objekt + * @return aktuelles Element + */ + private Element getCurrent() { + return current; + } + + /** + * löscht ein Kind des aktuellen Knotens. + * Ist kid kein Kind des aktuellen Elements passiert gar nichts. + * @param kid XML-Objekt des Kindes + */ + public void removeChild(XML kid) { + if (current == null) return; + Element e = kid.getCurrent(); + int index = current.indexOf(e); + if(index >= 0) { current.removeContent(e);} + } + +} diff --git a/04_loesungen/03_javaeditor/alg12_balkendiagramm_csv_loesung/jdom-1.1.3.jar b/04_loesungen/03_javaeditor/alg12_balkendiagramm_csv_loesung/jdom-1.1.3.jar new file mode 100644 index 0000000..a287727 Binary files /dev/null and b/04_loesungen/03_javaeditor/alg12_balkendiagramm_csv_loesung/jdom-1.1.3.jar differ diff --git a/04_loesungen/03_javaeditor/alg12_balkendiagramm_csv_loesung/punkte.csv b/04_loesungen/03_javaeditor/alg12_balkendiagramm_csv_loesung/punkte.csv new file mode 100644 index 0000000..d6e8dfd --- /dev/null +++ b/04_loesungen/03_javaeditor/alg12_balkendiagramm_csv_loesung/punkte.csv @@ -0,0 +1,6 @@ +"Name","Punkte" +Niko,216 +Klaus,591 +Anna,857 +Lena,180 +Winfried,168 diff --git a/04_loesungen/03_javaeditor/alg13_maximumsuche_loesung/Balkendiagramm.java b/04_loesungen/03_javaeditor/alg13_maximumsuche_loesung/Balkendiagramm.java new file mode 100644 index 0000000..7e782c3 --- /dev/null +++ b/04_loesungen/03_javaeditor/alg13_maximumsuche_loesung/Balkendiagramm.java @@ -0,0 +1,176 @@ +import java.awt.Font; + +/** + * Balkendiagramm für int-Array, Zahlen werden aus CSV-Datei gelesen, Maximum der Werte wird bestimmt. + * Hinweis zur Benutzung: + * Start des Algorithmus: Klicke den Button Maximumsuche an. + * Start des automatischen Tests: Klicke den Button Testen an. Die Ausgabe erfolgt in der Konsole. + * + * @author Schaller + * @version 29.11.18 + */ +public class Balkendiagramm extends Picture + +{ +// Liste mit allen Werten + int[] zahlen; + String[] namen; + + +// Hilfsvariablen für die Suche + int akt_maximum=-1; // aktuell groesstes Element + int akt=-1; // aktuell untersuchtes Element + int verzoegerung=100; // Geschwindigkeit der Ausführung + + // Schriften + Font kleineSchrift; + Font grosseSchrift; + + public Balkendiagramm() { + size(1000, 700); + background(0); + kleineSchrift = new Font( Font.SANS_SERIF, Font.PLAIN, 12 ); + grosseSchrift = new Font( Font.SANS_SERIF, Font.PLAIN, 20 ); + + // Deaktiviere die automatische Neudarstellung nach einem Zeichenbefehl + setAutoRefresh(false); + + // CSV-Datei laden und anzeigen + ladeTabelle("punkte.csv"); + + zeichneBalken(); + } + + + + public void ladeTabelle(String name) { + // Tabelle aus CSV-Datei laden //<>// + Table csv = new Table(name, "header", ',', '"'); + + if (csv != null && csv.getColumnCount()==2) { + + // Initialisiere Arrays, in die alle Zeilen der Tabelle passen + zahlen = new int[csv.getRowCount()]; + namen = new String[csv.getRowCount()]; + + // Fülle die Arrays mit Werten aus der Tabelle + for (int i = 0; i < zahlen.length; i++) { + // Lies Wert aus der i. Zeile und der Spalte "Punkte" bzw. "Name" + zahlen[i] = csv.getInt(i, "Punkte"); + namen[i] = csv.getString(i, "Name"); + } + } + } + + public void zeichneBalken() { + + clear(); + + // Überschrift + fill(255,255,255); + textFont(grosseSchrift); + text("Punkte", 2, 20); + textFont(kleineSchrift); + + // Alle Einträge darstellen + if (zahlen != null) { + for (int i = 0; i< zahlen.length; i++) { + + fill(20,25,165); + // aktuelle Elemente farblich hervorheben + if (i == akt) { + fill(140,230,20); + } + if (i == akt_maximum) { + fill(230,60,140); + } + + // Balkendiagramm zeichnen + if (zahlen[i]>=0) rect(120, 25+i*15, zahlen[i]+1, 13); + + // Beschriftung + fill(255,255,255); + text(namen[i], 2, 35+i*15); + text(""+zahlen[i], 70, 35+i*15); + } + } + refresh(); + } + + + public int maximumsuche() { + // Sind überhaupt Daten da? + if(zahlen.length==0 ) { //<>// + return -1; + } + + // Startwerte setzen + akt_maximum = 0; + akt = 1; + + // Alle Arrayelemente untersuchen + while (akt < zahlen.length) { + // Neu zeichnen, da akt neu gesetzt wurde + zeichneBalken(); + delay(verzoegerung); + // Neues größtes Element?? + if (zahlen[akt]> zahlen[akt_maximum]) { + // Dann merke dir das neue + akt_maximum = akt; + // Zeichne Balken neu, da neues größtes Element + zeichneBalken(); + delay(verzoegerung); + } + akt = akt + 1; + } + zeichneBalken(); + delay(verzoegerung); + akt = -1; + zeichneBalken(); + // Gib Position des größten Elements zurück + return akt_maximum; + } + + public void testen() { + + + // Testfall 1 + verzoegerung = 0; //<>// + ladeTabelle("testfall1.csv"); + int m1 = maximumsuche(); + if (m1 == 12) { + System.out.println("Maximum korrekt gefunden. In Datei testfall1.csv ist der größte Wert "+ zahlen[m1]+" von "+namen[m1]+" an Position "+m1); + } else { + System.out.println("Maximum in testfall.csv nicht gefunden. Du ermittelst "+m1+" richtig wäre 12"); + } + // Testfall 2: negative Zahlen + ladeTabelle("testfall2.csv"); + int m2 = maximumsuche(); + if (m2 == 3) { + System.out.println("Maximum korrekt gefunden. In Datei testfall2.csv ist der größte Wert "+ zahlen[m2]+" von "+namen[m2]+" an Position "+m2); + } else { + System.out.println("Maximum in testfall2.csv nicht gefunden. Du ermittelst "+m2+" richtig wäre 3"); + } + // Testfall 3: Nur 1 Element + ladeTabelle("testfall3.csv"); + int m3 = maximumsuche(); + if (m3 == 0) { + System.out.println("Maximum korrekt gefunden. In Datei testfall3.csv ist der größte Wert "+ zahlen[m3]+" von "+namen[m3]+" an Position "+m3); + } else { + System.out.println("Maximum in testfall3.csv nicht gefunden. Du ermittelst "+m3+" richtig wäre 0"); + } + // Testfall 4: Leere Liste + ladeTabelle("testfall4.csv"); + int m4 = maximumsuche(); + if (m4 == -1) { + System.out.println("Maximum korrekt gefunden. Da die Datei keine Spieler enthält wird -1 zurückgegeben."); + } else { + System.out.println("Maximum in testfall4.csv nicht gefunden. Du ermittelst "+m4+" richtig wäre -1, da die Datei leer ist."); + } + + } + + + + +} diff --git a/04_loesungen/03_javaeditor/alg13_maximumsuche_loesung/BalkendiagrammGUI.java b/04_loesungen/03_javaeditor/alg13_maximumsuche_loesung/BalkendiagrammGUI.java new file mode 100644 index 0000000..5efc307 --- /dev/null +++ b/04_loesungen/03_javaeditor/alg13_maximumsuche_loesung/BalkendiagrammGUI.java @@ -0,0 +1,141 @@ +import java.awt.*; +import java.awt.event.*; +import javax.swing.*; +import javax.swing.event.*; + +/** + * + * description + * + * @version 1.0 from 06.10.2018 + * @author + */ + +public class BalkendiagrammGUI extends JFrame { + // Anfang Attribute + private JButton bZeichnen = new JButton(); + private PictureViewer imagePanel1 = new PictureViewer(); + + private JButton bMaximumsuche = new JButton(); + private JButton bTesten = new JButton(); + private Balkendiagramm bild; + private Picture b; + private Timer timer1 = new Timer(1000, null); + // Ende Attribute + + public BalkendiagrammGUI (String title) { + super (title); + setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); + int frameWidth = 768; + int frameHeight = 551; + setSize(frameWidth, frameHeight); + Dimension d = Toolkit.getDefaultToolkit().getScreenSize(); + int x = (d.width - getSize().width) / 2; + int y = (d.height - getSize().height) / 2; + setLocation(x, y); + Container cp = getContentPane(); + cp.setLayout(null); + // Anfang Komponenten + bZeichnen.setBounds(24, 456, 209, 33); + bZeichnen.setText("Balkendiagramm zeichnen"); + bZeichnen.setMargin(new Insets(2, 2, 2, 2)); + bZeichnen.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent evt) { + bZeichnen_ActionPerformed(evt); + } + }); + cp.add(bZeichnen); + imagePanel1.setBounds(24, 16, 705, 409); + cp.add(imagePanel1); + + bMaximumsuche.setBounds(280, 456, 201, 33); + bMaximumsuche.setText("Maximumsuche"); + bMaximumsuche.setMargin(new Insets(2, 2, 2, 2)); + bMaximumsuche.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent evt) { + bMaximumsuche_ActionPerformed(evt); + } + }); + cp.add(bMaximumsuche); + bTesten.setBounds(512, 456, 185, 33); + bTesten.setText("Testen"); + bTesten.setMargin(new Insets(2, 2, 2, 2)); + bTesten.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent evt) { + bTesten_ActionPerformed(evt); + } + }); + cp.add(bTesten); + timer1.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent evt) { + timer1_ActionPerformed(evt); + } + }); + b = new Picture(700,800); + imagePanel1.setImage(b); + b.setObserver(imagePanel1); + timer1.setRepeats(true); + timer1.setInitialDelay(0); + timer1.setDelay(100); + timer1.start(); + addWindowListener(new WindowAdapter() { + public void windowClosed(WindowEvent evt) { + BalkendiagrammGUI_WindowClosed(evt); + } + }); + // Ende Komponenten + setResizable(false); + setVisible(true); + } + + // Anfang Methoden + public void bZeichnen_ActionPerformed(ActionEvent evt) { + bild = new Balkendiagramm(); + imagePanel1.setImage(bild); + bild.setObserver(imagePanel1); + imagePanel1.getVerticalScrollBar().setValue(10); + imagePanel1.getVerticalScrollBar().setValue(0); + imagePanel1.getViewport().repaint(); + } // end of bZeichnen_ActionPerformed + + public void bMaximumsuche_ActionPerformed(ActionEvent evt) { + bild = new Balkendiagramm(); + imagePanel1.setImage(bild); + bild.setObserver(imagePanel1); + imagePanel1.getVerticalScrollBar().setValue(10); + imagePanel1.getVerticalScrollBar().setValue(0); + imagePanel1.getViewport().repaint(); + new Thread( new Runnable() { + @Override public void run() { + bild.maximumsuche(); + } + } ).start(); + } // end of bMaximumsuche_ActionPerformed + + public void bTesten_ActionPerformed(ActionEvent evt) { + bild = new Balkendiagramm(); + imagePanel1.setImage(bild); + bild.setObserver(imagePanel1); + imagePanel1.getVerticalScrollBar().setValue(10); + imagePanel1.getVerticalScrollBar().setValue(0); + imagePanel1.getViewport().repaint(); + bild.testen(); + } // end of bTesten_ActionPerformed + + public void timer1_ActionPerformed(ActionEvent evt) { + imagePanel1.getViewport().repaint(); + + } // end of timer1_ActionPerformed + + public void BalkendiagrammGUI_WindowClosed(WindowEvent evt) { + timer1.stop(); + + } // end of BalkendiagrammGUI_WindowClosed + + // Ende Methoden + + public static void main(String[] args) { + new BalkendiagrammGUI("BalkendiagrammGUI"); + } +} + diff --git a/04_loesungen/03_javaeditor/alg13_maximumsuche_loesung/BalkendiagrammGUI.jfm b/04_loesungen/03_javaeditor/alg13_maximumsuche_loesung/BalkendiagrammGUI.jfm new file mode 100644 index 0000000..bc71e44 --- /dev/null +++ b/04_loesungen/03_javaeditor/alg13_maximumsuche_loesung/BalkendiagrammGUI.jfm @@ -0,0 +1,213 @@ +object BalkendiagrammGUI: TFGUIForm + Left = 761 + Top = 237 + BorderIcons = [biSystemMenu] + Caption = 'BalkendiagrammGUI' + ClientHeight = 512 + ClientWidth = 752 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -10 + Font.Name = 'MS Sans Serif' + Font.Style = [] + FormStyle = fsStayOnTop + OldCreateOrder = True + Position = poDesigned + ShowHint = True + Visible = True + OnClose = FormClose + OnCloseQuery = FormCloseQuery + OnResize = FormResize + FrameType = 5 + Resizable = False + Undecorated = False + Background = clBtnFace + windowClosed = 'BalkendiagrammGUI_WindowClosed' + PixelsPerInch = 96 + TextHeight = 13 + object bZeichnen: TJButton + Tag = 4 + Left = 24 + Top = 456 + Width = 209 + Height = 33 + Hint = 'jButton1' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Dialog' + Font.Style = [fsBold] + Foreground = 3355443 + Background = 15658734 + actionPerformed = 'bZeichnen_ActionPerformed' + Text = 'Balkendiagramm zeichnen' + Mnemonic = 0 + DisplayedMnemonicIndex = 0 + Selected = False + BorderPainted = True + FocusPainted = False + ContentAreaFilled = True + HorizontalAlignment = CENTER + VerticalAlignment = CENTER + HorizontalTextPosition = RIGHT + VerticalTextPosition = CENTER + IconTextGap = 4 + RolloverEnabled = False + Border.BorderType = NoBorder + Border.LineColor = clBlack + Border.LineThickness = 0 + Border.LineRounded = False + Border.EtchHighlightColor = clBlack + Border.EtchShadowColor = clBlack + Border.Etchtype = 0 + Border.BevelHighlightColor = clBlack + Border.BevelShadowColor = clBlack + Border.Beveltype = 0 + Border.MatteColor = clBlack + Border.MatteTop = 0 + Border.MatteLeft = 0 + Border.MatteBottom = 0 + Border.MatteRight = 0 + end + object imagePanel1: TJPanel + Tag = 38 + Left = 24 + Top = 16 + Width = 705 + Height = 409 + Hint = 'imagePanel1' + HelpKeyword = 'ImagePanel' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Dialog' + Font.Style = [fsBold] + Foreground = 3355443 + Background = clBtnFace + Border.BorderType = NoBorder + Border.LineColor = clBlack + Border.LineThickness = 0 + Border.LineRounded = False + Border.EtchHighlightColor = clBlack + Border.EtchShadowColor = clBlack + Border.Etchtype = 0 + Border.BevelHighlightColor = clBlack + Border.BevelShadowColor = clBlack + Border.Beveltype = 0 + Border.MatteColor = clBlack + Border.MatteTop = 0 + Border.MatteLeft = 0 + Border.MatteBottom = 0 + Border.MatteRight = 0 + end + object bMaximumsuche: TJButton + Tag = 4 + Left = 280 + Top = 456 + Width = 201 + Height = 33 + Hint = 'jButton1' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Dialog' + Font.Style = [fsBold] + Foreground = 3355443 + Background = 15658734 + actionPerformed = 'bMaximumsuche_ActionPerformed' + Text = 'Maximumsuche' + Mnemonic = 0 + DisplayedMnemonicIndex = 0 + Selected = False + BorderPainted = True + FocusPainted = False + ContentAreaFilled = True + HorizontalAlignment = CENTER + VerticalAlignment = CENTER + HorizontalTextPosition = RIGHT + VerticalTextPosition = CENTER + IconTextGap = 4 + RolloverEnabled = False + Border.BorderType = NoBorder + Border.LineColor = clBlack + Border.LineThickness = 0 + Border.LineRounded = False + Border.EtchHighlightColor = clBlack + Border.EtchShadowColor = clBlack + Border.Etchtype = 0 + Border.BevelHighlightColor = clBlack + Border.BevelShadowColor = clBlack + Border.Beveltype = 0 + Border.MatteColor = clBlack + Border.MatteTop = 0 + Border.MatteLeft = 0 + Border.MatteBottom = 0 + Border.MatteRight = 0 + end + object bTesten: TJButton + Tag = 4 + Left = 512 + Top = 456 + Width = 185 + Height = 33 + Hint = 'jButton2' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Dialog' + Font.Style = [fsBold] + Foreground = 3355443 + Background = 15658734 + actionPerformed = 'bTesten_ActionPerformed' + Text = 'Testen' + Mnemonic = 0 + DisplayedMnemonicIndex = 0 + Selected = False + BorderPainted = True + FocusPainted = False + ContentAreaFilled = True + HorizontalAlignment = CENTER + VerticalAlignment = CENTER + HorizontalTextPosition = RIGHT + VerticalTextPosition = CENTER + IconTextGap = 4 + RolloverEnabled = False + Border.BorderType = NoBorder + Border.LineColor = clBlack + Border.LineThickness = 0 + Border.LineRounded = False + Border.EtchHighlightColor = clBlack + Border.EtchShadowColor = clBlack + Border.Etchtype = 0 + Border.BevelHighlightColor = clBlack + Border.BevelShadowColor = clBlack + Border.Beveltype = 0 + Border.MatteColor = clBlack + Border.MatteTop = 0 + Border.MatteLeft = 0 + Border.MatteBottom = 0 + Border.MatteRight = 0 + end + object timer1: TTimer + Tag = 49 + Left = 712 + Top = 456 + Width = 33 + Height = 28 + Hint = 'timer1' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Dialog' + Font.Style = [fsBold] + Foreground = 3355443 + Background = 15658734 + actionPerformed = 'timer1_ActionPerformed' + Coalesce = False + Delay = 100 + InitialDelay = 0 + LogTimers = False + Repeats = True + end +end diff --git a/04_loesungen/03_javaeditor/alg13_maximumsuche_loesung/Picture.java b/04_loesungen/03_javaeditor/alg13_maximumsuche_loesung/Picture.java new file mode 100644 index 0000000..8df3d55 --- /dev/null +++ b/04_loesungen/03_javaeditor/alg13_maximumsuche_loesung/Picture.java @@ -0,0 +1,699 @@ +import java.awt.image.*; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.BasicStroke; +import java.util.Vector; +import javax.imageio.*; +import java.io.*; +import java.awt.*; +import javax.swing.*; +import java.util.Random; +import java.awt.geom.AffineTransform; +/** + * + * Bildklasse für die Simulation von Processing-Befehlen + * + * Diese Klasse stellt ein BufferedImage bereit, in das mit Processing-Befehlen gezeichnet + * werden kann. + * Zusätzlich kann ein Bildanzeiger über jede Änderung des Bildes informiert werden, + * um "Zurück"-Befehle zu ermöglichen. Der Bildanzeiger ist entweder eine normale Java + * ScrollPane oder ein Actor aus Greenfoot. + * Die Dokumentation der einzelnen Zeichenmethoden ist der Processing-Reference + * (https://processing.org/reference/ steht unter CC-Lizenz: https://creativecommons.org/) + * entnommen und mit Deepl.com ins Deutsche übersetzt. + * + * @version 1.0 from 23.01.2019 + * @author Thomas Schaller (ZPG Informatik Klasse 9) + */ + +public class Picture{ + + // Einstellungmöglichkeiten für das Zeichnen von Rechtecken und Ellipsen + // RADIUS = Mittelpunkt+Radius wird gegeben, CENTER = Mittelpunkt und Breite/Höhe wird gegeben, + // CORNER = Linke obere Ecke + Breite/Höhe, CORNERS = Linke obere und rechte untere Ecke + public static final int RADIUS = 1; + public static final int CENTER = 2; + public static final int CORNER = 3; + public static final int CORNERS = 4; + + // gespeichertes Bild, + private BufferedImage image; + + // aktuelle Farbeinstellungen + private Color background; + private Color pencolor; + private Color fillcolor; + + // aktuelle Stiftdicke + private double stroke; + + // akkteller Koordinatenmodus von Rechtecken und Ellipsen + private int ellipseMode = CENTER; + private int rectMode = CORNER; + + // aktueller Font + private Font textfont = null; + + // muss ein Bildanzeiger benachrichtigt werden + private PictureViewer observer = null; + private boolean autorefresh = true; + + /** + * Erzeugt ein Bild mit Standardgröße 500x400 + */ + public Picture() { + this(500,400); + } + + /** + * Erzeugt ein Bild der angegeben Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public Picture(int width, int height) { + this(width,height, "D0D0D0"); + } + + /** + * Erzeugt ein Bild aus einer Datei + * @param filename Dateiname des Bildes + */ + public Picture(String filename) { + load(filename); + } + + /** + * Erzeugt ein Bild der angegebenen Größe mit festgelegtem Hintergrund + * @param width Breite des Bildes + * @param height Höhe des Bildes + * @param background Farbe des Hintergrunds + */ + public Picture(int width, int height, String background) { + this.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + this.background = decode(background); + this.pencolor = new Color(0,0,0); + this.stroke = 1; + this.fillcolor = null; + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(this.background); + g.fillRect(0,0,width-1, height-1); + } + + /** + * Legt fest, wer das Bild anzeigt. + * Diese ermöglicht die Benachrichtung des Observers, wenn sich das Bild ändert. + * @param observer Anzeiger des Bildes + */ + + public void setObserver(PictureViewer observer) { + this.observer= observer; + } + + /** + * Direktes Setzen des Bildes (für interne Zwecke) + * @param b Bild, das gespeichert werden soll. + */ + public void setImage(BufferedImage b) { + image = b; + } + + /** + * Direktes Abfragen des Bildes (für interne Zwecke) + * @return Bild, das gerade gespeichert ist. + */ + public BufferedImage getImage() { + return image; + } + + /** + * Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + * Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + * der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu. + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public void size(int width, int height){ + pushImage(); + this.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(background); + g.fillRect(0,0,width-1, height-1); + } + + /** + * Liefert die Breite des Bildes zurück. + * @return Breite des Bildes + */ + public int getWidth() { + return image.getWidth(); + } + + /** + * Liefert die Höhe des Bildes zurück. + * @return Höhe des Bildes + */ + public int getHeight() { + return image.getHeight(); + } + + + /** + * Erzeugt eine Kopie des Bildes und übergibt sie an den Observer (falls existent), damit dieser die Versionen speichern kann + */ + private void pushImage() { + if(observer != null) { + observer.pushImage(); + } + } + + + /** + * Legt fest, ob nach jedem Zeichenbefehl automatisch das Bild auch in + * der Oberfläche aktualisiert wird. Die Einstellung "false" beschleunigt + * das Zeichnen aufwändiger Bilder und verhindert "Flackern". + * Das Neuzeichnen kann durch die Methode "refresh" gezielt ausgelöst werden. + * @param autorefresh true = nach jedem Zeichenbefehl die Anzeige aktualisieren, false= nur durch die Methode refresh neu zeichnen + */ + public void setAutoRefresh(boolean autoRefresh) { + this.autorefresh = autoRefresh; + } + + + /** + * Auch die anzeigenden Klasse wird zum Neuzeichnen aufgefordert. + */ + private void repaint() { + if(observer != null && autorefresh) { + observer.repaint(); + } + } + + /** + * Auch die anzeigenden Klasse wird zum Neuzeichnen aufgefordert. + */ + public void refresh() { + if(observer != null) { + observer.repaint(); + } + } + + // ----------------------------------------- Zeichenfunktionen ----------------------------------------------- + /** + * Löscht den Inhalt des Bildes. + * Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt. + */ + + public void clear(){ + pushImage(); + image = new BufferedImage(image.getWidth(), image.getHeight(), image.getType()); + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(background); + g.fillRect(0,0,image.getWidth()-1, image.getHeight()-1); + repaint(); + } + + /** + * Konvertiert die in einem bestimmten Modus gegebenen Koordinaten in die Java-übliche Links_Oben_Breite_Höhe Version + * Die Änderungen werden direkt im Array vorgenommen + * @param coord Array mit vier Koordinateneinträgen im gegebenen Modus + * @param mode Modus der Koordinaten (CORNER, CORNERS, RADIUS oder CENTER) + */ + private void convert(int[] coord, int mode) { + switch(mode) { + case CORNER: break; + case CORNERS: coord[2] -= coord[0]; coord[3] -= coord[1]; break; + case RADIUS: coord[2] *= 2; coord[3] *=2; + case CENTER: coord[0] -= coord[2]/2; coord[1] -= coord[3]/2; + } + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + * Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + * Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void rectMode(int mode) { + rectMode = mode; + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + * Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + * Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als Breite und Höhe der Form. + * ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void ellipseMode(int mode) { + ellipseMode = mode; + } + + + + /** + * Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + * Um eine Linie einzufärben, verwenden Sie die {@link #stroke(int, int, int) stroke()} Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + * Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + * {@link #strokeWeight(double) strokeWeight()} geändert werden. + * @param x1 x-Koordinate des 1. Punktes + * @param y1 y-Koordinate des 1. Punktes + * @param x2 x-Koordinate des 2. Punktes + * @param y2 y-Koordinate des 2. Punktes + */ + public void line(int x1, int y1, int x2, int y2) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + if (stroke > 0) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawLine(x1, y1, x2, y2); + } + repaint(); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, rectMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillRect(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawRect(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, ellipseMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillOval(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawOval(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + int px[] = {x1, x2, x3}; + int py[] = {y1, y2, y3}; + polygon(px, py); + + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + + int px[] = {x1, x2, x3, x4}; + int py[] = {y1, y2, y3, y4}; + polygon(px, py); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + + public void polygon(int[] x, int[] y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(fillcolor != null) { + + g.setColor(fillcolor); + g.fillPolygon(x,y, y.length); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawPolygon(x, y, x.length); + } + repaint(); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + ellipse(x,y,1, 1); + + } + + // ----------------------------------------- Schriftdarstellung ----------------------------------------------- + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param s Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String s, int x, int y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(pencolor != null) { + g.setColor(fillcolor); + g.setStroke(new BasicStroke((float) stroke)); + g.setFont(textfont); + g.drawString(s, x, y); + } + repaint(); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + this.textfont = font; + } + + + // ----------------------------------------- Farbfestlegungen ----------------------------------------------- + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(String color) { + try{ + return new Color( + Integer.valueOf( color.substring( 0, 2 ), 16 ), + Integer.valueOf( color.substring( 2, 4 ), 16 ), + Integer.valueOf( color.substring( 4, 6 ), 16 ) ); + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(int color) { + try{ + if(color >=0 && color < 256) { + return new Color(color,color,color); + } else { + int r = color / 0x010000 % 0xFF; + int g = color / 0x000100 % 0xFF; + int b = color % 0xFF; + System.out.println(""+r+","+g+","+b); + return new Color(r, g, b ); + } + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + this.pencolor = decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + this.pencolor=decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + this.pencolor = new Color(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + this.pencolor = null; + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + this.stroke = width; + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + this.fillcolor = decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + this.fillcolor=decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + this.fillcolor = new Color(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + this.fillcolor = null; + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + if(c < 256) { + this.background=new Color(c,c,c); + } else { + int r = c / 0x010000; + int g = c / 0x000100 % 0xFF; + int b = c % 0xFF; + this.background= new Color(r, g, b ); + } + + this.clear(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + this.background=new Color(r,g,b); + this.clear(); + } + + +// ----------------------------------------- Dateioperationen ----------------------------------------------- + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + try{ + this.image = ImageIO.read(new File(filename)); + this.background = decode("D0D0D0"); + this.pencolor = new Color(0,0,0); + this.fillcolor = null; + this.stroke = 1; + this.repaint(); + + } catch(Exception e) { + System.out.println("Fehler beim Einlesen der Bilddatei"); + } + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + try{ + String[] fn = filename.split("\\."); + if (fn.length== 1) { + ImageIO.write(image, "PNG", new File(filename+".png")); + } else { + + if (fn.length == 2 && (fn[1].toUpperCase().equals("PNG") || + fn[1].toUpperCase().equals("GIF"))){ + ImageIO.write(image, fn[1], new File(filename)); + }else { + System.out.println("Unbekanntes Bildformat"); + } + } + + } catch(Exception e) { + System.out.println("Fehler beim Speichern"); + } + } + + +// ----------------------------------------- Sonstiges ----------------------------------------------- + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + + public Color[][] getPixelArray() { + Color[][] pixel = new Color[image.getWidth()][image.getHeight()]; + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + pixel[x][y] = new java.awt.Color(image.getRGB(x,y)); + } + } + return pixel; + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + size(pixel.length,pixel[0].length); + Graphics2D g = (Graphics2D) image.getGraphics(); + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + g.setColor(pixel[x][y]); + g.fillRect(x, y, 1, 1); + } + } + repaint(); + } + + /** + * Hilfsfunktion zum Verzögern der Ausgabe + * @param millis Wartezeit in Millisekunden + */ + public void delay(int millis) { + try{ + Thread.sleep(millis); + + } catch(Exception e) { + + } + + } + + + +} diff --git a/04_loesungen/03_javaeditor/alg13_maximumsuche_loesung/PictureViewer.java b/04_loesungen/03_javaeditor/alg13_maximumsuche_loesung/PictureViewer.java new file mode 100644 index 0000000..9e6b151 --- /dev/null +++ b/04_loesungen/03_javaeditor/alg13_maximumsuche_loesung/PictureViewer.java @@ -0,0 +1,505 @@ +/** + * Zeigt ein Bild in einem Scrollbereich an. + * Es ist möglich das Bild zu zoomen und mehrere Versionen des Bildes zu speichern, um eine "Rückgängig" Operation durchzuführen. + * @author Thomas Schaller + * @version 1.0 vom 01.02.2019 + */ + +import java.awt.*; +import java.awt.event.*; +import javax.swing.*; +import java.awt.image.*; +import java.util.Vector; + +public class PictureViewer extends JScrollPane +{ + + // das aktuelle Bild + private Picture picture; + + // Bilder für den Züruck-Modus speichern + private static final int ANZ_BACK = 20; + private Vector history; + + // Zeichenfläche + private ImageIcon scrollImageIcon; + private JLabel imageLabel; + + // Zoom Faktor + private double zoomFactor; + public static final int FIT = -1; + public static final int NORMAL = 1; + + + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der Größe 1000x1000 + */ + public PictureViewer() { + this(1000,1000); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public PictureViewer(int width, int height) { + this(width,height, "D0D0D0"); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + * @param background Farbe des Hintergrunds als HEX-String (z.B. "FF3A45") + */ + public PictureViewer(int width, int height, String background) { + this(new Picture(width,height, background)); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild aus einer Bilddatei + * @param filename Name des Bildes + */ + public PictureViewer(String filename) { + this(new Picture(filename)); + } + + /** + * Erzeugt ein ScrollPanel und zeigt das Bild-Objekt an + * @param picture anzuzeigendes Bild + */ + public PictureViewer(Picture picture) + { + this.picture=picture; + + zoomFactor=1; + + scrollImageIcon = new ImageIcon(picture.getImage().getScaledInstance(picture.getImage().getWidth(), picture.getImage().getHeight(), Image.SCALE_FAST)); + imageLabel = new JLabel(scrollImageIcon); + imageLabel.setVerticalAlignment(JLabel.CENTER); + imageLabel.setHorizontalAlignment(JLabel.CENTER); + setViewportView(imageLabel); + + this.setBorder(BorderFactory.createLineBorder(Color.black)); + picture.setObserver(this); + history = new Vector(); + + } + + /** + * Setzt das anzuzeigende Bild neu + * @param picture anzuzeigendes Bild + */ + public void setImage(Picture picture) { + this.history = new Vector(); + this.picture = picture; + setZoom(NORMAL); + } + + /** + * Speichert das übergebene Bild in der History. + * @param b zu speicherndes Bild + */ + public void pushImage() { + if( this.ANZ_BACK > 0) { + if(history.size() == this.ANZ_BACK) { + history.removeElementAt(0); + } + + BufferedImage b = new BufferedImage(picture.getWidth(), picture.getHeight(), picture.getImage().getType()); + Graphics g = b.getGraphics(); + g.drawImage(picture.getImage(), 0, 0, null); + g.dispose(); + + history.add(b); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + private void popImage() { + int anz = history.size(); + if(anz>0) { + BufferedImage img = history.get(anz-1); + history.removeElementAt(anz-1); + picture.setImage(img); + setZoom(zoomFactor); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + public void back() { + popImage(); + } + + /** + * Setzt das angezeigt Bild neu und beachtet dabei den Zoomfaktor. + */ + public void repaint() { + if( picture != null) { + double factor= zoomFactor; + if (zoomFactor == FIT) { + double factorw = ((double) getWidth()-2) / picture.getWidth(); + double factorh = ((double) getHeight()-2) / picture.getHeight(); + factor = Math.min(factorw, factorh); + } + int width = (int) (picture.getWidth()*factor); + int height = (int) (picture.getHeight()*factor); + + + + scrollImageIcon.setImage(picture.getImage().getScaledInstance(width, height, Image.SCALE_DEFAULT)); + revalidate(); + } + } + + /** + * Setzt den Zoom-Faktor für das Bild. + * Als Zoomfaktor sind auch die Konstanten Bildanzeiger.FIT (auf Bildschirmgröße zoomen) und Bildanzeiger.NORMAL (100%) möglich. + * @param factor Zoomfaktor (1.0 = 100%). + */ + public void setZoom(double factor) + { + zoomFactor = factor; + repaint(); + } + + + // Wrappermethoden + /** + * Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + * Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + * der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu. + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public void size(int width, int height){ + picture.size(width, height); + } + + /** + * Liefert die Breite des Bildes zurück. + * @return Breite des Bildes + */ + public int getImageWidth() { + return picture.getWidth(); + } + + /** + * Liefert die Höhe des Bildes zurück. + * @return Höhe des Bildes + */ + public int getImageHeight() { + return picture.getHeight(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + picture.background(c); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + picture.background(r,g,b); + } + + /** + * Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + * Um eine Linie einzufärben, verwenden Sie die {@link #stroke(int, int, int) stroke()} Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + * Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + * {@link #strokeWeight(double) strokeWeight()} geändert werden. + * @param x1 x-Koordinate des 1. Punktes + * @param y1 y-Koordinate des 1. Punktes + * @param x2 x-Koordinate des 2. Punktes + * @param y2 y-Koordinate des 2. Punktes + */ + public void line(int x1, int y1, int x2, int y2) { + picture.line(x1,y1,x2,y2); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + picture.rect(a,b,c,d); + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + picture.ellipse(a,b,c,d); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + picture.triangle(x1,y1,x2,y2,x3,y3); + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + picture.quad(x1,y1,x2,y2,x3,y3,x4,y4); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + public void polygon(int[] x, int[] y) { + picture.polygon(x,y); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + picture.point(x,y); + + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + * Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + * Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void rectMode(int mode) { + picture.rectMode(mode); + } + + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + * Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + * Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als Breite und Höhe der Form. + * ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void ellipseMode(int mode) { + picture.ellipseMode(mode); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + picture.stroke(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + picture.noStroke(); + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + picture.strokeWeight(width); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + picture.fill(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + picture.noFill(); + } + + /** + * Löscht den Inhalt des Bildes. + * Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt. + */ + public void clear(){ + picture.clear(); + } + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + picture.load(filename); + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + picture.save(filename); + } + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param t Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String t, int x, int y) { + picture.text(t,x,y); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + picture.textFont(font); + } + + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + public Color[][] getPixelArray() { + return picture.getPixelArray(); + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + picture.setPixelArray(pixel); + } + + + +} diff --git a/04_loesungen/03_javaeditor/alg13_maximumsuche_loesung/Table.java b/04_loesungen/03_javaeditor/alg13_maximumsuche_loesung/Table.java new file mode 100644 index 0000000..ee5a211 --- /dev/null +++ b/04_loesungen/03_javaeditor/alg13_maximumsuche_loesung/Table.java @@ -0,0 +1,894 @@ +/** + * Die Klasse Table vereinfacht den Zugriff auf CSV-Dateien. + * Die Klassen Table und TableRow ermöglichen einen einfachen Zugriff auf tabellenbasierte + * Dokumente. + * + * @author Thomas Schaller + * @version 1.0 vom 01.02.2019 + */ + +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.ArrayList; +import java.io.*; +import java.util.Scanner; + +import org.jdom.Document; +import org.jdom.Element; +import org.jdom.Attribute; +import org.jdom.JDOMException; +import org.jdom.input.SAXBuilder; +import org.jdom.output.XMLOutputter; +import org.jdom.output.Format; + +public class Table +{ + // Standardtrennzeichen für Spalten + private static final char DEFAULT_SEPARATOR = ';'; + // Standardmarkierung für Texte + private static final char DEFAULT_QUOTE = '"'; + // Standardtrennzeichen für Dezimalzahlen + private static final char DEFAULT_COMMA = ','; + + // mögliche Spaltentypen + private static final String UNKNOWN ="UNKOWN"; + private static final String INT = "INTEGER"; + private static final String DOUBLE = "DOUBLE"; + private static final String FLOAT = "FLOAT"; + + // interne Verwaltung des Dokuments als JDOM-Document-Objekt + private Document doc; + // Verweis auf Element für Kopfzeile + private Element header; + // Ende Attribute + + /** + * Erzeugt leeres Tabellen-Dokument. + */ + public Table() { + this.doc = new Document(); + doc.setRootElement(new Element("CSV-Data")); + this.header = new Element("Header"); + doc.getRootElement().addContent(header); + } + + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei und erstellt ein Tabellenobjekt mit seinen Werten. + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public Table(String filename, String options, char separator, char quote) { + loadCSV(filename, options, separator, quote); + } + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei und erstellt ein Tabellenobjekt mit seinen Werten (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + */ + public Table(String filename, String options) { + loadCSV(filename, options); + } + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei ohne Kopfzeile und erstellt ein Tabellenobjekt mit seinen Werten (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public Table(String filename) { + loadCSV(filename); + } + + // Anfang Methoden + /** + * Liest den Inhalt einer CSV-Datei ohne Kopfzeile (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public void loadCSV(String filename) { + loadCSV(filename, ""); + } + + /** + * Liest den Inhalt einer CSV-Datei (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + */ + public void loadCSV(String filename, String options) { + loadCSV(filename, options, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** + * Liest den Inhalt einer CSV-Datei. + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public void loadCSV(String filename, String options, char separator, char quote) { + doc = new Document(); + doc.setRootElement(new Element("CSV-Data")); + header = new Element("Header"); + doc.getRootElement().addContent(header); + try { + File f = new File(filename); + Scanner scanner = new Scanner(new File(filename)); + if(options.toLowerCase().contains("header") && scanner.hasNext()) { + List entries = parseLine(scanner.nextLine(), separator, quote); + int i= 0; + for(String s : entries) { + Element entry = new Element("Column"); + header.addContent(entry); + entry.setText(s); + entry.setAttribute("type", "unknown"); + i++; + } + } + + List cols = header.getChildren(); + + while (scanner.hasNext()) { + Element line = new Element("Row"); + doc.getRootElement().addContent(line); + List entries = parseLine(scanner.nextLine(), separator, quote); + int i= 0; + + for(String s : entries) { + + if(i==cols.size()) { + Element entry = new Element("Column"); + entry.setAttribute("type", "unknown"); + header.addContent(entry); + cols = header.getChildren(); + } + + Element entry = new Element("Entry"); + entry.setText(s); + line.addContent(entry); + i++; + } + } + scanner.close(); + + } catch (Exception e) { + System.out.println("Fehler beim Lesen der CSV-Datei"); + } + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei ohne Kopfzeile (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public void saveCSV(String filename) { + saveCSV(filename, ""); + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthalten, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile haben soll, + * dann lassen Sie einfach die Option "header" weg. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile haben soll. + * @param filename Dateiname der CSV-Datei. + */ + public void saveCSV(String filename, String options) { + saveCSV(filename, options, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei. + * Wenn die Datei eine Kopfzeile enthalten, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile haben soll, + * dann lassen Sie einfach die Option "header" weg. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile haben soll. + * @param filename Dateiname der CSV-Datei. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public void saveCSV(String filename, String options, char separator, char quote){ + try{ + File f = new File(filename); + PrintStream outputFile = new PrintStream (f); + System.out.println("Speicher in : "+f.getAbsolutePath()); + List columns = header.getChildren(); + String sq = ""+quote; + String ss = ""+separator; + if(quote =='"') sq = "\""; + if(separator =='"') ss = "\""; + + if(options.toLowerCase().contains("header")) { + String h = ""; + for(Element c : columns) { + h += ss + sq + c.getText()+sq; + } + outputFile.println(h.substring(1)); + } + for(int i = 0; i parseLine(String cvsLine) { + return parseLine(cvsLine, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** HIlfsfunktion für die Analyse einer Dateizeile + * @param cvsLine Zeile aus der Datei + * @param sparator Trennzeichen für die Spalten + * @return Liste von String für die einzelnen Spalten + */ + private List parseLine(String cvsLine, char separator) { + return parseLine(cvsLine, separator, DEFAULT_QUOTE); + } + + /** HIlfsfunktion für die Analyse einer Dateizeile + * @param cvsLine Zeile aus der Datei + * @param sparator Trennzeichen für die Spalten + * @param customQuote Kennung für Strings + * @return Liste von String für die einzelnen Spalten + */ + private List parseLine(String cvsLine, char separator, char customQuote) { + + List result = new ArrayList<>(); + + //if empty, return! + if (cvsLine == null && cvsLine.isEmpty()) { + return result; + } + + //ggf. Default-Value laden + if (customQuote == ' ') { + customQuote = DEFAULT_QUOTE; + } + + if (separator == ' ') { + separator = DEFAULT_SEPARATOR; + } + + StringBuffer curVal = new StringBuffer(); + boolean inQuotes = false; + boolean startCollectChar = false; + boolean doubleQuotesInColumn = false; + + char[] chars = cvsLine.toCharArray(); + + for (char ch : chars) { + + if (inQuotes) { // aktueller Text ist in Quotes eingeschlossen + startCollectChar = true; + + if (ch == customQuote) { // Quotes werden beendet, aber Achtung bei "" => Metazeichen + inQuotes = false; + if (ch == '\"') { + doubleQuotesInColumn = true; + } + + } else { + + if (ch == '\"' && !doubleQuotesInColumn) { + doubleQuotesInColumn = true; + } else { + curVal.append(ch); + doubleQuotesInColumn = false; + } + + } + } else { + if (ch == customQuote) { + + inQuotes = true; + + //Fixed : allow "" in empty quote enclosed + if (ch == '\"'){ + if(doubleQuotesInColumn) { + curVal.append('"'); + doubleQuotesInColumn = false; + } else doubleQuotesInColumn = true; + + + } + } + else { + doubleQuotesInColumn = false; + if (ch == separator) { + + result.add(curVal.toString()); + + curVal = new StringBuffer(); + startCollectChar = false; + + } else if (ch == '\r') { + //ignore LF characters + continue; + } else if (ch == '\n') { + //the end, break! + break; + } else { + curVal.append(ch); + } + } + } + + } + result.add(curVal.toString()); + return result; + } + + /** + * Sucht die Nummer einer durch Namen gegebenen Spalte. + * @param name Name der Spalte + * @return Nummer der Spalte + */ + + private int findColumnNumber(String name) { + List columns = header.getChildren(); + int i = 0; + for(Element c : columns) { + if (c.getText().toLowerCase().equals(name.toLowerCase())) { + return i; + + } + i++; + } + return -1; + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an. + */ + public void addColumn() { + Element entry = new Element("Column"); + entry.setAttribute("type", Table.UNKNOWN); + header.addContent(entry); + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an und benennt sie. + * @param title Bezeichnung der Spalte + */ + public void addColumn(String title) { + addColumn(); + Element nc = ((List)(header.getChildren())).get(header.getChildren().size()-1); + nc.setText(title); + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an und benennt und typisiert sie. + * @param title Bezeichnung der Spalte + * @param type Typ der Spalte (UNKNOWN, DOUBLE, INTEGER, FLOAT) + */ + public void addColumn(String title, String type) { + addColumn(title); + Element nc = ((List)(header.getChildren())).get(header.getChildren().size()-1); + nc.setAttribute("type", type); + } + + /** + * Löscht eine Spalte. + * @param i Nummer der Spalte. + */ + public void removeColumn(int i) { + List lines = doc.getRootElement().getChildren(); + for(Element l : lines) { + if(l.getChildren().size()>i) l.removeContent(i); + } + } + + /** + * Löscht eine Spalte + * @param name Name der Spalte + */ + public void removeColumn(String name) { + try{ + removeColumn(findColumnNumber(name)); + } catch(Exception e) { System.out.println("Unbekannter Spaltenname");} + } + + /** + * Liefert die Anzahl der Spalten in der Tabelle + * @return Anzahl der Spalten + */ + public int getColumnCount() { + return header.getChildren().size(); + } + + /** + * Liefert die Anzahl der Zeilen in der Tabelle + * @return Anzahl der Zeilen + */ + public int getRowCount() { + return doc.getRootElement().getChildren().size()-1; + } + + /** + * Löscht alle Zeilen der Tabelle. + * Die Spaltenüberschriften und Typen bleiben erhalten. + */ + public void clearRows() { + doc.getRootElement().removeChildren("Row"); + } + + /** + * Fügt eine neue Zeile an das Ende der Tabelle an. + * @return ein TableRow-Objekt für diese neue Zeile + */ + public TableRow addRow() { + Element row = new Element("Row"); + doc.getRootElement().addContent(row); + return new TableRow(doc, row); + } + + /** + * Löscht eine Zeile + * @param i Nummer der Zeile + */ + public void removeRow(int i) { + if(i rows = doc.getRootElement().getChildren(); + return new TableRow(doc, rows.get(i+1)); + } + return null; + } + + /** + * Liefert die ganze Tabelle als Array von TableRow-Objekten + * @return Array von TableRow-Objekten + */ + public TableRow[] rows() { + TableRow[] rows = new TableRow[getRowCount()]; + for(int i = 0; i < getRowCount(); i++) { + rows[i] = getRow(i); + } + return rows; + } + + /** + * Liefert den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param column Spaltennummer + * @return Wert der Zelle + */ + public int getInt(int row, int column) { + return getRow(row).getInt(column); + } + + /** + * Liefert den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param name Name der Spalte + * @return Wert der Zelle + */ + public int getInt(int row, String name) { + return getRow(row).getInt(name); + } + + /** + * Setzt den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param column Spaltennummer + * @param value neuer Wert der Zelle + */ + public void setInt(int row, int column,int value) { + getRow(row).setInt(column, value); + } + + /** + * Setzt den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(int row, String name, int value) { + getRow(row).setInt(name, value); + } + + /** + * Liefert alle Werte einer Zeile als Integer-Array. + * @param row Nummer der Zeile + * @return int-Array, dass alle Werte der Zeile enthält + */ + public int[] getIntRow(int row) { + try{ + TableRow trow = getRow(row); + int anz = getColumnCount(); + int[] r = new int[anz]; + for(int i=0; i) (header.getChildren())).get(i).getText(); + } else { + return ""; + } + } + + /** + * Liefert die Nummer einer Spalte + * @param name Name der Spalte + * @return Nummer der Spalte + */ + public int getColumn(String name) { + List columns = header.getChildren(); + int i = 0; + while (i < columns.size()) { + if (columns.get(i).getText().toLowerCase().equals(name.toLowerCase())) { + return i; + } + i++; + } // end of while + return -1; + } + + + /** + * Erzeugt eine neue Zeile mit i Spalten + * Wenn bisher nicht genügend Spalten vorhanden sind, werden automatisch neue Spalten hinzugefügt (auch zum Header) + * @param i Anzahl der Spalten + */ + private Element buildRow(int i) { + List columns = header.getChildren(); + Element entry=null; + for(int j=0; j<=i; j++) { + + if(j==columns.size()) { + Element h = new Element("Column"); + h.setAttribute("type", "unknown"); + header.addContent(h); + columns = header.getChildren(); + } + if(j==current.getChildren().size()) { + entry = new Element("Entry"); + current.addContent(entry); + + } + + } + return entry; + + } + + /** + * Erzeugt eine neue Zeile. + * Es werden genügend Spalten erzeugt, dass ein Wert in Spalte "name" eingetragen werden kann + * @param name Name der Spalte + */ + private Element buildRow(String name) { + List columns = header.getChildren(); + int i = 0; + for(Element c: columns) { + + if(c.getText().toLowerCase().equals(name.toLowerCase())) { + return buildRow(i); + } + i++; + } + return null; + + } + + /** + * Liefert den Wert einer Zelle als String + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public String getString(int i) { + if(i >= current.getContent().size()) return ""; + Element e = (Element) current.getContent(i) ; + if(e!=null) { + return e.getText(); + } else { + return ""; + } + } + + /** + * Liefert den Wert einer Zelle als String + * @param name Name der Spalte + * @return Wert der Zelle + */ + public String getString(String name) { + return getString(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als String + * @param i Nummer der Spalte + * @param text neuer Wert der Zelle + */ + public void setString(int i, String text) { + + Element e = buildRow(i); + if(e!=null) e.setText(text); + } + + /** + * Setzt den Wert einer Zelle als String + * @param name Name der Spalte + * @param text neuer Wert der Zelle + */ + public void setString(String name, String text) { + Element e = buildRow(name); + if(e!=null) e.setText(text); + } + + + /** + * Liefert den Wert einer Zelle als Int-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public int getInt(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Integer.parseInt(e.getText()); + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Int-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public int getInt(String name) { + return getInt(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Int-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(int i,int value) { + + Element e = buildRow(i); + if(e!=null) e.setText(""+value); + } + + /** + * Setzt den Wert einer Zelle als Int-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(String name, int value) { + Element e = buildRow(name); + if(e!=null) e.setText(""+value); + } + + /** + * Liefert den Wert einer Zelle als Float-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public float getFloat(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Float.parseFloat(e.getText().replace(",",".")); + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Float-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public float getFloat(String name) { + return getFloat(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Float-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setFloat(int i,float value) { + + Element e = buildRow(i); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Setzt den Wert einer Zelle als Float-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setFloat(String name, float value) { + Element e = buildRow(name); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Liefert den Wert einer Zelle als Double-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public double getDouble(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Double.parseDouble(e.getText().replace(",",".")); + + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Double-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public double getDouble(String name) { + return getDouble(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Double-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setDouble(int i,double value) { + + Element e = buildRow(i); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Setzt den Wert einer Zelle als Double-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setDouble(String name, double value) { + Element e = buildRow(name); + if(e!=null) e.setText(format.format(value)); + } + +} diff --git a/04_loesungen/03_javaeditor/alg13_maximumsuche_loesung/XML.java b/04_loesungen/03_javaeditor/alg13_maximumsuche_loesung/XML.java new file mode 100644 index 0000000..c06c490 --- /dev/null +++ b/04_loesungen/03_javaeditor/alg13_maximumsuche_loesung/XML.java @@ -0,0 +1,637 @@ +/** + * Klasse zum Vereinfachten Zugriff auf XML-Dokumente + * Diese Klasse ist für den Einsatz in der Schule gedacht und soll den Schülern + * einen einfachen Zugriff auf XML-Dokumente ermöglichen. Die zur Verfügung + * stehenden Befehle sind wie in Processing realisiert. + * Dabei ist jeder Teilbaum des Dokuments wieder als XML-Objekt zugreifbar, das + * intern auf die gleiche XML-Dokumentstruktur zugreift. + * Dies ermöglicht bei unsachgemäßem Gebrauch die XML-Struktur zu zerstören. Im + * normalen Gebrauch sollte dies aber nicht relevant sein. + * + * Benötigt: jdom-1.1.3.jar + + * @author Thomas Schaller + * @version 1.0 vom 31.01.2019 + */ +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.ArrayList; +import java.io.*; + +import org.jdom.Document; +import org.jdom.Element; +import org.jdom.Attribute; +import org.jdom.JDOMException; +import org.jdom.input.SAXBuilder; +import org.jdom.output.XMLOutputter; +import org.jdom.output.Format; + +public class XML { + // Anfang Attribute + // XML-Dokumentstruktur + private Document doc; + // Zeiger auf das aktuelle Element + private Element current; + // Ende Attribute + + /** + * Erzeugt ein leeres XMLDokument + */ + public XML() { + this.doc = new Document(); + this.current = null; + } + + /** + * Erzeugt ein XML-Dokument aus einer Datei + * @param filename Dateiname der XML-Datei + */ + public XML(String filename) { + loadXML(filename); + } + + /** + * interner Konstruktor, um ein XML Objekt zu erzeugen, das auf einen bestimmten Knoten verweist + * @param doc die XML-Dokumentstruktur + * @param current Zeiger auf das aktuelle Element + */ + private XML(Document doc, Element current) { + this.doc = doc; + this.current = current; + } + + // Anfang Methoden + /** Öffnet das durch den Dateinamen gegebene Dokument + * @param filename Dateiname des XML-Files + */ + public void loadXML(String filename) { + doc = null; + File f = new File(filename); + + try { + // Das Dokument erstellen + SAXBuilder builder = new SAXBuilder(); + doc = builder.build(f); + + } catch (JDOMException e) { + e.printStackTrace(); + + } catch (IOException e) { + e.printStackTrace(); + } + // Zeiger im Baum auf Root-Element + current = doc.getRootElement(); + } + + /** Speichert den XML-Baum im angegebenen Dateinamen + * @param filename Dateiname des XML-Files + */ + public void saveXML(String filename) { + try { + // new XMLOutputter().output(doc, System.out); + XMLOutputter xmlOutput = new XMLOutputter(); + + // display nice nice + xmlOutput.setFormat(Format.getPrettyFormat()); + File f = new File(filename); + FileOutputStream outputFile = new FileOutputStream(f); + System.out.println("Speicher in : "+f.getAbsolutePath() ); + xmlOutput.output(doc, outputFile); + outputFile.close(); + System.out.println("File Saved!"); + } catch (IOException io) { + System.out.println(io.getMessage()); + } + + } + + //----------------------------------------------- Zeigerbewegungen -------------------------------------------------- + /** + * liefert ein XML-Objekt, das auf den Vaterknoten des aktuellen Elements zeigt. + * @return Vater des aktuellen Objekts. + */ + public XML getParent() { + if(current != null) { + Element parent = current.getParentElement(); + if (parent == null) { + return null; + } else { + return new XML(doc, parent); + } + } + return null; + } + + /** + * Überprüft, ob das Element irgendwelche Kinder hat oder nicht, und gibt das Ergebnis als boolean zurück. + * @return true, wenn Kinder vorhanden sind, sonst false + */ + public boolean hasChildren() { + if (current == null) { + return doc.hasRootElement(); + } else { + return current.getChildren().size()>0; + } + } + + /** + * Ermittelt die Namen aller Kinder des Elements und gibt die Namen als ein Array von Strings zurück. + * Dies ist dasselbe wie das Durchlaufen und Aufrufen von getName() auf jedem untergeordneten Element einzeln. + * @return Liste aller Namen der Kinder + */ + public String[] listChildren() { + if (current == null) { + if(doc.hasRootElement()) { + String[] names = new String[0]; + names[0] = doc.getRootElement().getName(); + return names; + } else { + return null; + } + } else { + List ch_element = current.getChildren(); + String[] names = new String[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + names[i] = ch_element.get(i).getName(); + } + return names; + } + } + + /** + * Liefert alle Kinder des Elements als Array von XML-Objekten. + * @return Array der Kinder als XML-Objekte + */ + public XML[] getChildren() { + if (current == null) { + if(doc.hasRootElement()) { + XML[] ch_xml = new XML[1]; + ch_xml[0] = new XML(doc, doc.getRootElement()); + return ch_xml; + } else { + return null; + } + } else { + List ch_element = current.getChildren(); + XML[] ch_xml = new XML[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + ch_xml[i] = new XML(doc, ch_element.get(i)); + } + return ch_xml; + } + } + + /** + * Liefert bestimmte Kinder des Elements als Array von XML-Objekten. + * Die Methode gibt dabei alle Kinder zurück, die dem angegebenen Namen entsprechen. + * @param name Name der gesuchten Kind-Objekte + * @return Array der Kinder als XML-Objekte + */ + public XML[] getChildren(String name) { + if (current == null) { + if(doc.hasRootElement()) { + XML[] ch_xml = new XML[1]; + ch_xml[0] = new XML(doc, doc.getRootElement()); + if(doc.getRootElement().getName().equals(name)){ + return ch_xml; + } else { + return null; + } + } else { + return null; + } + } else { + List ch_element = current.getChildren(name); + XML[] ch_xml = new XML[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + ch_xml[i] = new XML(doc, ch_element.get(i)); + } + return ch_xml; + } + } + + /** + * Liefert das erste Kind des Elements mit einem bestimmten Namen. + * Die Methode gibt das erste Kind zurück, das dem angegebenen Namen entsprechen. + * @param name Name des gesuchten Kind-Objektes + * @return Kind als XML-Objekt + */ + + public XML getChild(String name) { + if (current == null) { + Element e = doc.getRootElement(); + if (e.getName().equals(name)) { + return new XML(doc, e); + } else { + return null; + } + } else { + String[] names = name.split("/"); + Element e = current; + int i = 0; + while(i < names.length) { + e = e.getChild(names[i]); + if (e==null) return null; + i++; + } + return new XML(doc, e); + } + } + + /** + * Liefert das i. Kind des Elements. + * Die Methode gibt das i. Kind des aktuellen Elements zurück. + * @param i Nummer des Kindes + * @return Kind als XML-Objekt + */ + public XML getChild(int i) { + if (current == null) { + return new XML(doc, doc.getRootElement()); + } else { + List ch_element = current.getChildren(); + if (i>=ch_element.size()) return null; + return new XML(doc, ch_element.get(i)); + } + } + + //--------------------------------------------------- Methoden für das aktuelle Element ------------------------------------------------- + /** + * Frage den Namen des aktuellen Elements ab + * @return Namen des Elements + */ + public String getName() { + if (current==null) return ""; + return current.getName(); + } + + /** + * Setze den Namen des aktuellen Elements. + * @param name Neuer Name des Elements + */ + public void setName(String name) { + if (current==null) return; + current.setName(name); + } + + /** + * liefert die Anzahl der Attribute eines Elements. + * @return Anzahl des Attribute + */ + public int getAttributeCount() { + if (current == null) return 0; + return current.getAttributes().size(); + } + + /** + * liefert zurück, ob das aktuelle Element Attribute hat . + * @return true, wenn es Attribute gibt + */ + public boolean hasAttribute() { + if (current == null) return false; + return current.getAttributes().size()>0; + } + + /** + * Ruft alle Attribute des angegebenen Elements ab und gibt sie als Array von Strings zurück. + * @return Liste der Attributnamen + */ + public String[] listAttributes() { + if (current == null) return null; + List attr = current.getAttributes(); + String[] names = new String[attr.size()]; + for(int i=0; i < attr.size() ; i++) { + names[i] = attr.get(i).getName(); + } + return names; + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs + */ + public String getString(String attribute) { + if (current==null) return ""; + return current.getAttributeValue(attribute); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs + */ + public String getString(String attribute, String defaultValue) { + if (current==null) return defaultValue; + return current.getAttributeValue(attribute,defaultValue); + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param text neuer Wert des Attributs + */ + public void setString(String attribute, String text) { + if (current==null) return; + current.setAttribute(attribute, text); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Integer-Zahl + */ + public int getInt(String attribute) { + if (current==null) return 0; + try{ + int i = Integer.parseInt(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als Integer-Zahl + */ + public int getInt(String attribute, int defaultValue) { + if (current==null) return defaultValue; + try{ + int i = Integer.parseInt(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setInt(String attribute, int value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Float-Zahl + */ + public float getFloat(String attribute) { + if (current==null) return 0; + try{ + float i = Float.parseFloat(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als Float-Zahl + */ + public float getFloat(String attribute, float defaultValue) { + if (current==null) return defaultValue; + try{ + float i = Float.parseFloat(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setFloat(String attribute, float value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Double-Zahl + */ + public double getDouble(String attribute) { + if (current==null) return 0; + try{ + double i = Double.parseDouble(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + +/** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als double-Zahl + */ + public double getDouble(String attribute, double defaultValue) { + if (current==null) return defaultValue; + try{ + double i = Double.parseDouble(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setDouble(String attribute, double value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt den Inhalt/Text des aktuellen Elements ab + * @return Inhalt des Elements + */ + public String getContent() { + if ( current==null) return ""; + + return current.getText(); + } + + /** + * Fragt den Inhalt/Text des aktuellen Elements ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardtext + * @return Inhalt des Elements + */ + public String getContent(String defaultValue) { + if ( current==null) return defaultValue; + String t = current.getText(); + if(t.equals("")) t = defaultValue; + return t; + } + + /** + * Setzt den Inhalt/Text des aktuellen Elements + * @param text Neuer Inhalt des Elements + */ + public void setContent(String text) { + if ( current==null) return; + current.setText(text); + } + + + /** + * Fragt den Inhalt des aktuellen Elements als Integerzahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ public int getIntContent(int defaultValue) { + if ( current==null) return defaultValue; + try{ + int i = Integer.parseInt(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Integerzahl ab + * @return Inhalt des Elements + */ + public int getIntContent() { + if ( current==null) return 0; + try{ + int i = Integer.parseInt(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setIntContent(int value) { + if ( current==null) return; + current.setText(""+value); + } + + + /** + * Fragt den Inhalt des aktuellen Elements als Floatzahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ + public float getFloatContent(float defaultValue) { + if ( current==null) return defaultValue; + try{ + float i = Float.parseFloat(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Floatzahl ab + * @return Inhalt des Elements + */ + public float getFloatContent() { + if ( current==null) return 0; + try{ + float i = Float.parseFloat(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setFloatContent(float value) { + if ( current==null) return; + current.setText(""+value); + } + +/** + * Fragt den Inhalt des aktuellen Elements als Doublezahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ + public double getDoubleContent(double defaultValue) { + if ( current==null) return defaultValue; + try{ + double i = Double.parseDouble(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Doublezahl ab + * @return Inhalt des Elements + */ + public double getDoubleContent() { + if ( current==null) return 0; + try{ + double i = Double.parseDouble(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setDoubleContent(double value) { + if ( current==null) return; + current.setText(""+value); + } + + + // ----------------------------------------------- XML-Struktur aufbauen ------------------------------------------------ + /** Erzeuge neues Element nach der aktuellen Position und setze dieses als aktuelles Element + * @param name Name des neuen Elements + * @return neues Element als XML-Objekt + */ + public XML addChild(String name) { + Element e = new Element(name); + if(current == null){ // man ist auf Root-Ebene + doc.setRootElement(e); + + } + else { + current.addContent(e); + } // end of if-else + return new XML(doc, e); + } + + /** + * liefert das aktuelle Element als jdom-Element-Objekt + * @return aktuelles Element + */ + private Element getCurrent() { + return current; + } + + /** + * löscht ein Kind des aktuellen Knotens. + * Ist kid kein Kind des aktuellen Elements passiert gar nichts. + * @param kid XML-Objekt des Kindes + */ + public void removeChild(XML kid) { + if (current == null) return; + Element e = kid.getCurrent(); + int index = current.indexOf(e); + if(index >= 0) { current.removeContent(e);} + } + +} diff --git a/04_loesungen/03_javaeditor/alg13_maximumsuche_loesung/jdom-1.1.3.jar b/04_loesungen/03_javaeditor/alg13_maximumsuche_loesung/jdom-1.1.3.jar new file mode 100644 index 0000000..a287727 Binary files /dev/null and b/04_loesungen/03_javaeditor/alg13_maximumsuche_loesung/jdom-1.1.3.jar differ diff --git a/04_loesungen/03_javaeditor/alg13_maximumsuche_loesung/punkte.csv b/04_loesungen/03_javaeditor/alg13_maximumsuche_loesung/punkte.csv new file mode 100644 index 0000000..cb49a3f --- /dev/null +++ b/04_loesungen/03_javaeditor/alg13_maximumsuche_loesung/punkte.csv @@ -0,0 +1,36 @@ +"Name","Punkte" +Niko,216 +Klaus,591 +Anna,857 +Lena,180 +Winfried,168 +Niko,216 +Klaus,591 +Anna,857 +Lena,180 +Winfried,168 +Niko,216 +Klaus,591 +Anna,857 +Lena,180 +Winfried,168 +Niko,216 +Klaus,591 +Anna,857 +Lena,180 +Winfried,168 +Niko,216 +Klaus,591 +Anna,857 +Lena,180 +Winfried,168 +Niko,216 +Klaus,591 +Anna,857 +Lena,180 +Winfried,168 +Niko,216 +Klaus,591 +Anna,857 +Lena,180 +Winfried,168 diff --git a/04_loesungen/03_javaeditor/alg13_maximumsuche_loesung/testfall1.csv b/04_loesungen/03_javaeditor/alg13_maximumsuche_loesung/testfall1.csv new file mode 100644 index 0000000..92c538f --- /dev/null +++ b/04_loesungen/03_javaeditor/alg13_maximumsuche_loesung/testfall1.csv @@ -0,0 +1,20 @@ +"Name","Punkte" +Spieler1,0 +Spieler1,6 +Spieler2,19 +Spieler6,1 +Spieler4,45 +Spieler3,23 +Spieler3,12 +Spieler2,44 +Spieler1,72 +Spieler5,12 +Spieler6,4 +Spieler7,2 +Spieler4,98 +Spieler3,21 +Spieler3,12 +Spieler2,32 +Spieler1,12 +Spieler5,44 +Spieler3,12 diff --git a/04_loesungen/03_javaeditor/alg13_maximumsuche_loesung/testfall2.csv b/04_loesungen/03_javaeditor/alg13_maximumsuche_loesung/testfall2.csv new file mode 100644 index 0000000..091c003 --- /dev/null +++ b/04_loesungen/03_javaeditor/alg13_maximumsuche_loesung/testfall2.csv @@ -0,0 +1,20 @@ +"Name","Punkte" +Spieler1,-5 +Spieler1,-6 +Spieler2,-19 +Spieler6,-1 +Spieler4,-45 +Spieler3,-23 +Spieler3,-12 +Spieler2,-44 +Spieler1,-72 +Spieler5,-12 +Spieler6,-4 +Spieler7,-2 +Spieler4,-98 +Spieler3,-21 +Spieler3,-12 +Spieler2,-32 +Spieler1,-12 +Spieler5,-44 +Spieler3,-12 diff --git a/04_loesungen/03_javaeditor/alg13_maximumsuche_loesung/testfall3.csv b/04_loesungen/03_javaeditor/alg13_maximumsuche_loesung/testfall3.csv new file mode 100644 index 0000000..3bc26b2 --- /dev/null +++ b/04_loesungen/03_javaeditor/alg13_maximumsuche_loesung/testfall3.csv @@ -0,0 +1,2 @@ +"Name","Punkte" +Spieler1,45 diff --git a/04_loesungen/03_javaeditor/alg13_maximumsuche_loesung/testfall4.csv b/04_loesungen/03_javaeditor/alg13_maximumsuche_loesung/testfall4.csv new file mode 100644 index 0000000..e74e6d5 --- /dev/null +++ b/04_loesungen/03_javaeditor/alg13_maximumsuche_loesung/testfall4.csv @@ -0,0 +1 @@ +"Name","Punkte" diff --git a/04_loesungen/03_javaeditor/alg13_variante_minimumsuche/Balkendiagramm.java b/04_loesungen/03_javaeditor/alg13_variante_minimumsuche/Balkendiagramm.java new file mode 100644 index 0000000..a7e0d33 --- /dev/null +++ b/04_loesungen/03_javaeditor/alg13_variante_minimumsuche/Balkendiagramm.java @@ -0,0 +1,181 @@ +import java.awt.Font; + +/** + * Balkendiagramm für int-Array, Zahlen werden aus CSV-Datei gelesen, Minimum der Werte wird bestimmt. + * Hinweis zur Benutzung: + * Start des Algorithmus: Klicke den Button Maximumsuche an. + * Start des automatischen Tests: Klicke den Button Testen an. Die Ausgabe erfolgt in der Konsole. + * + * @author Schaller + * @version 29.11.18 + */ +public class Balkendiagramm extends Picture + +{ +// Liste mit allen Werten + int[] zahlen; + String[] namen; + + +// Hilfsvariablen für die Suche + int akt_minimum=-1; // aktuell kleinstes Element + int akt=-1; // aktuell untersuchtes Element + int verzoegerung=1000; // Geschwindigkeit der Ausführung + + // Schriften + Font kleineSchrift; + Font grosseSchrift; + + public Balkendiagramm() { + size(1000, 700); + background(0); + kleineSchrift = new Font( Font.SANS_SERIF, Font.PLAIN, 12 ); + grosseSchrift = new Font( Font.SANS_SERIF, Font.PLAIN, 20 ); + + // Deaktiviere die automatische Neudarstellung nach einem Zeichenbefehl + setAutoRefresh(false); + + // CSV-Datei laden und anzeigen + ladeTabelle("punkte.csv"); + + zeichneBalken(); + } + + + + public void ladeTabelle(String name) { + // Tabelle aus CSV-Datei laden //<>// + Table csv = new Table(name, "header", ',', '"'); + + if (csv != null && csv.getColumnCount()==2) { + + // Initialisiere Arrays, in die alle Zeilen der Tabelle passen + zahlen = new int[csv.getRowCount()]; + namen = new String[csv.getRowCount()]; + + // Fülle die Arrays mit Werten aus der Tabelle + for (int i = 0; i < zahlen.length; i++) { + // Lies Wert aus der i. Zeile und der Spalte "Punkte" bzw. "Name" + zahlen[i] = csv.getInt(i, "Punkte"); + namen[i] = csv.getString(i, "Name"); + } + } + } + + public void zeichneBalken() { + + clear(); + + // Überschrift + fill(255,255,255); + textFont(grosseSchrift); + text("Punkte", 2, 20); + textFont(kleineSchrift); + + // Alle Einträge darstellen + if (zahlen != null) { + for (int i = 0; i< zahlen.length; i++) { + + fill(20,25,165); + // aktuelle Elemente farblich hervorheben + if (i == akt) { + fill(140,230,20); + } + if (i == akt_minimum) { + fill(230,60,140); + } + + // Balkendiagramm zeichnen + if (zahlen[i]>=0) rect(120, 25+i*15, zahlen[i]+1, 13); + + // Beschriftung + fill(255,255,255); + text(namen[i], 2, 35+i*15); + text(""+zahlen[i], 70, 35+i*15); + } + } + refresh(); + } + + + public int minimumsuche() { + // Sind überhaupt Daten da? + if(zahlen.length==0 ) { //<>// + return -1; + } + + // Startwerte setzen + akt_minimum = 0; + akt = 1; + + // Alle Arrayelemente untersuchen + while (akt < zahlen.length) { + // Neu zeichnen, da akt neu gesetzt wurde + zeichneBalken(); + delay(verzoegerung); + // Neues kleinstes Element?? + if (zahlen[akt] < zahlen[akt_minimum]) { + // Dann merke dir das neue + akt_minimum = akt; + // Zeichne Balken neu, da neues kleinstes Element + zeichneBalken(); + delay(verzoegerung); + } + akt = akt + 1; + } + zeichneBalken(); + delay(verzoegerung); + akt=-1; + zeichneBalken(); + delay(verzoegerung); + // Gib Position des kleinsten Elements zurück + return akt_minimum; + } + + public boolean testen() { + boolean allesBestanden = true; + // Testfall 1 + verzoegerung = 0; //<>// + ladeTabelle("testfall1.csv"); + int m1 = minimumsuche(); + if (m1 == 0) { + System.out.println("Minimum korrekt gefunden. In Datei testfall1.csv ist der größte Wert "+ zahlen[m1]+" von "+namen[m1]+" an Position "+m1); + + } else { + System.out.println("Minimum in testfall.csv nicht gefunden. Du ermittelst "+m1+" richtig wäre 12"); + allesBestanden = false; + } + // Testfall 2: negative Zahlen + ladeTabelle("testfall2.csv"); + int m2 = minimumsuche(); + if (m2 == 12) { + System.out.println("Minimum korrekt gefunden. In Datei testfall2.csv ist der größte Wert "+ zahlen[m2]+" von "+namen[m2]+" an Position "+m2); + } else { + System.out.println("Minimum in testfall2.csv nicht gefunden. Du ermittelst "+m2+" richtig wäre 3"); + allesBestanden = false; + } + // Testfall 3: Nur 1 Element + ladeTabelle("testfall3.csv"); + int m3 = minimumsuche(); + if (m3 == 0) { + System.out.println("Minimum korrekt gefunden. In Datei testfall3.csv ist der größte Wert "+ zahlen[m3]+" von "+namen[m3]+" an Position "+m3); + } else { + System.out.println("Minimum in testfall3.csv nicht gefunden. Du ermittelst "+m3+" richtig wäre 0"); + allesBestanden = false; + } + // Testfall 4: Leere Liste + ladeTabelle("testfall4.csv"); + int m4 = minimumsuche(); + if (m4 == -1) { + System.out.println("Minimum korrekt gefunden. Da die Datei keine Spieler enthält wird -1 zurückgegeben."); + } else { + System.out.println("Minimum in testfall4.csv nicht gefunden. Du ermittelst "+m4+" richtig wäre -1, da die Datei leer ist."); + allesBestanden = false; + } + return allesBestanden; + } + + + + +} diff --git a/04_loesungen/03_javaeditor/alg13_variante_minimumsuche/BalkendiagrammGUI.java b/04_loesungen/03_javaeditor/alg13_variante_minimumsuche/BalkendiagrammGUI.java new file mode 100644 index 0000000..d7ddbd7 --- /dev/null +++ b/04_loesungen/03_javaeditor/alg13_variante_minimumsuche/BalkendiagrammGUI.java @@ -0,0 +1,141 @@ +import java.awt.*; +import java.awt.event.*; +import javax.swing.*; +import javax.swing.event.*; + +/** + * + * description + * + * @version 1.0 from 06.10.2018 + * @author + */ + +public class BalkendiagrammGUI extends JFrame { + // Anfang Attribute + private JButton bZeichnen = new JButton(); + private PictureViewer imagePanel1 = new PictureViewer(); + + private JButton bMaximumsuche = new JButton(); + private JButton bTesten = new JButton(); + private Balkendiagramm bild; + private Picture b; + private Timer timer1 = new Timer(1000, null); + // Ende Attribute + + public BalkendiagrammGUI (String title) { + super (title); + setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); + int frameWidth = 768; + int frameHeight = 551; + setSize(frameWidth, frameHeight); + Dimension d = Toolkit.getDefaultToolkit().getScreenSize(); + int x = (d.width - getSize().width) / 2; + int y = (d.height - getSize().height) / 2; + setLocation(x, y); + Container cp = getContentPane(); + cp.setLayout(null); + // Anfang Komponenten + bZeichnen.setBounds(24, 456, 209, 33); + bZeichnen.setText("Balkendiagramm zeichnen"); + bZeichnen.setMargin(new Insets(2, 2, 2, 2)); + bZeichnen.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent evt) { + bZeichnen_ActionPerformed(evt); + } + }); + cp.add(bZeichnen); + imagePanel1.setBounds(24, 16, 705, 409); + cp.add(imagePanel1); + + bMaximumsuche.setBounds(280, 456, 201, 33); + bMaximumsuche.setText("Minimumsuche"); + bMaximumsuche.setMargin(new Insets(2, 2, 2, 2)); + bMaximumsuche.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent evt) { + bMaximumsuche_ActionPerformed(evt); + } + }); + cp.add(bMaximumsuche); + bTesten.setBounds(512, 456, 185, 33); + bTesten.setText("Testen"); + bTesten.setMargin(new Insets(2, 2, 2, 2)); + bTesten.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent evt) { + bTesten_ActionPerformed(evt); + } + }); + cp.add(bTesten); + timer1.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent evt) { + timer1_ActionPerformed(evt); + } + }); + b = new Picture(700,800); + imagePanel1.setImage(b); + b.setObserver(imagePanel1); + timer1.setRepeats(true); + timer1.setInitialDelay(0); + timer1.setDelay(100); + timer1.start(); + addWindowListener(new WindowAdapter() { + public void windowClosed(WindowEvent evt) { + BalkendiagrammGUI_WindowClosed(evt); + } + }); + // Ende Komponenten + setResizable(false); + setVisible(true); + } + + // Anfang Methoden + public void bZeichnen_ActionPerformed(ActionEvent evt) { + bild = new Balkendiagramm(); + imagePanel1.setImage(bild); + bild.setObserver(imagePanel1); + imagePanel1.getVerticalScrollBar().setValue(10); + imagePanel1.getVerticalScrollBar().setValue(0); + imagePanel1.getViewport().repaint(); + } // end of bZeichnen_ActionPerformed + + public void bMaximumsuche_ActionPerformed(ActionEvent evt) { + bild = new Balkendiagramm(); + imagePanel1.setImage(bild); + bild.setObserver(imagePanel1); + imagePanel1.getVerticalScrollBar().setValue(10); + imagePanel1.getVerticalScrollBar().setValue(0); + imagePanel1.getViewport().repaint(); + new Thread( new Runnable() { + @Override public void run() { + bild.minimumsuche(); + } +} ).start(); + } // end of bMaximumsuche_ActionPerformed + + public void bTesten_ActionPerformed(ActionEvent evt) { + bild = new Balkendiagramm(); + imagePanel1.setImage(bild); + bild.setObserver(imagePanel1); + imagePanel1.getVerticalScrollBar().setValue(10); + imagePanel1.getVerticalScrollBar().setValue(0); + imagePanel1.getViewport().repaint(); + bild.testen(); + } // end of bTesten_ActionPerformed + + public void timer1_ActionPerformed(ActionEvent evt) { + imagePanel1.getViewport().repaint(); + + } // end of timer1_ActionPerformed + + public void BalkendiagrammGUI_WindowClosed(WindowEvent evt) { + timer1.stop(); + + } // end of BalkendiagrammGUI_WindowClosed + + // Ende Methoden + + public static void main(String[] args) { + new BalkendiagrammGUI("BalkendiagrammGUI"); + } +} + diff --git a/04_loesungen/03_javaeditor/alg13_variante_minimumsuche/BalkendiagrammGUI.jfm b/04_loesungen/03_javaeditor/alg13_variante_minimumsuche/BalkendiagrammGUI.jfm new file mode 100644 index 0000000..bc71e44 --- /dev/null +++ b/04_loesungen/03_javaeditor/alg13_variante_minimumsuche/BalkendiagrammGUI.jfm @@ -0,0 +1,213 @@ +object BalkendiagrammGUI: TFGUIForm + Left = 761 + Top = 237 + BorderIcons = [biSystemMenu] + Caption = 'BalkendiagrammGUI' + ClientHeight = 512 + ClientWidth = 752 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -10 + Font.Name = 'MS Sans Serif' + Font.Style = [] + FormStyle = fsStayOnTop + OldCreateOrder = True + Position = poDesigned + ShowHint = True + Visible = True + OnClose = FormClose + OnCloseQuery = FormCloseQuery + OnResize = FormResize + FrameType = 5 + Resizable = False + Undecorated = False + Background = clBtnFace + windowClosed = 'BalkendiagrammGUI_WindowClosed' + PixelsPerInch = 96 + TextHeight = 13 + object bZeichnen: TJButton + Tag = 4 + Left = 24 + Top = 456 + Width = 209 + Height = 33 + Hint = 'jButton1' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Dialog' + Font.Style = [fsBold] + Foreground = 3355443 + Background = 15658734 + actionPerformed = 'bZeichnen_ActionPerformed' + Text = 'Balkendiagramm zeichnen' + Mnemonic = 0 + DisplayedMnemonicIndex = 0 + Selected = False + BorderPainted = True + FocusPainted = False + ContentAreaFilled = True + HorizontalAlignment = CENTER + VerticalAlignment = CENTER + HorizontalTextPosition = RIGHT + VerticalTextPosition = CENTER + IconTextGap = 4 + RolloverEnabled = False + Border.BorderType = NoBorder + Border.LineColor = clBlack + Border.LineThickness = 0 + Border.LineRounded = False + Border.EtchHighlightColor = clBlack + Border.EtchShadowColor = clBlack + Border.Etchtype = 0 + Border.BevelHighlightColor = clBlack + Border.BevelShadowColor = clBlack + Border.Beveltype = 0 + Border.MatteColor = clBlack + Border.MatteTop = 0 + Border.MatteLeft = 0 + Border.MatteBottom = 0 + Border.MatteRight = 0 + end + object imagePanel1: TJPanel + Tag = 38 + Left = 24 + Top = 16 + Width = 705 + Height = 409 + Hint = 'imagePanel1' + HelpKeyword = 'ImagePanel' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Dialog' + Font.Style = [fsBold] + Foreground = 3355443 + Background = clBtnFace + Border.BorderType = NoBorder + Border.LineColor = clBlack + Border.LineThickness = 0 + Border.LineRounded = False + Border.EtchHighlightColor = clBlack + Border.EtchShadowColor = clBlack + Border.Etchtype = 0 + Border.BevelHighlightColor = clBlack + Border.BevelShadowColor = clBlack + Border.Beveltype = 0 + Border.MatteColor = clBlack + Border.MatteTop = 0 + Border.MatteLeft = 0 + Border.MatteBottom = 0 + Border.MatteRight = 0 + end + object bMaximumsuche: TJButton + Tag = 4 + Left = 280 + Top = 456 + Width = 201 + Height = 33 + Hint = 'jButton1' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Dialog' + Font.Style = [fsBold] + Foreground = 3355443 + Background = 15658734 + actionPerformed = 'bMaximumsuche_ActionPerformed' + Text = 'Maximumsuche' + Mnemonic = 0 + DisplayedMnemonicIndex = 0 + Selected = False + BorderPainted = True + FocusPainted = False + ContentAreaFilled = True + HorizontalAlignment = CENTER + VerticalAlignment = CENTER + HorizontalTextPosition = RIGHT + VerticalTextPosition = CENTER + IconTextGap = 4 + RolloverEnabled = False + Border.BorderType = NoBorder + Border.LineColor = clBlack + Border.LineThickness = 0 + Border.LineRounded = False + Border.EtchHighlightColor = clBlack + Border.EtchShadowColor = clBlack + Border.Etchtype = 0 + Border.BevelHighlightColor = clBlack + Border.BevelShadowColor = clBlack + Border.Beveltype = 0 + Border.MatteColor = clBlack + Border.MatteTop = 0 + Border.MatteLeft = 0 + Border.MatteBottom = 0 + Border.MatteRight = 0 + end + object bTesten: TJButton + Tag = 4 + Left = 512 + Top = 456 + Width = 185 + Height = 33 + Hint = 'jButton2' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Dialog' + Font.Style = [fsBold] + Foreground = 3355443 + Background = 15658734 + actionPerformed = 'bTesten_ActionPerformed' + Text = 'Testen' + Mnemonic = 0 + DisplayedMnemonicIndex = 0 + Selected = False + BorderPainted = True + FocusPainted = False + ContentAreaFilled = True + HorizontalAlignment = CENTER + VerticalAlignment = CENTER + HorizontalTextPosition = RIGHT + VerticalTextPosition = CENTER + IconTextGap = 4 + RolloverEnabled = False + Border.BorderType = NoBorder + Border.LineColor = clBlack + Border.LineThickness = 0 + Border.LineRounded = False + Border.EtchHighlightColor = clBlack + Border.EtchShadowColor = clBlack + Border.Etchtype = 0 + Border.BevelHighlightColor = clBlack + Border.BevelShadowColor = clBlack + Border.Beveltype = 0 + Border.MatteColor = clBlack + Border.MatteTop = 0 + Border.MatteLeft = 0 + Border.MatteBottom = 0 + Border.MatteRight = 0 + end + object timer1: TTimer + Tag = 49 + Left = 712 + Top = 456 + Width = 33 + Height = 28 + Hint = 'timer1' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Dialog' + Font.Style = [fsBold] + Foreground = 3355443 + Background = 15658734 + actionPerformed = 'timer1_ActionPerformed' + Coalesce = False + Delay = 100 + InitialDelay = 0 + LogTimers = False + Repeats = True + end +end diff --git a/04_loesungen/03_javaeditor/alg13_variante_minimumsuche/Picture.java b/04_loesungen/03_javaeditor/alg13_variante_minimumsuche/Picture.java new file mode 100644 index 0000000..8df3d55 --- /dev/null +++ b/04_loesungen/03_javaeditor/alg13_variante_minimumsuche/Picture.java @@ -0,0 +1,699 @@ +import java.awt.image.*; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.BasicStroke; +import java.util.Vector; +import javax.imageio.*; +import java.io.*; +import java.awt.*; +import javax.swing.*; +import java.util.Random; +import java.awt.geom.AffineTransform; +/** + * + * Bildklasse für die Simulation von Processing-Befehlen + * + * Diese Klasse stellt ein BufferedImage bereit, in das mit Processing-Befehlen gezeichnet + * werden kann. + * Zusätzlich kann ein Bildanzeiger über jede Änderung des Bildes informiert werden, + * um "Zurück"-Befehle zu ermöglichen. Der Bildanzeiger ist entweder eine normale Java + * ScrollPane oder ein Actor aus Greenfoot. + * Die Dokumentation der einzelnen Zeichenmethoden ist der Processing-Reference + * (https://processing.org/reference/ steht unter CC-Lizenz: https://creativecommons.org/) + * entnommen und mit Deepl.com ins Deutsche übersetzt. + * + * @version 1.0 from 23.01.2019 + * @author Thomas Schaller (ZPG Informatik Klasse 9) + */ + +public class Picture{ + + // Einstellungmöglichkeiten für das Zeichnen von Rechtecken und Ellipsen + // RADIUS = Mittelpunkt+Radius wird gegeben, CENTER = Mittelpunkt und Breite/Höhe wird gegeben, + // CORNER = Linke obere Ecke + Breite/Höhe, CORNERS = Linke obere und rechte untere Ecke + public static final int RADIUS = 1; + public static final int CENTER = 2; + public static final int CORNER = 3; + public static final int CORNERS = 4; + + // gespeichertes Bild, + private BufferedImage image; + + // aktuelle Farbeinstellungen + private Color background; + private Color pencolor; + private Color fillcolor; + + // aktuelle Stiftdicke + private double stroke; + + // akkteller Koordinatenmodus von Rechtecken und Ellipsen + private int ellipseMode = CENTER; + private int rectMode = CORNER; + + // aktueller Font + private Font textfont = null; + + // muss ein Bildanzeiger benachrichtigt werden + private PictureViewer observer = null; + private boolean autorefresh = true; + + /** + * Erzeugt ein Bild mit Standardgröße 500x400 + */ + public Picture() { + this(500,400); + } + + /** + * Erzeugt ein Bild der angegeben Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public Picture(int width, int height) { + this(width,height, "D0D0D0"); + } + + /** + * Erzeugt ein Bild aus einer Datei + * @param filename Dateiname des Bildes + */ + public Picture(String filename) { + load(filename); + } + + /** + * Erzeugt ein Bild der angegebenen Größe mit festgelegtem Hintergrund + * @param width Breite des Bildes + * @param height Höhe des Bildes + * @param background Farbe des Hintergrunds + */ + public Picture(int width, int height, String background) { + this.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + this.background = decode(background); + this.pencolor = new Color(0,0,0); + this.stroke = 1; + this.fillcolor = null; + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(this.background); + g.fillRect(0,0,width-1, height-1); + } + + /** + * Legt fest, wer das Bild anzeigt. + * Diese ermöglicht die Benachrichtung des Observers, wenn sich das Bild ändert. + * @param observer Anzeiger des Bildes + */ + + public void setObserver(PictureViewer observer) { + this.observer= observer; + } + + /** + * Direktes Setzen des Bildes (für interne Zwecke) + * @param b Bild, das gespeichert werden soll. + */ + public void setImage(BufferedImage b) { + image = b; + } + + /** + * Direktes Abfragen des Bildes (für interne Zwecke) + * @return Bild, das gerade gespeichert ist. + */ + public BufferedImage getImage() { + return image; + } + + /** + * Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + * Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + * der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu. + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public void size(int width, int height){ + pushImage(); + this.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(background); + g.fillRect(0,0,width-1, height-1); + } + + /** + * Liefert die Breite des Bildes zurück. + * @return Breite des Bildes + */ + public int getWidth() { + return image.getWidth(); + } + + /** + * Liefert die Höhe des Bildes zurück. + * @return Höhe des Bildes + */ + public int getHeight() { + return image.getHeight(); + } + + + /** + * Erzeugt eine Kopie des Bildes und übergibt sie an den Observer (falls existent), damit dieser die Versionen speichern kann + */ + private void pushImage() { + if(observer != null) { + observer.pushImage(); + } + } + + + /** + * Legt fest, ob nach jedem Zeichenbefehl automatisch das Bild auch in + * der Oberfläche aktualisiert wird. Die Einstellung "false" beschleunigt + * das Zeichnen aufwändiger Bilder und verhindert "Flackern". + * Das Neuzeichnen kann durch die Methode "refresh" gezielt ausgelöst werden. + * @param autorefresh true = nach jedem Zeichenbefehl die Anzeige aktualisieren, false= nur durch die Methode refresh neu zeichnen + */ + public void setAutoRefresh(boolean autoRefresh) { + this.autorefresh = autoRefresh; + } + + + /** + * Auch die anzeigenden Klasse wird zum Neuzeichnen aufgefordert. + */ + private void repaint() { + if(observer != null && autorefresh) { + observer.repaint(); + } + } + + /** + * Auch die anzeigenden Klasse wird zum Neuzeichnen aufgefordert. + */ + public void refresh() { + if(observer != null) { + observer.repaint(); + } + } + + // ----------------------------------------- Zeichenfunktionen ----------------------------------------------- + /** + * Löscht den Inhalt des Bildes. + * Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt. + */ + + public void clear(){ + pushImage(); + image = new BufferedImage(image.getWidth(), image.getHeight(), image.getType()); + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(background); + g.fillRect(0,0,image.getWidth()-1, image.getHeight()-1); + repaint(); + } + + /** + * Konvertiert die in einem bestimmten Modus gegebenen Koordinaten in die Java-übliche Links_Oben_Breite_Höhe Version + * Die Änderungen werden direkt im Array vorgenommen + * @param coord Array mit vier Koordinateneinträgen im gegebenen Modus + * @param mode Modus der Koordinaten (CORNER, CORNERS, RADIUS oder CENTER) + */ + private void convert(int[] coord, int mode) { + switch(mode) { + case CORNER: break; + case CORNERS: coord[2] -= coord[0]; coord[3] -= coord[1]; break; + case RADIUS: coord[2] *= 2; coord[3] *=2; + case CENTER: coord[0] -= coord[2]/2; coord[1] -= coord[3]/2; + } + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + * Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + * Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void rectMode(int mode) { + rectMode = mode; + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + * Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + * Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als Breite und Höhe der Form. + * ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void ellipseMode(int mode) { + ellipseMode = mode; + } + + + + /** + * Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + * Um eine Linie einzufärben, verwenden Sie die {@link #stroke(int, int, int) stroke()} Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + * Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + * {@link #strokeWeight(double) strokeWeight()} geändert werden. + * @param x1 x-Koordinate des 1. Punktes + * @param y1 y-Koordinate des 1. Punktes + * @param x2 x-Koordinate des 2. Punktes + * @param y2 y-Koordinate des 2. Punktes + */ + public void line(int x1, int y1, int x2, int y2) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + if (stroke > 0) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawLine(x1, y1, x2, y2); + } + repaint(); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, rectMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillRect(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawRect(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, ellipseMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillOval(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawOval(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + int px[] = {x1, x2, x3}; + int py[] = {y1, y2, y3}; + polygon(px, py); + + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + + int px[] = {x1, x2, x3, x4}; + int py[] = {y1, y2, y3, y4}; + polygon(px, py); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + + public void polygon(int[] x, int[] y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(fillcolor != null) { + + g.setColor(fillcolor); + g.fillPolygon(x,y, y.length); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawPolygon(x, y, x.length); + } + repaint(); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + ellipse(x,y,1, 1); + + } + + // ----------------------------------------- Schriftdarstellung ----------------------------------------------- + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param s Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String s, int x, int y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(pencolor != null) { + g.setColor(fillcolor); + g.setStroke(new BasicStroke((float) stroke)); + g.setFont(textfont); + g.drawString(s, x, y); + } + repaint(); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + this.textfont = font; + } + + + // ----------------------------------------- Farbfestlegungen ----------------------------------------------- + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(String color) { + try{ + return new Color( + Integer.valueOf( color.substring( 0, 2 ), 16 ), + Integer.valueOf( color.substring( 2, 4 ), 16 ), + Integer.valueOf( color.substring( 4, 6 ), 16 ) ); + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(int color) { + try{ + if(color >=0 && color < 256) { + return new Color(color,color,color); + } else { + int r = color / 0x010000 % 0xFF; + int g = color / 0x000100 % 0xFF; + int b = color % 0xFF; + System.out.println(""+r+","+g+","+b); + return new Color(r, g, b ); + } + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + this.pencolor = decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + this.pencolor=decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + this.pencolor = new Color(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + this.pencolor = null; + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + this.stroke = width; + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + this.fillcolor = decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + this.fillcolor=decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + this.fillcolor = new Color(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + this.fillcolor = null; + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + if(c < 256) { + this.background=new Color(c,c,c); + } else { + int r = c / 0x010000; + int g = c / 0x000100 % 0xFF; + int b = c % 0xFF; + this.background= new Color(r, g, b ); + } + + this.clear(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + this.background=new Color(r,g,b); + this.clear(); + } + + +// ----------------------------------------- Dateioperationen ----------------------------------------------- + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + try{ + this.image = ImageIO.read(new File(filename)); + this.background = decode("D0D0D0"); + this.pencolor = new Color(0,0,0); + this.fillcolor = null; + this.stroke = 1; + this.repaint(); + + } catch(Exception e) { + System.out.println("Fehler beim Einlesen der Bilddatei"); + } + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + try{ + String[] fn = filename.split("\\."); + if (fn.length== 1) { + ImageIO.write(image, "PNG", new File(filename+".png")); + } else { + + if (fn.length == 2 && (fn[1].toUpperCase().equals("PNG") || + fn[1].toUpperCase().equals("GIF"))){ + ImageIO.write(image, fn[1], new File(filename)); + }else { + System.out.println("Unbekanntes Bildformat"); + } + } + + } catch(Exception e) { + System.out.println("Fehler beim Speichern"); + } + } + + +// ----------------------------------------- Sonstiges ----------------------------------------------- + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + + public Color[][] getPixelArray() { + Color[][] pixel = new Color[image.getWidth()][image.getHeight()]; + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + pixel[x][y] = new java.awt.Color(image.getRGB(x,y)); + } + } + return pixel; + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + size(pixel.length,pixel[0].length); + Graphics2D g = (Graphics2D) image.getGraphics(); + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + g.setColor(pixel[x][y]); + g.fillRect(x, y, 1, 1); + } + } + repaint(); + } + + /** + * Hilfsfunktion zum Verzögern der Ausgabe + * @param millis Wartezeit in Millisekunden + */ + public void delay(int millis) { + try{ + Thread.sleep(millis); + + } catch(Exception e) { + + } + + } + + + +} diff --git a/04_loesungen/03_javaeditor/alg13_variante_minimumsuche/PictureViewer.java b/04_loesungen/03_javaeditor/alg13_variante_minimumsuche/PictureViewer.java new file mode 100644 index 0000000..9e6b151 --- /dev/null +++ b/04_loesungen/03_javaeditor/alg13_variante_minimumsuche/PictureViewer.java @@ -0,0 +1,505 @@ +/** + * Zeigt ein Bild in einem Scrollbereich an. + * Es ist möglich das Bild zu zoomen und mehrere Versionen des Bildes zu speichern, um eine "Rückgängig" Operation durchzuführen. + * @author Thomas Schaller + * @version 1.0 vom 01.02.2019 + */ + +import java.awt.*; +import java.awt.event.*; +import javax.swing.*; +import java.awt.image.*; +import java.util.Vector; + +public class PictureViewer extends JScrollPane +{ + + // das aktuelle Bild + private Picture picture; + + // Bilder für den Züruck-Modus speichern + private static final int ANZ_BACK = 20; + private Vector history; + + // Zeichenfläche + private ImageIcon scrollImageIcon; + private JLabel imageLabel; + + // Zoom Faktor + private double zoomFactor; + public static final int FIT = -1; + public static final int NORMAL = 1; + + + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der Größe 1000x1000 + */ + public PictureViewer() { + this(1000,1000); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public PictureViewer(int width, int height) { + this(width,height, "D0D0D0"); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + * @param background Farbe des Hintergrunds als HEX-String (z.B. "FF3A45") + */ + public PictureViewer(int width, int height, String background) { + this(new Picture(width,height, background)); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild aus einer Bilddatei + * @param filename Name des Bildes + */ + public PictureViewer(String filename) { + this(new Picture(filename)); + } + + /** + * Erzeugt ein ScrollPanel und zeigt das Bild-Objekt an + * @param picture anzuzeigendes Bild + */ + public PictureViewer(Picture picture) + { + this.picture=picture; + + zoomFactor=1; + + scrollImageIcon = new ImageIcon(picture.getImage().getScaledInstance(picture.getImage().getWidth(), picture.getImage().getHeight(), Image.SCALE_FAST)); + imageLabel = new JLabel(scrollImageIcon); + imageLabel.setVerticalAlignment(JLabel.CENTER); + imageLabel.setHorizontalAlignment(JLabel.CENTER); + setViewportView(imageLabel); + + this.setBorder(BorderFactory.createLineBorder(Color.black)); + picture.setObserver(this); + history = new Vector(); + + } + + /** + * Setzt das anzuzeigende Bild neu + * @param picture anzuzeigendes Bild + */ + public void setImage(Picture picture) { + this.history = new Vector(); + this.picture = picture; + setZoom(NORMAL); + } + + /** + * Speichert das übergebene Bild in der History. + * @param b zu speicherndes Bild + */ + public void pushImage() { + if( this.ANZ_BACK > 0) { + if(history.size() == this.ANZ_BACK) { + history.removeElementAt(0); + } + + BufferedImage b = new BufferedImage(picture.getWidth(), picture.getHeight(), picture.getImage().getType()); + Graphics g = b.getGraphics(); + g.drawImage(picture.getImage(), 0, 0, null); + g.dispose(); + + history.add(b); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + private void popImage() { + int anz = history.size(); + if(anz>0) { + BufferedImage img = history.get(anz-1); + history.removeElementAt(anz-1); + picture.setImage(img); + setZoom(zoomFactor); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + public void back() { + popImage(); + } + + /** + * Setzt das angezeigt Bild neu und beachtet dabei den Zoomfaktor. + */ + public void repaint() { + if( picture != null) { + double factor= zoomFactor; + if (zoomFactor == FIT) { + double factorw = ((double) getWidth()-2) / picture.getWidth(); + double factorh = ((double) getHeight()-2) / picture.getHeight(); + factor = Math.min(factorw, factorh); + } + int width = (int) (picture.getWidth()*factor); + int height = (int) (picture.getHeight()*factor); + + + + scrollImageIcon.setImage(picture.getImage().getScaledInstance(width, height, Image.SCALE_DEFAULT)); + revalidate(); + } + } + + /** + * Setzt den Zoom-Faktor für das Bild. + * Als Zoomfaktor sind auch die Konstanten Bildanzeiger.FIT (auf Bildschirmgröße zoomen) und Bildanzeiger.NORMAL (100%) möglich. + * @param factor Zoomfaktor (1.0 = 100%). + */ + public void setZoom(double factor) + { + zoomFactor = factor; + repaint(); + } + + + // Wrappermethoden + /** + * Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + * Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + * der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu. + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public void size(int width, int height){ + picture.size(width, height); + } + + /** + * Liefert die Breite des Bildes zurück. + * @return Breite des Bildes + */ + public int getImageWidth() { + return picture.getWidth(); + } + + /** + * Liefert die Höhe des Bildes zurück. + * @return Höhe des Bildes + */ + public int getImageHeight() { + return picture.getHeight(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + picture.background(c); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + picture.background(r,g,b); + } + + /** + * Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + * Um eine Linie einzufärben, verwenden Sie die {@link #stroke(int, int, int) stroke()} Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + * Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + * {@link #strokeWeight(double) strokeWeight()} geändert werden. + * @param x1 x-Koordinate des 1. Punktes + * @param y1 y-Koordinate des 1. Punktes + * @param x2 x-Koordinate des 2. Punktes + * @param y2 y-Koordinate des 2. Punktes + */ + public void line(int x1, int y1, int x2, int y2) { + picture.line(x1,y1,x2,y2); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + picture.rect(a,b,c,d); + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + picture.ellipse(a,b,c,d); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + picture.triangle(x1,y1,x2,y2,x3,y3); + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + picture.quad(x1,y1,x2,y2,x3,y3,x4,y4); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + public void polygon(int[] x, int[] y) { + picture.polygon(x,y); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + picture.point(x,y); + + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + * Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + * Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void rectMode(int mode) { + picture.rectMode(mode); + } + + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + * Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + * Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als Breite und Höhe der Form. + * ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void ellipseMode(int mode) { + picture.ellipseMode(mode); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + picture.stroke(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + picture.noStroke(); + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + picture.strokeWeight(width); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + picture.fill(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + picture.noFill(); + } + + /** + * Löscht den Inhalt des Bildes. + * Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt. + */ + public void clear(){ + picture.clear(); + } + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + picture.load(filename); + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + picture.save(filename); + } + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param t Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String t, int x, int y) { + picture.text(t,x,y); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + picture.textFont(font); + } + + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + public Color[][] getPixelArray() { + return picture.getPixelArray(); + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + picture.setPixelArray(pixel); + } + + + +} diff --git a/04_loesungen/03_javaeditor/alg13_variante_minimumsuche/Table.java b/04_loesungen/03_javaeditor/alg13_variante_minimumsuche/Table.java new file mode 100644 index 0000000..ee5a211 --- /dev/null +++ b/04_loesungen/03_javaeditor/alg13_variante_minimumsuche/Table.java @@ -0,0 +1,894 @@ +/** + * Die Klasse Table vereinfacht den Zugriff auf CSV-Dateien. + * Die Klassen Table und TableRow ermöglichen einen einfachen Zugriff auf tabellenbasierte + * Dokumente. + * + * @author Thomas Schaller + * @version 1.0 vom 01.02.2019 + */ + +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.ArrayList; +import java.io.*; +import java.util.Scanner; + +import org.jdom.Document; +import org.jdom.Element; +import org.jdom.Attribute; +import org.jdom.JDOMException; +import org.jdom.input.SAXBuilder; +import org.jdom.output.XMLOutputter; +import org.jdom.output.Format; + +public class Table +{ + // Standardtrennzeichen für Spalten + private static final char DEFAULT_SEPARATOR = ';'; + // Standardmarkierung für Texte + private static final char DEFAULT_QUOTE = '"'; + // Standardtrennzeichen für Dezimalzahlen + private static final char DEFAULT_COMMA = ','; + + // mögliche Spaltentypen + private static final String UNKNOWN ="UNKOWN"; + private static final String INT = "INTEGER"; + private static final String DOUBLE = "DOUBLE"; + private static final String FLOAT = "FLOAT"; + + // interne Verwaltung des Dokuments als JDOM-Document-Objekt + private Document doc; + // Verweis auf Element für Kopfzeile + private Element header; + // Ende Attribute + + /** + * Erzeugt leeres Tabellen-Dokument. + */ + public Table() { + this.doc = new Document(); + doc.setRootElement(new Element("CSV-Data")); + this.header = new Element("Header"); + doc.getRootElement().addContent(header); + } + + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei und erstellt ein Tabellenobjekt mit seinen Werten. + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public Table(String filename, String options, char separator, char quote) { + loadCSV(filename, options, separator, quote); + } + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei und erstellt ein Tabellenobjekt mit seinen Werten (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + */ + public Table(String filename, String options) { + loadCSV(filename, options); + } + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei ohne Kopfzeile und erstellt ein Tabellenobjekt mit seinen Werten (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public Table(String filename) { + loadCSV(filename); + } + + // Anfang Methoden + /** + * Liest den Inhalt einer CSV-Datei ohne Kopfzeile (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public void loadCSV(String filename) { + loadCSV(filename, ""); + } + + /** + * Liest den Inhalt einer CSV-Datei (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + */ + public void loadCSV(String filename, String options) { + loadCSV(filename, options, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** + * Liest den Inhalt einer CSV-Datei. + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public void loadCSV(String filename, String options, char separator, char quote) { + doc = new Document(); + doc.setRootElement(new Element("CSV-Data")); + header = new Element("Header"); + doc.getRootElement().addContent(header); + try { + File f = new File(filename); + Scanner scanner = new Scanner(new File(filename)); + if(options.toLowerCase().contains("header") && scanner.hasNext()) { + List entries = parseLine(scanner.nextLine(), separator, quote); + int i= 0; + for(String s : entries) { + Element entry = new Element("Column"); + header.addContent(entry); + entry.setText(s); + entry.setAttribute("type", "unknown"); + i++; + } + } + + List cols = header.getChildren(); + + while (scanner.hasNext()) { + Element line = new Element("Row"); + doc.getRootElement().addContent(line); + List entries = parseLine(scanner.nextLine(), separator, quote); + int i= 0; + + for(String s : entries) { + + if(i==cols.size()) { + Element entry = new Element("Column"); + entry.setAttribute("type", "unknown"); + header.addContent(entry); + cols = header.getChildren(); + } + + Element entry = new Element("Entry"); + entry.setText(s); + line.addContent(entry); + i++; + } + } + scanner.close(); + + } catch (Exception e) { + System.out.println("Fehler beim Lesen der CSV-Datei"); + } + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei ohne Kopfzeile (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public void saveCSV(String filename) { + saveCSV(filename, ""); + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthalten, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile haben soll, + * dann lassen Sie einfach die Option "header" weg. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile haben soll. + * @param filename Dateiname der CSV-Datei. + */ + public void saveCSV(String filename, String options) { + saveCSV(filename, options, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei. + * Wenn die Datei eine Kopfzeile enthalten, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile haben soll, + * dann lassen Sie einfach die Option "header" weg. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile haben soll. + * @param filename Dateiname der CSV-Datei. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public void saveCSV(String filename, String options, char separator, char quote){ + try{ + File f = new File(filename); + PrintStream outputFile = new PrintStream (f); + System.out.println("Speicher in : "+f.getAbsolutePath()); + List columns = header.getChildren(); + String sq = ""+quote; + String ss = ""+separator; + if(quote =='"') sq = "\""; + if(separator =='"') ss = "\""; + + if(options.toLowerCase().contains("header")) { + String h = ""; + for(Element c : columns) { + h += ss + sq + c.getText()+sq; + } + outputFile.println(h.substring(1)); + } + for(int i = 0; i parseLine(String cvsLine) { + return parseLine(cvsLine, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** HIlfsfunktion für die Analyse einer Dateizeile + * @param cvsLine Zeile aus der Datei + * @param sparator Trennzeichen für die Spalten + * @return Liste von String für die einzelnen Spalten + */ + private List parseLine(String cvsLine, char separator) { + return parseLine(cvsLine, separator, DEFAULT_QUOTE); + } + + /** HIlfsfunktion für die Analyse einer Dateizeile + * @param cvsLine Zeile aus der Datei + * @param sparator Trennzeichen für die Spalten + * @param customQuote Kennung für Strings + * @return Liste von String für die einzelnen Spalten + */ + private List parseLine(String cvsLine, char separator, char customQuote) { + + List result = new ArrayList<>(); + + //if empty, return! + if (cvsLine == null && cvsLine.isEmpty()) { + return result; + } + + //ggf. Default-Value laden + if (customQuote == ' ') { + customQuote = DEFAULT_QUOTE; + } + + if (separator == ' ') { + separator = DEFAULT_SEPARATOR; + } + + StringBuffer curVal = new StringBuffer(); + boolean inQuotes = false; + boolean startCollectChar = false; + boolean doubleQuotesInColumn = false; + + char[] chars = cvsLine.toCharArray(); + + for (char ch : chars) { + + if (inQuotes) { // aktueller Text ist in Quotes eingeschlossen + startCollectChar = true; + + if (ch == customQuote) { // Quotes werden beendet, aber Achtung bei "" => Metazeichen + inQuotes = false; + if (ch == '\"') { + doubleQuotesInColumn = true; + } + + } else { + + if (ch == '\"' && !doubleQuotesInColumn) { + doubleQuotesInColumn = true; + } else { + curVal.append(ch); + doubleQuotesInColumn = false; + } + + } + } else { + if (ch == customQuote) { + + inQuotes = true; + + //Fixed : allow "" in empty quote enclosed + if (ch == '\"'){ + if(doubleQuotesInColumn) { + curVal.append('"'); + doubleQuotesInColumn = false; + } else doubleQuotesInColumn = true; + + + } + } + else { + doubleQuotesInColumn = false; + if (ch == separator) { + + result.add(curVal.toString()); + + curVal = new StringBuffer(); + startCollectChar = false; + + } else if (ch == '\r') { + //ignore LF characters + continue; + } else if (ch == '\n') { + //the end, break! + break; + } else { + curVal.append(ch); + } + } + } + + } + result.add(curVal.toString()); + return result; + } + + /** + * Sucht die Nummer einer durch Namen gegebenen Spalte. + * @param name Name der Spalte + * @return Nummer der Spalte + */ + + private int findColumnNumber(String name) { + List columns = header.getChildren(); + int i = 0; + for(Element c : columns) { + if (c.getText().toLowerCase().equals(name.toLowerCase())) { + return i; + + } + i++; + } + return -1; + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an. + */ + public void addColumn() { + Element entry = new Element("Column"); + entry.setAttribute("type", Table.UNKNOWN); + header.addContent(entry); + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an und benennt sie. + * @param title Bezeichnung der Spalte + */ + public void addColumn(String title) { + addColumn(); + Element nc = ((List)(header.getChildren())).get(header.getChildren().size()-1); + nc.setText(title); + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an und benennt und typisiert sie. + * @param title Bezeichnung der Spalte + * @param type Typ der Spalte (UNKNOWN, DOUBLE, INTEGER, FLOAT) + */ + public void addColumn(String title, String type) { + addColumn(title); + Element nc = ((List)(header.getChildren())).get(header.getChildren().size()-1); + nc.setAttribute("type", type); + } + + /** + * Löscht eine Spalte. + * @param i Nummer der Spalte. + */ + public void removeColumn(int i) { + List lines = doc.getRootElement().getChildren(); + for(Element l : lines) { + if(l.getChildren().size()>i) l.removeContent(i); + } + } + + /** + * Löscht eine Spalte + * @param name Name der Spalte + */ + public void removeColumn(String name) { + try{ + removeColumn(findColumnNumber(name)); + } catch(Exception e) { System.out.println("Unbekannter Spaltenname");} + } + + /** + * Liefert die Anzahl der Spalten in der Tabelle + * @return Anzahl der Spalten + */ + public int getColumnCount() { + return header.getChildren().size(); + } + + /** + * Liefert die Anzahl der Zeilen in der Tabelle + * @return Anzahl der Zeilen + */ + public int getRowCount() { + return doc.getRootElement().getChildren().size()-1; + } + + /** + * Löscht alle Zeilen der Tabelle. + * Die Spaltenüberschriften und Typen bleiben erhalten. + */ + public void clearRows() { + doc.getRootElement().removeChildren("Row"); + } + + /** + * Fügt eine neue Zeile an das Ende der Tabelle an. + * @return ein TableRow-Objekt für diese neue Zeile + */ + public TableRow addRow() { + Element row = new Element("Row"); + doc.getRootElement().addContent(row); + return new TableRow(doc, row); + } + + /** + * Löscht eine Zeile + * @param i Nummer der Zeile + */ + public void removeRow(int i) { + if(i rows = doc.getRootElement().getChildren(); + return new TableRow(doc, rows.get(i+1)); + } + return null; + } + + /** + * Liefert die ganze Tabelle als Array von TableRow-Objekten + * @return Array von TableRow-Objekten + */ + public TableRow[] rows() { + TableRow[] rows = new TableRow[getRowCount()]; + for(int i = 0; i < getRowCount(); i++) { + rows[i] = getRow(i); + } + return rows; + } + + /** + * Liefert den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param column Spaltennummer + * @return Wert der Zelle + */ + public int getInt(int row, int column) { + return getRow(row).getInt(column); + } + + /** + * Liefert den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param name Name der Spalte + * @return Wert der Zelle + */ + public int getInt(int row, String name) { + return getRow(row).getInt(name); + } + + /** + * Setzt den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param column Spaltennummer + * @param value neuer Wert der Zelle + */ + public void setInt(int row, int column,int value) { + getRow(row).setInt(column, value); + } + + /** + * Setzt den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(int row, String name, int value) { + getRow(row).setInt(name, value); + } + + /** + * Liefert alle Werte einer Zeile als Integer-Array. + * @param row Nummer der Zeile + * @return int-Array, dass alle Werte der Zeile enthält + */ + public int[] getIntRow(int row) { + try{ + TableRow trow = getRow(row); + int anz = getColumnCount(); + int[] r = new int[anz]; + for(int i=0; i) (header.getChildren())).get(i).getText(); + } else { + return ""; + } + } + + /** + * Liefert die Nummer einer Spalte + * @param name Name der Spalte + * @return Nummer der Spalte + */ + public int getColumn(String name) { + List columns = header.getChildren(); + int i = 0; + while (i < columns.size()) { + if (columns.get(i).getText().toLowerCase().equals(name.toLowerCase())) { + return i; + } + i++; + } // end of while + return -1; + } + + + /** + * Erzeugt eine neue Zeile mit i Spalten + * Wenn bisher nicht genügend Spalten vorhanden sind, werden automatisch neue Spalten hinzugefügt (auch zum Header) + * @param i Anzahl der Spalten + */ + private Element buildRow(int i) { + List columns = header.getChildren(); + Element entry=null; + for(int j=0; j<=i; j++) { + + if(j==columns.size()) { + Element h = new Element("Column"); + h.setAttribute("type", "unknown"); + header.addContent(h); + columns = header.getChildren(); + } + if(j==current.getChildren().size()) { + entry = new Element("Entry"); + current.addContent(entry); + + } + + } + return entry; + + } + + /** + * Erzeugt eine neue Zeile. + * Es werden genügend Spalten erzeugt, dass ein Wert in Spalte "name" eingetragen werden kann + * @param name Name der Spalte + */ + private Element buildRow(String name) { + List columns = header.getChildren(); + int i = 0; + for(Element c: columns) { + + if(c.getText().toLowerCase().equals(name.toLowerCase())) { + return buildRow(i); + } + i++; + } + return null; + + } + + /** + * Liefert den Wert einer Zelle als String + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public String getString(int i) { + if(i >= current.getContent().size()) return ""; + Element e = (Element) current.getContent(i) ; + if(e!=null) { + return e.getText(); + } else { + return ""; + } + } + + /** + * Liefert den Wert einer Zelle als String + * @param name Name der Spalte + * @return Wert der Zelle + */ + public String getString(String name) { + return getString(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als String + * @param i Nummer der Spalte + * @param text neuer Wert der Zelle + */ + public void setString(int i, String text) { + + Element e = buildRow(i); + if(e!=null) e.setText(text); + } + + /** + * Setzt den Wert einer Zelle als String + * @param name Name der Spalte + * @param text neuer Wert der Zelle + */ + public void setString(String name, String text) { + Element e = buildRow(name); + if(e!=null) e.setText(text); + } + + + /** + * Liefert den Wert einer Zelle als Int-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public int getInt(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Integer.parseInt(e.getText()); + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Int-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public int getInt(String name) { + return getInt(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Int-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(int i,int value) { + + Element e = buildRow(i); + if(e!=null) e.setText(""+value); + } + + /** + * Setzt den Wert einer Zelle als Int-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(String name, int value) { + Element e = buildRow(name); + if(e!=null) e.setText(""+value); + } + + /** + * Liefert den Wert einer Zelle als Float-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public float getFloat(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Float.parseFloat(e.getText().replace(",",".")); + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Float-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public float getFloat(String name) { + return getFloat(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Float-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setFloat(int i,float value) { + + Element e = buildRow(i); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Setzt den Wert einer Zelle als Float-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setFloat(String name, float value) { + Element e = buildRow(name); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Liefert den Wert einer Zelle als Double-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public double getDouble(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Double.parseDouble(e.getText().replace(",",".")); + + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Double-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public double getDouble(String name) { + return getDouble(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Double-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setDouble(int i,double value) { + + Element e = buildRow(i); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Setzt den Wert einer Zelle als Double-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setDouble(String name, double value) { + Element e = buildRow(name); + if(e!=null) e.setText(format.format(value)); + } + +} diff --git a/04_loesungen/03_javaeditor/alg13_variante_minimumsuche/XML.java b/04_loesungen/03_javaeditor/alg13_variante_minimumsuche/XML.java new file mode 100644 index 0000000..c06c490 --- /dev/null +++ b/04_loesungen/03_javaeditor/alg13_variante_minimumsuche/XML.java @@ -0,0 +1,637 @@ +/** + * Klasse zum Vereinfachten Zugriff auf XML-Dokumente + * Diese Klasse ist für den Einsatz in der Schule gedacht und soll den Schülern + * einen einfachen Zugriff auf XML-Dokumente ermöglichen. Die zur Verfügung + * stehenden Befehle sind wie in Processing realisiert. + * Dabei ist jeder Teilbaum des Dokuments wieder als XML-Objekt zugreifbar, das + * intern auf die gleiche XML-Dokumentstruktur zugreift. + * Dies ermöglicht bei unsachgemäßem Gebrauch die XML-Struktur zu zerstören. Im + * normalen Gebrauch sollte dies aber nicht relevant sein. + * + * Benötigt: jdom-1.1.3.jar + + * @author Thomas Schaller + * @version 1.0 vom 31.01.2019 + */ +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.ArrayList; +import java.io.*; + +import org.jdom.Document; +import org.jdom.Element; +import org.jdom.Attribute; +import org.jdom.JDOMException; +import org.jdom.input.SAXBuilder; +import org.jdom.output.XMLOutputter; +import org.jdom.output.Format; + +public class XML { + // Anfang Attribute + // XML-Dokumentstruktur + private Document doc; + // Zeiger auf das aktuelle Element + private Element current; + // Ende Attribute + + /** + * Erzeugt ein leeres XMLDokument + */ + public XML() { + this.doc = new Document(); + this.current = null; + } + + /** + * Erzeugt ein XML-Dokument aus einer Datei + * @param filename Dateiname der XML-Datei + */ + public XML(String filename) { + loadXML(filename); + } + + /** + * interner Konstruktor, um ein XML Objekt zu erzeugen, das auf einen bestimmten Knoten verweist + * @param doc die XML-Dokumentstruktur + * @param current Zeiger auf das aktuelle Element + */ + private XML(Document doc, Element current) { + this.doc = doc; + this.current = current; + } + + // Anfang Methoden + /** Öffnet das durch den Dateinamen gegebene Dokument + * @param filename Dateiname des XML-Files + */ + public void loadXML(String filename) { + doc = null; + File f = new File(filename); + + try { + // Das Dokument erstellen + SAXBuilder builder = new SAXBuilder(); + doc = builder.build(f); + + } catch (JDOMException e) { + e.printStackTrace(); + + } catch (IOException e) { + e.printStackTrace(); + } + // Zeiger im Baum auf Root-Element + current = doc.getRootElement(); + } + + /** Speichert den XML-Baum im angegebenen Dateinamen + * @param filename Dateiname des XML-Files + */ + public void saveXML(String filename) { + try { + // new XMLOutputter().output(doc, System.out); + XMLOutputter xmlOutput = new XMLOutputter(); + + // display nice nice + xmlOutput.setFormat(Format.getPrettyFormat()); + File f = new File(filename); + FileOutputStream outputFile = new FileOutputStream(f); + System.out.println("Speicher in : "+f.getAbsolutePath() ); + xmlOutput.output(doc, outputFile); + outputFile.close(); + System.out.println("File Saved!"); + } catch (IOException io) { + System.out.println(io.getMessage()); + } + + } + + //----------------------------------------------- Zeigerbewegungen -------------------------------------------------- + /** + * liefert ein XML-Objekt, das auf den Vaterknoten des aktuellen Elements zeigt. + * @return Vater des aktuellen Objekts. + */ + public XML getParent() { + if(current != null) { + Element parent = current.getParentElement(); + if (parent == null) { + return null; + } else { + return new XML(doc, parent); + } + } + return null; + } + + /** + * Überprüft, ob das Element irgendwelche Kinder hat oder nicht, und gibt das Ergebnis als boolean zurück. + * @return true, wenn Kinder vorhanden sind, sonst false + */ + public boolean hasChildren() { + if (current == null) { + return doc.hasRootElement(); + } else { + return current.getChildren().size()>0; + } + } + + /** + * Ermittelt die Namen aller Kinder des Elements und gibt die Namen als ein Array von Strings zurück. + * Dies ist dasselbe wie das Durchlaufen und Aufrufen von getName() auf jedem untergeordneten Element einzeln. + * @return Liste aller Namen der Kinder + */ + public String[] listChildren() { + if (current == null) { + if(doc.hasRootElement()) { + String[] names = new String[0]; + names[0] = doc.getRootElement().getName(); + return names; + } else { + return null; + } + } else { + List ch_element = current.getChildren(); + String[] names = new String[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + names[i] = ch_element.get(i).getName(); + } + return names; + } + } + + /** + * Liefert alle Kinder des Elements als Array von XML-Objekten. + * @return Array der Kinder als XML-Objekte + */ + public XML[] getChildren() { + if (current == null) { + if(doc.hasRootElement()) { + XML[] ch_xml = new XML[1]; + ch_xml[0] = new XML(doc, doc.getRootElement()); + return ch_xml; + } else { + return null; + } + } else { + List ch_element = current.getChildren(); + XML[] ch_xml = new XML[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + ch_xml[i] = new XML(doc, ch_element.get(i)); + } + return ch_xml; + } + } + + /** + * Liefert bestimmte Kinder des Elements als Array von XML-Objekten. + * Die Methode gibt dabei alle Kinder zurück, die dem angegebenen Namen entsprechen. + * @param name Name der gesuchten Kind-Objekte + * @return Array der Kinder als XML-Objekte + */ + public XML[] getChildren(String name) { + if (current == null) { + if(doc.hasRootElement()) { + XML[] ch_xml = new XML[1]; + ch_xml[0] = new XML(doc, doc.getRootElement()); + if(doc.getRootElement().getName().equals(name)){ + return ch_xml; + } else { + return null; + } + } else { + return null; + } + } else { + List ch_element = current.getChildren(name); + XML[] ch_xml = new XML[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + ch_xml[i] = new XML(doc, ch_element.get(i)); + } + return ch_xml; + } + } + + /** + * Liefert das erste Kind des Elements mit einem bestimmten Namen. + * Die Methode gibt das erste Kind zurück, das dem angegebenen Namen entsprechen. + * @param name Name des gesuchten Kind-Objektes + * @return Kind als XML-Objekt + */ + + public XML getChild(String name) { + if (current == null) { + Element e = doc.getRootElement(); + if (e.getName().equals(name)) { + return new XML(doc, e); + } else { + return null; + } + } else { + String[] names = name.split("/"); + Element e = current; + int i = 0; + while(i < names.length) { + e = e.getChild(names[i]); + if (e==null) return null; + i++; + } + return new XML(doc, e); + } + } + + /** + * Liefert das i. Kind des Elements. + * Die Methode gibt das i. Kind des aktuellen Elements zurück. + * @param i Nummer des Kindes + * @return Kind als XML-Objekt + */ + public XML getChild(int i) { + if (current == null) { + return new XML(doc, doc.getRootElement()); + } else { + List ch_element = current.getChildren(); + if (i>=ch_element.size()) return null; + return new XML(doc, ch_element.get(i)); + } + } + + //--------------------------------------------------- Methoden für das aktuelle Element ------------------------------------------------- + /** + * Frage den Namen des aktuellen Elements ab + * @return Namen des Elements + */ + public String getName() { + if (current==null) return ""; + return current.getName(); + } + + /** + * Setze den Namen des aktuellen Elements. + * @param name Neuer Name des Elements + */ + public void setName(String name) { + if (current==null) return; + current.setName(name); + } + + /** + * liefert die Anzahl der Attribute eines Elements. + * @return Anzahl des Attribute + */ + public int getAttributeCount() { + if (current == null) return 0; + return current.getAttributes().size(); + } + + /** + * liefert zurück, ob das aktuelle Element Attribute hat . + * @return true, wenn es Attribute gibt + */ + public boolean hasAttribute() { + if (current == null) return false; + return current.getAttributes().size()>0; + } + + /** + * Ruft alle Attribute des angegebenen Elements ab und gibt sie als Array von Strings zurück. + * @return Liste der Attributnamen + */ + public String[] listAttributes() { + if (current == null) return null; + List attr = current.getAttributes(); + String[] names = new String[attr.size()]; + for(int i=0; i < attr.size() ; i++) { + names[i] = attr.get(i).getName(); + } + return names; + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs + */ + public String getString(String attribute) { + if (current==null) return ""; + return current.getAttributeValue(attribute); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs + */ + public String getString(String attribute, String defaultValue) { + if (current==null) return defaultValue; + return current.getAttributeValue(attribute,defaultValue); + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param text neuer Wert des Attributs + */ + public void setString(String attribute, String text) { + if (current==null) return; + current.setAttribute(attribute, text); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Integer-Zahl + */ + public int getInt(String attribute) { + if (current==null) return 0; + try{ + int i = Integer.parseInt(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als Integer-Zahl + */ + public int getInt(String attribute, int defaultValue) { + if (current==null) return defaultValue; + try{ + int i = Integer.parseInt(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setInt(String attribute, int value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Float-Zahl + */ + public float getFloat(String attribute) { + if (current==null) return 0; + try{ + float i = Float.parseFloat(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als Float-Zahl + */ + public float getFloat(String attribute, float defaultValue) { + if (current==null) return defaultValue; + try{ + float i = Float.parseFloat(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setFloat(String attribute, float value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Double-Zahl + */ + public double getDouble(String attribute) { + if (current==null) return 0; + try{ + double i = Double.parseDouble(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + +/** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als double-Zahl + */ + public double getDouble(String attribute, double defaultValue) { + if (current==null) return defaultValue; + try{ + double i = Double.parseDouble(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setDouble(String attribute, double value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt den Inhalt/Text des aktuellen Elements ab + * @return Inhalt des Elements + */ + public String getContent() { + if ( current==null) return ""; + + return current.getText(); + } + + /** + * Fragt den Inhalt/Text des aktuellen Elements ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardtext + * @return Inhalt des Elements + */ + public String getContent(String defaultValue) { + if ( current==null) return defaultValue; + String t = current.getText(); + if(t.equals("")) t = defaultValue; + return t; + } + + /** + * Setzt den Inhalt/Text des aktuellen Elements + * @param text Neuer Inhalt des Elements + */ + public void setContent(String text) { + if ( current==null) return; + current.setText(text); + } + + + /** + * Fragt den Inhalt des aktuellen Elements als Integerzahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ public int getIntContent(int defaultValue) { + if ( current==null) return defaultValue; + try{ + int i = Integer.parseInt(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Integerzahl ab + * @return Inhalt des Elements + */ + public int getIntContent() { + if ( current==null) return 0; + try{ + int i = Integer.parseInt(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setIntContent(int value) { + if ( current==null) return; + current.setText(""+value); + } + + + /** + * Fragt den Inhalt des aktuellen Elements als Floatzahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ + public float getFloatContent(float defaultValue) { + if ( current==null) return defaultValue; + try{ + float i = Float.parseFloat(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Floatzahl ab + * @return Inhalt des Elements + */ + public float getFloatContent() { + if ( current==null) return 0; + try{ + float i = Float.parseFloat(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setFloatContent(float value) { + if ( current==null) return; + current.setText(""+value); + } + +/** + * Fragt den Inhalt des aktuellen Elements als Doublezahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ + public double getDoubleContent(double defaultValue) { + if ( current==null) return defaultValue; + try{ + double i = Double.parseDouble(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Doublezahl ab + * @return Inhalt des Elements + */ + public double getDoubleContent() { + if ( current==null) return 0; + try{ + double i = Double.parseDouble(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setDoubleContent(double value) { + if ( current==null) return; + current.setText(""+value); + } + + + // ----------------------------------------------- XML-Struktur aufbauen ------------------------------------------------ + /** Erzeuge neues Element nach der aktuellen Position und setze dieses als aktuelles Element + * @param name Name des neuen Elements + * @return neues Element als XML-Objekt + */ + public XML addChild(String name) { + Element e = new Element(name); + if(current == null){ // man ist auf Root-Ebene + doc.setRootElement(e); + + } + else { + current.addContent(e); + } // end of if-else + return new XML(doc, e); + } + + /** + * liefert das aktuelle Element als jdom-Element-Objekt + * @return aktuelles Element + */ + private Element getCurrent() { + return current; + } + + /** + * löscht ein Kind des aktuellen Knotens. + * Ist kid kein Kind des aktuellen Elements passiert gar nichts. + * @param kid XML-Objekt des Kindes + */ + public void removeChild(XML kid) { + if (current == null) return; + Element e = kid.getCurrent(); + int index = current.indexOf(e); + if(index >= 0) { current.removeContent(e);} + } + +} diff --git a/04_loesungen/03_javaeditor/alg13_variante_minimumsuche/jdom-1.1.3.jar b/04_loesungen/03_javaeditor/alg13_variante_minimumsuche/jdom-1.1.3.jar new file mode 100644 index 0000000..a287727 Binary files /dev/null and b/04_loesungen/03_javaeditor/alg13_variante_minimumsuche/jdom-1.1.3.jar differ diff --git a/04_loesungen/03_javaeditor/alg13_variante_minimumsuche/punkte.csv b/04_loesungen/03_javaeditor/alg13_variante_minimumsuche/punkte.csv new file mode 100644 index 0000000..d6e8dfd --- /dev/null +++ b/04_loesungen/03_javaeditor/alg13_variante_minimumsuche/punkte.csv @@ -0,0 +1,6 @@ +"Name","Punkte" +Niko,216 +Klaus,591 +Anna,857 +Lena,180 +Winfried,168 diff --git a/04_loesungen/03_javaeditor/alg13_variante_minimumsuche/testfall1.csv b/04_loesungen/03_javaeditor/alg13_variante_minimumsuche/testfall1.csv new file mode 100644 index 0000000..92c538f --- /dev/null +++ b/04_loesungen/03_javaeditor/alg13_variante_minimumsuche/testfall1.csv @@ -0,0 +1,20 @@ +"Name","Punkte" +Spieler1,0 +Spieler1,6 +Spieler2,19 +Spieler6,1 +Spieler4,45 +Spieler3,23 +Spieler3,12 +Spieler2,44 +Spieler1,72 +Spieler5,12 +Spieler6,4 +Spieler7,2 +Spieler4,98 +Spieler3,21 +Spieler3,12 +Spieler2,32 +Spieler1,12 +Spieler5,44 +Spieler3,12 diff --git a/04_loesungen/03_javaeditor/alg13_variante_minimumsuche/testfall2.csv b/04_loesungen/03_javaeditor/alg13_variante_minimumsuche/testfall2.csv new file mode 100644 index 0000000..091c003 --- /dev/null +++ b/04_loesungen/03_javaeditor/alg13_variante_minimumsuche/testfall2.csv @@ -0,0 +1,20 @@ +"Name","Punkte" +Spieler1,-5 +Spieler1,-6 +Spieler2,-19 +Spieler6,-1 +Spieler4,-45 +Spieler3,-23 +Spieler3,-12 +Spieler2,-44 +Spieler1,-72 +Spieler5,-12 +Spieler6,-4 +Spieler7,-2 +Spieler4,-98 +Spieler3,-21 +Spieler3,-12 +Spieler2,-32 +Spieler1,-12 +Spieler5,-44 +Spieler3,-12 diff --git a/04_loesungen/03_javaeditor/alg13_variante_minimumsuche/testfall3.csv b/04_loesungen/03_javaeditor/alg13_variante_minimumsuche/testfall3.csv new file mode 100644 index 0000000..3bc26b2 --- /dev/null +++ b/04_loesungen/03_javaeditor/alg13_variante_minimumsuche/testfall3.csv @@ -0,0 +1,2 @@ +"Name","Punkte" +Spieler1,45 diff --git a/04_loesungen/03_javaeditor/alg13_variante_minimumsuche/testfall4.csv b/04_loesungen/03_javaeditor/alg13_variante_minimumsuche/testfall4.csv new file mode 100644 index 0000000..e74e6d5 --- /dev/null +++ b/04_loesungen/03_javaeditor/alg13_variante_minimumsuche/testfall4.csv @@ -0,0 +1 @@ +"Name","Punkte" diff --git a/04_loesungen/03_javaeditor/alg14a_zeitungsmeldung_loesung/Picture.java b/04_loesungen/03_javaeditor/alg14a_zeitungsmeldung_loesung/Picture.java new file mode 100644 index 0000000..8df3d55 --- /dev/null +++ b/04_loesungen/03_javaeditor/alg14a_zeitungsmeldung_loesung/Picture.java @@ -0,0 +1,699 @@ +import java.awt.image.*; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.BasicStroke; +import java.util.Vector; +import javax.imageio.*; +import java.io.*; +import java.awt.*; +import javax.swing.*; +import java.util.Random; +import java.awt.geom.AffineTransform; +/** + * + * Bildklasse für die Simulation von Processing-Befehlen + * + * Diese Klasse stellt ein BufferedImage bereit, in das mit Processing-Befehlen gezeichnet + * werden kann. + * Zusätzlich kann ein Bildanzeiger über jede Änderung des Bildes informiert werden, + * um "Zurück"-Befehle zu ermöglichen. Der Bildanzeiger ist entweder eine normale Java + * ScrollPane oder ein Actor aus Greenfoot. + * Die Dokumentation der einzelnen Zeichenmethoden ist der Processing-Reference + * (https://processing.org/reference/ steht unter CC-Lizenz: https://creativecommons.org/) + * entnommen und mit Deepl.com ins Deutsche übersetzt. + * + * @version 1.0 from 23.01.2019 + * @author Thomas Schaller (ZPG Informatik Klasse 9) + */ + +public class Picture{ + + // Einstellungmöglichkeiten für das Zeichnen von Rechtecken und Ellipsen + // RADIUS = Mittelpunkt+Radius wird gegeben, CENTER = Mittelpunkt und Breite/Höhe wird gegeben, + // CORNER = Linke obere Ecke + Breite/Höhe, CORNERS = Linke obere und rechte untere Ecke + public static final int RADIUS = 1; + public static final int CENTER = 2; + public static final int CORNER = 3; + public static final int CORNERS = 4; + + // gespeichertes Bild, + private BufferedImage image; + + // aktuelle Farbeinstellungen + private Color background; + private Color pencolor; + private Color fillcolor; + + // aktuelle Stiftdicke + private double stroke; + + // akkteller Koordinatenmodus von Rechtecken und Ellipsen + private int ellipseMode = CENTER; + private int rectMode = CORNER; + + // aktueller Font + private Font textfont = null; + + // muss ein Bildanzeiger benachrichtigt werden + private PictureViewer observer = null; + private boolean autorefresh = true; + + /** + * Erzeugt ein Bild mit Standardgröße 500x400 + */ + public Picture() { + this(500,400); + } + + /** + * Erzeugt ein Bild der angegeben Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public Picture(int width, int height) { + this(width,height, "D0D0D0"); + } + + /** + * Erzeugt ein Bild aus einer Datei + * @param filename Dateiname des Bildes + */ + public Picture(String filename) { + load(filename); + } + + /** + * Erzeugt ein Bild der angegebenen Größe mit festgelegtem Hintergrund + * @param width Breite des Bildes + * @param height Höhe des Bildes + * @param background Farbe des Hintergrunds + */ + public Picture(int width, int height, String background) { + this.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + this.background = decode(background); + this.pencolor = new Color(0,0,0); + this.stroke = 1; + this.fillcolor = null; + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(this.background); + g.fillRect(0,0,width-1, height-1); + } + + /** + * Legt fest, wer das Bild anzeigt. + * Diese ermöglicht die Benachrichtung des Observers, wenn sich das Bild ändert. + * @param observer Anzeiger des Bildes + */ + + public void setObserver(PictureViewer observer) { + this.observer= observer; + } + + /** + * Direktes Setzen des Bildes (für interne Zwecke) + * @param b Bild, das gespeichert werden soll. + */ + public void setImage(BufferedImage b) { + image = b; + } + + /** + * Direktes Abfragen des Bildes (für interne Zwecke) + * @return Bild, das gerade gespeichert ist. + */ + public BufferedImage getImage() { + return image; + } + + /** + * Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + * Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + * der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu. + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public void size(int width, int height){ + pushImage(); + this.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(background); + g.fillRect(0,0,width-1, height-1); + } + + /** + * Liefert die Breite des Bildes zurück. + * @return Breite des Bildes + */ + public int getWidth() { + return image.getWidth(); + } + + /** + * Liefert die Höhe des Bildes zurück. + * @return Höhe des Bildes + */ + public int getHeight() { + return image.getHeight(); + } + + + /** + * Erzeugt eine Kopie des Bildes und übergibt sie an den Observer (falls existent), damit dieser die Versionen speichern kann + */ + private void pushImage() { + if(observer != null) { + observer.pushImage(); + } + } + + + /** + * Legt fest, ob nach jedem Zeichenbefehl automatisch das Bild auch in + * der Oberfläche aktualisiert wird. Die Einstellung "false" beschleunigt + * das Zeichnen aufwändiger Bilder und verhindert "Flackern". + * Das Neuzeichnen kann durch die Methode "refresh" gezielt ausgelöst werden. + * @param autorefresh true = nach jedem Zeichenbefehl die Anzeige aktualisieren, false= nur durch die Methode refresh neu zeichnen + */ + public void setAutoRefresh(boolean autoRefresh) { + this.autorefresh = autoRefresh; + } + + + /** + * Auch die anzeigenden Klasse wird zum Neuzeichnen aufgefordert. + */ + private void repaint() { + if(observer != null && autorefresh) { + observer.repaint(); + } + } + + /** + * Auch die anzeigenden Klasse wird zum Neuzeichnen aufgefordert. + */ + public void refresh() { + if(observer != null) { + observer.repaint(); + } + } + + // ----------------------------------------- Zeichenfunktionen ----------------------------------------------- + /** + * Löscht den Inhalt des Bildes. + * Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt. + */ + + public void clear(){ + pushImage(); + image = new BufferedImage(image.getWidth(), image.getHeight(), image.getType()); + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(background); + g.fillRect(0,0,image.getWidth()-1, image.getHeight()-1); + repaint(); + } + + /** + * Konvertiert die in einem bestimmten Modus gegebenen Koordinaten in die Java-übliche Links_Oben_Breite_Höhe Version + * Die Änderungen werden direkt im Array vorgenommen + * @param coord Array mit vier Koordinateneinträgen im gegebenen Modus + * @param mode Modus der Koordinaten (CORNER, CORNERS, RADIUS oder CENTER) + */ + private void convert(int[] coord, int mode) { + switch(mode) { + case CORNER: break; + case CORNERS: coord[2] -= coord[0]; coord[3] -= coord[1]; break; + case RADIUS: coord[2] *= 2; coord[3] *=2; + case CENTER: coord[0] -= coord[2]/2; coord[1] -= coord[3]/2; + } + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + * Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + * Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void rectMode(int mode) { + rectMode = mode; + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + * Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + * Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als Breite und Höhe der Form. + * ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void ellipseMode(int mode) { + ellipseMode = mode; + } + + + + /** + * Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + * Um eine Linie einzufärben, verwenden Sie die {@link #stroke(int, int, int) stroke()} Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + * Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + * {@link #strokeWeight(double) strokeWeight()} geändert werden. + * @param x1 x-Koordinate des 1. Punktes + * @param y1 y-Koordinate des 1. Punktes + * @param x2 x-Koordinate des 2. Punktes + * @param y2 y-Koordinate des 2. Punktes + */ + public void line(int x1, int y1, int x2, int y2) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + if (stroke > 0) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawLine(x1, y1, x2, y2); + } + repaint(); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, rectMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillRect(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawRect(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, ellipseMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillOval(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawOval(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + int px[] = {x1, x2, x3}; + int py[] = {y1, y2, y3}; + polygon(px, py); + + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + + int px[] = {x1, x2, x3, x4}; + int py[] = {y1, y2, y3, y4}; + polygon(px, py); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + + public void polygon(int[] x, int[] y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(fillcolor != null) { + + g.setColor(fillcolor); + g.fillPolygon(x,y, y.length); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawPolygon(x, y, x.length); + } + repaint(); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + ellipse(x,y,1, 1); + + } + + // ----------------------------------------- Schriftdarstellung ----------------------------------------------- + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param s Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String s, int x, int y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(pencolor != null) { + g.setColor(fillcolor); + g.setStroke(new BasicStroke((float) stroke)); + g.setFont(textfont); + g.drawString(s, x, y); + } + repaint(); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + this.textfont = font; + } + + + // ----------------------------------------- Farbfestlegungen ----------------------------------------------- + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(String color) { + try{ + return new Color( + Integer.valueOf( color.substring( 0, 2 ), 16 ), + Integer.valueOf( color.substring( 2, 4 ), 16 ), + Integer.valueOf( color.substring( 4, 6 ), 16 ) ); + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(int color) { + try{ + if(color >=0 && color < 256) { + return new Color(color,color,color); + } else { + int r = color / 0x010000 % 0xFF; + int g = color / 0x000100 % 0xFF; + int b = color % 0xFF; + System.out.println(""+r+","+g+","+b); + return new Color(r, g, b ); + } + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + this.pencolor = decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + this.pencolor=decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + this.pencolor = new Color(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + this.pencolor = null; + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + this.stroke = width; + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + this.fillcolor = decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + this.fillcolor=decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + this.fillcolor = new Color(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + this.fillcolor = null; + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + if(c < 256) { + this.background=new Color(c,c,c); + } else { + int r = c / 0x010000; + int g = c / 0x000100 % 0xFF; + int b = c % 0xFF; + this.background= new Color(r, g, b ); + } + + this.clear(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + this.background=new Color(r,g,b); + this.clear(); + } + + +// ----------------------------------------- Dateioperationen ----------------------------------------------- + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + try{ + this.image = ImageIO.read(new File(filename)); + this.background = decode("D0D0D0"); + this.pencolor = new Color(0,0,0); + this.fillcolor = null; + this.stroke = 1; + this.repaint(); + + } catch(Exception e) { + System.out.println("Fehler beim Einlesen der Bilddatei"); + } + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + try{ + String[] fn = filename.split("\\."); + if (fn.length== 1) { + ImageIO.write(image, "PNG", new File(filename+".png")); + } else { + + if (fn.length == 2 && (fn[1].toUpperCase().equals("PNG") || + fn[1].toUpperCase().equals("GIF"))){ + ImageIO.write(image, fn[1], new File(filename)); + }else { + System.out.println("Unbekanntes Bildformat"); + } + } + + } catch(Exception e) { + System.out.println("Fehler beim Speichern"); + } + } + + +// ----------------------------------------- Sonstiges ----------------------------------------------- + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + + public Color[][] getPixelArray() { + Color[][] pixel = new Color[image.getWidth()][image.getHeight()]; + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + pixel[x][y] = new java.awt.Color(image.getRGB(x,y)); + } + } + return pixel; + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + size(pixel.length,pixel[0].length); + Graphics2D g = (Graphics2D) image.getGraphics(); + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + g.setColor(pixel[x][y]); + g.fillRect(x, y, 1, 1); + } + } + repaint(); + } + + /** + * Hilfsfunktion zum Verzögern der Ausgabe + * @param millis Wartezeit in Millisekunden + */ + public void delay(int millis) { + try{ + Thread.sleep(millis); + + } catch(Exception e) { + + } + + } + + + +} diff --git a/04_loesungen/03_javaeditor/alg14a_zeitungsmeldung_loesung/PictureViewer.java b/04_loesungen/03_javaeditor/alg14a_zeitungsmeldung_loesung/PictureViewer.java new file mode 100644 index 0000000..9e6b151 --- /dev/null +++ b/04_loesungen/03_javaeditor/alg14a_zeitungsmeldung_loesung/PictureViewer.java @@ -0,0 +1,505 @@ +/** + * Zeigt ein Bild in einem Scrollbereich an. + * Es ist möglich das Bild zu zoomen und mehrere Versionen des Bildes zu speichern, um eine "Rückgängig" Operation durchzuführen. + * @author Thomas Schaller + * @version 1.0 vom 01.02.2019 + */ + +import java.awt.*; +import java.awt.event.*; +import javax.swing.*; +import java.awt.image.*; +import java.util.Vector; + +public class PictureViewer extends JScrollPane +{ + + // das aktuelle Bild + private Picture picture; + + // Bilder für den Züruck-Modus speichern + private static final int ANZ_BACK = 20; + private Vector history; + + // Zeichenfläche + private ImageIcon scrollImageIcon; + private JLabel imageLabel; + + // Zoom Faktor + private double zoomFactor; + public static final int FIT = -1; + public static final int NORMAL = 1; + + + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der Größe 1000x1000 + */ + public PictureViewer() { + this(1000,1000); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public PictureViewer(int width, int height) { + this(width,height, "D0D0D0"); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + * @param background Farbe des Hintergrunds als HEX-String (z.B. "FF3A45") + */ + public PictureViewer(int width, int height, String background) { + this(new Picture(width,height, background)); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild aus einer Bilddatei + * @param filename Name des Bildes + */ + public PictureViewer(String filename) { + this(new Picture(filename)); + } + + /** + * Erzeugt ein ScrollPanel und zeigt das Bild-Objekt an + * @param picture anzuzeigendes Bild + */ + public PictureViewer(Picture picture) + { + this.picture=picture; + + zoomFactor=1; + + scrollImageIcon = new ImageIcon(picture.getImage().getScaledInstance(picture.getImage().getWidth(), picture.getImage().getHeight(), Image.SCALE_FAST)); + imageLabel = new JLabel(scrollImageIcon); + imageLabel.setVerticalAlignment(JLabel.CENTER); + imageLabel.setHorizontalAlignment(JLabel.CENTER); + setViewportView(imageLabel); + + this.setBorder(BorderFactory.createLineBorder(Color.black)); + picture.setObserver(this); + history = new Vector(); + + } + + /** + * Setzt das anzuzeigende Bild neu + * @param picture anzuzeigendes Bild + */ + public void setImage(Picture picture) { + this.history = new Vector(); + this.picture = picture; + setZoom(NORMAL); + } + + /** + * Speichert das übergebene Bild in der History. + * @param b zu speicherndes Bild + */ + public void pushImage() { + if( this.ANZ_BACK > 0) { + if(history.size() == this.ANZ_BACK) { + history.removeElementAt(0); + } + + BufferedImage b = new BufferedImage(picture.getWidth(), picture.getHeight(), picture.getImage().getType()); + Graphics g = b.getGraphics(); + g.drawImage(picture.getImage(), 0, 0, null); + g.dispose(); + + history.add(b); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + private void popImage() { + int anz = history.size(); + if(anz>0) { + BufferedImage img = history.get(anz-1); + history.removeElementAt(anz-1); + picture.setImage(img); + setZoom(zoomFactor); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + public void back() { + popImage(); + } + + /** + * Setzt das angezeigt Bild neu und beachtet dabei den Zoomfaktor. + */ + public void repaint() { + if( picture != null) { + double factor= zoomFactor; + if (zoomFactor == FIT) { + double factorw = ((double) getWidth()-2) / picture.getWidth(); + double factorh = ((double) getHeight()-2) / picture.getHeight(); + factor = Math.min(factorw, factorh); + } + int width = (int) (picture.getWidth()*factor); + int height = (int) (picture.getHeight()*factor); + + + + scrollImageIcon.setImage(picture.getImage().getScaledInstance(width, height, Image.SCALE_DEFAULT)); + revalidate(); + } + } + + /** + * Setzt den Zoom-Faktor für das Bild. + * Als Zoomfaktor sind auch die Konstanten Bildanzeiger.FIT (auf Bildschirmgröße zoomen) und Bildanzeiger.NORMAL (100%) möglich. + * @param factor Zoomfaktor (1.0 = 100%). + */ + public void setZoom(double factor) + { + zoomFactor = factor; + repaint(); + } + + + // Wrappermethoden + /** + * Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + * Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + * der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu. + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public void size(int width, int height){ + picture.size(width, height); + } + + /** + * Liefert die Breite des Bildes zurück. + * @return Breite des Bildes + */ + public int getImageWidth() { + return picture.getWidth(); + } + + /** + * Liefert die Höhe des Bildes zurück. + * @return Höhe des Bildes + */ + public int getImageHeight() { + return picture.getHeight(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + picture.background(c); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + picture.background(r,g,b); + } + + /** + * Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + * Um eine Linie einzufärben, verwenden Sie die {@link #stroke(int, int, int) stroke()} Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + * Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + * {@link #strokeWeight(double) strokeWeight()} geändert werden. + * @param x1 x-Koordinate des 1. Punktes + * @param y1 y-Koordinate des 1. Punktes + * @param x2 x-Koordinate des 2. Punktes + * @param y2 y-Koordinate des 2. Punktes + */ + public void line(int x1, int y1, int x2, int y2) { + picture.line(x1,y1,x2,y2); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + picture.rect(a,b,c,d); + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + picture.ellipse(a,b,c,d); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + picture.triangle(x1,y1,x2,y2,x3,y3); + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + picture.quad(x1,y1,x2,y2,x3,y3,x4,y4); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + public void polygon(int[] x, int[] y) { + picture.polygon(x,y); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + picture.point(x,y); + + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + * Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + * Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void rectMode(int mode) { + picture.rectMode(mode); + } + + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + * Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + * Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als Breite und Höhe der Form. + * ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void ellipseMode(int mode) { + picture.ellipseMode(mode); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + picture.stroke(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + picture.noStroke(); + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + picture.strokeWeight(width); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + picture.fill(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + picture.noFill(); + } + + /** + * Löscht den Inhalt des Bildes. + * Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt. + */ + public void clear(){ + picture.clear(); + } + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + picture.load(filename); + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + picture.save(filename); + } + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param t Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String t, int x, int y) { + picture.text(t,x,y); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + picture.textFont(font); + } + + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + public Color[][] getPixelArray() { + return picture.getPixelArray(); + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + picture.setPixelArray(pixel); + } + + + +} diff --git a/04_loesungen/03_javaeditor/alg14a_zeitungsmeldung_loesung/Table.java b/04_loesungen/03_javaeditor/alg14a_zeitungsmeldung_loesung/Table.java new file mode 100644 index 0000000..ee5a211 --- /dev/null +++ b/04_loesungen/03_javaeditor/alg14a_zeitungsmeldung_loesung/Table.java @@ -0,0 +1,894 @@ +/** + * Die Klasse Table vereinfacht den Zugriff auf CSV-Dateien. + * Die Klassen Table und TableRow ermöglichen einen einfachen Zugriff auf tabellenbasierte + * Dokumente. + * + * @author Thomas Schaller + * @version 1.0 vom 01.02.2019 + */ + +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.ArrayList; +import java.io.*; +import java.util.Scanner; + +import org.jdom.Document; +import org.jdom.Element; +import org.jdom.Attribute; +import org.jdom.JDOMException; +import org.jdom.input.SAXBuilder; +import org.jdom.output.XMLOutputter; +import org.jdom.output.Format; + +public class Table +{ + // Standardtrennzeichen für Spalten + private static final char DEFAULT_SEPARATOR = ';'; + // Standardmarkierung für Texte + private static final char DEFAULT_QUOTE = '"'; + // Standardtrennzeichen für Dezimalzahlen + private static final char DEFAULT_COMMA = ','; + + // mögliche Spaltentypen + private static final String UNKNOWN ="UNKOWN"; + private static final String INT = "INTEGER"; + private static final String DOUBLE = "DOUBLE"; + private static final String FLOAT = "FLOAT"; + + // interne Verwaltung des Dokuments als JDOM-Document-Objekt + private Document doc; + // Verweis auf Element für Kopfzeile + private Element header; + // Ende Attribute + + /** + * Erzeugt leeres Tabellen-Dokument. + */ + public Table() { + this.doc = new Document(); + doc.setRootElement(new Element("CSV-Data")); + this.header = new Element("Header"); + doc.getRootElement().addContent(header); + } + + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei und erstellt ein Tabellenobjekt mit seinen Werten. + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public Table(String filename, String options, char separator, char quote) { + loadCSV(filename, options, separator, quote); + } + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei und erstellt ein Tabellenobjekt mit seinen Werten (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + */ + public Table(String filename, String options) { + loadCSV(filename, options); + } + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei ohne Kopfzeile und erstellt ein Tabellenobjekt mit seinen Werten (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public Table(String filename) { + loadCSV(filename); + } + + // Anfang Methoden + /** + * Liest den Inhalt einer CSV-Datei ohne Kopfzeile (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public void loadCSV(String filename) { + loadCSV(filename, ""); + } + + /** + * Liest den Inhalt einer CSV-Datei (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + */ + public void loadCSV(String filename, String options) { + loadCSV(filename, options, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** + * Liest den Inhalt einer CSV-Datei. + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public void loadCSV(String filename, String options, char separator, char quote) { + doc = new Document(); + doc.setRootElement(new Element("CSV-Data")); + header = new Element("Header"); + doc.getRootElement().addContent(header); + try { + File f = new File(filename); + Scanner scanner = new Scanner(new File(filename)); + if(options.toLowerCase().contains("header") && scanner.hasNext()) { + List entries = parseLine(scanner.nextLine(), separator, quote); + int i= 0; + for(String s : entries) { + Element entry = new Element("Column"); + header.addContent(entry); + entry.setText(s); + entry.setAttribute("type", "unknown"); + i++; + } + } + + List cols = header.getChildren(); + + while (scanner.hasNext()) { + Element line = new Element("Row"); + doc.getRootElement().addContent(line); + List entries = parseLine(scanner.nextLine(), separator, quote); + int i= 0; + + for(String s : entries) { + + if(i==cols.size()) { + Element entry = new Element("Column"); + entry.setAttribute("type", "unknown"); + header.addContent(entry); + cols = header.getChildren(); + } + + Element entry = new Element("Entry"); + entry.setText(s); + line.addContent(entry); + i++; + } + } + scanner.close(); + + } catch (Exception e) { + System.out.println("Fehler beim Lesen der CSV-Datei"); + } + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei ohne Kopfzeile (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public void saveCSV(String filename) { + saveCSV(filename, ""); + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthalten, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile haben soll, + * dann lassen Sie einfach die Option "header" weg. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile haben soll. + * @param filename Dateiname der CSV-Datei. + */ + public void saveCSV(String filename, String options) { + saveCSV(filename, options, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei. + * Wenn die Datei eine Kopfzeile enthalten, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile haben soll, + * dann lassen Sie einfach die Option "header" weg. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile haben soll. + * @param filename Dateiname der CSV-Datei. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public void saveCSV(String filename, String options, char separator, char quote){ + try{ + File f = new File(filename); + PrintStream outputFile = new PrintStream (f); + System.out.println("Speicher in : "+f.getAbsolutePath()); + List columns = header.getChildren(); + String sq = ""+quote; + String ss = ""+separator; + if(quote =='"') sq = "\""; + if(separator =='"') ss = "\""; + + if(options.toLowerCase().contains("header")) { + String h = ""; + for(Element c : columns) { + h += ss + sq + c.getText()+sq; + } + outputFile.println(h.substring(1)); + } + for(int i = 0; i parseLine(String cvsLine) { + return parseLine(cvsLine, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** HIlfsfunktion für die Analyse einer Dateizeile + * @param cvsLine Zeile aus der Datei + * @param sparator Trennzeichen für die Spalten + * @return Liste von String für die einzelnen Spalten + */ + private List parseLine(String cvsLine, char separator) { + return parseLine(cvsLine, separator, DEFAULT_QUOTE); + } + + /** HIlfsfunktion für die Analyse einer Dateizeile + * @param cvsLine Zeile aus der Datei + * @param sparator Trennzeichen für die Spalten + * @param customQuote Kennung für Strings + * @return Liste von String für die einzelnen Spalten + */ + private List parseLine(String cvsLine, char separator, char customQuote) { + + List result = new ArrayList<>(); + + //if empty, return! + if (cvsLine == null && cvsLine.isEmpty()) { + return result; + } + + //ggf. Default-Value laden + if (customQuote == ' ') { + customQuote = DEFAULT_QUOTE; + } + + if (separator == ' ') { + separator = DEFAULT_SEPARATOR; + } + + StringBuffer curVal = new StringBuffer(); + boolean inQuotes = false; + boolean startCollectChar = false; + boolean doubleQuotesInColumn = false; + + char[] chars = cvsLine.toCharArray(); + + for (char ch : chars) { + + if (inQuotes) { // aktueller Text ist in Quotes eingeschlossen + startCollectChar = true; + + if (ch == customQuote) { // Quotes werden beendet, aber Achtung bei "" => Metazeichen + inQuotes = false; + if (ch == '\"') { + doubleQuotesInColumn = true; + } + + } else { + + if (ch == '\"' && !doubleQuotesInColumn) { + doubleQuotesInColumn = true; + } else { + curVal.append(ch); + doubleQuotesInColumn = false; + } + + } + } else { + if (ch == customQuote) { + + inQuotes = true; + + //Fixed : allow "" in empty quote enclosed + if (ch == '\"'){ + if(doubleQuotesInColumn) { + curVal.append('"'); + doubleQuotesInColumn = false; + } else doubleQuotesInColumn = true; + + + } + } + else { + doubleQuotesInColumn = false; + if (ch == separator) { + + result.add(curVal.toString()); + + curVal = new StringBuffer(); + startCollectChar = false; + + } else if (ch == '\r') { + //ignore LF characters + continue; + } else if (ch == '\n') { + //the end, break! + break; + } else { + curVal.append(ch); + } + } + } + + } + result.add(curVal.toString()); + return result; + } + + /** + * Sucht die Nummer einer durch Namen gegebenen Spalte. + * @param name Name der Spalte + * @return Nummer der Spalte + */ + + private int findColumnNumber(String name) { + List columns = header.getChildren(); + int i = 0; + for(Element c : columns) { + if (c.getText().toLowerCase().equals(name.toLowerCase())) { + return i; + + } + i++; + } + return -1; + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an. + */ + public void addColumn() { + Element entry = new Element("Column"); + entry.setAttribute("type", Table.UNKNOWN); + header.addContent(entry); + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an und benennt sie. + * @param title Bezeichnung der Spalte + */ + public void addColumn(String title) { + addColumn(); + Element nc = ((List)(header.getChildren())).get(header.getChildren().size()-1); + nc.setText(title); + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an und benennt und typisiert sie. + * @param title Bezeichnung der Spalte + * @param type Typ der Spalte (UNKNOWN, DOUBLE, INTEGER, FLOAT) + */ + public void addColumn(String title, String type) { + addColumn(title); + Element nc = ((List)(header.getChildren())).get(header.getChildren().size()-1); + nc.setAttribute("type", type); + } + + /** + * Löscht eine Spalte. + * @param i Nummer der Spalte. + */ + public void removeColumn(int i) { + List lines = doc.getRootElement().getChildren(); + for(Element l : lines) { + if(l.getChildren().size()>i) l.removeContent(i); + } + } + + /** + * Löscht eine Spalte + * @param name Name der Spalte + */ + public void removeColumn(String name) { + try{ + removeColumn(findColumnNumber(name)); + } catch(Exception e) { System.out.println("Unbekannter Spaltenname");} + } + + /** + * Liefert die Anzahl der Spalten in der Tabelle + * @return Anzahl der Spalten + */ + public int getColumnCount() { + return header.getChildren().size(); + } + + /** + * Liefert die Anzahl der Zeilen in der Tabelle + * @return Anzahl der Zeilen + */ + public int getRowCount() { + return doc.getRootElement().getChildren().size()-1; + } + + /** + * Löscht alle Zeilen der Tabelle. + * Die Spaltenüberschriften und Typen bleiben erhalten. + */ + public void clearRows() { + doc.getRootElement().removeChildren("Row"); + } + + /** + * Fügt eine neue Zeile an das Ende der Tabelle an. + * @return ein TableRow-Objekt für diese neue Zeile + */ + public TableRow addRow() { + Element row = new Element("Row"); + doc.getRootElement().addContent(row); + return new TableRow(doc, row); + } + + /** + * Löscht eine Zeile + * @param i Nummer der Zeile + */ + public void removeRow(int i) { + if(i rows = doc.getRootElement().getChildren(); + return new TableRow(doc, rows.get(i+1)); + } + return null; + } + + /** + * Liefert die ganze Tabelle als Array von TableRow-Objekten + * @return Array von TableRow-Objekten + */ + public TableRow[] rows() { + TableRow[] rows = new TableRow[getRowCount()]; + for(int i = 0; i < getRowCount(); i++) { + rows[i] = getRow(i); + } + return rows; + } + + /** + * Liefert den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param column Spaltennummer + * @return Wert der Zelle + */ + public int getInt(int row, int column) { + return getRow(row).getInt(column); + } + + /** + * Liefert den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param name Name der Spalte + * @return Wert der Zelle + */ + public int getInt(int row, String name) { + return getRow(row).getInt(name); + } + + /** + * Setzt den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param column Spaltennummer + * @param value neuer Wert der Zelle + */ + public void setInt(int row, int column,int value) { + getRow(row).setInt(column, value); + } + + /** + * Setzt den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(int row, String name, int value) { + getRow(row).setInt(name, value); + } + + /** + * Liefert alle Werte einer Zeile als Integer-Array. + * @param row Nummer der Zeile + * @return int-Array, dass alle Werte der Zeile enthält + */ + public int[] getIntRow(int row) { + try{ + TableRow trow = getRow(row); + int anz = getColumnCount(); + int[] r = new int[anz]; + for(int i=0; i) (header.getChildren())).get(i).getText(); + } else { + return ""; + } + } + + /** + * Liefert die Nummer einer Spalte + * @param name Name der Spalte + * @return Nummer der Spalte + */ + public int getColumn(String name) { + List columns = header.getChildren(); + int i = 0; + while (i < columns.size()) { + if (columns.get(i).getText().toLowerCase().equals(name.toLowerCase())) { + return i; + } + i++; + } // end of while + return -1; + } + + + /** + * Erzeugt eine neue Zeile mit i Spalten + * Wenn bisher nicht genügend Spalten vorhanden sind, werden automatisch neue Spalten hinzugefügt (auch zum Header) + * @param i Anzahl der Spalten + */ + private Element buildRow(int i) { + List columns = header.getChildren(); + Element entry=null; + for(int j=0; j<=i; j++) { + + if(j==columns.size()) { + Element h = new Element("Column"); + h.setAttribute("type", "unknown"); + header.addContent(h); + columns = header.getChildren(); + } + if(j==current.getChildren().size()) { + entry = new Element("Entry"); + current.addContent(entry); + + } + + } + return entry; + + } + + /** + * Erzeugt eine neue Zeile. + * Es werden genügend Spalten erzeugt, dass ein Wert in Spalte "name" eingetragen werden kann + * @param name Name der Spalte + */ + private Element buildRow(String name) { + List columns = header.getChildren(); + int i = 0; + for(Element c: columns) { + + if(c.getText().toLowerCase().equals(name.toLowerCase())) { + return buildRow(i); + } + i++; + } + return null; + + } + + /** + * Liefert den Wert einer Zelle als String + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public String getString(int i) { + if(i >= current.getContent().size()) return ""; + Element e = (Element) current.getContent(i) ; + if(e!=null) { + return e.getText(); + } else { + return ""; + } + } + + /** + * Liefert den Wert einer Zelle als String + * @param name Name der Spalte + * @return Wert der Zelle + */ + public String getString(String name) { + return getString(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als String + * @param i Nummer der Spalte + * @param text neuer Wert der Zelle + */ + public void setString(int i, String text) { + + Element e = buildRow(i); + if(e!=null) e.setText(text); + } + + /** + * Setzt den Wert einer Zelle als String + * @param name Name der Spalte + * @param text neuer Wert der Zelle + */ + public void setString(String name, String text) { + Element e = buildRow(name); + if(e!=null) e.setText(text); + } + + + /** + * Liefert den Wert einer Zelle als Int-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public int getInt(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Integer.parseInt(e.getText()); + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Int-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public int getInt(String name) { + return getInt(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Int-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(int i,int value) { + + Element e = buildRow(i); + if(e!=null) e.setText(""+value); + } + + /** + * Setzt den Wert einer Zelle als Int-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(String name, int value) { + Element e = buildRow(name); + if(e!=null) e.setText(""+value); + } + + /** + * Liefert den Wert einer Zelle als Float-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public float getFloat(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Float.parseFloat(e.getText().replace(",",".")); + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Float-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public float getFloat(String name) { + return getFloat(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Float-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setFloat(int i,float value) { + + Element e = buildRow(i); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Setzt den Wert einer Zelle als Float-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setFloat(String name, float value) { + Element e = buildRow(name); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Liefert den Wert einer Zelle als Double-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public double getDouble(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Double.parseDouble(e.getText().replace(",",".")); + + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Double-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public double getDouble(String name) { + return getDouble(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Double-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setDouble(int i,double value) { + + Element e = buildRow(i); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Setzt den Wert einer Zelle als Double-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setDouble(String name, double value) { + Element e = buildRow(name); + if(e!=null) e.setText(format.format(value)); + } + +} diff --git a/04_loesungen/03_javaeditor/alg14a_zeitungsmeldung_loesung/XML.java b/04_loesungen/03_javaeditor/alg14a_zeitungsmeldung_loesung/XML.java new file mode 100644 index 0000000..c06c490 --- /dev/null +++ b/04_loesungen/03_javaeditor/alg14a_zeitungsmeldung_loesung/XML.java @@ -0,0 +1,637 @@ +/** + * Klasse zum Vereinfachten Zugriff auf XML-Dokumente + * Diese Klasse ist für den Einsatz in der Schule gedacht und soll den Schülern + * einen einfachen Zugriff auf XML-Dokumente ermöglichen. Die zur Verfügung + * stehenden Befehle sind wie in Processing realisiert. + * Dabei ist jeder Teilbaum des Dokuments wieder als XML-Objekt zugreifbar, das + * intern auf die gleiche XML-Dokumentstruktur zugreift. + * Dies ermöglicht bei unsachgemäßem Gebrauch die XML-Struktur zu zerstören. Im + * normalen Gebrauch sollte dies aber nicht relevant sein. + * + * Benötigt: jdom-1.1.3.jar + + * @author Thomas Schaller + * @version 1.0 vom 31.01.2019 + */ +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.ArrayList; +import java.io.*; + +import org.jdom.Document; +import org.jdom.Element; +import org.jdom.Attribute; +import org.jdom.JDOMException; +import org.jdom.input.SAXBuilder; +import org.jdom.output.XMLOutputter; +import org.jdom.output.Format; + +public class XML { + // Anfang Attribute + // XML-Dokumentstruktur + private Document doc; + // Zeiger auf das aktuelle Element + private Element current; + // Ende Attribute + + /** + * Erzeugt ein leeres XMLDokument + */ + public XML() { + this.doc = new Document(); + this.current = null; + } + + /** + * Erzeugt ein XML-Dokument aus einer Datei + * @param filename Dateiname der XML-Datei + */ + public XML(String filename) { + loadXML(filename); + } + + /** + * interner Konstruktor, um ein XML Objekt zu erzeugen, das auf einen bestimmten Knoten verweist + * @param doc die XML-Dokumentstruktur + * @param current Zeiger auf das aktuelle Element + */ + private XML(Document doc, Element current) { + this.doc = doc; + this.current = current; + } + + // Anfang Methoden + /** Öffnet das durch den Dateinamen gegebene Dokument + * @param filename Dateiname des XML-Files + */ + public void loadXML(String filename) { + doc = null; + File f = new File(filename); + + try { + // Das Dokument erstellen + SAXBuilder builder = new SAXBuilder(); + doc = builder.build(f); + + } catch (JDOMException e) { + e.printStackTrace(); + + } catch (IOException e) { + e.printStackTrace(); + } + // Zeiger im Baum auf Root-Element + current = doc.getRootElement(); + } + + /** Speichert den XML-Baum im angegebenen Dateinamen + * @param filename Dateiname des XML-Files + */ + public void saveXML(String filename) { + try { + // new XMLOutputter().output(doc, System.out); + XMLOutputter xmlOutput = new XMLOutputter(); + + // display nice nice + xmlOutput.setFormat(Format.getPrettyFormat()); + File f = new File(filename); + FileOutputStream outputFile = new FileOutputStream(f); + System.out.println("Speicher in : "+f.getAbsolutePath() ); + xmlOutput.output(doc, outputFile); + outputFile.close(); + System.out.println("File Saved!"); + } catch (IOException io) { + System.out.println(io.getMessage()); + } + + } + + //----------------------------------------------- Zeigerbewegungen -------------------------------------------------- + /** + * liefert ein XML-Objekt, das auf den Vaterknoten des aktuellen Elements zeigt. + * @return Vater des aktuellen Objekts. + */ + public XML getParent() { + if(current != null) { + Element parent = current.getParentElement(); + if (parent == null) { + return null; + } else { + return new XML(doc, parent); + } + } + return null; + } + + /** + * Überprüft, ob das Element irgendwelche Kinder hat oder nicht, und gibt das Ergebnis als boolean zurück. + * @return true, wenn Kinder vorhanden sind, sonst false + */ + public boolean hasChildren() { + if (current == null) { + return doc.hasRootElement(); + } else { + return current.getChildren().size()>0; + } + } + + /** + * Ermittelt die Namen aller Kinder des Elements und gibt die Namen als ein Array von Strings zurück. + * Dies ist dasselbe wie das Durchlaufen und Aufrufen von getName() auf jedem untergeordneten Element einzeln. + * @return Liste aller Namen der Kinder + */ + public String[] listChildren() { + if (current == null) { + if(doc.hasRootElement()) { + String[] names = new String[0]; + names[0] = doc.getRootElement().getName(); + return names; + } else { + return null; + } + } else { + List ch_element = current.getChildren(); + String[] names = new String[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + names[i] = ch_element.get(i).getName(); + } + return names; + } + } + + /** + * Liefert alle Kinder des Elements als Array von XML-Objekten. + * @return Array der Kinder als XML-Objekte + */ + public XML[] getChildren() { + if (current == null) { + if(doc.hasRootElement()) { + XML[] ch_xml = new XML[1]; + ch_xml[0] = new XML(doc, doc.getRootElement()); + return ch_xml; + } else { + return null; + } + } else { + List ch_element = current.getChildren(); + XML[] ch_xml = new XML[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + ch_xml[i] = new XML(doc, ch_element.get(i)); + } + return ch_xml; + } + } + + /** + * Liefert bestimmte Kinder des Elements als Array von XML-Objekten. + * Die Methode gibt dabei alle Kinder zurück, die dem angegebenen Namen entsprechen. + * @param name Name der gesuchten Kind-Objekte + * @return Array der Kinder als XML-Objekte + */ + public XML[] getChildren(String name) { + if (current == null) { + if(doc.hasRootElement()) { + XML[] ch_xml = new XML[1]; + ch_xml[0] = new XML(doc, doc.getRootElement()); + if(doc.getRootElement().getName().equals(name)){ + return ch_xml; + } else { + return null; + } + } else { + return null; + } + } else { + List ch_element = current.getChildren(name); + XML[] ch_xml = new XML[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + ch_xml[i] = new XML(doc, ch_element.get(i)); + } + return ch_xml; + } + } + + /** + * Liefert das erste Kind des Elements mit einem bestimmten Namen. + * Die Methode gibt das erste Kind zurück, das dem angegebenen Namen entsprechen. + * @param name Name des gesuchten Kind-Objektes + * @return Kind als XML-Objekt + */ + + public XML getChild(String name) { + if (current == null) { + Element e = doc.getRootElement(); + if (e.getName().equals(name)) { + return new XML(doc, e); + } else { + return null; + } + } else { + String[] names = name.split("/"); + Element e = current; + int i = 0; + while(i < names.length) { + e = e.getChild(names[i]); + if (e==null) return null; + i++; + } + return new XML(doc, e); + } + } + + /** + * Liefert das i. Kind des Elements. + * Die Methode gibt das i. Kind des aktuellen Elements zurück. + * @param i Nummer des Kindes + * @return Kind als XML-Objekt + */ + public XML getChild(int i) { + if (current == null) { + return new XML(doc, doc.getRootElement()); + } else { + List ch_element = current.getChildren(); + if (i>=ch_element.size()) return null; + return new XML(doc, ch_element.get(i)); + } + } + + //--------------------------------------------------- Methoden für das aktuelle Element ------------------------------------------------- + /** + * Frage den Namen des aktuellen Elements ab + * @return Namen des Elements + */ + public String getName() { + if (current==null) return ""; + return current.getName(); + } + + /** + * Setze den Namen des aktuellen Elements. + * @param name Neuer Name des Elements + */ + public void setName(String name) { + if (current==null) return; + current.setName(name); + } + + /** + * liefert die Anzahl der Attribute eines Elements. + * @return Anzahl des Attribute + */ + public int getAttributeCount() { + if (current == null) return 0; + return current.getAttributes().size(); + } + + /** + * liefert zurück, ob das aktuelle Element Attribute hat . + * @return true, wenn es Attribute gibt + */ + public boolean hasAttribute() { + if (current == null) return false; + return current.getAttributes().size()>0; + } + + /** + * Ruft alle Attribute des angegebenen Elements ab und gibt sie als Array von Strings zurück. + * @return Liste der Attributnamen + */ + public String[] listAttributes() { + if (current == null) return null; + List attr = current.getAttributes(); + String[] names = new String[attr.size()]; + for(int i=0; i < attr.size() ; i++) { + names[i] = attr.get(i).getName(); + } + return names; + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs + */ + public String getString(String attribute) { + if (current==null) return ""; + return current.getAttributeValue(attribute); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs + */ + public String getString(String attribute, String defaultValue) { + if (current==null) return defaultValue; + return current.getAttributeValue(attribute,defaultValue); + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param text neuer Wert des Attributs + */ + public void setString(String attribute, String text) { + if (current==null) return; + current.setAttribute(attribute, text); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Integer-Zahl + */ + public int getInt(String attribute) { + if (current==null) return 0; + try{ + int i = Integer.parseInt(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als Integer-Zahl + */ + public int getInt(String attribute, int defaultValue) { + if (current==null) return defaultValue; + try{ + int i = Integer.parseInt(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setInt(String attribute, int value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Float-Zahl + */ + public float getFloat(String attribute) { + if (current==null) return 0; + try{ + float i = Float.parseFloat(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als Float-Zahl + */ + public float getFloat(String attribute, float defaultValue) { + if (current==null) return defaultValue; + try{ + float i = Float.parseFloat(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setFloat(String attribute, float value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Double-Zahl + */ + public double getDouble(String attribute) { + if (current==null) return 0; + try{ + double i = Double.parseDouble(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + +/** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als double-Zahl + */ + public double getDouble(String attribute, double defaultValue) { + if (current==null) return defaultValue; + try{ + double i = Double.parseDouble(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setDouble(String attribute, double value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt den Inhalt/Text des aktuellen Elements ab + * @return Inhalt des Elements + */ + public String getContent() { + if ( current==null) return ""; + + return current.getText(); + } + + /** + * Fragt den Inhalt/Text des aktuellen Elements ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardtext + * @return Inhalt des Elements + */ + public String getContent(String defaultValue) { + if ( current==null) return defaultValue; + String t = current.getText(); + if(t.equals("")) t = defaultValue; + return t; + } + + /** + * Setzt den Inhalt/Text des aktuellen Elements + * @param text Neuer Inhalt des Elements + */ + public void setContent(String text) { + if ( current==null) return; + current.setText(text); + } + + + /** + * Fragt den Inhalt des aktuellen Elements als Integerzahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ public int getIntContent(int defaultValue) { + if ( current==null) return defaultValue; + try{ + int i = Integer.parseInt(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Integerzahl ab + * @return Inhalt des Elements + */ + public int getIntContent() { + if ( current==null) return 0; + try{ + int i = Integer.parseInt(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setIntContent(int value) { + if ( current==null) return; + current.setText(""+value); + } + + + /** + * Fragt den Inhalt des aktuellen Elements als Floatzahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ + public float getFloatContent(float defaultValue) { + if ( current==null) return defaultValue; + try{ + float i = Float.parseFloat(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Floatzahl ab + * @return Inhalt des Elements + */ + public float getFloatContent() { + if ( current==null) return 0; + try{ + float i = Float.parseFloat(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setFloatContent(float value) { + if ( current==null) return; + current.setText(""+value); + } + +/** + * Fragt den Inhalt des aktuellen Elements als Doublezahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ + public double getDoubleContent(double defaultValue) { + if ( current==null) return defaultValue; + try{ + double i = Double.parseDouble(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Doublezahl ab + * @return Inhalt des Elements + */ + public double getDoubleContent() { + if ( current==null) return 0; + try{ + double i = Double.parseDouble(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setDoubleContent(double value) { + if ( current==null) return; + current.setText(""+value); + } + + + // ----------------------------------------------- XML-Struktur aufbauen ------------------------------------------------ + /** Erzeuge neues Element nach der aktuellen Position und setze dieses als aktuelles Element + * @param name Name des neuen Elements + * @return neues Element als XML-Objekt + */ + public XML addChild(String name) { + Element e = new Element(name); + if(current == null){ // man ist auf Root-Ebene + doc.setRootElement(e); + + } + else { + current.addContent(e); + } // end of if-else + return new XML(doc, e); + } + + /** + * liefert das aktuelle Element als jdom-Element-Objekt + * @return aktuelles Element + */ + private Element getCurrent() { + return current; + } + + /** + * löscht ein Kind des aktuellen Knotens. + * Ist kid kein Kind des aktuellen Elements passiert gar nichts. + * @param kid XML-Objekt des Kindes + */ + public void removeChild(XML kid) { + if (current == null) return; + Element e = kid.getCurrent(); + int index = current.indexOf(e); + if(index >= 0) { current.removeContent(e);} + } + +} diff --git a/04_loesungen/03_javaeditor/alg14a_zeitungsmeldung_loesung/Zeitungsmeldung.java b/04_loesungen/03_javaeditor/alg14a_zeitungsmeldung_loesung/Zeitungsmeldung.java new file mode 100644 index 0000000..2f1bd9e --- /dev/null +++ b/04_loesungen/03_javaeditor/alg14a_zeitungsmeldung_loesung/Zeitungsmeldung.java @@ -0,0 +1,139 @@ +import java.awt.Font; + +/** + * Automatische Zeitungsmeldung mit Maximum und Durchschnitt, Zahlen werden aus CSV-Datei gelesen. + * + * @author Schaller + * @version 29.11.18 + */ + +public class Zeitungsmeldung extends Picture + +{ + // Liste mit allen Werten //<>// + int[] punkte; + String[] namen; + + // Schriften + Font kleineSchrift; + Font grosseSchrift; + + public Zeitungsmeldung() { + size(1000, 700); + background(0); + kleineSchrift = new Font( Font.SANS_SERIF, Font.PLAIN, 12 ); + grosseSchrift = new Font( Font.SANS_SERIF, Font.PLAIN, 20 ); + + // CSV-Datei laden und anzeigen + ladeTabelle("punkte.csv"); + int summe = berechneSumme(punkte); + System.out.println("Summe: "+summe); + schreibeZeitungsmeldung(); + } + + public void ladeTabelle(String name) { + // Tabelle aus CSV-Datei laden + Table csv = new Table(name, "header",',','"'); + + if (csv != null && csv.getColumnCount()==2) { + + // Initialisiere Arrays, in die alle Zeilen der Tabelle passen + punkte = new int[csv.getRowCount()]; + namen = new String[csv.getRowCount()]; + + // Fülle die Arrays mit Werten aus der Tabelle + for (int i = 0; i < punkte.length; i++) { + // Lies Wert aus der i. Zeile und der Spalte "Punkte" bzw. "Name" + punkte[i] = csv.getInt(i, "Punkte"); + namen[i] = csv.getString(i, "Name"); + } + } + } + + public void schreibeZeitungsmeldung() { + + clear(); + + // Überschrift + fill(225,225,255); + stroke(155,155,255); + textFont(grosseSchrift); + text("BREAKING NEWS",5,32); + strokeWeight(3); + line(2,4,400,4); + line(2,45,400,45); + strokeWeight(2); + line(2,7,400,7); + line(2,42,400,42); + strokeWeight(1); + textFont(kleineSchrift); + fill(240); + + int anzahlSpieler = anzahlSpieler(namen);; + int anzahlSpiele = punkte.length; + int summe = berechneSumme(punkte); + double durchschnitt = berechneDurchschnitt(punkte); + + text("Großartiges Ergebnis - Klasse XY nimmt an Binärwettbewerb teil.", 2, 60); + text("Die Klasse XY hat beim diesjährigen Binärwettbewerb teilgenommen", 2, 82); + text("und ein großartiges Ergebnis erzielt. Die "+anzahlSpieler+" Schülerinnen und", 2, 94); + text("Schüler der Klasse erreichten in "+anzahlSpiele+" Spielen eine Gesamtpunktzahl",2,106); + text("von "+summe+". Das ist ein Durchschnitt von "+durchschnitt+" pro Spiel.",2,118); + + } + + public int berechneSumme(int[] zahlen) { + int summe; + + // Sind überhaupt Daten da? + if(zahlen.length==0 ) { //<>// + return -1; + } + + // Startwerte setzen + summe = 0; + + // Alle Arrayelemente untersuchen + for (int i=0; i< zahlen.length; i++) { + summe = summe + zahlen[i]; + } + // Gib die Summe zurück + return summe; + } + + public double berechneDurchschnitt(int[] zahlen) { + double durchschnitt; + + // Berechne Durchschnitt aus der Summe + durchschnitt = (double) berechneSumme(zahlen)/zahlen.length; + + return durchschnitt; + } + + public int anzahlSpieler(String[] namen) { + int anzahl; + boolean gefunden; + // Startwerte setzen + anzahl = 0; + + // Nach jedem Namen suchen + for(int i=0; i< namen.length; i ++) { + // Prüfe, ob der i. Name ein neuer Name ist + // Kontrolliere dazu alle vorhergehenden, ob ein gleicher Name dabei ist. + gefunden = false; + for(int j=0; j < i; j++) { + // Wenn der Name gleich ist, dann merke dir das + if(namen[i].equals(namen[j])) { + gefunden = true; + } + } + // Wenn nach Kontrolle aller vorhergehender Namen der aktuelle nicht dabei + // ist, dann ist er neu und muss gezählt werden. + if (!gefunden) { + anzahl++; + } + } + return anzahl; + } +} + diff --git a/04_loesungen/03_javaeditor/alg14a_zeitungsmeldung_loesung/ZeitungsmeldungGUI.java b/04_loesungen/03_javaeditor/alg14a_zeitungsmeldung_loesung/ZeitungsmeldungGUI.java new file mode 100644 index 0000000..f3e09ad --- /dev/null +++ b/04_loesungen/03_javaeditor/alg14a_zeitungsmeldung_loesung/ZeitungsmeldungGUI.java @@ -0,0 +1,68 @@ +import java.awt.*; +import java.awt.event.*; +import javax.swing.*; +import javax.swing.event.*; + +/** + * + * description + * + * @version 1.0 from 06.10.2018 + * @author + */ + +public class ZeitungsmeldungGUI extends JFrame { + // Anfang Attribute + private JButton bZeichnen = new JButton(); + private PictureViewer imagePanel1 = new PictureViewer(); + + // Ende Attribute + + public ZeitungsmeldungGUI (String title) { + super (title); + setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); + int frameWidth = 768; + int frameHeight = 551; + setSize(frameWidth, frameHeight); + Dimension d = Toolkit.getDefaultToolkit().getScreenSize(); + int x = (d.width - getSize().width) / 2; + int y = (d.height - getSize().height) / 2; + setLocation(x, y); + Container cp = getContentPane(); + cp.setLayout(null); + // Anfang Komponenten + bZeichnen.setBounds(256, 456, 273, 33); + bZeichnen.setText("Balkendiagramm zeichnen"); + bZeichnen.setMargin(new Insets(2, 2, 2, 2)); + bZeichnen.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent evt) { + bZeichnen_ActionPerformed(evt); + } + }); + cp.add(bZeichnen); + imagePanel1.setBounds(24, 16, 705, 409); + cp.add(imagePanel1); + + bZeichnen.setBounds(256, 456, 273, 33); + bZeichnen.setText("Zeitungsmeldung generieren"); + // Ende Komponenten + setResizable(false); + setVisible(true); + } + + // Anfang Methoden + public void bZeichnen_ActionPerformed(ActionEvent evt) { + Zeitungsmeldung bild = new Zeitungsmeldung(); + imagePanel1.setImage(bild); + imagePanel1.getViewport().repaint(); + imagePanel1.getVerticalScrollBar().setValue(1); + imagePanel1.getVerticalScrollBar().setValue(0); + } // end of bZeichnen_ActionPerformed + + // Ende Methoden + + public static void main(String[] args) { + new ZeitungsmeldungGUI("ZeitungsmeldungGUI"); + } +} + diff --git a/04_loesungen/03_javaeditor/alg14a_zeitungsmeldung_loesung/ZeitungsmeldungGUI.jfm b/04_loesungen/03_javaeditor/alg14a_zeitungsmeldung_loesung/ZeitungsmeldungGUI.jfm new file mode 100644 index 0000000..e3758b6 --- /dev/null +++ b/04_loesungen/03_javaeditor/alg14a_zeitungsmeldung_loesung/ZeitungsmeldungGUI.jfm @@ -0,0 +1,103 @@ +object ZeitungsmeldungGUI: TFGUIForm + Left = 761 + Top = 237 + BorderIcons = [biSystemMenu] + Caption = 'ZeitungsmeldungGUI' + ClientHeight = 512 + ClientWidth = 752 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -10 + Font.Name = 'MS Sans Serif' + Font.Style = [] + FormStyle = fsStayOnTop + OldCreateOrder = True + Position = poDesigned + ShowHint = True + Visible = True + OnClose = FormClose + OnCloseQuery = FormCloseQuery + OnResize = FormResize + FrameType = 5 + Resizable = False + Undecorated = False + Background = clBtnFace + PixelsPerInch = 96 + TextHeight = 13 + object bZeichnen: TJButton + Tag = 4 + Left = 256 + Top = 456 + Width = 273 + Height = 33 + Hint = 'jButton1' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Dialog' + Font.Style = [fsBold] + Foreground = 3355443 + Background = 15658734 + actionPerformed = 'bZeichnen_ActionPerformed' + Text = 'Zeitungsmeldung generieren' + Mnemonic = 0 + DisplayedMnemonicIndex = 0 + Selected = False + BorderPainted = True + FocusPainted = False + ContentAreaFilled = True + HorizontalAlignment = CENTER + VerticalAlignment = CENTER + HorizontalTextPosition = RIGHT + VerticalTextPosition = CENTER + IconTextGap = 4 + RolloverEnabled = False + Border.BorderType = NoBorder + Border.LineColor = clBlack + Border.LineThickness = 0 + Border.LineRounded = False + Border.EtchHighlightColor = clBlack + Border.EtchShadowColor = clBlack + Border.Etchtype = 0 + Border.BevelHighlightColor = clBlack + Border.BevelShadowColor = clBlack + Border.Beveltype = 0 + Border.MatteColor = clBlack + Border.MatteTop = 0 + Border.MatteLeft = 0 + Border.MatteBottom = 0 + Border.MatteRight = 0 + end + object imagePanel1: TJPanel + Tag = 38 + Left = 24 + Top = 16 + Width = 705 + Height = 409 + Hint = 'imagePanel1' + HelpKeyword = 'ImagePanel' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Dialog' + Font.Style = [fsBold] + Foreground = 3355443 + Background = clBtnFace + Border.BorderType = NoBorder + Border.LineColor = clBlack + Border.LineThickness = 0 + Border.LineRounded = False + Border.EtchHighlightColor = clBlack + Border.EtchShadowColor = clBlack + Border.Etchtype = 0 + Border.BevelHighlightColor = clBlack + Border.BevelShadowColor = clBlack + Border.Beveltype = 0 + Border.MatteColor = clBlack + Border.MatteTop = 0 + Border.MatteLeft = 0 + Border.MatteBottom = 0 + Border.MatteRight = 0 + end +end diff --git a/04_loesungen/03_javaeditor/alg14a_zeitungsmeldung_loesung/jdom-1.1.3.jar b/04_loesungen/03_javaeditor/alg14a_zeitungsmeldung_loesung/jdom-1.1.3.jar new file mode 100644 index 0000000..a287727 Binary files /dev/null and b/04_loesungen/03_javaeditor/alg14a_zeitungsmeldung_loesung/jdom-1.1.3.jar differ diff --git a/04_loesungen/03_javaeditor/alg14a_zeitungsmeldung_loesung/punkte.csv b/04_loesungen/03_javaeditor/alg14a_zeitungsmeldung_loesung/punkte.csv new file mode 100644 index 0000000..d6e8dfd --- /dev/null +++ b/04_loesungen/03_javaeditor/alg14a_zeitungsmeldung_loesung/punkte.csv @@ -0,0 +1,6 @@ +"Name","Punkte" +Niko,216 +Klaus,591 +Anna,857 +Lena,180 +Winfried,168 diff --git a/04_loesungen/03_javaeditor/alg14b_highscore_loesung/Highscore.java b/04_loesungen/03_javaeditor/alg14b_highscore_loesung/Highscore.java new file mode 100644 index 0000000..dcf95e0 --- /dev/null +++ b/04_loesungen/03_javaeditor/alg14b_highscore_loesung/Highscore.java @@ -0,0 +1,127 @@ +import java.awt.Font; + +/** + * Balkendiagramm für int-Array, Zahlen werden aus CSV-Datei gelesen, Umwandlung in sortierte Tabelle. + * Hinweis zur Benutzung: + * Start des Algorithmus: Klicke den Button "Was tut es?" an. + * + * @author Schaller + * @version 29.11.18 + */ + +public class Highscore extends Picture + +{ +// Liste mit allen Werten //<>// + int[] zahlen; + String[] namen; + +// Hilfsvariablen für die Suche + int akt_maximum=-1; // aktuell groesstes Element + int akt=-2; // aktuell untersuchtes Element + int verzoegerung=1000; // Geschwindigkeit der Ausführung + + // Schriften + Font kleineSchrift; + Font grosseSchrift; + + public Highscore() { + size(1000, 700); + background(0); + kleineSchrift = new Font( Font.SANS_SERIF, Font.PLAIN, 12 ); + grosseSchrift = new Font( Font.SANS_SERIF, Font.PLAIN, 20 ); + + // CSV-Datei laden und anzeigen + ladeTabelle("punkte.csv"); + zeichneBalken(); + } + + public void ladeTabelle(String name) { + // Tabelle aus CSV-Datei laden + Table csv = new Table(name, "header",',','"'); + + if (csv != null && csv.getColumnCount()==2) { + + // Initialisiere Arrays, in die alle Zeilen der Tabelle passen + zahlen = new int[csv.getRowCount()]; + namen = new String[csv.getRowCount()]; + + // Fülle die Arrays mit Werten aus der Tabelle + for (int i = 0; i < zahlen.length; i++) { + // Lies Wert aus der i. Zeile und der Spalte "Punkte" bzw. "Name" + zahlen[i] = csv.getInt(i, "Punkte"); + namen[i] = csv.getString(i, "Name"); + } + } + } + + public void zeichneBalken() { + + clear(); + + // Überschrift + fill(255, 255, 255); + textFont(grosseSchrift); + text("Punkte", 2, 20); + textFont(kleineSchrift); + + // Alle Einträge darstellen + if (zahlen != null) { + for (int i = 0; i< zahlen.length; i++) { + + fill(20, 25, 165); + // aktuelle Elemente farblich hervorheben + if (i == akt || i == akt+1 ) { + fill(140, 230, 20); + } + + // Balkendiagramm zeichnen + if (zahlen[i]>=0) rect(120, 25+i*15, zahlen[i]+1, 13); + + // Beschriftung + fill(255, 255, 255); + text(namen[i], 2, 35+i*15); + text(""+zahlen[i], 70, 35+i*15); + } + } + } + public void wastutes() { + // Sind überhaupt Daten da? + if (zahlen.length==0 ) { + return; + } + + + + // Wiederholen den Durchlauf n-1 mal + for (int i = 1; i< zahlen.length; i++) { + // Durchlaufe alle Array-Elemente + for (akt=0; akt+1 < zahlen.length; akt++) { + // Neu zeichnen, da akt neu gesetzt wurde + zeichneBalken(); + delay(verzoegerung); + // Vergleiche mit Nachbarelement. Falsch sortiert? + if (zahlen[akt+1]> zahlen[akt]) { + // Dreieckstausch bei Zahlen und Namen + int dummy = zahlen[akt]; + zahlen[akt] = zahlen[akt+1]; + zahlen[akt+1] = dummy; + + String s = namen[akt]; + namen[akt] = namen[akt+1]; + namen[akt+1] = s; + + // Zeichne Balken neu, da getauscht wurde + zeichneBalken(); + delay(verzoegerung); + } + } + } + // Sortierung beendet + akt = -2; + zeichneBalken(); + delay(verzoegerung); + + } +} + diff --git a/04_loesungen/03_javaeditor/alg14b_highscore_loesung/HighscoreGUI.java b/04_loesungen/03_javaeditor/alg14b_highscore_loesung/HighscoreGUI.java new file mode 100644 index 0000000..0195a30 --- /dev/null +++ b/04_loesungen/03_javaeditor/alg14b_highscore_loesung/HighscoreGUI.java @@ -0,0 +1,115 @@ +import java.awt.*; +import java.awt.event.*; +import javax.swing.*; +import javax.swing.event.*; + +/** + * + * description + * + * @version 1.0 from 06.10.2018 + * @author + */ + +public class HighscoreGUI extends JFrame { + // Anfang Attribute + private JButton bZeichnen = new JButton(); + private PictureViewer imagePanel1 = new PictureViewer(); + + private JButton bWastutes = new JButton(); + private Highscore bild; + private Picture b; + private Timer timer1 = new Timer(1000, null); + // Ende Attribute + + public HighscoreGUI (String title) { + super (title); + setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); + int frameWidth = 768; + int frameHeight = 551; + setSize(frameWidth, frameHeight); + Dimension d = Toolkit.getDefaultToolkit().getScreenSize(); + int x = (d.width - getSize().width) / 2; + int y = (d.height - getSize().height) / 2; + setLocation(x, y); + Container cp = getContentPane(); + cp.setLayout(null); + // Anfang Komponenten + bZeichnen.setBounds(24, 456, 209, 33); + bZeichnen.setText("Balkendiagramm zeichnen"); + bZeichnen.setMargin(new Insets(2, 2, 2, 2)); + bZeichnen.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent evt) { + bZeichnen_ActionPerformed(evt); + } + }); + cp.add(bZeichnen); + imagePanel1.setBounds(24, 16, 705, 409); + cp.add(imagePanel1); + + bWastutes.setBounds(280, 456, 201, 33); + bWastutes.setText("Was tut diese Methode?"); + bWastutes.setMargin(new Insets(2, 2, 2, 2)); + bWastutes.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent evt) { + bWastutes_ActionPerformed(evt); + } + }); + cp.add(bWastutes); + timer1.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent evt) { + timer1_ActionPerformed(evt); + } + }); + b = new Picture(700,800); + imagePanel1.setImage(b); + b.setObserver(imagePanel1); + timer1.setRepeats(true); + timer1.setInitialDelay(0); + timer1.setDelay(100); + timer1.start(); + addWindowListener(new WindowAdapter() { + public void windowClosed(WindowEvent evt) { + BalkendiagrammGUI_WindowClosed(evt); + } + }); + // Ende Komponenten + setResizable(false); + setVisible(true); + } + + // Anfang Methoden + public void bZeichnen_ActionPerformed(ActionEvent evt) { + bild = new Highscore(); + imagePanel1.setImage(bild); + bild.setObserver(imagePanel1); + imagePanel1.getVerticalScrollBar().setValue(10); + imagePanel1.getVerticalScrollBar().setValue(0); + imagePanel1.getViewport().repaint(); + } // end of bZeichnen_ActionPerformed + + public void bWastutes_ActionPerformed(ActionEvent evt) { + new Thread( new Runnable() { + @Override public void run() { + bild.wastutes(); + } +} ).start(); + } // end of bWastutes_ActionPerformed + + public void timer1_ActionPerformed(ActionEvent evt) { + imagePanel1.getViewport().repaint(); + + } // end of timer1_ActionPerformed + + public void BalkendiagrammGUI_WindowClosed(WindowEvent evt) { + timer1.stop(); + + } // end of BalkendiagrammGUI_WindowClosed + + // Ende Methoden + + public static void main(String[] args) { + new HighscoreGUI("HighscoreGUI"); + } +} + diff --git a/04_loesungen/03_javaeditor/alg14b_highscore_loesung/HighscoreGUI.jfm b/04_loesungen/03_javaeditor/alg14b_highscore_loesung/HighscoreGUI.jfm new file mode 100644 index 0000000..343efb5 --- /dev/null +++ b/04_loesungen/03_javaeditor/alg14b_highscore_loesung/HighscoreGUI.jfm @@ -0,0 +1,169 @@ +object HighscoreGUI: TFGUIForm + Left = 761 + Top = 237 + BorderIcons = [biSystemMenu] + Caption = 'HighscoreGUI' + ClientHeight = 512 + ClientWidth = 752 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -10 + Font.Name = 'MS Sans Serif' + Font.Style = [] + FormStyle = fsStayOnTop + OldCreateOrder = True + Position = poDesigned + ShowHint = True + Visible = True + OnClose = FormClose + OnCloseQuery = FormCloseQuery + OnResize = FormResize + FrameType = 5 + Resizable = False + Undecorated = False + Background = clBtnFace + windowClosed = 'BalkendiagrammGUI_WindowClosed' + PixelsPerInch = 96 + TextHeight = 13 + object bZeichnen: TJButton + Tag = 4 + Left = 24 + Top = 456 + Width = 209 + Height = 33 + Hint = 'jButton1' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Dialog' + Font.Style = [fsBold] + Foreground = 3355443 + Background = 15658734 + actionPerformed = 'bZeichnen_ActionPerformed' + Text = 'Balkendiagramm zeichnen' + Mnemonic = 0 + DisplayedMnemonicIndex = 0 + Selected = False + BorderPainted = True + FocusPainted = False + ContentAreaFilled = True + HorizontalAlignment = CENTER + VerticalAlignment = CENTER + HorizontalTextPosition = RIGHT + VerticalTextPosition = CENTER + IconTextGap = 4 + RolloverEnabled = False + Border.BorderType = NoBorder + Border.LineColor = clBlack + Border.LineThickness = 0 + Border.LineRounded = False + Border.EtchHighlightColor = clBlack + Border.EtchShadowColor = clBlack + Border.Etchtype = 0 + Border.BevelHighlightColor = clBlack + Border.BevelShadowColor = clBlack + Border.Beveltype = 0 + Border.MatteColor = clBlack + Border.MatteTop = 0 + Border.MatteLeft = 0 + Border.MatteBottom = 0 + Border.MatteRight = 0 + end + object imagePanel1: TJPanel + Tag = 38 + Left = 24 + Top = 16 + Width = 705 + Height = 409 + Hint = 'imagePanel1' + HelpKeyword = 'ImagePanel' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Dialog' + Font.Style = [fsBold] + Foreground = 3355443 + Background = clBtnFace + Border.BorderType = NoBorder + Border.LineColor = clBlack + Border.LineThickness = 0 + Border.LineRounded = False + Border.EtchHighlightColor = clBlack + Border.EtchShadowColor = clBlack + Border.Etchtype = 0 + Border.BevelHighlightColor = clBlack + Border.BevelShadowColor = clBlack + Border.Beveltype = 0 + Border.MatteColor = clBlack + Border.MatteTop = 0 + Border.MatteLeft = 0 + Border.MatteBottom = 0 + Border.MatteRight = 0 + end + object bWastutes: TJButton + Tag = 4 + Left = 280 + Top = 456 + Width = 201 + Height = 33 + Hint = 'jButton1' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Dialog' + Font.Style = [fsBold] + Foreground = 3355443 + Background = 15658734 + actionPerformed = 'bWastutes_ActionPerformed' + Text = 'Was tut diese Methode?' + Mnemonic = 0 + DisplayedMnemonicIndex = 0 + Selected = False + BorderPainted = True + FocusPainted = False + ContentAreaFilled = True + HorizontalAlignment = CENTER + VerticalAlignment = CENTER + HorizontalTextPosition = RIGHT + VerticalTextPosition = CENTER + IconTextGap = 4 + RolloverEnabled = False + Border.BorderType = NoBorder + Border.LineColor = clBlack + Border.LineThickness = 0 + Border.LineRounded = False + Border.EtchHighlightColor = clBlack + Border.EtchShadowColor = clBlack + Border.Etchtype = 0 + Border.BevelHighlightColor = clBlack + Border.BevelShadowColor = clBlack + Border.Beveltype = 0 + Border.MatteColor = clBlack + Border.MatteTop = 0 + Border.MatteLeft = 0 + Border.MatteBottom = 0 + Border.MatteRight = 0 + end + object timer1: TTimer + Tag = 49 + Left = 712 + Top = 456 + Width = 33 + Height = 28 + Hint = 'timer1' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Dialog' + Font.Style = [fsBold] + Foreground = 3355443 + Background = 15658734 + actionPerformed = 'timer1_ActionPerformed' + Coalesce = False + Delay = 100 + InitialDelay = 0 + LogTimers = False + Repeats = True + end +end diff --git a/04_loesungen/03_javaeditor/alg14b_highscore_loesung/Picture.java b/04_loesungen/03_javaeditor/alg14b_highscore_loesung/Picture.java new file mode 100644 index 0000000..8df3d55 --- /dev/null +++ b/04_loesungen/03_javaeditor/alg14b_highscore_loesung/Picture.java @@ -0,0 +1,699 @@ +import java.awt.image.*; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.BasicStroke; +import java.util.Vector; +import javax.imageio.*; +import java.io.*; +import java.awt.*; +import javax.swing.*; +import java.util.Random; +import java.awt.geom.AffineTransform; +/** + * + * Bildklasse für die Simulation von Processing-Befehlen + * + * Diese Klasse stellt ein BufferedImage bereit, in das mit Processing-Befehlen gezeichnet + * werden kann. + * Zusätzlich kann ein Bildanzeiger über jede Änderung des Bildes informiert werden, + * um "Zurück"-Befehle zu ermöglichen. Der Bildanzeiger ist entweder eine normale Java + * ScrollPane oder ein Actor aus Greenfoot. + * Die Dokumentation der einzelnen Zeichenmethoden ist der Processing-Reference + * (https://processing.org/reference/ steht unter CC-Lizenz: https://creativecommons.org/) + * entnommen und mit Deepl.com ins Deutsche übersetzt. + * + * @version 1.0 from 23.01.2019 + * @author Thomas Schaller (ZPG Informatik Klasse 9) + */ + +public class Picture{ + + // Einstellungmöglichkeiten für das Zeichnen von Rechtecken und Ellipsen + // RADIUS = Mittelpunkt+Radius wird gegeben, CENTER = Mittelpunkt und Breite/Höhe wird gegeben, + // CORNER = Linke obere Ecke + Breite/Höhe, CORNERS = Linke obere und rechte untere Ecke + public static final int RADIUS = 1; + public static final int CENTER = 2; + public static final int CORNER = 3; + public static final int CORNERS = 4; + + // gespeichertes Bild, + private BufferedImage image; + + // aktuelle Farbeinstellungen + private Color background; + private Color pencolor; + private Color fillcolor; + + // aktuelle Stiftdicke + private double stroke; + + // akkteller Koordinatenmodus von Rechtecken und Ellipsen + private int ellipseMode = CENTER; + private int rectMode = CORNER; + + // aktueller Font + private Font textfont = null; + + // muss ein Bildanzeiger benachrichtigt werden + private PictureViewer observer = null; + private boolean autorefresh = true; + + /** + * Erzeugt ein Bild mit Standardgröße 500x400 + */ + public Picture() { + this(500,400); + } + + /** + * Erzeugt ein Bild der angegeben Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public Picture(int width, int height) { + this(width,height, "D0D0D0"); + } + + /** + * Erzeugt ein Bild aus einer Datei + * @param filename Dateiname des Bildes + */ + public Picture(String filename) { + load(filename); + } + + /** + * Erzeugt ein Bild der angegebenen Größe mit festgelegtem Hintergrund + * @param width Breite des Bildes + * @param height Höhe des Bildes + * @param background Farbe des Hintergrunds + */ + public Picture(int width, int height, String background) { + this.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + this.background = decode(background); + this.pencolor = new Color(0,0,0); + this.stroke = 1; + this.fillcolor = null; + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(this.background); + g.fillRect(0,0,width-1, height-1); + } + + /** + * Legt fest, wer das Bild anzeigt. + * Diese ermöglicht die Benachrichtung des Observers, wenn sich das Bild ändert. + * @param observer Anzeiger des Bildes + */ + + public void setObserver(PictureViewer observer) { + this.observer= observer; + } + + /** + * Direktes Setzen des Bildes (für interne Zwecke) + * @param b Bild, das gespeichert werden soll. + */ + public void setImage(BufferedImage b) { + image = b; + } + + /** + * Direktes Abfragen des Bildes (für interne Zwecke) + * @return Bild, das gerade gespeichert ist. + */ + public BufferedImage getImage() { + return image; + } + + /** + * Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + * Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + * der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu. + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public void size(int width, int height){ + pushImage(); + this.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(background); + g.fillRect(0,0,width-1, height-1); + } + + /** + * Liefert die Breite des Bildes zurück. + * @return Breite des Bildes + */ + public int getWidth() { + return image.getWidth(); + } + + /** + * Liefert die Höhe des Bildes zurück. + * @return Höhe des Bildes + */ + public int getHeight() { + return image.getHeight(); + } + + + /** + * Erzeugt eine Kopie des Bildes und übergibt sie an den Observer (falls existent), damit dieser die Versionen speichern kann + */ + private void pushImage() { + if(observer != null) { + observer.pushImage(); + } + } + + + /** + * Legt fest, ob nach jedem Zeichenbefehl automatisch das Bild auch in + * der Oberfläche aktualisiert wird. Die Einstellung "false" beschleunigt + * das Zeichnen aufwändiger Bilder und verhindert "Flackern". + * Das Neuzeichnen kann durch die Methode "refresh" gezielt ausgelöst werden. + * @param autorefresh true = nach jedem Zeichenbefehl die Anzeige aktualisieren, false= nur durch die Methode refresh neu zeichnen + */ + public void setAutoRefresh(boolean autoRefresh) { + this.autorefresh = autoRefresh; + } + + + /** + * Auch die anzeigenden Klasse wird zum Neuzeichnen aufgefordert. + */ + private void repaint() { + if(observer != null && autorefresh) { + observer.repaint(); + } + } + + /** + * Auch die anzeigenden Klasse wird zum Neuzeichnen aufgefordert. + */ + public void refresh() { + if(observer != null) { + observer.repaint(); + } + } + + // ----------------------------------------- Zeichenfunktionen ----------------------------------------------- + /** + * Löscht den Inhalt des Bildes. + * Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt. + */ + + public void clear(){ + pushImage(); + image = new BufferedImage(image.getWidth(), image.getHeight(), image.getType()); + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(background); + g.fillRect(0,0,image.getWidth()-1, image.getHeight()-1); + repaint(); + } + + /** + * Konvertiert die in einem bestimmten Modus gegebenen Koordinaten in die Java-übliche Links_Oben_Breite_Höhe Version + * Die Änderungen werden direkt im Array vorgenommen + * @param coord Array mit vier Koordinateneinträgen im gegebenen Modus + * @param mode Modus der Koordinaten (CORNER, CORNERS, RADIUS oder CENTER) + */ + private void convert(int[] coord, int mode) { + switch(mode) { + case CORNER: break; + case CORNERS: coord[2] -= coord[0]; coord[3] -= coord[1]; break; + case RADIUS: coord[2] *= 2; coord[3] *=2; + case CENTER: coord[0] -= coord[2]/2; coord[1] -= coord[3]/2; + } + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + * Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + * Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void rectMode(int mode) { + rectMode = mode; + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + * Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + * Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als Breite und Höhe der Form. + * ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void ellipseMode(int mode) { + ellipseMode = mode; + } + + + + /** + * Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + * Um eine Linie einzufärben, verwenden Sie die {@link #stroke(int, int, int) stroke()} Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + * Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + * {@link #strokeWeight(double) strokeWeight()} geändert werden. + * @param x1 x-Koordinate des 1. Punktes + * @param y1 y-Koordinate des 1. Punktes + * @param x2 x-Koordinate des 2. Punktes + * @param y2 y-Koordinate des 2. Punktes + */ + public void line(int x1, int y1, int x2, int y2) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + if (stroke > 0) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawLine(x1, y1, x2, y2); + } + repaint(); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, rectMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillRect(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawRect(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, ellipseMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillOval(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawOval(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + int px[] = {x1, x2, x3}; + int py[] = {y1, y2, y3}; + polygon(px, py); + + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + + int px[] = {x1, x2, x3, x4}; + int py[] = {y1, y2, y3, y4}; + polygon(px, py); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + + public void polygon(int[] x, int[] y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(fillcolor != null) { + + g.setColor(fillcolor); + g.fillPolygon(x,y, y.length); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawPolygon(x, y, x.length); + } + repaint(); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + ellipse(x,y,1, 1); + + } + + // ----------------------------------------- Schriftdarstellung ----------------------------------------------- + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param s Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String s, int x, int y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(pencolor != null) { + g.setColor(fillcolor); + g.setStroke(new BasicStroke((float) stroke)); + g.setFont(textfont); + g.drawString(s, x, y); + } + repaint(); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + this.textfont = font; + } + + + // ----------------------------------------- Farbfestlegungen ----------------------------------------------- + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(String color) { + try{ + return new Color( + Integer.valueOf( color.substring( 0, 2 ), 16 ), + Integer.valueOf( color.substring( 2, 4 ), 16 ), + Integer.valueOf( color.substring( 4, 6 ), 16 ) ); + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(int color) { + try{ + if(color >=0 && color < 256) { + return new Color(color,color,color); + } else { + int r = color / 0x010000 % 0xFF; + int g = color / 0x000100 % 0xFF; + int b = color % 0xFF; + System.out.println(""+r+","+g+","+b); + return new Color(r, g, b ); + } + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + this.pencolor = decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + this.pencolor=decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + this.pencolor = new Color(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + this.pencolor = null; + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + this.stroke = width; + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + this.fillcolor = decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + this.fillcolor=decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + this.fillcolor = new Color(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + this.fillcolor = null; + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + if(c < 256) { + this.background=new Color(c,c,c); + } else { + int r = c / 0x010000; + int g = c / 0x000100 % 0xFF; + int b = c % 0xFF; + this.background= new Color(r, g, b ); + } + + this.clear(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + this.background=new Color(r,g,b); + this.clear(); + } + + +// ----------------------------------------- Dateioperationen ----------------------------------------------- + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + try{ + this.image = ImageIO.read(new File(filename)); + this.background = decode("D0D0D0"); + this.pencolor = new Color(0,0,0); + this.fillcolor = null; + this.stroke = 1; + this.repaint(); + + } catch(Exception e) { + System.out.println("Fehler beim Einlesen der Bilddatei"); + } + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + try{ + String[] fn = filename.split("\\."); + if (fn.length== 1) { + ImageIO.write(image, "PNG", new File(filename+".png")); + } else { + + if (fn.length == 2 && (fn[1].toUpperCase().equals("PNG") || + fn[1].toUpperCase().equals("GIF"))){ + ImageIO.write(image, fn[1], new File(filename)); + }else { + System.out.println("Unbekanntes Bildformat"); + } + } + + } catch(Exception e) { + System.out.println("Fehler beim Speichern"); + } + } + + +// ----------------------------------------- Sonstiges ----------------------------------------------- + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + + public Color[][] getPixelArray() { + Color[][] pixel = new Color[image.getWidth()][image.getHeight()]; + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + pixel[x][y] = new java.awt.Color(image.getRGB(x,y)); + } + } + return pixel; + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + size(pixel.length,pixel[0].length); + Graphics2D g = (Graphics2D) image.getGraphics(); + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + g.setColor(pixel[x][y]); + g.fillRect(x, y, 1, 1); + } + } + repaint(); + } + + /** + * Hilfsfunktion zum Verzögern der Ausgabe + * @param millis Wartezeit in Millisekunden + */ + public void delay(int millis) { + try{ + Thread.sleep(millis); + + } catch(Exception e) { + + } + + } + + + +} diff --git a/04_loesungen/03_javaeditor/alg14b_highscore_loesung/PictureViewer.java b/04_loesungen/03_javaeditor/alg14b_highscore_loesung/PictureViewer.java new file mode 100644 index 0000000..9e6b151 --- /dev/null +++ b/04_loesungen/03_javaeditor/alg14b_highscore_loesung/PictureViewer.java @@ -0,0 +1,505 @@ +/** + * Zeigt ein Bild in einem Scrollbereich an. + * Es ist möglich das Bild zu zoomen und mehrere Versionen des Bildes zu speichern, um eine "Rückgängig" Operation durchzuführen. + * @author Thomas Schaller + * @version 1.0 vom 01.02.2019 + */ + +import java.awt.*; +import java.awt.event.*; +import javax.swing.*; +import java.awt.image.*; +import java.util.Vector; + +public class PictureViewer extends JScrollPane +{ + + // das aktuelle Bild + private Picture picture; + + // Bilder für den Züruck-Modus speichern + private static final int ANZ_BACK = 20; + private Vector history; + + // Zeichenfläche + private ImageIcon scrollImageIcon; + private JLabel imageLabel; + + // Zoom Faktor + private double zoomFactor; + public static final int FIT = -1; + public static final int NORMAL = 1; + + + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der Größe 1000x1000 + */ + public PictureViewer() { + this(1000,1000); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public PictureViewer(int width, int height) { + this(width,height, "D0D0D0"); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + * @param background Farbe des Hintergrunds als HEX-String (z.B. "FF3A45") + */ + public PictureViewer(int width, int height, String background) { + this(new Picture(width,height, background)); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild aus einer Bilddatei + * @param filename Name des Bildes + */ + public PictureViewer(String filename) { + this(new Picture(filename)); + } + + /** + * Erzeugt ein ScrollPanel und zeigt das Bild-Objekt an + * @param picture anzuzeigendes Bild + */ + public PictureViewer(Picture picture) + { + this.picture=picture; + + zoomFactor=1; + + scrollImageIcon = new ImageIcon(picture.getImage().getScaledInstance(picture.getImage().getWidth(), picture.getImage().getHeight(), Image.SCALE_FAST)); + imageLabel = new JLabel(scrollImageIcon); + imageLabel.setVerticalAlignment(JLabel.CENTER); + imageLabel.setHorizontalAlignment(JLabel.CENTER); + setViewportView(imageLabel); + + this.setBorder(BorderFactory.createLineBorder(Color.black)); + picture.setObserver(this); + history = new Vector(); + + } + + /** + * Setzt das anzuzeigende Bild neu + * @param picture anzuzeigendes Bild + */ + public void setImage(Picture picture) { + this.history = new Vector(); + this.picture = picture; + setZoom(NORMAL); + } + + /** + * Speichert das übergebene Bild in der History. + * @param b zu speicherndes Bild + */ + public void pushImage() { + if( this.ANZ_BACK > 0) { + if(history.size() == this.ANZ_BACK) { + history.removeElementAt(0); + } + + BufferedImage b = new BufferedImage(picture.getWidth(), picture.getHeight(), picture.getImage().getType()); + Graphics g = b.getGraphics(); + g.drawImage(picture.getImage(), 0, 0, null); + g.dispose(); + + history.add(b); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + private void popImage() { + int anz = history.size(); + if(anz>0) { + BufferedImage img = history.get(anz-1); + history.removeElementAt(anz-1); + picture.setImage(img); + setZoom(zoomFactor); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + public void back() { + popImage(); + } + + /** + * Setzt das angezeigt Bild neu und beachtet dabei den Zoomfaktor. + */ + public void repaint() { + if( picture != null) { + double factor= zoomFactor; + if (zoomFactor == FIT) { + double factorw = ((double) getWidth()-2) / picture.getWidth(); + double factorh = ((double) getHeight()-2) / picture.getHeight(); + factor = Math.min(factorw, factorh); + } + int width = (int) (picture.getWidth()*factor); + int height = (int) (picture.getHeight()*factor); + + + + scrollImageIcon.setImage(picture.getImage().getScaledInstance(width, height, Image.SCALE_DEFAULT)); + revalidate(); + } + } + + /** + * Setzt den Zoom-Faktor für das Bild. + * Als Zoomfaktor sind auch die Konstanten Bildanzeiger.FIT (auf Bildschirmgröße zoomen) und Bildanzeiger.NORMAL (100%) möglich. + * @param factor Zoomfaktor (1.0 = 100%). + */ + public void setZoom(double factor) + { + zoomFactor = factor; + repaint(); + } + + + // Wrappermethoden + /** + * Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + * Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + * der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu. + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public void size(int width, int height){ + picture.size(width, height); + } + + /** + * Liefert die Breite des Bildes zurück. + * @return Breite des Bildes + */ + public int getImageWidth() { + return picture.getWidth(); + } + + /** + * Liefert die Höhe des Bildes zurück. + * @return Höhe des Bildes + */ + public int getImageHeight() { + return picture.getHeight(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + picture.background(c); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + picture.background(r,g,b); + } + + /** + * Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + * Um eine Linie einzufärben, verwenden Sie die {@link #stroke(int, int, int) stroke()} Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + * Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + * {@link #strokeWeight(double) strokeWeight()} geändert werden. + * @param x1 x-Koordinate des 1. Punktes + * @param y1 y-Koordinate des 1. Punktes + * @param x2 x-Koordinate des 2. Punktes + * @param y2 y-Koordinate des 2. Punktes + */ + public void line(int x1, int y1, int x2, int y2) { + picture.line(x1,y1,x2,y2); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + picture.rect(a,b,c,d); + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + picture.ellipse(a,b,c,d); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + picture.triangle(x1,y1,x2,y2,x3,y3); + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + picture.quad(x1,y1,x2,y2,x3,y3,x4,y4); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + public void polygon(int[] x, int[] y) { + picture.polygon(x,y); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + picture.point(x,y); + + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + * Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + * Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void rectMode(int mode) { + picture.rectMode(mode); + } + + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + * Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + * Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als Breite und Höhe der Form. + * ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void ellipseMode(int mode) { + picture.ellipseMode(mode); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + picture.stroke(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + picture.noStroke(); + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + picture.strokeWeight(width); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + picture.fill(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + picture.noFill(); + } + + /** + * Löscht den Inhalt des Bildes. + * Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt. + */ + public void clear(){ + picture.clear(); + } + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + picture.load(filename); + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + picture.save(filename); + } + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param t Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String t, int x, int y) { + picture.text(t,x,y); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + picture.textFont(font); + } + + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + public Color[][] getPixelArray() { + return picture.getPixelArray(); + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + picture.setPixelArray(pixel); + } + + + +} diff --git a/04_loesungen/03_javaeditor/alg14b_highscore_loesung/Table.java b/04_loesungen/03_javaeditor/alg14b_highscore_loesung/Table.java new file mode 100644 index 0000000..ee5a211 --- /dev/null +++ b/04_loesungen/03_javaeditor/alg14b_highscore_loesung/Table.java @@ -0,0 +1,894 @@ +/** + * Die Klasse Table vereinfacht den Zugriff auf CSV-Dateien. + * Die Klassen Table und TableRow ermöglichen einen einfachen Zugriff auf tabellenbasierte + * Dokumente. + * + * @author Thomas Schaller + * @version 1.0 vom 01.02.2019 + */ + +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.ArrayList; +import java.io.*; +import java.util.Scanner; + +import org.jdom.Document; +import org.jdom.Element; +import org.jdom.Attribute; +import org.jdom.JDOMException; +import org.jdom.input.SAXBuilder; +import org.jdom.output.XMLOutputter; +import org.jdom.output.Format; + +public class Table +{ + // Standardtrennzeichen für Spalten + private static final char DEFAULT_SEPARATOR = ';'; + // Standardmarkierung für Texte + private static final char DEFAULT_QUOTE = '"'; + // Standardtrennzeichen für Dezimalzahlen + private static final char DEFAULT_COMMA = ','; + + // mögliche Spaltentypen + private static final String UNKNOWN ="UNKOWN"; + private static final String INT = "INTEGER"; + private static final String DOUBLE = "DOUBLE"; + private static final String FLOAT = "FLOAT"; + + // interne Verwaltung des Dokuments als JDOM-Document-Objekt + private Document doc; + // Verweis auf Element für Kopfzeile + private Element header; + // Ende Attribute + + /** + * Erzeugt leeres Tabellen-Dokument. + */ + public Table() { + this.doc = new Document(); + doc.setRootElement(new Element("CSV-Data")); + this.header = new Element("Header"); + doc.getRootElement().addContent(header); + } + + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei und erstellt ein Tabellenobjekt mit seinen Werten. + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public Table(String filename, String options, char separator, char quote) { + loadCSV(filename, options, separator, quote); + } + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei und erstellt ein Tabellenobjekt mit seinen Werten (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + */ + public Table(String filename, String options) { + loadCSV(filename, options); + } + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei ohne Kopfzeile und erstellt ein Tabellenobjekt mit seinen Werten (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public Table(String filename) { + loadCSV(filename); + } + + // Anfang Methoden + /** + * Liest den Inhalt einer CSV-Datei ohne Kopfzeile (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public void loadCSV(String filename) { + loadCSV(filename, ""); + } + + /** + * Liest den Inhalt einer CSV-Datei (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + */ + public void loadCSV(String filename, String options) { + loadCSV(filename, options, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** + * Liest den Inhalt einer CSV-Datei. + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public void loadCSV(String filename, String options, char separator, char quote) { + doc = new Document(); + doc.setRootElement(new Element("CSV-Data")); + header = new Element("Header"); + doc.getRootElement().addContent(header); + try { + File f = new File(filename); + Scanner scanner = new Scanner(new File(filename)); + if(options.toLowerCase().contains("header") && scanner.hasNext()) { + List entries = parseLine(scanner.nextLine(), separator, quote); + int i= 0; + for(String s : entries) { + Element entry = new Element("Column"); + header.addContent(entry); + entry.setText(s); + entry.setAttribute("type", "unknown"); + i++; + } + } + + List cols = header.getChildren(); + + while (scanner.hasNext()) { + Element line = new Element("Row"); + doc.getRootElement().addContent(line); + List entries = parseLine(scanner.nextLine(), separator, quote); + int i= 0; + + for(String s : entries) { + + if(i==cols.size()) { + Element entry = new Element("Column"); + entry.setAttribute("type", "unknown"); + header.addContent(entry); + cols = header.getChildren(); + } + + Element entry = new Element("Entry"); + entry.setText(s); + line.addContent(entry); + i++; + } + } + scanner.close(); + + } catch (Exception e) { + System.out.println("Fehler beim Lesen der CSV-Datei"); + } + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei ohne Kopfzeile (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public void saveCSV(String filename) { + saveCSV(filename, ""); + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthalten, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile haben soll, + * dann lassen Sie einfach die Option "header" weg. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile haben soll. + * @param filename Dateiname der CSV-Datei. + */ + public void saveCSV(String filename, String options) { + saveCSV(filename, options, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei. + * Wenn die Datei eine Kopfzeile enthalten, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile haben soll, + * dann lassen Sie einfach die Option "header" weg. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile haben soll. + * @param filename Dateiname der CSV-Datei. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public void saveCSV(String filename, String options, char separator, char quote){ + try{ + File f = new File(filename); + PrintStream outputFile = new PrintStream (f); + System.out.println("Speicher in : "+f.getAbsolutePath()); + List columns = header.getChildren(); + String sq = ""+quote; + String ss = ""+separator; + if(quote =='"') sq = "\""; + if(separator =='"') ss = "\""; + + if(options.toLowerCase().contains("header")) { + String h = ""; + for(Element c : columns) { + h += ss + sq + c.getText()+sq; + } + outputFile.println(h.substring(1)); + } + for(int i = 0; i parseLine(String cvsLine) { + return parseLine(cvsLine, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** HIlfsfunktion für die Analyse einer Dateizeile + * @param cvsLine Zeile aus der Datei + * @param sparator Trennzeichen für die Spalten + * @return Liste von String für die einzelnen Spalten + */ + private List parseLine(String cvsLine, char separator) { + return parseLine(cvsLine, separator, DEFAULT_QUOTE); + } + + /** HIlfsfunktion für die Analyse einer Dateizeile + * @param cvsLine Zeile aus der Datei + * @param sparator Trennzeichen für die Spalten + * @param customQuote Kennung für Strings + * @return Liste von String für die einzelnen Spalten + */ + private List parseLine(String cvsLine, char separator, char customQuote) { + + List result = new ArrayList<>(); + + //if empty, return! + if (cvsLine == null && cvsLine.isEmpty()) { + return result; + } + + //ggf. Default-Value laden + if (customQuote == ' ') { + customQuote = DEFAULT_QUOTE; + } + + if (separator == ' ') { + separator = DEFAULT_SEPARATOR; + } + + StringBuffer curVal = new StringBuffer(); + boolean inQuotes = false; + boolean startCollectChar = false; + boolean doubleQuotesInColumn = false; + + char[] chars = cvsLine.toCharArray(); + + for (char ch : chars) { + + if (inQuotes) { // aktueller Text ist in Quotes eingeschlossen + startCollectChar = true; + + if (ch == customQuote) { // Quotes werden beendet, aber Achtung bei "" => Metazeichen + inQuotes = false; + if (ch == '\"') { + doubleQuotesInColumn = true; + } + + } else { + + if (ch == '\"' && !doubleQuotesInColumn) { + doubleQuotesInColumn = true; + } else { + curVal.append(ch); + doubleQuotesInColumn = false; + } + + } + } else { + if (ch == customQuote) { + + inQuotes = true; + + //Fixed : allow "" in empty quote enclosed + if (ch == '\"'){ + if(doubleQuotesInColumn) { + curVal.append('"'); + doubleQuotesInColumn = false; + } else doubleQuotesInColumn = true; + + + } + } + else { + doubleQuotesInColumn = false; + if (ch == separator) { + + result.add(curVal.toString()); + + curVal = new StringBuffer(); + startCollectChar = false; + + } else if (ch == '\r') { + //ignore LF characters + continue; + } else if (ch == '\n') { + //the end, break! + break; + } else { + curVal.append(ch); + } + } + } + + } + result.add(curVal.toString()); + return result; + } + + /** + * Sucht die Nummer einer durch Namen gegebenen Spalte. + * @param name Name der Spalte + * @return Nummer der Spalte + */ + + private int findColumnNumber(String name) { + List columns = header.getChildren(); + int i = 0; + for(Element c : columns) { + if (c.getText().toLowerCase().equals(name.toLowerCase())) { + return i; + + } + i++; + } + return -1; + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an. + */ + public void addColumn() { + Element entry = new Element("Column"); + entry.setAttribute("type", Table.UNKNOWN); + header.addContent(entry); + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an und benennt sie. + * @param title Bezeichnung der Spalte + */ + public void addColumn(String title) { + addColumn(); + Element nc = ((List)(header.getChildren())).get(header.getChildren().size()-1); + nc.setText(title); + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an und benennt und typisiert sie. + * @param title Bezeichnung der Spalte + * @param type Typ der Spalte (UNKNOWN, DOUBLE, INTEGER, FLOAT) + */ + public void addColumn(String title, String type) { + addColumn(title); + Element nc = ((List)(header.getChildren())).get(header.getChildren().size()-1); + nc.setAttribute("type", type); + } + + /** + * Löscht eine Spalte. + * @param i Nummer der Spalte. + */ + public void removeColumn(int i) { + List lines = doc.getRootElement().getChildren(); + for(Element l : lines) { + if(l.getChildren().size()>i) l.removeContent(i); + } + } + + /** + * Löscht eine Spalte + * @param name Name der Spalte + */ + public void removeColumn(String name) { + try{ + removeColumn(findColumnNumber(name)); + } catch(Exception e) { System.out.println("Unbekannter Spaltenname");} + } + + /** + * Liefert die Anzahl der Spalten in der Tabelle + * @return Anzahl der Spalten + */ + public int getColumnCount() { + return header.getChildren().size(); + } + + /** + * Liefert die Anzahl der Zeilen in der Tabelle + * @return Anzahl der Zeilen + */ + public int getRowCount() { + return doc.getRootElement().getChildren().size()-1; + } + + /** + * Löscht alle Zeilen der Tabelle. + * Die Spaltenüberschriften und Typen bleiben erhalten. + */ + public void clearRows() { + doc.getRootElement().removeChildren("Row"); + } + + /** + * Fügt eine neue Zeile an das Ende der Tabelle an. + * @return ein TableRow-Objekt für diese neue Zeile + */ + public TableRow addRow() { + Element row = new Element("Row"); + doc.getRootElement().addContent(row); + return new TableRow(doc, row); + } + + /** + * Löscht eine Zeile + * @param i Nummer der Zeile + */ + public void removeRow(int i) { + if(i rows = doc.getRootElement().getChildren(); + return new TableRow(doc, rows.get(i+1)); + } + return null; + } + + /** + * Liefert die ganze Tabelle als Array von TableRow-Objekten + * @return Array von TableRow-Objekten + */ + public TableRow[] rows() { + TableRow[] rows = new TableRow[getRowCount()]; + for(int i = 0; i < getRowCount(); i++) { + rows[i] = getRow(i); + } + return rows; + } + + /** + * Liefert den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param column Spaltennummer + * @return Wert der Zelle + */ + public int getInt(int row, int column) { + return getRow(row).getInt(column); + } + + /** + * Liefert den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param name Name der Spalte + * @return Wert der Zelle + */ + public int getInt(int row, String name) { + return getRow(row).getInt(name); + } + + /** + * Setzt den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param column Spaltennummer + * @param value neuer Wert der Zelle + */ + public void setInt(int row, int column,int value) { + getRow(row).setInt(column, value); + } + + /** + * Setzt den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(int row, String name, int value) { + getRow(row).setInt(name, value); + } + + /** + * Liefert alle Werte einer Zeile als Integer-Array. + * @param row Nummer der Zeile + * @return int-Array, dass alle Werte der Zeile enthält + */ + public int[] getIntRow(int row) { + try{ + TableRow trow = getRow(row); + int anz = getColumnCount(); + int[] r = new int[anz]; + for(int i=0; i) (header.getChildren())).get(i).getText(); + } else { + return ""; + } + } + + /** + * Liefert die Nummer einer Spalte + * @param name Name der Spalte + * @return Nummer der Spalte + */ + public int getColumn(String name) { + List columns = header.getChildren(); + int i = 0; + while (i < columns.size()) { + if (columns.get(i).getText().toLowerCase().equals(name.toLowerCase())) { + return i; + } + i++; + } // end of while + return -1; + } + + + /** + * Erzeugt eine neue Zeile mit i Spalten + * Wenn bisher nicht genügend Spalten vorhanden sind, werden automatisch neue Spalten hinzugefügt (auch zum Header) + * @param i Anzahl der Spalten + */ + private Element buildRow(int i) { + List columns = header.getChildren(); + Element entry=null; + for(int j=0; j<=i; j++) { + + if(j==columns.size()) { + Element h = new Element("Column"); + h.setAttribute("type", "unknown"); + header.addContent(h); + columns = header.getChildren(); + } + if(j==current.getChildren().size()) { + entry = new Element("Entry"); + current.addContent(entry); + + } + + } + return entry; + + } + + /** + * Erzeugt eine neue Zeile. + * Es werden genügend Spalten erzeugt, dass ein Wert in Spalte "name" eingetragen werden kann + * @param name Name der Spalte + */ + private Element buildRow(String name) { + List columns = header.getChildren(); + int i = 0; + for(Element c: columns) { + + if(c.getText().toLowerCase().equals(name.toLowerCase())) { + return buildRow(i); + } + i++; + } + return null; + + } + + /** + * Liefert den Wert einer Zelle als String + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public String getString(int i) { + if(i >= current.getContent().size()) return ""; + Element e = (Element) current.getContent(i) ; + if(e!=null) { + return e.getText(); + } else { + return ""; + } + } + + /** + * Liefert den Wert einer Zelle als String + * @param name Name der Spalte + * @return Wert der Zelle + */ + public String getString(String name) { + return getString(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als String + * @param i Nummer der Spalte + * @param text neuer Wert der Zelle + */ + public void setString(int i, String text) { + + Element e = buildRow(i); + if(e!=null) e.setText(text); + } + + /** + * Setzt den Wert einer Zelle als String + * @param name Name der Spalte + * @param text neuer Wert der Zelle + */ + public void setString(String name, String text) { + Element e = buildRow(name); + if(e!=null) e.setText(text); + } + + + /** + * Liefert den Wert einer Zelle als Int-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public int getInt(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Integer.parseInt(e.getText()); + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Int-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public int getInt(String name) { + return getInt(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Int-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(int i,int value) { + + Element e = buildRow(i); + if(e!=null) e.setText(""+value); + } + + /** + * Setzt den Wert einer Zelle als Int-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(String name, int value) { + Element e = buildRow(name); + if(e!=null) e.setText(""+value); + } + + /** + * Liefert den Wert einer Zelle als Float-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public float getFloat(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Float.parseFloat(e.getText().replace(",",".")); + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Float-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public float getFloat(String name) { + return getFloat(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Float-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setFloat(int i,float value) { + + Element e = buildRow(i); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Setzt den Wert einer Zelle als Float-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setFloat(String name, float value) { + Element e = buildRow(name); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Liefert den Wert einer Zelle als Double-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public double getDouble(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Double.parseDouble(e.getText().replace(",",".")); + + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Double-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public double getDouble(String name) { + return getDouble(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Double-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setDouble(int i,double value) { + + Element e = buildRow(i); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Setzt den Wert einer Zelle als Double-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setDouble(String name, double value) { + Element e = buildRow(name); + if(e!=null) e.setText(format.format(value)); + } + +} diff --git a/04_loesungen/03_javaeditor/alg14b_highscore_loesung/XML.java b/04_loesungen/03_javaeditor/alg14b_highscore_loesung/XML.java new file mode 100644 index 0000000..c06c490 --- /dev/null +++ b/04_loesungen/03_javaeditor/alg14b_highscore_loesung/XML.java @@ -0,0 +1,637 @@ +/** + * Klasse zum Vereinfachten Zugriff auf XML-Dokumente + * Diese Klasse ist für den Einsatz in der Schule gedacht und soll den Schülern + * einen einfachen Zugriff auf XML-Dokumente ermöglichen. Die zur Verfügung + * stehenden Befehle sind wie in Processing realisiert. + * Dabei ist jeder Teilbaum des Dokuments wieder als XML-Objekt zugreifbar, das + * intern auf die gleiche XML-Dokumentstruktur zugreift. + * Dies ermöglicht bei unsachgemäßem Gebrauch die XML-Struktur zu zerstören. Im + * normalen Gebrauch sollte dies aber nicht relevant sein. + * + * Benötigt: jdom-1.1.3.jar + + * @author Thomas Schaller + * @version 1.0 vom 31.01.2019 + */ +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.ArrayList; +import java.io.*; + +import org.jdom.Document; +import org.jdom.Element; +import org.jdom.Attribute; +import org.jdom.JDOMException; +import org.jdom.input.SAXBuilder; +import org.jdom.output.XMLOutputter; +import org.jdom.output.Format; + +public class XML { + // Anfang Attribute + // XML-Dokumentstruktur + private Document doc; + // Zeiger auf das aktuelle Element + private Element current; + // Ende Attribute + + /** + * Erzeugt ein leeres XMLDokument + */ + public XML() { + this.doc = new Document(); + this.current = null; + } + + /** + * Erzeugt ein XML-Dokument aus einer Datei + * @param filename Dateiname der XML-Datei + */ + public XML(String filename) { + loadXML(filename); + } + + /** + * interner Konstruktor, um ein XML Objekt zu erzeugen, das auf einen bestimmten Knoten verweist + * @param doc die XML-Dokumentstruktur + * @param current Zeiger auf das aktuelle Element + */ + private XML(Document doc, Element current) { + this.doc = doc; + this.current = current; + } + + // Anfang Methoden + /** Öffnet das durch den Dateinamen gegebene Dokument + * @param filename Dateiname des XML-Files + */ + public void loadXML(String filename) { + doc = null; + File f = new File(filename); + + try { + // Das Dokument erstellen + SAXBuilder builder = new SAXBuilder(); + doc = builder.build(f); + + } catch (JDOMException e) { + e.printStackTrace(); + + } catch (IOException e) { + e.printStackTrace(); + } + // Zeiger im Baum auf Root-Element + current = doc.getRootElement(); + } + + /** Speichert den XML-Baum im angegebenen Dateinamen + * @param filename Dateiname des XML-Files + */ + public void saveXML(String filename) { + try { + // new XMLOutputter().output(doc, System.out); + XMLOutputter xmlOutput = new XMLOutputter(); + + // display nice nice + xmlOutput.setFormat(Format.getPrettyFormat()); + File f = new File(filename); + FileOutputStream outputFile = new FileOutputStream(f); + System.out.println("Speicher in : "+f.getAbsolutePath() ); + xmlOutput.output(doc, outputFile); + outputFile.close(); + System.out.println("File Saved!"); + } catch (IOException io) { + System.out.println(io.getMessage()); + } + + } + + //----------------------------------------------- Zeigerbewegungen -------------------------------------------------- + /** + * liefert ein XML-Objekt, das auf den Vaterknoten des aktuellen Elements zeigt. + * @return Vater des aktuellen Objekts. + */ + public XML getParent() { + if(current != null) { + Element parent = current.getParentElement(); + if (parent == null) { + return null; + } else { + return new XML(doc, parent); + } + } + return null; + } + + /** + * Überprüft, ob das Element irgendwelche Kinder hat oder nicht, und gibt das Ergebnis als boolean zurück. + * @return true, wenn Kinder vorhanden sind, sonst false + */ + public boolean hasChildren() { + if (current == null) { + return doc.hasRootElement(); + } else { + return current.getChildren().size()>0; + } + } + + /** + * Ermittelt die Namen aller Kinder des Elements und gibt die Namen als ein Array von Strings zurück. + * Dies ist dasselbe wie das Durchlaufen und Aufrufen von getName() auf jedem untergeordneten Element einzeln. + * @return Liste aller Namen der Kinder + */ + public String[] listChildren() { + if (current == null) { + if(doc.hasRootElement()) { + String[] names = new String[0]; + names[0] = doc.getRootElement().getName(); + return names; + } else { + return null; + } + } else { + List ch_element = current.getChildren(); + String[] names = new String[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + names[i] = ch_element.get(i).getName(); + } + return names; + } + } + + /** + * Liefert alle Kinder des Elements als Array von XML-Objekten. + * @return Array der Kinder als XML-Objekte + */ + public XML[] getChildren() { + if (current == null) { + if(doc.hasRootElement()) { + XML[] ch_xml = new XML[1]; + ch_xml[0] = new XML(doc, doc.getRootElement()); + return ch_xml; + } else { + return null; + } + } else { + List ch_element = current.getChildren(); + XML[] ch_xml = new XML[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + ch_xml[i] = new XML(doc, ch_element.get(i)); + } + return ch_xml; + } + } + + /** + * Liefert bestimmte Kinder des Elements als Array von XML-Objekten. + * Die Methode gibt dabei alle Kinder zurück, die dem angegebenen Namen entsprechen. + * @param name Name der gesuchten Kind-Objekte + * @return Array der Kinder als XML-Objekte + */ + public XML[] getChildren(String name) { + if (current == null) { + if(doc.hasRootElement()) { + XML[] ch_xml = new XML[1]; + ch_xml[0] = new XML(doc, doc.getRootElement()); + if(doc.getRootElement().getName().equals(name)){ + return ch_xml; + } else { + return null; + } + } else { + return null; + } + } else { + List ch_element = current.getChildren(name); + XML[] ch_xml = new XML[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + ch_xml[i] = new XML(doc, ch_element.get(i)); + } + return ch_xml; + } + } + + /** + * Liefert das erste Kind des Elements mit einem bestimmten Namen. + * Die Methode gibt das erste Kind zurück, das dem angegebenen Namen entsprechen. + * @param name Name des gesuchten Kind-Objektes + * @return Kind als XML-Objekt + */ + + public XML getChild(String name) { + if (current == null) { + Element e = doc.getRootElement(); + if (e.getName().equals(name)) { + return new XML(doc, e); + } else { + return null; + } + } else { + String[] names = name.split("/"); + Element e = current; + int i = 0; + while(i < names.length) { + e = e.getChild(names[i]); + if (e==null) return null; + i++; + } + return new XML(doc, e); + } + } + + /** + * Liefert das i. Kind des Elements. + * Die Methode gibt das i. Kind des aktuellen Elements zurück. + * @param i Nummer des Kindes + * @return Kind als XML-Objekt + */ + public XML getChild(int i) { + if (current == null) { + return new XML(doc, doc.getRootElement()); + } else { + List ch_element = current.getChildren(); + if (i>=ch_element.size()) return null; + return new XML(doc, ch_element.get(i)); + } + } + + //--------------------------------------------------- Methoden für das aktuelle Element ------------------------------------------------- + /** + * Frage den Namen des aktuellen Elements ab + * @return Namen des Elements + */ + public String getName() { + if (current==null) return ""; + return current.getName(); + } + + /** + * Setze den Namen des aktuellen Elements. + * @param name Neuer Name des Elements + */ + public void setName(String name) { + if (current==null) return; + current.setName(name); + } + + /** + * liefert die Anzahl der Attribute eines Elements. + * @return Anzahl des Attribute + */ + public int getAttributeCount() { + if (current == null) return 0; + return current.getAttributes().size(); + } + + /** + * liefert zurück, ob das aktuelle Element Attribute hat . + * @return true, wenn es Attribute gibt + */ + public boolean hasAttribute() { + if (current == null) return false; + return current.getAttributes().size()>0; + } + + /** + * Ruft alle Attribute des angegebenen Elements ab und gibt sie als Array von Strings zurück. + * @return Liste der Attributnamen + */ + public String[] listAttributes() { + if (current == null) return null; + List attr = current.getAttributes(); + String[] names = new String[attr.size()]; + for(int i=0; i < attr.size() ; i++) { + names[i] = attr.get(i).getName(); + } + return names; + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs + */ + public String getString(String attribute) { + if (current==null) return ""; + return current.getAttributeValue(attribute); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs + */ + public String getString(String attribute, String defaultValue) { + if (current==null) return defaultValue; + return current.getAttributeValue(attribute,defaultValue); + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param text neuer Wert des Attributs + */ + public void setString(String attribute, String text) { + if (current==null) return; + current.setAttribute(attribute, text); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Integer-Zahl + */ + public int getInt(String attribute) { + if (current==null) return 0; + try{ + int i = Integer.parseInt(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als Integer-Zahl + */ + public int getInt(String attribute, int defaultValue) { + if (current==null) return defaultValue; + try{ + int i = Integer.parseInt(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setInt(String attribute, int value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Float-Zahl + */ + public float getFloat(String attribute) { + if (current==null) return 0; + try{ + float i = Float.parseFloat(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als Float-Zahl + */ + public float getFloat(String attribute, float defaultValue) { + if (current==null) return defaultValue; + try{ + float i = Float.parseFloat(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setFloat(String attribute, float value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Double-Zahl + */ + public double getDouble(String attribute) { + if (current==null) return 0; + try{ + double i = Double.parseDouble(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + +/** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als double-Zahl + */ + public double getDouble(String attribute, double defaultValue) { + if (current==null) return defaultValue; + try{ + double i = Double.parseDouble(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setDouble(String attribute, double value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt den Inhalt/Text des aktuellen Elements ab + * @return Inhalt des Elements + */ + public String getContent() { + if ( current==null) return ""; + + return current.getText(); + } + + /** + * Fragt den Inhalt/Text des aktuellen Elements ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardtext + * @return Inhalt des Elements + */ + public String getContent(String defaultValue) { + if ( current==null) return defaultValue; + String t = current.getText(); + if(t.equals("")) t = defaultValue; + return t; + } + + /** + * Setzt den Inhalt/Text des aktuellen Elements + * @param text Neuer Inhalt des Elements + */ + public void setContent(String text) { + if ( current==null) return; + current.setText(text); + } + + + /** + * Fragt den Inhalt des aktuellen Elements als Integerzahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ public int getIntContent(int defaultValue) { + if ( current==null) return defaultValue; + try{ + int i = Integer.parseInt(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Integerzahl ab + * @return Inhalt des Elements + */ + public int getIntContent() { + if ( current==null) return 0; + try{ + int i = Integer.parseInt(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setIntContent(int value) { + if ( current==null) return; + current.setText(""+value); + } + + + /** + * Fragt den Inhalt des aktuellen Elements als Floatzahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ + public float getFloatContent(float defaultValue) { + if ( current==null) return defaultValue; + try{ + float i = Float.parseFloat(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Floatzahl ab + * @return Inhalt des Elements + */ + public float getFloatContent() { + if ( current==null) return 0; + try{ + float i = Float.parseFloat(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setFloatContent(float value) { + if ( current==null) return; + current.setText(""+value); + } + +/** + * Fragt den Inhalt des aktuellen Elements als Doublezahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ + public double getDoubleContent(double defaultValue) { + if ( current==null) return defaultValue; + try{ + double i = Double.parseDouble(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Doublezahl ab + * @return Inhalt des Elements + */ + public double getDoubleContent() { + if ( current==null) return 0; + try{ + double i = Double.parseDouble(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setDoubleContent(double value) { + if ( current==null) return; + current.setText(""+value); + } + + + // ----------------------------------------------- XML-Struktur aufbauen ------------------------------------------------ + /** Erzeuge neues Element nach der aktuellen Position und setze dieses als aktuelles Element + * @param name Name des neuen Elements + * @return neues Element als XML-Objekt + */ + public XML addChild(String name) { + Element e = new Element(name); + if(current == null){ // man ist auf Root-Ebene + doc.setRootElement(e); + + } + else { + current.addContent(e); + } // end of if-else + return new XML(doc, e); + } + + /** + * liefert das aktuelle Element als jdom-Element-Objekt + * @return aktuelles Element + */ + private Element getCurrent() { + return current; + } + + /** + * löscht ein Kind des aktuellen Knotens. + * Ist kid kein Kind des aktuellen Elements passiert gar nichts. + * @param kid XML-Objekt des Kindes + */ + public void removeChild(XML kid) { + if (current == null) return; + Element e = kid.getCurrent(); + int index = current.indexOf(e); + if(index >= 0) { current.removeContent(e);} + } + +} diff --git a/04_loesungen/03_javaeditor/alg14b_highscore_loesung/jdom-1.1.3.jar b/04_loesungen/03_javaeditor/alg14b_highscore_loesung/jdom-1.1.3.jar new file mode 100644 index 0000000..a287727 Binary files /dev/null and b/04_loesungen/03_javaeditor/alg14b_highscore_loesung/jdom-1.1.3.jar differ diff --git a/04_loesungen/03_javaeditor/alg14b_highscore_loesung/punkte.csv b/04_loesungen/03_javaeditor/alg14b_highscore_loesung/punkte.csv new file mode 100644 index 0000000..d6e8dfd --- /dev/null +++ b/04_loesungen/03_javaeditor/alg14b_highscore_loesung/punkte.csv @@ -0,0 +1,6 @@ +"Name","Punkte" +Niko,216 +Klaus,591 +Anna,857 +Lena,180 +Winfried,168 diff --git a/04_loesungen/03_javaeditor/alg14b_highscore_loesung/testfall1.csv b/04_loesungen/03_javaeditor/alg14b_highscore_loesung/testfall1.csv new file mode 100644 index 0000000..92c538f --- /dev/null +++ b/04_loesungen/03_javaeditor/alg14b_highscore_loesung/testfall1.csv @@ -0,0 +1,20 @@ +"Name","Punkte" +Spieler1,0 +Spieler1,6 +Spieler2,19 +Spieler6,1 +Spieler4,45 +Spieler3,23 +Spieler3,12 +Spieler2,44 +Spieler1,72 +Spieler5,12 +Spieler6,4 +Spieler7,2 +Spieler4,98 +Spieler3,21 +Spieler3,12 +Spieler2,32 +Spieler1,12 +Spieler5,44 +Spieler3,12 diff --git a/04_loesungen/03_javaeditor/alg14b_highscore_loesung/testfall2.csv b/04_loesungen/03_javaeditor/alg14b_highscore_loesung/testfall2.csv new file mode 100644 index 0000000..091c003 --- /dev/null +++ b/04_loesungen/03_javaeditor/alg14b_highscore_loesung/testfall2.csv @@ -0,0 +1,20 @@ +"Name","Punkte" +Spieler1,-5 +Spieler1,-6 +Spieler2,-19 +Spieler6,-1 +Spieler4,-45 +Spieler3,-23 +Spieler3,-12 +Spieler2,-44 +Spieler1,-72 +Spieler5,-12 +Spieler6,-4 +Spieler7,-2 +Spieler4,-98 +Spieler3,-21 +Spieler3,-12 +Spieler2,-32 +Spieler1,-12 +Spieler5,-44 +Spieler3,-12 diff --git a/04_loesungen/03_javaeditor/alg14b_highscore_loesung/testfall3.csv b/04_loesungen/03_javaeditor/alg14b_highscore_loesung/testfall3.csv new file mode 100644 index 0000000..3bc26b2 --- /dev/null +++ b/04_loesungen/03_javaeditor/alg14b_highscore_loesung/testfall3.csv @@ -0,0 +1,2 @@ +"Name","Punkte" +Spieler1,45 diff --git a/04_loesungen/03_javaeditor/alg14b_highscore_loesung/testfall4.csv b/04_loesungen/03_javaeditor/alg14b_highscore_loesung/testfall4.csv new file mode 100644 index 0000000..e74e6d5 --- /dev/null +++ b/04_loesungen/03_javaeditor/alg14b_highscore_loesung/testfall4.csv @@ -0,0 +1 @@ +"Name","Punkte" diff --git a/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a1/Amplitudes.csv b/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a1/Amplitudes.csv new file mode 100644 index 0000000..6a3b121 --- /dev/null +++ b/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a1/Amplitudes.csv @@ -0,0 +1,12219 @@ +"Zeit","Laerm" +0.000000000E0,6.133205686E1 +1.130000000E-1,5.602431153E1 +3.840000000E-1,3.897519867E1 +7.780000000E-1,4.208195145E1 +1.036000000E0,3.840936313E1 +1.305000000E0,3.561092139E1 +1.587000000E0,4.663257633E1 +1.829000000E0,5.311883882E1 +2.084000000E0,5.299431820E1 +2.357000000E0,5.747397858E1 +2.643000000E0,5.626338063E1 +2.949000000E0,5.790811120E1 +3.238000000E0,5.874544026E1 +3.497000000E0,5.736162139E1 +3.775000000E0,5.897817442E1 +4.097000000E0,5.789822970E1 +4.357000000E0,5.312015799E1 +4.626000000E0,5.710192134E1 +4.941000000E0,6.275087240E1 +5.235000000E0,5.784358767E1 +5.535000000E0,5.388577420E1 +5.827000000E0,5.403495101E1 +6.090000000E0,5.428355086E1 +6.339000000E0,6.064473144E1 +6.616000000E0,6.271091291E1 +6.850000000E0,6.982615367E1 +7.128000000E0,7.050308750E1 +7.487000000E0,5.395311298E1 +7.760000000E0,5.036401582E1 +8.065000000E0,4.614125463E1 +8.361000000E0,6.244776407E1 +8.614000000E0,6.315719526E1 +8.862000000E0,5.981740395E1 +9.123000000E0,5.907292535E1 +9.374000000E0,5.661523092E1 +9.665000000E0,6.210368813E1 +9.948000000E0,6.140958115E1 +1.021100000E1,5.697007655E1 +1.058300000E1,5.460455934E1 +1.084000000E1,5.408516231E1 +1.115300000E1,5.907221377E1 +1.142100000E1,6.113412429E1 +1.172700000E1,6.267949704E1 +1.197100000E1,6.245109870E1 +1.226500000E1,6.342534529E1 +1.255800000E1,6.810008108E1 +1.287100000E1,6.036891848E1 +1.313400000E1,5.913231814E1 +1.342700000E1,5.973818566E1 +1.371600000E1,5.534371651E1 +1.401200000E1,5.694514867E1 +1.431200000E1,6.134814982E1 +1.461100000E1,5.900023912E1 +1.484600000E1,5.689908400E1 +1.515800000E1,5.296474858E1 +1.544000000E1,5.608528071E1 +1.569300000E1,5.728560404E1 +1.596900000E1,5.837984103E1 +1.620100000E1,5.718896638E1 +1.649200000E1,5.909973037E1 +1.678900000E1,5.705554272E1 +1.716300000E1,6.079937758E1 +1.747400000E1,5.618116117E1 +1.775200000E1,5.519881157E1 +1.803800000E1,5.402386340E1 +1.829100000E1,5.678484358E1 +1.858100000E1,5.954639303E1 +1.882300000E1,6.030021638E1 +1.908000000E1,5.588340744E1 +1.934400000E1,5.668691200E1 +1.958800000E1,6.042765467E1 +1.983400000E1,5.839794223E1 +2.008500000E1,5.457976882E1 +2.039500000E1,5.974390604E1 +2.064000000E1,6.049774386E1 +2.092900000E1,6.029857781E1 +2.117800000E1,6.116406203E1 +2.142700000E1,5.664722837E1 +2.173400000E1,5.823294996E1 +2.203100000E1,5.517538657E1 +2.229000000E1,5.322823206E1 +2.259900000E1,6.180779467E1 +2.285300000E1,6.106216386E1 +2.314900000E1,5.883321877E1 +2.347100000E1,6.045262422E1 +2.375000000E1,6.163931220E1 +2.406000000E1,4.841181734E1 +2.432800000E1,4.372149986E1 +2.462900000E1,5.625563946E1 +2.487100000E1,5.672759349E1 +2.513200000E1,5.896193725E1 +2.540800000E1,5.893011728E1 +2.566400000E1,5.857261268E1 +2.596700000E1,5.859012974E1 +2.621900000E1,5.635586832E1 +2.648700000E1,5.350948293E1 +2.673900000E1,5.430043092E1 +2.701400000E1,5.666610976E1 +2.727500000E1,5.218421407E1 +2.753100000E1,5.689076583E1 +2.782000000E1,5.796831886E1 +2.806900000E1,5.608205064E1 +2.831700000E1,5.482273815E1 +2.861600000E1,5.392425499E1 +2.888300000E1,5.329416010E1 +2.914800000E1,5.366916703E1 +2.940200000E1,5.280847155E1 +2.968000000E1,5.333298066E1 +2.994300000E1,5.497085471E1 +3.031200000E1,5.753094076E1 +3.057900000E1,5.655381974E1 +3.086100000E1,5.517704804E1 +3.115600000E1,5.592585858E1 +3.140700000E1,6.212826207E1 +3.166000000E1,5.699502474E1 +3.193500000E1,6.025129057E1 +3.223100000E1,5.686166208E1 +3.247300000E1,5.807641915E1 +3.271900000E1,6.065155151E1 +3.296400000E1,5.961384387E1 +3.320500000E1,6.119064420E1 +3.354400000E1,5.548464633E1 +3.378000000E1,5.699661616E1 +3.408000000E1,5.653770482E1 +3.438000000E1,5.083503664E1 +3.468200000E1,5.695639918E1 +3.495800000E1,5.566535489E1 +3.524700000E1,5.914853092E1 +3.552700000E1,5.758441289E1 +3.576600000E1,6.085665801E1 +3.606700000E1,5.862586334E1 +3.630600000E1,5.096841655E1 +3.662200000E1,6.009246966E1 +3.689400000E1,5.981749726E1 +3.715300000E1,6.108830629E1 +3.740300000E1,5.724514841E1 +3.766500000E1,5.934850613E1 +3.793000000E1,5.725470328E1 +3.819100000E1,5.843556167E1 +3.847700000E1,5.697759761E1 +3.874000000E1,5.721548979E1 +3.901600000E1,5.649629904E1 +3.927200000E1,5.850326911E1 +3.954600000E1,5.691951660E1 +3.993900000E1,5.357092442E1 +4.023400000E1,5.817046878E1 +4.053000000E1,5.554327077E1 +4.081200000E1,5.802928061E1 +4.103900000E1,5.663899845E1 +4.128700000E1,5.494654466E1 +4.155800000E1,5.564956216E1 +4.181900000E1,5.663250304E1 +4.211300000E1,5.652236278E1 +4.238100000E1,5.614203459E1 +4.264000000E1,5.433145844E1 +4.295000000E1,6.132645299E1 +4.326200000E1,6.040612545E1 +4.351400000E1,5.905916902E1 +4.377100000E1,5.885516023E1 +4.401000000E1,5.514814582E1 +4.430800000E1,5.663232510E1 +4.455900000E1,5.055807811E1 +4.482100000E1,5.614950318E1 +4.513300000E1,6.025044420E1 +4.537500000E1,5.643182261E1 +4.568900000E1,5.709089314E1 +4.600500000E1,5.480136123E1 +4.624500000E1,5.924046686E1 +4.656900000E1,6.172358505E1 +4.684100000E1,5.645515217E1 +4.711100000E1,6.002156043E1 +4.736300000E1,6.182669975E1 +4.759700000E1,5.557741963E1 +4.786700000E1,5.598662295E1 +4.818300000E1,5.664767890E1 +4.847900000E1,5.956168629E1 +4.874200000E1,5.713315811E1 +4.898900000E1,5.765479272E1 +4.931400000E1,5.507101982E1 +4.961600000E1,5.361677606E1 +4.990000000E1,5.558547080E1 +5.019600000E1,5.402951441E1 +5.046500000E1,5.805429700E1 +5.078800000E1,5.327636151E1 +5.110300000E1,4.980825483E1 +5.137100000E1,5.290981249E1 +5.165200000E1,4.817864123E1 +5.190100000E1,5.585478693E1 +5.214500000E1,5.457392293E1 +5.242900000E1,5.449921652E1 +5.272500000E1,5.537781025E1 +5.302100000E1,5.598018287E1 +5.326000000E1,5.612851081E1 +5.355800000E1,5.312697891E1 +5.384800000E1,5.799703575E1 +5.409200000E1,5.662162553E1 +5.433900000E1,5.392344795E1 +5.459100000E1,5.398098819E1 +5.494900000E1,5.489231889E1 +5.527100000E1,5.658153835E1 +5.552800000E1,5.624900056E1 +5.589500000E1,4.979935744E1 +5.616900000E1,5.146998424E1 +5.645400000E1,5.878755245E1 +5.668600000E1,5.846227673E1 +5.694400000E1,5.977267383E1 +5.726200000E1,5.508647523E1 +5.754400000E1,5.138853207E1 +5.784300000E1,5.327451232E1 +5.808600000E1,5.887142781E1 +5.837800000E1,5.858062431E1 +5.862200000E1,5.917458096E1 +5.889700000E1,6.050411670E1 +5.926300000E1,5.908687144E1 +5.952100000E1,5.570790758E1 +5.981900000E1,5.444849000E1 +6.006100000E1,5.201240285E1 +6.032000000E1,4.755830762E1 +6.061900000E1,5.204388424E1 +6.086500000E1,5.626914911E1 +6.117500000E1,5.280379974E1 +6.142900000E1,5.093923019E1 +6.173000000E1,5.460427137E1 +6.197800000E1,5.299601182E1 +6.230600000E1,5.424208739E1 +6.257600000E1,5.253762352E1 +6.283700000E1,5.544043962E1 +6.309800000E1,5.527614156E1 +6.335400000E1,5.747262922E1 +6.360700000E1,5.468151445E1 +6.384900000E1,5.582905565E1 +6.410700000E1,5.802400474E1 +6.435000000E1,5.204893636E1 +6.459600000E1,5.280146425E1 +6.486300000E1,4.876648093E1 +6.509700000E1,5.311679703E1 +6.537500000E1,5.192778643E1 +6.571400000E1,5.346709918E1 +6.597900000E1,5.370921552E1 +6.627900000E1,5.676705279E1 +6.652200000E1,5.832258643E1 +6.676600000E1,6.257736406E1 +6.703100000E1,6.295448429E1 +6.737800000E1,6.100964383E1 +6.766100000E1,5.182636016E1 +6.790700000E1,4.952717893E1 +6.821100000E1,5.667475715E1 +6.850300000E1,5.872819054E1 +6.882100000E1,6.004516195E1 +6.907300000E1,5.559244143E1 +6.935100000E1,5.600379936E1 +6.961500000E1,5.338006499E1 +6.987600000E1,5.360104859E1 +7.011900000E1,4.644905289E1 +7.037100000E1,4.528909123E1 +7.067200000E1,5.787885076E1 +7.091600000E1,5.602551032E1 +7.115700000E1,5.989544193E1 +7.142200000E1,6.110384869E1 +7.167900000E1,5.887448069E1 +7.192600000E1,5.797896456E1 +7.226000000E1,5.965665129E1 +7.251000000E1,6.477744226E1 +7.281200000E1,6.243775536E1 +7.310800000E1,5.921576979E1 +7.335600000E1,6.629420582E1 +7.364100000E1,6.683725429E1 +7.392300000E1,5.758295449E1 +7.418800000E1,5.654909286E1 +7.448600000E1,5.881341247E1 +7.472100000E1,5.546609910E1 +7.498300000E1,5.586542777E1 +7.526600000E1,5.463216262E1 +7.558500000E1,5.947397496E1 +7.586200000E1,6.218459899E1 +7.609800000E1,6.134189272E1 +7.635800000E1,5.727526170E1 +7.666700000E1,5.579062978E1 +7.699300000E1,6.015063828E1 +7.729000000E1,6.022787424E1 +7.756300000E1,5.646982462E1 +7.782200000E1,6.005734442E1 +7.813200000E1,5.950776839E1 +7.842200000E1,6.314009710E1 +7.880400000E1,5.425753266E1 +7.910400000E1,5.909139002E1 +7.935300000E1,5.600377253E1 +7.962300000E1,6.036368528E1 +7.993700000E1,5.940415340E1 +8.018900000E1,6.102152187E1 +8.050000000E1,6.619104713E1 +8.074000000E1,6.149981675E1 +8.098900000E1,5.978899259E1 +8.123800000E1,5.963150500E1 +8.150300000E1,6.509054947E1 +8.181300000E1,6.387458039E1 +8.220700000E1,6.421798778E1 +8.246100000E1,6.092500605E1 +8.271900000E1,6.039313205E1 +8.297100000E1,5.885189543E1 +8.328000000E1,6.068901175E1 +8.355600000E1,6.531581124E1 +8.381900000E1,6.460984287E1 +8.407800000E1,6.281147078E1 +8.435000000E1,5.961599483E1 +8.463400000E1,5.915457491E1 +8.489200000E1,5.383227231E1 +8.513000000E1,5.278474817E1 +8.551100000E1,6.165964712E1 +8.574900000E1,6.442604107E1 +8.600700000E1,6.551005247E1 +8.626000000E1,6.660338206E1 +8.650900000E1,6.304014634E1 +8.676000000E1,6.488065719E1 +8.701800000E1,6.416881833E1 +8.728000000E1,5.892166498E1 +8.754500000E1,5.946249393E1 +8.785000000E1,6.506678358E1 +8.809400000E1,5.703264442E1 +8.840500000E1,6.164086486E1 +8.876300000E1,6.276173959E1 +8.906100000E1,5.818071871E1 +8.930500000E1,5.844394446E1 +8.956300000E1,5.657440647E1 +8.987400000E1,6.120356137E1 +9.011500000E1,6.094306560E1 +9.041100000E1,5.978472131E1 +9.065500000E1,6.008128664E1 +9.092400000E1,5.758286780E1 +9.123300000E1,5.353387594E1 +9.151600000E1,5.676204998E1 +9.183800000E1,5.245702159E1 +9.218200000E1,5.642589170E1 +9.243600000E1,5.542467479E1 +9.268000000E1,5.580829615E1 +9.297600000E1,5.148061441E1 +9.322800000E1,4.635974806E1 +9.353200000E1,5.465579762E1 +9.377300000E1,5.154999739E1 +9.402200000E1,5.544992474E1 +9.427900000E1,5.302390200E1 +9.453300000E1,5.127982623E1 +9.478800000E1,5.263086656E1 +9.503100000E1,5.128121484E1 +9.532100000E1,5.061466876E1 +9.557700000E1,5.328260476E1 +9.582800000E1,5.101663724E1 +9.607100000E1,5.400893265E1 +9.640400000E1,5.756552061E1 +9.665500000E1,5.665487755E1 +9.690400000E1,5.719000980E1 +9.715400000E1,5.593995548E1 +9.740400000E1,5.420194495E1 +9.771300000E1,4.867232074E1 +9.802100000E1,5.053798103E1 +9.830700000E1,4.874294948E1 +9.857500000E1,5.754515654E1 +9.883700000E1,5.863618568E1 +9.909700000E1,6.070195076E1 +9.935300000E1,5.434874196E1 +9.961300000E1,6.163600431E1 +9.987300000E1,5.555228218E1 +1.001200000E2,5.733850418E1 +1.003910000E2,6.133233800E1 +1.006620000E2,5.853313440E1 +1.009020000E2,5.435835494E1 +1.011680000E2,5.329891948E1 +1.014680000E2,5.356470018E1 +1.018410000E2,5.574288130E1 +1.021370000E2,5.927571979E1 +1.024000000E2,5.789956910E1 +1.026980000E2,6.081738139E1 +1.029540000E2,5.575615853E1 +1.032580000E2,5.337382111E1 +1.035140000E2,5.562761746E1 +1.038150000E2,5.905624776E1 +1.041040000E2,5.696105750E1 +1.043990000E2,6.170938149E1 +1.046370000E2,5.823687000E1 +1.049080000E2,6.066674703E1 +1.051740000E2,6.220969933E1 +1.054810000E2,5.755805236E1 +1.057660000E2,5.735691579E1 +1.060450000E2,5.761618087E1 +1.063040000E2,5.188413372E1 +1.065680000E2,5.643639822E1 +1.068740000E2,5.312430876E1 +1.071280000E2,5.924995828E1 +1.073900000E2,5.546187342E1 +1.076920000E2,5.474389270E1 +1.079790000E2,5.600814816E1 +1.082440000E2,5.561453096E1 +1.084980000E2,5.408559240E1 +1.087580000E2,5.622058302E1 +1.090160000E2,5.768852773E1 +1.092670000E2,5.516804842E1 +1.095340000E2,5.973626648E1 +1.098120000E2,6.403409511E1 +1.100690000E2,6.035201036E1 +1.103490000E2,5.940482770E1 +1.105950000E2,5.932126109E1 +1.108600000E2,5.859387697E1 +1.111460000E2,5.929800416E1 +1.114110000E2,5.930503134E1 +1.117890000E2,6.170536210E1 +1.120410000E2,6.214563711E1 +1.123490000E2,5.810151097E1 +1.126320000E2,5.823719807E1 +1.128910000E2,6.454485320E1 +1.131870000E2,6.755031626E1 +1.134560000E2,6.410743881E1 +1.137200000E2,5.913442857E1 +1.139870000E2,6.382823805E1 +1.142400000E2,5.859239523E1 +1.145180000E2,5.135859796E1 +1.147890000E2,5.294563188E1 +1.151440000E2,5.357868048E1 +1.154220000E2,5.561359505E1 +1.156620000E2,5.645675088E1 +1.159670000E2,5.879425595E1 +1.162610000E2,5.918610512E1 +1.164990000E2,6.083658676E1 +1.167470000E2,5.526645697E1 +1.169880000E2,5.471312988E1 +1.172910000E2,6.211796732E1 +1.175510000E2,5.417468648E1 +1.177930000E2,5.576739557E1 +1.180750000E2,5.912472365E1 +1.184660000E2,5.718213173E1 +1.187710000E2,5.747081312E1 +1.190170000E2,5.741742618E1 +1.192690000E2,5.379557814E1 +1.195330000E2,5.428733520E1 +1.197780000E2,6.177329402E1 +1.200450000E2,5.672333166E1 +1.203170000E2,5.584947723E1 +1.205670000E2,5.382665718E1 +1.208400000E2,5.443690083E1 +1.211280000E2,5.221565874E1 +1.214800000E2,5.516249741E1 +1.217540000E2,5.676279334E1 +1.220050000E2,5.303796336E1 +1.222680000E2,5.258840561E1 +1.225120000E2,5.671935607E1 +1.227660000E2,4.902892756E1 +1.230240000E2,4.264962220E1 +1.232830000E2,4.818154680E1 +1.235340000E2,5.204058636E1 +1.238430000E2,5.649936271E1 +1.241410000E2,5.396154490E1 +1.244200000E2,5.428877275E1 +1.246760000E2,4.778715710E1 +1.249500000E2,4.912370762E1 +1.252110000E2,5.114426735E1 +1.255020000E2,5.345096378E1 +1.257410000E2,5.581149074E1 +1.260430000E2,5.211774829E1 +1.263320000E2,5.470047014E1 +1.265660000E2,5.399085344E1 +1.268600000E2,5.981732528E1 +1.271210000E2,5.944116770E1 +1.273530000E2,5.668281238E1 +1.275970000E2,5.042419391E1 +1.279080000E2,5.014554177E1 +1.282260000E2,5.350461413E1 +1.285240000E2,5.453533258E1 +1.287780000E2,5.809919663E1 +1.290280000E2,5.729580956E1 +1.292980000E2,5.681749266E1 +1.296010000E2,5.542882864E1 +1.298980000E2,5.612046892E1 +1.302070000E2,6.074750886E1 +1.304620000E2,5.979349108E1 +1.307520000E2,5.806574219E1 +1.310590000E2,5.738881777E1 +1.314010000E2,5.595280312E1 +1.316630000E2,5.401154636E1 +1.319120000E2,5.499471091E1 +1.321620000E2,5.551354327E1 +1.324640000E2,6.567912108E1 +1.327650000E2,5.725129100E1 +1.330150000E2,6.452906176E1 +1.333160000E2,5.778565576E1 +1.335760000E2,6.242194617E1 +1.338200000E2,5.570863747E1 +1.340710000E2,5.755877138E1 +1.343660000E2,6.819206156E1 +1.346260000E2,6.094769164E1 +1.349310000E2,6.447198163E1 +1.351810000E2,5.482297950E1 +1.354630000E2,6.327012623E1 +1.357210000E2,5.723157337E1 +1.359770000E2,5.835004111E1 +1.362140000E2,6.413045068E1 +1.365290000E2,6.022343539E1 +1.368110000E2,5.969265006E1 +1.371070000E2,5.589766444E1 +1.373670000E2,6.089100679E1 +1.376970000E2,6.762783521E1 +1.379410000E2,5.740809854E1 +1.381870000E2,6.711182247E1 +1.384650000E2,6.290175574E1 +1.387060000E2,6.352322572E1 +1.390400000E2,5.897504025E1 +1.392980000E2,5.872568346E1 +1.396520000E2,5.582882684E1 +1.399140000E2,5.874428562E1 +1.402160000E2,5.275369064E1 +1.404650000E2,5.181123336E1 +1.407250000E2,4.758951485E1 +1.410550000E2,4.601470876E1 +1.413500000E2,5.203790008E1 +1.416310000E2,5.380793436E1 +1.418780000E2,5.006781735E1 +1.421580000E2,4.792469964E1 +1.424020000E2,5.136650820E1 +1.427060000E2,5.127969468E1 +1.430200000E2,5.304643312E1 +1.433210000E2,5.218299100E1 +1.436050000E2,5.568762266E1 +1.439010000E2,5.522696018E1 +1.442570000E2,5.919224289E1 +1.445880000E2,6.201398016E1 +1.448680000E2,5.750742223E1 +1.451160000E2,5.811963790E1 +1.454090000E2,5.695462128E1 +1.456560000E2,5.854812337E1 +1.458980000E2,5.886107911E1 +1.461720000E2,5.454171305E1 +1.464480000E2,5.674410925E1 +1.466770000E2,5.450912101E1 +1.469270000E2,5.953864028E1 +1.471790000E2,6.097527460E1 +1.475260000E2,5.825769450E1 +1.478290000E2,5.780473579E1 +1.480790000E2,6.185542851E1 +1.483350000E2,5.390929394E1 +1.486330000E2,5.400087479E1 +1.488750000E2,5.328656685E1 +1.491190000E2,5.599536596E1 +1.494200000E2,5.721648542E1 +1.497150000E2,5.787493165E1 +1.500380000E2,5.480047158E1 +1.503480000E2,5.002404450E1 +1.506590000E2,5.486151348E1 +1.509700000E2,6.245235750E1 +1.512360000E2,5.831236552E1 +1.514820000E2,6.253825815E1 +1.517260000E2,6.440134635E1 +1.520120000E2,5.646251942E1 +1.523080000E2,5.569851104E1 +1.525630000E2,5.574195002E1 +1.528610000E2,6.073633455E1 +1.531220000E2,5.704364811E1 +1.533960000E2,5.858521931E1 +1.536900000E2,6.334346239E1 +1.540080000E2,5.734505299E1 +1.542490000E2,6.522555977E1 +1.544980000E2,5.500712815E1 +1.547420000E2,5.698741268E1 +1.549830000E2,5.097374633E1 +1.552760000E2,5.421781291E1 +1.555100000E2,5.276919678E1 +1.558070000E2,5.444895965E1 +1.560410000E2,5.023818561E1 +1.563440000E2,5.460917302E1 +1.565880000E2,5.459938847E1 +1.568920000E2,5.843131092E1 +1.572210000E2,5.876667307E1 +1.574850000E2,5.735202828E1 +1.577300000E2,5.496399564E1 +1.580290000E2,5.249359356E1 +1.582920000E2,5.216967072E1 +1.585400000E2,5.506360532E1 +1.588040000E2,4.854470136E1 +1.590480000E2,5.455647594E1 +1.593040000E2,5.480802962E1 +1.595560000E2,5.117555202E1 +1.598230000E2,5.525001141E1 +1.600680000E2,6.028739680E1 +1.604080000E2,6.051466285E1 +1.606910000E2,5.941686107E1 +1.609450000E2,6.263789003E1 +1.611920000E2,5.862463866E1 +1.614980000E2,5.858673558E1 +1.617730000E2,5.766546261E1 +1.620210000E2,5.485521148E1 +1.623080000E2,5.814732367E1 +1.625850000E2,5.829863647E1 +1.628370000E2,5.473457172E1 +1.631510000E2,5.323729241E1 +1.634320000E2,5.795543593E1 +1.637670000E2,5.845831909E1 +1.640670000E2,5.883503284E1 +1.643040000E2,5.933733684E1 +1.645990000E2,5.316483696E1 +1.648620000E2,5.628275472E1 +1.651110000E2,5.612764782E1 +1.654290000E2,5.739409022E1 +1.657290000E2,5.275374209E1 +1.660100000E2,5.606330732E1 +1.662350000E2,4.973765069E1 +1.664840000E2,4.855931683E1 +1.667820000E2,4.830487304E1 +1.670210000E2,5.643349546E1 +1.672820000E2,5.752246312E1 +1.675830000E2,5.576545129E1 +1.678330000E2,5.583582770E1 +1.681390000E2,5.301617697E1 +1.684460000E2,5.088408561E1 +1.686990000E2,5.149775091E1 +1.690030000E2,6.019099852E1 +1.692410000E2,6.143998752E1 +1.695380000E2,6.183098470E1 +1.697780000E2,5.964256200E1 +1.701420000E2,5.648358262E1 +1.703870000E2,5.768033788E1 +1.706360000E2,5.037521789E1 +1.709530000E2,5.268785935E1 +1.712030000E2,5.850048969E1 +1.714650000E2,5.537813713E1 +1.717710000E2,5.989062491E1 +1.720770000E2,6.371629733E1 +1.723380000E2,5.413135778E1 +1.726060000E2,5.582389161E1 +1.729040000E2,6.344770094E1 +1.731770000E2,6.038125570E1 +1.735090000E2,5.229655017E1 +1.737830000E2,5.594074665E1 +1.740430000E2,6.258802116E1 +1.743030000E2,5.773122794E1 +1.745600000E2,5.533899998E1 +1.748290000E2,5.069657364E1 +1.750850000E2,6.285550191E1 +1.753480000E2,5.470504416E1 +1.756240000E2,5.746379759E1 +1.758870000E2,5.928233462E1 +1.761350000E2,5.214791610E1 +1.763840000E2,5.260177806E1 +1.767030000E2,4.844041050E1 +1.769490000E2,5.275717684E1 +1.772330000E2,5.436891746E1 +1.774780000E2,5.441421810E1 +1.777590000E2,5.485847839E1 +1.780320000E2,5.714239097E1 +1.782910000E2,6.028837304E1 +1.785470000E2,5.706420775E1 +1.788380000E2,5.509582512E1 +1.791200000E2,5.674185072E1 +1.794340000E2,5.437491314E1 +1.796940000E2,5.696592309E1 +1.799990000E2,5.344092263E1 +1.802540000E2,5.414345246E1 +1.804960000E2,5.421992498E1 +1.808400000E2,5.317024536E1 +1.811450000E2,5.422714635E1 +1.814530000E2,5.933207779E1 +1.817720000E2,5.916706050E1 +1.820730000E2,5.685980261E1 +1.824210000E2,5.521649456E1 +1.826850000E2,5.651993888E1 +1.829810000E2,5.707596711E1 +1.832810000E2,5.464130538E1 +1.836160000E2,5.364065008E1 +1.838600000E2,5.913078622E1 +1.841080000E2,5.695541400E1 +1.843520000E2,6.237274690E1 +1.846510000E2,6.017101966E1 +1.848950000E2,5.670915019E1 +1.851380000E2,5.651470649E1 +1.854400000E2,5.919691857E1 +1.857560000E2,5.752836475E1 +1.860680000E2,6.133052078E1 +1.863670000E2,6.001801442E1 +1.866740000E2,5.871186574E1 +1.869510000E2,5.858669373E1 +1.872240000E2,5.722343490E1 +1.875200000E2,5.725198568E1 +1.877700000E2,5.560524182E1 +1.880340000E2,5.419540118E1 +1.882980000E2,6.169219144E1 +1.885790000E2,5.704261604E1 +1.888700000E2,5.651125138E1 +1.891060000E2,5.778536485E1 +1.894110000E2,5.304160496E1 +1.896990000E2,5.105254388E1 +1.900460000E2,5.338626279E1 +1.902980000E2,5.090929652E1 +1.905360000E2,5.235399183E1 +1.907970000E2,5.429173243E1 +1.910620000E2,5.376238901E1 +1.913500000E2,6.411203098E1 +1.916020000E2,6.235211697E1 +1.919100000E2,5.719243884E1 +1.922140000E2,5.965550680E1 +1.925010000E2,5.850063986E1 +1.928110000E2,6.013906156E1 +1.930480000E2,5.912633730E1 +1.934000000E2,5.860712099E1 +1.936870000E2,5.944287516E1 +1.939980000E2,5.676076088E1 +1.942520000E2,5.712881871E1 +1.945490000E2,5.515631677E1 +1.948870000E2,5.670925955E1 +1.951320000E2,5.768263389E1 +1.954210000E2,5.735243887E1 +1.957290000E2,5.883798740E1 +1.960030000E2,5.654393164E1 +1.963340000E2,5.345251733E1 +1.966710000E2,5.034487882E1 +1.969060000E2,5.741493139E1 +1.971980000E2,5.877434013E1 +1.974210000E2,5.965387227E1 +1.977200000E2,6.306941384E1 +1.979730000E2,6.004201692E1 +1.982230000E2,6.106500017E1 +1.984800000E2,5.674857861E1 +1.987290000E2,6.020914127E1 +1.990680000E2,6.067289060E1 +1.993460000E2,5.996658083E1 +1.996390000E2,5.676340490E1 +1.999500000E2,5.612304129E1 +2.002130000E2,6.289766509E1 +2.005150000E2,5.720971103E1 +2.008280000E2,5.752136939E1 +2.010940000E2,6.058659890E1 +2.013440000E2,5.618430636E1 +2.016270000E2,6.056271249E1 +2.019400000E2,5.729198827E1 +2.022100000E2,5.793084452E1 +2.025070000E2,5.787194228E1 +2.027910000E2,5.959620014E1 +2.030940000E2,6.012062596E1 +2.033180000E2,6.276377758E1 +2.036210000E2,5.834405857E1 +2.039320000E2,5.545225289E1 +2.042050000E2,5.829439447E1 +2.044730000E2,5.799912649E1 +2.047970000E2,5.444896398E1 +2.050680000E2,5.743866699E1 +2.053150000E2,5.862448994E1 +2.055880000E2,5.778478934E1 +2.058890000E2,5.527981007E1 +2.061620000E2,5.742523507E1 +2.064580000E2,5.472188821E1 +2.067100000E2,6.202721053E1 +2.069630000E2,5.861698013E1 +2.072080000E2,6.294616718E1 +2.074730000E2,6.321186761E1 +2.077380000E2,5.776609523E1 +2.080390000E2,6.061292698E1 +2.083320000E2,5.857532480E1 +2.085870000E2,5.800369352E1 +2.088450000E2,5.977447345E1 +2.091070000E2,5.957010157E1 +2.093520000E2,6.145770306E1 +2.096060000E2,6.176056517E1 +2.098580000E2,6.033519811E1 +2.100970000E2,6.429628489E1 +2.103980000E2,6.215353584E1 +2.106470000E2,6.299048914E1 +2.109300000E2,6.133544133E1 +2.112010000E2,5.397487394E1 +2.114250000E2,5.313920655E1 +2.116740000E2,5.552710709E1 +2.119140000E2,5.692289703E1 +2.121730000E2,5.618691953E1 +2.124220000E2,5.402804715E1 +2.127170000E2,5.390450402E1 +2.129570000E2,5.652515030E1 +2.132580000E2,5.490504921E1 +2.135120000E2,5.485761082E1 +2.137850000E2,6.486277416E1 +2.140520000E2,6.121826472E1 +2.143580000E2,6.355465948E1 +2.146390000E2,5.534291145E1 +2.148790000E2,6.610858745E1 +2.151670000E2,5.617739728E1 +2.154670000E2,5.426651762E1 +2.157300000E2,5.840247716E1 +2.160830000E2,5.257749691E1 +2.163200000E2,6.345809118E1 +2.165810000E2,6.020490407E1 +2.168390000E2,5.603372378E1 +2.170870000E2,5.452432165E1 +2.173530000E2,5.679931822E1 +2.176220000E2,6.225558234E1 +2.179360000E2,5.991886985E1 +2.182430000E2,6.307902574E1 +2.184780000E2,6.764692456E1 +2.187700000E2,6.696013302E1 +2.190280000E2,6.419552300E1 +2.193390000E2,6.401831507E1 +2.196000000E2,6.317016249E1 +2.198590000E2,6.093052958E1 +2.201380000E2,6.446513941E1 +2.204220000E2,6.075454080E1 +2.206690000E2,6.712020778E1 +2.209300000E2,5.440050354E1 +2.212550000E2,5.627963451E1 +2.215550000E2,6.358778444E1 +2.217990000E2,5.793661873E1 +2.220730000E2,6.448679664E1 +2.223050000E2,5.844994198E1 +2.226510000E2,5.802583418E1 +2.229440000E2,5.848297014E1 +2.231840000E2,6.170695891E1 +2.234220000E2,6.201301769E1 +2.236630000E2,6.049179870E1 +2.239600000E2,6.316843106E1 +2.242020000E2,5.818837652E1 +2.245150000E2,6.411353278E1 +2.248330000E2,6.458398711E1 +2.250670000E2,6.303280227E1 +2.253240000E2,6.378696379E1 +2.255670000E2,6.157533943E1 +2.259260000E2,5.845901257E1 +2.261910000E2,5.623331182E1 +2.264460000E2,5.550822889E1 +2.267020000E2,5.907003722E1 +2.270220000E2,6.300043778E1 +2.273130000E2,5.934584116E1 +2.275640000E2,5.367094537E1 +2.278520000E2,6.260544714E1 +2.281140000E2,5.666507163E1 +2.283970000E2,6.099713971E1 +2.287020000E2,5.943082312E1 +2.289450000E2,6.095935321E1 +2.292950000E2,5.939706013E1 +2.296230000E2,5.612117806E1 +2.299220000E2,5.805831404E1 +2.301570000E2,5.496048372E1 +2.304070000E2,5.335836124E1 +2.306490000E2,5.043808989E1 +2.309270000E2,4.778025574E1 +2.311680000E2,4.613189565E1 +2.314100000E2,4.740314381E1 +2.316580000E2,5.230056147E1 +2.319150000E2,5.672989332E1 +2.321590000E2,6.081799709E1 +2.325030000E2,5.909736866E1 +2.327570000E2,5.528762811E1 +2.330520000E2,6.623131701E1 +2.333360000E2,6.376149752E1 +2.335730000E2,6.088376871E1 +2.338700000E2,6.235681388E1 +2.341160000E2,6.060610548E1 +2.343930000E2,5.779254532E1 +2.346370000E2,5.570043106E1 +2.349010000E2,6.172637016E1 +2.351520000E2,5.865545525E1 +2.354420000E2,6.250465685E1 +2.356850000E2,6.494272879E1 +2.359310000E2,6.075163542E1 +2.361840000E2,5.742858606E1 +2.364460000E2,5.756917813E1 +2.366990000E2,6.169927684E1 +2.370080000E2,5.540268710E1 +2.373040000E2,5.484088652E1 +2.376000000E2,5.732112773E1 +2.378800000E2,5.184194161E1 +2.381270000E2,5.604168635E1 +2.383910000E2,5.644051218E1 +2.387130000E2,6.049774032E1 +2.390290000E2,6.303013407E1 +2.392800000E2,6.115111046E1 +2.395770000E2,6.294174883E1 +2.398740000E2,6.716012591E1 +2.401880000E2,7.075117191E1 +2.404890000E2,6.435561631E1 +2.407550000E2,5.593172595E1 +2.410720000E2,5.781614361E1 +2.413350000E2,5.497792445E1 +2.416080000E2,5.569244646E1 +2.418870000E2,5.408109683E1 +2.421100000E2,5.687440525E1 +2.424230000E2,6.415333296E1 +2.427170000E2,6.528722740E1 +2.429900000E2,6.229384329E1 +2.432350000E2,5.452507698E1 +2.434960000E2,5.248331654E1 +2.437450000E2,5.069826347E1 +2.439880000E2,4.989889277E1 +2.442610000E2,5.196931346E1 +2.445130000E2,4.988417717E1 +2.448120000E2,5.950968466E1 +2.451200000E2,5.725324421E1 +2.454210000E2,5.902908729E1 +2.456980000E2,5.857784521E1 +2.459650000E2,5.154496059E1 +2.462670000E2,5.316738342E1 +2.465660000E2,5.681338179E1 +2.468580000E2,5.486468116E1 +2.471080000E2,5.378622946E1 +2.473840000E2,5.263910847E1 +2.477040000E2,5.102724000E1 +2.479590000E2,4.958128022E1 +2.482070000E2,5.621813465E1 +2.486190000E2,5.553111013E1 +2.489120000E2,5.711728514E1 +2.491630000E2,6.098223102E1 +2.494610000E2,5.812970142E1 +2.497290000E2,5.874411947E1 +2.500090000E2,6.058797235E1 +2.503160000E2,5.921850964E1 +2.506300000E2,5.825659244E1 +2.508940000E2,5.902074554E1 +2.512250000E2,5.857720223E1 +2.514860000E2,5.834259509E1 +2.517560000E2,5.664723408E1 +2.520110000E2,6.245873243E1 +2.522800000E2,6.018081628E1 +2.525490000E2,6.060905480E1 +2.527980000E2,6.098924059E1 +2.530310000E2,6.604497204E1 +2.532750000E2,5.762503683E1 +2.535750000E2,5.946675250E1 +2.538150000E2,5.696283688E1 +2.541120000E2,5.795434272E1 +2.543420000E2,5.641662406E1 +2.546470000E2,6.001503419E1 +2.549610000E2,5.913147779E1 +2.552050000E2,5.772050526E1 +2.554250000E2,5.986895040E1 +2.557400000E2,4.836792039E1 +2.560130000E2,4.818172752E1 +2.563450000E2,5.244597112E1 +2.566130000E2,5.174954560E1 +2.568650000E2,5.165225717E1 +2.571100000E2,4.865803315E1 +2.573530000E2,4.773689375E1 +2.576460000E2,5.375353685E1 +2.579030000E2,5.630041837E1 +2.582540000E2,5.390583403E1 +2.585030000E2,5.686416101E1 +2.588120000E2,5.880170204E1 +2.590630000E2,5.373023259E1 +2.593590000E2,6.009405077E1 +2.596120000E2,5.710673366E1 +2.598560000E2,5.891240789E1 +2.600990000E2,5.960890080E1 +2.603510000E2,6.728594423E1 +2.606060000E2,6.334340199E1 +2.609270000E2,6.082175509E1 +2.611830000E2,5.750083619E1 +2.615060000E2,5.667484133E1 +2.618070000E2,6.152760439E1 +2.620430000E2,5.697586540E1 +2.623440000E2,5.674189037E1 +2.625730000E2,5.539036876E1 +2.628210000E2,4.901745514E1 +2.631270000E2,5.264848299E1 +2.634230000E2,5.038277380E1 +2.636750000E2,5.149234245E1 +2.639170000E2,4.604207892E1 +2.641630000E2,5.735184247E1 +2.644630000E2,5.659523444E1 +2.648080000E2,5.697978691E1 +2.650640000E2,5.691301726E1 +2.653540000E2,5.696584583E1 +2.656480000E2,5.138210199E1 +2.659030000E2,5.345758564E1 +2.661640000E2,5.363588256E1 +2.664240000E2,5.471656895E1 +2.666720000E2,5.140760448E1 +2.669400000E2,5.329005020E1 +2.671940000E2,5.422388323E1 +2.674460000E2,5.133919880E1 +2.677140000E2,5.690801972E1 +2.681270000E2,5.964609863E1 +2.684030000E2,6.167901240E1 +2.686970000E2,5.297205648E1 +2.689350000E2,5.530010894E1 +2.692310000E2,5.450325538E1 +2.694700000E2,5.391690578E1 +2.697660000E2,5.420666075E1 +2.700010000E2,4.962510480E1 +2.702390000E2,5.010058679E1 +2.705460000E2,5.345147952E1 +2.708590000E2,5.574757195E1 +2.711770000E2,5.571208034E1 +2.714720000E2,5.288998421E1 +2.717170000E2,5.214438195E1 +2.720190000E2,5.232798978E1 +2.723080000E2,6.045263056E1 +2.725500000E2,5.870512300E1 +2.727930000E2,5.577911819E1 +2.730760000E2,5.501493048E1 +2.733800000E2,5.433475343E1 +2.736720000E2,5.293457700E1 +2.739070000E2,5.486483547E1 +2.741780000E2,6.008208952E1 +2.745050000E2,5.845984546E1 +2.748040000E2,5.900764997E1 +2.751070000E2,5.760203457E1 +2.754240000E2,5.795024632E1 +2.757280000E2,6.182748257E1 +2.760340000E2,5.683205968E1 +2.763350000E2,5.821402367E1 +2.766080000E2,5.520672517E1 +2.768980000E2,5.645892504E1 +2.772030000E2,5.463906896E1 +2.775200000E2,5.412722413E1 +2.777910000E2,5.268636730E1 +2.780870000E2,5.566734184E1 +2.783350000E2,5.745256931E1 +2.785810000E2,5.645167582E1 +2.788270000E2,5.925831320E1 +2.790840000E2,5.591320738E1 +2.793690000E2,5.632637646E1 +2.796200000E2,6.252281740E1 +2.799120000E2,5.547643277E1 +2.801570000E2,6.021611275E1 +2.804580000E2,5.732676882E1 +2.808110000E2,5.909573770E1 +2.810780000E2,6.005240162E1 +2.813300000E2,5.965022185E1 +2.815820000E2,6.135840817E1 +2.818790000E2,5.970629096E1 +2.821590000E2,5.879025140E1 +2.824010000E2,5.747324456E1 +2.826520000E2,5.726379384E1 +2.828950000E2,5.871306541E1 +2.831920000E2,6.188032415E1 +2.834710000E2,6.066582287E1 +2.837110000E2,5.950933244E1 +2.840350000E2,5.901018860E1 +2.843000000E2,5.761182729E1 +2.846050000E2,5.446909438E1 +2.848570000E2,5.349219985E1 +2.851700000E2,5.015518748E1 +2.854330000E2,5.374610595E1 +2.857270000E2,5.877223624E1 +2.860310000E2,5.644512377E1 +2.863080000E2,5.711327205E1 +2.865540000E2,5.655239592E1 +2.867930000E2,5.833716670E1 +2.871150000E2,5.417781453E1 +2.874030000E2,5.332227783E1 +2.876540000E2,5.146836736E1 +2.879540000E2,5.452228720E1 +2.881970000E2,5.025406823E1 +2.884910000E2,5.490648375E1 +2.887280000E2,5.506242221E1 +2.890210000E2,5.400927835E1 +2.892600000E2,5.781126179E1 +2.895430000E2,6.384283902E1 +2.898470000E2,6.340395874E1 +2.901430000E2,5.555395770E1 +2.904560000E2,5.514224078E1 +2.907530000E2,5.346566906E1 +2.910000000E2,5.948406902E1 +2.912590000E2,6.362292628E1 +2.915300000E2,6.175065463E1 +2.918240000E2,6.129817533E1 +2.920790000E2,6.317618325E1 +2.923350000E2,6.137933812E1 +2.926010000E2,5.620086793E1 +2.928740000E2,5.715913846E1 +2.931780000E2,7.028942499E1 +2.934620000E2,6.774357618E1 +2.937770000E2,6.989950413E1 +2.940270000E2,6.631119439E1 +2.943030000E2,6.956920703E1 +2.945570000E2,6.352936554E1 +2.948100000E2,6.981123112E1 +2.951150000E2,5.607171784E1 +2.953950000E2,5.394017247E1 +2.956980000E2,7.110851253E1 +2.959460000E2,6.978848906E1 +2.961900000E2,5.446752823E1 +2.965090000E2,6.309281755E1 +2.968110000E2,6.647752141E1 +2.971300000E2,6.773248230E1 +2.974240000E2,6.289421429E1 +2.977060000E2,5.998905240E1 +2.979500000E2,6.016152671E1 +2.981940000E2,5.851705490E1 +2.984880000E2,6.506323043E1 +2.987430000E2,5.702053645E1 +2.990110000E2,4.890963733E1 +2.993040000E2,5.105737182E1 +2.995650000E2,4.950865545E1 +2.998150000E2,4.713536225E1 +3.000860000E2,6.170154569E1 +3.003780000E2,5.697995513E1 +3.006750000E2,6.496205179E1 +3.009180000E2,5.585602045E1 +3.012120000E2,5.317421587E1 +3.015130000E2,5.532213468E1 +3.017840000E2,5.371543715E1 +3.020520000E2,6.741141038E1 +3.023220000E2,6.638671809E1 +3.025730000E2,5.833940482E1 +3.028700000E2,6.272205104E1 +3.031230000E2,6.150676490E1 +3.034050000E2,6.571826996E1 +3.036710000E2,6.387001854E1 +3.039460000E2,5.704179120E1 +3.042380000E2,5.452420344E1 +3.044730000E2,6.911436343E1 +3.047670000E2,6.747337761E1 +3.050070000E2,6.642457947E1 +3.053010000E2,6.704052830E1 +3.055360000E2,6.335116163E1 +3.058350000E2,6.452879154E1 +3.061310000E2,6.588892290E1 +3.064460000E2,6.065604325E1 +3.066970000E2,5.884139521E1 +3.069890000E2,6.115548360E1 +3.072650000E2,5.474220631E1 +3.075290000E2,5.525228633E1 +3.077890000E2,5.546520153E1 +3.080280000E2,5.799541194E1 +3.083270000E2,5.467819740E1 +3.086250000E2,5.227747322E1 +3.089260000E2,5.802220937E1 +3.091970000E2,5.383690373E1 +3.095040000E2,5.794687305E1 +3.097810000E2,5.426386053E1 +3.100000000E2,5.745164866E1 +3.103300000E2,5.475501144E1 +3.106240000E2,5.154802151E1 +3.108750000E2,5.434380726E1 +3.111540000E2,5.533246388E1 +3.114150000E2,5.554218476E1 +3.116740000E2,5.375334275E1 +3.119200000E2,5.727216331E1 +3.121680000E2,5.235396651E1 +3.124720000E2,6.207307801E1 +3.127180000E2,6.488896117E1 +3.130530000E2,6.168970511E1 +3.133080000E2,6.010687101E1 +3.135950000E2,6.305386662E1 +3.138880000E2,6.214030252E1 +3.141410000E2,5.907513997E1 +3.143960000E2,6.064308138E1 +3.146480000E2,6.195321339E1 +3.148870000E2,6.088765310E1 +3.151830000E2,5.906360624E1 +3.154280000E2,5.864981040E1 +3.157360000E2,5.824424792E1 +3.159750000E2,5.826399021E1 +3.163740000E2,6.051726612E1 +3.166320000E2,6.011967909E1 +3.168940000E2,5.577110603E1 +3.172010000E2,5.372586587E1 +3.174460000E2,5.537091967E1 +3.176890000E2,5.504912063E1 +3.179320000E2,5.264203521E1 +3.182150000E2,5.344854544E1 +3.184600000E2,5.656777951E1 +3.187200000E2,5.398435402E1 +3.189820000E2,5.410695962E1 +3.192460000E2,5.344168860E1 +3.195780000E2,5.697626360E1 +3.198350000E2,6.073105615E1 +3.200880000E2,6.621432780E1 +3.203460000E2,6.597785722E1 +3.205980000E2,5.907542432E1 +3.208920000E2,5.702769809E1 +3.211760000E2,6.207459825E1 +3.214520000E2,5.921715282E1 +3.217010000E2,5.501368146E1 +3.220030000E2,5.927746858E1 +3.223090000E2,5.878714279E1 +3.226530000E2,6.209253703E1 +3.229180000E2,5.801419316E1 +3.231660000E2,6.150680788E1 +3.234110000E2,5.950436139E1 +3.236660000E2,5.694006868E1 +3.239890000E2,5.964691948E1 +3.242420000E2,6.322261269E1 +3.245070000E2,5.967413832E1 +3.247540000E2,5.743115651E1 +3.250010000E2,5.693057833E1 +3.252760000E2,5.076009335E1 +3.255600000E2,5.432440321E1 +3.258270000E2,5.728583073E1 +3.262160000E2,6.158050311E1 +3.264570000E2,5.788548067E1 +3.267330000E2,5.661485397E1 +3.270280000E2,5.698735139E1 +3.272870000E2,5.428158234E1 +3.275550000E2,5.401192370E1 +3.278320000E2,5.894424302E1 +3.281050000E2,5.279140275E1 +3.283850000E2,5.366788524E1 +3.286760000E2,5.569462346E1 +3.289750000E2,5.484501656E1 +3.292730000E2,5.654335493E1 +3.295550000E2,5.483429560E1 +3.298560000E2,5.516099131E1 +3.301720000E2,5.150081287E1 +3.304560000E2,5.126263973E1 +3.307930000E2,4.943715566E1 +3.310330000E2,5.297477083E1 +3.312800000E2,4.994759883E1 +3.316030000E2,5.283028939E1 +3.318860000E2,5.150402936E1 +3.321790000E2,5.777668868E1 +3.325470000E2,5.446937149E1 +3.328030000E2,5.754474494E1 +3.330410000E2,5.437750931E1 +3.333210000E2,5.378201308E1 +3.335760000E2,5.486825362E1 +3.338240000E2,5.338123539E1 +3.340700000E2,5.704649160E1 +3.343740000E2,5.576563429E1 +3.346640000E2,5.503590574E1 +3.349650000E2,5.539431503E1 +3.352080000E2,5.782097549E1 +3.355080000E2,5.260852375E1 +3.358690000E2,6.012616228E1 +3.361400000E2,5.534922411E1 +3.363810000E2,5.436765301E1 +3.366230000E2,5.007736554E1 +3.368850000E2,5.304270830E1 +3.371340000E2,5.106682022E1 +3.373960000E2,5.491262243E1 +3.376890000E2,5.891119644E1 +3.379320000E2,5.554676164E1 +3.382420000E2,5.491809401E1 +3.385700000E2,6.003743295E1 +3.389490000E2,5.964265847E1 +3.392140000E2,6.009419780E1 +3.394780000E2,5.950800538E1 +3.397810000E2,5.514081916E1 +3.400260000E2,5.654810222E1 +3.403230000E2,5.919098275E1 +3.405600000E2,5.937137097E1 +3.408650000E2,5.885711760E1 +3.411560000E2,6.122434193E1 +3.414060000E2,6.101494213E1 +3.416650000E2,5.685059098E1 +3.419710000E2,4.988163583E1 +3.423360000E2,5.097871962E1 +3.426300000E2,6.097968551E1 +3.429260000E2,5.246223058E1 +3.431760000E2,5.140448000E1 +3.434570000E2,5.162147831E1 +3.436910000E2,5.437509469E1 +3.439650000E2,5.588289675E1 +3.442010000E2,5.342482218E1 +3.444930000E2,5.621155564E1 +3.447310000E2,5.753713233E1 +3.450340000E2,5.873821374E1 +3.453240000E2,5.674648484E1 +3.455770000E2,5.843857274E1 +3.458770000E2,6.170678128E1 +3.461770000E2,5.848319050E1 +3.464240000E2,5.996271814E1 +3.467290000E2,5.583139448E1 +3.470000000E2,5.558324990E1 +3.472360000E2,5.638821787E1 +3.474880000E2,6.015129432E1 +3.477550000E2,6.074195357E1 +3.480530000E2,6.258101891E1 +3.483260000E2,6.280209300E1 +3.486840000E2,5.935598721E1 +3.489370000E2,6.423635683E1 +3.492060000E2,7.026891453E1 +3.495130000E2,5.477771858E1 +3.498240000E2,6.143080763E1 +3.500700000E2,6.077206860E1 +3.503130000E2,5.816670512E1 +3.506030000E2,6.220374728E1 +3.509040000E2,6.435510927E1 +3.511560000E2,6.387906049E1 +3.514240000E2,6.324188625E1 +3.517710000E2,6.217871174E1 +3.520510000E2,6.349767138E1 +3.523000000E2,5.947763114E1 +3.525840000E2,5.623947938E1 +3.528810000E2,5.940245648E1 +3.531830000E2,5.323006485E1 +3.534790000E2,4.756673680E1 +3.537830000E2,5.761743216E1 +3.540870000E2,5.701856444E1 +3.543720000E2,5.507707077E1 +3.546320000E2,5.561457107E1 +3.549330000E2,6.036785424E1 +3.552860000E2,5.818319920E1 +3.555390000E2,5.636477080E1 +3.557840000E2,5.686236286E1 +3.560330000E2,6.137502104E1 +3.563290000E2,6.039421004E1 +3.565710000E2,5.873926214E1 +3.568160000E2,5.984737812E1 +3.570890000E2,5.898549785E1 +3.573200000E2,5.804358229E1 +3.576080000E2,5.178825198E1 +3.578380000E2,5.333798630E1 +3.581470000E2,5.663121054E1 +3.584860000E2,5.705169894E1 +3.587470000E2,5.488627438E1 +3.590020000E2,5.493171173E1 +3.592590000E2,5.280801534E1 +3.595110000E2,5.919356657E1 +3.597710000E2,6.061921525E1 +3.600770000E2,5.781838960E1 +3.603810000E2,5.824405535E1 +3.606410000E2,5.734273072E1 +3.608930000E2,5.860073318E1 +3.611440000E2,5.158577335E1 +3.614110000E2,5.569804167E1 +3.617550000E2,5.732029627E1 +3.620530000E2,5.599725951E1 +3.623260000E2,5.427140428E1 +3.625700000E2,5.439119305E1 +3.628680000E2,5.768088704E1 +3.631160000E2,5.322266305E1 +3.634170000E2,5.611257515E1 +3.637150000E2,5.466283243E1 +3.639540000E2,5.648497192E1 +3.642520000E2,5.982456496E1 +3.644910000E2,5.683499776E1 +3.648080000E2,5.424977228E1 +3.650550000E2,5.261749952E1 +3.653010000E2,5.976464589E1 +3.655400000E2,5.630627545E1 +3.658370000E2,5.855663855E1 +3.660660000E2,5.839517218E1 +3.663050000E2,5.701336937E1 +3.666100000E2,6.057417753E1 +3.668530000E2,5.660058929E1 +3.671060000E2,5.360906173E1 +3.673270000E2,5.766761713E1 +3.676020000E2,5.473947199E1 +3.679270000E2,5.730791892E1 +3.681990000E2,5.368134624E1 +3.685210000E2,5.122725302E1 +3.688180000E2,5.413949330E1 +3.690720000E2,5.953240184E1 +3.693650000E2,5.834363401E1 +3.696110000E2,4.952962201E1 +3.698620000E2,6.082605721E1 +3.701240000E2,5.541205242E1 +3.703840000E2,5.595936781E1 +3.706570000E2,5.751180267E1 +3.709050000E2,5.510413826E1 +3.712530000E2,5.236304209E1 +3.715330000E2,5.429686706E1 +3.717680000E2,5.365135821E1 +3.720680000E2,5.442146139E1 +3.723070000E2,5.193301537E1 +3.726070000E2,5.573089397E1 +3.728540000E2,5.084704353E1 +3.731070000E2,5.244752708E1 +3.734250000E2,5.501438711E1 +3.737160000E2,5.701937821E1 +3.739830000E2,5.913008265E1 +3.743030000E2,6.329763996E1 +3.745490000E2,5.828010903E1 +3.748110000E2,5.514928454E1 +3.750560000E2,5.535724603E1 +3.753250000E2,6.062318511E1 +3.756820000E2,5.853801057E1 +3.759720000E2,6.218740595E1 +3.762560000E2,6.130322227E1 +3.764780000E2,5.705598438E1 +3.767430000E2,5.675025411E1 +3.770350000E2,5.562309411E1 +3.773330000E2,6.171478403E1 +3.776660000E2,5.752069737E1 +3.779640000E2,5.869913239E1 +3.782130000E2,5.802158707E1 +3.785030000E2,5.920699755E1 +3.787580000E2,5.984700757E1 +3.790120000E2,5.874214142E1 +3.792820000E2,5.792329599E1 +3.795460000E2,6.240429581E1 +3.798520000E2,5.924961400E1 +3.800960000E2,5.655548581E1 +3.803510000E2,5.997047167E1 +3.806590000E2,5.894207932E1 +3.810310000E2,5.556916558E1 +3.813250000E2,5.709965860E1 +3.815810000E2,5.724657649E1 +3.818690000E2,5.634885250E1 +3.821660000E2,5.381597934E1 +3.824070000E2,5.409431797E1 +3.827020000E2,5.558304395E1 +3.829400000E2,5.836087965E1 +3.832380000E2,5.621848827E1 +3.834740000E2,5.756105430E1 +3.837670000E2,5.972981317E1 +3.840620000E2,6.110722903E1 +3.842970000E2,6.011338906E1 +3.846120000E2,6.632548976E1 +3.849300000E2,5.632542095E1 +3.852340000E2,5.660090160E1 +3.854760000E2,5.637042997E1 +3.857700000E2,6.483820819E1 +3.860160000E2,6.294386681E1 +3.862760000E2,6.248693097E1 +3.865740000E2,5.966646580E1 +3.868130000E2,5.884596060E1 +3.871230000E2,6.069045984E1 +3.874660000E2,5.535227762E1 +3.877260000E2,5.453589064E1 +3.879920000E2,5.803286513E1 +3.882920000E2,6.338575111E1 +3.885370000E2,6.297665471E1 +3.888380000E2,6.078963895E1 +3.890870000E2,6.078711186E1 +3.893350000E2,5.918580133E1 +3.896040000E2,5.645003340E1 +3.899070000E2,5.868887980E1 +3.901560000E2,5.816727924E1 +3.904840000E2,5.908711574E1 +3.907830000E2,5.165109059E1 +3.910410000E2,5.747977046E1 +3.913230000E2,5.600926578E1 +3.916170000E2,5.743239537E1 +3.918580000E2,5.999528635E1 +3.921650000E2,5.924448814E1 +3.924670000E2,6.347749271E1 +3.927590000E2,6.285842009E1 +3.929960000E2,6.439104552E1 +3.933010000E2,6.092208558E1 +3.935450000E2,5.889760176E1 +3.939100000E2,5.798312040E1 +3.941770000E2,5.909426563E1 +3.944250000E2,5.971090911E1 +3.946810000E2,5.379436409E1 +3.949270000E2,5.134339741E1 +3.951700000E2,5.739586279E1 +3.954270000E2,5.255911571E1 +3.956850000E2,5.149310319E1 +3.959500000E2,5.723685944E1 +3.962270000E2,5.622087783E1 +3.964720000E2,6.119098643E1 +3.967310000E2,6.249797436E1 +3.970320000E2,5.838309249E1 +3.973440000E2,5.720898847E1 +3.976100000E2,5.357982700E1 +3.978600000E2,5.091452983E1 +3.981070000E2,4.781274510E1 +3.983520000E2,4.684320786E1 +3.986530000E2,4.867937405E1 +3.988970000E2,4.947454895E1 +3.991740000E2,4.941937240E1 +3.994180000E2,5.206925818E1 +3.997200000E2,5.099596962E1 +3.999720000E2,5.059119317E1 +4.002350000E2,4.980275756E1 +4.004940000E2,5.514017077E1 +4.008060000E2,5.354499430E1 +4.011150000E2,5.377825353E1 +4.013980000E2,5.657928040E1 +4.016460000E2,6.437756844E1 +4.019070000E2,6.072529486E1 +4.021970000E2,5.876291143E1 +4.024430000E2,6.118567430E1 +4.027460000E2,5.925186578E1 +4.030590000E2,5.727531678E1 +4.033610000E2,6.211123432E1 +4.036680000E2,6.041950332E1 +4.039230000E2,6.161200416E1 +4.041780000E2,6.047480336E1 +4.044620000E2,5.905442986E1 +4.047060000E2,5.729915709E1 +4.049630000E2,6.020933408E1 +4.052500000E2,5.845152603E1 +4.055600000E2,5.814304967E1 +4.058210000E2,5.866194002E1 +4.060640000E2,5.736420578E1 +4.063180000E2,6.107395805E1 +4.065790000E2,5.985269852E1 +4.069480000E2,5.745859610E1 +4.072050000E2,5.693680110E1 +4.074960000E2,6.165201185E1 +4.077470000E2,6.131132241E1 +4.079970000E2,5.824414723E1 +4.083050000E2,5.958451387E1 +4.085600000E2,5.739792126E1 +4.088150000E2,5.573389816E1 +4.090850000E2,5.530698039E1 +4.093810000E2,5.634371531E1 +4.096660000E2,5.880658089E1 +4.099920000E2,5.804298004E1 +4.102870000E2,5.688352401E1 +4.106310000E2,5.573115839E1 +4.109280000E2,5.368053116E1 +4.112180000E2,5.474384188E1 +4.114650000E2,5.380195893E1 +4.117660000E2,5.718608674E1 +4.120140000E2,5.703743686E1 +4.122910000E2,5.985228158E1 +4.125620000E2,6.278694860E1 +4.128210000E2,5.839550633E1 +4.130600000E2,6.029373556E1 +4.133710000E2,5.711050636E1 +4.136150000E2,5.200468588E1 +4.138820000E2,5.769230508E1 +4.141370000E2,5.333759168E1 +4.143860000E2,5.632377961E1 +4.146570000E2,5.647744894E1 +4.149040000E2,5.667945226E1 +4.151840000E2,5.669404445E1 +4.154420000E2,6.072374556E1 +4.157420000E2,5.606444578E1 +4.159850000E2,5.623596320E1 +4.162830000E2,5.264542492E1 +4.165340000E2,5.359803767E1 +4.168600000E2,5.691340897E1 +4.171060000E2,5.636326143E1 +4.173490000E2,6.276141082E1 +4.176080000E2,6.197471417E1 +4.178580000E2,5.777170976E1 +4.181050000E2,5.407671770E1 +4.183760000E2,4.795453020E1 +4.186580000E2,5.871005652E1 +4.188870000E2,6.069158080E1 +4.191320000E2,6.112379328E1 +4.193750000E2,5.584116633E1 +4.196280000E2,6.302854070E1 +4.199610000E2,6.640457067E1 +4.202240000E2,6.337314603E1 +4.205160000E2,5.904470105E1 +4.208200000E2,5.799078909E1 +4.210810000E2,5.975635789E1 +4.213260000E2,6.334088587E1 +4.215900000E2,5.849627934E1 +4.218550000E2,5.894070219E1 +4.221030000E2,5.961371776E1 +4.223550000E2,5.281830949E1 +4.225970000E2,4.892580508E1 +4.229130000E2,5.950646935E1 +4.232610000E2,6.303011111E1 +4.235630000E2,6.030515180E1 +4.238060000E2,5.832387195E1 +4.240560000E2,6.126571743E1 +4.243280000E2,5.961805347E1 +4.245710000E2,5.916464366E1 +4.248300000E2,6.404431780E1 +4.251020000E2,6.161392817E1 +4.253630000E2,6.303875005E1 +4.256110000E2,6.294329578E1 +4.258560000E2,6.495739223E1 +4.261620000E2,6.352748415E1 +4.265140000E2,6.360144813E1 +4.267650000E2,6.320185268E1 +4.270250000E2,6.598206760E1 +4.272910000E2,5.736158392E1 +4.275300000E2,5.632655800E1 +4.277760000E2,5.626186588E1 +4.280650000E2,5.992298879E1 +4.283460000E2,5.976814640E1 +4.285960000E2,5.617047451E1 +4.288540000E2,5.410240194E1 +4.291290000E2,5.524345530E1 +4.293550000E2,5.025485629E1 +4.297050000E2,5.094849624E1 +4.299600000E2,5.349595208E1 +4.302230000E2,5.668766668E1 +4.304690000E2,5.470073040E1 +4.307330000E2,5.808421323E1 +4.310240000E2,5.815977776E1 +4.312740000E2,5.751031291E1 +4.315190000E2,6.045600028E1 +4.318300000E2,5.967896339E1 +4.320980000E2,5.746835753E1 +4.324020000E2,5.874054152E1 +4.327010000E2,5.770096959E1 +4.330460000E2,5.851412717E1 +4.333220000E2,5.970473393E1 +4.335930000E2,6.024030776E1 +4.338530000E2,5.564089573E1 +4.341340000E2,5.328000065E1 +4.343790000E2,5.522789934E1 +4.346930000E2,5.271905966E1 +4.349910000E2,5.685384424E1 +4.352400000E2,5.751176106E1 +4.355350000E2,5.654290580E1 +4.357760000E2,5.976937629E1 +4.360780000E2,5.445311615E1 +4.363520000E2,5.460006243E1 +4.366010000E2,5.402958946E1 +4.369120000E2,5.611325616E1 +4.371660000E2,5.675575065E1 +4.374120000E2,5.605818704E1 +4.377070000E2,5.614720111E1 +4.379470000E2,5.596280974E1 +4.382450000E2,5.764305460E1 +4.384820000E2,6.015340826E1 +4.387240000E2,6.073594369E1 +4.390310000E2,5.846982437E1 +4.393110000E2,5.837342754E1 +4.396160000E2,5.758988397E1 +4.398810000E2,5.375393273E1 +4.401700000E2,5.590416510E1 +4.404180000E2,5.649267014E1 +4.406570000E2,5.809884175E1 +4.409200000E2,5.934788425E1 +4.411750000E2,5.883690392E1 +4.414270000E2,5.465512306E1 +4.416780000E2,5.456039720E1 +4.419260000E2,6.053551690E1 +4.422020000E2,5.446896121E1 +4.425270000E2,5.304300238E1 +4.428480000E2,5.413537656E1 +4.431230000E2,5.590535088E1 +4.433740000E2,5.516889265E1 +4.436180000E2,5.375803139E1 +4.439250000E2,5.440731706E1 +4.441670000E2,5.378894171E1 +4.444170000E2,5.676009311E1 +4.447160000E2,5.433224316E1 +4.449620000E2,5.431777666E1 +4.452100000E2,5.220353562E1 +4.454560000E2,5.525232641E1 +4.456950000E2,5.348687858E1 +4.459900000E2,5.571408478E1 +4.462320000E2,5.590054486E1 +4.464840000E2,5.627503595E1 +4.467390000E2,5.824548232E1 +4.469910000E2,5.637049423E1 +4.472460000E2,5.754096885E1 +4.474930000E2,5.335865942E1 +4.477890000E2,5.765888938E1 +4.480780000E2,6.102087464E1 +4.483520000E2,6.006145593E1 +4.486510000E2,5.685958774E1 +4.489610000E2,5.748149351E1 +4.492370000E2,5.709623916E1 +4.495040000E2,5.821496279E1 +4.497570000E2,5.970222946E1 +4.500030000E2,5.750976802E1 +4.502380000E2,5.796549321E1 +4.505370000E2,5.665777454E1 +4.508330000E2,5.605038109E1 +4.510750000E2,5.504306522E1 +4.513230000E2,5.112487870E1 +4.515900000E2,5.559150914E1 +4.518300000E2,5.656933458E1 +4.520810000E2,6.082180135E1 +4.524470000E2,5.774965281E1 +4.527120000E2,5.847728207E1 +4.529730000E2,5.711434047E1 +4.532810000E2,5.503285278E1 +4.535670000E2,5.614330822E1 +4.538610000E2,6.211492489E1 +4.541040000E2,6.003078695E1 +4.543760000E2,5.766611466E1 +4.546280000E2,5.912518267E1 +4.549300000E2,5.969489895E1 +4.551760000E2,5.509558621E1 +4.554320000E2,5.963291683E1 +4.556950000E2,6.194656842E1 +4.559980000E2,6.032793642E1 +4.562390000E2,5.874022110E1 +4.565060000E2,6.016749735E1 +4.567480000E2,5.985596964E1 +4.570070000E2,5.588678859E1 +4.572660000E2,5.541792762E1 +4.575660000E2,4.969164404E1 +4.578050000E2,4.976271573E1 +4.581060000E2,5.634137812E1 +4.583500000E2,5.321783082E1 +4.586280000E2,5.816393976E1 +4.588870000E2,5.817726916E1 +4.591860000E2,5.398220140E1 +4.594690000E2,5.572842498E1 +4.597270000E2,5.759574297E1 +4.600290000E2,5.492384706E1 +4.602790000E2,5.570826682E1 +4.605780000E2,5.619496661E1 +4.608690000E2,5.993990435E1 +4.611730000E2,6.185390750E1 +4.614300000E2,6.125031183E1 +4.617390000E2,6.047450440E1 +4.621070000E2,5.913093195E1 +4.623500000E2,6.032535990E1 +4.626490000E2,5.803726699E1 +4.628910000E2,5.968748294E1 +4.631850000E2,5.792594347E1 +4.634330000E2,5.623910190E1 +4.636850000E2,6.026318401E1 +4.639240000E2,6.002593060E1 +4.641990000E2,5.694813724E1 +4.644200000E2,5.456998819E1 +4.646660000E2,5.683591124E1 +4.649070000E2,5.893829862E1 +4.652630000E2,5.637983039E1 +4.655160000E2,5.571226470E1 +4.657720000E2,5.582065666E1 +4.660510000E2,5.436378979E1 +4.663550000E2,5.697364508E1 +4.666350000E2,5.716664070E1 +4.668800000E2,6.098104772E1 +4.671260000E2,5.932872997E1 +4.673960000E2,5.573089336E1 +4.676430000E2,5.791664461E1 +4.678890000E2,5.589855895E1 +4.681490000E2,6.359324433E1 +4.685010000E2,5.902079393E1 +4.687870000E2,6.085500324E1 +4.690180000E2,6.401116813E1 +4.693190000E2,6.157634911E1 +4.695830000E2,6.068297160E1 +4.698370000E2,5.867738322E1 +4.701080000E2,6.069776659E1 +4.703530000E2,5.904983802E1 +4.706060000E2,5.642725313E1 +4.708480000E2,5.600286970E1 +4.711080000E2,5.678564623E1 +4.714020000E2,5.139543439E1 +4.717220000E2,5.924511995E1 +4.720300000E2,5.309180697E1 +4.722790000E2,5.295961103E1 +4.725820000E2,5.448425692E1 +4.728350000E2,5.346047841E1 +4.731210000E2,5.563518239E1 +4.733630000E2,5.630991562E1 +4.736070000E2,5.519344442E1 +4.738520000E2,5.696356709E1 +4.741150000E2,5.721588368E1 +4.743810000E2,5.556082681E1 +4.746430000E2,5.453201409E1 +4.749610000E2,5.621559396E1 +4.752460000E2,6.170975330E1 +4.755640000E2,6.352753975E1 +4.758660000E2,5.818774343E1 +4.761780000E2,6.177058435E1 +4.764630000E2,5.829511769E1 +4.766910000E2,5.658732029E1 +4.769520000E2,6.006113158E1 +4.772530000E2,6.022385702E1 +4.775200000E2,5.965858240E1 +4.778410000E2,5.970326758E1 +4.780960000E2,5.911597661E1 +4.783440000E2,5.656338446E1 +4.786020000E2,5.723922467E1 +4.788680000E2,5.700163516E1 +4.791490000E2,6.083416080E1 +4.794510000E2,5.899425763E1 +4.797630000E2,5.820674449E1 +4.800620000E2,5.648898879E1 +4.803380000E2,5.465743937E1 +4.806090000E2,5.006847009E1 +4.809050000E2,5.870050130E1 +4.811580000E2,5.878066343E1 +4.814060000E2,5.929414686E1 +4.817070000E2,5.758425183E1 +4.819760000E2,5.151398214E1 +4.822410000E2,5.772956896E1 +4.824880000E2,5.913153701E1 +4.827710000E2,5.814746383E1 +4.830140000E2,6.018356701E1 +4.832870000E2,5.985078792E1 +4.835070000E2,6.081307149E1 +4.837500000E2,5.810932132E1 +4.840440000E2,5.700769218E1 +4.842880000E2,5.815119989E1 +4.845920000E2,5.595850943E1 +4.849330000E2,5.891167795E1 +4.851960000E2,5.413833723E1 +4.854760000E2,6.184122004E1 +4.857700000E2,6.074653742E1 +4.860130000E2,6.033024099E1 +4.862530000E2,5.218562994E1 +4.865560000E2,5.902882093E1 +4.868150000E2,6.397338635E1 +4.870790000E2,6.543155406E1 +4.873440000E2,6.181389827E1 +4.876070000E2,6.381240883E1 +4.878770000E2,6.121521197E1 +4.882210000E2,5.780293585E1 +4.884640000E2,5.941826112E1 +4.887100000E2,6.118399944E1 +4.889830000E2,6.000089150E1 +4.892940000E2,5.873163787E1 +4.895350000E2,5.943116280E1 +4.897770000E2,5.867927357E1 +4.900230000E2,6.190584219E1 +4.903270000E2,6.313044892E1 +4.905550000E2,6.096660510E1 +4.907970000E2,5.773464228E1 +4.911090000E2,5.720144266E1 +4.914750000E2,5.797465536E1 +4.917410000E2,6.063197812E1 +4.920040000E2,5.799562897E1 +4.922950000E2,5.391853563E1 +4.925940000E2,6.053973121E1 +4.928320000E2,5.781822977E1 +4.931250000E2,6.541242849E1 +4.933660000E2,6.151252976E1 +4.936620000E2,5.962569242E1 +4.939140000E2,6.114162989E1 +4.941750000E2,6.074296596E1 +4.944160000E2,5.738425867E1 +4.947510000E2,6.084173002E1 +4.950140000E2,5.911448476E1 +4.953100000E2,6.076832164E1 +4.955530000E2,6.357047625E1 +4.958480000E2,6.344590866E1 +4.960850000E2,6.154350148E1 +4.963870000E2,5.815666478E1 +4.966770000E2,5.862350251E1 +4.969720000E2,5.162851816E1 +4.972640000E2,5.887916548E1 +4.975020000E2,6.130693279E1 +4.977480000E2,6.164914583E1 +4.980300000E2,5.689153252E1 +4.983240000E2,6.054571109E1 +4.985610000E2,5.779234792E1 +4.987980000E2,6.281334084E1 +4.991290000E2,6.074883772E1 +4.994230000E2,6.344972933E1 +4.996620000E2,6.040546490E1 +4.999570000E2,6.143019571E1 +5.002020000E2,6.117826214E1 +5.004980000E2,6.217883653E1 +5.007380000E2,6.294102819E1 +5.010930000E2,6.516475449E1 +5.013550000E2,6.119184016E1 +5.016670000E2,6.096554209E1 +5.019390000E2,6.197647057E1 +5.022530000E2,6.186754720E1 +5.025630000E2,5.954982776E1 +5.028510000E2,6.115486405E1 +5.031440000E2,6.348254173E1 +5.033820000E2,5.960570527E1 +5.036780000E2,5.977682583E1 +5.039180000E2,5.709696054E1 +5.042580000E2,6.265263203E1 +5.045140000E2,6.166583393E1 +5.047590000E2,6.184451596E1 +5.050170000E2,6.196658471E1 +5.053150000E2,6.014630927E1 +5.055610000E2,6.055201466E1 +5.058690000E2,6.189129858E1 +5.062120000E2,6.557808579E1 +5.064770000E2,6.080176744E1 +5.067370000E2,6.164107472E1 +5.069870000E2,6.497302078E1 +5.072490000E2,6.320126990E1 +5.076210000E2,6.073801439E1 +5.078780000E2,5.612097300E1 +5.081420000E2,5.978501024E1 +5.084360000E2,6.061444996E1 +5.086860000E2,6.272142993E1 +5.089270000E2,6.250458760E1 +5.092250000E2,5.860749180E1 +5.094720000E2,6.368373725E1 +5.097760000E2,6.005985592E1 +5.100780000E2,5.959557057E1 +5.103410000E2,6.085764000E1 +5.106360000E2,6.210563273E1 +5.109960000E2,6.125336704E1 +5.112590000E2,5.627814405E1 +5.115470000E2,6.253958528E1 +5.118480000E2,6.261683940E1 +5.120990000E2,5.782347554E1 +5.123560000E2,6.181201679E1 +5.126370000E2,6.425542150E1 +5.129400000E2,6.148973489E1 +5.132300000E2,6.230215374E1 +5.134720000E2,6.332855968E1 +5.137620000E2,5.875203916E1 +5.140950000E2,6.043073123E1 +5.143340000E2,5.829778385E1 +5.146280000E2,6.530539120E1 +5.148660000E2,5.725439078E1 +5.151580000E2,6.255661351E1 +5.153960000E2,6.412193683E1 +5.156410000E2,6.315775814E1 +5.158840000E2,6.025521775E1 +5.161460000E2,5.892698587E1 +5.164080000E2,5.956507822E1 +5.166610000E2,6.162757540E1 +5.169960000E2,6.009082976E1 +5.173360000E2,5.999682475E1 +5.176380000E2,6.121463264E1 +5.178750000E2,5.929809726E1 +5.181460000E2,5.746668369E1 +5.183810000E2,5.919113180E1 +5.186360000E2,5.827917213E1 +5.189280000E2,5.902314388E1 +5.192310000E2,6.116063950E1 +5.195310000E2,6.026149556E1 +5.198180000E2,5.851929656E1 +5.200920000E2,5.750929671E1 +5.204160000E2,5.729942637E1 +5.207470000E2,5.472104161E1 +5.210390000E2,6.169397748E1 +5.213450000E2,6.081589597E1 +5.216480000E2,6.278728872E1 +5.219550000E2,6.266319096E1 +5.222160000E2,6.478840582E1 +5.224820000E2,6.255888661E1 +5.227330000E2,6.119451713E1 +5.229970000E2,6.244953097E1 +5.232800000E2,6.000703556E1 +5.236020000E2,5.885323025E1 +5.239510000E2,5.826073845E1 +5.242570000E2,5.807287072E1 +5.245200000E2,5.931641295E1 +5.247800000E2,5.775994158E1 +5.250310000E2,6.167249992E1 +5.253010000E2,6.027694641E1 +5.255430000E2,6.329659774E1 +5.258240000E2,6.254377160E1 +5.261330000E2,6.489975363E1 +5.263840000E2,5.999325642E1 +5.266440000E2,5.885077446E1 +5.268920000E2,6.439829299E1 +5.272450000E2,6.165608373E1 +5.275110000E2,5.418048629E1 +5.277700000E2,5.656005066E1 +5.280170000E2,6.215252288E1 +5.283170000E2,5.743407158E1 +5.285650000E2,5.831214783E1 +5.288200000E2,6.066735547E1 +5.290820000E2,5.994603081E1 +5.293240000E2,5.951550591E1 +5.295810000E2,6.264700953E1 +5.298380000E2,5.736628274E1 +5.301360000E2,5.590406638E1 +5.304530000E2,6.041033291E1 +5.307000000E2,5.968691140E1 +5.309950000E2,5.730835182E1 +5.312390000E2,5.823026311E1 +5.315470000E2,5.871167442E1 +5.318430000E2,5.990765833E1 +5.321400000E2,6.387020611E1 +5.324510000E2,6.077699448E1 +5.326980000E2,5.895294298E1 +5.329820000E2,6.041997988E1 +5.333050000E2,5.806877757E1 +5.336110000E2,5.682362418E1 +5.340220000E2,5.915478638E1 +5.342790000E2,6.110946170E1 +5.345430000E2,5.735857105E1 +5.348060000E2,5.684014045E1 +5.350480000E2,6.043627860E1 +5.353500000E2,5.982929159E1 +5.356290000E2,5.986217314E1 +5.358770000E2,5.677131614E1 +5.361310000E2,5.763848566E1 +5.363810000E2,6.142463983E1 +5.366730000E2,5.634211854E1 +5.369290000E2,5.547608220E1 +5.372430000E2,5.920768747E1 +5.375170000E2,6.113406656E1 +5.377700000E2,6.208964505E1 +5.380710000E2,6.100572025E1 +5.383260000E2,6.352283467E1 +5.386320000E2,5.898993907E1 +5.389570000E2,5.503782412E1 +5.392560000E2,5.663453376E1 +5.395360000E2,6.406828344E1 +5.398060000E2,5.890955595E1 +5.400700000E2,6.046868424E1 +5.403380000E2,5.979639772E1 +5.406170000E2,5.838685694E1 +5.409120000E2,5.933573087E1 +5.411500000E2,5.970536072E1 +5.414430000E2,5.461931777E1 +5.417380000E2,5.891969668E1 +5.419780000E2,6.086182172E1 +5.422730000E2,5.706230292E1 +5.425150000E2,6.002937875E1 +5.428150000E2,5.733734968E1 +5.430520000E2,5.791730719E1 +5.433430000E2,5.451667439E1 +5.436740000E2,5.601232928E1 +5.439430000E2,6.067749331E1 +5.441960000E2,6.044443396E1 +5.445120000E2,6.332642539E1 +5.448320000E2,6.369907597E1 +5.451010000E2,6.327412880E1 +5.453640000E2,6.380509737E1 +5.456090000E2,6.199528902E1 +5.458550000E2,5.905332967E1 +5.461530000E2,5.748064798E1 +5.463920000E2,5.793139247E1 +5.466900000E2,5.931551966E1 +5.470480000E2,6.345498755E1 +5.473610000E2,5.881486603E1 +5.476220000E2,5.928200098E1 +5.478810000E2,5.577309321E1 +5.481470000E2,5.875325885E1 +5.483980000E2,6.007409743E1 +5.486490000E2,6.070612531E1 +5.488940000E2,5.934549940E1 +5.491520000E2,6.170511636E1 +5.494020000E2,6.376886521E1 +5.497010000E2,6.406587518E1 +5.499360000E2,6.365684538E1 +5.503130000E2,6.009406633E1 +5.505850000E2,6.014270409E1 +5.508500000E2,5.879153887E1 +5.511470000E2,5.883782525E1 +5.513760000E2,5.773432280E1 +5.516350000E2,5.966648889E1 +5.518940000E2,5.472606108E1 +5.521930000E2,5.682429497E1 +5.524670000E2,5.619181968E1 +5.527770000E2,5.997719307E1 +5.530460000E2,5.879335465E1 +5.533410000E2,5.983416170E1 +5.537120000E2,5.957041909E1 +5.539420000E2,5.952828793E1 +5.542510000E2,5.971645274E1 +5.545000000E2,6.419337448E1 +5.547730000E2,6.634363344E1 +5.550770000E2,6.285856457E1 +5.553760000E2,5.654671197E1 +5.556440000E2,5.530754918E1 +5.558640000E2,5.889159880E1 +5.561110000E2,6.213947417E1 +5.563520000E2,6.860243311E1 +5.566480000E2,6.647018679E1 +5.569110000E2,6.420604516E1 +5.571650000E2,6.703462967E1 +5.574140000E2,6.648783593E1 +5.576540000E2,6.634001782E1 +5.579350000E2,6.293734135E1 +5.581770000E2,6.205918741E1 +5.584760000E2,5.247262167E1 +5.587220000E2,5.338734169E1 +5.589670000E2,5.662276325E1 +5.592110000E2,5.533465633E1 +5.595080000E2,5.854271946E1 +5.597740000E2,5.660649413E1 +5.600260000E2,6.333844075E1 +5.602860000E2,6.255943536E1 +5.605830000E2,5.392304486E1 +5.608700000E2,5.760897506E1 +5.611660000E2,5.713086887E1 +5.614070000E2,5.720157535E1 +5.617060000E2,5.026592539E1 +5.619510000E2,5.140995344E1 +5.621950000E2,5.663266073E1 +5.624370000E2,5.202695689E1 +5.627360000E2,6.084568668E1 +5.630550000E2,6.179643015E1 +5.632960000E2,5.833759539E1 +5.635420000E2,5.518782498E1 +5.638400000E2,6.578433315E1 +5.640880000E2,5.706187099E1 +5.643850000E2,5.456571992E1 +5.646300000E2,5.536479424E1 +5.649270000E2,5.930541070E1 +5.651540000E2,6.023199994E1 +5.653960000E2,5.612469871E1 +5.656980000E2,5.462007842E1 +5.659410000E2,5.278259804E1 +5.662890000E2,6.064478329E1 +5.666290000E2,5.682964802E1 +5.669030000E2,5.787828261E1 +5.671980000E2,5.712595091E1 +5.674890000E2,5.729764361E1 +5.677450000E2,5.241850056E1 +5.679980000E2,5.377155525E1 +5.682380000E2,5.485418547E1 +5.684830000E2,5.503746434E1 +5.687810000E2,5.398954643E1 +5.690230000E2,5.401913169E1 +5.693270000E2,5.953896215E1 +5.695680000E2,5.626247467E1 +5.698640000E2,6.040491706E1 +5.701050000E2,5.781813181E1 +5.703620000E2,5.733744349E1 +5.706600000E2,5.669032177E1 +5.709140000E2,5.453731954E1 +5.711580000E2,6.235364316E1 +5.714280000E2,5.958044055E1 +5.716860000E2,5.875696014E1 +5.719750000E2,5.570465139E1 +5.722310000E2,4.865236791E1 +5.725580000E2,5.257975627E1 +5.727900000E2,4.975389893E1 +5.730890000E2,5.658508958E1 +5.733660000E2,5.542284648E1 +5.735960000E2,5.536199936E1 +5.738990000E2,5.813474916E1 +5.741540000E2,5.417788207E1 +5.744370000E2,5.704170918E1 +5.746710000E2,5.736828455E1 +5.749280000E2,5.450874678E1 +5.751790000E2,5.610950442E1 +5.754890000E2,5.919887582E1 +5.758690000E2,5.780639378E1 +5.761700000E2,5.709220641E1 +5.764190000E2,5.815359781E1 +5.767060000E2,5.734155824E1 +5.769500000E2,5.925323086E1 +5.772430000E2,6.084767221E1 +5.775370000E2,5.852024889E1 +5.777780000E2,5.822649765E1 +5.780770000E2,5.829089322E1 +5.783770000E2,5.915481192E1 +5.786460000E2,5.996430642E1 +5.789780000E2,6.016421415E1 +5.792520000E2,6.221052482E1 +5.795090000E2,5.533993101E1 +5.798230000E2,6.537257407E1 +5.801220000E2,6.068836920E1 +5.803770000E2,5.728273812E1 +5.806510000E2,5.648369901E1 +5.809070000E2,5.397363349E1 +5.811690000E2,5.755294689E1 +5.814510000E2,5.957149991E1 +5.816900000E2,5.963092636E1 +5.820650000E2,6.778811076E1 +5.823240000E2,6.247529404E1 +5.825840000E2,6.073516327E1 +5.828380000E2,6.039356998E1 +5.830970000E2,5.764504824E1 +5.833990000E2,6.041396176E1 +5.836470000E2,6.355942860E1 +5.838990000E2,5.785560268E1 +5.841390000E2,6.060017525E1 +5.844440000E2,6.032069521E1 +5.847010000E2,5.760371100E1 +5.849440000E2,5.491620812E1 +5.851990000E2,5.957978671E1 +5.855370000E2,6.103184032E1 +5.857970000E2,5.896875350E1 +5.861120000E2,6.008190546E1 +5.863990000E2,5.687378544E1 +5.866450000E2,5.874294643E1 +5.869410000E2,5.870806017E1 +5.871860000E2,5.809143232E1 +5.874740000E2,5.847828699E1 +5.877850000E2,5.846232778E1 +5.880500000E2,5.755876921E1 +5.883650000E2,5.609032758E1 +5.887050000E2,5.685283394E1 +5.889730000E2,5.945975832E1 +5.892710000E2,6.114741701E1 +5.895110000E2,6.316132147E1 +5.898100000E2,6.715155367E1 +5.900480000E2,6.367866992E1 +5.903470000E2,5.131949120E1 +5.905900000E2,5.646494575E1 +5.908880000E2,6.096218752E1 +5.911270000E2,6.089171796E1 +5.913720000E2,6.319522071E1 +5.916410000E2,6.016553529E1 +5.920560000E2,5.915189166E1 +5.923330000E2,5.776862186E1 +5.925640000E2,5.840366445E1 +5.927890000E2,5.978914182E1 +5.930440000E2,6.058699711E1 +5.932650000E2,6.012895387E1 +5.935140000E2,6.295025578E1 +5.937520000E2,6.280196012E1 +5.940110000E2,6.194014009E1 +5.943340000E2,6.483906300E1 +5.945870000E2,5.918257578E1 +5.948380000E2,5.620333930E1 +5.951900000E2,6.323403421E1 +5.954240000E2,6.183177681E1 +5.956620000E2,6.120300936E1 +5.959650000E2,5.836925111E1 +5.961890000E2,6.106023171E1 +5.964920000E2,6.153658324E1 +5.967310000E2,6.490772593E1 +5.969960000E2,6.274228676E1 +5.972520000E2,6.139008510E1 +5.975050000E2,6.281232833E1 +5.978180000E2,6.254982632E1 +5.980890000E2,6.205794184E1 +5.983900000E2,6.438771503E1 +5.986230000E2,6.052772463E1 +5.988520000E2,6.375966703E1 +5.991380000E2,5.869985301E1 +5.993860000E2,6.050357712E1 +5.996630000E2,5.547835745E1 +5.999280000E2,5.400421666E1 +6.001960000E2,5.668252186E1 +6.004880000E2,6.001970320E1 +6.007680000E2,6.056987745E1 +6.010550000E2,6.461211967E1 +6.014090000E2,6.399838195E1 +6.016840000E2,5.485596323E1 +6.019450000E2,5.731519087E1 +6.022080000E2,6.691878914E1 +6.024720000E2,6.479201876E1 +6.027260000E2,6.412847214E1 +6.029760000E2,6.025795068E1 +6.032190000E2,6.098133491E1 +6.035120000E2,5.689387521E1 +6.038040000E2,5.639928101E1 +6.041550000E2,5.328068252E1 +6.044370000E2,5.639829798E1 +6.046770000E2,5.892330560E1 +6.049510000E2,5.315638413E1 +6.051900000E2,5.740260439E1 +6.054620000E2,5.339391440E1 +6.057500000E2,5.310371918E1 +6.060710000E2,5.460903952E1 +6.063050000E2,5.407304270E1 +6.065540000E2,5.870790541E1 +6.068060000E2,5.576782972E1 +6.070790000E2,5.976954147E1 +6.074640000E2,6.181180531E1 +6.077240000E2,6.194364733E1 +6.080150000E2,6.794225297E1 +6.082590000E2,6.236601361E1 +6.085470000E2,6.002700779E1 +6.088450000E2,5.971993236E1 +6.090930000E2,5.954735434E1 +6.093460000E2,5.907202371E1 +6.095920000E2,5.993658420E1 +6.098910000E2,5.530332259E1 +6.101850000E2,5.531802018E1 +6.104220000E2,5.376885939E1 +6.107780000E2,5.735355871E1 +6.110210000E2,5.868610156E1 +6.112710000E2,5.312122754E1 +6.115670000E2,5.745102631E1 +6.118550000E2,5.535536940E1 +6.121540000E2,5.088728731E1 +6.123960000E2,5.266907791E1 +6.126860000E2,5.386493253E1 +6.130010000E2,5.670623073E1 +6.132810000E2,5.563278655E1 +6.135150000E2,5.267172926E1 +6.138540000E2,5.386148816E1 +6.141880000E2,5.716468210E1 +6.144880000E2,5.526918781E1 +6.147190000E2,5.659553915E1 +6.149610000E2,5.648341007E1 +6.152730000E2,5.711745846E1 +6.155520000E2,5.918800114E1 +6.158010000E2,5.642548609E1 +6.161000000E2,5.635896926E1 +6.163480000E2,5.899225051E1 +6.166180000E2,5.374343244E1 +6.168690000E2,4.891042404E1 +6.172050000E2,5.065835680E1 +6.174560000E2,5.685264653E1 +6.177340000E2,5.429270039E1 +6.179930000E2,5.499548313E1 +6.182940000E2,5.407177565E1 +6.185300000E2,5.356533799E1 +6.188300000E2,5.378190643E1 +6.191140000E2,5.189020817E1 +6.193870000E2,5.046647494E1 +6.196450000E2,5.501107364E1 +6.198910000E2,5.798814538E1 +6.201660000E2,5.360844474E1 +6.205080000E2,5.353935610E1 +6.208080000E2,5.620189936E1 +6.210820000E2,6.216008765E1 +6.213360000E2,5.767015155E1 +6.216520000E2,6.210101060E1 +6.219320000E2,5.928042926E1 +6.221800000E2,6.394496555E1 +6.224980000E2,5.872213561E1 +6.227430000E2,5.927091626E1 +6.230010000E2,5.235592166E1 +6.232430000E2,6.313120608E1 +6.235470000E2,6.005436888E1 +6.238480000E2,5.999836557E1 +6.240930000E2,5.879748041E1 +6.243920000E2,5.978277378E1 +6.246440000E2,6.050724590E1 +6.249480000E2,6.282777276E1 +6.252520000E2,6.080897043E1 +6.255640000E2,5.889462949E1 +6.258270000E2,5.550476615E1 +6.260730000E2,5.586785505E1 +6.263620000E2,6.576560120E1 +6.266590000E2,6.102361259E1 +6.270050000E2,6.110507706E1 +6.272870000E2,5.753592100E1 +6.275410000E2,6.297666729E1 +6.278490000E2,6.037594793E1 +6.281160000E2,5.849898506E1 +6.284180000E2,6.165631601E1 +6.287090000E2,6.096774109E1 +6.289510000E2,6.176590968E1 +6.292460000E2,5.947061017E1 +6.294820000E2,6.109202024E1 +6.297790000E2,5.322559935E1 +6.301160000E2,4.971181861E1 +6.303880000E2,5.533921521E1 +6.307250000E2,5.478410742E1 +6.310240000E2,5.647795083E1 +6.313200000E2,5.797504265E1 +6.315690000E2,5.403019222E1 +6.318640000E2,5.301910781E1 +6.321010000E2,5.096544207E1 +6.324030000E2,5.324435941E1 +6.326360000E2,5.447050361E1 +6.328960000E2,5.932781903E1 +6.331500000E2,5.967228428E1 +6.334640000E2,6.319489971E1 +6.337810000E2,5.820271574E1 +6.340710000E2,5.910289699E1 +6.343170000E2,5.681937370E1 +6.346260000E2,5.582227275E1 +6.349350000E2,5.745831651E1 +6.352100000E2,5.504019385E1 +6.354620000E2,5.072303887E1 +6.357190000E2,5.366082959E1 +6.359690000E2,5.380227314E1 +6.362560000E2,4.818205454E1 +6.365090000E2,5.989908626E1 +6.368780000E2,5.659012846E1 +6.371610000E2,5.593157997E1 +6.374460000E2,5.135237935E1 +6.377000000E2,5.687788515E1 +6.379550000E2,5.943975502E1 +6.382630000E2,6.290957992E1 +6.385230000E2,5.827099811E1 +6.387780000E2,5.686391746E1 +6.390620000E2,5.771790911E1 +6.393200000E2,5.390066131E1 +6.395830000E2,5.358231960E1 +6.398480000E2,5.564565007E1 +6.401490000E2,5.205482155E1 +6.404200000E2,5.852280051E1 +6.407340000E2,4.836326193E1 +6.409980000E2,5.905115701E1 +6.412560000E2,5.622349390E1 +6.415040000E2,5.891737338E1 +6.417460000E2,5.749377856E1 +6.420310000E2,5.414095183E1 +6.422680000E2,5.482109112E1 +6.425170000E2,5.202942051E1 +6.428000000E2,4.903409276E1 +6.431250000E2,5.495098254E1 +6.434650000E2,5.777911761E1 +6.437680000E2,5.329076638E1 +6.440080000E2,5.886592322E1 +6.443070000E2,5.661637111E1 +6.445560000E2,5.459133399E1 +6.448230000E2,4.858613706E1 +6.450990000E2,5.642020356E1 +6.453590000E2,5.634614530E1 +6.456240000E2,5.769024626E1 +6.458900000E2,6.037646239E1 +6.461470000E2,5.712013563E1 +6.464260000E2,5.393237723E1 +6.467570000E2,5.443825449E1 +6.469850000E2,5.464133184E1 +6.472460000E2,5.185343249E1 +6.475170000E2,5.670688718E1 +6.477900000E2,5.808659132E1 +6.480150000E2,5.879711687E1 +6.483250000E2,5.860991669E1 +6.485730000E2,5.600484597E1 +6.488230000E2,5.291438286E1 +6.491020000E2,5.869236753E1 +6.493260000E2,5.826316690E1 +6.496250000E2,5.619306699E1 +6.499850000E2,6.085970714E1 +6.502400000E2,6.051231588E1 +6.505400000E2,6.096601072E1 +6.507990000E2,6.197068990E1 +6.511180000E2,6.520817743E1 +6.513810000E2,6.377577246E1 +6.516860000E2,6.105485617E1 +6.519940000E2,5.890751001E1 +6.522910000E2,5.911253604E1 +6.525370000E2,6.291937986E1 +6.528540000E2,6.252638881E1 +6.532210000E2,6.337356348E1 +6.535270000E2,5.894334263E1 +6.537830000E2,5.754939005E1 +6.540930000E2,5.500698560E1 +6.543880000E2,5.014350898E1 +6.546880000E2,5.646260920E1 +6.549870000E2,5.951282585E1 +6.552920000E2,6.099782791E1 +6.555480000E2,6.065538365E1 +6.558100000E2,6.827371953E1 +6.560790000E2,6.035931154E1 +6.563820000E2,6.267306134E1 +6.566350000E2,5.826452213E1 +6.568970000E2,6.092938143E1 +6.572010000E2,6.534130041E1 +6.575130000E2,6.111837506E1 +6.577770000E2,5.826481723E1 +6.580330000E2,5.918147323E1 +6.582980000E2,6.100230752E1 +6.585510000E2,6.302217459E1 +6.588060000E2,5.754956715E1 +6.591080000E2,6.111201710E1 +6.593520000E2,6.017410469E1 +6.597040000E2,6.031944923E1 +6.599450000E2,5.943575512E1 +6.602120000E2,5.868776340E1 +6.605570000E2,5.940543513E1 +6.608500000E2,5.886327816E1 +6.610920000E2,5.770522648E1 +6.613840000E2,5.442777508E1 +6.616200000E2,5.394232060E1 +6.619220000E2,5.856638842E1 +6.622160000E2,5.742664400E1 +6.624600000E2,5.472498345E1 +6.627560000E2,5.672985390E1 +6.629770000E2,5.834702318E1 +6.632250000E2,5.907602823E1 +6.634810000E2,5.873031221E1 +6.637670000E2,5.757130737E1 +6.640040000E2,5.572185824E1 +6.643070000E2,5.959142979E1 +6.645480000E2,5.851623707E1 +6.648520000E2,5.856887935E1 +6.650940000E2,6.397218192E1 +6.653890000E2,5.963692586E1 +6.656210000E2,5.934207027E1 +6.659580000E2,5.667856430E1 +6.662640000E2,5.811017468E1 +6.665550000E2,5.505265787E1 +6.667990000E2,5.558350894E1 +6.671320000E2,6.063017800E1 +6.674000000E2,5.568411381E1 +6.676510000E2,5.981422062E1 +6.679580000E2,5.723024768E1 +6.682820000E2,5.036028104E1 +6.685240000E2,5.199205823E1 +6.687970000E2,5.367328475E1 +6.691280000E2,5.936914884E1 +6.693940000E2,5.657797691E1 +6.696490000E2,6.065879377E1 +6.699270000E2,5.657054255E1 +6.702000000E2,5.655716576E1 +6.704770000E2,5.823562265E1 +6.707350000E2,6.065030224E1 +6.710140000E2,6.110776530E1 +6.712700000E2,5.714357796E1 +6.715170000E2,5.604236164E1 +6.717930000E2,6.041748871E1 +6.721240000E2,6.019765334E1 +6.724270000E2,5.928602786E1 +6.727750000E2,5.973060669E1 +6.730710000E2,6.059869751E1 +6.733250000E2,6.116850166E1 +6.736400000E2,6.145214709E1 +6.738890000E2,6.020118097E1 +6.741670000E2,6.048579637E1 +6.744720000E2,6.225337088E1 +6.747550000E2,5.853636068E1 +6.750030000E2,5.999204871E1 +6.752840000E2,5.433989895E1 +6.755100000E2,5.847308735E1 +6.758420000E2,5.913726954E1 +6.760830000E2,6.049449503E1 +6.763830000E2,5.545572399E1 +6.766370000E2,6.246077536E1 +6.768920000E2,6.029598130E1 +6.771340000E2,6.005864514E1 +6.774230000E2,6.582269585E1 +6.776700000E2,6.255104294E1 +6.779140000E2,6.623711836E1 +6.781740000E2,6.684819787E1 +6.784850000E2,6.877250850E1 +6.787420000E2,6.157084767E1 +6.789860000E2,6.054068573E1 +6.793290000E2,6.069583213E1 +6.795810000E2,6.124898856E1 +6.798240000E2,6.136691849E1 +6.800900000E2,6.035594762E1 +6.803920000E2,5.654106541E1 +6.806920000E2,5.587565134E1 +6.809940000E2,5.642134155E1 +6.813020000E2,5.749983358E1 +6.815830000E2,5.576151961E1 +6.818120000E2,5.714589311E1 +6.820580000E2,5.969510914E1 +6.823020000E2,5.824123453E1 +6.825680000E2,5.779273115E1 +6.828630000E2,5.699644891E1 +6.831010000E2,5.900876644E1 +6.833500000E2,6.335540424E1 +6.835940000E2,6.280432027E1 +6.838340000E2,6.194675910E1 +6.841290000E2,5.801082069E1 +6.843650000E2,5.652506879E1 +6.846570000E2,5.895404856E1 +6.848910000E2,5.873705448E1 +6.851950000E2,5.589704153E1 +6.855380000E2,5.379672362E1 +6.857910000E2,6.287056471E1 +6.860900000E2,6.081817617E1 +6.863340000E2,6.807593043E1 +6.866320000E2,5.604389930E1 +6.868800000E2,6.712075434E1 +6.871750000E2,6.290238552E1 +6.874740000E2,6.473105179E1 +6.877330000E2,5.873835234E1 +6.880180000E2,5.800563858E1 +6.882620000E2,5.540095032E1 +6.885810000E2,6.197881428E1 +6.888280000E2,5.541258482E1 +6.890890000E2,5.558277465E1 +6.894010000E2,4.965923685E1 +6.897080000E2,4.860020107E1 +6.899730000E2,5.608167548E1 +6.902300000E2,5.381305593E1 +6.904990000E2,6.079286270E1 +6.908000000E2,6.446965644E1 +6.910380000E2,6.556266140E1 +6.913400000E2,5.418444209E1 +6.916350000E2,5.205102491E1 +6.919820000E2,5.812981404E1 +6.922410000E2,6.500705260E1 +6.925070000E2,6.149947285E1 +6.927750000E2,5.695315316E1 +6.930870000E2,5.775854948E1 +6.933870000E2,6.523399833E1 +6.936300000E2,6.692630865E1 +6.939270000E2,5.793447825E1 +6.942230000E2,5.746396110E1 +6.944770000E2,6.017975210E1 +6.947150000E2,5.956759439E1 +6.950320000E2,6.391288151E1 +6.953110000E2,6.484415086E1 +6.955650000E2,6.664209540E1 +6.958410000E2,6.746668632E1 +6.961050000E2,5.775664920E1 +6.964050000E2,6.383035698E1 +6.967020000E2,5.816763892E1 +6.969600000E2,6.921190909E1 +6.972400000E2,6.165047809E1 +6.975080000E2,5.666810057E1 +6.977540000E2,6.417546300E1 +6.980020000E2,5.788971486E1 +6.982730000E2,5.486922606E1 +6.985850000E2,5.576434723E1 +6.988820000E2,5.548978795E1 +6.991460000E2,5.886820316E1 +6.993970000E2,6.226406326E1 +6.996480000E2,5.601534080E1 +6.999400000E2,5.901385758E1 +7.002040000E2,5.720709772E1 +7.005120000E2,6.318399213E1 +7.007580000E2,6.338981741E1 +7.010170000E2,6.747312486E1 +7.012670000E2,5.788999692E1 +7.015450000E2,4.434465006E1 +7.018710000E2,6.439013955E1 +7.021480000E2,5.375342664E1 +7.023700000E2,6.398282027E1 +7.026160000E2,5.857909138E1 +7.029130000E2,5.670439641E1 +7.031590000E2,5.749786365E1 +7.034320000E2,5.181710985E1 +7.036770000E2,5.871535868E1 +7.039520000E2,5.470297527E1 +7.042240000E2,5.771822323E1 +7.044750000E2,5.236261523E1 +7.047130000E2,5.595332709E1 +7.050480000E2,5.576748295E1 +7.053040000E2,5.334869600E1 +7.055590000E2,5.337806625E1 +7.058180000E2,5.499892680E1 +7.060900000E2,5.490963435E1 +7.063980000E2,5.551078540E1 +7.066680000E2,5.358868238E1 +7.069300000E2,5.203182642E1 +7.071760000E2,5.771053387E1 +7.074630000E2,5.175835182E1 +7.077440000E2,5.402526598E1 +7.080400000E2,5.754717994E1 +7.083470000E2,6.103880587E1 +7.086400000E2,6.284824916E1 +7.088840000E2,6.674666322E1 +7.092010000E2,6.194114278E1 +7.094980000E2,5.796289911E1 +7.097580000E2,5.475547679E1 +7.100170000E2,5.804024708E1 +7.102650000E2,5.606423134E1 +7.105550000E2,5.319247933E1 +7.107930000E2,5.625991375E1 +7.110940000E2,5.589539698E1 +7.114730000E2,6.073460415E1 +7.117930000E2,6.208342045E1 +7.120530000E2,6.335117127E1 +7.123290000E2,5.821275565E1 +7.126280000E2,5.793160357E1 +7.128780000E2,5.509944006E1 +7.131790000E2,5.578357696E1 +7.134760000E2,5.632534225E1 +7.137350000E2,5.466315647E1 +7.140450000E2,5.914530785E1 +7.143020000E2,6.280432125E1 +7.146020000E2,6.333348539E1 +7.149790000E2,5.698482465E1 +7.152920000E2,5.474810308E1 +7.155370000E2,5.417920207E1 +7.157880000E2,6.392184792E1 +7.160720000E2,6.565549591E1 +7.163130000E2,6.082705714E1 +7.166120000E2,5.816285927E1 +7.168430000E2,5.809201859E1 +7.170930000E2,6.016105207E1 +7.173350000E2,5.162287691E1 +7.176230000E2,5.754317879E1 +7.179310000E2,6.166304542E1 +7.181770000E2,6.177004553E1 +7.184320000E2,6.274574776E1 +7.186900000E2,6.104994734E1 +7.189920000E2,5.735301480E1 +7.192340000E2,5.830205645E1 +7.194890000E2,6.212782217E1 +7.197420000E2,5.467685243E1 +7.200420000E2,5.313970583E1 +7.202920000E2,5.278680647E1 +7.205360000E2,5.474141102E1 +7.209140000E2,6.241771654E1 +7.212600000E2,6.394594172E1 +7.215560000E2,6.348358734E1 +7.217980000E2,6.112734048E1 +7.220450000E2,6.226451183E1 +7.222930000E2,6.534082516E1 +7.225960000E2,6.114019283E1 +7.228390000E2,6.421228964E1 +7.231230000E2,6.814847387E1 +7.233690000E2,6.275446304E1 +7.236190000E2,6.679153921E1 +7.239280000E2,6.537583699E1 +7.241850000E2,6.212976374E1 +7.245300000E2,6.553556935E1 +7.248220000E2,5.834030427E1 +7.250930000E2,5.992153646E1 +7.253380000E2,5.595099295E1 +7.256370000E2,5.720822528E1 +7.258800000E2,5.423516872E1 +7.261770000E2,5.906139652E1 +7.264140000E2,6.204477132E1 +7.267140000E2,6.368823365E1 +7.269550000E2,6.513672214E1 +7.272500000E2,6.364997971E1 +7.275370000E2,6.269941998E1 +7.278570000E2,5.948773609E1 +7.281020000E2,5.789544973E1 +7.283740000E2,6.305528689E1 +7.286400000E2,6.245554089E1 +7.289690000E2,6.033221518E1 +7.292310000E2,5.940071821E1 +7.294970000E2,6.176178101E1 +7.298020000E2,5.355172623E1 +7.300580000E2,5.535292187E1 +7.303150000E2,5.274398781E1 +7.305750000E2,5.399957194E1 +7.308780000E2,5.819691646E1 +7.312070000E2,5.434897588E1 +7.315090000E2,6.041787911E1 +7.317850000E2,5.617860881E1 +7.320560000E2,5.558770875E1 +7.323290000E2,5.151264449E1 +7.325860000E2,5.612143969E1 +7.328800000E2,5.405001557E1 +7.331120000E2,5.455354216E1 +7.334090000E2,5.716252136E1 +7.337070000E2,6.416157102E1 +7.339910000E2,6.098010142E1 +7.343020000E2,6.194029449E1 +7.346500000E2,6.091313037E1 +7.349540000E2,5.846954669E1 +7.352410000E2,5.743489407E1 +7.355320000E2,5.872669957E1 +7.357800000E2,5.859080967E1 +7.360560000E2,6.053269456E1 +7.363220000E2,6.117884455E1 +7.366590000E2,5.809887850E1 +7.369420000E2,5.453224539E1 +7.372510000E2,5.639337460E1 +7.375040000E2,5.373613181E1 +7.378630000E2,5.066236714E1 +7.381160000E2,4.653740377E1 +7.383650000E2,6.375011526E1 +7.386730000E2,6.282181577E1 +7.389830000E2,6.727660972E1 +7.392340000E2,6.413328322E1 +7.394790000E2,6.184881400E1 +7.397290000E2,6.430634497E1 +7.400250000E2,6.276256291E1 +7.402610000E2,6.297441350E1 +7.405590000E2,5.306586823E1 +7.408610000E2,5.403016569E1 +7.412260000E2,5.749263443E1 +7.415060000E2,5.657932114E1 +7.417820000E2,5.532222303E1 +7.420430000E2,5.911133378E1 +7.423450000E2,5.822379827E1 +7.426470000E2,6.311870884E1 +7.428860000E2,5.964121243E1 +7.431940000E2,5.708688763E1 +7.434960000E2,5.782189241E1 +7.437480000E2,5.745118469E1 +7.440380000E2,5.258772989E1 +7.442830000E2,5.325984780E1 +7.445410000E2,5.216709684E1 +7.447900000E2,5.485283680E1 +7.450520000E2,6.638751453E1 +7.453640000E2,6.256149725E1 +7.456370000E2,6.851667797E1 +7.459020000E2,6.356784575E1 +7.462040000E2,6.586178842E1 +7.464510000E2,6.099626883E1 +7.467420000E2,6.874341983E1 +7.470300000E2,5.690479739E1 +7.472670000E2,5.749513215E1 +7.475860000E2,5.743840209E1 +7.478480000E2,6.695338823E1 +7.481550000E2,6.575566103E1 +7.484170000E2,6.244751264E1 +7.486690000E2,6.206430480E1 +7.489520000E2,5.755143157E1 +7.492450000E2,6.343498072E1 +7.494820000E2,6.599354682E1 +7.497800000E2,5.994269627E1 +7.500210000E2,6.480563885E1 +7.503160000E2,5.962320355E1 +7.505550000E2,5.907805627E1 +7.508860000E2,5.452673237E1 +7.511450000E2,5.413358853E1 +7.514110000E2,5.786691992E1 +7.516870000E2,6.185088179E1 +7.519570000E2,5.432685780E1 +7.522050000E2,5.297819944E1 +7.524920000E2,5.290855554E1 +7.527910000E2,5.828859659E1 +7.530300000E2,5.880189294E1 +7.533360000E2,5.500578631E1 +7.535910000E2,5.476677878E1 +7.538330000E2,5.414240587E1 +7.541650000E2,5.332866170E1 +7.544620000E2,5.193802785E1 +7.547080000E2,5.242932681E1 +7.549590000E2,6.024921863E1 +7.552020000E2,5.537701523E1 +7.554960000E2,5.489617845E1 +7.557330000E2,5.384280286E1 +7.560410000E2,5.406125999E1 +7.562870000E2,5.246560959E1 +7.565320000E2,5.374729291E1 +7.567680000E2,5.542801483E1 +7.570630000E2,5.525770987E1 +7.573930000E2,5.847670432E1 +7.576660000E2,5.822188632E1 +7.579180000E2,5.822901451E1 +7.582040000E2,5.458975346E1 +7.584820000E2,5.438683247E1 +7.587800000E2,5.260449368E1 +7.590260000E2,5.371245859E1 +7.592870000E2,4.983203663E1 +7.595420000E2,5.018089077E1 +7.598380000E2,5.950969681E1 +7.601480000E2,5.769305363E1 +7.604800000E2,5.747567937E1 +7.607190000E2,5.446335810E1 +7.610040000E2,5.463229896E1 +7.612970000E2,5.644916160E1 +7.615560000E2,5.809520116E1 +7.618460000E2,5.406577519E1 +7.621050000E2,5.362277750E1 +7.623930000E2,5.868559294E1 +7.626230000E2,5.548744129E1 +7.628890000E2,5.613986675E1 +7.631890000E2,5.592058678E1 +7.634870000E2,5.947938191E1 +7.638120000E2,5.945990241E1 +7.640830000E2,5.354091788E1 +7.643270000E2,5.910847411E1 +7.645670000E2,6.112853730E1 +7.648120000E2,5.617469613E1 +7.650520000E2,5.678172470E1 +7.653190000E2,5.293731054E1 +7.655730000E2,5.571573154E1 +7.658430000E2,5.239475172E1 +7.660900000E2,5.710555790E1 +7.663840000E2,5.593714408E1 +7.666500000E2,5.506488062E1 +7.669100000E2,5.276148627E1 +7.671530000E2,5.087813070E1 +7.674500000E2,4.966858228E1 +7.677070000E2,4.690170064E1 +7.679870000E2,5.097718665E1 +7.682460000E2,5.173969669E1 +7.685220000E2,5.562988056E1 +7.687630000E2,5.194720020E1 +7.690630000E2,5.590118249E1 +7.693610000E2,5.613585205E1 +7.696030000E2,5.417299550E1 +7.698530000E2,5.925774948E1 +7.702010000E2,5.729895975E1 +7.704610000E2,5.765570707E1 +7.707610000E2,6.211008380E1 +7.710570000E2,5.846530012E1 +7.712970000E2,5.766544416E1 +7.715460000E2,5.716238768E1 +7.718080000E2,5.700535494E1 +7.720510000E2,5.592606747E1 +7.723260000E2,5.771214429E1 +7.725940000E2,5.753442175E1 +7.728830000E2,5.541298336E1 +7.731860000E2,5.137853822E1 +7.735420000E2,5.462649470E1 +7.738320000E2,5.454281912E1 +7.740820000E2,6.803752283E1 +7.743260000E2,6.852980541E1 +7.745820000E2,7.007631543E1 +7.748270000E2,7.009876218E1 +7.751160000E2,6.950363051E1 +7.753520000E2,6.338954984E1 +7.755910000E2,5.500200077E1 +7.758880000E2,5.358702362E1 +7.761340000E2,5.718303470E1 +7.763730000E2,5.887519420E1 +7.767050000E2,5.795457078E1 +7.769970000E2,5.796499201E1 +7.773000000E2,5.644912180E1 +7.775570000E2,5.804780214E1 +7.778740000E2,5.958528627E1 +7.781300000E2,5.635913866E1 +7.784430000E2,5.593106857E1 +7.787280000E2,6.063168213E1 +7.789960000E2,5.917208792E1 +7.792560000E2,5.719923422E1 +7.795050000E2,6.400429125E1 +7.797680000E2,5.733192807E1 +7.800440000E2,6.018331087E1 +7.803000000E2,6.350407169E1 +7.805530000E2,6.357762743E1 +7.808590000E2,6.772563953E1 +7.811430000E2,6.431848914E1 +7.814050000E2,5.710721917E1 +7.816950000E2,5.646111127E1 +7.819500000E2,5.564600214E1 +7.822050000E2,6.362802489E1 +7.824550000E2,6.278310471E1 +7.827010000E2,5.851995741E1 +7.829620000E2,5.759567059E1 +7.832630000E2,5.449669640E1 +7.835070000E2,6.040303881E1 +7.837500000E2,5.743841461E1 +7.839990000E2,6.096558185E1 +7.842840000E2,7.161293257E1 +7.845270000E2,7.417435903E1 +7.848410000E2,6.386070968E1 +7.851390000E2,6.234904760E1 +7.854350000E2,6.321731436E1 +7.856820000E2,6.294103551E1 +7.859780000E2,6.210337552E1 +7.862150000E2,6.765383904E1 +7.865650000E2,6.346682761E1 +7.868610000E2,6.221020232E1 +7.871280000E2,6.119530731E1 +7.873850000E2,5.314248269E1 +7.876880000E2,5.288680780E1 +7.879230000E2,5.064349321E1 +7.882230000E2,5.786336298E1 +7.884630000E2,5.341864841E1 +7.887250000E2,5.286568073E1 +7.890140000E2,5.272997567E1 +7.893180000E2,5.904110581E1 +7.896690000E2,5.748622391E1 +7.899200000E2,5.773986136E1 +7.902160000E2,5.480967078E1 +7.904710000E2,5.627241382E1 +7.907280000E2,5.456362797E1 +7.909900000E2,5.766408512E1 +7.912380000E2,5.413586400E1 +7.914940000E2,5.234403284E1 +7.917720000E2,5.190170354E1 +7.920440000E2,5.227759392E1 +7.923170000E2,4.410400383E1 +7.926220000E2,3.508270700E1 +7.929370000E2,3.887828085E1 +7.932030000E2,4.522069604E1 +7.934660000E2,4.928233980E1 +7.937420000E2,4.706401379E1 +7.940710000E2,4.988989997E1 +7.943700000E2,5.767827889E1 +7.946060000E2,5.506606719E1 +7.949050000E2,6.107887773E1 +7.952060000E2,5.849609892E1 +7.955030000E2,5.343173328E1 +7.957490000E2,5.007726003E1 +7.960580000E2,4.763873915E1 +7.963010000E2,5.045894898E1 +7.966040000E2,6.859700710E1 +7.968900000E2,6.734256534E1 +7.971550000E2,6.661489392E1 +7.974110000E2,6.556398865E1 +7.976580000E2,5.519705677E1 +7.979230000E2,5.503316479E1 +7.982060000E2,5.955770829E1 +7.984280000E2,5.777834711E1 +7.987260000E2,6.050467535E1 +7.989700000E2,5.583639573E1 +7.993330000E2,5.988908902E1 +7.995750000E2,5.875791040E1 +7.998670000E2,6.166637478E1 +8.001160000E2,5.690435901E1 +8.004160000E2,5.599911293E1 +8.006610000E2,5.889628547E1 +8.009180000E2,6.227540789E1 +8.011740000E2,6.572663811E1 +8.014300000E2,6.013467784E1 +8.016770000E2,6.250368579E1 +8.019910000E2,6.532292099E1 +8.023560000E2,5.377170031E1 +8.026370000E2,5.535595108E1 +8.029110000E2,5.147526495E1 +8.031720000E2,4.993046061E1 +8.034760000E2,6.394035794E1 +8.037260000E2,5.983119170E1 +8.040270000E2,5.967243802E1 +8.042930000E2,6.559340840E1 +8.046100000E2,5.262215496E1 +8.049160000E2,5.397812040E1 +8.051780000E2,5.680330381E1 +8.054740000E2,5.857171626E1 +8.058060000E2,5.577198454E1 +8.060880000E2,5.916891157E1 +8.063460000E2,6.120078548E1 +8.066060000E2,6.223167379E1 +8.069230000E2,6.161077093E1 +8.071720000E2,5.812180846E1 +8.074300000E2,5.665535607E1 +8.077230000E2,5.401482687E1 +8.079600000E2,5.631804256E1 +8.082610000E2,5.267806276E1 +8.085540000E2,5.766120113E1 +8.088100000E2,5.717509884E1 +8.091690000E2,5.698714543E1 +8.094130000E2,5.807918354E1 +8.096940000E2,5.364566959E1 +8.099320000E2,5.678502402E1 +8.102110000E2,5.494444844E1 +8.104710000E2,6.216218230E1 +8.107550000E2,5.504588420E1 +8.110030000E2,5.220186059E1 +8.112810000E2,5.338487037E1 +8.115430000E2,5.422122114E1 +8.118180000E2,6.217546099E1 +8.121430000E2,5.739027439E1 +8.124800000E2,5.218554734E1 +8.128080000E2,6.183667492E1 +8.130850000E2,6.028246668E1 +8.133620000E2,6.620979851E1 +8.135950000E2,5.810667246E1 +8.138630000E2,6.096670869E1 +8.141300000E2,5.149777407E1 +8.143960000E2,4.993954713E1 +8.146400000E2,5.196561010E1 +8.149350000E2,5.727966309E1 +8.151710000E2,5.489316784E1 +8.154100000E2,5.619291420E1 +8.157500000E2,5.425831711E1 +8.160430000E2,5.677079709E1 +8.163250000E2,5.289383275E1 +8.165600000E2,5.573749616E1 +8.168090000E2,5.211960412E1 +8.170840000E2,5.029895102E1 +8.173170000E2,5.085418245E1 +8.175630000E2,5.101392152E1 +8.178870000E2,5.228690479E1 +8.182130000E2,5.919931006E1 +8.184680000E2,5.288617356E1 +8.188320000E2,5.626269479E1 +8.191030000E2,6.124827198E1 +8.193870000E2,5.889071517E1 +8.196160000E2,5.957980623E1 +8.199180000E2,5.440069788E1 +8.201590000E2,5.524226830E1 +8.204560000E2,5.147688867E1 +8.206870000E2,5.390780082E1 +8.209820000E2,6.509870984E1 +8.212270000E2,6.421388309E1 +8.215230000E2,5.843840462E1 +8.218170000E2,5.422512027E1 +8.221280000E2,5.468614274E1 +8.223780000E2,5.922850585E1 +8.226710000E2,6.486031186E1 +8.229330000E2,6.154967201E1 +8.232420000E2,5.893257410E1 +8.235100000E2,6.020329639E1 +8.238290000E2,5.483779552E1 +8.240760000E2,5.692914998E1 +8.243280000E2,6.347347085E1 +8.245930000E2,5.345306004E1 +8.248670000E2,6.141647052E1 +8.252000000E2,5.672783001E1 +8.254550000E2,5.605661334E1 +8.257610000E2,5.699330885E1 +8.260410000E2,5.489256860E1 +8.263010000E2,6.262090025E1 +8.265830000E2,5.457719262E1 +8.268180000E2,5.416382407E1 +8.271260000E2,4.993919751E1 +8.273700000E2,5.569569056E1 +8.276330000E2,5.514364162E1 +8.278890000E2,5.653204472E1 +8.281470000E2,5.784406489E1 +8.284370000E2,5.752811490E1 +8.286720000E2,5.727510089E1 +8.289650000E2,5.900575965E1 +8.292510000E2,5.679022390E1 +8.294860000E2,5.722234118E1 +8.297350000E2,5.952638514E1 +8.300320000E2,5.925181191E1 +8.302740000E2,5.930148258E1 +8.305160000E2,5.668145507E1 +8.307730000E2,5.590492759E1 +8.310130000E2,6.302930486E1 +8.312510000E2,5.733539345E1 +8.315800000E2,5.620349253E1 +8.318910000E2,5.495250031E1 +8.322000000E2,5.501979251E1 +8.324620000E2,5.208226415E1 +8.327390000E2,5.765748383E1 +8.329950000E2,5.489193423E1 +8.332490000E2,5.593428331E1 +8.335720000E2,5.714652117E1 +8.338250000E2,5.832769426E1 +8.341370000E2,5.884156077E1 +8.344030000E2,5.840498509E1 +8.347020000E2,5.864505811E1 +8.350330000E2,6.356982434E1 +8.353340000E2,6.286445683E1 +8.355720000E2,5.657384439E1 +8.358940000E2,5.660970318E1 +8.361720000E2,5.918731584E1 +8.364160000E2,5.825788220E1 +8.366580000E2,5.592754487E1 +8.369110000E2,5.553717092E1 +8.371910000E2,5.495027293E1 +8.374510000E2,5.546329287E1 +8.377420000E2,5.746402701E1 +8.379890000E2,5.891922359E1 +8.383130000E2,6.522858798E1 +8.385710000E2,6.384617776E1 +8.388430000E2,5.435088619E1 +8.390670000E2,5.460135210E1 +8.393610000E2,5.982769627E1 +8.396020000E2,5.936265195E1 +8.398550000E2,6.034701146E1 +8.401470000E2,6.875861473E1 +8.403840000E2,6.968788985E1 +8.406760000E2,6.653493651E1 +8.409120000E2,6.664139767E1 +8.412200000E2,6.195236791E1 +8.415280000E2,5.759269564E1 +8.418110000E2,5.704906263E1 +8.420770000E2,5.199124728E1 +8.423350000E2,5.625309672E1 +8.426060000E2,5.627754144E1 +8.428710000E2,6.285304788E1 +8.431220000E2,6.089762622E1 +8.434160000E2,5.828079525E1 +8.436650000E2,5.581703965E1 +8.439650000E2,5.326092983E1 +8.442070000E2,5.247397640E1 +8.444500000E2,5.104216729E1 +8.447560000E2,4.981466747E1 +8.450730000E2,5.794387296E1 +8.453210000E2,6.103400827E1 +8.455680000E2,6.053778141E1 +8.458610000E2,5.413066164E1 +8.461240000E2,5.591468697E1 +8.463740000E2,5.289659812E1 +8.466770000E2,6.014390988E1 +8.469740000E2,5.713983843E1 +8.472340000E2,5.457406708E1 +8.474800000E2,5.848999564E1 +8.478210000E2,5.310404619E1 +8.481040000E2,5.463633704E1 +8.483620000E2,5.329096892E1 +8.486670000E2,5.667645304E1 +8.489890000E2,5.540515985E1 +8.492420000E2,5.014593999E1 +8.495060000E2,5.019949668E1 +8.497660000E2,4.724526190E1 +8.500410000E2,4.632701850E1 +8.502660000E2,4.436725745E1 +8.505710000E2,5.273585220E1 +8.508470000E2,5.232501704E1 +8.511370000E2,5.177389205E1 +8.513940000E2,5.236772038E1 +8.516560000E2,4.869019062E1 +8.518980000E2,5.254056589E1 +8.521620000E2,5.441215371E1 +8.524060000E2,5.431954181E1 +8.526720000E2,4.873515026E1 +8.529820000E2,5.253291311E1 +8.532350000E2,5.201920339E1 +8.535330000E2,5.083296820E1 +8.537750000E2,5.373650683E1 +8.540560000E2,6.162621210E1 +8.543710000E2,6.137876928E1 +8.546190000E2,6.347980201E1 +8.548850000E2,6.480134627E1 +8.551390000E2,6.344943059E1 +8.553830000E2,6.653758852E1 +8.556910000E2,6.821811094E1 +8.559900000E2,6.564040109E1 +8.562480000E2,6.310710880E1 +8.565060000E2,5.625485760E1 +8.567860000E2,5.886920329E1 +8.570590000E2,5.638007706E1 +8.573180000E2,5.477312089E1 +8.576670000E2,5.402637072E1 +8.579310000E2,5.282806817E1 +8.582400000E2,5.743205922E1 +8.584770000E2,5.608834078E1 +8.587730000E2,5.917700537E1 +8.590950000E2,5.757076232E1 +8.593390000E2,5.680975976E1 +8.596110000E2,5.316092446E1 +8.598560000E2,5.634389465E1 +8.601130000E2,5.912558361E1 +8.603880000E2,5.827706684E1 +8.606370000E2,5.580056474E1 +8.609720000E2,5.622551838E1 +8.612190000E2,5.816090597E1 +8.614650000E2,5.710633258E1 +8.617260000E2,6.762679027E1 +8.619970000E2,6.050550643E1 +8.622480000E2,6.017289530E1 +8.624960000E2,5.884551198E1 +8.627510000E2,5.823958631E1 +8.630120000E2,5.747421536E1 +8.632920000E2,5.891926612E1 +8.635810000E2,5.962176090E1 +8.638680000E2,5.932606834E1 +8.642430000E2,6.035939553E1 +8.645920000E2,5.892740034E1 +8.649090000E2,6.158225090E1 +8.651650000E2,5.941856931E1 +8.654560000E2,5.517726055E1 +8.656900000E2,5.573554393E1 +8.659400000E2,6.300977067E1 +8.662170000E2,6.346838855E1 +8.664760000E2,5.840482341E1 +8.667600000E2,5.656477763E1 +8.669980000E2,5.809371706E1 +8.672500000E2,5.957523428E1 +8.675890000E2,5.868790884E1 +8.678670000E2,6.643274765E1 +8.681530000E2,6.202304252E1 +8.684260000E2,6.167390940E1 +8.686760000E2,6.561664622E1 +8.689220000E2,6.221849135E1 +8.691620000E2,5.873701255E1 +8.694080000E2,5.721335717E1 +8.696600000E2,5.775578048E1 +8.699210000E2,6.139190630E1 +8.702060000E2,5.695582014E1 +8.705330000E2,5.285782467E1 +8.708800000E2,5.254436807E1 +8.711320000E2,5.941119733E1 +8.714840000E2,5.561687107E1 +8.717890000E2,5.226341013E1 +8.720340000E2,5.351737673E1 +8.723120000E2,5.581753669E1 +8.725450000E2,5.544476975E1 +8.727930000E2,5.112331517E1 +8.731050000E2,5.669948434E1 +8.733660000E2,5.553741274E1 +8.736450000E2,5.287392842E1 +8.738710000E2,5.342755356E1 +8.742030000E2,5.525376809E1 +8.745760000E2,5.790146612E1 +8.748470000E2,5.775550126E1 +8.750900000E2,5.828043309E1 +8.753860000E2,5.689517506E1 +8.756490000E2,5.836000549E1 +8.759170000E2,5.887049385E1 +8.761640000E2,5.731343570E1 +8.764240000E2,5.947081752E1 +8.766660000E2,5.735732777E1 +8.769150000E2,5.791222148E1 +8.771870000E2,5.217820200E1 +8.775110000E2,5.373516267E1 +8.777550000E2,5.639663701E1 +8.779960000E2,5.308435393E1 +8.782370000E2,5.327040257E1 +8.785510000E2,5.539866825E1 +8.788050000E2,5.451580533E1 +8.791100000E2,5.664888244E1 +8.793670000E2,5.439058144E1 +8.796110000E2,6.546629591E1 +8.799090000E2,6.080313073E1 +8.801560000E2,6.023654065E1 +8.804070000E2,5.547022044E1 +8.807450000E2,5.933402552E1 +8.809880000E2,6.073235462E1 +8.812850000E2,5.811897337E1 +8.815210000E2,5.670873426E1 +8.818240000E2,6.239450766E1 +8.821160000E2,6.033779387E1 +8.823610000E2,5.921328684E1 +8.826600000E2,5.808215882E1 +8.828910000E2,5.927124720E1 +8.831280000E2,5.254346564E1 +8.834120000E2,5.755316817E1 +8.837180000E2,5.815703318E1 +8.840150000E2,5.925974643E1 +8.842610000E2,5.406291788E1 +8.845520000E2,5.892672719E1 +8.847970000E2,6.343231596E1 +8.850390000E2,6.045689612E1 +8.853340000E2,5.903303339E1 +8.855810000E2,5.897514906E1 +8.858230000E2,5.682843230E1 +8.860690000E2,4.647265993E1 +8.863400000E2,5.617216143E1 +8.865730000E2,5.412892937E1 +8.869100000E2,6.210166513E1 +8.872070000E2,6.369099543E1 +8.874540000E2,6.052073025E1 +8.877480000E2,6.125108403E1 +8.879990000E2,6.087163347E1 +8.882550000E2,6.365510666E1 +8.885320000E2,5.341778352E1 +8.887600000E2,5.238943476E1 +8.890050000E2,6.378561240E1 +8.892460000E2,6.182956815E1 +8.895070000E2,6.027537659E1 +8.897770000E2,5.747996426E1 +8.901220000E2,5.606477689E1 +8.903620000E2,5.816493441E1 +8.907030000E2,5.740436721E1 +8.909540000E2,5.812990427E1 +8.912060000E2,5.757163286E1 +8.914520000E2,5.669306215E1 +8.917150000E2,5.593698617E1 +8.919580000E2,5.867011196E1 +8.922060000E2,6.001129970E1 +8.924480000E2,6.247831114E1 +8.927080000E2,5.501506807E1 +8.929550000E2,5.918039480E1 +8.932790000E2,5.750337148E1 +8.935260000E2,5.382626014E1 +8.937850000E2,5.632583646E1 +8.940370000E2,5.552393419E1 +8.943380000E2,5.417609473E1 +8.946050000E2,5.314873345E1 +8.948570000E2,5.537690953E1 +8.951790000E2,6.168371256E1 +8.954540000E2,6.142331687E1 +8.957690000E2,5.914263764E1 +8.960690000E2,6.039127428E1 +8.963670000E2,5.303465172E1 +8.966720000E2,5.819495208E1 +8.969200000E2,5.956457754E1 +8.972240000E2,5.554166388E1 +8.974940000E2,5.700583380E1 +8.978160000E2,5.525596264E1 +8.981210000E2,5.878997726E1 +8.983720000E2,5.661289659E1 +8.986510000E2,6.039909322E1 +8.988730000E2,5.569487247E1 +8.991240000E2,5.857026750E1 +8.993800000E2,6.116905404E1 +8.996580000E2,6.331625006E1 +8.998890000E2,5.612470465E1 +9.001440000E2,5.098243988E1 +9.004020000E2,5.779474181E1 +9.006650000E2,5.597754805E1 +9.009440000E2,5.706395638E1 +9.012380000E2,5.989184595E1 +9.015000000E2,5.905145002E1 +9.017620000E2,5.913397617E1 +9.020230000E2,5.831976398E1 +9.022900000E2,5.400731512E1 +9.025900000E2,6.547285797E1 +9.029050000E2,6.534571775E1 +9.032100000E2,5.428834230E1 +9.034580000E2,4.919896084E1 +9.037180000E2,5.326934205E1 +9.039740000E2,5.135684539E1 +9.042700000E2,5.784030554E1 +9.045180000E2,5.789711892E1 +9.048150000E2,5.501985460E1 +9.050680000E2,5.394185103E1 +9.053920000E2,5.504541187E1 +9.056620000E2,5.574384904E1 +9.059260000E2,5.198297704E1 +9.062920000E2,5.507423148E1 +9.065460000E2,5.073979477E1 +9.068090000E2,5.409355601E1 +9.071500000E2,5.842003605E1 +9.074380000E2,6.323761852E1 +9.076890000E2,5.475142925E1 +9.079510000E2,5.285089191E1 +9.082580000E2,6.228883476E1 +9.085110000E2,6.229139223E1 +9.087590000E2,5.849936549E1 +9.090220000E2,6.382664868E1 +9.092560000E2,5.234586511E1 +9.095720000E2,5.506613760E1 +9.098700000E2,5.883918884E1 +9.101180000E2,5.722745073E1 +9.103980000E2,6.006905181E1 +9.106670000E2,6.333821195E1 +9.109390000E2,5.997503412E1 +9.111770000E2,5.691091005E1 +9.114250000E2,5.629684565E1 +9.117070000E2,5.944947286E1 +9.119370000E2,5.757115704E1 +9.122030000E2,5.617546709E1 +9.125090000E2,5.506166951E1 +9.128480000E2,5.345826069E1 +9.131070000E2,5.586702127E1 +9.133900000E2,6.075354367E1 +9.137040000E2,5.668960998E1 +9.139920000E2,5.584388878E1 +9.142800000E2,5.668519299E1 +9.145740000E2,5.400550993E1 +9.148220000E2,5.668991412E1 +9.150670000E2,5.455006531E1 +9.153720000E2,5.750041942E1 +9.156590000E2,5.756327349E1 +9.159630000E2,5.822694927E1 +9.162110000E2,5.764545771E1 +9.164660000E2,5.716015909E1 +9.167560000E2,5.136001811E1 +9.170200000E2,4.706951064E1 +9.172710000E2,4.999131008E1 +9.175180000E2,5.619976433E1 +9.178030000E2,5.463675948E1 +9.180580000E2,4.995546642E1 +9.183000000E2,5.328928391E1 +9.185570000E2,4.808104957E1 +9.188650000E2,5.411517612E1 +9.191080000E2,5.672946344E1 +9.194270000E2,5.737096863E1 +9.196850000E2,5.974051238E1 +9.199830000E2,5.656564726E1 +9.202340000E2,5.709524531E1 +9.204810000E2,5.408385116E1 +9.208240000E2,5.414410830E1 +9.210650000E2,5.638214177E1 +9.213330000E2,5.753313030E1 +9.216130000E2,5.354803656E1 +9.219120000E2,6.191736419E1 +9.221480000E2,5.734366551E1 +9.224580000E2,5.684475304E1 +9.228030000E2,6.045431811E1 +9.230950000E2,5.973057312E1 +9.233960000E2,5.537690593E1 +9.236620000E2,5.411771801E1 +9.239600000E2,5.513839001E1 +9.242140000E2,5.699753068E1 +9.244670000E2,6.643461088E1 +9.247300000E2,6.062391899E1 +9.250330000E2,5.798096332E1 +9.253240000E2,6.347140522E1 +9.255740000E2,6.166496817E1 +9.259250000E2,6.190058171E1 +9.261820000E2,6.329204590E1 +9.264380000E2,6.389135880E1 +9.267030000E2,5.917517639E1 +9.269480000E2,5.809772267E1 +9.272170000E2,5.733235238E1 +9.274780000E2,5.226841119E1 +9.277860000E2,5.876554483E1 +9.280720000E2,6.281089568E1 +9.283510000E2,5.368859448E1 +9.286400000E2,5.449014251E1 +9.289370000E2,5.589991313E1 +9.292390000E2,5.452044152E1 +9.294860000E2,5.574135623E1 +9.297800000E2,5.656551806E1 +9.300200000E2,5.368800996E1 +9.302990000E2,5.374372369E1 +9.305490000E2,5.520696346E1 +9.308500000E2,5.642038107E1 +9.311480000E2,5.958603376E1 +9.314510000E2,5.775531382E1 +9.316980000E2,5.561486787E1 +9.319610000E2,5.826734748E1 +9.322700000E2,5.604871965E1 +9.325550000E2,5.170668645E1 +9.328670000E2,5.089285684E1 +9.331190000E2,4.724853188E1 +9.333790000E2,4.756075237E1 +9.336260000E2,5.199039629E1 +9.338890000E2,4.980140945E1 +9.341620000E2,5.530081877E1 +9.344120000E2,5.549144740E1 +9.347250000E2,5.515929093E1 +9.349780000E2,5.399104933E1 +9.352760000E2,5.325801117E1 +9.356240000E2,5.040008457E1 +9.359420000E2,5.360316460E1 +9.361890000E2,5.191591881E1 +9.364390000E2,5.324554606E1 +9.366970000E2,5.654671572E1 +9.370100000E2,5.711795620E1 +9.372590000E2,5.478625541E1 +9.375950000E2,5.667621371E1 +9.378550000E2,5.463565976E1 +9.381050000E2,5.398825590E1 +9.383580000E2,5.436030102E1 +9.386390000E2,5.091983440E1 +9.389120000E2,5.286705124E1 +9.391550000E2,5.236775571E1 +9.394300000E2,5.738794921E1 +9.397170000E2,5.727939554E1 +9.399750000E2,6.319402051E1 +9.402560000E2,5.468250624E1 +9.405530000E2,5.641852830E1 +9.408670000E2,6.200700436E1 +9.411390000E2,6.163446308E1 +9.413860000E2,7.148312536E1 +9.416340000E2,6.050927243E1 +9.419040000E2,5.667078757E1 +9.421350000E2,5.749142651E1 +9.424700000E2,5.240604485E1 +9.427760000E2,5.466454134E1 +9.430280000E2,6.082141946E1 +9.433300000E2,6.003969647E1 +9.436110000E2,6.121195378E1 +9.438460000E2,5.625129518E1 +9.441420000E2,5.911131348E1 +9.443880000E2,5.468317436E1 +9.446840000E2,6.009033853E1 +9.449440000E2,5.906624737E1 +9.452490000E2,5.464875325E1 +9.455970000E2,5.384566268E1 +9.458510000E2,5.044039840E1 +9.461140000E2,5.035886237E1 +9.463820000E2,5.734112986E1 +9.466620000E2,5.229112628E1 +9.469690000E2,6.028523542E1 +9.472250000E2,5.837101422E1 +9.475000000E2,5.619491985E1 +9.477970000E2,5.364209552E1 +9.480560000E2,5.511055516E1 +9.483560000E2,5.308396885E1 +9.486650000E2,5.587440008E1 +9.490640000E2,5.273632850E1 +9.493730000E2,6.231816715E1 +9.496570000E2,6.253734875E1 +9.499030000E2,5.554720788E1 +9.501460000E2,5.631566079E1 +9.503970000E2,5.626896653E1 +9.506490000E2,5.691941114E1 +9.508990000E2,5.116659255E1 +9.511440000E2,4.922875084E1 +9.514130000E2,5.936693495E1 +9.517070000E2,5.638156112E1 +9.520200000E2,5.180629212E1 +9.523780000E2,4.998674108E1 +9.526570000E2,4.841587788E1 +9.529100000E2,5.028896526E1 +9.531650000E2,4.965921907E1 +9.534690000E2,4.493319669E1 +9.537260000E2,4.598612712E1 +9.539740000E2,5.276251951E1 +9.542810000E2,4.126037796E1 +9.545830000E2,4.737114191E1 +9.548330000E2,4.411553821E1 +9.550850000E2,4.440050708E1 +9.553840000E2,5.260541790E1 +9.556980000E2,5.273901651E1 +9.559710000E2,5.383409632E1 +9.562220000E2,5.239354977E1 +9.564980000E2,4.759742823E1 +9.568040000E2,5.239869448E1 +9.570530000E2,5.238241691E1 +9.573300000E2,5.227349879E1 +9.575630000E2,5.272394727E1 +9.578410000E2,5.414710772E1 +9.580970000E2,5.325895305E1 +9.583410000E2,5.577122645E1 +9.586370000E2,5.015645058E1 +9.590040000E2,5.173028231E1 +9.593040000E2,5.447959265E1 +9.595640000E2,5.484713415E1 +9.598110000E2,5.470137539E1 +9.601060000E2,5.878769788E1 +9.603740000E2,5.851189839E1 +9.606810000E2,5.400762096E1 +9.609290000E2,5.749049444E1 +9.611870000E2,5.241750519E1 +9.614480000E2,4.979747952E1 +9.616960000E2,5.096881110E1 +9.620030000E2,5.149804171E1 +9.623180000E2,5.481599911E1 +9.625540000E2,5.138365056E1 +9.628240000E2,5.235851031E1 +9.630470000E2,4.871540913E1 +9.632880000E2,5.651540461E1 +9.635860000E2,5.650278128E1 +9.638210000E2,5.704973755E1 +9.641160000E2,5.757712252E1 +9.643960000E2,5.881159691E1 +9.646600000E2,5.355579494E1 +9.649750000E2,5.539751700E1 +9.652910000E2,4.797714339E1 +9.655520000E2,5.082548637E1 +9.658080000E2,5.579830605E1 +9.660780000E2,5.554406278E1 +9.663250000E2,5.354814316E1 +9.665660000E2,5.463107171E1 +9.668090000E2,5.368692433E1 +9.671300000E2,5.364867335E1 +9.674540000E2,5.468973775E1 +9.677060000E2,5.815904844E1 +9.680020000E2,5.598522308E1 +9.682480000E2,5.541083624E1 +9.685850000E2,5.512396132E1 +9.688400000E2,5.530796688E1 +9.691210000E2,5.433954611E1 +9.693810000E2,5.507440645E1 +9.696820000E2,5.086817906E1 +9.699140000E2,5.696191489E1 +9.701640000E2,5.845256581E1 +9.704420000E2,5.620226260E1 +9.706770000E2,5.629047170E1 +9.709750000E2,5.811655252E1 +9.712290000E2,5.703185419E1 +9.714900000E2,5.716734774E1 +9.718450000E2,5.493596869E1 +9.720910000E2,5.909437017E1 +9.723380000E2,5.710675060E1 +9.725910000E2,5.780279559E1 +9.728920000E2,5.860060144E1 +9.731360000E2,6.078900999E1 +9.734260000E2,5.852116194E1 +9.736640000E2,5.905899453E1 +9.739130000E2,5.636299630E1 +9.742090000E2,6.289355999E1 +9.744870000E2,6.167909115E1 +9.747290000E2,6.098057792E1 +9.750690000E2,5.906667343E1 +9.753320000E2,6.018572501E1 +9.756150000E2,5.718512970E1 +9.759100000E2,5.146063018E1 +9.761570000E2,5.733244632E1 +9.764050000E2,5.368365894E1 +9.766600000E2,5.486016267E1 +9.769150000E2,5.908582599E1 +9.771910000E2,5.733773036E1 +9.774400000E2,5.566361416E1 +9.777680000E2,5.819125256E1 +9.781220000E2,5.947694304E1 +9.783640000E2,6.140057637E1 +9.786330000E2,5.721849738E1 +9.788550000E2,5.617504209E1 +9.791010000E2,5.660293849E1 +9.793960000E2,5.174001770E1 +9.796880000E2,5.083474014E1 +9.799290000E2,5.184104339E1 +9.801850000E2,5.025385313E1 +9.804850000E2,5.286605500E1 +9.807270000E2,5.586849562E1 +9.809750000E2,5.666036754E1 +9.812950000E2,5.248500918E1 +9.815810000E2,5.416072977E1 +9.818360000E2,5.799655965E1 +9.821300000E2,5.801841935E1 +9.823770000E2,5.977514968E1 +9.826270000E2,5.676871456E1 +9.828850000E2,5.104814549E1 +9.831730000E2,5.834620153E1 +9.834010000E2,5.660640582E1 +9.836620000E2,5.686451748E1 +9.839750000E2,5.998440952E1 +9.842240000E2,5.556687478E1 +9.846000000E2,5.811069315E1 +9.848430000E2,5.843499893E1 +9.851250000E2,5.180956247E1 +9.853860000E2,5.206236639E1 +9.856480000E2,5.641840701E1 +9.859110000E2,5.518588565E1 +9.861920000E2,5.697237679E1 +9.864550000E2,5.411246614E1 +9.867510000E2,5.214533821E1 +9.869880000E2,5.642389575E1 +9.872440000E2,6.015294933E1 +9.875470000E2,5.809991100E1 +9.879150000E2,6.420044247E1 +9.881610000E2,6.042656173E1 +9.884280000E2,5.938959873E1 +9.886840000E2,6.059888233E1 +9.889870000E2,5.282749720E1 +9.892620000E2,5.638110380E1 +9.895440000E2,4.900409689E1 +9.897740000E2,4.971849802E1 +9.900320000E2,5.061428463E1 +9.903370000E2,5.829922071E1 +9.905860000E2,5.812083213E1 +9.908910000E2,5.500587720E1 +9.911860000E2,5.677481104E1 +9.914380000E2,5.502691141E1 +9.916830000E2,5.294500154E1 +9.919560000E2,5.700444986E1 +9.921770000E2,5.448756275E1 +9.924220000E2,5.785741234E1 +9.927280000E2,5.702180374E1 +9.929670000E2,6.013415875E1 +9.932080000E2,5.533496795E1 +9.934640000E2,5.695301526E1 +9.937440000E2,5.436173732E1 +9.940620000E2,5.092257074E1 +9.944480000E2,4.973000793E1 +9.946940000E2,4.871235512E1 +9.949410000E2,5.171412848E1 +9.951960000E2,5.643245777E1 +9.954520000E2,5.548819002E1 +9.957530000E2,5.694822585E1 +9.960600000E2,5.668072577E1 +9.963110000E2,5.547400320E1 +9.966010000E2,5.667137699E1 +9.968430000E2,5.866196066E1 +9.971120000E2,5.641527163E1 +9.974300000E2,5.505243365E1 +9.977140000E2,5.491253296E1 +9.979940000E2,5.642986287E1 +9.982400000E2,5.111113898E1 +9.985270000E2,5.228293633E1 +9.987770000E2,5.380023266E1 +9.990760000E2,5.259255492E1 +9.993610000E2,5.359948032E1 +9.996550000E2,5.817439497E1 +9.999080000E2,5.712087238E1 +1.000199000E3,6.016800470E1 +1.000435000E3,5.758076017E1 +1.000772000E3,5.328951429E1 +1.001047000E3,5.373102399E1 +1.001303000E3,5.905317642E1 +1.001622000E3,5.478240688E1 +1.001877000E3,5.648896451E1 +1.002173000E3,5.587033976E1 +1.002422000E3,5.995513955E1 +1.002724000E3,6.295760047E1 +1.003003000E3,5.978713154E1 +1.003261000E3,5.669754444E1 +1.003545000E3,5.577942906E1 +1.003827000E3,6.186873273E1 +1.004183000E3,6.253868639E1 +1.004493000E3,5.777226132E1 +1.004770000E3,6.482227668E1 +1.005072000E3,5.923751414E1 +1.005323000E3,5.644465637E1 +1.005601000E3,6.074750234E1 +1.005832000E3,5.683683327E1 +1.006147000E3,5.957418887E1 +1.006418000E3,6.134946851E1 +1.006713000E3,5.641852300E1 +1.006952000E3,5.637674327E1 +1.007310000E3,5.484290206E1 +1.007589000E3,6.426865013E1 +1.007886000E3,5.712036033E1 +1.008127000E3,5.768385080E1 +1.008427000E3,5.812466970E1 +1.008666000E3,6.112344783E1 +1.008973000E3,5.606588478E1 +1.009269000E3,5.809328667E1 +1.009507000E3,5.371315435E1 +1.009763000E3,5.527533595E1 +1.010003000E3,5.390597114E1 +1.010379000E3,5.652035402E1 +1.010658000E3,5.490058638E1 +1.010920000E3,5.927019017E1 +1.011197000E3,5.293113048E1 +1.011458000E3,5.179006266E1 +1.011718000E3,5.366462930E1 +1.011979000E3,5.569421827E1 +1.012229000E3,5.341899104E1 +1.012477000E3,4.863208748E1 +1.012772000E3,6.037154816E1 +1.013036000E3,5.430849576E1 +1.013284000E3,5.735938261E1 +1.013671000E3,5.526482118E1 +1.013957000E3,5.731780297E1 +1.014225000E3,5.205368153E1 +1.014486000E3,5.548863756E1 +1.014733000E3,5.265038263E1 +1.015033000E3,5.986876322E1 +1.015314000E3,5.130643680E1 +1.015590000E3,6.086878634E1 +1.015830000E3,5.798526739E1 +1.016137000E3,6.825745236E1 +1.016387000E3,5.828900876E1 +1.016655000E3,5.873097643E1 +1.017001000E3,6.454090665E1 +1.017329000E3,6.385512775E1 +1.017637000E3,6.691081911E1 +1.017938000E3,6.580217665E1 +1.018229000E3,6.485489311E1 +1.018470000E3,6.387101962E1 +1.018706000E3,6.616835921E1 +1.018997000E3,5.951737331E1 +1.019235000E3,5.386458503E1 +1.019536000E3,5.756977765E1 +1.019801000E3,5.811747841E1 +1.020064000E3,5.930001089E1 +1.020406000E3,5.469664450E1 +1.020673000E3,5.181220980E1 +1.020925000E3,5.483858346E1 +1.021232000E3,5.716842569E1 +1.021527000E3,5.738254897E1 +1.021762000E3,5.628034518E1 +1.022007000E3,5.850971228E1 +1.022258000E3,5.329919175E1 +1.022556000E3,5.482637446E1 +1.022813000E3,5.690503448E1 +1.023071000E3,5.317501594E1 +1.023336000E3,4.870888301E1 +1.023687000E3,6.132281620E1 +1.023965000E3,6.262505101E1 +1.024220000E3,6.180229149E1 +1.024496000E3,6.130993335E1 +1.024741000E3,6.231376381E1 +1.025040000E3,6.164360059E1 +1.025279000E3,5.910065798E1 +1.025533000E3,5.622173801E1 +1.025821000E3,5.290311975E1 +1.026116000E3,5.028293308E1 +1.026403000E3,5.581740437E1 +1.026664000E3,5.988277804E1 +1.027011000E3,5.730548262E1 +1.027305000E3,5.417769573E1 +1.027578000E3,5.250932185E1 +1.027819000E3,5.139919708E1 +1.028128000E3,5.061852216E1 +1.028380000E3,4.722292138E1 +1.028683000E3,5.983070917E1 +1.028956000E3,6.045269830E1 +1.029182000E3,5.777292957E1 +1.029431000E3,5.497807442E1 +1.029734000E3,5.533889528E1 +1.030063000E3,5.373558580E1 +1.030323000E3,5.600729212E1 +1.030620000E3,5.467159629E1 +1.030863000E3,5.246400101E1 +1.031110000E3,5.468037288E1 +1.031367000E3,5.850364516E1 +1.031646000E3,5.490958739E1 +1.031911000E3,5.866929845E1 +1.032210000E3,5.708288591E1 +1.032475000E3,5.498129629E1 +1.032736000E3,5.670272599E1 +1.032986000E3,5.317143219E1 +1.033315000E3,5.758413128E1 +1.033557000E3,6.361635596E1 +1.033846000E3,5.513973379E1 +1.034093000E3,5.215484095E1 +1.034399000E3,5.465926438E1 +1.034684000E3,5.588902955E1 +1.034978000E3,5.387672604E1 +1.035280000E3,5.595327755E1 +1.035543000E3,5.621513504E1 +1.035825000E3,5.991854954E1 +1.036079000E3,5.864640009E1 +1.036322000E3,6.072021936E1 +1.036666000E3,5.462749592E1 +1.036971000E3,5.329083651E1 +1.037264000E3,5.401214501E1 +1.037542000E3,5.242806591E1 +1.037843000E3,5.573267887E1 +1.038091000E3,5.224254554E1 +1.038380000E3,5.453929206E1 +1.038635000E3,5.371826859E1 +1.038891000E3,4.369246898E1 +1.039145000E3,4.547521933E1 +1.039418000E3,4.204639660E1 +1.039750000E3,4.426760298E1 +1.039990000E3,4.955659514E1 +1.040294000E3,4.960859899E1 +1.040560000E3,4.841380220E1 +1.040808000E3,4.914533708E1 +1.041104000E3,4.650609937E1 +1.041370000E3,4.849101938E1 +1.041622000E3,5.065930763E1 +1.041920000E3,4.744161935E1 +1.042161000E3,4.448519483E1 +1.042478000E3,4.726532690E1 +1.042725000E3,4.667923132E1 +1.043042000E3,4.704822757E1 +1.043307000E3,3.950691106E1 +1.043560000E3,5.249697508E1 +1.043835000E3,4.753687679E1 +1.044091000E3,4.843049138E1 +1.044350000E3,5.394643708E1 +1.044644000E3,4.769079035E1 +1.044887000E3,5.111291504E1 +1.045194000E3,5.247298633E1 +1.045445000E3,4.904344971E1 +1.045693000E3,4.405437847E1 +1.045988000E3,4.750888237E1 +1.046301000E3,4.305046000E1 +1.046518000E3,4.630901796E1 +1.046813000E3,4.756289225E1 +1.047053000E3,4.661089273E1 +1.047331000E3,6.143859736E1 +1.047566000E3,5.702483033E1 +1.047860000E3,5.015015196E1 +1.048098000E3,5.180675157E1 +1.048397000E3,4.645218330E1 +1.048640000E3,4.317726503E1 +1.048918000E3,4.962602549E1 +1.049159000E3,4.922447391E1 +1.049523000E3,4.310015818E1 +1.049767000E3,5.584844461E1 +1.050011000E3,5.550466055E1 +1.050294000E3,5.076679182E1 +1.050523000E3,4.777565498E1 +1.050776000E3,5.078379664E1 +1.051031000E3,4.412618688E1 +1.051298000E3,3.933148532E1 +1.051551000E3,4.240994962E1 +1.051799000E3,3.715036539E1 +1.052054000E3,4.541823437E1 +1.052312000E3,3.252240989E1 +1.052661000E3,4.298387800E1 +1.052922000E3,4.065675211E1 +1.053171000E3,3.851226965E1 +1.053417000E3,3.833414863E1 +1.053702000E3,3.734543870E1 +1.053967000E3,4.406198141E1 +1.054269000E3,3.397952572E1 +1.054518000E3,3.018425986E1 +1.054795000E3,2.659023927E1 +1.055055000E3,3.230579484E1 +1.055319000E3,4.027650377E1 +1.055588000E3,3.256611719E1 +1.055936000E3,3.203904394E1 +1.056189000E3,3.024692018E1 +1.056469000E3,4.044611203E1 +1.056698000E3,3.245705712E1 +1.056956000E3,5.087039919E1 +1.057201000E3,5.278557071E1 +1.057507000E3,6.996122129E1 +1.057766000E3,6.951439283E1 +1.058027000E3,6.731609209E1 +1.058291000E3,5.787293958E1 +1.058571000E3,5.774874245E1 +1.058801000E3,5.291748766E1 +1.059132000E3,4.352220528E1 +1.059391000E3,5.556254729E1 +1.059665000E3,5.339220405E1 +1.059951000E3,5.593145301E1 +1.060235000E3,5.299996372E1 +1.060492000E3,4.882317894E1 +1.060733000E3,3.790707311E1 +1.060975000E3,3.470192076E1 +1.061278000E3,4.481563830E1 +1.061519000E3,4.823008935E1 +1.061816000E3,4.719850269E1 +1.062076000E3,4.706381680E1 +1.062331000E3,4.530378435E1 +1.062576000E3,3.456809562E1 +1.062882000E3,3.742453964E1 +1.063154000E3,3.905594906E1 +1.063397000E3,3.672857244E1 +1.063694000E3,2.941779164E1 +1.063926000E3,2.995931983E1 +1.064168000E3,3.455311118E1 +1.064461000E3,3.254662869E1 +1.064708000E3,3.652583843E1 +1.065001000E3,5.229424666E1 +1.065352000E3,5.178814165E1 +1.065606000E3,4.798098259E1 +1.065854000E3,3.636652329E1 +1.066121000E3,4.558252535E1 +1.066366000E3,3.902840121E1 +1.066629000E3,3.106435508E1 +1.066887000E3,2.541330464E1 +1.067179000E3,3.474902335E1 +1.067449000E3,4.492275189E1 +1.067698000E3,3.860211372E1 +1.067955000E3,4.332670525E1 +1.068251000E3,5.147667691E1 +1.068546000E3,5.152069997E1 +1.068797000E3,4.540650098E1 +1.069105000E3,4.486446450E1 +1.069378000E3,4.196481867E1 +1.069632000E3,4.863200791E1 +1.069908000E3,3.878967071E1 +1.070151000E3,3.630888030E1 +1.070413000E3,2.964429880E1 +1.070682000E3,3.354707636E1 +1.070956000E3,4.008490969E1 +1.071248000E3,3.576577653E1 +1.071553000E3,4.349754488E1 +1.071886000E3,3.824859907E1 +1.072130000E3,3.455877689E1 +1.072406000E3,3.622999465E1 +1.072717000E3,3.637608237E1 +1.072984000E3,3.645219519E1 +1.073255000E3,4.353729148E1 +1.073603000E3,4.287473251E1 +1.073856000E3,4.842203791E1 +1.074097000E3,4.484407311E1 +1.074356000E3,4.397007110E1 +1.074628000E3,4.695884235E1 +1.074931000E3,4.627189963E1 +1.075264000E3,4.689571524E1 +1.075614000E3,5.203841291E1 +1.075923000E3,4.610184941E1 +1.076163000E3,4.404432471E1 +1.076475000E3,4.923215011E1 +1.076765000E3,4.466142180E1 +1.077062000E3,4.987282715E1 +1.077375000E3,4.461839454E1 +1.077687000E3,5.085403766E1 +1.077991000E3,4.674512295E1 +1.078232000E3,5.167180279E1 +1.078544000E3,4.780582457E1 +1.078939000E3,4.593914406E1 +1.079187000E3,4.061652220E1 +1.079434000E3,4.347669045E1 +1.079712000E3,4.326983820E1 +1.079966000E3,3.511950991E1 +1.080260000E3,4.755279745E1 +1.080506000E3,4.756343862E1 +1.080756000E3,4.779732167E1 +1.081049000E3,4.991962747E1 +1.081293000E3,5.213887128E1 +1.081586000E3,5.357624469E1 +1.081916000E3,5.141456645E1 +1.082165000E3,5.036532462E1 +1.082460000E3,4.962769973E1 +1.082696000E3,4.506404490E1 +1.082988000E3,4.537987312E1 +1.083220000E3,4.738457007E1 +1.083529000E3,4.698711193E1 +1.083769000E3,4.571430081E1 +1.084079000E3,4.980908007E1 +1.084324000E3,5.082282040E1 +1.084590000E3,5.406004268E1 +1.084876000E3,5.436375886E1 +1.085258000E3,5.361506257E1 +1.085509000E3,5.202937925E1 +1.085815000E3,5.324976969E1 +1.086057000E3,5.371445731E1 +1.086301000E3,5.282162917E1 +1.086550000E3,5.221281857E1 +1.086802000E3,5.263727375E1 +1.087126000E3,5.703022139E1 +1.087384000E3,5.519432869E1 +1.087646000E3,5.426647490E1 +1.087939000E3,5.407342864E1 +1.088175000E3,5.235924404E1 +1.088520000E3,4.681002832E1 +1.088812000E3,4.891237586E1 +1.089076000E3,4.699020733E1 +1.089350000E3,4.902871382E1 +1.089591000E3,5.078145117E1 +1.089837000E3,5.041791921E1 +1.090133000E3,4.603650794E1 +1.090430000E3,4.871755485E1 +1.090660000E3,5.111421073E1 +1.090911000E3,4.581894631E1 +1.091248000E3,4.988189917E1 +1.091630000E3,5.341365920E1 +1.091902000E3,4.962858025E1 +1.092183000E3,4.315344358E1 +1.092440000E3,4.664431132E1 +1.092683000E3,4.616459192E1 +1.092923000E3,4.765071496E1 +1.093171000E3,4.163360687E1 +1.093473000E3,4.537777608E1 +1.093714000E3,4.783603025E1 +1.094007000E3,4.845414260E1 +1.094261000E3,4.799870549E1 +1.094499000E3,4.651309815E1 +1.094792000E3,5.003648984E1 +1.095123000E3,5.202534254E1 +1.095372000E3,5.709400077E1 +1.095625000E3,5.694079106E1 +1.095896000E3,5.715452089E1 +1.096196000E3,5.523378380E1 +1.096438000E3,5.375558627E1 +1.096737000E3,5.665208041E1 +1.096991000E3,5.314654737E1 +1.097292000E3,5.142447849E1 +1.097557000E3,5.330628285E1 +1.097827000E3,5.512040694E1 +1.098167000E3,5.399583122E1 +1.098472000E3,5.540663813E1 +1.098720000E3,5.200546986E1 +1.098960000E3,4.676140326E1 +1.099243000E3,4.798657093E1 +1.099544000E3,4.841724285E1 +1.099804000E3,5.642371618E1 +1.100109000E3,5.409000726E1 +1.100381000E3,5.348646719E1 +1.100630000E3,5.346537578E1 +1.100927000E3,5.422782845E1 +1.101164000E3,5.395323822E1 +1.101495000E3,5.383967560E1 +1.101763000E3,5.667828538E1 +1.102044000E3,4.764690784E1 +1.102307000E3,5.353530254E1 +1.102613000E3,5.568430762E1 +1.102906000E3,5.431580275E1 +1.103147000E3,5.193331555E1 +1.103441000E3,5.040945762E1 +1.103677000E3,5.333005838E1 +1.103968000E3,4.947534745E1 +1.104272000E3,5.306270968E1 +1.104564000E3,5.537230515E1 +1.104799000E3,4.876041085E1 +1.105069000E3,5.109409535E1 +1.105330000E3,5.087734214E1 +1.105587000E3,5.225642483E1 +1.105838000E3,5.176680091E1 +1.106135000E3,5.535939212E1 +1.106380000E3,5.666892185E1 +1.106622000E3,5.658846562E1 +1.106895000E3,5.577897889E1 +1.107150000E3,5.157178717E1 +1.107431000E3,5.284488409E1 +1.107756000E3,5.415639955E1 +1.108002000E3,5.465643057E1 +1.108313000E3,4.654328988E1 +1.108563000E3,5.038890380E1 +1.108811000E3,4.602751738E1 +1.109073000E3,4.801243396E1 +1.109375000E3,4.782472616E1 +1.109667000E3,4.666447221E1 +1.109943000E3,5.156469126E1 +1.110192000E3,4.949682888E1 +1.110448000E3,4.919673339E1 +1.110752000E3,4.862521519E1 +1.111045000E3,5.122379655E1 +1.111295000E3,4.813892217E1 +1.111515000E3,4.901611396E1 +1.111761000E3,4.905664967E1 +1.112005000E3,4.647618514E1 +1.112265000E3,4.730688076E1 +1.112537000E3,5.039121351E1 +1.112793000E3,4.985611957E1 +1.113101000E3,5.474563863E1 +1.113387000E3,5.028870882E1 +1.113678000E3,5.073784750E1 +1.113952000E3,4.995138555E1 +1.114291000E3,4.790039203E1 +1.114554000E3,4.764335594E1 +1.114849000E3,5.057104591E1 +1.115096000E3,5.107398730E1 +1.115401000E3,4.800391913E1 +1.115672000E3,4.553282874E1 +1.115895000E3,4.569523337E1 +1.116194000E3,4.480844215E1 +1.116425000E3,4.772339962E1 +1.116664000E3,5.255452638E1 +1.116906000E3,4.927433934E1 +1.117202000E3,4.871369865E1 +1.117530000E3,4.928110420E1 +1.117840000E3,5.705383563E1 +1.118146000E3,4.880674861E1 +1.118418000E3,5.038180726E1 +1.118687000E3,5.145980404E1 +1.118950000E3,5.338008269E1 +1.119227000E3,5.227728425E1 +1.119468000E3,5.450689216E1 +1.119736000E3,5.844246451E1 +1.120049000E3,5.459398611E1 +1.120351000E3,5.526423567E1 +1.120605000E3,5.228963309E1 +1.120918000E3,5.598288902E1 +1.121182000E3,5.280889802E1 +1.121489000E3,4.974717420E1 +1.121729000E3,5.137523152E1 +1.121978000E3,5.052356297E1 +1.122235000E3,5.240368249E1 +1.122503000E3,4.826380791E1 +1.122775000E3,5.095403791E1 +1.123036000E3,5.799909934E1 +1.123291000E3,4.889512711E1 +1.123587000E3,5.622808486E1 +1.123874000E3,5.230369090E1 +1.124235000E3,5.081102316E1 +1.124544000E3,5.628773803E1 +1.124826000E3,5.810547372E1 +1.125153000E3,5.508029719E1 +1.125432000E3,5.576573503E1 +1.125722000E3,5.346022180E1 +1.125978000E3,5.279748306E1 +1.126234000E3,5.604802053E1 +1.126502000E3,5.937326657E1 +1.126804000E3,5.703447215E1 +1.127047000E3,5.520354594E1 +1.127314000E3,5.551787326E1 +1.127554000E3,5.740837773E1 +1.127843000E3,5.663015330E1 +1.128135000E3,5.649615150E1 +1.128380000E3,5.731556257E1 +1.128677000E3,6.079986861E1 +1.128914000E3,5.820128856E1 +1.129207000E3,6.091746513E1 +1.129442000E3,6.126941240E1 +1.129745000E3,4.541170906E1 +1.129980000E3,4.341485096E1 +1.130277000E3,4.833777967E1 +1.130573000E3,4.472710223E1 +1.130815000E3,5.059675199E1 +1.131062000E3,3.863826940E1 +1.131353000E3,4.925455740E1 +1.131589000E3,4.859989956E1 +1.131881000E3,5.113067908E1 +1.132117000E3,5.054542106E1 +1.132418000E3,4.827479925E1 +1.132654000E3,4.610884488E1 +1.132948000E3,4.879734536E1 +1.133241000E3,5.074680390E1 +1.133563000E3,5.119298220E1 +1.133864000E3,4.861265792E1 +1.134166000E3,5.001512903E1 +1.134452000E3,5.059053464E1 +1.134716000E3,4.999839479E1 +1.134967000E3,4.960069086E1 +1.135222000E3,5.320256888E1 +1.135494000E3,5.604818163E1 +1.135742000E3,5.625768045E1 +1.135999000E3,5.261645024E1 +1.136244000E3,5.105081932E1 +1.136501000E3,5.616444939E1 +1.136847000E3,5.624064264E1 +1.137105000E3,5.654097446E1 +1.137391000E3,5.807884104E1 +1.137717000E3,5.436169891E1 +1.137970000E3,5.763959225E1 +1.138239000E3,5.465216875E1 +1.138486000E3,5.094509116E1 +1.138731000E3,5.425415233E1 +1.138977000E3,5.143709697E1 +1.139259000E3,5.032545705E1 +1.139527000E3,5.906031130E1 +1.139800000E3,5.308709054E1 +1.140168000E3,5.407062541E1 +1.140423000E3,5.585261351E1 +1.140694000E3,5.463535881E1 +1.140949000E3,5.407603664E1 +1.141230000E3,5.495767686E1 +1.141512000E3,5.639433741E1 +1.141818000E3,5.555715330E1 +1.142072000E3,5.729232944E1 +1.142323000E3,5.553013253E1 +1.142578000E3,5.648251207E1 +1.142844000E3,5.786931075E1 +1.143143000E3,6.007493220E1 +1.143523000E3,5.752076543E1 +1.143836000E3,5.573324560E1 +1.144090000E3,5.641950784E1 +1.144396000E3,5.532270625E1 +1.144644000E3,5.561239732E1 +1.144940000E3,5.206707456E1 +1.145212000E3,5.092140902E1 +1.145511000E3,5.452891649E1 +1.145770000E3,5.331137977E1 +1.146042000E3,5.366568195E1 +1.146338000E3,5.227174013E1 +1.146650000E3,5.423955559E1 +1.146934000E3,5.781916580E1 +1.147218000E3,5.532962824E1 +1.147467000E3,5.502661676E1 +1.147687000E3,5.823979674E1 +1.147961000E3,5.538066560E1 +1.148276000E3,5.423260060E1 +1.148528000E3,5.197461977E1 +1.148799000E3,5.154724487E1 +1.149057000E3,5.473685923E1 +1.149367000E3,5.647867848E1 +1.149660000E3,5.489455072E1 +1.150037000E3,6.072892064E1 +1.150335000E3,5.543869835E1 +1.150594000E3,5.667713742E1 +1.150870000E3,5.818755157E1 +1.151164000E3,5.210849760E1 +1.151411000E3,5.095671455E1 +1.151703000E3,5.254983272E1 +1.152002000E3,5.585064224E1 +1.152253000E3,5.739007574E1 +1.152582000E3,5.895179917E1 +1.152860000E3,5.461317681E1 +1.153122000E3,5.345759293E1 +1.153381000E3,5.267971619E1 +1.153684000E3,6.006602205E1 +1.153986000E3,5.573552061E1 +1.154286000E3,5.518963618E1 +1.154531000E3,5.342922095E1 +1.154792000E3,5.257536969E1 +1.155139000E3,4.887945516E1 +1.155435000E3,4.702411688E1 +1.155680000E3,4.867646616E1 +1.155978000E3,4.811861077E1 +1.156361000E3,4.915586406E1 +1.156670000E3,5.033026069E1 +1.156976000E3,5.393908378E1 +1.157274000E3,5.295128205E1 +1.157524000E3,5.249671789E1 +1.157816000E3,5.314344994E1 +1.158052000E3,5.237342933E1 +1.158353000E3,5.300284286E1 +1.158590000E3,5.170068449E1 +1.158867000E3,5.174146304E1 +1.159147000E3,4.929588783E1 +1.159411000E3,5.699090425E1 +1.159752000E3,5.266690351E1 +1.160068000E3,5.746767577E1 +1.160360000E3,5.375850846E1 +1.160640000E3,5.373794020E1 +1.160985000E3,5.304914530E1 +1.161280000E3,5.198754593E1 +1.161525000E3,5.019848207E1 +1.161766000E3,5.164623609E1 +1.162020000E3,5.363319210E1 +1.162324000E3,5.439011044E1 +1.162564000E3,5.304648945E1 +1.162816000E3,5.174573718E1 +1.163177000E3,4.505755779E1 +1.163462000E3,4.894753105E1 +1.163738000E3,5.064933943E1 +1.164013000E3,5.245879056E1 +1.164255000E3,5.017914517E1 +1.164568000E3,5.189205429E1 +1.164823000E3,5.038961444E1 +1.165052000E3,5.072118593E1 +1.165297000E3,4.831662547E1 +1.165552000E3,5.050204887E1 +1.165808000E3,5.308107982E1 +1.166062000E3,4.878509871E1 +1.166392000E3,5.002605106E1 +1.166654000E3,5.320265697E1 +1.166911000E3,4.403273534E1 +1.167180000E3,5.161386051E1 +1.167455000E3,4.986209571E1 +1.167692000E3,4.993305836E1 +1.167973000E3,5.173621365E1 +1.168216000E3,5.385559129E1 +1.168491000E3,5.543019156E1 +1.168757000E3,5.019966657E1 +1.169035000E3,5.569516326E1 +1.169296000E3,5.216419082E1 +1.169676000E3,5.398731996E1 +1.169933000E3,5.465625282E1 +1.170197000E3,5.451774184E1 +1.170449000E3,5.328129322E1 +1.170705000E3,5.452639907E1 +1.170963000E3,5.713735254E1 +1.171272000E3,5.551413923E1 +1.171528000E3,5.604966001E1 +1.171779000E3,5.340478404E1 +1.172038000E3,5.107817821E1 +1.172291000E3,5.218990306E1 +1.172602000E3,4.830451720E1 +1.172964000E3,5.276802164E1 +1.173245000E3,5.191204687E1 +1.173527000E3,5.337367972E1 +1.173838000E3,5.462664550E1 +1.174090000E3,5.304724513E1 +1.174379000E3,5.193251440E1 +1.174628000E3,5.283915893E1 +1.174936000E3,5.036641160E1 +1.175236000E3,4.890810708E1 +1.175487000E3,4.805298565E1 +1.175750000E3,5.067335741E1 +1.176019000E3,4.961207397E1 +1.176335000E3,4.820862314E1 +1.176634000E3,5.328684116E1 +1.176883000E3,5.122009001E1 +1.177165000E3,5.878687770E1 +1.177412000E3,5.487235950E1 +1.177709000E3,5.224569426E1 +1.178006000E3,5.403405997E1 +1.178246000E3,5.388661901E1 +1.178490000E3,5.237426881E1 +1.178734000E3,5.372043820E1 +1.179050000E3,5.471170909E1 +1.179387000E3,5.129350436E1 +1.179686000E3,4.660070824E1 +1.179916000E3,4.541361068E1 +1.180159000E3,4.365576113E1 +1.180466000E3,4.771103553E1 +1.180756000E3,4.863237791E1 +1.181008000E3,5.534959697E1 +1.181314000E3,5.376444060E1 +1.181609000E3,5.130885425E1 +1.181851000E3,5.256948786E1 +1.182151000E3,5.321964637E1 +1.182393000E3,5.074776981E1 +1.182622000E3,4.979941250E1 +1.182873000E3,5.445637667E1 +1.183116000E3,4.449721128E1 +1.183420000E3,5.086906199E1 +1.183676000E3,5.067998506E1 +1.183927000E3,5.352019181E1 +1.184219000E3,4.851971310E1 +1.184517000E3,5.123853013E1 +1.184764000E3,5.278221141E1 +1.185010000E3,5.126409245E1 +1.185297000E3,5.249182764E1 +1.185665000E3,5.346599478E1 +1.185972000E3,5.052250297E1 +1.186225000E3,5.389354916E1 +1.186534000E3,5.372737626E1 +1.186796000E3,5.415645782E1 +1.187048000E3,5.441424865E1 +1.187317000E3,5.470553815E1 +1.187622000E3,5.559990781E1 +1.187913000E3,5.619293356E1 +1.188186000E3,4.869472445E1 +1.188442000E3,5.069948923E1 +1.188718000E3,5.296813397E1 +1.189051000E3,5.015003063E1 +1.189308000E3,5.110938827E1 +1.189570000E3,5.250182053E1 +1.189815000E3,5.240850659E1 +1.190062000E3,5.446862868E1 +1.190368000E3,5.270463767E1 +1.190629000E3,5.117539458E1 +1.190931000E3,5.543767536E1 +1.191207000E3,5.348622922E1 +1.191505000E3,5.112152946E1 +1.191761000E3,4.905277341E1 +1.192068000E3,5.456405848E1 +1.192487000E3,5.016322677E1 +1.192732000E3,4.971711263E1 +1.192976000E3,5.396031961E1 +1.193258000E3,5.018645567E1 +1.193531000E3,4.895586707E1 +1.193790000E3,5.442023654E1 +1.194055000E3,5.160697029E1 +1.194326000E3,4.822365107E1 +1.194605000E3,5.396633777E1 +1.194903000E3,5.031021734E1 +1.195141000E3,5.278015326E1 +1.195431000E3,4.949576105E1 +1.195801000E3,5.244682833E1 +1.196076000E3,5.508575727E1 +1.196371000E3,5.161802747E1 +1.196603000E3,5.716896987E1 +1.196858000E3,5.210002974E1 +1.197207000E3,5.483594793E1 +1.197503000E3,5.204828926E1 +1.197774000E3,5.339169315E1 +1.198054000E3,4.934781945E1 +1.198312000E3,5.918797425E1 +1.198559000E3,5.025254784E1 +1.198808000E3,5.317746302E1 +1.199152000E3,5.656715516E1 +1.199464000E3,5.448426177E1 +1.199717000E3,5.419526565E1 +1.199961000E3,5.304156540E1 +1.200219000E3,4.961182292E1 +1.200480000E3,5.259766625E1 +1.200730000E3,5.295115767E1 +1.201029000E3,5.365389524E1 +1.201288000E3,5.465027972E1 +1.201538000E3,5.131261505E1 +1.201807000E3,5.767453751E1 +1.202112000E3,5.316006082E1 +1.202485000E3,5.263333972E1 +1.202739000E3,4.966297173E1 +1.203041000E3,5.282706501E1 +1.203300000E3,4.950274237E1 +1.203539000E3,4.377779375E1 +1.203832000E3,5.274682795E1 +1.204077000E3,5.348405653E1 +1.204320000E3,5.647600154E1 +1.204615000E3,4.835002395E1 +1.204854000E3,4.440243109E1 +1.205149000E3,4.673035253E1 +1.205410000E3,4.901106802E1 +1.205666000E3,5.311033159E1 +1.205952000E3,5.020567211E1 +1.206248000E3,5.046889058E1 +1.206545000E3,6.150607502E1 +1.206779000E3,5.260331634E1 +1.207093000E3,5.183291791E1 +1.207367000E3,4.957331060E1 +1.207610000E3,5.139200370E1 +1.207857000E3,5.005726187E1 +1.208158000E3,4.979521937E1 +1.208398000E3,5.178137337E1 +1.208738000E3,4.632694184E1 +1.208994000E3,4.836915777E1 +1.209279000E3,4.869228435E1 +1.209528000E3,5.096507040E1 +1.209784000E3,4.718590489E1 +1.210053000E3,4.835967114E1 +1.210281000E3,4.725223201E1 +1.210542000E3,5.172958855E1 +1.210823000E3,5.546336112E1 +1.211051000E3,5.448218663E1 +1.211300000E3,5.371995163E1 +1.211551000E3,4.887559574E1 +1.211926000E3,4.975732945E1 +1.212205000E3,5.041543230E1 +1.212482000E3,4.863959509E1 +1.212730000E3,5.047232348E1 +1.212990000E3,4.824384094E1 +1.213232000E3,5.039377586E1 +1.213493000E3,4.517891187E1 +1.213814000E3,4.686032989E1 +1.214062000E3,4.852263494E1 +1.214337000E3,4.897277606E1 +1.214586000E3,4.662047985E1 +1.214832000E3,5.483925472E1 +1.215143000E3,5.677489998E1 +1.215372000E3,5.470688254E1 +1.215664000E3,5.408747991E1 +1.215962000E3,5.167832591E1 +1.216227000E3,5.463116224E1 +1.216504000E3,5.335564969E1 +1.216747000E3,4.832376612E1 +1.216996000E3,4.918538596E1 +1.217306000E3,5.329611015E1 +1.217618000E3,5.364881155E1 +1.217885000E3,5.087209115E1 +1.218149000E3,4.967310650E1 +1.218497000E3,4.842689624E1 +1.218801000E3,5.442588779E1 +1.219043000E3,5.338467746E1 +1.219349000E3,5.187371665E1 +1.219600000E3,4.992515182E1 +1.219883000E3,5.205809257E1 +1.220161000E3,5.374364962E1 +1.220471000E3,5.145920034E1 +1.220752000E3,5.112774200E1 +1.221009000E3,4.969936214E1 +1.221258000E3,4.906585252E1 +1.221519000E3,4.971022706E1 +1.221873000E3,5.039216656E1 +1.222125000E3,4.735018859E1 +1.222388000E3,5.025223930E1 +1.222647000E3,5.349102952E1 +1.222903000E3,5.894430216E1 +1.223210000E3,5.133834742E1 +1.223464000E3,5.378681025E1 +1.223708000E3,5.646161983E1 +1.223949000E3,5.127610878E1 +1.224189000E3,5.295211205E1 +1.224441000E3,5.074229414E1 +1.224698000E3,5.428527885E1 +1.225064000E3,6.064230054E1 +1.225333000E3,5.545461106E1 +1.225591000E3,5.085263163E1 +1.225847000E3,4.867332677E1 +1.226137000E3,4.828036819E1 +1.226394000E3,5.187031217E1 +1.226668000E3,4.691949774E1 +1.226931000E3,4.605300024E1 +1.227219000E3,4.319091646E1 +1.227493000E3,4.827268256E1 +1.227791000E3,4.873371181E1 +1.228031000E3,4.895629331E1 +1.228388000E3,4.831306026E1 +1.228651000E3,5.150144778E1 +1.228942000E3,5.210555115E1 +1.229190000E3,4.868630793E1 +1.229442000E3,5.072280558E1 +1.229686000E3,5.520857657E1 +1.229933000E3,5.597505745E1 +1.230228000E3,5.309096620E1 +1.230467000E3,5.340491117E1 +1.230765000E3,4.966814228E1 +1.231012000E3,4.811713105E1 +1.231316000E3,5.037869561E1 +1.231666000E3,4.768651081E1 +1.231948000E3,4.577834304E1 +1.232207000E3,4.455407567E1 +1.232510000E3,5.091422235E1 +1.232802000E3,4.990562511E1 +1.233047000E3,5.178152081E1 +1.233344000E3,5.312014577E1 +1.233592000E3,5.002236071E1 +1.233892000E3,5.158473192E1 +1.234173000E3,4.692863129E1 +1.234463000E3,4.643331531E1 +1.234792000E3,4.659156592E1 +1.235060000E3,4.662718910E1 +1.235313000E3,5.204491267E1 +1.235577000E3,5.165973487E1 +1.235837000E3,4.753691687E1 +1.236124000E3,5.179615379E1 +1.236401000E3,4.807409380E1 +1.236654000E3,5.474790946E1 +1.236923000E3,4.946475170E1 +1.237180000E3,4.949471083E1 +1.237426000E3,4.669168363E1 +1.237743000E3,5.529942944E1 +1.238061000E3,5.997488643E1 +1.238363000E3,5.302222406E1 +1.238611000E3,5.022506453E1 +1.238856000E3,4.864145193E1 +1.239102000E3,5.299123845E1 +1.239357000E3,4.682866815E1 +1.239657000E3,4.770894983E1 +1.239902000E3,4.813746372E1 +1.240150000E3,4.571771059E1 +1.240465000E3,5.354012247E1 +1.240765000E3,5.830707734E1 +1.241013000E3,5.483189048E1 +1.241344000E3,5.157405593E1 +1.241606000E3,5.072581437E1 +1.241868000E3,5.137979859E1 +1.242133000E3,4.849261303E1 +1.242396000E3,5.556107710E1 +1.242656000E3,4.958779284E1 +1.242959000E3,5.301548021E1 +1.243232000E3,5.475621292E1 +1.243501000E3,5.660789219E1 +1.243755000E3,5.350018163E1 +1.244010000E3,5.415674835E1 +1.244349000E3,5.699979568E1 +1.244717000E3,5.660044844E1 +1.245015000E3,5.808533709E1 +1.245259000E3,5.881859790E1 +1.245558000E3,5.728882886E1 +1.245808000E3,6.044308225E1 +1.246079000E3,5.893900513E1 +1.246326000E3,5.279872381E1 +1.246637000E3,5.769196864E1 +1.246935000E3,5.963088900E1 +1.247181000E3,5.367341836E1 +1.247508000E3,4.963645506E1 +1.247848000E3,5.265770489E1 +1.248115000E3,5.355743381E1 +1.248359000E3,4.891015342E1 +1.248659000E3,4.819353582E1 +1.248902000E3,4.966403220E1 +1.249199000E3,4.977495696E1 +1.249449000E3,5.715212626E1 +1.249708000E3,5.458337902E1 +1.249983000E3,4.910795823E1 +1.250282000E3,5.184902745E1 +1.250527000E3,5.416053460E1 +1.250777000E3,5.320773170E1 +1.251084000E3,5.422274265E1 +1.251342000E3,5.429456299E1 +1.251602000E3,5.910733722E1 +1.251866000E3,5.226490816E1 +1.252178000E3,5.191466859E1 +1.252452000E3,5.143339371E1 +1.252681000E3,5.066846779E1 +1.252975000E3,4.928639562E1 +1.253256000E3,4.916995298E1 +1.253528000E3,5.115941927E1 +1.253816000E3,4.850268402E1 +1.254063000E3,5.682920937E1 +1.254418000E3,5.583927157E1 +1.254700000E3,5.243405901E1 +1.254947000E3,5.411796563E1 +1.255215000E3,5.538314624E1 +1.255487000E3,5.447026824E1 +1.255748000E3,5.115232974E1 +1.256046000E3,5.273125350E1 +1.256281000E3,5.501639825E1 +1.256559000E3,5.470702619E1 +1.256867000E3,5.330168249E1 +1.257116000E3,5.680033697E1 +1.257361000E3,5.088137081E1 +1.257690000E3,4.771044205E1 +1.257935000E3,5.556188303E1 +1.258189000E3,5.821474305E1 +1.258460000E3,5.913083175E1 +1.258757000E3,5.624840253E1 +1.259001000E3,5.575040009E1 +1.259294000E3,5.295140054E1 +1.259581000E3,5.547885633E1 +1.259831000E3,5.659634167E1 +1.260084000E3,5.552607398E1 +1.260378000E3,5.399987136E1 +1.260676000E3,5.741946227E1 +1.260997000E3,5.622829253E1 +1.261272000E3,5.638519080E1 +1.261569000E3,5.222122782E1 +1.261810000E3,5.168558616E1 +1.262055000E3,5.937417075E1 +1.262351000E3,5.419990938E1 +1.262597000E3,5.469291977E1 +1.262893000E3,5.501007253E1 +1.263142000E3,5.356116387E1 +1.263421000E3,5.643294047E1 +1.263644000E3,5.627927149E1 +1.263964000E3,5.547827797E1 +1.264255000E3,5.434029164E1 +1.264552000E3,5.355134450E1 +1.264791000E3,5.268456483E1 +1.265090000E3,5.304298782E1 +1.265342000E3,5.292557941E1 +1.265637000E3,5.267823535E1 +1.265885000E3,5.076475521E1 +1.266186000E3,5.470463807E1 +1.266480000E3,5.369531663E1 +1.266727000E3,5.321314382E1 +1.267074000E3,5.430022488E1 +1.267386000E3,5.498366079E1 +1.267650000E3,5.373765381E1 +1.267926000E3,5.631680810E1 +1.268156000E3,5.314598601E1 +1.268459000E3,5.446778700E1 +1.268718000E3,5.461487175E1 +1.269029000E3,4.723979401E1 +1.269322000E3,5.050485841E1 +1.269602000E3,5.263446338E1 +1.269914000E3,5.195043172E1 +1.270180000E3,5.361139844E1 +1.270542000E3,5.127785292E1 +1.270796000E3,5.111084292E1 +1.271061000E3,5.030178225E1 +1.271329000E3,4.978955516E1 +1.271616000E3,5.398913319E1 +1.271862000E3,5.537806166E1 +1.272155000E3,5.301545016E1 +1.272407000E3,5.450597504E1 +1.272651000E3,5.090153644E1 +1.272906000E3,5.335437953E1 +1.273148000E3,4.673762491E1 +1.273392000E3,5.062539325E1 +1.273710000E3,5.110756444E1 +1.273960000E3,5.466659884E1 +1.274217000E3,5.158121780E1 +1.274511000E3,5.575560452E1 +1.274759000E3,5.536976579E1 +1.275054000E3,5.425250328E1 +1.275298000E3,5.448034930E1 +1.275544000E3,5.185016662E1 +1.275828000E3,5.206320816E1 +1.276126000E3,5.118466074E1 +1.276376000E3,4.943928704E1 +1.276707000E3,5.090592254E1 +1.276972000E3,5.767487174E1 +1.277251000E3,5.481331862E1 +1.277544000E3,5.385854096E1 +1.277810000E3,5.179333541E1 +1.278097000E3,5.161992279E1 +1.278344000E3,5.248655937E1 +1.278657000E3,5.064236034E1 +1.278927000E3,4.915402835E1 +1.279197000E3,5.321156971E1 +1.279471000E3,5.438812541E1 +1.279734000E3,5.482588411E1 +1.280065000E3,5.157318203E1 +1.280296000E3,5.173449962E1 +1.280546000E3,5.465953878E1 +1.280843000E3,5.457680704E1 +1.281077000E3,5.562152963E1 +1.281325000E3,5.460406982E1 +1.281570000E3,5.232421403E1 +1.281870000E3,5.207576719E1 +1.282135000E3,4.968186040E1 +1.282378000E3,5.237915347E1 +1.282628000E3,4.745539727E1 +1.282877000E3,5.255989147E1 +1.283195000E3,5.301690658E1 +1.283467000E3,5.283539029E1 +1.283717000E3,5.083105477E1 +1.283978000E3,4.559322742E1 +1.284235000E3,4.934435088E1 +1.284538000E3,5.265118466E1 +1.284812000E3,5.302155906E1 +1.285045000E3,5.294725202E1 +1.285352000E3,5.129236762E1 +1.285646000E3,5.402858483E1 +1.285898000E3,5.434527110E1 +1.286189000E3,5.525625388E1 +1.286515000E3,5.653073998E1 +1.286819000E3,5.704731902E1 +1.287101000E3,5.310035962E1 +1.287387000E3,5.474072190E1 +1.287649000E3,5.496979063E1 +1.287925000E3,5.528941101E1 +1.288193000E3,5.394330028E1 +1.288492000E3,4.829171318E1 +1.288740000E3,5.076324605E1 +1.289004000E3,4.673843249E1 +1.289280000E3,5.345749476E1 +1.289584000E3,4.955238815E1 +1.289923000E3,5.268555513E1 +1.290206000E3,5.092762320E1 +1.290445000E3,5.180504716E1 +1.290779000E3,5.421996562E1 +1.291081000E3,5.408565728E1 +1.291322000E3,5.466627749E1 +1.291622000E3,5.247549140E1 +1.291870000E3,5.438915347E1 +1.292125000E3,5.526358440E1 +1.292428000E3,5.407200655E1 +1.292723000E3,5.160593410E1 +1.293035000E3,5.231731426E1 +1.293342000E3,5.126765219E1 +1.293626000E3,4.802016847E1 +1.293922000E3,5.428603515E1 +1.294199000E3,5.305841291E1 +1.294451000E3,5.676250586E1 +1.294738000E3,5.921971496E1 +1.295005000E3,5.812051865E1 +1.295266000E3,5.671365947E1 +1.295512000E3,5.389157640E1 +1.295809000E3,5.417883641E1 +1.296087000E3,5.169085532E1 +1.296408000E3,5.027989141E1 +1.296704000E3,5.801273246E1 +1.296951000E3,5.777618357E1 +1.297241000E3,5.598217178E1 +1.297547000E3,5.590671112E1 +1.297806000E3,6.302454961E1 +1.298073000E3,5.716944646E1 +1.298330000E3,5.693666329E1 +1.298591000E3,5.374930006E1 +1.298851000E3,5.170089530E1 +1.299100000E3,6.243829367E1 +1.299340000E3,5.522680485E1 +1.299673000E3,5.451288060E1 +1.299933000E3,5.720613947E1 +1.300193000E3,5.131457759E1 +1.300510000E3,5.593393786E1 +1.300810000E3,5.344184529E1 +1.301099000E3,5.432320381E1 +1.301355000E3,5.294046944E1 +1.301602000E3,5.330691828E1 +1.301911000E3,4.899471979E1 +1.302175000E3,5.054546621E1 +1.302420000E3,4.914598102E1 +1.302706000E3,5.757950400E1 +1.303045000E3,5.798603958E1 +1.303343000E3,5.685278830E1 +1.303584000E3,5.272645619E1 +1.303869000E3,5.576083132E1 +1.304169000E3,5.311655900E1 +1.304414000E3,5.297304035E1 +1.304724000E3,6.119658997E1 +1.304998000E3,5.921259630E1 +1.305275000E3,5.974785927E1 +1.305567000E3,5.829108198E1 +1.305799000E3,5.656256791E1 +1.306151000E3,5.263150293E1 +1.306475000E3,5.719715846E1 +1.306754000E3,5.746813017E1 +1.307020000E3,6.063794361E1 +1.307320000E3,5.945639283E1 +1.307570000E3,5.898495898E1 +1.307856000E3,5.345744690E1 +1.308127000E3,5.882374416E1 +1.308390000E3,5.704844280E1 +1.308660000E3,6.230218860E1 +1.308982000E3,5.794977886E1 +1.309252000E3,5.609480230E1 +1.309620000E3,5.439173238E1 +1.309924000E3,5.804315704E1 +1.310253000E3,5.898090143E1 +1.310510000E3,5.933785859E1 +1.310826000E3,5.484966867E1 +1.311077000E3,5.841635068E1 +1.311358000E3,5.536029260E1 +1.311601000E3,5.555523834E1 +1.311895000E3,5.637714479E1 +1.312195000E3,5.253312652E1 +1.312445000E3,5.377927694E1 +1.312696000E3,5.757954833E1 +1.313038000E3,5.500733438E1 +1.313282000E3,5.367385274E1 +1.313558000E3,5.610715122E1 +1.313797000E3,5.528556803E1 +1.314063000E3,5.884958532E1 +1.314412000E3,5.458036035E1 +1.314671000E3,5.765344335E1 +1.314945000E3,5.139756723E1 +1.315223000E3,5.546002517E1 +1.315503000E3,5.608276603E1 +1.315733000E3,5.719791479E1 +1.315986000E3,5.413888898E1 +1.316329000E3,5.789500166E1 +1.316579000E3,5.404086097E1 +1.316819000E3,6.021843554E1 +1.317067000E3,5.929690830E1 +1.317365000E3,6.066063258E1 +1.317666000E3,5.465341745E1 +1.317917000E3,5.115712079E1 +1.318169000E3,4.986479689E1 +1.318470000E3,5.351977371E1 +1.318716000E3,5.614277654E1 +1.318987000E3,5.824140620E1 +1.319280000E3,5.863858703E1 +1.319646000E3,5.908977231E1 +1.319902000E3,5.867594430E1 +1.320142000E3,5.256185028E1 +1.320379000E3,5.916248935E1 +1.320672000E3,5.829134786E1 +1.320910000E3,5.729121950E1 +1.321203000E3,5.817253701E1 +1.321434000E3,5.958327052E1 +1.321726000E3,6.109571062E1 +1.321963000E3,6.309400740E1 +1.322263000E3,6.381431561E1 +1.322586000E3,6.124594205E1 +1.322839000E3,6.120886427E1 +1.323128000E3,5.624496406E1 +1.323377000E3,6.205845751E1 +1.323676000E3,6.248705287E1 +1.323968000E3,6.259357777E1 +1.324217000E3,6.168308921E1 +1.324496000E3,6.128297543E1 +1.324731000E3,5.975404370E1 +1.325024000E3,6.147148959E1 +1.325261000E3,6.101142333E1 +1.325573000E3,5.682124874E1 +1.325854000E3,5.869490284E1 +1.326149000E3,5.646663249E1 +1.326392000E3,5.662110608E1 +1.326643000E3,5.067702480E1 +1.326984000E3,5.759763927E1 +1.327264000E3,5.613584630E1 +1.327489000E3,5.826097161E1 +1.327735000E3,5.843702691E1 +1.328012000E3,5.352317094E1 +1.328253000E3,5.737674501E1 +1.328545000E3,5.736811408E1 +1.328911000E3,5.477233671E1 +1.329158000E3,5.481436604E1 +1.329403000E3,4.974322484E1 +1.329645000E3,5.490077996E1 +1.329890000E3,4.870505425E1 +1.330144000E3,4.955972956E1 +1.330428000E3,5.470042727E1 +1.330734000E3,5.618884112E1 +1.331026000E3,5.238151215E1 +1.331265000E3,5.344428978E1 +1.331515000E3,5.051963956E1 +1.331772000E3,5.068574448E1 +1.332120000E3,5.754233113E1 +1.332409000E3,5.498832674E1 +1.332740000E3,5.245036701E1 +1.333034000E3,5.885934606E1 +1.333286000E3,5.644915657E1 +1.333540000E3,5.532779852E1 +1.333784000E3,5.694511409E1 +1.334028000E3,5.553937724E1 +1.334302000E3,5.308286554E1 +1.334615000E3,5.140154995E1 +1.334876000E3,5.045296543E1 +1.335187000E3,5.631993217E1 +1.335451000E3,5.435091016E1 +1.335722000E3,5.624357652E1 +1.335986000E3,5.791043400E1 +1.336271000E3,5.847603086E1 +1.336545000E3,5.757219882E1 +1.336794000E3,6.070042624E1 +1.337072000E3,5.247827017E1 +1.337340000E3,5.208145921E1 +1.337609000E3,6.026756153E1 +1.337870000E3,6.012826199E1 +1.338134000E3,5.465450317E1 +1.338408000E3,5.768658418E1 +1.338755000E3,5.542991210E1 +1.339019000E3,5.279974580E1 +1.339289000E3,4.966927449E1 +1.339556000E3,4.563713389E1 +1.339804000E3,4.961972315E1 +1.340056000E3,5.287436972E1 +1.340316000E3,5.318950925E1 +1.340586000E3,5.037908496E1 +1.340881000E3,5.345184090E1 +1.341116000E3,5.016784238E1 +1.341407000E3,5.799295151E1 +1.341694000E3,5.875659808E1 +1.342051000E3,5.666657228E1 +1.342345000E3,5.241270038E1 +1.342638000E3,5.754780266E1 +1.342875000E3,5.669750570E1 +1.343177000E3,5.541629106E1 +1.343432000E3,5.556249818E1 +1.343726000E3,5.603182587E1 +1.343969000E3,5.961525777E1 +1.344257000E3,5.915223521E1 +1.344498000E3,5.820677933E1 +1.344777000E3,5.815031326E1 +1.345094000E3,5.733094423E1 +1.345363000E3,5.538469317E1 +1.345622000E3,6.270903439E1 +1.345877000E3,5.551461514E1 +1.346148000E3,5.750063996E1 +1.346395000E3,5.473739655E1 +1.346676000E3,5.131350753E1 +1.346958000E3,5.072615719E1 +1.347258000E3,4.882711207E1 +1.347518000E3,5.273988371E1 +1.347784000E3,6.269937361E1 +1.348040000E3,6.058958657E1 +1.348391000E3,5.894445662E1 +1.348716000E3,5.683213923E1 +1.348984000E3,5.875140523E1 +1.349236000E3,5.263650529E1 +1.349491000E3,4.630287352E1 +1.349847000E3,5.742006494E1 +1.350115000E3,6.486179330E1 +1.350358000E3,5.963871460E1 +1.350612000E3,5.220281373E1 +1.350868000E3,5.825229613E1 +1.351125000E3,5.822075100E1 +1.351374000E3,5.487419692E1 +1.351666000E3,5.461361208E1 +1.351934000E3,5.384511910E1 +1.352185000E3,5.782109838E1 +1.352440000E3,5.156901690E1 +1.352688000E3,5.262530942E1 +1.352990000E3,5.827406705E1 +1.353265000E3,6.164230870E1 +1.353493000E3,5.939319367E1 +1.353769000E3,5.491407227E1 +1.353989000E3,5.363390940E1 +1.354236000E3,5.108497673E1 +1.354516000E3,6.129017752E1 +1.354836000E3,5.594784457E1 +1.355095000E3,5.172378417E1 +1.355422000E3,5.975901259E1 +1.355685000E3,5.720857994E1 +1.355941000E3,5.600667557E1 +1.356197000E3,5.471836828E1 +1.356478000E3,5.319452565E1 +1.356745000E3,5.296912594E1 +1.357013000E3,5.811625635E1 +1.357280000E3,5.430511038E1 +1.357577000E3,5.277700001E1 +1.357824000E3,5.616769978E1 +1.358135000E3,5.406396803E1 +1.358401000E3,4.910300122E1 +1.358643000E3,5.077236009E1 +1.358892000E3,5.530877446E1 +1.359206000E3,5.787482939E1 +1.359485000E3,5.846197249E1 +1.359760000E3,6.103303991E1 +1.360055000E3,6.092009186E1 +1.360296000E3,5.979156049E1 +1.360590000E3,6.049263298E1 +1.360828000E3,5.895545308E1 +1.361114000E3,5.611946421E1 +1.361473000E3,5.480295831E1 +1.361726000E3,5.397626184E1 +1.361972000E3,5.443193027E1 +1.362314000E3,5.572591927E1 +1.362560000E3,5.224616115E1 +1.362808000E3,5.244486023E1 +1.363061000E3,5.179430466E1 +1.363307000E3,5.228822629E1 +1.363555000E3,5.248152719E1 +1.363850000E3,5.310816898E1 +1.364115000E3,5.586433987E1 +1.364397000E3,5.735023043E1 +1.364703000E3,6.002405491E1 +1.364950000E3,5.692273216E1 +1.365192000E3,5.941823705E1 +1.365459000E3,5.316793659E1 +1.365709000E3,5.869878442E1 +1.365953000E3,5.756526572E1 +1.366216000E3,5.687574379E1 +1.366491000E3,5.232478004E1 +1.366744000E3,5.424491879E1 +1.367001000E3,5.235481979E1 +1.367305000E3,5.164783122E1 +1.367588000E3,4.924997634E1 +1.367934000E3,4.924339558E1 +1.368196000E3,5.793398832E1 +1.368473000E3,5.529211657E1 +1.368719000E3,5.120874356E1 +1.368963000E3,5.470742612E1 +1.369285000E3,5.560989240E1 +1.369528000E3,5.197646059E1 +1.369822000E3,5.152328490E1 +1.370111000E3,5.791930576E1 +1.370416000E3,5.368811562E1 +1.370672000E3,5.769124019E1 +1.370919000E3,5.333549653E1 +1.371292000E3,5.847056292E1 +1.371551000E3,5.642894477E1 +1.371803000E3,5.817537921E1 +1.372074000E3,5.885584750E1 +1.372335000E3,5.395474736E1 +1.372602000E3,5.211537518E1 +1.372880000E3,4.924374923E1 +1.373126000E3,4.882665291E1 +1.373379000E3,5.483140316E1 +1.373636000E3,5.380197532E1 +1.373915000E3,5.629967483E1 +1.374251000E3,5.773524892E1 +1.374636000E3,6.271253195E1 +1.374894000E3,5.870587143E1 +1.375125000E3,5.496954916E1 +1.375369000E3,5.621931219E1 +1.375641000E3,5.700323462E1 +1.375912000E3,5.808968856E1 +1.376161000E3,5.697587873E1 +1.376437000E3,5.739415600E1 +1.376687000E3,5.874614285E1 +1.376941000E3,5.855325473E1 +1.377252000E3,5.287324040E1 +1.377495000E3,5.331405656E1 +1.377862000E3,5.163612814E1 +1.378109000E3,6.003152631E1 +1.378372000E3,6.448039849E1 +1.378641000E3,6.226927373E1 +1.378912000E3,6.355904277E1 +1.379208000E3,6.121718755E1 +1.379463000E3,6.371699462E1 +1.379738000E3,5.774542440E1 +1.380076000E3,5.579766677E1 +1.380318000E3,5.520595979E1 +1.380614000E3,5.395000262E1 +1.380855000E3,5.263752401E1 +1.381221000E3,5.267030150E1 +1.381492000E3,5.304251562E1 +1.381793000E3,4.959737221E1 +1.382100000E3,5.549829026E1 +1.382347000E3,5.821584994E1 +1.382642000E3,5.861199323E1 +1.382905000E3,5.256382895E1 +1.383164000E3,5.491877459E1 +1.383443000E3,5.644995893E1 +1.383702000E3,5.411249990E1 +1.383954000E3,5.324738213E1 +1.384305000E3,5.625052210E1 +1.384532000E3,6.070474662E1 +1.384789000E3,5.237062704E1 +1.385074000E3,5.442107865E1 +1.385361000E3,6.017483878E1 +1.385605000E3,6.237555822E1 +1.385869000E3,5.605951782E1 +1.386126000E3,6.511151133E1 +1.386382000E3,5.571785683E1 +1.386696000E3,5.398201636E1 +1.386954000E3,5.323734283E1 +1.387264000E3,5.635686029E1 +1.387623000E3,5.701357512E1 +1.387874000E3,5.632095063E1 +1.388187000E3,5.288354031E1 +1.388477000E3,5.152350906E1 +1.388761000E3,5.130627857E1 +1.388982000E3,4.918436870E1 +1.389239000E3,5.567775637E1 +1.389545000E3,5.465238648E1 +1.389786000E3,5.003079725E1 +1.390027000E3,5.504486936E1 +1.390282000E3,5.947272344E1 +1.390539000E3,6.106137952E1 +1.390892000E3,5.985290475E1 +1.391203000E3,5.500825546E1 +1.391507000E3,5.157102239E1 +1.391806000E3,5.517662265E1 +1.392108000E3,5.349243854E1 +1.392411000E3,5.386652866E1 +1.392707000E3,5.258839734E1 +1.392973000E3,5.376638351E1 +1.393221000E3,5.619475880E1 +1.393480000E3,5.846509931E1 +1.393767000E3,6.504346680E1 +1.394122000E3,5.865804348E1 +1.394392000E3,5.055217311E1 +1.394673000E3,4.837306759E1 +1.394931000E3,5.564689750E1 +1.395193000E3,5.416088817E1 +1.395489000E3,5.481584764E1 +1.395781000E3,5.356143065E1 +1.396078000E3,5.074158934E1 +1.396313000E3,5.177896206E1 +1.396618000E3,5.670327312E1 +1.396914000E3,6.043149132E1 +1.397246000E3,5.875453471E1 +1.397559000E3,5.725772305E1 +1.397842000E3,5.610169288E1 +1.398092000E3,6.098127982E1 +1.398354000E3,5.385330985E1 +1.398611000E3,5.345613584E1 +1.398873000E3,6.183897473E1 +1.399135000E3,5.898294985E1 +1.399399000E3,5.644599073E1 +1.399662000E3,6.288338842E1 +1.399923000E3,5.844786233E1 +1.400178000E3,6.145207907E1 +1.400438000E3,5.797678971E1 +1.400786000E3,5.805590691E1 +1.401082000E3,5.956739883E1 +1.401323000E3,5.537900496E1 +1.401618000E3,5.084213917E1 +1.401871000E3,4.807017206E1 +1.402118000E3,5.545233073E1 +1.402411000E3,5.516036366E1 +1.402644000E3,5.413431379E1 +1.402920000E3,5.388857626E1 +1.403209000E3,5.292068844E1 +1.403479000E3,5.775211983E1 +1.403718000E3,5.117484548E1 +1.404045000E3,5.912447648E1 +1.404295000E3,5.591921957E1 +1.404568000E3,5.565028551E1 +1.404828000E3,5.013398992E1 +1.405122000E3,5.465164253E1 +1.405364000E3,5.305211462E1 +1.405620000E3,5.755171154E1 +1.405929000E3,6.007655449E1 +1.406174000E3,5.899920387E1 +1.406463000E3,5.970773629E1 +1.406720000E3,5.770443308E1 +1.407009000E3,5.521297881E1 +1.407407000E3,5.604277064E1 +1.407677000E3,5.646208540E1 +1.407969000E3,4.906112006E1 +1.408239000E3,5.193830101E1 +1.408558000E3,4.835599484E1 +1.408830000E3,4.864558507E1 +1.409087000E3,5.566138381E1 +1.409349000E3,5.240816417E1 +1.409604000E3,4.366169359E1 +1.409843000E3,4.924613485E1 +1.410167000E3,5.289541091E1 +1.410462000E3,5.429333459E1 +1.410857000E3,5.232803186E1 +1.411115000E3,5.279391543E1 +1.411388000E3,5.698112108E1 +1.411689000E3,4.954635028E1 +1.411940000E3,5.347151392E1 +1.412202000E3,5.431542928E1 +1.412461000E3,5.708654506E1 +1.412712000E3,5.999867781E1 +1.412972000E3,5.836713300E1 +1.413243000E3,5.662529411E1 +1.413547000E3,5.760118844E1 +1.413790000E3,5.272334048E1 +1.414155000E3,5.585703000E1 +1.414407000E3,5.277217169E1 +1.414666000E3,5.575617717E1 +1.414970000E3,5.588142009E1 +1.415263000E3,5.043609445E1 +1.415519000E3,5.366091219E1 +1.415818000E3,6.729065738E1 +1.416082000E3,5.454700058E1 +1.416357000E3,5.542836481E1 +1.416608000E3,6.150002805E1 +1.416870000E3,5.918799699E1 +1.417164000E3,5.739551304E1 +1.417548000E3,5.312046747E1 +1.417864000E3,5.735989692E1 +1.418111000E3,5.463708503E1 +1.418368000E3,5.616594485E1 +1.418622000E3,5.674613857E1 +1.418880000E3,5.393284238E1 +1.419178000E3,5.477989298E1 +1.419414000E3,5.673628135E1 +1.419692000E3,5.246670124E1 +1.419935000E3,5.929492524E1 +1.420173000E3,5.718550468E1 +1.420417000E3,5.597503360E1 +1.420745000E3,5.209811810E1 +1.421016000E3,5.108820023E1 +1.421271000E3,5.704928631E1 +1.421524000E3,5.534619134E1 +1.421787000E3,5.298830069E1 +1.422048000E3,5.357926773E1 +1.422324000E3,5.150193558E1 +1.422590000E3,5.236977243E1 +1.422860000E3,5.598534631E1 +1.423111000E3,5.804712890E1 +1.423360000E3,5.584477369E1 +1.423617000E3,6.166819052E1 +1.423956000E3,6.217862533E1 +1.424239000E3,6.474885215E1 +1.424493000E3,6.561094566E1 +1.424771000E3,6.624921272E1 +1.425013000E3,6.269332683E1 +1.425310000E3,6.427501900E1 +1.425550000E3,6.406421996E1 +1.425806000E3,6.561696377E1 +1.426124000E3,5.757984813E1 +1.426392000E3,6.467113265E1 +1.426661000E3,6.110360998E1 +1.426971000E3,6.257935575E1 +1.427325000E3,6.059948571E1 +1.427600000E3,6.060080967E1 +1.427858000E3,6.129065918E1 +1.428157000E3,6.869907238E1 +1.428403000E3,6.216021300E1 +1.428668000E3,6.028715826E1 +1.428917000E3,5.215970407E1 +1.429175000E3,5.348756082E1 +1.429445000E3,5.866879342E1 +1.429775000E3,5.422412762E1 +1.430077000E3,5.967912654E1 +1.430370000E3,6.053958419E1 +1.430696000E3,5.642153628E1 +1.430959000E3,5.797803369E1 +1.431217000E3,5.265853131E1 +1.431545000E3,6.085541328E1 +1.431825000E3,6.579757863E1 +1.432095000E3,6.783858113E1 +1.432356000E3,6.680245969E1 +1.432609000E3,5.699539434E1 +1.432887000E3,5.495476405E1 +1.433146000E3,5.431336982E1 +1.433405000E3,5.468573805E1 +1.433768000E3,6.415525931E1 +1.434037000E3,5.996195649E1 +1.434305000E3,5.880144898E1 +1.434536000E3,5.062803370E1 +1.434794000E3,4.838886892E1 +1.435059000E3,4.852598648E1 +1.435348000E3,5.424758091E1 +1.435611000E3,6.028120001E1 +1.435845000E3,5.860165153E1 +1.436098000E3,5.820116177E1 +1.436348000E3,5.458976108E1 +1.436603000E3,5.748661459E1 +1.436983000E3,5.071157707E1 +1.437230000E3,5.187454119E1 +1.437505000E3,5.690962542E1 +1.437744000E3,5.898297949E1 +1.438006000E3,6.083548120E1 +1.438278000E3,4.929702369E1 +1.438556000E3,5.094464024E1 +1.438857000E3,5.451803318E1 +1.439157000E3,4.851675588E1 +1.439427000E3,4.781325912E1 +1.439724000E3,4.919544886E1 +1.439968000E3,4.662525194E1 +1.440374000E3,4.187537091E1 +1.440620000E3,5.083424523E1 +1.440895000E3,4.476479772E1 +1.441179000E3,5.236126827E1 +1.441495000E3,4.954212438E1 +1.441772000E3,5.444261950E1 +1.442048000E3,5.023278537E1 +1.442273000E3,4.640707667E1 +1.442557000E3,5.088583460E1 +1.442822000E3,5.041471443E1 +1.443067000E3,4.940152653E1 +1.443315000E3,4.834999124E1 +1.443550000E3,5.084173145E1 +1.443802000E3,4.674944421E1 +1.444118000E3,5.005548854E1 +1.444412000E3,4.880222753E1 +1.444695000E3,4.829349493E1 +1.444948000E3,4.815408858E1 +1.445231000E3,4.968297573E1 +1.445471000E3,5.263069989E1 +1.445763000E3,4.570389774E1 +1.446062000E3,4.674284816E1 +1.446364000E3,5.179136771E1 +1.446637000E3,5.007894257E1 +1.446884000E3,5.001285233E1 +1.447102000E3,5.063641057E1 +1.447373000E3,4.164946286E1 +1.447601000E3,3.981108666E1 +1.447894000E3,4.316358072E1 +1.448132000E3,5.465701871E1 +1.448431000E3,4.615144027E1 +1.448672000E3,4.353154230E1 +1.448965000E3,5.208221965E1 +1.449200000E3,5.530439334E1 +1.449496000E3,4.996075498E1 +1.449729000E3,5.218941020E1 +1.450060000E3,4.888890123E1 +1.450335000E3,5.030971329E1 +1.450629000E3,5.012870067E1 +1.450899000E3,4.847297804E1 +1.451151000E3,4.759762696E1 +1.451454000E3,4.978926902E1 +1.451751000E3,4.930919072E1 +1.452001000E3,5.004861581E1 +1.452285000E3,5.051309266E1 +1.452566000E3,4.810890055E1 +1.452826000E3,4.654354865E1 +1.453069000E3,4.761425190E1 +1.453369000E3,4.589508435E1 +1.453616000E3,4.954922405E1 +1.453886000E3,4.065983258E1 +1.454197000E3,4.220647307E1 +1.454513000E3,4.858310714E1 +1.454789000E3,5.196405012E1 +1.455012000E3,5.467685341E1 +1.455262000E3,5.753332593E1 +1.455513000E3,4.707036048E1 +1.455859000E3,3.942826471E1 +1.456237000E3,5.170062203E1 +1.456495000E3,6.022707597E1 +1.456743000E3,5.524301158E1 +1.456990000E3,5.482834451E1 +1.457257000E3,4.917995293E1 +1.457590000E3,4.739340640E1 +1.457831000E3,4.842051754E1 +1.458073000E3,6.166669432E1 +1.458329000E3,5.427876580E1 +1.458617000E3,4.896037674E1 +1.458889000E3,4.346397471E1 +1.459122000E3,4.481546196E1 +1.459424000E3,5.149740630E1 +1.459726000E3,4.614214660E1 +1.459975000E3,4.567227587E1 +1.460237000E3,5.348774305E1 +1.460488000E3,5.617792493E1 +1.460730000E3,5.122937085E1 +1.460971000E3,5.712815616E1 +1.461266000E3,5.592815325E1 +1.461504000E3,5.208026338E1 +1.461798000E3,5.368936290E1 +1.462033000E3,5.424431898E1 +1.462332000E3,5.229538114E1 +1.462686000E3,5.012562607E1 +1.462943000E3,5.517893002E1 +1.463292000E3,5.544440679E1 +1.463574000E3,5.195225561E1 +1.463851000E3,5.582804772E1 +1.464133000E3,5.163717454E1 +1.464392000E3,5.056978371E1 +1.464653000E3,5.085736348E1 +1.464931000E3,5.111025552E1 +1.465171000E3,5.008163028E1 +1.465468000E3,5.204681239E1 +1.465721000E3,4.873162615E1 +1.466070000E3,5.052420662E1 +1.466365000E3,5.115431116E1 +1.466626000E3,5.008089225E1 +1.466902000E3,5.455907242E1 +1.467123000E3,5.881328519E1 +1.467422000E3,5.654049662E1 +1.467665000E3,6.208900398E1 +1.467911000E3,5.573620080E1 +1.468210000E3,5.034178452E1 +1.468461000E3,4.644884091E1 +1.468716000E3,4.489036287E1 +1.469021000E3,4.555962209E1 +1.469437000E3,4.956164087E1 +1.469733000E3,5.014140659E1 +1.469995000E3,5.025508197E1 +1.470298000E3,4.976482928E1 +1.470552000E3,4.666552600E1 +1.470801000E3,5.164800320E1 +1.471107000E3,4.748865751E1 +1.471358000E3,5.068455306E1 +1.471623000E3,5.380657492E1 +1.471874000E3,4.918332364E1 +1.472155000E3,4.974368594E1 +1.472539000E3,5.519550202E1 +1.472795000E3,5.119649457E1 +1.473056000E3,5.406344748E1 +1.473370000E3,5.554928156E1 +1.473655000E3,5.458007948E1 +1.473895000E3,5.519923804E1 +1.474152000E3,5.580016483E1 +1.474437000E3,5.718813696E1 +1.474685000E3,5.734393611E1 +1.474960000E3,5.879862387E1 +1.475221000E3,5.602300215E1 +1.475474000E3,5.025640835E1 +1.475826000E3,5.543439402E1 +1.476071000E3,5.232164352E1 +1.476323000E3,5.898115961E1 +1.476584000E3,6.066467981E1 +1.476821000E3,5.071984472E1 +1.477123000E3,5.740447565E1 +1.477365000E3,5.959782608E1 +1.477662000E3,5.958620190E1 +1.477906000E3,5.753388342E1 +1.478144000E3,5.506848886E1 +1.478455000E3,5.769430513E1 +1.478723000E3,5.629679592E1 +1.478987000E3,5.649495967E1 +1.479262000E3,5.787253729E1 +1.479512000E3,5.216150167E1 +1.479813000E3,4.948302212E1 +1.480088000E3,5.080056078E1 +1.480342000E3,4.734041467E1 +1.480601000E3,4.440736689E1 +1.480866000E3,5.120725270E1 +1.481166000E3,5.053254929E1 +1.481466000E3,5.274685420E1 +1.481724000E3,5.071521067E1 +1.481973000E3,5.225995741E1 +1.482300000E3,5.133897759E1 +1.482575000E3,5.007250383E1 +1.482845000E3,5.042400131E1 +1.483101000E3,5.258901014E1 +1.483408000E3,5.618504625E1 +1.483668000E3,5.503349900E1 +1.483933000E3,4.974702245E1 +1.484194000E3,5.170781389E1 +1.484440000E3,5.072340799E1 +1.484707000E3,5.947536199E1 +1.485018000E3,5.467515596E1 +1.485306000E3,6.085614245E1 +1.485656000E3,5.990152864E1 +1.485935000E3,5.602550586E1 +1.486168000E3,5.561766537E1 +1.486422000E3,5.350876804E1 +1.486701000E3,5.699979875E1 +1.486960000E3,5.177464585E1 +1.487207000E3,5.249766501E1 +1.487486000E3,5.285366750E1 +1.487751000E3,5.316768095E1 +1.488002000E3,4.876639606E1 +1.488262000E3,5.179834313E1 +1.488516000E3,4.991892364E1 +1.488812000E3,5.156353661E1 +1.489125000E3,5.341434219E1 +1.489400000E3,5.426211096E1 +1.489675000E3,4.699672779E1 +1.489958000E3,5.361914521E1 +1.490219000E3,5.605827819E1 +1.490490000E3,5.089547448E1 +1.490772000E3,5.163564337E1 +1.491061000E3,5.841576784E1 +1.491309000E3,5.524417730E1 +1.491589000E3,5.450558122E1 +1.491873000E3,5.581032480E1 +1.492194000E3,5.802352567E1 +1.492448000E3,4.962366630E1 +1.492810000E3,5.873656508E1 +1.493058000E3,5.690804947E1 +1.493359000E3,5.262261274E1 +1.493674000E3,5.584655342E1 +1.493919000E3,5.542283425E1 +1.494163000E3,5.373884310E1 +1.494412000E3,5.084083433E1 +1.494678000E3,4.964027690E1 +1.494956000E3,5.125570040E1 +1.495204000E3,5.194895191E1 +1.495526000E3,4.961412488E1 +1.495784000E3,4.972405818E1 +1.496036000E3,4.777083448E1 +1.496283000E3,5.231556692E1 +1.496593000E3,5.894066851E1 +1.496842000E3,6.007182772E1 +1.497086000E3,6.003234807E1 +1.497358000E3,5.170627362E1 +1.497682000E3,5.564688341E1 +1.497937000E3,5.459086103E1 +1.498234000E3,5.654462748E1 +1.498530000E3,5.643601391E1 +1.498887000E3,5.593732695E1 +1.499182000E3,5.279859883E1 +1.499469000E3,5.063056157E1 +1.499723000E3,4.846330641E1 +1.499972000E3,5.696559719E1 +1.500236000E3,5.806291630E1 +1.500555000E3,5.485435177E1 +1.500851000E3,5.386376671E1 +1.501120000E3,5.529102258E1 +1.501400000E3,5.058415032E1 +1.501675000E3,5.420960743E1 +1.501928000E3,4.962388553E1 +1.502263000E3,5.167692375E1 +1.502567000E3,5.072695334E1 +1.502878000E3,5.319678523E1 +1.503119000E3,5.961199300E1 +1.503369000E3,5.299728366E1 +1.503631000E3,5.369404965E1 +1.503941000E3,5.426817134E1 +1.504209000E3,5.369336762E1 +1.504462000E3,5.246626497E1 +1.504724000E3,5.358557871E1 +1.505015000E3,4.957781391E1 +1.505279000E3,5.117668163E1 +1.505699000E3,5.216401891E1 +1.505963000E3,5.011348657E1 +1.506261000E3,5.259055540E1 +1.506507000E3,4.579432510E1 +1.506795000E3,4.877099475E1 +1.507032000E3,4.679595596E1 +1.507314000E3,5.136222565E1 +1.507549000E3,5.267101191E1 +1.507792000E3,5.244999525E1 +1.508074000E3,5.180561005E1 +1.508391000E3,5.030990700E1 +1.508607000E3,5.167226321E1 +1.508859000E3,5.218207738E1 +1.509151000E3,5.317725961E1 +1.509397000E3,5.318899610E1 +1.509689000E3,4.978257152E1 +1.509934000E3,5.032443800E1 +1.510228000E3,4.777293014E1 +1.510466000E3,4.646316587E1 +1.510767000E3,5.646850943E1 +1.511001000E3,5.638889819E1 +1.511293000E3,5.773758842E1 +1.511610000E3,5.580372922E1 +1.511900000E3,5.517502050E1 +1.512151000E3,5.684013484E1 +1.512393000E3,5.407249321E1 +1.512652000E3,5.725430710E1 +1.512902000E3,5.755876004E1 +1.513148000E3,5.492786930E1 +1.513404000E3,5.665177401E1 +1.513705000E3,5.675683028E1 +1.513957000E3,5.845897420E1 +1.514258000E3,5.334537973E1 +1.514488000E3,5.035361876E1 +1.514812000E3,4.886526824E1 +1.515059000E3,5.555156669E1 +1.515357000E3,5.401240780E1 +1.515600000E3,5.191330713E1 +1.515873000E3,5.158089375E1 +1.516102000E3,5.397456219E1 +1.516410000E3,5.205317520E1 +1.516679000E3,5.689433829E1 +1.516971000E3,5.397466306E1 +1.517230000E3,5.553699481E1 +1.517504000E3,5.550832571E1 +1.517763000E3,5.490604036E1 +1.518130000E3,5.129555301E1 +1.518403000E3,5.478479772E1 +1.518670000E3,5.687403653E1 +1.518921000E3,5.464295853E1 +1.519177000E3,5.713561839E1 +1.519461000E3,5.306473622E1 +1.519745000E3,5.320579073E1 +1.520002000E3,5.309385307E1 +1.520258000E3,5.058967996E1 +1.520552000E3,5.470724085E1 +1.520793000E3,5.303104936E1 +1.521156000E3,5.432496893E1 +1.521453000E3,5.594215604E1 +1.521721000E3,5.308545736E1 +1.521969000E3,5.327888421E1 +1.522220000E3,5.030915333E1 +1.522490000E3,5.230098434E1 +1.522776000E3,4.743827766E1 +1.523026000E3,5.464211349E1 +1.523327000E3,5.322537523E1 +1.523581000E3,5.154569729E1 +1.523826000E3,5.335950152E1 +1.524133000E3,5.482016506E1 +1.524417000E3,5.825411535E1 +1.524853000E3,5.879893849E1 +1.525179000E3,5.728744863E1 +1.525433000E3,5.737571640E1 +1.525696000E3,5.681107869E1 +1.525950000E3,5.695921586E1 +1.526210000E3,5.455429607E1 +1.526487000E3,5.808007225E1 +1.526729000E3,5.500512440E1 +1.527042000E3,5.476260812E1 +1.527339000E3,5.849962899E1 +1.527579000E3,5.719021529E1 +1.527910000E3,5.422226824E1 +1.528160000E3,5.266147572E1 +1.528411000E3,5.030747323E1 +1.528675000E3,5.057502492E1 +1.528920000E3,5.365292462E1 +1.529175000E3,5.444435151E1 +1.529423000E3,5.586906556E1 +1.529732000E3,5.808239082E1 +1.530030000E3,5.492304678E1 +1.530283000E3,5.727734117E1 +1.530542000E3,5.518682809E1 +1.530805000E3,5.838179726E1 +1.531133000E3,5.619103982E1 +1.531448000E3,5.705771680E1 +1.531738000E3,5.605732573E1 +1.531987000E3,5.497746164E1 +1.532293000E3,5.570350387E1 +1.532602000E3,5.687942595E1 +1.532873000E3,5.590365459E1 +1.533132000E3,5.379832162E1 +1.533387000E3,5.951317374E1 +1.533654000E3,5.728034638E1 +1.533915000E3,5.755019099E1 +1.534163000E3,5.625336618E1 +1.534512000E3,5.560455999E1 +1.534783000E3,5.186395468E1 +1.535086000E3,6.018952062E1 +1.535379000E3,5.360739703E1 +1.535619000E3,5.637744941E1 +1.535916000E3,5.710534601E1 +1.536153000E3,5.751101039E1 +1.536449000E3,5.888699469E1 +1.536688000E3,5.900809640E1 +1.536983000E3,5.539354346E1 +1.537218000E3,5.212761926E1 +1.537514000E3,6.113968309E1 +1.537773000E3,5.789795306E1 +1.538038000E3,6.065119472E1 +1.538356000E3,5.715251587E1 +1.538607000E3,5.728294892E1 +1.538911000E3,5.939537878E1 +1.539175000E3,5.879010449E1 +1.539417000E3,6.007594674E1 +1.539661000E3,5.983742076E1 +1.539908000E3,6.299497704E1 +1.540182000E3,6.042347696E1 +1.540457000E3,5.844914903E1 +1.540758000E3,5.775362746E1 +1.541037000E3,5.216165265E1 +1.541334000E3,5.255584969E1 +1.541593000E3,5.278098471E1 +1.541846000E3,5.581770981E1 +1.542092000E3,5.736301867E1 +1.542389000E3,5.733951694E1 +1.542623000E3,5.674705381E1 +1.542880000E3,5.506043774E1 +1.543125000E3,5.404728252E1 +1.543453000E3,5.428884791E1 +1.543732000E3,5.547580162E1 +1.544085000E3,5.471747417E1 +1.544346000E3,5.496243571E1 +1.544613000E3,5.288395526E1 +1.544860000E3,5.036194227E1 +1.545111000E3,5.124283852E1 +1.545413000E3,5.731432515E1 +1.545687000E3,5.663908688E1 +1.545955000E3,5.741659811E1 +1.546253000E3,5.084604561E1 +1.546502000E3,5.163330463E1 +1.546772000E3,4.777378739E1 +1.547025000E3,5.200725426E1 +1.547353000E3,5.049690945E1 +1.547625000E3,5.284766124E1 +1.547924000E3,5.396462244E1 +1.548148000E3,5.375524192E1 +1.548403000E3,5.670544075E1 +1.548716000E3,5.332369727E1 +1.548963000E3,5.544219871E1 +1.549238000E3,5.323430806E1 +1.549471000E3,5.180674965E1 +1.549727000E3,5.329467652E1 +1.550023000E3,5.080742485E1 +1.550310000E3,5.026906170E1 +1.550639000E3,5.582908231E1 +1.550905000E3,5.331150300E1 +1.551172000E3,5.186910180E1 +1.551471000E3,5.624561668E1 +1.551739000E3,5.555744845E1 +1.552012000E3,5.944044312E1 +1.552264000E3,6.002272858E1 +1.552531000E3,5.816546804E1 +1.552850000E3,5.936846960E1 +1.553097000E3,5.514794057E1 +1.553401000E3,5.160130424E1 +1.553757000E3,5.107783990E1 +1.554023000E3,5.871375450E1 +1.554276000E3,5.617325190E1 +1.554544000E3,5.736189521E1 +1.554800000E3,5.317828333E1 +1.555051000E3,5.715279916E1 +1.555321000E3,5.726931658E1 +1.555563000E3,5.567771069E1 +1.555823000E3,5.156101336E1 +1.556126000E3,5.688446569E1 +1.556378000E3,6.074118939E1 +1.556642000E3,5.974958265E1 +1.556918000E3,5.702757711E1 +1.557208000E3,5.874442787E1 +1.557457000E3,5.795683904E1 +1.557722000E3,6.039916355E1 +1.558025000E3,5.662755924E1 +1.558320000E3,5.332514547E1 +1.558595000E3,6.059700286E1 +1.558850000E3,5.775207016E1 +1.559098000E3,6.106988435E1 +1.559349000E3,6.039494527E1 +1.559644000E3,5.672405799E1 +1.559889000E3,5.814375710E1 +1.560135000E3,6.159401746E1 +1.560480000E3,5.397583636E1 +1.560770000E3,5.291692280E1 +1.561026000E3,5.439035965E1 +1.561320000E3,5.553984968E1 +1.561619000E3,5.808332247E1 +1.561927000E3,5.744100555E1 +1.562191000E3,5.636250023E1 +1.562451000E3,6.055150308E1 +1.562703000E3,5.624161562E1 +1.562979000E3,5.401048000E1 +1.563233000E3,5.588901558E1 +1.563595000E3,6.020828902E1 +1.563855000E3,6.586197618E1 +1.564143000E3,5.744692826E1 +1.564421000E3,5.175273280E1 +1.564681000E3,5.584828423E1 +1.564939000E3,5.622472521E1 +1.565190000E3,5.419184381E1 +1.565447000E3,4.818775863E1 +1.565701000E3,5.443344746E1 +1.565956000E3,4.960344337E1 +1.566224000E3,6.289868185E1 +1.566469000E3,6.499026885E1 +1.566794000E3,6.277031329E1 +1.567086000E3,5.336636778E1 +1.567405000E3,5.867761918E1 +1.567644000E3,5.135518394E1 +1.567909000E3,5.665720126E1 +1.568204000E3,5.915910399E1 +1.568455000E3,5.687790668E1 +1.568730000E3,5.815647569E1 +1.568976000E3,5.595761669E1 +1.569238000E3,5.367288589E1 +1.569491000E3,4.954593185E1 +1.569752000E3,5.199120702E1 +1.570099000E3,5.857172858E1 +1.570354000E3,5.533510860E1 +1.570614000E3,5.615291914E1 +1.570871000E3,4.816531300E1 +1.571136000E3,4.597509459E1 +1.571387000E3,5.454256971E1 +1.571722000E3,5.262076426E1 +1.572010000E3,5.108681545E1 +1.572285000E3,5.269091247E1 +1.572547000E3,4.898785412E1 +1.572807000E3,4.867008841E1 +1.573066000E3,5.306545801E1 +1.573313000E3,5.092331160E1 +1.573694000E3,5.549117670E1 +1.574009000E3,5.304099104E1 +1.574279000E3,5.377011563E1 +1.574520000E3,5.244694975E1 +1.574770000E3,5.542353961E1 +1.575031000E3,5.327330735E1 +1.575319000E3,5.123065406E1 +1.575617000E3,5.429517947E1 +1.575867000E3,5.443507599E1 +1.576132000E3,5.273613947E1 +1.576382000E3,5.717979407E1 +1.576705000E3,5.184816589E1 +1.576955000E3,4.851208329E1 +1.577250000E3,4.976440939E1 +1.577493000E3,5.236737582E1 +1.577737000E3,5.414723297E1 +1.577998000E3,5.490706774E1 +1.578342000E3,5.591011545E1 +1.578650000E3,5.689754115E1 +1.578906000E3,5.680987850E1 +1.579148000E3,5.379415708E1 +1.579394000E3,5.844713665E1 +1.579644000E3,4.927798375E1 +1.580006000E3,5.263100090E1 +1.580294000E3,5.410513055E1 +1.580548000E3,5.541047194E1 +1.580801000E3,5.058665778E1 +1.581070000E3,5.191468462E1 +1.581349000E3,4.623838572E1 +1.581601000E3,4.883886927E1 +1.581851000E3,4.951159763E1 +1.582152000E3,5.372806241E1 +1.582461000E3,4.077427406E1 +1.582742000E3,4.089897224E1 +1.582967000E3,4.661834708E1 +1.583330000E3,4.498181641E1 +1.583574000E3,4.413204165E1 +1.583835000E3,4.830731952E1 +1.584102000E3,5.133890730E1 +1.584385000E3,5.327819620E1 +1.584689000E3,5.148788947E1 +1.584935000E3,5.259351261E1 +1.585217000E3,5.210912674E1 +1.585449000E3,5.375523399E1 +1.585710000E3,5.030792675E1 +1.585957000E3,5.116594607E1 +1.586271000E3,5.729332409E1 +1.586601000E3,5.372439258E1 +1.586868000E3,5.283683191E1 +1.587111000E3,5.261490358E1 +1.587371000E3,5.394382083E1 +1.587617000E3,5.362104804E1 +1.587861000E3,5.192909002E1 +1.588111000E3,5.534291684E1 +1.588356000E3,5.529045875E1 +1.588616000E3,5.723903943E1 +1.588878000E3,5.769467674E1 +1.589116000E3,5.686991669E1 +1.589367000E3,5.472851050E1 +1.589709000E3,5.509501284E1 +1.589971000E3,6.218794924E1 +1.590276000E3,5.544714813E1 +1.590522000E3,5.587492513E1 +1.590770000E3,6.310127100E1 +1.591031000E3,6.016601681E1 +1.591331000E3,5.868635044E1 +1.591588000E3,5.739907262E1 +1.591847000E3,5.500154159E1 +1.592105000E3,5.382353142E1 +1.592358000E3,5.235465349E1 +1.592660000E3,5.432444683E1 +1.592979000E3,5.583837344E1 +1.593280000E3,5.890777444E1 +1.593531000E3,6.247008348E1 +1.593777000E3,5.524440051E1 +1.594082000E3,6.039849382E1 +1.594376000E3,5.779880973E1 +1.594616000E3,6.006977904E1 +1.594916000E3,6.157791897E1 +1.595158000E3,5.727348505E1 +1.595456000E3,6.219777130E1 +1.595702000E3,6.333776727E1 +1.596011000E3,6.315243887E1 +1.596287000E3,5.622487117E1 +1.596582000E3,4.999384026E1 +1.596838000E3,6.052096287E1 +1.597136000E3,5.730636753E1 +1.597383000E3,5.672770046E1 +1.597632000E3,5.282894107E1 +1.597943000E3,5.609826115E1 +1.598240000E3,5.950608691E1 +1.598483000E3,5.262580449E1 +1.598777000E3,5.638403375E1 +1.599039000E3,5.695994656E1 +1.599354000E3,5.595638462E1 +1.599677000E3,5.456948793E1 +1.599955000E3,5.641745933E1 +1.600254000E3,5.373490010E1 +1.600541000E3,5.613295480E1 +1.600824000E3,5.295628543E1 +1.601071000E3,5.036371368E1 +1.601313000E3,5.734560753E1 +1.601585000E3,5.869799540E1 +1.601832000E3,5.689867309E1 +1.602079000E3,5.521901034E1 +1.602376000E3,5.958743796E1 +1.602630000E3,5.697555749E1 +1.602881000E3,6.067520996E1 +1.603136000E3,6.296730837E1 +1.603381000E3,6.302345663E1 +1.603674000E3,5.614231839E1 +1.603920000E3,5.471880748E1 +1.604179000E3,6.025548138E1 +1.604432000E3,5.848975602E1 +1.604677000E3,6.051353275E1 +1.604988000E3,6.061163824E1 +1.605287000E3,5.127173554E1 +1.605535000E3,5.271948405E1 +1.605890000E3,5.457177629E1 +1.606143000E3,5.047420148E1 +1.606392000E3,5.197178768E1 +1.606684000E3,5.635777628E1 +1.606927000E3,5.691931577E1 +1.607165000E3,5.135114371E1 +1.607440000E3,5.173034620E1 +1.607734000E3,5.786109434E1 +1.607974000E3,5.620528212E1 +1.608236000E3,5.432552885E1 +1.608507000E3,5.036034087E1 +1.608763000E3,4.872303481E1 +1.609123000E3,5.516764205E1 +1.609377000E3,5.867465981E1 +1.609624000E3,5.634077767E1 +1.609869000E3,5.153316916E1 +1.610150000E3,5.212022412E1 +1.610428000E3,5.727395868E1 +1.610681000E3,5.443759521E1 +1.610944000E3,5.599199613E1 +1.611242000E3,5.709063131E1 +1.611495000E3,5.747461955E1 +1.611762000E3,5.445378087E1 +1.612040000E3,5.178206799E1 +1.612294000E3,5.347146008E1 +1.612548000E3,5.695533984E1 +1.612791000E3,5.852885666E1 +1.613050000E3,5.349710519E1 +1.613354000E3,5.482274130E1 +1.613598000E3,5.580201302E1 +1.613898000E3,5.533013655E1 +1.614151000E3,5.307302798E1 +1.614404000E3,5.034267096E1 +1.614651000E3,5.096368681E1 +1.614959000E3,5.358615730E1 +1.615202000E3,5.402822959E1 +1.615565000E3,5.173226008E1 +1.615815000E3,5.317238447E1 +1.616120000E3,5.490271856E1 +1.616406000E3,5.760350961E1 +1.616712000E3,5.516631401E1 +1.616950000E3,5.344247717E1 +1.617197000E3,5.105574764E1 +1.617480000E3,5.297874749E1 +1.617726000E3,5.181083735E1 +1.617978000E3,5.504462581E1 +1.618236000E3,5.652623382E1 +1.618484000E3,5.850281135E1 +1.618804000E3,5.207268405E1 +1.619061000E3,4.595989093E1 +1.619309000E3,5.832875112E1 +1.619574000E3,5.691639889E1 +1.619831000E3,5.277897330E1 +1.620092000E3,5.634285556E1 +1.620390000E3,5.782897026E1 +1.620660000E3,6.167326244E1 +1.620905000E3,5.736569246E1 +1.621145000E3,6.422841213E1 +1.621400000E3,6.037316593E1 +1.621649000E3,5.869946609E1 +1.622005000E3,6.007663283E1 +1.622308000E3,5.750286676E1 +1.622551000E3,5.315958033E1 +1.622849000E3,5.996646537E1 +1.623085000E3,6.310656156E1 +1.623382000E3,6.410911411E1 +1.623620000E3,6.559322950E1 +1.623914000E3,6.191537215E1 +1.624148000E3,6.509401862E1 +1.624441000E3,6.149444047E1 +1.624676000E3,5.887830140E1 +1.624914000E3,5.333395699E1 +1.625242000E3,5.080509527E1 +1.625531000E3,5.208999136E1 +1.625827000E3,4.936268455E1 +1.626072000E3,4.620940228E1 +1.626384000E3,4.812346411E1 +1.626678000E3,5.508818133E1 +1.626931000E3,5.929414420E1 +1.627193000E3,5.798382987E1 +1.627446000E3,5.695027340E1 +1.627690000E3,6.200547811E1 +1.627940000E3,5.895921781E1 +1.628278000E3,5.832121877E1 +1.628595000E3,5.727506493E1 +1.628914000E3,5.676841787E1 +1.629164000E3,5.904549933E1 +1.629453000E3,6.079247221E1 +1.629705000E3,5.978532207E1 +1.629973000E3,6.204876077E1 +1.630223000E3,6.278691878E1 +1.630527000E3,5.775584326E1 +1.630780000E3,5.715423799E1 +1.631076000E3,5.993810238E1 +1.631416000E3,5.945816984E1 +1.631690000E3,5.911038375E1 +1.631989000E3,6.401318161E1 +1.632251000E3,6.288325429E1 +1.632577000E3,6.142114348E1 +1.632857000E3,6.027735545E1 +1.633125000E3,6.058800698E1 +1.633410000E3,6.197295377E1 +1.633713000E3,5.649410931E1 +1.633983000E3,5.349526422E1 +1.634267000E3,5.160473432E1 +1.634550000E3,5.471426263E1 +1.634881000E3,5.381566790E1 +1.635145000E3,5.592472168E1 +1.635394000E3,5.502963456E1 +1.635636000E3,5.458091777E1 +1.635914000E3,5.361113418E1 +1.636211000E3,5.972112366E1 +1.636510000E3,6.134956919E1 +1.636770000E3,6.291498703E1 +1.637018000E3,6.051799303E1 +1.637272000E3,5.800319143E1 +1.637535000E3,6.099184952E1 +1.637791000E3,6.192072936E1 +1.638191000E3,5.592689657E1 +1.638462000E3,5.015193522E1 +1.638759000E3,5.662906295E1 +1.638997000E3,6.189212385E1 +1.639312000E3,5.656112303E1 +1.639618000E3,5.827187766E1 +1.639922000E3,5.894515280E1 +1.640188000E3,5.379936676E1 +1.640446000E3,5.498271927E1 +1.640705000E3,5.883708769E1 +1.641003000E3,5.515786146E1 +1.641329000E3,5.323855564E1 +1.641593000E3,5.000482182E1 +1.641876000E3,5.182077324E1 +1.642101000E3,5.319082569E1 +1.642344000E3,6.611850928E1 +1.642626000E3,5.190424983E1 +1.642867000E3,5.081734830E1 +1.643118000E3,5.711045841E1 +1.643458000E3,5.520016906E1 +1.643723000E3,5.247062228E1 +1.643997000E3,5.309157546E1 +1.644256000E3,5.339769460E1 +1.644621000E3,5.982216134E1 +1.644883000E3,5.915424673E1 +1.645133000E3,5.849263499E1 +1.645426000E3,5.826666974E1 +1.645723000E3,5.673329902E1 +1.645972000E3,5.580417722E1 +1.646244000E3,5.457004449E1 +1.646473000E3,5.835958867E1 +1.646716000E3,5.599398637E1 +1.646958000E3,5.928075116E1 +1.647232000E3,5.394053714E1 +1.647507000E3,5.853879118E1 +1.647858000E3,5.674494648E1 +1.648113000E3,5.640074652E1 +1.648414000E3,5.694867796E1 +1.648656000E3,5.573466688E1 +1.648962000E3,5.556104957E1 +1.649254000E3,5.770712773E1 +1.649548000E3,5.765349227E1 +1.649790000E3,5.583875333E1 +1.650054000E3,6.321152276E1 +1.650306000E3,5.966047080E1 +1.650600000E3,5.502015578E1 +1.650872000E3,5.066616477E1 +1.651172000E3,5.442335496E1 +1.651440000E3,5.956947456E1 +1.651736000E3,5.798320450E1 +1.651979000E3,5.739040713E1 +1.652228000E3,5.803662120E1 +1.652491000E3,6.146613872E1 +1.652750000E3,5.929116619E1 +1.653021000E3,5.936282359E1 +1.653288000E3,5.853226920E1 +1.653570000E3,5.954415072E1 +1.653872000E3,5.749576278E1 +1.654250000E3,5.567111200E1 +1.654518000E3,6.059415807E1 +1.654812000E3,5.855300274E1 +1.655081000E3,5.797601107E1 +1.655350000E3,6.029475669E1 +1.655647000E3,5.264118678E1 +1.655893000E3,5.715075800E1 +1.656153000E3,5.787679223E1 +1.656407000E3,6.038334743E1 +1.656655000E3,6.038245752E1 +1.656912000E3,5.475945603E1 +1.657171000E3,5.661674174E1 +1.657473000E3,5.618877186E1 +1.657717000E3,5.712918740E1 +1.657972000E3,5.834783502E1 +1.658283000E3,6.198115012E1 +1.658526000E3,5.639977894E1 +1.658788000E3,5.416850689E1 +1.659089000E3,5.679686188E1 +1.659335000E3,5.697270686E1 +1.659619000E3,5.371836804E1 +1.659873000E3,6.082252986E1 +1.660120000E3,6.285201132E1 +1.660416000E3,6.088574857E1 +1.660728000E3,6.109109391E1 +1.661004000E3,5.861240224E1 +1.661283000E3,6.123850168E1 +1.661519000E3,5.849447684E1 +1.661821000E3,5.472352136E1 +1.662065000E3,5.502625911E1 +1.662312000E3,5.606436387E1 +1.662565000E3,5.546236927E1 +1.662845000E3,6.075823181E1 +1.663075000E3,5.951357638E1 +1.663350000E3,5.956681026E1 +1.663575000E3,5.780116333E1 +1.663928000E3,6.184122024E1 +1.664178000E3,5.626291699E1 +1.664419000E3,5.635545931E1 +1.664671000E3,5.487242490E1 +1.664936000E3,5.392872477E1 +1.665237000E3,5.658170902E1 +1.665476000E3,5.449322435E1 +1.665752000E3,5.111063749E1 +1.665997000E3,5.288359358E1 +1.666249000E3,5.825102048E1 +1.666508000E3,6.087585373E1 +1.666750000E3,5.822210598E1 +1.667110000E3,6.320270923E1 +1.667355000E3,5.563170163E1 +1.667628000E3,5.240635194E1 +1.667875000E3,5.485055122E1 +1.668144000E3,5.590209292E1 +1.668402000E3,5.750031923E1 +1.668648000E3,5.301598344E1 +1.668896000E3,5.208077776E1 +1.669157000E3,5.024112467E1 +1.669414000E3,5.530220423E1 +1.669710000E3,5.585178295E1 +1.669955000E3,5.443268015E1 +1.670292000E3,5.292974908E1 +1.670566000E3,5.501741168E1 +1.670818000E3,5.190433464E1 +1.671077000E3,5.602388651E1 +1.671384000E3,5.384205522E1 +1.671688000E3,5.355394771E1 +1.671956000E3,4.896600257E1 +1.672212000E3,4.457728928E1 +1.672483000E3,5.407780485E1 +1.672726000E3,5.808535163E1 +1.672991000E3,5.497589856E1 +1.673269000E3,5.816061182E1 +1.673625000E3,5.457220472E1 +1.673896000E3,5.852786772E1 +1.674165000E3,5.615855966E1 +1.674439000E3,5.901141794E1 +1.674702000E3,5.821771493E1 +1.675040000E3,5.533746886E1 +1.675330000E3,5.469332456E1 +1.675631000E3,5.895976057E1 +1.675867000E3,5.565047570E1 +1.676161000E3,5.342216333E1 +1.676431000E3,5.339304237E1 +1.676716000E3,5.196130631E1 +1.677075000E3,5.500129023E1 +1.677346000E3,5.649474234E1 +1.677614000E3,5.620691351E1 +1.677867000E3,5.756400488E1 +1.678112000E3,5.571225073E1 +1.678362000E3,6.171466353E1 +1.678655000E3,5.523245256E1 +1.678909000E3,5.780473196E1 +1.679167000E3,5.918101801E1 +1.679536000E3,5.449831587E1 +1.679788000E3,5.278747036E1 +1.680072000E3,5.502423006E1 +1.680392000E3,5.603218813E1 +1.680667000E3,5.681691969E1 +1.680917000E3,5.574952817E1 +1.681227000E3,5.747793831E1 +1.681510000E3,5.831554727E1 +1.681811000E3,5.823344802E1 +1.682073000E3,5.677197169E1 +1.682402000E3,5.423243511E1 +1.682746000E3,5.568639423E1 +1.683007000E3,5.601571559E1 +1.683297000E3,5.788588795E1 +1.683563000E3,5.178162942E1 +1.683805000E3,5.244727762E1 +1.684102000E3,5.504021082E1 +1.684342000E3,5.312145782E1 +1.684637000E3,5.266466104E1 +1.684875000E3,5.430143327E1 +1.685171000E3,5.731848010E1 +1.685409000E3,5.314967575E1 +1.685703000E3,5.210480680E1 +1.685940000E3,5.447962472E1 +1.686242000E3,5.671930258E1 +1.686480000E3,5.298653153E1 +1.686837000E3,5.390672385E1 +1.687083000E3,5.256535993E1 +1.687387000E3,5.295433262E1 +1.687686000E3,4.693434793E1 +1.687930000E3,5.264001548E1 +1.688191000E3,4.696703102E1 +1.688514000E3,5.290693761E1 +1.688768000E3,5.572289252E1 +1.689025000E3,5.629476293E1 +1.689331000E3,5.221395629E1 +1.689585000E3,5.553268928E1 +1.689905000E3,5.392885939E1 +1.690136000E3,5.613018872E1 +1.690432000E3,5.323144022E1 +1.690690000E3,5.426457319E1 +1.690988000E3,5.869511223E1 +1.691244000E3,5.724931575E1 +1.691548000E3,5.702890727E1 +1.691819000E3,5.957894946E1 +1.692068000E3,5.833323285E1 +1.692367000E3,5.920896731E1 +1.692598000E3,5.809066040E1 +1.692847000E3,5.683194919E1 +1.693218000E3,5.880411413E1 +1.693536000E3,5.430005356E1 +1.693836000E3,5.347827494E1 +1.694082000E3,5.139526617E1 +1.694323000E3,6.486669482E1 +1.694607000E3,5.827670564E1 +1.694879000E3,5.749070135E1 +1.695112000E3,5.439297467E1 +1.695418000E3,5.591879208E1 +1.695720000E3,5.984156108E1 +1.695978000E3,5.763450389E1 +1.696238000E3,5.535113951E1 +1.696577000E3,5.468640858E1 +1.696840000E3,5.145216534E1 +1.697142000E3,5.633820526E1 +1.697434000E3,5.961813260E1 +1.697672000E3,5.761348305E1 +1.697970000E3,5.587832748E1 +1.698213000E3,5.615239979E1 +1.698514000E3,6.142159571E1 +1.698744000E3,5.868747140E1 +1.699038000E3,5.639074769E1 +1.699277000E3,5.843791784E1 +1.699602000E3,5.580904726E1 +1.699849000E3,5.188032815E1 +1.700148000E3,6.050592844E1 +1.700415000E3,5.851925341E1 +1.700742000E3,5.754370303E1 +1.700996000E3,5.792652906E1 +1.701265000E3,5.809754284E1 +1.701543000E3,5.435013872E1 +1.701827000E3,5.364293620E1 +1.702095000E3,5.742174876E1 +1.702342000E3,5.921232761E1 +1.702597000E3,5.246613397E1 +1.702852000E3,5.865178399E1 +1.703188000E3,6.209648540E1 +1.703456000E3,5.783126524E1 +1.703723000E3,6.129722089E1 +1.704021000E3,6.159059582E1 +1.704258000E3,6.290365934E1 +1.704500000E3,5.899658178E1 +1.704744000E3,5.570772177E1 +1.705020000E3,6.042975914E1 +1.705281000E3,6.063911519E1 +1.705578000E3,5.667741437E1 +1.705818000E3,5.616948640E1 +1.706065000E3,5.809228765E1 +1.706440000E3,6.194892333E1 +1.706707000E3,5.510896653E1 +1.706968000E3,5.648771637E1 +1.707226000E3,5.451026369E1 +1.707530000E3,5.655237570E1 +1.707813000E3,6.342687376E1 +1.708096000E3,5.687609223E1 +1.708345000E3,5.784030597E1 +1.708587000E3,5.696931166E1 +1.708832000E3,5.826055047E1 +1.709133000E3,6.171963981E1 +1.709444000E3,6.289993620E1 +1.709785000E3,6.196750111E1 +1.710095000E3,6.021872673E1 +1.710401000E3,5.493999514E1 +1.710645000E3,5.748920917E1 +1.710951000E3,5.990748875E1 +1.711204000E3,5.995493625E1 +1.711504000E3,5.608393688E1 +1.711807000E3,6.225697969E1 +1.712052000E3,6.005399346E1 +1.712297000E3,6.276583246E1 +1.712594000E3,6.409669700E1 +1.712952000E3,5.846223798E1 +1.713249000E3,6.222377893E1 +1.713511000E3,6.179119431E1 +1.713770000E3,6.687160955E1 +1.714020000E3,6.224215114E1 +1.714281000E3,6.460780580E1 +1.714608000E3,6.323149402E1 +1.714900000E3,5.890183616E1 +1.715139000E3,6.173404899E1 +1.715438000E3,6.193562982E1 +1.715674000E3,6.231645929E1 +1.715912000E3,5.798536661E1 +1.716293000E3,5.569607438E1 +1.716537000E3,6.131866955E1 +1.716790000E3,5.896584959E1 +1.717096000E3,5.693976131E1 +1.717346000E3,5.531403594E1 +1.717631000E3,5.794989861E1 +1.717933000E3,5.594899441E1 +1.718204000E3,5.601359132E1 +1.718501000E3,5.861037671E1 +1.718741000E3,6.432265266E1 +1.719043000E3,6.182586376E1 +1.719355000E3,6.076827417E1 +1.719645000E3,5.634225228E1 +1.719943000E3,5.935070169E1 +1.720188000E3,5.856877062E1 +1.720486000E3,5.761843709E1 +1.720741000E3,5.935030376E1 +1.720985000E3,5.413194972E1 +1.721289000E3,5.939733818E1 +1.721553000E3,5.617827250E1 +1.721847000E3,5.807085988E1 +1.722091000E3,5.877044817E1 +1.722445000E3,6.593854232E1 +1.722681000E3,6.027114564E1 +1.722973000E3,5.866411762E1 +1.723271000E3,5.588604319E1 +1.723508000E3,5.958751798E1 +1.723800000E3,6.077290351E1 +1.724039000E3,5.722905231E1 +1.724338000E3,5.619905124E1 +1.724576000E3,5.628809107E1 +1.724876000E3,5.560357878E1 +1.725168000E3,5.447509555E1 +1.725542000E3,5.278892866E1 +1.725841000E3,4.816211457E1 +1.726139000E3,4.622333411E1 +1.726399000E3,4.728231882E1 +1.726691000E3,5.101510224E1 +1.726947000E3,4.725933617E1 +1.727273000E3,5.333398449E1 +1.727569000E3,5.518583989E1 +1.727808000E3,5.719998093E1 +1.728061000E3,5.375072532E1 +1.728352000E3,5.631849408E1 +1.728644000E3,5.232994659E1 +1.729024000E3,5.045911420E1 +1.729295000E3,4.931808913E1 +1.729541000E3,4.866846016E1 +1.729788000E3,5.127644661E1 +1.730054000E3,4.769951033E1 +1.730296000E3,5.553885299E1 +1.730573000E3,5.629080236E1 +1.730816000E3,5.218818952E1 +1.731119000E3,5.112756333E1 +1.731379000E3,5.524890032E1 +1.731688000E3,5.530134621E1 +1.731949000E3,5.451831728E1 +1.732288000E3,5.380962689E1 +1.732589000E3,5.754684503E1 +1.732833000E3,5.184401682E1 +1.733102000E3,5.011373730E1 +1.733369000E3,5.541779655E1 +1.733647000E3,5.983699601E1 +1.733886000E3,6.131428317E1 +1.734163000E3,6.052345820E1 +1.734405000E3,5.852692054E1 +1.734659000E3,5.861191265E1 +1.734933000E3,5.957936529E1 +1.735219000E3,5.639739849E1 +1.735540000E3,5.207917019E1 +1.735832000E3,4.548490451E1 +1.736112000E3,5.219897691E1 +1.736384000E3,5.618314188E1 +1.736684000E3,5.720418785E1 +1.736946000E3,5.895068629E1 +1.737213000E3,5.652216932E1 +1.737468000E3,5.796687034E1 +1.737738000E3,5.591197017E1 +1.737996000E3,5.493985473E1 +1.738236000E3,5.752137274E1 +1.738586000E3,6.041563952E1 +1.738921000E3,6.199530447E1 +1.739167000E3,5.310800091E1 +1.739430000E3,5.600574849E1 +1.739683000E3,6.494981167E1 +1.739952000E3,6.157046745E1 +1.740293000E3,6.002681302E1 +1.740611000E3,5.943541790E1 +1.740910000E3,5.731619793E1 +1.741197000E3,5.885751119E1 +1.741508000E3,5.719237093E1 +1.741767000E3,5.958897825E1 +1.742034000E3,5.543499582E1 +1.742424000E3,5.632783570E1 +1.742688000E3,5.565042743E1 +1.742946000E3,5.622883854E1 +1.743204000E3,6.327777019E1 +1.743456000E3,5.663098185E1 +1.743721000E3,5.729384715E1 +1.743966000E3,6.200582057E1 +1.744273000E3,5.107652622E1 +1.744505000E3,5.491520459E1 +1.744752000E3,5.181266373E1 +1.745004000E3,5.014115745E1 +1.745297000E3,5.338585031E1 +1.745690000E3,5.654477286E1 +1.745966000E3,5.517036116E1 +1.746219000E3,5.200430375E1 +1.746475000E3,5.963355448E1 +1.746732000E3,5.854837006E1 +1.747002000E3,5.571277949E1 +1.747293000E3,5.825116458E1 +1.747522000E3,5.673248340E1 +1.747772000E3,5.683320783E1 +1.748035000E3,5.224053713E1 +1.748289000E3,5.713452273E1 +1.748568000E3,5.539076360E1 +1.748961000E3,6.015893340E1 +1.749211000E3,5.710921188E1 +1.749460000E3,6.114476082E1 +1.749715000E3,5.648052368E1 +1.749961000E3,5.897720288E1 +1.750207000E3,5.525435431E1 +1.750521000E3,5.447453139E1 +1.750765000E3,5.883968686E1 +1.751015000E3,5.450160052E1 +1.751290000E3,5.405183560E1 +1.751522000E3,5.501343440E1 +1.751848000E3,5.586635599E1 +1.752096000E3,5.631573217E1 +1.752372000E3,5.960964241E1 +1.752637000E3,5.320710483E1 +1.752941000E3,5.848434869E1 +1.753209000E3,5.619196315E1 +1.753510000E3,5.692291103E1 +1.753774000E3,5.505374149E1 +1.754051000E3,5.721759821E1 +1.754315000E3,5.539152446E1 +1.754625000E3,5.632890174E1 +1.754919000E3,5.918851802E1 +1.755262000E3,5.807294381E1 +1.755529000E3,5.748451885E1 +1.755827000E3,6.055251826E1 +1.756067000E3,6.208050524E1 +1.756367000E3,5.991655048E1 +1.756607000E3,6.073519941E1 +1.756900000E3,5.774998130E1 +1.757144000E3,5.751173009E1 +1.757417000E3,5.299288378E1 +1.757700000E3,5.913293772E1 +1.758005000E3,5.732040664E1 +1.758269000E3,6.221202462E1 +1.758585000E3,6.285457626E1 +1.758834000E3,5.870613535E1 +1.759137000E3,5.533279687E1 +1.759391000E3,5.194643865E1 +1.759644000E3,4.891449850E1 +1.759922000E3,4.784429271E1 +1.760236000E3,5.273391136E1 +1.760503000E3,5.475616990E1 +1.760758000E3,5.640096860E1 +1.761017000E3,5.329458627E1 +1.761282000E3,4.798672737E1 +1.761535000E3,5.532988346E1 +1.761794000E3,5.189579265E1 +1.762040000E3,5.068357941E1 +1.762299000E3,5.751972157E1 +1.762578000E3,5.430434207E1 +1.762831000E3,5.331943982E1 +1.763136000E3,5.699367350E1 +1.763409000E3,5.622858108E1 +1.763658000E3,5.631559008E1 +1.763910000E3,5.738562920E1 +1.764157000E3,6.030103345E1 +1.764400000E3,5.680309722E1 +1.764695000E3,5.703631315E1 +1.765017000E3,5.682945247E1 +1.765300000E3,5.317093897E1 +1.765575000E3,5.620624417E1 +1.765832000E3,5.550075987E1 +1.766100000E3,6.321349509E1 +1.766371000E3,5.938123887E1 +1.766635000E3,6.289622107E1 +1.766898000E3,5.890101653E1 +1.767155000E3,5.928826732E1 +1.767399000E3,5.872890625E1 +1.767638000E3,6.184345237E1 +1.767877000E3,6.131073260E1 +1.768211000E3,6.085041665E1 +1.768587000E3,6.015418617E1 +1.768835000E3,5.648473324E1 +1.769119000E3,5.746059957E1 +1.769380000E3,5.608054299E1 +1.769692000E3,6.542458852E1 +1.769998000E3,6.121618195E1 +1.770281000E3,5.842785672E1 +1.770536000E3,5.763776595E1 +1.770858000E3,5.630873419E1 +1.771133000E3,5.339704361E1 +1.771378000E3,5.463873835E1 +1.771723000E3,5.659388596E1 +1.772050000E3,5.449836230E1 +1.772294000E3,5.154616724E1 +1.772537000E3,5.082603581E1 +1.772795000E3,5.334183734E1 +1.773055000E3,5.096094928E1 +1.773365000E3,5.171061147E1 +1.773612000E3,5.477281719E1 +1.773878000E3,5.060909259E1 +1.774171000E3,5.285294921E1 +1.774452000E3,5.393730531E1 +1.774725000E3,5.333400186E1 +1.774980000E3,5.285705613E1 +1.775346000E3,5.719168586E1 +1.775663000E3,5.642193929E1 +1.775908000E3,4.659059970E1 +1.776150000E3,5.521168672E1 +1.776388000E3,5.693500665E1 +1.776630000E3,6.030483668E1 +1.776910000E3,5.944095915E1 +1.777153000E3,5.708951289E1 +1.777414000E3,5.291982189E1 +1.777666000E3,5.900042024E1 +1.777935000E3,6.010949926E1 +1.778229000E3,6.009411695E1 +1.778514000E3,5.804757181E1 +1.778758000E3,5.922775473E1 +1.779011000E3,6.063545461E1 +1.779277000E3,5.950242674E1 +1.779575000E3,6.057891518E1 +1.779819000E3,6.050018223E1 +1.780115000E3,5.965583098E1 +1.780361000E3,5.651792502E1 +1.780660000E3,5.814099422E1 +1.780904000E3,5.340077797E1 +1.781203000E3,5.734973286E1 +1.781481000E3,5.846278011E1 +1.781805000E3,5.369751607E1 +1.782048000E3,5.229063054E1 +1.782299000E3,5.345996994E1 +1.782583000E3,5.724353788E1 +1.782883000E3,5.610772411E1 +1.783181000E3,5.272586700E1 +1.783423000E3,5.272075137E1 +1.783692000E3,5.495532717E1 +1.783945000E3,5.594785882E1 +1.784202000E3,5.914935612E1 +1.784483000E3,6.427791570E1 +1.784735000E3,6.185652247E1 +1.785051000E3,6.178338943E1 +1.785352000E3,6.304285312E1 +1.785598000E3,5.699176354E1 +1.785897000E3,5.705567192E1 +1.786190000E3,5.975757470E1 +1.786467000E3,6.092866408E1 +1.786714000E3,5.771726615E1 +1.786984000E3,5.434727511E1 +1.787232000E3,5.250796794E1 +1.787486000E3,5.668884634E1 +1.787813000E3,5.600600547E1 +1.788061000E3,5.162213387E1 +1.788391000E3,5.782497792E1 +1.788636000E3,5.900804565E1 +1.788935000E3,6.056317474E1 +1.789175000E3,5.749029459E1 +1.789469000E3,6.053654612E1 +1.789714000E3,5.841478287E1 +1.789988000E3,5.700130118E1 +1.790219000E3,5.562837186E1 +1.790509000E3,5.430369658E1 +1.790806000E3,5.586895515E1 +1.791048000E3,5.809725956E1 +1.791409000E3,5.552827992E1 +1.791650000E3,5.534472171E1 +1.791981000E3,5.671474363E1 +1.792227000E3,5.716453332E1 +1.792522000E3,5.844249975E1 +1.792847000E3,5.961186667E1 +1.793109000E3,5.794833541E1 +1.793437000E3,5.832360597E1 +1.793698000E3,5.996001578E1 +1.793970000E3,5.849924827E1 +1.794223000E3,5.823551411E1 +1.794488000E3,5.480450178E1 +1.794819000E3,5.715609034E1 +1.795083000E3,5.418083703E1 +1.795329000E3,5.529883425E1 +1.795587000E3,5.729455769E1 +1.795853000E3,5.358946536E1 +1.796083000E3,5.534684059E1 +1.796374000E3,5.693696454E1 +1.796630000E3,5.642610016E1 +1.796927000E3,5.692548294E1 +1.797194000E3,5.931602223E1 +1.797469000E3,5.877569790E1 +1.797716000E3,5.527135197E1 +1.798053000E3,5.904674814E1 +1.798358000E3,5.655039196E1 +1.798612000E3,5.796779928E1 +1.798921000E3,5.499199210E1 +1.799185000E3,5.693837926E1 +1.799465000E3,6.235855457E1 +1.799695000E3,6.271612813E1 +1.799964000E3,6.118271582E1 +1.800233000E3,6.171552449E1 +1.800562000E3,6.293258336E1 +1.800818000E3,5.927940855E1 +1.801077000E3,5.836879001E1 +1.801406000E3,6.182854437E1 +1.801650000E3,5.918527405E1 +1.801894000E3,6.352260837E1 +1.802163000E3,6.142940723E1 +1.802385000E3,5.867772092E1 +1.802631000E3,5.916688243E1 +1.802927000E3,5.855222781E1 +1.803228000E3,6.125789004E1 +1.803533000E3,5.839377949E1 +1.803816000E3,5.705167204E1 +1.804057000E3,5.641730344E1 +1.804362000E3,6.771092582E1 +1.804585000E3,6.036461449E1 +1.804835000E3,6.742095194E1 +1.805132000E3,6.133151855E1 +1.805443000E3,6.658554202E1 +1.805718000E3,7.095511769E1 +1.806003000E3,7.330553664E1 +1.806290000E3,6.732809523E1 +1.806566000E3,6.106403544E1 +1.806844000E3,5.830930506E1 +1.807085000E3,6.610455401E1 +1.807442000E3,5.944325189E1 +1.807800000E3,5.667454347E1 +1.808044000E3,5.560521877E1 +1.808299000E3,5.488377812E1 +1.808542000E3,5.279721650E1 +1.808789000E3,4.834692654E1 +1.809029000E3,4.661669368E1 +1.809276000E3,5.501186804E1 +1.809526000E3,5.384830085E1 +1.809820000E3,5.526588307E1 +1.810084000E3,5.900458249E1 +1.810393000E3,5.557146256E1 +1.810647000E3,5.355619280E1 +1.811023000E3,5.627924000E1 +1.811283000E3,5.384503050E1 +1.811527000E3,5.309622401E1 +1.811816000E3,5.228523776E1 +1.812070000E3,5.317657142E1 +1.812328000E3,5.813846570E1 +1.812583000E3,5.621088360E1 +1.812927000E3,5.646965227E1 +1.813191000E3,5.322001188E1 +1.813436000E3,5.451886743E1 +1.813748000E3,5.558621720E1 +1.814006000E3,5.673920724E1 +1.814328000E3,5.582855401E1 +1.814591000E3,6.044196407E1 +1.814848000E3,5.769208427E1 +1.815109000E3,6.206015086E1 +1.815391000E3,5.918173335E1 +1.815660000E3,5.779702061E1 +1.815927000E3,6.516398742E1 +1.816218000E3,5.927869783E1 +1.816546000E3,6.320256740E1 +1.816802000E3,6.296743684E1 +1.817051000E3,5.869001212E1 +1.817329000E3,5.985536664E1 +1.817620000E3,5.435607380E1 +1.817905000E3,5.721703373E1 +1.818148000E3,6.314389823E1 +1.818376000E3,6.116752308E1 +1.818622000E3,5.773611736E1 +1.818863000E3,5.892899245E1 +1.819138000E3,5.791411351E1 +1.819457000E3,6.283307798E1 +1.819719000E3,5.805008540E1 +1.819967000E3,6.383011196E1 +1.820266000E3,5.915938870E1 +1.820515000E3,5.795811325E1 +1.820871000E3,5.730398564E1 +1.821113000E3,5.907223014E1 +1.821388000E3,5.566469845E1 +1.821612000E3,5.223652040E1 +1.821858000E3,5.461868826E1 +1.822118000E3,5.731142265E1 +1.822388000E3,5.743609212E1 +1.822672000E3,6.147918645E1 +1.822919000E3,6.109678537E1 +1.823167000E3,5.654516230E1 +1.823464000E3,6.010058675E1 +1.823716000E3,6.101649690E1 +1.824046000E3,5.741898993E1 +1.824372000E3,5.654969113E1 +1.824629000E3,5.489877253E1 +1.824894000E3,6.410593751E1 +1.825142000E3,5.923267903E1 +1.825399000E3,5.977300321E1 +1.825683000E3,5.945891570E1 +1.825907000E3,5.799474745E1 +1.826162000E3,5.485933719E1 +1.826447000E3,5.848818620E1 +1.826697000E3,5.937282663E1 +1.826944000E3,5.473647239E1 +1.827319000E3,5.611635619E1 +1.827649000E3,5.704234375E1 +1.827909000E3,5.174683398E1 +1.828172000E3,5.243070089E1 +1.828457000E3,5.835398328E1 +1.828710000E3,6.579711207E1 +1.828969000E3,6.063158540E1 +1.829218000E3,5.379307224E1 +1.829474000E3,5.791005982E1 +1.829779000E3,5.908028356E1 +1.830025000E3,5.476368407E1 +1.830307000E3,5.608145667E1 +1.830627000E3,5.417323034E1 +1.830843000E3,5.295530865E1 +1.831087000E3,5.335160491E1 +1.831385000E3,5.274441298E1 +1.831622000E3,5.307477504E1 +1.831918000E3,5.606159985E1 +1.832155000E3,6.009472302E1 +1.832471000E3,5.380117674E1 +1.832766000E3,5.382200579E1 +1.833012000E3,5.176006230E1 +1.833256000E3,5.956343573E1 +1.833577000E3,5.545935306E1 +1.833826000E3,5.528541848E1 +1.834083000E3,5.436381252E1 +1.834373000E3,5.684307553E1 +1.834669000E3,5.352399464E1 +1.834910000E3,5.651184236E1 +1.835208000E3,5.432875840E1 +1.835453000E3,5.442576527E1 +1.835752000E3,5.643309342E1 +1.836022000E3,5.781174029E1 +1.836293000E3,6.110602518E1 +1.836557000E3,5.591856301E1 +1.836932000E3,5.423752303E1 +1.837200000E3,5.716598850E1 +1.837455000E3,5.511743414E1 +1.837716000E3,5.819026063E1 +1.837988000E3,5.728773522E1 +1.838236000E3,5.959151016E1 +1.838540000E3,5.810767345E1 +1.838799000E3,5.779128856E1 +1.839096000E3,6.092094761E1 +1.839361000E3,5.957871329E1 +1.839608000E3,5.838702884E1 +1.839856000E3,5.927631822E1 +1.840242000E3,5.748386760E1 +1.840516000E3,5.957609475E1 +1.840759000E3,5.688693666E1 +1.841054000E3,5.883374773E1 +1.841320000E3,5.769470339E1 +1.841597000E3,5.894509733E1 +1.841885000E3,6.032854908E1 +1.842190000E3,5.891601570E1 +1.842444000E3,5.957860612E1 +1.842691000E3,5.968229576E1 +1.842933000E3,5.829247522E1 +1.843258000E3,6.183086549E1 +1.843539000E3,6.077794792E1 +1.843765000E3,5.928253866E1 +1.844002000E3,5.782805396E1 +1.844301000E3,5.975447959E1 +1.844589000E3,6.108169982E1 +1.844825000E3,5.915565503E1 +1.845116000E3,5.981302437E1 +1.845363000E3,6.019248645E1 +1.845636000E3,6.014223773E1 +1.845861000E3,6.160258605E1 +1.846139000E3,6.002388007E1 +1.846447000E3,6.004612452E1 +1.846706000E3,5.932487324E1 +1.846979000E3,5.718424575E1 +1.847284000E3,5.712987240E1 +1.847586000E3,5.557624595E1 +1.847888000E3,5.603981815E1 +1.848146000E3,5.769591687E1 +1.848418000E3,5.526085696E1 +1.848706000E3,5.815102401E1 +1.848972000E3,5.884177354E1 +1.849226000E3,5.853138751E1 +1.849515000E3,6.156208919E1 +1.849746000E3,6.064923427E1 +1.850008000E3,6.590305387E1 +1.850338000E3,5.853444981E1 +1.850640000E3,5.717447935E1 +1.850942000E3,5.680568615E1 +1.851242000E3,5.928468331E1 +1.851504000E3,5.798449444E1 +1.851757000E3,5.802619768E1 +1.852033000E3,5.998338312E1 +1.852296000E3,5.683616594E1 +1.852550000E3,5.692327884E1 +1.852886000E3,5.878610583E1 +1.853162000E3,5.538467470E1 +1.853432000E3,5.437085520E1 +1.853738000E3,5.469765317E1 +1.854038000E3,5.790268038E1 +1.854297000E3,5.836787866E1 +1.854582000E3,6.160807622E1 +1.854881000E3,5.878613196E1 +1.855158000E3,6.200103199E1 +1.855387000E3,6.087479870E1 +1.855688000E3,6.028304140E1 +1.855930000E3,6.159527875E1 +1.856226000E3,6.082174354E1 +1.856487000E3,5.932314061E1 +1.856744000E3,5.976570730E1 +1.857001000E3,5.473753247E1 +1.857299000E3,5.954612483E1 +1.857556000E3,6.052388497E1 +1.857849000E3,5.848282940E1 +1.858086000E3,5.879664566E1 +1.858384000E3,5.864589973E1 +1.858677000E3,5.659242719E1 +1.858917000E3,5.683870091E1 +1.859195000E3,5.582498919E1 +1.859427000E3,6.011873423E1 +1.859676000E3,5.796702396E1 +1.859911000E3,5.928400715E1 +1.860149000E3,5.826876733E1 +1.860396000E3,6.038481253E1 +1.860680000E3,6.030085568E1 +1.860944000E3,5.890166619E1 +1.861209000E3,6.654379171E1 +1.861519000E3,6.016187265E1 +1.861755000E3,6.139297542E1 +1.862049000E3,6.289106669E1 +1.862388000E3,5.872946965E1 +1.862675000E3,5.800836625E1 +1.862993000E3,5.701819685E1 +1.863248000E3,5.488359846E1 +1.863519000E3,5.747446133E1 +1.863768000E3,5.996388232E1 +1.864087000E3,5.686047813E1 +1.864334000E3,5.935760915E1 +1.864635000E3,6.438349972E1 +1.864894000E3,6.008599590E1 +1.865205000E3,5.995474236E1 +1.865502000E3,6.596906108E1 +1.865837000E3,6.091064347E1 +1.866114000E3,5.885056970E1 +1.866411000E3,6.474486832E1 +1.866666000E3,5.888758286E1 +1.866964000E3,6.138447683E1 +1.867211000E3,6.032596684E1 +1.867482000E3,5.848476935E1 +1.867736000E3,5.631330849E1 +1.867989000E3,5.927138373E1 +1.868246000E3,5.817171672E1 +1.868499000E3,5.358065381E1 +1.868763000E3,5.500264039E1 +1.869129000E3,5.663946315E1 +1.869384000E3,5.601392416E1 +1.869636000E3,5.640732154E1 +1.869947000E3,5.320213962E1 +1.870207000E3,4.907811811E1 +1.870470000E3,5.784153600E1 +1.870743000E3,5.988355074E1 +1.871011000E3,5.973830135E1 +1.871253000E3,5.769679044E1 +1.871519000E3,5.395770126E1 +1.871765000E3,5.751088186E1 +1.872011000E3,5.342275719E1 +1.872301000E3,5.638616310E1 +1.872563000E3,5.124369984E1 +1.872821000E3,5.357036185E1 +1.873129000E3,5.529809524E1 +1.873386000E3,5.442720524E1 +1.873650000E3,5.306298792E1 +1.873937000E3,5.703507672E1 +1.874184000E3,5.835246426E1 +1.874444000E3,5.638184247E1 +1.874707000E3,5.201779537E1 +1.874972000E3,5.217149520E1 +1.875244000E3,5.757612416E1 +1.875577000E3,5.387788750E1 +1.875865000E3,5.607108884E1 +1.876149000E3,5.692352283E1 +1.876407000E3,5.577296536E1 +1.876687000E3,5.259836493E1 +1.876982000E3,5.467571766E1 +1.877215000E3,5.256317748E1 +1.877521000E3,5.522593862E1 +1.877775000E3,5.432669245E1 +1.878036000E3,5.734031668E1 +1.878314000E3,6.027566119E1 +1.878587000E3,5.567003578E1 +1.878912000E3,5.307720644E1 +1.879176000E3,5.659939353E1 +1.879425000E3,5.110556861E1 +1.879723000E3,5.673190580E1 +1.879969000E3,5.437112204E1 +1.880274000E3,5.433297742E1 +1.880576000E3,5.585075865E1 +1.880875000E3,5.657006430E1 +1.881117000E3,5.701623858E1 +1.881424000E3,5.749679466E1 +1.881673000E3,5.623079196E1 +1.881986000E3,5.545187468E1 +1.882329000E3,5.781610131E1 +1.882611000E3,5.432916720E1 +1.882882000E3,4.940287270E1 +1.883127000E3,5.866223377E1 +1.883391000E3,5.654564177E1 +1.883644000E3,5.888782218E1 +1.883889000E3,5.586307703E1 +1.884148000E3,5.930725555E1 +1.884413000E3,5.963840788E1 +1.884660000E3,5.928611951E1 +1.884926000E3,5.621968819E1 +1.885181000E3,5.811455305E1 +1.885457000E3,5.585646129E1 +1.885714000E3,5.989591718E1 +1.885968000E3,6.058402104E1 +1.886267000E3,5.972100226E1 +1.886517000E3,6.220704457E1 +1.886832000E3,6.037773435E1 +1.887106000E3,6.039308032E1 +1.887385000E3,6.223647696E1 +1.887617000E3,5.854088114E1 +1.887876000E3,6.248517888E1 +1.888128000E3,6.222318884E1 +1.888437000E3,6.070320114E1 +1.888777000E3,5.817372188E1 +1.889076000E3,5.382250608E1 +1.889369000E3,7.004593531E1 +1.889616000E3,6.094415751E1 +1.889913000E3,5.455584628E1 +1.890163000E3,5.387250795E1 +1.890418000E3,5.219742496E1 +1.890714000E3,5.070715955E1 +1.890961000E3,5.362651533E1 +1.891207000E3,5.046817004E1 +1.891453000E3,5.129339201E1 +1.891764000E3,4.856730286E1 +1.892053000E3,5.220705734E1 +1.892321000E3,5.401068171E1 +1.892582000E3,5.109746146E1 +1.892834000E3,5.412675897E1 +1.893090000E3,5.347014573E1 +1.893340000E3,5.092720593E1 +1.893620000E3,5.341316175E1 +1.893886000E3,4.870918930E1 +1.894142000E3,4.929590175E1 +1.894389000E3,4.686294330E1 +1.894692000E3,5.100486031E1 +1.894995000E3,5.087478993E1 +1.895328000E3,4.940372977E1 +1.895606000E3,5.362468443E1 +1.895919000E3,5.608826750E1 +1.896241000E3,5.628756413E1 +1.896497000E3,5.817843169E1 +1.896749000E3,5.809119715E1 +1.897054000E3,5.469613872E1 +1.897287000E3,5.437807476E1 +1.897582000E3,5.794761863E1 +1.897897000E3,6.027023965E1 +1.898145000E3,5.913564460E1 +1.898511000E3,5.510014788E1 +1.898752000E3,5.499817732E1 +1.898999000E3,5.569220222E1 +1.899294000E3,5.368447548E1 +1.899547000E3,5.912109227E1 +1.899841000E3,6.076259223E1 +1.900104000E3,6.153129043E1 +1.900349000E3,5.679462536E1 +1.900634000E3,5.721135074E1 +1.900927000E3,5.674745728E1 +1.901166000E3,5.556227882E1 +1.901462000E3,4.994603734E1 +1.901841000E3,5.122656475E1 +1.902183000E3,5.127903645E1 +1.902436000E3,5.042064547E1 +1.902695000E3,5.425673681E1 +1.902998000E3,5.484388956E1 +1.903228000E3,5.322356297E1 +1.903483000E3,5.161093724E1 +1.903730000E3,5.302125687E1 +1.904019000E3,5.241958307E1 +1.904307000E3,5.116604316E1 +1.904614000E3,5.319513233E1 +1.904991000E3,5.530482451E1 +1.905243000E3,5.829713614E1 +1.905528000E3,4.891404960E1 +1.905774000E3,5.408250868E1 +1.906083000E3,5.272747143E1 +1.906381000E3,5.216068921E1 +1.906624000E3,5.292203291E1 +1.906885000E3,5.243548019E1 +1.907149000E3,4.981562618E1 +1.907448000E3,5.500279348E1 +1.907742000E3,5.481190601E1 +1.907999000E3,5.369800103E1 +1.908315000E3,6.390197571E1 +1.908579000E3,6.517990141E1 +1.908825000E3,5.822949910E1 +1.909064000E3,5.655728640E1 +1.909356000E3,5.292186662E1 +1.909600000E3,5.069372058E1 +1.909895000E3,5.368100654E1 +1.910138000E3,5.616508462E1 +1.910432000E3,6.285923815E1 +1.910670000E3,6.254266196E1 +1.910979000E3,5.628599605E1 +1.911260000E3,5.616383984E1 +1.911482000E3,5.074231882E1 +1.911728000E3,5.398858859E1 +1.911977000E3,5.585565083E1 +1.912237000E3,5.777112626E1 +1.912532000E3,6.036032129E1 +1.912783000E3,6.077032608E1 +1.913052000E3,5.839282786E1 +1.913316000E3,5.397912726E1 +1.913575000E3,5.582771928E1 +1.913848000E3,5.579334158E1 +1.914143000E3,5.778281485E1 +1.914450000E3,5.783459906E1 +1.914713000E3,6.199387267E1 +1.914943000E3,6.173706737E1 +1.915185000E3,5.621060236E1 +1.915433000E3,5.563784893E1 +1.915692000E3,5.470990272E1 +1.915951000E3,5.469960060E1 +1.916217000E3,6.171536544E1 +1.916470000E3,5.862130066E1 +1.916777000E3,5.839467924E1 +1.917028000E3,5.552209731E1 +1.917324000E3,5.763067987E1 +1.917687000E3,5.981653815E1 +1.917967000E3,5.790518789E1 +1.918210000E3,5.220287871E1 +1.918457000E3,5.707286116E1 +1.918759000E3,5.657529642E1 +1.918997000E3,6.000130629E1 +1.919241000E3,5.708419446E1 +1.919496000E3,5.749223221E1 +1.919768000E3,5.843781753E1 +1.920074000E3,5.671929683E1 +1.920373000E3,5.881070992E1 +1.920621000E3,5.603223824E1 +1.920956000E3,6.053511488E1 +1.921216000E3,5.525745837E1 +1.921476000E3,6.186721324E1 +1.921723000E3,6.214292360E1 +1.922025000E3,5.857206109E1 +1.922320000E3,5.934438900E1 +1.922561000E3,6.077867207E1 +1.922860000E3,5.578255978E1 +1.923099000E3,5.723807446E1 +1.923347000E3,5.785786452E1 +1.923636000E3,6.037753633E1 +1.923892000E3,6.106459696E1 +1.924223000E3,5.873119773E1 +1.924511000E3,5.862235861E1 +1.924814000E3,5.732521131E1 +1.925070000E3,5.161553090E1 +1.925373000E3,5.243351685E1 +1.925626000E3,5.041805469E1 +1.925919000E3,5.543714980E1 +1.926175000E3,5.338657816E1 +1.926425000E3,5.616854022E1 +1.926695000E3,5.699328540E1 +1.926965000E3,5.787312270E1 +1.927305000E3,5.558473925E1 +1.927614000E3,5.927685087E1 +1.927880000E3,6.254706193E1 +1.928125000E3,6.079427969E1 +1.928390000E3,5.412440784E1 +1.928634000E3,5.441834540E1 +1.928928000E3,5.220486428E1 +1.929215000E3,5.210908233E1 +1.929515000E3,5.352367419E1 +1.929766000E3,5.356350702E1 +1.930022000E3,5.184851991E1 +1.930322000E3,5.311742835E1 +1.930607000E3,5.453786592E1 +1.930870000E3,5.814140937E1 +1.931155000E3,5.779656646E1 +1.931440000E3,5.488757891E1 +1.931727000E3,5.385182390E1 +1.931981000E3,5.705491580E1 +1.932229000E3,5.576165296E1 +1.932491000E3,5.781333383E1 +1.932730000E3,5.616780300E1 +1.932971000E3,5.400230043E1 +1.933232000E3,5.518627884E1 +1.933510000E3,5.211300688E1 +1.933795000E3,5.292820587E1 +1.934127000E3,5.382097927E1 +1.934390000E3,6.102840439E1 +1.934671000E3,5.486275546E1 +1.934948000E3,5.206103103E1 +1.935198000E3,5.739150099E1 +1.935506000E3,5.310844778E1 +1.935756000E3,5.392681604E1 +1.936008000E3,5.250003264E1 +1.936256000E3,5.801399662E1 +1.936524000E3,5.696032820E1 +1.936785000E3,5.414492013E1 +1.937032000E3,5.536982174E1 +1.937391000E3,5.750979970E1 +1.937677000E3,5.370086514E1 +1.937972000E3,5.359409099E1 +1.938241000E3,4.663692517E1 +1.938508000E3,4.740501122E1 +1.938772000E3,4.812116539E1 +1.939051000E3,4.940260018E1 +1.939311000E3,5.211533825E1 +1.939553000E3,5.351181789E1 +1.939796000E3,5.597808269E1 +1.940081000E3,5.841474518E1 +1.940347000E3,5.900966915E1 +1.940680000E3,5.844032848E1 +1.940932000E3,6.047778057E1 +1.941187000E3,6.179458512E1 +1.941488000E3,5.569784051E1 +1.941730000E3,5.535681081E1 +1.941971000E3,5.409739450E1 +1.942227000E3,5.551927029E1 +1.942555000E3,5.259381649E1 +1.942855000E3,5.090743186E1 +1.943101000E3,5.330610416E1 +1.943383000E3,5.722147303E1 +1.943610000E3,5.564867598E1 +1.944013000E3,5.456395907E1 +1.944265000E3,5.442943523E1 +1.944557000E3,5.982581487E1 +1.944820000E3,5.751114261E1 +1.945081000E3,5.998630171E1 +1.945333000E3,5.908382499E1 +1.945646000E3,5.828329647E1 +1.945951000E3,5.602282904E1 +1.946199000E3,6.197108249E1 +1.946496000E3,5.533258874E1 +1.946770000E3,5.704060455E1 +1.947126000E3,5.457797110E1 +1.947363000E3,5.430717613E1 +1.947637000E3,5.940687974E1 +1.947953000E3,5.436076271E1 +1.948235000E3,5.660912008E1 +1.948550000E3,5.504399315E1 +1.948861000E3,5.464999644E1 +1.949122000E3,5.565806372E1 +1.949384000E3,5.190569146E1 +1.949646000E3,5.153937000E1 +1.949972000E3,5.628803963E1 +1.950248000E3,5.966716422E1 +1.950577000E3,5.820503815E1 +1.950822000E3,5.652058726E1 +1.951118000E3,5.802645793E1 +1.951349000E3,5.727916959E1 +1.951597000E3,5.784165576E1 +1.951900000E3,5.999225852E1 +1.952197000E3,6.048891831E1 +1.952433000E3,5.821794698E1 +1.952728000E3,5.416701806E1 +1.952964000E3,5.183738883E1 +1.953295000E3,5.384161890E1 +1.953675000E3,5.430376660E1 +1.953907000E3,5.257088063E1 +1.954151000E3,5.392186903E1 +1.954431000E3,6.167467738E1 +1.954678000E3,5.958790115E1 +1.954923000E3,5.822018477E1 +1.955185000E3,5.808448347E1 +1.955447000E3,5.733347749E1 +1.955703000E3,6.261390980E1 +1.956005000E3,5.829281758E1 +1.956246000E3,5.949056653E1 +1.956541000E3,5.839747914E1 +1.956810000E3,5.770882066E1 +1.957120000E3,5.690637302E1 +1.957421000E3,5.796705847E1 +1.957668000E3,5.867770180E1 +1.957936000E3,5.696585443E1 +1.958216000E3,5.738908049E1 +1.958463000E3,5.842272770E1 +1.958721000E3,5.966072568E1 +1.959033000E3,6.340725612E1 +1.959281000E3,6.193544465E1 +1.959566000E3,5.927164536E1 +1.959888000E3,6.146900670E1 +1.960249000E3,6.270186363E1 +1.960512000E3,5.695216686E1 +1.960779000E3,5.725758836E1 +1.961040000E3,5.788439963E1 +1.961303000E3,6.286977927E1 +1.961557000E3,6.361469653E1 +1.961802000E3,6.277422462E1 +1.962060000E3,6.032704022E1 +1.962310000E3,5.600516510E1 +1.962586000E3,6.188879617E1 +1.962805000E3,6.271522018E1 +1.963107000E3,6.025198847E1 +1.963453000E3,6.001529679E1 +1.963728000E3,5.375240125E1 +1.964036000E3,5.055228276E1 +1.964331000E3,5.257092943E1 +1.964568000E3,5.708661900E1 +1.964868000E3,5.629448239E1 +1.965178000E3,5.425890416E1 +1.965431000E3,5.575014937E1 +1.965679000E3,5.801461965E1 +1.965931000E3,5.400244473E1 +1.966191000E3,5.474887871E1 +1.966525000E3,5.196538635E1 +1.966783000E3,5.536524974E1 +1.967040000E3,5.974878933E1 +1.967338000E3,6.200932986E1 +1.967644000E3,6.295299888E1 +1.967909000E3,6.272635154E1 +1.968153000E3,5.902465660E1 +1.968474000E3,5.897159976E1 +1.968773000E3,5.506910037E1 +1.969014000E3,5.622897524E1 +1.969254000E3,5.457019516E1 +1.969505000E3,5.648049168E1 +1.969892000E3,5.656883155E1 +1.970152000E3,5.598423772E1 +1.970446000E3,5.186768597E1 +1.970726000E3,5.526177698E1 +1.971020000E3,5.810907246E1 +1.971304000E3,5.262875480E1 +1.971613000E3,5.141696402E1 +1.971915000E3,5.298264424E1 +1.972196000E3,5.641801556E1 +1.972483000E3,5.228737642E1 +1.972725000E3,5.649656740E1 +1.973036000E3,5.867645632E1 +1.973323000E3,5.679238187E1 +1.973633000E3,5.959682402E1 +1.973935000E3,5.617109756E1 +1.974236000E3,5.473085666E1 +1.974547000E3,5.589564412E1 +1.974836000E3,5.691193712E1 +1.975136000E3,5.808545953E1 +1.975385000E3,5.922478363E1 +1.975631000E3,5.707996013E1 +1.975881000E3,5.820923707E1 +1.976194000E3,5.897957095E1 +1.976453000E3,6.019944728E1 +1.976814000E3,6.472960186E1 +1.977076000E3,6.312075290E1 +1.977356000E3,5.886370461E1 +1.977618000E3,5.750754913E1 +1.977917000E3,5.531180501E1 +1.978189000E3,5.815410032E1 +1.978463000E3,5.735965971E1 +1.978732000E3,5.593071322E1 +1.978999000E3,5.835041964E1 +1.979245000E3,5.646810288E1 +1.979493000E3,5.392299875E1 +1.979902000E3,5.430590311E1 +1.980142000E3,5.447583546E1 +1.980384000E3,5.260389735E1 +1.980632000E3,5.537561423E1 +1.980873000E3,5.836960119E1 +1.981120000E3,5.425821286E1 +1.981389000E3,5.153336720E1 +1.981618000E3,5.420085973E1 +1.981915000E3,5.457985954E1 +1.982165000E3,5.637026749E1 +1.982404000E3,6.009656118E1 +1.982718000E3,5.903298531E1 +1.983029000E3,5.665152425E1 +1.983296000E3,5.778918758E1 +1.983538000E3,5.444374512E1 +1.983786000E3,5.619088618E1 +1.984047000E3,6.088482249E1 +1.984304000E3,5.678390940E1 +1.984575000E3,5.873820942E1 +1.984842000E3,6.004736340E1 +1.985142000E3,6.191465398E1 +1.985405000E3,6.154032648E1 +1.985653000E3,5.967034113E1 +1.985913000E3,5.855925349E1 +1.986211000E3,5.529356341E1 +1.986557000E3,5.823190054E1 +1.986847000E3,5.749679599E1 +1.987098000E3,5.855123449E1 +1.987369000E3,5.999203293E1 +1.987610000E3,6.139424716E1 +1.987876000E3,5.730078222E1 +1.988126000E3,5.649537684E1 +1.988425000E3,5.872458305E1 +1.988727000E3,5.704322852E1 +1.989024000E3,6.264447151E1 +1.989326000E3,5.763604303E1 +1.989641000E3,5.657919006E1 +1.989961000E3,5.706004491E1 +1.990255000E3,6.115159729E1 +1.990571000E3,5.721964371E1 +1.990829000E3,5.780420781E1 +1.991088000E3,5.782228640E1 +1.991353000E3,5.791642518E1 +1.991611000E3,5.820065680E1 +1.991935000E3,5.675756460E1 +1.992174000E3,5.720433643E1 +1.992482000E3,5.907701380E1 +1.992770000E3,5.791335620E1 +1.993107000E3,5.504589678E1 +1.993369000E3,6.117578252E1 +1.993619000E3,5.902046786E1 +1.993912000E3,6.024153080E1 +1.994216000E3,6.061721402E1 +1.994464000E3,6.185610038E1 +1.994715000E3,5.902440055E1 +1.995005000E3,6.112374185E1 +1.995249000E3,5.664710018E1 +1.995551000E3,5.841351492E1 +1.995787000E3,5.961393992E1 +1.996119000E3,5.614463215E1 +1.996387000E3,5.528223904E1 +1.996647000E3,5.706960328E1 +1.996947000E3,5.544195306E1 +1.997203000E3,5.747091679E1 +1.997452000E3,5.434233120E1 +1.997769000E3,5.794847441E1 +1.998019000E3,5.504963001E1 +1.998267000E3,5.470768853E1 +1.998498000E3,6.426300701E1 +1.998789000E3,6.070245213E1 +1.999090000E3,5.893271279E1 +1.999390000E3,5.873668669E1 +1.999698000E3,6.355663744E1 +1.999962000E3,6.500393379E1 +2.000214000E3,6.177640112E1 +2.000471000E3,6.122167361E1 +2.000775000E3,5.982616779E1 +2.001079000E3,5.944943300E1 +2.001339000E3,5.772707313E1 +2.001595000E3,5.934980117E1 +2.001862000E3,6.221301291E1 +2.002160000E3,6.098009785E1 +2.002491000E3,6.205877653E1 +2.002758000E3,5.978743388E1 +2.003062000E3,6.141065367E1 +2.003307000E3,6.146860620E1 +2.003555000E3,6.323368939E1 +2.003884000E3,6.072009355E1 +2.004185000E3,6.072017978E1 +2.004424000E3,6.079512782E1 +2.004673000E3,6.651000141E1 +2.004939000E3,6.185812181E1 +2.005202000E3,5.705353418E1 +2.005472000E3,5.820400818E1 +2.005800000E3,5.682542431E1 +2.006070000E3,6.224932691E1 +2.006350000E3,5.654791681E1 +2.006601000E3,6.160831985E1 +2.006857000E3,6.443497299E1 +2.007101000E3,6.091208862E1 +2.007395000E3,5.867323811E1 +2.007635000E3,5.850229824E1 +2.007945000E3,6.307832054E1 +2.008197000E3,5.931313312E1 +2.008453000E3,5.632990721E1 +2.008711000E3,5.662998085E1 +2.009032000E3,5.416655753E1 +2.009268000E3,6.273936844E1 +2.009521000E3,6.129068926E1 +2.009786000E3,6.485712301E1 +2.010037000E3,6.605690213E1 +2.010298000E3,6.243431425E1 +2.010541000E3,6.062714733E1 +2.010780000E3,6.369220544E1 +2.011082000E3,5.933701247E1 +2.011330000E3,6.141658123E1 +2.011605000E3,6.232326760E1 +2.011893000E3,5.983132844E1 +2.012226000E3,6.085684837E1 +2.012489000E3,5.844434641E1 +2.012752000E3,5.992485437E1 +2.013005000E3,5.745164278E1 +2.013272000E3,5.489362140E1 +2.013573000E3,5.734004331E1 +2.013861000E3,5.569303233E1 +2.014170000E3,5.619919203E1 +2.014467000E3,5.719248521E1 +2.014715000E3,5.898607642E1 +2.015015000E3,5.312334941E1 +2.015258000E3,4.707687024E1 +2.015594000E3,5.326213693E1 +2.015822000E3,4.977107581E1 +2.016071000E3,5.399380901E1 +2.016333000E3,5.528915982E1 +2.016634000E3,5.648344312E1 +2.016879000E3,5.853194276E1 +2.017143000E3,5.969968429E1 +2.017429000E3,6.121498547E1 +2.017723000E3,5.933414775E1 +2.017961000E3,6.375558171E1 +2.018248000E3,6.102538403E1 +2.018558000E3,6.066629858E1 +2.018830000E3,5.238394429E1 +2.019065000E3,5.528030903E1 +2.019316000E3,5.711235169E1 +2.019578000E3,6.069913503E1 +2.019847000E3,5.344730110E1 +2.020093000E3,5.593398360E1 +2.020413000E3,5.112453486E1 +2.020668000E3,5.529600172E1 +2.020922000E3,5.816841553E1 +2.021177000E3,6.105447683E1 +2.021449000E3,5.967528890E1 +2.021707000E3,5.677568689E1 +2.022115000E3,5.613246875E1 +2.022403000E3,5.846674311E1 +2.022679000E3,5.999468936E1 +2.022930000E3,6.268951545E1 +2.023232000E3,6.037378186E1 +2.023532000E3,6.123290650E1 +2.023784000E3,6.425880775E1 +2.024094000E3,6.043334594E1 +2.024356000E3,6.287321918E1 +2.024616000E3,6.178703582E1 +2.024868000E3,5.974424575E1 +2.025152000E3,5.863905018E1 +2.025429000E3,5.669082005E1 +2.025716000E3,6.192616195E1 +2.026008000E3,6.367561928E1 +2.026300000E3,6.061621393E1 +2.026543000E3,6.411900249E1 +2.026802000E3,6.060951858E1 +2.027066000E3,5.606119041E1 +2.027395000E3,5.099901519E1 +2.027693000E3,5.622472082E1 +2.027945000E3,5.354940616E1 +2.028237000E3,6.282566888E1 +2.028553000E3,5.775523802E1 +2.028868000E3,6.095006183E1 +2.029133000E3,6.333727439E1 +2.029399000E3,5.925545982E1 +2.029660000E3,6.045827699E1 +2.029962000E3,5.594587825E1 +2.030223000E3,5.708579081E1 +2.030478000E3,5.777704597E1 +2.030737000E3,5.406349508E1 +2.030990000E3,5.544037764E1 +2.031246000E3,5.912518025E1 +2.031508000E3,5.924806900E1 +2.031864000E3,6.105667153E1 +2.032110000E3,5.838466956E1 +2.032350000E3,5.923100201E1 +2.032598000E3,6.024290558E1 +2.032866000E3,5.971089342E1 +2.033112000E3,5.478665804E1 +2.033351000E3,5.966531235E1 +2.033644000E3,5.755565544E1 +2.033892000E3,5.982004182E1 +2.034190000E3,5.797424789E1 +2.034425000E3,5.856301863E1 +2.034717000E3,6.325478319E1 +2.035053000E3,6.168254294E1 +2.035364000E3,6.188857455E1 +2.035619000E3,6.156039581E1 +2.035901000E3,6.235770270E1 +2.036169000E3,6.262779828E1 +2.036471000E3,6.142542176E1 +2.036764000E3,5.923845966E1 +2.037022000E3,5.827266837E1 +2.037307000E3,6.314641141E1 +2.037615000E3,5.460230698E1 +2.037870000E3,5.396400232E1 +2.038120000E3,5.561122002E1 +2.038463000E3,5.928400391E1 +2.038767000E3,5.668934966E1 +2.039069000E3,5.831653467E1 +2.039316000E3,5.267103167E1 +2.039622000E3,5.557794232E1 +2.039859000E3,5.543606804E1 +2.040196000E3,5.836770370E1 +2.040499000E3,5.678092478E1 +2.040751000E3,5.612506795E1 +2.041024000E3,5.868430679E1 +2.041274000E3,5.264121586E1 +2.041581000E3,5.828774790E1 +2.041841000E3,5.647338053E1 +2.042088000E3,6.053709731E1 +2.042403000E3,5.614689861E1 +2.042691000E3,5.714845923E1 +2.042944000E3,5.256418368E1 +2.043191000E3,5.601486494E1 +2.043466000E3,5.810869150E1 +2.043715000E3,5.529893852E1 +2.043979000E3,5.708153712E1 +2.044245000E3,5.690179830E1 +2.044568000E3,5.994555064E1 +2.044825000E3,6.172126409E1 +2.045096000E3,6.015473895E1 +2.045377000E3,5.509344178E1 +2.045629000E3,5.568915719E1 +2.045902000E3,5.938619751E1 +2.046155000E3,5.534852098E1 +2.046409000E3,5.905391706E1 +2.046693000E3,5.250115201E1 +2.046947000E3,5.587771233E1 +2.047277000E3,5.599930929E1 +2.047517000E3,5.586822515E1 +2.047803000E3,5.740436533E1 +2.048105000E3,5.413600866E1 +2.048476000E3,5.595836709E1 +2.048737000E3,5.982743631E1 +2.048992000E3,6.001131240E1 +2.049305000E3,5.629713962E1 +2.049568000E3,5.505265617E1 +2.049904000E3,5.686004167E1 +2.050199000E3,6.078932545E1 +2.050470000E3,5.919030857E1 +2.050773000E3,5.640754436E1 +2.051052000E3,5.864124078E1 +2.051311000E3,5.683150656E1 +2.051642000E3,5.391893615E1 +2.051926000E3,4.513639699E1 +2.052174000E3,5.750824000E1 +2.052467000E3,5.945309138E1 +2.052703000E3,6.260915402E1 +2.052981000E3,6.017408744E1 +2.053276000E3,6.158293130E1 +2.053516000E3,6.279041899E1 +2.053759000E3,6.005362243E1 +2.054030000E3,5.776050932E1 +2.054357000E3,5.906607942E1 +2.054642000E3,6.002924771E1 +2.054978000E3,5.708591672E1 +2.055267000E3,5.932996992E1 +2.055552000E3,5.830703641E1 +2.055812000E3,5.428102985E1 +2.056063000E3,5.893384546E1 +2.056382000E3,6.028305726E1 +2.056682000E3,5.904357096E1 +2.056923000E3,6.015407432E1 +2.057171000E3,5.801677968E1 +2.057418000E3,6.561794532E1 +2.057665000E3,6.751214025E1 +2.057959000E3,5.899748641E1 +2.058279000E3,5.616162884E1 +2.058571000E3,5.813941707E1 +2.058834000E3,6.236684118E1 +2.059132000E3,6.058455193E1 +2.059376000E3,6.004963560E1 +2.059687000E3,6.255152045E1 +2.059984000E3,6.155697025E1 +2.060225000E3,6.124056229E1 +2.060517000E3,6.072549607E1 +2.060756000E3,6.119225814E1 +2.061060000E3,5.953618039E1 +2.061302000E3,5.869582322E1 +2.061578000E3,6.248269042E1 +2.061841000E3,6.070173510E1 +2.062089000E3,6.023992255E1 +2.062337000E3,5.848175462E1 +2.062607000E3,5.092907116E1 +2.062859000E3,5.442118268E1 +2.063124000E3,5.298599309E1 +2.063425000E3,6.030333428E1 +2.063671000E3,5.835700379E1 +2.063954000E3,5.943633389E1 +2.064268000E3,5.761479859E1 +2.064577000E3,5.520238299E1 +2.064822000E3,5.901822557E1 +2.065074000E3,5.705952734E1 +2.065339000E3,6.136116330E1 +2.065603000E3,5.746483296E1 +2.065865000E3,5.867757380E1 +2.066141000E3,5.709322981E1 +2.066441000E3,5.775131141E1 +2.066691000E3,5.886237327E1 +2.067036000E3,5.617972984E1 +2.067288000E3,5.802507148E1 +2.067560000E3,6.044497816E1 +2.067891000E3,5.450044868E1 +2.068148000E3,5.616761260E1 +2.068412000E3,6.243097888E1 +2.068673000E3,5.783788439E1 +2.068946000E3,5.764761585E1 +2.069196000E3,5.683737954E1 +2.069468000E3,5.609890848E1 +2.069778000E3,5.465619904E1 +2.070034000E3,5.368960846E1 +2.070328000E3,6.032893819E1 +2.070574000E3,5.862927742E1 +2.070842000E3,5.635830209E1 +2.071101000E3,5.822198053E1 +2.071339000E3,5.691346983E1 +2.071597000E3,5.865778618E1 +2.071860000E3,5.810560725E1 +2.072128000E3,5.968009174E1 +2.072425000E3,5.833852533E1 +2.072667000E3,5.784540163E1 +2.072934000E3,5.644439458E1 +2.073184000E3,5.178260396E1 +2.073488000E3,5.751445421E1 +2.073769000E3,5.974800721E1 +2.074068000E3,6.534291023E1 +2.074348000E3,6.371076652E1 +2.074624000E3,6.156132937E1 +2.074877000E3,6.012113548E1 +2.075119000E3,6.026351151E1 +2.075377000E3,6.142675581E1 +2.075661000E3,6.194478144E1 +2.075914000E3,6.183865569E1 +2.076267000E3,6.387512541E1 +2.076547000E3,6.077311287E1 +2.076803000E3,6.130963963E1 +2.077056000E3,5.862622582E1 +2.077295000E3,5.463497219E1 +2.077610000E3,5.484231095E1 +2.077891000E3,6.099801434E1 +2.078171000E3,5.475621164E1 +2.078466000E3,5.955577801E1 +2.078709000E3,5.720097088E1 +2.078954000E3,5.661944912E1 +2.079224000E3,5.443336360E1 +2.079503000E3,5.917559782E1 +2.079800000E3,5.424380486E1 +2.080057000E3,6.013762169E1 +2.080307000E3,6.100643768E1 +2.080558000E3,6.205128007E1 +2.080810000E3,6.007904071E1 +2.081092000E3,6.423414837E1 +2.081354000E3,5.938817614E1 +2.081601000E3,6.006860062E1 +2.081845000E3,5.833570272E1 +2.082143000E3,5.962915676E1 +2.082396000E3,5.844615966E1 +2.082663000E3,5.932060291E1 +2.082921000E3,6.037844323E1 +2.083227000E3,5.719168160E1 +2.083487000E3,5.597578938E1 +2.083743000E3,5.236775830E1 +2.084062000E3,5.471900653E1 +2.084318000E3,5.178371688E1 +2.084618000E3,5.707729304E1 +2.084858000E3,5.526812689E1 +2.085154000E3,5.716405930E1 +2.085391000E3,5.478798233E1 +2.085687000E3,5.496315929E1 +2.085932000E3,5.701239101E1 +2.086228000E3,5.776438308E1 +2.086467000E3,5.628202894E1 +2.086760000E3,5.042244376E1 +2.087015000E3,5.775963511E1 +2.087362000E3,4.982890988E1 +2.087671000E3,4.785672217E1 +2.087922000E3,4.762697394E1 +2.088178000E3,5.046726223E1 +2.088438000E3,4.890262424E1 +2.088711000E3,5.501277631E1 +2.088981000E3,5.666001705E1 +2.089249000E3,6.014252161E1 +2.089513000E3,5.925311989E1 +2.089806000E3,6.173820636E1 +2.090063000E3,5.350884215E1 +2.090366000E3,5.736408779E1 +2.090744000E3,5.450936109E1 +2.091005000E3,5.763377323E1 +2.091253000E3,6.042269191E1 +2.091515000E3,5.484903903E1 +2.091757000E3,5.882101591E1 +2.092028000E3,5.833139845E1 +2.092280000E3,5.703430671E1 +2.092527000E3,5.247783814E1 +2.092809000E3,5.233323676E1 +2.093037000E3,5.202869643E1 +2.093354000E3,5.628845797E1 +2.093634000E3,5.325396544E1 +2.094006000E3,5.654992892E1 +2.094280000E3,5.713253789E1 +2.094541000E3,5.967664240E1 +2.094800000E3,5.750232678E1 +2.095069000E3,5.544480371E1 +2.095333000E3,5.462176641E1 +2.095596000E3,5.811248949E1 +2.095853000E3,6.196847972E1 +2.096192000E3,5.842850461E1 +2.096488000E3,5.597774452E1 +2.096726000E3,5.601282925E1 +2.097104000E3,5.625832805E1 +2.097364000E3,5.315488909E1 +2.097602000E3,5.287250653E1 +2.097844000E3,5.523708836E1 +2.098081000E3,5.724292600E1 +2.098340000E3,5.659511238E1 +2.098670000E3,5.675324149E1 +2.098945000E3,5.485884276E1 +2.099219000E3,5.694143956E1 +2.099469000E3,5.561655413E1 +2.099765000E3,5.844909410E1 +2.100011000E3,6.135621316E1 +2.100343000E3,5.968766012E1 +2.100584000E3,5.173347950E1 +2.100832000E3,5.415548255E1 +2.101090000E3,5.271968845E1 +2.101339000E3,5.007174890E1 +2.101624000E3,5.279525002E1 +2.101895000E3,5.358558767E1 +2.102197000E3,5.559048142E1 +2.102438000E3,5.476305303E1 +2.102705000E3,5.237114911E1 +2.102947000E3,5.014972007E1 +2.103218000E3,4.895902935E1 +2.103469000E3,5.192053997E1 +2.103853000E3,4.647138436E1 +2.104101000E3,4.837766327E1 +2.104448000E3,5.088929287E1 +2.104740000E3,5.561591777E1 +2.104997000E3,5.440319534E1 +2.105260000E3,5.347164399E1 +2.105561000E3,5.151610441E1 +2.105813000E3,5.075382634E1 +2.106121000E3,5.244425755E1 +2.106357000E3,5.269617654E1 +2.106663000E3,5.149027406E1 +2.106954000E3,5.659456733E1 +2.107266000E3,5.282561460E1 +2.107606000E3,5.407918273E1 +2.107883000E3,5.643922092E1 +2.108164000E3,5.169657105E1 +2.108480000E3,5.713744586E1 +2.108748000E3,5.931186178E1 +2.109003000E3,5.645689600E1 +2.109252000E3,5.322874786E1 +2.109552000E3,5.363731782E1 +2.109821000E3,5.353815648E1 +2.110077000E3,5.445551750E1 +2.110418000E3,5.491110228E1 +2.110669000E3,5.291647814E1 +2.110921000E3,5.202914132E1 +2.111180000E3,5.363241827E1 +2.111479000E3,5.566624291E1 +2.111721000E3,5.645238247E1 +2.112027000E3,5.458458697E1 +2.112294000E3,5.469783372E1 +2.112597000E3,5.582449562E1 +2.112854000E3,5.595416398E1 +2.113105000E3,5.113785865E1 +2.113352000E3,6.248282803E1 +2.113711000E3,5.880495226E1 +2.113968000E3,5.941805617E1 +2.114248000E3,5.561632009E1 +2.114507000E3,5.501810850E1 +2.114754000E3,5.936291007E1 +2.115053000E3,6.127733734E1 +2.115321000E3,6.057491273E1 +2.115616000E3,6.127323198E1 +2.115893000E3,5.760488174E1 +2.116193000E3,6.030881831E1 +2.116434000E3,5.967518116E1 +2.116722000E3,5.720938908E1 +2.117066000E3,5.605932878E1 +2.117338000E3,6.068190844E1 +2.117598000E3,5.400374866E1 +2.117892000E3,5.332007667E1 +2.118133000E3,4.991979059E1 +2.118428000E3,5.700198654E1 +2.118666000E3,5.878418983E1 +2.118922000E3,5.703766890E1 +2.119230000E3,5.731012811E1 +2.119515000E3,5.865622099E1 +2.119741000E3,5.772295719E1 +2.120015000E3,5.851982083E1 +2.120322000E3,5.958645129E1 +2.120616000E3,6.233814130E1 +2.120861000E3,6.002711287E1 +2.121162000E3,5.939190004E1 +2.121437000E3,5.758195225E1 +2.121690000E3,5.564648712E1 +2.121946000E3,5.336629511E1 +2.122218000E3,5.199121426E1 +2.122476000E3,5.906368298E1 +2.122759000E3,5.917930836E1 +2.123014000E3,5.824882047E1 +2.123266000E3,5.770359270E1 +2.123492000E3,5.695638802E1 +2.123777000E3,5.720151485E1 +2.124027000E3,6.045411810E1 +2.124327000E3,5.540258870E1 +2.124575000E3,5.828000252E1 +2.124835000E3,5.500577731E1 +2.125106000E3,5.926473821E1 +2.125354000E3,5.472888078E1 +2.125611000E3,5.530970077E1 +2.125862000E3,5.595037084E1 +2.126117000E3,5.439239133E1 +2.126432000E3,5.961943996E1 +2.126692000E3,5.841091801E1 +2.126944000E3,5.863137443E1 +2.127282000E3,5.731398304E1 +2.127577000E3,5.665374527E1 +2.127843000E3,5.476493539E1 +2.128129000E3,5.580929465E1 +2.128437000E3,5.565551021E1 +2.128739000E3,5.869101147E1 +2.129026000E3,5.827114612E1 +2.129307000E3,5.507536074E1 +2.129577000E3,5.532393691E1 +2.129934000E3,5.233850306E1 +2.130215000E3,5.514372423E1 +2.130466000E3,5.757947445E1 +2.130714000E3,6.126034226E1 +2.131015000E3,6.074916673E1 +2.131279000E3,5.864911171E1 +2.131564000E3,5.680524431E1 +2.131825000E3,6.002252741E1 +2.132078000E3,5.953076168E1 +2.132390000E3,6.027427680E1 +2.132647000E3,5.955779136E1 +2.132902000E3,5.835756058E1 +2.133223000E3,6.286787860E1 +2.133471000E3,6.057291506E1 +2.133724000E3,5.893793659E1 +2.134002000E3,5.508555746E1 +2.134257000E3,5.619881839E1 +2.134512000E3,5.505764062E1 +2.134784000E3,5.808922162E1 +2.135054000E3,5.334583096E1 +2.135313000E3,5.298019930E1 +2.135595000E3,5.025342296E1 +2.135812000E3,5.409382682E1 +2.136057000E3,5.580950424E1 +2.136332000E3,5.523743716E1 +2.136661000E3,5.499005541E1 +2.136917000E3,5.745623005E1 +2.137196000E3,5.149169849E1 +2.137449000E3,5.261206885E1 +2.137711000E3,5.487518376E1 +2.138022000E3,5.898871991E1 +2.138270000E3,5.852026830E1 +2.138564000E3,5.868858262E1 +2.138802000E3,5.736353209E1 +2.139066000E3,5.529465652E1 +2.139332000E3,5.762578865E1 +2.139672000E3,5.790185487E1 +2.139930000E3,5.792373283E1 +2.140278000E3,5.597904656E1 +2.140535000E3,5.355980456E1 +2.140856000E3,5.411887429E1 +2.141146000E3,5.094976839E1 +2.141467000E3,5.658279242E1 +2.141735000E3,6.043792292E1 +2.142041000E3,5.996632022E1 +2.142276000E3,6.230155616E1 +2.142526000E3,6.102528468E1 +2.142783000E3,5.770338577E1 +2.143124000E3,5.827243883E1 +2.143406000E3,5.367650147E1 +2.143645000E3,5.777094487E1 +2.143915000E3,5.851595499E1 +2.144175000E3,5.573729509E1 +2.144454000E3,5.467626304E1 +2.144700000E3,5.699765591E1 +2.144968000E3,5.692170932E1 +2.145246000E3,6.030210344E1 +2.145550000E3,5.876913066E1 +2.145797000E3,5.698149837E1 +2.146042000E3,5.982717784E1 +2.146368000E3,5.905293636E1 +2.146676000E3,5.947032966E1 +2.146922000E3,5.910471730E1 +2.147225000E3,6.065874797E1 +2.147524000E3,5.680135408E1 +2.147831000E3,5.451199701E1 +2.148090000E3,5.301325775E1 +2.148365000E3,5.466040661E1 +2.148665000E3,5.658013689E1 +2.148952000E3,5.410667827E1 +2.149249000E3,5.788683658E1 +2.149597000E3,5.873903650E1 +2.149910000E3,5.314379433E1 +2.150150000E3,5.564952940E1 +2.150451000E3,6.000220607E1 +2.150691000E3,6.235870620E1 +2.150965000E3,6.387461990E1 +2.151194000E3,6.491001134E1 +2.151449000E3,5.932544814E1 +2.151756000E3,6.117684525E1 +2.152011000E3,6.059885605E1 +2.152282000E3,6.303246617E1 +2.152596000E3,6.399854390E1 +2.152961000E3,6.063746268E1 +2.153223000E3,6.122116723E1 +2.153495000E3,5.809397592E1 +2.153749000E3,5.903784259E1 +2.153999000E3,6.047826717E1 +2.154283000E3,5.846467986E1 +2.154537000E3,6.226879102E1 +2.154785000E3,5.980611807E1 +2.155079000E3,5.787450321E1 +2.155375000E3,5.676059962E1 +2.155616000E3,5.395823696E1 +2.155912000E3,5.953639288E1 +2.156221000E3,5.971614724E1 +2.156510000E3,6.039969801E1 +2.156758000E3,5.898776738E1 +2.157015000E3,6.100474003E1 +2.157289000E3,5.750129682E1 +2.157591000E3,5.995540643E1 +2.157844000E3,5.628303244E1 +2.158104000E3,5.892686601E1 +2.158366000E3,5.712884748E1 +2.158667000E3,5.727860760E1 +2.158932000E3,5.313556696E1 +2.159288000E3,5.635583768E1 +2.159555000E3,5.929473664E1 +2.159809000E3,5.396180560E1 +2.160112000E3,5.807023999E1 +2.160354000E3,5.639240346E1 +2.160608000E3,5.917728814E1 +2.160855000E3,5.429000157E1 +2.161130000E3,5.397827395E1 +2.161395000E3,5.647751800E1 +2.161656000E3,5.342605760E1 +2.162007000E3,5.324373839E1 +2.162263000E3,5.439383591E1 +2.162517000E3,5.727066505E1 +2.162888000E3,5.995593964E1 +2.163140000E3,6.130649482E1 +2.163392000E3,6.228130821E1 +2.163644000E3,6.279179388E1 +2.163938000E3,5.559527300E1 +2.164178000E3,5.200550071E1 +2.164481000E3,5.797363767E1 +2.164757000E3,5.902554678E1 +2.165040000E3,5.834647622E1 +2.165303000E3,5.713285380E1 +2.165575000E3,6.343633700E1 +2.165850000E3,5.896208706E1 +2.166219000E3,5.624501583E1 +2.166483000E3,5.696603075E1 +2.166769000E3,5.736978604E1 +2.167027000E3,5.837475894E1 +2.167278000E3,5.768129207E1 +2.167593000E3,5.660761865E1 +2.167856000E3,5.680076310E1 +2.168110000E3,5.883044450E1 +2.168385000E3,5.772028600E1 +2.168649000E3,5.342008664E1 +2.168914000E3,5.359113324E1 +2.169168000E3,5.849769703E1 +2.169536000E3,6.267181821E1 +2.169793000E3,5.719603223E1 +2.170040000E3,5.397233107E1 +2.170287000E3,4.861027503E1 +2.170579000E3,5.741564583E1 +2.170822000E3,6.207812430E1 +2.171115000E3,5.827753689E1 +2.171365000E3,6.042202215E1 +2.171629000E3,5.516417228E1 +2.171895000E3,4.912315476E1 +2.172163000E3,4.718316305E1 +2.172446000E3,5.363129541E1 +2.172813000E3,5.322378335E1 +2.173087000E3,5.228499961E1 +2.173349000E3,5.364722432E1 +2.173618000E3,5.964999675E1 +2.173917000E3,6.116591719E1 +2.174174000E3,5.668310324E1 +2.174436000E3,5.538937699E1 +2.174688000E3,5.539330891E1 +2.174944000E3,5.678019084E1 +2.175197000E3,5.655985061E1 +2.175490000E3,6.211643319E1 +2.175751000E3,5.899842059E1 +2.176153000E3,6.042080027E1 +2.176454000E3,5.956376587E1 +2.176730000E3,5.896716838E1 +2.177048000E3,5.729778676E1 +2.177305000E3,5.512323216E1 +2.177616000E3,5.573124529E1 +2.177883000E3,5.390669828E1 +2.178139000E3,5.435017850E1 +2.178403000E3,5.275779180E1 +2.178672000E3,5.469054235E1 +2.178938000E3,5.701832565E1 +2.179201000E3,6.063134316E1 +2.179540000E3,6.461030243E1 +2.179799000E3,6.345934666E1 +2.180043000E3,6.255021373E1 +2.180348000E3,6.265836689E1 +2.180640000E3,6.125083403E1 +2.180878000E3,5.721943432E1 +2.181125000E3,5.584429631E1 +2.181407000E3,5.679219567E1 +2.181647000E3,5.506189996E1 +2.181962000E3,5.950753578E1 +2.182227000E3,5.684863204E1 +2.182499000E3,5.318048388E1 +2.182825000E3,5.856807028E1 +2.183124000E3,6.201159961E1 +2.183360000E3,5.994279105E1 +2.183661000E3,6.155626338E1 +2.183904000E3,5.760612799E1 +2.184197000E3,5.557219911E1 +2.184436000E3,5.720299401E1 +2.184730000E3,5.496492062E1 +2.184965000E3,5.287669523E1 +2.185272000E3,5.534018340E1 +2.185572000E3,5.047897567E1 +2.185897000E3,5.289532450E1 +2.186149000E3,5.169587435E1 +2.186428000E3,5.811856565E1 +2.186722000E3,5.829930976E1 +2.187016000E3,5.767171180E1 +2.187297000E3,5.167293983E1 +2.187542000E3,5.634712904E1 +2.187793000E3,5.452173951E1 +2.188038000E3,5.242356157E1 +2.188332000E3,5.476946331E1 +2.188570000E3,5.506415879E1 +2.188807000E3,5.842757277E1 +2.189123000E3,5.579731569E1 +2.189400000E3,5.735467547E1 +2.189707000E3,5.510643622E1 +2.189947000E3,5.399605596E1 +2.190247000E3,5.231812124E1 +2.190482000E3,5.397423501E1 +2.190722000E3,5.467291530E1 +2.190972000E3,5.750340972E1 +2.191219000E3,5.451621797E1 +2.191527000E3,5.544744059E1 +2.191775000E3,5.570906247E1 +2.192040000E3,5.570238792E1 +2.192395000E3,5.704729905E1 +2.192674000E3,5.662202644E1 +2.192969000E3,6.130245708E1 +2.193206000E3,5.842239411E1 +2.193505000E3,5.813812757E1 +2.193745000E3,5.643123308E1 +2.194038000E3,5.810403241E1 +2.194275000E3,5.863690353E1 +2.194574000E3,5.519980518E1 +2.194810000E3,5.381530940E1 +2.195092000E3,5.781601666E1 +2.195335000E3,5.699265058E1 +2.195608000E3,5.477338243E1 +2.195929000E3,5.695412826E1 +2.196188000E3,5.575935497E1 +2.196439000E3,5.738570553E1 +2.196686000E3,6.194168224E1 +2.196969000E3,5.888525061E1 +2.197270000E3,5.830791470E1 +2.197516000E3,5.904778886E1 +2.197822000E3,5.987539712E1 +2.198117000E3,5.910637217E1 +2.198355000E3,5.676446576E1 +2.198673000E3,5.632729175E1 +2.198920000E3,5.826507178E1 +2.199227000E3,6.221847088E1 +2.199493000E3,6.023584539E1 +2.199739000E3,6.378124478E1 +2.199975000E3,6.457706819E1 +2.200218000E3,5.781084826E1 +2.200471000E3,5.833307765E1 +2.200715000E3,5.849295856E1 +2.200984000E3,5.695016071E1 +2.201255000E3,5.945608920E1 +2.201511000E3,5.923858391E1 +2.201821000E3,5.975381188E1 +2.202050000E3,5.657071344E1 +2.202297000E3,5.582353283E1 +2.202552000E3,5.634201272E1 +2.202803000E3,5.842061156E1 +2.203080000E3,5.511323996E1 +2.203339000E3,5.333816234E1 +2.203589000E3,5.586132206E1 +2.203867000E3,5.612282959E1 +2.204151000E3,5.390907932E1 +2.204405000E3,5.581501331E1 +2.204648000E3,5.691201261E1 +2.204938000E3,5.605209961E1 +2.205271000E3,5.337227455E1 +2.205520000E3,5.726868677E1 +2.205824000E3,5.678400386E1 +2.206068000E3,5.598615724E1 +2.206327000E3,6.245548090E1 +2.206634000E3,5.788335624E1 +2.206927000E3,5.672312442E1 +2.207166000E3,5.700846075E1 +2.207464000E3,5.693157148E1 +2.207703000E3,5.667671942E1 +2.207995000E3,5.655907845E1 +2.208344000E3,5.694003799E1 +2.208592000E3,5.812693102E1 +2.208844000E3,5.305590014E1 +2.209133000E3,5.963333488E1 +2.209376000E3,6.125764761E1 +2.209621000E3,5.708540532E1 +2.209865000E3,5.539532482E1 +2.210177000E3,6.086117928E1 +2.210432000E3,5.871599576E1 +2.210705000E3,5.720891289E1 +2.210929000E3,5.859137268E1 +2.211185000E3,5.492761595E1 +2.211566000E3,5.458369125E1 +2.211811000E3,5.704243717E1 +2.212094000E3,5.948204172E1 +2.212325000E3,5.442994388E1 +2.212570000E3,5.607391365E1 +2.212815000E3,5.349643391E1 +2.213089000E3,5.518134225E1 +2.213397000E3,5.879499176E1 +2.213659000E3,5.918920409E1 +2.213917000E3,6.317166487E1 +2.214205000E3,5.773325998E1 +2.214505000E3,6.021667659E1 +2.214834000E3,5.707564648E1 +2.215074000E3,5.411436798E1 +2.215412000E3,5.705541238E1 +2.215699000E3,6.721672427E1 +2.215946000E3,6.130402498E1 +2.216241000E3,5.914242022E1 +2.216493000E3,5.881747375E1 +2.216786000E3,5.920115687E1 +2.217030000E3,5.981753209E1 +2.217325000E3,5.379848698E1 +2.217566000E3,5.498057230E1 +2.217931000E3,5.647867672E1 +2.218210000E3,5.460935805E1 +2.218440000E3,5.579228446E1 +2.218740000E3,5.598523495E1 +2.218992000E3,5.501198671E1 +2.219248000E3,5.270876730E1 +2.219495000E3,5.711255338E1 +2.219767000E3,5.276578476E1 +2.220009000E3,6.171644376E1 +2.220307000E3,5.760035427E1 +2.220557000E3,6.039071701E1 +2.220820000E3,5.947563028E1 +2.221166000E3,5.781157464E1 +2.221459000E3,5.689764898E1 +2.221740000E3,5.361204154E1 +2.221998000E3,5.565584232E1 +2.222252000E3,6.236264054E1 +2.222508000E3,5.583706888E1 +2.222794000E3,5.998886151E1 +2.223038000E3,6.067027795E1 +2.223281000E3,5.953550256E1 +2.223512000E3,6.087865846E1 +2.223764000E3,5.880177247E1 +2.224056000E3,5.532032645E1 +2.224389000E3,5.110554887E1 +2.224697000E3,6.082114583E1 +2.224957000E3,6.332269799E1 +2.225225000E3,5.859152014E1 +2.225521000E3,6.312344162E1 +2.225760000E3,6.208500503E1 +2.226003000E3,6.030377984E1 +2.226280000E3,5.890306026E1 +2.226553000E3,6.412257006E1 +2.226813000E3,5.959239884E1 +2.227137000E3,5.603893495E1 +2.227460000E3,5.807576772E1 +2.227717000E3,6.034272760E1 +2.227950000E3,5.678924442E1 +2.228211000E3,5.767938832E1 +2.228489000E3,4.973605337E1 +2.228742000E3,5.227056153E1 +2.229007000E3,4.524576382E1 +2.229320000E3,5.163901012E1 +2.229633000E3,5.791269320E1 +2.229909000E3,5.832692980E1 +2.230223000E3,5.512940778E1 +2.230487000E3,5.639998631E1 +2.230845000E3,6.012111222E1 +2.231113000E3,6.632176219E1 +2.231407000E3,6.692769565E1 +2.231662000E3,6.409372191E1 +2.231945000E3,6.268702605E1 +2.232208000E3,6.192012265E1 +2.232460000E3,5.923306273E1 +2.232717000E3,5.726340446E1 +2.233005000E3,5.708270925E1 +2.233256000E3,6.172203942E1 +2.233510000E3,6.197059155E1 +2.233807000E3,6.691458644E1 +2.234160000E3,6.165007134E1 +2.234422000E3,6.172053486E1 +2.234714000E3,6.148833899E1 +2.234974000E3,6.190331921E1 +2.235253000E3,5.938090919E1 +2.235479000E3,6.223060920E1 +2.235722000E3,6.133640397E1 +2.236028000E3,6.400294095E1 +2.236269000E3,6.581462957E1 +2.236516000E3,6.094953675E1 +2.236828000E3,5.792232456E1 +2.237124000E3,5.750665846E1 +2.237367000E3,5.360734442E1 +2.237668000E3,5.239836763E1 +2.237914000E3,5.189659577E1 +2.238168000E3,5.779541581E1 +2.238431000E3,5.409030702E1 +2.238689000E3,5.064192938E1 +2.238941000E3,4.890244292E1 +2.239235000E3,4.958738332E1 +2.239486000E3,5.093509792E1 +2.239725000E3,5.421091975E1 +2.239970000E3,6.074883769E1 +2.240298000E3,5.611992467E1 +2.240604000E3,4.988071111E1 +2.240900000E3,4.952063126E1 +2.241187000E3,5.282005772E1 +2.241428000E3,5.672648648E1 +2.241685000E3,5.807464117E1 +2.241973000E3,5.565097745E1 +2.242224000E3,5.410363002E1 +2.242475000E3,5.548804216E1 +2.242720000E3,5.862108370E1 +2.242959000E3,5.101243713E1 +2.243259000E3,5.340920814E1 +2.243564000E3,5.471013043E1 +2.243801000E3,5.474536753E1 +2.244062000E3,5.454012147E1 +2.244333000E3,5.594751460E1 +2.244637000E3,5.486159050E1 +2.244913000E3,5.317501502E1 +2.245138000E3,5.100209753E1 +2.245397000E3,5.436827206E1 +2.245643000E3,5.483479867E1 +2.245916000E3,5.150486026E1 +2.246182000E3,5.049924887E1 +2.246449000E3,5.226067252E1 +2.246744000E3,5.389432372E1 +2.247057000E3,6.032791953E1 +2.247330000E3,5.966662928E1 +2.247666000E3,5.824962285E1 +2.247962000E3,5.700720490E1 +2.248202000E3,6.373200887E1 +2.248495000E3,6.648419927E1 +2.248743000E3,5.542652488E1 +2.249036000E3,5.256926371E1 +2.249272000E3,6.053195001E1 +2.249564000E3,4.959074314E1 +2.249800000E3,5.054384460E1 +2.250136000E3,5.008489809E1 +2.250431000E3,5.752384263E1 +2.250666000E3,5.367007636E1 +2.250931000E3,4.851936559E1 +2.251210000E3,4.965482987E1 +2.251497000E3,5.733244198E1 +2.251772000E3,5.370188093E1 +2.251997000E3,5.388650114E1 +2.252246000E3,5.331606518E1 +2.252516000E3,5.534782747E1 +2.252818000E3,5.271944154E1 +2.253047000E3,5.188974945E1 +2.253402000E3,5.040855384E1 +2.253689000E3,5.348452962E1 +2.253965000E3,5.685197701E1 +2.254240000E3,5.699151925E1 +2.254539000E3,5.217481719E1 +2.254794000E3,5.255063115E1 +2.255035000E3,5.258436032E1 +2.255283000E3,5.228429265E1 +2.255592000E3,5.187189315E1 +2.255851000E3,5.089851896E1 +2.256105000E3,5.323192817E1 +2.256387000E3,5.259240607E1 +2.256752000E3,5.489099725E1 +2.257016000E3,5.140699592E1 +2.257276000E3,5.478139635E1 +2.257600000E3,5.508183343E1 +2.257864000E3,5.539199709E1 +2.258160000E3,5.879728075E1 +2.258399000E3,6.145510373E1 +2.258645000E3,6.018082278E1 +2.258890000E3,6.203490998E1 +2.259131000E3,6.051201097E1 +2.259385000E3,5.741582229E1 +2.259629000E3,5.742200481E1 +2.259994000E3,5.205318956E1 +2.260295000E3,5.807019657E1 +2.260539000E3,5.843419178E1 +2.260841000E3,5.543595349E1 +2.261104000E3,5.208978608E1 +2.261348000E3,5.288295424E1 +2.261601000E3,5.593156434E1 +2.261856000E3,5.600009221E1 +2.262108000E3,5.581775464E1 +2.262358000E3,5.037081152E1 +2.262613000E3,5.059162693E1 +2.262916000E3,5.459372597E1 +2.263271000E3,5.581642194E1 +2.263548000E3,5.702582989E1 +2.263802000E3,5.531282217E1 +2.264049000E3,5.356460573E1 +2.264318000E3,5.682743962E1 +2.264564000E3,5.353127135E1 +2.264854000E3,5.962134934E1 +2.265080000E3,5.858968032E1 +2.265326000E3,5.681259568E1 +2.265625000E3,5.635120121E1 +2.265871000E3,5.433379551E1 +2.266211000E3,4.913835205E1 +2.266510000E3,5.243179137E1 +2.266783000E3,4.886918417E1 +2.267043000E3,4.774131335E1 +2.267292000E3,4.892025491E1 +2.267553000E3,4.710213612E1 +2.267796000E3,4.847827931E1 +2.268042000E3,5.624471818E1 +2.268281000E3,5.286977188E1 +2.268548000E3,5.683989489E1 +2.268800000E3,5.459251055E1 +2.269086000E3,5.272841607E1 +2.269389000E3,5.585343514E1 +2.269616000E3,5.452972356E1 +2.269865000E3,5.183250423E1 +2.270167000E3,4.733442261E1 +2.270442000E3,4.736450762E1 +2.270667000E3,4.430645798E1 +2.270915000E3,4.635257501E1 +2.271160000E3,4.914582650E1 +2.271407000E3,4.938157659E1 +2.271656000E3,4.788630853E1 +2.271896000E3,4.778446083E1 +2.272198000E3,5.081637081E1 +2.272482000E3,4.630509256E1 +2.272722000E3,4.551027932E1 +2.273048000E3,5.074623045E1 +2.273321000E3,4.689236254E1 +2.273562000E3,4.960242652E1 +2.273859000E3,5.310274016E1 +2.274104000E3,5.391997859E1 +2.274392000E3,4.854992165E1 +2.274648000E3,4.610161890E1 +2.274915000E3,5.325141064E1 +2.275196000E3,4.823989698E1 +2.275460000E3,5.167706762E1 +2.275772000E3,4.424461998E1 +2.276008000E3,4.957193490E1 +2.276258000E3,4.220429916E1 +2.276545000E3,4.614900045E1 +2.276809000E3,4.247109284E1 +2.277119000E3,5.104311310E1 +2.277385000E3,4.898949856E1 +2.277651000E3,5.033981280E1 +2.277920000E3,4.504255509E1 +2.278210000E3,4.851295637E1 +2.278452000E3,4.975001222E1 +2.278771000E3,5.198599663E1 +2.279101000E3,5.078534391E1 +2.279348000E3,5.056977572E1 +2.279614000E3,4.645427419E1 +2.279894000E3,4.837428182E1 +2.280121000E3,4.672417188E1 +2.280416000E3,4.338010131E1 +2.280671000E3,4.552410696E1 +2.280941000E3,4.107346609E1 +2.281195000E3,4.850760260E1 +2.281477000E3,4.449785068E1 +2.281730000E3,3.834743898E1 +2.282028000E3,3.160451104E1 +2.282275000E3,2.921367430E1 +2.282509000E3,3.929432216E1 +2.282771000E3,3.560833020E1 +2.283021000E3,4.204425230E1 +2.283277000E3,4.897505461E1 +2.283570000E3,4.492050546E1 +2.283802000E3,4.549624302E1 +2.284053000E3,4.703134831E1 +2.284302000E3,4.492779574E1 +2.284580000E3,5.573526523E1 +2.284888000E3,4.583204799E1 +2.285186000E3,3.987632497E1 +2.285426000E3,4.276483306E1 +2.285670000E3,4.196646636E1 +2.285974000E3,4.127295807E1 +2.286241000E3,3.392540836E1 +2.286513000E3,3.045281657E1 +2.286755000E3,3.056149566E1 +2.287058000E3,4.234115907E1 +2.287358000E3,4.148011807E1 +2.287615000E3,4.752316696E1 +2.287890000E3,4.261643768E1 +2.288186000E3,3.531031146E1 +2.288451000E3,3.336926272E1 +2.288830000E3,3.217663691E1 +2.289083000E3,3.280943829E1 +2.289350000E3,4.037024361E1 +2.289606000E3,4.463743016E1 +2.289870000E3,3.926930450E1 +2.290142000E3,3.549021170E1 +2.290376000E3,3.657210104E1 +2.290669000E3,3.609483404E1 +2.290917000E3,3.935001060E1 +2.291190000E3,3.968762383E1 +2.291417000E3,3.622062011E1 +2.291698000E3,5.052972627E1 +2.292019000E3,4.472329620E1 +2.292314000E3,3.528869928E1 +2.292580000E3,3.171318762E1 +2.292867000E3,3.293682859E1 +2.293112000E3,2.980662334E1 +2.293408000E3,3.108877030E1 +2.293645000E3,3.411108767E1 +2.293948000E3,2.929195023E1 +2.294231000E3,2.830259325E1 +2.294484000E3,2.905088910E1 +2.294732000E3,3.046102835E1 +2.295049000E3,2.679058069E1 +2.295347000E3,2.620731663E1 +2.295594000E3,3.509528145E1 +2.295836000E3,2.657946529E1 +2.296130000E3,2.511368258E1 +2.296378000E3,2.555955915E1 +2.296634000E3,2.785949260E1 +2.296875000E3,2.654407944E1 +2.297117000E3,3.658368449E1 +2.297412000E3,3.412054652E1 +2.297648000E3,3.448252102E1 +2.297956000E3,3.528486686E1 +2.298205000E3,3.265291425E1 +2.298494000E3,2.963788314E1 +2.298798000E3,3.350933300E1 +2.299085000E3,3.038301619E1 +2.299338000E3,3.357142506E1 +2.299610000E3,4.744800671E1 +2.299868000E3,3.435626076E1 +2.300142000E3,3.368274389E1 +2.300402000E3,2.881246111E1 +2.300655000E3,3.097762310E1 +2.300898000E3,2.947567056E1 +2.301182000E3,3.214187359E1 +2.301423000E3,3.421070745E1 +2.301786000E3,5.117970534E1 +2.302087000E3,5.037784077E1 +2.302335000E3,5.283937176E1 +2.302644000E3,5.164119106E1 +2.302941000E3,5.300709748E1 +2.303240000E3,4.713488810E1 +2.303488000E3,4.524114677E1 +2.303739000E3,3.080285972E1 +2.304022000E3,2.293405577E1 +2.304254000E3,2.235464386E1 +2.304552000E3,2.949911358E1 +2.304876000E3,4.141349798E1 +2.305182000E3,4.156611078E1 +2.305491000E3,4.347125429E1 +2.305797000E3,4.579894404E1 +2.306107000E3,4.646123013E1 +2.306358000E3,4.517240887E1 +2.306604000E3,5.308475174E1 +2.306870000E3,4.681256924E1 +2.307168000E3,2.942058533E1 +2.307450000E3,2.986114457E1 +2.307717000E3,3.195150356E1 +2.308031000E3,3.775567348E1 +2.308265000E3,3.823556499E1 +2.308570000E3,2.909536341E1 +2.308842000E3,3.096070220E1 +2.309098000E3,4.060687649E1 +2.309391000E3,4.820113946E1 +2.309687000E3,4.619079404E1 +2.309928000E3,4.304793785E1 +2.310216000E3,4.976144450E1 +2.310446000E3,4.779148829E1 +2.310686000E3,5.167703897E1 +2.310979000E3,3.773719280E1 +2.311248000E3,2.923821784E1 +2.311466000E3,2.654081756E1 +2.311763000E3,2.616593312E1 +2.312001000E3,2.460963519E1 +2.312285000E3,2.554564289E1 +2.312588000E3,3.572755404E1 +2.312856000E3,4.274835909E1 +2.313074000E3,4.355953935E1 +2.313375000E3,5.377727845E1 +2.313611000E3,5.435235813E1 +2.313893000E3,5.477010993E1 +2.314137000E3,5.142421895E1 +2.314483000E3,4.794670725E1 +2.314780000E3,5.149445419E1 +2.315019000E3,5.127618051E1 +2.315306000E3,4.939341348E1 +2.315533000E3,4.928824788E1 +2.315832000E3,4.617335031E1 +2.316069000E3,3.696469062E1 +2.316377000E3,4.552948924E1 +2.316627000E3,4.672923062E1 +2.316913000E3,4.504192742E1 +2.317215000E3,4.364234368E1 +2.317558000E3,4.231291453E1 +2.317853000E3,4.886663905E1 +2.318118000E3,4.492895691E1 +2.318412000E3,4.464681620E1 +2.318711000E3,4.698360224E1 +2.318950000E3,4.454369095E1 +2.319250000E3,4.409609939E1 +2.319494000E3,4.283121809E1 +2.319793000E3,4.398770219E1 +2.320040000E3,4.728522548E1 +2.320336000E3,4.533798443E1 +2.320660000E3,4.548359371E1 +2.320908000E3,4.366718291E1 +2.321152000E3,5.139935964E1 +2.321408000E3,4.747980864E1 +2.321709000E3,3.867643032E1 +2.321952000E3,4.294445900E1 +2.322196000E3,4.336333736E1 +2.322445000E3,3.890531131E1 +2.322682000E3,4.087281677E1 +2.322980000E3,3.979668464E1 +2.323225000E3,4.157042707E1 +2.323553000E3,4.515881082E1 +2.323886000E3,3.868360739E1 +2.324184000E3,4.839319184E1 +2.324428000E3,4.298284223E1 +2.324669000E3,4.433761346E1 +2.324987000E3,4.011512195E1 +2.325233000E3,3.478551365E1 +2.325486000E3,4.180203002E1 +2.325789000E3,4.323726184E1 +2.326086000E3,3.985791110E1 +2.326333000E3,3.946244529E1 +2.326667000E3,4.066537977E1 +2.326925000E3,3.986903649E1 +2.327223000E3,4.142461274E1 +2.327521000E3,3.461788217E1 +2.327778000E3,3.326602717E1 +2.328102000E3,4.357074645E1 +2.328367000E3,5.496493564E1 +2.328618000E3,4.413482695E1 +2.328920000E3,4.170999616E1 +2.329183000E3,4.107694173E1 +2.329486000E3,5.342371220E1 +2.329729000E3,5.103134188E1 +2.330028000E3,4.716459977E1 +2.330382000E3,4.916498276E1 +2.330642000E3,4.801561309E1 +2.330930000E3,4.860033329E1 +2.331211000E3,5.037441690E1 +2.331463000E3,5.227972551E1 +2.331719000E3,4.516533742E1 +2.331971000E3,4.623606604E1 +2.332268000E3,3.207985320E1 +2.332513000E3,3.485208029E1 +2.332801000E3,4.367306984E1 +2.333109000E3,4.764897626E1 +2.333397000E3,4.844411921E1 +2.333779000E3,4.624834459E1 +2.334088000E3,4.492130047E1 +2.334331000E3,4.172849812E1 +2.334618000E3,4.243441154E1 +2.334859000E3,4.155300890E1 +2.335165000E3,3.508017133E1 +2.335414000E3,3.102497597E1 +2.335689000E3,3.346102792E1 +2.335938000E3,2.980210924E1 +2.336237000E3,2.815695425E1 +2.336480000E3,4.530841757E1 +2.336824000E3,4.476742737E1 +2.337075000E3,4.460293889E1 +2.337332000E3,5.054872999E1 +2.337583000E3,4.962100100E1 +2.337845000E3,5.224787063E1 +2.338132000E3,4.845338775E1 +2.338374000E3,4.675501048E1 +2.338651000E3,4.806540095E1 +2.338903000E3,4.707869991E1 +2.339145000E3,4.747595477E1 +2.339395000E3,3.449909829E1 +2.339700000E3,4.619360178E1 +2.340033000E3,4.785644508E1 +2.340329000E3,4.721347586E1 +2.340579000E3,4.302992844E1 +2.340828000E3,4.629706327E1 +2.341122000E3,4.550319757E1 +2.341368000E3,4.510038554E1 +2.341611000E3,4.752886315E1 +2.341876000E3,4.524122211E1 +2.342135000E3,2.990386366E1 +2.342396000E3,3.647672774E1 +2.342679000E3,2.854891758E1 +2.342936000E3,3.995722191E1 +2.343310000E3,4.501906630E1 +2.343555000E3,4.872212276E1 +2.343839000E3,4.566863325E1 +2.344134000E3,3.946814595E1 +2.344384000E3,4.796193013E1 +2.344656000E3,4.858552009E1 +2.344961000E3,4.902627763E1 +2.345257000E3,4.467711671E1 +2.345498000E3,3.756709071E1 +2.345764000E3,2.964206509E1 +2.346064000E3,4.283044167E1 +2.346415000E3,4.191014925E1 +2.346743000E3,4.910031818E1 +2.347021000E3,5.022624274E1 +2.347337000E3,5.257970130E1 +2.347586000E3,4.764257555E1 +2.347831000E3,4.353349182E1 +2.348126000E3,4.318604201E1 +2.348436000E3,4.825752031E1 +2.348710000E3,4.464987037E1 +2.348968000E3,4.690302679E1 +2.349225000E3,4.464063657E1 +2.349495000E3,5.114524492E1 +2.349740000E3,4.345049547E1 +2.350133000E3,4.655800825E1 +2.350382000E3,4.419356370E1 +2.350688000E3,4.308388818E1 +2.350960000E3,4.964188075E1 +2.351269000E3,5.137042419E1 +2.351542000E3,4.751708919E1 +2.351836000E3,3.239228651E1 +2.352067000E3,3.331178705E1 +2.352357000E3,4.628654550E1 +2.352625000E3,4.653844798E1 +2.352938000E3,4.419734850E1 +2.353231000E3,3.771763539E1 +2.353458000E3,3.489550836E1 +2.353713000E3,2.965581776E1 +2.353962000E3,3.457100474E1 +2.354201000E3,3.291595658E1 +2.354446000E3,2.791603976E1 +2.354711000E3,3.307930362E1 +2.355027000E3,5.311162000E1 +2.355290000E3,4.688373373E1 +2.355581000E3,3.663543876E1 +2.355868000E3,2.834403560E1 +2.356176000E3,5.001680718E1 +2.356518000E3,5.349221251E1 +2.356780000E3,5.234097025E1 +2.357043000E3,4.476475434E1 +2.357349000E3,5.160193390E1 +2.357584000E3,4.375385010E1 +2.357840000E3,3.709166207E1 +2.358125000E3,2.927191182E1 +2.358378000E3,4.114289062E1 +2.358676000E3,4.266518399E1 +2.358921000E3,4.641380631E1 +2.359210000E3,4.551221179E1 +2.359545000E3,4.099683883E1 +2.359801000E3,5.202602500E1 +2.360072000E3,5.207875379E1 +2.360343000E3,4.670310433E1 +2.360619000E3,4.619168123E1 +2.360865000E3,4.348453495E1 +2.361113000E3,4.603882932E1 +2.361353000E3,4.061885274E1 +2.361649000E3,4.873355826E1 +2.361884000E3,4.796347566E1 +2.362174000E3,4.419543811E1 +2.362420000E3,4.412529768E1 +2.362674000E3,4.315515456E1 +2.363006000E3,3.718353950E1 +2.363303000E3,4.131746877E1 +2.363556000E3,3.462830696E1 +2.363825000E3,3.224809166E1 +2.364105000E3,2.946532539E1 +2.364420000E3,4.082560353E1 +2.364671000E3,4.169760242E1 +2.364916000E3,4.728483165E1 +2.365158000E3,4.384961396E1 +2.365493000E3,3.327447630E1 +2.365797000E3,2.406470586E1 +2.366141000E3,2.410271882E1 +2.366422000E3,4.124818432E1 +2.366699000E3,4.300386829E1 +2.366994000E3,4.592409288E1 +2.367239000E3,4.402074721E1 +2.367492000E3,4.331525310E1 +2.367744000E3,4.351543939E1 +2.368045000E3,4.861325913E1 +2.368277000E3,4.345520025E1 +2.368543000E3,5.037549285E1 +2.368790000E3,3.455268589E1 +2.369034000E3,3.454484220E1 +2.369300000E3,3.436570372E1 +2.369544000E3,3.180799867E1 +2.369820000E3,4.460893996E1 +2.370091000E3,5.635981603E1 +2.370383000E3,4.932803438E1 +2.370635000E3,5.123791361E1 +2.370939000E3,4.749913119E1 +2.371193000E3,4.606624254E1 +2.371498000E3,4.453668838E1 +2.371779000E3,4.424564317E1 +2.372081000E3,5.022357768E1 +2.372347000E3,4.983363592E1 +2.372720000E3,4.311987242E1 +2.372969000E3,4.071927446E1 +2.373234000E3,3.624584431E1 +2.373535000E3,3.338407859E1 +2.373777000E3,2.744030282E1 +2.374025000E3,4.017686066E1 +2.374281000E3,4.153799732E1 +2.374537000E3,5.163713220E1 +2.374786000E3,4.970373114E1 +2.375033000E3,4.601563593E1 +2.375284000E3,4.943210146E1 +2.375577000E3,5.208741018E1 +2.375935000E3,4.780129348E1 +2.376167000E3,4.632707744E1 +2.376478000E3,5.008962536E1 +2.376734000E3,4.691729314E1 +2.376987000E3,4.593220796E1 +2.377250000E3,4.703621615E1 +2.377550000E3,4.863501898E1 +2.377838000E3,4.747349412E1 +2.378102000E3,4.430216971E1 +2.378373000E3,5.038477253E1 +2.378648000E3,4.679597376E1 +2.378873000E3,3.998762784E1 +2.379232000E3,4.140472709E1 +2.379480000E3,3.803559367E1 +2.379735000E3,4.292956565E1 +2.379993000E3,3.275484639E1 +2.380260000E3,3.159298587E1 +2.380513000E3,3.066195183E1 +2.380756000E3,4.846258942E1 +2.381012000E3,4.617374426E1 +2.381278000E3,4.338282331E1 +2.381580000E3,2.990070560E1 +2.381878000E3,3.384826320E1 +2.382127000E3,4.352773294E1 +2.382476000E3,3.711143795E1 +2.382756000E3,4.818117865E1 +2.383001000E3,4.694356023E1 +2.383312000E3,4.713242320E1 +2.383556000E3,4.945634369E1 +2.383815000E3,3.710449888E1 +2.384109000E3,4.990714727E1 +2.384350000E3,5.101970483E1 +2.384663000E3,4.290224010E1 +2.384917000E3,3.958873166E1 +2.385203000E3,4.207919898E1 +2.385583000E3,3.937588823E1 +2.385864000E3,3.927490117E1 +2.386122000E3,3.708577985E1 +2.386378000E3,3.104425869E1 +2.386630000E3,2.579918418E1 +2.386935000E3,4.201717352E1 +2.387186000E3,4.469788103E1 +2.387445000E3,3.928301867E1 +2.387699000E3,4.425054811E1 +2.387999000E3,2.901032620E1 +2.388242000E3,2.431535493E1 +2.388542000E3,4.330806788E1 +2.388866000E3,4.587852948E1 +2.389138000E3,5.068663336E1 +2.389420000E3,5.151872270E1 +2.389764000E3,4.501157372E1 +2.390012000E3,4.508008781E1 +2.390288000E3,4.471818734E1 +2.390546000E3,4.453717168E1 +2.390828000E3,3.435610332E1 +2.391113000E3,3.644941891E1 +2.391398000E3,3.741409627E1 +2.391658000E3,4.311052254E1 +2.391963000E3,3.924877335E1 +2.392296000E3,3.956869731E1 +2.392537000E3,3.230149795E1 +2.392786000E3,2.941450360E1 +2.393103000E3,3.366208400E1 +2.393349000E3,2.633153711E1 +2.393653000E3,2.492589605E1 +2.393892000E3,3.518582310E1 +2.394201000E3,3.668564238E1 +2.394454000E3,3.528359554E1 +2.394744000E3,3.673717548E1 +2.395034000E3,2.851979476E1 +2.395378000E3,2.558396774E1 +2.395660000E3,3.919896752E1 +2.395930000E3,3.339597104E1 +2.396187000E3,3.351358057E1 +2.396431000E3,3.743420456E1 +2.396691000E3,4.220523227E1 +2.396991000E3,3.500233403E1 +2.397251000E3,3.475187142E1 +2.397513000E3,3.604068947E1 +2.397821000E3,4.628512725E1 +2.398126000E3,4.463943287E1 +2.398428000E3,4.311458163E1 +2.398781000E3,4.375329409E1 +2.399076000E3,3.749705009E1 +2.399316000E3,4.116349149E1 +2.399615000E3,4.694603167E1 +2.399852000E3,5.327851923E1 +2.400143000E3,5.028800274E1 +2.400380000E3,5.055607260E1 +2.400618000E3,4.184216649E1 +2.400901000E3,4.280576865E1 +2.401144000E3,4.285187037E1 +2.401437000E3,5.414729311E1 +2.401684000E3,5.760726428E1 +2.402102000E3,5.135939721E1 +2.402349000E3,5.519633184E1 +2.402608000E3,5.937895156E1 +2.402853000E3,5.722678447E1 +2.403146000E3,5.316891996E1 +2.403388000E3,5.231876976E1 +2.403684000E3,4.275047946E1 +2.403921000E3,4.497010821E1 +2.404216000E3,5.935375427E1 +2.404454000E3,5.736369919E1 +2.404707000E3,5.877823139E1 +2.404971000E3,6.138635894E1 +2.405219000E3,5.726046839E1 +2.405473000E3,5.213953550E1 +2.405771000E3,4.831408459E1 +2.406024000E3,5.195614478E1 +2.406276000E3,4.885485021E1 +2.406567000E3,4.806131720E1 +2.406866000E3,3.817379603E1 +2.407129000E3,3.496803230E1 +2.407401000E3,4.679161915E1 +2.407625000E3,4.456362030E1 +2.407878000E3,4.499112684E1 +2.408171000E3,4.695848411E1 +2.408491000E3,4.136053284E1 +2.408771000E3,3.435960184E1 +2.409033000E3,2.907775515E1 +2.409287000E3,3.179102298E1 +2.409536000E3,2.535492331E1 +2.409797000E3,2.893863695E1 +2.410015000E3,3.195695462E1 +2.410232000E3,2.883661354E1 +2.410481000E3,4.380812340E1 +2.410735000E3,5.435187737E1 +2.411017000E3,4.390478627E1 +2.411330000E3,4.136550501E1 +2.411572000E3,6.231552653E1 +2.411823000E3,4.988484474E1 +2.412072000E3,4.569499772E1 +2.412339000E3,5.207639469E1 +2.412605000E3,5.314724412E1 +2.412842000E3,5.014855129E1 +2.413111000E3,4.925815950E1 +2.413332000E3,5.545199009E1 +2.413608000E3,4.910878211E1 +2.413873000E3,5.481296501E1 +2.414229000E3,4.620355557E1 +2.414532000E3,4.757632406E1 +2.414792000E3,4.414835702E1 +2.415033000E3,4.178334533E1 +2.415296000E3,3.571558610E1 +2.415577000E3,3.622280285E1 +2.415839000E3,4.187963398E1 +2.416103000E3,4.120303067E1 +2.416426000E3,5.043875316E1 +2.416696000E3,4.738536839E1 +2.417006000E3,4.790698669E1 +2.417250000E3,4.717323409E1 +2.417613000E3,4.889624394E1 +2.417923000E3,4.615999302E1 +2.418209000E3,4.554232436E1 +2.418487000E3,4.963147342E1 +2.418748000E3,4.540077281E1 +2.419058000E3,4.402622058E1 +2.419355000E3,3.991430025E1 +2.419631000E3,5.699106589E1 +2.419880000E3,4.542610605E1 +2.420140000E3,5.871400849E1 +2.420387000E3,5.593691155E1 +2.420634000E3,5.642590944E1 +2.420987000E3,4.942882304E1 +2.421235000E3,5.122637091E1 +2.421504000E3,5.506353313E1 +2.421808000E3,4.974630362E1 +2.422098000E3,4.922446567E1 +2.422401000E3,4.711891494E1 +2.422653000E3,4.935851062E1 +2.422946000E3,5.223840607E1 +2.423180000E3,5.181747333E1 +2.423433000E3,5.106095739E1 +2.423699000E3,4.283067128E1 +2.424023000E3,4.620110870E1 +2.424283000E3,4.813646184E1 +2.424556000E3,4.673905704E1 +2.424833000E3,5.139038068E1 +2.425085000E3,4.187355918E1 +2.425330000E3,4.200690239E1 +2.425641000E3,4.094986905E1 +2.425891000E3,3.869951887E1 +2.426156000E3,4.295178440E1 +2.426411000E3,4.445235603E1 +2.426673000E3,4.180705342E1 +2.426915000E3,4.159918394E1 +2.427275000E3,5.193727105E1 +2.427528000E3,4.985744468E1 +2.427773000E3,5.143594155E1 +2.428021000E3,5.687627643E1 +2.428258000E3,4.984177159E1 +2.428554000E3,4.104898524E1 +2.428794000E3,3.740238657E1 +2.429102000E3,4.424577609E1 +2.429345000E3,5.022623751E1 +2.429627000E3,5.346928374E1 +2.429864000E3,4.448852620E1 +2.430156000E3,3.611387858E1 +2.430475000E3,3.592739777E1 +2.430726000E3,3.269867125E1 +2.431039000E3,4.089980433E1 +2.431331000E3,3.752068977E1 +2.431567000E3,3.972155082E1 +2.431870000E3,4.098289208E1 +2.432107000E3,4.068605974E1 +2.432406000E3,3.978950334E1 +2.432643000E3,3.435438837E1 +2.432933000E3,3.806187937E1 +2.433169000E3,3.613809925E1 +2.433407000E3,5.573542624E1 +2.433734000E3,4.812688919E1 +2.434035000E3,5.332611421E1 +2.434315000E3,5.453475878E1 +2.434557000E3,5.156731049E1 +2.434849000E3,4.452924889E1 +2.435086000E3,4.091217005E1 +2.435380000E3,3.495963916E1 +2.435633000E3,3.994418328E1 +2.435904000E3,5.345258512E1 +2.436200000E3,4.573029424E1 +2.436434000E3,4.666848361E1 +2.436802000E3,4.148612785E1 +2.437044000E3,3.785277445E1 +2.437301000E3,3.823545546E1 +2.437549000E3,3.883632471E1 +2.437839000E3,4.756553033E1 +2.438077000E3,4.282797221E1 +2.438369000E3,5.291874167E1 +2.438606000E3,5.394671897E1 +2.438862000E3,5.490926284E1 +2.439159000E3,5.465277565E1 +2.439395000E3,5.245345229E1 +2.439637000E3,4.823915254E1 +2.440022000E3,5.658050668E1 +2.440281000E3,5.255468157E1 +2.440546000E3,4.365897331E1 +2.440828000E3,4.187636724E1 +2.441125000E3,4.916172461E1 +2.441365000E3,5.038635874E1 +2.441645000E3,5.238005511E1 +2.441868000E3,4.979548238E1 +2.442114000E3,5.164563876E1 +2.442410000E3,4.795862612E1 +2.442694000E3,4.406311297E1 +2.442980000E3,4.461066687E1 +2.443265000E3,3.990213588E1 +2.443525000E3,4.270339676E1 +2.443815000E3,4.671533321E1 +2.444064000E3,4.922681237E1 +2.444311000E3,5.115751882E1 +2.444605000E3,4.659279655E1 +2.444851000E3,4.805254743E1 +2.445152000E3,4.646584218E1 +2.445447000E3,3.924248597E1 +2.445698000E3,3.657018775E1 +2.445976000E3,3.978585816E1 +2.446317000E3,5.134473527E1 +2.446569000E3,4.872028256E1 +2.446851000E3,4.793203365E1 +2.447088000E3,4.917648823E1 +2.447345000E3,4.514648035E1 +2.447599000E3,4.827609085E1 +2.447864000E3,5.009329877E1 +2.448138000E3,4.858127151E1 +2.448430000E3,4.885678900E1 +2.448726000E3,4.038666943E1 +2.448956000E3,3.788824065E1 +2.449214000E3,4.872306097E1 +2.449516000E3,5.112419798E1 +2.449767000E3,4.394357347E1 +2.450028000E3,5.187358067E1 +2.450298000E3,4.764520743E1 +2.450575000E3,5.323515688E1 +2.450844000E3,4.730661272E1 +2.451150000E3,5.022143967E1 +2.451400000E3,4.244080150E1 +2.451697000E3,4.540622562E1 +2.452002000E3,4.987171470E1 +2.452273000E3,4.928771096E1 +2.452519000E3,4.415614577E1 +2.452847000E3,4.529816891E1 +2.453138000E3,3.130480949E1 +2.453407000E3,3.727195618E1 +2.453707000E3,4.218798188E1 +2.453975000E3,3.196426842E1 +2.454240000E3,2.986758668E1 +2.454534000E3,4.365366219E1 +2.454795000E3,4.363233606E1 +2.455054000E3,4.576258560E1 +2.455297000E3,4.600510844E1 +2.455546000E3,5.143992334E1 +2.455816000E3,4.451792491E1 +2.456172000E3,3.834658463E1 +2.456438000E3,4.961865906E1 +2.456716000E3,4.301133302E1 +2.457025000E3,5.185950840E1 +2.457284000E3,4.578127088E1 +2.457582000E3,4.860789001E1 +2.457857000E3,4.548301241E1 +2.458087000E3,5.726595471E1 +2.458343000E3,4.581143143E1 +2.458590000E3,4.593076535E1 +2.458898000E3,4.646845677E1 +2.459143000E3,4.385664195E1 +2.459499000E3,3.921291428E1 +2.459756000E3,4.336490005E1 +2.460079000E3,5.059416731E1 +2.460323000E3,5.383728406E1 +2.460609000E3,4.336002656E1 +2.460894000E3,3.810358455E1 +2.461148000E3,4.341384577E1 +2.461406000E3,4.240002850E1 +2.461668000E3,4.220171306E1 +2.461957000E3,4.165441002E1 +2.462218000E3,4.110791112E1 +2.462543000E3,3.718059239E1 +2.462873000E3,4.490190793E1 +2.463162000E3,4.449127269E1 +2.463461000E3,5.110192526E1 +2.463709000E3,4.670759724E1 +2.464024000E3,4.554197086E1 +2.464345000E3,4.295638115E1 +2.464598000E3,4.260186095E1 +2.464844000E3,3.838281454E1 +2.465094000E3,4.864552318E1 +2.465348000E3,4.722694913E1 +2.465597000E3,5.723123112E1 +2.465970000E3,5.678247819E1 +2.466226000E3,5.304857482E1 +2.466490000E3,5.799491543E1 +2.466745000E3,5.566332539E1 +2.467000000E3,5.532803606E1 +2.467301000E3,5.480406224E1 +2.467518000E3,5.281426808E1 +2.467773000E3,5.319750336E1 +2.468030000E3,4.504180471E1 +2.468309000E3,4.011552860E1 +2.468536000E3,3.286668959E1 +2.468782000E3,5.187437917E1 +2.469159000E3,5.342027818E1 +2.469405000E3,4.655027014E1 +2.469685000E3,4.875434900E1 +2.469968000E3,4.400777727E1 +2.470228000E3,4.944370484E1 +2.470524000E3,4.819898526E1 +2.470826000E3,4.906267157E1 +2.471101000E3,4.559683511E1 +2.471407000E3,5.066052597E1 +2.471662000E3,5.052511938E1 +2.471933000E3,4.854316053E1 +2.472243000E3,4.720397127E1 +2.472513000E3,4.539713693E1 +2.472765000E3,4.504800702E1 +2.473077000E3,4.756996091E1 +2.473381000E3,4.502772911E1 +2.473668000E3,4.844141365E1 +2.473909000E3,4.718772198E1 +2.474176000E3,5.036014826E1 +2.474415000E3,4.734822430E1 +2.474659000E3,4.506554867E1 +2.474941000E3,4.590585801E1 +2.475227000E3,4.808550728E1 +2.475549000E3,4.744751902E1 +2.475816000E3,5.139502060E1 +2.476110000E3,4.565542501E1 +2.476367000E3,4.502651441E1 +2.476614000E3,4.529198411E1 +2.476876000E3,4.841642572E1 +2.477138000E3,4.904966766E1 +2.477430000E3,5.061185879E1 +2.477703000E3,4.805167318E1 +2.477973000E3,4.840268940E1 +2.478233000E3,4.609690512E1 +2.478491000E3,5.080806253E1 +2.478854000E3,4.929079330E1 +2.479112000E3,4.887431247E1 +2.479382000E3,4.582116343E1 +2.479677000E3,4.614295426E1 +2.479939000E3,5.004731017E1 +2.480247000E3,5.118895049E1 +2.480496000E3,4.750144805E1 +2.480785000E3,4.691637905E1 +2.481084000E3,4.575243018E1 +2.481328000E3,4.498034363E1 +2.481622000E3,5.049144453E1 +2.481951000E3,4.811617152E1 +2.482214000E3,4.600387593E1 +2.482494000E3,5.163944801E1 +2.482753000E3,4.933311419E1 +2.482991000E3,4.946534766E1 +2.483244000E3,4.580757204E1 +2.483487000E3,4.797573247E1 +2.483734000E3,4.560844100E1 +2.483990000E3,5.039329574E1 +2.484313000E3,5.052905321E1 +2.484577000E3,5.131938081E1 +2.484833000E3,4.901245069E1 +2.485113000E3,5.233648083E1 +2.485461000E3,5.215489758E1 +2.485749000E3,5.451606287E1 +2.486018000E3,5.043201098E1 +2.486334000E3,5.091085093E1 +2.486650000E3,4.972266732E1 +2.486916000E3,4.846864702E1 +2.487167000E3,4.843730663E1 +2.487412000E3,5.285205631E1 +2.487677000E3,5.695937588E1 +2.487965000E3,5.067248408E1 +2.488216000E3,4.955689254E1 +2.488580000E3,4.789771891E1 +2.488828000E3,4.640186686E1 +2.489150000E3,4.956289338E1 +2.489428000E3,4.916705799E1 +2.489718000E3,4.250319869E1 +2.489959000E3,4.211788948E1 +2.490259000E3,4.711467977E1 +2.490508000E3,5.336087879E1 +2.490805000E3,5.163346506E1 +2.491066000E3,5.303328317E1 +2.491377000E3,5.018594076E1 +2.491684000E3,4.569780009E1 +2.492029000E3,4.677168871E1 +2.492273000E3,4.586755987E1 +2.492522000E3,5.020047651E1 +2.492768000E3,4.585538278E1 +2.493006000E3,5.027464230E1 +2.493315000E3,4.719632652E1 +2.493608000E3,4.892998103E1 +2.493874000E3,4.659859577E1 +2.494131000E3,4.485377967E1 +2.494387000E3,4.661063763E1 +2.494635000E3,4.873112034E1 +2.494904000E3,5.011233058E1 +2.495259000E3,4.996207620E1 +2.495523000E3,5.026371938E1 +2.495789000E3,4.897334151E1 +2.496086000E3,4.919412247E1 +2.496330000E3,4.448238049E1 +2.496598000E3,5.779881243E1 +2.496845000E3,5.068443192E1 +2.497079000E3,5.452206946E1 +2.497328000E3,6.091811093E1 +2.497574000E3,5.545025588E1 +2.497819000E3,5.118451852E1 +2.498124000E3,5.647063434E1 +2.498436000E3,5.942897676E1 +2.498681000E3,6.063927987E1 +2.498932000E3,5.256584857E1 +2.499203000E3,5.942844343E1 +2.499465000E3,5.268198933E1 +2.499726000E3,5.561310022E1 +2.499989000E3,5.551348586E1 +2.500270000E3,5.728700965E1 +2.500550000E3,5.848024533E1 +2.500856000E3,5.545551244E1 +2.501156000E3,7.074712648E1 +2.501405000E3,6.649397556E1 +2.501727000E3,6.577106108E1 +2.501964000E3,5.791155905E1 +2.502223000E3,6.571272960E1 +2.502476000E3,5.223691777E1 +2.502731000E3,5.099379006E1 +2.502989000E3,4.996024440E1 +2.503265000E3,4.587573023E1 +2.503515000E3,6.660646739E1 +2.503792000E3,5.426812996E1 +2.504090000E3,4.221263073E1 +2.504348000E3,3.961359220E1 +2.504607000E3,3.317448387E1 +2.504957000E3,2.765634596E1 +2.505202000E3,5.260508289E1 +2.505444000E3,4.970766119E1 +2.505723000E3,5.961421356E1 +2.506010000E3,5.761735716E1 +2.506316000E3,4.386011183E1 +2.506629000E3,3.297646158E1 +2.506928000E3,3.461351567E1 +2.507171000E3,3.422494413E1 +2.507415000E3,3.898815557E1 +2.507661000E3,3.916714623E1 +2.507958000E3,4.409544564E1 +2.508199000E3,4.040812578E1 +2.508495000E3,4.100804729E1 +2.508767000E3,4.155083379E1 +2.509073000E3,4.256659126E1 +2.509346000E3,4.665111645E1 +2.509615000E3,4.785704834E1 +2.509926000E3,4.957995318E1 +2.510246000E3,5.281308228E1 +2.510533000E3,5.716195403E1 +2.510847000E3,5.384222007E1 +2.511087000E3,4.682850643E1 +2.511483000E3,5.585229854E1 +2.511769000E3,5.797880255E1 +2.512061000E3,5.008051045E1 +2.512305000E3,4.616221083E1 +2.512545000E3,5.837834308E1 +2.512782000E3,4.588894556E1 +2.513082000E3,5.827978204E1 +2.513321000E3,5.321307958E1 +2.513625000E3,5.419914666E1 +2.513860000E3,4.249936315E1 +2.514160000E3,5.093700871E1 +2.514505000E3,4.733309734E1 +2.514807000E3,5.739188753E1 +2.515049000E3,5.684870925E1 +2.515326000E3,5.429714525E1 +2.515551000E3,5.304528611E1 +2.515847000E3,6.048302750E1 +2.516097000E3,5.298092655E1 +2.516397000E3,5.664346713E1 +2.516634000E3,5.062362510E1 +2.516910000E3,5.059011404E1 +2.517165000E3,5.074931344E1 +2.517424000E3,5.193937267E1 +2.517672000E3,4.773080825E1 +2.517933000E3,4.886471101E1 +2.518191000E3,4.258084657E1 +2.518440000E3,4.144243799E1 +2.518697000E3,3.266068365E1 +2.518962000E3,3.662092465E1 +2.519211000E3,4.002326553E1 +2.519469000E3,5.193824268E1 +2.519821000E3,5.548381163E1 +2.520087000E3,5.245445808E1 +2.520336000E3,4.447536752E1 +2.520718000E3,5.931091731E1 +2.521010000E3,5.514928156E1 +2.521305000E3,5.194242569E1 +2.521541000E3,5.632439964E1 +2.521781000E3,4.768714929E1 +2.522074000E3,3.967116686E1 +2.522306000E3,3.457523914E1 +2.522554000E3,3.414939493E1 +2.522808000E3,3.034285017E1 +2.523103000E3,3.725639399E1 +2.523347000E3,5.824523011E1 +2.523645000E3,5.697741808E1 +2.524002000E3,5.995361389E1 +2.524244000E3,5.516819042E1 +2.524491000E3,5.520201782E1 +2.524765000E3,4.576677797E1 +2.524988000E3,5.785527848E1 +2.525299000E3,5.093237528E1 +2.525544000E3,4.090627494E1 +2.525822000E3,3.111750175E1 +2.526056000E3,2.764971736E1 +2.526311000E3,2.852524033E1 +2.526617000E3,3.508264660E1 +2.526905000E3,5.067917717E1 +2.527241000E3,4.646824007E1 +2.527487000E3,3.686495987E1 +2.527738000E3,3.822220480E1 +2.527988000E3,3.764348220E1 +2.528232000E3,4.278450517E1 +2.528563000E3,4.881983602E1 +2.528870000E3,4.048435148E1 +2.529125000E3,4.047282835E1 +2.529398000E3,4.602715630E1 +2.529632000E3,4.358719476E1 +2.529925000E3,4.185499728E1 +2.530224000E3,4.428160693E1 +2.530451000E3,5.370094630E1 +2.530771000E3,4.662369716E1 +2.531057000E3,4.486368653E1 +2.531322000E3,3.985753269E1 +2.531579000E3,3.868983993E1 +2.531842000E3,4.397673982E1 +2.532129000E3,4.465178920E1 +2.532379000E3,4.071629694E1 +2.532681000E3,3.700154265E1 +2.532925000E3,3.709745900E1 +2.533169000E3,3.856350220E1 +2.533454000E3,3.780017804E1 +2.533739000E3,4.079153270E1 +2.534053000E3,3.467337947E1 +2.534304000E3,3.872357849E1 +2.534571000E3,4.188092371E1 +2.534878000E3,4.226520735E1 +2.535180000E3,4.433351029E1 +2.535433000E3,4.196124368E1 +2.535679000E3,4.159710638E1 +2.535934000E3,4.131920574E1 +2.536230000E3,4.013333591E1 +2.536496000E3,3.861252617E1 +2.536812000E3,3.205810696E1 +2.537071000E3,3.900017908E1 +2.537321000E3,3.720890888E1 +2.537589000E3,3.571752088E1 +2.537899000E3,3.466875388E1 +2.538158000E3,3.490809444E1 +2.538414000E3,2.846246396E1 +2.538721000E3,3.471466025E1 +2.539000000E3,3.262267006E1 +2.539250000E3,2.900340615E1 +2.539526000E3,2.962734770E1 +2.539843000E3,4.051335289E1 +2.540219000E3,3.732414883E1 +2.540478000E3,3.212776280E1 +2.540731000E3,3.980002135E1 +2.541002000E3,4.402529692E1 +2.541305000E3,3.531142487E1 +2.541570000E3,4.157255463E1 +2.541892000E3,4.121686373E1 +2.542138000E3,3.512055425E1 +2.542435000E3,3.058422839E1 +2.542704000E3,3.860796470E1 +2.542951000E3,4.158955283E1 +2.543254000E3,4.126835549E1 +2.543598000E3,4.557459954E1 +2.543842000E3,4.195620726E1 +2.544088000E3,4.759905541E1 +2.544347000E3,4.089593512E1 +2.544592000E3,4.224934090E1 +2.544840000E3,3.548720999E1 +2.545141000E3,4.189266277E1 +2.545422000E3,4.058854606E1 +2.545652000E3,3.761551365E1 +2.545897000E3,3.643024250E1 +2.546173000E3,3.544845567E1 +2.546439000E3,3.816851754E1 +2.546779000E3,3.801212128E1 +2.547110000E3,3.288266257E1 +2.547379000E3,4.063952307E1 +2.547641000E3,4.765684387E1 +2.547893000E3,4.402640436E1 +2.548143000E3,4.172886183E1 +2.548441000E3,3.808222191E1 +2.548685000E3,3.637035664E1 +2.548962000E3,3.879815953E1 +2.549230000E3,5.433785228E1 +2.549540000E3,5.428002325E1 +2.549852000E3,5.430864003E1 +2.550121000E3,5.376325395E1 +2.550389000E3,5.250586376E1 +2.550641000E3,5.329413218E1 +2.550946000E3,3.817927317E1 +2.551218000E3,3.779289824E1 +2.551493000E3,4.904361964E1 +2.551759000E3,5.500168111E1 +2.552006000E3,4.745774118E1 +2.552261000E3,5.304049624E1 +2.552515000E3,4.933664563E1 +2.552779000E3,3.482983031E1 +2.553043000E3,3.914561037E1 +2.553378000E3,3.318943686E1 +2.553659000E3,2.674748735E1 +2.553917000E3,2.500565902E1 +2.554234000E3,3.331261434E1 +2.554489000E3,3.380079275E1 +2.554753000E3,3.632095841E1 +2.554996000E3,3.606888467E1 +2.555239000E3,4.759559903E1 +2.555541000E3,5.588542149E1 +2.555837000E3,5.768171500E1 +2.556076000E3,5.837962370E1 +2.556358000E3,5.761486260E1 +2.556647000E3,5.408185929E1 +2.556914000E3,5.624815374E1 +2.557248000E3,4.727853091E1 +2.557554000E3,3.999550071E1 +2.557822000E3,4.090986684E1 +2.558062000E3,3.411171601E1 +2.558302000E3,3.042998918E1 +2.558550000E3,3.392526215E1 +2.558807000E3,3.801243567E1 +2.559082000E3,4.390440101E1 +2.559357000E3,4.215163378E1 +2.559616000E3,4.616573562E1 +2.559972000E3,4.170066459E1 +2.560245000E3,2.972551911E1 +2.560517000E3,3.987643023E1 +2.560765000E3,4.046237199E1 +2.561011000E3,4.268708813E1 +2.561258000E3,4.450541644E1 +2.561531000E3,4.611922799E1 +2.561775000E3,4.492719317E1 +2.562027000E3,4.345851098E1 +2.562302000E3,5.022295857E1 +2.562533000E3,4.986016935E1 +2.562786000E3,3.932672790E1 +2.563211000E3,3.777119812E1 +2.563479000E3,4.577537823E1 +2.563731000E3,5.443473776E1 +2.563977000E3,5.947837126E1 +2.564252000E3,5.014881480E1 +2.564539000E3,4.884415531E1 +2.564781000E3,4.451698294E1 +2.565088000E3,3.693106642E1 +2.565361000E3,3.096881298E1 +2.565624000E3,2.635486448E1 +2.565885000E3,2.734213385E1 +2.566246000E3,3.979362654E1 +2.566493000E3,3.382738554E1 +2.566797000E3,3.469438245E1 +2.567097000E3,4.097528595E1 +2.567346000E3,4.285297734E1 +2.567644000E3,4.930003444E1 +2.567891000E3,4.540271843E1 +2.568170000E3,3.109775861E1 +2.568407000E3,2.738661195E1 +2.568701000E3,3.024785153E1 +2.568952000E3,3.235217301E1 +2.569220000E3,3.196941264E1 +2.569567000E3,4.299833718E1 +2.569862000E3,4.496000509E1 +2.570178000E3,4.562225815E1 +2.570442000E3,4.437451260E1 +2.570707000E3,3.949227756E1 +2.570950000E3,2.951847370E1 +2.571202000E3,3.800151296E1 +2.571472000E3,4.650517590E1 +2.571732000E3,3.967561664E1 +2.571975000E3,3.149456620E1 +2.572246000E3,5.234083710E1 +2.572527000E3,4.544839619E1 +2.572859000E3,4.436174777E1 +2.573168000E3,4.369290756E1 +2.573429000E3,4.420543128E1 +2.573728000E3,4.389854646E1 +2.573968000E3,4.580346210E1 +2.574268000E3,4.881141748E1 +2.574509000E3,4.708023256E1 +2.574802000E3,3.388696242E1 +2.575045000E3,2.922489212E1 +2.575339000E3,3.941924125E1 +2.575597000E3,4.733040375E1 +2.575906000E3,4.790376430E1 +2.576245000E3,4.328559785E1 +2.576517000E3,4.720947277E1 +2.576791000E3,4.076260480E1 +2.577092000E3,3.249905806E1 +2.577324000E3,3.886850876E1 +2.577566000E3,3.577483806E1 +2.577814000E3,4.105002685E1 +2.578080000E3,3.881208350E1 +2.578375000E3,5.720708534E1 +2.578624000E3,4.933084675E1 +2.578932000E3,5.989261963E1 +2.579254000E3,5.193127116E1 +2.579506000E3,4.843920497E1 +2.579747000E3,4.570821188E1 +2.580001000E3,4.446748829E1 +2.580244000E3,4.006228376E1 +2.580497000E3,2.933332862E1 +2.580745000E3,4.525678604E1 +2.580989000E3,4.717489692E1 +2.581288000E3,5.239736286E1 +2.581587000E3,5.268105849E1 +2.581851000E3,4.960616241E1 +2.582112000E3,4.637217789E1 +2.582361000E3,4.676379781E1 +2.582583000E3,4.083594902E1 +2.582903000E3,2.696140701E1 +2.583176000E3,2.668057590E1 +2.583429000E3,2.900886287E1 +2.583692000E3,2.732690452E1 +2.583951000E3,3.475308428E1 +2.584205000E3,4.782860484E1 +2.584480000E3,4.928978168E1 +2.584742000E3,3.697304160E1 +2.585017000E3,3.390321432E1 +2.585248000E3,4.818778278E1 +2.585552000E3,5.175969441E1 +2.585851000E3,4.752724055E1 +2.586108000E3,5.047732228E1 +2.586408000E3,5.003267867E1 +2.586651000E3,4.995698879E1 +2.586934000E3,4.985539117E1 +2.587202000E3,4.558719065E1 +2.587455000E3,4.973387236E1 +2.587702000E3,5.190737686E1 +2.587964000E3,4.955516560E1 +2.588211000E3,5.039526507E1 +2.588461000E3,3.897042435E1 +2.588748000E3,2.919124678E1 +2.589063000E3,3.061867322E1 +2.589398000E3,4.010104895E1 +2.589690000E3,3.640442215E1 +2.589998000E3,4.479952304E1 +2.590261000E3,4.757967128E1 +2.590558000E3,4.812333533E1 +2.590802000E3,4.603482331E1 +2.591083000E3,2.960043464E1 +2.591326000E3,3.684354753E1 +2.591591000E3,4.359182452E1 +2.591849000E3,4.788602237E1 +2.592228000E3,4.468031543E1 +2.592527000E3,3.894688899E1 +2.592778000E3,2.800490026E1 +2.593035000E3,4.310888325E1 +2.593333000E3,4.628339380E1 +2.593602000E3,4.440124594E1 +2.593883000E3,4.123163794E1 +2.594160000E3,3.127645239E1 +2.594429000E3,3.071812965E1 +2.594749000E3,4.618618296E1 +2.595070000E3,5.248181749E1 +2.595312000E3,4.786265879E1 +2.595668000E3,3.990233287E1 +2.595973000E3,4.173583037E1 +2.596256000E3,3.709278400E1 +2.596497000E3,3.229385861E1 +2.596813000E3,4.380573021E1 +2.597084000E3,4.783628282E1 +2.597325000E3,5.024593568E1 +2.597578000E3,5.102379549E1 +2.597828000E3,4.760481411E1 +2.598089000E3,3.822780835E1 +2.598387000E3,3.417342767E1 +2.598736000E3,2.863579065E1 +2.598981000E3,2.886228233E1 +2.599228000E3,2.855965247E1 +2.599493000E3,3.083396855E1 +2.599764000E3,3.581659374E1 +2.600032000E3,4.317647632E1 +2.600330000E3,4.853625621E1 +2.600623000E3,5.102467342E1 +2.600867000E3,4.877836926E1 +2.601112000E3,4.705612686E1 +2.601365000E3,4.889085742E1 +2.601612000E3,4.654488136E1 +2.601956000E3,4.055024190E1 +2.602220000E3,3.990851266E1 +2.602547000E3,3.648352551E1 +2.602794000E3,5.324982942E1 +2.603078000E3,5.268965363E1 +2.603338000E3,4.851189142E1 +2.603637000E3,5.135006473E1 +2.603925000E3,4.939301404E1 +2.604238000E3,5.337101389E1 +2.604488000E3,5.022765286E1 +2.604734000E3,5.253186666E1 +2.605064000E3,4.127453431E1 +2.605321000E3,4.114070867E1 +2.605572000E3,4.042282231E1 +2.605820000E3,4.255774466E1 +2.606073000E3,4.746726668E1 +2.606319000E3,4.761848671E1 +2.606565000E3,4.983628061E1 +2.606849000E3,3.046517787E1 +2.607082000E3,3.832211131E1 +2.607339000E3,4.741131966E1 +2.607609000E3,4.453335589E1 +2.607874000E3,3.545592153E1 +2.608197000E3,4.672891376E1 +2.608451000E3,4.755881287E1 +2.608706000E3,4.827652641E1 +2.608952000E3,4.727153141E1 +2.609226000E3,4.731450942E1 +2.609537000E3,3.981385402E1 +2.609784000E3,3.194698732E1 +2.610041000E3,3.314164027E1 +2.610283000E3,2.819786732E1 +2.610546000E3,2.664547785E1 +2.610857000E3,2.913544778E1 +2.611125000E3,3.961651759E1 +2.611432000E3,3.852777426E1 +2.611666000E3,3.205673146E1 +2.611951000E3,4.233182010E1 +2.612229000E3,3.378509898E1 +2.612454000E3,4.071755552E1 +2.612730000E3,5.018278065E1 +2.613050000E3,4.100034395E1 +2.613359000E3,3.892108016E1 +2.613628000E3,5.091321799E1 +2.613871000E3,4.336916838E1 +2.614108000E3,3.960788811E1 +2.614408000E3,3.948227358E1 +2.614722000E3,3.631863435E1 +2.614975000E3,4.057042340E1 +2.615256000E3,4.414132009E1 +2.615486000E3,4.180934435E1 +2.615750000E3,4.153999936E1 +2.615997000E3,3.521796466E1 +2.616260000E3,5.443854687E1 +2.616548000E3,5.408118563E1 +2.616842000E3,4.951275264E1 +2.617090000E3,5.182722031E1 +2.617344000E3,4.327522742E1 +2.617643000E3,5.375122422E1 +2.617975000E3,5.216635190E1 +2.618233000E3,4.126006713E1 +2.618497000E3,4.980260599E1 +2.618804000E3,4.655838197E1 +2.619044000E3,4.977945459E1 +2.619327000E3,4.875559075E1 +2.619562000E3,4.983226039E1 +2.619834000E3,4.741689273E1 +2.620075000E3,4.923498746E1 +2.620352000E3,4.923432072E1 +2.620664000E3,4.040876723E1 +2.620916000E3,3.889825840E1 +2.621142000E3,5.245081579E1 +2.621448000E3,4.684934794E1 +2.621687000E3,4.583906640E1 +2.621992000E3,4.366517623E1 +2.622230000E3,3.373873872E1 +2.622475000E3,3.701694694E1 +2.622750000E3,3.544967426E1 +2.623008000E3,3.363206222E1 +2.623285000E3,4.009589135E1 +2.623562000E3,4.408709562E1 +2.623825000E3,4.800133533E1 +2.624131000E3,4.855432282E1 +2.624414000E3,4.808187444E1 +2.624671000E3,5.252566194E1 +2.624932000E3,4.890333861E1 +2.625183000E3,4.370428781E1 +2.625430000E3,3.668118979E1 +2.625747000E3,4.353955331E1 +2.626003000E3,4.224026412E1 +2.626267000E3,4.311785789E1 +2.626514000E3,3.517806855E1 +2.626763000E3,3.981966751E1 +2.627025000E3,3.444602265E1 +2.627334000E3,3.341390757E1 +2.627660000E3,3.926570124E1 +2.627920000E3,4.341089288E1 +2.628216000E3,4.081134870E1 +2.628467000E3,3.912400300E1 +2.628730000E3,3.657553946E1 +2.629000000E3,3.072838888E1 +2.629284000E3,2.929703023E1 +2.629549000E3,3.378014550E1 +2.629844000E3,4.760306323E1 +2.630080000E3,4.024322042E1 +2.630373000E3,3.235913140E1 +2.630611000E3,3.920509877E1 +2.630919000E3,5.103841717E1 +2.631222000E3,5.813980805E1 +2.631514000E3,5.190256812E1 +2.631753000E3,4.653294376E1 +2.632054000E3,4.782140153E1 +2.632295000E3,4.977458693E1 +2.632592000E3,5.371197571E1 +2.632828000E3,5.056512655E1 +2.633140000E3,5.325824914E1 +2.633383000E3,4.973751947E1 +2.633632000E3,4.853342473E1 +2.633950000E3,3.905011010E1 +2.634254000E3,3.751700759E1 +2.634549000E3,5.292771607E1 +2.634786000E3,5.557450981E1 +2.635082000E3,4.974692283E1 +2.635319000E3,5.393938197E1 +2.635611000E3,4.675981835E1 +2.635848000E3,4.299614910E1 +2.636145000E3,3.756646750E1 +2.636395000E3,3.824353200E1 +2.636648000E3,3.045317917E1 +2.636942000E3,3.257931849E1 +2.637299000E3,3.010616025E1 +2.637599000E3,4.995329379E1 +2.637834000E3,4.824584689E1 +2.638071000E3,5.059212149E1 +2.638363000E3,5.330633429E1 +2.638612000E3,5.343612136E1 +2.638897000E3,4.755550111E1 +2.639122000E3,4.119881812E1 +2.639362000E3,3.902726568E1 +2.639659000E3,4.451944661E1 +2.639896000E3,4.587471035E1 +2.640164000E3,4.115502802E1 +2.640409000E3,4.505311495E1 +2.640656000E3,4.913968689E1 +2.640951000E3,5.110923180E1 +2.641208000E3,4.281604120E1 +2.641505000E3,4.825854961E1 +2.641748000E3,4.861588211E1 +2.642059000E3,4.450542116E1 +2.642304000E3,4.274821036E1 +2.642556000E3,3.503446158E1 +2.642862000E3,4.080900103E1 +2.643164000E3,4.152079562E1 +2.643527000E3,3.935881933E1 +2.643833000E3,3.760570593E1 +2.644082000E3,3.959144469E1 +2.644327000E3,4.007918652E1 +2.644573000E3,4.288120719E1 +2.644814000E3,4.793099478E1 +2.645114000E3,4.424069452E1 +2.645391000E3,4.078427844E1 +2.645635000E3,3.902795236E1 +2.645871000E3,4.393773718E1 +2.646111000E3,4.085627764E1 +2.646355000E3,4.393316509E1 +2.646690000E3,4.428892908E1 +2.646958000E3,4.601464396E1 +2.647235000E3,4.300358696E1 +2.647474000E3,4.083829680E1 +2.647758000E3,5.406220971E1 +2.648003000E3,4.253716581E1 +2.648273000E3,4.506680000E1 +2.648514000E3,3.500046728E1 +2.648758000E3,3.537281462E1 +2.649004000E3,5.013819891E1 +2.649251000E3,5.388943830E1 +2.649556000E3,5.656370208E1 +2.649891000E3,5.696480404E1 +2.650216000E3,4.675400561E1 +2.650515000E3,4.179549274E1 +2.650777000E3,4.536624285E1 +2.651084000E3,4.297370528E1 +2.651336000E3,4.376785410E1 +2.651635000E3,3.354560746E1 +2.651881000E3,2.537939319E1 +2.652180000E3,3.168783420E1 +2.652481000E3,4.898553010E1 +2.652737000E3,5.438993966E1 +2.652992000E3,4.963834041E1 +2.653252000E3,4.227369117E1 +2.653502000E3,4.301436765E1 +2.653812000E3,3.649724292E1 +2.654061000E3,4.086211966E1 +2.654320000E3,3.223281741E1 +2.654605000E3,2.807672508E1 +2.654836000E3,2.764825285E1 +2.655100000E3,4.598866982E1 +2.655350000E3,4.383741939E1 +2.655590000E3,4.883555528E1 +2.655837000E3,4.815765811E1 +2.656131000E3,5.047261312E1 +2.656369000E3,5.124829846E1 +2.656626000E3,3.956134092E1 +2.656925000E3,3.503286763E1 +2.657200000E3,3.224209198E1 +2.657447000E3,4.294806319E1 +2.657761000E3,4.898454413E1 +2.658011000E3,5.320780356E1 +2.658286000E3,5.345186604E1 +2.658542000E3,4.849291145E1 +2.658789000E3,5.098648363E1 +2.659034000E3,4.892931203E1 +2.659289000E3,4.580698225E1 +2.659530000E3,3.709695762E1 +2.659834000E3,3.457925551E1 +2.660081000E3,3.855219813E1 +2.660383000E3,3.845534481E1 +2.660628000E3,4.619372518E1 +2.660921000E3,4.848307744E1 +2.661167000E3,4.790880967E1 +2.661464000E3,4.667520128E1 +2.661710000E3,4.098851532E1 +2.662006000E3,4.035468673E1 +2.662245000E3,3.753010710E1 +2.662592000E3,4.792080660E1 +2.662862000E3,4.709835917E1 +2.663123000E3,3.501409506E1 +2.663374000E3,3.240664296E1 +2.663631000E3,4.326696615E1 +2.663874000E3,4.411177933E1 +2.664133000E3,3.936378145E1 +2.664382000E3,3.443614227E1 +2.664648000E3,3.761654306E1 +2.664944000E3,5.164457484E1 +2.665198000E3,2.810669920E1 +2.665512000E3,2.931307063E1 +2.665876000E3,3.108643425E1 +2.666131000E3,3.278101889E1 +2.666439000E3,4.277860150E1 +2.666693000E3,4.213131936E1 +2.667002000E3,3.935849781E1 +2.667259000E3,4.137879880E1 +2.667575000E3,3.790565018E1 +2.667827000E3,3.845274836E1 +2.668153000E3,3.676763670E1 +2.668452000E3,3.751975183E1 +2.668696000E3,3.224848897E1 +2.669023000E3,3.611134142E1 +2.669316000E3,4.467495655E1 +2.669607000E3,4.735906080E1 +2.669885000E3,5.159453510E1 +2.670167000E3,5.321308782E1 +2.670485000E3,5.282242631E1 +2.670747000E3,5.127719277E1 +2.670997000E3,4.902251972E1 +2.671243000E3,4.450532678E1 +2.671540000E3,3.864078148E1 +2.671788000E3,3.720620343E1 +2.672044000E3,4.496142790E1 +2.672357000E3,4.705640535E1 +2.672617000E3,3.890316941E1 +2.672864000E3,4.027639889E1 +2.673159000E3,4.202335245E1 +2.673421000E3,4.285452583E1 +2.673720000E3,3.626679930E1 +2.673964000E3,4.670395357E1 +2.674210000E3,4.915586670E1 +2.674514000E3,5.353785994E1 +2.674811000E3,5.414016767E1 +2.675048000E3,5.591079353E1 +2.675364000E3,3.844031623E1 +2.675661000E3,3.124520008E1 +2.675946000E3,3.566755596E1 +2.676189000E3,3.490423263E1 +2.676498000E3,5.070292882E1 +2.676799000E3,5.356134163E1 +2.677047000E3,5.161634227E1 +2.677305000E3,5.185439004E1 +2.677581000E3,5.315585532E1 +2.677832000E3,4.418578879E1 +2.678087000E3,3.972693415E1 +2.678335000E3,4.338465258E1 +2.678650000E3,5.168404535E1 +2.678934000E3,4.984483773E1 +2.679249000E3,4.977401184E1 +2.679507000E3,5.044345616E1 +2.679823000E3,4.232585634E1 +2.680128000E3,3.026551109E1 +2.680400000E3,3.009656886E1 +2.680660000E3,4.894119824E1 +2.680913000E3,4.712312643E1 +2.681208000E3,4.239602863E1 +2.681477000E3,4.875338950E1 +2.681768000E3,4.887945421E1 +2.682128000E3,4.379352407E1 +2.682394000E3,4.073494394E1 +2.682637000E3,3.685872977E1 +2.682895000E3,2.883047793E1 +2.683163000E3,3.769147996E1 +2.683455000E3,3.713975885E1 +2.683749000E3,4.855681627E1 +2.683994000E3,4.936430656E1 +2.684290000E3,5.303947120E1 +2.684540000E3,5.031092673E1 +2.684833000E3,4.783130186E1 +2.685073000E3,4.898734587E1 +2.685348000E3,4.686166956E1 +2.685598000E3,4.244245178E1 +2.685917000E3,3.872119900E1 +2.686161000E3,4.891396583E1 +2.686434000E3,4.491629365E1 +2.686687000E3,3.588391777E1 +2.686952000E3,3.156965948E1 +2.687206000E3,3.184725563E1 +2.687480000E3,3.153561496E1 +2.687733000E3,3.669659228E1 +2.688049000E3,3.507922771E1 +2.688340000E3,3.251056517E1 +2.688645000E3,4.079174670E1 +2.688915000E3,4.837277005E1 +2.689163000E3,4.669136560E1 +2.689426000E3,3.659115086E1 +2.689751000E3,4.814125321E1 +2.689994000E3,4.721335081E1 +2.690235000E3,5.119773767E1 +2.690471000E3,4.584232122E1 +2.690738000E3,4.687969307E1 +2.691006000E3,4.116197132E1 +2.691312000E3,2.850019915E1 +2.691659000E3,3.175399572E1 +2.691948000E3,3.215115185E1 +2.692197000E3,2.655209633E1 +2.692466000E3,3.136629444E1 +2.692727000E3,2.928762690E1 +2.692976000E3,2.688909217E1 +2.693281000E3,3.350197248E1 +2.693518000E3,3.760267236E1 +2.693776000E3,3.194141055E1 +2.694032000E3,3.113878807E1 +2.694299000E3,2.830606211E1 +2.694602000E3,2.632227285E1 +2.694941000E3,2.736240000E1 +2.695184000E3,3.956118458E1 +2.695488000E3,4.069974415E1 +2.695732000E3,4.498590768E1 +2.696030000E3,3.370199172E1 +2.696300000E3,3.284857688E1 +2.696535000E3,2.919082343E1 +2.696815000E3,3.146626789E1 +2.697056000E3,2.968971947E1 +2.697354000E3,4.116455896E1 +2.697640000E3,5.055341773E1 +2.697888000E3,5.163434474E1 +2.698155000E3,4.792936353E1 +2.698456000E3,4.111753823E1 +2.698732000E3,4.594070701E1 +2.699031000E3,3.204472070E1 +2.699273000E3,2.836668859E1 +2.699578000E3,2.624009297E1 +2.699855000E3,2.719538340E1 +2.700110000E3,2.868563476E1 +2.700399000E3,2.757039916E1 +2.700662000E3,2.546630310E1 +2.700960000E3,2.981844134E1 +2.701310000E3,3.063471239E1 +2.701629000E3,4.014173680E1 +2.701894000E3,3.281157953E1 +2.702206000E3,4.268438101E1 +2.702448000E3,4.272045970E1 +2.702710000E3,4.782744516E1 +2.702984000E3,4.067538265E1 +2.703255000E3,3.821763448E1 +2.703566000E3,3.373237040E1 +2.703865000E3,2.762261654E1 +2.704108000E3,3.058182972E1 +2.704366000E3,4.157303269E1 +2.704695000E3,4.128988216E1 +2.705002000E3,3.725674585E1 +2.705260000E3,3.318881716E1 +2.705544000E3,3.512644750E1 +2.705774000E3,3.012622541E1 +2.706039000E3,3.307868989E1 +2.706297000E3,3.089854998E1 +2.706599000E3,2.870455364E1 +2.706901000E3,2.573473536E1 +2.707155000E3,2.708285982E1 +2.707419000E3,2.641018696E1 +2.707644000E3,2.532685142E1 +2.707945000E3,2.741320006E1 +2.708188000E3,2.764718970E1 +2.708460000E3,3.745935532E1 +2.708711000E3,4.292241509E1 +2.708955000E3,4.431523077E1 +2.709266000E3,3.812245251E1 +2.709534000E3,3.199637282E1 +2.709802000E3,3.030937111E1 +2.710049000E3,3.172341474E1 +2.710303000E3,4.706685853E1 +2.710610000E3,4.372593931E1 +2.710859000E3,4.298246415E1 +2.711196000E3,4.313732995E1 +2.711485000E3,3.646858634E1 +2.711745000E3,3.547356546E1 +2.712003000E3,4.802507202E1 +2.712259000E3,4.666185634E1 +2.712527000E3,4.298723738E1 +2.712813000E3,3.203029787E1 +2.713082000E3,2.721140687E1 +2.713344000E3,3.967881707E1 +2.713594000E3,5.017429445E1 +2.713859000E3,4.690730331E1 +2.714106000E3,4.892140969E1 +2.714475000E3,4.312346900E1 +2.714730000E3,4.926615820E1 +2.714984000E3,4.690558758E1 +2.715298000E3,3.116292546E1 +2.715563000E3,2.731472603E1 +2.715855000E3,3.029992609E1 +2.716160000E3,3.149201904E1 +2.716442000E3,2.826058660E1 +2.716703000E3,2.713282366E1 +2.716957000E3,3.659207256E1 +2.717253000E3,3.982143620E1 +2.717592000E3,4.316888996E1 +2.717851000E3,4.348787554E1 +2.718149000E3,4.336902207E1 +2.718464000E3,4.494305168E1 +2.718765000E3,4.280996114E1 +2.719042000E3,4.083199069E1 +2.719277000E3,3.924180447E1 +2.719573000E3,2.985025677E1 +2.719800000E3,2.924980764E1 +2.720042000E3,2.589394072E1 +2.720346000E3,2.996884267E1 +2.720607000E3,2.951796470E1 +2.720882000E3,2.762273017E1 +2.721181000E3,4.946261833E1 +2.721422000E3,4.848220411E1 +2.721736000E3,4.816357380E1 +2.722001000E3,5.238238407E1 +2.722305000E3,5.586118797E1 +2.722602000E3,5.474108905E1 +2.722856000E3,5.089156984E1 +2.723105000E3,4.900978141E1 +2.723369000E3,5.541376880E1 +2.723666000E3,4.827427134E1 +2.723997000E3,4.802338633E1 +2.724296000E3,3.537215093E1 +2.724548000E3,3.822637167E1 +2.724844000E3,3.388327957E1 +2.725086000E3,3.756611639E1 +2.725338000E3,4.489615211E1 +2.725635000E3,5.048833137E1 +2.725871000E3,4.298428385E1 +2.726174000E3,3.303114009E1 +2.726475000E3,4.527811220E1 +2.726764000E3,4.815487328E1 +2.727017000E3,4.761823346E1 +2.727328000E3,4.180028821E1 +2.727607000E3,4.512936944E1 +2.727849000E3,4.337880786E1 +2.728101000E3,4.031817829E1 +2.728401000E3,3.509684782E1 +2.728650000E3,4.495565250E1 +2.728895000E3,4.157595660E1 +2.729138000E3,5.008202715E1 +2.729381000E3,5.308960545E1 +2.729622000E3,4.943413955E1 +2.729917000E3,4.820467383E1 +2.730234000E3,5.168344618E1 +2.730544000E3,5.128425900E1 +2.730837000E3,5.242528085E1 +2.731075000E3,5.125548047E1 +2.731382000E3,5.027678189E1 +2.731625000E3,4.595108129E1 +2.731917000E3,5.425640288E1 +2.732229000E3,5.493458667E1 +2.732522000E3,5.383738769E1 +2.732781000E3,4.577468908E1 +2.733036000E3,4.877165484E1 +2.733337000E3,5.155317163E1 +2.733582000E3,4.868465804E1 +2.733904000E3,5.094377769E1 +2.734158000E3,4.778052408E1 +2.734485000E3,4.980696312E1 +2.734788000E3,5.229980528E1 +2.735043000E3,4.487473927E1 +2.735323000E3,5.405477376E1 +2.735550000E3,5.095910777E1 +2.735795000E3,4.081340338E1 +2.736110000E3,3.942379743E1 +2.736352000E3,4.377765131E1 +2.736599000E3,4.311237352E1 +2.736822000E3,4.659947655E1 +2.737071000E3,4.430846393E1 +2.737313000E3,4.579154087E1 +2.737577000E3,4.628223866E1 +2.737831000E3,3.937286623E1 +2.738094000E3,3.852847368E1 +2.738336000E3,3.907921933E1 +2.738583000E3,5.112703685E1 +2.738825000E3,4.827754167E1 +2.739100000E3,4.022366081E1 +2.739352000E3,3.342841986E1 +2.739649000E3,3.354947585E1 +2.740003000E3,2.967395260E1 +2.740259000E3,4.724158021E1 +2.740515000E3,4.406232704E1 +2.740781000E3,4.128290785E1 +2.741030000E3,3.766271195E1 +2.741274000E3,3.234308905E1 +2.741542000E3,5.345026714E1 +2.741790000E3,5.189834860E1 +2.742037000E3,4.310520052E1 +2.742373000E3,3.005340200E1 +2.742661000E3,3.957498865E1 +2.742905000E3,4.298992085E1 +2.743235000E3,3.914359224E1 +2.743487000E3,4.665969106E1 +2.743742000E3,4.569837618E1 +2.743989000E3,4.037243126E1 +2.744288000E3,4.393151618E1 +2.744525000E3,4.191552922E1 +2.744830000E3,3.855450094E1 +2.745068000E3,3.137426682E1 +2.745312000E3,3.988970586E1 +2.745595000E3,4.261856210E1 +2.745912000E3,4.545535941E1 +2.746178000E3,3.982007681E1 +2.746515000E3,3.873990925E1 +2.746799000E3,4.024486228E1 +2.747097000E3,3.778822068E1 +2.747346000E3,3.349647091E1 +2.747587000E3,3.949530039E1 +2.747884000E3,4.424971453E1 +2.748182000E3,4.109440717E1 +2.748426000E3,4.429824127E1 +2.748724000E3,3.941870140E1 +2.749014000E3,3.719766140E1 +2.749309000E3,3.407061301E1 +2.749659000E3,3.362708714E1 +2.749929000E3,4.111324363E1 +2.750185000E3,4.275268079E1 +2.750445000E3,5.624172952E1 +2.750726000E3,4.374037489E1 +2.750957000E3,4.189644016E1 +2.751207000E3,3.621210842E1 +2.751519000E3,4.177841495E1 +2.751770000E3,4.048458953E1 +2.752052000E3,3.923884976E1 +2.752303000E3,3.426258793E1 +2.752575000E3,3.252443323E1 +2.752926000E3,3.211416673E1 +2.753222000E3,3.245023971E1 +2.753483000E3,3.266068265E1 +2.753758000E3,4.004662592E1 +2.754054000E3,4.872983792E1 +2.754320000E3,5.041613029E1 +2.754567000E3,4.540589836E1 +2.754814000E3,3.042430240E1 +2.755080000E3,3.072459076E1 +2.755376000E3,3.998104284E1 +2.755642000E3,4.049850263E1 +2.755970000E3,4.294486763E1 +2.756315000E3,4.067196783E1 +2.756573000E3,4.772031632E1 +2.756825000E3,4.988707098E1 +2.757139000E3,4.555538995E1 +2.757388000E3,4.252022698E1 +2.757651000E3,3.810962452E1 +2.757917000E3,3.494795311E1 +2.758159000E3,3.247098224E1 +2.758413000E3,3.588027190E1 +2.758665000E3,3.200494843E1 +2.758920000E3,4.772506231E1 +2.759171000E3,3.775844318E1 +2.759507000E3,3.920116655E1 +2.759772000E3,4.528245497E1 +2.760086000E3,4.240466142E1 +2.760349000E3,4.544544837E1 +2.760652000E3,4.039389797E1 +2.760923000E3,3.896680017E1 +2.761194000E3,4.381534416E1 +2.761436000E3,4.424202471E1 +2.761681000E3,4.737958135E1 +2.761960000E3,4.213672401E1 +2.762194000E3,4.516117441E1 +2.762462000E3,4.279973284E1 +2.762806000E3,3.859577230E1 +2.763061000E3,4.880977241E1 +2.763403000E3,4.365184399E1 +2.763660000E3,3.848143477E1 +2.763932000E3,4.787104427E1 +2.764214000E3,3.823665924E1 +2.764451000E3,3.049392521E1 +2.764732000E3,3.086844430E1 +2.764975000E3,2.587396098E1 +2.765284000E3,3.362049288E1 +2.765536000E3,3.353664382E1 +2.765825000E3,5.140360254E1 +2.766193000E3,5.105178275E1 +2.766449000E3,5.027787452E1 +2.766756000E3,4.961194015E1 +2.766992000E3,4.473604482E1 +2.767290000E3,5.567849424E1 +2.767540000E3,5.366739238E1 +2.767788000E3,5.268444481E1 +2.768092000E3,4.378358357E1 +2.768389000E3,4.285786187E1 +2.768638000E3,3.838737205E1 +2.768928000E3,4.053738598E1 +2.769250000E3,3.914310468E1 +2.769517000E3,3.950994015E1 +2.769781000E3,4.085678781E1 +2.770095000E3,3.706118568E1 +2.770362000E3,3.878826243E1 +2.770640000E3,4.509160576E1 +2.770877000E3,4.395611401E1 +2.771129000E3,3.894826552E1 +2.771368000E3,3.783168139E1 +2.771620000E3,3.074559821E1 +2.771881000E3,4.191911052E1 +2.772136000E3,4.492008577E1 +2.772447000E3,3.666714779E1 +2.772710000E3,4.135207765E1 +2.772994000E3,4.645886813E1 +2.773238000E3,5.078995440E1 +2.773478000E3,5.706152467E1 +2.773725000E3,5.135582573E1 +2.773990000E3,4.900548267E1 +2.774266000E3,5.275962483E1 +2.774567000E3,3.947101760E1 +2.774806000E3,4.078518654E1 +2.775113000E3,4.929998433E1 +2.775417000E3,4.396253608E1 +2.775784000E3,4.382194135E1 +2.776077000E3,4.131860223E1 +2.776341000E3,4.321133953E1 +2.776596000E3,3.942571045E1 +2.776881000E3,5.035254190E1 +2.777176000E3,5.596334670E1 +2.777432000E3,6.003222989E1 +2.777730000E3,5.139953750E1 +2.778036000E3,5.596001036E1 +2.778330000E3,5.632045587E1 +2.778567000E3,5.352711698E1 +2.778873000E3,5.160150080E1 +2.779243000E3,5.407354895E1 +2.779513000E3,5.151192380E1 +2.779810000E3,5.479493680E1 +2.780084000E3,5.006197117E1 +2.780351000E3,5.012247277E1 +2.780644000E3,4.598086802E1 +2.780884000E3,3.959492635E1 +2.781142000E3,3.571624227E1 +2.781421000E3,4.082207018E1 +2.781720000E3,5.162800696E1 +2.781984000E3,5.211692198E1 +2.782250000E3,5.017743125E1 +2.782617000E3,4.685740156E1 +2.782916000E3,4.348825959E1 +2.783213000E3,3.825858224E1 +2.783454000E3,4.923981343E1 +2.783750000E3,5.319160353E1 +2.783992000E3,4.967899375E1 +2.784288000E3,3.952802481E1 +2.784535000E3,3.328379343E1 +2.784779000E3,3.014350405E1 +2.785020000E3,3.405755755E1 +2.785313000E3,4.653255974E1 +2.785639000E3,4.571255084E1 +2.785896000E3,4.212654376E1 +2.786166000E3,4.635178938E1 +2.786421000E3,4.614547408E1 +2.786716000E3,4.279815144E1 +2.787018000E3,3.739201392E1 +2.787261000E3,4.297599275E1 +2.787569000E3,5.279236826E1 +2.787869000E3,4.385267374E1 +2.788181000E3,3.538660905E1 +2.788488000E3,4.283741498E1 +2.788738000E3,3.898018884E1 +2.789079000E3,4.417569536E1 +2.789327000E3,3.821417555E1 +2.789586000E3,4.124587088E1 +2.789850000E3,4.583617377E1 +2.790116000E3,4.758354441E1 +2.790413000E3,4.386951397E1 +2.790662000E3,4.527431896E1 +2.790956000E3,4.454979637E1 +2.791207000E3,4.019280914E1 +2.791465000E3,4.549375778E1 +2.791714000E3,4.076569420E1 +2.791963000E3,3.807465350E1 +2.792293000E3,5.201775254E1 +2.792550000E3,4.217772267E1 +2.792797000E3,5.472035384E1 +2.793107000E3,5.403984906E1 +2.793357000E3,5.591746790E1 +2.793622000E3,5.564159884E1 +2.793875000E3,5.646584479E1 +2.794118000E3,5.185594958E1 +2.794377000E3,4.895735059E1 +2.794636000E3,5.654557288E1 +2.794943000E3,5.012866956E1 +2.795254000E3,4.757016947E1 +2.795528000E3,5.211434220E1 +2.795790000E3,4.452402763E1 +2.796058000E3,4.290214665E1 +2.796307000E3,3.465820610E1 +2.796556000E3,4.339944359E1 +2.796852000E3,4.313164949E1 +2.797091000E3,5.438037991E1 +2.797389000E3,5.514175593E1 +2.797635000E3,4.928848190E1 +2.797924000E3,4.659784940E1 +2.798220000E3,4.998887096E1 +2.798537000E3,4.486399829E1 +2.798842000E3,4.885866840E1 +2.799091000E3,4.635335968E1 +2.799347000E3,4.504358299E1 +2.799594000E3,3.958005741E1 +2.799833000E3,4.827229253E1 +2.800082000E3,4.830536262E1 +2.800388000E3,4.659260793E1 +2.800673000E3,4.111758509E1 +2.800972000E3,4.464305855E1 +2.801233000E3,4.497276151E1 +2.801524000E3,3.374775892E1 +2.801884000E3,3.426238632E1 +2.802202000E3,3.521995684E1 +2.802451000E3,3.181302785E1 +2.802708000E3,2.794884084E1 +2.803019000E3,3.320140571E1 +2.803325000E3,3.478175393E1 +2.803626000E3,3.529465039E1 +2.803932000E3,3.962950189E1 +2.804222000E3,5.725685057E1 +2.804486000E3,5.740119524E1 +2.804784000E3,5.069347451E1 +2.805056000E3,5.047632669E1 +2.805376000E3,5.207930289E1 +2.805626000E3,5.264810014E1 +2.805887000E3,5.288954519E1 +2.806177000E3,4.457356662E1 +2.806431000E3,3.885566564E1 +2.806679000E3,3.768676842E1 +2.806944000E3,3.953483275E1 +2.807192000E3,4.348722722E1 +2.807514000E3,4.091620627E1 +2.807832000E3,4.192587435E1 +2.808086000E3,4.434501723E1 +2.808380000E3,4.393917252E1 +2.808686000E3,4.250763593E1 +2.809001000E3,4.146719312E1 +2.809249000E3,4.084508562E1 +2.809517000E3,4.466153637E1 +2.809817000E3,4.002274614E1 +2.810111000E3,4.310032831E1 +2.810375000E3,4.901386280E1 +2.810661000E3,4.607368963E1 +2.810927000E3,4.387647276E1 +2.811225000E3,5.143943484E1 +2.811469000E3,5.045193234E1 +2.811861000E3,4.363012565E1 +2.812115000E3,4.450854658E1 +2.812371000E3,4.453857946E1 +2.812631000E3,4.628101753E1 +2.812921000E3,4.634691523E1 +2.813212000E3,4.654803531E1 +2.813510000E3,4.718980060E1 +2.813758000E3,4.430765323E1 +2.814051000E3,4.322664022E1 +2.814349000E3,4.450224091E1 +2.814582000E3,4.170367724E1 +2.814868000E3,3.985315953E1 +2.815113000E3,5.280042862E1 +2.815400000E3,4.119993511E1 +2.815662000E3,4.251502783E1 +2.815937000E3,4.221594106E1 +2.816186000E3,4.475181393E1 +2.816425000E3,4.757705666E1 +2.816666000E3,4.971185267E1 +2.816968000E3,4.862141287E1 +2.817211000E3,4.713523003E1 +2.817492000E3,4.541478066E1 +2.817737000E3,4.363493262E1 +2.817996000E3,4.428814895E1 +2.818246000E3,4.395099122E1 +2.818516000E3,4.781334664E1 +2.818773000E3,4.439472962E1 +2.819027000E3,4.768107540E1 +2.819278000E3,4.535748265E1 +2.819523000E3,5.061196572E1 +2.819779000E3,4.816069594E1 +2.820044000E3,4.715573746E1 +2.820374000E3,4.919198579E1 +2.820635000E3,5.486134785E1 +2.820897000E3,4.845922458E1 +2.821173000E3,4.486224636E1 +2.821520000E3,4.543631827E1 +2.821781000E3,4.823449020E1 +2.822049000E3,4.622456265E1 +2.822354000E3,3.467019045E1 +2.822632000E3,3.820707315E1 +2.822892000E3,3.870865044E1 +2.823175000E3,3.526203974E1 +2.823424000E3,3.398332746E1 +2.823673000E3,4.060940798E1 +2.823924000E3,4.531267955E1 +2.824156000E3,4.823172894E1 +2.824426000E3,5.381643572E1 +2.824772000E3,5.219878503E1 +2.825053000E3,4.888255160E1 +2.825277000E3,4.023650802E1 +2.825526000E3,3.467455539E1 +2.825785000E3,3.818404386E1 +2.826078000E3,4.122702652E1 +2.826315000E3,3.713088668E1 +2.826619000E3,4.891468535E1 +2.826912000E3,5.266971981E1 +2.827148000E3,4.991025067E1 +2.827457000E3,5.435242869E1 +2.827718000E3,5.378448717E1 +2.828053000E3,5.171570017E1 +2.828327000E3,5.600593919E1 +2.828581000E3,5.175339102E1 +2.828821000E3,4.567582373E1 +2.829101000E3,3.417267221E1 +2.829337000E3,3.532670702E1 +2.829576000E3,4.323212593E1 +2.829823000E3,3.952189104E1 +2.830096000E3,4.372473758E1 +2.830363000E3,4.288959864E1 +2.830609000E3,3.903893871E1 +2.830954000E3,3.847274859E1 +2.831281000E3,4.911689413E1 +2.831539000E3,5.342672798E1 +2.831798000E3,5.558955965E1 +2.832091000E3,5.519004987E1 +2.832341000E3,5.877942264E1 +2.832589000E3,4.602825434E1 +2.832861000E3,3.380054471E1 +2.833107000E3,3.583644563E1 +2.833403000E3,4.160983164E1 +2.833653000E3,3.903662215E1 +2.833958000E3,3.879412363E1 +2.834222000E3,4.121083607E1 +2.834460000E3,4.235130104E1 +2.834723000E3,5.615135633E1 +2.834993000E3,5.355273371E1 +2.835271000E3,4.896976792E1 +2.835535000E3,5.132324538E1 +2.835792000E3,5.529277110E1 +2.836041000E3,5.163674064E1 +2.836366000E3,4.657927993E1 +2.836613000E3,4.238907241E1 +2.836875000E3,5.376683406E1 +2.837143000E3,5.052269952E1 +2.837398000E3,5.018740192E1 +2.837697000E3,4.680907883E1 +2.837961000E3,4.427452663E1 +2.838227000E3,3.300759096E1 +2.838490000E3,3.639504198E1 +2.838784000E3,4.617517315E1 +2.839084000E3,4.692063960E1 +2.839325000E3,4.445415179E1 +2.839620000E3,4.215561710E1 +2.839863000E3,4.433766229E1 +2.840168000E3,4.210423337E1 +2.840460000E3,3.873922427E1 +2.840768000E3,3.717852459E1 +2.841057000E3,3.957811826E1 +2.841313000E3,3.760389186E1 +2.841638000E3,4.310249633E1 +2.841921000E3,4.813095040E1 +2.842192000E3,4.623131926E1 +2.842444000E3,4.648620260E1 +2.842743000E3,4.620801315E1 +2.843027000E3,4.321069748E1 +2.843281000E3,4.205248893E1 +2.843587000E3,2.653536028E1 +2.843863000E3,2.940344619E1 +2.844270000E3,4.715941302E1 +2.844533000E3,4.512147604E1 +2.844793000E3,4.758865475E1 +2.845051000E3,4.853448129E1 +2.845325000E3,4.647479098E1 +2.845569000E3,4.600966189E1 +2.845842000E3,4.549543262E1 +2.846088000E3,4.262631529E1 +2.846347000E3,4.522394390E1 +2.846652000E3,4.657245211E1 +2.846924000E3,4.554651191E1 +2.847231000E3,4.501421864E1 +2.847609000E3,4.413715050E1 +2.847859000E3,3.641102730E1 +2.848158000E3,2.959594862E1 +2.848409000E3,3.229903797E1 +2.848684000E3,3.716282001E1 +2.848948000E3,4.864280315E1 +2.849195000E3,4.698625872E1 +2.849453000E3,4.475077374E1 +2.849725000E3,4.320130236E1 +2.850029000E3,4.052232702E1 +2.850286000E3,4.987213531E1 +2.850622000E3,4.470574790E1 +2.850953000E3,4.746715529E1 +2.851224000E3,4.817674396E1 +2.851475000E3,4.755384271E1 +2.851775000E3,4.606857790E1 +2.852037000E3,4.602549066E1 +2.852280000E3,4.107899882E1 +2.852578000E3,4.602936757E1 +2.852832000E3,4.594357604E1 +2.853123000E3,4.132874601E1 +2.853424000E3,3.891402985E1 +2.853676000E3,3.210431116E1 +2.854034000E3,4.148325967E1 +2.854336000E3,4.539420759E1 +2.854629000E3,3.813311910E1 +2.854857000E3,3.204826654E1 +2.855103000E3,4.042825728E1 +2.855348000E3,3.781799437E1 +2.855635000E3,3.485312778E1 +2.855901000E3,3.176423587E1 +2.856194000E3,3.286644404E1 +2.856446000E3,3.601261840E1 +2.856741000E3,3.056779431E1 +2.856990000E3,2.876904683E1 +2.857247000E3,2.336161379E1 +2.857525000E3,5.319777865E1 +2.857765000E3,4.924210585E1 +2.858030000E3,4.161506516E1 +2.858287000E3,3.471025819E1 +2.858592000E3,2.954431085E1 +2.858878000E3,3.551304021E1 +2.859146000E3,4.056554733E1 +2.859438000E3,4.716772205E1 +2.859749000E3,4.728214145E1 +2.860112000E3,4.333221553E1 +2.860355000E3,3.970290127E1 +2.860627000E3,4.675070996E1 +2.860922000E3,5.292655838E1 +2.861168000E3,5.560528000E1 +2.861448000E3,5.155203362E1 +2.861684000E3,4.854372910E1 +2.861981000E3,5.166225265E1 +2.862226000E3,5.239758268E1 +2.862536000E3,4.880079262E1 +2.862801000E3,5.860724491E1 +2.863049000E3,5.487085904E1 +2.863366000E3,4.477307493E1 +2.863622000E3,4.809216762E1 +2.863923000E3,4.128779228E1 +2.864180000E3,4.039902121E1 +2.864473000E3,3.763315716E1 +2.864758000E3,3.836830031E1 +2.865072000E3,3.562217561E1 +2.865375000E3,4.251016575E1 +2.865631000E3,3.959478231E1 +2.865894000E3,3.906491963E1 +2.866161000E3,3.169567809E1 +2.866409000E3,4.180907280E1 +2.866769000E3,5.009501966E1 +2.867095000E3,4.485052737E1 +2.867377000E3,4.543449817E1 +2.867634000E3,4.558186247E1 +2.867912000E3,3.310648260E1 +2.868160000E3,3.368680580E1 +2.868403000E3,3.259924908E1 +2.868652000E3,3.468868920E1 +2.868945000E3,3.811295096E1 +2.869214000E3,3.680532391E1 +2.869523000E3,4.480088276E1 +2.869800000E3,4.321197878E1 +2.870149000E3,3.870196995E1 +2.870426000E3,4.501549736E1 +2.870686000E3,3.869046251E1 +2.870998000E3,5.116138397E1 +2.871259000E3,4.565952095E1 +2.871545000E3,4.044036430E1 +2.871835000E3,3.776423584E1 +2.872146000E3,4.283314388E1 +2.872428000E3,4.822150076E1 +2.872666000E3,4.609488251E1 +2.872966000E3,4.199842198E1 +2.873258000E3,4.199452970E1 +2.873557000E3,4.094164548E1 +2.873868000E3,3.451929232E1 +2.874146000E3,3.725700957E1 +2.874378000E3,3.820854143E1 +2.874632000E3,3.261818797E1 +2.874949000E3,4.229639001E1 +2.875219000E3,4.314663650E1 +2.875496000E3,4.030472415E1 +2.875772000E3,3.740362597E1 +2.876082000E3,3.770704299E1 +2.876334000E3,4.016521241E1 +2.876600000E3,4.155568881E1 +2.876855000E3,3.864643482E1 +2.877164000E3,3.358142820E1 +2.877430000E3,2.988882280E1 +2.877698000E3,4.233125756E1 +2.877954000E3,4.245249096E1 +2.878273000E3,3.619646633E1 +2.878541000E3,3.199868066E1 +2.878801000E3,4.546979293E1 +2.879062000E3,5.523869784E1 +2.879342000E3,5.605267417E1 +2.879584000E3,5.653411529E1 +2.879928000E3,4.626290707E1 +2.880202000E3,3.540012043E1 +2.880447000E3,3.620700172E1 +2.880691000E3,2.922036878E1 +2.880938000E3,3.659816429E1 +2.881251000E3,4.145147882E1 +2.881527000E3,3.894444603E1 +2.881851000E3,3.741315407E1 +2.882112000E3,4.094962867E1 +2.882373000E3,4.333353585E1 +2.882625000E3,4.557565518E1 +2.882879000E3,4.308396997E1 +2.883145000E3,4.097722416E1 +2.883416000E3,3.927850137E1 +2.883669000E3,3.223716221E1 +2.883941000E3,3.004581442E1 +2.884209000E3,3.765685263E1 +2.884466000E3,3.878810543E1 +2.884718000E3,2.988953340E1 +2.884967000E3,3.346960294E1 +2.885221000E3,3.799647420E1 +2.885537000E3,3.116842616E1 +2.885796000E3,3.671552801E1 +2.886084000E3,4.459898232E1 +2.886404000E3,4.708370738E1 +2.886677000E3,5.036035843E1 +2.886979000E3,4.113513329E1 +2.887251000E3,3.503458684E1 +2.887528000E3,3.462090732E1 +2.887785000E3,4.001717165E1 +2.888037000E3,3.538133603E1 +2.888296000E3,3.662805649E1 +2.888547000E3,4.263542947E1 +2.888820000E3,4.431895872E1 +2.889079000E3,4.300413574E1 +2.889340000E3,4.173317530E1 +2.889582000E3,4.288275032E1 +2.889932000E3,3.944773526E1 +2.890197000E3,3.214266541E1 +2.890503000E3,3.060588708E1 +2.890777000E3,3.296322494E1 +2.891017000E3,3.394251803E1 +2.891320000E3,3.208741950E1 +2.891570000E3,3.441770910E1 +2.891849000E3,3.368561294E1 +2.892087000E3,3.475967611E1 +2.892337000E3,3.740055420E1 +2.892635000E3,3.542355307E1 +2.892981000E3,3.105741683E1 +2.893247000E3,3.245614761E1 +2.893513000E3,4.142391644E1 +2.893779000E3,4.497461971E1 +2.894029000E3,4.653178389E1 +2.894282000E3,4.703576342E1 +2.894540000E3,4.751169602E1 +2.894805000E3,4.201422178E1 +2.895062000E3,4.370261317E1 +2.895310000E3,4.660906406E1 +2.895596000E3,4.633159753E1 +2.895865000E3,4.381116332E1 +2.896155000E3,4.368523912E1 +2.896405000E3,4.747051902E1 +2.896651000E3,4.222577444E1 +2.896905000E3,4.572633660E1 +2.897184000E3,5.203776089E1 +2.897450000E3,5.010843836E1 +2.897744000E3,4.910530865E1 +2.898022000E3,4.664859833E1 +2.898308000E3,3.985336775E1 +2.898564000E3,3.683403533E1 +2.898812000E3,4.284820320E1 +2.899091000E3,4.286036404E1 +2.899396000E3,5.224070654E1 +2.899753000E3,4.568546748E1 +2.900018000E3,5.586433220E1 +2.900278000E3,4.514230837E1 +2.900559000E3,3.853422420E1 +2.900865000E3,3.299777990E1 +2.901139000E3,3.594596453E1 +2.901415000E3,2.896001699E1 +2.901650000E3,2.556794162E1 +2.901937000E3,2.525773120E1 +2.902206000E3,3.138035436E1 +2.902457000E3,3.725731802E1 +2.902816000E3,3.600302530E1 +2.903095000E3,3.476106384E1 +2.903340000E3,3.325569458E1 +2.903600000E3,3.217545002E1 +2.903858000E3,2.994578711E1 +2.904108000E3,3.277965280E1 +2.904372000E3,4.013450695E1 +2.904627000E3,3.103730297E1 +2.904913000E3,4.187502355E1 +2.905174000E3,3.591627686E1 +2.905452000E3,3.067277870E1 +2.905743000E3,2.813597523E1 +2.906004000E3,2.760542404E1 +2.906321000E3,3.327793113E1 +2.906579000E3,4.111963776E1 +2.906835000E3,4.309802180E1 +2.907113000E3,2.749088524E1 +2.907354000E3,2.269523459E1 +2.907657000E3,3.631225289E1 +2.907901000E3,4.146405590E1 +2.908156000E3,3.785670954E1 +2.908403000E3,4.498664409E1 +2.908675000E3,4.174614917E1 +2.908932000E3,4.632262643E1 +2.909189000E3,3.569839459E1 +2.909522000E3,4.635385444E1 +2.909802000E3,4.337190367E1 +2.910035000E3,3.796960383E1 +2.910287000E3,4.151951269E1 +2.910538000E3,4.245940710E1 +2.910795000E3,4.268454470E1 +2.911045000E3,4.280139929E1 +2.911335000E3,3.861780445E1 +2.911584000E3,4.028221299E1 +2.911885000E3,3.934408626E1 +2.912139000E3,3.091195323E1 +2.912386000E3,2.709027446E1 +2.912622000E3,2.721294148E1 +2.912915000E3,3.169063213E1 +2.913196000E3,3.663766462E1 +2.913461000E3,3.582442105E1 +2.913744000E3,2.742218375E1 +2.913990000E3,3.432349666E1 +2.914297000E3,4.586386591E1 +2.914575000E3,4.813383402E1 +2.914888000E3,5.016441505E1 +2.915190000E3,4.132593749E1 +2.915481000E3,3.992883324E1 +2.915827000E3,3.713218942E1 +2.916087000E3,4.862036940E1 +2.916351000E3,4.985137398E1 +2.916622000E3,5.126616609E1 +2.916881000E3,4.180876614E1 +2.917157000E3,4.057128207E1 +2.917418000E3,3.994520906E1 +2.917681000E3,3.719846748E1 +2.917964000E3,4.377214072E1 +2.918264000E3,4.081140664E1 +2.918518000E3,4.149712935E1 +2.918784000E3,3.965801174E1 +2.919127000E3,3.499332266E1 +2.919415000E3,3.454976163E1 +2.919745000E3,3.801205804E1 +2.920003000E3,4.266330834E1 +2.920244000E3,3.704497233E1 +2.920548000E3,3.869800412E1 +2.920840000E3,3.880762608E1 +2.921081000E3,3.967826348E1 +2.921325000E3,4.387098551E1 +2.921573000E3,3.795523909E1 +2.921876000E3,3.884773193E1 +2.922122000E3,3.949919351E1 +2.922481000E3,3.549368996E1 +2.922774000E3,5.176437750E1 +2.923023000E3,4.673969779E1 +2.923306000E3,3.729614967E1 +2.923573000E3,3.557242251E1 +2.923880000E3,5.351861504E1 +2.924155000E3,5.486661937E1 +2.924424000E3,5.693150230E1 +2.924735000E3,4.225245527E1 +2.924988000E3,4.082554353E1 +2.925252000E3,3.807826598E1 +2.925573000E3,3.587807510E1 +2.925935000E3,4.290242494E1 +2.926237000E3,3.960438869E1 +2.926496000E3,3.732088357E1 +2.926751000E3,3.216321546E1 +2.926991000E3,3.001846960E1 +2.927295000E3,3.634949804E1 +2.927531000E3,3.127042454E1 +2.927829000E3,3.158500209E1 +2.928073000E3,2.815993792E1 +2.928370000E3,2.793102526E1 +2.928613000E3,2.468786691E1 +2.928943000E3,2.345175993E1 +2.929256000E3,2.908559709E1 +2.929497000E3,2.580950455E1 +2.929819000E3,2.871707976E1 +2.930114000E3,2.977851279E1 +2.930374000E3,4.220437998E1 +2.930636000E3,3.122152770E1 +2.930945000E3,3.902308439E1 +2.931227000E3,3.648582434E1 +2.931474000E3,4.774090674E1 +2.931717000E3,4.487624905E1 +2.931963000E3,4.620728265E1 +2.932258000E3,4.011602626E1 +2.932585000E3,4.011469989E1 +2.932871000E3,4.531107143E1 +2.933117000E3,4.299757904E1 +2.933366000E3,4.255561828E1 +2.933662000E3,4.180851663E1 +2.933899000E3,3.354142728E1 +2.934139000E3,4.061788576E1 +2.934435000E3,3.190428864E1 +2.934678000E3,3.136545948E1 +2.934975000E3,3.172564299E1 +2.935227000E3,3.538616066E1 +2.935577000E3,3.227761247E1 +2.935826000E3,3.587578035E1 +2.936132000E3,2.830690319E1 +2.936391000E3,2.983281120E1 +2.936636000E3,3.198482114E1 +2.936936000E3,4.529436692E1 +2.937191000E3,3.904726622E1 +2.937498000E3,4.546792713E1 +2.937790000E3,4.178984789E1 +2.938055000E3,3.901507008E1 +2.938332000E3,3.530528642E1 +2.938634000E3,3.766035689E1 +2.939060000E3,5.595745424E1 +2.939318000E3,5.800941557E1 +2.939576000E3,5.061871726E1 +2.939836000E3,6.017617924E1 +2.940124000E3,5.889680612E1 +2.940380000E3,5.553527141E1 +2.940631000E3,4.982924060E1 +2.940889000E3,5.386899946E1 +2.941183000E3,5.511436312E1 +2.941477000E3,5.474658637E1 +2.941736000E3,5.669903896E1 +2.941985000E3,5.352207307E1 +2.942302000E3,5.089540084E1 +2.942556000E3,5.163069551E1 +2.942811000E3,4.946827448E1 +2.943144000E3,4.292332560E1 +2.943386000E3,4.769421745E1 +2.943625000E3,4.741300910E1 +2.943936000E3,4.918473310E1 +2.944182000E3,4.358732286E1 +2.944456000E3,4.338106770E1 +2.944722000E3,5.302068646E1 +2.945006000E3,4.800501219E1 +2.945370000E3,4.445792428E1 +2.945619000E3,3.768400599E1 +2.945867000E3,3.829540629E1 +2.946159000E3,3.766669508E1 +2.946411000E3,4.016839261E1 +2.946712000E3,4.041724233E1 +2.947009000E3,4.012217251E1 +2.947323000E3,3.568820570E1 +2.947568000E3,3.690839296E1 +2.947818000E3,4.813137033E1 +2.948084000E3,5.325274156E1 +2.948341000E3,5.892514859E1 +2.948730000E3,4.314585435E1 +2.948980000E3,4.049194134E1 +2.949257000E3,4.522053034E1 +2.949515000E3,4.263261915E1 +2.949826000E3,5.159034358E1 +2.950126000E3,4.094053529E1 +2.950370000E3,4.144504964E1 +2.950613000E3,4.584689520E1 +2.950933000E3,3.986259871E1 +2.951211000E3,5.835616238E1 +2.951492000E3,4.865922153E1 +2.951773000E3,4.646806952E1 +2.952049000E3,5.501145746E1 +2.952349000E3,5.395560549E1 +2.952606000E3,5.094776028E1 +2.952859000E3,5.987933082E1 +2.953123000E3,5.553863596E1 +2.953365000E3,6.056471643E1 +2.953626000E3,5.705129962E1 +2.953881000E3,5.620457969E1 +2.954143000E3,4.633104773E1 +2.954403000E3,4.542785483E1 +2.954666000E3,4.357363747E1 +2.954925000E3,5.905995366E1 +2.955255000E3,5.325307727E1 +2.955500000E3,6.730464031E1 +2.955795000E3,6.362836082E1 +2.956030000E3,6.057596417E1 +2.956332000E3,6.813918985E1 +2.956573000E3,6.403678903E1 +2.956871000E3,6.230635205E1 +2.957135000E3,6.746671531E1 +2.957401000E3,6.427695804E1 +2.957673000E3,5.206458526E1 +2.957933000E3,5.261265827E1 +2.958182000E3,4.877242183E1 +2.958552000E3,6.627461000E1 +2.958808000E3,6.741673158E1 +2.959062000E3,6.597614354E1 +2.959304000E3,6.540552328E1 +2.959551000E3,6.528289091E1 +2.959864000E3,5.830061674E1 +2.960121000E3,5.985112812E1 +2.960428000E3,6.090568068E1 +2.960720000E3,6.807446854E1 +2.960985000E3,6.930722199E1 +2.961226000E3,6.386100217E1 +2.961579000E3,6.028451745E1 +2.961849000E3,6.477814340E1 +2.962132000E3,6.837046944E1 +2.962373000E3,6.647209363E1 +2.962660000E3,6.694202205E1 +2.962967000E3,6.648756695E1 +2.963231000E3,6.482625001E1 +2.963518000E3,7.095796361E1 +2.963775000E3,6.454417662E1 +2.964062000E3,6.533171518E1 +2.964339000E3,6.471819922E1 +2.964629000E3,5.679367810E1 +2.964962000E3,5.573913208E1 +2.965271000E3,6.251351498E1 +2.965502000E3,6.071427502E1 +2.965745000E3,6.212696498E1 +2.966049000E3,5.601947939E1 +2.966292000E3,5.543203731E1 +2.966544000E3,5.440105204E1 +2.966807000E3,5.169354717E1 +2.967114000E3,5.098574914E1 +2.967354000E3,4.778774527E1 +2.967603000E3,5.527018336E1 +2.967874000E3,5.069142516E1 +2.968220000E3,5.540354927E1 +2.968470000E3,5.388190573E1 +2.968725000E3,5.648678631E1 +2.968994000E3,6.195289166E1 +2.969259000E3,5.924073062E1 +2.969526000E3,5.554902217E1 +2.969797000E3,6.073047002E1 +2.970049000E3,5.750580172E1 +2.970375000E3,6.205206850E1 +2.970685000E3,5.892672487E1 +2.971008000E3,5.603539479E1 +2.971306000E3,5.380141597E1 +2.971609000E3,6.182570937E1 +2.971860000E3,5.755792598E1 +2.972120000E3,7.094637252E1 +2.972374000E3,7.220321333E1 +2.972688000E3,6.074903881E1 +2.972946000E3,5.132390204E1 +2.973203000E3,5.555176793E1 +2.973482000E3,5.082163203E1 +2.973746000E3,6.668022761E1 +2.974024000E3,6.951681150E1 +2.974257000E3,6.170353739E1 +2.974507000E3,6.191784425E1 +2.974845000E3,6.249884739E1 +2.975129000E3,6.139715498E1 +2.975385000E3,5.458109058E1 +2.975684000E3,6.285593412E1 +2.975925000E3,6.801445640E1 +2.976223000E3,6.762358149E1 +2.976454000E3,6.007212586E1 +2.976698000E3,6.176376027E1 +2.976998000E3,5.489351528E1 +2.977244000E3,6.419682450E1 +2.977544000E3,6.335879864E1 +2.977813000E3,6.346249627E1 +2.978071000E3,6.122721977E1 +2.978303000E3,6.269343112E1 +2.978564000E3,5.719207644E1 +2.978818000E3,6.209398004E1 +2.979085000E3,6.570545323E1 +2.979335000E3,6.443300698E1 +2.979582000E3,6.395479352E1 +2.979841000E3,6.285971298E1 +2.980091000E3,6.452411240E1 +2.980337000E3,6.648403811E1 +2.980638000E3,6.146510082E1 +2.980898000E3,6.178604521E1 +2.981191000E3,5.906416732E1 +2.981418000E3,6.139524316E1 +2.981668000E3,6.754933795E1 +2.981958000E3,5.804633278E1 +2.982221000E3,5.544285219E1 +2.982480000E3,5.252390700E1 +2.982741000E3,5.442974682E1 +2.983009000E3,5.886662164E1 +2.983270000E3,6.039421332E1 +2.983532000E3,5.984826425E1 +2.983780000E3,6.038747451E1 +2.984020000E3,5.836799318E1 +2.984266000E3,6.011457774E1 +2.984654000E3,6.086793857E1 +2.984928000E3,6.104684994E1 +2.985246000E3,6.081085188E1 +2.985504000E3,6.338602633E1 +2.985771000E3,6.224702903E1 +2.986040000E3,5.771788346E1 +2.986351000E3,5.832375863E1 +2.986657000E3,6.179808645E1 +2.986893000E3,6.074067698E1 +2.987188000E3,5.763905723E1 +2.987459000E3,5.411975455E1 +2.987698000E3,5.609082395E1 +2.988020000E3,5.838775534E1 +2.988261000E3,5.545934196E1 +2.988564000E3,5.818253650E1 +2.988803000E3,5.693365858E1 +2.989084000E3,5.747877452E1 +2.989394000E3,6.108654481E1 +2.989646000E3,6.109521888E1 +2.989952000E3,5.453216708E1 +2.990235000E3,5.325056065E1 +2.990530000E3,5.226229633E1 +2.990796000E3,5.566734434E1 +2.991153000E3,5.983192138E1 +2.991409000E3,5.902282422E1 +2.991712000E3,6.553978750E1 +2.991962000E3,6.323109208E1 +2.992210000E3,6.430699278E1 +2.992477000E3,6.439502996E1 +2.992769000E3,5.882379749E1 +2.993024000E3,7.076998945E1 +2.993317000E3,6.710088514E1 +2.993554000E3,6.332152683E1 +2.993846000E3,6.013348006E1 +2.994081000E3,6.492156154E1 +2.994361000E3,6.054189638E1 +2.994671000E3,5.878685209E1 +2.994911000E3,6.363988355E1 +2.995218000E3,6.266127576E1 +2.995513000E3,6.231860976E1 +2.995750000E3,6.770663238E1 +2.996056000E3,6.411706706E1 +2.996346000E3,6.607053327E1 +2.996592000E3,6.231837938E1 +2.996884000E3,6.235557028E1 +2.997130000E3,6.626149607E1 +2.997386000E3,6.897456616E1 +2.997721000E3,6.896820400E1 +2.997984000E3,5.708709076E1 +2.998260000E3,5.465136518E1 +2.998532000E3,6.136090841E1 +2.998792000E3,6.427324700E1 +2.999047000E3,5.922924051E1 +2.999308000E3,5.964993479E1 +2.999619000E3,5.937495043E1 +2.999910000E3,6.345321013E1 +3.000196000E3,6.558504608E1 +3.000438000E3,6.566442906E1 +3.000721000E3,6.596782674E1 +3.001048000E3,6.493210478E1 +3.001299000E3,6.778071085E1 +3.001554000E3,5.810398860E1 +3.001834000E3,6.461256831E1 +3.002084000E3,5.637103240E1 +3.002332000E3,6.244497501E1 +3.002633000E3,5.749162406E1 +3.002980000E3,6.268391580E1 +3.003246000E3,6.122193913E1 +3.003572000E3,6.467185898E1 +3.003877000E3,6.239318427E1 +3.004266000E3,6.708558966E1 +3.004573000E3,6.293492178E1 +3.004871000E3,6.169168265E1 +3.005129000E3,5.944912128E1 +3.005404000E3,5.631628075E1 +3.005704000E3,6.080609102E1 +3.005964000E3,6.424565764E1 +3.006250000E3,6.447415860E1 +3.006481000E3,6.606824769E1 +3.006756000E3,6.337387069E1 +3.007004000E3,6.294291386E1 +3.007286000E3,6.430484746E1 +3.007612000E3,6.091848593E1 +3.007867000E3,6.343837854E1 +3.008169000E3,5.978702761E1 +3.008432000E3,5.965865421E1 +3.008675000E3,5.540362761E1 +3.008918000E3,5.443572137E1 +3.009202000E3,6.171389250E1 +3.009446000E3,6.487192568E1 +3.009738000E3,5.958143908E1 +3.009983000E3,6.189834719E1 +3.010232000E3,5.752745917E1 +3.010489000E3,6.339873723E1 +3.010846000E3,6.127984243E1 +3.011144000E3,6.065194767E1 +3.011387000E3,6.253646864E1 +3.011646000E3,6.179753794E1 +3.011925000E3,6.231808205E1 +3.012153000E3,6.101579519E1 +3.012442000E3,5.876502421E1 +3.012737000E3,5.809905793E1 +3.013015000E3,5.695141293E1 +3.013301000E3,5.973139928E1 +3.013577000E3,6.007240820E1 +3.013839000E3,7.136453087E1 +3.014063000E3,7.173892024E1 +3.014315000E3,6.885425335E1 +3.014559000E3,6.110376355E1 +3.014808000E3,6.296723224E1 +3.015075000E3,6.021879294E1 +3.015327000E3,6.012811489E1 +3.015577000E3,6.282613373E1 +3.015850000E3,6.884549735E1 +3.016115000E3,6.913958233E1 +3.016397000E3,6.608409337E1 +3.016648000E3,6.437779633E1 +3.016896000E3,6.412579817E1 +3.017253000E3,6.408373459E1 +3.017500000E3,6.487828946E1 +3.017743000E3,6.281964754E1 +3.018003000E3,6.153697843E1 +3.018258000E3,6.503307442E1 +3.018512000E3,6.508021131E1 +3.018791000E3,5.910017780E1 +3.019028000E3,5.757469918E1 +3.019325000E3,5.762978005E1 +3.019573000E3,5.366611226E1 +3.019824000E3,5.708763529E1 +3.020086000E3,5.488621207E1 +3.020437000E3,5.826722905E1 +3.020695000E3,5.951373108E1 +3.020968000E3,6.130623452E1 +3.021217000E3,6.025771329E1 +3.021490000E3,5.280103891E1 +3.021737000E3,6.123009986E1 +3.022037000E3,6.404958762E1 +3.022328000E3,6.469373641E1 +3.022599000E3,6.283727611E1 +3.022840000E3,6.248869497E1 +3.023123000E3,6.767270030E1 +3.023363000E3,6.436289402E1 +3.023706000E3,6.007121161E1 +3.023992000E3,6.067397941E1 +3.024255000E3,6.005092329E1 +3.024513000E3,6.146229561E1 +3.024803000E3,6.214304530E1 +3.025060000E3,6.107977952E1 +3.025317000E3,6.268440106E1 +3.025560000E3,5.744048190E1 +3.025823000E3,6.080102592E1 +3.026092000E3,6.359394744E1 +3.026384000E3,6.219604097E1 +3.026685000E3,6.296073955E1 +3.026912000E3,6.243574530E1 +3.027190000E3,6.540426031E1 +3.027426000E3,7.038009166E1 +3.027684000E3,7.133800291E1 +3.027943000E3,6.847497315E1 +3.028214000E3,7.049817235E1 +3.028486000E3,6.555713643E1 +3.028748000E3,6.762942526E1 +3.029008000E3,6.780082040E1 +3.029264000E3,6.644646205E1 +3.029533000E3,7.066497540E1 +3.029800000E3,6.700863421E1 +3.030174000E3,6.263767412E1 +3.030459000E3,5.937975562E1 +3.030697000E3,6.189133018E1 +3.030958000E3,6.479748496E1 +3.031218000E3,6.070421224E1 +3.031488000E3,5.567295684E1 +3.031754000E3,6.162939414E1 +3.032026000E3,6.462556380E1 +3.032293000E3,6.300561819E1 +3.032553000E3,6.320528504E1 +3.032852000E3,6.205536878E1 +3.033102000E3,7.179598993E1 +3.033490000E3,6.907149718E1 +3.033750000E3,6.110443799E1 +3.034008000E3,5.743025653E1 +3.034257000E3,5.714646515E1 +3.034505000E3,6.193634179E1 +3.034762000E3,6.511685208E1 +3.035034000E3,6.647840023E1 +3.035277000E3,6.637602928E1 +3.035534000E3,6.208743290E1 +3.035873000E3,6.158502662E1 +3.036127000E3,6.138896352E1 +3.036392000E3,5.988342330E1 +3.036737000E3,5.834272912E1 +3.036998000E3,6.504474047E1 +3.037253000E3,5.801637483E1 +3.037569000E3,6.208073459E1 +3.037831000E3,6.555093843E1 +3.038084000E3,6.686352963E1 +3.038356000E3,6.398821865E1 +3.038638000E3,6.053541888E1 +3.038927000E3,5.509282051E1 +3.039228000E3,6.213274835E1 +3.039473000E3,6.149105368E1 +3.039745000E3,6.097957376E1 +3.040056000E3,6.313145073E1 +3.040300000E3,6.749857058E1 +3.040549000E3,6.031561589E1 +3.040852000E3,5.991948868E1 +3.041110000E3,6.228314687E1 +3.041358000E3,6.281493679E1 +3.041621000E3,6.031124820E1 +3.041926000E3,6.035954468E1 +3.042177000E3,6.230627050E1 +3.042448000E3,5.381586458E1 +3.042741000E3,6.032611045E1 +3.043026000E3,5.796046788E1 +3.043304000E3,6.286261594E1 +3.043605000E3,6.188894569E1 +3.043848000E3,6.196336480E1 +3.044091000E3,6.506902622E1 +3.044345000E3,6.547913264E1 +3.044589000E3,6.701681380E1 +3.044849000E3,6.398074775E1 +3.045095000E3,6.102355933E1 +3.045350000E3,6.546609328E1 +3.045598000E3,6.626677347E1 +3.045845000E3,6.212155235E1 +3.046098000E3,6.475032486E1 +3.046433000E3,6.469401418E1 +3.046698000E3,6.335899573E1 +3.046970000E3,5.799459631E1 +3.047267000E3,5.777430210E1 +3.047527000E3,6.228044606E1 +3.047785000E3,5.521572273E1 +3.048044000E3,5.312506195E1 +3.048316000E3,5.877400717E1 +3.048592000E3,6.239358597E1 +3.048842000E3,6.019315355E1 +3.049164000E3,5.944515023E1 +3.049418000E3,6.571719967E1 +3.049752000E3,5.906077781E1 +3.050005000E3,6.269931225E1 +3.050242000E3,6.329267329E1 +3.050532000E3,6.094692628E1 +3.050797000E3,6.137608503E1 +3.051055000E3,6.019630450E1 +3.051299000E3,5.959056092E1 +3.051551000E3,6.195653625E1 +3.051802000E3,5.997942431E1 +3.052044000E3,6.071988649E1 +3.052348000E3,6.146559433E1 +3.052605000E3,6.320542640E1 +3.052903000E3,6.301314639E1 +3.053133000E3,6.491013087E1 +3.053386000E3,5.374424399E1 +3.053632000E3,5.337930652E1 +3.053925000E3,5.830420592E1 +3.054167000E3,5.827724976E1 +3.054414000E3,5.413373264E1 +3.054713000E3,5.438904566E1 +3.054952000E3,5.478972153E1 +3.055245000E3,6.026125791E1 +3.055545000E3,6.377000784E1 +3.055792000E3,6.273059884E1 +3.056116000E3,6.164463909E1 +3.056426000E3,6.310484015E1 +3.056665000E3,6.191865333E1 +3.056974000E3,6.044005004E1 +3.057225000E3,5.723160495E1 +3.057532000E3,6.482171923E1 +3.057799000E3,6.373654624E1 +3.058097000E3,6.579319958E1 +3.058333000E3,6.717439766E1 +3.058632000E3,6.244987186E1 +3.058874000E3,5.911459441E1 +3.059119000E3,6.246625617E1 +3.059514000E3,6.061929027E1 +3.059786000E3,6.141894857E1 +3.060044000E3,6.531006136E1 +3.060311000E3,6.745420282E1 +3.060564000E3,6.305040539E1 +3.060809000E3,6.250223063E1 +3.061063000E3,5.984183740E1 +3.061365000E3,6.201500936E1 +3.061610000E3,6.171968159E1 +3.061853000E3,5.636652524E1 +3.062137000E3,5.937450988E1 +3.062405000E3,5.424162977E1 +3.062724000E3,5.577353705E1 +3.062968000E3,6.265208868E1 +3.063225000E3,6.754657095E1 +3.063470000E3,6.259832443E1 +3.063731000E3,5.846954403E1 +3.063975000E3,5.735719718E1 +3.064220000E3,5.614657426E1 +3.064460000E3,5.493678071E1 +3.064711000E3,6.175770153E1 +3.064961000E3,6.502893325E1 +3.065266000E3,6.372557142E1 +3.065562000E3,6.165604672E1 +3.065921000E3,6.202265536E1 +3.066181000E3,5.894659424E1 +3.066427000E3,5.516515279E1 +3.066669000E3,5.227763917E1 +3.066911000E3,5.331294555E1 +3.067166000E3,5.535383534E1 +3.067460000E3,5.490405248E1 +3.067721000E3,5.927902794E1 +3.068030000E3,6.001209348E1 +3.068288000E3,5.925707402E1 +3.068553000E3,6.116769528E1 +3.068848000E3,5.907075037E1 +3.069160000E3,5.402384091E1 +3.069467000E3,6.078433547E1 +3.069706000E3,6.064305090E1 +3.069991000E3,6.099922555E1 +3.070247000E3,6.081028216E1 +3.070500000E3,6.857342881E1 +3.070795000E3,6.830085683E1 +3.071035000E3,7.092929468E1 +3.071334000E3,6.670654987E1 +3.071580000E3,6.198358410E1 +3.071845000E3,6.029427505E1 +3.072216000E3,6.271100503E1 +3.072476000E3,6.548403896E1 +3.072709000E3,6.655140024E1 +3.072958000E3,6.872933885E1 +3.073221000E3,6.840034062E1 +3.073524000E3,6.189262665E1 +3.073801000E3,6.315516618E1 +3.074029000E3,6.431689152E1 +3.074282000E3,7.008635825E1 +3.074531000E3,6.529488526E1 +3.074781000E3,5.362885622E1 +3.075079000E3,6.174622467E1 +3.075321000E3,6.106059522E1 +3.075569000E3,6.727558853E1 +3.075841000E3,6.068477373E1 +3.076089000E3,6.224550385E1 +3.076358000E3,6.049387981E1 +3.076618000E3,5.554290122E1 +3.076868000E3,5.232623619E1 +3.077136000E3,5.715980006E1 +3.077434000E3,6.112308912E1 +3.077738000E3,5.964598426E1 +3.077997000E3,5.774993649E1 +3.078301000E3,5.930552673E1 +3.078632000E3,6.204668908E1 +3.078903000E3,6.135182684E1 +3.079234000E3,6.010535577E1 +3.079530000E3,5.612975229E1 +3.079846000E3,5.894789721E1 +3.080130000E3,6.424282153E1 +3.080395000E3,6.696093787E1 +3.080696000E3,5.929656512E1 +3.080931000E3,5.577162965E1 +3.081168000E3,6.096321541E1 +3.081415000E3,6.147204445E1 +3.081708000E3,6.518353223E1 +3.082066000E3,6.565001970E1 +3.082347000E3,6.152216198E1 +3.082591000E3,6.232488129E1 +3.082884000E3,6.450829181E1 +3.083131000E3,6.727741702E1 +3.083373000E3,6.596172391E1 +3.083615000E3,6.588974420E1 +3.083909000E3,6.215985231E1 +3.084146000E3,5.417797447E1 +3.084444000E3,5.776086644E1 +3.084736000E3,6.145598006E1 +3.085067000E3,6.705675690E1 +3.085353000E3,7.032609091E1 +3.085621000E3,6.942809802E1 +3.085926000E3,6.673219093E1 +3.086170000E3,5.874483463E1 +3.086457000E3,6.163530440E1 +3.086730000E3,5.863155738E1 +3.086955000E3,5.804604701E1 +3.087247000E3,7.202263239E1 +3.087542000E3,6.907595594E1 +3.087796000E3,7.104760035E1 +3.088063000E3,6.060670654E1 +3.088371000E3,6.409876160E1 +3.088642000E3,6.504332531E1 +3.088891000E3,6.050178076E1 +3.089172000E3,5.988548041E1 +3.089448000E3,6.419311516E1 +3.089715000E3,6.072209436E1 +3.089992000E3,6.148544930E1 +3.090256000E3,6.667985585E1 +3.090551000E3,6.360479893E1 +3.090829000E3,6.675347002E1 +3.091081000E3,6.585951744E1 +3.091337000E3,5.998998345E1 +3.091582000E3,7.213751425E1 +3.091973000E3,7.002319175E1 +3.092225000E3,6.554991346E1 +3.092495000E3,5.438962824E1 +3.092757000E3,5.806427109E1 +3.093010000E3,5.611571138E1 +3.093290000E3,5.427298566E1 +3.093553000E3,6.332676554E1 +3.093801000E3,6.191283999E1 +3.094088000E3,6.222056485E1 +3.094383000E3,6.679558422E1 +3.094660000E3,6.396349695E1 +3.094980000E3,6.335657582E1 +3.095321000E3,6.368682935E1 +3.095574000E3,6.239728447E1 +3.095829000E3,6.560913932E1 +3.096083000E3,6.288470186E1 +3.096327000E3,6.063834800E1 +3.096611000E3,5.698542980E1 +3.096866000E3,6.214573666E1 +3.097125000E3,6.108001307E1 +3.097382000E3,6.098898235E1 +3.097639000E3,6.935379750E1 +3.097944000E3,6.076333803E1 +3.098235000E3,5.747447310E1 +3.098595000E3,5.896750888E1 +3.098845000E3,6.428262322E1 +3.099146000E3,6.073561603E1 +3.099435000E3,5.610862272E1 +3.099679000E3,5.808393750E1 +3.099971000E3,6.306244141E1 +3.100214000E3,6.493760740E1 +3.100511000E3,5.964091377E1 +3.100753000E3,5.949423253E1 +3.100995000E3,6.324186751E1 +3.101237000E3,6.294719776E1 +3.101481000E3,6.618420708E1 +3.101805000E3,6.039251647E1 +3.102105000E3,6.883376735E1 +3.102388000E3,6.215701199E1 +3.102635000E3,6.251944475E1 +3.102926000E3,6.387718652E1 +3.103175000E3,6.262879933E1 +3.103469000E3,6.094246273E1 +3.103717000E3,5.780442917E1 +3.104010000E3,5.805018882E1 +3.104245000E3,6.073911170E1 +3.104537000E3,5.820155990E1 +3.104880000E3,5.691870737E1 +3.105139000E3,5.609187778E1 +3.105418000E3,5.368790307E1 +3.105673000E3,5.733127796E1 +3.105933000E3,5.834617124E1 +3.106196000E3,5.665251568E1 +3.106447000E3,5.839993992E1 +3.106707000E3,5.765825797E1 +3.106989000E3,6.346036236E1 +3.107241000E3,6.088974139E1 +3.107536000E3,5.623231578E1 +3.107836000E3,5.905990454E1 +3.108208000E3,5.913546091E1 +3.108462000E3,5.921957697E1 +3.108732000E3,6.403378055E1 +3.109010000E3,6.829473891E1 +3.109237000E3,6.866131452E1 +3.109530000E3,5.759864554E1 +3.109769000E3,5.216447932E1 +3.110067000E3,5.887622687E1 +3.110356000E3,5.912152229E1 +3.110621000E3,6.343631440E1 +3.110862000E3,6.110189356E1 +3.111105000E3,5.925249209E1 +3.111441000E3,5.583559168E1 +3.111708000E3,6.397874973E1 +3.112049000E3,5.864630935E1 +3.112314000E3,5.876030726E1 +3.112620000E3,5.558460131E1 +3.112980000E3,5.336927775E1 +3.113232000E3,5.351895645E1 +3.113515000E3,4.932805120E1 +3.113763000E3,6.323075662E1 +3.114057000E3,6.375401647E1 +3.114318000E3,6.430798012E1 +3.114651000E3,6.745313705E1 +3.114909000E3,6.370697195E1 +3.115204000E3,6.719832935E1 +3.115517000E3,6.353352979E1 +3.115816000E3,6.421660294E1 +3.116074000E3,6.666449428E1 +3.116372000E3,6.209745804E1 +3.116612000E3,5.853853683E1 +3.116911000E3,6.153177442E1 +3.117151000E3,6.465277685E1 +3.117439000E3,6.054074617E1 +3.117698000E3,5.762180605E1 +3.118029000E3,5.904912096E1 +3.118292000E3,6.054469105E1 +3.118547000E3,6.570885599E1 +3.118854000E3,6.686989978E1 +3.119103000E3,6.506823644E1 +3.119359000E3,5.780133308E1 +3.119610000E3,5.983707630E1 +3.119896000E3,6.102798325E1 +3.120167000E3,5.940835035E1 +3.120446000E3,6.154008300E1 +3.120717000E3,6.031178539E1 +3.120969000E3,6.222997321E1 +3.121291000E3,6.676268308E1 +3.121532000E3,6.244629438E1 +3.121778000E3,6.014719673E1 +3.122038000E3,6.351124664E1 +3.122317000E3,5.786579019E1 +3.122607000E3,5.704033688E1 +3.122864000E3,5.941823253E1 +3.123160000E3,6.366298469E1 +3.123429000E3,6.545330590E1 +3.123678000E3,6.206143443E1 +3.123932000E3,6.250040348E1 +3.124250000E3,6.193784317E1 +3.124582000E3,6.679802083E1 +3.124888000E3,6.239911876E1 +3.125141000E3,6.227743005E1 +3.125407000E3,5.930162190E1 +3.125655000E3,5.692493613E1 +3.125897000E3,6.100851678E1 +3.126155000E3,6.356932883E1 +3.126470000E3,6.583742229E1 +3.126735000E3,6.828531785E1 +3.127049000E3,6.744954014E1 +3.127349000E3,6.892448306E1 +3.127620000E3,6.312172108E1 +3.127885000E3,6.549450530E1 +3.128150000E3,6.274114245E1 +3.128434000E3,5.987443555E1 +3.128694000E3,5.754092402E1 +3.128967000E3,6.140483336E1 +3.129224000E3,5.793735580E1 +3.129483000E3,5.640840091E1 +3.129735000E3,7.068460790E1 +3.130042000E3,6.831622259E1 +3.130308000E3,6.661131327E1 +3.130563000E3,7.032191033E1 +3.130897000E3,6.429012882E1 +3.131166000E3,6.890779868E1 +3.131427000E3,6.812897599E1 +3.131726000E3,6.440583932E1 +3.132039000E3,6.371305855E1 +3.132310000E3,6.071113649E1 +3.132582000E3,6.356904702E1 +3.132834000E3,6.335195410E1 +3.133078000E3,5.922748305E1 +3.133357000E3,5.790290676E1 +3.133581000E3,6.067150466E1 +3.133827000E3,5.936438225E1 +3.134075000E3,5.651144024E1 +3.134312000E3,5.707156804E1 +3.134564000E3,6.256442790E1 +3.134822000E3,5.680653319E1 +3.135099000E3,6.386946987E1 +3.135341000E3,6.183817556E1 +3.135588000E3,5.791592939E1 +3.135843000E3,5.415500200E1 +3.136159000E3,5.828393923E1 +3.136402000E3,5.584102234E1 +3.136645000E3,5.843965538E1 +3.136922000E3,6.032067675E1 +3.137231000E3,6.082235855E1 +3.137514000E3,6.216335250E1 +3.137763000E3,6.576895249E1 +3.138052000E3,5.935628673E1 +3.138348000E3,5.697436057E1 +3.138590000E3,6.713499986E1 +3.138833000E3,5.996032355E1 +3.139071000E3,6.566814076E1 +3.139366000E3,6.469315039E1 +3.139607000E3,6.414816039E1 +3.139901000E3,6.238348704E1 +3.140144000E3,5.975478602E1 +3.140477000E3,5.617333113E1 +3.140789000E3,6.140881460E1 +3.141038000E3,5.760925345E1 +3.141323000E3,5.813474075E1 +3.141616000E3,6.190304914E1 +3.141899000E3,5.853813516E1 +3.142123000E3,6.019478920E1 +3.142387000E3,5.824830032E1 +3.142639000E3,6.031650371E1 +3.142898000E3,5.874305926E1 +3.143211000E3,6.365997735E1 +3.143459000E3,6.182267241E1 +3.143814000E3,6.153305629E1 +3.144076000E3,6.040235966E1 +3.144345000E3,6.279707978E1 +3.144591000E3,6.261441373E1 +3.144837000E3,5.722591859E1 +3.145082000E3,5.791919274E1 +3.145387000E3,6.142016587E1 +3.145678000E3,5.996802308E1 +3.145994000E3,5.761245992E1 +3.146269000E3,5.915341256E1 +3.146531000E3,5.679987844E1 +3.146814000E3,6.228452904E1 +3.147163000E3,6.038592359E1 +3.147440000E3,6.662509726E1 +3.147705000E3,5.864713600E1 +3.147961000E3,6.383827006E1 +3.148228000E3,6.445939632E1 +3.148543000E3,6.206597752E1 +3.148800000E3,6.082056407E1 +3.149046000E3,5.872798480E1 +3.149340000E3,5.792404132E1 +3.149585000E3,5.917409009E1 +3.149845000E3,5.619795947E1 +3.150164000E3,6.447379623E1 +3.150501000E3,6.336546747E1 +3.150798000E3,6.022605646E1 +3.151059000E3,5.837139298E1 +3.151360000E3,5.721847889E1 +3.151614000E3,7.085699981E1 +3.151908000E3,6.031233854E1 +3.152206000E3,6.170839562E1 +3.152452000E3,6.336115962E1 +3.152697000E3,6.732286145E1 +3.152943000E3,6.043278366E1 +3.153235000E3,5.822950572E1 +3.153537000E3,6.155234216E1 +3.153813000E3,5.671966020E1 +3.154078000E3,5.613348243E1 +3.154333000E3,5.384913785E1 +3.154580000E3,5.739778382E1 +3.154869000E3,5.617144196E1 +3.155103000E3,5.699346940E1 +3.155351000E3,6.356393037E1 +3.155653000E3,5.483372318E1 +3.155949000E3,5.806865262E1 +3.156195000E3,5.725879338E1 +3.156459000E3,5.708272088E1 +3.156776000E3,5.736330762E1 +3.157028000E3,5.620178265E1 +3.157280000E3,5.557503250E1 +3.157521000E3,6.379766868E1 +3.157864000E3,6.175462639E1 +3.158113000E3,5.970375584E1 +3.158365000E3,5.482220327E1 +3.158625000E3,6.094938302E1 +3.158872000E3,6.189076140E1 +3.159128000E3,6.365906369E1 +3.159385000E3,6.365252593E1 +3.159699000E3,6.421784723E1 +3.160039000E3,5.952347777E1 +3.160337000E3,6.582170091E1 +3.160643000E3,6.400621400E1 +3.160905000E3,5.982923632E1 +3.161162000E3,5.912958512E1 +3.161449000E3,5.744161350E1 +3.161722000E3,6.208953034E1 +3.161984000E3,6.743490019E1 +3.162228000E3,5.893358785E1 +3.162506000E3,6.260442429E1 +3.162777000E3,6.054589944E1 +3.163072000E3,5.958101250E1 +3.163380000E3,5.756716970E1 +3.163623000E3,5.897741262E1 +3.163916000E3,5.199350029E1 +3.164173000E3,5.607364633E1 +3.164444000E3,6.846587546E1 +3.164756000E3,5.833953537E1 +3.165011000E3,6.699601536E1 +3.165255000E3,6.024033326E1 +3.165530000E3,5.636786936E1 +3.165825000E3,5.917346905E1 +3.166077000E3,5.684739711E1 +3.166343000E3,5.441684119E1 +3.166607000E3,5.708423030E1 +3.166871000E3,5.726160097E1 +3.167212000E3,5.795085756E1 +3.167513000E3,5.359033433E1 +3.167800000E3,5.481028168E1 +3.168051000E3,5.771426852E1 +3.168321000E3,5.720698183E1 +3.168574000E3,6.029484328E1 +3.168847000E3,6.594273179E1 +3.169141000E3,5.814954146E1 +3.169451000E3,5.741553332E1 +3.169717000E3,5.474949866E1 +3.170064000E3,5.858087337E1 +3.170388000E3,5.901398101E1 +3.170689000E3,6.599046976E1 +3.170942000E3,6.777823262E1 +3.171184000E3,6.339704259E1 +3.171437000E3,5.678237753E1 +3.171694000E3,6.067324941E1 +3.171975000E3,6.337570500E1 +3.172215000E3,6.060254578E1 +3.172509000E3,6.511602204E1 +3.172792000E3,6.491523998E1 +3.173086000E3,6.236437487E1 +3.173442000E3,6.132637014E1 +3.173725000E3,5.575670785E1 +3.173997000E3,5.450541115E1 +3.174243000E3,5.816223835E1 +3.174516000E3,5.991084873E1 +3.174771000E3,5.959264792E1 +3.175022000E3,6.001504494E1 +3.175268000E3,5.794233494E1 +3.175510000E3,5.875384007E1 +3.175752000E3,6.582497874E1 +3.176001000E3,6.385809704E1 +3.176310000E3,6.575292490E1 +3.176700000E3,6.328122862E1 +3.176947000E3,6.160374932E1 +3.177205000E3,6.233605233E1 +3.177480000E3,5.746120395E1 +3.177733000E3,5.491961653E1 +3.178002000E3,5.346590976E1 +3.178308000E3,4.910433719E1 +3.178598000E3,5.548086035E1 +3.178876000E3,5.834728013E1 +3.179129000E3,5.722852381E1 +3.179407000E3,5.371032540E1 +3.179686000E3,5.375017527E1 +3.180066000E3,5.741446005E1 +3.180325000E3,5.595914402E1 +3.180624000E3,5.784989425E1 +3.180867000E3,5.818330240E1 +3.181112000E3,5.651638359E1 +3.181407000E3,5.400925398E1 +3.181645000E3,5.134681346E1 +3.181939000E3,5.540645654E1 +3.182189000E3,5.603348674E1 +3.182489000E3,5.612576596E1 +3.182726000E3,5.412821683E1 +3.183072000E3,5.364995955E1 +3.183373000E3,5.685067634E1 +3.183631000E3,5.292396423E1 +3.183913000E3,5.037305724E1 +3.184139000E3,5.458652507E1 +3.184386000E3,5.336216390E1 +3.184625000E3,5.355204553E1 +3.184861000E3,5.798216811E1 +3.185170000E3,5.037998219E1 +3.185412000E3,5.253320042E1 +3.185661000E3,5.864558083E1 +3.185944000E3,5.568855775E1 +3.186307000E3,6.065674046E1 +3.186594000E3,5.486017232E1 +3.186846000E3,5.354898396E1 +3.187128000E3,5.606629368E1 +3.187373000E3,5.887335608E1 +3.187646000E3,5.932986575E1 +3.187996000E3,5.618144782E1 +3.188254000E3,5.279151533E1 +3.188538000E3,5.980979660E1 +3.188819000E3,5.959008295E1 +3.189058000E3,5.757326838E1 +3.189324000E3,5.814251633E1 +3.189681000E3,6.715432083E1 +3.189929000E3,5.659786492E1 +3.190183000E3,6.813933576E1 +3.190493000E3,6.423896785E1 +3.190762000E3,6.115594562E1 +3.191063000E3,6.466877383E1 +3.191295000E3,6.400176112E1 +3.191543000E3,6.061189134E1 +3.191813000E3,6.334758009E1 +3.192062000E3,6.268892194E1 +3.192384000E3,6.255649695E1 +3.192688000E3,6.440152216E1 +3.193095000E3,6.083356984E1 +3.193368000E3,5.702207605E1 +3.193630000E3,6.129862703E1 +3.193931000E3,6.511359313E1 +3.194208000E3,6.424113032E1 +3.194458000E3,6.277957456E1 +3.194751000E3,6.067489213E1 +3.195007000E3,6.044409325E1 +3.195267000E3,5.902485869E1 +3.195523000E3,5.940450479E1 +3.195769000E3,5.629667180E1 +3.196103000E3,5.773687048E1 +3.196362000E3,5.275604571E1 +3.196676000E3,5.321996877E1 +3.196932000E3,4.952922772E1 +3.197191000E3,5.411849627E1 +3.197458000E3,5.575997519E1 +3.197718000E3,5.782402980E1 +3.197982000E3,6.092045522E1 +3.198228000E3,6.504329265E1 +3.198474000E3,5.972589974E1 +3.198713000E3,5.816644178E1 +3.198958000E3,6.190720604E1 +3.199249000E3,6.026051864E1 +3.199481000E3,6.064697026E1 +3.199744000E3,5.715218400E1 +3.200003000E3,5.509276249E1 +3.200281000E3,5.035485844E1 +3.200607000E3,5.745123346E1 +3.200874000E3,5.874041571E1 +3.201157000E3,6.540993071E1 +3.201407000E3,6.592699897E1 +3.201730000E3,5.826687879E1 +3.201982000E3,5.966898415E1 +3.202228000E3,5.928022084E1 +3.202546000E3,5.492659239E1 +3.202811000E3,5.843773228E1 +3.203091000E3,5.615478265E1 +3.203365000E3,5.378265559E1 +3.203611000E3,5.724493737E1 +3.203868000E3,5.517839982E1 +3.204137000E3,5.166422622E1 +3.204439000E3,5.966362579E1 +3.204692000E3,5.837831137E1 +3.204952000E3,5.873474045E1 +3.205216000E3,6.025432286E1 +3.205460000E3,5.709891269E1 +3.205710000E3,5.946766606E1 +3.206062000E3,5.575402329E1 +3.206367000E3,5.597615265E1 +3.206620000E3,5.417374311E1 +3.206869000E3,5.785505194E1 +3.207152000E3,5.973144393E1 +3.207405000E3,5.494944595E1 +3.207684000E3,5.859159641E1 +3.207982000E3,5.909726368E1 +3.208273000E3,6.221796591E1 +3.208541000E3,6.248597715E1 +3.208787000E3,6.143432195E1 +3.209043000E3,5.767415987E1 +3.209357000E3,6.087003136E1 +3.209636000E3,5.816954701E1 +3.209920000E3,5.644196424E1 +3.210232000E3,5.726504339E1 +3.210505000E3,5.384487818E1 +3.210769000E3,6.092886049E1 +3.211044000E3,5.910647270E1 +3.211306000E3,5.855040927E1 +3.211560000E3,6.886189365E1 +3.211803000E3,6.193548709E1 +3.212075000E3,5.895667088E1 +3.212320000E3,5.613734816E1 +3.212669000E3,6.365011223E1 +3.212934000E3,6.616065582E1 +3.213195000E3,4.911720228E1 +3.213460000E3,5.429539168E1 +3.213713000E3,5.374714305E1 +3.213991000E3,5.505703483E1 +3.214231000E3,5.216197587E1 +3.214486000E3,6.958974683E1 +3.214787000E3,6.410499727E1 +3.215047000E3,5.795707420E1 +3.215308000E3,6.210641451E1 +3.215581000E3,5.724864620E1 +3.215943000E3,5.588397230E1 +3.216221000E3,5.281586206E1 +3.216477000E3,5.616597876E1 +3.216735000E3,7.016181845E1 +3.216992000E3,7.008234703E1 +3.217238000E3,6.883905131E1 +3.217482000E3,6.039428517E1 +3.217722000E3,6.572225500E1 +3.217971000E3,6.862082655E1 +3.218221000E3,6.392739620E1 +3.218481000E3,6.757625304E1 +3.218798000E3,6.468895575E1 +3.219137000E3,5.941097234E1 +3.219443000E3,6.639331379E1 +3.219715000E3,6.512137194E1 +3.219985000E3,6.137345425E1 +3.220244000E3,6.566739727E1 +3.220494000E3,5.684090738E1 +3.220758000E3,4.865476042E1 +3.221022000E3,5.571447424E1 +3.221324000E3,5.050200483E1 +3.221601000E3,5.262698993E1 +3.221858000E3,5.385544431E1 +3.222185000E3,5.793526709E1 +3.222548000E3,5.957102097E1 +3.222796000E3,5.026005559E1 +3.223068000E3,5.164515600E1 +3.223344000E3,6.575405490E1 +3.223598000E3,6.925353270E1 +3.223876000E3,5.909751181E1 +3.224152000E3,5.561020058E1 +3.224416000E3,5.257890354E1 +3.224662000E3,5.262446891E1 +3.224954000E3,5.599583257E1 +3.225202000E3,5.286294623E1 +3.225483000E3,5.049109924E1 +3.225830000E3,6.154494550E1 +3.226096000E3,5.433068412E1 +3.226350000E3,5.256602683E1 +3.226652000E3,5.283535150E1 +3.226989000E3,5.811852242E1 +3.227251000E3,5.842389129E1 +3.227505000E3,5.524471208E1 +3.227782000E3,6.207780754E1 +3.228053000E3,6.165130850E1 +3.228302000E3,5.818085510E1 +3.228557000E3,5.646455559E1 +3.228823000E3,5.903487317E1 +3.229201000E3,5.460588060E1 +3.229471000E3,5.534537953E1 +3.229720000E3,5.492103159E1 +3.229976000E3,5.474982433E1 +3.230276000E3,6.311967749E1 +3.230531000E3,6.144237593E1 +3.230845000E3,6.204497775E1 +3.231123000E3,6.192920277E1 +3.231382000E3,6.726064707E1 +3.231675000E3,5.951322284E1 +3.231970000E3,5.620608761E1 +3.232324000E3,5.597726308E1 +3.232555000E3,5.737347613E1 +3.232845000E3,5.515502781E1 +3.233172000E3,5.977186730E1 +3.233435000E3,6.131606000E1 +3.233742000E3,5.610580070E1 +3.234000000E3,5.978218601E1 +3.234272000E3,6.319970701E1 +3.234581000E3,5.608562509E1 +3.234862000E3,6.169746582E1 +3.235159000E3,6.105762669E1 +3.235416000E3,5.369522011E1 +3.235667000E3,6.580487109E1 +3.235906000E3,5.797374086E1 +3.236200000E3,6.981267784E1 +3.236445000E3,6.229515865E1 +3.236695000E3,6.858181426E1 +3.236976000E3,5.740787399E1 +3.237218000E3,5.455964692E1 +3.237457000E3,7.204325578E1 +3.237720000E3,6.142914611E1 +3.238013000E3,5.768794211E1 +3.238280000E3,5.732491467E1 +3.238580000E3,5.793744264E1 +3.238882000E3,5.626325471E1 +3.239149000E3,5.661724856E1 +3.239424000E3,6.969605219E1 +3.239726000E3,6.482965407E1 +3.239976000E3,5.947270091E1 +3.240278000E3,5.913422796E1 +3.240576000E3,5.630232959E1 +3.240877000E3,5.956366293E1 +3.241128000E3,6.177688280E1 +3.241391000E3,5.851951662E1 +3.241664000E3,5.959787493E1 +3.241944000E3,5.765523372E1 +3.242310000E3,5.961443978E1 +3.242602000E3,5.811194000E1 +3.242910000E3,5.765320401E1 +3.243188000E3,6.631148602E1 +3.243420000E3,6.916377121E1 +3.243673000E3,6.435158828E1 +3.243925000E3,6.486926440E1 +3.244170000E3,5.506348984E1 +3.244475000E3,6.702899260E1 +3.244772000E3,6.244838658E1 +3.245003000E3,6.057959417E1 +3.245328000E3,6.103137126E1 +3.245581000E3,5.723671640E1 +3.245864000E3,5.125127512E1 +3.246123000E3,5.748187394E1 +3.246395000E3,6.148075018E1 +3.246669000E3,6.226010686E1 +3.246940000E3,5.273573389E1 +3.247233000E3,5.462141876E1 +3.247482000E3,5.946160846E1 +3.247728000E3,6.623014757E1 +3.248041000E3,5.823129903E1 +3.248289000E3,5.689561843E1 +3.248538000E3,5.851473913E1 +3.248910000E3,5.778207994E1 +3.249187000E3,6.109108533E1 +3.249462000E3,6.368024039E1 +3.249726000E3,6.527718864E1 +3.249983000E3,5.855658653E1 +3.250281000E3,5.718860903E1 +3.250534000E3,5.946900486E1 +3.250785000E3,5.688578668E1 +3.251033000E3,5.444863300E1 +3.251316000E3,5.885016251E1 +3.251570000E3,6.172482417E1 +3.251833000E3,6.833245599E1 +3.252200000E3,6.656973280E1 +3.252441000E3,6.663686281E1 +3.252721000E3,6.380106140E1 +3.252991000E3,6.113258977E1 +3.253242000E3,7.270243700E1 +3.253457000E3,7.442711013E1 +3.253706000E3,7.097589831E1 +3.253999000E3,5.740107596E1 +3.254237000E3,5.407351324E1 +3.254532000E3,6.235563554E1 +3.254777000E3,6.148535018E1 +3.255085000E3,6.767985005E1 +3.255346000E3,5.893302101E1 +3.255628000E3,5.834235484E1 +3.255897000E3,6.152524318E1 +3.256146000E3,6.124474706E1 +3.256419000E3,5.928557591E1 +3.256642000E3,5.798678480E1 +3.256921000E3,5.800318977E1 +3.257149000E3,5.813391626E1 +3.257392000E3,6.200496820E1 +3.257645000E3,6.268368020E1 +3.257945000E3,6.783162804E1 +3.258296000E3,7.343015115E1 +3.258556000E3,7.258165803E1 +3.258805000E3,6.753466802E1 +3.259117000E3,7.134403593E1 +3.259421000E3,6.813653179E1 +3.259673000E3,6.449045726E1 +3.259939000E3,7.144310958E1 +3.260188000E3,6.619195201E1 +3.260438000E3,6.990193438E1 +3.260692000E3,6.791067771E1 +3.260944000E3,7.014061601E1 +3.261191000E3,7.271368424E1 +3.261532000E3,6.889323528E1 +3.261794000E3,6.087932672E1 +3.262047000E3,6.139975131E1 +3.262322000E3,6.684035582E1 +3.262586000E3,6.977079140E1 +3.262861000E3,6.711211223E1 +3.263137000E3,6.891542739E1 +3.263415000E3,6.450575202E1 +3.263671000E3,6.375083447E1 +3.263946000E3,6.525419018E1 +3.264250000E3,6.323969714E1 +3.264517000E3,7.351653517E1 +3.264813000E3,7.240916805E1 +3.265107000E3,6.991986455E1 +3.265349000E3,6.767718353E1 +3.265598000E3,7.020318016E1 +3.265847000E3,6.593396207E1 +3.266149000E3,6.776886494E1 +3.266400000E3,6.796917668E1 +3.266653000E3,6.234495715E1 +3.266897000E3,6.492303298E1 +3.267153000E3,6.551968402E1 +3.267398000E3,6.154456079E1 +3.267647000E3,6.087933145E1 +3.267896000E3,6.053677169E1 +3.268248000E3,6.893351216E1 +3.268513000E3,6.695525456E1 +3.268817000E3,6.263553940E1 +3.269070000E3,5.965971741E1 +3.269315000E3,6.136430702E1 +3.269582000E3,7.398506568E1 +3.269828000E3,7.145137487E1 +3.270128000E3,7.238266470E1 +3.270371000E3,7.289527120E1 +3.270623000E3,7.428636164E1 +3.270931000E3,7.248535741E1 +3.271185000E3,7.399445608E1 +3.271518000E3,7.355251323E1 +3.271795000E3,7.296660624E1 +3.272081000E3,7.131368475E1 +3.272358000E3,7.068792091E1 +3.272581000E3,6.623699177E1 +3.272835000E3,5.258987188E1 +3.273093000E3,6.044165509E1 +3.273337000E3,6.879817511E1 +3.273635000E3,6.970693453E1 +3.273931000E3,7.169623139E1 +3.274180000E3,7.112396098E1 +3.274428000E3,7.190035192E1 +3.274761000E3,7.089393329E1 +3.275038000E3,6.995869622E1 +3.275323000E3,6.900781199E1 +3.275569000E3,6.766263448E1 +3.275860000E3,6.881814388E1 +3.276116000E3,6.821596427E1 +3.276370000E3,6.896702672E1 +3.276649000E3,6.827119542E1 +3.276914000E3,6.795818984E1 +3.277171000E3,7.025945887E1 +3.277482000E3,6.685661764E1 +3.277741000E3,6.810082518E1 +3.278078000E3,6.902136690E1 +3.278358000E3,6.568611650E1 +3.278604000E3,7.123802039E1 +3.278848000E3,6.300940961E1 +3.279144000E3,6.292057856E1 +3.279382000E3,6.654167697E1 +3.279622000E3,6.808014942E1 +3.279917000E3,6.902808966E1 +3.280160000E3,6.685153426E1 +3.280471000E3,6.435621527E1 +3.280770000E3,6.765080490E1 +3.281059000E3,6.808248309E1 +3.281352000E3,6.477485011E1 +3.281602000E3,5.628454157E1 +3.281867000E3,5.800927668E1 +3.282130000E3,7.131716325E1 +3.282389000E3,7.355208108E1 +3.282663000E3,7.108584109E1 +3.282932000E3,5.710440961E1 +3.283191000E3,5.329699257E1 +3.283451000E3,5.003319724E1 +3.283709000E3,5.081704645E1 +3.284003000E3,5.075383483E1 +3.284259000E3,5.431712692E1 +3.284628000E3,5.277582101E1 +3.284917000E3,6.061307876E1 +3.285214000E3,6.168657926E1 +3.285472000E3,5.854988033E1 +3.285744000E3,4.913527641E1 +3.285999000E3,5.563664353E1 +3.286250000E3,5.841488419E1 +3.286517000E3,6.437604518E1 +3.286777000E3,6.124264602E1 +3.287035000E3,5.886049633E1 +3.287300000E3,6.196549102E1 +3.287630000E3,6.776239267E1 +3.287951000E3,6.702605133E1 +3.288259000E3,5.376695086E1 +3.288499000E3,5.095339550E1 +3.288807000E3,5.078317550E1 +3.289117000E3,5.659564827E1 +3.289411000E3,7.136818215E1 +3.289684000E3,6.629708396E1 +3.289982000E3,7.133804213E1 +3.290271000E3,6.994811010E1 +3.290544000E3,6.532422657E1 +3.290800000E3,6.451013008E1 +3.291132000E3,6.261305598E1 +3.291418000E3,6.696223022E1 +3.291676000E3,4.827412656E1 +3.291930000E3,4.724575587E1 +3.292202000E3,4.846609938E1 +3.292501000E3,5.276700476E1 +3.292822000E3,5.071547801E1 +3.293065000E3,4.944777186E1 +3.293349000E3,4.466809801E1 +3.293583000E3,4.432750067E1 +3.293832000E3,5.165471909E1 +3.294078000E3,4.606912616E1 +3.294427000E3,4.826074528E1 +3.294712000E3,4.434240888E1 +3.294985000E3,4.684583968E1 +3.295286000E3,5.104787864E1 +3.295548000E3,4.839146586E1 +3.295807000E3,5.479537456E1 +3.296066000E3,5.055213000E1 +3.296324000E3,3.933656037E1 +3.296585000E3,4.513652817E1 +3.296840000E3,4.805617654E1 +3.297099000E3,4.453428427E1 +3.297354000E3,5.205427791E1 +3.297705000E3,5.001223291E1 +3.297948000E3,5.342697607E1 +3.298200000E3,5.619467550E1 +3.298461000E3,5.565459347E1 +3.298738000E3,5.819577446E1 +3.298988000E3,5.077826383E1 +3.299236000E3,5.142261821E1 +3.299478000E3,5.610754709E1 +3.299775000E3,5.248015066E1 +3.300011000E3,4.742520943E1 +3.300325000E3,5.519481303E1 +3.300626000E3,4.628613419E1 +3.300959000E3,4.430731849E1 +3.301224000E3,4.380193782E1 +3.301473000E3,4.690647127E1 +3.301746000E3,4.845294386E1 +3.302057000E3,4.912389116E1 +3.302307000E3,5.155191791E1 +3.302563000E3,5.240902416E1 +3.302820000E3,4.677306339E1 +3.303083000E3,5.037145513E1 +3.303327000E3,4.506752152E1 +3.303573000E3,4.920686196E1 +3.303857000E3,4.935493485E1 +3.304189000E3,4.415801479E1 +3.304459000E3,4.423531181E1 +3.304768000E3,3.874162391E1 +3.305030000E3,4.189958295E1 +3.305333000E3,4.005870516E1 +3.305579000E3,5.072183491E1 +3.305843000E3,4.113754863E1 +3.306140000E3,5.548273149E1 +3.306383000E3,5.383424402E1 +3.306628000E3,5.205779319E1 +3.306877000E3,4.592085607E1 +3.307206000E3,5.092451979E1 +3.307449000E3,4.823039740E1 +3.307720000E3,5.026090042E1 +3.307982000E3,5.794901070E1 +3.308198000E3,5.239372011E1 +3.308502000E3,5.024517162E1 +3.308742000E3,4.253471720E1 +3.309044000E3,4.105523794E1 +3.309340000E3,3.028117703E1 +3.309596000E3,2.809150222E1 +3.309864000E3,2.626060468E1 +3.310135000E3,5.055452447E1 +3.310501000E3,7.199271156E1 +3.310777000E3,7.172468430E1 +3.311045000E3,7.282926204E1 +3.311313000E3,7.145580608E1 +3.311562000E3,7.218798353E1 +3.311867000E3,7.081603642E1 +3.312107000E3,7.122522782E1 +3.312348000E3,7.013128466E1 +3.312672000E3,7.138239962E1 +3.312976000E3,7.589001323E1 +3.313216000E3,6.988466628E1 +3.313506000E3,6.521999768E1 +3.313853000E3,5.781158269E1 +3.314129000E3,5.698768013E1 +3.314381000E3,5.954050680E1 +3.314636000E3,5.529467486E1 +3.314903000E3,6.884377149E1 +3.315163000E3,7.293133775E1 +3.315448000E3,7.186875504E1 +3.315697000E3,6.942752239E1 +3.315995000E3,6.899930460E1 +3.316247000E3,6.333687203E1 +3.316557000E3,6.820286469E1 +3.316856000E3,7.371764624E1 +3.317124000E3,7.475494405E1 +3.317411000E3,7.135849387E1 +3.317718000E3,5.726081152E1 +3.317965000E3,5.650406291E1 +3.318233000E3,4.901561410E1 +3.318490000E3,6.881993797E1 +3.318742000E3,7.251465406E1 +3.319010000E3,6.395213402E1 +3.319311000E3,7.197127027E1 +3.319615000E3,6.948849738E1 +3.319862000E3,6.664503435E1 +3.320187000E3,6.933008182E1 +3.320443000E3,6.121514242E1 +3.320753000E3,7.017439611E1 +3.321063000E3,7.393277725E1 +3.321329000E3,7.045535337E1 +3.321643000E3,6.985180357E1 +3.321896000E3,7.158196073E1 +3.322168000E3,6.999348148E1 +3.322483000E3,6.872091406E1 +3.322823000E3,6.386396976E1 +3.323116000E3,6.891641311E1 +3.323355000E3,6.790436633E1 +3.323733000E3,6.190629476E1 +3.324010000E3,6.307072034E1 +3.324306000E3,6.459812141E1 +3.324591000E3,6.928529051E1 +3.324846000E3,6.953301961E1 +3.325158000E3,6.946121501E1 +3.325471000E3,6.177266257E1 +3.325739000E3,6.057146439E1 +3.326000000E3,6.021658005E1 +3.326269000E3,6.588088303E1 +3.326536000E3,6.594068529E1 +3.326797000E3,5.957632846E1 +3.327117000E3,5.830018402E1 +3.327415000E3,5.952820917E1 +3.327678000E3,5.996997483E1 +3.327928000E3,6.374276040E1 +3.328204000E3,6.484785648E1 +3.328504000E3,6.253699213E1 +3.328743000E3,6.495848159E1 +3.329001000E3,6.390198219E1 +3.329317000E3,6.107203426E1 +3.329613000E3,6.678300135E1 +3.329901000E3,6.048531373E1 +3.330164000E3,6.806621622E1 +3.330501000E3,6.592361883E1 +3.330795000E3,6.652249790E1 +3.331059000E3,6.079261624E1 +3.331342000E3,7.055285274E1 +3.331620000E3,6.885169705E1 +3.331870000E3,6.676175072E1 +3.332125000E3,6.653456857E1 +3.332410000E3,6.539948315E1 +3.332658000E3,6.741723145E1 +3.332915000E3,5.982571500E1 +3.333236000E3,7.234399288E1 +3.333559000E3,7.555637810E1 +3.333801000E3,7.132946849E1 +3.334053000E3,7.012473325E1 +3.334345000E3,7.083313400E1 +3.334658000E3,6.159204912E1 +3.334951000E3,5.416652771E1 +3.335187000E3,5.331536045E1 +3.335488000E3,5.516853140E1 +3.335780000E3,5.755380245E1 +3.336028000E3,6.034949591E1 +3.336335000E3,5.933559907E1 +3.336577000E3,6.200660494E1 +3.336975000E3,6.752581884E1 +3.337230000E3,6.552308109E1 +3.337509000E3,6.043162012E1 +3.337804000E3,6.346167875E1 +3.338097000E3,5.762665769E1 +3.338354000E3,6.046465836E1 +3.338657000E3,5.841838084E1 +3.338937000E3,5.426549819E1 +3.339182000E3,5.312925890E1 +3.339425000E3,5.904532039E1 +3.339705000E3,5.548841740E1 +3.339970000E3,6.467955136E1 +3.340311000E3,6.518540616E1 +3.340567000E3,6.130157495E1 +3.340843000E3,4.234380604E1 +3.341102000E3,3.685811557E1 +3.341367000E3,5.229521155E1 +3.341631000E3,4.577123603E1 +3.341913000E3,5.522804687E1 +3.342191000E3,7.219670231E1 +3.342497000E3,6.138541536E1 +3.342739000E3,5.883033505E1 +3.342994000E3,5.692990468E1 +3.343272000E3,5.784770175E1 +3.343584000E3,5.851150722E1 +3.343847000E3,7.127137910E1 +3.344137000E3,7.004437015E1 +3.344432000E3,6.719880262E1 +3.344677000E3,6.266500726E1 +3.344966000E3,6.662051616E1 +3.345209000E3,6.259160849E1 +3.345462000E3,6.521765959E1 +3.345762000E3,6.373477950E1 +3.346056000E3,5.976833176E1 +3.346294000E3,5.557373783E1 +3.346597000E3,5.486821605E1 +3.346842000E3,4.854970484E1 +3.347096000E3,6.338774242E1 +3.347415000E3,6.646909489E1 +3.347712000E3,6.370164725E1 +3.347950000E3,6.577012972E1 +3.348257000E3,6.536203326E1 +3.348509000E3,5.777033235E1 +3.348799000E3,6.942121279E1 +3.349070000E3,6.552465655E1 +3.349329000E3,6.400867966E1 +3.349583000E3,5.955829212E1 +3.349911000E3,6.233007104E1 +3.350154000E3,7.360271557E1 +3.350432000E3,7.402471070E1 +3.350716000E3,7.225249055E1 +3.350966000E3,6.654334459E1 +3.351200000E3,6.590758849E1 +3.351507000E3,6.143698167E1 +3.351805000E3,7.197722167E1 +3.352079000E3,6.778594348E1 +3.352307000E3,5.712392879E1 +3.352566000E3,5.659236121E1 +3.352870000E3,5.352359430E1 +3.353127000E3,5.362353429E1 +3.353366000E3,5.964860406E1 +3.353638000E3,7.164177428E1 +3.353890000E3,6.730234717E1 +3.354173000E3,5.336089185E1 +3.354435000E3,4.770751864E1 +3.354689000E3,4.833001031E1 +3.354956000E3,4.464972004E1 +3.355220000E3,6.809720152E1 +3.355493000E3,7.032616040E1 +3.355723000E3,7.137092547E1 +3.356052000E3,7.106236065E1 +3.356287000E3,7.302101107E1 +3.356599000E3,6.868512076E1 +3.356867000E3,7.134905494E1 +3.357133000E3,7.032184319E1 +3.357463000E3,6.484515560E1 +3.357753000E3,5.949029357E1 +3.358081000E3,6.553405106E1 +3.358385000E3,5.460622041E1 +3.358634000E3,4.798111952E1 +3.358902000E3,5.356090224E1 +3.359186000E3,5.091993104E1 +3.359516000E3,5.980463665E1 +3.359805000E3,5.623340998E1 +3.360124000E3,4.885342740E1 +3.360404000E3,4.536632542E1 +3.360660000E3,5.726647509E1 +3.360941000E3,6.266477325E1 +3.361245000E3,5.265432523E1 +3.361521000E3,4.746518361E1 +3.361777000E3,5.341135388E1 +3.362038000E3,5.094337921E1 +3.362292000E3,5.832737886E1 +3.362616000E3,5.247742127E1 +3.363049000E3,5.123926483E1 +3.363313000E3,4.482127206E1 +3.363600000E3,4.813050338E1 +3.363848000E3,5.751744958E1 +3.364157000E3,5.045245795E1 diff --git a/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a1/Picture.java b/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a1/Picture.java new file mode 100644 index 0000000..8df3d55 --- /dev/null +++ b/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a1/Picture.java @@ -0,0 +1,699 @@ +import java.awt.image.*; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.BasicStroke; +import java.util.Vector; +import javax.imageio.*; +import java.io.*; +import java.awt.*; +import javax.swing.*; +import java.util.Random; +import java.awt.geom.AffineTransform; +/** + * + * Bildklasse für die Simulation von Processing-Befehlen + * + * Diese Klasse stellt ein BufferedImage bereit, in das mit Processing-Befehlen gezeichnet + * werden kann. + * Zusätzlich kann ein Bildanzeiger über jede Änderung des Bildes informiert werden, + * um "Zurück"-Befehle zu ermöglichen. Der Bildanzeiger ist entweder eine normale Java + * ScrollPane oder ein Actor aus Greenfoot. + * Die Dokumentation der einzelnen Zeichenmethoden ist der Processing-Reference + * (https://processing.org/reference/ steht unter CC-Lizenz: https://creativecommons.org/) + * entnommen und mit Deepl.com ins Deutsche übersetzt. + * + * @version 1.0 from 23.01.2019 + * @author Thomas Schaller (ZPG Informatik Klasse 9) + */ + +public class Picture{ + + // Einstellungmöglichkeiten für das Zeichnen von Rechtecken und Ellipsen + // RADIUS = Mittelpunkt+Radius wird gegeben, CENTER = Mittelpunkt und Breite/Höhe wird gegeben, + // CORNER = Linke obere Ecke + Breite/Höhe, CORNERS = Linke obere und rechte untere Ecke + public static final int RADIUS = 1; + public static final int CENTER = 2; + public static final int CORNER = 3; + public static final int CORNERS = 4; + + // gespeichertes Bild, + private BufferedImage image; + + // aktuelle Farbeinstellungen + private Color background; + private Color pencolor; + private Color fillcolor; + + // aktuelle Stiftdicke + private double stroke; + + // akkteller Koordinatenmodus von Rechtecken und Ellipsen + private int ellipseMode = CENTER; + private int rectMode = CORNER; + + // aktueller Font + private Font textfont = null; + + // muss ein Bildanzeiger benachrichtigt werden + private PictureViewer observer = null; + private boolean autorefresh = true; + + /** + * Erzeugt ein Bild mit Standardgröße 500x400 + */ + public Picture() { + this(500,400); + } + + /** + * Erzeugt ein Bild der angegeben Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public Picture(int width, int height) { + this(width,height, "D0D0D0"); + } + + /** + * Erzeugt ein Bild aus einer Datei + * @param filename Dateiname des Bildes + */ + public Picture(String filename) { + load(filename); + } + + /** + * Erzeugt ein Bild der angegebenen Größe mit festgelegtem Hintergrund + * @param width Breite des Bildes + * @param height Höhe des Bildes + * @param background Farbe des Hintergrunds + */ + public Picture(int width, int height, String background) { + this.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + this.background = decode(background); + this.pencolor = new Color(0,0,0); + this.stroke = 1; + this.fillcolor = null; + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(this.background); + g.fillRect(0,0,width-1, height-1); + } + + /** + * Legt fest, wer das Bild anzeigt. + * Diese ermöglicht die Benachrichtung des Observers, wenn sich das Bild ändert. + * @param observer Anzeiger des Bildes + */ + + public void setObserver(PictureViewer observer) { + this.observer= observer; + } + + /** + * Direktes Setzen des Bildes (für interne Zwecke) + * @param b Bild, das gespeichert werden soll. + */ + public void setImage(BufferedImage b) { + image = b; + } + + /** + * Direktes Abfragen des Bildes (für interne Zwecke) + * @return Bild, das gerade gespeichert ist. + */ + public BufferedImage getImage() { + return image; + } + + /** + * Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + * Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + * der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu. + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public void size(int width, int height){ + pushImage(); + this.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(background); + g.fillRect(0,0,width-1, height-1); + } + + /** + * Liefert die Breite des Bildes zurück. + * @return Breite des Bildes + */ + public int getWidth() { + return image.getWidth(); + } + + /** + * Liefert die Höhe des Bildes zurück. + * @return Höhe des Bildes + */ + public int getHeight() { + return image.getHeight(); + } + + + /** + * Erzeugt eine Kopie des Bildes und übergibt sie an den Observer (falls existent), damit dieser die Versionen speichern kann + */ + private void pushImage() { + if(observer != null) { + observer.pushImage(); + } + } + + + /** + * Legt fest, ob nach jedem Zeichenbefehl automatisch das Bild auch in + * der Oberfläche aktualisiert wird. Die Einstellung "false" beschleunigt + * das Zeichnen aufwändiger Bilder und verhindert "Flackern". + * Das Neuzeichnen kann durch die Methode "refresh" gezielt ausgelöst werden. + * @param autorefresh true = nach jedem Zeichenbefehl die Anzeige aktualisieren, false= nur durch die Methode refresh neu zeichnen + */ + public void setAutoRefresh(boolean autoRefresh) { + this.autorefresh = autoRefresh; + } + + + /** + * Auch die anzeigenden Klasse wird zum Neuzeichnen aufgefordert. + */ + private void repaint() { + if(observer != null && autorefresh) { + observer.repaint(); + } + } + + /** + * Auch die anzeigenden Klasse wird zum Neuzeichnen aufgefordert. + */ + public void refresh() { + if(observer != null) { + observer.repaint(); + } + } + + // ----------------------------------------- Zeichenfunktionen ----------------------------------------------- + /** + * Löscht den Inhalt des Bildes. + * Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt. + */ + + public void clear(){ + pushImage(); + image = new BufferedImage(image.getWidth(), image.getHeight(), image.getType()); + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(background); + g.fillRect(0,0,image.getWidth()-1, image.getHeight()-1); + repaint(); + } + + /** + * Konvertiert die in einem bestimmten Modus gegebenen Koordinaten in die Java-übliche Links_Oben_Breite_Höhe Version + * Die Änderungen werden direkt im Array vorgenommen + * @param coord Array mit vier Koordinateneinträgen im gegebenen Modus + * @param mode Modus der Koordinaten (CORNER, CORNERS, RADIUS oder CENTER) + */ + private void convert(int[] coord, int mode) { + switch(mode) { + case CORNER: break; + case CORNERS: coord[2] -= coord[0]; coord[3] -= coord[1]; break; + case RADIUS: coord[2] *= 2; coord[3] *=2; + case CENTER: coord[0] -= coord[2]/2; coord[1] -= coord[3]/2; + } + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + * Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + * Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void rectMode(int mode) { + rectMode = mode; + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + * Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + * Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als Breite und Höhe der Form. + * ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void ellipseMode(int mode) { + ellipseMode = mode; + } + + + + /** + * Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + * Um eine Linie einzufärben, verwenden Sie die {@link #stroke(int, int, int) stroke()} Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + * Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + * {@link #strokeWeight(double) strokeWeight()} geändert werden. + * @param x1 x-Koordinate des 1. Punktes + * @param y1 y-Koordinate des 1. Punktes + * @param x2 x-Koordinate des 2. Punktes + * @param y2 y-Koordinate des 2. Punktes + */ + public void line(int x1, int y1, int x2, int y2) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + if (stroke > 0) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawLine(x1, y1, x2, y2); + } + repaint(); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, rectMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillRect(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawRect(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, ellipseMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillOval(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawOval(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + int px[] = {x1, x2, x3}; + int py[] = {y1, y2, y3}; + polygon(px, py); + + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + + int px[] = {x1, x2, x3, x4}; + int py[] = {y1, y2, y3, y4}; + polygon(px, py); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + + public void polygon(int[] x, int[] y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(fillcolor != null) { + + g.setColor(fillcolor); + g.fillPolygon(x,y, y.length); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawPolygon(x, y, x.length); + } + repaint(); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + ellipse(x,y,1, 1); + + } + + // ----------------------------------------- Schriftdarstellung ----------------------------------------------- + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param s Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String s, int x, int y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(pencolor != null) { + g.setColor(fillcolor); + g.setStroke(new BasicStroke((float) stroke)); + g.setFont(textfont); + g.drawString(s, x, y); + } + repaint(); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + this.textfont = font; + } + + + // ----------------------------------------- Farbfestlegungen ----------------------------------------------- + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(String color) { + try{ + return new Color( + Integer.valueOf( color.substring( 0, 2 ), 16 ), + Integer.valueOf( color.substring( 2, 4 ), 16 ), + Integer.valueOf( color.substring( 4, 6 ), 16 ) ); + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(int color) { + try{ + if(color >=0 && color < 256) { + return new Color(color,color,color); + } else { + int r = color / 0x010000 % 0xFF; + int g = color / 0x000100 % 0xFF; + int b = color % 0xFF; + System.out.println(""+r+","+g+","+b); + return new Color(r, g, b ); + } + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + this.pencolor = decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + this.pencolor=decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + this.pencolor = new Color(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + this.pencolor = null; + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + this.stroke = width; + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + this.fillcolor = decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + this.fillcolor=decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + this.fillcolor = new Color(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + this.fillcolor = null; + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + if(c < 256) { + this.background=new Color(c,c,c); + } else { + int r = c / 0x010000; + int g = c / 0x000100 % 0xFF; + int b = c % 0xFF; + this.background= new Color(r, g, b ); + } + + this.clear(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + this.background=new Color(r,g,b); + this.clear(); + } + + +// ----------------------------------------- Dateioperationen ----------------------------------------------- + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + try{ + this.image = ImageIO.read(new File(filename)); + this.background = decode("D0D0D0"); + this.pencolor = new Color(0,0,0); + this.fillcolor = null; + this.stroke = 1; + this.repaint(); + + } catch(Exception e) { + System.out.println("Fehler beim Einlesen der Bilddatei"); + } + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + try{ + String[] fn = filename.split("\\."); + if (fn.length== 1) { + ImageIO.write(image, "PNG", new File(filename+".png")); + } else { + + if (fn.length == 2 && (fn[1].toUpperCase().equals("PNG") || + fn[1].toUpperCase().equals("GIF"))){ + ImageIO.write(image, fn[1], new File(filename)); + }else { + System.out.println("Unbekanntes Bildformat"); + } + } + + } catch(Exception e) { + System.out.println("Fehler beim Speichern"); + } + } + + +// ----------------------------------------- Sonstiges ----------------------------------------------- + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + + public Color[][] getPixelArray() { + Color[][] pixel = new Color[image.getWidth()][image.getHeight()]; + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + pixel[x][y] = new java.awt.Color(image.getRGB(x,y)); + } + } + return pixel; + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + size(pixel.length,pixel[0].length); + Graphics2D g = (Graphics2D) image.getGraphics(); + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + g.setColor(pixel[x][y]); + g.fillRect(x, y, 1, 1); + } + } + repaint(); + } + + /** + * Hilfsfunktion zum Verzögern der Ausgabe + * @param millis Wartezeit in Millisekunden + */ + public void delay(int millis) { + try{ + Thread.sleep(millis); + + } catch(Exception e) { + + } + + } + + + +} diff --git a/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a1/PictureViewer.java b/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a1/PictureViewer.java new file mode 100644 index 0000000..9e6b151 --- /dev/null +++ b/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a1/PictureViewer.java @@ -0,0 +1,505 @@ +/** + * Zeigt ein Bild in einem Scrollbereich an. + * Es ist möglich das Bild zu zoomen und mehrere Versionen des Bildes zu speichern, um eine "Rückgängig" Operation durchzuführen. + * @author Thomas Schaller + * @version 1.0 vom 01.02.2019 + */ + +import java.awt.*; +import java.awt.event.*; +import javax.swing.*; +import java.awt.image.*; +import java.util.Vector; + +public class PictureViewer extends JScrollPane +{ + + // das aktuelle Bild + private Picture picture; + + // Bilder für den Züruck-Modus speichern + private static final int ANZ_BACK = 20; + private Vector history; + + // Zeichenfläche + private ImageIcon scrollImageIcon; + private JLabel imageLabel; + + // Zoom Faktor + private double zoomFactor; + public static final int FIT = -1; + public static final int NORMAL = 1; + + + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der Größe 1000x1000 + */ + public PictureViewer() { + this(1000,1000); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public PictureViewer(int width, int height) { + this(width,height, "D0D0D0"); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + * @param background Farbe des Hintergrunds als HEX-String (z.B. "FF3A45") + */ + public PictureViewer(int width, int height, String background) { + this(new Picture(width,height, background)); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild aus einer Bilddatei + * @param filename Name des Bildes + */ + public PictureViewer(String filename) { + this(new Picture(filename)); + } + + /** + * Erzeugt ein ScrollPanel und zeigt das Bild-Objekt an + * @param picture anzuzeigendes Bild + */ + public PictureViewer(Picture picture) + { + this.picture=picture; + + zoomFactor=1; + + scrollImageIcon = new ImageIcon(picture.getImage().getScaledInstance(picture.getImage().getWidth(), picture.getImage().getHeight(), Image.SCALE_FAST)); + imageLabel = new JLabel(scrollImageIcon); + imageLabel.setVerticalAlignment(JLabel.CENTER); + imageLabel.setHorizontalAlignment(JLabel.CENTER); + setViewportView(imageLabel); + + this.setBorder(BorderFactory.createLineBorder(Color.black)); + picture.setObserver(this); + history = new Vector(); + + } + + /** + * Setzt das anzuzeigende Bild neu + * @param picture anzuzeigendes Bild + */ + public void setImage(Picture picture) { + this.history = new Vector(); + this.picture = picture; + setZoom(NORMAL); + } + + /** + * Speichert das übergebene Bild in der History. + * @param b zu speicherndes Bild + */ + public void pushImage() { + if( this.ANZ_BACK > 0) { + if(history.size() == this.ANZ_BACK) { + history.removeElementAt(0); + } + + BufferedImage b = new BufferedImage(picture.getWidth(), picture.getHeight(), picture.getImage().getType()); + Graphics g = b.getGraphics(); + g.drawImage(picture.getImage(), 0, 0, null); + g.dispose(); + + history.add(b); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + private void popImage() { + int anz = history.size(); + if(anz>0) { + BufferedImage img = history.get(anz-1); + history.removeElementAt(anz-1); + picture.setImage(img); + setZoom(zoomFactor); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + public void back() { + popImage(); + } + + /** + * Setzt das angezeigt Bild neu und beachtet dabei den Zoomfaktor. + */ + public void repaint() { + if( picture != null) { + double factor= zoomFactor; + if (zoomFactor == FIT) { + double factorw = ((double) getWidth()-2) / picture.getWidth(); + double factorh = ((double) getHeight()-2) / picture.getHeight(); + factor = Math.min(factorw, factorh); + } + int width = (int) (picture.getWidth()*factor); + int height = (int) (picture.getHeight()*factor); + + + + scrollImageIcon.setImage(picture.getImage().getScaledInstance(width, height, Image.SCALE_DEFAULT)); + revalidate(); + } + } + + /** + * Setzt den Zoom-Faktor für das Bild. + * Als Zoomfaktor sind auch die Konstanten Bildanzeiger.FIT (auf Bildschirmgröße zoomen) und Bildanzeiger.NORMAL (100%) möglich. + * @param factor Zoomfaktor (1.0 = 100%). + */ + public void setZoom(double factor) + { + zoomFactor = factor; + repaint(); + } + + + // Wrappermethoden + /** + * Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + * Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + * der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu. + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public void size(int width, int height){ + picture.size(width, height); + } + + /** + * Liefert die Breite des Bildes zurück. + * @return Breite des Bildes + */ + public int getImageWidth() { + return picture.getWidth(); + } + + /** + * Liefert die Höhe des Bildes zurück. + * @return Höhe des Bildes + */ + public int getImageHeight() { + return picture.getHeight(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + picture.background(c); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + picture.background(r,g,b); + } + + /** + * Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + * Um eine Linie einzufärben, verwenden Sie die {@link #stroke(int, int, int) stroke()} Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + * Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + * {@link #strokeWeight(double) strokeWeight()} geändert werden. + * @param x1 x-Koordinate des 1. Punktes + * @param y1 y-Koordinate des 1. Punktes + * @param x2 x-Koordinate des 2. Punktes + * @param y2 y-Koordinate des 2. Punktes + */ + public void line(int x1, int y1, int x2, int y2) { + picture.line(x1,y1,x2,y2); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + picture.rect(a,b,c,d); + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + picture.ellipse(a,b,c,d); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + picture.triangle(x1,y1,x2,y2,x3,y3); + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + picture.quad(x1,y1,x2,y2,x3,y3,x4,y4); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + public void polygon(int[] x, int[] y) { + picture.polygon(x,y); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + picture.point(x,y); + + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + * Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + * Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void rectMode(int mode) { + picture.rectMode(mode); + } + + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + * Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + * Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als Breite und Höhe der Form. + * ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void ellipseMode(int mode) { + picture.ellipseMode(mode); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + picture.stroke(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + picture.noStroke(); + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + picture.strokeWeight(width); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + picture.fill(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + picture.noFill(); + } + + /** + * Löscht den Inhalt des Bildes. + * Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt. + */ + public void clear(){ + picture.clear(); + } + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + picture.load(filename); + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + picture.save(filename); + } + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param t Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String t, int x, int y) { + picture.text(t,x,y); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + picture.textFont(font); + } + + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + public Color[][] getPixelArray() { + return picture.getPixelArray(); + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + picture.setPixelArray(pixel); + } + + + +} diff --git a/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a1/Table.java b/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a1/Table.java new file mode 100644 index 0000000..ee5a211 --- /dev/null +++ b/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a1/Table.java @@ -0,0 +1,894 @@ +/** + * Die Klasse Table vereinfacht den Zugriff auf CSV-Dateien. + * Die Klassen Table und TableRow ermöglichen einen einfachen Zugriff auf tabellenbasierte + * Dokumente. + * + * @author Thomas Schaller + * @version 1.0 vom 01.02.2019 + */ + +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.ArrayList; +import java.io.*; +import java.util.Scanner; + +import org.jdom.Document; +import org.jdom.Element; +import org.jdom.Attribute; +import org.jdom.JDOMException; +import org.jdom.input.SAXBuilder; +import org.jdom.output.XMLOutputter; +import org.jdom.output.Format; + +public class Table +{ + // Standardtrennzeichen für Spalten + private static final char DEFAULT_SEPARATOR = ';'; + // Standardmarkierung für Texte + private static final char DEFAULT_QUOTE = '"'; + // Standardtrennzeichen für Dezimalzahlen + private static final char DEFAULT_COMMA = ','; + + // mögliche Spaltentypen + private static final String UNKNOWN ="UNKOWN"; + private static final String INT = "INTEGER"; + private static final String DOUBLE = "DOUBLE"; + private static final String FLOAT = "FLOAT"; + + // interne Verwaltung des Dokuments als JDOM-Document-Objekt + private Document doc; + // Verweis auf Element für Kopfzeile + private Element header; + // Ende Attribute + + /** + * Erzeugt leeres Tabellen-Dokument. + */ + public Table() { + this.doc = new Document(); + doc.setRootElement(new Element("CSV-Data")); + this.header = new Element("Header"); + doc.getRootElement().addContent(header); + } + + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei und erstellt ein Tabellenobjekt mit seinen Werten. + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public Table(String filename, String options, char separator, char quote) { + loadCSV(filename, options, separator, quote); + } + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei und erstellt ein Tabellenobjekt mit seinen Werten (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + */ + public Table(String filename, String options) { + loadCSV(filename, options); + } + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei ohne Kopfzeile und erstellt ein Tabellenobjekt mit seinen Werten (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public Table(String filename) { + loadCSV(filename); + } + + // Anfang Methoden + /** + * Liest den Inhalt einer CSV-Datei ohne Kopfzeile (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public void loadCSV(String filename) { + loadCSV(filename, ""); + } + + /** + * Liest den Inhalt einer CSV-Datei (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + */ + public void loadCSV(String filename, String options) { + loadCSV(filename, options, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** + * Liest den Inhalt einer CSV-Datei. + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public void loadCSV(String filename, String options, char separator, char quote) { + doc = new Document(); + doc.setRootElement(new Element("CSV-Data")); + header = new Element("Header"); + doc.getRootElement().addContent(header); + try { + File f = new File(filename); + Scanner scanner = new Scanner(new File(filename)); + if(options.toLowerCase().contains("header") && scanner.hasNext()) { + List entries = parseLine(scanner.nextLine(), separator, quote); + int i= 0; + for(String s : entries) { + Element entry = new Element("Column"); + header.addContent(entry); + entry.setText(s); + entry.setAttribute("type", "unknown"); + i++; + } + } + + List cols = header.getChildren(); + + while (scanner.hasNext()) { + Element line = new Element("Row"); + doc.getRootElement().addContent(line); + List entries = parseLine(scanner.nextLine(), separator, quote); + int i= 0; + + for(String s : entries) { + + if(i==cols.size()) { + Element entry = new Element("Column"); + entry.setAttribute("type", "unknown"); + header.addContent(entry); + cols = header.getChildren(); + } + + Element entry = new Element("Entry"); + entry.setText(s); + line.addContent(entry); + i++; + } + } + scanner.close(); + + } catch (Exception e) { + System.out.println("Fehler beim Lesen der CSV-Datei"); + } + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei ohne Kopfzeile (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public void saveCSV(String filename) { + saveCSV(filename, ""); + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthalten, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile haben soll, + * dann lassen Sie einfach die Option "header" weg. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile haben soll. + * @param filename Dateiname der CSV-Datei. + */ + public void saveCSV(String filename, String options) { + saveCSV(filename, options, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei. + * Wenn die Datei eine Kopfzeile enthalten, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile haben soll, + * dann lassen Sie einfach die Option "header" weg. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile haben soll. + * @param filename Dateiname der CSV-Datei. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public void saveCSV(String filename, String options, char separator, char quote){ + try{ + File f = new File(filename); + PrintStream outputFile = new PrintStream (f); + System.out.println("Speicher in : "+f.getAbsolutePath()); + List columns = header.getChildren(); + String sq = ""+quote; + String ss = ""+separator; + if(quote =='"') sq = "\""; + if(separator =='"') ss = "\""; + + if(options.toLowerCase().contains("header")) { + String h = ""; + for(Element c : columns) { + h += ss + sq + c.getText()+sq; + } + outputFile.println(h.substring(1)); + } + for(int i = 0; i parseLine(String cvsLine) { + return parseLine(cvsLine, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** HIlfsfunktion für die Analyse einer Dateizeile + * @param cvsLine Zeile aus der Datei + * @param sparator Trennzeichen für die Spalten + * @return Liste von String für die einzelnen Spalten + */ + private List parseLine(String cvsLine, char separator) { + return parseLine(cvsLine, separator, DEFAULT_QUOTE); + } + + /** HIlfsfunktion für die Analyse einer Dateizeile + * @param cvsLine Zeile aus der Datei + * @param sparator Trennzeichen für die Spalten + * @param customQuote Kennung für Strings + * @return Liste von String für die einzelnen Spalten + */ + private List parseLine(String cvsLine, char separator, char customQuote) { + + List result = new ArrayList<>(); + + //if empty, return! + if (cvsLine == null && cvsLine.isEmpty()) { + return result; + } + + //ggf. Default-Value laden + if (customQuote == ' ') { + customQuote = DEFAULT_QUOTE; + } + + if (separator == ' ') { + separator = DEFAULT_SEPARATOR; + } + + StringBuffer curVal = new StringBuffer(); + boolean inQuotes = false; + boolean startCollectChar = false; + boolean doubleQuotesInColumn = false; + + char[] chars = cvsLine.toCharArray(); + + for (char ch : chars) { + + if (inQuotes) { // aktueller Text ist in Quotes eingeschlossen + startCollectChar = true; + + if (ch == customQuote) { // Quotes werden beendet, aber Achtung bei "" => Metazeichen + inQuotes = false; + if (ch == '\"') { + doubleQuotesInColumn = true; + } + + } else { + + if (ch == '\"' && !doubleQuotesInColumn) { + doubleQuotesInColumn = true; + } else { + curVal.append(ch); + doubleQuotesInColumn = false; + } + + } + } else { + if (ch == customQuote) { + + inQuotes = true; + + //Fixed : allow "" in empty quote enclosed + if (ch == '\"'){ + if(doubleQuotesInColumn) { + curVal.append('"'); + doubleQuotesInColumn = false; + } else doubleQuotesInColumn = true; + + + } + } + else { + doubleQuotesInColumn = false; + if (ch == separator) { + + result.add(curVal.toString()); + + curVal = new StringBuffer(); + startCollectChar = false; + + } else if (ch == '\r') { + //ignore LF characters + continue; + } else if (ch == '\n') { + //the end, break! + break; + } else { + curVal.append(ch); + } + } + } + + } + result.add(curVal.toString()); + return result; + } + + /** + * Sucht die Nummer einer durch Namen gegebenen Spalte. + * @param name Name der Spalte + * @return Nummer der Spalte + */ + + private int findColumnNumber(String name) { + List columns = header.getChildren(); + int i = 0; + for(Element c : columns) { + if (c.getText().toLowerCase().equals(name.toLowerCase())) { + return i; + + } + i++; + } + return -1; + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an. + */ + public void addColumn() { + Element entry = new Element("Column"); + entry.setAttribute("type", Table.UNKNOWN); + header.addContent(entry); + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an und benennt sie. + * @param title Bezeichnung der Spalte + */ + public void addColumn(String title) { + addColumn(); + Element nc = ((List)(header.getChildren())).get(header.getChildren().size()-1); + nc.setText(title); + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an und benennt und typisiert sie. + * @param title Bezeichnung der Spalte + * @param type Typ der Spalte (UNKNOWN, DOUBLE, INTEGER, FLOAT) + */ + public void addColumn(String title, String type) { + addColumn(title); + Element nc = ((List)(header.getChildren())).get(header.getChildren().size()-1); + nc.setAttribute("type", type); + } + + /** + * Löscht eine Spalte. + * @param i Nummer der Spalte. + */ + public void removeColumn(int i) { + List lines = doc.getRootElement().getChildren(); + for(Element l : lines) { + if(l.getChildren().size()>i) l.removeContent(i); + } + } + + /** + * Löscht eine Spalte + * @param name Name der Spalte + */ + public void removeColumn(String name) { + try{ + removeColumn(findColumnNumber(name)); + } catch(Exception e) { System.out.println("Unbekannter Spaltenname");} + } + + /** + * Liefert die Anzahl der Spalten in der Tabelle + * @return Anzahl der Spalten + */ + public int getColumnCount() { + return header.getChildren().size(); + } + + /** + * Liefert die Anzahl der Zeilen in der Tabelle + * @return Anzahl der Zeilen + */ + public int getRowCount() { + return doc.getRootElement().getChildren().size()-1; + } + + /** + * Löscht alle Zeilen der Tabelle. + * Die Spaltenüberschriften und Typen bleiben erhalten. + */ + public void clearRows() { + doc.getRootElement().removeChildren("Row"); + } + + /** + * Fügt eine neue Zeile an das Ende der Tabelle an. + * @return ein TableRow-Objekt für diese neue Zeile + */ + public TableRow addRow() { + Element row = new Element("Row"); + doc.getRootElement().addContent(row); + return new TableRow(doc, row); + } + + /** + * Löscht eine Zeile + * @param i Nummer der Zeile + */ + public void removeRow(int i) { + if(i rows = doc.getRootElement().getChildren(); + return new TableRow(doc, rows.get(i+1)); + } + return null; + } + + /** + * Liefert die ganze Tabelle als Array von TableRow-Objekten + * @return Array von TableRow-Objekten + */ + public TableRow[] rows() { + TableRow[] rows = new TableRow[getRowCount()]; + for(int i = 0; i < getRowCount(); i++) { + rows[i] = getRow(i); + } + return rows; + } + + /** + * Liefert den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param column Spaltennummer + * @return Wert der Zelle + */ + public int getInt(int row, int column) { + return getRow(row).getInt(column); + } + + /** + * Liefert den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param name Name der Spalte + * @return Wert der Zelle + */ + public int getInt(int row, String name) { + return getRow(row).getInt(name); + } + + /** + * Setzt den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param column Spaltennummer + * @param value neuer Wert der Zelle + */ + public void setInt(int row, int column,int value) { + getRow(row).setInt(column, value); + } + + /** + * Setzt den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(int row, String name, int value) { + getRow(row).setInt(name, value); + } + + /** + * Liefert alle Werte einer Zeile als Integer-Array. + * @param row Nummer der Zeile + * @return int-Array, dass alle Werte der Zeile enthält + */ + public int[] getIntRow(int row) { + try{ + TableRow trow = getRow(row); + int anz = getColumnCount(); + int[] r = new int[anz]; + for(int i=0; i) (header.getChildren())).get(i).getText(); + } else { + return ""; + } + } + + /** + * Liefert die Nummer einer Spalte + * @param name Name der Spalte + * @return Nummer der Spalte + */ + public int getColumn(String name) { + List columns = header.getChildren(); + int i = 0; + while (i < columns.size()) { + if (columns.get(i).getText().toLowerCase().equals(name.toLowerCase())) { + return i; + } + i++; + } // end of while + return -1; + } + + + /** + * Erzeugt eine neue Zeile mit i Spalten + * Wenn bisher nicht genügend Spalten vorhanden sind, werden automatisch neue Spalten hinzugefügt (auch zum Header) + * @param i Anzahl der Spalten + */ + private Element buildRow(int i) { + List columns = header.getChildren(); + Element entry=null; + for(int j=0; j<=i; j++) { + + if(j==columns.size()) { + Element h = new Element("Column"); + h.setAttribute("type", "unknown"); + header.addContent(h); + columns = header.getChildren(); + } + if(j==current.getChildren().size()) { + entry = new Element("Entry"); + current.addContent(entry); + + } + + } + return entry; + + } + + /** + * Erzeugt eine neue Zeile. + * Es werden genügend Spalten erzeugt, dass ein Wert in Spalte "name" eingetragen werden kann + * @param name Name der Spalte + */ + private Element buildRow(String name) { + List columns = header.getChildren(); + int i = 0; + for(Element c: columns) { + + if(c.getText().toLowerCase().equals(name.toLowerCase())) { + return buildRow(i); + } + i++; + } + return null; + + } + + /** + * Liefert den Wert einer Zelle als String + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public String getString(int i) { + if(i >= current.getContent().size()) return ""; + Element e = (Element) current.getContent(i) ; + if(e!=null) { + return e.getText(); + } else { + return ""; + } + } + + /** + * Liefert den Wert einer Zelle als String + * @param name Name der Spalte + * @return Wert der Zelle + */ + public String getString(String name) { + return getString(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als String + * @param i Nummer der Spalte + * @param text neuer Wert der Zelle + */ + public void setString(int i, String text) { + + Element e = buildRow(i); + if(e!=null) e.setText(text); + } + + /** + * Setzt den Wert einer Zelle als String + * @param name Name der Spalte + * @param text neuer Wert der Zelle + */ + public void setString(String name, String text) { + Element e = buildRow(name); + if(e!=null) e.setText(text); + } + + + /** + * Liefert den Wert einer Zelle als Int-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public int getInt(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Integer.parseInt(e.getText()); + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Int-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public int getInt(String name) { + return getInt(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Int-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(int i,int value) { + + Element e = buildRow(i); + if(e!=null) e.setText(""+value); + } + + /** + * Setzt den Wert einer Zelle als Int-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(String name, int value) { + Element e = buildRow(name); + if(e!=null) e.setText(""+value); + } + + /** + * Liefert den Wert einer Zelle als Float-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public float getFloat(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Float.parseFloat(e.getText().replace(",",".")); + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Float-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public float getFloat(String name) { + return getFloat(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Float-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setFloat(int i,float value) { + + Element e = buildRow(i); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Setzt den Wert einer Zelle als Float-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setFloat(String name, float value) { + Element e = buildRow(name); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Liefert den Wert einer Zelle als Double-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public double getDouble(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Double.parseDouble(e.getText().replace(",",".")); + + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Double-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public double getDouble(String name) { + return getDouble(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Double-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setDouble(int i,double value) { + + Element e = buildRow(i); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Setzt den Wert einer Zelle als Double-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setDouble(String name, double value) { + Element e = buildRow(name); + if(e!=null) e.setText(format.format(value)); + } + +} diff --git a/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a1/XML.java b/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a1/XML.java new file mode 100644 index 0000000..c06c490 --- /dev/null +++ b/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a1/XML.java @@ -0,0 +1,637 @@ +/** + * Klasse zum Vereinfachten Zugriff auf XML-Dokumente + * Diese Klasse ist für den Einsatz in der Schule gedacht und soll den Schülern + * einen einfachen Zugriff auf XML-Dokumente ermöglichen. Die zur Verfügung + * stehenden Befehle sind wie in Processing realisiert. + * Dabei ist jeder Teilbaum des Dokuments wieder als XML-Objekt zugreifbar, das + * intern auf die gleiche XML-Dokumentstruktur zugreift. + * Dies ermöglicht bei unsachgemäßem Gebrauch die XML-Struktur zu zerstören. Im + * normalen Gebrauch sollte dies aber nicht relevant sein. + * + * Benötigt: jdom-1.1.3.jar + + * @author Thomas Schaller + * @version 1.0 vom 31.01.2019 + */ +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.ArrayList; +import java.io.*; + +import org.jdom.Document; +import org.jdom.Element; +import org.jdom.Attribute; +import org.jdom.JDOMException; +import org.jdom.input.SAXBuilder; +import org.jdom.output.XMLOutputter; +import org.jdom.output.Format; + +public class XML { + // Anfang Attribute + // XML-Dokumentstruktur + private Document doc; + // Zeiger auf das aktuelle Element + private Element current; + // Ende Attribute + + /** + * Erzeugt ein leeres XMLDokument + */ + public XML() { + this.doc = new Document(); + this.current = null; + } + + /** + * Erzeugt ein XML-Dokument aus einer Datei + * @param filename Dateiname der XML-Datei + */ + public XML(String filename) { + loadXML(filename); + } + + /** + * interner Konstruktor, um ein XML Objekt zu erzeugen, das auf einen bestimmten Knoten verweist + * @param doc die XML-Dokumentstruktur + * @param current Zeiger auf das aktuelle Element + */ + private XML(Document doc, Element current) { + this.doc = doc; + this.current = current; + } + + // Anfang Methoden + /** Öffnet das durch den Dateinamen gegebene Dokument + * @param filename Dateiname des XML-Files + */ + public void loadXML(String filename) { + doc = null; + File f = new File(filename); + + try { + // Das Dokument erstellen + SAXBuilder builder = new SAXBuilder(); + doc = builder.build(f); + + } catch (JDOMException e) { + e.printStackTrace(); + + } catch (IOException e) { + e.printStackTrace(); + } + // Zeiger im Baum auf Root-Element + current = doc.getRootElement(); + } + + /** Speichert den XML-Baum im angegebenen Dateinamen + * @param filename Dateiname des XML-Files + */ + public void saveXML(String filename) { + try { + // new XMLOutputter().output(doc, System.out); + XMLOutputter xmlOutput = new XMLOutputter(); + + // display nice nice + xmlOutput.setFormat(Format.getPrettyFormat()); + File f = new File(filename); + FileOutputStream outputFile = new FileOutputStream(f); + System.out.println("Speicher in : "+f.getAbsolutePath() ); + xmlOutput.output(doc, outputFile); + outputFile.close(); + System.out.println("File Saved!"); + } catch (IOException io) { + System.out.println(io.getMessage()); + } + + } + + //----------------------------------------------- Zeigerbewegungen -------------------------------------------------- + /** + * liefert ein XML-Objekt, das auf den Vaterknoten des aktuellen Elements zeigt. + * @return Vater des aktuellen Objekts. + */ + public XML getParent() { + if(current != null) { + Element parent = current.getParentElement(); + if (parent == null) { + return null; + } else { + return new XML(doc, parent); + } + } + return null; + } + + /** + * Überprüft, ob das Element irgendwelche Kinder hat oder nicht, und gibt das Ergebnis als boolean zurück. + * @return true, wenn Kinder vorhanden sind, sonst false + */ + public boolean hasChildren() { + if (current == null) { + return doc.hasRootElement(); + } else { + return current.getChildren().size()>0; + } + } + + /** + * Ermittelt die Namen aller Kinder des Elements und gibt die Namen als ein Array von Strings zurück. + * Dies ist dasselbe wie das Durchlaufen und Aufrufen von getName() auf jedem untergeordneten Element einzeln. + * @return Liste aller Namen der Kinder + */ + public String[] listChildren() { + if (current == null) { + if(doc.hasRootElement()) { + String[] names = new String[0]; + names[0] = doc.getRootElement().getName(); + return names; + } else { + return null; + } + } else { + List ch_element = current.getChildren(); + String[] names = new String[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + names[i] = ch_element.get(i).getName(); + } + return names; + } + } + + /** + * Liefert alle Kinder des Elements als Array von XML-Objekten. + * @return Array der Kinder als XML-Objekte + */ + public XML[] getChildren() { + if (current == null) { + if(doc.hasRootElement()) { + XML[] ch_xml = new XML[1]; + ch_xml[0] = new XML(doc, doc.getRootElement()); + return ch_xml; + } else { + return null; + } + } else { + List ch_element = current.getChildren(); + XML[] ch_xml = new XML[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + ch_xml[i] = new XML(doc, ch_element.get(i)); + } + return ch_xml; + } + } + + /** + * Liefert bestimmte Kinder des Elements als Array von XML-Objekten. + * Die Methode gibt dabei alle Kinder zurück, die dem angegebenen Namen entsprechen. + * @param name Name der gesuchten Kind-Objekte + * @return Array der Kinder als XML-Objekte + */ + public XML[] getChildren(String name) { + if (current == null) { + if(doc.hasRootElement()) { + XML[] ch_xml = new XML[1]; + ch_xml[0] = new XML(doc, doc.getRootElement()); + if(doc.getRootElement().getName().equals(name)){ + return ch_xml; + } else { + return null; + } + } else { + return null; + } + } else { + List ch_element = current.getChildren(name); + XML[] ch_xml = new XML[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + ch_xml[i] = new XML(doc, ch_element.get(i)); + } + return ch_xml; + } + } + + /** + * Liefert das erste Kind des Elements mit einem bestimmten Namen. + * Die Methode gibt das erste Kind zurück, das dem angegebenen Namen entsprechen. + * @param name Name des gesuchten Kind-Objektes + * @return Kind als XML-Objekt + */ + + public XML getChild(String name) { + if (current == null) { + Element e = doc.getRootElement(); + if (e.getName().equals(name)) { + return new XML(doc, e); + } else { + return null; + } + } else { + String[] names = name.split("/"); + Element e = current; + int i = 0; + while(i < names.length) { + e = e.getChild(names[i]); + if (e==null) return null; + i++; + } + return new XML(doc, e); + } + } + + /** + * Liefert das i. Kind des Elements. + * Die Methode gibt das i. Kind des aktuellen Elements zurück. + * @param i Nummer des Kindes + * @return Kind als XML-Objekt + */ + public XML getChild(int i) { + if (current == null) { + return new XML(doc, doc.getRootElement()); + } else { + List ch_element = current.getChildren(); + if (i>=ch_element.size()) return null; + return new XML(doc, ch_element.get(i)); + } + } + + //--------------------------------------------------- Methoden für das aktuelle Element ------------------------------------------------- + /** + * Frage den Namen des aktuellen Elements ab + * @return Namen des Elements + */ + public String getName() { + if (current==null) return ""; + return current.getName(); + } + + /** + * Setze den Namen des aktuellen Elements. + * @param name Neuer Name des Elements + */ + public void setName(String name) { + if (current==null) return; + current.setName(name); + } + + /** + * liefert die Anzahl der Attribute eines Elements. + * @return Anzahl des Attribute + */ + public int getAttributeCount() { + if (current == null) return 0; + return current.getAttributes().size(); + } + + /** + * liefert zurück, ob das aktuelle Element Attribute hat . + * @return true, wenn es Attribute gibt + */ + public boolean hasAttribute() { + if (current == null) return false; + return current.getAttributes().size()>0; + } + + /** + * Ruft alle Attribute des angegebenen Elements ab und gibt sie als Array von Strings zurück. + * @return Liste der Attributnamen + */ + public String[] listAttributes() { + if (current == null) return null; + List attr = current.getAttributes(); + String[] names = new String[attr.size()]; + for(int i=0; i < attr.size() ; i++) { + names[i] = attr.get(i).getName(); + } + return names; + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs + */ + public String getString(String attribute) { + if (current==null) return ""; + return current.getAttributeValue(attribute); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs + */ + public String getString(String attribute, String defaultValue) { + if (current==null) return defaultValue; + return current.getAttributeValue(attribute,defaultValue); + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param text neuer Wert des Attributs + */ + public void setString(String attribute, String text) { + if (current==null) return; + current.setAttribute(attribute, text); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Integer-Zahl + */ + public int getInt(String attribute) { + if (current==null) return 0; + try{ + int i = Integer.parseInt(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als Integer-Zahl + */ + public int getInt(String attribute, int defaultValue) { + if (current==null) return defaultValue; + try{ + int i = Integer.parseInt(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setInt(String attribute, int value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Float-Zahl + */ + public float getFloat(String attribute) { + if (current==null) return 0; + try{ + float i = Float.parseFloat(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als Float-Zahl + */ + public float getFloat(String attribute, float defaultValue) { + if (current==null) return defaultValue; + try{ + float i = Float.parseFloat(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setFloat(String attribute, float value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Double-Zahl + */ + public double getDouble(String attribute) { + if (current==null) return 0; + try{ + double i = Double.parseDouble(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + +/** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als double-Zahl + */ + public double getDouble(String attribute, double defaultValue) { + if (current==null) return defaultValue; + try{ + double i = Double.parseDouble(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setDouble(String attribute, double value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt den Inhalt/Text des aktuellen Elements ab + * @return Inhalt des Elements + */ + public String getContent() { + if ( current==null) return ""; + + return current.getText(); + } + + /** + * Fragt den Inhalt/Text des aktuellen Elements ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardtext + * @return Inhalt des Elements + */ + public String getContent(String defaultValue) { + if ( current==null) return defaultValue; + String t = current.getText(); + if(t.equals("")) t = defaultValue; + return t; + } + + /** + * Setzt den Inhalt/Text des aktuellen Elements + * @param text Neuer Inhalt des Elements + */ + public void setContent(String text) { + if ( current==null) return; + current.setText(text); + } + + + /** + * Fragt den Inhalt des aktuellen Elements als Integerzahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ public int getIntContent(int defaultValue) { + if ( current==null) return defaultValue; + try{ + int i = Integer.parseInt(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Integerzahl ab + * @return Inhalt des Elements + */ + public int getIntContent() { + if ( current==null) return 0; + try{ + int i = Integer.parseInt(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setIntContent(int value) { + if ( current==null) return; + current.setText(""+value); + } + + + /** + * Fragt den Inhalt des aktuellen Elements als Floatzahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ + public float getFloatContent(float defaultValue) { + if ( current==null) return defaultValue; + try{ + float i = Float.parseFloat(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Floatzahl ab + * @return Inhalt des Elements + */ + public float getFloatContent() { + if ( current==null) return 0; + try{ + float i = Float.parseFloat(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setFloatContent(float value) { + if ( current==null) return; + current.setText(""+value); + } + +/** + * Fragt den Inhalt des aktuellen Elements als Doublezahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ + public double getDoubleContent(double defaultValue) { + if ( current==null) return defaultValue; + try{ + double i = Double.parseDouble(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Doublezahl ab + * @return Inhalt des Elements + */ + public double getDoubleContent() { + if ( current==null) return 0; + try{ + double i = Double.parseDouble(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setDoubleContent(double value) { + if ( current==null) return; + current.setText(""+value); + } + + + // ----------------------------------------------- XML-Struktur aufbauen ------------------------------------------------ + /** Erzeuge neues Element nach der aktuellen Position und setze dieses als aktuelles Element + * @param name Name des neuen Elements + * @return neues Element als XML-Objekt + */ + public XML addChild(String name) { + Element e = new Element(name); + if(current == null){ // man ist auf Root-Ebene + doc.setRootElement(e); + + } + else { + current.addContent(e); + } // end of if-else + return new XML(doc, e); + } + + /** + * liefert das aktuelle Element als jdom-Element-Objekt + * @return aktuelles Element + */ + private Element getCurrent() { + return current; + } + + /** + * löscht ein Kind des aktuellen Knotens. + * Ist kid kein Kind des aktuellen Elements passiert gar nichts. + * @param kid XML-Objekt des Kindes + */ + public void removeChild(XML kid) { + if (current == null) return; + Element e = kid.getCurrent(); + int index = current.indexOf(e); + if(index >= 0) { current.removeContent(e);} + } + +} diff --git a/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a1/XYDiagramm.java b/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a1/XYDiagramm.java new file mode 100644 index 0000000..5564f04 --- /dev/null +++ b/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a1/XYDiagramm.java @@ -0,0 +1,115 @@ +import java.awt.Font; + +/** + * XY-Diagramm für Schalldruckpegel, Zahlen werden aus CSV-Datei gelesen. + * + * @author Schaller + * @version 29.11.18 + */ +public class XYDiagramm extends Picture + +{ + // Liste mit allen Werten + double[] x_werte; + double[] y_werte; + + // Hilfsvariablen für die Suche + int akt_maximum=-1; // aktuell groesstes Element + int akt=-1; // aktuell untersuchtes Element + int verzoegerung=0; // Geschwindigkeit der Ausführung + + // Schriften + Font kleineSchrift; + Font grosseSchrift; + + public XYDiagramm() { + size(1000, 700); + background(0); + kleineSchrift = new Font( Font.SANS_SERIF, Font.PLAIN, 12 ); + grosseSchrift = new Font( Font.SANS_SERIF, Font.PLAIN, 20 ); + + // CSV-Datei laden und anzeigen + ladeTabelle("Amplitudes.csv"); + stroke(250,250,200); + zeichneBalken(); + } + + public void ladeTabelle(String name) { + // Tabelle aus CSV-Datei laden + Table csv = new Table(name, "header",',','"'); + + if (csv != null && csv.getColumnCount()==2) { + + // Initialisiere Arrays, in die alle Zeilen der Tabelle passen + x_werte = new double[csv.getRowCount()]; + y_werte = new double[csv.getRowCount()]; + + // Fülle die Arrays mit Werten aus der Tabelle + for (int i = 0; i < x_werte.length; i++) { + // Lies Wert aus der i. Zeile und der Spalte "Punkte" bzw. "Name" + x_werte[i] = csv.getDouble(i, "Zeit"); + y_werte[i] = csv.getDouble(i, "Laerm"); + } + } + } + + public void zeichneBalken() { + + // Überschrift + fill(255,255,255); + textFont(grosseSchrift); + text("Lärmpegel", 2, 20); + textFont(kleineSchrift); + + // Alle Einträge darstellen + if (x_werte != null) { + for (int i = 0; i< 40; i++) { + + fill(20,25,165); + // aktuelle Elemente farblich hervorheben + if (i == akt) { + fill(140,230,20); + } + if (i == akt_maximum) { + fill(230,60,140); + } + + // Balkendiagramm zeichnen + int breite = (int) y_werte[i]; + if (breite>=0) rect(160, 25+i*15, breite+1, 13); + + // Beschriftung + fill(255,255,255); + text(String.format("%.4f", x_werte[i]), 2, 35+i*15); + text(String.format("%.4f", y_werte[i]), 70, 35+i*15); + + } + } + } + + public int sucheMaximum(int[] zahlen) { + // Sind überhaupt Daten da? + if(zahlen.length==0 ) { //<>// + return -1; + } + + // Startwerte setzen + akt_maximum = 0; + akt = 1; + + // Alle Arrayelemente untersuchen + while (akt < zahlen.length) { + + // Neues größtes Element?? + if (zahlen[akt]> zahlen[akt_maximum]) { + // Dann merke dir das neue + akt_maximum = akt; + + } + akt = akt + 1; + } + // Gib Position des größten Elements zurück + return akt_maximum; + } + +} diff --git a/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a1/XYDiagrammGUI.java b/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a1/XYDiagrammGUI.java new file mode 100644 index 0000000..9289b4a --- /dev/null +++ b/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a1/XYDiagrammGUI.java @@ -0,0 +1,82 @@ +import java.awt.*; +import java.awt.event.*; +import javax.swing.*; +import javax.swing.event.*; + +/** + * + * description + * + * @version 1.0 from 06.10.2018 + * @author + */ + +public class XYDiagrammGUI extends JFrame { + // Anfang Attribute + private JButton bXYDiagrammzeichnen = new JButton(); + private PictureViewer imagePanel1 = new PictureViewer(); + + private XYDiagramm bild; + private Picture b; + // Ende Attribute + + public XYDiagrammGUI (String title) { + super (title); + setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); + int frameWidth = 768; + int frameHeight = 551; + setSize(frameWidth, frameHeight); + Dimension d = Toolkit.getDefaultToolkit().getScreenSize(); + int x = (d.width - getSize().width) / 2; + int y = (d.height - getSize().height) / 2; + setLocation(x, y); + Container cp = getContentPane(); + cp.setLayout(null); + // Anfang Komponenten + bXYDiagrammzeichnen.setBounds(280, 456, 209, 33); + bXYDiagrammzeichnen.setText("XY-Diagramm zeichnen"); + bXYDiagrammzeichnen.setMargin(new Insets(2, 2, 2, 2)); + bXYDiagrammzeichnen.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent evt) { + bXYDiagrammzeichnen_ActionPerformed(evt); + } + }); + cp.add(bXYDiagrammzeichnen); + imagePanel1.setBounds(24, 16, 705, 409); + cp.add(imagePanel1); + + b = new Picture(700,800); + imagePanel1.setImage(b); + b.setObserver(imagePanel1); + addWindowListener(new WindowAdapter() { + public void windowClosed(WindowEvent evt) { + BalkendiagrammGUI_WindowClosed(evt); + } + }); + // Ende Komponenten + setResizable(false); + setVisible(true); + } + + // Anfang Methoden + public void bXYDiagrammzeichnen_ActionPerformed(ActionEvent evt) { + bild = new XYDiagramm(); + imagePanel1.setImage(bild); + bild.setObserver(imagePanel1); + imagePanel1.getVerticalScrollBar().setValue(10); + imagePanel1.getVerticalScrollBar().setValue(0); + imagePanel1.getViewport().repaint(); + } // end of bXYDiagrammzeichnen_ActionPerformed + + public void BalkendiagrammGUI_WindowClosed(WindowEvent evt) { + + + } // end of BalkendiagrammGUI_WindowClosed + + // Ende Methoden + + public static void main(String[] args) { + new XYDiagrammGUI("XYDiagrammGUI"); + } +} + diff --git a/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a1/XYDiagrammGUI.jfm b/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a1/XYDiagrammGUI.jfm new file mode 100644 index 0000000..384f91e --- /dev/null +++ b/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a1/XYDiagrammGUI.jfm @@ -0,0 +1,104 @@ +object XYDiagrammGUI: TFGUIForm + Left = 761 + Top = 237 + BorderIcons = [biSystemMenu] + Caption = 'XYDiagrammGUI' + ClientHeight = 512 + ClientWidth = 752 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -10 + Font.Name = 'MS Sans Serif' + Font.Style = [] + FormStyle = fsStayOnTop + OldCreateOrder = True + Position = poDesigned + ShowHint = True + Visible = True + OnClose = FormClose + OnCloseQuery = FormCloseQuery + OnResize = FormResize + FrameType = 5 + Resizable = False + Undecorated = False + Background = clBtnFace + windowClosed = 'BalkendiagrammGUI_WindowClosed' + PixelsPerInch = 96 + TextHeight = 13 + object bXYDiagrammzeichnen: TJButton + Tag = 4 + Left = 280 + Top = 456 + Width = 209 + Height = 33 + Hint = 'jButton1' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Dialog' + Font.Style = [fsBold] + Foreground = 3355443 + Background = 15658734 + actionPerformed = 'bXYDiagrammzeichnen_ActionPerformed' + Text = 'XY-Diagramm zeichnen' + Mnemonic = 0 + DisplayedMnemonicIndex = 0 + Selected = False + BorderPainted = True + FocusPainted = False + ContentAreaFilled = True + HorizontalAlignment = CENTER + VerticalAlignment = CENTER + HorizontalTextPosition = RIGHT + VerticalTextPosition = CENTER + IconTextGap = 4 + RolloverEnabled = False + Border.BorderType = NoBorder + Border.LineColor = clBlack + Border.LineThickness = 0 + Border.LineRounded = False + Border.EtchHighlightColor = clBlack + Border.EtchShadowColor = clBlack + Border.Etchtype = 0 + Border.BevelHighlightColor = clBlack + Border.BevelShadowColor = clBlack + Border.Beveltype = 0 + Border.MatteColor = clBlack + Border.MatteTop = 0 + Border.MatteLeft = 0 + Border.MatteBottom = 0 + Border.MatteRight = 0 + end + object imagePanel1: TJPanel + Tag = 38 + Left = 24 + Top = 16 + Width = 705 + Height = 409 + Hint = 'imagePanel1' + HelpKeyword = 'ImagePanel' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Dialog' + Font.Style = [fsBold] + Foreground = 3355443 + Background = clBtnFace + Border.BorderType = NoBorder + Border.LineColor = clBlack + Border.LineThickness = 0 + Border.LineRounded = False + Border.EtchHighlightColor = clBlack + Border.EtchShadowColor = clBlack + Border.Etchtype = 0 + Border.BevelHighlightColor = clBlack + Border.BevelShadowColor = clBlack + Border.Beveltype = 0 + Border.MatteColor = clBlack + Border.MatteTop = 0 + Border.MatteLeft = 0 + Border.MatteBottom = 0 + Border.MatteRight = 0 + end +end diff --git a/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a1/jdom-1.1.3.jar b/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a1/jdom-1.1.3.jar new file mode 100644 index 0000000..a287727 Binary files /dev/null and b/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a1/jdom-1.1.3.jar differ diff --git a/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a1/punkte.csv b/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a1/punkte.csv new file mode 100644 index 0000000..d6e8dfd --- /dev/null +++ b/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a1/punkte.csv @@ -0,0 +1,6 @@ +"Name","Punkte" +Niko,216 +Klaus,591 +Anna,857 +Lena,180 +Winfried,168 diff --git a/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a2/Amplitudes.csv b/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a2/Amplitudes.csv new file mode 100644 index 0000000..6a3b121 --- /dev/null +++ b/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a2/Amplitudes.csv @@ -0,0 +1,12219 @@ +"Zeit","Laerm" +0.000000000E0,6.133205686E1 +1.130000000E-1,5.602431153E1 +3.840000000E-1,3.897519867E1 +7.780000000E-1,4.208195145E1 +1.036000000E0,3.840936313E1 +1.305000000E0,3.561092139E1 +1.587000000E0,4.663257633E1 +1.829000000E0,5.311883882E1 +2.084000000E0,5.299431820E1 +2.357000000E0,5.747397858E1 +2.643000000E0,5.626338063E1 +2.949000000E0,5.790811120E1 +3.238000000E0,5.874544026E1 +3.497000000E0,5.736162139E1 +3.775000000E0,5.897817442E1 +4.097000000E0,5.789822970E1 +4.357000000E0,5.312015799E1 +4.626000000E0,5.710192134E1 +4.941000000E0,6.275087240E1 +5.235000000E0,5.784358767E1 +5.535000000E0,5.388577420E1 +5.827000000E0,5.403495101E1 +6.090000000E0,5.428355086E1 +6.339000000E0,6.064473144E1 +6.616000000E0,6.271091291E1 +6.850000000E0,6.982615367E1 +7.128000000E0,7.050308750E1 +7.487000000E0,5.395311298E1 +7.760000000E0,5.036401582E1 +8.065000000E0,4.614125463E1 +8.361000000E0,6.244776407E1 +8.614000000E0,6.315719526E1 +8.862000000E0,5.981740395E1 +9.123000000E0,5.907292535E1 +9.374000000E0,5.661523092E1 +9.665000000E0,6.210368813E1 +9.948000000E0,6.140958115E1 +1.021100000E1,5.697007655E1 +1.058300000E1,5.460455934E1 +1.084000000E1,5.408516231E1 +1.115300000E1,5.907221377E1 +1.142100000E1,6.113412429E1 +1.172700000E1,6.267949704E1 +1.197100000E1,6.245109870E1 +1.226500000E1,6.342534529E1 +1.255800000E1,6.810008108E1 +1.287100000E1,6.036891848E1 +1.313400000E1,5.913231814E1 +1.342700000E1,5.973818566E1 +1.371600000E1,5.534371651E1 +1.401200000E1,5.694514867E1 +1.431200000E1,6.134814982E1 +1.461100000E1,5.900023912E1 +1.484600000E1,5.689908400E1 +1.515800000E1,5.296474858E1 +1.544000000E1,5.608528071E1 +1.569300000E1,5.728560404E1 +1.596900000E1,5.837984103E1 +1.620100000E1,5.718896638E1 +1.649200000E1,5.909973037E1 +1.678900000E1,5.705554272E1 +1.716300000E1,6.079937758E1 +1.747400000E1,5.618116117E1 +1.775200000E1,5.519881157E1 +1.803800000E1,5.402386340E1 +1.829100000E1,5.678484358E1 +1.858100000E1,5.954639303E1 +1.882300000E1,6.030021638E1 +1.908000000E1,5.588340744E1 +1.934400000E1,5.668691200E1 +1.958800000E1,6.042765467E1 +1.983400000E1,5.839794223E1 +2.008500000E1,5.457976882E1 +2.039500000E1,5.974390604E1 +2.064000000E1,6.049774386E1 +2.092900000E1,6.029857781E1 +2.117800000E1,6.116406203E1 +2.142700000E1,5.664722837E1 +2.173400000E1,5.823294996E1 +2.203100000E1,5.517538657E1 +2.229000000E1,5.322823206E1 +2.259900000E1,6.180779467E1 +2.285300000E1,6.106216386E1 +2.314900000E1,5.883321877E1 +2.347100000E1,6.045262422E1 +2.375000000E1,6.163931220E1 +2.406000000E1,4.841181734E1 +2.432800000E1,4.372149986E1 +2.462900000E1,5.625563946E1 +2.487100000E1,5.672759349E1 +2.513200000E1,5.896193725E1 +2.540800000E1,5.893011728E1 +2.566400000E1,5.857261268E1 +2.596700000E1,5.859012974E1 +2.621900000E1,5.635586832E1 +2.648700000E1,5.350948293E1 +2.673900000E1,5.430043092E1 +2.701400000E1,5.666610976E1 +2.727500000E1,5.218421407E1 +2.753100000E1,5.689076583E1 +2.782000000E1,5.796831886E1 +2.806900000E1,5.608205064E1 +2.831700000E1,5.482273815E1 +2.861600000E1,5.392425499E1 +2.888300000E1,5.329416010E1 +2.914800000E1,5.366916703E1 +2.940200000E1,5.280847155E1 +2.968000000E1,5.333298066E1 +2.994300000E1,5.497085471E1 +3.031200000E1,5.753094076E1 +3.057900000E1,5.655381974E1 +3.086100000E1,5.517704804E1 +3.115600000E1,5.592585858E1 +3.140700000E1,6.212826207E1 +3.166000000E1,5.699502474E1 +3.193500000E1,6.025129057E1 +3.223100000E1,5.686166208E1 +3.247300000E1,5.807641915E1 +3.271900000E1,6.065155151E1 +3.296400000E1,5.961384387E1 +3.320500000E1,6.119064420E1 +3.354400000E1,5.548464633E1 +3.378000000E1,5.699661616E1 +3.408000000E1,5.653770482E1 +3.438000000E1,5.083503664E1 +3.468200000E1,5.695639918E1 +3.495800000E1,5.566535489E1 +3.524700000E1,5.914853092E1 +3.552700000E1,5.758441289E1 +3.576600000E1,6.085665801E1 +3.606700000E1,5.862586334E1 +3.630600000E1,5.096841655E1 +3.662200000E1,6.009246966E1 +3.689400000E1,5.981749726E1 +3.715300000E1,6.108830629E1 +3.740300000E1,5.724514841E1 +3.766500000E1,5.934850613E1 +3.793000000E1,5.725470328E1 +3.819100000E1,5.843556167E1 +3.847700000E1,5.697759761E1 +3.874000000E1,5.721548979E1 +3.901600000E1,5.649629904E1 +3.927200000E1,5.850326911E1 +3.954600000E1,5.691951660E1 +3.993900000E1,5.357092442E1 +4.023400000E1,5.817046878E1 +4.053000000E1,5.554327077E1 +4.081200000E1,5.802928061E1 +4.103900000E1,5.663899845E1 +4.128700000E1,5.494654466E1 +4.155800000E1,5.564956216E1 +4.181900000E1,5.663250304E1 +4.211300000E1,5.652236278E1 +4.238100000E1,5.614203459E1 +4.264000000E1,5.433145844E1 +4.295000000E1,6.132645299E1 +4.326200000E1,6.040612545E1 +4.351400000E1,5.905916902E1 +4.377100000E1,5.885516023E1 +4.401000000E1,5.514814582E1 +4.430800000E1,5.663232510E1 +4.455900000E1,5.055807811E1 +4.482100000E1,5.614950318E1 +4.513300000E1,6.025044420E1 +4.537500000E1,5.643182261E1 +4.568900000E1,5.709089314E1 +4.600500000E1,5.480136123E1 +4.624500000E1,5.924046686E1 +4.656900000E1,6.172358505E1 +4.684100000E1,5.645515217E1 +4.711100000E1,6.002156043E1 +4.736300000E1,6.182669975E1 +4.759700000E1,5.557741963E1 +4.786700000E1,5.598662295E1 +4.818300000E1,5.664767890E1 +4.847900000E1,5.956168629E1 +4.874200000E1,5.713315811E1 +4.898900000E1,5.765479272E1 +4.931400000E1,5.507101982E1 +4.961600000E1,5.361677606E1 +4.990000000E1,5.558547080E1 +5.019600000E1,5.402951441E1 +5.046500000E1,5.805429700E1 +5.078800000E1,5.327636151E1 +5.110300000E1,4.980825483E1 +5.137100000E1,5.290981249E1 +5.165200000E1,4.817864123E1 +5.190100000E1,5.585478693E1 +5.214500000E1,5.457392293E1 +5.242900000E1,5.449921652E1 +5.272500000E1,5.537781025E1 +5.302100000E1,5.598018287E1 +5.326000000E1,5.612851081E1 +5.355800000E1,5.312697891E1 +5.384800000E1,5.799703575E1 +5.409200000E1,5.662162553E1 +5.433900000E1,5.392344795E1 +5.459100000E1,5.398098819E1 +5.494900000E1,5.489231889E1 +5.527100000E1,5.658153835E1 +5.552800000E1,5.624900056E1 +5.589500000E1,4.979935744E1 +5.616900000E1,5.146998424E1 +5.645400000E1,5.878755245E1 +5.668600000E1,5.846227673E1 +5.694400000E1,5.977267383E1 +5.726200000E1,5.508647523E1 +5.754400000E1,5.138853207E1 +5.784300000E1,5.327451232E1 +5.808600000E1,5.887142781E1 +5.837800000E1,5.858062431E1 +5.862200000E1,5.917458096E1 +5.889700000E1,6.050411670E1 +5.926300000E1,5.908687144E1 +5.952100000E1,5.570790758E1 +5.981900000E1,5.444849000E1 +6.006100000E1,5.201240285E1 +6.032000000E1,4.755830762E1 +6.061900000E1,5.204388424E1 +6.086500000E1,5.626914911E1 +6.117500000E1,5.280379974E1 +6.142900000E1,5.093923019E1 +6.173000000E1,5.460427137E1 +6.197800000E1,5.299601182E1 +6.230600000E1,5.424208739E1 +6.257600000E1,5.253762352E1 +6.283700000E1,5.544043962E1 +6.309800000E1,5.527614156E1 +6.335400000E1,5.747262922E1 +6.360700000E1,5.468151445E1 +6.384900000E1,5.582905565E1 +6.410700000E1,5.802400474E1 +6.435000000E1,5.204893636E1 +6.459600000E1,5.280146425E1 +6.486300000E1,4.876648093E1 +6.509700000E1,5.311679703E1 +6.537500000E1,5.192778643E1 +6.571400000E1,5.346709918E1 +6.597900000E1,5.370921552E1 +6.627900000E1,5.676705279E1 +6.652200000E1,5.832258643E1 +6.676600000E1,6.257736406E1 +6.703100000E1,6.295448429E1 +6.737800000E1,6.100964383E1 +6.766100000E1,5.182636016E1 +6.790700000E1,4.952717893E1 +6.821100000E1,5.667475715E1 +6.850300000E1,5.872819054E1 +6.882100000E1,6.004516195E1 +6.907300000E1,5.559244143E1 +6.935100000E1,5.600379936E1 +6.961500000E1,5.338006499E1 +6.987600000E1,5.360104859E1 +7.011900000E1,4.644905289E1 +7.037100000E1,4.528909123E1 +7.067200000E1,5.787885076E1 +7.091600000E1,5.602551032E1 +7.115700000E1,5.989544193E1 +7.142200000E1,6.110384869E1 +7.167900000E1,5.887448069E1 +7.192600000E1,5.797896456E1 +7.226000000E1,5.965665129E1 +7.251000000E1,6.477744226E1 +7.281200000E1,6.243775536E1 +7.310800000E1,5.921576979E1 +7.335600000E1,6.629420582E1 +7.364100000E1,6.683725429E1 +7.392300000E1,5.758295449E1 +7.418800000E1,5.654909286E1 +7.448600000E1,5.881341247E1 +7.472100000E1,5.546609910E1 +7.498300000E1,5.586542777E1 +7.526600000E1,5.463216262E1 +7.558500000E1,5.947397496E1 +7.586200000E1,6.218459899E1 +7.609800000E1,6.134189272E1 +7.635800000E1,5.727526170E1 +7.666700000E1,5.579062978E1 +7.699300000E1,6.015063828E1 +7.729000000E1,6.022787424E1 +7.756300000E1,5.646982462E1 +7.782200000E1,6.005734442E1 +7.813200000E1,5.950776839E1 +7.842200000E1,6.314009710E1 +7.880400000E1,5.425753266E1 +7.910400000E1,5.909139002E1 +7.935300000E1,5.600377253E1 +7.962300000E1,6.036368528E1 +7.993700000E1,5.940415340E1 +8.018900000E1,6.102152187E1 +8.050000000E1,6.619104713E1 +8.074000000E1,6.149981675E1 +8.098900000E1,5.978899259E1 +8.123800000E1,5.963150500E1 +8.150300000E1,6.509054947E1 +8.181300000E1,6.387458039E1 +8.220700000E1,6.421798778E1 +8.246100000E1,6.092500605E1 +8.271900000E1,6.039313205E1 +8.297100000E1,5.885189543E1 +8.328000000E1,6.068901175E1 +8.355600000E1,6.531581124E1 +8.381900000E1,6.460984287E1 +8.407800000E1,6.281147078E1 +8.435000000E1,5.961599483E1 +8.463400000E1,5.915457491E1 +8.489200000E1,5.383227231E1 +8.513000000E1,5.278474817E1 +8.551100000E1,6.165964712E1 +8.574900000E1,6.442604107E1 +8.600700000E1,6.551005247E1 +8.626000000E1,6.660338206E1 +8.650900000E1,6.304014634E1 +8.676000000E1,6.488065719E1 +8.701800000E1,6.416881833E1 +8.728000000E1,5.892166498E1 +8.754500000E1,5.946249393E1 +8.785000000E1,6.506678358E1 +8.809400000E1,5.703264442E1 +8.840500000E1,6.164086486E1 +8.876300000E1,6.276173959E1 +8.906100000E1,5.818071871E1 +8.930500000E1,5.844394446E1 +8.956300000E1,5.657440647E1 +8.987400000E1,6.120356137E1 +9.011500000E1,6.094306560E1 +9.041100000E1,5.978472131E1 +9.065500000E1,6.008128664E1 +9.092400000E1,5.758286780E1 +9.123300000E1,5.353387594E1 +9.151600000E1,5.676204998E1 +9.183800000E1,5.245702159E1 +9.218200000E1,5.642589170E1 +9.243600000E1,5.542467479E1 +9.268000000E1,5.580829615E1 +9.297600000E1,5.148061441E1 +9.322800000E1,4.635974806E1 +9.353200000E1,5.465579762E1 +9.377300000E1,5.154999739E1 +9.402200000E1,5.544992474E1 +9.427900000E1,5.302390200E1 +9.453300000E1,5.127982623E1 +9.478800000E1,5.263086656E1 +9.503100000E1,5.128121484E1 +9.532100000E1,5.061466876E1 +9.557700000E1,5.328260476E1 +9.582800000E1,5.101663724E1 +9.607100000E1,5.400893265E1 +9.640400000E1,5.756552061E1 +9.665500000E1,5.665487755E1 +9.690400000E1,5.719000980E1 +9.715400000E1,5.593995548E1 +9.740400000E1,5.420194495E1 +9.771300000E1,4.867232074E1 +9.802100000E1,5.053798103E1 +9.830700000E1,4.874294948E1 +9.857500000E1,5.754515654E1 +9.883700000E1,5.863618568E1 +9.909700000E1,6.070195076E1 +9.935300000E1,5.434874196E1 +9.961300000E1,6.163600431E1 +9.987300000E1,5.555228218E1 +1.001200000E2,5.733850418E1 +1.003910000E2,6.133233800E1 +1.006620000E2,5.853313440E1 +1.009020000E2,5.435835494E1 +1.011680000E2,5.329891948E1 +1.014680000E2,5.356470018E1 +1.018410000E2,5.574288130E1 +1.021370000E2,5.927571979E1 +1.024000000E2,5.789956910E1 +1.026980000E2,6.081738139E1 +1.029540000E2,5.575615853E1 +1.032580000E2,5.337382111E1 +1.035140000E2,5.562761746E1 +1.038150000E2,5.905624776E1 +1.041040000E2,5.696105750E1 +1.043990000E2,6.170938149E1 +1.046370000E2,5.823687000E1 +1.049080000E2,6.066674703E1 +1.051740000E2,6.220969933E1 +1.054810000E2,5.755805236E1 +1.057660000E2,5.735691579E1 +1.060450000E2,5.761618087E1 +1.063040000E2,5.188413372E1 +1.065680000E2,5.643639822E1 +1.068740000E2,5.312430876E1 +1.071280000E2,5.924995828E1 +1.073900000E2,5.546187342E1 +1.076920000E2,5.474389270E1 +1.079790000E2,5.600814816E1 +1.082440000E2,5.561453096E1 +1.084980000E2,5.408559240E1 +1.087580000E2,5.622058302E1 +1.090160000E2,5.768852773E1 +1.092670000E2,5.516804842E1 +1.095340000E2,5.973626648E1 +1.098120000E2,6.403409511E1 +1.100690000E2,6.035201036E1 +1.103490000E2,5.940482770E1 +1.105950000E2,5.932126109E1 +1.108600000E2,5.859387697E1 +1.111460000E2,5.929800416E1 +1.114110000E2,5.930503134E1 +1.117890000E2,6.170536210E1 +1.120410000E2,6.214563711E1 +1.123490000E2,5.810151097E1 +1.126320000E2,5.823719807E1 +1.128910000E2,6.454485320E1 +1.131870000E2,6.755031626E1 +1.134560000E2,6.410743881E1 +1.137200000E2,5.913442857E1 +1.139870000E2,6.382823805E1 +1.142400000E2,5.859239523E1 +1.145180000E2,5.135859796E1 +1.147890000E2,5.294563188E1 +1.151440000E2,5.357868048E1 +1.154220000E2,5.561359505E1 +1.156620000E2,5.645675088E1 +1.159670000E2,5.879425595E1 +1.162610000E2,5.918610512E1 +1.164990000E2,6.083658676E1 +1.167470000E2,5.526645697E1 +1.169880000E2,5.471312988E1 +1.172910000E2,6.211796732E1 +1.175510000E2,5.417468648E1 +1.177930000E2,5.576739557E1 +1.180750000E2,5.912472365E1 +1.184660000E2,5.718213173E1 +1.187710000E2,5.747081312E1 +1.190170000E2,5.741742618E1 +1.192690000E2,5.379557814E1 +1.195330000E2,5.428733520E1 +1.197780000E2,6.177329402E1 +1.200450000E2,5.672333166E1 +1.203170000E2,5.584947723E1 +1.205670000E2,5.382665718E1 +1.208400000E2,5.443690083E1 +1.211280000E2,5.221565874E1 +1.214800000E2,5.516249741E1 +1.217540000E2,5.676279334E1 +1.220050000E2,5.303796336E1 +1.222680000E2,5.258840561E1 +1.225120000E2,5.671935607E1 +1.227660000E2,4.902892756E1 +1.230240000E2,4.264962220E1 +1.232830000E2,4.818154680E1 +1.235340000E2,5.204058636E1 +1.238430000E2,5.649936271E1 +1.241410000E2,5.396154490E1 +1.244200000E2,5.428877275E1 +1.246760000E2,4.778715710E1 +1.249500000E2,4.912370762E1 +1.252110000E2,5.114426735E1 +1.255020000E2,5.345096378E1 +1.257410000E2,5.581149074E1 +1.260430000E2,5.211774829E1 +1.263320000E2,5.470047014E1 +1.265660000E2,5.399085344E1 +1.268600000E2,5.981732528E1 +1.271210000E2,5.944116770E1 +1.273530000E2,5.668281238E1 +1.275970000E2,5.042419391E1 +1.279080000E2,5.014554177E1 +1.282260000E2,5.350461413E1 +1.285240000E2,5.453533258E1 +1.287780000E2,5.809919663E1 +1.290280000E2,5.729580956E1 +1.292980000E2,5.681749266E1 +1.296010000E2,5.542882864E1 +1.298980000E2,5.612046892E1 +1.302070000E2,6.074750886E1 +1.304620000E2,5.979349108E1 +1.307520000E2,5.806574219E1 +1.310590000E2,5.738881777E1 +1.314010000E2,5.595280312E1 +1.316630000E2,5.401154636E1 +1.319120000E2,5.499471091E1 +1.321620000E2,5.551354327E1 +1.324640000E2,6.567912108E1 +1.327650000E2,5.725129100E1 +1.330150000E2,6.452906176E1 +1.333160000E2,5.778565576E1 +1.335760000E2,6.242194617E1 +1.338200000E2,5.570863747E1 +1.340710000E2,5.755877138E1 +1.343660000E2,6.819206156E1 +1.346260000E2,6.094769164E1 +1.349310000E2,6.447198163E1 +1.351810000E2,5.482297950E1 +1.354630000E2,6.327012623E1 +1.357210000E2,5.723157337E1 +1.359770000E2,5.835004111E1 +1.362140000E2,6.413045068E1 +1.365290000E2,6.022343539E1 +1.368110000E2,5.969265006E1 +1.371070000E2,5.589766444E1 +1.373670000E2,6.089100679E1 +1.376970000E2,6.762783521E1 +1.379410000E2,5.740809854E1 +1.381870000E2,6.711182247E1 +1.384650000E2,6.290175574E1 +1.387060000E2,6.352322572E1 +1.390400000E2,5.897504025E1 +1.392980000E2,5.872568346E1 +1.396520000E2,5.582882684E1 +1.399140000E2,5.874428562E1 +1.402160000E2,5.275369064E1 +1.404650000E2,5.181123336E1 +1.407250000E2,4.758951485E1 +1.410550000E2,4.601470876E1 +1.413500000E2,5.203790008E1 +1.416310000E2,5.380793436E1 +1.418780000E2,5.006781735E1 +1.421580000E2,4.792469964E1 +1.424020000E2,5.136650820E1 +1.427060000E2,5.127969468E1 +1.430200000E2,5.304643312E1 +1.433210000E2,5.218299100E1 +1.436050000E2,5.568762266E1 +1.439010000E2,5.522696018E1 +1.442570000E2,5.919224289E1 +1.445880000E2,6.201398016E1 +1.448680000E2,5.750742223E1 +1.451160000E2,5.811963790E1 +1.454090000E2,5.695462128E1 +1.456560000E2,5.854812337E1 +1.458980000E2,5.886107911E1 +1.461720000E2,5.454171305E1 +1.464480000E2,5.674410925E1 +1.466770000E2,5.450912101E1 +1.469270000E2,5.953864028E1 +1.471790000E2,6.097527460E1 +1.475260000E2,5.825769450E1 +1.478290000E2,5.780473579E1 +1.480790000E2,6.185542851E1 +1.483350000E2,5.390929394E1 +1.486330000E2,5.400087479E1 +1.488750000E2,5.328656685E1 +1.491190000E2,5.599536596E1 +1.494200000E2,5.721648542E1 +1.497150000E2,5.787493165E1 +1.500380000E2,5.480047158E1 +1.503480000E2,5.002404450E1 +1.506590000E2,5.486151348E1 +1.509700000E2,6.245235750E1 +1.512360000E2,5.831236552E1 +1.514820000E2,6.253825815E1 +1.517260000E2,6.440134635E1 +1.520120000E2,5.646251942E1 +1.523080000E2,5.569851104E1 +1.525630000E2,5.574195002E1 +1.528610000E2,6.073633455E1 +1.531220000E2,5.704364811E1 +1.533960000E2,5.858521931E1 +1.536900000E2,6.334346239E1 +1.540080000E2,5.734505299E1 +1.542490000E2,6.522555977E1 +1.544980000E2,5.500712815E1 +1.547420000E2,5.698741268E1 +1.549830000E2,5.097374633E1 +1.552760000E2,5.421781291E1 +1.555100000E2,5.276919678E1 +1.558070000E2,5.444895965E1 +1.560410000E2,5.023818561E1 +1.563440000E2,5.460917302E1 +1.565880000E2,5.459938847E1 +1.568920000E2,5.843131092E1 +1.572210000E2,5.876667307E1 +1.574850000E2,5.735202828E1 +1.577300000E2,5.496399564E1 +1.580290000E2,5.249359356E1 +1.582920000E2,5.216967072E1 +1.585400000E2,5.506360532E1 +1.588040000E2,4.854470136E1 +1.590480000E2,5.455647594E1 +1.593040000E2,5.480802962E1 +1.595560000E2,5.117555202E1 +1.598230000E2,5.525001141E1 +1.600680000E2,6.028739680E1 +1.604080000E2,6.051466285E1 +1.606910000E2,5.941686107E1 +1.609450000E2,6.263789003E1 +1.611920000E2,5.862463866E1 +1.614980000E2,5.858673558E1 +1.617730000E2,5.766546261E1 +1.620210000E2,5.485521148E1 +1.623080000E2,5.814732367E1 +1.625850000E2,5.829863647E1 +1.628370000E2,5.473457172E1 +1.631510000E2,5.323729241E1 +1.634320000E2,5.795543593E1 +1.637670000E2,5.845831909E1 +1.640670000E2,5.883503284E1 +1.643040000E2,5.933733684E1 +1.645990000E2,5.316483696E1 +1.648620000E2,5.628275472E1 +1.651110000E2,5.612764782E1 +1.654290000E2,5.739409022E1 +1.657290000E2,5.275374209E1 +1.660100000E2,5.606330732E1 +1.662350000E2,4.973765069E1 +1.664840000E2,4.855931683E1 +1.667820000E2,4.830487304E1 +1.670210000E2,5.643349546E1 +1.672820000E2,5.752246312E1 +1.675830000E2,5.576545129E1 +1.678330000E2,5.583582770E1 +1.681390000E2,5.301617697E1 +1.684460000E2,5.088408561E1 +1.686990000E2,5.149775091E1 +1.690030000E2,6.019099852E1 +1.692410000E2,6.143998752E1 +1.695380000E2,6.183098470E1 +1.697780000E2,5.964256200E1 +1.701420000E2,5.648358262E1 +1.703870000E2,5.768033788E1 +1.706360000E2,5.037521789E1 +1.709530000E2,5.268785935E1 +1.712030000E2,5.850048969E1 +1.714650000E2,5.537813713E1 +1.717710000E2,5.989062491E1 +1.720770000E2,6.371629733E1 +1.723380000E2,5.413135778E1 +1.726060000E2,5.582389161E1 +1.729040000E2,6.344770094E1 +1.731770000E2,6.038125570E1 +1.735090000E2,5.229655017E1 +1.737830000E2,5.594074665E1 +1.740430000E2,6.258802116E1 +1.743030000E2,5.773122794E1 +1.745600000E2,5.533899998E1 +1.748290000E2,5.069657364E1 +1.750850000E2,6.285550191E1 +1.753480000E2,5.470504416E1 +1.756240000E2,5.746379759E1 +1.758870000E2,5.928233462E1 +1.761350000E2,5.214791610E1 +1.763840000E2,5.260177806E1 +1.767030000E2,4.844041050E1 +1.769490000E2,5.275717684E1 +1.772330000E2,5.436891746E1 +1.774780000E2,5.441421810E1 +1.777590000E2,5.485847839E1 +1.780320000E2,5.714239097E1 +1.782910000E2,6.028837304E1 +1.785470000E2,5.706420775E1 +1.788380000E2,5.509582512E1 +1.791200000E2,5.674185072E1 +1.794340000E2,5.437491314E1 +1.796940000E2,5.696592309E1 +1.799990000E2,5.344092263E1 +1.802540000E2,5.414345246E1 +1.804960000E2,5.421992498E1 +1.808400000E2,5.317024536E1 +1.811450000E2,5.422714635E1 +1.814530000E2,5.933207779E1 +1.817720000E2,5.916706050E1 +1.820730000E2,5.685980261E1 +1.824210000E2,5.521649456E1 +1.826850000E2,5.651993888E1 +1.829810000E2,5.707596711E1 +1.832810000E2,5.464130538E1 +1.836160000E2,5.364065008E1 +1.838600000E2,5.913078622E1 +1.841080000E2,5.695541400E1 +1.843520000E2,6.237274690E1 +1.846510000E2,6.017101966E1 +1.848950000E2,5.670915019E1 +1.851380000E2,5.651470649E1 +1.854400000E2,5.919691857E1 +1.857560000E2,5.752836475E1 +1.860680000E2,6.133052078E1 +1.863670000E2,6.001801442E1 +1.866740000E2,5.871186574E1 +1.869510000E2,5.858669373E1 +1.872240000E2,5.722343490E1 +1.875200000E2,5.725198568E1 +1.877700000E2,5.560524182E1 +1.880340000E2,5.419540118E1 +1.882980000E2,6.169219144E1 +1.885790000E2,5.704261604E1 +1.888700000E2,5.651125138E1 +1.891060000E2,5.778536485E1 +1.894110000E2,5.304160496E1 +1.896990000E2,5.105254388E1 +1.900460000E2,5.338626279E1 +1.902980000E2,5.090929652E1 +1.905360000E2,5.235399183E1 +1.907970000E2,5.429173243E1 +1.910620000E2,5.376238901E1 +1.913500000E2,6.411203098E1 +1.916020000E2,6.235211697E1 +1.919100000E2,5.719243884E1 +1.922140000E2,5.965550680E1 +1.925010000E2,5.850063986E1 +1.928110000E2,6.013906156E1 +1.930480000E2,5.912633730E1 +1.934000000E2,5.860712099E1 +1.936870000E2,5.944287516E1 +1.939980000E2,5.676076088E1 +1.942520000E2,5.712881871E1 +1.945490000E2,5.515631677E1 +1.948870000E2,5.670925955E1 +1.951320000E2,5.768263389E1 +1.954210000E2,5.735243887E1 +1.957290000E2,5.883798740E1 +1.960030000E2,5.654393164E1 +1.963340000E2,5.345251733E1 +1.966710000E2,5.034487882E1 +1.969060000E2,5.741493139E1 +1.971980000E2,5.877434013E1 +1.974210000E2,5.965387227E1 +1.977200000E2,6.306941384E1 +1.979730000E2,6.004201692E1 +1.982230000E2,6.106500017E1 +1.984800000E2,5.674857861E1 +1.987290000E2,6.020914127E1 +1.990680000E2,6.067289060E1 +1.993460000E2,5.996658083E1 +1.996390000E2,5.676340490E1 +1.999500000E2,5.612304129E1 +2.002130000E2,6.289766509E1 +2.005150000E2,5.720971103E1 +2.008280000E2,5.752136939E1 +2.010940000E2,6.058659890E1 +2.013440000E2,5.618430636E1 +2.016270000E2,6.056271249E1 +2.019400000E2,5.729198827E1 +2.022100000E2,5.793084452E1 +2.025070000E2,5.787194228E1 +2.027910000E2,5.959620014E1 +2.030940000E2,6.012062596E1 +2.033180000E2,6.276377758E1 +2.036210000E2,5.834405857E1 +2.039320000E2,5.545225289E1 +2.042050000E2,5.829439447E1 +2.044730000E2,5.799912649E1 +2.047970000E2,5.444896398E1 +2.050680000E2,5.743866699E1 +2.053150000E2,5.862448994E1 +2.055880000E2,5.778478934E1 +2.058890000E2,5.527981007E1 +2.061620000E2,5.742523507E1 +2.064580000E2,5.472188821E1 +2.067100000E2,6.202721053E1 +2.069630000E2,5.861698013E1 +2.072080000E2,6.294616718E1 +2.074730000E2,6.321186761E1 +2.077380000E2,5.776609523E1 +2.080390000E2,6.061292698E1 +2.083320000E2,5.857532480E1 +2.085870000E2,5.800369352E1 +2.088450000E2,5.977447345E1 +2.091070000E2,5.957010157E1 +2.093520000E2,6.145770306E1 +2.096060000E2,6.176056517E1 +2.098580000E2,6.033519811E1 +2.100970000E2,6.429628489E1 +2.103980000E2,6.215353584E1 +2.106470000E2,6.299048914E1 +2.109300000E2,6.133544133E1 +2.112010000E2,5.397487394E1 +2.114250000E2,5.313920655E1 +2.116740000E2,5.552710709E1 +2.119140000E2,5.692289703E1 +2.121730000E2,5.618691953E1 +2.124220000E2,5.402804715E1 +2.127170000E2,5.390450402E1 +2.129570000E2,5.652515030E1 +2.132580000E2,5.490504921E1 +2.135120000E2,5.485761082E1 +2.137850000E2,6.486277416E1 +2.140520000E2,6.121826472E1 +2.143580000E2,6.355465948E1 +2.146390000E2,5.534291145E1 +2.148790000E2,6.610858745E1 +2.151670000E2,5.617739728E1 +2.154670000E2,5.426651762E1 +2.157300000E2,5.840247716E1 +2.160830000E2,5.257749691E1 +2.163200000E2,6.345809118E1 +2.165810000E2,6.020490407E1 +2.168390000E2,5.603372378E1 +2.170870000E2,5.452432165E1 +2.173530000E2,5.679931822E1 +2.176220000E2,6.225558234E1 +2.179360000E2,5.991886985E1 +2.182430000E2,6.307902574E1 +2.184780000E2,6.764692456E1 +2.187700000E2,6.696013302E1 +2.190280000E2,6.419552300E1 +2.193390000E2,6.401831507E1 +2.196000000E2,6.317016249E1 +2.198590000E2,6.093052958E1 +2.201380000E2,6.446513941E1 +2.204220000E2,6.075454080E1 +2.206690000E2,6.712020778E1 +2.209300000E2,5.440050354E1 +2.212550000E2,5.627963451E1 +2.215550000E2,6.358778444E1 +2.217990000E2,5.793661873E1 +2.220730000E2,6.448679664E1 +2.223050000E2,5.844994198E1 +2.226510000E2,5.802583418E1 +2.229440000E2,5.848297014E1 +2.231840000E2,6.170695891E1 +2.234220000E2,6.201301769E1 +2.236630000E2,6.049179870E1 +2.239600000E2,6.316843106E1 +2.242020000E2,5.818837652E1 +2.245150000E2,6.411353278E1 +2.248330000E2,6.458398711E1 +2.250670000E2,6.303280227E1 +2.253240000E2,6.378696379E1 +2.255670000E2,6.157533943E1 +2.259260000E2,5.845901257E1 +2.261910000E2,5.623331182E1 +2.264460000E2,5.550822889E1 +2.267020000E2,5.907003722E1 +2.270220000E2,6.300043778E1 +2.273130000E2,5.934584116E1 +2.275640000E2,5.367094537E1 +2.278520000E2,6.260544714E1 +2.281140000E2,5.666507163E1 +2.283970000E2,6.099713971E1 +2.287020000E2,5.943082312E1 +2.289450000E2,6.095935321E1 +2.292950000E2,5.939706013E1 +2.296230000E2,5.612117806E1 +2.299220000E2,5.805831404E1 +2.301570000E2,5.496048372E1 +2.304070000E2,5.335836124E1 +2.306490000E2,5.043808989E1 +2.309270000E2,4.778025574E1 +2.311680000E2,4.613189565E1 +2.314100000E2,4.740314381E1 +2.316580000E2,5.230056147E1 +2.319150000E2,5.672989332E1 +2.321590000E2,6.081799709E1 +2.325030000E2,5.909736866E1 +2.327570000E2,5.528762811E1 +2.330520000E2,6.623131701E1 +2.333360000E2,6.376149752E1 +2.335730000E2,6.088376871E1 +2.338700000E2,6.235681388E1 +2.341160000E2,6.060610548E1 +2.343930000E2,5.779254532E1 +2.346370000E2,5.570043106E1 +2.349010000E2,6.172637016E1 +2.351520000E2,5.865545525E1 +2.354420000E2,6.250465685E1 +2.356850000E2,6.494272879E1 +2.359310000E2,6.075163542E1 +2.361840000E2,5.742858606E1 +2.364460000E2,5.756917813E1 +2.366990000E2,6.169927684E1 +2.370080000E2,5.540268710E1 +2.373040000E2,5.484088652E1 +2.376000000E2,5.732112773E1 +2.378800000E2,5.184194161E1 +2.381270000E2,5.604168635E1 +2.383910000E2,5.644051218E1 +2.387130000E2,6.049774032E1 +2.390290000E2,6.303013407E1 +2.392800000E2,6.115111046E1 +2.395770000E2,6.294174883E1 +2.398740000E2,6.716012591E1 +2.401880000E2,7.075117191E1 +2.404890000E2,6.435561631E1 +2.407550000E2,5.593172595E1 +2.410720000E2,5.781614361E1 +2.413350000E2,5.497792445E1 +2.416080000E2,5.569244646E1 +2.418870000E2,5.408109683E1 +2.421100000E2,5.687440525E1 +2.424230000E2,6.415333296E1 +2.427170000E2,6.528722740E1 +2.429900000E2,6.229384329E1 +2.432350000E2,5.452507698E1 +2.434960000E2,5.248331654E1 +2.437450000E2,5.069826347E1 +2.439880000E2,4.989889277E1 +2.442610000E2,5.196931346E1 +2.445130000E2,4.988417717E1 +2.448120000E2,5.950968466E1 +2.451200000E2,5.725324421E1 +2.454210000E2,5.902908729E1 +2.456980000E2,5.857784521E1 +2.459650000E2,5.154496059E1 +2.462670000E2,5.316738342E1 +2.465660000E2,5.681338179E1 +2.468580000E2,5.486468116E1 +2.471080000E2,5.378622946E1 +2.473840000E2,5.263910847E1 +2.477040000E2,5.102724000E1 +2.479590000E2,4.958128022E1 +2.482070000E2,5.621813465E1 +2.486190000E2,5.553111013E1 +2.489120000E2,5.711728514E1 +2.491630000E2,6.098223102E1 +2.494610000E2,5.812970142E1 +2.497290000E2,5.874411947E1 +2.500090000E2,6.058797235E1 +2.503160000E2,5.921850964E1 +2.506300000E2,5.825659244E1 +2.508940000E2,5.902074554E1 +2.512250000E2,5.857720223E1 +2.514860000E2,5.834259509E1 +2.517560000E2,5.664723408E1 +2.520110000E2,6.245873243E1 +2.522800000E2,6.018081628E1 +2.525490000E2,6.060905480E1 +2.527980000E2,6.098924059E1 +2.530310000E2,6.604497204E1 +2.532750000E2,5.762503683E1 +2.535750000E2,5.946675250E1 +2.538150000E2,5.696283688E1 +2.541120000E2,5.795434272E1 +2.543420000E2,5.641662406E1 +2.546470000E2,6.001503419E1 +2.549610000E2,5.913147779E1 +2.552050000E2,5.772050526E1 +2.554250000E2,5.986895040E1 +2.557400000E2,4.836792039E1 +2.560130000E2,4.818172752E1 +2.563450000E2,5.244597112E1 +2.566130000E2,5.174954560E1 +2.568650000E2,5.165225717E1 +2.571100000E2,4.865803315E1 +2.573530000E2,4.773689375E1 +2.576460000E2,5.375353685E1 +2.579030000E2,5.630041837E1 +2.582540000E2,5.390583403E1 +2.585030000E2,5.686416101E1 +2.588120000E2,5.880170204E1 +2.590630000E2,5.373023259E1 +2.593590000E2,6.009405077E1 +2.596120000E2,5.710673366E1 +2.598560000E2,5.891240789E1 +2.600990000E2,5.960890080E1 +2.603510000E2,6.728594423E1 +2.606060000E2,6.334340199E1 +2.609270000E2,6.082175509E1 +2.611830000E2,5.750083619E1 +2.615060000E2,5.667484133E1 +2.618070000E2,6.152760439E1 +2.620430000E2,5.697586540E1 +2.623440000E2,5.674189037E1 +2.625730000E2,5.539036876E1 +2.628210000E2,4.901745514E1 +2.631270000E2,5.264848299E1 +2.634230000E2,5.038277380E1 +2.636750000E2,5.149234245E1 +2.639170000E2,4.604207892E1 +2.641630000E2,5.735184247E1 +2.644630000E2,5.659523444E1 +2.648080000E2,5.697978691E1 +2.650640000E2,5.691301726E1 +2.653540000E2,5.696584583E1 +2.656480000E2,5.138210199E1 +2.659030000E2,5.345758564E1 +2.661640000E2,5.363588256E1 +2.664240000E2,5.471656895E1 +2.666720000E2,5.140760448E1 +2.669400000E2,5.329005020E1 +2.671940000E2,5.422388323E1 +2.674460000E2,5.133919880E1 +2.677140000E2,5.690801972E1 +2.681270000E2,5.964609863E1 +2.684030000E2,6.167901240E1 +2.686970000E2,5.297205648E1 +2.689350000E2,5.530010894E1 +2.692310000E2,5.450325538E1 +2.694700000E2,5.391690578E1 +2.697660000E2,5.420666075E1 +2.700010000E2,4.962510480E1 +2.702390000E2,5.010058679E1 +2.705460000E2,5.345147952E1 +2.708590000E2,5.574757195E1 +2.711770000E2,5.571208034E1 +2.714720000E2,5.288998421E1 +2.717170000E2,5.214438195E1 +2.720190000E2,5.232798978E1 +2.723080000E2,6.045263056E1 +2.725500000E2,5.870512300E1 +2.727930000E2,5.577911819E1 +2.730760000E2,5.501493048E1 +2.733800000E2,5.433475343E1 +2.736720000E2,5.293457700E1 +2.739070000E2,5.486483547E1 +2.741780000E2,6.008208952E1 +2.745050000E2,5.845984546E1 +2.748040000E2,5.900764997E1 +2.751070000E2,5.760203457E1 +2.754240000E2,5.795024632E1 +2.757280000E2,6.182748257E1 +2.760340000E2,5.683205968E1 +2.763350000E2,5.821402367E1 +2.766080000E2,5.520672517E1 +2.768980000E2,5.645892504E1 +2.772030000E2,5.463906896E1 +2.775200000E2,5.412722413E1 +2.777910000E2,5.268636730E1 +2.780870000E2,5.566734184E1 +2.783350000E2,5.745256931E1 +2.785810000E2,5.645167582E1 +2.788270000E2,5.925831320E1 +2.790840000E2,5.591320738E1 +2.793690000E2,5.632637646E1 +2.796200000E2,6.252281740E1 +2.799120000E2,5.547643277E1 +2.801570000E2,6.021611275E1 +2.804580000E2,5.732676882E1 +2.808110000E2,5.909573770E1 +2.810780000E2,6.005240162E1 +2.813300000E2,5.965022185E1 +2.815820000E2,6.135840817E1 +2.818790000E2,5.970629096E1 +2.821590000E2,5.879025140E1 +2.824010000E2,5.747324456E1 +2.826520000E2,5.726379384E1 +2.828950000E2,5.871306541E1 +2.831920000E2,6.188032415E1 +2.834710000E2,6.066582287E1 +2.837110000E2,5.950933244E1 +2.840350000E2,5.901018860E1 +2.843000000E2,5.761182729E1 +2.846050000E2,5.446909438E1 +2.848570000E2,5.349219985E1 +2.851700000E2,5.015518748E1 +2.854330000E2,5.374610595E1 +2.857270000E2,5.877223624E1 +2.860310000E2,5.644512377E1 +2.863080000E2,5.711327205E1 +2.865540000E2,5.655239592E1 +2.867930000E2,5.833716670E1 +2.871150000E2,5.417781453E1 +2.874030000E2,5.332227783E1 +2.876540000E2,5.146836736E1 +2.879540000E2,5.452228720E1 +2.881970000E2,5.025406823E1 +2.884910000E2,5.490648375E1 +2.887280000E2,5.506242221E1 +2.890210000E2,5.400927835E1 +2.892600000E2,5.781126179E1 +2.895430000E2,6.384283902E1 +2.898470000E2,6.340395874E1 +2.901430000E2,5.555395770E1 +2.904560000E2,5.514224078E1 +2.907530000E2,5.346566906E1 +2.910000000E2,5.948406902E1 +2.912590000E2,6.362292628E1 +2.915300000E2,6.175065463E1 +2.918240000E2,6.129817533E1 +2.920790000E2,6.317618325E1 +2.923350000E2,6.137933812E1 +2.926010000E2,5.620086793E1 +2.928740000E2,5.715913846E1 +2.931780000E2,7.028942499E1 +2.934620000E2,6.774357618E1 +2.937770000E2,6.989950413E1 +2.940270000E2,6.631119439E1 +2.943030000E2,6.956920703E1 +2.945570000E2,6.352936554E1 +2.948100000E2,6.981123112E1 +2.951150000E2,5.607171784E1 +2.953950000E2,5.394017247E1 +2.956980000E2,7.110851253E1 +2.959460000E2,6.978848906E1 +2.961900000E2,5.446752823E1 +2.965090000E2,6.309281755E1 +2.968110000E2,6.647752141E1 +2.971300000E2,6.773248230E1 +2.974240000E2,6.289421429E1 +2.977060000E2,5.998905240E1 +2.979500000E2,6.016152671E1 +2.981940000E2,5.851705490E1 +2.984880000E2,6.506323043E1 +2.987430000E2,5.702053645E1 +2.990110000E2,4.890963733E1 +2.993040000E2,5.105737182E1 +2.995650000E2,4.950865545E1 +2.998150000E2,4.713536225E1 +3.000860000E2,6.170154569E1 +3.003780000E2,5.697995513E1 +3.006750000E2,6.496205179E1 +3.009180000E2,5.585602045E1 +3.012120000E2,5.317421587E1 +3.015130000E2,5.532213468E1 +3.017840000E2,5.371543715E1 +3.020520000E2,6.741141038E1 +3.023220000E2,6.638671809E1 +3.025730000E2,5.833940482E1 +3.028700000E2,6.272205104E1 +3.031230000E2,6.150676490E1 +3.034050000E2,6.571826996E1 +3.036710000E2,6.387001854E1 +3.039460000E2,5.704179120E1 +3.042380000E2,5.452420344E1 +3.044730000E2,6.911436343E1 +3.047670000E2,6.747337761E1 +3.050070000E2,6.642457947E1 +3.053010000E2,6.704052830E1 +3.055360000E2,6.335116163E1 +3.058350000E2,6.452879154E1 +3.061310000E2,6.588892290E1 +3.064460000E2,6.065604325E1 +3.066970000E2,5.884139521E1 +3.069890000E2,6.115548360E1 +3.072650000E2,5.474220631E1 +3.075290000E2,5.525228633E1 +3.077890000E2,5.546520153E1 +3.080280000E2,5.799541194E1 +3.083270000E2,5.467819740E1 +3.086250000E2,5.227747322E1 +3.089260000E2,5.802220937E1 +3.091970000E2,5.383690373E1 +3.095040000E2,5.794687305E1 +3.097810000E2,5.426386053E1 +3.100000000E2,5.745164866E1 +3.103300000E2,5.475501144E1 +3.106240000E2,5.154802151E1 +3.108750000E2,5.434380726E1 +3.111540000E2,5.533246388E1 +3.114150000E2,5.554218476E1 +3.116740000E2,5.375334275E1 +3.119200000E2,5.727216331E1 +3.121680000E2,5.235396651E1 +3.124720000E2,6.207307801E1 +3.127180000E2,6.488896117E1 +3.130530000E2,6.168970511E1 +3.133080000E2,6.010687101E1 +3.135950000E2,6.305386662E1 +3.138880000E2,6.214030252E1 +3.141410000E2,5.907513997E1 +3.143960000E2,6.064308138E1 +3.146480000E2,6.195321339E1 +3.148870000E2,6.088765310E1 +3.151830000E2,5.906360624E1 +3.154280000E2,5.864981040E1 +3.157360000E2,5.824424792E1 +3.159750000E2,5.826399021E1 +3.163740000E2,6.051726612E1 +3.166320000E2,6.011967909E1 +3.168940000E2,5.577110603E1 +3.172010000E2,5.372586587E1 +3.174460000E2,5.537091967E1 +3.176890000E2,5.504912063E1 +3.179320000E2,5.264203521E1 +3.182150000E2,5.344854544E1 +3.184600000E2,5.656777951E1 +3.187200000E2,5.398435402E1 +3.189820000E2,5.410695962E1 +3.192460000E2,5.344168860E1 +3.195780000E2,5.697626360E1 +3.198350000E2,6.073105615E1 +3.200880000E2,6.621432780E1 +3.203460000E2,6.597785722E1 +3.205980000E2,5.907542432E1 +3.208920000E2,5.702769809E1 +3.211760000E2,6.207459825E1 +3.214520000E2,5.921715282E1 +3.217010000E2,5.501368146E1 +3.220030000E2,5.927746858E1 +3.223090000E2,5.878714279E1 +3.226530000E2,6.209253703E1 +3.229180000E2,5.801419316E1 +3.231660000E2,6.150680788E1 +3.234110000E2,5.950436139E1 +3.236660000E2,5.694006868E1 +3.239890000E2,5.964691948E1 +3.242420000E2,6.322261269E1 +3.245070000E2,5.967413832E1 +3.247540000E2,5.743115651E1 +3.250010000E2,5.693057833E1 +3.252760000E2,5.076009335E1 +3.255600000E2,5.432440321E1 +3.258270000E2,5.728583073E1 +3.262160000E2,6.158050311E1 +3.264570000E2,5.788548067E1 +3.267330000E2,5.661485397E1 +3.270280000E2,5.698735139E1 +3.272870000E2,5.428158234E1 +3.275550000E2,5.401192370E1 +3.278320000E2,5.894424302E1 +3.281050000E2,5.279140275E1 +3.283850000E2,5.366788524E1 +3.286760000E2,5.569462346E1 +3.289750000E2,5.484501656E1 +3.292730000E2,5.654335493E1 +3.295550000E2,5.483429560E1 +3.298560000E2,5.516099131E1 +3.301720000E2,5.150081287E1 +3.304560000E2,5.126263973E1 +3.307930000E2,4.943715566E1 +3.310330000E2,5.297477083E1 +3.312800000E2,4.994759883E1 +3.316030000E2,5.283028939E1 +3.318860000E2,5.150402936E1 +3.321790000E2,5.777668868E1 +3.325470000E2,5.446937149E1 +3.328030000E2,5.754474494E1 +3.330410000E2,5.437750931E1 +3.333210000E2,5.378201308E1 +3.335760000E2,5.486825362E1 +3.338240000E2,5.338123539E1 +3.340700000E2,5.704649160E1 +3.343740000E2,5.576563429E1 +3.346640000E2,5.503590574E1 +3.349650000E2,5.539431503E1 +3.352080000E2,5.782097549E1 +3.355080000E2,5.260852375E1 +3.358690000E2,6.012616228E1 +3.361400000E2,5.534922411E1 +3.363810000E2,5.436765301E1 +3.366230000E2,5.007736554E1 +3.368850000E2,5.304270830E1 +3.371340000E2,5.106682022E1 +3.373960000E2,5.491262243E1 +3.376890000E2,5.891119644E1 +3.379320000E2,5.554676164E1 +3.382420000E2,5.491809401E1 +3.385700000E2,6.003743295E1 +3.389490000E2,5.964265847E1 +3.392140000E2,6.009419780E1 +3.394780000E2,5.950800538E1 +3.397810000E2,5.514081916E1 +3.400260000E2,5.654810222E1 +3.403230000E2,5.919098275E1 +3.405600000E2,5.937137097E1 +3.408650000E2,5.885711760E1 +3.411560000E2,6.122434193E1 +3.414060000E2,6.101494213E1 +3.416650000E2,5.685059098E1 +3.419710000E2,4.988163583E1 +3.423360000E2,5.097871962E1 +3.426300000E2,6.097968551E1 +3.429260000E2,5.246223058E1 +3.431760000E2,5.140448000E1 +3.434570000E2,5.162147831E1 +3.436910000E2,5.437509469E1 +3.439650000E2,5.588289675E1 +3.442010000E2,5.342482218E1 +3.444930000E2,5.621155564E1 +3.447310000E2,5.753713233E1 +3.450340000E2,5.873821374E1 +3.453240000E2,5.674648484E1 +3.455770000E2,5.843857274E1 +3.458770000E2,6.170678128E1 +3.461770000E2,5.848319050E1 +3.464240000E2,5.996271814E1 +3.467290000E2,5.583139448E1 +3.470000000E2,5.558324990E1 +3.472360000E2,5.638821787E1 +3.474880000E2,6.015129432E1 +3.477550000E2,6.074195357E1 +3.480530000E2,6.258101891E1 +3.483260000E2,6.280209300E1 +3.486840000E2,5.935598721E1 +3.489370000E2,6.423635683E1 +3.492060000E2,7.026891453E1 +3.495130000E2,5.477771858E1 +3.498240000E2,6.143080763E1 +3.500700000E2,6.077206860E1 +3.503130000E2,5.816670512E1 +3.506030000E2,6.220374728E1 +3.509040000E2,6.435510927E1 +3.511560000E2,6.387906049E1 +3.514240000E2,6.324188625E1 +3.517710000E2,6.217871174E1 +3.520510000E2,6.349767138E1 +3.523000000E2,5.947763114E1 +3.525840000E2,5.623947938E1 +3.528810000E2,5.940245648E1 +3.531830000E2,5.323006485E1 +3.534790000E2,4.756673680E1 +3.537830000E2,5.761743216E1 +3.540870000E2,5.701856444E1 +3.543720000E2,5.507707077E1 +3.546320000E2,5.561457107E1 +3.549330000E2,6.036785424E1 +3.552860000E2,5.818319920E1 +3.555390000E2,5.636477080E1 +3.557840000E2,5.686236286E1 +3.560330000E2,6.137502104E1 +3.563290000E2,6.039421004E1 +3.565710000E2,5.873926214E1 +3.568160000E2,5.984737812E1 +3.570890000E2,5.898549785E1 +3.573200000E2,5.804358229E1 +3.576080000E2,5.178825198E1 +3.578380000E2,5.333798630E1 +3.581470000E2,5.663121054E1 +3.584860000E2,5.705169894E1 +3.587470000E2,5.488627438E1 +3.590020000E2,5.493171173E1 +3.592590000E2,5.280801534E1 +3.595110000E2,5.919356657E1 +3.597710000E2,6.061921525E1 +3.600770000E2,5.781838960E1 +3.603810000E2,5.824405535E1 +3.606410000E2,5.734273072E1 +3.608930000E2,5.860073318E1 +3.611440000E2,5.158577335E1 +3.614110000E2,5.569804167E1 +3.617550000E2,5.732029627E1 +3.620530000E2,5.599725951E1 +3.623260000E2,5.427140428E1 +3.625700000E2,5.439119305E1 +3.628680000E2,5.768088704E1 +3.631160000E2,5.322266305E1 +3.634170000E2,5.611257515E1 +3.637150000E2,5.466283243E1 +3.639540000E2,5.648497192E1 +3.642520000E2,5.982456496E1 +3.644910000E2,5.683499776E1 +3.648080000E2,5.424977228E1 +3.650550000E2,5.261749952E1 +3.653010000E2,5.976464589E1 +3.655400000E2,5.630627545E1 +3.658370000E2,5.855663855E1 +3.660660000E2,5.839517218E1 +3.663050000E2,5.701336937E1 +3.666100000E2,6.057417753E1 +3.668530000E2,5.660058929E1 +3.671060000E2,5.360906173E1 +3.673270000E2,5.766761713E1 +3.676020000E2,5.473947199E1 +3.679270000E2,5.730791892E1 +3.681990000E2,5.368134624E1 +3.685210000E2,5.122725302E1 +3.688180000E2,5.413949330E1 +3.690720000E2,5.953240184E1 +3.693650000E2,5.834363401E1 +3.696110000E2,4.952962201E1 +3.698620000E2,6.082605721E1 +3.701240000E2,5.541205242E1 +3.703840000E2,5.595936781E1 +3.706570000E2,5.751180267E1 +3.709050000E2,5.510413826E1 +3.712530000E2,5.236304209E1 +3.715330000E2,5.429686706E1 +3.717680000E2,5.365135821E1 +3.720680000E2,5.442146139E1 +3.723070000E2,5.193301537E1 +3.726070000E2,5.573089397E1 +3.728540000E2,5.084704353E1 +3.731070000E2,5.244752708E1 +3.734250000E2,5.501438711E1 +3.737160000E2,5.701937821E1 +3.739830000E2,5.913008265E1 +3.743030000E2,6.329763996E1 +3.745490000E2,5.828010903E1 +3.748110000E2,5.514928454E1 +3.750560000E2,5.535724603E1 +3.753250000E2,6.062318511E1 +3.756820000E2,5.853801057E1 +3.759720000E2,6.218740595E1 +3.762560000E2,6.130322227E1 +3.764780000E2,5.705598438E1 +3.767430000E2,5.675025411E1 +3.770350000E2,5.562309411E1 +3.773330000E2,6.171478403E1 +3.776660000E2,5.752069737E1 +3.779640000E2,5.869913239E1 +3.782130000E2,5.802158707E1 +3.785030000E2,5.920699755E1 +3.787580000E2,5.984700757E1 +3.790120000E2,5.874214142E1 +3.792820000E2,5.792329599E1 +3.795460000E2,6.240429581E1 +3.798520000E2,5.924961400E1 +3.800960000E2,5.655548581E1 +3.803510000E2,5.997047167E1 +3.806590000E2,5.894207932E1 +3.810310000E2,5.556916558E1 +3.813250000E2,5.709965860E1 +3.815810000E2,5.724657649E1 +3.818690000E2,5.634885250E1 +3.821660000E2,5.381597934E1 +3.824070000E2,5.409431797E1 +3.827020000E2,5.558304395E1 +3.829400000E2,5.836087965E1 +3.832380000E2,5.621848827E1 +3.834740000E2,5.756105430E1 +3.837670000E2,5.972981317E1 +3.840620000E2,6.110722903E1 +3.842970000E2,6.011338906E1 +3.846120000E2,6.632548976E1 +3.849300000E2,5.632542095E1 +3.852340000E2,5.660090160E1 +3.854760000E2,5.637042997E1 +3.857700000E2,6.483820819E1 +3.860160000E2,6.294386681E1 +3.862760000E2,6.248693097E1 +3.865740000E2,5.966646580E1 +3.868130000E2,5.884596060E1 +3.871230000E2,6.069045984E1 +3.874660000E2,5.535227762E1 +3.877260000E2,5.453589064E1 +3.879920000E2,5.803286513E1 +3.882920000E2,6.338575111E1 +3.885370000E2,6.297665471E1 +3.888380000E2,6.078963895E1 +3.890870000E2,6.078711186E1 +3.893350000E2,5.918580133E1 +3.896040000E2,5.645003340E1 +3.899070000E2,5.868887980E1 +3.901560000E2,5.816727924E1 +3.904840000E2,5.908711574E1 +3.907830000E2,5.165109059E1 +3.910410000E2,5.747977046E1 +3.913230000E2,5.600926578E1 +3.916170000E2,5.743239537E1 +3.918580000E2,5.999528635E1 +3.921650000E2,5.924448814E1 +3.924670000E2,6.347749271E1 +3.927590000E2,6.285842009E1 +3.929960000E2,6.439104552E1 +3.933010000E2,6.092208558E1 +3.935450000E2,5.889760176E1 +3.939100000E2,5.798312040E1 +3.941770000E2,5.909426563E1 +3.944250000E2,5.971090911E1 +3.946810000E2,5.379436409E1 +3.949270000E2,5.134339741E1 +3.951700000E2,5.739586279E1 +3.954270000E2,5.255911571E1 +3.956850000E2,5.149310319E1 +3.959500000E2,5.723685944E1 +3.962270000E2,5.622087783E1 +3.964720000E2,6.119098643E1 +3.967310000E2,6.249797436E1 +3.970320000E2,5.838309249E1 +3.973440000E2,5.720898847E1 +3.976100000E2,5.357982700E1 +3.978600000E2,5.091452983E1 +3.981070000E2,4.781274510E1 +3.983520000E2,4.684320786E1 +3.986530000E2,4.867937405E1 +3.988970000E2,4.947454895E1 +3.991740000E2,4.941937240E1 +3.994180000E2,5.206925818E1 +3.997200000E2,5.099596962E1 +3.999720000E2,5.059119317E1 +4.002350000E2,4.980275756E1 +4.004940000E2,5.514017077E1 +4.008060000E2,5.354499430E1 +4.011150000E2,5.377825353E1 +4.013980000E2,5.657928040E1 +4.016460000E2,6.437756844E1 +4.019070000E2,6.072529486E1 +4.021970000E2,5.876291143E1 +4.024430000E2,6.118567430E1 +4.027460000E2,5.925186578E1 +4.030590000E2,5.727531678E1 +4.033610000E2,6.211123432E1 +4.036680000E2,6.041950332E1 +4.039230000E2,6.161200416E1 +4.041780000E2,6.047480336E1 +4.044620000E2,5.905442986E1 +4.047060000E2,5.729915709E1 +4.049630000E2,6.020933408E1 +4.052500000E2,5.845152603E1 +4.055600000E2,5.814304967E1 +4.058210000E2,5.866194002E1 +4.060640000E2,5.736420578E1 +4.063180000E2,6.107395805E1 +4.065790000E2,5.985269852E1 +4.069480000E2,5.745859610E1 +4.072050000E2,5.693680110E1 +4.074960000E2,6.165201185E1 +4.077470000E2,6.131132241E1 +4.079970000E2,5.824414723E1 +4.083050000E2,5.958451387E1 +4.085600000E2,5.739792126E1 +4.088150000E2,5.573389816E1 +4.090850000E2,5.530698039E1 +4.093810000E2,5.634371531E1 +4.096660000E2,5.880658089E1 +4.099920000E2,5.804298004E1 +4.102870000E2,5.688352401E1 +4.106310000E2,5.573115839E1 +4.109280000E2,5.368053116E1 +4.112180000E2,5.474384188E1 +4.114650000E2,5.380195893E1 +4.117660000E2,5.718608674E1 +4.120140000E2,5.703743686E1 +4.122910000E2,5.985228158E1 +4.125620000E2,6.278694860E1 +4.128210000E2,5.839550633E1 +4.130600000E2,6.029373556E1 +4.133710000E2,5.711050636E1 +4.136150000E2,5.200468588E1 +4.138820000E2,5.769230508E1 +4.141370000E2,5.333759168E1 +4.143860000E2,5.632377961E1 +4.146570000E2,5.647744894E1 +4.149040000E2,5.667945226E1 +4.151840000E2,5.669404445E1 +4.154420000E2,6.072374556E1 +4.157420000E2,5.606444578E1 +4.159850000E2,5.623596320E1 +4.162830000E2,5.264542492E1 +4.165340000E2,5.359803767E1 +4.168600000E2,5.691340897E1 +4.171060000E2,5.636326143E1 +4.173490000E2,6.276141082E1 +4.176080000E2,6.197471417E1 +4.178580000E2,5.777170976E1 +4.181050000E2,5.407671770E1 +4.183760000E2,4.795453020E1 +4.186580000E2,5.871005652E1 +4.188870000E2,6.069158080E1 +4.191320000E2,6.112379328E1 +4.193750000E2,5.584116633E1 +4.196280000E2,6.302854070E1 +4.199610000E2,6.640457067E1 +4.202240000E2,6.337314603E1 +4.205160000E2,5.904470105E1 +4.208200000E2,5.799078909E1 +4.210810000E2,5.975635789E1 +4.213260000E2,6.334088587E1 +4.215900000E2,5.849627934E1 +4.218550000E2,5.894070219E1 +4.221030000E2,5.961371776E1 +4.223550000E2,5.281830949E1 +4.225970000E2,4.892580508E1 +4.229130000E2,5.950646935E1 +4.232610000E2,6.303011111E1 +4.235630000E2,6.030515180E1 +4.238060000E2,5.832387195E1 +4.240560000E2,6.126571743E1 +4.243280000E2,5.961805347E1 +4.245710000E2,5.916464366E1 +4.248300000E2,6.404431780E1 +4.251020000E2,6.161392817E1 +4.253630000E2,6.303875005E1 +4.256110000E2,6.294329578E1 +4.258560000E2,6.495739223E1 +4.261620000E2,6.352748415E1 +4.265140000E2,6.360144813E1 +4.267650000E2,6.320185268E1 +4.270250000E2,6.598206760E1 +4.272910000E2,5.736158392E1 +4.275300000E2,5.632655800E1 +4.277760000E2,5.626186588E1 +4.280650000E2,5.992298879E1 +4.283460000E2,5.976814640E1 +4.285960000E2,5.617047451E1 +4.288540000E2,5.410240194E1 +4.291290000E2,5.524345530E1 +4.293550000E2,5.025485629E1 +4.297050000E2,5.094849624E1 +4.299600000E2,5.349595208E1 +4.302230000E2,5.668766668E1 +4.304690000E2,5.470073040E1 +4.307330000E2,5.808421323E1 +4.310240000E2,5.815977776E1 +4.312740000E2,5.751031291E1 +4.315190000E2,6.045600028E1 +4.318300000E2,5.967896339E1 +4.320980000E2,5.746835753E1 +4.324020000E2,5.874054152E1 +4.327010000E2,5.770096959E1 +4.330460000E2,5.851412717E1 +4.333220000E2,5.970473393E1 +4.335930000E2,6.024030776E1 +4.338530000E2,5.564089573E1 +4.341340000E2,5.328000065E1 +4.343790000E2,5.522789934E1 +4.346930000E2,5.271905966E1 +4.349910000E2,5.685384424E1 +4.352400000E2,5.751176106E1 +4.355350000E2,5.654290580E1 +4.357760000E2,5.976937629E1 +4.360780000E2,5.445311615E1 +4.363520000E2,5.460006243E1 +4.366010000E2,5.402958946E1 +4.369120000E2,5.611325616E1 +4.371660000E2,5.675575065E1 +4.374120000E2,5.605818704E1 +4.377070000E2,5.614720111E1 +4.379470000E2,5.596280974E1 +4.382450000E2,5.764305460E1 +4.384820000E2,6.015340826E1 +4.387240000E2,6.073594369E1 +4.390310000E2,5.846982437E1 +4.393110000E2,5.837342754E1 +4.396160000E2,5.758988397E1 +4.398810000E2,5.375393273E1 +4.401700000E2,5.590416510E1 +4.404180000E2,5.649267014E1 +4.406570000E2,5.809884175E1 +4.409200000E2,5.934788425E1 +4.411750000E2,5.883690392E1 +4.414270000E2,5.465512306E1 +4.416780000E2,5.456039720E1 +4.419260000E2,6.053551690E1 +4.422020000E2,5.446896121E1 +4.425270000E2,5.304300238E1 +4.428480000E2,5.413537656E1 +4.431230000E2,5.590535088E1 +4.433740000E2,5.516889265E1 +4.436180000E2,5.375803139E1 +4.439250000E2,5.440731706E1 +4.441670000E2,5.378894171E1 +4.444170000E2,5.676009311E1 +4.447160000E2,5.433224316E1 +4.449620000E2,5.431777666E1 +4.452100000E2,5.220353562E1 +4.454560000E2,5.525232641E1 +4.456950000E2,5.348687858E1 +4.459900000E2,5.571408478E1 +4.462320000E2,5.590054486E1 +4.464840000E2,5.627503595E1 +4.467390000E2,5.824548232E1 +4.469910000E2,5.637049423E1 +4.472460000E2,5.754096885E1 +4.474930000E2,5.335865942E1 +4.477890000E2,5.765888938E1 +4.480780000E2,6.102087464E1 +4.483520000E2,6.006145593E1 +4.486510000E2,5.685958774E1 +4.489610000E2,5.748149351E1 +4.492370000E2,5.709623916E1 +4.495040000E2,5.821496279E1 +4.497570000E2,5.970222946E1 +4.500030000E2,5.750976802E1 +4.502380000E2,5.796549321E1 +4.505370000E2,5.665777454E1 +4.508330000E2,5.605038109E1 +4.510750000E2,5.504306522E1 +4.513230000E2,5.112487870E1 +4.515900000E2,5.559150914E1 +4.518300000E2,5.656933458E1 +4.520810000E2,6.082180135E1 +4.524470000E2,5.774965281E1 +4.527120000E2,5.847728207E1 +4.529730000E2,5.711434047E1 +4.532810000E2,5.503285278E1 +4.535670000E2,5.614330822E1 +4.538610000E2,6.211492489E1 +4.541040000E2,6.003078695E1 +4.543760000E2,5.766611466E1 +4.546280000E2,5.912518267E1 +4.549300000E2,5.969489895E1 +4.551760000E2,5.509558621E1 +4.554320000E2,5.963291683E1 +4.556950000E2,6.194656842E1 +4.559980000E2,6.032793642E1 +4.562390000E2,5.874022110E1 +4.565060000E2,6.016749735E1 +4.567480000E2,5.985596964E1 +4.570070000E2,5.588678859E1 +4.572660000E2,5.541792762E1 +4.575660000E2,4.969164404E1 +4.578050000E2,4.976271573E1 +4.581060000E2,5.634137812E1 +4.583500000E2,5.321783082E1 +4.586280000E2,5.816393976E1 +4.588870000E2,5.817726916E1 +4.591860000E2,5.398220140E1 +4.594690000E2,5.572842498E1 +4.597270000E2,5.759574297E1 +4.600290000E2,5.492384706E1 +4.602790000E2,5.570826682E1 +4.605780000E2,5.619496661E1 +4.608690000E2,5.993990435E1 +4.611730000E2,6.185390750E1 +4.614300000E2,6.125031183E1 +4.617390000E2,6.047450440E1 +4.621070000E2,5.913093195E1 +4.623500000E2,6.032535990E1 +4.626490000E2,5.803726699E1 +4.628910000E2,5.968748294E1 +4.631850000E2,5.792594347E1 +4.634330000E2,5.623910190E1 +4.636850000E2,6.026318401E1 +4.639240000E2,6.002593060E1 +4.641990000E2,5.694813724E1 +4.644200000E2,5.456998819E1 +4.646660000E2,5.683591124E1 +4.649070000E2,5.893829862E1 +4.652630000E2,5.637983039E1 +4.655160000E2,5.571226470E1 +4.657720000E2,5.582065666E1 +4.660510000E2,5.436378979E1 +4.663550000E2,5.697364508E1 +4.666350000E2,5.716664070E1 +4.668800000E2,6.098104772E1 +4.671260000E2,5.932872997E1 +4.673960000E2,5.573089336E1 +4.676430000E2,5.791664461E1 +4.678890000E2,5.589855895E1 +4.681490000E2,6.359324433E1 +4.685010000E2,5.902079393E1 +4.687870000E2,6.085500324E1 +4.690180000E2,6.401116813E1 +4.693190000E2,6.157634911E1 +4.695830000E2,6.068297160E1 +4.698370000E2,5.867738322E1 +4.701080000E2,6.069776659E1 +4.703530000E2,5.904983802E1 +4.706060000E2,5.642725313E1 +4.708480000E2,5.600286970E1 +4.711080000E2,5.678564623E1 +4.714020000E2,5.139543439E1 +4.717220000E2,5.924511995E1 +4.720300000E2,5.309180697E1 +4.722790000E2,5.295961103E1 +4.725820000E2,5.448425692E1 +4.728350000E2,5.346047841E1 +4.731210000E2,5.563518239E1 +4.733630000E2,5.630991562E1 +4.736070000E2,5.519344442E1 +4.738520000E2,5.696356709E1 +4.741150000E2,5.721588368E1 +4.743810000E2,5.556082681E1 +4.746430000E2,5.453201409E1 +4.749610000E2,5.621559396E1 +4.752460000E2,6.170975330E1 +4.755640000E2,6.352753975E1 +4.758660000E2,5.818774343E1 +4.761780000E2,6.177058435E1 +4.764630000E2,5.829511769E1 +4.766910000E2,5.658732029E1 +4.769520000E2,6.006113158E1 +4.772530000E2,6.022385702E1 +4.775200000E2,5.965858240E1 +4.778410000E2,5.970326758E1 +4.780960000E2,5.911597661E1 +4.783440000E2,5.656338446E1 +4.786020000E2,5.723922467E1 +4.788680000E2,5.700163516E1 +4.791490000E2,6.083416080E1 +4.794510000E2,5.899425763E1 +4.797630000E2,5.820674449E1 +4.800620000E2,5.648898879E1 +4.803380000E2,5.465743937E1 +4.806090000E2,5.006847009E1 +4.809050000E2,5.870050130E1 +4.811580000E2,5.878066343E1 +4.814060000E2,5.929414686E1 +4.817070000E2,5.758425183E1 +4.819760000E2,5.151398214E1 +4.822410000E2,5.772956896E1 +4.824880000E2,5.913153701E1 +4.827710000E2,5.814746383E1 +4.830140000E2,6.018356701E1 +4.832870000E2,5.985078792E1 +4.835070000E2,6.081307149E1 +4.837500000E2,5.810932132E1 +4.840440000E2,5.700769218E1 +4.842880000E2,5.815119989E1 +4.845920000E2,5.595850943E1 +4.849330000E2,5.891167795E1 +4.851960000E2,5.413833723E1 +4.854760000E2,6.184122004E1 +4.857700000E2,6.074653742E1 +4.860130000E2,6.033024099E1 +4.862530000E2,5.218562994E1 +4.865560000E2,5.902882093E1 +4.868150000E2,6.397338635E1 +4.870790000E2,6.543155406E1 +4.873440000E2,6.181389827E1 +4.876070000E2,6.381240883E1 +4.878770000E2,6.121521197E1 +4.882210000E2,5.780293585E1 +4.884640000E2,5.941826112E1 +4.887100000E2,6.118399944E1 +4.889830000E2,6.000089150E1 +4.892940000E2,5.873163787E1 +4.895350000E2,5.943116280E1 +4.897770000E2,5.867927357E1 +4.900230000E2,6.190584219E1 +4.903270000E2,6.313044892E1 +4.905550000E2,6.096660510E1 +4.907970000E2,5.773464228E1 +4.911090000E2,5.720144266E1 +4.914750000E2,5.797465536E1 +4.917410000E2,6.063197812E1 +4.920040000E2,5.799562897E1 +4.922950000E2,5.391853563E1 +4.925940000E2,6.053973121E1 +4.928320000E2,5.781822977E1 +4.931250000E2,6.541242849E1 +4.933660000E2,6.151252976E1 +4.936620000E2,5.962569242E1 +4.939140000E2,6.114162989E1 +4.941750000E2,6.074296596E1 +4.944160000E2,5.738425867E1 +4.947510000E2,6.084173002E1 +4.950140000E2,5.911448476E1 +4.953100000E2,6.076832164E1 +4.955530000E2,6.357047625E1 +4.958480000E2,6.344590866E1 +4.960850000E2,6.154350148E1 +4.963870000E2,5.815666478E1 +4.966770000E2,5.862350251E1 +4.969720000E2,5.162851816E1 +4.972640000E2,5.887916548E1 +4.975020000E2,6.130693279E1 +4.977480000E2,6.164914583E1 +4.980300000E2,5.689153252E1 +4.983240000E2,6.054571109E1 +4.985610000E2,5.779234792E1 +4.987980000E2,6.281334084E1 +4.991290000E2,6.074883772E1 +4.994230000E2,6.344972933E1 +4.996620000E2,6.040546490E1 +4.999570000E2,6.143019571E1 +5.002020000E2,6.117826214E1 +5.004980000E2,6.217883653E1 +5.007380000E2,6.294102819E1 +5.010930000E2,6.516475449E1 +5.013550000E2,6.119184016E1 +5.016670000E2,6.096554209E1 +5.019390000E2,6.197647057E1 +5.022530000E2,6.186754720E1 +5.025630000E2,5.954982776E1 +5.028510000E2,6.115486405E1 +5.031440000E2,6.348254173E1 +5.033820000E2,5.960570527E1 +5.036780000E2,5.977682583E1 +5.039180000E2,5.709696054E1 +5.042580000E2,6.265263203E1 +5.045140000E2,6.166583393E1 +5.047590000E2,6.184451596E1 +5.050170000E2,6.196658471E1 +5.053150000E2,6.014630927E1 +5.055610000E2,6.055201466E1 +5.058690000E2,6.189129858E1 +5.062120000E2,6.557808579E1 +5.064770000E2,6.080176744E1 +5.067370000E2,6.164107472E1 +5.069870000E2,6.497302078E1 +5.072490000E2,6.320126990E1 +5.076210000E2,6.073801439E1 +5.078780000E2,5.612097300E1 +5.081420000E2,5.978501024E1 +5.084360000E2,6.061444996E1 +5.086860000E2,6.272142993E1 +5.089270000E2,6.250458760E1 +5.092250000E2,5.860749180E1 +5.094720000E2,6.368373725E1 +5.097760000E2,6.005985592E1 +5.100780000E2,5.959557057E1 +5.103410000E2,6.085764000E1 +5.106360000E2,6.210563273E1 +5.109960000E2,6.125336704E1 +5.112590000E2,5.627814405E1 +5.115470000E2,6.253958528E1 +5.118480000E2,6.261683940E1 +5.120990000E2,5.782347554E1 +5.123560000E2,6.181201679E1 +5.126370000E2,6.425542150E1 +5.129400000E2,6.148973489E1 +5.132300000E2,6.230215374E1 +5.134720000E2,6.332855968E1 +5.137620000E2,5.875203916E1 +5.140950000E2,6.043073123E1 +5.143340000E2,5.829778385E1 +5.146280000E2,6.530539120E1 +5.148660000E2,5.725439078E1 +5.151580000E2,6.255661351E1 +5.153960000E2,6.412193683E1 +5.156410000E2,6.315775814E1 +5.158840000E2,6.025521775E1 +5.161460000E2,5.892698587E1 +5.164080000E2,5.956507822E1 +5.166610000E2,6.162757540E1 +5.169960000E2,6.009082976E1 +5.173360000E2,5.999682475E1 +5.176380000E2,6.121463264E1 +5.178750000E2,5.929809726E1 +5.181460000E2,5.746668369E1 +5.183810000E2,5.919113180E1 +5.186360000E2,5.827917213E1 +5.189280000E2,5.902314388E1 +5.192310000E2,6.116063950E1 +5.195310000E2,6.026149556E1 +5.198180000E2,5.851929656E1 +5.200920000E2,5.750929671E1 +5.204160000E2,5.729942637E1 +5.207470000E2,5.472104161E1 +5.210390000E2,6.169397748E1 +5.213450000E2,6.081589597E1 +5.216480000E2,6.278728872E1 +5.219550000E2,6.266319096E1 +5.222160000E2,6.478840582E1 +5.224820000E2,6.255888661E1 +5.227330000E2,6.119451713E1 +5.229970000E2,6.244953097E1 +5.232800000E2,6.000703556E1 +5.236020000E2,5.885323025E1 +5.239510000E2,5.826073845E1 +5.242570000E2,5.807287072E1 +5.245200000E2,5.931641295E1 +5.247800000E2,5.775994158E1 +5.250310000E2,6.167249992E1 +5.253010000E2,6.027694641E1 +5.255430000E2,6.329659774E1 +5.258240000E2,6.254377160E1 +5.261330000E2,6.489975363E1 +5.263840000E2,5.999325642E1 +5.266440000E2,5.885077446E1 +5.268920000E2,6.439829299E1 +5.272450000E2,6.165608373E1 +5.275110000E2,5.418048629E1 +5.277700000E2,5.656005066E1 +5.280170000E2,6.215252288E1 +5.283170000E2,5.743407158E1 +5.285650000E2,5.831214783E1 +5.288200000E2,6.066735547E1 +5.290820000E2,5.994603081E1 +5.293240000E2,5.951550591E1 +5.295810000E2,6.264700953E1 +5.298380000E2,5.736628274E1 +5.301360000E2,5.590406638E1 +5.304530000E2,6.041033291E1 +5.307000000E2,5.968691140E1 +5.309950000E2,5.730835182E1 +5.312390000E2,5.823026311E1 +5.315470000E2,5.871167442E1 +5.318430000E2,5.990765833E1 +5.321400000E2,6.387020611E1 +5.324510000E2,6.077699448E1 +5.326980000E2,5.895294298E1 +5.329820000E2,6.041997988E1 +5.333050000E2,5.806877757E1 +5.336110000E2,5.682362418E1 +5.340220000E2,5.915478638E1 +5.342790000E2,6.110946170E1 +5.345430000E2,5.735857105E1 +5.348060000E2,5.684014045E1 +5.350480000E2,6.043627860E1 +5.353500000E2,5.982929159E1 +5.356290000E2,5.986217314E1 +5.358770000E2,5.677131614E1 +5.361310000E2,5.763848566E1 +5.363810000E2,6.142463983E1 +5.366730000E2,5.634211854E1 +5.369290000E2,5.547608220E1 +5.372430000E2,5.920768747E1 +5.375170000E2,6.113406656E1 +5.377700000E2,6.208964505E1 +5.380710000E2,6.100572025E1 +5.383260000E2,6.352283467E1 +5.386320000E2,5.898993907E1 +5.389570000E2,5.503782412E1 +5.392560000E2,5.663453376E1 +5.395360000E2,6.406828344E1 +5.398060000E2,5.890955595E1 +5.400700000E2,6.046868424E1 +5.403380000E2,5.979639772E1 +5.406170000E2,5.838685694E1 +5.409120000E2,5.933573087E1 +5.411500000E2,5.970536072E1 +5.414430000E2,5.461931777E1 +5.417380000E2,5.891969668E1 +5.419780000E2,6.086182172E1 +5.422730000E2,5.706230292E1 +5.425150000E2,6.002937875E1 +5.428150000E2,5.733734968E1 +5.430520000E2,5.791730719E1 +5.433430000E2,5.451667439E1 +5.436740000E2,5.601232928E1 +5.439430000E2,6.067749331E1 +5.441960000E2,6.044443396E1 +5.445120000E2,6.332642539E1 +5.448320000E2,6.369907597E1 +5.451010000E2,6.327412880E1 +5.453640000E2,6.380509737E1 +5.456090000E2,6.199528902E1 +5.458550000E2,5.905332967E1 +5.461530000E2,5.748064798E1 +5.463920000E2,5.793139247E1 +5.466900000E2,5.931551966E1 +5.470480000E2,6.345498755E1 +5.473610000E2,5.881486603E1 +5.476220000E2,5.928200098E1 +5.478810000E2,5.577309321E1 +5.481470000E2,5.875325885E1 +5.483980000E2,6.007409743E1 +5.486490000E2,6.070612531E1 +5.488940000E2,5.934549940E1 +5.491520000E2,6.170511636E1 +5.494020000E2,6.376886521E1 +5.497010000E2,6.406587518E1 +5.499360000E2,6.365684538E1 +5.503130000E2,6.009406633E1 +5.505850000E2,6.014270409E1 +5.508500000E2,5.879153887E1 +5.511470000E2,5.883782525E1 +5.513760000E2,5.773432280E1 +5.516350000E2,5.966648889E1 +5.518940000E2,5.472606108E1 +5.521930000E2,5.682429497E1 +5.524670000E2,5.619181968E1 +5.527770000E2,5.997719307E1 +5.530460000E2,5.879335465E1 +5.533410000E2,5.983416170E1 +5.537120000E2,5.957041909E1 +5.539420000E2,5.952828793E1 +5.542510000E2,5.971645274E1 +5.545000000E2,6.419337448E1 +5.547730000E2,6.634363344E1 +5.550770000E2,6.285856457E1 +5.553760000E2,5.654671197E1 +5.556440000E2,5.530754918E1 +5.558640000E2,5.889159880E1 +5.561110000E2,6.213947417E1 +5.563520000E2,6.860243311E1 +5.566480000E2,6.647018679E1 +5.569110000E2,6.420604516E1 +5.571650000E2,6.703462967E1 +5.574140000E2,6.648783593E1 +5.576540000E2,6.634001782E1 +5.579350000E2,6.293734135E1 +5.581770000E2,6.205918741E1 +5.584760000E2,5.247262167E1 +5.587220000E2,5.338734169E1 +5.589670000E2,5.662276325E1 +5.592110000E2,5.533465633E1 +5.595080000E2,5.854271946E1 +5.597740000E2,5.660649413E1 +5.600260000E2,6.333844075E1 +5.602860000E2,6.255943536E1 +5.605830000E2,5.392304486E1 +5.608700000E2,5.760897506E1 +5.611660000E2,5.713086887E1 +5.614070000E2,5.720157535E1 +5.617060000E2,5.026592539E1 +5.619510000E2,5.140995344E1 +5.621950000E2,5.663266073E1 +5.624370000E2,5.202695689E1 +5.627360000E2,6.084568668E1 +5.630550000E2,6.179643015E1 +5.632960000E2,5.833759539E1 +5.635420000E2,5.518782498E1 +5.638400000E2,6.578433315E1 +5.640880000E2,5.706187099E1 +5.643850000E2,5.456571992E1 +5.646300000E2,5.536479424E1 +5.649270000E2,5.930541070E1 +5.651540000E2,6.023199994E1 +5.653960000E2,5.612469871E1 +5.656980000E2,5.462007842E1 +5.659410000E2,5.278259804E1 +5.662890000E2,6.064478329E1 +5.666290000E2,5.682964802E1 +5.669030000E2,5.787828261E1 +5.671980000E2,5.712595091E1 +5.674890000E2,5.729764361E1 +5.677450000E2,5.241850056E1 +5.679980000E2,5.377155525E1 +5.682380000E2,5.485418547E1 +5.684830000E2,5.503746434E1 +5.687810000E2,5.398954643E1 +5.690230000E2,5.401913169E1 +5.693270000E2,5.953896215E1 +5.695680000E2,5.626247467E1 +5.698640000E2,6.040491706E1 +5.701050000E2,5.781813181E1 +5.703620000E2,5.733744349E1 +5.706600000E2,5.669032177E1 +5.709140000E2,5.453731954E1 +5.711580000E2,6.235364316E1 +5.714280000E2,5.958044055E1 +5.716860000E2,5.875696014E1 +5.719750000E2,5.570465139E1 +5.722310000E2,4.865236791E1 +5.725580000E2,5.257975627E1 +5.727900000E2,4.975389893E1 +5.730890000E2,5.658508958E1 +5.733660000E2,5.542284648E1 +5.735960000E2,5.536199936E1 +5.738990000E2,5.813474916E1 +5.741540000E2,5.417788207E1 +5.744370000E2,5.704170918E1 +5.746710000E2,5.736828455E1 +5.749280000E2,5.450874678E1 +5.751790000E2,5.610950442E1 +5.754890000E2,5.919887582E1 +5.758690000E2,5.780639378E1 +5.761700000E2,5.709220641E1 +5.764190000E2,5.815359781E1 +5.767060000E2,5.734155824E1 +5.769500000E2,5.925323086E1 +5.772430000E2,6.084767221E1 +5.775370000E2,5.852024889E1 +5.777780000E2,5.822649765E1 +5.780770000E2,5.829089322E1 +5.783770000E2,5.915481192E1 +5.786460000E2,5.996430642E1 +5.789780000E2,6.016421415E1 +5.792520000E2,6.221052482E1 +5.795090000E2,5.533993101E1 +5.798230000E2,6.537257407E1 +5.801220000E2,6.068836920E1 +5.803770000E2,5.728273812E1 +5.806510000E2,5.648369901E1 +5.809070000E2,5.397363349E1 +5.811690000E2,5.755294689E1 +5.814510000E2,5.957149991E1 +5.816900000E2,5.963092636E1 +5.820650000E2,6.778811076E1 +5.823240000E2,6.247529404E1 +5.825840000E2,6.073516327E1 +5.828380000E2,6.039356998E1 +5.830970000E2,5.764504824E1 +5.833990000E2,6.041396176E1 +5.836470000E2,6.355942860E1 +5.838990000E2,5.785560268E1 +5.841390000E2,6.060017525E1 +5.844440000E2,6.032069521E1 +5.847010000E2,5.760371100E1 +5.849440000E2,5.491620812E1 +5.851990000E2,5.957978671E1 +5.855370000E2,6.103184032E1 +5.857970000E2,5.896875350E1 +5.861120000E2,6.008190546E1 +5.863990000E2,5.687378544E1 +5.866450000E2,5.874294643E1 +5.869410000E2,5.870806017E1 +5.871860000E2,5.809143232E1 +5.874740000E2,5.847828699E1 +5.877850000E2,5.846232778E1 +5.880500000E2,5.755876921E1 +5.883650000E2,5.609032758E1 +5.887050000E2,5.685283394E1 +5.889730000E2,5.945975832E1 +5.892710000E2,6.114741701E1 +5.895110000E2,6.316132147E1 +5.898100000E2,6.715155367E1 +5.900480000E2,6.367866992E1 +5.903470000E2,5.131949120E1 +5.905900000E2,5.646494575E1 +5.908880000E2,6.096218752E1 +5.911270000E2,6.089171796E1 +5.913720000E2,6.319522071E1 +5.916410000E2,6.016553529E1 +5.920560000E2,5.915189166E1 +5.923330000E2,5.776862186E1 +5.925640000E2,5.840366445E1 +5.927890000E2,5.978914182E1 +5.930440000E2,6.058699711E1 +5.932650000E2,6.012895387E1 +5.935140000E2,6.295025578E1 +5.937520000E2,6.280196012E1 +5.940110000E2,6.194014009E1 +5.943340000E2,6.483906300E1 +5.945870000E2,5.918257578E1 +5.948380000E2,5.620333930E1 +5.951900000E2,6.323403421E1 +5.954240000E2,6.183177681E1 +5.956620000E2,6.120300936E1 +5.959650000E2,5.836925111E1 +5.961890000E2,6.106023171E1 +5.964920000E2,6.153658324E1 +5.967310000E2,6.490772593E1 +5.969960000E2,6.274228676E1 +5.972520000E2,6.139008510E1 +5.975050000E2,6.281232833E1 +5.978180000E2,6.254982632E1 +5.980890000E2,6.205794184E1 +5.983900000E2,6.438771503E1 +5.986230000E2,6.052772463E1 +5.988520000E2,6.375966703E1 +5.991380000E2,5.869985301E1 +5.993860000E2,6.050357712E1 +5.996630000E2,5.547835745E1 +5.999280000E2,5.400421666E1 +6.001960000E2,5.668252186E1 +6.004880000E2,6.001970320E1 +6.007680000E2,6.056987745E1 +6.010550000E2,6.461211967E1 +6.014090000E2,6.399838195E1 +6.016840000E2,5.485596323E1 +6.019450000E2,5.731519087E1 +6.022080000E2,6.691878914E1 +6.024720000E2,6.479201876E1 +6.027260000E2,6.412847214E1 +6.029760000E2,6.025795068E1 +6.032190000E2,6.098133491E1 +6.035120000E2,5.689387521E1 +6.038040000E2,5.639928101E1 +6.041550000E2,5.328068252E1 +6.044370000E2,5.639829798E1 +6.046770000E2,5.892330560E1 +6.049510000E2,5.315638413E1 +6.051900000E2,5.740260439E1 +6.054620000E2,5.339391440E1 +6.057500000E2,5.310371918E1 +6.060710000E2,5.460903952E1 +6.063050000E2,5.407304270E1 +6.065540000E2,5.870790541E1 +6.068060000E2,5.576782972E1 +6.070790000E2,5.976954147E1 +6.074640000E2,6.181180531E1 +6.077240000E2,6.194364733E1 +6.080150000E2,6.794225297E1 +6.082590000E2,6.236601361E1 +6.085470000E2,6.002700779E1 +6.088450000E2,5.971993236E1 +6.090930000E2,5.954735434E1 +6.093460000E2,5.907202371E1 +6.095920000E2,5.993658420E1 +6.098910000E2,5.530332259E1 +6.101850000E2,5.531802018E1 +6.104220000E2,5.376885939E1 +6.107780000E2,5.735355871E1 +6.110210000E2,5.868610156E1 +6.112710000E2,5.312122754E1 +6.115670000E2,5.745102631E1 +6.118550000E2,5.535536940E1 +6.121540000E2,5.088728731E1 +6.123960000E2,5.266907791E1 +6.126860000E2,5.386493253E1 +6.130010000E2,5.670623073E1 +6.132810000E2,5.563278655E1 +6.135150000E2,5.267172926E1 +6.138540000E2,5.386148816E1 +6.141880000E2,5.716468210E1 +6.144880000E2,5.526918781E1 +6.147190000E2,5.659553915E1 +6.149610000E2,5.648341007E1 +6.152730000E2,5.711745846E1 +6.155520000E2,5.918800114E1 +6.158010000E2,5.642548609E1 +6.161000000E2,5.635896926E1 +6.163480000E2,5.899225051E1 +6.166180000E2,5.374343244E1 +6.168690000E2,4.891042404E1 +6.172050000E2,5.065835680E1 +6.174560000E2,5.685264653E1 +6.177340000E2,5.429270039E1 +6.179930000E2,5.499548313E1 +6.182940000E2,5.407177565E1 +6.185300000E2,5.356533799E1 +6.188300000E2,5.378190643E1 +6.191140000E2,5.189020817E1 +6.193870000E2,5.046647494E1 +6.196450000E2,5.501107364E1 +6.198910000E2,5.798814538E1 +6.201660000E2,5.360844474E1 +6.205080000E2,5.353935610E1 +6.208080000E2,5.620189936E1 +6.210820000E2,6.216008765E1 +6.213360000E2,5.767015155E1 +6.216520000E2,6.210101060E1 +6.219320000E2,5.928042926E1 +6.221800000E2,6.394496555E1 +6.224980000E2,5.872213561E1 +6.227430000E2,5.927091626E1 +6.230010000E2,5.235592166E1 +6.232430000E2,6.313120608E1 +6.235470000E2,6.005436888E1 +6.238480000E2,5.999836557E1 +6.240930000E2,5.879748041E1 +6.243920000E2,5.978277378E1 +6.246440000E2,6.050724590E1 +6.249480000E2,6.282777276E1 +6.252520000E2,6.080897043E1 +6.255640000E2,5.889462949E1 +6.258270000E2,5.550476615E1 +6.260730000E2,5.586785505E1 +6.263620000E2,6.576560120E1 +6.266590000E2,6.102361259E1 +6.270050000E2,6.110507706E1 +6.272870000E2,5.753592100E1 +6.275410000E2,6.297666729E1 +6.278490000E2,6.037594793E1 +6.281160000E2,5.849898506E1 +6.284180000E2,6.165631601E1 +6.287090000E2,6.096774109E1 +6.289510000E2,6.176590968E1 +6.292460000E2,5.947061017E1 +6.294820000E2,6.109202024E1 +6.297790000E2,5.322559935E1 +6.301160000E2,4.971181861E1 +6.303880000E2,5.533921521E1 +6.307250000E2,5.478410742E1 +6.310240000E2,5.647795083E1 +6.313200000E2,5.797504265E1 +6.315690000E2,5.403019222E1 +6.318640000E2,5.301910781E1 +6.321010000E2,5.096544207E1 +6.324030000E2,5.324435941E1 +6.326360000E2,5.447050361E1 +6.328960000E2,5.932781903E1 +6.331500000E2,5.967228428E1 +6.334640000E2,6.319489971E1 +6.337810000E2,5.820271574E1 +6.340710000E2,5.910289699E1 +6.343170000E2,5.681937370E1 +6.346260000E2,5.582227275E1 +6.349350000E2,5.745831651E1 +6.352100000E2,5.504019385E1 +6.354620000E2,5.072303887E1 +6.357190000E2,5.366082959E1 +6.359690000E2,5.380227314E1 +6.362560000E2,4.818205454E1 +6.365090000E2,5.989908626E1 +6.368780000E2,5.659012846E1 +6.371610000E2,5.593157997E1 +6.374460000E2,5.135237935E1 +6.377000000E2,5.687788515E1 +6.379550000E2,5.943975502E1 +6.382630000E2,6.290957992E1 +6.385230000E2,5.827099811E1 +6.387780000E2,5.686391746E1 +6.390620000E2,5.771790911E1 +6.393200000E2,5.390066131E1 +6.395830000E2,5.358231960E1 +6.398480000E2,5.564565007E1 +6.401490000E2,5.205482155E1 +6.404200000E2,5.852280051E1 +6.407340000E2,4.836326193E1 +6.409980000E2,5.905115701E1 +6.412560000E2,5.622349390E1 +6.415040000E2,5.891737338E1 +6.417460000E2,5.749377856E1 +6.420310000E2,5.414095183E1 +6.422680000E2,5.482109112E1 +6.425170000E2,5.202942051E1 +6.428000000E2,4.903409276E1 +6.431250000E2,5.495098254E1 +6.434650000E2,5.777911761E1 +6.437680000E2,5.329076638E1 +6.440080000E2,5.886592322E1 +6.443070000E2,5.661637111E1 +6.445560000E2,5.459133399E1 +6.448230000E2,4.858613706E1 +6.450990000E2,5.642020356E1 +6.453590000E2,5.634614530E1 +6.456240000E2,5.769024626E1 +6.458900000E2,6.037646239E1 +6.461470000E2,5.712013563E1 +6.464260000E2,5.393237723E1 +6.467570000E2,5.443825449E1 +6.469850000E2,5.464133184E1 +6.472460000E2,5.185343249E1 +6.475170000E2,5.670688718E1 +6.477900000E2,5.808659132E1 +6.480150000E2,5.879711687E1 +6.483250000E2,5.860991669E1 +6.485730000E2,5.600484597E1 +6.488230000E2,5.291438286E1 +6.491020000E2,5.869236753E1 +6.493260000E2,5.826316690E1 +6.496250000E2,5.619306699E1 +6.499850000E2,6.085970714E1 +6.502400000E2,6.051231588E1 +6.505400000E2,6.096601072E1 +6.507990000E2,6.197068990E1 +6.511180000E2,6.520817743E1 +6.513810000E2,6.377577246E1 +6.516860000E2,6.105485617E1 +6.519940000E2,5.890751001E1 +6.522910000E2,5.911253604E1 +6.525370000E2,6.291937986E1 +6.528540000E2,6.252638881E1 +6.532210000E2,6.337356348E1 +6.535270000E2,5.894334263E1 +6.537830000E2,5.754939005E1 +6.540930000E2,5.500698560E1 +6.543880000E2,5.014350898E1 +6.546880000E2,5.646260920E1 +6.549870000E2,5.951282585E1 +6.552920000E2,6.099782791E1 +6.555480000E2,6.065538365E1 +6.558100000E2,6.827371953E1 +6.560790000E2,6.035931154E1 +6.563820000E2,6.267306134E1 +6.566350000E2,5.826452213E1 +6.568970000E2,6.092938143E1 +6.572010000E2,6.534130041E1 +6.575130000E2,6.111837506E1 +6.577770000E2,5.826481723E1 +6.580330000E2,5.918147323E1 +6.582980000E2,6.100230752E1 +6.585510000E2,6.302217459E1 +6.588060000E2,5.754956715E1 +6.591080000E2,6.111201710E1 +6.593520000E2,6.017410469E1 +6.597040000E2,6.031944923E1 +6.599450000E2,5.943575512E1 +6.602120000E2,5.868776340E1 +6.605570000E2,5.940543513E1 +6.608500000E2,5.886327816E1 +6.610920000E2,5.770522648E1 +6.613840000E2,5.442777508E1 +6.616200000E2,5.394232060E1 +6.619220000E2,5.856638842E1 +6.622160000E2,5.742664400E1 +6.624600000E2,5.472498345E1 +6.627560000E2,5.672985390E1 +6.629770000E2,5.834702318E1 +6.632250000E2,5.907602823E1 +6.634810000E2,5.873031221E1 +6.637670000E2,5.757130737E1 +6.640040000E2,5.572185824E1 +6.643070000E2,5.959142979E1 +6.645480000E2,5.851623707E1 +6.648520000E2,5.856887935E1 +6.650940000E2,6.397218192E1 +6.653890000E2,5.963692586E1 +6.656210000E2,5.934207027E1 +6.659580000E2,5.667856430E1 +6.662640000E2,5.811017468E1 +6.665550000E2,5.505265787E1 +6.667990000E2,5.558350894E1 +6.671320000E2,6.063017800E1 +6.674000000E2,5.568411381E1 +6.676510000E2,5.981422062E1 +6.679580000E2,5.723024768E1 +6.682820000E2,5.036028104E1 +6.685240000E2,5.199205823E1 +6.687970000E2,5.367328475E1 +6.691280000E2,5.936914884E1 +6.693940000E2,5.657797691E1 +6.696490000E2,6.065879377E1 +6.699270000E2,5.657054255E1 +6.702000000E2,5.655716576E1 +6.704770000E2,5.823562265E1 +6.707350000E2,6.065030224E1 +6.710140000E2,6.110776530E1 +6.712700000E2,5.714357796E1 +6.715170000E2,5.604236164E1 +6.717930000E2,6.041748871E1 +6.721240000E2,6.019765334E1 +6.724270000E2,5.928602786E1 +6.727750000E2,5.973060669E1 +6.730710000E2,6.059869751E1 +6.733250000E2,6.116850166E1 +6.736400000E2,6.145214709E1 +6.738890000E2,6.020118097E1 +6.741670000E2,6.048579637E1 +6.744720000E2,6.225337088E1 +6.747550000E2,5.853636068E1 +6.750030000E2,5.999204871E1 +6.752840000E2,5.433989895E1 +6.755100000E2,5.847308735E1 +6.758420000E2,5.913726954E1 +6.760830000E2,6.049449503E1 +6.763830000E2,5.545572399E1 +6.766370000E2,6.246077536E1 +6.768920000E2,6.029598130E1 +6.771340000E2,6.005864514E1 +6.774230000E2,6.582269585E1 +6.776700000E2,6.255104294E1 +6.779140000E2,6.623711836E1 +6.781740000E2,6.684819787E1 +6.784850000E2,6.877250850E1 +6.787420000E2,6.157084767E1 +6.789860000E2,6.054068573E1 +6.793290000E2,6.069583213E1 +6.795810000E2,6.124898856E1 +6.798240000E2,6.136691849E1 +6.800900000E2,6.035594762E1 +6.803920000E2,5.654106541E1 +6.806920000E2,5.587565134E1 +6.809940000E2,5.642134155E1 +6.813020000E2,5.749983358E1 +6.815830000E2,5.576151961E1 +6.818120000E2,5.714589311E1 +6.820580000E2,5.969510914E1 +6.823020000E2,5.824123453E1 +6.825680000E2,5.779273115E1 +6.828630000E2,5.699644891E1 +6.831010000E2,5.900876644E1 +6.833500000E2,6.335540424E1 +6.835940000E2,6.280432027E1 +6.838340000E2,6.194675910E1 +6.841290000E2,5.801082069E1 +6.843650000E2,5.652506879E1 +6.846570000E2,5.895404856E1 +6.848910000E2,5.873705448E1 +6.851950000E2,5.589704153E1 +6.855380000E2,5.379672362E1 +6.857910000E2,6.287056471E1 +6.860900000E2,6.081817617E1 +6.863340000E2,6.807593043E1 +6.866320000E2,5.604389930E1 +6.868800000E2,6.712075434E1 +6.871750000E2,6.290238552E1 +6.874740000E2,6.473105179E1 +6.877330000E2,5.873835234E1 +6.880180000E2,5.800563858E1 +6.882620000E2,5.540095032E1 +6.885810000E2,6.197881428E1 +6.888280000E2,5.541258482E1 +6.890890000E2,5.558277465E1 +6.894010000E2,4.965923685E1 +6.897080000E2,4.860020107E1 +6.899730000E2,5.608167548E1 +6.902300000E2,5.381305593E1 +6.904990000E2,6.079286270E1 +6.908000000E2,6.446965644E1 +6.910380000E2,6.556266140E1 +6.913400000E2,5.418444209E1 +6.916350000E2,5.205102491E1 +6.919820000E2,5.812981404E1 +6.922410000E2,6.500705260E1 +6.925070000E2,6.149947285E1 +6.927750000E2,5.695315316E1 +6.930870000E2,5.775854948E1 +6.933870000E2,6.523399833E1 +6.936300000E2,6.692630865E1 +6.939270000E2,5.793447825E1 +6.942230000E2,5.746396110E1 +6.944770000E2,6.017975210E1 +6.947150000E2,5.956759439E1 +6.950320000E2,6.391288151E1 +6.953110000E2,6.484415086E1 +6.955650000E2,6.664209540E1 +6.958410000E2,6.746668632E1 +6.961050000E2,5.775664920E1 +6.964050000E2,6.383035698E1 +6.967020000E2,5.816763892E1 +6.969600000E2,6.921190909E1 +6.972400000E2,6.165047809E1 +6.975080000E2,5.666810057E1 +6.977540000E2,6.417546300E1 +6.980020000E2,5.788971486E1 +6.982730000E2,5.486922606E1 +6.985850000E2,5.576434723E1 +6.988820000E2,5.548978795E1 +6.991460000E2,5.886820316E1 +6.993970000E2,6.226406326E1 +6.996480000E2,5.601534080E1 +6.999400000E2,5.901385758E1 +7.002040000E2,5.720709772E1 +7.005120000E2,6.318399213E1 +7.007580000E2,6.338981741E1 +7.010170000E2,6.747312486E1 +7.012670000E2,5.788999692E1 +7.015450000E2,4.434465006E1 +7.018710000E2,6.439013955E1 +7.021480000E2,5.375342664E1 +7.023700000E2,6.398282027E1 +7.026160000E2,5.857909138E1 +7.029130000E2,5.670439641E1 +7.031590000E2,5.749786365E1 +7.034320000E2,5.181710985E1 +7.036770000E2,5.871535868E1 +7.039520000E2,5.470297527E1 +7.042240000E2,5.771822323E1 +7.044750000E2,5.236261523E1 +7.047130000E2,5.595332709E1 +7.050480000E2,5.576748295E1 +7.053040000E2,5.334869600E1 +7.055590000E2,5.337806625E1 +7.058180000E2,5.499892680E1 +7.060900000E2,5.490963435E1 +7.063980000E2,5.551078540E1 +7.066680000E2,5.358868238E1 +7.069300000E2,5.203182642E1 +7.071760000E2,5.771053387E1 +7.074630000E2,5.175835182E1 +7.077440000E2,5.402526598E1 +7.080400000E2,5.754717994E1 +7.083470000E2,6.103880587E1 +7.086400000E2,6.284824916E1 +7.088840000E2,6.674666322E1 +7.092010000E2,6.194114278E1 +7.094980000E2,5.796289911E1 +7.097580000E2,5.475547679E1 +7.100170000E2,5.804024708E1 +7.102650000E2,5.606423134E1 +7.105550000E2,5.319247933E1 +7.107930000E2,5.625991375E1 +7.110940000E2,5.589539698E1 +7.114730000E2,6.073460415E1 +7.117930000E2,6.208342045E1 +7.120530000E2,6.335117127E1 +7.123290000E2,5.821275565E1 +7.126280000E2,5.793160357E1 +7.128780000E2,5.509944006E1 +7.131790000E2,5.578357696E1 +7.134760000E2,5.632534225E1 +7.137350000E2,5.466315647E1 +7.140450000E2,5.914530785E1 +7.143020000E2,6.280432125E1 +7.146020000E2,6.333348539E1 +7.149790000E2,5.698482465E1 +7.152920000E2,5.474810308E1 +7.155370000E2,5.417920207E1 +7.157880000E2,6.392184792E1 +7.160720000E2,6.565549591E1 +7.163130000E2,6.082705714E1 +7.166120000E2,5.816285927E1 +7.168430000E2,5.809201859E1 +7.170930000E2,6.016105207E1 +7.173350000E2,5.162287691E1 +7.176230000E2,5.754317879E1 +7.179310000E2,6.166304542E1 +7.181770000E2,6.177004553E1 +7.184320000E2,6.274574776E1 +7.186900000E2,6.104994734E1 +7.189920000E2,5.735301480E1 +7.192340000E2,5.830205645E1 +7.194890000E2,6.212782217E1 +7.197420000E2,5.467685243E1 +7.200420000E2,5.313970583E1 +7.202920000E2,5.278680647E1 +7.205360000E2,5.474141102E1 +7.209140000E2,6.241771654E1 +7.212600000E2,6.394594172E1 +7.215560000E2,6.348358734E1 +7.217980000E2,6.112734048E1 +7.220450000E2,6.226451183E1 +7.222930000E2,6.534082516E1 +7.225960000E2,6.114019283E1 +7.228390000E2,6.421228964E1 +7.231230000E2,6.814847387E1 +7.233690000E2,6.275446304E1 +7.236190000E2,6.679153921E1 +7.239280000E2,6.537583699E1 +7.241850000E2,6.212976374E1 +7.245300000E2,6.553556935E1 +7.248220000E2,5.834030427E1 +7.250930000E2,5.992153646E1 +7.253380000E2,5.595099295E1 +7.256370000E2,5.720822528E1 +7.258800000E2,5.423516872E1 +7.261770000E2,5.906139652E1 +7.264140000E2,6.204477132E1 +7.267140000E2,6.368823365E1 +7.269550000E2,6.513672214E1 +7.272500000E2,6.364997971E1 +7.275370000E2,6.269941998E1 +7.278570000E2,5.948773609E1 +7.281020000E2,5.789544973E1 +7.283740000E2,6.305528689E1 +7.286400000E2,6.245554089E1 +7.289690000E2,6.033221518E1 +7.292310000E2,5.940071821E1 +7.294970000E2,6.176178101E1 +7.298020000E2,5.355172623E1 +7.300580000E2,5.535292187E1 +7.303150000E2,5.274398781E1 +7.305750000E2,5.399957194E1 +7.308780000E2,5.819691646E1 +7.312070000E2,5.434897588E1 +7.315090000E2,6.041787911E1 +7.317850000E2,5.617860881E1 +7.320560000E2,5.558770875E1 +7.323290000E2,5.151264449E1 +7.325860000E2,5.612143969E1 +7.328800000E2,5.405001557E1 +7.331120000E2,5.455354216E1 +7.334090000E2,5.716252136E1 +7.337070000E2,6.416157102E1 +7.339910000E2,6.098010142E1 +7.343020000E2,6.194029449E1 +7.346500000E2,6.091313037E1 +7.349540000E2,5.846954669E1 +7.352410000E2,5.743489407E1 +7.355320000E2,5.872669957E1 +7.357800000E2,5.859080967E1 +7.360560000E2,6.053269456E1 +7.363220000E2,6.117884455E1 +7.366590000E2,5.809887850E1 +7.369420000E2,5.453224539E1 +7.372510000E2,5.639337460E1 +7.375040000E2,5.373613181E1 +7.378630000E2,5.066236714E1 +7.381160000E2,4.653740377E1 +7.383650000E2,6.375011526E1 +7.386730000E2,6.282181577E1 +7.389830000E2,6.727660972E1 +7.392340000E2,6.413328322E1 +7.394790000E2,6.184881400E1 +7.397290000E2,6.430634497E1 +7.400250000E2,6.276256291E1 +7.402610000E2,6.297441350E1 +7.405590000E2,5.306586823E1 +7.408610000E2,5.403016569E1 +7.412260000E2,5.749263443E1 +7.415060000E2,5.657932114E1 +7.417820000E2,5.532222303E1 +7.420430000E2,5.911133378E1 +7.423450000E2,5.822379827E1 +7.426470000E2,6.311870884E1 +7.428860000E2,5.964121243E1 +7.431940000E2,5.708688763E1 +7.434960000E2,5.782189241E1 +7.437480000E2,5.745118469E1 +7.440380000E2,5.258772989E1 +7.442830000E2,5.325984780E1 +7.445410000E2,5.216709684E1 +7.447900000E2,5.485283680E1 +7.450520000E2,6.638751453E1 +7.453640000E2,6.256149725E1 +7.456370000E2,6.851667797E1 +7.459020000E2,6.356784575E1 +7.462040000E2,6.586178842E1 +7.464510000E2,6.099626883E1 +7.467420000E2,6.874341983E1 +7.470300000E2,5.690479739E1 +7.472670000E2,5.749513215E1 +7.475860000E2,5.743840209E1 +7.478480000E2,6.695338823E1 +7.481550000E2,6.575566103E1 +7.484170000E2,6.244751264E1 +7.486690000E2,6.206430480E1 +7.489520000E2,5.755143157E1 +7.492450000E2,6.343498072E1 +7.494820000E2,6.599354682E1 +7.497800000E2,5.994269627E1 +7.500210000E2,6.480563885E1 +7.503160000E2,5.962320355E1 +7.505550000E2,5.907805627E1 +7.508860000E2,5.452673237E1 +7.511450000E2,5.413358853E1 +7.514110000E2,5.786691992E1 +7.516870000E2,6.185088179E1 +7.519570000E2,5.432685780E1 +7.522050000E2,5.297819944E1 +7.524920000E2,5.290855554E1 +7.527910000E2,5.828859659E1 +7.530300000E2,5.880189294E1 +7.533360000E2,5.500578631E1 +7.535910000E2,5.476677878E1 +7.538330000E2,5.414240587E1 +7.541650000E2,5.332866170E1 +7.544620000E2,5.193802785E1 +7.547080000E2,5.242932681E1 +7.549590000E2,6.024921863E1 +7.552020000E2,5.537701523E1 +7.554960000E2,5.489617845E1 +7.557330000E2,5.384280286E1 +7.560410000E2,5.406125999E1 +7.562870000E2,5.246560959E1 +7.565320000E2,5.374729291E1 +7.567680000E2,5.542801483E1 +7.570630000E2,5.525770987E1 +7.573930000E2,5.847670432E1 +7.576660000E2,5.822188632E1 +7.579180000E2,5.822901451E1 +7.582040000E2,5.458975346E1 +7.584820000E2,5.438683247E1 +7.587800000E2,5.260449368E1 +7.590260000E2,5.371245859E1 +7.592870000E2,4.983203663E1 +7.595420000E2,5.018089077E1 +7.598380000E2,5.950969681E1 +7.601480000E2,5.769305363E1 +7.604800000E2,5.747567937E1 +7.607190000E2,5.446335810E1 +7.610040000E2,5.463229896E1 +7.612970000E2,5.644916160E1 +7.615560000E2,5.809520116E1 +7.618460000E2,5.406577519E1 +7.621050000E2,5.362277750E1 +7.623930000E2,5.868559294E1 +7.626230000E2,5.548744129E1 +7.628890000E2,5.613986675E1 +7.631890000E2,5.592058678E1 +7.634870000E2,5.947938191E1 +7.638120000E2,5.945990241E1 +7.640830000E2,5.354091788E1 +7.643270000E2,5.910847411E1 +7.645670000E2,6.112853730E1 +7.648120000E2,5.617469613E1 +7.650520000E2,5.678172470E1 +7.653190000E2,5.293731054E1 +7.655730000E2,5.571573154E1 +7.658430000E2,5.239475172E1 +7.660900000E2,5.710555790E1 +7.663840000E2,5.593714408E1 +7.666500000E2,5.506488062E1 +7.669100000E2,5.276148627E1 +7.671530000E2,5.087813070E1 +7.674500000E2,4.966858228E1 +7.677070000E2,4.690170064E1 +7.679870000E2,5.097718665E1 +7.682460000E2,5.173969669E1 +7.685220000E2,5.562988056E1 +7.687630000E2,5.194720020E1 +7.690630000E2,5.590118249E1 +7.693610000E2,5.613585205E1 +7.696030000E2,5.417299550E1 +7.698530000E2,5.925774948E1 +7.702010000E2,5.729895975E1 +7.704610000E2,5.765570707E1 +7.707610000E2,6.211008380E1 +7.710570000E2,5.846530012E1 +7.712970000E2,5.766544416E1 +7.715460000E2,5.716238768E1 +7.718080000E2,5.700535494E1 +7.720510000E2,5.592606747E1 +7.723260000E2,5.771214429E1 +7.725940000E2,5.753442175E1 +7.728830000E2,5.541298336E1 +7.731860000E2,5.137853822E1 +7.735420000E2,5.462649470E1 +7.738320000E2,5.454281912E1 +7.740820000E2,6.803752283E1 +7.743260000E2,6.852980541E1 +7.745820000E2,7.007631543E1 +7.748270000E2,7.009876218E1 +7.751160000E2,6.950363051E1 +7.753520000E2,6.338954984E1 +7.755910000E2,5.500200077E1 +7.758880000E2,5.358702362E1 +7.761340000E2,5.718303470E1 +7.763730000E2,5.887519420E1 +7.767050000E2,5.795457078E1 +7.769970000E2,5.796499201E1 +7.773000000E2,5.644912180E1 +7.775570000E2,5.804780214E1 +7.778740000E2,5.958528627E1 +7.781300000E2,5.635913866E1 +7.784430000E2,5.593106857E1 +7.787280000E2,6.063168213E1 +7.789960000E2,5.917208792E1 +7.792560000E2,5.719923422E1 +7.795050000E2,6.400429125E1 +7.797680000E2,5.733192807E1 +7.800440000E2,6.018331087E1 +7.803000000E2,6.350407169E1 +7.805530000E2,6.357762743E1 +7.808590000E2,6.772563953E1 +7.811430000E2,6.431848914E1 +7.814050000E2,5.710721917E1 +7.816950000E2,5.646111127E1 +7.819500000E2,5.564600214E1 +7.822050000E2,6.362802489E1 +7.824550000E2,6.278310471E1 +7.827010000E2,5.851995741E1 +7.829620000E2,5.759567059E1 +7.832630000E2,5.449669640E1 +7.835070000E2,6.040303881E1 +7.837500000E2,5.743841461E1 +7.839990000E2,6.096558185E1 +7.842840000E2,7.161293257E1 +7.845270000E2,7.417435903E1 +7.848410000E2,6.386070968E1 +7.851390000E2,6.234904760E1 +7.854350000E2,6.321731436E1 +7.856820000E2,6.294103551E1 +7.859780000E2,6.210337552E1 +7.862150000E2,6.765383904E1 +7.865650000E2,6.346682761E1 +7.868610000E2,6.221020232E1 +7.871280000E2,6.119530731E1 +7.873850000E2,5.314248269E1 +7.876880000E2,5.288680780E1 +7.879230000E2,5.064349321E1 +7.882230000E2,5.786336298E1 +7.884630000E2,5.341864841E1 +7.887250000E2,5.286568073E1 +7.890140000E2,5.272997567E1 +7.893180000E2,5.904110581E1 +7.896690000E2,5.748622391E1 +7.899200000E2,5.773986136E1 +7.902160000E2,5.480967078E1 +7.904710000E2,5.627241382E1 +7.907280000E2,5.456362797E1 +7.909900000E2,5.766408512E1 +7.912380000E2,5.413586400E1 +7.914940000E2,5.234403284E1 +7.917720000E2,5.190170354E1 +7.920440000E2,5.227759392E1 +7.923170000E2,4.410400383E1 +7.926220000E2,3.508270700E1 +7.929370000E2,3.887828085E1 +7.932030000E2,4.522069604E1 +7.934660000E2,4.928233980E1 +7.937420000E2,4.706401379E1 +7.940710000E2,4.988989997E1 +7.943700000E2,5.767827889E1 +7.946060000E2,5.506606719E1 +7.949050000E2,6.107887773E1 +7.952060000E2,5.849609892E1 +7.955030000E2,5.343173328E1 +7.957490000E2,5.007726003E1 +7.960580000E2,4.763873915E1 +7.963010000E2,5.045894898E1 +7.966040000E2,6.859700710E1 +7.968900000E2,6.734256534E1 +7.971550000E2,6.661489392E1 +7.974110000E2,6.556398865E1 +7.976580000E2,5.519705677E1 +7.979230000E2,5.503316479E1 +7.982060000E2,5.955770829E1 +7.984280000E2,5.777834711E1 +7.987260000E2,6.050467535E1 +7.989700000E2,5.583639573E1 +7.993330000E2,5.988908902E1 +7.995750000E2,5.875791040E1 +7.998670000E2,6.166637478E1 +8.001160000E2,5.690435901E1 +8.004160000E2,5.599911293E1 +8.006610000E2,5.889628547E1 +8.009180000E2,6.227540789E1 +8.011740000E2,6.572663811E1 +8.014300000E2,6.013467784E1 +8.016770000E2,6.250368579E1 +8.019910000E2,6.532292099E1 +8.023560000E2,5.377170031E1 +8.026370000E2,5.535595108E1 +8.029110000E2,5.147526495E1 +8.031720000E2,4.993046061E1 +8.034760000E2,6.394035794E1 +8.037260000E2,5.983119170E1 +8.040270000E2,5.967243802E1 +8.042930000E2,6.559340840E1 +8.046100000E2,5.262215496E1 +8.049160000E2,5.397812040E1 +8.051780000E2,5.680330381E1 +8.054740000E2,5.857171626E1 +8.058060000E2,5.577198454E1 +8.060880000E2,5.916891157E1 +8.063460000E2,6.120078548E1 +8.066060000E2,6.223167379E1 +8.069230000E2,6.161077093E1 +8.071720000E2,5.812180846E1 +8.074300000E2,5.665535607E1 +8.077230000E2,5.401482687E1 +8.079600000E2,5.631804256E1 +8.082610000E2,5.267806276E1 +8.085540000E2,5.766120113E1 +8.088100000E2,5.717509884E1 +8.091690000E2,5.698714543E1 +8.094130000E2,5.807918354E1 +8.096940000E2,5.364566959E1 +8.099320000E2,5.678502402E1 +8.102110000E2,5.494444844E1 +8.104710000E2,6.216218230E1 +8.107550000E2,5.504588420E1 +8.110030000E2,5.220186059E1 +8.112810000E2,5.338487037E1 +8.115430000E2,5.422122114E1 +8.118180000E2,6.217546099E1 +8.121430000E2,5.739027439E1 +8.124800000E2,5.218554734E1 +8.128080000E2,6.183667492E1 +8.130850000E2,6.028246668E1 +8.133620000E2,6.620979851E1 +8.135950000E2,5.810667246E1 +8.138630000E2,6.096670869E1 +8.141300000E2,5.149777407E1 +8.143960000E2,4.993954713E1 +8.146400000E2,5.196561010E1 +8.149350000E2,5.727966309E1 +8.151710000E2,5.489316784E1 +8.154100000E2,5.619291420E1 +8.157500000E2,5.425831711E1 +8.160430000E2,5.677079709E1 +8.163250000E2,5.289383275E1 +8.165600000E2,5.573749616E1 +8.168090000E2,5.211960412E1 +8.170840000E2,5.029895102E1 +8.173170000E2,5.085418245E1 +8.175630000E2,5.101392152E1 +8.178870000E2,5.228690479E1 +8.182130000E2,5.919931006E1 +8.184680000E2,5.288617356E1 +8.188320000E2,5.626269479E1 +8.191030000E2,6.124827198E1 +8.193870000E2,5.889071517E1 +8.196160000E2,5.957980623E1 +8.199180000E2,5.440069788E1 +8.201590000E2,5.524226830E1 +8.204560000E2,5.147688867E1 +8.206870000E2,5.390780082E1 +8.209820000E2,6.509870984E1 +8.212270000E2,6.421388309E1 +8.215230000E2,5.843840462E1 +8.218170000E2,5.422512027E1 +8.221280000E2,5.468614274E1 +8.223780000E2,5.922850585E1 +8.226710000E2,6.486031186E1 +8.229330000E2,6.154967201E1 +8.232420000E2,5.893257410E1 +8.235100000E2,6.020329639E1 +8.238290000E2,5.483779552E1 +8.240760000E2,5.692914998E1 +8.243280000E2,6.347347085E1 +8.245930000E2,5.345306004E1 +8.248670000E2,6.141647052E1 +8.252000000E2,5.672783001E1 +8.254550000E2,5.605661334E1 +8.257610000E2,5.699330885E1 +8.260410000E2,5.489256860E1 +8.263010000E2,6.262090025E1 +8.265830000E2,5.457719262E1 +8.268180000E2,5.416382407E1 +8.271260000E2,4.993919751E1 +8.273700000E2,5.569569056E1 +8.276330000E2,5.514364162E1 +8.278890000E2,5.653204472E1 +8.281470000E2,5.784406489E1 +8.284370000E2,5.752811490E1 +8.286720000E2,5.727510089E1 +8.289650000E2,5.900575965E1 +8.292510000E2,5.679022390E1 +8.294860000E2,5.722234118E1 +8.297350000E2,5.952638514E1 +8.300320000E2,5.925181191E1 +8.302740000E2,5.930148258E1 +8.305160000E2,5.668145507E1 +8.307730000E2,5.590492759E1 +8.310130000E2,6.302930486E1 +8.312510000E2,5.733539345E1 +8.315800000E2,5.620349253E1 +8.318910000E2,5.495250031E1 +8.322000000E2,5.501979251E1 +8.324620000E2,5.208226415E1 +8.327390000E2,5.765748383E1 +8.329950000E2,5.489193423E1 +8.332490000E2,5.593428331E1 +8.335720000E2,5.714652117E1 +8.338250000E2,5.832769426E1 +8.341370000E2,5.884156077E1 +8.344030000E2,5.840498509E1 +8.347020000E2,5.864505811E1 +8.350330000E2,6.356982434E1 +8.353340000E2,6.286445683E1 +8.355720000E2,5.657384439E1 +8.358940000E2,5.660970318E1 +8.361720000E2,5.918731584E1 +8.364160000E2,5.825788220E1 +8.366580000E2,5.592754487E1 +8.369110000E2,5.553717092E1 +8.371910000E2,5.495027293E1 +8.374510000E2,5.546329287E1 +8.377420000E2,5.746402701E1 +8.379890000E2,5.891922359E1 +8.383130000E2,6.522858798E1 +8.385710000E2,6.384617776E1 +8.388430000E2,5.435088619E1 +8.390670000E2,5.460135210E1 +8.393610000E2,5.982769627E1 +8.396020000E2,5.936265195E1 +8.398550000E2,6.034701146E1 +8.401470000E2,6.875861473E1 +8.403840000E2,6.968788985E1 +8.406760000E2,6.653493651E1 +8.409120000E2,6.664139767E1 +8.412200000E2,6.195236791E1 +8.415280000E2,5.759269564E1 +8.418110000E2,5.704906263E1 +8.420770000E2,5.199124728E1 +8.423350000E2,5.625309672E1 +8.426060000E2,5.627754144E1 +8.428710000E2,6.285304788E1 +8.431220000E2,6.089762622E1 +8.434160000E2,5.828079525E1 +8.436650000E2,5.581703965E1 +8.439650000E2,5.326092983E1 +8.442070000E2,5.247397640E1 +8.444500000E2,5.104216729E1 +8.447560000E2,4.981466747E1 +8.450730000E2,5.794387296E1 +8.453210000E2,6.103400827E1 +8.455680000E2,6.053778141E1 +8.458610000E2,5.413066164E1 +8.461240000E2,5.591468697E1 +8.463740000E2,5.289659812E1 +8.466770000E2,6.014390988E1 +8.469740000E2,5.713983843E1 +8.472340000E2,5.457406708E1 +8.474800000E2,5.848999564E1 +8.478210000E2,5.310404619E1 +8.481040000E2,5.463633704E1 +8.483620000E2,5.329096892E1 +8.486670000E2,5.667645304E1 +8.489890000E2,5.540515985E1 +8.492420000E2,5.014593999E1 +8.495060000E2,5.019949668E1 +8.497660000E2,4.724526190E1 +8.500410000E2,4.632701850E1 +8.502660000E2,4.436725745E1 +8.505710000E2,5.273585220E1 +8.508470000E2,5.232501704E1 +8.511370000E2,5.177389205E1 +8.513940000E2,5.236772038E1 +8.516560000E2,4.869019062E1 +8.518980000E2,5.254056589E1 +8.521620000E2,5.441215371E1 +8.524060000E2,5.431954181E1 +8.526720000E2,4.873515026E1 +8.529820000E2,5.253291311E1 +8.532350000E2,5.201920339E1 +8.535330000E2,5.083296820E1 +8.537750000E2,5.373650683E1 +8.540560000E2,6.162621210E1 +8.543710000E2,6.137876928E1 +8.546190000E2,6.347980201E1 +8.548850000E2,6.480134627E1 +8.551390000E2,6.344943059E1 +8.553830000E2,6.653758852E1 +8.556910000E2,6.821811094E1 +8.559900000E2,6.564040109E1 +8.562480000E2,6.310710880E1 +8.565060000E2,5.625485760E1 +8.567860000E2,5.886920329E1 +8.570590000E2,5.638007706E1 +8.573180000E2,5.477312089E1 +8.576670000E2,5.402637072E1 +8.579310000E2,5.282806817E1 +8.582400000E2,5.743205922E1 +8.584770000E2,5.608834078E1 +8.587730000E2,5.917700537E1 +8.590950000E2,5.757076232E1 +8.593390000E2,5.680975976E1 +8.596110000E2,5.316092446E1 +8.598560000E2,5.634389465E1 +8.601130000E2,5.912558361E1 +8.603880000E2,5.827706684E1 +8.606370000E2,5.580056474E1 +8.609720000E2,5.622551838E1 +8.612190000E2,5.816090597E1 +8.614650000E2,5.710633258E1 +8.617260000E2,6.762679027E1 +8.619970000E2,6.050550643E1 +8.622480000E2,6.017289530E1 +8.624960000E2,5.884551198E1 +8.627510000E2,5.823958631E1 +8.630120000E2,5.747421536E1 +8.632920000E2,5.891926612E1 +8.635810000E2,5.962176090E1 +8.638680000E2,5.932606834E1 +8.642430000E2,6.035939553E1 +8.645920000E2,5.892740034E1 +8.649090000E2,6.158225090E1 +8.651650000E2,5.941856931E1 +8.654560000E2,5.517726055E1 +8.656900000E2,5.573554393E1 +8.659400000E2,6.300977067E1 +8.662170000E2,6.346838855E1 +8.664760000E2,5.840482341E1 +8.667600000E2,5.656477763E1 +8.669980000E2,5.809371706E1 +8.672500000E2,5.957523428E1 +8.675890000E2,5.868790884E1 +8.678670000E2,6.643274765E1 +8.681530000E2,6.202304252E1 +8.684260000E2,6.167390940E1 +8.686760000E2,6.561664622E1 +8.689220000E2,6.221849135E1 +8.691620000E2,5.873701255E1 +8.694080000E2,5.721335717E1 +8.696600000E2,5.775578048E1 +8.699210000E2,6.139190630E1 +8.702060000E2,5.695582014E1 +8.705330000E2,5.285782467E1 +8.708800000E2,5.254436807E1 +8.711320000E2,5.941119733E1 +8.714840000E2,5.561687107E1 +8.717890000E2,5.226341013E1 +8.720340000E2,5.351737673E1 +8.723120000E2,5.581753669E1 +8.725450000E2,5.544476975E1 +8.727930000E2,5.112331517E1 +8.731050000E2,5.669948434E1 +8.733660000E2,5.553741274E1 +8.736450000E2,5.287392842E1 +8.738710000E2,5.342755356E1 +8.742030000E2,5.525376809E1 +8.745760000E2,5.790146612E1 +8.748470000E2,5.775550126E1 +8.750900000E2,5.828043309E1 +8.753860000E2,5.689517506E1 +8.756490000E2,5.836000549E1 +8.759170000E2,5.887049385E1 +8.761640000E2,5.731343570E1 +8.764240000E2,5.947081752E1 +8.766660000E2,5.735732777E1 +8.769150000E2,5.791222148E1 +8.771870000E2,5.217820200E1 +8.775110000E2,5.373516267E1 +8.777550000E2,5.639663701E1 +8.779960000E2,5.308435393E1 +8.782370000E2,5.327040257E1 +8.785510000E2,5.539866825E1 +8.788050000E2,5.451580533E1 +8.791100000E2,5.664888244E1 +8.793670000E2,5.439058144E1 +8.796110000E2,6.546629591E1 +8.799090000E2,6.080313073E1 +8.801560000E2,6.023654065E1 +8.804070000E2,5.547022044E1 +8.807450000E2,5.933402552E1 +8.809880000E2,6.073235462E1 +8.812850000E2,5.811897337E1 +8.815210000E2,5.670873426E1 +8.818240000E2,6.239450766E1 +8.821160000E2,6.033779387E1 +8.823610000E2,5.921328684E1 +8.826600000E2,5.808215882E1 +8.828910000E2,5.927124720E1 +8.831280000E2,5.254346564E1 +8.834120000E2,5.755316817E1 +8.837180000E2,5.815703318E1 +8.840150000E2,5.925974643E1 +8.842610000E2,5.406291788E1 +8.845520000E2,5.892672719E1 +8.847970000E2,6.343231596E1 +8.850390000E2,6.045689612E1 +8.853340000E2,5.903303339E1 +8.855810000E2,5.897514906E1 +8.858230000E2,5.682843230E1 +8.860690000E2,4.647265993E1 +8.863400000E2,5.617216143E1 +8.865730000E2,5.412892937E1 +8.869100000E2,6.210166513E1 +8.872070000E2,6.369099543E1 +8.874540000E2,6.052073025E1 +8.877480000E2,6.125108403E1 +8.879990000E2,6.087163347E1 +8.882550000E2,6.365510666E1 +8.885320000E2,5.341778352E1 +8.887600000E2,5.238943476E1 +8.890050000E2,6.378561240E1 +8.892460000E2,6.182956815E1 +8.895070000E2,6.027537659E1 +8.897770000E2,5.747996426E1 +8.901220000E2,5.606477689E1 +8.903620000E2,5.816493441E1 +8.907030000E2,5.740436721E1 +8.909540000E2,5.812990427E1 +8.912060000E2,5.757163286E1 +8.914520000E2,5.669306215E1 +8.917150000E2,5.593698617E1 +8.919580000E2,5.867011196E1 +8.922060000E2,6.001129970E1 +8.924480000E2,6.247831114E1 +8.927080000E2,5.501506807E1 +8.929550000E2,5.918039480E1 +8.932790000E2,5.750337148E1 +8.935260000E2,5.382626014E1 +8.937850000E2,5.632583646E1 +8.940370000E2,5.552393419E1 +8.943380000E2,5.417609473E1 +8.946050000E2,5.314873345E1 +8.948570000E2,5.537690953E1 +8.951790000E2,6.168371256E1 +8.954540000E2,6.142331687E1 +8.957690000E2,5.914263764E1 +8.960690000E2,6.039127428E1 +8.963670000E2,5.303465172E1 +8.966720000E2,5.819495208E1 +8.969200000E2,5.956457754E1 +8.972240000E2,5.554166388E1 +8.974940000E2,5.700583380E1 +8.978160000E2,5.525596264E1 +8.981210000E2,5.878997726E1 +8.983720000E2,5.661289659E1 +8.986510000E2,6.039909322E1 +8.988730000E2,5.569487247E1 +8.991240000E2,5.857026750E1 +8.993800000E2,6.116905404E1 +8.996580000E2,6.331625006E1 +8.998890000E2,5.612470465E1 +9.001440000E2,5.098243988E1 +9.004020000E2,5.779474181E1 +9.006650000E2,5.597754805E1 +9.009440000E2,5.706395638E1 +9.012380000E2,5.989184595E1 +9.015000000E2,5.905145002E1 +9.017620000E2,5.913397617E1 +9.020230000E2,5.831976398E1 +9.022900000E2,5.400731512E1 +9.025900000E2,6.547285797E1 +9.029050000E2,6.534571775E1 +9.032100000E2,5.428834230E1 +9.034580000E2,4.919896084E1 +9.037180000E2,5.326934205E1 +9.039740000E2,5.135684539E1 +9.042700000E2,5.784030554E1 +9.045180000E2,5.789711892E1 +9.048150000E2,5.501985460E1 +9.050680000E2,5.394185103E1 +9.053920000E2,5.504541187E1 +9.056620000E2,5.574384904E1 +9.059260000E2,5.198297704E1 +9.062920000E2,5.507423148E1 +9.065460000E2,5.073979477E1 +9.068090000E2,5.409355601E1 +9.071500000E2,5.842003605E1 +9.074380000E2,6.323761852E1 +9.076890000E2,5.475142925E1 +9.079510000E2,5.285089191E1 +9.082580000E2,6.228883476E1 +9.085110000E2,6.229139223E1 +9.087590000E2,5.849936549E1 +9.090220000E2,6.382664868E1 +9.092560000E2,5.234586511E1 +9.095720000E2,5.506613760E1 +9.098700000E2,5.883918884E1 +9.101180000E2,5.722745073E1 +9.103980000E2,6.006905181E1 +9.106670000E2,6.333821195E1 +9.109390000E2,5.997503412E1 +9.111770000E2,5.691091005E1 +9.114250000E2,5.629684565E1 +9.117070000E2,5.944947286E1 +9.119370000E2,5.757115704E1 +9.122030000E2,5.617546709E1 +9.125090000E2,5.506166951E1 +9.128480000E2,5.345826069E1 +9.131070000E2,5.586702127E1 +9.133900000E2,6.075354367E1 +9.137040000E2,5.668960998E1 +9.139920000E2,5.584388878E1 +9.142800000E2,5.668519299E1 +9.145740000E2,5.400550993E1 +9.148220000E2,5.668991412E1 +9.150670000E2,5.455006531E1 +9.153720000E2,5.750041942E1 +9.156590000E2,5.756327349E1 +9.159630000E2,5.822694927E1 +9.162110000E2,5.764545771E1 +9.164660000E2,5.716015909E1 +9.167560000E2,5.136001811E1 +9.170200000E2,4.706951064E1 +9.172710000E2,4.999131008E1 +9.175180000E2,5.619976433E1 +9.178030000E2,5.463675948E1 +9.180580000E2,4.995546642E1 +9.183000000E2,5.328928391E1 +9.185570000E2,4.808104957E1 +9.188650000E2,5.411517612E1 +9.191080000E2,5.672946344E1 +9.194270000E2,5.737096863E1 +9.196850000E2,5.974051238E1 +9.199830000E2,5.656564726E1 +9.202340000E2,5.709524531E1 +9.204810000E2,5.408385116E1 +9.208240000E2,5.414410830E1 +9.210650000E2,5.638214177E1 +9.213330000E2,5.753313030E1 +9.216130000E2,5.354803656E1 +9.219120000E2,6.191736419E1 +9.221480000E2,5.734366551E1 +9.224580000E2,5.684475304E1 +9.228030000E2,6.045431811E1 +9.230950000E2,5.973057312E1 +9.233960000E2,5.537690593E1 +9.236620000E2,5.411771801E1 +9.239600000E2,5.513839001E1 +9.242140000E2,5.699753068E1 +9.244670000E2,6.643461088E1 +9.247300000E2,6.062391899E1 +9.250330000E2,5.798096332E1 +9.253240000E2,6.347140522E1 +9.255740000E2,6.166496817E1 +9.259250000E2,6.190058171E1 +9.261820000E2,6.329204590E1 +9.264380000E2,6.389135880E1 +9.267030000E2,5.917517639E1 +9.269480000E2,5.809772267E1 +9.272170000E2,5.733235238E1 +9.274780000E2,5.226841119E1 +9.277860000E2,5.876554483E1 +9.280720000E2,6.281089568E1 +9.283510000E2,5.368859448E1 +9.286400000E2,5.449014251E1 +9.289370000E2,5.589991313E1 +9.292390000E2,5.452044152E1 +9.294860000E2,5.574135623E1 +9.297800000E2,5.656551806E1 +9.300200000E2,5.368800996E1 +9.302990000E2,5.374372369E1 +9.305490000E2,5.520696346E1 +9.308500000E2,5.642038107E1 +9.311480000E2,5.958603376E1 +9.314510000E2,5.775531382E1 +9.316980000E2,5.561486787E1 +9.319610000E2,5.826734748E1 +9.322700000E2,5.604871965E1 +9.325550000E2,5.170668645E1 +9.328670000E2,5.089285684E1 +9.331190000E2,4.724853188E1 +9.333790000E2,4.756075237E1 +9.336260000E2,5.199039629E1 +9.338890000E2,4.980140945E1 +9.341620000E2,5.530081877E1 +9.344120000E2,5.549144740E1 +9.347250000E2,5.515929093E1 +9.349780000E2,5.399104933E1 +9.352760000E2,5.325801117E1 +9.356240000E2,5.040008457E1 +9.359420000E2,5.360316460E1 +9.361890000E2,5.191591881E1 +9.364390000E2,5.324554606E1 +9.366970000E2,5.654671572E1 +9.370100000E2,5.711795620E1 +9.372590000E2,5.478625541E1 +9.375950000E2,5.667621371E1 +9.378550000E2,5.463565976E1 +9.381050000E2,5.398825590E1 +9.383580000E2,5.436030102E1 +9.386390000E2,5.091983440E1 +9.389120000E2,5.286705124E1 +9.391550000E2,5.236775571E1 +9.394300000E2,5.738794921E1 +9.397170000E2,5.727939554E1 +9.399750000E2,6.319402051E1 +9.402560000E2,5.468250624E1 +9.405530000E2,5.641852830E1 +9.408670000E2,6.200700436E1 +9.411390000E2,6.163446308E1 +9.413860000E2,7.148312536E1 +9.416340000E2,6.050927243E1 +9.419040000E2,5.667078757E1 +9.421350000E2,5.749142651E1 +9.424700000E2,5.240604485E1 +9.427760000E2,5.466454134E1 +9.430280000E2,6.082141946E1 +9.433300000E2,6.003969647E1 +9.436110000E2,6.121195378E1 +9.438460000E2,5.625129518E1 +9.441420000E2,5.911131348E1 +9.443880000E2,5.468317436E1 +9.446840000E2,6.009033853E1 +9.449440000E2,5.906624737E1 +9.452490000E2,5.464875325E1 +9.455970000E2,5.384566268E1 +9.458510000E2,5.044039840E1 +9.461140000E2,5.035886237E1 +9.463820000E2,5.734112986E1 +9.466620000E2,5.229112628E1 +9.469690000E2,6.028523542E1 +9.472250000E2,5.837101422E1 +9.475000000E2,5.619491985E1 +9.477970000E2,5.364209552E1 +9.480560000E2,5.511055516E1 +9.483560000E2,5.308396885E1 +9.486650000E2,5.587440008E1 +9.490640000E2,5.273632850E1 +9.493730000E2,6.231816715E1 +9.496570000E2,6.253734875E1 +9.499030000E2,5.554720788E1 +9.501460000E2,5.631566079E1 +9.503970000E2,5.626896653E1 +9.506490000E2,5.691941114E1 +9.508990000E2,5.116659255E1 +9.511440000E2,4.922875084E1 +9.514130000E2,5.936693495E1 +9.517070000E2,5.638156112E1 +9.520200000E2,5.180629212E1 +9.523780000E2,4.998674108E1 +9.526570000E2,4.841587788E1 +9.529100000E2,5.028896526E1 +9.531650000E2,4.965921907E1 +9.534690000E2,4.493319669E1 +9.537260000E2,4.598612712E1 +9.539740000E2,5.276251951E1 +9.542810000E2,4.126037796E1 +9.545830000E2,4.737114191E1 +9.548330000E2,4.411553821E1 +9.550850000E2,4.440050708E1 +9.553840000E2,5.260541790E1 +9.556980000E2,5.273901651E1 +9.559710000E2,5.383409632E1 +9.562220000E2,5.239354977E1 +9.564980000E2,4.759742823E1 +9.568040000E2,5.239869448E1 +9.570530000E2,5.238241691E1 +9.573300000E2,5.227349879E1 +9.575630000E2,5.272394727E1 +9.578410000E2,5.414710772E1 +9.580970000E2,5.325895305E1 +9.583410000E2,5.577122645E1 +9.586370000E2,5.015645058E1 +9.590040000E2,5.173028231E1 +9.593040000E2,5.447959265E1 +9.595640000E2,5.484713415E1 +9.598110000E2,5.470137539E1 +9.601060000E2,5.878769788E1 +9.603740000E2,5.851189839E1 +9.606810000E2,5.400762096E1 +9.609290000E2,5.749049444E1 +9.611870000E2,5.241750519E1 +9.614480000E2,4.979747952E1 +9.616960000E2,5.096881110E1 +9.620030000E2,5.149804171E1 +9.623180000E2,5.481599911E1 +9.625540000E2,5.138365056E1 +9.628240000E2,5.235851031E1 +9.630470000E2,4.871540913E1 +9.632880000E2,5.651540461E1 +9.635860000E2,5.650278128E1 +9.638210000E2,5.704973755E1 +9.641160000E2,5.757712252E1 +9.643960000E2,5.881159691E1 +9.646600000E2,5.355579494E1 +9.649750000E2,5.539751700E1 +9.652910000E2,4.797714339E1 +9.655520000E2,5.082548637E1 +9.658080000E2,5.579830605E1 +9.660780000E2,5.554406278E1 +9.663250000E2,5.354814316E1 +9.665660000E2,5.463107171E1 +9.668090000E2,5.368692433E1 +9.671300000E2,5.364867335E1 +9.674540000E2,5.468973775E1 +9.677060000E2,5.815904844E1 +9.680020000E2,5.598522308E1 +9.682480000E2,5.541083624E1 +9.685850000E2,5.512396132E1 +9.688400000E2,5.530796688E1 +9.691210000E2,5.433954611E1 +9.693810000E2,5.507440645E1 +9.696820000E2,5.086817906E1 +9.699140000E2,5.696191489E1 +9.701640000E2,5.845256581E1 +9.704420000E2,5.620226260E1 +9.706770000E2,5.629047170E1 +9.709750000E2,5.811655252E1 +9.712290000E2,5.703185419E1 +9.714900000E2,5.716734774E1 +9.718450000E2,5.493596869E1 +9.720910000E2,5.909437017E1 +9.723380000E2,5.710675060E1 +9.725910000E2,5.780279559E1 +9.728920000E2,5.860060144E1 +9.731360000E2,6.078900999E1 +9.734260000E2,5.852116194E1 +9.736640000E2,5.905899453E1 +9.739130000E2,5.636299630E1 +9.742090000E2,6.289355999E1 +9.744870000E2,6.167909115E1 +9.747290000E2,6.098057792E1 +9.750690000E2,5.906667343E1 +9.753320000E2,6.018572501E1 +9.756150000E2,5.718512970E1 +9.759100000E2,5.146063018E1 +9.761570000E2,5.733244632E1 +9.764050000E2,5.368365894E1 +9.766600000E2,5.486016267E1 +9.769150000E2,5.908582599E1 +9.771910000E2,5.733773036E1 +9.774400000E2,5.566361416E1 +9.777680000E2,5.819125256E1 +9.781220000E2,5.947694304E1 +9.783640000E2,6.140057637E1 +9.786330000E2,5.721849738E1 +9.788550000E2,5.617504209E1 +9.791010000E2,5.660293849E1 +9.793960000E2,5.174001770E1 +9.796880000E2,5.083474014E1 +9.799290000E2,5.184104339E1 +9.801850000E2,5.025385313E1 +9.804850000E2,5.286605500E1 +9.807270000E2,5.586849562E1 +9.809750000E2,5.666036754E1 +9.812950000E2,5.248500918E1 +9.815810000E2,5.416072977E1 +9.818360000E2,5.799655965E1 +9.821300000E2,5.801841935E1 +9.823770000E2,5.977514968E1 +9.826270000E2,5.676871456E1 +9.828850000E2,5.104814549E1 +9.831730000E2,5.834620153E1 +9.834010000E2,5.660640582E1 +9.836620000E2,5.686451748E1 +9.839750000E2,5.998440952E1 +9.842240000E2,5.556687478E1 +9.846000000E2,5.811069315E1 +9.848430000E2,5.843499893E1 +9.851250000E2,5.180956247E1 +9.853860000E2,5.206236639E1 +9.856480000E2,5.641840701E1 +9.859110000E2,5.518588565E1 +9.861920000E2,5.697237679E1 +9.864550000E2,5.411246614E1 +9.867510000E2,5.214533821E1 +9.869880000E2,5.642389575E1 +9.872440000E2,6.015294933E1 +9.875470000E2,5.809991100E1 +9.879150000E2,6.420044247E1 +9.881610000E2,6.042656173E1 +9.884280000E2,5.938959873E1 +9.886840000E2,6.059888233E1 +9.889870000E2,5.282749720E1 +9.892620000E2,5.638110380E1 +9.895440000E2,4.900409689E1 +9.897740000E2,4.971849802E1 +9.900320000E2,5.061428463E1 +9.903370000E2,5.829922071E1 +9.905860000E2,5.812083213E1 +9.908910000E2,5.500587720E1 +9.911860000E2,5.677481104E1 +9.914380000E2,5.502691141E1 +9.916830000E2,5.294500154E1 +9.919560000E2,5.700444986E1 +9.921770000E2,5.448756275E1 +9.924220000E2,5.785741234E1 +9.927280000E2,5.702180374E1 +9.929670000E2,6.013415875E1 +9.932080000E2,5.533496795E1 +9.934640000E2,5.695301526E1 +9.937440000E2,5.436173732E1 +9.940620000E2,5.092257074E1 +9.944480000E2,4.973000793E1 +9.946940000E2,4.871235512E1 +9.949410000E2,5.171412848E1 +9.951960000E2,5.643245777E1 +9.954520000E2,5.548819002E1 +9.957530000E2,5.694822585E1 +9.960600000E2,5.668072577E1 +9.963110000E2,5.547400320E1 +9.966010000E2,5.667137699E1 +9.968430000E2,5.866196066E1 +9.971120000E2,5.641527163E1 +9.974300000E2,5.505243365E1 +9.977140000E2,5.491253296E1 +9.979940000E2,5.642986287E1 +9.982400000E2,5.111113898E1 +9.985270000E2,5.228293633E1 +9.987770000E2,5.380023266E1 +9.990760000E2,5.259255492E1 +9.993610000E2,5.359948032E1 +9.996550000E2,5.817439497E1 +9.999080000E2,5.712087238E1 +1.000199000E3,6.016800470E1 +1.000435000E3,5.758076017E1 +1.000772000E3,5.328951429E1 +1.001047000E3,5.373102399E1 +1.001303000E3,5.905317642E1 +1.001622000E3,5.478240688E1 +1.001877000E3,5.648896451E1 +1.002173000E3,5.587033976E1 +1.002422000E3,5.995513955E1 +1.002724000E3,6.295760047E1 +1.003003000E3,5.978713154E1 +1.003261000E3,5.669754444E1 +1.003545000E3,5.577942906E1 +1.003827000E3,6.186873273E1 +1.004183000E3,6.253868639E1 +1.004493000E3,5.777226132E1 +1.004770000E3,6.482227668E1 +1.005072000E3,5.923751414E1 +1.005323000E3,5.644465637E1 +1.005601000E3,6.074750234E1 +1.005832000E3,5.683683327E1 +1.006147000E3,5.957418887E1 +1.006418000E3,6.134946851E1 +1.006713000E3,5.641852300E1 +1.006952000E3,5.637674327E1 +1.007310000E3,5.484290206E1 +1.007589000E3,6.426865013E1 +1.007886000E3,5.712036033E1 +1.008127000E3,5.768385080E1 +1.008427000E3,5.812466970E1 +1.008666000E3,6.112344783E1 +1.008973000E3,5.606588478E1 +1.009269000E3,5.809328667E1 +1.009507000E3,5.371315435E1 +1.009763000E3,5.527533595E1 +1.010003000E3,5.390597114E1 +1.010379000E3,5.652035402E1 +1.010658000E3,5.490058638E1 +1.010920000E3,5.927019017E1 +1.011197000E3,5.293113048E1 +1.011458000E3,5.179006266E1 +1.011718000E3,5.366462930E1 +1.011979000E3,5.569421827E1 +1.012229000E3,5.341899104E1 +1.012477000E3,4.863208748E1 +1.012772000E3,6.037154816E1 +1.013036000E3,5.430849576E1 +1.013284000E3,5.735938261E1 +1.013671000E3,5.526482118E1 +1.013957000E3,5.731780297E1 +1.014225000E3,5.205368153E1 +1.014486000E3,5.548863756E1 +1.014733000E3,5.265038263E1 +1.015033000E3,5.986876322E1 +1.015314000E3,5.130643680E1 +1.015590000E3,6.086878634E1 +1.015830000E3,5.798526739E1 +1.016137000E3,6.825745236E1 +1.016387000E3,5.828900876E1 +1.016655000E3,5.873097643E1 +1.017001000E3,6.454090665E1 +1.017329000E3,6.385512775E1 +1.017637000E3,6.691081911E1 +1.017938000E3,6.580217665E1 +1.018229000E3,6.485489311E1 +1.018470000E3,6.387101962E1 +1.018706000E3,6.616835921E1 +1.018997000E3,5.951737331E1 +1.019235000E3,5.386458503E1 +1.019536000E3,5.756977765E1 +1.019801000E3,5.811747841E1 +1.020064000E3,5.930001089E1 +1.020406000E3,5.469664450E1 +1.020673000E3,5.181220980E1 +1.020925000E3,5.483858346E1 +1.021232000E3,5.716842569E1 +1.021527000E3,5.738254897E1 +1.021762000E3,5.628034518E1 +1.022007000E3,5.850971228E1 +1.022258000E3,5.329919175E1 +1.022556000E3,5.482637446E1 +1.022813000E3,5.690503448E1 +1.023071000E3,5.317501594E1 +1.023336000E3,4.870888301E1 +1.023687000E3,6.132281620E1 +1.023965000E3,6.262505101E1 +1.024220000E3,6.180229149E1 +1.024496000E3,6.130993335E1 +1.024741000E3,6.231376381E1 +1.025040000E3,6.164360059E1 +1.025279000E3,5.910065798E1 +1.025533000E3,5.622173801E1 +1.025821000E3,5.290311975E1 +1.026116000E3,5.028293308E1 +1.026403000E3,5.581740437E1 +1.026664000E3,5.988277804E1 +1.027011000E3,5.730548262E1 +1.027305000E3,5.417769573E1 +1.027578000E3,5.250932185E1 +1.027819000E3,5.139919708E1 +1.028128000E3,5.061852216E1 +1.028380000E3,4.722292138E1 +1.028683000E3,5.983070917E1 +1.028956000E3,6.045269830E1 +1.029182000E3,5.777292957E1 +1.029431000E3,5.497807442E1 +1.029734000E3,5.533889528E1 +1.030063000E3,5.373558580E1 +1.030323000E3,5.600729212E1 +1.030620000E3,5.467159629E1 +1.030863000E3,5.246400101E1 +1.031110000E3,5.468037288E1 +1.031367000E3,5.850364516E1 +1.031646000E3,5.490958739E1 +1.031911000E3,5.866929845E1 +1.032210000E3,5.708288591E1 +1.032475000E3,5.498129629E1 +1.032736000E3,5.670272599E1 +1.032986000E3,5.317143219E1 +1.033315000E3,5.758413128E1 +1.033557000E3,6.361635596E1 +1.033846000E3,5.513973379E1 +1.034093000E3,5.215484095E1 +1.034399000E3,5.465926438E1 +1.034684000E3,5.588902955E1 +1.034978000E3,5.387672604E1 +1.035280000E3,5.595327755E1 +1.035543000E3,5.621513504E1 +1.035825000E3,5.991854954E1 +1.036079000E3,5.864640009E1 +1.036322000E3,6.072021936E1 +1.036666000E3,5.462749592E1 +1.036971000E3,5.329083651E1 +1.037264000E3,5.401214501E1 +1.037542000E3,5.242806591E1 +1.037843000E3,5.573267887E1 +1.038091000E3,5.224254554E1 +1.038380000E3,5.453929206E1 +1.038635000E3,5.371826859E1 +1.038891000E3,4.369246898E1 +1.039145000E3,4.547521933E1 +1.039418000E3,4.204639660E1 +1.039750000E3,4.426760298E1 +1.039990000E3,4.955659514E1 +1.040294000E3,4.960859899E1 +1.040560000E3,4.841380220E1 +1.040808000E3,4.914533708E1 +1.041104000E3,4.650609937E1 +1.041370000E3,4.849101938E1 +1.041622000E3,5.065930763E1 +1.041920000E3,4.744161935E1 +1.042161000E3,4.448519483E1 +1.042478000E3,4.726532690E1 +1.042725000E3,4.667923132E1 +1.043042000E3,4.704822757E1 +1.043307000E3,3.950691106E1 +1.043560000E3,5.249697508E1 +1.043835000E3,4.753687679E1 +1.044091000E3,4.843049138E1 +1.044350000E3,5.394643708E1 +1.044644000E3,4.769079035E1 +1.044887000E3,5.111291504E1 +1.045194000E3,5.247298633E1 +1.045445000E3,4.904344971E1 +1.045693000E3,4.405437847E1 +1.045988000E3,4.750888237E1 +1.046301000E3,4.305046000E1 +1.046518000E3,4.630901796E1 +1.046813000E3,4.756289225E1 +1.047053000E3,4.661089273E1 +1.047331000E3,6.143859736E1 +1.047566000E3,5.702483033E1 +1.047860000E3,5.015015196E1 +1.048098000E3,5.180675157E1 +1.048397000E3,4.645218330E1 +1.048640000E3,4.317726503E1 +1.048918000E3,4.962602549E1 +1.049159000E3,4.922447391E1 +1.049523000E3,4.310015818E1 +1.049767000E3,5.584844461E1 +1.050011000E3,5.550466055E1 +1.050294000E3,5.076679182E1 +1.050523000E3,4.777565498E1 +1.050776000E3,5.078379664E1 +1.051031000E3,4.412618688E1 +1.051298000E3,3.933148532E1 +1.051551000E3,4.240994962E1 +1.051799000E3,3.715036539E1 +1.052054000E3,4.541823437E1 +1.052312000E3,3.252240989E1 +1.052661000E3,4.298387800E1 +1.052922000E3,4.065675211E1 +1.053171000E3,3.851226965E1 +1.053417000E3,3.833414863E1 +1.053702000E3,3.734543870E1 +1.053967000E3,4.406198141E1 +1.054269000E3,3.397952572E1 +1.054518000E3,3.018425986E1 +1.054795000E3,2.659023927E1 +1.055055000E3,3.230579484E1 +1.055319000E3,4.027650377E1 +1.055588000E3,3.256611719E1 +1.055936000E3,3.203904394E1 +1.056189000E3,3.024692018E1 +1.056469000E3,4.044611203E1 +1.056698000E3,3.245705712E1 +1.056956000E3,5.087039919E1 +1.057201000E3,5.278557071E1 +1.057507000E3,6.996122129E1 +1.057766000E3,6.951439283E1 +1.058027000E3,6.731609209E1 +1.058291000E3,5.787293958E1 +1.058571000E3,5.774874245E1 +1.058801000E3,5.291748766E1 +1.059132000E3,4.352220528E1 +1.059391000E3,5.556254729E1 +1.059665000E3,5.339220405E1 +1.059951000E3,5.593145301E1 +1.060235000E3,5.299996372E1 +1.060492000E3,4.882317894E1 +1.060733000E3,3.790707311E1 +1.060975000E3,3.470192076E1 +1.061278000E3,4.481563830E1 +1.061519000E3,4.823008935E1 +1.061816000E3,4.719850269E1 +1.062076000E3,4.706381680E1 +1.062331000E3,4.530378435E1 +1.062576000E3,3.456809562E1 +1.062882000E3,3.742453964E1 +1.063154000E3,3.905594906E1 +1.063397000E3,3.672857244E1 +1.063694000E3,2.941779164E1 +1.063926000E3,2.995931983E1 +1.064168000E3,3.455311118E1 +1.064461000E3,3.254662869E1 +1.064708000E3,3.652583843E1 +1.065001000E3,5.229424666E1 +1.065352000E3,5.178814165E1 +1.065606000E3,4.798098259E1 +1.065854000E3,3.636652329E1 +1.066121000E3,4.558252535E1 +1.066366000E3,3.902840121E1 +1.066629000E3,3.106435508E1 +1.066887000E3,2.541330464E1 +1.067179000E3,3.474902335E1 +1.067449000E3,4.492275189E1 +1.067698000E3,3.860211372E1 +1.067955000E3,4.332670525E1 +1.068251000E3,5.147667691E1 +1.068546000E3,5.152069997E1 +1.068797000E3,4.540650098E1 +1.069105000E3,4.486446450E1 +1.069378000E3,4.196481867E1 +1.069632000E3,4.863200791E1 +1.069908000E3,3.878967071E1 +1.070151000E3,3.630888030E1 +1.070413000E3,2.964429880E1 +1.070682000E3,3.354707636E1 +1.070956000E3,4.008490969E1 +1.071248000E3,3.576577653E1 +1.071553000E3,4.349754488E1 +1.071886000E3,3.824859907E1 +1.072130000E3,3.455877689E1 +1.072406000E3,3.622999465E1 +1.072717000E3,3.637608237E1 +1.072984000E3,3.645219519E1 +1.073255000E3,4.353729148E1 +1.073603000E3,4.287473251E1 +1.073856000E3,4.842203791E1 +1.074097000E3,4.484407311E1 +1.074356000E3,4.397007110E1 +1.074628000E3,4.695884235E1 +1.074931000E3,4.627189963E1 +1.075264000E3,4.689571524E1 +1.075614000E3,5.203841291E1 +1.075923000E3,4.610184941E1 +1.076163000E3,4.404432471E1 +1.076475000E3,4.923215011E1 +1.076765000E3,4.466142180E1 +1.077062000E3,4.987282715E1 +1.077375000E3,4.461839454E1 +1.077687000E3,5.085403766E1 +1.077991000E3,4.674512295E1 +1.078232000E3,5.167180279E1 +1.078544000E3,4.780582457E1 +1.078939000E3,4.593914406E1 +1.079187000E3,4.061652220E1 +1.079434000E3,4.347669045E1 +1.079712000E3,4.326983820E1 +1.079966000E3,3.511950991E1 +1.080260000E3,4.755279745E1 +1.080506000E3,4.756343862E1 +1.080756000E3,4.779732167E1 +1.081049000E3,4.991962747E1 +1.081293000E3,5.213887128E1 +1.081586000E3,5.357624469E1 +1.081916000E3,5.141456645E1 +1.082165000E3,5.036532462E1 +1.082460000E3,4.962769973E1 +1.082696000E3,4.506404490E1 +1.082988000E3,4.537987312E1 +1.083220000E3,4.738457007E1 +1.083529000E3,4.698711193E1 +1.083769000E3,4.571430081E1 +1.084079000E3,4.980908007E1 +1.084324000E3,5.082282040E1 +1.084590000E3,5.406004268E1 +1.084876000E3,5.436375886E1 +1.085258000E3,5.361506257E1 +1.085509000E3,5.202937925E1 +1.085815000E3,5.324976969E1 +1.086057000E3,5.371445731E1 +1.086301000E3,5.282162917E1 +1.086550000E3,5.221281857E1 +1.086802000E3,5.263727375E1 +1.087126000E3,5.703022139E1 +1.087384000E3,5.519432869E1 +1.087646000E3,5.426647490E1 +1.087939000E3,5.407342864E1 +1.088175000E3,5.235924404E1 +1.088520000E3,4.681002832E1 +1.088812000E3,4.891237586E1 +1.089076000E3,4.699020733E1 +1.089350000E3,4.902871382E1 +1.089591000E3,5.078145117E1 +1.089837000E3,5.041791921E1 +1.090133000E3,4.603650794E1 +1.090430000E3,4.871755485E1 +1.090660000E3,5.111421073E1 +1.090911000E3,4.581894631E1 +1.091248000E3,4.988189917E1 +1.091630000E3,5.341365920E1 +1.091902000E3,4.962858025E1 +1.092183000E3,4.315344358E1 +1.092440000E3,4.664431132E1 +1.092683000E3,4.616459192E1 +1.092923000E3,4.765071496E1 +1.093171000E3,4.163360687E1 +1.093473000E3,4.537777608E1 +1.093714000E3,4.783603025E1 +1.094007000E3,4.845414260E1 +1.094261000E3,4.799870549E1 +1.094499000E3,4.651309815E1 +1.094792000E3,5.003648984E1 +1.095123000E3,5.202534254E1 +1.095372000E3,5.709400077E1 +1.095625000E3,5.694079106E1 +1.095896000E3,5.715452089E1 +1.096196000E3,5.523378380E1 +1.096438000E3,5.375558627E1 +1.096737000E3,5.665208041E1 +1.096991000E3,5.314654737E1 +1.097292000E3,5.142447849E1 +1.097557000E3,5.330628285E1 +1.097827000E3,5.512040694E1 +1.098167000E3,5.399583122E1 +1.098472000E3,5.540663813E1 +1.098720000E3,5.200546986E1 +1.098960000E3,4.676140326E1 +1.099243000E3,4.798657093E1 +1.099544000E3,4.841724285E1 +1.099804000E3,5.642371618E1 +1.100109000E3,5.409000726E1 +1.100381000E3,5.348646719E1 +1.100630000E3,5.346537578E1 +1.100927000E3,5.422782845E1 +1.101164000E3,5.395323822E1 +1.101495000E3,5.383967560E1 +1.101763000E3,5.667828538E1 +1.102044000E3,4.764690784E1 +1.102307000E3,5.353530254E1 +1.102613000E3,5.568430762E1 +1.102906000E3,5.431580275E1 +1.103147000E3,5.193331555E1 +1.103441000E3,5.040945762E1 +1.103677000E3,5.333005838E1 +1.103968000E3,4.947534745E1 +1.104272000E3,5.306270968E1 +1.104564000E3,5.537230515E1 +1.104799000E3,4.876041085E1 +1.105069000E3,5.109409535E1 +1.105330000E3,5.087734214E1 +1.105587000E3,5.225642483E1 +1.105838000E3,5.176680091E1 +1.106135000E3,5.535939212E1 +1.106380000E3,5.666892185E1 +1.106622000E3,5.658846562E1 +1.106895000E3,5.577897889E1 +1.107150000E3,5.157178717E1 +1.107431000E3,5.284488409E1 +1.107756000E3,5.415639955E1 +1.108002000E3,5.465643057E1 +1.108313000E3,4.654328988E1 +1.108563000E3,5.038890380E1 +1.108811000E3,4.602751738E1 +1.109073000E3,4.801243396E1 +1.109375000E3,4.782472616E1 +1.109667000E3,4.666447221E1 +1.109943000E3,5.156469126E1 +1.110192000E3,4.949682888E1 +1.110448000E3,4.919673339E1 +1.110752000E3,4.862521519E1 +1.111045000E3,5.122379655E1 +1.111295000E3,4.813892217E1 +1.111515000E3,4.901611396E1 +1.111761000E3,4.905664967E1 +1.112005000E3,4.647618514E1 +1.112265000E3,4.730688076E1 +1.112537000E3,5.039121351E1 +1.112793000E3,4.985611957E1 +1.113101000E3,5.474563863E1 +1.113387000E3,5.028870882E1 +1.113678000E3,5.073784750E1 +1.113952000E3,4.995138555E1 +1.114291000E3,4.790039203E1 +1.114554000E3,4.764335594E1 +1.114849000E3,5.057104591E1 +1.115096000E3,5.107398730E1 +1.115401000E3,4.800391913E1 +1.115672000E3,4.553282874E1 +1.115895000E3,4.569523337E1 +1.116194000E3,4.480844215E1 +1.116425000E3,4.772339962E1 +1.116664000E3,5.255452638E1 +1.116906000E3,4.927433934E1 +1.117202000E3,4.871369865E1 +1.117530000E3,4.928110420E1 +1.117840000E3,5.705383563E1 +1.118146000E3,4.880674861E1 +1.118418000E3,5.038180726E1 +1.118687000E3,5.145980404E1 +1.118950000E3,5.338008269E1 +1.119227000E3,5.227728425E1 +1.119468000E3,5.450689216E1 +1.119736000E3,5.844246451E1 +1.120049000E3,5.459398611E1 +1.120351000E3,5.526423567E1 +1.120605000E3,5.228963309E1 +1.120918000E3,5.598288902E1 +1.121182000E3,5.280889802E1 +1.121489000E3,4.974717420E1 +1.121729000E3,5.137523152E1 +1.121978000E3,5.052356297E1 +1.122235000E3,5.240368249E1 +1.122503000E3,4.826380791E1 +1.122775000E3,5.095403791E1 +1.123036000E3,5.799909934E1 +1.123291000E3,4.889512711E1 +1.123587000E3,5.622808486E1 +1.123874000E3,5.230369090E1 +1.124235000E3,5.081102316E1 +1.124544000E3,5.628773803E1 +1.124826000E3,5.810547372E1 +1.125153000E3,5.508029719E1 +1.125432000E3,5.576573503E1 +1.125722000E3,5.346022180E1 +1.125978000E3,5.279748306E1 +1.126234000E3,5.604802053E1 +1.126502000E3,5.937326657E1 +1.126804000E3,5.703447215E1 +1.127047000E3,5.520354594E1 +1.127314000E3,5.551787326E1 +1.127554000E3,5.740837773E1 +1.127843000E3,5.663015330E1 +1.128135000E3,5.649615150E1 +1.128380000E3,5.731556257E1 +1.128677000E3,6.079986861E1 +1.128914000E3,5.820128856E1 +1.129207000E3,6.091746513E1 +1.129442000E3,6.126941240E1 +1.129745000E3,4.541170906E1 +1.129980000E3,4.341485096E1 +1.130277000E3,4.833777967E1 +1.130573000E3,4.472710223E1 +1.130815000E3,5.059675199E1 +1.131062000E3,3.863826940E1 +1.131353000E3,4.925455740E1 +1.131589000E3,4.859989956E1 +1.131881000E3,5.113067908E1 +1.132117000E3,5.054542106E1 +1.132418000E3,4.827479925E1 +1.132654000E3,4.610884488E1 +1.132948000E3,4.879734536E1 +1.133241000E3,5.074680390E1 +1.133563000E3,5.119298220E1 +1.133864000E3,4.861265792E1 +1.134166000E3,5.001512903E1 +1.134452000E3,5.059053464E1 +1.134716000E3,4.999839479E1 +1.134967000E3,4.960069086E1 +1.135222000E3,5.320256888E1 +1.135494000E3,5.604818163E1 +1.135742000E3,5.625768045E1 +1.135999000E3,5.261645024E1 +1.136244000E3,5.105081932E1 +1.136501000E3,5.616444939E1 +1.136847000E3,5.624064264E1 +1.137105000E3,5.654097446E1 +1.137391000E3,5.807884104E1 +1.137717000E3,5.436169891E1 +1.137970000E3,5.763959225E1 +1.138239000E3,5.465216875E1 +1.138486000E3,5.094509116E1 +1.138731000E3,5.425415233E1 +1.138977000E3,5.143709697E1 +1.139259000E3,5.032545705E1 +1.139527000E3,5.906031130E1 +1.139800000E3,5.308709054E1 +1.140168000E3,5.407062541E1 +1.140423000E3,5.585261351E1 +1.140694000E3,5.463535881E1 +1.140949000E3,5.407603664E1 +1.141230000E3,5.495767686E1 +1.141512000E3,5.639433741E1 +1.141818000E3,5.555715330E1 +1.142072000E3,5.729232944E1 +1.142323000E3,5.553013253E1 +1.142578000E3,5.648251207E1 +1.142844000E3,5.786931075E1 +1.143143000E3,6.007493220E1 +1.143523000E3,5.752076543E1 +1.143836000E3,5.573324560E1 +1.144090000E3,5.641950784E1 +1.144396000E3,5.532270625E1 +1.144644000E3,5.561239732E1 +1.144940000E3,5.206707456E1 +1.145212000E3,5.092140902E1 +1.145511000E3,5.452891649E1 +1.145770000E3,5.331137977E1 +1.146042000E3,5.366568195E1 +1.146338000E3,5.227174013E1 +1.146650000E3,5.423955559E1 +1.146934000E3,5.781916580E1 +1.147218000E3,5.532962824E1 +1.147467000E3,5.502661676E1 +1.147687000E3,5.823979674E1 +1.147961000E3,5.538066560E1 +1.148276000E3,5.423260060E1 +1.148528000E3,5.197461977E1 +1.148799000E3,5.154724487E1 +1.149057000E3,5.473685923E1 +1.149367000E3,5.647867848E1 +1.149660000E3,5.489455072E1 +1.150037000E3,6.072892064E1 +1.150335000E3,5.543869835E1 +1.150594000E3,5.667713742E1 +1.150870000E3,5.818755157E1 +1.151164000E3,5.210849760E1 +1.151411000E3,5.095671455E1 +1.151703000E3,5.254983272E1 +1.152002000E3,5.585064224E1 +1.152253000E3,5.739007574E1 +1.152582000E3,5.895179917E1 +1.152860000E3,5.461317681E1 +1.153122000E3,5.345759293E1 +1.153381000E3,5.267971619E1 +1.153684000E3,6.006602205E1 +1.153986000E3,5.573552061E1 +1.154286000E3,5.518963618E1 +1.154531000E3,5.342922095E1 +1.154792000E3,5.257536969E1 +1.155139000E3,4.887945516E1 +1.155435000E3,4.702411688E1 +1.155680000E3,4.867646616E1 +1.155978000E3,4.811861077E1 +1.156361000E3,4.915586406E1 +1.156670000E3,5.033026069E1 +1.156976000E3,5.393908378E1 +1.157274000E3,5.295128205E1 +1.157524000E3,5.249671789E1 +1.157816000E3,5.314344994E1 +1.158052000E3,5.237342933E1 +1.158353000E3,5.300284286E1 +1.158590000E3,5.170068449E1 +1.158867000E3,5.174146304E1 +1.159147000E3,4.929588783E1 +1.159411000E3,5.699090425E1 +1.159752000E3,5.266690351E1 +1.160068000E3,5.746767577E1 +1.160360000E3,5.375850846E1 +1.160640000E3,5.373794020E1 +1.160985000E3,5.304914530E1 +1.161280000E3,5.198754593E1 +1.161525000E3,5.019848207E1 +1.161766000E3,5.164623609E1 +1.162020000E3,5.363319210E1 +1.162324000E3,5.439011044E1 +1.162564000E3,5.304648945E1 +1.162816000E3,5.174573718E1 +1.163177000E3,4.505755779E1 +1.163462000E3,4.894753105E1 +1.163738000E3,5.064933943E1 +1.164013000E3,5.245879056E1 +1.164255000E3,5.017914517E1 +1.164568000E3,5.189205429E1 +1.164823000E3,5.038961444E1 +1.165052000E3,5.072118593E1 +1.165297000E3,4.831662547E1 +1.165552000E3,5.050204887E1 +1.165808000E3,5.308107982E1 +1.166062000E3,4.878509871E1 +1.166392000E3,5.002605106E1 +1.166654000E3,5.320265697E1 +1.166911000E3,4.403273534E1 +1.167180000E3,5.161386051E1 +1.167455000E3,4.986209571E1 +1.167692000E3,4.993305836E1 +1.167973000E3,5.173621365E1 +1.168216000E3,5.385559129E1 +1.168491000E3,5.543019156E1 +1.168757000E3,5.019966657E1 +1.169035000E3,5.569516326E1 +1.169296000E3,5.216419082E1 +1.169676000E3,5.398731996E1 +1.169933000E3,5.465625282E1 +1.170197000E3,5.451774184E1 +1.170449000E3,5.328129322E1 +1.170705000E3,5.452639907E1 +1.170963000E3,5.713735254E1 +1.171272000E3,5.551413923E1 +1.171528000E3,5.604966001E1 +1.171779000E3,5.340478404E1 +1.172038000E3,5.107817821E1 +1.172291000E3,5.218990306E1 +1.172602000E3,4.830451720E1 +1.172964000E3,5.276802164E1 +1.173245000E3,5.191204687E1 +1.173527000E3,5.337367972E1 +1.173838000E3,5.462664550E1 +1.174090000E3,5.304724513E1 +1.174379000E3,5.193251440E1 +1.174628000E3,5.283915893E1 +1.174936000E3,5.036641160E1 +1.175236000E3,4.890810708E1 +1.175487000E3,4.805298565E1 +1.175750000E3,5.067335741E1 +1.176019000E3,4.961207397E1 +1.176335000E3,4.820862314E1 +1.176634000E3,5.328684116E1 +1.176883000E3,5.122009001E1 +1.177165000E3,5.878687770E1 +1.177412000E3,5.487235950E1 +1.177709000E3,5.224569426E1 +1.178006000E3,5.403405997E1 +1.178246000E3,5.388661901E1 +1.178490000E3,5.237426881E1 +1.178734000E3,5.372043820E1 +1.179050000E3,5.471170909E1 +1.179387000E3,5.129350436E1 +1.179686000E3,4.660070824E1 +1.179916000E3,4.541361068E1 +1.180159000E3,4.365576113E1 +1.180466000E3,4.771103553E1 +1.180756000E3,4.863237791E1 +1.181008000E3,5.534959697E1 +1.181314000E3,5.376444060E1 +1.181609000E3,5.130885425E1 +1.181851000E3,5.256948786E1 +1.182151000E3,5.321964637E1 +1.182393000E3,5.074776981E1 +1.182622000E3,4.979941250E1 +1.182873000E3,5.445637667E1 +1.183116000E3,4.449721128E1 +1.183420000E3,5.086906199E1 +1.183676000E3,5.067998506E1 +1.183927000E3,5.352019181E1 +1.184219000E3,4.851971310E1 +1.184517000E3,5.123853013E1 +1.184764000E3,5.278221141E1 +1.185010000E3,5.126409245E1 +1.185297000E3,5.249182764E1 +1.185665000E3,5.346599478E1 +1.185972000E3,5.052250297E1 +1.186225000E3,5.389354916E1 +1.186534000E3,5.372737626E1 +1.186796000E3,5.415645782E1 +1.187048000E3,5.441424865E1 +1.187317000E3,5.470553815E1 +1.187622000E3,5.559990781E1 +1.187913000E3,5.619293356E1 +1.188186000E3,4.869472445E1 +1.188442000E3,5.069948923E1 +1.188718000E3,5.296813397E1 +1.189051000E3,5.015003063E1 +1.189308000E3,5.110938827E1 +1.189570000E3,5.250182053E1 +1.189815000E3,5.240850659E1 +1.190062000E3,5.446862868E1 +1.190368000E3,5.270463767E1 +1.190629000E3,5.117539458E1 +1.190931000E3,5.543767536E1 +1.191207000E3,5.348622922E1 +1.191505000E3,5.112152946E1 +1.191761000E3,4.905277341E1 +1.192068000E3,5.456405848E1 +1.192487000E3,5.016322677E1 +1.192732000E3,4.971711263E1 +1.192976000E3,5.396031961E1 +1.193258000E3,5.018645567E1 +1.193531000E3,4.895586707E1 +1.193790000E3,5.442023654E1 +1.194055000E3,5.160697029E1 +1.194326000E3,4.822365107E1 +1.194605000E3,5.396633777E1 +1.194903000E3,5.031021734E1 +1.195141000E3,5.278015326E1 +1.195431000E3,4.949576105E1 +1.195801000E3,5.244682833E1 +1.196076000E3,5.508575727E1 +1.196371000E3,5.161802747E1 +1.196603000E3,5.716896987E1 +1.196858000E3,5.210002974E1 +1.197207000E3,5.483594793E1 +1.197503000E3,5.204828926E1 +1.197774000E3,5.339169315E1 +1.198054000E3,4.934781945E1 +1.198312000E3,5.918797425E1 +1.198559000E3,5.025254784E1 +1.198808000E3,5.317746302E1 +1.199152000E3,5.656715516E1 +1.199464000E3,5.448426177E1 +1.199717000E3,5.419526565E1 +1.199961000E3,5.304156540E1 +1.200219000E3,4.961182292E1 +1.200480000E3,5.259766625E1 +1.200730000E3,5.295115767E1 +1.201029000E3,5.365389524E1 +1.201288000E3,5.465027972E1 +1.201538000E3,5.131261505E1 +1.201807000E3,5.767453751E1 +1.202112000E3,5.316006082E1 +1.202485000E3,5.263333972E1 +1.202739000E3,4.966297173E1 +1.203041000E3,5.282706501E1 +1.203300000E3,4.950274237E1 +1.203539000E3,4.377779375E1 +1.203832000E3,5.274682795E1 +1.204077000E3,5.348405653E1 +1.204320000E3,5.647600154E1 +1.204615000E3,4.835002395E1 +1.204854000E3,4.440243109E1 +1.205149000E3,4.673035253E1 +1.205410000E3,4.901106802E1 +1.205666000E3,5.311033159E1 +1.205952000E3,5.020567211E1 +1.206248000E3,5.046889058E1 +1.206545000E3,6.150607502E1 +1.206779000E3,5.260331634E1 +1.207093000E3,5.183291791E1 +1.207367000E3,4.957331060E1 +1.207610000E3,5.139200370E1 +1.207857000E3,5.005726187E1 +1.208158000E3,4.979521937E1 +1.208398000E3,5.178137337E1 +1.208738000E3,4.632694184E1 +1.208994000E3,4.836915777E1 +1.209279000E3,4.869228435E1 +1.209528000E3,5.096507040E1 +1.209784000E3,4.718590489E1 +1.210053000E3,4.835967114E1 +1.210281000E3,4.725223201E1 +1.210542000E3,5.172958855E1 +1.210823000E3,5.546336112E1 +1.211051000E3,5.448218663E1 +1.211300000E3,5.371995163E1 +1.211551000E3,4.887559574E1 +1.211926000E3,4.975732945E1 +1.212205000E3,5.041543230E1 +1.212482000E3,4.863959509E1 +1.212730000E3,5.047232348E1 +1.212990000E3,4.824384094E1 +1.213232000E3,5.039377586E1 +1.213493000E3,4.517891187E1 +1.213814000E3,4.686032989E1 +1.214062000E3,4.852263494E1 +1.214337000E3,4.897277606E1 +1.214586000E3,4.662047985E1 +1.214832000E3,5.483925472E1 +1.215143000E3,5.677489998E1 +1.215372000E3,5.470688254E1 +1.215664000E3,5.408747991E1 +1.215962000E3,5.167832591E1 +1.216227000E3,5.463116224E1 +1.216504000E3,5.335564969E1 +1.216747000E3,4.832376612E1 +1.216996000E3,4.918538596E1 +1.217306000E3,5.329611015E1 +1.217618000E3,5.364881155E1 +1.217885000E3,5.087209115E1 +1.218149000E3,4.967310650E1 +1.218497000E3,4.842689624E1 +1.218801000E3,5.442588779E1 +1.219043000E3,5.338467746E1 +1.219349000E3,5.187371665E1 +1.219600000E3,4.992515182E1 +1.219883000E3,5.205809257E1 +1.220161000E3,5.374364962E1 +1.220471000E3,5.145920034E1 +1.220752000E3,5.112774200E1 +1.221009000E3,4.969936214E1 +1.221258000E3,4.906585252E1 +1.221519000E3,4.971022706E1 +1.221873000E3,5.039216656E1 +1.222125000E3,4.735018859E1 +1.222388000E3,5.025223930E1 +1.222647000E3,5.349102952E1 +1.222903000E3,5.894430216E1 +1.223210000E3,5.133834742E1 +1.223464000E3,5.378681025E1 +1.223708000E3,5.646161983E1 +1.223949000E3,5.127610878E1 +1.224189000E3,5.295211205E1 +1.224441000E3,5.074229414E1 +1.224698000E3,5.428527885E1 +1.225064000E3,6.064230054E1 +1.225333000E3,5.545461106E1 +1.225591000E3,5.085263163E1 +1.225847000E3,4.867332677E1 +1.226137000E3,4.828036819E1 +1.226394000E3,5.187031217E1 +1.226668000E3,4.691949774E1 +1.226931000E3,4.605300024E1 +1.227219000E3,4.319091646E1 +1.227493000E3,4.827268256E1 +1.227791000E3,4.873371181E1 +1.228031000E3,4.895629331E1 +1.228388000E3,4.831306026E1 +1.228651000E3,5.150144778E1 +1.228942000E3,5.210555115E1 +1.229190000E3,4.868630793E1 +1.229442000E3,5.072280558E1 +1.229686000E3,5.520857657E1 +1.229933000E3,5.597505745E1 +1.230228000E3,5.309096620E1 +1.230467000E3,5.340491117E1 +1.230765000E3,4.966814228E1 +1.231012000E3,4.811713105E1 +1.231316000E3,5.037869561E1 +1.231666000E3,4.768651081E1 +1.231948000E3,4.577834304E1 +1.232207000E3,4.455407567E1 +1.232510000E3,5.091422235E1 +1.232802000E3,4.990562511E1 +1.233047000E3,5.178152081E1 +1.233344000E3,5.312014577E1 +1.233592000E3,5.002236071E1 +1.233892000E3,5.158473192E1 +1.234173000E3,4.692863129E1 +1.234463000E3,4.643331531E1 +1.234792000E3,4.659156592E1 +1.235060000E3,4.662718910E1 +1.235313000E3,5.204491267E1 +1.235577000E3,5.165973487E1 +1.235837000E3,4.753691687E1 +1.236124000E3,5.179615379E1 +1.236401000E3,4.807409380E1 +1.236654000E3,5.474790946E1 +1.236923000E3,4.946475170E1 +1.237180000E3,4.949471083E1 +1.237426000E3,4.669168363E1 +1.237743000E3,5.529942944E1 +1.238061000E3,5.997488643E1 +1.238363000E3,5.302222406E1 +1.238611000E3,5.022506453E1 +1.238856000E3,4.864145193E1 +1.239102000E3,5.299123845E1 +1.239357000E3,4.682866815E1 +1.239657000E3,4.770894983E1 +1.239902000E3,4.813746372E1 +1.240150000E3,4.571771059E1 +1.240465000E3,5.354012247E1 +1.240765000E3,5.830707734E1 +1.241013000E3,5.483189048E1 +1.241344000E3,5.157405593E1 +1.241606000E3,5.072581437E1 +1.241868000E3,5.137979859E1 +1.242133000E3,4.849261303E1 +1.242396000E3,5.556107710E1 +1.242656000E3,4.958779284E1 +1.242959000E3,5.301548021E1 +1.243232000E3,5.475621292E1 +1.243501000E3,5.660789219E1 +1.243755000E3,5.350018163E1 +1.244010000E3,5.415674835E1 +1.244349000E3,5.699979568E1 +1.244717000E3,5.660044844E1 +1.245015000E3,5.808533709E1 +1.245259000E3,5.881859790E1 +1.245558000E3,5.728882886E1 +1.245808000E3,6.044308225E1 +1.246079000E3,5.893900513E1 +1.246326000E3,5.279872381E1 +1.246637000E3,5.769196864E1 +1.246935000E3,5.963088900E1 +1.247181000E3,5.367341836E1 +1.247508000E3,4.963645506E1 +1.247848000E3,5.265770489E1 +1.248115000E3,5.355743381E1 +1.248359000E3,4.891015342E1 +1.248659000E3,4.819353582E1 +1.248902000E3,4.966403220E1 +1.249199000E3,4.977495696E1 +1.249449000E3,5.715212626E1 +1.249708000E3,5.458337902E1 +1.249983000E3,4.910795823E1 +1.250282000E3,5.184902745E1 +1.250527000E3,5.416053460E1 +1.250777000E3,5.320773170E1 +1.251084000E3,5.422274265E1 +1.251342000E3,5.429456299E1 +1.251602000E3,5.910733722E1 +1.251866000E3,5.226490816E1 +1.252178000E3,5.191466859E1 +1.252452000E3,5.143339371E1 +1.252681000E3,5.066846779E1 +1.252975000E3,4.928639562E1 +1.253256000E3,4.916995298E1 +1.253528000E3,5.115941927E1 +1.253816000E3,4.850268402E1 +1.254063000E3,5.682920937E1 +1.254418000E3,5.583927157E1 +1.254700000E3,5.243405901E1 +1.254947000E3,5.411796563E1 +1.255215000E3,5.538314624E1 +1.255487000E3,5.447026824E1 +1.255748000E3,5.115232974E1 +1.256046000E3,5.273125350E1 +1.256281000E3,5.501639825E1 +1.256559000E3,5.470702619E1 +1.256867000E3,5.330168249E1 +1.257116000E3,5.680033697E1 +1.257361000E3,5.088137081E1 +1.257690000E3,4.771044205E1 +1.257935000E3,5.556188303E1 +1.258189000E3,5.821474305E1 +1.258460000E3,5.913083175E1 +1.258757000E3,5.624840253E1 +1.259001000E3,5.575040009E1 +1.259294000E3,5.295140054E1 +1.259581000E3,5.547885633E1 +1.259831000E3,5.659634167E1 +1.260084000E3,5.552607398E1 +1.260378000E3,5.399987136E1 +1.260676000E3,5.741946227E1 +1.260997000E3,5.622829253E1 +1.261272000E3,5.638519080E1 +1.261569000E3,5.222122782E1 +1.261810000E3,5.168558616E1 +1.262055000E3,5.937417075E1 +1.262351000E3,5.419990938E1 +1.262597000E3,5.469291977E1 +1.262893000E3,5.501007253E1 +1.263142000E3,5.356116387E1 +1.263421000E3,5.643294047E1 +1.263644000E3,5.627927149E1 +1.263964000E3,5.547827797E1 +1.264255000E3,5.434029164E1 +1.264552000E3,5.355134450E1 +1.264791000E3,5.268456483E1 +1.265090000E3,5.304298782E1 +1.265342000E3,5.292557941E1 +1.265637000E3,5.267823535E1 +1.265885000E3,5.076475521E1 +1.266186000E3,5.470463807E1 +1.266480000E3,5.369531663E1 +1.266727000E3,5.321314382E1 +1.267074000E3,5.430022488E1 +1.267386000E3,5.498366079E1 +1.267650000E3,5.373765381E1 +1.267926000E3,5.631680810E1 +1.268156000E3,5.314598601E1 +1.268459000E3,5.446778700E1 +1.268718000E3,5.461487175E1 +1.269029000E3,4.723979401E1 +1.269322000E3,5.050485841E1 +1.269602000E3,5.263446338E1 +1.269914000E3,5.195043172E1 +1.270180000E3,5.361139844E1 +1.270542000E3,5.127785292E1 +1.270796000E3,5.111084292E1 +1.271061000E3,5.030178225E1 +1.271329000E3,4.978955516E1 +1.271616000E3,5.398913319E1 +1.271862000E3,5.537806166E1 +1.272155000E3,5.301545016E1 +1.272407000E3,5.450597504E1 +1.272651000E3,5.090153644E1 +1.272906000E3,5.335437953E1 +1.273148000E3,4.673762491E1 +1.273392000E3,5.062539325E1 +1.273710000E3,5.110756444E1 +1.273960000E3,5.466659884E1 +1.274217000E3,5.158121780E1 +1.274511000E3,5.575560452E1 +1.274759000E3,5.536976579E1 +1.275054000E3,5.425250328E1 +1.275298000E3,5.448034930E1 +1.275544000E3,5.185016662E1 +1.275828000E3,5.206320816E1 +1.276126000E3,5.118466074E1 +1.276376000E3,4.943928704E1 +1.276707000E3,5.090592254E1 +1.276972000E3,5.767487174E1 +1.277251000E3,5.481331862E1 +1.277544000E3,5.385854096E1 +1.277810000E3,5.179333541E1 +1.278097000E3,5.161992279E1 +1.278344000E3,5.248655937E1 +1.278657000E3,5.064236034E1 +1.278927000E3,4.915402835E1 +1.279197000E3,5.321156971E1 +1.279471000E3,5.438812541E1 +1.279734000E3,5.482588411E1 +1.280065000E3,5.157318203E1 +1.280296000E3,5.173449962E1 +1.280546000E3,5.465953878E1 +1.280843000E3,5.457680704E1 +1.281077000E3,5.562152963E1 +1.281325000E3,5.460406982E1 +1.281570000E3,5.232421403E1 +1.281870000E3,5.207576719E1 +1.282135000E3,4.968186040E1 +1.282378000E3,5.237915347E1 +1.282628000E3,4.745539727E1 +1.282877000E3,5.255989147E1 +1.283195000E3,5.301690658E1 +1.283467000E3,5.283539029E1 +1.283717000E3,5.083105477E1 +1.283978000E3,4.559322742E1 +1.284235000E3,4.934435088E1 +1.284538000E3,5.265118466E1 +1.284812000E3,5.302155906E1 +1.285045000E3,5.294725202E1 +1.285352000E3,5.129236762E1 +1.285646000E3,5.402858483E1 +1.285898000E3,5.434527110E1 +1.286189000E3,5.525625388E1 +1.286515000E3,5.653073998E1 +1.286819000E3,5.704731902E1 +1.287101000E3,5.310035962E1 +1.287387000E3,5.474072190E1 +1.287649000E3,5.496979063E1 +1.287925000E3,5.528941101E1 +1.288193000E3,5.394330028E1 +1.288492000E3,4.829171318E1 +1.288740000E3,5.076324605E1 +1.289004000E3,4.673843249E1 +1.289280000E3,5.345749476E1 +1.289584000E3,4.955238815E1 +1.289923000E3,5.268555513E1 +1.290206000E3,5.092762320E1 +1.290445000E3,5.180504716E1 +1.290779000E3,5.421996562E1 +1.291081000E3,5.408565728E1 +1.291322000E3,5.466627749E1 +1.291622000E3,5.247549140E1 +1.291870000E3,5.438915347E1 +1.292125000E3,5.526358440E1 +1.292428000E3,5.407200655E1 +1.292723000E3,5.160593410E1 +1.293035000E3,5.231731426E1 +1.293342000E3,5.126765219E1 +1.293626000E3,4.802016847E1 +1.293922000E3,5.428603515E1 +1.294199000E3,5.305841291E1 +1.294451000E3,5.676250586E1 +1.294738000E3,5.921971496E1 +1.295005000E3,5.812051865E1 +1.295266000E3,5.671365947E1 +1.295512000E3,5.389157640E1 +1.295809000E3,5.417883641E1 +1.296087000E3,5.169085532E1 +1.296408000E3,5.027989141E1 +1.296704000E3,5.801273246E1 +1.296951000E3,5.777618357E1 +1.297241000E3,5.598217178E1 +1.297547000E3,5.590671112E1 +1.297806000E3,6.302454961E1 +1.298073000E3,5.716944646E1 +1.298330000E3,5.693666329E1 +1.298591000E3,5.374930006E1 +1.298851000E3,5.170089530E1 +1.299100000E3,6.243829367E1 +1.299340000E3,5.522680485E1 +1.299673000E3,5.451288060E1 +1.299933000E3,5.720613947E1 +1.300193000E3,5.131457759E1 +1.300510000E3,5.593393786E1 +1.300810000E3,5.344184529E1 +1.301099000E3,5.432320381E1 +1.301355000E3,5.294046944E1 +1.301602000E3,5.330691828E1 +1.301911000E3,4.899471979E1 +1.302175000E3,5.054546621E1 +1.302420000E3,4.914598102E1 +1.302706000E3,5.757950400E1 +1.303045000E3,5.798603958E1 +1.303343000E3,5.685278830E1 +1.303584000E3,5.272645619E1 +1.303869000E3,5.576083132E1 +1.304169000E3,5.311655900E1 +1.304414000E3,5.297304035E1 +1.304724000E3,6.119658997E1 +1.304998000E3,5.921259630E1 +1.305275000E3,5.974785927E1 +1.305567000E3,5.829108198E1 +1.305799000E3,5.656256791E1 +1.306151000E3,5.263150293E1 +1.306475000E3,5.719715846E1 +1.306754000E3,5.746813017E1 +1.307020000E3,6.063794361E1 +1.307320000E3,5.945639283E1 +1.307570000E3,5.898495898E1 +1.307856000E3,5.345744690E1 +1.308127000E3,5.882374416E1 +1.308390000E3,5.704844280E1 +1.308660000E3,6.230218860E1 +1.308982000E3,5.794977886E1 +1.309252000E3,5.609480230E1 +1.309620000E3,5.439173238E1 +1.309924000E3,5.804315704E1 +1.310253000E3,5.898090143E1 +1.310510000E3,5.933785859E1 +1.310826000E3,5.484966867E1 +1.311077000E3,5.841635068E1 +1.311358000E3,5.536029260E1 +1.311601000E3,5.555523834E1 +1.311895000E3,5.637714479E1 +1.312195000E3,5.253312652E1 +1.312445000E3,5.377927694E1 +1.312696000E3,5.757954833E1 +1.313038000E3,5.500733438E1 +1.313282000E3,5.367385274E1 +1.313558000E3,5.610715122E1 +1.313797000E3,5.528556803E1 +1.314063000E3,5.884958532E1 +1.314412000E3,5.458036035E1 +1.314671000E3,5.765344335E1 +1.314945000E3,5.139756723E1 +1.315223000E3,5.546002517E1 +1.315503000E3,5.608276603E1 +1.315733000E3,5.719791479E1 +1.315986000E3,5.413888898E1 +1.316329000E3,5.789500166E1 +1.316579000E3,5.404086097E1 +1.316819000E3,6.021843554E1 +1.317067000E3,5.929690830E1 +1.317365000E3,6.066063258E1 +1.317666000E3,5.465341745E1 +1.317917000E3,5.115712079E1 +1.318169000E3,4.986479689E1 +1.318470000E3,5.351977371E1 +1.318716000E3,5.614277654E1 +1.318987000E3,5.824140620E1 +1.319280000E3,5.863858703E1 +1.319646000E3,5.908977231E1 +1.319902000E3,5.867594430E1 +1.320142000E3,5.256185028E1 +1.320379000E3,5.916248935E1 +1.320672000E3,5.829134786E1 +1.320910000E3,5.729121950E1 +1.321203000E3,5.817253701E1 +1.321434000E3,5.958327052E1 +1.321726000E3,6.109571062E1 +1.321963000E3,6.309400740E1 +1.322263000E3,6.381431561E1 +1.322586000E3,6.124594205E1 +1.322839000E3,6.120886427E1 +1.323128000E3,5.624496406E1 +1.323377000E3,6.205845751E1 +1.323676000E3,6.248705287E1 +1.323968000E3,6.259357777E1 +1.324217000E3,6.168308921E1 +1.324496000E3,6.128297543E1 +1.324731000E3,5.975404370E1 +1.325024000E3,6.147148959E1 +1.325261000E3,6.101142333E1 +1.325573000E3,5.682124874E1 +1.325854000E3,5.869490284E1 +1.326149000E3,5.646663249E1 +1.326392000E3,5.662110608E1 +1.326643000E3,5.067702480E1 +1.326984000E3,5.759763927E1 +1.327264000E3,5.613584630E1 +1.327489000E3,5.826097161E1 +1.327735000E3,5.843702691E1 +1.328012000E3,5.352317094E1 +1.328253000E3,5.737674501E1 +1.328545000E3,5.736811408E1 +1.328911000E3,5.477233671E1 +1.329158000E3,5.481436604E1 +1.329403000E3,4.974322484E1 +1.329645000E3,5.490077996E1 +1.329890000E3,4.870505425E1 +1.330144000E3,4.955972956E1 +1.330428000E3,5.470042727E1 +1.330734000E3,5.618884112E1 +1.331026000E3,5.238151215E1 +1.331265000E3,5.344428978E1 +1.331515000E3,5.051963956E1 +1.331772000E3,5.068574448E1 +1.332120000E3,5.754233113E1 +1.332409000E3,5.498832674E1 +1.332740000E3,5.245036701E1 +1.333034000E3,5.885934606E1 +1.333286000E3,5.644915657E1 +1.333540000E3,5.532779852E1 +1.333784000E3,5.694511409E1 +1.334028000E3,5.553937724E1 +1.334302000E3,5.308286554E1 +1.334615000E3,5.140154995E1 +1.334876000E3,5.045296543E1 +1.335187000E3,5.631993217E1 +1.335451000E3,5.435091016E1 +1.335722000E3,5.624357652E1 +1.335986000E3,5.791043400E1 +1.336271000E3,5.847603086E1 +1.336545000E3,5.757219882E1 +1.336794000E3,6.070042624E1 +1.337072000E3,5.247827017E1 +1.337340000E3,5.208145921E1 +1.337609000E3,6.026756153E1 +1.337870000E3,6.012826199E1 +1.338134000E3,5.465450317E1 +1.338408000E3,5.768658418E1 +1.338755000E3,5.542991210E1 +1.339019000E3,5.279974580E1 +1.339289000E3,4.966927449E1 +1.339556000E3,4.563713389E1 +1.339804000E3,4.961972315E1 +1.340056000E3,5.287436972E1 +1.340316000E3,5.318950925E1 +1.340586000E3,5.037908496E1 +1.340881000E3,5.345184090E1 +1.341116000E3,5.016784238E1 +1.341407000E3,5.799295151E1 +1.341694000E3,5.875659808E1 +1.342051000E3,5.666657228E1 +1.342345000E3,5.241270038E1 +1.342638000E3,5.754780266E1 +1.342875000E3,5.669750570E1 +1.343177000E3,5.541629106E1 +1.343432000E3,5.556249818E1 +1.343726000E3,5.603182587E1 +1.343969000E3,5.961525777E1 +1.344257000E3,5.915223521E1 +1.344498000E3,5.820677933E1 +1.344777000E3,5.815031326E1 +1.345094000E3,5.733094423E1 +1.345363000E3,5.538469317E1 +1.345622000E3,6.270903439E1 +1.345877000E3,5.551461514E1 +1.346148000E3,5.750063996E1 +1.346395000E3,5.473739655E1 +1.346676000E3,5.131350753E1 +1.346958000E3,5.072615719E1 +1.347258000E3,4.882711207E1 +1.347518000E3,5.273988371E1 +1.347784000E3,6.269937361E1 +1.348040000E3,6.058958657E1 +1.348391000E3,5.894445662E1 +1.348716000E3,5.683213923E1 +1.348984000E3,5.875140523E1 +1.349236000E3,5.263650529E1 +1.349491000E3,4.630287352E1 +1.349847000E3,5.742006494E1 +1.350115000E3,6.486179330E1 +1.350358000E3,5.963871460E1 +1.350612000E3,5.220281373E1 +1.350868000E3,5.825229613E1 +1.351125000E3,5.822075100E1 +1.351374000E3,5.487419692E1 +1.351666000E3,5.461361208E1 +1.351934000E3,5.384511910E1 +1.352185000E3,5.782109838E1 +1.352440000E3,5.156901690E1 +1.352688000E3,5.262530942E1 +1.352990000E3,5.827406705E1 +1.353265000E3,6.164230870E1 +1.353493000E3,5.939319367E1 +1.353769000E3,5.491407227E1 +1.353989000E3,5.363390940E1 +1.354236000E3,5.108497673E1 +1.354516000E3,6.129017752E1 +1.354836000E3,5.594784457E1 +1.355095000E3,5.172378417E1 +1.355422000E3,5.975901259E1 +1.355685000E3,5.720857994E1 +1.355941000E3,5.600667557E1 +1.356197000E3,5.471836828E1 +1.356478000E3,5.319452565E1 +1.356745000E3,5.296912594E1 +1.357013000E3,5.811625635E1 +1.357280000E3,5.430511038E1 +1.357577000E3,5.277700001E1 +1.357824000E3,5.616769978E1 +1.358135000E3,5.406396803E1 +1.358401000E3,4.910300122E1 +1.358643000E3,5.077236009E1 +1.358892000E3,5.530877446E1 +1.359206000E3,5.787482939E1 +1.359485000E3,5.846197249E1 +1.359760000E3,6.103303991E1 +1.360055000E3,6.092009186E1 +1.360296000E3,5.979156049E1 +1.360590000E3,6.049263298E1 +1.360828000E3,5.895545308E1 +1.361114000E3,5.611946421E1 +1.361473000E3,5.480295831E1 +1.361726000E3,5.397626184E1 +1.361972000E3,5.443193027E1 +1.362314000E3,5.572591927E1 +1.362560000E3,5.224616115E1 +1.362808000E3,5.244486023E1 +1.363061000E3,5.179430466E1 +1.363307000E3,5.228822629E1 +1.363555000E3,5.248152719E1 +1.363850000E3,5.310816898E1 +1.364115000E3,5.586433987E1 +1.364397000E3,5.735023043E1 +1.364703000E3,6.002405491E1 +1.364950000E3,5.692273216E1 +1.365192000E3,5.941823705E1 +1.365459000E3,5.316793659E1 +1.365709000E3,5.869878442E1 +1.365953000E3,5.756526572E1 +1.366216000E3,5.687574379E1 +1.366491000E3,5.232478004E1 +1.366744000E3,5.424491879E1 +1.367001000E3,5.235481979E1 +1.367305000E3,5.164783122E1 +1.367588000E3,4.924997634E1 +1.367934000E3,4.924339558E1 +1.368196000E3,5.793398832E1 +1.368473000E3,5.529211657E1 +1.368719000E3,5.120874356E1 +1.368963000E3,5.470742612E1 +1.369285000E3,5.560989240E1 +1.369528000E3,5.197646059E1 +1.369822000E3,5.152328490E1 +1.370111000E3,5.791930576E1 +1.370416000E3,5.368811562E1 +1.370672000E3,5.769124019E1 +1.370919000E3,5.333549653E1 +1.371292000E3,5.847056292E1 +1.371551000E3,5.642894477E1 +1.371803000E3,5.817537921E1 +1.372074000E3,5.885584750E1 +1.372335000E3,5.395474736E1 +1.372602000E3,5.211537518E1 +1.372880000E3,4.924374923E1 +1.373126000E3,4.882665291E1 +1.373379000E3,5.483140316E1 +1.373636000E3,5.380197532E1 +1.373915000E3,5.629967483E1 +1.374251000E3,5.773524892E1 +1.374636000E3,6.271253195E1 +1.374894000E3,5.870587143E1 +1.375125000E3,5.496954916E1 +1.375369000E3,5.621931219E1 +1.375641000E3,5.700323462E1 +1.375912000E3,5.808968856E1 +1.376161000E3,5.697587873E1 +1.376437000E3,5.739415600E1 +1.376687000E3,5.874614285E1 +1.376941000E3,5.855325473E1 +1.377252000E3,5.287324040E1 +1.377495000E3,5.331405656E1 +1.377862000E3,5.163612814E1 +1.378109000E3,6.003152631E1 +1.378372000E3,6.448039849E1 +1.378641000E3,6.226927373E1 +1.378912000E3,6.355904277E1 +1.379208000E3,6.121718755E1 +1.379463000E3,6.371699462E1 +1.379738000E3,5.774542440E1 +1.380076000E3,5.579766677E1 +1.380318000E3,5.520595979E1 +1.380614000E3,5.395000262E1 +1.380855000E3,5.263752401E1 +1.381221000E3,5.267030150E1 +1.381492000E3,5.304251562E1 +1.381793000E3,4.959737221E1 +1.382100000E3,5.549829026E1 +1.382347000E3,5.821584994E1 +1.382642000E3,5.861199323E1 +1.382905000E3,5.256382895E1 +1.383164000E3,5.491877459E1 +1.383443000E3,5.644995893E1 +1.383702000E3,5.411249990E1 +1.383954000E3,5.324738213E1 +1.384305000E3,5.625052210E1 +1.384532000E3,6.070474662E1 +1.384789000E3,5.237062704E1 +1.385074000E3,5.442107865E1 +1.385361000E3,6.017483878E1 +1.385605000E3,6.237555822E1 +1.385869000E3,5.605951782E1 +1.386126000E3,6.511151133E1 +1.386382000E3,5.571785683E1 +1.386696000E3,5.398201636E1 +1.386954000E3,5.323734283E1 +1.387264000E3,5.635686029E1 +1.387623000E3,5.701357512E1 +1.387874000E3,5.632095063E1 +1.388187000E3,5.288354031E1 +1.388477000E3,5.152350906E1 +1.388761000E3,5.130627857E1 +1.388982000E3,4.918436870E1 +1.389239000E3,5.567775637E1 +1.389545000E3,5.465238648E1 +1.389786000E3,5.003079725E1 +1.390027000E3,5.504486936E1 +1.390282000E3,5.947272344E1 +1.390539000E3,6.106137952E1 +1.390892000E3,5.985290475E1 +1.391203000E3,5.500825546E1 +1.391507000E3,5.157102239E1 +1.391806000E3,5.517662265E1 +1.392108000E3,5.349243854E1 +1.392411000E3,5.386652866E1 +1.392707000E3,5.258839734E1 +1.392973000E3,5.376638351E1 +1.393221000E3,5.619475880E1 +1.393480000E3,5.846509931E1 +1.393767000E3,6.504346680E1 +1.394122000E3,5.865804348E1 +1.394392000E3,5.055217311E1 +1.394673000E3,4.837306759E1 +1.394931000E3,5.564689750E1 +1.395193000E3,5.416088817E1 +1.395489000E3,5.481584764E1 +1.395781000E3,5.356143065E1 +1.396078000E3,5.074158934E1 +1.396313000E3,5.177896206E1 +1.396618000E3,5.670327312E1 +1.396914000E3,6.043149132E1 +1.397246000E3,5.875453471E1 +1.397559000E3,5.725772305E1 +1.397842000E3,5.610169288E1 +1.398092000E3,6.098127982E1 +1.398354000E3,5.385330985E1 +1.398611000E3,5.345613584E1 +1.398873000E3,6.183897473E1 +1.399135000E3,5.898294985E1 +1.399399000E3,5.644599073E1 +1.399662000E3,6.288338842E1 +1.399923000E3,5.844786233E1 +1.400178000E3,6.145207907E1 +1.400438000E3,5.797678971E1 +1.400786000E3,5.805590691E1 +1.401082000E3,5.956739883E1 +1.401323000E3,5.537900496E1 +1.401618000E3,5.084213917E1 +1.401871000E3,4.807017206E1 +1.402118000E3,5.545233073E1 +1.402411000E3,5.516036366E1 +1.402644000E3,5.413431379E1 +1.402920000E3,5.388857626E1 +1.403209000E3,5.292068844E1 +1.403479000E3,5.775211983E1 +1.403718000E3,5.117484548E1 +1.404045000E3,5.912447648E1 +1.404295000E3,5.591921957E1 +1.404568000E3,5.565028551E1 +1.404828000E3,5.013398992E1 +1.405122000E3,5.465164253E1 +1.405364000E3,5.305211462E1 +1.405620000E3,5.755171154E1 +1.405929000E3,6.007655449E1 +1.406174000E3,5.899920387E1 +1.406463000E3,5.970773629E1 +1.406720000E3,5.770443308E1 +1.407009000E3,5.521297881E1 +1.407407000E3,5.604277064E1 +1.407677000E3,5.646208540E1 +1.407969000E3,4.906112006E1 +1.408239000E3,5.193830101E1 +1.408558000E3,4.835599484E1 +1.408830000E3,4.864558507E1 +1.409087000E3,5.566138381E1 +1.409349000E3,5.240816417E1 +1.409604000E3,4.366169359E1 +1.409843000E3,4.924613485E1 +1.410167000E3,5.289541091E1 +1.410462000E3,5.429333459E1 +1.410857000E3,5.232803186E1 +1.411115000E3,5.279391543E1 +1.411388000E3,5.698112108E1 +1.411689000E3,4.954635028E1 +1.411940000E3,5.347151392E1 +1.412202000E3,5.431542928E1 +1.412461000E3,5.708654506E1 +1.412712000E3,5.999867781E1 +1.412972000E3,5.836713300E1 +1.413243000E3,5.662529411E1 +1.413547000E3,5.760118844E1 +1.413790000E3,5.272334048E1 +1.414155000E3,5.585703000E1 +1.414407000E3,5.277217169E1 +1.414666000E3,5.575617717E1 +1.414970000E3,5.588142009E1 +1.415263000E3,5.043609445E1 +1.415519000E3,5.366091219E1 +1.415818000E3,6.729065738E1 +1.416082000E3,5.454700058E1 +1.416357000E3,5.542836481E1 +1.416608000E3,6.150002805E1 +1.416870000E3,5.918799699E1 +1.417164000E3,5.739551304E1 +1.417548000E3,5.312046747E1 +1.417864000E3,5.735989692E1 +1.418111000E3,5.463708503E1 +1.418368000E3,5.616594485E1 +1.418622000E3,5.674613857E1 +1.418880000E3,5.393284238E1 +1.419178000E3,5.477989298E1 +1.419414000E3,5.673628135E1 +1.419692000E3,5.246670124E1 +1.419935000E3,5.929492524E1 +1.420173000E3,5.718550468E1 +1.420417000E3,5.597503360E1 +1.420745000E3,5.209811810E1 +1.421016000E3,5.108820023E1 +1.421271000E3,5.704928631E1 +1.421524000E3,5.534619134E1 +1.421787000E3,5.298830069E1 +1.422048000E3,5.357926773E1 +1.422324000E3,5.150193558E1 +1.422590000E3,5.236977243E1 +1.422860000E3,5.598534631E1 +1.423111000E3,5.804712890E1 +1.423360000E3,5.584477369E1 +1.423617000E3,6.166819052E1 +1.423956000E3,6.217862533E1 +1.424239000E3,6.474885215E1 +1.424493000E3,6.561094566E1 +1.424771000E3,6.624921272E1 +1.425013000E3,6.269332683E1 +1.425310000E3,6.427501900E1 +1.425550000E3,6.406421996E1 +1.425806000E3,6.561696377E1 +1.426124000E3,5.757984813E1 +1.426392000E3,6.467113265E1 +1.426661000E3,6.110360998E1 +1.426971000E3,6.257935575E1 +1.427325000E3,6.059948571E1 +1.427600000E3,6.060080967E1 +1.427858000E3,6.129065918E1 +1.428157000E3,6.869907238E1 +1.428403000E3,6.216021300E1 +1.428668000E3,6.028715826E1 +1.428917000E3,5.215970407E1 +1.429175000E3,5.348756082E1 +1.429445000E3,5.866879342E1 +1.429775000E3,5.422412762E1 +1.430077000E3,5.967912654E1 +1.430370000E3,6.053958419E1 +1.430696000E3,5.642153628E1 +1.430959000E3,5.797803369E1 +1.431217000E3,5.265853131E1 +1.431545000E3,6.085541328E1 +1.431825000E3,6.579757863E1 +1.432095000E3,6.783858113E1 +1.432356000E3,6.680245969E1 +1.432609000E3,5.699539434E1 +1.432887000E3,5.495476405E1 +1.433146000E3,5.431336982E1 +1.433405000E3,5.468573805E1 +1.433768000E3,6.415525931E1 +1.434037000E3,5.996195649E1 +1.434305000E3,5.880144898E1 +1.434536000E3,5.062803370E1 +1.434794000E3,4.838886892E1 +1.435059000E3,4.852598648E1 +1.435348000E3,5.424758091E1 +1.435611000E3,6.028120001E1 +1.435845000E3,5.860165153E1 +1.436098000E3,5.820116177E1 +1.436348000E3,5.458976108E1 +1.436603000E3,5.748661459E1 +1.436983000E3,5.071157707E1 +1.437230000E3,5.187454119E1 +1.437505000E3,5.690962542E1 +1.437744000E3,5.898297949E1 +1.438006000E3,6.083548120E1 +1.438278000E3,4.929702369E1 +1.438556000E3,5.094464024E1 +1.438857000E3,5.451803318E1 +1.439157000E3,4.851675588E1 +1.439427000E3,4.781325912E1 +1.439724000E3,4.919544886E1 +1.439968000E3,4.662525194E1 +1.440374000E3,4.187537091E1 +1.440620000E3,5.083424523E1 +1.440895000E3,4.476479772E1 +1.441179000E3,5.236126827E1 +1.441495000E3,4.954212438E1 +1.441772000E3,5.444261950E1 +1.442048000E3,5.023278537E1 +1.442273000E3,4.640707667E1 +1.442557000E3,5.088583460E1 +1.442822000E3,5.041471443E1 +1.443067000E3,4.940152653E1 +1.443315000E3,4.834999124E1 +1.443550000E3,5.084173145E1 +1.443802000E3,4.674944421E1 +1.444118000E3,5.005548854E1 +1.444412000E3,4.880222753E1 +1.444695000E3,4.829349493E1 +1.444948000E3,4.815408858E1 +1.445231000E3,4.968297573E1 +1.445471000E3,5.263069989E1 +1.445763000E3,4.570389774E1 +1.446062000E3,4.674284816E1 +1.446364000E3,5.179136771E1 +1.446637000E3,5.007894257E1 +1.446884000E3,5.001285233E1 +1.447102000E3,5.063641057E1 +1.447373000E3,4.164946286E1 +1.447601000E3,3.981108666E1 +1.447894000E3,4.316358072E1 +1.448132000E3,5.465701871E1 +1.448431000E3,4.615144027E1 +1.448672000E3,4.353154230E1 +1.448965000E3,5.208221965E1 +1.449200000E3,5.530439334E1 +1.449496000E3,4.996075498E1 +1.449729000E3,5.218941020E1 +1.450060000E3,4.888890123E1 +1.450335000E3,5.030971329E1 +1.450629000E3,5.012870067E1 +1.450899000E3,4.847297804E1 +1.451151000E3,4.759762696E1 +1.451454000E3,4.978926902E1 +1.451751000E3,4.930919072E1 +1.452001000E3,5.004861581E1 +1.452285000E3,5.051309266E1 +1.452566000E3,4.810890055E1 +1.452826000E3,4.654354865E1 +1.453069000E3,4.761425190E1 +1.453369000E3,4.589508435E1 +1.453616000E3,4.954922405E1 +1.453886000E3,4.065983258E1 +1.454197000E3,4.220647307E1 +1.454513000E3,4.858310714E1 +1.454789000E3,5.196405012E1 +1.455012000E3,5.467685341E1 +1.455262000E3,5.753332593E1 +1.455513000E3,4.707036048E1 +1.455859000E3,3.942826471E1 +1.456237000E3,5.170062203E1 +1.456495000E3,6.022707597E1 +1.456743000E3,5.524301158E1 +1.456990000E3,5.482834451E1 +1.457257000E3,4.917995293E1 +1.457590000E3,4.739340640E1 +1.457831000E3,4.842051754E1 +1.458073000E3,6.166669432E1 +1.458329000E3,5.427876580E1 +1.458617000E3,4.896037674E1 +1.458889000E3,4.346397471E1 +1.459122000E3,4.481546196E1 +1.459424000E3,5.149740630E1 +1.459726000E3,4.614214660E1 +1.459975000E3,4.567227587E1 +1.460237000E3,5.348774305E1 +1.460488000E3,5.617792493E1 +1.460730000E3,5.122937085E1 +1.460971000E3,5.712815616E1 +1.461266000E3,5.592815325E1 +1.461504000E3,5.208026338E1 +1.461798000E3,5.368936290E1 +1.462033000E3,5.424431898E1 +1.462332000E3,5.229538114E1 +1.462686000E3,5.012562607E1 +1.462943000E3,5.517893002E1 +1.463292000E3,5.544440679E1 +1.463574000E3,5.195225561E1 +1.463851000E3,5.582804772E1 +1.464133000E3,5.163717454E1 +1.464392000E3,5.056978371E1 +1.464653000E3,5.085736348E1 +1.464931000E3,5.111025552E1 +1.465171000E3,5.008163028E1 +1.465468000E3,5.204681239E1 +1.465721000E3,4.873162615E1 +1.466070000E3,5.052420662E1 +1.466365000E3,5.115431116E1 +1.466626000E3,5.008089225E1 +1.466902000E3,5.455907242E1 +1.467123000E3,5.881328519E1 +1.467422000E3,5.654049662E1 +1.467665000E3,6.208900398E1 +1.467911000E3,5.573620080E1 +1.468210000E3,5.034178452E1 +1.468461000E3,4.644884091E1 +1.468716000E3,4.489036287E1 +1.469021000E3,4.555962209E1 +1.469437000E3,4.956164087E1 +1.469733000E3,5.014140659E1 +1.469995000E3,5.025508197E1 +1.470298000E3,4.976482928E1 +1.470552000E3,4.666552600E1 +1.470801000E3,5.164800320E1 +1.471107000E3,4.748865751E1 +1.471358000E3,5.068455306E1 +1.471623000E3,5.380657492E1 +1.471874000E3,4.918332364E1 +1.472155000E3,4.974368594E1 +1.472539000E3,5.519550202E1 +1.472795000E3,5.119649457E1 +1.473056000E3,5.406344748E1 +1.473370000E3,5.554928156E1 +1.473655000E3,5.458007948E1 +1.473895000E3,5.519923804E1 +1.474152000E3,5.580016483E1 +1.474437000E3,5.718813696E1 +1.474685000E3,5.734393611E1 +1.474960000E3,5.879862387E1 +1.475221000E3,5.602300215E1 +1.475474000E3,5.025640835E1 +1.475826000E3,5.543439402E1 +1.476071000E3,5.232164352E1 +1.476323000E3,5.898115961E1 +1.476584000E3,6.066467981E1 +1.476821000E3,5.071984472E1 +1.477123000E3,5.740447565E1 +1.477365000E3,5.959782608E1 +1.477662000E3,5.958620190E1 +1.477906000E3,5.753388342E1 +1.478144000E3,5.506848886E1 +1.478455000E3,5.769430513E1 +1.478723000E3,5.629679592E1 +1.478987000E3,5.649495967E1 +1.479262000E3,5.787253729E1 +1.479512000E3,5.216150167E1 +1.479813000E3,4.948302212E1 +1.480088000E3,5.080056078E1 +1.480342000E3,4.734041467E1 +1.480601000E3,4.440736689E1 +1.480866000E3,5.120725270E1 +1.481166000E3,5.053254929E1 +1.481466000E3,5.274685420E1 +1.481724000E3,5.071521067E1 +1.481973000E3,5.225995741E1 +1.482300000E3,5.133897759E1 +1.482575000E3,5.007250383E1 +1.482845000E3,5.042400131E1 +1.483101000E3,5.258901014E1 +1.483408000E3,5.618504625E1 +1.483668000E3,5.503349900E1 +1.483933000E3,4.974702245E1 +1.484194000E3,5.170781389E1 +1.484440000E3,5.072340799E1 +1.484707000E3,5.947536199E1 +1.485018000E3,5.467515596E1 +1.485306000E3,6.085614245E1 +1.485656000E3,5.990152864E1 +1.485935000E3,5.602550586E1 +1.486168000E3,5.561766537E1 +1.486422000E3,5.350876804E1 +1.486701000E3,5.699979875E1 +1.486960000E3,5.177464585E1 +1.487207000E3,5.249766501E1 +1.487486000E3,5.285366750E1 +1.487751000E3,5.316768095E1 +1.488002000E3,4.876639606E1 +1.488262000E3,5.179834313E1 +1.488516000E3,4.991892364E1 +1.488812000E3,5.156353661E1 +1.489125000E3,5.341434219E1 +1.489400000E3,5.426211096E1 +1.489675000E3,4.699672779E1 +1.489958000E3,5.361914521E1 +1.490219000E3,5.605827819E1 +1.490490000E3,5.089547448E1 +1.490772000E3,5.163564337E1 +1.491061000E3,5.841576784E1 +1.491309000E3,5.524417730E1 +1.491589000E3,5.450558122E1 +1.491873000E3,5.581032480E1 +1.492194000E3,5.802352567E1 +1.492448000E3,4.962366630E1 +1.492810000E3,5.873656508E1 +1.493058000E3,5.690804947E1 +1.493359000E3,5.262261274E1 +1.493674000E3,5.584655342E1 +1.493919000E3,5.542283425E1 +1.494163000E3,5.373884310E1 +1.494412000E3,5.084083433E1 +1.494678000E3,4.964027690E1 +1.494956000E3,5.125570040E1 +1.495204000E3,5.194895191E1 +1.495526000E3,4.961412488E1 +1.495784000E3,4.972405818E1 +1.496036000E3,4.777083448E1 +1.496283000E3,5.231556692E1 +1.496593000E3,5.894066851E1 +1.496842000E3,6.007182772E1 +1.497086000E3,6.003234807E1 +1.497358000E3,5.170627362E1 +1.497682000E3,5.564688341E1 +1.497937000E3,5.459086103E1 +1.498234000E3,5.654462748E1 +1.498530000E3,5.643601391E1 +1.498887000E3,5.593732695E1 +1.499182000E3,5.279859883E1 +1.499469000E3,5.063056157E1 +1.499723000E3,4.846330641E1 +1.499972000E3,5.696559719E1 +1.500236000E3,5.806291630E1 +1.500555000E3,5.485435177E1 +1.500851000E3,5.386376671E1 +1.501120000E3,5.529102258E1 +1.501400000E3,5.058415032E1 +1.501675000E3,5.420960743E1 +1.501928000E3,4.962388553E1 +1.502263000E3,5.167692375E1 +1.502567000E3,5.072695334E1 +1.502878000E3,5.319678523E1 +1.503119000E3,5.961199300E1 +1.503369000E3,5.299728366E1 +1.503631000E3,5.369404965E1 +1.503941000E3,5.426817134E1 +1.504209000E3,5.369336762E1 +1.504462000E3,5.246626497E1 +1.504724000E3,5.358557871E1 +1.505015000E3,4.957781391E1 +1.505279000E3,5.117668163E1 +1.505699000E3,5.216401891E1 +1.505963000E3,5.011348657E1 +1.506261000E3,5.259055540E1 +1.506507000E3,4.579432510E1 +1.506795000E3,4.877099475E1 +1.507032000E3,4.679595596E1 +1.507314000E3,5.136222565E1 +1.507549000E3,5.267101191E1 +1.507792000E3,5.244999525E1 +1.508074000E3,5.180561005E1 +1.508391000E3,5.030990700E1 +1.508607000E3,5.167226321E1 +1.508859000E3,5.218207738E1 +1.509151000E3,5.317725961E1 +1.509397000E3,5.318899610E1 +1.509689000E3,4.978257152E1 +1.509934000E3,5.032443800E1 +1.510228000E3,4.777293014E1 +1.510466000E3,4.646316587E1 +1.510767000E3,5.646850943E1 +1.511001000E3,5.638889819E1 +1.511293000E3,5.773758842E1 +1.511610000E3,5.580372922E1 +1.511900000E3,5.517502050E1 +1.512151000E3,5.684013484E1 +1.512393000E3,5.407249321E1 +1.512652000E3,5.725430710E1 +1.512902000E3,5.755876004E1 +1.513148000E3,5.492786930E1 +1.513404000E3,5.665177401E1 +1.513705000E3,5.675683028E1 +1.513957000E3,5.845897420E1 +1.514258000E3,5.334537973E1 +1.514488000E3,5.035361876E1 +1.514812000E3,4.886526824E1 +1.515059000E3,5.555156669E1 +1.515357000E3,5.401240780E1 +1.515600000E3,5.191330713E1 +1.515873000E3,5.158089375E1 +1.516102000E3,5.397456219E1 +1.516410000E3,5.205317520E1 +1.516679000E3,5.689433829E1 +1.516971000E3,5.397466306E1 +1.517230000E3,5.553699481E1 +1.517504000E3,5.550832571E1 +1.517763000E3,5.490604036E1 +1.518130000E3,5.129555301E1 +1.518403000E3,5.478479772E1 +1.518670000E3,5.687403653E1 +1.518921000E3,5.464295853E1 +1.519177000E3,5.713561839E1 +1.519461000E3,5.306473622E1 +1.519745000E3,5.320579073E1 +1.520002000E3,5.309385307E1 +1.520258000E3,5.058967996E1 +1.520552000E3,5.470724085E1 +1.520793000E3,5.303104936E1 +1.521156000E3,5.432496893E1 +1.521453000E3,5.594215604E1 +1.521721000E3,5.308545736E1 +1.521969000E3,5.327888421E1 +1.522220000E3,5.030915333E1 +1.522490000E3,5.230098434E1 +1.522776000E3,4.743827766E1 +1.523026000E3,5.464211349E1 +1.523327000E3,5.322537523E1 +1.523581000E3,5.154569729E1 +1.523826000E3,5.335950152E1 +1.524133000E3,5.482016506E1 +1.524417000E3,5.825411535E1 +1.524853000E3,5.879893849E1 +1.525179000E3,5.728744863E1 +1.525433000E3,5.737571640E1 +1.525696000E3,5.681107869E1 +1.525950000E3,5.695921586E1 +1.526210000E3,5.455429607E1 +1.526487000E3,5.808007225E1 +1.526729000E3,5.500512440E1 +1.527042000E3,5.476260812E1 +1.527339000E3,5.849962899E1 +1.527579000E3,5.719021529E1 +1.527910000E3,5.422226824E1 +1.528160000E3,5.266147572E1 +1.528411000E3,5.030747323E1 +1.528675000E3,5.057502492E1 +1.528920000E3,5.365292462E1 +1.529175000E3,5.444435151E1 +1.529423000E3,5.586906556E1 +1.529732000E3,5.808239082E1 +1.530030000E3,5.492304678E1 +1.530283000E3,5.727734117E1 +1.530542000E3,5.518682809E1 +1.530805000E3,5.838179726E1 +1.531133000E3,5.619103982E1 +1.531448000E3,5.705771680E1 +1.531738000E3,5.605732573E1 +1.531987000E3,5.497746164E1 +1.532293000E3,5.570350387E1 +1.532602000E3,5.687942595E1 +1.532873000E3,5.590365459E1 +1.533132000E3,5.379832162E1 +1.533387000E3,5.951317374E1 +1.533654000E3,5.728034638E1 +1.533915000E3,5.755019099E1 +1.534163000E3,5.625336618E1 +1.534512000E3,5.560455999E1 +1.534783000E3,5.186395468E1 +1.535086000E3,6.018952062E1 +1.535379000E3,5.360739703E1 +1.535619000E3,5.637744941E1 +1.535916000E3,5.710534601E1 +1.536153000E3,5.751101039E1 +1.536449000E3,5.888699469E1 +1.536688000E3,5.900809640E1 +1.536983000E3,5.539354346E1 +1.537218000E3,5.212761926E1 +1.537514000E3,6.113968309E1 +1.537773000E3,5.789795306E1 +1.538038000E3,6.065119472E1 +1.538356000E3,5.715251587E1 +1.538607000E3,5.728294892E1 +1.538911000E3,5.939537878E1 +1.539175000E3,5.879010449E1 +1.539417000E3,6.007594674E1 +1.539661000E3,5.983742076E1 +1.539908000E3,6.299497704E1 +1.540182000E3,6.042347696E1 +1.540457000E3,5.844914903E1 +1.540758000E3,5.775362746E1 +1.541037000E3,5.216165265E1 +1.541334000E3,5.255584969E1 +1.541593000E3,5.278098471E1 +1.541846000E3,5.581770981E1 +1.542092000E3,5.736301867E1 +1.542389000E3,5.733951694E1 +1.542623000E3,5.674705381E1 +1.542880000E3,5.506043774E1 +1.543125000E3,5.404728252E1 +1.543453000E3,5.428884791E1 +1.543732000E3,5.547580162E1 +1.544085000E3,5.471747417E1 +1.544346000E3,5.496243571E1 +1.544613000E3,5.288395526E1 +1.544860000E3,5.036194227E1 +1.545111000E3,5.124283852E1 +1.545413000E3,5.731432515E1 +1.545687000E3,5.663908688E1 +1.545955000E3,5.741659811E1 +1.546253000E3,5.084604561E1 +1.546502000E3,5.163330463E1 +1.546772000E3,4.777378739E1 +1.547025000E3,5.200725426E1 +1.547353000E3,5.049690945E1 +1.547625000E3,5.284766124E1 +1.547924000E3,5.396462244E1 +1.548148000E3,5.375524192E1 +1.548403000E3,5.670544075E1 +1.548716000E3,5.332369727E1 +1.548963000E3,5.544219871E1 +1.549238000E3,5.323430806E1 +1.549471000E3,5.180674965E1 +1.549727000E3,5.329467652E1 +1.550023000E3,5.080742485E1 +1.550310000E3,5.026906170E1 +1.550639000E3,5.582908231E1 +1.550905000E3,5.331150300E1 +1.551172000E3,5.186910180E1 +1.551471000E3,5.624561668E1 +1.551739000E3,5.555744845E1 +1.552012000E3,5.944044312E1 +1.552264000E3,6.002272858E1 +1.552531000E3,5.816546804E1 +1.552850000E3,5.936846960E1 +1.553097000E3,5.514794057E1 +1.553401000E3,5.160130424E1 +1.553757000E3,5.107783990E1 +1.554023000E3,5.871375450E1 +1.554276000E3,5.617325190E1 +1.554544000E3,5.736189521E1 +1.554800000E3,5.317828333E1 +1.555051000E3,5.715279916E1 +1.555321000E3,5.726931658E1 +1.555563000E3,5.567771069E1 +1.555823000E3,5.156101336E1 +1.556126000E3,5.688446569E1 +1.556378000E3,6.074118939E1 +1.556642000E3,5.974958265E1 +1.556918000E3,5.702757711E1 +1.557208000E3,5.874442787E1 +1.557457000E3,5.795683904E1 +1.557722000E3,6.039916355E1 +1.558025000E3,5.662755924E1 +1.558320000E3,5.332514547E1 +1.558595000E3,6.059700286E1 +1.558850000E3,5.775207016E1 +1.559098000E3,6.106988435E1 +1.559349000E3,6.039494527E1 +1.559644000E3,5.672405799E1 +1.559889000E3,5.814375710E1 +1.560135000E3,6.159401746E1 +1.560480000E3,5.397583636E1 +1.560770000E3,5.291692280E1 +1.561026000E3,5.439035965E1 +1.561320000E3,5.553984968E1 +1.561619000E3,5.808332247E1 +1.561927000E3,5.744100555E1 +1.562191000E3,5.636250023E1 +1.562451000E3,6.055150308E1 +1.562703000E3,5.624161562E1 +1.562979000E3,5.401048000E1 +1.563233000E3,5.588901558E1 +1.563595000E3,6.020828902E1 +1.563855000E3,6.586197618E1 +1.564143000E3,5.744692826E1 +1.564421000E3,5.175273280E1 +1.564681000E3,5.584828423E1 +1.564939000E3,5.622472521E1 +1.565190000E3,5.419184381E1 +1.565447000E3,4.818775863E1 +1.565701000E3,5.443344746E1 +1.565956000E3,4.960344337E1 +1.566224000E3,6.289868185E1 +1.566469000E3,6.499026885E1 +1.566794000E3,6.277031329E1 +1.567086000E3,5.336636778E1 +1.567405000E3,5.867761918E1 +1.567644000E3,5.135518394E1 +1.567909000E3,5.665720126E1 +1.568204000E3,5.915910399E1 +1.568455000E3,5.687790668E1 +1.568730000E3,5.815647569E1 +1.568976000E3,5.595761669E1 +1.569238000E3,5.367288589E1 +1.569491000E3,4.954593185E1 +1.569752000E3,5.199120702E1 +1.570099000E3,5.857172858E1 +1.570354000E3,5.533510860E1 +1.570614000E3,5.615291914E1 +1.570871000E3,4.816531300E1 +1.571136000E3,4.597509459E1 +1.571387000E3,5.454256971E1 +1.571722000E3,5.262076426E1 +1.572010000E3,5.108681545E1 +1.572285000E3,5.269091247E1 +1.572547000E3,4.898785412E1 +1.572807000E3,4.867008841E1 +1.573066000E3,5.306545801E1 +1.573313000E3,5.092331160E1 +1.573694000E3,5.549117670E1 +1.574009000E3,5.304099104E1 +1.574279000E3,5.377011563E1 +1.574520000E3,5.244694975E1 +1.574770000E3,5.542353961E1 +1.575031000E3,5.327330735E1 +1.575319000E3,5.123065406E1 +1.575617000E3,5.429517947E1 +1.575867000E3,5.443507599E1 +1.576132000E3,5.273613947E1 +1.576382000E3,5.717979407E1 +1.576705000E3,5.184816589E1 +1.576955000E3,4.851208329E1 +1.577250000E3,4.976440939E1 +1.577493000E3,5.236737582E1 +1.577737000E3,5.414723297E1 +1.577998000E3,5.490706774E1 +1.578342000E3,5.591011545E1 +1.578650000E3,5.689754115E1 +1.578906000E3,5.680987850E1 +1.579148000E3,5.379415708E1 +1.579394000E3,5.844713665E1 +1.579644000E3,4.927798375E1 +1.580006000E3,5.263100090E1 +1.580294000E3,5.410513055E1 +1.580548000E3,5.541047194E1 +1.580801000E3,5.058665778E1 +1.581070000E3,5.191468462E1 +1.581349000E3,4.623838572E1 +1.581601000E3,4.883886927E1 +1.581851000E3,4.951159763E1 +1.582152000E3,5.372806241E1 +1.582461000E3,4.077427406E1 +1.582742000E3,4.089897224E1 +1.582967000E3,4.661834708E1 +1.583330000E3,4.498181641E1 +1.583574000E3,4.413204165E1 +1.583835000E3,4.830731952E1 +1.584102000E3,5.133890730E1 +1.584385000E3,5.327819620E1 +1.584689000E3,5.148788947E1 +1.584935000E3,5.259351261E1 +1.585217000E3,5.210912674E1 +1.585449000E3,5.375523399E1 +1.585710000E3,5.030792675E1 +1.585957000E3,5.116594607E1 +1.586271000E3,5.729332409E1 +1.586601000E3,5.372439258E1 +1.586868000E3,5.283683191E1 +1.587111000E3,5.261490358E1 +1.587371000E3,5.394382083E1 +1.587617000E3,5.362104804E1 +1.587861000E3,5.192909002E1 +1.588111000E3,5.534291684E1 +1.588356000E3,5.529045875E1 +1.588616000E3,5.723903943E1 +1.588878000E3,5.769467674E1 +1.589116000E3,5.686991669E1 +1.589367000E3,5.472851050E1 +1.589709000E3,5.509501284E1 +1.589971000E3,6.218794924E1 +1.590276000E3,5.544714813E1 +1.590522000E3,5.587492513E1 +1.590770000E3,6.310127100E1 +1.591031000E3,6.016601681E1 +1.591331000E3,5.868635044E1 +1.591588000E3,5.739907262E1 +1.591847000E3,5.500154159E1 +1.592105000E3,5.382353142E1 +1.592358000E3,5.235465349E1 +1.592660000E3,5.432444683E1 +1.592979000E3,5.583837344E1 +1.593280000E3,5.890777444E1 +1.593531000E3,6.247008348E1 +1.593777000E3,5.524440051E1 +1.594082000E3,6.039849382E1 +1.594376000E3,5.779880973E1 +1.594616000E3,6.006977904E1 +1.594916000E3,6.157791897E1 +1.595158000E3,5.727348505E1 +1.595456000E3,6.219777130E1 +1.595702000E3,6.333776727E1 +1.596011000E3,6.315243887E1 +1.596287000E3,5.622487117E1 +1.596582000E3,4.999384026E1 +1.596838000E3,6.052096287E1 +1.597136000E3,5.730636753E1 +1.597383000E3,5.672770046E1 +1.597632000E3,5.282894107E1 +1.597943000E3,5.609826115E1 +1.598240000E3,5.950608691E1 +1.598483000E3,5.262580449E1 +1.598777000E3,5.638403375E1 +1.599039000E3,5.695994656E1 +1.599354000E3,5.595638462E1 +1.599677000E3,5.456948793E1 +1.599955000E3,5.641745933E1 +1.600254000E3,5.373490010E1 +1.600541000E3,5.613295480E1 +1.600824000E3,5.295628543E1 +1.601071000E3,5.036371368E1 +1.601313000E3,5.734560753E1 +1.601585000E3,5.869799540E1 +1.601832000E3,5.689867309E1 +1.602079000E3,5.521901034E1 +1.602376000E3,5.958743796E1 +1.602630000E3,5.697555749E1 +1.602881000E3,6.067520996E1 +1.603136000E3,6.296730837E1 +1.603381000E3,6.302345663E1 +1.603674000E3,5.614231839E1 +1.603920000E3,5.471880748E1 +1.604179000E3,6.025548138E1 +1.604432000E3,5.848975602E1 +1.604677000E3,6.051353275E1 +1.604988000E3,6.061163824E1 +1.605287000E3,5.127173554E1 +1.605535000E3,5.271948405E1 +1.605890000E3,5.457177629E1 +1.606143000E3,5.047420148E1 +1.606392000E3,5.197178768E1 +1.606684000E3,5.635777628E1 +1.606927000E3,5.691931577E1 +1.607165000E3,5.135114371E1 +1.607440000E3,5.173034620E1 +1.607734000E3,5.786109434E1 +1.607974000E3,5.620528212E1 +1.608236000E3,5.432552885E1 +1.608507000E3,5.036034087E1 +1.608763000E3,4.872303481E1 +1.609123000E3,5.516764205E1 +1.609377000E3,5.867465981E1 +1.609624000E3,5.634077767E1 +1.609869000E3,5.153316916E1 +1.610150000E3,5.212022412E1 +1.610428000E3,5.727395868E1 +1.610681000E3,5.443759521E1 +1.610944000E3,5.599199613E1 +1.611242000E3,5.709063131E1 +1.611495000E3,5.747461955E1 +1.611762000E3,5.445378087E1 +1.612040000E3,5.178206799E1 +1.612294000E3,5.347146008E1 +1.612548000E3,5.695533984E1 +1.612791000E3,5.852885666E1 +1.613050000E3,5.349710519E1 +1.613354000E3,5.482274130E1 +1.613598000E3,5.580201302E1 +1.613898000E3,5.533013655E1 +1.614151000E3,5.307302798E1 +1.614404000E3,5.034267096E1 +1.614651000E3,5.096368681E1 +1.614959000E3,5.358615730E1 +1.615202000E3,5.402822959E1 +1.615565000E3,5.173226008E1 +1.615815000E3,5.317238447E1 +1.616120000E3,5.490271856E1 +1.616406000E3,5.760350961E1 +1.616712000E3,5.516631401E1 +1.616950000E3,5.344247717E1 +1.617197000E3,5.105574764E1 +1.617480000E3,5.297874749E1 +1.617726000E3,5.181083735E1 +1.617978000E3,5.504462581E1 +1.618236000E3,5.652623382E1 +1.618484000E3,5.850281135E1 +1.618804000E3,5.207268405E1 +1.619061000E3,4.595989093E1 +1.619309000E3,5.832875112E1 +1.619574000E3,5.691639889E1 +1.619831000E3,5.277897330E1 +1.620092000E3,5.634285556E1 +1.620390000E3,5.782897026E1 +1.620660000E3,6.167326244E1 +1.620905000E3,5.736569246E1 +1.621145000E3,6.422841213E1 +1.621400000E3,6.037316593E1 +1.621649000E3,5.869946609E1 +1.622005000E3,6.007663283E1 +1.622308000E3,5.750286676E1 +1.622551000E3,5.315958033E1 +1.622849000E3,5.996646537E1 +1.623085000E3,6.310656156E1 +1.623382000E3,6.410911411E1 +1.623620000E3,6.559322950E1 +1.623914000E3,6.191537215E1 +1.624148000E3,6.509401862E1 +1.624441000E3,6.149444047E1 +1.624676000E3,5.887830140E1 +1.624914000E3,5.333395699E1 +1.625242000E3,5.080509527E1 +1.625531000E3,5.208999136E1 +1.625827000E3,4.936268455E1 +1.626072000E3,4.620940228E1 +1.626384000E3,4.812346411E1 +1.626678000E3,5.508818133E1 +1.626931000E3,5.929414420E1 +1.627193000E3,5.798382987E1 +1.627446000E3,5.695027340E1 +1.627690000E3,6.200547811E1 +1.627940000E3,5.895921781E1 +1.628278000E3,5.832121877E1 +1.628595000E3,5.727506493E1 +1.628914000E3,5.676841787E1 +1.629164000E3,5.904549933E1 +1.629453000E3,6.079247221E1 +1.629705000E3,5.978532207E1 +1.629973000E3,6.204876077E1 +1.630223000E3,6.278691878E1 +1.630527000E3,5.775584326E1 +1.630780000E3,5.715423799E1 +1.631076000E3,5.993810238E1 +1.631416000E3,5.945816984E1 +1.631690000E3,5.911038375E1 +1.631989000E3,6.401318161E1 +1.632251000E3,6.288325429E1 +1.632577000E3,6.142114348E1 +1.632857000E3,6.027735545E1 +1.633125000E3,6.058800698E1 +1.633410000E3,6.197295377E1 +1.633713000E3,5.649410931E1 +1.633983000E3,5.349526422E1 +1.634267000E3,5.160473432E1 +1.634550000E3,5.471426263E1 +1.634881000E3,5.381566790E1 +1.635145000E3,5.592472168E1 +1.635394000E3,5.502963456E1 +1.635636000E3,5.458091777E1 +1.635914000E3,5.361113418E1 +1.636211000E3,5.972112366E1 +1.636510000E3,6.134956919E1 +1.636770000E3,6.291498703E1 +1.637018000E3,6.051799303E1 +1.637272000E3,5.800319143E1 +1.637535000E3,6.099184952E1 +1.637791000E3,6.192072936E1 +1.638191000E3,5.592689657E1 +1.638462000E3,5.015193522E1 +1.638759000E3,5.662906295E1 +1.638997000E3,6.189212385E1 +1.639312000E3,5.656112303E1 +1.639618000E3,5.827187766E1 +1.639922000E3,5.894515280E1 +1.640188000E3,5.379936676E1 +1.640446000E3,5.498271927E1 +1.640705000E3,5.883708769E1 +1.641003000E3,5.515786146E1 +1.641329000E3,5.323855564E1 +1.641593000E3,5.000482182E1 +1.641876000E3,5.182077324E1 +1.642101000E3,5.319082569E1 +1.642344000E3,6.611850928E1 +1.642626000E3,5.190424983E1 +1.642867000E3,5.081734830E1 +1.643118000E3,5.711045841E1 +1.643458000E3,5.520016906E1 +1.643723000E3,5.247062228E1 +1.643997000E3,5.309157546E1 +1.644256000E3,5.339769460E1 +1.644621000E3,5.982216134E1 +1.644883000E3,5.915424673E1 +1.645133000E3,5.849263499E1 +1.645426000E3,5.826666974E1 +1.645723000E3,5.673329902E1 +1.645972000E3,5.580417722E1 +1.646244000E3,5.457004449E1 +1.646473000E3,5.835958867E1 +1.646716000E3,5.599398637E1 +1.646958000E3,5.928075116E1 +1.647232000E3,5.394053714E1 +1.647507000E3,5.853879118E1 +1.647858000E3,5.674494648E1 +1.648113000E3,5.640074652E1 +1.648414000E3,5.694867796E1 +1.648656000E3,5.573466688E1 +1.648962000E3,5.556104957E1 +1.649254000E3,5.770712773E1 +1.649548000E3,5.765349227E1 +1.649790000E3,5.583875333E1 +1.650054000E3,6.321152276E1 +1.650306000E3,5.966047080E1 +1.650600000E3,5.502015578E1 +1.650872000E3,5.066616477E1 +1.651172000E3,5.442335496E1 +1.651440000E3,5.956947456E1 +1.651736000E3,5.798320450E1 +1.651979000E3,5.739040713E1 +1.652228000E3,5.803662120E1 +1.652491000E3,6.146613872E1 +1.652750000E3,5.929116619E1 +1.653021000E3,5.936282359E1 +1.653288000E3,5.853226920E1 +1.653570000E3,5.954415072E1 +1.653872000E3,5.749576278E1 +1.654250000E3,5.567111200E1 +1.654518000E3,6.059415807E1 +1.654812000E3,5.855300274E1 +1.655081000E3,5.797601107E1 +1.655350000E3,6.029475669E1 +1.655647000E3,5.264118678E1 +1.655893000E3,5.715075800E1 +1.656153000E3,5.787679223E1 +1.656407000E3,6.038334743E1 +1.656655000E3,6.038245752E1 +1.656912000E3,5.475945603E1 +1.657171000E3,5.661674174E1 +1.657473000E3,5.618877186E1 +1.657717000E3,5.712918740E1 +1.657972000E3,5.834783502E1 +1.658283000E3,6.198115012E1 +1.658526000E3,5.639977894E1 +1.658788000E3,5.416850689E1 +1.659089000E3,5.679686188E1 +1.659335000E3,5.697270686E1 +1.659619000E3,5.371836804E1 +1.659873000E3,6.082252986E1 +1.660120000E3,6.285201132E1 +1.660416000E3,6.088574857E1 +1.660728000E3,6.109109391E1 +1.661004000E3,5.861240224E1 +1.661283000E3,6.123850168E1 +1.661519000E3,5.849447684E1 +1.661821000E3,5.472352136E1 +1.662065000E3,5.502625911E1 +1.662312000E3,5.606436387E1 +1.662565000E3,5.546236927E1 +1.662845000E3,6.075823181E1 +1.663075000E3,5.951357638E1 +1.663350000E3,5.956681026E1 +1.663575000E3,5.780116333E1 +1.663928000E3,6.184122024E1 +1.664178000E3,5.626291699E1 +1.664419000E3,5.635545931E1 +1.664671000E3,5.487242490E1 +1.664936000E3,5.392872477E1 +1.665237000E3,5.658170902E1 +1.665476000E3,5.449322435E1 +1.665752000E3,5.111063749E1 +1.665997000E3,5.288359358E1 +1.666249000E3,5.825102048E1 +1.666508000E3,6.087585373E1 +1.666750000E3,5.822210598E1 +1.667110000E3,6.320270923E1 +1.667355000E3,5.563170163E1 +1.667628000E3,5.240635194E1 +1.667875000E3,5.485055122E1 +1.668144000E3,5.590209292E1 +1.668402000E3,5.750031923E1 +1.668648000E3,5.301598344E1 +1.668896000E3,5.208077776E1 +1.669157000E3,5.024112467E1 +1.669414000E3,5.530220423E1 +1.669710000E3,5.585178295E1 +1.669955000E3,5.443268015E1 +1.670292000E3,5.292974908E1 +1.670566000E3,5.501741168E1 +1.670818000E3,5.190433464E1 +1.671077000E3,5.602388651E1 +1.671384000E3,5.384205522E1 +1.671688000E3,5.355394771E1 +1.671956000E3,4.896600257E1 +1.672212000E3,4.457728928E1 +1.672483000E3,5.407780485E1 +1.672726000E3,5.808535163E1 +1.672991000E3,5.497589856E1 +1.673269000E3,5.816061182E1 +1.673625000E3,5.457220472E1 +1.673896000E3,5.852786772E1 +1.674165000E3,5.615855966E1 +1.674439000E3,5.901141794E1 +1.674702000E3,5.821771493E1 +1.675040000E3,5.533746886E1 +1.675330000E3,5.469332456E1 +1.675631000E3,5.895976057E1 +1.675867000E3,5.565047570E1 +1.676161000E3,5.342216333E1 +1.676431000E3,5.339304237E1 +1.676716000E3,5.196130631E1 +1.677075000E3,5.500129023E1 +1.677346000E3,5.649474234E1 +1.677614000E3,5.620691351E1 +1.677867000E3,5.756400488E1 +1.678112000E3,5.571225073E1 +1.678362000E3,6.171466353E1 +1.678655000E3,5.523245256E1 +1.678909000E3,5.780473196E1 +1.679167000E3,5.918101801E1 +1.679536000E3,5.449831587E1 +1.679788000E3,5.278747036E1 +1.680072000E3,5.502423006E1 +1.680392000E3,5.603218813E1 +1.680667000E3,5.681691969E1 +1.680917000E3,5.574952817E1 +1.681227000E3,5.747793831E1 +1.681510000E3,5.831554727E1 +1.681811000E3,5.823344802E1 +1.682073000E3,5.677197169E1 +1.682402000E3,5.423243511E1 +1.682746000E3,5.568639423E1 +1.683007000E3,5.601571559E1 +1.683297000E3,5.788588795E1 +1.683563000E3,5.178162942E1 +1.683805000E3,5.244727762E1 +1.684102000E3,5.504021082E1 +1.684342000E3,5.312145782E1 +1.684637000E3,5.266466104E1 +1.684875000E3,5.430143327E1 +1.685171000E3,5.731848010E1 +1.685409000E3,5.314967575E1 +1.685703000E3,5.210480680E1 +1.685940000E3,5.447962472E1 +1.686242000E3,5.671930258E1 +1.686480000E3,5.298653153E1 +1.686837000E3,5.390672385E1 +1.687083000E3,5.256535993E1 +1.687387000E3,5.295433262E1 +1.687686000E3,4.693434793E1 +1.687930000E3,5.264001548E1 +1.688191000E3,4.696703102E1 +1.688514000E3,5.290693761E1 +1.688768000E3,5.572289252E1 +1.689025000E3,5.629476293E1 +1.689331000E3,5.221395629E1 +1.689585000E3,5.553268928E1 +1.689905000E3,5.392885939E1 +1.690136000E3,5.613018872E1 +1.690432000E3,5.323144022E1 +1.690690000E3,5.426457319E1 +1.690988000E3,5.869511223E1 +1.691244000E3,5.724931575E1 +1.691548000E3,5.702890727E1 +1.691819000E3,5.957894946E1 +1.692068000E3,5.833323285E1 +1.692367000E3,5.920896731E1 +1.692598000E3,5.809066040E1 +1.692847000E3,5.683194919E1 +1.693218000E3,5.880411413E1 +1.693536000E3,5.430005356E1 +1.693836000E3,5.347827494E1 +1.694082000E3,5.139526617E1 +1.694323000E3,6.486669482E1 +1.694607000E3,5.827670564E1 +1.694879000E3,5.749070135E1 +1.695112000E3,5.439297467E1 +1.695418000E3,5.591879208E1 +1.695720000E3,5.984156108E1 +1.695978000E3,5.763450389E1 +1.696238000E3,5.535113951E1 +1.696577000E3,5.468640858E1 +1.696840000E3,5.145216534E1 +1.697142000E3,5.633820526E1 +1.697434000E3,5.961813260E1 +1.697672000E3,5.761348305E1 +1.697970000E3,5.587832748E1 +1.698213000E3,5.615239979E1 +1.698514000E3,6.142159571E1 +1.698744000E3,5.868747140E1 +1.699038000E3,5.639074769E1 +1.699277000E3,5.843791784E1 +1.699602000E3,5.580904726E1 +1.699849000E3,5.188032815E1 +1.700148000E3,6.050592844E1 +1.700415000E3,5.851925341E1 +1.700742000E3,5.754370303E1 +1.700996000E3,5.792652906E1 +1.701265000E3,5.809754284E1 +1.701543000E3,5.435013872E1 +1.701827000E3,5.364293620E1 +1.702095000E3,5.742174876E1 +1.702342000E3,5.921232761E1 +1.702597000E3,5.246613397E1 +1.702852000E3,5.865178399E1 +1.703188000E3,6.209648540E1 +1.703456000E3,5.783126524E1 +1.703723000E3,6.129722089E1 +1.704021000E3,6.159059582E1 +1.704258000E3,6.290365934E1 +1.704500000E3,5.899658178E1 +1.704744000E3,5.570772177E1 +1.705020000E3,6.042975914E1 +1.705281000E3,6.063911519E1 +1.705578000E3,5.667741437E1 +1.705818000E3,5.616948640E1 +1.706065000E3,5.809228765E1 +1.706440000E3,6.194892333E1 +1.706707000E3,5.510896653E1 +1.706968000E3,5.648771637E1 +1.707226000E3,5.451026369E1 +1.707530000E3,5.655237570E1 +1.707813000E3,6.342687376E1 +1.708096000E3,5.687609223E1 +1.708345000E3,5.784030597E1 +1.708587000E3,5.696931166E1 +1.708832000E3,5.826055047E1 +1.709133000E3,6.171963981E1 +1.709444000E3,6.289993620E1 +1.709785000E3,6.196750111E1 +1.710095000E3,6.021872673E1 +1.710401000E3,5.493999514E1 +1.710645000E3,5.748920917E1 +1.710951000E3,5.990748875E1 +1.711204000E3,5.995493625E1 +1.711504000E3,5.608393688E1 +1.711807000E3,6.225697969E1 +1.712052000E3,6.005399346E1 +1.712297000E3,6.276583246E1 +1.712594000E3,6.409669700E1 +1.712952000E3,5.846223798E1 +1.713249000E3,6.222377893E1 +1.713511000E3,6.179119431E1 +1.713770000E3,6.687160955E1 +1.714020000E3,6.224215114E1 +1.714281000E3,6.460780580E1 +1.714608000E3,6.323149402E1 +1.714900000E3,5.890183616E1 +1.715139000E3,6.173404899E1 +1.715438000E3,6.193562982E1 +1.715674000E3,6.231645929E1 +1.715912000E3,5.798536661E1 +1.716293000E3,5.569607438E1 +1.716537000E3,6.131866955E1 +1.716790000E3,5.896584959E1 +1.717096000E3,5.693976131E1 +1.717346000E3,5.531403594E1 +1.717631000E3,5.794989861E1 +1.717933000E3,5.594899441E1 +1.718204000E3,5.601359132E1 +1.718501000E3,5.861037671E1 +1.718741000E3,6.432265266E1 +1.719043000E3,6.182586376E1 +1.719355000E3,6.076827417E1 +1.719645000E3,5.634225228E1 +1.719943000E3,5.935070169E1 +1.720188000E3,5.856877062E1 +1.720486000E3,5.761843709E1 +1.720741000E3,5.935030376E1 +1.720985000E3,5.413194972E1 +1.721289000E3,5.939733818E1 +1.721553000E3,5.617827250E1 +1.721847000E3,5.807085988E1 +1.722091000E3,5.877044817E1 +1.722445000E3,6.593854232E1 +1.722681000E3,6.027114564E1 +1.722973000E3,5.866411762E1 +1.723271000E3,5.588604319E1 +1.723508000E3,5.958751798E1 +1.723800000E3,6.077290351E1 +1.724039000E3,5.722905231E1 +1.724338000E3,5.619905124E1 +1.724576000E3,5.628809107E1 +1.724876000E3,5.560357878E1 +1.725168000E3,5.447509555E1 +1.725542000E3,5.278892866E1 +1.725841000E3,4.816211457E1 +1.726139000E3,4.622333411E1 +1.726399000E3,4.728231882E1 +1.726691000E3,5.101510224E1 +1.726947000E3,4.725933617E1 +1.727273000E3,5.333398449E1 +1.727569000E3,5.518583989E1 +1.727808000E3,5.719998093E1 +1.728061000E3,5.375072532E1 +1.728352000E3,5.631849408E1 +1.728644000E3,5.232994659E1 +1.729024000E3,5.045911420E1 +1.729295000E3,4.931808913E1 +1.729541000E3,4.866846016E1 +1.729788000E3,5.127644661E1 +1.730054000E3,4.769951033E1 +1.730296000E3,5.553885299E1 +1.730573000E3,5.629080236E1 +1.730816000E3,5.218818952E1 +1.731119000E3,5.112756333E1 +1.731379000E3,5.524890032E1 +1.731688000E3,5.530134621E1 +1.731949000E3,5.451831728E1 +1.732288000E3,5.380962689E1 +1.732589000E3,5.754684503E1 +1.732833000E3,5.184401682E1 +1.733102000E3,5.011373730E1 +1.733369000E3,5.541779655E1 +1.733647000E3,5.983699601E1 +1.733886000E3,6.131428317E1 +1.734163000E3,6.052345820E1 +1.734405000E3,5.852692054E1 +1.734659000E3,5.861191265E1 +1.734933000E3,5.957936529E1 +1.735219000E3,5.639739849E1 +1.735540000E3,5.207917019E1 +1.735832000E3,4.548490451E1 +1.736112000E3,5.219897691E1 +1.736384000E3,5.618314188E1 +1.736684000E3,5.720418785E1 +1.736946000E3,5.895068629E1 +1.737213000E3,5.652216932E1 +1.737468000E3,5.796687034E1 +1.737738000E3,5.591197017E1 +1.737996000E3,5.493985473E1 +1.738236000E3,5.752137274E1 +1.738586000E3,6.041563952E1 +1.738921000E3,6.199530447E1 +1.739167000E3,5.310800091E1 +1.739430000E3,5.600574849E1 +1.739683000E3,6.494981167E1 +1.739952000E3,6.157046745E1 +1.740293000E3,6.002681302E1 +1.740611000E3,5.943541790E1 +1.740910000E3,5.731619793E1 +1.741197000E3,5.885751119E1 +1.741508000E3,5.719237093E1 +1.741767000E3,5.958897825E1 +1.742034000E3,5.543499582E1 +1.742424000E3,5.632783570E1 +1.742688000E3,5.565042743E1 +1.742946000E3,5.622883854E1 +1.743204000E3,6.327777019E1 +1.743456000E3,5.663098185E1 +1.743721000E3,5.729384715E1 +1.743966000E3,6.200582057E1 +1.744273000E3,5.107652622E1 +1.744505000E3,5.491520459E1 +1.744752000E3,5.181266373E1 +1.745004000E3,5.014115745E1 +1.745297000E3,5.338585031E1 +1.745690000E3,5.654477286E1 +1.745966000E3,5.517036116E1 +1.746219000E3,5.200430375E1 +1.746475000E3,5.963355448E1 +1.746732000E3,5.854837006E1 +1.747002000E3,5.571277949E1 +1.747293000E3,5.825116458E1 +1.747522000E3,5.673248340E1 +1.747772000E3,5.683320783E1 +1.748035000E3,5.224053713E1 +1.748289000E3,5.713452273E1 +1.748568000E3,5.539076360E1 +1.748961000E3,6.015893340E1 +1.749211000E3,5.710921188E1 +1.749460000E3,6.114476082E1 +1.749715000E3,5.648052368E1 +1.749961000E3,5.897720288E1 +1.750207000E3,5.525435431E1 +1.750521000E3,5.447453139E1 +1.750765000E3,5.883968686E1 +1.751015000E3,5.450160052E1 +1.751290000E3,5.405183560E1 +1.751522000E3,5.501343440E1 +1.751848000E3,5.586635599E1 +1.752096000E3,5.631573217E1 +1.752372000E3,5.960964241E1 +1.752637000E3,5.320710483E1 +1.752941000E3,5.848434869E1 +1.753209000E3,5.619196315E1 +1.753510000E3,5.692291103E1 +1.753774000E3,5.505374149E1 +1.754051000E3,5.721759821E1 +1.754315000E3,5.539152446E1 +1.754625000E3,5.632890174E1 +1.754919000E3,5.918851802E1 +1.755262000E3,5.807294381E1 +1.755529000E3,5.748451885E1 +1.755827000E3,6.055251826E1 +1.756067000E3,6.208050524E1 +1.756367000E3,5.991655048E1 +1.756607000E3,6.073519941E1 +1.756900000E3,5.774998130E1 +1.757144000E3,5.751173009E1 +1.757417000E3,5.299288378E1 +1.757700000E3,5.913293772E1 +1.758005000E3,5.732040664E1 +1.758269000E3,6.221202462E1 +1.758585000E3,6.285457626E1 +1.758834000E3,5.870613535E1 +1.759137000E3,5.533279687E1 +1.759391000E3,5.194643865E1 +1.759644000E3,4.891449850E1 +1.759922000E3,4.784429271E1 +1.760236000E3,5.273391136E1 +1.760503000E3,5.475616990E1 +1.760758000E3,5.640096860E1 +1.761017000E3,5.329458627E1 +1.761282000E3,4.798672737E1 +1.761535000E3,5.532988346E1 +1.761794000E3,5.189579265E1 +1.762040000E3,5.068357941E1 +1.762299000E3,5.751972157E1 +1.762578000E3,5.430434207E1 +1.762831000E3,5.331943982E1 +1.763136000E3,5.699367350E1 +1.763409000E3,5.622858108E1 +1.763658000E3,5.631559008E1 +1.763910000E3,5.738562920E1 +1.764157000E3,6.030103345E1 +1.764400000E3,5.680309722E1 +1.764695000E3,5.703631315E1 +1.765017000E3,5.682945247E1 +1.765300000E3,5.317093897E1 +1.765575000E3,5.620624417E1 +1.765832000E3,5.550075987E1 +1.766100000E3,6.321349509E1 +1.766371000E3,5.938123887E1 +1.766635000E3,6.289622107E1 +1.766898000E3,5.890101653E1 +1.767155000E3,5.928826732E1 +1.767399000E3,5.872890625E1 +1.767638000E3,6.184345237E1 +1.767877000E3,6.131073260E1 +1.768211000E3,6.085041665E1 +1.768587000E3,6.015418617E1 +1.768835000E3,5.648473324E1 +1.769119000E3,5.746059957E1 +1.769380000E3,5.608054299E1 +1.769692000E3,6.542458852E1 +1.769998000E3,6.121618195E1 +1.770281000E3,5.842785672E1 +1.770536000E3,5.763776595E1 +1.770858000E3,5.630873419E1 +1.771133000E3,5.339704361E1 +1.771378000E3,5.463873835E1 +1.771723000E3,5.659388596E1 +1.772050000E3,5.449836230E1 +1.772294000E3,5.154616724E1 +1.772537000E3,5.082603581E1 +1.772795000E3,5.334183734E1 +1.773055000E3,5.096094928E1 +1.773365000E3,5.171061147E1 +1.773612000E3,5.477281719E1 +1.773878000E3,5.060909259E1 +1.774171000E3,5.285294921E1 +1.774452000E3,5.393730531E1 +1.774725000E3,5.333400186E1 +1.774980000E3,5.285705613E1 +1.775346000E3,5.719168586E1 +1.775663000E3,5.642193929E1 +1.775908000E3,4.659059970E1 +1.776150000E3,5.521168672E1 +1.776388000E3,5.693500665E1 +1.776630000E3,6.030483668E1 +1.776910000E3,5.944095915E1 +1.777153000E3,5.708951289E1 +1.777414000E3,5.291982189E1 +1.777666000E3,5.900042024E1 +1.777935000E3,6.010949926E1 +1.778229000E3,6.009411695E1 +1.778514000E3,5.804757181E1 +1.778758000E3,5.922775473E1 +1.779011000E3,6.063545461E1 +1.779277000E3,5.950242674E1 +1.779575000E3,6.057891518E1 +1.779819000E3,6.050018223E1 +1.780115000E3,5.965583098E1 +1.780361000E3,5.651792502E1 +1.780660000E3,5.814099422E1 +1.780904000E3,5.340077797E1 +1.781203000E3,5.734973286E1 +1.781481000E3,5.846278011E1 +1.781805000E3,5.369751607E1 +1.782048000E3,5.229063054E1 +1.782299000E3,5.345996994E1 +1.782583000E3,5.724353788E1 +1.782883000E3,5.610772411E1 +1.783181000E3,5.272586700E1 +1.783423000E3,5.272075137E1 +1.783692000E3,5.495532717E1 +1.783945000E3,5.594785882E1 +1.784202000E3,5.914935612E1 +1.784483000E3,6.427791570E1 +1.784735000E3,6.185652247E1 +1.785051000E3,6.178338943E1 +1.785352000E3,6.304285312E1 +1.785598000E3,5.699176354E1 +1.785897000E3,5.705567192E1 +1.786190000E3,5.975757470E1 +1.786467000E3,6.092866408E1 +1.786714000E3,5.771726615E1 +1.786984000E3,5.434727511E1 +1.787232000E3,5.250796794E1 +1.787486000E3,5.668884634E1 +1.787813000E3,5.600600547E1 +1.788061000E3,5.162213387E1 +1.788391000E3,5.782497792E1 +1.788636000E3,5.900804565E1 +1.788935000E3,6.056317474E1 +1.789175000E3,5.749029459E1 +1.789469000E3,6.053654612E1 +1.789714000E3,5.841478287E1 +1.789988000E3,5.700130118E1 +1.790219000E3,5.562837186E1 +1.790509000E3,5.430369658E1 +1.790806000E3,5.586895515E1 +1.791048000E3,5.809725956E1 +1.791409000E3,5.552827992E1 +1.791650000E3,5.534472171E1 +1.791981000E3,5.671474363E1 +1.792227000E3,5.716453332E1 +1.792522000E3,5.844249975E1 +1.792847000E3,5.961186667E1 +1.793109000E3,5.794833541E1 +1.793437000E3,5.832360597E1 +1.793698000E3,5.996001578E1 +1.793970000E3,5.849924827E1 +1.794223000E3,5.823551411E1 +1.794488000E3,5.480450178E1 +1.794819000E3,5.715609034E1 +1.795083000E3,5.418083703E1 +1.795329000E3,5.529883425E1 +1.795587000E3,5.729455769E1 +1.795853000E3,5.358946536E1 +1.796083000E3,5.534684059E1 +1.796374000E3,5.693696454E1 +1.796630000E3,5.642610016E1 +1.796927000E3,5.692548294E1 +1.797194000E3,5.931602223E1 +1.797469000E3,5.877569790E1 +1.797716000E3,5.527135197E1 +1.798053000E3,5.904674814E1 +1.798358000E3,5.655039196E1 +1.798612000E3,5.796779928E1 +1.798921000E3,5.499199210E1 +1.799185000E3,5.693837926E1 +1.799465000E3,6.235855457E1 +1.799695000E3,6.271612813E1 +1.799964000E3,6.118271582E1 +1.800233000E3,6.171552449E1 +1.800562000E3,6.293258336E1 +1.800818000E3,5.927940855E1 +1.801077000E3,5.836879001E1 +1.801406000E3,6.182854437E1 +1.801650000E3,5.918527405E1 +1.801894000E3,6.352260837E1 +1.802163000E3,6.142940723E1 +1.802385000E3,5.867772092E1 +1.802631000E3,5.916688243E1 +1.802927000E3,5.855222781E1 +1.803228000E3,6.125789004E1 +1.803533000E3,5.839377949E1 +1.803816000E3,5.705167204E1 +1.804057000E3,5.641730344E1 +1.804362000E3,6.771092582E1 +1.804585000E3,6.036461449E1 +1.804835000E3,6.742095194E1 +1.805132000E3,6.133151855E1 +1.805443000E3,6.658554202E1 +1.805718000E3,7.095511769E1 +1.806003000E3,7.330553664E1 +1.806290000E3,6.732809523E1 +1.806566000E3,6.106403544E1 +1.806844000E3,5.830930506E1 +1.807085000E3,6.610455401E1 +1.807442000E3,5.944325189E1 +1.807800000E3,5.667454347E1 +1.808044000E3,5.560521877E1 +1.808299000E3,5.488377812E1 +1.808542000E3,5.279721650E1 +1.808789000E3,4.834692654E1 +1.809029000E3,4.661669368E1 +1.809276000E3,5.501186804E1 +1.809526000E3,5.384830085E1 +1.809820000E3,5.526588307E1 +1.810084000E3,5.900458249E1 +1.810393000E3,5.557146256E1 +1.810647000E3,5.355619280E1 +1.811023000E3,5.627924000E1 +1.811283000E3,5.384503050E1 +1.811527000E3,5.309622401E1 +1.811816000E3,5.228523776E1 +1.812070000E3,5.317657142E1 +1.812328000E3,5.813846570E1 +1.812583000E3,5.621088360E1 +1.812927000E3,5.646965227E1 +1.813191000E3,5.322001188E1 +1.813436000E3,5.451886743E1 +1.813748000E3,5.558621720E1 +1.814006000E3,5.673920724E1 +1.814328000E3,5.582855401E1 +1.814591000E3,6.044196407E1 +1.814848000E3,5.769208427E1 +1.815109000E3,6.206015086E1 +1.815391000E3,5.918173335E1 +1.815660000E3,5.779702061E1 +1.815927000E3,6.516398742E1 +1.816218000E3,5.927869783E1 +1.816546000E3,6.320256740E1 +1.816802000E3,6.296743684E1 +1.817051000E3,5.869001212E1 +1.817329000E3,5.985536664E1 +1.817620000E3,5.435607380E1 +1.817905000E3,5.721703373E1 +1.818148000E3,6.314389823E1 +1.818376000E3,6.116752308E1 +1.818622000E3,5.773611736E1 +1.818863000E3,5.892899245E1 +1.819138000E3,5.791411351E1 +1.819457000E3,6.283307798E1 +1.819719000E3,5.805008540E1 +1.819967000E3,6.383011196E1 +1.820266000E3,5.915938870E1 +1.820515000E3,5.795811325E1 +1.820871000E3,5.730398564E1 +1.821113000E3,5.907223014E1 +1.821388000E3,5.566469845E1 +1.821612000E3,5.223652040E1 +1.821858000E3,5.461868826E1 +1.822118000E3,5.731142265E1 +1.822388000E3,5.743609212E1 +1.822672000E3,6.147918645E1 +1.822919000E3,6.109678537E1 +1.823167000E3,5.654516230E1 +1.823464000E3,6.010058675E1 +1.823716000E3,6.101649690E1 +1.824046000E3,5.741898993E1 +1.824372000E3,5.654969113E1 +1.824629000E3,5.489877253E1 +1.824894000E3,6.410593751E1 +1.825142000E3,5.923267903E1 +1.825399000E3,5.977300321E1 +1.825683000E3,5.945891570E1 +1.825907000E3,5.799474745E1 +1.826162000E3,5.485933719E1 +1.826447000E3,5.848818620E1 +1.826697000E3,5.937282663E1 +1.826944000E3,5.473647239E1 +1.827319000E3,5.611635619E1 +1.827649000E3,5.704234375E1 +1.827909000E3,5.174683398E1 +1.828172000E3,5.243070089E1 +1.828457000E3,5.835398328E1 +1.828710000E3,6.579711207E1 +1.828969000E3,6.063158540E1 +1.829218000E3,5.379307224E1 +1.829474000E3,5.791005982E1 +1.829779000E3,5.908028356E1 +1.830025000E3,5.476368407E1 +1.830307000E3,5.608145667E1 +1.830627000E3,5.417323034E1 +1.830843000E3,5.295530865E1 +1.831087000E3,5.335160491E1 +1.831385000E3,5.274441298E1 +1.831622000E3,5.307477504E1 +1.831918000E3,5.606159985E1 +1.832155000E3,6.009472302E1 +1.832471000E3,5.380117674E1 +1.832766000E3,5.382200579E1 +1.833012000E3,5.176006230E1 +1.833256000E3,5.956343573E1 +1.833577000E3,5.545935306E1 +1.833826000E3,5.528541848E1 +1.834083000E3,5.436381252E1 +1.834373000E3,5.684307553E1 +1.834669000E3,5.352399464E1 +1.834910000E3,5.651184236E1 +1.835208000E3,5.432875840E1 +1.835453000E3,5.442576527E1 +1.835752000E3,5.643309342E1 +1.836022000E3,5.781174029E1 +1.836293000E3,6.110602518E1 +1.836557000E3,5.591856301E1 +1.836932000E3,5.423752303E1 +1.837200000E3,5.716598850E1 +1.837455000E3,5.511743414E1 +1.837716000E3,5.819026063E1 +1.837988000E3,5.728773522E1 +1.838236000E3,5.959151016E1 +1.838540000E3,5.810767345E1 +1.838799000E3,5.779128856E1 +1.839096000E3,6.092094761E1 +1.839361000E3,5.957871329E1 +1.839608000E3,5.838702884E1 +1.839856000E3,5.927631822E1 +1.840242000E3,5.748386760E1 +1.840516000E3,5.957609475E1 +1.840759000E3,5.688693666E1 +1.841054000E3,5.883374773E1 +1.841320000E3,5.769470339E1 +1.841597000E3,5.894509733E1 +1.841885000E3,6.032854908E1 +1.842190000E3,5.891601570E1 +1.842444000E3,5.957860612E1 +1.842691000E3,5.968229576E1 +1.842933000E3,5.829247522E1 +1.843258000E3,6.183086549E1 +1.843539000E3,6.077794792E1 +1.843765000E3,5.928253866E1 +1.844002000E3,5.782805396E1 +1.844301000E3,5.975447959E1 +1.844589000E3,6.108169982E1 +1.844825000E3,5.915565503E1 +1.845116000E3,5.981302437E1 +1.845363000E3,6.019248645E1 +1.845636000E3,6.014223773E1 +1.845861000E3,6.160258605E1 +1.846139000E3,6.002388007E1 +1.846447000E3,6.004612452E1 +1.846706000E3,5.932487324E1 +1.846979000E3,5.718424575E1 +1.847284000E3,5.712987240E1 +1.847586000E3,5.557624595E1 +1.847888000E3,5.603981815E1 +1.848146000E3,5.769591687E1 +1.848418000E3,5.526085696E1 +1.848706000E3,5.815102401E1 +1.848972000E3,5.884177354E1 +1.849226000E3,5.853138751E1 +1.849515000E3,6.156208919E1 +1.849746000E3,6.064923427E1 +1.850008000E3,6.590305387E1 +1.850338000E3,5.853444981E1 +1.850640000E3,5.717447935E1 +1.850942000E3,5.680568615E1 +1.851242000E3,5.928468331E1 +1.851504000E3,5.798449444E1 +1.851757000E3,5.802619768E1 +1.852033000E3,5.998338312E1 +1.852296000E3,5.683616594E1 +1.852550000E3,5.692327884E1 +1.852886000E3,5.878610583E1 +1.853162000E3,5.538467470E1 +1.853432000E3,5.437085520E1 +1.853738000E3,5.469765317E1 +1.854038000E3,5.790268038E1 +1.854297000E3,5.836787866E1 +1.854582000E3,6.160807622E1 +1.854881000E3,5.878613196E1 +1.855158000E3,6.200103199E1 +1.855387000E3,6.087479870E1 +1.855688000E3,6.028304140E1 +1.855930000E3,6.159527875E1 +1.856226000E3,6.082174354E1 +1.856487000E3,5.932314061E1 +1.856744000E3,5.976570730E1 +1.857001000E3,5.473753247E1 +1.857299000E3,5.954612483E1 +1.857556000E3,6.052388497E1 +1.857849000E3,5.848282940E1 +1.858086000E3,5.879664566E1 +1.858384000E3,5.864589973E1 +1.858677000E3,5.659242719E1 +1.858917000E3,5.683870091E1 +1.859195000E3,5.582498919E1 +1.859427000E3,6.011873423E1 +1.859676000E3,5.796702396E1 +1.859911000E3,5.928400715E1 +1.860149000E3,5.826876733E1 +1.860396000E3,6.038481253E1 +1.860680000E3,6.030085568E1 +1.860944000E3,5.890166619E1 +1.861209000E3,6.654379171E1 +1.861519000E3,6.016187265E1 +1.861755000E3,6.139297542E1 +1.862049000E3,6.289106669E1 +1.862388000E3,5.872946965E1 +1.862675000E3,5.800836625E1 +1.862993000E3,5.701819685E1 +1.863248000E3,5.488359846E1 +1.863519000E3,5.747446133E1 +1.863768000E3,5.996388232E1 +1.864087000E3,5.686047813E1 +1.864334000E3,5.935760915E1 +1.864635000E3,6.438349972E1 +1.864894000E3,6.008599590E1 +1.865205000E3,5.995474236E1 +1.865502000E3,6.596906108E1 +1.865837000E3,6.091064347E1 +1.866114000E3,5.885056970E1 +1.866411000E3,6.474486832E1 +1.866666000E3,5.888758286E1 +1.866964000E3,6.138447683E1 +1.867211000E3,6.032596684E1 +1.867482000E3,5.848476935E1 +1.867736000E3,5.631330849E1 +1.867989000E3,5.927138373E1 +1.868246000E3,5.817171672E1 +1.868499000E3,5.358065381E1 +1.868763000E3,5.500264039E1 +1.869129000E3,5.663946315E1 +1.869384000E3,5.601392416E1 +1.869636000E3,5.640732154E1 +1.869947000E3,5.320213962E1 +1.870207000E3,4.907811811E1 +1.870470000E3,5.784153600E1 +1.870743000E3,5.988355074E1 +1.871011000E3,5.973830135E1 +1.871253000E3,5.769679044E1 +1.871519000E3,5.395770126E1 +1.871765000E3,5.751088186E1 +1.872011000E3,5.342275719E1 +1.872301000E3,5.638616310E1 +1.872563000E3,5.124369984E1 +1.872821000E3,5.357036185E1 +1.873129000E3,5.529809524E1 +1.873386000E3,5.442720524E1 +1.873650000E3,5.306298792E1 +1.873937000E3,5.703507672E1 +1.874184000E3,5.835246426E1 +1.874444000E3,5.638184247E1 +1.874707000E3,5.201779537E1 +1.874972000E3,5.217149520E1 +1.875244000E3,5.757612416E1 +1.875577000E3,5.387788750E1 +1.875865000E3,5.607108884E1 +1.876149000E3,5.692352283E1 +1.876407000E3,5.577296536E1 +1.876687000E3,5.259836493E1 +1.876982000E3,5.467571766E1 +1.877215000E3,5.256317748E1 +1.877521000E3,5.522593862E1 +1.877775000E3,5.432669245E1 +1.878036000E3,5.734031668E1 +1.878314000E3,6.027566119E1 +1.878587000E3,5.567003578E1 +1.878912000E3,5.307720644E1 +1.879176000E3,5.659939353E1 +1.879425000E3,5.110556861E1 +1.879723000E3,5.673190580E1 +1.879969000E3,5.437112204E1 +1.880274000E3,5.433297742E1 +1.880576000E3,5.585075865E1 +1.880875000E3,5.657006430E1 +1.881117000E3,5.701623858E1 +1.881424000E3,5.749679466E1 +1.881673000E3,5.623079196E1 +1.881986000E3,5.545187468E1 +1.882329000E3,5.781610131E1 +1.882611000E3,5.432916720E1 +1.882882000E3,4.940287270E1 +1.883127000E3,5.866223377E1 +1.883391000E3,5.654564177E1 +1.883644000E3,5.888782218E1 +1.883889000E3,5.586307703E1 +1.884148000E3,5.930725555E1 +1.884413000E3,5.963840788E1 +1.884660000E3,5.928611951E1 +1.884926000E3,5.621968819E1 +1.885181000E3,5.811455305E1 +1.885457000E3,5.585646129E1 +1.885714000E3,5.989591718E1 +1.885968000E3,6.058402104E1 +1.886267000E3,5.972100226E1 +1.886517000E3,6.220704457E1 +1.886832000E3,6.037773435E1 +1.887106000E3,6.039308032E1 +1.887385000E3,6.223647696E1 +1.887617000E3,5.854088114E1 +1.887876000E3,6.248517888E1 +1.888128000E3,6.222318884E1 +1.888437000E3,6.070320114E1 +1.888777000E3,5.817372188E1 +1.889076000E3,5.382250608E1 +1.889369000E3,7.004593531E1 +1.889616000E3,6.094415751E1 +1.889913000E3,5.455584628E1 +1.890163000E3,5.387250795E1 +1.890418000E3,5.219742496E1 +1.890714000E3,5.070715955E1 +1.890961000E3,5.362651533E1 +1.891207000E3,5.046817004E1 +1.891453000E3,5.129339201E1 +1.891764000E3,4.856730286E1 +1.892053000E3,5.220705734E1 +1.892321000E3,5.401068171E1 +1.892582000E3,5.109746146E1 +1.892834000E3,5.412675897E1 +1.893090000E3,5.347014573E1 +1.893340000E3,5.092720593E1 +1.893620000E3,5.341316175E1 +1.893886000E3,4.870918930E1 +1.894142000E3,4.929590175E1 +1.894389000E3,4.686294330E1 +1.894692000E3,5.100486031E1 +1.894995000E3,5.087478993E1 +1.895328000E3,4.940372977E1 +1.895606000E3,5.362468443E1 +1.895919000E3,5.608826750E1 +1.896241000E3,5.628756413E1 +1.896497000E3,5.817843169E1 +1.896749000E3,5.809119715E1 +1.897054000E3,5.469613872E1 +1.897287000E3,5.437807476E1 +1.897582000E3,5.794761863E1 +1.897897000E3,6.027023965E1 +1.898145000E3,5.913564460E1 +1.898511000E3,5.510014788E1 +1.898752000E3,5.499817732E1 +1.898999000E3,5.569220222E1 +1.899294000E3,5.368447548E1 +1.899547000E3,5.912109227E1 +1.899841000E3,6.076259223E1 +1.900104000E3,6.153129043E1 +1.900349000E3,5.679462536E1 +1.900634000E3,5.721135074E1 +1.900927000E3,5.674745728E1 +1.901166000E3,5.556227882E1 +1.901462000E3,4.994603734E1 +1.901841000E3,5.122656475E1 +1.902183000E3,5.127903645E1 +1.902436000E3,5.042064547E1 +1.902695000E3,5.425673681E1 +1.902998000E3,5.484388956E1 +1.903228000E3,5.322356297E1 +1.903483000E3,5.161093724E1 +1.903730000E3,5.302125687E1 +1.904019000E3,5.241958307E1 +1.904307000E3,5.116604316E1 +1.904614000E3,5.319513233E1 +1.904991000E3,5.530482451E1 +1.905243000E3,5.829713614E1 +1.905528000E3,4.891404960E1 +1.905774000E3,5.408250868E1 +1.906083000E3,5.272747143E1 +1.906381000E3,5.216068921E1 +1.906624000E3,5.292203291E1 +1.906885000E3,5.243548019E1 +1.907149000E3,4.981562618E1 +1.907448000E3,5.500279348E1 +1.907742000E3,5.481190601E1 +1.907999000E3,5.369800103E1 +1.908315000E3,6.390197571E1 +1.908579000E3,6.517990141E1 +1.908825000E3,5.822949910E1 +1.909064000E3,5.655728640E1 +1.909356000E3,5.292186662E1 +1.909600000E3,5.069372058E1 +1.909895000E3,5.368100654E1 +1.910138000E3,5.616508462E1 +1.910432000E3,6.285923815E1 +1.910670000E3,6.254266196E1 +1.910979000E3,5.628599605E1 +1.911260000E3,5.616383984E1 +1.911482000E3,5.074231882E1 +1.911728000E3,5.398858859E1 +1.911977000E3,5.585565083E1 +1.912237000E3,5.777112626E1 +1.912532000E3,6.036032129E1 +1.912783000E3,6.077032608E1 +1.913052000E3,5.839282786E1 +1.913316000E3,5.397912726E1 +1.913575000E3,5.582771928E1 +1.913848000E3,5.579334158E1 +1.914143000E3,5.778281485E1 +1.914450000E3,5.783459906E1 +1.914713000E3,6.199387267E1 +1.914943000E3,6.173706737E1 +1.915185000E3,5.621060236E1 +1.915433000E3,5.563784893E1 +1.915692000E3,5.470990272E1 +1.915951000E3,5.469960060E1 +1.916217000E3,6.171536544E1 +1.916470000E3,5.862130066E1 +1.916777000E3,5.839467924E1 +1.917028000E3,5.552209731E1 +1.917324000E3,5.763067987E1 +1.917687000E3,5.981653815E1 +1.917967000E3,5.790518789E1 +1.918210000E3,5.220287871E1 +1.918457000E3,5.707286116E1 +1.918759000E3,5.657529642E1 +1.918997000E3,6.000130629E1 +1.919241000E3,5.708419446E1 +1.919496000E3,5.749223221E1 +1.919768000E3,5.843781753E1 +1.920074000E3,5.671929683E1 +1.920373000E3,5.881070992E1 +1.920621000E3,5.603223824E1 +1.920956000E3,6.053511488E1 +1.921216000E3,5.525745837E1 +1.921476000E3,6.186721324E1 +1.921723000E3,6.214292360E1 +1.922025000E3,5.857206109E1 +1.922320000E3,5.934438900E1 +1.922561000E3,6.077867207E1 +1.922860000E3,5.578255978E1 +1.923099000E3,5.723807446E1 +1.923347000E3,5.785786452E1 +1.923636000E3,6.037753633E1 +1.923892000E3,6.106459696E1 +1.924223000E3,5.873119773E1 +1.924511000E3,5.862235861E1 +1.924814000E3,5.732521131E1 +1.925070000E3,5.161553090E1 +1.925373000E3,5.243351685E1 +1.925626000E3,5.041805469E1 +1.925919000E3,5.543714980E1 +1.926175000E3,5.338657816E1 +1.926425000E3,5.616854022E1 +1.926695000E3,5.699328540E1 +1.926965000E3,5.787312270E1 +1.927305000E3,5.558473925E1 +1.927614000E3,5.927685087E1 +1.927880000E3,6.254706193E1 +1.928125000E3,6.079427969E1 +1.928390000E3,5.412440784E1 +1.928634000E3,5.441834540E1 +1.928928000E3,5.220486428E1 +1.929215000E3,5.210908233E1 +1.929515000E3,5.352367419E1 +1.929766000E3,5.356350702E1 +1.930022000E3,5.184851991E1 +1.930322000E3,5.311742835E1 +1.930607000E3,5.453786592E1 +1.930870000E3,5.814140937E1 +1.931155000E3,5.779656646E1 +1.931440000E3,5.488757891E1 +1.931727000E3,5.385182390E1 +1.931981000E3,5.705491580E1 +1.932229000E3,5.576165296E1 +1.932491000E3,5.781333383E1 +1.932730000E3,5.616780300E1 +1.932971000E3,5.400230043E1 +1.933232000E3,5.518627884E1 +1.933510000E3,5.211300688E1 +1.933795000E3,5.292820587E1 +1.934127000E3,5.382097927E1 +1.934390000E3,6.102840439E1 +1.934671000E3,5.486275546E1 +1.934948000E3,5.206103103E1 +1.935198000E3,5.739150099E1 +1.935506000E3,5.310844778E1 +1.935756000E3,5.392681604E1 +1.936008000E3,5.250003264E1 +1.936256000E3,5.801399662E1 +1.936524000E3,5.696032820E1 +1.936785000E3,5.414492013E1 +1.937032000E3,5.536982174E1 +1.937391000E3,5.750979970E1 +1.937677000E3,5.370086514E1 +1.937972000E3,5.359409099E1 +1.938241000E3,4.663692517E1 +1.938508000E3,4.740501122E1 +1.938772000E3,4.812116539E1 +1.939051000E3,4.940260018E1 +1.939311000E3,5.211533825E1 +1.939553000E3,5.351181789E1 +1.939796000E3,5.597808269E1 +1.940081000E3,5.841474518E1 +1.940347000E3,5.900966915E1 +1.940680000E3,5.844032848E1 +1.940932000E3,6.047778057E1 +1.941187000E3,6.179458512E1 +1.941488000E3,5.569784051E1 +1.941730000E3,5.535681081E1 +1.941971000E3,5.409739450E1 +1.942227000E3,5.551927029E1 +1.942555000E3,5.259381649E1 +1.942855000E3,5.090743186E1 +1.943101000E3,5.330610416E1 +1.943383000E3,5.722147303E1 +1.943610000E3,5.564867598E1 +1.944013000E3,5.456395907E1 +1.944265000E3,5.442943523E1 +1.944557000E3,5.982581487E1 +1.944820000E3,5.751114261E1 +1.945081000E3,5.998630171E1 +1.945333000E3,5.908382499E1 +1.945646000E3,5.828329647E1 +1.945951000E3,5.602282904E1 +1.946199000E3,6.197108249E1 +1.946496000E3,5.533258874E1 +1.946770000E3,5.704060455E1 +1.947126000E3,5.457797110E1 +1.947363000E3,5.430717613E1 +1.947637000E3,5.940687974E1 +1.947953000E3,5.436076271E1 +1.948235000E3,5.660912008E1 +1.948550000E3,5.504399315E1 +1.948861000E3,5.464999644E1 +1.949122000E3,5.565806372E1 +1.949384000E3,5.190569146E1 +1.949646000E3,5.153937000E1 +1.949972000E3,5.628803963E1 +1.950248000E3,5.966716422E1 +1.950577000E3,5.820503815E1 +1.950822000E3,5.652058726E1 +1.951118000E3,5.802645793E1 +1.951349000E3,5.727916959E1 +1.951597000E3,5.784165576E1 +1.951900000E3,5.999225852E1 +1.952197000E3,6.048891831E1 +1.952433000E3,5.821794698E1 +1.952728000E3,5.416701806E1 +1.952964000E3,5.183738883E1 +1.953295000E3,5.384161890E1 +1.953675000E3,5.430376660E1 +1.953907000E3,5.257088063E1 +1.954151000E3,5.392186903E1 +1.954431000E3,6.167467738E1 +1.954678000E3,5.958790115E1 +1.954923000E3,5.822018477E1 +1.955185000E3,5.808448347E1 +1.955447000E3,5.733347749E1 +1.955703000E3,6.261390980E1 +1.956005000E3,5.829281758E1 +1.956246000E3,5.949056653E1 +1.956541000E3,5.839747914E1 +1.956810000E3,5.770882066E1 +1.957120000E3,5.690637302E1 +1.957421000E3,5.796705847E1 +1.957668000E3,5.867770180E1 +1.957936000E3,5.696585443E1 +1.958216000E3,5.738908049E1 +1.958463000E3,5.842272770E1 +1.958721000E3,5.966072568E1 +1.959033000E3,6.340725612E1 +1.959281000E3,6.193544465E1 +1.959566000E3,5.927164536E1 +1.959888000E3,6.146900670E1 +1.960249000E3,6.270186363E1 +1.960512000E3,5.695216686E1 +1.960779000E3,5.725758836E1 +1.961040000E3,5.788439963E1 +1.961303000E3,6.286977927E1 +1.961557000E3,6.361469653E1 +1.961802000E3,6.277422462E1 +1.962060000E3,6.032704022E1 +1.962310000E3,5.600516510E1 +1.962586000E3,6.188879617E1 +1.962805000E3,6.271522018E1 +1.963107000E3,6.025198847E1 +1.963453000E3,6.001529679E1 +1.963728000E3,5.375240125E1 +1.964036000E3,5.055228276E1 +1.964331000E3,5.257092943E1 +1.964568000E3,5.708661900E1 +1.964868000E3,5.629448239E1 +1.965178000E3,5.425890416E1 +1.965431000E3,5.575014937E1 +1.965679000E3,5.801461965E1 +1.965931000E3,5.400244473E1 +1.966191000E3,5.474887871E1 +1.966525000E3,5.196538635E1 +1.966783000E3,5.536524974E1 +1.967040000E3,5.974878933E1 +1.967338000E3,6.200932986E1 +1.967644000E3,6.295299888E1 +1.967909000E3,6.272635154E1 +1.968153000E3,5.902465660E1 +1.968474000E3,5.897159976E1 +1.968773000E3,5.506910037E1 +1.969014000E3,5.622897524E1 +1.969254000E3,5.457019516E1 +1.969505000E3,5.648049168E1 +1.969892000E3,5.656883155E1 +1.970152000E3,5.598423772E1 +1.970446000E3,5.186768597E1 +1.970726000E3,5.526177698E1 +1.971020000E3,5.810907246E1 +1.971304000E3,5.262875480E1 +1.971613000E3,5.141696402E1 +1.971915000E3,5.298264424E1 +1.972196000E3,5.641801556E1 +1.972483000E3,5.228737642E1 +1.972725000E3,5.649656740E1 +1.973036000E3,5.867645632E1 +1.973323000E3,5.679238187E1 +1.973633000E3,5.959682402E1 +1.973935000E3,5.617109756E1 +1.974236000E3,5.473085666E1 +1.974547000E3,5.589564412E1 +1.974836000E3,5.691193712E1 +1.975136000E3,5.808545953E1 +1.975385000E3,5.922478363E1 +1.975631000E3,5.707996013E1 +1.975881000E3,5.820923707E1 +1.976194000E3,5.897957095E1 +1.976453000E3,6.019944728E1 +1.976814000E3,6.472960186E1 +1.977076000E3,6.312075290E1 +1.977356000E3,5.886370461E1 +1.977618000E3,5.750754913E1 +1.977917000E3,5.531180501E1 +1.978189000E3,5.815410032E1 +1.978463000E3,5.735965971E1 +1.978732000E3,5.593071322E1 +1.978999000E3,5.835041964E1 +1.979245000E3,5.646810288E1 +1.979493000E3,5.392299875E1 +1.979902000E3,5.430590311E1 +1.980142000E3,5.447583546E1 +1.980384000E3,5.260389735E1 +1.980632000E3,5.537561423E1 +1.980873000E3,5.836960119E1 +1.981120000E3,5.425821286E1 +1.981389000E3,5.153336720E1 +1.981618000E3,5.420085973E1 +1.981915000E3,5.457985954E1 +1.982165000E3,5.637026749E1 +1.982404000E3,6.009656118E1 +1.982718000E3,5.903298531E1 +1.983029000E3,5.665152425E1 +1.983296000E3,5.778918758E1 +1.983538000E3,5.444374512E1 +1.983786000E3,5.619088618E1 +1.984047000E3,6.088482249E1 +1.984304000E3,5.678390940E1 +1.984575000E3,5.873820942E1 +1.984842000E3,6.004736340E1 +1.985142000E3,6.191465398E1 +1.985405000E3,6.154032648E1 +1.985653000E3,5.967034113E1 +1.985913000E3,5.855925349E1 +1.986211000E3,5.529356341E1 +1.986557000E3,5.823190054E1 +1.986847000E3,5.749679599E1 +1.987098000E3,5.855123449E1 +1.987369000E3,5.999203293E1 +1.987610000E3,6.139424716E1 +1.987876000E3,5.730078222E1 +1.988126000E3,5.649537684E1 +1.988425000E3,5.872458305E1 +1.988727000E3,5.704322852E1 +1.989024000E3,6.264447151E1 +1.989326000E3,5.763604303E1 +1.989641000E3,5.657919006E1 +1.989961000E3,5.706004491E1 +1.990255000E3,6.115159729E1 +1.990571000E3,5.721964371E1 +1.990829000E3,5.780420781E1 +1.991088000E3,5.782228640E1 +1.991353000E3,5.791642518E1 +1.991611000E3,5.820065680E1 +1.991935000E3,5.675756460E1 +1.992174000E3,5.720433643E1 +1.992482000E3,5.907701380E1 +1.992770000E3,5.791335620E1 +1.993107000E3,5.504589678E1 +1.993369000E3,6.117578252E1 +1.993619000E3,5.902046786E1 +1.993912000E3,6.024153080E1 +1.994216000E3,6.061721402E1 +1.994464000E3,6.185610038E1 +1.994715000E3,5.902440055E1 +1.995005000E3,6.112374185E1 +1.995249000E3,5.664710018E1 +1.995551000E3,5.841351492E1 +1.995787000E3,5.961393992E1 +1.996119000E3,5.614463215E1 +1.996387000E3,5.528223904E1 +1.996647000E3,5.706960328E1 +1.996947000E3,5.544195306E1 +1.997203000E3,5.747091679E1 +1.997452000E3,5.434233120E1 +1.997769000E3,5.794847441E1 +1.998019000E3,5.504963001E1 +1.998267000E3,5.470768853E1 +1.998498000E3,6.426300701E1 +1.998789000E3,6.070245213E1 +1.999090000E3,5.893271279E1 +1.999390000E3,5.873668669E1 +1.999698000E3,6.355663744E1 +1.999962000E3,6.500393379E1 +2.000214000E3,6.177640112E1 +2.000471000E3,6.122167361E1 +2.000775000E3,5.982616779E1 +2.001079000E3,5.944943300E1 +2.001339000E3,5.772707313E1 +2.001595000E3,5.934980117E1 +2.001862000E3,6.221301291E1 +2.002160000E3,6.098009785E1 +2.002491000E3,6.205877653E1 +2.002758000E3,5.978743388E1 +2.003062000E3,6.141065367E1 +2.003307000E3,6.146860620E1 +2.003555000E3,6.323368939E1 +2.003884000E3,6.072009355E1 +2.004185000E3,6.072017978E1 +2.004424000E3,6.079512782E1 +2.004673000E3,6.651000141E1 +2.004939000E3,6.185812181E1 +2.005202000E3,5.705353418E1 +2.005472000E3,5.820400818E1 +2.005800000E3,5.682542431E1 +2.006070000E3,6.224932691E1 +2.006350000E3,5.654791681E1 +2.006601000E3,6.160831985E1 +2.006857000E3,6.443497299E1 +2.007101000E3,6.091208862E1 +2.007395000E3,5.867323811E1 +2.007635000E3,5.850229824E1 +2.007945000E3,6.307832054E1 +2.008197000E3,5.931313312E1 +2.008453000E3,5.632990721E1 +2.008711000E3,5.662998085E1 +2.009032000E3,5.416655753E1 +2.009268000E3,6.273936844E1 +2.009521000E3,6.129068926E1 +2.009786000E3,6.485712301E1 +2.010037000E3,6.605690213E1 +2.010298000E3,6.243431425E1 +2.010541000E3,6.062714733E1 +2.010780000E3,6.369220544E1 +2.011082000E3,5.933701247E1 +2.011330000E3,6.141658123E1 +2.011605000E3,6.232326760E1 +2.011893000E3,5.983132844E1 +2.012226000E3,6.085684837E1 +2.012489000E3,5.844434641E1 +2.012752000E3,5.992485437E1 +2.013005000E3,5.745164278E1 +2.013272000E3,5.489362140E1 +2.013573000E3,5.734004331E1 +2.013861000E3,5.569303233E1 +2.014170000E3,5.619919203E1 +2.014467000E3,5.719248521E1 +2.014715000E3,5.898607642E1 +2.015015000E3,5.312334941E1 +2.015258000E3,4.707687024E1 +2.015594000E3,5.326213693E1 +2.015822000E3,4.977107581E1 +2.016071000E3,5.399380901E1 +2.016333000E3,5.528915982E1 +2.016634000E3,5.648344312E1 +2.016879000E3,5.853194276E1 +2.017143000E3,5.969968429E1 +2.017429000E3,6.121498547E1 +2.017723000E3,5.933414775E1 +2.017961000E3,6.375558171E1 +2.018248000E3,6.102538403E1 +2.018558000E3,6.066629858E1 +2.018830000E3,5.238394429E1 +2.019065000E3,5.528030903E1 +2.019316000E3,5.711235169E1 +2.019578000E3,6.069913503E1 +2.019847000E3,5.344730110E1 +2.020093000E3,5.593398360E1 +2.020413000E3,5.112453486E1 +2.020668000E3,5.529600172E1 +2.020922000E3,5.816841553E1 +2.021177000E3,6.105447683E1 +2.021449000E3,5.967528890E1 +2.021707000E3,5.677568689E1 +2.022115000E3,5.613246875E1 +2.022403000E3,5.846674311E1 +2.022679000E3,5.999468936E1 +2.022930000E3,6.268951545E1 +2.023232000E3,6.037378186E1 +2.023532000E3,6.123290650E1 +2.023784000E3,6.425880775E1 +2.024094000E3,6.043334594E1 +2.024356000E3,6.287321918E1 +2.024616000E3,6.178703582E1 +2.024868000E3,5.974424575E1 +2.025152000E3,5.863905018E1 +2.025429000E3,5.669082005E1 +2.025716000E3,6.192616195E1 +2.026008000E3,6.367561928E1 +2.026300000E3,6.061621393E1 +2.026543000E3,6.411900249E1 +2.026802000E3,6.060951858E1 +2.027066000E3,5.606119041E1 +2.027395000E3,5.099901519E1 +2.027693000E3,5.622472082E1 +2.027945000E3,5.354940616E1 +2.028237000E3,6.282566888E1 +2.028553000E3,5.775523802E1 +2.028868000E3,6.095006183E1 +2.029133000E3,6.333727439E1 +2.029399000E3,5.925545982E1 +2.029660000E3,6.045827699E1 +2.029962000E3,5.594587825E1 +2.030223000E3,5.708579081E1 +2.030478000E3,5.777704597E1 +2.030737000E3,5.406349508E1 +2.030990000E3,5.544037764E1 +2.031246000E3,5.912518025E1 +2.031508000E3,5.924806900E1 +2.031864000E3,6.105667153E1 +2.032110000E3,5.838466956E1 +2.032350000E3,5.923100201E1 +2.032598000E3,6.024290558E1 +2.032866000E3,5.971089342E1 +2.033112000E3,5.478665804E1 +2.033351000E3,5.966531235E1 +2.033644000E3,5.755565544E1 +2.033892000E3,5.982004182E1 +2.034190000E3,5.797424789E1 +2.034425000E3,5.856301863E1 +2.034717000E3,6.325478319E1 +2.035053000E3,6.168254294E1 +2.035364000E3,6.188857455E1 +2.035619000E3,6.156039581E1 +2.035901000E3,6.235770270E1 +2.036169000E3,6.262779828E1 +2.036471000E3,6.142542176E1 +2.036764000E3,5.923845966E1 +2.037022000E3,5.827266837E1 +2.037307000E3,6.314641141E1 +2.037615000E3,5.460230698E1 +2.037870000E3,5.396400232E1 +2.038120000E3,5.561122002E1 +2.038463000E3,5.928400391E1 +2.038767000E3,5.668934966E1 +2.039069000E3,5.831653467E1 +2.039316000E3,5.267103167E1 +2.039622000E3,5.557794232E1 +2.039859000E3,5.543606804E1 +2.040196000E3,5.836770370E1 +2.040499000E3,5.678092478E1 +2.040751000E3,5.612506795E1 +2.041024000E3,5.868430679E1 +2.041274000E3,5.264121586E1 +2.041581000E3,5.828774790E1 +2.041841000E3,5.647338053E1 +2.042088000E3,6.053709731E1 +2.042403000E3,5.614689861E1 +2.042691000E3,5.714845923E1 +2.042944000E3,5.256418368E1 +2.043191000E3,5.601486494E1 +2.043466000E3,5.810869150E1 +2.043715000E3,5.529893852E1 +2.043979000E3,5.708153712E1 +2.044245000E3,5.690179830E1 +2.044568000E3,5.994555064E1 +2.044825000E3,6.172126409E1 +2.045096000E3,6.015473895E1 +2.045377000E3,5.509344178E1 +2.045629000E3,5.568915719E1 +2.045902000E3,5.938619751E1 +2.046155000E3,5.534852098E1 +2.046409000E3,5.905391706E1 +2.046693000E3,5.250115201E1 +2.046947000E3,5.587771233E1 +2.047277000E3,5.599930929E1 +2.047517000E3,5.586822515E1 +2.047803000E3,5.740436533E1 +2.048105000E3,5.413600866E1 +2.048476000E3,5.595836709E1 +2.048737000E3,5.982743631E1 +2.048992000E3,6.001131240E1 +2.049305000E3,5.629713962E1 +2.049568000E3,5.505265617E1 +2.049904000E3,5.686004167E1 +2.050199000E3,6.078932545E1 +2.050470000E3,5.919030857E1 +2.050773000E3,5.640754436E1 +2.051052000E3,5.864124078E1 +2.051311000E3,5.683150656E1 +2.051642000E3,5.391893615E1 +2.051926000E3,4.513639699E1 +2.052174000E3,5.750824000E1 +2.052467000E3,5.945309138E1 +2.052703000E3,6.260915402E1 +2.052981000E3,6.017408744E1 +2.053276000E3,6.158293130E1 +2.053516000E3,6.279041899E1 +2.053759000E3,6.005362243E1 +2.054030000E3,5.776050932E1 +2.054357000E3,5.906607942E1 +2.054642000E3,6.002924771E1 +2.054978000E3,5.708591672E1 +2.055267000E3,5.932996992E1 +2.055552000E3,5.830703641E1 +2.055812000E3,5.428102985E1 +2.056063000E3,5.893384546E1 +2.056382000E3,6.028305726E1 +2.056682000E3,5.904357096E1 +2.056923000E3,6.015407432E1 +2.057171000E3,5.801677968E1 +2.057418000E3,6.561794532E1 +2.057665000E3,6.751214025E1 +2.057959000E3,5.899748641E1 +2.058279000E3,5.616162884E1 +2.058571000E3,5.813941707E1 +2.058834000E3,6.236684118E1 +2.059132000E3,6.058455193E1 +2.059376000E3,6.004963560E1 +2.059687000E3,6.255152045E1 +2.059984000E3,6.155697025E1 +2.060225000E3,6.124056229E1 +2.060517000E3,6.072549607E1 +2.060756000E3,6.119225814E1 +2.061060000E3,5.953618039E1 +2.061302000E3,5.869582322E1 +2.061578000E3,6.248269042E1 +2.061841000E3,6.070173510E1 +2.062089000E3,6.023992255E1 +2.062337000E3,5.848175462E1 +2.062607000E3,5.092907116E1 +2.062859000E3,5.442118268E1 +2.063124000E3,5.298599309E1 +2.063425000E3,6.030333428E1 +2.063671000E3,5.835700379E1 +2.063954000E3,5.943633389E1 +2.064268000E3,5.761479859E1 +2.064577000E3,5.520238299E1 +2.064822000E3,5.901822557E1 +2.065074000E3,5.705952734E1 +2.065339000E3,6.136116330E1 +2.065603000E3,5.746483296E1 +2.065865000E3,5.867757380E1 +2.066141000E3,5.709322981E1 +2.066441000E3,5.775131141E1 +2.066691000E3,5.886237327E1 +2.067036000E3,5.617972984E1 +2.067288000E3,5.802507148E1 +2.067560000E3,6.044497816E1 +2.067891000E3,5.450044868E1 +2.068148000E3,5.616761260E1 +2.068412000E3,6.243097888E1 +2.068673000E3,5.783788439E1 +2.068946000E3,5.764761585E1 +2.069196000E3,5.683737954E1 +2.069468000E3,5.609890848E1 +2.069778000E3,5.465619904E1 +2.070034000E3,5.368960846E1 +2.070328000E3,6.032893819E1 +2.070574000E3,5.862927742E1 +2.070842000E3,5.635830209E1 +2.071101000E3,5.822198053E1 +2.071339000E3,5.691346983E1 +2.071597000E3,5.865778618E1 +2.071860000E3,5.810560725E1 +2.072128000E3,5.968009174E1 +2.072425000E3,5.833852533E1 +2.072667000E3,5.784540163E1 +2.072934000E3,5.644439458E1 +2.073184000E3,5.178260396E1 +2.073488000E3,5.751445421E1 +2.073769000E3,5.974800721E1 +2.074068000E3,6.534291023E1 +2.074348000E3,6.371076652E1 +2.074624000E3,6.156132937E1 +2.074877000E3,6.012113548E1 +2.075119000E3,6.026351151E1 +2.075377000E3,6.142675581E1 +2.075661000E3,6.194478144E1 +2.075914000E3,6.183865569E1 +2.076267000E3,6.387512541E1 +2.076547000E3,6.077311287E1 +2.076803000E3,6.130963963E1 +2.077056000E3,5.862622582E1 +2.077295000E3,5.463497219E1 +2.077610000E3,5.484231095E1 +2.077891000E3,6.099801434E1 +2.078171000E3,5.475621164E1 +2.078466000E3,5.955577801E1 +2.078709000E3,5.720097088E1 +2.078954000E3,5.661944912E1 +2.079224000E3,5.443336360E1 +2.079503000E3,5.917559782E1 +2.079800000E3,5.424380486E1 +2.080057000E3,6.013762169E1 +2.080307000E3,6.100643768E1 +2.080558000E3,6.205128007E1 +2.080810000E3,6.007904071E1 +2.081092000E3,6.423414837E1 +2.081354000E3,5.938817614E1 +2.081601000E3,6.006860062E1 +2.081845000E3,5.833570272E1 +2.082143000E3,5.962915676E1 +2.082396000E3,5.844615966E1 +2.082663000E3,5.932060291E1 +2.082921000E3,6.037844323E1 +2.083227000E3,5.719168160E1 +2.083487000E3,5.597578938E1 +2.083743000E3,5.236775830E1 +2.084062000E3,5.471900653E1 +2.084318000E3,5.178371688E1 +2.084618000E3,5.707729304E1 +2.084858000E3,5.526812689E1 +2.085154000E3,5.716405930E1 +2.085391000E3,5.478798233E1 +2.085687000E3,5.496315929E1 +2.085932000E3,5.701239101E1 +2.086228000E3,5.776438308E1 +2.086467000E3,5.628202894E1 +2.086760000E3,5.042244376E1 +2.087015000E3,5.775963511E1 +2.087362000E3,4.982890988E1 +2.087671000E3,4.785672217E1 +2.087922000E3,4.762697394E1 +2.088178000E3,5.046726223E1 +2.088438000E3,4.890262424E1 +2.088711000E3,5.501277631E1 +2.088981000E3,5.666001705E1 +2.089249000E3,6.014252161E1 +2.089513000E3,5.925311989E1 +2.089806000E3,6.173820636E1 +2.090063000E3,5.350884215E1 +2.090366000E3,5.736408779E1 +2.090744000E3,5.450936109E1 +2.091005000E3,5.763377323E1 +2.091253000E3,6.042269191E1 +2.091515000E3,5.484903903E1 +2.091757000E3,5.882101591E1 +2.092028000E3,5.833139845E1 +2.092280000E3,5.703430671E1 +2.092527000E3,5.247783814E1 +2.092809000E3,5.233323676E1 +2.093037000E3,5.202869643E1 +2.093354000E3,5.628845797E1 +2.093634000E3,5.325396544E1 +2.094006000E3,5.654992892E1 +2.094280000E3,5.713253789E1 +2.094541000E3,5.967664240E1 +2.094800000E3,5.750232678E1 +2.095069000E3,5.544480371E1 +2.095333000E3,5.462176641E1 +2.095596000E3,5.811248949E1 +2.095853000E3,6.196847972E1 +2.096192000E3,5.842850461E1 +2.096488000E3,5.597774452E1 +2.096726000E3,5.601282925E1 +2.097104000E3,5.625832805E1 +2.097364000E3,5.315488909E1 +2.097602000E3,5.287250653E1 +2.097844000E3,5.523708836E1 +2.098081000E3,5.724292600E1 +2.098340000E3,5.659511238E1 +2.098670000E3,5.675324149E1 +2.098945000E3,5.485884276E1 +2.099219000E3,5.694143956E1 +2.099469000E3,5.561655413E1 +2.099765000E3,5.844909410E1 +2.100011000E3,6.135621316E1 +2.100343000E3,5.968766012E1 +2.100584000E3,5.173347950E1 +2.100832000E3,5.415548255E1 +2.101090000E3,5.271968845E1 +2.101339000E3,5.007174890E1 +2.101624000E3,5.279525002E1 +2.101895000E3,5.358558767E1 +2.102197000E3,5.559048142E1 +2.102438000E3,5.476305303E1 +2.102705000E3,5.237114911E1 +2.102947000E3,5.014972007E1 +2.103218000E3,4.895902935E1 +2.103469000E3,5.192053997E1 +2.103853000E3,4.647138436E1 +2.104101000E3,4.837766327E1 +2.104448000E3,5.088929287E1 +2.104740000E3,5.561591777E1 +2.104997000E3,5.440319534E1 +2.105260000E3,5.347164399E1 +2.105561000E3,5.151610441E1 +2.105813000E3,5.075382634E1 +2.106121000E3,5.244425755E1 +2.106357000E3,5.269617654E1 +2.106663000E3,5.149027406E1 +2.106954000E3,5.659456733E1 +2.107266000E3,5.282561460E1 +2.107606000E3,5.407918273E1 +2.107883000E3,5.643922092E1 +2.108164000E3,5.169657105E1 +2.108480000E3,5.713744586E1 +2.108748000E3,5.931186178E1 +2.109003000E3,5.645689600E1 +2.109252000E3,5.322874786E1 +2.109552000E3,5.363731782E1 +2.109821000E3,5.353815648E1 +2.110077000E3,5.445551750E1 +2.110418000E3,5.491110228E1 +2.110669000E3,5.291647814E1 +2.110921000E3,5.202914132E1 +2.111180000E3,5.363241827E1 +2.111479000E3,5.566624291E1 +2.111721000E3,5.645238247E1 +2.112027000E3,5.458458697E1 +2.112294000E3,5.469783372E1 +2.112597000E3,5.582449562E1 +2.112854000E3,5.595416398E1 +2.113105000E3,5.113785865E1 +2.113352000E3,6.248282803E1 +2.113711000E3,5.880495226E1 +2.113968000E3,5.941805617E1 +2.114248000E3,5.561632009E1 +2.114507000E3,5.501810850E1 +2.114754000E3,5.936291007E1 +2.115053000E3,6.127733734E1 +2.115321000E3,6.057491273E1 +2.115616000E3,6.127323198E1 +2.115893000E3,5.760488174E1 +2.116193000E3,6.030881831E1 +2.116434000E3,5.967518116E1 +2.116722000E3,5.720938908E1 +2.117066000E3,5.605932878E1 +2.117338000E3,6.068190844E1 +2.117598000E3,5.400374866E1 +2.117892000E3,5.332007667E1 +2.118133000E3,4.991979059E1 +2.118428000E3,5.700198654E1 +2.118666000E3,5.878418983E1 +2.118922000E3,5.703766890E1 +2.119230000E3,5.731012811E1 +2.119515000E3,5.865622099E1 +2.119741000E3,5.772295719E1 +2.120015000E3,5.851982083E1 +2.120322000E3,5.958645129E1 +2.120616000E3,6.233814130E1 +2.120861000E3,6.002711287E1 +2.121162000E3,5.939190004E1 +2.121437000E3,5.758195225E1 +2.121690000E3,5.564648712E1 +2.121946000E3,5.336629511E1 +2.122218000E3,5.199121426E1 +2.122476000E3,5.906368298E1 +2.122759000E3,5.917930836E1 +2.123014000E3,5.824882047E1 +2.123266000E3,5.770359270E1 +2.123492000E3,5.695638802E1 +2.123777000E3,5.720151485E1 +2.124027000E3,6.045411810E1 +2.124327000E3,5.540258870E1 +2.124575000E3,5.828000252E1 +2.124835000E3,5.500577731E1 +2.125106000E3,5.926473821E1 +2.125354000E3,5.472888078E1 +2.125611000E3,5.530970077E1 +2.125862000E3,5.595037084E1 +2.126117000E3,5.439239133E1 +2.126432000E3,5.961943996E1 +2.126692000E3,5.841091801E1 +2.126944000E3,5.863137443E1 +2.127282000E3,5.731398304E1 +2.127577000E3,5.665374527E1 +2.127843000E3,5.476493539E1 +2.128129000E3,5.580929465E1 +2.128437000E3,5.565551021E1 +2.128739000E3,5.869101147E1 +2.129026000E3,5.827114612E1 +2.129307000E3,5.507536074E1 +2.129577000E3,5.532393691E1 +2.129934000E3,5.233850306E1 +2.130215000E3,5.514372423E1 +2.130466000E3,5.757947445E1 +2.130714000E3,6.126034226E1 +2.131015000E3,6.074916673E1 +2.131279000E3,5.864911171E1 +2.131564000E3,5.680524431E1 +2.131825000E3,6.002252741E1 +2.132078000E3,5.953076168E1 +2.132390000E3,6.027427680E1 +2.132647000E3,5.955779136E1 +2.132902000E3,5.835756058E1 +2.133223000E3,6.286787860E1 +2.133471000E3,6.057291506E1 +2.133724000E3,5.893793659E1 +2.134002000E3,5.508555746E1 +2.134257000E3,5.619881839E1 +2.134512000E3,5.505764062E1 +2.134784000E3,5.808922162E1 +2.135054000E3,5.334583096E1 +2.135313000E3,5.298019930E1 +2.135595000E3,5.025342296E1 +2.135812000E3,5.409382682E1 +2.136057000E3,5.580950424E1 +2.136332000E3,5.523743716E1 +2.136661000E3,5.499005541E1 +2.136917000E3,5.745623005E1 +2.137196000E3,5.149169849E1 +2.137449000E3,5.261206885E1 +2.137711000E3,5.487518376E1 +2.138022000E3,5.898871991E1 +2.138270000E3,5.852026830E1 +2.138564000E3,5.868858262E1 +2.138802000E3,5.736353209E1 +2.139066000E3,5.529465652E1 +2.139332000E3,5.762578865E1 +2.139672000E3,5.790185487E1 +2.139930000E3,5.792373283E1 +2.140278000E3,5.597904656E1 +2.140535000E3,5.355980456E1 +2.140856000E3,5.411887429E1 +2.141146000E3,5.094976839E1 +2.141467000E3,5.658279242E1 +2.141735000E3,6.043792292E1 +2.142041000E3,5.996632022E1 +2.142276000E3,6.230155616E1 +2.142526000E3,6.102528468E1 +2.142783000E3,5.770338577E1 +2.143124000E3,5.827243883E1 +2.143406000E3,5.367650147E1 +2.143645000E3,5.777094487E1 +2.143915000E3,5.851595499E1 +2.144175000E3,5.573729509E1 +2.144454000E3,5.467626304E1 +2.144700000E3,5.699765591E1 +2.144968000E3,5.692170932E1 +2.145246000E3,6.030210344E1 +2.145550000E3,5.876913066E1 +2.145797000E3,5.698149837E1 +2.146042000E3,5.982717784E1 +2.146368000E3,5.905293636E1 +2.146676000E3,5.947032966E1 +2.146922000E3,5.910471730E1 +2.147225000E3,6.065874797E1 +2.147524000E3,5.680135408E1 +2.147831000E3,5.451199701E1 +2.148090000E3,5.301325775E1 +2.148365000E3,5.466040661E1 +2.148665000E3,5.658013689E1 +2.148952000E3,5.410667827E1 +2.149249000E3,5.788683658E1 +2.149597000E3,5.873903650E1 +2.149910000E3,5.314379433E1 +2.150150000E3,5.564952940E1 +2.150451000E3,6.000220607E1 +2.150691000E3,6.235870620E1 +2.150965000E3,6.387461990E1 +2.151194000E3,6.491001134E1 +2.151449000E3,5.932544814E1 +2.151756000E3,6.117684525E1 +2.152011000E3,6.059885605E1 +2.152282000E3,6.303246617E1 +2.152596000E3,6.399854390E1 +2.152961000E3,6.063746268E1 +2.153223000E3,6.122116723E1 +2.153495000E3,5.809397592E1 +2.153749000E3,5.903784259E1 +2.153999000E3,6.047826717E1 +2.154283000E3,5.846467986E1 +2.154537000E3,6.226879102E1 +2.154785000E3,5.980611807E1 +2.155079000E3,5.787450321E1 +2.155375000E3,5.676059962E1 +2.155616000E3,5.395823696E1 +2.155912000E3,5.953639288E1 +2.156221000E3,5.971614724E1 +2.156510000E3,6.039969801E1 +2.156758000E3,5.898776738E1 +2.157015000E3,6.100474003E1 +2.157289000E3,5.750129682E1 +2.157591000E3,5.995540643E1 +2.157844000E3,5.628303244E1 +2.158104000E3,5.892686601E1 +2.158366000E3,5.712884748E1 +2.158667000E3,5.727860760E1 +2.158932000E3,5.313556696E1 +2.159288000E3,5.635583768E1 +2.159555000E3,5.929473664E1 +2.159809000E3,5.396180560E1 +2.160112000E3,5.807023999E1 +2.160354000E3,5.639240346E1 +2.160608000E3,5.917728814E1 +2.160855000E3,5.429000157E1 +2.161130000E3,5.397827395E1 +2.161395000E3,5.647751800E1 +2.161656000E3,5.342605760E1 +2.162007000E3,5.324373839E1 +2.162263000E3,5.439383591E1 +2.162517000E3,5.727066505E1 +2.162888000E3,5.995593964E1 +2.163140000E3,6.130649482E1 +2.163392000E3,6.228130821E1 +2.163644000E3,6.279179388E1 +2.163938000E3,5.559527300E1 +2.164178000E3,5.200550071E1 +2.164481000E3,5.797363767E1 +2.164757000E3,5.902554678E1 +2.165040000E3,5.834647622E1 +2.165303000E3,5.713285380E1 +2.165575000E3,6.343633700E1 +2.165850000E3,5.896208706E1 +2.166219000E3,5.624501583E1 +2.166483000E3,5.696603075E1 +2.166769000E3,5.736978604E1 +2.167027000E3,5.837475894E1 +2.167278000E3,5.768129207E1 +2.167593000E3,5.660761865E1 +2.167856000E3,5.680076310E1 +2.168110000E3,5.883044450E1 +2.168385000E3,5.772028600E1 +2.168649000E3,5.342008664E1 +2.168914000E3,5.359113324E1 +2.169168000E3,5.849769703E1 +2.169536000E3,6.267181821E1 +2.169793000E3,5.719603223E1 +2.170040000E3,5.397233107E1 +2.170287000E3,4.861027503E1 +2.170579000E3,5.741564583E1 +2.170822000E3,6.207812430E1 +2.171115000E3,5.827753689E1 +2.171365000E3,6.042202215E1 +2.171629000E3,5.516417228E1 +2.171895000E3,4.912315476E1 +2.172163000E3,4.718316305E1 +2.172446000E3,5.363129541E1 +2.172813000E3,5.322378335E1 +2.173087000E3,5.228499961E1 +2.173349000E3,5.364722432E1 +2.173618000E3,5.964999675E1 +2.173917000E3,6.116591719E1 +2.174174000E3,5.668310324E1 +2.174436000E3,5.538937699E1 +2.174688000E3,5.539330891E1 +2.174944000E3,5.678019084E1 +2.175197000E3,5.655985061E1 +2.175490000E3,6.211643319E1 +2.175751000E3,5.899842059E1 +2.176153000E3,6.042080027E1 +2.176454000E3,5.956376587E1 +2.176730000E3,5.896716838E1 +2.177048000E3,5.729778676E1 +2.177305000E3,5.512323216E1 +2.177616000E3,5.573124529E1 +2.177883000E3,5.390669828E1 +2.178139000E3,5.435017850E1 +2.178403000E3,5.275779180E1 +2.178672000E3,5.469054235E1 +2.178938000E3,5.701832565E1 +2.179201000E3,6.063134316E1 +2.179540000E3,6.461030243E1 +2.179799000E3,6.345934666E1 +2.180043000E3,6.255021373E1 +2.180348000E3,6.265836689E1 +2.180640000E3,6.125083403E1 +2.180878000E3,5.721943432E1 +2.181125000E3,5.584429631E1 +2.181407000E3,5.679219567E1 +2.181647000E3,5.506189996E1 +2.181962000E3,5.950753578E1 +2.182227000E3,5.684863204E1 +2.182499000E3,5.318048388E1 +2.182825000E3,5.856807028E1 +2.183124000E3,6.201159961E1 +2.183360000E3,5.994279105E1 +2.183661000E3,6.155626338E1 +2.183904000E3,5.760612799E1 +2.184197000E3,5.557219911E1 +2.184436000E3,5.720299401E1 +2.184730000E3,5.496492062E1 +2.184965000E3,5.287669523E1 +2.185272000E3,5.534018340E1 +2.185572000E3,5.047897567E1 +2.185897000E3,5.289532450E1 +2.186149000E3,5.169587435E1 +2.186428000E3,5.811856565E1 +2.186722000E3,5.829930976E1 +2.187016000E3,5.767171180E1 +2.187297000E3,5.167293983E1 +2.187542000E3,5.634712904E1 +2.187793000E3,5.452173951E1 +2.188038000E3,5.242356157E1 +2.188332000E3,5.476946331E1 +2.188570000E3,5.506415879E1 +2.188807000E3,5.842757277E1 +2.189123000E3,5.579731569E1 +2.189400000E3,5.735467547E1 +2.189707000E3,5.510643622E1 +2.189947000E3,5.399605596E1 +2.190247000E3,5.231812124E1 +2.190482000E3,5.397423501E1 +2.190722000E3,5.467291530E1 +2.190972000E3,5.750340972E1 +2.191219000E3,5.451621797E1 +2.191527000E3,5.544744059E1 +2.191775000E3,5.570906247E1 +2.192040000E3,5.570238792E1 +2.192395000E3,5.704729905E1 +2.192674000E3,5.662202644E1 +2.192969000E3,6.130245708E1 +2.193206000E3,5.842239411E1 +2.193505000E3,5.813812757E1 +2.193745000E3,5.643123308E1 +2.194038000E3,5.810403241E1 +2.194275000E3,5.863690353E1 +2.194574000E3,5.519980518E1 +2.194810000E3,5.381530940E1 +2.195092000E3,5.781601666E1 +2.195335000E3,5.699265058E1 +2.195608000E3,5.477338243E1 +2.195929000E3,5.695412826E1 +2.196188000E3,5.575935497E1 +2.196439000E3,5.738570553E1 +2.196686000E3,6.194168224E1 +2.196969000E3,5.888525061E1 +2.197270000E3,5.830791470E1 +2.197516000E3,5.904778886E1 +2.197822000E3,5.987539712E1 +2.198117000E3,5.910637217E1 +2.198355000E3,5.676446576E1 +2.198673000E3,5.632729175E1 +2.198920000E3,5.826507178E1 +2.199227000E3,6.221847088E1 +2.199493000E3,6.023584539E1 +2.199739000E3,6.378124478E1 +2.199975000E3,6.457706819E1 +2.200218000E3,5.781084826E1 +2.200471000E3,5.833307765E1 +2.200715000E3,5.849295856E1 +2.200984000E3,5.695016071E1 +2.201255000E3,5.945608920E1 +2.201511000E3,5.923858391E1 +2.201821000E3,5.975381188E1 +2.202050000E3,5.657071344E1 +2.202297000E3,5.582353283E1 +2.202552000E3,5.634201272E1 +2.202803000E3,5.842061156E1 +2.203080000E3,5.511323996E1 +2.203339000E3,5.333816234E1 +2.203589000E3,5.586132206E1 +2.203867000E3,5.612282959E1 +2.204151000E3,5.390907932E1 +2.204405000E3,5.581501331E1 +2.204648000E3,5.691201261E1 +2.204938000E3,5.605209961E1 +2.205271000E3,5.337227455E1 +2.205520000E3,5.726868677E1 +2.205824000E3,5.678400386E1 +2.206068000E3,5.598615724E1 +2.206327000E3,6.245548090E1 +2.206634000E3,5.788335624E1 +2.206927000E3,5.672312442E1 +2.207166000E3,5.700846075E1 +2.207464000E3,5.693157148E1 +2.207703000E3,5.667671942E1 +2.207995000E3,5.655907845E1 +2.208344000E3,5.694003799E1 +2.208592000E3,5.812693102E1 +2.208844000E3,5.305590014E1 +2.209133000E3,5.963333488E1 +2.209376000E3,6.125764761E1 +2.209621000E3,5.708540532E1 +2.209865000E3,5.539532482E1 +2.210177000E3,6.086117928E1 +2.210432000E3,5.871599576E1 +2.210705000E3,5.720891289E1 +2.210929000E3,5.859137268E1 +2.211185000E3,5.492761595E1 +2.211566000E3,5.458369125E1 +2.211811000E3,5.704243717E1 +2.212094000E3,5.948204172E1 +2.212325000E3,5.442994388E1 +2.212570000E3,5.607391365E1 +2.212815000E3,5.349643391E1 +2.213089000E3,5.518134225E1 +2.213397000E3,5.879499176E1 +2.213659000E3,5.918920409E1 +2.213917000E3,6.317166487E1 +2.214205000E3,5.773325998E1 +2.214505000E3,6.021667659E1 +2.214834000E3,5.707564648E1 +2.215074000E3,5.411436798E1 +2.215412000E3,5.705541238E1 +2.215699000E3,6.721672427E1 +2.215946000E3,6.130402498E1 +2.216241000E3,5.914242022E1 +2.216493000E3,5.881747375E1 +2.216786000E3,5.920115687E1 +2.217030000E3,5.981753209E1 +2.217325000E3,5.379848698E1 +2.217566000E3,5.498057230E1 +2.217931000E3,5.647867672E1 +2.218210000E3,5.460935805E1 +2.218440000E3,5.579228446E1 +2.218740000E3,5.598523495E1 +2.218992000E3,5.501198671E1 +2.219248000E3,5.270876730E1 +2.219495000E3,5.711255338E1 +2.219767000E3,5.276578476E1 +2.220009000E3,6.171644376E1 +2.220307000E3,5.760035427E1 +2.220557000E3,6.039071701E1 +2.220820000E3,5.947563028E1 +2.221166000E3,5.781157464E1 +2.221459000E3,5.689764898E1 +2.221740000E3,5.361204154E1 +2.221998000E3,5.565584232E1 +2.222252000E3,6.236264054E1 +2.222508000E3,5.583706888E1 +2.222794000E3,5.998886151E1 +2.223038000E3,6.067027795E1 +2.223281000E3,5.953550256E1 +2.223512000E3,6.087865846E1 +2.223764000E3,5.880177247E1 +2.224056000E3,5.532032645E1 +2.224389000E3,5.110554887E1 +2.224697000E3,6.082114583E1 +2.224957000E3,6.332269799E1 +2.225225000E3,5.859152014E1 +2.225521000E3,6.312344162E1 +2.225760000E3,6.208500503E1 +2.226003000E3,6.030377984E1 +2.226280000E3,5.890306026E1 +2.226553000E3,6.412257006E1 +2.226813000E3,5.959239884E1 +2.227137000E3,5.603893495E1 +2.227460000E3,5.807576772E1 +2.227717000E3,6.034272760E1 +2.227950000E3,5.678924442E1 +2.228211000E3,5.767938832E1 +2.228489000E3,4.973605337E1 +2.228742000E3,5.227056153E1 +2.229007000E3,4.524576382E1 +2.229320000E3,5.163901012E1 +2.229633000E3,5.791269320E1 +2.229909000E3,5.832692980E1 +2.230223000E3,5.512940778E1 +2.230487000E3,5.639998631E1 +2.230845000E3,6.012111222E1 +2.231113000E3,6.632176219E1 +2.231407000E3,6.692769565E1 +2.231662000E3,6.409372191E1 +2.231945000E3,6.268702605E1 +2.232208000E3,6.192012265E1 +2.232460000E3,5.923306273E1 +2.232717000E3,5.726340446E1 +2.233005000E3,5.708270925E1 +2.233256000E3,6.172203942E1 +2.233510000E3,6.197059155E1 +2.233807000E3,6.691458644E1 +2.234160000E3,6.165007134E1 +2.234422000E3,6.172053486E1 +2.234714000E3,6.148833899E1 +2.234974000E3,6.190331921E1 +2.235253000E3,5.938090919E1 +2.235479000E3,6.223060920E1 +2.235722000E3,6.133640397E1 +2.236028000E3,6.400294095E1 +2.236269000E3,6.581462957E1 +2.236516000E3,6.094953675E1 +2.236828000E3,5.792232456E1 +2.237124000E3,5.750665846E1 +2.237367000E3,5.360734442E1 +2.237668000E3,5.239836763E1 +2.237914000E3,5.189659577E1 +2.238168000E3,5.779541581E1 +2.238431000E3,5.409030702E1 +2.238689000E3,5.064192938E1 +2.238941000E3,4.890244292E1 +2.239235000E3,4.958738332E1 +2.239486000E3,5.093509792E1 +2.239725000E3,5.421091975E1 +2.239970000E3,6.074883769E1 +2.240298000E3,5.611992467E1 +2.240604000E3,4.988071111E1 +2.240900000E3,4.952063126E1 +2.241187000E3,5.282005772E1 +2.241428000E3,5.672648648E1 +2.241685000E3,5.807464117E1 +2.241973000E3,5.565097745E1 +2.242224000E3,5.410363002E1 +2.242475000E3,5.548804216E1 +2.242720000E3,5.862108370E1 +2.242959000E3,5.101243713E1 +2.243259000E3,5.340920814E1 +2.243564000E3,5.471013043E1 +2.243801000E3,5.474536753E1 +2.244062000E3,5.454012147E1 +2.244333000E3,5.594751460E1 +2.244637000E3,5.486159050E1 +2.244913000E3,5.317501502E1 +2.245138000E3,5.100209753E1 +2.245397000E3,5.436827206E1 +2.245643000E3,5.483479867E1 +2.245916000E3,5.150486026E1 +2.246182000E3,5.049924887E1 +2.246449000E3,5.226067252E1 +2.246744000E3,5.389432372E1 +2.247057000E3,6.032791953E1 +2.247330000E3,5.966662928E1 +2.247666000E3,5.824962285E1 +2.247962000E3,5.700720490E1 +2.248202000E3,6.373200887E1 +2.248495000E3,6.648419927E1 +2.248743000E3,5.542652488E1 +2.249036000E3,5.256926371E1 +2.249272000E3,6.053195001E1 +2.249564000E3,4.959074314E1 +2.249800000E3,5.054384460E1 +2.250136000E3,5.008489809E1 +2.250431000E3,5.752384263E1 +2.250666000E3,5.367007636E1 +2.250931000E3,4.851936559E1 +2.251210000E3,4.965482987E1 +2.251497000E3,5.733244198E1 +2.251772000E3,5.370188093E1 +2.251997000E3,5.388650114E1 +2.252246000E3,5.331606518E1 +2.252516000E3,5.534782747E1 +2.252818000E3,5.271944154E1 +2.253047000E3,5.188974945E1 +2.253402000E3,5.040855384E1 +2.253689000E3,5.348452962E1 +2.253965000E3,5.685197701E1 +2.254240000E3,5.699151925E1 +2.254539000E3,5.217481719E1 +2.254794000E3,5.255063115E1 +2.255035000E3,5.258436032E1 +2.255283000E3,5.228429265E1 +2.255592000E3,5.187189315E1 +2.255851000E3,5.089851896E1 +2.256105000E3,5.323192817E1 +2.256387000E3,5.259240607E1 +2.256752000E3,5.489099725E1 +2.257016000E3,5.140699592E1 +2.257276000E3,5.478139635E1 +2.257600000E3,5.508183343E1 +2.257864000E3,5.539199709E1 +2.258160000E3,5.879728075E1 +2.258399000E3,6.145510373E1 +2.258645000E3,6.018082278E1 +2.258890000E3,6.203490998E1 +2.259131000E3,6.051201097E1 +2.259385000E3,5.741582229E1 +2.259629000E3,5.742200481E1 +2.259994000E3,5.205318956E1 +2.260295000E3,5.807019657E1 +2.260539000E3,5.843419178E1 +2.260841000E3,5.543595349E1 +2.261104000E3,5.208978608E1 +2.261348000E3,5.288295424E1 +2.261601000E3,5.593156434E1 +2.261856000E3,5.600009221E1 +2.262108000E3,5.581775464E1 +2.262358000E3,5.037081152E1 +2.262613000E3,5.059162693E1 +2.262916000E3,5.459372597E1 +2.263271000E3,5.581642194E1 +2.263548000E3,5.702582989E1 +2.263802000E3,5.531282217E1 +2.264049000E3,5.356460573E1 +2.264318000E3,5.682743962E1 +2.264564000E3,5.353127135E1 +2.264854000E3,5.962134934E1 +2.265080000E3,5.858968032E1 +2.265326000E3,5.681259568E1 +2.265625000E3,5.635120121E1 +2.265871000E3,5.433379551E1 +2.266211000E3,4.913835205E1 +2.266510000E3,5.243179137E1 +2.266783000E3,4.886918417E1 +2.267043000E3,4.774131335E1 +2.267292000E3,4.892025491E1 +2.267553000E3,4.710213612E1 +2.267796000E3,4.847827931E1 +2.268042000E3,5.624471818E1 +2.268281000E3,5.286977188E1 +2.268548000E3,5.683989489E1 +2.268800000E3,5.459251055E1 +2.269086000E3,5.272841607E1 +2.269389000E3,5.585343514E1 +2.269616000E3,5.452972356E1 +2.269865000E3,5.183250423E1 +2.270167000E3,4.733442261E1 +2.270442000E3,4.736450762E1 +2.270667000E3,4.430645798E1 +2.270915000E3,4.635257501E1 +2.271160000E3,4.914582650E1 +2.271407000E3,4.938157659E1 +2.271656000E3,4.788630853E1 +2.271896000E3,4.778446083E1 +2.272198000E3,5.081637081E1 +2.272482000E3,4.630509256E1 +2.272722000E3,4.551027932E1 +2.273048000E3,5.074623045E1 +2.273321000E3,4.689236254E1 +2.273562000E3,4.960242652E1 +2.273859000E3,5.310274016E1 +2.274104000E3,5.391997859E1 +2.274392000E3,4.854992165E1 +2.274648000E3,4.610161890E1 +2.274915000E3,5.325141064E1 +2.275196000E3,4.823989698E1 +2.275460000E3,5.167706762E1 +2.275772000E3,4.424461998E1 +2.276008000E3,4.957193490E1 +2.276258000E3,4.220429916E1 +2.276545000E3,4.614900045E1 +2.276809000E3,4.247109284E1 +2.277119000E3,5.104311310E1 +2.277385000E3,4.898949856E1 +2.277651000E3,5.033981280E1 +2.277920000E3,4.504255509E1 +2.278210000E3,4.851295637E1 +2.278452000E3,4.975001222E1 +2.278771000E3,5.198599663E1 +2.279101000E3,5.078534391E1 +2.279348000E3,5.056977572E1 +2.279614000E3,4.645427419E1 +2.279894000E3,4.837428182E1 +2.280121000E3,4.672417188E1 +2.280416000E3,4.338010131E1 +2.280671000E3,4.552410696E1 +2.280941000E3,4.107346609E1 +2.281195000E3,4.850760260E1 +2.281477000E3,4.449785068E1 +2.281730000E3,3.834743898E1 +2.282028000E3,3.160451104E1 +2.282275000E3,2.921367430E1 +2.282509000E3,3.929432216E1 +2.282771000E3,3.560833020E1 +2.283021000E3,4.204425230E1 +2.283277000E3,4.897505461E1 +2.283570000E3,4.492050546E1 +2.283802000E3,4.549624302E1 +2.284053000E3,4.703134831E1 +2.284302000E3,4.492779574E1 +2.284580000E3,5.573526523E1 +2.284888000E3,4.583204799E1 +2.285186000E3,3.987632497E1 +2.285426000E3,4.276483306E1 +2.285670000E3,4.196646636E1 +2.285974000E3,4.127295807E1 +2.286241000E3,3.392540836E1 +2.286513000E3,3.045281657E1 +2.286755000E3,3.056149566E1 +2.287058000E3,4.234115907E1 +2.287358000E3,4.148011807E1 +2.287615000E3,4.752316696E1 +2.287890000E3,4.261643768E1 +2.288186000E3,3.531031146E1 +2.288451000E3,3.336926272E1 +2.288830000E3,3.217663691E1 +2.289083000E3,3.280943829E1 +2.289350000E3,4.037024361E1 +2.289606000E3,4.463743016E1 +2.289870000E3,3.926930450E1 +2.290142000E3,3.549021170E1 +2.290376000E3,3.657210104E1 +2.290669000E3,3.609483404E1 +2.290917000E3,3.935001060E1 +2.291190000E3,3.968762383E1 +2.291417000E3,3.622062011E1 +2.291698000E3,5.052972627E1 +2.292019000E3,4.472329620E1 +2.292314000E3,3.528869928E1 +2.292580000E3,3.171318762E1 +2.292867000E3,3.293682859E1 +2.293112000E3,2.980662334E1 +2.293408000E3,3.108877030E1 +2.293645000E3,3.411108767E1 +2.293948000E3,2.929195023E1 +2.294231000E3,2.830259325E1 +2.294484000E3,2.905088910E1 +2.294732000E3,3.046102835E1 +2.295049000E3,2.679058069E1 +2.295347000E3,2.620731663E1 +2.295594000E3,3.509528145E1 +2.295836000E3,2.657946529E1 +2.296130000E3,2.511368258E1 +2.296378000E3,2.555955915E1 +2.296634000E3,2.785949260E1 +2.296875000E3,2.654407944E1 +2.297117000E3,3.658368449E1 +2.297412000E3,3.412054652E1 +2.297648000E3,3.448252102E1 +2.297956000E3,3.528486686E1 +2.298205000E3,3.265291425E1 +2.298494000E3,2.963788314E1 +2.298798000E3,3.350933300E1 +2.299085000E3,3.038301619E1 +2.299338000E3,3.357142506E1 +2.299610000E3,4.744800671E1 +2.299868000E3,3.435626076E1 +2.300142000E3,3.368274389E1 +2.300402000E3,2.881246111E1 +2.300655000E3,3.097762310E1 +2.300898000E3,2.947567056E1 +2.301182000E3,3.214187359E1 +2.301423000E3,3.421070745E1 +2.301786000E3,5.117970534E1 +2.302087000E3,5.037784077E1 +2.302335000E3,5.283937176E1 +2.302644000E3,5.164119106E1 +2.302941000E3,5.300709748E1 +2.303240000E3,4.713488810E1 +2.303488000E3,4.524114677E1 +2.303739000E3,3.080285972E1 +2.304022000E3,2.293405577E1 +2.304254000E3,2.235464386E1 +2.304552000E3,2.949911358E1 +2.304876000E3,4.141349798E1 +2.305182000E3,4.156611078E1 +2.305491000E3,4.347125429E1 +2.305797000E3,4.579894404E1 +2.306107000E3,4.646123013E1 +2.306358000E3,4.517240887E1 +2.306604000E3,5.308475174E1 +2.306870000E3,4.681256924E1 +2.307168000E3,2.942058533E1 +2.307450000E3,2.986114457E1 +2.307717000E3,3.195150356E1 +2.308031000E3,3.775567348E1 +2.308265000E3,3.823556499E1 +2.308570000E3,2.909536341E1 +2.308842000E3,3.096070220E1 +2.309098000E3,4.060687649E1 +2.309391000E3,4.820113946E1 +2.309687000E3,4.619079404E1 +2.309928000E3,4.304793785E1 +2.310216000E3,4.976144450E1 +2.310446000E3,4.779148829E1 +2.310686000E3,5.167703897E1 +2.310979000E3,3.773719280E1 +2.311248000E3,2.923821784E1 +2.311466000E3,2.654081756E1 +2.311763000E3,2.616593312E1 +2.312001000E3,2.460963519E1 +2.312285000E3,2.554564289E1 +2.312588000E3,3.572755404E1 +2.312856000E3,4.274835909E1 +2.313074000E3,4.355953935E1 +2.313375000E3,5.377727845E1 +2.313611000E3,5.435235813E1 +2.313893000E3,5.477010993E1 +2.314137000E3,5.142421895E1 +2.314483000E3,4.794670725E1 +2.314780000E3,5.149445419E1 +2.315019000E3,5.127618051E1 +2.315306000E3,4.939341348E1 +2.315533000E3,4.928824788E1 +2.315832000E3,4.617335031E1 +2.316069000E3,3.696469062E1 +2.316377000E3,4.552948924E1 +2.316627000E3,4.672923062E1 +2.316913000E3,4.504192742E1 +2.317215000E3,4.364234368E1 +2.317558000E3,4.231291453E1 +2.317853000E3,4.886663905E1 +2.318118000E3,4.492895691E1 +2.318412000E3,4.464681620E1 +2.318711000E3,4.698360224E1 +2.318950000E3,4.454369095E1 +2.319250000E3,4.409609939E1 +2.319494000E3,4.283121809E1 +2.319793000E3,4.398770219E1 +2.320040000E3,4.728522548E1 +2.320336000E3,4.533798443E1 +2.320660000E3,4.548359371E1 +2.320908000E3,4.366718291E1 +2.321152000E3,5.139935964E1 +2.321408000E3,4.747980864E1 +2.321709000E3,3.867643032E1 +2.321952000E3,4.294445900E1 +2.322196000E3,4.336333736E1 +2.322445000E3,3.890531131E1 +2.322682000E3,4.087281677E1 +2.322980000E3,3.979668464E1 +2.323225000E3,4.157042707E1 +2.323553000E3,4.515881082E1 +2.323886000E3,3.868360739E1 +2.324184000E3,4.839319184E1 +2.324428000E3,4.298284223E1 +2.324669000E3,4.433761346E1 +2.324987000E3,4.011512195E1 +2.325233000E3,3.478551365E1 +2.325486000E3,4.180203002E1 +2.325789000E3,4.323726184E1 +2.326086000E3,3.985791110E1 +2.326333000E3,3.946244529E1 +2.326667000E3,4.066537977E1 +2.326925000E3,3.986903649E1 +2.327223000E3,4.142461274E1 +2.327521000E3,3.461788217E1 +2.327778000E3,3.326602717E1 +2.328102000E3,4.357074645E1 +2.328367000E3,5.496493564E1 +2.328618000E3,4.413482695E1 +2.328920000E3,4.170999616E1 +2.329183000E3,4.107694173E1 +2.329486000E3,5.342371220E1 +2.329729000E3,5.103134188E1 +2.330028000E3,4.716459977E1 +2.330382000E3,4.916498276E1 +2.330642000E3,4.801561309E1 +2.330930000E3,4.860033329E1 +2.331211000E3,5.037441690E1 +2.331463000E3,5.227972551E1 +2.331719000E3,4.516533742E1 +2.331971000E3,4.623606604E1 +2.332268000E3,3.207985320E1 +2.332513000E3,3.485208029E1 +2.332801000E3,4.367306984E1 +2.333109000E3,4.764897626E1 +2.333397000E3,4.844411921E1 +2.333779000E3,4.624834459E1 +2.334088000E3,4.492130047E1 +2.334331000E3,4.172849812E1 +2.334618000E3,4.243441154E1 +2.334859000E3,4.155300890E1 +2.335165000E3,3.508017133E1 +2.335414000E3,3.102497597E1 +2.335689000E3,3.346102792E1 +2.335938000E3,2.980210924E1 +2.336237000E3,2.815695425E1 +2.336480000E3,4.530841757E1 +2.336824000E3,4.476742737E1 +2.337075000E3,4.460293889E1 +2.337332000E3,5.054872999E1 +2.337583000E3,4.962100100E1 +2.337845000E3,5.224787063E1 +2.338132000E3,4.845338775E1 +2.338374000E3,4.675501048E1 +2.338651000E3,4.806540095E1 +2.338903000E3,4.707869991E1 +2.339145000E3,4.747595477E1 +2.339395000E3,3.449909829E1 +2.339700000E3,4.619360178E1 +2.340033000E3,4.785644508E1 +2.340329000E3,4.721347586E1 +2.340579000E3,4.302992844E1 +2.340828000E3,4.629706327E1 +2.341122000E3,4.550319757E1 +2.341368000E3,4.510038554E1 +2.341611000E3,4.752886315E1 +2.341876000E3,4.524122211E1 +2.342135000E3,2.990386366E1 +2.342396000E3,3.647672774E1 +2.342679000E3,2.854891758E1 +2.342936000E3,3.995722191E1 +2.343310000E3,4.501906630E1 +2.343555000E3,4.872212276E1 +2.343839000E3,4.566863325E1 +2.344134000E3,3.946814595E1 +2.344384000E3,4.796193013E1 +2.344656000E3,4.858552009E1 +2.344961000E3,4.902627763E1 +2.345257000E3,4.467711671E1 +2.345498000E3,3.756709071E1 +2.345764000E3,2.964206509E1 +2.346064000E3,4.283044167E1 +2.346415000E3,4.191014925E1 +2.346743000E3,4.910031818E1 +2.347021000E3,5.022624274E1 +2.347337000E3,5.257970130E1 +2.347586000E3,4.764257555E1 +2.347831000E3,4.353349182E1 +2.348126000E3,4.318604201E1 +2.348436000E3,4.825752031E1 +2.348710000E3,4.464987037E1 +2.348968000E3,4.690302679E1 +2.349225000E3,4.464063657E1 +2.349495000E3,5.114524492E1 +2.349740000E3,4.345049547E1 +2.350133000E3,4.655800825E1 +2.350382000E3,4.419356370E1 +2.350688000E3,4.308388818E1 +2.350960000E3,4.964188075E1 +2.351269000E3,5.137042419E1 +2.351542000E3,4.751708919E1 +2.351836000E3,3.239228651E1 +2.352067000E3,3.331178705E1 +2.352357000E3,4.628654550E1 +2.352625000E3,4.653844798E1 +2.352938000E3,4.419734850E1 +2.353231000E3,3.771763539E1 +2.353458000E3,3.489550836E1 +2.353713000E3,2.965581776E1 +2.353962000E3,3.457100474E1 +2.354201000E3,3.291595658E1 +2.354446000E3,2.791603976E1 +2.354711000E3,3.307930362E1 +2.355027000E3,5.311162000E1 +2.355290000E3,4.688373373E1 +2.355581000E3,3.663543876E1 +2.355868000E3,2.834403560E1 +2.356176000E3,5.001680718E1 +2.356518000E3,5.349221251E1 +2.356780000E3,5.234097025E1 +2.357043000E3,4.476475434E1 +2.357349000E3,5.160193390E1 +2.357584000E3,4.375385010E1 +2.357840000E3,3.709166207E1 +2.358125000E3,2.927191182E1 +2.358378000E3,4.114289062E1 +2.358676000E3,4.266518399E1 +2.358921000E3,4.641380631E1 +2.359210000E3,4.551221179E1 +2.359545000E3,4.099683883E1 +2.359801000E3,5.202602500E1 +2.360072000E3,5.207875379E1 +2.360343000E3,4.670310433E1 +2.360619000E3,4.619168123E1 +2.360865000E3,4.348453495E1 +2.361113000E3,4.603882932E1 +2.361353000E3,4.061885274E1 +2.361649000E3,4.873355826E1 +2.361884000E3,4.796347566E1 +2.362174000E3,4.419543811E1 +2.362420000E3,4.412529768E1 +2.362674000E3,4.315515456E1 +2.363006000E3,3.718353950E1 +2.363303000E3,4.131746877E1 +2.363556000E3,3.462830696E1 +2.363825000E3,3.224809166E1 +2.364105000E3,2.946532539E1 +2.364420000E3,4.082560353E1 +2.364671000E3,4.169760242E1 +2.364916000E3,4.728483165E1 +2.365158000E3,4.384961396E1 +2.365493000E3,3.327447630E1 +2.365797000E3,2.406470586E1 +2.366141000E3,2.410271882E1 +2.366422000E3,4.124818432E1 +2.366699000E3,4.300386829E1 +2.366994000E3,4.592409288E1 +2.367239000E3,4.402074721E1 +2.367492000E3,4.331525310E1 +2.367744000E3,4.351543939E1 +2.368045000E3,4.861325913E1 +2.368277000E3,4.345520025E1 +2.368543000E3,5.037549285E1 +2.368790000E3,3.455268589E1 +2.369034000E3,3.454484220E1 +2.369300000E3,3.436570372E1 +2.369544000E3,3.180799867E1 +2.369820000E3,4.460893996E1 +2.370091000E3,5.635981603E1 +2.370383000E3,4.932803438E1 +2.370635000E3,5.123791361E1 +2.370939000E3,4.749913119E1 +2.371193000E3,4.606624254E1 +2.371498000E3,4.453668838E1 +2.371779000E3,4.424564317E1 +2.372081000E3,5.022357768E1 +2.372347000E3,4.983363592E1 +2.372720000E3,4.311987242E1 +2.372969000E3,4.071927446E1 +2.373234000E3,3.624584431E1 +2.373535000E3,3.338407859E1 +2.373777000E3,2.744030282E1 +2.374025000E3,4.017686066E1 +2.374281000E3,4.153799732E1 +2.374537000E3,5.163713220E1 +2.374786000E3,4.970373114E1 +2.375033000E3,4.601563593E1 +2.375284000E3,4.943210146E1 +2.375577000E3,5.208741018E1 +2.375935000E3,4.780129348E1 +2.376167000E3,4.632707744E1 +2.376478000E3,5.008962536E1 +2.376734000E3,4.691729314E1 +2.376987000E3,4.593220796E1 +2.377250000E3,4.703621615E1 +2.377550000E3,4.863501898E1 +2.377838000E3,4.747349412E1 +2.378102000E3,4.430216971E1 +2.378373000E3,5.038477253E1 +2.378648000E3,4.679597376E1 +2.378873000E3,3.998762784E1 +2.379232000E3,4.140472709E1 +2.379480000E3,3.803559367E1 +2.379735000E3,4.292956565E1 +2.379993000E3,3.275484639E1 +2.380260000E3,3.159298587E1 +2.380513000E3,3.066195183E1 +2.380756000E3,4.846258942E1 +2.381012000E3,4.617374426E1 +2.381278000E3,4.338282331E1 +2.381580000E3,2.990070560E1 +2.381878000E3,3.384826320E1 +2.382127000E3,4.352773294E1 +2.382476000E3,3.711143795E1 +2.382756000E3,4.818117865E1 +2.383001000E3,4.694356023E1 +2.383312000E3,4.713242320E1 +2.383556000E3,4.945634369E1 +2.383815000E3,3.710449888E1 +2.384109000E3,4.990714727E1 +2.384350000E3,5.101970483E1 +2.384663000E3,4.290224010E1 +2.384917000E3,3.958873166E1 +2.385203000E3,4.207919898E1 +2.385583000E3,3.937588823E1 +2.385864000E3,3.927490117E1 +2.386122000E3,3.708577985E1 +2.386378000E3,3.104425869E1 +2.386630000E3,2.579918418E1 +2.386935000E3,4.201717352E1 +2.387186000E3,4.469788103E1 +2.387445000E3,3.928301867E1 +2.387699000E3,4.425054811E1 +2.387999000E3,2.901032620E1 +2.388242000E3,2.431535493E1 +2.388542000E3,4.330806788E1 +2.388866000E3,4.587852948E1 +2.389138000E3,5.068663336E1 +2.389420000E3,5.151872270E1 +2.389764000E3,4.501157372E1 +2.390012000E3,4.508008781E1 +2.390288000E3,4.471818734E1 +2.390546000E3,4.453717168E1 +2.390828000E3,3.435610332E1 +2.391113000E3,3.644941891E1 +2.391398000E3,3.741409627E1 +2.391658000E3,4.311052254E1 +2.391963000E3,3.924877335E1 +2.392296000E3,3.956869731E1 +2.392537000E3,3.230149795E1 +2.392786000E3,2.941450360E1 +2.393103000E3,3.366208400E1 +2.393349000E3,2.633153711E1 +2.393653000E3,2.492589605E1 +2.393892000E3,3.518582310E1 +2.394201000E3,3.668564238E1 +2.394454000E3,3.528359554E1 +2.394744000E3,3.673717548E1 +2.395034000E3,2.851979476E1 +2.395378000E3,2.558396774E1 +2.395660000E3,3.919896752E1 +2.395930000E3,3.339597104E1 +2.396187000E3,3.351358057E1 +2.396431000E3,3.743420456E1 +2.396691000E3,4.220523227E1 +2.396991000E3,3.500233403E1 +2.397251000E3,3.475187142E1 +2.397513000E3,3.604068947E1 +2.397821000E3,4.628512725E1 +2.398126000E3,4.463943287E1 +2.398428000E3,4.311458163E1 +2.398781000E3,4.375329409E1 +2.399076000E3,3.749705009E1 +2.399316000E3,4.116349149E1 +2.399615000E3,4.694603167E1 +2.399852000E3,5.327851923E1 +2.400143000E3,5.028800274E1 +2.400380000E3,5.055607260E1 +2.400618000E3,4.184216649E1 +2.400901000E3,4.280576865E1 +2.401144000E3,4.285187037E1 +2.401437000E3,5.414729311E1 +2.401684000E3,5.760726428E1 +2.402102000E3,5.135939721E1 +2.402349000E3,5.519633184E1 +2.402608000E3,5.937895156E1 +2.402853000E3,5.722678447E1 +2.403146000E3,5.316891996E1 +2.403388000E3,5.231876976E1 +2.403684000E3,4.275047946E1 +2.403921000E3,4.497010821E1 +2.404216000E3,5.935375427E1 +2.404454000E3,5.736369919E1 +2.404707000E3,5.877823139E1 +2.404971000E3,6.138635894E1 +2.405219000E3,5.726046839E1 +2.405473000E3,5.213953550E1 +2.405771000E3,4.831408459E1 +2.406024000E3,5.195614478E1 +2.406276000E3,4.885485021E1 +2.406567000E3,4.806131720E1 +2.406866000E3,3.817379603E1 +2.407129000E3,3.496803230E1 +2.407401000E3,4.679161915E1 +2.407625000E3,4.456362030E1 +2.407878000E3,4.499112684E1 +2.408171000E3,4.695848411E1 +2.408491000E3,4.136053284E1 +2.408771000E3,3.435960184E1 +2.409033000E3,2.907775515E1 +2.409287000E3,3.179102298E1 +2.409536000E3,2.535492331E1 +2.409797000E3,2.893863695E1 +2.410015000E3,3.195695462E1 +2.410232000E3,2.883661354E1 +2.410481000E3,4.380812340E1 +2.410735000E3,5.435187737E1 +2.411017000E3,4.390478627E1 +2.411330000E3,4.136550501E1 +2.411572000E3,6.231552653E1 +2.411823000E3,4.988484474E1 +2.412072000E3,4.569499772E1 +2.412339000E3,5.207639469E1 +2.412605000E3,5.314724412E1 +2.412842000E3,5.014855129E1 +2.413111000E3,4.925815950E1 +2.413332000E3,5.545199009E1 +2.413608000E3,4.910878211E1 +2.413873000E3,5.481296501E1 +2.414229000E3,4.620355557E1 +2.414532000E3,4.757632406E1 +2.414792000E3,4.414835702E1 +2.415033000E3,4.178334533E1 +2.415296000E3,3.571558610E1 +2.415577000E3,3.622280285E1 +2.415839000E3,4.187963398E1 +2.416103000E3,4.120303067E1 +2.416426000E3,5.043875316E1 +2.416696000E3,4.738536839E1 +2.417006000E3,4.790698669E1 +2.417250000E3,4.717323409E1 +2.417613000E3,4.889624394E1 +2.417923000E3,4.615999302E1 +2.418209000E3,4.554232436E1 +2.418487000E3,4.963147342E1 +2.418748000E3,4.540077281E1 +2.419058000E3,4.402622058E1 +2.419355000E3,3.991430025E1 +2.419631000E3,5.699106589E1 +2.419880000E3,4.542610605E1 +2.420140000E3,5.871400849E1 +2.420387000E3,5.593691155E1 +2.420634000E3,5.642590944E1 +2.420987000E3,4.942882304E1 +2.421235000E3,5.122637091E1 +2.421504000E3,5.506353313E1 +2.421808000E3,4.974630362E1 +2.422098000E3,4.922446567E1 +2.422401000E3,4.711891494E1 +2.422653000E3,4.935851062E1 +2.422946000E3,5.223840607E1 +2.423180000E3,5.181747333E1 +2.423433000E3,5.106095739E1 +2.423699000E3,4.283067128E1 +2.424023000E3,4.620110870E1 +2.424283000E3,4.813646184E1 +2.424556000E3,4.673905704E1 +2.424833000E3,5.139038068E1 +2.425085000E3,4.187355918E1 +2.425330000E3,4.200690239E1 +2.425641000E3,4.094986905E1 +2.425891000E3,3.869951887E1 +2.426156000E3,4.295178440E1 +2.426411000E3,4.445235603E1 +2.426673000E3,4.180705342E1 +2.426915000E3,4.159918394E1 +2.427275000E3,5.193727105E1 +2.427528000E3,4.985744468E1 +2.427773000E3,5.143594155E1 +2.428021000E3,5.687627643E1 +2.428258000E3,4.984177159E1 +2.428554000E3,4.104898524E1 +2.428794000E3,3.740238657E1 +2.429102000E3,4.424577609E1 +2.429345000E3,5.022623751E1 +2.429627000E3,5.346928374E1 +2.429864000E3,4.448852620E1 +2.430156000E3,3.611387858E1 +2.430475000E3,3.592739777E1 +2.430726000E3,3.269867125E1 +2.431039000E3,4.089980433E1 +2.431331000E3,3.752068977E1 +2.431567000E3,3.972155082E1 +2.431870000E3,4.098289208E1 +2.432107000E3,4.068605974E1 +2.432406000E3,3.978950334E1 +2.432643000E3,3.435438837E1 +2.432933000E3,3.806187937E1 +2.433169000E3,3.613809925E1 +2.433407000E3,5.573542624E1 +2.433734000E3,4.812688919E1 +2.434035000E3,5.332611421E1 +2.434315000E3,5.453475878E1 +2.434557000E3,5.156731049E1 +2.434849000E3,4.452924889E1 +2.435086000E3,4.091217005E1 +2.435380000E3,3.495963916E1 +2.435633000E3,3.994418328E1 +2.435904000E3,5.345258512E1 +2.436200000E3,4.573029424E1 +2.436434000E3,4.666848361E1 +2.436802000E3,4.148612785E1 +2.437044000E3,3.785277445E1 +2.437301000E3,3.823545546E1 +2.437549000E3,3.883632471E1 +2.437839000E3,4.756553033E1 +2.438077000E3,4.282797221E1 +2.438369000E3,5.291874167E1 +2.438606000E3,5.394671897E1 +2.438862000E3,5.490926284E1 +2.439159000E3,5.465277565E1 +2.439395000E3,5.245345229E1 +2.439637000E3,4.823915254E1 +2.440022000E3,5.658050668E1 +2.440281000E3,5.255468157E1 +2.440546000E3,4.365897331E1 +2.440828000E3,4.187636724E1 +2.441125000E3,4.916172461E1 +2.441365000E3,5.038635874E1 +2.441645000E3,5.238005511E1 +2.441868000E3,4.979548238E1 +2.442114000E3,5.164563876E1 +2.442410000E3,4.795862612E1 +2.442694000E3,4.406311297E1 +2.442980000E3,4.461066687E1 +2.443265000E3,3.990213588E1 +2.443525000E3,4.270339676E1 +2.443815000E3,4.671533321E1 +2.444064000E3,4.922681237E1 +2.444311000E3,5.115751882E1 +2.444605000E3,4.659279655E1 +2.444851000E3,4.805254743E1 +2.445152000E3,4.646584218E1 +2.445447000E3,3.924248597E1 +2.445698000E3,3.657018775E1 +2.445976000E3,3.978585816E1 +2.446317000E3,5.134473527E1 +2.446569000E3,4.872028256E1 +2.446851000E3,4.793203365E1 +2.447088000E3,4.917648823E1 +2.447345000E3,4.514648035E1 +2.447599000E3,4.827609085E1 +2.447864000E3,5.009329877E1 +2.448138000E3,4.858127151E1 +2.448430000E3,4.885678900E1 +2.448726000E3,4.038666943E1 +2.448956000E3,3.788824065E1 +2.449214000E3,4.872306097E1 +2.449516000E3,5.112419798E1 +2.449767000E3,4.394357347E1 +2.450028000E3,5.187358067E1 +2.450298000E3,4.764520743E1 +2.450575000E3,5.323515688E1 +2.450844000E3,4.730661272E1 +2.451150000E3,5.022143967E1 +2.451400000E3,4.244080150E1 +2.451697000E3,4.540622562E1 +2.452002000E3,4.987171470E1 +2.452273000E3,4.928771096E1 +2.452519000E3,4.415614577E1 +2.452847000E3,4.529816891E1 +2.453138000E3,3.130480949E1 +2.453407000E3,3.727195618E1 +2.453707000E3,4.218798188E1 +2.453975000E3,3.196426842E1 +2.454240000E3,2.986758668E1 +2.454534000E3,4.365366219E1 +2.454795000E3,4.363233606E1 +2.455054000E3,4.576258560E1 +2.455297000E3,4.600510844E1 +2.455546000E3,5.143992334E1 +2.455816000E3,4.451792491E1 +2.456172000E3,3.834658463E1 +2.456438000E3,4.961865906E1 +2.456716000E3,4.301133302E1 +2.457025000E3,5.185950840E1 +2.457284000E3,4.578127088E1 +2.457582000E3,4.860789001E1 +2.457857000E3,4.548301241E1 +2.458087000E3,5.726595471E1 +2.458343000E3,4.581143143E1 +2.458590000E3,4.593076535E1 +2.458898000E3,4.646845677E1 +2.459143000E3,4.385664195E1 +2.459499000E3,3.921291428E1 +2.459756000E3,4.336490005E1 +2.460079000E3,5.059416731E1 +2.460323000E3,5.383728406E1 +2.460609000E3,4.336002656E1 +2.460894000E3,3.810358455E1 +2.461148000E3,4.341384577E1 +2.461406000E3,4.240002850E1 +2.461668000E3,4.220171306E1 +2.461957000E3,4.165441002E1 +2.462218000E3,4.110791112E1 +2.462543000E3,3.718059239E1 +2.462873000E3,4.490190793E1 +2.463162000E3,4.449127269E1 +2.463461000E3,5.110192526E1 +2.463709000E3,4.670759724E1 +2.464024000E3,4.554197086E1 +2.464345000E3,4.295638115E1 +2.464598000E3,4.260186095E1 +2.464844000E3,3.838281454E1 +2.465094000E3,4.864552318E1 +2.465348000E3,4.722694913E1 +2.465597000E3,5.723123112E1 +2.465970000E3,5.678247819E1 +2.466226000E3,5.304857482E1 +2.466490000E3,5.799491543E1 +2.466745000E3,5.566332539E1 +2.467000000E3,5.532803606E1 +2.467301000E3,5.480406224E1 +2.467518000E3,5.281426808E1 +2.467773000E3,5.319750336E1 +2.468030000E3,4.504180471E1 +2.468309000E3,4.011552860E1 +2.468536000E3,3.286668959E1 +2.468782000E3,5.187437917E1 +2.469159000E3,5.342027818E1 +2.469405000E3,4.655027014E1 +2.469685000E3,4.875434900E1 +2.469968000E3,4.400777727E1 +2.470228000E3,4.944370484E1 +2.470524000E3,4.819898526E1 +2.470826000E3,4.906267157E1 +2.471101000E3,4.559683511E1 +2.471407000E3,5.066052597E1 +2.471662000E3,5.052511938E1 +2.471933000E3,4.854316053E1 +2.472243000E3,4.720397127E1 +2.472513000E3,4.539713693E1 +2.472765000E3,4.504800702E1 +2.473077000E3,4.756996091E1 +2.473381000E3,4.502772911E1 +2.473668000E3,4.844141365E1 +2.473909000E3,4.718772198E1 +2.474176000E3,5.036014826E1 +2.474415000E3,4.734822430E1 +2.474659000E3,4.506554867E1 +2.474941000E3,4.590585801E1 +2.475227000E3,4.808550728E1 +2.475549000E3,4.744751902E1 +2.475816000E3,5.139502060E1 +2.476110000E3,4.565542501E1 +2.476367000E3,4.502651441E1 +2.476614000E3,4.529198411E1 +2.476876000E3,4.841642572E1 +2.477138000E3,4.904966766E1 +2.477430000E3,5.061185879E1 +2.477703000E3,4.805167318E1 +2.477973000E3,4.840268940E1 +2.478233000E3,4.609690512E1 +2.478491000E3,5.080806253E1 +2.478854000E3,4.929079330E1 +2.479112000E3,4.887431247E1 +2.479382000E3,4.582116343E1 +2.479677000E3,4.614295426E1 +2.479939000E3,5.004731017E1 +2.480247000E3,5.118895049E1 +2.480496000E3,4.750144805E1 +2.480785000E3,4.691637905E1 +2.481084000E3,4.575243018E1 +2.481328000E3,4.498034363E1 +2.481622000E3,5.049144453E1 +2.481951000E3,4.811617152E1 +2.482214000E3,4.600387593E1 +2.482494000E3,5.163944801E1 +2.482753000E3,4.933311419E1 +2.482991000E3,4.946534766E1 +2.483244000E3,4.580757204E1 +2.483487000E3,4.797573247E1 +2.483734000E3,4.560844100E1 +2.483990000E3,5.039329574E1 +2.484313000E3,5.052905321E1 +2.484577000E3,5.131938081E1 +2.484833000E3,4.901245069E1 +2.485113000E3,5.233648083E1 +2.485461000E3,5.215489758E1 +2.485749000E3,5.451606287E1 +2.486018000E3,5.043201098E1 +2.486334000E3,5.091085093E1 +2.486650000E3,4.972266732E1 +2.486916000E3,4.846864702E1 +2.487167000E3,4.843730663E1 +2.487412000E3,5.285205631E1 +2.487677000E3,5.695937588E1 +2.487965000E3,5.067248408E1 +2.488216000E3,4.955689254E1 +2.488580000E3,4.789771891E1 +2.488828000E3,4.640186686E1 +2.489150000E3,4.956289338E1 +2.489428000E3,4.916705799E1 +2.489718000E3,4.250319869E1 +2.489959000E3,4.211788948E1 +2.490259000E3,4.711467977E1 +2.490508000E3,5.336087879E1 +2.490805000E3,5.163346506E1 +2.491066000E3,5.303328317E1 +2.491377000E3,5.018594076E1 +2.491684000E3,4.569780009E1 +2.492029000E3,4.677168871E1 +2.492273000E3,4.586755987E1 +2.492522000E3,5.020047651E1 +2.492768000E3,4.585538278E1 +2.493006000E3,5.027464230E1 +2.493315000E3,4.719632652E1 +2.493608000E3,4.892998103E1 +2.493874000E3,4.659859577E1 +2.494131000E3,4.485377967E1 +2.494387000E3,4.661063763E1 +2.494635000E3,4.873112034E1 +2.494904000E3,5.011233058E1 +2.495259000E3,4.996207620E1 +2.495523000E3,5.026371938E1 +2.495789000E3,4.897334151E1 +2.496086000E3,4.919412247E1 +2.496330000E3,4.448238049E1 +2.496598000E3,5.779881243E1 +2.496845000E3,5.068443192E1 +2.497079000E3,5.452206946E1 +2.497328000E3,6.091811093E1 +2.497574000E3,5.545025588E1 +2.497819000E3,5.118451852E1 +2.498124000E3,5.647063434E1 +2.498436000E3,5.942897676E1 +2.498681000E3,6.063927987E1 +2.498932000E3,5.256584857E1 +2.499203000E3,5.942844343E1 +2.499465000E3,5.268198933E1 +2.499726000E3,5.561310022E1 +2.499989000E3,5.551348586E1 +2.500270000E3,5.728700965E1 +2.500550000E3,5.848024533E1 +2.500856000E3,5.545551244E1 +2.501156000E3,7.074712648E1 +2.501405000E3,6.649397556E1 +2.501727000E3,6.577106108E1 +2.501964000E3,5.791155905E1 +2.502223000E3,6.571272960E1 +2.502476000E3,5.223691777E1 +2.502731000E3,5.099379006E1 +2.502989000E3,4.996024440E1 +2.503265000E3,4.587573023E1 +2.503515000E3,6.660646739E1 +2.503792000E3,5.426812996E1 +2.504090000E3,4.221263073E1 +2.504348000E3,3.961359220E1 +2.504607000E3,3.317448387E1 +2.504957000E3,2.765634596E1 +2.505202000E3,5.260508289E1 +2.505444000E3,4.970766119E1 +2.505723000E3,5.961421356E1 +2.506010000E3,5.761735716E1 +2.506316000E3,4.386011183E1 +2.506629000E3,3.297646158E1 +2.506928000E3,3.461351567E1 +2.507171000E3,3.422494413E1 +2.507415000E3,3.898815557E1 +2.507661000E3,3.916714623E1 +2.507958000E3,4.409544564E1 +2.508199000E3,4.040812578E1 +2.508495000E3,4.100804729E1 +2.508767000E3,4.155083379E1 +2.509073000E3,4.256659126E1 +2.509346000E3,4.665111645E1 +2.509615000E3,4.785704834E1 +2.509926000E3,4.957995318E1 +2.510246000E3,5.281308228E1 +2.510533000E3,5.716195403E1 +2.510847000E3,5.384222007E1 +2.511087000E3,4.682850643E1 +2.511483000E3,5.585229854E1 +2.511769000E3,5.797880255E1 +2.512061000E3,5.008051045E1 +2.512305000E3,4.616221083E1 +2.512545000E3,5.837834308E1 +2.512782000E3,4.588894556E1 +2.513082000E3,5.827978204E1 +2.513321000E3,5.321307958E1 +2.513625000E3,5.419914666E1 +2.513860000E3,4.249936315E1 +2.514160000E3,5.093700871E1 +2.514505000E3,4.733309734E1 +2.514807000E3,5.739188753E1 +2.515049000E3,5.684870925E1 +2.515326000E3,5.429714525E1 +2.515551000E3,5.304528611E1 +2.515847000E3,6.048302750E1 +2.516097000E3,5.298092655E1 +2.516397000E3,5.664346713E1 +2.516634000E3,5.062362510E1 +2.516910000E3,5.059011404E1 +2.517165000E3,5.074931344E1 +2.517424000E3,5.193937267E1 +2.517672000E3,4.773080825E1 +2.517933000E3,4.886471101E1 +2.518191000E3,4.258084657E1 +2.518440000E3,4.144243799E1 +2.518697000E3,3.266068365E1 +2.518962000E3,3.662092465E1 +2.519211000E3,4.002326553E1 +2.519469000E3,5.193824268E1 +2.519821000E3,5.548381163E1 +2.520087000E3,5.245445808E1 +2.520336000E3,4.447536752E1 +2.520718000E3,5.931091731E1 +2.521010000E3,5.514928156E1 +2.521305000E3,5.194242569E1 +2.521541000E3,5.632439964E1 +2.521781000E3,4.768714929E1 +2.522074000E3,3.967116686E1 +2.522306000E3,3.457523914E1 +2.522554000E3,3.414939493E1 +2.522808000E3,3.034285017E1 +2.523103000E3,3.725639399E1 +2.523347000E3,5.824523011E1 +2.523645000E3,5.697741808E1 +2.524002000E3,5.995361389E1 +2.524244000E3,5.516819042E1 +2.524491000E3,5.520201782E1 +2.524765000E3,4.576677797E1 +2.524988000E3,5.785527848E1 +2.525299000E3,5.093237528E1 +2.525544000E3,4.090627494E1 +2.525822000E3,3.111750175E1 +2.526056000E3,2.764971736E1 +2.526311000E3,2.852524033E1 +2.526617000E3,3.508264660E1 +2.526905000E3,5.067917717E1 +2.527241000E3,4.646824007E1 +2.527487000E3,3.686495987E1 +2.527738000E3,3.822220480E1 +2.527988000E3,3.764348220E1 +2.528232000E3,4.278450517E1 +2.528563000E3,4.881983602E1 +2.528870000E3,4.048435148E1 +2.529125000E3,4.047282835E1 +2.529398000E3,4.602715630E1 +2.529632000E3,4.358719476E1 +2.529925000E3,4.185499728E1 +2.530224000E3,4.428160693E1 +2.530451000E3,5.370094630E1 +2.530771000E3,4.662369716E1 +2.531057000E3,4.486368653E1 +2.531322000E3,3.985753269E1 +2.531579000E3,3.868983993E1 +2.531842000E3,4.397673982E1 +2.532129000E3,4.465178920E1 +2.532379000E3,4.071629694E1 +2.532681000E3,3.700154265E1 +2.532925000E3,3.709745900E1 +2.533169000E3,3.856350220E1 +2.533454000E3,3.780017804E1 +2.533739000E3,4.079153270E1 +2.534053000E3,3.467337947E1 +2.534304000E3,3.872357849E1 +2.534571000E3,4.188092371E1 +2.534878000E3,4.226520735E1 +2.535180000E3,4.433351029E1 +2.535433000E3,4.196124368E1 +2.535679000E3,4.159710638E1 +2.535934000E3,4.131920574E1 +2.536230000E3,4.013333591E1 +2.536496000E3,3.861252617E1 +2.536812000E3,3.205810696E1 +2.537071000E3,3.900017908E1 +2.537321000E3,3.720890888E1 +2.537589000E3,3.571752088E1 +2.537899000E3,3.466875388E1 +2.538158000E3,3.490809444E1 +2.538414000E3,2.846246396E1 +2.538721000E3,3.471466025E1 +2.539000000E3,3.262267006E1 +2.539250000E3,2.900340615E1 +2.539526000E3,2.962734770E1 +2.539843000E3,4.051335289E1 +2.540219000E3,3.732414883E1 +2.540478000E3,3.212776280E1 +2.540731000E3,3.980002135E1 +2.541002000E3,4.402529692E1 +2.541305000E3,3.531142487E1 +2.541570000E3,4.157255463E1 +2.541892000E3,4.121686373E1 +2.542138000E3,3.512055425E1 +2.542435000E3,3.058422839E1 +2.542704000E3,3.860796470E1 +2.542951000E3,4.158955283E1 +2.543254000E3,4.126835549E1 +2.543598000E3,4.557459954E1 +2.543842000E3,4.195620726E1 +2.544088000E3,4.759905541E1 +2.544347000E3,4.089593512E1 +2.544592000E3,4.224934090E1 +2.544840000E3,3.548720999E1 +2.545141000E3,4.189266277E1 +2.545422000E3,4.058854606E1 +2.545652000E3,3.761551365E1 +2.545897000E3,3.643024250E1 +2.546173000E3,3.544845567E1 +2.546439000E3,3.816851754E1 +2.546779000E3,3.801212128E1 +2.547110000E3,3.288266257E1 +2.547379000E3,4.063952307E1 +2.547641000E3,4.765684387E1 +2.547893000E3,4.402640436E1 +2.548143000E3,4.172886183E1 +2.548441000E3,3.808222191E1 +2.548685000E3,3.637035664E1 +2.548962000E3,3.879815953E1 +2.549230000E3,5.433785228E1 +2.549540000E3,5.428002325E1 +2.549852000E3,5.430864003E1 +2.550121000E3,5.376325395E1 +2.550389000E3,5.250586376E1 +2.550641000E3,5.329413218E1 +2.550946000E3,3.817927317E1 +2.551218000E3,3.779289824E1 +2.551493000E3,4.904361964E1 +2.551759000E3,5.500168111E1 +2.552006000E3,4.745774118E1 +2.552261000E3,5.304049624E1 +2.552515000E3,4.933664563E1 +2.552779000E3,3.482983031E1 +2.553043000E3,3.914561037E1 +2.553378000E3,3.318943686E1 +2.553659000E3,2.674748735E1 +2.553917000E3,2.500565902E1 +2.554234000E3,3.331261434E1 +2.554489000E3,3.380079275E1 +2.554753000E3,3.632095841E1 +2.554996000E3,3.606888467E1 +2.555239000E3,4.759559903E1 +2.555541000E3,5.588542149E1 +2.555837000E3,5.768171500E1 +2.556076000E3,5.837962370E1 +2.556358000E3,5.761486260E1 +2.556647000E3,5.408185929E1 +2.556914000E3,5.624815374E1 +2.557248000E3,4.727853091E1 +2.557554000E3,3.999550071E1 +2.557822000E3,4.090986684E1 +2.558062000E3,3.411171601E1 +2.558302000E3,3.042998918E1 +2.558550000E3,3.392526215E1 +2.558807000E3,3.801243567E1 +2.559082000E3,4.390440101E1 +2.559357000E3,4.215163378E1 +2.559616000E3,4.616573562E1 +2.559972000E3,4.170066459E1 +2.560245000E3,2.972551911E1 +2.560517000E3,3.987643023E1 +2.560765000E3,4.046237199E1 +2.561011000E3,4.268708813E1 +2.561258000E3,4.450541644E1 +2.561531000E3,4.611922799E1 +2.561775000E3,4.492719317E1 +2.562027000E3,4.345851098E1 +2.562302000E3,5.022295857E1 +2.562533000E3,4.986016935E1 +2.562786000E3,3.932672790E1 +2.563211000E3,3.777119812E1 +2.563479000E3,4.577537823E1 +2.563731000E3,5.443473776E1 +2.563977000E3,5.947837126E1 +2.564252000E3,5.014881480E1 +2.564539000E3,4.884415531E1 +2.564781000E3,4.451698294E1 +2.565088000E3,3.693106642E1 +2.565361000E3,3.096881298E1 +2.565624000E3,2.635486448E1 +2.565885000E3,2.734213385E1 +2.566246000E3,3.979362654E1 +2.566493000E3,3.382738554E1 +2.566797000E3,3.469438245E1 +2.567097000E3,4.097528595E1 +2.567346000E3,4.285297734E1 +2.567644000E3,4.930003444E1 +2.567891000E3,4.540271843E1 +2.568170000E3,3.109775861E1 +2.568407000E3,2.738661195E1 +2.568701000E3,3.024785153E1 +2.568952000E3,3.235217301E1 +2.569220000E3,3.196941264E1 +2.569567000E3,4.299833718E1 +2.569862000E3,4.496000509E1 +2.570178000E3,4.562225815E1 +2.570442000E3,4.437451260E1 +2.570707000E3,3.949227756E1 +2.570950000E3,2.951847370E1 +2.571202000E3,3.800151296E1 +2.571472000E3,4.650517590E1 +2.571732000E3,3.967561664E1 +2.571975000E3,3.149456620E1 +2.572246000E3,5.234083710E1 +2.572527000E3,4.544839619E1 +2.572859000E3,4.436174777E1 +2.573168000E3,4.369290756E1 +2.573429000E3,4.420543128E1 +2.573728000E3,4.389854646E1 +2.573968000E3,4.580346210E1 +2.574268000E3,4.881141748E1 +2.574509000E3,4.708023256E1 +2.574802000E3,3.388696242E1 +2.575045000E3,2.922489212E1 +2.575339000E3,3.941924125E1 +2.575597000E3,4.733040375E1 +2.575906000E3,4.790376430E1 +2.576245000E3,4.328559785E1 +2.576517000E3,4.720947277E1 +2.576791000E3,4.076260480E1 +2.577092000E3,3.249905806E1 +2.577324000E3,3.886850876E1 +2.577566000E3,3.577483806E1 +2.577814000E3,4.105002685E1 +2.578080000E3,3.881208350E1 +2.578375000E3,5.720708534E1 +2.578624000E3,4.933084675E1 +2.578932000E3,5.989261963E1 +2.579254000E3,5.193127116E1 +2.579506000E3,4.843920497E1 +2.579747000E3,4.570821188E1 +2.580001000E3,4.446748829E1 +2.580244000E3,4.006228376E1 +2.580497000E3,2.933332862E1 +2.580745000E3,4.525678604E1 +2.580989000E3,4.717489692E1 +2.581288000E3,5.239736286E1 +2.581587000E3,5.268105849E1 +2.581851000E3,4.960616241E1 +2.582112000E3,4.637217789E1 +2.582361000E3,4.676379781E1 +2.582583000E3,4.083594902E1 +2.582903000E3,2.696140701E1 +2.583176000E3,2.668057590E1 +2.583429000E3,2.900886287E1 +2.583692000E3,2.732690452E1 +2.583951000E3,3.475308428E1 +2.584205000E3,4.782860484E1 +2.584480000E3,4.928978168E1 +2.584742000E3,3.697304160E1 +2.585017000E3,3.390321432E1 +2.585248000E3,4.818778278E1 +2.585552000E3,5.175969441E1 +2.585851000E3,4.752724055E1 +2.586108000E3,5.047732228E1 +2.586408000E3,5.003267867E1 +2.586651000E3,4.995698879E1 +2.586934000E3,4.985539117E1 +2.587202000E3,4.558719065E1 +2.587455000E3,4.973387236E1 +2.587702000E3,5.190737686E1 +2.587964000E3,4.955516560E1 +2.588211000E3,5.039526507E1 +2.588461000E3,3.897042435E1 +2.588748000E3,2.919124678E1 +2.589063000E3,3.061867322E1 +2.589398000E3,4.010104895E1 +2.589690000E3,3.640442215E1 +2.589998000E3,4.479952304E1 +2.590261000E3,4.757967128E1 +2.590558000E3,4.812333533E1 +2.590802000E3,4.603482331E1 +2.591083000E3,2.960043464E1 +2.591326000E3,3.684354753E1 +2.591591000E3,4.359182452E1 +2.591849000E3,4.788602237E1 +2.592228000E3,4.468031543E1 +2.592527000E3,3.894688899E1 +2.592778000E3,2.800490026E1 +2.593035000E3,4.310888325E1 +2.593333000E3,4.628339380E1 +2.593602000E3,4.440124594E1 +2.593883000E3,4.123163794E1 +2.594160000E3,3.127645239E1 +2.594429000E3,3.071812965E1 +2.594749000E3,4.618618296E1 +2.595070000E3,5.248181749E1 +2.595312000E3,4.786265879E1 +2.595668000E3,3.990233287E1 +2.595973000E3,4.173583037E1 +2.596256000E3,3.709278400E1 +2.596497000E3,3.229385861E1 +2.596813000E3,4.380573021E1 +2.597084000E3,4.783628282E1 +2.597325000E3,5.024593568E1 +2.597578000E3,5.102379549E1 +2.597828000E3,4.760481411E1 +2.598089000E3,3.822780835E1 +2.598387000E3,3.417342767E1 +2.598736000E3,2.863579065E1 +2.598981000E3,2.886228233E1 +2.599228000E3,2.855965247E1 +2.599493000E3,3.083396855E1 +2.599764000E3,3.581659374E1 +2.600032000E3,4.317647632E1 +2.600330000E3,4.853625621E1 +2.600623000E3,5.102467342E1 +2.600867000E3,4.877836926E1 +2.601112000E3,4.705612686E1 +2.601365000E3,4.889085742E1 +2.601612000E3,4.654488136E1 +2.601956000E3,4.055024190E1 +2.602220000E3,3.990851266E1 +2.602547000E3,3.648352551E1 +2.602794000E3,5.324982942E1 +2.603078000E3,5.268965363E1 +2.603338000E3,4.851189142E1 +2.603637000E3,5.135006473E1 +2.603925000E3,4.939301404E1 +2.604238000E3,5.337101389E1 +2.604488000E3,5.022765286E1 +2.604734000E3,5.253186666E1 +2.605064000E3,4.127453431E1 +2.605321000E3,4.114070867E1 +2.605572000E3,4.042282231E1 +2.605820000E3,4.255774466E1 +2.606073000E3,4.746726668E1 +2.606319000E3,4.761848671E1 +2.606565000E3,4.983628061E1 +2.606849000E3,3.046517787E1 +2.607082000E3,3.832211131E1 +2.607339000E3,4.741131966E1 +2.607609000E3,4.453335589E1 +2.607874000E3,3.545592153E1 +2.608197000E3,4.672891376E1 +2.608451000E3,4.755881287E1 +2.608706000E3,4.827652641E1 +2.608952000E3,4.727153141E1 +2.609226000E3,4.731450942E1 +2.609537000E3,3.981385402E1 +2.609784000E3,3.194698732E1 +2.610041000E3,3.314164027E1 +2.610283000E3,2.819786732E1 +2.610546000E3,2.664547785E1 +2.610857000E3,2.913544778E1 +2.611125000E3,3.961651759E1 +2.611432000E3,3.852777426E1 +2.611666000E3,3.205673146E1 +2.611951000E3,4.233182010E1 +2.612229000E3,3.378509898E1 +2.612454000E3,4.071755552E1 +2.612730000E3,5.018278065E1 +2.613050000E3,4.100034395E1 +2.613359000E3,3.892108016E1 +2.613628000E3,5.091321799E1 +2.613871000E3,4.336916838E1 +2.614108000E3,3.960788811E1 +2.614408000E3,3.948227358E1 +2.614722000E3,3.631863435E1 +2.614975000E3,4.057042340E1 +2.615256000E3,4.414132009E1 +2.615486000E3,4.180934435E1 +2.615750000E3,4.153999936E1 +2.615997000E3,3.521796466E1 +2.616260000E3,5.443854687E1 +2.616548000E3,5.408118563E1 +2.616842000E3,4.951275264E1 +2.617090000E3,5.182722031E1 +2.617344000E3,4.327522742E1 +2.617643000E3,5.375122422E1 +2.617975000E3,5.216635190E1 +2.618233000E3,4.126006713E1 +2.618497000E3,4.980260599E1 +2.618804000E3,4.655838197E1 +2.619044000E3,4.977945459E1 +2.619327000E3,4.875559075E1 +2.619562000E3,4.983226039E1 +2.619834000E3,4.741689273E1 +2.620075000E3,4.923498746E1 +2.620352000E3,4.923432072E1 +2.620664000E3,4.040876723E1 +2.620916000E3,3.889825840E1 +2.621142000E3,5.245081579E1 +2.621448000E3,4.684934794E1 +2.621687000E3,4.583906640E1 +2.621992000E3,4.366517623E1 +2.622230000E3,3.373873872E1 +2.622475000E3,3.701694694E1 +2.622750000E3,3.544967426E1 +2.623008000E3,3.363206222E1 +2.623285000E3,4.009589135E1 +2.623562000E3,4.408709562E1 +2.623825000E3,4.800133533E1 +2.624131000E3,4.855432282E1 +2.624414000E3,4.808187444E1 +2.624671000E3,5.252566194E1 +2.624932000E3,4.890333861E1 +2.625183000E3,4.370428781E1 +2.625430000E3,3.668118979E1 +2.625747000E3,4.353955331E1 +2.626003000E3,4.224026412E1 +2.626267000E3,4.311785789E1 +2.626514000E3,3.517806855E1 +2.626763000E3,3.981966751E1 +2.627025000E3,3.444602265E1 +2.627334000E3,3.341390757E1 +2.627660000E3,3.926570124E1 +2.627920000E3,4.341089288E1 +2.628216000E3,4.081134870E1 +2.628467000E3,3.912400300E1 +2.628730000E3,3.657553946E1 +2.629000000E3,3.072838888E1 +2.629284000E3,2.929703023E1 +2.629549000E3,3.378014550E1 +2.629844000E3,4.760306323E1 +2.630080000E3,4.024322042E1 +2.630373000E3,3.235913140E1 +2.630611000E3,3.920509877E1 +2.630919000E3,5.103841717E1 +2.631222000E3,5.813980805E1 +2.631514000E3,5.190256812E1 +2.631753000E3,4.653294376E1 +2.632054000E3,4.782140153E1 +2.632295000E3,4.977458693E1 +2.632592000E3,5.371197571E1 +2.632828000E3,5.056512655E1 +2.633140000E3,5.325824914E1 +2.633383000E3,4.973751947E1 +2.633632000E3,4.853342473E1 +2.633950000E3,3.905011010E1 +2.634254000E3,3.751700759E1 +2.634549000E3,5.292771607E1 +2.634786000E3,5.557450981E1 +2.635082000E3,4.974692283E1 +2.635319000E3,5.393938197E1 +2.635611000E3,4.675981835E1 +2.635848000E3,4.299614910E1 +2.636145000E3,3.756646750E1 +2.636395000E3,3.824353200E1 +2.636648000E3,3.045317917E1 +2.636942000E3,3.257931849E1 +2.637299000E3,3.010616025E1 +2.637599000E3,4.995329379E1 +2.637834000E3,4.824584689E1 +2.638071000E3,5.059212149E1 +2.638363000E3,5.330633429E1 +2.638612000E3,5.343612136E1 +2.638897000E3,4.755550111E1 +2.639122000E3,4.119881812E1 +2.639362000E3,3.902726568E1 +2.639659000E3,4.451944661E1 +2.639896000E3,4.587471035E1 +2.640164000E3,4.115502802E1 +2.640409000E3,4.505311495E1 +2.640656000E3,4.913968689E1 +2.640951000E3,5.110923180E1 +2.641208000E3,4.281604120E1 +2.641505000E3,4.825854961E1 +2.641748000E3,4.861588211E1 +2.642059000E3,4.450542116E1 +2.642304000E3,4.274821036E1 +2.642556000E3,3.503446158E1 +2.642862000E3,4.080900103E1 +2.643164000E3,4.152079562E1 +2.643527000E3,3.935881933E1 +2.643833000E3,3.760570593E1 +2.644082000E3,3.959144469E1 +2.644327000E3,4.007918652E1 +2.644573000E3,4.288120719E1 +2.644814000E3,4.793099478E1 +2.645114000E3,4.424069452E1 +2.645391000E3,4.078427844E1 +2.645635000E3,3.902795236E1 +2.645871000E3,4.393773718E1 +2.646111000E3,4.085627764E1 +2.646355000E3,4.393316509E1 +2.646690000E3,4.428892908E1 +2.646958000E3,4.601464396E1 +2.647235000E3,4.300358696E1 +2.647474000E3,4.083829680E1 +2.647758000E3,5.406220971E1 +2.648003000E3,4.253716581E1 +2.648273000E3,4.506680000E1 +2.648514000E3,3.500046728E1 +2.648758000E3,3.537281462E1 +2.649004000E3,5.013819891E1 +2.649251000E3,5.388943830E1 +2.649556000E3,5.656370208E1 +2.649891000E3,5.696480404E1 +2.650216000E3,4.675400561E1 +2.650515000E3,4.179549274E1 +2.650777000E3,4.536624285E1 +2.651084000E3,4.297370528E1 +2.651336000E3,4.376785410E1 +2.651635000E3,3.354560746E1 +2.651881000E3,2.537939319E1 +2.652180000E3,3.168783420E1 +2.652481000E3,4.898553010E1 +2.652737000E3,5.438993966E1 +2.652992000E3,4.963834041E1 +2.653252000E3,4.227369117E1 +2.653502000E3,4.301436765E1 +2.653812000E3,3.649724292E1 +2.654061000E3,4.086211966E1 +2.654320000E3,3.223281741E1 +2.654605000E3,2.807672508E1 +2.654836000E3,2.764825285E1 +2.655100000E3,4.598866982E1 +2.655350000E3,4.383741939E1 +2.655590000E3,4.883555528E1 +2.655837000E3,4.815765811E1 +2.656131000E3,5.047261312E1 +2.656369000E3,5.124829846E1 +2.656626000E3,3.956134092E1 +2.656925000E3,3.503286763E1 +2.657200000E3,3.224209198E1 +2.657447000E3,4.294806319E1 +2.657761000E3,4.898454413E1 +2.658011000E3,5.320780356E1 +2.658286000E3,5.345186604E1 +2.658542000E3,4.849291145E1 +2.658789000E3,5.098648363E1 +2.659034000E3,4.892931203E1 +2.659289000E3,4.580698225E1 +2.659530000E3,3.709695762E1 +2.659834000E3,3.457925551E1 +2.660081000E3,3.855219813E1 +2.660383000E3,3.845534481E1 +2.660628000E3,4.619372518E1 +2.660921000E3,4.848307744E1 +2.661167000E3,4.790880967E1 +2.661464000E3,4.667520128E1 +2.661710000E3,4.098851532E1 +2.662006000E3,4.035468673E1 +2.662245000E3,3.753010710E1 +2.662592000E3,4.792080660E1 +2.662862000E3,4.709835917E1 +2.663123000E3,3.501409506E1 +2.663374000E3,3.240664296E1 +2.663631000E3,4.326696615E1 +2.663874000E3,4.411177933E1 +2.664133000E3,3.936378145E1 +2.664382000E3,3.443614227E1 +2.664648000E3,3.761654306E1 +2.664944000E3,5.164457484E1 +2.665198000E3,2.810669920E1 +2.665512000E3,2.931307063E1 +2.665876000E3,3.108643425E1 +2.666131000E3,3.278101889E1 +2.666439000E3,4.277860150E1 +2.666693000E3,4.213131936E1 +2.667002000E3,3.935849781E1 +2.667259000E3,4.137879880E1 +2.667575000E3,3.790565018E1 +2.667827000E3,3.845274836E1 +2.668153000E3,3.676763670E1 +2.668452000E3,3.751975183E1 +2.668696000E3,3.224848897E1 +2.669023000E3,3.611134142E1 +2.669316000E3,4.467495655E1 +2.669607000E3,4.735906080E1 +2.669885000E3,5.159453510E1 +2.670167000E3,5.321308782E1 +2.670485000E3,5.282242631E1 +2.670747000E3,5.127719277E1 +2.670997000E3,4.902251972E1 +2.671243000E3,4.450532678E1 +2.671540000E3,3.864078148E1 +2.671788000E3,3.720620343E1 +2.672044000E3,4.496142790E1 +2.672357000E3,4.705640535E1 +2.672617000E3,3.890316941E1 +2.672864000E3,4.027639889E1 +2.673159000E3,4.202335245E1 +2.673421000E3,4.285452583E1 +2.673720000E3,3.626679930E1 +2.673964000E3,4.670395357E1 +2.674210000E3,4.915586670E1 +2.674514000E3,5.353785994E1 +2.674811000E3,5.414016767E1 +2.675048000E3,5.591079353E1 +2.675364000E3,3.844031623E1 +2.675661000E3,3.124520008E1 +2.675946000E3,3.566755596E1 +2.676189000E3,3.490423263E1 +2.676498000E3,5.070292882E1 +2.676799000E3,5.356134163E1 +2.677047000E3,5.161634227E1 +2.677305000E3,5.185439004E1 +2.677581000E3,5.315585532E1 +2.677832000E3,4.418578879E1 +2.678087000E3,3.972693415E1 +2.678335000E3,4.338465258E1 +2.678650000E3,5.168404535E1 +2.678934000E3,4.984483773E1 +2.679249000E3,4.977401184E1 +2.679507000E3,5.044345616E1 +2.679823000E3,4.232585634E1 +2.680128000E3,3.026551109E1 +2.680400000E3,3.009656886E1 +2.680660000E3,4.894119824E1 +2.680913000E3,4.712312643E1 +2.681208000E3,4.239602863E1 +2.681477000E3,4.875338950E1 +2.681768000E3,4.887945421E1 +2.682128000E3,4.379352407E1 +2.682394000E3,4.073494394E1 +2.682637000E3,3.685872977E1 +2.682895000E3,2.883047793E1 +2.683163000E3,3.769147996E1 +2.683455000E3,3.713975885E1 +2.683749000E3,4.855681627E1 +2.683994000E3,4.936430656E1 +2.684290000E3,5.303947120E1 +2.684540000E3,5.031092673E1 +2.684833000E3,4.783130186E1 +2.685073000E3,4.898734587E1 +2.685348000E3,4.686166956E1 +2.685598000E3,4.244245178E1 +2.685917000E3,3.872119900E1 +2.686161000E3,4.891396583E1 +2.686434000E3,4.491629365E1 +2.686687000E3,3.588391777E1 +2.686952000E3,3.156965948E1 +2.687206000E3,3.184725563E1 +2.687480000E3,3.153561496E1 +2.687733000E3,3.669659228E1 +2.688049000E3,3.507922771E1 +2.688340000E3,3.251056517E1 +2.688645000E3,4.079174670E1 +2.688915000E3,4.837277005E1 +2.689163000E3,4.669136560E1 +2.689426000E3,3.659115086E1 +2.689751000E3,4.814125321E1 +2.689994000E3,4.721335081E1 +2.690235000E3,5.119773767E1 +2.690471000E3,4.584232122E1 +2.690738000E3,4.687969307E1 +2.691006000E3,4.116197132E1 +2.691312000E3,2.850019915E1 +2.691659000E3,3.175399572E1 +2.691948000E3,3.215115185E1 +2.692197000E3,2.655209633E1 +2.692466000E3,3.136629444E1 +2.692727000E3,2.928762690E1 +2.692976000E3,2.688909217E1 +2.693281000E3,3.350197248E1 +2.693518000E3,3.760267236E1 +2.693776000E3,3.194141055E1 +2.694032000E3,3.113878807E1 +2.694299000E3,2.830606211E1 +2.694602000E3,2.632227285E1 +2.694941000E3,2.736240000E1 +2.695184000E3,3.956118458E1 +2.695488000E3,4.069974415E1 +2.695732000E3,4.498590768E1 +2.696030000E3,3.370199172E1 +2.696300000E3,3.284857688E1 +2.696535000E3,2.919082343E1 +2.696815000E3,3.146626789E1 +2.697056000E3,2.968971947E1 +2.697354000E3,4.116455896E1 +2.697640000E3,5.055341773E1 +2.697888000E3,5.163434474E1 +2.698155000E3,4.792936353E1 +2.698456000E3,4.111753823E1 +2.698732000E3,4.594070701E1 +2.699031000E3,3.204472070E1 +2.699273000E3,2.836668859E1 +2.699578000E3,2.624009297E1 +2.699855000E3,2.719538340E1 +2.700110000E3,2.868563476E1 +2.700399000E3,2.757039916E1 +2.700662000E3,2.546630310E1 +2.700960000E3,2.981844134E1 +2.701310000E3,3.063471239E1 +2.701629000E3,4.014173680E1 +2.701894000E3,3.281157953E1 +2.702206000E3,4.268438101E1 +2.702448000E3,4.272045970E1 +2.702710000E3,4.782744516E1 +2.702984000E3,4.067538265E1 +2.703255000E3,3.821763448E1 +2.703566000E3,3.373237040E1 +2.703865000E3,2.762261654E1 +2.704108000E3,3.058182972E1 +2.704366000E3,4.157303269E1 +2.704695000E3,4.128988216E1 +2.705002000E3,3.725674585E1 +2.705260000E3,3.318881716E1 +2.705544000E3,3.512644750E1 +2.705774000E3,3.012622541E1 +2.706039000E3,3.307868989E1 +2.706297000E3,3.089854998E1 +2.706599000E3,2.870455364E1 +2.706901000E3,2.573473536E1 +2.707155000E3,2.708285982E1 +2.707419000E3,2.641018696E1 +2.707644000E3,2.532685142E1 +2.707945000E3,2.741320006E1 +2.708188000E3,2.764718970E1 +2.708460000E3,3.745935532E1 +2.708711000E3,4.292241509E1 +2.708955000E3,4.431523077E1 +2.709266000E3,3.812245251E1 +2.709534000E3,3.199637282E1 +2.709802000E3,3.030937111E1 +2.710049000E3,3.172341474E1 +2.710303000E3,4.706685853E1 +2.710610000E3,4.372593931E1 +2.710859000E3,4.298246415E1 +2.711196000E3,4.313732995E1 +2.711485000E3,3.646858634E1 +2.711745000E3,3.547356546E1 +2.712003000E3,4.802507202E1 +2.712259000E3,4.666185634E1 +2.712527000E3,4.298723738E1 +2.712813000E3,3.203029787E1 +2.713082000E3,2.721140687E1 +2.713344000E3,3.967881707E1 +2.713594000E3,5.017429445E1 +2.713859000E3,4.690730331E1 +2.714106000E3,4.892140969E1 +2.714475000E3,4.312346900E1 +2.714730000E3,4.926615820E1 +2.714984000E3,4.690558758E1 +2.715298000E3,3.116292546E1 +2.715563000E3,2.731472603E1 +2.715855000E3,3.029992609E1 +2.716160000E3,3.149201904E1 +2.716442000E3,2.826058660E1 +2.716703000E3,2.713282366E1 +2.716957000E3,3.659207256E1 +2.717253000E3,3.982143620E1 +2.717592000E3,4.316888996E1 +2.717851000E3,4.348787554E1 +2.718149000E3,4.336902207E1 +2.718464000E3,4.494305168E1 +2.718765000E3,4.280996114E1 +2.719042000E3,4.083199069E1 +2.719277000E3,3.924180447E1 +2.719573000E3,2.985025677E1 +2.719800000E3,2.924980764E1 +2.720042000E3,2.589394072E1 +2.720346000E3,2.996884267E1 +2.720607000E3,2.951796470E1 +2.720882000E3,2.762273017E1 +2.721181000E3,4.946261833E1 +2.721422000E3,4.848220411E1 +2.721736000E3,4.816357380E1 +2.722001000E3,5.238238407E1 +2.722305000E3,5.586118797E1 +2.722602000E3,5.474108905E1 +2.722856000E3,5.089156984E1 +2.723105000E3,4.900978141E1 +2.723369000E3,5.541376880E1 +2.723666000E3,4.827427134E1 +2.723997000E3,4.802338633E1 +2.724296000E3,3.537215093E1 +2.724548000E3,3.822637167E1 +2.724844000E3,3.388327957E1 +2.725086000E3,3.756611639E1 +2.725338000E3,4.489615211E1 +2.725635000E3,5.048833137E1 +2.725871000E3,4.298428385E1 +2.726174000E3,3.303114009E1 +2.726475000E3,4.527811220E1 +2.726764000E3,4.815487328E1 +2.727017000E3,4.761823346E1 +2.727328000E3,4.180028821E1 +2.727607000E3,4.512936944E1 +2.727849000E3,4.337880786E1 +2.728101000E3,4.031817829E1 +2.728401000E3,3.509684782E1 +2.728650000E3,4.495565250E1 +2.728895000E3,4.157595660E1 +2.729138000E3,5.008202715E1 +2.729381000E3,5.308960545E1 +2.729622000E3,4.943413955E1 +2.729917000E3,4.820467383E1 +2.730234000E3,5.168344618E1 +2.730544000E3,5.128425900E1 +2.730837000E3,5.242528085E1 +2.731075000E3,5.125548047E1 +2.731382000E3,5.027678189E1 +2.731625000E3,4.595108129E1 +2.731917000E3,5.425640288E1 +2.732229000E3,5.493458667E1 +2.732522000E3,5.383738769E1 +2.732781000E3,4.577468908E1 +2.733036000E3,4.877165484E1 +2.733337000E3,5.155317163E1 +2.733582000E3,4.868465804E1 +2.733904000E3,5.094377769E1 +2.734158000E3,4.778052408E1 +2.734485000E3,4.980696312E1 +2.734788000E3,5.229980528E1 +2.735043000E3,4.487473927E1 +2.735323000E3,5.405477376E1 +2.735550000E3,5.095910777E1 +2.735795000E3,4.081340338E1 +2.736110000E3,3.942379743E1 +2.736352000E3,4.377765131E1 +2.736599000E3,4.311237352E1 +2.736822000E3,4.659947655E1 +2.737071000E3,4.430846393E1 +2.737313000E3,4.579154087E1 +2.737577000E3,4.628223866E1 +2.737831000E3,3.937286623E1 +2.738094000E3,3.852847368E1 +2.738336000E3,3.907921933E1 +2.738583000E3,5.112703685E1 +2.738825000E3,4.827754167E1 +2.739100000E3,4.022366081E1 +2.739352000E3,3.342841986E1 +2.739649000E3,3.354947585E1 +2.740003000E3,2.967395260E1 +2.740259000E3,4.724158021E1 +2.740515000E3,4.406232704E1 +2.740781000E3,4.128290785E1 +2.741030000E3,3.766271195E1 +2.741274000E3,3.234308905E1 +2.741542000E3,5.345026714E1 +2.741790000E3,5.189834860E1 +2.742037000E3,4.310520052E1 +2.742373000E3,3.005340200E1 +2.742661000E3,3.957498865E1 +2.742905000E3,4.298992085E1 +2.743235000E3,3.914359224E1 +2.743487000E3,4.665969106E1 +2.743742000E3,4.569837618E1 +2.743989000E3,4.037243126E1 +2.744288000E3,4.393151618E1 +2.744525000E3,4.191552922E1 +2.744830000E3,3.855450094E1 +2.745068000E3,3.137426682E1 +2.745312000E3,3.988970586E1 +2.745595000E3,4.261856210E1 +2.745912000E3,4.545535941E1 +2.746178000E3,3.982007681E1 +2.746515000E3,3.873990925E1 +2.746799000E3,4.024486228E1 +2.747097000E3,3.778822068E1 +2.747346000E3,3.349647091E1 +2.747587000E3,3.949530039E1 +2.747884000E3,4.424971453E1 +2.748182000E3,4.109440717E1 +2.748426000E3,4.429824127E1 +2.748724000E3,3.941870140E1 +2.749014000E3,3.719766140E1 +2.749309000E3,3.407061301E1 +2.749659000E3,3.362708714E1 +2.749929000E3,4.111324363E1 +2.750185000E3,4.275268079E1 +2.750445000E3,5.624172952E1 +2.750726000E3,4.374037489E1 +2.750957000E3,4.189644016E1 +2.751207000E3,3.621210842E1 +2.751519000E3,4.177841495E1 +2.751770000E3,4.048458953E1 +2.752052000E3,3.923884976E1 +2.752303000E3,3.426258793E1 +2.752575000E3,3.252443323E1 +2.752926000E3,3.211416673E1 +2.753222000E3,3.245023971E1 +2.753483000E3,3.266068265E1 +2.753758000E3,4.004662592E1 +2.754054000E3,4.872983792E1 +2.754320000E3,5.041613029E1 +2.754567000E3,4.540589836E1 +2.754814000E3,3.042430240E1 +2.755080000E3,3.072459076E1 +2.755376000E3,3.998104284E1 +2.755642000E3,4.049850263E1 +2.755970000E3,4.294486763E1 +2.756315000E3,4.067196783E1 +2.756573000E3,4.772031632E1 +2.756825000E3,4.988707098E1 +2.757139000E3,4.555538995E1 +2.757388000E3,4.252022698E1 +2.757651000E3,3.810962452E1 +2.757917000E3,3.494795311E1 +2.758159000E3,3.247098224E1 +2.758413000E3,3.588027190E1 +2.758665000E3,3.200494843E1 +2.758920000E3,4.772506231E1 +2.759171000E3,3.775844318E1 +2.759507000E3,3.920116655E1 +2.759772000E3,4.528245497E1 +2.760086000E3,4.240466142E1 +2.760349000E3,4.544544837E1 +2.760652000E3,4.039389797E1 +2.760923000E3,3.896680017E1 +2.761194000E3,4.381534416E1 +2.761436000E3,4.424202471E1 +2.761681000E3,4.737958135E1 +2.761960000E3,4.213672401E1 +2.762194000E3,4.516117441E1 +2.762462000E3,4.279973284E1 +2.762806000E3,3.859577230E1 +2.763061000E3,4.880977241E1 +2.763403000E3,4.365184399E1 +2.763660000E3,3.848143477E1 +2.763932000E3,4.787104427E1 +2.764214000E3,3.823665924E1 +2.764451000E3,3.049392521E1 +2.764732000E3,3.086844430E1 +2.764975000E3,2.587396098E1 +2.765284000E3,3.362049288E1 +2.765536000E3,3.353664382E1 +2.765825000E3,5.140360254E1 +2.766193000E3,5.105178275E1 +2.766449000E3,5.027787452E1 +2.766756000E3,4.961194015E1 +2.766992000E3,4.473604482E1 +2.767290000E3,5.567849424E1 +2.767540000E3,5.366739238E1 +2.767788000E3,5.268444481E1 +2.768092000E3,4.378358357E1 +2.768389000E3,4.285786187E1 +2.768638000E3,3.838737205E1 +2.768928000E3,4.053738598E1 +2.769250000E3,3.914310468E1 +2.769517000E3,3.950994015E1 +2.769781000E3,4.085678781E1 +2.770095000E3,3.706118568E1 +2.770362000E3,3.878826243E1 +2.770640000E3,4.509160576E1 +2.770877000E3,4.395611401E1 +2.771129000E3,3.894826552E1 +2.771368000E3,3.783168139E1 +2.771620000E3,3.074559821E1 +2.771881000E3,4.191911052E1 +2.772136000E3,4.492008577E1 +2.772447000E3,3.666714779E1 +2.772710000E3,4.135207765E1 +2.772994000E3,4.645886813E1 +2.773238000E3,5.078995440E1 +2.773478000E3,5.706152467E1 +2.773725000E3,5.135582573E1 +2.773990000E3,4.900548267E1 +2.774266000E3,5.275962483E1 +2.774567000E3,3.947101760E1 +2.774806000E3,4.078518654E1 +2.775113000E3,4.929998433E1 +2.775417000E3,4.396253608E1 +2.775784000E3,4.382194135E1 +2.776077000E3,4.131860223E1 +2.776341000E3,4.321133953E1 +2.776596000E3,3.942571045E1 +2.776881000E3,5.035254190E1 +2.777176000E3,5.596334670E1 +2.777432000E3,6.003222989E1 +2.777730000E3,5.139953750E1 +2.778036000E3,5.596001036E1 +2.778330000E3,5.632045587E1 +2.778567000E3,5.352711698E1 +2.778873000E3,5.160150080E1 +2.779243000E3,5.407354895E1 +2.779513000E3,5.151192380E1 +2.779810000E3,5.479493680E1 +2.780084000E3,5.006197117E1 +2.780351000E3,5.012247277E1 +2.780644000E3,4.598086802E1 +2.780884000E3,3.959492635E1 +2.781142000E3,3.571624227E1 +2.781421000E3,4.082207018E1 +2.781720000E3,5.162800696E1 +2.781984000E3,5.211692198E1 +2.782250000E3,5.017743125E1 +2.782617000E3,4.685740156E1 +2.782916000E3,4.348825959E1 +2.783213000E3,3.825858224E1 +2.783454000E3,4.923981343E1 +2.783750000E3,5.319160353E1 +2.783992000E3,4.967899375E1 +2.784288000E3,3.952802481E1 +2.784535000E3,3.328379343E1 +2.784779000E3,3.014350405E1 +2.785020000E3,3.405755755E1 +2.785313000E3,4.653255974E1 +2.785639000E3,4.571255084E1 +2.785896000E3,4.212654376E1 +2.786166000E3,4.635178938E1 +2.786421000E3,4.614547408E1 +2.786716000E3,4.279815144E1 +2.787018000E3,3.739201392E1 +2.787261000E3,4.297599275E1 +2.787569000E3,5.279236826E1 +2.787869000E3,4.385267374E1 +2.788181000E3,3.538660905E1 +2.788488000E3,4.283741498E1 +2.788738000E3,3.898018884E1 +2.789079000E3,4.417569536E1 +2.789327000E3,3.821417555E1 +2.789586000E3,4.124587088E1 +2.789850000E3,4.583617377E1 +2.790116000E3,4.758354441E1 +2.790413000E3,4.386951397E1 +2.790662000E3,4.527431896E1 +2.790956000E3,4.454979637E1 +2.791207000E3,4.019280914E1 +2.791465000E3,4.549375778E1 +2.791714000E3,4.076569420E1 +2.791963000E3,3.807465350E1 +2.792293000E3,5.201775254E1 +2.792550000E3,4.217772267E1 +2.792797000E3,5.472035384E1 +2.793107000E3,5.403984906E1 +2.793357000E3,5.591746790E1 +2.793622000E3,5.564159884E1 +2.793875000E3,5.646584479E1 +2.794118000E3,5.185594958E1 +2.794377000E3,4.895735059E1 +2.794636000E3,5.654557288E1 +2.794943000E3,5.012866956E1 +2.795254000E3,4.757016947E1 +2.795528000E3,5.211434220E1 +2.795790000E3,4.452402763E1 +2.796058000E3,4.290214665E1 +2.796307000E3,3.465820610E1 +2.796556000E3,4.339944359E1 +2.796852000E3,4.313164949E1 +2.797091000E3,5.438037991E1 +2.797389000E3,5.514175593E1 +2.797635000E3,4.928848190E1 +2.797924000E3,4.659784940E1 +2.798220000E3,4.998887096E1 +2.798537000E3,4.486399829E1 +2.798842000E3,4.885866840E1 +2.799091000E3,4.635335968E1 +2.799347000E3,4.504358299E1 +2.799594000E3,3.958005741E1 +2.799833000E3,4.827229253E1 +2.800082000E3,4.830536262E1 +2.800388000E3,4.659260793E1 +2.800673000E3,4.111758509E1 +2.800972000E3,4.464305855E1 +2.801233000E3,4.497276151E1 +2.801524000E3,3.374775892E1 +2.801884000E3,3.426238632E1 +2.802202000E3,3.521995684E1 +2.802451000E3,3.181302785E1 +2.802708000E3,2.794884084E1 +2.803019000E3,3.320140571E1 +2.803325000E3,3.478175393E1 +2.803626000E3,3.529465039E1 +2.803932000E3,3.962950189E1 +2.804222000E3,5.725685057E1 +2.804486000E3,5.740119524E1 +2.804784000E3,5.069347451E1 +2.805056000E3,5.047632669E1 +2.805376000E3,5.207930289E1 +2.805626000E3,5.264810014E1 +2.805887000E3,5.288954519E1 +2.806177000E3,4.457356662E1 +2.806431000E3,3.885566564E1 +2.806679000E3,3.768676842E1 +2.806944000E3,3.953483275E1 +2.807192000E3,4.348722722E1 +2.807514000E3,4.091620627E1 +2.807832000E3,4.192587435E1 +2.808086000E3,4.434501723E1 +2.808380000E3,4.393917252E1 +2.808686000E3,4.250763593E1 +2.809001000E3,4.146719312E1 +2.809249000E3,4.084508562E1 +2.809517000E3,4.466153637E1 +2.809817000E3,4.002274614E1 +2.810111000E3,4.310032831E1 +2.810375000E3,4.901386280E1 +2.810661000E3,4.607368963E1 +2.810927000E3,4.387647276E1 +2.811225000E3,5.143943484E1 +2.811469000E3,5.045193234E1 +2.811861000E3,4.363012565E1 +2.812115000E3,4.450854658E1 +2.812371000E3,4.453857946E1 +2.812631000E3,4.628101753E1 +2.812921000E3,4.634691523E1 +2.813212000E3,4.654803531E1 +2.813510000E3,4.718980060E1 +2.813758000E3,4.430765323E1 +2.814051000E3,4.322664022E1 +2.814349000E3,4.450224091E1 +2.814582000E3,4.170367724E1 +2.814868000E3,3.985315953E1 +2.815113000E3,5.280042862E1 +2.815400000E3,4.119993511E1 +2.815662000E3,4.251502783E1 +2.815937000E3,4.221594106E1 +2.816186000E3,4.475181393E1 +2.816425000E3,4.757705666E1 +2.816666000E3,4.971185267E1 +2.816968000E3,4.862141287E1 +2.817211000E3,4.713523003E1 +2.817492000E3,4.541478066E1 +2.817737000E3,4.363493262E1 +2.817996000E3,4.428814895E1 +2.818246000E3,4.395099122E1 +2.818516000E3,4.781334664E1 +2.818773000E3,4.439472962E1 +2.819027000E3,4.768107540E1 +2.819278000E3,4.535748265E1 +2.819523000E3,5.061196572E1 +2.819779000E3,4.816069594E1 +2.820044000E3,4.715573746E1 +2.820374000E3,4.919198579E1 +2.820635000E3,5.486134785E1 +2.820897000E3,4.845922458E1 +2.821173000E3,4.486224636E1 +2.821520000E3,4.543631827E1 +2.821781000E3,4.823449020E1 +2.822049000E3,4.622456265E1 +2.822354000E3,3.467019045E1 +2.822632000E3,3.820707315E1 +2.822892000E3,3.870865044E1 +2.823175000E3,3.526203974E1 +2.823424000E3,3.398332746E1 +2.823673000E3,4.060940798E1 +2.823924000E3,4.531267955E1 +2.824156000E3,4.823172894E1 +2.824426000E3,5.381643572E1 +2.824772000E3,5.219878503E1 +2.825053000E3,4.888255160E1 +2.825277000E3,4.023650802E1 +2.825526000E3,3.467455539E1 +2.825785000E3,3.818404386E1 +2.826078000E3,4.122702652E1 +2.826315000E3,3.713088668E1 +2.826619000E3,4.891468535E1 +2.826912000E3,5.266971981E1 +2.827148000E3,4.991025067E1 +2.827457000E3,5.435242869E1 +2.827718000E3,5.378448717E1 +2.828053000E3,5.171570017E1 +2.828327000E3,5.600593919E1 +2.828581000E3,5.175339102E1 +2.828821000E3,4.567582373E1 +2.829101000E3,3.417267221E1 +2.829337000E3,3.532670702E1 +2.829576000E3,4.323212593E1 +2.829823000E3,3.952189104E1 +2.830096000E3,4.372473758E1 +2.830363000E3,4.288959864E1 +2.830609000E3,3.903893871E1 +2.830954000E3,3.847274859E1 +2.831281000E3,4.911689413E1 +2.831539000E3,5.342672798E1 +2.831798000E3,5.558955965E1 +2.832091000E3,5.519004987E1 +2.832341000E3,5.877942264E1 +2.832589000E3,4.602825434E1 +2.832861000E3,3.380054471E1 +2.833107000E3,3.583644563E1 +2.833403000E3,4.160983164E1 +2.833653000E3,3.903662215E1 +2.833958000E3,3.879412363E1 +2.834222000E3,4.121083607E1 +2.834460000E3,4.235130104E1 +2.834723000E3,5.615135633E1 +2.834993000E3,5.355273371E1 +2.835271000E3,4.896976792E1 +2.835535000E3,5.132324538E1 +2.835792000E3,5.529277110E1 +2.836041000E3,5.163674064E1 +2.836366000E3,4.657927993E1 +2.836613000E3,4.238907241E1 +2.836875000E3,5.376683406E1 +2.837143000E3,5.052269952E1 +2.837398000E3,5.018740192E1 +2.837697000E3,4.680907883E1 +2.837961000E3,4.427452663E1 +2.838227000E3,3.300759096E1 +2.838490000E3,3.639504198E1 +2.838784000E3,4.617517315E1 +2.839084000E3,4.692063960E1 +2.839325000E3,4.445415179E1 +2.839620000E3,4.215561710E1 +2.839863000E3,4.433766229E1 +2.840168000E3,4.210423337E1 +2.840460000E3,3.873922427E1 +2.840768000E3,3.717852459E1 +2.841057000E3,3.957811826E1 +2.841313000E3,3.760389186E1 +2.841638000E3,4.310249633E1 +2.841921000E3,4.813095040E1 +2.842192000E3,4.623131926E1 +2.842444000E3,4.648620260E1 +2.842743000E3,4.620801315E1 +2.843027000E3,4.321069748E1 +2.843281000E3,4.205248893E1 +2.843587000E3,2.653536028E1 +2.843863000E3,2.940344619E1 +2.844270000E3,4.715941302E1 +2.844533000E3,4.512147604E1 +2.844793000E3,4.758865475E1 +2.845051000E3,4.853448129E1 +2.845325000E3,4.647479098E1 +2.845569000E3,4.600966189E1 +2.845842000E3,4.549543262E1 +2.846088000E3,4.262631529E1 +2.846347000E3,4.522394390E1 +2.846652000E3,4.657245211E1 +2.846924000E3,4.554651191E1 +2.847231000E3,4.501421864E1 +2.847609000E3,4.413715050E1 +2.847859000E3,3.641102730E1 +2.848158000E3,2.959594862E1 +2.848409000E3,3.229903797E1 +2.848684000E3,3.716282001E1 +2.848948000E3,4.864280315E1 +2.849195000E3,4.698625872E1 +2.849453000E3,4.475077374E1 +2.849725000E3,4.320130236E1 +2.850029000E3,4.052232702E1 +2.850286000E3,4.987213531E1 +2.850622000E3,4.470574790E1 +2.850953000E3,4.746715529E1 +2.851224000E3,4.817674396E1 +2.851475000E3,4.755384271E1 +2.851775000E3,4.606857790E1 +2.852037000E3,4.602549066E1 +2.852280000E3,4.107899882E1 +2.852578000E3,4.602936757E1 +2.852832000E3,4.594357604E1 +2.853123000E3,4.132874601E1 +2.853424000E3,3.891402985E1 +2.853676000E3,3.210431116E1 +2.854034000E3,4.148325967E1 +2.854336000E3,4.539420759E1 +2.854629000E3,3.813311910E1 +2.854857000E3,3.204826654E1 +2.855103000E3,4.042825728E1 +2.855348000E3,3.781799437E1 +2.855635000E3,3.485312778E1 +2.855901000E3,3.176423587E1 +2.856194000E3,3.286644404E1 +2.856446000E3,3.601261840E1 +2.856741000E3,3.056779431E1 +2.856990000E3,2.876904683E1 +2.857247000E3,2.336161379E1 +2.857525000E3,5.319777865E1 +2.857765000E3,4.924210585E1 +2.858030000E3,4.161506516E1 +2.858287000E3,3.471025819E1 +2.858592000E3,2.954431085E1 +2.858878000E3,3.551304021E1 +2.859146000E3,4.056554733E1 +2.859438000E3,4.716772205E1 +2.859749000E3,4.728214145E1 +2.860112000E3,4.333221553E1 +2.860355000E3,3.970290127E1 +2.860627000E3,4.675070996E1 +2.860922000E3,5.292655838E1 +2.861168000E3,5.560528000E1 +2.861448000E3,5.155203362E1 +2.861684000E3,4.854372910E1 +2.861981000E3,5.166225265E1 +2.862226000E3,5.239758268E1 +2.862536000E3,4.880079262E1 +2.862801000E3,5.860724491E1 +2.863049000E3,5.487085904E1 +2.863366000E3,4.477307493E1 +2.863622000E3,4.809216762E1 +2.863923000E3,4.128779228E1 +2.864180000E3,4.039902121E1 +2.864473000E3,3.763315716E1 +2.864758000E3,3.836830031E1 +2.865072000E3,3.562217561E1 +2.865375000E3,4.251016575E1 +2.865631000E3,3.959478231E1 +2.865894000E3,3.906491963E1 +2.866161000E3,3.169567809E1 +2.866409000E3,4.180907280E1 +2.866769000E3,5.009501966E1 +2.867095000E3,4.485052737E1 +2.867377000E3,4.543449817E1 +2.867634000E3,4.558186247E1 +2.867912000E3,3.310648260E1 +2.868160000E3,3.368680580E1 +2.868403000E3,3.259924908E1 +2.868652000E3,3.468868920E1 +2.868945000E3,3.811295096E1 +2.869214000E3,3.680532391E1 +2.869523000E3,4.480088276E1 +2.869800000E3,4.321197878E1 +2.870149000E3,3.870196995E1 +2.870426000E3,4.501549736E1 +2.870686000E3,3.869046251E1 +2.870998000E3,5.116138397E1 +2.871259000E3,4.565952095E1 +2.871545000E3,4.044036430E1 +2.871835000E3,3.776423584E1 +2.872146000E3,4.283314388E1 +2.872428000E3,4.822150076E1 +2.872666000E3,4.609488251E1 +2.872966000E3,4.199842198E1 +2.873258000E3,4.199452970E1 +2.873557000E3,4.094164548E1 +2.873868000E3,3.451929232E1 +2.874146000E3,3.725700957E1 +2.874378000E3,3.820854143E1 +2.874632000E3,3.261818797E1 +2.874949000E3,4.229639001E1 +2.875219000E3,4.314663650E1 +2.875496000E3,4.030472415E1 +2.875772000E3,3.740362597E1 +2.876082000E3,3.770704299E1 +2.876334000E3,4.016521241E1 +2.876600000E3,4.155568881E1 +2.876855000E3,3.864643482E1 +2.877164000E3,3.358142820E1 +2.877430000E3,2.988882280E1 +2.877698000E3,4.233125756E1 +2.877954000E3,4.245249096E1 +2.878273000E3,3.619646633E1 +2.878541000E3,3.199868066E1 +2.878801000E3,4.546979293E1 +2.879062000E3,5.523869784E1 +2.879342000E3,5.605267417E1 +2.879584000E3,5.653411529E1 +2.879928000E3,4.626290707E1 +2.880202000E3,3.540012043E1 +2.880447000E3,3.620700172E1 +2.880691000E3,2.922036878E1 +2.880938000E3,3.659816429E1 +2.881251000E3,4.145147882E1 +2.881527000E3,3.894444603E1 +2.881851000E3,3.741315407E1 +2.882112000E3,4.094962867E1 +2.882373000E3,4.333353585E1 +2.882625000E3,4.557565518E1 +2.882879000E3,4.308396997E1 +2.883145000E3,4.097722416E1 +2.883416000E3,3.927850137E1 +2.883669000E3,3.223716221E1 +2.883941000E3,3.004581442E1 +2.884209000E3,3.765685263E1 +2.884466000E3,3.878810543E1 +2.884718000E3,2.988953340E1 +2.884967000E3,3.346960294E1 +2.885221000E3,3.799647420E1 +2.885537000E3,3.116842616E1 +2.885796000E3,3.671552801E1 +2.886084000E3,4.459898232E1 +2.886404000E3,4.708370738E1 +2.886677000E3,5.036035843E1 +2.886979000E3,4.113513329E1 +2.887251000E3,3.503458684E1 +2.887528000E3,3.462090732E1 +2.887785000E3,4.001717165E1 +2.888037000E3,3.538133603E1 +2.888296000E3,3.662805649E1 +2.888547000E3,4.263542947E1 +2.888820000E3,4.431895872E1 +2.889079000E3,4.300413574E1 +2.889340000E3,4.173317530E1 +2.889582000E3,4.288275032E1 +2.889932000E3,3.944773526E1 +2.890197000E3,3.214266541E1 +2.890503000E3,3.060588708E1 +2.890777000E3,3.296322494E1 +2.891017000E3,3.394251803E1 +2.891320000E3,3.208741950E1 +2.891570000E3,3.441770910E1 +2.891849000E3,3.368561294E1 +2.892087000E3,3.475967611E1 +2.892337000E3,3.740055420E1 +2.892635000E3,3.542355307E1 +2.892981000E3,3.105741683E1 +2.893247000E3,3.245614761E1 +2.893513000E3,4.142391644E1 +2.893779000E3,4.497461971E1 +2.894029000E3,4.653178389E1 +2.894282000E3,4.703576342E1 +2.894540000E3,4.751169602E1 +2.894805000E3,4.201422178E1 +2.895062000E3,4.370261317E1 +2.895310000E3,4.660906406E1 +2.895596000E3,4.633159753E1 +2.895865000E3,4.381116332E1 +2.896155000E3,4.368523912E1 +2.896405000E3,4.747051902E1 +2.896651000E3,4.222577444E1 +2.896905000E3,4.572633660E1 +2.897184000E3,5.203776089E1 +2.897450000E3,5.010843836E1 +2.897744000E3,4.910530865E1 +2.898022000E3,4.664859833E1 +2.898308000E3,3.985336775E1 +2.898564000E3,3.683403533E1 +2.898812000E3,4.284820320E1 +2.899091000E3,4.286036404E1 +2.899396000E3,5.224070654E1 +2.899753000E3,4.568546748E1 +2.900018000E3,5.586433220E1 +2.900278000E3,4.514230837E1 +2.900559000E3,3.853422420E1 +2.900865000E3,3.299777990E1 +2.901139000E3,3.594596453E1 +2.901415000E3,2.896001699E1 +2.901650000E3,2.556794162E1 +2.901937000E3,2.525773120E1 +2.902206000E3,3.138035436E1 +2.902457000E3,3.725731802E1 +2.902816000E3,3.600302530E1 +2.903095000E3,3.476106384E1 +2.903340000E3,3.325569458E1 +2.903600000E3,3.217545002E1 +2.903858000E3,2.994578711E1 +2.904108000E3,3.277965280E1 +2.904372000E3,4.013450695E1 +2.904627000E3,3.103730297E1 +2.904913000E3,4.187502355E1 +2.905174000E3,3.591627686E1 +2.905452000E3,3.067277870E1 +2.905743000E3,2.813597523E1 +2.906004000E3,2.760542404E1 +2.906321000E3,3.327793113E1 +2.906579000E3,4.111963776E1 +2.906835000E3,4.309802180E1 +2.907113000E3,2.749088524E1 +2.907354000E3,2.269523459E1 +2.907657000E3,3.631225289E1 +2.907901000E3,4.146405590E1 +2.908156000E3,3.785670954E1 +2.908403000E3,4.498664409E1 +2.908675000E3,4.174614917E1 +2.908932000E3,4.632262643E1 +2.909189000E3,3.569839459E1 +2.909522000E3,4.635385444E1 +2.909802000E3,4.337190367E1 +2.910035000E3,3.796960383E1 +2.910287000E3,4.151951269E1 +2.910538000E3,4.245940710E1 +2.910795000E3,4.268454470E1 +2.911045000E3,4.280139929E1 +2.911335000E3,3.861780445E1 +2.911584000E3,4.028221299E1 +2.911885000E3,3.934408626E1 +2.912139000E3,3.091195323E1 +2.912386000E3,2.709027446E1 +2.912622000E3,2.721294148E1 +2.912915000E3,3.169063213E1 +2.913196000E3,3.663766462E1 +2.913461000E3,3.582442105E1 +2.913744000E3,2.742218375E1 +2.913990000E3,3.432349666E1 +2.914297000E3,4.586386591E1 +2.914575000E3,4.813383402E1 +2.914888000E3,5.016441505E1 +2.915190000E3,4.132593749E1 +2.915481000E3,3.992883324E1 +2.915827000E3,3.713218942E1 +2.916087000E3,4.862036940E1 +2.916351000E3,4.985137398E1 +2.916622000E3,5.126616609E1 +2.916881000E3,4.180876614E1 +2.917157000E3,4.057128207E1 +2.917418000E3,3.994520906E1 +2.917681000E3,3.719846748E1 +2.917964000E3,4.377214072E1 +2.918264000E3,4.081140664E1 +2.918518000E3,4.149712935E1 +2.918784000E3,3.965801174E1 +2.919127000E3,3.499332266E1 +2.919415000E3,3.454976163E1 +2.919745000E3,3.801205804E1 +2.920003000E3,4.266330834E1 +2.920244000E3,3.704497233E1 +2.920548000E3,3.869800412E1 +2.920840000E3,3.880762608E1 +2.921081000E3,3.967826348E1 +2.921325000E3,4.387098551E1 +2.921573000E3,3.795523909E1 +2.921876000E3,3.884773193E1 +2.922122000E3,3.949919351E1 +2.922481000E3,3.549368996E1 +2.922774000E3,5.176437750E1 +2.923023000E3,4.673969779E1 +2.923306000E3,3.729614967E1 +2.923573000E3,3.557242251E1 +2.923880000E3,5.351861504E1 +2.924155000E3,5.486661937E1 +2.924424000E3,5.693150230E1 +2.924735000E3,4.225245527E1 +2.924988000E3,4.082554353E1 +2.925252000E3,3.807826598E1 +2.925573000E3,3.587807510E1 +2.925935000E3,4.290242494E1 +2.926237000E3,3.960438869E1 +2.926496000E3,3.732088357E1 +2.926751000E3,3.216321546E1 +2.926991000E3,3.001846960E1 +2.927295000E3,3.634949804E1 +2.927531000E3,3.127042454E1 +2.927829000E3,3.158500209E1 +2.928073000E3,2.815993792E1 +2.928370000E3,2.793102526E1 +2.928613000E3,2.468786691E1 +2.928943000E3,2.345175993E1 +2.929256000E3,2.908559709E1 +2.929497000E3,2.580950455E1 +2.929819000E3,2.871707976E1 +2.930114000E3,2.977851279E1 +2.930374000E3,4.220437998E1 +2.930636000E3,3.122152770E1 +2.930945000E3,3.902308439E1 +2.931227000E3,3.648582434E1 +2.931474000E3,4.774090674E1 +2.931717000E3,4.487624905E1 +2.931963000E3,4.620728265E1 +2.932258000E3,4.011602626E1 +2.932585000E3,4.011469989E1 +2.932871000E3,4.531107143E1 +2.933117000E3,4.299757904E1 +2.933366000E3,4.255561828E1 +2.933662000E3,4.180851663E1 +2.933899000E3,3.354142728E1 +2.934139000E3,4.061788576E1 +2.934435000E3,3.190428864E1 +2.934678000E3,3.136545948E1 +2.934975000E3,3.172564299E1 +2.935227000E3,3.538616066E1 +2.935577000E3,3.227761247E1 +2.935826000E3,3.587578035E1 +2.936132000E3,2.830690319E1 +2.936391000E3,2.983281120E1 +2.936636000E3,3.198482114E1 +2.936936000E3,4.529436692E1 +2.937191000E3,3.904726622E1 +2.937498000E3,4.546792713E1 +2.937790000E3,4.178984789E1 +2.938055000E3,3.901507008E1 +2.938332000E3,3.530528642E1 +2.938634000E3,3.766035689E1 +2.939060000E3,5.595745424E1 +2.939318000E3,5.800941557E1 +2.939576000E3,5.061871726E1 +2.939836000E3,6.017617924E1 +2.940124000E3,5.889680612E1 +2.940380000E3,5.553527141E1 +2.940631000E3,4.982924060E1 +2.940889000E3,5.386899946E1 +2.941183000E3,5.511436312E1 +2.941477000E3,5.474658637E1 +2.941736000E3,5.669903896E1 +2.941985000E3,5.352207307E1 +2.942302000E3,5.089540084E1 +2.942556000E3,5.163069551E1 +2.942811000E3,4.946827448E1 +2.943144000E3,4.292332560E1 +2.943386000E3,4.769421745E1 +2.943625000E3,4.741300910E1 +2.943936000E3,4.918473310E1 +2.944182000E3,4.358732286E1 +2.944456000E3,4.338106770E1 +2.944722000E3,5.302068646E1 +2.945006000E3,4.800501219E1 +2.945370000E3,4.445792428E1 +2.945619000E3,3.768400599E1 +2.945867000E3,3.829540629E1 +2.946159000E3,3.766669508E1 +2.946411000E3,4.016839261E1 +2.946712000E3,4.041724233E1 +2.947009000E3,4.012217251E1 +2.947323000E3,3.568820570E1 +2.947568000E3,3.690839296E1 +2.947818000E3,4.813137033E1 +2.948084000E3,5.325274156E1 +2.948341000E3,5.892514859E1 +2.948730000E3,4.314585435E1 +2.948980000E3,4.049194134E1 +2.949257000E3,4.522053034E1 +2.949515000E3,4.263261915E1 +2.949826000E3,5.159034358E1 +2.950126000E3,4.094053529E1 +2.950370000E3,4.144504964E1 +2.950613000E3,4.584689520E1 +2.950933000E3,3.986259871E1 +2.951211000E3,5.835616238E1 +2.951492000E3,4.865922153E1 +2.951773000E3,4.646806952E1 +2.952049000E3,5.501145746E1 +2.952349000E3,5.395560549E1 +2.952606000E3,5.094776028E1 +2.952859000E3,5.987933082E1 +2.953123000E3,5.553863596E1 +2.953365000E3,6.056471643E1 +2.953626000E3,5.705129962E1 +2.953881000E3,5.620457969E1 +2.954143000E3,4.633104773E1 +2.954403000E3,4.542785483E1 +2.954666000E3,4.357363747E1 +2.954925000E3,5.905995366E1 +2.955255000E3,5.325307727E1 +2.955500000E3,6.730464031E1 +2.955795000E3,6.362836082E1 +2.956030000E3,6.057596417E1 +2.956332000E3,6.813918985E1 +2.956573000E3,6.403678903E1 +2.956871000E3,6.230635205E1 +2.957135000E3,6.746671531E1 +2.957401000E3,6.427695804E1 +2.957673000E3,5.206458526E1 +2.957933000E3,5.261265827E1 +2.958182000E3,4.877242183E1 +2.958552000E3,6.627461000E1 +2.958808000E3,6.741673158E1 +2.959062000E3,6.597614354E1 +2.959304000E3,6.540552328E1 +2.959551000E3,6.528289091E1 +2.959864000E3,5.830061674E1 +2.960121000E3,5.985112812E1 +2.960428000E3,6.090568068E1 +2.960720000E3,6.807446854E1 +2.960985000E3,6.930722199E1 +2.961226000E3,6.386100217E1 +2.961579000E3,6.028451745E1 +2.961849000E3,6.477814340E1 +2.962132000E3,6.837046944E1 +2.962373000E3,6.647209363E1 +2.962660000E3,6.694202205E1 +2.962967000E3,6.648756695E1 +2.963231000E3,6.482625001E1 +2.963518000E3,7.095796361E1 +2.963775000E3,6.454417662E1 +2.964062000E3,6.533171518E1 +2.964339000E3,6.471819922E1 +2.964629000E3,5.679367810E1 +2.964962000E3,5.573913208E1 +2.965271000E3,6.251351498E1 +2.965502000E3,6.071427502E1 +2.965745000E3,6.212696498E1 +2.966049000E3,5.601947939E1 +2.966292000E3,5.543203731E1 +2.966544000E3,5.440105204E1 +2.966807000E3,5.169354717E1 +2.967114000E3,5.098574914E1 +2.967354000E3,4.778774527E1 +2.967603000E3,5.527018336E1 +2.967874000E3,5.069142516E1 +2.968220000E3,5.540354927E1 +2.968470000E3,5.388190573E1 +2.968725000E3,5.648678631E1 +2.968994000E3,6.195289166E1 +2.969259000E3,5.924073062E1 +2.969526000E3,5.554902217E1 +2.969797000E3,6.073047002E1 +2.970049000E3,5.750580172E1 +2.970375000E3,6.205206850E1 +2.970685000E3,5.892672487E1 +2.971008000E3,5.603539479E1 +2.971306000E3,5.380141597E1 +2.971609000E3,6.182570937E1 +2.971860000E3,5.755792598E1 +2.972120000E3,7.094637252E1 +2.972374000E3,7.220321333E1 +2.972688000E3,6.074903881E1 +2.972946000E3,5.132390204E1 +2.973203000E3,5.555176793E1 +2.973482000E3,5.082163203E1 +2.973746000E3,6.668022761E1 +2.974024000E3,6.951681150E1 +2.974257000E3,6.170353739E1 +2.974507000E3,6.191784425E1 +2.974845000E3,6.249884739E1 +2.975129000E3,6.139715498E1 +2.975385000E3,5.458109058E1 +2.975684000E3,6.285593412E1 +2.975925000E3,6.801445640E1 +2.976223000E3,6.762358149E1 +2.976454000E3,6.007212586E1 +2.976698000E3,6.176376027E1 +2.976998000E3,5.489351528E1 +2.977244000E3,6.419682450E1 +2.977544000E3,6.335879864E1 +2.977813000E3,6.346249627E1 +2.978071000E3,6.122721977E1 +2.978303000E3,6.269343112E1 +2.978564000E3,5.719207644E1 +2.978818000E3,6.209398004E1 +2.979085000E3,6.570545323E1 +2.979335000E3,6.443300698E1 +2.979582000E3,6.395479352E1 +2.979841000E3,6.285971298E1 +2.980091000E3,6.452411240E1 +2.980337000E3,6.648403811E1 +2.980638000E3,6.146510082E1 +2.980898000E3,6.178604521E1 +2.981191000E3,5.906416732E1 +2.981418000E3,6.139524316E1 +2.981668000E3,6.754933795E1 +2.981958000E3,5.804633278E1 +2.982221000E3,5.544285219E1 +2.982480000E3,5.252390700E1 +2.982741000E3,5.442974682E1 +2.983009000E3,5.886662164E1 +2.983270000E3,6.039421332E1 +2.983532000E3,5.984826425E1 +2.983780000E3,6.038747451E1 +2.984020000E3,5.836799318E1 +2.984266000E3,6.011457774E1 +2.984654000E3,6.086793857E1 +2.984928000E3,6.104684994E1 +2.985246000E3,6.081085188E1 +2.985504000E3,6.338602633E1 +2.985771000E3,6.224702903E1 +2.986040000E3,5.771788346E1 +2.986351000E3,5.832375863E1 +2.986657000E3,6.179808645E1 +2.986893000E3,6.074067698E1 +2.987188000E3,5.763905723E1 +2.987459000E3,5.411975455E1 +2.987698000E3,5.609082395E1 +2.988020000E3,5.838775534E1 +2.988261000E3,5.545934196E1 +2.988564000E3,5.818253650E1 +2.988803000E3,5.693365858E1 +2.989084000E3,5.747877452E1 +2.989394000E3,6.108654481E1 +2.989646000E3,6.109521888E1 +2.989952000E3,5.453216708E1 +2.990235000E3,5.325056065E1 +2.990530000E3,5.226229633E1 +2.990796000E3,5.566734434E1 +2.991153000E3,5.983192138E1 +2.991409000E3,5.902282422E1 +2.991712000E3,6.553978750E1 +2.991962000E3,6.323109208E1 +2.992210000E3,6.430699278E1 +2.992477000E3,6.439502996E1 +2.992769000E3,5.882379749E1 +2.993024000E3,7.076998945E1 +2.993317000E3,6.710088514E1 +2.993554000E3,6.332152683E1 +2.993846000E3,6.013348006E1 +2.994081000E3,6.492156154E1 +2.994361000E3,6.054189638E1 +2.994671000E3,5.878685209E1 +2.994911000E3,6.363988355E1 +2.995218000E3,6.266127576E1 +2.995513000E3,6.231860976E1 +2.995750000E3,6.770663238E1 +2.996056000E3,6.411706706E1 +2.996346000E3,6.607053327E1 +2.996592000E3,6.231837938E1 +2.996884000E3,6.235557028E1 +2.997130000E3,6.626149607E1 +2.997386000E3,6.897456616E1 +2.997721000E3,6.896820400E1 +2.997984000E3,5.708709076E1 +2.998260000E3,5.465136518E1 +2.998532000E3,6.136090841E1 +2.998792000E3,6.427324700E1 +2.999047000E3,5.922924051E1 +2.999308000E3,5.964993479E1 +2.999619000E3,5.937495043E1 +2.999910000E3,6.345321013E1 +3.000196000E3,6.558504608E1 +3.000438000E3,6.566442906E1 +3.000721000E3,6.596782674E1 +3.001048000E3,6.493210478E1 +3.001299000E3,6.778071085E1 +3.001554000E3,5.810398860E1 +3.001834000E3,6.461256831E1 +3.002084000E3,5.637103240E1 +3.002332000E3,6.244497501E1 +3.002633000E3,5.749162406E1 +3.002980000E3,6.268391580E1 +3.003246000E3,6.122193913E1 +3.003572000E3,6.467185898E1 +3.003877000E3,6.239318427E1 +3.004266000E3,6.708558966E1 +3.004573000E3,6.293492178E1 +3.004871000E3,6.169168265E1 +3.005129000E3,5.944912128E1 +3.005404000E3,5.631628075E1 +3.005704000E3,6.080609102E1 +3.005964000E3,6.424565764E1 +3.006250000E3,6.447415860E1 +3.006481000E3,6.606824769E1 +3.006756000E3,6.337387069E1 +3.007004000E3,6.294291386E1 +3.007286000E3,6.430484746E1 +3.007612000E3,6.091848593E1 +3.007867000E3,6.343837854E1 +3.008169000E3,5.978702761E1 +3.008432000E3,5.965865421E1 +3.008675000E3,5.540362761E1 +3.008918000E3,5.443572137E1 +3.009202000E3,6.171389250E1 +3.009446000E3,6.487192568E1 +3.009738000E3,5.958143908E1 +3.009983000E3,6.189834719E1 +3.010232000E3,5.752745917E1 +3.010489000E3,6.339873723E1 +3.010846000E3,6.127984243E1 +3.011144000E3,6.065194767E1 +3.011387000E3,6.253646864E1 +3.011646000E3,6.179753794E1 +3.011925000E3,6.231808205E1 +3.012153000E3,6.101579519E1 +3.012442000E3,5.876502421E1 +3.012737000E3,5.809905793E1 +3.013015000E3,5.695141293E1 +3.013301000E3,5.973139928E1 +3.013577000E3,6.007240820E1 +3.013839000E3,7.136453087E1 +3.014063000E3,7.173892024E1 +3.014315000E3,6.885425335E1 +3.014559000E3,6.110376355E1 +3.014808000E3,6.296723224E1 +3.015075000E3,6.021879294E1 +3.015327000E3,6.012811489E1 +3.015577000E3,6.282613373E1 +3.015850000E3,6.884549735E1 +3.016115000E3,6.913958233E1 +3.016397000E3,6.608409337E1 +3.016648000E3,6.437779633E1 +3.016896000E3,6.412579817E1 +3.017253000E3,6.408373459E1 +3.017500000E3,6.487828946E1 +3.017743000E3,6.281964754E1 +3.018003000E3,6.153697843E1 +3.018258000E3,6.503307442E1 +3.018512000E3,6.508021131E1 +3.018791000E3,5.910017780E1 +3.019028000E3,5.757469918E1 +3.019325000E3,5.762978005E1 +3.019573000E3,5.366611226E1 +3.019824000E3,5.708763529E1 +3.020086000E3,5.488621207E1 +3.020437000E3,5.826722905E1 +3.020695000E3,5.951373108E1 +3.020968000E3,6.130623452E1 +3.021217000E3,6.025771329E1 +3.021490000E3,5.280103891E1 +3.021737000E3,6.123009986E1 +3.022037000E3,6.404958762E1 +3.022328000E3,6.469373641E1 +3.022599000E3,6.283727611E1 +3.022840000E3,6.248869497E1 +3.023123000E3,6.767270030E1 +3.023363000E3,6.436289402E1 +3.023706000E3,6.007121161E1 +3.023992000E3,6.067397941E1 +3.024255000E3,6.005092329E1 +3.024513000E3,6.146229561E1 +3.024803000E3,6.214304530E1 +3.025060000E3,6.107977952E1 +3.025317000E3,6.268440106E1 +3.025560000E3,5.744048190E1 +3.025823000E3,6.080102592E1 +3.026092000E3,6.359394744E1 +3.026384000E3,6.219604097E1 +3.026685000E3,6.296073955E1 +3.026912000E3,6.243574530E1 +3.027190000E3,6.540426031E1 +3.027426000E3,7.038009166E1 +3.027684000E3,7.133800291E1 +3.027943000E3,6.847497315E1 +3.028214000E3,7.049817235E1 +3.028486000E3,6.555713643E1 +3.028748000E3,6.762942526E1 +3.029008000E3,6.780082040E1 +3.029264000E3,6.644646205E1 +3.029533000E3,7.066497540E1 +3.029800000E3,6.700863421E1 +3.030174000E3,6.263767412E1 +3.030459000E3,5.937975562E1 +3.030697000E3,6.189133018E1 +3.030958000E3,6.479748496E1 +3.031218000E3,6.070421224E1 +3.031488000E3,5.567295684E1 +3.031754000E3,6.162939414E1 +3.032026000E3,6.462556380E1 +3.032293000E3,6.300561819E1 +3.032553000E3,6.320528504E1 +3.032852000E3,6.205536878E1 +3.033102000E3,7.179598993E1 +3.033490000E3,6.907149718E1 +3.033750000E3,6.110443799E1 +3.034008000E3,5.743025653E1 +3.034257000E3,5.714646515E1 +3.034505000E3,6.193634179E1 +3.034762000E3,6.511685208E1 +3.035034000E3,6.647840023E1 +3.035277000E3,6.637602928E1 +3.035534000E3,6.208743290E1 +3.035873000E3,6.158502662E1 +3.036127000E3,6.138896352E1 +3.036392000E3,5.988342330E1 +3.036737000E3,5.834272912E1 +3.036998000E3,6.504474047E1 +3.037253000E3,5.801637483E1 +3.037569000E3,6.208073459E1 +3.037831000E3,6.555093843E1 +3.038084000E3,6.686352963E1 +3.038356000E3,6.398821865E1 +3.038638000E3,6.053541888E1 +3.038927000E3,5.509282051E1 +3.039228000E3,6.213274835E1 +3.039473000E3,6.149105368E1 +3.039745000E3,6.097957376E1 +3.040056000E3,6.313145073E1 +3.040300000E3,6.749857058E1 +3.040549000E3,6.031561589E1 +3.040852000E3,5.991948868E1 +3.041110000E3,6.228314687E1 +3.041358000E3,6.281493679E1 +3.041621000E3,6.031124820E1 +3.041926000E3,6.035954468E1 +3.042177000E3,6.230627050E1 +3.042448000E3,5.381586458E1 +3.042741000E3,6.032611045E1 +3.043026000E3,5.796046788E1 +3.043304000E3,6.286261594E1 +3.043605000E3,6.188894569E1 +3.043848000E3,6.196336480E1 +3.044091000E3,6.506902622E1 +3.044345000E3,6.547913264E1 +3.044589000E3,6.701681380E1 +3.044849000E3,6.398074775E1 +3.045095000E3,6.102355933E1 +3.045350000E3,6.546609328E1 +3.045598000E3,6.626677347E1 +3.045845000E3,6.212155235E1 +3.046098000E3,6.475032486E1 +3.046433000E3,6.469401418E1 +3.046698000E3,6.335899573E1 +3.046970000E3,5.799459631E1 +3.047267000E3,5.777430210E1 +3.047527000E3,6.228044606E1 +3.047785000E3,5.521572273E1 +3.048044000E3,5.312506195E1 +3.048316000E3,5.877400717E1 +3.048592000E3,6.239358597E1 +3.048842000E3,6.019315355E1 +3.049164000E3,5.944515023E1 +3.049418000E3,6.571719967E1 +3.049752000E3,5.906077781E1 +3.050005000E3,6.269931225E1 +3.050242000E3,6.329267329E1 +3.050532000E3,6.094692628E1 +3.050797000E3,6.137608503E1 +3.051055000E3,6.019630450E1 +3.051299000E3,5.959056092E1 +3.051551000E3,6.195653625E1 +3.051802000E3,5.997942431E1 +3.052044000E3,6.071988649E1 +3.052348000E3,6.146559433E1 +3.052605000E3,6.320542640E1 +3.052903000E3,6.301314639E1 +3.053133000E3,6.491013087E1 +3.053386000E3,5.374424399E1 +3.053632000E3,5.337930652E1 +3.053925000E3,5.830420592E1 +3.054167000E3,5.827724976E1 +3.054414000E3,5.413373264E1 +3.054713000E3,5.438904566E1 +3.054952000E3,5.478972153E1 +3.055245000E3,6.026125791E1 +3.055545000E3,6.377000784E1 +3.055792000E3,6.273059884E1 +3.056116000E3,6.164463909E1 +3.056426000E3,6.310484015E1 +3.056665000E3,6.191865333E1 +3.056974000E3,6.044005004E1 +3.057225000E3,5.723160495E1 +3.057532000E3,6.482171923E1 +3.057799000E3,6.373654624E1 +3.058097000E3,6.579319958E1 +3.058333000E3,6.717439766E1 +3.058632000E3,6.244987186E1 +3.058874000E3,5.911459441E1 +3.059119000E3,6.246625617E1 +3.059514000E3,6.061929027E1 +3.059786000E3,6.141894857E1 +3.060044000E3,6.531006136E1 +3.060311000E3,6.745420282E1 +3.060564000E3,6.305040539E1 +3.060809000E3,6.250223063E1 +3.061063000E3,5.984183740E1 +3.061365000E3,6.201500936E1 +3.061610000E3,6.171968159E1 +3.061853000E3,5.636652524E1 +3.062137000E3,5.937450988E1 +3.062405000E3,5.424162977E1 +3.062724000E3,5.577353705E1 +3.062968000E3,6.265208868E1 +3.063225000E3,6.754657095E1 +3.063470000E3,6.259832443E1 +3.063731000E3,5.846954403E1 +3.063975000E3,5.735719718E1 +3.064220000E3,5.614657426E1 +3.064460000E3,5.493678071E1 +3.064711000E3,6.175770153E1 +3.064961000E3,6.502893325E1 +3.065266000E3,6.372557142E1 +3.065562000E3,6.165604672E1 +3.065921000E3,6.202265536E1 +3.066181000E3,5.894659424E1 +3.066427000E3,5.516515279E1 +3.066669000E3,5.227763917E1 +3.066911000E3,5.331294555E1 +3.067166000E3,5.535383534E1 +3.067460000E3,5.490405248E1 +3.067721000E3,5.927902794E1 +3.068030000E3,6.001209348E1 +3.068288000E3,5.925707402E1 +3.068553000E3,6.116769528E1 +3.068848000E3,5.907075037E1 +3.069160000E3,5.402384091E1 +3.069467000E3,6.078433547E1 +3.069706000E3,6.064305090E1 +3.069991000E3,6.099922555E1 +3.070247000E3,6.081028216E1 +3.070500000E3,6.857342881E1 +3.070795000E3,6.830085683E1 +3.071035000E3,7.092929468E1 +3.071334000E3,6.670654987E1 +3.071580000E3,6.198358410E1 +3.071845000E3,6.029427505E1 +3.072216000E3,6.271100503E1 +3.072476000E3,6.548403896E1 +3.072709000E3,6.655140024E1 +3.072958000E3,6.872933885E1 +3.073221000E3,6.840034062E1 +3.073524000E3,6.189262665E1 +3.073801000E3,6.315516618E1 +3.074029000E3,6.431689152E1 +3.074282000E3,7.008635825E1 +3.074531000E3,6.529488526E1 +3.074781000E3,5.362885622E1 +3.075079000E3,6.174622467E1 +3.075321000E3,6.106059522E1 +3.075569000E3,6.727558853E1 +3.075841000E3,6.068477373E1 +3.076089000E3,6.224550385E1 +3.076358000E3,6.049387981E1 +3.076618000E3,5.554290122E1 +3.076868000E3,5.232623619E1 +3.077136000E3,5.715980006E1 +3.077434000E3,6.112308912E1 +3.077738000E3,5.964598426E1 +3.077997000E3,5.774993649E1 +3.078301000E3,5.930552673E1 +3.078632000E3,6.204668908E1 +3.078903000E3,6.135182684E1 +3.079234000E3,6.010535577E1 +3.079530000E3,5.612975229E1 +3.079846000E3,5.894789721E1 +3.080130000E3,6.424282153E1 +3.080395000E3,6.696093787E1 +3.080696000E3,5.929656512E1 +3.080931000E3,5.577162965E1 +3.081168000E3,6.096321541E1 +3.081415000E3,6.147204445E1 +3.081708000E3,6.518353223E1 +3.082066000E3,6.565001970E1 +3.082347000E3,6.152216198E1 +3.082591000E3,6.232488129E1 +3.082884000E3,6.450829181E1 +3.083131000E3,6.727741702E1 +3.083373000E3,6.596172391E1 +3.083615000E3,6.588974420E1 +3.083909000E3,6.215985231E1 +3.084146000E3,5.417797447E1 +3.084444000E3,5.776086644E1 +3.084736000E3,6.145598006E1 +3.085067000E3,6.705675690E1 +3.085353000E3,7.032609091E1 +3.085621000E3,6.942809802E1 +3.085926000E3,6.673219093E1 +3.086170000E3,5.874483463E1 +3.086457000E3,6.163530440E1 +3.086730000E3,5.863155738E1 +3.086955000E3,5.804604701E1 +3.087247000E3,7.202263239E1 +3.087542000E3,6.907595594E1 +3.087796000E3,7.104760035E1 +3.088063000E3,6.060670654E1 +3.088371000E3,6.409876160E1 +3.088642000E3,6.504332531E1 +3.088891000E3,6.050178076E1 +3.089172000E3,5.988548041E1 +3.089448000E3,6.419311516E1 +3.089715000E3,6.072209436E1 +3.089992000E3,6.148544930E1 +3.090256000E3,6.667985585E1 +3.090551000E3,6.360479893E1 +3.090829000E3,6.675347002E1 +3.091081000E3,6.585951744E1 +3.091337000E3,5.998998345E1 +3.091582000E3,7.213751425E1 +3.091973000E3,7.002319175E1 +3.092225000E3,6.554991346E1 +3.092495000E3,5.438962824E1 +3.092757000E3,5.806427109E1 +3.093010000E3,5.611571138E1 +3.093290000E3,5.427298566E1 +3.093553000E3,6.332676554E1 +3.093801000E3,6.191283999E1 +3.094088000E3,6.222056485E1 +3.094383000E3,6.679558422E1 +3.094660000E3,6.396349695E1 +3.094980000E3,6.335657582E1 +3.095321000E3,6.368682935E1 +3.095574000E3,6.239728447E1 +3.095829000E3,6.560913932E1 +3.096083000E3,6.288470186E1 +3.096327000E3,6.063834800E1 +3.096611000E3,5.698542980E1 +3.096866000E3,6.214573666E1 +3.097125000E3,6.108001307E1 +3.097382000E3,6.098898235E1 +3.097639000E3,6.935379750E1 +3.097944000E3,6.076333803E1 +3.098235000E3,5.747447310E1 +3.098595000E3,5.896750888E1 +3.098845000E3,6.428262322E1 +3.099146000E3,6.073561603E1 +3.099435000E3,5.610862272E1 +3.099679000E3,5.808393750E1 +3.099971000E3,6.306244141E1 +3.100214000E3,6.493760740E1 +3.100511000E3,5.964091377E1 +3.100753000E3,5.949423253E1 +3.100995000E3,6.324186751E1 +3.101237000E3,6.294719776E1 +3.101481000E3,6.618420708E1 +3.101805000E3,6.039251647E1 +3.102105000E3,6.883376735E1 +3.102388000E3,6.215701199E1 +3.102635000E3,6.251944475E1 +3.102926000E3,6.387718652E1 +3.103175000E3,6.262879933E1 +3.103469000E3,6.094246273E1 +3.103717000E3,5.780442917E1 +3.104010000E3,5.805018882E1 +3.104245000E3,6.073911170E1 +3.104537000E3,5.820155990E1 +3.104880000E3,5.691870737E1 +3.105139000E3,5.609187778E1 +3.105418000E3,5.368790307E1 +3.105673000E3,5.733127796E1 +3.105933000E3,5.834617124E1 +3.106196000E3,5.665251568E1 +3.106447000E3,5.839993992E1 +3.106707000E3,5.765825797E1 +3.106989000E3,6.346036236E1 +3.107241000E3,6.088974139E1 +3.107536000E3,5.623231578E1 +3.107836000E3,5.905990454E1 +3.108208000E3,5.913546091E1 +3.108462000E3,5.921957697E1 +3.108732000E3,6.403378055E1 +3.109010000E3,6.829473891E1 +3.109237000E3,6.866131452E1 +3.109530000E3,5.759864554E1 +3.109769000E3,5.216447932E1 +3.110067000E3,5.887622687E1 +3.110356000E3,5.912152229E1 +3.110621000E3,6.343631440E1 +3.110862000E3,6.110189356E1 +3.111105000E3,5.925249209E1 +3.111441000E3,5.583559168E1 +3.111708000E3,6.397874973E1 +3.112049000E3,5.864630935E1 +3.112314000E3,5.876030726E1 +3.112620000E3,5.558460131E1 +3.112980000E3,5.336927775E1 +3.113232000E3,5.351895645E1 +3.113515000E3,4.932805120E1 +3.113763000E3,6.323075662E1 +3.114057000E3,6.375401647E1 +3.114318000E3,6.430798012E1 +3.114651000E3,6.745313705E1 +3.114909000E3,6.370697195E1 +3.115204000E3,6.719832935E1 +3.115517000E3,6.353352979E1 +3.115816000E3,6.421660294E1 +3.116074000E3,6.666449428E1 +3.116372000E3,6.209745804E1 +3.116612000E3,5.853853683E1 +3.116911000E3,6.153177442E1 +3.117151000E3,6.465277685E1 +3.117439000E3,6.054074617E1 +3.117698000E3,5.762180605E1 +3.118029000E3,5.904912096E1 +3.118292000E3,6.054469105E1 +3.118547000E3,6.570885599E1 +3.118854000E3,6.686989978E1 +3.119103000E3,6.506823644E1 +3.119359000E3,5.780133308E1 +3.119610000E3,5.983707630E1 +3.119896000E3,6.102798325E1 +3.120167000E3,5.940835035E1 +3.120446000E3,6.154008300E1 +3.120717000E3,6.031178539E1 +3.120969000E3,6.222997321E1 +3.121291000E3,6.676268308E1 +3.121532000E3,6.244629438E1 +3.121778000E3,6.014719673E1 +3.122038000E3,6.351124664E1 +3.122317000E3,5.786579019E1 +3.122607000E3,5.704033688E1 +3.122864000E3,5.941823253E1 +3.123160000E3,6.366298469E1 +3.123429000E3,6.545330590E1 +3.123678000E3,6.206143443E1 +3.123932000E3,6.250040348E1 +3.124250000E3,6.193784317E1 +3.124582000E3,6.679802083E1 +3.124888000E3,6.239911876E1 +3.125141000E3,6.227743005E1 +3.125407000E3,5.930162190E1 +3.125655000E3,5.692493613E1 +3.125897000E3,6.100851678E1 +3.126155000E3,6.356932883E1 +3.126470000E3,6.583742229E1 +3.126735000E3,6.828531785E1 +3.127049000E3,6.744954014E1 +3.127349000E3,6.892448306E1 +3.127620000E3,6.312172108E1 +3.127885000E3,6.549450530E1 +3.128150000E3,6.274114245E1 +3.128434000E3,5.987443555E1 +3.128694000E3,5.754092402E1 +3.128967000E3,6.140483336E1 +3.129224000E3,5.793735580E1 +3.129483000E3,5.640840091E1 +3.129735000E3,7.068460790E1 +3.130042000E3,6.831622259E1 +3.130308000E3,6.661131327E1 +3.130563000E3,7.032191033E1 +3.130897000E3,6.429012882E1 +3.131166000E3,6.890779868E1 +3.131427000E3,6.812897599E1 +3.131726000E3,6.440583932E1 +3.132039000E3,6.371305855E1 +3.132310000E3,6.071113649E1 +3.132582000E3,6.356904702E1 +3.132834000E3,6.335195410E1 +3.133078000E3,5.922748305E1 +3.133357000E3,5.790290676E1 +3.133581000E3,6.067150466E1 +3.133827000E3,5.936438225E1 +3.134075000E3,5.651144024E1 +3.134312000E3,5.707156804E1 +3.134564000E3,6.256442790E1 +3.134822000E3,5.680653319E1 +3.135099000E3,6.386946987E1 +3.135341000E3,6.183817556E1 +3.135588000E3,5.791592939E1 +3.135843000E3,5.415500200E1 +3.136159000E3,5.828393923E1 +3.136402000E3,5.584102234E1 +3.136645000E3,5.843965538E1 +3.136922000E3,6.032067675E1 +3.137231000E3,6.082235855E1 +3.137514000E3,6.216335250E1 +3.137763000E3,6.576895249E1 +3.138052000E3,5.935628673E1 +3.138348000E3,5.697436057E1 +3.138590000E3,6.713499986E1 +3.138833000E3,5.996032355E1 +3.139071000E3,6.566814076E1 +3.139366000E3,6.469315039E1 +3.139607000E3,6.414816039E1 +3.139901000E3,6.238348704E1 +3.140144000E3,5.975478602E1 +3.140477000E3,5.617333113E1 +3.140789000E3,6.140881460E1 +3.141038000E3,5.760925345E1 +3.141323000E3,5.813474075E1 +3.141616000E3,6.190304914E1 +3.141899000E3,5.853813516E1 +3.142123000E3,6.019478920E1 +3.142387000E3,5.824830032E1 +3.142639000E3,6.031650371E1 +3.142898000E3,5.874305926E1 +3.143211000E3,6.365997735E1 +3.143459000E3,6.182267241E1 +3.143814000E3,6.153305629E1 +3.144076000E3,6.040235966E1 +3.144345000E3,6.279707978E1 +3.144591000E3,6.261441373E1 +3.144837000E3,5.722591859E1 +3.145082000E3,5.791919274E1 +3.145387000E3,6.142016587E1 +3.145678000E3,5.996802308E1 +3.145994000E3,5.761245992E1 +3.146269000E3,5.915341256E1 +3.146531000E3,5.679987844E1 +3.146814000E3,6.228452904E1 +3.147163000E3,6.038592359E1 +3.147440000E3,6.662509726E1 +3.147705000E3,5.864713600E1 +3.147961000E3,6.383827006E1 +3.148228000E3,6.445939632E1 +3.148543000E3,6.206597752E1 +3.148800000E3,6.082056407E1 +3.149046000E3,5.872798480E1 +3.149340000E3,5.792404132E1 +3.149585000E3,5.917409009E1 +3.149845000E3,5.619795947E1 +3.150164000E3,6.447379623E1 +3.150501000E3,6.336546747E1 +3.150798000E3,6.022605646E1 +3.151059000E3,5.837139298E1 +3.151360000E3,5.721847889E1 +3.151614000E3,7.085699981E1 +3.151908000E3,6.031233854E1 +3.152206000E3,6.170839562E1 +3.152452000E3,6.336115962E1 +3.152697000E3,6.732286145E1 +3.152943000E3,6.043278366E1 +3.153235000E3,5.822950572E1 +3.153537000E3,6.155234216E1 +3.153813000E3,5.671966020E1 +3.154078000E3,5.613348243E1 +3.154333000E3,5.384913785E1 +3.154580000E3,5.739778382E1 +3.154869000E3,5.617144196E1 +3.155103000E3,5.699346940E1 +3.155351000E3,6.356393037E1 +3.155653000E3,5.483372318E1 +3.155949000E3,5.806865262E1 +3.156195000E3,5.725879338E1 +3.156459000E3,5.708272088E1 +3.156776000E3,5.736330762E1 +3.157028000E3,5.620178265E1 +3.157280000E3,5.557503250E1 +3.157521000E3,6.379766868E1 +3.157864000E3,6.175462639E1 +3.158113000E3,5.970375584E1 +3.158365000E3,5.482220327E1 +3.158625000E3,6.094938302E1 +3.158872000E3,6.189076140E1 +3.159128000E3,6.365906369E1 +3.159385000E3,6.365252593E1 +3.159699000E3,6.421784723E1 +3.160039000E3,5.952347777E1 +3.160337000E3,6.582170091E1 +3.160643000E3,6.400621400E1 +3.160905000E3,5.982923632E1 +3.161162000E3,5.912958512E1 +3.161449000E3,5.744161350E1 +3.161722000E3,6.208953034E1 +3.161984000E3,6.743490019E1 +3.162228000E3,5.893358785E1 +3.162506000E3,6.260442429E1 +3.162777000E3,6.054589944E1 +3.163072000E3,5.958101250E1 +3.163380000E3,5.756716970E1 +3.163623000E3,5.897741262E1 +3.163916000E3,5.199350029E1 +3.164173000E3,5.607364633E1 +3.164444000E3,6.846587546E1 +3.164756000E3,5.833953537E1 +3.165011000E3,6.699601536E1 +3.165255000E3,6.024033326E1 +3.165530000E3,5.636786936E1 +3.165825000E3,5.917346905E1 +3.166077000E3,5.684739711E1 +3.166343000E3,5.441684119E1 +3.166607000E3,5.708423030E1 +3.166871000E3,5.726160097E1 +3.167212000E3,5.795085756E1 +3.167513000E3,5.359033433E1 +3.167800000E3,5.481028168E1 +3.168051000E3,5.771426852E1 +3.168321000E3,5.720698183E1 +3.168574000E3,6.029484328E1 +3.168847000E3,6.594273179E1 +3.169141000E3,5.814954146E1 +3.169451000E3,5.741553332E1 +3.169717000E3,5.474949866E1 +3.170064000E3,5.858087337E1 +3.170388000E3,5.901398101E1 +3.170689000E3,6.599046976E1 +3.170942000E3,6.777823262E1 +3.171184000E3,6.339704259E1 +3.171437000E3,5.678237753E1 +3.171694000E3,6.067324941E1 +3.171975000E3,6.337570500E1 +3.172215000E3,6.060254578E1 +3.172509000E3,6.511602204E1 +3.172792000E3,6.491523998E1 +3.173086000E3,6.236437487E1 +3.173442000E3,6.132637014E1 +3.173725000E3,5.575670785E1 +3.173997000E3,5.450541115E1 +3.174243000E3,5.816223835E1 +3.174516000E3,5.991084873E1 +3.174771000E3,5.959264792E1 +3.175022000E3,6.001504494E1 +3.175268000E3,5.794233494E1 +3.175510000E3,5.875384007E1 +3.175752000E3,6.582497874E1 +3.176001000E3,6.385809704E1 +3.176310000E3,6.575292490E1 +3.176700000E3,6.328122862E1 +3.176947000E3,6.160374932E1 +3.177205000E3,6.233605233E1 +3.177480000E3,5.746120395E1 +3.177733000E3,5.491961653E1 +3.178002000E3,5.346590976E1 +3.178308000E3,4.910433719E1 +3.178598000E3,5.548086035E1 +3.178876000E3,5.834728013E1 +3.179129000E3,5.722852381E1 +3.179407000E3,5.371032540E1 +3.179686000E3,5.375017527E1 +3.180066000E3,5.741446005E1 +3.180325000E3,5.595914402E1 +3.180624000E3,5.784989425E1 +3.180867000E3,5.818330240E1 +3.181112000E3,5.651638359E1 +3.181407000E3,5.400925398E1 +3.181645000E3,5.134681346E1 +3.181939000E3,5.540645654E1 +3.182189000E3,5.603348674E1 +3.182489000E3,5.612576596E1 +3.182726000E3,5.412821683E1 +3.183072000E3,5.364995955E1 +3.183373000E3,5.685067634E1 +3.183631000E3,5.292396423E1 +3.183913000E3,5.037305724E1 +3.184139000E3,5.458652507E1 +3.184386000E3,5.336216390E1 +3.184625000E3,5.355204553E1 +3.184861000E3,5.798216811E1 +3.185170000E3,5.037998219E1 +3.185412000E3,5.253320042E1 +3.185661000E3,5.864558083E1 +3.185944000E3,5.568855775E1 +3.186307000E3,6.065674046E1 +3.186594000E3,5.486017232E1 +3.186846000E3,5.354898396E1 +3.187128000E3,5.606629368E1 +3.187373000E3,5.887335608E1 +3.187646000E3,5.932986575E1 +3.187996000E3,5.618144782E1 +3.188254000E3,5.279151533E1 +3.188538000E3,5.980979660E1 +3.188819000E3,5.959008295E1 +3.189058000E3,5.757326838E1 +3.189324000E3,5.814251633E1 +3.189681000E3,6.715432083E1 +3.189929000E3,5.659786492E1 +3.190183000E3,6.813933576E1 +3.190493000E3,6.423896785E1 +3.190762000E3,6.115594562E1 +3.191063000E3,6.466877383E1 +3.191295000E3,6.400176112E1 +3.191543000E3,6.061189134E1 +3.191813000E3,6.334758009E1 +3.192062000E3,6.268892194E1 +3.192384000E3,6.255649695E1 +3.192688000E3,6.440152216E1 +3.193095000E3,6.083356984E1 +3.193368000E3,5.702207605E1 +3.193630000E3,6.129862703E1 +3.193931000E3,6.511359313E1 +3.194208000E3,6.424113032E1 +3.194458000E3,6.277957456E1 +3.194751000E3,6.067489213E1 +3.195007000E3,6.044409325E1 +3.195267000E3,5.902485869E1 +3.195523000E3,5.940450479E1 +3.195769000E3,5.629667180E1 +3.196103000E3,5.773687048E1 +3.196362000E3,5.275604571E1 +3.196676000E3,5.321996877E1 +3.196932000E3,4.952922772E1 +3.197191000E3,5.411849627E1 +3.197458000E3,5.575997519E1 +3.197718000E3,5.782402980E1 +3.197982000E3,6.092045522E1 +3.198228000E3,6.504329265E1 +3.198474000E3,5.972589974E1 +3.198713000E3,5.816644178E1 +3.198958000E3,6.190720604E1 +3.199249000E3,6.026051864E1 +3.199481000E3,6.064697026E1 +3.199744000E3,5.715218400E1 +3.200003000E3,5.509276249E1 +3.200281000E3,5.035485844E1 +3.200607000E3,5.745123346E1 +3.200874000E3,5.874041571E1 +3.201157000E3,6.540993071E1 +3.201407000E3,6.592699897E1 +3.201730000E3,5.826687879E1 +3.201982000E3,5.966898415E1 +3.202228000E3,5.928022084E1 +3.202546000E3,5.492659239E1 +3.202811000E3,5.843773228E1 +3.203091000E3,5.615478265E1 +3.203365000E3,5.378265559E1 +3.203611000E3,5.724493737E1 +3.203868000E3,5.517839982E1 +3.204137000E3,5.166422622E1 +3.204439000E3,5.966362579E1 +3.204692000E3,5.837831137E1 +3.204952000E3,5.873474045E1 +3.205216000E3,6.025432286E1 +3.205460000E3,5.709891269E1 +3.205710000E3,5.946766606E1 +3.206062000E3,5.575402329E1 +3.206367000E3,5.597615265E1 +3.206620000E3,5.417374311E1 +3.206869000E3,5.785505194E1 +3.207152000E3,5.973144393E1 +3.207405000E3,5.494944595E1 +3.207684000E3,5.859159641E1 +3.207982000E3,5.909726368E1 +3.208273000E3,6.221796591E1 +3.208541000E3,6.248597715E1 +3.208787000E3,6.143432195E1 +3.209043000E3,5.767415987E1 +3.209357000E3,6.087003136E1 +3.209636000E3,5.816954701E1 +3.209920000E3,5.644196424E1 +3.210232000E3,5.726504339E1 +3.210505000E3,5.384487818E1 +3.210769000E3,6.092886049E1 +3.211044000E3,5.910647270E1 +3.211306000E3,5.855040927E1 +3.211560000E3,6.886189365E1 +3.211803000E3,6.193548709E1 +3.212075000E3,5.895667088E1 +3.212320000E3,5.613734816E1 +3.212669000E3,6.365011223E1 +3.212934000E3,6.616065582E1 +3.213195000E3,4.911720228E1 +3.213460000E3,5.429539168E1 +3.213713000E3,5.374714305E1 +3.213991000E3,5.505703483E1 +3.214231000E3,5.216197587E1 +3.214486000E3,6.958974683E1 +3.214787000E3,6.410499727E1 +3.215047000E3,5.795707420E1 +3.215308000E3,6.210641451E1 +3.215581000E3,5.724864620E1 +3.215943000E3,5.588397230E1 +3.216221000E3,5.281586206E1 +3.216477000E3,5.616597876E1 +3.216735000E3,7.016181845E1 +3.216992000E3,7.008234703E1 +3.217238000E3,6.883905131E1 +3.217482000E3,6.039428517E1 +3.217722000E3,6.572225500E1 +3.217971000E3,6.862082655E1 +3.218221000E3,6.392739620E1 +3.218481000E3,6.757625304E1 +3.218798000E3,6.468895575E1 +3.219137000E3,5.941097234E1 +3.219443000E3,6.639331379E1 +3.219715000E3,6.512137194E1 +3.219985000E3,6.137345425E1 +3.220244000E3,6.566739727E1 +3.220494000E3,5.684090738E1 +3.220758000E3,4.865476042E1 +3.221022000E3,5.571447424E1 +3.221324000E3,5.050200483E1 +3.221601000E3,5.262698993E1 +3.221858000E3,5.385544431E1 +3.222185000E3,5.793526709E1 +3.222548000E3,5.957102097E1 +3.222796000E3,5.026005559E1 +3.223068000E3,5.164515600E1 +3.223344000E3,6.575405490E1 +3.223598000E3,6.925353270E1 +3.223876000E3,5.909751181E1 +3.224152000E3,5.561020058E1 +3.224416000E3,5.257890354E1 +3.224662000E3,5.262446891E1 +3.224954000E3,5.599583257E1 +3.225202000E3,5.286294623E1 +3.225483000E3,5.049109924E1 +3.225830000E3,6.154494550E1 +3.226096000E3,5.433068412E1 +3.226350000E3,5.256602683E1 +3.226652000E3,5.283535150E1 +3.226989000E3,5.811852242E1 +3.227251000E3,5.842389129E1 +3.227505000E3,5.524471208E1 +3.227782000E3,6.207780754E1 +3.228053000E3,6.165130850E1 +3.228302000E3,5.818085510E1 +3.228557000E3,5.646455559E1 +3.228823000E3,5.903487317E1 +3.229201000E3,5.460588060E1 +3.229471000E3,5.534537953E1 +3.229720000E3,5.492103159E1 +3.229976000E3,5.474982433E1 +3.230276000E3,6.311967749E1 +3.230531000E3,6.144237593E1 +3.230845000E3,6.204497775E1 +3.231123000E3,6.192920277E1 +3.231382000E3,6.726064707E1 +3.231675000E3,5.951322284E1 +3.231970000E3,5.620608761E1 +3.232324000E3,5.597726308E1 +3.232555000E3,5.737347613E1 +3.232845000E3,5.515502781E1 +3.233172000E3,5.977186730E1 +3.233435000E3,6.131606000E1 +3.233742000E3,5.610580070E1 +3.234000000E3,5.978218601E1 +3.234272000E3,6.319970701E1 +3.234581000E3,5.608562509E1 +3.234862000E3,6.169746582E1 +3.235159000E3,6.105762669E1 +3.235416000E3,5.369522011E1 +3.235667000E3,6.580487109E1 +3.235906000E3,5.797374086E1 +3.236200000E3,6.981267784E1 +3.236445000E3,6.229515865E1 +3.236695000E3,6.858181426E1 +3.236976000E3,5.740787399E1 +3.237218000E3,5.455964692E1 +3.237457000E3,7.204325578E1 +3.237720000E3,6.142914611E1 +3.238013000E3,5.768794211E1 +3.238280000E3,5.732491467E1 +3.238580000E3,5.793744264E1 +3.238882000E3,5.626325471E1 +3.239149000E3,5.661724856E1 +3.239424000E3,6.969605219E1 +3.239726000E3,6.482965407E1 +3.239976000E3,5.947270091E1 +3.240278000E3,5.913422796E1 +3.240576000E3,5.630232959E1 +3.240877000E3,5.956366293E1 +3.241128000E3,6.177688280E1 +3.241391000E3,5.851951662E1 +3.241664000E3,5.959787493E1 +3.241944000E3,5.765523372E1 +3.242310000E3,5.961443978E1 +3.242602000E3,5.811194000E1 +3.242910000E3,5.765320401E1 +3.243188000E3,6.631148602E1 +3.243420000E3,6.916377121E1 +3.243673000E3,6.435158828E1 +3.243925000E3,6.486926440E1 +3.244170000E3,5.506348984E1 +3.244475000E3,6.702899260E1 +3.244772000E3,6.244838658E1 +3.245003000E3,6.057959417E1 +3.245328000E3,6.103137126E1 +3.245581000E3,5.723671640E1 +3.245864000E3,5.125127512E1 +3.246123000E3,5.748187394E1 +3.246395000E3,6.148075018E1 +3.246669000E3,6.226010686E1 +3.246940000E3,5.273573389E1 +3.247233000E3,5.462141876E1 +3.247482000E3,5.946160846E1 +3.247728000E3,6.623014757E1 +3.248041000E3,5.823129903E1 +3.248289000E3,5.689561843E1 +3.248538000E3,5.851473913E1 +3.248910000E3,5.778207994E1 +3.249187000E3,6.109108533E1 +3.249462000E3,6.368024039E1 +3.249726000E3,6.527718864E1 +3.249983000E3,5.855658653E1 +3.250281000E3,5.718860903E1 +3.250534000E3,5.946900486E1 +3.250785000E3,5.688578668E1 +3.251033000E3,5.444863300E1 +3.251316000E3,5.885016251E1 +3.251570000E3,6.172482417E1 +3.251833000E3,6.833245599E1 +3.252200000E3,6.656973280E1 +3.252441000E3,6.663686281E1 +3.252721000E3,6.380106140E1 +3.252991000E3,6.113258977E1 +3.253242000E3,7.270243700E1 +3.253457000E3,7.442711013E1 +3.253706000E3,7.097589831E1 +3.253999000E3,5.740107596E1 +3.254237000E3,5.407351324E1 +3.254532000E3,6.235563554E1 +3.254777000E3,6.148535018E1 +3.255085000E3,6.767985005E1 +3.255346000E3,5.893302101E1 +3.255628000E3,5.834235484E1 +3.255897000E3,6.152524318E1 +3.256146000E3,6.124474706E1 +3.256419000E3,5.928557591E1 +3.256642000E3,5.798678480E1 +3.256921000E3,5.800318977E1 +3.257149000E3,5.813391626E1 +3.257392000E3,6.200496820E1 +3.257645000E3,6.268368020E1 +3.257945000E3,6.783162804E1 +3.258296000E3,7.343015115E1 +3.258556000E3,7.258165803E1 +3.258805000E3,6.753466802E1 +3.259117000E3,7.134403593E1 +3.259421000E3,6.813653179E1 +3.259673000E3,6.449045726E1 +3.259939000E3,7.144310958E1 +3.260188000E3,6.619195201E1 +3.260438000E3,6.990193438E1 +3.260692000E3,6.791067771E1 +3.260944000E3,7.014061601E1 +3.261191000E3,7.271368424E1 +3.261532000E3,6.889323528E1 +3.261794000E3,6.087932672E1 +3.262047000E3,6.139975131E1 +3.262322000E3,6.684035582E1 +3.262586000E3,6.977079140E1 +3.262861000E3,6.711211223E1 +3.263137000E3,6.891542739E1 +3.263415000E3,6.450575202E1 +3.263671000E3,6.375083447E1 +3.263946000E3,6.525419018E1 +3.264250000E3,6.323969714E1 +3.264517000E3,7.351653517E1 +3.264813000E3,7.240916805E1 +3.265107000E3,6.991986455E1 +3.265349000E3,6.767718353E1 +3.265598000E3,7.020318016E1 +3.265847000E3,6.593396207E1 +3.266149000E3,6.776886494E1 +3.266400000E3,6.796917668E1 +3.266653000E3,6.234495715E1 +3.266897000E3,6.492303298E1 +3.267153000E3,6.551968402E1 +3.267398000E3,6.154456079E1 +3.267647000E3,6.087933145E1 +3.267896000E3,6.053677169E1 +3.268248000E3,6.893351216E1 +3.268513000E3,6.695525456E1 +3.268817000E3,6.263553940E1 +3.269070000E3,5.965971741E1 +3.269315000E3,6.136430702E1 +3.269582000E3,7.398506568E1 +3.269828000E3,7.145137487E1 +3.270128000E3,7.238266470E1 +3.270371000E3,7.289527120E1 +3.270623000E3,7.428636164E1 +3.270931000E3,7.248535741E1 +3.271185000E3,7.399445608E1 +3.271518000E3,7.355251323E1 +3.271795000E3,7.296660624E1 +3.272081000E3,7.131368475E1 +3.272358000E3,7.068792091E1 +3.272581000E3,6.623699177E1 +3.272835000E3,5.258987188E1 +3.273093000E3,6.044165509E1 +3.273337000E3,6.879817511E1 +3.273635000E3,6.970693453E1 +3.273931000E3,7.169623139E1 +3.274180000E3,7.112396098E1 +3.274428000E3,7.190035192E1 +3.274761000E3,7.089393329E1 +3.275038000E3,6.995869622E1 +3.275323000E3,6.900781199E1 +3.275569000E3,6.766263448E1 +3.275860000E3,6.881814388E1 +3.276116000E3,6.821596427E1 +3.276370000E3,6.896702672E1 +3.276649000E3,6.827119542E1 +3.276914000E3,6.795818984E1 +3.277171000E3,7.025945887E1 +3.277482000E3,6.685661764E1 +3.277741000E3,6.810082518E1 +3.278078000E3,6.902136690E1 +3.278358000E3,6.568611650E1 +3.278604000E3,7.123802039E1 +3.278848000E3,6.300940961E1 +3.279144000E3,6.292057856E1 +3.279382000E3,6.654167697E1 +3.279622000E3,6.808014942E1 +3.279917000E3,6.902808966E1 +3.280160000E3,6.685153426E1 +3.280471000E3,6.435621527E1 +3.280770000E3,6.765080490E1 +3.281059000E3,6.808248309E1 +3.281352000E3,6.477485011E1 +3.281602000E3,5.628454157E1 +3.281867000E3,5.800927668E1 +3.282130000E3,7.131716325E1 +3.282389000E3,7.355208108E1 +3.282663000E3,7.108584109E1 +3.282932000E3,5.710440961E1 +3.283191000E3,5.329699257E1 +3.283451000E3,5.003319724E1 +3.283709000E3,5.081704645E1 +3.284003000E3,5.075383483E1 +3.284259000E3,5.431712692E1 +3.284628000E3,5.277582101E1 +3.284917000E3,6.061307876E1 +3.285214000E3,6.168657926E1 +3.285472000E3,5.854988033E1 +3.285744000E3,4.913527641E1 +3.285999000E3,5.563664353E1 +3.286250000E3,5.841488419E1 +3.286517000E3,6.437604518E1 +3.286777000E3,6.124264602E1 +3.287035000E3,5.886049633E1 +3.287300000E3,6.196549102E1 +3.287630000E3,6.776239267E1 +3.287951000E3,6.702605133E1 +3.288259000E3,5.376695086E1 +3.288499000E3,5.095339550E1 +3.288807000E3,5.078317550E1 +3.289117000E3,5.659564827E1 +3.289411000E3,7.136818215E1 +3.289684000E3,6.629708396E1 +3.289982000E3,7.133804213E1 +3.290271000E3,6.994811010E1 +3.290544000E3,6.532422657E1 +3.290800000E3,6.451013008E1 +3.291132000E3,6.261305598E1 +3.291418000E3,6.696223022E1 +3.291676000E3,4.827412656E1 +3.291930000E3,4.724575587E1 +3.292202000E3,4.846609938E1 +3.292501000E3,5.276700476E1 +3.292822000E3,5.071547801E1 +3.293065000E3,4.944777186E1 +3.293349000E3,4.466809801E1 +3.293583000E3,4.432750067E1 +3.293832000E3,5.165471909E1 +3.294078000E3,4.606912616E1 +3.294427000E3,4.826074528E1 +3.294712000E3,4.434240888E1 +3.294985000E3,4.684583968E1 +3.295286000E3,5.104787864E1 +3.295548000E3,4.839146586E1 +3.295807000E3,5.479537456E1 +3.296066000E3,5.055213000E1 +3.296324000E3,3.933656037E1 +3.296585000E3,4.513652817E1 +3.296840000E3,4.805617654E1 +3.297099000E3,4.453428427E1 +3.297354000E3,5.205427791E1 +3.297705000E3,5.001223291E1 +3.297948000E3,5.342697607E1 +3.298200000E3,5.619467550E1 +3.298461000E3,5.565459347E1 +3.298738000E3,5.819577446E1 +3.298988000E3,5.077826383E1 +3.299236000E3,5.142261821E1 +3.299478000E3,5.610754709E1 +3.299775000E3,5.248015066E1 +3.300011000E3,4.742520943E1 +3.300325000E3,5.519481303E1 +3.300626000E3,4.628613419E1 +3.300959000E3,4.430731849E1 +3.301224000E3,4.380193782E1 +3.301473000E3,4.690647127E1 +3.301746000E3,4.845294386E1 +3.302057000E3,4.912389116E1 +3.302307000E3,5.155191791E1 +3.302563000E3,5.240902416E1 +3.302820000E3,4.677306339E1 +3.303083000E3,5.037145513E1 +3.303327000E3,4.506752152E1 +3.303573000E3,4.920686196E1 +3.303857000E3,4.935493485E1 +3.304189000E3,4.415801479E1 +3.304459000E3,4.423531181E1 +3.304768000E3,3.874162391E1 +3.305030000E3,4.189958295E1 +3.305333000E3,4.005870516E1 +3.305579000E3,5.072183491E1 +3.305843000E3,4.113754863E1 +3.306140000E3,5.548273149E1 +3.306383000E3,5.383424402E1 +3.306628000E3,5.205779319E1 +3.306877000E3,4.592085607E1 +3.307206000E3,5.092451979E1 +3.307449000E3,4.823039740E1 +3.307720000E3,5.026090042E1 +3.307982000E3,5.794901070E1 +3.308198000E3,5.239372011E1 +3.308502000E3,5.024517162E1 +3.308742000E3,4.253471720E1 +3.309044000E3,4.105523794E1 +3.309340000E3,3.028117703E1 +3.309596000E3,2.809150222E1 +3.309864000E3,2.626060468E1 +3.310135000E3,5.055452447E1 +3.310501000E3,7.199271156E1 +3.310777000E3,7.172468430E1 +3.311045000E3,7.282926204E1 +3.311313000E3,7.145580608E1 +3.311562000E3,7.218798353E1 +3.311867000E3,7.081603642E1 +3.312107000E3,7.122522782E1 +3.312348000E3,7.013128466E1 +3.312672000E3,7.138239962E1 +3.312976000E3,7.589001323E1 +3.313216000E3,6.988466628E1 +3.313506000E3,6.521999768E1 +3.313853000E3,5.781158269E1 +3.314129000E3,5.698768013E1 +3.314381000E3,5.954050680E1 +3.314636000E3,5.529467486E1 +3.314903000E3,6.884377149E1 +3.315163000E3,7.293133775E1 +3.315448000E3,7.186875504E1 +3.315697000E3,6.942752239E1 +3.315995000E3,6.899930460E1 +3.316247000E3,6.333687203E1 +3.316557000E3,6.820286469E1 +3.316856000E3,7.371764624E1 +3.317124000E3,7.475494405E1 +3.317411000E3,7.135849387E1 +3.317718000E3,5.726081152E1 +3.317965000E3,5.650406291E1 +3.318233000E3,4.901561410E1 +3.318490000E3,6.881993797E1 +3.318742000E3,7.251465406E1 +3.319010000E3,6.395213402E1 +3.319311000E3,7.197127027E1 +3.319615000E3,6.948849738E1 +3.319862000E3,6.664503435E1 +3.320187000E3,6.933008182E1 +3.320443000E3,6.121514242E1 +3.320753000E3,7.017439611E1 +3.321063000E3,7.393277725E1 +3.321329000E3,7.045535337E1 +3.321643000E3,6.985180357E1 +3.321896000E3,7.158196073E1 +3.322168000E3,6.999348148E1 +3.322483000E3,6.872091406E1 +3.322823000E3,6.386396976E1 +3.323116000E3,6.891641311E1 +3.323355000E3,6.790436633E1 +3.323733000E3,6.190629476E1 +3.324010000E3,6.307072034E1 +3.324306000E3,6.459812141E1 +3.324591000E3,6.928529051E1 +3.324846000E3,6.953301961E1 +3.325158000E3,6.946121501E1 +3.325471000E3,6.177266257E1 +3.325739000E3,6.057146439E1 +3.326000000E3,6.021658005E1 +3.326269000E3,6.588088303E1 +3.326536000E3,6.594068529E1 +3.326797000E3,5.957632846E1 +3.327117000E3,5.830018402E1 +3.327415000E3,5.952820917E1 +3.327678000E3,5.996997483E1 +3.327928000E3,6.374276040E1 +3.328204000E3,6.484785648E1 +3.328504000E3,6.253699213E1 +3.328743000E3,6.495848159E1 +3.329001000E3,6.390198219E1 +3.329317000E3,6.107203426E1 +3.329613000E3,6.678300135E1 +3.329901000E3,6.048531373E1 +3.330164000E3,6.806621622E1 +3.330501000E3,6.592361883E1 +3.330795000E3,6.652249790E1 +3.331059000E3,6.079261624E1 +3.331342000E3,7.055285274E1 +3.331620000E3,6.885169705E1 +3.331870000E3,6.676175072E1 +3.332125000E3,6.653456857E1 +3.332410000E3,6.539948315E1 +3.332658000E3,6.741723145E1 +3.332915000E3,5.982571500E1 +3.333236000E3,7.234399288E1 +3.333559000E3,7.555637810E1 +3.333801000E3,7.132946849E1 +3.334053000E3,7.012473325E1 +3.334345000E3,7.083313400E1 +3.334658000E3,6.159204912E1 +3.334951000E3,5.416652771E1 +3.335187000E3,5.331536045E1 +3.335488000E3,5.516853140E1 +3.335780000E3,5.755380245E1 +3.336028000E3,6.034949591E1 +3.336335000E3,5.933559907E1 +3.336577000E3,6.200660494E1 +3.336975000E3,6.752581884E1 +3.337230000E3,6.552308109E1 +3.337509000E3,6.043162012E1 +3.337804000E3,6.346167875E1 +3.338097000E3,5.762665769E1 +3.338354000E3,6.046465836E1 +3.338657000E3,5.841838084E1 +3.338937000E3,5.426549819E1 +3.339182000E3,5.312925890E1 +3.339425000E3,5.904532039E1 +3.339705000E3,5.548841740E1 +3.339970000E3,6.467955136E1 +3.340311000E3,6.518540616E1 +3.340567000E3,6.130157495E1 +3.340843000E3,4.234380604E1 +3.341102000E3,3.685811557E1 +3.341367000E3,5.229521155E1 +3.341631000E3,4.577123603E1 +3.341913000E3,5.522804687E1 +3.342191000E3,7.219670231E1 +3.342497000E3,6.138541536E1 +3.342739000E3,5.883033505E1 +3.342994000E3,5.692990468E1 +3.343272000E3,5.784770175E1 +3.343584000E3,5.851150722E1 +3.343847000E3,7.127137910E1 +3.344137000E3,7.004437015E1 +3.344432000E3,6.719880262E1 +3.344677000E3,6.266500726E1 +3.344966000E3,6.662051616E1 +3.345209000E3,6.259160849E1 +3.345462000E3,6.521765959E1 +3.345762000E3,6.373477950E1 +3.346056000E3,5.976833176E1 +3.346294000E3,5.557373783E1 +3.346597000E3,5.486821605E1 +3.346842000E3,4.854970484E1 +3.347096000E3,6.338774242E1 +3.347415000E3,6.646909489E1 +3.347712000E3,6.370164725E1 +3.347950000E3,6.577012972E1 +3.348257000E3,6.536203326E1 +3.348509000E3,5.777033235E1 +3.348799000E3,6.942121279E1 +3.349070000E3,6.552465655E1 +3.349329000E3,6.400867966E1 +3.349583000E3,5.955829212E1 +3.349911000E3,6.233007104E1 +3.350154000E3,7.360271557E1 +3.350432000E3,7.402471070E1 +3.350716000E3,7.225249055E1 +3.350966000E3,6.654334459E1 +3.351200000E3,6.590758849E1 +3.351507000E3,6.143698167E1 +3.351805000E3,7.197722167E1 +3.352079000E3,6.778594348E1 +3.352307000E3,5.712392879E1 +3.352566000E3,5.659236121E1 +3.352870000E3,5.352359430E1 +3.353127000E3,5.362353429E1 +3.353366000E3,5.964860406E1 +3.353638000E3,7.164177428E1 +3.353890000E3,6.730234717E1 +3.354173000E3,5.336089185E1 +3.354435000E3,4.770751864E1 +3.354689000E3,4.833001031E1 +3.354956000E3,4.464972004E1 +3.355220000E3,6.809720152E1 +3.355493000E3,7.032616040E1 +3.355723000E3,7.137092547E1 +3.356052000E3,7.106236065E1 +3.356287000E3,7.302101107E1 +3.356599000E3,6.868512076E1 +3.356867000E3,7.134905494E1 +3.357133000E3,7.032184319E1 +3.357463000E3,6.484515560E1 +3.357753000E3,5.949029357E1 +3.358081000E3,6.553405106E1 +3.358385000E3,5.460622041E1 +3.358634000E3,4.798111952E1 +3.358902000E3,5.356090224E1 +3.359186000E3,5.091993104E1 +3.359516000E3,5.980463665E1 +3.359805000E3,5.623340998E1 +3.360124000E3,4.885342740E1 +3.360404000E3,4.536632542E1 +3.360660000E3,5.726647509E1 +3.360941000E3,6.266477325E1 +3.361245000E3,5.265432523E1 +3.361521000E3,4.746518361E1 +3.361777000E3,5.341135388E1 +3.362038000E3,5.094337921E1 +3.362292000E3,5.832737886E1 +3.362616000E3,5.247742127E1 +3.363049000E3,5.123926483E1 +3.363313000E3,4.482127206E1 +3.363600000E3,4.813050338E1 +3.363848000E3,5.751744958E1 +3.364157000E3,5.045245795E1 diff --git a/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a2/Picture.java b/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a2/Picture.java new file mode 100644 index 0000000..8df3d55 --- /dev/null +++ b/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a2/Picture.java @@ -0,0 +1,699 @@ +import java.awt.image.*; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.BasicStroke; +import java.util.Vector; +import javax.imageio.*; +import java.io.*; +import java.awt.*; +import javax.swing.*; +import java.util.Random; +import java.awt.geom.AffineTransform; +/** + * + * Bildklasse für die Simulation von Processing-Befehlen + * + * Diese Klasse stellt ein BufferedImage bereit, in das mit Processing-Befehlen gezeichnet + * werden kann. + * Zusätzlich kann ein Bildanzeiger über jede Änderung des Bildes informiert werden, + * um "Zurück"-Befehle zu ermöglichen. Der Bildanzeiger ist entweder eine normale Java + * ScrollPane oder ein Actor aus Greenfoot. + * Die Dokumentation der einzelnen Zeichenmethoden ist der Processing-Reference + * (https://processing.org/reference/ steht unter CC-Lizenz: https://creativecommons.org/) + * entnommen und mit Deepl.com ins Deutsche übersetzt. + * + * @version 1.0 from 23.01.2019 + * @author Thomas Schaller (ZPG Informatik Klasse 9) + */ + +public class Picture{ + + // Einstellungmöglichkeiten für das Zeichnen von Rechtecken und Ellipsen + // RADIUS = Mittelpunkt+Radius wird gegeben, CENTER = Mittelpunkt und Breite/Höhe wird gegeben, + // CORNER = Linke obere Ecke + Breite/Höhe, CORNERS = Linke obere und rechte untere Ecke + public static final int RADIUS = 1; + public static final int CENTER = 2; + public static final int CORNER = 3; + public static final int CORNERS = 4; + + // gespeichertes Bild, + private BufferedImage image; + + // aktuelle Farbeinstellungen + private Color background; + private Color pencolor; + private Color fillcolor; + + // aktuelle Stiftdicke + private double stroke; + + // akkteller Koordinatenmodus von Rechtecken und Ellipsen + private int ellipseMode = CENTER; + private int rectMode = CORNER; + + // aktueller Font + private Font textfont = null; + + // muss ein Bildanzeiger benachrichtigt werden + private PictureViewer observer = null; + private boolean autorefresh = true; + + /** + * Erzeugt ein Bild mit Standardgröße 500x400 + */ + public Picture() { + this(500,400); + } + + /** + * Erzeugt ein Bild der angegeben Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public Picture(int width, int height) { + this(width,height, "D0D0D0"); + } + + /** + * Erzeugt ein Bild aus einer Datei + * @param filename Dateiname des Bildes + */ + public Picture(String filename) { + load(filename); + } + + /** + * Erzeugt ein Bild der angegebenen Größe mit festgelegtem Hintergrund + * @param width Breite des Bildes + * @param height Höhe des Bildes + * @param background Farbe des Hintergrunds + */ + public Picture(int width, int height, String background) { + this.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + this.background = decode(background); + this.pencolor = new Color(0,0,0); + this.stroke = 1; + this.fillcolor = null; + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(this.background); + g.fillRect(0,0,width-1, height-1); + } + + /** + * Legt fest, wer das Bild anzeigt. + * Diese ermöglicht die Benachrichtung des Observers, wenn sich das Bild ändert. + * @param observer Anzeiger des Bildes + */ + + public void setObserver(PictureViewer observer) { + this.observer= observer; + } + + /** + * Direktes Setzen des Bildes (für interne Zwecke) + * @param b Bild, das gespeichert werden soll. + */ + public void setImage(BufferedImage b) { + image = b; + } + + /** + * Direktes Abfragen des Bildes (für interne Zwecke) + * @return Bild, das gerade gespeichert ist. + */ + public BufferedImage getImage() { + return image; + } + + /** + * Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + * Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + * der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu. + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public void size(int width, int height){ + pushImage(); + this.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(background); + g.fillRect(0,0,width-1, height-1); + } + + /** + * Liefert die Breite des Bildes zurück. + * @return Breite des Bildes + */ + public int getWidth() { + return image.getWidth(); + } + + /** + * Liefert die Höhe des Bildes zurück. + * @return Höhe des Bildes + */ + public int getHeight() { + return image.getHeight(); + } + + + /** + * Erzeugt eine Kopie des Bildes und übergibt sie an den Observer (falls existent), damit dieser die Versionen speichern kann + */ + private void pushImage() { + if(observer != null) { + observer.pushImage(); + } + } + + + /** + * Legt fest, ob nach jedem Zeichenbefehl automatisch das Bild auch in + * der Oberfläche aktualisiert wird. Die Einstellung "false" beschleunigt + * das Zeichnen aufwändiger Bilder und verhindert "Flackern". + * Das Neuzeichnen kann durch die Methode "refresh" gezielt ausgelöst werden. + * @param autorefresh true = nach jedem Zeichenbefehl die Anzeige aktualisieren, false= nur durch die Methode refresh neu zeichnen + */ + public void setAutoRefresh(boolean autoRefresh) { + this.autorefresh = autoRefresh; + } + + + /** + * Auch die anzeigenden Klasse wird zum Neuzeichnen aufgefordert. + */ + private void repaint() { + if(observer != null && autorefresh) { + observer.repaint(); + } + } + + /** + * Auch die anzeigenden Klasse wird zum Neuzeichnen aufgefordert. + */ + public void refresh() { + if(observer != null) { + observer.repaint(); + } + } + + // ----------------------------------------- Zeichenfunktionen ----------------------------------------------- + /** + * Löscht den Inhalt des Bildes. + * Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt. + */ + + public void clear(){ + pushImage(); + image = new BufferedImage(image.getWidth(), image.getHeight(), image.getType()); + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(background); + g.fillRect(0,0,image.getWidth()-1, image.getHeight()-1); + repaint(); + } + + /** + * Konvertiert die in einem bestimmten Modus gegebenen Koordinaten in die Java-übliche Links_Oben_Breite_Höhe Version + * Die Änderungen werden direkt im Array vorgenommen + * @param coord Array mit vier Koordinateneinträgen im gegebenen Modus + * @param mode Modus der Koordinaten (CORNER, CORNERS, RADIUS oder CENTER) + */ + private void convert(int[] coord, int mode) { + switch(mode) { + case CORNER: break; + case CORNERS: coord[2] -= coord[0]; coord[3] -= coord[1]; break; + case RADIUS: coord[2] *= 2; coord[3] *=2; + case CENTER: coord[0] -= coord[2]/2; coord[1] -= coord[3]/2; + } + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + * Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + * Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void rectMode(int mode) { + rectMode = mode; + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + * Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + * Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als Breite und Höhe der Form. + * ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void ellipseMode(int mode) { + ellipseMode = mode; + } + + + + /** + * Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + * Um eine Linie einzufärben, verwenden Sie die {@link #stroke(int, int, int) stroke()} Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + * Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + * {@link #strokeWeight(double) strokeWeight()} geändert werden. + * @param x1 x-Koordinate des 1. Punktes + * @param y1 y-Koordinate des 1. Punktes + * @param x2 x-Koordinate des 2. Punktes + * @param y2 y-Koordinate des 2. Punktes + */ + public void line(int x1, int y1, int x2, int y2) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + if (stroke > 0) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawLine(x1, y1, x2, y2); + } + repaint(); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, rectMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillRect(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawRect(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, ellipseMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillOval(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawOval(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + int px[] = {x1, x2, x3}; + int py[] = {y1, y2, y3}; + polygon(px, py); + + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + + int px[] = {x1, x2, x3, x4}; + int py[] = {y1, y2, y3, y4}; + polygon(px, py); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + + public void polygon(int[] x, int[] y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(fillcolor != null) { + + g.setColor(fillcolor); + g.fillPolygon(x,y, y.length); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawPolygon(x, y, x.length); + } + repaint(); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + ellipse(x,y,1, 1); + + } + + // ----------------------------------------- Schriftdarstellung ----------------------------------------------- + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param s Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String s, int x, int y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(pencolor != null) { + g.setColor(fillcolor); + g.setStroke(new BasicStroke((float) stroke)); + g.setFont(textfont); + g.drawString(s, x, y); + } + repaint(); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + this.textfont = font; + } + + + // ----------------------------------------- Farbfestlegungen ----------------------------------------------- + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(String color) { + try{ + return new Color( + Integer.valueOf( color.substring( 0, 2 ), 16 ), + Integer.valueOf( color.substring( 2, 4 ), 16 ), + Integer.valueOf( color.substring( 4, 6 ), 16 ) ); + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(int color) { + try{ + if(color >=0 && color < 256) { + return new Color(color,color,color); + } else { + int r = color / 0x010000 % 0xFF; + int g = color / 0x000100 % 0xFF; + int b = color % 0xFF; + System.out.println(""+r+","+g+","+b); + return new Color(r, g, b ); + } + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + this.pencolor = decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + this.pencolor=decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + this.pencolor = new Color(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + this.pencolor = null; + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + this.stroke = width; + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + this.fillcolor = decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + this.fillcolor=decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + this.fillcolor = new Color(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + this.fillcolor = null; + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + if(c < 256) { + this.background=new Color(c,c,c); + } else { + int r = c / 0x010000; + int g = c / 0x000100 % 0xFF; + int b = c % 0xFF; + this.background= new Color(r, g, b ); + } + + this.clear(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + this.background=new Color(r,g,b); + this.clear(); + } + + +// ----------------------------------------- Dateioperationen ----------------------------------------------- + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + try{ + this.image = ImageIO.read(new File(filename)); + this.background = decode("D0D0D0"); + this.pencolor = new Color(0,0,0); + this.fillcolor = null; + this.stroke = 1; + this.repaint(); + + } catch(Exception e) { + System.out.println("Fehler beim Einlesen der Bilddatei"); + } + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + try{ + String[] fn = filename.split("\\."); + if (fn.length== 1) { + ImageIO.write(image, "PNG", new File(filename+".png")); + } else { + + if (fn.length == 2 && (fn[1].toUpperCase().equals("PNG") || + fn[1].toUpperCase().equals("GIF"))){ + ImageIO.write(image, fn[1], new File(filename)); + }else { + System.out.println("Unbekanntes Bildformat"); + } + } + + } catch(Exception e) { + System.out.println("Fehler beim Speichern"); + } + } + + +// ----------------------------------------- Sonstiges ----------------------------------------------- + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + + public Color[][] getPixelArray() { + Color[][] pixel = new Color[image.getWidth()][image.getHeight()]; + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + pixel[x][y] = new java.awt.Color(image.getRGB(x,y)); + } + } + return pixel; + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + size(pixel.length,pixel[0].length); + Graphics2D g = (Graphics2D) image.getGraphics(); + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + g.setColor(pixel[x][y]); + g.fillRect(x, y, 1, 1); + } + } + repaint(); + } + + /** + * Hilfsfunktion zum Verzögern der Ausgabe + * @param millis Wartezeit in Millisekunden + */ + public void delay(int millis) { + try{ + Thread.sleep(millis); + + } catch(Exception e) { + + } + + } + + + +} diff --git a/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a2/PictureViewer.java b/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a2/PictureViewer.java new file mode 100644 index 0000000..9e6b151 --- /dev/null +++ b/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a2/PictureViewer.java @@ -0,0 +1,505 @@ +/** + * Zeigt ein Bild in einem Scrollbereich an. + * Es ist möglich das Bild zu zoomen und mehrere Versionen des Bildes zu speichern, um eine "Rückgängig" Operation durchzuführen. + * @author Thomas Schaller + * @version 1.0 vom 01.02.2019 + */ + +import java.awt.*; +import java.awt.event.*; +import javax.swing.*; +import java.awt.image.*; +import java.util.Vector; + +public class PictureViewer extends JScrollPane +{ + + // das aktuelle Bild + private Picture picture; + + // Bilder für den Züruck-Modus speichern + private static final int ANZ_BACK = 20; + private Vector history; + + // Zeichenfläche + private ImageIcon scrollImageIcon; + private JLabel imageLabel; + + // Zoom Faktor + private double zoomFactor; + public static final int FIT = -1; + public static final int NORMAL = 1; + + + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der Größe 1000x1000 + */ + public PictureViewer() { + this(1000,1000); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public PictureViewer(int width, int height) { + this(width,height, "D0D0D0"); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + * @param background Farbe des Hintergrunds als HEX-String (z.B. "FF3A45") + */ + public PictureViewer(int width, int height, String background) { + this(new Picture(width,height, background)); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild aus einer Bilddatei + * @param filename Name des Bildes + */ + public PictureViewer(String filename) { + this(new Picture(filename)); + } + + /** + * Erzeugt ein ScrollPanel und zeigt das Bild-Objekt an + * @param picture anzuzeigendes Bild + */ + public PictureViewer(Picture picture) + { + this.picture=picture; + + zoomFactor=1; + + scrollImageIcon = new ImageIcon(picture.getImage().getScaledInstance(picture.getImage().getWidth(), picture.getImage().getHeight(), Image.SCALE_FAST)); + imageLabel = new JLabel(scrollImageIcon); + imageLabel.setVerticalAlignment(JLabel.CENTER); + imageLabel.setHorizontalAlignment(JLabel.CENTER); + setViewportView(imageLabel); + + this.setBorder(BorderFactory.createLineBorder(Color.black)); + picture.setObserver(this); + history = new Vector(); + + } + + /** + * Setzt das anzuzeigende Bild neu + * @param picture anzuzeigendes Bild + */ + public void setImage(Picture picture) { + this.history = new Vector(); + this.picture = picture; + setZoom(NORMAL); + } + + /** + * Speichert das übergebene Bild in der History. + * @param b zu speicherndes Bild + */ + public void pushImage() { + if( this.ANZ_BACK > 0) { + if(history.size() == this.ANZ_BACK) { + history.removeElementAt(0); + } + + BufferedImage b = new BufferedImage(picture.getWidth(), picture.getHeight(), picture.getImage().getType()); + Graphics g = b.getGraphics(); + g.drawImage(picture.getImage(), 0, 0, null); + g.dispose(); + + history.add(b); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + private void popImage() { + int anz = history.size(); + if(anz>0) { + BufferedImage img = history.get(anz-1); + history.removeElementAt(anz-1); + picture.setImage(img); + setZoom(zoomFactor); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + public void back() { + popImage(); + } + + /** + * Setzt das angezeigt Bild neu und beachtet dabei den Zoomfaktor. + */ + public void repaint() { + if( picture != null) { + double factor= zoomFactor; + if (zoomFactor == FIT) { + double factorw = ((double) getWidth()-2) / picture.getWidth(); + double factorh = ((double) getHeight()-2) / picture.getHeight(); + factor = Math.min(factorw, factorh); + } + int width = (int) (picture.getWidth()*factor); + int height = (int) (picture.getHeight()*factor); + + + + scrollImageIcon.setImage(picture.getImage().getScaledInstance(width, height, Image.SCALE_DEFAULT)); + revalidate(); + } + } + + /** + * Setzt den Zoom-Faktor für das Bild. + * Als Zoomfaktor sind auch die Konstanten Bildanzeiger.FIT (auf Bildschirmgröße zoomen) und Bildanzeiger.NORMAL (100%) möglich. + * @param factor Zoomfaktor (1.0 = 100%). + */ + public void setZoom(double factor) + { + zoomFactor = factor; + repaint(); + } + + + // Wrappermethoden + /** + * Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + * Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + * der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu. + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public void size(int width, int height){ + picture.size(width, height); + } + + /** + * Liefert die Breite des Bildes zurück. + * @return Breite des Bildes + */ + public int getImageWidth() { + return picture.getWidth(); + } + + /** + * Liefert die Höhe des Bildes zurück. + * @return Höhe des Bildes + */ + public int getImageHeight() { + return picture.getHeight(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + picture.background(c); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + picture.background(r,g,b); + } + + /** + * Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + * Um eine Linie einzufärben, verwenden Sie die {@link #stroke(int, int, int) stroke()} Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + * Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + * {@link #strokeWeight(double) strokeWeight()} geändert werden. + * @param x1 x-Koordinate des 1. Punktes + * @param y1 y-Koordinate des 1. Punktes + * @param x2 x-Koordinate des 2. Punktes + * @param y2 y-Koordinate des 2. Punktes + */ + public void line(int x1, int y1, int x2, int y2) { + picture.line(x1,y1,x2,y2); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + picture.rect(a,b,c,d); + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + picture.ellipse(a,b,c,d); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + picture.triangle(x1,y1,x2,y2,x3,y3); + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + picture.quad(x1,y1,x2,y2,x3,y3,x4,y4); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + public void polygon(int[] x, int[] y) { + picture.polygon(x,y); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + picture.point(x,y); + + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + * Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + * Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void rectMode(int mode) { + picture.rectMode(mode); + } + + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + * Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + * Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als Breite und Höhe der Form. + * ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void ellipseMode(int mode) { + picture.ellipseMode(mode); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + picture.stroke(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + picture.noStroke(); + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + picture.strokeWeight(width); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + picture.fill(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + picture.noFill(); + } + + /** + * Löscht den Inhalt des Bildes. + * Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt. + */ + public void clear(){ + picture.clear(); + } + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + picture.load(filename); + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + picture.save(filename); + } + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param t Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String t, int x, int y) { + picture.text(t,x,y); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + picture.textFont(font); + } + + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + public Color[][] getPixelArray() { + return picture.getPixelArray(); + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + picture.setPixelArray(pixel); + } + + + +} diff --git a/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a2/Table.java b/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a2/Table.java new file mode 100644 index 0000000..ee5a211 --- /dev/null +++ b/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a2/Table.java @@ -0,0 +1,894 @@ +/** + * Die Klasse Table vereinfacht den Zugriff auf CSV-Dateien. + * Die Klassen Table und TableRow ermöglichen einen einfachen Zugriff auf tabellenbasierte + * Dokumente. + * + * @author Thomas Schaller + * @version 1.0 vom 01.02.2019 + */ + +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.ArrayList; +import java.io.*; +import java.util.Scanner; + +import org.jdom.Document; +import org.jdom.Element; +import org.jdom.Attribute; +import org.jdom.JDOMException; +import org.jdom.input.SAXBuilder; +import org.jdom.output.XMLOutputter; +import org.jdom.output.Format; + +public class Table +{ + // Standardtrennzeichen für Spalten + private static final char DEFAULT_SEPARATOR = ';'; + // Standardmarkierung für Texte + private static final char DEFAULT_QUOTE = '"'; + // Standardtrennzeichen für Dezimalzahlen + private static final char DEFAULT_COMMA = ','; + + // mögliche Spaltentypen + private static final String UNKNOWN ="UNKOWN"; + private static final String INT = "INTEGER"; + private static final String DOUBLE = "DOUBLE"; + private static final String FLOAT = "FLOAT"; + + // interne Verwaltung des Dokuments als JDOM-Document-Objekt + private Document doc; + // Verweis auf Element für Kopfzeile + private Element header; + // Ende Attribute + + /** + * Erzeugt leeres Tabellen-Dokument. + */ + public Table() { + this.doc = new Document(); + doc.setRootElement(new Element("CSV-Data")); + this.header = new Element("Header"); + doc.getRootElement().addContent(header); + } + + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei und erstellt ein Tabellenobjekt mit seinen Werten. + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public Table(String filename, String options, char separator, char quote) { + loadCSV(filename, options, separator, quote); + } + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei und erstellt ein Tabellenobjekt mit seinen Werten (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + */ + public Table(String filename, String options) { + loadCSV(filename, options); + } + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei ohne Kopfzeile und erstellt ein Tabellenobjekt mit seinen Werten (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public Table(String filename) { + loadCSV(filename); + } + + // Anfang Methoden + /** + * Liest den Inhalt einer CSV-Datei ohne Kopfzeile (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public void loadCSV(String filename) { + loadCSV(filename, ""); + } + + /** + * Liest den Inhalt einer CSV-Datei (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + */ + public void loadCSV(String filename, String options) { + loadCSV(filename, options, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** + * Liest den Inhalt einer CSV-Datei. + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public void loadCSV(String filename, String options, char separator, char quote) { + doc = new Document(); + doc.setRootElement(new Element("CSV-Data")); + header = new Element("Header"); + doc.getRootElement().addContent(header); + try { + File f = new File(filename); + Scanner scanner = new Scanner(new File(filename)); + if(options.toLowerCase().contains("header") && scanner.hasNext()) { + List entries = parseLine(scanner.nextLine(), separator, quote); + int i= 0; + for(String s : entries) { + Element entry = new Element("Column"); + header.addContent(entry); + entry.setText(s); + entry.setAttribute("type", "unknown"); + i++; + } + } + + List cols = header.getChildren(); + + while (scanner.hasNext()) { + Element line = new Element("Row"); + doc.getRootElement().addContent(line); + List entries = parseLine(scanner.nextLine(), separator, quote); + int i= 0; + + for(String s : entries) { + + if(i==cols.size()) { + Element entry = new Element("Column"); + entry.setAttribute("type", "unknown"); + header.addContent(entry); + cols = header.getChildren(); + } + + Element entry = new Element("Entry"); + entry.setText(s); + line.addContent(entry); + i++; + } + } + scanner.close(); + + } catch (Exception e) { + System.out.println("Fehler beim Lesen der CSV-Datei"); + } + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei ohne Kopfzeile (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public void saveCSV(String filename) { + saveCSV(filename, ""); + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthalten, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile haben soll, + * dann lassen Sie einfach die Option "header" weg. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile haben soll. + * @param filename Dateiname der CSV-Datei. + */ + public void saveCSV(String filename, String options) { + saveCSV(filename, options, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei. + * Wenn die Datei eine Kopfzeile enthalten, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile haben soll, + * dann lassen Sie einfach die Option "header" weg. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile haben soll. + * @param filename Dateiname der CSV-Datei. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public void saveCSV(String filename, String options, char separator, char quote){ + try{ + File f = new File(filename); + PrintStream outputFile = new PrintStream (f); + System.out.println("Speicher in : "+f.getAbsolutePath()); + List columns = header.getChildren(); + String sq = ""+quote; + String ss = ""+separator; + if(quote =='"') sq = "\""; + if(separator =='"') ss = "\""; + + if(options.toLowerCase().contains("header")) { + String h = ""; + for(Element c : columns) { + h += ss + sq + c.getText()+sq; + } + outputFile.println(h.substring(1)); + } + for(int i = 0; i parseLine(String cvsLine) { + return parseLine(cvsLine, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** HIlfsfunktion für die Analyse einer Dateizeile + * @param cvsLine Zeile aus der Datei + * @param sparator Trennzeichen für die Spalten + * @return Liste von String für die einzelnen Spalten + */ + private List parseLine(String cvsLine, char separator) { + return parseLine(cvsLine, separator, DEFAULT_QUOTE); + } + + /** HIlfsfunktion für die Analyse einer Dateizeile + * @param cvsLine Zeile aus der Datei + * @param sparator Trennzeichen für die Spalten + * @param customQuote Kennung für Strings + * @return Liste von String für die einzelnen Spalten + */ + private List parseLine(String cvsLine, char separator, char customQuote) { + + List result = new ArrayList<>(); + + //if empty, return! + if (cvsLine == null && cvsLine.isEmpty()) { + return result; + } + + //ggf. Default-Value laden + if (customQuote == ' ') { + customQuote = DEFAULT_QUOTE; + } + + if (separator == ' ') { + separator = DEFAULT_SEPARATOR; + } + + StringBuffer curVal = new StringBuffer(); + boolean inQuotes = false; + boolean startCollectChar = false; + boolean doubleQuotesInColumn = false; + + char[] chars = cvsLine.toCharArray(); + + for (char ch : chars) { + + if (inQuotes) { // aktueller Text ist in Quotes eingeschlossen + startCollectChar = true; + + if (ch == customQuote) { // Quotes werden beendet, aber Achtung bei "" => Metazeichen + inQuotes = false; + if (ch == '\"') { + doubleQuotesInColumn = true; + } + + } else { + + if (ch == '\"' && !doubleQuotesInColumn) { + doubleQuotesInColumn = true; + } else { + curVal.append(ch); + doubleQuotesInColumn = false; + } + + } + } else { + if (ch == customQuote) { + + inQuotes = true; + + //Fixed : allow "" in empty quote enclosed + if (ch == '\"'){ + if(doubleQuotesInColumn) { + curVal.append('"'); + doubleQuotesInColumn = false; + } else doubleQuotesInColumn = true; + + + } + } + else { + doubleQuotesInColumn = false; + if (ch == separator) { + + result.add(curVal.toString()); + + curVal = new StringBuffer(); + startCollectChar = false; + + } else if (ch == '\r') { + //ignore LF characters + continue; + } else if (ch == '\n') { + //the end, break! + break; + } else { + curVal.append(ch); + } + } + } + + } + result.add(curVal.toString()); + return result; + } + + /** + * Sucht die Nummer einer durch Namen gegebenen Spalte. + * @param name Name der Spalte + * @return Nummer der Spalte + */ + + private int findColumnNumber(String name) { + List columns = header.getChildren(); + int i = 0; + for(Element c : columns) { + if (c.getText().toLowerCase().equals(name.toLowerCase())) { + return i; + + } + i++; + } + return -1; + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an. + */ + public void addColumn() { + Element entry = new Element("Column"); + entry.setAttribute("type", Table.UNKNOWN); + header.addContent(entry); + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an und benennt sie. + * @param title Bezeichnung der Spalte + */ + public void addColumn(String title) { + addColumn(); + Element nc = ((List)(header.getChildren())).get(header.getChildren().size()-1); + nc.setText(title); + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an und benennt und typisiert sie. + * @param title Bezeichnung der Spalte + * @param type Typ der Spalte (UNKNOWN, DOUBLE, INTEGER, FLOAT) + */ + public void addColumn(String title, String type) { + addColumn(title); + Element nc = ((List)(header.getChildren())).get(header.getChildren().size()-1); + nc.setAttribute("type", type); + } + + /** + * Löscht eine Spalte. + * @param i Nummer der Spalte. + */ + public void removeColumn(int i) { + List lines = doc.getRootElement().getChildren(); + for(Element l : lines) { + if(l.getChildren().size()>i) l.removeContent(i); + } + } + + /** + * Löscht eine Spalte + * @param name Name der Spalte + */ + public void removeColumn(String name) { + try{ + removeColumn(findColumnNumber(name)); + } catch(Exception e) { System.out.println("Unbekannter Spaltenname");} + } + + /** + * Liefert die Anzahl der Spalten in der Tabelle + * @return Anzahl der Spalten + */ + public int getColumnCount() { + return header.getChildren().size(); + } + + /** + * Liefert die Anzahl der Zeilen in der Tabelle + * @return Anzahl der Zeilen + */ + public int getRowCount() { + return doc.getRootElement().getChildren().size()-1; + } + + /** + * Löscht alle Zeilen der Tabelle. + * Die Spaltenüberschriften und Typen bleiben erhalten. + */ + public void clearRows() { + doc.getRootElement().removeChildren("Row"); + } + + /** + * Fügt eine neue Zeile an das Ende der Tabelle an. + * @return ein TableRow-Objekt für diese neue Zeile + */ + public TableRow addRow() { + Element row = new Element("Row"); + doc.getRootElement().addContent(row); + return new TableRow(doc, row); + } + + /** + * Löscht eine Zeile + * @param i Nummer der Zeile + */ + public void removeRow(int i) { + if(i rows = doc.getRootElement().getChildren(); + return new TableRow(doc, rows.get(i+1)); + } + return null; + } + + /** + * Liefert die ganze Tabelle als Array von TableRow-Objekten + * @return Array von TableRow-Objekten + */ + public TableRow[] rows() { + TableRow[] rows = new TableRow[getRowCount()]; + for(int i = 0; i < getRowCount(); i++) { + rows[i] = getRow(i); + } + return rows; + } + + /** + * Liefert den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param column Spaltennummer + * @return Wert der Zelle + */ + public int getInt(int row, int column) { + return getRow(row).getInt(column); + } + + /** + * Liefert den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param name Name der Spalte + * @return Wert der Zelle + */ + public int getInt(int row, String name) { + return getRow(row).getInt(name); + } + + /** + * Setzt den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param column Spaltennummer + * @param value neuer Wert der Zelle + */ + public void setInt(int row, int column,int value) { + getRow(row).setInt(column, value); + } + + /** + * Setzt den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(int row, String name, int value) { + getRow(row).setInt(name, value); + } + + /** + * Liefert alle Werte einer Zeile als Integer-Array. + * @param row Nummer der Zeile + * @return int-Array, dass alle Werte der Zeile enthält + */ + public int[] getIntRow(int row) { + try{ + TableRow trow = getRow(row); + int anz = getColumnCount(); + int[] r = new int[anz]; + for(int i=0; i) (header.getChildren())).get(i).getText(); + } else { + return ""; + } + } + + /** + * Liefert die Nummer einer Spalte + * @param name Name der Spalte + * @return Nummer der Spalte + */ + public int getColumn(String name) { + List columns = header.getChildren(); + int i = 0; + while (i < columns.size()) { + if (columns.get(i).getText().toLowerCase().equals(name.toLowerCase())) { + return i; + } + i++; + } // end of while + return -1; + } + + + /** + * Erzeugt eine neue Zeile mit i Spalten + * Wenn bisher nicht genügend Spalten vorhanden sind, werden automatisch neue Spalten hinzugefügt (auch zum Header) + * @param i Anzahl der Spalten + */ + private Element buildRow(int i) { + List columns = header.getChildren(); + Element entry=null; + for(int j=0; j<=i; j++) { + + if(j==columns.size()) { + Element h = new Element("Column"); + h.setAttribute("type", "unknown"); + header.addContent(h); + columns = header.getChildren(); + } + if(j==current.getChildren().size()) { + entry = new Element("Entry"); + current.addContent(entry); + + } + + } + return entry; + + } + + /** + * Erzeugt eine neue Zeile. + * Es werden genügend Spalten erzeugt, dass ein Wert in Spalte "name" eingetragen werden kann + * @param name Name der Spalte + */ + private Element buildRow(String name) { + List columns = header.getChildren(); + int i = 0; + for(Element c: columns) { + + if(c.getText().toLowerCase().equals(name.toLowerCase())) { + return buildRow(i); + } + i++; + } + return null; + + } + + /** + * Liefert den Wert einer Zelle als String + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public String getString(int i) { + if(i >= current.getContent().size()) return ""; + Element e = (Element) current.getContent(i) ; + if(e!=null) { + return e.getText(); + } else { + return ""; + } + } + + /** + * Liefert den Wert einer Zelle als String + * @param name Name der Spalte + * @return Wert der Zelle + */ + public String getString(String name) { + return getString(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als String + * @param i Nummer der Spalte + * @param text neuer Wert der Zelle + */ + public void setString(int i, String text) { + + Element e = buildRow(i); + if(e!=null) e.setText(text); + } + + /** + * Setzt den Wert einer Zelle als String + * @param name Name der Spalte + * @param text neuer Wert der Zelle + */ + public void setString(String name, String text) { + Element e = buildRow(name); + if(e!=null) e.setText(text); + } + + + /** + * Liefert den Wert einer Zelle als Int-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public int getInt(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Integer.parseInt(e.getText()); + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Int-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public int getInt(String name) { + return getInt(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Int-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(int i,int value) { + + Element e = buildRow(i); + if(e!=null) e.setText(""+value); + } + + /** + * Setzt den Wert einer Zelle als Int-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(String name, int value) { + Element e = buildRow(name); + if(e!=null) e.setText(""+value); + } + + /** + * Liefert den Wert einer Zelle als Float-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public float getFloat(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Float.parseFloat(e.getText().replace(",",".")); + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Float-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public float getFloat(String name) { + return getFloat(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Float-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setFloat(int i,float value) { + + Element e = buildRow(i); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Setzt den Wert einer Zelle als Float-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setFloat(String name, float value) { + Element e = buildRow(name); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Liefert den Wert einer Zelle als Double-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public double getDouble(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Double.parseDouble(e.getText().replace(",",".")); + + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Double-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public double getDouble(String name) { + return getDouble(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Double-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setDouble(int i,double value) { + + Element e = buildRow(i); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Setzt den Wert einer Zelle als Double-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setDouble(String name, double value) { + Element e = buildRow(name); + if(e!=null) e.setText(format.format(value)); + } + +} diff --git a/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a2/XML.java b/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a2/XML.java new file mode 100644 index 0000000..c06c490 --- /dev/null +++ b/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a2/XML.java @@ -0,0 +1,637 @@ +/** + * Klasse zum Vereinfachten Zugriff auf XML-Dokumente + * Diese Klasse ist für den Einsatz in der Schule gedacht und soll den Schülern + * einen einfachen Zugriff auf XML-Dokumente ermöglichen. Die zur Verfügung + * stehenden Befehle sind wie in Processing realisiert. + * Dabei ist jeder Teilbaum des Dokuments wieder als XML-Objekt zugreifbar, das + * intern auf die gleiche XML-Dokumentstruktur zugreift. + * Dies ermöglicht bei unsachgemäßem Gebrauch die XML-Struktur zu zerstören. Im + * normalen Gebrauch sollte dies aber nicht relevant sein. + * + * Benötigt: jdom-1.1.3.jar + + * @author Thomas Schaller + * @version 1.0 vom 31.01.2019 + */ +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.ArrayList; +import java.io.*; + +import org.jdom.Document; +import org.jdom.Element; +import org.jdom.Attribute; +import org.jdom.JDOMException; +import org.jdom.input.SAXBuilder; +import org.jdom.output.XMLOutputter; +import org.jdom.output.Format; + +public class XML { + // Anfang Attribute + // XML-Dokumentstruktur + private Document doc; + // Zeiger auf das aktuelle Element + private Element current; + // Ende Attribute + + /** + * Erzeugt ein leeres XMLDokument + */ + public XML() { + this.doc = new Document(); + this.current = null; + } + + /** + * Erzeugt ein XML-Dokument aus einer Datei + * @param filename Dateiname der XML-Datei + */ + public XML(String filename) { + loadXML(filename); + } + + /** + * interner Konstruktor, um ein XML Objekt zu erzeugen, das auf einen bestimmten Knoten verweist + * @param doc die XML-Dokumentstruktur + * @param current Zeiger auf das aktuelle Element + */ + private XML(Document doc, Element current) { + this.doc = doc; + this.current = current; + } + + // Anfang Methoden + /** Öffnet das durch den Dateinamen gegebene Dokument + * @param filename Dateiname des XML-Files + */ + public void loadXML(String filename) { + doc = null; + File f = new File(filename); + + try { + // Das Dokument erstellen + SAXBuilder builder = new SAXBuilder(); + doc = builder.build(f); + + } catch (JDOMException e) { + e.printStackTrace(); + + } catch (IOException e) { + e.printStackTrace(); + } + // Zeiger im Baum auf Root-Element + current = doc.getRootElement(); + } + + /** Speichert den XML-Baum im angegebenen Dateinamen + * @param filename Dateiname des XML-Files + */ + public void saveXML(String filename) { + try { + // new XMLOutputter().output(doc, System.out); + XMLOutputter xmlOutput = new XMLOutputter(); + + // display nice nice + xmlOutput.setFormat(Format.getPrettyFormat()); + File f = new File(filename); + FileOutputStream outputFile = new FileOutputStream(f); + System.out.println("Speicher in : "+f.getAbsolutePath() ); + xmlOutput.output(doc, outputFile); + outputFile.close(); + System.out.println("File Saved!"); + } catch (IOException io) { + System.out.println(io.getMessage()); + } + + } + + //----------------------------------------------- Zeigerbewegungen -------------------------------------------------- + /** + * liefert ein XML-Objekt, das auf den Vaterknoten des aktuellen Elements zeigt. + * @return Vater des aktuellen Objekts. + */ + public XML getParent() { + if(current != null) { + Element parent = current.getParentElement(); + if (parent == null) { + return null; + } else { + return new XML(doc, parent); + } + } + return null; + } + + /** + * Überprüft, ob das Element irgendwelche Kinder hat oder nicht, und gibt das Ergebnis als boolean zurück. + * @return true, wenn Kinder vorhanden sind, sonst false + */ + public boolean hasChildren() { + if (current == null) { + return doc.hasRootElement(); + } else { + return current.getChildren().size()>0; + } + } + + /** + * Ermittelt die Namen aller Kinder des Elements und gibt die Namen als ein Array von Strings zurück. + * Dies ist dasselbe wie das Durchlaufen und Aufrufen von getName() auf jedem untergeordneten Element einzeln. + * @return Liste aller Namen der Kinder + */ + public String[] listChildren() { + if (current == null) { + if(doc.hasRootElement()) { + String[] names = new String[0]; + names[0] = doc.getRootElement().getName(); + return names; + } else { + return null; + } + } else { + List ch_element = current.getChildren(); + String[] names = new String[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + names[i] = ch_element.get(i).getName(); + } + return names; + } + } + + /** + * Liefert alle Kinder des Elements als Array von XML-Objekten. + * @return Array der Kinder als XML-Objekte + */ + public XML[] getChildren() { + if (current == null) { + if(doc.hasRootElement()) { + XML[] ch_xml = new XML[1]; + ch_xml[0] = new XML(doc, doc.getRootElement()); + return ch_xml; + } else { + return null; + } + } else { + List ch_element = current.getChildren(); + XML[] ch_xml = new XML[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + ch_xml[i] = new XML(doc, ch_element.get(i)); + } + return ch_xml; + } + } + + /** + * Liefert bestimmte Kinder des Elements als Array von XML-Objekten. + * Die Methode gibt dabei alle Kinder zurück, die dem angegebenen Namen entsprechen. + * @param name Name der gesuchten Kind-Objekte + * @return Array der Kinder als XML-Objekte + */ + public XML[] getChildren(String name) { + if (current == null) { + if(doc.hasRootElement()) { + XML[] ch_xml = new XML[1]; + ch_xml[0] = new XML(doc, doc.getRootElement()); + if(doc.getRootElement().getName().equals(name)){ + return ch_xml; + } else { + return null; + } + } else { + return null; + } + } else { + List ch_element = current.getChildren(name); + XML[] ch_xml = new XML[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + ch_xml[i] = new XML(doc, ch_element.get(i)); + } + return ch_xml; + } + } + + /** + * Liefert das erste Kind des Elements mit einem bestimmten Namen. + * Die Methode gibt das erste Kind zurück, das dem angegebenen Namen entsprechen. + * @param name Name des gesuchten Kind-Objektes + * @return Kind als XML-Objekt + */ + + public XML getChild(String name) { + if (current == null) { + Element e = doc.getRootElement(); + if (e.getName().equals(name)) { + return new XML(doc, e); + } else { + return null; + } + } else { + String[] names = name.split("/"); + Element e = current; + int i = 0; + while(i < names.length) { + e = e.getChild(names[i]); + if (e==null) return null; + i++; + } + return new XML(doc, e); + } + } + + /** + * Liefert das i. Kind des Elements. + * Die Methode gibt das i. Kind des aktuellen Elements zurück. + * @param i Nummer des Kindes + * @return Kind als XML-Objekt + */ + public XML getChild(int i) { + if (current == null) { + return new XML(doc, doc.getRootElement()); + } else { + List ch_element = current.getChildren(); + if (i>=ch_element.size()) return null; + return new XML(doc, ch_element.get(i)); + } + } + + //--------------------------------------------------- Methoden für das aktuelle Element ------------------------------------------------- + /** + * Frage den Namen des aktuellen Elements ab + * @return Namen des Elements + */ + public String getName() { + if (current==null) return ""; + return current.getName(); + } + + /** + * Setze den Namen des aktuellen Elements. + * @param name Neuer Name des Elements + */ + public void setName(String name) { + if (current==null) return; + current.setName(name); + } + + /** + * liefert die Anzahl der Attribute eines Elements. + * @return Anzahl des Attribute + */ + public int getAttributeCount() { + if (current == null) return 0; + return current.getAttributes().size(); + } + + /** + * liefert zurück, ob das aktuelle Element Attribute hat . + * @return true, wenn es Attribute gibt + */ + public boolean hasAttribute() { + if (current == null) return false; + return current.getAttributes().size()>0; + } + + /** + * Ruft alle Attribute des angegebenen Elements ab und gibt sie als Array von Strings zurück. + * @return Liste der Attributnamen + */ + public String[] listAttributes() { + if (current == null) return null; + List attr = current.getAttributes(); + String[] names = new String[attr.size()]; + for(int i=0; i < attr.size() ; i++) { + names[i] = attr.get(i).getName(); + } + return names; + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs + */ + public String getString(String attribute) { + if (current==null) return ""; + return current.getAttributeValue(attribute); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs + */ + public String getString(String attribute, String defaultValue) { + if (current==null) return defaultValue; + return current.getAttributeValue(attribute,defaultValue); + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param text neuer Wert des Attributs + */ + public void setString(String attribute, String text) { + if (current==null) return; + current.setAttribute(attribute, text); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Integer-Zahl + */ + public int getInt(String attribute) { + if (current==null) return 0; + try{ + int i = Integer.parseInt(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als Integer-Zahl + */ + public int getInt(String attribute, int defaultValue) { + if (current==null) return defaultValue; + try{ + int i = Integer.parseInt(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setInt(String attribute, int value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Float-Zahl + */ + public float getFloat(String attribute) { + if (current==null) return 0; + try{ + float i = Float.parseFloat(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als Float-Zahl + */ + public float getFloat(String attribute, float defaultValue) { + if (current==null) return defaultValue; + try{ + float i = Float.parseFloat(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setFloat(String attribute, float value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Double-Zahl + */ + public double getDouble(String attribute) { + if (current==null) return 0; + try{ + double i = Double.parseDouble(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + +/** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als double-Zahl + */ + public double getDouble(String attribute, double defaultValue) { + if (current==null) return defaultValue; + try{ + double i = Double.parseDouble(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setDouble(String attribute, double value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt den Inhalt/Text des aktuellen Elements ab + * @return Inhalt des Elements + */ + public String getContent() { + if ( current==null) return ""; + + return current.getText(); + } + + /** + * Fragt den Inhalt/Text des aktuellen Elements ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardtext + * @return Inhalt des Elements + */ + public String getContent(String defaultValue) { + if ( current==null) return defaultValue; + String t = current.getText(); + if(t.equals("")) t = defaultValue; + return t; + } + + /** + * Setzt den Inhalt/Text des aktuellen Elements + * @param text Neuer Inhalt des Elements + */ + public void setContent(String text) { + if ( current==null) return; + current.setText(text); + } + + + /** + * Fragt den Inhalt des aktuellen Elements als Integerzahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ public int getIntContent(int defaultValue) { + if ( current==null) return defaultValue; + try{ + int i = Integer.parseInt(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Integerzahl ab + * @return Inhalt des Elements + */ + public int getIntContent() { + if ( current==null) return 0; + try{ + int i = Integer.parseInt(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setIntContent(int value) { + if ( current==null) return; + current.setText(""+value); + } + + + /** + * Fragt den Inhalt des aktuellen Elements als Floatzahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ + public float getFloatContent(float defaultValue) { + if ( current==null) return defaultValue; + try{ + float i = Float.parseFloat(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Floatzahl ab + * @return Inhalt des Elements + */ + public float getFloatContent() { + if ( current==null) return 0; + try{ + float i = Float.parseFloat(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setFloatContent(float value) { + if ( current==null) return; + current.setText(""+value); + } + +/** + * Fragt den Inhalt des aktuellen Elements als Doublezahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ + public double getDoubleContent(double defaultValue) { + if ( current==null) return defaultValue; + try{ + double i = Double.parseDouble(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Doublezahl ab + * @return Inhalt des Elements + */ + public double getDoubleContent() { + if ( current==null) return 0; + try{ + double i = Double.parseDouble(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setDoubleContent(double value) { + if ( current==null) return; + current.setText(""+value); + } + + + // ----------------------------------------------- XML-Struktur aufbauen ------------------------------------------------ + /** Erzeuge neues Element nach der aktuellen Position und setze dieses als aktuelles Element + * @param name Name des neuen Elements + * @return neues Element als XML-Objekt + */ + public XML addChild(String name) { + Element e = new Element(name); + if(current == null){ // man ist auf Root-Ebene + doc.setRootElement(e); + + } + else { + current.addContent(e); + } // end of if-else + return new XML(doc, e); + } + + /** + * liefert das aktuelle Element als jdom-Element-Objekt + * @return aktuelles Element + */ + private Element getCurrent() { + return current; + } + + /** + * löscht ein Kind des aktuellen Knotens. + * Ist kid kein Kind des aktuellen Elements passiert gar nichts. + * @param kid XML-Objekt des Kindes + */ + public void removeChild(XML kid) { + if (current == null) return; + Element e = kid.getCurrent(); + int index = current.indexOf(e); + if(index >= 0) { current.removeContent(e);} + } + +} diff --git a/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a2/XYDiagramm.java b/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a2/XYDiagramm.java new file mode 100644 index 0000000..59b34d0 --- /dev/null +++ b/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a2/XYDiagramm.java @@ -0,0 +1,112 @@ +import java.awt.Font; + +/** + * XY-Diagramm für Schalldruckpegel, Zahlen werden aus CSV-Datei gelesen. + * + * @author Schaller + * @version 29.11.18 + */ + +public class XYDiagramm extends Picture + +{ + // Liste mit allen Werten + double[] x_werte; + double[] y_werte; + + // Hilfsvariablen für die Suche + int akt_maximum=-1; // aktuell groesstes Element + int akt=-1; // aktuell untersuchtes Element + int verzoegerung=0; // Geschwindigkeit der Ausführung + + // Schriften + Font kleineSchrift; + Font grosseSchrift; + + public XYDiagramm() { + size(1000, 700); + background(0); + kleineSchrift = new Font( Font.SANS_SERIF, Font.PLAIN, 12 ); + grosseSchrift = new Font( Font.SANS_SERIF, Font.PLAIN, 20 ); + + // CSV-Datei laden und anzeigen + ladeTabelle("Amplitudes.csv"); + stroke(250,250,200); + zeichneXYDiagramm(); + } + + + + public void ladeTabelle(String name) { + // Tabelle aus CSV-Datei laden + Table csv = new Table(name, "header",',','"'); + + if (csv != null && csv.getColumnCount()==2) { + + // Initialisiere Arrays, in die alle Zeilen der Tabelle passen + x_werte = new double[csv.getRowCount()]; + y_werte = new double[csv.getRowCount()]; + + // Fülle die Arrays mit Werten aus der Tabelle + for (int i = 0; i < x_werte.length; i++) { //x_werte.length; i++) { + // Lies Wert aus der i. Zeile und der Spalte "Punkte" bzw. "Name" + x_werte[i] = csv.getDouble(i, "Zeit"); + y_werte[i] = csv.getDouble(i, "Laerm"); + System.out.println("Lade Zeile: "+i); + } + } + } + + public void zeichneXYDiagramm() { + + // Überschrift + fill(255,255,255); + textFont(grosseSchrift); + text("Lärmpegel", 2, 20); + textFont(kleineSchrift); + + // Alle Einträge darstellen + if (x_werte != null) { + for (int i = 0; i< x_werte.length; i++) { + + fill(20,25,165); + + // XY-Punktdiagramm zeichnen + int x = (int) x_werte[i]; + int y = (int) y_werte[i]; + point(x,y); + System.out.println("Zeichne Punkt: "+i); + + } + } + + } + + + public int sucheMaximum(double[] zahlen) { + // Sind überhaupt Daten da? + if (zahlen.length==0 ) { + return -1; + } + + // Startwerte setzen + akt_maximum = 0; + akt = 1; + + // Alle Arrayelemente untersuchen + while (akt < zahlen.length) { + + // Neues größtes Element?? + if (zahlen[akt]> zahlen[akt_maximum]) { + // Dann merke dir das neue + akt_maximum = akt; + + } + akt = akt + 1; + } + // Gib Position des größten Elements zurück + return akt_maximum; + } + + +} diff --git a/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a2/XYDiagrammGUI.java b/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a2/XYDiagrammGUI.java new file mode 100644 index 0000000..a23d84a --- /dev/null +++ b/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a2/XYDiagrammGUI.java @@ -0,0 +1,83 @@ +import java.awt.*; +import java.awt.event.*; +import javax.swing.*; +import javax.swing.event.*; + +/** + * + * description + * + * @version 1.0 from 06.10.2018 + * @author + */ + + +public class XYDiagrammGUI extends JFrame { + // Anfang Attribute + private JButton bXYDiagrammzeichnen = new JButton(); + private PictureViewer imagePanel1 = new PictureViewer(); + + private XYDiagramm bild; + private Picture b; + // Ende Attribute + + public XYDiagrammGUI (String title) { + super (title); + setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); + int frameWidth = 768; + int frameHeight = 551; + setSize(frameWidth, frameHeight); + Dimension d = Toolkit.getDefaultToolkit().getScreenSize(); + int x = (d.width - getSize().width) / 2; + int y = (d.height - getSize().height) / 2; + setLocation(x, y); + Container cp = getContentPane(); + cp.setLayout(null); + // Anfang Komponenten + bXYDiagrammzeichnen.setBounds(280, 456, 209, 33); + bXYDiagrammzeichnen.setText("XY-Diagramm zeichnen"); + bXYDiagrammzeichnen.setMargin(new Insets(2, 2, 2, 2)); + bXYDiagrammzeichnen.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent evt) { + bXYDiagrammzeichnen_ActionPerformed(evt); + } + }); + cp.add(bXYDiagrammzeichnen); + imagePanel1.setBounds(24, 16, 705, 409); + cp.add(imagePanel1); + + b = new Picture(700,800); + imagePanel1.setImage(b); + b.setObserver(imagePanel1); + addWindowListener(new WindowAdapter() { + public void windowClosed(WindowEvent evt) { + BalkendiagrammGUI_WindowClosed(evt); + } + }); + // Ende Komponenten + setResizable(false); + setVisible(true); + } + + // Anfang Methoden + public void bXYDiagrammzeichnen_ActionPerformed(ActionEvent evt) { + bild = new XYDiagramm(); + imagePanel1.setImage(bild); + bild.setObserver(imagePanel1); + imagePanel1.getVerticalScrollBar().setValue(10); + imagePanel1.getVerticalScrollBar().setValue(0); + imagePanel1.getViewport().repaint(); + } // end of bXYDiagrammzeichnen_ActionPerformed + + public void BalkendiagrammGUI_WindowClosed(WindowEvent evt) { + + + } // end of BalkendiagrammGUI_WindowClosed + + // Ende Methoden + + public static void main(String[] args) { + new XYDiagrammGUI("XYDiagrammGUI"); + } +} + diff --git a/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a2/XYDiagrammGUI.jfm b/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a2/XYDiagrammGUI.jfm new file mode 100644 index 0000000..384f91e --- /dev/null +++ b/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a2/XYDiagrammGUI.jfm @@ -0,0 +1,104 @@ +object XYDiagrammGUI: TFGUIForm + Left = 761 + Top = 237 + BorderIcons = [biSystemMenu] + Caption = 'XYDiagrammGUI' + ClientHeight = 512 + ClientWidth = 752 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -10 + Font.Name = 'MS Sans Serif' + Font.Style = [] + FormStyle = fsStayOnTop + OldCreateOrder = True + Position = poDesigned + ShowHint = True + Visible = True + OnClose = FormClose + OnCloseQuery = FormCloseQuery + OnResize = FormResize + FrameType = 5 + Resizable = False + Undecorated = False + Background = clBtnFace + windowClosed = 'BalkendiagrammGUI_WindowClosed' + PixelsPerInch = 96 + TextHeight = 13 + object bXYDiagrammzeichnen: TJButton + Tag = 4 + Left = 280 + Top = 456 + Width = 209 + Height = 33 + Hint = 'jButton1' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Dialog' + Font.Style = [fsBold] + Foreground = 3355443 + Background = 15658734 + actionPerformed = 'bXYDiagrammzeichnen_ActionPerformed' + Text = 'XY-Diagramm zeichnen' + Mnemonic = 0 + DisplayedMnemonicIndex = 0 + Selected = False + BorderPainted = True + FocusPainted = False + ContentAreaFilled = True + HorizontalAlignment = CENTER + VerticalAlignment = CENTER + HorizontalTextPosition = RIGHT + VerticalTextPosition = CENTER + IconTextGap = 4 + RolloverEnabled = False + Border.BorderType = NoBorder + Border.LineColor = clBlack + Border.LineThickness = 0 + Border.LineRounded = False + Border.EtchHighlightColor = clBlack + Border.EtchShadowColor = clBlack + Border.Etchtype = 0 + Border.BevelHighlightColor = clBlack + Border.BevelShadowColor = clBlack + Border.Beveltype = 0 + Border.MatteColor = clBlack + Border.MatteTop = 0 + Border.MatteLeft = 0 + Border.MatteBottom = 0 + Border.MatteRight = 0 + end + object imagePanel1: TJPanel + Tag = 38 + Left = 24 + Top = 16 + Width = 705 + Height = 409 + Hint = 'imagePanel1' + HelpKeyword = 'ImagePanel' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Dialog' + Font.Style = [fsBold] + Foreground = 3355443 + Background = clBtnFace + Border.BorderType = NoBorder + Border.LineColor = clBlack + Border.LineThickness = 0 + Border.LineRounded = False + Border.EtchHighlightColor = clBlack + Border.EtchShadowColor = clBlack + Border.Etchtype = 0 + Border.BevelHighlightColor = clBlack + Border.BevelShadowColor = clBlack + Border.Beveltype = 0 + Border.MatteColor = clBlack + Border.MatteTop = 0 + Border.MatteLeft = 0 + Border.MatteBottom = 0 + Border.MatteRight = 0 + end +end diff --git a/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a2/jdom-1.1.3.jar b/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a2/jdom-1.1.3.jar new file mode 100644 index 0000000..a287727 Binary files /dev/null and b/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a2/jdom-1.1.3.jar differ diff --git a/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a2/punkte.csv b/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a2/punkte.csv new file mode 100644 index 0000000..d6e8dfd --- /dev/null +++ b/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a2/punkte.csv @@ -0,0 +1,6 @@ +"Name","Punkte" +Niko,216 +Klaus,591 +Anna,857 +Lena,180 +Winfried,168 diff --git a/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a3/Amplitudes.csv b/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a3/Amplitudes.csv new file mode 100644 index 0000000..6a3b121 --- /dev/null +++ b/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a3/Amplitudes.csv @@ -0,0 +1,12219 @@ +"Zeit","Laerm" +0.000000000E0,6.133205686E1 +1.130000000E-1,5.602431153E1 +3.840000000E-1,3.897519867E1 +7.780000000E-1,4.208195145E1 +1.036000000E0,3.840936313E1 +1.305000000E0,3.561092139E1 +1.587000000E0,4.663257633E1 +1.829000000E0,5.311883882E1 +2.084000000E0,5.299431820E1 +2.357000000E0,5.747397858E1 +2.643000000E0,5.626338063E1 +2.949000000E0,5.790811120E1 +3.238000000E0,5.874544026E1 +3.497000000E0,5.736162139E1 +3.775000000E0,5.897817442E1 +4.097000000E0,5.789822970E1 +4.357000000E0,5.312015799E1 +4.626000000E0,5.710192134E1 +4.941000000E0,6.275087240E1 +5.235000000E0,5.784358767E1 +5.535000000E0,5.388577420E1 +5.827000000E0,5.403495101E1 +6.090000000E0,5.428355086E1 +6.339000000E0,6.064473144E1 +6.616000000E0,6.271091291E1 +6.850000000E0,6.982615367E1 +7.128000000E0,7.050308750E1 +7.487000000E0,5.395311298E1 +7.760000000E0,5.036401582E1 +8.065000000E0,4.614125463E1 +8.361000000E0,6.244776407E1 +8.614000000E0,6.315719526E1 +8.862000000E0,5.981740395E1 +9.123000000E0,5.907292535E1 +9.374000000E0,5.661523092E1 +9.665000000E0,6.210368813E1 +9.948000000E0,6.140958115E1 +1.021100000E1,5.697007655E1 +1.058300000E1,5.460455934E1 +1.084000000E1,5.408516231E1 +1.115300000E1,5.907221377E1 +1.142100000E1,6.113412429E1 +1.172700000E1,6.267949704E1 +1.197100000E1,6.245109870E1 +1.226500000E1,6.342534529E1 +1.255800000E1,6.810008108E1 +1.287100000E1,6.036891848E1 +1.313400000E1,5.913231814E1 +1.342700000E1,5.973818566E1 +1.371600000E1,5.534371651E1 +1.401200000E1,5.694514867E1 +1.431200000E1,6.134814982E1 +1.461100000E1,5.900023912E1 +1.484600000E1,5.689908400E1 +1.515800000E1,5.296474858E1 +1.544000000E1,5.608528071E1 +1.569300000E1,5.728560404E1 +1.596900000E1,5.837984103E1 +1.620100000E1,5.718896638E1 +1.649200000E1,5.909973037E1 +1.678900000E1,5.705554272E1 +1.716300000E1,6.079937758E1 +1.747400000E1,5.618116117E1 +1.775200000E1,5.519881157E1 +1.803800000E1,5.402386340E1 +1.829100000E1,5.678484358E1 +1.858100000E1,5.954639303E1 +1.882300000E1,6.030021638E1 +1.908000000E1,5.588340744E1 +1.934400000E1,5.668691200E1 +1.958800000E1,6.042765467E1 +1.983400000E1,5.839794223E1 +2.008500000E1,5.457976882E1 +2.039500000E1,5.974390604E1 +2.064000000E1,6.049774386E1 +2.092900000E1,6.029857781E1 +2.117800000E1,6.116406203E1 +2.142700000E1,5.664722837E1 +2.173400000E1,5.823294996E1 +2.203100000E1,5.517538657E1 +2.229000000E1,5.322823206E1 +2.259900000E1,6.180779467E1 +2.285300000E1,6.106216386E1 +2.314900000E1,5.883321877E1 +2.347100000E1,6.045262422E1 +2.375000000E1,6.163931220E1 +2.406000000E1,4.841181734E1 +2.432800000E1,4.372149986E1 +2.462900000E1,5.625563946E1 +2.487100000E1,5.672759349E1 +2.513200000E1,5.896193725E1 +2.540800000E1,5.893011728E1 +2.566400000E1,5.857261268E1 +2.596700000E1,5.859012974E1 +2.621900000E1,5.635586832E1 +2.648700000E1,5.350948293E1 +2.673900000E1,5.430043092E1 +2.701400000E1,5.666610976E1 +2.727500000E1,5.218421407E1 +2.753100000E1,5.689076583E1 +2.782000000E1,5.796831886E1 +2.806900000E1,5.608205064E1 +2.831700000E1,5.482273815E1 +2.861600000E1,5.392425499E1 +2.888300000E1,5.329416010E1 +2.914800000E1,5.366916703E1 +2.940200000E1,5.280847155E1 +2.968000000E1,5.333298066E1 +2.994300000E1,5.497085471E1 +3.031200000E1,5.753094076E1 +3.057900000E1,5.655381974E1 +3.086100000E1,5.517704804E1 +3.115600000E1,5.592585858E1 +3.140700000E1,6.212826207E1 +3.166000000E1,5.699502474E1 +3.193500000E1,6.025129057E1 +3.223100000E1,5.686166208E1 +3.247300000E1,5.807641915E1 +3.271900000E1,6.065155151E1 +3.296400000E1,5.961384387E1 +3.320500000E1,6.119064420E1 +3.354400000E1,5.548464633E1 +3.378000000E1,5.699661616E1 +3.408000000E1,5.653770482E1 +3.438000000E1,5.083503664E1 +3.468200000E1,5.695639918E1 +3.495800000E1,5.566535489E1 +3.524700000E1,5.914853092E1 +3.552700000E1,5.758441289E1 +3.576600000E1,6.085665801E1 +3.606700000E1,5.862586334E1 +3.630600000E1,5.096841655E1 +3.662200000E1,6.009246966E1 +3.689400000E1,5.981749726E1 +3.715300000E1,6.108830629E1 +3.740300000E1,5.724514841E1 +3.766500000E1,5.934850613E1 +3.793000000E1,5.725470328E1 +3.819100000E1,5.843556167E1 +3.847700000E1,5.697759761E1 +3.874000000E1,5.721548979E1 +3.901600000E1,5.649629904E1 +3.927200000E1,5.850326911E1 +3.954600000E1,5.691951660E1 +3.993900000E1,5.357092442E1 +4.023400000E1,5.817046878E1 +4.053000000E1,5.554327077E1 +4.081200000E1,5.802928061E1 +4.103900000E1,5.663899845E1 +4.128700000E1,5.494654466E1 +4.155800000E1,5.564956216E1 +4.181900000E1,5.663250304E1 +4.211300000E1,5.652236278E1 +4.238100000E1,5.614203459E1 +4.264000000E1,5.433145844E1 +4.295000000E1,6.132645299E1 +4.326200000E1,6.040612545E1 +4.351400000E1,5.905916902E1 +4.377100000E1,5.885516023E1 +4.401000000E1,5.514814582E1 +4.430800000E1,5.663232510E1 +4.455900000E1,5.055807811E1 +4.482100000E1,5.614950318E1 +4.513300000E1,6.025044420E1 +4.537500000E1,5.643182261E1 +4.568900000E1,5.709089314E1 +4.600500000E1,5.480136123E1 +4.624500000E1,5.924046686E1 +4.656900000E1,6.172358505E1 +4.684100000E1,5.645515217E1 +4.711100000E1,6.002156043E1 +4.736300000E1,6.182669975E1 +4.759700000E1,5.557741963E1 +4.786700000E1,5.598662295E1 +4.818300000E1,5.664767890E1 +4.847900000E1,5.956168629E1 +4.874200000E1,5.713315811E1 +4.898900000E1,5.765479272E1 +4.931400000E1,5.507101982E1 +4.961600000E1,5.361677606E1 +4.990000000E1,5.558547080E1 +5.019600000E1,5.402951441E1 +5.046500000E1,5.805429700E1 +5.078800000E1,5.327636151E1 +5.110300000E1,4.980825483E1 +5.137100000E1,5.290981249E1 +5.165200000E1,4.817864123E1 +5.190100000E1,5.585478693E1 +5.214500000E1,5.457392293E1 +5.242900000E1,5.449921652E1 +5.272500000E1,5.537781025E1 +5.302100000E1,5.598018287E1 +5.326000000E1,5.612851081E1 +5.355800000E1,5.312697891E1 +5.384800000E1,5.799703575E1 +5.409200000E1,5.662162553E1 +5.433900000E1,5.392344795E1 +5.459100000E1,5.398098819E1 +5.494900000E1,5.489231889E1 +5.527100000E1,5.658153835E1 +5.552800000E1,5.624900056E1 +5.589500000E1,4.979935744E1 +5.616900000E1,5.146998424E1 +5.645400000E1,5.878755245E1 +5.668600000E1,5.846227673E1 +5.694400000E1,5.977267383E1 +5.726200000E1,5.508647523E1 +5.754400000E1,5.138853207E1 +5.784300000E1,5.327451232E1 +5.808600000E1,5.887142781E1 +5.837800000E1,5.858062431E1 +5.862200000E1,5.917458096E1 +5.889700000E1,6.050411670E1 +5.926300000E1,5.908687144E1 +5.952100000E1,5.570790758E1 +5.981900000E1,5.444849000E1 +6.006100000E1,5.201240285E1 +6.032000000E1,4.755830762E1 +6.061900000E1,5.204388424E1 +6.086500000E1,5.626914911E1 +6.117500000E1,5.280379974E1 +6.142900000E1,5.093923019E1 +6.173000000E1,5.460427137E1 +6.197800000E1,5.299601182E1 +6.230600000E1,5.424208739E1 +6.257600000E1,5.253762352E1 +6.283700000E1,5.544043962E1 +6.309800000E1,5.527614156E1 +6.335400000E1,5.747262922E1 +6.360700000E1,5.468151445E1 +6.384900000E1,5.582905565E1 +6.410700000E1,5.802400474E1 +6.435000000E1,5.204893636E1 +6.459600000E1,5.280146425E1 +6.486300000E1,4.876648093E1 +6.509700000E1,5.311679703E1 +6.537500000E1,5.192778643E1 +6.571400000E1,5.346709918E1 +6.597900000E1,5.370921552E1 +6.627900000E1,5.676705279E1 +6.652200000E1,5.832258643E1 +6.676600000E1,6.257736406E1 +6.703100000E1,6.295448429E1 +6.737800000E1,6.100964383E1 +6.766100000E1,5.182636016E1 +6.790700000E1,4.952717893E1 +6.821100000E1,5.667475715E1 +6.850300000E1,5.872819054E1 +6.882100000E1,6.004516195E1 +6.907300000E1,5.559244143E1 +6.935100000E1,5.600379936E1 +6.961500000E1,5.338006499E1 +6.987600000E1,5.360104859E1 +7.011900000E1,4.644905289E1 +7.037100000E1,4.528909123E1 +7.067200000E1,5.787885076E1 +7.091600000E1,5.602551032E1 +7.115700000E1,5.989544193E1 +7.142200000E1,6.110384869E1 +7.167900000E1,5.887448069E1 +7.192600000E1,5.797896456E1 +7.226000000E1,5.965665129E1 +7.251000000E1,6.477744226E1 +7.281200000E1,6.243775536E1 +7.310800000E1,5.921576979E1 +7.335600000E1,6.629420582E1 +7.364100000E1,6.683725429E1 +7.392300000E1,5.758295449E1 +7.418800000E1,5.654909286E1 +7.448600000E1,5.881341247E1 +7.472100000E1,5.546609910E1 +7.498300000E1,5.586542777E1 +7.526600000E1,5.463216262E1 +7.558500000E1,5.947397496E1 +7.586200000E1,6.218459899E1 +7.609800000E1,6.134189272E1 +7.635800000E1,5.727526170E1 +7.666700000E1,5.579062978E1 +7.699300000E1,6.015063828E1 +7.729000000E1,6.022787424E1 +7.756300000E1,5.646982462E1 +7.782200000E1,6.005734442E1 +7.813200000E1,5.950776839E1 +7.842200000E1,6.314009710E1 +7.880400000E1,5.425753266E1 +7.910400000E1,5.909139002E1 +7.935300000E1,5.600377253E1 +7.962300000E1,6.036368528E1 +7.993700000E1,5.940415340E1 +8.018900000E1,6.102152187E1 +8.050000000E1,6.619104713E1 +8.074000000E1,6.149981675E1 +8.098900000E1,5.978899259E1 +8.123800000E1,5.963150500E1 +8.150300000E1,6.509054947E1 +8.181300000E1,6.387458039E1 +8.220700000E1,6.421798778E1 +8.246100000E1,6.092500605E1 +8.271900000E1,6.039313205E1 +8.297100000E1,5.885189543E1 +8.328000000E1,6.068901175E1 +8.355600000E1,6.531581124E1 +8.381900000E1,6.460984287E1 +8.407800000E1,6.281147078E1 +8.435000000E1,5.961599483E1 +8.463400000E1,5.915457491E1 +8.489200000E1,5.383227231E1 +8.513000000E1,5.278474817E1 +8.551100000E1,6.165964712E1 +8.574900000E1,6.442604107E1 +8.600700000E1,6.551005247E1 +8.626000000E1,6.660338206E1 +8.650900000E1,6.304014634E1 +8.676000000E1,6.488065719E1 +8.701800000E1,6.416881833E1 +8.728000000E1,5.892166498E1 +8.754500000E1,5.946249393E1 +8.785000000E1,6.506678358E1 +8.809400000E1,5.703264442E1 +8.840500000E1,6.164086486E1 +8.876300000E1,6.276173959E1 +8.906100000E1,5.818071871E1 +8.930500000E1,5.844394446E1 +8.956300000E1,5.657440647E1 +8.987400000E1,6.120356137E1 +9.011500000E1,6.094306560E1 +9.041100000E1,5.978472131E1 +9.065500000E1,6.008128664E1 +9.092400000E1,5.758286780E1 +9.123300000E1,5.353387594E1 +9.151600000E1,5.676204998E1 +9.183800000E1,5.245702159E1 +9.218200000E1,5.642589170E1 +9.243600000E1,5.542467479E1 +9.268000000E1,5.580829615E1 +9.297600000E1,5.148061441E1 +9.322800000E1,4.635974806E1 +9.353200000E1,5.465579762E1 +9.377300000E1,5.154999739E1 +9.402200000E1,5.544992474E1 +9.427900000E1,5.302390200E1 +9.453300000E1,5.127982623E1 +9.478800000E1,5.263086656E1 +9.503100000E1,5.128121484E1 +9.532100000E1,5.061466876E1 +9.557700000E1,5.328260476E1 +9.582800000E1,5.101663724E1 +9.607100000E1,5.400893265E1 +9.640400000E1,5.756552061E1 +9.665500000E1,5.665487755E1 +9.690400000E1,5.719000980E1 +9.715400000E1,5.593995548E1 +9.740400000E1,5.420194495E1 +9.771300000E1,4.867232074E1 +9.802100000E1,5.053798103E1 +9.830700000E1,4.874294948E1 +9.857500000E1,5.754515654E1 +9.883700000E1,5.863618568E1 +9.909700000E1,6.070195076E1 +9.935300000E1,5.434874196E1 +9.961300000E1,6.163600431E1 +9.987300000E1,5.555228218E1 +1.001200000E2,5.733850418E1 +1.003910000E2,6.133233800E1 +1.006620000E2,5.853313440E1 +1.009020000E2,5.435835494E1 +1.011680000E2,5.329891948E1 +1.014680000E2,5.356470018E1 +1.018410000E2,5.574288130E1 +1.021370000E2,5.927571979E1 +1.024000000E2,5.789956910E1 +1.026980000E2,6.081738139E1 +1.029540000E2,5.575615853E1 +1.032580000E2,5.337382111E1 +1.035140000E2,5.562761746E1 +1.038150000E2,5.905624776E1 +1.041040000E2,5.696105750E1 +1.043990000E2,6.170938149E1 +1.046370000E2,5.823687000E1 +1.049080000E2,6.066674703E1 +1.051740000E2,6.220969933E1 +1.054810000E2,5.755805236E1 +1.057660000E2,5.735691579E1 +1.060450000E2,5.761618087E1 +1.063040000E2,5.188413372E1 +1.065680000E2,5.643639822E1 +1.068740000E2,5.312430876E1 +1.071280000E2,5.924995828E1 +1.073900000E2,5.546187342E1 +1.076920000E2,5.474389270E1 +1.079790000E2,5.600814816E1 +1.082440000E2,5.561453096E1 +1.084980000E2,5.408559240E1 +1.087580000E2,5.622058302E1 +1.090160000E2,5.768852773E1 +1.092670000E2,5.516804842E1 +1.095340000E2,5.973626648E1 +1.098120000E2,6.403409511E1 +1.100690000E2,6.035201036E1 +1.103490000E2,5.940482770E1 +1.105950000E2,5.932126109E1 +1.108600000E2,5.859387697E1 +1.111460000E2,5.929800416E1 +1.114110000E2,5.930503134E1 +1.117890000E2,6.170536210E1 +1.120410000E2,6.214563711E1 +1.123490000E2,5.810151097E1 +1.126320000E2,5.823719807E1 +1.128910000E2,6.454485320E1 +1.131870000E2,6.755031626E1 +1.134560000E2,6.410743881E1 +1.137200000E2,5.913442857E1 +1.139870000E2,6.382823805E1 +1.142400000E2,5.859239523E1 +1.145180000E2,5.135859796E1 +1.147890000E2,5.294563188E1 +1.151440000E2,5.357868048E1 +1.154220000E2,5.561359505E1 +1.156620000E2,5.645675088E1 +1.159670000E2,5.879425595E1 +1.162610000E2,5.918610512E1 +1.164990000E2,6.083658676E1 +1.167470000E2,5.526645697E1 +1.169880000E2,5.471312988E1 +1.172910000E2,6.211796732E1 +1.175510000E2,5.417468648E1 +1.177930000E2,5.576739557E1 +1.180750000E2,5.912472365E1 +1.184660000E2,5.718213173E1 +1.187710000E2,5.747081312E1 +1.190170000E2,5.741742618E1 +1.192690000E2,5.379557814E1 +1.195330000E2,5.428733520E1 +1.197780000E2,6.177329402E1 +1.200450000E2,5.672333166E1 +1.203170000E2,5.584947723E1 +1.205670000E2,5.382665718E1 +1.208400000E2,5.443690083E1 +1.211280000E2,5.221565874E1 +1.214800000E2,5.516249741E1 +1.217540000E2,5.676279334E1 +1.220050000E2,5.303796336E1 +1.222680000E2,5.258840561E1 +1.225120000E2,5.671935607E1 +1.227660000E2,4.902892756E1 +1.230240000E2,4.264962220E1 +1.232830000E2,4.818154680E1 +1.235340000E2,5.204058636E1 +1.238430000E2,5.649936271E1 +1.241410000E2,5.396154490E1 +1.244200000E2,5.428877275E1 +1.246760000E2,4.778715710E1 +1.249500000E2,4.912370762E1 +1.252110000E2,5.114426735E1 +1.255020000E2,5.345096378E1 +1.257410000E2,5.581149074E1 +1.260430000E2,5.211774829E1 +1.263320000E2,5.470047014E1 +1.265660000E2,5.399085344E1 +1.268600000E2,5.981732528E1 +1.271210000E2,5.944116770E1 +1.273530000E2,5.668281238E1 +1.275970000E2,5.042419391E1 +1.279080000E2,5.014554177E1 +1.282260000E2,5.350461413E1 +1.285240000E2,5.453533258E1 +1.287780000E2,5.809919663E1 +1.290280000E2,5.729580956E1 +1.292980000E2,5.681749266E1 +1.296010000E2,5.542882864E1 +1.298980000E2,5.612046892E1 +1.302070000E2,6.074750886E1 +1.304620000E2,5.979349108E1 +1.307520000E2,5.806574219E1 +1.310590000E2,5.738881777E1 +1.314010000E2,5.595280312E1 +1.316630000E2,5.401154636E1 +1.319120000E2,5.499471091E1 +1.321620000E2,5.551354327E1 +1.324640000E2,6.567912108E1 +1.327650000E2,5.725129100E1 +1.330150000E2,6.452906176E1 +1.333160000E2,5.778565576E1 +1.335760000E2,6.242194617E1 +1.338200000E2,5.570863747E1 +1.340710000E2,5.755877138E1 +1.343660000E2,6.819206156E1 +1.346260000E2,6.094769164E1 +1.349310000E2,6.447198163E1 +1.351810000E2,5.482297950E1 +1.354630000E2,6.327012623E1 +1.357210000E2,5.723157337E1 +1.359770000E2,5.835004111E1 +1.362140000E2,6.413045068E1 +1.365290000E2,6.022343539E1 +1.368110000E2,5.969265006E1 +1.371070000E2,5.589766444E1 +1.373670000E2,6.089100679E1 +1.376970000E2,6.762783521E1 +1.379410000E2,5.740809854E1 +1.381870000E2,6.711182247E1 +1.384650000E2,6.290175574E1 +1.387060000E2,6.352322572E1 +1.390400000E2,5.897504025E1 +1.392980000E2,5.872568346E1 +1.396520000E2,5.582882684E1 +1.399140000E2,5.874428562E1 +1.402160000E2,5.275369064E1 +1.404650000E2,5.181123336E1 +1.407250000E2,4.758951485E1 +1.410550000E2,4.601470876E1 +1.413500000E2,5.203790008E1 +1.416310000E2,5.380793436E1 +1.418780000E2,5.006781735E1 +1.421580000E2,4.792469964E1 +1.424020000E2,5.136650820E1 +1.427060000E2,5.127969468E1 +1.430200000E2,5.304643312E1 +1.433210000E2,5.218299100E1 +1.436050000E2,5.568762266E1 +1.439010000E2,5.522696018E1 +1.442570000E2,5.919224289E1 +1.445880000E2,6.201398016E1 +1.448680000E2,5.750742223E1 +1.451160000E2,5.811963790E1 +1.454090000E2,5.695462128E1 +1.456560000E2,5.854812337E1 +1.458980000E2,5.886107911E1 +1.461720000E2,5.454171305E1 +1.464480000E2,5.674410925E1 +1.466770000E2,5.450912101E1 +1.469270000E2,5.953864028E1 +1.471790000E2,6.097527460E1 +1.475260000E2,5.825769450E1 +1.478290000E2,5.780473579E1 +1.480790000E2,6.185542851E1 +1.483350000E2,5.390929394E1 +1.486330000E2,5.400087479E1 +1.488750000E2,5.328656685E1 +1.491190000E2,5.599536596E1 +1.494200000E2,5.721648542E1 +1.497150000E2,5.787493165E1 +1.500380000E2,5.480047158E1 +1.503480000E2,5.002404450E1 +1.506590000E2,5.486151348E1 +1.509700000E2,6.245235750E1 +1.512360000E2,5.831236552E1 +1.514820000E2,6.253825815E1 +1.517260000E2,6.440134635E1 +1.520120000E2,5.646251942E1 +1.523080000E2,5.569851104E1 +1.525630000E2,5.574195002E1 +1.528610000E2,6.073633455E1 +1.531220000E2,5.704364811E1 +1.533960000E2,5.858521931E1 +1.536900000E2,6.334346239E1 +1.540080000E2,5.734505299E1 +1.542490000E2,6.522555977E1 +1.544980000E2,5.500712815E1 +1.547420000E2,5.698741268E1 +1.549830000E2,5.097374633E1 +1.552760000E2,5.421781291E1 +1.555100000E2,5.276919678E1 +1.558070000E2,5.444895965E1 +1.560410000E2,5.023818561E1 +1.563440000E2,5.460917302E1 +1.565880000E2,5.459938847E1 +1.568920000E2,5.843131092E1 +1.572210000E2,5.876667307E1 +1.574850000E2,5.735202828E1 +1.577300000E2,5.496399564E1 +1.580290000E2,5.249359356E1 +1.582920000E2,5.216967072E1 +1.585400000E2,5.506360532E1 +1.588040000E2,4.854470136E1 +1.590480000E2,5.455647594E1 +1.593040000E2,5.480802962E1 +1.595560000E2,5.117555202E1 +1.598230000E2,5.525001141E1 +1.600680000E2,6.028739680E1 +1.604080000E2,6.051466285E1 +1.606910000E2,5.941686107E1 +1.609450000E2,6.263789003E1 +1.611920000E2,5.862463866E1 +1.614980000E2,5.858673558E1 +1.617730000E2,5.766546261E1 +1.620210000E2,5.485521148E1 +1.623080000E2,5.814732367E1 +1.625850000E2,5.829863647E1 +1.628370000E2,5.473457172E1 +1.631510000E2,5.323729241E1 +1.634320000E2,5.795543593E1 +1.637670000E2,5.845831909E1 +1.640670000E2,5.883503284E1 +1.643040000E2,5.933733684E1 +1.645990000E2,5.316483696E1 +1.648620000E2,5.628275472E1 +1.651110000E2,5.612764782E1 +1.654290000E2,5.739409022E1 +1.657290000E2,5.275374209E1 +1.660100000E2,5.606330732E1 +1.662350000E2,4.973765069E1 +1.664840000E2,4.855931683E1 +1.667820000E2,4.830487304E1 +1.670210000E2,5.643349546E1 +1.672820000E2,5.752246312E1 +1.675830000E2,5.576545129E1 +1.678330000E2,5.583582770E1 +1.681390000E2,5.301617697E1 +1.684460000E2,5.088408561E1 +1.686990000E2,5.149775091E1 +1.690030000E2,6.019099852E1 +1.692410000E2,6.143998752E1 +1.695380000E2,6.183098470E1 +1.697780000E2,5.964256200E1 +1.701420000E2,5.648358262E1 +1.703870000E2,5.768033788E1 +1.706360000E2,5.037521789E1 +1.709530000E2,5.268785935E1 +1.712030000E2,5.850048969E1 +1.714650000E2,5.537813713E1 +1.717710000E2,5.989062491E1 +1.720770000E2,6.371629733E1 +1.723380000E2,5.413135778E1 +1.726060000E2,5.582389161E1 +1.729040000E2,6.344770094E1 +1.731770000E2,6.038125570E1 +1.735090000E2,5.229655017E1 +1.737830000E2,5.594074665E1 +1.740430000E2,6.258802116E1 +1.743030000E2,5.773122794E1 +1.745600000E2,5.533899998E1 +1.748290000E2,5.069657364E1 +1.750850000E2,6.285550191E1 +1.753480000E2,5.470504416E1 +1.756240000E2,5.746379759E1 +1.758870000E2,5.928233462E1 +1.761350000E2,5.214791610E1 +1.763840000E2,5.260177806E1 +1.767030000E2,4.844041050E1 +1.769490000E2,5.275717684E1 +1.772330000E2,5.436891746E1 +1.774780000E2,5.441421810E1 +1.777590000E2,5.485847839E1 +1.780320000E2,5.714239097E1 +1.782910000E2,6.028837304E1 +1.785470000E2,5.706420775E1 +1.788380000E2,5.509582512E1 +1.791200000E2,5.674185072E1 +1.794340000E2,5.437491314E1 +1.796940000E2,5.696592309E1 +1.799990000E2,5.344092263E1 +1.802540000E2,5.414345246E1 +1.804960000E2,5.421992498E1 +1.808400000E2,5.317024536E1 +1.811450000E2,5.422714635E1 +1.814530000E2,5.933207779E1 +1.817720000E2,5.916706050E1 +1.820730000E2,5.685980261E1 +1.824210000E2,5.521649456E1 +1.826850000E2,5.651993888E1 +1.829810000E2,5.707596711E1 +1.832810000E2,5.464130538E1 +1.836160000E2,5.364065008E1 +1.838600000E2,5.913078622E1 +1.841080000E2,5.695541400E1 +1.843520000E2,6.237274690E1 +1.846510000E2,6.017101966E1 +1.848950000E2,5.670915019E1 +1.851380000E2,5.651470649E1 +1.854400000E2,5.919691857E1 +1.857560000E2,5.752836475E1 +1.860680000E2,6.133052078E1 +1.863670000E2,6.001801442E1 +1.866740000E2,5.871186574E1 +1.869510000E2,5.858669373E1 +1.872240000E2,5.722343490E1 +1.875200000E2,5.725198568E1 +1.877700000E2,5.560524182E1 +1.880340000E2,5.419540118E1 +1.882980000E2,6.169219144E1 +1.885790000E2,5.704261604E1 +1.888700000E2,5.651125138E1 +1.891060000E2,5.778536485E1 +1.894110000E2,5.304160496E1 +1.896990000E2,5.105254388E1 +1.900460000E2,5.338626279E1 +1.902980000E2,5.090929652E1 +1.905360000E2,5.235399183E1 +1.907970000E2,5.429173243E1 +1.910620000E2,5.376238901E1 +1.913500000E2,6.411203098E1 +1.916020000E2,6.235211697E1 +1.919100000E2,5.719243884E1 +1.922140000E2,5.965550680E1 +1.925010000E2,5.850063986E1 +1.928110000E2,6.013906156E1 +1.930480000E2,5.912633730E1 +1.934000000E2,5.860712099E1 +1.936870000E2,5.944287516E1 +1.939980000E2,5.676076088E1 +1.942520000E2,5.712881871E1 +1.945490000E2,5.515631677E1 +1.948870000E2,5.670925955E1 +1.951320000E2,5.768263389E1 +1.954210000E2,5.735243887E1 +1.957290000E2,5.883798740E1 +1.960030000E2,5.654393164E1 +1.963340000E2,5.345251733E1 +1.966710000E2,5.034487882E1 +1.969060000E2,5.741493139E1 +1.971980000E2,5.877434013E1 +1.974210000E2,5.965387227E1 +1.977200000E2,6.306941384E1 +1.979730000E2,6.004201692E1 +1.982230000E2,6.106500017E1 +1.984800000E2,5.674857861E1 +1.987290000E2,6.020914127E1 +1.990680000E2,6.067289060E1 +1.993460000E2,5.996658083E1 +1.996390000E2,5.676340490E1 +1.999500000E2,5.612304129E1 +2.002130000E2,6.289766509E1 +2.005150000E2,5.720971103E1 +2.008280000E2,5.752136939E1 +2.010940000E2,6.058659890E1 +2.013440000E2,5.618430636E1 +2.016270000E2,6.056271249E1 +2.019400000E2,5.729198827E1 +2.022100000E2,5.793084452E1 +2.025070000E2,5.787194228E1 +2.027910000E2,5.959620014E1 +2.030940000E2,6.012062596E1 +2.033180000E2,6.276377758E1 +2.036210000E2,5.834405857E1 +2.039320000E2,5.545225289E1 +2.042050000E2,5.829439447E1 +2.044730000E2,5.799912649E1 +2.047970000E2,5.444896398E1 +2.050680000E2,5.743866699E1 +2.053150000E2,5.862448994E1 +2.055880000E2,5.778478934E1 +2.058890000E2,5.527981007E1 +2.061620000E2,5.742523507E1 +2.064580000E2,5.472188821E1 +2.067100000E2,6.202721053E1 +2.069630000E2,5.861698013E1 +2.072080000E2,6.294616718E1 +2.074730000E2,6.321186761E1 +2.077380000E2,5.776609523E1 +2.080390000E2,6.061292698E1 +2.083320000E2,5.857532480E1 +2.085870000E2,5.800369352E1 +2.088450000E2,5.977447345E1 +2.091070000E2,5.957010157E1 +2.093520000E2,6.145770306E1 +2.096060000E2,6.176056517E1 +2.098580000E2,6.033519811E1 +2.100970000E2,6.429628489E1 +2.103980000E2,6.215353584E1 +2.106470000E2,6.299048914E1 +2.109300000E2,6.133544133E1 +2.112010000E2,5.397487394E1 +2.114250000E2,5.313920655E1 +2.116740000E2,5.552710709E1 +2.119140000E2,5.692289703E1 +2.121730000E2,5.618691953E1 +2.124220000E2,5.402804715E1 +2.127170000E2,5.390450402E1 +2.129570000E2,5.652515030E1 +2.132580000E2,5.490504921E1 +2.135120000E2,5.485761082E1 +2.137850000E2,6.486277416E1 +2.140520000E2,6.121826472E1 +2.143580000E2,6.355465948E1 +2.146390000E2,5.534291145E1 +2.148790000E2,6.610858745E1 +2.151670000E2,5.617739728E1 +2.154670000E2,5.426651762E1 +2.157300000E2,5.840247716E1 +2.160830000E2,5.257749691E1 +2.163200000E2,6.345809118E1 +2.165810000E2,6.020490407E1 +2.168390000E2,5.603372378E1 +2.170870000E2,5.452432165E1 +2.173530000E2,5.679931822E1 +2.176220000E2,6.225558234E1 +2.179360000E2,5.991886985E1 +2.182430000E2,6.307902574E1 +2.184780000E2,6.764692456E1 +2.187700000E2,6.696013302E1 +2.190280000E2,6.419552300E1 +2.193390000E2,6.401831507E1 +2.196000000E2,6.317016249E1 +2.198590000E2,6.093052958E1 +2.201380000E2,6.446513941E1 +2.204220000E2,6.075454080E1 +2.206690000E2,6.712020778E1 +2.209300000E2,5.440050354E1 +2.212550000E2,5.627963451E1 +2.215550000E2,6.358778444E1 +2.217990000E2,5.793661873E1 +2.220730000E2,6.448679664E1 +2.223050000E2,5.844994198E1 +2.226510000E2,5.802583418E1 +2.229440000E2,5.848297014E1 +2.231840000E2,6.170695891E1 +2.234220000E2,6.201301769E1 +2.236630000E2,6.049179870E1 +2.239600000E2,6.316843106E1 +2.242020000E2,5.818837652E1 +2.245150000E2,6.411353278E1 +2.248330000E2,6.458398711E1 +2.250670000E2,6.303280227E1 +2.253240000E2,6.378696379E1 +2.255670000E2,6.157533943E1 +2.259260000E2,5.845901257E1 +2.261910000E2,5.623331182E1 +2.264460000E2,5.550822889E1 +2.267020000E2,5.907003722E1 +2.270220000E2,6.300043778E1 +2.273130000E2,5.934584116E1 +2.275640000E2,5.367094537E1 +2.278520000E2,6.260544714E1 +2.281140000E2,5.666507163E1 +2.283970000E2,6.099713971E1 +2.287020000E2,5.943082312E1 +2.289450000E2,6.095935321E1 +2.292950000E2,5.939706013E1 +2.296230000E2,5.612117806E1 +2.299220000E2,5.805831404E1 +2.301570000E2,5.496048372E1 +2.304070000E2,5.335836124E1 +2.306490000E2,5.043808989E1 +2.309270000E2,4.778025574E1 +2.311680000E2,4.613189565E1 +2.314100000E2,4.740314381E1 +2.316580000E2,5.230056147E1 +2.319150000E2,5.672989332E1 +2.321590000E2,6.081799709E1 +2.325030000E2,5.909736866E1 +2.327570000E2,5.528762811E1 +2.330520000E2,6.623131701E1 +2.333360000E2,6.376149752E1 +2.335730000E2,6.088376871E1 +2.338700000E2,6.235681388E1 +2.341160000E2,6.060610548E1 +2.343930000E2,5.779254532E1 +2.346370000E2,5.570043106E1 +2.349010000E2,6.172637016E1 +2.351520000E2,5.865545525E1 +2.354420000E2,6.250465685E1 +2.356850000E2,6.494272879E1 +2.359310000E2,6.075163542E1 +2.361840000E2,5.742858606E1 +2.364460000E2,5.756917813E1 +2.366990000E2,6.169927684E1 +2.370080000E2,5.540268710E1 +2.373040000E2,5.484088652E1 +2.376000000E2,5.732112773E1 +2.378800000E2,5.184194161E1 +2.381270000E2,5.604168635E1 +2.383910000E2,5.644051218E1 +2.387130000E2,6.049774032E1 +2.390290000E2,6.303013407E1 +2.392800000E2,6.115111046E1 +2.395770000E2,6.294174883E1 +2.398740000E2,6.716012591E1 +2.401880000E2,7.075117191E1 +2.404890000E2,6.435561631E1 +2.407550000E2,5.593172595E1 +2.410720000E2,5.781614361E1 +2.413350000E2,5.497792445E1 +2.416080000E2,5.569244646E1 +2.418870000E2,5.408109683E1 +2.421100000E2,5.687440525E1 +2.424230000E2,6.415333296E1 +2.427170000E2,6.528722740E1 +2.429900000E2,6.229384329E1 +2.432350000E2,5.452507698E1 +2.434960000E2,5.248331654E1 +2.437450000E2,5.069826347E1 +2.439880000E2,4.989889277E1 +2.442610000E2,5.196931346E1 +2.445130000E2,4.988417717E1 +2.448120000E2,5.950968466E1 +2.451200000E2,5.725324421E1 +2.454210000E2,5.902908729E1 +2.456980000E2,5.857784521E1 +2.459650000E2,5.154496059E1 +2.462670000E2,5.316738342E1 +2.465660000E2,5.681338179E1 +2.468580000E2,5.486468116E1 +2.471080000E2,5.378622946E1 +2.473840000E2,5.263910847E1 +2.477040000E2,5.102724000E1 +2.479590000E2,4.958128022E1 +2.482070000E2,5.621813465E1 +2.486190000E2,5.553111013E1 +2.489120000E2,5.711728514E1 +2.491630000E2,6.098223102E1 +2.494610000E2,5.812970142E1 +2.497290000E2,5.874411947E1 +2.500090000E2,6.058797235E1 +2.503160000E2,5.921850964E1 +2.506300000E2,5.825659244E1 +2.508940000E2,5.902074554E1 +2.512250000E2,5.857720223E1 +2.514860000E2,5.834259509E1 +2.517560000E2,5.664723408E1 +2.520110000E2,6.245873243E1 +2.522800000E2,6.018081628E1 +2.525490000E2,6.060905480E1 +2.527980000E2,6.098924059E1 +2.530310000E2,6.604497204E1 +2.532750000E2,5.762503683E1 +2.535750000E2,5.946675250E1 +2.538150000E2,5.696283688E1 +2.541120000E2,5.795434272E1 +2.543420000E2,5.641662406E1 +2.546470000E2,6.001503419E1 +2.549610000E2,5.913147779E1 +2.552050000E2,5.772050526E1 +2.554250000E2,5.986895040E1 +2.557400000E2,4.836792039E1 +2.560130000E2,4.818172752E1 +2.563450000E2,5.244597112E1 +2.566130000E2,5.174954560E1 +2.568650000E2,5.165225717E1 +2.571100000E2,4.865803315E1 +2.573530000E2,4.773689375E1 +2.576460000E2,5.375353685E1 +2.579030000E2,5.630041837E1 +2.582540000E2,5.390583403E1 +2.585030000E2,5.686416101E1 +2.588120000E2,5.880170204E1 +2.590630000E2,5.373023259E1 +2.593590000E2,6.009405077E1 +2.596120000E2,5.710673366E1 +2.598560000E2,5.891240789E1 +2.600990000E2,5.960890080E1 +2.603510000E2,6.728594423E1 +2.606060000E2,6.334340199E1 +2.609270000E2,6.082175509E1 +2.611830000E2,5.750083619E1 +2.615060000E2,5.667484133E1 +2.618070000E2,6.152760439E1 +2.620430000E2,5.697586540E1 +2.623440000E2,5.674189037E1 +2.625730000E2,5.539036876E1 +2.628210000E2,4.901745514E1 +2.631270000E2,5.264848299E1 +2.634230000E2,5.038277380E1 +2.636750000E2,5.149234245E1 +2.639170000E2,4.604207892E1 +2.641630000E2,5.735184247E1 +2.644630000E2,5.659523444E1 +2.648080000E2,5.697978691E1 +2.650640000E2,5.691301726E1 +2.653540000E2,5.696584583E1 +2.656480000E2,5.138210199E1 +2.659030000E2,5.345758564E1 +2.661640000E2,5.363588256E1 +2.664240000E2,5.471656895E1 +2.666720000E2,5.140760448E1 +2.669400000E2,5.329005020E1 +2.671940000E2,5.422388323E1 +2.674460000E2,5.133919880E1 +2.677140000E2,5.690801972E1 +2.681270000E2,5.964609863E1 +2.684030000E2,6.167901240E1 +2.686970000E2,5.297205648E1 +2.689350000E2,5.530010894E1 +2.692310000E2,5.450325538E1 +2.694700000E2,5.391690578E1 +2.697660000E2,5.420666075E1 +2.700010000E2,4.962510480E1 +2.702390000E2,5.010058679E1 +2.705460000E2,5.345147952E1 +2.708590000E2,5.574757195E1 +2.711770000E2,5.571208034E1 +2.714720000E2,5.288998421E1 +2.717170000E2,5.214438195E1 +2.720190000E2,5.232798978E1 +2.723080000E2,6.045263056E1 +2.725500000E2,5.870512300E1 +2.727930000E2,5.577911819E1 +2.730760000E2,5.501493048E1 +2.733800000E2,5.433475343E1 +2.736720000E2,5.293457700E1 +2.739070000E2,5.486483547E1 +2.741780000E2,6.008208952E1 +2.745050000E2,5.845984546E1 +2.748040000E2,5.900764997E1 +2.751070000E2,5.760203457E1 +2.754240000E2,5.795024632E1 +2.757280000E2,6.182748257E1 +2.760340000E2,5.683205968E1 +2.763350000E2,5.821402367E1 +2.766080000E2,5.520672517E1 +2.768980000E2,5.645892504E1 +2.772030000E2,5.463906896E1 +2.775200000E2,5.412722413E1 +2.777910000E2,5.268636730E1 +2.780870000E2,5.566734184E1 +2.783350000E2,5.745256931E1 +2.785810000E2,5.645167582E1 +2.788270000E2,5.925831320E1 +2.790840000E2,5.591320738E1 +2.793690000E2,5.632637646E1 +2.796200000E2,6.252281740E1 +2.799120000E2,5.547643277E1 +2.801570000E2,6.021611275E1 +2.804580000E2,5.732676882E1 +2.808110000E2,5.909573770E1 +2.810780000E2,6.005240162E1 +2.813300000E2,5.965022185E1 +2.815820000E2,6.135840817E1 +2.818790000E2,5.970629096E1 +2.821590000E2,5.879025140E1 +2.824010000E2,5.747324456E1 +2.826520000E2,5.726379384E1 +2.828950000E2,5.871306541E1 +2.831920000E2,6.188032415E1 +2.834710000E2,6.066582287E1 +2.837110000E2,5.950933244E1 +2.840350000E2,5.901018860E1 +2.843000000E2,5.761182729E1 +2.846050000E2,5.446909438E1 +2.848570000E2,5.349219985E1 +2.851700000E2,5.015518748E1 +2.854330000E2,5.374610595E1 +2.857270000E2,5.877223624E1 +2.860310000E2,5.644512377E1 +2.863080000E2,5.711327205E1 +2.865540000E2,5.655239592E1 +2.867930000E2,5.833716670E1 +2.871150000E2,5.417781453E1 +2.874030000E2,5.332227783E1 +2.876540000E2,5.146836736E1 +2.879540000E2,5.452228720E1 +2.881970000E2,5.025406823E1 +2.884910000E2,5.490648375E1 +2.887280000E2,5.506242221E1 +2.890210000E2,5.400927835E1 +2.892600000E2,5.781126179E1 +2.895430000E2,6.384283902E1 +2.898470000E2,6.340395874E1 +2.901430000E2,5.555395770E1 +2.904560000E2,5.514224078E1 +2.907530000E2,5.346566906E1 +2.910000000E2,5.948406902E1 +2.912590000E2,6.362292628E1 +2.915300000E2,6.175065463E1 +2.918240000E2,6.129817533E1 +2.920790000E2,6.317618325E1 +2.923350000E2,6.137933812E1 +2.926010000E2,5.620086793E1 +2.928740000E2,5.715913846E1 +2.931780000E2,7.028942499E1 +2.934620000E2,6.774357618E1 +2.937770000E2,6.989950413E1 +2.940270000E2,6.631119439E1 +2.943030000E2,6.956920703E1 +2.945570000E2,6.352936554E1 +2.948100000E2,6.981123112E1 +2.951150000E2,5.607171784E1 +2.953950000E2,5.394017247E1 +2.956980000E2,7.110851253E1 +2.959460000E2,6.978848906E1 +2.961900000E2,5.446752823E1 +2.965090000E2,6.309281755E1 +2.968110000E2,6.647752141E1 +2.971300000E2,6.773248230E1 +2.974240000E2,6.289421429E1 +2.977060000E2,5.998905240E1 +2.979500000E2,6.016152671E1 +2.981940000E2,5.851705490E1 +2.984880000E2,6.506323043E1 +2.987430000E2,5.702053645E1 +2.990110000E2,4.890963733E1 +2.993040000E2,5.105737182E1 +2.995650000E2,4.950865545E1 +2.998150000E2,4.713536225E1 +3.000860000E2,6.170154569E1 +3.003780000E2,5.697995513E1 +3.006750000E2,6.496205179E1 +3.009180000E2,5.585602045E1 +3.012120000E2,5.317421587E1 +3.015130000E2,5.532213468E1 +3.017840000E2,5.371543715E1 +3.020520000E2,6.741141038E1 +3.023220000E2,6.638671809E1 +3.025730000E2,5.833940482E1 +3.028700000E2,6.272205104E1 +3.031230000E2,6.150676490E1 +3.034050000E2,6.571826996E1 +3.036710000E2,6.387001854E1 +3.039460000E2,5.704179120E1 +3.042380000E2,5.452420344E1 +3.044730000E2,6.911436343E1 +3.047670000E2,6.747337761E1 +3.050070000E2,6.642457947E1 +3.053010000E2,6.704052830E1 +3.055360000E2,6.335116163E1 +3.058350000E2,6.452879154E1 +3.061310000E2,6.588892290E1 +3.064460000E2,6.065604325E1 +3.066970000E2,5.884139521E1 +3.069890000E2,6.115548360E1 +3.072650000E2,5.474220631E1 +3.075290000E2,5.525228633E1 +3.077890000E2,5.546520153E1 +3.080280000E2,5.799541194E1 +3.083270000E2,5.467819740E1 +3.086250000E2,5.227747322E1 +3.089260000E2,5.802220937E1 +3.091970000E2,5.383690373E1 +3.095040000E2,5.794687305E1 +3.097810000E2,5.426386053E1 +3.100000000E2,5.745164866E1 +3.103300000E2,5.475501144E1 +3.106240000E2,5.154802151E1 +3.108750000E2,5.434380726E1 +3.111540000E2,5.533246388E1 +3.114150000E2,5.554218476E1 +3.116740000E2,5.375334275E1 +3.119200000E2,5.727216331E1 +3.121680000E2,5.235396651E1 +3.124720000E2,6.207307801E1 +3.127180000E2,6.488896117E1 +3.130530000E2,6.168970511E1 +3.133080000E2,6.010687101E1 +3.135950000E2,6.305386662E1 +3.138880000E2,6.214030252E1 +3.141410000E2,5.907513997E1 +3.143960000E2,6.064308138E1 +3.146480000E2,6.195321339E1 +3.148870000E2,6.088765310E1 +3.151830000E2,5.906360624E1 +3.154280000E2,5.864981040E1 +3.157360000E2,5.824424792E1 +3.159750000E2,5.826399021E1 +3.163740000E2,6.051726612E1 +3.166320000E2,6.011967909E1 +3.168940000E2,5.577110603E1 +3.172010000E2,5.372586587E1 +3.174460000E2,5.537091967E1 +3.176890000E2,5.504912063E1 +3.179320000E2,5.264203521E1 +3.182150000E2,5.344854544E1 +3.184600000E2,5.656777951E1 +3.187200000E2,5.398435402E1 +3.189820000E2,5.410695962E1 +3.192460000E2,5.344168860E1 +3.195780000E2,5.697626360E1 +3.198350000E2,6.073105615E1 +3.200880000E2,6.621432780E1 +3.203460000E2,6.597785722E1 +3.205980000E2,5.907542432E1 +3.208920000E2,5.702769809E1 +3.211760000E2,6.207459825E1 +3.214520000E2,5.921715282E1 +3.217010000E2,5.501368146E1 +3.220030000E2,5.927746858E1 +3.223090000E2,5.878714279E1 +3.226530000E2,6.209253703E1 +3.229180000E2,5.801419316E1 +3.231660000E2,6.150680788E1 +3.234110000E2,5.950436139E1 +3.236660000E2,5.694006868E1 +3.239890000E2,5.964691948E1 +3.242420000E2,6.322261269E1 +3.245070000E2,5.967413832E1 +3.247540000E2,5.743115651E1 +3.250010000E2,5.693057833E1 +3.252760000E2,5.076009335E1 +3.255600000E2,5.432440321E1 +3.258270000E2,5.728583073E1 +3.262160000E2,6.158050311E1 +3.264570000E2,5.788548067E1 +3.267330000E2,5.661485397E1 +3.270280000E2,5.698735139E1 +3.272870000E2,5.428158234E1 +3.275550000E2,5.401192370E1 +3.278320000E2,5.894424302E1 +3.281050000E2,5.279140275E1 +3.283850000E2,5.366788524E1 +3.286760000E2,5.569462346E1 +3.289750000E2,5.484501656E1 +3.292730000E2,5.654335493E1 +3.295550000E2,5.483429560E1 +3.298560000E2,5.516099131E1 +3.301720000E2,5.150081287E1 +3.304560000E2,5.126263973E1 +3.307930000E2,4.943715566E1 +3.310330000E2,5.297477083E1 +3.312800000E2,4.994759883E1 +3.316030000E2,5.283028939E1 +3.318860000E2,5.150402936E1 +3.321790000E2,5.777668868E1 +3.325470000E2,5.446937149E1 +3.328030000E2,5.754474494E1 +3.330410000E2,5.437750931E1 +3.333210000E2,5.378201308E1 +3.335760000E2,5.486825362E1 +3.338240000E2,5.338123539E1 +3.340700000E2,5.704649160E1 +3.343740000E2,5.576563429E1 +3.346640000E2,5.503590574E1 +3.349650000E2,5.539431503E1 +3.352080000E2,5.782097549E1 +3.355080000E2,5.260852375E1 +3.358690000E2,6.012616228E1 +3.361400000E2,5.534922411E1 +3.363810000E2,5.436765301E1 +3.366230000E2,5.007736554E1 +3.368850000E2,5.304270830E1 +3.371340000E2,5.106682022E1 +3.373960000E2,5.491262243E1 +3.376890000E2,5.891119644E1 +3.379320000E2,5.554676164E1 +3.382420000E2,5.491809401E1 +3.385700000E2,6.003743295E1 +3.389490000E2,5.964265847E1 +3.392140000E2,6.009419780E1 +3.394780000E2,5.950800538E1 +3.397810000E2,5.514081916E1 +3.400260000E2,5.654810222E1 +3.403230000E2,5.919098275E1 +3.405600000E2,5.937137097E1 +3.408650000E2,5.885711760E1 +3.411560000E2,6.122434193E1 +3.414060000E2,6.101494213E1 +3.416650000E2,5.685059098E1 +3.419710000E2,4.988163583E1 +3.423360000E2,5.097871962E1 +3.426300000E2,6.097968551E1 +3.429260000E2,5.246223058E1 +3.431760000E2,5.140448000E1 +3.434570000E2,5.162147831E1 +3.436910000E2,5.437509469E1 +3.439650000E2,5.588289675E1 +3.442010000E2,5.342482218E1 +3.444930000E2,5.621155564E1 +3.447310000E2,5.753713233E1 +3.450340000E2,5.873821374E1 +3.453240000E2,5.674648484E1 +3.455770000E2,5.843857274E1 +3.458770000E2,6.170678128E1 +3.461770000E2,5.848319050E1 +3.464240000E2,5.996271814E1 +3.467290000E2,5.583139448E1 +3.470000000E2,5.558324990E1 +3.472360000E2,5.638821787E1 +3.474880000E2,6.015129432E1 +3.477550000E2,6.074195357E1 +3.480530000E2,6.258101891E1 +3.483260000E2,6.280209300E1 +3.486840000E2,5.935598721E1 +3.489370000E2,6.423635683E1 +3.492060000E2,7.026891453E1 +3.495130000E2,5.477771858E1 +3.498240000E2,6.143080763E1 +3.500700000E2,6.077206860E1 +3.503130000E2,5.816670512E1 +3.506030000E2,6.220374728E1 +3.509040000E2,6.435510927E1 +3.511560000E2,6.387906049E1 +3.514240000E2,6.324188625E1 +3.517710000E2,6.217871174E1 +3.520510000E2,6.349767138E1 +3.523000000E2,5.947763114E1 +3.525840000E2,5.623947938E1 +3.528810000E2,5.940245648E1 +3.531830000E2,5.323006485E1 +3.534790000E2,4.756673680E1 +3.537830000E2,5.761743216E1 +3.540870000E2,5.701856444E1 +3.543720000E2,5.507707077E1 +3.546320000E2,5.561457107E1 +3.549330000E2,6.036785424E1 +3.552860000E2,5.818319920E1 +3.555390000E2,5.636477080E1 +3.557840000E2,5.686236286E1 +3.560330000E2,6.137502104E1 +3.563290000E2,6.039421004E1 +3.565710000E2,5.873926214E1 +3.568160000E2,5.984737812E1 +3.570890000E2,5.898549785E1 +3.573200000E2,5.804358229E1 +3.576080000E2,5.178825198E1 +3.578380000E2,5.333798630E1 +3.581470000E2,5.663121054E1 +3.584860000E2,5.705169894E1 +3.587470000E2,5.488627438E1 +3.590020000E2,5.493171173E1 +3.592590000E2,5.280801534E1 +3.595110000E2,5.919356657E1 +3.597710000E2,6.061921525E1 +3.600770000E2,5.781838960E1 +3.603810000E2,5.824405535E1 +3.606410000E2,5.734273072E1 +3.608930000E2,5.860073318E1 +3.611440000E2,5.158577335E1 +3.614110000E2,5.569804167E1 +3.617550000E2,5.732029627E1 +3.620530000E2,5.599725951E1 +3.623260000E2,5.427140428E1 +3.625700000E2,5.439119305E1 +3.628680000E2,5.768088704E1 +3.631160000E2,5.322266305E1 +3.634170000E2,5.611257515E1 +3.637150000E2,5.466283243E1 +3.639540000E2,5.648497192E1 +3.642520000E2,5.982456496E1 +3.644910000E2,5.683499776E1 +3.648080000E2,5.424977228E1 +3.650550000E2,5.261749952E1 +3.653010000E2,5.976464589E1 +3.655400000E2,5.630627545E1 +3.658370000E2,5.855663855E1 +3.660660000E2,5.839517218E1 +3.663050000E2,5.701336937E1 +3.666100000E2,6.057417753E1 +3.668530000E2,5.660058929E1 +3.671060000E2,5.360906173E1 +3.673270000E2,5.766761713E1 +3.676020000E2,5.473947199E1 +3.679270000E2,5.730791892E1 +3.681990000E2,5.368134624E1 +3.685210000E2,5.122725302E1 +3.688180000E2,5.413949330E1 +3.690720000E2,5.953240184E1 +3.693650000E2,5.834363401E1 +3.696110000E2,4.952962201E1 +3.698620000E2,6.082605721E1 +3.701240000E2,5.541205242E1 +3.703840000E2,5.595936781E1 +3.706570000E2,5.751180267E1 +3.709050000E2,5.510413826E1 +3.712530000E2,5.236304209E1 +3.715330000E2,5.429686706E1 +3.717680000E2,5.365135821E1 +3.720680000E2,5.442146139E1 +3.723070000E2,5.193301537E1 +3.726070000E2,5.573089397E1 +3.728540000E2,5.084704353E1 +3.731070000E2,5.244752708E1 +3.734250000E2,5.501438711E1 +3.737160000E2,5.701937821E1 +3.739830000E2,5.913008265E1 +3.743030000E2,6.329763996E1 +3.745490000E2,5.828010903E1 +3.748110000E2,5.514928454E1 +3.750560000E2,5.535724603E1 +3.753250000E2,6.062318511E1 +3.756820000E2,5.853801057E1 +3.759720000E2,6.218740595E1 +3.762560000E2,6.130322227E1 +3.764780000E2,5.705598438E1 +3.767430000E2,5.675025411E1 +3.770350000E2,5.562309411E1 +3.773330000E2,6.171478403E1 +3.776660000E2,5.752069737E1 +3.779640000E2,5.869913239E1 +3.782130000E2,5.802158707E1 +3.785030000E2,5.920699755E1 +3.787580000E2,5.984700757E1 +3.790120000E2,5.874214142E1 +3.792820000E2,5.792329599E1 +3.795460000E2,6.240429581E1 +3.798520000E2,5.924961400E1 +3.800960000E2,5.655548581E1 +3.803510000E2,5.997047167E1 +3.806590000E2,5.894207932E1 +3.810310000E2,5.556916558E1 +3.813250000E2,5.709965860E1 +3.815810000E2,5.724657649E1 +3.818690000E2,5.634885250E1 +3.821660000E2,5.381597934E1 +3.824070000E2,5.409431797E1 +3.827020000E2,5.558304395E1 +3.829400000E2,5.836087965E1 +3.832380000E2,5.621848827E1 +3.834740000E2,5.756105430E1 +3.837670000E2,5.972981317E1 +3.840620000E2,6.110722903E1 +3.842970000E2,6.011338906E1 +3.846120000E2,6.632548976E1 +3.849300000E2,5.632542095E1 +3.852340000E2,5.660090160E1 +3.854760000E2,5.637042997E1 +3.857700000E2,6.483820819E1 +3.860160000E2,6.294386681E1 +3.862760000E2,6.248693097E1 +3.865740000E2,5.966646580E1 +3.868130000E2,5.884596060E1 +3.871230000E2,6.069045984E1 +3.874660000E2,5.535227762E1 +3.877260000E2,5.453589064E1 +3.879920000E2,5.803286513E1 +3.882920000E2,6.338575111E1 +3.885370000E2,6.297665471E1 +3.888380000E2,6.078963895E1 +3.890870000E2,6.078711186E1 +3.893350000E2,5.918580133E1 +3.896040000E2,5.645003340E1 +3.899070000E2,5.868887980E1 +3.901560000E2,5.816727924E1 +3.904840000E2,5.908711574E1 +3.907830000E2,5.165109059E1 +3.910410000E2,5.747977046E1 +3.913230000E2,5.600926578E1 +3.916170000E2,5.743239537E1 +3.918580000E2,5.999528635E1 +3.921650000E2,5.924448814E1 +3.924670000E2,6.347749271E1 +3.927590000E2,6.285842009E1 +3.929960000E2,6.439104552E1 +3.933010000E2,6.092208558E1 +3.935450000E2,5.889760176E1 +3.939100000E2,5.798312040E1 +3.941770000E2,5.909426563E1 +3.944250000E2,5.971090911E1 +3.946810000E2,5.379436409E1 +3.949270000E2,5.134339741E1 +3.951700000E2,5.739586279E1 +3.954270000E2,5.255911571E1 +3.956850000E2,5.149310319E1 +3.959500000E2,5.723685944E1 +3.962270000E2,5.622087783E1 +3.964720000E2,6.119098643E1 +3.967310000E2,6.249797436E1 +3.970320000E2,5.838309249E1 +3.973440000E2,5.720898847E1 +3.976100000E2,5.357982700E1 +3.978600000E2,5.091452983E1 +3.981070000E2,4.781274510E1 +3.983520000E2,4.684320786E1 +3.986530000E2,4.867937405E1 +3.988970000E2,4.947454895E1 +3.991740000E2,4.941937240E1 +3.994180000E2,5.206925818E1 +3.997200000E2,5.099596962E1 +3.999720000E2,5.059119317E1 +4.002350000E2,4.980275756E1 +4.004940000E2,5.514017077E1 +4.008060000E2,5.354499430E1 +4.011150000E2,5.377825353E1 +4.013980000E2,5.657928040E1 +4.016460000E2,6.437756844E1 +4.019070000E2,6.072529486E1 +4.021970000E2,5.876291143E1 +4.024430000E2,6.118567430E1 +4.027460000E2,5.925186578E1 +4.030590000E2,5.727531678E1 +4.033610000E2,6.211123432E1 +4.036680000E2,6.041950332E1 +4.039230000E2,6.161200416E1 +4.041780000E2,6.047480336E1 +4.044620000E2,5.905442986E1 +4.047060000E2,5.729915709E1 +4.049630000E2,6.020933408E1 +4.052500000E2,5.845152603E1 +4.055600000E2,5.814304967E1 +4.058210000E2,5.866194002E1 +4.060640000E2,5.736420578E1 +4.063180000E2,6.107395805E1 +4.065790000E2,5.985269852E1 +4.069480000E2,5.745859610E1 +4.072050000E2,5.693680110E1 +4.074960000E2,6.165201185E1 +4.077470000E2,6.131132241E1 +4.079970000E2,5.824414723E1 +4.083050000E2,5.958451387E1 +4.085600000E2,5.739792126E1 +4.088150000E2,5.573389816E1 +4.090850000E2,5.530698039E1 +4.093810000E2,5.634371531E1 +4.096660000E2,5.880658089E1 +4.099920000E2,5.804298004E1 +4.102870000E2,5.688352401E1 +4.106310000E2,5.573115839E1 +4.109280000E2,5.368053116E1 +4.112180000E2,5.474384188E1 +4.114650000E2,5.380195893E1 +4.117660000E2,5.718608674E1 +4.120140000E2,5.703743686E1 +4.122910000E2,5.985228158E1 +4.125620000E2,6.278694860E1 +4.128210000E2,5.839550633E1 +4.130600000E2,6.029373556E1 +4.133710000E2,5.711050636E1 +4.136150000E2,5.200468588E1 +4.138820000E2,5.769230508E1 +4.141370000E2,5.333759168E1 +4.143860000E2,5.632377961E1 +4.146570000E2,5.647744894E1 +4.149040000E2,5.667945226E1 +4.151840000E2,5.669404445E1 +4.154420000E2,6.072374556E1 +4.157420000E2,5.606444578E1 +4.159850000E2,5.623596320E1 +4.162830000E2,5.264542492E1 +4.165340000E2,5.359803767E1 +4.168600000E2,5.691340897E1 +4.171060000E2,5.636326143E1 +4.173490000E2,6.276141082E1 +4.176080000E2,6.197471417E1 +4.178580000E2,5.777170976E1 +4.181050000E2,5.407671770E1 +4.183760000E2,4.795453020E1 +4.186580000E2,5.871005652E1 +4.188870000E2,6.069158080E1 +4.191320000E2,6.112379328E1 +4.193750000E2,5.584116633E1 +4.196280000E2,6.302854070E1 +4.199610000E2,6.640457067E1 +4.202240000E2,6.337314603E1 +4.205160000E2,5.904470105E1 +4.208200000E2,5.799078909E1 +4.210810000E2,5.975635789E1 +4.213260000E2,6.334088587E1 +4.215900000E2,5.849627934E1 +4.218550000E2,5.894070219E1 +4.221030000E2,5.961371776E1 +4.223550000E2,5.281830949E1 +4.225970000E2,4.892580508E1 +4.229130000E2,5.950646935E1 +4.232610000E2,6.303011111E1 +4.235630000E2,6.030515180E1 +4.238060000E2,5.832387195E1 +4.240560000E2,6.126571743E1 +4.243280000E2,5.961805347E1 +4.245710000E2,5.916464366E1 +4.248300000E2,6.404431780E1 +4.251020000E2,6.161392817E1 +4.253630000E2,6.303875005E1 +4.256110000E2,6.294329578E1 +4.258560000E2,6.495739223E1 +4.261620000E2,6.352748415E1 +4.265140000E2,6.360144813E1 +4.267650000E2,6.320185268E1 +4.270250000E2,6.598206760E1 +4.272910000E2,5.736158392E1 +4.275300000E2,5.632655800E1 +4.277760000E2,5.626186588E1 +4.280650000E2,5.992298879E1 +4.283460000E2,5.976814640E1 +4.285960000E2,5.617047451E1 +4.288540000E2,5.410240194E1 +4.291290000E2,5.524345530E1 +4.293550000E2,5.025485629E1 +4.297050000E2,5.094849624E1 +4.299600000E2,5.349595208E1 +4.302230000E2,5.668766668E1 +4.304690000E2,5.470073040E1 +4.307330000E2,5.808421323E1 +4.310240000E2,5.815977776E1 +4.312740000E2,5.751031291E1 +4.315190000E2,6.045600028E1 +4.318300000E2,5.967896339E1 +4.320980000E2,5.746835753E1 +4.324020000E2,5.874054152E1 +4.327010000E2,5.770096959E1 +4.330460000E2,5.851412717E1 +4.333220000E2,5.970473393E1 +4.335930000E2,6.024030776E1 +4.338530000E2,5.564089573E1 +4.341340000E2,5.328000065E1 +4.343790000E2,5.522789934E1 +4.346930000E2,5.271905966E1 +4.349910000E2,5.685384424E1 +4.352400000E2,5.751176106E1 +4.355350000E2,5.654290580E1 +4.357760000E2,5.976937629E1 +4.360780000E2,5.445311615E1 +4.363520000E2,5.460006243E1 +4.366010000E2,5.402958946E1 +4.369120000E2,5.611325616E1 +4.371660000E2,5.675575065E1 +4.374120000E2,5.605818704E1 +4.377070000E2,5.614720111E1 +4.379470000E2,5.596280974E1 +4.382450000E2,5.764305460E1 +4.384820000E2,6.015340826E1 +4.387240000E2,6.073594369E1 +4.390310000E2,5.846982437E1 +4.393110000E2,5.837342754E1 +4.396160000E2,5.758988397E1 +4.398810000E2,5.375393273E1 +4.401700000E2,5.590416510E1 +4.404180000E2,5.649267014E1 +4.406570000E2,5.809884175E1 +4.409200000E2,5.934788425E1 +4.411750000E2,5.883690392E1 +4.414270000E2,5.465512306E1 +4.416780000E2,5.456039720E1 +4.419260000E2,6.053551690E1 +4.422020000E2,5.446896121E1 +4.425270000E2,5.304300238E1 +4.428480000E2,5.413537656E1 +4.431230000E2,5.590535088E1 +4.433740000E2,5.516889265E1 +4.436180000E2,5.375803139E1 +4.439250000E2,5.440731706E1 +4.441670000E2,5.378894171E1 +4.444170000E2,5.676009311E1 +4.447160000E2,5.433224316E1 +4.449620000E2,5.431777666E1 +4.452100000E2,5.220353562E1 +4.454560000E2,5.525232641E1 +4.456950000E2,5.348687858E1 +4.459900000E2,5.571408478E1 +4.462320000E2,5.590054486E1 +4.464840000E2,5.627503595E1 +4.467390000E2,5.824548232E1 +4.469910000E2,5.637049423E1 +4.472460000E2,5.754096885E1 +4.474930000E2,5.335865942E1 +4.477890000E2,5.765888938E1 +4.480780000E2,6.102087464E1 +4.483520000E2,6.006145593E1 +4.486510000E2,5.685958774E1 +4.489610000E2,5.748149351E1 +4.492370000E2,5.709623916E1 +4.495040000E2,5.821496279E1 +4.497570000E2,5.970222946E1 +4.500030000E2,5.750976802E1 +4.502380000E2,5.796549321E1 +4.505370000E2,5.665777454E1 +4.508330000E2,5.605038109E1 +4.510750000E2,5.504306522E1 +4.513230000E2,5.112487870E1 +4.515900000E2,5.559150914E1 +4.518300000E2,5.656933458E1 +4.520810000E2,6.082180135E1 +4.524470000E2,5.774965281E1 +4.527120000E2,5.847728207E1 +4.529730000E2,5.711434047E1 +4.532810000E2,5.503285278E1 +4.535670000E2,5.614330822E1 +4.538610000E2,6.211492489E1 +4.541040000E2,6.003078695E1 +4.543760000E2,5.766611466E1 +4.546280000E2,5.912518267E1 +4.549300000E2,5.969489895E1 +4.551760000E2,5.509558621E1 +4.554320000E2,5.963291683E1 +4.556950000E2,6.194656842E1 +4.559980000E2,6.032793642E1 +4.562390000E2,5.874022110E1 +4.565060000E2,6.016749735E1 +4.567480000E2,5.985596964E1 +4.570070000E2,5.588678859E1 +4.572660000E2,5.541792762E1 +4.575660000E2,4.969164404E1 +4.578050000E2,4.976271573E1 +4.581060000E2,5.634137812E1 +4.583500000E2,5.321783082E1 +4.586280000E2,5.816393976E1 +4.588870000E2,5.817726916E1 +4.591860000E2,5.398220140E1 +4.594690000E2,5.572842498E1 +4.597270000E2,5.759574297E1 +4.600290000E2,5.492384706E1 +4.602790000E2,5.570826682E1 +4.605780000E2,5.619496661E1 +4.608690000E2,5.993990435E1 +4.611730000E2,6.185390750E1 +4.614300000E2,6.125031183E1 +4.617390000E2,6.047450440E1 +4.621070000E2,5.913093195E1 +4.623500000E2,6.032535990E1 +4.626490000E2,5.803726699E1 +4.628910000E2,5.968748294E1 +4.631850000E2,5.792594347E1 +4.634330000E2,5.623910190E1 +4.636850000E2,6.026318401E1 +4.639240000E2,6.002593060E1 +4.641990000E2,5.694813724E1 +4.644200000E2,5.456998819E1 +4.646660000E2,5.683591124E1 +4.649070000E2,5.893829862E1 +4.652630000E2,5.637983039E1 +4.655160000E2,5.571226470E1 +4.657720000E2,5.582065666E1 +4.660510000E2,5.436378979E1 +4.663550000E2,5.697364508E1 +4.666350000E2,5.716664070E1 +4.668800000E2,6.098104772E1 +4.671260000E2,5.932872997E1 +4.673960000E2,5.573089336E1 +4.676430000E2,5.791664461E1 +4.678890000E2,5.589855895E1 +4.681490000E2,6.359324433E1 +4.685010000E2,5.902079393E1 +4.687870000E2,6.085500324E1 +4.690180000E2,6.401116813E1 +4.693190000E2,6.157634911E1 +4.695830000E2,6.068297160E1 +4.698370000E2,5.867738322E1 +4.701080000E2,6.069776659E1 +4.703530000E2,5.904983802E1 +4.706060000E2,5.642725313E1 +4.708480000E2,5.600286970E1 +4.711080000E2,5.678564623E1 +4.714020000E2,5.139543439E1 +4.717220000E2,5.924511995E1 +4.720300000E2,5.309180697E1 +4.722790000E2,5.295961103E1 +4.725820000E2,5.448425692E1 +4.728350000E2,5.346047841E1 +4.731210000E2,5.563518239E1 +4.733630000E2,5.630991562E1 +4.736070000E2,5.519344442E1 +4.738520000E2,5.696356709E1 +4.741150000E2,5.721588368E1 +4.743810000E2,5.556082681E1 +4.746430000E2,5.453201409E1 +4.749610000E2,5.621559396E1 +4.752460000E2,6.170975330E1 +4.755640000E2,6.352753975E1 +4.758660000E2,5.818774343E1 +4.761780000E2,6.177058435E1 +4.764630000E2,5.829511769E1 +4.766910000E2,5.658732029E1 +4.769520000E2,6.006113158E1 +4.772530000E2,6.022385702E1 +4.775200000E2,5.965858240E1 +4.778410000E2,5.970326758E1 +4.780960000E2,5.911597661E1 +4.783440000E2,5.656338446E1 +4.786020000E2,5.723922467E1 +4.788680000E2,5.700163516E1 +4.791490000E2,6.083416080E1 +4.794510000E2,5.899425763E1 +4.797630000E2,5.820674449E1 +4.800620000E2,5.648898879E1 +4.803380000E2,5.465743937E1 +4.806090000E2,5.006847009E1 +4.809050000E2,5.870050130E1 +4.811580000E2,5.878066343E1 +4.814060000E2,5.929414686E1 +4.817070000E2,5.758425183E1 +4.819760000E2,5.151398214E1 +4.822410000E2,5.772956896E1 +4.824880000E2,5.913153701E1 +4.827710000E2,5.814746383E1 +4.830140000E2,6.018356701E1 +4.832870000E2,5.985078792E1 +4.835070000E2,6.081307149E1 +4.837500000E2,5.810932132E1 +4.840440000E2,5.700769218E1 +4.842880000E2,5.815119989E1 +4.845920000E2,5.595850943E1 +4.849330000E2,5.891167795E1 +4.851960000E2,5.413833723E1 +4.854760000E2,6.184122004E1 +4.857700000E2,6.074653742E1 +4.860130000E2,6.033024099E1 +4.862530000E2,5.218562994E1 +4.865560000E2,5.902882093E1 +4.868150000E2,6.397338635E1 +4.870790000E2,6.543155406E1 +4.873440000E2,6.181389827E1 +4.876070000E2,6.381240883E1 +4.878770000E2,6.121521197E1 +4.882210000E2,5.780293585E1 +4.884640000E2,5.941826112E1 +4.887100000E2,6.118399944E1 +4.889830000E2,6.000089150E1 +4.892940000E2,5.873163787E1 +4.895350000E2,5.943116280E1 +4.897770000E2,5.867927357E1 +4.900230000E2,6.190584219E1 +4.903270000E2,6.313044892E1 +4.905550000E2,6.096660510E1 +4.907970000E2,5.773464228E1 +4.911090000E2,5.720144266E1 +4.914750000E2,5.797465536E1 +4.917410000E2,6.063197812E1 +4.920040000E2,5.799562897E1 +4.922950000E2,5.391853563E1 +4.925940000E2,6.053973121E1 +4.928320000E2,5.781822977E1 +4.931250000E2,6.541242849E1 +4.933660000E2,6.151252976E1 +4.936620000E2,5.962569242E1 +4.939140000E2,6.114162989E1 +4.941750000E2,6.074296596E1 +4.944160000E2,5.738425867E1 +4.947510000E2,6.084173002E1 +4.950140000E2,5.911448476E1 +4.953100000E2,6.076832164E1 +4.955530000E2,6.357047625E1 +4.958480000E2,6.344590866E1 +4.960850000E2,6.154350148E1 +4.963870000E2,5.815666478E1 +4.966770000E2,5.862350251E1 +4.969720000E2,5.162851816E1 +4.972640000E2,5.887916548E1 +4.975020000E2,6.130693279E1 +4.977480000E2,6.164914583E1 +4.980300000E2,5.689153252E1 +4.983240000E2,6.054571109E1 +4.985610000E2,5.779234792E1 +4.987980000E2,6.281334084E1 +4.991290000E2,6.074883772E1 +4.994230000E2,6.344972933E1 +4.996620000E2,6.040546490E1 +4.999570000E2,6.143019571E1 +5.002020000E2,6.117826214E1 +5.004980000E2,6.217883653E1 +5.007380000E2,6.294102819E1 +5.010930000E2,6.516475449E1 +5.013550000E2,6.119184016E1 +5.016670000E2,6.096554209E1 +5.019390000E2,6.197647057E1 +5.022530000E2,6.186754720E1 +5.025630000E2,5.954982776E1 +5.028510000E2,6.115486405E1 +5.031440000E2,6.348254173E1 +5.033820000E2,5.960570527E1 +5.036780000E2,5.977682583E1 +5.039180000E2,5.709696054E1 +5.042580000E2,6.265263203E1 +5.045140000E2,6.166583393E1 +5.047590000E2,6.184451596E1 +5.050170000E2,6.196658471E1 +5.053150000E2,6.014630927E1 +5.055610000E2,6.055201466E1 +5.058690000E2,6.189129858E1 +5.062120000E2,6.557808579E1 +5.064770000E2,6.080176744E1 +5.067370000E2,6.164107472E1 +5.069870000E2,6.497302078E1 +5.072490000E2,6.320126990E1 +5.076210000E2,6.073801439E1 +5.078780000E2,5.612097300E1 +5.081420000E2,5.978501024E1 +5.084360000E2,6.061444996E1 +5.086860000E2,6.272142993E1 +5.089270000E2,6.250458760E1 +5.092250000E2,5.860749180E1 +5.094720000E2,6.368373725E1 +5.097760000E2,6.005985592E1 +5.100780000E2,5.959557057E1 +5.103410000E2,6.085764000E1 +5.106360000E2,6.210563273E1 +5.109960000E2,6.125336704E1 +5.112590000E2,5.627814405E1 +5.115470000E2,6.253958528E1 +5.118480000E2,6.261683940E1 +5.120990000E2,5.782347554E1 +5.123560000E2,6.181201679E1 +5.126370000E2,6.425542150E1 +5.129400000E2,6.148973489E1 +5.132300000E2,6.230215374E1 +5.134720000E2,6.332855968E1 +5.137620000E2,5.875203916E1 +5.140950000E2,6.043073123E1 +5.143340000E2,5.829778385E1 +5.146280000E2,6.530539120E1 +5.148660000E2,5.725439078E1 +5.151580000E2,6.255661351E1 +5.153960000E2,6.412193683E1 +5.156410000E2,6.315775814E1 +5.158840000E2,6.025521775E1 +5.161460000E2,5.892698587E1 +5.164080000E2,5.956507822E1 +5.166610000E2,6.162757540E1 +5.169960000E2,6.009082976E1 +5.173360000E2,5.999682475E1 +5.176380000E2,6.121463264E1 +5.178750000E2,5.929809726E1 +5.181460000E2,5.746668369E1 +5.183810000E2,5.919113180E1 +5.186360000E2,5.827917213E1 +5.189280000E2,5.902314388E1 +5.192310000E2,6.116063950E1 +5.195310000E2,6.026149556E1 +5.198180000E2,5.851929656E1 +5.200920000E2,5.750929671E1 +5.204160000E2,5.729942637E1 +5.207470000E2,5.472104161E1 +5.210390000E2,6.169397748E1 +5.213450000E2,6.081589597E1 +5.216480000E2,6.278728872E1 +5.219550000E2,6.266319096E1 +5.222160000E2,6.478840582E1 +5.224820000E2,6.255888661E1 +5.227330000E2,6.119451713E1 +5.229970000E2,6.244953097E1 +5.232800000E2,6.000703556E1 +5.236020000E2,5.885323025E1 +5.239510000E2,5.826073845E1 +5.242570000E2,5.807287072E1 +5.245200000E2,5.931641295E1 +5.247800000E2,5.775994158E1 +5.250310000E2,6.167249992E1 +5.253010000E2,6.027694641E1 +5.255430000E2,6.329659774E1 +5.258240000E2,6.254377160E1 +5.261330000E2,6.489975363E1 +5.263840000E2,5.999325642E1 +5.266440000E2,5.885077446E1 +5.268920000E2,6.439829299E1 +5.272450000E2,6.165608373E1 +5.275110000E2,5.418048629E1 +5.277700000E2,5.656005066E1 +5.280170000E2,6.215252288E1 +5.283170000E2,5.743407158E1 +5.285650000E2,5.831214783E1 +5.288200000E2,6.066735547E1 +5.290820000E2,5.994603081E1 +5.293240000E2,5.951550591E1 +5.295810000E2,6.264700953E1 +5.298380000E2,5.736628274E1 +5.301360000E2,5.590406638E1 +5.304530000E2,6.041033291E1 +5.307000000E2,5.968691140E1 +5.309950000E2,5.730835182E1 +5.312390000E2,5.823026311E1 +5.315470000E2,5.871167442E1 +5.318430000E2,5.990765833E1 +5.321400000E2,6.387020611E1 +5.324510000E2,6.077699448E1 +5.326980000E2,5.895294298E1 +5.329820000E2,6.041997988E1 +5.333050000E2,5.806877757E1 +5.336110000E2,5.682362418E1 +5.340220000E2,5.915478638E1 +5.342790000E2,6.110946170E1 +5.345430000E2,5.735857105E1 +5.348060000E2,5.684014045E1 +5.350480000E2,6.043627860E1 +5.353500000E2,5.982929159E1 +5.356290000E2,5.986217314E1 +5.358770000E2,5.677131614E1 +5.361310000E2,5.763848566E1 +5.363810000E2,6.142463983E1 +5.366730000E2,5.634211854E1 +5.369290000E2,5.547608220E1 +5.372430000E2,5.920768747E1 +5.375170000E2,6.113406656E1 +5.377700000E2,6.208964505E1 +5.380710000E2,6.100572025E1 +5.383260000E2,6.352283467E1 +5.386320000E2,5.898993907E1 +5.389570000E2,5.503782412E1 +5.392560000E2,5.663453376E1 +5.395360000E2,6.406828344E1 +5.398060000E2,5.890955595E1 +5.400700000E2,6.046868424E1 +5.403380000E2,5.979639772E1 +5.406170000E2,5.838685694E1 +5.409120000E2,5.933573087E1 +5.411500000E2,5.970536072E1 +5.414430000E2,5.461931777E1 +5.417380000E2,5.891969668E1 +5.419780000E2,6.086182172E1 +5.422730000E2,5.706230292E1 +5.425150000E2,6.002937875E1 +5.428150000E2,5.733734968E1 +5.430520000E2,5.791730719E1 +5.433430000E2,5.451667439E1 +5.436740000E2,5.601232928E1 +5.439430000E2,6.067749331E1 +5.441960000E2,6.044443396E1 +5.445120000E2,6.332642539E1 +5.448320000E2,6.369907597E1 +5.451010000E2,6.327412880E1 +5.453640000E2,6.380509737E1 +5.456090000E2,6.199528902E1 +5.458550000E2,5.905332967E1 +5.461530000E2,5.748064798E1 +5.463920000E2,5.793139247E1 +5.466900000E2,5.931551966E1 +5.470480000E2,6.345498755E1 +5.473610000E2,5.881486603E1 +5.476220000E2,5.928200098E1 +5.478810000E2,5.577309321E1 +5.481470000E2,5.875325885E1 +5.483980000E2,6.007409743E1 +5.486490000E2,6.070612531E1 +5.488940000E2,5.934549940E1 +5.491520000E2,6.170511636E1 +5.494020000E2,6.376886521E1 +5.497010000E2,6.406587518E1 +5.499360000E2,6.365684538E1 +5.503130000E2,6.009406633E1 +5.505850000E2,6.014270409E1 +5.508500000E2,5.879153887E1 +5.511470000E2,5.883782525E1 +5.513760000E2,5.773432280E1 +5.516350000E2,5.966648889E1 +5.518940000E2,5.472606108E1 +5.521930000E2,5.682429497E1 +5.524670000E2,5.619181968E1 +5.527770000E2,5.997719307E1 +5.530460000E2,5.879335465E1 +5.533410000E2,5.983416170E1 +5.537120000E2,5.957041909E1 +5.539420000E2,5.952828793E1 +5.542510000E2,5.971645274E1 +5.545000000E2,6.419337448E1 +5.547730000E2,6.634363344E1 +5.550770000E2,6.285856457E1 +5.553760000E2,5.654671197E1 +5.556440000E2,5.530754918E1 +5.558640000E2,5.889159880E1 +5.561110000E2,6.213947417E1 +5.563520000E2,6.860243311E1 +5.566480000E2,6.647018679E1 +5.569110000E2,6.420604516E1 +5.571650000E2,6.703462967E1 +5.574140000E2,6.648783593E1 +5.576540000E2,6.634001782E1 +5.579350000E2,6.293734135E1 +5.581770000E2,6.205918741E1 +5.584760000E2,5.247262167E1 +5.587220000E2,5.338734169E1 +5.589670000E2,5.662276325E1 +5.592110000E2,5.533465633E1 +5.595080000E2,5.854271946E1 +5.597740000E2,5.660649413E1 +5.600260000E2,6.333844075E1 +5.602860000E2,6.255943536E1 +5.605830000E2,5.392304486E1 +5.608700000E2,5.760897506E1 +5.611660000E2,5.713086887E1 +5.614070000E2,5.720157535E1 +5.617060000E2,5.026592539E1 +5.619510000E2,5.140995344E1 +5.621950000E2,5.663266073E1 +5.624370000E2,5.202695689E1 +5.627360000E2,6.084568668E1 +5.630550000E2,6.179643015E1 +5.632960000E2,5.833759539E1 +5.635420000E2,5.518782498E1 +5.638400000E2,6.578433315E1 +5.640880000E2,5.706187099E1 +5.643850000E2,5.456571992E1 +5.646300000E2,5.536479424E1 +5.649270000E2,5.930541070E1 +5.651540000E2,6.023199994E1 +5.653960000E2,5.612469871E1 +5.656980000E2,5.462007842E1 +5.659410000E2,5.278259804E1 +5.662890000E2,6.064478329E1 +5.666290000E2,5.682964802E1 +5.669030000E2,5.787828261E1 +5.671980000E2,5.712595091E1 +5.674890000E2,5.729764361E1 +5.677450000E2,5.241850056E1 +5.679980000E2,5.377155525E1 +5.682380000E2,5.485418547E1 +5.684830000E2,5.503746434E1 +5.687810000E2,5.398954643E1 +5.690230000E2,5.401913169E1 +5.693270000E2,5.953896215E1 +5.695680000E2,5.626247467E1 +5.698640000E2,6.040491706E1 +5.701050000E2,5.781813181E1 +5.703620000E2,5.733744349E1 +5.706600000E2,5.669032177E1 +5.709140000E2,5.453731954E1 +5.711580000E2,6.235364316E1 +5.714280000E2,5.958044055E1 +5.716860000E2,5.875696014E1 +5.719750000E2,5.570465139E1 +5.722310000E2,4.865236791E1 +5.725580000E2,5.257975627E1 +5.727900000E2,4.975389893E1 +5.730890000E2,5.658508958E1 +5.733660000E2,5.542284648E1 +5.735960000E2,5.536199936E1 +5.738990000E2,5.813474916E1 +5.741540000E2,5.417788207E1 +5.744370000E2,5.704170918E1 +5.746710000E2,5.736828455E1 +5.749280000E2,5.450874678E1 +5.751790000E2,5.610950442E1 +5.754890000E2,5.919887582E1 +5.758690000E2,5.780639378E1 +5.761700000E2,5.709220641E1 +5.764190000E2,5.815359781E1 +5.767060000E2,5.734155824E1 +5.769500000E2,5.925323086E1 +5.772430000E2,6.084767221E1 +5.775370000E2,5.852024889E1 +5.777780000E2,5.822649765E1 +5.780770000E2,5.829089322E1 +5.783770000E2,5.915481192E1 +5.786460000E2,5.996430642E1 +5.789780000E2,6.016421415E1 +5.792520000E2,6.221052482E1 +5.795090000E2,5.533993101E1 +5.798230000E2,6.537257407E1 +5.801220000E2,6.068836920E1 +5.803770000E2,5.728273812E1 +5.806510000E2,5.648369901E1 +5.809070000E2,5.397363349E1 +5.811690000E2,5.755294689E1 +5.814510000E2,5.957149991E1 +5.816900000E2,5.963092636E1 +5.820650000E2,6.778811076E1 +5.823240000E2,6.247529404E1 +5.825840000E2,6.073516327E1 +5.828380000E2,6.039356998E1 +5.830970000E2,5.764504824E1 +5.833990000E2,6.041396176E1 +5.836470000E2,6.355942860E1 +5.838990000E2,5.785560268E1 +5.841390000E2,6.060017525E1 +5.844440000E2,6.032069521E1 +5.847010000E2,5.760371100E1 +5.849440000E2,5.491620812E1 +5.851990000E2,5.957978671E1 +5.855370000E2,6.103184032E1 +5.857970000E2,5.896875350E1 +5.861120000E2,6.008190546E1 +5.863990000E2,5.687378544E1 +5.866450000E2,5.874294643E1 +5.869410000E2,5.870806017E1 +5.871860000E2,5.809143232E1 +5.874740000E2,5.847828699E1 +5.877850000E2,5.846232778E1 +5.880500000E2,5.755876921E1 +5.883650000E2,5.609032758E1 +5.887050000E2,5.685283394E1 +5.889730000E2,5.945975832E1 +5.892710000E2,6.114741701E1 +5.895110000E2,6.316132147E1 +5.898100000E2,6.715155367E1 +5.900480000E2,6.367866992E1 +5.903470000E2,5.131949120E1 +5.905900000E2,5.646494575E1 +5.908880000E2,6.096218752E1 +5.911270000E2,6.089171796E1 +5.913720000E2,6.319522071E1 +5.916410000E2,6.016553529E1 +5.920560000E2,5.915189166E1 +5.923330000E2,5.776862186E1 +5.925640000E2,5.840366445E1 +5.927890000E2,5.978914182E1 +5.930440000E2,6.058699711E1 +5.932650000E2,6.012895387E1 +5.935140000E2,6.295025578E1 +5.937520000E2,6.280196012E1 +5.940110000E2,6.194014009E1 +5.943340000E2,6.483906300E1 +5.945870000E2,5.918257578E1 +5.948380000E2,5.620333930E1 +5.951900000E2,6.323403421E1 +5.954240000E2,6.183177681E1 +5.956620000E2,6.120300936E1 +5.959650000E2,5.836925111E1 +5.961890000E2,6.106023171E1 +5.964920000E2,6.153658324E1 +5.967310000E2,6.490772593E1 +5.969960000E2,6.274228676E1 +5.972520000E2,6.139008510E1 +5.975050000E2,6.281232833E1 +5.978180000E2,6.254982632E1 +5.980890000E2,6.205794184E1 +5.983900000E2,6.438771503E1 +5.986230000E2,6.052772463E1 +5.988520000E2,6.375966703E1 +5.991380000E2,5.869985301E1 +5.993860000E2,6.050357712E1 +5.996630000E2,5.547835745E1 +5.999280000E2,5.400421666E1 +6.001960000E2,5.668252186E1 +6.004880000E2,6.001970320E1 +6.007680000E2,6.056987745E1 +6.010550000E2,6.461211967E1 +6.014090000E2,6.399838195E1 +6.016840000E2,5.485596323E1 +6.019450000E2,5.731519087E1 +6.022080000E2,6.691878914E1 +6.024720000E2,6.479201876E1 +6.027260000E2,6.412847214E1 +6.029760000E2,6.025795068E1 +6.032190000E2,6.098133491E1 +6.035120000E2,5.689387521E1 +6.038040000E2,5.639928101E1 +6.041550000E2,5.328068252E1 +6.044370000E2,5.639829798E1 +6.046770000E2,5.892330560E1 +6.049510000E2,5.315638413E1 +6.051900000E2,5.740260439E1 +6.054620000E2,5.339391440E1 +6.057500000E2,5.310371918E1 +6.060710000E2,5.460903952E1 +6.063050000E2,5.407304270E1 +6.065540000E2,5.870790541E1 +6.068060000E2,5.576782972E1 +6.070790000E2,5.976954147E1 +6.074640000E2,6.181180531E1 +6.077240000E2,6.194364733E1 +6.080150000E2,6.794225297E1 +6.082590000E2,6.236601361E1 +6.085470000E2,6.002700779E1 +6.088450000E2,5.971993236E1 +6.090930000E2,5.954735434E1 +6.093460000E2,5.907202371E1 +6.095920000E2,5.993658420E1 +6.098910000E2,5.530332259E1 +6.101850000E2,5.531802018E1 +6.104220000E2,5.376885939E1 +6.107780000E2,5.735355871E1 +6.110210000E2,5.868610156E1 +6.112710000E2,5.312122754E1 +6.115670000E2,5.745102631E1 +6.118550000E2,5.535536940E1 +6.121540000E2,5.088728731E1 +6.123960000E2,5.266907791E1 +6.126860000E2,5.386493253E1 +6.130010000E2,5.670623073E1 +6.132810000E2,5.563278655E1 +6.135150000E2,5.267172926E1 +6.138540000E2,5.386148816E1 +6.141880000E2,5.716468210E1 +6.144880000E2,5.526918781E1 +6.147190000E2,5.659553915E1 +6.149610000E2,5.648341007E1 +6.152730000E2,5.711745846E1 +6.155520000E2,5.918800114E1 +6.158010000E2,5.642548609E1 +6.161000000E2,5.635896926E1 +6.163480000E2,5.899225051E1 +6.166180000E2,5.374343244E1 +6.168690000E2,4.891042404E1 +6.172050000E2,5.065835680E1 +6.174560000E2,5.685264653E1 +6.177340000E2,5.429270039E1 +6.179930000E2,5.499548313E1 +6.182940000E2,5.407177565E1 +6.185300000E2,5.356533799E1 +6.188300000E2,5.378190643E1 +6.191140000E2,5.189020817E1 +6.193870000E2,5.046647494E1 +6.196450000E2,5.501107364E1 +6.198910000E2,5.798814538E1 +6.201660000E2,5.360844474E1 +6.205080000E2,5.353935610E1 +6.208080000E2,5.620189936E1 +6.210820000E2,6.216008765E1 +6.213360000E2,5.767015155E1 +6.216520000E2,6.210101060E1 +6.219320000E2,5.928042926E1 +6.221800000E2,6.394496555E1 +6.224980000E2,5.872213561E1 +6.227430000E2,5.927091626E1 +6.230010000E2,5.235592166E1 +6.232430000E2,6.313120608E1 +6.235470000E2,6.005436888E1 +6.238480000E2,5.999836557E1 +6.240930000E2,5.879748041E1 +6.243920000E2,5.978277378E1 +6.246440000E2,6.050724590E1 +6.249480000E2,6.282777276E1 +6.252520000E2,6.080897043E1 +6.255640000E2,5.889462949E1 +6.258270000E2,5.550476615E1 +6.260730000E2,5.586785505E1 +6.263620000E2,6.576560120E1 +6.266590000E2,6.102361259E1 +6.270050000E2,6.110507706E1 +6.272870000E2,5.753592100E1 +6.275410000E2,6.297666729E1 +6.278490000E2,6.037594793E1 +6.281160000E2,5.849898506E1 +6.284180000E2,6.165631601E1 +6.287090000E2,6.096774109E1 +6.289510000E2,6.176590968E1 +6.292460000E2,5.947061017E1 +6.294820000E2,6.109202024E1 +6.297790000E2,5.322559935E1 +6.301160000E2,4.971181861E1 +6.303880000E2,5.533921521E1 +6.307250000E2,5.478410742E1 +6.310240000E2,5.647795083E1 +6.313200000E2,5.797504265E1 +6.315690000E2,5.403019222E1 +6.318640000E2,5.301910781E1 +6.321010000E2,5.096544207E1 +6.324030000E2,5.324435941E1 +6.326360000E2,5.447050361E1 +6.328960000E2,5.932781903E1 +6.331500000E2,5.967228428E1 +6.334640000E2,6.319489971E1 +6.337810000E2,5.820271574E1 +6.340710000E2,5.910289699E1 +6.343170000E2,5.681937370E1 +6.346260000E2,5.582227275E1 +6.349350000E2,5.745831651E1 +6.352100000E2,5.504019385E1 +6.354620000E2,5.072303887E1 +6.357190000E2,5.366082959E1 +6.359690000E2,5.380227314E1 +6.362560000E2,4.818205454E1 +6.365090000E2,5.989908626E1 +6.368780000E2,5.659012846E1 +6.371610000E2,5.593157997E1 +6.374460000E2,5.135237935E1 +6.377000000E2,5.687788515E1 +6.379550000E2,5.943975502E1 +6.382630000E2,6.290957992E1 +6.385230000E2,5.827099811E1 +6.387780000E2,5.686391746E1 +6.390620000E2,5.771790911E1 +6.393200000E2,5.390066131E1 +6.395830000E2,5.358231960E1 +6.398480000E2,5.564565007E1 +6.401490000E2,5.205482155E1 +6.404200000E2,5.852280051E1 +6.407340000E2,4.836326193E1 +6.409980000E2,5.905115701E1 +6.412560000E2,5.622349390E1 +6.415040000E2,5.891737338E1 +6.417460000E2,5.749377856E1 +6.420310000E2,5.414095183E1 +6.422680000E2,5.482109112E1 +6.425170000E2,5.202942051E1 +6.428000000E2,4.903409276E1 +6.431250000E2,5.495098254E1 +6.434650000E2,5.777911761E1 +6.437680000E2,5.329076638E1 +6.440080000E2,5.886592322E1 +6.443070000E2,5.661637111E1 +6.445560000E2,5.459133399E1 +6.448230000E2,4.858613706E1 +6.450990000E2,5.642020356E1 +6.453590000E2,5.634614530E1 +6.456240000E2,5.769024626E1 +6.458900000E2,6.037646239E1 +6.461470000E2,5.712013563E1 +6.464260000E2,5.393237723E1 +6.467570000E2,5.443825449E1 +6.469850000E2,5.464133184E1 +6.472460000E2,5.185343249E1 +6.475170000E2,5.670688718E1 +6.477900000E2,5.808659132E1 +6.480150000E2,5.879711687E1 +6.483250000E2,5.860991669E1 +6.485730000E2,5.600484597E1 +6.488230000E2,5.291438286E1 +6.491020000E2,5.869236753E1 +6.493260000E2,5.826316690E1 +6.496250000E2,5.619306699E1 +6.499850000E2,6.085970714E1 +6.502400000E2,6.051231588E1 +6.505400000E2,6.096601072E1 +6.507990000E2,6.197068990E1 +6.511180000E2,6.520817743E1 +6.513810000E2,6.377577246E1 +6.516860000E2,6.105485617E1 +6.519940000E2,5.890751001E1 +6.522910000E2,5.911253604E1 +6.525370000E2,6.291937986E1 +6.528540000E2,6.252638881E1 +6.532210000E2,6.337356348E1 +6.535270000E2,5.894334263E1 +6.537830000E2,5.754939005E1 +6.540930000E2,5.500698560E1 +6.543880000E2,5.014350898E1 +6.546880000E2,5.646260920E1 +6.549870000E2,5.951282585E1 +6.552920000E2,6.099782791E1 +6.555480000E2,6.065538365E1 +6.558100000E2,6.827371953E1 +6.560790000E2,6.035931154E1 +6.563820000E2,6.267306134E1 +6.566350000E2,5.826452213E1 +6.568970000E2,6.092938143E1 +6.572010000E2,6.534130041E1 +6.575130000E2,6.111837506E1 +6.577770000E2,5.826481723E1 +6.580330000E2,5.918147323E1 +6.582980000E2,6.100230752E1 +6.585510000E2,6.302217459E1 +6.588060000E2,5.754956715E1 +6.591080000E2,6.111201710E1 +6.593520000E2,6.017410469E1 +6.597040000E2,6.031944923E1 +6.599450000E2,5.943575512E1 +6.602120000E2,5.868776340E1 +6.605570000E2,5.940543513E1 +6.608500000E2,5.886327816E1 +6.610920000E2,5.770522648E1 +6.613840000E2,5.442777508E1 +6.616200000E2,5.394232060E1 +6.619220000E2,5.856638842E1 +6.622160000E2,5.742664400E1 +6.624600000E2,5.472498345E1 +6.627560000E2,5.672985390E1 +6.629770000E2,5.834702318E1 +6.632250000E2,5.907602823E1 +6.634810000E2,5.873031221E1 +6.637670000E2,5.757130737E1 +6.640040000E2,5.572185824E1 +6.643070000E2,5.959142979E1 +6.645480000E2,5.851623707E1 +6.648520000E2,5.856887935E1 +6.650940000E2,6.397218192E1 +6.653890000E2,5.963692586E1 +6.656210000E2,5.934207027E1 +6.659580000E2,5.667856430E1 +6.662640000E2,5.811017468E1 +6.665550000E2,5.505265787E1 +6.667990000E2,5.558350894E1 +6.671320000E2,6.063017800E1 +6.674000000E2,5.568411381E1 +6.676510000E2,5.981422062E1 +6.679580000E2,5.723024768E1 +6.682820000E2,5.036028104E1 +6.685240000E2,5.199205823E1 +6.687970000E2,5.367328475E1 +6.691280000E2,5.936914884E1 +6.693940000E2,5.657797691E1 +6.696490000E2,6.065879377E1 +6.699270000E2,5.657054255E1 +6.702000000E2,5.655716576E1 +6.704770000E2,5.823562265E1 +6.707350000E2,6.065030224E1 +6.710140000E2,6.110776530E1 +6.712700000E2,5.714357796E1 +6.715170000E2,5.604236164E1 +6.717930000E2,6.041748871E1 +6.721240000E2,6.019765334E1 +6.724270000E2,5.928602786E1 +6.727750000E2,5.973060669E1 +6.730710000E2,6.059869751E1 +6.733250000E2,6.116850166E1 +6.736400000E2,6.145214709E1 +6.738890000E2,6.020118097E1 +6.741670000E2,6.048579637E1 +6.744720000E2,6.225337088E1 +6.747550000E2,5.853636068E1 +6.750030000E2,5.999204871E1 +6.752840000E2,5.433989895E1 +6.755100000E2,5.847308735E1 +6.758420000E2,5.913726954E1 +6.760830000E2,6.049449503E1 +6.763830000E2,5.545572399E1 +6.766370000E2,6.246077536E1 +6.768920000E2,6.029598130E1 +6.771340000E2,6.005864514E1 +6.774230000E2,6.582269585E1 +6.776700000E2,6.255104294E1 +6.779140000E2,6.623711836E1 +6.781740000E2,6.684819787E1 +6.784850000E2,6.877250850E1 +6.787420000E2,6.157084767E1 +6.789860000E2,6.054068573E1 +6.793290000E2,6.069583213E1 +6.795810000E2,6.124898856E1 +6.798240000E2,6.136691849E1 +6.800900000E2,6.035594762E1 +6.803920000E2,5.654106541E1 +6.806920000E2,5.587565134E1 +6.809940000E2,5.642134155E1 +6.813020000E2,5.749983358E1 +6.815830000E2,5.576151961E1 +6.818120000E2,5.714589311E1 +6.820580000E2,5.969510914E1 +6.823020000E2,5.824123453E1 +6.825680000E2,5.779273115E1 +6.828630000E2,5.699644891E1 +6.831010000E2,5.900876644E1 +6.833500000E2,6.335540424E1 +6.835940000E2,6.280432027E1 +6.838340000E2,6.194675910E1 +6.841290000E2,5.801082069E1 +6.843650000E2,5.652506879E1 +6.846570000E2,5.895404856E1 +6.848910000E2,5.873705448E1 +6.851950000E2,5.589704153E1 +6.855380000E2,5.379672362E1 +6.857910000E2,6.287056471E1 +6.860900000E2,6.081817617E1 +6.863340000E2,6.807593043E1 +6.866320000E2,5.604389930E1 +6.868800000E2,6.712075434E1 +6.871750000E2,6.290238552E1 +6.874740000E2,6.473105179E1 +6.877330000E2,5.873835234E1 +6.880180000E2,5.800563858E1 +6.882620000E2,5.540095032E1 +6.885810000E2,6.197881428E1 +6.888280000E2,5.541258482E1 +6.890890000E2,5.558277465E1 +6.894010000E2,4.965923685E1 +6.897080000E2,4.860020107E1 +6.899730000E2,5.608167548E1 +6.902300000E2,5.381305593E1 +6.904990000E2,6.079286270E1 +6.908000000E2,6.446965644E1 +6.910380000E2,6.556266140E1 +6.913400000E2,5.418444209E1 +6.916350000E2,5.205102491E1 +6.919820000E2,5.812981404E1 +6.922410000E2,6.500705260E1 +6.925070000E2,6.149947285E1 +6.927750000E2,5.695315316E1 +6.930870000E2,5.775854948E1 +6.933870000E2,6.523399833E1 +6.936300000E2,6.692630865E1 +6.939270000E2,5.793447825E1 +6.942230000E2,5.746396110E1 +6.944770000E2,6.017975210E1 +6.947150000E2,5.956759439E1 +6.950320000E2,6.391288151E1 +6.953110000E2,6.484415086E1 +6.955650000E2,6.664209540E1 +6.958410000E2,6.746668632E1 +6.961050000E2,5.775664920E1 +6.964050000E2,6.383035698E1 +6.967020000E2,5.816763892E1 +6.969600000E2,6.921190909E1 +6.972400000E2,6.165047809E1 +6.975080000E2,5.666810057E1 +6.977540000E2,6.417546300E1 +6.980020000E2,5.788971486E1 +6.982730000E2,5.486922606E1 +6.985850000E2,5.576434723E1 +6.988820000E2,5.548978795E1 +6.991460000E2,5.886820316E1 +6.993970000E2,6.226406326E1 +6.996480000E2,5.601534080E1 +6.999400000E2,5.901385758E1 +7.002040000E2,5.720709772E1 +7.005120000E2,6.318399213E1 +7.007580000E2,6.338981741E1 +7.010170000E2,6.747312486E1 +7.012670000E2,5.788999692E1 +7.015450000E2,4.434465006E1 +7.018710000E2,6.439013955E1 +7.021480000E2,5.375342664E1 +7.023700000E2,6.398282027E1 +7.026160000E2,5.857909138E1 +7.029130000E2,5.670439641E1 +7.031590000E2,5.749786365E1 +7.034320000E2,5.181710985E1 +7.036770000E2,5.871535868E1 +7.039520000E2,5.470297527E1 +7.042240000E2,5.771822323E1 +7.044750000E2,5.236261523E1 +7.047130000E2,5.595332709E1 +7.050480000E2,5.576748295E1 +7.053040000E2,5.334869600E1 +7.055590000E2,5.337806625E1 +7.058180000E2,5.499892680E1 +7.060900000E2,5.490963435E1 +7.063980000E2,5.551078540E1 +7.066680000E2,5.358868238E1 +7.069300000E2,5.203182642E1 +7.071760000E2,5.771053387E1 +7.074630000E2,5.175835182E1 +7.077440000E2,5.402526598E1 +7.080400000E2,5.754717994E1 +7.083470000E2,6.103880587E1 +7.086400000E2,6.284824916E1 +7.088840000E2,6.674666322E1 +7.092010000E2,6.194114278E1 +7.094980000E2,5.796289911E1 +7.097580000E2,5.475547679E1 +7.100170000E2,5.804024708E1 +7.102650000E2,5.606423134E1 +7.105550000E2,5.319247933E1 +7.107930000E2,5.625991375E1 +7.110940000E2,5.589539698E1 +7.114730000E2,6.073460415E1 +7.117930000E2,6.208342045E1 +7.120530000E2,6.335117127E1 +7.123290000E2,5.821275565E1 +7.126280000E2,5.793160357E1 +7.128780000E2,5.509944006E1 +7.131790000E2,5.578357696E1 +7.134760000E2,5.632534225E1 +7.137350000E2,5.466315647E1 +7.140450000E2,5.914530785E1 +7.143020000E2,6.280432125E1 +7.146020000E2,6.333348539E1 +7.149790000E2,5.698482465E1 +7.152920000E2,5.474810308E1 +7.155370000E2,5.417920207E1 +7.157880000E2,6.392184792E1 +7.160720000E2,6.565549591E1 +7.163130000E2,6.082705714E1 +7.166120000E2,5.816285927E1 +7.168430000E2,5.809201859E1 +7.170930000E2,6.016105207E1 +7.173350000E2,5.162287691E1 +7.176230000E2,5.754317879E1 +7.179310000E2,6.166304542E1 +7.181770000E2,6.177004553E1 +7.184320000E2,6.274574776E1 +7.186900000E2,6.104994734E1 +7.189920000E2,5.735301480E1 +7.192340000E2,5.830205645E1 +7.194890000E2,6.212782217E1 +7.197420000E2,5.467685243E1 +7.200420000E2,5.313970583E1 +7.202920000E2,5.278680647E1 +7.205360000E2,5.474141102E1 +7.209140000E2,6.241771654E1 +7.212600000E2,6.394594172E1 +7.215560000E2,6.348358734E1 +7.217980000E2,6.112734048E1 +7.220450000E2,6.226451183E1 +7.222930000E2,6.534082516E1 +7.225960000E2,6.114019283E1 +7.228390000E2,6.421228964E1 +7.231230000E2,6.814847387E1 +7.233690000E2,6.275446304E1 +7.236190000E2,6.679153921E1 +7.239280000E2,6.537583699E1 +7.241850000E2,6.212976374E1 +7.245300000E2,6.553556935E1 +7.248220000E2,5.834030427E1 +7.250930000E2,5.992153646E1 +7.253380000E2,5.595099295E1 +7.256370000E2,5.720822528E1 +7.258800000E2,5.423516872E1 +7.261770000E2,5.906139652E1 +7.264140000E2,6.204477132E1 +7.267140000E2,6.368823365E1 +7.269550000E2,6.513672214E1 +7.272500000E2,6.364997971E1 +7.275370000E2,6.269941998E1 +7.278570000E2,5.948773609E1 +7.281020000E2,5.789544973E1 +7.283740000E2,6.305528689E1 +7.286400000E2,6.245554089E1 +7.289690000E2,6.033221518E1 +7.292310000E2,5.940071821E1 +7.294970000E2,6.176178101E1 +7.298020000E2,5.355172623E1 +7.300580000E2,5.535292187E1 +7.303150000E2,5.274398781E1 +7.305750000E2,5.399957194E1 +7.308780000E2,5.819691646E1 +7.312070000E2,5.434897588E1 +7.315090000E2,6.041787911E1 +7.317850000E2,5.617860881E1 +7.320560000E2,5.558770875E1 +7.323290000E2,5.151264449E1 +7.325860000E2,5.612143969E1 +7.328800000E2,5.405001557E1 +7.331120000E2,5.455354216E1 +7.334090000E2,5.716252136E1 +7.337070000E2,6.416157102E1 +7.339910000E2,6.098010142E1 +7.343020000E2,6.194029449E1 +7.346500000E2,6.091313037E1 +7.349540000E2,5.846954669E1 +7.352410000E2,5.743489407E1 +7.355320000E2,5.872669957E1 +7.357800000E2,5.859080967E1 +7.360560000E2,6.053269456E1 +7.363220000E2,6.117884455E1 +7.366590000E2,5.809887850E1 +7.369420000E2,5.453224539E1 +7.372510000E2,5.639337460E1 +7.375040000E2,5.373613181E1 +7.378630000E2,5.066236714E1 +7.381160000E2,4.653740377E1 +7.383650000E2,6.375011526E1 +7.386730000E2,6.282181577E1 +7.389830000E2,6.727660972E1 +7.392340000E2,6.413328322E1 +7.394790000E2,6.184881400E1 +7.397290000E2,6.430634497E1 +7.400250000E2,6.276256291E1 +7.402610000E2,6.297441350E1 +7.405590000E2,5.306586823E1 +7.408610000E2,5.403016569E1 +7.412260000E2,5.749263443E1 +7.415060000E2,5.657932114E1 +7.417820000E2,5.532222303E1 +7.420430000E2,5.911133378E1 +7.423450000E2,5.822379827E1 +7.426470000E2,6.311870884E1 +7.428860000E2,5.964121243E1 +7.431940000E2,5.708688763E1 +7.434960000E2,5.782189241E1 +7.437480000E2,5.745118469E1 +7.440380000E2,5.258772989E1 +7.442830000E2,5.325984780E1 +7.445410000E2,5.216709684E1 +7.447900000E2,5.485283680E1 +7.450520000E2,6.638751453E1 +7.453640000E2,6.256149725E1 +7.456370000E2,6.851667797E1 +7.459020000E2,6.356784575E1 +7.462040000E2,6.586178842E1 +7.464510000E2,6.099626883E1 +7.467420000E2,6.874341983E1 +7.470300000E2,5.690479739E1 +7.472670000E2,5.749513215E1 +7.475860000E2,5.743840209E1 +7.478480000E2,6.695338823E1 +7.481550000E2,6.575566103E1 +7.484170000E2,6.244751264E1 +7.486690000E2,6.206430480E1 +7.489520000E2,5.755143157E1 +7.492450000E2,6.343498072E1 +7.494820000E2,6.599354682E1 +7.497800000E2,5.994269627E1 +7.500210000E2,6.480563885E1 +7.503160000E2,5.962320355E1 +7.505550000E2,5.907805627E1 +7.508860000E2,5.452673237E1 +7.511450000E2,5.413358853E1 +7.514110000E2,5.786691992E1 +7.516870000E2,6.185088179E1 +7.519570000E2,5.432685780E1 +7.522050000E2,5.297819944E1 +7.524920000E2,5.290855554E1 +7.527910000E2,5.828859659E1 +7.530300000E2,5.880189294E1 +7.533360000E2,5.500578631E1 +7.535910000E2,5.476677878E1 +7.538330000E2,5.414240587E1 +7.541650000E2,5.332866170E1 +7.544620000E2,5.193802785E1 +7.547080000E2,5.242932681E1 +7.549590000E2,6.024921863E1 +7.552020000E2,5.537701523E1 +7.554960000E2,5.489617845E1 +7.557330000E2,5.384280286E1 +7.560410000E2,5.406125999E1 +7.562870000E2,5.246560959E1 +7.565320000E2,5.374729291E1 +7.567680000E2,5.542801483E1 +7.570630000E2,5.525770987E1 +7.573930000E2,5.847670432E1 +7.576660000E2,5.822188632E1 +7.579180000E2,5.822901451E1 +7.582040000E2,5.458975346E1 +7.584820000E2,5.438683247E1 +7.587800000E2,5.260449368E1 +7.590260000E2,5.371245859E1 +7.592870000E2,4.983203663E1 +7.595420000E2,5.018089077E1 +7.598380000E2,5.950969681E1 +7.601480000E2,5.769305363E1 +7.604800000E2,5.747567937E1 +7.607190000E2,5.446335810E1 +7.610040000E2,5.463229896E1 +7.612970000E2,5.644916160E1 +7.615560000E2,5.809520116E1 +7.618460000E2,5.406577519E1 +7.621050000E2,5.362277750E1 +7.623930000E2,5.868559294E1 +7.626230000E2,5.548744129E1 +7.628890000E2,5.613986675E1 +7.631890000E2,5.592058678E1 +7.634870000E2,5.947938191E1 +7.638120000E2,5.945990241E1 +7.640830000E2,5.354091788E1 +7.643270000E2,5.910847411E1 +7.645670000E2,6.112853730E1 +7.648120000E2,5.617469613E1 +7.650520000E2,5.678172470E1 +7.653190000E2,5.293731054E1 +7.655730000E2,5.571573154E1 +7.658430000E2,5.239475172E1 +7.660900000E2,5.710555790E1 +7.663840000E2,5.593714408E1 +7.666500000E2,5.506488062E1 +7.669100000E2,5.276148627E1 +7.671530000E2,5.087813070E1 +7.674500000E2,4.966858228E1 +7.677070000E2,4.690170064E1 +7.679870000E2,5.097718665E1 +7.682460000E2,5.173969669E1 +7.685220000E2,5.562988056E1 +7.687630000E2,5.194720020E1 +7.690630000E2,5.590118249E1 +7.693610000E2,5.613585205E1 +7.696030000E2,5.417299550E1 +7.698530000E2,5.925774948E1 +7.702010000E2,5.729895975E1 +7.704610000E2,5.765570707E1 +7.707610000E2,6.211008380E1 +7.710570000E2,5.846530012E1 +7.712970000E2,5.766544416E1 +7.715460000E2,5.716238768E1 +7.718080000E2,5.700535494E1 +7.720510000E2,5.592606747E1 +7.723260000E2,5.771214429E1 +7.725940000E2,5.753442175E1 +7.728830000E2,5.541298336E1 +7.731860000E2,5.137853822E1 +7.735420000E2,5.462649470E1 +7.738320000E2,5.454281912E1 +7.740820000E2,6.803752283E1 +7.743260000E2,6.852980541E1 +7.745820000E2,7.007631543E1 +7.748270000E2,7.009876218E1 +7.751160000E2,6.950363051E1 +7.753520000E2,6.338954984E1 +7.755910000E2,5.500200077E1 +7.758880000E2,5.358702362E1 +7.761340000E2,5.718303470E1 +7.763730000E2,5.887519420E1 +7.767050000E2,5.795457078E1 +7.769970000E2,5.796499201E1 +7.773000000E2,5.644912180E1 +7.775570000E2,5.804780214E1 +7.778740000E2,5.958528627E1 +7.781300000E2,5.635913866E1 +7.784430000E2,5.593106857E1 +7.787280000E2,6.063168213E1 +7.789960000E2,5.917208792E1 +7.792560000E2,5.719923422E1 +7.795050000E2,6.400429125E1 +7.797680000E2,5.733192807E1 +7.800440000E2,6.018331087E1 +7.803000000E2,6.350407169E1 +7.805530000E2,6.357762743E1 +7.808590000E2,6.772563953E1 +7.811430000E2,6.431848914E1 +7.814050000E2,5.710721917E1 +7.816950000E2,5.646111127E1 +7.819500000E2,5.564600214E1 +7.822050000E2,6.362802489E1 +7.824550000E2,6.278310471E1 +7.827010000E2,5.851995741E1 +7.829620000E2,5.759567059E1 +7.832630000E2,5.449669640E1 +7.835070000E2,6.040303881E1 +7.837500000E2,5.743841461E1 +7.839990000E2,6.096558185E1 +7.842840000E2,7.161293257E1 +7.845270000E2,7.417435903E1 +7.848410000E2,6.386070968E1 +7.851390000E2,6.234904760E1 +7.854350000E2,6.321731436E1 +7.856820000E2,6.294103551E1 +7.859780000E2,6.210337552E1 +7.862150000E2,6.765383904E1 +7.865650000E2,6.346682761E1 +7.868610000E2,6.221020232E1 +7.871280000E2,6.119530731E1 +7.873850000E2,5.314248269E1 +7.876880000E2,5.288680780E1 +7.879230000E2,5.064349321E1 +7.882230000E2,5.786336298E1 +7.884630000E2,5.341864841E1 +7.887250000E2,5.286568073E1 +7.890140000E2,5.272997567E1 +7.893180000E2,5.904110581E1 +7.896690000E2,5.748622391E1 +7.899200000E2,5.773986136E1 +7.902160000E2,5.480967078E1 +7.904710000E2,5.627241382E1 +7.907280000E2,5.456362797E1 +7.909900000E2,5.766408512E1 +7.912380000E2,5.413586400E1 +7.914940000E2,5.234403284E1 +7.917720000E2,5.190170354E1 +7.920440000E2,5.227759392E1 +7.923170000E2,4.410400383E1 +7.926220000E2,3.508270700E1 +7.929370000E2,3.887828085E1 +7.932030000E2,4.522069604E1 +7.934660000E2,4.928233980E1 +7.937420000E2,4.706401379E1 +7.940710000E2,4.988989997E1 +7.943700000E2,5.767827889E1 +7.946060000E2,5.506606719E1 +7.949050000E2,6.107887773E1 +7.952060000E2,5.849609892E1 +7.955030000E2,5.343173328E1 +7.957490000E2,5.007726003E1 +7.960580000E2,4.763873915E1 +7.963010000E2,5.045894898E1 +7.966040000E2,6.859700710E1 +7.968900000E2,6.734256534E1 +7.971550000E2,6.661489392E1 +7.974110000E2,6.556398865E1 +7.976580000E2,5.519705677E1 +7.979230000E2,5.503316479E1 +7.982060000E2,5.955770829E1 +7.984280000E2,5.777834711E1 +7.987260000E2,6.050467535E1 +7.989700000E2,5.583639573E1 +7.993330000E2,5.988908902E1 +7.995750000E2,5.875791040E1 +7.998670000E2,6.166637478E1 +8.001160000E2,5.690435901E1 +8.004160000E2,5.599911293E1 +8.006610000E2,5.889628547E1 +8.009180000E2,6.227540789E1 +8.011740000E2,6.572663811E1 +8.014300000E2,6.013467784E1 +8.016770000E2,6.250368579E1 +8.019910000E2,6.532292099E1 +8.023560000E2,5.377170031E1 +8.026370000E2,5.535595108E1 +8.029110000E2,5.147526495E1 +8.031720000E2,4.993046061E1 +8.034760000E2,6.394035794E1 +8.037260000E2,5.983119170E1 +8.040270000E2,5.967243802E1 +8.042930000E2,6.559340840E1 +8.046100000E2,5.262215496E1 +8.049160000E2,5.397812040E1 +8.051780000E2,5.680330381E1 +8.054740000E2,5.857171626E1 +8.058060000E2,5.577198454E1 +8.060880000E2,5.916891157E1 +8.063460000E2,6.120078548E1 +8.066060000E2,6.223167379E1 +8.069230000E2,6.161077093E1 +8.071720000E2,5.812180846E1 +8.074300000E2,5.665535607E1 +8.077230000E2,5.401482687E1 +8.079600000E2,5.631804256E1 +8.082610000E2,5.267806276E1 +8.085540000E2,5.766120113E1 +8.088100000E2,5.717509884E1 +8.091690000E2,5.698714543E1 +8.094130000E2,5.807918354E1 +8.096940000E2,5.364566959E1 +8.099320000E2,5.678502402E1 +8.102110000E2,5.494444844E1 +8.104710000E2,6.216218230E1 +8.107550000E2,5.504588420E1 +8.110030000E2,5.220186059E1 +8.112810000E2,5.338487037E1 +8.115430000E2,5.422122114E1 +8.118180000E2,6.217546099E1 +8.121430000E2,5.739027439E1 +8.124800000E2,5.218554734E1 +8.128080000E2,6.183667492E1 +8.130850000E2,6.028246668E1 +8.133620000E2,6.620979851E1 +8.135950000E2,5.810667246E1 +8.138630000E2,6.096670869E1 +8.141300000E2,5.149777407E1 +8.143960000E2,4.993954713E1 +8.146400000E2,5.196561010E1 +8.149350000E2,5.727966309E1 +8.151710000E2,5.489316784E1 +8.154100000E2,5.619291420E1 +8.157500000E2,5.425831711E1 +8.160430000E2,5.677079709E1 +8.163250000E2,5.289383275E1 +8.165600000E2,5.573749616E1 +8.168090000E2,5.211960412E1 +8.170840000E2,5.029895102E1 +8.173170000E2,5.085418245E1 +8.175630000E2,5.101392152E1 +8.178870000E2,5.228690479E1 +8.182130000E2,5.919931006E1 +8.184680000E2,5.288617356E1 +8.188320000E2,5.626269479E1 +8.191030000E2,6.124827198E1 +8.193870000E2,5.889071517E1 +8.196160000E2,5.957980623E1 +8.199180000E2,5.440069788E1 +8.201590000E2,5.524226830E1 +8.204560000E2,5.147688867E1 +8.206870000E2,5.390780082E1 +8.209820000E2,6.509870984E1 +8.212270000E2,6.421388309E1 +8.215230000E2,5.843840462E1 +8.218170000E2,5.422512027E1 +8.221280000E2,5.468614274E1 +8.223780000E2,5.922850585E1 +8.226710000E2,6.486031186E1 +8.229330000E2,6.154967201E1 +8.232420000E2,5.893257410E1 +8.235100000E2,6.020329639E1 +8.238290000E2,5.483779552E1 +8.240760000E2,5.692914998E1 +8.243280000E2,6.347347085E1 +8.245930000E2,5.345306004E1 +8.248670000E2,6.141647052E1 +8.252000000E2,5.672783001E1 +8.254550000E2,5.605661334E1 +8.257610000E2,5.699330885E1 +8.260410000E2,5.489256860E1 +8.263010000E2,6.262090025E1 +8.265830000E2,5.457719262E1 +8.268180000E2,5.416382407E1 +8.271260000E2,4.993919751E1 +8.273700000E2,5.569569056E1 +8.276330000E2,5.514364162E1 +8.278890000E2,5.653204472E1 +8.281470000E2,5.784406489E1 +8.284370000E2,5.752811490E1 +8.286720000E2,5.727510089E1 +8.289650000E2,5.900575965E1 +8.292510000E2,5.679022390E1 +8.294860000E2,5.722234118E1 +8.297350000E2,5.952638514E1 +8.300320000E2,5.925181191E1 +8.302740000E2,5.930148258E1 +8.305160000E2,5.668145507E1 +8.307730000E2,5.590492759E1 +8.310130000E2,6.302930486E1 +8.312510000E2,5.733539345E1 +8.315800000E2,5.620349253E1 +8.318910000E2,5.495250031E1 +8.322000000E2,5.501979251E1 +8.324620000E2,5.208226415E1 +8.327390000E2,5.765748383E1 +8.329950000E2,5.489193423E1 +8.332490000E2,5.593428331E1 +8.335720000E2,5.714652117E1 +8.338250000E2,5.832769426E1 +8.341370000E2,5.884156077E1 +8.344030000E2,5.840498509E1 +8.347020000E2,5.864505811E1 +8.350330000E2,6.356982434E1 +8.353340000E2,6.286445683E1 +8.355720000E2,5.657384439E1 +8.358940000E2,5.660970318E1 +8.361720000E2,5.918731584E1 +8.364160000E2,5.825788220E1 +8.366580000E2,5.592754487E1 +8.369110000E2,5.553717092E1 +8.371910000E2,5.495027293E1 +8.374510000E2,5.546329287E1 +8.377420000E2,5.746402701E1 +8.379890000E2,5.891922359E1 +8.383130000E2,6.522858798E1 +8.385710000E2,6.384617776E1 +8.388430000E2,5.435088619E1 +8.390670000E2,5.460135210E1 +8.393610000E2,5.982769627E1 +8.396020000E2,5.936265195E1 +8.398550000E2,6.034701146E1 +8.401470000E2,6.875861473E1 +8.403840000E2,6.968788985E1 +8.406760000E2,6.653493651E1 +8.409120000E2,6.664139767E1 +8.412200000E2,6.195236791E1 +8.415280000E2,5.759269564E1 +8.418110000E2,5.704906263E1 +8.420770000E2,5.199124728E1 +8.423350000E2,5.625309672E1 +8.426060000E2,5.627754144E1 +8.428710000E2,6.285304788E1 +8.431220000E2,6.089762622E1 +8.434160000E2,5.828079525E1 +8.436650000E2,5.581703965E1 +8.439650000E2,5.326092983E1 +8.442070000E2,5.247397640E1 +8.444500000E2,5.104216729E1 +8.447560000E2,4.981466747E1 +8.450730000E2,5.794387296E1 +8.453210000E2,6.103400827E1 +8.455680000E2,6.053778141E1 +8.458610000E2,5.413066164E1 +8.461240000E2,5.591468697E1 +8.463740000E2,5.289659812E1 +8.466770000E2,6.014390988E1 +8.469740000E2,5.713983843E1 +8.472340000E2,5.457406708E1 +8.474800000E2,5.848999564E1 +8.478210000E2,5.310404619E1 +8.481040000E2,5.463633704E1 +8.483620000E2,5.329096892E1 +8.486670000E2,5.667645304E1 +8.489890000E2,5.540515985E1 +8.492420000E2,5.014593999E1 +8.495060000E2,5.019949668E1 +8.497660000E2,4.724526190E1 +8.500410000E2,4.632701850E1 +8.502660000E2,4.436725745E1 +8.505710000E2,5.273585220E1 +8.508470000E2,5.232501704E1 +8.511370000E2,5.177389205E1 +8.513940000E2,5.236772038E1 +8.516560000E2,4.869019062E1 +8.518980000E2,5.254056589E1 +8.521620000E2,5.441215371E1 +8.524060000E2,5.431954181E1 +8.526720000E2,4.873515026E1 +8.529820000E2,5.253291311E1 +8.532350000E2,5.201920339E1 +8.535330000E2,5.083296820E1 +8.537750000E2,5.373650683E1 +8.540560000E2,6.162621210E1 +8.543710000E2,6.137876928E1 +8.546190000E2,6.347980201E1 +8.548850000E2,6.480134627E1 +8.551390000E2,6.344943059E1 +8.553830000E2,6.653758852E1 +8.556910000E2,6.821811094E1 +8.559900000E2,6.564040109E1 +8.562480000E2,6.310710880E1 +8.565060000E2,5.625485760E1 +8.567860000E2,5.886920329E1 +8.570590000E2,5.638007706E1 +8.573180000E2,5.477312089E1 +8.576670000E2,5.402637072E1 +8.579310000E2,5.282806817E1 +8.582400000E2,5.743205922E1 +8.584770000E2,5.608834078E1 +8.587730000E2,5.917700537E1 +8.590950000E2,5.757076232E1 +8.593390000E2,5.680975976E1 +8.596110000E2,5.316092446E1 +8.598560000E2,5.634389465E1 +8.601130000E2,5.912558361E1 +8.603880000E2,5.827706684E1 +8.606370000E2,5.580056474E1 +8.609720000E2,5.622551838E1 +8.612190000E2,5.816090597E1 +8.614650000E2,5.710633258E1 +8.617260000E2,6.762679027E1 +8.619970000E2,6.050550643E1 +8.622480000E2,6.017289530E1 +8.624960000E2,5.884551198E1 +8.627510000E2,5.823958631E1 +8.630120000E2,5.747421536E1 +8.632920000E2,5.891926612E1 +8.635810000E2,5.962176090E1 +8.638680000E2,5.932606834E1 +8.642430000E2,6.035939553E1 +8.645920000E2,5.892740034E1 +8.649090000E2,6.158225090E1 +8.651650000E2,5.941856931E1 +8.654560000E2,5.517726055E1 +8.656900000E2,5.573554393E1 +8.659400000E2,6.300977067E1 +8.662170000E2,6.346838855E1 +8.664760000E2,5.840482341E1 +8.667600000E2,5.656477763E1 +8.669980000E2,5.809371706E1 +8.672500000E2,5.957523428E1 +8.675890000E2,5.868790884E1 +8.678670000E2,6.643274765E1 +8.681530000E2,6.202304252E1 +8.684260000E2,6.167390940E1 +8.686760000E2,6.561664622E1 +8.689220000E2,6.221849135E1 +8.691620000E2,5.873701255E1 +8.694080000E2,5.721335717E1 +8.696600000E2,5.775578048E1 +8.699210000E2,6.139190630E1 +8.702060000E2,5.695582014E1 +8.705330000E2,5.285782467E1 +8.708800000E2,5.254436807E1 +8.711320000E2,5.941119733E1 +8.714840000E2,5.561687107E1 +8.717890000E2,5.226341013E1 +8.720340000E2,5.351737673E1 +8.723120000E2,5.581753669E1 +8.725450000E2,5.544476975E1 +8.727930000E2,5.112331517E1 +8.731050000E2,5.669948434E1 +8.733660000E2,5.553741274E1 +8.736450000E2,5.287392842E1 +8.738710000E2,5.342755356E1 +8.742030000E2,5.525376809E1 +8.745760000E2,5.790146612E1 +8.748470000E2,5.775550126E1 +8.750900000E2,5.828043309E1 +8.753860000E2,5.689517506E1 +8.756490000E2,5.836000549E1 +8.759170000E2,5.887049385E1 +8.761640000E2,5.731343570E1 +8.764240000E2,5.947081752E1 +8.766660000E2,5.735732777E1 +8.769150000E2,5.791222148E1 +8.771870000E2,5.217820200E1 +8.775110000E2,5.373516267E1 +8.777550000E2,5.639663701E1 +8.779960000E2,5.308435393E1 +8.782370000E2,5.327040257E1 +8.785510000E2,5.539866825E1 +8.788050000E2,5.451580533E1 +8.791100000E2,5.664888244E1 +8.793670000E2,5.439058144E1 +8.796110000E2,6.546629591E1 +8.799090000E2,6.080313073E1 +8.801560000E2,6.023654065E1 +8.804070000E2,5.547022044E1 +8.807450000E2,5.933402552E1 +8.809880000E2,6.073235462E1 +8.812850000E2,5.811897337E1 +8.815210000E2,5.670873426E1 +8.818240000E2,6.239450766E1 +8.821160000E2,6.033779387E1 +8.823610000E2,5.921328684E1 +8.826600000E2,5.808215882E1 +8.828910000E2,5.927124720E1 +8.831280000E2,5.254346564E1 +8.834120000E2,5.755316817E1 +8.837180000E2,5.815703318E1 +8.840150000E2,5.925974643E1 +8.842610000E2,5.406291788E1 +8.845520000E2,5.892672719E1 +8.847970000E2,6.343231596E1 +8.850390000E2,6.045689612E1 +8.853340000E2,5.903303339E1 +8.855810000E2,5.897514906E1 +8.858230000E2,5.682843230E1 +8.860690000E2,4.647265993E1 +8.863400000E2,5.617216143E1 +8.865730000E2,5.412892937E1 +8.869100000E2,6.210166513E1 +8.872070000E2,6.369099543E1 +8.874540000E2,6.052073025E1 +8.877480000E2,6.125108403E1 +8.879990000E2,6.087163347E1 +8.882550000E2,6.365510666E1 +8.885320000E2,5.341778352E1 +8.887600000E2,5.238943476E1 +8.890050000E2,6.378561240E1 +8.892460000E2,6.182956815E1 +8.895070000E2,6.027537659E1 +8.897770000E2,5.747996426E1 +8.901220000E2,5.606477689E1 +8.903620000E2,5.816493441E1 +8.907030000E2,5.740436721E1 +8.909540000E2,5.812990427E1 +8.912060000E2,5.757163286E1 +8.914520000E2,5.669306215E1 +8.917150000E2,5.593698617E1 +8.919580000E2,5.867011196E1 +8.922060000E2,6.001129970E1 +8.924480000E2,6.247831114E1 +8.927080000E2,5.501506807E1 +8.929550000E2,5.918039480E1 +8.932790000E2,5.750337148E1 +8.935260000E2,5.382626014E1 +8.937850000E2,5.632583646E1 +8.940370000E2,5.552393419E1 +8.943380000E2,5.417609473E1 +8.946050000E2,5.314873345E1 +8.948570000E2,5.537690953E1 +8.951790000E2,6.168371256E1 +8.954540000E2,6.142331687E1 +8.957690000E2,5.914263764E1 +8.960690000E2,6.039127428E1 +8.963670000E2,5.303465172E1 +8.966720000E2,5.819495208E1 +8.969200000E2,5.956457754E1 +8.972240000E2,5.554166388E1 +8.974940000E2,5.700583380E1 +8.978160000E2,5.525596264E1 +8.981210000E2,5.878997726E1 +8.983720000E2,5.661289659E1 +8.986510000E2,6.039909322E1 +8.988730000E2,5.569487247E1 +8.991240000E2,5.857026750E1 +8.993800000E2,6.116905404E1 +8.996580000E2,6.331625006E1 +8.998890000E2,5.612470465E1 +9.001440000E2,5.098243988E1 +9.004020000E2,5.779474181E1 +9.006650000E2,5.597754805E1 +9.009440000E2,5.706395638E1 +9.012380000E2,5.989184595E1 +9.015000000E2,5.905145002E1 +9.017620000E2,5.913397617E1 +9.020230000E2,5.831976398E1 +9.022900000E2,5.400731512E1 +9.025900000E2,6.547285797E1 +9.029050000E2,6.534571775E1 +9.032100000E2,5.428834230E1 +9.034580000E2,4.919896084E1 +9.037180000E2,5.326934205E1 +9.039740000E2,5.135684539E1 +9.042700000E2,5.784030554E1 +9.045180000E2,5.789711892E1 +9.048150000E2,5.501985460E1 +9.050680000E2,5.394185103E1 +9.053920000E2,5.504541187E1 +9.056620000E2,5.574384904E1 +9.059260000E2,5.198297704E1 +9.062920000E2,5.507423148E1 +9.065460000E2,5.073979477E1 +9.068090000E2,5.409355601E1 +9.071500000E2,5.842003605E1 +9.074380000E2,6.323761852E1 +9.076890000E2,5.475142925E1 +9.079510000E2,5.285089191E1 +9.082580000E2,6.228883476E1 +9.085110000E2,6.229139223E1 +9.087590000E2,5.849936549E1 +9.090220000E2,6.382664868E1 +9.092560000E2,5.234586511E1 +9.095720000E2,5.506613760E1 +9.098700000E2,5.883918884E1 +9.101180000E2,5.722745073E1 +9.103980000E2,6.006905181E1 +9.106670000E2,6.333821195E1 +9.109390000E2,5.997503412E1 +9.111770000E2,5.691091005E1 +9.114250000E2,5.629684565E1 +9.117070000E2,5.944947286E1 +9.119370000E2,5.757115704E1 +9.122030000E2,5.617546709E1 +9.125090000E2,5.506166951E1 +9.128480000E2,5.345826069E1 +9.131070000E2,5.586702127E1 +9.133900000E2,6.075354367E1 +9.137040000E2,5.668960998E1 +9.139920000E2,5.584388878E1 +9.142800000E2,5.668519299E1 +9.145740000E2,5.400550993E1 +9.148220000E2,5.668991412E1 +9.150670000E2,5.455006531E1 +9.153720000E2,5.750041942E1 +9.156590000E2,5.756327349E1 +9.159630000E2,5.822694927E1 +9.162110000E2,5.764545771E1 +9.164660000E2,5.716015909E1 +9.167560000E2,5.136001811E1 +9.170200000E2,4.706951064E1 +9.172710000E2,4.999131008E1 +9.175180000E2,5.619976433E1 +9.178030000E2,5.463675948E1 +9.180580000E2,4.995546642E1 +9.183000000E2,5.328928391E1 +9.185570000E2,4.808104957E1 +9.188650000E2,5.411517612E1 +9.191080000E2,5.672946344E1 +9.194270000E2,5.737096863E1 +9.196850000E2,5.974051238E1 +9.199830000E2,5.656564726E1 +9.202340000E2,5.709524531E1 +9.204810000E2,5.408385116E1 +9.208240000E2,5.414410830E1 +9.210650000E2,5.638214177E1 +9.213330000E2,5.753313030E1 +9.216130000E2,5.354803656E1 +9.219120000E2,6.191736419E1 +9.221480000E2,5.734366551E1 +9.224580000E2,5.684475304E1 +9.228030000E2,6.045431811E1 +9.230950000E2,5.973057312E1 +9.233960000E2,5.537690593E1 +9.236620000E2,5.411771801E1 +9.239600000E2,5.513839001E1 +9.242140000E2,5.699753068E1 +9.244670000E2,6.643461088E1 +9.247300000E2,6.062391899E1 +9.250330000E2,5.798096332E1 +9.253240000E2,6.347140522E1 +9.255740000E2,6.166496817E1 +9.259250000E2,6.190058171E1 +9.261820000E2,6.329204590E1 +9.264380000E2,6.389135880E1 +9.267030000E2,5.917517639E1 +9.269480000E2,5.809772267E1 +9.272170000E2,5.733235238E1 +9.274780000E2,5.226841119E1 +9.277860000E2,5.876554483E1 +9.280720000E2,6.281089568E1 +9.283510000E2,5.368859448E1 +9.286400000E2,5.449014251E1 +9.289370000E2,5.589991313E1 +9.292390000E2,5.452044152E1 +9.294860000E2,5.574135623E1 +9.297800000E2,5.656551806E1 +9.300200000E2,5.368800996E1 +9.302990000E2,5.374372369E1 +9.305490000E2,5.520696346E1 +9.308500000E2,5.642038107E1 +9.311480000E2,5.958603376E1 +9.314510000E2,5.775531382E1 +9.316980000E2,5.561486787E1 +9.319610000E2,5.826734748E1 +9.322700000E2,5.604871965E1 +9.325550000E2,5.170668645E1 +9.328670000E2,5.089285684E1 +9.331190000E2,4.724853188E1 +9.333790000E2,4.756075237E1 +9.336260000E2,5.199039629E1 +9.338890000E2,4.980140945E1 +9.341620000E2,5.530081877E1 +9.344120000E2,5.549144740E1 +9.347250000E2,5.515929093E1 +9.349780000E2,5.399104933E1 +9.352760000E2,5.325801117E1 +9.356240000E2,5.040008457E1 +9.359420000E2,5.360316460E1 +9.361890000E2,5.191591881E1 +9.364390000E2,5.324554606E1 +9.366970000E2,5.654671572E1 +9.370100000E2,5.711795620E1 +9.372590000E2,5.478625541E1 +9.375950000E2,5.667621371E1 +9.378550000E2,5.463565976E1 +9.381050000E2,5.398825590E1 +9.383580000E2,5.436030102E1 +9.386390000E2,5.091983440E1 +9.389120000E2,5.286705124E1 +9.391550000E2,5.236775571E1 +9.394300000E2,5.738794921E1 +9.397170000E2,5.727939554E1 +9.399750000E2,6.319402051E1 +9.402560000E2,5.468250624E1 +9.405530000E2,5.641852830E1 +9.408670000E2,6.200700436E1 +9.411390000E2,6.163446308E1 +9.413860000E2,7.148312536E1 +9.416340000E2,6.050927243E1 +9.419040000E2,5.667078757E1 +9.421350000E2,5.749142651E1 +9.424700000E2,5.240604485E1 +9.427760000E2,5.466454134E1 +9.430280000E2,6.082141946E1 +9.433300000E2,6.003969647E1 +9.436110000E2,6.121195378E1 +9.438460000E2,5.625129518E1 +9.441420000E2,5.911131348E1 +9.443880000E2,5.468317436E1 +9.446840000E2,6.009033853E1 +9.449440000E2,5.906624737E1 +9.452490000E2,5.464875325E1 +9.455970000E2,5.384566268E1 +9.458510000E2,5.044039840E1 +9.461140000E2,5.035886237E1 +9.463820000E2,5.734112986E1 +9.466620000E2,5.229112628E1 +9.469690000E2,6.028523542E1 +9.472250000E2,5.837101422E1 +9.475000000E2,5.619491985E1 +9.477970000E2,5.364209552E1 +9.480560000E2,5.511055516E1 +9.483560000E2,5.308396885E1 +9.486650000E2,5.587440008E1 +9.490640000E2,5.273632850E1 +9.493730000E2,6.231816715E1 +9.496570000E2,6.253734875E1 +9.499030000E2,5.554720788E1 +9.501460000E2,5.631566079E1 +9.503970000E2,5.626896653E1 +9.506490000E2,5.691941114E1 +9.508990000E2,5.116659255E1 +9.511440000E2,4.922875084E1 +9.514130000E2,5.936693495E1 +9.517070000E2,5.638156112E1 +9.520200000E2,5.180629212E1 +9.523780000E2,4.998674108E1 +9.526570000E2,4.841587788E1 +9.529100000E2,5.028896526E1 +9.531650000E2,4.965921907E1 +9.534690000E2,4.493319669E1 +9.537260000E2,4.598612712E1 +9.539740000E2,5.276251951E1 +9.542810000E2,4.126037796E1 +9.545830000E2,4.737114191E1 +9.548330000E2,4.411553821E1 +9.550850000E2,4.440050708E1 +9.553840000E2,5.260541790E1 +9.556980000E2,5.273901651E1 +9.559710000E2,5.383409632E1 +9.562220000E2,5.239354977E1 +9.564980000E2,4.759742823E1 +9.568040000E2,5.239869448E1 +9.570530000E2,5.238241691E1 +9.573300000E2,5.227349879E1 +9.575630000E2,5.272394727E1 +9.578410000E2,5.414710772E1 +9.580970000E2,5.325895305E1 +9.583410000E2,5.577122645E1 +9.586370000E2,5.015645058E1 +9.590040000E2,5.173028231E1 +9.593040000E2,5.447959265E1 +9.595640000E2,5.484713415E1 +9.598110000E2,5.470137539E1 +9.601060000E2,5.878769788E1 +9.603740000E2,5.851189839E1 +9.606810000E2,5.400762096E1 +9.609290000E2,5.749049444E1 +9.611870000E2,5.241750519E1 +9.614480000E2,4.979747952E1 +9.616960000E2,5.096881110E1 +9.620030000E2,5.149804171E1 +9.623180000E2,5.481599911E1 +9.625540000E2,5.138365056E1 +9.628240000E2,5.235851031E1 +9.630470000E2,4.871540913E1 +9.632880000E2,5.651540461E1 +9.635860000E2,5.650278128E1 +9.638210000E2,5.704973755E1 +9.641160000E2,5.757712252E1 +9.643960000E2,5.881159691E1 +9.646600000E2,5.355579494E1 +9.649750000E2,5.539751700E1 +9.652910000E2,4.797714339E1 +9.655520000E2,5.082548637E1 +9.658080000E2,5.579830605E1 +9.660780000E2,5.554406278E1 +9.663250000E2,5.354814316E1 +9.665660000E2,5.463107171E1 +9.668090000E2,5.368692433E1 +9.671300000E2,5.364867335E1 +9.674540000E2,5.468973775E1 +9.677060000E2,5.815904844E1 +9.680020000E2,5.598522308E1 +9.682480000E2,5.541083624E1 +9.685850000E2,5.512396132E1 +9.688400000E2,5.530796688E1 +9.691210000E2,5.433954611E1 +9.693810000E2,5.507440645E1 +9.696820000E2,5.086817906E1 +9.699140000E2,5.696191489E1 +9.701640000E2,5.845256581E1 +9.704420000E2,5.620226260E1 +9.706770000E2,5.629047170E1 +9.709750000E2,5.811655252E1 +9.712290000E2,5.703185419E1 +9.714900000E2,5.716734774E1 +9.718450000E2,5.493596869E1 +9.720910000E2,5.909437017E1 +9.723380000E2,5.710675060E1 +9.725910000E2,5.780279559E1 +9.728920000E2,5.860060144E1 +9.731360000E2,6.078900999E1 +9.734260000E2,5.852116194E1 +9.736640000E2,5.905899453E1 +9.739130000E2,5.636299630E1 +9.742090000E2,6.289355999E1 +9.744870000E2,6.167909115E1 +9.747290000E2,6.098057792E1 +9.750690000E2,5.906667343E1 +9.753320000E2,6.018572501E1 +9.756150000E2,5.718512970E1 +9.759100000E2,5.146063018E1 +9.761570000E2,5.733244632E1 +9.764050000E2,5.368365894E1 +9.766600000E2,5.486016267E1 +9.769150000E2,5.908582599E1 +9.771910000E2,5.733773036E1 +9.774400000E2,5.566361416E1 +9.777680000E2,5.819125256E1 +9.781220000E2,5.947694304E1 +9.783640000E2,6.140057637E1 +9.786330000E2,5.721849738E1 +9.788550000E2,5.617504209E1 +9.791010000E2,5.660293849E1 +9.793960000E2,5.174001770E1 +9.796880000E2,5.083474014E1 +9.799290000E2,5.184104339E1 +9.801850000E2,5.025385313E1 +9.804850000E2,5.286605500E1 +9.807270000E2,5.586849562E1 +9.809750000E2,5.666036754E1 +9.812950000E2,5.248500918E1 +9.815810000E2,5.416072977E1 +9.818360000E2,5.799655965E1 +9.821300000E2,5.801841935E1 +9.823770000E2,5.977514968E1 +9.826270000E2,5.676871456E1 +9.828850000E2,5.104814549E1 +9.831730000E2,5.834620153E1 +9.834010000E2,5.660640582E1 +9.836620000E2,5.686451748E1 +9.839750000E2,5.998440952E1 +9.842240000E2,5.556687478E1 +9.846000000E2,5.811069315E1 +9.848430000E2,5.843499893E1 +9.851250000E2,5.180956247E1 +9.853860000E2,5.206236639E1 +9.856480000E2,5.641840701E1 +9.859110000E2,5.518588565E1 +9.861920000E2,5.697237679E1 +9.864550000E2,5.411246614E1 +9.867510000E2,5.214533821E1 +9.869880000E2,5.642389575E1 +9.872440000E2,6.015294933E1 +9.875470000E2,5.809991100E1 +9.879150000E2,6.420044247E1 +9.881610000E2,6.042656173E1 +9.884280000E2,5.938959873E1 +9.886840000E2,6.059888233E1 +9.889870000E2,5.282749720E1 +9.892620000E2,5.638110380E1 +9.895440000E2,4.900409689E1 +9.897740000E2,4.971849802E1 +9.900320000E2,5.061428463E1 +9.903370000E2,5.829922071E1 +9.905860000E2,5.812083213E1 +9.908910000E2,5.500587720E1 +9.911860000E2,5.677481104E1 +9.914380000E2,5.502691141E1 +9.916830000E2,5.294500154E1 +9.919560000E2,5.700444986E1 +9.921770000E2,5.448756275E1 +9.924220000E2,5.785741234E1 +9.927280000E2,5.702180374E1 +9.929670000E2,6.013415875E1 +9.932080000E2,5.533496795E1 +9.934640000E2,5.695301526E1 +9.937440000E2,5.436173732E1 +9.940620000E2,5.092257074E1 +9.944480000E2,4.973000793E1 +9.946940000E2,4.871235512E1 +9.949410000E2,5.171412848E1 +9.951960000E2,5.643245777E1 +9.954520000E2,5.548819002E1 +9.957530000E2,5.694822585E1 +9.960600000E2,5.668072577E1 +9.963110000E2,5.547400320E1 +9.966010000E2,5.667137699E1 +9.968430000E2,5.866196066E1 +9.971120000E2,5.641527163E1 +9.974300000E2,5.505243365E1 +9.977140000E2,5.491253296E1 +9.979940000E2,5.642986287E1 +9.982400000E2,5.111113898E1 +9.985270000E2,5.228293633E1 +9.987770000E2,5.380023266E1 +9.990760000E2,5.259255492E1 +9.993610000E2,5.359948032E1 +9.996550000E2,5.817439497E1 +9.999080000E2,5.712087238E1 +1.000199000E3,6.016800470E1 +1.000435000E3,5.758076017E1 +1.000772000E3,5.328951429E1 +1.001047000E3,5.373102399E1 +1.001303000E3,5.905317642E1 +1.001622000E3,5.478240688E1 +1.001877000E3,5.648896451E1 +1.002173000E3,5.587033976E1 +1.002422000E3,5.995513955E1 +1.002724000E3,6.295760047E1 +1.003003000E3,5.978713154E1 +1.003261000E3,5.669754444E1 +1.003545000E3,5.577942906E1 +1.003827000E3,6.186873273E1 +1.004183000E3,6.253868639E1 +1.004493000E3,5.777226132E1 +1.004770000E3,6.482227668E1 +1.005072000E3,5.923751414E1 +1.005323000E3,5.644465637E1 +1.005601000E3,6.074750234E1 +1.005832000E3,5.683683327E1 +1.006147000E3,5.957418887E1 +1.006418000E3,6.134946851E1 +1.006713000E3,5.641852300E1 +1.006952000E3,5.637674327E1 +1.007310000E3,5.484290206E1 +1.007589000E3,6.426865013E1 +1.007886000E3,5.712036033E1 +1.008127000E3,5.768385080E1 +1.008427000E3,5.812466970E1 +1.008666000E3,6.112344783E1 +1.008973000E3,5.606588478E1 +1.009269000E3,5.809328667E1 +1.009507000E3,5.371315435E1 +1.009763000E3,5.527533595E1 +1.010003000E3,5.390597114E1 +1.010379000E3,5.652035402E1 +1.010658000E3,5.490058638E1 +1.010920000E3,5.927019017E1 +1.011197000E3,5.293113048E1 +1.011458000E3,5.179006266E1 +1.011718000E3,5.366462930E1 +1.011979000E3,5.569421827E1 +1.012229000E3,5.341899104E1 +1.012477000E3,4.863208748E1 +1.012772000E3,6.037154816E1 +1.013036000E3,5.430849576E1 +1.013284000E3,5.735938261E1 +1.013671000E3,5.526482118E1 +1.013957000E3,5.731780297E1 +1.014225000E3,5.205368153E1 +1.014486000E3,5.548863756E1 +1.014733000E3,5.265038263E1 +1.015033000E3,5.986876322E1 +1.015314000E3,5.130643680E1 +1.015590000E3,6.086878634E1 +1.015830000E3,5.798526739E1 +1.016137000E3,6.825745236E1 +1.016387000E3,5.828900876E1 +1.016655000E3,5.873097643E1 +1.017001000E3,6.454090665E1 +1.017329000E3,6.385512775E1 +1.017637000E3,6.691081911E1 +1.017938000E3,6.580217665E1 +1.018229000E3,6.485489311E1 +1.018470000E3,6.387101962E1 +1.018706000E3,6.616835921E1 +1.018997000E3,5.951737331E1 +1.019235000E3,5.386458503E1 +1.019536000E3,5.756977765E1 +1.019801000E3,5.811747841E1 +1.020064000E3,5.930001089E1 +1.020406000E3,5.469664450E1 +1.020673000E3,5.181220980E1 +1.020925000E3,5.483858346E1 +1.021232000E3,5.716842569E1 +1.021527000E3,5.738254897E1 +1.021762000E3,5.628034518E1 +1.022007000E3,5.850971228E1 +1.022258000E3,5.329919175E1 +1.022556000E3,5.482637446E1 +1.022813000E3,5.690503448E1 +1.023071000E3,5.317501594E1 +1.023336000E3,4.870888301E1 +1.023687000E3,6.132281620E1 +1.023965000E3,6.262505101E1 +1.024220000E3,6.180229149E1 +1.024496000E3,6.130993335E1 +1.024741000E3,6.231376381E1 +1.025040000E3,6.164360059E1 +1.025279000E3,5.910065798E1 +1.025533000E3,5.622173801E1 +1.025821000E3,5.290311975E1 +1.026116000E3,5.028293308E1 +1.026403000E3,5.581740437E1 +1.026664000E3,5.988277804E1 +1.027011000E3,5.730548262E1 +1.027305000E3,5.417769573E1 +1.027578000E3,5.250932185E1 +1.027819000E3,5.139919708E1 +1.028128000E3,5.061852216E1 +1.028380000E3,4.722292138E1 +1.028683000E3,5.983070917E1 +1.028956000E3,6.045269830E1 +1.029182000E3,5.777292957E1 +1.029431000E3,5.497807442E1 +1.029734000E3,5.533889528E1 +1.030063000E3,5.373558580E1 +1.030323000E3,5.600729212E1 +1.030620000E3,5.467159629E1 +1.030863000E3,5.246400101E1 +1.031110000E3,5.468037288E1 +1.031367000E3,5.850364516E1 +1.031646000E3,5.490958739E1 +1.031911000E3,5.866929845E1 +1.032210000E3,5.708288591E1 +1.032475000E3,5.498129629E1 +1.032736000E3,5.670272599E1 +1.032986000E3,5.317143219E1 +1.033315000E3,5.758413128E1 +1.033557000E3,6.361635596E1 +1.033846000E3,5.513973379E1 +1.034093000E3,5.215484095E1 +1.034399000E3,5.465926438E1 +1.034684000E3,5.588902955E1 +1.034978000E3,5.387672604E1 +1.035280000E3,5.595327755E1 +1.035543000E3,5.621513504E1 +1.035825000E3,5.991854954E1 +1.036079000E3,5.864640009E1 +1.036322000E3,6.072021936E1 +1.036666000E3,5.462749592E1 +1.036971000E3,5.329083651E1 +1.037264000E3,5.401214501E1 +1.037542000E3,5.242806591E1 +1.037843000E3,5.573267887E1 +1.038091000E3,5.224254554E1 +1.038380000E3,5.453929206E1 +1.038635000E3,5.371826859E1 +1.038891000E3,4.369246898E1 +1.039145000E3,4.547521933E1 +1.039418000E3,4.204639660E1 +1.039750000E3,4.426760298E1 +1.039990000E3,4.955659514E1 +1.040294000E3,4.960859899E1 +1.040560000E3,4.841380220E1 +1.040808000E3,4.914533708E1 +1.041104000E3,4.650609937E1 +1.041370000E3,4.849101938E1 +1.041622000E3,5.065930763E1 +1.041920000E3,4.744161935E1 +1.042161000E3,4.448519483E1 +1.042478000E3,4.726532690E1 +1.042725000E3,4.667923132E1 +1.043042000E3,4.704822757E1 +1.043307000E3,3.950691106E1 +1.043560000E3,5.249697508E1 +1.043835000E3,4.753687679E1 +1.044091000E3,4.843049138E1 +1.044350000E3,5.394643708E1 +1.044644000E3,4.769079035E1 +1.044887000E3,5.111291504E1 +1.045194000E3,5.247298633E1 +1.045445000E3,4.904344971E1 +1.045693000E3,4.405437847E1 +1.045988000E3,4.750888237E1 +1.046301000E3,4.305046000E1 +1.046518000E3,4.630901796E1 +1.046813000E3,4.756289225E1 +1.047053000E3,4.661089273E1 +1.047331000E3,6.143859736E1 +1.047566000E3,5.702483033E1 +1.047860000E3,5.015015196E1 +1.048098000E3,5.180675157E1 +1.048397000E3,4.645218330E1 +1.048640000E3,4.317726503E1 +1.048918000E3,4.962602549E1 +1.049159000E3,4.922447391E1 +1.049523000E3,4.310015818E1 +1.049767000E3,5.584844461E1 +1.050011000E3,5.550466055E1 +1.050294000E3,5.076679182E1 +1.050523000E3,4.777565498E1 +1.050776000E3,5.078379664E1 +1.051031000E3,4.412618688E1 +1.051298000E3,3.933148532E1 +1.051551000E3,4.240994962E1 +1.051799000E3,3.715036539E1 +1.052054000E3,4.541823437E1 +1.052312000E3,3.252240989E1 +1.052661000E3,4.298387800E1 +1.052922000E3,4.065675211E1 +1.053171000E3,3.851226965E1 +1.053417000E3,3.833414863E1 +1.053702000E3,3.734543870E1 +1.053967000E3,4.406198141E1 +1.054269000E3,3.397952572E1 +1.054518000E3,3.018425986E1 +1.054795000E3,2.659023927E1 +1.055055000E3,3.230579484E1 +1.055319000E3,4.027650377E1 +1.055588000E3,3.256611719E1 +1.055936000E3,3.203904394E1 +1.056189000E3,3.024692018E1 +1.056469000E3,4.044611203E1 +1.056698000E3,3.245705712E1 +1.056956000E3,5.087039919E1 +1.057201000E3,5.278557071E1 +1.057507000E3,6.996122129E1 +1.057766000E3,6.951439283E1 +1.058027000E3,6.731609209E1 +1.058291000E3,5.787293958E1 +1.058571000E3,5.774874245E1 +1.058801000E3,5.291748766E1 +1.059132000E3,4.352220528E1 +1.059391000E3,5.556254729E1 +1.059665000E3,5.339220405E1 +1.059951000E3,5.593145301E1 +1.060235000E3,5.299996372E1 +1.060492000E3,4.882317894E1 +1.060733000E3,3.790707311E1 +1.060975000E3,3.470192076E1 +1.061278000E3,4.481563830E1 +1.061519000E3,4.823008935E1 +1.061816000E3,4.719850269E1 +1.062076000E3,4.706381680E1 +1.062331000E3,4.530378435E1 +1.062576000E3,3.456809562E1 +1.062882000E3,3.742453964E1 +1.063154000E3,3.905594906E1 +1.063397000E3,3.672857244E1 +1.063694000E3,2.941779164E1 +1.063926000E3,2.995931983E1 +1.064168000E3,3.455311118E1 +1.064461000E3,3.254662869E1 +1.064708000E3,3.652583843E1 +1.065001000E3,5.229424666E1 +1.065352000E3,5.178814165E1 +1.065606000E3,4.798098259E1 +1.065854000E3,3.636652329E1 +1.066121000E3,4.558252535E1 +1.066366000E3,3.902840121E1 +1.066629000E3,3.106435508E1 +1.066887000E3,2.541330464E1 +1.067179000E3,3.474902335E1 +1.067449000E3,4.492275189E1 +1.067698000E3,3.860211372E1 +1.067955000E3,4.332670525E1 +1.068251000E3,5.147667691E1 +1.068546000E3,5.152069997E1 +1.068797000E3,4.540650098E1 +1.069105000E3,4.486446450E1 +1.069378000E3,4.196481867E1 +1.069632000E3,4.863200791E1 +1.069908000E3,3.878967071E1 +1.070151000E3,3.630888030E1 +1.070413000E3,2.964429880E1 +1.070682000E3,3.354707636E1 +1.070956000E3,4.008490969E1 +1.071248000E3,3.576577653E1 +1.071553000E3,4.349754488E1 +1.071886000E3,3.824859907E1 +1.072130000E3,3.455877689E1 +1.072406000E3,3.622999465E1 +1.072717000E3,3.637608237E1 +1.072984000E3,3.645219519E1 +1.073255000E3,4.353729148E1 +1.073603000E3,4.287473251E1 +1.073856000E3,4.842203791E1 +1.074097000E3,4.484407311E1 +1.074356000E3,4.397007110E1 +1.074628000E3,4.695884235E1 +1.074931000E3,4.627189963E1 +1.075264000E3,4.689571524E1 +1.075614000E3,5.203841291E1 +1.075923000E3,4.610184941E1 +1.076163000E3,4.404432471E1 +1.076475000E3,4.923215011E1 +1.076765000E3,4.466142180E1 +1.077062000E3,4.987282715E1 +1.077375000E3,4.461839454E1 +1.077687000E3,5.085403766E1 +1.077991000E3,4.674512295E1 +1.078232000E3,5.167180279E1 +1.078544000E3,4.780582457E1 +1.078939000E3,4.593914406E1 +1.079187000E3,4.061652220E1 +1.079434000E3,4.347669045E1 +1.079712000E3,4.326983820E1 +1.079966000E3,3.511950991E1 +1.080260000E3,4.755279745E1 +1.080506000E3,4.756343862E1 +1.080756000E3,4.779732167E1 +1.081049000E3,4.991962747E1 +1.081293000E3,5.213887128E1 +1.081586000E3,5.357624469E1 +1.081916000E3,5.141456645E1 +1.082165000E3,5.036532462E1 +1.082460000E3,4.962769973E1 +1.082696000E3,4.506404490E1 +1.082988000E3,4.537987312E1 +1.083220000E3,4.738457007E1 +1.083529000E3,4.698711193E1 +1.083769000E3,4.571430081E1 +1.084079000E3,4.980908007E1 +1.084324000E3,5.082282040E1 +1.084590000E3,5.406004268E1 +1.084876000E3,5.436375886E1 +1.085258000E3,5.361506257E1 +1.085509000E3,5.202937925E1 +1.085815000E3,5.324976969E1 +1.086057000E3,5.371445731E1 +1.086301000E3,5.282162917E1 +1.086550000E3,5.221281857E1 +1.086802000E3,5.263727375E1 +1.087126000E3,5.703022139E1 +1.087384000E3,5.519432869E1 +1.087646000E3,5.426647490E1 +1.087939000E3,5.407342864E1 +1.088175000E3,5.235924404E1 +1.088520000E3,4.681002832E1 +1.088812000E3,4.891237586E1 +1.089076000E3,4.699020733E1 +1.089350000E3,4.902871382E1 +1.089591000E3,5.078145117E1 +1.089837000E3,5.041791921E1 +1.090133000E3,4.603650794E1 +1.090430000E3,4.871755485E1 +1.090660000E3,5.111421073E1 +1.090911000E3,4.581894631E1 +1.091248000E3,4.988189917E1 +1.091630000E3,5.341365920E1 +1.091902000E3,4.962858025E1 +1.092183000E3,4.315344358E1 +1.092440000E3,4.664431132E1 +1.092683000E3,4.616459192E1 +1.092923000E3,4.765071496E1 +1.093171000E3,4.163360687E1 +1.093473000E3,4.537777608E1 +1.093714000E3,4.783603025E1 +1.094007000E3,4.845414260E1 +1.094261000E3,4.799870549E1 +1.094499000E3,4.651309815E1 +1.094792000E3,5.003648984E1 +1.095123000E3,5.202534254E1 +1.095372000E3,5.709400077E1 +1.095625000E3,5.694079106E1 +1.095896000E3,5.715452089E1 +1.096196000E3,5.523378380E1 +1.096438000E3,5.375558627E1 +1.096737000E3,5.665208041E1 +1.096991000E3,5.314654737E1 +1.097292000E3,5.142447849E1 +1.097557000E3,5.330628285E1 +1.097827000E3,5.512040694E1 +1.098167000E3,5.399583122E1 +1.098472000E3,5.540663813E1 +1.098720000E3,5.200546986E1 +1.098960000E3,4.676140326E1 +1.099243000E3,4.798657093E1 +1.099544000E3,4.841724285E1 +1.099804000E3,5.642371618E1 +1.100109000E3,5.409000726E1 +1.100381000E3,5.348646719E1 +1.100630000E3,5.346537578E1 +1.100927000E3,5.422782845E1 +1.101164000E3,5.395323822E1 +1.101495000E3,5.383967560E1 +1.101763000E3,5.667828538E1 +1.102044000E3,4.764690784E1 +1.102307000E3,5.353530254E1 +1.102613000E3,5.568430762E1 +1.102906000E3,5.431580275E1 +1.103147000E3,5.193331555E1 +1.103441000E3,5.040945762E1 +1.103677000E3,5.333005838E1 +1.103968000E3,4.947534745E1 +1.104272000E3,5.306270968E1 +1.104564000E3,5.537230515E1 +1.104799000E3,4.876041085E1 +1.105069000E3,5.109409535E1 +1.105330000E3,5.087734214E1 +1.105587000E3,5.225642483E1 +1.105838000E3,5.176680091E1 +1.106135000E3,5.535939212E1 +1.106380000E3,5.666892185E1 +1.106622000E3,5.658846562E1 +1.106895000E3,5.577897889E1 +1.107150000E3,5.157178717E1 +1.107431000E3,5.284488409E1 +1.107756000E3,5.415639955E1 +1.108002000E3,5.465643057E1 +1.108313000E3,4.654328988E1 +1.108563000E3,5.038890380E1 +1.108811000E3,4.602751738E1 +1.109073000E3,4.801243396E1 +1.109375000E3,4.782472616E1 +1.109667000E3,4.666447221E1 +1.109943000E3,5.156469126E1 +1.110192000E3,4.949682888E1 +1.110448000E3,4.919673339E1 +1.110752000E3,4.862521519E1 +1.111045000E3,5.122379655E1 +1.111295000E3,4.813892217E1 +1.111515000E3,4.901611396E1 +1.111761000E3,4.905664967E1 +1.112005000E3,4.647618514E1 +1.112265000E3,4.730688076E1 +1.112537000E3,5.039121351E1 +1.112793000E3,4.985611957E1 +1.113101000E3,5.474563863E1 +1.113387000E3,5.028870882E1 +1.113678000E3,5.073784750E1 +1.113952000E3,4.995138555E1 +1.114291000E3,4.790039203E1 +1.114554000E3,4.764335594E1 +1.114849000E3,5.057104591E1 +1.115096000E3,5.107398730E1 +1.115401000E3,4.800391913E1 +1.115672000E3,4.553282874E1 +1.115895000E3,4.569523337E1 +1.116194000E3,4.480844215E1 +1.116425000E3,4.772339962E1 +1.116664000E3,5.255452638E1 +1.116906000E3,4.927433934E1 +1.117202000E3,4.871369865E1 +1.117530000E3,4.928110420E1 +1.117840000E3,5.705383563E1 +1.118146000E3,4.880674861E1 +1.118418000E3,5.038180726E1 +1.118687000E3,5.145980404E1 +1.118950000E3,5.338008269E1 +1.119227000E3,5.227728425E1 +1.119468000E3,5.450689216E1 +1.119736000E3,5.844246451E1 +1.120049000E3,5.459398611E1 +1.120351000E3,5.526423567E1 +1.120605000E3,5.228963309E1 +1.120918000E3,5.598288902E1 +1.121182000E3,5.280889802E1 +1.121489000E3,4.974717420E1 +1.121729000E3,5.137523152E1 +1.121978000E3,5.052356297E1 +1.122235000E3,5.240368249E1 +1.122503000E3,4.826380791E1 +1.122775000E3,5.095403791E1 +1.123036000E3,5.799909934E1 +1.123291000E3,4.889512711E1 +1.123587000E3,5.622808486E1 +1.123874000E3,5.230369090E1 +1.124235000E3,5.081102316E1 +1.124544000E3,5.628773803E1 +1.124826000E3,5.810547372E1 +1.125153000E3,5.508029719E1 +1.125432000E3,5.576573503E1 +1.125722000E3,5.346022180E1 +1.125978000E3,5.279748306E1 +1.126234000E3,5.604802053E1 +1.126502000E3,5.937326657E1 +1.126804000E3,5.703447215E1 +1.127047000E3,5.520354594E1 +1.127314000E3,5.551787326E1 +1.127554000E3,5.740837773E1 +1.127843000E3,5.663015330E1 +1.128135000E3,5.649615150E1 +1.128380000E3,5.731556257E1 +1.128677000E3,6.079986861E1 +1.128914000E3,5.820128856E1 +1.129207000E3,6.091746513E1 +1.129442000E3,6.126941240E1 +1.129745000E3,4.541170906E1 +1.129980000E3,4.341485096E1 +1.130277000E3,4.833777967E1 +1.130573000E3,4.472710223E1 +1.130815000E3,5.059675199E1 +1.131062000E3,3.863826940E1 +1.131353000E3,4.925455740E1 +1.131589000E3,4.859989956E1 +1.131881000E3,5.113067908E1 +1.132117000E3,5.054542106E1 +1.132418000E3,4.827479925E1 +1.132654000E3,4.610884488E1 +1.132948000E3,4.879734536E1 +1.133241000E3,5.074680390E1 +1.133563000E3,5.119298220E1 +1.133864000E3,4.861265792E1 +1.134166000E3,5.001512903E1 +1.134452000E3,5.059053464E1 +1.134716000E3,4.999839479E1 +1.134967000E3,4.960069086E1 +1.135222000E3,5.320256888E1 +1.135494000E3,5.604818163E1 +1.135742000E3,5.625768045E1 +1.135999000E3,5.261645024E1 +1.136244000E3,5.105081932E1 +1.136501000E3,5.616444939E1 +1.136847000E3,5.624064264E1 +1.137105000E3,5.654097446E1 +1.137391000E3,5.807884104E1 +1.137717000E3,5.436169891E1 +1.137970000E3,5.763959225E1 +1.138239000E3,5.465216875E1 +1.138486000E3,5.094509116E1 +1.138731000E3,5.425415233E1 +1.138977000E3,5.143709697E1 +1.139259000E3,5.032545705E1 +1.139527000E3,5.906031130E1 +1.139800000E3,5.308709054E1 +1.140168000E3,5.407062541E1 +1.140423000E3,5.585261351E1 +1.140694000E3,5.463535881E1 +1.140949000E3,5.407603664E1 +1.141230000E3,5.495767686E1 +1.141512000E3,5.639433741E1 +1.141818000E3,5.555715330E1 +1.142072000E3,5.729232944E1 +1.142323000E3,5.553013253E1 +1.142578000E3,5.648251207E1 +1.142844000E3,5.786931075E1 +1.143143000E3,6.007493220E1 +1.143523000E3,5.752076543E1 +1.143836000E3,5.573324560E1 +1.144090000E3,5.641950784E1 +1.144396000E3,5.532270625E1 +1.144644000E3,5.561239732E1 +1.144940000E3,5.206707456E1 +1.145212000E3,5.092140902E1 +1.145511000E3,5.452891649E1 +1.145770000E3,5.331137977E1 +1.146042000E3,5.366568195E1 +1.146338000E3,5.227174013E1 +1.146650000E3,5.423955559E1 +1.146934000E3,5.781916580E1 +1.147218000E3,5.532962824E1 +1.147467000E3,5.502661676E1 +1.147687000E3,5.823979674E1 +1.147961000E3,5.538066560E1 +1.148276000E3,5.423260060E1 +1.148528000E3,5.197461977E1 +1.148799000E3,5.154724487E1 +1.149057000E3,5.473685923E1 +1.149367000E3,5.647867848E1 +1.149660000E3,5.489455072E1 +1.150037000E3,6.072892064E1 +1.150335000E3,5.543869835E1 +1.150594000E3,5.667713742E1 +1.150870000E3,5.818755157E1 +1.151164000E3,5.210849760E1 +1.151411000E3,5.095671455E1 +1.151703000E3,5.254983272E1 +1.152002000E3,5.585064224E1 +1.152253000E3,5.739007574E1 +1.152582000E3,5.895179917E1 +1.152860000E3,5.461317681E1 +1.153122000E3,5.345759293E1 +1.153381000E3,5.267971619E1 +1.153684000E3,6.006602205E1 +1.153986000E3,5.573552061E1 +1.154286000E3,5.518963618E1 +1.154531000E3,5.342922095E1 +1.154792000E3,5.257536969E1 +1.155139000E3,4.887945516E1 +1.155435000E3,4.702411688E1 +1.155680000E3,4.867646616E1 +1.155978000E3,4.811861077E1 +1.156361000E3,4.915586406E1 +1.156670000E3,5.033026069E1 +1.156976000E3,5.393908378E1 +1.157274000E3,5.295128205E1 +1.157524000E3,5.249671789E1 +1.157816000E3,5.314344994E1 +1.158052000E3,5.237342933E1 +1.158353000E3,5.300284286E1 +1.158590000E3,5.170068449E1 +1.158867000E3,5.174146304E1 +1.159147000E3,4.929588783E1 +1.159411000E3,5.699090425E1 +1.159752000E3,5.266690351E1 +1.160068000E3,5.746767577E1 +1.160360000E3,5.375850846E1 +1.160640000E3,5.373794020E1 +1.160985000E3,5.304914530E1 +1.161280000E3,5.198754593E1 +1.161525000E3,5.019848207E1 +1.161766000E3,5.164623609E1 +1.162020000E3,5.363319210E1 +1.162324000E3,5.439011044E1 +1.162564000E3,5.304648945E1 +1.162816000E3,5.174573718E1 +1.163177000E3,4.505755779E1 +1.163462000E3,4.894753105E1 +1.163738000E3,5.064933943E1 +1.164013000E3,5.245879056E1 +1.164255000E3,5.017914517E1 +1.164568000E3,5.189205429E1 +1.164823000E3,5.038961444E1 +1.165052000E3,5.072118593E1 +1.165297000E3,4.831662547E1 +1.165552000E3,5.050204887E1 +1.165808000E3,5.308107982E1 +1.166062000E3,4.878509871E1 +1.166392000E3,5.002605106E1 +1.166654000E3,5.320265697E1 +1.166911000E3,4.403273534E1 +1.167180000E3,5.161386051E1 +1.167455000E3,4.986209571E1 +1.167692000E3,4.993305836E1 +1.167973000E3,5.173621365E1 +1.168216000E3,5.385559129E1 +1.168491000E3,5.543019156E1 +1.168757000E3,5.019966657E1 +1.169035000E3,5.569516326E1 +1.169296000E3,5.216419082E1 +1.169676000E3,5.398731996E1 +1.169933000E3,5.465625282E1 +1.170197000E3,5.451774184E1 +1.170449000E3,5.328129322E1 +1.170705000E3,5.452639907E1 +1.170963000E3,5.713735254E1 +1.171272000E3,5.551413923E1 +1.171528000E3,5.604966001E1 +1.171779000E3,5.340478404E1 +1.172038000E3,5.107817821E1 +1.172291000E3,5.218990306E1 +1.172602000E3,4.830451720E1 +1.172964000E3,5.276802164E1 +1.173245000E3,5.191204687E1 +1.173527000E3,5.337367972E1 +1.173838000E3,5.462664550E1 +1.174090000E3,5.304724513E1 +1.174379000E3,5.193251440E1 +1.174628000E3,5.283915893E1 +1.174936000E3,5.036641160E1 +1.175236000E3,4.890810708E1 +1.175487000E3,4.805298565E1 +1.175750000E3,5.067335741E1 +1.176019000E3,4.961207397E1 +1.176335000E3,4.820862314E1 +1.176634000E3,5.328684116E1 +1.176883000E3,5.122009001E1 +1.177165000E3,5.878687770E1 +1.177412000E3,5.487235950E1 +1.177709000E3,5.224569426E1 +1.178006000E3,5.403405997E1 +1.178246000E3,5.388661901E1 +1.178490000E3,5.237426881E1 +1.178734000E3,5.372043820E1 +1.179050000E3,5.471170909E1 +1.179387000E3,5.129350436E1 +1.179686000E3,4.660070824E1 +1.179916000E3,4.541361068E1 +1.180159000E3,4.365576113E1 +1.180466000E3,4.771103553E1 +1.180756000E3,4.863237791E1 +1.181008000E3,5.534959697E1 +1.181314000E3,5.376444060E1 +1.181609000E3,5.130885425E1 +1.181851000E3,5.256948786E1 +1.182151000E3,5.321964637E1 +1.182393000E3,5.074776981E1 +1.182622000E3,4.979941250E1 +1.182873000E3,5.445637667E1 +1.183116000E3,4.449721128E1 +1.183420000E3,5.086906199E1 +1.183676000E3,5.067998506E1 +1.183927000E3,5.352019181E1 +1.184219000E3,4.851971310E1 +1.184517000E3,5.123853013E1 +1.184764000E3,5.278221141E1 +1.185010000E3,5.126409245E1 +1.185297000E3,5.249182764E1 +1.185665000E3,5.346599478E1 +1.185972000E3,5.052250297E1 +1.186225000E3,5.389354916E1 +1.186534000E3,5.372737626E1 +1.186796000E3,5.415645782E1 +1.187048000E3,5.441424865E1 +1.187317000E3,5.470553815E1 +1.187622000E3,5.559990781E1 +1.187913000E3,5.619293356E1 +1.188186000E3,4.869472445E1 +1.188442000E3,5.069948923E1 +1.188718000E3,5.296813397E1 +1.189051000E3,5.015003063E1 +1.189308000E3,5.110938827E1 +1.189570000E3,5.250182053E1 +1.189815000E3,5.240850659E1 +1.190062000E3,5.446862868E1 +1.190368000E3,5.270463767E1 +1.190629000E3,5.117539458E1 +1.190931000E3,5.543767536E1 +1.191207000E3,5.348622922E1 +1.191505000E3,5.112152946E1 +1.191761000E3,4.905277341E1 +1.192068000E3,5.456405848E1 +1.192487000E3,5.016322677E1 +1.192732000E3,4.971711263E1 +1.192976000E3,5.396031961E1 +1.193258000E3,5.018645567E1 +1.193531000E3,4.895586707E1 +1.193790000E3,5.442023654E1 +1.194055000E3,5.160697029E1 +1.194326000E3,4.822365107E1 +1.194605000E3,5.396633777E1 +1.194903000E3,5.031021734E1 +1.195141000E3,5.278015326E1 +1.195431000E3,4.949576105E1 +1.195801000E3,5.244682833E1 +1.196076000E3,5.508575727E1 +1.196371000E3,5.161802747E1 +1.196603000E3,5.716896987E1 +1.196858000E3,5.210002974E1 +1.197207000E3,5.483594793E1 +1.197503000E3,5.204828926E1 +1.197774000E3,5.339169315E1 +1.198054000E3,4.934781945E1 +1.198312000E3,5.918797425E1 +1.198559000E3,5.025254784E1 +1.198808000E3,5.317746302E1 +1.199152000E3,5.656715516E1 +1.199464000E3,5.448426177E1 +1.199717000E3,5.419526565E1 +1.199961000E3,5.304156540E1 +1.200219000E3,4.961182292E1 +1.200480000E3,5.259766625E1 +1.200730000E3,5.295115767E1 +1.201029000E3,5.365389524E1 +1.201288000E3,5.465027972E1 +1.201538000E3,5.131261505E1 +1.201807000E3,5.767453751E1 +1.202112000E3,5.316006082E1 +1.202485000E3,5.263333972E1 +1.202739000E3,4.966297173E1 +1.203041000E3,5.282706501E1 +1.203300000E3,4.950274237E1 +1.203539000E3,4.377779375E1 +1.203832000E3,5.274682795E1 +1.204077000E3,5.348405653E1 +1.204320000E3,5.647600154E1 +1.204615000E3,4.835002395E1 +1.204854000E3,4.440243109E1 +1.205149000E3,4.673035253E1 +1.205410000E3,4.901106802E1 +1.205666000E3,5.311033159E1 +1.205952000E3,5.020567211E1 +1.206248000E3,5.046889058E1 +1.206545000E3,6.150607502E1 +1.206779000E3,5.260331634E1 +1.207093000E3,5.183291791E1 +1.207367000E3,4.957331060E1 +1.207610000E3,5.139200370E1 +1.207857000E3,5.005726187E1 +1.208158000E3,4.979521937E1 +1.208398000E3,5.178137337E1 +1.208738000E3,4.632694184E1 +1.208994000E3,4.836915777E1 +1.209279000E3,4.869228435E1 +1.209528000E3,5.096507040E1 +1.209784000E3,4.718590489E1 +1.210053000E3,4.835967114E1 +1.210281000E3,4.725223201E1 +1.210542000E3,5.172958855E1 +1.210823000E3,5.546336112E1 +1.211051000E3,5.448218663E1 +1.211300000E3,5.371995163E1 +1.211551000E3,4.887559574E1 +1.211926000E3,4.975732945E1 +1.212205000E3,5.041543230E1 +1.212482000E3,4.863959509E1 +1.212730000E3,5.047232348E1 +1.212990000E3,4.824384094E1 +1.213232000E3,5.039377586E1 +1.213493000E3,4.517891187E1 +1.213814000E3,4.686032989E1 +1.214062000E3,4.852263494E1 +1.214337000E3,4.897277606E1 +1.214586000E3,4.662047985E1 +1.214832000E3,5.483925472E1 +1.215143000E3,5.677489998E1 +1.215372000E3,5.470688254E1 +1.215664000E3,5.408747991E1 +1.215962000E3,5.167832591E1 +1.216227000E3,5.463116224E1 +1.216504000E3,5.335564969E1 +1.216747000E3,4.832376612E1 +1.216996000E3,4.918538596E1 +1.217306000E3,5.329611015E1 +1.217618000E3,5.364881155E1 +1.217885000E3,5.087209115E1 +1.218149000E3,4.967310650E1 +1.218497000E3,4.842689624E1 +1.218801000E3,5.442588779E1 +1.219043000E3,5.338467746E1 +1.219349000E3,5.187371665E1 +1.219600000E3,4.992515182E1 +1.219883000E3,5.205809257E1 +1.220161000E3,5.374364962E1 +1.220471000E3,5.145920034E1 +1.220752000E3,5.112774200E1 +1.221009000E3,4.969936214E1 +1.221258000E3,4.906585252E1 +1.221519000E3,4.971022706E1 +1.221873000E3,5.039216656E1 +1.222125000E3,4.735018859E1 +1.222388000E3,5.025223930E1 +1.222647000E3,5.349102952E1 +1.222903000E3,5.894430216E1 +1.223210000E3,5.133834742E1 +1.223464000E3,5.378681025E1 +1.223708000E3,5.646161983E1 +1.223949000E3,5.127610878E1 +1.224189000E3,5.295211205E1 +1.224441000E3,5.074229414E1 +1.224698000E3,5.428527885E1 +1.225064000E3,6.064230054E1 +1.225333000E3,5.545461106E1 +1.225591000E3,5.085263163E1 +1.225847000E3,4.867332677E1 +1.226137000E3,4.828036819E1 +1.226394000E3,5.187031217E1 +1.226668000E3,4.691949774E1 +1.226931000E3,4.605300024E1 +1.227219000E3,4.319091646E1 +1.227493000E3,4.827268256E1 +1.227791000E3,4.873371181E1 +1.228031000E3,4.895629331E1 +1.228388000E3,4.831306026E1 +1.228651000E3,5.150144778E1 +1.228942000E3,5.210555115E1 +1.229190000E3,4.868630793E1 +1.229442000E3,5.072280558E1 +1.229686000E3,5.520857657E1 +1.229933000E3,5.597505745E1 +1.230228000E3,5.309096620E1 +1.230467000E3,5.340491117E1 +1.230765000E3,4.966814228E1 +1.231012000E3,4.811713105E1 +1.231316000E3,5.037869561E1 +1.231666000E3,4.768651081E1 +1.231948000E3,4.577834304E1 +1.232207000E3,4.455407567E1 +1.232510000E3,5.091422235E1 +1.232802000E3,4.990562511E1 +1.233047000E3,5.178152081E1 +1.233344000E3,5.312014577E1 +1.233592000E3,5.002236071E1 +1.233892000E3,5.158473192E1 +1.234173000E3,4.692863129E1 +1.234463000E3,4.643331531E1 +1.234792000E3,4.659156592E1 +1.235060000E3,4.662718910E1 +1.235313000E3,5.204491267E1 +1.235577000E3,5.165973487E1 +1.235837000E3,4.753691687E1 +1.236124000E3,5.179615379E1 +1.236401000E3,4.807409380E1 +1.236654000E3,5.474790946E1 +1.236923000E3,4.946475170E1 +1.237180000E3,4.949471083E1 +1.237426000E3,4.669168363E1 +1.237743000E3,5.529942944E1 +1.238061000E3,5.997488643E1 +1.238363000E3,5.302222406E1 +1.238611000E3,5.022506453E1 +1.238856000E3,4.864145193E1 +1.239102000E3,5.299123845E1 +1.239357000E3,4.682866815E1 +1.239657000E3,4.770894983E1 +1.239902000E3,4.813746372E1 +1.240150000E3,4.571771059E1 +1.240465000E3,5.354012247E1 +1.240765000E3,5.830707734E1 +1.241013000E3,5.483189048E1 +1.241344000E3,5.157405593E1 +1.241606000E3,5.072581437E1 +1.241868000E3,5.137979859E1 +1.242133000E3,4.849261303E1 +1.242396000E3,5.556107710E1 +1.242656000E3,4.958779284E1 +1.242959000E3,5.301548021E1 +1.243232000E3,5.475621292E1 +1.243501000E3,5.660789219E1 +1.243755000E3,5.350018163E1 +1.244010000E3,5.415674835E1 +1.244349000E3,5.699979568E1 +1.244717000E3,5.660044844E1 +1.245015000E3,5.808533709E1 +1.245259000E3,5.881859790E1 +1.245558000E3,5.728882886E1 +1.245808000E3,6.044308225E1 +1.246079000E3,5.893900513E1 +1.246326000E3,5.279872381E1 +1.246637000E3,5.769196864E1 +1.246935000E3,5.963088900E1 +1.247181000E3,5.367341836E1 +1.247508000E3,4.963645506E1 +1.247848000E3,5.265770489E1 +1.248115000E3,5.355743381E1 +1.248359000E3,4.891015342E1 +1.248659000E3,4.819353582E1 +1.248902000E3,4.966403220E1 +1.249199000E3,4.977495696E1 +1.249449000E3,5.715212626E1 +1.249708000E3,5.458337902E1 +1.249983000E3,4.910795823E1 +1.250282000E3,5.184902745E1 +1.250527000E3,5.416053460E1 +1.250777000E3,5.320773170E1 +1.251084000E3,5.422274265E1 +1.251342000E3,5.429456299E1 +1.251602000E3,5.910733722E1 +1.251866000E3,5.226490816E1 +1.252178000E3,5.191466859E1 +1.252452000E3,5.143339371E1 +1.252681000E3,5.066846779E1 +1.252975000E3,4.928639562E1 +1.253256000E3,4.916995298E1 +1.253528000E3,5.115941927E1 +1.253816000E3,4.850268402E1 +1.254063000E3,5.682920937E1 +1.254418000E3,5.583927157E1 +1.254700000E3,5.243405901E1 +1.254947000E3,5.411796563E1 +1.255215000E3,5.538314624E1 +1.255487000E3,5.447026824E1 +1.255748000E3,5.115232974E1 +1.256046000E3,5.273125350E1 +1.256281000E3,5.501639825E1 +1.256559000E3,5.470702619E1 +1.256867000E3,5.330168249E1 +1.257116000E3,5.680033697E1 +1.257361000E3,5.088137081E1 +1.257690000E3,4.771044205E1 +1.257935000E3,5.556188303E1 +1.258189000E3,5.821474305E1 +1.258460000E3,5.913083175E1 +1.258757000E3,5.624840253E1 +1.259001000E3,5.575040009E1 +1.259294000E3,5.295140054E1 +1.259581000E3,5.547885633E1 +1.259831000E3,5.659634167E1 +1.260084000E3,5.552607398E1 +1.260378000E3,5.399987136E1 +1.260676000E3,5.741946227E1 +1.260997000E3,5.622829253E1 +1.261272000E3,5.638519080E1 +1.261569000E3,5.222122782E1 +1.261810000E3,5.168558616E1 +1.262055000E3,5.937417075E1 +1.262351000E3,5.419990938E1 +1.262597000E3,5.469291977E1 +1.262893000E3,5.501007253E1 +1.263142000E3,5.356116387E1 +1.263421000E3,5.643294047E1 +1.263644000E3,5.627927149E1 +1.263964000E3,5.547827797E1 +1.264255000E3,5.434029164E1 +1.264552000E3,5.355134450E1 +1.264791000E3,5.268456483E1 +1.265090000E3,5.304298782E1 +1.265342000E3,5.292557941E1 +1.265637000E3,5.267823535E1 +1.265885000E3,5.076475521E1 +1.266186000E3,5.470463807E1 +1.266480000E3,5.369531663E1 +1.266727000E3,5.321314382E1 +1.267074000E3,5.430022488E1 +1.267386000E3,5.498366079E1 +1.267650000E3,5.373765381E1 +1.267926000E3,5.631680810E1 +1.268156000E3,5.314598601E1 +1.268459000E3,5.446778700E1 +1.268718000E3,5.461487175E1 +1.269029000E3,4.723979401E1 +1.269322000E3,5.050485841E1 +1.269602000E3,5.263446338E1 +1.269914000E3,5.195043172E1 +1.270180000E3,5.361139844E1 +1.270542000E3,5.127785292E1 +1.270796000E3,5.111084292E1 +1.271061000E3,5.030178225E1 +1.271329000E3,4.978955516E1 +1.271616000E3,5.398913319E1 +1.271862000E3,5.537806166E1 +1.272155000E3,5.301545016E1 +1.272407000E3,5.450597504E1 +1.272651000E3,5.090153644E1 +1.272906000E3,5.335437953E1 +1.273148000E3,4.673762491E1 +1.273392000E3,5.062539325E1 +1.273710000E3,5.110756444E1 +1.273960000E3,5.466659884E1 +1.274217000E3,5.158121780E1 +1.274511000E3,5.575560452E1 +1.274759000E3,5.536976579E1 +1.275054000E3,5.425250328E1 +1.275298000E3,5.448034930E1 +1.275544000E3,5.185016662E1 +1.275828000E3,5.206320816E1 +1.276126000E3,5.118466074E1 +1.276376000E3,4.943928704E1 +1.276707000E3,5.090592254E1 +1.276972000E3,5.767487174E1 +1.277251000E3,5.481331862E1 +1.277544000E3,5.385854096E1 +1.277810000E3,5.179333541E1 +1.278097000E3,5.161992279E1 +1.278344000E3,5.248655937E1 +1.278657000E3,5.064236034E1 +1.278927000E3,4.915402835E1 +1.279197000E3,5.321156971E1 +1.279471000E3,5.438812541E1 +1.279734000E3,5.482588411E1 +1.280065000E3,5.157318203E1 +1.280296000E3,5.173449962E1 +1.280546000E3,5.465953878E1 +1.280843000E3,5.457680704E1 +1.281077000E3,5.562152963E1 +1.281325000E3,5.460406982E1 +1.281570000E3,5.232421403E1 +1.281870000E3,5.207576719E1 +1.282135000E3,4.968186040E1 +1.282378000E3,5.237915347E1 +1.282628000E3,4.745539727E1 +1.282877000E3,5.255989147E1 +1.283195000E3,5.301690658E1 +1.283467000E3,5.283539029E1 +1.283717000E3,5.083105477E1 +1.283978000E3,4.559322742E1 +1.284235000E3,4.934435088E1 +1.284538000E3,5.265118466E1 +1.284812000E3,5.302155906E1 +1.285045000E3,5.294725202E1 +1.285352000E3,5.129236762E1 +1.285646000E3,5.402858483E1 +1.285898000E3,5.434527110E1 +1.286189000E3,5.525625388E1 +1.286515000E3,5.653073998E1 +1.286819000E3,5.704731902E1 +1.287101000E3,5.310035962E1 +1.287387000E3,5.474072190E1 +1.287649000E3,5.496979063E1 +1.287925000E3,5.528941101E1 +1.288193000E3,5.394330028E1 +1.288492000E3,4.829171318E1 +1.288740000E3,5.076324605E1 +1.289004000E3,4.673843249E1 +1.289280000E3,5.345749476E1 +1.289584000E3,4.955238815E1 +1.289923000E3,5.268555513E1 +1.290206000E3,5.092762320E1 +1.290445000E3,5.180504716E1 +1.290779000E3,5.421996562E1 +1.291081000E3,5.408565728E1 +1.291322000E3,5.466627749E1 +1.291622000E3,5.247549140E1 +1.291870000E3,5.438915347E1 +1.292125000E3,5.526358440E1 +1.292428000E3,5.407200655E1 +1.292723000E3,5.160593410E1 +1.293035000E3,5.231731426E1 +1.293342000E3,5.126765219E1 +1.293626000E3,4.802016847E1 +1.293922000E3,5.428603515E1 +1.294199000E3,5.305841291E1 +1.294451000E3,5.676250586E1 +1.294738000E3,5.921971496E1 +1.295005000E3,5.812051865E1 +1.295266000E3,5.671365947E1 +1.295512000E3,5.389157640E1 +1.295809000E3,5.417883641E1 +1.296087000E3,5.169085532E1 +1.296408000E3,5.027989141E1 +1.296704000E3,5.801273246E1 +1.296951000E3,5.777618357E1 +1.297241000E3,5.598217178E1 +1.297547000E3,5.590671112E1 +1.297806000E3,6.302454961E1 +1.298073000E3,5.716944646E1 +1.298330000E3,5.693666329E1 +1.298591000E3,5.374930006E1 +1.298851000E3,5.170089530E1 +1.299100000E3,6.243829367E1 +1.299340000E3,5.522680485E1 +1.299673000E3,5.451288060E1 +1.299933000E3,5.720613947E1 +1.300193000E3,5.131457759E1 +1.300510000E3,5.593393786E1 +1.300810000E3,5.344184529E1 +1.301099000E3,5.432320381E1 +1.301355000E3,5.294046944E1 +1.301602000E3,5.330691828E1 +1.301911000E3,4.899471979E1 +1.302175000E3,5.054546621E1 +1.302420000E3,4.914598102E1 +1.302706000E3,5.757950400E1 +1.303045000E3,5.798603958E1 +1.303343000E3,5.685278830E1 +1.303584000E3,5.272645619E1 +1.303869000E3,5.576083132E1 +1.304169000E3,5.311655900E1 +1.304414000E3,5.297304035E1 +1.304724000E3,6.119658997E1 +1.304998000E3,5.921259630E1 +1.305275000E3,5.974785927E1 +1.305567000E3,5.829108198E1 +1.305799000E3,5.656256791E1 +1.306151000E3,5.263150293E1 +1.306475000E3,5.719715846E1 +1.306754000E3,5.746813017E1 +1.307020000E3,6.063794361E1 +1.307320000E3,5.945639283E1 +1.307570000E3,5.898495898E1 +1.307856000E3,5.345744690E1 +1.308127000E3,5.882374416E1 +1.308390000E3,5.704844280E1 +1.308660000E3,6.230218860E1 +1.308982000E3,5.794977886E1 +1.309252000E3,5.609480230E1 +1.309620000E3,5.439173238E1 +1.309924000E3,5.804315704E1 +1.310253000E3,5.898090143E1 +1.310510000E3,5.933785859E1 +1.310826000E3,5.484966867E1 +1.311077000E3,5.841635068E1 +1.311358000E3,5.536029260E1 +1.311601000E3,5.555523834E1 +1.311895000E3,5.637714479E1 +1.312195000E3,5.253312652E1 +1.312445000E3,5.377927694E1 +1.312696000E3,5.757954833E1 +1.313038000E3,5.500733438E1 +1.313282000E3,5.367385274E1 +1.313558000E3,5.610715122E1 +1.313797000E3,5.528556803E1 +1.314063000E3,5.884958532E1 +1.314412000E3,5.458036035E1 +1.314671000E3,5.765344335E1 +1.314945000E3,5.139756723E1 +1.315223000E3,5.546002517E1 +1.315503000E3,5.608276603E1 +1.315733000E3,5.719791479E1 +1.315986000E3,5.413888898E1 +1.316329000E3,5.789500166E1 +1.316579000E3,5.404086097E1 +1.316819000E3,6.021843554E1 +1.317067000E3,5.929690830E1 +1.317365000E3,6.066063258E1 +1.317666000E3,5.465341745E1 +1.317917000E3,5.115712079E1 +1.318169000E3,4.986479689E1 +1.318470000E3,5.351977371E1 +1.318716000E3,5.614277654E1 +1.318987000E3,5.824140620E1 +1.319280000E3,5.863858703E1 +1.319646000E3,5.908977231E1 +1.319902000E3,5.867594430E1 +1.320142000E3,5.256185028E1 +1.320379000E3,5.916248935E1 +1.320672000E3,5.829134786E1 +1.320910000E3,5.729121950E1 +1.321203000E3,5.817253701E1 +1.321434000E3,5.958327052E1 +1.321726000E3,6.109571062E1 +1.321963000E3,6.309400740E1 +1.322263000E3,6.381431561E1 +1.322586000E3,6.124594205E1 +1.322839000E3,6.120886427E1 +1.323128000E3,5.624496406E1 +1.323377000E3,6.205845751E1 +1.323676000E3,6.248705287E1 +1.323968000E3,6.259357777E1 +1.324217000E3,6.168308921E1 +1.324496000E3,6.128297543E1 +1.324731000E3,5.975404370E1 +1.325024000E3,6.147148959E1 +1.325261000E3,6.101142333E1 +1.325573000E3,5.682124874E1 +1.325854000E3,5.869490284E1 +1.326149000E3,5.646663249E1 +1.326392000E3,5.662110608E1 +1.326643000E3,5.067702480E1 +1.326984000E3,5.759763927E1 +1.327264000E3,5.613584630E1 +1.327489000E3,5.826097161E1 +1.327735000E3,5.843702691E1 +1.328012000E3,5.352317094E1 +1.328253000E3,5.737674501E1 +1.328545000E3,5.736811408E1 +1.328911000E3,5.477233671E1 +1.329158000E3,5.481436604E1 +1.329403000E3,4.974322484E1 +1.329645000E3,5.490077996E1 +1.329890000E3,4.870505425E1 +1.330144000E3,4.955972956E1 +1.330428000E3,5.470042727E1 +1.330734000E3,5.618884112E1 +1.331026000E3,5.238151215E1 +1.331265000E3,5.344428978E1 +1.331515000E3,5.051963956E1 +1.331772000E3,5.068574448E1 +1.332120000E3,5.754233113E1 +1.332409000E3,5.498832674E1 +1.332740000E3,5.245036701E1 +1.333034000E3,5.885934606E1 +1.333286000E3,5.644915657E1 +1.333540000E3,5.532779852E1 +1.333784000E3,5.694511409E1 +1.334028000E3,5.553937724E1 +1.334302000E3,5.308286554E1 +1.334615000E3,5.140154995E1 +1.334876000E3,5.045296543E1 +1.335187000E3,5.631993217E1 +1.335451000E3,5.435091016E1 +1.335722000E3,5.624357652E1 +1.335986000E3,5.791043400E1 +1.336271000E3,5.847603086E1 +1.336545000E3,5.757219882E1 +1.336794000E3,6.070042624E1 +1.337072000E3,5.247827017E1 +1.337340000E3,5.208145921E1 +1.337609000E3,6.026756153E1 +1.337870000E3,6.012826199E1 +1.338134000E3,5.465450317E1 +1.338408000E3,5.768658418E1 +1.338755000E3,5.542991210E1 +1.339019000E3,5.279974580E1 +1.339289000E3,4.966927449E1 +1.339556000E3,4.563713389E1 +1.339804000E3,4.961972315E1 +1.340056000E3,5.287436972E1 +1.340316000E3,5.318950925E1 +1.340586000E3,5.037908496E1 +1.340881000E3,5.345184090E1 +1.341116000E3,5.016784238E1 +1.341407000E3,5.799295151E1 +1.341694000E3,5.875659808E1 +1.342051000E3,5.666657228E1 +1.342345000E3,5.241270038E1 +1.342638000E3,5.754780266E1 +1.342875000E3,5.669750570E1 +1.343177000E3,5.541629106E1 +1.343432000E3,5.556249818E1 +1.343726000E3,5.603182587E1 +1.343969000E3,5.961525777E1 +1.344257000E3,5.915223521E1 +1.344498000E3,5.820677933E1 +1.344777000E3,5.815031326E1 +1.345094000E3,5.733094423E1 +1.345363000E3,5.538469317E1 +1.345622000E3,6.270903439E1 +1.345877000E3,5.551461514E1 +1.346148000E3,5.750063996E1 +1.346395000E3,5.473739655E1 +1.346676000E3,5.131350753E1 +1.346958000E3,5.072615719E1 +1.347258000E3,4.882711207E1 +1.347518000E3,5.273988371E1 +1.347784000E3,6.269937361E1 +1.348040000E3,6.058958657E1 +1.348391000E3,5.894445662E1 +1.348716000E3,5.683213923E1 +1.348984000E3,5.875140523E1 +1.349236000E3,5.263650529E1 +1.349491000E3,4.630287352E1 +1.349847000E3,5.742006494E1 +1.350115000E3,6.486179330E1 +1.350358000E3,5.963871460E1 +1.350612000E3,5.220281373E1 +1.350868000E3,5.825229613E1 +1.351125000E3,5.822075100E1 +1.351374000E3,5.487419692E1 +1.351666000E3,5.461361208E1 +1.351934000E3,5.384511910E1 +1.352185000E3,5.782109838E1 +1.352440000E3,5.156901690E1 +1.352688000E3,5.262530942E1 +1.352990000E3,5.827406705E1 +1.353265000E3,6.164230870E1 +1.353493000E3,5.939319367E1 +1.353769000E3,5.491407227E1 +1.353989000E3,5.363390940E1 +1.354236000E3,5.108497673E1 +1.354516000E3,6.129017752E1 +1.354836000E3,5.594784457E1 +1.355095000E3,5.172378417E1 +1.355422000E3,5.975901259E1 +1.355685000E3,5.720857994E1 +1.355941000E3,5.600667557E1 +1.356197000E3,5.471836828E1 +1.356478000E3,5.319452565E1 +1.356745000E3,5.296912594E1 +1.357013000E3,5.811625635E1 +1.357280000E3,5.430511038E1 +1.357577000E3,5.277700001E1 +1.357824000E3,5.616769978E1 +1.358135000E3,5.406396803E1 +1.358401000E3,4.910300122E1 +1.358643000E3,5.077236009E1 +1.358892000E3,5.530877446E1 +1.359206000E3,5.787482939E1 +1.359485000E3,5.846197249E1 +1.359760000E3,6.103303991E1 +1.360055000E3,6.092009186E1 +1.360296000E3,5.979156049E1 +1.360590000E3,6.049263298E1 +1.360828000E3,5.895545308E1 +1.361114000E3,5.611946421E1 +1.361473000E3,5.480295831E1 +1.361726000E3,5.397626184E1 +1.361972000E3,5.443193027E1 +1.362314000E3,5.572591927E1 +1.362560000E3,5.224616115E1 +1.362808000E3,5.244486023E1 +1.363061000E3,5.179430466E1 +1.363307000E3,5.228822629E1 +1.363555000E3,5.248152719E1 +1.363850000E3,5.310816898E1 +1.364115000E3,5.586433987E1 +1.364397000E3,5.735023043E1 +1.364703000E3,6.002405491E1 +1.364950000E3,5.692273216E1 +1.365192000E3,5.941823705E1 +1.365459000E3,5.316793659E1 +1.365709000E3,5.869878442E1 +1.365953000E3,5.756526572E1 +1.366216000E3,5.687574379E1 +1.366491000E3,5.232478004E1 +1.366744000E3,5.424491879E1 +1.367001000E3,5.235481979E1 +1.367305000E3,5.164783122E1 +1.367588000E3,4.924997634E1 +1.367934000E3,4.924339558E1 +1.368196000E3,5.793398832E1 +1.368473000E3,5.529211657E1 +1.368719000E3,5.120874356E1 +1.368963000E3,5.470742612E1 +1.369285000E3,5.560989240E1 +1.369528000E3,5.197646059E1 +1.369822000E3,5.152328490E1 +1.370111000E3,5.791930576E1 +1.370416000E3,5.368811562E1 +1.370672000E3,5.769124019E1 +1.370919000E3,5.333549653E1 +1.371292000E3,5.847056292E1 +1.371551000E3,5.642894477E1 +1.371803000E3,5.817537921E1 +1.372074000E3,5.885584750E1 +1.372335000E3,5.395474736E1 +1.372602000E3,5.211537518E1 +1.372880000E3,4.924374923E1 +1.373126000E3,4.882665291E1 +1.373379000E3,5.483140316E1 +1.373636000E3,5.380197532E1 +1.373915000E3,5.629967483E1 +1.374251000E3,5.773524892E1 +1.374636000E3,6.271253195E1 +1.374894000E3,5.870587143E1 +1.375125000E3,5.496954916E1 +1.375369000E3,5.621931219E1 +1.375641000E3,5.700323462E1 +1.375912000E3,5.808968856E1 +1.376161000E3,5.697587873E1 +1.376437000E3,5.739415600E1 +1.376687000E3,5.874614285E1 +1.376941000E3,5.855325473E1 +1.377252000E3,5.287324040E1 +1.377495000E3,5.331405656E1 +1.377862000E3,5.163612814E1 +1.378109000E3,6.003152631E1 +1.378372000E3,6.448039849E1 +1.378641000E3,6.226927373E1 +1.378912000E3,6.355904277E1 +1.379208000E3,6.121718755E1 +1.379463000E3,6.371699462E1 +1.379738000E3,5.774542440E1 +1.380076000E3,5.579766677E1 +1.380318000E3,5.520595979E1 +1.380614000E3,5.395000262E1 +1.380855000E3,5.263752401E1 +1.381221000E3,5.267030150E1 +1.381492000E3,5.304251562E1 +1.381793000E3,4.959737221E1 +1.382100000E3,5.549829026E1 +1.382347000E3,5.821584994E1 +1.382642000E3,5.861199323E1 +1.382905000E3,5.256382895E1 +1.383164000E3,5.491877459E1 +1.383443000E3,5.644995893E1 +1.383702000E3,5.411249990E1 +1.383954000E3,5.324738213E1 +1.384305000E3,5.625052210E1 +1.384532000E3,6.070474662E1 +1.384789000E3,5.237062704E1 +1.385074000E3,5.442107865E1 +1.385361000E3,6.017483878E1 +1.385605000E3,6.237555822E1 +1.385869000E3,5.605951782E1 +1.386126000E3,6.511151133E1 +1.386382000E3,5.571785683E1 +1.386696000E3,5.398201636E1 +1.386954000E3,5.323734283E1 +1.387264000E3,5.635686029E1 +1.387623000E3,5.701357512E1 +1.387874000E3,5.632095063E1 +1.388187000E3,5.288354031E1 +1.388477000E3,5.152350906E1 +1.388761000E3,5.130627857E1 +1.388982000E3,4.918436870E1 +1.389239000E3,5.567775637E1 +1.389545000E3,5.465238648E1 +1.389786000E3,5.003079725E1 +1.390027000E3,5.504486936E1 +1.390282000E3,5.947272344E1 +1.390539000E3,6.106137952E1 +1.390892000E3,5.985290475E1 +1.391203000E3,5.500825546E1 +1.391507000E3,5.157102239E1 +1.391806000E3,5.517662265E1 +1.392108000E3,5.349243854E1 +1.392411000E3,5.386652866E1 +1.392707000E3,5.258839734E1 +1.392973000E3,5.376638351E1 +1.393221000E3,5.619475880E1 +1.393480000E3,5.846509931E1 +1.393767000E3,6.504346680E1 +1.394122000E3,5.865804348E1 +1.394392000E3,5.055217311E1 +1.394673000E3,4.837306759E1 +1.394931000E3,5.564689750E1 +1.395193000E3,5.416088817E1 +1.395489000E3,5.481584764E1 +1.395781000E3,5.356143065E1 +1.396078000E3,5.074158934E1 +1.396313000E3,5.177896206E1 +1.396618000E3,5.670327312E1 +1.396914000E3,6.043149132E1 +1.397246000E3,5.875453471E1 +1.397559000E3,5.725772305E1 +1.397842000E3,5.610169288E1 +1.398092000E3,6.098127982E1 +1.398354000E3,5.385330985E1 +1.398611000E3,5.345613584E1 +1.398873000E3,6.183897473E1 +1.399135000E3,5.898294985E1 +1.399399000E3,5.644599073E1 +1.399662000E3,6.288338842E1 +1.399923000E3,5.844786233E1 +1.400178000E3,6.145207907E1 +1.400438000E3,5.797678971E1 +1.400786000E3,5.805590691E1 +1.401082000E3,5.956739883E1 +1.401323000E3,5.537900496E1 +1.401618000E3,5.084213917E1 +1.401871000E3,4.807017206E1 +1.402118000E3,5.545233073E1 +1.402411000E3,5.516036366E1 +1.402644000E3,5.413431379E1 +1.402920000E3,5.388857626E1 +1.403209000E3,5.292068844E1 +1.403479000E3,5.775211983E1 +1.403718000E3,5.117484548E1 +1.404045000E3,5.912447648E1 +1.404295000E3,5.591921957E1 +1.404568000E3,5.565028551E1 +1.404828000E3,5.013398992E1 +1.405122000E3,5.465164253E1 +1.405364000E3,5.305211462E1 +1.405620000E3,5.755171154E1 +1.405929000E3,6.007655449E1 +1.406174000E3,5.899920387E1 +1.406463000E3,5.970773629E1 +1.406720000E3,5.770443308E1 +1.407009000E3,5.521297881E1 +1.407407000E3,5.604277064E1 +1.407677000E3,5.646208540E1 +1.407969000E3,4.906112006E1 +1.408239000E3,5.193830101E1 +1.408558000E3,4.835599484E1 +1.408830000E3,4.864558507E1 +1.409087000E3,5.566138381E1 +1.409349000E3,5.240816417E1 +1.409604000E3,4.366169359E1 +1.409843000E3,4.924613485E1 +1.410167000E3,5.289541091E1 +1.410462000E3,5.429333459E1 +1.410857000E3,5.232803186E1 +1.411115000E3,5.279391543E1 +1.411388000E3,5.698112108E1 +1.411689000E3,4.954635028E1 +1.411940000E3,5.347151392E1 +1.412202000E3,5.431542928E1 +1.412461000E3,5.708654506E1 +1.412712000E3,5.999867781E1 +1.412972000E3,5.836713300E1 +1.413243000E3,5.662529411E1 +1.413547000E3,5.760118844E1 +1.413790000E3,5.272334048E1 +1.414155000E3,5.585703000E1 +1.414407000E3,5.277217169E1 +1.414666000E3,5.575617717E1 +1.414970000E3,5.588142009E1 +1.415263000E3,5.043609445E1 +1.415519000E3,5.366091219E1 +1.415818000E3,6.729065738E1 +1.416082000E3,5.454700058E1 +1.416357000E3,5.542836481E1 +1.416608000E3,6.150002805E1 +1.416870000E3,5.918799699E1 +1.417164000E3,5.739551304E1 +1.417548000E3,5.312046747E1 +1.417864000E3,5.735989692E1 +1.418111000E3,5.463708503E1 +1.418368000E3,5.616594485E1 +1.418622000E3,5.674613857E1 +1.418880000E3,5.393284238E1 +1.419178000E3,5.477989298E1 +1.419414000E3,5.673628135E1 +1.419692000E3,5.246670124E1 +1.419935000E3,5.929492524E1 +1.420173000E3,5.718550468E1 +1.420417000E3,5.597503360E1 +1.420745000E3,5.209811810E1 +1.421016000E3,5.108820023E1 +1.421271000E3,5.704928631E1 +1.421524000E3,5.534619134E1 +1.421787000E3,5.298830069E1 +1.422048000E3,5.357926773E1 +1.422324000E3,5.150193558E1 +1.422590000E3,5.236977243E1 +1.422860000E3,5.598534631E1 +1.423111000E3,5.804712890E1 +1.423360000E3,5.584477369E1 +1.423617000E3,6.166819052E1 +1.423956000E3,6.217862533E1 +1.424239000E3,6.474885215E1 +1.424493000E3,6.561094566E1 +1.424771000E3,6.624921272E1 +1.425013000E3,6.269332683E1 +1.425310000E3,6.427501900E1 +1.425550000E3,6.406421996E1 +1.425806000E3,6.561696377E1 +1.426124000E3,5.757984813E1 +1.426392000E3,6.467113265E1 +1.426661000E3,6.110360998E1 +1.426971000E3,6.257935575E1 +1.427325000E3,6.059948571E1 +1.427600000E3,6.060080967E1 +1.427858000E3,6.129065918E1 +1.428157000E3,6.869907238E1 +1.428403000E3,6.216021300E1 +1.428668000E3,6.028715826E1 +1.428917000E3,5.215970407E1 +1.429175000E3,5.348756082E1 +1.429445000E3,5.866879342E1 +1.429775000E3,5.422412762E1 +1.430077000E3,5.967912654E1 +1.430370000E3,6.053958419E1 +1.430696000E3,5.642153628E1 +1.430959000E3,5.797803369E1 +1.431217000E3,5.265853131E1 +1.431545000E3,6.085541328E1 +1.431825000E3,6.579757863E1 +1.432095000E3,6.783858113E1 +1.432356000E3,6.680245969E1 +1.432609000E3,5.699539434E1 +1.432887000E3,5.495476405E1 +1.433146000E3,5.431336982E1 +1.433405000E3,5.468573805E1 +1.433768000E3,6.415525931E1 +1.434037000E3,5.996195649E1 +1.434305000E3,5.880144898E1 +1.434536000E3,5.062803370E1 +1.434794000E3,4.838886892E1 +1.435059000E3,4.852598648E1 +1.435348000E3,5.424758091E1 +1.435611000E3,6.028120001E1 +1.435845000E3,5.860165153E1 +1.436098000E3,5.820116177E1 +1.436348000E3,5.458976108E1 +1.436603000E3,5.748661459E1 +1.436983000E3,5.071157707E1 +1.437230000E3,5.187454119E1 +1.437505000E3,5.690962542E1 +1.437744000E3,5.898297949E1 +1.438006000E3,6.083548120E1 +1.438278000E3,4.929702369E1 +1.438556000E3,5.094464024E1 +1.438857000E3,5.451803318E1 +1.439157000E3,4.851675588E1 +1.439427000E3,4.781325912E1 +1.439724000E3,4.919544886E1 +1.439968000E3,4.662525194E1 +1.440374000E3,4.187537091E1 +1.440620000E3,5.083424523E1 +1.440895000E3,4.476479772E1 +1.441179000E3,5.236126827E1 +1.441495000E3,4.954212438E1 +1.441772000E3,5.444261950E1 +1.442048000E3,5.023278537E1 +1.442273000E3,4.640707667E1 +1.442557000E3,5.088583460E1 +1.442822000E3,5.041471443E1 +1.443067000E3,4.940152653E1 +1.443315000E3,4.834999124E1 +1.443550000E3,5.084173145E1 +1.443802000E3,4.674944421E1 +1.444118000E3,5.005548854E1 +1.444412000E3,4.880222753E1 +1.444695000E3,4.829349493E1 +1.444948000E3,4.815408858E1 +1.445231000E3,4.968297573E1 +1.445471000E3,5.263069989E1 +1.445763000E3,4.570389774E1 +1.446062000E3,4.674284816E1 +1.446364000E3,5.179136771E1 +1.446637000E3,5.007894257E1 +1.446884000E3,5.001285233E1 +1.447102000E3,5.063641057E1 +1.447373000E3,4.164946286E1 +1.447601000E3,3.981108666E1 +1.447894000E3,4.316358072E1 +1.448132000E3,5.465701871E1 +1.448431000E3,4.615144027E1 +1.448672000E3,4.353154230E1 +1.448965000E3,5.208221965E1 +1.449200000E3,5.530439334E1 +1.449496000E3,4.996075498E1 +1.449729000E3,5.218941020E1 +1.450060000E3,4.888890123E1 +1.450335000E3,5.030971329E1 +1.450629000E3,5.012870067E1 +1.450899000E3,4.847297804E1 +1.451151000E3,4.759762696E1 +1.451454000E3,4.978926902E1 +1.451751000E3,4.930919072E1 +1.452001000E3,5.004861581E1 +1.452285000E3,5.051309266E1 +1.452566000E3,4.810890055E1 +1.452826000E3,4.654354865E1 +1.453069000E3,4.761425190E1 +1.453369000E3,4.589508435E1 +1.453616000E3,4.954922405E1 +1.453886000E3,4.065983258E1 +1.454197000E3,4.220647307E1 +1.454513000E3,4.858310714E1 +1.454789000E3,5.196405012E1 +1.455012000E3,5.467685341E1 +1.455262000E3,5.753332593E1 +1.455513000E3,4.707036048E1 +1.455859000E3,3.942826471E1 +1.456237000E3,5.170062203E1 +1.456495000E3,6.022707597E1 +1.456743000E3,5.524301158E1 +1.456990000E3,5.482834451E1 +1.457257000E3,4.917995293E1 +1.457590000E3,4.739340640E1 +1.457831000E3,4.842051754E1 +1.458073000E3,6.166669432E1 +1.458329000E3,5.427876580E1 +1.458617000E3,4.896037674E1 +1.458889000E3,4.346397471E1 +1.459122000E3,4.481546196E1 +1.459424000E3,5.149740630E1 +1.459726000E3,4.614214660E1 +1.459975000E3,4.567227587E1 +1.460237000E3,5.348774305E1 +1.460488000E3,5.617792493E1 +1.460730000E3,5.122937085E1 +1.460971000E3,5.712815616E1 +1.461266000E3,5.592815325E1 +1.461504000E3,5.208026338E1 +1.461798000E3,5.368936290E1 +1.462033000E3,5.424431898E1 +1.462332000E3,5.229538114E1 +1.462686000E3,5.012562607E1 +1.462943000E3,5.517893002E1 +1.463292000E3,5.544440679E1 +1.463574000E3,5.195225561E1 +1.463851000E3,5.582804772E1 +1.464133000E3,5.163717454E1 +1.464392000E3,5.056978371E1 +1.464653000E3,5.085736348E1 +1.464931000E3,5.111025552E1 +1.465171000E3,5.008163028E1 +1.465468000E3,5.204681239E1 +1.465721000E3,4.873162615E1 +1.466070000E3,5.052420662E1 +1.466365000E3,5.115431116E1 +1.466626000E3,5.008089225E1 +1.466902000E3,5.455907242E1 +1.467123000E3,5.881328519E1 +1.467422000E3,5.654049662E1 +1.467665000E3,6.208900398E1 +1.467911000E3,5.573620080E1 +1.468210000E3,5.034178452E1 +1.468461000E3,4.644884091E1 +1.468716000E3,4.489036287E1 +1.469021000E3,4.555962209E1 +1.469437000E3,4.956164087E1 +1.469733000E3,5.014140659E1 +1.469995000E3,5.025508197E1 +1.470298000E3,4.976482928E1 +1.470552000E3,4.666552600E1 +1.470801000E3,5.164800320E1 +1.471107000E3,4.748865751E1 +1.471358000E3,5.068455306E1 +1.471623000E3,5.380657492E1 +1.471874000E3,4.918332364E1 +1.472155000E3,4.974368594E1 +1.472539000E3,5.519550202E1 +1.472795000E3,5.119649457E1 +1.473056000E3,5.406344748E1 +1.473370000E3,5.554928156E1 +1.473655000E3,5.458007948E1 +1.473895000E3,5.519923804E1 +1.474152000E3,5.580016483E1 +1.474437000E3,5.718813696E1 +1.474685000E3,5.734393611E1 +1.474960000E3,5.879862387E1 +1.475221000E3,5.602300215E1 +1.475474000E3,5.025640835E1 +1.475826000E3,5.543439402E1 +1.476071000E3,5.232164352E1 +1.476323000E3,5.898115961E1 +1.476584000E3,6.066467981E1 +1.476821000E3,5.071984472E1 +1.477123000E3,5.740447565E1 +1.477365000E3,5.959782608E1 +1.477662000E3,5.958620190E1 +1.477906000E3,5.753388342E1 +1.478144000E3,5.506848886E1 +1.478455000E3,5.769430513E1 +1.478723000E3,5.629679592E1 +1.478987000E3,5.649495967E1 +1.479262000E3,5.787253729E1 +1.479512000E3,5.216150167E1 +1.479813000E3,4.948302212E1 +1.480088000E3,5.080056078E1 +1.480342000E3,4.734041467E1 +1.480601000E3,4.440736689E1 +1.480866000E3,5.120725270E1 +1.481166000E3,5.053254929E1 +1.481466000E3,5.274685420E1 +1.481724000E3,5.071521067E1 +1.481973000E3,5.225995741E1 +1.482300000E3,5.133897759E1 +1.482575000E3,5.007250383E1 +1.482845000E3,5.042400131E1 +1.483101000E3,5.258901014E1 +1.483408000E3,5.618504625E1 +1.483668000E3,5.503349900E1 +1.483933000E3,4.974702245E1 +1.484194000E3,5.170781389E1 +1.484440000E3,5.072340799E1 +1.484707000E3,5.947536199E1 +1.485018000E3,5.467515596E1 +1.485306000E3,6.085614245E1 +1.485656000E3,5.990152864E1 +1.485935000E3,5.602550586E1 +1.486168000E3,5.561766537E1 +1.486422000E3,5.350876804E1 +1.486701000E3,5.699979875E1 +1.486960000E3,5.177464585E1 +1.487207000E3,5.249766501E1 +1.487486000E3,5.285366750E1 +1.487751000E3,5.316768095E1 +1.488002000E3,4.876639606E1 +1.488262000E3,5.179834313E1 +1.488516000E3,4.991892364E1 +1.488812000E3,5.156353661E1 +1.489125000E3,5.341434219E1 +1.489400000E3,5.426211096E1 +1.489675000E3,4.699672779E1 +1.489958000E3,5.361914521E1 +1.490219000E3,5.605827819E1 +1.490490000E3,5.089547448E1 +1.490772000E3,5.163564337E1 +1.491061000E3,5.841576784E1 +1.491309000E3,5.524417730E1 +1.491589000E3,5.450558122E1 +1.491873000E3,5.581032480E1 +1.492194000E3,5.802352567E1 +1.492448000E3,4.962366630E1 +1.492810000E3,5.873656508E1 +1.493058000E3,5.690804947E1 +1.493359000E3,5.262261274E1 +1.493674000E3,5.584655342E1 +1.493919000E3,5.542283425E1 +1.494163000E3,5.373884310E1 +1.494412000E3,5.084083433E1 +1.494678000E3,4.964027690E1 +1.494956000E3,5.125570040E1 +1.495204000E3,5.194895191E1 +1.495526000E3,4.961412488E1 +1.495784000E3,4.972405818E1 +1.496036000E3,4.777083448E1 +1.496283000E3,5.231556692E1 +1.496593000E3,5.894066851E1 +1.496842000E3,6.007182772E1 +1.497086000E3,6.003234807E1 +1.497358000E3,5.170627362E1 +1.497682000E3,5.564688341E1 +1.497937000E3,5.459086103E1 +1.498234000E3,5.654462748E1 +1.498530000E3,5.643601391E1 +1.498887000E3,5.593732695E1 +1.499182000E3,5.279859883E1 +1.499469000E3,5.063056157E1 +1.499723000E3,4.846330641E1 +1.499972000E3,5.696559719E1 +1.500236000E3,5.806291630E1 +1.500555000E3,5.485435177E1 +1.500851000E3,5.386376671E1 +1.501120000E3,5.529102258E1 +1.501400000E3,5.058415032E1 +1.501675000E3,5.420960743E1 +1.501928000E3,4.962388553E1 +1.502263000E3,5.167692375E1 +1.502567000E3,5.072695334E1 +1.502878000E3,5.319678523E1 +1.503119000E3,5.961199300E1 +1.503369000E3,5.299728366E1 +1.503631000E3,5.369404965E1 +1.503941000E3,5.426817134E1 +1.504209000E3,5.369336762E1 +1.504462000E3,5.246626497E1 +1.504724000E3,5.358557871E1 +1.505015000E3,4.957781391E1 +1.505279000E3,5.117668163E1 +1.505699000E3,5.216401891E1 +1.505963000E3,5.011348657E1 +1.506261000E3,5.259055540E1 +1.506507000E3,4.579432510E1 +1.506795000E3,4.877099475E1 +1.507032000E3,4.679595596E1 +1.507314000E3,5.136222565E1 +1.507549000E3,5.267101191E1 +1.507792000E3,5.244999525E1 +1.508074000E3,5.180561005E1 +1.508391000E3,5.030990700E1 +1.508607000E3,5.167226321E1 +1.508859000E3,5.218207738E1 +1.509151000E3,5.317725961E1 +1.509397000E3,5.318899610E1 +1.509689000E3,4.978257152E1 +1.509934000E3,5.032443800E1 +1.510228000E3,4.777293014E1 +1.510466000E3,4.646316587E1 +1.510767000E3,5.646850943E1 +1.511001000E3,5.638889819E1 +1.511293000E3,5.773758842E1 +1.511610000E3,5.580372922E1 +1.511900000E3,5.517502050E1 +1.512151000E3,5.684013484E1 +1.512393000E3,5.407249321E1 +1.512652000E3,5.725430710E1 +1.512902000E3,5.755876004E1 +1.513148000E3,5.492786930E1 +1.513404000E3,5.665177401E1 +1.513705000E3,5.675683028E1 +1.513957000E3,5.845897420E1 +1.514258000E3,5.334537973E1 +1.514488000E3,5.035361876E1 +1.514812000E3,4.886526824E1 +1.515059000E3,5.555156669E1 +1.515357000E3,5.401240780E1 +1.515600000E3,5.191330713E1 +1.515873000E3,5.158089375E1 +1.516102000E3,5.397456219E1 +1.516410000E3,5.205317520E1 +1.516679000E3,5.689433829E1 +1.516971000E3,5.397466306E1 +1.517230000E3,5.553699481E1 +1.517504000E3,5.550832571E1 +1.517763000E3,5.490604036E1 +1.518130000E3,5.129555301E1 +1.518403000E3,5.478479772E1 +1.518670000E3,5.687403653E1 +1.518921000E3,5.464295853E1 +1.519177000E3,5.713561839E1 +1.519461000E3,5.306473622E1 +1.519745000E3,5.320579073E1 +1.520002000E3,5.309385307E1 +1.520258000E3,5.058967996E1 +1.520552000E3,5.470724085E1 +1.520793000E3,5.303104936E1 +1.521156000E3,5.432496893E1 +1.521453000E3,5.594215604E1 +1.521721000E3,5.308545736E1 +1.521969000E3,5.327888421E1 +1.522220000E3,5.030915333E1 +1.522490000E3,5.230098434E1 +1.522776000E3,4.743827766E1 +1.523026000E3,5.464211349E1 +1.523327000E3,5.322537523E1 +1.523581000E3,5.154569729E1 +1.523826000E3,5.335950152E1 +1.524133000E3,5.482016506E1 +1.524417000E3,5.825411535E1 +1.524853000E3,5.879893849E1 +1.525179000E3,5.728744863E1 +1.525433000E3,5.737571640E1 +1.525696000E3,5.681107869E1 +1.525950000E3,5.695921586E1 +1.526210000E3,5.455429607E1 +1.526487000E3,5.808007225E1 +1.526729000E3,5.500512440E1 +1.527042000E3,5.476260812E1 +1.527339000E3,5.849962899E1 +1.527579000E3,5.719021529E1 +1.527910000E3,5.422226824E1 +1.528160000E3,5.266147572E1 +1.528411000E3,5.030747323E1 +1.528675000E3,5.057502492E1 +1.528920000E3,5.365292462E1 +1.529175000E3,5.444435151E1 +1.529423000E3,5.586906556E1 +1.529732000E3,5.808239082E1 +1.530030000E3,5.492304678E1 +1.530283000E3,5.727734117E1 +1.530542000E3,5.518682809E1 +1.530805000E3,5.838179726E1 +1.531133000E3,5.619103982E1 +1.531448000E3,5.705771680E1 +1.531738000E3,5.605732573E1 +1.531987000E3,5.497746164E1 +1.532293000E3,5.570350387E1 +1.532602000E3,5.687942595E1 +1.532873000E3,5.590365459E1 +1.533132000E3,5.379832162E1 +1.533387000E3,5.951317374E1 +1.533654000E3,5.728034638E1 +1.533915000E3,5.755019099E1 +1.534163000E3,5.625336618E1 +1.534512000E3,5.560455999E1 +1.534783000E3,5.186395468E1 +1.535086000E3,6.018952062E1 +1.535379000E3,5.360739703E1 +1.535619000E3,5.637744941E1 +1.535916000E3,5.710534601E1 +1.536153000E3,5.751101039E1 +1.536449000E3,5.888699469E1 +1.536688000E3,5.900809640E1 +1.536983000E3,5.539354346E1 +1.537218000E3,5.212761926E1 +1.537514000E3,6.113968309E1 +1.537773000E3,5.789795306E1 +1.538038000E3,6.065119472E1 +1.538356000E3,5.715251587E1 +1.538607000E3,5.728294892E1 +1.538911000E3,5.939537878E1 +1.539175000E3,5.879010449E1 +1.539417000E3,6.007594674E1 +1.539661000E3,5.983742076E1 +1.539908000E3,6.299497704E1 +1.540182000E3,6.042347696E1 +1.540457000E3,5.844914903E1 +1.540758000E3,5.775362746E1 +1.541037000E3,5.216165265E1 +1.541334000E3,5.255584969E1 +1.541593000E3,5.278098471E1 +1.541846000E3,5.581770981E1 +1.542092000E3,5.736301867E1 +1.542389000E3,5.733951694E1 +1.542623000E3,5.674705381E1 +1.542880000E3,5.506043774E1 +1.543125000E3,5.404728252E1 +1.543453000E3,5.428884791E1 +1.543732000E3,5.547580162E1 +1.544085000E3,5.471747417E1 +1.544346000E3,5.496243571E1 +1.544613000E3,5.288395526E1 +1.544860000E3,5.036194227E1 +1.545111000E3,5.124283852E1 +1.545413000E3,5.731432515E1 +1.545687000E3,5.663908688E1 +1.545955000E3,5.741659811E1 +1.546253000E3,5.084604561E1 +1.546502000E3,5.163330463E1 +1.546772000E3,4.777378739E1 +1.547025000E3,5.200725426E1 +1.547353000E3,5.049690945E1 +1.547625000E3,5.284766124E1 +1.547924000E3,5.396462244E1 +1.548148000E3,5.375524192E1 +1.548403000E3,5.670544075E1 +1.548716000E3,5.332369727E1 +1.548963000E3,5.544219871E1 +1.549238000E3,5.323430806E1 +1.549471000E3,5.180674965E1 +1.549727000E3,5.329467652E1 +1.550023000E3,5.080742485E1 +1.550310000E3,5.026906170E1 +1.550639000E3,5.582908231E1 +1.550905000E3,5.331150300E1 +1.551172000E3,5.186910180E1 +1.551471000E3,5.624561668E1 +1.551739000E3,5.555744845E1 +1.552012000E3,5.944044312E1 +1.552264000E3,6.002272858E1 +1.552531000E3,5.816546804E1 +1.552850000E3,5.936846960E1 +1.553097000E3,5.514794057E1 +1.553401000E3,5.160130424E1 +1.553757000E3,5.107783990E1 +1.554023000E3,5.871375450E1 +1.554276000E3,5.617325190E1 +1.554544000E3,5.736189521E1 +1.554800000E3,5.317828333E1 +1.555051000E3,5.715279916E1 +1.555321000E3,5.726931658E1 +1.555563000E3,5.567771069E1 +1.555823000E3,5.156101336E1 +1.556126000E3,5.688446569E1 +1.556378000E3,6.074118939E1 +1.556642000E3,5.974958265E1 +1.556918000E3,5.702757711E1 +1.557208000E3,5.874442787E1 +1.557457000E3,5.795683904E1 +1.557722000E3,6.039916355E1 +1.558025000E3,5.662755924E1 +1.558320000E3,5.332514547E1 +1.558595000E3,6.059700286E1 +1.558850000E3,5.775207016E1 +1.559098000E3,6.106988435E1 +1.559349000E3,6.039494527E1 +1.559644000E3,5.672405799E1 +1.559889000E3,5.814375710E1 +1.560135000E3,6.159401746E1 +1.560480000E3,5.397583636E1 +1.560770000E3,5.291692280E1 +1.561026000E3,5.439035965E1 +1.561320000E3,5.553984968E1 +1.561619000E3,5.808332247E1 +1.561927000E3,5.744100555E1 +1.562191000E3,5.636250023E1 +1.562451000E3,6.055150308E1 +1.562703000E3,5.624161562E1 +1.562979000E3,5.401048000E1 +1.563233000E3,5.588901558E1 +1.563595000E3,6.020828902E1 +1.563855000E3,6.586197618E1 +1.564143000E3,5.744692826E1 +1.564421000E3,5.175273280E1 +1.564681000E3,5.584828423E1 +1.564939000E3,5.622472521E1 +1.565190000E3,5.419184381E1 +1.565447000E3,4.818775863E1 +1.565701000E3,5.443344746E1 +1.565956000E3,4.960344337E1 +1.566224000E3,6.289868185E1 +1.566469000E3,6.499026885E1 +1.566794000E3,6.277031329E1 +1.567086000E3,5.336636778E1 +1.567405000E3,5.867761918E1 +1.567644000E3,5.135518394E1 +1.567909000E3,5.665720126E1 +1.568204000E3,5.915910399E1 +1.568455000E3,5.687790668E1 +1.568730000E3,5.815647569E1 +1.568976000E3,5.595761669E1 +1.569238000E3,5.367288589E1 +1.569491000E3,4.954593185E1 +1.569752000E3,5.199120702E1 +1.570099000E3,5.857172858E1 +1.570354000E3,5.533510860E1 +1.570614000E3,5.615291914E1 +1.570871000E3,4.816531300E1 +1.571136000E3,4.597509459E1 +1.571387000E3,5.454256971E1 +1.571722000E3,5.262076426E1 +1.572010000E3,5.108681545E1 +1.572285000E3,5.269091247E1 +1.572547000E3,4.898785412E1 +1.572807000E3,4.867008841E1 +1.573066000E3,5.306545801E1 +1.573313000E3,5.092331160E1 +1.573694000E3,5.549117670E1 +1.574009000E3,5.304099104E1 +1.574279000E3,5.377011563E1 +1.574520000E3,5.244694975E1 +1.574770000E3,5.542353961E1 +1.575031000E3,5.327330735E1 +1.575319000E3,5.123065406E1 +1.575617000E3,5.429517947E1 +1.575867000E3,5.443507599E1 +1.576132000E3,5.273613947E1 +1.576382000E3,5.717979407E1 +1.576705000E3,5.184816589E1 +1.576955000E3,4.851208329E1 +1.577250000E3,4.976440939E1 +1.577493000E3,5.236737582E1 +1.577737000E3,5.414723297E1 +1.577998000E3,5.490706774E1 +1.578342000E3,5.591011545E1 +1.578650000E3,5.689754115E1 +1.578906000E3,5.680987850E1 +1.579148000E3,5.379415708E1 +1.579394000E3,5.844713665E1 +1.579644000E3,4.927798375E1 +1.580006000E3,5.263100090E1 +1.580294000E3,5.410513055E1 +1.580548000E3,5.541047194E1 +1.580801000E3,5.058665778E1 +1.581070000E3,5.191468462E1 +1.581349000E3,4.623838572E1 +1.581601000E3,4.883886927E1 +1.581851000E3,4.951159763E1 +1.582152000E3,5.372806241E1 +1.582461000E3,4.077427406E1 +1.582742000E3,4.089897224E1 +1.582967000E3,4.661834708E1 +1.583330000E3,4.498181641E1 +1.583574000E3,4.413204165E1 +1.583835000E3,4.830731952E1 +1.584102000E3,5.133890730E1 +1.584385000E3,5.327819620E1 +1.584689000E3,5.148788947E1 +1.584935000E3,5.259351261E1 +1.585217000E3,5.210912674E1 +1.585449000E3,5.375523399E1 +1.585710000E3,5.030792675E1 +1.585957000E3,5.116594607E1 +1.586271000E3,5.729332409E1 +1.586601000E3,5.372439258E1 +1.586868000E3,5.283683191E1 +1.587111000E3,5.261490358E1 +1.587371000E3,5.394382083E1 +1.587617000E3,5.362104804E1 +1.587861000E3,5.192909002E1 +1.588111000E3,5.534291684E1 +1.588356000E3,5.529045875E1 +1.588616000E3,5.723903943E1 +1.588878000E3,5.769467674E1 +1.589116000E3,5.686991669E1 +1.589367000E3,5.472851050E1 +1.589709000E3,5.509501284E1 +1.589971000E3,6.218794924E1 +1.590276000E3,5.544714813E1 +1.590522000E3,5.587492513E1 +1.590770000E3,6.310127100E1 +1.591031000E3,6.016601681E1 +1.591331000E3,5.868635044E1 +1.591588000E3,5.739907262E1 +1.591847000E3,5.500154159E1 +1.592105000E3,5.382353142E1 +1.592358000E3,5.235465349E1 +1.592660000E3,5.432444683E1 +1.592979000E3,5.583837344E1 +1.593280000E3,5.890777444E1 +1.593531000E3,6.247008348E1 +1.593777000E3,5.524440051E1 +1.594082000E3,6.039849382E1 +1.594376000E3,5.779880973E1 +1.594616000E3,6.006977904E1 +1.594916000E3,6.157791897E1 +1.595158000E3,5.727348505E1 +1.595456000E3,6.219777130E1 +1.595702000E3,6.333776727E1 +1.596011000E3,6.315243887E1 +1.596287000E3,5.622487117E1 +1.596582000E3,4.999384026E1 +1.596838000E3,6.052096287E1 +1.597136000E3,5.730636753E1 +1.597383000E3,5.672770046E1 +1.597632000E3,5.282894107E1 +1.597943000E3,5.609826115E1 +1.598240000E3,5.950608691E1 +1.598483000E3,5.262580449E1 +1.598777000E3,5.638403375E1 +1.599039000E3,5.695994656E1 +1.599354000E3,5.595638462E1 +1.599677000E3,5.456948793E1 +1.599955000E3,5.641745933E1 +1.600254000E3,5.373490010E1 +1.600541000E3,5.613295480E1 +1.600824000E3,5.295628543E1 +1.601071000E3,5.036371368E1 +1.601313000E3,5.734560753E1 +1.601585000E3,5.869799540E1 +1.601832000E3,5.689867309E1 +1.602079000E3,5.521901034E1 +1.602376000E3,5.958743796E1 +1.602630000E3,5.697555749E1 +1.602881000E3,6.067520996E1 +1.603136000E3,6.296730837E1 +1.603381000E3,6.302345663E1 +1.603674000E3,5.614231839E1 +1.603920000E3,5.471880748E1 +1.604179000E3,6.025548138E1 +1.604432000E3,5.848975602E1 +1.604677000E3,6.051353275E1 +1.604988000E3,6.061163824E1 +1.605287000E3,5.127173554E1 +1.605535000E3,5.271948405E1 +1.605890000E3,5.457177629E1 +1.606143000E3,5.047420148E1 +1.606392000E3,5.197178768E1 +1.606684000E3,5.635777628E1 +1.606927000E3,5.691931577E1 +1.607165000E3,5.135114371E1 +1.607440000E3,5.173034620E1 +1.607734000E3,5.786109434E1 +1.607974000E3,5.620528212E1 +1.608236000E3,5.432552885E1 +1.608507000E3,5.036034087E1 +1.608763000E3,4.872303481E1 +1.609123000E3,5.516764205E1 +1.609377000E3,5.867465981E1 +1.609624000E3,5.634077767E1 +1.609869000E3,5.153316916E1 +1.610150000E3,5.212022412E1 +1.610428000E3,5.727395868E1 +1.610681000E3,5.443759521E1 +1.610944000E3,5.599199613E1 +1.611242000E3,5.709063131E1 +1.611495000E3,5.747461955E1 +1.611762000E3,5.445378087E1 +1.612040000E3,5.178206799E1 +1.612294000E3,5.347146008E1 +1.612548000E3,5.695533984E1 +1.612791000E3,5.852885666E1 +1.613050000E3,5.349710519E1 +1.613354000E3,5.482274130E1 +1.613598000E3,5.580201302E1 +1.613898000E3,5.533013655E1 +1.614151000E3,5.307302798E1 +1.614404000E3,5.034267096E1 +1.614651000E3,5.096368681E1 +1.614959000E3,5.358615730E1 +1.615202000E3,5.402822959E1 +1.615565000E3,5.173226008E1 +1.615815000E3,5.317238447E1 +1.616120000E3,5.490271856E1 +1.616406000E3,5.760350961E1 +1.616712000E3,5.516631401E1 +1.616950000E3,5.344247717E1 +1.617197000E3,5.105574764E1 +1.617480000E3,5.297874749E1 +1.617726000E3,5.181083735E1 +1.617978000E3,5.504462581E1 +1.618236000E3,5.652623382E1 +1.618484000E3,5.850281135E1 +1.618804000E3,5.207268405E1 +1.619061000E3,4.595989093E1 +1.619309000E3,5.832875112E1 +1.619574000E3,5.691639889E1 +1.619831000E3,5.277897330E1 +1.620092000E3,5.634285556E1 +1.620390000E3,5.782897026E1 +1.620660000E3,6.167326244E1 +1.620905000E3,5.736569246E1 +1.621145000E3,6.422841213E1 +1.621400000E3,6.037316593E1 +1.621649000E3,5.869946609E1 +1.622005000E3,6.007663283E1 +1.622308000E3,5.750286676E1 +1.622551000E3,5.315958033E1 +1.622849000E3,5.996646537E1 +1.623085000E3,6.310656156E1 +1.623382000E3,6.410911411E1 +1.623620000E3,6.559322950E1 +1.623914000E3,6.191537215E1 +1.624148000E3,6.509401862E1 +1.624441000E3,6.149444047E1 +1.624676000E3,5.887830140E1 +1.624914000E3,5.333395699E1 +1.625242000E3,5.080509527E1 +1.625531000E3,5.208999136E1 +1.625827000E3,4.936268455E1 +1.626072000E3,4.620940228E1 +1.626384000E3,4.812346411E1 +1.626678000E3,5.508818133E1 +1.626931000E3,5.929414420E1 +1.627193000E3,5.798382987E1 +1.627446000E3,5.695027340E1 +1.627690000E3,6.200547811E1 +1.627940000E3,5.895921781E1 +1.628278000E3,5.832121877E1 +1.628595000E3,5.727506493E1 +1.628914000E3,5.676841787E1 +1.629164000E3,5.904549933E1 +1.629453000E3,6.079247221E1 +1.629705000E3,5.978532207E1 +1.629973000E3,6.204876077E1 +1.630223000E3,6.278691878E1 +1.630527000E3,5.775584326E1 +1.630780000E3,5.715423799E1 +1.631076000E3,5.993810238E1 +1.631416000E3,5.945816984E1 +1.631690000E3,5.911038375E1 +1.631989000E3,6.401318161E1 +1.632251000E3,6.288325429E1 +1.632577000E3,6.142114348E1 +1.632857000E3,6.027735545E1 +1.633125000E3,6.058800698E1 +1.633410000E3,6.197295377E1 +1.633713000E3,5.649410931E1 +1.633983000E3,5.349526422E1 +1.634267000E3,5.160473432E1 +1.634550000E3,5.471426263E1 +1.634881000E3,5.381566790E1 +1.635145000E3,5.592472168E1 +1.635394000E3,5.502963456E1 +1.635636000E3,5.458091777E1 +1.635914000E3,5.361113418E1 +1.636211000E3,5.972112366E1 +1.636510000E3,6.134956919E1 +1.636770000E3,6.291498703E1 +1.637018000E3,6.051799303E1 +1.637272000E3,5.800319143E1 +1.637535000E3,6.099184952E1 +1.637791000E3,6.192072936E1 +1.638191000E3,5.592689657E1 +1.638462000E3,5.015193522E1 +1.638759000E3,5.662906295E1 +1.638997000E3,6.189212385E1 +1.639312000E3,5.656112303E1 +1.639618000E3,5.827187766E1 +1.639922000E3,5.894515280E1 +1.640188000E3,5.379936676E1 +1.640446000E3,5.498271927E1 +1.640705000E3,5.883708769E1 +1.641003000E3,5.515786146E1 +1.641329000E3,5.323855564E1 +1.641593000E3,5.000482182E1 +1.641876000E3,5.182077324E1 +1.642101000E3,5.319082569E1 +1.642344000E3,6.611850928E1 +1.642626000E3,5.190424983E1 +1.642867000E3,5.081734830E1 +1.643118000E3,5.711045841E1 +1.643458000E3,5.520016906E1 +1.643723000E3,5.247062228E1 +1.643997000E3,5.309157546E1 +1.644256000E3,5.339769460E1 +1.644621000E3,5.982216134E1 +1.644883000E3,5.915424673E1 +1.645133000E3,5.849263499E1 +1.645426000E3,5.826666974E1 +1.645723000E3,5.673329902E1 +1.645972000E3,5.580417722E1 +1.646244000E3,5.457004449E1 +1.646473000E3,5.835958867E1 +1.646716000E3,5.599398637E1 +1.646958000E3,5.928075116E1 +1.647232000E3,5.394053714E1 +1.647507000E3,5.853879118E1 +1.647858000E3,5.674494648E1 +1.648113000E3,5.640074652E1 +1.648414000E3,5.694867796E1 +1.648656000E3,5.573466688E1 +1.648962000E3,5.556104957E1 +1.649254000E3,5.770712773E1 +1.649548000E3,5.765349227E1 +1.649790000E3,5.583875333E1 +1.650054000E3,6.321152276E1 +1.650306000E3,5.966047080E1 +1.650600000E3,5.502015578E1 +1.650872000E3,5.066616477E1 +1.651172000E3,5.442335496E1 +1.651440000E3,5.956947456E1 +1.651736000E3,5.798320450E1 +1.651979000E3,5.739040713E1 +1.652228000E3,5.803662120E1 +1.652491000E3,6.146613872E1 +1.652750000E3,5.929116619E1 +1.653021000E3,5.936282359E1 +1.653288000E3,5.853226920E1 +1.653570000E3,5.954415072E1 +1.653872000E3,5.749576278E1 +1.654250000E3,5.567111200E1 +1.654518000E3,6.059415807E1 +1.654812000E3,5.855300274E1 +1.655081000E3,5.797601107E1 +1.655350000E3,6.029475669E1 +1.655647000E3,5.264118678E1 +1.655893000E3,5.715075800E1 +1.656153000E3,5.787679223E1 +1.656407000E3,6.038334743E1 +1.656655000E3,6.038245752E1 +1.656912000E3,5.475945603E1 +1.657171000E3,5.661674174E1 +1.657473000E3,5.618877186E1 +1.657717000E3,5.712918740E1 +1.657972000E3,5.834783502E1 +1.658283000E3,6.198115012E1 +1.658526000E3,5.639977894E1 +1.658788000E3,5.416850689E1 +1.659089000E3,5.679686188E1 +1.659335000E3,5.697270686E1 +1.659619000E3,5.371836804E1 +1.659873000E3,6.082252986E1 +1.660120000E3,6.285201132E1 +1.660416000E3,6.088574857E1 +1.660728000E3,6.109109391E1 +1.661004000E3,5.861240224E1 +1.661283000E3,6.123850168E1 +1.661519000E3,5.849447684E1 +1.661821000E3,5.472352136E1 +1.662065000E3,5.502625911E1 +1.662312000E3,5.606436387E1 +1.662565000E3,5.546236927E1 +1.662845000E3,6.075823181E1 +1.663075000E3,5.951357638E1 +1.663350000E3,5.956681026E1 +1.663575000E3,5.780116333E1 +1.663928000E3,6.184122024E1 +1.664178000E3,5.626291699E1 +1.664419000E3,5.635545931E1 +1.664671000E3,5.487242490E1 +1.664936000E3,5.392872477E1 +1.665237000E3,5.658170902E1 +1.665476000E3,5.449322435E1 +1.665752000E3,5.111063749E1 +1.665997000E3,5.288359358E1 +1.666249000E3,5.825102048E1 +1.666508000E3,6.087585373E1 +1.666750000E3,5.822210598E1 +1.667110000E3,6.320270923E1 +1.667355000E3,5.563170163E1 +1.667628000E3,5.240635194E1 +1.667875000E3,5.485055122E1 +1.668144000E3,5.590209292E1 +1.668402000E3,5.750031923E1 +1.668648000E3,5.301598344E1 +1.668896000E3,5.208077776E1 +1.669157000E3,5.024112467E1 +1.669414000E3,5.530220423E1 +1.669710000E3,5.585178295E1 +1.669955000E3,5.443268015E1 +1.670292000E3,5.292974908E1 +1.670566000E3,5.501741168E1 +1.670818000E3,5.190433464E1 +1.671077000E3,5.602388651E1 +1.671384000E3,5.384205522E1 +1.671688000E3,5.355394771E1 +1.671956000E3,4.896600257E1 +1.672212000E3,4.457728928E1 +1.672483000E3,5.407780485E1 +1.672726000E3,5.808535163E1 +1.672991000E3,5.497589856E1 +1.673269000E3,5.816061182E1 +1.673625000E3,5.457220472E1 +1.673896000E3,5.852786772E1 +1.674165000E3,5.615855966E1 +1.674439000E3,5.901141794E1 +1.674702000E3,5.821771493E1 +1.675040000E3,5.533746886E1 +1.675330000E3,5.469332456E1 +1.675631000E3,5.895976057E1 +1.675867000E3,5.565047570E1 +1.676161000E3,5.342216333E1 +1.676431000E3,5.339304237E1 +1.676716000E3,5.196130631E1 +1.677075000E3,5.500129023E1 +1.677346000E3,5.649474234E1 +1.677614000E3,5.620691351E1 +1.677867000E3,5.756400488E1 +1.678112000E3,5.571225073E1 +1.678362000E3,6.171466353E1 +1.678655000E3,5.523245256E1 +1.678909000E3,5.780473196E1 +1.679167000E3,5.918101801E1 +1.679536000E3,5.449831587E1 +1.679788000E3,5.278747036E1 +1.680072000E3,5.502423006E1 +1.680392000E3,5.603218813E1 +1.680667000E3,5.681691969E1 +1.680917000E3,5.574952817E1 +1.681227000E3,5.747793831E1 +1.681510000E3,5.831554727E1 +1.681811000E3,5.823344802E1 +1.682073000E3,5.677197169E1 +1.682402000E3,5.423243511E1 +1.682746000E3,5.568639423E1 +1.683007000E3,5.601571559E1 +1.683297000E3,5.788588795E1 +1.683563000E3,5.178162942E1 +1.683805000E3,5.244727762E1 +1.684102000E3,5.504021082E1 +1.684342000E3,5.312145782E1 +1.684637000E3,5.266466104E1 +1.684875000E3,5.430143327E1 +1.685171000E3,5.731848010E1 +1.685409000E3,5.314967575E1 +1.685703000E3,5.210480680E1 +1.685940000E3,5.447962472E1 +1.686242000E3,5.671930258E1 +1.686480000E3,5.298653153E1 +1.686837000E3,5.390672385E1 +1.687083000E3,5.256535993E1 +1.687387000E3,5.295433262E1 +1.687686000E3,4.693434793E1 +1.687930000E3,5.264001548E1 +1.688191000E3,4.696703102E1 +1.688514000E3,5.290693761E1 +1.688768000E3,5.572289252E1 +1.689025000E3,5.629476293E1 +1.689331000E3,5.221395629E1 +1.689585000E3,5.553268928E1 +1.689905000E3,5.392885939E1 +1.690136000E3,5.613018872E1 +1.690432000E3,5.323144022E1 +1.690690000E3,5.426457319E1 +1.690988000E3,5.869511223E1 +1.691244000E3,5.724931575E1 +1.691548000E3,5.702890727E1 +1.691819000E3,5.957894946E1 +1.692068000E3,5.833323285E1 +1.692367000E3,5.920896731E1 +1.692598000E3,5.809066040E1 +1.692847000E3,5.683194919E1 +1.693218000E3,5.880411413E1 +1.693536000E3,5.430005356E1 +1.693836000E3,5.347827494E1 +1.694082000E3,5.139526617E1 +1.694323000E3,6.486669482E1 +1.694607000E3,5.827670564E1 +1.694879000E3,5.749070135E1 +1.695112000E3,5.439297467E1 +1.695418000E3,5.591879208E1 +1.695720000E3,5.984156108E1 +1.695978000E3,5.763450389E1 +1.696238000E3,5.535113951E1 +1.696577000E3,5.468640858E1 +1.696840000E3,5.145216534E1 +1.697142000E3,5.633820526E1 +1.697434000E3,5.961813260E1 +1.697672000E3,5.761348305E1 +1.697970000E3,5.587832748E1 +1.698213000E3,5.615239979E1 +1.698514000E3,6.142159571E1 +1.698744000E3,5.868747140E1 +1.699038000E3,5.639074769E1 +1.699277000E3,5.843791784E1 +1.699602000E3,5.580904726E1 +1.699849000E3,5.188032815E1 +1.700148000E3,6.050592844E1 +1.700415000E3,5.851925341E1 +1.700742000E3,5.754370303E1 +1.700996000E3,5.792652906E1 +1.701265000E3,5.809754284E1 +1.701543000E3,5.435013872E1 +1.701827000E3,5.364293620E1 +1.702095000E3,5.742174876E1 +1.702342000E3,5.921232761E1 +1.702597000E3,5.246613397E1 +1.702852000E3,5.865178399E1 +1.703188000E3,6.209648540E1 +1.703456000E3,5.783126524E1 +1.703723000E3,6.129722089E1 +1.704021000E3,6.159059582E1 +1.704258000E3,6.290365934E1 +1.704500000E3,5.899658178E1 +1.704744000E3,5.570772177E1 +1.705020000E3,6.042975914E1 +1.705281000E3,6.063911519E1 +1.705578000E3,5.667741437E1 +1.705818000E3,5.616948640E1 +1.706065000E3,5.809228765E1 +1.706440000E3,6.194892333E1 +1.706707000E3,5.510896653E1 +1.706968000E3,5.648771637E1 +1.707226000E3,5.451026369E1 +1.707530000E3,5.655237570E1 +1.707813000E3,6.342687376E1 +1.708096000E3,5.687609223E1 +1.708345000E3,5.784030597E1 +1.708587000E3,5.696931166E1 +1.708832000E3,5.826055047E1 +1.709133000E3,6.171963981E1 +1.709444000E3,6.289993620E1 +1.709785000E3,6.196750111E1 +1.710095000E3,6.021872673E1 +1.710401000E3,5.493999514E1 +1.710645000E3,5.748920917E1 +1.710951000E3,5.990748875E1 +1.711204000E3,5.995493625E1 +1.711504000E3,5.608393688E1 +1.711807000E3,6.225697969E1 +1.712052000E3,6.005399346E1 +1.712297000E3,6.276583246E1 +1.712594000E3,6.409669700E1 +1.712952000E3,5.846223798E1 +1.713249000E3,6.222377893E1 +1.713511000E3,6.179119431E1 +1.713770000E3,6.687160955E1 +1.714020000E3,6.224215114E1 +1.714281000E3,6.460780580E1 +1.714608000E3,6.323149402E1 +1.714900000E3,5.890183616E1 +1.715139000E3,6.173404899E1 +1.715438000E3,6.193562982E1 +1.715674000E3,6.231645929E1 +1.715912000E3,5.798536661E1 +1.716293000E3,5.569607438E1 +1.716537000E3,6.131866955E1 +1.716790000E3,5.896584959E1 +1.717096000E3,5.693976131E1 +1.717346000E3,5.531403594E1 +1.717631000E3,5.794989861E1 +1.717933000E3,5.594899441E1 +1.718204000E3,5.601359132E1 +1.718501000E3,5.861037671E1 +1.718741000E3,6.432265266E1 +1.719043000E3,6.182586376E1 +1.719355000E3,6.076827417E1 +1.719645000E3,5.634225228E1 +1.719943000E3,5.935070169E1 +1.720188000E3,5.856877062E1 +1.720486000E3,5.761843709E1 +1.720741000E3,5.935030376E1 +1.720985000E3,5.413194972E1 +1.721289000E3,5.939733818E1 +1.721553000E3,5.617827250E1 +1.721847000E3,5.807085988E1 +1.722091000E3,5.877044817E1 +1.722445000E3,6.593854232E1 +1.722681000E3,6.027114564E1 +1.722973000E3,5.866411762E1 +1.723271000E3,5.588604319E1 +1.723508000E3,5.958751798E1 +1.723800000E3,6.077290351E1 +1.724039000E3,5.722905231E1 +1.724338000E3,5.619905124E1 +1.724576000E3,5.628809107E1 +1.724876000E3,5.560357878E1 +1.725168000E3,5.447509555E1 +1.725542000E3,5.278892866E1 +1.725841000E3,4.816211457E1 +1.726139000E3,4.622333411E1 +1.726399000E3,4.728231882E1 +1.726691000E3,5.101510224E1 +1.726947000E3,4.725933617E1 +1.727273000E3,5.333398449E1 +1.727569000E3,5.518583989E1 +1.727808000E3,5.719998093E1 +1.728061000E3,5.375072532E1 +1.728352000E3,5.631849408E1 +1.728644000E3,5.232994659E1 +1.729024000E3,5.045911420E1 +1.729295000E3,4.931808913E1 +1.729541000E3,4.866846016E1 +1.729788000E3,5.127644661E1 +1.730054000E3,4.769951033E1 +1.730296000E3,5.553885299E1 +1.730573000E3,5.629080236E1 +1.730816000E3,5.218818952E1 +1.731119000E3,5.112756333E1 +1.731379000E3,5.524890032E1 +1.731688000E3,5.530134621E1 +1.731949000E3,5.451831728E1 +1.732288000E3,5.380962689E1 +1.732589000E3,5.754684503E1 +1.732833000E3,5.184401682E1 +1.733102000E3,5.011373730E1 +1.733369000E3,5.541779655E1 +1.733647000E3,5.983699601E1 +1.733886000E3,6.131428317E1 +1.734163000E3,6.052345820E1 +1.734405000E3,5.852692054E1 +1.734659000E3,5.861191265E1 +1.734933000E3,5.957936529E1 +1.735219000E3,5.639739849E1 +1.735540000E3,5.207917019E1 +1.735832000E3,4.548490451E1 +1.736112000E3,5.219897691E1 +1.736384000E3,5.618314188E1 +1.736684000E3,5.720418785E1 +1.736946000E3,5.895068629E1 +1.737213000E3,5.652216932E1 +1.737468000E3,5.796687034E1 +1.737738000E3,5.591197017E1 +1.737996000E3,5.493985473E1 +1.738236000E3,5.752137274E1 +1.738586000E3,6.041563952E1 +1.738921000E3,6.199530447E1 +1.739167000E3,5.310800091E1 +1.739430000E3,5.600574849E1 +1.739683000E3,6.494981167E1 +1.739952000E3,6.157046745E1 +1.740293000E3,6.002681302E1 +1.740611000E3,5.943541790E1 +1.740910000E3,5.731619793E1 +1.741197000E3,5.885751119E1 +1.741508000E3,5.719237093E1 +1.741767000E3,5.958897825E1 +1.742034000E3,5.543499582E1 +1.742424000E3,5.632783570E1 +1.742688000E3,5.565042743E1 +1.742946000E3,5.622883854E1 +1.743204000E3,6.327777019E1 +1.743456000E3,5.663098185E1 +1.743721000E3,5.729384715E1 +1.743966000E3,6.200582057E1 +1.744273000E3,5.107652622E1 +1.744505000E3,5.491520459E1 +1.744752000E3,5.181266373E1 +1.745004000E3,5.014115745E1 +1.745297000E3,5.338585031E1 +1.745690000E3,5.654477286E1 +1.745966000E3,5.517036116E1 +1.746219000E3,5.200430375E1 +1.746475000E3,5.963355448E1 +1.746732000E3,5.854837006E1 +1.747002000E3,5.571277949E1 +1.747293000E3,5.825116458E1 +1.747522000E3,5.673248340E1 +1.747772000E3,5.683320783E1 +1.748035000E3,5.224053713E1 +1.748289000E3,5.713452273E1 +1.748568000E3,5.539076360E1 +1.748961000E3,6.015893340E1 +1.749211000E3,5.710921188E1 +1.749460000E3,6.114476082E1 +1.749715000E3,5.648052368E1 +1.749961000E3,5.897720288E1 +1.750207000E3,5.525435431E1 +1.750521000E3,5.447453139E1 +1.750765000E3,5.883968686E1 +1.751015000E3,5.450160052E1 +1.751290000E3,5.405183560E1 +1.751522000E3,5.501343440E1 +1.751848000E3,5.586635599E1 +1.752096000E3,5.631573217E1 +1.752372000E3,5.960964241E1 +1.752637000E3,5.320710483E1 +1.752941000E3,5.848434869E1 +1.753209000E3,5.619196315E1 +1.753510000E3,5.692291103E1 +1.753774000E3,5.505374149E1 +1.754051000E3,5.721759821E1 +1.754315000E3,5.539152446E1 +1.754625000E3,5.632890174E1 +1.754919000E3,5.918851802E1 +1.755262000E3,5.807294381E1 +1.755529000E3,5.748451885E1 +1.755827000E3,6.055251826E1 +1.756067000E3,6.208050524E1 +1.756367000E3,5.991655048E1 +1.756607000E3,6.073519941E1 +1.756900000E3,5.774998130E1 +1.757144000E3,5.751173009E1 +1.757417000E3,5.299288378E1 +1.757700000E3,5.913293772E1 +1.758005000E3,5.732040664E1 +1.758269000E3,6.221202462E1 +1.758585000E3,6.285457626E1 +1.758834000E3,5.870613535E1 +1.759137000E3,5.533279687E1 +1.759391000E3,5.194643865E1 +1.759644000E3,4.891449850E1 +1.759922000E3,4.784429271E1 +1.760236000E3,5.273391136E1 +1.760503000E3,5.475616990E1 +1.760758000E3,5.640096860E1 +1.761017000E3,5.329458627E1 +1.761282000E3,4.798672737E1 +1.761535000E3,5.532988346E1 +1.761794000E3,5.189579265E1 +1.762040000E3,5.068357941E1 +1.762299000E3,5.751972157E1 +1.762578000E3,5.430434207E1 +1.762831000E3,5.331943982E1 +1.763136000E3,5.699367350E1 +1.763409000E3,5.622858108E1 +1.763658000E3,5.631559008E1 +1.763910000E3,5.738562920E1 +1.764157000E3,6.030103345E1 +1.764400000E3,5.680309722E1 +1.764695000E3,5.703631315E1 +1.765017000E3,5.682945247E1 +1.765300000E3,5.317093897E1 +1.765575000E3,5.620624417E1 +1.765832000E3,5.550075987E1 +1.766100000E3,6.321349509E1 +1.766371000E3,5.938123887E1 +1.766635000E3,6.289622107E1 +1.766898000E3,5.890101653E1 +1.767155000E3,5.928826732E1 +1.767399000E3,5.872890625E1 +1.767638000E3,6.184345237E1 +1.767877000E3,6.131073260E1 +1.768211000E3,6.085041665E1 +1.768587000E3,6.015418617E1 +1.768835000E3,5.648473324E1 +1.769119000E3,5.746059957E1 +1.769380000E3,5.608054299E1 +1.769692000E3,6.542458852E1 +1.769998000E3,6.121618195E1 +1.770281000E3,5.842785672E1 +1.770536000E3,5.763776595E1 +1.770858000E3,5.630873419E1 +1.771133000E3,5.339704361E1 +1.771378000E3,5.463873835E1 +1.771723000E3,5.659388596E1 +1.772050000E3,5.449836230E1 +1.772294000E3,5.154616724E1 +1.772537000E3,5.082603581E1 +1.772795000E3,5.334183734E1 +1.773055000E3,5.096094928E1 +1.773365000E3,5.171061147E1 +1.773612000E3,5.477281719E1 +1.773878000E3,5.060909259E1 +1.774171000E3,5.285294921E1 +1.774452000E3,5.393730531E1 +1.774725000E3,5.333400186E1 +1.774980000E3,5.285705613E1 +1.775346000E3,5.719168586E1 +1.775663000E3,5.642193929E1 +1.775908000E3,4.659059970E1 +1.776150000E3,5.521168672E1 +1.776388000E3,5.693500665E1 +1.776630000E3,6.030483668E1 +1.776910000E3,5.944095915E1 +1.777153000E3,5.708951289E1 +1.777414000E3,5.291982189E1 +1.777666000E3,5.900042024E1 +1.777935000E3,6.010949926E1 +1.778229000E3,6.009411695E1 +1.778514000E3,5.804757181E1 +1.778758000E3,5.922775473E1 +1.779011000E3,6.063545461E1 +1.779277000E3,5.950242674E1 +1.779575000E3,6.057891518E1 +1.779819000E3,6.050018223E1 +1.780115000E3,5.965583098E1 +1.780361000E3,5.651792502E1 +1.780660000E3,5.814099422E1 +1.780904000E3,5.340077797E1 +1.781203000E3,5.734973286E1 +1.781481000E3,5.846278011E1 +1.781805000E3,5.369751607E1 +1.782048000E3,5.229063054E1 +1.782299000E3,5.345996994E1 +1.782583000E3,5.724353788E1 +1.782883000E3,5.610772411E1 +1.783181000E3,5.272586700E1 +1.783423000E3,5.272075137E1 +1.783692000E3,5.495532717E1 +1.783945000E3,5.594785882E1 +1.784202000E3,5.914935612E1 +1.784483000E3,6.427791570E1 +1.784735000E3,6.185652247E1 +1.785051000E3,6.178338943E1 +1.785352000E3,6.304285312E1 +1.785598000E3,5.699176354E1 +1.785897000E3,5.705567192E1 +1.786190000E3,5.975757470E1 +1.786467000E3,6.092866408E1 +1.786714000E3,5.771726615E1 +1.786984000E3,5.434727511E1 +1.787232000E3,5.250796794E1 +1.787486000E3,5.668884634E1 +1.787813000E3,5.600600547E1 +1.788061000E3,5.162213387E1 +1.788391000E3,5.782497792E1 +1.788636000E3,5.900804565E1 +1.788935000E3,6.056317474E1 +1.789175000E3,5.749029459E1 +1.789469000E3,6.053654612E1 +1.789714000E3,5.841478287E1 +1.789988000E3,5.700130118E1 +1.790219000E3,5.562837186E1 +1.790509000E3,5.430369658E1 +1.790806000E3,5.586895515E1 +1.791048000E3,5.809725956E1 +1.791409000E3,5.552827992E1 +1.791650000E3,5.534472171E1 +1.791981000E3,5.671474363E1 +1.792227000E3,5.716453332E1 +1.792522000E3,5.844249975E1 +1.792847000E3,5.961186667E1 +1.793109000E3,5.794833541E1 +1.793437000E3,5.832360597E1 +1.793698000E3,5.996001578E1 +1.793970000E3,5.849924827E1 +1.794223000E3,5.823551411E1 +1.794488000E3,5.480450178E1 +1.794819000E3,5.715609034E1 +1.795083000E3,5.418083703E1 +1.795329000E3,5.529883425E1 +1.795587000E3,5.729455769E1 +1.795853000E3,5.358946536E1 +1.796083000E3,5.534684059E1 +1.796374000E3,5.693696454E1 +1.796630000E3,5.642610016E1 +1.796927000E3,5.692548294E1 +1.797194000E3,5.931602223E1 +1.797469000E3,5.877569790E1 +1.797716000E3,5.527135197E1 +1.798053000E3,5.904674814E1 +1.798358000E3,5.655039196E1 +1.798612000E3,5.796779928E1 +1.798921000E3,5.499199210E1 +1.799185000E3,5.693837926E1 +1.799465000E3,6.235855457E1 +1.799695000E3,6.271612813E1 +1.799964000E3,6.118271582E1 +1.800233000E3,6.171552449E1 +1.800562000E3,6.293258336E1 +1.800818000E3,5.927940855E1 +1.801077000E3,5.836879001E1 +1.801406000E3,6.182854437E1 +1.801650000E3,5.918527405E1 +1.801894000E3,6.352260837E1 +1.802163000E3,6.142940723E1 +1.802385000E3,5.867772092E1 +1.802631000E3,5.916688243E1 +1.802927000E3,5.855222781E1 +1.803228000E3,6.125789004E1 +1.803533000E3,5.839377949E1 +1.803816000E3,5.705167204E1 +1.804057000E3,5.641730344E1 +1.804362000E3,6.771092582E1 +1.804585000E3,6.036461449E1 +1.804835000E3,6.742095194E1 +1.805132000E3,6.133151855E1 +1.805443000E3,6.658554202E1 +1.805718000E3,7.095511769E1 +1.806003000E3,7.330553664E1 +1.806290000E3,6.732809523E1 +1.806566000E3,6.106403544E1 +1.806844000E3,5.830930506E1 +1.807085000E3,6.610455401E1 +1.807442000E3,5.944325189E1 +1.807800000E3,5.667454347E1 +1.808044000E3,5.560521877E1 +1.808299000E3,5.488377812E1 +1.808542000E3,5.279721650E1 +1.808789000E3,4.834692654E1 +1.809029000E3,4.661669368E1 +1.809276000E3,5.501186804E1 +1.809526000E3,5.384830085E1 +1.809820000E3,5.526588307E1 +1.810084000E3,5.900458249E1 +1.810393000E3,5.557146256E1 +1.810647000E3,5.355619280E1 +1.811023000E3,5.627924000E1 +1.811283000E3,5.384503050E1 +1.811527000E3,5.309622401E1 +1.811816000E3,5.228523776E1 +1.812070000E3,5.317657142E1 +1.812328000E3,5.813846570E1 +1.812583000E3,5.621088360E1 +1.812927000E3,5.646965227E1 +1.813191000E3,5.322001188E1 +1.813436000E3,5.451886743E1 +1.813748000E3,5.558621720E1 +1.814006000E3,5.673920724E1 +1.814328000E3,5.582855401E1 +1.814591000E3,6.044196407E1 +1.814848000E3,5.769208427E1 +1.815109000E3,6.206015086E1 +1.815391000E3,5.918173335E1 +1.815660000E3,5.779702061E1 +1.815927000E3,6.516398742E1 +1.816218000E3,5.927869783E1 +1.816546000E3,6.320256740E1 +1.816802000E3,6.296743684E1 +1.817051000E3,5.869001212E1 +1.817329000E3,5.985536664E1 +1.817620000E3,5.435607380E1 +1.817905000E3,5.721703373E1 +1.818148000E3,6.314389823E1 +1.818376000E3,6.116752308E1 +1.818622000E3,5.773611736E1 +1.818863000E3,5.892899245E1 +1.819138000E3,5.791411351E1 +1.819457000E3,6.283307798E1 +1.819719000E3,5.805008540E1 +1.819967000E3,6.383011196E1 +1.820266000E3,5.915938870E1 +1.820515000E3,5.795811325E1 +1.820871000E3,5.730398564E1 +1.821113000E3,5.907223014E1 +1.821388000E3,5.566469845E1 +1.821612000E3,5.223652040E1 +1.821858000E3,5.461868826E1 +1.822118000E3,5.731142265E1 +1.822388000E3,5.743609212E1 +1.822672000E3,6.147918645E1 +1.822919000E3,6.109678537E1 +1.823167000E3,5.654516230E1 +1.823464000E3,6.010058675E1 +1.823716000E3,6.101649690E1 +1.824046000E3,5.741898993E1 +1.824372000E3,5.654969113E1 +1.824629000E3,5.489877253E1 +1.824894000E3,6.410593751E1 +1.825142000E3,5.923267903E1 +1.825399000E3,5.977300321E1 +1.825683000E3,5.945891570E1 +1.825907000E3,5.799474745E1 +1.826162000E3,5.485933719E1 +1.826447000E3,5.848818620E1 +1.826697000E3,5.937282663E1 +1.826944000E3,5.473647239E1 +1.827319000E3,5.611635619E1 +1.827649000E3,5.704234375E1 +1.827909000E3,5.174683398E1 +1.828172000E3,5.243070089E1 +1.828457000E3,5.835398328E1 +1.828710000E3,6.579711207E1 +1.828969000E3,6.063158540E1 +1.829218000E3,5.379307224E1 +1.829474000E3,5.791005982E1 +1.829779000E3,5.908028356E1 +1.830025000E3,5.476368407E1 +1.830307000E3,5.608145667E1 +1.830627000E3,5.417323034E1 +1.830843000E3,5.295530865E1 +1.831087000E3,5.335160491E1 +1.831385000E3,5.274441298E1 +1.831622000E3,5.307477504E1 +1.831918000E3,5.606159985E1 +1.832155000E3,6.009472302E1 +1.832471000E3,5.380117674E1 +1.832766000E3,5.382200579E1 +1.833012000E3,5.176006230E1 +1.833256000E3,5.956343573E1 +1.833577000E3,5.545935306E1 +1.833826000E3,5.528541848E1 +1.834083000E3,5.436381252E1 +1.834373000E3,5.684307553E1 +1.834669000E3,5.352399464E1 +1.834910000E3,5.651184236E1 +1.835208000E3,5.432875840E1 +1.835453000E3,5.442576527E1 +1.835752000E3,5.643309342E1 +1.836022000E3,5.781174029E1 +1.836293000E3,6.110602518E1 +1.836557000E3,5.591856301E1 +1.836932000E3,5.423752303E1 +1.837200000E3,5.716598850E1 +1.837455000E3,5.511743414E1 +1.837716000E3,5.819026063E1 +1.837988000E3,5.728773522E1 +1.838236000E3,5.959151016E1 +1.838540000E3,5.810767345E1 +1.838799000E3,5.779128856E1 +1.839096000E3,6.092094761E1 +1.839361000E3,5.957871329E1 +1.839608000E3,5.838702884E1 +1.839856000E3,5.927631822E1 +1.840242000E3,5.748386760E1 +1.840516000E3,5.957609475E1 +1.840759000E3,5.688693666E1 +1.841054000E3,5.883374773E1 +1.841320000E3,5.769470339E1 +1.841597000E3,5.894509733E1 +1.841885000E3,6.032854908E1 +1.842190000E3,5.891601570E1 +1.842444000E3,5.957860612E1 +1.842691000E3,5.968229576E1 +1.842933000E3,5.829247522E1 +1.843258000E3,6.183086549E1 +1.843539000E3,6.077794792E1 +1.843765000E3,5.928253866E1 +1.844002000E3,5.782805396E1 +1.844301000E3,5.975447959E1 +1.844589000E3,6.108169982E1 +1.844825000E3,5.915565503E1 +1.845116000E3,5.981302437E1 +1.845363000E3,6.019248645E1 +1.845636000E3,6.014223773E1 +1.845861000E3,6.160258605E1 +1.846139000E3,6.002388007E1 +1.846447000E3,6.004612452E1 +1.846706000E3,5.932487324E1 +1.846979000E3,5.718424575E1 +1.847284000E3,5.712987240E1 +1.847586000E3,5.557624595E1 +1.847888000E3,5.603981815E1 +1.848146000E3,5.769591687E1 +1.848418000E3,5.526085696E1 +1.848706000E3,5.815102401E1 +1.848972000E3,5.884177354E1 +1.849226000E3,5.853138751E1 +1.849515000E3,6.156208919E1 +1.849746000E3,6.064923427E1 +1.850008000E3,6.590305387E1 +1.850338000E3,5.853444981E1 +1.850640000E3,5.717447935E1 +1.850942000E3,5.680568615E1 +1.851242000E3,5.928468331E1 +1.851504000E3,5.798449444E1 +1.851757000E3,5.802619768E1 +1.852033000E3,5.998338312E1 +1.852296000E3,5.683616594E1 +1.852550000E3,5.692327884E1 +1.852886000E3,5.878610583E1 +1.853162000E3,5.538467470E1 +1.853432000E3,5.437085520E1 +1.853738000E3,5.469765317E1 +1.854038000E3,5.790268038E1 +1.854297000E3,5.836787866E1 +1.854582000E3,6.160807622E1 +1.854881000E3,5.878613196E1 +1.855158000E3,6.200103199E1 +1.855387000E3,6.087479870E1 +1.855688000E3,6.028304140E1 +1.855930000E3,6.159527875E1 +1.856226000E3,6.082174354E1 +1.856487000E3,5.932314061E1 +1.856744000E3,5.976570730E1 +1.857001000E3,5.473753247E1 +1.857299000E3,5.954612483E1 +1.857556000E3,6.052388497E1 +1.857849000E3,5.848282940E1 +1.858086000E3,5.879664566E1 +1.858384000E3,5.864589973E1 +1.858677000E3,5.659242719E1 +1.858917000E3,5.683870091E1 +1.859195000E3,5.582498919E1 +1.859427000E3,6.011873423E1 +1.859676000E3,5.796702396E1 +1.859911000E3,5.928400715E1 +1.860149000E3,5.826876733E1 +1.860396000E3,6.038481253E1 +1.860680000E3,6.030085568E1 +1.860944000E3,5.890166619E1 +1.861209000E3,6.654379171E1 +1.861519000E3,6.016187265E1 +1.861755000E3,6.139297542E1 +1.862049000E3,6.289106669E1 +1.862388000E3,5.872946965E1 +1.862675000E3,5.800836625E1 +1.862993000E3,5.701819685E1 +1.863248000E3,5.488359846E1 +1.863519000E3,5.747446133E1 +1.863768000E3,5.996388232E1 +1.864087000E3,5.686047813E1 +1.864334000E3,5.935760915E1 +1.864635000E3,6.438349972E1 +1.864894000E3,6.008599590E1 +1.865205000E3,5.995474236E1 +1.865502000E3,6.596906108E1 +1.865837000E3,6.091064347E1 +1.866114000E3,5.885056970E1 +1.866411000E3,6.474486832E1 +1.866666000E3,5.888758286E1 +1.866964000E3,6.138447683E1 +1.867211000E3,6.032596684E1 +1.867482000E3,5.848476935E1 +1.867736000E3,5.631330849E1 +1.867989000E3,5.927138373E1 +1.868246000E3,5.817171672E1 +1.868499000E3,5.358065381E1 +1.868763000E3,5.500264039E1 +1.869129000E3,5.663946315E1 +1.869384000E3,5.601392416E1 +1.869636000E3,5.640732154E1 +1.869947000E3,5.320213962E1 +1.870207000E3,4.907811811E1 +1.870470000E3,5.784153600E1 +1.870743000E3,5.988355074E1 +1.871011000E3,5.973830135E1 +1.871253000E3,5.769679044E1 +1.871519000E3,5.395770126E1 +1.871765000E3,5.751088186E1 +1.872011000E3,5.342275719E1 +1.872301000E3,5.638616310E1 +1.872563000E3,5.124369984E1 +1.872821000E3,5.357036185E1 +1.873129000E3,5.529809524E1 +1.873386000E3,5.442720524E1 +1.873650000E3,5.306298792E1 +1.873937000E3,5.703507672E1 +1.874184000E3,5.835246426E1 +1.874444000E3,5.638184247E1 +1.874707000E3,5.201779537E1 +1.874972000E3,5.217149520E1 +1.875244000E3,5.757612416E1 +1.875577000E3,5.387788750E1 +1.875865000E3,5.607108884E1 +1.876149000E3,5.692352283E1 +1.876407000E3,5.577296536E1 +1.876687000E3,5.259836493E1 +1.876982000E3,5.467571766E1 +1.877215000E3,5.256317748E1 +1.877521000E3,5.522593862E1 +1.877775000E3,5.432669245E1 +1.878036000E3,5.734031668E1 +1.878314000E3,6.027566119E1 +1.878587000E3,5.567003578E1 +1.878912000E3,5.307720644E1 +1.879176000E3,5.659939353E1 +1.879425000E3,5.110556861E1 +1.879723000E3,5.673190580E1 +1.879969000E3,5.437112204E1 +1.880274000E3,5.433297742E1 +1.880576000E3,5.585075865E1 +1.880875000E3,5.657006430E1 +1.881117000E3,5.701623858E1 +1.881424000E3,5.749679466E1 +1.881673000E3,5.623079196E1 +1.881986000E3,5.545187468E1 +1.882329000E3,5.781610131E1 +1.882611000E3,5.432916720E1 +1.882882000E3,4.940287270E1 +1.883127000E3,5.866223377E1 +1.883391000E3,5.654564177E1 +1.883644000E3,5.888782218E1 +1.883889000E3,5.586307703E1 +1.884148000E3,5.930725555E1 +1.884413000E3,5.963840788E1 +1.884660000E3,5.928611951E1 +1.884926000E3,5.621968819E1 +1.885181000E3,5.811455305E1 +1.885457000E3,5.585646129E1 +1.885714000E3,5.989591718E1 +1.885968000E3,6.058402104E1 +1.886267000E3,5.972100226E1 +1.886517000E3,6.220704457E1 +1.886832000E3,6.037773435E1 +1.887106000E3,6.039308032E1 +1.887385000E3,6.223647696E1 +1.887617000E3,5.854088114E1 +1.887876000E3,6.248517888E1 +1.888128000E3,6.222318884E1 +1.888437000E3,6.070320114E1 +1.888777000E3,5.817372188E1 +1.889076000E3,5.382250608E1 +1.889369000E3,7.004593531E1 +1.889616000E3,6.094415751E1 +1.889913000E3,5.455584628E1 +1.890163000E3,5.387250795E1 +1.890418000E3,5.219742496E1 +1.890714000E3,5.070715955E1 +1.890961000E3,5.362651533E1 +1.891207000E3,5.046817004E1 +1.891453000E3,5.129339201E1 +1.891764000E3,4.856730286E1 +1.892053000E3,5.220705734E1 +1.892321000E3,5.401068171E1 +1.892582000E3,5.109746146E1 +1.892834000E3,5.412675897E1 +1.893090000E3,5.347014573E1 +1.893340000E3,5.092720593E1 +1.893620000E3,5.341316175E1 +1.893886000E3,4.870918930E1 +1.894142000E3,4.929590175E1 +1.894389000E3,4.686294330E1 +1.894692000E3,5.100486031E1 +1.894995000E3,5.087478993E1 +1.895328000E3,4.940372977E1 +1.895606000E3,5.362468443E1 +1.895919000E3,5.608826750E1 +1.896241000E3,5.628756413E1 +1.896497000E3,5.817843169E1 +1.896749000E3,5.809119715E1 +1.897054000E3,5.469613872E1 +1.897287000E3,5.437807476E1 +1.897582000E3,5.794761863E1 +1.897897000E3,6.027023965E1 +1.898145000E3,5.913564460E1 +1.898511000E3,5.510014788E1 +1.898752000E3,5.499817732E1 +1.898999000E3,5.569220222E1 +1.899294000E3,5.368447548E1 +1.899547000E3,5.912109227E1 +1.899841000E3,6.076259223E1 +1.900104000E3,6.153129043E1 +1.900349000E3,5.679462536E1 +1.900634000E3,5.721135074E1 +1.900927000E3,5.674745728E1 +1.901166000E3,5.556227882E1 +1.901462000E3,4.994603734E1 +1.901841000E3,5.122656475E1 +1.902183000E3,5.127903645E1 +1.902436000E3,5.042064547E1 +1.902695000E3,5.425673681E1 +1.902998000E3,5.484388956E1 +1.903228000E3,5.322356297E1 +1.903483000E3,5.161093724E1 +1.903730000E3,5.302125687E1 +1.904019000E3,5.241958307E1 +1.904307000E3,5.116604316E1 +1.904614000E3,5.319513233E1 +1.904991000E3,5.530482451E1 +1.905243000E3,5.829713614E1 +1.905528000E3,4.891404960E1 +1.905774000E3,5.408250868E1 +1.906083000E3,5.272747143E1 +1.906381000E3,5.216068921E1 +1.906624000E3,5.292203291E1 +1.906885000E3,5.243548019E1 +1.907149000E3,4.981562618E1 +1.907448000E3,5.500279348E1 +1.907742000E3,5.481190601E1 +1.907999000E3,5.369800103E1 +1.908315000E3,6.390197571E1 +1.908579000E3,6.517990141E1 +1.908825000E3,5.822949910E1 +1.909064000E3,5.655728640E1 +1.909356000E3,5.292186662E1 +1.909600000E3,5.069372058E1 +1.909895000E3,5.368100654E1 +1.910138000E3,5.616508462E1 +1.910432000E3,6.285923815E1 +1.910670000E3,6.254266196E1 +1.910979000E3,5.628599605E1 +1.911260000E3,5.616383984E1 +1.911482000E3,5.074231882E1 +1.911728000E3,5.398858859E1 +1.911977000E3,5.585565083E1 +1.912237000E3,5.777112626E1 +1.912532000E3,6.036032129E1 +1.912783000E3,6.077032608E1 +1.913052000E3,5.839282786E1 +1.913316000E3,5.397912726E1 +1.913575000E3,5.582771928E1 +1.913848000E3,5.579334158E1 +1.914143000E3,5.778281485E1 +1.914450000E3,5.783459906E1 +1.914713000E3,6.199387267E1 +1.914943000E3,6.173706737E1 +1.915185000E3,5.621060236E1 +1.915433000E3,5.563784893E1 +1.915692000E3,5.470990272E1 +1.915951000E3,5.469960060E1 +1.916217000E3,6.171536544E1 +1.916470000E3,5.862130066E1 +1.916777000E3,5.839467924E1 +1.917028000E3,5.552209731E1 +1.917324000E3,5.763067987E1 +1.917687000E3,5.981653815E1 +1.917967000E3,5.790518789E1 +1.918210000E3,5.220287871E1 +1.918457000E3,5.707286116E1 +1.918759000E3,5.657529642E1 +1.918997000E3,6.000130629E1 +1.919241000E3,5.708419446E1 +1.919496000E3,5.749223221E1 +1.919768000E3,5.843781753E1 +1.920074000E3,5.671929683E1 +1.920373000E3,5.881070992E1 +1.920621000E3,5.603223824E1 +1.920956000E3,6.053511488E1 +1.921216000E3,5.525745837E1 +1.921476000E3,6.186721324E1 +1.921723000E3,6.214292360E1 +1.922025000E3,5.857206109E1 +1.922320000E3,5.934438900E1 +1.922561000E3,6.077867207E1 +1.922860000E3,5.578255978E1 +1.923099000E3,5.723807446E1 +1.923347000E3,5.785786452E1 +1.923636000E3,6.037753633E1 +1.923892000E3,6.106459696E1 +1.924223000E3,5.873119773E1 +1.924511000E3,5.862235861E1 +1.924814000E3,5.732521131E1 +1.925070000E3,5.161553090E1 +1.925373000E3,5.243351685E1 +1.925626000E3,5.041805469E1 +1.925919000E3,5.543714980E1 +1.926175000E3,5.338657816E1 +1.926425000E3,5.616854022E1 +1.926695000E3,5.699328540E1 +1.926965000E3,5.787312270E1 +1.927305000E3,5.558473925E1 +1.927614000E3,5.927685087E1 +1.927880000E3,6.254706193E1 +1.928125000E3,6.079427969E1 +1.928390000E3,5.412440784E1 +1.928634000E3,5.441834540E1 +1.928928000E3,5.220486428E1 +1.929215000E3,5.210908233E1 +1.929515000E3,5.352367419E1 +1.929766000E3,5.356350702E1 +1.930022000E3,5.184851991E1 +1.930322000E3,5.311742835E1 +1.930607000E3,5.453786592E1 +1.930870000E3,5.814140937E1 +1.931155000E3,5.779656646E1 +1.931440000E3,5.488757891E1 +1.931727000E3,5.385182390E1 +1.931981000E3,5.705491580E1 +1.932229000E3,5.576165296E1 +1.932491000E3,5.781333383E1 +1.932730000E3,5.616780300E1 +1.932971000E3,5.400230043E1 +1.933232000E3,5.518627884E1 +1.933510000E3,5.211300688E1 +1.933795000E3,5.292820587E1 +1.934127000E3,5.382097927E1 +1.934390000E3,6.102840439E1 +1.934671000E3,5.486275546E1 +1.934948000E3,5.206103103E1 +1.935198000E3,5.739150099E1 +1.935506000E3,5.310844778E1 +1.935756000E3,5.392681604E1 +1.936008000E3,5.250003264E1 +1.936256000E3,5.801399662E1 +1.936524000E3,5.696032820E1 +1.936785000E3,5.414492013E1 +1.937032000E3,5.536982174E1 +1.937391000E3,5.750979970E1 +1.937677000E3,5.370086514E1 +1.937972000E3,5.359409099E1 +1.938241000E3,4.663692517E1 +1.938508000E3,4.740501122E1 +1.938772000E3,4.812116539E1 +1.939051000E3,4.940260018E1 +1.939311000E3,5.211533825E1 +1.939553000E3,5.351181789E1 +1.939796000E3,5.597808269E1 +1.940081000E3,5.841474518E1 +1.940347000E3,5.900966915E1 +1.940680000E3,5.844032848E1 +1.940932000E3,6.047778057E1 +1.941187000E3,6.179458512E1 +1.941488000E3,5.569784051E1 +1.941730000E3,5.535681081E1 +1.941971000E3,5.409739450E1 +1.942227000E3,5.551927029E1 +1.942555000E3,5.259381649E1 +1.942855000E3,5.090743186E1 +1.943101000E3,5.330610416E1 +1.943383000E3,5.722147303E1 +1.943610000E3,5.564867598E1 +1.944013000E3,5.456395907E1 +1.944265000E3,5.442943523E1 +1.944557000E3,5.982581487E1 +1.944820000E3,5.751114261E1 +1.945081000E3,5.998630171E1 +1.945333000E3,5.908382499E1 +1.945646000E3,5.828329647E1 +1.945951000E3,5.602282904E1 +1.946199000E3,6.197108249E1 +1.946496000E3,5.533258874E1 +1.946770000E3,5.704060455E1 +1.947126000E3,5.457797110E1 +1.947363000E3,5.430717613E1 +1.947637000E3,5.940687974E1 +1.947953000E3,5.436076271E1 +1.948235000E3,5.660912008E1 +1.948550000E3,5.504399315E1 +1.948861000E3,5.464999644E1 +1.949122000E3,5.565806372E1 +1.949384000E3,5.190569146E1 +1.949646000E3,5.153937000E1 +1.949972000E3,5.628803963E1 +1.950248000E3,5.966716422E1 +1.950577000E3,5.820503815E1 +1.950822000E3,5.652058726E1 +1.951118000E3,5.802645793E1 +1.951349000E3,5.727916959E1 +1.951597000E3,5.784165576E1 +1.951900000E3,5.999225852E1 +1.952197000E3,6.048891831E1 +1.952433000E3,5.821794698E1 +1.952728000E3,5.416701806E1 +1.952964000E3,5.183738883E1 +1.953295000E3,5.384161890E1 +1.953675000E3,5.430376660E1 +1.953907000E3,5.257088063E1 +1.954151000E3,5.392186903E1 +1.954431000E3,6.167467738E1 +1.954678000E3,5.958790115E1 +1.954923000E3,5.822018477E1 +1.955185000E3,5.808448347E1 +1.955447000E3,5.733347749E1 +1.955703000E3,6.261390980E1 +1.956005000E3,5.829281758E1 +1.956246000E3,5.949056653E1 +1.956541000E3,5.839747914E1 +1.956810000E3,5.770882066E1 +1.957120000E3,5.690637302E1 +1.957421000E3,5.796705847E1 +1.957668000E3,5.867770180E1 +1.957936000E3,5.696585443E1 +1.958216000E3,5.738908049E1 +1.958463000E3,5.842272770E1 +1.958721000E3,5.966072568E1 +1.959033000E3,6.340725612E1 +1.959281000E3,6.193544465E1 +1.959566000E3,5.927164536E1 +1.959888000E3,6.146900670E1 +1.960249000E3,6.270186363E1 +1.960512000E3,5.695216686E1 +1.960779000E3,5.725758836E1 +1.961040000E3,5.788439963E1 +1.961303000E3,6.286977927E1 +1.961557000E3,6.361469653E1 +1.961802000E3,6.277422462E1 +1.962060000E3,6.032704022E1 +1.962310000E3,5.600516510E1 +1.962586000E3,6.188879617E1 +1.962805000E3,6.271522018E1 +1.963107000E3,6.025198847E1 +1.963453000E3,6.001529679E1 +1.963728000E3,5.375240125E1 +1.964036000E3,5.055228276E1 +1.964331000E3,5.257092943E1 +1.964568000E3,5.708661900E1 +1.964868000E3,5.629448239E1 +1.965178000E3,5.425890416E1 +1.965431000E3,5.575014937E1 +1.965679000E3,5.801461965E1 +1.965931000E3,5.400244473E1 +1.966191000E3,5.474887871E1 +1.966525000E3,5.196538635E1 +1.966783000E3,5.536524974E1 +1.967040000E3,5.974878933E1 +1.967338000E3,6.200932986E1 +1.967644000E3,6.295299888E1 +1.967909000E3,6.272635154E1 +1.968153000E3,5.902465660E1 +1.968474000E3,5.897159976E1 +1.968773000E3,5.506910037E1 +1.969014000E3,5.622897524E1 +1.969254000E3,5.457019516E1 +1.969505000E3,5.648049168E1 +1.969892000E3,5.656883155E1 +1.970152000E3,5.598423772E1 +1.970446000E3,5.186768597E1 +1.970726000E3,5.526177698E1 +1.971020000E3,5.810907246E1 +1.971304000E3,5.262875480E1 +1.971613000E3,5.141696402E1 +1.971915000E3,5.298264424E1 +1.972196000E3,5.641801556E1 +1.972483000E3,5.228737642E1 +1.972725000E3,5.649656740E1 +1.973036000E3,5.867645632E1 +1.973323000E3,5.679238187E1 +1.973633000E3,5.959682402E1 +1.973935000E3,5.617109756E1 +1.974236000E3,5.473085666E1 +1.974547000E3,5.589564412E1 +1.974836000E3,5.691193712E1 +1.975136000E3,5.808545953E1 +1.975385000E3,5.922478363E1 +1.975631000E3,5.707996013E1 +1.975881000E3,5.820923707E1 +1.976194000E3,5.897957095E1 +1.976453000E3,6.019944728E1 +1.976814000E3,6.472960186E1 +1.977076000E3,6.312075290E1 +1.977356000E3,5.886370461E1 +1.977618000E3,5.750754913E1 +1.977917000E3,5.531180501E1 +1.978189000E3,5.815410032E1 +1.978463000E3,5.735965971E1 +1.978732000E3,5.593071322E1 +1.978999000E3,5.835041964E1 +1.979245000E3,5.646810288E1 +1.979493000E3,5.392299875E1 +1.979902000E3,5.430590311E1 +1.980142000E3,5.447583546E1 +1.980384000E3,5.260389735E1 +1.980632000E3,5.537561423E1 +1.980873000E3,5.836960119E1 +1.981120000E3,5.425821286E1 +1.981389000E3,5.153336720E1 +1.981618000E3,5.420085973E1 +1.981915000E3,5.457985954E1 +1.982165000E3,5.637026749E1 +1.982404000E3,6.009656118E1 +1.982718000E3,5.903298531E1 +1.983029000E3,5.665152425E1 +1.983296000E3,5.778918758E1 +1.983538000E3,5.444374512E1 +1.983786000E3,5.619088618E1 +1.984047000E3,6.088482249E1 +1.984304000E3,5.678390940E1 +1.984575000E3,5.873820942E1 +1.984842000E3,6.004736340E1 +1.985142000E3,6.191465398E1 +1.985405000E3,6.154032648E1 +1.985653000E3,5.967034113E1 +1.985913000E3,5.855925349E1 +1.986211000E3,5.529356341E1 +1.986557000E3,5.823190054E1 +1.986847000E3,5.749679599E1 +1.987098000E3,5.855123449E1 +1.987369000E3,5.999203293E1 +1.987610000E3,6.139424716E1 +1.987876000E3,5.730078222E1 +1.988126000E3,5.649537684E1 +1.988425000E3,5.872458305E1 +1.988727000E3,5.704322852E1 +1.989024000E3,6.264447151E1 +1.989326000E3,5.763604303E1 +1.989641000E3,5.657919006E1 +1.989961000E3,5.706004491E1 +1.990255000E3,6.115159729E1 +1.990571000E3,5.721964371E1 +1.990829000E3,5.780420781E1 +1.991088000E3,5.782228640E1 +1.991353000E3,5.791642518E1 +1.991611000E3,5.820065680E1 +1.991935000E3,5.675756460E1 +1.992174000E3,5.720433643E1 +1.992482000E3,5.907701380E1 +1.992770000E3,5.791335620E1 +1.993107000E3,5.504589678E1 +1.993369000E3,6.117578252E1 +1.993619000E3,5.902046786E1 +1.993912000E3,6.024153080E1 +1.994216000E3,6.061721402E1 +1.994464000E3,6.185610038E1 +1.994715000E3,5.902440055E1 +1.995005000E3,6.112374185E1 +1.995249000E3,5.664710018E1 +1.995551000E3,5.841351492E1 +1.995787000E3,5.961393992E1 +1.996119000E3,5.614463215E1 +1.996387000E3,5.528223904E1 +1.996647000E3,5.706960328E1 +1.996947000E3,5.544195306E1 +1.997203000E3,5.747091679E1 +1.997452000E3,5.434233120E1 +1.997769000E3,5.794847441E1 +1.998019000E3,5.504963001E1 +1.998267000E3,5.470768853E1 +1.998498000E3,6.426300701E1 +1.998789000E3,6.070245213E1 +1.999090000E3,5.893271279E1 +1.999390000E3,5.873668669E1 +1.999698000E3,6.355663744E1 +1.999962000E3,6.500393379E1 +2.000214000E3,6.177640112E1 +2.000471000E3,6.122167361E1 +2.000775000E3,5.982616779E1 +2.001079000E3,5.944943300E1 +2.001339000E3,5.772707313E1 +2.001595000E3,5.934980117E1 +2.001862000E3,6.221301291E1 +2.002160000E3,6.098009785E1 +2.002491000E3,6.205877653E1 +2.002758000E3,5.978743388E1 +2.003062000E3,6.141065367E1 +2.003307000E3,6.146860620E1 +2.003555000E3,6.323368939E1 +2.003884000E3,6.072009355E1 +2.004185000E3,6.072017978E1 +2.004424000E3,6.079512782E1 +2.004673000E3,6.651000141E1 +2.004939000E3,6.185812181E1 +2.005202000E3,5.705353418E1 +2.005472000E3,5.820400818E1 +2.005800000E3,5.682542431E1 +2.006070000E3,6.224932691E1 +2.006350000E3,5.654791681E1 +2.006601000E3,6.160831985E1 +2.006857000E3,6.443497299E1 +2.007101000E3,6.091208862E1 +2.007395000E3,5.867323811E1 +2.007635000E3,5.850229824E1 +2.007945000E3,6.307832054E1 +2.008197000E3,5.931313312E1 +2.008453000E3,5.632990721E1 +2.008711000E3,5.662998085E1 +2.009032000E3,5.416655753E1 +2.009268000E3,6.273936844E1 +2.009521000E3,6.129068926E1 +2.009786000E3,6.485712301E1 +2.010037000E3,6.605690213E1 +2.010298000E3,6.243431425E1 +2.010541000E3,6.062714733E1 +2.010780000E3,6.369220544E1 +2.011082000E3,5.933701247E1 +2.011330000E3,6.141658123E1 +2.011605000E3,6.232326760E1 +2.011893000E3,5.983132844E1 +2.012226000E3,6.085684837E1 +2.012489000E3,5.844434641E1 +2.012752000E3,5.992485437E1 +2.013005000E3,5.745164278E1 +2.013272000E3,5.489362140E1 +2.013573000E3,5.734004331E1 +2.013861000E3,5.569303233E1 +2.014170000E3,5.619919203E1 +2.014467000E3,5.719248521E1 +2.014715000E3,5.898607642E1 +2.015015000E3,5.312334941E1 +2.015258000E3,4.707687024E1 +2.015594000E3,5.326213693E1 +2.015822000E3,4.977107581E1 +2.016071000E3,5.399380901E1 +2.016333000E3,5.528915982E1 +2.016634000E3,5.648344312E1 +2.016879000E3,5.853194276E1 +2.017143000E3,5.969968429E1 +2.017429000E3,6.121498547E1 +2.017723000E3,5.933414775E1 +2.017961000E3,6.375558171E1 +2.018248000E3,6.102538403E1 +2.018558000E3,6.066629858E1 +2.018830000E3,5.238394429E1 +2.019065000E3,5.528030903E1 +2.019316000E3,5.711235169E1 +2.019578000E3,6.069913503E1 +2.019847000E3,5.344730110E1 +2.020093000E3,5.593398360E1 +2.020413000E3,5.112453486E1 +2.020668000E3,5.529600172E1 +2.020922000E3,5.816841553E1 +2.021177000E3,6.105447683E1 +2.021449000E3,5.967528890E1 +2.021707000E3,5.677568689E1 +2.022115000E3,5.613246875E1 +2.022403000E3,5.846674311E1 +2.022679000E3,5.999468936E1 +2.022930000E3,6.268951545E1 +2.023232000E3,6.037378186E1 +2.023532000E3,6.123290650E1 +2.023784000E3,6.425880775E1 +2.024094000E3,6.043334594E1 +2.024356000E3,6.287321918E1 +2.024616000E3,6.178703582E1 +2.024868000E3,5.974424575E1 +2.025152000E3,5.863905018E1 +2.025429000E3,5.669082005E1 +2.025716000E3,6.192616195E1 +2.026008000E3,6.367561928E1 +2.026300000E3,6.061621393E1 +2.026543000E3,6.411900249E1 +2.026802000E3,6.060951858E1 +2.027066000E3,5.606119041E1 +2.027395000E3,5.099901519E1 +2.027693000E3,5.622472082E1 +2.027945000E3,5.354940616E1 +2.028237000E3,6.282566888E1 +2.028553000E3,5.775523802E1 +2.028868000E3,6.095006183E1 +2.029133000E3,6.333727439E1 +2.029399000E3,5.925545982E1 +2.029660000E3,6.045827699E1 +2.029962000E3,5.594587825E1 +2.030223000E3,5.708579081E1 +2.030478000E3,5.777704597E1 +2.030737000E3,5.406349508E1 +2.030990000E3,5.544037764E1 +2.031246000E3,5.912518025E1 +2.031508000E3,5.924806900E1 +2.031864000E3,6.105667153E1 +2.032110000E3,5.838466956E1 +2.032350000E3,5.923100201E1 +2.032598000E3,6.024290558E1 +2.032866000E3,5.971089342E1 +2.033112000E3,5.478665804E1 +2.033351000E3,5.966531235E1 +2.033644000E3,5.755565544E1 +2.033892000E3,5.982004182E1 +2.034190000E3,5.797424789E1 +2.034425000E3,5.856301863E1 +2.034717000E3,6.325478319E1 +2.035053000E3,6.168254294E1 +2.035364000E3,6.188857455E1 +2.035619000E3,6.156039581E1 +2.035901000E3,6.235770270E1 +2.036169000E3,6.262779828E1 +2.036471000E3,6.142542176E1 +2.036764000E3,5.923845966E1 +2.037022000E3,5.827266837E1 +2.037307000E3,6.314641141E1 +2.037615000E3,5.460230698E1 +2.037870000E3,5.396400232E1 +2.038120000E3,5.561122002E1 +2.038463000E3,5.928400391E1 +2.038767000E3,5.668934966E1 +2.039069000E3,5.831653467E1 +2.039316000E3,5.267103167E1 +2.039622000E3,5.557794232E1 +2.039859000E3,5.543606804E1 +2.040196000E3,5.836770370E1 +2.040499000E3,5.678092478E1 +2.040751000E3,5.612506795E1 +2.041024000E3,5.868430679E1 +2.041274000E3,5.264121586E1 +2.041581000E3,5.828774790E1 +2.041841000E3,5.647338053E1 +2.042088000E3,6.053709731E1 +2.042403000E3,5.614689861E1 +2.042691000E3,5.714845923E1 +2.042944000E3,5.256418368E1 +2.043191000E3,5.601486494E1 +2.043466000E3,5.810869150E1 +2.043715000E3,5.529893852E1 +2.043979000E3,5.708153712E1 +2.044245000E3,5.690179830E1 +2.044568000E3,5.994555064E1 +2.044825000E3,6.172126409E1 +2.045096000E3,6.015473895E1 +2.045377000E3,5.509344178E1 +2.045629000E3,5.568915719E1 +2.045902000E3,5.938619751E1 +2.046155000E3,5.534852098E1 +2.046409000E3,5.905391706E1 +2.046693000E3,5.250115201E1 +2.046947000E3,5.587771233E1 +2.047277000E3,5.599930929E1 +2.047517000E3,5.586822515E1 +2.047803000E3,5.740436533E1 +2.048105000E3,5.413600866E1 +2.048476000E3,5.595836709E1 +2.048737000E3,5.982743631E1 +2.048992000E3,6.001131240E1 +2.049305000E3,5.629713962E1 +2.049568000E3,5.505265617E1 +2.049904000E3,5.686004167E1 +2.050199000E3,6.078932545E1 +2.050470000E3,5.919030857E1 +2.050773000E3,5.640754436E1 +2.051052000E3,5.864124078E1 +2.051311000E3,5.683150656E1 +2.051642000E3,5.391893615E1 +2.051926000E3,4.513639699E1 +2.052174000E3,5.750824000E1 +2.052467000E3,5.945309138E1 +2.052703000E3,6.260915402E1 +2.052981000E3,6.017408744E1 +2.053276000E3,6.158293130E1 +2.053516000E3,6.279041899E1 +2.053759000E3,6.005362243E1 +2.054030000E3,5.776050932E1 +2.054357000E3,5.906607942E1 +2.054642000E3,6.002924771E1 +2.054978000E3,5.708591672E1 +2.055267000E3,5.932996992E1 +2.055552000E3,5.830703641E1 +2.055812000E3,5.428102985E1 +2.056063000E3,5.893384546E1 +2.056382000E3,6.028305726E1 +2.056682000E3,5.904357096E1 +2.056923000E3,6.015407432E1 +2.057171000E3,5.801677968E1 +2.057418000E3,6.561794532E1 +2.057665000E3,6.751214025E1 +2.057959000E3,5.899748641E1 +2.058279000E3,5.616162884E1 +2.058571000E3,5.813941707E1 +2.058834000E3,6.236684118E1 +2.059132000E3,6.058455193E1 +2.059376000E3,6.004963560E1 +2.059687000E3,6.255152045E1 +2.059984000E3,6.155697025E1 +2.060225000E3,6.124056229E1 +2.060517000E3,6.072549607E1 +2.060756000E3,6.119225814E1 +2.061060000E3,5.953618039E1 +2.061302000E3,5.869582322E1 +2.061578000E3,6.248269042E1 +2.061841000E3,6.070173510E1 +2.062089000E3,6.023992255E1 +2.062337000E3,5.848175462E1 +2.062607000E3,5.092907116E1 +2.062859000E3,5.442118268E1 +2.063124000E3,5.298599309E1 +2.063425000E3,6.030333428E1 +2.063671000E3,5.835700379E1 +2.063954000E3,5.943633389E1 +2.064268000E3,5.761479859E1 +2.064577000E3,5.520238299E1 +2.064822000E3,5.901822557E1 +2.065074000E3,5.705952734E1 +2.065339000E3,6.136116330E1 +2.065603000E3,5.746483296E1 +2.065865000E3,5.867757380E1 +2.066141000E3,5.709322981E1 +2.066441000E3,5.775131141E1 +2.066691000E3,5.886237327E1 +2.067036000E3,5.617972984E1 +2.067288000E3,5.802507148E1 +2.067560000E3,6.044497816E1 +2.067891000E3,5.450044868E1 +2.068148000E3,5.616761260E1 +2.068412000E3,6.243097888E1 +2.068673000E3,5.783788439E1 +2.068946000E3,5.764761585E1 +2.069196000E3,5.683737954E1 +2.069468000E3,5.609890848E1 +2.069778000E3,5.465619904E1 +2.070034000E3,5.368960846E1 +2.070328000E3,6.032893819E1 +2.070574000E3,5.862927742E1 +2.070842000E3,5.635830209E1 +2.071101000E3,5.822198053E1 +2.071339000E3,5.691346983E1 +2.071597000E3,5.865778618E1 +2.071860000E3,5.810560725E1 +2.072128000E3,5.968009174E1 +2.072425000E3,5.833852533E1 +2.072667000E3,5.784540163E1 +2.072934000E3,5.644439458E1 +2.073184000E3,5.178260396E1 +2.073488000E3,5.751445421E1 +2.073769000E3,5.974800721E1 +2.074068000E3,6.534291023E1 +2.074348000E3,6.371076652E1 +2.074624000E3,6.156132937E1 +2.074877000E3,6.012113548E1 +2.075119000E3,6.026351151E1 +2.075377000E3,6.142675581E1 +2.075661000E3,6.194478144E1 +2.075914000E3,6.183865569E1 +2.076267000E3,6.387512541E1 +2.076547000E3,6.077311287E1 +2.076803000E3,6.130963963E1 +2.077056000E3,5.862622582E1 +2.077295000E3,5.463497219E1 +2.077610000E3,5.484231095E1 +2.077891000E3,6.099801434E1 +2.078171000E3,5.475621164E1 +2.078466000E3,5.955577801E1 +2.078709000E3,5.720097088E1 +2.078954000E3,5.661944912E1 +2.079224000E3,5.443336360E1 +2.079503000E3,5.917559782E1 +2.079800000E3,5.424380486E1 +2.080057000E3,6.013762169E1 +2.080307000E3,6.100643768E1 +2.080558000E3,6.205128007E1 +2.080810000E3,6.007904071E1 +2.081092000E3,6.423414837E1 +2.081354000E3,5.938817614E1 +2.081601000E3,6.006860062E1 +2.081845000E3,5.833570272E1 +2.082143000E3,5.962915676E1 +2.082396000E3,5.844615966E1 +2.082663000E3,5.932060291E1 +2.082921000E3,6.037844323E1 +2.083227000E3,5.719168160E1 +2.083487000E3,5.597578938E1 +2.083743000E3,5.236775830E1 +2.084062000E3,5.471900653E1 +2.084318000E3,5.178371688E1 +2.084618000E3,5.707729304E1 +2.084858000E3,5.526812689E1 +2.085154000E3,5.716405930E1 +2.085391000E3,5.478798233E1 +2.085687000E3,5.496315929E1 +2.085932000E3,5.701239101E1 +2.086228000E3,5.776438308E1 +2.086467000E3,5.628202894E1 +2.086760000E3,5.042244376E1 +2.087015000E3,5.775963511E1 +2.087362000E3,4.982890988E1 +2.087671000E3,4.785672217E1 +2.087922000E3,4.762697394E1 +2.088178000E3,5.046726223E1 +2.088438000E3,4.890262424E1 +2.088711000E3,5.501277631E1 +2.088981000E3,5.666001705E1 +2.089249000E3,6.014252161E1 +2.089513000E3,5.925311989E1 +2.089806000E3,6.173820636E1 +2.090063000E3,5.350884215E1 +2.090366000E3,5.736408779E1 +2.090744000E3,5.450936109E1 +2.091005000E3,5.763377323E1 +2.091253000E3,6.042269191E1 +2.091515000E3,5.484903903E1 +2.091757000E3,5.882101591E1 +2.092028000E3,5.833139845E1 +2.092280000E3,5.703430671E1 +2.092527000E3,5.247783814E1 +2.092809000E3,5.233323676E1 +2.093037000E3,5.202869643E1 +2.093354000E3,5.628845797E1 +2.093634000E3,5.325396544E1 +2.094006000E3,5.654992892E1 +2.094280000E3,5.713253789E1 +2.094541000E3,5.967664240E1 +2.094800000E3,5.750232678E1 +2.095069000E3,5.544480371E1 +2.095333000E3,5.462176641E1 +2.095596000E3,5.811248949E1 +2.095853000E3,6.196847972E1 +2.096192000E3,5.842850461E1 +2.096488000E3,5.597774452E1 +2.096726000E3,5.601282925E1 +2.097104000E3,5.625832805E1 +2.097364000E3,5.315488909E1 +2.097602000E3,5.287250653E1 +2.097844000E3,5.523708836E1 +2.098081000E3,5.724292600E1 +2.098340000E3,5.659511238E1 +2.098670000E3,5.675324149E1 +2.098945000E3,5.485884276E1 +2.099219000E3,5.694143956E1 +2.099469000E3,5.561655413E1 +2.099765000E3,5.844909410E1 +2.100011000E3,6.135621316E1 +2.100343000E3,5.968766012E1 +2.100584000E3,5.173347950E1 +2.100832000E3,5.415548255E1 +2.101090000E3,5.271968845E1 +2.101339000E3,5.007174890E1 +2.101624000E3,5.279525002E1 +2.101895000E3,5.358558767E1 +2.102197000E3,5.559048142E1 +2.102438000E3,5.476305303E1 +2.102705000E3,5.237114911E1 +2.102947000E3,5.014972007E1 +2.103218000E3,4.895902935E1 +2.103469000E3,5.192053997E1 +2.103853000E3,4.647138436E1 +2.104101000E3,4.837766327E1 +2.104448000E3,5.088929287E1 +2.104740000E3,5.561591777E1 +2.104997000E3,5.440319534E1 +2.105260000E3,5.347164399E1 +2.105561000E3,5.151610441E1 +2.105813000E3,5.075382634E1 +2.106121000E3,5.244425755E1 +2.106357000E3,5.269617654E1 +2.106663000E3,5.149027406E1 +2.106954000E3,5.659456733E1 +2.107266000E3,5.282561460E1 +2.107606000E3,5.407918273E1 +2.107883000E3,5.643922092E1 +2.108164000E3,5.169657105E1 +2.108480000E3,5.713744586E1 +2.108748000E3,5.931186178E1 +2.109003000E3,5.645689600E1 +2.109252000E3,5.322874786E1 +2.109552000E3,5.363731782E1 +2.109821000E3,5.353815648E1 +2.110077000E3,5.445551750E1 +2.110418000E3,5.491110228E1 +2.110669000E3,5.291647814E1 +2.110921000E3,5.202914132E1 +2.111180000E3,5.363241827E1 +2.111479000E3,5.566624291E1 +2.111721000E3,5.645238247E1 +2.112027000E3,5.458458697E1 +2.112294000E3,5.469783372E1 +2.112597000E3,5.582449562E1 +2.112854000E3,5.595416398E1 +2.113105000E3,5.113785865E1 +2.113352000E3,6.248282803E1 +2.113711000E3,5.880495226E1 +2.113968000E3,5.941805617E1 +2.114248000E3,5.561632009E1 +2.114507000E3,5.501810850E1 +2.114754000E3,5.936291007E1 +2.115053000E3,6.127733734E1 +2.115321000E3,6.057491273E1 +2.115616000E3,6.127323198E1 +2.115893000E3,5.760488174E1 +2.116193000E3,6.030881831E1 +2.116434000E3,5.967518116E1 +2.116722000E3,5.720938908E1 +2.117066000E3,5.605932878E1 +2.117338000E3,6.068190844E1 +2.117598000E3,5.400374866E1 +2.117892000E3,5.332007667E1 +2.118133000E3,4.991979059E1 +2.118428000E3,5.700198654E1 +2.118666000E3,5.878418983E1 +2.118922000E3,5.703766890E1 +2.119230000E3,5.731012811E1 +2.119515000E3,5.865622099E1 +2.119741000E3,5.772295719E1 +2.120015000E3,5.851982083E1 +2.120322000E3,5.958645129E1 +2.120616000E3,6.233814130E1 +2.120861000E3,6.002711287E1 +2.121162000E3,5.939190004E1 +2.121437000E3,5.758195225E1 +2.121690000E3,5.564648712E1 +2.121946000E3,5.336629511E1 +2.122218000E3,5.199121426E1 +2.122476000E3,5.906368298E1 +2.122759000E3,5.917930836E1 +2.123014000E3,5.824882047E1 +2.123266000E3,5.770359270E1 +2.123492000E3,5.695638802E1 +2.123777000E3,5.720151485E1 +2.124027000E3,6.045411810E1 +2.124327000E3,5.540258870E1 +2.124575000E3,5.828000252E1 +2.124835000E3,5.500577731E1 +2.125106000E3,5.926473821E1 +2.125354000E3,5.472888078E1 +2.125611000E3,5.530970077E1 +2.125862000E3,5.595037084E1 +2.126117000E3,5.439239133E1 +2.126432000E3,5.961943996E1 +2.126692000E3,5.841091801E1 +2.126944000E3,5.863137443E1 +2.127282000E3,5.731398304E1 +2.127577000E3,5.665374527E1 +2.127843000E3,5.476493539E1 +2.128129000E3,5.580929465E1 +2.128437000E3,5.565551021E1 +2.128739000E3,5.869101147E1 +2.129026000E3,5.827114612E1 +2.129307000E3,5.507536074E1 +2.129577000E3,5.532393691E1 +2.129934000E3,5.233850306E1 +2.130215000E3,5.514372423E1 +2.130466000E3,5.757947445E1 +2.130714000E3,6.126034226E1 +2.131015000E3,6.074916673E1 +2.131279000E3,5.864911171E1 +2.131564000E3,5.680524431E1 +2.131825000E3,6.002252741E1 +2.132078000E3,5.953076168E1 +2.132390000E3,6.027427680E1 +2.132647000E3,5.955779136E1 +2.132902000E3,5.835756058E1 +2.133223000E3,6.286787860E1 +2.133471000E3,6.057291506E1 +2.133724000E3,5.893793659E1 +2.134002000E3,5.508555746E1 +2.134257000E3,5.619881839E1 +2.134512000E3,5.505764062E1 +2.134784000E3,5.808922162E1 +2.135054000E3,5.334583096E1 +2.135313000E3,5.298019930E1 +2.135595000E3,5.025342296E1 +2.135812000E3,5.409382682E1 +2.136057000E3,5.580950424E1 +2.136332000E3,5.523743716E1 +2.136661000E3,5.499005541E1 +2.136917000E3,5.745623005E1 +2.137196000E3,5.149169849E1 +2.137449000E3,5.261206885E1 +2.137711000E3,5.487518376E1 +2.138022000E3,5.898871991E1 +2.138270000E3,5.852026830E1 +2.138564000E3,5.868858262E1 +2.138802000E3,5.736353209E1 +2.139066000E3,5.529465652E1 +2.139332000E3,5.762578865E1 +2.139672000E3,5.790185487E1 +2.139930000E3,5.792373283E1 +2.140278000E3,5.597904656E1 +2.140535000E3,5.355980456E1 +2.140856000E3,5.411887429E1 +2.141146000E3,5.094976839E1 +2.141467000E3,5.658279242E1 +2.141735000E3,6.043792292E1 +2.142041000E3,5.996632022E1 +2.142276000E3,6.230155616E1 +2.142526000E3,6.102528468E1 +2.142783000E3,5.770338577E1 +2.143124000E3,5.827243883E1 +2.143406000E3,5.367650147E1 +2.143645000E3,5.777094487E1 +2.143915000E3,5.851595499E1 +2.144175000E3,5.573729509E1 +2.144454000E3,5.467626304E1 +2.144700000E3,5.699765591E1 +2.144968000E3,5.692170932E1 +2.145246000E3,6.030210344E1 +2.145550000E3,5.876913066E1 +2.145797000E3,5.698149837E1 +2.146042000E3,5.982717784E1 +2.146368000E3,5.905293636E1 +2.146676000E3,5.947032966E1 +2.146922000E3,5.910471730E1 +2.147225000E3,6.065874797E1 +2.147524000E3,5.680135408E1 +2.147831000E3,5.451199701E1 +2.148090000E3,5.301325775E1 +2.148365000E3,5.466040661E1 +2.148665000E3,5.658013689E1 +2.148952000E3,5.410667827E1 +2.149249000E3,5.788683658E1 +2.149597000E3,5.873903650E1 +2.149910000E3,5.314379433E1 +2.150150000E3,5.564952940E1 +2.150451000E3,6.000220607E1 +2.150691000E3,6.235870620E1 +2.150965000E3,6.387461990E1 +2.151194000E3,6.491001134E1 +2.151449000E3,5.932544814E1 +2.151756000E3,6.117684525E1 +2.152011000E3,6.059885605E1 +2.152282000E3,6.303246617E1 +2.152596000E3,6.399854390E1 +2.152961000E3,6.063746268E1 +2.153223000E3,6.122116723E1 +2.153495000E3,5.809397592E1 +2.153749000E3,5.903784259E1 +2.153999000E3,6.047826717E1 +2.154283000E3,5.846467986E1 +2.154537000E3,6.226879102E1 +2.154785000E3,5.980611807E1 +2.155079000E3,5.787450321E1 +2.155375000E3,5.676059962E1 +2.155616000E3,5.395823696E1 +2.155912000E3,5.953639288E1 +2.156221000E3,5.971614724E1 +2.156510000E3,6.039969801E1 +2.156758000E3,5.898776738E1 +2.157015000E3,6.100474003E1 +2.157289000E3,5.750129682E1 +2.157591000E3,5.995540643E1 +2.157844000E3,5.628303244E1 +2.158104000E3,5.892686601E1 +2.158366000E3,5.712884748E1 +2.158667000E3,5.727860760E1 +2.158932000E3,5.313556696E1 +2.159288000E3,5.635583768E1 +2.159555000E3,5.929473664E1 +2.159809000E3,5.396180560E1 +2.160112000E3,5.807023999E1 +2.160354000E3,5.639240346E1 +2.160608000E3,5.917728814E1 +2.160855000E3,5.429000157E1 +2.161130000E3,5.397827395E1 +2.161395000E3,5.647751800E1 +2.161656000E3,5.342605760E1 +2.162007000E3,5.324373839E1 +2.162263000E3,5.439383591E1 +2.162517000E3,5.727066505E1 +2.162888000E3,5.995593964E1 +2.163140000E3,6.130649482E1 +2.163392000E3,6.228130821E1 +2.163644000E3,6.279179388E1 +2.163938000E3,5.559527300E1 +2.164178000E3,5.200550071E1 +2.164481000E3,5.797363767E1 +2.164757000E3,5.902554678E1 +2.165040000E3,5.834647622E1 +2.165303000E3,5.713285380E1 +2.165575000E3,6.343633700E1 +2.165850000E3,5.896208706E1 +2.166219000E3,5.624501583E1 +2.166483000E3,5.696603075E1 +2.166769000E3,5.736978604E1 +2.167027000E3,5.837475894E1 +2.167278000E3,5.768129207E1 +2.167593000E3,5.660761865E1 +2.167856000E3,5.680076310E1 +2.168110000E3,5.883044450E1 +2.168385000E3,5.772028600E1 +2.168649000E3,5.342008664E1 +2.168914000E3,5.359113324E1 +2.169168000E3,5.849769703E1 +2.169536000E3,6.267181821E1 +2.169793000E3,5.719603223E1 +2.170040000E3,5.397233107E1 +2.170287000E3,4.861027503E1 +2.170579000E3,5.741564583E1 +2.170822000E3,6.207812430E1 +2.171115000E3,5.827753689E1 +2.171365000E3,6.042202215E1 +2.171629000E3,5.516417228E1 +2.171895000E3,4.912315476E1 +2.172163000E3,4.718316305E1 +2.172446000E3,5.363129541E1 +2.172813000E3,5.322378335E1 +2.173087000E3,5.228499961E1 +2.173349000E3,5.364722432E1 +2.173618000E3,5.964999675E1 +2.173917000E3,6.116591719E1 +2.174174000E3,5.668310324E1 +2.174436000E3,5.538937699E1 +2.174688000E3,5.539330891E1 +2.174944000E3,5.678019084E1 +2.175197000E3,5.655985061E1 +2.175490000E3,6.211643319E1 +2.175751000E3,5.899842059E1 +2.176153000E3,6.042080027E1 +2.176454000E3,5.956376587E1 +2.176730000E3,5.896716838E1 +2.177048000E3,5.729778676E1 +2.177305000E3,5.512323216E1 +2.177616000E3,5.573124529E1 +2.177883000E3,5.390669828E1 +2.178139000E3,5.435017850E1 +2.178403000E3,5.275779180E1 +2.178672000E3,5.469054235E1 +2.178938000E3,5.701832565E1 +2.179201000E3,6.063134316E1 +2.179540000E3,6.461030243E1 +2.179799000E3,6.345934666E1 +2.180043000E3,6.255021373E1 +2.180348000E3,6.265836689E1 +2.180640000E3,6.125083403E1 +2.180878000E3,5.721943432E1 +2.181125000E3,5.584429631E1 +2.181407000E3,5.679219567E1 +2.181647000E3,5.506189996E1 +2.181962000E3,5.950753578E1 +2.182227000E3,5.684863204E1 +2.182499000E3,5.318048388E1 +2.182825000E3,5.856807028E1 +2.183124000E3,6.201159961E1 +2.183360000E3,5.994279105E1 +2.183661000E3,6.155626338E1 +2.183904000E3,5.760612799E1 +2.184197000E3,5.557219911E1 +2.184436000E3,5.720299401E1 +2.184730000E3,5.496492062E1 +2.184965000E3,5.287669523E1 +2.185272000E3,5.534018340E1 +2.185572000E3,5.047897567E1 +2.185897000E3,5.289532450E1 +2.186149000E3,5.169587435E1 +2.186428000E3,5.811856565E1 +2.186722000E3,5.829930976E1 +2.187016000E3,5.767171180E1 +2.187297000E3,5.167293983E1 +2.187542000E3,5.634712904E1 +2.187793000E3,5.452173951E1 +2.188038000E3,5.242356157E1 +2.188332000E3,5.476946331E1 +2.188570000E3,5.506415879E1 +2.188807000E3,5.842757277E1 +2.189123000E3,5.579731569E1 +2.189400000E3,5.735467547E1 +2.189707000E3,5.510643622E1 +2.189947000E3,5.399605596E1 +2.190247000E3,5.231812124E1 +2.190482000E3,5.397423501E1 +2.190722000E3,5.467291530E1 +2.190972000E3,5.750340972E1 +2.191219000E3,5.451621797E1 +2.191527000E3,5.544744059E1 +2.191775000E3,5.570906247E1 +2.192040000E3,5.570238792E1 +2.192395000E3,5.704729905E1 +2.192674000E3,5.662202644E1 +2.192969000E3,6.130245708E1 +2.193206000E3,5.842239411E1 +2.193505000E3,5.813812757E1 +2.193745000E3,5.643123308E1 +2.194038000E3,5.810403241E1 +2.194275000E3,5.863690353E1 +2.194574000E3,5.519980518E1 +2.194810000E3,5.381530940E1 +2.195092000E3,5.781601666E1 +2.195335000E3,5.699265058E1 +2.195608000E3,5.477338243E1 +2.195929000E3,5.695412826E1 +2.196188000E3,5.575935497E1 +2.196439000E3,5.738570553E1 +2.196686000E3,6.194168224E1 +2.196969000E3,5.888525061E1 +2.197270000E3,5.830791470E1 +2.197516000E3,5.904778886E1 +2.197822000E3,5.987539712E1 +2.198117000E3,5.910637217E1 +2.198355000E3,5.676446576E1 +2.198673000E3,5.632729175E1 +2.198920000E3,5.826507178E1 +2.199227000E3,6.221847088E1 +2.199493000E3,6.023584539E1 +2.199739000E3,6.378124478E1 +2.199975000E3,6.457706819E1 +2.200218000E3,5.781084826E1 +2.200471000E3,5.833307765E1 +2.200715000E3,5.849295856E1 +2.200984000E3,5.695016071E1 +2.201255000E3,5.945608920E1 +2.201511000E3,5.923858391E1 +2.201821000E3,5.975381188E1 +2.202050000E3,5.657071344E1 +2.202297000E3,5.582353283E1 +2.202552000E3,5.634201272E1 +2.202803000E3,5.842061156E1 +2.203080000E3,5.511323996E1 +2.203339000E3,5.333816234E1 +2.203589000E3,5.586132206E1 +2.203867000E3,5.612282959E1 +2.204151000E3,5.390907932E1 +2.204405000E3,5.581501331E1 +2.204648000E3,5.691201261E1 +2.204938000E3,5.605209961E1 +2.205271000E3,5.337227455E1 +2.205520000E3,5.726868677E1 +2.205824000E3,5.678400386E1 +2.206068000E3,5.598615724E1 +2.206327000E3,6.245548090E1 +2.206634000E3,5.788335624E1 +2.206927000E3,5.672312442E1 +2.207166000E3,5.700846075E1 +2.207464000E3,5.693157148E1 +2.207703000E3,5.667671942E1 +2.207995000E3,5.655907845E1 +2.208344000E3,5.694003799E1 +2.208592000E3,5.812693102E1 +2.208844000E3,5.305590014E1 +2.209133000E3,5.963333488E1 +2.209376000E3,6.125764761E1 +2.209621000E3,5.708540532E1 +2.209865000E3,5.539532482E1 +2.210177000E3,6.086117928E1 +2.210432000E3,5.871599576E1 +2.210705000E3,5.720891289E1 +2.210929000E3,5.859137268E1 +2.211185000E3,5.492761595E1 +2.211566000E3,5.458369125E1 +2.211811000E3,5.704243717E1 +2.212094000E3,5.948204172E1 +2.212325000E3,5.442994388E1 +2.212570000E3,5.607391365E1 +2.212815000E3,5.349643391E1 +2.213089000E3,5.518134225E1 +2.213397000E3,5.879499176E1 +2.213659000E3,5.918920409E1 +2.213917000E3,6.317166487E1 +2.214205000E3,5.773325998E1 +2.214505000E3,6.021667659E1 +2.214834000E3,5.707564648E1 +2.215074000E3,5.411436798E1 +2.215412000E3,5.705541238E1 +2.215699000E3,6.721672427E1 +2.215946000E3,6.130402498E1 +2.216241000E3,5.914242022E1 +2.216493000E3,5.881747375E1 +2.216786000E3,5.920115687E1 +2.217030000E3,5.981753209E1 +2.217325000E3,5.379848698E1 +2.217566000E3,5.498057230E1 +2.217931000E3,5.647867672E1 +2.218210000E3,5.460935805E1 +2.218440000E3,5.579228446E1 +2.218740000E3,5.598523495E1 +2.218992000E3,5.501198671E1 +2.219248000E3,5.270876730E1 +2.219495000E3,5.711255338E1 +2.219767000E3,5.276578476E1 +2.220009000E3,6.171644376E1 +2.220307000E3,5.760035427E1 +2.220557000E3,6.039071701E1 +2.220820000E3,5.947563028E1 +2.221166000E3,5.781157464E1 +2.221459000E3,5.689764898E1 +2.221740000E3,5.361204154E1 +2.221998000E3,5.565584232E1 +2.222252000E3,6.236264054E1 +2.222508000E3,5.583706888E1 +2.222794000E3,5.998886151E1 +2.223038000E3,6.067027795E1 +2.223281000E3,5.953550256E1 +2.223512000E3,6.087865846E1 +2.223764000E3,5.880177247E1 +2.224056000E3,5.532032645E1 +2.224389000E3,5.110554887E1 +2.224697000E3,6.082114583E1 +2.224957000E3,6.332269799E1 +2.225225000E3,5.859152014E1 +2.225521000E3,6.312344162E1 +2.225760000E3,6.208500503E1 +2.226003000E3,6.030377984E1 +2.226280000E3,5.890306026E1 +2.226553000E3,6.412257006E1 +2.226813000E3,5.959239884E1 +2.227137000E3,5.603893495E1 +2.227460000E3,5.807576772E1 +2.227717000E3,6.034272760E1 +2.227950000E3,5.678924442E1 +2.228211000E3,5.767938832E1 +2.228489000E3,4.973605337E1 +2.228742000E3,5.227056153E1 +2.229007000E3,4.524576382E1 +2.229320000E3,5.163901012E1 +2.229633000E3,5.791269320E1 +2.229909000E3,5.832692980E1 +2.230223000E3,5.512940778E1 +2.230487000E3,5.639998631E1 +2.230845000E3,6.012111222E1 +2.231113000E3,6.632176219E1 +2.231407000E3,6.692769565E1 +2.231662000E3,6.409372191E1 +2.231945000E3,6.268702605E1 +2.232208000E3,6.192012265E1 +2.232460000E3,5.923306273E1 +2.232717000E3,5.726340446E1 +2.233005000E3,5.708270925E1 +2.233256000E3,6.172203942E1 +2.233510000E3,6.197059155E1 +2.233807000E3,6.691458644E1 +2.234160000E3,6.165007134E1 +2.234422000E3,6.172053486E1 +2.234714000E3,6.148833899E1 +2.234974000E3,6.190331921E1 +2.235253000E3,5.938090919E1 +2.235479000E3,6.223060920E1 +2.235722000E3,6.133640397E1 +2.236028000E3,6.400294095E1 +2.236269000E3,6.581462957E1 +2.236516000E3,6.094953675E1 +2.236828000E3,5.792232456E1 +2.237124000E3,5.750665846E1 +2.237367000E3,5.360734442E1 +2.237668000E3,5.239836763E1 +2.237914000E3,5.189659577E1 +2.238168000E3,5.779541581E1 +2.238431000E3,5.409030702E1 +2.238689000E3,5.064192938E1 +2.238941000E3,4.890244292E1 +2.239235000E3,4.958738332E1 +2.239486000E3,5.093509792E1 +2.239725000E3,5.421091975E1 +2.239970000E3,6.074883769E1 +2.240298000E3,5.611992467E1 +2.240604000E3,4.988071111E1 +2.240900000E3,4.952063126E1 +2.241187000E3,5.282005772E1 +2.241428000E3,5.672648648E1 +2.241685000E3,5.807464117E1 +2.241973000E3,5.565097745E1 +2.242224000E3,5.410363002E1 +2.242475000E3,5.548804216E1 +2.242720000E3,5.862108370E1 +2.242959000E3,5.101243713E1 +2.243259000E3,5.340920814E1 +2.243564000E3,5.471013043E1 +2.243801000E3,5.474536753E1 +2.244062000E3,5.454012147E1 +2.244333000E3,5.594751460E1 +2.244637000E3,5.486159050E1 +2.244913000E3,5.317501502E1 +2.245138000E3,5.100209753E1 +2.245397000E3,5.436827206E1 +2.245643000E3,5.483479867E1 +2.245916000E3,5.150486026E1 +2.246182000E3,5.049924887E1 +2.246449000E3,5.226067252E1 +2.246744000E3,5.389432372E1 +2.247057000E3,6.032791953E1 +2.247330000E3,5.966662928E1 +2.247666000E3,5.824962285E1 +2.247962000E3,5.700720490E1 +2.248202000E3,6.373200887E1 +2.248495000E3,6.648419927E1 +2.248743000E3,5.542652488E1 +2.249036000E3,5.256926371E1 +2.249272000E3,6.053195001E1 +2.249564000E3,4.959074314E1 +2.249800000E3,5.054384460E1 +2.250136000E3,5.008489809E1 +2.250431000E3,5.752384263E1 +2.250666000E3,5.367007636E1 +2.250931000E3,4.851936559E1 +2.251210000E3,4.965482987E1 +2.251497000E3,5.733244198E1 +2.251772000E3,5.370188093E1 +2.251997000E3,5.388650114E1 +2.252246000E3,5.331606518E1 +2.252516000E3,5.534782747E1 +2.252818000E3,5.271944154E1 +2.253047000E3,5.188974945E1 +2.253402000E3,5.040855384E1 +2.253689000E3,5.348452962E1 +2.253965000E3,5.685197701E1 +2.254240000E3,5.699151925E1 +2.254539000E3,5.217481719E1 +2.254794000E3,5.255063115E1 +2.255035000E3,5.258436032E1 +2.255283000E3,5.228429265E1 +2.255592000E3,5.187189315E1 +2.255851000E3,5.089851896E1 +2.256105000E3,5.323192817E1 +2.256387000E3,5.259240607E1 +2.256752000E3,5.489099725E1 +2.257016000E3,5.140699592E1 +2.257276000E3,5.478139635E1 +2.257600000E3,5.508183343E1 +2.257864000E3,5.539199709E1 +2.258160000E3,5.879728075E1 +2.258399000E3,6.145510373E1 +2.258645000E3,6.018082278E1 +2.258890000E3,6.203490998E1 +2.259131000E3,6.051201097E1 +2.259385000E3,5.741582229E1 +2.259629000E3,5.742200481E1 +2.259994000E3,5.205318956E1 +2.260295000E3,5.807019657E1 +2.260539000E3,5.843419178E1 +2.260841000E3,5.543595349E1 +2.261104000E3,5.208978608E1 +2.261348000E3,5.288295424E1 +2.261601000E3,5.593156434E1 +2.261856000E3,5.600009221E1 +2.262108000E3,5.581775464E1 +2.262358000E3,5.037081152E1 +2.262613000E3,5.059162693E1 +2.262916000E3,5.459372597E1 +2.263271000E3,5.581642194E1 +2.263548000E3,5.702582989E1 +2.263802000E3,5.531282217E1 +2.264049000E3,5.356460573E1 +2.264318000E3,5.682743962E1 +2.264564000E3,5.353127135E1 +2.264854000E3,5.962134934E1 +2.265080000E3,5.858968032E1 +2.265326000E3,5.681259568E1 +2.265625000E3,5.635120121E1 +2.265871000E3,5.433379551E1 +2.266211000E3,4.913835205E1 +2.266510000E3,5.243179137E1 +2.266783000E3,4.886918417E1 +2.267043000E3,4.774131335E1 +2.267292000E3,4.892025491E1 +2.267553000E3,4.710213612E1 +2.267796000E3,4.847827931E1 +2.268042000E3,5.624471818E1 +2.268281000E3,5.286977188E1 +2.268548000E3,5.683989489E1 +2.268800000E3,5.459251055E1 +2.269086000E3,5.272841607E1 +2.269389000E3,5.585343514E1 +2.269616000E3,5.452972356E1 +2.269865000E3,5.183250423E1 +2.270167000E3,4.733442261E1 +2.270442000E3,4.736450762E1 +2.270667000E3,4.430645798E1 +2.270915000E3,4.635257501E1 +2.271160000E3,4.914582650E1 +2.271407000E3,4.938157659E1 +2.271656000E3,4.788630853E1 +2.271896000E3,4.778446083E1 +2.272198000E3,5.081637081E1 +2.272482000E3,4.630509256E1 +2.272722000E3,4.551027932E1 +2.273048000E3,5.074623045E1 +2.273321000E3,4.689236254E1 +2.273562000E3,4.960242652E1 +2.273859000E3,5.310274016E1 +2.274104000E3,5.391997859E1 +2.274392000E3,4.854992165E1 +2.274648000E3,4.610161890E1 +2.274915000E3,5.325141064E1 +2.275196000E3,4.823989698E1 +2.275460000E3,5.167706762E1 +2.275772000E3,4.424461998E1 +2.276008000E3,4.957193490E1 +2.276258000E3,4.220429916E1 +2.276545000E3,4.614900045E1 +2.276809000E3,4.247109284E1 +2.277119000E3,5.104311310E1 +2.277385000E3,4.898949856E1 +2.277651000E3,5.033981280E1 +2.277920000E3,4.504255509E1 +2.278210000E3,4.851295637E1 +2.278452000E3,4.975001222E1 +2.278771000E3,5.198599663E1 +2.279101000E3,5.078534391E1 +2.279348000E3,5.056977572E1 +2.279614000E3,4.645427419E1 +2.279894000E3,4.837428182E1 +2.280121000E3,4.672417188E1 +2.280416000E3,4.338010131E1 +2.280671000E3,4.552410696E1 +2.280941000E3,4.107346609E1 +2.281195000E3,4.850760260E1 +2.281477000E3,4.449785068E1 +2.281730000E3,3.834743898E1 +2.282028000E3,3.160451104E1 +2.282275000E3,2.921367430E1 +2.282509000E3,3.929432216E1 +2.282771000E3,3.560833020E1 +2.283021000E3,4.204425230E1 +2.283277000E3,4.897505461E1 +2.283570000E3,4.492050546E1 +2.283802000E3,4.549624302E1 +2.284053000E3,4.703134831E1 +2.284302000E3,4.492779574E1 +2.284580000E3,5.573526523E1 +2.284888000E3,4.583204799E1 +2.285186000E3,3.987632497E1 +2.285426000E3,4.276483306E1 +2.285670000E3,4.196646636E1 +2.285974000E3,4.127295807E1 +2.286241000E3,3.392540836E1 +2.286513000E3,3.045281657E1 +2.286755000E3,3.056149566E1 +2.287058000E3,4.234115907E1 +2.287358000E3,4.148011807E1 +2.287615000E3,4.752316696E1 +2.287890000E3,4.261643768E1 +2.288186000E3,3.531031146E1 +2.288451000E3,3.336926272E1 +2.288830000E3,3.217663691E1 +2.289083000E3,3.280943829E1 +2.289350000E3,4.037024361E1 +2.289606000E3,4.463743016E1 +2.289870000E3,3.926930450E1 +2.290142000E3,3.549021170E1 +2.290376000E3,3.657210104E1 +2.290669000E3,3.609483404E1 +2.290917000E3,3.935001060E1 +2.291190000E3,3.968762383E1 +2.291417000E3,3.622062011E1 +2.291698000E3,5.052972627E1 +2.292019000E3,4.472329620E1 +2.292314000E3,3.528869928E1 +2.292580000E3,3.171318762E1 +2.292867000E3,3.293682859E1 +2.293112000E3,2.980662334E1 +2.293408000E3,3.108877030E1 +2.293645000E3,3.411108767E1 +2.293948000E3,2.929195023E1 +2.294231000E3,2.830259325E1 +2.294484000E3,2.905088910E1 +2.294732000E3,3.046102835E1 +2.295049000E3,2.679058069E1 +2.295347000E3,2.620731663E1 +2.295594000E3,3.509528145E1 +2.295836000E3,2.657946529E1 +2.296130000E3,2.511368258E1 +2.296378000E3,2.555955915E1 +2.296634000E3,2.785949260E1 +2.296875000E3,2.654407944E1 +2.297117000E3,3.658368449E1 +2.297412000E3,3.412054652E1 +2.297648000E3,3.448252102E1 +2.297956000E3,3.528486686E1 +2.298205000E3,3.265291425E1 +2.298494000E3,2.963788314E1 +2.298798000E3,3.350933300E1 +2.299085000E3,3.038301619E1 +2.299338000E3,3.357142506E1 +2.299610000E3,4.744800671E1 +2.299868000E3,3.435626076E1 +2.300142000E3,3.368274389E1 +2.300402000E3,2.881246111E1 +2.300655000E3,3.097762310E1 +2.300898000E3,2.947567056E1 +2.301182000E3,3.214187359E1 +2.301423000E3,3.421070745E1 +2.301786000E3,5.117970534E1 +2.302087000E3,5.037784077E1 +2.302335000E3,5.283937176E1 +2.302644000E3,5.164119106E1 +2.302941000E3,5.300709748E1 +2.303240000E3,4.713488810E1 +2.303488000E3,4.524114677E1 +2.303739000E3,3.080285972E1 +2.304022000E3,2.293405577E1 +2.304254000E3,2.235464386E1 +2.304552000E3,2.949911358E1 +2.304876000E3,4.141349798E1 +2.305182000E3,4.156611078E1 +2.305491000E3,4.347125429E1 +2.305797000E3,4.579894404E1 +2.306107000E3,4.646123013E1 +2.306358000E3,4.517240887E1 +2.306604000E3,5.308475174E1 +2.306870000E3,4.681256924E1 +2.307168000E3,2.942058533E1 +2.307450000E3,2.986114457E1 +2.307717000E3,3.195150356E1 +2.308031000E3,3.775567348E1 +2.308265000E3,3.823556499E1 +2.308570000E3,2.909536341E1 +2.308842000E3,3.096070220E1 +2.309098000E3,4.060687649E1 +2.309391000E3,4.820113946E1 +2.309687000E3,4.619079404E1 +2.309928000E3,4.304793785E1 +2.310216000E3,4.976144450E1 +2.310446000E3,4.779148829E1 +2.310686000E3,5.167703897E1 +2.310979000E3,3.773719280E1 +2.311248000E3,2.923821784E1 +2.311466000E3,2.654081756E1 +2.311763000E3,2.616593312E1 +2.312001000E3,2.460963519E1 +2.312285000E3,2.554564289E1 +2.312588000E3,3.572755404E1 +2.312856000E3,4.274835909E1 +2.313074000E3,4.355953935E1 +2.313375000E3,5.377727845E1 +2.313611000E3,5.435235813E1 +2.313893000E3,5.477010993E1 +2.314137000E3,5.142421895E1 +2.314483000E3,4.794670725E1 +2.314780000E3,5.149445419E1 +2.315019000E3,5.127618051E1 +2.315306000E3,4.939341348E1 +2.315533000E3,4.928824788E1 +2.315832000E3,4.617335031E1 +2.316069000E3,3.696469062E1 +2.316377000E3,4.552948924E1 +2.316627000E3,4.672923062E1 +2.316913000E3,4.504192742E1 +2.317215000E3,4.364234368E1 +2.317558000E3,4.231291453E1 +2.317853000E3,4.886663905E1 +2.318118000E3,4.492895691E1 +2.318412000E3,4.464681620E1 +2.318711000E3,4.698360224E1 +2.318950000E3,4.454369095E1 +2.319250000E3,4.409609939E1 +2.319494000E3,4.283121809E1 +2.319793000E3,4.398770219E1 +2.320040000E3,4.728522548E1 +2.320336000E3,4.533798443E1 +2.320660000E3,4.548359371E1 +2.320908000E3,4.366718291E1 +2.321152000E3,5.139935964E1 +2.321408000E3,4.747980864E1 +2.321709000E3,3.867643032E1 +2.321952000E3,4.294445900E1 +2.322196000E3,4.336333736E1 +2.322445000E3,3.890531131E1 +2.322682000E3,4.087281677E1 +2.322980000E3,3.979668464E1 +2.323225000E3,4.157042707E1 +2.323553000E3,4.515881082E1 +2.323886000E3,3.868360739E1 +2.324184000E3,4.839319184E1 +2.324428000E3,4.298284223E1 +2.324669000E3,4.433761346E1 +2.324987000E3,4.011512195E1 +2.325233000E3,3.478551365E1 +2.325486000E3,4.180203002E1 +2.325789000E3,4.323726184E1 +2.326086000E3,3.985791110E1 +2.326333000E3,3.946244529E1 +2.326667000E3,4.066537977E1 +2.326925000E3,3.986903649E1 +2.327223000E3,4.142461274E1 +2.327521000E3,3.461788217E1 +2.327778000E3,3.326602717E1 +2.328102000E3,4.357074645E1 +2.328367000E3,5.496493564E1 +2.328618000E3,4.413482695E1 +2.328920000E3,4.170999616E1 +2.329183000E3,4.107694173E1 +2.329486000E3,5.342371220E1 +2.329729000E3,5.103134188E1 +2.330028000E3,4.716459977E1 +2.330382000E3,4.916498276E1 +2.330642000E3,4.801561309E1 +2.330930000E3,4.860033329E1 +2.331211000E3,5.037441690E1 +2.331463000E3,5.227972551E1 +2.331719000E3,4.516533742E1 +2.331971000E3,4.623606604E1 +2.332268000E3,3.207985320E1 +2.332513000E3,3.485208029E1 +2.332801000E3,4.367306984E1 +2.333109000E3,4.764897626E1 +2.333397000E3,4.844411921E1 +2.333779000E3,4.624834459E1 +2.334088000E3,4.492130047E1 +2.334331000E3,4.172849812E1 +2.334618000E3,4.243441154E1 +2.334859000E3,4.155300890E1 +2.335165000E3,3.508017133E1 +2.335414000E3,3.102497597E1 +2.335689000E3,3.346102792E1 +2.335938000E3,2.980210924E1 +2.336237000E3,2.815695425E1 +2.336480000E3,4.530841757E1 +2.336824000E3,4.476742737E1 +2.337075000E3,4.460293889E1 +2.337332000E3,5.054872999E1 +2.337583000E3,4.962100100E1 +2.337845000E3,5.224787063E1 +2.338132000E3,4.845338775E1 +2.338374000E3,4.675501048E1 +2.338651000E3,4.806540095E1 +2.338903000E3,4.707869991E1 +2.339145000E3,4.747595477E1 +2.339395000E3,3.449909829E1 +2.339700000E3,4.619360178E1 +2.340033000E3,4.785644508E1 +2.340329000E3,4.721347586E1 +2.340579000E3,4.302992844E1 +2.340828000E3,4.629706327E1 +2.341122000E3,4.550319757E1 +2.341368000E3,4.510038554E1 +2.341611000E3,4.752886315E1 +2.341876000E3,4.524122211E1 +2.342135000E3,2.990386366E1 +2.342396000E3,3.647672774E1 +2.342679000E3,2.854891758E1 +2.342936000E3,3.995722191E1 +2.343310000E3,4.501906630E1 +2.343555000E3,4.872212276E1 +2.343839000E3,4.566863325E1 +2.344134000E3,3.946814595E1 +2.344384000E3,4.796193013E1 +2.344656000E3,4.858552009E1 +2.344961000E3,4.902627763E1 +2.345257000E3,4.467711671E1 +2.345498000E3,3.756709071E1 +2.345764000E3,2.964206509E1 +2.346064000E3,4.283044167E1 +2.346415000E3,4.191014925E1 +2.346743000E3,4.910031818E1 +2.347021000E3,5.022624274E1 +2.347337000E3,5.257970130E1 +2.347586000E3,4.764257555E1 +2.347831000E3,4.353349182E1 +2.348126000E3,4.318604201E1 +2.348436000E3,4.825752031E1 +2.348710000E3,4.464987037E1 +2.348968000E3,4.690302679E1 +2.349225000E3,4.464063657E1 +2.349495000E3,5.114524492E1 +2.349740000E3,4.345049547E1 +2.350133000E3,4.655800825E1 +2.350382000E3,4.419356370E1 +2.350688000E3,4.308388818E1 +2.350960000E3,4.964188075E1 +2.351269000E3,5.137042419E1 +2.351542000E3,4.751708919E1 +2.351836000E3,3.239228651E1 +2.352067000E3,3.331178705E1 +2.352357000E3,4.628654550E1 +2.352625000E3,4.653844798E1 +2.352938000E3,4.419734850E1 +2.353231000E3,3.771763539E1 +2.353458000E3,3.489550836E1 +2.353713000E3,2.965581776E1 +2.353962000E3,3.457100474E1 +2.354201000E3,3.291595658E1 +2.354446000E3,2.791603976E1 +2.354711000E3,3.307930362E1 +2.355027000E3,5.311162000E1 +2.355290000E3,4.688373373E1 +2.355581000E3,3.663543876E1 +2.355868000E3,2.834403560E1 +2.356176000E3,5.001680718E1 +2.356518000E3,5.349221251E1 +2.356780000E3,5.234097025E1 +2.357043000E3,4.476475434E1 +2.357349000E3,5.160193390E1 +2.357584000E3,4.375385010E1 +2.357840000E3,3.709166207E1 +2.358125000E3,2.927191182E1 +2.358378000E3,4.114289062E1 +2.358676000E3,4.266518399E1 +2.358921000E3,4.641380631E1 +2.359210000E3,4.551221179E1 +2.359545000E3,4.099683883E1 +2.359801000E3,5.202602500E1 +2.360072000E3,5.207875379E1 +2.360343000E3,4.670310433E1 +2.360619000E3,4.619168123E1 +2.360865000E3,4.348453495E1 +2.361113000E3,4.603882932E1 +2.361353000E3,4.061885274E1 +2.361649000E3,4.873355826E1 +2.361884000E3,4.796347566E1 +2.362174000E3,4.419543811E1 +2.362420000E3,4.412529768E1 +2.362674000E3,4.315515456E1 +2.363006000E3,3.718353950E1 +2.363303000E3,4.131746877E1 +2.363556000E3,3.462830696E1 +2.363825000E3,3.224809166E1 +2.364105000E3,2.946532539E1 +2.364420000E3,4.082560353E1 +2.364671000E3,4.169760242E1 +2.364916000E3,4.728483165E1 +2.365158000E3,4.384961396E1 +2.365493000E3,3.327447630E1 +2.365797000E3,2.406470586E1 +2.366141000E3,2.410271882E1 +2.366422000E3,4.124818432E1 +2.366699000E3,4.300386829E1 +2.366994000E3,4.592409288E1 +2.367239000E3,4.402074721E1 +2.367492000E3,4.331525310E1 +2.367744000E3,4.351543939E1 +2.368045000E3,4.861325913E1 +2.368277000E3,4.345520025E1 +2.368543000E3,5.037549285E1 +2.368790000E3,3.455268589E1 +2.369034000E3,3.454484220E1 +2.369300000E3,3.436570372E1 +2.369544000E3,3.180799867E1 +2.369820000E3,4.460893996E1 +2.370091000E3,5.635981603E1 +2.370383000E3,4.932803438E1 +2.370635000E3,5.123791361E1 +2.370939000E3,4.749913119E1 +2.371193000E3,4.606624254E1 +2.371498000E3,4.453668838E1 +2.371779000E3,4.424564317E1 +2.372081000E3,5.022357768E1 +2.372347000E3,4.983363592E1 +2.372720000E3,4.311987242E1 +2.372969000E3,4.071927446E1 +2.373234000E3,3.624584431E1 +2.373535000E3,3.338407859E1 +2.373777000E3,2.744030282E1 +2.374025000E3,4.017686066E1 +2.374281000E3,4.153799732E1 +2.374537000E3,5.163713220E1 +2.374786000E3,4.970373114E1 +2.375033000E3,4.601563593E1 +2.375284000E3,4.943210146E1 +2.375577000E3,5.208741018E1 +2.375935000E3,4.780129348E1 +2.376167000E3,4.632707744E1 +2.376478000E3,5.008962536E1 +2.376734000E3,4.691729314E1 +2.376987000E3,4.593220796E1 +2.377250000E3,4.703621615E1 +2.377550000E3,4.863501898E1 +2.377838000E3,4.747349412E1 +2.378102000E3,4.430216971E1 +2.378373000E3,5.038477253E1 +2.378648000E3,4.679597376E1 +2.378873000E3,3.998762784E1 +2.379232000E3,4.140472709E1 +2.379480000E3,3.803559367E1 +2.379735000E3,4.292956565E1 +2.379993000E3,3.275484639E1 +2.380260000E3,3.159298587E1 +2.380513000E3,3.066195183E1 +2.380756000E3,4.846258942E1 +2.381012000E3,4.617374426E1 +2.381278000E3,4.338282331E1 +2.381580000E3,2.990070560E1 +2.381878000E3,3.384826320E1 +2.382127000E3,4.352773294E1 +2.382476000E3,3.711143795E1 +2.382756000E3,4.818117865E1 +2.383001000E3,4.694356023E1 +2.383312000E3,4.713242320E1 +2.383556000E3,4.945634369E1 +2.383815000E3,3.710449888E1 +2.384109000E3,4.990714727E1 +2.384350000E3,5.101970483E1 +2.384663000E3,4.290224010E1 +2.384917000E3,3.958873166E1 +2.385203000E3,4.207919898E1 +2.385583000E3,3.937588823E1 +2.385864000E3,3.927490117E1 +2.386122000E3,3.708577985E1 +2.386378000E3,3.104425869E1 +2.386630000E3,2.579918418E1 +2.386935000E3,4.201717352E1 +2.387186000E3,4.469788103E1 +2.387445000E3,3.928301867E1 +2.387699000E3,4.425054811E1 +2.387999000E3,2.901032620E1 +2.388242000E3,2.431535493E1 +2.388542000E3,4.330806788E1 +2.388866000E3,4.587852948E1 +2.389138000E3,5.068663336E1 +2.389420000E3,5.151872270E1 +2.389764000E3,4.501157372E1 +2.390012000E3,4.508008781E1 +2.390288000E3,4.471818734E1 +2.390546000E3,4.453717168E1 +2.390828000E3,3.435610332E1 +2.391113000E3,3.644941891E1 +2.391398000E3,3.741409627E1 +2.391658000E3,4.311052254E1 +2.391963000E3,3.924877335E1 +2.392296000E3,3.956869731E1 +2.392537000E3,3.230149795E1 +2.392786000E3,2.941450360E1 +2.393103000E3,3.366208400E1 +2.393349000E3,2.633153711E1 +2.393653000E3,2.492589605E1 +2.393892000E3,3.518582310E1 +2.394201000E3,3.668564238E1 +2.394454000E3,3.528359554E1 +2.394744000E3,3.673717548E1 +2.395034000E3,2.851979476E1 +2.395378000E3,2.558396774E1 +2.395660000E3,3.919896752E1 +2.395930000E3,3.339597104E1 +2.396187000E3,3.351358057E1 +2.396431000E3,3.743420456E1 +2.396691000E3,4.220523227E1 +2.396991000E3,3.500233403E1 +2.397251000E3,3.475187142E1 +2.397513000E3,3.604068947E1 +2.397821000E3,4.628512725E1 +2.398126000E3,4.463943287E1 +2.398428000E3,4.311458163E1 +2.398781000E3,4.375329409E1 +2.399076000E3,3.749705009E1 +2.399316000E3,4.116349149E1 +2.399615000E3,4.694603167E1 +2.399852000E3,5.327851923E1 +2.400143000E3,5.028800274E1 +2.400380000E3,5.055607260E1 +2.400618000E3,4.184216649E1 +2.400901000E3,4.280576865E1 +2.401144000E3,4.285187037E1 +2.401437000E3,5.414729311E1 +2.401684000E3,5.760726428E1 +2.402102000E3,5.135939721E1 +2.402349000E3,5.519633184E1 +2.402608000E3,5.937895156E1 +2.402853000E3,5.722678447E1 +2.403146000E3,5.316891996E1 +2.403388000E3,5.231876976E1 +2.403684000E3,4.275047946E1 +2.403921000E3,4.497010821E1 +2.404216000E3,5.935375427E1 +2.404454000E3,5.736369919E1 +2.404707000E3,5.877823139E1 +2.404971000E3,6.138635894E1 +2.405219000E3,5.726046839E1 +2.405473000E3,5.213953550E1 +2.405771000E3,4.831408459E1 +2.406024000E3,5.195614478E1 +2.406276000E3,4.885485021E1 +2.406567000E3,4.806131720E1 +2.406866000E3,3.817379603E1 +2.407129000E3,3.496803230E1 +2.407401000E3,4.679161915E1 +2.407625000E3,4.456362030E1 +2.407878000E3,4.499112684E1 +2.408171000E3,4.695848411E1 +2.408491000E3,4.136053284E1 +2.408771000E3,3.435960184E1 +2.409033000E3,2.907775515E1 +2.409287000E3,3.179102298E1 +2.409536000E3,2.535492331E1 +2.409797000E3,2.893863695E1 +2.410015000E3,3.195695462E1 +2.410232000E3,2.883661354E1 +2.410481000E3,4.380812340E1 +2.410735000E3,5.435187737E1 +2.411017000E3,4.390478627E1 +2.411330000E3,4.136550501E1 +2.411572000E3,6.231552653E1 +2.411823000E3,4.988484474E1 +2.412072000E3,4.569499772E1 +2.412339000E3,5.207639469E1 +2.412605000E3,5.314724412E1 +2.412842000E3,5.014855129E1 +2.413111000E3,4.925815950E1 +2.413332000E3,5.545199009E1 +2.413608000E3,4.910878211E1 +2.413873000E3,5.481296501E1 +2.414229000E3,4.620355557E1 +2.414532000E3,4.757632406E1 +2.414792000E3,4.414835702E1 +2.415033000E3,4.178334533E1 +2.415296000E3,3.571558610E1 +2.415577000E3,3.622280285E1 +2.415839000E3,4.187963398E1 +2.416103000E3,4.120303067E1 +2.416426000E3,5.043875316E1 +2.416696000E3,4.738536839E1 +2.417006000E3,4.790698669E1 +2.417250000E3,4.717323409E1 +2.417613000E3,4.889624394E1 +2.417923000E3,4.615999302E1 +2.418209000E3,4.554232436E1 +2.418487000E3,4.963147342E1 +2.418748000E3,4.540077281E1 +2.419058000E3,4.402622058E1 +2.419355000E3,3.991430025E1 +2.419631000E3,5.699106589E1 +2.419880000E3,4.542610605E1 +2.420140000E3,5.871400849E1 +2.420387000E3,5.593691155E1 +2.420634000E3,5.642590944E1 +2.420987000E3,4.942882304E1 +2.421235000E3,5.122637091E1 +2.421504000E3,5.506353313E1 +2.421808000E3,4.974630362E1 +2.422098000E3,4.922446567E1 +2.422401000E3,4.711891494E1 +2.422653000E3,4.935851062E1 +2.422946000E3,5.223840607E1 +2.423180000E3,5.181747333E1 +2.423433000E3,5.106095739E1 +2.423699000E3,4.283067128E1 +2.424023000E3,4.620110870E1 +2.424283000E3,4.813646184E1 +2.424556000E3,4.673905704E1 +2.424833000E3,5.139038068E1 +2.425085000E3,4.187355918E1 +2.425330000E3,4.200690239E1 +2.425641000E3,4.094986905E1 +2.425891000E3,3.869951887E1 +2.426156000E3,4.295178440E1 +2.426411000E3,4.445235603E1 +2.426673000E3,4.180705342E1 +2.426915000E3,4.159918394E1 +2.427275000E3,5.193727105E1 +2.427528000E3,4.985744468E1 +2.427773000E3,5.143594155E1 +2.428021000E3,5.687627643E1 +2.428258000E3,4.984177159E1 +2.428554000E3,4.104898524E1 +2.428794000E3,3.740238657E1 +2.429102000E3,4.424577609E1 +2.429345000E3,5.022623751E1 +2.429627000E3,5.346928374E1 +2.429864000E3,4.448852620E1 +2.430156000E3,3.611387858E1 +2.430475000E3,3.592739777E1 +2.430726000E3,3.269867125E1 +2.431039000E3,4.089980433E1 +2.431331000E3,3.752068977E1 +2.431567000E3,3.972155082E1 +2.431870000E3,4.098289208E1 +2.432107000E3,4.068605974E1 +2.432406000E3,3.978950334E1 +2.432643000E3,3.435438837E1 +2.432933000E3,3.806187937E1 +2.433169000E3,3.613809925E1 +2.433407000E3,5.573542624E1 +2.433734000E3,4.812688919E1 +2.434035000E3,5.332611421E1 +2.434315000E3,5.453475878E1 +2.434557000E3,5.156731049E1 +2.434849000E3,4.452924889E1 +2.435086000E3,4.091217005E1 +2.435380000E3,3.495963916E1 +2.435633000E3,3.994418328E1 +2.435904000E3,5.345258512E1 +2.436200000E3,4.573029424E1 +2.436434000E3,4.666848361E1 +2.436802000E3,4.148612785E1 +2.437044000E3,3.785277445E1 +2.437301000E3,3.823545546E1 +2.437549000E3,3.883632471E1 +2.437839000E3,4.756553033E1 +2.438077000E3,4.282797221E1 +2.438369000E3,5.291874167E1 +2.438606000E3,5.394671897E1 +2.438862000E3,5.490926284E1 +2.439159000E3,5.465277565E1 +2.439395000E3,5.245345229E1 +2.439637000E3,4.823915254E1 +2.440022000E3,5.658050668E1 +2.440281000E3,5.255468157E1 +2.440546000E3,4.365897331E1 +2.440828000E3,4.187636724E1 +2.441125000E3,4.916172461E1 +2.441365000E3,5.038635874E1 +2.441645000E3,5.238005511E1 +2.441868000E3,4.979548238E1 +2.442114000E3,5.164563876E1 +2.442410000E3,4.795862612E1 +2.442694000E3,4.406311297E1 +2.442980000E3,4.461066687E1 +2.443265000E3,3.990213588E1 +2.443525000E3,4.270339676E1 +2.443815000E3,4.671533321E1 +2.444064000E3,4.922681237E1 +2.444311000E3,5.115751882E1 +2.444605000E3,4.659279655E1 +2.444851000E3,4.805254743E1 +2.445152000E3,4.646584218E1 +2.445447000E3,3.924248597E1 +2.445698000E3,3.657018775E1 +2.445976000E3,3.978585816E1 +2.446317000E3,5.134473527E1 +2.446569000E3,4.872028256E1 +2.446851000E3,4.793203365E1 +2.447088000E3,4.917648823E1 +2.447345000E3,4.514648035E1 +2.447599000E3,4.827609085E1 +2.447864000E3,5.009329877E1 +2.448138000E3,4.858127151E1 +2.448430000E3,4.885678900E1 +2.448726000E3,4.038666943E1 +2.448956000E3,3.788824065E1 +2.449214000E3,4.872306097E1 +2.449516000E3,5.112419798E1 +2.449767000E3,4.394357347E1 +2.450028000E3,5.187358067E1 +2.450298000E3,4.764520743E1 +2.450575000E3,5.323515688E1 +2.450844000E3,4.730661272E1 +2.451150000E3,5.022143967E1 +2.451400000E3,4.244080150E1 +2.451697000E3,4.540622562E1 +2.452002000E3,4.987171470E1 +2.452273000E3,4.928771096E1 +2.452519000E3,4.415614577E1 +2.452847000E3,4.529816891E1 +2.453138000E3,3.130480949E1 +2.453407000E3,3.727195618E1 +2.453707000E3,4.218798188E1 +2.453975000E3,3.196426842E1 +2.454240000E3,2.986758668E1 +2.454534000E3,4.365366219E1 +2.454795000E3,4.363233606E1 +2.455054000E3,4.576258560E1 +2.455297000E3,4.600510844E1 +2.455546000E3,5.143992334E1 +2.455816000E3,4.451792491E1 +2.456172000E3,3.834658463E1 +2.456438000E3,4.961865906E1 +2.456716000E3,4.301133302E1 +2.457025000E3,5.185950840E1 +2.457284000E3,4.578127088E1 +2.457582000E3,4.860789001E1 +2.457857000E3,4.548301241E1 +2.458087000E3,5.726595471E1 +2.458343000E3,4.581143143E1 +2.458590000E3,4.593076535E1 +2.458898000E3,4.646845677E1 +2.459143000E3,4.385664195E1 +2.459499000E3,3.921291428E1 +2.459756000E3,4.336490005E1 +2.460079000E3,5.059416731E1 +2.460323000E3,5.383728406E1 +2.460609000E3,4.336002656E1 +2.460894000E3,3.810358455E1 +2.461148000E3,4.341384577E1 +2.461406000E3,4.240002850E1 +2.461668000E3,4.220171306E1 +2.461957000E3,4.165441002E1 +2.462218000E3,4.110791112E1 +2.462543000E3,3.718059239E1 +2.462873000E3,4.490190793E1 +2.463162000E3,4.449127269E1 +2.463461000E3,5.110192526E1 +2.463709000E3,4.670759724E1 +2.464024000E3,4.554197086E1 +2.464345000E3,4.295638115E1 +2.464598000E3,4.260186095E1 +2.464844000E3,3.838281454E1 +2.465094000E3,4.864552318E1 +2.465348000E3,4.722694913E1 +2.465597000E3,5.723123112E1 +2.465970000E3,5.678247819E1 +2.466226000E3,5.304857482E1 +2.466490000E3,5.799491543E1 +2.466745000E3,5.566332539E1 +2.467000000E3,5.532803606E1 +2.467301000E3,5.480406224E1 +2.467518000E3,5.281426808E1 +2.467773000E3,5.319750336E1 +2.468030000E3,4.504180471E1 +2.468309000E3,4.011552860E1 +2.468536000E3,3.286668959E1 +2.468782000E3,5.187437917E1 +2.469159000E3,5.342027818E1 +2.469405000E3,4.655027014E1 +2.469685000E3,4.875434900E1 +2.469968000E3,4.400777727E1 +2.470228000E3,4.944370484E1 +2.470524000E3,4.819898526E1 +2.470826000E3,4.906267157E1 +2.471101000E3,4.559683511E1 +2.471407000E3,5.066052597E1 +2.471662000E3,5.052511938E1 +2.471933000E3,4.854316053E1 +2.472243000E3,4.720397127E1 +2.472513000E3,4.539713693E1 +2.472765000E3,4.504800702E1 +2.473077000E3,4.756996091E1 +2.473381000E3,4.502772911E1 +2.473668000E3,4.844141365E1 +2.473909000E3,4.718772198E1 +2.474176000E3,5.036014826E1 +2.474415000E3,4.734822430E1 +2.474659000E3,4.506554867E1 +2.474941000E3,4.590585801E1 +2.475227000E3,4.808550728E1 +2.475549000E3,4.744751902E1 +2.475816000E3,5.139502060E1 +2.476110000E3,4.565542501E1 +2.476367000E3,4.502651441E1 +2.476614000E3,4.529198411E1 +2.476876000E3,4.841642572E1 +2.477138000E3,4.904966766E1 +2.477430000E3,5.061185879E1 +2.477703000E3,4.805167318E1 +2.477973000E3,4.840268940E1 +2.478233000E3,4.609690512E1 +2.478491000E3,5.080806253E1 +2.478854000E3,4.929079330E1 +2.479112000E3,4.887431247E1 +2.479382000E3,4.582116343E1 +2.479677000E3,4.614295426E1 +2.479939000E3,5.004731017E1 +2.480247000E3,5.118895049E1 +2.480496000E3,4.750144805E1 +2.480785000E3,4.691637905E1 +2.481084000E3,4.575243018E1 +2.481328000E3,4.498034363E1 +2.481622000E3,5.049144453E1 +2.481951000E3,4.811617152E1 +2.482214000E3,4.600387593E1 +2.482494000E3,5.163944801E1 +2.482753000E3,4.933311419E1 +2.482991000E3,4.946534766E1 +2.483244000E3,4.580757204E1 +2.483487000E3,4.797573247E1 +2.483734000E3,4.560844100E1 +2.483990000E3,5.039329574E1 +2.484313000E3,5.052905321E1 +2.484577000E3,5.131938081E1 +2.484833000E3,4.901245069E1 +2.485113000E3,5.233648083E1 +2.485461000E3,5.215489758E1 +2.485749000E3,5.451606287E1 +2.486018000E3,5.043201098E1 +2.486334000E3,5.091085093E1 +2.486650000E3,4.972266732E1 +2.486916000E3,4.846864702E1 +2.487167000E3,4.843730663E1 +2.487412000E3,5.285205631E1 +2.487677000E3,5.695937588E1 +2.487965000E3,5.067248408E1 +2.488216000E3,4.955689254E1 +2.488580000E3,4.789771891E1 +2.488828000E3,4.640186686E1 +2.489150000E3,4.956289338E1 +2.489428000E3,4.916705799E1 +2.489718000E3,4.250319869E1 +2.489959000E3,4.211788948E1 +2.490259000E3,4.711467977E1 +2.490508000E3,5.336087879E1 +2.490805000E3,5.163346506E1 +2.491066000E3,5.303328317E1 +2.491377000E3,5.018594076E1 +2.491684000E3,4.569780009E1 +2.492029000E3,4.677168871E1 +2.492273000E3,4.586755987E1 +2.492522000E3,5.020047651E1 +2.492768000E3,4.585538278E1 +2.493006000E3,5.027464230E1 +2.493315000E3,4.719632652E1 +2.493608000E3,4.892998103E1 +2.493874000E3,4.659859577E1 +2.494131000E3,4.485377967E1 +2.494387000E3,4.661063763E1 +2.494635000E3,4.873112034E1 +2.494904000E3,5.011233058E1 +2.495259000E3,4.996207620E1 +2.495523000E3,5.026371938E1 +2.495789000E3,4.897334151E1 +2.496086000E3,4.919412247E1 +2.496330000E3,4.448238049E1 +2.496598000E3,5.779881243E1 +2.496845000E3,5.068443192E1 +2.497079000E3,5.452206946E1 +2.497328000E3,6.091811093E1 +2.497574000E3,5.545025588E1 +2.497819000E3,5.118451852E1 +2.498124000E3,5.647063434E1 +2.498436000E3,5.942897676E1 +2.498681000E3,6.063927987E1 +2.498932000E3,5.256584857E1 +2.499203000E3,5.942844343E1 +2.499465000E3,5.268198933E1 +2.499726000E3,5.561310022E1 +2.499989000E3,5.551348586E1 +2.500270000E3,5.728700965E1 +2.500550000E3,5.848024533E1 +2.500856000E3,5.545551244E1 +2.501156000E3,7.074712648E1 +2.501405000E3,6.649397556E1 +2.501727000E3,6.577106108E1 +2.501964000E3,5.791155905E1 +2.502223000E3,6.571272960E1 +2.502476000E3,5.223691777E1 +2.502731000E3,5.099379006E1 +2.502989000E3,4.996024440E1 +2.503265000E3,4.587573023E1 +2.503515000E3,6.660646739E1 +2.503792000E3,5.426812996E1 +2.504090000E3,4.221263073E1 +2.504348000E3,3.961359220E1 +2.504607000E3,3.317448387E1 +2.504957000E3,2.765634596E1 +2.505202000E3,5.260508289E1 +2.505444000E3,4.970766119E1 +2.505723000E3,5.961421356E1 +2.506010000E3,5.761735716E1 +2.506316000E3,4.386011183E1 +2.506629000E3,3.297646158E1 +2.506928000E3,3.461351567E1 +2.507171000E3,3.422494413E1 +2.507415000E3,3.898815557E1 +2.507661000E3,3.916714623E1 +2.507958000E3,4.409544564E1 +2.508199000E3,4.040812578E1 +2.508495000E3,4.100804729E1 +2.508767000E3,4.155083379E1 +2.509073000E3,4.256659126E1 +2.509346000E3,4.665111645E1 +2.509615000E3,4.785704834E1 +2.509926000E3,4.957995318E1 +2.510246000E3,5.281308228E1 +2.510533000E3,5.716195403E1 +2.510847000E3,5.384222007E1 +2.511087000E3,4.682850643E1 +2.511483000E3,5.585229854E1 +2.511769000E3,5.797880255E1 +2.512061000E3,5.008051045E1 +2.512305000E3,4.616221083E1 +2.512545000E3,5.837834308E1 +2.512782000E3,4.588894556E1 +2.513082000E3,5.827978204E1 +2.513321000E3,5.321307958E1 +2.513625000E3,5.419914666E1 +2.513860000E3,4.249936315E1 +2.514160000E3,5.093700871E1 +2.514505000E3,4.733309734E1 +2.514807000E3,5.739188753E1 +2.515049000E3,5.684870925E1 +2.515326000E3,5.429714525E1 +2.515551000E3,5.304528611E1 +2.515847000E3,6.048302750E1 +2.516097000E3,5.298092655E1 +2.516397000E3,5.664346713E1 +2.516634000E3,5.062362510E1 +2.516910000E3,5.059011404E1 +2.517165000E3,5.074931344E1 +2.517424000E3,5.193937267E1 +2.517672000E3,4.773080825E1 +2.517933000E3,4.886471101E1 +2.518191000E3,4.258084657E1 +2.518440000E3,4.144243799E1 +2.518697000E3,3.266068365E1 +2.518962000E3,3.662092465E1 +2.519211000E3,4.002326553E1 +2.519469000E3,5.193824268E1 +2.519821000E3,5.548381163E1 +2.520087000E3,5.245445808E1 +2.520336000E3,4.447536752E1 +2.520718000E3,5.931091731E1 +2.521010000E3,5.514928156E1 +2.521305000E3,5.194242569E1 +2.521541000E3,5.632439964E1 +2.521781000E3,4.768714929E1 +2.522074000E3,3.967116686E1 +2.522306000E3,3.457523914E1 +2.522554000E3,3.414939493E1 +2.522808000E3,3.034285017E1 +2.523103000E3,3.725639399E1 +2.523347000E3,5.824523011E1 +2.523645000E3,5.697741808E1 +2.524002000E3,5.995361389E1 +2.524244000E3,5.516819042E1 +2.524491000E3,5.520201782E1 +2.524765000E3,4.576677797E1 +2.524988000E3,5.785527848E1 +2.525299000E3,5.093237528E1 +2.525544000E3,4.090627494E1 +2.525822000E3,3.111750175E1 +2.526056000E3,2.764971736E1 +2.526311000E3,2.852524033E1 +2.526617000E3,3.508264660E1 +2.526905000E3,5.067917717E1 +2.527241000E3,4.646824007E1 +2.527487000E3,3.686495987E1 +2.527738000E3,3.822220480E1 +2.527988000E3,3.764348220E1 +2.528232000E3,4.278450517E1 +2.528563000E3,4.881983602E1 +2.528870000E3,4.048435148E1 +2.529125000E3,4.047282835E1 +2.529398000E3,4.602715630E1 +2.529632000E3,4.358719476E1 +2.529925000E3,4.185499728E1 +2.530224000E3,4.428160693E1 +2.530451000E3,5.370094630E1 +2.530771000E3,4.662369716E1 +2.531057000E3,4.486368653E1 +2.531322000E3,3.985753269E1 +2.531579000E3,3.868983993E1 +2.531842000E3,4.397673982E1 +2.532129000E3,4.465178920E1 +2.532379000E3,4.071629694E1 +2.532681000E3,3.700154265E1 +2.532925000E3,3.709745900E1 +2.533169000E3,3.856350220E1 +2.533454000E3,3.780017804E1 +2.533739000E3,4.079153270E1 +2.534053000E3,3.467337947E1 +2.534304000E3,3.872357849E1 +2.534571000E3,4.188092371E1 +2.534878000E3,4.226520735E1 +2.535180000E3,4.433351029E1 +2.535433000E3,4.196124368E1 +2.535679000E3,4.159710638E1 +2.535934000E3,4.131920574E1 +2.536230000E3,4.013333591E1 +2.536496000E3,3.861252617E1 +2.536812000E3,3.205810696E1 +2.537071000E3,3.900017908E1 +2.537321000E3,3.720890888E1 +2.537589000E3,3.571752088E1 +2.537899000E3,3.466875388E1 +2.538158000E3,3.490809444E1 +2.538414000E3,2.846246396E1 +2.538721000E3,3.471466025E1 +2.539000000E3,3.262267006E1 +2.539250000E3,2.900340615E1 +2.539526000E3,2.962734770E1 +2.539843000E3,4.051335289E1 +2.540219000E3,3.732414883E1 +2.540478000E3,3.212776280E1 +2.540731000E3,3.980002135E1 +2.541002000E3,4.402529692E1 +2.541305000E3,3.531142487E1 +2.541570000E3,4.157255463E1 +2.541892000E3,4.121686373E1 +2.542138000E3,3.512055425E1 +2.542435000E3,3.058422839E1 +2.542704000E3,3.860796470E1 +2.542951000E3,4.158955283E1 +2.543254000E3,4.126835549E1 +2.543598000E3,4.557459954E1 +2.543842000E3,4.195620726E1 +2.544088000E3,4.759905541E1 +2.544347000E3,4.089593512E1 +2.544592000E3,4.224934090E1 +2.544840000E3,3.548720999E1 +2.545141000E3,4.189266277E1 +2.545422000E3,4.058854606E1 +2.545652000E3,3.761551365E1 +2.545897000E3,3.643024250E1 +2.546173000E3,3.544845567E1 +2.546439000E3,3.816851754E1 +2.546779000E3,3.801212128E1 +2.547110000E3,3.288266257E1 +2.547379000E3,4.063952307E1 +2.547641000E3,4.765684387E1 +2.547893000E3,4.402640436E1 +2.548143000E3,4.172886183E1 +2.548441000E3,3.808222191E1 +2.548685000E3,3.637035664E1 +2.548962000E3,3.879815953E1 +2.549230000E3,5.433785228E1 +2.549540000E3,5.428002325E1 +2.549852000E3,5.430864003E1 +2.550121000E3,5.376325395E1 +2.550389000E3,5.250586376E1 +2.550641000E3,5.329413218E1 +2.550946000E3,3.817927317E1 +2.551218000E3,3.779289824E1 +2.551493000E3,4.904361964E1 +2.551759000E3,5.500168111E1 +2.552006000E3,4.745774118E1 +2.552261000E3,5.304049624E1 +2.552515000E3,4.933664563E1 +2.552779000E3,3.482983031E1 +2.553043000E3,3.914561037E1 +2.553378000E3,3.318943686E1 +2.553659000E3,2.674748735E1 +2.553917000E3,2.500565902E1 +2.554234000E3,3.331261434E1 +2.554489000E3,3.380079275E1 +2.554753000E3,3.632095841E1 +2.554996000E3,3.606888467E1 +2.555239000E3,4.759559903E1 +2.555541000E3,5.588542149E1 +2.555837000E3,5.768171500E1 +2.556076000E3,5.837962370E1 +2.556358000E3,5.761486260E1 +2.556647000E3,5.408185929E1 +2.556914000E3,5.624815374E1 +2.557248000E3,4.727853091E1 +2.557554000E3,3.999550071E1 +2.557822000E3,4.090986684E1 +2.558062000E3,3.411171601E1 +2.558302000E3,3.042998918E1 +2.558550000E3,3.392526215E1 +2.558807000E3,3.801243567E1 +2.559082000E3,4.390440101E1 +2.559357000E3,4.215163378E1 +2.559616000E3,4.616573562E1 +2.559972000E3,4.170066459E1 +2.560245000E3,2.972551911E1 +2.560517000E3,3.987643023E1 +2.560765000E3,4.046237199E1 +2.561011000E3,4.268708813E1 +2.561258000E3,4.450541644E1 +2.561531000E3,4.611922799E1 +2.561775000E3,4.492719317E1 +2.562027000E3,4.345851098E1 +2.562302000E3,5.022295857E1 +2.562533000E3,4.986016935E1 +2.562786000E3,3.932672790E1 +2.563211000E3,3.777119812E1 +2.563479000E3,4.577537823E1 +2.563731000E3,5.443473776E1 +2.563977000E3,5.947837126E1 +2.564252000E3,5.014881480E1 +2.564539000E3,4.884415531E1 +2.564781000E3,4.451698294E1 +2.565088000E3,3.693106642E1 +2.565361000E3,3.096881298E1 +2.565624000E3,2.635486448E1 +2.565885000E3,2.734213385E1 +2.566246000E3,3.979362654E1 +2.566493000E3,3.382738554E1 +2.566797000E3,3.469438245E1 +2.567097000E3,4.097528595E1 +2.567346000E3,4.285297734E1 +2.567644000E3,4.930003444E1 +2.567891000E3,4.540271843E1 +2.568170000E3,3.109775861E1 +2.568407000E3,2.738661195E1 +2.568701000E3,3.024785153E1 +2.568952000E3,3.235217301E1 +2.569220000E3,3.196941264E1 +2.569567000E3,4.299833718E1 +2.569862000E3,4.496000509E1 +2.570178000E3,4.562225815E1 +2.570442000E3,4.437451260E1 +2.570707000E3,3.949227756E1 +2.570950000E3,2.951847370E1 +2.571202000E3,3.800151296E1 +2.571472000E3,4.650517590E1 +2.571732000E3,3.967561664E1 +2.571975000E3,3.149456620E1 +2.572246000E3,5.234083710E1 +2.572527000E3,4.544839619E1 +2.572859000E3,4.436174777E1 +2.573168000E3,4.369290756E1 +2.573429000E3,4.420543128E1 +2.573728000E3,4.389854646E1 +2.573968000E3,4.580346210E1 +2.574268000E3,4.881141748E1 +2.574509000E3,4.708023256E1 +2.574802000E3,3.388696242E1 +2.575045000E3,2.922489212E1 +2.575339000E3,3.941924125E1 +2.575597000E3,4.733040375E1 +2.575906000E3,4.790376430E1 +2.576245000E3,4.328559785E1 +2.576517000E3,4.720947277E1 +2.576791000E3,4.076260480E1 +2.577092000E3,3.249905806E1 +2.577324000E3,3.886850876E1 +2.577566000E3,3.577483806E1 +2.577814000E3,4.105002685E1 +2.578080000E3,3.881208350E1 +2.578375000E3,5.720708534E1 +2.578624000E3,4.933084675E1 +2.578932000E3,5.989261963E1 +2.579254000E3,5.193127116E1 +2.579506000E3,4.843920497E1 +2.579747000E3,4.570821188E1 +2.580001000E3,4.446748829E1 +2.580244000E3,4.006228376E1 +2.580497000E3,2.933332862E1 +2.580745000E3,4.525678604E1 +2.580989000E3,4.717489692E1 +2.581288000E3,5.239736286E1 +2.581587000E3,5.268105849E1 +2.581851000E3,4.960616241E1 +2.582112000E3,4.637217789E1 +2.582361000E3,4.676379781E1 +2.582583000E3,4.083594902E1 +2.582903000E3,2.696140701E1 +2.583176000E3,2.668057590E1 +2.583429000E3,2.900886287E1 +2.583692000E3,2.732690452E1 +2.583951000E3,3.475308428E1 +2.584205000E3,4.782860484E1 +2.584480000E3,4.928978168E1 +2.584742000E3,3.697304160E1 +2.585017000E3,3.390321432E1 +2.585248000E3,4.818778278E1 +2.585552000E3,5.175969441E1 +2.585851000E3,4.752724055E1 +2.586108000E3,5.047732228E1 +2.586408000E3,5.003267867E1 +2.586651000E3,4.995698879E1 +2.586934000E3,4.985539117E1 +2.587202000E3,4.558719065E1 +2.587455000E3,4.973387236E1 +2.587702000E3,5.190737686E1 +2.587964000E3,4.955516560E1 +2.588211000E3,5.039526507E1 +2.588461000E3,3.897042435E1 +2.588748000E3,2.919124678E1 +2.589063000E3,3.061867322E1 +2.589398000E3,4.010104895E1 +2.589690000E3,3.640442215E1 +2.589998000E3,4.479952304E1 +2.590261000E3,4.757967128E1 +2.590558000E3,4.812333533E1 +2.590802000E3,4.603482331E1 +2.591083000E3,2.960043464E1 +2.591326000E3,3.684354753E1 +2.591591000E3,4.359182452E1 +2.591849000E3,4.788602237E1 +2.592228000E3,4.468031543E1 +2.592527000E3,3.894688899E1 +2.592778000E3,2.800490026E1 +2.593035000E3,4.310888325E1 +2.593333000E3,4.628339380E1 +2.593602000E3,4.440124594E1 +2.593883000E3,4.123163794E1 +2.594160000E3,3.127645239E1 +2.594429000E3,3.071812965E1 +2.594749000E3,4.618618296E1 +2.595070000E3,5.248181749E1 +2.595312000E3,4.786265879E1 +2.595668000E3,3.990233287E1 +2.595973000E3,4.173583037E1 +2.596256000E3,3.709278400E1 +2.596497000E3,3.229385861E1 +2.596813000E3,4.380573021E1 +2.597084000E3,4.783628282E1 +2.597325000E3,5.024593568E1 +2.597578000E3,5.102379549E1 +2.597828000E3,4.760481411E1 +2.598089000E3,3.822780835E1 +2.598387000E3,3.417342767E1 +2.598736000E3,2.863579065E1 +2.598981000E3,2.886228233E1 +2.599228000E3,2.855965247E1 +2.599493000E3,3.083396855E1 +2.599764000E3,3.581659374E1 +2.600032000E3,4.317647632E1 +2.600330000E3,4.853625621E1 +2.600623000E3,5.102467342E1 +2.600867000E3,4.877836926E1 +2.601112000E3,4.705612686E1 +2.601365000E3,4.889085742E1 +2.601612000E3,4.654488136E1 +2.601956000E3,4.055024190E1 +2.602220000E3,3.990851266E1 +2.602547000E3,3.648352551E1 +2.602794000E3,5.324982942E1 +2.603078000E3,5.268965363E1 +2.603338000E3,4.851189142E1 +2.603637000E3,5.135006473E1 +2.603925000E3,4.939301404E1 +2.604238000E3,5.337101389E1 +2.604488000E3,5.022765286E1 +2.604734000E3,5.253186666E1 +2.605064000E3,4.127453431E1 +2.605321000E3,4.114070867E1 +2.605572000E3,4.042282231E1 +2.605820000E3,4.255774466E1 +2.606073000E3,4.746726668E1 +2.606319000E3,4.761848671E1 +2.606565000E3,4.983628061E1 +2.606849000E3,3.046517787E1 +2.607082000E3,3.832211131E1 +2.607339000E3,4.741131966E1 +2.607609000E3,4.453335589E1 +2.607874000E3,3.545592153E1 +2.608197000E3,4.672891376E1 +2.608451000E3,4.755881287E1 +2.608706000E3,4.827652641E1 +2.608952000E3,4.727153141E1 +2.609226000E3,4.731450942E1 +2.609537000E3,3.981385402E1 +2.609784000E3,3.194698732E1 +2.610041000E3,3.314164027E1 +2.610283000E3,2.819786732E1 +2.610546000E3,2.664547785E1 +2.610857000E3,2.913544778E1 +2.611125000E3,3.961651759E1 +2.611432000E3,3.852777426E1 +2.611666000E3,3.205673146E1 +2.611951000E3,4.233182010E1 +2.612229000E3,3.378509898E1 +2.612454000E3,4.071755552E1 +2.612730000E3,5.018278065E1 +2.613050000E3,4.100034395E1 +2.613359000E3,3.892108016E1 +2.613628000E3,5.091321799E1 +2.613871000E3,4.336916838E1 +2.614108000E3,3.960788811E1 +2.614408000E3,3.948227358E1 +2.614722000E3,3.631863435E1 +2.614975000E3,4.057042340E1 +2.615256000E3,4.414132009E1 +2.615486000E3,4.180934435E1 +2.615750000E3,4.153999936E1 +2.615997000E3,3.521796466E1 +2.616260000E3,5.443854687E1 +2.616548000E3,5.408118563E1 +2.616842000E3,4.951275264E1 +2.617090000E3,5.182722031E1 +2.617344000E3,4.327522742E1 +2.617643000E3,5.375122422E1 +2.617975000E3,5.216635190E1 +2.618233000E3,4.126006713E1 +2.618497000E3,4.980260599E1 +2.618804000E3,4.655838197E1 +2.619044000E3,4.977945459E1 +2.619327000E3,4.875559075E1 +2.619562000E3,4.983226039E1 +2.619834000E3,4.741689273E1 +2.620075000E3,4.923498746E1 +2.620352000E3,4.923432072E1 +2.620664000E3,4.040876723E1 +2.620916000E3,3.889825840E1 +2.621142000E3,5.245081579E1 +2.621448000E3,4.684934794E1 +2.621687000E3,4.583906640E1 +2.621992000E3,4.366517623E1 +2.622230000E3,3.373873872E1 +2.622475000E3,3.701694694E1 +2.622750000E3,3.544967426E1 +2.623008000E3,3.363206222E1 +2.623285000E3,4.009589135E1 +2.623562000E3,4.408709562E1 +2.623825000E3,4.800133533E1 +2.624131000E3,4.855432282E1 +2.624414000E3,4.808187444E1 +2.624671000E3,5.252566194E1 +2.624932000E3,4.890333861E1 +2.625183000E3,4.370428781E1 +2.625430000E3,3.668118979E1 +2.625747000E3,4.353955331E1 +2.626003000E3,4.224026412E1 +2.626267000E3,4.311785789E1 +2.626514000E3,3.517806855E1 +2.626763000E3,3.981966751E1 +2.627025000E3,3.444602265E1 +2.627334000E3,3.341390757E1 +2.627660000E3,3.926570124E1 +2.627920000E3,4.341089288E1 +2.628216000E3,4.081134870E1 +2.628467000E3,3.912400300E1 +2.628730000E3,3.657553946E1 +2.629000000E3,3.072838888E1 +2.629284000E3,2.929703023E1 +2.629549000E3,3.378014550E1 +2.629844000E3,4.760306323E1 +2.630080000E3,4.024322042E1 +2.630373000E3,3.235913140E1 +2.630611000E3,3.920509877E1 +2.630919000E3,5.103841717E1 +2.631222000E3,5.813980805E1 +2.631514000E3,5.190256812E1 +2.631753000E3,4.653294376E1 +2.632054000E3,4.782140153E1 +2.632295000E3,4.977458693E1 +2.632592000E3,5.371197571E1 +2.632828000E3,5.056512655E1 +2.633140000E3,5.325824914E1 +2.633383000E3,4.973751947E1 +2.633632000E3,4.853342473E1 +2.633950000E3,3.905011010E1 +2.634254000E3,3.751700759E1 +2.634549000E3,5.292771607E1 +2.634786000E3,5.557450981E1 +2.635082000E3,4.974692283E1 +2.635319000E3,5.393938197E1 +2.635611000E3,4.675981835E1 +2.635848000E3,4.299614910E1 +2.636145000E3,3.756646750E1 +2.636395000E3,3.824353200E1 +2.636648000E3,3.045317917E1 +2.636942000E3,3.257931849E1 +2.637299000E3,3.010616025E1 +2.637599000E3,4.995329379E1 +2.637834000E3,4.824584689E1 +2.638071000E3,5.059212149E1 +2.638363000E3,5.330633429E1 +2.638612000E3,5.343612136E1 +2.638897000E3,4.755550111E1 +2.639122000E3,4.119881812E1 +2.639362000E3,3.902726568E1 +2.639659000E3,4.451944661E1 +2.639896000E3,4.587471035E1 +2.640164000E3,4.115502802E1 +2.640409000E3,4.505311495E1 +2.640656000E3,4.913968689E1 +2.640951000E3,5.110923180E1 +2.641208000E3,4.281604120E1 +2.641505000E3,4.825854961E1 +2.641748000E3,4.861588211E1 +2.642059000E3,4.450542116E1 +2.642304000E3,4.274821036E1 +2.642556000E3,3.503446158E1 +2.642862000E3,4.080900103E1 +2.643164000E3,4.152079562E1 +2.643527000E3,3.935881933E1 +2.643833000E3,3.760570593E1 +2.644082000E3,3.959144469E1 +2.644327000E3,4.007918652E1 +2.644573000E3,4.288120719E1 +2.644814000E3,4.793099478E1 +2.645114000E3,4.424069452E1 +2.645391000E3,4.078427844E1 +2.645635000E3,3.902795236E1 +2.645871000E3,4.393773718E1 +2.646111000E3,4.085627764E1 +2.646355000E3,4.393316509E1 +2.646690000E3,4.428892908E1 +2.646958000E3,4.601464396E1 +2.647235000E3,4.300358696E1 +2.647474000E3,4.083829680E1 +2.647758000E3,5.406220971E1 +2.648003000E3,4.253716581E1 +2.648273000E3,4.506680000E1 +2.648514000E3,3.500046728E1 +2.648758000E3,3.537281462E1 +2.649004000E3,5.013819891E1 +2.649251000E3,5.388943830E1 +2.649556000E3,5.656370208E1 +2.649891000E3,5.696480404E1 +2.650216000E3,4.675400561E1 +2.650515000E3,4.179549274E1 +2.650777000E3,4.536624285E1 +2.651084000E3,4.297370528E1 +2.651336000E3,4.376785410E1 +2.651635000E3,3.354560746E1 +2.651881000E3,2.537939319E1 +2.652180000E3,3.168783420E1 +2.652481000E3,4.898553010E1 +2.652737000E3,5.438993966E1 +2.652992000E3,4.963834041E1 +2.653252000E3,4.227369117E1 +2.653502000E3,4.301436765E1 +2.653812000E3,3.649724292E1 +2.654061000E3,4.086211966E1 +2.654320000E3,3.223281741E1 +2.654605000E3,2.807672508E1 +2.654836000E3,2.764825285E1 +2.655100000E3,4.598866982E1 +2.655350000E3,4.383741939E1 +2.655590000E3,4.883555528E1 +2.655837000E3,4.815765811E1 +2.656131000E3,5.047261312E1 +2.656369000E3,5.124829846E1 +2.656626000E3,3.956134092E1 +2.656925000E3,3.503286763E1 +2.657200000E3,3.224209198E1 +2.657447000E3,4.294806319E1 +2.657761000E3,4.898454413E1 +2.658011000E3,5.320780356E1 +2.658286000E3,5.345186604E1 +2.658542000E3,4.849291145E1 +2.658789000E3,5.098648363E1 +2.659034000E3,4.892931203E1 +2.659289000E3,4.580698225E1 +2.659530000E3,3.709695762E1 +2.659834000E3,3.457925551E1 +2.660081000E3,3.855219813E1 +2.660383000E3,3.845534481E1 +2.660628000E3,4.619372518E1 +2.660921000E3,4.848307744E1 +2.661167000E3,4.790880967E1 +2.661464000E3,4.667520128E1 +2.661710000E3,4.098851532E1 +2.662006000E3,4.035468673E1 +2.662245000E3,3.753010710E1 +2.662592000E3,4.792080660E1 +2.662862000E3,4.709835917E1 +2.663123000E3,3.501409506E1 +2.663374000E3,3.240664296E1 +2.663631000E3,4.326696615E1 +2.663874000E3,4.411177933E1 +2.664133000E3,3.936378145E1 +2.664382000E3,3.443614227E1 +2.664648000E3,3.761654306E1 +2.664944000E3,5.164457484E1 +2.665198000E3,2.810669920E1 +2.665512000E3,2.931307063E1 +2.665876000E3,3.108643425E1 +2.666131000E3,3.278101889E1 +2.666439000E3,4.277860150E1 +2.666693000E3,4.213131936E1 +2.667002000E3,3.935849781E1 +2.667259000E3,4.137879880E1 +2.667575000E3,3.790565018E1 +2.667827000E3,3.845274836E1 +2.668153000E3,3.676763670E1 +2.668452000E3,3.751975183E1 +2.668696000E3,3.224848897E1 +2.669023000E3,3.611134142E1 +2.669316000E3,4.467495655E1 +2.669607000E3,4.735906080E1 +2.669885000E3,5.159453510E1 +2.670167000E3,5.321308782E1 +2.670485000E3,5.282242631E1 +2.670747000E3,5.127719277E1 +2.670997000E3,4.902251972E1 +2.671243000E3,4.450532678E1 +2.671540000E3,3.864078148E1 +2.671788000E3,3.720620343E1 +2.672044000E3,4.496142790E1 +2.672357000E3,4.705640535E1 +2.672617000E3,3.890316941E1 +2.672864000E3,4.027639889E1 +2.673159000E3,4.202335245E1 +2.673421000E3,4.285452583E1 +2.673720000E3,3.626679930E1 +2.673964000E3,4.670395357E1 +2.674210000E3,4.915586670E1 +2.674514000E3,5.353785994E1 +2.674811000E3,5.414016767E1 +2.675048000E3,5.591079353E1 +2.675364000E3,3.844031623E1 +2.675661000E3,3.124520008E1 +2.675946000E3,3.566755596E1 +2.676189000E3,3.490423263E1 +2.676498000E3,5.070292882E1 +2.676799000E3,5.356134163E1 +2.677047000E3,5.161634227E1 +2.677305000E3,5.185439004E1 +2.677581000E3,5.315585532E1 +2.677832000E3,4.418578879E1 +2.678087000E3,3.972693415E1 +2.678335000E3,4.338465258E1 +2.678650000E3,5.168404535E1 +2.678934000E3,4.984483773E1 +2.679249000E3,4.977401184E1 +2.679507000E3,5.044345616E1 +2.679823000E3,4.232585634E1 +2.680128000E3,3.026551109E1 +2.680400000E3,3.009656886E1 +2.680660000E3,4.894119824E1 +2.680913000E3,4.712312643E1 +2.681208000E3,4.239602863E1 +2.681477000E3,4.875338950E1 +2.681768000E3,4.887945421E1 +2.682128000E3,4.379352407E1 +2.682394000E3,4.073494394E1 +2.682637000E3,3.685872977E1 +2.682895000E3,2.883047793E1 +2.683163000E3,3.769147996E1 +2.683455000E3,3.713975885E1 +2.683749000E3,4.855681627E1 +2.683994000E3,4.936430656E1 +2.684290000E3,5.303947120E1 +2.684540000E3,5.031092673E1 +2.684833000E3,4.783130186E1 +2.685073000E3,4.898734587E1 +2.685348000E3,4.686166956E1 +2.685598000E3,4.244245178E1 +2.685917000E3,3.872119900E1 +2.686161000E3,4.891396583E1 +2.686434000E3,4.491629365E1 +2.686687000E3,3.588391777E1 +2.686952000E3,3.156965948E1 +2.687206000E3,3.184725563E1 +2.687480000E3,3.153561496E1 +2.687733000E3,3.669659228E1 +2.688049000E3,3.507922771E1 +2.688340000E3,3.251056517E1 +2.688645000E3,4.079174670E1 +2.688915000E3,4.837277005E1 +2.689163000E3,4.669136560E1 +2.689426000E3,3.659115086E1 +2.689751000E3,4.814125321E1 +2.689994000E3,4.721335081E1 +2.690235000E3,5.119773767E1 +2.690471000E3,4.584232122E1 +2.690738000E3,4.687969307E1 +2.691006000E3,4.116197132E1 +2.691312000E3,2.850019915E1 +2.691659000E3,3.175399572E1 +2.691948000E3,3.215115185E1 +2.692197000E3,2.655209633E1 +2.692466000E3,3.136629444E1 +2.692727000E3,2.928762690E1 +2.692976000E3,2.688909217E1 +2.693281000E3,3.350197248E1 +2.693518000E3,3.760267236E1 +2.693776000E3,3.194141055E1 +2.694032000E3,3.113878807E1 +2.694299000E3,2.830606211E1 +2.694602000E3,2.632227285E1 +2.694941000E3,2.736240000E1 +2.695184000E3,3.956118458E1 +2.695488000E3,4.069974415E1 +2.695732000E3,4.498590768E1 +2.696030000E3,3.370199172E1 +2.696300000E3,3.284857688E1 +2.696535000E3,2.919082343E1 +2.696815000E3,3.146626789E1 +2.697056000E3,2.968971947E1 +2.697354000E3,4.116455896E1 +2.697640000E3,5.055341773E1 +2.697888000E3,5.163434474E1 +2.698155000E3,4.792936353E1 +2.698456000E3,4.111753823E1 +2.698732000E3,4.594070701E1 +2.699031000E3,3.204472070E1 +2.699273000E3,2.836668859E1 +2.699578000E3,2.624009297E1 +2.699855000E3,2.719538340E1 +2.700110000E3,2.868563476E1 +2.700399000E3,2.757039916E1 +2.700662000E3,2.546630310E1 +2.700960000E3,2.981844134E1 +2.701310000E3,3.063471239E1 +2.701629000E3,4.014173680E1 +2.701894000E3,3.281157953E1 +2.702206000E3,4.268438101E1 +2.702448000E3,4.272045970E1 +2.702710000E3,4.782744516E1 +2.702984000E3,4.067538265E1 +2.703255000E3,3.821763448E1 +2.703566000E3,3.373237040E1 +2.703865000E3,2.762261654E1 +2.704108000E3,3.058182972E1 +2.704366000E3,4.157303269E1 +2.704695000E3,4.128988216E1 +2.705002000E3,3.725674585E1 +2.705260000E3,3.318881716E1 +2.705544000E3,3.512644750E1 +2.705774000E3,3.012622541E1 +2.706039000E3,3.307868989E1 +2.706297000E3,3.089854998E1 +2.706599000E3,2.870455364E1 +2.706901000E3,2.573473536E1 +2.707155000E3,2.708285982E1 +2.707419000E3,2.641018696E1 +2.707644000E3,2.532685142E1 +2.707945000E3,2.741320006E1 +2.708188000E3,2.764718970E1 +2.708460000E3,3.745935532E1 +2.708711000E3,4.292241509E1 +2.708955000E3,4.431523077E1 +2.709266000E3,3.812245251E1 +2.709534000E3,3.199637282E1 +2.709802000E3,3.030937111E1 +2.710049000E3,3.172341474E1 +2.710303000E3,4.706685853E1 +2.710610000E3,4.372593931E1 +2.710859000E3,4.298246415E1 +2.711196000E3,4.313732995E1 +2.711485000E3,3.646858634E1 +2.711745000E3,3.547356546E1 +2.712003000E3,4.802507202E1 +2.712259000E3,4.666185634E1 +2.712527000E3,4.298723738E1 +2.712813000E3,3.203029787E1 +2.713082000E3,2.721140687E1 +2.713344000E3,3.967881707E1 +2.713594000E3,5.017429445E1 +2.713859000E3,4.690730331E1 +2.714106000E3,4.892140969E1 +2.714475000E3,4.312346900E1 +2.714730000E3,4.926615820E1 +2.714984000E3,4.690558758E1 +2.715298000E3,3.116292546E1 +2.715563000E3,2.731472603E1 +2.715855000E3,3.029992609E1 +2.716160000E3,3.149201904E1 +2.716442000E3,2.826058660E1 +2.716703000E3,2.713282366E1 +2.716957000E3,3.659207256E1 +2.717253000E3,3.982143620E1 +2.717592000E3,4.316888996E1 +2.717851000E3,4.348787554E1 +2.718149000E3,4.336902207E1 +2.718464000E3,4.494305168E1 +2.718765000E3,4.280996114E1 +2.719042000E3,4.083199069E1 +2.719277000E3,3.924180447E1 +2.719573000E3,2.985025677E1 +2.719800000E3,2.924980764E1 +2.720042000E3,2.589394072E1 +2.720346000E3,2.996884267E1 +2.720607000E3,2.951796470E1 +2.720882000E3,2.762273017E1 +2.721181000E3,4.946261833E1 +2.721422000E3,4.848220411E1 +2.721736000E3,4.816357380E1 +2.722001000E3,5.238238407E1 +2.722305000E3,5.586118797E1 +2.722602000E3,5.474108905E1 +2.722856000E3,5.089156984E1 +2.723105000E3,4.900978141E1 +2.723369000E3,5.541376880E1 +2.723666000E3,4.827427134E1 +2.723997000E3,4.802338633E1 +2.724296000E3,3.537215093E1 +2.724548000E3,3.822637167E1 +2.724844000E3,3.388327957E1 +2.725086000E3,3.756611639E1 +2.725338000E3,4.489615211E1 +2.725635000E3,5.048833137E1 +2.725871000E3,4.298428385E1 +2.726174000E3,3.303114009E1 +2.726475000E3,4.527811220E1 +2.726764000E3,4.815487328E1 +2.727017000E3,4.761823346E1 +2.727328000E3,4.180028821E1 +2.727607000E3,4.512936944E1 +2.727849000E3,4.337880786E1 +2.728101000E3,4.031817829E1 +2.728401000E3,3.509684782E1 +2.728650000E3,4.495565250E1 +2.728895000E3,4.157595660E1 +2.729138000E3,5.008202715E1 +2.729381000E3,5.308960545E1 +2.729622000E3,4.943413955E1 +2.729917000E3,4.820467383E1 +2.730234000E3,5.168344618E1 +2.730544000E3,5.128425900E1 +2.730837000E3,5.242528085E1 +2.731075000E3,5.125548047E1 +2.731382000E3,5.027678189E1 +2.731625000E3,4.595108129E1 +2.731917000E3,5.425640288E1 +2.732229000E3,5.493458667E1 +2.732522000E3,5.383738769E1 +2.732781000E3,4.577468908E1 +2.733036000E3,4.877165484E1 +2.733337000E3,5.155317163E1 +2.733582000E3,4.868465804E1 +2.733904000E3,5.094377769E1 +2.734158000E3,4.778052408E1 +2.734485000E3,4.980696312E1 +2.734788000E3,5.229980528E1 +2.735043000E3,4.487473927E1 +2.735323000E3,5.405477376E1 +2.735550000E3,5.095910777E1 +2.735795000E3,4.081340338E1 +2.736110000E3,3.942379743E1 +2.736352000E3,4.377765131E1 +2.736599000E3,4.311237352E1 +2.736822000E3,4.659947655E1 +2.737071000E3,4.430846393E1 +2.737313000E3,4.579154087E1 +2.737577000E3,4.628223866E1 +2.737831000E3,3.937286623E1 +2.738094000E3,3.852847368E1 +2.738336000E3,3.907921933E1 +2.738583000E3,5.112703685E1 +2.738825000E3,4.827754167E1 +2.739100000E3,4.022366081E1 +2.739352000E3,3.342841986E1 +2.739649000E3,3.354947585E1 +2.740003000E3,2.967395260E1 +2.740259000E3,4.724158021E1 +2.740515000E3,4.406232704E1 +2.740781000E3,4.128290785E1 +2.741030000E3,3.766271195E1 +2.741274000E3,3.234308905E1 +2.741542000E3,5.345026714E1 +2.741790000E3,5.189834860E1 +2.742037000E3,4.310520052E1 +2.742373000E3,3.005340200E1 +2.742661000E3,3.957498865E1 +2.742905000E3,4.298992085E1 +2.743235000E3,3.914359224E1 +2.743487000E3,4.665969106E1 +2.743742000E3,4.569837618E1 +2.743989000E3,4.037243126E1 +2.744288000E3,4.393151618E1 +2.744525000E3,4.191552922E1 +2.744830000E3,3.855450094E1 +2.745068000E3,3.137426682E1 +2.745312000E3,3.988970586E1 +2.745595000E3,4.261856210E1 +2.745912000E3,4.545535941E1 +2.746178000E3,3.982007681E1 +2.746515000E3,3.873990925E1 +2.746799000E3,4.024486228E1 +2.747097000E3,3.778822068E1 +2.747346000E3,3.349647091E1 +2.747587000E3,3.949530039E1 +2.747884000E3,4.424971453E1 +2.748182000E3,4.109440717E1 +2.748426000E3,4.429824127E1 +2.748724000E3,3.941870140E1 +2.749014000E3,3.719766140E1 +2.749309000E3,3.407061301E1 +2.749659000E3,3.362708714E1 +2.749929000E3,4.111324363E1 +2.750185000E3,4.275268079E1 +2.750445000E3,5.624172952E1 +2.750726000E3,4.374037489E1 +2.750957000E3,4.189644016E1 +2.751207000E3,3.621210842E1 +2.751519000E3,4.177841495E1 +2.751770000E3,4.048458953E1 +2.752052000E3,3.923884976E1 +2.752303000E3,3.426258793E1 +2.752575000E3,3.252443323E1 +2.752926000E3,3.211416673E1 +2.753222000E3,3.245023971E1 +2.753483000E3,3.266068265E1 +2.753758000E3,4.004662592E1 +2.754054000E3,4.872983792E1 +2.754320000E3,5.041613029E1 +2.754567000E3,4.540589836E1 +2.754814000E3,3.042430240E1 +2.755080000E3,3.072459076E1 +2.755376000E3,3.998104284E1 +2.755642000E3,4.049850263E1 +2.755970000E3,4.294486763E1 +2.756315000E3,4.067196783E1 +2.756573000E3,4.772031632E1 +2.756825000E3,4.988707098E1 +2.757139000E3,4.555538995E1 +2.757388000E3,4.252022698E1 +2.757651000E3,3.810962452E1 +2.757917000E3,3.494795311E1 +2.758159000E3,3.247098224E1 +2.758413000E3,3.588027190E1 +2.758665000E3,3.200494843E1 +2.758920000E3,4.772506231E1 +2.759171000E3,3.775844318E1 +2.759507000E3,3.920116655E1 +2.759772000E3,4.528245497E1 +2.760086000E3,4.240466142E1 +2.760349000E3,4.544544837E1 +2.760652000E3,4.039389797E1 +2.760923000E3,3.896680017E1 +2.761194000E3,4.381534416E1 +2.761436000E3,4.424202471E1 +2.761681000E3,4.737958135E1 +2.761960000E3,4.213672401E1 +2.762194000E3,4.516117441E1 +2.762462000E3,4.279973284E1 +2.762806000E3,3.859577230E1 +2.763061000E3,4.880977241E1 +2.763403000E3,4.365184399E1 +2.763660000E3,3.848143477E1 +2.763932000E3,4.787104427E1 +2.764214000E3,3.823665924E1 +2.764451000E3,3.049392521E1 +2.764732000E3,3.086844430E1 +2.764975000E3,2.587396098E1 +2.765284000E3,3.362049288E1 +2.765536000E3,3.353664382E1 +2.765825000E3,5.140360254E1 +2.766193000E3,5.105178275E1 +2.766449000E3,5.027787452E1 +2.766756000E3,4.961194015E1 +2.766992000E3,4.473604482E1 +2.767290000E3,5.567849424E1 +2.767540000E3,5.366739238E1 +2.767788000E3,5.268444481E1 +2.768092000E3,4.378358357E1 +2.768389000E3,4.285786187E1 +2.768638000E3,3.838737205E1 +2.768928000E3,4.053738598E1 +2.769250000E3,3.914310468E1 +2.769517000E3,3.950994015E1 +2.769781000E3,4.085678781E1 +2.770095000E3,3.706118568E1 +2.770362000E3,3.878826243E1 +2.770640000E3,4.509160576E1 +2.770877000E3,4.395611401E1 +2.771129000E3,3.894826552E1 +2.771368000E3,3.783168139E1 +2.771620000E3,3.074559821E1 +2.771881000E3,4.191911052E1 +2.772136000E3,4.492008577E1 +2.772447000E3,3.666714779E1 +2.772710000E3,4.135207765E1 +2.772994000E3,4.645886813E1 +2.773238000E3,5.078995440E1 +2.773478000E3,5.706152467E1 +2.773725000E3,5.135582573E1 +2.773990000E3,4.900548267E1 +2.774266000E3,5.275962483E1 +2.774567000E3,3.947101760E1 +2.774806000E3,4.078518654E1 +2.775113000E3,4.929998433E1 +2.775417000E3,4.396253608E1 +2.775784000E3,4.382194135E1 +2.776077000E3,4.131860223E1 +2.776341000E3,4.321133953E1 +2.776596000E3,3.942571045E1 +2.776881000E3,5.035254190E1 +2.777176000E3,5.596334670E1 +2.777432000E3,6.003222989E1 +2.777730000E3,5.139953750E1 +2.778036000E3,5.596001036E1 +2.778330000E3,5.632045587E1 +2.778567000E3,5.352711698E1 +2.778873000E3,5.160150080E1 +2.779243000E3,5.407354895E1 +2.779513000E3,5.151192380E1 +2.779810000E3,5.479493680E1 +2.780084000E3,5.006197117E1 +2.780351000E3,5.012247277E1 +2.780644000E3,4.598086802E1 +2.780884000E3,3.959492635E1 +2.781142000E3,3.571624227E1 +2.781421000E3,4.082207018E1 +2.781720000E3,5.162800696E1 +2.781984000E3,5.211692198E1 +2.782250000E3,5.017743125E1 +2.782617000E3,4.685740156E1 +2.782916000E3,4.348825959E1 +2.783213000E3,3.825858224E1 +2.783454000E3,4.923981343E1 +2.783750000E3,5.319160353E1 +2.783992000E3,4.967899375E1 +2.784288000E3,3.952802481E1 +2.784535000E3,3.328379343E1 +2.784779000E3,3.014350405E1 +2.785020000E3,3.405755755E1 +2.785313000E3,4.653255974E1 +2.785639000E3,4.571255084E1 +2.785896000E3,4.212654376E1 +2.786166000E3,4.635178938E1 +2.786421000E3,4.614547408E1 +2.786716000E3,4.279815144E1 +2.787018000E3,3.739201392E1 +2.787261000E3,4.297599275E1 +2.787569000E3,5.279236826E1 +2.787869000E3,4.385267374E1 +2.788181000E3,3.538660905E1 +2.788488000E3,4.283741498E1 +2.788738000E3,3.898018884E1 +2.789079000E3,4.417569536E1 +2.789327000E3,3.821417555E1 +2.789586000E3,4.124587088E1 +2.789850000E3,4.583617377E1 +2.790116000E3,4.758354441E1 +2.790413000E3,4.386951397E1 +2.790662000E3,4.527431896E1 +2.790956000E3,4.454979637E1 +2.791207000E3,4.019280914E1 +2.791465000E3,4.549375778E1 +2.791714000E3,4.076569420E1 +2.791963000E3,3.807465350E1 +2.792293000E3,5.201775254E1 +2.792550000E3,4.217772267E1 +2.792797000E3,5.472035384E1 +2.793107000E3,5.403984906E1 +2.793357000E3,5.591746790E1 +2.793622000E3,5.564159884E1 +2.793875000E3,5.646584479E1 +2.794118000E3,5.185594958E1 +2.794377000E3,4.895735059E1 +2.794636000E3,5.654557288E1 +2.794943000E3,5.012866956E1 +2.795254000E3,4.757016947E1 +2.795528000E3,5.211434220E1 +2.795790000E3,4.452402763E1 +2.796058000E3,4.290214665E1 +2.796307000E3,3.465820610E1 +2.796556000E3,4.339944359E1 +2.796852000E3,4.313164949E1 +2.797091000E3,5.438037991E1 +2.797389000E3,5.514175593E1 +2.797635000E3,4.928848190E1 +2.797924000E3,4.659784940E1 +2.798220000E3,4.998887096E1 +2.798537000E3,4.486399829E1 +2.798842000E3,4.885866840E1 +2.799091000E3,4.635335968E1 +2.799347000E3,4.504358299E1 +2.799594000E3,3.958005741E1 +2.799833000E3,4.827229253E1 +2.800082000E3,4.830536262E1 +2.800388000E3,4.659260793E1 +2.800673000E3,4.111758509E1 +2.800972000E3,4.464305855E1 +2.801233000E3,4.497276151E1 +2.801524000E3,3.374775892E1 +2.801884000E3,3.426238632E1 +2.802202000E3,3.521995684E1 +2.802451000E3,3.181302785E1 +2.802708000E3,2.794884084E1 +2.803019000E3,3.320140571E1 +2.803325000E3,3.478175393E1 +2.803626000E3,3.529465039E1 +2.803932000E3,3.962950189E1 +2.804222000E3,5.725685057E1 +2.804486000E3,5.740119524E1 +2.804784000E3,5.069347451E1 +2.805056000E3,5.047632669E1 +2.805376000E3,5.207930289E1 +2.805626000E3,5.264810014E1 +2.805887000E3,5.288954519E1 +2.806177000E3,4.457356662E1 +2.806431000E3,3.885566564E1 +2.806679000E3,3.768676842E1 +2.806944000E3,3.953483275E1 +2.807192000E3,4.348722722E1 +2.807514000E3,4.091620627E1 +2.807832000E3,4.192587435E1 +2.808086000E3,4.434501723E1 +2.808380000E3,4.393917252E1 +2.808686000E3,4.250763593E1 +2.809001000E3,4.146719312E1 +2.809249000E3,4.084508562E1 +2.809517000E3,4.466153637E1 +2.809817000E3,4.002274614E1 +2.810111000E3,4.310032831E1 +2.810375000E3,4.901386280E1 +2.810661000E3,4.607368963E1 +2.810927000E3,4.387647276E1 +2.811225000E3,5.143943484E1 +2.811469000E3,5.045193234E1 +2.811861000E3,4.363012565E1 +2.812115000E3,4.450854658E1 +2.812371000E3,4.453857946E1 +2.812631000E3,4.628101753E1 +2.812921000E3,4.634691523E1 +2.813212000E3,4.654803531E1 +2.813510000E3,4.718980060E1 +2.813758000E3,4.430765323E1 +2.814051000E3,4.322664022E1 +2.814349000E3,4.450224091E1 +2.814582000E3,4.170367724E1 +2.814868000E3,3.985315953E1 +2.815113000E3,5.280042862E1 +2.815400000E3,4.119993511E1 +2.815662000E3,4.251502783E1 +2.815937000E3,4.221594106E1 +2.816186000E3,4.475181393E1 +2.816425000E3,4.757705666E1 +2.816666000E3,4.971185267E1 +2.816968000E3,4.862141287E1 +2.817211000E3,4.713523003E1 +2.817492000E3,4.541478066E1 +2.817737000E3,4.363493262E1 +2.817996000E3,4.428814895E1 +2.818246000E3,4.395099122E1 +2.818516000E3,4.781334664E1 +2.818773000E3,4.439472962E1 +2.819027000E3,4.768107540E1 +2.819278000E3,4.535748265E1 +2.819523000E3,5.061196572E1 +2.819779000E3,4.816069594E1 +2.820044000E3,4.715573746E1 +2.820374000E3,4.919198579E1 +2.820635000E3,5.486134785E1 +2.820897000E3,4.845922458E1 +2.821173000E3,4.486224636E1 +2.821520000E3,4.543631827E1 +2.821781000E3,4.823449020E1 +2.822049000E3,4.622456265E1 +2.822354000E3,3.467019045E1 +2.822632000E3,3.820707315E1 +2.822892000E3,3.870865044E1 +2.823175000E3,3.526203974E1 +2.823424000E3,3.398332746E1 +2.823673000E3,4.060940798E1 +2.823924000E3,4.531267955E1 +2.824156000E3,4.823172894E1 +2.824426000E3,5.381643572E1 +2.824772000E3,5.219878503E1 +2.825053000E3,4.888255160E1 +2.825277000E3,4.023650802E1 +2.825526000E3,3.467455539E1 +2.825785000E3,3.818404386E1 +2.826078000E3,4.122702652E1 +2.826315000E3,3.713088668E1 +2.826619000E3,4.891468535E1 +2.826912000E3,5.266971981E1 +2.827148000E3,4.991025067E1 +2.827457000E3,5.435242869E1 +2.827718000E3,5.378448717E1 +2.828053000E3,5.171570017E1 +2.828327000E3,5.600593919E1 +2.828581000E3,5.175339102E1 +2.828821000E3,4.567582373E1 +2.829101000E3,3.417267221E1 +2.829337000E3,3.532670702E1 +2.829576000E3,4.323212593E1 +2.829823000E3,3.952189104E1 +2.830096000E3,4.372473758E1 +2.830363000E3,4.288959864E1 +2.830609000E3,3.903893871E1 +2.830954000E3,3.847274859E1 +2.831281000E3,4.911689413E1 +2.831539000E3,5.342672798E1 +2.831798000E3,5.558955965E1 +2.832091000E3,5.519004987E1 +2.832341000E3,5.877942264E1 +2.832589000E3,4.602825434E1 +2.832861000E3,3.380054471E1 +2.833107000E3,3.583644563E1 +2.833403000E3,4.160983164E1 +2.833653000E3,3.903662215E1 +2.833958000E3,3.879412363E1 +2.834222000E3,4.121083607E1 +2.834460000E3,4.235130104E1 +2.834723000E3,5.615135633E1 +2.834993000E3,5.355273371E1 +2.835271000E3,4.896976792E1 +2.835535000E3,5.132324538E1 +2.835792000E3,5.529277110E1 +2.836041000E3,5.163674064E1 +2.836366000E3,4.657927993E1 +2.836613000E3,4.238907241E1 +2.836875000E3,5.376683406E1 +2.837143000E3,5.052269952E1 +2.837398000E3,5.018740192E1 +2.837697000E3,4.680907883E1 +2.837961000E3,4.427452663E1 +2.838227000E3,3.300759096E1 +2.838490000E3,3.639504198E1 +2.838784000E3,4.617517315E1 +2.839084000E3,4.692063960E1 +2.839325000E3,4.445415179E1 +2.839620000E3,4.215561710E1 +2.839863000E3,4.433766229E1 +2.840168000E3,4.210423337E1 +2.840460000E3,3.873922427E1 +2.840768000E3,3.717852459E1 +2.841057000E3,3.957811826E1 +2.841313000E3,3.760389186E1 +2.841638000E3,4.310249633E1 +2.841921000E3,4.813095040E1 +2.842192000E3,4.623131926E1 +2.842444000E3,4.648620260E1 +2.842743000E3,4.620801315E1 +2.843027000E3,4.321069748E1 +2.843281000E3,4.205248893E1 +2.843587000E3,2.653536028E1 +2.843863000E3,2.940344619E1 +2.844270000E3,4.715941302E1 +2.844533000E3,4.512147604E1 +2.844793000E3,4.758865475E1 +2.845051000E3,4.853448129E1 +2.845325000E3,4.647479098E1 +2.845569000E3,4.600966189E1 +2.845842000E3,4.549543262E1 +2.846088000E3,4.262631529E1 +2.846347000E3,4.522394390E1 +2.846652000E3,4.657245211E1 +2.846924000E3,4.554651191E1 +2.847231000E3,4.501421864E1 +2.847609000E3,4.413715050E1 +2.847859000E3,3.641102730E1 +2.848158000E3,2.959594862E1 +2.848409000E3,3.229903797E1 +2.848684000E3,3.716282001E1 +2.848948000E3,4.864280315E1 +2.849195000E3,4.698625872E1 +2.849453000E3,4.475077374E1 +2.849725000E3,4.320130236E1 +2.850029000E3,4.052232702E1 +2.850286000E3,4.987213531E1 +2.850622000E3,4.470574790E1 +2.850953000E3,4.746715529E1 +2.851224000E3,4.817674396E1 +2.851475000E3,4.755384271E1 +2.851775000E3,4.606857790E1 +2.852037000E3,4.602549066E1 +2.852280000E3,4.107899882E1 +2.852578000E3,4.602936757E1 +2.852832000E3,4.594357604E1 +2.853123000E3,4.132874601E1 +2.853424000E3,3.891402985E1 +2.853676000E3,3.210431116E1 +2.854034000E3,4.148325967E1 +2.854336000E3,4.539420759E1 +2.854629000E3,3.813311910E1 +2.854857000E3,3.204826654E1 +2.855103000E3,4.042825728E1 +2.855348000E3,3.781799437E1 +2.855635000E3,3.485312778E1 +2.855901000E3,3.176423587E1 +2.856194000E3,3.286644404E1 +2.856446000E3,3.601261840E1 +2.856741000E3,3.056779431E1 +2.856990000E3,2.876904683E1 +2.857247000E3,2.336161379E1 +2.857525000E3,5.319777865E1 +2.857765000E3,4.924210585E1 +2.858030000E3,4.161506516E1 +2.858287000E3,3.471025819E1 +2.858592000E3,2.954431085E1 +2.858878000E3,3.551304021E1 +2.859146000E3,4.056554733E1 +2.859438000E3,4.716772205E1 +2.859749000E3,4.728214145E1 +2.860112000E3,4.333221553E1 +2.860355000E3,3.970290127E1 +2.860627000E3,4.675070996E1 +2.860922000E3,5.292655838E1 +2.861168000E3,5.560528000E1 +2.861448000E3,5.155203362E1 +2.861684000E3,4.854372910E1 +2.861981000E3,5.166225265E1 +2.862226000E3,5.239758268E1 +2.862536000E3,4.880079262E1 +2.862801000E3,5.860724491E1 +2.863049000E3,5.487085904E1 +2.863366000E3,4.477307493E1 +2.863622000E3,4.809216762E1 +2.863923000E3,4.128779228E1 +2.864180000E3,4.039902121E1 +2.864473000E3,3.763315716E1 +2.864758000E3,3.836830031E1 +2.865072000E3,3.562217561E1 +2.865375000E3,4.251016575E1 +2.865631000E3,3.959478231E1 +2.865894000E3,3.906491963E1 +2.866161000E3,3.169567809E1 +2.866409000E3,4.180907280E1 +2.866769000E3,5.009501966E1 +2.867095000E3,4.485052737E1 +2.867377000E3,4.543449817E1 +2.867634000E3,4.558186247E1 +2.867912000E3,3.310648260E1 +2.868160000E3,3.368680580E1 +2.868403000E3,3.259924908E1 +2.868652000E3,3.468868920E1 +2.868945000E3,3.811295096E1 +2.869214000E3,3.680532391E1 +2.869523000E3,4.480088276E1 +2.869800000E3,4.321197878E1 +2.870149000E3,3.870196995E1 +2.870426000E3,4.501549736E1 +2.870686000E3,3.869046251E1 +2.870998000E3,5.116138397E1 +2.871259000E3,4.565952095E1 +2.871545000E3,4.044036430E1 +2.871835000E3,3.776423584E1 +2.872146000E3,4.283314388E1 +2.872428000E3,4.822150076E1 +2.872666000E3,4.609488251E1 +2.872966000E3,4.199842198E1 +2.873258000E3,4.199452970E1 +2.873557000E3,4.094164548E1 +2.873868000E3,3.451929232E1 +2.874146000E3,3.725700957E1 +2.874378000E3,3.820854143E1 +2.874632000E3,3.261818797E1 +2.874949000E3,4.229639001E1 +2.875219000E3,4.314663650E1 +2.875496000E3,4.030472415E1 +2.875772000E3,3.740362597E1 +2.876082000E3,3.770704299E1 +2.876334000E3,4.016521241E1 +2.876600000E3,4.155568881E1 +2.876855000E3,3.864643482E1 +2.877164000E3,3.358142820E1 +2.877430000E3,2.988882280E1 +2.877698000E3,4.233125756E1 +2.877954000E3,4.245249096E1 +2.878273000E3,3.619646633E1 +2.878541000E3,3.199868066E1 +2.878801000E3,4.546979293E1 +2.879062000E3,5.523869784E1 +2.879342000E3,5.605267417E1 +2.879584000E3,5.653411529E1 +2.879928000E3,4.626290707E1 +2.880202000E3,3.540012043E1 +2.880447000E3,3.620700172E1 +2.880691000E3,2.922036878E1 +2.880938000E3,3.659816429E1 +2.881251000E3,4.145147882E1 +2.881527000E3,3.894444603E1 +2.881851000E3,3.741315407E1 +2.882112000E3,4.094962867E1 +2.882373000E3,4.333353585E1 +2.882625000E3,4.557565518E1 +2.882879000E3,4.308396997E1 +2.883145000E3,4.097722416E1 +2.883416000E3,3.927850137E1 +2.883669000E3,3.223716221E1 +2.883941000E3,3.004581442E1 +2.884209000E3,3.765685263E1 +2.884466000E3,3.878810543E1 +2.884718000E3,2.988953340E1 +2.884967000E3,3.346960294E1 +2.885221000E3,3.799647420E1 +2.885537000E3,3.116842616E1 +2.885796000E3,3.671552801E1 +2.886084000E3,4.459898232E1 +2.886404000E3,4.708370738E1 +2.886677000E3,5.036035843E1 +2.886979000E3,4.113513329E1 +2.887251000E3,3.503458684E1 +2.887528000E3,3.462090732E1 +2.887785000E3,4.001717165E1 +2.888037000E3,3.538133603E1 +2.888296000E3,3.662805649E1 +2.888547000E3,4.263542947E1 +2.888820000E3,4.431895872E1 +2.889079000E3,4.300413574E1 +2.889340000E3,4.173317530E1 +2.889582000E3,4.288275032E1 +2.889932000E3,3.944773526E1 +2.890197000E3,3.214266541E1 +2.890503000E3,3.060588708E1 +2.890777000E3,3.296322494E1 +2.891017000E3,3.394251803E1 +2.891320000E3,3.208741950E1 +2.891570000E3,3.441770910E1 +2.891849000E3,3.368561294E1 +2.892087000E3,3.475967611E1 +2.892337000E3,3.740055420E1 +2.892635000E3,3.542355307E1 +2.892981000E3,3.105741683E1 +2.893247000E3,3.245614761E1 +2.893513000E3,4.142391644E1 +2.893779000E3,4.497461971E1 +2.894029000E3,4.653178389E1 +2.894282000E3,4.703576342E1 +2.894540000E3,4.751169602E1 +2.894805000E3,4.201422178E1 +2.895062000E3,4.370261317E1 +2.895310000E3,4.660906406E1 +2.895596000E3,4.633159753E1 +2.895865000E3,4.381116332E1 +2.896155000E3,4.368523912E1 +2.896405000E3,4.747051902E1 +2.896651000E3,4.222577444E1 +2.896905000E3,4.572633660E1 +2.897184000E3,5.203776089E1 +2.897450000E3,5.010843836E1 +2.897744000E3,4.910530865E1 +2.898022000E3,4.664859833E1 +2.898308000E3,3.985336775E1 +2.898564000E3,3.683403533E1 +2.898812000E3,4.284820320E1 +2.899091000E3,4.286036404E1 +2.899396000E3,5.224070654E1 +2.899753000E3,4.568546748E1 +2.900018000E3,5.586433220E1 +2.900278000E3,4.514230837E1 +2.900559000E3,3.853422420E1 +2.900865000E3,3.299777990E1 +2.901139000E3,3.594596453E1 +2.901415000E3,2.896001699E1 +2.901650000E3,2.556794162E1 +2.901937000E3,2.525773120E1 +2.902206000E3,3.138035436E1 +2.902457000E3,3.725731802E1 +2.902816000E3,3.600302530E1 +2.903095000E3,3.476106384E1 +2.903340000E3,3.325569458E1 +2.903600000E3,3.217545002E1 +2.903858000E3,2.994578711E1 +2.904108000E3,3.277965280E1 +2.904372000E3,4.013450695E1 +2.904627000E3,3.103730297E1 +2.904913000E3,4.187502355E1 +2.905174000E3,3.591627686E1 +2.905452000E3,3.067277870E1 +2.905743000E3,2.813597523E1 +2.906004000E3,2.760542404E1 +2.906321000E3,3.327793113E1 +2.906579000E3,4.111963776E1 +2.906835000E3,4.309802180E1 +2.907113000E3,2.749088524E1 +2.907354000E3,2.269523459E1 +2.907657000E3,3.631225289E1 +2.907901000E3,4.146405590E1 +2.908156000E3,3.785670954E1 +2.908403000E3,4.498664409E1 +2.908675000E3,4.174614917E1 +2.908932000E3,4.632262643E1 +2.909189000E3,3.569839459E1 +2.909522000E3,4.635385444E1 +2.909802000E3,4.337190367E1 +2.910035000E3,3.796960383E1 +2.910287000E3,4.151951269E1 +2.910538000E3,4.245940710E1 +2.910795000E3,4.268454470E1 +2.911045000E3,4.280139929E1 +2.911335000E3,3.861780445E1 +2.911584000E3,4.028221299E1 +2.911885000E3,3.934408626E1 +2.912139000E3,3.091195323E1 +2.912386000E3,2.709027446E1 +2.912622000E3,2.721294148E1 +2.912915000E3,3.169063213E1 +2.913196000E3,3.663766462E1 +2.913461000E3,3.582442105E1 +2.913744000E3,2.742218375E1 +2.913990000E3,3.432349666E1 +2.914297000E3,4.586386591E1 +2.914575000E3,4.813383402E1 +2.914888000E3,5.016441505E1 +2.915190000E3,4.132593749E1 +2.915481000E3,3.992883324E1 +2.915827000E3,3.713218942E1 +2.916087000E3,4.862036940E1 +2.916351000E3,4.985137398E1 +2.916622000E3,5.126616609E1 +2.916881000E3,4.180876614E1 +2.917157000E3,4.057128207E1 +2.917418000E3,3.994520906E1 +2.917681000E3,3.719846748E1 +2.917964000E3,4.377214072E1 +2.918264000E3,4.081140664E1 +2.918518000E3,4.149712935E1 +2.918784000E3,3.965801174E1 +2.919127000E3,3.499332266E1 +2.919415000E3,3.454976163E1 +2.919745000E3,3.801205804E1 +2.920003000E3,4.266330834E1 +2.920244000E3,3.704497233E1 +2.920548000E3,3.869800412E1 +2.920840000E3,3.880762608E1 +2.921081000E3,3.967826348E1 +2.921325000E3,4.387098551E1 +2.921573000E3,3.795523909E1 +2.921876000E3,3.884773193E1 +2.922122000E3,3.949919351E1 +2.922481000E3,3.549368996E1 +2.922774000E3,5.176437750E1 +2.923023000E3,4.673969779E1 +2.923306000E3,3.729614967E1 +2.923573000E3,3.557242251E1 +2.923880000E3,5.351861504E1 +2.924155000E3,5.486661937E1 +2.924424000E3,5.693150230E1 +2.924735000E3,4.225245527E1 +2.924988000E3,4.082554353E1 +2.925252000E3,3.807826598E1 +2.925573000E3,3.587807510E1 +2.925935000E3,4.290242494E1 +2.926237000E3,3.960438869E1 +2.926496000E3,3.732088357E1 +2.926751000E3,3.216321546E1 +2.926991000E3,3.001846960E1 +2.927295000E3,3.634949804E1 +2.927531000E3,3.127042454E1 +2.927829000E3,3.158500209E1 +2.928073000E3,2.815993792E1 +2.928370000E3,2.793102526E1 +2.928613000E3,2.468786691E1 +2.928943000E3,2.345175993E1 +2.929256000E3,2.908559709E1 +2.929497000E3,2.580950455E1 +2.929819000E3,2.871707976E1 +2.930114000E3,2.977851279E1 +2.930374000E3,4.220437998E1 +2.930636000E3,3.122152770E1 +2.930945000E3,3.902308439E1 +2.931227000E3,3.648582434E1 +2.931474000E3,4.774090674E1 +2.931717000E3,4.487624905E1 +2.931963000E3,4.620728265E1 +2.932258000E3,4.011602626E1 +2.932585000E3,4.011469989E1 +2.932871000E3,4.531107143E1 +2.933117000E3,4.299757904E1 +2.933366000E3,4.255561828E1 +2.933662000E3,4.180851663E1 +2.933899000E3,3.354142728E1 +2.934139000E3,4.061788576E1 +2.934435000E3,3.190428864E1 +2.934678000E3,3.136545948E1 +2.934975000E3,3.172564299E1 +2.935227000E3,3.538616066E1 +2.935577000E3,3.227761247E1 +2.935826000E3,3.587578035E1 +2.936132000E3,2.830690319E1 +2.936391000E3,2.983281120E1 +2.936636000E3,3.198482114E1 +2.936936000E3,4.529436692E1 +2.937191000E3,3.904726622E1 +2.937498000E3,4.546792713E1 +2.937790000E3,4.178984789E1 +2.938055000E3,3.901507008E1 +2.938332000E3,3.530528642E1 +2.938634000E3,3.766035689E1 +2.939060000E3,5.595745424E1 +2.939318000E3,5.800941557E1 +2.939576000E3,5.061871726E1 +2.939836000E3,6.017617924E1 +2.940124000E3,5.889680612E1 +2.940380000E3,5.553527141E1 +2.940631000E3,4.982924060E1 +2.940889000E3,5.386899946E1 +2.941183000E3,5.511436312E1 +2.941477000E3,5.474658637E1 +2.941736000E3,5.669903896E1 +2.941985000E3,5.352207307E1 +2.942302000E3,5.089540084E1 +2.942556000E3,5.163069551E1 +2.942811000E3,4.946827448E1 +2.943144000E3,4.292332560E1 +2.943386000E3,4.769421745E1 +2.943625000E3,4.741300910E1 +2.943936000E3,4.918473310E1 +2.944182000E3,4.358732286E1 +2.944456000E3,4.338106770E1 +2.944722000E3,5.302068646E1 +2.945006000E3,4.800501219E1 +2.945370000E3,4.445792428E1 +2.945619000E3,3.768400599E1 +2.945867000E3,3.829540629E1 +2.946159000E3,3.766669508E1 +2.946411000E3,4.016839261E1 +2.946712000E3,4.041724233E1 +2.947009000E3,4.012217251E1 +2.947323000E3,3.568820570E1 +2.947568000E3,3.690839296E1 +2.947818000E3,4.813137033E1 +2.948084000E3,5.325274156E1 +2.948341000E3,5.892514859E1 +2.948730000E3,4.314585435E1 +2.948980000E3,4.049194134E1 +2.949257000E3,4.522053034E1 +2.949515000E3,4.263261915E1 +2.949826000E3,5.159034358E1 +2.950126000E3,4.094053529E1 +2.950370000E3,4.144504964E1 +2.950613000E3,4.584689520E1 +2.950933000E3,3.986259871E1 +2.951211000E3,5.835616238E1 +2.951492000E3,4.865922153E1 +2.951773000E3,4.646806952E1 +2.952049000E3,5.501145746E1 +2.952349000E3,5.395560549E1 +2.952606000E3,5.094776028E1 +2.952859000E3,5.987933082E1 +2.953123000E3,5.553863596E1 +2.953365000E3,6.056471643E1 +2.953626000E3,5.705129962E1 +2.953881000E3,5.620457969E1 +2.954143000E3,4.633104773E1 +2.954403000E3,4.542785483E1 +2.954666000E3,4.357363747E1 +2.954925000E3,5.905995366E1 +2.955255000E3,5.325307727E1 +2.955500000E3,6.730464031E1 +2.955795000E3,6.362836082E1 +2.956030000E3,6.057596417E1 +2.956332000E3,6.813918985E1 +2.956573000E3,6.403678903E1 +2.956871000E3,6.230635205E1 +2.957135000E3,6.746671531E1 +2.957401000E3,6.427695804E1 +2.957673000E3,5.206458526E1 +2.957933000E3,5.261265827E1 +2.958182000E3,4.877242183E1 +2.958552000E3,6.627461000E1 +2.958808000E3,6.741673158E1 +2.959062000E3,6.597614354E1 +2.959304000E3,6.540552328E1 +2.959551000E3,6.528289091E1 +2.959864000E3,5.830061674E1 +2.960121000E3,5.985112812E1 +2.960428000E3,6.090568068E1 +2.960720000E3,6.807446854E1 +2.960985000E3,6.930722199E1 +2.961226000E3,6.386100217E1 +2.961579000E3,6.028451745E1 +2.961849000E3,6.477814340E1 +2.962132000E3,6.837046944E1 +2.962373000E3,6.647209363E1 +2.962660000E3,6.694202205E1 +2.962967000E3,6.648756695E1 +2.963231000E3,6.482625001E1 +2.963518000E3,7.095796361E1 +2.963775000E3,6.454417662E1 +2.964062000E3,6.533171518E1 +2.964339000E3,6.471819922E1 +2.964629000E3,5.679367810E1 +2.964962000E3,5.573913208E1 +2.965271000E3,6.251351498E1 +2.965502000E3,6.071427502E1 +2.965745000E3,6.212696498E1 +2.966049000E3,5.601947939E1 +2.966292000E3,5.543203731E1 +2.966544000E3,5.440105204E1 +2.966807000E3,5.169354717E1 +2.967114000E3,5.098574914E1 +2.967354000E3,4.778774527E1 +2.967603000E3,5.527018336E1 +2.967874000E3,5.069142516E1 +2.968220000E3,5.540354927E1 +2.968470000E3,5.388190573E1 +2.968725000E3,5.648678631E1 +2.968994000E3,6.195289166E1 +2.969259000E3,5.924073062E1 +2.969526000E3,5.554902217E1 +2.969797000E3,6.073047002E1 +2.970049000E3,5.750580172E1 +2.970375000E3,6.205206850E1 +2.970685000E3,5.892672487E1 +2.971008000E3,5.603539479E1 +2.971306000E3,5.380141597E1 +2.971609000E3,6.182570937E1 +2.971860000E3,5.755792598E1 +2.972120000E3,7.094637252E1 +2.972374000E3,7.220321333E1 +2.972688000E3,6.074903881E1 +2.972946000E3,5.132390204E1 +2.973203000E3,5.555176793E1 +2.973482000E3,5.082163203E1 +2.973746000E3,6.668022761E1 +2.974024000E3,6.951681150E1 +2.974257000E3,6.170353739E1 +2.974507000E3,6.191784425E1 +2.974845000E3,6.249884739E1 +2.975129000E3,6.139715498E1 +2.975385000E3,5.458109058E1 +2.975684000E3,6.285593412E1 +2.975925000E3,6.801445640E1 +2.976223000E3,6.762358149E1 +2.976454000E3,6.007212586E1 +2.976698000E3,6.176376027E1 +2.976998000E3,5.489351528E1 +2.977244000E3,6.419682450E1 +2.977544000E3,6.335879864E1 +2.977813000E3,6.346249627E1 +2.978071000E3,6.122721977E1 +2.978303000E3,6.269343112E1 +2.978564000E3,5.719207644E1 +2.978818000E3,6.209398004E1 +2.979085000E3,6.570545323E1 +2.979335000E3,6.443300698E1 +2.979582000E3,6.395479352E1 +2.979841000E3,6.285971298E1 +2.980091000E3,6.452411240E1 +2.980337000E3,6.648403811E1 +2.980638000E3,6.146510082E1 +2.980898000E3,6.178604521E1 +2.981191000E3,5.906416732E1 +2.981418000E3,6.139524316E1 +2.981668000E3,6.754933795E1 +2.981958000E3,5.804633278E1 +2.982221000E3,5.544285219E1 +2.982480000E3,5.252390700E1 +2.982741000E3,5.442974682E1 +2.983009000E3,5.886662164E1 +2.983270000E3,6.039421332E1 +2.983532000E3,5.984826425E1 +2.983780000E3,6.038747451E1 +2.984020000E3,5.836799318E1 +2.984266000E3,6.011457774E1 +2.984654000E3,6.086793857E1 +2.984928000E3,6.104684994E1 +2.985246000E3,6.081085188E1 +2.985504000E3,6.338602633E1 +2.985771000E3,6.224702903E1 +2.986040000E3,5.771788346E1 +2.986351000E3,5.832375863E1 +2.986657000E3,6.179808645E1 +2.986893000E3,6.074067698E1 +2.987188000E3,5.763905723E1 +2.987459000E3,5.411975455E1 +2.987698000E3,5.609082395E1 +2.988020000E3,5.838775534E1 +2.988261000E3,5.545934196E1 +2.988564000E3,5.818253650E1 +2.988803000E3,5.693365858E1 +2.989084000E3,5.747877452E1 +2.989394000E3,6.108654481E1 +2.989646000E3,6.109521888E1 +2.989952000E3,5.453216708E1 +2.990235000E3,5.325056065E1 +2.990530000E3,5.226229633E1 +2.990796000E3,5.566734434E1 +2.991153000E3,5.983192138E1 +2.991409000E3,5.902282422E1 +2.991712000E3,6.553978750E1 +2.991962000E3,6.323109208E1 +2.992210000E3,6.430699278E1 +2.992477000E3,6.439502996E1 +2.992769000E3,5.882379749E1 +2.993024000E3,7.076998945E1 +2.993317000E3,6.710088514E1 +2.993554000E3,6.332152683E1 +2.993846000E3,6.013348006E1 +2.994081000E3,6.492156154E1 +2.994361000E3,6.054189638E1 +2.994671000E3,5.878685209E1 +2.994911000E3,6.363988355E1 +2.995218000E3,6.266127576E1 +2.995513000E3,6.231860976E1 +2.995750000E3,6.770663238E1 +2.996056000E3,6.411706706E1 +2.996346000E3,6.607053327E1 +2.996592000E3,6.231837938E1 +2.996884000E3,6.235557028E1 +2.997130000E3,6.626149607E1 +2.997386000E3,6.897456616E1 +2.997721000E3,6.896820400E1 +2.997984000E3,5.708709076E1 +2.998260000E3,5.465136518E1 +2.998532000E3,6.136090841E1 +2.998792000E3,6.427324700E1 +2.999047000E3,5.922924051E1 +2.999308000E3,5.964993479E1 +2.999619000E3,5.937495043E1 +2.999910000E3,6.345321013E1 +3.000196000E3,6.558504608E1 +3.000438000E3,6.566442906E1 +3.000721000E3,6.596782674E1 +3.001048000E3,6.493210478E1 +3.001299000E3,6.778071085E1 +3.001554000E3,5.810398860E1 +3.001834000E3,6.461256831E1 +3.002084000E3,5.637103240E1 +3.002332000E3,6.244497501E1 +3.002633000E3,5.749162406E1 +3.002980000E3,6.268391580E1 +3.003246000E3,6.122193913E1 +3.003572000E3,6.467185898E1 +3.003877000E3,6.239318427E1 +3.004266000E3,6.708558966E1 +3.004573000E3,6.293492178E1 +3.004871000E3,6.169168265E1 +3.005129000E3,5.944912128E1 +3.005404000E3,5.631628075E1 +3.005704000E3,6.080609102E1 +3.005964000E3,6.424565764E1 +3.006250000E3,6.447415860E1 +3.006481000E3,6.606824769E1 +3.006756000E3,6.337387069E1 +3.007004000E3,6.294291386E1 +3.007286000E3,6.430484746E1 +3.007612000E3,6.091848593E1 +3.007867000E3,6.343837854E1 +3.008169000E3,5.978702761E1 +3.008432000E3,5.965865421E1 +3.008675000E3,5.540362761E1 +3.008918000E3,5.443572137E1 +3.009202000E3,6.171389250E1 +3.009446000E3,6.487192568E1 +3.009738000E3,5.958143908E1 +3.009983000E3,6.189834719E1 +3.010232000E3,5.752745917E1 +3.010489000E3,6.339873723E1 +3.010846000E3,6.127984243E1 +3.011144000E3,6.065194767E1 +3.011387000E3,6.253646864E1 +3.011646000E3,6.179753794E1 +3.011925000E3,6.231808205E1 +3.012153000E3,6.101579519E1 +3.012442000E3,5.876502421E1 +3.012737000E3,5.809905793E1 +3.013015000E3,5.695141293E1 +3.013301000E3,5.973139928E1 +3.013577000E3,6.007240820E1 +3.013839000E3,7.136453087E1 +3.014063000E3,7.173892024E1 +3.014315000E3,6.885425335E1 +3.014559000E3,6.110376355E1 +3.014808000E3,6.296723224E1 +3.015075000E3,6.021879294E1 +3.015327000E3,6.012811489E1 +3.015577000E3,6.282613373E1 +3.015850000E3,6.884549735E1 +3.016115000E3,6.913958233E1 +3.016397000E3,6.608409337E1 +3.016648000E3,6.437779633E1 +3.016896000E3,6.412579817E1 +3.017253000E3,6.408373459E1 +3.017500000E3,6.487828946E1 +3.017743000E3,6.281964754E1 +3.018003000E3,6.153697843E1 +3.018258000E3,6.503307442E1 +3.018512000E3,6.508021131E1 +3.018791000E3,5.910017780E1 +3.019028000E3,5.757469918E1 +3.019325000E3,5.762978005E1 +3.019573000E3,5.366611226E1 +3.019824000E3,5.708763529E1 +3.020086000E3,5.488621207E1 +3.020437000E3,5.826722905E1 +3.020695000E3,5.951373108E1 +3.020968000E3,6.130623452E1 +3.021217000E3,6.025771329E1 +3.021490000E3,5.280103891E1 +3.021737000E3,6.123009986E1 +3.022037000E3,6.404958762E1 +3.022328000E3,6.469373641E1 +3.022599000E3,6.283727611E1 +3.022840000E3,6.248869497E1 +3.023123000E3,6.767270030E1 +3.023363000E3,6.436289402E1 +3.023706000E3,6.007121161E1 +3.023992000E3,6.067397941E1 +3.024255000E3,6.005092329E1 +3.024513000E3,6.146229561E1 +3.024803000E3,6.214304530E1 +3.025060000E3,6.107977952E1 +3.025317000E3,6.268440106E1 +3.025560000E3,5.744048190E1 +3.025823000E3,6.080102592E1 +3.026092000E3,6.359394744E1 +3.026384000E3,6.219604097E1 +3.026685000E3,6.296073955E1 +3.026912000E3,6.243574530E1 +3.027190000E3,6.540426031E1 +3.027426000E3,7.038009166E1 +3.027684000E3,7.133800291E1 +3.027943000E3,6.847497315E1 +3.028214000E3,7.049817235E1 +3.028486000E3,6.555713643E1 +3.028748000E3,6.762942526E1 +3.029008000E3,6.780082040E1 +3.029264000E3,6.644646205E1 +3.029533000E3,7.066497540E1 +3.029800000E3,6.700863421E1 +3.030174000E3,6.263767412E1 +3.030459000E3,5.937975562E1 +3.030697000E3,6.189133018E1 +3.030958000E3,6.479748496E1 +3.031218000E3,6.070421224E1 +3.031488000E3,5.567295684E1 +3.031754000E3,6.162939414E1 +3.032026000E3,6.462556380E1 +3.032293000E3,6.300561819E1 +3.032553000E3,6.320528504E1 +3.032852000E3,6.205536878E1 +3.033102000E3,7.179598993E1 +3.033490000E3,6.907149718E1 +3.033750000E3,6.110443799E1 +3.034008000E3,5.743025653E1 +3.034257000E3,5.714646515E1 +3.034505000E3,6.193634179E1 +3.034762000E3,6.511685208E1 +3.035034000E3,6.647840023E1 +3.035277000E3,6.637602928E1 +3.035534000E3,6.208743290E1 +3.035873000E3,6.158502662E1 +3.036127000E3,6.138896352E1 +3.036392000E3,5.988342330E1 +3.036737000E3,5.834272912E1 +3.036998000E3,6.504474047E1 +3.037253000E3,5.801637483E1 +3.037569000E3,6.208073459E1 +3.037831000E3,6.555093843E1 +3.038084000E3,6.686352963E1 +3.038356000E3,6.398821865E1 +3.038638000E3,6.053541888E1 +3.038927000E3,5.509282051E1 +3.039228000E3,6.213274835E1 +3.039473000E3,6.149105368E1 +3.039745000E3,6.097957376E1 +3.040056000E3,6.313145073E1 +3.040300000E3,6.749857058E1 +3.040549000E3,6.031561589E1 +3.040852000E3,5.991948868E1 +3.041110000E3,6.228314687E1 +3.041358000E3,6.281493679E1 +3.041621000E3,6.031124820E1 +3.041926000E3,6.035954468E1 +3.042177000E3,6.230627050E1 +3.042448000E3,5.381586458E1 +3.042741000E3,6.032611045E1 +3.043026000E3,5.796046788E1 +3.043304000E3,6.286261594E1 +3.043605000E3,6.188894569E1 +3.043848000E3,6.196336480E1 +3.044091000E3,6.506902622E1 +3.044345000E3,6.547913264E1 +3.044589000E3,6.701681380E1 +3.044849000E3,6.398074775E1 +3.045095000E3,6.102355933E1 +3.045350000E3,6.546609328E1 +3.045598000E3,6.626677347E1 +3.045845000E3,6.212155235E1 +3.046098000E3,6.475032486E1 +3.046433000E3,6.469401418E1 +3.046698000E3,6.335899573E1 +3.046970000E3,5.799459631E1 +3.047267000E3,5.777430210E1 +3.047527000E3,6.228044606E1 +3.047785000E3,5.521572273E1 +3.048044000E3,5.312506195E1 +3.048316000E3,5.877400717E1 +3.048592000E3,6.239358597E1 +3.048842000E3,6.019315355E1 +3.049164000E3,5.944515023E1 +3.049418000E3,6.571719967E1 +3.049752000E3,5.906077781E1 +3.050005000E3,6.269931225E1 +3.050242000E3,6.329267329E1 +3.050532000E3,6.094692628E1 +3.050797000E3,6.137608503E1 +3.051055000E3,6.019630450E1 +3.051299000E3,5.959056092E1 +3.051551000E3,6.195653625E1 +3.051802000E3,5.997942431E1 +3.052044000E3,6.071988649E1 +3.052348000E3,6.146559433E1 +3.052605000E3,6.320542640E1 +3.052903000E3,6.301314639E1 +3.053133000E3,6.491013087E1 +3.053386000E3,5.374424399E1 +3.053632000E3,5.337930652E1 +3.053925000E3,5.830420592E1 +3.054167000E3,5.827724976E1 +3.054414000E3,5.413373264E1 +3.054713000E3,5.438904566E1 +3.054952000E3,5.478972153E1 +3.055245000E3,6.026125791E1 +3.055545000E3,6.377000784E1 +3.055792000E3,6.273059884E1 +3.056116000E3,6.164463909E1 +3.056426000E3,6.310484015E1 +3.056665000E3,6.191865333E1 +3.056974000E3,6.044005004E1 +3.057225000E3,5.723160495E1 +3.057532000E3,6.482171923E1 +3.057799000E3,6.373654624E1 +3.058097000E3,6.579319958E1 +3.058333000E3,6.717439766E1 +3.058632000E3,6.244987186E1 +3.058874000E3,5.911459441E1 +3.059119000E3,6.246625617E1 +3.059514000E3,6.061929027E1 +3.059786000E3,6.141894857E1 +3.060044000E3,6.531006136E1 +3.060311000E3,6.745420282E1 +3.060564000E3,6.305040539E1 +3.060809000E3,6.250223063E1 +3.061063000E3,5.984183740E1 +3.061365000E3,6.201500936E1 +3.061610000E3,6.171968159E1 +3.061853000E3,5.636652524E1 +3.062137000E3,5.937450988E1 +3.062405000E3,5.424162977E1 +3.062724000E3,5.577353705E1 +3.062968000E3,6.265208868E1 +3.063225000E3,6.754657095E1 +3.063470000E3,6.259832443E1 +3.063731000E3,5.846954403E1 +3.063975000E3,5.735719718E1 +3.064220000E3,5.614657426E1 +3.064460000E3,5.493678071E1 +3.064711000E3,6.175770153E1 +3.064961000E3,6.502893325E1 +3.065266000E3,6.372557142E1 +3.065562000E3,6.165604672E1 +3.065921000E3,6.202265536E1 +3.066181000E3,5.894659424E1 +3.066427000E3,5.516515279E1 +3.066669000E3,5.227763917E1 +3.066911000E3,5.331294555E1 +3.067166000E3,5.535383534E1 +3.067460000E3,5.490405248E1 +3.067721000E3,5.927902794E1 +3.068030000E3,6.001209348E1 +3.068288000E3,5.925707402E1 +3.068553000E3,6.116769528E1 +3.068848000E3,5.907075037E1 +3.069160000E3,5.402384091E1 +3.069467000E3,6.078433547E1 +3.069706000E3,6.064305090E1 +3.069991000E3,6.099922555E1 +3.070247000E3,6.081028216E1 +3.070500000E3,6.857342881E1 +3.070795000E3,6.830085683E1 +3.071035000E3,7.092929468E1 +3.071334000E3,6.670654987E1 +3.071580000E3,6.198358410E1 +3.071845000E3,6.029427505E1 +3.072216000E3,6.271100503E1 +3.072476000E3,6.548403896E1 +3.072709000E3,6.655140024E1 +3.072958000E3,6.872933885E1 +3.073221000E3,6.840034062E1 +3.073524000E3,6.189262665E1 +3.073801000E3,6.315516618E1 +3.074029000E3,6.431689152E1 +3.074282000E3,7.008635825E1 +3.074531000E3,6.529488526E1 +3.074781000E3,5.362885622E1 +3.075079000E3,6.174622467E1 +3.075321000E3,6.106059522E1 +3.075569000E3,6.727558853E1 +3.075841000E3,6.068477373E1 +3.076089000E3,6.224550385E1 +3.076358000E3,6.049387981E1 +3.076618000E3,5.554290122E1 +3.076868000E3,5.232623619E1 +3.077136000E3,5.715980006E1 +3.077434000E3,6.112308912E1 +3.077738000E3,5.964598426E1 +3.077997000E3,5.774993649E1 +3.078301000E3,5.930552673E1 +3.078632000E3,6.204668908E1 +3.078903000E3,6.135182684E1 +3.079234000E3,6.010535577E1 +3.079530000E3,5.612975229E1 +3.079846000E3,5.894789721E1 +3.080130000E3,6.424282153E1 +3.080395000E3,6.696093787E1 +3.080696000E3,5.929656512E1 +3.080931000E3,5.577162965E1 +3.081168000E3,6.096321541E1 +3.081415000E3,6.147204445E1 +3.081708000E3,6.518353223E1 +3.082066000E3,6.565001970E1 +3.082347000E3,6.152216198E1 +3.082591000E3,6.232488129E1 +3.082884000E3,6.450829181E1 +3.083131000E3,6.727741702E1 +3.083373000E3,6.596172391E1 +3.083615000E3,6.588974420E1 +3.083909000E3,6.215985231E1 +3.084146000E3,5.417797447E1 +3.084444000E3,5.776086644E1 +3.084736000E3,6.145598006E1 +3.085067000E3,6.705675690E1 +3.085353000E3,7.032609091E1 +3.085621000E3,6.942809802E1 +3.085926000E3,6.673219093E1 +3.086170000E3,5.874483463E1 +3.086457000E3,6.163530440E1 +3.086730000E3,5.863155738E1 +3.086955000E3,5.804604701E1 +3.087247000E3,7.202263239E1 +3.087542000E3,6.907595594E1 +3.087796000E3,7.104760035E1 +3.088063000E3,6.060670654E1 +3.088371000E3,6.409876160E1 +3.088642000E3,6.504332531E1 +3.088891000E3,6.050178076E1 +3.089172000E3,5.988548041E1 +3.089448000E3,6.419311516E1 +3.089715000E3,6.072209436E1 +3.089992000E3,6.148544930E1 +3.090256000E3,6.667985585E1 +3.090551000E3,6.360479893E1 +3.090829000E3,6.675347002E1 +3.091081000E3,6.585951744E1 +3.091337000E3,5.998998345E1 +3.091582000E3,7.213751425E1 +3.091973000E3,7.002319175E1 +3.092225000E3,6.554991346E1 +3.092495000E3,5.438962824E1 +3.092757000E3,5.806427109E1 +3.093010000E3,5.611571138E1 +3.093290000E3,5.427298566E1 +3.093553000E3,6.332676554E1 +3.093801000E3,6.191283999E1 +3.094088000E3,6.222056485E1 +3.094383000E3,6.679558422E1 +3.094660000E3,6.396349695E1 +3.094980000E3,6.335657582E1 +3.095321000E3,6.368682935E1 +3.095574000E3,6.239728447E1 +3.095829000E3,6.560913932E1 +3.096083000E3,6.288470186E1 +3.096327000E3,6.063834800E1 +3.096611000E3,5.698542980E1 +3.096866000E3,6.214573666E1 +3.097125000E3,6.108001307E1 +3.097382000E3,6.098898235E1 +3.097639000E3,6.935379750E1 +3.097944000E3,6.076333803E1 +3.098235000E3,5.747447310E1 +3.098595000E3,5.896750888E1 +3.098845000E3,6.428262322E1 +3.099146000E3,6.073561603E1 +3.099435000E3,5.610862272E1 +3.099679000E3,5.808393750E1 +3.099971000E3,6.306244141E1 +3.100214000E3,6.493760740E1 +3.100511000E3,5.964091377E1 +3.100753000E3,5.949423253E1 +3.100995000E3,6.324186751E1 +3.101237000E3,6.294719776E1 +3.101481000E3,6.618420708E1 +3.101805000E3,6.039251647E1 +3.102105000E3,6.883376735E1 +3.102388000E3,6.215701199E1 +3.102635000E3,6.251944475E1 +3.102926000E3,6.387718652E1 +3.103175000E3,6.262879933E1 +3.103469000E3,6.094246273E1 +3.103717000E3,5.780442917E1 +3.104010000E3,5.805018882E1 +3.104245000E3,6.073911170E1 +3.104537000E3,5.820155990E1 +3.104880000E3,5.691870737E1 +3.105139000E3,5.609187778E1 +3.105418000E3,5.368790307E1 +3.105673000E3,5.733127796E1 +3.105933000E3,5.834617124E1 +3.106196000E3,5.665251568E1 +3.106447000E3,5.839993992E1 +3.106707000E3,5.765825797E1 +3.106989000E3,6.346036236E1 +3.107241000E3,6.088974139E1 +3.107536000E3,5.623231578E1 +3.107836000E3,5.905990454E1 +3.108208000E3,5.913546091E1 +3.108462000E3,5.921957697E1 +3.108732000E3,6.403378055E1 +3.109010000E3,6.829473891E1 +3.109237000E3,6.866131452E1 +3.109530000E3,5.759864554E1 +3.109769000E3,5.216447932E1 +3.110067000E3,5.887622687E1 +3.110356000E3,5.912152229E1 +3.110621000E3,6.343631440E1 +3.110862000E3,6.110189356E1 +3.111105000E3,5.925249209E1 +3.111441000E3,5.583559168E1 +3.111708000E3,6.397874973E1 +3.112049000E3,5.864630935E1 +3.112314000E3,5.876030726E1 +3.112620000E3,5.558460131E1 +3.112980000E3,5.336927775E1 +3.113232000E3,5.351895645E1 +3.113515000E3,4.932805120E1 +3.113763000E3,6.323075662E1 +3.114057000E3,6.375401647E1 +3.114318000E3,6.430798012E1 +3.114651000E3,6.745313705E1 +3.114909000E3,6.370697195E1 +3.115204000E3,6.719832935E1 +3.115517000E3,6.353352979E1 +3.115816000E3,6.421660294E1 +3.116074000E3,6.666449428E1 +3.116372000E3,6.209745804E1 +3.116612000E3,5.853853683E1 +3.116911000E3,6.153177442E1 +3.117151000E3,6.465277685E1 +3.117439000E3,6.054074617E1 +3.117698000E3,5.762180605E1 +3.118029000E3,5.904912096E1 +3.118292000E3,6.054469105E1 +3.118547000E3,6.570885599E1 +3.118854000E3,6.686989978E1 +3.119103000E3,6.506823644E1 +3.119359000E3,5.780133308E1 +3.119610000E3,5.983707630E1 +3.119896000E3,6.102798325E1 +3.120167000E3,5.940835035E1 +3.120446000E3,6.154008300E1 +3.120717000E3,6.031178539E1 +3.120969000E3,6.222997321E1 +3.121291000E3,6.676268308E1 +3.121532000E3,6.244629438E1 +3.121778000E3,6.014719673E1 +3.122038000E3,6.351124664E1 +3.122317000E3,5.786579019E1 +3.122607000E3,5.704033688E1 +3.122864000E3,5.941823253E1 +3.123160000E3,6.366298469E1 +3.123429000E3,6.545330590E1 +3.123678000E3,6.206143443E1 +3.123932000E3,6.250040348E1 +3.124250000E3,6.193784317E1 +3.124582000E3,6.679802083E1 +3.124888000E3,6.239911876E1 +3.125141000E3,6.227743005E1 +3.125407000E3,5.930162190E1 +3.125655000E3,5.692493613E1 +3.125897000E3,6.100851678E1 +3.126155000E3,6.356932883E1 +3.126470000E3,6.583742229E1 +3.126735000E3,6.828531785E1 +3.127049000E3,6.744954014E1 +3.127349000E3,6.892448306E1 +3.127620000E3,6.312172108E1 +3.127885000E3,6.549450530E1 +3.128150000E3,6.274114245E1 +3.128434000E3,5.987443555E1 +3.128694000E3,5.754092402E1 +3.128967000E3,6.140483336E1 +3.129224000E3,5.793735580E1 +3.129483000E3,5.640840091E1 +3.129735000E3,7.068460790E1 +3.130042000E3,6.831622259E1 +3.130308000E3,6.661131327E1 +3.130563000E3,7.032191033E1 +3.130897000E3,6.429012882E1 +3.131166000E3,6.890779868E1 +3.131427000E3,6.812897599E1 +3.131726000E3,6.440583932E1 +3.132039000E3,6.371305855E1 +3.132310000E3,6.071113649E1 +3.132582000E3,6.356904702E1 +3.132834000E3,6.335195410E1 +3.133078000E3,5.922748305E1 +3.133357000E3,5.790290676E1 +3.133581000E3,6.067150466E1 +3.133827000E3,5.936438225E1 +3.134075000E3,5.651144024E1 +3.134312000E3,5.707156804E1 +3.134564000E3,6.256442790E1 +3.134822000E3,5.680653319E1 +3.135099000E3,6.386946987E1 +3.135341000E3,6.183817556E1 +3.135588000E3,5.791592939E1 +3.135843000E3,5.415500200E1 +3.136159000E3,5.828393923E1 +3.136402000E3,5.584102234E1 +3.136645000E3,5.843965538E1 +3.136922000E3,6.032067675E1 +3.137231000E3,6.082235855E1 +3.137514000E3,6.216335250E1 +3.137763000E3,6.576895249E1 +3.138052000E3,5.935628673E1 +3.138348000E3,5.697436057E1 +3.138590000E3,6.713499986E1 +3.138833000E3,5.996032355E1 +3.139071000E3,6.566814076E1 +3.139366000E3,6.469315039E1 +3.139607000E3,6.414816039E1 +3.139901000E3,6.238348704E1 +3.140144000E3,5.975478602E1 +3.140477000E3,5.617333113E1 +3.140789000E3,6.140881460E1 +3.141038000E3,5.760925345E1 +3.141323000E3,5.813474075E1 +3.141616000E3,6.190304914E1 +3.141899000E3,5.853813516E1 +3.142123000E3,6.019478920E1 +3.142387000E3,5.824830032E1 +3.142639000E3,6.031650371E1 +3.142898000E3,5.874305926E1 +3.143211000E3,6.365997735E1 +3.143459000E3,6.182267241E1 +3.143814000E3,6.153305629E1 +3.144076000E3,6.040235966E1 +3.144345000E3,6.279707978E1 +3.144591000E3,6.261441373E1 +3.144837000E3,5.722591859E1 +3.145082000E3,5.791919274E1 +3.145387000E3,6.142016587E1 +3.145678000E3,5.996802308E1 +3.145994000E3,5.761245992E1 +3.146269000E3,5.915341256E1 +3.146531000E3,5.679987844E1 +3.146814000E3,6.228452904E1 +3.147163000E3,6.038592359E1 +3.147440000E3,6.662509726E1 +3.147705000E3,5.864713600E1 +3.147961000E3,6.383827006E1 +3.148228000E3,6.445939632E1 +3.148543000E3,6.206597752E1 +3.148800000E3,6.082056407E1 +3.149046000E3,5.872798480E1 +3.149340000E3,5.792404132E1 +3.149585000E3,5.917409009E1 +3.149845000E3,5.619795947E1 +3.150164000E3,6.447379623E1 +3.150501000E3,6.336546747E1 +3.150798000E3,6.022605646E1 +3.151059000E3,5.837139298E1 +3.151360000E3,5.721847889E1 +3.151614000E3,7.085699981E1 +3.151908000E3,6.031233854E1 +3.152206000E3,6.170839562E1 +3.152452000E3,6.336115962E1 +3.152697000E3,6.732286145E1 +3.152943000E3,6.043278366E1 +3.153235000E3,5.822950572E1 +3.153537000E3,6.155234216E1 +3.153813000E3,5.671966020E1 +3.154078000E3,5.613348243E1 +3.154333000E3,5.384913785E1 +3.154580000E3,5.739778382E1 +3.154869000E3,5.617144196E1 +3.155103000E3,5.699346940E1 +3.155351000E3,6.356393037E1 +3.155653000E3,5.483372318E1 +3.155949000E3,5.806865262E1 +3.156195000E3,5.725879338E1 +3.156459000E3,5.708272088E1 +3.156776000E3,5.736330762E1 +3.157028000E3,5.620178265E1 +3.157280000E3,5.557503250E1 +3.157521000E3,6.379766868E1 +3.157864000E3,6.175462639E1 +3.158113000E3,5.970375584E1 +3.158365000E3,5.482220327E1 +3.158625000E3,6.094938302E1 +3.158872000E3,6.189076140E1 +3.159128000E3,6.365906369E1 +3.159385000E3,6.365252593E1 +3.159699000E3,6.421784723E1 +3.160039000E3,5.952347777E1 +3.160337000E3,6.582170091E1 +3.160643000E3,6.400621400E1 +3.160905000E3,5.982923632E1 +3.161162000E3,5.912958512E1 +3.161449000E3,5.744161350E1 +3.161722000E3,6.208953034E1 +3.161984000E3,6.743490019E1 +3.162228000E3,5.893358785E1 +3.162506000E3,6.260442429E1 +3.162777000E3,6.054589944E1 +3.163072000E3,5.958101250E1 +3.163380000E3,5.756716970E1 +3.163623000E3,5.897741262E1 +3.163916000E3,5.199350029E1 +3.164173000E3,5.607364633E1 +3.164444000E3,6.846587546E1 +3.164756000E3,5.833953537E1 +3.165011000E3,6.699601536E1 +3.165255000E3,6.024033326E1 +3.165530000E3,5.636786936E1 +3.165825000E3,5.917346905E1 +3.166077000E3,5.684739711E1 +3.166343000E3,5.441684119E1 +3.166607000E3,5.708423030E1 +3.166871000E3,5.726160097E1 +3.167212000E3,5.795085756E1 +3.167513000E3,5.359033433E1 +3.167800000E3,5.481028168E1 +3.168051000E3,5.771426852E1 +3.168321000E3,5.720698183E1 +3.168574000E3,6.029484328E1 +3.168847000E3,6.594273179E1 +3.169141000E3,5.814954146E1 +3.169451000E3,5.741553332E1 +3.169717000E3,5.474949866E1 +3.170064000E3,5.858087337E1 +3.170388000E3,5.901398101E1 +3.170689000E3,6.599046976E1 +3.170942000E3,6.777823262E1 +3.171184000E3,6.339704259E1 +3.171437000E3,5.678237753E1 +3.171694000E3,6.067324941E1 +3.171975000E3,6.337570500E1 +3.172215000E3,6.060254578E1 +3.172509000E3,6.511602204E1 +3.172792000E3,6.491523998E1 +3.173086000E3,6.236437487E1 +3.173442000E3,6.132637014E1 +3.173725000E3,5.575670785E1 +3.173997000E3,5.450541115E1 +3.174243000E3,5.816223835E1 +3.174516000E3,5.991084873E1 +3.174771000E3,5.959264792E1 +3.175022000E3,6.001504494E1 +3.175268000E3,5.794233494E1 +3.175510000E3,5.875384007E1 +3.175752000E3,6.582497874E1 +3.176001000E3,6.385809704E1 +3.176310000E3,6.575292490E1 +3.176700000E3,6.328122862E1 +3.176947000E3,6.160374932E1 +3.177205000E3,6.233605233E1 +3.177480000E3,5.746120395E1 +3.177733000E3,5.491961653E1 +3.178002000E3,5.346590976E1 +3.178308000E3,4.910433719E1 +3.178598000E3,5.548086035E1 +3.178876000E3,5.834728013E1 +3.179129000E3,5.722852381E1 +3.179407000E3,5.371032540E1 +3.179686000E3,5.375017527E1 +3.180066000E3,5.741446005E1 +3.180325000E3,5.595914402E1 +3.180624000E3,5.784989425E1 +3.180867000E3,5.818330240E1 +3.181112000E3,5.651638359E1 +3.181407000E3,5.400925398E1 +3.181645000E3,5.134681346E1 +3.181939000E3,5.540645654E1 +3.182189000E3,5.603348674E1 +3.182489000E3,5.612576596E1 +3.182726000E3,5.412821683E1 +3.183072000E3,5.364995955E1 +3.183373000E3,5.685067634E1 +3.183631000E3,5.292396423E1 +3.183913000E3,5.037305724E1 +3.184139000E3,5.458652507E1 +3.184386000E3,5.336216390E1 +3.184625000E3,5.355204553E1 +3.184861000E3,5.798216811E1 +3.185170000E3,5.037998219E1 +3.185412000E3,5.253320042E1 +3.185661000E3,5.864558083E1 +3.185944000E3,5.568855775E1 +3.186307000E3,6.065674046E1 +3.186594000E3,5.486017232E1 +3.186846000E3,5.354898396E1 +3.187128000E3,5.606629368E1 +3.187373000E3,5.887335608E1 +3.187646000E3,5.932986575E1 +3.187996000E3,5.618144782E1 +3.188254000E3,5.279151533E1 +3.188538000E3,5.980979660E1 +3.188819000E3,5.959008295E1 +3.189058000E3,5.757326838E1 +3.189324000E3,5.814251633E1 +3.189681000E3,6.715432083E1 +3.189929000E3,5.659786492E1 +3.190183000E3,6.813933576E1 +3.190493000E3,6.423896785E1 +3.190762000E3,6.115594562E1 +3.191063000E3,6.466877383E1 +3.191295000E3,6.400176112E1 +3.191543000E3,6.061189134E1 +3.191813000E3,6.334758009E1 +3.192062000E3,6.268892194E1 +3.192384000E3,6.255649695E1 +3.192688000E3,6.440152216E1 +3.193095000E3,6.083356984E1 +3.193368000E3,5.702207605E1 +3.193630000E3,6.129862703E1 +3.193931000E3,6.511359313E1 +3.194208000E3,6.424113032E1 +3.194458000E3,6.277957456E1 +3.194751000E3,6.067489213E1 +3.195007000E3,6.044409325E1 +3.195267000E3,5.902485869E1 +3.195523000E3,5.940450479E1 +3.195769000E3,5.629667180E1 +3.196103000E3,5.773687048E1 +3.196362000E3,5.275604571E1 +3.196676000E3,5.321996877E1 +3.196932000E3,4.952922772E1 +3.197191000E3,5.411849627E1 +3.197458000E3,5.575997519E1 +3.197718000E3,5.782402980E1 +3.197982000E3,6.092045522E1 +3.198228000E3,6.504329265E1 +3.198474000E3,5.972589974E1 +3.198713000E3,5.816644178E1 +3.198958000E3,6.190720604E1 +3.199249000E3,6.026051864E1 +3.199481000E3,6.064697026E1 +3.199744000E3,5.715218400E1 +3.200003000E3,5.509276249E1 +3.200281000E3,5.035485844E1 +3.200607000E3,5.745123346E1 +3.200874000E3,5.874041571E1 +3.201157000E3,6.540993071E1 +3.201407000E3,6.592699897E1 +3.201730000E3,5.826687879E1 +3.201982000E3,5.966898415E1 +3.202228000E3,5.928022084E1 +3.202546000E3,5.492659239E1 +3.202811000E3,5.843773228E1 +3.203091000E3,5.615478265E1 +3.203365000E3,5.378265559E1 +3.203611000E3,5.724493737E1 +3.203868000E3,5.517839982E1 +3.204137000E3,5.166422622E1 +3.204439000E3,5.966362579E1 +3.204692000E3,5.837831137E1 +3.204952000E3,5.873474045E1 +3.205216000E3,6.025432286E1 +3.205460000E3,5.709891269E1 +3.205710000E3,5.946766606E1 +3.206062000E3,5.575402329E1 +3.206367000E3,5.597615265E1 +3.206620000E3,5.417374311E1 +3.206869000E3,5.785505194E1 +3.207152000E3,5.973144393E1 +3.207405000E3,5.494944595E1 +3.207684000E3,5.859159641E1 +3.207982000E3,5.909726368E1 +3.208273000E3,6.221796591E1 +3.208541000E3,6.248597715E1 +3.208787000E3,6.143432195E1 +3.209043000E3,5.767415987E1 +3.209357000E3,6.087003136E1 +3.209636000E3,5.816954701E1 +3.209920000E3,5.644196424E1 +3.210232000E3,5.726504339E1 +3.210505000E3,5.384487818E1 +3.210769000E3,6.092886049E1 +3.211044000E3,5.910647270E1 +3.211306000E3,5.855040927E1 +3.211560000E3,6.886189365E1 +3.211803000E3,6.193548709E1 +3.212075000E3,5.895667088E1 +3.212320000E3,5.613734816E1 +3.212669000E3,6.365011223E1 +3.212934000E3,6.616065582E1 +3.213195000E3,4.911720228E1 +3.213460000E3,5.429539168E1 +3.213713000E3,5.374714305E1 +3.213991000E3,5.505703483E1 +3.214231000E3,5.216197587E1 +3.214486000E3,6.958974683E1 +3.214787000E3,6.410499727E1 +3.215047000E3,5.795707420E1 +3.215308000E3,6.210641451E1 +3.215581000E3,5.724864620E1 +3.215943000E3,5.588397230E1 +3.216221000E3,5.281586206E1 +3.216477000E3,5.616597876E1 +3.216735000E3,7.016181845E1 +3.216992000E3,7.008234703E1 +3.217238000E3,6.883905131E1 +3.217482000E3,6.039428517E1 +3.217722000E3,6.572225500E1 +3.217971000E3,6.862082655E1 +3.218221000E3,6.392739620E1 +3.218481000E3,6.757625304E1 +3.218798000E3,6.468895575E1 +3.219137000E3,5.941097234E1 +3.219443000E3,6.639331379E1 +3.219715000E3,6.512137194E1 +3.219985000E3,6.137345425E1 +3.220244000E3,6.566739727E1 +3.220494000E3,5.684090738E1 +3.220758000E3,4.865476042E1 +3.221022000E3,5.571447424E1 +3.221324000E3,5.050200483E1 +3.221601000E3,5.262698993E1 +3.221858000E3,5.385544431E1 +3.222185000E3,5.793526709E1 +3.222548000E3,5.957102097E1 +3.222796000E3,5.026005559E1 +3.223068000E3,5.164515600E1 +3.223344000E3,6.575405490E1 +3.223598000E3,6.925353270E1 +3.223876000E3,5.909751181E1 +3.224152000E3,5.561020058E1 +3.224416000E3,5.257890354E1 +3.224662000E3,5.262446891E1 +3.224954000E3,5.599583257E1 +3.225202000E3,5.286294623E1 +3.225483000E3,5.049109924E1 +3.225830000E3,6.154494550E1 +3.226096000E3,5.433068412E1 +3.226350000E3,5.256602683E1 +3.226652000E3,5.283535150E1 +3.226989000E3,5.811852242E1 +3.227251000E3,5.842389129E1 +3.227505000E3,5.524471208E1 +3.227782000E3,6.207780754E1 +3.228053000E3,6.165130850E1 +3.228302000E3,5.818085510E1 +3.228557000E3,5.646455559E1 +3.228823000E3,5.903487317E1 +3.229201000E3,5.460588060E1 +3.229471000E3,5.534537953E1 +3.229720000E3,5.492103159E1 +3.229976000E3,5.474982433E1 +3.230276000E3,6.311967749E1 +3.230531000E3,6.144237593E1 +3.230845000E3,6.204497775E1 +3.231123000E3,6.192920277E1 +3.231382000E3,6.726064707E1 +3.231675000E3,5.951322284E1 +3.231970000E3,5.620608761E1 +3.232324000E3,5.597726308E1 +3.232555000E3,5.737347613E1 +3.232845000E3,5.515502781E1 +3.233172000E3,5.977186730E1 +3.233435000E3,6.131606000E1 +3.233742000E3,5.610580070E1 +3.234000000E3,5.978218601E1 +3.234272000E3,6.319970701E1 +3.234581000E3,5.608562509E1 +3.234862000E3,6.169746582E1 +3.235159000E3,6.105762669E1 +3.235416000E3,5.369522011E1 +3.235667000E3,6.580487109E1 +3.235906000E3,5.797374086E1 +3.236200000E3,6.981267784E1 +3.236445000E3,6.229515865E1 +3.236695000E3,6.858181426E1 +3.236976000E3,5.740787399E1 +3.237218000E3,5.455964692E1 +3.237457000E3,7.204325578E1 +3.237720000E3,6.142914611E1 +3.238013000E3,5.768794211E1 +3.238280000E3,5.732491467E1 +3.238580000E3,5.793744264E1 +3.238882000E3,5.626325471E1 +3.239149000E3,5.661724856E1 +3.239424000E3,6.969605219E1 +3.239726000E3,6.482965407E1 +3.239976000E3,5.947270091E1 +3.240278000E3,5.913422796E1 +3.240576000E3,5.630232959E1 +3.240877000E3,5.956366293E1 +3.241128000E3,6.177688280E1 +3.241391000E3,5.851951662E1 +3.241664000E3,5.959787493E1 +3.241944000E3,5.765523372E1 +3.242310000E3,5.961443978E1 +3.242602000E3,5.811194000E1 +3.242910000E3,5.765320401E1 +3.243188000E3,6.631148602E1 +3.243420000E3,6.916377121E1 +3.243673000E3,6.435158828E1 +3.243925000E3,6.486926440E1 +3.244170000E3,5.506348984E1 +3.244475000E3,6.702899260E1 +3.244772000E3,6.244838658E1 +3.245003000E3,6.057959417E1 +3.245328000E3,6.103137126E1 +3.245581000E3,5.723671640E1 +3.245864000E3,5.125127512E1 +3.246123000E3,5.748187394E1 +3.246395000E3,6.148075018E1 +3.246669000E3,6.226010686E1 +3.246940000E3,5.273573389E1 +3.247233000E3,5.462141876E1 +3.247482000E3,5.946160846E1 +3.247728000E3,6.623014757E1 +3.248041000E3,5.823129903E1 +3.248289000E3,5.689561843E1 +3.248538000E3,5.851473913E1 +3.248910000E3,5.778207994E1 +3.249187000E3,6.109108533E1 +3.249462000E3,6.368024039E1 +3.249726000E3,6.527718864E1 +3.249983000E3,5.855658653E1 +3.250281000E3,5.718860903E1 +3.250534000E3,5.946900486E1 +3.250785000E3,5.688578668E1 +3.251033000E3,5.444863300E1 +3.251316000E3,5.885016251E1 +3.251570000E3,6.172482417E1 +3.251833000E3,6.833245599E1 +3.252200000E3,6.656973280E1 +3.252441000E3,6.663686281E1 +3.252721000E3,6.380106140E1 +3.252991000E3,6.113258977E1 +3.253242000E3,7.270243700E1 +3.253457000E3,7.442711013E1 +3.253706000E3,7.097589831E1 +3.253999000E3,5.740107596E1 +3.254237000E3,5.407351324E1 +3.254532000E3,6.235563554E1 +3.254777000E3,6.148535018E1 +3.255085000E3,6.767985005E1 +3.255346000E3,5.893302101E1 +3.255628000E3,5.834235484E1 +3.255897000E3,6.152524318E1 +3.256146000E3,6.124474706E1 +3.256419000E3,5.928557591E1 +3.256642000E3,5.798678480E1 +3.256921000E3,5.800318977E1 +3.257149000E3,5.813391626E1 +3.257392000E3,6.200496820E1 +3.257645000E3,6.268368020E1 +3.257945000E3,6.783162804E1 +3.258296000E3,7.343015115E1 +3.258556000E3,7.258165803E1 +3.258805000E3,6.753466802E1 +3.259117000E3,7.134403593E1 +3.259421000E3,6.813653179E1 +3.259673000E3,6.449045726E1 +3.259939000E3,7.144310958E1 +3.260188000E3,6.619195201E1 +3.260438000E3,6.990193438E1 +3.260692000E3,6.791067771E1 +3.260944000E3,7.014061601E1 +3.261191000E3,7.271368424E1 +3.261532000E3,6.889323528E1 +3.261794000E3,6.087932672E1 +3.262047000E3,6.139975131E1 +3.262322000E3,6.684035582E1 +3.262586000E3,6.977079140E1 +3.262861000E3,6.711211223E1 +3.263137000E3,6.891542739E1 +3.263415000E3,6.450575202E1 +3.263671000E3,6.375083447E1 +3.263946000E3,6.525419018E1 +3.264250000E3,6.323969714E1 +3.264517000E3,7.351653517E1 +3.264813000E3,7.240916805E1 +3.265107000E3,6.991986455E1 +3.265349000E3,6.767718353E1 +3.265598000E3,7.020318016E1 +3.265847000E3,6.593396207E1 +3.266149000E3,6.776886494E1 +3.266400000E3,6.796917668E1 +3.266653000E3,6.234495715E1 +3.266897000E3,6.492303298E1 +3.267153000E3,6.551968402E1 +3.267398000E3,6.154456079E1 +3.267647000E3,6.087933145E1 +3.267896000E3,6.053677169E1 +3.268248000E3,6.893351216E1 +3.268513000E3,6.695525456E1 +3.268817000E3,6.263553940E1 +3.269070000E3,5.965971741E1 +3.269315000E3,6.136430702E1 +3.269582000E3,7.398506568E1 +3.269828000E3,7.145137487E1 +3.270128000E3,7.238266470E1 +3.270371000E3,7.289527120E1 +3.270623000E3,7.428636164E1 +3.270931000E3,7.248535741E1 +3.271185000E3,7.399445608E1 +3.271518000E3,7.355251323E1 +3.271795000E3,7.296660624E1 +3.272081000E3,7.131368475E1 +3.272358000E3,7.068792091E1 +3.272581000E3,6.623699177E1 +3.272835000E3,5.258987188E1 +3.273093000E3,6.044165509E1 +3.273337000E3,6.879817511E1 +3.273635000E3,6.970693453E1 +3.273931000E3,7.169623139E1 +3.274180000E3,7.112396098E1 +3.274428000E3,7.190035192E1 +3.274761000E3,7.089393329E1 +3.275038000E3,6.995869622E1 +3.275323000E3,6.900781199E1 +3.275569000E3,6.766263448E1 +3.275860000E3,6.881814388E1 +3.276116000E3,6.821596427E1 +3.276370000E3,6.896702672E1 +3.276649000E3,6.827119542E1 +3.276914000E3,6.795818984E1 +3.277171000E3,7.025945887E1 +3.277482000E3,6.685661764E1 +3.277741000E3,6.810082518E1 +3.278078000E3,6.902136690E1 +3.278358000E3,6.568611650E1 +3.278604000E3,7.123802039E1 +3.278848000E3,6.300940961E1 +3.279144000E3,6.292057856E1 +3.279382000E3,6.654167697E1 +3.279622000E3,6.808014942E1 +3.279917000E3,6.902808966E1 +3.280160000E3,6.685153426E1 +3.280471000E3,6.435621527E1 +3.280770000E3,6.765080490E1 +3.281059000E3,6.808248309E1 +3.281352000E3,6.477485011E1 +3.281602000E3,5.628454157E1 +3.281867000E3,5.800927668E1 +3.282130000E3,7.131716325E1 +3.282389000E3,7.355208108E1 +3.282663000E3,7.108584109E1 +3.282932000E3,5.710440961E1 +3.283191000E3,5.329699257E1 +3.283451000E3,5.003319724E1 +3.283709000E3,5.081704645E1 +3.284003000E3,5.075383483E1 +3.284259000E3,5.431712692E1 +3.284628000E3,5.277582101E1 +3.284917000E3,6.061307876E1 +3.285214000E3,6.168657926E1 +3.285472000E3,5.854988033E1 +3.285744000E3,4.913527641E1 +3.285999000E3,5.563664353E1 +3.286250000E3,5.841488419E1 +3.286517000E3,6.437604518E1 +3.286777000E3,6.124264602E1 +3.287035000E3,5.886049633E1 +3.287300000E3,6.196549102E1 +3.287630000E3,6.776239267E1 +3.287951000E3,6.702605133E1 +3.288259000E3,5.376695086E1 +3.288499000E3,5.095339550E1 +3.288807000E3,5.078317550E1 +3.289117000E3,5.659564827E1 +3.289411000E3,7.136818215E1 +3.289684000E3,6.629708396E1 +3.289982000E3,7.133804213E1 +3.290271000E3,6.994811010E1 +3.290544000E3,6.532422657E1 +3.290800000E3,6.451013008E1 +3.291132000E3,6.261305598E1 +3.291418000E3,6.696223022E1 +3.291676000E3,4.827412656E1 +3.291930000E3,4.724575587E1 +3.292202000E3,4.846609938E1 +3.292501000E3,5.276700476E1 +3.292822000E3,5.071547801E1 +3.293065000E3,4.944777186E1 +3.293349000E3,4.466809801E1 +3.293583000E3,4.432750067E1 +3.293832000E3,5.165471909E1 +3.294078000E3,4.606912616E1 +3.294427000E3,4.826074528E1 +3.294712000E3,4.434240888E1 +3.294985000E3,4.684583968E1 +3.295286000E3,5.104787864E1 +3.295548000E3,4.839146586E1 +3.295807000E3,5.479537456E1 +3.296066000E3,5.055213000E1 +3.296324000E3,3.933656037E1 +3.296585000E3,4.513652817E1 +3.296840000E3,4.805617654E1 +3.297099000E3,4.453428427E1 +3.297354000E3,5.205427791E1 +3.297705000E3,5.001223291E1 +3.297948000E3,5.342697607E1 +3.298200000E3,5.619467550E1 +3.298461000E3,5.565459347E1 +3.298738000E3,5.819577446E1 +3.298988000E3,5.077826383E1 +3.299236000E3,5.142261821E1 +3.299478000E3,5.610754709E1 +3.299775000E3,5.248015066E1 +3.300011000E3,4.742520943E1 +3.300325000E3,5.519481303E1 +3.300626000E3,4.628613419E1 +3.300959000E3,4.430731849E1 +3.301224000E3,4.380193782E1 +3.301473000E3,4.690647127E1 +3.301746000E3,4.845294386E1 +3.302057000E3,4.912389116E1 +3.302307000E3,5.155191791E1 +3.302563000E3,5.240902416E1 +3.302820000E3,4.677306339E1 +3.303083000E3,5.037145513E1 +3.303327000E3,4.506752152E1 +3.303573000E3,4.920686196E1 +3.303857000E3,4.935493485E1 +3.304189000E3,4.415801479E1 +3.304459000E3,4.423531181E1 +3.304768000E3,3.874162391E1 +3.305030000E3,4.189958295E1 +3.305333000E3,4.005870516E1 +3.305579000E3,5.072183491E1 +3.305843000E3,4.113754863E1 +3.306140000E3,5.548273149E1 +3.306383000E3,5.383424402E1 +3.306628000E3,5.205779319E1 +3.306877000E3,4.592085607E1 +3.307206000E3,5.092451979E1 +3.307449000E3,4.823039740E1 +3.307720000E3,5.026090042E1 +3.307982000E3,5.794901070E1 +3.308198000E3,5.239372011E1 +3.308502000E3,5.024517162E1 +3.308742000E3,4.253471720E1 +3.309044000E3,4.105523794E1 +3.309340000E3,3.028117703E1 +3.309596000E3,2.809150222E1 +3.309864000E3,2.626060468E1 +3.310135000E3,5.055452447E1 +3.310501000E3,7.199271156E1 +3.310777000E3,7.172468430E1 +3.311045000E3,7.282926204E1 +3.311313000E3,7.145580608E1 +3.311562000E3,7.218798353E1 +3.311867000E3,7.081603642E1 +3.312107000E3,7.122522782E1 +3.312348000E3,7.013128466E1 +3.312672000E3,7.138239962E1 +3.312976000E3,7.589001323E1 +3.313216000E3,6.988466628E1 +3.313506000E3,6.521999768E1 +3.313853000E3,5.781158269E1 +3.314129000E3,5.698768013E1 +3.314381000E3,5.954050680E1 +3.314636000E3,5.529467486E1 +3.314903000E3,6.884377149E1 +3.315163000E3,7.293133775E1 +3.315448000E3,7.186875504E1 +3.315697000E3,6.942752239E1 +3.315995000E3,6.899930460E1 +3.316247000E3,6.333687203E1 +3.316557000E3,6.820286469E1 +3.316856000E3,7.371764624E1 +3.317124000E3,7.475494405E1 +3.317411000E3,7.135849387E1 +3.317718000E3,5.726081152E1 +3.317965000E3,5.650406291E1 +3.318233000E3,4.901561410E1 +3.318490000E3,6.881993797E1 +3.318742000E3,7.251465406E1 +3.319010000E3,6.395213402E1 +3.319311000E3,7.197127027E1 +3.319615000E3,6.948849738E1 +3.319862000E3,6.664503435E1 +3.320187000E3,6.933008182E1 +3.320443000E3,6.121514242E1 +3.320753000E3,7.017439611E1 +3.321063000E3,7.393277725E1 +3.321329000E3,7.045535337E1 +3.321643000E3,6.985180357E1 +3.321896000E3,7.158196073E1 +3.322168000E3,6.999348148E1 +3.322483000E3,6.872091406E1 +3.322823000E3,6.386396976E1 +3.323116000E3,6.891641311E1 +3.323355000E3,6.790436633E1 +3.323733000E3,6.190629476E1 +3.324010000E3,6.307072034E1 +3.324306000E3,6.459812141E1 +3.324591000E3,6.928529051E1 +3.324846000E3,6.953301961E1 +3.325158000E3,6.946121501E1 +3.325471000E3,6.177266257E1 +3.325739000E3,6.057146439E1 +3.326000000E3,6.021658005E1 +3.326269000E3,6.588088303E1 +3.326536000E3,6.594068529E1 +3.326797000E3,5.957632846E1 +3.327117000E3,5.830018402E1 +3.327415000E3,5.952820917E1 +3.327678000E3,5.996997483E1 +3.327928000E3,6.374276040E1 +3.328204000E3,6.484785648E1 +3.328504000E3,6.253699213E1 +3.328743000E3,6.495848159E1 +3.329001000E3,6.390198219E1 +3.329317000E3,6.107203426E1 +3.329613000E3,6.678300135E1 +3.329901000E3,6.048531373E1 +3.330164000E3,6.806621622E1 +3.330501000E3,6.592361883E1 +3.330795000E3,6.652249790E1 +3.331059000E3,6.079261624E1 +3.331342000E3,7.055285274E1 +3.331620000E3,6.885169705E1 +3.331870000E3,6.676175072E1 +3.332125000E3,6.653456857E1 +3.332410000E3,6.539948315E1 +3.332658000E3,6.741723145E1 +3.332915000E3,5.982571500E1 +3.333236000E3,7.234399288E1 +3.333559000E3,7.555637810E1 +3.333801000E3,7.132946849E1 +3.334053000E3,7.012473325E1 +3.334345000E3,7.083313400E1 +3.334658000E3,6.159204912E1 +3.334951000E3,5.416652771E1 +3.335187000E3,5.331536045E1 +3.335488000E3,5.516853140E1 +3.335780000E3,5.755380245E1 +3.336028000E3,6.034949591E1 +3.336335000E3,5.933559907E1 +3.336577000E3,6.200660494E1 +3.336975000E3,6.752581884E1 +3.337230000E3,6.552308109E1 +3.337509000E3,6.043162012E1 +3.337804000E3,6.346167875E1 +3.338097000E3,5.762665769E1 +3.338354000E3,6.046465836E1 +3.338657000E3,5.841838084E1 +3.338937000E3,5.426549819E1 +3.339182000E3,5.312925890E1 +3.339425000E3,5.904532039E1 +3.339705000E3,5.548841740E1 +3.339970000E3,6.467955136E1 +3.340311000E3,6.518540616E1 +3.340567000E3,6.130157495E1 +3.340843000E3,4.234380604E1 +3.341102000E3,3.685811557E1 +3.341367000E3,5.229521155E1 +3.341631000E3,4.577123603E1 +3.341913000E3,5.522804687E1 +3.342191000E3,7.219670231E1 +3.342497000E3,6.138541536E1 +3.342739000E3,5.883033505E1 +3.342994000E3,5.692990468E1 +3.343272000E3,5.784770175E1 +3.343584000E3,5.851150722E1 +3.343847000E3,7.127137910E1 +3.344137000E3,7.004437015E1 +3.344432000E3,6.719880262E1 +3.344677000E3,6.266500726E1 +3.344966000E3,6.662051616E1 +3.345209000E3,6.259160849E1 +3.345462000E3,6.521765959E1 +3.345762000E3,6.373477950E1 +3.346056000E3,5.976833176E1 +3.346294000E3,5.557373783E1 +3.346597000E3,5.486821605E1 +3.346842000E3,4.854970484E1 +3.347096000E3,6.338774242E1 +3.347415000E3,6.646909489E1 +3.347712000E3,6.370164725E1 +3.347950000E3,6.577012972E1 +3.348257000E3,6.536203326E1 +3.348509000E3,5.777033235E1 +3.348799000E3,6.942121279E1 +3.349070000E3,6.552465655E1 +3.349329000E3,6.400867966E1 +3.349583000E3,5.955829212E1 +3.349911000E3,6.233007104E1 +3.350154000E3,7.360271557E1 +3.350432000E3,7.402471070E1 +3.350716000E3,7.225249055E1 +3.350966000E3,6.654334459E1 +3.351200000E3,6.590758849E1 +3.351507000E3,6.143698167E1 +3.351805000E3,7.197722167E1 +3.352079000E3,6.778594348E1 +3.352307000E3,5.712392879E1 +3.352566000E3,5.659236121E1 +3.352870000E3,5.352359430E1 +3.353127000E3,5.362353429E1 +3.353366000E3,5.964860406E1 +3.353638000E3,7.164177428E1 +3.353890000E3,6.730234717E1 +3.354173000E3,5.336089185E1 +3.354435000E3,4.770751864E1 +3.354689000E3,4.833001031E1 +3.354956000E3,4.464972004E1 +3.355220000E3,6.809720152E1 +3.355493000E3,7.032616040E1 +3.355723000E3,7.137092547E1 +3.356052000E3,7.106236065E1 +3.356287000E3,7.302101107E1 +3.356599000E3,6.868512076E1 +3.356867000E3,7.134905494E1 +3.357133000E3,7.032184319E1 +3.357463000E3,6.484515560E1 +3.357753000E3,5.949029357E1 +3.358081000E3,6.553405106E1 +3.358385000E3,5.460622041E1 +3.358634000E3,4.798111952E1 +3.358902000E3,5.356090224E1 +3.359186000E3,5.091993104E1 +3.359516000E3,5.980463665E1 +3.359805000E3,5.623340998E1 +3.360124000E3,4.885342740E1 +3.360404000E3,4.536632542E1 +3.360660000E3,5.726647509E1 +3.360941000E3,6.266477325E1 +3.361245000E3,5.265432523E1 +3.361521000E3,4.746518361E1 +3.361777000E3,5.341135388E1 +3.362038000E3,5.094337921E1 +3.362292000E3,5.832737886E1 +3.362616000E3,5.247742127E1 +3.363049000E3,5.123926483E1 +3.363313000E3,4.482127206E1 +3.363600000E3,4.813050338E1 +3.363848000E3,5.751744958E1 +3.364157000E3,5.045245795E1 diff --git a/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a3/Picture.java b/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a3/Picture.java new file mode 100644 index 0000000..8df3d55 --- /dev/null +++ b/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a3/Picture.java @@ -0,0 +1,699 @@ +import java.awt.image.*; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.BasicStroke; +import java.util.Vector; +import javax.imageio.*; +import java.io.*; +import java.awt.*; +import javax.swing.*; +import java.util.Random; +import java.awt.geom.AffineTransform; +/** + * + * Bildklasse für die Simulation von Processing-Befehlen + * + * Diese Klasse stellt ein BufferedImage bereit, in das mit Processing-Befehlen gezeichnet + * werden kann. + * Zusätzlich kann ein Bildanzeiger über jede Änderung des Bildes informiert werden, + * um "Zurück"-Befehle zu ermöglichen. Der Bildanzeiger ist entweder eine normale Java + * ScrollPane oder ein Actor aus Greenfoot. + * Die Dokumentation der einzelnen Zeichenmethoden ist der Processing-Reference + * (https://processing.org/reference/ steht unter CC-Lizenz: https://creativecommons.org/) + * entnommen und mit Deepl.com ins Deutsche übersetzt. + * + * @version 1.0 from 23.01.2019 + * @author Thomas Schaller (ZPG Informatik Klasse 9) + */ + +public class Picture{ + + // Einstellungmöglichkeiten für das Zeichnen von Rechtecken und Ellipsen + // RADIUS = Mittelpunkt+Radius wird gegeben, CENTER = Mittelpunkt und Breite/Höhe wird gegeben, + // CORNER = Linke obere Ecke + Breite/Höhe, CORNERS = Linke obere und rechte untere Ecke + public static final int RADIUS = 1; + public static final int CENTER = 2; + public static final int CORNER = 3; + public static final int CORNERS = 4; + + // gespeichertes Bild, + private BufferedImage image; + + // aktuelle Farbeinstellungen + private Color background; + private Color pencolor; + private Color fillcolor; + + // aktuelle Stiftdicke + private double stroke; + + // akkteller Koordinatenmodus von Rechtecken und Ellipsen + private int ellipseMode = CENTER; + private int rectMode = CORNER; + + // aktueller Font + private Font textfont = null; + + // muss ein Bildanzeiger benachrichtigt werden + private PictureViewer observer = null; + private boolean autorefresh = true; + + /** + * Erzeugt ein Bild mit Standardgröße 500x400 + */ + public Picture() { + this(500,400); + } + + /** + * Erzeugt ein Bild der angegeben Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public Picture(int width, int height) { + this(width,height, "D0D0D0"); + } + + /** + * Erzeugt ein Bild aus einer Datei + * @param filename Dateiname des Bildes + */ + public Picture(String filename) { + load(filename); + } + + /** + * Erzeugt ein Bild der angegebenen Größe mit festgelegtem Hintergrund + * @param width Breite des Bildes + * @param height Höhe des Bildes + * @param background Farbe des Hintergrunds + */ + public Picture(int width, int height, String background) { + this.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + this.background = decode(background); + this.pencolor = new Color(0,0,0); + this.stroke = 1; + this.fillcolor = null; + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(this.background); + g.fillRect(0,0,width-1, height-1); + } + + /** + * Legt fest, wer das Bild anzeigt. + * Diese ermöglicht die Benachrichtung des Observers, wenn sich das Bild ändert. + * @param observer Anzeiger des Bildes + */ + + public void setObserver(PictureViewer observer) { + this.observer= observer; + } + + /** + * Direktes Setzen des Bildes (für interne Zwecke) + * @param b Bild, das gespeichert werden soll. + */ + public void setImage(BufferedImage b) { + image = b; + } + + /** + * Direktes Abfragen des Bildes (für interne Zwecke) + * @return Bild, das gerade gespeichert ist. + */ + public BufferedImage getImage() { + return image; + } + + /** + * Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + * Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + * der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu. + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public void size(int width, int height){ + pushImage(); + this.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(background); + g.fillRect(0,0,width-1, height-1); + } + + /** + * Liefert die Breite des Bildes zurück. + * @return Breite des Bildes + */ + public int getWidth() { + return image.getWidth(); + } + + /** + * Liefert die Höhe des Bildes zurück. + * @return Höhe des Bildes + */ + public int getHeight() { + return image.getHeight(); + } + + + /** + * Erzeugt eine Kopie des Bildes und übergibt sie an den Observer (falls existent), damit dieser die Versionen speichern kann + */ + private void pushImage() { + if(observer != null) { + observer.pushImage(); + } + } + + + /** + * Legt fest, ob nach jedem Zeichenbefehl automatisch das Bild auch in + * der Oberfläche aktualisiert wird. Die Einstellung "false" beschleunigt + * das Zeichnen aufwändiger Bilder und verhindert "Flackern". + * Das Neuzeichnen kann durch die Methode "refresh" gezielt ausgelöst werden. + * @param autorefresh true = nach jedem Zeichenbefehl die Anzeige aktualisieren, false= nur durch die Methode refresh neu zeichnen + */ + public void setAutoRefresh(boolean autoRefresh) { + this.autorefresh = autoRefresh; + } + + + /** + * Auch die anzeigenden Klasse wird zum Neuzeichnen aufgefordert. + */ + private void repaint() { + if(observer != null && autorefresh) { + observer.repaint(); + } + } + + /** + * Auch die anzeigenden Klasse wird zum Neuzeichnen aufgefordert. + */ + public void refresh() { + if(observer != null) { + observer.repaint(); + } + } + + // ----------------------------------------- Zeichenfunktionen ----------------------------------------------- + /** + * Löscht den Inhalt des Bildes. + * Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt. + */ + + public void clear(){ + pushImage(); + image = new BufferedImage(image.getWidth(), image.getHeight(), image.getType()); + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(background); + g.fillRect(0,0,image.getWidth()-1, image.getHeight()-1); + repaint(); + } + + /** + * Konvertiert die in einem bestimmten Modus gegebenen Koordinaten in die Java-übliche Links_Oben_Breite_Höhe Version + * Die Änderungen werden direkt im Array vorgenommen + * @param coord Array mit vier Koordinateneinträgen im gegebenen Modus + * @param mode Modus der Koordinaten (CORNER, CORNERS, RADIUS oder CENTER) + */ + private void convert(int[] coord, int mode) { + switch(mode) { + case CORNER: break; + case CORNERS: coord[2] -= coord[0]; coord[3] -= coord[1]; break; + case RADIUS: coord[2] *= 2; coord[3] *=2; + case CENTER: coord[0] -= coord[2]/2; coord[1] -= coord[3]/2; + } + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + * Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + * Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void rectMode(int mode) { + rectMode = mode; + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + * Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + * Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als Breite und Höhe der Form. + * ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void ellipseMode(int mode) { + ellipseMode = mode; + } + + + + /** + * Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + * Um eine Linie einzufärben, verwenden Sie die {@link #stroke(int, int, int) stroke()} Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + * Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + * {@link #strokeWeight(double) strokeWeight()} geändert werden. + * @param x1 x-Koordinate des 1. Punktes + * @param y1 y-Koordinate des 1. Punktes + * @param x2 x-Koordinate des 2. Punktes + * @param y2 y-Koordinate des 2. Punktes + */ + public void line(int x1, int y1, int x2, int y2) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + if (stroke > 0) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawLine(x1, y1, x2, y2); + } + repaint(); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, rectMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillRect(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawRect(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, ellipseMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillOval(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawOval(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + int px[] = {x1, x2, x3}; + int py[] = {y1, y2, y3}; + polygon(px, py); + + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + + int px[] = {x1, x2, x3, x4}; + int py[] = {y1, y2, y3, y4}; + polygon(px, py); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + + public void polygon(int[] x, int[] y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(fillcolor != null) { + + g.setColor(fillcolor); + g.fillPolygon(x,y, y.length); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawPolygon(x, y, x.length); + } + repaint(); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + ellipse(x,y,1, 1); + + } + + // ----------------------------------------- Schriftdarstellung ----------------------------------------------- + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param s Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String s, int x, int y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(pencolor != null) { + g.setColor(fillcolor); + g.setStroke(new BasicStroke((float) stroke)); + g.setFont(textfont); + g.drawString(s, x, y); + } + repaint(); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + this.textfont = font; + } + + + // ----------------------------------------- Farbfestlegungen ----------------------------------------------- + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(String color) { + try{ + return new Color( + Integer.valueOf( color.substring( 0, 2 ), 16 ), + Integer.valueOf( color.substring( 2, 4 ), 16 ), + Integer.valueOf( color.substring( 4, 6 ), 16 ) ); + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(int color) { + try{ + if(color >=0 && color < 256) { + return new Color(color,color,color); + } else { + int r = color / 0x010000 % 0xFF; + int g = color / 0x000100 % 0xFF; + int b = color % 0xFF; + System.out.println(""+r+","+g+","+b); + return new Color(r, g, b ); + } + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + this.pencolor = decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + this.pencolor=decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + this.pencolor = new Color(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + this.pencolor = null; + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + this.stroke = width; + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + this.fillcolor = decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + this.fillcolor=decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + this.fillcolor = new Color(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + this.fillcolor = null; + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + if(c < 256) { + this.background=new Color(c,c,c); + } else { + int r = c / 0x010000; + int g = c / 0x000100 % 0xFF; + int b = c % 0xFF; + this.background= new Color(r, g, b ); + } + + this.clear(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + this.background=new Color(r,g,b); + this.clear(); + } + + +// ----------------------------------------- Dateioperationen ----------------------------------------------- + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + try{ + this.image = ImageIO.read(new File(filename)); + this.background = decode("D0D0D0"); + this.pencolor = new Color(0,0,0); + this.fillcolor = null; + this.stroke = 1; + this.repaint(); + + } catch(Exception e) { + System.out.println("Fehler beim Einlesen der Bilddatei"); + } + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + try{ + String[] fn = filename.split("\\."); + if (fn.length== 1) { + ImageIO.write(image, "PNG", new File(filename+".png")); + } else { + + if (fn.length == 2 && (fn[1].toUpperCase().equals("PNG") || + fn[1].toUpperCase().equals("GIF"))){ + ImageIO.write(image, fn[1], new File(filename)); + }else { + System.out.println("Unbekanntes Bildformat"); + } + } + + } catch(Exception e) { + System.out.println("Fehler beim Speichern"); + } + } + + +// ----------------------------------------- Sonstiges ----------------------------------------------- + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + + public Color[][] getPixelArray() { + Color[][] pixel = new Color[image.getWidth()][image.getHeight()]; + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + pixel[x][y] = new java.awt.Color(image.getRGB(x,y)); + } + } + return pixel; + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + size(pixel.length,pixel[0].length); + Graphics2D g = (Graphics2D) image.getGraphics(); + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + g.setColor(pixel[x][y]); + g.fillRect(x, y, 1, 1); + } + } + repaint(); + } + + /** + * Hilfsfunktion zum Verzögern der Ausgabe + * @param millis Wartezeit in Millisekunden + */ + public void delay(int millis) { + try{ + Thread.sleep(millis); + + } catch(Exception e) { + + } + + } + + + +} diff --git a/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a3/PictureViewer.java b/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a3/PictureViewer.java new file mode 100644 index 0000000..9e6b151 --- /dev/null +++ b/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a3/PictureViewer.java @@ -0,0 +1,505 @@ +/** + * Zeigt ein Bild in einem Scrollbereich an. + * Es ist möglich das Bild zu zoomen und mehrere Versionen des Bildes zu speichern, um eine "Rückgängig" Operation durchzuführen. + * @author Thomas Schaller + * @version 1.0 vom 01.02.2019 + */ + +import java.awt.*; +import java.awt.event.*; +import javax.swing.*; +import java.awt.image.*; +import java.util.Vector; + +public class PictureViewer extends JScrollPane +{ + + // das aktuelle Bild + private Picture picture; + + // Bilder für den Züruck-Modus speichern + private static final int ANZ_BACK = 20; + private Vector history; + + // Zeichenfläche + private ImageIcon scrollImageIcon; + private JLabel imageLabel; + + // Zoom Faktor + private double zoomFactor; + public static final int FIT = -1; + public static final int NORMAL = 1; + + + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der Größe 1000x1000 + */ + public PictureViewer() { + this(1000,1000); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public PictureViewer(int width, int height) { + this(width,height, "D0D0D0"); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + * @param background Farbe des Hintergrunds als HEX-String (z.B. "FF3A45") + */ + public PictureViewer(int width, int height, String background) { + this(new Picture(width,height, background)); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild aus einer Bilddatei + * @param filename Name des Bildes + */ + public PictureViewer(String filename) { + this(new Picture(filename)); + } + + /** + * Erzeugt ein ScrollPanel und zeigt das Bild-Objekt an + * @param picture anzuzeigendes Bild + */ + public PictureViewer(Picture picture) + { + this.picture=picture; + + zoomFactor=1; + + scrollImageIcon = new ImageIcon(picture.getImage().getScaledInstance(picture.getImage().getWidth(), picture.getImage().getHeight(), Image.SCALE_FAST)); + imageLabel = new JLabel(scrollImageIcon); + imageLabel.setVerticalAlignment(JLabel.CENTER); + imageLabel.setHorizontalAlignment(JLabel.CENTER); + setViewportView(imageLabel); + + this.setBorder(BorderFactory.createLineBorder(Color.black)); + picture.setObserver(this); + history = new Vector(); + + } + + /** + * Setzt das anzuzeigende Bild neu + * @param picture anzuzeigendes Bild + */ + public void setImage(Picture picture) { + this.history = new Vector(); + this.picture = picture; + setZoom(NORMAL); + } + + /** + * Speichert das übergebene Bild in der History. + * @param b zu speicherndes Bild + */ + public void pushImage() { + if( this.ANZ_BACK > 0) { + if(history.size() == this.ANZ_BACK) { + history.removeElementAt(0); + } + + BufferedImage b = new BufferedImage(picture.getWidth(), picture.getHeight(), picture.getImage().getType()); + Graphics g = b.getGraphics(); + g.drawImage(picture.getImage(), 0, 0, null); + g.dispose(); + + history.add(b); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + private void popImage() { + int anz = history.size(); + if(anz>0) { + BufferedImage img = history.get(anz-1); + history.removeElementAt(anz-1); + picture.setImage(img); + setZoom(zoomFactor); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + public void back() { + popImage(); + } + + /** + * Setzt das angezeigt Bild neu und beachtet dabei den Zoomfaktor. + */ + public void repaint() { + if( picture != null) { + double factor= zoomFactor; + if (zoomFactor == FIT) { + double factorw = ((double) getWidth()-2) / picture.getWidth(); + double factorh = ((double) getHeight()-2) / picture.getHeight(); + factor = Math.min(factorw, factorh); + } + int width = (int) (picture.getWidth()*factor); + int height = (int) (picture.getHeight()*factor); + + + + scrollImageIcon.setImage(picture.getImage().getScaledInstance(width, height, Image.SCALE_DEFAULT)); + revalidate(); + } + } + + /** + * Setzt den Zoom-Faktor für das Bild. + * Als Zoomfaktor sind auch die Konstanten Bildanzeiger.FIT (auf Bildschirmgröße zoomen) und Bildanzeiger.NORMAL (100%) möglich. + * @param factor Zoomfaktor (1.0 = 100%). + */ + public void setZoom(double factor) + { + zoomFactor = factor; + repaint(); + } + + + // Wrappermethoden + /** + * Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + * Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + * der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu. + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public void size(int width, int height){ + picture.size(width, height); + } + + /** + * Liefert die Breite des Bildes zurück. + * @return Breite des Bildes + */ + public int getImageWidth() { + return picture.getWidth(); + } + + /** + * Liefert die Höhe des Bildes zurück. + * @return Höhe des Bildes + */ + public int getImageHeight() { + return picture.getHeight(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + picture.background(c); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + picture.background(r,g,b); + } + + /** + * Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + * Um eine Linie einzufärben, verwenden Sie die {@link #stroke(int, int, int) stroke()} Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + * Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + * {@link #strokeWeight(double) strokeWeight()} geändert werden. + * @param x1 x-Koordinate des 1. Punktes + * @param y1 y-Koordinate des 1. Punktes + * @param x2 x-Koordinate des 2. Punktes + * @param y2 y-Koordinate des 2. Punktes + */ + public void line(int x1, int y1, int x2, int y2) { + picture.line(x1,y1,x2,y2); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + picture.rect(a,b,c,d); + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + picture.ellipse(a,b,c,d); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + picture.triangle(x1,y1,x2,y2,x3,y3); + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + picture.quad(x1,y1,x2,y2,x3,y3,x4,y4); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + public void polygon(int[] x, int[] y) { + picture.polygon(x,y); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + picture.point(x,y); + + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + * Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + * Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void rectMode(int mode) { + picture.rectMode(mode); + } + + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + * Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + * Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als Breite und Höhe der Form. + * ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void ellipseMode(int mode) { + picture.ellipseMode(mode); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + picture.stroke(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + picture.noStroke(); + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + picture.strokeWeight(width); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + picture.fill(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + picture.noFill(); + } + + /** + * Löscht den Inhalt des Bildes. + * Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt. + */ + public void clear(){ + picture.clear(); + } + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + picture.load(filename); + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + picture.save(filename); + } + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param t Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String t, int x, int y) { + picture.text(t,x,y); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + picture.textFont(font); + } + + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + public Color[][] getPixelArray() { + return picture.getPixelArray(); + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + picture.setPixelArray(pixel); + } + + + +} diff --git a/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a3/Table.java b/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a3/Table.java new file mode 100644 index 0000000..ee5a211 --- /dev/null +++ b/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a3/Table.java @@ -0,0 +1,894 @@ +/** + * Die Klasse Table vereinfacht den Zugriff auf CSV-Dateien. + * Die Klassen Table und TableRow ermöglichen einen einfachen Zugriff auf tabellenbasierte + * Dokumente. + * + * @author Thomas Schaller + * @version 1.0 vom 01.02.2019 + */ + +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.ArrayList; +import java.io.*; +import java.util.Scanner; + +import org.jdom.Document; +import org.jdom.Element; +import org.jdom.Attribute; +import org.jdom.JDOMException; +import org.jdom.input.SAXBuilder; +import org.jdom.output.XMLOutputter; +import org.jdom.output.Format; + +public class Table +{ + // Standardtrennzeichen für Spalten + private static final char DEFAULT_SEPARATOR = ';'; + // Standardmarkierung für Texte + private static final char DEFAULT_QUOTE = '"'; + // Standardtrennzeichen für Dezimalzahlen + private static final char DEFAULT_COMMA = ','; + + // mögliche Spaltentypen + private static final String UNKNOWN ="UNKOWN"; + private static final String INT = "INTEGER"; + private static final String DOUBLE = "DOUBLE"; + private static final String FLOAT = "FLOAT"; + + // interne Verwaltung des Dokuments als JDOM-Document-Objekt + private Document doc; + // Verweis auf Element für Kopfzeile + private Element header; + // Ende Attribute + + /** + * Erzeugt leeres Tabellen-Dokument. + */ + public Table() { + this.doc = new Document(); + doc.setRootElement(new Element("CSV-Data")); + this.header = new Element("Header"); + doc.getRootElement().addContent(header); + } + + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei und erstellt ein Tabellenobjekt mit seinen Werten. + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public Table(String filename, String options, char separator, char quote) { + loadCSV(filename, options, separator, quote); + } + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei und erstellt ein Tabellenobjekt mit seinen Werten (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + */ + public Table(String filename, String options) { + loadCSV(filename, options); + } + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei ohne Kopfzeile und erstellt ein Tabellenobjekt mit seinen Werten (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public Table(String filename) { + loadCSV(filename); + } + + // Anfang Methoden + /** + * Liest den Inhalt einer CSV-Datei ohne Kopfzeile (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public void loadCSV(String filename) { + loadCSV(filename, ""); + } + + /** + * Liest den Inhalt einer CSV-Datei (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + */ + public void loadCSV(String filename, String options) { + loadCSV(filename, options, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** + * Liest den Inhalt einer CSV-Datei. + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public void loadCSV(String filename, String options, char separator, char quote) { + doc = new Document(); + doc.setRootElement(new Element("CSV-Data")); + header = new Element("Header"); + doc.getRootElement().addContent(header); + try { + File f = new File(filename); + Scanner scanner = new Scanner(new File(filename)); + if(options.toLowerCase().contains("header") && scanner.hasNext()) { + List entries = parseLine(scanner.nextLine(), separator, quote); + int i= 0; + for(String s : entries) { + Element entry = new Element("Column"); + header.addContent(entry); + entry.setText(s); + entry.setAttribute("type", "unknown"); + i++; + } + } + + List cols = header.getChildren(); + + while (scanner.hasNext()) { + Element line = new Element("Row"); + doc.getRootElement().addContent(line); + List entries = parseLine(scanner.nextLine(), separator, quote); + int i= 0; + + for(String s : entries) { + + if(i==cols.size()) { + Element entry = new Element("Column"); + entry.setAttribute("type", "unknown"); + header.addContent(entry); + cols = header.getChildren(); + } + + Element entry = new Element("Entry"); + entry.setText(s); + line.addContent(entry); + i++; + } + } + scanner.close(); + + } catch (Exception e) { + System.out.println("Fehler beim Lesen der CSV-Datei"); + } + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei ohne Kopfzeile (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public void saveCSV(String filename) { + saveCSV(filename, ""); + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthalten, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile haben soll, + * dann lassen Sie einfach die Option "header" weg. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile haben soll. + * @param filename Dateiname der CSV-Datei. + */ + public void saveCSV(String filename, String options) { + saveCSV(filename, options, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei. + * Wenn die Datei eine Kopfzeile enthalten, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile haben soll, + * dann lassen Sie einfach die Option "header" weg. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile haben soll. + * @param filename Dateiname der CSV-Datei. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public void saveCSV(String filename, String options, char separator, char quote){ + try{ + File f = new File(filename); + PrintStream outputFile = new PrintStream (f); + System.out.println("Speicher in : "+f.getAbsolutePath()); + List columns = header.getChildren(); + String sq = ""+quote; + String ss = ""+separator; + if(quote =='"') sq = "\""; + if(separator =='"') ss = "\""; + + if(options.toLowerCase().contains("header")) { + String h = ""; + for(Element c : columns) { + h += ss + sq + c.getText()+sq; + } + outputFile.println(h.substring(1)); + } + for(int i = 0; i parseLine(String cvsLine) { + return parseLine(cvsLine, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** HIlfsfunktion für die Analyse einer Dateizeile + * @param cvsLine Zeile aus der Datei + * @param sparator Trennzeichen für die Spalten + * @return Liste von String für die einzelnen Spalten + */ + private List parseLine(String cvsLine, char separator) { + return parseLine(cvsLine, separator, DEFAULT_QUOTE); + } + + /** HIlfsfunktion für die Analyse einer Dateizeile + * @param cvsLine Zeile aus der Datei + * @param sparator Trennzeichen für die Spalten + * @param customQuote Kennung für Strings + * @return Liste von String für die einzelnen Spalten + */ + private List parseLine(String cvsLine, char separator, char customQuote) { + + List result = new ArrayList<>(); + + //if empty, return! + if (cvsLine == null && cvsLine.isEmpty()) { + return result; + } + + //ggf. Default-Value laden + if (customQuote == ' ') { + customQuote = DEFAULT_QUOTE; + } + + if (separator == ' ') { + separator = DEFAULT_SEPARATOR; + } + + StringBuffer curVal = new StringBuffer(); + boolean inQuotes = false; + boolean startCollectChar = false; + boolean doubleQuotesInColumn = false; + + char[] chars = cvsLine.toCharArray(); + + for (char ch : chars) { + + if (inQuotes) { // aktueller Text ist in Quotes eingeschlossen + startCollectChar = true; + + if (ch == customQuote) { // Quotes werden beendet, aber Achtung bei "" => Metazeichen + inQuotes = false; + if (ch == '\"') { + doubleQuotesInColumn = true; + } + + } else { + + if (ch == '\"' && !doubleQuotesInColumn) { + doubleQuotesInColumn = true; + } else { + curVal.append(ch); + doubleQuotesInColumn = false; + } + + } + } else { + if (ch == customQuote) { + + inQuotes = true; + + //Fixed : allow "" in empty quote enclosed + if (ch == '\"'){ + if(doubleQuotesInColumn) { + curVal.append('"'); + doubleQuotesInColumn = false; + } else doubleQuotesInColumn = true; + + + } + } + else { + doubleQuotesInColumn = false; + if (ch == separator) { + + result.add(curVal.toString()); + + curVal = new StringBuffer(); + startCollectChar = false; + + } else if (ch == '\r') { + //ignore LF characters + continue; + } else if (ch == '\n') { + //the end, break! + break; + } else { + curVal.append(ch); + } + } + } + + } + result.add(curVal.toString()); + return result; + } + + /** + * Sucht die Nummer einer durch Namen gegebenen Spalte. + * @param name Name der Spalte + * @return Nummer der Spalte + */ + + private int findColumnNumber(String name) { + List columns = header.getChildren(); + int i = 0; + for(Element c : columns) { + if (c.getText().toLowerCase().equals(name.toLowerCase())) { + return i; + + } + i++; + } + return -1; + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an. + */ + public void addColumn() { + Element entry = new Element("Column"); + entry.setAttribute("type", Table.UNKNOWN); + header.addContent(entry); + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an und benennt sie. + * @param title Bezeichnung der Spalte + */ + public void addColumn(String title) { + addColumn(); + Element nc = ((List)(header.getChildren())).get(header.getChildren().size()-1); + nc.setText(title); + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an und benennt und typisiert sie. + * @param title Bezeichnung der Spalte + * @param type Typ der Spalte (UNKNOWN, DOUBLE, INTEGER, FLOAT) + */ + public void addColumn(String title, String type) { + addColumn(title); + Element nc = ((List)(header.getChildren())).get(header.getChildren().size()-1); + nc.setAttribute("type", type); + } + + /** + * Löscht eine Spalte. + * @param i Nummer der Spalte. + */ + public void removeColumn(int i) { + List lines = doc.getRootElement().getChildren(); + for(Element l : lines) { + if(l.getChildren().size()>i) l.removeContent(i); + } + } + + /** + * Löscht eine Spalte + * @param name Name der Spalte + */ + public void removeColumn(String name) { + try{ + removeColumn(findColumnNumber(name)); + } catch(Exception e) { System.out.println("Unbekannter Spaltenname");} + } + + /** + * Liefert die Anzahl der Spalten in der Tabelle + * @return Anzahl der Spalten + */ + public int getColumnCount() { + return header.getChildren().size(); + } + + /** + * Liefert die Anzahl der Zeilen in der Tabelle + * @return Anzahl der Zeilen + */ + public int getRowCount() { + return doc.getRootElement().getChildren().size()-1; + } + + /** + * Löscht alle Zeilen der Tabelle. + * Die Spaltenüberschriften und Typen bleiben erhalten. + */ + public void clearRows() { + doc.getRootElement().removeChildren("Row"); + } + + /** + * Fügt eine neue Zeile an das Ende der Tabelle an. + * @return ein TableRow-Objekt für diese neue Zeile + */ + public TableRow addRow() { + Element row = new Element("Row"); + doc.getRootElement().addContent(row); + return new TableRow(doc, row); + } + + /** + * Löscht eine Zeile + * @param i Nummer der Zeile + */ + public void removeRow(int i) { + if(i rows = doc.getRootElement().getChildren(); + return new TableRow(doc, rows.get(i+1)); + } + return null; + } + + /** + * Liefert die ganze Tabelle als Array von TableRow-Objekten + * @return Array von TableRow-Objekten + */ + public TableRow[] rows() { + TableRow[] rows = new TableRow[getRowCount()]; + for(int i = 0; i < getRowCount(); i++) { + rows[i] = getRow(i); + } + return rows; + } + + /** + * Liefert den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param column Spaltennummer + * @return Wert der Zelle + */ + public int getInt(int row, int column) { + return getRow(row).getInt(column); + } + + /** + * Liefert den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param name Name der Spalte + * @return Wert der Zelle + */ + public int getInt(int row, String name) { + return getRow(row).getInt(name); + } + + /** + * Setzt den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param column Spaltennummer + * @param value neuer Wert der Zelle + */ + public void setInt(int row, int column,int value) { + getRow(row).setInt(column, value); + } + + /** + * Setzt den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(int row, String name, int value) { + getRow(row).setInt(name, value); + } + + /** + * Liefert alle Werte einer Zeile als Integer-Array. + * @param row Nummer der Zeile + * @return int-Array, dass alle Werte der Zeile enthält + */ + public int[] getIntRow(int row) { + try{ + TableRow trow = getRow(row); + int anz = getColumnCount(); + int[] r = new int[anz]; + for(int i=0; i) (header.getChildren())).get(i).getText(); + } else { + return ""; + } + } + + /** + * Liefert die Nummer einer Spalte + * @param name Name der Spalte + * @return Nummer der Spalte + */ + public int getColumn(String name) { + List columns = header.getChildren(); + int i = 0; + while (i < columns.size()) { + if (columns.get(i).getText().toLowerCase().equals(name.toLowerCase())) { + return i; + } + i++; + } // end of while + return -1; + } + + + /** + * Erzeugt eine neue Zeile mit i Spalten + * Wenn bisher nicht genügend Spalten vorhanden sind, werden automatisch neue Spalten hinzugefügt (auch zum Header) + * @param i Anzahl der Spalten + */ + private Element buildRow(int i) { + List columns = header.getChildren(); + Element entry=null; + for(int j=0; j<=i; j++) { + + if(j==columns.size()) { + Element h = new Element("Column"); + h.setAttribute("type", "unknown"); + header.addContent(h); + columns = header.getChildren(); + } + if(j==current.getChildren().size()) { + entry = new Element("Entry"); + current.addContent(entry); + + } + + } + return entry; + + } + + /** + * Erzeugt eine neue Zeile. + * Es werden genügend Spalten erzeugt, dass ein Wert in Spalte "name" eingetragen werden kann + * @param name Name der Spalte + */ + private Element buildRow(String name) { + List columns = header.getChildren(); + int i = 0; + for(Element c: columns) { + + if(c.getText().toLowerCase().equals(name.toLowerCase())) { + return buildRow(i); + } + i++; + } + return null; + + } + + /** + * Liefert den Wert einer Zelle als String + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public String getString(int i) { + if(i >= current.getContent().size()) return ""; + Element e = (Element) current.getContent(i) ; + if(e!=null) { + return e.getText(); + } else { + return ""; + } + } + + /** + * Liefert den Wert einer Zelle als String + * @param name Name der Spalte + * @return Wert der Zelle + */ + public String getString(String name) { + return getString(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als String + * @param i Nummer der Spalte + * @param text neuer Wert der Zelle + */ + public void setString(int i, String text) { + + Element e = buildRow(i); + if(e!=null) e.setText(text); + } + + /** + * Setzt den Wert einer Zelle als String + * @param name Name der Spalte + * @param text neuer Wert der Zelle + */ + public void setString(String name, String text) { + Element e = buildRow(name); + if(e!=null) e.setText(text); + } + + + /** + * Liefert den Wert einer Zelle als Int-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public int getInt(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Integer.parseInt(e.getText()); + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Int-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public int getInt(String name) { + return getInt(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Int-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(int i,int value) { + + Element e = buildRow(i); + if(e!=null) e.setText(""+value); + } + + /** + * Setzt den Wert einer Zelle als Int-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(String name, int value) { + Element e = buildRow(name); + if(e!=null) e.setText(""+value); + } + + /** + * Liefert den Wert einer Zelle als Float-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public float getFloat(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Float.parseFloat(e.getText().replace(",",".")); + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Float-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public float getFloat(String name) { + return getFloat(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Float-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setFloat(int i,float value) { + + Element e = buildRow(i); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Setzt den Wert einer Zelle als Float-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setFloat(String name, float value) { + Element e = buildRow(name); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Liefert den Wert einer Zelle als Double-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public double getDouble(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Double.parseDouble(e.getText().replace(",",".")); + + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Double-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public double getDouble(String name) { + return getDouble(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Double-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setDouble(int i,double value) { + + Element e = buildRow(i); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Setzt den Wert einer Zelle als Double-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setDouble(String name, double value) { + Element e = buildRow(name); + if(e!=null) e.setText(format.format(value)); + } + +} diff --git a/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a3/XML.java b/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a3/XML.java new file mode 100644 index 0000000..c06c490 --- /dev/null +++ b/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a3/XML.java @@ -0,0 +1,637 @@ +/** + * Klasse zum Vereinfachten Zugriff auf XML-Dokumente + * Diese Klasse ist für den Einsatz in der Schule gedacht und soll den Schülern + * einen einfachen Zugriff auf XML-Dokumente ermöglichen. Die zur Verfügung + * stehenden Befehle sind wie in Processing realisiert. + * Dabei ist jeder Teilbaum des Dokuments wieder als XML-Objekt zugreifbar, das + * intern auf die gleiche XML-Dokumentstruktur zugreift. + * Dies ermöglicht bei unsachgemäßem Gebrauch die XML-Struktur zu zerstören. Im + * normalen Gebrauch sollte dies aber nicht relevant sein. + * + * Benötigt: jdom-1.1.3.jar + + * @author Thomas Schaller + * @version 1.0 vom 31.01.2019 + */ +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.ArrayList; +import java.io.*; + +import org.jdom.Document; +import org.jdom.Element; +import org.jdom.Attribute; +import org.jdom.JDOMException; +import org.jdom.input.SAXBuilder; +import org.jdom.output.XMLOutputter; +import org.jdom.output.Format; + +public class XML { + // Anfang Attribute + // XML-Dokumentstruktur + private Document doc; + // Zeiger auf das aktuelle Element + private Element current; + // Ende Attribute + + /** + * Erzeugt ein leeres XMLDokument + */ + public XML() { + this.doc = new Document(); + this.current = null; + } + + /** + * Erzeugt ein XML-Dokument aus einer Datei + * @param filename Dateiname der XML-Datei + */ + public XML(String filename) { + loadXML(filename); + } + + /** + * interner Konstruktor, um ein XML Objekt zu erzeugen, das auf einen bestimmten Knoten verweist + * @param doc die XML-Dokumentstruktur + * @param current Zeiger auf das aktuelle Element + */ + private XML(Document doc, Element current) { + this.doc = doc; + this.current = current; + } + + // Anfang Methoden + /** Öffnet das durch den Dateinamen gegebene Dokument + * @param filename Dateiname des XML-Files + */ + public void loadXML(String filename) { + doc = null; + File f = new File(filename); + + try { + // Das Dokument erstellen + SAXBuilder builder = new SAXBuilder(); + doc = builder.build(f); + + } catch (JDOMException e) { + e.printStackTrace(); + + } catch (IOException e) { + e.printStackTrace(); + } + // Zeiger im Baum auf Root-Element + current = doc.getRootElement(); + } + + /** Speichert den XML-Baum im angegebenen Dateinamen + * @param filename Dateiname des XML-Files + */ + public void saveXML(String filename) { + try { + // new XMLOutputter().output(doc, System.out); + XMLOutputter xmlOutput = new XMLOutputter(); + + // display nice nice + xmlOutput.setFormat(Format.getPrettyFormat()); + File f = new File(filename); + FileOutputStream outputFile = new FileOutputStream(f); + System.out.println("Speicher in : "+f.getAbsolutePath() ); + xmlOutput.output(doc, outputFile); + outputFile.close(); + System.out.println("File Saved!"); + } catch (IOException io) { + System.out.println(io.getMessage()); + } + + } + + //----------------------------------------------- Zeigerbewegungen -------------------------------------------------- + /** + * liefert ein XML-Objekt, das auf den Vaterknoten des aktuellen Elements zeigt. + * @return Vater des aktuellen Objekts. + */ + public XML getParent() { + if(current != null) { + Element parent = current.getParentElement(); + if (parent == null) { + return null; + } else { + return new XML(doc, parent); + } + } + return null; + } + + /** + * Überprüft, ob das Element irgendwelche Kinder hat oder nicht, und gibt das Ergebnis als boolean zurück. + * @return true, wenn Kinder vorhanden sind, sonst false + */ + public boolean hasChildren() { + if (current == null) { + return doc.hasRootElement(); + } else { + return current.getChildren().size()>0; + } + } + + /** + * Ermittelt die Namen aller Kinder des Elements und gibt die Namen als ein Array von Strings zurück. + * Dies ist dasselbe wie das Durchlaufen und Aufrufen von getName() auf jedem untergeordneten Element einzeln. + * @return Liste aller Namen der Kinder + */ + public String[] listChildren() { + if (current == null) { + if(doc.hasRootElement()) { + String[] names = new String[0]; + names[0] = doc.getRootElement().getName(); + return names; + } else { + return null; + } + } else { + List ch_element = current.getChildren(); + String[] names = new String[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + names[i] = ch_element.get(i).getName(); + } + return names; + } + } + + /** + * Liefert alle Kinder des Elements als Array von XML-Objekten. + * @return Array der Kinder als XML-Objekte + */ + public XML[] getChildren() { + if (current == null) { + if(doc.hasRootElement()) { + XML[] ch_xml = new XML[1]; + ch_xml[0] = new XML(doc, doc.getRootElement()); + return ch_xml; + } else { + return null; + } + } else { + List ch_element = current.getChildren(); + XML[] ch_xml = new XML[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + ch_xml[i] = new XML(doc, ch_element.get(i)); + } + return ch_xml; + } + } + + /** + * Liefert bestimmte Kinder des Elements als Array von XML-Objekten. + * Die Methode gibt dabei alle Kinder zurück, die dem angegebenen Namen entsprechen. + * @param name Name der gesuchten Kind-Objekte + * @return Array der Kinder als XML-Objekte + */ + public XML[] getChildren(String name) { + if (current == null) { + if(doc.hasRootElement()) { + XML[] ch_xml = new XML[1]; + ch_xml[0] = new XML(doc, doc.getRootElement()); + if(doc.getRootElement().getName().equals(name)){ + return ch_xml; + } else { + return null; + } + } else { + return null; + } + } else { + List ch_element = current.getChildren(name); + XML[] ch_xml = new XML[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + ch_xml[i] = new XML(doc, ch_element.get(i)); + } + return ch_xml; + } + } + + /** + * Liefert das erste Kind des Elements mit einem bestimmten Namen. + * Die Methode gibt das erste Kind zurück, das dem angegebenen Namen entsprechen. + * @param name Name des gesuchten Kind-Objektes + * @return Kind als XML-Objekt + */ + + public XML getChild(String name) { + if (current == null) { + Element e = doc.getRootElement(); + if (e.getName().equals(name)) { + return new XML(doc, e); + } else { + return null; + } + } else { + String[] names = name.split("/"); + Element e = current; + int i = 0; + while(i < names.length) { + e = e.getChild(names[i]); + if (e==null) return null; + i++; + } + return new XML(doc, e); + } + } + + /** + * Liefert das i. Kind des Elements. + * Die Methode gibt das i. Kind des aktuellen Elements zurück. + * @param i Nummer des Kindes + * @return Kind als XML-Objekt + */ + public XML getChild(int i) { + if (current == null) { + return new XML(doc, doc.getRootElement()); + } else { + List ch_element = current.getChildren(); + if (i>=ch_element.size()) return null; + return new XML(doc, ch_element.get(i)); + } + } + + //--------------------------------------------------- Methoden für das aktuelle Element ------------------------------------------------- + /** + * Frage den Namen des aktuellen Elements ab + * @return Namen des Elements + */ + public String getName() { + if (current==null) return ""; + return current.getName(); + } + + /** + * Setze den Namen des aktuellen Elements. + * @param name Neuer Name des Elements + */ + public void setName(String name) { + if (current==null) return; + current.setName(name); + } + + /** + * liefert die Anzahl der Attribute eines Elements. + * @return Anzahl des Attribute + */ + public int getAttributeCount() { + if (current == null) return 0; + return current.getAttributes().size(); + } + + /** + * liefert zurück, ob das aktuelle Element Attribute hat . + * @return true, wenn es Attribute gibt + */ + public boolean hasAttribute() { + if (current == null) return false; + return current.getAttributes().size()>0; + } + + /** + * Ruft alle Attribute des angegebenen Elements ab und gibt sie als Array von Strings zurück. + * @return Liste der Attributnamen + */ + public String[] listAttributes() { + if (current == null) return null; + List attr = current.getAttributes(); + String[] names = new String[attr.size()]; + for(int i=0; i < attr.size() ; i++) { + names[i] = attr.get(i).getName(); + } + return names; + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs + */ + public String getString(String attribute) { + if (current==null) return ""; + return current.getAttributeValue(attribute); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs + */ + public String getString(String attribute, String defaultValue) { + if (current==null) return defaultValue; + return current.getAttributeValue(attribute,defaultValue); + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param text neuer Wert des Attributs + */ + public void setString(String attribute, String text) { + if (current==null) return; + current.setAttribute(attribute, text); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Integer-Zahl + */ + public int getInt(String attribute) { + if (current==null) return 0; + try{ + int i = Integer.parseInt(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als Integer-Zahl + */ + public int getInt(String attribute, int defaultValue) { + if (current==null) return defaultValue; + try{ + int i = Integer.parseInt(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setInt(String attribute, int value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Float-Zahl + */ + public float getFloat(String attribute) { + if (current==null) return 0; + try{ + float i = Float.parseFloat(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als Float-Zahl + */ + public float getFloat(String attribute, float defaultValue) { + if (current==null) return defaultValue; + try{ + float i = Float.parseFloat(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setFloat(String attribute, float value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Double-Zahl + */ + public double getDouble(String attribute) { + if (current==null) return 0; + try{ + double i = Double.parseDouble(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + +/** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als double-Zahl + */ + public double getDouble(String attribute, double defaultValue) { + if (current==null) return defaultValue; + try{ + double i = Double.parseDouble(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setDouble(String attribute, double value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt den Inhalt/Text des aktuellen Elements ab + * @return Inhalt des Elements + */ + public String getContent() { + if ( current==null) return ""; + + return current.getText(); + } + + /** + * Fragt den Inhalt/Text des aktuellen Elements ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardtext + * @return Inhalt des Elements + */ + public String getContent(String defaultValue) { + if ( current==null) return defaultValue; + String t = current.getText(); + if(t.equals("")) t = defaultValue; + return t; + } + + /** + * Setzt den Inhalt/Text des aktuellen Elements + * @param text Neuer Inhalt des Elements + */ + public void setContent(String text) { + if ( current==null) return; + current.setText(text); + } + + + /** + * Fragt den Inhalt des aktuellen Elements als Integerzahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ public int getIntContent(int defaultValue) { + if ( current==null) return defaultValue; + try{ + int i = Integer.parseInt(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Integerzahl ab + * @return Inhalt des Elements + */ + public int getIntContent() { + if ( current==null) return 0; + try{ + int i = Integer.parseInt(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setIntContent(int value) { + if ( current==null) return; + current.setText(""+value); + } + + + /** + * Fragt den Inhalt des aktuellen Elements als Floatzahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ + public float getFloatContent(float defaultValue) { + if ( current==null) return defaultValue; + try{ + float i = Float.parseFloat(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Floatzahl ab + * @return Inhalt des Elements + */ + public float getFloatContent() { + if ( current==null) return 0; + try{ + float i = Float.parseFloat(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setFloatContent(float value) { + if ( current==null) return; + current.setText(""+value); + } + +/** + * Fragt den Inhalt des aktuellen Elements als Doublezahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ + public double getDoubleContent(double defaultValue) { + if ( current==null) return defaultValue; + try{ + double i = Double.parseDouble(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Doublezahl ab + * @return Inhalt des Elements + */ + public double getDoubleContent() { + if ( current==null) return 0; + try{ + double i = Double.parseDouble(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setDoubleContent(double value) { + if ( current==null) return; + current.setText(""+value); + } + + + // ----------------------------------------------- XML-Struktur aufbauen ------------------------------------------------ + /** Erzeuge neues Element nach der aktuellen Position und setze dieses als aktuelles Element + * @param name Name des neuen Elements + * @return neues Element als XML-Objekt + */ + public XML addChild(String name) { + Element e = new Element(name); + if(current == null){ // man ist auf Root-Ebene + doc.setRootElement(e); + + } + else { + current.addContent(e); + } // end of if-else + return new XML(doc, e); + } + + /** + * liefert das aktuelle Element als jdom-Element-Objekt + * @return aktuelles Element + */ + private Element getCurrent() { + return current; + } + + /** + * löscht ein Kind des aktuellen Knotens. + * Ist kid kein Kind des aktuellen Elements passiert gar nichts. + * @param kid XML-Objekt des Kindes + */ + public void removeChild(XML kid) { + if (current == null) return; + Element e = kid.getCurrent(); + int index = current.indexOf(e); + if(index >= 0) { current.removeContent(e);} + } + +} diff --git a/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a3/XYDiagramm.java b/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a3/XYDiagramm.java new file mode 100644 index 0000000..6d34ea2 --- /dev/null +++ b/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a3/XYDiagramm.java @@ -0,0 +1,119 @@ +import java.awt.Font; + +/** + * XY-Diagramm für Schalldruckpegel, Zahlen werden aus CSV-Datei gelesen. + * + * @author Schaller + * @version 29.11.18 + */ +public class XYDiagramm extends Picture + +{ + // Liste mit allen Werten + double[] x_werte; + double[] y_werte; + + // Hilfsvariablen für die Suche + int akt_maximum=-1; // aktuell groesstes Element + int akt=-1; // aktuell untersuchtes Element + int verzoegerung=0; // Geschwindigkeit der Ausführung + + // Schriften + Font kleineSchrift; + Font grosseSchrift; + + public XYDiagramm() { + size(1000, 700); + background(0); + kleineSchrift = new Font( Font.SANS_SERIF, Font.PLAIN, 12 ); + grosseSchrift = new Font( Font.SANS_SERIF, Font.PLAIN, 20 ); + + // CSV-Datei laden und anzeigen + ladeTabelle("Amplitudes.csv"); + stroke(250,250,200); + zeichneXYDiagramm(); + } + + + + public void ladeTabelle(String name) { + // Tabelle aus CSV-Datei laden + Table csv = new Table(name, "header",',','"'); + + if (csv != null && csv.getColumnCount()==2) { + + // Initialisiere Arrays, in die alle Zeilen der Tabelle passen + x_werte = new double[csv.getRowCount()]; + y_werte = new double[csv.getRowCount()]; + + // Fülle die Arrays mit Werten aus der Tabelle + for (int i = 0; i < x_werte.length; i++) { //x_werte.length; i++) { + // Lies Wert aus der i. Zeile und der Spalte "Punkte" bzw. "Name" + x_werte[i] = csv.getDouble(i, "Zeit"); + y_werte[i] = csv.getDouble(i, "Laerm"); + System.out.println("Lade Zeile: "+i); + } + } + } + + public void zeichneXYDiagramm() { + + // Überschrift + fill(255, 255, 255); + textFont(grosseSchrift); + text("Lärmpegel", 2, 20); + textFont(kleineSchrift); + + // Alle Einträge darstellen + + if (x_werte != null) { + // Maximum bestimmen + int max_x_pos = sucheMaximum(x_werte); + int max_y_pos = sucheMaximum(y_werte); + double max_x = x_werte[max_x_pos]; + double max_y = y_werte[max_y_pos]; + + // Skalierungsfaktoren + double faktor_x = 1000.0 / max_x; + double faktor_y = 700.0 / max_y; + + for (int i = 0; i< x_werte.length; i++) { + + // XY-Punktdiagramm zeichnen + int x = (int) (x_werte[i]*faktor_x); + int y = (int) (700- y_werte[i]*faktor_y); + System.out.println("x:"+x+"y:"+y); + + point(x, y); + } + } + } + + + public int sucheMaximum(double[] zahlen) { + // Sind überhaupt Daten da? + if (zahlen.length==0 ) { + return -1; + } + + // Startwerte setzen + akt_maximum = 0; + akt = 1; + + // Alle Arrayelemente untersuchen + while (akt < zahlen.length) { + + // Neues größtes Element?? + if (zahlen[akt]> zahlen[akt_maximum]) { + // Dann merke dir das neue + akt_maximum = akt; + + } + akt = akt + 1; + } + // Gib Position des größten Elements zurück + return akt_maximum; + } + + +} diff --git a/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a3/XYDiagrammGUI.java b/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a3/XYDiagrammGUI.java new file mode 100644 index 0000000..9289b4a --- /dev/null +++ b/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a3/XYDiagrammGUI.java @@ -0,0 +1,82 @@ +import java.awt.*; +import java.awt.event.*; +import javax.swing.*; +import javax.swing.event.*; + +/** + * + * description + * + * @version 1.0 from 06.10.2018 + * @author + */ + +public class XYDiagrammGUI extends JFrame { + // Anfang Attribute + private JButton bXYDiagrammzeichnen = new JButton(); + private PictureViewer imagePanel1 = new PictureViewer(); + + private XYDiagramm bild; + private Picture b; + // Ende Attribute + + public XYDiagrammGUI (String title) { + super (title); + setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); + int frameWidth = 768; + int frameHeight = 551; + setSize(frameWidth, frameHeight); + Dimension d = Toolkit.getDefaultToolkit().getScreenSize(); + int x = (d.width - getSize().width) / 2; + int y = (d.height - getSize().height) / 2; + setLocation(x, y); + Container cp = getContentPane(); + cp.setLayout(null); + // Anfang Komponenten + bXYDiagrammzeichnen.setBounds(280, 456, 209, 33); + bXYDiagrammzeichnen.setText("XY-Diagramm zeichnen"); + bXYDiagrammzeichnen.setMargin(new Insets(2, 2, 2, 2)); + bXYDiagrammzeichnen.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent evt) { + bXYDiagrammzeichnen_ActionPerformed(evt); + } + }); + cp.add(bXYDiagrammzeichnen); + imagePanel1.setBounds(24, 16, 705, 409); + cp.add(imagePanel1); + + b = new Picture(700,800); + imagePanel1.setImage(b); + b.setObserver(imagePanel1); + addWindowListener(new WindowAdapter() { + public void windowClosed(WindowEvent evt) { + BalkendiagrammGUI_WindowClosed(evt); + } + }); + // Ende Komponenten + setResizable(false); + setVisible(true); + } + + // Anfang Methoden + public void bXYDiagrammzeichnen_ActionPerformed(ActionEvent evt) { + bild = new XYDiagramm(); + imagePanel1.setImage(bild); + bild.setObserver(imagePanel1); + imagePanel1.getVerticalScrollBar().setValue(10); + imagePanel1.getVerticalScrollBar().setValue(0); + imagePanel1.getViewport().repaint(); + } // end of bXYDiagrammzeichnen_ActionPerformed + + public void BalkendiagrammGUI_WindowClosed(WindowEvent evt) { + + + } // end of BalkendiagrammGUI_WindowClosed + + // Ende Methoden + + public static void main(String[] args) { + new XYDiagrammGUI("XYDiagrammGUI"); + } +} + diff --git a/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a3/XYDiagrammGUI.jfm b/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a3/XYDiagrammGUI.jfm new file mode 100644 index 0000000..384f91e --- /dev/null +++ b/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a3/XYDiagrammGUI.jfm @@ -0,0 +1,104 @@ +object XYDiagrammGUI: TFGUIForm + Left = 761 + Top = 237 + BorderIcons = [biSystemMenu] + Caption = 'XYDiagrammGUI' + ClientHeight = 512 + ClientWidth = 752 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -10 + Font.Name = 'MS Sans Serif' + Font.Style = [] + FormStyle = fsStayOnTop + OldCreateOrder = True + Position = poDesigned + ShowHint = True + Visible = True + OnClose = FormClose + OnCloseQuery = FormCloseQuery + OnResize = FormResize + FrameType = 5 + Resizable = False + Undecorated = False + Background = clBtnFace + windowClosed = 'BalkendiagrammGUI_WindowClosed' + PixelsPerInch = 96 + TextHeight = 13 + object bXYDiagrammzeichnen: TJButton + Tag = 4 + Left = 280 + Top = 456 + Width = 209 + Height = 33 + Hint = 'jButton1' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Dialog' + Font.Style = [fsBold] + Foreground = 3355443 + Background = 15658734 + actionPerformed = 'bXYDiagrammzeichnen_ActionPerformed' + Text = 'XY-Diagramm zeichnen' + Mnemonic = 0 + DisplayedMnemonicIndex = 0 + Selected = False + BorderPainted = True + FocusPainted = False + ContentAreaFilled = True + HorizontalAlignment = CENTER + VerticalAlignment = CENTER + HorizontalTextPosition = RIGHT + VerticalTextPosition = CENTER + IconTextGap = 4 + RolloverEnabled = False + Border.BorderType = NoBorder + Border.LineColor = clBlack + Border.LineThickness = 0 + Border.LineRounded = False + Border.EtchHighlightColor = clBlack + Border.EtchShadowColor = clBlack + Border.Etchtype = 0 + Border.BevelHighlightColor = clBlack + Border.BevelShadowColor = clBlack + Border.Beveltype = 0 + Border.MatteColor = clBlack + Border.MatteTop = 0 + Border.MatteLeft = 0 + Border.MatteBottom = 0 + Border.MatteRight = 0 + end + object imagePanel1: TJPanel + Tag = 38 + Left = 24 + Top = 16 + Width = 705 + Height = 409 + Hint = 'imagePanel1' + HelpKeyword = 'ImagePanel' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Dialog' + Font.Style = [fsBold] + Foreground = 3355443 + Background = clBtnFace + Border.BorderType = NoBorder + Border.LineColor = clBlack + Border.LineThickness = 0 + Border.LineRounded = False + Border.EtchHighlightColor = clBlack + Border.EtchShadowColor = clBlack + Border.Etchtype = 0 + Border.BevelHighlightColor = clBlack + Border.BevelShadowColor = clBlack + Border.Beveltype = 0 + Border.MatteColor = clBlack + Border.MatteTop = 0 + Border.MatteLeft = 0 + Border.MatteBottom = 0 + Border.MatteRight = 0 + end +end diff --git a/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a3/jdom-1.1.3.jar b/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a3/jdom-1.1.3.jar new file mode 100644 index 0000000..a287727 Binary files /dev/null and b/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a3/jdom-1.1.3.jar differ diff --git a/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a4/Amplitudes.csv b/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a4/Amplitudes.csv new file mode 100644 index 0000000..6a3b121 --- /dev/null +++ b/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a4/Amplitudes.csv @@ -0,0 +1,12219 @@ +"Zeit","Laerm" +0.000000000E0,6.133205686E1 +1.130000000E-1,5.602431153E1 +3.840000000E-1,3.897519867E1 +7.780000000E-1,4.208195145E1 +1.036000000E0,3.840936313E1 +1.305000000E0,3.561092139E1 +1.587000000E0,4.663257633E1 +1.829000000E0,5.311883882E1 +2.084000000E0,5.299431820E1 +2.357000000E0,5.747397858E1 +2.643000000E0,5.626338063E1 +2.949000000E0,5.790811120E1 +3.238000000E0,5.874544026E1 +3.497000000E0,5.736162139E1 +3.775000000E0,5.897817442E1 +4.097000000E0,5.789822970E1 +4.357000000E0,5.312015799E1 +4.626000000E0,5.710192134E1 +4.941000000E0,6.275087240E1 +5.235000000E0,5.784358767E1 +5.535000000E0,5.388577420E1 +5.827000000E0,5.403495101E1 +6.090000000E0,5.428355086E1 +6.339000000E0,6.064473144E1 +6.616000000E0,6.271091291E1 +6.850000000E0,6.982615367E1 +7.128000000E0,7.050308750E1 +7.487000000E0,5.395311298E1 +7.760000000E0,5.036401582E1 +8.065000000E0,4.614125463E1 +8.361000000E0,6.244776407E1 +8.614000000E0,6.315719526E1 +8.862000000E0,5.981740395E1 +9.123000000E0,5.907292535E1 +9.374000000E0,5.661523092E1 +9.665000000E0,6.210368813E1 +9.948000000E0,6.140958115E1 +1.021100000E1,5.697007655E1 +1.058300000E1,5.460455934E1 +1.084000000E1,5.408516231E1 +1.115300000E1,5.907221377E1 +1.142100000E1,6.113412429E1 +1.172700000E1,6.267949704E1 +1.197100000E1,6.245109870E1 +1.226500000E1,6.342534529E1 +1.255800000E1,6.810008108E1 +1.287100000E1,6.036891848E1 +1.313400000E1,5.913231814E1 +1.342700000E1,5.973818566E1 +1.371600000E1,5.534371651E1 +1.401200000E1,5.694514867E1 +1.431200000E1,6.134814982E1 +1.461100000E1,5.900023912E1 +1.484600000E1,5.689908400E1 +1.515800000E1,5.296474858E1 +1.544000000E1,5.608528071E1 +1.569300000E1,5.728560404E1 +1.596900000E1,5.837984103E1 +1.620100000E1,5.718896638E1 +1.649200000E1,5.909973037E1 +1.678900000E1,5.705554272E1 +1.716300000E1,6.079937758E1 +1.747400000E1,5.618116117E1 +1.775200000E1,5.519881157E1 +1.803800000E1,5.402386340E1 +1.829100000E1,5.678484358E1 +1.858100000E1,5.954639303E1 +1.882300000E1,6.030021638E1 +1.908000000E1,5.588340744E1 +1.934400000E1,5.668691200E1 +1.958800000E1,6.042765467E1 +1.983400000E1,5.839794223E1 +2.008500000E1,5.457976882E1 +2.039500000E1,5.974390604E1 +2.064000000E1,6.049774386E1 +2.092900000E1,6.029857781E1 +2.117800000E1,6.116406203E1 +2.142700000E1,5.664722837E1 +2.173400000E1,5.823294996E1 +2.203100000E1,5.517538657E1 +2.229000000E1,5.322823206E1 +2.259900000E1,6.180779467E1 +2.285300000E1,6.106216386E1 +2.314900000E1,5.883321877E1 +2.347100000E1,6.045262422E1 +2.375000000E1,6.163931220E1 +2.406000000E1,4.841181734E1 +2.432800000E1,4.372149986E1 +2.462900000E1,5.625563946E1 +2.487100000E1,5.672759349E1 +2.513200000E1,5.896193725E1 +2.540800000E1,5.893011728E1 +2.566400000E1,5.857261268E1 +2.596700000E1,5.859012974E1 +2.621900000E1,5.635586832E1 +2.648700000E1,5.350948293E1 +2.673900000E1,5.430043092E1 +2.701400000E1,5.666610976E1 +2.727500000E1,5.218421407E1 +2.753100000E1,5.689076583E1 +2.782000000E1,5.796831886E1 +2.806900000E1,5.608205064E1 +2.831700000E1,5.482273815E1 +2.861600000E1,5.392425499E1 +2.888300000E1,5.329416010E1 +2.914800000E1,5.366916703E1 +2.940200000E1,5.280847155E1 +2.968000000E1,5.333298066E1 +2.994300000E1,5.497085471E1 +3.031200000E1,5.753094076E1 +3.057900000E1,5.655381974E1 +3.086100000E1,5.517704804E1 +3.115600000E1,5.592585858E1 +3.140700000E1,6.212826207E1 +3.166000000E1,5.699502474E1 +3.193500000E1,6.025129057E1 +3.223100000E1,5.686166208E1 +3.247300000E1,5.807641915E1 +3.271900000E1,6.065155151E1 +3.296400000E1,5.961384387E1 +3.320500000E1,6.119064420E1 +3.354400000E1,5.548464633E1 +3.378000000E1,5.699661616E1 +3.408000000E1,5.653770482E1 +3.438000000E1,5.083503664E1 +3.468200000E1,5.695639918E1 +3.495800000E1,5.566535489E1 +3.524700000E1,5.914853092E1 +3.552700000E1,5.758441289E1 +3.576600000E1,6.085665801E1 +3.606700000E1,5.862586334E1 +3.630600000E1,5.096841655E1 +3.662200000E1,6.009246966E1 +3.689400000E1,5.981749726E1 +3.715300000E1,6.108830629E1 +3.740300000E1,5.724514841E1 +3.766500000E1,5.934850613E1 +3.793000000E1,5.725470328E1 +3.819100000E1,5.843556167E1 +3.847700000E1,5.697759761E1 +3.874000000E1,5.721548979E1 +3.901600000E1,5.649629904E1 +3.927200000E1,5.850326911E1 +3.954600000E1,5.691951660E1 +3.993900000E1,5.357092442E1 +4.023400000E1,5.817046878E1 +4.053000000E1,5.554327077E1 +4.081200000E1,5.802928061E1 +4.103900000E1,5.663899845E1 +4.128700000E1,5.494654466E1 +4.155800000E1,5.564956216E1 +4.181900000E1,5.663250304E1 +4.211300000E1,5.652236278E1 +4.238100000E1,5.614203459E1 +4.264000000E1,5.433145844E1 +4.295000000E1,6.132645299E1 +4.326200000E1,6.040612545E1 +4.351400000E1,5.905916902E1 +4.377100000E1,5.885516023E1 +4.401000000E1,5.514814582E1 +4.430800000E1,5.663232510E1 +4.455900000E1,5.055807811E1 +4.482100000E1,5.614950318E1 +4.513300000E1,6.025044420E1 +4.537500000E1,5.643182261E1 +4.568900000E1,5.709089314E1 +4.600500000E1,5.480136123E1 +4.624500000E1,5.924046686E1 +4.656900000E1,6.172358505E1 +4.684100000E1,5.645515217E1 +4.711100000E1,6.002156043E1 +4.736300000E1,6.182669975E1 +4.759700000E1,5.557741963E1 +4.786700000E1,5.598662295E1 +4.818300000E1,5.664767890E1 +4.847900000E1,5.956168629E1 +4.874200000E1,5.713315811E1 +4.898900000E1,5.765479272E1 +4.931400000E1,5.507101982E1 +4.961600000E1,5.361677606E1 +4.990000000E1,5.558547080E1 +5.019600000E1,5.402951441E1 +5.046500000E1,5.805429700E1 +5.078800000E1,5.327636151E1 +5.110300000E1,4.980825483E1 +5.137100000E1,5.290981249E1 +5.165200000E1,4.817864123E1 +5.190100000E1,5.585478693E1 +5.214500000E1,5.457392293E1 +5.242900000E1,5.449921652E1 +5.272500000E1,5.537781025E1 +5.302100000E1,5.598018287E1 +5.326000000E1,5.612851081E1 +5.355800000E1,5.312697891E1 +5.384800000E1,5.799703575E1 +5.409200000E1,5.662162553E1 +5.433900000E1,5.392344795E1 +5.459100000E1,5.398098819E1 +5.494900000E1,5.489231889E1 +5.527100000E1,5.658153835E1 +5.552800000E1,5.624900056E1 +5.589500000E1,4.979935744E1 +5.616900000E1,5.146998424E1 +5.645400000E1,5.878755245E1 +5.668600000E1,5.846227673E1 +5.694400000E1,5.977267383E1 +5.726200000E1,5.508647523E1 +5.754400000E1,5.138853207E1 +5.784300000E1,5.327451232E1 +5.808600000E1,5.887142781E1 +5.837800000E1,5.858062431E1 +5.862200000E1,5.917458096E1 +5.889700000E1,6.050411670E1 +5.926300000E1,5.908687144E1 +5.952100000E1,5.570790758E1 +5.981900000E1,5.444849000E1 +6.006100000E1,5.201240285E1 +6.032000000E1,4.755830762E1 +6.061900000E1,5.204388424E1 +6.086500000E1,5.626914911E1 +6.117500000E1,5.280379974E1 +6.142900000E1,5.093923019E1 +6.173000000E1,5.460427137E1 +6.197800000E1,5.299601182E1 +6.230600000E1,5.424208739E1 +6.257600000E1,5.253762352E1 +6.283700000E1,5.544043962E1 +6.309800000E1,5.527614156E1 +6.335400000E1,5.747262922E1 +6.360700000E1,5.468151445E1 +6.384900000E1,5.582905565E1 +6.410700000E1,5.802400474E1 +6.435000000E1,5.204893636E1 +6.459600000E1,5.280146425E1 +6.486300000E1,4.876648093E1 +6.509700000E1,5.311679703E1 +6.537500000E1,5.192778643E1 +6.571400000E1,5.346709918E1 +6.597900000E1,5.370921552E1 +6.627900000E1,5.676705279E1 +6.652200000E1,5.832258643E1 +6.676600000E1,6.257736406E1 +6.703100000E1,6.295448429E1 +6.737800000E1,6.100964383E1 +6.766100000E1,5.182636016E1 +6.790700000E1,4.952717893E1 +6.821100000E1,5.667475715E1 +6.850300000E1,5.872819054E1 +6.882100000E1,6.004516195E1 +6.907300000E1,5.559244143E1 +6.935100000E1,5.600379936E1 +6.961500000E1,5.338006499E1 +6.987600000E1,5.360104859E1 +7.011900000E1,4.644905289E1 +7.037100000E1,4.528909123E1 +7.067200000E1,5.787885076E1 +7.091600000E1,5.602551032E1 +7.115700000E1,5.989544193E1 +7.142200000E1,6.110384869E1 +7.167900000E1,5.887448069E1 +7.192600000E1,5.797896456E1 +7.226000000E1,5.965665129E1 +7.251000000E1,6.477744226E1 +7.281200000E1,6.243775536E1 +7.310800000E1,5.921576979E1 +7.335600000E1,6.629420582E1 +7.364100000E1,6.683725429E1 +7.392300000E1,5.758295449E1 +7.418800000E1,5.654909286E1 +7.448600000E1,5.881341247E1 +7.472100000E1,5.546609910E1 +7.498300000E1,5.586542777E1 +7.526600000E1,5.463216262E1 +7.558500000E1,5.947397496E1 +7.586200000E1,6.218459899E1 +7.609800000E1,6.134189272E1 +7.635800000E1,5.727526170E1 +7.666700000E1,5.579062978E1 +7.699300000E1,6.015063828E1 +7.729000000E1,6.022787424E1 +7.756300000E1,5.646982462E1 +7.782200000E1,6.005734442E1 +7.813200000E1,5.950776839E1 +7.842200000E1,6.314009710E1 +7.880400000E1,5.425753266E1 +7.910400000E1,5.909139002E1 +7.935300000E1,5.600377253E1 +7.962300000E1,6.036368528E1 +7.993700000E1,5.940415340E1 +8.018900000E1,6.102152187E1 +8.050000000E1,6.619104713E1 +8.074000000E1,6.149981675E1 +8.098900000E1,5.978899259E1 +8.123800000E1,5.963150500E1 +8.150300000E1,6.509054947E1 +8.181300000E1,6.387458039E1 +8.220700000E1,6.421798778E1 +8.246100000E1,6.092500605E1 +8.271900000E1,6.039313205E1 +8.297100000E1,5.885189543E1 +8.328000000E1,6.068901175E1 +8.355600000E1,6.531581124E1 +8.381900000E1,6.460984287E1 +8.407800000E1,6.281147078E1 +8.435000000E1,5.961599483E1 +8.463400000E1,5.915457491E1 +8.489200000E1,5.383227231E1 +8.513000000E1,5.278474817E1 +8.551100000E1,6.165964712E1 +8.574900000E1,6.442604107E1 +8.600700000E1,6.551005247E1 +8.626000000E1,6.660338206E1 +8.650900000E1,6.304014634E1 +8.676000000E1,6.488065719E1 +8.701800000E1,6.416881833E1 +8.728000000E1,5.892166498E1 +8.754500000E1,5.946249393E1 +8.785000000E1,6.506678358E1 +8.809400000E1,5.703264442E1 +8.840500000E1,6.164086486E1 +8.876300000E1,6.276173959E1 +8.906100000E1,5.818071871E1 +8.930500000E1,5.844394446E1 +8.956300000E1,5.657440647E1 +8.987400000E1,6.120356137E1 +9.011500000E1,6.094306560E1 +9.041100000E1,5.978472131E1 +9.065500000E1,6.008128664E1 +9.092400000E1,5.758286780E1 +9.123300000E1,5.353387594E1 +9.151600000E1,5.676204998E1 +9.183800000E1,5.245702159E1 +9.218200000E1,5.642589170E1 +9.243600000E1,5.542467479E1 +9.268000000E1,5.580829615E1 +9.297600000E1,5.148061441E1 +9.322800000E1,4.635974806E1 +9.353200000E1,5.465579762E1 +9.377300000E1,5.154999739E1 +9.402200000E1,5.544992474E1 +9.427900000E1,5.302390200E1 +9.453300000E1,5.127982623E1 +9.478800000E1,5.263086656E1 +9.503100000E1,5.128121484E1 +9.532100000E1,5.061466876E1 +9.557700000E1,5.328260476E1 +9.582800000E1,5.101663724E1 +9.607100000E1,5.400893265E1 +9.640400000E1,5.756552061E1 +9.665500000E1,5.665487755E1 +9.690400000E1,5.719000980E1 +9.715400000E1,5.593995548E1 +9.740400000E1,5.420194495E1 +9.771300000E1,4.867232074E1 +9.802100000E1,5.053798103E1 +9.830700000E1,4.874294948E1 +9.857500000E1,5.754515654E1 +9.883700000E1,5.863618568E1 +9.909700000E1,6.070195076E1 +9.935300000E1,5.434874196E1 +9.961300000E1,6.163600431E1 +9.987300000E1,5.555228218E1 +1.001200000E2,5.733850418E1 +1.003910000E2,6.133233800E1 +1.006620000E2,5.853313440E1 +1.009020000E2,5.435835494E1 +1.011680000E2,5.329891948E1 +1.014680000E2,5.356470018E1 +1.018410000E2,5.574288130E1 +1.021370000E2,5.927571979E1 +1.024000000E2,5.789956910E1 +1.026980000E2,6.081738139E1 +1.029540000E2,5.575615853E1 +1.032580000E2,5.337382111E1 +1.035140000E2,5.562761746E1 +1.038150000E2,5.905624776E1 +1.041040000E2,5.696105750E1 +1.043990000E2,6.170938149E1 +1.046370000E2,5.823687000E1 +1.049080000E2,6.066674703E1 +1.051740000E2,6.220969933E1 +1.054810000E2,5.755805236E1 +1.057660000E2,5.735691579E1 +1.060450000E2,5.761618087E1 +1.063040000E2,5.188413372E1 +1.065680000E2,5.643639822E1 +1.068740000E2,5.312430876E1 +1.071280000E2,5.924995828E1 +1.073900000E2,5.546187342E1 +1.076920000E2,5.474389270E1 +1.079790000E2,5.600814816E1 +1.082440000E2,5.561453096E1 +1.084980000E2,5.408559240E1 +1.087580000E2,5.622058302E1 +1.090160000E2,5.768852773E1 +1.092670000E2,5.516804842E1 +1.095340000E2,5.973626648E1 +1.098120000E2,6.403409511E1 +1.100690000E2,6.035201036E1 +1.103490000E2,5.940482770E1 +1.105950000E2,5.932126109E1 +1.108600000E2,5.859387697E1 +1.111460000E2,5.929800416E1 +1.114110000E2,5.930503134E1 +1.117890000E2,6.170536210E1 +1.120410000E2,6.214563711E1 +1.123490000E2,5.810151097E1 +1.126320000E2,5.823719807E1 +1.128910000E2,6.454485320E1 +1.131870000E2,6.755031626E1 +1.134560000E2,6.410743881E1 +1.137200000E2,5.913442857E1 +1.139870000E2,6.382823805E1 +1.142400000E2,5.859239523E1 +1.145180000E2,5.135859796E1 +1.147890000E2,5.294563188E1 +1.151440000E2,5.357868048E1 +1.154220000E2,5.561359505E1 +1.156620000E2,5.645675088E1 +1.159670000E2,5.879425595E1 +1.162610000E2,5.918610512E1 +1.164990000E2,6.083658676E1 +1.167470000E2,5.526645697E1 +1.169880000E2,5.471312988E1 +1.172910000E2,6.211796732E1 +1.175510000E2,5.417468648E1 +1.177930000E2,5.576739557E1 +1.180750000E2,5.912472365E1 +1.184660000E2,5.718213173E1 +1.187710000E2,5.747081312E1 +1.190170000E2,5.741742618E1 +1.192690000E2,5.379557814E1 +1.195330000E2,5.428733520E1 +1.197780000E2,6.177329402E1 +1.200450000E2,5.672333166E1 +1.203170000E2,5.584947723E1 +1.205670000E2,5.382665718E1 +1.208400000E2,5.443690083E1 +1.211280000E2,5.221565874E1 +1.214800000E2,5.516249741E1 +1.217540000E2,5.676279334E1 +1.220050000E2,5.303796336E1 +1.222680000E2,5.258840561E1 +1.225120000E2,5.671935607E1 +1.227660000E2,4.902892756E1 +1.230240000E2,4.264962220E1 +1.232830000E2,4.818154680E1 +1.235340000E2,5.204058636E1 +1.238430000E2,5.649936271E1 +1.241410000E2,5.396154490E1 +1.244200000E2,5.428877275E1 +1.246760000E2,4.778715710E1 +1.249500000E2,4.912370762E1 +1.252110000E2,5.114426735E1 +1.255020000E2,5.345096378E1 +1.257410000E2,5.581149074E1 +1.260430000E2,5.211774829E1 +1.263320000E2,5.470047014E1 +1.265660000E2,5.399085344E1 +1.268600000E2,5.981732528E1 +1.271210000E2,5.944116770E1 +1.273530000E2,5.668281238E1 +1.275970000E2,5.042419391E1 +1.279080000E2,5.014554177E1 +1.282260000E2,5.350461413E1 +1.285240000E2,5.453533258E1 +1.287780000E2,5.809919663E1 +1.290280000E2,5.729580956E1 +1.292980000E2,5.681749266E1 +1.296010000E2,5.542882864E1 +1.298980000E2,5.612046892E1 +1.302070000E2,6.074750886E1 +1.304620000E2,5.979349108E1 +1.307520000E2,5.806574219E1 +1.310590000E2,5.738881777E1 +1.314010000E2,5.595280312E1 +1.316630000E2,5.401154636E1 +1.319120000E2,5.499471091E1 +1.321620000E2,5.551354327E1 +1.324640000E2,6.567912108E1 +1.327650000E2,5.725129100E1 +1.330150000E2,6.452906176E1 +1.333160000E2,5.778565576E1 +1.335760000E2,6.242194617E1 +1.338200000E2,5.570863747E1 +1.340710000E2,5.755877138E1 +1.343660000E2,6.819206156E1 +1.346260000E2,6.094769164E1 +1.349310000E2,6.447198163E1 +1.351810000E2,5.482297950E1 +1.354630000E2,6.327012623E1 +1.357210000E2,5.723157337E1 +1.359770000E2,5.835004111E1 +1.362140000E2,6.413045068E1 +1.365290000E2,6.022343539E1 +1.368110000E2,5.969265006E1 +1.371070000E2,5.589766444E1 +1.373670000E2,6.089100679E1 +1.376970000E2,6.762783521E1 +1.379410000E2,5.740809854E1 +1.381870000E2,6.711182247E1 +1.384650000E2,6.290175574E1 +1.387060000E2,6.352322572E1 +1.390400000E2,5.897504025E1 +1.392980000E2,5.872568346E1 +1.396520000E2,5.582882684E1 +1.399140000E2,5.874428562E1 +1.402160000E2,5.275369064E1 +1.404650000E2,5.181123336E1 +1.407250000E2,4.758951485E1 +1.410550000E2,4.601470876E1 +1.413500000E2,5.203790008E1 +1.416310000E2,5.380793436E1 +1.418780000E2,5.006781735E1 +1.421580000E2,4.792469964E1 +1.424020000E2,5.136650820E1 +1.427060000E2,5.127969468E1 +1.430200000E2,5.304643312E1 +1.433210000E2,5.218299100E1 +1.436050000E2,5.568762266E1 +1.439010000E2,5.522696018E1 +1.442570000E2,5.919224289E1 +1.445880000E2,6.201398016E1 +1.448680000E2,5.750742223E1 +1.451160000E2,5.811963790E1 +1.454090000E2,5.695462128E1 +1.456560000E2,5.854812337E1 +1.458980000E2,5.886107911E1 +1.461720000E2,5.454171305E1 +1.464480000E2,5.674410925E1 +1.466770000E2,5.450912101E1 +1.469270000E2,5.953864028E1 +1.471790000E2,6.097527460E1 +1.475260000E2,5.825769450E1 +1.478290000E2,5.780473579E1 +1.480790000E2,6.185542851E1 +1.483350000E2,5.390929394E1 +1.486330000E2,5.400087479E1 +1.488750000E2,5.328656685E1 +1.491190000E2,5.599536596E1 +1.494200000E2,5.721648542E1 +1.497150000E2,5.787493165E1 +1.500380000E2,5.480047158E1 +1.503480000E2,5.002404450E1 +1.506590000E2,5.486151348E1 +1.509700000E2,6.245235750E1 +1.512360000E2,5.831236552E1 +1.514820000E2,6.253825815E1 +1.517260000E2,6.440134635E1 +1.520120000E2,5.646251942E1 +1.523080000E2,5.569851104E1 +1.525630000E2,5.574195002E1 +1.528610000E2,6.073633455E1 +1.531220000E2,5.704364811E1 +1.533960000E2,5.858521931E1 +1.536900000E2,6.334346239E1 +1.540080000E2,5.734505299E1 +1.542490000E2,6.522555977E1 +1.544980000E2,5.500712815E1 +1.547420000E2,5.698741268E1 +1.549830000E2,5.097374633E1 +1.552760000E2,5.421781291E1 +1.555100000E2,5.276919678E1 +1.558070000E2,5.444895965E1 +1.560410000E2,5.023818561E1 +1.563440000E2,5.460917302E1 +1.565880000E2,5.459938847E1 +1.568920000E2,5.843131092E1 +1.572210000E2,5.876667307E1 +1.574850000E2,5.735202828E1 +1.577300000E2,5.496399564E1 +1.580290000E2,5.249359356E1 +1.582920000E2,5.216967072E1 +1.585400000E2,5.506360532E1 +1.588040000E2,4.854470136E1 +1.590480000E2,5.455647594E1 +1.593040000E2,5.480802962E1 +1.595560000E2,5.117555202E1 +1.598230000E2,5.525001141E1 +1.600680000E2,6.028739680E1 +1.604080000E2,6.051466285E1 +1.606910000E2,5.941686107E1 +1.609450000E2,6.263789003E1 +1.611920000E2,5.862463866E1 +1.614980000E2,5.858673558E1 +1.617730000E2,5.766546261E1 +1.620210000E2,5.485521148E1 +1.623080000E2,5.814732367E1 +1.625850000E2,5.829863647E1 +1.628370000E2,5.473457172E1 +1.631510000E2,5.323729241E1 +1.634320000E2,5.795543593E1 +1.637670000E2,5.845831909E1 +1.640670000E2,5.883503284E1 +1.643040000E2,5.933733684E1 +1.645990000E2,5.316483696E1 +1.648620000E2,5.628275472E1 +1.651110000E2,5.612764782E1 +1.654290000E2,5.739409022E1 +1.657290000E2,5.275374209E1 +1.660100000E2,5.606330732E1 +1.662350000E2,4.973765069E1 +1.664840000E2,4.855931683E1 +1.667820000E2,4.830487304E1 +1.670210000E2,5.643349546E1 +1.672820000E2,5.752246312E1 +1.675830000E2,5.576545129E1 +1.678330000E2,5.583582770E1 +1.681390000E2,5.301617697E1 +1.684460000E2,5.088408561E1 +1.686990000E2,5.149775091E1 +1.690030000E2,6.019099852E1 +1.692410000E2,6.143998752E1 +1.695380000E2,6.183098470E1 +1.697780000E2,5.964256200E1 +1.701420000E2,5.648358262E1 +1.703870000E2,5.768033788E1 +1.706360000E2,5.037521789E1 +1.709530000E2,5.268785935E1 +1.712030000E2,5.850048969E1 +1.714650000E2,5.537813713E1 +1.717710000E2,5.989062491E1 +1.720770000E2,6.371629733E1 +1.723380000E2,5.413135778E1 +1.726060000E2,5.582389161E1 +1.729040000E2,6.344770094E1 +1.731770000E2,6.038125570E1 +1.735090000E2,5.229655017E1 +1.737830000E2,5.594074665E1 +1.740430000E2,6.258802116E1 +1.743030000E2,5.773122794E1 +1.745600000E2,5.533899998E1 +1.748290000E2,5.069657364E1 +1.750850000E2,6.285550191E1 +1.753480000E2,5.470504416E1 +1.756240000E2,5.746379759E1 +1.758870000E2,5.928233462E1 +1.761350000E2,5.214791610E1 +1.763840000E2,5.260177806E1 +1.767030000E2,4.844041050E1 +1.769490000E2,5.275717684E1 +1.772330000E2,5.436891746E1 +1.774780000E2,5.441421810E1 +1.777590000E2,5.485847839E1 +1.780320000E2,5.714239097E1 +1.782910000E2,6.028837304E1 +1.785470000E2,5.706420775E1 +1.788380000E2,5.509582512E1 +1.791200000E2,5.674185072E1 +1.794340000E2,5.437491314E1 +1.796940000E2,5.696592309E1 +1.799990000E2,5.344092263E1 +1.802540000E2,5.414345246E1 +1.804960000E2,5.421992498E1 +1.808400000E2,5.317024536E1 +1.811450000E2,5.422714635E1 +1.814530000E2,5.933207779E1 +1.817720000E2,5.916706050E1 +1.820730000E2,5.685980261E1 +1.824210000E2,5.521649456E1 +1.826850000E2,5.651993888E1 +1.829810000E2,5.707596711E1 +1.832810000E2,5.464130538E1 +1.836160000E2,5.364065008E1 +1.838600000E2,5.913078622E1 +1.841080000E2,5.695541400E1 +1.843520000E2,6.237274690E1 +1.846510000E2,6.017101966E1 +1.848950000E2,5.670915019E1 +1.851380000E2,5.651470649E1 +1.854400000E2,5.919691857E1 +1.857560000E2,5.752836475E1 +1.860680000E2,6.133052078E1 +1.863670000E2,6.001801442E1 +1.866740000E2,5.871186574E1 +1.869510000E2,5.858669373E1 +1.872240000E2,5.722343490E1 +1.875200000E2,5.725198568E1 +1.877700000E2,5.560524182E1 +1.880340000E2,5.419540118E1 +1.882980000E2,6.169219144E1 +1.885790000E2,5.704261604E1 +1.888700000E2,5.651125138E1 +1.891060000E2,5.778536485E1 +1.894110000E2,5.304160496E1 +1.896990000E2,5.105254388E1 +1.900460000E2,5.338626279E1 +1.902980000E2,5.090929652E1 +1.905360000E2,5.235399183E1 +1.907970000E2,5.429173243E1 +1.910620000E2,5.376238901E1 +1.913500000E2,6.411203098E1 +1.916020000E2,6.235211697E1 +1.919100000E2,5.719243884E1 +1.922140000E2,5.965550680E1 +1.925010000E2,5.850063986E1 +1.928110000E2,6.013906156E1 +1.930480000E2,5.912633730E1 +1.934000000E2,5.860712099E1 +1.936870000E2,5.944287516E1 +1.939980000E2,5.676076088E1 +1.942520000E2,5.712881871E1 +1.945490000E2,5.515631677E1 +1.948870000E2,5.670925955E1 +1.951320000E2,5.768263389E1 +1.954210000E2,5.735243887E1 +1.957290000E2,5.883798740E1 +1.960030000E2,5.654393164E1 +1.963340000E2,5.345251733E1 +1.966710000E2,5.034487882E1 +1.969060000E2,5.741493139E1 +1.971980000E2,5.877434013E1 +1.974210000E2,5.965387227E1 +1.977200000E2,6.306941384E1 +1.979730000E2,6.004201692E1 +1.982230000E2,6.106500017E1 +1.984800000E2,5.674857861E1 +1.987290000E2,6.020914127E1 +1.990680000E2,6.067289060E1 +1.993460000E2,5.996658083E1 +1.996390000E2,5.676340490E1 +1.999500000E2,5.612304129E1 +2.002130000E2,6.289766509E1 +2.005150000E2,5.720971103E1 +2.008280000E2,5.752136939E1 +2.010940000E2,6.058659890E1 +2.013440000E2,5.618430636E1 +2.016270000E2,6.056271249E1 +2.019400000E2,5.729198827E1 +2.022100000E2,5.793084452E1 +2.025070000E2,5.787194228E1 +2.027910000E2,5.959620014E1 +2.030940000E2,6.012062596E1 +2.033180000E2,6.276377758E1 +2.036210000E2,5.834405857E1 +2.039320000E2,5.545225289E1 +2.042050000E2,5.829439447E1 +2.044730000E2,5.799912649E1 +2.047970000E2,5.444896398E1 +2.050680000E2,5.743866699E1 +2.053150000E2,5.862448994E1 +2.055880000E2,5.778478934E1 +2.058890000E2,5.527981007E1 +2.061620000E2,5.742523507E1 +2.064580000E2,5.472188821E1 +2.067100000E2,6.202721053E1 +2.069630000E2,5.861698013E1 +2.072080000E2,6.294616718E1 +2.074730000E2,6.321186761E1 +2.077380000E2,5.776609523E1 +2.080390000E2,6.061292698E1 +2.083320000E2,5.857532480E1 +2.085870000E2,5.800369352E1 +2.088450000E2,5.977447345E1 +2.091070000E2,5.957010157E1 +2.093520000E2,6.145770306E1 +2.096060000E2,6.176056517E1 +2.098580000E2,6.033519811E1 +2.100970000E2,6.429628489E1 +2.103980000E2,6.215353584E1 +2.106470000E2,6.299048914E1 +2.109300000E2,6.133544133E1 +2.112010000E2,5.397487394E1 +2.114250000E2,5.313920655E1 +2.116740000E2,5.552710709E1 +2.119140000E2,5.692289703E1 +2.121730000E2,5.618691953E1 +2.124220000E2,5.402804715E1 +2.127170000E2,5.390450402E1 +2.129570000E2,5.652515030E1 +2.132580000E2,5.490504921E1 +2.135120000E2,5.485761082E1 +2.137850000E2,6.486277416E1 +2.140520000E2,6.121826472E1 +2.143580000E2,6.355465948E1 +2.146390000E2,5.534291145E1 +2.148790000E2,6.610858745E1 +2.151670000E2,5.617739728E1 +2.154670000E2,5.426651762E1 +2.157300000E2,5.840247716E1 +2.160830000E2,5.257749691E1 +2.163200000E2,6.345809118E1 +2.165810000E2,6.020490407E1 +2.168390000E2,5.603372378E1 +2.170870000E2,5.452432165E1 +2.173530000E2,5.679931822E1 +2.176220000E2,6.225558234E1 +2.179360000E2,5.991886985E1 +2.182430000E2,6.307902574E1 +2.184780000E2,6.764692456E1 +2.187700000E2,6.696013302E1 +2.190280000E2,6.419552300E1 +2.193390000E2,6.401831507E1 +2.196000000E2,6.317016249E1 +2.198590000E2,6.093052958E1 +2.201380000E2,6.446513941E1 +2.204220000E2,6.075454080E1 +2.206690000E2,6.712020778E1 +2.209300000E2,5.440050354E1 +2.212550000E2,5.627963451E1 +2.215550000E2,6.358778444E1 +2.217990000E2,5.793661873E1 +2.220730000E2,6.448679664E1 +2.223050000E2,5.844994198E1 +2.226510000E2,5.802583418E1 +2.229440000E2,5.848297014E1 +2.231840000E2,6.170695891E1 +2.234220000E2,6.201301769E1 +2.236630000E2,6.049179870E1 +2.239600000E2,6.316843106E1 +2.242020000E2,5.818837652E1 +2.245150000E2,6.411353278E1 +2.248330000E2,6.458398711E1 +2.250670000E2,6.303280227E1 +2.253240000E2,6.378696379E1 +2.255670000E2,6.157533943E1 +2.259260000E2,5.845901257E1 +2.261910000E2,5.623331182E1 +2.264460000E2,5.550822889E1 +2.267020000E2,5.907003722E1 +2.270220000E2,6.300043778E1 +2.273130000E2,5.934584116E1 +2.275640000E2,5.367094537E1 +2.278520000E2,6.260544714E1 +2.281140000E2,5.666507163E1 +2.283970000E2,6.099713971E1 +2.287020000E2,5.943082312E1 +2.289450000E2,6.095935321E1 +2.292950000E2,5.939706013E1 +2.296230000E2,5.612117806E1 +2.299220000E2,5.805831404E1 +2.301570000E2,5.496048372E1 +2.304070000E2,5.335836124E1 +2.306490000E2,5.043808989E1 +2.309270000E2,4.778025574E1 +2.311680000E2,4.613189565E1 +2.314100000E2,4.740314381E1 +2.316580000E2,5.230056147E1 +2.319150000E2,5.672989332E1 +2.321590000E2,6.081799709E1 +2.325030000E2,5.909736866E1 +2.327570000E2,5.528762811E1 +2.330520000E2,6.623131701E1 +2.333360000E2,6.376149752E1 +2.335730000E2,6.088376871E1 +2.338700000E2,6.235681388E1 +2.341160000E2,6.060610548E1 +2.343930000E2,5.779254532E1 +2.346370000E2,5.570043106E1 +2.349010000E2,6.172637016E1 +2.351520000E2,5.865545525E1 +2.354420000E2,6.250465685E1 +2.356850000E2,6.494272879E1 +2.359310000E2,6.075163542E1 +2.361840000E2,5.742858606E1 +2.364460000E2,5.756917813E1 +2.366990000E2,6.169927684E1 +2.370080000E2,5.540268710E1 +2.373040000E2,5.484088652E1 +2.376000000E2,5.732112773E1 +2.378800000E2,5.184194161E1 +2.381270000E2,5.604168635E1 +2.383910000E2,5.644051218E1 +2.387130000E2,6.049774032E1 +2.390290000E2,6.303013407E1 +2.392800000E2,6.115111046E1 +2.395770000E2,6.294174883E1 +2.398740000E2,6.716012591E1 +2.401880000E2,7.075117191E1 +2.404890000E2,6.435561631E1 +2.407550000E2,5.593172595E1 +2.410720000E2,5.781614361E1 +2.413350000E2,5.497792445E1 +2.416080000E2,5.569244646E1 +2.418870000E2,5.408109683E1 +2.421100000E2,5.687440525E1 +2.424230000E2,6.415333296E1 +2.427170000E2,6.528722740E1 +2.429900000E2,6.229384329E1 +2.432350000E2,5.452507698E1 +2.434960000E2,5.248331654E1 +2.437450000E2,5.069826347E1 +2.439880000E2,4.989889277E1 +2.442610000E2,5.196931346E1 +2.445130000E2,4.988417717E1 +2.448120000E2,5.950968466E1 +2.451200000E2,5.725324421E1 +2.454210000E2,5.902908729E1 +2.456980000E2,5.857784521E1 +2.459650000E2,5.154496059E1 +2.462670000E2,5.316738342E1 +2.465660000E2,5.681338179E1 +2.468580000E2,5.486468116E1 +2.471080000E2,5.378622946E1 +2.473840000E2,5.263910847E1 +2.477040000E2,5.102724000E1 +2.479590000E2,4.958128022E1 +2.482070000E2,5.621813465E1 +2.486190000E2,5.553111013E1 +2.489120000E2,5.711728514E1 +2.491630000E2,6.098223102E1 +2.494610000E2,5.812970142E1 +2.497290000E2,5.874411947E1 +2.500090000E2,6.058797235E1 +2.503160000E2,5.921850964E1 +2.506300000E2,5.825659244E1 +2.508940000E2,5.902074554E1 +2.512250000E2,5.857720223E1 +2.514860000E2,5.834259509E1 +2.517560000E2,5.664723408E1 +2.520110000E2,6.245873243E1 +2.522800000E2,6.018081628E1 +2.525490000E2,6.060905480E1 +2.527980000E2,6.098924059E1 +2.530310000E2,6.604497204E1 +2.532750000E2,5.762503683E1 +2.535750000E2,5.946675250E1 +2.538150000E2,5.696283688E1 +2.541120000E2,5.795434272E1 +2.543420000E2,5.641662406E1 +2.546470000E2,6.001503419E1 +2.549610000E2,5.913147779E1 +2.552050000E2,5.772050526E1 +2.554250000E2,5.986895040E1 +2.557400000E2,4.836792039E1 +2.560130000E2,4.818172752E1 +2.563450000E2,5.244597112E1 +2.566130000E2,5.174954560E1 +2.568650000E2,5.165225717E1 +2.571100000E2,4.865803315E1 +2.573530000E2,4.773689375E1 +2.576460000E2,5.375353685E1 +2.579030000E2,5.630041837E1 +2.582540000E2,5.390583403E1 +2.585030000E2,5.686416101E1 +2.588120000E2,5.880170204E1 +2.590630000E2,5.373023259E1 +2.593590000E2,6.009405077E1 +2.596120000E2,5.710673366E1 +2.598560000E2,5.891240789E1 +2.600990000E2,5.960890080E1 +2.603510000E2,6.728594423E1 +2.606060000E2,6.334340199E1 +2.609270000E2,6.082175509E1 +2.611830000E2,5.750083619E1 +2.615060000E2,5.667484133E1 +2.618070000E2,6.152760439E1 +2.620430000E2,5.697586540E1 +2.623440000E2,5.674189037E1 +2.625730000E2,5.539036876E1 +2.628210000E2,4.901745514E1 +2.631270000E2,5.264848299E1 +2.634230000E2,5.038277380E1 +2.636750000E2,5.149234245E1 +2.639170000E2,4.604207892E1 +2.641630000E2,5.735184247E1 +2.644630000E2,5.659523444E1 +2.648080000E2,5.697978691E1 +2.650640000E2,5.691301726E1 +2.653540000E2,5.696584583E1 +2.656480000E2,5.138210199E1 +2.659030000E2,5.345758564E1 +2.661640000E2,5.363588256E1 +2.664240000E2,5.471656895E1 +2.666720000E2,5.140760448E1 +2.669400000E2,5.329005020E1 +2.671940000E2,5.422388323E1 +2.674460000E2,5.133919880E1 +2.677140000E2,5.690801972E1 +2.681270000E2,5.964609863E1 +2.684030000E2,6.167901240E1 +2.686970000E2,5.297205648E1 +2.689350000E2,5.530010894E1 +2.692310000E2,5.450325538E1 +2.694700000E2,5.391690578E1 +2.697660000E2,5.420666075E1 +2.700010000E2,4.962510480E1 +2.702390000E2,5.010058679E1 +2.705460000E2,5.345147952E1 +2.708590000E2,5.574757195E1 +2.711770000E2,5.571208034E1 +2.714720000E2,5.288998421E1 +2.717170000E2,5.214438195E1 +2.720190000E2,5.232798978E1 +2.723080000E2,6.045263056E1 +2.725500000E2,5.870512300E1 +2.727930000E2,5.577911819E1 +2.730760000E2,5.501493048E1 +2.733800000E2,5.433475343E1 +2.736720000E2,5.293457700E1 +2.739070000E2,5.486483547E1 +2.741780000E2,6.008208952E1 +2.745050000E2,5.845984546E1 +2.748040000E2,5.900764997E1 +2.751070000E2,5.760203457E1 +2.754240000E2,5.795024632E1 +2.757280000E2,6.182748257E1 +2.760340000E2,5.683205968E1 +2.763350000E2,5.821402367E1 +2.766080000E2,5.520672517E1 +2.768980000E2,5.645892504E1 +2.772030000E2,5.463906896E1 +2.775200000E2,5.412722413E1 +2.777910000E2,5.268636730E1 +2.780870000E2,5.566734184E1 +2.783350000E2,5.745256931E1 +2.785810000E2,5.645167582E1 +2.788270000E2,5.925831320E1 +2.790840000E2,5.591320738E1 +2.793690000E2,5.632637646E1 +2.796200000E2,6.252281740E1 +2.799120000E2,5.547643277E1 +2.801570000E2,6.021611275E1 +2.804580000E2,5.732676882E1 +2.808110000E2,5.909573770E1 +2.810780000E2,6.005240162E1 +2.813300000E2,5.965022185E1 +2.815820000E2,6.135840817E1 +2.818790000E2,5.970629096E1 +2.821590000E2,5.879025140E1 +2.824010000E2,5.747324456E1 +2.826520000E2,5.726379384E1 +2.828950000E2,5.871306541E1 +2.831920000E2,6.188032415E1 +2.834710000E2,6.066582287E1 +2.837110000E2,5.950933244E1 +2.840350000E2,5.901018860E1 +2.843000000E2,5.761182729E1 +2.846050000E2,5.446909438E1 +2.848570000E2,5.349219985E1 +2.851700000E2,5.015518748E1 +2.854330000E2,5.374610595E1 +2.857270000E2,5.877223624E1 +2.860310000E2,5.644512377E1 +2.863080000E2,5.711327205E1 +2.865540000E2,5.655239592E1 +2.867930000E2,5.833716670E1 +2.871150000E2,5.417781453E1 +2.874030000E2,5.332227783E1 +2.876540000E2,5.146836736E1 +2.879540000E2,5.452228720E1 +2.881970000E2,5.025406823E1 +2.884910000E2,5.490648375E1 +2.887280000E2,5.506242221E1 +2.890210000E2,5.400927835E1 +2.892600000E2,5.781126179E1 +2.895430000E2,6.384283902E1 +2.898470000E2,6.340395874E1 +2.901430000E2,5.555395770E1 +2.904560000E2,5.514224078E1 +2.907530000E2,5.346566906E1 +2.910000000E2,5.948406902E1 +2.912590000E2,6.362292628E1 +2.915300000E2,6.175065463E1 +2.918240000E2,6.129817533E1 +2.920790000E2,6.317618325E1 +2.923350000E2,6.137933812E1 +2.926010000E2,5.620086793E1 +2.928740000E2,5.715913846E1 +2.931780000E2,7.028942499E1 +2.934620000E2,6.774357618E1 +2.937770000E2,6.989950413E1 +2.940270000E2,6.631119439E1 +2.943030000E2,6.956920703E1 +2.945570000E2,6.352936554E1 +2.948100000E2,6.981123112E1 +2.951150000E2,5.607171784E1 +2.953950000E2,5.394017247E1 +2.956980000E2,7.110851253E1 +2.959460000E2,6.978848906E1 +2.961900000E2,5.446752823E1 +2.965090000E2,6.309281755E1 +2.968110000E2,6.647752141E1 +2.971300000E2,6.773248230E1 +2.974240000E2,6.289421429E1 +2.977060000E2,5.998905240E1 +2.979500000E2,6.016152671E1 +2.981940000E2,5.851705490E1 +2.984880000E2,6.506323043E1 +2.987430000E2,5.702053645E1 +2.990110000E2,4.890963733E1 +2.993040000E2,5.105737182E1 +2.995650000E2,4.950865545E1 +2.998150000E2,4.713536225E1 +3.000860000E2,6.170154569E1 +3.003780000E2,5.697995513E1 +3.006750000E2,6.496205179E1 +3.009180000E2,5.585602045E1 +3.012120000E2,5.317421587E1 +3.015130000E2,5.532213468E1 +3.017840000E2,5.371543715E1 +3.020520000E2,6.741141038E1 +3.023220000E2,6.638671809E1 +3.025730000E2,5.833940482E1 +3.028700000E2,6.272205104E1 +3.031230000E2,6.150676490E1 +3.034050000E2,6.571826996E1 +3.036710000E2,6.387001854E1 +3.039460000E2,5.704179120E1 +3.042380000E2,5.452420344E1 +3.044730000E2,6.911436343E1 +3.047670000E2,6.747337761E1 +3.050070000E2,6.642457947E1 +3.053010000E2,6.704052830E1 +3.055360000E2,6.335116163E1 +3.058350000E2,6.452879154E1 +3.061310000E2,6.588892290E1 +3.064460000E2,6.065604325E1 +3.066970000E2,5.884139521E1 +3.069890000E2,6.115548360E1 +3.072650000E2,5.474220631E1 +3.075290000E2,5.525228633E1 +3.077890000E2,5.546520153E1 +3.080280000E2,5.799541194E1 +3.083270000E2,5.467819740E1 +3.086250000E2,5.227747322E1 +3.089260000E2,5.802220937E1 +3.091970000E2,5.383690373E1 +3.095040000E2,5.794687305E1 +3.097810000E2,5.426386053E1 +3.100000000E2,5.745164866E1 +3.103300000E2,5.475501144E1 +3.106240000E2,5.154802151E1 +3.108750000E2,5.434380726E1 +3.111540000E2,5.533246388E1 +3.114150000E2,5.554218476E1 +3.116740000E2,5.375334275E1 +3.119200000E2,5.727216331E1 +3.121680000E2,5.235396651E1 +3.124720000E2,6.207307801E1 +3.127180000E2,6.488896117E1 +3.130530000E2,6.168970511E1 +3.133080000E2,6.010687101E1 +3.135950000E2,6.305386662E1 +3.138880000E2,6.214030252E1 +3.141410000E2,5.907513997E1 +3.143960000E2,6.064308138E1 +3.146480000E2,6.195321339E1 +3.148870000E2,6.088765310E1 +3.151830000E2,5.906360624E1 +3.154280000E2,5.864981040E1 +3.157360000E2,5.824424792E1 +3.159750000E2,5.826399021E1 +3.163740000E2,6.051726612E1 +3.166320000E2,6.011967909E1 +3.168940000E2,5.577110603E1 +3.172010000E2,5.372586587E1 +3.174460000E2,5.537091967E1 +3.176890000E2,5.504912063E1 +3.179320000E2,5.264203521E1 +3.182150000E2,5.344854544E1 +3.184600000E2,5.656777951E1 +3.187200000E2,5.398435402E1 +3.189820000E2,5.410695962E1 +3.192460000E2,5.344168860E1 +3.195780000E2,5.697626360E1 +3.198350000E2,6.073105615E1 +3.200880000E2,6.621432780E1 +3.203460000E2,6.597785722E1 +3.205980000E2,5.907542432E1 +3.208920000E2,5.702769809E1 +3.211760000E2,6.207459825E1 +3.214520000E2,5.921715282E1 +3.217010000E2,5.501368146E1 +3.220030000E2,5.927746858E1 +3.223090000E2,5.878714279E1 +3.226530000E2,6.209253703E1 +3.229180000E2,5.801419316E1 +3.231660000E2,6.150680788E1 +3.234110000E2,5.950436139E1 +3.236660000E2,5.694006868E1 +3.239890000E2,5.964691948E1 +3.242420000E2,6.322261269E1 +3.245070000E2,5.967413832E1 +3.247540000E2,5.743115651E1 +3.250010000E2,5.693057833E1 +3.252760000E2,5.076009335E1 +3.255600000E2,5.432440321E1 +3.258270000E2,5.728583073E1 +3.262160000E2,6.158050311E1 +3.264570000E2,5.788548067E1 +3.267330000E2,5.661485397E1 +3.270280000E2,5.698735139E1 +3.272870000E2,5.428158234E1 +3.275550000E2,5.401192370E1 +3.278320000E2,5.894424302E1 +3.281050000E2,5.279140275E1 +3.283850000E2,5.366788524E1 +3.286760000E2,5.569462346E1 +3.289750000E2,5.484501656E1 +3.292730000E2,5.654335493E1 +3.295550000E2,5.483429560E1 +3.298560000E2,5.516099131E1 +3.301720000E2,5.150081287E1 +3.304560000E2,5.126263973E1 +3.307930000E2,4.943715566E1 +3.310330000E2,5.297477083E1 +3.312800000E2,4.994759883E1 +3.316030000E2,5.283028939E1 +3.318860000E2,5.150402936E1 +3.321790000E2,5.777668868E1 +3.325470000E2,5.446937149E1 +3.328030000E2,5.754474494E1 +3.330410000E2,5.437750931E1 +3.333210000E2,5.378201308E1 +3.335760000E2,5.486825362E1 +3.338240000E2,5.338123539E1 +3.340700000E2,5.704649160E1 +3.343740000E2,5.576563429E1 +3.346640000E2,5.503590574E1 +3.349650000E2,5.539431503E1 +3.352080000E2,5.782097549E1 +3.355080000E2,5.260852375E1 +3.358690000E2,6.012616228E1 +3.361400000E2,5.534922411E1 +3.363810000E2,5.436765301E1 +3.366230000E2,5.007736554E1 +3.368850000E2,5.304270830E1 +3.371340000E2,5.106682022E1 +3.373960000E2,5.491262243E1 +3.376890000E2,5.891119644E1 +3.379320000E2,5.554676164E1 +3.382420000E2,5.491809401E1 +3.385700000E2,6.003743295E1 +3.389490000E2,5.964265847E1 +3.392140000E2,6.009419780E1 +3.394780000E2,5.950800538E1 +3.397810000E2,5.514081916E1 +3.400260000E2,5.654810222E1 +3.403230000E2,5.919098275E1 +3.405600000E2,5.937137097E1 +3.408650000E2,5.885711760E1 +3.411560000E2,6.122434193E1 +3.414060000E2,6.101494213E1 +3.416650000E2,5.685059098E1 +3.419710000E2,4.988163583E1 +3.423360000E2,5.097871962E1 +3.426300000E2,6.097968551E1 +3.429260000E2,5.246223058E1 +3.431760000E2,5.140448000E1 +3.434570000E2,5.162147831E1 +3.436910000E2,5.437509469E1 +3.439650000E2,5.588289675E1 +3.442010000E2,5.342482218E1 +3.444930000E2,5.621155564E1 +3.447310000E2,5.753713233E1 +3.450340000E2,5.873821374E1 +3.453240000E2,5.674648484E1 +3.455770000E2,5.843857274E1 +3.458770000E2,6.170678128E1 +3.461770000E2,5.848319050E1 +3.464240000E2,5.996271814E1 +3.467290000E2,5.583139448E1 +3.470000000E2,5.558324990E1 +3.472360000E2,5.638821787E1 +3.474880000E2,6.015129432E1 +3.477550000E2,6.074195357E1 +3.480530000E2,6.258101891E1 +3.483260000E2,6.280209300E1 +3.486840000E2,5.935598721E1 +3.489370000E2,6.423635683E1 +3.492060000E2,7.026891453E1 +3.495130000E2,5.477771858E1 +3.498240000E2,6.143080763E1 +3.500700000E2,6.077206860E1 +3.503130000E2,5.816670512E1 +3.506030000E2,6.220374728E1 +3.509040000E2,6.435510927E1 +3.511560000E2,6.387906049E1 +3.514240000E2,6.324188625E1 +3.517710000E2,6.217871174E1 +3.520510000E2,6.349767138E1 +3.523000000E2,5.947763114E1 +3.525840000E2,5.623947938E1 +3.528810000E2,5.940245648E1 +3.531830000E2,5.323006485E1 +3.534790000E2,4.756673680E1 +3.537830000E2,5.761743216E1 +3.540870000E2,5.701856444E1 +3.543720000E2,5.507707077E1 +3.546320000E2,5.561457107E1 +3.549330000E2,6.036785424E1 +3.552860000E2,5.818319920E1 +3.555390000E2,5.636477080E1 +3.557840000E2,5.686236286E1 +3.560330000E2,6.137502104E1 +3.563290000E2,6.039421004E1 +3.565710000E2,5.873926214E1 +3.568160000E2,5.984737812E1 +3.570890000E2,5.898549785E1 +3.573200000E2,5.804358229E1 +3.576080000E2,5.178825198E1 +3.578380000E2,5.333798630E1 +3.581470000E2,5.663121054E1 +3.584860000E2,5.705169894E1 +3.587470000E2,5.488627438E1 +3.590020000E2,5.493171173E1 +3.592590000E2,5.280801534E1 +3.595110000E2,5.919356657E1 +3.597710000E2,6.061921525E1 +3.600770000E2,5.781838960E1 +3.603810000E2,5.824405535E1 +3.606410000E2,5.734273072E1 +3.608930000E2,5.860073318E1 +3.611440000E2,5.158577335E1 +3.614110000E2,5.569804167E1 +3.617550000E2,5.732029627E1 +3.620530000E2,5.599725951E1 +3.623260000E2,5.427140428E1 +3.625700000E2,5.439119305E1 +3.628680000E2,5.768088704E1 +3.631160000E2,5.322266305E1 +3.634170000E2,5.611257515E1 +3.637150000E2,5.466283243E1 +3.639540000E2,5.648497192E1 +3.642520000E2,5.982456496E1 +3.644910000E2,5.683499776E1 +3.648080000E2,5.424977228E1 +3.650550000E2,5.261749952E1 +3.653010000E2,5.976464589E1 +3.655400000E2,5.630627545E1 +3.658370000E2,5.855663855E1 +3.660660000E2,5.839517218E1 +3.663050000E2,5.701336937E1 +3.666100000E2,6.057417753E1 +3.668530000E2,5.660058929E1 +3.671060000E2,5.360906173E1 +3.673270000E2,5.766761713E1 +3.676020000E2,5.473947199E1 +3.679270000E2,5.730791892E1 +3.681990000E2,5.368134624E1 +3.685210000E2,5.122725302E1 +3.688180000E2,5.413949330E1 +3.690720000E2,5.953240184E1 +3.693650000E2,5.834363401E1 +3.696110000E2,4.952962201E1 +3.698620000E2,6.082605721E1 +3.701240000E2,5.541205242E1 +3.703840000E2,5.595936781E1 +3.706570000E2,5.751180267E1 +3.709050000E2,5.510413826E1 +3.712530000E2,5.236304209E1 +3.715330000E2,5.429686706E1 +3.717680000E2,5.365135821E1 +3.720680000E2,5.442146139E1 +3.723070000E2,5.193301537E1 +3.726070000E2,5.573089397E1 +3.728540000E2,5.084704353E1 +3.731070000E2,5.244752708E1 +3.734250000E2,5.501438711E1 +3.737160000E2,5.701937821E1 +3.739830000E2,5.913008265E1 +3.743030000E2,6.329763996E1 +3.745490000E2,5.828010903E1 +3.748110000E2,5.514928454E1 +3.750560000E2,5.535724603E1 +3.753250000E2,6.062318511E1 +3.756820000E2,5.853801057E1 +3.759720000E2,6.218740595E1 +3.762560000E2,6.130322227E1 +3.764780000E2,5.705598438E1 +3.767430000E2,5.675025411E1 +3.770350000E2,5.562309411E1 +3.773330000E2,6.171478403E1 +3.776660000E2,5.752069737E1 +3.779640000E2,5.869913239E1 +3.782130000E2,5.802158707E1 +3.785030000E2,5.920699755E1 +3.787580000E2,5.984700757E1 +3.790120000E2,5.874214142E1 +3.792820000E2,5.792329599E1 +3.795460000E2,6.240429581E1 +3.798520000E2,5.924961400E1 +3.800960000E2,5.655548581E1 +3.803510000E2,5.997047167E1 +3.806590000E2,5.894207932E1 +3.810310000E2,5.556916558E1 +3.813250000E2,5.709965860E1 +3.815810000E2,5.724657649E1 +3.818690000E2,5.634885250E1 +3.821660000E2,5.381597934E1 +3.824070000E2,5.409431797E1 +3.827020000E2,5.558304395E1 +3.829400000E2,5.836087965E1 +3.832380000E2,5.621848827E1 +3.834740000E2,5.756105430E1 +3.837670000E2,5.972981317E1 +3.840620000E2,6.110722903E1 +3.842970000E2,6.011338906E1 +3.846120000E2,6.632548976E1 +3.849300000E2,5.632542095E1 +3.852340000E2,5.660090160E1 +3.854760000E2,5.637042997E1 +3.857700000E2,6.483820819E1 +3.860160000E2,6.294386681E1 +3.862760000E2,6.248693097E1 +3.865740000E2,5.966646580E1 +3.868130000E2,5.884596060E1 +3.871230000E2,6.069045984E1 +3.874660000E2,5.535227762E1 +3.877260000E2,5.453589064E1 +3.879920000E2,5.803286513E1 +3.882920000E2,6.338575111E1 +3.885370000E2,6.297665471E1 +3.888380000E2,6.078963895E1 +3.890870000E2,6.078711186E1 +3.893350000E2,5.918580133E1 +3.896040000E2,5.645003340E1 +3.899070000E2,5.868887980E1 +3.901560000E2,5.816727924E1 +3.904840000E2,5.908711574E1 +3.907830000E2,5.165109059E1 +3.910410000E2,5.747977046E1 +3.913230000E2,5.600926578E1 +3.916170000E2,5.743239537E1 +3.918580000E2,5.999528635E1 +3.921650000E2,5.924448814E1 +3.924670000E2,6.347749271E1 +3.927590000E2,6.285842009E1 +3.929960000E2,6.439104552E1 +3.933010000E2,6.092208558E1 +3.935450000E2,5.889760176E1 +3.939100000E2,5.798312040E1 +3.941770000E2,5.909426563E1 +3.944250000E2,5.971090911E1 +3.946810000E2,5.379436409E1 +3.949270000E2,5.134339741E1 +3.951700000E2,5.739586279E1 +3.954270000E2,5.255911571E1 +3.956850000E2,5.149310319E1 +3.959500000E2,5.723685944E1 +3.962270000E2,5.622087783E1 +3.964720000E2,6.119098643E1 +3.967310000E2,6.249797436E1 +3.970320000E2,5.838309249E1 +3.973440000E2,5.720898847E1 +3.976100000E2,5.357982700E1 +3.978600000E2,5.091452983E1 +3.981070000E2,4.781274510E1 +3.983520000E2,4.684320786E1 +3.986530000E2,4.867937405E1 +3.988970000E2,4.947454895E1 +3.991740000E2,4.941937240E1 +3.994180000E2,5.206925818E1 +3.997200000E2,5.099596962E1 +3.999720000E2,5.059119317E1 +4.002350000E2,4.980275756E1 +4.004940000E2,5.514017077E1 +4.008060000E2,5.354499430E1 +4.011150000E2,5.377825353E1 +4.013980000E2,5.657928040E1 +4.016460000E2,6.437756844E1 +4.019070000E2,6.072529486E1 +4.021970000E2,5.876291143E1 +4.024430000E2,6.118567430E1 +4.027460000E2,5.925186578E1 +4.030590000E2,5.727531678E1 +4.033610000E2,6.211123432E1 +4.036680000E2,6.041950332E1 +4.039230000E2,6.161200416E1 +4.041780000E2,6.047480336E1 +4.044620000E2,5.905442986E1 +4.047060000E2,5.729915709E1 +4.049630000E2,6.020933408E1 +4.052500000E2,5.845152603E1 +4.055600000E2,5.814304967E1 +4.058210000E2,5.866194002E1 +4.060640000E2,5.736420578E1 +4.063180000E2,6.107395805E1 +4.065790000E2,5.985269852E1 +4.069480000E2,5.745859610E1 +4.072050000E2,5.693680110E1 +4.074960000E2,6.165201185E1 +4.077470000E2,6.131132241E1 +4.079970000E2,5.824414723E1 +4.083050000E2,5.958451387E1 +4.085600000E2,5.739792126E1 +4.088150000E2,5.573389816E1 +4.090850000E2,5.530698039E1 +4.093810000E2,5.634371531E1 +4.096660000E2,5.880658089E1 +4.099920000E2,5.804298004E1 +4.102870000E2,5.688352401E1 +4.106310000E2,5.573115839E1 +4.109280000E2,5.368053116E1 +4.112180000E2,5.474384188E1 +4.114650000E2,5.380195893E1 +4.117660000E2,5.718608674E1 +4.120140000E2,5.703743686E1 +4.122910000E2,5.985228158E1 +4.125620000E2,6.278694860E1 +4.128210000E2,5.839550633E1 +4.130600000E2,6.029373556E1 +4.133710000E2,5.711050636E1 +4.136150000E2,5.200468588E1 +4.138820000E2,5.769230508E1 +4.141370000E2,5.333759168E1 +4.143860000E2,5.632377961E1 +4.146570000E2,5.647744894E1 +4.149040000E2,5.667945226E1 +4.151840000E2,5.669404445E1 +4.154420000E2,6.072374556E1 +4.157420000E2,5.606444578E1 +4.159850000E2,5.623596320E1 +4.162830000E2,5.264542492E1 +4.165340000E2,5.359803767E1 +4.168600000E2,5.691340897E1 +4.171060000E2,5.636326143E1 +4.173490000E2,6.276141082E1 +4.176080000E2,6.197471417E1 +4.178580000E2,5.777170976E1 +4.181050000E2,5.407671770E1 +4.183760000E2,4.795453020E1 +4.186580000E2,5.871005652E1 +4.188870000E2,6.069158080E1 +4.191320000E2,6.112379328E1 +4.193750000E2,5.584116633E1 +4.196280000E2,6.302854070E1 +4.199610000E2,6.640457067E1 +4.202240000E2,6.337314603E1 +4.205160000E2,5.904470105E1 +4.208200000E2,5.799078909E1 +4.210810000E2,5.975635789E1 +4.213260000E2,6.334088587E1 +4.215900000E2,5.849627934E1 +4.218550000E2,5.894070219E1 +4.221030000E2,5.961371776E1 +4.223550000E2,5.281830949E1 +4.225970000E2,4.892580508E1 +4.229130000E2,5.950646935E1 +4.232610000E2,6.303011111E1 +4.235630000E2,6.030515180E1 +4.238060000E2,5.832387195E1 +4.240560000E2,6.126571743E1 +4.243280000E2,5.961805347E1 +4.245710000E2,5.916464366E1 +4.248300000E2,6.404431780E1 +4.251020000E2,6.161392817E1 +4.253630000E2,6.303875005E1 +4.256110000E2,6.294329578E1 +4.258560000E2,6.495739223E1 +4.261620000E2,6.352748415E1 +4.265140000E2,6.360144813E1 +4.267650000E2,6.320185268E1 +4.270250000E2,6.598206760E1 +4.272910000E2,5.736158392E1 +4.275300000E2,5.632655800E1 +4.277760000E2,5.626186588E1 +4.280650000E2,5.992298879E1 +4.283460000E2,5.976814640E1 +4.285960000E2,5.617047451E1 +4.288540000E2,5.410240194E1 +4.291290000E2,5.524345530E1 +4.293550000E2,5.025485629E1 +4.297050000E2,5.094849624E1 +4.299600000E2,5.349595208E1 +4.302230000E2,5.668766668E1 +4.304690000E2,5.470073040E1 +4.307330000E2,5.808421323E1 +4.310240000E2,5.815977776E1 +4.312740000E2,5.751031291E1 +4.315190000E2,6.045600028E1 +4.318300000E2,5.967896339E1 +4.320980000E2,5.746835753E1 +4.324020000E2,5.874054152E1 +4.327010000E2,5.770096959E1 +4.330460000E2,5.851412717E1 +4.333220000E2,5.970473393E1 +4.335930000E2,6.024030776E1 +4.338530000E2,5.564089573E1 +4.341340000E2,5.328000065E1 +4.343790000E2,5.522789934E1 +4.346930000E2,5.271905966E1 +4.349910000E2,5.685384424E1 +4.352400000E2,5.751176106E1 +4.355350000E2,5.654290580E1 +4.357760000E2,5.976937629E1 +4.360780000E2,5.445311615E1 +4.363520000E2,5.460006243E1 +4.366010000E2,5.402958946E1 +4.369120000E2,5.611325616E1 +4.371660000E2,5.675575065E1 +4.374120000E2,5.605818704E1 +4.377070000E2,5.614720111E1 +4.379470000E2,5.596280974E1 +4.382450000E2,5.764305460E1 +4.384820000E2,6.015340826E1 +4.387240000E2,6.073594369E1 +4.390310000E2,5.846982437E1 +4.393110000E2,5.837342754E1 +4.396160000E2,5.758988397E1 +4.398810000E2,5.375393273E1 +4.401700000E2,5.590416510E1 +4.404180000E2,5.649267014E1 +4.406570000E2,5.809884175E1 +4.409200000E2,5.934788425E1 +4.411750000E2,5.883690392E1 +4.414270000E2,5.465512306E1 +4.416780000E2,5.456039720E1 +4.419260000E2,6.053551690E1 +4.422020000E2,5.446896121E1 +4.425270000E2,5.304300238E1 +4.428480000E2,5.413537656E1 +4.431230000E2,5.590535088E1 +4.433740000E2,5.516889265E1 +4.436180000E2,5.375803139E1 +4.439250000E2,5.440731706E1 +4.441670000E2,5.378894171E1 +4.444170000E2,5.676009311E1 +4.447160000E2,5.433224316E1 +4.449620000E2,5.431777666E1 +4.452100000E2,5.220353562E1 +4.454560000E2,5.525232641E1 +4.456950000E2,5.348687858E1 +4.459900000E2,5.571408478E1 +4.462320000E2,5.590054486E1 +4.464840000E2,5.627503595E1 +4.467390000E2,5.824548232E1 +4.469910000E2,5.637049423E1 +4.472460000E2,5.754096885E1 +4.474930000E2,5.335865942E1 +4.477890000E2,5.765888938E1 +4.480780000E2,6.102087464E1 +4.483520000E2,6.006145593E1 +4.486510000E2,5.685958774E1 +4.489610000E2,5.748149351E1 +4.492370000E2,5.709623916E1 +4.495040000E2,5.821496279E1 +4.497570000E2,5.970222946E1 +4.500030000E2,5.750976802E1 +4.502380000E2,5.796549321E1 +4.505370000E2,5.665777454E1 +4.508330000E2,5.605038109E1 +4.510750000E2,5.504306522E1 +4.513230000E2,5.112487870E1 +4.515900000E2,5.559150914E1 +4.518300000E2,5.656933458E1 +4.520810000E2,6.082180135E1 +4.524470000E2,5.774965281E1 +4.527120000E2,5.847728207E1 +4.529730000E2,5.711434047E1 +4.532810000E2,5.503285278E1 +4.535670000E2,5.614330822E1 +4.538610000E2,6.211492489E1 +4.541040000E2,6.003078695E1 +4.543760000E2,5.766611466E1 +4.546280000E2,5.912518267E1 +4.549300000E2,5.969489895E1 +4.551760000E2,5.509558621E1 +4.554320000E2,5.963291683E1 +4.556950000E2,6.194656842E1 +4.559980000E2,6.032793642E1 +4.562390000E2,5.874022110E1 +4.565060000E2,6.016749735E1 +4.567480000E2,5.985596964E1 +4.570070000E2,5.588678859E1 +4.572660000E2,5.541792762E1 +4.575660000E2,4.969164404E1 +4.578050000E2,4.976271573E1 +4.581060000E2,5.634137812E1 +4.583500000E2,5.321783082E1 +4.586280000E2,5.816393976E1 +4.588870000E2,5.817726916E1 +4.591860000E2,5.398220140E1 +4.594690000E2,5.572842498E1 +4.597270000E2,5.759574297E1 +4.600290000E2,5.492384706E1 +4.602790000E2,5.570826682E1 +4.605780000E2,5.619496661E1 +4.608690000E2,5.993990435E1 +4.611730000E2,6.185390750E1 +4.614300000E2,6.125031183E1 +4.617390000E2,6.047450440E1 +4.621070000E2,5.913093195E1 +4.623500000E2,6.032535990E1 +4.626490000E2,5.803726699E1 +4.628910000E2,5.968748294E1 +4.631850000E2,5.792594347E1 +4.634330000E2,5.623910190E1 +4.636850000E2,6.026318401E1 +4.639240000E2,6.002593060E1 +4.641990000E2,5.694813724E1 +4.644200000E2,5.456998819E1 +4.646660000E2,5.683591124E1 +4.649070000E2,5.893829862E1 +4.652630000E2,5.637983039E1 +4.655160000E2,5.571226470E1 +4.657720000E2,5.582065666E1 +4.660510000E2,5.436378979E1 +4.663550000E2,5.697364508E1 +4.666350000E2,5.716664070E1 +4.668800000E2,6.098104772E1 +4.671260000E2,5.932872997E1 +4.673960000E2,5.573089336E1 +4.676430000E2,5.791664461E1 +4.678890000E2,5.589855895E1 +4.681490000E2,6.359324433E1 +4.685010000E2,5.902079393E1 +4.687870000E2,6.085500324E1 +4.690180000E2,6.401116813E1 +4.693190000E2,6.157634911E1 +4.695830000E2,6.068297160E1 +4.698370000E2,5.867738322E1 +4.701080000E2,6.069776659E1 +4.703530000E2,5.904983802E1 +4.706060000E2,5.642725313E1 +4.708480000E2,5.600286970E1 +4.711080000E2,5.678564623E1 +4.714020000E2,5.139543439E1 +4.717220000E2,5.924511995E1 +4.720300000E2,5.309180697E1 +4.722790000E2,5.295961103E1 +4.725820000E2,5.448425692E1 +4.728350000E2,5.346047841E1 +4.731210000E2,5.563518239E1 +4.733630000E2,5.630991562E1 +4.736070000E2,5.519344442E1 +4.738520000E2,5.696356709E1 +4.741150000E2,5.721588368E1 +4.743810000E2,5.556082681E1 +4.746430000E2,5.453201409E1 +4.749610000E2,5.621559396E1 +4.752460000E2,6.170975330E1 +4.755640000E2,6.352753975E1 +4.758660000E2,5.818774343E1 +4.761780000E2,6.177058435E1 +4.764630000E2,5.829511769E1 +4.766910000E2,5.658732029E1 +4.769520000E2,6.006113158E1 +4.772530000E2,6.022385702E1 +4.775200000E2,5.965858240E1 +4.778410000E2,5.970326758E1 +4.780960000E2,5.911597661E1 +4.783440000E2,5.656338446E1 +4.786020000E2,5.723922467E1 +4.788680000E2,5.700163516E1 +4.791490000E2,6.083416080E1 +4.794510000E2,5.899425763E1 +4.797630000E2,5.820674449E1 +4.800620000E2,5.648898879E1 +4.803380000E2,5.465743937E1 +4.806090000E2,5.006847009E1 +4.809050000E2,5.870050130E1 +4.811580000E2,5.878066343E1 +4.814060000E2,5.929414686E1 +4.817070000E2,5.758425183E1 +4.819760000E2,5.151398214E1 +4.822410000E2,5.772956896E1 +4.824880000E2,5.913153701E1 +4.827710000E2,5.814746383E1 +4.830140000E2,6.018356701E1 +4.832870000E2,5.985078792E1 +4.835070000E2,6.081307149E1 +4.837500000E2,5.810932132E1 +4.840440000E2,5.700769218E1 +4.842880000E2,5.815119989E1 +4.845920000E2,5.595850943E1 +4.849330000E2,5.891167795E1 +4.851960000E2,5.413833723E1 +4.854760000E2,6.184122004E1 +4.857700000E2,6.074653742E1 +4.860130000E2,6.033024099E1 +4.862530000E2,5.218562994E1 +4.865560000E2,5.902882093E1 +4.868150000E2,6.397338635E1 +4.870790000E2,6.543155406E1 +4.873440000E2,6.181389827E1 +4.876070000E2,6.381240883E1 +4.878770000E2,6.121521197E1 +4.882210000E2,5.780293585E1 +4.884640000E2,5.941826112E1 +4.887100000E2,6.118399944E1 +4.889830000E2,6.000089150E1 +4.892940000E2,5.873163787E1 +4.895350000E2,5.943116280E1 +4.897770000E2,5.867927357E1 +4.900230000E2,6.190584219E1 +4.903270000E2,6.313044892E1 +4.905550000E2,6.096660510E1 +4.907970000E2,5.773464228E1 +4.911090000E2,5.720144266E1 +4.914750000E2,5.797465536E1 +4.917410000E2,6.063197812E1 +4.920040000E2,5.799562897E1 +4.922950000E2,5.391853563E1 +4.925940000E2,6.053973121E1 +4.928320000E2,5.781822977E1 +4.931250000E2,6.541242849E1 +4.933660000E2,6.151252976E1 +4.936620000E2,5.962569242E1 +4.939140000E2,6.114162989E1 +4.941750000E2,6.074296596E1 +4.944160000E2,5.738425867E1 +4.947510000E2,6.084173002E1 +4.950140000E2,5.911448476E1 +4.953100000E2,6.076832164E1 +4.955530000E2,6.357047625E1 +4.958480000E2,6.344590866E1 +4.960850000E2,6.154350148E1 +4.963870000E2,5.815666478E1 +4.966770000E2,5.862350251E1 +4.969720000E2,5.162851816E1 +4.972640000E2,5.887916548E1 +4.975020000E2,6.130693279E1 +4.977480000E2,6.164914583E1 +4.980300000E2,5.689153252E1 +4.983240000E2,6.054571109E1 +4.985610000E2,5.779234792E1 +4.987980000E2,6.281334084E1 +4.991290000E2,6.074883772E1 +4.994230000E2,6.344972933E1 +4.996620000E2,6.040546490E1 +4.999570000E2,6.143019571E1 +5.002020000E2,6.117826214E1 +5.004980000E2,6.217883653E1 +5.007380000E2,6.294102819E1 +5.010930000E2,6.516475449E1 +5.013550000E2,6.119184016E1 +5.016670000E2,6.096554209E1 +5.019390000E2,6.197647057E1 +5.022530000E2,6.186754720E1 +5.025630000E2,5.954982776E1 +5.028510000E2,6.115486405E1 +5.031440000E2,6.348254173E1 +5.033820000E2,5.960570527E1 +5.036780000E2,5.977682583E1 +5.039180000E2,5.709696054E1 +5.042580000E2,6.265263203E1 +5.045140000E2,6.166583393E1 +5.047590000E2,6.184451596E1 +5.050170000E2,6.196658471E1 +5.053150000E2,6.014630927E1 +5.055610000E2,6.055201466E1 +5.058690000E2,6.189129858E1 +5.062120000E2,6.557808579E1 +5.064770000E2,6.080176744E1 +5.067370000E2,6.164107472E1 +5.069870000E2,6.497302078E1 +5.072490000E2,6.320126990E1 +5.076210000E2,6.073801439E1 +5.078780000E2,5.612097300E1 +5.081420000E2,5.978501024E1 +5.084360000E2,6.061444996E1 +5.086860000E2,6.272142993E1 +5.089270000E2,6.250458760E1 +5.092250000E2,5.860749180E1 +5.094720000E2,6.368373725E1 +5.097760000E2,6.005985592E1 +5.100780000E2,5.959557057E1 +5.103410000E2,6.085764000E1 +5.106360000E2,6.210563273E1 +5.109960000E2,6.125336704E1 +5.112590000E2,5.627814405E1 +5.115470000E2,6.253958528E1 +5.118480000E2,6.261683940E1 +5.120990000E2,5.782347554E1 +5.123560000E2,6.181201679E1 +5.126370000E2,6.425542150E1 +5.129400000E2,6.148973489E1 +5.132300000E2,6.230215374E1 +5.134720000E2,6.332855968E1 +5.137620000E2,5.875203916E1 +5.140950000E2,6.043073123E1 +5.143340000E2,5.829778385E1 +5.146280000E2,6.530539120E1 +5.148660000E2,5.725439078E1 +5.151580000E2,6.255661351E1 +5.153960000E2,6.412193683E1 +5.156410000E2,6.315775814E1 +5.158840000E2,6.025521775E1 +5.161460000E2,5.892698587E1 +5.164080000E2,5.956507822E1 +5.166610000E2,6.162757540E1 +5.169960000E2,6.009082976E1 +5.173360000E2,5.999682475E1 +5.176380000E2,6.121463264E1 +5.178750000E2,5.929809726E1 +5.181460000E2,5.746668369E1 +5.183810000E2,5.919113180E1 +5.186360000E2,5.827917213E1 +5.189280000E2,5.902314388E1 +5.192310000E2,6.116063950E1 +5.195310000E2,6.026149556E1 +5.198180000E2,5.851929656E1 +5.200920000E2,5.750929671E1 +5.204160000E2,5.729942637E1 +5.207470000E2,5.472104161E1 +5.210390000E2,6.169397748E1 +5.213450000E2,6.081589597E1 +5.216480000E2,6.278728872E1 +5.219550000E2,6.266319096E1 +5.222160000E2,6.478840582E1 +5.224820000E2,6.255888661E1 +5.227330000E2,6.119451713E1 +5.229970000E2,6.244953097E1 +5.232800000E2,6.000703556E1 +5.236020000E2,5.885323025E1 +5.239510000E2,5.826073845E1 +5.242570000E2,5.807287072E1 +5.245200000E2,5.931641295E1 +5.247800000E2,5.775994158E1 +5.250310000E2,6.167249992E1 +5.253010000E2,6.027694641E1 +5.255430000E2,6.329659774E1 +5.258240000E2,6.254377160E1 +5.261330000E2,6.489975363E1 +5.263840000E2,5.999325642E1 +5.266440000E2,5.885077446E1 +5.268920000E2,6.439829299E1 +5.272450000E2,6.165608373E1 +5.275110000E2,5.418048629E1 +5.277700000E2,5.656005066E1 +5.280170000E2,6.215252288E1 +5.283170000E2,5.743407158E1 +5.285650000E2,5.831214783E1 +5.288200000E2,6.066735547E1 +5.290820000E2,5.994603081E1 +5.293240000E2,5.951550591E1 +5.295810000E2,6.264700953E1 +5.298380000E2,5.736628274E1 +5.301360000E2,5.590406638E1 +5.304530000E2,6.041033291E1 +5.307000000E2,5.968691140E1 +5.309950000E2,5.730835182E1 +5.312390000E2,5.823026311E1 +5.315470000E2,5.871167442E1 +5.318430000E2,5.990765833E1 +5.321400000E2,6.387020611E1 +5.324510000E2,6.077699448E1 +5.326980000E2,5.895294298E1 +5.329820000E2,6.041997988E1 +5.333050000E2,5.806877757E1 +5.336110000E2,5.682362418E1 +5.340220000E2,5.915478638E1 +5.342790000E2,6.110946170E1 +5.345430000E2,5.735857105E1 +5.348060000E2,5.684014045E1 +5.350480000E2,6.043627860E1 +5.353500000E2,5.982929159E1 +5.356290000E2,5.986217314E1 +5.358770000E2,5.677131614E1 +5.361310000E2,5.763848566E1 +5.363810000E2,6.142463983E1 +5.366730000E2,5.634211854E1 +5.369290000E2,5.547608220E1 +5.372430000E2,5.920768747E1 +5.375170000E2,6.113406656E1 +5.377700000E2,6.208964505E1 +5.380710000E2,6.100572025E1 +5.383260000E2,6.352283467E1 +5.386320000E2,5.898993907E1 +5.389570000E2,5.503782412E1 +5.392560000E2,5.663453376E1 +5.395360000E2,6.406828344E1 +5.398060000E2,5.890955595E1 +5.400700000E2,6.046868424E1 +5.403380000E2,5.979639772E1 +5.406170000E2,5.838685694E1 +5.409120000E2,5.933573087E1 +5.411500000E2,5.970536072E1 +5.414430000E2,5.461931777E1 +5.417380000E2,5.891969668E1 +5.419780000E2,6.086182172E1 +5.422730000E2,5.706230292E1 +5.425150000E2,6.002937875E1 +5.428150000E2,5.733734968E1 +5.430520000E2,5.791730719E1 +5.433430000E2,5.451667439E1 +5.436740000E2,5.601232928E1 +5.439430000E2,6.067749331E1 +5.441960000E2,6.044443396E1 +5.445120000E2,6.332642539E1 +5.448320000E2,6.369907597E1 +5.451010000E2,6.327412880E1 +5.453640000E2,6.380509737E1 +5.456090000E2,6.199528902E1 +5.458550000E2,5.905332967E1 +5.461530000E2,5.748064798E1 +5.463920000E2,5.793139247E1 +5.466900000E2,5.931551966E1 +5.470480000E2,6.345498755E1 +5.473610000E2,5.881486603E1 +5.476220000E2,5.928200098E1 +5.478810000E2,5.577309321E1 +5.481470000E2,5.875325885E1 +5.483980000E2,6.007409743E1 +5.486490000E2,6.070612531E1 +5.488940000E2,5.934549940E1 +5.491520000E2,6.170511636E1 +5.494020000E2,6.376886521E1 +5.497010000E2,6.406587518E1 +5.499360000E2,6.365684538E1 +5.503130000E2,6.009406633E1 +5.505850000E2,6.014270409E1 +5.508500000E2,5.879153887E1 +5.511470000E2,5.883782525E1 +5.513760000E2,5.773432280E1 +5.516350000E2,5.966648889E1 +5.518940000E2,5.472606108E1 +5.521930000E2,5.682429497E1 +5.524670000E2,5.619181968E1 +5.527770000E2,5.997719307E1 +5.530460000E2,5.879335465E1 +5.533410000E2,5.983416170E1 +5.537120000E2,5.957041909E1 +5.539420000E2,5.952828793E1 +5.542510000E2,5.971645274E1 +5.545000000E2,6.419337448E1 +5.547730000E2,6.634363344E1 +5.550770000E2,6.285856457E1 +5.553760000E2,5.654671197E1 +5.556440000E2,5.530754918E1 +5.558640000E2,5.889159880E1 +5.561110000E2,6.213947417E1 +5.563520000E2,6.860243311E1 +5.566480000E2,6.647018679E1 +5.569110000E2,6.420604516E1 +5.571650000E2,6.703462967E1 +5.574140000E2,6.648783593E1 +5.576540000E2,6.634001782E1 +5.579350000E2,6.293734135E1 +5.581770000E2,6.205918741E1 +5.584760000E2,5.247262167E1 +5.587220000E2,5.338734169E1 +5.589670000E2,5.662276325E1 +5.592110000E2,5.533465633E1 +5.595080000E2,5.854271946E1 +5.597740000E2,5.660649413E1 +5.600260000E2,6.333844075E1 +5.602860000E2,6.255943536E1 +5.605830000E2,5.392304486E1 +5.608700000E2,5.760897506E1 +5.611660000E2,5.713086887E1 +5.614070000E2,5.720157535E1 +5.617060000E2,5.026592539E1 +5.619510000E2,5.140995344E1 +5.621950000E2,5.663266073E1 +5.624370000E2,5.202695689E1 +5.627360000E2,6.084568668E1 +5.630550000E2,6.179643015E1 +5.632960000E2,5.833759539E1 +5.635420000E2,5.518782498E1 +5.638400000E2,6.578433315E1 +5.640880000E2,5.706187099E1 +5.643850000E2,5.456571992E1 +5.646300000E2,5.536479424E1 +5.649270000E2,5.930541070E1 +5.651540000E2,6.023199994E1 +5.653960000E2,5.612469871E1 +5.656980000E2,5.462007842E1 +5.659410000E2,5.278259804E1 +5.662890000E2,6.064478329E1 +5.666290000E2,5.682964802E1 +5.669030000E2,5.787828261E1 +5.671980000E2,5.712595091E1 +5.674890000E2,5.729764361E1 +5.677450000E2,5.241850056E1 +5.679980000E2,5.377155525E1 +5.682380000E2,5.485418547E1 +5.684830000E2,5.503746434E1 +5.687810000E2,5.398954643E1 +5.690230000E2,5.401913169E1 +5.693270000E2,5.953896215E1 +5.695680000E2,5.626247467E1 +5.698640000E2,6.040491706E1 +5.701050000E2,5.781813181E1 +5.703620000E2,5.733744349E1 +5.706600000E2,5.669032177E1 +5.709140000E2,5.453731954E1 +5.711580000E2,6.235364316E1 +5.714280000E2,5.958044055E1 +5.716860000E2,5.875696014E1 +5.719750000E2,5.570465139E1 +5.722310000E2,4.865236791E1 +5.725580000E2,5.257975627E1 +5.727900000E2,4.975389893E1 +5.730890000E2,5.658508958E1 +5.733660000E2,5.542284648E1 +5.735960000E2,5.536199936E1 +5.738990000E2,5.813474916E1 +5.741540000E2,5.417788207E1 +5.744370000E2,5.704170918E1 +5.746710000E2,5.736828455E1 +5.749280000E2,5.450874678E1 +5.751790000E2,5.610950442E1 +5.754890000E2,5.919887582E1 +5.758690000E2,5.780639378E1 +5.761700000E2,5.709220641E1 +5.764190000E2,5.815359781E1 +5.767060000E2,5.734155824E1 +5.769500000E2,5.925323086E1 +5.772430000E2,6.084767221E1 +5.775370000E2,5.852024889E1 +5.777780000E2,5.822649765E1 +5.780770000E2,5.829089322E1 +5.783770000E2,5.915481192E1 +5.786460000E2,5.996430642E1 +5.789780000E2,6.016421415E1 +5.792520000E2,6.221052482E1 +5.795090000E2,5.533993101E1 +5.798230000E2,6.537257407E1 +5.801220000E2,6.068836920E1 +5.803770000E2,5.728273812E1 +5.806510000E2,5.648369901E1 +5.809070000E2,5.397363349E1 +5.811690000E2,5.755294689E1 +5.814510000E2,5.957149991E1 +5.816900000E2,5.963092636E1 +5.820650000E2,6.778811076E1 +5.823240000E2,6.247529404E1 +5.825840000E2,6.073516327E1 +5.828380000E2,6.039356998E1 +5.830970000E2,5.764504824E1 +5.833990000E2,6.041396176E1 +5.836470000E2,6.355942860E1 +5.838990000E2,5.785560268E1 +5.841390000E2,6.060017525E1 +5.844440000E2,6.032069521E1 +5.847010000E2,5.760371100E1 +5.849440000E2,5.491620812E1 +5.851990000E2,5.957978671E1 +5.855370000E2,6.103184032E1 +5.857970000E2,5.896875350E1 +5.861120000E2,6.008190546E1 +5.863990000E2,5.687378544E1 +5.866450000E2,5.874294643E1 +5.869410000E2,5.870806017E1 +5.871860000E2,5.809143232E1 +5.874740000E2,5.847828699E1 +5.877850000E2,5.846232778E1 +5.880500000E2,5.755876921E1 +5.883650000E2,5.609032758E1 +5.887050000E2,5.685283394E1 +5.889730000E2,5.945975832E1 +5.892710000E2,6.114741701E1 +5.895110000E2,6.316132147E1 +5.898100000E2,6.715155367E1 +5.900480000E2,6.367866992E1 +5.903470000E2,5.131949120E1 +5.905900000E2,5.646494575E1 +5.908880000E2,6.096218752E1 +5.911270000E2,6.089171796E1 +5.913720000E2,6.319522071E1 +5.916410000E2,6.016553529E1 +5.920560000E2,5.915189166E1 +5.923330000E2,5.776862186E1 +5.925640000E2,5.840366445E1 +5.927890000E2,5.978914182E1 +5.930440000E2,6.058699711E1 +5.932650000E2,6.012895387E1 +5.935140000E2,6.295025578E1 +5.937520000E2,6.280196012E1 +5.940110000E2,6.194014009E1 +5.943340000E2,6.483906300E1 +5.945870000E2,5.918257578E1 +5.948380000E2,5.620333930E1 +5.951900000E2,6.323403421E1 +5.954240000E2,6.183177681E1 +5.956620000E2,6.120300936E1 +5.959650000E2,5.836925111E1 +5.961890000E2,6.106023171E1 +5.964920000E2,6.153658324E1 +5.967310000E2,6.490772593E1 +5.969960000E2,6.274228676E1 +5.972520000E2,6.139008510E1 +5.975050000E2,6.281232833E1 +5.978180000E2,6.254982632E1 +5.980890000E2,6.205794184E1 +5.983900000E2,6.438771503E1 +5.986230000E2,6.052772463E1 +5.988520000E2,6.375966703E1 +5.991380000E2,5.869985301E1 +5.993860000E2,6.050357712E1 +5.996630000E2,5.547835745E1 +5.999280000E2,5.400421666E1 +6.001960000E2,5.668252186E1 +6.004880000E2,6.001970320E1 +6.007680000E2,6.056987745E1 +6.010550000E2,6.461211967E1 +6.014090000E2,6.399838195E1 +6.016840000E2,5.485596323E1 +6.019450000E2,5.731519087E1 +6.022080000E2,6.691878914E1 +6.024720000E2,6.479201876E1 +6.027260000E2,6.412847214E1 +6.029760000E2,6.025795068E1 +6.032190000E2,6.098133491E1 +6.035120000E2,5.689387521E1 +6.038040000E2,5.639928101E1 +6.041550000E2,5.328068252E1 +6.044370000E2,5.639829798E1 +6.046770000E2,5.892330560E1 +6.049510000E2,5.315638413E1 +6.051900000E2,5.740260439E1 +6.054620000E2,5.339391440E1 +6.057500000E2,5.310371918E1 +6.060710000E2,5.460903952E1 +6.063050000E2,5.407304270E1 +6.065540000E2,5.870790541E1 +6.068060000E2,5.576782972E1 +6.070790000E2,5.976954147E1 +6.074640000E2,6.181180531E1 +6.077240000E2,6.194364733E1 +6.080150000E2,6.794225297E1 +6.082590000E2,6.236601361E1 +6.085470000E2,6.002700779E1 +6.088450000E2,5.971993236E1 +6.090930000E2,5.954735434E1 +6.093460000E2,5.907202371E1 +6.095920000E2,5.993658420E1 +6.098910000E2,5.530332259E1 +6.101850000E2,5.531802018E1 +6.104220000E2,5.376885939E1 +6.107780000E2,5.735355871E1 +6.110210000E2,5.868610156E1 +6.112710000E2,5.312122754E1 +6.115670000E2,5.745102631E1 +6.118550000E2,5.535536940E1 +6.121540000E2,5.088728731E1 +6.123960000E2,5.266907791E1 +6.126860000E2,5.386493253E1 +6.130010000E2,5.670623073E1 +6.132810000E2,5.563278655E1 +6.135150000E2,5.267172926E1 +6.138540000E2,5.386148816E1 +6.141880000E2,5.716468210E1 +6.144880000E2,5.526918781E1 +6.147190000E2,5.659553915E1 +6.149610000E2,5.648341007E1 +6.152730000E2,5.711745846E1 +6.155520000E2,5.918800114E1 +6.158010000E2,5.642548609E1 +6.161000000E2,5.635896926E1 +6.163480000E2,5.899225051E1 +6.166180000E2,5.374343244E1 +6.168690000E2,4.891042404E1 +6.172050000E2,5.065835680E1 +6.174560000E2,5.685264653E1 +6.177340000E2,5.429270039E1 +6.179930000E2,5.499548313E1 +6.182940000E2,5.407177565E1 +6.185300000E2,5.356533799E1 +6.188300000E2,5.378190643E1 +6.191140000E2,5.189020817E1 +6.193870000E2,5.046647494E1 +6.196450000E2,5.501107364E1 +6.198910000E2,5.798814538E1 +6.201660000E2,5.360844474E1 +6.205080000E2,5.353935610E1 +6.208080000E2,5.620189936E1 +6.210820000E2,6.216008765E1 +6.213360000E2,5.767015155E1 +6.216520000E2,6.210101060E1 +6.219320000E2,5.928042926E1 +6.221800000E2,6.394496555E1 +6.224980000E2,5.872213561E1 +6.227430000E2,5.927091626E1 +6.230010000E2,5.235592166E1 +6.232430000E2,6.313120608E1 +6.235470000E2,6.005436888E1 +6.238480000E2,5.999836557E1 +6.240930000E2,5.879748041E1 +6.243920000E2,5.978277378E1 +6.246440000E2,6.050724590E1 +6.249480000E2,6.282777276E1 +6.252520000E2,6.080897043E1 +6.255640000E2,5.889462949E1 +6.258270000E2,5.550476615E1 +6.260730000E2,5.586785505E1 +6.263620000E2,6.576560120E1 +6.266590000E2,6.102361259E1 +6.270050000E2,6.110507706E1 +6.272870000E2,5.753592100E1 +6.275410000E2,6.297666729E1 +6.278490000E2,6.037594793E1 +6.281160000E2,5.849898506E1 +6.284180000E2,6.165631601E1 +6.287090000E2,6.096774109E1 +6.289510000E2,6.176590968E1 +6.292460000E2,5.947061017E1 +6.294820000E2,6.109202024E1 +6.297790000E2,5.322559935E1 +6.301160000E2,4.971181861E1 +6.303880000E2,5.533921521E1 +6.307250000E2,5.478410742E1 +6.310240000E2,5.647795083E1 +6.313200000E2,5.797504265E1 +6.315690000E2,5.403019222E1 +6.318640000E2,5.301910781E1 +6.321010000E2,5.096544207E1 +6.324030000E2,5.324435941E1 +6.326360000E2,5.447050361E1 +6.328960000E2,5.932781903E1 +6.331500000E2,5.967228428E1 +6.334640000E2,6.319489971E1 +6.337810000E2,5.820271574E1 +6.340710000E2,5.910289699E1 +6.343170000E2,5.681937370E1 +6.346260000E2,5.582227275E1 +6.349350000E2,5.745831651E1 +6.352100000E2,5.504019385E1 +6.354620000E2,5.072303887E1 +6.357190000E2,5.366082959E1 +6.359690000E2,5.380227314E1 +6.362560000E2,4.818205454E1 +6.365090000E2,5.989908626E1 +6.368780000E2,5.659012846E1 +6.371610000E2,5.593157997E1 +6.374460000E2,5.135237935E1 +6.377000000E2,5.687788515E1 +6.379550000E2,5.943975502E1 +6.382630000E2,6.290957992E1 +6.385230000E2,5.827099811E1 +6.387780000E2,5.686391746E1 +6.390620000E2,5.771790911E1 +6.393200000E2,5.390066131E1 +6.395830000E2,5.358231960E1 +6.398480000E2,5.564565007E1 +6.401490000E2,5.205482155E1 +6.404200000E2,5.852280051E1 +6.407340000E2,4.836326193E1 +6.409980000E2,5.905115701E1 +6.412560000E2,5.622349390E1 +6.415040000E2,5.891737338E1 +6.417460000E2,5.749377856E1 +6.420310000E2,5.414095183E1 +6.422680000E2,5.482109112E1 +6.425170000E2,5.202942051E1 +6.428000000E2,4.903409276E1 +6.431250000E2,5.495098254E1 +6.434650000E2,5.777911761E1 +6.437680000E2,5.329076638E1 +6.440080000E2,5.886592322E1 +6.443070000E2,5.661637111E1 +6.445560000E2,5.459133399E1 +6.448230000E2,4.858613706E1 +6.450990000E2,5.642020356E1 +6.453590000E2,5.634614530E1 +6.456240000E2,5.769024626E1 +6.458900000E2,6.037646239E1 +6.461470000E2,5.712013563E1 +6.464260000E2,5.393237723E1 +6.467570000E2,5.443825449E1 +6.469850000E2,5.464133184E1 +6.472460000E2,5.185343249E1 +6.475170000E2,5.670688718E1 +6.477900000E2,5.808659132E1 +6.480150000E2,5.879711687E1 +6.483250000E2,5.860991669E1 +6.485730000E2,5.600484597E1 +6.488230000E2,5.291438286E1 +6.491020000E2,5.869236753E1 +6.493260000E2,5.826316690E1 +6.496250000E2,5.619306699E1 +6.499850000E2,6.085970714E1 +6.502400000E2,6.051231588E1 +6.505400000E2,6.096601072E1 +6.507990000E2,6.197068990E1 +6.511180000E2,6.520817743E1 +6.513810000E2,6.377577246E1 +6.516860000E2,6.105485617E1 +6.519940000E2,5.890751001E1 +6.522910000E2,5.911253604E1 +6.525370000E2,6.291937986E1 +6.528540000E2,6.252638881E1 +6.532210000E2,6.337356348E1 +6.535270000E2,5.894334263E1 +6.537830000E2,5.754939005E1 +6.540930000E2,5.500698560E1 +6.543880000E2,5.014350898E1 +6.546880000E2,5.646260920E1 +6.549870000E2,5.951282585E1 +6.552920000E2,6.099782791E1 +6.555480000E2,6.065538365E1 +6.558100000E2,6.827371953E1 +6.560790000E2,6.035931154E1 +6.563820000E2,6.267306134E1 +6.566350000E2,5.826452213E1 +6.568970000E2,6.092938143E1 +6.572010000E2,6.534130041E1 +6.575130000E2,6.111837506E1 +6.577770000E2,5.826481723E1 +6.580330000E2,5.918147323E1 +6.582980000E2,6.100230752E1 +6.585510000E2,6.302217459E1 +6.588060000E2,5.754956715E1 +6.591080000E2,6.111201710E1 +6.593520000E2,6.017410469E1 +6.597040000E2,6.031944923E1 +6.599450000E2,5.943575512E1 +6.602120000E2,5.868776340E1 +6.605570000E2,5.940543513E1 +6.608500000E2,5.886327816E1 +6.610920000E2,5.770522648E1 +6.613840000E2,5.442777508E1 +6.616200000E2,5.394232060E1 +6.619220000E2,5.856638842E1 +6.622160000E2,5.742664400E1 +6.624600000E2,5.472498345E1 +6.627560000E2,5.672985390E1 +6.629770000E2,5.834702318E1 +6.632250000E2,5.907602823E1 +6.634810000E2,5.873031221E1 +6.637670000E2,5.757130737E1 +6.640040000E2,5.572185824E1 +6.643070000E2,5.959142979E1 +6.645480000E2,5.851623707E1 +6.648520000E2,5.856887935E1 +6.650940000E2,6.397218192E1 +6.653890000E2,5.963692586E1 +6.656210000E2,5.934207027E1 +6.659580000E2,5.667856430E1 +6.662640000E2,5.811017468E1 +6.665550000E2,5.505265787E1 +6.667990000E2,5.558350894E1 +6.671320000E2,6.063017800E1 +6.674000000E2,5.568411381E1 +6.676510000E2,5.981422062E1 +6.679580000E2,5.723024768E1 +6.682820000E2,5.036028104E1 +6.685240000E2,5.199205823E1 +6.687970000E2,5.367328475E1 +6.691280000E2,5.936914884E1 +6.693940000E2,5.657797691E1 +6.696490000E2,6.065879377E1 +6.699270000E2,5.657054255E1 +6.702000000E2,5.655716576E1 +6.704770000E2,5.823562265E1 +6.707350000E2,6.065030224E1 +6.710140000E2,6.110776530E1 +6.712700000E2,5.714357796E1 +6.715170000E2,5.604236164E1 +6.717930000E2,6.041748871E1 +6.721240000E2,6.019765334E1 +6.724270000E2,5.928602786E1 +6.727750000E2,5.973060669E1 +6.730710000E2,6.059869751E1 +6.733250000E2,6.116850166E1 +6.736400000E2,6.145214709E1 +6.738890000E2,6.020118097E1 +6.741670000E2,6.048579637E1 +6.744720000E2,6.225337088E1 +6.747550000E2,5.853636068E1 +6.750030000E2,5.999204871E1 +6.752840000E2,5.433989895E1 +6.755100000E2,5.847308735E1 +6.758420000E2,5.913726954E1 +6.760830000E2,6.049449503E1 +6.763830000E2,5.545572399E1 +6.766370000E2,6.246077536E1 +6.768920000E2,6.029598130E1 +6.771340000E2,6.005864514E1 +6.774230000E2,6.582269585E1 +6.776700000E2,6.255104294E1 +6.779140000E2,6.623711836E1 +6.781740000E2,6.684819787E1 +6.784850000E2,6.877250850E1 +6.787420000E2,6.157084767E1 +6.789860000E2,6.054068573E1 +6.793290000E2,6.069583213E1 +6.795810000E2,6.124898856E1 +6.798240000E2,6.136691849E1 +6.800900000E2,6.035594762E1 +6.803920000E2,5.654106541E1 +6.806920000E2,5.587565134E1 +6.809940000E2,5.642134155E1 +6.813020000E2,5.749983358E1 +6.815830000E2,5.576151961E1 +6.818120000E2,5.714589311E1 +6.820580000E2,5.969510914E1 +6.823020000E2,5.824123453E1 +6.825680000E2,5.779273115E1 +6.828630000E2,5.699644891E1 +6.831010000E2,5.900876644E1 +6.833500000E2,6.335540424E1 +6.835940000E2,6.280432027E1 +6.838340000E2,6.194675910E1 +6.841290000E2,5.801082069E1 +6.843650000E2,5.652506879E1 +6.846570000E2,5.895404856E1 +6.848910000E2,5.873705448E1 +6.851950000E2,5.589704153E1 +6.855380000E2,5.379672362E1 +6.857910000E2,6.287056471E1 +6.860900000E2,6.081817617E1 +6.863340000E2,6.807593043E1 +6.866320000E2,5.604389930E1 +6.868800000E2,6.712075434E1 +6.871750000E2,6.290238552E1 +6.874740000E2,6.473105179E1 +6.877330000E2,5.873835234E1 +6.880180000E2,5.800563858E1 +6.882620000E2,5.540095032E1 +6.885810000E2,6.197881428E1 +6.888280000E2,5.541258482E1 +6.890890000E2,5.558277465E1 +6.894010000E2,4.965923685E1 +6.897080000E2,4.860020107E1 +6.899730000E2,5.608167548E1 +6.902300000E2,5.381305593E1 +6.904990000E2,6.079286270E1 +6.908000000E2,6.446965644E1 +6.910380000E2,6.556266140E1 +6.913400000E2,5.418444209E1 +6.916350000E2,5.205102491E1 +6.919820000E2,5.812981404E1 +6.922410000E2,6.500705260E1 +6.925070000E2,6.149947285E1 +6.927750000E2,5.695315316E1 +6.930870000E2,5.775854948E1 +6.933870000E2,6.523399833E1 +6.936300000E2,6.692630865E1 +6.939270000E2,5.793447825E1 +6.942230000E2,5.746396110E1 +6.944770000E2,6.017975210E1 +6.947150000E2,5.956759439E1 +6.950320000E2,6.391288151E1 +6.953110000E2,6.484415086E1 +6.955650000E2,6.664209540E1 +6.958410000E2,6.746668632E1 +6.961050000E2,5.775664920E1 +6.964050000E2,6.383035698E1 +6.967020000E2,5.816763892E1 +6.969600000E2,6.921190909E1 +6.972400000E2,6.165047809E1 +6.975080000E2,5.666810057E1 +6.977540000E2,6.417546300E1 +6.980020000E2,5.788971486E1 +6.982730000E2,5.486922606E1 +6.985850000E2,5.576434723E1 +6.988820000E2,5.548978795E1 +6.991460000E2,5.886820316E1 +6.993970000E2,6.226406326E1 +6.996480000E2,5.601534080E1 +6.999400000E2,5.901385758E1 +7.002040000E2,5.720709772E1 +7.005120000E2,6.318399213E1 +7.007580000E2,6.338981741E1 +7.010170000E2,6.747312486E1 +7.012670000E2,5.788999692E1 +7.015450000E2,4.434465006E1 +7.018710000E2,6.439013955E1 +7.021480000E2,5.375342664E1 +7.023700000E2,6.398282027E1 +7.026160000E2,5.857909138E1 +7.029130000E2,5.670439641E1 +7.031590000E2,5.749786365E1 +7.034320000E2,5.181710985E1 +7.036770000E2,5.871535868E1 +7.039520000E2,5.470297527E1 +7.042240000E2,5.771822323E1 +7.044750000E2,5.236261523E1 +7.047130000E2,5.595332709E1 +7.050480000E2,5.576748295E1 +7.053040000E2,5.334869600E1 +7.055590000E2,5.337806625E1 +7.058180000E2,5.499892680E1 +7.060900000E2,5.490963435E1 +7.063980000E2,5.551078540E1 +7.066680000E2,5.358868238E1 +7.069300000E2,5.203182642E1 +7.071760000E2,5.771053387E1 +7.074630000E2,5.175835182E1 +7.077440000E2,5.402526598E1 +7.080400000E2,5.754717994E1 +7.083470000E2,6.103880587E1 +7.086400000E2,6.284824916E1 +7.088840000E2,6.674666322E1 +7.092010000E2,6.194114278E1 +7.094980000E2,5.796289911E1 +7.097580000E2,5.475547679E1 +7.100170000E2,5.804024708E1 +7.102650000E2,5.606423134E1 +7.105550000E2,5.319247933E1 +7.107930000E2,5.625991375E1 +7.110940000E2,5.589539698E1 +7.114730000E2,6.073460415E1 +7.117930000E2,6.208342045E1 +7.120530000E2,6.335117127E1 +7.123290000E2,5.821275565E1 +7.126280000E2,5.793160357E1 +7.128780000E2,5.509944006E1 +7.131790000E2,5.578357696E1 +7.134760000E2,5.632534225E1 +7.137350000E2,5.466315647E1 +7.140450000E2,5.914530785E1 +7.143020000E2,6.280432125E1 +7.146020000E2,6.333348539E1 +7.149790000E2,5.698482465E1 +7.152920000E2,5.474810308E1 +7.155370000E2,5.417920207E1 +7.157880000E2,6.392184792E1 +7.160720000E2,6.565549591E1 +7.163130000E2,6.082705714E1 +7.166120000E2,5.816285927E1 +7.168430000E2,5.809201859E1 +7.170930000E2,6.016105207E1 +7.173350000E2,5.162287691E1 +7.176230000E2,5.754317879E1 +7.179310000E2,6.166304542E1 +7.181770000E2,6.177004553E1 +7.184320000E2,6.274574776E1 +7.186900000E2,6.104994734E1 +7.189920000E2,5.735301480E1 +7.192340000E2,5.830205645E1 +7.194890000E2,6.212782217E1 +7.197420000E2,5.467685243E1 +7.200420000E2,5.313970583E1 +7.202920000E2,5.278680647E1 +7.205360000E2,5.474141102E1 +7.209140000E2,6.241771654E1 +7.212600000E2,6.394594172E1 +7.215560000E2,6.348358734E1 +7.217980000E2,6.112734048E1 +7.220450000E2,6.226451183E1 +7.222930000E2,6.534082516E1 +7.225960000E2,6.114019283E1 +7.228390000E2,6.421228964E1 +7.231230000E2,6.814847387E1 +7.233690000E2,6.275446304E1 +7.236190000E2,6.679153921E1 +7.239280000E2,6.537583699E1 +7.241850000E2,6.212976374E1 +7.245300000E2,6.553556935E1 +7.248220000E2,5.834030427E1 +7.250930000E2,5.992153646E1 +7.253380000E2,5.595099295E1 +7.256370000E2,5.720822528E1 +7.258800000E2,5.423516872E1 +7.261770000E2,5.906139652E1 +7.264140000E2,6.204477132E1 +7.267140000E2,6.368823365E1 +7.269550000E2,6.513672214E1 +7.272500000E2,6.364997971E1 +7.275370000E2,6.269941998E1 +7.278570000E2,5.948773609E1 +7.281020000E2,5.789544973E1 +7.283740000E2,6.305528689E1 +7.286400000E2,6.245554089E1 +7.289690000E2,6.033221518E1 +7.292310000E2,5.940071821E1 +7.294970000E2,6.176178101E1 +7.298020000E2,5.355172623E1 +7.300580000E2,5.535292187E1 +7.303150000E2,5.274398781E1 +7.305750000E2,5.399957194E1 +7.308780000E2,5.819691646E1 +7.312070000E2,5.434897588E1 +7.315090000E2,6.041787911E1 +7.317850000E2,5.617860881E1 +7.320560000E2,5.558770875E1 +7.323290000E2,5.151264449E1 +7.325860000E2,5.612143969E1 +7.328800000E2,5.405001557E1 +7.331120000E2,5.455354216E1 +7.334090000E2,5.716252136E1 +7.337070000E2,6.416157102E1 +7.339910000E2,6.098010142E1 +7.343020000E2,6.194029449E1 +7.346500000E2,6.091313037E1 +7.349540000E2,5.846954669E1 +7.352410000E2,5.743489407E1 +7.355320000E2,5.872669957E1 +7.357800000E2,5.859080967E1 +7.360560000E2,6.053269456E1 +7.363220000E2,6.117884455E1 +7.366590000E2,5.809887850E1 +7.369420000E2,5.453224539E1 +7.372510000E2,5.639337460E1 +7.375040000E2,5.373613181E1 +7.378630000E2,5.066236714E1 +7.381160000E2,4.653740377E1 +7.383650000E2,6.375011526E1 +7.386730000E2,6.282181577E1 +7.389830000E2,6.727660972E1 +7.392340000E2,6.413328322E1 +7.394790000E2,6.184881400E1 +7.397290000E2,6.430634497E1 +7.400250000E2,6.276256291E1 +7.402610000E2,6.297441350E1 +7.405590000E2,5.306586823E1 +7.408610000E2,5.403016569E1 +7.412260000E2,5.749263443E1 +7.415060000E2,5.657932114E1 +7.417820000E2,5.532222303E1 +7.420430000E2,5.911133378E1 +7.423450000E2,5.822379827E1 +7.426470000E2,6.311870884E1 +7.428860000E2,5.964121243E1 +7.431940000E2,5.708688763E1 +7.434960000E2,5.782189241E1 +7.437480000E2,5.745118469E1 +7.440380000E2,5.258772989E1 +7.442830000E2,5.325984780E1 +7.445410000E2,5.216709684E1 +7.447900000E2,5.485283680E1 +7.450520000E2,6.638751453E1 +7.453640000E2,6.256149725E1 +7.456370000E2,6.851667797E1 +7.459020000E2,6.356784575E1 +7.462040000E2,6.586178842E1 +7.464510000E2,6.099626883E1 +7.467420000E2,6.874341983E1 +7.470300000E2,5.690479739E1 +7.472670000E2,5.749513215E1 +7.475860000E2,5.743840209E1 +7.478480000E2,6.695338823E1 +7.481550000E2,6.575566103E1 +7.484170000E2,6.244751264E1 +7.486690000E2,6.206430480E1 +7.489520000E2,5.755143157E1 +7.492450000E2,6.343498072E1 +7.494820000E2,6.599354682E1 +7.497800000E2,5.994269627E1 +7.500210000E2,6.480563885E1 +7.503160000E2,5.962320355E1 +7.505550000E2,5.907805627E1 +7.508860000E2,5.452673237E1 +7.511450000E2,5.413358853E1 +7.514110000E2,5.786691992E1 +7.516870000E2,6.185088179E1 +7.519570000E2,5.432685780E1 +7.522050000E2,5.297819944E1 +7.524920000E2,5.290855554E1 +7.527910000E2,5.828859659E1 +7.530300000E2,5.880189294E1 +7.533360000E2,5.500578631E1 +7.535910000E2,5.476677878E1 +7.538330000E2,5.414240587E1 +7.541650000E2,5.332866170E1 +7.544620000E2,5.193802785E1 +7.547080000E2,5.242932681E1 +7.549590000E2,6.024921863E1 +7.552020000E2,5.537701523E1 +7.554960000E2,5.489617845E1 +7.557330000E2,5.384280286E1 +7.560410000E2,5.406125999E1 +7.562870000E2,5.246560959E1 +7.565320000E2,5.374729291E1 +7.567680000E2,5.542801483E1 +7.570630000E2,5.525770987E1 +7.573930000E2,5.847670432E1 +7.576660000E2,5.822188632E1 +7.579180000E2,5.822901451E1 +7.582040000E2,5.458975346E1 +7.584820000E2,5.438683247E1 +7.587800000E2,5.260449368E1 +7.590260000E2,5.371245859E1 +7.592870000E2,4.983203663E1 +7.595420000E2,5.018089077E1 +7.598380000E2,5.950969681E1 +7.601480000E2,5.769305363E1 +7.604800000E2,5.747567937E1 +7.607190000E2,5.446335810E1 +7.610040000E2,5.463229896E1 +7.612970000E2,5.644916160E1 +7.615560000E2,5.809520116E1 +7.618460000E2,5.406577519E1 +7.621050000E2,5.362277750E1 +7.623930000E2,5.868559294E1 +7.626230000E2,5.548744129E1 +7.628890000E2,5.613986675E1 +7.631890000E2,5.592058678E1 +7.634870000E2,5.947938191E1 +7.638120000E2,5.945990241E1 +7.640830000E2,5.354091788E1 +7.643270000E2,5.910847411E1 +7.645670000E2,6.112853730E1 +7.648120000E2,5.617469613E1 +7.650520000E2,5.678172470E1 +7.653190000E2,5.293731054E1 +7.655730000E2,5.571573154E1 +7.658430000E2,5.239475172E1 +7.660900000E2,5.710555790E1 +7.663840000E2,5.593714408E1 +7.666500000E2,5.506488062E1 +7.669100000E2,5.276148627E1 +7.671530000E2,5.087813070E1 +7.674500000E2,4.966858228E1 +7.677070000E2,4.690170064E1 +7.679870000E2,5.097718665E1 +7.682460000E2,5.173969669E1 +7.685220000E2,5.562988056E1 +7.687630000E2,5.194720020E1 +7.690630000E2,5.590118249E1 +7.693610000E2,5.613585205E1 +7.696030000E2,5.417299550E1 +7.698530000E2,5.925774948E1 +7.702010000E2,5.729895975E1 +7.704610000E2,5.765570707E1 +7.707610000E2,6.211008380E1 +7.710570000E2,5.846530012E1 +7.712970000E2,5.766544416E1 +7.715460000E2,5.716238768E1 +7.718080000E2,5.700535494E1 +7.720510000E2,5.592606747E1 +7.723260000E2,5.771214429E1 +7.725940000E2,5.753442175E1 +7.728830000E2,5.541298336E1 +7.731860000E2,5.137853822E1 +7.735420000E2,5.462649470E1 +7.738320000E2,5.454281912E1 +7.740820000E2,6.803752283E1 +7.743260000E2,6.852980541E1 +7.745820000E2,7.007631543E1 +7.748270000E2,7.009876218E1 +7.751160000E2,6.950363051E1 +7.753520000E2,6.338954984E1 +7.755910000E2,5.500200077E1 +7.758880000E2,5.358702362E1 +7.761340000E2,5.718303470E1 +7.763730000E2,5.887519420E1 +7.767050000E2,5.795457078E1 +7.769970000E2,5.796499201E1 +7.773000000E2,5.644912180E1 +7.775570000E2,5.804780214E1 +7.778740000E2,5.958528627E1 +7.781300000E2,5.635913866E1 +7.784430000E2,5.593106857E1 +7.787280000E2,6.063168213E1 +7.789960000E2,5.917208792E1 +7.792560000E2,5.719923422E1 +7.795050000E2,6.400429125E1 +7.797680000E2,5.733192807E1 +7.800440000E2,6.018331087E1 +7.803000000E2,6.350407169E1 +7.805530000E2,6.357762743E1 +7.808590000E2,6.772563953E1 +7.811430000E2,6.431848914E1 +7.814050000E2,5.710721917E1 +7.816950000E2,5.646111127E1 +7.819500000E2,5.564600214E1 +7.822050000E2,6.362802489E1 +7.824550000E2,6.278310471E1 +7.827010000E2,5.851995741E1 +7.829620000E2,5.759567059E1 +7.832630000E2,5.449669640E1 +7.835070000E2,6.040303881E1 +7.837500000E2,5.743841461E1 +7.839990000E2,6.096558185E1 +7.842840000E2,7.161293257E1 +7.845270000E2,7.417435903E1 +7.848410000E2,6.386070968E1 +7.851390000E2,6.234904760E1 +7.854350000E2,6.321731436E1 +7.856820000E2,6.294103551E1 +7.859780000E2,6.210337552E1 +7.862150000E2,6.765383904E1 +7.865650000E2,6.346682761E1 +7.868610000E2,6.221020232E1 +7.871280000E2,6.119530731E1 +7.873850000E2,5.314248269E1 +7.876880000E2,5.288680780E1 +7.879230000E2,5.064349321E1 +7.882230000E2,5.786336298E1 +7.884630000E2,5.341864841E1 +7.887250000E2,5.286568073E1 +7.890140000E2,5.272997567E1 +7.893180000E2,5.904110581E1 +7.896690000E2,5.748622391E1 +7.899200000E2,5.773986136E1 +7.902160000E2,5.480967078E1 +7.904710000E2,5.627241382E1 +7.907280000E2,5.456362797E1 +7.909900000E2,5.766408512E1 +7.912380000E2,5.413586400E1 +7.914940000E2,5.234403284E1 +7.917720000E2,5.190170354E1 +7.920440000E2,5.227759392E1 +7.923170000E2,4.410400383E1 +7.926220000E2,3.508270700E1 +7.929370000E2,3.887828085E1 +7.932030000E2,4.522069604E1 +7.934660000E2,4.928233980E1 +7.937420000E2,4.706401379E1 +7.940710000E2,4.988989997E1 +7.943700000E2,5.767827889E1 +7.946060000E2,5.506606719E1 +7.949050000E2,6.107887773E1 +7.952060000E2,5.849609892E1 +7.955030000E2,5.343173328E1 +7.957490000E2,5.007726003E1 +7.960580000E2,4.763873915E1 +7.963010000E2,5.045894898E1 +7.966040000E2,6.859700710E1 +7.968900000E2,6.734256534E1 +7.971550000E2,6.661489392E1 +7.974110000E2,6.556398865E1 +7.976580000E2,5.519705677E1 +7.979230000E2,5.503316479E1 +7.982060000E2,5.955770829E1 +7.984280000E2,5.777834711E1 +7.987260000E2,6.050467535E1 +7.989700000E2,5.583639573E1 +7.993330000E2,5.988908902E1 +7.995750000E2,5.875791040E1 +7.998670000E2,6.166637478E1 +8.001160000E2,5.690435901E1 +8.004160000E2,5.599911293E1 +8.006610000E2,5.889628547E1 +8.009180000E2,6.227540789E1 +8.011740000E2,6.572663811E1 +8.014300000E2,6.013467784E1 +8.016770000E2,6.250368579E1 +8.019910000E2,6.532292099E1 +8.023560000E2,5.377170031E1 +8.026370000E2,5.535595108E1 +8.029110000E2,5.147526495E1 +8.031720000E2,4.993046061E1 +8.034760000E2,6.394035794E1 +8.037260000E2,5.983119170E1 +8.040270000E2,5.967243802E1 +8.042930000E2,6.559340840E1 +8.046100000E2,5.262215496E1 +8.049160000E2,5.397812040E1 +8.051780000E2,5.680330381E1 +8.054740000E2,5.857171626E1 +8.058060000E2,5.577198454E1 +8.060880000E2,5.916891157E1 +8.063460000E2,6.120078548E1 +8.066060000E2,6.223167379E1 +8.069230000E2,6.161077093E1 +8.071720000E2,5.812180846E1 +8.074300000E2,5.665535607E1 +8.077230000E2,5.401482687E1 +8.079600000E2,5.631804256E1 +8.082610000E2,5.267806276E1 +8.085540000E2,5.766120113E1 +8.088100000E2,5.717509884E1 +8.091690000E2,5.698714543E1 +8.094130000E2,5.807918354E1 +8.096940000E2,5.364566959E1 +8.099320000E2,5.678502402E1 +8.102110000E2,5.494444844E1 +8.104710000E2,6.216218230E1 +8.107550000E2,5.504588420E1 +8.110030000E2,5.220186059E1 +8.112810000E2,5.338487037E1 +8.115430000E2,5.422122114E1 +8.118180000E2,6.217546099E1 +8.121430000E2,5.739027439E1 +8.124800000E2,5.218554734E1 +8.128080000E2,6.183667492E1 +8.130850000E2,6.028246668E1 +8.133620000E2,6.620979851E1 +8.135950000E2,5.810667246E1 +8.138630000E2,6.096670869E1 +8.141300000E2,5.149777407E1 +8.143960000E2,4.993954713E1 +8.146400000E2,5.196561010E1 +8.149350000E2,5.727966309E1 +8.151710000E2,5.489316784E1 +8.154100000E2,5.619291420E1 +8.157500000E2,5.425831711E1 +8.160430000E2,5.677079709E1 +8.163250000E2,5.289383275E1 +8.165600000E2,5.573749616E1 +8.168090000E2,5.211960412E1 +8.170840000E2,5.029895102E1 +8.173170000E2,5.085418245E1 +8.175630000E2,5.101392152E1 +8.178870000E2,5.228690479E1 +8.182130000E2,5.919931006E1 +8.184680000E2,5.288617356E1 +8.188320000E2,5.626269479E1 +8.191030000E2,6.124827198E1 +8.193870000E2,5.889071517E1 +8.196160000E2,5.957980623E1 +8.199180000E2,5.440069788E1 +8.201590000E2,5.524226830E1 +8.204560000E2,5.147688867E1 +8.206870000E2,5.390780082E1 +8.209820000E2,6.509870984E1 +8.212270000E2,6.421388309E1 +8.215230000E2,5.843840462E1 +8.218170000E2,5.422512027E1 +8.221280000E2,5.468614274E1 +8.223780000E2,5.922850585E1 +8.226710000E2,6.486031186E1 +8.229330000E2,6.154967201E1 +8.232420000E2,5.893257410E1 +8.235100000E2,6.020329639E1 +8.238290000E2,5.483779552E1 +8.240760000E2,5.692914998E1 +8.243280000E2,6.347347085E1 +8.245930000E2,5.345306004E1 +8.248670000E2,6.141647052E1 +8.252000000E2,5.672783001E1 +8.254550000E2,5.605661334E1 +8.257610000E2,5.699330885E1 +8.260410000E2,5.489256860E1 +8.263010000E2,6.262090025E1 +8.265830000E2,5.457719262E1 +8.268180000E2,5.416382407E1 +8.271260000E2,4.993919751E1 +8.273700000E2,5.569569056E1 +8.276330000E2,5.514364162E1 +8.278890000E2,5.653204472E1 +8.281470000E2,5.784406489E1 +8.284370000E2,5.752811490E1 +8.286720000E2,5.727510089E1 +8.289650000E2,5.900575965E1 +8.292510000E2,5.679022390E1 +8.294860000E2,5.722234118E1 +8.297350000E2,5.952638514E1 +8.300320000E2,5.925181191E1 +8.302740000E2,5.930148258E1 +8.305160000E2,5.668145507E1 +8.307730000E2,5.590492759E1 +8.310130000E2,6.302930486E1 +8.312510000E2,5.733539345E1 +8.315800000E2,5.620349253E1 +8.318910000E2,5.495250031E1 +8.322000000E2,5.501979251E1 +8.324620000E2,5.208226415E1 +8.327390000E2,5.765748383E1 +8.329950000E2,5.489193423E1 +8.332490000E2,5.593428331E1 +8.335720000E2,5.714652117E1 +8.338250000E2,5.832769426E1 +8.341370000E2,5.884156077E1 +8.344030000E2,5.840498509E1 +8.347020000E2,5.864505811E1 +8.350330000E2,6.356982434E1 +8.353340000E2,6.286445683E1 +8.355720000E2,5.657384439E1 +8.358940000E2,5.660970318E1 +8.361720000E2,5.918731584E1 +8.364160000E2,5.825788220E1 +8.366580000E2,5.592754487E1 +8.369110000E2,5.553717092E1 +8.371910000E2,5.495027293E1 +8.374510000E2,5.546329287E1 +8.377420000E2,5.746402701E1 +8.379890000E2,5.891922359E1 +8.383130000E2,6.522858798E1 +8.385710000E2,6.384617776E1 +8.388430000E2,5.435088619E1 +8.390670000E2,5.460135210E1 +8.393610000E2,5.982769627E1 +8.396020000E2,5.936265195E1 +8.398550000E2,6.034701146E1 +8.401470000E2,6.875861473E1 +8.403840000E2,6.968788985E1 +8.406760000E2,6.653493651E1 +8.409120000E2,6.664139767E1 +8.412200000E2,6.195236791E1 +8.415280000E2,5.759269564E1 +8.418110000E2,5.704906263E1 +8.420770000E2,5.199124728E1 +8.423350000E2,5.625309672E1 +8.426060000E2,5.627754144E1 +8.428710000E2,6.285304788E1 +8.431220000E2,6.089762622E1 +8.434160000E2,5.828079525E1 +8.436650000E2,5.581703965E1 +8.439650000E2,5.326092983E1 +8.442070000E2,5.247397640E1 +8.444500000E2,5.104216729E1 +8.447560000E2,4.981466747E1 +8.450730000E2,5.794387296E1 +8.453210000E2,6.103400827E1 +8.455680000E2,6.053778141E1 +8.458610000E2,5.413066164E1 +8.461240000E2,5.591468697E1 +8.463740000E2,5.289659812E1 +8.466770000E2,6.014390988E1 +8.469740000E2,5.713983843E1 +8.472340000E2,5.457406708E1 +8.474800000E2,5.848999564E1 +8.478210000E2,5.310404619E1 +8.481040000E2,5.463633704E1 +8.483620000E2,5.329096892E1 +8.486670000E2,5.667645304E1 +8.489890000E2,5.540515985E1 +8.492420000E2,5.014593999E1 +8.495060000E2,5.019949668E1 +8.497660000E2,4.724526190E1 +8.500410000E2,4.632701850E1 +8.502660000E2,4.436725745E1 +8.505710000E2,5.273585220E1 +8.508470000E2,5.232501704E1 +8.511370000E2,5.177389205E1 +8.513940000E2,5.236772038E1 +8.516560000E2,4.869019062E1 +8.518980000E2,5.254056589E1 +8.521620000E2,5.441215371E1 +8.524060000E2,5.431954181E1 +8.526720000E2,4.873515026E1 +8.529820000E2,5.253291311E1 +8.532350000E2,5.201920339E1 +8.535330000E2,5.083296820E1 +8.537750000E2,5.373650683E1 +8.540560000E2,6.162621210E1 +8.543710000E2,6.137876928E1 +8.546190000E2,6.347980201E1 +8.548850000E2,6.480134627E1 +8.551390000E2,6.344943059E1 +8.553830000E2,6.653758852E1 +8.556910000E2,6.821811094E1 +8.559900000E2,6.564040109E1 +8.562480000E2,6.310710880E1 +8.565060000E2,5.625485760E1 +8.567860000E2,5.886920329E1 +8.570590000E2,5.638007706E1 +8.573180000E2,5.477312089E1 +8.576670000E2,5.402637072E1 +8.579310000E2,5.282806817E1 +8.582400000E2,5.743205922E1 +8.584770000E2,5.608834078E1 +8.587730000E2,5.917700537E1 +8.590950000E2,5.757076232E1 +8.593390000E2,5.680975976E1 +8.596110000E2,5.316092446E1 +8.598560000E2,5.634389465E1 +8.601130000E2,5.912558361E1 +8.603880000E2,5.827706684E1 +8.606370000E2,5.580056474E1 +8.609720000E2,5.622551838E1 +8.612190000E2,5.816090597E1 +8.614650000E2,5.710633258E1 +8.617260000E2,6.762679027E1 +8.619970000E2,6.050550643E1 +8.622480000E2,6.017289530E1 +8.624960000E2,5.884551198E1 +8.627510000E2,5.823958631E1 +8.630120000E2,5.747421536E1 +8.632920000E2,5.891926612E1 +8.635810000E2,5.962176090E1 +8.638680000E2,5.932606834E1 +8.642430000E2,6.035939553E1 +8.645920000E2,5.892740034E1 +8.649090000E2,6.158225090E1 +8.651650000E2,5.941856931E1 +8.654560000E2,5.517726055E1 +8.656900000E2,5.573554393E1 +8.659400000E2,6.300977067E1 +8.662170000E2,6.346838855E1 +8.664760000E2,5.840482341E1 +8.667600000E2,5.656477763E1 +8.669980000E2,5.809371706E1 +8.672500000E2,5.957523428E1 +8.675890000E2,5.868790884E1 +8.678670000E2,6.643274765E1 +8.681530000E2,6.202304252E1 +8.684260000E2,6.167390940E1 +8.686760000E2,6.561664622E1 +8.689220000E2,6.221849135E1 +8.691620000E2,5.873701255E1 +8.694080000E2,5.721335717E1 +8.696600000E2,5.775578048E1 +8.699210000E2,6.139190630E1 +8.702060000E2,5.695582014E1 +8.705330000E2,5.285782467E1 +8.708800000E2,5.254436807E1 +8.711320000E2,5.941119733E1 +8.714840000E2,5.561687107E1 +8.717890000E2,5.226341013E1 +8.720340000E2,5.351737673E1 +8.723120000E2,5.581753669E1 +8.725450000E2,5.544476975E1 +8.727930000E2,5.112331517E1 +8.731050000E2,5.669948434E1 +8.733660000E2,5.553741274E1 +8.736450000E2,5.287392842E1 +8.738710000E2,5.342755356E1 +8.742030000E2,5.525376809E1 +8.745760000E2,5.790146612E1 +8.748470000E2,5.775550126E1 +8.750900000E2,5.828043309E1 +8.753860000E2,5.689517506E1 +8.756490000E2,5.836000549E1 +8.759170000E2,5.887049385E1 +8.761640000E2,5.731343570E1 +8.764240000E2,5.947081752E1 +8.766660000E2,5.735732777E1 +8.769150000E2,5.791222148E1 +8.771870000E2,5.217820200E1 +8.775110000E2,5.373516267E1 +8.777550000E2,5.639663701E1 +8.779960000E2,5.308435393E1 +8.782370000E2,5.327040257E1 +8.785510000E2,5.539866825E1 +8.788050000E2,5.451580533E1 +8.791100000E2,5.664888244E1 +8.793670000E2,5.439058144E1 +8.796110000E2,6.546629591E1 +8.799090000E2,6.080313073E1 +8.801560000E2,6.023654065E1 +8.804070000E2,5.547022044E1 +8.807450000E2,5.933402552E1 +8.809880000E2,6.073235462E1 +8.812850000E2,5.811897337E1 +8.815210000E2,5.670873426E1 +8.818240000E2,6.239450766E1 +8.821160000E2,6.033779387E1 +8.823610000E2,5.921328684E1 +8.826600000E2,5.808215882E1 +8.828910000E2,5.927124720E1 +8.831280000E2,5.254346564E1 +8.834120000E2,5.755316817E1 +8.837180000E2,5.815703318E1 +8.840150000E2,5.925974643E1 +8.842610000E2,5.406291788E1 +8.845520000E2,5.892672719E1 +8.847970000E2,6.343231596E1 +8.850390000E2,6.045689612E1 +8.853340000E2,5.903303339E1 +8.855810000E2,5.897514906E1 +8.858230000E2,5.682843230E1 +8.860690000E2,4.647265993E1 +8.863400000E2,5.617216143E1 +8.865730000E2,5.412892937E1 +8.869100000E2,6.210166513E1 +8.872070000E2,6.369099543E1 +8.874540000E2,6.052073025E1 +8.877480000E2,6.125108403E1 +8.879990000E2,6.087163347E1 +8.882550000E2,6.365510666E1 +8.885320000E2,5.341778352E1 +8.887600000E2,5.238943476E1 +8.890050000E2,6.378561240E1 +8.892460000E2,6.182956815E1 +8.895070000E2,6.027537659E1 +8.897770000E2,5.747996426E1 +8.901220000E2,5.606477689E1 +8.903620000E2,5.816493441E1 +8.907030000E2,5.740436721E1 +8.909540000E2,5.812990427E1 +8.912060000E2,5.757163286E1 +8.914520000E2,5.669306215E1 +8.917150000E2,5.593698617E1 +8.919580000E2,5.867011196E1 +8.922060000E2,6.001129970E1 +8.924480000E2,6.247831114E1 +8.927080000E2,5.501506807E1 +8.929550000E2,5.918039480E1 +8.932790000E2,5.750337148E1 +8.935260000E2,5.382626014E1 +8.937850000E2,5.632583646E1 +8.940370000E2,5.552393419E1 +8.943380000E2,5.417609473E1 +8.946050000E2,5.314873345E1 +8.948570000E2,5.537690953E1 +8.951790000E2,6.168371256E1 +8.954540000E2,6.142331687E1 +8.957690000E2,5.914263764E1 +8.960690000E2,6.039127428E1 +8.963670000E2,5.303465172E1 +8.966720000E2,5.819495208E1 +8.969200000E2,5.956457754E1 +8.972240000E2,5.554166388E1 +8.974940000E2,5.700583380E1 +8.978160000E2,5.525596264E1 +8.981210000E2,5.878997726E1 +8.983720000E2,5.661289659E1 +8.986510000E2,6.039909322E1 +8.988730000E2,5.569487247E1 +8.991240000E2,5.857026750E1 +8.993800000E2,6.116905404E1 +8.996580000E2,6.331625006E1 +8.998890000E2,5.612470465E1 +9.001440000E2,5.098243988E1 +9.004020000E2,5.779474181E1 +9.006650000E2,5.597754805E1 +9.009440000E2,5.706395638E1 +9.012380000E2,5.989184595E1 +9.015000000E2,5.905145002E1 +9.017620000E2,5.913397617E1 +9.020230000E2,5.831976398E1 +9.022900000E2,5.400731512E1 +9.025900000E2,6.547285797E1 +9.029050000E2,6.534571775E1 +9.032100000E2,5.428834230E1 +9.034580000E2,4.919896084E1 +9.037180000E2,5.326934205E1 +9.039740000E2,5.135684539E1 +9.042700000E2,5.784030554E1 +9.045180000E2,5.789711892E1 +9.048150000E2,5.501985460E1 +9.050680000E2,5.394185103E1 +9.053920000E2,5.504541187E1 +9.056620000E2,5.574384904E1 +9.059260000E2,5.198297704E1 +9.062920000E2,5.507423148E1 +9.065460000E2,5.073979477E1 +9.068090000E2,5.409355601E1 +9.071500000E2,5.842003605E1 +9.074380000E2,6.323761852E1 +9.076890000E2,5.475142925E1 +9.079510000E2,5.285089191E1 +9.082580000E2,6.228883476E1 +9.085110000E2,6.229139223E1 +9.087590000E2,5.849936549E1 +9.090220000E2,6.382664868E1 +9.092560000E2,5.234586511E1 +9.095720000E2,5.506613760E1 +9.098700000E2,5.883918884E1 +9.101180000E2,5.722745073E1 +9.103980000E2,6.006905181E1 +9.106670000E2,6.333821195E1 +9.109390000E2,5.997503412E1 +9.111770000E2,5.691091005E1 +9.114250000E2,5.629684565E1 +9.117070000E2,5.944947286E1 +9.119370000E2,5.757115704E1 +9.122030000E2,5.617546709E1 +9.125090000E2,5.506166951E1 +9.128480000E2,5.345826069E1 +9.131070000E2,5.586702127E1 +9.133900000E2,6.075354367E1 +9.137040000E2,5.668960998E1 +9.139920000E2,5.584388878E1 +9.142800000E2,5.668519299E1 +9.145740000E2,5.400550993E1 +9.148220000E2,5.668991412E1 +9.150670000E2,5.455006531E1 +9.153720000E2,5.750041942E1 +9.156590000E2,5.756327349E1 +9.159630000E2,5.822694927E1 +9.162110000E2,5.764545771E1 +9.164660000E2,5.716015909E1 +9.167560000E2,5.136001811E1 +9.170200000E2,4.706951064E1 +9.172710000E2,4.999131008E1 +9.175180000E2,5.619976433E1 +9.178030000E2,5.463675948E1 +9.180580000E2,4.995546642E1 +9.183000000E2,5.328928391E1 +9.185570000E2,4.808104957E1 +9.188650000E2,5.411517612E1 +9.191080000E2,5.672946344E1 +9.194270000E2,5.737096863E1 +9.196850000E2,5.974051238E1 +9.199830000E2,5.656564726E1 +9.202340000E2,5.709524531E1 +9.204810000E2,5.408385116E1 +9.208240000E2,5.414410830E1 +9.210650000E2,5.638214177E1 +9.213330000E2,5.753313030E1 +9.216130000E2,5.354803656E1 +9.219120000E2,6.191736419E1 +9.221480000E2,5.734366551E1 +9.224580000E2,5.684475304E1 +9.228030000E2,6.045431811E1 +9.230950000E2,5.973057312E1 +9.233960000E2,5.537690593E1 +9.236620000E2,5.411771801E1 +9.239600000E2,5.513839001E1 +9.242140000E2,5.699753068E1 +9.244670000E2,6.643461088E1 +9.247300000E2,6.062391899E1 +9.250330000E2,5.798096332E1 +9.253240000E2,6.347140522E1 +9.255740000E2,6.166496817E1 +9.259250000E2,6.190058171E1 +9.261820000E2,6.329204590E1 +9.264380000E2,6.389135880E1 +9.267030000E2,5.917517639E1 +9.269480000E2,5.809772267E1 +9.272170000E2,5.733235238E1 +9.274780000E2,5.226841119E1 +9.277860000E2,5.876554483E1 +9.280720000E2,6.281089568E1 +9.283510000E2,5.368859448E1 +9.286400000E2,5.449014251E1 +9.289370000E2,5.589991313E1 +9.292390000E2,5.452044152E1 +9.294860000E2,5.574135623E1 +9.297800000E2,5.656551806E1 +9.300200000E2,5.368800996E1 +9.302990000E2,5.374372369E1 +9.305490000E2,5.520696346E1 +9.308500000E2,5.642038107E1 +9.311480000E2,5.958603376E1 +9.314510000E2,5.775531382E1 +9.316980000E2,5.561486787E1 +9.319610000E2,5.826734748E1 +9.322700000E2,5.604871965E1 +9.325550000E2,5.170668645E1 +9.328670000E2,5.089285684E1 +9.331190000E2,4.724853188E1 +9.333790000E2,4.756075237E1 +9.336260000E2,5.199039629E1 +9.338890000E2,4.980140945E1 +9.341620000E2,5.530081877E1 +9.344120000E2,5.549144740E1 +9.347250000E2,5.515929093E1 +9.349780000E2,5.399104933E1 +9.352760000E2,5.325801117E1 +9.356240000E2,5.040008457E1 +9.359420000E2,5.360316460E1 +9.361890000E2,5.191591881E1 +9.364390000E2,5.324554606E1 +9.366970000E2,5.654671572E1 +9.370100000E2,5.711795620E1 +9.372590000E2,5.478625541E1 +9.375950000E2,5.667621371E1 +9.378550000E2,5.463565976E1 +9.381050000E2,5.398825590E1 +9.383580000E2,5.436030102E1 +9.386390000E2,5.091983440E1 +9.389120000E2,5.286705124E1 +9.391550000E2,5.236775571E1 +9.394300000E2,5.738794921E1 +9.397170000E2,5.727939554E1 +9.399750000E2,6.319402051E1 +9.402560000E2,5.468250624E1 +9.405530000E2,5.641852830E1 +9.408670000E2,6.200700436E1 +9.411390000E2,6.163446308E1 +9.413860000E2,7.148312536E1 +9.416340000E2,6.050927243E1 +9.419040000E2,5.667078757E1 +9.421350000E2,5.749142651E1 +9.424700000E2,5.240604485E1 +9.427760000E2,5.466454134E1 +9.430280000E2,6.082141946E1 +9.433300000E2,6.003969647E1 +9.436110000E2,6.121195378E1 +9.438460000E2,5.625129518E1 +9.441420000E2,5.911131348E1 +9.443880000E2,5.468317436E1 +9.446840000E2,6.009033853E1 +9.449440000E2,5.906624737E1 +9.452490000E2,5.464875325E1 +9.455970000E2,5.384566268E1 +9.458510000E2,5.044039840E1 +9.461140000E2,5.035886237E1 +9.463820000E2,5.734112986E1 +9.466620000E2,5.229112628E1 +9.469690000E2,6.028523542E1 +9.472250000E2,5.837101422E1 +9.475000000E2,5.619491985E1 +9.477970000E2,5.364209552E1 +9.480560000E2,5.511055516E1 +9.483560000E2,5.308396885E1 +9.486650000E2,5.587440008E1 +9.490640000E2,5.273632850E1 +9.493730000E2,6.231816715E1 +9.496570000E2,6.253734875E1 +9.499030000E2,5.554720788E1 +9.501460000E2,5.631566079E1 +9.503970000E2,5.626896653E1 +9.506490000E2,5.691941114E1 +9.508990000E2,5.116659255E1 +9.511440000E2,4.922875084E1 +9.514130000E2,5.936693495E1 +9.517070000E2,5.638156112E1 +9.520200000E2,5.180629212E1 +9.523780000E2,4.998674108E1 +9.526570000E2,4.841587788E1 +9.529100000E2,5.028896526E1 +9.531650000E2,4.965921907E1 +9.534690000E2,4.493319669E1 +9.537260000E2,4.598612712E1 +9.539740000E2,5.276251951E1 +9.542810000E2,4.126037796E1 +9.545830000E2,4.737114191E1 +9.548330000E2,4.411553821E1 +9.550850000E2,4.440050708E1 +9.553840000E2,5.260541790E1 +9.556980000E2,5.273901651E1 +9.559710000E2,5.383409632E1 +9.562220000E2,5.239354977E1 +9.564980000E2,4.759742823E1 +9.568040000E2,5.239869448E1 +9.570530000E2,5.238241691E1 +9.573300000E2,5.227349879E1 +9.575630000E2,5.272394727E1 +9.578410000E2,5.414710772E1 +9.580970000E2,5.325895305E1 +9.583410000E2,5.577122645E1 +9.586370000E2,5.015645058E1 +9.590040000E2,5.173028231E1 +9.593040000E2,5.447959265E1 +9.595640000E2,5.484713415E1 +9.598110000E2,5.470137539E1 +9.601060000E2,5.878769788E1 +9.603740000E2,5.851189839E1 +9.606810000E2,5.400762096E1 +9.609290000E2,5.749049444E1 +9.611870000E2,5.241750519E1 +9.614480000E2,4.979747952E1 +9.616960000E2,5.096881110E1 +9.620030000E2,5.149804171E1 +9.623180000E2,5.481599911E1 +9.625540000E2,5.138365056E1 +9.628240000E2,5.235851031E1 +9.630470000E2,4.871540913E1 +9.632880000E2,5.651540461E1 +9.635860000E2,5.650278128E1 +9.638210000E2,5.704973755E1 +9.641160000E2,5.757712252E1 +9.643960000E2,5.881159691E1 +9.646600000E2,5.355579494E1 +9.649750000E2,5.539751700E1 +9.652910000E2,4.797714339E1 +9.655520000E2,5.082548637E1 +9.658080000E2,5.579830605E1 +9.660780000E2,5.554406278E1 +9.663250000E2,5.354814316E1 +9.665660000E2,5.463107171E1 +9.668090000E2,5.368692433E1 +9.671300000E2,5.364867335E1 +9.674540000E2,5.468973775E1 +9.677060000E2,5.815904844E1 +9.680020000E2,5.598522308E1 +9.682480000E2,5.541083624E1 +9.685850000E2,5.512396132E1 +9.688400000E2,5.530796688E1 +9.691210000E2,5.433954611E1 +9.693810000E2,5.507440645E1 +9.696820000E2,5.086817906E1 +9.699140000E2,5.696191489E1 +9.701640000E2,5.845256581E1 +9.704420000E2,5.620226260E1 +9.706770000E2,5.629047170E1 +9.709750000E2,5.811655252E1 +9.712290000E2,5.703185419E1 +9.714900000E2,5.716734774E1 +9.718450000E2,5.493596869E1 +9.720910000E2,5.909437017E1 +9.723380000E2,5.710675060E1 +9.725910000E2,5.780279559E1 +9.728920000E2,5.860060144E1 +9.731360000E2,6.078900999E1 +9.734260000E2,5.852116194E1 +9.736640000E2,5.905899453E1 +9.739130000E2,5.636299630E1 +9.742090000E2,6.289355999E1 +9.744870000E2,6.167909115E1 +9.747290000E2,6.098057792E1 +9.750690000E2,5.906667343E1 +9.753320000E2,6.018572501E1 +9.756150000E2,5.718512970E1 +9.759100000E2,5.146063018E1 +9.761570000E2,5.733244632E1 +9.764050000E2,5.368365894E1 +9.766600000E2,5.486016267E1 +9.769150000E2,5.908582599E1 +9.771910000E2,5.733773036E1 +9.774400000E2,5.566361416E1 +9.777680000E2,5.819125256E1 +9.781220000E2,5.947694304E1 +9.783640000E2,6.140057637E1 +9.786330000E2,5.721849738E1 +9.788550000E2,5.617504209E1 +9.791010000E2,5.660293849E1 +9.793960000E2,5.174001770E1 +9.796880000E2,5.083474014E1 +9.799290000E2,5.184104339E1 +9.801850000E2,5.025385313E1 +9.804850000E2,5.286605500E1 +9.807270000E2,5.586849562E1 +9.809750000E2,5.666036754E1 +9.812950000E2,5.248500918E1 +9.815810000E2,5.416072977E1 +9.818360000E2,5.799655965E1 +9.821300000E2,5.801841935E1 +9.823770000E2,5.977514968E1 +9.826270000E2,5.676871456E1 +9.828850000E2,5.104814549E1 +9.831730000E2,5.834620153E1 +9.834010000E2,5.660640582E1 +9.836620000E2,5.686451748E1 +9.839750000E2,5.998440952E1 +9.842240000E2,5.556687478E1 +9.846000000E2,5.811069315E1 +9.848430000E2,5.843499893E1 +9.851250000E2,5.180956247E1 +9.853860000E2,5.206236639E1 +9.856480000E2,5.641840701E1 +9.859110000E2,5.518588565E1 +9.861920000E2,5.697237679E1 +9.864550000E2,5.411246614E1 +9.867510000E2,5.214533821E1 +9.869880000E2,5.642389575E1 +9.872440000E2,6.015294933E1 +9.875470000E2,5.809991100E1 +9.879150000E2,6.420044247E1 +9.881610000E2,6.042656173E1 +9.884280000E2,5.938959873E1 +9.886840000E2,6.059888233E1 +9.889870000E2,5.282749720E1 +9.892620000E2,5.638110380E1 +9.895440000E2,4.900409689E1 +9.897740000E2,4.971849802E1 +9.900320000E2,5.061428463E1 +9.903370000E2,5.829922071E1 +9.905860000E2,5.812083213E1 +9.908910000E2,5.500587720E1 +9.911860000E2,5.677481104E1 +9.914380000E2,5.502691141E1 +9.916830000E2,5.294500154E1 +9.919560000E2,5.700444986E1 +9.921770000E2,5.448756275E1 +9.924220000E2,5.785741234E1 +9.927280000E2,5.702180374E1 +9.929670000E2,6.013415875E1 +9.932080000E2,5.533496795E1 +9.934640000E2,5.695301526E1 +9.937440000E2,5.436173732E1 +9.940620000E2,5.092257074E1 +9.944480000E2,4.973000793E1 +9.946940000E2,4.871235512E1 +9.949410000E2,5.171412848E1 +9.951960000E2,5.643245777E1 +9.954520000E2,5.548819002E1 +9.957530000E2,5.694822585E1 +9.960600000E2,5.668072577E1 +9.963110000E2,5.547400320E1 +9.966010000E2,5.667137699E1 +9.968430000E2,5.866196066E1 +9.971120000E2,5.641527163E1 +9.974300000E2,5.505243365E1 +9.977140000E2,5.491253296E1 +9.979940000E2,5.642986287E1 +9.982400000E2,5.111113898E1 +9.985270000E2,5.228293633E1 +9.987770000E2,5.380023266E1 +9.990760000E2,5.259255492E1 +9.993610000E2,5.359948032E1 +9.996550000E2,5.817439497E1 +9.999080000E2,5.712087238E1 +1.000199000E3,6.016800470E1 +1.000435000E3,5.758076017E1 +1.000772000E3,5.328951429E1 +1.001047000E3,5.373102399E1 +1.001303000E3,5.905317642E1 +1.001622000E3,5.478240688E1 +1.001877000E3,5.648896451E1 +1.002173000E3,5.587033976E1 +1.002422000E3,5.995513955E1 +1.002724000E3,6.295760047E1 +1.003003000E3,5.978713154E1 +1.003261000E3,5.669754444E1 +1.003545000E3,5.577942906E1 +1.003827000E3,6.186873273E1 +1.004183000E3,6.253868639E1 +1.004493000E3,5.777226132E1 +1.004770000E3,6.482227668E1 +1.005072000E3,5.923751414E1 +1.005323000E3,5.644465637E1 +1.005601000E3,6.074750234E1 +1.005832000E3,5.683683327E1 +1.006147000E3,5.957418887E1 +1.006418000E3,6.134946851E1 +1.006713000E3,5.641852300E1 +1.006952000E3,5.637674327E1 +1.007310000E3,5.484290206E1 +1.007589000E3,6.426865013E1 +1.007886000E3,5.712036033E1 +1.008127000E3,5.768385080E1 +1.008427000E3,5.812466970E1 +1.008666000E3,6.112344783E1 +1.008973000E3,5.606588478E1 +1.009269000E3,5.809328667E1 +1.009507000E3,5.371315435E1 +1.009763000E3,5.527533595E1 +1.010003000E3,5.390597114E1 +1.010379000E3,5.652035402E1 +1.010658000E3,5.490058638E1 +1.010920000E3,5.927019017E1 +1.011197000E3,5.293113048E1 +1.011458000E3,5.179006266E1 +1.011718000E3,5.366462930E1 +1.011979000E3,5.569421827E1 +1.012229000E3,5.341899104E1 +1.012477000E3,4.863208748E1 +1.012772000E3,6.037154816E1 +1.013036000E3,5.430849576E1 +1.013284000E3,5.735938261E1 +1.013671000E3,5.526482118E1 +1.013957000E3,5.731780297E1 +1.014225000E3,5.205368153E1 +1.014486000E3,5.548863756E1 +1.014733000E3,5.265038263E1 +1.015033000E3,5.986876322E1 +1.015314000E3,5.130643680E1 +1.015590000E3,6.086878634E1 +1.015830000E3,5.798526739E1 +1.016137000E3,6.825745236E1 +1.016387000E3,5.828900876E1 +1.016655000E3,5.873097643E1 +1.017001000E3,6.454090665E1 +1.017329000E3,6.385512775E1 +1.017637000E3,6.691081911E1 +1.017938000E3,6.580217665E1 +1.018229000E3,6.485489311E1 +1.018470000E3,6.387101962E1 +1.018706000E3,6.616835921E1 +1.018997000E3,5.951737331E1 +1.019235000E3,5.386458503E1 +1.019536000E3,5.756977765E1 +1.019801000E3,5.811747841E1 +1.020064000E3,5.930001089E1 +1.020406000E3,5.469664450E1 +1.020673000E3,5.181220980E1 +1.020925000E3,5.483858346E1 +1.021232000E3,5.716842569E1 +1.021527000E3,5.738254897E1 +1.021762000E3,5.628034518E1 +1.022007000E3,5.850971228E1 +1.022258000E3,5.329919175E1 +1.022556000E3,5.482637446E1 +1.022813000E3,5.690503448E1 +1.023071000E3,5.317501594E1 +1.023336000E3,4.870888301E1 +1.023687000E3,6.132281620E1 +1.023965000E3,6.262505101E1 +1.024220000E3,6.180229149E1 +1.024496000E3,6.130993335E1 +1.024741000E3,6.231376381E1 +1.025040000E3,6.164360059E1 +1.025279000E3,5.910065798E1 +1.025533000E3,5.622173801E1 +1.025821000E3,5.290311975E1 +1.026116000E3,5.028293308E1 +1.026403000E3,5.581740437E1 +1.026664000E3,5.988277804E1 +1.027011000E3,5.730548262E1 +1.027305000E3,5.417769573E1 +1.027578000E3,5.250932185E1 +1.027819000E3,5.139919708E1 +1.028128000E3,5.061852216E1 +1.028380000E3,4.722292138E1 +1.028683000E3,5.983070917E1 +1.028956000E3,6.045269830E1 +1.029182000E3,5.777292957E1 +1.029431000E3,5.497807442E1 +1.029734000E3,5.533889528E1 +1.030063000E3,5.373558580E1 +1.030323000E3,5.600729212E1 +1.030620000E3,5.467159629E1 +1.030863000E3,5.246400101E1 +1.031110000E3,5.468037288E1 +1.031367000E3,5.850364516E1 +1.031646000E3,5.490958739E1 +1.031911000E3,5.866929845E1 +1.032210000E3,5.708288591E1 +1.032475000E3,5.498129629E1 +1.032736000E3,5.670272599E1 +1.032986000E3,5.317143219E1 +1.033315000E3,5.758413128E1 +1.033557000E3,6.361635596E1 +1.033846000E3,5.513973379E1 +1.034093000E3,5.215484095E1 +1.034399000E3,5.465926438E1 +1.034684000E3,5.588902955E1 +1.034978000E3,5.387672604E1 +1.035280000E3,5.595327755E1 +1.035543000E3,5.621513504E1 +1.035825000E3,5.991854954E1 +1.036079000E3,5.864640009E1 +1.036322000E3,6.072021936E1 +1.036666000E3,5.462749592E1 +1.036971000E3,5.329083651E1 +1.037264000E3,5.401214501E1 +1.037542000E3,5.242806591E1 +1.037843000E3,5.573267887E1 +1.038091000E3,5.224254554E1 +1.038380000E3,5.453929206E1 +1.038635000E3,5.371826859E1 +1.038891000E3,4.369246898E1 +1.039145000E3,4.547521933E1 +1.039418000E3,4.204639660E1 +1.039750000E3,4.426760298E1 +1.039990000E3,4.955659514E1 +1.040294000E3,4.960859899E1 +1.040560000E3,4.841380220E1 +1.040808000E3,4.914533708E1 +1.041104000E3,4.650609937E1 +1.041370000E3,4.849101938E1 +1.041622000E3,5.065930763E1 +1.041920000E3,4.744161935E1 +1.042161000E3,4.448519483E1 +1.042478000E3,4.726532690E1 +1.042725000E3,4.667923132E1 +1.043042000E3,4.704822757E1 +1.043307000E3,3.950691106E1 +1.043560000E3,5.249697508E1 +1.043835000E3,4.753687679E1 +1.044091000E3,4.843049138E1 +1.044350000E3,5.394643708E1 +1.044644000E3,4.769079035E1 +1.044887000E3,5.111291504E1 +1.045194000E3,5.247298633E1 +1.045445000E3,4.904344971E1 +1.045693000E3,4.405437847E1 +1.045988000E3,4.750888237E1 +1.046301000E3,4.305046000E1 +1.046518000E3,4.630901796E1 +1.046813000E3,4.756289225E1 +1.047053000E3,4.661089273E1 +1.047331000E3,6.143859736E1 +1.047566000E3,5.702483033E1 +1.047860000E3,5.015015196E1 +1.048098000E3,5.180675157E1 +1.048397000E3,4.645218330E1 +1.048640000E3,4.317726503E1 +1.048918000E3,4.962602549E1 +1.049159000E3,4.922447391E1 +1.049523000E3,4.310015818E1 +1.049767000E3,5.584844461E1 +1.050011000E3,5.550466055E1 +1.050294000E3,5.076679182E1 +1.050523000E3,4.777565498E1 +1.050776000E3,5.078379664E1 +1.051031000E3,4.412618688E1 +1.051298000E3,3.933148532E1 +1.051551000E3,4.240994962E1 +1.051799000E3,3.715036539E1 +1.052054000E3,4.541823437E1 +1.052312000E3,3.252240989E1 +1.052661000E3,4.298387800E1 +1.052922000E3,4.065675211E1 +1.053171000E3,3.851226965E1 +1.053417000E3,3.833414863E1 +1.053702000E3,3.734543870E1 +1.053967000E3,4.406198141E1 +1.054269000E3,3.397952572E1 +1.054518000E3,3.018425986E1 +1.054795000E3,2.659023927E1 +1.055055000E3,3.230579484E1 +1.055319000E3,4.027650377E1 +1.055588000E3,3.256611719E1 +1.055936000E3,3.203904394E1 +1.056189000E3,3.024692018E1 +1.056469000E3,4.044611203E1 +1.056698000E3,3.245705712E1 +1.056956000E3,5.087039919E1 +1.057201000E3,5.278557071E1 +1.057507000E3,6.996122129E1 +1.057766000E3,6.951439283E1 +1.058027000E3,6.731609209E1 +1.058291000E3,5.787293958E1 +1.058571000E3,5.774874245E1 +1.058801000E3,5.291748766E1 +1.059132000E3,4.352220528E1 +1.059391000E3,5.556254729E1 +1.059665000E3,5.339220405E1 +1.059951000E3,5.593145301E1 +1.060235000E3,5.299996372E1 +1.060492000E3,4.882317894E1 +1.060733000E3,3.790707311E1 +1.060975000E3,3.470192076E1 +1.061278000E3,4.481563830E1 +1.061519000E3,4.823008935E1 +1.061816000E3,4.719850269E1 +1.062076000E3,4.706381680E1 +1.062331000E3,4.530378435E1 +1.062576000E3,3.456809562E1 +1.062882000E3,3.742453964E1 +1.063154000E3,3.905594906E1 +1.063397000E3,3.672857244E1 +1.063694000E3,2.941779164E1 +1.063926000E3,2.995931983E1 +1.064168000E3,3.455311118E1 +1.064461000E3,3.254662869E1 +1.064708000E3,3.652583843E1 +1.065001000E3,5.229424666E1 +1.065352000E3,5.178814165E1 +1.065606000E3,4.798098259E1 +1.065854000E3,3.636652329E1 +1.066121000E3,4.558252535E1 +1.066366000E3,3.902840121E1 +1.066629000E3,3.106435508E1 +1.066887000E3,2.541330464E1 +1.067179000E3,3.474902335E1 +1.067449000E3,4.492275189E1 +1.067698000E3,3.860211372E1 +1.067955000E3,4.332670525E1 +1.068251000E3,5.147667691E1 +1.068546000E3,5.152069997E1 +1.068797000E3,4.540650098E1 +1.069105000E3,4.486446450E1 +1.069378000E3,4.196481867E1 +1.069632000E3,4.863200791E1 +1.069908000E3,3.878967071E1 +1.070151000E3,3.630888030E1 +1.070413000E3,2.964429880E1 +1.070682000E3,3.354707636E1 +1.070956000E3,4.008490969E1 +1.071248000E3,3.576577653E1 +1.071553000E3,4.349754488E1 +1.071886000E3,3.824859907E1 +1.072130000E3,3.455877689E1 +1.072406000E3,3.622999465E1 +1.072717000E3,3.637608237E1 +1.072984000E3,3.645219519E1 +1.073255000E3,4.353729148E1 +1.073603000E3,4.287473251E1 +1.073856000E3,4.842203791E1 +1.074097000E3,4.484407311E1 +1.074356000E3,4.397007110E1 +1.074628000E3,4.695884235E1 +1.074931000E3,4.627189963E1 +1.075264000E3,4.689571524E1 +1.075614000E3,5.203841291E1 +1.075923000E3,4.610184941E1 +1.076163000E3,4.404432471E1 +1.076475000E3,4.923215011E1 +1.076765000E3,4.466142180E1 +1.077062000E3,4.987282715E1 +1.077375000E3,4.461839454E1 +1.077687000E3,5.085403766E1 +1.077991000E3,4.674512295E1 +1.078232000E3,5.167180279E1 +1.078544000E3,4.780582457E1 +1.078939000E3,4.593914406E1 +1.079187000E3,4.061652220E1 +1.079434000E3,4.347669045E1 +1.079712000E3,4.326983820E1 +1.079966000E3,3.511950991E1 +1.080260000E3,4.755279745E1 +1.080506000E3,4.756343862E1 +1.080756000E3,4.779732167E1 +1.081049000E3,4.991962747E1 +1.081293000E3,5.213887128E1 +1.081586000E3,5.357624469E1 +1.081916000E3,5.141456645E1 +1.082165000E3,5.036532462E1 +1.082460000E3,4.962769973E1 +1.082696000E3,4.506404490E1 +1.082988000E3,4.537987312E1 +1.083220000E3,4.738457007E1 +1.083529000E3,4.698711193E1 +1.083769000E3,4.571430081E1 +1.084079000E3,4.980908007E1 +1.084324000E3,5.082282040E1 +1.084590000E3,5.406004268E1 +1.084876000E3,5.436375886E1 +1.085258000E3,5.361506257E1 +1.085509000E3,5.202937925E1 +1.085815000E3,5.324976969E1 +1.086057000E3,5.371445731E1 +1.086301000E3,5.282162917E1 +1.086550000E3,5.221281857E1 +1.086802000E3,5.263727375E1 +1.087126000E3,5.703022139E1 +1.087384000E3,5.519432869E1 +1.087646000E3,5.426647490E1 +1.087939000E3,5.407342864E1 +1.088175000E3,5.235924404E1 +1.088520000E3,4.681002832E1 +1.088812000E3,4.891237586E1 +1.089076000E3,4.699020733E1 +1.089350000E3,4.902871382E1 +1.089591000E3,5.078145117E1 +1.089837000E3,5.041791921E1 +1.090133000E3,4.603650794E1 +1.090430000E3,4.871755485E1 +1.090660000E3,5.111421073E1 +1.090911000E3,4.581894631E1 +1.091248000E3,4.988189917E1 +1.091630000E3,5.341365920E1 +1.091902000E3,4.962858025E1 +1.092183000E3,4.315344358E1 +1.092440000E3,4.664431132E1 +1.092683000E3,4.616459192E1 +1.092923000E3,4.765071496E1 +1.093171000E3,4.163360687E1 +1.093473000E3,4.537777608E1 +1.093714000E3,4.783603025E1 +1.094007000E3,4.845414260E1 +1.094261000E3,4.799870549E1 +1.094499000E3,4.651309815E1 +1.094792000E3,5.003648984E1 +1.095123000E3,5.202534254E1 +1.095372000E3,5.709400077E1 +1.095625000E3,5.694079106E1 +1.095896000E3,5.715452089E1 +1.096196000E3,5.523378380E1 +1.096438000E3,5.375558627E1 +1.096737000E3,5.665208041E1 +1.096991000E3,5.314654737E1 +1.097292000E3,5.142447849E1 +1.097557000E3,5.330628285E1 +1.097827000E3,5.512040694E1 +1.098167000E3,5.399583122E1 +1.098472000E3,5.540663813E1 +1.098720000E3,5.200546986E1 +1.098960000E3,4.676140326E1 +1.099243000E3,4.798657093E1 +1.099544000E3,4.841724285E1 +1.099804000E3,5.642371618E1 +1.100109000E3,5.409000726E1 +1.100381000E3,5.348646719E1 +1.100630000E3,5.346537578E1 +1.100927000E3,5.422782845E1 +1.101164000E3,5.395323822E1 +1.101495000E3,5.383967560E1 +1.101763000E3,5.667828538E1 +1.102044000E3,4.764690784E1 +1.102307000E3,5.353530254E1 +1.102613000E3,5.568430762E1 +1.102906000E3,5.431580275E1 +1.103147000E3,5.193331555E1 +1.103441000E3,5.040945762E1 +1.103677000E3,5.333005838E1 +1.103968000E3,4.947534745E1 +1.104272000E3,5.306270968E1 +1.104564000E3,5.537230515E1 +1.104799000E3,4.876041085E1 +1.105069000E3,5.109409535E1 +1.105330000E3,5.087734214E1 +1.105587000E3,5.225642483E1 +1.105838000E3,5.176680091E1 +1.106135000E3,5.535939212E1 +1.106380000E3,5.666892185E1 +1.106622000E3,5.658846562E1 +1.106895000E3,5.577897889E1 +1.107150000E3,5.157178717E1 +1.107431000E3,5.284488409E1 +1.107756000E3,5.415639955E1 +1.108002000E3,5.465643057E1 +1.108313000E3,4.654328988E1 +1.108563000E3,5.038890380E1 +1.108811000E3,4.602751738E1 +1.109073000E3,4.801243396E1 +1.109375000E3,4.782472616E1 +1.109667000E3,4.666447221E1 +1.109943000E3,5.156469126E1 +1.110192000E3,4.949682888E1 +1.110448000E3,4.919673339E1 +1.110752000E3,4.862521519E1 +1.111045000E3,5.122379655E1 +1.111295000E3,4.813892217E1 +1.111515000E3,4.901611396E1 +1.111761000E3,4.905664967E1 +1.112005000E3,4.647618514E1 +1.112265000E3,4.730688076E1 +1.112537000E3,5.039121351E1 +1.112793000E3,4.985611957E1 +1.113101000E3,5.474563863E1 +1.113387000E3,5.028870882E1 +1.113678000E3,5.073784750E1 +1.113952000E3,4.995138555E1 +1.114291000E3,4.790039203E1 +1.114554000E3,4.764335594E1 +1.114849000E3,5.057104591E1 +1.115096000E3,5.107398730E1 +1.115401000E3,4.800391913E1 +1.115672000E3,4.553282874E1 +1.115895000E3,4.569523337E1 +1.116194000E3,4.480844215E1 +1.116425000E3,4.772339962E1 +1.116664000E3,5.255452638E1 +1.116906000E3,4.927433934E1 +1.117202000E3,4.871369865E1 +1.117530000E3,4.928110420E1 +1.117840000E3,5.705383563E1 +1.118146000E3,4.880674861E1 +1.118418000E3,5.038180726E1 +1.118687000E3,5.145980404E1 +1.118950000E3,5.338008269E1 +1.119227000E3,5.227728425E1 +1.119468000E3,5.450689216E1 +1.119736000E3,5.844246451E1 +1.120049000E3,5.459398611E1 +1.120351000E3,5.526423567E1 +1.120605000E3,5.228963309E1 +1.120918000E3,5.598288902E1 +1.121182000E3,5.280889802E1 +1.121489000E3,4.974717420E1 +1.121729000E3,5.137523152E1 +1.121978000E3,5.052356297E1 +1.122235000E3,5.240368249E1 +1.122503000E3,4.826380791E1 +1.122775000E3,5.095403791E1 +1.123036000E3,5.799909934E1 +1.123291000E3,4.889512711E1 +1.123587000E3,5.622808486E1 +1.123874000E3,5.230369090E1 +1.124235000E3,5.081102316E1 +1.124544000E3,5.628773803E1 +1.124826000E3,5.810547372E1 +1.125153000E3,5.508029719E1 +1.125432000E3,5.576573503E1 +1.125722000E3,5.346022180E1 +1.125978000E3,5.279748306E1 +1.126234000E3,5.604802053E1 +1.126502000E3,5.937326657E1 +1.126804000E3,5.703447215E1 +1.127047000E3,5.520354594E1 +1.127314000E3,5.551787326E1 +1.127554000E3,5.740837773E1 +1.127843000E3,5.663015330E1 +1.128135000E3,5.649615150E1 +1.128380000E3,5.731556257E1 +1.128677000E3,6.079986861E1 +1.128914000E3,5.820128856E1 +1.129207000E3,6.091746513E1 +1.129442000E3,6.126941240E1 +1.129745000E3,4.541170906E1 +1.129980000E3,4.341485096E1 +1.130277000E3,4.833777967E1 +1.130573000E3,4.472710223E1 +1.130815000E3,5.059675199E1 +1.131062000E3,3.863826940E1 +1.131353000E3,4.925455740E1 +1.131589000E3,4.859989956E1 +1.131881000E3,5.113067908E1 +1.132117000E3,5.054542106E1 +1.132418000E3,4.827479925E1 +1.132654000E3,4.610884488E1 +1.132948000E3,4.879734536E1 +1.133241000E3,5.074680390E1 +1.133563000E3,5.119298220E1 +1.133864000E3,4.861265792E1 +1.134166000E3,5.001512903E1 +1.134452000E3,5.059053464E1 +1.134716000E3,4.999839479E1 +1.134967000E3,4.960069086E1 +1.135222000E3,5.320256888E1 +1.135494000E3,5.604818163E1 +1.135742000E3,5.625768045E1 +1.135999000E3,5.261645024E1 +1.136244000E3,5.105081932E1 +1.136501000E3,5.616444939E1 +1.136847000E3,5.624064264E1 +1.137105000E3,5.654097446E1 +1.137391000E3,5.807884104E1 +1.137717000E3,5.436169891E1 +1.137970000E3,5.763959225E1 +1.138239000E3,5.465216875E1 +1.138486000E3,5.094509116E1 +1.138731000E3,5.425415233E1 +1.138977000E3,5.143709697E1 +1.139259000E3,5.032545705E1 +1.139527000E3,5.906031130E1 +1.139800000E3,5.308709054E1 +1.140168000E3,5.407062541E1 +1.140423000E3,5.585261351E1 +1.140694000E3,5.463535881E1 +1.140949000E3,5.407603664E1 +1.141230000E3,5.495767686E1 +1.141512000E3,5.639433741E1 +1.141818000E3,5.555715330E1 +1.142072000E3,5.729232944E1 +1.142323000E3,5.553013253E1 +1.142578000E3,5.648251207E1 +1.142844000E3,5.786931075E1 +1.143143000E3,6.007493220E1 +1.143523000E3,5.752076543E1 +1.143836000E3,5.573324560E1 +1.144090000E3,5.641950784E1 +1.144396000E3,5.532270625E1 +1.144644000E3,5.561239732E1 +1.144940000E3,5.206707456E1 +1.145212000E3,5.092140902E1 +1.145511000E3,5.452891649E1 +1.145770000E3,5.331137977E1 +1.146042000E3,5.366568195E1 +1.146338000E3,5.227174013E1 +1.146650000E3,5.423955559E1 +1.146934000E3,5.781916580E1 +1.147218000E3,5.532962824E1 +1.147467000E3,5.502661676E1 +1.147687000E3,5.823979674E1 +1.147961000E3,5.538066560E1 +1.148276000E3,5.423260060E1 +1.148528000E3,5.197461977E1 +1.148799000E3,5.154724487E1 +1.149057000E3,5.473685923E1 +1.149367000E3,5.647867848E1 +1.149660000E3,5.489455072E1 +1.150037000E3,6.072892064E1 +1.150335000E3,5.543869835E1 +1.150594000E3,5.667713742E1 +1.150870000E3,5.818755157E1 +1.151164000E3,5.210849760E1 +1.151411000E3,5.095671455E1 +1.151703000E3,5.254983272E1 +1.152002000E3,5.585064224E1 +1.152253000E3,5.739007574E1 +1.152582000E3,5.895179917E1 +1.152860000E3,5.461317681E1 +1.153122000E3,5.345759293E1 +1.153381000E3,5.267971619E1 +1.153684000E3,6.006602205E1 +1.153986000E3,5.573552061E1 +1.154286000E3,5.518963618E1 +1.154531000E3,5.342922095E1 +1.154792000E3,5.257536969E1 +1.155139000E3,4.887945516E1 +1.155435000E3,4.702411688E1 +1.155680000E3,4.867646616E1 +1.155978000E3,4.811861077E1 +1.156361000E3,4.915586406E1 +1.156670000E3,5.033026069E1 +1.156976000E3,5.393908378E1 +1.157274000E3,5.295128205E1 +1.157524000E3,5.249671789E1 +1.157816000E3,5.314344994E1 +1.158052000E3,5.237342933E1 +1.158353000E3,5.300284286E1 +1.158590000E3,5.170068449E1 +1.158867000E3,5.174146304E1 +1.159147000E3,4.929588783E1 +1.159411000E3,5.699090425E1 +1.159752000E3,5.266690351E1 +1.160068000E3,5.746767577E1 +1.160360000E3,5.375850846E1 +1.160640000E3,5.373794020E1 +1.160985000E3,5.304914530E1 +1.161280000E3,5.198754593E1 +1.161525000E3,5.019848207E1 +1.161766000E3,5.164623609E1 +1.162020000E3,5.363319210E1 +1.162324000E3,5.439011044E1 +1.162564000E3,5.304648945E1 +1.162816000E3,5.174573718E1 +1.163177000E3,4.505755779E1 +1.163462000E3,4.894753105E1 +1.163738000E3,5.064933943E1 +1.164013000E3,5.245879056E1 +1.164255000E3,5.017914517E1 +1.164568000E3,5.189205429E1 +1.164823000E3,5.038961444E1 +1.165052000E3,5.072118593E1 +1.165297000E3,4.831662547E1 +1.165552000E3,5.050204887E1 +1.165808000E3,5.308107982E1 +1.166062000E3,4.878509871E1 +1.166392000E3,5.002605106E1 +1.166654000E3,5.320265697E1 +1.166911000E3,4.403273534E1 +1.167180000E3,5.161386051E1 +1.167455000E3,4.986209571E1 +1.167692000E3,4.993305836E1 +1.167973000E3,5.173621365E1 +1.168216000E3,5.385559129E1 +1.168491000E3,5.543019156E1 +1.168757000E3,5.019966657E1 +1.169035000E3,5.569516326E1 +1.169296000E3,5.216419082E1 +1.169676000E3,5.398731996E1 +1.169933000E3,5.465625282E1 +1.170197000E3,5.451774184E1 +1.170449000E3,5.328129322E1 +1.170705000E3,5.452639907E1 +1.170963000E3,5.713735254E1 +1.171272000E3,5.551413923E1 +1.171528000E3,5.604966001E1 +1.171779000E3,5.340478404E1 +1.172038000E3,5.107817821E1 +1.172291000E3,5.218990306E1 +1.172602000E3,4.830451720E1 +1.172964000E3,5.276802164E1 +1.173245000E3,5.191204687E1 +1.173527000E3,5.337367972E1 +1.173838000E3,5.462664550E1 +1.174090000E3,5.304724513E1 +1.174379000E3,5.193251440E1 +1.174628000E3,5.283915893E1 +1.174936000E3,5.036641160E1 +1.175236000E3,4.890810708E1 +1.175487000E3,4.805298565E1 +1.175750000E3,5.067335741E1 +1.176019000E3,4.961207397E1 +1.176335000E3,4.820862314E1 +1.176634000E3,5.328684116E1 +1.176883000E3,5.122009001E1 +1.177165000E3,5.878687770E1 +1.177412000E3,5.487235950E1 +1.177709000E3,5.224569426E1 +1.178006000E3,5.403405997E1 +1.178246000E3,5.388661901E1 +1.178490000E3,5.237426881E1 +1.178734000E3,5.372043820E1 +1.179050000E3,5.471170909E1 +1.179387000E3,5.129350436E1 +1.179686000E3,4.660070824E1 +1.179916000E3,4.541361068E1 +1.180159000E3,4.365576113E1 +1.180466000E3,4.771103553E1 +1.180756000E3,4.863237791E1 +1.181008000E3,5.534959697E1 +1.181314000E3,5.376444060E1 +1.181609000E3,5.130885425E1 +1.181851000E3,5.256948786E1 +1.182151000E3,5.321964637E1 +1.182393000E3,5.074776981E1 +1.182622000E3,4.979941250E1 +1.182873000E3,5.445637667E1 +1.183116000E3,4.449721128E1 +1.183420000E3,5.086906199E1 +1.183676000E3,5.067998506E1 +1.183927000E3,5.352019181E1 +1.184219000E3,4.851971310E1 +1.184517000E3,5.123853013E1 +1.184764000E3,5.278221141E1 +1.185010000E3,5.126409245E1 +1.185297000E3,5.249182764E1 +1.185665000E3,5.346599478E1 +1.185972000E3,5.052250297E1 +1.186225000E3,5.389354916E1 +1.186534000E3,5.372737626E1 +1.186796000E3,5.415645782E1 +1.187048000E3,5.441424865E1 +1.187317000E3,5.470553815E1 +1.187622000E3,5.559990781E1 +1.187913000E3,5.619293356E1 +1.188186000E3,4.869472445E1 +1.188442000E3,5.069948923E1 +1.188718000E3,5.296813397E1 +1.189051000E3,5.015003063E1 +1.189308000E3,5.110938827E1 +1.189570000E3,5.250182053E1 +1.189815000E3,5.240850659E1 +1.190062000E3,5.446862868E1 +1.190368000E3,5.270463767E1 +1.190629000E3,5.117539458E1 +1.190931000E3,5.543767536E1 +1.191207000E3,5.348622922E1 +1.191505000E3,5.112152946E1 +1.191761000E3,4.905277341E1 +1.192068000E3,5.456405848E1 +1.192487000E3,5.016322677E1 +1.192732000E3,4.971711263E1 +1.192976000E3,5.396031961E1 +1.193258000E3,5.018645567E1 +1.193531000E3,4.895586707E1 +1.193790000E3,5.442023654E1 +1.194055000E3,5.160697029E1 +1.194326000E3,4.822365107E1 +1.194605000E3,5.396633777E1 +1.194903000E3,5.031021734E1 +1.195141000E3,5.278015326E1 +1.195431000E3,4.949576105E1 +1.195801000E3,5.244682833E1 +1.196076000E3,5.508575727E1 +1.196371000E3,5.161802747E1 +1.196603000E3,5.716896987E1 +1.196858000E3,5.210002974E1 +1.197207000E3,5.483594793E1 +1.197503000E3,5.204828926E1 +1.197774000E3,5.339169315E1 +1.198054000E3,4.934781945E1 +1.198312000E3,5.918797425E1 +1.198559000E3,5.025254784E1 +1.198808000E3,5.317746302E1 +1.199152000E3,5.656715516E1 +1.199464000E3,5.448426177E1 +1.199717000E3,5.419526565E1 +1.199961000E3,5.304156540E1 +1.200219000E3,4.961182292E1 +1.200480000E3,5.259766625E1 +1.200730000E3,5.295115767E1 +1.201029000E3,5.365389524E1 +1.201288000E3,5.465027972E1 +1.201538000E3,5.131261505E1 +1.201807000E3,5.767453751E1 +1.202112000E3,5.316006082E1 +1.202485000E3,5.263333972E1 +1.202739000E3,4.966297173E1 +1.203041000E3,5.282706501E1 +1.203300000E3,4.950274237E1 +1.203539000E3,4.377779375E1 +1.203832000E3,5.274682795E1 +1.204077000E3,5.348405653E1 +1.204320000E3,5.647600154E1 +1.204615000E3,4.835002395E1 +1.204854000E3,4.440243109E1 +1.205149000E3,4.673035253E1 +1.205410000E3,4.901106802E1 +1.205666000E3,5.311033159E1 +1.205952000E3,5.020567211E1 +1.206248000E3,5.046889058E1 +1.206545000E3,6.150607502E1 +1.206779000E3,5.260331634E1 +1.207093000E3,5.183291791E1 +1.207367000E3,4.957331060E1 +1.207610000E3,5.139200370E1 +1.207857000E3,5.005726187E1 +1.208158000E3,4.979521937E1 +1.208398000E3,5.178137337E1 +1.208738000E3,4.632694184E1 +1.208994000E3,4.836915777E1 +1.209279000E3,4.869228435E1 +1.209528000E3,5.096507040E1 +1.209784000E3,4.718590489E1 +1.210053000E3,4.835967114E1 +1.210281000E3,4.725223201E1 +1.210542000E3,5.172958855E1 +1.210823000E3,5.546336112E1 +1.211051000E3,5.448218663E1 +1.211300000E3,5.371995163E1 +1.211551000E3,4.887559574E1 +1.211926000E3,4.975732945E1 +1.212205000E3,5.041543230E1 +1.212482000E3,4.863959509E1 +1.212730000E3,5.047232348E1 +1.212990000E3,4.824384094E1 +1.213232000E3,5.039377586E1 +1.213493000E3,4.517891187E1 +1.213814000E3,4.686032989E1 +1.214062000E3,4.852263494E1 +1.214337000E3,4.897277606E1 +1.214586000E3,4.662047985E1 +1.214832000E3,5.483925472E1 +1.215143000E3,5.677489998E1 +1.215372000E3,5.470688254E1 +1.215664000E3,5.408747991E1 +1.215962000E3,5.167832591E1 +1.216227000E3,5.463116224E1 +1.216504000E3,5.335564969E1 +1.216747000E3,4.832376612E1 +1.216996000E3,4.918538596E1 +1.217306000E3,5.329611015E1 +1.217618000E3,5.364881155E1 +1.217885000E3,5.087209115E1 +1.218149000E3,4.967310650E1 +1.218497000E3,4.842689624E1 +1.218801000E3,5.442588779E1 +1.219043000E3,5.338467746E1 +1.219349000E3,5.187371665E1 +1.219600000E3,4.992515182E1 +1.219883000E3,5.205809257E1 +1.220161000E3,5.374364962E1 +1.220471000E3,5.145920034E1 +1.220752000E3,5.112774200E1 +1.221009000E3,4.969936214E1 +1.221258000E3,4.906585252E1 +1.221519000E3,4.971022706E1 +1.221873000E3,5.039216656E1 +1.222125000E3,4.735018859E1 +1.222388000E3,5.025223930E1 +1.222647000E3,5.349102952E1 +1.222903000E3,5.894430216E1 +1.223210000E3,5.133834742E1 +1.223464000E3,5.378681025E1 +1.223708000E3,5.646161983E1 +1.223949000E3,5.127610878E1 +1.224189000E3,5.295211205E1 +1.224441000E3,5.074229414E1 +1.224698000E3,5.428527885E1 +1.225064000E3,6.064230054E1 +1.225333000E3,5.545461106E1 +1.225591000E3,5.085263163E1 +1.225847000E3,4.867332677E1 +1.226137000E3,4.828036819E1 +1.226394000E3,5.187031217E1 +1.226668000E3,4.691949774E1 +1.226931000E3,4.605300024E1 +1.227219000E3,4.319091646E1 +1.227493000E3,4.827268256E1 +1.227791000E3,4.873371181E1 +1.228031000E3,4.895629331E1 +1.228388000E3,4.831306026E1 +1.228651000E3,5.150144778E1 +1.228942000E3,5.210555115E1 +1.229190000E3,4.868630793E1 +1.229442000E3,5.072280558E1 +1.229686000E3,5.520857657E1 +1.229933000E3,5.597505745E1 +1.230228000E3,5.309096620E1 +1.230467000E3,5.340491117E1 +1.230765000E3,4.966814228E1 +1.231012000E3,4.811713105E1 +1.231316000E3,5.037869561E1 +1.231666000E3,4.768651081E1 +1.231948000E3,4.577834304E1 +1.232207000E3,4.455407567E1 +1.232510000E3,5.091422235E1 +1.232802000E3,4.990562511E1 +1.233047000E3,5.178152081E1 +1.233344000E3,5.312014577E1 +1.233592000E3,5.002236071E1 +1.233892000E3,5.158473192E1 +1.234173000E3,4.692863129E1 +1.234463000E3,4.643331531E1 +1.234792000E3,4.659156592E1 +1.235060000E3,4.662718910E1 +1.235313000E3,5.204491267E1 +1.235577000E3,5.165973487E1 +1.235837000E3,4.753691687E1 +1.236124000E3,5.179615379E1 +1.236401000E3,4.807409380E1 +1.236654000E3,5.474790946E1 +1.236923000E3,4.946475170E1 +1.237180000E3,4.949471083E1 +1.237426000E3,4.669168363E1 +1.237743000E3,5.529942944E1 +1.238061000E3,5.997488643E1 +1.238363000E3,5.302222406E1 +1.238611000E3,5.022506453E1 +1.238856000E3,4.864145193E1 +1.239102000E3,5.299123845E1 +1.239357000E3,4.682866815E1 +1.239657000E3,4.770894983E1 +1.239902000E3,4.813746372E1 +1.240150000E3,4.571771059E1 +1.240465000E3,5.354012247E1 +1.240765000E3,5.830707734E1 +1.241013000E3,5.483189048E1 +1.241344000E3,5.157405593E1 +1.241606000E3,5.072581437E1 +1.241868000E3,5.137979859E1 +1.242133000E3,4.849261303E1 +1.242396000E3,5.556107710E1 +1.242656000E3,4.958779284E1 +1.242959000E3,5.301548021E1 +1.243232000E3,5.475621292E1 +1.243501000E3,5.660789219E1 +1.243755000E3,5.350018163E1 +1.244010000E3,5.415674835E1 +1.244349000E3,5.699979568E1 +1.244717000E3,5.660044844E1 +1.245015000E3,5.808533709E1 +1.245259000E3,5.881859790E1 +1.245558000E3,5.728882886E1 +1.245808000E3,6.044308225E1 +1.246079000E3,5.893900513E1 +1.246326000E3,5.279872381E1 +1.246637000E3,5.769196864E1 +1.246935000E3,5.963088900E1 +1.247181000E3,5.367341836E1 +1.247508000E3,4.963645506E1 +1.247848000E3,5.265770489E1 +1.248115000E3,5.355743381E1 +1.248359000E3,4.891015342E1 +1.248659000E3,4.819353582E1 +1.248902000E3,4.966403220E1 +1.249199000E3,4.977495696E1 +1.249449000E3,5.715212626E1 +1.249708000E3,5.458337902E1 +1.249983000E3,4.910795823E1 +1.250282000E3,5.184902745E1 +1.250527000E3,5.416053460E1 +1.250777000E3,5.320773170E1 +1.251084000E3,5.422274265E1 +1.251342000E3,5.429456299E1 +1.251602000E3,5.910733722E1 +1.251866000E3,5.226490816E1 +1.252178000E3,5.191466859E1 +1.252452000E3,5.143339371E1 +1.252681000E3,5.066846779E1 +1.252975000E3,4.928639562E1 +1.253256000E3,4.916995298E1 +1.253528000E3,5.115941927E1 +1.253816000E3,4.850268402E1 +1.254063000E3,5.682920937E1 +1.254418000E3,5.583927157E1 +1.254700000E3,5.243405901E1 +1.254947000E3,5.411796563E1 +1.255215000E3,5.538314624E1 +1.255487000E3,5.447026824E1 +1.255748000E3,5.115232974E1 +1.256046000E3,5.273125350E1 +1.256281000E3,5.501639825E1 +1.256559000E3,5.470702619E1 +1.256867000E3,5.330168249E1 +1.257116000E3,5.680033697E1 +1.257361000E3,5.088137081E1 +1.257690000E3,4.771044205E1 +1.257935000E3,5.556188303E1 +1.258189000E3,5.821474305E1 +1.258460000E3,5.913083175E1 +1.258757000E3,5.624840253E1 +1.259001000E3,5.575040009E1 +1.259294000E3,5.295140054E1 +1.259581000E3,5.547885633E1 +1.259831000E3,5.659634167E1 +1.260084000E3,5.552607398E1 +1.260378000E3,5.399987136E1 +1.260676000E3,5.741946227E1 +1.260997000E3,5.622829253E1 +1.261272000E3,5.638519080E1 +1.261569000E3,5.222122782E1 +1.261810000E3,5.168558616E1 +1.262055000E3,5.937417075E1 +1.262351000E3,5.419990938E1 +1.262597000E3,5.469291977E1 +1.262893000E3,5.501007253E1 +1.263142000E3,5.356116387E1 +1.263421000E3,5.643294047E1 +1.263644000E3,5.627927149E1 +1.263964000E3,5.547827797E1 +1.264255000E3,5.434029164E1 +1.264552000E3,5.355134450E1 +1.264791000E3,5.268456483E1 +1.265090000E3,5.304298782E1 +1.265342000E3,5.292557941E1 +1.265637000E3,5.267823535E1 +1.265885000E3,5.076475521E1 +1.266186000E3,5.470463807E1 +1.266480000E3,5.369531663E1 +1.266727000E3,5.321314382E1 +1.267074000E3,5.430022488E1 +1.267386000E3,5.498366079E1 +1.267650000E3,5.373765381E1 +1.267926000E3,5.631680810E1 +1.268156000E3,5.314598601E1 +1.268459000E3,5.446778700E1 +1.268718000E3,5.461487175E1 +1.269029000E3,4.723979401E1 +1.269322000E3,5.050485841E1 +1.269602000E3,5.263446338E1 +1.269914000E3,5.195043172E1 +1.270180000E3,5.361139844E1 +1.270542000E3,5.127785292E1 +1.270796000E3,5.111084292E1 +1.271061000E3,5.030178225E1 +1.271329000E3,4.978955516E1 +1.271616000E3,5.398913319E1 +1.271862000E3,5.537806166E1 +1.272155000E3,5.301545016E1 +1.272407000E3,5.450597504E1 +1.272651000E3,5.090153644E1 +1.272906000E3,5.335437953E1 +1.273148000E3,4.673762491E1 +1.273392000E3,5.062539325E1 +1.273710000E3,5.110756444E1 +1.273960000E3,5.466659884E1 +1.274217000E3,5.158121780E1 +1.274511000E3,5.575560452E1 +1.274759000E3,5.536976579E1 +1.275054000E3,5.425250328E1 +1.275298000E3,5.448034930E1 +1.275544000E3,5.185016662E1 +1.275828000E3,5.206320816E1 +1.276126000E3,5.118466074E1 +1.276376000E3,4.943928704E1 +1.276707000E3,5.090592254E1 +1.276972000E3,5.767487174E1 +1.277251000E3,5.481331862E1 +1.277544000E3,5.385854096E1 +1.277810000E3,5.179333541E1 +1.278097000E3,5.161992279E1 +1.278344000E3,5.248655937E1 +1.278657000E3,5.064236034E1 +1.278927000E3,4.915402835E1 +1.279197000E3,5.321156971E1 +1.279471000E3,5.438812541E1 +1.279734000E3,5.482588411E1 +1.280065000E3,5.157318203E1 +1.280296000E3,5.173449962E1 +1.280546000E3,5.465953878E1 +1.280843000E3,5.457680704E1 +1.281077000E3,5.562152963E1 +1.281325000E3,5.460406982E1 +1.281570000E3,5.232421403E1 +1.281870000E3,5.207576719E1 +1.282135000E3,4.968186040E1 +1.282378000E3,5.237915347E1 +1.282628000E3,4.745539727E1 +1.282877000E3,5.255989147E1 +1.283195000E3,5.301690658E1 +1.283467000E3,5.283539029E1 +1.283717000E3,5.083105477E1 +1.283978000E3,4.559322742E1 +1.284235000E3,4.934435088E1 +1.284538000E3,5.265118466E1 +1.284812000E3,5.302155906E1 +1.285045000E3,5.294725202E1 +1.285352000E3,5.129236762E1 +1.285646000E3,5.402858483E1 +1.285898000E3,5.434527110E1 +1.286189000E3,5.525625388E1 +1.286515000E3,5.653073998E1 +1.286819000E3,5.704731902E1 +1.287101000E3,5.310035962E1 +1.287387000E3,5.474072190E1 +1.287649000E3,5.496979063E1 +1.287925000E3,5.528941101E1 +1.288193000E3,5.394330028E1 +1.288492000E3,4.829171318E1 +1.288740000E3,5.076324605E1 +1.289004000E3,4.673843249E1 +1.289280000E3,5.345749476E1 +1.289584000E3,4.955238815E1 +1.289923000E3,5.268555513E1 +1.290206000E3,5.092762320E1 +1.290445000E3,5.180504716E1 +1.290779000E3,5.421996562E1 +1.291081000E3,5.408565728E1 +1.291322000E3,5.466627749E1 +1.291622000E3,5.247549140E1 +1.291870000E3,5.438915347E1 +1.292125000E3,5.526358440E1 +1.292428000E3,5.407200655E1 +1.292723000E3,5.160593410E1 +1.293035000E3,5.231731426E1 +1.293342000E3,5.126765219E1 +1.293626000E3,4.802016847E1 +1.293922000E3,5.428603515E1 +1.294199000E3,5.305841291E1 +1.294451000E3,5.676250586E1 +1.294738000E3,5.921971496E1 +1.295005000E3,5.812051865E1 +1.295266000E3,5.671365947E1 +1.295512000E3,5.389157640E1 +1.295809000E3,5.417883641E1 +1.296087000E3,5.169085532E1 +1.296408000E3,5.027989141E1 +1.296704000E3,5.801273246E1 +1.296951000E3,5.777618357E1 +1.297241000E3,5.598217178E1 +1.297547000E3,5.590671112E1 +1.297806000E3,6.302454961E1 +1.298073000E3,5.716944646E1 +1.298330000E3,5.693666329E1 +1.298591000E3,5.374930006E1 +1.298851000E3,5.170089530E1 +1.299100000E3,6.243829367E1 +1.299340000E3,5.522680485E1 +1.299673000E3,5.451288060E1 +1.299933000E3,5.720613947E1 +1.300193000E3,5.131457759E1 +1.300510000E3,5.593393786E1 +1.300810000E3,5.344184529E1 +1.301099000E3,5.432320381E1 +1.301355000E3,5.294046944E1 +1.301602000E3,5.330691828E1 +1.301911000E3,4.899471979E1 +1.302175000E3,5.054546621E1 +1.302420000E3,4.914598102E1 +1.302706000E3,5.757950400E1 +1.303045000E3,5.798603958E1 +1.303343000E3,5.685278830E1 +1.303584000E3,5.272645619E1 +1.303869000E3,5.576083132E1 +1.304169000E3,5.311655900E1 +1.304414000E3,5.297304035E1 +1.304724000E3,6.119658997E1 +1.304998000E3,5.921259630E1 +1.305275000E3,5.974785927E1 +1.305567000E3,5.829108198E1 +1.305799000E3,5.656256791E1 +1.306151000E3,5.263150293E1 +1.306475000E3,5.719715846E1 +1.306754000E3,5.746813017E1 +1.307020000E3,6.063794361E1 +1.307320000E3,5.945639283E1 +1.307570000E3,5.898495898E1 +1.307856000E3,5.345744690E1 +1.308127000E3,5.882374416E1 +1.308390000E3,5.704844280E1 +1.308660000E3,6.230218860E1 +1.308982000E3,5.794977886E1 +1.309252000E3,5.609480230E1 +1.309620000E3,5.439173238E1 +1.309924000E3,5.804315704E1 +1.310253000E3,5.898090143E1 +1.310510000E3,5.933785859E1 +1.310826000E3,5.484966867E1 +1.311077000E3,5.841635068E1 +1.311358000E3,5.536029260E1 +1.311601000E3,5.555523834E1 +1.311895000E3,5.637714479E1 +1.312195000E3,5.253312652E1 +1.312445000E3,5.377927694E1 +1.312696000E3,5.757954833E1 +1.313038000E3,5.500733438E1 +1.313282000E3,5.367385274E1 +1.313558000E3,5.610715122E1 +1.313797000E3,5.528556803E1 +1.314063000E3,5.884958532E1 +1.314412000E3,5.458036035E1 +1.314671000E3,5.765344335E1 +1.314945000E3,5.139756723E1 +1.315223000E3,5.546002517E1 +1.315503000E3,5.608276603E1 +1.315733000E3,5.719791479E1 +1.315986000E3,5.413888898E1 +1.316329000E3,5.789500166E1 +1.316579000E3,5.404086097E1 +1.316819000E3,6.021843554E1 +1.317067000E3,5.929690830E1 +1.317365000E3,6.066063258E1 +1.317666000E3,5.465341745E1 +1.317917000E3,5.115712079E1 +1.318169000E3,4.986479689E1 +1.318470000E3,5.351977371E1 +1.318716000E3,5.614277654E1 +1.318987000E3,5.824140620E1 +1.319280000E3,5.863858703E1 +1.319646000E3,5.908977231E1 +1.319902000E3,5.867594430E1 +1.320142000E3,5.256185028E1 +1.320379000E3,5.916248935E1 +1.320672000E3,5.829134786E1 +1.320910000E3,5.729121950E1 +1.321203000E3,5.817253701E1 +1.321434000E3,5.958327052E1 +1.321726000E3,6.109571062E1 +1.321963000E3,6.309400740E1 +1.322263000E3,6.381431561E1 +1.322586000E3,6.124594205E1 +1.322839000E3,6.120886427E1 +1.323128000E3,5.624496406E1 +1.323377000E3,6.205845751E1 +1.323676000E3,6.248705287E1 +1.323968000E3,6.259357777E1 +1.324217000E3,6.168308921E1 +1.324496000E3,6.128297543E1 +1.324731000E3,5.975404370E1 +1.325024000E3,6.147148959E1 +1.325261000E3,6.101142333E1 +1.325573000E3,5.682124874E1 +1.325854000E3,5.869490284E1 +1.326149000E3,5.646663249E1 +1.326392000E3,5.662110608E1 +1.326643000E3,5.067702480E1 +1.326984000E3,5.759763927E1 +1.327264000E3,5.613584630E1 +1.327489000E3,5.826097161E1 +1.327735000E3,5.843702691E1 +1.328012000E3,5.352317094E1 +1.328253000E3,5.737674501E1 +1.328545000E3,5.736811408E1 +1.328911000E3,5.477233671E1 +1.329158000E3,5.481436604E1 +1.329403000E3,4.974322484E1 +1.329645000E3,5.490077996E1 +1.329890000E3,4.870505425E1 +1.330144000E3,4.955972956E1 +1.330428000E3,5.470042727E1 +1.330734000E3,5.618884112E1 +1.331026000E3,5.238151215E1 +1.331265000E3,5.344428978E1 +1.331515000E3,5.051963956E1 +1.331772000E3,5.068574448E1 +1.332120000E3,5.754233113E1 +1.332409000E3,5.498832674E1 +1.332740000E3,5.245036701E1 +1.333034000E3,5.885934606E1 +1.333286000E3,5.644915657E1 +1.333540000E3,5.532779852E1 +1.333784000E3,5.694511409E1 +1.334028000E3,5.553937724E1 +1.334302000E3,5.308286554E1 +1.334615000E3,5.140154995E1 +1.334876000E3,5.045296543E1 +1.335187000E3,5.631993217E1 +1.335451000E3,5.435091016E1 +1.335722000E3,5.624357652E1 +1.335986000E3,5.791043400E1 +1.336271000E3,5.847603086E1 +1.336545000E3,5.757219882E1 +1.336794000E3,6.070042624E1 +1.337072000E3,5.247827017E1 +1.337340000E3,5.208145921E1 +1.337609000E3,6.026756153E1 +1.337870000E3,6.012826199E1 +1.338134000E3,5.465450317E1 +1.338408000E3,5.768658418E1 +1.338755000E3,5.542991210E1 +1.339019000E3,5.279974580E1 +1.339289000E3,4.966927449E1 +1.339556000E3,4.563713389E1 +1.339804000E3,4.961972315E1 +1.340056000E3,5.287436972E1 +1.340316000E3,5.318950925E1 +1.340586000E3,5.037908496E1 +1.340881000E3,5.345184090E1 +1.341116000E3,5.016784238E1 +1.341407000E3,5.799295151E1 +1.341694000E3,5.875659808E1 +1.342051000E3,5.666657228E1 +1.342345000E3,5.241270038E1 +1.342638000E3,5.754780266E1 +1.342875000E3,5.669750570E1 +1.343177000E3,5.541629106E1 +1.343432000E3,5.556249818E1 +1.343726000E3,5.603182587E1 +1.343969000E3,5.961525777E1 +1.344257000E3,5.915223521E1 +1.344498000E3,5.820677933E1 +1.344777000E3,5.815031326E1 +1.345094000E3,5.733094423E1 +1.345363000E3,5.538469317E1 +1.345622000E3,6.270903439E1 +1.345877000E3,5.551461514E1 +1.346148000E3,5.750063996E1 +1.346395000E3,5.473739655E1 +1.346676000E3,5.131350753E1 +1.346958000E3,5.072615719E1 +1.347258000E3,4.882711207E1 +1.347518000E3,5.273988371E1 +1.347784000E3,6.269937361E1 +1.348040000E3,6.058958657E1 +1.348391000E3,5.894445662E1 +1.348716000E3,5.683213923E1 +1.348984000E3,5.875140523E1 +1.349236000E3,5.263650529E1 +1.349491000E3,4.630287352E1 +1.349847000E3,5.742006494E1 +1.350115000E3,6.486179330E1 +1.350358000E3,5.963871460E1 +1.350612000E3,5.220281373E1 +1.350868000E3,5.825229613E1 +1.351125000E3,5.822075100E1 +1.351374000E3,5.487419692E1 +1.351666000E3,5.461361208E1 +1.351934000E3,5.384511910E1 +1.352185000E3,5.782109838E1 +1.352440000E3,5.156901690E1 +1.352688000E3,5.262530942E1 +1.352990000E3,5.827406705E1 +1.353265000E3,6.164230870E1 +1.353493000E3,5.939319367E1 +1.353769000E3,5.491407227E1 +1.353989000E3,5.363390940E1 +1.354236000E3,5.108497673E1 +1.354516000E3,6.129017752E1 +1.354836000E3,5.594784457E1 +1.355095000E3,5.172378417E1 +1.355422000E3,5.975901259E1 +1.355685000E3,5.720857994E1 +1.355941000E3,5.600667557E1 +1.356197000E3,5.471836828E1 +1.356478000E3,5.319452565E1 +1.356745000E3,5.296912594E1 +1.357013000E3,5.811625635E1 +1.357280000E3,5.430511038E1 +1.357577000E3,5.277700001E1 +1.357824000E3,5.616769978E1 +1.358135000E3,5.406396803E1 +1.358401000E3,4.910300122E1 +1.358643000E3,5.077236009E1 +1.358892000E3,5.530877446E1 +1.359206000E3,5.787482939E1 +1.359485000E3,5.846197249E1 +1.359760000E3,6.103303991E1 +1.360055000E3,6.092009186E1 +1.360296000E3,5.979156049E1 +1.360590000E3,6.049263298E1 +1.360828000E3,5.895545308E1 +1.361114000E3,5.611946421E1 +1.361473000E3,5.480295831E1 +1.361726000E3,5.397626184E1 +1.361972000E3,5.443193027E1 +1.362314000E3,5.572591927E1 +1.362560000E3,5.224616115E1 +1.362808000E3,5.244486023E1 +1.363061000E3,5.179430466E1 +1.363307000E3,5.228822629E1 +1.363555000E3,5.248152719E1 +1.363850000E3,5.310816898E1 +1.364115000E3,5.586433987E1 +1.364397000E3,5.735023043E1 +1.364703000E3,6.002405491E1 +1.364950000E3,5.692273216E1 +1.365192000E3,5.941823705E1 +1.365459000E3,5.316793659E1 +1.365709000E3,5.869878442E1 +1.365953000E3,5.756526572E1 +1.366216000E3,5.687574379E1 +1.366491000E3,5.232478004E1 +1.366744000E3,5.424491879E1 +1.367001000E3,5.235481979E1 +1.367305000E3,5.164783122E1 +1.367588000E3,4.924997634E1 +1.367934000E3,4.924339558E1 +1.368196000E3,5.793398832E1 +1.368473000E3,5.529211657E1 +1.368719000E3,5.120874356E1 +1.368963000E3,5.470742612E1 +1.369285000E3,5.560989240E1 +1.369528000E3,5.197646059E1 +1.369822000E3,5.152328490E1 +1.370111000E3,5.791930576E1 +1.370416000E3,5.368811562E1 +1.370672000E3,5.769124019E1 +1.370919000E3,5.333549653E1 +1.371292000E3,5.847056292E1 +1.371551000E3,5.642894477E1 +1.371803000E3,5.817537921E1 +1.372074000E3,5.885584750E1 +1.372335000E3,5.395474736E1 +1.372602000E3,5.211537518E1 +1.372880000E3,4.924374923E1 +1.373126000E3,4.882665291E1 +1.373379000E3,5.483140316E1 +1.373636000E3,5.380197532E1 +1.373915000E3,5.629967483E1 +1.374251000E3,5.773524892E1 +1.374636000E3,6.271253195E1 +1.374894000E3,5.870587143E1 +1.375125000E3,5.496954916E1 +1.375369000E3,5.621931219E1 +1.375641000E3,5.700323462E1 +1.375912000E3,5.808968856E1 +1.376161000E3,5.697587873E1 +1.376437000E3,5.739415600E1 +1.376687000E3,5.874614285E1 +1.376941000E3,5.855325473E1 +1.377252000E3,5.287324040E1 +1.377495000E3,5.331405656E1 +1.377862000E3,5.163612814E1 +1.378109000E3,6.003152631E1 +1.378372000E3,6.448039849E1 +1.378641000E3,6.226927373E1 +1.378912000E3,6.355904277E1 +1.379208000E3,6.121718755E1 +1.379463000E3,6.371699462E1 +1.379738000E3,5.774542440E1 +1.380076000E3,5.579766677E1 +1.380318000E3,5.520595979E1 +1.380614000E3,5.395000262E1 +1.380855000E3,5.263752401E1 +1.381221000E3,5.267030150E1 +1.381492000E3,5.304251562E1 +1.381793000E3,4.959737221E1 +1.382100000E3,5.549829026E1 +1.382347000E3,5.821584994E1 +1.382642000E3,5.861199323E1 +1.382905000E3,5.256382895E1 +1.383164000E3,5.491877459E1 +1.383443000E3,5.644995893E1 +1.383702000E3,5.411249990E1 +1.383954000E3,5.324738213E1 +1.384305000E3,5.625052210E1 +1.384532000E3,6.070474662E1 +1.384789000E3,5.237062704E1 +1.385074000E3,5.442107865E1 +1.385361000E3,6.017483878E1 +1.385605000E3,6.237555822E1 +1.385869000E3,5.605951782E1 +1.386126000E3,6.511151133E1 +1.386382000E3,5.571785683E1 +1.386696000E3,5.398201636E1 +1.386954000E3,5.323734283E1 +1.387264000E3,5.635686029E1 +1.387623000E3,5.701357512E1 +1.387874000E3,5.632095063E1 +1.388187000E3,5.288354031E1 +1.388477000E3,5.152350906E1 +1.388761000E3,5.130627857E1 +1.388982000E3,4.918436870E1 +1.389239000E3,5.567775637E1 +1.389545000E3,5.465238648E1 +1.389786000E3,5.003079725E1 +1.390027000E3,5.504486936E1 +1.390282000E3,5.947272344E1 +1.390539000E3,6.106137952E1 +1.390892000E3,5.985290475E1 +1.391203000E3,5.500825546E1 +1.391507000E3,5.157102239E1 +1.391806000E3,5.517662265E1 +1.392108000E3,5.349243854E1 +1.392411000E3,5.386652866E1 +1.392707000E3,5.258839734E1 +1.392973000E3,5.376638351E1 +1.393221000E3,5.619475880E1 +1.393480000E3,5.846509931E1 +1.393767000E3,6.504346680E1 +1.394122000E3,5.865804348E1 +1.394392000E3,5.055217311E1 +1.394673000E3,4.837306759E1 +1.394931000E3,5.564689750E1 +1.395193000E3,5.416088817E1 +1.395489000E3,5.481584764E1 +1.395781000E3,5.356143065E1 +1.396078000E3,5.074158934E1 +1.396313000E3,5.177896206E1 +1.396618000E3,5.670327312E1 +1.396914000E3,6.043149132E1 +1.397246000E3,5.875453471E1 +1.397559000E3,5.725772305E1 +1.397842000E3,5.610169288E1 +1.398092000E3,6.098127982E1 +1.398354000E3,5.385330985E1 +1.398611000E3,5.345613584E1 +1.398873000E3,6.183897473E1 +1.399135000E3,5.898294985E1 +1.399399000E3,5.644599073E1 +1.399662000E3,6.288338842E1 +1.399923000E3,5.844786233E1 +1.400178000E3,6.145207907E1 +1.400438000E3,5.797678971E1 +1.400786000E3,5.805590691E1 +1.401082000E3,5.956739883E1 +1.401323000E3,5.537900496E1 +1.401618000E3,5.084213917E1 +1.401871000E3,4.807017206E1 +1.402118000E3,5.545233073E1 +1.402411000E3,5.516036366E1 +1.402644000E3,5.413431379E1 +1.402920000E3,5.388857626E1 +1.403209000E3,5.292068844E1 +1.403479000E3,5.775211983E1 +1.403718000E3,5.117484548E1 +1.404045000E3,5.912447648E1 +1.404295000E3,5.591921957E1 +1.404568000E3,5.565028551E1 +1.404828000E3,5.013398992E1 +1.405122000E3,5.465164253E1 +1.405364000E3,5.305211462E1 +1.405620000E3,5.755171154E1 +1.405929000E3,6.007655449E1 +1.406174000E3,5.899920387E1 +1.406463000E3,5.970773629E1 +1.406720000E3,5.770443308E1 +1.407009000E3,5.521297881E1 +1.407407000E3,5.604277064E1 +1.407677000E3,5.646208540E1 +1.407969000E3,4.906112006E1 +1.408239000E3,5.193830101E1 +1.408558000E3,4.835599484E1 +1.408830000E3,4.864558507E1 +1.409087000E3,5.566138381E1 +1.409349000E3,5.240816417E1 +1.409604000E3,4.366169359E1 +1.409843000E3,4.924613485E1 +1.410167000E3,5.289541091E1 +1.410462000E3,5.429333459E1 +1.410857000E3,5.232803186E1 +1.411115000E3,5.279391543E1 +1.411388000E3,5.698112108E1 +1.411689000E3,4.954635028E1 +1.411940000E3,5.347151392E1 +1.412202000E3,5.431542928E1 +1.412461000E3,5.708654506E1 +1.412712000E3,5.999867781E1 +1.412972000E3,5.836713300E1 +1.413243000E3,5.662529411E1 +1.413547000E3,5.760118844E1 +1.413790000E3,5.272334048E1 +1.414155000E3,5.585703000E1 +1.414407000E3,5.277217169E1 +1.414666000E3,5.575617717E1 +1.414970000E3,5.588142009E1 +1.415263000E3,5.043609445E1 +1.415519000E3,5.366091219E1 +1.415818000E3,6.729065738E1 +1.416082000E3,5.454700058E1 +1.416357000E3,5.542836481E1 +1.416608000E3,6.150002805E1 +1.416870000E3,5.918799699E1 +1.417164000E3,5.739551304E1 +1.417548000E3,5.312046747E1 +1.417864000E3,5.735989692E1 +1.418111000E3,5.463708503E1 +1.418368000E3,5.616594485E1 +1.418622000E3,5.674613857E1 +1.418880000E3,5.393284238E1 +1.419178000E3,5.477989298E1 +1.419414000E3,5.673628135E1 +1.419692000E3,5.246670124E1 +1.419935000E3,5.929492524E1 +1.420173000E3,5.718550468E1 +1.420417000E3,5.597503360E1 +1.420745000E3,5.209811810E1 +1.421016000E3,5.108820023E1 +1.421271000E3,5.704928631E1 +1.421524000E3,5.534619134E1 +1.421787000E3,5.298830069E1 +1.422048000E3,5.357926773E1 +1.422324000E3,5.150193558E1 +1.422590000E3,5.236977243E1 +1.422860000E3,5.598534631E1 +1.423111000E3,5.804712890E1 +1.423360000E3,5.584477369E1 +1.423617000E3,6.166819052E1 +1.423956000E3,6.217862533E1 +1.424239000E3,6.474885215E1 +1.424493000E3,6.561094566E1 +1.424771000E3,6.624921272E1 +1.425013000E3,6.269332683E1 +1.425310000E3,6.427501900E1 +1.425550000E3,6.406421996E1 +1.425806000E3,6.561696377E1 +1.426124000E3,5.757984813E1 +1.426392000E3,6.467113265E1 +1.426661000E3,6.110360998E1 +1.426971000E3,6.257935575E1 +1.427325000E3,6.059948571E1 +1.427600000E3,6.060080967E1 +1.427858000E3,6.129065918E1 +1.428157000E3,6.869907238E1 +1.428403000E3,6.216021300E1 +1.428668000E3,6.028715826E1 +1.428917000E3,5.215970407E1 +1.429175000E3,5.348756082E1 +1.429445000E3,5.866879342E1 +1.429775000E3,5.422412762E1 +1.430077000E3,5.967912654E1 +1.430370000E3,6.053958419E1 +1.430696000E3,5.642153628E1 +1.430959000E3,5.797803369E1 +1.431217000E3,5.265853131E1 +1.431545000E3,6.085541328E1 +1.431825000E3,6.579757863E1 +1.432095000E3,6.783858113E1 +1.432356000E3,6.680245969E1 +1.432609000E3,5.699539434E1 +1.432887000E3,5.495476405E1 +1.433146000E3,5.431336982E1 +1.433405000E3,5.468573805E1 +1.433768000E3,6.415525931E1 +1.434037000E3,5.996195649E1 +1.434305000E3,5.880144898E1 +1.434536000E3,5.062803370E1 +1.434794000E3,4.838886892E1 +1.435059000E3,4.852598648E1 +1.435348000E3,5.424758091E1 +1.435611000E3,6.028120001E1 +1.435845000E3,5.860165153E1 +1.436098000E3,5.820116177E1 +1.436348000E3,5.458976108E1 +1.436603000E3,5.748661459E1 +1.436983000E3,5.071157707E1 +1.437230000E3,5.187454119E1 +1.437505000E3,5.690962542E1 +1.437744000E3,5.898297949E1 +1.438006000E3,6.083548120E1 +1.438278000E3,4.929702369E1 +1.438556000E3,5.094464024E1 +1.438857000E3,5.451803318E1 +1.439157000E3,4.851675588E1 +1.439427000E3,4.781325912E1 +1.439724000E3,4.919544886E1 +1.439968000E3,4.662525194E1 +1.440374000E3,4.187537091E1 +1.440620000E3,5.083424523E1 +1.440895000E3,4.476479772E1 +1.441179000E3,5.236126827E1 +1.441495000E3,4.954212438E1 +1.441772000E3,5.444261950E1 +1.442048000E3,5.023278537E1 +1.442273000E3,4.640707667E1 +1.442557000E3,5.088583460E1 +1.442822000E3,5.041471443E1 +1.443067000E3,4.940152653E1 +1.443315000E3,4.834999124E1 +1.443550000E3,5.084173145E1 +1.443802000E3,4.674944421E1 +1.444118000E3,5.005548854E1 +1.444412000E3,4.880222753E1 +1.444695000E3,4.829349493E1 +1.444948000E3,4.815408858E1 +1.445231000E3,4.968297573E1 +1.445471000E3,5.263069989E1 +1.445763000E3,4.570389774E1 +1.446062000E3,4.674284816E1 +1.446364000E3,5.179136771E1 +1.446637000E3,5.007894257E1 +1.446884000E3,5.001285233E1 +1.447102000E3,5.063641057E1 +1.447373000E3,4.164946286E1 +1.447601000E3,3.981108666E1 +1.447894000E3,4.316358072E1 +1.448132000E3,5.465701871E1 +1.448431000E3,4.615144027E1 +1.448672000E3,4.353154230E1 +1.448965000E3,5.208221965E1 +1.449200000E3,5.530439334E1 +1.449496000E3,4.996075498E1 +1.449729000E3,5.218941020E1 +1.450060000E3,4.888890123E1 +1.450335000E3,5.030971329E1 +1.450629000E3,5.012870067E1 +1.450899000E3,4.847297804E1 +1.451151000E3,4.759762696E1 +1.451454000E3,4.978926902E1 +1.451751000E3,4.930919072E1 +1.452001000E3,5.004861581E1 +1.452285000E3,5.051309266E1 +1.452566000E3,4.810890055E1 +1.452826000E3,4.654354865E1 +1.453069000E3,4.761425190E1 +1.453369000E3,4.589508435E1 +1.453616000E3,4.954922405E1 +1.453886000E3,4.065983258E1 +1.454197000E3,4.220647307E1 +1.454513000E3,4.858310714E1 +1.454789000E3,5.196405012E1 +1.455012000E3,5.467685341E1 +1.455262000E3,5.753332593E1 +1.455513000E3,4.707036048E1 +1.455859000E3,3.942826471E1 +1.456237000E3,5.170062203E1 +1.456495000E3,6.022707597E1 +1.456743000E3,5.524301158E1 +1.456990000E3,5.482834451E1 +1.457257000E3,4.917995293E1 +1.457590000E3,4.739340640E1 +1.457831000E3,4.842051754E1 +1.458073000E3,6.166669432E1 +1.458329000E3,5.427876580E1 +1.458617000E3,4.896037674E1 +1.458889000E3,4.346397471E1 +1.459122000E3,4.481546196E1 +1.459424000E3,5.149740630E1 +1.459726000E3,4.614214660E1 +1.459975000E3,4.567227587E1 +1.460237000E3,5.348774305E1 +1.460488000E3,5.617792493E1 +1.460730000E3,5.122937085E1 +1.460971000E3,5.712815616E1 +1.461266000E3,5.592815325E1 +1.461504000E3,5.208026338E1 +1.461798000E3,5.368936290E1 +1.462033000E3,5.424431898E1 +1.462332000E3,5.229538114E1 +1.462686000E3,5.012562607E1 +1.462943000E3,5.517893002E1 +1.463292000E3,5.544440679E1 +1.463574000E3,5.195225561E1 +1.463851000E3,5.582804772E1 +1.464133000E3,5.163717454E1 +1.464392000E3,5.056978371E1 +1.464653000E3,5.085736348E1 +1.464931000E3,5.111025552E1 +1.465171000E3,5.008163028E1 +1.465468000E3,5.204681239E1 +1.465721000E3,4.873162615E1 +1.466070000E3,5.052420662E1 +1.466365000E3,5.115431116E1 +1.466626000E3,5.008089225E1 +1.466902000E3,5.455907242E1 +1.467123000E3,5.881328519E1 +1.467422000E3,5.654049662E1 +1.467665000E3,6.208900398E1 +1.467911000E3,5.573620080E1 +1.468210000E3,5.034178452E1 +1.468461000E3,4.644884091E1 +1.468716000E3,4.489036287E1 +1.469021000E3,4.555962209E1 +1.469437000E3,4.956164087E1 +1.469733000E3,5.014140659E1 +1.469995000E3,5.025508197E1 +1.470298000E3,4.976482928E1 +1.470552000E3,4.666552600E1 +1.470801000E3,5.164800320E1 +1.471107000E3,4.748865751E1 +1.471358000E3,5.068455306E1 +1.471623000E3,5.380657492E1 +1.471874000E3,4.918332364E1 +1.472155000E3,4.974368594E1 +1.472539000E3,5.519550202E1 +1.472795000E3,5.119649457E1 +1.473056000E3,5.406344748E1 +1.473370000E3,5.554928156E1 +1.473655000E3,5.458007948E1 +1.473895000E3,5.519923804E1 +1.474152000E3,5.580016483E1 +1.474437000E3,5.718813696E1 +1.474685000E3,5.734393611E1 +1.474960000E3,5.879862387E1 +1.475221000E3,5.602300215E1 +1.475474000E3,5.025640835E1 +1.475826000E3,5.543439402E1 +1.476071000E3,5.232164352E1 +1.476323000E3,5.898115961E1 +1.476584000E3,6.066467981E1 +1.476821000E3,5.071984472E1 +1.477123000E3,5.740447565E1 +1.477365000E3,5.959782608E1 +1.477662000E3,5.958620190E1 +1.477906000E3,5.753388342E1 +1.478144000E3,5.506848886E1 +1.478455000E3,5.769430513E1 +1.478723000E3,5.629679592E1 +1.478987000E3,5.649495967E1 +1.479262000E3,5.787253729E1 +1.479512000E3,5.216150167E1 +1.479813000E3,4.948302212E1 +1.480088000E3,5.080056078E1 +1.480342000E3,4.734041467E1 +1.480601000E3,4.440736689E1 +1.480866000E3,5.120725270E1 +1.481166000E3,5.053254929E1 +1.481466000E3,5.274685420E1 +1.481724000E3,5.071521067E1 +1.481973000E3,5.225995741E1 +1.482300000E3,5.133897759E1 +1.482575000E3,5.007250383E1 +1.482845000E3,5.042400131E1 +1.483101000E3,5.258901014E1 +1.483408000E3,5.618504625E1 +1.483668000E3,5.503349900E1 +1.483933000E3,4.974702245E1 +1.484194000E3,5.170781389E1 +1.484440000E3,5.072340799E1 +1.484707000E3,5.947536199E1 +1.485018000E3,5.467515596E1 +1.485306000E3,6.085614245E1 +1.485656000E3,5.990152864E1 +1.485935000E3,5.602550586E1 +1.486168000E3,5.561766537E1 +1.486422000E3,5.350876804E1 +1.486701000E3,5.699979875E1 +1.486960000E3,5.177464585E1 +1.487207000E3,5.249766501E1 +1.487486000E3,5.285366750E1 +1.487751000E3,5.316768095E1 +1.488002000E3,4.876639606E1 +1.488262000E3,5.179834313E1 +1.488516000E3,4.991892364E1 +1.488812000E3,5.156353661E1 +1.489125000E3,5.341434219E1 +1.489400000E3,5.426211096E1 +1.489675000E3,4.699672779E1 +1.489958000E3,5.361914521E1 +1.490219000E3,5.605827819E1 +1.490490000E3,5.089547448E1 +1.490772000E3,5.163564337E1 +1.491061000E3,5.841576784E1 +1.491309000E3,5.524417730E1 +1.491589000E3,5.450558122E1 +1.491873000E3,5.581032480E1 +1.492194000E3,5.802352567E1 +1.492448000E3,4.962366630E1 +1.492810000E3,5.873656508E1 +1.493058000E3,5.690804947E1 +1.493359000E3,5.262261274E1 +1.493674000E3,5.584655342E1 +1.493919000E3,5.542283425E1 +1.494163000E3,5.373884310E1 +1.494412000E3,5.084083433E1 +1.494678000E3,4.964027690E1 +1.494956000E3,5.125570040E1 +1.495204000E3,5.194895191E1 +1.495526000E3,4.961412488E1 +1.495784000E3,4.972405818E1 +1.496036000E3,4.777083448E1 +1.496283000E3,5.231556692E1 +1.496593000E3,5.894066851E1 +1.496842000E3,6.007182772E1 +1.497086000E3,6.003234807E1 +1.497358000E3,5.170627362E1 +1.497682000E3,5.564688341E1 +1.497937000E3,5.459086103E1 +1.498234000E3,5.654462748E1 +1.498530000E3,5.643601391E1 +1.498887000E3,5.593732695E1 +1.499182000E3,5.279859883E1 +1.499469000E3,5.063056157E1 +1.499723000E3,4.846330641E1 +1.499972000E3,5.696559719E1 +1.500236000E3,5.806291630E1 +1.500555000E3,5.485435177E1 +1.500851000E3,5.386376671E1 +1.501120000E3,5.529102258E1 +1.501400000E3,5.058415032E1 +1.501675000E3,5.420960743E1 +1.501928000E3,4.962388553E1 +1.502263000E3,5.167692375E1 +1.502567000E3,5.072695334E1 +1.502878000E3,5.319678523E1 +1.503119000E3,5.961199300E1 +1.503369000E3,5.299728366E1 +1.503631000E3,5.369404965E1 +1.503941000E3,5.426817134E1 +1.504209000E3,5.369336762E1 +1.504462000E3,5.246626497E1 +1.504724000E3,5.358557871E1 +1.505015000E3,4.957781391E1 +1.505279000E3,5.117668163E1 +1.505699000E3,5.216401891E1 +1.505963000E3,5.011348657E1 +1.506261000E3,5.259055540E1 +1.506507000E3,4.579432510E1 +1.506795000E3,4.877099475E1 +1.507032000E3,4.679595596E1 +1.507314000E3,5.136222565E1 +1.507549000E3,5.267101191E1 +1.507792000E3,5.244999525E1 +1.508074000E3,5.180561005E1 +1.508391000E3,5.030990700E1 +1.508607000E3,5.167226321E1 +1.508859000E3,5.218207738E1 +1.509151000E3,5.317725961E1 +1.509397000E3,5.318899610E1 +1.509689000E3,4.978257152E1 +1.509934000E3,5.032443800E1 +1.510228000E3,4.777293014E1 +1.510466000E3,4.646316587E1 +1.510767000E3,5.646850943E1 +1.511001000E3,5.638889819E1 +1.511293000E3,5.773758842E1 +1.511610000E3,5.580372922E1 +1.511900000E3,5.517502050E1 +1.512151000E3,5.684013484E1 +1.512393000E3,5.407249321E1 +1.512652000E3,5.725430710E1 +1.512902000E3,5.755876004E1 +1.513148000E3,5.492786930E1 +1.513404000E3,5.665177401E1 +1.513705000E3,5.675683028E1 +1.513957000E3,5.845897420E1 +1.514258000E3,5.334537973E1 +1.514488000E3,5.035361876E1 +1.514812000E3,4.886526824E1 +1.515059000E3,5.555156669E1 +1.515357000E3,5.401240780E1 +1.515600000E3,5.191330713E1 +1.515873000E3,5.158089375E1 +1.516102000E3,5.397456219E1 +1.516410000E3,5.205317520E1 +1.516679000E3,5.689433829E1 +1.516971000E3,5.397466306E1 +1.517230000E3,5.553699481E1 +1.517504000E3,5.550832571E1 +1.517763000E3,5.490604036E1 +1.518130000E3,5.129555301E1 +1.518403000E3,5.478479772E1 +1.518670000E3,5.687403653E1 +1.518921000E3,5.464295853E1 +1.519177000E3,5.713561839E1 +1.519461000E3,5.306473622E1 +1.519745000E3,5.320579073E1 +1.520002000E3,5.309385307E1 +1.520258000E3,5.058967996E1 +1.520552000E3,5.470724085E1 +1.520793000E3,5.303104936E1 +1.521156000E3,5.432496893E1 +1.521453000E3,5.594215604E1 +1.521721000E3,5.308545736E1 +1.521969000E3,5.327888421E1 +1.522220000E3,5.030915333E1 +1.522490000E3,5.230098434E1 +1.522776000E3,4.743827766E1 +1.523026000E3,5.464211349E1 +1.523327000E3,5.322537523E1 +1.523581000E3,5.154569729E1 +1.523826000E3,5.335950152E1 +1.524133000E3,5.482016506E1 +1.524417000E3,5.825411535E1 +1.524853000E3,5.879893849E1 +1.525179000E3,5.728744863E1 +1.525433000E3,5.737571640E1 +1.525696000E3,5.681107869E1 +1.525950000E3,5.695921586E1 +1.526210000E3,5.455429607E1 +1.526487000E3,5.808007225E1 +1.526729000E3,5.500512440E1 +1.527042000E3,5.476260812E1 +1.527339000E3,5.849962899E1 +1.527579000E3,5.719021529E1 +1.527910000E3,5.422226824E1 +1.528160000E3,5.266147572E1 +1.528411000E3,5.030747323E1 +1.528675000E3,5.057502492E1 +1.528920000E3,5.365292462E1 +1.529175000E3,5.444435151E1 +1.529423000E3,5.586906556E1 +1.529732000E3,5.808239082E1 +1.530030000E3,5.492304678E1 +1.530283000E3,5.727734117E1 +1.530542000E3,5.518682809E1 +1.530805000E3,5.838179726E1 +1.531133000E3,5.619103982E1 +1.531448000E3,5.705771680E1 +1.531738000E3,5.605732573E1 +1.531987000E3,5.497746164E1 +1.532293000E3,5.570350387E1 +1.532602000E3,5.687942595E1 +1.532873000E3,5.590365459E1 +1.533132000E3,5.379832162E1 +1.533387000E3,5.951317374E1 +1.533654000E3,5.728034638E1 +1.533915000E3,5.755019099E1 +1.534163000E3,5.625336618E1 +1.534512000E3,5.560455999E1 +1.534783000E3,5.186395468E1 +1.535086000E3,6.018952062E1 +1.535379000E3,5.360739703E1 +1.535619000E3,5.637744941E1 +1.535916000E3,5.710534601E1 +1.536153000E3,5.751101039E1 +1.536449000E3,5.888699469E1 +1.536688000E3,5.900809640E1 +1.536983000E3,5.539354346E1 +1.537218000E3,5.212761926E1 +1.537514000E3,6.113968309E1 +1.537773000E3,5.789795306E1 +1.538038000E3,6.065119472E1 +1.538356000E3,5.715251587E1 +1.538607000E3,5.728294892E1 +1.538911000E3,5.939537878E1 +1.539175000E3,5.879010449E1 +1.539417000E3,6.007594674E1 +1.539661000E3,5.983742076E1 +1.539908000E3,6.299497704E1 +1.540182000E3,6.042347696E1 +1.540457000E3,5.844914903E1 +1.540758000E3,5.775362746E1 +1.541037000E3,5.216165265E1 +1.541334000E3,5.255584969E1 +1.541593000E3,5.278098471E1 +1.541846000E3,5.581770981E1 +1.542092000E3,5.736301867E1 +1.542389000E3,5.733951694E1 +1.542623000E3,5.674705381E1 +1.542880000E3,5.506043774E1 +1.543125000E3,5.404728252E1 +1.543453000E3,5.428884791E1 +1.543732000E3,5.547580162E1 +1.544085000E3,5.471747417E1 +1.544346000E3,5.496243571E1 +1.544613000E3,5.288395526E1 +1.544860000E3,5.036194227E1 +1.545111000E3,5.124283852E1 +1.545413000E3,5.731432515E1 +1.545687000E3,5.663908688E1 +1.545955000E3,5.741659811E1 +1.546253000E3,5.084604561E1 +1.546502000E3,5.163330463E1 +1.546772000E3,4.777378739E1 +1.547025000E3,5.200725426E1 +1.547353000E3,5.049690945E1 +1.547625000E3,5.284766124E1 +1.547924000E3,5.396462244E1 +1.548148000E3,5.375524192E1 +1.548403000E3,5.670544075E1 +1.548716000E3,5.332369727E1 +1.548963000E3,5.544219871E1 +1.549238000E3,5.323430806E1 +1.549471000E3,5.180674965E1 +1.549727000E3,5.329467652E1 +1.550023000E3,5.080742485E1 +1.550310000E3,5.026906170E1 +1.550639000E3,5.582908231E1 +1.550905000E3,5.331150300E1 +1.551172000E3,5.186910180E1 +1.551471000E3,5.624561668E1 +1.551739000E3,5.555744845E1 +1.552012000E3,5.944044312E1 +1.552264000E3,6.002272858E1 +1.552531000E3,5.816546804E1 +1.552850000E3,5.936846960E1 +1.553097000E3,5.514794057E1 +1.553401000E3,5.160130424E1 +1.553757000E3,5.107783990E1 +1.554023000E3,5.871375450E1 +1.554276000E3,5.617325190E1 +1.554544000E3,5.736189521E1 +1.554800000E3,5.317828333E1 +1.555051000E3,5.715279916E1 +1.555321000E3,5.726931658E1 +1.555563000E3,5.567771069E1 +1.555823000E3,5.156101336E1 +1.556126000E3,5.688446569E1 +1.556378000E3,6.074118939E1 +1.556642000E3,5.974958265E1 +1.556918000E3,5.702757711E1 +1.557208000E3,5.874442787E1 +1.557457000E3,5.795683904E1 +1.557722000E3,6.039916355E1 +1.558025000E3,5.662755924E1 +1.558320000E3,5.332514547E1 +1.558595000E3,6.059700286E1 +1.558850000E3,5.775207016E1 +1.559098000E3,6.106988435E1 +1.559349000E3,6.039494527E1 +1.559644000E3,5.672405799E1 +1.559889000E3,5.814375710E1 +1.560135000E3,6.159401746E1 +1.560480000E3,5.397583636E1 +1.560770000E3,5.291692280E1 +1.561026000E3,5.439035965E1 +1.561320000E3,5.553984968E1 +1.561619000E3,5.808332247E1 +1.561927000E3,5.744100555E1 +1.562191000E3,5.636250023E1 +1.562451000E3,6.055150308E1 +1.562703000E3,5.624161562E1 +1.562979000E3,5.401048000E1 +1.563233000E3,5.588901558E1 +1.563595000E3,6.020828902E1 +1.563855000E3,6.586197618E1 +1.564143000E3,5.744692826E1 +1.564421000E3,5.175273280E1 +1.564681000E3,5.584828423E1 +1.564939000E3,5.622472521E1 +1.565190000E3,5.419184381E1 +1.565447000E3,4.818775863E1 +1.565701000E3,5.443344746E1 +1.565956000E3,4.960344337E1 +1.566224000E3,6.289868185E1 +1.566469000E3,6.499026885E1 +1.566794000E3,6.277031329E1 +1.567086000E3,5.336636778E1 +1.567405000E3,5.867761918E1 +1.567644000E3,5.135518394E1 +1.567909000E3,5.665720126E1 +1.568204000E3,5.915910399E1 +1.568455000E3,5.687790668E1 +1.568730000E3,5.815647569E1 +1.568976000E3,5.595761669E1 +1.569238000E3,5.367288589E1 +1.569491000E3,4.954593185E1 +1.569752000E3,5.199120702E1 +1.570099000E3,5.857172858E1 +1.570354000E3,5.533510860E1 +1.570614000E3,5.615291914E1 +1.570871000E3,4.816531300E1 +1.571136000E3,4.597509459E1 +1.571387000E3,5.454256971E1 +1.571722000E3,5.262076426E1 +1.572010000E3,5.108681545E1 +1.572285000E3,5.269091247E1 +1.572547000E3,4.898785412E1 +1.572807000E3,4.867008841E1 +1.573066000E3,5.306545801E1 +1.573313000E3,5.092331160E1 +1.573694000E3,5.549117670E1 +1.574009000E3,5.304099104E1 +1.574279000E3,5.377011563E1 +1.574520000E3,5.244694975E1 +1.574770000E3,5.542353961E1 +1.575031000E3,5.327330735E1 +1.575319000E3,5.123065406E1 +1.575617000E3,5.429517947E1 +1.575867000E3,5.443507599E1 +1.576132000E3,5.273613947E1 +1.576382000E3,5.717979407E1 +1.576705000E3,5.184816589E1 +1.576955000E3,4.851208329E1 +1.577250000E3,4.976440939E1 +1.577493000E3,5.236737582E1 +1.577737000E3,5.414723297E1 +1.577998000E3,5.490706774E1 +1.578342000E3,5.591011545E1 +1.578650000E3,5.689754115E1 +1.578906000E3,5.680987850E1 +1.579148000E3,5.379415708E1 +1.579394000E3,5.844713665E1 +1.579644000E3,4.927798375E1 +1.580006000E3,5.263100090E1 +1.580294000E3,5.410513055E1 +1.580548000E3,5.541047194E1 +1.580801000E3,5.058665778E1 +1.581070000E3,5.191468462E1 +1.581349000E3,4.623838572E1 +1.581601000E3,4.883886927E1 +1.581851000E3,4.951159763E1 +1.582152000E3,5.372806241E1 +1.582461000E3,4.077427406E1 +1.582742000E3,4.089897224E1 +1.582967000E3,4.661834708E1 +1.583330000E3,4.498181641E1 +1.583574000E3,4.413204165E1 +1.583835000E3,4.830731952E1 +1.584102000E3,5.133890730E1 +1.584385000E3,5.327819620E1 +1.584689000E3,5.148788947E1 +1.584935000E3,5.259351261E1 +1.585217000E3,5.210912674E1 +1.585449000E3,5.375523399E1 +1.585710000E3,5.030792675E1 +1.585957000E3,5.116594607E1 +1.586271000E3,5.729332409E1 +1.586601000E3,5.372439258E1 +1.586868000E3,5.283683191E1 +1.587111000E3,5.261490358E1 +1.587371000E3,5.394382083E1 +1.587617000E3,5.362104804E1 +1.587861000E3,5.192909002E1 +1.588111000E3,5.534291684E1 +1.588356000E3,5.529045875E1 +1.588616000E3,5.723903943E1 +1.588878000E3,5.769467674E1 +1.589116000E3,5.686991669E1 +1.589367000E3,5.472851050E1 +1.589709000E3,5.509501284E1 +1.589971000E3,6.218794924E1 +1.590276000E3,5.544714813E1 +1.590522000E3,5.587492513E1 +1.590770000E3,6.310127100E1 +1.591031000E3,6.016601681E1 +1.591331000E3,5.868635044E1 +1.591588000E3,5.739907262E1 +1.591847000E3,5.500154159E1 +1.592105000E3,5.382353142E1 +1.592358000E3,5.235465349E1 +1.592660000E3,5.432444683E1 +1.592979000E3,5.583837344E1 +1.593280000E3,5.890777444E1 +1.593531000E3,6.247008348E1 +1.593777000E3,5.524440051E1 +1.594082000E3,6.039849382E1 +1.594376000E3,5.779880973E1 +1.594616000E3,6.006977904E1 +1.594916000E3,6.157791897E1 +1.595158000E3,5.727348505E1 +1.595456000E3,6.219777130E1 +1.595702000E3,6.333776727E1 +1.596011000E3,6.315243887E1 +1.596287000E3,5.622487117E1 +1.596582000E3,4.999384026E1 +1.596838000E3,6.052096287E1 +1.597136000E3,5.730636753E1 +1.597383000E3,5.672770046E1 +1.597632000E3,5.282894107E1 +1.597943000E3,5.609826115E1 +1.598240000E3,5.950608691E1 +1.598483000E3,5.262580449E1 +1.598777000E3,5.638403375E1 +1.599039000E3,5.695994656E1 +1.599354000E3,5.595638462E1 +1.599677000E3,5.456948793E1 +1.599955000E3,5.641745933E1 +1.600254000E3,5.373490010E1 +1.600541000E3,5.613295480E1 +1.600824000E3,5.295628543E1 +1.601071000E3,5.036371368E1 +1.601313000E3,5.734560753E1 +1.601585000E3,5.869799540E1 +1.601832000E3,5.689867309E1 +1.602079000E3,5.521901034E1 +1.602376000E3,5.958743796E1 +1.602630000E3,5.697555749E1 +1.602881000E3,6.067520996E1 +1.603136000E3,6.296730837E1 +1.603381000E3,6.302345663E1 +1.603674000E3,5.614231839E1 +1.603920000E3,5.471880748E1 +1.604179000E3,6.025548138E1 +1.604432000E3,5.848975602E1 +1.604677000E3,6.051353275E1 +1.604988000E3,6.061163824E1 +1.605287000E3,5.127173554E1 +1.605535000E3,5.271948405E1 +1.605890000E3,5.457177629E1 +1.606143000E3,5.047420148E1 +1.606392000E3,5.197178768E1 +1.606684000E3,5.635777628E1 +1.606927000E3,5.691931577E1 +1.607165000E3,5.135114371E1 +1.607440000E3,5.173034620E1 +1.607734000E3,5.786109434E1 +1.607974000E3,5.620528212E1 +1.608236000E3,5.432552885E1 +1.608507000E3,5.036034087E1 +1.608763000E3,4.872303481E1 +1.609123000E3,5.516764205E1 +1.609377000E3,5.867465981E1 +1.609624000E3,5.634077767E1 +1.609869000E3,5.153316916E1 +1.610150000E3,5.212022412E1 +1.610428000E3,5.727395868E1 +1.610681000E3,5.443759521E1 +1.610944000E3,5.599199613E1 +1.611242000E3,5.709063131E1 +1.611495000E3,5.747461955E1 +1.611762000E3,5.445378087E1 +1.612040000E3,5.178206799E1 +1.612294000E3,5.347146008E1 +1.612548000E3,5.695533984E1 +1.612791000E3,5.852885666E1 +1.613050000E3,5.349710519E1 +1.613354000E3,5.482274130E1 +1.613598000E3,5.580201302E1 +1.613898000E3,5.533013655E1 +1.614151000E3,5.307302798E1 +1.614404000E3,5.034267096E1 +1.614651000E3,5.096368681E1 +1.614959000E3,5.358615730E1 +1.615202000E3,5.402822959E1 +1.615565000E3,5.173226008E1 +1.615815000E3,5.317238447E1 +1.616120000E3,5.490271856E1 +1.616406000E3,5.760350961E1 +1.616712000E3,5.516631401E1 +1.616950000E3,5.344247717E1 +1.617197000E3,5.105574764E1 +1.617480000E3,5.297874749E1 +1.617726000E3,5.181083735E1 +1.617978000E3,5.504462581E1 +1.618236000E3,5.652623382E1 +1.618484000E3,5.850281135E1 +1.618804000E3,5.207268405E1 +1.619061000E3,4.595989093E1 +1.619309000E3,5.832875112E1 +1.619574000E3,5.691639889E1 +1.619831000E3,5.277897330E1 +1.620092000E3,5.634285556E1 +1.620390000E3,5.782897026E1 +1.620660000E3,6.167326244E1 +1.620905000E3,5.736569246E1 +1.621145000E3,6.422841213E1 +1.621400000E3,6.037316593E1 +1.621649000E3,5.869946609E1 +1.622005000E3,6.007663283E1 +1.622308000E3,5.750286676E1 +1.622551000E3,5.315958033E1 +1.622849000E3,5.996646537E1 +1.623085000E3,6.310656156E1 +1.623382000E3,6.410911411E1 +1.623620000E3,6.559322950E1 +1.623914000E3,6.191537215E1 +1.624148000E3,6.509401862E1 +1.624441000E3,6.149444047E1 +1.624676000E3,5.887830140E1 +1.624914000E3,5.333395699E1 +1.625242000E3,5.080509527E1 +1.625531000E3,5.208999136E1 +1.625827000E3,4.936268455E1 +1.626072000E3,4.620940228E1 +1.626384000E3,4.812346411E1 +1.626678000E3,5.508818133E1 +1.626931000E3,5.929414420E1 +1.627193000E3,5.798382987E1 +1.627446000E3,5.695027340E1 +1.627690000E3,6.200547811E1 +1.627940000E3,5.895921781E1 +1.628278000E3,5.832121877E1 +1.628595000E3,5.727506493E1 +1.628914000E3,5.676841787E1 +1.629164000E3,5.904549933E1 +1.629453000E3,6.079247221E1 +1.629705000E3,5.978532207E1 +1.629973000E3,6.204876077E1 +1.630223000E3,6.278691878E1 +1.630527000E3,5.775584326E1 +1.630780000E3,5.715423799E1 +1.631076000E3,5.993810238E1 +1.631416000E3,5.945816984E1 +1.631690000E3,5.911038375E1 +1.631989000E3,6.401318161E1 +1.632251000E3,6.288325429E1 +1.632577000E3,6.142114348E1 +1.632857000E3,6.027735545E1 +1.633125000E3,6.058800698E1 +1.633410000E3,6.197295377E1 +1.633713000E3,5.649410931E1 +1.633983000E3,5.349526422E1 +1.634267000E3,5.160473432E1 +1.634550000E3,5.471426263E1 +1.634881000E3,5.381566790E1 +1.635145000E3,5.592472168E1 +1.635394000E3,5.502963456E1 +1.635636000E3,5.458091777E1 +1.635914000E3,5.361113418E1 +1.636211000E3,5.972112366E1 +1.636510000E3,6.134956919E1 +1.636770000E3,6.291498703E1 +1.637018000E3,6.051799303E1 +1.637272000E3,5.800319143E1 +1.637535000E3,6.099184952E1 +1.637791000E3,6.192072936E1 +1.638191000E3,5.592689657E1 +1.638462000E3,5.015193522E1 +1.638759000E3,5.662906295E1 +1.638997000E3,6.189212385E1 +1.639312000E3,5.656112303E1 +1.639618000E3,5.827187766E1 +1.639922000E3,5.894515280E1 +1.640188000E3,5.379936676E1 +1.640446000E3,5.498271927E1 +1.640705000E3,5.883708769E1 +1.641003000E3,5.515786146E1 +1.641329000E3,5.323855564E1 +1.641593000E3,5.000482182E1 +1.641876000E3,5.182077324E1 +1.642101000E3,5.319082569E1 +1.642344000E3,6.611850928E1 +1.642626000E3,5.190424983E1 +1.642867000E3,5.081734830E1 +1.643118000E3,5.711045841E1 +1.643458000E3,5.520016906E1 +1.643723000E3,5.247062228E1 +1.643997000E3,5.309157546E1 +1.644256000E3,5.339769460E1 +1.644621000E3,5.982216134E1 +1.644883000E3,5.915424673E1 +1.645133000E3,5.849263499E1 +1.645426000E3,5.826666974E1 +1.645723000E3,5.673329902E1 +1.645972000E3,5.580417722E1 +1.646244000E3,5.457004449E1 +1.646473000E3,5.835958867E1 +1.646716000E3,5.599398637E1 +1.646958000E3,5.928075116E1 +1.647232000E3,5.394053714E1 +1.647507000E3,5.853879118E1 +1.647858000E3,5.674494648E1 +1.648113000E3,5.640074652E1 +1.648414000E3,5.694867796E1 +1.648656000E3,5.573466688E1 +1.648962000E3,5.556104957E1 +1.649254000E3,5.770712773E1 +1.649548000E3,5.765349227E1 +1.649790000E3,5.583875333E1 +1.650054000E3,6.321152276E1 +1.650306000E3,5.966047080E1 +1.650600000E3,5.502015578E1 +1.650872000E3,5.066616477E1 +1.651172000E3,5.442335496E1 +1.651440000E3,5.956947456E1 +1.651736000E3,5.798320450E1 +1.651979000E3,5.739040713E1 +1.652228000E3,5.803662120E1 +1.652491000E3,6.146613872E1 +1.652750000E3,5.929116619E1 +1.653021000E3,5.936282359E1 +1.653288000E3,5.853226920E1 +1.653570000E3,5.954415072E1 +1.653872000E3,5.749576278E1 +1.654250000E3,5.567111200E1 +1.654518000E3,6.059415807E1 +1.654812000E3,5.855300274E1 +1.655081000E3,5.797601107E1 +1.655350000E3,6.029475669E1 +1.655647000E3,5.264118678E1 +1.655893000E3,5.715075800E1 +1.656153000E3,5.787679223E1 +1.656407000E3,6.038334743E1 +1.656655000E3,6.038245752E1 +1.656912000E3,5.475945603E1 +1.657171000E3,5.661674174E1 +1.657473000E3,5.618877186E1 +1.657717000E3,5.712918740E1 +1.657972000E3,5.834783502E1 +1.658283000E3,6.198115012E1 +1.658526000E3,5.639977894E1 +1.658788000E3,5.416850689E1 +1.659089000E3,5.679686188E1 +1.659335000E3,5.697270686E1 +1.659619000E3,5.371836804E1 +1.659873000E3,6.082252986E1 +1.660120000E3,6.285201132E1 +1.660416000E3,6.088574857E1 +1.660728000E3,6.109109391E1 +1.661004000E3,5.861240224E1 +1.661283000E3,6.123850168E1 +1.661519000E3,5.849447684E1 +1.661821000E3,5.472352136E1 +1.662065000E3,5.502625911E1 +1.662312000E3,5.606436387E1 +1.662565000E3,5.546236927E1 +1.662845000E3,6.075823181E1 +1.663075000E3,5.951357638E1 +1.663350000E3,5.956681026E1 +1.663575000E3,5.780116333E1 +1.663928000E3,6.184122024E1 +1.664178000E3,5.626291699E1 +1.664419000E3,5.635545931E1 +1.664671000E3,5.487242490E1 +1.664936000E3,5.392872477E1 +1.665237000E3,5.658170902E1 +1.665476000E3,5.449322435E1 +1.665752000E3,5.111063749E1 +1.665997000E3,5.288359358E1 +1.666249000E3,5.825102048E1 +1.666508000E3,6.087585373E1 +1.666750000E3,5.822210598E1 +1.667110000E3,6.320270923E1 +1.667355000E3,5.563170163E1 +1.667628000E3,5.240635194E1 +1.667875000E3,5.485055122E1 +1.668144000E3,5.590209292E1 +1.668402000E3,5.750031923E1 +1.668648000E3,5.301598344E1 +1.668896000E3,5.208077776E1 +1.669157000E3,5.024112467E1 +1.669414000E3,5.530220423E1 +1.669710000E3,5.585178295E1 +1.669955000E3,5.443268015E1 +1.670292000E3,5.292974908E1 +1.670566000E3,5.501741168E1 +1.670818000E3,5.190433464E1 +1.671077000E3,5.602388651E1 +1.671384000E3,5.384205522E1 +1.671688000E3,5.355394771E1 +1.671956000E3,4.896600257E1 +1.672212000E3,4.457728928E1 +1.672483000E3,5.407780485E1 +1.672726000E3,5.808535163E1 +1.672991000E3,5.497589856E1 +1.673269000E3,5.816061182E1 +1.673625000E3,5.457220472E1 +1.673896000E3,5.852786772E1 +1.674165000E3,5.615855966E1 +1.674439000E3,5.901141794E1 +1.674702000E3,5.821771493E1 +1.675040000E3,5.533746886E1 +1.675330000E3,5.469332456E1 +1.675631000E3,5.895976057E1 +1.675867000E3,5.565047570E1 +1.676161000E3,5.342216333E1 +1.676431000E3,5.339304237E1 +1.676716000E3,5.196130631E1 +1.677075000E3,5.500129023E1 +1.677346000E3,5.649474234E1 +1.677614000E3,5.620691351E1 +1.677867000E3,5.756400488E1 +1.678112000E3,5.571225073E1 +1.678362000E3,6.171466353E1 +1.678655000E3,5.523245256E1 +1.678909000E3,5.780473196E1 +1.679167000E3,5.918101801E1 +1.679536000E3,5.449831587E1 +1.679788000E3,5.278747036E1 +1.680072000E3,5.502423006E1 +1.680392000E3,5.603218813E1 +1.680667000E3,5.681691969E1 +1.680917000E3,5.574952817E1 +1.681227000E3,5.747793831E1 +1.681510000E3,5.831554727E1 +1.681811000E3,5.823344802E1 +1.682073000E3,5.677197169E1 +1.682402000E3,5.423243511E1 +1.682746000E3,5.568639423E1 +1.683007000E3,5.601571559E1 +1.683297000E3,5.788588795E1 +1.683563000E3,5.178162942E1 +1.683805000E3,5.244727762E1 +1.684102000E3,5.504021082E1 +1.684342000E3,5.312145782E1 +1.684637000E3,5.266466104E1 +1.684875000E3,5.430143327E1 +1.685171000E3,5.731848010E1 +1.685409000E3,5.314967575E1 +1.685703000E3,5.210480680E1 +1.685940000E3,5.447962472E1 +1.686242000E3,5.671930258E1 +1.686480000E3,5.298653153E1 +1.686837000E3,5.390672385E1 +1.687083000E3,5.256535993E1 +1.687387000E3,5.295433262E1 +1.687686000E3,4.693434793E1 +1.687930000E3,5.264001548E1 +1.688191000E3,4.696703102E1 +1.688514000E3,5.290693761E1 +1.688768000E3,5.572289252E1 +1.689025000E3,5.629476293E1 +1.689331000E3,5.221395629E1 +1.689585000E3,5.553268928E1 +1.689905000E3,5.392885939E1 +1.690136000E3,5.613018872E1 +1.690432000E3,5.323144022E1 +1.690690000E3,5.426457319E1 +1.690988000E3,5.869511223E1 +1.691244000E3,5.724931575E1 +1.691548000E3,5.702890727E1 +1.691819000E3,5.957894946E1 +1.692068000E3,5.833323285E1 +1.692367000E3,5.920896731E1 +1.692598000E3,5.809066040E1 +1.692847000E3,5.683194919E1 +1.693218000E3,5.880411413E1 +1.693536000E3,5.430005356E1 +1.693836000E3,5.347827494E1 +1.694082000E3,5.139526617E1 +1.694323000E3,6.486669482E1 +1.694607000E3,5.827670564E1 +1.694879000E3,5.749070135E1 +1.695112000E3,5.439297467E1 +1.695418000E3,5.591879208E1 +1.695720000E3,5.984156108E1 +1.695978000E3,5.763450389E1 +1.696238000E3,5.535113951E1 +1.696577000E3,5.468640858E1 +1.696840000E3,5.145216534E1 +1.697142000E3,5.633820526E1 +1.697434000E3,5.961813260E1 +1.697672000E3,5.761348305E1 +1.697970000E3,5.587832748E1 +1.698213000E3,5.615239979E1 +1.698514000E3,6.142159571E1 +1.698744000E3,5.868747140E1 +1.699038000E3,5.639074769E1 +1.699277000E3,5.843791784E1 +1.699602000E3,5.580904726E1 +1.699849000E3,5.188032815E1 +1.700148000E3,6.050592844E1 +1.700415000E3,5.851925341E1 +1.700742000E3,5.754370303E1 +1.700996000E3,5.792652906E1 +1.701265000E3,5.809754284E1 +1.701543000E3,5.435013872E1 +1.701827000E3,5.364293620E1 +1.702095000E3,5.742174876E1 +1.702342000E3,5.921232761E1 +1.702597000E3,5.246613397E1 +1.702852000E3,5.865178399E1 +1.703188000E3,6.209648540E1 +1.703456000E3,5.783126524E1 +1.703723000E3,6.129722089E1 +1.704021000E3,6.159059582E1 +1.704258000E3,6.290365934E1 +1.704500000E3,5.899658178E1 +1.704744000E3,5.570772177E1 +1.705020000E3,6.042975914E1 +1.705281000E3,6.063911519E1 +1.705578000E3,5.667741437E1 +1.705818000E3,5.616948640E1 +1.706065000E3,5.809228765E1 +1.706440000E3,6.194892333E1 +1.706707000E3,5.510896653E1 +1.706968000E3,5.648771637E1 +1.707226000E3,5.451026369E1 +1.707530000E3,5.655237570E1 +1.707813000E3,6.342687376E1 +1.708096000E3,5.687609223E1 +1.708345000E3,5.784030597E1 +1.708587000E3,5.696931166E1 +1.708832000E3,5.826055047E1 +1.709133000E3,6.171963981E1 +1.709444000E3,6.289993620E1 +1.709785000E3,6.196750111E1 +1.710095000E3,6.021872673E1 +1.710401000E3,5.493999514E1 +1.710645000E3,5.748920917E1 +1.710951000E3,5.990748875E1 +1.711204000E3,5.995493625E1 +1.711504000E3,5.608393688E1 +1.711807000E3,6.225697969E1 +1.712052000E3,6.005399346E1 +1.712297000E3,6.276583246E1 +1.712594000E3,6.409669700E1 +1.712952000E3,5.846223798E1 +1.713249000E3,6.222377893E1 +1.713511000E3,6.179119431E1 +1.713770000E3,6.687160955E1 +1.714020000E3,6.224215114E1 +1.714281000E3,6.460780580E1 +1.714608000E3,6.323149402E1 +1.714900000E3,5.890183616E1 +1.715139000E3,6.173404899E1 +1.715438000E3,6.193562982E1 +1.715674000E3,6.231645929E1 +1.715912000E3,5.798536661E1 +1.716293000E3,5.569607438E1 +1.716537000E3,6.131866955E1 +1.716790000E3,5.896584959E1 +1.717096000E3,5.693976131E1 +1.717346000E3,5.531403594E1 +1.717631000E3,5.794989861E1 +1.717933000E3,5.594899441E1 +1.718204000E3,5.601359132E1 +1.718501000E3,5.861037671E1 +1.718741000E3,6.432265266E1 +1.719043000E3,6.182586376E1 +1.719355000E3,6.076827417E1 +1.719645000E3,5.634225228E1 +1.719943000E3,5.935070169E1 +1.720188000E3,5.856877062E1 +1.720486000E3,5.761843709E1 +1.720741000E3,5.935030376E1 +1.720985000E3,5.413194972E1 +1.721289000E3,5.939733818E1 +1.721553000E3,5.617827250E1 +1.721847000E3,5.807085988E1 +1.722091000E3,5.877044817E1 +1.722445000E3,6.593854232E1 +1.722681000E3,6.027114564E1 +1.722973000E3,5.866411762E1 +1.723271000E3,5.588604319E1 +1.723508000E3,5.958751798E1 +1.723800000E3,6.077290351E1 +1.724039000E3,5.722905231E1 +1.724338000E3,5.619905124E1 +1.724576000E3,5.628809107E1 +1.724876000E3,5.560357878E1 +1.725168000E3,5.447509555E1 +1.725542000E3,5.278892866E1 +1.725841000E3,4.816211457E1 +1.726139000E3,4.622333411E1 +1.726399000E3,4.728231882E1 +1.726691000E3,5.101510224E1 +1.726947000E3,4.725933617E1 +1.727273000E3,5.333398449E1 +1.727569000E3,5.518583989E1 +1.727808000E3,5.719998093E1 +1.728061000E3,5.375072532E1 +1.728352000E3,5.631849408E1 +1.728644000E3,5.232994659E1 +1.729024000E3,5.045911420E1 +1.729295000E3,4.931808913E1 +1.729541000E3,4.866846016E1 +1.729788000E3,5.127644661E1 +1.730054000E3,4.769951033E1 +1.730296000E3,5.553885299E1 +1.730573000E3,5.629080236E1 +1.730816000E3,5.218818952E1 +1.731119000E3,5.112756333E1 +1.731379000E3,5.524890032E1 +1.731688000E3,5.530134621E1 +1.731949000E3,5.451831728E1 +1.732288000E3,5.380962689E1 +1.732589000E3,5.754684503E1 +1.732833000E3,5.184401682E1 +1.733102000E3,5.011373730E1 +1.733369000E3,5.541779655E1 +1.733647000E3,5.983699601E1 +1.733886000E3,6.131428317E1 +1.734163000E3,6.052345820E1 +1.734405000E3,5.852692054E1 +1.734659000E3,5.861191265E1 +1.734933000E3,5.957936529E1 +1.735219000E3,5.639739849E1 +1.735540000E3,5.207917019E1 +1.735832000E3,4.548490451E1 +1.736112000E3,5.219897691E1 +1.736384000E3,5.618314188E1 +1.736684000E3,5.720418785E1 +1.736946000E3,5.895068629E1 +1.737213000E3,5.652216932E1 +1.737468000E3,5.796687034E1 +1.737738000E3,5.591197017E1 +1.737996000E3,5.493985473E1 +1.738236000E3,5.752137274E1 +1.738586000E3,6.041563952E1 +1.738921000E3,6.199530447E1 +1.739167000E3,5.310800091E1 +1.739430000E3,5.600574849E1 +1.739683000E3,6.494981167E1 +1.739952000E3,6.157046745E1 +1.740293000E3,6.002681302E1 +1.740611000E3,5.943541790E1 +1.740910000E3,5.731619793E1 +1.741197000E3,5.885751119E1 +1.741508000E3,5.719237093E1 +1.741767000E3,5.958897825E1 +1.742034000E3,5.543499582E1 +1.742424000E3,5.632783570E1 +1.742688000E3,5.565042743E1 +1.742946000E3,5.622883854E1 +1.743204000E3,6.327777019E1 +1.743456000E3,5.663098185E1 +1.743721000E3,5.729384715E1 +1.743966000E3,6.200582057E1 +1.744273000E3,5.107652622E1 +1.744505000E3,5.491520459E1 +1.744752000E3,5.181266373E1 +1.745004000E3,5.014115745E1 +1.745297000E3,5.338585031E1 +1.745690000E3,5.654477286E1 +1.745966000E3,5.517036116E1 +1.746219000E3,5.200430375E1 +1.746475000E3,5.963355448E1 +1.746732000E3,5.854837006E1 +1.747002000E3,5.571277949E1 +1.747293000E3,5.825116458E1 +1.747522000E3,5.673248340E1 +1.747772000E3,5.683320783E1 +1.748035000E3,5.224053713E1 +1.748289000E3,5.713452273E1 +1.748568000E3,5.539076360E1 +1.748961000E3,6.015893340E1 +1.749211000E3,5.710921188E1 +1.749460000E3,6.114476082E1 +1.749715000E3,5.648052368E1 +1.749961000E3,5.897720288E1 +1.750207000E3,5.525435431E1 +1.750521000E3,5.447453139E1 +1.750765000E3,5.883968686E1 +1.751015000E3,5.450160052E1 +1.751290000E3,5.405183560E1 +1.751522000E3,5.501343440E1 +1.751848000E3,5.586635599E1 +1.752096000E3,5.631573217E1 +1.752372000E3,5.960964241E1 +1.752637000E3,5.320710483E1 +1.752941000E3,5.848434869E1 +1.753209000E3,5.619196315E1 +1.753510000E3,5.692291103E1 +1.753774000E3,5.505374149E1 +1.754051000E3,5.721759821E1 +1.754315000E3,5.539152446E1 +1.754625000E3,5.632890174E1 +1.754919000E3,5.918851802E1 +1.755262000E3,5.807294381E1 +1.755529000E3,5.748451885E1 +1.755827000E3,6.055251826E1 +1.756067000E3,6.208050524E1 +1.756367000E3,5.991655048E1 +1.756607000E3,6.073519941E1 +1.756900000E3,5.774998130E1 +1.757144000E3,5.751173009E1 +1.757417000E3,5.299288378E1 +1.757700000E3,5.913293772E1 +1.758005000E3,5.732040664E1 +1.758269000E3,6.221202462E1 +1.758585000E3,6.285457626E1 +1.758834000E3,5.870613535E1 +1.759137000E3,5.533279687E1 +1.759391000E3,5.194643865E1 +1.759644000E3,4.891449850E1 +1.759922000E3,4.784429271E1 +1.760236000E3,5.273391136E1 +1.760503000E3,5.475616990E1 +1.760758000E3,5.640096860E1 +1.761017000E3,5.329458627E1 +1.761282000E3,4.798672737E1 +1.761535000E3,5.532988346E1 +1.761794000E3,5.189579265E1 +1.762040000E3,5.068357941E1 +1.762299000E3,5.751972157E1 +1.762578000E3,5.430434207E1 +1.762831000E3,5.331943982E1 +1.763136000E3,5.699367350E1 +1.763409000E3,5.622858108E1 +1.763658000E3,5.631559008E1 +1.763910000E3,5.738562920E1 +1.764157000E3,6.030103345E1 +1.764400000E3,5.680309722E1 +1.764695000E3,5.703631315E1 +1.765017000E3,5.682945247E1 +1.765300000E3,5.317093897E1 +1.765575000E3,5.620624417E1 +1.765832000E3,5.550075987E1 +1.766100000E3,6.321349509E1 +1.766371000E3,5.938123887E1 +1.766635000E3,6.289622107E1 +1.766898000E3,5.890101653E1 +1.767155000E3,5.928826732E1 +1.767399000E3,5.872890625E1 +1.767638000E3,6.184345237E1 +1.767877000E3,6.131073260E1 +1.768211000E3,6.085041665E1 +1.768587000E3,6.015418617E1 +1.768835000E3,5.648473324E1 +1.769119000E3,5.746059957E1 +1.769380000E3,5.608054299E1 +1.769692000E3,6.542458852E1 +1.769998000E3,6.121618195E1 +1.770281000E3,5.842785672E1 +1.770536000E3,5.763776595E1 +1.770858000E3,5.630873419E1 +1.771133000E3,5.339704361E1 +1.771378000E3,5.463873835E1 +1.771723000E3,5.659388596E1 +1.772050000E3,5.449836230E1 +1.772294000E3,5.154616724E1 +1.772537000E3,5.082603581E1 +1.772795000E3,5.334183734E1 +1.773055000E3,5.096094928E1 +1.773365000E3,5.171061147E1 +1.773612000E3,5.477281719E1 +1.773878000E3,5.060909259E1 +1.774171000E3,5.285294921E1 +1.774452000E3,5.393730531E1 +1.774725000E3,5.333400186E1 +1.774980000E3,5.285705613E1 +1.775346000E3,5.719168586E1 +1.775663000E3,5.642193929E1 +1.775908000E3,4.659059970E1 +1.776150000E3,5.521168672E1 +1.776388000E3,5.693500665E1 +1.776630000E3,6.030483668E1 +1.776910000E3,5.944095915E1 +1.777153000E3,5.708951289E1 +1.777414000E3,5.291982189E1 +1.777666000E3,5.900042024E1 +1.777935000E3,6.010949926E1 +1.778229000E3,6.009411695E1 +1.778514000E3,5.804757181E1 +1.778758000E3,5.922775473E1 +1.779011000E3,6.063545461E1 +1.779277000E3,5.950242674E1 +1.779575000E3,6.057891518E1 +1.779819000E3,6.050018223E1 +1.780115000E3,5.965583098E1 +1.780361000E3,5.651792502E1 +1.780660000E3,5.814099422E1 +1.780904000E3,5.340077797E1 +1.781203000E3,5.734973286E1 +1.781481000E3,5.846278011E1 +1.781805000E3,5.369751607E1 +1.782048000E3,5.229063054E1 +1.782299000E3,5.345996994E1 +1.782583000E3,5.724353788E1 +1.782883000E3,5.610772411E1 +1.783181000E3,5.272586700E1 +1.783423000E3,5.272075137E1 +1.783692000E3,5.495532717E1 +1.783945000E3,5.594785882E1 +1.784202000E3,5.914935612E1 +1.784483000E3,6.427791570E1 +1.784735000E3,6.185652247E1 +1.785051000E3,6.178338943E1 +1.785352000E3,6.304285312E1 +1.785598000E3,5.699176354E1 +1.785897000E3,5.705567192E1 +1.786190000E3,5.975757470E1 +1.786467000E3,6.092866408E1 +1.786714000E3,5.771726615E1 +1.786984000E3,5.434727511E1 +1.787232000E3,5.250796794E1 +1.787486000E3,5.668884634E1 +1.787813000E3,5.600600547E1 +1.788061000E3,5.162213387E1 +1.788391000E3,5.782497792E1 +1.788636000E3,5.900804565E1 +1.788935000E3,6.056317474E1 +1.789175000E3,5.749029459E1 +1.789469000E3,6.053654612E1 +1.789714000E3,5.841478287E1 +1.789988000E3,5.700130118E1 +1.790219000E3,5.562837186E1 +1.790509000E3,5.430369658E1 +1.790806000E3,5.586895515E1 +1.791048000E3,5.809725956E1 +1.791409000E3,5.552827992E1 +1.791650000E3,5.534472171E1 +1.791981000E3,5.671474363E1 +1.792227000E3,5.716453332E1 +1.792522000E3,5.844249975E1 +1.792847000E3,5.961186667E1 +1.793109000E3,5.794833541E1 +1.793437000E3,5.832360597E1 +1.793698000E3,5.996001578E1 +1.793970000E3,5.849924827E1 +1.794223000E3,5.823551411E1 +1.794488000E3,5.480450178E1 +1.794819000E3,5.715609034E1 +1.795083000E3,5.418083703E1 +1.795329000E3,5.529883425E1 +1.795587000E3,5.729455769E1 +1.795853000E3,5.358946536E1 +1.796083000E3,5.534684059E1 +1.796374000E3,5.693696454E1 +1.796630000E3,5.642610016E1 +1.796927000E3,5.692548294E1 +1.797194000E3,5.931602223E1 +1.797469000E3,5.877569790E1 +1.797716000E3,5.527135197E1 +1.798053000E3,5.904674814E1 +1.798358000E3,5.655039196E1 +1.798612000E3,5.796779928E1 +1.798921000E3,5.499199210E1 +1.799185000E3,5.693837926E1 +1.799465000E3,6.235855457E1 +1.799695000E3,6.271612813E1 +1.799964000E3,6.118271582E1 +1.800233000E3,6.171552449E1 +1.800562000E3,6.293258336E1 +1.800818000E3,5.927940855E1 +1.801077000E3,5.836879001E1 +1.801406000E3,6.182854437E1 +1.801650000E3,5.918527405E1 +1.801894000E3,6.352260837E1 +1.802163000E3,6.142940723E1 +1.802385000E3,5.867772092E1 +1.802631000E3,5.916688243E1 +1.802927000E3,5.855222781E1 +1.803228000E3,6.125789004E1 +1.803533000E3,5.839377949E1 +1.803816000E3,5.705167204E1 +1.804057000E3,5.641730344E1 +1.804362000E3,6.771092582E1 +1.804585000E3,6.036461449E1 +1.804835000E3,6.742095194E1 +1.805132000E3,6.133151855E1 +1.805443000E3,6.658554202E1 +1.805718000E3,7.095511769E1 +1.806003000E3,7.330553664E1 +1.806290000E3,6.732809523E1 +1.806566000E3,6.106403544E1 +1.806844000E3,5.830930506E1 +1.807085000E3,6.610455401E1 +1.807442000E3,5.944325189E1 +1.807800000E3,5.667454347E1 +1.808044000E3,5.560521877E1 +1.808299000E3,5.488377812E1 +1.808542000E3,5.279721650E1 +1.808789000E3,4.834692654E1 +1.809029000E3,4.661669368E1 +1.809276000E3,5.501186804E1 +1.809526000E3,5.384830085E1 +1.809820000E3,5.526588307E1 +1.810084000E3,5.900458249E1 +1.810393000E3,5.557146256E1 +1.810647000E3,5.355619280E1 +1.811023000E3,5.627924000E1 +1.811283000E3,5.384503050E1 +1.811527000E3,5.309622401E1 +1.811816000E3,5.228523776E1 +1.812070000E3,5.317657142E1 +1.812328000E3,5.813846570E1 +1.812583000E3,5.621088360E1 +1.812927000E3,5.646965227E1 +1.813191000E3,5.322001188E1 +1.813436000E3,5.451886743E1 +1.813748000E3,5.558621720E1 +1.814006000E3,5.673920724E1 +1.814328000E3,5.582855401E1 +1.814591000E3,6.044196407E1 +1.814848000E3,5.769208427E1 +1.815109000E3,6.206015086E1 +1.815391000E3,5.918173335E1 +1.815660000E3,5.779702061E1 +1.815927000E3,6.516398742E1 +1.816218000E3,5.927869783E1 +1.816546000E3,6.320256740E1 +1.816802000E3,6.296743684E1 +1.817051000E3,5.869001212E1 +1.817329000E3,5.985536664E1 +1.817620000E3,5.435607380E1 +1.817905000E3,5.721703373E1 +1.818148000E3,6.314389823E1 +1.818376000E3,6.116752308E1 +1.818622000E3,5.773611736E1 +1.818863000E3,5.892899245E1 +1.819138000E3,5.791411351E1 +1.819457000E3,6.283307798E1 +1.819719000E3,5.805008540E1 +1.819967000E3,6.383011196E1 +1.820266000E3,5.915938870E1 +1.820515000E3,5.795811325E1 +1.820871000E3,5.730398564E1 +1.821113000E3,5.907223014E1 +1.821388000E3,5.566469845E1 +1.821612000E3,5.223652040E1 +1.821858000E3,5.461868826E1 +1.822118000E3,5.731142265E1 +1.822388000E3,5.743609212E1 +1.822672000E3,6.147918645E1 +1.822919000E3,6.109678537E1 +1.823167000E3,5.654516230E1 +1.823464000E3,6.010058675E1 +1.823716000E3,6.101649690E1 +1.824046000E3,5.741898993E1 +1.824372000E3,5.654969113E1 +1.824629000E3,5.489877253E1 +1.824894000E3,6.410593751E1 +1.825142000E3,5.923267903E1 +1.825399000E3,5.977300321E1 +1.825683000E3,5.945891570E1 +1.825907000E3,5.799474745E1 +1.826162000E3,5.485933719E1 +1.826447000E3,5.848818620E1 +1.826697000E3,5.937282663E1 +1.826944000E3,5.473647239E1 +1.827319000E3,5.611635619E1 +1.827649000E3,5.704234375E1 +1.827909000E3,5.174683398E1 +1.828172000E3,5.243070089E1 +1.828457000E3,5.835398328E1 +1.828710000E3,6.579711207E1 +1.828969000E3,6.063158540E1 +1.829218000E3,5.379307224E1 +1.829474000E3,5.791005982E1 +1.829779000E3,5.908028356E1 +1.830025000E3,5.476368407E1 +1.830307000E3,5.608145667E1 +1.830627000E3,5.417323034E1 +1.830843000E3,5.295530865E1 +1.831087000E3,5.335160491E1 +1.831385000E3,5.274441298E1 +1.831622000E3,5.307477504E1 +1.831918000E3,5.606159985E1 +1.832155000E3,6.009472302E1 +1.832471000E3,5.380117674E1 +1.832766000E3,5.382200579E1 +1.833012000E3,5.176006230E1 +1.833256000E3,5.956343573E1 +1.833577000E3,5.545935306E1 +1.833826000E3,5.528541848E1 +1.834083000E3,5.436381252E1 +1.834373000E3,5.684307553E1 +1.834669000E3,5.352399464E1 +1.834910000E3,5.651184236E1 +1.835208000E3,5.432875840E1 +1.835453000E3,5.442576527E1 +1.835752000E3,5.643309342E1 +1.836022000E3,5.781174029E1 +1.836293000E3,6.110602518E1 +1.836557000E3,5.591856301E1 +1.836932000E3,5.423752303E1 +1.837200000E3,5.716598850E1 +1.837455000E3,5.511743414E1 +1.837716000E3,5.819026063E1 +1.837988000E3,5.728773522E1 +1.838236000E3,5.959151016E1 +1.838540000E3,5.810767345E1 +1.838799000E3,5.779128856E1 +1.839096000E3,6.092094761E1 +1.839361000E3,5.957871329E1 +1.839608000E3,5.838702884E1 +1.839856000E3,5.927631822E1 +1.840242000E3,5.748386760E1 +1.840516000E3,5.957609475E1 +1.840759000E3,5.688693666E1 +1.841054000E3,5.883374773E1 +1.841320000E3,5.769470339E1 +1.841597000E3,5.894509733E1 +1.841885000E3,6.032854908E1 +1.842190000E3,5.891601570E1 +1.842444000E3,5.957860612E1 +1.842691000E3,5.968229576E1 +1.842933000E3,5.829247522E1 +1.843258000E3,6.183086549E1 +1.843539000E3,6.077794792E1 +1.843765000E3,5.928253866E1 +1.844002000E3,5.782805396E1 +1.844301000E3,5.975447959E1 +1.844589000E3,6.108169982E1 +1.844825000E3,5.915565503E1 +1.845116000E3,5.981302437E1 +1.845363000E3,6.019248645E1 +1.845636000E3,6.014223773E1 +1.845861000E3,6.160258605E1 +1.846139000E3,6.002388007E1 +1.846447000E3,6.004612452E1 +1.846706000E3,5.932487324E1 +1.846979000E3,5.718424575E1 +1.847284000E3,5.712987240E1 +1.847586000E3,5.557624595E1 +1.847888000E3,5.603981815E1 +1.848146000E3,5.769591687E1 +1.848418000E3,5.526085696E1 +1.848706000E3,5.815102401E1 +1.848972000E3,5.884177354E1 +1.849226000E3,5.853138751E1 +1.849515000E3,6.156208919E1 +1.849746000E3,6.064923427E1 +1.850008000E3,6.590305387E1 +1.850338000E3,5.853444981E1 +1.850640000E3,5.717447935E1 +1.850942000E3,5.680568615E1 +1.851242000E3,5.928468331E1 +1.851504000E3,5.798449444E1 +1.851757000E3,5.802619768E1 +1.852033000E3,5.998338312E1 +1.852296000E3,5.683616594E1 +1.852550000E3,5.692327884E1 +1.852886000E3,5.878610583E1 +1.853162000E3,5.538467470E1 +1.853432000E3,5.437085520E1 +1.853738000E3,5.469765317E1 +1.854038000E3,5.790268038E1 +1.854297000E3,5.836787866E1 +1.854582000E3,6.160807622E1 +1.854881000E3,5.878613196E1 +1.855158000E3,6.200103199E1 +1.855387000E3,6.087479870E1 +1.855688000E3,6.028304140E1 +1.855930000E3,6.159527875E1 +1.856226000E3,6.082174354E1 +1.856487000E3,5.932314061E1 +1.856744000E3,5.976570730E1 +1.857001000E3,5.473753247E1 +1.857299000E3,5.954612483E1 +1.857556000E3,6.052388497E1 +1.857849000E3,5.848282940E1 +1.858086000E3,5.879664566E1 +1.858384000E3,5.864589973E1 +1.858677000E3,5.659242719E1 +1.858917000E3,5.683870091E1 +1.859195000E3,5.582498919E1 +1.859427000E3,6.011873423E1 +1.859676000E3,5.796702396E1 +1.859911000E3,5.928400715E1 +1.860149000E3,5.826876733E1 +1.860396000E3,6.038481253E1 +1.860680000E3,6.030085568E1 +1.860944000E3,5.890166619E1 +1.861209000E3,6.654379171E1 +1.861519000E3,6.016187265E1 +1.861755000E3,6.139297542E1 +1.862049000E3,6.289106669E1 +1.862388000E3,5.872946965E1 +1.862675000E3,5.800836625E1 +1.862993000E3,5.701819685E1 +1.863248000E3,5.488359846E1 +1.863519000E3,5.747446133E1 +1.863768000E3,5.996388232E1 +1.864087000E3,5.686047813E1 +1.864334000E3,5.935760915E1 +1.864635000E3,6.438349972E1 +1.864894000E3,6.008599590E1 +1.865205000E3,5.995474236E1 +1.865502000E3,6.596906108E1 +1.865837000E3,6.091064347E1 +1.866114000E3,5.885056970E1 +1.866411000E3,6.474486832E1 +1.866666000E3,5.888758286E1 +1.866964000E3,6.138447683E1 +1.867211000E3,6.032596684E1 +1.867482000E3,5.848476935E1 +1.867736000E3,5.631330849E1 +1.867989000E3,5.927138373E1 +1.868246000E3,5.817171672E1 +1.868499000E3,5.358065381E1 +1.868763000E3,5.500264039E1 +1.869129000E3,5.663946315E1 +1.869384000E3,5.601392416E1 +1.869636000E3,5.640732154E1 +1.869947000E3,5.320213962E1 +1.870207000E3,4.907811811E1 +1.870470000E3,5.784153600E1 +1.870743000E3,5.988355074E1 +1.871011000E3,5.973830135E1 +1.871253000E3,5.769679044E1 +1.871519000E3,5.395770126E1 +1.871765000E3,5.751088186E1 +1.872011000E3,5.342275719E1 +1.872301000E3,5.638616310E1 +1.872563000E3,5.124369984E1 +1.872821000E3,5.357036185E1 +1.873129000E3,5.529809524E1 +1.873386000E3,5.442720524E1 +1.873650000E3,5.306298792E1 +1.873937000E3,5.703507672E1 +1.874184000E3,5.835246426E1 +1.874444000E3,5.638184247E1 +1.874707000E3,5.201779537E1 +1.874972000E3,5.217149520E1 +1.875244000E3,5.757612416E1 +1.875577000E3,5.387788750E1 +1.875865000E3,5.607108884E1 +1.876149000E3,5.692352283E1 +1.876407000E3,5.577296536E1 +1.876687000E3,5.259836493E1 +1.876982000E3,5.467571766E1 +1.877215000E3,5.256317748E1 +1.877521000E3,5.522593862E1 +1.877775000E3,5.432669245E1 +1.878036000E3,5.734031668E1 +1.878314000E3,6.027566119E1 +1.878587000E3,5.567003578E1 +1.878912000E3,5.307720644E1 +1.879176000E3,5.659939353E1 +1.879425000E3,5.110556861E1 +1.879723000E3,5.673190580E1 +1.879969000E3,5.437112204E1 +1.880274000E3,5.433297742E1 +1.880576000E3,5.585075865E1 +1.880875000E3,5.657006430E1 +1.881117000E3,5.701623858E1 +1.881424000E3,5.749679466E1 +1.881673000E3,5.623079196E1 +1.881986000E3,5.545187468E1 +1.882329000E3,5.781610131E1 +1.882611000E3,5.432916720E1 +1.882882000E3,4.940287270E1 +1.883127000E3,5.866223377E1 +1.883391000E3,5.654564177E1 +1.883644000E3,5.888782218E1 +1.883889000E3,5.586307703E1 +1.884148000E3,5.930725555E1 +1.884413000E3,5.963840788E1 +1.884660000E3,5.928611951E1 +1.884926000E3,5.621968819E1 +1.885181000E3,5.811455305E1 +1.885457000E3,5.585646129E1 +1.885714000E3,5.989591718E1 +1.885968000E3,6.058402104E1 +1.886267000E3,5.972100226E1 +1.886517000E3,6.220704457E1 +1.886832000E3,6.037773435E1 +1.887106000E3,6.039308032E1 +1.887385000E3,6.223647696E1 +1.887617000E3,5.854088114E1 +1.887876000E3,6.248517888E1 +1.888128000E3,6.222318884E1 +1.888437000E3,6.070320114E1 +1.888777000E3,5.817372188E1 +1.889076000E3,5.382250608E1 +1.889369000E3,7.004593531E1 +1.889616000E3,6.094415751E1 +1.889913000E3,5.455584628E1 +1.890163000E3,5.387250795E1 +1.890418000E3,5.219742496E1 +1.890714000E3,5.070715955E1 +1.890961000E3,5.362651533E1 +1.891207000E3,5.046817004E1 +1.891453000E3,5.129339201E1 +1.891764000E3,4.856730286E1 +1.892053000E3,5.220705734E1 +1.892321000E3,5.401068171E1 +1.892582000E3,5.109746146E1 +1.892834000E3,5.412675897E1 +1.893090000E3,5.347014573E1 +1.893340000E3,5.092720593E1 +1.893620000E3,5.341316175E1 +1.893886000E3,4.870918930E1 +1.894142000E3,4.929590175E1 +1.894389000E3,4.686294330E1 +1.894692000E3,5.100486031E1 +1.894995000E3,5.087478993E1 +1.895328000E3,4.940372977E1 +1.895606000E3,5.362468443E1 +1.895919000E3,5.608826750E1 +1.896241000E3,5.628756413E1 +1.896497000E3,5.817843169E1 +1.896749000E3,5.809119715E1 +1.897054000E3,5.469613872E1 +1.897287000E3,5.437807476E1 +1.897582000E3,5.794761863E1 +1.897897000E3,6.027023965E1 +1.898145000E3,5.913564460E1 +1.898511000E3,5.510014788E1 +1.898752000E3,5.499817732E1 +1.898999000E3,5.569220222E1 +1.899294000E3,5.368447548E1 +1.899547000E3,5.912109227E1 +1.899841000E3,6.076259223E1 +1.900104000E3,6.153129043E1 +1.900349000E3,5.679462536E1 +1.900634000E3,5.721135074E1 +1.900927000E3,5.674745728E1 +1.901166000E3,5.556227882E1 +1.901462000E3,4.994603734E1 +1.901841000E3,5.122656475E1 +1.902183000E3,5.127903645E1 +1.902436000E3,5.042064547E1 +1.902695000E3,5.425673681E1 +1.902998000E3,5.484388956E1 +1.903228000E3,5.322356297E1 +1.903483000E3,5.161093724E1 +1.903730000E3,5.302125687E1 +1.904019000E3,5.241958307E1 +1.904307000E3,5.116604316E1 +1.904614000E3,5.319513233E1 +1.904991000E3,5.530482451E1 +1.905243000E3,5.829713614E1 +1.905528000E3,4.891404960E1 +1.905774000E3,5.408250868E1 +1.906083000E3,5.272747143E1 +1.906381000E3,5.216068921E1 +1.906624000E3,5.292203291E1 +1.906885000E3,5.243548019E1 +1.907149000E3,4.981562618E1 +1.907448000E3,5.500279348E1 +1.907742000E3,5.481190601E1 +1.907999000E3,5.369800103E1 +1.908315000E3,6.390197571E1 +1.908579000E3,6.517990141E1 +1.908825000E3,5.822949910E1 +1.909064000E3,5.655728640E1 +1.909356000E3,5.292186662E1 +1.909600000E3,5.069372058E1 +1.909895000E3,5.368100654E1 +1.910138000E3,5.616508462E1 +1.910432000E3,6.285923815E1 +1.910670000E3,6.254266196E1 +1.910979000E3,5.628599605E1 +1.911260000E3,5.616383984E1 +1.911482000E3,5.074231882E1 +1.911728000E3,5.398858859E1 +1.911977000E3,5.585565083E1 +1.912237000E3,5.777112626E1 +1.912532000E3,6.036032129E1 +1.912783000E3,6.077032608E1 +1.913052000E3,5.839282786E1 +1.913316000E3,5.397912726E1 +1.913575000E3,5.582771928E1 +1.913848000E3,5.579334158E1 +1.914143000E3,5.778281485E1 +1.914450000E3,5.783459906E1 +1.914713000E3,6.199387267E1 +1.914943000E3,6.173706737E1 +1.915185000E3,5.621060236E1 +1.915433000E3,5.563784893E1 +1.915692000E3,5.470990272E1 +1.915951000E3,5.469960060E1 +1.916217000E3,6.171536544E1 +1.916470000E3,5.862130066E1 +1.916777000E3,5.839467924E1 +1.917028000E3,5.552209731E1 +1.917324000E3,5.763067987E1 +1.917687000E3,5.981653815E1 +1.917967000E3,5.790518789E1 +1.918210000E3,5.220287871E1 +1.918457000E3,5.707286116E1 +1.918759000E3,5.657529642E1 +1.918997000E3,6.000130629E1 +1.919241000E3,5.708419446E1 +1.919496000E3,5.749223221E1 +1.919768000E3,5.843781753E1 +1.920074000E3,5.671929683E1 +1.920373000E3,5.881070992E1 +1.920621000E3,5.603223824E1 +1.920956000E3,6.053511488E1 +1.921216000E3,5.525745837E1 +1.921476000E3,6.186721324E1 +1.921723000E3,6.214292360E1 +1.922025000E3,5.857206109E1 +1.922320000E3,5.934438900E1 +1.922561000E3,6.077867207E1 +1.922860000E3,5.578255978E1 +1.923099000E3,5.723807446E1 +1.923347000E3,5.785786452E1 +1.923636000E3,6.037753633E1 +1.923892000E3,6.106459696E1 +1.924223000E3,5.873119773E1 +1.924511000E3,5.862235861E1 +1.924814000E3,5.732521131E1 +1.925070000E3,5.161553090E1 +1.925373000E3,5.243351685E1 +1.925626000E3,5.041805469E1 +1.925919000E3,5.543714980E1 +1.926175000E3,5.338657816E1 +1.926425000E3,5.616854022E1 +1.926695000E3,5.699328540E1 +1.926965000E3,5.787312270E1 +1.927305000E3,5.558473925E1 +1.927614000E3,5.927685087E1 +1.927880000E3,6.254706193E1 +1.928125000E3,6.079427969E1 +1.928390000E3,5.412440784E1 +1.928634000E3,5.441834540E1 +1.928928000E3,5.220486428E1 +1.929215000E3,5.210908233E1 +1.929515000E3,5.352367419E1 +1.929766000E3,5.356350702E1 +1.930022000E3,5.184851991E1 +1.930322000E3,5.311742835E1 +1.930607000E3,5.453786592E1 +1.930870000E3,5.814140937E1 +1.931155000E3,5.779656646E1 +1.931440000E3,5.488757891E1 +1.931727000E3,5.385182390E1 +1.931981000E3,5.705491580E1 +1.932229000E3,5.576165296E1 +1.932491000E3,5.781333383E1 +1.932730000E3,5.616780300E1 +1.932971000E3,5.400230043E1 +1.933232000E3,5.518627884E1 +1.933510000E3,5.211300688E1 +1.933795000E3,5.292820587E1 +1.934127000E3,5.382097927E1 +1.934390000E3,6.102840439E1 +1.934671000E3,5.486275546E1 +1.934948000E3,5.206103103E1 +1.935198000E3,5.739150099E1 +1.935506000E3,5.310844778E1 +1.935756000E3,5.392681604E1 +1.936008000E3,5.250003264E1 +1.936256000E3,5.801399662E1 +1.936524000E3,5.696032820E1 +1.936785000E3,5.414492013E1 +1.937032000E3,5.536982174E1 +1.937391000E3,5.750979970E1 +1.937677000E3,5.370086514E1 +1.937972000E3,5.359409099E1 +1.938241000E3,4.663692517E1 +1.938508000E3,4.740501122E1 +1.938772000E3,4.812116539E1 +1.939051000E3,4.940260018E1 +1.939311000E3,5.211533825E1 +1.939553000E3,5.351181789E1 +1.939796000E3,5.597808269E1 +1.940081000E3,5.841474518E1 +1.940347000E3,5.900966915E1 +1.940680000E3,5.844032848E1 +1.940932000E3,6.047778057E1 +1.941187000E3,6.179458512E1 +1.941488000E3,5.569784051E1 +1.941730000E3,5.535681081E1 +1.941971000E3,5.409739450E1 +1.942227000E3,5.551927029E1 +1.942555000E3,5.259381649E1 +1.942855000E3,5.090743186E1 +1.943101000E3,5.330610416E1 +1.943383000E3,5.722147303E1 +1.943610000E3,5.564867598E1 +1.944013000E3,5.456395907E1 +1.944265000E3,5.442943523E1 +1.944557000E3,5.982581487E1 +1.944820000E3,5.751114261E1 +1.945081000E3,5.998630171E1 +1.945333000E3,5.908382499E1 +1.945646000E3,5.828329647E1 +1.945951000E3,5.602282904E1 +1.946199000E3,6.197108249E1 +1.946496000E3,5.533258874E1 +1.946770000E3,5.704060455E1 +1.947126000E3,5.457797110E1 +1.947363000E3,5.430717613E1 +1.947637000E3,5.940687974E1 +1.947953000E3,5.436076271E1 +1.948235000E3,5.660912008E1 +1.948550000E3,5.504399315E1 +1.948861000E3,5.464999644E1 +1.949122000E3,5.565806372E1 +1.949384000E3,5.190569146E1 +1.949646000E3,5.153937000E1 +1.949972000E3,5.628803963E1 +1.950248000E3,5.966716422E1 +1.950577000E3,5.820503815E1 +1.950822000E3,5.652058726E1 +1.951118000E3,5.802645793E1 +1.951349000E3,5.727916959E1 +1.951597000E3,5.784165576E1 +1.951900000E3,5.999225852E1 +1.952197000E3,6.048891831E1 +1.952433000E3,5.821794698E1 +1.952728000E3,5.416701806E1 +1.952964000E3,5.183738883E1 +1.953295000E3,5.384161890E1 +1.953675000E3,5.430376660E1 +1.953907000E3,5.257088063E1 +1.954151000E3,5.392186903E1 +1.954431000E3,6.167467738E1 +1.954678000E3,5.958790115E1 +1.954923000E3,5.822018477E1 +1.955185000E3,5.808448347E1 +1.955447000E3,5.733347749E1 +1.955703000E3,6.261390980E1 +1.956005000E3,5.829281758E1 +1.956246000E3,5.949056653E1 +1.956541000E3,5.839747914E1 +1.956810000E3,5.770882066E1 +1.957120000E3,5.690637302E1 +1.957421000E3,5.796705847E1 +1.957668000E3,5.867770180E1 +1.957936000E3,5.696585443E1 +1.958216000E3,5.738908049E1 +1.958463000E3,5.842272770E1 +1.958721000E3,5.966072568E1 +1.959033000E3,6.340725612E1 +1.959281000E3,6.193544465E1 +1.959566000E3,5.927164536E1 +1.959888000E3,6.146900670E1 +1.960249000E3,6.270186363E1 +1.960512000E3,5.695216686E1 +1.960779000E3,5.725758836E1 +1.961040000E3,5.788439963E1 +1.961303000E3,6.286977927E1 +1.961557000E3,6.361469653E1 +1.961802000E3,6.277422462E1 +1.962060000E3,6.032704022E1 +1.962310000E3,5.600516510E1 +1.962586000E3,6.188879617E1 +1.962805000E3,6.271522018E1 +1.963107000E3,6.025198847E1 +1.963453000E3,6.001529679E1 +1.963728000E3,5.375240125E1 +1.964036000E3,5.055228276E1 +1.964331000E3,5.257092943E1 +1.964568000E3,5.708661900E1 +1.964868000E3,5.629448239E1 +1.965178000E3,5.425890416E1 +1.965431000E3,5.575014937E1 +1.965679000E3,5.801461965E1 +1.965931000E3,5.400244473E1 +1.966191000E3,5.474887871E1 +1.966525000E3,5.196538635E1 +1.966783000E3,5.536524974E1 +1.967040000E3,5.974878933E1 +1.967338000E3,6.200932986E1 +1.967644000E3,6.295299888E1 +1.967909000E3,6.272635154E1 +1.968153000E3,5.902465660E1 +1.968474000E3,5.897159976E1 +1.968773000E3,5.506910037E1 +1.969014000E3,5.622897524E1 +1.969254000E3,5.457019516E1 +1.969505000E3,5.648049168E1 +1.969892000E3,5.656883155E1 +1.970152000E3,5.598423772E1 +1.970446000E3,5.186768597E1 +1.970726000E3,5.526177698E1 +1.971020000E3,5.810907246E1 +1.971304000E3,5.262875480E1 +1.971613000E3,5.141696402E1 +1.971915000E3,5.298264424E1 +1.972196000E3,5.641801556E1 +1.972483000E3,5.228737642E1 +1.972725000E3,5.649656740E1 +1.973036000E3,5.867645632E1 +1.973323000E3,5.679238187E1 +1.973633000E3,5.959682402E1 +1.973935000E3,5.617109756E1 +1.974236000E3,5.473085666E1 +1.974547000E3,5.589564412E1 +1.974836000E3,5.691193712E1 +1.975136000E3,5.808545953E1 +1.975385000E3,5.922478363E1 +1.975631000E3,5.707996013E1 +1.975881000E3,5.820923707E1 +1.976194000E3,5.897957095E1 +1.976453000E3,6.019944728E1 +1.976814000E3,6.472960186E1 +1.977076000E3,6.312075290E1 +1.977356000E3,5.886370461E1 +1.977618000E3,5.750754913E1 +1.977917000E3,5.531180501E1 +1.978189000E3,5.815410032E1 +1.978463000E3,5.735965971E1 +1.978732000E3,5.593071322E1 +1.978999000E3,5.835041964E1 +1.979245000E3,5.646810288E1 +1.979493000E3,5.392299875E1 +1.979902000E3,5.430590311E1 +1.980142000E3,5.447583546E1 +1.980384000E3,5.260389735E1 +1.980632000E3,5.537561423E1 +1.980873000E3,5.836960119E1 +1.981120000E3,5.425821286E1 +1.981389000E3,5.153336720E1 +1.981618000E3,5.420085973E1 +1.981915000E3,5.457985954E1 +1.982165000E3,5.637026749E1 +1.982404000E3,6.009656118E1 +1.982718000E3,5.903298531E1 +1.983029000E3,5.665152425E1 +1.983296000E3,5.778918758E1 +1.983538000E3,5.444374512E1 +1.983786000E3,5.619088618E1 +1.984047000E3,6.088482249E1 +1.984304000E3,5.678390940E1 +1.984575000E3,5.873820942E1 +1.984842000E3,6.004736340E1 +1.985142000E3,6.191465398E1 +1.985405000E3,6.154032648E1 +1.985653000E3,5.967034113E1 +1.985913000E3,5.855925349E1 +1.986211000E3,5.529356341E1 +1.986557000E3,5.823190054E1 +1.986847000E3,5.749679599E1 +1.987098000E3,5.855123449E1 +1.987369000E3,5.999203293E1 +1.987610000E3,6.139424716E1 +1.987876000E3,5.730078222E1 +1.988126000E3,5.649537684E1 +1.988425000E3,5.872458305E1 +1.988727000E3,5.704322852E1 +1.989024000E3,6.264447151E1 +1.989326000E3,5.763604303E1 +1.989641000E3,5.657919006E1 +1.989961000E3,5.706004491E1 +1.990255000E3,6.115159729E1 +1.990571000E3,5.721964371E1 +1.990829000E3,5.780420781E1 +1.991088000E3,5.782228640E1 +1.991353000E3,5.791642518E1 +1.991611000E3,5.820065680E1 +1.991935000E3,5.675756460E1 +1.992174000E3,5.720433643E1 +1.992482000E3,5.907701380E1 +1.992770000E3,5.791335620E1 +1.993107000E3,5.504589678E1 +1.993369000E3,6.117578252E1 +1.993619000E3,5.902046786E1 +1.993912000E3,6.024153080E1 +1.994216000E3,6.061721402E1 +1.994464000E3,6.185610038E1 +1.994715000E3,5.902440055E1 +1.995005000E3,6.112374185E1 +1.995249000E3,5.664710018E1 +1.995551000E3,5.841351492E1 +1.995787000E3,5.961393992E1 +1.996119000E3,5.614463215E1 +1.996387000E3,5.528223904E1 +1.996647000E3,5.706960328E1 +1.996947000E3,5.544195306E1 +1.997203000E3,5.747091679E1 +1.997452000E3,5.434233120E1 +1.997769000E3,5.794847441E1 +1.998019000E3,5.504963001E1 +1.998267000E3,5.470768853E1 +1.998498000E3,6.426300701E1 +1.998789000E3,6.070245213E1 +1.999090000E3,5.893271279E1 +1.999390000E3,5.873668669E1 +1.999698000E3,6.355663744E1 +1.999962000E3,6.500393379E1 +2.000214000E3,6.177640112E1 +2.000471000E3,6.122167361E1 +2.000775000E3,5.982616779E1 +2.001079000E3,5.944943300E1 +2.001339000E3,5.772707313E1 +2.001595000E3,5.934980117E1 +2.001862000E3,6.221301291E1 +2.002160000E3,6.098009785E1 +2.002491000E3,6.205877653E1 +2.002758000E3,5.978743388E1 +2.003062000E3,6.141065367E1 +2.003307000E3,6.146860620E1 +2.003555000E3,6.323368939E1 +2.003884000E3,6.072009355E1 +2.004185000E3,6.072017978E1 +2.004424000E3,6.079512782E1 +2.004673000E3,6.651000141E1 +2.004939000E3,6.185812181E1 +2.005202000E3,5.705353418E1 +2.005472000E3,5.820400818E1 +2.005800000E3,5.682542431E1 +2.006070000E3,6.224932691E1 +2.006350000E3,5.654791681E1 +2.006601000E3,6.160831985E1 +2.006857000E3,6.443497299E1 +2.007101000E3,6.091208862E1 +2.007395000E3,5.867323811E1 +2.007635000E3,5.850229824E1 +2.007945000E3,6.307832054E1 +2.008197000E3,5.931313312E1 +2.008453000E3,5.632990721E1 +2.008711000E3,5.662998085E1 +2.009032000E3,5.416655753E1 +2.009268000E3,6.273936844E1 +2.009521000E3,6.129068926E1 +2.009786000E3,6.485712301E1 +2.010037000E3,6.605690213E1 +2.010298000E3,6.243431425E1 +2.010541000E3,6.062714733E1 +2.010780000E3,6.369220544E1 +2.011082000E3,5.933701247E1 +2.011330000E3,6.141658123E1 +2.011605000E3,6.232326760E1 +2.011893000E3,5.983132844E1 +2.012226000E3,6.085684837E1 +2.012489000E3,5.844434641E1 +2.012752000E3,5.992485437E1 +2.013005000E3,5.745164278E1 +2.013272000E3,5.489362140E1 +2.013573000E3,5.734004331E1 +2.013861000E3,5.569303233E1 +2.014170000E3,5.619919203E1 +2.014467000E3,5.719248521E1 +2.014715000E3,5.898607642E1 +2.015015000E3,5.312334941E1 +2.015258000E3,4.707687024E1 +2.015594000E3,5.326213693E1 +2.015822000E3,4.977107581E1 +2.016071000E3,5.399380901E1 +2.016333000E3,5.528915982E1 +2.016634000E3,5.648344312E1 +2.016879000E3,5.853194276E1 +2.017143000E3,5.969968429E1 +2.017429000E3,6.121498547E1 +2.017723000E3,5.933414775E1 +2.017961000E3,6.375558171E1 +2.018248000E3,6.102538403E1 +2.018558000E3,6.066629858E1 +2.018830000E3,5.238394429E1 +2.019065000E3,5.528030903E1 +2.019316000E3,5.711235169E1 +2.019578000E3,6.069913503E1 +2.019847000E3,5.344730110E1 +2.020093000E3,5.593398360E1 +2.020413000E3,5.112453486E1 +2.020668000E3,5.529600172E1 +2.020922000E3,5.816841553E1 +2.021177000E3,6.105447683E1 +2.021449000E3,5.967528890E1 +2.021707000E3,5.677568689E1 +2.022115000E3,5.613246875E1 +2.022403000E3,5.846674311E1 +2.022679000E3,5.999468936E1 +2.022930000E3,6.268951545E1 +2.023232000E3,6.037378186E1 +2.023532000E3,6.123290650E1 +2.023784000E3,6.425880775E1 +2.024094000E3,6.043334594E1 +2.024356000E3,6.287321918E1 +2.024616000E3,6.178703582E1 +2.024868000E3,5.974424575E1 +2.025152000E3,5.863905018E1 +2.025429000E3,5.669082005E1 +2.025716000E3,6.192616195E1 +2.026008000E3,6.367561928E1 +2.026300000E3,6.061621393E1 +2.026543000E3,6.411900249E1 +2.026802000E3,6.060951858E1 +2.027066000E3,5.606119041E1 +2.027395000E3,5.099901519E1 +2.027693000E3,5.622472082E1 +2.027945000E3,5.354940616E1 +2.028237000E3,6.282566888E1 +2.028553000E3,5.775523802E1 +2.028868000E3,6.095006183E1 +2.029133000E3,6.333727439E1 +2.029399000E3,5.925545982E1 +2.029660000E3,6.045827699E1 +2.029962000E3,5.594587825E1 +2.030223000E3,5.708579081E1 +2.030478000E3,5.777704597E1 +2.030737000E3,5.406349508E1 +2.030990000E3,5.544037764E1 +2.031246000E3,5.912518025E1 +2.031508000E3,5.924806900E1 +2.031864000E3,6.105667153E1 +2.032110000E3,5.838466956E1 +2.032350000E3,5.923100201E1 +2.032598000E3,6.024290558E1 +2.032866000E3,5.971089342E1 +2.033112000E3,5.478665804E1 +2.033351000E3,5.966531235E1 +2.033644000E3,5.755565544E1 +2.033892000E3,5.982004182E1 +2.034190000E3,5.797424789E1 +2.034425000E3,5.856301863E1 +2.034717000E3,6.325478319E1 +2.035053000E3,6.168254294E1 +2.035364000E3,6.188857455E1 +2.035619000E3,6.156039581E1 +2.035901000E3,6.235770270E1 +2.036169000E3,6.262779828E1 +2.036471000E3,6.142542176E1 +2.036764000E3,5.923845966E1 +2.037022000E3,5.827266837E1 +2.037307000E3,6.314641141E1 +2.037615000E3,5.460230698E1 +2.037870000E3,5.396400232E1 +2.038120000E3,5.561122002E1 +2.038463000E3,5.928400391E1 +2.038767000E3,5.668934966E1 +2.039069000E3,5.831653467E1 +2.039316000E3,5.267103167E1 +2.039622000E3,5.557794232E1 +2.039859000E3,5.543606804E1 +2.040196000E3,5.836770370E1 +2.040499000E3,5.678092478E1 +2.040751000E3,5.612506795E1 +2.041024000E3,5.868430679E1 +2.041274000E3,5.264121586E1 +2.041581000E3,5.828774790E1 +2.041841000E3,5.647338053E1 +2.042088000E3,6.053709731E1 +2.042403000E3,5.614689861E1 +2.042691000E3,5.714845923E1 +2.042944000E3,5.256418368E1 +2.043191000E3,5.601486494E1 +2.043466000E3,5.810869150E1 +2.043715000E3,5.529893852E1 +2.043979000E3,5.708153712E1 +2.044245000E3,5.690179830E1 +2.044568000E3,5.994555064E1 +2.044825000E3,6.172126409E1 +2.045096000E3,6.015473895E1 +2.045377000E3,5.509344178E1 +2.045629000E3,5.568915719E1 +2.045902000E3,5.938619751E1 +2.046155000E3,5.534852098E1 +2.046409000E3,5.905391706E1 +2.046693000E3,5.250115201E1 +2.046947000E3,5.587771233E1 +2.047277000E3,5.599930929E1 +2.047517000E3,5.586822515E1 +2.047803000E3,5.740436533E1 +2.048105000E3,5.413600866E1 +2.048476000E3,5.595836709E1 +2.048737000E3,5.982743631E1 +2.048992000E3,6.001131240E1 +2.049305000E3,5.629713962E1 +2.049568000E3,5.505265617E1 +2.049904000E3,5.686004167E1 +2.050199000E3,6.078932545E1 +2.050470000E3,5.919030857E1 +2.050773000E3,5.640754436E1 +2.051052000E3,5.864124078E1 +2.051311000E3,5.683150656E1 +2.051642000E3,5.391893615E1 +2.051926000E3,4.513639699E1 +2.052174000E3,5.750824000E1 +2.052467000E3,5.945309138E1 +2.052703000E3,6.260915402E1 +2.052981000E3,6.017408744E1 +2.053276000E3,6.158293130E1 +2.053516000E3,6.279041899E1 +2.053759000E3,6.005362243E1 +2.054030000E3,5.776050932E1 +2.054357000E3,5.906607942E1 +2.054642000E3,6.002924771E1 +2.054978000E3,5.708591672E1 +2.055267000E3,5.932996992E1 +2.055552000E3,5.830703641E1 +2.055812000E3,5.428102985E1 +2.056063000E3,5.893384546E1 +2.056382000E3,6.028305726E1 +2.056682000E3,5.904357096E1 +2.056923000E3,6.015407432E1 +2.057171000E3,5.801677968E1 +2.057418000E3,6.561794532E1 +2.057665000E3,6.751214025E1 +2.057959000E3,5.899748641E1 +2.058279000E3,5.616162884E1 +2.058571000E3,5.813941707E1 +2.058834000E3,6.236684118E1 +2.059132000E3,6.058455193E1 +2.059376000E3,6.004963560E1 +2.059687000E3,6.255152045E1 +2.059984000E3,6.155697025E1 +2.060225000E3,6.124056229E1 +2.060517000E3,6.072549607E1 +2.060756000E3,6.119225814E1 +2.061060000E3,5.953618039E1 +2.061302000E3,5.869582322E1 +2.061578000E3,6.248269042E1 +2.061841000E3,6.070173510E1 +2.062089000E3,6.023992255E1 +2.062337000E3,5.848175462E1 +2.062607000E3,5.092907116E1 +2.062859000E3,5.442118268E1 +2.063124000E3,5.298599309E1 +2.063425000E3,6.030333428E1 +2.063671000E3,5.835700379E1 +2.063954000E3,5.943633389E1 +2.064268000E3,5.761479859E1 +2.064577000E3,5.520238299E1 +2.064822000E3,5.901822557E1 +2.065074000E3,5.705952734E1 +2.065339000E3,6.136116330E1 +2.065603000E3,5.746483296E1 +2.065865000E3,5.867757380E1 +2.066141000E3,5.709322981E1 +2.066441000E3,5.775131141E1 +2.066691000E3,5.886237327E1 +2.067036000E3,5.617972984E1 +2.067288000E3,5.802507148E1 +2.067560000E3,6.044497816E1 +2.067891000E3,5.450044868E1 +2.068148000E3,5.616761260E1 +2.068412000E3,6.243097888E1 +2.068673000E3,5.783788439E1 +2.068946000E3,5.764761585E1 +2.069196000E3,5.683737954E1 +2.069468000E3,5.609890848E1 +2.069778000E3,5.465619904E1 +2.070034000E3,5.368960846E1 +2.070328000E3,6.032893819E1 +2.070574000E3,5.862927742E1 +2.070842000E3,5.635830209E1 +2.071101000E3,5.822198053E1 +2.071339000E3,5.691346983E1 +2.071597000E3,5.865778618E1 +2.071860000E3,5.810560725E1 +2.072128000E3,5.968009174E1 +2.072425000E3,5.833852533E1 +2.072667000E3,5.784540163E1 +2.072934000E3,5.644439458E1 +2.073184000E3,5.178260396E1 +2.073488000E3,5.751445421E1 +2.073769000E3,5.974800721E1 +2.074068000E3,6.534291023E1 +2.074348000E3,6.371076652E1 +2.074624000E3,6.156132937E1 +2.074877000E3,6.012113548E1 +2.075119000E3,6.026351151E1 +2.075377000E3,6.142675581E1 +2.075661000E3,6.194478144E1 +2.075914000E3,6.183865569E1 +2.076267000E3,6.387512541E1 +2.076547000E3,6.077311287E1 +2.076803000E3,6.130963963E1 +2.077056000E3,5.862622582E1 +2.077295000E3,5.463497219E1 +2.077610000E3,5.484231095E1 +2.077891000E3,6.099801434E1 +2.078171000E3,5.475621164E1 +2.078466000E3,5.955577801E1 +2.078709000E3,5.720097088E1 +2.078954000E3,5.661944912E1 +2.079224000E3,5.443336360E1 +2.079503000E3,5.917559782E1 +2.079800000E3,5.424380486E1 +2.080057000E3,6.013762169E1 +2.080307000E3,6.100643768E1 +2.080558000E3,6.205128007E1 +2.080810000E3,6.007904071E1 +2.081092000E3,6.423414837E1 +2.081354000E3,5.938817614E1 +2.081601000E3,6.006860062E1 +2.081845000E3,5.833570272E1 +2.082143000E3,5.962915676E1 +2.082396000E3,5.844615966E1 +2.082663000E3,5.932060291E1 +2.082921000E3,6.037844323E1 +2.083227000E3,5.719168160E1 +2.083487000E3,5.597578938E1 +2.083743000E3,5.236775830E1 +2.084062000E3,5.471900653E1 +2.084318000E3,5.178371688E1 +2.084618000E3,5.707729304E1 +2.084858000E3,5.526812689E1 +2.085154000E3,5.716405930E1 +2.085391000E3,5.478798233E1 +2.085687000E3,5.496315929E1 +2.085932000E3,5.701239101E1 +2.086228000E3,5.776438308E1 +2.086467000E3,5.628202894E1 +2.086760000E3,5.042244376E1 +2.087015000E3,5.775963511E1 +2.087362000E3,4.982890988E1 +2.087671000E3,4.785672217E1 +2.087922000E3,4.762697394E1 +2.088178000E3,5.046726223E1 +2.088438000E3,4.890262424E1 +2.088711000E3,5.501277631E1 +2.088981000E3,5.666001705E1 +2.089249000E3,6.014252161E1 +2.089513000E3,5.925311989E1 +2.089806000E3,6.173820636E1 +2.090063000E3,5.350884215E1 +2.090366000E3,5.736408779E1 +2.090744000E3,5.450936109E1 +2.091005000E3,5.763377323E1 +2.091253000E3,6.042269191E1 +2.091515000E3,5.484903903E1 +2.091757000E3,5.882101591E1 +2.092028000E3,5.833139845E1 +2.092280000E3,5.703430671E1 +2.092527000E3,5.247783814E1 +2.092809000E3,5.233323676E1 +2.093037000E3,5.202869643E1 +2.093354000E3,5.628845797E1 +2.093634000E3,5.325396544E1 +2.094006000E3,5.654992892E1 +2.094280000E3,5.713253789E1 +2.094541000E3,5.967664240E1 +2.094800000E3,5.750232678E1 +2.095069000E3,5.544480371E1 +2.095333000E3,5.462176641E1 +2.095596000E3,5.811248949E1 +2.095853000E3,6.196847972E1 +2.096192000E3,5.842850461E1 +2.096488000E3,5.597774452E1 +2.096726000E3,5.601282925E1 +2.097104000E3,5.625832805E1 +2.097364000E3,5.315488909E1 +2.097602000E3,5.287250653E1 +2.097844000E3,5.523708836E1 +2.098081000E3,5.724292600E1 +2.098340000E3,5.659511238E1 +2.098670000E3,5.675324149E1 +2.098945000E3,5.485884276E1 +2.099219000E3,5.694143956E1 +2.099469000E3,5.561655413E1 +2.099765000E3,5.844909410E1 +2.100011000E3,6.135621316E1 +2.100343000E3,5.968766012E1 +2.100584000E3,5.173347950E1 +2.100832000E3,5.415548255E1 +2.101090000E3,5.271968845E1 +2.101339000E3,5.007174890E1 +2.101624000E3,5.279525002E1 +2.101895000E3,5.358558767E1 +2.102197000E3,5.559048142E1 +2.102438000E3,5.476305303E1 +2.102705000E3,5.237114911E1 +2.102947000E3,5.014972007E1 +2.103218000E3,4.895902935E1 +2.103469000E3,5.192053997E1 +2.103853000E3,4.647138436E1 +2.104101000E3,4.837766327E1 +2.104448000E3,5.088929287E1 +2.104740000E3,5.561591777E1 +2.104997000E3,5.440319534E1 +2.105260000E3,5.347164399E1 +2.105561000E3,5.151610441E1 +2.105813000E3,5.075382634E1 +2.106121000E3,5.244425755E1 +2.106357000E3,5.269617654E1 +2.106663000E3,5.149027406E1 +2.106954000E3,5.659456733E1 +2.107266000E3,5.282561460E1 +2.107606000E3,5.407918273E1 +2.107883000E3,5.643922092E1 +2.108164000E3,5.169657105E1 +2.108480000E3,5.713744586E1 +2.108748000E3,5.931186178E1 +2.109003000E3,5.645689600E1 +2.109252000E3,5.322874786E1 +2.109552000E3,5.363731782E1 +2.109821000E3,5.353815648E1 +2.110077000E3,5.445551750E1 +2.110418000E3,5.491110228E1 +2.110669000E3,5.291647814E1 +2.110921000E3,5.202914132E1 +2.111180000E3,5.363241827E1 +2.111479000E3,5.566624291E1 +2.111721000E3,5.645238247E1 +2.112027000E3,5.458458697E1 +2.112294000E3,5.469783372E1 +2.112597000E3,5.582449562E1 +2.112854000E3,5.595416398E1 +2.113105000E3,5.113785865E1 +2.113352000E3,6.248282803E1 +2.113711000E3,5.880495226E1 +2.113968000E3,5.941805617E1 +2.114248000E3,5.561632009E1 +2.114507000E3,5.501810850E1 +2.114754000E3,5.936291007E1 +2.115053000E3,6.127733734E1 +2.115321000E3,6.057491273E1 +2.115616000E3,6.127323198E1 +2.115893000E3,5.760488174E1 +2.116193000E3,6.030881831E1 +2.116434000E3,5.967518116E1 +2.116722000E3,5.720938908E1 +2.117066000E3,5.605932878E1 +2.117338000E3,6.068190844E1 +2.117598000E3,5.400374866E1 +2.117892000E3,5.332007667E1 +2.118133000E3,4.991979059E1 +2.118428000E3,5.700198654E1 +2.118666000E3,5.878418983E1 +2.118922000E3,5.703766890E1 +2.119230000E3,5.731012811E1 +2.119515000E3,5.865622099E1 +2.119741000E3,5.772295719E1 +2.120015000E3,5.851982083E1 +2.120322000E3,5.958645129E1 +2.120616000E3,6.233814130E1 +2.120861000E3,6.002711287E1 +2.121162000E3,5.939190004E1 +2.121437000E3,5.758195225E1 +2.121690000E3,5.564648712E1 +2.121946000E3,5.336629511E1 +2.122218000E3,5.199121426E1 +2.122476000E3,5.906368298E1 +2.122759000E3,5.917930836E1 +2.123014000E3,5.824882047E1 +2.123266000E3,5.770359270E1 +2.123492000E3,5.695638802E1 +2.123777000E3,5.720151485E1 +2.124027000E3,6.045411810E1 +2.124327000E3,5.540258870E1 +2.124575000E3,5.828000252E1 +2.124835000E3,5.500577731E1 +2.125106000E3,5.926473821E1 +2.125354000E3,5.472888078E1 +2.125611000E3,5.530970077E1 +2.125862000E3,5.595037084E1 +2.126117000E3,5.439239133E1 +2.126432000E3,5.961943996E1 +2.126692000E3,5.841091801E1 +2.126944000E3,5.863137443E1 +2.127282000E3,5.731398304E1 +2.127577000E3,5.665374527E1 +2.127843000E3,5.476493539E1 +2.128129000E3,5.580929465E1 +2.128437000E3,5.565551021E1 +2.128739000E3,5.869101147E1 +2.129026000E3,5.827114612E1 +2.129307000E3,5.507536074E1 +2.129577000E3,5.532393691E1 +2.129934000E3,5.233850306E1 +2.130215000E3,5.514372423E1 +2.130466000E3,5.757947445E1 +2.130714000E3,6.126034226E1 +2.131015000E3,6.074916673E1 +2.131279000E3,5.864911171E1 +2.131564000E3,5.680524431E1 +2.131825000E3,6.002252741E1 +2.132078000E3,5.953076168E1 +2.132390000E3,6.027427680E1 +2.132647000E3,5.955779136E1 +2.132902000E3,5.835756058E1 +2.133223000E3,6.286787860E1 +2.133471000E3,6.057291506E1 +2.133724000E3,5.893793659E1 +2.134002000E3,5.508555746E1 +2.134257000E3,5.619881839E1 +2.134512000E3,5.505764062E1 +2.134784000E3,5.808922162E1 +2.135054000E3,5.334583096E1 +2.135313000E3,5.298019930E1 +2.135595000E3,5.025342296E1 +2.135812000E3,5.409382682E1 +2.136057000E3,5.580950424E1 +2.136332000E3,5.523743716E1 +2.136661000E3,5.499005541E1 +2.136917000E3,5.745623005E1 +2.137196000E3,5.149169849E1 +2.137449000E3,5.261206885E1 +2.137711000E3,5.487518376E1 +2.138022000E3,5.898871991E1 +2.138270000E3,5.852026830E1 +2.138564000E3,5.868858262E1 +2.138802000E3,5.736353209E1 +2.139066000E3,5.529465652E1 +2.139332000E3,5.762578865E1 +2.139672000E3,5.790185487E1 +2.139930000E3,5.792373283E1 +2.140278000E3,5.597904656E1 +2.140535000E3,5.355980456E1 +2.140856000E3,5.411887429E1 +2.141146000E3,5.094976839E1 +2.141467000E3,5.658279242E1 +2.141735000E3,6.043792292E1 +2.142041000E3,5.996632022E1 +2.142276000E3,6.230155616E1 +2.142526000E3,6.102528468E1 +2.142783000E3,5.770338577E1 +2.143124000E3,5.827243883E1 +2.143406000E3,5.367650147E1 +2.143645000E3,5.777094487E1 +2.143915000E3,5.851595499E1 +2.144175000E3,5.573729509E1 +2.144454000E3,5.467626304E1 +2.144700000E3,5.699765591E1 +2.144968000E3,5.692170932E1 +2.145246000E3,6.030210344E1 +2.145550000E3,5.876913066E1 +2.145797000E3,5.698149837E1 +2.146042000E3,5.982717784E1 +2.146368000E3,5.905293636E1 +2.146676000E3,5.947032966E1 +2.146922000E3,5.910471730E1 +2.147225000E3,6.065874797E1 +2.147524000E3,5.680135408E1 +2.147831000E3,5.451199701E1 +2.148090000E3,5.301325775E1 +2.148365000E3,5.466040661E1 +2.148665000E3,5.658013689E1 +2.148952000E3,5.410667827E1 +2.149249000E3,5.788683658E1 +2.149597000E3,5.873903650E1 +2.149910000E3,5.314379433E1 +2.150150000E3,5.564952940E1 +2.150451000E3,6.000220607E1 +2.150691000E3,6.235870620E1 +2.150965000E3,6.387461990E1 +2.151194000E3,6.491001134E1 +2.151449000E3,5.932544814E1 +2.151756000E3,6.117684525E1 +2.152011000E3,6.059885605E1 +2.152282000E3,6.303246617E1 +2.152596000E3,6.399854390E1 +2.152961000E3,6.063746268E1 +2.153223000E3,6.122116723E1 +2.153495000E3,5.809397592E1 +2.153749000E3,5.903784259E1 +2.153999000E3,6.047826717E1 +2.154283000E3,5.846467986E1 +2.154537000E3,6.226879102E1 +2.154785000E3,5.980611807E1 +2.155079000E3,5.787450321E1 +2.155375000E3,5.676059962E1 +2.155616000E3,5.395823696E1 +2.155912000E3,5.953639288E1 +2.156221000E3,5.971614724E1 +2.156510000E3,6.039969801E1 +2.156758000E3,5.898776738E1 +2.157015000E3,6.100474003E1 +2.157289000E3,5.750129682E1 +2.157591000E3,5.995540643E1 +2.157844000E3,5.628303244E1 +2.158104000E3,5.892686601E1 +2.158366000E3,5.712884748E1 +2.158667000E3,5.727860760E1 +2.158932000E3,5.313556696E1 +2.159288000E3,5.635583768E1 +2.159555000E3,5.929473664E1 +2.159809000E3,5.396180560E1 +2.160112000E3,5.807023999E1 +2.160354000E3,5.639240346E1 +2.160608000E3,5.917728814E1 +2.160855000E3,5.429000157E1 +2.161130000E3,5.397827395E1 +2.161395000E3,5.647751800E1 +2.161656000E3,5.342605760E1 +2.162007000E3,5.324373839E1 +2.162263000E3,5.439383591E1 +2.162517000E3,5.727066505E1 +2.162888000E3,5.995593964E1 +2.163140000E3,6.130649482E1 +2.163392000E3,6.228130821E1 +2.163644000E3,6.279179388E1 +2.163938000E3,5.559527300E1 +2.164178000E3,5.200550071E1 +2.164481000E3,5.797363767E1 +2.164757000E3,5.902554678E1 +2.165040000E3,5.834647622E1 +2.165303000E3,5.713285380E1 +2.165575000E3,6.343633700E1 +2.165850000E3,5.896208706E1 +2.166219000E3,5.624501583E1 +2.166483000E3,5.696603075E1 +2.166769000E3,5.736978604E1 +2.167027000E3,5.837475894E1 +2.167278000E3,5.768129207E1 +2.167593000E3,5.660761865E1 +2.167856000E3,5.680076310E1 +2.168110000E3,5.883044450E1 +2.168385000E3,5.772028600E1 +2.168649000E3,5.342008664E1 +2.168914000E3,5.359113324E1 +2.169168000E3,5.849769703E1 +2.169536000E3,6.267181821E1 +2.169793000E3,5.719603223E1 +2.170040000E3,5.397233107E1 +2.170287000E3,4.861027503E1 +2.170579000E3,5.741564583E1 +2.170822000E3,6.207812430E1 +2.171115000E3,5.827753689E1 +2.171365000E3,6.042202215E1 +2.171629000E3,5.516417228E1 +2.171895000E3,4.912315476E1 +2.172163000E3,4.718316305E1 +2.172446000E3,5.363129541E1 +2.172813000E3,5.322378335E1 +2.173087000E3,5.228499961E1 +2.173349000E3,5.364722432E1 +2.173618000E3,5.964999675E1 +2.173917000E3,6.116591719E1 +2.174174000E3,5.668310324E1 +2.174436000E3,5.538937699E1 +2.174688000E3,5.539330891E1 +2.174944000E3,5.678019084E1 +2.175197000E3,5.655985061E1 +2.175490000E3,6.211643319E1 +2.175751000E3,5.899842059E1 +2.176153000E3,6.042080027E1 +2.176454000E3,5.956376587E1 +2.176730000E3,5.896716838E1 +2.177048000E3,5.729778676E1 +2.177305000E3,5.512323216E1 +2.177616000E3,5.573124529E1 +2.177883000E3,5.390669828E1 +2.178139000E3,5.435017850E1 +2.178403000E3,5.275779180E1 +2.178672000E3,5.469054235E1 +2.178938000E3,5.701832565E1 +2.179201000E3,6.063134316E1 +2.179540000E3,6.461030243E1 +2.179799000E3,6.345934666E1 +2.180043000E3,6.255021373E1 +2.180348000E3,6.265836689E1 +2.180640000E3,6.125083403E1 +2.180878000E3,5.721943432E1 +2.181125000E3,5.584429631E1 +2.181407000E3,5.679219567E1 +2.181647000E3,5.506189996E1 +2.181962000E3,5.950753578E1 +2.182227000E3,5.684863204E1 +2.182499000E3,5.318048388E1 +2.182825000E3,5.856807028E1 +2.183124000E3,6.201159961E1 +2.183360000E3,5.994279105E1 +2.183661000E3,6.155626338E1 +2.183904000E3,5.760612799E1 +2.184197000E3,5.557219911E1 +2.184436000E3,5.720299401E1 +2.184730000E3,5.496492062E1 +2.184965000E3,5.287669523E1 +2.185272000E3,5.534018340E1 +2.185572000E3,5.047897567E1 +2.185897000E3,5.289532450E1 +2.186149000E3,5.169587435E1 +2.186428000E3,5.811856565E1 +2.186722000E3,5.829930976E1 +2.187016000E3,5.767171180E1 +2.187297000E3,5.167293983E1 +2.187542000E3,5.634712904E1 +2.187793000E3,5.452173951E1 +2.188038000E3,5.242356157E1 +2.188332000E3,5.476946331E1 +2.188570000E3,5.506415879E1 +2.188807000E3,5.842757277E1 +2.189123000E3,5.579731569E1 +2.189400000E3,5.735467547E1 +2.189707000E3,5.510643622E1 +2.189947000E3,5.399605596E1 +2.190247000E3,5.231812124E1 +2.190482000E3,5.397423501E1 +2.190722000E3,5.467291530E1 +2.190972000E3,5.750340972E1 +2.191219000E3,5.451621797E1 +2.191527000E3,5.544744059E1 +2.191775000E3,5.570906247E1 +2.192040000E3,5.570238792E1 +2.192395000E3,5.704729905E1 +2.192674000E3,5.662202644E1 +2.192969000E3,6.130245708E1 +2.193206000E3,5.842239411E1 +2.193505000E3,5.813812757E1 +2.193745000E3,5.643123308E1 +2.194038000E3,5.810403241E1 +2.194275000E3,5.863690353E1 +2.194574000E3,5.519980518E1 +2.194810000E3,5.381530940E1 +2.195092000E3,5.781601666E1 +2.195335000E3,5.699265058E1 +2.195608000E3,5.477338243E1 +2.195929000E3,5.695412826E1 +2.196188000E3,5.575935497E1 +2.196439000E3,5.738570553E1 +2.196686000E3,6.194168224E1 +2.196969000E3,5.888525061E1 +2.197270000E3,5.830791470E1 +2.197516000E3,5.904778886E1 +2.197822000E3,5.987539712E1 +2.198117000E3,5.910637217E1 +2.198355000E3,5.676446576E1 +2.198673000E3,5.632729175E1 +2.198920000E3,5.826507178E1 +2.199227000E3,6.221847088E1 +2.199493000E3,6.023584539E1 +2.199739000E3,6.378124478E1 +2.199975000E3,6.457706819E1 +2.200218000E3,5.781084826E1 +2.200471000E3,5.833307765E1 +2.200715000E3,5.849295856E1 +2.200984000E3,5.695016071E1 +2.201255000E3,5.945608920E1 +2.201511000E3,5.923858391E1 +2.201821000E3,5.975381188E1 +2.202050000E3,5.657071344E1 +2.202297000E3,5.582353283E1 +2.202552000E3,5.634201272E1 +2.202803000E3,5.842061156E1 +2.203080000E3,5.511323996E1 +2.203339000E3,5.333816234E1 +2.203589000E3,5.586132206E1 +2.203867000E3,5.612282959E1 +2.204151000E3,5.390907932E1 +2.204405000E3,5.581501331E1 +2.204648000E3,5.691201261E1 +2.204938000E3,5.605209961E1 +2.205271000E3,5.337227455E1 +2.205520000E3,5.726868677E1 +2.205824000E3,5.678400386E1 +2.206068000E3,5.598615724E1 +2.206327000E3,6.245548090E1 +2.206634000E3,5.788335624E1 +2.206927000E3,5.672312442E1 +2.207166000E3,5.700846075E1 +2.207464000E3,5.693157148E1 +2.207703000E3,5.667671942E1 +2.207995000E3,5.655907845E1 +2.208344000E3,5.694003799E1 +2.208592000E3,5.812693102E1 +2.208844000E3,5.305590014E1 +2.209133000E3,5.963333488E1 +2.209376000E3,6.125764761E1 +2.209621000E3,5.708540532E1 +2.209865000E3,5.539532482E1 +2.210177000E3,6.086117928E1 +2.210432000E3,5.871599576E1 +2.210705000E3,5.720891289E1 +2.210929000E3,5.859137268E1 +2.211185000E3,5.492761595E1 +2.211566000E3,5.458369125E1 +2.211811000E3,5.704243717E1 +2.212094000E3,5.948204172E1 +2.212325000E3,5.442994388E1 +2.212570000E3,5.607391365E1 +2.212815000E3,5.349643391E1 +2.213089000E3,5.518134225E1 +2.213397000E3,5.879499176E1 +2.213659000E3,5.918920409E1 +2.213917000E3,6.317166487E1 +2.214205000E3,5.773325998E1 +2.214505000E3,6.021667659E1 +2.214834000E3,5.707564648E1 +2.215074000E3,5.411436798E1 +2.215412000E3,5.705541238E1 +2.215699000E3,6.721672427E1 +2.215946000E3,6.130402498E1 +2.216241000E3,5.914242022E1 +2.216493000E3,5.881747375E1 +2.216786000E3,5.920115687E1 +2.217030000E3,5.981753209E1 +2.217325000E3,5.379848698E1 +2.217566000E3,5.498057230E1 +2.217931000E3,5.647867672E1 +2.218210000E3,5.460935805E1 +2.218440000E3,5.579228446E1 +2.218740000E3,5.598523495E1 +2.218992000E3,5.501198671E1 +2.219248000E3,5.270876730E1 +2.219495000E3,5.711255338E1 +2.219767000E3,5.276578476E1 +2.220009000E3,6.171644376E1 +2.220307000E3,5.760035427E1 +2.220557000E3,6.039071701E1 +2.220820000E3,5.947563028E1 +2.221166000E3,5.781157464E1 +2.221459000E3,5.689764898E1 +2.221740000E3,5.361204154E1 +2.221998000E3,5.565584232E1 +2.222252000E3,6.236264054E1 +2.222508000E3,5.583706888E1 +2.222794000E3,5.998886151E1 +2.223038000E3,6.067027795E1 +2.223281000E3,5.953550256E1 +2.223512000E3,6.087865846E1 +2.223764000E3,5.880177247E1 +2.224056000E3,5.532032645E1 +2.224389000E3,5.110554887E1 +2.224697000E3,6.082114583E1 +2.224957000E3,6.332269799E1 +2.225225000E3,5.859152014E1 +2.225521000E3,6.312344162E1 +2.225760000E3,6.208500503E1 +2.226003000E3,6.030377984E1 +2.226280000E3,5.890306026E1 +2.226553000E3,6.412257006E1 +2.226813000E3,5.959239884E1 +2.227137000E3,5.603893495E1 +2.227460000E3,5.807576772E1 +2.227717000E3,6.034272760E1 +2.227950000E3,5.678924442E1 +2.228211000E3,5.767938832E1 +2.228489000E3,4.973605337E1 +2.228742000E3,5.227056153E1 +2.229007000E3,4.524576382E1 +2.229320000E3,5.163901012E1 +2.229633000E3,5.791269320E1 +2.229909000E3,5.832692980E1 +2.230223000E3,5.512940778E1 +2.230487000E3,5.639998631E1 +2.230845000E3,6.012111222E1 +2.231113000E3,6.632176219E1 +2.231407000E3,6.692769565E1 +2.231662000E3,6.409372191E1 +2.231945000E3,6.268702605E1 +2.232208000E3,6.192012265E1 +2.232460000E3,5.923306273E1 +2.232717000E3,5.726340446E1 +2.233005000E3,5.708270925E1 +2.233256000E3,6.172203942E1 +2.233510000E3,6.197059155E1 +2.233807000E3,6.691458644E1 +2.234160000E3,6.165007134E1 +2.234422000E3,6.172053486E1 +2.234714000E3,6.148833899E1 +2.234974000E3,6.190331921E1 +2.235253000E3,5.938090919E1 +2.235479000E3,6.223060920E1 +2.235722000E3,6.133640397E1 +2.236028000E3,6.400294095E1 +2.236269000E3,6.581462957E1 +2.236516000E3,6.094953675E1 +2.236828000E3,5.792232456E1 +2.237124000E3,5.750665846E1 +2.237367000E3,5.360734442E1 +2.237668000E3,5.239836763E1 +2.237914000E3,5.189659577E1 +2.238168000E3,5.779541581E1 +2.238431000E3,5.409030702E1 +2.238689000E3,5.064192938E1 +2.238941000E3,4.890244292E1 +2.239235000E3,4.958738332E1 +2.239486000E3,5.093509792E1 +2.239725000E3,5.421091975E1 +2.239970000E3,6.074883769E1 +2.240298000E3,5.611992467E1 +2.240604000E3,4.988071111E1 +2.240900000E3,4.952063126E1 +2.241187000E3,5.282005772E1 +2.241428000E3,5.672648648E1 +2.241685000E3,5.807464117E1 +2.241973000E3,5.565097745E1 +2.242224000E3,5.410363002E1 +2.242475000E3,5.548804216E1 +2.242720000E3,5.862108370E1 +2.242959000E3,5.101243713E1 +2.243259000E3,5.340920814E1 +2.243564000E3,5.471013043E1 +2.243801000E3,5.474536753E1 +2.244062000E3,5.454012147E1 +2.244333000E3,5.594751460E1 +2.244637000E3,5.486159050E1 +2.244913000E3,5.317501502E1 +2.245138000E3,5.100209753E1 +2.245397000E3,5.436827206E1 +2.245643000E3,5.483479867E1 +2.245916000E3,5.150486026E1 +2.246182000E3,5.049924887E1 +2.246449000E3,5.226067252E1 +2.246744000E3,5.389432372E1 +2.247057000E3,6.032791953E1 +2.247330000E3,5.966662928E1 +2.247666000E3,5.824962285E1 +2.247962000E3,5.700720490E1 +2.248202000E3,6.373200887E1 +2.248495000E3,6.648419927E1 +2.248743000E3,5.542652488E1 +2.249036000E3,5.256926371E1 +2.249272000E3,6.053195001E1 +2.249564000E3,4.959074314E1 +2.249800000E3,5.054384460E1 +2.250136000E3,5.008489809E1 +2.250431000E3,5.752384263E1 +2.250666000E3,5.367007636E1 +2.250931000E3,4.851936559E1 +2.251210000E3,4.965482987E1 +2.251497000E3,5.733244198E1 +2.251772000E3,5.370188093E1 +2.251997000E3,5.388650114E1 +2.252246000E3,5.331606518E1 +2.252516000E3,5.534782747E1 +2.252818000E3,5.271944154E1 +2.253047000E3,5.188974945E1 +2.253402000E3,5.040855384E1 +2.253689000E3,5.348452962E1 +2.253965000E3,5.685197701E1 +2.254240000E3,5.699151925E1 +2.254539000E3,5.217481719E1 +2.254794000E3,5.255063115E1 +2.255035000E3,5.258436032E1 +2.255283000E3,5.228429265E1 +2.255592000E3,5.187189315E1 +2.255851000E3,5.089851896E1 +2.256105000E3,5.323192817E1 +2.256387000E3,5.259240607E1 +2.256752000E3,5.489099725E1 +2.257016000E3,5.140699592E1 +2.257276000E3,5.478139635E1 +2.257600000E3,5.508183343E1 +2.257864000E3,5.539199709E1 +2.258160000E3,5.879728075E1 +2.258399000E3,6.145510373E1 +2.258645000E3,6.018082278E1 +2.258890000E3,6.203490998E1 +2.259131000E3,6.051201097E1 +2.259385000E3,5.741582229E1 +2.259629000E3,5.742200481E1 +2.259994000E3,5.205318956E1 +2.260295000E3,5.807019657E1 +2.260539000E3,5.843419178E1 +2.260841000E3,5.543595349E1 +2.261104000E3,5.208978608E1 +2.261348000E3,5.288295424E1 +2.261601000E3,5.593156434E1 +2.261856000E3,5.600009221E1 +2.262108000E3,5.581775464E1 +2.262358000E3,5.037081152E1 +2.262613000E3,5.059162693E1 +2.262916000E3,5.459372597E1 +2.263271000E3,5.581642194E1 +2.263548000E3,5.702582989E1 +2.263802000E3,5.531282217E1 +2.264049000E3,5.356460573E1 +2.264318000E3,5.682743962E1 +2.264564000E3,5.353127135E1 +2.264854000E3,5.962134934E1 +2.265080000E3,5.858968032E1 +2.265326000E3,5.681259568E1 +2.265625000E3,5.635120121E1 +2.265871000E3,5.433379551E1 +2.266211000E3,4.913835205E1 +2.266510000E3,5.243179137E1 +2.266783000E3,4.886918417E1 +2.267043000E3,4.774131335E1 +2.267292000E3,4.892025491E1 +2.267553000E3,4.710213612E1 +2.267796000E3,4.847827931E1 +2.268042000E3,5.624471818E1 +2.268281000E3,5.286977188E1 +2.268548000E3,5.683989489E1 +2.268800000E3,5.459251055E1 +2.269086000E3,5.272841607E1 +2.269389000E3,5.585343514E1 +2.269616000E3,5.452972356E1 +2.269865000E3,5.183250423E1 +2.270167000E3,4.733442261E1 +2.270442000E3,4.736450762E1 +2.270667000E3,4.430645798E1 +2.270915000E3,4.635257501E1 +2.271160000E3,4.914582650E1 +2.271407000E3,4.938157659E1 +2.271656000E3,4.788630853E1 +2.271896000E3,4.778446083E1 +2.272198000E3,5.081637081E1 +2.272482000E3,4.630509256E1 +2.272722000E3,4.551027932E1 +2.273048000E3,5.074623045E1 +2.273321000E3,4.689236254E1 +2.273562000E3,4.960242652E1 +2.273859000E3,5.310274016E1 +2.274104000E3,5.391997859E1 +2.274392000E3,4.854992165E1 +2.274648000E3,4.610161890E1 +2.274915000E3,5.325141064E1 +2.275196000E3,4.823989698E1 +2.275460000E3,5.167706762E1 +2.275772000E3,4.424461998E1 +2.276008000E3,4.957193490E1 +2.276258000E3,4.220429916E1 +2.276545000E3,4.614900045E1 +2.276809000E3,4.247109284E1 +2.277119000E3,5.104311310E1 +2.277385000E3,4.898949856E1 +2.277651000E3,5.033981280E1 +2.277920000E3,4.504255509E1 +2.278210000E3,4.851295637E1 +2.278452000E3,4.975001222E1 +2.278771000E3,5.198599663E1 +2.279101000E3,5.078534391E1 +2.279348000E3,5.056977572E1 +2.279614000E3,4.645427419E1 +2.279894000E3,4.837428182E1 +2.280121000E3,4.672417188E1 +2.280416000E3,4.338010131E1 +2.280671000E3,4.552410696E1 +2.280941000E3,4.107346609E1 +2.281195000E3,4.850760260E1 +2.281477000E3,4.449785068E1 +2.281730000E3,3.834743898E1 +2.282028000E3,3.160451104E1 +2.282275000E3,2.921367430E1 +2.282509000E3,3.929432216E1 +2.282771000E3,3.560833020E1 +2.283021000E3,4.204425230E1 +2.283277000E3,4.897505461E1 +2.283570000E3,4.492050546E1 +2.283802000E3,4.549624302E1 +2.284053000E3,4.703134831E1 +2.284302000E3,4.492779574E1 +2.284580000E3,5.573526523E1 +2.284888000E3,4.583204799E1 +2.285186000E3,3.987632497E1 +2.285426000E3,4.276483306E1 +2.285670000E3,4.196646636E1 +2.285974000E3,4.127295807E1 +2.286241000E3,3.392540836E1 +2.286513000E3,3.045281657E1 +2.286755000E3,3.056149566E1 +2.287058000E3,4.234115907E1 +2.287358000E3,4.148011807E1 +2.287615000E3,4.752316696E1 +2.287890000E3,4.261643768E1 +2.288186000E3,3.531031146E1 +2.288451000E3,3.336926272E1 +2.288830000E3,3.217663691E1 +2.289083000E3,3.280943829E1 +2.289350000E3,4.037024361E1 +2.289606000E3,4.463743016E1 +2.289870000E3,3.926930450E1 +2.290142000E3,3.549021170E1 +2.290376000E3,3.657210104E1 +2.290669000E3,3.609483404E1 +2.290917000E3,3.935001060E1 +2.291190000E3,3.968762383E1 +2.291417000E3,3.622062011E1 +2.291698000E3,5.052972627E1 +2.292019000E3,4.472329620E1 +2.292314000E3,3.528869928E1 +2.292580000E3,3.171318762E1 +2.292867000E3,3.293682859E1 +2.293112000E3,2.980662334E1 +2.293408000E3,3.108877030E1 +2.293645000E3,3.411108767E1 +2.293948000E3,2.929195023E1 +2.294231000E3,2.830259325E1 +2.294484000E3,2.905088910E1 +2.294732000E3,3.046102835E1 +2.295049000E3,2.679058069E1 +2.295347000E3,2.620731663E1 +2.295594000E3,3.509528145E1 +2.295836000E3,2.657946529E1 +2.296130000E3,2.511368258E1 +2.296378000E3,2.555955915E1 +2.296634000E3,2.785949260E1 +2.296875000E3,2.654407944E1 +2.297117000E3,3.658368449E1 +2.297412000E3,3.412054652E1 +2.297648000E3,3.448252102E1 +2.297956000E3,3.528486686E1 +2.298205000E3,3.265291425E1 +2.298494000E3,2.963788314E1 +2.298798000E3,3.350933300E1 +2.299085000E3,3.038301619E1 +2.299338000E3,3.357142506E1 +2.299610000E3,4.744800671E1 +2.299868000E3,3.435626076E1 +2.300142000E3,3.368274389E1 +2.300402000E3,2.881246111E1 +2.300655000E3,3.097762310E1 +2.300898000E3,2.947567056E1 +2.301182000E3,3.214187359E1 +2.301423000E3,3.421070745E1 +2.301786000E3,5.117970534E1 +2.302087000E3,5.037784077E1 +2.302335000E3,5.283937176E1 +2.302644000E3,5.164119106E1 +2.302941000E3,5.300709748E1 +2.303240000E3,4.713488810E1 +2.303488000E3,4.524114677E1 +2.303739000E3,3.080285972E1 +2.304022000E3,2.293405577E1 +2.304254000E3,2.235464386E1 +2.304552000E3,2.949911358E1 +2.304876000E3,4.141349798E1 +2.305182000E3,4.156611078E1 +2.305491000E3,4.347125429E1 +2.305797000E3,4.579894404E1 +2.306107000E3,4.646123013E1 +2.306358000E3,4.517240887E1 +2.306604000E3,5.308475174E1 +2.306870000E3,4.681256924E1 +2.307168000E3,2.942058533E1 +2.307450000E3,2.986114457E1 +2.307717000E3,3.195150356E1 +2.308031000E3,3.775567348E1 +2.308265000E3,3.823556499E1 +2.308570000E3,2.909536341E1 +2.308842000E3,3.096070220E1 +2.309098000E3,4.060687649E1 +2.309391000E3,4.820113946E1 +2.309687000E3,4.619079404E1 +2.309928000E3,4.304793785E1 +2.310216000E3,4.976144450E1 +2.310446000E3,4.779148829E1 +2.310686000E3,5.167703897E1 +2.310979000E3,3.773719280E1 +2.311248000E3,2.923821784E1 +2.311466000E3,2.654081756E1 +2.311763000E3,2.616593312E1 +2.312001000E3,2.460963519E1 +2.312285000E3,2.554564289E1 +2.312588000E3,3.572755404E1 +2.312856000E3,4.274835909E1 +2.313074000E3,4.355953935E1 +2.313375000E3,5.377727845E1 +2.313611000E3,5.435235813E1 +2.313893000E3,5.477010993E1 +2.314137000E3,5.142421895E1 +2.314483000E3,4.794670725E1 +2.314780000E3,5.149445419E1 +2.315019000E3,5.127618051E1 +2.315306000E3,4.939341348E1 +2.315533000E3,4.928824788E1 +2.315832000E3,4.617335031E1 +2.316069000E3,3.696469062E1 +2.316377000E3,4.552948924E1 +2.316627000E3,4.672923062E1 +2.316913000E3,4.504192742E1 +2.317215000E3,4.364234368E1 +2.317558000E3,4.231291453E1 +2.317853000E3,4.886663905E1 +2.318118000E3,4.492895691E1 +2.318412000E3,4.464681620E1 +2.318711000E3,4.698360224E1 +2.318950000E3,4.454369095E1 +2.319250000E3,4.409609939E1 +2.319494000E3,4.283121809E1 +2.319793000E3,4.398770219E1 +2.320040000E3,4.728522548E1 +2.320336000E3,4.533798443E1 +2.320660000E3,4.548359371E1 +2.320908000E3,4.366718291E1 +2.321152000E3,5.139935964E1 +2.321408000E3,4.747980864E1 +2.321709000E3,3.867643032E1 +2.321952000E3,4.294445900E1 +2.322196000E3,4.336333736E1 +2.322445000E3,3.890531131E1 +2.322682000E3,4.087281677E1 +2.322980000E3,3.979668464E1 +2.323225000E3,4.157042707E1 +2.323553000E3,4.515881082E1 +2.323886000E3,3.868360739E1 +2.324184000E3,4.839319184E1 +2.324428000E3,4.298284223E1 +2.324669000E3,4.433761346E1 +2.324987000E3,4.011512195E1 +2.325233000E3,3.478551365E1 +2.325486000E3,4.180203002E1 +2.325789000E3,4.323726184E1 +2.326086000E3,3.985791110E1 +2.326333000E3,3.946244529E1 +2.326667000E3,4.066537977E1 +2.326925000E3,3.986903649E1 +2.327223000E3,4.142461274E1 +2.327521000E3,3.461788217E1 +2.327778000E3,3.326602717E1 +2.328102000E3,4.357074645E1 +2.328367000E3,5.496493564E1 +2.328618000E3,4.413482695E1 +2.328920000E3,4.170999616E1 +2.329183000E3,4.107694173E1 +2.329486000E3,5.342371220E1 +2.329729000E3,5.103134188E1 +2.330028000E3,4.716459977E1 +2.330382000E3,4.916498276E1 +2.330642000E3,4.801561309E1 +2.330930000E3,4.860033329E1 +2.331211000E3,5.037441690E1 +2.331463000E3,5.227972551E1 +2.331719000E3,4.516533742E1 +2.331971000E3,4.623606604E1 +2.332268000E3,3.207985320E1 +2.332513000E3,3.485208029E1 +2.332801000E3,4.367306984E1 +2.333109000E3,4.764897626E1 +2.333397000E3,4.844411921E1 +2.333779000E3,4.624834459E1 +2.334088000E3,4.492130047E1 +2.334331000E3,4.172849812E1 +2.334618000E3,4.243441154E1 +2.334859000E3,4.155300890E1 +2.335165000E3,3.508017133E1 +2.335414000E3,3.102497597E1 +2.335689000E3,3.346102792E1 +2.335938000E3,2.980210924E1 +2.336237000E3,2.815695425E1 +2.336480000E3,4.530841757E1 +2.336824000E3,4.476742737E1 +2.337075000E3,4.460293889E1 +2.337332000E3,5.054872999E1 +2.337583000E3,4.962100100E1 +2.337845000E3,5.224787063E1 +2.338132000E3,4.845338775E1 +2.338374000E3,4.675501048E1 +2.338651000E3,4.806540095E1 +2.338903000E3,4.707869991E1 +2.339145000E3,4.747595477E1 +2.339395000E3,3.449909829E1 +2.339700000E3,4.619360178E1 +2.340033000E3,4.785644508E1 +2.340329000E3,4.721347586E1 +2.340579000E3,4.302992844E1 +2.340828000E3,4.629706327E1 +2.341122000E3,4.550319757E1 +2.341368000E3,4.510038554E1 +2.341611000E3,4.752886315E1 +2.341876000E3,4.524122211E1 +2.342135000E3,2.990386366E1 +2.342396000E3,3.647672774E1 +2.342679000E3,2.854891758E1 +2.342936000E3,3.995722191E1 +2.343310000E3,4.501906630E1 +2.343555000E3,4.872212276E1 +2.343839000E3,4.566863325E1 +2.344134000E3,3.946814595E1 +2.344384000E3,4.796193013E1 +2.344656000E3,4.858552009E1 +2.344961000E3,4.902627763E1 +2.345257000E3,4.467711671E1 +2.345498000E3,3.756709071E1 +2.345764000E3,2.964206509E1 +2.346064000E3,4.283044167E1 +2.346415000E3,4.191014925E1 +2.346743000E3,4.910031818E1 +2.347021000E3,5.022624274E1 +2.347337000E3,5.257970130E1 +2.347586000E3,4.764257555E1 +2.347831000E3,4.353349182E1 +2.348126000E3,4.318604201E1 +2.348436000E3,4.825752031E1 +2.348710000E3,4.464987037E1 +2.348968000E3,4.690302679E1 +2.349225000E3,4.464063657E1 +2.349495000E3,5.114524492E1 +2.349740000E3,4.345049547E1 +2.350133000E3,4.655800825E1 +2.350382000E3,4.419356370E1 +2.350688000E3,4.308388818E1 +2.350960000E3,4.964188075E1 +2.351269000E3,5.137042419E1 +2.351542000E3,4.751708919E1 +2.351836000E3,3.239228651E1 +2.352067000E3,3.331178705E1 +2.352357000E3,4.628654550E1 +2.352625000E3,4.653844798E1 +2.352938000E3,4.419734850E1 +2.353231000E3,3.771763539E1 +2.353458000E3,3.489550836E1 +2.353713000E3,2.965581776E1 +2.353962000E3,3.457100474E1 +2.354201000E3,3.291595658E1 +2.354446000E3,2.791603976E1 +2.354711000E3,3.307930362E1 +2.355027000E3,5.311162000E1 +2.355290000E3,4.688373373E1 +2.355581000E3,3.663543876E1 +2.355868000E3,2.834403560E1 +2.356176000E3,5.001680718E1 +2.356518000E3,5.349221251E1 +2.356780000E3,5.234097025E1 +2.357043000E3,4.476475434E1 +2.357349000E3,5.160193390E1 +2.357584000E3,4.375385010E1 +2.357840000E3,3.709166207E1 +2.358125000E3,2.927191182E1 +2.358378000E3,4.114289062E1 +2.358676000E3,4.266518399E1 +2.358921000E3,4.641380631E1 +2.359210000E3,4.551221179E1 +2.359545000E3,4.099683883E1 +2.359801000E3,5.202602500E1 +2.360072000E3,5.207875379E1 +2.360343000E3,4.670310433E1 +2.360619000E3,4.619168123E1 +2.360865000E3,4.348453495E1 +2.361113000E3,4.603882932E1 +2.361353000E3,4.061885274E1 +2.361649000E3,4.873355826E1 +2.361884000E3,4.796347566E1 +2.362174000E3,4.419543811E1 +2.362420000E3,4.412529768E1 +2.362674000E3,4.315515456E1 +2.363006000E3,3.718353950E1 +2.363303000E3,4.131746877E1 +2.363556000E3,3.462830696E1 +2.363825000E3,3.224809166E1 +2.364105000E3,2.946532539E1 +2.364420000E3,4.082560353E1 +2.364671000E3,4.169760242E1 +2.364916000E3,4.728483165E1 +2.365158000E3,4.384961396E1 +2.365493000E3,3.327447630E1 +2.365797000E3,2.406470586E1 +2.366141000E3,2.410271882E1 +2.366422000E3,4.124818432E1 +2.366699000E3,4.300386829E1 +2.366994000E3,4.592409288E1 +2.367239000E3,4.402074721E1 +2.367492000E3,4.331525310E1 +2.367744000E3,4.351543939E1 +2.368045000E3,4.861325913E1 +2.368277000E3,4.345520025E1 +2.368543000E3,5.037549285E1 +2.368790000E3,3.455268589E1 +2.369034000E3,3.454484220E1 +2.369300000E3,3.436570372E1 +2.369544000E3,3.180799867E1 +2.369820000E3,4.460893996E1 +2.370091000E3,5.635981603E1 +2.370383000E3,4.932803438E1 +2.370635000E3,5.123791361E1 +2.370939000E3,4.749913119E1 +2.371193000E3,4.606624254E1 +2.371498000E3,4.453668838E1 +2.371779000E3,4.424564317E1 +2.372081000E3,5.022357768E1 +2.372347000E3,4.983363592E1 +2.372720000E3,4.311987242E1 +2.372969000E3,4.071927446E1 +2.373234000E3,3.624584431E1 +2.373535000E3,3.338407859E1 +2.373777000E3,2.744030282E1 +2.374025000E3,4.017686066E1 +2.374281000E3,4.153799732E1 +2.374537000E3,5.163713220E1 +2.374786000E3,4.970373114E1 +2.375033000E3,4.601563593E1 +2.375284000E3,4.943210146E1 +2.375577000E3,5.208741018E1 +2.375935000E3,4.780129348E1 +2.376167000E3,4.632707744E1 +2.376478000E3,5.008962536E1 +2.376734000E3,4.691729314E1 +2.376987000E3,4.593220796E1 +2.377250000E3,4.703621615E1 +2.377550000E3,4.863501898E1 +2.377838000E3,4.747349412E1 +2.378102000E3,4.430216971E1 +2.378373000E3,5.038477253E1 +2.378648000E3,4.679597376E1 +2.378873000E3,3.998762784E1 +2.379232000E3,4.140472709E1 +2.379480000E3,3.803559367E1 +2.379735000E3,4.292956565E1 +2.379993000E3,3.275484639E1 +2.380260000E3,3.159298587E1 +2.380513000E3,3.066195183E1 +2.380756000E3,4.846258942E1 +2.381012000E3,4.617374426E1 +2.381278000E3,4.338282331E1 +2.381580000E3,2.990070560E1 +2.381878000E3,3.384826320E1 +2.382127000E3,4.352773294E1 +2.382476000E3,3.711143795E1 +2.382756000E3,4.818117865E1 +2.383001000E3,4.694356023E1 +2.383312000E3,4.713242320E1 +2.383556000E3,4.945634369E1 +2.383815000E3,3.710449888E1 +2.384109000E3,4.990714727E1 +2.384350000E3,5.101970483E1 +2.384663000E3,4.290224010E1 +2.384917000E3,3.958873166E1 +2.385203000E3,4.207919898E1 +2.385583000E3,3.937588823E1 +2.385864000E3,3.927490117E1 +2.386122000E3,3.708577985E1 +2.386378000E3,3.104425869E1 +2.386630000E3,2.579918418E1 +2.386935000E3,4.201717352E1 +2.387186000E3,4.469788103E1 +2.387445000E3,3.928301867E1 +2.387699000E3,4.425054811E1 +2.387999000E3,2.901032620E1 +2.388242000E3,2.431535493E1 +2.388542000E3,4.330806788E1 +2.388866000E3,4.587852948E1 +2.389138000E3,5.068663336E1 +2.389420000E3,5.151872270E1 +2.389764000E3,4.501157372E1 +2.390012000E3,4.508008781E1 +2.390288000E3,4.471818734E1 +2.390546000E3,4.453717168E1 +2.390828000E3,3.435610332E1 +2.391113000E3,3.644941891E1 +2.391398000E3,3.741409627E1 +2.391658000E3,4.311052254E1 +2.391963000E3,3.924877335E1 +2.392296000E3,3.956869731E1 +2.392537000E3,3.230149795E1 +2.392786000E3,2.941450360E1 +2.393103000E3,3.366208400E1 +2.393349000E3,2.633153711E1 +2.393653000E3,2.492589605E1 +2.393892000E3,3.518582310E1 +2.394201000E3,3.668564238E1 +2.394454000E3,3.528359554E1 +2.394744000E3,3.673717548E1 +2.395034000E3,2.851979476E1 +2.395378000E3,2.558396774E1 +2.395660000E3,3.919896752E1 +2.395930000E3,3.339597104E1 +2.396187000E3,3.351358057E1 +2.396431000E3,3.743420456E1 +2.396691000E3,4.220523227E1 +2.396991000E3,3.500233403E1 +2.397251000E3,3.475187142E1 +2.397513000E3,3.604068947E1 +2.397821000E3,4.628512725E1 +2.398126000E3,4.463943287E1 +2.398428000E3,4.311458163E1 +2.398781000E3,4.375329409E1 +2.399076000E3,3.749705009E1 +2.399316000E3,4.116349149E1 +2.399615000E3,4.694603167E1 +2.399852000E3,5.327851923E1 +2.400143000E3,5.028800274E1 +2.400380000E3,5.055607260E1 +2.400618000E3,4.184216649E1 +2.400901000E3,4.280576865E1 +2.401144000E3,4.285187037E1 +2.401437000E3,5.414729311E1 +2.401684000E3,5.760726428E1 +2.402102000E3,5.135939721E1 +2.402349000E3,5.519633184E1 +2.402608000E3,5.937895156E1 +2.402853000E3,5.722678447E1 +2.403146000E3,5.316891996E1 +2.403388000E3,5.231876976E1 +2.403684000E3,4.275047946E1 +2.403921000E3,4.497010821E1 +2.404216000E3,5.935375427E1 +2.404454000E3,5.736369919E1 +2.404707000E3,5.877823139E1 +2.404971000E3,6.138635894E1 +2.405219000E3,5.726046839E1 +2.405473000E3,5.213953550E1 +2.405771000E3,4.831408459E1 +2.406024000E3,5.195614478E1 +2.406276000E3,4.885485021E1 +2.406567000E3,4.806131720E1 +2.406866000E3,3.817379603E1 +2.407129000E3,3.496803230E1 +2.407401000E3,4.679161915E1 +2.407625000E3,4.456362030E1 +2.407878000E3,4.499112684E1 +2.408171000E3,4.695848411E1 +2.408491000E3,4.136053284E1 +2.408771000E3,3.435960184E1 +2.409033000E3,2.907775515E1 +2.409287000E3,3.179102298E1 +2.409536000E3,2.535492331E1 +2.409797000E3,2.893863695E1 +2.410015000E3,3.195695462E1 +2.410232000E3,2.883661354E1 +2.410481000E3,4.380812340E1 +2.410735000E3,5.435187737E1 +2.411017000E3,4.390478627E1 +2.411330000E3,4.136550501E1 +2.411572000E3,6.231552653E1 +2.411823000E3,4.988484474E1 +2.412072000E3,4.569499772E1 +2.412339000E3,5.207639469E1 +2.412605000E3,5.314724412E1 +2.412842000E3,5.014855129E1 +2.413111000E3,4.925815950E1 +2.413332000E3,5.545199009E1 +2.413608000E3,4.910878211E1 +2.413873000E3,5.481296501E1 +2.414229000E3,4.620355557E1 +2.414532000E3,4.757632406E1 +2.414792000E3,4.414835702E1 +2.415033000E3,4.178334533E1 +2.415296000E3,3.571558610E1 +2.415577000E3,3.622280285E1 +2.415839000E3,4.187963398E1 +2.416103000E3,4.120303067E1 +2.416426000E3,5.043875316E1 +2.416696000E3,4.738536839E1 +2.417006000E3,4.790698669E1 +2.417250000E3,4.717323409E1 +2.417613000E3,4.889624394E1 +2.417923000E3,4.615999302E1 +2.418209000E3,4.554232436E1 +2.418487000E3,4.963147342E1 +2.418748000E3,4.540077281E1 +2.419058000E3,4.402622058E1 +2.419355000E3,3.991430025E1 +2.419631000E3,5.699106589E1 +2.419880000E3,4.542610605E1 +2.420140000E3,5.871400849E1 +2.420387000E3,5.593691155E1 +2.420634000E3,5.642590944E1 +2.420987000E3,4.942882304E1 +2.421235000E3,5.122637091E1 +2.421504000E3,5.506353313E1 +2.421808000E3,4.974630362E1 +2.422098000E3,4.922446567E1 +2.422401000E3,4.711891494E1 +2.422653000E3,4.935851062E1 +2.422946000E3,5.223840607E1 +2.423180000E3,5.181747333E1 +2.423433000E3,5.106095739E1 +2.423699000E3,4.283067128E1 +2.424023000E3,4.620110870E1 +2.424283000E3,4.813646184E1 +2.424556000E3,4.673905704E1 +2.424833000E3,5.139038068E1 +2.425085000E3,4.187355918E1 +2.425330000E3,4.200690239E1 +2.425641000E3,4.094986905E1 +2.425891000E3,3.869951887E1 +2.426156000E3,4.295178440E1 +2.426411000E3,4.445235603E1 +2.426673000E3,4.180705342E1 +2.426915000E3,4.159918394E1 +2.427275000E3,5.193727105E1 +2.427528000E3,4.985744468E1 +2.427773000E3,5.143594155E1 +2.428021000E3,5.687627643E1 +2.428258000E3,4.984177159E1 +2.428554000E3,4.104898524E1 +2.428794000E3,3.740238657E1 +2.429102000E3,4.424577609E1 +2.429345000E3,5.022623751E1 +2.429627000E3,5.346928374E1 +2.429864000E3,4.448852620E1 +2.430156000E3,3.611387858E1 +2.430475000E3,3.592739777E1 +2.430726000E3,3.269867125E1 +2.431039000E3,4.089980433E1 +2.431331000E3,3.752068977E1 +2.431567000E3,3.972155082E1 +2.431870000E3,4.098289208E1 +2.432107000E3,4.068605974E1 +2.432406000E3,3.978950334E1 +2.432643000E3,3.435438837E1 +2.432933000E3,3.806187937E1 +2.433169000E3,3.613809925E1 +2.433407000E3,5.573542624E1 +2.433734000E3,4.812688919E1 +2.434035000E3,5.332611421E1 +2.434315000E3,5.453475878E1 +2.434557000E3,5.156731049E1 +2.434849000E3,4.452924889E1 +2.435086000E3,4.091217005E1 +2.435380000E3,3.495963916E1 +2.435633000E3,3.994418328E1 +2.435904000E3,5.345258512E1 +2.436200000E3,4.573029424E1 +2.436434000E3,4.666848361E1 +2.436802000E3,4.148612785E1 +2.437044000E3,3.785277445E1 +2.437301000E3,3.823545546E1 +2.437549000E3,3.883632471E1 +2.437839000E3,4.756553033E1 +2.438077000E3,4.282797221E1 +2.438369000E3,5.291874167E1 +2.438606000E3,5.394671897E1 +2.438862000E3,5.490926284E1 +2.439159000E3,5.465277565E1 +2.439395000E3,5.245345229E1 +2.439637000E3,4.823915254E1 +2.440022000E3,5.658050668E1 +2.440281000E3,5.255468157E1 +2.440546000E3,4.365897331E1 +2.440828000E3,4.187636724E1 +2.441125000E3,4.916172461E1 +2.441365000E3,5.038635874E1 +2.441645000E3,5.238005511E1 +2.441868000E3,4.979548238E1 +2.442114000E3,5.164563876E1 +2.442410000E3,4.795862612E1 +2.442694000E3,4.406311297E1 +2.442980000E3,4.461066687E1 +2.443265000E3,3.990213588E1 +2.443525000E3,4.270339676E1 +2.443815000E3,4.671533321E1 +2.444064000E3,4.922681237E1 +2.444311000E3,5.115751882E1 +2.444605000E3,4.659279655E1 +2.444851000E3,4.805254743E1 +2.445152000E3,4.646584218E1 +2.445447000E3,3.924248597E1 +2.445698000E3,3.657018775E1 +2.445976000E3,3.978585816E1 +2.446317000E3,5.134473527E1 +2.446569000E3,4.872028256E1 +2.446851000E3,4.793203365E1 +2.447088000E3,4.917648823E1 +2.447345000E3,4.514648035E1 +2.447599000E3,4.827609085E1 +2.447864000E3,5.009329877E1 +2.448138000E3,4.858127151E1 +2.448430000E3,4.885678900E1 +2.448726000E3,4.038666943E1 +2.448956000E3,3.788824065E1 +2.449214000E3,4.872306097E1 +2.449516000E3,5.112419798E1 +2.449767000E3,4.394357347E1 +2.450028000E3,5.187358067E1 +2.450298000E3,4.764520743E1 +2.450575000E3,5.323515688E1 +2.450844000E3,4.730661272E1 +2.451150000E3,5.022143967E1 +2.451400000E3,4.244080150E1 +2.451697000E3,4.540622562E1 +2.452002000E3,4.987171470E1 +2.452273000E3,4.928771096E1 +2.452519000E3,4.415614577E1 +2.452847000E3,4.529816891E1 +2.453138000E3,3.130480949E1 +2.453407000E3,3.727195618E1 +2.453707000E3,4.218798188E1 +2.453975000E3,3.196426842E1 +2.454240000E3,2.986758668E1 +2.454534000E3,4.365366219E1 +2.454795000E3,4.363233606E1 +2.455054000E3,4.576258560E1 +2.455297000E3,4.600510844E1 +2.455546000E3,5.143992334E1 +2.455816000E3,4.451792491E1 +2.456172000E3,3.834658463E1 +2.456438000E3,4.961865906E1 +2.456716000E3,4.301133302E1 +2.457025000E3,5.185950840E1 +2.457284000E3,4.578127088E1 +2.457582000E3,4.860789001E1 +2.457857000E3,4.548301241E1 +2.458087000E3,5.726595471E1 +2.458343000E3,4.581143143E1 +2.458590000E3,4.593076535E1 +2.458898000E3,4.646845677E1 +2.459143000E3,4.385664195E1 +2.459499000E3,3.921291428E1 +2.459756000E3,4.336490005E1 +2.460079000E3,5.059416731E1 +2.460323000E3,5.383728406E1 +2.460609000E3,4.336002656E1 +2.460894000E3,3.810358455E1 +2.461148000E3,4.341384577E1 +2.461406000E3,4.240002850E1 +2.461668000E3,4.220171306E1 +2.461957000E3,4.165441002E1 +2.462218000E3,4.110791112E1 +2.462543000E3,3.718059239E1 +2.462873000E3,4.490190793E1 +2.463162000E3,4.449127269E1 +2.463461000E3,5.110192526E1 +2.463709000E3,4.670759724E1 +2.464024000E3,4.554197086E1 +2.464345000E3,4.295638115E1 +2.464598000E3,4.260186095E1 +2.464844000E3,3.838281454E1 +2.465094000E3,4.864552318E1 +2.465348000E3,4.722694913E1 +2.465597000E3,5.723123112E1 +2.465970000E3,5.678247819E1 +2.466226000E3,5.304857482E1 +2.466490000E3,5.799491543E1 +2.466745000E3,5.566332539E1 +2.467000000E3,5.532803606E1 +2.467301000E3,5.480406224E1 +2.467518000E3,5.281426808E1 +2.467773000E3,5.319750336E1 +2.468030000E3,4.504180471E1 +2.468309000E3,4.011552860E1 +2.468536000E3,3.286668959E1 +2.468782000E3,5.187437917E1 +2.469159000E3,5.342027818E1 +2.469405000E3,4.655027014E1 +2.469685000E3,4.875434900E1 +2.469968000E3,4.400777727E1 +2.470228000E3,4.944370484E1 +2.470524000E3,4.819898526E1 +2.470826000E3,4.906267157E1 +2.471101000E3,4.559683511E1 +2.471407000E3,5.066052597E1 +2.471662000E3,5.052511938E1 +2.471933000E3,4.854316053E1 +2.472243000E3,4.720397127E1 +2.472513000E3,4.539713693E1 +2.472765000E3,4.504800702E1 +2.473077000E3,4.756996091E1 +2.473381000E3,4.502772911E1 +2.473668000E3,4.844141365E1 +2.473909000E3,4.718772198E1 +2.474176000E3,5.036014826E1 +2.474415000E3,4.734822430E1 +2.474659000E3,4.506554867E1 +2.474941000E3,4.590585801E1 +2.475227000E3,4.808550728E1 +2.475549000E3,4.744751902E1 +2.475816000E3,5.139502060E1 +2.476110000E3,4.565542501E1 +2.476367000E3,4.502651441E1 +2.476614000E3,4.529198411E1 +2.476876000E3,4.841642572E1 +2.477138000E3,4.904966766E1 +2.477430000E3,5.061185879E1 +2.477703000E3,4.805167318E1 +2.477973000E3,4.840268940E1 +2.478233000E3,4.609690512E1 +2.478491000E3,5.080806253E1 +2.478854000E3,4.929079330E1 +2.479112000E3,4.887431247E1 +2.479382000E3,4.582116343E1 +2.479677000E3,4.614295426E1 +2.479939000E3,5.004731017E1 +2.480247000E3,5.118895049E1 +2.480496000E3,4.750144805E1 +2.480785000E3,4.691637905E1 +2.481084000E3,4.575243018E1 +2.481328000E3,4.498034363E1 +2.481622000E3,5.049144453E1 +2.481951000E3,4.811617152E1 +2.482214000E3,4.600387593E1 +2.482494000E3,5.163944801E1 +2.482753000E3,4.933311419E1 +2.482991000E3,4.946534766E1 +2.483244000E3,4.580757204E1 +2.483487000E3,4.797573247E1 +2.483734000E3,4.560844100E1 +2.483990000E3,5.039329574E1 +2.484313000E3,5.052905321E1 +2.484577000E3,5.131938081E1 +2.484833000E3,4.901245069E1 +2.485113000E3,5.233648083E1 +2.485461000E3,5.215489758E1 +2.485749000E3,5.451606287E1 +2.486018000E3,5.043201098E1 +2.486334000E3,5.091085093E1 +2.486650000E3,4.972266732E1 +2.486916000E3,4.846864702E1 +2.487167000E3,4.843730663E1 +2.487412000E3,5.285205631E1 +2.487677000E3,5.695937588E1 +2.487965000E3,5.067248408E1 +2.488216000E3,4.955689254E1 +2.488580000E3,4.789771891E1 +2.488828000E3,4.640186686E1 +2.489150000E3,4.956289338E1 +2.489428000E3,4.916705799E1 +2.489718000E3,4.250319869E1 +2.489959000E3,4.211788948E1 +2.490259000E3,4.711467977E1 +2.490508000E3,5.336087879E1 +2.490805000E3,5.163346506E1 +2.491066000E3,5.303328317E1 +2.491377000E3,5.018594076E1 +2.491684000E3,4.569780009E1 +2.492029000E3,4.677168871E1 +2.492273000E3,4.586755987E1 +2.492522000E3,5.020047651E1 +2.492768000E3,4.585538278E1 +2.493006000E3,5.027464230E1 +2.493315000E3,4.719632652E1 +2.493608000E3,4.892998103E1 +2.493874000E3,4.659859577E1 +2.494131000E3,4.485377967E1 +2.494387000E3,4.661063763E1 +2.494635000E3,4.873112034E1 +2.494904000E3,5.011233058E1 +2.495259000E3,4.996207620E1 +2.495523000E3,5.026371938E1 +2.495789000E3,4.897334151E1 +2.496086000E3,4.919412247E1 +2.496330000E3,4.448238049E1 +2.496598000E3,5.779881243E1 +2.496845000E3,5.068443192E1 +2.497079000E3,5.452206946E1 +2.497328000E3,6.091811093E1 +2.497574000E3,5.545025588E1 +2.497819000E3,5.118451852E1 +2.498124000E3,5.647063434E1 +2.498436000E3,5.942897676E1 +2.498681000E3,6.063927987E1 +2.498932000E3,5.256584857E1 +2.499203000E3,5.942844343E1 +2.499465000E3,5.268198933E1 +2.499726000E3,5.561310022E1 +2.499989000E3,5.551348586E1 +2.500270000E3,5.728700965E1 +2.500550000E3,5.848024533E1 +2.500856000E3,5.545551244E1 +2.501156000E3,7.074712648E1 +2.501405000E3,6.649397556E1 +2.501727000E3,6.577106108E1 +2.501964000E3,5.791155905E1 +2.502223000E3,6.571272960E1 +2.502476000E3,5.223691777E1 +2.502731000E3,5.099379006E1 +2.502989000E3,4.996024440E1 +2.503265000E3,4.587573023E1 +2.503515000E3,6.660646739E1 +2.503792000E3,5.426812996E1 +2.504090000E3,4.221263073E1 +2.504348000E3,3.961359220E1 +2.504607000E3,3.317448387E1 +2.504957000E3,2.765634596E1 +2.505202000E3,5.260508289E1 +2.505444000E3,4.970766119E1 +2.505723000E3,5.961421356E1 +2.506010000E3,5.761735716E1 +2.506316000E3,4.386011183E1 +2.506629000E3,3.297646158E1 +2.506928000E3,3.461351567E1 +2.507171000E3,3.422494413E1 +2.507415000E3,3.898815557E1 +2.507661000E3,3.916714623E1 +2.507958000E3,4.409544564E1 +2.508199000E3,4.040812578E1 +2.508495000E3,4.100804729E1 +2.508767000E3,4.155083379E1 +2.509073000E3,4.256659126E1 +2.509346000E3,4.665111645E1 +2.509615000E3,4.785704834E1 +2.509926000E3,4.957995318E1 +2.510246000E3,5.281308228E1 +2.510533000E3,5.716195403E1 +2.510847000E3,5.384222007E1 +2.511087000E3,4.682850643E1 +2.511483000E3,5.585229854E1 +2.511769000E3,5.797880255E1 +2.512061000E3,5.008051045E1 +2.512305000E3,4.616221083E1 +2.512545000E3,5.837834308E1 +2.512782000E3,4.588894556E1 +2.513082000E3,5.827978204E1 +2.513321000E3,5.321307958E1 +2.513625000E3,5.419914666E1 +2.513860000E3,4.249936315E1 +2.514160000E3,5.093700871E1 +2.514505000E3,4.733309734E1 +2.514807000E3,5.739188753E1 +2.515049000E3,5.684870925E1 +2.515326000E3,5.429714525E1 +2.515551000E3,5.304528611E1 +2.515847000E3,6.048302750E1 +2.516097000E3,5.298092655E1 +2.516397000E3,5.664346713E1 +2.516634000E3,5.062362510E1 +2.516910000E3,5.059011404E1 +2.517165000E3,5.074931344E1 +2.517424000E3,5.193937267E1 +2.517672000E3,4.773080825E1 +2.517933000E3,4.886471101E1 +2.518191000E3,4.258084657E1 +2.518440000E3,4.144243799E1 +2.518697000E3,3.266068365E1 +2.518962000E3,3.662092465E1 +2.519211000E3,4.002326553E1 +2.519469000E3,5.193824268E1 +2.519821000E3,5.548381163E1 +2.520087000E3,5.245445808E1 +2.520336000E3,4.447536752E1 +2.520718000E3,5.931091731E1 +2.521010000E3,5.514928156E1 +2.521305000E3,5.194242569E1 +2.521541000E3,5.632439964E1 +2.521781000E3,4.768714929E1 +2.522074000E3,3.967116686E1 +2.522306000E3,3.457523914E1 +2.522554000E3,3.414939493E1 +2.522808000E3,3.034285017E1 +2.523103000E3,3.725639399E1 +2.523347000E3,5.824523011E1 +2.523645000E3,5.697741808E1 +2.524002000E3,5.995361389E1 +2.524244000E3,5.516819042E1 +2.524491000E3,5.520201782E1 +2.524765000E3,4.576677797E1 +2.524988000E3,5.785527848E1 +2.525299000E3,5.093237528E1 +2.525544000E3,4.090627494E1 +2.525822000E3,3.111750175E1 +2.526056000E3,2.764971736E1 +2.526311000E3,2.852524033E1 +2.526617000E3,3.508264660E1 +2.526905000E3,5.067917717E1 +2.527241000E3,4.646824007E1 +2.527487000E3,3.686495987E1 +2.527738000E3,3.822220480E1 +2.527988000E3,3.764348220E1 +2.528232000E3,4.278450517E1 +2.528563000E3,4.881983602E1 +2.528870000E3,4.048435148E1 +2.529125000E3,4.047282835E1 +2.529398000E3,4.602715630E1 +2.529632000E3,4.358719476E1 +2.529925000E3,4.185499728E1 +2.530224000E3,4.428160693E1 +2.530451000E3,5.370094630E1 +2.530771000E3,4.662369716E1 +2.531057000E3,4.486368653E1 +2.531322000E3,3.985753269E1 +2.531579000E3,3.868983993E1 +2.531842000E3,4.397673982E1 +2.532129000E3,4.465178920E1 +2.532379000E3,4.071629694E1 +2.532681000E3,3.700154265E1 +2.532925000E3,3.709745900E1 +2.533169000E3,3.856350220E1 +2.533454000E3,3.780017804E1 +2.533739000E3,4.079153270E1 +2.534053000E3,3.467337947E1 +2.534304000E3,3.872357849E1 +2.534571000E3,4.188092371E1 +2.534878000E3,4.226520735E1 +2.535180000E3,4.433351029E1 +2.535433000E3,4.196124368E1 +2.535679000E3,4.159710638E1 +2.535934000E3,4.131920574E1 +2.536230000E3,4.013333591E1 +2.536496000E3,3.861252617E1 +2.536812000E3,3.205810696E1 +2.537071000E3,3.900017908E1 +2.537321000E3,3.720890888E1 +2.537589000E3,3.571752088E1 +2.537899000E3,3.466875388E1 +2.538158000E3,3.490809444E1 +2.538414000E3,2.846246396E1 +2.538721000E3,3.471466025E1 +2.539000000E3,3.262267006E1 +2.539250000E3,2.900340615E1 +2.539526000E3,2.962734770E1 +2.539843000E3,4.051335289E1 +2.540219000E3,3.732414883E1 +2.540478000E3,3.212776280E1 +2.540731000E3,3.980002135E1 +2.541002000E3,4.402529692E1 +2.541305000E3,3.531142487E1 +2.541570000E3,4.157255463E1 +2.541892000E3,4.121686373E1 +2.542138000E3,3.512055425E1 +2.542435000E3,3.058422839E1 +2.542704000E3,3.860796470E1 +2.542951000E3,4.158955283E1 +2.543254000E3,4.126835549E1 +2.543598000E3,4.557459954E1 +2.543842000E3,4.195620726E1 +2.544088000E3,4.759905541E1 +2.544347000E3,4.089593512E1 +2.544592000E3,4.224934090E1 +2.544840000E3,3.548720999E1 +2.545141000E3,4.189266277E1 +2.545422000E3,4.058854606E1 +2.545652000E3,3.761551365E1 +2.545897000E3,3.643024250E1 +2.546173000E3,3.544845567E1 +2.546439000E3,3.816851754E1 +2.546779000E3,3.801212128E1 +2.547110000E3,3.288266257E1 +2.547379000E3,4.063952307E1 +2.547641000E3,4.765684387E1 +2.547893000E3,4.402640436E1 +2.548143000E3,4.172886183E1 +2.548441000E3,3.808222191E1 +2.548685000E3,3.637035664E1 +2.548962000E3,3.879815953E1 +2.549230000E3,5.433785228E1 +2.549540000E3,5.428002325E1 +2.549852000E3,5.430864003E1 +2.550121000E3,5.376325395E1 +2.550389000E3,5.250586376E1 +2.550641000E3,5.329413218E1 +2.550946000E3,3.817927317E1 +2.551218000E3,3.779289824E1 +2.551493000E3,4.904361964E1 +2.551759000E3,5.500168111E1 +2.552006000E3,4.745774118E1 +2.552261000E3,5.304049624E1 +2.552515000E3,4.933664563E1 +2.552779000E3,3.482983031E1 +2.553043000E3,3.914561037E1 +2.553378000E3,3.318943686E1 +2.553659000E3,2.674748735E1 +2.553917000E3,2.500565902E1 +2.554234000E3,3.331261434E1 +2.554489000E3,3.380079275E1 +2.554753000E3,3.632095841E1 +2.554996000E3,3.606888467E1 +2.555239000E3,4.759559903E1 +2.555541000E3,5.588542149E1 +2.555837000E3,5.768171500E1 +2.556076000E3,5.837962370E1 +2.556358000E3,5.761486260E1 +2.556647000E3,5.408185929E1 +2.556914000E3,5.624815374E1 +2.557248000E3,4.727853091E1 +2.557554000E3,3.999550071E1 +2.557822000E3,4.090986684E1 +2.558062000E3,3.411171601E1 +2.558302000E3,3.042998918E1 +2.558550000E3,3.392526215E1 +2.558807000E3,3.801243567E1 +2.559082000E3,4.390440101E1 +2.559357000E3,4.215163378E1 +2.559616000E3,4.616573562E1 +2.559972000E3,4.170066459E1 +2.560245000E3,2.972551911E1 +2.560517000E3,3.987643023E1 +2.560765000E3,4.046237199E1 +2.561011000E3,4.268708813E1 +2.561258000E3,4.450541644E1 +2.561531000E3,4.611922799E1 +2.561775000E3,4.492719317E1 +2.562027000E3,4.345851098E1 +2.562302000E3,5.022295857E1 +2.562533000E3,4.986016935E1 +2.562786000E3,3.932672790E1 +2.563211000E3,3.777119812E1 +2.563479000E3,4.577537823E1 +2.563731000E3,5.443473776E1 +2.563977000E3,5.947837126E1 +2.564252000E3,5.014881480E1 +2.564539000E3,4.884415531E1 +2.564781000E3,4.451698294E1 +2.565088000E3,3.693106642E1 +2.565361000E3,3.096881298E1 +2.565624000E3,2.635486448E1 +2.565885000E3,2.734213385E1 +2.566246000E3,3.979362654E1 +2.566493000E3,3.382738554E1 +2.566797000E3,3.469438245E1 +2.567097000E3,4.097528595E1 +2.567346000E3,4.285297734E1 +2.567644000E3,4.930003444E1 +2.567891000E3,4.540271843E1 +2.568170000E3,3.109775861E1 +2.568407000E3,2.738661195E1 +2.568701000E3,3.024785153E1 +2.568952000E3,3.235217301E1 +2.569220000E3,3.196941264E1 +2.569567000E3,4.299833718E1 +2.569862000E3,4.496000509E1 +2.570178000E3,4.562225815E1 +2.570442000E3,4.437451260E1 +2.570707000E3,3.949227756E1 +2.570950000E3,2.951847370E1 +2.571202000E3,3.800151296E1 +2.571472000E3,4.650517590E1 +2.571732000E3,3.967561664E1 +2.571975000E3,3.149456620E1 +2.572246000E3,5.234083710E1 +2.572527000E3,4.544839619E1 +2.572859000E3,4.436174777E1 +2.573168000E3,4.369290756E1 +2.573429000E3,4.420543128E1 +2.573728000E3,4.389854646E1 +2.573968000E3,4.580346210E1 +2.574268000E3,4.881141748E1 +2.574509000E3,4.708023256E1 +2.574802000E3,3.388696242E1 +2.575045000E3,2.922489212E1 +2.575339000E3,3.941924125E1 +2.575597000E3,4.733040375E1 +2.575906000E3,4.790376430E1 +2.576245000E3,4.328559785E1 +2.576517000E3,4.720947277E1 +2.576791000E3,4.076260480E1 +2.577092000E3,3.249905806E1 +2.577324000E3,3.886850876E1 +2.577566000E3,3.577483806E1 +2.577814000E3,4.105002685E1 +2.578080000E3,3.881208350E1 +2.578375000E3,5.720708534E1 +2.578624000E3,4.933084675E1 +2.578932000E3,5.989261963E1 +2.579254000E3,5.193127116E1 +2.579506000E3,4.843920497E1 +2.579747000E3,4.570821188E1 +2.580001000E3,4.446748829E1 +2.580244000E3,4.006228376E1 +2.580497000E3,2.933332862E1 +2.580745000E3,4.525678604E1 +2.580989000E3,4.717489692E1 +2.581288000E3,5.239736286E1 +2.581587000E3,5.268105849E1 +2.581851000E3,4.960616241E1 +2.582112000E3,4.637217789E1 +2.582361000E3,4.676379781E1 +2.582583000E3,4.083594902E1 +2.582903000E3,2.696140701E1 +2.583176000E3,2.668057590E1 +2.583429000E3,2.900886287E1 +2.583692000E3,2.732690452E1 +2.583951000E3,3.475308428E1 +2.584205000E3,4.782860484E1 +2.584480000E3,4.928978168E1 +2.584742000E3,3.697304160E1 +2.585017000E3,3.390321432E1 +2.585248000E3,4.818778278E1 +2.585552000E3,5.175969441E1 +2.585851000E3,4.752724055E1 +2.586108000E3,5.047732228E1 +2.586408000E3,5.003267867E1 +2.586651000E3,4.995698879E1 +2.586934000E3,4.985539117E1 +2.587202000E3,4.558719065E1 +2.587455000E3,4.973387236E1 +2.587702000E3,5.190737686E1 +2.587964000E3,4.955516560E1 +2.588211000E3,5.039526507E1 +2.588461000E3,3.897042435E1 +2.588748000E3,2.919124678E1 +2.589063000E3,3.061867322E1 +2.589398000E3,4.010104895E1 +2.589690000E3,3.640442215E1 +2.589998000E3,4.479952304E1 +2.590261000E3,4.757967128E1 +2.590558000E3,4.812333533E1 +2.590802000E3,4.603482331E1 +2.591083000E3,2.960043464E1 +2.591326000E3,3.684354753E1 +2.591591000E3,4.359182452E1 +2.591849000E3,4.788602237E1 +2.592228000E3,4.468031543E1 +2.592527000E3,3.894688899E1 +2.592778000E3,2.800490026E1 +2.593035000E3,4.310888325E1 +2.593333000E3,4.628339380E1 +2.593602000E3,4.440124594E1 +2.593883000E3,4.123163794E1 +2.594160000E3,3.127645239E1 +2.594429000E3,3.071812965E1 +2.594749000E3,4.618618296E1 +2.595070000E3,5.248181749E1 +2.595312000E3,4.786265879E1 +2.595668000E3,3.990233287E1 +2.595973000E3,4.173583037E1 +2.596256000E3,3.709278400E1 +2.596497000E3,3.229385861E1 +2.596813000E3,4.380573021E1 +2.597084000E3,4.783628282E1 +2.597325000E3,5.024593568E1 +2.597578000E3,5.102379549E1 +2.597828000E3,4.760481411E1 +2.598089000E3,3.822780835E1 +2.598387000E3,3.417342767E1 +2.598736000E3,2.863579065E1 +2.598981000E3,2.886228233E1 +2.599228000E3,2.855965247E1 +2.599493000E3,3.083396855E1 +2.599764000E3,3.581659374E1 +2.600032000E3,4.317647632E1 +2.600330000E3,4.853625621E1 +2.600623000E3,5.102467342E1 +2.600867000E3,4.877836926E1 +2.601112000E3,4.705612686E1 +2.601365000E3,4.889085742E1 +2.601612000E3,4.654488136E1 +2.601956000E3,4.055024190E1 +2.602220000E3,3.990851266E1 +2.602547000E3,3.648352551E1 +2.602794000E3,5.324982942E1 +2.603078000E3,5.268965363E1 +2.603338000E3,4.851189142E1 +2.603637000E3,5.135006473E1 +2.603925000E3,4.939301404E1 +2.604238000E3,5.337101389E1 +2.604488000E3,5.022765286E1 +2.604734000E3,5.253186666E1 +2.605064000E3,4.127453431E1 +2.605321000E3,4.114070867E1 +2.605572000E3,4.042282231E1 +2.605820000E3,4.255774466E1 +2.606073000E3,4.746726668E1 +2.606319000E3,4.761848671E1 +2.606565000E3,4.983628061E1 +2.606849000E3,3.046517787E1 +2.607082000E3,3.832211131E1 +2.607339000E3,4.741131966E1 +2.607609000E3,4.453335589E1 +2.607874000E3,3.545592153E1 +2.608197000E3,4.672891376E1 +2.608451000E3,4.755881287E1 +2.608706000E3,4.827652641E1 +2.608952000E3,4.727153141E1 +2.609226000E3,4.731450942E1 +2.609537000E3,3.981385402E1 +2.609784000E3,3.194698732E1 +2.610041000E3,3.314164027E1 +2.610283000E3,2.819786732E1 +2.610546000E3,2.664547785E1 +2.610857000E3,2.913544778E1 +2.611125000E3,3.961651759E1 +2.611432000E3,3.852777426E1 +2.611666000E3,3.205673146E1 +2.611951000E3,4.233182010E1 +2.612229000E3,3.378509898E1 +2.612454000E3,4.071755552E1 +2.612730000E3,5.018278065E1 +2.613050000E3,4.100034395E1 +2.613359000E3,3.892108016E1 +2.613628000E3,5.091321799E1 +2.613871000E3,4.336916838E1 +2.614108000E3,3.960788811E1 +2.614408000E3,3.948227358E1 +2.614722000E3,3.631863435E1 +2.614975000E3,4.057042340E1 +2.615256000E3,4.414132009E1 +2.615486000E3,4.180934435E1 +2.615750000E3,4.153999936E1 +2.615997000E3,3.521796466E1 +2.616260000E3,5.443854687E1 +2.616548000E3,5.408118563E1 +2.616842000E3,4.951275264E1 +2.617090000E3,5.182722031E1 +2.617344000E3,4.327522742E1 +2.617643000E3,5.375122422E1 +2.617975000E3,5.216635190E1 +2.618233000E3,4.126006713E1 +2.618497000E3,4.980260599E1 +2.618804000E3,4.655838197E1 +2.619044000E3,4.977945459E1 +2.619327000E3,4.875559075E1 +2.619562000E3,4.983226039E1 +2.619834000E3,4.741689273E1 +2.620075000E3,4.923498746E1 +2.620352000E3,4.923432072E1 +2.620664000E3,4.040876723E1 +2.620916000E3,3.889825840E1 +2.621142000E3,5.245081579E1 +2.621448000E3,4.684934794E1 +2.621687000E3,4.583906640E1 +2.621992000E3,4.366517623E1 +2.622230000E3,3.373873872E1 +2.622475000E3,3.701694694E1 +2.622750000E3,3.544967426E1 +2.623008000E3,3.363206222E1 +2.623285000E3,4.009589135E1 +2.623562000E3,4.408709562E1 +2.623825000E3,4.800133533E1 +2.624131000E3,4.855432282E1 +2.624414000E3,4.808187444E1 +2.624671000E3,5.252566194E1 +2.624932000E3,4.890333861E1 +2.625183000E3,4.370428781E1 +2.625430000E3,3.668118979E1 +2.625747000E3,4.353955331E1 +2.626003000E3,4.224026412E1 +2.626267000E3,4.311785789E1 +2.626514000E3,3.517806855E1 +2.626763000E3,3.981966751E1 +2.627025000E3,3.444602265E1 +2.627334000E3,3.341390757E1 +2.627660000E3,3.926570124E1 +2.627920000E3,4.341089288E1 +2.628216000E3,4.081134870E1 +2.628467000E3,3.912400300E1 +2.628730000E3,3.657553946E1 +2.629000000E3,3.072838888E1 +2.629284000E3,2.929703023E1 +2.629549000E3,3.378014550E1 +2.629844000E3,4.760306323E1 +2.630080000E3,4.024322042E1 +2.630373000E3,3.235913140E1 +2.630611000E3,3.920509877E1 +2.630919000E3,5.103841717E1 +2.631222000E3,5.813980805E1 +2.631514000E3,5.190256812E1 +2.631753000E3,4.653294376E1 +2.632054000E3,4.782140153E1 +2.632295000E3,4.977458693E1 +2.632592000E3,5.371197571E1 +2.632828000E3,5.056512655E1 +2.633140000E3,5.325824914E1 +2.633383000E3,4.973751947E1 +2.633632000E3,4.853342473E1 +2.633950000E3,3.905011010E1 +2.634254000E3,3.751700759E1 +2.634549000E3,5.292771607E1 +2.634786000E3,5.557450981E1 +2.635082000E3,4.974692283E1 +2.635319000E3,5.393938197E1 +2.635611000E3,4.675981835E1 +2.635848000E3,4.299614910E1 +2.636145000E3,3.756646750E1 +2.636395000E3,3.824353200E1 +2.636648000E3,3.045317917E1 +2.636942000E3,3.257931849E1 +2.637299000E3,3.010616025E1 +2.637599000E3,4.995329379E1 +2.637834000E3,4.824584689E1 +2.638071000E3,5.059212149E1 +2.638363000E3,5.330633429E1 +2.638612000E3,5.343612136E1 +2.638897000E3,4.755550111E1 +2.639122000E3,4.119881812E1 +2.639362000E3,3.902726568E1 +2.639659000E3,4.451944661E1 +2.639896000E3,4.587471035E1 +2.640164000E3,4.115502802E1 +2.640409000E3,4.505311495E1 +2.640656000E3,4.913968689E1 +2.640951000E3,5.110923180E1 +2.641208000E3,4.281604120E1 +2.641505000E3,4.825854961E1 +2.641748000E3,4.861588211E1 +2.642059000E3,4.450542116E1 +2.642304000E3,4.274821036E1 +2.642556000E3,3.503446158E1 +2.642862000E3,4.080900103E1 +2.643164000E3,4.152079562E1 +2.643527000E3,3.935881933E1 +2.643833000E3,3.760570593E1 +2.644082000E3,3.959144469E1 +2.644327000E3,4.007918652E1 +2.644573000E3,4.288120719E1 +2.644814000E3,4.793099478E1 +2.645114000E3,4.424069452E1 +2.645391000E3,4.078427844E1 +2.645635000E3,3.902795236E1 +2.645871000E3,4.393773718E1 +2.646111000E3,4.085627764E1 +2.646355000E3,4.393316509E1 +2.646690000E3,4.428892908E1 +2.646958000E3,4.601464396E1 +2.647235000E3,4.300358696E1 +2.647474000E3,4.083829680E1 +2.647758000E3,5.406220971E1 +2.648003000E3,4.253716581E1 +2.648273000E3,4.506680000E1 +2.648514000E3,3.500046728E1 +2.648758000E3,3.537281462E1 +2.649004000E3,5.013819891E1 +2.649251000E3,5.388943830E1 +2.649556000E3,5.656370208E1 +2.649891000E3,5.696480404E1 +2.650216000E3,4.675400561E1 +2.650515000E3,4.179549274E1 +2.650777000E3,4.536624285E1 +2.651084000E3,4.297370528E1 +2.651336000E3,4.376785410E1 +2.651635000E3,3.354560746E1 +2.651881000E3,2.537939319E1 +2.652180000E3,3.168783420E1 +2.652481000E3,4.898553010E1 +2.652737000E3,5.438993966E1 +2.652992000E3,4.963834041E1 +2.653252000E3,4.227369117E1 +2.653502000E3,4.301436765E1 +2.653812000E3,3.649724292E1 +2.654061000E3,4.086211966E1 +2.654320000E3,3.223281741E1 +2.654605000E3,2.807672508E1 +2.654836000E3,2.764825285E1 +2.655100000E3,4.598866982E1 +2.655350000E3,4.383741939E1 +2.655590000E3,4.883555528E1 +2.655837000E3,4.815765811E1 +2.656131000E3,5.047261312E1 +2.656369000E3,5.124829846E1 +2.656626000E3,3.956134092E1 +2.656925000E3,3.503286763E1 +2.657200000E3,3.224209198E1 +2.657447000E3,4.294806319E1 +2.657761000E3,4.898454413E1 +2.658011000E3,5.320780356E1 +2.658286000E3,5.345186604E1 +2.658542000E3,4.849291145E1 +2.658789000E3,5.098648363E1 +2.659034000E3,4.892931203E1 +2.659289000E3,4.580698225E1 +2.659530000E3,3.709695762E1 +2.659834000E3,3.457925551E1 +2.660081000E3,3.855219813E1 +2.660383000E3,3.845534481E1 +2.660628000E3,4.619372518E1 +2.660921000E3,4.848307744E1 +2.661167000E3,4.790880967E1 +2.661464000E3,4.667520128E1 +2.661710000E3,4.098851532E1 +2.662006000E3,4.035468673E1 +2.662245000E3,3.753010710E1 +2.662592000E3,4.792080660E1 +2.662862000E3,4.709835917E1 +2.663123000E3,3.501409506E1 +2.663374000E3,3.240664296E1 +2.663631000E3,4.326696615E1 +2.663874000E3,4.411177933E1 +2.664133000E3,3.936378145E1 +2.664382000E3,3.443614227E1 +2.664648000E3,3.761654306E1 +2.664944000E3,5.164457484E1 +2.665198000E3,2.810669920E1 +2.665512000E3,2.931307063E1 +2.665876000E3,3.108643425E1 +2.666131000E3,3.278101889E1 +2.666439000E3,4.277860150E1 +2.666693000E3,4.213131936E1 +2.667002000E3,3.935849781E1 +2.667259000E3,4.137879880E1 +2.667575000E3,3.790565018E1 +2.667827000E3,3.845274836E1 +2.668153000E3,3.676763670E1 +2.668452000E3,3.751975183E1 +2.668696000E3,3.224848897E1 +2.669023000E3,3.611134142E1 +2.669316000E3,4.467495655E1 +2.669607000E3,4.735906080E1 +2.669885000E3,5.159453510E1 +2.670167000E3,5.321308782E1 +2.670485000E3,5.282242631E1 +2.670747000E3,5.127719277E1 +2.670997000E3,4.902251972E1 +2.671243000E3,4.450532678E1 +2.671540000E3,3.864078148E1 +2.671788000E3,3.720620343E1 +2.672044000E3,4.496142790E1 +2.672357000E3,4.705640535E1 +2.672617000E3,3.890316941E1 +2.672864000E3,4.027639889E1 +2.673159000E3,4.202335245E1 +2.673421000E3,4.285452583E1 +2.673720000E3,3.626679930E1 +2.673964000E3,4.670395357E1 +2.674210000E3,4.915586670E1 +2.674514000E3,5.353785994E1 +2.674811000E3,5.414016767E1 +2.675048000E3,5.591079353E1 +2.675364000E3,3.844031623E1 +2.675661000E3,3.124520008E1 +2.675946000E3,3.566755596E1 +2.676189000E3,3.490423263E1 +2.676498000E3,5.070292882E1 +2.676799000E3,5.356134163E1 +2.677047000E3,5.161634227E1 +2.677305000E3,5.185439004E1 +2.677581000E3,5.315585532E1 +2.677832000E3,4.418578879E1 +2.678087000E3,3.972693415E1 +2.678335000E3,4.338465258E1 +2.678650000E3,5.168404535E1 +2.678934000E3,4.984483773E1 +2.679249000E3,4.977401184E1 +2.679507000E3,5.044345616E1 +2.679823000E3,4.232585634E1 +2.680128000E3,3.026551109E1 +2.680400000E3,3.009656886E1 +2.680660000E3,4.894119824E1 +2.680913000E3,4.712312643E1 +2.681208000E3,4.239602863E1 +2.681477000E3,4.875338950E1 +2.681768000E3,4.887945421E1 +2.682128000E3,4.379352407E1 +2.682394000E3,4.073494394E1 +2.682637000E3,3.685872977E1 +2.682895000E3,2.883047793E1 +2.683163000E3,3.769147996E1 +2.683455000E3,3.713975885E1 +2.683749000E3,4.855681627E1 +2.683994000E3,4.936430656E1 +2.684290000E3,5.303947120E1 +2.684540000E3,5.031092673E1 +2.684833000E3,4.783130186E1 +2.685073000E3,4.898734587E1 +2.685348000E3,4.686166956E1 +2.685598000E3,4.244245178E1 +2.685917000E3,3.872119900E1 +2.686161000E3,4.891396583E1 +2.686434000E3,4.491629365E1 +2.686687000E3,3.588391777E1 +2.686952000E3,3.156965948E1 +2.687206000E3,3.184725563E1 +2.687480000E3,3.153561496E1 +2.687733000E3,3.669659228E1 +2.688049000E3,3.507922771E1 +2.688340000E3,3.251056517E1 +2.688645000E3,4.079174670E1 +2.688915000E3,4.837277005E1 +2.689163000E3,4.669136560E1 +2.689426000E3,3.659115086E1 +2.689751000E3,4.814125321E1 +2.689994000E3,4.721335081E1 +2.690235000E3,5.119773767E1 +2.690471000E3,4.584232122E1 +2.690738000E3,4.687969307E1 +2.691006000E3,4.116197132E1 +2.691312000E3,2.850019915E1 +2.691659000E3,3.175399572E1 +2.691948000E3,3.215115185E1 +2.692197000E3,2.655209633E1 +2.692466000E3,3.136629444E1 +2.692727000E3,2.928762690E1 +2.692976000E3,2.688909217E1 +2.693281000E3,3.350197248E1 +2.693518000E3,3.760267236E1 +2.693776000E3,3.194141055E1 +2.694032000E3,3.113878807E1 +2.694299000E3,2.830606211E1 +2.694602000E3,2.632227285E1 +2.694941000E3,2.736240000E1 +2.695184000E3,3.956118458E1 +2.695488000E3,4.069974415E1 +2.695732000E3,4.498590768E1 +2.696030000E3,3.370199172E1 +2.696300000E3,3.284857688E1 +2.696535000E3,2.919082343E1 +2.696815000E3,3.146626789E1 +2.697056000E3,2.968971947E1 +2.697354000E3,4.116455896E1 +2.697640000E3,5.055341773E1 +2.697888000E3,5.163434474E1 +2.698155000E3,4.792936353E1 +2.698456000E3,4.111753823E1 +2.698732000E3,4.594070701E1 +2.699031000E3,3.204472070E1 +2.699273000E3,2.836668859E1 +2.699578000E3,2.624009297E1 +2.699855000E3,2.719538340E1 +2.700110000E3,2.868563476E1 +2.700399000E3,2.757039916E1 +2.700662000E3,2.546630310E1 +2.700960000E3,2.981844134E1 +2.701310000E3,3.063471239E1 +2.701629000E3,4.014173680E1 +2.701894000E3,3.281157953E1 +2.702206000E3,4.268438101E1 +2.702448000E3,4.272045970E1 +2.702710000E3,4.782744516E1 +2.702984000E3,4.067538265E1 +2.703255000E3,3.821763448E1 +2.703566000E3,3.373237040E1 +2.703865000E3,2.762261654E1 +2.704108000E3,3.058182972E1 +2.704366000E3,4.157303269E1 +2.704695000E3,4.128988216E1 +2.705002000E3,3.725674585E1 +2.705260000E3,3.318881716E1 +2.705544000E3,3.512644750E1 +2.705774000E3,3.012622541E1 +2.706039000E3,3.307868989E1 +2.706297000E3,3.089854998E1 +2.706599000E3,2.870455364E1 +2.706901000E3,2.573473536E1 +2.707155000E3,2.708285982E1 +2.707419000E3,2.641018696E1 +2.707644000E3,2.532685142E1 +2.707945000E3,2.741320006E1 +2.708188000E3,2.764718970E1 +2.708460000E3,3.745935532E1 +2.708711000E3,4.292241509E1 +2.708955000E3,4.431523077E1 +2.709266000E3,3.812245251E1 +2.709534000E3,3.199637282E1 +2.709802000E3,3.030937111E1 +2.710049000E3,3.172341474E1 +2.710303000E3,4.706685853E1 +2.710610000E3,4.372593931E1 +2.710859000E3,4.298246415E1 +2.711196000E3,4.313732995E1 +2.711485000E3,3.646858634E1 +2.711745000E3,3.547356546E1 +2.712003000E3,4.802507202E1 +2.712259000E3,4.666185634E1 +2.712527000E3,4.298723738E1 +2.712813000E3,3.203029787E1 +2.713082000E3,2.721140687E1 +2.713344000E3,3.967881707E1 +2.713594000E3,5.017429445E1 +2.713859000E3,4.690730331E1 +2.714106000E3,4.892140969E1 +2.714475000E3,4.312346900E1 +2.714730000E3,4.926615820E1 +2.714984000E3,4.690558758E1 +2.715298000E3,3.116292546E1 +2.715563000E3,2.731472603E1 +2.715855000E3,3.029992609E1 +2.716160000E3,3.149201904E1 +2.716442000E3,2.826058660E1 +2.716703000E3,2.713282366E1 +2.716957000E3,3.659207256E1 +2.717253000E3,3.982143620E1 +2.717592000E3,4.316888996E1 +2.717851000E3,4.348787554E1 +2.718149000E3,4.336902207E1 +2.718464000E3,4.494305168E1 +2.718765000E3,4.280996114E1 +2.719042000E3,4.083199069E1 +2.719277000E3,3.924180447E1 +2.719573000E3,2.985025677E1 +2.719800000E3,2.924980764E1 +2.720042000E3,2.589394072E1 +2.720346000E3,2.996884267E1 +2.720607000E3,2.951796470E1 +2.720882000E3,2.762273017E1 +2.721181000E3,4.946261833E1 +2.721422000E3,4.848220411E1 +2.721736000E3,4.816357380E1 +2.722001000E3,5.238238407E1 +2.722305000E3,5.586118797E1 +2.722602000E3,5.474108905E1 +2.722856000E3,5.089156984E1 +2.723105000E3,4.900978141E1 +2.723369000E3,5.541376880E1 +2.723666000E3,4.827427134E1 +2.723997000E3,4.802338633E1 +2.724296000E3,3.537215093E1 +2.724548000E3,3.822637167E1 +2.724844000E3,3.388327957E1 +2.725086000E3,3.756611639E1 +2.725338000E3,4.489615211E1 +2.725635000E3,5.048833137E1 +2.725871000E3,4.298428385E1 +2.726174000E3,3.303114009E1 +2.726475000E3,4.527811220E1 +2.726764000E3,4.815487328E1 +2.727017000E3,4.761823346E1 +2.727328000E3,4.180028821E1 +2.727607000E3,4.512936944E1 +2.727849000E3,4.337880786E1 +2.728101000E3,4.031817829E1 +2.728401000E3,3.509684782E1 +2.728650000E3,4.495565250E1 +2.728895000E3,4.157595660E1 +2.729138000E3,5.008202715E1 +2.729381000E3,5.308960545E1 +2.729622000E3,4.943413955E1 +2.729917000E3,4.820467383E1 +2.730234000E3,5.168344618E1 +2.730544000E3,5.128425900E1 +2.730837000E3,5.242528085E1 +2.731075000E3,5.125548047E1 +2.731382000E3,5.027678189E1 +2.731625000E3,4.595108129E1 +2.731917000E3,5.425640288E1 +2.732229000E3,5.493458667E1 +2.732522000E3,5.383738769E1 +2.732781000E3,4.577468908E1 +2.733036000E3,4.877165484E1 +2.733337000E3,5.155317163E1 +2.733582000E3,4.868465804E1 +2.733904000E3,5.094377769E1 +2.734158000E3,4.778052408E1 +2.734485000E3,4.980696312E1 +2.734788000E3,5.229980528E1 +2.735043000E3,4.487473927E1 +2.735323000E3,5.405477376E1 +2.735550000E3,5.095910777E1 +2.735795000E3,4.081340338E1 +2.736110000E3,3.942379743E1 +2.736352000E3,4.377765131E1 +2.736599000E3,4.311237352E1 +2.736822000E3,4.659947655E1 +2.737071000E3,4.430846393E1 +2.737313000E3,4.579154087E1 +2.737577000E3,4.628223866E1 +2.737831000E3,3.937286623E1 +2.738094000E3,3.852847368E1 +2.738336000E3,3.907921933E1 +2.738583000E3,5.112703685E1 +2.738825000E3,4.827754167E1 +2.739100000E3,4.022366081E1 +2.739352000E3,3.342841986E1 +2.739649000E3,3.354947585E1 +2.740003000E3,2.967395260E1 +2.740259000E3,4.724158021E1 +2.740515000E3,4.406232704E1 +2.740781000E3,4.128290785E1 +2.741030000E3,3.766271195E1 +2.741274000E3,3.234308905E1 +2.741542000E3,5.345026714E1 +2.741790000E3,5.189834860E1 +2.742037000E3,4.310520052E1 +2.742373000E3,3.005340200E1 +2.742661000E3,3.957498865E1 +2.742905000E3,4.298992085E1 +2.743235000E3,3.914359224E1 +2.743487000E3,4.665969106E1 +2.743742000E3,4.569837618E1 +2.743989000E3,4.037243126E1 +2.744288000E3,4.393151618E1 +2.744525000E3,4.191552922E1 +2.744830000E3,3.855450094E1 +2.745068000E3,3.137426682E1 +2.745312000E3,3.988970586E1 +2.745595000E3,4.261856210E1 +2.745912000E3,4.545535941E1 +2.746178000E3,3.982007681E1 +2.746515000E3,3.873990925E1 +2.746799000E3,4.024486228E1 +2.747097000E3,3.778822068E1 +2.747346000E3,3.349647091E1 +2.747587000E3,3.949530039E1 +2.747884000E3,4.424971453E1 +2.748182000E3,4.109440717E1 +2.748426000E3,4.429824127E1 +2.748724000E3,3.941870140E1 +2.749014000E3,3.719766140E1 +2.749309000E3,3.407061301E1 +2.749659000E3,3.362708714E1 +2.749929000E3,4.111324363E1 +2.750185000E3,4.275268079E1 +2.750445000E3,5.624172952E1 +2.750726000E3,4.374037489E1 +2.750957000E3,4.189644016E1 +2.751207000E3,3.621210842E1 +2.751519000E3,4.177841495E1 +2.751770000E3,4.048458953E1 +2.752052000E3,3.923884976E1 +2.752303000E3,3.426258793E1 +2.752575000E3,3.252443323E1 +2.752926000E3,3.211416673E1 +2.753222000E3,3.245023971E1 +2.753483000E3,3.266068265E1 +2.753758000E3,4.004662592E1 +2.754054000E3,4.872983792E1 +2.754320000E3,5.041613029E1 +2.754567000E3,4.540589836E1 +2.754814000E3,3.042430240E1 +2.755080000E3,3.072459076E1 +2.755376000E3,3.998104284E1 +2.755642000E3,4.049850263E1 +2.755970000E3,4.294486763E1 +2.756315000E3,4.067196783E1 +2.756573000E3,4.772031632E1 +2.756825000E3,4.988707098E1 +2.757139000E3,4.555538995E1 +2.757388000E3,4.252022698E1 +2.757651000E3,3.810962452E1 +2.757917000E3,3.494795311E1 +2.758159000E3,3.247098224E1 +2.758413000E3,3.588027190E1 +2.758665000E3,3.200494843E1 +2.758920000E3,4.772506231E1 +2.759171000E3,3.775844318E1 +2.759507000E3,3.920116655E1 +2.759772000E3,4.528245497E1 +2.760086000E3,4.240466142E1 +2.760349000E3,4.544544837E1 +2.760652000E3,4.039389797E1 +2.760923000E3,3.896680017E1 +2.761194000E3,4.381534416E1 +2.761436000E3,4.424202471E1 +2.761681000E3,4.737958135E1 +2.761960000E3,4.213672401E1 +2.762194000E3,4.516117441E1 +2.762462000E3,4.279973284E1 +2.762806000E3,3.859577230E1 +2.763061000E3,4.880977241E1 +2.763403000E3,4.365184399E1 +2.763660000E3,3.848143477E1 +2.763932000E3,4.787104427E1 +2.764214000E3,3.823665924E1 +2.764451000E3,3.049392521E1 +2.764732000E3,3.086844430E1 +2.764975000E3,2.587396098E1 +2.765284000E3,3.362049288E1 +2.765536000E3,3.353664382E1 +2.765825000E3,5.140360254E1 +2.766193000E3,5.105178275E1 +2.766449000E3,5.027787452E1 +2.766756000E3,4.961194015E1 +2.766992000E3,4.473604482E1 +2.767290000E3,5.567849424E1 +2.767540000E3,5.366739238E1 +2.767788000E3,5.268444481E1 +2.768092000E3,4.378358357E1 +2.768389000E3,4.285786187E1 +2.768638000E3,3.838737205E1 +2.768928000E3,4.053738598E1 +2.769250000E3,3.914310468E1 +2.769517000E3,3.950994015E1 +2.769781000E3,4.085678781E1 +2.770095000E3,3.706118568E1 +2.770362000E3,3.878826243E1 +2.770640000E3,4.509160576E1 +2.770877000E3,4.395611401E1 +2.771129000E3,3.894826552E1 +2.771368000E3,3.783168139E1 +2.771620000E3,3.074559821E1 +2.771881000E3,4.191911052E1 +2.772136000E3,4.492008577E1 +2.772447000E3,3.666714779E1 +2.772710000E3,4.135207765E1 +2.772994000E3,4.645886813E1 +2.773238000E3,5.078995440E1 +2.773478000E3,5.706152467E1 +2.773725000E3,5.135582573E1 +2.773990000E3,4.900548267E1 +2.774266000E3,5.275962483E1 +2.774567000E3,3.947101760E1 +2.774806000E3,4.078518654E1 +2.775113000E3,4.929998433E1 +2.775417000E3,4.396253608E1 +2.775784000E3,4.382194135E1 +2.776077000E3,4.131860223E1 +2.776341000E3,4.321133953E1 +2.776596000E3,3.942571045E1 +2.776881000E3,5.035254190E1 +2.777176000E3,5.596334670E1 +2.777432000E3,6.003222989E1 +2.777730000E3,5.139953750E1 +2.778036000E3,5.596001036E1 +2.778330000E3,5.632045587E1 +2.778567000E3,5.352711698E1 +2.778873000E3,5.160150080E1 +2.779243000E3,5.407354895E1 +2.779513000E3,5.151192380E1 +2.779810000E3,5.479493680E1 +2.780084000E3,5.006197117E1 +2.780351000E3,5.012247277E1 +2.780644000E3,4.598086802E1 +2.780884000E3,3.959492635E1 +2.781142000E3,3.571624227E1 +2.781421000E3,4.082207018E1 +2.781720000E3,5.162800696E1 +2.781984000E3,5.211692198E1 +2.782250000E3,5.017743125E1 +2.782617000E3,4.685740156E1 +2.782916000E3,4.348825959E1 +2.783213000E3,3.825858224E1 +2.783454000E3,4.923981343E1 +2.783750000E3,5.319160353E1 +2.783992000E3,4.967899375E1 +2.784288000E3,3.952802481E1 +2.784535000E3,3.328379343E1 +2.784779000E3,3.014350405E1 +2.785020000E3,3.405755755E1 +2.785313000E3,4.653255974E1 +2.785639000E3,4.571255084E1 +2.785896000E3,4.212654376E1 +2.786166000E3,4.635178938E1 +2.786421000E3,4.614547408E1 +2.786716000E3,4.279815144E1 +2.787018000E3,3.739201392E1 +2.787261000E3,4.297599275E1 +2.787569000E3,5.279236826E1 +2.787869000E3,4.385267374E1 +2.788181000E3,3.538660905E1 +2.788488000E3,4.283741498E1 +2.788738000E3,3.898018884E1 +2.789079000E3,4.417569536E1 +2.789327000E3,3.821417555E1 +2.789586000E3,4.124587088E1 +2.789850000E3,4.583617377E1 +2.790116000E3,4.758354441E1 +2.790413000E3,4.386951397E1 +2.790662000E3,4.527431896E1 +2.790956000E3,4.454979637E1 +2.791207000E3,4.019280914E1 +2.791465000E3,4.549375778E1 +2.791714000E3,4.076569420E1 +2.791963000E3,3.807465350E1 +2.792293000E3,5.201775254E1 +2.792550000E3,4.217772267E1 +2.792797000E3,5.472035384E1 +2.793107000E3,5.403984906E1 +2.793357000E3,5.591746790E1 +2.793622000E3,5.564159884E1 +2.793875000E3,5.646584479E1 +2.794118000E3,5.185594958E1 +2.794377000E3,4.895735059E1 +2.794636000E3,5.654557288E1 +2.794943000E3,5.012866956E1 +2.795254000E3,4.757016947E1 +2.795528000E3,5.211434220E1 +2.795790000E3,4.452402763E1 +2.796058000E3,4.290214665E1 +2.796307000E3,3.465820610E1 +2.796556000E3,4.339944359E1 +2.796852000E3,4.313164949E1 +2.797091000E3,5.438037991E1 +2.797389000E3,5.514175593E1 +2.797635000E3,4.928848190E1 +2.797924000E3,4.659784940E1 +2.798220000E3,4.998887096E1 +2.798537000E3,4.486399829E1 +2.798842000E3,4.885866840E1 +2.799091000E3,4.635335968E1 +2.799347000E3,4.504358299E1 +2.799594000E3,3.958005741E1 +2.799833000E3,4.827229253E1 +2.800082000E3,4.830536262E1 +2.800388000E3,4.659260793E1 +2.800673000E3,4.111758509E1 +2.800972000E3,4.464305855E1 +2.801233000E3,4.497276151E1 +2.801524000E3,3.374775892E1 +2.801884000E3,3.426238632E1 +2.802202000E3,3.521995684E1 +2.802451000E3,3.181302785E1 +2.802708000E3,2.794884084E1 +2.803019000E3,3.320140571E1 +2.803325000E3,3.478175393E1 +2.803626000E3,3.529465039E1 +2.803932000E3,3.962950189E1 +2.804222000E3,5.725685057E1 +2.804486000E3,5.740119524E1 +2.804784000E3,5.069347451E1 +2.805056000E3,5.047632669E1 +2.805376000E3,5.207930289E1 +2.805626000E3,5.264810014E1 +2.805887000E3,5.288954519E1 +2.806177000E3,4.457356662E1 +2.806431000E3,3.885566564E1 +2.806679000E3,3.768676842E1 +2.806944000E3,3.953483275E1 +2.807192000E3,4.348722722E1 +2.807514000E3,4.091620627E1 +2.807832000E3,4.192587435E1 +2.808086000E3,4.434501723E1 +2.808380000E3,4.393917252E1 +2.808686000E3,4.250763593E1 +2.809001000E3,4.146719312E1 +2.809249000E3,4.084508562E1 +2.809517000E3,4.466153637E1 +2.809817000E3,4.002274614E1 +2.810111000E3,4.310032831E1 +2.810375000E3,4.901386280E1 +2.810661000E3,4.607368963E1 +2.810927000E3,4.387647276E1 +2.811225000E3,5.143943484E1 +2.811469000E3,5.045193234E1 +2.811861000E3,4.363012565E1 +2.812115000E3,4.450854658E1 +2.812371000E3,4.453857946E1 +2.812631000E3,4.628101753E1 +2.812921000E3,4.634691523E1 +2.813212000E3,4.654803531E1 +2.813510000E3,4.718980060E1 +2.813758000E3,4.430765323E1 +2.814051000E3,4.322664022E1 +2.814349000E3,4.450224091E1 +2.814582000E3,4.170367724E1 +2.814868000E3,3.985315953E1 +2.815113000E3,5.280042862E1 +2.815400000E3,4.119993511E1 +2.815662000E3,4.251502783E1 +2.815937000E3,4.221594106E1 +2.816186000E3,4.475181393E1 +2.816425000E3,4.757705666E1 +2.816666000E3,4.971185267E1 +2.816968000E3,4.862141287E1 +2.817211000E3,4.713523003E1 +2.817492000E3,4.541478066E1 +2.817737000E3,4.363493262E1 +2.817996000E3,4.428814895E1 +2.818246000E3,4.395099122E1 +2.818516000E3,4.781334664E1 +2.818773000E3,4.439472962E1 +2.819027000E3,4.768107540E1 +2.819278000E3,4.535748265E1 +2.819523000E3,5.061196572E1 +2.819779000E3,4.816069594E1 +2.820044000E3,4.715573746E1 +2.820374000E3,4.919198579E1 +2.820635000E3,5.486134785E1 +2.820897000E3,4.845922458E1 +2.821173000E3,4.486224636E1 +2.821520000E3,4.543631827E1 +2.821781000E3,4.823449020E1 +2.822049000E3,4.622456265E1 +2.822354000E3,3.467019045E1 +2.822632000E3,3.820707315E1 +2.822892000E3,3.870865044E1 +2.823175000E3,3.526203974E1 +2.823424000E3,3.398332746E1 +2.823673000E3,4.060940798E1 +2.823924000E3,4.531267955E1 +2.824156000E3,4.823172894E1 +2.824426000E3,5.381643572E1 +2.824772000E3,5.219878503E1 +2.825053000E3,4.888255160E1 +2.825277000E3,4.023650802E1 +2.825526000E3,3.467455539E1 +2.825785000E3,3.818404386E1 +2.826078000E3,4.122702652E1 +2.826315000E3,3.713088668E1 +2.826619000E3,4.891468535E1 +2.826912000E3,5.266971981E1 +2.827148000E3,4.991025067E1 +2.827457000E3,5.435242869E1 +2.827718000E3,5.378448717E1 +2.828053000E3,5.171570017E1 +2.828327000E3,5.600593919E1 +2.828581000E3,5.175339102E1 +2.828821000E3,4.567582373E1 +2.829101000E3,3.417267221E1 +2.829337000E3,3.532670702E1 +2.829576000E3,4.323212593E1 +2.829823000E3,3.952189104E1 +2.830096000E3,4.372473758E1 +2.830363000E3,4.288959864E1 +2.830609000E3,3.903893871E1 +2.830954000E3,3.847274859E1 +2.831281000E3,4.911689413E1 +2.831539000E3,5.342672798E1 +2.831798000E3,5.558955965E1 +2.832091000E3,5.519004987E1 +2.832341000E3,5.877942264E1 +2.832589000E3,4.602825434E1 +2.832861000E3,3.380054471E1 +2.833107000E3,3.583644563E1 +2.833403000E3,4.160983164E1 +2.833653000E3,3.903662215E1 +2.833958000E3,3.879412363E1 +2.834222000E3,4.121083607E1 +2.834460000E3,4.235130104E1 +2.834723000E3,5.615135633E1 +2.834993000E3,5.355273371E1 +2.835271000E3,4.896976792E1 +2.835535000E3,5.132324538E1 +2.835792000E3,5.529277110E1 +2.836041000E3,5.163674064E1 +2.836366000E3,4.657927993E1 +2.836613000E3,4.238907241E1 +2.836875000E3,5.376683406E1 +2.837143000E3,5.052269952E1 +2.837398000E3,5.018740192E1 +2.837697000E3,4.680907883E1 +2.837961000E3,4.427452663E1 +2.838227000E3,3.300759096E1 +2.838490000E3,3.639504198E1 +2.838784000E3,4.617517315E1 +2.839084000E3,4.692063960E1 +2.839325000E3,4.445415179E1 +2.839620000E3,4.215561710E1 +2.839863000E3,4.433766229E1 +2.840168000E3,4.210423337E1 +2.840460000E3,3.873922427E1 +2.840768000E3,3.717852459E1 +2.841057000E3,3.957811826E1 +2.841313000E3,3.760389186E1 +2.841638000E3,4.310249633E1 +2.841921000E3,4.813095040E1 +2.842192000E3,4.623131926E1 +2.842444000E3,4.648620260E1 +2.842743000E3,4.620801315E1 +2.843027000E3,4.321069748E1 +2.843281000E3,4.205248893E1 +2.843587000E3,2.653536028E1 +2.843863000E3,2.940344619E1 +2.844270000E3,4.715941302E1 +2.844533000E3,4.512147604E1 +2.844793000E3,4.758865475E1 +2.845051000E3,4.853448129E1 +2.845325000E3,4.647479098E1 +2.845569000E3,4.600966189E1 +2.845842000E3,4.549543262E1 +2.846088000E3,4.262631529E1 +2.846347000E3,4.522394390E1 +2.846652000E3,4.657245211E1 +2.846924000E3,4.554651191E1 +2.847231000E3,4.501421864E1 +2.847609000E3,4.413715050E1 +2.847859000E3,3.641102730E1 +2.848158000E3,2.959594862E1 +2.848409000E3,3.229903797E1 +2.848684000E3,3.716282001E1 +2.848948000E3,4.864280315E1 +2.849195000E3,4.698625872E1 +2.849453000E3,4.475077374E1 +2.849725000E3,4.320130236E1 +2.850029000E3,4.052232702E1 +2.850286000E3,4.987213531E1 +2.850622000E3,4.470574790E1 +2.850953000E3,4.746715529E1 +2.851224000E3,4.817674396E1 +2.851475000E3,4.755384271E1 +2.851775000E3,4.606857790E1 +2.852037000E3,4.602549066E1 +2.852280000E3,4.107899882E1 +2.852578000E3,4.602936757E1 +2.852832000E3,4.594357604E1 +2.853123000E3,4.132874601E1 +2.853424000E3,3.891402985E1 +2.853676000E3,3.210431116E1 +2.854034000E3,4.148325967E1 +2.854336000E3,4.539420759E1 +2.854629000E3,3.813311910E1 +2.854857000E3,3.204826654E1 +2.855103000E3,4.042825728E1 +2.855348000E3,3.781799437E1 +2.855635000E3,3.485312778E1 +2.855901000E3,3.176423587E1 +2.856194000E3,3.286644404E1 +2.856446000E3,3.601261840E1 +2.856741000E3,3.056779431E1 +2.856990000E3,2.876904683E1 +2.857247000E3,2.336161379E1 +2.857525000E3,5.319777865E1 +2.857765000E3,4.924210585E1 +2.858030000E3,4.161506516E1 +2.858287000E3,3.471025819E1 +2.858592000E3,2.954431085E1 +2.858878000E3,3.551304021E1 +2.859146000E3,4.056554733E1 +2.859438000E3,4.716772205E1 +2.859749000E3,4.728214145E1 +2.860112000E3,4.333221553E1 +2.860355000E3,3.970290127E1 +2.860627000E3,4.675070996E1 +2.860922000E3,5.292655838E1 +2.861168000E3,5.560528000E1 +2.861448000E3,5.155203362E1 +2.861684000E3,4.854372910E1 +2.861981000E3,5.166225265E1 +2.862226000E3,5.239758268E1 +2.862536000E3,4.880079262E1 +2.862801000E3,5.860724491E1 +2.863049000E3,5.487085904E1 +2.863366000E3,4.477307493E1 +2.863622000E3,4.809216762E1 +2.863923000E3,4.128779228E1 +2.864180000E3,4.039902121E1 +2.864473000E3,3.763315716E1 +2.864758000E3,3.836830031E1 +2.865072000E3,3.562217561E1 +2.865375000E3,4.251016575E1 +2.865631000E3,3.959478231E1 +2.865894000E3,3.906491963E1 +2.866161000E3,3.169567809E1 +2.866409000E3,4.180907280E1 +2.866769000E3,5.009501966E1 +2.867095000E3,4.485052737E1 +2.867377000E3,4.543449817E1 +2.867634000E3,4.558186247E1 +2.867912000E3,3.310648260E1 +2.868160000E3,3.368680580E1 +2.868403000E3,3.259924908E1 +2.868652000E3,3.468868920E1 +2.868945000E3,3.811295096E1 +2.869214000E3,3.680532391E1 +2.869523000E3,4.480088276E1 +2.869800000E3,4.321197878E1 +2.870149000E3,3.870196995E1 +2.870426000E3,4.501549736E1 +2.870686000E3,3.869046251E1 +2.870998000E3,5.116138397E1 +2.871259000E3,4.565952095E1 +2.871545000E3,4.044036430E1 +2.871835000E3,3.776423584E1 +2.872146000E3,4.283314388E1 +2.872428000E3,4.822150076E1 +2.872666000E3,4.609488251E1 +2.872966000E3,4.199842198E1 +2.873258000E3,4.199452970E1 +2.873557000E3,4.094164548E1 +2.873868000E3,3.451929232E1 +2.874146000E3,3.725700957E1 +2.874378000E3,3.820854143E1 +2.874632000E3,3.261818797E1 +2.874949000E3,4.229639001E1 +2.875219000E3,4.314663650E1 +2.875496000E3,4.030472415E1 +2.875772000E3,3.740362597E1 +2.876082000E3,3.770704299E1 +2.876334000E3,4.016521241E1 +2.876600000E3,4.155568881E1 +2.876855000E3,3.864643482E1 +2.877164000E3,3.358142820E1 +2.877430000E3,2.988882280E1 +2.877698000E3,4.233125756E1 +2.877954000E3,4.245249096E1 +2.878273000E3,3.619646633E1 +2.878541000E3,3.199868066E1 +2.878801000E3,4.546979293E1 +2.879062000E3,5.523869784E1 +2.879342000E3,5.605267417E1 +2.879584000E3,5.653411529E1 +2.879928000E3,4.626290707E1 +2.880202000E3,3.540012043E1 +2.880447000E3,3.620700172E1 +2.880691000E3,2.922036878E1 +2.880938000E3,3.659816429E1 +2.881251000E3,4.145147882E1 +2.881527000E3,3.894444603E1 +2.881851000E3,3.741315407E1 +2.882112000E3,4.094962867E1 +2.882373000E3,4.333353585E1 +2.882625000E3,4.557565518E1 +2.882879000E3,4.308396997E1 +2.883145000E3,4.097722416E1 +2.883416000E3,3.927850137E1 +2.883669000E3,3.223716221E1 +2.883941000E3,3.004581442E1 +2.884209000E3,3.765685263E1 +2.884466000E3,3.878810543E1 +2.884718000E3,2.988953340E1 +2.884967000E3,3.346960294E1 +2.885221000E3,3.799647420E1 +2.885537000E3,3.116842616E1 +2.885796000E3,3.671552801E1 +2.886084000E3,4.459898232E1 +2.886404000E3,4.708370738E1 +2.886677000E3,5.036035843E1 +2.886979000E3,4.113513329E1 +2.887251000E3,3.503458684E1 +2.887528000E3,3.462090732E1 +2.887785000E3,4.001717165E1 +2.888037000E3,3.538133603E1 +2.888296000E3,3.662805649E1 +2.888547000E3,4.263542947E1 +2.888820000E3,4.431895872E1 +2.889079000E3,4.300413574E1 +2.889340000E3,4.173317530E1 +2.889582000E3,4.288275032E1 +2.889932000E3,3.944773526E1 +2.890197000E3,3.214266541E1 +2.890503000E3,3.060588708E1 +2.890777000E3,3.296322494E1 +2.891017000E3,3.394251803E1 +2.891320000E3,3.208741950E1 +2.891570000E3,3.441770910E1 +2.891849000E3,3.368561294E1 +2.892087000E3,3.475967611E1 +2.892337000E3,3.740055420E1 +2.892635000E3,3.542355307E1 +2.892981000E3,3.105741683E1 +2.893247000E3,3.245614761E1 +2.893513000E3,4.142391644E1 +2.893779000E3,4.497461971E1 +2.894029000E3,4.653178389E1 +2.894282000E3,4.703576342E1 +2.894540000E3,4.751169602E1 +2.894805000E3,4.201422178E1 +2.895062000E3,4.370261317E1 +2.895310000E3,4.660906406E1 +2.895596000E3,4.633159753E1 +2.895865000E3,4.381116332E1 +2.896155000E3,4.368523912E1 +2.896405000E3,4.747051902E1 +2.896651000E3,4.222577444E1 +2.896905000E3,4.572633660E1 +2.897184000E3,5.203776089E1 +2.897450000E3,5.010843836E1 +2.897744000E3,4.910530865E1 +2.898022000E3,4.664859833E1 +2.898308000E3,3.985336775E1 +2.898564000E3,3.683403533E1 +2.898812000E3,4.284820320E1 +2.899091000E3,4.286036404E1 +2.899396000E3,5.224070654E1 +2.899753000E3,4.568546748E1 +2.900018000E3,5.586433220E1 +2.900278000E3,4.514230837E1 +2.900559000E3,3.853422420E1 +2.900865000E3,3.299777990E1 +2.901139000E3,3.594596453E1 +2.901415000E3,2.896001699E1 +2.901650000E3,2.556794162E1 +2.901937000E3,2.525773120E1 +2.902206000E3,3.138035436E1 +2.902457000E3,3.725731802E1 +2.902816000E3,3.600302530E1 +2.903095000E3,3.476106384E1 +2.903340000E3,3.325569458E1 +2.903600000E3,3.217545002E1 +2.903858000E3,2.994578711E1 +2.904108000E3,3.277965280E1 +2.904372000E3,4.013450695E1 +2.904627000E3,3.103730297E1 +2.904913000E3,4.187502355E1 +2.905174000E3,3.591627686E1 +2.905452000E3,3.067277870E1 +2.905743000E3,2.813597523E1 +2.906004000E3,2.760542404E1 +2.906321000E3,3.327793113E1 +2.906579000E3,4.111963776E1 +2.906835000E3,4.309802180E1 +2.907113000E3,2.749088524E1 +2.907354000E3,2.269523459E1 +2.907657000E3,3.631225289E1 +2.907901000E3,4.146405590E1 +2.908156000E3,3.785670954E1 +2.908403000E3,4.498664409E1 +2.908675000E3,4.174614917E1 +2.908932000E3,4.632262643E1 +2.909189000E3,3.569839459E1 +2.909522000E3,4.635385444E1 +2.909802000E3,4.337190367E1 +2.910035000E3,3.796960383E1 +2.910287000E3,4.151951269E1 +2.910538000E3,4.245940710E1 +2.910795000E3,4.268454470E1 +2.911045000E3,4.280139929E1 +2.911335000E3,3.861780445E1 +2.911584000E3,4.028221299E1 +2.911885000E3,3.934408626E1 +2.912139000E3,3.091195323E1 +2.912386000E3,2.709027446E1 +2.912622000E3,2.721294148E1 +2.912915000E3,3.169063213E1 +2.913196000E3,3.663766462E1 +2.913461000E3,3.582442105E1 +2.913744000E3,2.742218375E1 +2.913990000E3,3.432349666E1 +2.914297000E3,4.586386591E1 +2.914575000E3,4.813383402E1 +2.914888000E3,5.016441505E1 +2.915190000E3,4.132593749E1 +2.915481000E3,3.992883324E1 +2.915827000E3,3.713218942E1 +2.916087000E3,4.862036940E1 +2.916351000E3,4.985137398E1 +2.916622000E3,5.126616609E1 +2.916881000E3,4.180876614E1 +2.917157000E3,4.057128207E1 +2.917418000E3,3.994520906E1 +2.917681000E3,3.719846748E1 +2.917964000E3,4.377214072E1 +2.918264000E3,4.081140664E1 +2.918518000E3,4.149712935E1 +2.918784000E3,3.965801174E1 +2.919127000E3,3.499332266E1 +2.919415000E3,3.454976163E1 +2.919745000E3,3.801205804E1 +2.920003000E3,4.266330834E1 +2.920244000E3,3.704497233E1 +2.920548000E3,3.869800412E1 +2.920840000E3,3.880762608E1 +2.921081000E3,3.967826348E1 +2.921325000E3,4.387098551E1 +2.921573000E3,3.795523909E1 +2.921876000E3,3.884773193E1 +2.922122000E3,3.949919351E1 +2.922481000E3,3.549368996E1 +2.922774000E3,5.176437750E1 +2.923023000E3,4.673969779E1 +2.923306000E3,3.729614967E1 +2.923573000E3,3.557242251E1 +2.923880000E3,5.351861504E1 +2.924155000E3,5.486661937E1 +2.924424000E3,5.693150230E1 +2.924735000E3,4.225245527E1 +2.924988000E3,4.082554353E1 +2.925252000E3,3.807826598E1 +2.925573000E3,3.587807510E1 +2.925935000E3,4.290242494E1 +2.926237000E3,3.960438869E1 +2.926496000E3,3.732088357E1 +2.926751000E3,3.216321546E1 +2.926991000E3,3.001846960E1 +2.927295000E3,3.634949804E1 +2.927531000E3,3.127042454E1 +2.927829000E3,3.158500209E1 +2.928073000E3,2.815993792E1 +2.928370000E3,2.793102526E1 +2.928613000E3,2.468786691E1 +2.928943000E3,2.345175993E1 +2.929256000E3,2.908559709E1 +2.929497000E3,2.580950455E1 +2.929819000E3,2.871707976E1 +2.930114000E3,2.977851279E1 +2.930374000E3,4.220437998E1 +2.930636000E3,3.122152770E1 +2.930945000E3,3.902308439E1 +2.931227000E3,3.648582434E1 +2.931474000E3,4.774090674E1 +2.931717000E3,4.487624905E1 +2.931963000E3,4.620728265E1 +2.932258000E3,4.011602626E1 +2.932585000E3,4.011469989E1 +2.932871000E3,4.531107143E1 +2.933117000E3,4.299757904E1 +2.933366000E3,4.255561828E1 +2.933662000E3,4.180851663E1 +2.933899000E3,3.354142728E1 +2.934139000E3,4.061788576E1 +2.934435000E3,3.190428864E1 +2.934678000E3,3.136545948E1 +2.934975000E3,3.172564299E1 +2.935227000E3,3.538616066E1 +2.935577000E3,3.227761247E1 +2.935826000E3,3.587578035E1 +2.936132000E3,2.830690319E1 +2.936391000E3,2.983281120E1 +2.936636000E3,3.198482114E1 +2.936936000E3,4.529436692E1 +2.937191000E3,3.904726622E1 +2.937498000E3,4.546792713E1 +2.937790000E3,4.178984789E1 +2.938055000E3,3.901507008E1 +2.938332000E3,3.530528642E1 +2.938634000E3,3.766035689E1 +2.939060000E3,5.595745424E1 +2.939318000E3,5.800941557E1 +2.939576000E3,5.061871726E1 +2.939836000E3,6.017617924E1 +2.940124000E3,5.889680612E1 +2.940380000E3,5.553527141E1 +2.940631000E3,4.982924060E1 +2.940889000E3,5.386899946E1 +2.941183000E3,5.511436312E1 +2.941477000E3,5.474658637E1 +2.941736000E3,5.669903896E1 +2.941985000E3,5.352207307E1 +2.942302000E3,5.089540084E1 +2.942556000E3,5.163069551E1 +2.942811000E3,4.946827448E1 +2.943144000E3,4.292332560E1 +2.943386000E3,4.769421745E1 +2.943625000E3,4.741300910E1 +2.943936000E3,4.918473310E1 +2.944182000E3,4.358732286E1 +2.944456000E3,4.338106770E1 +2.944722000E3,5.302068646E1 +2.945006000E3,4.800501219E1 +2.945370000E3,4.445792428E1 +2.945619000E3,3.768400599E1 +2.945867000E3,3.829540629E1 +2.946159000E3,3.766669508E1 +2.946411000E3,4.016839261E1 +2.946712000E3,4.041724233E1 +2.947009000E3,4.012217251E1 +2.947323000E3,3.568820570E1 +2.947568000E3,3.690839296E1 +2.947818000E3,4.813137033E1 +2.948084000E3,5.325274156E1 +2.948341000E3,5.892514859E1 +2.948730000E3,4.314585435E1 +2.948980000E3,4.049194134E1 +2.949257000E3,4.522053034E1 +2.949515000E3,4.263261915E1 +2.949826000E3,5.159034358E1 +2.950126000E3,4.094053529E1 +2.950370000E3,4.144504964E1 +2.950613000E3,4.584689520E1 +2.950933000E3,3.986259871E1 +2.951211000E3,5.835616238E1 +2.951492000E3,4.865922153E1 +2.951773000E3,4.646806952E1 +2.952049000E3,5.501145746E1 +2.952349000E3,5.395560549E1 +2.952606000E3,5.094776028E1 +2.952859000E3,5.987933082E1 +2.953123000E3,5.553863596E1 +2.953365000E3,6.056471643E1 +2.953626000E3,5.705129962E1 +2.953881000E3,5.620457969E1 +2.954143000E3,4.633104773E1 +2.954403000E3,4.542785483E1 +2.954666000E3,4.357363747E1 +2.954925000E3,5.905995366E1 +2.955255000E3,5.325307727E1 +2.955500000E3,6.730464031E1 +2.955795000E3,6.362836082E1 +2.956030000E3,6.057596417E1 +2.956332000E3,6.813918985E1 +2.956573000E3,6.403678903E1 +2.956871000E3,6.230635205E1 +2.957135000E3,6.746671531E1 +2.957401000E3,6.427695804E1 +2.957673000E3,5.206458526E1 +2.957933000E3,5.261265827E1 +2.958182000E3,4.877242183E1 +2.958552000E3,6.627461000E1 +2.958808000E3,6.741673158E1 +2.959062000E3,6.597614354E1 +2.959304000E3,6.540552328E1 +2.959551000E3,6.528289091E1 +2.959864000E3,5.830061674E1 +2.960121000E3,5.985112812E1 +2.960428000E3,6.090568068E1 +2.960720000E3,6.807446854E1 +2.960985000E3,6.930722199E1 +2.961226000E3,6.386100217E1 +2.961579000E3,6.028451745E1 +2.961849000E3,6.477814340E1 +2.962132000E3,6.837046944E1 +2.962373000E3,6.647209363E1 +2.962660000E3,6.694202205E1 +2.962967000E3,6.648756695E1 +2.963231000E3,6.482625001E1 +2.963518000E3,7.095796361E1 +2.963775000E3,6.454417662E1 +2.964062000E3,6.533171518E1 +2.964339000E3,6.471819922E1 +2.964629000E3,5.679367810E1 +2.964962000E3,5.573913208E1 +2.965271000E3,6.251351498E1 +2.965502000E3,6.071427502E1 +2.965745000E3,6.212696498E1 +2.966049000E3,5.601947939E1 +2.966292000E3,5.543203731E1 +2.966544000E3,5.440105204E1 +2.966807000E3,5.169354717E1 +2.967114000E3,5.098574914E1 +2.967354000E3,4.778774527E1 +2.967603000E3,5.527018336E1 +2.967874000E3,5.069142516E1 +2.968220000E3,5.540354927E1 +2.968470000E3,5.388190573E1 +2.968725000E3,5.648678631E1 +2.968994000E3,6.195289166E1 +2.969259000E3,5.924073062E1 +2.969526000E3,5.554902217E1 +2.969797000E3,6.073047002E1 +2.970049000E3,5.750580172E1 +2.970375000E3,6.205206850E1 +2.970685000E3,5.892672487E1 +2.971008000E3,5.603539479E1 +2.971306000E3,5.380141597E1 +2.971609000E3,6.182570937E1 +2.971860000E3,5.755792598E1 +2.972120000E3,7.094637252E1 +2.972374000E3,7.220321333E1 +2.972688000E3,6.074903881E1 +2.972946000E3,5.132390204E1 +2.973203000E3,5.555176793E1 +2.973482000E3,5.082163203E1 +2.973746000E3,6.668022761E1 +2.974024000E3,6.951681150E1 +2.974257000E3,6.170353739E1 +2.974507000E3,6.191784425E1 +2.974845000E3,6.249884739E1 +2.975129000E3,6.139715498E1 +2.975385000E3,5.458109058E1 +2.975684000E3,6.285593412E1 +2.975925000E3,6.801445640E1 +2.976223000E3,6.762358149E1 +2.976454000E3,6.007212586E1 +2.976698000E3,6.176376027E1 +2.976998000E3,5.489351528E1 +2.977244000E3,6.419682450E1 +2.977544000E3,6.335879864E1 +2.977813000E3,6.346249627E1 +2.978071000E3,6.122721977E1 +2.978303000E3,6.269343112E1 +2.978564000E3,5.719207644E1 +2.978818000E3,6.209398004E1 +2.979085000E3,6.570545323E1 +2.979335000E3,6.443300698E1 +2.979582000E3,6.395479352E1 +2.979841000E3,6.285971298E1 +2.980091000E3,6.452411240E1 +2.980337000E3,6.648403811E1 +2.980638000E3,6.146510082E1 +2.980898000E3,6.178604521E1 +2.981191000E3,5.906416732E1 +2.981418000E3,6.139524316E1 +2.981668000E3,6.754933795E1 +2.981958000E3,5.804633278E1 +2.982221000E3,5.544285219E1 +2.982480000E3,5.252390700E1 +2.982741000E3,5.442974682E1 +2.983009000E3,5.886662164E1 +2.983270000E3,6.039421332E1 +2.983532000E3,5.984826425E1 +2.983780000E3,6.038747451E1 +2.984020000E3,5.836799318E1 +2.984266000E3,6.011457774E1 +2.984654000E3,6.086793857E1 +2.984928000E3,6.104684994E1 +2.985246000E3,6.081085188E1 +2.985504000E3,6.338602633E1 +2.985771000E3,6.224702903E1 +2.986040000E3,5.771788346E1 +2.986351000E3,5.832375863E1 +2.986657000E3,6.179808645E1 +2.986893000E3,6.074067698E1 +2.987188000E3,5.763905723E1 +2.987459000E3,5.411975455E1 +2.987698000E3,5.609082395E1 +2.988020000E3,5.838775534E1 +2.988261000E3,5.545934196E1 +2.988564000E3,5.818253650E1 +2.988803000E3,5.693365858E1 +2.989084000E3,5.747877452E1 +2.989394000E3,6.108654481E1 +2.989646000E3,6.109521888E1 +2.989952000E3,5.453216708E1 +2.990235000E3,5.325056065E1 +2.990530000E3,5.226229633E1 +2.990796000E3,5.566734434E1 +2.991153000E3,5.983192138E1 +2.991409000E3,5.902282422E1 +2.991712000E3,6.553978750E1 +2.991962000E3,6.323109208E1 +2.992210000E3,6.430699278E1 +2.992477000E3,6.439502996E1 +2.992769000E3,5.882379749E1 +2.993024000E3,7.076998945E1 +2.993317000E3,6.710088514E1 +2.993554000E3,6.332152683E1 +2.993846000E3,6.013348006E1 +2.994081000E3,6.492156154E1 +2.994361000E3,6.054189638E1 +2.994671000E3,5.878685209E1 +2.994911000E3,6.363988355E1 +2.995218000E3,6.266127576E1 +2.995513000E3,6.231860976E1 +2.995750000E3,6.770663238E1 +2.996056000E3,6.411706706E1 +2.996346000E3,6.607053327E1 +2.996592000E3,6.231837938E1 +2.996884000E3,6.235557028E1 +2.997130000E3,6.626149607E1 +2.997386000E3,6.897456616E1 +2.997721000E3,6.896820400E1 +2.997984000E3,5.708709076E1 +2.998260000E3,5.465136518E1 +2.998532000E3,6.136090841E1 +2.998792000E3,6.427324700E1 +2.999047000E3,5.922924051E1 +2.999308000E3,5.964993479E1 +2.999619000E3,5.937495043E1 +2.999910000E3,6.345321013E1 +3.000196000E3,6.558504608E1 +3.000438000E3,6.566442906E1 +3.000721000E3,6.596782674E1 +3.001048000E3,6.493210478E1 +3.001299000E3,6.778071085E1 +3.001554000E3,5.810398860E1 +3.001834000E3,6.461256831E1 +3.002084000E3,5.637103240E1 +3.002332000E3,6.244497501E1 +3.002633000E3,5.749162406E1 +3.002980000E3,6.268391580E1 +3.003246000E3,6.122193913E1 +3.003572000E3,6.467185898E1 +3.003877000E3,6.239318427E1 +3.004266000E3,6.708558966E1 +3.004573000E3,6.293492178E1 +3.004871000E3,6.169168265E1 +3.005129000E3,5.944912128E1 +3.005404000E3,5.631628075E1 +3.005704000E3,6.080609102E1 +3.005964000E3,6.424565764E1 +3.006250000E3,6.447415860E1 +3.006481000E3,6.606824769E1 +3.006756000E3,6.337387069E1 +3.007004000E3,6.294291386E1 +3.007286000E3,6.430484746E1 +3.007612000E3,6.091848593E1 +3.007867000E3,6.343837854E1 +3.008169000E3,5.978702761E1 +3.008432000E3,5.965865421E1 +3.008675000E3,5.540362761E1 +3.008918000E3,5.443572137E1 +3.009202000E3,6.171389250E1 +3.009446000E3,6.487192568E1 +3.009738000E3,5.958143908E1 +3.009983000E3,6.189834719E1 +3.010232000E3,5.752745917E1 +3.010489000E3,6.339873723E1 +3.010846000E3,6.127984243E1 +3.011144000E3,6.065194767E1 +3.011387000E3,6.253646864E1 +3.011646000E3,6.179753794E1 +3.011925000E3,6.231808205E1 +3.012153000E3,6.101579519E1 +3.012442000E3,5.876502421E1 +3.012737000E3,5.809905793E1 +3.013015000E3,5.695141293E1 +3.013301000E3,5.973139928E1 +3.013577000E3,6.007240820E1 +3.013839000E3,7.136453087E1 +3.014063000E3,7.173892024E1 +3.014315000E3,6.885425335E1 +3.014559000E3,6.110376355E1 +3.014808000E3,6.296723224E1 +3.015075000E3,6.021879294E1 +3.015327000E3,6.012811489E1 +3.015577000E3,6.282613373E1 +3.015850000E3,6.884549735E1 +3.016115000E3,6.913958233E1 +3.016397000E3,6.608409337E1 +3.016648000E3,6.437779633E1 +3.016896000E3,6.412579817E1 +3.017253000E3,6.408373459E1 +3.017500000E3,6.487828946E1 +3.017743000E3,6.281964754E1 +3.018003000E3,6.153697843E1 +3.018258000E3,6.503307442E1 +3.018512000E3,6.508021131E1 +3.018791000E3,5.910017780E1 +3.019028000E3,5.757469918E1 +3.019325000E3,5.762978005E1 +3.019573000E3,5.366611226E1 +3.019824000E3,5.708763529E1 +3.020086000E3,5.488621207E1 +3.020437000E3,5.826722905E1 +3.020695000E3,5.951373108E1 +3.020968000E3,6.130623452E1 +3.021217000E3,6.025771329E1 +3.021490000E3,5.280103891E1 +3.021737000E3,6.123009986E1 +3.022037000E3,6.404958762E1 +3.022328000E3,6.469373641E1 +3.022599000E3,6.283727611E1 +3.022840000E3,6.248869497E1 +3.023123000E3,6.767270030E1 +3.023363000E3,6.436289402E1 +3.023706000E3,6.007121161E1 +3.023992000E3,6.067397941E1 +3.024255000E3,6.005092329E1 +3.024513000E3,6.146229561E1 +3.024803000E3,6.214304530E1 +3.025060000E3,6.107977952E1 +3.025317000E3,6.268440106E1 +3.025560000E3,5.744048190E1 +3.025823000E3,6.080102592E1 +3.026092000E3,6.359394744E1 +3.026384000E3,6.219604097E1 +3.026685000E3,6.296073955E1 +3.026912000E3,6.243574530E1 +3.027190000E3,6.540426031E1 +3.027426000E3,7.038009166E1 +3.027684000E3,7.133800291E1 +3.027943000E3,6.847497315E1 +3.028214000E3,7.049817235E1 +3.028486000E3,6.555713643E1 +3.028748000E3,6.762942526E1 +3.029008000E3,6.780082040E1 +3.029264000E3,6.644646205E1 +3.029533000E3,7.066497540E1 +3.029800000E3,6.700863421E1 +3.030174000E3,6.263767412E1 +3.030459000E3,5.937975562E1 +3.030697000E3,6.189133018E1 +3.030958000E3,6.479748496E1 +3.031218000E3,6.070421224E1 +3.031488000E3,5.567295684E1 +3.031754000E3,6.162939414E1 +3.032026000E3,6.462556380E1 +3.032293000E3,6.300561819E1 +3.032553000E3,6.320528504E1 +3.032852000E3,6.205536878E1 +3.033102000E3,7.179598993E1 +3.033490000E3,6.907149718E1 +3.033750000E3,6.110443799E1 +3.034008000E3,5.743025653E1 +3.034257000E3,5.714646515E1 +3.034505000E3,6.193634179E1 +3.034762000E3,6.511685208E1 +3.035034000E3,6.647840023E1 +3.035277000E3,6.637602928E1 +3.035534000E3,6.208743290E1 +3.035873000E3,6.158502662E1 +3.036127000E3,6.138896352E1 +3.036392000E3,5.988342330E1 +3.036737000E3,5.834272912E1 +3.036998000E3,6.504474047E1 +3.037253000E3,5.801637483E1 +3.037569000E3,6.208073459E1 +3.037831000E3,6.555093843E1 +3.038084000E3,6.686352963E1 +3.038356000E3,6.398821865E1 +3.038638000E3,6.053541888E1 +3.038927000E3,5.509282051E1 +3.039228000E3,6.213274835E1 +3.039473000E3,6.149105368E1 +3.039745000E3,6.097957376E1 +3.040056000E3,6.313145073E1 +3.040300000E3,6.749857058E1 +3.040549000E3,6.031561589E1 +3.040852000E3,5.991948868E1 +3.041110000E3,6.228314687E1 +3.041358000E3,6.281493679E1 +3.041621000E3,6.031124820E1 +3.041926000E3,6.035954468E1 +3.042177000E3,6.230627050E1 +3.042448000E3,5.381586458E1 +3.042741000E3,6.032611045E1 +3.043026000E3,5.796046788E1 +3.043304000E3,6.286261594E1 +3.043605000E3,6.188894569E1 +3.043848000E3,6.196336480E1 +3.044091000E3,6.506902622E1 +3.044345000E3,6.547913264E1 +3.044589000E3,6.701681380E1 +3.044849000E3,6.398074775E1 +3.045095000E3,6.102355933E1 +3.045350000E3,6.546609328E1 +3.045598000E3,6.626677347E1 +3.045845000E3,6.212155235E1 +3.046098000E3,6.475032486E1 +3.046433000E3,6.469401418E1 +3.046698000E3,6.335899573E1 +3.046970000E3,5.799459631E1 +3.047267000E3,5.777430210E1 +3.047527000E3,6.228044606E1 +3.047785000E3,5.521572273E1 +3.048044000E3,5.312506195E1 +3.048316000E3,5.877400717E1 +3.048592000E3,6.239358597E1 +3.048842000E3,6.019315355E1 +3.049164000E3,5.944515023E1 +3.049418000E3,6.571719967E1 +3.049752000E3,5.906077781E1 +3.050005000E3,6.269931225E1 +3.050242000E3,6.329267329E1 +3.050532000E3,6.094692628E1 +3.050797000E3,6.137608503E1 +3.051055000E3,6.019630450E1 +3.051299000E3,5.959056092E1 +3.051551000E3,6.195653625E1 +3.051802000E3,5.997942431E1 +3.052044000E3,6.071988649E1 +3.052348000E3,6.146559433E1 +3.052605000E3,6.320542640E1 +3.052903000E3,6.301314639E1 +3.053133000E3,6.491013087E1 +3.053386000E3,5.374424399E1 +3.053632000E3,5.337930652E1 +3.053925000E3,5.830420592E1 +3.054167000E3,5.827724976E1 +3.054414000E3,5.413373264E1 +3.054713000E3,5.438904566E1 +3.054952000E3,5.478972153E1 +3.055245000E3,6.026125791E1 +3.055545000E3,6.377000784E1 +3.055792000E3,6.273059884E1 +3.056116000E3,6.164463909E1 +3.056426000E3,6.310484015E1 +3.056665000E3,6.191865333E1 +3.056974000E3,6.044005004E1 +3.057225000E3,5.723160495E1 +3.057532000E3,6.482171923E1 +3.057799000E3,6.373654624E1 +3.058097000E3,6.579319958E1 +3.058333000E3,6.717439766E1 +3.058632000E3,6.244987186E1 +3.058874000E3,5.911459441E1 +3.059119000E3,6.246625617E1 +3.059514000E3,6.061929027E1 +3.059786000E3,6.141894857E1 +3.060044000E3,6.531006136E1 +3.060311000E3,6.745420282E1 +3.060564000E3,6.305040539E1 +3.060809000E3,6.250223063E1 +3.061063000E3,5.984183740E1 +3.061365000E3,6.201500936E1 +3.061610000E3,6.171968159E1 +3.061853000E3,5.636652524E1 +3.062137000E3,5.937450988E1 +3.062405000E3,5.424162977E1 +3.062724000E3,5.577353705E1 +3.062968000E3,6.265208868E1 +3.063225000E3,6.754657095E1 +3.063470000E3,6.259832443E1 +3.063731000E3,5.846954403E1 +3.063975000E3,5.735719718E1 +3.064220000E3,5.614657426E1 +3.064460000E3,5.493678071E1 +3.064711000E3,6.175770153E1 +3.064961000E3,6.502893325E1 +3.065266000E3,6.372557142E1 +3.065562000E3,6.165604672E1 +3.065921000E3,6.202265536E1 +3.066181000E3,5.894659424E1 +3.066427000E3,5.516515279E1 +3.066669000E3,5.227763917E1 +3.066911000E3,5.331294555E1 +3.067166000E3,5.535383534E1 +3.067460000E3,5.490405248E1 +3.067721000E3,5.927902794E1 +3.068030000E3,6.001209348E1 +3.068288000E3,5.925707402E1 +3.068553000E3,6.116769528E1 +3.068848000E3,5.907075037E1 +3.069160000E3,5.402384091E1 +3.069467000E3,6.078433547E1 +3.069706000E3,6.064305090E1 +3.069991000E3,6.099922555E1 +3.070247000E3,6.081028216E1 +3.070500000E3,6.857342881E1 +3.070795000E3,6.830085683E1 +3.071035000E3,7.092929468E1 +3.071334000E3,6.670654987E1 +3.071580000E3,6.198358410E1 +3.071845000E3,6.029427505E1 +3.072216000E3,6.271100503E1 +3.072476000E3,6.548403896E1 +3.072709000E3,6.655140024E1 +3.072958000E3,6.872933885E1 +3.073221000E3,6.840034062E1 +3.073524000E3,6.189262665E1 +3.073801000E3,6.315516618E1 +3.074029000E3,6.431689152E1 +3.074282000E3,7.008635825E1 +3.074531000E3,6.529488526E1 +3.074781000E3,5.362885622E1 +3.075079000E3,6.174622467E1 +3.075321000E3,6.106059522E1 +3.075569000E3,6.727558853E1 +3.075841000E3,6.068477373E1 +3.076089000E3,6.224550385E1 +3.076358000E3,6.049387981E1 +3.076618000E3,5.554290122E1 +3.076868000E3,5.232623619E1 +3.077136000E3,5.715980006E1 +3.077434000E3,6.112308912E1 +3.077738000E3,5.964598426E1 +3.077997000E3,5.774993649E1 +3.078301000E3,5.930552673E1 +3.078632000E3,6.204668908E1 +3.078903000E3,6.135182684E1 +3.079234000E3,6.010535577E1 +3.079530000E3,5.612975229E1 +3.079846000E3,5.894789721E1 +3.080130000E3,6.424282153E1 +3.080395000E3,6.696093787E1 +3.080696000E3,5.929656512E1 +3.080931000E3,5.577162965E1 +3.081168000E3,6.096321541E1 +3.081415000E3,6.147204445E1 +3.081708000E3,6.518353223E1 +3.082066000E3,6.565001970E1 +3.082347000E3,6.152216198E1 +3.082591000E3,6.232488129E1 +3.082884000E3,6.450829181E1 +3.083131000E3,6.727741702E1 +3.083373000E3,6.596172391E1 +3.083615000E3,6.588974420E1 +3.083909000E3,6.215985231E1 +3.084146000E3,5.417797447E1 +3.084444000E3,5.776086644E1 +3.084736000E3,6.145598006E1 +3.085067000E3,6.705675690E1 +3.085353000E3,7.032609091E1 +3.085621000E3,6.942809802E1 +3.085926000E3,6.673219093E1 +3.086170000E3,5.874483463E1 +3.086457000E3,6.163530440E1 +3.086730000E3,5.863155738E1 +3.086955000E3,5.804604701E1 +3.087247000E3,7.202263239E1 +3.087542000E3,6.907595594E1 +3.087796000E3,7.104760035E1 +3.088063000E3,6.060670654E1 +3.088371000E3,6.409876160E1 +3.088642000E3,6.504332531E1 +3.088891000E3,6.050178076E1 +3.089172000E3,5.988548041E1 +3.089448000E3,6.419311516E1 +3.089715000E3,6.072209436E1 +3.089992000E3,6.148544930E1 +3.090256000E3,6.667985585E1 +3.090551000E3,6.360479893E1 +3.090829000E3,6.675347002E1 +3.091081000E3,6.585951744E1 +3.091337000E3,5.998998345E1 +3.091582000E3,7.213751425E1 +3.091973000E3,7.002319175E1 +3.092225000E3,6.554991346E1 +3.092495000E3,5.438962824E1 +3.092757000E3,5.806427109E1 +3.093010000E3,5.611571138E1 +3.093290000E3,5.427298566E1 +3.093553000E3,6.332676554E1 +3.093801000E3,6.191283999E1 +3.094088000E3,6.222056485E1 +3.094383000E3,6.679558422E1 +3.094660000E3,6.396349695E1 +3.094980000E3,6.335657582E1 +3.095321000E3,6.368682935E1 +3.095574000E3,6.239728447E1 +3.095829000E3,6.560913932E1 +3.096083000E3,6.288470186E1 +3.096327000E3,6.063834800E1 +3.096611000E3,5.698542980E1 +3.096866000E3,6.214573666E1 +3.097125000E3,6.108001307E1 +3.097382000E3,6.098898235E1 +3.097639000E3,6.935379750E1 +3.097944000E3,6.076333803E1 +3.098235000E3,5.747447310E1 +3.098595000E3,5.896750888E1 +3.098845000E3,6.428262322E1 +3.099146000E3,6.073561603E1 +3.099435000E3,5.610862272E1 +3.099679000E3,5.808393750E1 +3.099971000E3,6.306244141E1 +3.100214000E3,6.493760740E1 +3.100511000E3,5.964091377E1 +3.100753000E3,5.949423253E1 +3.100995000E3,6.324186751E1 +3.101237000E3,6.294719776E1 +3.101481000E3,6.618420708E1 +3.101805000E3,6.039251647E1 +3.102105000E3,6.883376735E1 +3.102388000E3,6.215701199E1 +3.102635000E3,6.251944475E1 +3.102926000E3,6.387718652E1 +3.103175000E3,6.262879933E1 +3.103469000E3,6.094246273E1 +3.103717000E3,5.780442917E1 +3.104010000E3,5.805018882E1 +3.104245000E3,6.073911170E1 +3.104537000E3,5.820155990E1 +3.104880000E3,5.691870737E1 +3.105139000E3,5.609187778E1 +3.105418000E3,5.368790307E1 +3.105673000E3,5.733127796E1 +3.105933000E3,5.834617124E1 +3.106196000E3,5.665251568E1 +3.106447000E3,5.839993992E1 +3.106707000E3,5.765825797E1 +3.106989000E3,6.346036236E1 +3.107241000E3,6.088974139E1 +3.107536000E3,5.623231578E1 +3.107836000E3,5.905990454E1 +3.108208000E3,5.913546091E1 +3.108462000E3,5.921957697E1 +3.108732000E3,6.403378055E1 +3.109010000E3,6.829473891E1 +3.109237000E3,6.866131452E1 +3.109530000E3,5.759864554E1 +3.109769000E3,5.216447932E1 +3.110067000E3,5.887622687E1 +3.110356000E3,5.912152229E1 +3.110621000E3,6.343631440E1 +3.110862000E3,6.110189356E1 +3.111105000E3,5.925249209E1 +3.111441000E3,5.583559168E1 +3.111708000E3,6.397874973E1 +3.112049000E3,5.864630935E1 +3.112314000E3,5.876030726E1 +3.112620000E3,5.558460131E1 +3.112980000E3,5.336927775E1 +3.113232000E3,5.351895645E1 +3.113515000E3,4.932805120E1 +3.113763000E3,6.323075662E1 +3.114057000E3,6.375401647E1 +3.114318000E3,6.430798012E1 +3.114651000E3,6.745313705E1 +3.114909000E3,6.370697195E1 +3.115204000E3,6.719832935E1 +3.115517000E3,6.353352979E1 +3.115816000E3,6.421660294E1 +3.116074000E3,6.666449428E1 +3.116372000E3,6.209745804E1 +3.116612000E3,5.853853683E1 +3.116911000E3,6.153177442E1 +3.117151000E3,6.465277685E1 +3.117439000E3,6.054074617E1 +3.117698000E3,5.762180605E1 +3.118029000E3,5.904912096E1 +3.118292000E3,6.054469105E1 +3.118547000E3,6.570885599E1 +3.118854000E3,6.686989978E1 +3.119103000E3,6.506823644E1 +3.119359000E3,5.780133308E1 +3.119610000E3,5.983707630E1 +3.119896000E3,6.102798325E1 +3.120167000E3,5.940835035E1 +3.120446000E3,6.154008300E1 +3.120717000E3,6.031178539E1 +3.120969000E3,6.222997321E1 +3.121291000E3,6.676268308E1 +3.121532000E3,6.244629438E1 +3.121778000E3,6.014719673E1 +3.122038000E3,6.351124664E1 +3.122317000E3,5.786579019E1 +3.122607000E3,5.704033688E1 +3.122864000E3,5.941823253E1 +3.123160000E3,6.366298469E1 +3.123429000E3,6.545330590E1 +3.123678000E3,6.206143443E1 +3.123932000E3,6.250040348E1 +3.124250000E3,6.193784317E1 +3.124582000E3,6.679802083E1 +3.124888000E3,6.239911876E1 +3.125141000E3,6.227743005E1 +3.125407000E3,5.930162190E1 +3.125655000E3,5.692493613E1 +3.125897000E3,6.100851678E1 +3.126155000E3,6.356932883E1 +3.126470000E3,6.583742229E1 +3.126735000E3,6.828531785E1 +3.127049000E3,6.744954014E1 +3.127349000E3,6.892448306E1 +3.127620000E3,6.312172108E1 +3.127885000E3,6.549450530E1 +3.128150000E3,6.274114245E1 +3.128434000E3,5.987443555E1 +3.128694000E3,5.754092402E1 +3.128967000E3,6.140483336E1 +3.129224000E3,5.793735580E1 +3.129483000E3,5.640840091E1 +3.129735000E3,7.068460790E1 +3.130042000E3,6.831622259E1 +3.130308000E3,6.661131327E1 +3.130563000E3,7.032191033E1 +3.130897000E3,6.429012882E1 +3.131166000E3,6.890779868E1 +3.131427000E3,6.812897599E1 +3.131726000E3,6.440583932E1 +3.132039000E3,6.371305855E1 +3.132310000E3,6.071113649E1 +3.132582000E3,6.356904702E1 +3.132834000E3,6.335195410E1 +3.133078000E3,5.922748305E1 +3.133357000E3,5.790290676E1 +3.133581000E3,6.067150466E1 +3.133827000E3,5.936438225E1 +3.134075000E3,5.651144024E1 +3.134312000E3,5.707156804E1 +3.134564000E3,6.256442790E1 +3.134822000E3,5.680653319E1 +3.135099000E3,6.386946987E1 +3.135341000E3,6.183817556E1 +3.135588000E3,5.791592939E1 +3.135843000E3,5.415500200E1 +3.136159000E3,5.828393923E1 +3.136402000E3,5.584102234E1 +3.136645000E3,5.843965538E1 +3.136922000E3,6.032067675E1 +3.137231000E3,6.082235855E1 +3.137514000E3,6.216335250E1 +3.137763000E3,6.576895249E1 +3.138052000E3,5.935628673E1 +3.138348000E3,5.697436057E1 +3.138590000E3,6.713499986E1 +3.138833000E3,5.996032355E1 +3.139071000E3,6.566814076E1 +3.139366000E3,6.469315039E1 +3.139607000E3,6.414816039E1 +3.139901000E3,6.238348704E1 +3.140144000E3,5.975478602E1 +3.140477000E3,5.617333113E1 +3.140789000E3,6.140881460E1 +3.141038000E3,5.760925345E1 +3.141323000E3,5.813474075E1 +3.141616000E3,6.190304914E1 +3.141899000E3,5.853813516E1 +3.142123000E3,6.019478920E1 +3.142387000E3,5.824830032E1 +3.142639000E3,6.031650371E1 +3.142898000E3,5.874305926E1 +3.143211000E3,6.365997735E1 +3.143459000E3,6.182267241E1 +3.143814000E3,6.153305629E1 +3.144076000E3,6.040235966E1 +3.144345000E3,6.279707978E1 +3.144591000E3,6.261441373E1 +3.144837000E3,5.722591859E1 +3.145082000E3,5.791919274E1 +3.145387000E3,6.142016587E1 +3.145678000E3,5.996802308E1 +3.145994000E3,5.761245992E1 +3.146269000E3,5.915341256E1 +3.146531000E3,5.679987844E1 +3.146814000E3,6.228452904E1 +3.147163000E3,6.038592359E1 +3.147440000E3,6.662509726E1 +3.147705000E3,5.864713600E1 +3.147961000E3,6.383827006E1 +3.148228000E3,6.445939632E1 +3.148543000E3,6.206597752E1 +3.148800000E3,6.082056407E1 +3.149046000E3,5.872798480E1 +3.149340000E3,5.792404132E1 +3.149585000E3,5.917409009E1 +3.149845000E3,5.619795947E1 +3.150164000E3,6.447379623E1 +3.150501000E3,6.336546747E1 +3.150798000E3,6.022605646E1 +3.151059000E3,5.837139298E1 +3.151360000E3,5.721847889E1 +3.151614000E3,7.085699981E1 +3.151908000E3,6.031233854E1 +3.152206000E3,6.170839562E1 +3.152452000E3,6.336115962E1 +3.152697000E3,6.732286145E1 +3.152943000E3,6.043278366E1 +3.153235000E3,5.822950572E1 +3.153537000E3,6.155234216E1 +3.153813000E3,5.671966020E1 +3.154078000E3,5.613348243E1 +3.154333000E3,5.384913785E1 +3.154580000E3,5.739778382E1 +3.154869000E3,5.617144196E1 +3.155103000E3,5.699346940E1 +3.155351000E3,6.356393037E1 +3.155653000E3,5.483372318E1 +3.155949000E3,5.806865262E1 +3.156195000E3,5.725879338E1 +3.156459000E3,5.708272088E1 +3.156776000E3,5.736330762E1 +3.157028000E3,5.620178265E1 +3.157280000E3,5.557503250E1 +3.157521000E3,6.379766868E1 +3.157864000E3,6.175462639E1 +3.158113000E3,5.970375584E1 +3.158365000E3,5.482220327E1 +3.158625000E3,6.094938302E1 +3.158872000E3,6.189076140E1 +3.159128000E3,6.365906369E1 +3.159385000E3,6.365252593E1 +3.159699000E3,6.421784723E1 +3.160039000E3,5.952347777E1 +3.160337000E3,6.582170091E1 +3.160643000E3,6.400621400E1 +3.160905000E3,5.982923632E1 +3.161162000E3,5.912958512E1 +3.161449000E3,5.744161350E1 +3.161722000E3,6.208953034E1 +3.161984000E3,6.743490019E1 +3.162228000E3,5.893358785E1 +3.162506000E3,6.260442429E1 +3.162777000E3,6.054589944E1 +3.163072000E3,5.958101250E1 +3.163380000E3,5.756716970E1 +3.163623000E3,5.897741262E1 +3.163916000E3,5.199350029E1 +3.164173000E3,5.607364633E1 +3.164444000E3,6.846587546E1 +3.164756000E3,5.833953537E1 +3.165011000E3,6.699601536E1 +3.165255000E3,6.024033326E1 +3.165530000E3,5.636786936E1 +3.165825000E3,5.917346905E1 +3.166077000E3,5.684739711E1 +3.166343000E3,5.441684119E1 +3.166607000E3,5.708423030E1 +3.166871000E3,5.726160097E1 +3.167212000E3,5.795085756E1 +3.167513000E3,5.359033433E1 +3.167800000E3,5.481028168E1 +3.168051000E3,5.771426852E1 +3.168321000E3,5.720698183E1 +3.168574000E3,6.029484328E1 +3.168847000E3,6.594273179E1 +3.169141000E3,5.814954146E1 +3.169451000E3,5.741553332E1 +3.169717000E3,5.474949866E1 +3.170064000E3,5.858087337E1 +3.170388000E3,5.901398101E1 +3.170689000E3,6.599046976E1 +3.170942000E3,6.777823262E1 +3.171184000E3,6.339704259E1 +3.171437000E3,5.678237753E1 +3.171694000E3,6.067324941E1 +3.171975000E3,6.337570500E1 +3.172215000E3,6.060254578E1 +3.172509000E3,6.511602204E1 +3.172792000E3,6.491523998E1 +3.173086000E3,6.236437487E1 +3.173442000E3,6.132637014E1 +3.173725000E3,5.575670785E1 +3.173997000E3,5.450541115E1 +3.174243000E3,5.816223835E1 +3.174516000E3,5.991084873E1 +3.174771000E3,5.959264792E1 +3.175022000E3,6.001504494E1 +3.175268000E3,5.794233494E1 +3.175510000E3,5.875384007E1 +3.175752000E3,6.582497874E1 +3.176001000E3,6.385809704E1 +3.176310000E3,6.575292490E1 +3.176700000E3,6.328122862E1 +3.176947000E3,6.160374932E1 +3.177205000E3,6.233605233E1 +3.177480000E3,5.746120395E1 +3.177733000E3,5.491961653E1 +3.178002000E3,5.346590976E1 +3.178308000E3,4.910433719E1 +3.178598000E3,5.548086035E1 +3.178876000E3,5.834728013E1 +3.179129000E3,5.722852381E1 +3.179407000E3,5.371032540E1 +3.179686000E3,5.375017527E1 +3.180066000E3,5.741446005E1 +3.180325000E3,5.595914402E1 +3.180624000E3,5.784989425E1 +3.180867000E3,5.818330240E1 +3.181112000E3,5.651638359E1 +3.181407000E3,5.400925398E1 +3.181645000E3,5.134681346E1 +3.181939000E3,5.540645654E1 +3.182189000E3,5.603348674E1 +3.182489000E3,5.612576596E1 +3.182726000E3,5.412821683E1 +3.183072000E3,5.364995955E1 +3.183373000E3,5.685067634E1 +3.183631000E3,5.292396423E1 +3.183913000E3,5.037305724E1 +3.184139000E3,5.458652507E1 +3.184386000E3,5.336216390E1 +3.184625000E3,5.355204553E1 +3.184861000E3,5.798216811E1 +3.185170000E3,5.037998219E1 +3.185412000E3,5.253320042E1 +3.185661000E3,5.864558083E1 +3.185944000E3,5.568855775E1 +3.186307000E3,6.065674046E1 +3.186594000E3,5.486017232E1 +3.186846000E3,5.354898396E1 +3.187128000E3,5.606629368E1 +3.187373000E3,5.887335608E1 +3.187646000E3,5.932986575E1 +3.187996000E3,5.618144782E1 +3.188254000E3,5.279151533E1 +3.188538000E3,5.980979660E1 +3.188819000E3,5.959008295E1 +3.189058000E3,5.757326838E1 +3.189324000E3,5.814251633E1 +3.189681000E3,6.715432083E1 +3.189929000E3,5.659786492E1 +3.190183000E3,6.813933576E1 +3.190493000E3,6.423896785E1 +3.190762000E3,6.115594562E1 +3.191063000E3,6.466877383E1 +3.191295000E3,6.400176112E1 +3.191543000E3,6.061189134E1 +3.191813000E3,6.334758009E1 +3.192062000E3,6.268892194E1 +3.192384000E3,6.255649695E1 +3.192688000E3,6.440152216E1 +3.193095000E3,6.083356984E1 +3.193368000E3,5.702207605E1 +3.193630000E3,6.129862703E1 +3.193931000E3,6.511359313E1 +3.194208000E3,6.424113032E1 +3.194458000E3,6.277957456E1 +3.194751000E3,6.067489213E1 +3.195007000E3,6.044409325E1 +3.195267000E3,5.902485869E1 +3.195523000E3,5.940450479E1 +3.195769000E3,5.629667180E1 +3.196103000E3,5.773687048E1 +3.196362000E3,5.275604571E1 +3.196676000E3,5.321996877E1 +3.196932000E3,4.952922772E1 +3.197191000E3,5.411849627E1 +3.197458000E3,5.575997519E1 +3.197718000E3,5.782402980E1 +3.197982000E3,6.092045522E1 +3.198228000E3,6.504329265E1 +3.198474000E3,5.972589974E1 +3.198713000E3,5.816644178E1 +3.198958000E3,6.190720604E1 +3.199249000E3,6.026051864E1 +3.199481000E3,6.064697026E1 +3.199744000E3,5.715218400E1 +3.200003000E3,5.509276249E1 +3.200281000E3,5.035485844E1 +3.200607000E3,5.745123346E1 +3.200874000E3,5.874041571E1 +3.201157000E3,6.540993071E1 +3.201407000E3,6.592699897E1 +3.201730000E3,5.826687879E1 +3.201982000E3,5.966898415E1 +3.202228000E3,5.928022084E1 +3.202546000E3,5.492659239E1 +3.202811000E3,5.843773228E1 +3.203091000E3,5.615478265E1 +3.203365000E3,5.378265559E1 +3.203611000E3,5.724493737E1 +3.203868000E3,5.517839982E1 +3.204137000E3,5.166422622E1 +3.204439000E3,5.966362579E1 +3.204692000E3,5.837831137E1 +3.204952000E3,5.873474045E1 +3.205216000E3,6.025432286E1 +3.205460000E3,5.709891269E1 +3.205710000E3,5.946766606E1 +3.206062000E3,5.575402329E1 +3.206367000E3,5.597615265E1 +3.206620000E3,5.417374311E1 +3.206869000E3,5.785505194E1 +3.207152000E3,5.973144393E1 +3.207405000E3,5.494944595E1 +3.207684000E3,5.859159641E1 +3.207982000E3,5.909726368E1 +3.208273000E3,6.221796591E1 +3.208541000E3,6.248597715E1 +3.208787000E3,6.143432195E1 +3.209043000E3,5.767415987E1 +3.209357000E3,6.087003136E1 +3.209636000E3,5.816954701E1 +3.209920000E3,5.644196424E1 +3.210232000E3,5.726504339E1 +3.210505000E3,5.384487818E1 +3.210769000E3,6.092886049E1 +3.211044000E3,5.910647270E1 +3.211306000E3,5.855040927E1 +3.211560000E3,6.886189365E1 +3.211803000E3,6.193548709E1 +3.212075000E3,5.895667088E1 +3.212320000E3,5.613734816E1 +3.212669000E3,6.365011223E1 +3.212934000E3,6.616065582E1 +3.213195000E3,4.911720228E1 +3.213460000E3,5.429539168E1 +3.213713000E3,5.374714305E1 +3.213991000E3,5.505703483E1 +3.214231000E3,5.216197587E1 +3.214486000E3,6.958974683E1 +3.214787000E3,6.410499727E1 +3.215047000E3,5.795707420E1 +3.215308000E3,6.210641451E1 +3.215581000E3,5.724864620E1 +3.215943000E3,5.588397230E1 +3.216221000E3,5.281586206E1 +3.216477000E3,5.616597876E1 +3.216735000E3,7.016181845E1 +3.216992000E3,7.008234703E1 +3.217238000E3,6.883905131E1 +3.217482000E3,6.039428517E1 +3.217722000E3,6.572225500E1 +3.217971000E3,6.862082655E1 +3.218221000E3,6.392739620E1 +3.218481000E3,6.757625304E1 +3.218798000E3,6.468895575E1 +3.219137000E3,5.941097234E1 +3.219443000E3,6.639331379E1 +3.219715000E3,6.512137194E1 +3.219985000E3,6.137345425E1 +3.220244000E3,6.566739727E1 +3.220494000E3,5.684090738E1 +3.220758000E3,4.865476042E1 +3.221022000E3,5.571447424E1 +3.221324000E3,5.050200483E1 +3.221601000E3,5.262698993E1 +3.221858000E3,5.385544431E1 +3.222185000E3,5.793526709E1 +3.222548000E3,5.957102097E1 +3.222796000E3,5.026005559E1 +3.223068000E3,5.164515600E1 +3.223344000E3,6.575405490E1 +3.223598000E3,6.925353270E1 +3.223876000E3,5.909751181E1 +3.224152000E3,5.561020058E1 +3.224416000E3,5.257890354E1 +3.224662000E3,5.262446891E1 +3.224954000E3,5.599583257E1 +3.225202000E3,5.286294623E1 +3.225483000E3,5.049109924E1 +3.225830000E3,6.154494550E1 +3.226096000E3,5.433068412E1 +3.226350000E3,5.256602683E1 +3.226652000E3,5.283535150E1 +3.226989000E3,5.811852242E1 +3.227251000E3,5.842389129E1 +3.227505000E3,5.524471208E1 +3.227782000E3,6.207780754E1 +3.228053000E3,6.165130850E1 +3.228302000E3,5.818085510E1 +3.228557000E3,5.646455559E1 +3.228823000E3,5.903487317E1 +3.229201000E3,5.460588060E1 +3.229471000E3,5.534537953E1 +3.229720000E3,5.492103159E1 +3.229976000E3,5.474982433E1 +3.230276000E3,6.311967749E1 +3.230531000E3,6.144237593E1 +3.230845000E3,6.204497775E1 +3.231123000E3,6.192920277E1 +3.231382000E3,6.726064707E1 +3.231675000E3,5.951322284E1 +3.231970000E3,5.620608761E1 +3.232324000E3,5.597726308E1 +3.232555000E3,5.737347613E1 +3.232845000E3,5.515502781E1 +3.233172000E3,5.977186730E1 +3.233435000E3,6.131606000E1 +3.233742000E3,5.610580070E1 +3.234000000E3,5.978218601E1 +3.234272000E3,6.319970701E1 +3.234581000E3,5.608562509E1 +3.234862000E3,6.169746582E1 +3.235159000E3,6.105762669E1 +3.235416000E3,5.369522011E1 +3.235667000E3,6.580487109E1 +3.235906000E3,5.797374086E1 +3.236200000E3,6.981267784E1 +3.236445000E3,6.229515865E1 +3.236695000E3,6.858181426E1 +3.236976000E3,5.740787399E1 +3.237218000E3,5.455964692E1 +3.237457000E3,7.204325578E1 +3.237720000E3,6.142914611E1 +3.238013000E3,5.768794211E1 +3.238280000E3,5.732491467E1 +3.238580000E3,5.793744264E1 +3.238882000E3,5.626325471E1 +3.239149000E3,5.661724856E1 +3.239424000E3,6.969605219E1 +3.239726000E3,6.482965407E1 +3.239976000E3,5.947270091E1 +3.240278000E3,5.913422796E1 +3.240576000E3,5.630232959E1 +3.240877000E3,5.956366293E1 +3.241128000E3,6.177688280E1 +3.241391000E3,5.851951662E1 +3.241664000E3,5.959787493E1 +3.241944000E3,5.765523372E1 +3.242310000E3,5.961443978E1 +3.242602000E3,5.811194000E1 +3.242910000E3,5.765320401E1 +3.243188000E3,6.631148602E1 +3.243420000E3,6.916377121E1 +3.243673000E3,6.435158828E1 +3.243925000E3,6.486926440E1 +3.244170000E3,5.506348984E1 +3.244475000E3,6.702899260E1 +3.244772000E3,6.244838658E1 +3.245003000E3,6.057959417E1 +3.245328000E3,6.103137126E1 +3.245581000E3,5.723671640E1 +3.245864000E3,5.125127512E1 +3.246123000E3,5.748187394E1 +3.246395000E3,6.148075018E1 +3.246669000E3,6.226010686E1 +3.246940000E3,5.273573389E1 +3.247233000E3,5.462141876E1 +3.247482000E3,5.946160846E1 +3.247728000E3,6.623014757E1 +3.248041000E3,5.823129903E1 +3.248289000E3,5.689561843E1 +3.248538000E3,5.851473913E1 +3.248910000E3,5.778207994E1 +3.249187000E3,6.109108533E1 +3.249462000E3,6.368024039E1 +3.249726000E3,6.527718864E1 +3.249983000E3,5.855658653E1 +3.250281000E3,5.718860903E1 +3.250534000E3,5.946900486E1 +3.250785000E3,5.688578668E1 +3.251033000E3,5.444863300E1 +3.251316000E3,5.885016251E1 +3.251570000E3,6.172482417E1 +3.251833000E3,6.833245599E1 +3.252200000E3,6.656973280E1 +3.252441000E3,6.663686281E1 +3.252721000E3,6.380106140E1 +3.252991000E3,6.113258977E1 +3.253242000E3,7.270243700E1 +3.253457000E3,7.442711013E1 +3.253706000E3,7.097589831E1 +3.253999000E3,5.740107596E1 +3.254237000E3,5.407351324E1 +3.254532000E3,6.235563554E1 +3.254777000E3,6.148535018E1 +3.255085000E3,6.767985005E1 +3.255346000E3,5.893302101E1 +3.255628000E3,5.834235484E1 +3.255897000E3,6.152524318E1 +3.256146000E3,6.124474706E1 +3.256419000E3,5.928557591E1 +3.256642000E3,5.798678480E1 +3.256921000E3,5.800318977E1 +3.257149000E3,5.813391626E1 +3.257392000E3,6.200496820E1 +3.257645000E3,6.268368020E1 +3.257945000E3,6.783162804E1 +3.258296000E3,7.343015115E1 +3.258556000E3,7.258165803E1 +3.258805000E3,6.753466802E1 +3.259117000E3,7.134403593E1 +3.259421000E3,6.813653179E1 +3.259673000E3,6.449045726E1 +3.259939000E3,7.144310958E1 +3.260188000E3,6.619195201E1 +3.260438000E3,6.990193438E1 +3.260692000E3,6.791067771E1 +3.260944000E3,7.014061601E1 +3.261191000E3,7.271368424E1 +3.261532000E3,6.889323528E1 +3.261794000E3,6.087932672E1 +3.262047000E3,6.139975131E1 +3.262322000E3,6.684035582E1 +3.262586000E3,6.977079140E1 +3.262861000E3,6.711211223E1 +3.263137000E3,6.891542739E1 +3.263415000E3,6.450575202E1 +3.263671000E3,6.375083447E1 +3.263946000E3,6.525419018E1 +3.264250000E3,6.323969714E1 +3.264517000E3,7.351653517E1 +3.264813000E3,7.240916805E1 +3.265107000E3,6.991986455E1 +3.265349000E3,6.767718353E1 +3.265598000E3,7.020318016E1 +3.265847000E3,6.593396207E1 +3.266149000E3,6.776886494E1 +3.266400000E3,6.796917668E1 +3.266653000E3,6.234495715E1 +3.266897000E3,6.492303298E1 +3.267153000E3,6.551968402E1 +3.267398000E3,6.154456079E1 +3.267647000E3,6.087933145E1 +3.267896000E3,6.053677169E1 +3.268248000E3,6.893351216E1 +3.268513000E3,6.695525456E1 +3.268817000E3,6.263553940E1 +3.269070000E3,5.965971741E1 +3.269315000E3,6.136430702E1 +3.269582000E3,7.398506568E1 +3.269828000E3,7.145137487E1 +3.270128000E3,7.238266470E1 +3.270371000E3,7.289527120E1 +3.270623000E3,7.428636164E1 +3.270931000E3,7.248535741E1 +3.271185000E3,7.399445608E1 +3.271518000E3,7.355251323E1 +3.271795000E3,7.296660624E1 +3.272081000E3,7.131368475E1 +3.272358000E3,7.068792091E1 +3.272581000E3,6.623699177E1 +3.272835000E3,5.258987188E1 +3.273093000E3,6.044165509E1 +3.273337000E3,6.879817511E1 +3.273635000E3,6.970693453E1 +3.273931000E3,7.169623139E1 +3.274180000E3,7.112396098E1 +3.274428000E3,7.190035192E1 +3.274761000E3,7.089393329E1 +3.275038000E3,6.995869622E1 +3.275323000E3,6.900781199E1 +3.275569000E3,6.766263448E1 +3.275860000E3,6.881814388E1 +3.276116000E3,6.821596427E1 +3.276370000E3,6.896702672E1 +3.276649000E3,6.827119542E1 +3.276914000E3,6.795818984E1 +3.277171000E3,7.025945887E1 +3.277482000E3,6.685661764E1 +3.277741000E3,6.810082518E1 +3.278078000E3,6.902136690E1 +3.278358000E3,6.568611650E1 +3.278604000E3,7.123802039E1 +3.278848000E3,6.300940961E1 +3.279144000E3,6.292057856E1 +3.279382000E3,6.654167697E1 +3.279622000E3,6.808014942E1 +3.279917000E3,6.902808966E1 +3.280160000E3,6.685153426E1 +3.280471000E3,6.435621527E1 +3.280770000E3,6.765080490E1 +3.281059000E3,6.808248309E1 +3.281352000E3,6.477485011E1 +3.281602000E3,5.628454157E1 +3.281867000E3,5.800927668E1 +3.282130000E3,7.131716325E1 +3.282389000E3,7.355208108E1 +3.282663000E3,7.108584109E1 +3.282932000E3,5.710440961E1 +3.283191000E3,5.329699257E1 +3.283451000E3,5.003319724E1 +3.283709000E3,5.081704645E1 +3.284003000E3,5.075383483E1 +3.284259000E3,5.431712692E1 +3.284628000E3,5.277582101E1 +3.284917000E3,6.061307876E1 +3.285214000E3,6.168657926E1 +3.285472000E3,5.854988033E1 +3.285744000E3,4.913527641E1 +3.285999000E3,5.563664353E1 +3.286250000E3,5.841488419E1 +3.286517000E3,6.437604518E1 +3.286777000E3,6.124264602E1 +3.287035000E3,5.886049633E1 +3.287300000E3,6.196549102E1 +3.287630000E3,6.776239267E1 +3.287951000E3,6.702605133E1 +3.288259000E3,5.376695086E1 +3.288499000E3,5.095339550E1 +3.288807000E3,5.078317550E1 +3.289117000E3,5.659564827E1 +3.289411000E3,7.136818215E1 +3.289684000E3,6.629708396E1 +3.289982000E3,7.133804213E1 +3.290271000E3,6.994811010E1 +3.290544000E3,6.532422657E1 +3.290800000E3,6.451013008E1 +3.291132000E3,6.261305598E1 +3.291418000E3,6.696223022E1 +3.291676000E3,4.827412656E1 +3.291930000E3,4.724575587E1 +3.292202000E3,4.846609938E1 +3.292501000E3,5.276700476E1 +3.292822000E3,5.071547801E1 +3.293065000E3,4.944777186E1 +3.293349000E3,4.466809801E1 +3.293583000E3,4.432750067E1 +3.293832000E3,5.165471909E1 +3.294078000E3,4.606912616E1 +3.294427000E3,4.826074528E1 +3.294712000E3,4.434240888E1 +3.294985000E3,4.684583968E1 +3.295286000E3,5.104787864E1 +3.295548000E3,4.839146586E1 +3.295807000E3,5.479537456E1 +3.296066000E3,5.055213000E1 +3.296324000E3,3.933656037E1 +3.296585000E3,4.513652817E1 +3.296840000E3,4.805617654E1 +3.297099000E3,4.453428427E1 +3.297354000E3,5.205427791E1 +3.297705000E3,5.001223291E1 +3.297948000E3,5.342697607E1 +3.298200000E3,5.619467550E1 +3.298461000E3,5.565459347E1 +3.298738000E3,5.819577446E1 +3.298988000E3,5.077826383E1 +3.299236000E3,5.142261821E1 +3.299478000E3,5.610754709E1 +3.299775000E3,5.248015066E1 +3.300011000E3,4.742520943E1 +3.300325000E3,5.519481303E1 +3.300626000E3,4.628613419E1 +3.300959000E3,4.430731849E1 +3.301224000E3,4.380193782E1 +3.301473000E3,4.690647127E1 +3.301746000E3,4.845294386E1 +3.302057000E3,4.912389116E1 +3.302307000E3,5.155191791E1 +3.302563000E3,5.240902416E1 +3.302820000E3,4.677306339E1 +3.303083000E3,5.037145513E1 +3.303327000E3,4.506752152E1 +3.303573000E3,4.920686196E1 +3.303857000E3,4.935493485E1 +3.304189000E3,4.415801479E1 +3.304459000E3,4.423531181E1 +3.304768000E3,3.874162391E1 +3.305030000E3,4.189958295E1 +3.305333000E3,4.005870516E1 +3.305579000E3,5.072183491E1 +3.305843000E3,4.113754863E1 +3.306140000E3,5.548273149E1 +3.306383000E3,5.383424402E1 +3.306628000E3,5.205779319E1 +3.306877000E3,4.592085607E1 +3.307206000E3,5.092451979E1 +3.307449000E3,4.823039740E1 +3.307720000E3,5.026090042E1 +3.307982000E3,5.794901070E1 +3.308198000E3,5.239372011E1 +3.308502000E3,5.024517162E1 +3.308742000E3,4.253471720E1 +3.309044000E3,4.105523794E1 +3.309340000E3,3.028117703E1 +3.309596000E3,2.809150222E1 +3.309864000E3,2.626060468E1 +3.310135000E3,5.055452447E1 +3.310501000E3,7.199271156E1 +3.310777000E3,7.172468430E1 +3.311045000E3,7.282926204E1 +3.311313000E3,7.145580608E1 +3.311562000E3,7.218798353E1 +3.311867000E3,7.081603642E1 +3.312107000E3,7.122522782E1 +3.312348000E3,7.013128466E1 +3.312672000E3,7.138239962E1 +3.312976000E3,7.589001323E1 +3.313216000E3,6.988466628E1 +3.313506000E3,6.521999768E1 +3.313853000E3,5.781158269E1 +3.314129000E3,5.698768013E1 +3.314381000E3,5.954050680E1 +3.314636000E3,5.529467486E1 +3.314903000E3,6.884377149E1 +3.315163000E3,7.293133775E1 +3.315448000E3,7.186875504E1 +3.315697000E3,6.942752239E1 +3.315995000E3,6.899930460E1 +3.316247000E3,6.333687203E1 +3.316557000E3,6.820286469E1 +3.316856000E3,7.371764624E1 +3.317124000E3,7.475494405E1 +3.317411000E3,7.135849387E1 +3.317718000E3,5.726081152E1 +3.317965000E3,5.650406291E1 +3.318233000E3,4.901561410E1 +3.318490000E3,6.881993797E1 +3.318742000E3,7.251465406E1 +3.319010000E3,6.395213402E1 +3.319311000E3,7.197127027E1 +3.319615000E3,6.948849738E1 +3.319862000E3,6.664503435E1 +3.320187000E3,6.933008182E1 +3.320443000E3,6.121514242E1 +3.320753000E3,7.017439611E1 +3.321063000E3,7.393277725E1 +3.321329000E3,7.045535337E1 +3.321643000E3,6.985180357E1 +3.321896000E3,7.158196073E1 +3.322168000E3,6.999348148E1 +3.322483000E3,6.872091406E1 +3.322823000E3,6.386396976E1 +3.323116000E3,6.891641311E1 +3.323355000E3,6.790436633E1 +3.323733000E3,6.190629476E1 +3.324010000E3,6.307072034E1 +3.324306000E3,6.459812141E1 +3.324591000E3,6.928529051E1 +3.324846000E3,6.953301961E1 +3.325158000E3,6.946121501E1 +3.325471000E3,6.177266257E1 +3.325739000E3,6.057146439E1 +3.326000000E3,6.021658005E1 +3.326269000E3,6.588088303E1 +3.326536000E3,6.594068529E1 +3.326797000E3,5.957632846E1 +3.327117000E3,5.830018402E1 +3.327415000E3,5.952820917E1 +3.327678000E3,5.996997483E1 +3.327928000E3,6.374276040E1 +3.328204000E3,6.484785648E1 +3.328504000E3,6.253699213E1 +3.328743000E3,6.495848159E1 +3.329001000E3,6.390198219E1 +3.329317000E3,6.107203426E1 +3.329613000E3,6.678300135E1 +3.329901000E3,6.048531373E1 +3.330164000E3,6.806621622E1 +3.330501000E3,6.592361883E1 +3.330795000E3,6.652249790E1 +3.331059000E3,6.079261624E1 +3.331342000E3,7.055285274E1 +3.331620000E3,6.885169705E1 +3.331870000E3,6.676175072E1 +3.332125000E3,6.653456857E1 +3.332410000E3,6.539948315E1 +3.332658000E3,6.741723145E1 +3.332915000E3,5.982571500E1 +3.333236000E3,7.234399288E1 +3.333559000E3,7.555637810E1 +3.333801000E3,7.132946849E1 +3.334053000E3,7.012473325E1 +3.334345000E3,7.083313400E1 +3.334658000E3,6.159204912E1 +3.334951000E3,5.416652771E1 +3.335187000E3,5.331536045E1 +3.335488000E3,5.516853140E1 +3.335780000E3,5.755380245E1 +3.336028000E3,6.034949591E1 +3.336335000E3,5.933559907E1 +3.336577000E3,6.200660494E1 +3.336975000E3,6.752581884E1 +3.337230000E3,6.552308109E1 +3.337509000E3,6.043162012E1 +3.337804000E3,6.346167875E1 +3.338097000E3,5.762665769E1 +3.338354000E3,6.046465836E1 +3.338657000E3,5.841838084E1 +3.338937000E3,5.426549819E1 +3.339182000E3,5.312925890E1 +3.339425000E3,5.904532039E1 +3.339705000E3,5.548841740E1 +3.339970000E3,6.467955136E1 +3.340311000E3,6.518540616E1 +3.340567000E3,6.130157495E1 +3.340843000E3,4.234380604E1 +3.341102000E3,3.685811557E1 +3.341367000E3,5.229521155E1 +3.341631000E3,4.577123603E1 +3.341913000E3,5.522804687E1 +3.342191000E3,7.219670231E1 +3.342497000E3,6.138541536E1 +3.342739000E3,5.883033505E1 +3.342994000E3,5.692990468E1 +3.343272000E3,5.784770175E1 +3.343584000E3,5.851150722E1 +3.343847000E3,7.127137910E1 +3.344137000E3,7.004437015E1 +3.344432000E3,6.719880262E1 +3.344677000E3,6.266500726E1 +3.344966000E3,6.662051616E1 +3.345209000E3,6.259160849E1 +3.345462000E3,6.521765959E1 +3.345762000E3,6.373477950E1 +3.346056000E3,5.976833176E1 +3.346294000E3,5.557373783E1 +3.346597000E3,5.486821605E1 +3.346842000E3,4.854970484E1 +3.347096000E3,6.338774242E1 +3.347415000E3,6.646909489E1 +3.347712000E3,6.370164725E1 +3.347950000E3,6.577012972E1 +3.348257000E3,6.536203326E1 +3.348509000E3,5.777033235E1 +3.348799000E3,6.942121279E1 +3.349070000E3,6.552465655E1 +3.349329000E3,6.400867966E1 +3.349583000E3,5.955829212E1 +3.349911000E3,6.233007104E1 +3.350154000E3,7.360271557E1 +3.350432000E3,7.402471070E1 +3.350716000E3,7.225249055E1 +3.350966000E3,6.654334459E1 +3.351200000E3,6.590758849E1 +3.351507000E3,6.143698167E1 +3.351805000E3,7.197722167E1 +3.352079000E3,6.778594348E1 +3.352307000E3,5.712392879E1 +3.352566000E3,5.659236121E1 +3.352870000E3,5.352359430E1 +3.353127000E3,5.362353429E1 +3.353366000E3,5.964860406E1 +3.353638000E3,7.164177428E1 +3.353890000E3,6.730234717E1 +3.354173000E3,5.336089185E1 +3.354435000E3,4.770751864E1 +3.354689000E3,4.833001031E1 +3.354956000E3,4.464972004E1 +3.355220000E3,6.809720152E1 +3.355493000E3,7.032616040E1 +3.355723000E3,7.137092547E1 +3.356052000E3,7.106236065E1 +3.356287000E3,7.302101107E1 +3.356599000E3,6.868512076E1 +3.356867000E3,7.134905494E1 +3.357133000E3,7.032184319E1 +3.357463000E3,6.484515560E1 +3.357753000E3,5.949029357E1 +3.358081000E3,6.553405106E1 +3.358385000E3,5.460622041E1 +3.358634000E3,4.798111952E1 +3.358902000E3,5.356090224E1 +3.359186000E3,5.091993104E1 +3.359516000E3,5.980463665E1 +3.359805000E3,5.623340998E1 +3.360124000E3,4.885342740E1 +3.360404000E3,4.536632542E1 +3.360660000E3,5.726647509E1 +3.360941000E3,6.266477325E1 +3.361245000E3,5.265432523E1 +3.361521000E3,4.746518361E1 +3.361777000E3,5.341135388E1 +3.362038000E3,5.094337921E1 +3.362292000E3,5.832737886E1 +3.362616000E3,5.247742127E1 +3.363049000E3,5.123926483E1 +3.363313000E3,4.482127206E1 +3.363600000E3,4.813050338E1 +3.363848000E3,5.751744958E1 +3.364157000E3,5.045245795E1 diff --git a/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a4/Picture.java b/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a4/Picture.java new file mode 100644 index 0000000..8df3d55 --- /dev/null +++ b/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a4/Picture.java @@ -0,0 +1,699 @@ +import java.awt.image.*; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.BasicStroke; +import java.util.Vector; +import javax.imageio.*; +import java.io.*; +import java.awt.*; +import javax.swing.*; +import java.util.Random; +import java.awt.geom.AffineTransform; +/** + * + * Bildklasse für die Simulation von Processing-Befehlen + * + * Diese Klasse stellt ein BufferedImage bereit, in das mit Processing-Befehlen gezeichnet + * werden kann. + * Zusätzlich kann ein Bildanzeiger über jede Änderung des Bildes informiert werden, + * um "Zurück"-Befehle zu ermöglichen. Der Bildanzeiger ist entweder eine normale Java + * ScrollPane oder ein Actor aus Greenfoot. + * Die Dokumentation der einzelnen Zeichenmethoden ist der Processing-Reference + * (https://processing.org/reference/ steht unter CC-Lizenz: https://creativecommons.org/) + * entnommen und mit Deepl.com ins Deutsche übersetzt. + * + * @version 1.0 from 23.01.2019 + * @author Thomas Schaller (ZPG Informatik Klasse 9) + */ + +public class Picture{ + + // Einstellungmöglichkeiten für das Zeichnen von Rechtecken und Ellipsen + // RADIUS = Mittelpunkt+Radius wird gegeben, CENTER = Mittelpunkt und Breite/Höhe wird gegeben, + // CORNER = Linke obere Ecke + Breite/Höhe, CORNERS = Linke obere und rechte untere Ecke + public static final int RADIUS = 1; + public static final int CENTER = 2; + public static final int CORNER = 3; + public static final int CORNERS = 4; + + // gespeichertes Bild, + private BufferedImage image; + + // aktuelle Farbeinstellungen + private Color background; + private Color pencolor; + private Color fillcolor; + + // aktuelle Stiftdicke + private double stroke; + + // akkteller Koordinatenmodus von Rechtecken und Ellipsen + private int ellipseMode = CENTER; + private int rectMode = CORNER; + + // aktueller Font + private Font textfont = null; + + // muss ein Bildanzeiger benachrichtigt werden + private PictureViewer observer = null; + private boolean autorefresh = true; + + /** + * Erzeugt ein Bild mit Standardgröße 500x400 + */ + public Picture() { + this(500,400); + } + + /** + * Erzeugt ein Bild der angegeben Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public Picture(int width, int height) { + this(width,height, "D0D0D0"); + } + + /** + * Erzeugt ein Bild aus einer Datei + * @param filename Dateiname des Bildes + */ + public Picture(String filename) { + load(filename); + } + + /** + * Erzeugt ein Bild der angegebenen Größe mit festgelegtem Hintergrund + * @param width Breite des Bildes + * @param height Höhe des Bildes + * @param background Farbe des Hintergrunds + */ + public Picture(int width, int height, String background) { + this.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + this.background = decode(background); + this.pencolor = new Color(0,0,0); + this.stroke = 1; + this.fillcolor = null; + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(this.background); + g.fillRect(0,0,width-1, height-1); + } + + /** + * Legt fest, wer das Bild anzeigt. + * Diese ermöglicht die Benachrichtung des Observers, wenn sich das Bild ändert. + * @param observer Anzeiger des Bildes + */ + + public void setObserver(PictureViewer observer) { + this.observer= observer; + } + + /** + * Direktes Setzen des Bildes (für interne Zwecke) + * @param b Bild, das gespeichert werden soll. + */ + public void setImage(BufferedImage b) { + image = b; + } + + /** + * Direktes Abfragen des Bildes (für interne Zwecke) + * @return Bild, das gerade gespeichert ist. + */ + public BufferedImage getImage() { + return image; + } + + /** + * Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + * Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + * der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu. + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public void size(int width, int height){ + pushImage(); + this.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(background); + g.fillRect(0,0,width-1, height-1); + } + + /** + * Liefert die Breite des Bildes zurück. + * @return Breite des Bildes + */ + public int getWidth() { + return image.getWidth(); + } + + /** + * Liefert die Höhe des Bildes zurück. + * @return Höhe des Bildes + */ + public int getHeight() { + return image.getHeight(); + } + + + /** + * Erzeugt eine Kopie des Bildes und übergibt sie an den Observer (falls existent), damit dieser die Versionen speichern kann + */ + private void pushImage() { + if(observer != null) { + observer.pushImage(); + } + } + + + /** + * Legt fest, ob nach jedem Zeichenbefehl automatisch das Bild auch in + * der Oberfläche aktualisiert wird. Die Einstellung "false" beschleunigt + * das Zeichnen aufwändiger Bilder und verhindert "Flackern". + * Das Neuzeichnen kann durch die Methode "refresh" gezielt ausgelöst werden. + * @param autorefresh true = nach jedem Zeichenbefehl die Anzeige aktualisieren, false= nur durch die Methode refresh neu zeichnen + */ + public void setAutoRefresh(boolean autoRefresh) { + this.autorefresh = autoRefresh; + } + + + /** + * Auch die anzeigenden Klasse wird zum Neuzeichnen aufgefordert. + */ + private void repaint() { + if(observer != null && autorefresh) { + observer.repaint(); + } + } + + /** + * Auch die anzeigenden Klasse wird zum Neuzeichnen aufgefordert. + */ + public void refresh() { + if(observer != null) { + observer.repaint(); + } + } + + // ----------------------------------------- Zeichenfunktionen ----------------------------------------------- + /** + * Löscht den Inhalt des Bildes. + * Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt. + */ + + public void clear(){ + pushImage(); + image = new BufferedImage(image.getWidth(), image.getHeight(), image.getType()); + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(background); + g.fillRect(0,0,image.getWidth()-1, image.getHeight()-1); + repaint(); + } + + /** + * Konvertiert die in einem bestimmten Modus gegebenen Koordinaten in die Java-übliche Links_Oben_Breite_Höhe Version + * Die Änderungen werden direkt im Array vorgenommen + * @param coord Array mit vier Koordinateneinträgen im gegebenen Modus + * @param mode Modus der Koordinaten (CORNER, CORNERS, RADIUS oder CENTER) + */ + private void convert(int[] coord, int mode) { + switch(mode) { + case CORNER: break; + case CORNERS: coord[2] -= coord[0]; coord[3] -= coord[1]; break; + case RADIUS: coord[2] *= 2; coord[3] *=2; + case CENTER: coord[0] -= coord[2]/2; coord[1] -= coord[3]/2; + } + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + * Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + * Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void rectMode(int mode) { + rectMode = mode; + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + * Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + * Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als Breite und Höhe der Form. + * ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void ellipseMode(int mode) { + ellipseMode = mode; + } + + + + /** + * Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + * Um eine Linie einzufärben, verwenden Sie die {@link #stroke(int, int, int) stroke()} Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + * Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + * {@link #strokeWeight(double) strokeWeight()} geändert werden. + * @param x1 x-Koordinate des 1. Punktes + * @param y1 y-Koordinate des 1. Punktes + * @param x2 x-Koordinate des 2. Punktes + * @param y2 y-Koordinate des 2. Punktes + */ + public void line(int x1, int y1, int x2, int y2) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + if (stroke > 0) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawLine(x1, y1, x2, y2); + } + repaint(); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, rectMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillRect(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawRect(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, ellipseMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillOval(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawOval(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + int px[] = {x1, x2, x3}; + int py[] = {y1, y2, y3}; + polygon(px, py); + + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + + int px[] = {x1, x2, x3, x4}; + int py[] = {y1, y2, y3, y4}; + polygon(px, py); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + + public void polygon(int[] x, int[] y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(fillcolor != null) { + + g.setColor(fillcolor); + g.fillPolygon(x,y, y.length); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawPolygon(x, y, x.length); + } + repaint(); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + ellipse(x,y,1, 1); + + } + + // ----------------------------------------- Schriftdarstellung ----------------------------------------------- + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param s Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String s, int x, int y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(pencolor != null) { + g.setColor(fillcolor); + g.setStroke(new BasicStroke((float) stroke)); + g.setFont(textfont); + g.drawString(s, x, y); + } + repaint(); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + this.textfont = font; + } + + + // ----------------------------------------- Farbfestlegungen ----------------------------------------------- + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(String color) { + try{ + return new Color( + Integer.valueOf( color.substring( 0, 2 ), 16 ), + Integer.valueOf( color.substring( 2, 4 ), 16 ), + Integer.valueOf( color.substring( 4, 6 ), 16 ) ); + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(int color) { + try{ + if(color >=0 && color < 256) { + return new Color(color,color,color); + } else { + int r = color / 0x010000 % 0xFF; + int g = color / 0x000100 % 0xFF; + int b = color % 0xFF; + System.out.println(""+r+","+g+","+b); + return new Color(r, g, b ); + } + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + this.pencolor = decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + this.pencolor=decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + this.pencolor = new Color(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + this.pencolor = null; + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + this.stroke = width; + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + this.fillcolor = decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + this.fillcolor=decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + this.fillcolor = new Color(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + this.fillcolor = null; + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + if(c < 256) { + this.background=new Color(c,c,c); + } else { + int r = c / 0x010000; + int g = c / 0x000100 % 0xFF; + int b = c % 0xFF; + this.background= new Color(r, g, b ); + } + + this.clear(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + this.background=new Color(r,g,b); + this.clear(); + } + + +// ----------------------------------------- Dateioperationen ----------------------------------------------- + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + try{ + this.image = ImageIO.read(new File(filename)); + this.background = decode("D0D0D0"); + this.pencolor = new Color(0,0,0); + this.fillcolor = null; + this.stroke = 1; + this.repaint(); + + } catch(Exception e) { + System.out.println("Fehler beim Einlesen der Bilddatei"); + } + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + try{ + String[] fn = filename.split("\\."); + if (fn.length== 1) { + ImageIO.write(image, "PNG", new File(filename+".png")); + } else { + + if (fn.length == 2 && (fn[1].toUpperCase().equals("PNG") || + fn[1].toUpperCase().equals("GIF"))){ + ImageIO.write(image, fn[1], new File(filename)); + }else { + System.out.println("Unbekanntes Bildformat"); + } + } + + } catch(Exception e) { + System.out.println("Fehler beim Speichern"); + } + } + + +// ----------------------------------------- Sonstiges ----------------------------------------------- + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + + public Color[][] getPixelArray() { + Color[][] pixel = new Color[image.getWidth()][image.getHeight()]; + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + pixel[x][y] = new java.awt.Color(image.getRGB(x,y)); + } + } + return pixel; + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + size(pixel.length,pixel[0].length); + Graphics2D g = (Graphics2D) image.getGraphics(); + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + g.setColor(pixel[x][y]); + g.fillRect(x, y, 1, 1); + } + } + repaint(); + } + + /** + * Hilfsfunktion zum Verzögern der Ausgabe + * @param millis Wartezeit in Millisekunden + */ + public void delay(int millis) { + try{ + Thread.sleep(millis); + + } catch(Exception e) { + + } + + } + + + +} diff --git a/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a4/PictureViewer.java b/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a4/PictureViewer.java new file mode 100644 index 0000000..9e6b151 --- /dev/null +++ b/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a4/PictureViewer.java @@ -0,0 +1,505 @@ +/** + * Zeigt ein Bild in einem Scrollbereich an. + * Es ist möglich das Bild zu zoomen und mehrere Versionen des Bildes zu speichern, um eine "Rückgängig" Operation durchzuführen. + * @author Thomas Schaller + * @version 1.0 vom 01.02.2019 + */ + +import java.awt.*; +import java.awt.event.*; +import javax.swing.*; +import java.awt.image.*; +import java.util.Vector; + +public class PictureViewer extends JScrollPane +{ + + // das aktuelle Bild + private Picture picture; + + // Bilder für den Züruck-Modus speichern + private static final int ANZ_BACK = 20; + private Vector history; + + // Zeichenfläche + private ImageIcon scrollImageIcon; + private JLabel imageLabel; + + // Zoom Faktor + private double zoomFactor; + public static final int FIT = -1; + public static final int NORMAL = 1; + + + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der Größe 1000x1000 + */ + public PictureViewer() { + this(1000,1000); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public PictureViewer(int width, int height) { + this(width,height, "D0D0D0"); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + * @param background Farbe des Hintergrunds als HEX-String (z.B. "FF3A45") + */ + public PictureViewer(int width, int height, String background) { + this(new Picture(width,height, background)); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild aus einer Bilddatei + * @param filename Name des Bildes + */ + public PictureViewer(String filename) { + this(new Picture(filename)); + } + + /** + * Erzeugt ein ScrollPanel und zeigt das Bild-Objekt an + * @param picture anzuzeigendes Bild + */ + public PictureViewer(Picture picture) + { + this.picture=picture; + + zoomFactor=1; + + scrollImageIcon = new ImageIcon(picture.getImage().getScaledInstance(picture.getImage().getWidth(), picture.getImage().getHeight(), Image.SCALE_FAST)); + imageLabel = new JLabel(scrollImageIcon); + imageLabel.setVerticalAlignment(JLabel.CENTER); + imageLabel.setHorizontalAlignment(JLabel.CENTER); + setViewportView(imageLabel); + + this.setBorder(BorderFactory.createLineBorder(Color.black)); + picture.setObserver(this); + history = new Vector(); + + } + + /** + * Setzt das anzuzeigende Bild neu + * @param picture anzuzeigendes Bild + */ + public void setImage(Picture picture) { + this.history = new Vector(); + this.picture = picture; + setZoom(NORMAL); + } + + /** + * Speichert das übergebene Bild in der History. + * @param b zu speicherndes Bild + */ + public void pushImage() { + if( this.ANZ_BACK > 0) { + if(history.size() == this.ANZ_BACK) { + history.removeElementAt(0); + } + + BufferedImage b = new BufferedImage(picture.getWidth(), picture.getHeight(), picture.getImage().getType()); + Graphics g = b.getGraphics(); + g.drawImage(picture.getImage(), 0, 0, null); + g.dispose(); + + history.add(b); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + private void popImage() { + int anz = history.size(); + if(anz>0) { + BufferedImage img = history.get(anz-1); + history.removeElementAt(anz-1); + picture.setImage(img); + setZoom(zoomFactor); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + public void back() { + popImage(); + } + + /** + * Setzt das angezeigt Bild neu und beachtet dabei den Zoomfaktor. + */ + public void repaint() { + if( picture != null) { + double factor= zoomFactor; + if (zoomFactor == FIT) { + double factorw = ((double) getWidth()-2) / picture.getWidth(); + double factorh = ((double) getHeight()-2) / picture.getHeight(); + factor = Math.min(factorw, factorh); + } + int width = (int) (picture.getWidth()*factor); + int height = (int) (picture.getHeight()*factor); + + + + scrollImageIcon.setImage(picture.getImage().getScaledInstance(width, height, Image.SCALE_DEFAULT)); + revalidate(); + } + } + + /** + * Setzt den Zoom-Faktor für das Bild. + * Als Zoomfaktor sind auch die Konstanten Bildanzeiger.FIT (auf Bildschirmgröße zoomen) und Bildanzeiger.NORMAL (100%) möglich. + * @param factor Zoomfaktor (1.0 = 100%). + */ + public void setZoom(double factor) + { + zoomFactor = factor; + repaint(); + } + + + // Wrappermethoden + /** + * Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + * Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + * der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu. + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public void size(int width, int height){ + picture.size(width, height); + } + + /** + * Liefert die Breite des Bildes zurück. + * @return Breite des Bildes + */ + public int getImageWidth() { + return picture.getWidth(); + } + + /** + * Liefert die Höhe des Bildes zurück. + * @return Höhe des Bildes + */ + public int getImageHeight() { + return picture.getHeight(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + picture.background(c); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + picture.background(r,g,b); + } + + /** + * Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + * Um eine Linie einzufärben, verwenden Sie die {@link #stroke(int, int, int) stroke()} Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + * Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + * {@link #strokeWeight(double) strokeWeight()} geändert werden. + * @param x1 x-Koordinate des 1. Punktes + * @param y1 y-Koordinate des 1. Punktes + * @param x2 x-Koordinate des 2. Punktes + * @param y2 y-Koordinate des 2. Punktes + */ + public void line(int x1, int y1, int x2, int y2) { + picture.line(x1,y1,x2,y2); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + picture.rect(a,b,c,d); + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + picture.ellipse(a,b,c,d); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + picture.triangle(x1,y1,x2,y2,x3,y3); + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + picture.quad(x1,y1,x2,y2,x3,y3,x4,y4); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + public void polygon(int[] x, int[] y) { + picture.polygon(x,y); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + picture.point(x,y); + + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + * Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + * Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void rectMode(int mode) { + picture.rectMode(mode); + } + + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + * Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + * Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als Breite und Höhe der Form. + * ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void ellipseMode(int mode) { + picture.ellipseMode(mode); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + picture.stroke(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + picture.noStroke(); + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + picture.strokeWeight(width); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + picture.fill(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + picture.noFill(); + } + + /** + * Löscht den Inhalt des Bildes. + * Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt. + */ + public void clear(){ + picture.clear(); + } + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + picture.load(filename); + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + picture.save(filename); + } + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param t Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String t, int x, int y) { + picture.text(t,x,y); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + picture.textFont(font); + } + + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + public Color[][] getPixelArray() { + return picture.getPixelArray(); + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + picture.setPixelArray(pixel); + } + + + +} diff --git a/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a4/Table.java b/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a4/Table.java new file mode 100644 index 0000000..ee5a211 --- /dev/null +++ b/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a4/Table.java @@ -0,0 +1,894 @@ +/** + * Die Klasse Table vereinfacht den Zugriff auf CSV-Dateien. + * Die Klassen Table und TableRow ermöglichen einen einfachen Zugriff auf tabellenbasierte + * Dokumente. + * + * @author Thomas Schaller + * @version 1.0 vom 01.02.2019 + */ + +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.ArrayList; +import java.io.*; +import java.util.Scanner; + +import org.jdom.Document; +import org.jdom.Element; +import org.jdom.Attribute; +import org.jdom.JDOMException; +import org.jdom.input.SAXBuilder; +import org.jdom.output.XMLOutputter; +import org.jdom.output.Format; + +public class Table +{ + // Standardtrennzeichen für Spalten + private static final char DEFAULT_SEPARATOR = ';'; + // Standardmarkierung für Texte + private static final char DEFAULT_QUOTE = '"'; + // Standardtrennzeichen für Dezimalzahlen + private static final char DEFAULT_COMMA = ','; + + // mögliche Spaltentypen + private static final String UNKNOWN ="UNKOWN"; + private static final String INT = "INTEGER"; + private static final String DOUBLE = "DOUBLE"; + private static final String FLOAT = "FLOAT"; + + // interne Verwaltung des Dokuments als JDOM-Document-Objekt + private Document doc; + // Verweis auf Element für Kopfzeile + private Element header; + // Ende Attribute + + /** + * Erzeugt leeres Tabellen-Dokument. + */ + public Table() { + this.doc = new Document(); + doc.setRootElement(new Element("CSV-Data")); + this.header = new Element("Header"); + doc.getRootElement().addContent(header); + } + + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei und erstellt ein Tabellenobjekt mit seinen Werten. + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public Table(String filename, String options, char separator, char quote) { + loadCSV(filename, options, separator, quote); + } + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei und erstellt ein Tabellenobjekt mit seinen Werten (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + */ + public Table(String filename, String options) { + loadCSV(filename, options); + } + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei ohne Kopfzeile und erstellt ein Tabellenobjekt mit seinen Werten (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public Table(String filename) { + loadCSV(filename); + } + + // Anfang Methoden + /** + * Liest den Inhalt einer CSV-Datei ohne Kopfzeile (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public void loadCSV(String filename) { + loadCSV(filename, ""); + } + + /** + * Liest den Inhalt einer CSV-Datei (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + */ + public void loadCSV(String filename, String options) { + loadCSV(filename, options, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** + * Liest den Inhalt einer CSV-Datei. + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public void loadCSV(String filename, String options, char separator, char quote) { + doc = new Document(); + doc.setRootElement(new Element("CSV-Data")); + header = new Element("Header"); + doc.getRootElement().addContent(header); + try { + File f = new File(filename); + Scanner scanner = new Scanner(new File(filename)); + if(options.toLowerCase().contains("header") && scanner.hasNext()) { + List entries = parseLine(scanner.nextLine(), separator, quote); + int i= 0; + for(String s : entries) { + Element entry = new Element("Column"); + header.addContent(entry); + entry.setText(s); + entry.setAttribute("type", "unknown"); + i++; + } + } + + List cols = header.getChildren(); + + while (scanner.hasNext()) { + Element line = new Element("Row"); + doc.getRootElement().addContent(line); + List entries = parseLine(scanner.nextLine(), separator, quote); + int i= 0; + + for(String s : entries) { + + if(i==cols.size()) { + Element entry = new Element("Column"); + entry.setAttribute("type", "unknown"); + header.addContent(entry); + cols = header.getChildren(); + } + + Element entry = new Element("Entry"); + entry.setText(s); + line.addContent(entry); + i++; + } + } + scanner.close(); + + } catch (Exception e) { + System.out.println("Fehler beim Lesen der CSV-Datei"); + } + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei ohne Kopfzeile (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public void saveCSV(String filename) { + saveCSV(filename, ""); + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthalten, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile haben soll, + * dann lassen Sie einfach die Option "header" weg. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile haben soll. + * @param filename Dateiname der CSV-Datei. + */ + public void saveCSV(String filename, String options) { + saveCSV(filename, options, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei. + * Wenn die Datei eine Kopfzeile enthalten, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile haben soll, + * dann lassen Sie einfach die Option "header" weg. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile haben soll. + * @param filename Dateiname der CSV-Datei. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public void saveCSV(String filename, String options, char separator, char quote){ + try{ + File f = new File(filename); + PrintStream outputFile = new PrintStream (f); + System.out.println("Speicher in : "+f.getAbsolutePath()); + List columns = header.getChildren(); + String sq = ""+quote; + String ss = ""+separator; + if(quote =='"') sq = "\""; + if(separator =='"') ss = "\""; + + if(options.toLowerCase().contains("header")) { + String h = ""; + for(Element c : columns) { + h += ss + sq + c.getText()+sq; + } + outputFile.println(h.substring(1)); + } + for(int i = 0; i parseLine(String cvsLine) { + return parseLine(cvsLine, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** HIlfsfunktion für die Analyse einer Dateizeile + * @param cvsLine Zeile aus der Datei + * @param sparator Trennzeichen für die Spalten + * @return Liste von String für die einzelnen Spalten + */ + private List parseLine(String cvsLine, char separator) { + return parseLine(cvsLine, separator, DEFAULT_QUOTE); + } + + /** HIlfsfunktion für die Analyse einer Dateizeile + * @param cvsLine Zeile aus der Datei + * @param sparator Trennzeichen für die Spalten + * @param customQuote Kennung für Strings + * @return Liste von String für die einzelnen Spalten + */ + private List parseLine(String cvsLine, char separator, char customQuote) { + + List result = new ArrayList<>(); + + //if empty, return! + if (cvsLine == null && cvsLine.isEmpty()) { + return result; + } + + //ggf. Default-Value laden + if (customQuote == ' ') { + customQuote = DEFAULT_QUOTE; + } + + if (separator == ' ') { + separator = DEFAULT_SEPARATOR; + } + + StringBuffer curVal = new StringBuffer(); + boolean inQuotes = false; + boolean startCollectChar = false; + boolean doubleQuotesInColumn = false; + + char[] chars = cvsLine.toCharArray(); + + for (char ch : chars) { + + if (inQuotes) { // aktueller Text ist in Quotes eingeschlossen + startCollectChar = true; + + if (ch == customQuote) { // Quotes werden beendet, aber Achtung bei "" => Metazeichen + inQuotes = false; + if (ch == '\"') { + doubleQuotesInColumn = true; + } + + } else { + + if (ch == '\"' && !doubleQuotesInColumn) { + doubleQuotesInColumn = true; + } else { + curVal.append(ch); + doubleQuotesInColumn = false; + } + + } + } else { + if (ch == customQuote) { + + inQuotes = true; + + //Fixed : allow "" in empty quote enclosed + if (ch == '\"'){ + if(doubleQuotesInColumn) { + curVal.append('"'); + doubleQuotesInColumn = false; + } else doubleQuotesInColumn = true; + + + } + } + else { + doubleQuotesInColumn = false; + if (ch == separator) { + + result.add(curVal.toString()); + + curVal = new StringBuffer(); + startCollectChar = false; + + } else if (ch == '\r') { + //ignore LF characters + continue; + } else if (ch == '\n') { + //the end, break! + break; + } else { + curVal.append(ch); + } + } + } + + } + result.add(curVal.toString()); + return result; + } + + /** + * Sucht die Nummer einer durch Namen gegebenen Spalte. + * @param name Name der Spalte + * @return Nummer der Spalte + */ + + private int findColumnNumber(String name) { + List columns = header.getChildren(); + int i = 0; + for(Element c : columns) { + if (c.getText().toLowerCase().equals(name.toLowerCase())) { + return i; + + } + i++; + } + return -1; + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an. + */ + public void addColumn() { + Element entry = new Element("Column"); + entry.setAttribute("type", Table.UNKNOWN); + header.addContent(entry); + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an und benennt sie. + * @param title Bezeichnung der Spalte + */ + public void addColumn(String title) { + addColumn(); + Element nc = ((List)(header.getChildren())).get(header.getChildren().size()-1); + nc.setText(title); + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an und benennt und typisiert sie. + * @param title Bezeichnung der Spalte + * @param type Typ der Spalte (UNKNOWN, DOUBLE, INTEGER, FLOAT) + */ + public void addColumn(String title, String type) { + addColumn(title); + Element nc = ((List)(header.getChildren())).get(header.getChildren().size()-1); + nc.setAttribute("type", type); + } + + /** + * Löscht eine Spalte. + * @param i Nummer der Spalte. + */ + public void removeColumn(int i) { + List lines = doc.getRootElement().getChildren(); + for(Element l : lines) { + if(l.getChildren().size()>i) l.removeContent(i); + } + } + + /** + * Löscht eine Spalte + * @param name Name der Spalte + */ + public void removeColumn(String name) { + try{ + removeColumn(findColumnNumber(name)); + } catch(Exception e) { System.out.println("Unbekannter Spaltenname");} + } + + /** + * Liefert die Anzahl der Spalten in der Tabelle + * @return Anzahl der Spalten + */ + public int getColumnCount() { + return header.getChildren().size(); + } + + /** + * Liefert die Anzahl der Zeilen in der Tabelle + * @return Anzahl der Zeilen + */ + public int getRowCount() { + return doc.getRootElement().getChildren().size()-1; + } + + /** + * Löscht alle Zeilen der Tabelle. + * Die Spaltenüberschriften und Typen bleiben erhalten. + */ + public void clearRows() { + doc.getRootElement().removeChildren("Row"); + } + + /** + * Fügt eine neue Zeile an das Ende der Tabelle an. + * @return ein TableRow-Objekt für diese neue Zeile + */ + public TableRow addRow() { + Element row = new Element("Row"); + doc.getRootElement().addContent(row); + return new TableRow(doc, row); + } + + /** + * Löscht eine Zeile + * @param i Nummer der Zeile + */ + public void removeRow(int i) { + if(i rows = doc.getRootElement().getChildren(); + return new TableRow(doc, rows.get(i+1)); + } + return null; + } + + /** + * Liefert die ganze Tabelle als Array von TableRow-Objekten + * @return Array von TableRow-Objekten + */ + public TableRow[] rows() { + TableRow[] rows = new TableRow[getRowCount()]; + for(int i = 0; i < getRowCount(); i++) { + rows[i] = getRow(i); + } + return rows; + } + + /** + * Liefert den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param column Spaltennummer + * @return Wert der Zelle + */ + public int getInt(int row, int column) { + return getRow(row).getInt(column); + } + + /** + * Liefert den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param name Name der Spalte + * @return Wert der Zelle + */ + public int getInt(int row, String name) { + return getRow(row).getInt(name); + } + + /** + * Setzt den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param column Spaltennummer + * @param value neuer Wert der Zelle + */ + public void setInt(int row, int column,int value) { + getRow(row).setInt(column, value); + } + + /** + * Setzt den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(int row, String name, int value) { + getRow(row).setInt(name, value); + } + + /** + * Liefert alle Werte einer Zeile als Integer-Array. + * @param row Nummer der Zeile + * @return int-Array, dass alle Werte der Zeile enthält + */ + public int[] getIntRow(int row) { + try{ + TableRow trow = getRow(row); + int anz = getColumnCount(); + int[] r = new int[anz]; + for(int i=0; i) (header.getChildren())).get(i).getText(); + } else { + return ""; + } + } + + /** + * Liefert die Nummer einer Spalte + * @param name Name der Spalte + * @return Nummer der Spalte + */ + public int getColumn(String name) { + List columns = header.getChildren(); + int i = 0; + while (i < columns.size()) { + if (columns.get(i).getText().toLowerCase().equals(name.toLowerCase())) { + return i; + } + i++; + } // end of while + return -1; + } + + + /** + * Erzeugt eine neue Zeile mit i Spalten + * Wenn bisher nicht genügend Spalten vorhanden sind, werden automatisch neue Spalten hinzugefügt (auch zum Header) + * @param i Anzahl der Spalten + */ + private Element buildRow(int i) { + List columns = header.getChildren(); + Element entry=null; + for(int j=0; j<=i; j++) { + + if(j==columns.size()) { + Element h = new Element("Column"); + h.setAttribute("type", "unknown"); + header.addContent(h); + columns = header.getChildren(); + } + if(j==current.getChildren().size()) { + entry = new Element("Entry"); + current.addContent(entry); + + } + + } + return entry; + + } + + /** + * Erzeugt eine neue Zeile. + * Es werden genügend Spalten erzeugt, dass ein Wert in Spalte "name" eingetragen werden kann + * @param name Name der Spalte + */ + private Element buildRow(String name) { + List columns = header.getChildren(); + int i = 0; + for(Element c: columns) { + + if(c.getText().toLowerCase().equals(name.toLowerCase())) { + return buildRow(i); + } + i++; + } + return null; + + } + + /** + * Liefert den Wert einer Zelle als String + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public String getString(int i) { + if(i >= current.getContent().size()) return ""; + Element e = (Element) current.getContent(i) ; + if(e!=null) { + return e.getText(); + } else { + return ""; + } + } + + /** + * Liefert den Wert einer Zelle als String + * @param name Name der Spalte + * @return Wert der Zelle + */ + public String getString(String name) { + return getString(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als String + * @param i Nummer der Spalte + * @param text neuer Wert der Zelle + */ + public void setString(int i, String text) { + + Element e = buildRow(i); + if(e!=null) e.setText(text); + } + + /** + * Setzt den Wert einer Zelle als String + * @param name Name der Spalte + * @param text neuer Wert der Zelle + */ + public void setString(String name, String text) { + Element e = buildRow(name); + if(e!=null) e.setText(text); + } + + + /** + * Liefert den Wert einer Zelle als Int-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public int getInt(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Integer.parseInt(e.getText()); + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Int-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public int getInt(String name) { + return getInt(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Int-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(int i,int value) { + + Element e = buildRow(i); + if(e!=null) e.setText(""+value); + } + + /** + * Setzt den Wert einer Zelle als Int-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(String name, int value) { + Element e = buildRow(name); + if(e!=null) e.setText(""+value); + } + + /** + * Liefert den Wert einer Zelle als Float-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public float getFloat(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Float.parseFloat(e.getText().replace(",",".")); + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Float-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public float getFloat(String name) { + return getFloat(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Float-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setFloat(int i,float value) { + + Element e = buildRow(i); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Setzt den Wert einer Zelle als Float-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setFloat(String name, float value) { + Element e = buildRow(name); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Liefert den Wert einer Zelle als Double-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public double getDouble(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Double.parseDouble(e.getText().replace(",",".")); + + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Double-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public double getDouble(String name) { + return getDouble(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Double-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setDouble(int i,double value) { + + Element e = buildRow(i); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Setzt den Wert einer Zelle als Double-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setDouble(String name, double value) { + Element e = buildRow(name); + if(e!=null) e.setText(format.format(value)); + } + +} diff --git a/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a4/XML.java b/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a4/XML.java new file mode 100644 index 0000000..c06c490 --- /dev/null +++ b/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a4/XML.java @@ -0,0 +1,637 @@ +/** + * Klasse zum Vereinfachten Zugriff auf XML-Dokumente + * Diese Klasse ist für den Einsatz in der Schule gedacht und soll den Schülern + * einen einfachen Zugriff auf XML-Dokumente ermöglichen. Die zur Verfügung + * stehenden Befehle sind wie in Processing realisiert. + * Dabei ist jeder Teilbaum des Dokuments wieder als XML-Objekt zugreifbar, das + * intern auf die gleiche XML-Dokumentstruktur zugreift. + * Dies ermöglicht bei unsachgemäßem Gebrauch die XML-Struktur zu zerstören. Im + * normalen Gebrauch sollte dies aber nicht relevant sein. + * + * Benötigt: jdom-1.1.3.jar + + * @author Thomas Schaller + * @version 1.0 vom 31.01.2019 + */ +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.ArrayList; +import java.io.*; + +import org.jdom.Document; +import org.jdom.Element; +import org.jdom.Attribute; +import org.jdom.JDOMException; +import org.jdom.input.SAXBuilder; +import org.jdom.output.XMLOutputter; +import org.jdom.output.Format; + +public class XML { + // Anfang Attribute + // XML-Dokumentstruktur + private Document doc; + // Zeiger auf das aktuelle Element + private Element current; + // Ende Attribute + + /** + * Erzeugt ein leeres XMLDokument + */ + public XML() { + this.doc = new Document(); + this.current = null; + } + + /** + * Erzeugt ein XML-Dokument aus einer Datei + * @param filename Dateiname der XML-Datei + */ + public XML(String filename) { + loadXML(filename); + } + + /** + * interner Konstruktor, um ein XML Objekt zu erzeugen, das auf einen bestimmten Knoten verweist + * @param doc die XML-Dokumentstruktur + * @param current Zeiger auf das aktuelle Element + */ + private XML(Document doc, Element current) { + this.doc = doc; + this.current = current; + } + + // Anfang Methoden + /** Öffnet das durch den Dateinamen gegebene Dokument + * @param filename Dateiname des XML-Files + */ + public void loadXML(String filename) { + doc = null; + File f = new File(filename); + + try { + // Das Dokument erstellen + SAXBuilder builder = new SAXBuilder(); + doc = builder.build(f); + + } catch (JDOMException e) { + e.printStackTrace(); + + } catch (IOException e) { + e.printStackTrace(); + } + // Zeiger im Baum auf Root-Element + current = doc.getRootElement(); + } + + /** Speichert den XML-Baum im angegebenen Dateinamen + * @param filename Dateiname des XML-Files + */ + public void saveXML(String filename) { + try { + // new XMLOutputter().output(doc, System.out); + XMLOutputter xmlOutput = new XMLOutputter(); + + // display nice nice + xmlOutput.setFormat(Format.getPrettyFormat()); + File f = new File(filename); + FileOutputStream outputFile = new FileOutputStream(f); + System.out.println("Speicher in : "+f.getAbsolutePath() ); + xmlOutput.output(doc, outputFile); + outputFile.close(); + System.out.println("File Saved!"); + } catch (IOException io) { + System.out.println(io.getMessage()); + } + + } + + //----------------------------------------------- Zeigerbewegungen -------------------------------------------------- + /** + * liefert ein XML-Objekt, das auf den Vaterknoten des aktuellen Elements zeigt. + * @return Vater des aktuellen Objekts. + */ + public XML getParent() { + if(current != null) { + Element parent = current.getParentElement(); + if (parent == null) { + return null; + } else { + return new XML(doc, parent); + } + } + return null; + } + + /** + * Überprüft, ob das Element irgendwelche Kinder hat oder nicht, und gibt das Ergebnis als boolean zurück. + * @return true, wenn Kinder vorhanden sind, sonst false + */ + public boolean hasChildren() { + if (current == null) { + return doc.hasRootElement(); + } else { + return current.getChildren().size()>0; + } + } + + /** + * Ermittelt die Namen aller Kinder des Elements und gibt die Namen als ein Array von Strings zurück. + * Dies ist dasselbe wie das Durchlaufen und Aufrufen von getName() auf jedem untergeordneten Element einzeln. + * @return Liste aller Namen der Kinder + */ + public String[] listChildren() { + if (current == null) { + if(doc.hasRootElement()) { + String[] names = new String[0]; + names[0] = doc.getRootElement().getName(); + return names; + } else { + return null; + } + } else { + List ch_element = current.getChildren(); + String[] names = new String[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + names[i] = ch_element.get(i).getName(); + } + return names; + } + } + + /** + * Liefert alle Kinder des Elements als Array von XML-Objekten. + * @return Array der Kinder als XML-Objekte + */ + public XML[] getChildren() { + if (current == null) { + if(doc.hasRootElement()) { + XML[] ch_xml = new XML[1]; + ch_xml[0] = new XML(doc, doc.getRootElement()); + return ch_xml; + } else { + return null; + } + } else { + List ch_element = current.getChildren(); + XML[] ch_xml = new XML[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + ch_xml[i] = new XML(doc, ch_element.get(i)); + } + return ch_xml; + } + } + + /** + * Liefert bestimmte Kinder des Elements als Array von XML-Objekten. + * Die Methode gibt dabei alle Kinder zurück, die dem angegebenen Namen entsprechen. + * @param name Name der gesuchten Kind-Objekte + * @return Array der Kinder als XML-Objekte + */ + public XML[] getChildren(String name) { + if (current == null) { + if(doc.hasRootElement()) { + XML[] ch_xml = new XML[1]; + ch_xml[0] = new XML(doc, doc.getRootElement()); + if(doc.getRootElement().getName().equals(name)){ + return ch_xml; + } else { + return null; + } + } else { + return null; + } + } else { + List ch_element = current.getChildren(name); + XML[] ch_xml = new XML[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + ch_xml[i] = new XML(doc, ch_element.get(i)); + } + return ch_xml; + } + } + + /** + * Liefert das erste Kind des Elements mit einem bestimmten Namen. + * Die Methode gibt das erste Kind zurück, das dem angegebenen Namen entsprechen. + * @param name Name des gesuchten Kind-Objektes + * @return Kind als XML-Objekt + */ + + public XML getChild(String name) { + if (current == null) { + Element e = doc.getRootElement(); + if (e.getName().equals(name)) { + return new XML(doc, e); + } else { + return null; + } + } else { + String[] names = name.split("/"); + Element e = current; + int i = 0; + while(i < names.length) { + e = e.getChild(names[i]); + if (e==null) return null; + i++; + } + return new XML(doc, e); + } + } + + /** + * Liefert das i. Kind des Elements. + * Die Methode gibt das i. Kind des aktuellen Elements zurück. + * @param i Nummer des Kindes + * @return Kind als XML-Objekt + */ + public XML getChild(int i) { + if (current == null) { + return new XML(doc, doc.getRootElement()); + } else { + List ch_element = current.getChildren(); + if (i>=ch_element.size()) return null; + return new XML(doc, ch_element.get(i)); + } + } + + //--------------------------------------------------- Methoden für das aktuelle Element ------------------------------------------------- + /** + * Frage den Namen des aktuellen Elements ab + * @return Namen des Elements + */ + public String getName() { + if (current==null) return ""; + return current.getName(); + } + + /** + * Setze den Namen des aktuellen Elements. + * @param name Neuer Name des Elements + */ + public void setName(String name) { + if (current==null) return; + current.setName(name); + } + + /** + * liefert die Anzahl der Attribute eines Elements. + * @return Anzahl des Attribute + */ + public int getAttributeCount() { + if (current == null) return 0; + return current.getAttributes().size(); + } + + /** + * liefert zurück, ob das aktuelle Element Attribute hat . + * @return true, wenn es Attribute gibt + */ + public boolean hasAttribute() { + if (current == null) return false; + return current.getAttributes().size()>0; + } + + /** + * Ruft alle Attribute des angegebenen Elements ab und gibt sie als Array von Strings zurück. + * @return Liste der Attributnamen + */ + public String[] listAttributes() { + if (current == null) return null; + List attr = current.getAttributes(); + String[] names = new String[attr.size()]; + for(int i=0; i < attr.size() ; i++) { + names[i] = attr.get(i).getName(); + } + return names; + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs + */ + public String getString(String attribute) { + if (current==null) return ""; + return current.getAttributeValue(attribute); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs + */ + public String getString(String attribute, String defaultValue) { + if (current==null) return defaultValue; + return current.getAttributeValue(attribute,defaultValue); + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param text neuer Wert des Attributs + */ + public void setString(String attribute, String text) { + if (current==null) return; + current.setAttribute(attribute, text); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Integer-Zahl + */ + public int getInt(String attribute) { + if (current==null) return 0; + try{ + int i = Integer.parseInt(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als Integer-Zahl + */ + public int getInt(String attribute, int defaultValue) { + if (current==null) return defaultValue; + try{ + int i = Integer.parseInt(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setInt(String attribute, int value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Float-Zahl + */ + public float getFloat(String attribute) { + if (current==null) return 0; + try{ + float i = Float.parseFloat(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als Float-Zahl + */ + public float getFloat(String attribute, float defaultValue) { + if (current==null) return defaultValue; + try{ + float i = Float.parseFloat(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setFloat(String attribute, float value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Double-Zahl + */ + public double getDouble(String attribute) { + if (current==null) return 0; + try{ + double i = Double.parseDouble(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + +/** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als double-Zahl + */ + public double getDouble(String attribute, double defaultValue) { + if (current==null) return defaultValue; + try{ + double i = Double.parseDouble(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setDouble(String attribute, double value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt den Inhalt/Text des aktuellen Elements ab + * @return Inhalt des Elements + */ + public String getContent() { + if ( current==null) return ""; + + return current.getText(); + } + + /** + * Fragt den Inhalt/Text des aktuellen Elements ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardtext + * @return Inhalt des Elements + */ + public String getContent(String defaultValue) { + if ( current==null) return defaultValue; + String t = current.getText(); + if(t.equals("")) t = defaultValue; + return t; + } + + /** + * Setzt den Inhalt/Text des aktuellen Elements + * @param text Neuer Inhalt des Elements + */ + public void setContent(String text) { + if ( current==null) return; + current.setText(text); + } + + + /** + * Fragt den Inhalt des aktuellen Elements als Integerzahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ public int getIntContent(int defaultValue) { + if ( current==null) return defaultValue; + try{ + int i = Integer.parseInt(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Integerzahl ab + * @return Inhalt des Elements + */ + public int getIntContent() { + if ( current==null) return 0; + try{ + int i = Integer.parseInt(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setIntContent(int value) { + if ( current==null) return; + current.setText(""+value); + } + + + /** + * Fragt den Inhalt des aktuellen Elements als Floatzahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ + public float getFloatContent(float defaultValue) { + if ( current==null) return defaultValue; + try{ + float i = Float.parseFloat(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Floatzahl ab + * @return Inhalt des Elements + */ + public float getFloatContent() { + if ( current==null) return 0; + try{ + float i = Float.parseFloat(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setFloatContent(float value) { + if ( current==null) return; + current.setText(""+value); + } + +/** + * Fragt den Inhalt des aktuellen Elements als Doublezahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ + public double getDoubleContent(double defaultValue) { + if ( current==null) return defaultValue; + try{ + double i = Double.parseDouble(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Doublezahl ab + * @return Inhalt des Elements + */ + public double getDoubleContent() { + if ( current==null) return 0; + try{ + double i = Double.parseDouble(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setDoubleContent(double value) { + if ( current==null) return; + current.setText(""+value); + } + + + // ----------------------------------------------- XML-Struktur aufbauen ------------------------------------------------ + /** Erzeuge neues Element nach der aktuellen Position und setze dieses als aktuelles Element + * @param name Name des neuen Elements + * @return neues Element als XML-Objekt + */ + public XML addChild(String name) { + Element e = new Element(name); + if(current == null){ // man ist auf Root-Ebene + doc.setRootElement(e); + + } + else { + current.addContent(e); + } // end of if-else + return new XML(doc, e); + } + + /** + * liefert das aktuelle Element als jdom-Element-Objekt + * @return aktuelles Element + */ + private Element getCurrent() { + return current; + } + + /** + * löscht ein Kind des aktuellen Knotens. + * Ist kid kein Kind des aktuellen Elements passiert gar nichts. + * @param kid XML-Objekt des Kindes + */ + public void removeChild(XML kid) { + if (current == null) return; + Element e = kid.getCurrent(); + int index = current.indexOf(e); + if(index >= 0) { current.removeContent(e);} + } + +} diff --git a/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a4/XYDiagramm.java b/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a4/XYDiagramm.java new file mode 100644 index 0000000..f957c9c --- /dev/null +++ b/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a4/XYDiagramm.java @@ -0,0 +1,121 @@ +import java.awt.Font; + +/** + * XY-Diagramm für Schalldruckpegel, Zahlen werden aus CSV-Datei gelesen. + * + * @author Schaller + * @version 29.11.18 + */ +public class XYDiagramm extends Picture + +{ + // Liste mit allen Werten + double[] x_werte; + double[] y_werte; + + // Hilfsvariablen für die Suche + int akt_maximum=-1; // aktuell groesstes Element + int akt=-1; // aktuell untersuchtes Element + int verzoegerung=0; // Geschwindigkeit der Ausführung + + // Schriften + Font kleineSchrift; + Font grosseSchrift; + + public XYDiagramm() { + size(1000, 700); + background(0); + kleineSchrift = new Font( Font.SANS_SERIF, Font.PLAIN, 12 ); + grosseSchrift = new Font( Font.SANS_SERIF, Font.PLAIN, 20 ); + + // CSV-Datei laden und anzeigen + ladeTabelle("Amplitudes.csv"); + stroke(250,250,200); + zeichneXYDiagramm(); + } + + + + public void ladeTabelle(String name) { + // Tabelle aus CSV-Datei laden + Table csv = new Table(name, "header",',','"'); + + if (csv != null && csv.getColumnCount()==2) { + + // Initialisiere Arrays, in die alle Zeilen der Tabelle passen + x_werte = new double[csv.getRowCount()]; + y_werte = new double[csv.getRowCount()]; + + // Fülle die Arrays mit Werten aus der Tabelle + for (int i = 0; i < x_werte.length; i++) { //x_werte.length; i++) { + // Lies Wert aus der i. Zeile und der Spalte "Punkte" bzw. "Name" + x_werte[i] = csv.getDouble(i, "Zeit"); + y_werte[i] = csv.getDouble(i, "Laerm"); + System.out.println("Lade Zeile: "+i); + } + } + } + + public void zeichneXYDiagramm() { + + // Überschrift + fill(255, 255, 255); + textFont(grosseSchrift); + text("Lärmpegel", 2, 20); + textFont(kleineSchrift); + + // Alle Einträge darstellen + + if (x_werte != null) { + // Maximum bestimmen + int max_x_pos = sucheMaximum(x_werte); + int max_y_pos = sucheMaximum(y_werte); + double max_x = x_werte[max_x_pos]; + double max_y = y_werte[max_y_pos]; + + // Skalierungsfaktoren + double faktor_x = 1000.0 / max_x; + double faktor_y = 700.0 / max_y; + + for (int i = 0; i+1< x_werte.length; i++) { + + // Linien zeichnen + int x1 = (int) (x_werte[i]*faktor_x); + int y1 = (int) (700- y_werte[i]*faktor_y); + int x2 = (int) (x_werte[i+1]*faktor_x); + int y2 = (int) (700- y_werte[i+1]*faktor_y); + System.out.println("i:"+i); + + line(x1,y1,x2,y2); + } + } + } + + + public int sucheMaximum(double[] zahlen) { + // Sind überhaupt Daten da? + if (zahlen.length==0 ) { + return -1; + } + + // Startwerte setzen + akt_maximum = 0; + akt = 1; + + // Alle Arrayelemente untersuchen + while (akt < zahlen.length) { + + // Neues größtes Element?? + if (zahlen[akt]> zahlen[akt_maximum]) { + // Dann merke dir das neue + akt_maximum = akt; + + } + akt = akt + 1; + } + // Gib Position des größten Elements zurück + return akt_maximum; + } + + +} diff --git a/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a4/XYDiagrammGUI.java b/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a4/XYDiagrammGUI.java new file mode 100644 index 0000000..9289b4a --- /dev/null +++ b/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a4/XYDiagrammGUI.java @@ -0,0 +1,82 @@ +import java.awt.*; +import java.awt.event.*; +import javax.swing.*; +import javax.swing.event.*; + +/** + * + * description + * + * @version 1.0 from 06.10.2018 + * @author + */ + +public class XYDiagrammGUI extends JFrame { + // Anfang Attribute + private JButton bXYDiagrammzeichnen = new JButton(); + private PictureViewer imagePanel1 = new PictureViewer(); + + private XYDiagramm bild; + private Picture b; + // Ende Attribute + + public XYDiagrammGUI (String title) { + super (title); + setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); + int frameWidth = 768; + int frameHeight = 551; + setSize(frameWidth, frameHeight); + Dimension d = Toolkit.getDefaultToolkit().getScreenSize(); + int x = (d.width - getSize().width) / 2; + int y = (d.height - getSize().height) / 2; + setLocation(x, y); + Container cp = getContentPane(); + cp.setLayout(null); + // Anfang Komponenten + bXYDiagrammzeichnen.setBounds(280, 456, 209, 33); + bXYDiagrammzeichnen.setText("XY-Diagramm zeichnen"); + bXYDiagrammzeichnen.setMargin(new Insets(2, 2, 2, 2)); + bXYDiagrammzeichnen.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent evt) { + bXYDiagrammzeichnen_ActionPerformed(evt); + } + }); + cp.add(bXYDiagrammzeichnen); + imagePanel1.setBounds(24, 16, 705, 409); + cp.add(imagePanel1); + + b = new Picture(700,800); + imagePanel1.setImage(b); + b.setObserver(imagePanel1); + addWindowListener(new WindowAdapter() { + public void windowClosed(WindowEvent evt) { + BalkendiagrammGUI_WindowClosed(evt); + } + }); + // Ende Komponenten + setResizable(false); + setVisible(true); + } + + // Anfang Methoden + public void bXYDiagrammzeichnen_ActionPerformed(ActionEvent evt) { + bild = new XYDiagramm(); + imagePanel1.setImage(bild); + bild.setObserver(imagePanel1); + imagePanel1.getVerticalScrollBar().setValue(10); + imagePanel1.getVerticalScrollBar().setValue(0); + imagePanel1.getViewport().repaint(); + } // end of bXYDiagrammzeichnen_ActionPerformed + + public void BalkendiagrammGUI_WindowClosed(WindowEvent evt) { + + + } // end of BalkendiagrammGUI_WindowClosed + + // Ende Methoden + + public static void main(String[] args) { + new XYDiagrammGUI("XYDiagrammGUI"); + } +} + diff --git a/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a4/XYDiagrammGUI.jfm b/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a4/XYDiagrammGUI.jfm new file mode 100644 index 0000000..384f91e --- /dev/null +++ b/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a4/XYDiagrammGUI.jfm @@ -0,0 +1,104 @@ +object XYDiagrammGUI: TFGUIForm + Left = 761 + Top = 237 + BorderIcons = [biSystemMenu] + Caption = 'XYDiagrammGUI' + ClientHeight = 512 + ClientWidth = 752 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -10 + Font.Name = 'MS Sans Serif' + Font.Style = [] + FormStyle = fsStayOnTop + OldCreateOrder = True + Position = poDesigned + ShowHint = True + Visible = True + OnClose = FormClose + OnCloseQuery = FormCloseQuery + OnResize = FormResize + FrameType = 5 + Resizable = False + Undecorated = False + Background = clBtnFace + windowClosed = 'BalkendiagrammGUI_WindowClosed' + PixelsPerInch = 96 + TextHeight = 13 + object bXYDiagrammzeichnen: TJButton + Tag = 4 + Left = 280 + Top = 456 + Width = 209 + Height = 33 + Hint = 'jButton1' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Dialog' + Font.Style = [fsBold] + Foreground = 3355443 + Background = 15658734 + actionPerformed = 'bXYDiagrammzeichnen_ActionPerformed' + Text = 'XY-Diagramm zeichnen' + Mnemonic = 0 + DisplayedMnemonicIndex = 0 + Selected = False + BorderPainted = True + FocusPainted = False + ContentAreaFilled = True + HorizontalAlignment = CENTER + VerticalAlignment = CENTER + HorizontalTextPosition = RIGHT + VerticalTextPosition = CENTER + IconTextGap = 4 + RolloverEnabled = False + Border.BorderType = NoBorder + Border.LineColor = clBlack + Border.LineThickness = 0 + Border.LineRounded = False + Border.EtchHighlightColor = clBlack + Border.EtchShadowColor = clBlack + Border.Etchtype = 0 + Border.BevelHighlightColor = clBlack + Border.BevelShadowColor = clBlack + Border.Beveltype = 0 + Border.MatteColor = clBlack + Border.MatteTop = 0 + Border.MatteLeft = 0 + Border.MatteBottom = 0 + Border.MatteRight = 0 + end + object imagePanel1: TJPanel + Tag = 38 + Left = 24 + Top = 16 + Width = 705 + Height = 409 + Hint = 'imagePanel1' + HelpKeyword = 'ImagePanel' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Dialog' + Font.Style = [fsBold] + Foreground = 3355443 + Background = clBtnFace + Border.BorderType = NoBorder + Border.LineColor = clBlack + Border.LineThickness = 0 + Border.LineRounded = False + Border.EtchHighlightColor = clBlack + Border.EtchShadowColor = clBlack + Border.Etchtype = 0 + Border.BevelHighlightColor = clBlack + Border.BevelShadowColor = clBlack + Border.Beveltype = 0 + Border.MatteColor = clBlack + Border.MatteTop = 0 + Border.MatteLeft = 0 + Border.MatteBottom = 0 + Border.MatteRight = 0 + end +end diff --git a/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a4/jdom-1.1.3.jar b/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a4/jdom-1.1.3.jar new file mode 100644 index 0000000..a287727 Binary files /dev/null and b/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a4/jdom-1.1.3.jar differ diff --git a/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a6/Amplitudes.csv b/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a6/Amplitudes.csv new file mode 100644 index 0000000..9f7c2cc --- /dev/null +++ b/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a6/Amplitudes.csv @@ -0,0 +1,12219 @@ +"Zeit (s)","Laerm in Dezibel(db)" +0.000000000E0,6.133205686E1 +1.130000000E-1,5.602431153E1 +3.840000000E-1,3.897519867E1 +7.780000000E-1,4.208195145E1 +1.036000000E0,3.840936313E1 +1.305000000E0,3.561092139E1 +1.587000000E0,4.663257633E1 +1.829000000E0,5.311883882E1 +2.084000000E0,5.299431820E1 +2.357000000E0,5.747397858E1 +2.643000000E0,5.626338063E1 +2.949000000E0,5.790811120E1 +3.238000000E0,5.874544026E1 +3.497000000E0,5.736162139E1 +3.775000000E0,5.897817442E1 +4.097000000E0,5.789822970E1 +4.357000000E0,5.312015799E1 +4.626000000E0,5.710192134E1 +4.941000000E0,6.275087240E1 +5.235000000E0,5.784358767E1 +5.535000000E0,5.388577420E1 +5.827000000E0,5.403495101E1 +6.090000000E0,5.428355086E1 +6.339000000E0,6.064473144E1 +6.616000000E0,6.271091291E1 +6.850000000E0,6.982615367E1 +7.128000000E0,7.050308750E1 +7.487000000E0,5.395311298E1 +7.760000000E0,5.036401582E1 +8.065000000E0,4.614125463E1 +8.361000000E0,6.244776407E1 +8.614000000E0,6.315719526E1 +8.862000000E0,5.981740395E1 +9.123000000E0,5.907292535E1 +9.374000000E0,5.661523092E1 +9.665000000E0,6.210368813E1 +9.948000000E0,6.140958115E1 +1.021100000E1,5.697007655E1 +1.058300000E1,5.460455934E1 +1.084000000E1,5.408516231E1 +1.115300000E1,5.907221377E1 +1.142100000E1,6.113412429E1 +1.172700000E1,6.267949704E1 +1.197100000E1,6.245109870E1 +1.226500000E1,6.342534529E1 +1.255800000E1,6.810008108E1 +1.287100000E1,6.036891848E1 +1.313400000E1,5.913231814E1 +1.342700000E1,5.973818566E1 +1.371600000E1,5.534371651E1 +1.401200000E1,5.694514867E1 +1.431200000E1,6.134814982E1 +1.461100000E1,5.900023912E1 +1.484600000E1,5.689908400E1 +1.515800000E1,5.296474858E1 +1.544000000E1,5.608528071E1 +1.569300000E1,5.728560404E1 +1.596900000E1,5.837984103E1 +1.620100000E1,5.718896638E1 +1.649200000E1,5.909973037E1 +1.678900000E1,5.705554272E1 +1.716300000E1,6.079937758E1 +1.747400000E1,5.618116117E1 +1.775200000E1,5.519881157E1 +1.803800000E1,5.402386340E1 +1.829100000E1,5.678484358E1 +1.858100000E1,5.954639303E1 +1.882300000E1,6.030021638E1 +1.908000000E1,5.588340744E1 +1.934400000E1,5.668691200E1 +1.958800000E1,6.042765467E1 +1.983400000E1,5.839794223E1 +2.008500000E1,5.457976882E1 +2.039500000E1,5.974390604E1 +2.064000000E1,6.049774386E1 +2.092900000E1,6.029857781E1 +2.117800000E1,6.116406203E1 +2.142700000E1,5.664722837E1 +2.173400000E1,5.823294996E1 +2.203100000E1,5.517538657E1 +2.229000000E1,5.322823206E1 +2.259900000E1,6.180779467E1 +2.285300000E1,6.106216386E1 +2.314900000E1,5.883321877E1 +2.347100000E1,6.045262422E1 +2.375000000E1,6.163931220E1 +2.406000000E1,4.841181734E1 +2.432800000E1,4.372149986E1 +2.462900000E1,5.625563946E1 +2.487100000E1,5.672759349E1 +2.513200000E1,5.896193725E1 +2.540800000E1,5.893011728E1 +2.566400000E1,5.857261268E1 +2.596700000E1,5.859012974E1 +2.621900000E1,5.635586832E1 +2.648700000E1,5.350948293E1 +2.673900000E1,5.430043092E1 +2.701400000E1,5.666610976E1 +2.727500000E1,5.218421407E1 +2.753100000E1,5.689076583E1 +2.782000000E1,5.796831886E1 +2.806900000E1,5.608205064E1 +2.831700000E1,5.482273815E1 +2.861600000E1,5.392425499E1 +2.888300000E1,5.329416010E1 +2.914800000E1,5.366916703E1 +2.940200000E1,5.280847155E1 +2.968000000E1,5.333298066E1 +2.994300000E1,5.497085471E1 +3.031200000E1,5.753094076E1 +3.057900000E1,5.655381974E1 +3.086100000E1,5.517704804E1 +3.115600000E1,5.592585858E1 +3.140700000E1,6.212826207E1 +3.166000000E1,5.699502474E1 +3.193500000E1,6.025129057E1 +3.223100000E1,5.686166208E1 +3.247300000E1,5.807641915E1 +3.271900000E1,6.065155151E1 +3.296400000E1,5.961384387E1 +3.320500000E1,6.119064420E1 +3.354400000E1,5.548464633E1 +3.378000000E1,5.699661616E1 +3.408000000E1,5.653770482E1 +3.438000000E1,5.083503664E1 +3.468200000E1,5.695639918E1 +3.495800000E1,5.566535489E1 +3.524700000E1,5.914853092E1 +3.552700000E1,5.758441289E1 +3.576600000E1,6.085665801E1 +3.606700000E1,5.862586334E1 +3.630600000E1,5.096841655E1 +3.662200000E1,6.009246966E1 +3.689400000E1,5.981749726E1 +3.715300000E1,6.108830629E1 +3.740300000E1,5.724514841E1 +3.766500000E1,5.934850613E1 +3.793000000E1,5.725470328E1 +3.819100000E1,5.843556167E1 +3.847700000E1,5.697759761E1 +3.874000000E1,5.721548979E1 +3.901600000E1,5.649629904E1 +3.927200000E1,5.850326911E1 +3.954600000E1,5.691951660E1 +3.993900000E1,5.357092442E1 +4.023400000E1,5.817046878E1 +4.053000000E1,5.554327077E1 +4.081200000E1,5.802928061E1 +4.103900000E1,5.663899845E1 +4.128700000E1,5.494654466E1 +4.155800000E1,5.564956216E1 +4.181900000E1,5.663250304E1 +4.211300000E1,5.652236278E1 +4.238100000E1,5.614203459E1 +4.264000000E1,5.433145844E1 +4.295000000E1,6.132645299E1 +4.326200000E1,6.040612545E1 +4.351400000E1,5.905916902E1 +4.377100000E1,5.885516023E1 +4.401000000E1,5.514814582E1 +4.430800000E1,5.663232510E1 +4.455900000E1,5.055807811E1 +4.482100000E1,5.614950318E1 +4.513300000E1,6.025044420E1 +4.537500000E1,5.643182261E1 +4.568900000E1,5.709089314E1 +4.600500000E1,5.480136123E1 +4.624500000E1,5.924046686E1 +4.656900000E1,6.172358505E1 +4.684100000E1,5.645515217E1 +4.711100000E1,6.002156043E1 +4.736300000E1,6.182669975E1 +4.759700000E1,5.557741963E1 +4.786700000E1,5.598662295E1 +4.818300000E1,5.664767890E1 +4.847900000E1,5.956168629E1 +4.874200000E1,5.713315811E1 +4.898900000E1,5.765479272E1 +4.931400000E1,5.507101982E1 +4.961600000E1,5.361677606E1 +4.990000000E1,5.558547080E1 +5.019600000E1,5.402951441E1 +5.046500000E1,5.805429700E1 +5.078800000E1,5.327636151E1 +5.110300000E1,4.980825483E1 +5.137100000E1,5.290981249E1 +5.165200000E1,4.817864123E1 +5.190100000E1,5.585478693E1 +5.214500000E1,5.457392293E1 +5.242900000E1,5.449921652E1 +5.272500000E1,5.537781025E1 +5.302100000E1,5.598018287E1 +5.326000000E1,5.612851081E1 +5.355800000E1,5.312697891E1 +5.384800000E1,5.799703575E1 +5.409200000E1,5.662162553E1 +5.433900000E1,5.392344795E1 +5.459100000E1,5.398098819E1 +5.494900000E1,5.489231889E1 +5.527100000E1,5.658153835E1 +5.552800000E1,5.624900056E1 +5.589500000E1,4.979935744E1 +5.616900000E1,5.146998424E1 +5.645400000E1,5.878755245E1 +5.668600000E1,5.846227673E1 +5.694400000E1,5.977267383E1 +5.726200000E1,5.508647523E1 +5.754400000E1,5.138853207E1 +5.784300000E1,5.327451232E1 +5.808600000E1,5.887142781E1 +5.837800000E1,5.858062431E1 +5.862200000E1,5.917458096E1 +5.889700000E1,6.050411670E1 +5.926300000E1,5.908687144E1 +5.952100000E1,5.570790758E1 +5.981900000E1,5.444849000E1 +6.006100000E1,5.201240285E1 +6.032000000E1,4.755830762E1 +6.061900000E1,5.204388424E1 +6.086500000E1,5.626914911E1 +6.117500000E1,5.280379974E1 +6.142900000E1,5.093923019E1 +6.173000000E1,5.460427137E1 +6.197800000E1,5.299601182E1 +6.230600000E1,5.424208739E1 +6.257600000E1,5.253762352E1 +6.283700000E1,5.544043962E1 +6.309800000E1,5.527614156E1 +6.335400000E1,5.747262922E1 +6.360700000E1,5.468151445E1 +6.384900000E1,5.582905565E1 +6.410700000E1,5.802400474E1 +6.435000000E1,5.204893636E1 +6.459600000E1,5.280146425E1 +6.486300000E1,4.876648093E1 +6.509700000E1,5.311679703E1 +6.537500000E1,5.192778643E1 +6.571400000E1,5.346709918E1 +6.597900000E1,5.370921552E1 +6.627900000E1,5.676705279E1 +6.652200000E1,5.832258643E1 +6.676600000E1,6.257736406E1 +6.703100000E1,6.295448429E1 +6.737800000E1,6.100964383E1 +6.766100000E1,5.182636016E1 +6.790700000E1,4.952717893E1 +6.821100000E1,5.667475715E1 +6.850300000E1,5.872819054E1 +6.882100000E1,6.004516195E1 +6.907300000E1,5.559244143E1 +6.935100000E1,5.600379936E1 +6.961500000E1,5.338006499E1 +6.987600000E1,5.360104859E1 +7.011900000E1,4.644905289E1 +7.037100000E1,4.528909123E1 +7.067200000E1,5.787885076E1 +7.091600000E1,5.602551032E1 +7.115700000E1,5.989544193E1 +7.142200000E1,6.110384869E1 +7.167900000E1,5.887448069E1 +7.192600000E1,5.797896456E1 +7.226000000E1,5.965665129E1 +7.251000000E1,6.477744226E1 +7.281200000E1,6.243775536E1 +7.310800000E1,5.921576979E1 +7.335600000E1,6.629420582E1 +7.364100000E1,6.683725429E1 +7.392300000E1,5.758295449E1 +7.418800000E1,5.654909286E1 +7.448600000E1,5.881341247E1 +7.472100000E1,5.546609910E1 +7.498300000E1,5.586542777E1 +7.526600000E1,5.463216262E1 +7.558500000E1,5.947397496E1 +7.586200000E1,6.218459899E1 +7.609800000E1,6.134189272E1 +7.635800000E1,5.727526170E1 +7.666700000E1,5.579062978E1 +7.699300000E1,6.015063828E1 +7.729000000E1,6.022787424E1 +7.756300000E1,5.646982462E1 +7.782200000E1,6.005734442E1 +7.813200000E1,5.950776839E1 +7.842200000E1,6.314009710E1 +7.880400000E1,5.425753266E1 +7.910400000E1,5.909139002E1 +7.935300000E1,5.600377253E1 +7.962300000E1,6.036368528E1 +7.993700000E1,5.940415340E1 +8.018900000E1,6.102152187E1 +8.050000000E1,6.619104713E1 +8.074000000E1,6.149981675E1 +8.098900000E1,5.978899259E1 +8.123800000E1,5.963150500E1 +8.150300000E1,6.509054947E1 +8.181300000E1,6.387458039E1 +8.220700000E1,6.421798778E1 +8.246100000E1,6.092500605E1 +8.271900000E1,6.039313205E1 +8.297100000E1,5.885189543E1 +8.328000000E1,6.068901175E1 +8.355600000E1,6.531581124E1 +8.381900000E1,6.460984287E1 +8.407800000E1,6.281147078E1 +8.435000000E1,5.961599483E1 +8.463400000E1,5.915457491E1 +8.489200000E1,5.383227231E1 +8.513000000E1,5.278474817E1 +8.551100000E1,6.165964712E1 +8.574900000E1,6.442604107E1 +8.600700000E1,6.551005247E1 +8.626000000E1,6.660338206E1 +8.650900000E1,6.304014634E1 +8.676000000E1,6.488065719E1 +8.701800000E1,6.416881833E1 +8.728000000E1,5.892166498E1 +8.754500000E1,5.946249393E1 +8.785000000E1,6.506678358E1 +8.809400000E1,5.703264442E1 +8.840500000E1,6.164086486E1 +8.876300000E1,6.276173959E1 +8.906100000E1,5.818071871E1 +8.930500000E1,5.844394446E1 +8.956300000E1,5.657440647E1 +8.987400000E1,6.120356137E1 +9.011500000E1,6.094306560E1 +9.041100000E1,5.978472131E1 +9.065500000E1,6.008128664E1 +9.092400000E1,5.758286780E1 +9.123300000E1,5.353387594E1 +9.151600000E1,5.676204998E1 +9.183800000E1,5.245702159E1 +9.218200000E1,5.642589170E1 +9.243600000E1,5.542467479E1 +9.268000000E1,5.580829615E1 +9.297600000E1,5.148061441E1 +9.322800000E1,4.635974806E1 +9.353200000E1,5.465579762E1 +9.377300000E1,5.154999739E1 +9.402200000E1,5.544992474E1 +9.427900000E1,5.302390200E1 +9.453300000E1,5.127982623E1 +9.478800000E1,5.263086656E1 +9.503100000E1,5.128121484E1 +9.532100000E1,5.061466876E1 +9.557700000E1,5.328260476E1 +9.582800000E1,5.101663724E1 +9.607100000E1,5.400893265E1 +9.640400000E1,5.756552061E1 +9.665500000E1,5.665487755E1 +9.690400000E1,5.719000980E1 +9.715400000E1,5.593995548E1 +9.740400000E1,5.420194495E1 +9.771300000E1,4.867232074E1 +9.802100000E1,5.053798103E1 +9.830700000E1,4.874294948E1 +9.857500000E1,5.754515654E1 +9.883700000E1,5.863618568E1 +9.909700000E1,6.070195076E1 +9.935300000E1,5.434874196E1 +9.961300000E1,6.163600431E1 +9.987300000E1,5.555228218E1 +1.001200000E2,5.733850418E1 +1.003910000E2,6.133233800E1 +1.006620000E2,5.853313440E1 +1.009020000E2,5.435835494E1 +1.011680000E2,5.329891948E1 +1.014680000E2,5.356470018E1 +1.018410000E2,5.574288130E1 +1.021370000E2,5.927571979E1 +1.024000000E2,5.789956910E1 +1.026980000E2,6.081738139E1 +1.029540000E2,5.575615853E1 +1.032580000E2,5.337382111E1 +1.035140000E2,5.562761746E1 +1.038150000E2,5.905624776E1 +1.041040000E2,5.696105750E1 +1.043990000E2,6.170938149E1 +1.046370000E2,5.823687000E1 +1.049080000E2,6.066674703E1 +1.051740000E2,6.220969933E1 +1.054810000E2,5.755805236E1 +1.057660000E2,5.735691579E1 +1.060450000E2,5.761618087E1 +1.063040000E2,5.188413372E1 +1.065680000E2,5.643639822E1 +1.068740000E2,5.312430876E1 +1.071280000E2,5.924995828E1 +1.073900000E2,5.546187342E1 +1.076920000E2,5.474389270E1 +1.079790000E2,5.600814816E1 +1.082440000E2,5.561453096E1 +1.084980000E2,5.408559240E1 +1.087580000E2,5.622058302E1 +1.090160000E2,5.768852773E1 +1.092670000E2,5.516804842E1 +1.095340000E2,5.973626648E1 +1.098120000E2,6.403409511E1 +1.100690000E2,6.035201036E1 +1.103490000E2,5.940482770E1 +1.105950000E2,5.932126109E1 +1.108600000E2,5.859387697E1 +1.111460000E2,5.929800416E1 +1.114110000E2,5.930503134E1 +1.117890000E2,6.170536210E1 +1.120410000E2,6.214563711E1 +1.123490000E2,5.810151097E1 +1.126320000E2,5.823719807E1 +1.128910000E2,6.454485320E1 +1.131870000E2,6.755031626E1 +1.134560000E2,6.410743881E1 +1.137200000E2,5.913442857E1 +1.139870000E2,6.382823805E1 +1.142400000E2,5.859239523E1 +1.145180000E2,5.135859796E1 +1.147890000E2,5.294563188E1 +1.151440000E2,5.357868048E1 +1.154220000E2,5.561359505E1 +1.156620000E2,5.645675088E1 +1.159670000E2,5.879425595E1 +1.162610000E2,5.918610512E1 +1.164990000E2,6.083658676E1 +1.167470000E2,5.526645697E1 +1.169880000E2,5.471312988E1 +1.172910000E2,6.211796732E1 +1.175510000E2,5.417468648E1 +1.177930000E2,5.576739557E1 +1.180750000E2,5.912472365E1 +1.184660000E2,5.718213173E1 +1.187710000E2,5.747081312E1 +1.190170000E2,5.741742618E1 +1.192690000E2,5.379557814E1 +1.195330000E2,5.428733520E1 +1.197780000E2,6.177329402E1 +1.200450000E2,5.672333166E1 +1.203170000E2,5.584947723E1 +1.205670000E2,5.382665718E1 +1.208400000E2,5.443690083E1 +1.211280000E2,5.221565874E1 +1.214800000E2,5.516249741E1 +1.217540000E2,5.676279334E1 +1.220050000E2,5.303796336E1 +1.222680000E2,5.258840561E1 +1.225120000E2,5.671935607E1 +1.227660000E2,4.902892756E1 +1.230240000E2,4.264962220E1 +1.232830000E2,4.818154680E1 +1.235340000E2,5.204058636E1 +1.238430000E2,5.649936271E1 +1.241410000E2,5.396154490E1 +1.244200000E2,5.428877275E1 +1.246760000E2,4.778715710E1 +1.249500000E2,4.912370762E1 +1.252110000E2,5.114426735E1 +1.255020000E2,5.345096378E1 +1.257410000E2,5.581149074E1 +1.260430000E2,5.211774829E1 +1.263320000E2,5.470047014E1 +1.265660000E2,5.399085344E1 +1.268600000E2,5.981732528E1 +1.271210000E2,5.944116770E1 +1.273530000E2,5.668281238E1 +1.275970000E2,5.042419391E1 +1.279080000E2,5.014554177E1 +1.282260000E2,5.350461413E1 +1.285240000E2,5.453533258E1 +1.287780000E2,5.809919663E1 +1.290280000E2,5.729580956E1 +1.292980000E2,5.681749266E1 +1.296010000E2,5.542882864E1 +1.298980000E2,5.612046892E1 +1.302070000E2,6.074750886E1 +1.304620000E2,5.979349108E1 +1.307520000E2,5.806574219E1 +1.310590000E2,5.738881777E1 +1.314010000E2,5.595280312E1 +1.316630000E2,5.401154636E1 +1.319120000E2,5.499471091E1 +1.321620000E2,5.551354327E1 +1.324640000E2,6.567912108E1 +1.327650000E2,5.725129100E1 +1.330150000E2,6.452906176E1 +1.333160000E2,5.778565576E1 +1.335760000E2,6.242194617E1 +1.338200000E2,5.570863747E1 +1.340710000E2,5.755877138E1 +1.343660000E2,6.819206156E1 +1.346260000E2,6.094769164E1 +1.349310000E2,6.447198163E1 +1.351810000E2,5.482297950E1 +1.354630000E2,6.327012623E1 +1.357210000E2,5.723157337E1 +1.359770000E2,5.835004111E1 +1.362140000E2,6.413045068E1 +1.365290000E2,6.022343539E1 +1.368110000E2,5.969265006E1 +1.371070000E2,5.589766444E1 +1.373670000E2,6.089100679E1 +1.376970000E2,6.762783521E1 +1.379410000E2,5.740809854E1 +1.381870000E2,6.711182247E1 +1.384650000E2,6.290175574E1 +1.387060000E2,6.352322572E1 +1.390400000E2,5.897504025E1 +1.392980000E2,5.872568346E1 +1.396520000E2,5.582882684E1 +1.399140000E2,5.874428562E1 +1.402160000E2,5.275369064E1 +1.404650000E2,5.181123336E1 +1.407250000E2,4.758951485E1 +1.410550000E2,4.601470876E1 +1.413500000E2,5.203790008E1 +1.416310000E2,5.380793436E1 +1.418780000E2,5.006781735E1 +1.421580000E2,4.792469964E1 +1.424020000E2,5.136650820E1 +1.427060000E2,5.127969468E1 +1.430200000E2,5.304643312E1 +1.433210000E2,5.218299100E1 +1.436050000E2,5.568762266E1 +1.439010000E2,5.522696018E1 +1.442570000E2,5.919224289E1 +1.445880000E2,6.201398016E1 +1.448680000E2,5.750742223E1 +1.451160000E2,5.811963790E1 +1.454090000E2,5.695462128E1 +1.456560000E2,5.854812337E1 +1.458980000E2,5.886107911E1 +1.461720000E2,5.454171305E1 +1.464480000E2,5.674410925E1 +1.466770000E2,5.450912101E1 +1.469270000E2,5.953864028E1 +1.471790000E2,6.097527460E1 +1.475260000E2,5.825769450E1 +1.478290000E2,5.780473579E1 +1.480790000E2,6.185542851E1 +1.483350000E2,5.390929394E1 +1.486330000E2,5.400087479E1 +1.488750000E2,5.328656685E1 +1.491190000E2,5.599536596E1 +1.494200000E2,5.721648542E1 +1.497150000E2,5.787493165E1 +1.500380000E2,5.480047158E1 +1.503480000E2,5.002404450E1 +1.506590000E2,5.486151348E1 +1.509700000E2,6.245235750E1 +1.512360000E2,5.831236552E1 +1.514820000E2,6.253825815E1 +1.517260000E2,6.440134635E1 +1.520120000E2,5.646251942E1 +1.523080000E2,5.569851104E1 +1.525630000E2,5.574195002E1 +1.528610000E2,6.073633455E1 +1.531220000E2,5.704364811E1 +1.533960000E2,5.858521931E1 +1.536900000E2,6.334346239E1 +1.540080000E2,5.734505299E1 +1.542490000E2,6.522555977E1 +1.544980000E2,5.500712815E1 +1.547420000E2,5.698741268E1 +1.549830000E2,5.097374633E1 +1.552760000E2,5.421781291E1 +1.555100000E2,5.276919678E1 +1.558070000E2,5.444895965E1 +1.560410000E2,5.023818561E1 +1.563440000E2,5.460917302E1 +1.565880000E2,5.459938847E1 +1.568920000E2,5.843131092E1 +1.572210000E2,5.876667307E1 +1.574850000E2,5.735202828E1 +1.577300000E2,5.496399564E1 +1.580290000E2,5.249359356E1 +1.582920000E2,5.216967072E1 +1.585400000E2,5.506360532E1 +1.588040000E2,4.854470136E1 +1.590480000E2,5.455647594E1 +1.593040000E2,5.480802962E1 +1.595560000E2,5.117555202E1 +1.598230000E2,5.525001141E1 +1.600680000E2,6.028739680E1 +1.604080000E2,6.051466285E1 +1.606910000E2,5.941686107E1 +1.609450000E2,6.263789003E1 +1.611920000E2,5.862463866E1 +1.614980000E2,5.858673558E1 +1.617730000E2,5.766546261E1 +1.620210000E2,5.485521148E1 +1.623080000E2,5.814732367E1 +1.625850000E2,5.829863647E1 +1.628370000E2,5.473457172E1 +1.631510000E2,5.323729241E1 +1.634320000E2,5.795543593E1 +1.637670000E2,5.845831909E1 +1.640670000E2,5.883503284E1 +1.643040000E2,5.933733684E1 +1.645990000E2,5.316483696E1 +1.648620000E2,5.628275472E1 +1.651110000E2,5.612764782E1 +1.654290000E2,5.739409022E1 +1.657290000E2,5.275374209E1 +1.660100000E2,5.606330732E1 +1.662350000E2,4.973765069E1 +1.664840000E2,4.855931683E1 +1.667820000E2,4.830487304E1 +1.670210000E2,5.643349546E1 +1.672820000E2,5.752246312E1 +1.675830000E2,5.576545129E1 +1.678330000E2,5.583582770E1 +1.681390000E2,5.301617697E1 +1.684460000E2,5.088408561E1 +1.686990000E2,5.149775091E1 +1.690030000E2,6.019099852E1 +1.692410000E2,6.143998752E1 +1.695380000E2,6.183098470E1 +1.697780000E2,5.964256200E1 +1.701420000E2,5.648358262E1 +1.703870000E2,5.768033788E1 +1.706360000E2,5.037521789E1 +1.709530000E2,5.268785935E1 +1.712030000E2,5.850048969E1 +1.714650000E2,5.537813713E1 +1.717710000E2,5.989062491E1 +1.720770000E2,6.371629733E1 +1.723380000E2,5.413135778E1 +1.726060000E2,5.582389161E1 +1.729040000E2,6.344770094E1 +1.731770000E2,6.038125570E1 +1.735090000E2,5.229655017E1 +1.737830000E2,5.594074665E1 +1.740430000E2,6.258802116E1 +1.743030000E2,5.773122794E1 +1.745600000E2,5.533899998E1 +1.748290000E2,5.069657364E1 +1.750850000E2,6.285550191E1 +1.753480000E2,5.470504416E1 +1.756240000E2,5.746379759E1 +1.758870000E2,5.928233462E1 +1.761350000E2,5.214791610E1 +1.763840000E2,5.260177806E1 +1.767030000E2,4.844041050E1 +1.769490000E2,5.275717684E1 +1.772330000E2,5.436891746E1 +1.774780000E2,5.441421810E1 +1.777590000E2,5.485847839E1 +1.780320000E2,5.714239097E1 +1.782910000E2,6.028837304E1 +1.785470000E2,5.706420775E1 +1.788380000E2,5.509582512E1 +1.791200000E2,5.674185072E1 +1.794340000E2,5.437491314E1 +1.796940000E2,5.696592309E1 +1.799990000E2,5.344092263E1 +1.802540000E2,5.414345246E1 +1.804960000E2,5.421992498E1 +1.808400000E2,5.317024536E1 +1.811450000E2,5.422714635E1 +1.814530000E2,5.933207779E1 +1.817720000E2,5.916706050E1 +1.820730000E2,5.685980261E1 +1.824210000E2,5.521649456E1 +1.826850000E2,5.651993888E1 +1.829810000E2,5.707596711E1 +1.832810000E2,5.464130538E1 +1.836160000E2,5.364065008E1 +1.838600000E2,5.913078622E1 +1.841080000E2,5.695541400E1 +1.843520000E2,6.237274690E1 +1.846510000E2,6.017101966E1 +1.848950000E2,5.670915019E1 +1.851380000E2,5.651470649E1 +1.854400000E2,5.919691857E1 +1.857560000E2,5.752836475E1 +1.860680000E2,6.133052078E1 +1.863670000E2,6.001801442E1 +1.866740000E2,5.871186574E1 +1.869510000E2,5.858669373E1 +1.872240000E2,5.722343490E1 +1.875200000E2,5.725198568E1 +1.877700000E2,5.560524182E1 +1.880340000E2,5.419540118E1 +1.882980000E2,6.169219144E1 +1.885790000E2,5.704261604E1 +1.888700000E2,5.651125138E1 +1.891060000E2,5.778536485E1 +1.894110000E2,5.304160496E1 +1.896990000E2,5.105254388E1 +1.900460000E2,5.338626279E1 +1.902980000E2,5.090929652E1 +1.905360000E2,5.235399183E1 +1.907970000E2,5.429173243E1 +1.910620000E2,5.376238901E1 +1.913500000E2,6.411203098E1 +1.916020000E2,6.235211697E1 +1.919100000E2,5.719243884E1 +1.922140000E2,5.965550680E1 +1.925010000E2,5.850063986E1 +1.928110000E2,6.013906156E1 +1.930480000E2,5.912633730E1 +1.934000000E2,5.860712099E1 +1.936870000E2,5.944287516E1 +1.939980000E2,5.676076088E1 +1.942520000E2,5.712881871E1 +1.945490000E2,5.515631677E1 +1.948870000E2,5.670925955E1 +1.951320000E2,5.768263389E1 +1.954210000E2,5.735243887E1 +1.957290000E2,5.883798740E1 +1.960030000E2,5.654393164E1 +1.963340000E2,5.345251733E1 +1.966710000E2,5.034487882E1 +1.969060000E2,5.741493139E1 +1.971980000E2,5.877434013E1 +1.974210000E2,5.965387227E1 +1.977200000E2,6.306941384E1 +1.979730000E2,6.004201692E1 +1.982230000E2,6.106500017E1 +1.984800000E2,5.674857861E1 +1.987290000E2,6.020914127E1 +1.990680000E2,6.067289060E1 +1.993460000E2,5.996658083E1 +1.996390000E2,5.676340490E1 +1.999500000E2,5.612304129E1 +2.002130000E2,6.289766509E1 +2.005150000E2,5.720971103E1 +2.008280000E2,5.752136939E1 +2.010940000E2,6.058659890E1 +2.013440000E2,5.618430636E1 +2.016270000E2,6.056271249E1 +2.019400000E2,5.729198827E1 +2.022100000E2,5.793084452E1 +2.025070000E2,5.787194228E1 +2.027910000E2,5.959620014E1 +2.030940000E2,6.012062596E1 +2.033180000E2,6.276377758E1 +2.036210000E2,5.834405857E1 +2.039320000E2,5.545225289E1 +2.042050000E2,5.829439447E1 +2.044730000E2,5.799912649E1 +2.047970000E2,5.444896398E1 +2.050680000E2,5.743866699E1 +2.053150000E2,5.862448994E1 +2.055880000E2,5.778478934E1 +2.058890000E2,5.527981007E1 +2.061620000E2,5.742523507E1 +2.064580000E2,5.472188821E1 +2.067100000E2,6.202721053E1 +2.069630000E2,5.861698013E1 +2.072080000E2,6.294616718E1 +2.074730000E2,6.321186761E1 +2.077380000E2,5.776609523E1 +2.080390000E2,6.061292698E1 +2.083320000E2,5.857532480E1 +2.085870000E2,5.800369352E1 +2.088450000E2,5.977447345E1 +2.091070000E2,5.957010157E1 +2.093520000E2,6.145770306E1 +2.096060000E2,6.176056517E1 +2.098580000E2,6.033519811E1 +2.100970000E2,6.429628489E1 +2.103980000E2,6.215353584E1 +2.106470000E2,6.299048914E1 +2.109300000E2,6.133544133E1 +2.112010000E2,5.397487394E1 +2.114250000E2,5.313920655E1 +2.116740000E2,5.552710709E1 +2.119140000E2,5.692289703E1 +2.121730000E2,5.618691953E1 +2.124220000E2,5.402804715E1 +2.127170000E2,5.390450402E1 +2.129570000E2,5.652515030E1 +2.132580000E2,5.490504921E1 +2.135120000E2,5.485761082E1 +2.137850000E2,6.486277416E1 +2.140520000E2,6.121826472E1 +2.143580000E2,6.355465948E1 +2.146390000E2,5.534291145E1 +2.148790000E2,6.610858745E1 +2.151670000E2,5.617739728E1 +2.154670000E2,5.426651762E1 +2.157300000E2,5.840247716E1 +2.160830000E2,5.257749691E1 +2.163200000E2,6.345809118E1 +2.165810000E2,6.020490407E1 +2.168390000E2,5.603372378E1 +2.170870000E2,5.452432165E1 +2.173530000E2,5.679931822E1 +2.176220000E2,6.225558234E1 +2.179360000E2,5.991886985E1 +2.182430000E2,6.307902574E1 +2.184780000E2,6.764692456E1 +2.187700000E2,6.696013302E1 +2.190280000E2,6.419552300E1 +2.193390000E2,6.401831507E1 +2.196000000E2,6.317016249E1 +2.198590000E2,6.093052958E1 +2.201380000E2,6.446513941E1 +2.204220000E2,6.075454080E1 +2.206690000E2,6.712020778E1 +2.209300000E2,5.440050354E1 +2.212550000E2,5.627963451E1 +2.215550000E2,6.358778444E1 +2.217990000E2,5.793661873E1 +2.220730000E2,6.448679664E1 +2.223050000E2,5.844994198E1 +2.226510000E2,5.802583418E1 +2.229440000E2,5.848297014E1 +2.231840000E2,6.170695891E1 +2.234220000E2,6.201301769E1 +2.236630000E2,6.049179870E1 +2.239600000E2,6.316843106E1 +2.242020000E2,5.818837652E1 +2.245150000E2,6.411353278E1 +2.248330000E2,6.458398711E1 +2.250670000E2,6.303280227E1 +2.253240000E2,6.378696379E1 +2.255670000E2,6.157533943E1 +2.259260000E2,5.845901257E1 +2.261910000E2,5.623331182E1 +2.264460000E2,5.550822889E1 +2.267020000E2,5.907003722E1 +2.270220000E2,6.300043778E1 +2.273130000E2,5.934584116E1 +2.275640000E2,5.367094537E1 +2.278520000E2,6.260544714E1 +2.281140000E2,5.666507163E1 +2.283970000E2,6.099713971E1 +2.287020000E2,5.943082312E1 +2.289450000E2,6.095935321E1 +2.292950000E2,5.939706013E1 +2.296230000E2,5.612117806E1 +2.299220000E2,5.805831404E1 +2.301570000E2,5.496048372E1 +2.304070000E2,5.335836124E1 +2.306490000E2,5.043808989E1 +2.309270000E2,4.778025574E1 +2.311680000E2,4.613189565E1 +2.314100000E2,4.740314381E1 +2.316580000E2,5.230056147E1 +2.319150000E2,5.672989332E1 +2.321590000E2,6.081799709E1 +2.325030000E2,5.909736866E1 +2.327570000E2,5.528762811E1 +2.330520000E2,6.623131701E1 +2.333360000E2,6.376149752E1 +2.335730000E2,6.088376871E1 +2.338700000E2,6.235681388E1 +2.341160000E2,6.060610548E1 +2.343930000E2,5.779254532E1 +2.346370000E2,5.570043106E1 +2.349010000E2,6.172637016E1 +2.351520000E2,5.865545525E1 +2.354420000E2,6.250465685E1 +2.356850000E2,6.494272879E1 +2.359310000E2,6.075163542E1 +2.361840000E2,5.742858606E1 +2.364460000E2,5.756917813E1 +2.366990000E2,6.169927684E1 +2.370080000E2,5.540268710E1 +2.373040000E2,5.484088652E1 +2.376000000E2,5.732112773E1 +2.378800000E2,5.184194161E1 +2.381270000E2,5.604168635E1 +2.383910000E2,5.644051218E1 +2.387130000E2,6.049774032E1 +2.390290000E2,6.303013407E1 +2.392800000E2,6.115111046E1 +2.395770000E2,6.294174883E1 +2.398740000E2,6.716012591E1 +2.401880000E2,7.075117191E1 +2.404890000E2,6.435561631E1 +2.407550000E2,5.593172595E1 +2.410720000E2,5.781614361E1 +2.413350000E2,5.497792445E1 +2.416080000E2,5.569244646E1 +2.418870000E2,5.408109683E1 +2.421100000E2,5.687440525E1 +2.424230000E2,6.415333296E1 +2.427170000E2,6.528722740E1 +2.429900000E2,6.229384329E1 +2.432350000E2,5.452507698E1 +2.434960000E2,5.248331654E1 +2.437450000E2,5.069826347E1 +2.439880000E2,4.989889277E1 +2.442610000E2,5.196931346E1 +2.445130000E2,4.988417717E1 +2.448120000E2,5.950968466E1 +2.451200000E2,5.725324421E1 +2.454210000E2,5.902908729E1 +2.456980000E2,5.857784521E1 +2.459650000E2,5.154496059E1 +2.462670000E2,5.316738342E1 +2.465660000E2,5.681338179E1 +2.468580000E2,5.486468116E1 +2.471080000E2,5.378622946E1 +2.473840000E2,5.263910847E1 +2.477040000E2,5.102724000E1 +2.479590000E2,4.958128022E1 +2.482070000E2,5.621813465E1 +2.486190000E2,5.553111013E1 +2.489120000E2,5.711728514E1 +2.491630000E2,6.098223102E1 +2.494610000E2,5.812970142E1 +2.497290000E2,5.874411947E1 +2.500090000E2,6.058797235E1 +2.503160000E2,5.921850964E1 +2.506300000E2,5.825659244E1 +2.508940000E2,5.902074554E1 +2.512250000E2,5.857720223E1 +2.514860000E2,5.834259509E1 +2.517560000E2,5.664723408E1 +2.520110000E2,6.245873243E1 +2.522800000E2,6.018081628E1 +2.525490000E2,6.060905480E1 +2.527980000E2,6.098924059E1 +2.530310000E2,6.604497204E1 +2.532750000E2,5.762503683E1 +2.535750000E2,5.946675250E1 +2.538150000E2,5.696283688E1 +2.541120000E2,5.795434272E1 +2.543420000E2,5.641662406E1 +2.546470000E2,6.001503419E1 +2.549610000E2,5.913147779E1 +2.552050000E2,5.772050526E1 +2.554250000E2,5.986895040E1 +2.557400000E2,4.836792039E1 +2.560130000E2,4.818172752E1 +2.563450000E2,5.244597112E1 +2.566130000E2,5.174954560E1 +2.568650000E2,5.165225717E1 +2.571100000E2,4.865803315E1 +2.573530000E2,4.773689375E1 +2.576460000E2,5.375353685E1 +2.579030000E2,5.630041837E1 +2.582540000E2,5.390583403E1 +2.585030000E2,5.686416101E1 +2.588120000E2,5.880170204E1 +2.590630000E2,5.373023259E1 +2.593590000E2,6.009405077E1 +2.596120000E2,5.710673366E1 +2.598560000E2,5.891240789E1 +2.600990000E2,5.960890080E1 +2.603510000E2,6.728594423E1 +2.606060000E2,6.334340199E1 +2.609270000E2,6.082175509E1 +2.611830000E2,5.750083619E1 +2.615060000E2,5.667484133E1 +2.618070000E2,6.152760439E1 +2.620430000E2,5.697586540E1 +2.623440000E2,5.674189037E1 +2.625730000E2,5.539036876E1 +2.628210000E2,4.901745514E1 +2.631270000E2,5.264848299E1 +2.634230000E2,5.038277380E1 +2.636750000E2,5.149234245E1 +2.639170000E2,4.604207892E1 +2.641630000E2,5.735184247E1 +2.644630000E2,5.659523444E1 +2.648080000E2,5.697978691E1 +2.650640000E2,5.691301726E1 +2.653540000E2,5.696584583E1 +2.656480000E2,5.138210199E1 +2.659030000E2,5.345758564E1 +2.661640000E2,5.363588256E1 +2.664240000E2,5.471656895E1 +2.666720000E2,5.140760448E1 +2.669400000E2,5.329005020E1 +2.671940000E2,5.422388323E1 +2.674460000E2,5.133919880E1 +2.677140000E2,5.690801972E1 +2.681270000E2,5.964609863E1 +2.684030000E2,6.167901240E1 +2.686970000E2,5.297205648E1 +2.689350000E2,5.530010894E1 +2.692310000E2,5.450325538E1 +2.694700000E2,5.391690578E1 +2.697660000E2,5.420666075E1 +2.700010000E2,4.962510480E1 +2.702390000E2,5.010058679E1 +2.705460000E2,5.345147952E1 +2.708590000E2,5.574757195E1 +2.711770000E2,5.571208034E1 +2.714720000E2,5.288998421E1 +2.717170000E2,5.214438195E1 +2.720190000E2,5.232798978E1 +2.723080000E2,6.045263056E1 +2.725500000E2,5.870512300E1 +2.727930000E2,5.577911819E1 +2.730760000E2,5.501493048E1 +2.733800000E2,5.433475343E1 +2.736720000E2,5.293457700E1 +2.739070000E2,5.486483547E1 +2.741780000E2,6.008208952E1 +2.745050000E2,5.845984546E1 +2.748040000E2,5.900764997E1 +2.751070000E2,5.760203457E1 +2.754240000E2,5.795024632E1 +2.757280000E2,6.182748257E1 +2.760340000E2,5.683205968E1 +2.763350000E2,5.821402367E1 +2.766080000E2,5.520672517E1 +2.768980000E2,5.645892504E1 +2.772030000E2,5.463906896E1 +2.775200000E2,5.412722413E1 +2.777910000E2,5.268636730E1 +2.780870000E2,5.566734184E1 +2.783350000E2,5.745256931E1 +2.785810000E2,5.645167582E1 +2.788270000E2,5.925831320E1 +2.790840000E2,5.591320738E1 +2.793690000E2,5.632637646E1 +2.796200000E2,6.252281740E1 +2.799120000E2,5.547643277E1 +2.801570000E2,6.021611275E1 +2.804580000E2,5.732676882E1 +2.808110000E2,5.909573770E1 +2.810780000E2,6.005240162E1 +2.813300000E2,5.965022185E1 +2.815820000E2,6.135840817E1 +2.818790000E2,5.970629096E1 +2.821590000E2,5.879025140E1 +2.824010000E2,5.747324456E1 +2.826520000E2,5.726379384E1 +2.828950000E2,5.871306541E1 +2.831920000E2,6.188032415E1 +2.834710000E2,6.066582287E1 +2.837110000E2,5.950933244E1 +2.840350000E2,5.901018860E1 +2.843000000E2,5.761182729E1 +2.846050000E2,5.446909438E1 +2.848570000E2,5.349219985E1 +2.851700000E2,5.015518748E1 +2.854330000E2,5.374610595E1 +2.857270000E2,5.877223624E1 +2.860310000E2,5.644512377E1 +2.863080000E2,5.711327205E1 +2.865540000E2,5.655239592E1 +2.867930000E2,5.833716670E1 +2.871150000E2,5.417781453E1 +2.874030000E2,5.332227783E1 +2.876540000E2,5.146836736E1 +2.879540000E2,5.452228720E1 +2.881970000E2,5.025406823E1 +2.884910000E2,5.490648375E1 +2.887280000E2,5.506242221E1 +2.890210000E2,5.400927835E1 +2.892600000E2,5.781126179E1 +2.895430000E2,6.384283902E1 +2.898470000E2,6.340395874E1 +2.901430000E2,5.555395770E1 +2.904560000E2,5.514224078E1 +2.907530000E2,5.346566906E1 +2.910000000E2,5.948406902E1 +2.912590000E2,6.362292628E1 +2.915300000E2,6.175065463E1 +2.918240000E2,6.129817533E1 +2.920790000E2,6.317618325E1 +2.923350000E2,6.137933812E1 +2.926010000E2,5.620086793E1 +2.928740000E2,5.715913846E1 +2.931780000E2,7.028942499E1 +2.934620000E2,6.774357618E1 +2.937770000E2,6.989950413E1 +2.940270000E2,6.631119439E1 +2.943030000E2,6.956920703E1 +2.945570000E2,6.352936554E1 +2.948100000E2,6.981123112E1 +2.951150000E2,5.607171784E1 +2.953950000E2,5.394017247E1 +2.956980000E2,7.110851253E1 +2.959460000E2,6.978848906E1 +2.961900000E2,5.446752823E1 +2.965090000E2,6.309281755E1 +2.968110000E2,6.647752141E1 +2.971300000E2,6.773248230E1 +2.974240000E2,6.289421429E1 +2.977060000E2,5.998905240E1 +2.979500000E2,6.016152671E1 +2.981940000E2,5.851705490E1 +2.984880000E2,6.506323043E1 +2.987430000E2,5.702053645E1 +2.990110000E2,4.890963733E1 +2.993040000E2,5.105737182E1 +2.995650000E2,4.950865545E1 +2.998150000E2,4.713536225E1 +3.000860000E2,6.170154569E1 +3.003780000E2,5.697995513E1 +3.006750000E2,6.496205179E1 +3.009180000E2,5.585602045E1 +3.012120000E2,5.317421587E1 +3.015130000E2,5.532213468E1 +3.017840000E2,5.371543715E1 +3.020520000E2,6.741141038E1 +3.023220000E2,6.638671809E1 +3.025730000E2,5.833940482E1 +3.028700000E2,6.272205104E1 +3.031230000E2,6.150676490E1 +3.034050000E2,6.571826996E1 +3.036710000E2,6.387001854E1 +3.039460000E2,5.704179120E1 +3.042380000E2,5.452420344E1 +3.044730000E2,6.911436343E1 +3.047670000E2,6.747337761E1 +3.050070000E2,6.642457947E1 +3.053010000E2,6.704052830E1 +3.055360000E2,6.335116163E1 +3.058350000E2,6.452879154E1 +3.061310000E2,6.588892290E1 +3.064460000E2,6.065604325E1 +3.066970000E2,5.884139521E1 +3.069890000E2,6.115548360E1 +3.072650000E2,5.474220631E1 +3.075290000E2,5.525228633E1 +3.077890000E2,5.546520153E1 +3.080280000E2,5.799541194E1 +3.083270000E2,5.467819740E1 +3.086250000E2,5.227747322E1 +3.089260000E2,5.802220937E1 +3.091970000E2,5.383690373E1 +3.095040000E2,5.794687305E1 +3.097810000E2,5.426386053E1 +3.100000000E2,5.745164866E1 +3.103300000E2,5.475501144E1 +3.106240000E2,5.154802151E1 +3.108750000E2,5.434380726E1 +3.111540000E2,5.533246388E1 +3.114150000E2,5.554218476E1 +3.116740000E2,5.375334275E1 +3.119200000E2,5.727216331E1 +3.121680000E2,5.235396651E1 +3.124720000E2,6.207307801E1 +3.127180000E2,6.488896117E1 +3.130530000E2,6.168970511E1 +3.133080000E2,6.010687101E1 +3.135950000E2,6.305386662E1 +3.138880000E2,6.214030252E1 +3.141410000E2,5.907513997E1 +3.143960000E2,6.064308138E1 +3.146480000E2,6.195321339E1 +3.148870000E2,6.088765310E1 +3.151830000E2,5.906360624E1 +3.154280000E2,5.864981040E1 +3.157360000E2,5.824424792E1 +3.159750000E2,5.826399021E1 +3.163740000E2,6.051726612E1 +3.166320000E2,6.011967909E1 +3.168940000E2,5.577110603E1 +3.172010000E2,5.372586587E1 +3.174460000E2,5.537091967E1 +3.176890000E2,5.504912063E1 +3.179320000E2,5.264203521E1 +3.182150000E2,5.344854544E1 +3.184600000E2,5.656777951E1 +3.187200000E2,5.398435402E1 +3.189820000E2,5.410695962E1 +3.192460000E2,5.344168860E1 +3.195780000E2,5.697626360E1 +3.198350000E2,6.073105615E1 +3.200880000E2,6.621432780E1 +3.203460000E2,6.597785722E1 +3.205980000E2,5.907542432E1 +3.208920000E2,5.702769809E1 +3.211760000E2,6.207459825E1 +3.214520000E2,5.921715282E1 +3.217010000E2,5.501368146E1 +3.220030000E2,5.927746858E1 +3.223090000E2,5.878714279E1 +3.226530000E2,6.209253703E1 +3.229180000E2,5.801419316E1 +3.231660000E2,6.150680788E1 +3.234110000E2,5.950436139E1 +3.236660000E2,5.694006868E1 +3.239890000E2,5.964691948E1 +3.242420000E2,6.322261269E1 +3.245070000E2,5.967413832E1 +3.247540000E2,5.743115651E1 +3.250010000E2,5.693057833E1 +3.252760000E2,5.076009335E1 +3.255600000E2,5.432440321E1 +3.258270000E2,5.728583073E1 +3.262160000E2,6.158050311E1 +3.264570000E2,5.788548067E1 +3.267330000E2,5.661485397E1 +3.270280000E2,5.698735139E1 +3.272870000E2,5.428158234E1 +3.275550000E2,5.401192370E1 +3.278320000E2,5.894424302E1 +3.281050000E2,5.279140275E1 +3.283850000E2,5.366788524E1 +3.286760000E2,5.569462346E1 +3.289750000E2,5.484501656E1 +3.292730000E2,5.654335493E1 +3.295550000E2,5.483429560E1 +3.298560000E2,5.516099131E1 +3.301720000E2,5.150081287E1 +3.304560000E2,5.126263973E1 +3.307930000E2,4.943715566E1 +3.310330000E2,5.297477083E1 +3.312800000E2,4.994759883E1 +3.316030000E2,5.283028939E1 +3.318860000E2,5.150402936E1 +3.321790000E2,5.777668868E1 +3.325470000E2,5.446937149E1 +3.328030000E2,5.754474494E1 +3.330410000E2,5.437750931E1 +3.333210000E2,5.378201308E1 +3.335760000E2,5.486825362E1 +3.338240000E2,5.338123539E1 +3.340700000E2,5.704649160E1 +3.343740000E2,5.576563429E1 +3.346640000E2,5.503590574E1 +3.349650000E2,5.539431503E1 +3.352080000E2,5.782097549E1 +3.355080000E2,5.260852375E1 +3.358690000E2,6.012616228E1 +3.361400000E2,5.534922411E1 +3.363810000E2,5.436765301E1 +3.366230000E2,5.007736554E1 +3.368850000E2,5.304270830E1 +3.371340000E2,5.106682022E1 +3.373960000E2,5.491262243E1 +3.376890000E2,5.891119644E1 +3.379320000E2,5.554676164E1 +3.382420000E2,5.491809401E1 +3.385700000E2,6.003743295E1 +3.389490000E2,5.964265847E1 +3.392140000E2,6.009419780E1 +3.394780000E2,5.950800538E1 +3.397810000E2,5.514081916E1 +3.400260000E2,5.654810222E1 +3.403230000E2,5.919098275E1 +3.405600000E2,5.937137097E1 +3.408650000E2,5.885711760E1 +3.411560000E2,6.122434193E1 +3.414060000E2,6.101494213E1 +3.416650000E2,5.685059098E1 +3.419710000E2,4.988163583E1 +3.423360000E2,5.097871962E1 +3.426300000E2,6.097968551E1 +3.429260000E2,5.246223058E1 +3.431760000E2,5.140448000E1 +3.434570000E2,5.162147831E1 +3.436910000E2,5.437509469E1 +3.439650000E2,5.588289675E1 +3.442010000E2,5.342482218E1 +3.444930000E2,5.621155564E1 +3.447310000E2,5.753713233E1 +3.450340000E2,5.873821374E1 +3.453240000E2,5.674648484E1 +3.455770000E2,5.843857274E1 +3.458770000E2,6.170678128E1 +3.461770000E2,5.848319050E1 +3.464240000E2,5.996271814E1 +3.467290000E2,5.583139448E1 +3.470000000E2,5.558324990E1 +3.472360000E2,5.638821787E1 +3.474880000E2,6.015129432E1 +3.477550000E2,6.074195357E1 +3.480530000E2,6.258101891E1 +3.483260000E2,6.280209300E1 +3.486840000E2,5.935598721E1 +3.489370000E2,6.423635683E1 +3.492060000E2,7.026891453E1 +3.495130000E2,5.477771858E1 +3.498240000E2,6.143080763E1 +3.500700000E2,6.077206860E1 +3.503130000E2,5.816670512E1 +3.506030000E2,6.220374728E1 +3.509040000E2,6.435510927E1 +3.511560000E2,6.387906049E1 +3.514240000E2,6.324188625E1 +3.517710000E2,6.217871174E1 +3.520510000E2,6.349767138E1 +3.523000000E2,5.947763114E1 +3.525840000E2,5.623947938E1 +3.528810000E2,5.940245648E1 +3.531830000E2,5.323006485E1 +3.534790000E2,4.756673680E1 +3.537830000E2,5.761743216E1 +3.540870000E2,5.701856444E1 +3.543720000E2,5.507707077E1 +3.546320000E2,5.561457107E1 +3.549330000E2,6.036785424E1 +3.552860000E2,5.818319920E1 +3.555390000E2,5.636477080E1 +3.557840000E2,5.686236286E1 +3.560330000E2,6.137502104E1 +3.563290000E2,6.039421004E1 +3.565710000E2,5.873926214E1 +3.568160000E2,5.984737812E1 +3.570890000E2,5.898549785E1 +3.573200000E2,5.804358229E1 +3.576080000E2,5.178825198E1 +3.578380000E2,5.333798630E1 +3.581470000E2,5.663121054E1 +3.584860000E2,5.705169894E1 +3.587470000E2,5.488627438E1 +3.590020000E2,5.493171173E1 +3.592590000E2,5.280801534E1 +3.595110000E2,5.919356657E1 +3.597710000E2,6.061921525E1 +3.600770000E2,5.781838960E1 +3.603810000E2,5.824405535E1 +3.606410000E2,5.734273072E1 +3.608930000E2,5.860073318E1 +3.611440000E2,5.158577335E1 +3.614110000E2,5.569804167E1 +3.617550000E2,5.732029627E1 +3.620530000E2,5.599725951E1 +3.623260000E2,5.427140428E1 +3.625700000E2,5.439119305E1 +3.628680000E2,5.768088704E1 +3.631160000E2,5.322266305E1 +3.634170000E2,5.611257515E1 +3.637150000E2,5.466283243E1 +3.639540000E2,5.648497192E1 +3.642520000E2,5.982456496E1 +3.644910000E2,5.683499776E1 +3.648080000E2,5.424977228E1 +3.650550000E2,5.261749952E1 +3.653010000E2,5.976464589E1 +3.655400000E2,5.630627545E1 +3.658370000E2,5.855663855E1 +3.660660000E2,5.839517218E1 +3.663050000E2,5.701336937E1 +3.666100000E2,6.057417753E1 +3.668530000E2,5.660058929E1 +3.671060000E2,5.360906173E1 +3.673270000E2,5.766761713E1 +3.676020000E2,5.473947199E1 +3.679270000E2,5.730791892E1 +3.681990000E2,5.368134624E1 +3.685210000E2,5.122725302E1 +3.688180000E2,5.413949330E1 +3.690720000E2,5.953240184E1 +3.693650000E2,5.834363401E1 +3.696110000E2,4.952962201E1 +3.698620000E2,6.082605721E1 +3.701240000E2,5.541205242E1 +3.703840000E2,5.595936781E1 +3.706570000E2,5.751180267E1 +3.709050000E2,5.510413826E1 +3.712530000E2,5.236304209E1 +3.715330000E2,5.429686706E1 +3.717680000E2,5.365135821E1 +3.720680000E2,5.442146139E1 +3.723070000E2,5.193301537E1 +3.726070000E2,5.573089397E1 +3.728540000E2,5.084704353E1 +3.731070000E2,5.244752708E1 +3.734250000E2,5.501438711E1 +3.737160000E2,5.701937821E1 +3.739830000E2,5.913008265E1 +3.743030000E2,6.329763996E1 +3.745490000E2,5.828010903E1 +3.748110000E2,5.514928454E1 +3.750560000E2,5.535724603E1 +3.753250000E2,6.062318511E1 +3.756820000E2,5.853801057E1 +3.759720000E2,6.218740595E1 +3.762560000E2,6.130322227E1 +3.764780000E2,5.705598438E1 +3.767430000E2,5.675025411E1 +3.770350000E2,5.562309411E1 +3.773330000E2,6.171478403E1 +3.776660000E2,5.752069737E1 +3.779640000E2,5.869913239E1 +3.782130000E2,5.802158707E1 +3.785030000E2,5.920699755E1 +3.787580000E2,5.984700757E1 +3.790120000E2,5.874214142E1 +3.792820000E2,5.792329599E1 +3.795460000E2,6.240429581E1 +3.798520000E2,5.924961400E1 +3.800960000E2,5.655548581E1 +3.803510000E2,5.997047167E1 +3.806590000E2,5.894207932E1 +3.810310000E2,5.556916558E1 +3.813250000E2,5.709965860E1 +3.815810000E2,5.724657649E1 +3.818690000E2,5.634885250E1 +3.821660000E2,5.381597934E1 +3.824070000E2,5.409431797E1 +3.827020000E2,5.558304395E1 +3.829400000E2,5.836087965E1 +3.832380000E2,5.621848827E1 +3.834740000E2,5.756105430E1 +3.837670000E2,5.972981317E1 +3.840620000E2,6.110722903E1 +3.842970000E2,6.011338906E1 +3.846120000E2,6.632548976E1 +3.849300000E2,5.632542095E1 +3.852340000E2,5.660090160E1 +3.854760000E2,5.637042997E1 +3.857700000E2,6.483820819E1 +3.860160000E2,6.294386681E1 +3.862760000E2,6.248693097E1 +3.865740000E2,5.966646580E1 +3.868130000E2,5.884596060E1 +3.871230000E2,6.069045984E1 +3.874660000E2,5.535227762E1 +3.877260000E2,5.453589064E1 +3.879920000E2,5.803286513E1 +3.882920000E2,6.338575111E1 +3.885370000E2,6.297665471E1 +3.888380000E2,6.078963895E1 +3.890870000E2,6.078711186E1 +3.893350000E2,5.918580133E1 +3.896040000E2,5.645003340E1 +3.899070000E2,5.868887980E1 +3.901560000E2,5.816727924E1 +3.904840000E2,5.908711574E1 +3.907830000E2,5.165109059E1 +3.910410000E2,5.747977046E1 +3.913230000E2,5.600926578E1 +3.916170000E2,5.743239537E1 +3.918580000E2,5.999528635E1 +3.921650000E2,5.924448814E1 +3.924670000E2,6.347749271E1 +3.927590000E2,6.285842009E1 +3.929960000E2,6.439104552E1 +3.933010000E2,6.092208558E1 +3.935450000E2,5.889760176E1 +3.939100000E2,5.798312040E1 +3.941770000E2,5.909426563E1 +3.944250000E2,5.971090911E1 +3.946810000E2,5.379436409E1 +3.949270000E2,5.134339741E1 +3.951700000E2,5.739586279E1 +3.954270000E2,5.255911571E1 +3.956850000E2,5.149310319E1 +3.959500000E2,5.723685944E1 +3.962270000E2,5.622087783E1 +3.964720000E2,6.119098643E1 +3.967310000E2,6.249797436E1 +3.970320000E2,5.838309249E1 +3.973440000E2,5.720898847E1 +3.976100000E2,5.357982700E1 +3.978600000E2,5.091452983E1 +3.981070000E2,4.781274510E1 +3.983520000E2,4.684320786E1 +3.986530000E2,4.867937405E1 +3.988970000E2,4.947454895E1 +3.991740000E2,4.941937240E1 +3.994180000E2,5.206925818E1 +3.997200000E2,5.099596962E1 +3.999720000E2,5.059119317E1 +4.002350000E2,4.980275756E1 +4.004940000E2,5.514017077E1 +4.008060000E2,5.354499430E1 +4.011150000E2,5.377825353E1 +4.013980000E2,5.657928040E1 +4.016460000E2,6.437756844E1 +4.019070000E2,6.072529486E1 +4.021970000E2,5.876291143E1 +4.024430000E2,6.118567430E1 +4.027460000E2,5.925186578E1 +4.030590000E2,5.727531678E1 +4.033610000E2,6.211123432E1 +4.036680000E2,6.041950332E1 +4.039230000E2,6.161200416E1 +4.041780000E2,6.047480336E1 +4.044620000E2,5.905442986E1 +4.047060000E2,5.729915709E1 +4.049630000E2,6.020933408E1 +4.052500000E2,5.845152603E1 +4.055600000E2,5.814304967E1 +4.058210000E2,5.866194002E1 +4.060640000E2,5.736420578E1 +4.063180000E2,6.107395805E1 +4.065790000E2,5.985269852E1 +4.069480000E2,5.745859610E1 +4.072050000E2,5.693680110E1 +4.074960000E2,6.165201185E1 +4.077470000E2,6.131132241E1 +4.079970000E2,5.824414723E1 +4.083050000E2,5.958451387E1 +4.085600000E2,5.739792126E1 +4.088150000E2,5.573389816E1 +4.090850000E2,5.530698039E1 +4.093810000E2,5.634371531E1 +4.096660000E2,5.880658089E1 +4.099920000E2,5.804298004E1 +4.102870000E2,5.688352401E1 +4.106310000E2,5.573115839E1 +4.109280000E2,5.368053116E1 +4.112180000E2,5.474384188E1 +4.114650000E2,5.380195893E1 +4.117660000E2,5.718608674E1 +4.120140000E2,5.703743686E1 +4.122910000E2,5.985228158E1 +4.125620000E2,6.278694860E1 +4.128210000E2,5.839550633E1 +4.130600000E2,6.029373556E1 +4.133710000E2,5.711050636E1 +4.136150000E2,5.200468588E1 +4.138820000E2,5.769230508E1 +4.141370000E2,5.333759168E1 +4.143860000E2,5.632377961E1 +4.146570000E2,5.647744894E1 +4.149040000E2,5.667945226E1 +4.151840000E2,5.669404445E1 +4.154420000E2,6.072374556E1 +4.157420000E2,5.606444578E1 +4.159850000E2,5.623596320E1 +4.162830000E2,5.264542492E1 +4.165340000E2,5.359803767E1 +4.168600000E2,5.691340897E1 +4.171060000E2,5.636326143E1 +4.173490000E2,6.276141082E1 +4.176080000E2,6.197471417E1 +4.178580000E2,5.777170976E1 +4.181050000E2,5.407671770E1 +4.183760000E2,4.795453020E1 +4.186580000E2,5.871005652E1 +4.188870000E2,6.069158080E1 +4.191320000E2,6.112379328E1 +4.193750000E2,5.584116633E1 +4.196280000E2,6.302854070E1 +4.199610000E2,6.640457067E1 +4.202240000E2,6.337314603E1 +4.205160000E2,5.904470105E1 +4.208200000E2,5.799078909E1 +4.210810000E2,5.975635789E1 +4.213260000E2,6.334088587E1 +4.215900000E2,5.849627934E1 +4.218550000E2,5.894070219E1 +4.221030000E2,5.961371776E1 +4.223550000E2,5.281830949E1 +4.225970000E2,4.892580508E1 +4.229130000E2,5.950646935E1 +4.232610000E2,6.303011111E1 +4.235630000E2,6.030515180E1 +4.238060000E2,5.832387195E1 +4.240560000E2,6.126571743E1 +4.243280000E2,5.961805347E1 +4.245710000E2,5.916464366E1 +4.248300000E2,6.404431780E1 +4.251020000E2,6.161392817E1 +4.253630000E2,6.303875005E1 +4.256110000E2,6.294329578E1 +4.258560000E2,6.495739223E1 +4.261620000E2,6.352748415E1 +4.265140000E2,6.360144813E1 +4.267650000E2,6.320185268E1 +4.270250000E2,6.598206760E1 +4.272910000E2,5.736158392E1 +4.275300000E2,5.632655800E1 +4.277760000E2,5.626186588E1 +4.280650000E2,5.992298879E1 +4.283460000E2,5.976814640E1 +4.285960000E2,5.617047451E1 +4.288540000E2,5.410240194E1 +4.291290000E2,5.524345530E1 +4.293550000E2,5.025485629E1 +4.297050000E2,5.094849624E1 +4.299600000E2,5.349595208E1 +4.302230000E2,5.668766668E1 +4.304690000E2,5.470073040E1 +4.307330000E2,5.808421323E1 +4.310240000E2,5.815977776E1 +4.312740000E2,5.751031291E1 +4.315190000E2,6.045600028E1 +4.318300000E2,5.967896339E1 +4.320980000E2,5.746835753E1 +4.324020000E2,5.874054152E1 +4.327010000E2,5.770096959E1 +4.330460000E2,5.851412717E1 +4.333220000E2,5.970473393E1 +4.335930000E2,6.024030776E1 +4.338530000E2,5.564089573E1 +4.341340000E2,5.328000065E1 +4.343790000E2,5.522789934E1 +4.346930000E2,5.271905966E1 +4.349910000E2,5.685384424E1 +4.352400000E2,5.751176106E1 +4.355350000E2,5.654290580E1 +4.357760000E2,5.976937629E1 +4.360780000E2,5.445311615E1 +4.363520000E2,5.460006243E1 +4.366010000E2,5.402958946E1 +4.369120000E2,5.611325616E1 +4.371660000E2,5.675575065E1 +4.374120000E2,5.605818704E1 +4.377070000E2,5.614720111E1 +4.379470000E2,5.596280974E1 +4.382450000E2,5.764305460E1 +4.384820000E2,6.015340826E1 +4.387240000E2,6.073594369E1 +4.390310000E2,5.846982437E1 +4.393110000E2,5.837342754E1 +4.396160000E2,5.758988397E1 +4.398810000E2,5.375393273E1 +4.401700000E2,5.590416510E1 +4.404180000E2,5.649267014E1 +4.406570000E2,5.809884175E1 +4.409200000E2,5.934788425E1 +4.411750000E2,5.883690392E1 +4.414270000E2,5.465512306E1 +4.416780000E2,5.456039720E1 +4.419260000E2,6.053551690E1 +4.422020000E2,5.446896121E1 +4.425270000E2,5.304300238E1 +4.428480000E2,5.413537656E1 +4.431230000E2,5.590535088E1 +4.433740000E2,5.516889265E1 +4.436180000E2,5.375803139E1 +4.439250000E2,5.440731706E1 +4.441670000E2,5.378894171E1 +4.444170000E2,5.676009311E1 +4.447160000E2,5.433224316E1 +4.449620000E2,5.431777666E1 +4.452100000E2,5.220353562E1 +4.454560000E2,5.525232641E1 +4.456950000E2,5.348687858E1 +4.459900000E2,5.571408478E1 +4.462320000E2,5.590054486E1 +4.464840000E2,5.627503595E1 +4.467390000E2,5.824548232E1 +4.469910000E2,5.637049423E1 +4.472460000E2,5.754096885E1 +4.474930000E2,5.335865942E1 +4.477890000E2,5.765888938E1 +4.480780000E2,6.102087464E1 +4.483520000E2,6.006145593E1 +4.486510000E2,5.685958774E1 +4.489610000E2,5.748149351E1 +4.492370000E2,5.709623916E1 +4.495040000E2,5.821496279E1 +4.497570000E2,5.970222946E1 +4.500030000E2,5.750976802E1 +4.502380000E2,5.796549321E1 +4.505370000E2,5.665777454E1 +4.508330000E2,5.605038109E1 +4.510750000E2,5.504306522E1 +4.513230000E2,5.112487870E1 +4.515900000E2,5.559150914E1 +4.518300000E2,5.656933458E1 +4.520810000E2,6.082180135E1 +4.524470000E2,5.774965281E1 +4.527120000E2,5.847728207E1 +4.529730000E2,5.711434047E1 +4.532810000E2,5.503285278E1 +4.535670000E2,5.614330822E1 +4.538610000E2,6.211492489E1 +4.541040000E2,6.003078695E1 +4.543760000E2,5.766611466E1 +4.546280000E2,5.912518267E1 +4.549300000E2,5.969489895E1 +4.551760000E2,5.509558621E1 +4.554320000E2,5.963291683E1 +4.556950000E2,6.194656842E1 +4.559980000E2,6.032793642E1 +4.562390000E2,5.874022110E1 +4.565060000E2,6.016749735E1 +4.567480000E2,5.985596964E1 +4.570070000E2,5.588678859E1 +4.572660000E2,5.541792762E1 +4.575660000E2,4.969164404E1 +4.578050000E2,4.976271573E1 +4.581060000E2,5.634137812E1 +4.583500000E2,5.321783082E1 +4.586280000E2,5.816393976E1 +4.588870000E2,5.817726916E1 +4.591860000E2,5.398220140E1 +4.594690000E2,5.572842498E1 +4.597270000E2,5.759574297E1 +4.600290000E2,5.492384706E1 +4.602790000E2,5.570826682E1 +4.605780000E2,5.619496661E1 +4.608690000E2,5.993990435E1 +4.611730000E2,6.185390750E1 +4.614300000E2,6.125031183E1 +4.617390000E2,6.047450440E1 +4.621070000E2,5.913093195E1 +4.623500000E2,6.032535990E1 +4.626490000E2,5.803726699E1 +4.628910000E2,5.968748294E1 +4.631850000E2,5.792594347E1 +4.634330000E2,5.623910190E1 +4.636850000E2,6.026318401E1 +4.639240000E2,6.002593060E1 +4.641990000E2,5.694813724E1 +4.644200000E2,5.456998819E1 +4.646660000E2,5.683591124E1 +4.649070000E2,5.893829862E1 +4.652630000E2,5.637983039E1 +4.655160000E2,5.571226470E1 +4.657720000E2,5.582065666E1 +4.660510000E2,5.436378979E1 +4.663550000E2,5.697364508E1 +4.666350000E2,5.716664070E1 +4.668800000E2,6.098104772E1 +4.671260000E2,5.932872997E1 +4.673960000E2,5.573089336E1 +4.676430000E2,5.791664461E1 +4.678890000E2,5.589855895E1 +4.681490000E2,6.359324433E1 +4.685010000E2,5.902079393E1 +4.687870000E2,6.085500324E1 +4.690180000E2,6.401116813E1 +4.693190000E2,6.157634911E1 +4.695830000E2,6.068297160E1 +4.698370000E2,5.867738322E1 +4.701080000E2,6.069776659E1 +4.703530000E2,5.904983802E1 +4.706060000E2,5.642725313E1 +4.708480000E2,5.600286970E1 +4.711080000E2,5.678564623E1 +4.714020000E2,5.139543439E1 +4.717220000E2,5.924511995E1 +4.720300000E2,5.309180697E1 +4.722790000E2,5.295961103E1 +4.725820000E2,5.448425692E1 +4.728350000E2,5.346047841E1 +4.731210000E2,5.563518239E1 +4.733630000E2,5.630991562E1 +4.736070000E2,5.519344442E1 +4.738520000E2,5.696356709E1 +4.741150000E2,5.721588368E1 +4.743810000E2,5.556082681E1 +4.746430000E2,5.453201409E1 +4.749610000E2,5.621559396E1 +4.752460000E2,6.170975330E1 +4.755640000E2,6.352753975E1 +4.758660000E2,5.818774343E1 +4.761780000E2,6.177058435E1 +4.764630000E2,5.829511769E1 +4.766910000E2,5.658732029E1 +4.769520000E2,6.006113158E1 +4.772530000E2,6.022385702E1 +4.775200000E2,5.965858240E1 +4.778410000E2,5.970326758E1 +4.780960000E2,5.911597661E1 +4.783440000E2,5.656338446E1 +4.786020000E2,5.723922467E1 +4.788680000E2,5.700163516E1 +4.791490000E2,6.083416080E1 +4.794510000E2,5.899425763E1 +4.797630000E2,5.820674449E1 +4.800620000E2,5.648898879E1 +4.803380000E2,5.465743937E1 +4.806090000E2,5.006847009E1 +4.809050000E2,5.870050130E1 +4.811580000E2,5.878066343E1 +4.814060000E2,5.929414686E1 +4.817070000E2,5.758425183E1 +4.819760000E2,5.151398214E1 +4.822410000E2,5.772956896E1 +4.824880000E2,5.913153701E1 +4.827710000E2,5.814746383E1 +4.830140000E2,6.018356701E1 +4.832870000E2,5.985078792E1 +4.835070000E2,6.081307149E1 +4.837500000E2,5.810932132E1 +4.840440000E2,5.700769218E1 +4.842880000E2,5.815119989E1 +4.845920000E2,5.595850943E1 +4.849330000E2,5.891167795E1 +4.851960000E2,5.413833723E1 +4.854760000E2,6.184122004E1 +4.857700000E2,6.074653742E1 +4.860130000E2,6.033024099E1 +4.862530000E2,5.218562994E1 +4.865560000E2,5.902882093E1 +4.868150000E2,6.397338635E1 +4.870790000E2,6.543155406E1 +4.873440000E2,6.181389827E1 +4.876070000E2,6.381240883E1 +4.878770000E2,6.121521197E1 +4.882210000E2,5.780293585E1 +4.884640000E2,5.941826112E1 +4.887100000E2,6.118399944E1 +4.889830000E2,6.000089150E1 +4.892940000E2,5.873163787E1 +4.895350000E2,5.943116280E1 +4.897770000E2,5.867927357E1 +4.900230000E2,6.190584219E1 +4.903270000E2,6.313044892E1 +4.905550000E2,6.096660510E1 +4.907970000E2,5.773464228E1 +4.911090000E2,5.720144266E1 +4.914750000E2,5.797465536E1 +4.917410000E2,6.063197812E1 +4.920040000E2,5.799562897E1 +4.922950000E2,5.391853563E1 +4.925940000E2,6.053973121E1 +4.928320000E2,5.781822977E1 +4.931250000E2,6.541242849E1 +4.933660000E2,6.151252976E1 +4.936620000E2,5.962569242E1 +4.939140000E2,6.114162989E1 +4.941750000E2,6.074296596E1 +4.944160000E2,5.738425867E1 +4.947510000E2,6.084173002E1 +4.950140000E2,5.911448476E1 +4.953100000E2,6.076832164E1 +4.955530000E2,6.357047625E1 +4.958480000E2,6.344590866E1 +4.960850000E2,6.154350148E1 +4.963870000E2,5.815666478E1 +4.966770000E2,5.862350251E1 +4.969720000E2,5.162851816E1 +4.972640000E2,5.887916548E1 +4.975020000E2,6.130693279E1 +4.977480000E2,6.164914583E1 +4.980300000E2,5.689153252E1 +4.983240000E2,6.054571109E1 +4.985610000E2,5.779234792E1 +4.987980000E2,6.281334084E1 +4.991290000E2,6.074883772E1 +4.994230000E2,6.344972933E1 +4.996620000E2,6.040546490E1 +4.999570000E2,6.143019571E1 +5.002020000E2,6.117826214E1 +5.004980000E2,6.217883653E1 +5.007380000E2,6.294102819E1 +5.010930000E2,6.516475449E1 +5.013550000E2,6.119184016E1 +5.016670000E2,6.096554209E1 +5.019390000E2,6.197647057E1 +5.022530000E2,6.186754720E1 +5.025630000E2,5.954982776E1 +5.028510000E2,6.115486405E1 +5.031440000E2,6.348254173E1 +5.033820000E2,5.960570527E1 +5.036780000E2,5.977682583E1 +5.039180000E2,5.709696054E1 +5.042580000E2,6.265263203E1 +5.045140000E2,6.166583393E1 +5.047590000E2,6.184451596E1 +5.050170000E2,6.196658471E1 +5.053150000E2,6.014630927E1 +5.055610000E2,6.055201466E1 +5.058690000E2,6.189129858E1 +5.062120000E2,6.557808579E1 +5.064770000E2,6.080176744E1 +5.067370000E2,6.164107472E1 +5.069870000E2,6.497302078E1 +5.072490000E2,6.320126990E1 +5.076210000E2,6.073801439E1 +5.078780000E2,5.612097300E1 +5.081420000E2,5.978501024E1 +5.084360000E2,6.061444996E1 +5.086860000E2,6.272142993E1 +5.089270000E2,6.250458760E1 +5.092250000E2,5.860749180E1 +5.094720000E2,6.368373725E1 +5.097760000E2,6.005985592E1 +5.100780000E2,5.959557057E1 +5.103410000E2,6.085764000E1 +5.106360000E2,6.210563273E1 +5.109960000E2,6.125336704E1 +5.112590000E2,5.627814405E1 +5.115470000E2,6.253958528E1 +5.118480000E2,6.261683940E1 +5.120990000E2,5.782347554E1 +5.123560000E2,6.181201679E1 +5.126370000E2,6.425542150E1 +5.129400000E2,6.148973489E1 +5.132300000E2,6.230215374E1 +5.134720000E2,6.332855968E1 +5.137620000E2,5.875203916E1 +5.140950000E2,6.043073123E1 +5.143340000E2,5.829778385E1 +5.146280000E2,6.530539120E1 +5.148660000E2,5.725439078E1 +5.151580000E2,6.255661351E1 +5.153960000E2,6.412193683E1 +5.156410000E2,6.315775814E1 +5.158840000E2,6.025521775E1 +5.161460000E2,5.892698587E1 +5.164080000E2,5.956507822E1 +5.166610000E2,6.162757540E1 +5.169960000E2,6.009082976E1 +5.173360000E2,5.999682475E1 +5.176380000E2,6.121463264E1 +5.178750000E2,5.929809726E1 +5.181460000E2,5.746668369E1 +5.183810000E2,5.919113180E1 +5.186360000E2,5.827917213E1 +5.189280000E2,5.902314388E1 +5.192310000E2,6.116063950E1 +5.195310000E2,6.026149556E1 +5.198180000E2,5.851929656E1 +5.200920000E2,5.750929671E1 +5.204160000E2,5.729942637E1 +5.207470000E2,5.472104161E1 +5.210390000E2,6.169397748E1 +5.213450000E2,6.081589597E1 +5.216480000E2,6.278728872E1 +5.219550000E2,6.266319096E1 +5.222160000E2,6.478840582E1 +5.224820000E2,6.255888661E1 +5.227330000E2,6.119451713E1 +5.229970000E2,6.244953097E1 +5.232800000E2,6.000703556E1 +5.236020000E2,5.885323025E1 +5.239510000E2,5.826073845E1 +5.242570000E2,5.807287072E1 +5.245200000E2,5.931641295E1 +5.247800000E2,5.775994158E1 +5.250310000E2,6.167249992E1 +5.253010000E2,6.027694641E1 +5.255430000E2,6.329659774E1 +5.258240000E2,6.254377160E1 +5.261330000E2,6.489975363E1 +5.263840000E2,5.999325642E1 +5.266440000E2,5.885077446E1 +5.268920000E2,6.439829299E1 +5.272450000E2,6.165608373E1 +5.275110000E2,5.418048629E1 +5.277700000E2,5.656005066E1 +5.280170000E2,6.215252288E1 +5.283170000E2,5.743407158E1 +5.285650000E2,5.831214783E1 +5.288200000E2,6.066735547E1 +5.290820000E2,5.994603081E1 +5.293240000E2,5.951550591E1 +5.295810000E2,6.264700953E1 +5.298380000E2,5.736628274E1 +5.301360000E2,5.590406638E1 +5.304530000E2,6.041033291E1 +5.307000000E2,5.968691140E1 +5.309950000E2,5.730835182E1 +5.312390000E2,5.823026311E1 +5.315470000E2,5.871167442E1 +5.318430000E2,5.990765833E1 +5.321400000E2,6.387020611E1 +5.324510000E2,6.077699448E1 +5.326980000E2,5.895294298E1 +5.329820000E2,6.041997988E1 +5.333050000E2,5.806877757E1 +5.336110000E2,5.682362418E1 +5.340220000E2,5.915478638E1 +5.342790000E2,6.110946170E1 +5.345430000E2,5.735857105E1 +5.348060000E2,5.684014045E1 +5.350480000E2,6.043627860E1 +5.353500000E2,5.982929159E1 +5.356290000E2,5.986217314E1 +5.358770000E2,5.677131614E1 +5.361310000E2,5.763848566E1 +5.363810000E2,6.142463983E1 +5.366730000E2,5.634211854E1 +5.369290000E2,5.547608220E1 +5.372430000E2,5.920768747E1 +5.375170000E2,6.113406656E1 +5.377700000E2,6.208964505E1 +5.380710000E2,6.100572025E1 +5.383260000E2,6.352283467E1 +5.386320000E2,5.898993907E1 +5.389570000E2,5.503782412E1 +5.392560000E2,5.663453376E1 +5.395360000E2,6.406828344E1 +5.398060000E2,5.890955595E1 +5.400700000E2,6.046868424E1 +5.403380000E2,5.979639772E1 +5.406170000E2,5.838685694E1 +5.409120000E2,5.933573087E1 +5.411500000E2,5.970536072E1 +5.414430000E2,5.461931777E1 +5.417380000E2,5.891969668E1 +5.419780000E2,6.086182172E1 +5.422730000E2,5.706230292E1 +5.425150000E2,6.002937875E1 +5.428150000E2,5.733734968E1 +5.430520000E2,5.791730719E1 +5.433430000E2,5.451667439E1 +5.436740000E2,5.601232928E1 +5.439430000E2,6.067749331E1 +5.441960000E2,6.044443396E1 +5.445120000E2,6.332642539E1 +5.448320000E2,6.369907597E1 +5.451010000E2,6.327412880E1 +5.453640000E2,6.380509737E1 +5.456090000E2,6.199528902E1 +5.458550000E2,5.905332967E1 +5.461530000E2,5.748064798E1 +5.463920000E2,5.793139247E1 +5.466900000E2,5.931551966E1 +5.470480000E2,6.345498755E1 +5.473610000E2,5.881486603E1 +5.476220000E2,5.928200098E1 +5.478810000E2,5.577309321E1 +5.481470000E2,5.875325885E1 +5.483980000E2,6.007409743E1 +5.486490000E2,6.070612531E1 +5.488940000E2,5.934549940E1 +5.491520000E2,6.170511636E1 +5.494020000E2,6.376886521E1 +5.497010000E2,6.406587518E1 +5.499360000E2,6.365684538E1 +5.503130000E2,6.009406633E1 +5.505850000E2,6.014270409E1 +5.508500000E2,5.879153887E1 +5.511470000E2,5.883782525E1 +5.513760000E2,5.773432280E1 +5.516350000E2,5.966648889E1 +5.518940000E2,5.472606108E1 +5.521930000E2,5.682429497E1 +5.524670000E2,5.619181968E1 +5.527770000E2,5.997719307E1 +5.530460000E2,5.879335465E1 +5.533410000E2,5.983416170E1 +5.537120000E2,5.957041909E1 +5.539420000E2,5.952828793E1 +5.542510000E2,5.971645274E1 +5.545000000E2,6.419337448E1 +5.547730000E2,6.634363344E1 +5.550770000E2,6.285856457E1 +5.553760000E2,5.654671197E1 +5.556440000E2,5.530754918E1 +5.558640000E2,5.889159880E1 +5.561110000E2,6.213947417E1 +5.563520000E2,6.860243311E1 +5.566480000E2,6.647018679E1 +5.569110000E2,6.420604516E1 +5.571650000E2,6.703462967E1 +5.574140000E2,6.648783593E1 +5.576540000E2,6.634001782E1 +5.579350000E2,6.293734135E1 +5.581770000E2,6.205918741E1 +5.584760000E2,5.247262167E1 +5.587220000E2,5.338734169E1 +5.589670000E2,5.662276325E1 +5.592110000E2,5.533465633E1 +5.595080000E2,5.854271946E1 +5.597740000E2,5.660649413E1 +5.600260000E2,6.333844075E1 +5.602860000E2,6.255943536E1 +5.605830000E2,5.392304486E1 +5.608700000E2,5.760897506E1 +5.611660000E2,5.713086887E1 +5.614070000E2,5.720157535E1 +5.617060000E2,5.026592539E1 +5.619510000E2,5.140995344E1 +5.621950000E2,5.663266073E1 +5.624370000E2,5.202695689E1 +5.627360000E2,6.084568668E1 +5.630550000E2,6.179643015E1 +5.632960000E2,5.833759539E1 +5.635420000E2,5.518782498E1 +5.638400000E2,6.578433315E1 +5.640880000E2,5.706187099E1 +5.643850000E2,5.456571992E1 +5.646300000E2,5.536479424E1 +5.649270000E2,5.930541070E1 +5.651540000E2,6.023199994E1 +5.653960000E2,5.612469871E1 +5.656980000E2,5.462007842E1 +5.659410000E2,5.278259804E1 +5.662890000E2,6.064478329E1 +5.666290000E2,5.682964802E1 +5.669030000E2,5.787828261E1 +5.671980000E2,5.712595091E1 +5.674890000E2,5.729764361E1 +5.677450000E2,5.241850056E1 +5.679980000E2,5.377155525E1 +5.682380000E2,5.485418547E1 +5.684830000E2,5.503746434E1 +5.687810000E2,5.398954643E1 +5.690230000E2,5.401913169E1 +5.693270000E2,5.953896215E1 +5.695680000E2,5.626247467E1 +5.698640000E2,6.040491706E1 +5.701050000E2,5.781813181E1 +5.703620000E2,5.733744349E1 +5.706600000E2,5.669032177E1 +5.709140000E2,5.453731954E1 +5.711580000E2,6.235364316E1 +5.714280000E2,5.958044055E1 +5.716860000E2,5.875696014E1 +5.719750000E2,5.570465139E1 +5.722310000E2,4.865236791E1 +5.725580000E2,5.257975627E1 +5.727900000E2,4.975389893E1 +5.730890000E2,5.658508958E1 +5.733660000E2,5.542284648E1 +5.735960000E2,5.536199936E1 +5.738990000E2,5.813474916E1 +5.741540000E2,5.417788207E1 +5.744370000E2,5.704170918E1 +5.746710000E2,5.736828455E1 +5.749280000E2,5.450874678E1 +5.751790000E2,5.610950442E1 +5.754890000E2,5.919887582E1 +5.758690000E2,5.780639378E1 +5.761700000E2,5.709220641E1 +5.764190000E2,5.815359781E1 +5.767060000E2,5.734155824E1 +5.769500000E2,5.925323086E1 +5.772430000E2,6.084767221E1 +5.775370000E2,5.852024889E1 +5.777780000E2,5.822649765E1 +5.780770000E2,5.829089322E1 +5.783770000E2,5.915481192E1 +5.786460000E2,5.996430642E1 +5.789780000E2,6.016421415E1 +5.792520000E2,6.221052482E1 +5.795090000E2,5.533993101E1 +5.798230000E2,6.537257407E1 +5.801220000E2,6.068836920E1 +5.803770000E2,5.728273812E1 +5.806510000E2,5.648369901E1 +5.809070000E2,5.397363349E1 +5.811690000E2,5.755294689E1 +5.814510000E2,5.957149991E1 +5.816900000E2,5.963092636E1 +5.820650000E2,6.778811076E1 +5.823240000E2,6.247529404E1 +5.825840000E2,6.073516327E1 +5.828380000E2,6.039356998E1 +5.830970000E2,5.764504824E1 +5.833990000E2,6.041396176E1 +5.836470000E2,6.355942860E1 +5.838990000E2,5.785560268E1 +5.841390000E2,6.060017525E1 +5.844440000E2,6.032069521E1 +5.847010000E2,5.760371100E1 +5.849440000E2,5.491620812E1 +5.851990000E2,5.957978671E1 +5.855370000E2,6.103184032E1 +5.857970000E2,5.896875350E1 +5.861120000E2,6.008190546E1 +5.863990000E2,5.687378544E1 +5.866450000E2,5.874294643E1 +5.869410000E2,5.870806017E1 +5.871860000E2,5.809143232E1 +5.874740000E2,5.847828699E1 +5.877850000E2,5.846232778E1 +5.880500000E2,5.755876921E1 +5.883650000E2,5.609032758E1 +5.887050000E2,5.685283394E1 +5.889730000E2,5.945975832E1 +5.892710000E2,6.114741701E1 +5.895110000E2,6.316132147E1 +5.898100000E2,6.715155367E1 +5.900480000E2,6.367866992E1 +5.903470000E2,5.131949120E1 +5.905900000E2,5.646494575E1 +5.908880000E2,6.096218752E1 +5.911270000E2,6.089171796E1 +5.913720000E2,6.319522071E1 +5.916410000E2,6.016553529E1 +5.920560000E2,5.915189166E1 +5.923330000E2,5.776862186E1 +5.925640000E2,5.840366445E1 +5.927890000E2,5.978914182E1 +5.930440000E2,6.058699711E1 +5.932650000E2,6.012895387E1 +5.935140000E2,6.295025578E1 +5.937520000E2,6.280196012E1 +5.940110000E2,6.194014009E1 +5.943340000E2,6.483906300E1 +5.945870000E2,5.918257578E1 +5.948380000E2,5.620333930E1 +5.951900000E2,6.323403421E1 +5.954240000E2,6.183177681E1 +5.956620000E2,6.120300936E1 +5.959650000E2,5.836925111E1 +5.961890000E2,6.106023171E1 +5.964920000E2,6.153658324E1 +5.967310000E2,6.490772593E1 +5.969960000E2,6.274228676E1 +5.972520000E2,6.139008510E1 +5.975050000E2,6.281232833E1 +5.978180000E2,6.254982632E1 +5.980890000E2,6.205794184E1 +5.983900000E2,6.438771503E1 +5.986230000E2,6.052772463E1 +5.988520000E2,6.375966703E1 +5.991380000E2,5.869985301E1 +5.993860000E2,6.050357712E1 +5.996630000E2,5.547835745E1 +5.999280000E2,5.400421666E1 +6.001960000E2,5.668252186E1 +6.004880000E2,6.001970320E1 +6.007680000E2,6.056987745E1 +6.010550000E2,6.461211967E1 +6.014090000E2,6.399838195E1 +6.016840000E2,5.485596323E1 +6.019450000E2,5.731519087E1 +6.022080000E2,6.691878914E1 +6.024720000E2,6.479201876E1 +6.027260000E2,6.412847214E1 +6.029760000E2,6.025795068E1 +6.032190000E2,6.098133491E1 +6.035120000E2,5.689387521E1 +6.038040000E2,5.639928101E1 +6.041550000E2,5.328068252E1 +6.044370000E2,5.639829798E1 +6.046770000E2,5.892330560E1 +6.049510000E2,5.315638413E1 +6.051900000E2,5.740260439E1 +6.054620000E2,5.339391440E1 +6.057500000E2,5.310371918E1 +6.060710000E2,5.460903952E1 +6.063050000E2,5.407304270E1 +6.065540000E2,5.870790541E1 +6.068060000E2,5.576782972E1 +6.070790000E2,5.976954147E1 +6.074640000E2,6.181180531E1 +6.077240000E2,6.194364733E1 +6.080150000E2,6.794225297E1 +6.082590000E2,6.236601361E1 +6.085470000E2,6.002700779E1 +6.088450000E2,5.971993236E1 +6.090930000E2,5.954735434E1 +6.093460000E2,5.907202371E1 +6.095920000E2,5.993658420E1 +6.098910000E2,5.530332259E1 +6.101850000E2,5.531802018E1 +6.104220000E2,5.376885939E1 +6.107780000E2,5.735355871E1 +6.110210000E2,5.868610156E1 +6.112710000E2,5.312122754E1 +6.115670000E2,5.745102631E1 +6.118550000E2,5.535536940E1 +6.121540000E2,5.088728731E1 +6.123960000E2,5.266907791E1 +6.126860000E2,5.386493253E1 +6.130010000E2,5.670623073E1 +6.132810000E2,5.563278655E1 +6.135150000E2,5.267172926E1 +6.138540000E2,5.386148816E1 +6.141880000E2,5.716468210E1 +6.144880000E2,5.526918781E1 +6.147190000E2,5.659553915E1 +6.149610000E2,5.648341007E1 +6.152730000E2,5.711745846E1 +6.155520000E2,5.918800114E1 +6.158010000E2,5.642548609E1 +6.161000000E2,5.635896926E1 +6.163480000E2,5.899225051E1 +6.166180000E2,5.374343244E1 +6.168690000E2,4.891042404E1 +6.172050000E2,5.065835680E1 +6.174560000E2,5.685264653E1 +6.177340000E2,5.429270039E1 +6.179930000E2,5.499548313E1 +6.182940000E2,5.407177565E1 +6.185300000E2,5.356533799E1 +6.188300000E2,5.378190643E1 +6.191140000E2,5.189020817E1 +6.193870000E2,5.046647494E1 +6.196450000E2,5.501107364E1 +6.198910000E2,5.798814538E1 +6.201660000E2,5.360844474E1 +6.205080000E2,5.353935610E1 +6.208080000E2,5.620189936E1 +6.210820000E2,6.216008765E1 +6.213360000E2,5.767015155E1 +6.216520000E2,6.210101060E1 +6.219320000E2,5.928042926E1 +6.221800000E2,6.394496555E1 +6.224980000E2,5.872213561E1 +6.227430000E2,5.927091626E1 +6.230010000E2,5.235592166E1 +6.232430000E2,6.313120608E1 +6.235470000E2,6.005436888E1 +6.238480000E2,5.999836557E1 +6.240930000E2,5.879748041E1 +6.243920000E2,5.978277378E1 +6.246440000E2,6.050724590E1 +6.249480000E2,6.282777276E1 +6.252520000E2,6.080897043E1 +6.255640000E2,5.889462949E1 +6.258270000E2,5.550476615E1 +6.260730000E2,5.586785505E1 +6.263620000E2,6.576560120E1 +6.266590000E2,6.102361259E1 +6.270050000E2,6.110507706E1 +6.272870000E2,5.753592100E1 +6.275410000E2,6.297666729E1 +6.278490000E2,6.037594793E1 +6.281160000E2,5.849898506E1 +6.284180000E2,6.165631601E1 +6.287090000E2,6.096774109E1 +6.289510000E2,6.176590968E1 +6.292460000E2,5.947061017E1 +6.294820000E2,6.109202024E1 +6.297790000E2,5.322559935E1 +6.301160000E2,4.971181861E1 +6.303880000E2,5.533921521E1 +6.307250000E2,5.478410742E1 +6.310240000E2,5.647795083E1 +6.313200000E2,5.797504265E1 +6.315690000E2,5.403019222E1 +6.318640000E2,5.301910781E1 +6.321010000E2,5.096544207E1 +6.324030000E2,5.324435941E1 +6.326360000E2,5.447050361E1 +6.328960000E2,5.932781903E1 +6.331500000E2,5.967228428E1 +6.334640000E2,6.319489971E1 +6.337810000E2,5.820271574E1 +6.340710000E2,5.910289699E1 +6.343170000E2,5.681937370E1 +6.346260000E2,5.582227275E1 +6.349350000E2,5.745831651E1 +6.352100000E2,5.504019385E1 +6.354620000E2,5.072303887E1 +6.357190000E2,5.366082959E1 +6.359690000E2,5.380227314E1 +6.362560000E2,4.818205454E1 +6.365090000E2,5.989908626E1 +6.368780000E2,5.659012846E1 +6.371610000E2,5.593157997E1 +6.374460000E2,5.135237935E1 +6.377000000E2,5.687788515E1 +6.379550000E2,5.943975502E1 +6.382630000E2,6.290957992E1 +6.385230000E2,5.827099811E1 +6.387780000E2,5.686391746E1 +6.390620000E2,5.771790911E1 +6.393200000E2,5.390066131E1 +6.395830000E2,5.358231960E1 +6.398480000E2,5.564565007E1 +6.401490000E2,5.205482155E1 +6.404200000E2,5.852280051E1 +6.407340000E2,4.836326193E1 +6.409980000E2,5.905115701E1 +6.412560000E2,5.622349390E1 +6.415040000E2,5.891737338E1 +6.417460000E2,5.749377856E1 +6.420310000E2,5.414095183E1 +6.422680000E2,5.482109112E1 +6.425170000E2,5.202942051E1 +6.428000000E2,4.903409276E1 +6.431250000E2,5.495098254E1 +6.434650000E2,5.777911761E1 +6.437680000E2,5.329076638E1 +6.440080000E2,5.886592322E1 +6.443070000E2,5.661637111E1 +6.445560000E2,5.459133399E1 +6.448230000E2,4.858613706E1 +6.450990000E2,5.642020356E1 +6.453590000E2,5.634614530E1 +6.456240000E2,5.769024626E1 +6.458900000E2,6.037646239E1 +6.461470000E2,5.712013563E1 +6.464260000E2,5.393237723E1 +6.467570000E2,5.443825449E1 +6.469850000E2,5.464133184E1 +6.472460000E2,5.185343249E1 +6.475170000E2,5.670688718E1 +6.477900000E2,5.808659132E1 +6.480150000E2,5.879711687E1 +6.483250000E2,5.860991669E1 +6.485730000E2,5.600484597E1 +6.488230000E2,5.291438286E1 +6.491020000E2,5.869236753E1 +6.493260000E2,5.826316690E1 +6.496250000E2,5.619306699E1 +6.499850000E2,6.085970714E1 +6.502400000E2,6.051231588E1 +6.505400000E2,6.096601072E1 +6.507990000E2,6.197068990E1 +6.511180000E2,6.520817743E1 +6.513810000E2,6.377577246E1 +6.516860000E2,6.105485617E1 +6.519940000E2,5.890751001E1 +6.522910000E2,5.911253604E1 +6.525370000E2,6.291937986E1 +6.528540000E2,6.252638881E1 +6.532210000E2,6.337356348E1 +6.535270000E2,5.894334263E1 +6.537830000E2,5.754939005E1 +6.540930000E2,5.500698560E1 +6.543880000E2,5.014350898E1 +6.546880000E2,5.646260920E1 +6.549870000E2,5.951282585E1 +6.552920000E2,6.099782791E1 +6.555480000E2,6.065538365E1 +6.558100000E2,6.827371953E1 +6.560790000E2,6.035931154E1 +6.563820000E2,6.267306134E1 +6.566350000E2,5.826452213E1 +6.568970000E2,6.092938143E1 +6.572010000E2,6.534130041E1 +6.575130000E2,6.111837506E1 +6.577770000E2,5.826481723E1 +6.580330000E2,5.918147323E1 +6.582980000E2,6.100230752E1 +6.585510000E2,6.302217459E1 +6.588060000E2,5.754956715E1 +6.591080000E2,6.111201710E1 +6.593520000E2,6.017410469E1 +6.597040000E2,6.031944923E1 +6.599450000E2,5.943575512E1 +6.602120000E2,5.868776340E1 +6.605570000E2,5.940543513E1 +6.608500000E2,5.886327816E1 +6.610920000E2,5.770522648E1 +6.613840000E2,5.442777508E1 +6.616200000E2,5.394232060E1 +6.619220000E2,5.856638842E1 +6.622160000E2,5.742664400E1 +6.624600000E2,5.472498345E1 +6.627560000E2,5.672985390E1 +6.629770000E2,5.834702318E1 +6.632250000E2,5.907602823E1 +6.634810000E2,5.873031221E1 +6.637670000E2,5.757130737E1 +6.640040000E2,5.572185824E1 +6.643070000E2,5.959142979E1 +6.645480000E2,5.851623707E1 +6.648520000E2,5.856887935E1 +6.650940000E2,6.397218192E1 +6.653890000E2,5.963692586E1 +6.656210000E2,5.934207027E1 +6.659580000E2,5.667856430E1 +6.662640000E2,5.811017468E1 +6.665550000E2,5.505265787E1 +6.667990000E2,5.558350894E1 +6.671320000E2,6.063017800E1 +6.674000000E2,5.568411381E1 +6.676510000E2,5.981422062E1 +6.679580000E2,5.723024768E1 +6.682820000E2,5.036028104E1 +6.685240000E2,5.199205823E1 +6.687970000E2,5.367328475E1 +6.691280000E2,5.936914884E1 +6.693940000E2,5.657797691E1 +6.696490000E2,6.065879377E1 +6.699270000E2,5.657054255E1 +6.702000000E2,5.655716576E1 +6.704770000E2,5.823562265E1 +6.707350000E2,6.065030224E1 +6.710140000E2,6.110776530E1 +6.712700000E2,5.714357796E1 +6.715170000E2,5.604236164E1 +6.717930000E2,6.041748871E1 +6.721240000E2,6.019765334E1 +6.724270000E2,5.928602786E1 +6.727750000E2,5.973060669E1 +6.730710000E2,6.059869751E1 +6.733250000E2,6.116850166E1 +6.736400000E2,6.145214709E1 +6.738890000E2,6.020118097E1 +6.741670000E2,6.048579637E1 +6.744720000E2,6.225337088E1 +6.747550000E2,5.853636068E1 +6.750030000E2,5.999204871E1 +6.752840000E2,5.433989895E1 +6.755100000E2,5.847308735E1 +6.758420000E2,5.913726954E1 +6.760830000E2,6.049449503E1 +6.763830000E2,5.545572399E1 +6.766370000E2,6.246077536E1 +6.768920000E2,6.029598130E1 +6.771340000E2,6.005864514E1 +6.774230000E2,6.582269585E1 +6.776700000E2,6.255104294E1 +6.779140000E2,6.623711836E1 +6.781740000E2,6.684819787E1 +6.784850000E2,6.877250850E1 +6.787420000E2,6.157084767E1 +6.789860000E2,6.054068573E1 +6.793290000E2,6.069583213E1 +6.795810000E2,6.124898856E1 +6.798240000E2,6.136691849E1 +6.800900000E2,6.035594762E1 +6.803920000E2,5.654106541E1 +6.806920000E2,5.587565134E1 +6.809940000E2,5.642134155E1 +6.813020000E2,5.749983358E1 +6.815830000E2,5.576151961E1 +6.818120000E2,5.714589311E1 +6.820580000E2,5.969510914E1 +6.823020000E2,5.824123453E1 +6.825680000E2,5.779273115E1 +6.828630000E2,5.699644891E1 +6.831010000E2,5.900876644E1 +6.833500000E2,6.335540424E1 +6.835940000E2,6.280432027E1 +6.838340000E2,6.194675910E1 +6.841290000E2,5.801082069E1 +6.843650000E2,5.652506879E1 +6.846570000E2,5.895404856E1 +6.848910000E2,5.873705448E1 +6.851950000E2,5.589704153E1 +6.855380000E2,5.379672362E1 +6.857910000E2,6.287056471E1 +6.860900000E2,6.081817617E1 +6.863340000E2,6.807593043E1 +6.866320000E2,5.604389930E1 +6.868800000E2,6.712075434E1 +6.871750000E2,6.290238552E1 +6.874740000E2,6.473105179E1 +6.877330000E2,5.873835234E1 +6.880180000E2,5.800563858E1 +6.882620000E2,5.540095032E1 +6.885810000E2,6.197881428E1 +6.888280000E2,5.541258482E1 +6.890890000E2,5.558277465E1 +6.894010000E2,4.965923685E1 +6.897080000E2,4.860020107E1 +6.899730000E2,5.608167548E1 +6.902300000E2,5.381305593E1 +6.904990000E2,6.079286270E1 +6.908000000E2,6.446965644E1 +6.910380000E2,6.556266140E1 +6.913400000E2,5.418444209E1 +6.916350000E2,5.205102491E1 +6.919820000E2,5.812981404E1 +6.922410000E2,6.500705260E1 +6.925070000E2,6.149947285E1 +6.927750000E2,5.695315316E1 +6.930870000E2,5.775854948E1 +6.933870000E2,6.523399833E1 +6.936300000E2,6.692630865E1 +6.939270000E2,5.793447825E1 +6.942230000E2,5.746396110E1 +6.944770000E2,6.017975210E1 +6.947150000E2,5.956759439E1 +6.950320000E2,6.391288151E1 +6.953110000E2,6.484415086E1 +6.955650000E2,6.664209540E1 +6.958410000E2,6.746668632E1 +6.961050000E2,5.775664920E1 +6.964050000E2,6.383035698E1 +6.967020000E2,5.816763892E1 +6.969600000E2,6.921190909E1 +6.972400000E2,6.165047809E1 +6.975080000E2,5.666810057E1 +6.977540000E2,6.417546300E1 +6.980020000E2,5.788971486E1 +6.982730000E2,5.486922606E1 +6.985850000E2,5.576434723E1 +6.988820000E2,5.548978795E1 +6.991460000E2,5.886820316E1 +6.993970000E2,6.226406326E1 +6.996480000E2,5.601534080E1 +6.999400000E2,5.901385758E1 +7.002040000E2,5.720709772E1 +7.005120000E2,6.318399213E1 +7.007580000E2,6.338981741E1 +7.010170000E2,6.747312486E1 +7.012670000E2,5.788999692E1 +7.015450000E2,4.434465006E1 +7.018710000E2,6.439013955E1 +7.021480000E2,5.375342664E1 +7.023700000E2,6.398282027E1 +7.026160000E2,5.857909138E1 +7.029130000E2,5.670439641E1 +7.031590000E2,5.749786365E1 +7.034320000E2,5.181710985E1 +7.036770000E2,5.871535868E1 +7.039520000E2,5.470297527E1 +7.042240000E2,5.771822323E1 +7.044750000E2,5.236261523E1 +7.047130000E2,5.595332709E1 +7.050480000E2,5.576748295E1 +7.053040000E2,5.334869600E1 +7.055590000E2,5.337806625E1 +7.058180000E2,5.499892680E1 +7.060900000E2,5.490963435E1 +7.063980000E2,5.551078540E1 +7.066680000E2,5.358868238E1 +7.069300000E2,5.203182642E1 +7.071760000E2,5.771053387E1 +7.074630000E2,5.175835182E1 +7.077440000E2,5.402526598E1 +7.080400000E2,5.754717994E1 +7.083470000E2,6.103880587E1 +7.086400000E2,6.284824916E1 +7.088840000E2,6.674666322E1 +7.092010000E2,6.194114278E1 +7.094980000E2,5.796289911E1 +7.097580000E2,5.475547679E1 +7.100170000E2,5.804024708E1 +7.102650000E2,5.606423134E1 +7.105550000E2,5.319247933E1 +7.107930000E2,5.625991375E1 +7.110940000E2,5.589539698E1 +7.114730000E2,6.073460415E1 +7.117930000E2,6.208342045E1 +7.120530000E2,6.335117127E1 +7.123290000E2,5.821275565E1 +7.126280000E2,5.793160357E1 +7.128780000E2,5.509944006E1 +7.131790000E2,5.578357696E1 +7.134760000E2,5.632534225E1 +7.137350000E2,5.466315647E1 +7.140450000E2,5.914530785E1 +7.143020000E2,6.280432125E1 +7.146020000E2,6.333348539E1 +7.149790000E2,5.698482465E1 +7.152920000E2,5.474810308E1 +7.155370000E2,5.417920207E1 +7.157880000E2,6.392184792E1 +7.160720000E2,6.565549591E1 +7.163130000E2,6.082705714E1 +7.166120000E2,5.816285927E1 +7.168430000E2,5.809201859E1 +7.170930000E2,6.016105207E1 +7.173350000E2,5.162287691E1 +7.176230000E2,5.754317879E1 +7.179310000E2,6.166304542E1 +7.181770000E2,6.177004553E1 +7.184320000E2,6.274574776E1 +7.186900000E2,6.104994734E1 +7.189920000E2,5.735301480E1 +7.192340000E2,5.830205645E1 +7.194890000E2,6.212782217E1 +7.197420000E2,5.467685243E1 +7.200420000E2,5.313970583E1 +7.202920000E2,5.278680647E1 +7.205360000E2,5.474141102E1 +7.209140000E2,6.241771654E1 +7.212600000E2,6.394594172E1 +7.215560000E2,6.348358734E1 +7.217980000E2,6.112734048E1 +7.220450000E2,6.226451183E1 +7.222930000E2,6.534082516E1 +7.225960000E2,6.114019283E1 +7.228390000E2,6.421228964E1 +7.231230000E2,6.814847387E1 +7.233690000E2,6.275446304E1 +7.236190000E2,6.679153921E1 +7.239280000E2,6.537583699E1 +7.241850000E2,6.212976374E1 +7.245300000E2,6.553556935E1 +7.248220000E2,5.834030427E1 +7.250930000E2,5.992153646E1 +7.253380000E2,5.595099295E1 +7.256370000E2,5.720822528E1 +7.258800000E2,5.423516872E1 +7.261770000E2,5.906139652E1 +7.264140000E2,6.204477132E1 +7.267140000E2,6.368823365E1 +7.269550000E2,6.513672214E1 +7.272500000E2,6.364997971E1 +7.275370000E2,6.269941998E1 +7.278570000E2,5.948773609E1 +7.281020000E2,5.789544973E1 +7.283740000E2,6.305528689E1 +7.286400000E2,6.245554089E1 +7.289690000E2,6.033221518E1 +7.292310000E2,5.940071821E1 +7.294970000E2,6.176178101E1 +7.298020000E2,5.355172623E1 +7.300580000E2,5.535292187E1 +7.303150000E2,5.274398781E1 +7.305750000E2,5.399957194E1 +7.308780000E2,5.819691646E1 +7.312070000E2,5.434897588E1 +7.315090000E2,6.041787911E1 +7.317850000E2,5.617860881E1 +7.320560000E2,5.558770875E1 +7.323290000E2,5.151264449E1 +7.325860000E2,5.612143969E1 +7.328800000E2,5.405001557E1 +7.331120000E2,5.455354216E1 +7.334090000E2,5.716252136E1 +7.337070000E2,6.416157102E1 +7.339910000E2,6.098010142E1 +7.343020000E2,6.194029449E1 +7.346500000E2,6.091313037E1 +7.349540000E2,5.846954669E1 +7.352410000E2,5.743489407E1 +7.355320000E2,5.872669957E1 +7.357800000E2,5.859080967E1 +7.360560000E2,6.053269456E1 +7.363220000E2,6.117884455E1 +7.366590000E2,5.809887850E1 +7.369420000E2,5.453224539E1 +7.372510000E2,5.639337460E1 +7.375040000E2,5.373613181E1 +7.378630000E2,5.066236714E1 +7.381160000E2,4.653740377E1 +7.383650000E2,6.375011526E1 +7.386730000E2,6.282181577E1 +7.389830000E2,6.727660972E1 +7.392340000E2,6.413328322E1 +7.394790000E2,6.184881400E1 +7.397290000E2,6.430634497E1 +7.400250000E2,6.276256291E1 +7.402610000E2,6.297441350E1 +7.405590000E2,5.306586823E1 +7.408610000E2,5.403016569E1 +7.412260000E2,5.749263443E1 +7.415060000E2,5.657932114E1 +7.417820000E2,5.532222303E1 +7.420430000E2,5.911133378E1 +7.423450000E2,5.822379827E1 +7.426470000E2,6.311870884E1 +7.428860000E2,5.964121243E1 +7.431940000E2,5.708688763E1 +7.434960000E2,5.782189241E1 +7.437480000E2,5.745118469E1 +7.440380000E2,5.258772989E1 +7.442830000E2,5.325984780E1 +7.445410000E2,5.216709684E1 +7.447900000E2,5.485283680E1 +7.450520000E2,6.638751453E1 +7.453640000E2,6.256149725E1 +7.456370000E2,6.851667797E1 +7.459020000E2,6.356784575E1 +7.462040000E2,6.586178842E1 +7.464510000E2,6.099626883E1 +7.467420000E2,6.874341983E1 +7.470300000E2,5.690479739E1 +7.472670000E2,5.749513215E1 +7.475860000E2,5.743840209E1 +7.478480000E2,6.695338823E1 +7.481550000E2,6.575566103E1 +7.484170000E2,6.244751264E1 +7.486690000E2,6.206430480E1 +7.489520000E2,5.755143157E1 +7.492450000E2,6.343498072E1 +7.494820000E2,6.599354682E1 +7.497800000E2,5.994269627E1 +7.500210000E2,6.480563885E1 +7.503160000E2,5.962320355E1 +7.505550000E2,5.907805627E1 +7.508860000E2,5.452673237E1 +7.511450000E2,5.413358853E1 +7.514110000E2,5.786691992E1 +7.516870000E2,6.185088179E1 +7.519570000E2,5.432685780E1 +7.522050000E2,5.297819944E1 +7.524920000E2,5.290855554E1 +7.527910000E2,5.828859659E1 +7.530300000E2,5.880189294E1 +7.533360000E2,5.500578631E1 +7.535910000E2,5.476677878E1 +7.538330000E2,5.414240587E1 +7.541650000E2,5.332866170E1 +7.544620000E2,5.193802785E1 +7.547080000E2,5.242932681E1 +7.549590000E2,6.024921863E1 +7.552020000E2,5.537701523E1 +7.554960000E2,5.489617845E1 +7.557330000E2,5.384280286E1 +7.560410000E2,5.406125999E1 +7.562870000E2,5.246560959E1 +7.565320000E2,5.374729291E1 +7.567680000E2,5.542801483E1 +7.570630000E2,5.525770987E1 +7.573930000E2,5.847670432E1 +7.576660000E2,5.822188632E1 +7.579180000E2,5.822901451E1 +7.582040000E2,5.458975346E1 +7.584820000E2,5.438683247E1 +7.587800000E2,5.260449368E1 +7.590260000E2,5.371245859E1 +7.592870000E2,4.983203663E1 +7.595420000E2,5.018089077E1 +7.598380000E2,5.950969681E1 +7.601480000E2,5.769305363E1 +7.604800000E2,5.747567937E1 +7.607190000E2,5.446335810E1 +7.610040000E2,5.463229896E1 +7.612970000E2,5.644916160E1 +7.615560000E2,5.809520116E1 +7.618460000E2,5.406577519E1 +7.621050000E2,5.362277750E1 +7.623930000E2,5.868559294E1 +7.626230000E2,5.548744129E1 +7.628890000E2,5.613986675E1 +7.631890000E2,5.592058678E1 +7.634870000E2,5.947938191E1 +7.638120000E2,5.945990241E1 +7.640830000E2,5.354091788E1 +7.643270000E2,5.910847411E1 +7.645670000E2,6.112853730E1 +7.648120000E2,5.617469613E1 +7.650520000E2,5.678172470E1 +7.653190000E2,5.293731054E1 +7.655730000E2,5.571573154E1 +7.658430000E2,5.239475172E1 +7.660900000E2,5.710555790E1 +7.663840000E2,5.593714408E1 +7.666500000E2,5.506488062E1 +7.669100000E2,5.276148627E1 +7.671530000E2,5.087813070E1 +7.674500000E2,4.966858228E1 +7.677070000E2,4.690170064E1 +7.679870000E2,5.097718665E1 +7.682460000E2,5.173969669E1 +7.685220000E2,5.562988056E1 +7.687630000E2,5.194720020E1 +7.690630000E2,5.590118249E1 +7.693610000E2,5.613585205E1 +7.696030000E2,5.417299550E1 +7.698530000E2,5.925774948E1 +7.702010000E2,5.729895975E1 +7.704610000E2,5.765570707E1 +7.707610000E2,6.211008380E1 +7.710570000E2,5.846530012E1 +7.712970000E2,5.766544416E1 +7.715460000E2,5.716238768E1 +7.718080000E2,5.700535494E1 +7.720510000E2,5.592606747E1 +7.723260000E2,5.771214429E1 +7.725940000E2,5.753442175E1 +7.728830000E2,5.541298336E1 +7.731860000E2,5.137853822E1 +7.735420000E2,5.462649470E1 +7.738320000E2,5.454281912E1 +7.740820000E2,6.803752283E1 +7.743260000E2,6.852980541E1 +7.745820000E2,7.007631543E1 +7.748270000E2,7.009876218E1 +7.751160000E2,6.950363051E1 +7.753520000E2,6.338954984E1 +7.755910000E2,5.500200077E1 +7.758880000E2,5.358702362E1 +7.761340000E2,5.718303470E1 +7.763730000E2,5.887519420E1 +7.767050000E2,5.795457078E1 +7.769970000E2,5.796499201E1 +7.773000000E2,5.644912180E1 +7.775570000E2,5.804780214E1 +7.778740000E2,5.958528627E1 +7.781300000E2,5.635913866E1 +7.784430000E2,5.593106857E1 +7.787280000E2,6.063168213E1 +7.789960000E2,5.917208792E1 +7.792560000E2,5.719923422E1 +7.795050000E2,6.400429125E1 +7.797680000E2,5.733192807E1 +7.800440000E2,6.018331087E1 +7.803000000E2,6.350407169E1 +7.805530000E2,6.357762743E1 +7.808590000E2,6.772563953E1 +7.811430000E2,6.431848914E1 +7.814050000E2,5.710721917E1 +7.816950000E2,5.646111127E1 +7.819500000E2,5.564600214E1 +7.822050000E2,6.362802489E1 +7.824550000E2,6.278310471E1 +7.827010000E2,5.851995741E1 +7.829620000E2,5.759567059E1 +7.832630000E2,5.449669640E1 +7.835070000E2,6.040303881E1 +7.837500000E2,5.743841461E1 +7.839990000E2,6.096558185E1 +7.842840000E2,7.161293257E1 +7.845270000E2,7.417435903E1 +7.848410000E2,6.386070968E1 +7.851390000E2,6.234904760E1 +7.854350000E2,6.321731436E1 +7.856820000E2,6.294103551E1 +7.859780000E2,6.210337552E1 +7.862150000E2,6.765383904E1 +7.865650000E2,6.346682761E1 +7.868610000E2,6.221020232E1 +7.871280000E2,6.119530731E1 +7.873850000E2,5.314248269E1 +7.876880000E2,5.288680780E1 +7.879230000E2,5.064349321E1 +7.882230000E2,5.786336298E1 +7.884630000E2,5.341864841E1 +7.887250000E2,5.286568073E1 +7.890140000E2,5.272997567E1 +7.893180000E2,5.904110581E1 +7.896690000E2,5.748622391E1 +7.899200000E2,5.773986136E1 +7.902160000E2,5.480967078E1 +7.904710000E2,5.627241382E1 +7.907280000E2,5.456362797E1 +7.909900000E2,5.766408512E1 +7.912380000E2,5.413586400E1 +7.914940000E2,5.234403284E1 +7.917720000E2,5.190170354E1 +7.920440000E2,5.227759392E1 +7.923170000E2,4.410400383E1 +7.926220000E2,3.508270700E1 +7.929370000E2,3.887828085E1 +7.932030000E2,4.522069604E1 +7.934660000E2,4.928233980E1 +7.937420000E2,4.706401379E1 +7.940710000E2,4.988989997E1 +7.943700000E2,5.767827889E1 +7.946060000E2,5.506606719E1 +7.949050000E2,6.107887773E1 +7.952060000E2,5.849609892E1 +7.955030000E2,5.343173328E1 +7.957490000E2,5.007726003E1 +7.960580000E2,4.763873915E1 +7.963010000E2,5.045894898E1 +7.966040000E2,6.859700710E1 +7.968900000E2,6.734256534E1 +7.971550000E2,6.661489392E1 +7.974110000E2,6.556398865E1 +7.976580000E2,5.519705677E1 +7.979230000E2,5.503316479E1 +7.982060000E2,5.955770829E1 +7.984280000E2,5.777834711E1 +7.987260000E2,6.050467535E1 +7.989700000E2,5.583639573E1 +7.993330000E2,5.988908902E1 +7.995750000E2,5.875791040E1 +7.998670000E2,6.166637478E1 +8.001160000E2,5.690435901E1 +8.004160000E2,5.599911293E1 +8.006610000E2,5.889628547E1 +8.009180000E2,6.227540789E1 +8.011740000E2,6.572663811E1 +8.014300000E2,6.013467784E1 +8.016770000E2,6.250368579E1 +8.019910000E2,6.532292099E1 +8.023560000E2,5.377170031E1 +8.026370000E2,5.535595108E1 +8.029110000E2,5.147526495E1 +8.031720000E2,4.993046061E1 +8.034760000E2,6.394035794E1 +8.037260000E2,5.983119170E1 +8.040270000E2,5.967243802E1 +8.042930000E2,6.559340840E1 +8.046100000E2,5.262215496E1 +8.049160000E2,5.397812040E1 +8.051780000E2,5.680330381E1 +8.054740000E2,5.857171626E1 +8.058060000E2,5.577198454E1 +8.060880000E2,5.916891157E1 +8.063460000E2,6.120078548E1 +8.066060000E2,6.223167379E1 +8.069230000E2,6.161077093E1 +8.071720000E2,5.812180846E1 +8.074300000E2,5.665535607E1 +8.077230000E2,5.401482687E1 +8.079600000E2,5.631804256E1 +8.082610000E2,5.267806276E1 +8.085540000E2,5.766120113E1 +8.088100000E2,5.717509884E1 +8.091690000E2,5.698714543E1 +8.094130000E2,5.807918354E1 +8.096940000E2,5.364566959E1 +8.099320000E2,5.678502402E1 +8.102110000E2,5.494444844E1 +8.104710000E2,6.216218230E1 +8.107550000E2,5.504588420E1 +8.110030000E2,5.220186059E1 +8.112810000E2,5.338487037E1 +8.115430000E2,5.422122114E1 +8.118180000E2,6.217546099E1 +8.121430000E2,5.739027439E1 +8.124800000E2,5.218554734E1 +8.128080000E2,6.183667492E1 +8.130850000E2,6.028246668E1 +8.133620000E2,6.620979851E1 +8.135950000E2,5.810667246E1 +8.138630000E2,6.096670869E1 +8.141300000E2,5.149777407E1 +8.143960000E2,4.993954713E1 +8.146400000E2,5.196561010E1 +8.149350000E2,5.727966309E1 +8.151710000E2,5.489316784E1 +8.154100000E2,5.619291420E1 +8.157500000E2,5.425831711E1 +8.160430000E2,5.677079709E1 +8.163250000E2,5.289383275E1 +8.165600000E2,5.573749616E1 +8.168090000E2,5.211960412E1 +8.170840000E2,5.029895102E1 +8.173170000E2,5.085418245E1 +8.175630000E2,5.101392152E1 +8.178870000E2,5.228690479E1 +8.182130000E2,5.919931006E1 +8.184680000E2,5.288617356E1 +8.188320000E2,5.626269479E1 +8.191030000E2,6.124827198E1 +8.193870000E2,5.889071517E1 +8.196160000E2,5.957980623E1 +8.199180000E2,5.440069788E1 +8.201590000E2,5.524226830E1 +8.204560000E2,5.147688867E1 +8.206870000E2,5.390780082E1 +8.209820000E2,6.509870984E1 +8.212270000E2,6.421388309E1 +8.215230000E2,5.843840462E1 +8.218170000E2,5.422512027E1 +8.221280000E2,5.468614274E1 +8.223780000E2,5.922850585E1 +8.226710000E2,6.486031186E1 +8.229330000E2,6.154967201E1 +8.232420000E2,5.893257410E1 +8.235100000E2,6.020329639E1 +8.238290000E2,5.483779552E1 +8.240760000E2,5.692914998E1 +8.243280000E2,6.347347085E1 +8.245930000E2,5.345306004E1 +8.248670000E2,6.141647052E1 +8.252000000E2,5.672783001E1 +8.254550000E2,5.605661334E1 +8.257610000E2,5.699330885E1 +8.260410000E2,5.489256860E1 +8.263010000E2,6.262090025E1 +8.265830000E2,5.457719262E1 +8.268180000E2,5.416382407E1 +8.271260000E2,4.993919751E1 +8.273700000E2,5.569569056E1 +8.276330000E2,5.514364162E1 +8.278890000E2,5.653204472E1 +8.281470000E2,5.784406489E1 +8.284370000E2,5.752811490E1 +8.286720000E2,5.727510089E1 +8.289650000E2,5.900575965E1 +8.292510000E2,5.679022390E1 +8.294860000E2,5.722234118E1 +8.297350000E2,5.952638514E1 +8.300320000E2,5.925181191E1 +8.302740000E2,5.930148258E1 +8.305160000E2,5.668145507E1 +8.307730000E2,5.590492759E1 +8.310130000E2,6.302930486E1 +8.312510000E2,5.733539345E1 +8.315800000E2,5.620349253E1 +8.318910000E2,5.495250031E1 +8.322000000E2,5.501979251E1 +8.324620000E2,5.208226415E1 +8.327390000E2,5.765748383E1 +8.329950000E2,5.489193423E1 +8.332490000E2,5.593428331E1 +8.335720000E2,5.714652117E1 +8.338250000E2,5.832769426E1 +8.341370000E2,5.884156077E1 +8.344030000E2,5.840498509E1 +8.347020000E2,5.864505811E1 +8.350330000E2,6.356982434E1 +8.353340000E2,6.286445683E1 +8.355720000E2,5.657384439E1 +8.358940000E2,5.660970318E1 +8.361720000E2,5.918731584E1 +8.364160000E2,5.825788220E1 +8.366580000E2,5.592754487E1 +8.369110000E2,5.553717092E1 +8.371910000E2,5.495027293E1 +8.374510000E2,5.546329287E1 +8.377420000E2,5.746402701E1 +8.379890000E2,5.891922359E1 +8.383130000E2,6.522858798E1 +8.385710000E2,6.384617776E1 +8.388430000E2,5.435088619E1 +8.390670000E2,5.460135210E1 +8.393610000E2,5.982769627E1 +8.396020000E2,5.936265195E1 +8.398550000E2,6.034701146E1 +8.401470000E2,6.875861473E1 +8.403840000E2,6.968788985E1 +8.406760000E2,6.653493651E1 +8.409120000E2,6.664139767E1 +8.412200000E2,6.195236791E1 +8.415280000E2,5.759269564E1 +8.418110000E2,5.704906263E1 +8.420770000E2,5.199124728E1 +8.423350000E2,5.625309672E1 +8.426060000E2,5.627754144E1 +8.428710000E2,6.285304788E1 +8.431220000E2,6.089762622E1 +8.434160000E2,5.828079525E1 +8.436650000E2,5.581703965E1 +8.439650000E2,5.326092983E1 +8.442070000E2,5.247397640E1 +8.444500000E2,5.104216729E1 +8.447560000E2,4.981466747E1 +8.450730000E2,5.794387296E1 +8.453210000E2,6.103400827E1 +8.455680000E2,6.053778141E1 +8.458610000E2,5.413066164E1 +8.461240000E2,5.591468697E1 +8.463740000E2,5.289659812E1 +8.466770000E2,6.014390988E1 +8.469740000E2,5.713983843E1 +8.472340000E2,5.457406708E1 +8.474800000E2,5.848999564E1 +8.478210000E2,5.310404619E1 +8.481040000E2,5.463633704E1 +8.483620000E2,5.329096892E1 +8.486670000E2,5.667645304E1 +8.489890000E2,5.540515985E1 +8.492420000E2,5.014593999E1 +8.495060000E2,5.019949668E1 +8.497660000E2,4.724526190E1 +8.500410000E2,4.632701850E1 +8.502660000E2,4.436725745E1 +8.505710000E2,5.273585220E1 +8.508470000E2,5.232501704E1 +8.511370000E2,5.177389205E1 +8.513940000E2,5.236772038E1 +8.516560000E2,4.869019062E1 +8.518980000E2,5.254056589E1 +8.521620000E2,5.441215371E1 +8.524060000E2,5.431954181E1 +8.526720000E2,4.873515026E1 +8.529820000E2,5.253291311E1 +8.532350000E2,5.201920339E1 +8.535330000E2,5.083296820E1 +8.537750000E2,5.373650683E1 +8.540560000E2,6.162621210E1 +8.543710000E2,6.137876928E1 +8.546190000E2,6.347980201E1 +8.548850000E2,6.480134627E1 +8.551390000E2,6.344943059E1 +8.553830000E2,6.653758852E1 +8.556910000E2,6.821811094E1 +8.559900000E2,6.564040109E1 +8.562480000E2,6.310710880E1 +8.565060000E2,5.625485760E1 +8.567860000E2,5.886920329E1 +8.570590000E2,5.638007706E1 +8.573180000E2,5.477312089E1 +8.576670000E2,5.402637072E1 +8.579310000E2,5.282806817E1 +8.582400000E2,5.743205922E1 +8.584770000E2,5.608834078E1 +8.587730000E2,5.917700537E1 +8.590950000E2,5.757076232E1 +8.593390000E2,5.680975976E1 +8.596110000E2,5.316092446E1 +8.598560000E2,5.634389465E1 +8.601130000E2,5.912558361E1 +8.603880000E2,5.827706684E1 +8.606370000E2,5.580056474E1 +8.609720000E2,5.622551838E1 +8.612190000E2,5.816090597E1 +8.614650000E2,5.710633258E1 +8.617260000E2,6.762679027E1 +8.619970000E2,6.050550643E1 +8.622480000E2,6.017289530E1 +8.624960000E2,5.884551198E1 +8.627510000E2,5.823958631E1 +8.630120000E2,5.747421536E1 +8.632920000E2,5.891926612E1 +8.635810000E2,5.962176090E1 +8.638680000E2,5.932606834E1 +8.642430000E2,6.035939553E1 +8.645920000E2,5.892740034E1 +8.649090000E2,6.158225090E1 +8.651650000E2,5.941856931E1 +8.654560000E2,5.517726055E1 +8.656900000E2,5.573554393E1 +8.659400000E2,6.300977067E1 +8.662170000E2,6.346838855E1 +8.664760000E2,5.840482341E1 +8.667600000E2,5.656477763E1 +8.669980000E2,5.809371706E1 +8.672500000E2,5.957523428E1 +8.675890000E2,5.868790884E1 +8.678670000E2,6.643274765E1 +8.681530000E2,6.202304252E1 +8.684260000E2,6.167390940E1 +8.686760000E2,6.561664622E1 +8.689220000E2,6.221849135E1 +8.691620000E2,5.873701255E1 +8.694080000E2,5.721335717E1 +8.696600000E2,5.775578048E1 +8.699210000E2,6.139190630E1 +8.702060000E2,5.695582014E1 +8.705330000E2,5.285782467E1 +8.708800000E2,5.254436807E1 +8.711320000E2,5.941119733E1 +8.714840000E2,5.561687107E1 +8.717890000E2,5.226341013E1 +8.720340000E2,5.351737673E1 +8.723120000E2,5.581753669E1 +8.725450000E2,5.544476975E1 +8.727930000E2,5.112331517E1 +8.731050000E2,5.669948434E1 +8.733660000E2,5.553741274E1 +8.736450000E2,5.287392842E1 +8.738710000E2,5.342755356E1 +8.742030000E2,5.525376809E1 +8.745760000E2,5.790146612E1 +8.748470000E2,5.775550126E1 +8.750900000E2,5.828043309E1 +8.753860000E2,5.689517506E1 +8.756490000E2,5.836000549E1 +8.759170000E2,5.887049385E1 +8.761640000E2,5.731343570E1 +8.764240000E2,5.947081752E1 +8.766660000E2,5.735732777E1 +8.769150000E2,5.791222148E1 +8.771870000E2,5.217820200E1 +8.775110000E2,5.373516267E1 +8.777550000E2,5.639663701E1 +8.779960000E2,5.308435393E1 +8.782370000E2,5.327040257E1 +8.785510000E2,5.539866825E1 +8.788050000E2,5.451580533E1 +8.791100000E2,5.664888244E1 +8.793670000E2,5.439058144E1 +8.796110000E2,6.546629591E1 +8.799090000E2,6.080313073E1 +8.801560000E2,6.023654065E1 +8.804070000E2,5.547022044E1 +8.807450000E2,5.933402552E1 +8.809880000E2,6.073235462E1 +8.812850000E2,5.811897337E1 +8.815210000E2,5.670873426E1 +8.818240000E2,6.239450766E1 +8.821160000E2,6.033779387E1 +8.823610000E2,5.921328684E1 +8.826600000E2,5.808215882E1 +8.828910000E2,5.927124720E1 +8.831280000E2,5.254346564E1 +8.834120000E2,5.755316817E1 +8.837180000E2,5.815703318E1 +8.840150000E2,5.925974643E1 +8.842610000E2,5.406291788E1 +8.845520000E2,5.892672719E1 +8.847970000E2,6.343231596E1 +8.850390000E2,6.045689612E1 +8.853340000E2,5.903303339E1 +8.855810000E2,5.897514906E1 +8.858230000E2,5.682843230E1 +8.860690000E2,4.647265993E1 +8.863400000E2,5.617216143E1 +8.865730000E2,5.412892937E1 +8.869100000E2,6.210166513E1 +8.872070000E2,6.369099543E1 +8.874540000E2,6.052073025E1 +8.877480000E2,6.125108403E1 +8.879990000E2,6.087163347E1 +8.882550000E2,6.365510666E1 +8.885320000E2,5.341778352E1 +8.887600000E2,5.238943476E1 +8.890050000E2,6.378561240E1 +8.892460000E2,6.182956815E1 +8.895070000E2,6.027537659E1 +8.897770000E2,5.747996426E1 +8.901220000E2,5.606477689E1 +8.903620000E2,5.816493441E1 +8.907030000E2,5.740436721E1 +8.909540000E2,5.812990427E1 +8.912060000E2,5.757163286E1 +8.914520000E2,5.669306215E1 +8.917150000E2,5.593698617E1 +8.919580000E2,5.867011196E1 +8.922060000E2,6.001129970E1 +8.924480000E2,6.247831114E1 +8.927080000E2,5.501506807E1 +8.929550000E2,5.918039480E1 +8.932790000E2,5.750337148E1 +8.935260000E2,5.382626014E1 +8.937850000E2,5.632583646E1 +8.940370000E2,5.552393419E1 +8.943380000E2,5.417609473E1 +8.946050000E2,5.314873345E1 +8.948570000E2,5.537690953E1 +8.951790000E2,6.168371256E1 +8.954540000E2,6.142331687E1 +8.957690000E2,5.914263764E1 +8.960690000E2,6.039127428E1 +8.963670000E2,5.303465172E1 +8.966720000E2,5.819495208E1 +8.969200000E2,5.956457754E1 +8.972240000E2,5.554166388E1 +8.974940000E2,5.700583380E1 +8.978160000E2,5.525596264E1 +8.981210000E2,5.878997726E1 +8.983720000E2,5.661289659E1 +8.986510000E2,6.039909322E1 +8.988730000E2,5.569487247E1 +8.991240000E2,5.857026750E1 +8.993800000E2,6.116905404E1 +8.996580000E2,6.331625006E1 +8.998890000E2,5.612470465E1 +9.001440000E2,5.098243988E1 +9.004020000E2,5.779474181E1 +9.006650000E2,5.597754805E1 +9.009440000E2,5.706395638E1 +9.012380000E2,5.989184595E1 +9.015000000E2,5.905145002E1 +9.017620000E2,5.913397617E1 +9.020230000E2,5.831976398E1 +9.022900000E2,5.400731512E1 +9.025900000E2,6.547285797E1 +9.029050000E2,6.534571775E1 +9.032100000E2,5.428834230E1 +9.034580000E2,4.919896084E1 +9.037180000E2,5.326934205E1 +9.039740000E2,5.135684539E1 +9.042700000E2,5.784030554E1 +9.045180000E2,5.789711892E1 +9.048150000E2,5.501985460E1 +9.050680000E2,5.394185103E1 +9.053920000E2,5.504541187E1 +9.056620000E2,5.574384904E1 +9.059260000E2,5.198297704E1 +9.062920000E2,5.507423148E1 +9.065460000E2,5.073979477E1 +9.068090000E2,5.409355601E1 +9.071500000E2,5.842003605E1 +9.074380000E2,6.323761852E1 +9.076890000E2,5.475142925E1 +9.079510000E2,5.285089191E1 +9.082580000E2,6.228883476E1 +9.085110000E2,6.229139223E1 +9.087590000E2,5.849936549E1 +9.090220000E2,6.382664868E1 +9.092560000E2,5.234586511E1 +9.095720000E2,5.506613760E1 +9.098700000E2,5.883918884E1 +9.101180000E2,5.722745073E1 +9.103980000E2,6.006905181E1 +9.106670000E2,6.333821195E1 +9.109390000E2,5.997503412E1 +9.111770000E2,5.691091005E1 +9.114250000E2,5.629684565E1 +9.117070000E2,5.944947286E1 +9.119370000E2,5.757115704E1 +9.122030000E2,5.617546709E1 +9.125090000E2,5.506166951E1 +9.128480000E2,5.345826069E1 +9.131070000E2,5.586702127E1 +9.133900000E2,6.075354367E1 +9.137040000E2,5.668960998E1 +9.139920000E2,5.584388878E1 +9.142800000E2,5.668519299E1 +9.145740000E2,5.400550993E1 +9.148220000E2,5.668991412E1 +9.150670000E2,5.455006531E1 +9.153720000E2,5.750041942E1 +9.156590000E2,5.756327349E1 +9.159630000E2,5.822694927E1 +9.162110000E2,5.764545771E1 +9.164660000E2,5.716015909E1 +9.167560000E2,5.136001811E1 +9.170200000E2,4.706951064E1 +9.172710000E2,4.999131008E1 +9.175180000E2,5.619976433E1 +9.178030000E2,5.463675948E1 +9.180580000E2,4.995546642E1 +9.183000000E2,5.328928391E1 +9.185570000E2,4.808104957E1 +9.188650000E2,5.411517612E1 +9.191080000E2,5.672946344E1 +9.194270000E2,5.737096863E1 +9.196850000E2,5.974051238E1 +9.199830000E2,5.656564726E1 +9.202340000E2,5.709524531E1 +9.204810000E2,5.408385116E1 +9.208240000E2,5.414410830E1 +9.210650000E2,5.638214177E1 +9.213330000E2,5.753313030E1 +9.216130000E2,5.354803656E1 +9.219120000E2,6.191736419E1 +9.221480000E2,5.734366551E1 +9.224580000E2,5.684475304E1 +9.228030000E2,6.045431811E1 +9.230950000E2,5.973057312E1 +9.233960000E2,5.537690593E1 +9.236620000E2,5.411771801E1 +9.239600000E2,5.513839001E1 +9.242140000E2,5.699753068E1 +9.244670000E2,6.643461088E1 +9.247300000E2,6.062391899E1 +9.250330000E2,5.798096332E1 +9.253240000E2,6.347140522E1 +9.255740000E2,6.166496817E1 +9.259250000E2,6.190058171E1 +9.261820000E2,6.329204590E1 +9.264380000E2,6.389135880E1 +9.267030000E2,5.917517639E1 +9.269480000E2,5.809772267E1 +9.272170000E2,5.733235238E1 +9.274780000E2,5.226841119E1 +9.277860000E2,5.876554483E1 +9.280720000E2,6.281089568E1 +9.283510000E2,5.368859448E1 +9.286400000E2,5.449014251E1 +9.289370000E2,5.589991313E1 +9.292390000E2,5.452044152E1 +9.294860000E2,5.574135623E1 +9.297800000E2,5.656551806E1 +9.300200000E2,5.368800996E1 +9.302990000E2,5.374372369E1 +9.305490000E2,5.520696346E1 +9.308500000E2,5.642038107E1 +9.311480000E2,5.958603376E1 +9.314510000E2,5.775531382E1 +9.316980000E2,5.561486787E1 +9.319610000E2,5.826734748E1 +9.322700000E2,5.604871965E1 +9.325550000E2,5.170668645E1 +9.328670000E2,5.089285684E1 +9.331190000E2,4.724853188E1 +9.333790000E2,4.756075237E1 +9.336260000E2,5.199039629E1 +9.338890000E2,4.980140945E1 +9.341620000E2,5.530081877E1 +9.344120000E2,5.549144740E1 +9.347250000E2,5.515929093E1 +9.349780000E2,5.399104933E1 +9.352760000E2,5.325801117E1 +9.356240000E2,5.040008457E1 +9.359420000E2,5.360316460E1 +9.361890000E2,5.191591881E1 +9.364390000E2,5.324554606E1 +9.366970000E2,5.654671572E1 +9.370100000E2,5.711795620E1 +9.372590000E2,5.478625541E1 +9.375950000E2,5.667621371E1 +9.378550000E2,5.463565976E1 +9.381050000E2,5.398825590E1 +9.383580000E2,5.436030102E1 +9.386390000E2,5.091983440E1 +9.389120000E2,5.286705124E1 +9.391550000E2,5.236775571E1 +9.394300000E2,5.738794921E1 +9.397170000E2,5.727939554E1 +9.399750000E2,6.319402051E1 +9.402560000E2,5.468250624E1 +9.405530000E2,5.641852830E1 +9.408670000E2,6.200700436E1 +9.411390000E2,6.163446308E1 +9.413860000E2,7.148312536E1 +9.416340000E2,6.050927243E1 +9.419040000E2,5.667078757E1 +9.421350000E2,5.749142651E1 +9.424700000E2,5.240604485E1 +9.427760000E2,5.466454134E1 +9.430280000E2,6.082141946E1 +9.433300000E2,6.003969647E1 +9.436110000E2,6.121195378E1 +9.438460000E2,5.625129518E1 +9.441420000E2,5.911131348E1 +9.443880000E2,5.468317436E1 +9.446840000E2,6.009033853E1 +9.449440000E2,5.906624737E1 +9.452490000E2,5.464875325E1 +9.455970000E2,5.384566268E1 +9.458510000E2,5.044039840E1 +9.461140000E2,5.035886237E1 +9.463820000E2,5.734112986E1 +9.466620000E2,5.229112628E1 +9.469690000E2,6.028523542E1 +9.472250000E2,5.837101422E1 +9.475000000E2,5.619491985E1 +9.477970000E2,5.364209552E1 +9.480560000E2,5.511055516E1 +9.483560000E2,5.308396885E1 +9.486650000E2,5.587440008E1 +9.490640000E2,5.273632850E1 +9.493730000E2,6.231816715E1 +9.496570000E2,6.253734875E1 +9.499030000E2,5.554720788E1 +9.501460000E2,5.631566079E1 +9.503970000E2,5.626896653E1 +9.506490000E2,5.691941114E1 +9.508990000E2,5.116659255E1 +9.511440000E2,4.922875084E1 +9.514130000E2,5.936693495E1 +9.517070000E2,5.638156112E1 +9.520200000E2,5.180629212E1 +9.523780000E2,4.998674108E1 +9.526570000E2,4.841587788E1 +9.529100000E2,5.028896526E1 +9.531650000E2,4.965921907E1 +9.534690000E2,4.493319669E1 +9.537260000E2,4.598612712E1 +9.539740000E2,5.276251951E1 +9.542810000E2,4.126037796E1 +9.545830000E2,4.737114191E1 +9.548330000E2,4.411553821E1 +9.550850000E2,4.440050708E1 +9.553840000E2,5.260541790E1 +9.556980000E2,5.273901651E1 +9.559710000E2,5.383409632E1 +9.562220000E2,5.239354977E1 +9.564980000E2,4.759742823E1 +9.568040000E2,5.239869448E1 +9.570530000E2,5.238241691E1 +9.573300000E2,5.227349879E1 +9.575630000E2,5.272394727E1 +9.578410000E2,5.414710772E1 +9.580970000E2,5.325895305E1 +9.583410000E2,5.577122645E1 +9.586370000E2,5.015645058E1 +9.590040000E2,5.173028231E1 +9.593040000E2,5.447959265E1 +9.595640000E2,5.484713415E1 +9.598110000E2,5.470137539E1 +9.601060000E2,5.878769788E1 +9.603740000E2,5.851189839E1 +9.606810000E2,5.400762096E1 +9.609290000E2,5.749049444E1 +9.611870000E2,5.241750519E1 +9.614480000E2,4.979747952E1 +9.616960000E2,5.096881110E1 +9.620030000E2,5.149804171E1 +9.623180000E2,5.481599911E1 +9.625540000E2,5.138365056E1 +9.628240000E2,5.235851031E1 +9.630470000E2,4.871540913E1 +9.632880000E2,5.651540461E1 +9.635860000E2,5.650278128E1 +9.638210000E2,5.704973755E1 +9.641160000E2,5.757712252E1 +9.643960000E2,5.881159691E1 +9.646600000E2,5.355579494E1 +9.649750000E2,5.539751700E1 +9.652910000E2,4.797714339E1 +9.655520000E2,5.082548637E1 +9.658080000E2,5.579830605E1 +9.660780000E2,5.554406278E1 +9.663250000E2,5.354814316E1 +9.665660000E2,5.463107171E1 +9.668090000E2,5.368692433E1 +9.671300000E2,5.364867335E1 +9.674540000E2,5.468973775E1 +9.677060000E2,5.815904844E1 +9.680020000E2,5.598522308E1 +9.682480000E2,5.541083624E1 +9.685850000E2,5.512396132E1 +9.688400000E2,5.530796688E1 +9.691210000E2,5.433954611E1 +9.693810000E2,5.507440645E1 +9.696820000E2,5.086817906E1 +9.699140000E2,5.696191489E1 +9.701640000E2,5.845256581E1 +9.704420000E2,5.620226260E1 +9.706770000E2,5.629047170E1 +9.709750000E2,5.811655252E1 +9.712290000E2,5.703185419E1 +9.714900000E2,5.716734774E1 +9.718450000E2,5.493596869E1 +9.720910000E2,5.909437017E1 +9.723380000E2,5.710675060E1 +9.725910000E2,5.780279559E1 +9.728920000E2,5.860060144E1 +9.731360000E2,6.078900999E1 +9.734260000E2,5.852116194E1 +9.736640000E2,5.905899453E1 +9.739130000E2,5.636299630E1 +9.742090000E2,6.289355999E1 +9.744870000E2,6.167909115E1 +9.747290000E2,6.098057792E1 +9.750690000E2,5.906667343E1 +9.753320000E2,6.018572501E1 +9.756150000E2,5.718512970E1 +9.759100000E2,5.146063018E1 +9.761570000E2,5.733244632E1 +9.764050000E2,5.368365894E1 +9.766600000E2,5.486016267E1 +9.769150000E2,5.908582599E1 +9.771910000E2,5.733773036E1 +9.774400000E2,5.566361416E1 +9.777680000E2,5.819125256E1 +9.781220000E2,5.947694304E1 +9.783640000E2,6.140057637E1 +9.786330000E2,5.721849738E1 +9.788550000E2,5.617504209E1 +9.791010000E2,5.660293849E1 +9.793960000E2,5.174001770E1 +9.796880000E2,5.083474014E1 +9.799290000E2,5.184104339E1 +9.801850000E2,5.025385313E1 +9.804850000E2,5.286605500E1 +9.807270000E2,5.586849562E1 +9.809750000E2,5.666036754E1 +9.812950000E2,5.248500918E1 +9.815810000E2,5.416072977E1 +9.818360000E2,5.799655965E1 +9.821300000E2,5.801841935E1 +9.823770000E2,5.977514968E1 +9.826270000E2,5.676871456E1 +9.828850000E2,5.104814549E1 +9.831730000E2,5.834620153E1 +9.834010000E2,5.660640582E1 +9.836620000E2,5.686451748E1 +9.839750000E2,5.998440952E1 +9.842240000E2,5.556687478E1 +9.846000000E2,5.811069315E1 +9.848430000E2,5.843499893E1 +9.851250000E2,5.180956247E1 +9.853860000E2,5.206236639E1 +9.856480000E2,5.641840701E1 +9.859110000E2,5.518588565E1 +9.861920000E2,5.697237679E1 +9.864550000E2,5.411246614E1 +9.867510000E2,5.214533821E1 +9.869880000E2,5.642389575E1 +9.872440000E2,6.015294933E1 +9.875470000E2,5.809991100E1 +9.879150000E2,6.420044247E1 +9.881610000E2,6.042656173E1 +9.884280000E2,5.938959873E1 +9.886840000E2,6.059888233E1 +9.889870000E2,5.282749720E1 +9.892620000E2,5.638110380E1 +9.895440000E2,4.900409689E1 +9.897740000E2,4.971849802E1 +9.900320000E2,5.061428463E1 +9.903370000E2,5.829922071E1 +9.905860000E2,5.812083213E1 +9.908910000E2,5.500587720E1 +9.911860000E2,5.677481104E1 +9.914380000E2,5.502691141E1 +9.916830000E2,5.294500154E1 +9.919560000E2,5.700444986E1 +9.921770000E2,5.448756275E1 +9.924220000E2,5.785741234E1 +9.927280000E2,5.702180374E1 +9.929670000E2,6.013415875E1 +9.932080000E2,5.533496795E1 +9.934640000E2,5.695301526E1 +9.937440000E2,5.436173732E1 +9.940620000E2,5.092257074E1 +9.944480000E2,4.973000793E1 +9.946940000E2,4.871235512E1 +9.949410000E2,5.171412848E1 +9.951960000E2,5.643245777E1 +9.954520000E2,5.548819002E1 +9.957530000E2,5.694822585E1 +9.960600000E2,5.668072577E1 +9.963110000E2,5.547400320E1 +9.966010000E2,5.667137699E1 +9.968430000E2,5.866196066E1 +9.971120000E2,5.641527163E1 +9.974300000E2,5.505243365E1 +9.977140000E2,5.491253296E1 +9.979940000E2,5.642986287E1 +9.982400000E2,5.111113898E1 +9.985270000E2,5.228293633E1 +9.987770000E2,5.380023266E1 +9.990760000E2,5.259255492E1 +9.993610000E2,5.359948032E1 +9.996550000E2,5.817439497E1 +9.999080000E2,5.712087238E1 +1.000199000E3,6.016800470E1 +1.000435000E3,5.758076017E1 +1.000772000E3,5.328951429E1 +1.001047000E3,5.373102399E1 +1.001303000E3,5.905317642E1 +1.001622000E3,5.478240688E1 +1.001877000E3,5.648896451E1 +1.002173000E3,5.587033976E1 +1.002422000E3,5.995513955E1 +1.002724000E3,6.295760047E1 +1.003003000E3,5.978713154E1 +1.003261000E3,5.669754444E1 +1.003545000E3,5.577942906E1 +1.003827000E3,6.186873273E1 +1.004183000E3,6.253868639E1 +1.004493000E3,5.777226132E1 +1.004770000E3,6.482227668E1 +1.005072000E3,5.923751414E1 +1.005323000E3,5.644465637E1 +1.005601000E3,6.074750234E1 +1.005832000E3,5.683683327E1 +1.006147000E3,5.957418887E1 +1.006418000E3,6.134946851E1 +1.006713000E3,5.641852300E1 +1.006952000E3,5.637674327E1 +1.007310000E3,5.484290206E1 +1.007589000E3,6.426865013E1 +1.007886000E3,5.712036033E1 +1.008127000E3,5.768385080E1 +1.008427000E3,5.812466970E1 +1.008666000E3,6.112344783E1 +1.008973000E3,5.606588478E1 +1.009269000E3,5.809328667E1 +1.009507000E3,5.371315435E1 +1.009763000E3,5.527533595E1 +1.010003000E3,5.390597114E1 +1.010379000E3,5.652035402E1 +1.010658000E3,5.490058638E1 +1.010920000E3,5.927019017E1 +1.011197000E3,5.293113048E1 +1.011458000E3,5.179006266E1 +1.011718000E3,5.366462930E1 +1.011979000E3,5.569421827E1 +1.012229000E3,5.341899104E1 +1.012477000E3,4.863208748E1 +1.012772000E3,6.037154816E1 +1.013036000E3,5.430849576E1 +1.013284000E3,5.735938261E1 +1.013671000E3,5.526482118E1 +1.013957000E3,5.731780297E1 +1.014225000E3,5.205368153E1 +1.014486000E3,5.548863756E1 +1.014733000E3,5.265038263E1 +1.015033000E3,5.986876322E1 +1.015314000E3,5.130643680E1 +1.015590000E3,6.086878634E1 +1.015830000E3,5.798526739E1 +1.016137000E3,6.825745236E1 +1.016387000E3,5.828900876E1 +1.016655000E3,5.873097643E1 +1.017001000E3,6.454090665E1 +1.017329000E3,6.385512775E1 +1.017637000E3,6.691081911E1 +1.017938000E3,6.580217665E1 +1.018229000E3,6.485489311E1 +1.018470000E3,6.387101962E1 +1.018706000E3,6.616835921E1 +1.018997000E3,5.951737331E1 +1.019235000E3,5.386458503E1 +1.019536000E3,5.756977765E1 +1.019801000E3,5.811747841E1 +1.020064000E3,5.930001089E1 +1.020406000E3,5.469664450E1 +1.020673000E3,5.181220980E1 +1.020925000E3,5.483858346E1 +1.021232000E3,5.716842569E1 +1.021527000E3,5.738254897E1 +1.021762000E3,5.628034518E1 +1.022007000E3,5.850971228E1 +1.022258000E3,5.329919175E1 +1.022556000E3,5.482637446E1 +1.022813000E3,5.690503448E1 +1.023071000E3,5.317501594E1 +1.023336000E3,4.870888301E1 +1.023687000E3,6.132281620E1 +1.023965000E3,6.262505101E1 +1.024220000E3,6.180229149E1 +1.024496000E3,6.130993335E1 +1.024741000E3,6.231376381E1 +1.025040000E3,6.164360059E1 +1.025279000E3,5.910065798E1 +1.025533000E3,5.622173801E1 +1.025821000E3,5.290311975E1 +1.026116000E3,5.028293308E1 +1.026403000E3,5.581740437E1 +1.026664000E3,5.988277804E1 +1.027011000E3,5.730548262E1 +1.027305000E3,5.417769573E1 +1.027578000E3,5.250932185E1 +1.027819000E3,5.139919708E1 +1.028128000E3,5.061852216E1 +1.028380000E3,4.722292138E1 +1.028683000E3,5.983070917E1 +1.028956000E3,6.045269830E1 +1.029182000E3,5.777292957E1 +1.029431000E3,5.497807442E1 +1.029734000E3,5.533889528E1 +1.030063000E3,5.373558580E1 +1.030323000E3,5.600729212E1 +1.030620000E3,5.467159629E1 +1.030863000E3,5.246400101E1 +1.031110000E3,5.468037288E1 +1.031367000E3,5.850364516E1 +1.031646000E3,5.490958739E1 +1.031911000E3,5.866929845E1 +1.032210000E3,5.708288591E1 +1.032475000E3,5.498129629E1 +1.032736000E3,5.670272599E1 +1.032986000E3,5.317143219E1 +1.033315000E3,5.758413128E1 +1.033557000E3,6.361635596E1 +1.033846000E3,5.513973379E1 +1.034093000E3,5.215484095E1 +1.034399000E3,5.465926438E1 +1.034684000E3,5.588902955E1 +1.034978000E3,5.387672604E1 +1.035280000E3,5.595327755E1 +1.035543000E3,5.621513504E1 +1.035825000E3,5.991854954E1 +1.036079000E3,5.864640009E1 +1.036322000E3,6.072021936E1 +1.036666000E3,5.462749592E1 +1.036971000E3,5.329083651E1 +1.037264000E3,5.401214501E1 +1.037542000E3,5.242806591E1 +1.037843000E3,5.573267887E1 +1.038091000E3,5.224254554E1 +1.038380000E3,5.453929206E1 +1.038635000E3,5.371826859E1 +1.038891000E3,4.369246898E1 +1.039145000E3,4.547521933E1 +1.039418000E3,4.204639660E1 +1.039750000E3,4.426760298E1 +1.039990000E3,4.955659514E1 +1.040294000E3,4.960859899E1 +1.040560000E3,4.841380220E1 +1.040808000E3,4.914533708E1 +1.041104000E3,4.650609937E1 +1.041370000E3,4.849101938E1 +1.041622000E3,5.065930763E1 +1.041920000E3,4.744161935E1 +1.042161000E3,4.448519483E1 +1.042478000E3,4.726532690E1 +1.042725000E3,4.667923132E1 +1.043042000E3,4.704822757E1 +1.043307000E3,3.950691106E1 +1.043560000E3,5.249697508E1 +1.043835000E3,4.753687679E1 +1.044091000E3,4.843049138E1 +1.044350000E3,5.394643708E1 +1.044644000E3,4.769079035E1 +1.044887000E3,5.111291504E1 +1.045194000E3,5.247298633E1 +1.045445000E3,4.904344971E1 +1.045693000E3,4.405437847E1 +1.045988000E3,4.750888237E1 +1.046301000E3,4.305046000E1 +1.046518000E3,4.630901796E1 +1.046813000E3,4.756289225E1 +1.047053000E3,4.661089273E1 +1.047331000E3,6.143859736E1 +1.047566000E3,5.702483033E1 +1.047860000E3,5.015015196E1 +1.048098000E3,5.180675157E1 +1.048397000E3,4.645218330E1 +1.048640000E3,4.317726503E1 +1.048918000E3,4.962602549E1 +1.049159000E3,4.922447391E1 +1.049523000E3,4.310015818E1 +1.049767000E3,5.584844461E1 +1.050011000E3,5.550466055E1 +1.050294000E3,5.076679182E1 +1.050523000E3,4.777565498E1 +1.050776000E3,5.078379664E1 +1.051031000E3,4.412618688E1 +1.051298000E3,3.933148532E1 +1.051551000E3,4.240994962E1 +1.051799000E3,3.715036539E1 +1.052054000E3,4.541823437E1 +1.052312000E3,3.252240989E1 +1.052661000E3,4.298387800E1 +1.052922000E3,4.065675211E1 +1.053171000E3,3.851226965E1 +1.053417000E3,3.833414863E1 +1.053702000E3,3.734543870E1 +1.053967000E3,4.406198141E1 +1.054269000E3,3.397952572E1 +1.054518000E3,3.018425986E1 +1.054795000E3,2.659023927E1 +1.055055000E3,3.230579484E1 +1.055319000E3,4.027650377E1 +1.055588000E3,3.256611719E1 +1.055936000E3,3.203904394E1 +1.056189000E3,3.024692018E1 +1.056469000E3,4.044611203E1 +1.056698000E3,3.245705712E1 +1.056956000E3,5.087039919E1 +1.057201000E3,5.278557071E1 +1.057507000E3,6.996122129E1 +1.057766000E3,6.951439283E1 +1.058027000E3,6.731609209E1 +1.058291000E3,5.787293958E1 +1.058571000E3,5.774874245E1 +1.058801000E3,5.291748766E1 +1.059132000E3,4.352220528E1 +1.059391000E3,5.556254729E1 +1.059665000E3,5.339220405E1 +1.059951000E3,5.593145301E1 +1.060235000E3,5.299996372E1 +1.060492000E3,4.882317894E1 +1.060733000E3,3.790707311E1 +1.060975000E3,3.470192076E1 +1.061278000E3,4.481563830E1 +1.061519000E3,4.823008935E1 +1.061816000E3,4.719850269E1 +1.062076000E3,4.706381680E1 +1.062331000E3,4.530378435E1 +1.062576000E3,3.456809562E1 +1.062882000E3,3.742453964E1 +1.063154000E3,3.905594906E1 +1.063397000E3,3.672857244E1 +1.063694000E3,2.941779164E1 +1.063926000E3,2.995931983E1 +1.064168000E3,3.455311118E1 +1.064461000E3,3.254662869E1 +1.064708000E3,3.652583843E1 +1.065001000E3,5.229424666E1 +1.065352000E3,5.178814165E1 +1.065606000E3,4.798098259E1 +1.065854000E3,3.636652329E1 +1.066121000E3,4.558252535E1 +1.066366000E3,3.902840121E1 +1.066629000E3,3.106435508E1 +1.066887000E3,2.541330464E1 +1.067179000E3,3.474902335E1 +1.067449000E3,4.492275189E1 +1.067698000E3,3.860211372E1 +1.067955000E3,4.332670525E1 +1.068251000E3,5.147667691E1 +1.068546000E3,5.152069997E1 +1.068797000E3,4.540650098E1 +1.069105000E3,4.486446450E1 +1.069378000E3,4.196481867E1 +1.069632000E3,4.863200791E1 +1.069908000E3,3.878967071E1 +1.070151000E3,3.630888030E1 +1.070413000E3,2.964429880E1 +1.070682000E3,3.354707636E1 +1.070956000E3,4.008490969E1 +1.071248000E3,3.576577653E1 +1.071553000E3,4.349754488E1 +1.071886000E3,3.824859907E1 +1.072130000E3,3.455877689E1 +1.072406000E3,3.622999465E1 +1.072717000E3,3.637608237E1 +1.072984000E3,3.645219519E1 +1.073255000E3,4.353729148E1 +1.073603000E3,4.287473251E1 +1.073856000E3,4.842203791E1 +1.074097000E3,4.484407311E1 +1.074356000E3,4.397007110E1 +1.074628000E3,4.695884235E1 +1.074931000E3,4.627189963E1 +1.075264000E3,4.689571524E1 +1.075614000E3,5.203841291E1 +1.075923000E3,4.610184941E1 +1.076163000E3,4.404432471E1 +1.076475000E3,4.923215011E1 +1.076765000E3,4.466142180E1 +1.077062000E3,4.987282715E1 +1.077375000E3,4.461839454E1 +1.077687000E3,5.085403766E1 +1.077991000E3,4.674512295E1 +1.078232000E3,5.167180279E1 +1.078544000E3,4.780582457E1 +1.078939000E3,4.593914406E1 +1.079187000E3,4.061652220E1 +1.079434000E3,4.347669045E1 +1.079712000E3,4.326983820E1 +1.079966000E3,3.511950991E1 +1.080260000E3,4.755279745E1 +1.080506000E3,4.756343862E1 +1.080756000E3,4.779732167E1 +1.081049000E3,4.991962747E1 +1.081293000E3,5.213887128E1 +1.081586000E3,5.357624469E1 +1.081916000E3,5.141456645E1 +1.082165000E3,5.036532462E1 +1.082460000E3,4.962769973E1 +1.082696000E3,4.506404490E1 +1.082988000E3,4.537987312E1 +1.083220000E3,4.738457007E1 +1.083529000E3,4.698711193E1 +1.083769000E3,4.571430081E1 +1.084079000E3,4.980908007E1 +1.084324000E3,5.082282040E1 +1.084590000E3,5.406004268E1 +1.084876000E3,5.436375886E1 +1.085258000E3,5.361506257E1 +1.085509000E3,5.202937925E1 +1.085815000E3,5.324976969E1 +1.086057000E3,5.371445731E1 +1.086301000E3,5.282162917E1 +1.086550000E3,5.221281857E1 +1.086802000E3,5.263727375E1 +1.087126000E3,5.703022139E1 +1.087384000E3,5.519432869E1 +1.087646000E3,5.426647490E1 +1.087939000E3,5.407342864E1 +1.088175000E3,5.235924404E1 +1.088520000E3,4.681002832E1 +1.088812000E3,4.891237586E1 +1.089076000E3,4.699020733E1 +1.089350000E3,4.902871382E1 +1.089591000E3,5.078145117E1 +1.089837000E3,5.041791921E1 +1.090133000E3,4.603650794E1 +1.090430000E3,4.871755485E1 +1.090660000E3,5.111421073E1 +1.090911000E3,4.581894631E1 +1.091248000E3,4.988189917E1 +1.091630000E3,5.341365920E1 +1.091902000E3,4.962858025E1 +1.092183000E3,4.315344358E1 +1.092440000E3,4.664431132E1 +1.092683000E3,4.616459192E1 +1.092923000E3,4.765071496E1 +1.093171000E3,4.163360687E1 +1.093473000E3,4.537777608E1 +1.093714000E3,4.783603025E1 +1.094007000E3,4.845414260E1 +1.094261000E3,4.799870549E1 +1.094499000E3,4.651309815E1 +1.094792000E3,5.003648984E1 +1.095123000E3,5.202534254E1 +1.095372000E3,5.709400077E1 +1.095625000E3,5.694079106E1 +1.095896000E3,5.715452089E1 +1.096196000E3,5.523378380E1 +1.096438000E3,5.375558627E1 +1.096737000E3,5.665208041E1 +1.096991000E3,5.314654737E1 +1.097292000E3,5.142447849E1 +1.097557000E3,5.330628285E1 +1.097827000E3,5.512040694E1 +1.098167000E3,5.399583122E1 +1.098472000E3,5.540663813E1 +1.098720000E3,5.200546986E1 +1.098960000E3,4.676140326E1 +1.099243000E3,4.798657093E1 +1.099544000E3,4.841724285E1 +1.099804000E3,5.642371618E1 +1.100109000E3,5.409000726E1 +1.100381000E3,5.348646719E1 +1.100630000E3,5.346537578E1 +1.100927000E3,5.422782845E1 +1.101164000E3,5.395323822E1 +1.101495000E3,5.383967560E1 +1.101763000E3,5.667828538E1 +1.102044000E3,4.764690784E1 +1.102307000E3,5.353530254E1 +1.102613000E3,5.568430762E1 +1.102906000E3,5.431580275E1 +1.103147000E3,5.193331555E1 +1.103441000E3,5.040945762E1 +1.103677000E3,5.333005838E1 +1.103968000E3,4.947534745E1 +1.104272000E3,5.306270968E1 +1.104564000E3,5.537230515E1 +1.104799000E3,4.876041085E1 +1.105069000E3,5.109409535E1 +1.105330000E3,5.087734214E1 +1.105587000E3,5.225642483E1 +1.105838000E3,5.176680091E1 +1.106135000E3,5.535939212E1 +1.106380000E3,5.666892185E1 +1.106622000E3,5.658846562E1 +1.106895000E3,5.577897889E1 +1.107150000E3,5.157178717E1 +1.107431000E3,5.284488409E1 +1.107756000E3,5.415639955E1 +1.108002000E3,5.465643057E1 +1.108313000E3,4.654328988E1 +1.108563000E3,5.038890380E1 +1.108811000E3,4.602751738E1 +1.109073000E3,4.801243396E1 +1.109375000E3,4.782472616E1 +1.109667000E3,4.666447221E1 +1.109943000E3,5.156469126E1 +1.110192000E3,4.949682888E1 +1.110448000E3,4.919673339E1 +1.110752000E3,4.862521519E1 +1.111045000E3,5.122379655E1 +1.111295000E3,4.813892217E1 +1.111515000E3,4.901611396E1 +1.111761000E3,4.905664967E1 +1.112005000E3,4.647618514E1 +1.112265000E3,4.730688076E1 +1.112537000E3,5.039121351E1 +1.112793000E3,4.985611957E1 +1.113101000E3,5.474563863E1 +1.113387000E3,5.028870882E1 +1.113678000E3,5.073784750E1 +1.113952000E3,4.995138555E1 +1.114291000E3,4.790039203E1 +1.114554000E3,4.764335594E1 +1.114849000E3,5.057104591E1 +1.115096000E3,5.107398730E1 +1.115401000E3,4.800391913E1 +1.115672000E3,4.553282874E1 +1.115895000E3,4.569523337E1 +1.116194000E3,4.480844215E1 +1.116425000E3,4.772339962E1 +1.116664000E3,5.255452638E1 +1.116906000E3,4.927433934E1 +1.117202000E3,4.871369865E1 +1.117530000E3,4.928110420E1 +1.117840000E3,5.705383563E1 +1.118146000E3,4.880674861E1 +1.118418000E3,5.038180726E1 +1.118687000E3,5.145980404E1 +1.118950000E3,5.338008269E1 +1.119227000E3,5.227728425E1 +1.119468000E3,5.450689216E1 +1.119736000E3,5.844246451E1 +1.120049000E3,5.459398611E1 +1.120351000E3,5.526423567E1 +1.120605000E3,5.228963309E1 +1.120918000E3,5.598288902E1 +1.121182000E3,5.280889802E1 +1.121489000E3,4.974717420E1 +1.121729000E3,5.137523152E1 +1.121978000E3,5.052356297E1 +1.122235000E3,5.240368249E1 +1.122503000E3,4.826380791E1 +1.122775000E3,5.095403791E1 +1.123036000E3,5.799909934E1 +1.123291000E3,4.889512711E1 +1.123587000E3,5.622808486E1 +1.123874000E3,5.230369090E1 +1.124235000E3,5.081102316E1 +1.124544000E3,5.628773803E1 +1.124826000E3,5.810547372E1 +1.125153000E3,5.508029719E1 +1.125432000E3,5.576573503E1 +1.125722000E3,5.346022180E1 +1.125978000E3,5.279748306E1 +1.126234000E3,5.604802053E1 +1.126502000E3,5.937326657E1 +1.126804000E3,5.703447215E1 +1.127047000E3,5.520354594E1 +1.127314000E3,5.551787326E1 +1.127554000E3,5.740837773E1 +1.127843000E3,5.663015330E1 +1.128135000E3,5.649615150E1 +1.128380000E3,5.731556257E1 +1.128677000E3,6.079986861E1 +1.128914000E3,5.820128856E1 +1.129207000E3,6.091746513E1 +1.129442000E3,6.126941240E1 +1.129745000E3,4.541170906E1 +1.129980000E3,4.341485096E1 +1.130277000E3,4.833777967E1 +1.130573000E3,4.472710223E1 +1.130815000E3,5.059675199E1 +1.131062000E3,3.863826940E1 +1.131353000E3,4.925455740E1 +1.131589000E3,4.859989956E1 +1.131881000E3,5.113067908E1 +1.132117000E3,5.054542106E1 +1.132418000E3,4.827479925E1 +1.132654000E3,4.610884488E1 +1.132948000E3,4.879734536E1 +1.133241000E3,5.074680390E1 +1.133563000E3,5.119298220E1 +1.133864000E3,4.861265792E1 +1.134166000E3,5.001512903E1 +1.134452000E3,5.059053464E1 +1.134716000E3,4.999839479E1 +1.134967000E3,4.960069086E1 +1.135222000E3,5.320256888E1 +1.135494000E3,5.604818163E1 +1.135742000E3,5.625768045E1 +1.135999000E3,5.261645024E1 +1.136244000E3,5.105081932E1 +1.136501000E3,5.616444939E1 +1.136847000E3,5.624064264E1 +1.137105000E3,5.654097446E1 +1.137391000E3,5.807884104E1 +1.137717000E3,5.436169891E1 +1.137970000E3,5.763959225E1 +1.138239000E3,5.465216875E1 +1.138486000E3,5.094509116E1 +1.138731000E3,5.425415233E1 +1.138977000E3,5.143709697E1 +1.139259000E3,5.032545705E1 +1.139527000E3,5.906031130E1 +1.139800000E3,5.308709054E1 +1.140168000E3,5.407062541E1 +1.140423000E3,5.585261351E1 +1.140694000E3,5.463535881E1 +1.140949000E3,5.407603664E1 +1.141230000E3,5.495767686E1 +1.141512000E3,5.639433741E1 +1.141818000E3,5.555715330E1 +1.142072000E3,5.729232944E1 +1.142323000E3,5.553013253E1 +1.142578000E3,5.648251207E1 +1.142844000E3,5.786931075E1 +1.143143000E3,6.007493220E1 +1.143523000E3,5.752076543E1 +1.143836000E3,5.573324560E1 +1.144090000E3,5.641950784E1 +1.144396000E3,5.532270625E1 +1.144644000E3,5.561239732E1 +1.144940000E3,5.206707456E1 +1.145212000E3,5.092140902E1 +1.145511000E3,5.452891649E1 +1.145770000E3,5.331137977E1 +1.146042000E3,5.366568195E1 +1.146338000E3,5.227174013E1 +1.146650000E3,5.423955559E1 +1.146934000E3,5.781916580E1 +1.147218000E3,5.532962824E1 +1.147467000E3,5.502661676E1 +1.147687000E3,5.823979674E1 +1.147961000E3,5.538066560E1 +1.148276000E3,5.423260060E1 +1.148528000E3,5.197461977E1 +1.148799000E3,5.154724487E1 +1.149057000E3,5.473685923E1 +1.149367000E3,5.647867848E1 +1.149660000E3,5.489455072E1 +1.150037000E3,6.072892064E1 +1.150335000E3,5.543869835E1 +1.150594000E3,5.667713742E1 +1.150870000E3,5.818755157E1 +1.151164000E3,5.210849760E1 +1.151411000E3,5.095671455E1 +1.151703000E3,5.254983272E1 +1.152002000E3,5.585064224E1 +1.152253000E3,5.739007574E1 +1.152582000E3,5.895179917E1 +1.152860000E3,5.461317681E1 +1.153122000E3,5.345759293E1 +1.153381000E3,5.267971619E1 +1.153684000E3,6.006602205E1 +1.153986000E3,5.573552061E1 +1.154286000E3,5.518963618E1 +1.154531000E3,5.342922095E1 +1.154792000E3,5.257536969E1 +1.155139000E3,4.887945516E1 +1.155435000E3,4.702411688E1 +1.155680000E3,4.867646616E1 +1.155978000E3,4.811861077E1 +1.156361000E3,4.915586406E1 +1.156670000E3,5.033026069E1 +1.156976000E3,5.393908378E1 +1.157274000E3,5.295128205E1 +1.157524000E3,5.249671789E1 +1.157816000E3,5.314344994E1 +1.158052000E3,5.237342933E1 +1.158353000E3,5.300284286E1 +1.158590000E3,5.170068449E1 +1.158867000E3,5.174146304E1 +1.159147000E3,4.929588783E1 +1.159411000E3,5.699090425E1 +1.159752000E3,5.266690351E1 +1.160068000E3,5.746767577E1 +1.160360000E3,5.375850846E1 +1.160640000E3,5.373794020E1 +1.160985000E3,5.304914530E1 +1.161280000E3,5.198754593E1 +1.161525000E3,5.019848207E1 +1.161766000E3,5.164623609E1 +1.162020000E3,5.363319210E1 +1.162324000E3,5.439011044E1 +1.162564000E3,5.304648945E1 +1.162816000E3,5.174573718E1 +1.163177000E3,4.505755779E1 +1.163462000E3,4.894753105E1 +1.163738000E3,5.064933943E1 +1.164013000E3,5.245879056E1 +1.164255000E3,5.017914517E1 +1.164568000E3,5.189205429E1 +1.164823000E3,5.038961444E1 +1.165052000E3,5.072118593E1 +1.165297000E3,4.831662547E1 +1.165552000E3,5.050204887E1 +1.165808000E3,5.308107982E1 +1.166062000E3,4.878509871E1 +1.166392000E3,5.002605106E1 +1.166654000E3,5.320265697E1 +1.166911000E3,4.403273534E1 +1.167180000E3,5.161386051E1 +1.167455000E3,4.986209571E1 +1.167692000E3,4.993305836E1 +1.167973000E3,5.173621365E1 +1.168216000E3,5.385559129E1 +1.168491000E3,5.543019156E1 +1.168757000E3,5.019966657E1 +1.169035000E3,5.569516326E1 +1.169296000E3,5.216419082E1 +1.169676000E3,5.398731996E1 +1.169933000E3,5.465625282E1 +1.170197000E3,5.451774184E1 +1.170449000E3,5.328129322E1 +1.170705000E3,5.452639907E1 +1.170963000E3,5.713735254E1 +1.171272000E3,5.551413923E1 +1.171528000E3,5.604966001E1 +1.171779000E3,5.340478404E1 +1.172038000E3,5.107817821E1 +1.172291000E3,5.218990306E1 +1.172602000E3,4.830451720E1 +1.172964000E3,5.276802164E1 +1.173245000E3,5.191204687E1 +1.173527000E3,5.337367972E1 +1.173838000E3,5.462664550E1 +1.174090000E3,5.304724513E1 +1.174379000E3,5.193251440E1 +1.174628000E3,5.283915893E1 +1.174936000E3,5.036641160E1 +1.175236000E3,4.890810708E1 +1.175487000E3,4.805298565E1 +1.175750000E3,5.067335741E1 +1.176019000E3,4.961207397E1 +1.176335000E3,4.820862314E1 +1.176634000E3,5.328684116E1 +1.176883000E3,5.122009001E1 +1.177165000E3,5.878687770E1 +1.177412000E3,5.487235950E1 +1.177709000E3,5.224569426E1 +1.178006000E3,5.403405997E1 +1.178246000E3,5.388661901E1 +1.178490000E3,5.237426881E1 +1.178734000E3,5.372043820E1 +1.179050000E3,5.471170909E1 +1.179387000E3,5.129350436E1 +1.179686000E3,4.660070824E1 +1.179916000E3,4.541361068E1 +1.180159000E3,4.365576113E1 +1.180466000E3,4.771103553E1 +1.180756000E3,4.863237791E1 +1.181008000E3,5.534959697E1 +1.181314000E3,5.376444060E1 +1.181609000E3,5.130885425E1 +1.181851000E3,5.256948786E1 +1.182151000E3,5.321964637E1 +1.182393000E3,5.074776981E1 +1.182622000E3,4.979941250E1 +1.182873000E3,5.445637667E1 +1.183116000E3,4.449721128E1 +1.183420000E3,5.086906199E1 +1.183676000E3,5.067998506E1 +1.183927000E3,5.352019181E1 +1.184219000E3,4.851971310E1 +1.184517000E3,5.123853013E1 +1.184764000E3,5.278221141E1 +1.185010000E3,5.126409245E1 +1.185297000E3,5.249182764E1 +1.185665000E3,5.346599478E1 +1.185972000E3,5.052250297E1 +1.186225000E3,5.389354916E1 +1.186534000E3,5.372737626E1 +1.186796000E3,5.415645782E1 +1.187048000E3,5.441424865E1 +1.187317000E3,5.470553815E1 +1.187622000E3,5.559990781E1 +1.187913000E3,5.619293356E1 +1.188186000E3,4.869472445E1 +1.188442000E3,5.069948923E1 +1.188718000E3,5.296813397E1 +1.189051000E3,5.015003063E1 +1.189308000E3,5.110938827E1 +1.189570000E3,5.250182053E1 +1.189815000E3,5.240850659E1 +1.190062000E3,5.446862868E1 +1.190368000E3,5.270463767E1 +1.190629000E3,5.117539458E1 +1.190931000E3,5.543767536E1 +1.191207000E3,5.348622922E1 +1.191505000E3,5.112152946E1 +1.191761000E3,4.905277341E1 +1.192068000E3,5.456405848E1 +1.192487000E3,5.016322677E1 +1.192732000E3,4.971711263E1 +1.192976000E3,5.396031961E1 +1.193258000E3,5.018645567E1 +1.193531000E3,4.895586707E1 +1.193790000E3,5.442023654E1 +1.194055000E3,5.160697029E1 +1.194326000E3,4.822365107E1 +1.194605000E3,5.396633777E1 +1.194903000E3,5.031021734E1 +1.195141000E3,5.278015326E1 +1.195431000E3,4.949576105E1 +1.195801000E3,5.244682833E1 +1.196076000E3,5.508575727E1 +1.196371000E3,5.161802747E1 +1.196603000E3,5.716896987E1 +1.196858000E3,5.210002974E1 +1.197207000E3,5.483594793E1 +1.197503000E3,5.204828926E1 +1.197774000E3,5.339169315E1 +1.198054000E3,4.934781945E1 +1.198312000E3,5.918797425E1 +1.198559000E3,5.025254784E1 +1.198808000E3,5.317746302E1 +1.199152000E3,5.656715516E1 +1.199464000E3,5.448426177E1 +1.199717000E3,5.419526565E1 +1.199961000E3,5.304156540E1 +1.200219000E3,4.961182292E1 +1.200480000E3,5.259766625E1 +1.200730000E3,5.295115767E1 +1.201029000E3,5.365389524E1 +1.201288000E3,5.465027972E1 +1.201538000E3,5.131261505E1 +1.201807000E3,5.767453751E1 +1.202112000E3,5.316006082E1 +1.202485000E3,5.263333972E1 +1.202739000E3,4.966297173E1 +1.203041000E3,5.282706501E1 +1.203300000E3,4.950274237E1 +1.203539000E3,4.377779375E1 +1.203832000E3,5.274682795E1 +1.204077000E3,5.348405653E1 +1.204320000E3,5.647600154E1 +1.204615000E3,4.835002395E1 +1.204854000E3,4.440243109E1 +1.205149000E3,4.673035253E1 +1.205410000E3,4.901106802E1 +1.205666000E3,5.311033159E1 +1.205952000E3,5.020567211E1 +1.206248000E3,5.046889058E1 +1.206545000E3,6.150607502E1 +1.206779000E3,5.260331634E1 +1.207093000E3,5.183291791E1 +1.207367000E3,4.957331060E1 +1.207610000E3,5.139200370E1 +1.207857000E3,5.005726187E1 +1.208158000E3,4.979521937E1 +1.208398000E3,5.178137337E1 +1.208738000E3,4.632694184E1 +1.208994000E3,4.836915777E1 +1.209279000E3,4.869228435E1 +1.209528000E3,5.096507040E1 +1.209784000E3,4.718590489E1 +1.210053000E3,4.835967114E1 +1.210281000E3,4.725223201E1 +1.210542000E3,5.172958855E1 +1.210823000E3,5.546336112E1 +1.211051000E3,5.448218663E1 +1.211300000E3,5.371995163E1 +1.211551000E3,4.887559574E1 +1.211926000E3,4.975732945E1 +1.212205000E3,5.041543230E1 +1.212482000E3,4.863959509E1 +1.212730000E3,5.047232348E1 +1.212990000E3,4.824384094E1 +1.213232000E3,5.039377586E1 +1.213493000E3,4.517891187E1 +1.213814000E3,4.686032989E1 +1.214062000E3,4.852263494E1 +1.214337000E3,4.897277606E1 +1.214586000E3,4.662047985E1 +1.214832000E3,5.483925472E1 +1.215143000E3,5.677489998E1 +1.215372000E3,5.470688254E1 +1.215664000E3,5.408747991E1 +1.215962000E3,5.167832591E1 +1.216227000E3,5.463116224E1 +1.216504000E3,5.335564969E1 +1.216747000E3,4.832376612E1 +1.216996000E3,4.918538596E1 +1.217306000E3,5.329611015E1 +1.217618000E3,5.364881155E1 +1.217885000E3,5.087209115E1 +1.218149000E3,4.967310650E1 +1.218497000E3,4.842689624E1 +1.218801000E3,5.442588779E1 +1.219043000E3,5.338467746E1 +1.219349000E3,5.187371665E1 +1.219600000E3,4.992515182E1 +1.219883000E3,5.205809257E1 +1.220161000E3,5.374364962E1 +1.220471000E3,5.145920034E1 +1.220752000E3,5.112774200E1 +1.221009000E3,4.969936214E1 +1.221258000E3,4.906585252E1 +1.221519000E3,4.971022706E1 +1.221873000E3,5.039216656E1 +1.222125000E3,4.735018859E1 +1.222388000E3,5.025223930E1 +1.222647000E3,5.349102952E1 +1.222903000E3,5.894430216E1 +1.223210000E3,5.133834742E1 +1.223464000E3,5.378681025E1 +1.223708000E3,5.646161983E1 +1.223949000E3,5.127610878E1 +1.224189000E3,5.295211205E1 +1.224441000E3,5.074229414E1 +1.224698000E3,5.428527885E1 +1.225064000E3,6.064230054E1 +1.225333000E3,5.545461106E1 +1.225591000E3,5.085263163E1 +1.225847000E3,4.867332677E1 +1.226137000E3,4.828036819E1 +1.226394000E3,5.187031217E1 +1.226668000E3,4.691949774E1 +1.226931000E3,4.605300024E1 +1.227219000E3,4.319091646E1 +1.227493000E3,4.827268256E1 +1.227791000E3,4.873371181E1 +1.228031000E3,4.895629331E1 +1.228388000E3,4.831306026E1 +1.228651000E3,5.150144778E1 +1.228942000E3,5.210555115E1 +1.229190000E3,4.868630793E1 +1.229442000E3,5.072280558E1 +1.229686000E3,5.520857657E1 +1.229933000E3,5.597505745E1 +1.230228000E3,5.309096620E1 +1.230467000E3,5.340491117E1 +1.230765000E3,4.966814228E1 +1.231012000E3,4.811713105E1 +1.231316000E3,5.037869561E1 +1.231666000E3,4.768651081E1 +1.231948000E3,4.577834304E1 +1.232207000E3,4.455407567E1 +1.232510000E3,5.091422235E1 +1.232802000E3,4.990562511E1 +1.233047000E3,5.178152081E1 +1.233344000E3,5.312014577E1 +1.233592000E3,5.002236071E1 +1.233892000E3,5.158473192E1 +1.234173000E3,4.692863129E1 +1.234463000E3,4.643331531E1 +1.234792000E3,4.659156592E1 +1.235060000E3,4.662718910E1 +1.235313000E3,5.204491267E1 +1.235577000E3,5.165973487E1 +1.235837000E3,4.753691687E1 +1.236124000E3,5.179615379E1 +1.236401000E3,4.807409380E1 +1.236654000E3,5.474790946E1 +1.236923000E3,4.946475170E1 +1.237180000E3,4.949471083E1 +1.237426000E3,4.669168363E1 +1.237743000E3,5.529942944E1 +1.238061000E3,5.997488643E1 +1.238363000E3,5.302222406E1 +1.238611000E3,5.022506453E1 +1.238856000E3,4.864145193E1 +1.239102000E3,5.299123845E1 +1.239357000E3,4.682866815E1 +1.239657000E3,4.770894983E1 +1.239902000E3,4.813746372E1 +1.240150000E3,4.571771059E1 +1.240465000E3,5.354012247E1 +1.240765000E3,5.830707734E1 +1.241013000E3,5.483189048E1 +1.241344000E3,5.157405593E1 +1.241606000E3,5.072581437E1 +1.241868000E3,5.137979859E1 +1.242133000E3,4.849261303E1 +1.242396000E3,5.556107710E1 +1.242656000E3,4.958779284E1 +1.242959000E3,5.301548021E1 +1.243232000E3,5.475621292E1 +1.243501000E3,5.660789219E1 +1.243755000E3,5.350018163E1 +1.244010000E3,5.415674835E1 +1.244349000E3,5.699979568E1 +1.244717000E3,5.660044844E1 +1.245015000E3,5.808533709E1 +1.245259000E3,5.881859790E1 +1.245558000E3,5.728882886E1 +1.245808000E3,6.044308225E1 +1.246079000E3,5.893900513E1 +1.246326000E3,5.279872381E1 +1.246637000E3,5.769196864E1 +1.246935000E3,5.963088900E1 +1.247181000E3,5.367341836E1 +1.247508000E3,4.963645506E1 +1.247848000E3,5.265770489E1 +1.248115000E3,5.355743381E1 +1.248359000E3,4.891015342E1 +1.248659000E3,4.819353582E1 +1.248902000E3,4.966403220E1 +1.249199000E3,4.977495696E1 +1.249449000E3,5.715212626E1 +1.249708000E3,5.458337902E1 +1.249983000E3,4.910795823E1 +1.250282000E3,5.184902745E1 +1.250527000E3,5.416053460E1 +1.250777000E3,5.320773170E1 +1.251084000E3,5.422274265E1 +1.251342000E3,5.429456299E1 +1.251602000E3,5.910733722E1 +1.251866000E3,5.226490816E1 +1.252178000E3,5.191466859E1 +1.252452000E3,5.143339371E1 +1.252681000E3,5.066846779E1 +1.252975000E3,4.928639562E1 +1.253256000E3,4.916995298E1 +1.253528000E3,5.115941927E1 +1.253816000E3,4.850268402E1 +1.254063000E3,5.682920937E1 +1.254418000E3,5.583927157E1 +1.254700000E3,5.243405901E1 +1.254947000E3,5.411796563E1 +1.255215000E3,5.538314624E1 +1.255487000E3,5.447026824E1 +1.255748000E3,5.115232974E1 +1.256046000E3,5.273125350E1 +1.256281000E3,5.501639825E1 +1.256559000E3,5.470702619E1 +1.256867000E3,5.330168249E1 +1.257116000E3,5.680033697E1 +1.257361000E3,5.088137081E1 +1.257690000E3,4.771044205E1 +1.257935000E3,5.556188303E1 +1.258189000E3,5.821474305E1 +1.258460000E3,5.913083175E1 +1.258757000E3,5.624840253E1 +1.259001000E3,5.575040009E1 +1.259294000E3,5.295140054E1 +1.259581000E3,5.547885633E1 +1.259831000E3,5.659634167E1 +1.260084000E3,5.552607398E1 +1.260378000E3,5.399987136E1 +1.260676000E3,5.741946227E1 +1.260997000E3,5.622829253E1 +1.261272000E3,5.638519080E1 +1.261569000E3,5.222122782E1 +1.261810000E3,5.168558616E1 +1.262055000E3,5.937417075E1 +1.262351000E3,5.419990938E1 +1.262597000E3,5.469291977E1 +1.262893000E3,5.501007253E1 +1.263142000E3,5.356116387E1 +1.263421000E3,5.643294047E1 +1.263644000E3,5.627927149E1 +1.263964000E3,5.547827797E1 +1.264255000E3,5.434029164E1 +1.264552000E3,5.355134450E1 +1.264791000E3,5.268456483E1 +1.265090000E3,5.304298782E1 +1.265342000E3,5.292557941E1 +1.265637000E3,5.267823535E1 +1.265885000E3,5.076475521E1 +1.266186000E3,5.470463807E1 +1.266480000E3,5.369531663E1 +1.266727000E3,5.321314382E1 +1.267074000E3,5.430022488E1 +1.267386000E3,5.498366079E1 +1.267650000E3,5.373765381E1 +1.267926000E3,5.631680810E1 +1.268156000E3,5.314598601E1 +1.268459000E3,5.446778700E1 +1.268718000E3,5.461487175E1 +1.269029000E3,4.723979401E1 +1.269322000E3,5.050485841E1 +1.269602000E3,5.263446338E1 +1.269914000E3,5.195043172E1 +1.270180000E3,5.361139844E1 +1.270542000E3,5.127785292E1 +1.270796000E3,5.111084292E1 +1.271061000E3,5.030178225E1 +1.271329000E3,4.978955516E1 +1.271616000E3,5.398913319E1 +1.271862000E3,5.537806166E1 +1.272155000E3,5.301545016E1 +1.272407000E3,5.450597504E1 +1.272651000E3,5.090153644E1 +1.272906000E3,5.335437953E1 +1.273148000E3,4.673762491E1 +1.273392000E3,5.062539325E1 +1.273710000E3,5.110756444E1 +1.273960000E3,5.466659884E1 +1.274217000E3,5.158121780E1 +1.274511000E3,5.575560452E1 +1.274759000E3,5.536976579E1 +1.275054000E3,5.425250328E1 +1.275298000E3,5.448034930E1 +1.275544000E3,5.185016662E1 +1.275828000E3,5.206320816E1 +1.276126000E3,5.118466074E1 +1.276376000E3,4.943928704E1 +1.276707000E3,5.090592254E1 +1.276972000E3,5.767487174E1 +1.277251000E3,5.481331862E1 +1.277544000E3,5.385854096E1 +1.277810000E3,5.179333541E1 +1.278097000E3,5.161992279E1 +1.278344000E3,5.248655937E1 +1.278657000E3,5.064236034E1 +1.278927000E3,4.915402835E1 +1.279197000E3,5.321156971E1 +1.279471000E3,5.438812541E1 +1.279734000E3,5.482588411E1 +1.280065000E3,5.157318203E1 +1.280296000E3,5.173449962E1 +1.280546000E3,5.465953878E1 +1.280843000E3,5.457680704E1 +1.281077000E3,5.562152963E1 +1.281325000E3,5.460406982E1 +1.281570000E3,5.232421403E1 +1.281870000E3,5.207576719E1 +1.282135000E3,4.968186040E1 +1.282378000E3,5.237915347E1 +1.282628000E3,4.745539727E1 +1.282877000E3,5.255989147E1 +1.283195000E3,5.301690658E1 +1.283467000E3,5.283539029E1 +1.283717000E3,5.083105477E1 +1.283978000E3,4.559322742E1 +1.284235000E3,4.934435088E1 +1.284538000E3,5.265118466E1 +1.284812000E3,5.302155906E1 +1.285045000E3,5.294725202E1 +1.285352000E3,5.129236762E1 +1.285646000E3,5.402858483E1 +1.285898000E3,5.434527110E1 +1.286189000E3,5.525625388E1 +1.286515000E3,5.653073998E1 +1.286819000E3,5.704731902E1 +1.287101000E3,5.310035962E1 +1.287387000E3,5.474072190E1 +1.287649000E3,5.496979063E1 +1.287925000E3,5.528941101E1 +1.288193000E3,5.394330028E1 +1.288492000E3,4.829171318E1 +1.288740000E3,5.076324605E1 +1.289004000E3,4.673843249E1 +1.289280000E3,5.345749476E1 +1.289584000E3,4.955238815E1 +1.289923000E3,5.268555513E1 +1.290206000E3,5.092762320E1 +1.290445000E3,5.180504716E1 +1.290779000E3,5.421996562E1 +1.291081000E3,5.408565728E1 +1.291322000E3,5.466627749E1 +1.291622000E3,5.247549140E1 +1.291870000E3,5.438915347E1 +1.292125000E3,5.526358440E1 +1.292428000E3,5.407200655E1 +1.292723000E3,5.160593410E1 +1.293035000E3,5.231731426E1 +1.293342000E3,5.126765219E1 +1.293626000E3,4.802016847E1 +1.293922000E3,5.428603515E1 +1.294199000E3,5.305841291E1 +1.294451000E3,5.676250586E1 +1.294738000E3,5.921971496E1 +1.295005000E3,5.812051865E1 +1.295266000E3,5.671365947E1 +1.295512000E3,5.389157640E1 +1.295809000E3,5.417883641E1 +1.296087000E3,5.169085532E1 +1.296408000E3,5.027989141E1 +1.296704000E3,5.801273246E1 +1.296951000E3,5.777618357E1 +1.297241000E3,5.598217178E1 +1.297547000E3,5.590671112E1 +1.297806000E3,6.302454961E1 +1.298073000E3,5.716944646E1 +1.298330000E3,5.693666329E1 +1.298591000E3,5.374930006E1 +1.298851000E3,5.170089530E1 +1.299100000E3,6.243829367E1 +1.299340000E3,5.522680485E1 +1.299673000E3,5.451288060E1 +1.299933000E3,5.720613947E1 +1.300193000E3,5.131457759E1 +1.300510000E3,5.593393786E1 +1.300810000E3,5.344184529E1 +1.301099000E3,5.432320381E1 +1.301355000E3,5.294046944E1 +1.301602000E3,5.330691828E1 +1.301911000E3,4.899471979E1 +1.302175000E3,5.054546621E1 +1.302420000E3,4.914598102E1 +1.302706000E3,5.757950400E1 +1.303045000E3,5.798603958E1 +1.303343000E3,5.685278830E1 +1.303584000E3,5.272645619E1 +1.303869000E3,5.576083132E1 +1.304169000E3,5.311655900E1 +1.304414000E3,5.297304035E1 +1.304724000E3,6.119658997E1 +1.304998000E3,5.921259630E1 +1.305275000E3,5.974785927E1 +1.305567000E3,5.829108198E1 +1.305799000E3,5.656256791E1 +1.306151000E3,5.263150293E1 +1.306475000E3,5.719715846E1 +1.306754000E3,5.746813017E1 +1.307020000E3,6.063794361E1 +1.307320000E3,5.945639283E1 +1.307570000E3,5.898495898E1 +1.307856000E3,5.345744690E1 +1.308127000E3,5.882374416E1 +1.308390000E3,5.704844280E1 +1.308660000E3,6.230218860E1 +1.308982000E3,5.794977886E1 +1.309252000E3,5.609480230E1 +1.309620000E3,5.439173238E1 +1.309924000E3,5.804315704E1 +1.310253000E3,5.898090143E1 +1.310510000E3,5.933785859E1 +1.310826000E3,5.484966867E1 +1.311077000E3,5.841635068E1 +1.311358000E3,5.536029260E1 +1.311601000E3,5.555523834E1 +1.311895000E3,5.637714479E1 +1.312195000E3,5.253312652E1 +1.312445000E3,5.377927694E1 +1.312696000E3,5.757954833E1 +1.313038000E3,5.500733438E1 +1.313282000E3,5.367385274E1 +1.313558000E3,5.610715122E1 +1.313797000E3,5.528556803E1 +1.314063000E3,5.884958532E1 +1.314412000E3,5.458036035E1 +1.314671000E3,5.765344335E1 +1.314945000E3,5.139756723E1 +1.315223000E3,5.546002517E1 +1.315503000E3,5.608276603E1 +1.315733000E3,5.719791479E1 +1.315986000E3,5.413888898E1 +1.316329000E3,5.789500166E1 +1.316579000E3,5.404086097E1 +1.316819000E3,6.021843554E1 +1.317067000E3,5.929690830E1 +1.317365000E3,6.066063258E1 +1.317666000E3,5.465341745E1 +1.317917000E3,5.115712079E1 +1.318169000E3,4.986479689E1 +1.318470000E3,5.351977371E1 +1.318716000E3,5.614277654E1 +1.318987000E3,5.824140620E1 +1.319280000E3,5.863858703E1 +1.319646000E3,5.908977231E1 +1.319902000E3,5.867594430E1 +1.320142000E3,5.256185028E1 +1.320379000E3,5.916248935E1 +1.320672000E3,5.829134786E1 +1.320910000E3,5.729121950E1 +1.321203000E3,5.817253701E1 +1.321434000E3,5.958327052E1 +1.321726000E3,6.109571062E1 +1.321963000E3,6.309400740E1 +1.322263000E3,6.381431561E1 +1.322586000E3,6.124594205E1 +1.322839000E3,6.120886427E1 +1.323128000E3,5.624496406E1 +1.323377000E3,6.205845751E1 +1.323676000E3,6.248705287E1 +1.323968000E3,6.259357777E1 +1.324217000E3,6.168308921E1 +1.324496000E3,6.128297543E1 +1.324731000E3,5.975404370E1 +1.325024000E3,6.147148959E1 +1.325261000E3,6.101142333E1 +1.325573000E3,5.682124874E1 +1.325854000E3,5.869490284E1 +1.326149000E3,5.646663249E1 +1.326392000E3,5.662110608E1 +1.326643000E3,5.067702480E1 +1.326984000E3,5.759763927E1 +1.327264000E3,5.613584630E1 +1.327489000E3,5.826097161E1 +1.327735000E3,5.843702691E1 +1.328012000E3,5.352317094E1 +1.328253000E3,5.737674501E1 +1.328545000E3,5.736811408E1 +1.328911000E3,5.477233671E1 +1.329158000E3,5.481436604E1 +1.329403000E3,4.974322484E1 +1.329645000E3,5.490077996E1 +1.329890000E3,4.870505425E1 +1.330144000E3,4.955972956E1 +1.330428000E3,5.470042727E1 +1.330734000E3,5.618884112E1 +1.331026000E3,5.238151215E1 +1.331265000E3,5.344428978E1 +1.331515000E3,5.051963956E1 +1.331772000E3,5.068574448E1 +1.332120000E3,5.754233113E1 +1.332409000E3,5.498832674E1 +1.332740000E3,5.245036701E1 +1.333034000E3,5.885934606E1 +1.333286000E3,5.644915657E1 +1.333540000E3,5.532779852E1 +1.333784000E3,5.694511409E1 +1.334028000E3,5.553937724E1 +1.334302000E3,5.308286554E1 +1.334615000E3,5.140154995E1 +1.334876000E3,5.045296543E1 +1.335187000E3,5.631993217E1 +1.335451000E3,5.435091016E1 +1.335722000E3,5.624357652E1 +1.335986000E3,5.791043400E1 +1.336271000E3,5.847603086E1 +1.336545000E3,5.757219882E1 +1.336794000E3,6.070042624E1 +1.337072000E3,5.247827017E1 +1.337340000E3,5.208145921E1 +1.337609000E3,6.026756153E1 +1.337870000E3,6.012826199E1 +1.338134000E3,5.465450317E1 +1.338408000E3,5.768658418E1 +1.338755000E3,5.542991210E1 +1.339019000E3,5.279974580E1 +1.339289000E3,4.966927449E1 +1.339556000E3,4.563713389E1 +1.339804000E3,4.961972315E1 +1.340056000E3,5.287436972E1 +1.340316000E3,5.318950925E1 +1.340586000E3,5.037908496E1 +1.340881000E3,5.345184090E1 +1.341116000E3,5.016784238E1 +1.341407000E3,5.799295151E1 +1.341694000E3,5.875659808E1 +1.342051000E3,5.666657228E1 +1.342345000E3,5.241270038E1 +1.342638000E3,5.754780266E1 +1.342875000E3,5.669750570E1 +1.343177000E3,5.541629106E1 +1.343432000E3,5.556249818E1 +1.343726000E3,5.603182587E1 +1.343969000E3,5.961525777E1 +1.344257000E3,5.915223521E1 +1.344498000E3,5.820677933E1 +1.344777000E3,5.815031326E1 +1.345094000E3,5.733094423E1 +1.345363000E3,5.538469317E1 +1.345622000E3,6.270903439E1 +1.345877000E3,5.551461514E1 +1.346148000E3,5.750063996E1 +1.346395000E3,5.473739655E1 +1.346676000E3,5.131350753E1 +1.346958000E3,5.072615719E1 +1.347258000E3,4.882711207E1 +1.347518000E3,5.273988371E1 +1.347784000E3,6.269937361E1 +1.348040000E3,6.058958657E1 +1.348391000E3,5.894445662E1 +1.348716000E3,5.683213923E1 +1.348984000E3,5.875140523E1 +1.349236000E3,5.263650529E1 +1.349491000E3,4.630287352E1 +1.349847000E3,5.742006494E1 +1.350115000E3,6.486179330E1 +1.350358000E3,5.963871460E1 +1.350612000E3,5.220281373E1 +1.350868000E3,5.825229613E1 +1.351125000E3,5.822075100E1 +1.351374000E3,5.487419692E1 +1.351666000E3,5.461361208E1 +1.351934000E3,5.384511910E1 +1.352185000E3,5.782109838E1 +1.352440000E3,5.156901690E1 +1.352688000E3,5.262530942E1 +1.352990000E3,5.827406705E1 +1.353265000E3,6.164230870E1 +1.353493000E3,5.939319367E1 +1.353769000E3,5.491407227E1 +1.353989000E3,5.363390940E1 +1.354236000E3,5.108497673E1 +1.354516000E3,6.129017752E1 +1.354836000E3,5.594784457E1 +1.355095000E3,5.172378417E1 +1.355422000E3,5.975901259E1 +1.355685000E3,5.720857994E1 +1.355941000E3,5.600667557E1 +1.356197000E3,5.471836828E1 +1.356478000E3,5.319452565E1 +1.356745000E3,5.296912594E1 +1.357013000E3,5.811625635E1 +1.357280000E3,5.430511038E1 +1.357577000E3,5.277700001E1 +1.357824000E3,5.616769978E1 +1.358135000E3,5.406396803E1 +1.358401000E3,4.910300122E1 +1.358643000E3,5.077236009E1 +1.358892000E3,5.530877446E1 +1.359206000E3,5.787482939E1 +1.359485000E3,5.846197249E1 +1.359760000E3,6.103303991E1 +1.360055000E3,6.092009186E1 +1.360296000E3,5.979156049E1 +1.360590000E3,6.049263298E1 +1.360828000E3,5.895545308E1 +1.361114000E3,5.611946421E1 +1.361473000E3,5.480295831E1 +1.361726000E3,5.397626184E1 +1.361972000E3,5.443193027E1 +1.362314000E3,5.572591927E1 +1.362560000E3,5.224616115E1 +1.362808000E3,5.244486023E1 +1.363061000E3,5.179430466E1 +1.363307000E3,5.228822629E1 +1.363555000E3,5.248152719E1 +1.363850000E3,5.310816898E1 +1.364115000E3,5.586433987E1 +1.364397000E3,5.735023043E1 +1.364703000E3,6.002405491E1 +1.364950000E3,5.692273216E1 +1.365192000E3,5.941823705E1 +1.365459000E3,5.316793659E1 +1.365709000E3,5.869878442E1 +1.365953000E3,5.756526572E1 +1.366216000E3,5.687574379E1 +1.366491000E3,5.232478004E1 +1.366744000E3,5.424491879E1 +1.367001000E3,5.235481979E1 +1.367305000E3,5.164783122E1 +1.367588000E3,4.924997634E1 +1.367934000E3,4.924339558E1 +1.368196000E3,5.793398832E1 +1.368473000E3,5.529211657E1 +1.368719000E3,5.120874356E1 +1.368963000E3,5.470742612E1 +1.369285000E3,5.560989240E1 +1.369528000E3,5.197646059E1 +1.369822000E3,5.152328490E1 +1.370111000E3,5.791930576E1 +1.370416000E3,5.368811562E1 +1.370672000E3,5.769124019E1 +1.370919000E3,5.333549653E1 +1.371292000E3,5.847056292E1 +1.371551000E3,5.642894477E1 +1.371803000E3,5.817537921E1 +1.372074000E3,5.885584750E1 +1.372335000E3,5.395474736E1 +1.372602000E3,5.211537518E1 +1.372880000E3,4.924374923E1 +1.373126000E3,4.882665291E1 +1.373379000E3,5.483140316E1 +1.373636000E3,5.380197532E1 +1.373915000E3,5.629967483E1 +1.374251000E3,5.773524892E1 +1.374636000E3,6.271253195E1 +1.374894000E3,5.870587143E1 +1.375125000E3,5.496954916E1 +1.375369000E3,5.621931219E1 +1.375641000E3,5.700323462E1 +1.375912000E3,5.808968856E1 +1.376161000E3,5.697587873E1 +1.376437000E3,5.739415600E1 +1.376687000E3,5.874614285E1 +1.376941000E3,5.855325473E1 +1.377252000E3,5.287324040E1 +1.377495000E3,5.331405656E1 +1.377862000E3,5.163612814E1 +1.378109000E3,6.003152631E1 +1.378372000E3,6.448039849E1 +1.378641000E3,6.226927373E1 +1.378912000E3,6.355904277E1 +1.379208000E3,6.121718755E1 +1.379463000E3,6.371699462E1 +1.379738000E3,5.774542440E1 +1.380076000E3,5.579766677E1 +1.380318000E3,5.520595979E1 +1.380614000E3,5.395000262E1 +1.380855000E3,5.263752401E1 +1.381221000E3,5.267030150E1 +1.381492000E3,5.304251562E1 +1.381793000E3,4.959737221E1 +1.382100000E3,5.549829026E1 +1.382347000E3,5.821584994E1 +1.382642000E3,5.861199323E1 +1.382905000E3,5.256382895E1 +1.383164000E3,5.491877459E1 +1.383443000E3,5.644995893E1 +1.383702000E3,5.411249990E1 +1.383954000E3,5.324738213E1 +1.384305000E3,5.625052210E1 +1.384532000E3,6.070474662E1 +1.384789000E3,5.237062704E1 +1.385074000E3,5.442107865E1 +1.385361000E3,6.017483878E1 +1.385605000E3,6.237555822E1 +1.385869000E3,5.605951782E1 +1.386126000E3,6.511151133E1 +1.386382000E3,5.571785683E1 +1.386696000E3,5.398201636E1 +1.386954000E3,5.323734283E1 +1.387264000E3,5.635686029E1 +1.387623000E3,5.701357512E1 +1.387874000E3,5.632095063E1 +1.388187000E3,5.288354031E1 +1.388477000E3,5.152350906E1 +1.388761000E3,5.130627857E1 +1.388982000E3,4.918436870E1 +1.389239000E3,5.567775637E1 +1.389545000E3,5.465238648E1 +1.389786000E3,5.003079725E1 +1.390027000E3,5.504486936E1 +1.390282000E3,5.947272344E1 +1.390539000E3,6.106137952E1 +1.390892000E3,5.985290475E1 +1.391203000E3,5.500825546E1 +1.391507000E3,5.157102239E1 +1.391806000E3,5.517662265E1 +1.392108000E3,5.349243854E1 +1.392411000E3,5.386652866E1 +1.392707000E3,5.258839734E1 +1.392973000E3,5.376638351E1 +1.393221000E3,5.619475880E1 +1.393480000E3,5.846509931E1 +1.393767000E3,6.504346680E1 +1.394122000E3,5.865804348E1 +1.394392000E3,5.055217311E1 +1.394673000E3,4.837306759E1 +1.394931000E3,5.564689750E1 +1.395193000E3,5.416088817E1 +1.395489000E3,5.481584764E1 +1.395781000E3,5.356143065E1 +1.396078000E3,5.074158934E1 +1.396313000E3,5.177896206E1 +1.396618000E3,5.670327312E1 +1.396914000E3,6.043149132E1 +1.397246000E3,5.875453471E1 +1.397559000E3,5.725772305E1 +1.397842000E3,5.610169288E1 +1.398092000E3,6.098127982E1 +1.398354000E3,5.385330985E1 +1.398611000E3,5.345613584E1 +1.398873000E3,6.183897473E1 +1.399135000E3,5.898294985E1 +1.399399000E3,5.644599073E1 +1.399662000E3,6.288338842E1 +1.399923000E3,5.844786233E1 +1.400178000E3,6.145207907E1 +1.400438000E3,5.797678971E1 +1.400786000E3,5.805590691E1 +1.401082000E3,5.956739883E1 +1.401323000E3,5.537900496E1 +1.401618000E3,5.084213917E1 +1.401871000E3,4.807017206E1 +1.402118000E3,5.545233073E1 +1.402411000E3,5.516036366E1 +1.402644000E3,5.413431379E1 +1.402920000E3,5.388857626E1 +1.403209000E3,5.292068844E1 +1.403479000E3,5.775211983E1 +1.403718000E3,5.117484548E1 +1.404045000E3,5.912447648E1 +1.404295000E3,5.591921957E1 +1.404568000E3,5.565028551E1 +1.404828000E3,5.013398992E1 +1.405122000E3,5.465164253E1 +1.405364000E3,5.305211462E1 +1.405620000E3,5.755171154E1 +1.405929000E3,6.007655449E1 +1.406174000E3,5.899920387E1 +1.406463000E3,5.970773629E1 +1.406720000E3,5.770443308E1 +1.407009000E3,5.521297881E1 +1.407407000E3,5.604277064E1 +1.407677000E3,5.646208540E1 +1.407969000E3,4.906112006E1 +1.408239000E3,5.193830101E1 +1.408558000E3,4.835599484E1 +1.408830000E3,4.864558507E1 +1.409087000E3,5.566138381E1 +1.409349000E3,5.240816417E1 +1.409604000E3,4.366169359E1 +1.409843000E3,4.924613485E1 +1.410167000E3,5.289541091E1 +1.410462000E3,5.429333459E1 +1.410857000E3,5.232803186E1 +1.411115000E3,5.279391543E1 +1.411388000E3,5.698112108E1 +1.411689000E3,4.954635028E1 +1.411940000E3,5.347151392E1 +1.412202000E3,5.431542928E1 +1.412461000E3,5.708654506E1 +1.412712000E3,5.999867781E1 +1.412972000E3,5.836713300E1 +1.413243000E3,5.662529411E1 +1.413547000E3,5.760118844E1 +1.413790000E3,5.272334048E1 +1.414155000E3,5.585703000E1 +1.414407000E3,5.277217169E1 +1.414666000E3,5.575617717E1 +1.414970000E3,5.588142009E1 +1.415263000E3,5.043609445E1 +1.415519000E3,5.366091219E1 +1.415818000E3,6.729065738E1 +1.416082000E3,5.454700058E1 +1.416357000E3,5.542836481E1 +1.416608000E3,6.150002805E1 +1.416870000E3,5.918799699E1 +1.417164000E3,5.739551304E1 +1.417548000E3,5.312046747E1 +1.417864000E3,5.735989692E1 +1.418111000E3,5.463708503E1 +1.418368000E3,5.616594485E1 +1.418622000E3,5.674613857E1 +1.418880000E3,5.393284238E1 +1.419178000E3,5.477989298E1 +1.419414000E3,5.673628135E1 +1.419692000E3,5.246670124E1 +1.419935000E3,5.929492524E1 +1.420173000E3,5.718550468E1 +1.420417000E3,5.597503360E1 +1.420745000E3,5.209811810E1 +1.421016000E3,5.108820023E1 +1.421271000E3,5.704928631E1 +1.421524000E3,5.534619134E1 +1.421787000E3,5.298830069E1 +1.422048000E3,5.357926773E1 +1.422324000E3,5.150193558E1 +1.422590000E3,5.236977243E1 +1.422860000E3,5.598534631E1 +1.423111000E3,5.804712890E1 +1.423360000E3,5.584477369E1 +1.423617000E3,6.166819052E1 +1.423956000E3,6.217862533E1 +1.424239000E3,6.474885215E1 +1.424493000E3,6.561094566E1 +1.424771000E3,6.624921272E1 +1.425013000E3,6.269332683E1 +1.425310000E3,6.427501900E1 +1.425550000E3,6.406421996E1 +1.425806000E3,6.561696377E1 +1.426124000E3,5.757984813E1 +1.426392000E3,6.467113265E1 +1.426661000E3,6.110360998E1 +1.426971000E3,6.257935575E1 +1.427325000E3,6.059948571E1 +1.427600000E3,6.060080967E1 +1.427858000E3,6.129065918E1 +1.428157000E3,6.869907238E1 +1.428403000E3,6.216021300E1 +1.428668000E3,6.028715826E1 +1.428917000E3,5.215970407E1 +1.429175000E3,5.348756082E1 +1.429445000E3,5.866879342E1 +1.429775000E3,5.422412762E1 +1.430077000E3,5.967912654E1 +1.430370000E3,6.053958419E1 +1.430696000E3,5.642153628E1 +1.430959000E3,5.797803369E1 +1.431217000E3,5.265853131E1 +1.431545000E3,6.085541328E1 +1.431825000E3,6.579757863E1 +1.432095000E3,6.783858113E1 +1.432356000E3,6.680245969E1 +1.432609000E3,5.699539434E1 +1.432887000E3,5.495476405E1 +1.433146000E3,5.431336982E1 +1.433405000E3,5.468573805E1 +1.433768000E3,6.415525931E1 +1.434037000E3,5.996195649E1 +1.434305000E3,5.880144898E1 +1.434536000E3,5.062803370E1 +1.434794000E3,4.838886892E1 +1.435059000E3,4.852598648E1 +1.435348000E3,5.424758091E1 +1.435611000E3,6.028120001E1 +1.435845000E3,5.860165153E1 +1.436098000E3,5.820116177E1 +1.436348000E3,5.458976108E1 +1.436603000E3,5.748661459E1 +1.436983000E3,5.071157707E1 +1.437230000E3,5.187454119E1 +1.437505000E3,5.690962542E1 +1.437744000E3,5.898297949E1 +1.438006000E3,6.083548120E1 +1.438278000E3,4.929702369E1 +1.438556000E3,5.094464024E1 +1.438857000E3,5.451803318E1 +1.439157000E3,4.851675588E1 +1.439427000E3,4.781325912E1 +1.439724000E3,4.919544886E1 +1.439968000E3,4.662525194E1 +1.440374000E3,4.187537091E1 +1.440620000E3,5.083424523E1 +1.440895000E3,4.476479772E1 +1.441179000E3,5.236126827E1 +1.441495000E3,4.954212438E1 +1.441772000E3,5.444261950E1 +1.442048000E3,5.023278537E1 +1.442273000E3,4.640707667E1 +1.442557000E3,5.088583460E1 +1.442822000E3,5.041471443E1 +1.443067000E3,4.940152653E1 +1.443315000E3,4.834999124E1 +1.443550000E3,5.084173145E1 +1.443802000E3,4.674944421E1 +1.444118000E3,5.005548854E1 +1.444412000E3,4.880222753E1 +1.444695000E3,4.829349493E1 +1.444948000E3,4.815408858E1 +1.445231000E3,4.968297573E1 +1.445471000E3,5.263069989E1 +1.445763000E3,4.570389774E1 +1.446062000E3,4.674284816E1 +1.446364000E3,5.179136771E1 +1.446637000E3,5.007894257E1 +1.446884000E3,5.001285233E1 +1.447102000E3,5.063641057E1 +1.447373000E3,4.164946286E1 +1.447601000E3,3.981108666E1 +1.447894000E3,4.316358072E1 +1.448132000E3,5.465701871E1 +1.448431000E3,4.615144027E1 +1.448672000E3,4.353154230E1 +1.448965000E3,5.208221965E1 +1.449200000E3,5.530439334E1 +1.449496000E3,4.996075498E1 +1.449729000E3,5.218941020E1 +1.450060000E3,4.888890123E1 +1.450335000E3,5.030971329E1 +1.450629000E3,5.012870067E1 +1.450899000E3,4.847297804E1 +1.451151000E3,4.759762696E1 +1.451454000E3,4.978926902E1 +1.451751000E3,4.930919072E1 +1.452001000E3,5.004861581E1 +1.452285000E3,5.051309266E1 +1.452566000E3,4.810890055E1 +1.452826000E3,4.654354865E1 +1.453069000E3,4.761425190E1 +1.453369000E3,4.589508435E1 +1.453616000E3,4.954922405E1 +1.453886000E3,4.065983258E1 +1.454197000E3,4.220647307E1 +1.454513000E3,4.858310714E1 +1.454789000E3,5.196405012E1 +1.455012000E3,5.467685341E1 +1.455262000E3,5.753332593E1 +1.455513000E3,4.707036048E1 +1.455859000E3,3.942826471E1 +1.456237000E3,5.170062203E1 +1.456495000E3,6.022707597E1 +1.456743000E3,5.524301158E1 +1.456990000E3,5.482834451E1 +1.457257000E3,4.917995293E1 +1.457590000E3,4.739340640E1 +1.457831000E3,4.842051754E1 +1.458073000E3,6.166669432E1 +1.458329000E3,5.427876580E1 +1.458617000E3,4.896037674E1 +1.458889000E3,4.346397471E1 +1.459122000E3,4.481546196E1 +1.459424000E3,5.149740630E1 +1.459726000E3,4.614214660E1 +1.459975000E3,4.567227587E1 +1.460237000E3,5.348774305E1 +1.460488000E3,5.617792493E1 +1.460730000E3,5.122937085E1 +1.460971000E3,5.712815616E1 +1.461266000E3,5.592815325E1 +1.461504000E3,5.208026338E1 +1.461798000E3,5.368936290E1 +1.462033000E3,5.424431898E1 +1.462332000E3,5.229538114E1 +1.462686000E3,5.012562607E1 +1.462943000E3,5.517893002E1 +1.463292000E3,5.544440679E1 +1.463574000E3,5.195225561E1 +1.463851000E3,5.582804772E1 +1.464133000E3,5.163717454E1 +1.464392000E3,5.056978371E1 +1.464653000E3,5.085736348E1 +1.464931000E3,5.111025552E1 +1.465171000E3,5.008163028E1 +1.465468000E3,5.204681239E1 +1.465721000E3,4.873162615E1 +1.466070000E3,5.052420662E1 +1.466365000E3,5.115431116E1 +1.466626000E3,5.008089225E1 +1.466902000E3,5.455907242E1 +1.467123000E3,5.881328519E1 +1.467422000E3,5.654049662E1 +1.467665000E3,6.208900398E1 +1.467911000E3,5.573620080E1 +1.468210000E3,5.034178452E1 +1.468461000E3,4.644884091E1 +1.468716000E3,4.489036287E1 +1.469021000E3,4.555962209E1 +1.469437000E3,4.956164087E1 +1.469733000E3,5.014140659E1 +1.469995000E3,5.025508197E1 +1.470298000E3,4.976482928E1 +1.470552000E3,4.666552600E1 +1.470801000E3,5.164800320E1 +1.471107000E3,4.748865751E1 +1.471358000E3,5.068455306E1 +1.471623000E3,5.380657492E1 +1.471874000E3,4.918332364E1 +1.472155000E3,4.974368594E1 +1.472539000E3,5.519550202E1 +1.472795000E3,5.119649457E1 +1.473056000E3,5.406344748E1 +1.473370000E3,5.554928156E1 +1.473655000E3,5.458007948E1 +1.473895000E3,5.519923804E1 +1.474152000E3,5.580016483E1 +1.474437000E3,5.718813696E1 +1.474685000E3,5.734393611E1 +1.474960000E3,5.879862387E1 +1.475221000E3,5.602300215E1 +1.475474000E3,5.025640835E1 +1.475826000E3,5.543439402E1 +1.476071000E3,5.232164352E1 +1.476323000E3,5.898115961E1 +1.476584000E3,6.066467981E1 +1.476821000E3,5.071984472E1 +1.477123000E3,5.740447565E1 +1.477365000E3,5.959782608E1 +1.477662000E3,5.958620190E1 +1.477906000E3,5.753388342E1 +1.478144000E3,5.506848886E1 +1.478455000E3,5.769430513E1 +1.478723000E3,5.629679592E1 +1.478987000E3,5.649495967E1 +1.479262000E3,5.787253729E1 +1.479512000E3,5.216150167E1 +1.479813000E3,4.948302212E1 +1.480088000E3,5.080056078E1 +1.480342000E3,4.734041467E1 +1.480601000E3,4.440736689E1 +1.480866000E3,5.120725270E1 +1.481166000E3,5.053254929E1 +1.481466000E3,5.274685420E1 +1.481724000E3,5.071521067E1 +1.481973000E3,5.225995741E1 +1.482300000E3,5.133897759E1 +1.482575000E3,5.007250383E1 +1.482845000E3,5.042400131E1 +1.483101000E3,5.258901014E1 +1.483408000E3,5.618504625E1 +1.483668000E3,5.503349900E1 +1.483933000E3,4.974702245E1 +1.484194000E3,5.170781389E1 +1.484440000E3,5.072340799E1 +1.484707000E3,5.947536199E1 +1.485018000E3,5.467515596E1 +1.485306000E3,6.085614245E1 +1.485656000E3,5.990152864E1 +1.485935000E3,5.602550586E1 +1.486168000E3,5.561766537E1 +1.486422000E3,5.350876804E1 +1.486701000E3,5.699979875E1 +1.486960000E3,5.177464585E1 +1.487207000E3,5.249766501E1 +1.487486000E3,5.285366750E1 +1.487751000E3,5.316768095E1 +1.488002000E3,4.876639606E1 +1.488262000E3,5.179834313E1 +1.488516000E3,4.991892364E1 +1.488812000E3,5.156353661E1 +1.489125000E3,5.341434219E1 +1.489400000E3,5.426211096E1 +1.489675000E3,4.699672779E1 +1.489958000E3,5.361914521E1 +1.490219000E3,5.605827819E1 +1.490490000E3,5.089547448E1 +1.490772000E3,5.163564337E1 +1.491061000E3,5.841576784E1 +1.491309000E3,5.524417730E1 +1.491589000E3,5.450558122E1 +1.491873000E3,5.581032480E1 +1.492194000E3,5.802352567E1 +1.492448000E3,4.962366630E1 +1.492810000E3,5.873656508E1 +1.493058000E3,5.690804947E1 +1.493359000E3,5.262261274E1 +1.493674000E3,5.584655342E1 +1.493919000E3,5.542283425E1 +1.494163000E3,5.373884310E1 +1.494412000E3,5.084083433E1 +1.494678000E3,4.964027690E1 +1.494956000E3,5.125570040E1 +1.495204000E3,5.194895191E1 +1.495526000E3,4.961412488E1 +1.495784000E3,4.972405818E1 +1.496036000E3,4.777083448E1 +1.496283000E3,5.231556692E1 +1.496593000E3,5.894066851E1 +1.496842000E3,6.007182772E1 +1.497086000E3,6.003234807E1 +1.497358000E3,5.170627362E1 +1.497682000E3,5.564688341E1 +1.497937000E3,5.459086103E1 +1.498234000E3,5.654462748E1 +1.498530000E3,5.643601391E1 +1.498887000E3,5.593732695E1 +1.499182000E3,5.279859883E1 +1.499469000E3,5.063056157E1 +1.499723000E3,4.846330641E1 +1.499972000E3,5.696559719E1 +1.500236000E3,5.806291630E1 +1.500555000E3,5.485435177E1 +1.500851000E3,5.386376671E1 +1.501120000E3,5.529102258E1 +1.501400000E3,5.058415032E1 +1.501675000E3,5.420960743E1 +1.501928000E3,4.962388553E1 +1.502263000E3,5.167692375E1 +1.502567000E3,5.072695334E1 +1.502878000E3,5.319678523E1 +1.503119000E3,5.961199300E1 +1.503369000E3,5.299728366E1 +1.503631000E3,5.369404965E1 +1.503941000E3,5.426817134E1 +1.504209000E3,5.369336762E1 +1.504462000E3,5.246626497E1 +1.504724000E3,5.358557871E1 +1.505015000E3,4.957781391E1 +1.505279000E3,5.117668163E1 +1.505699000E3,5.216401891E1 +1.505963000E3,5.011348657E1 +1.506261000E3,5.259055540E1 +1.506507000E3,4.579432510E1 +1.506795000E3,4.877099475E1 +1.507032000E3,4.679595596E1 +1.507314000E3,5.136222565E1 +1.507549000E3,5.267101191E1 +1.507792000E3,5.244999525E1 +1.508074000E3,5.180561005E1 +1.508391000E3,5.030990700E1 +1.508607000E3,5.167226321E1 +1.508859000E3,5.218207738E1 +1.509151000E3,5.317725961E1 +1.509397000E3,5.318899610E1 +1.509689000E3,4.978257152E1 +1.509934000E3,5.032443800E1 +1.510228000E3,4.777293014E1 +1.510466000E3,4.646316587E1 +1.510767000E3,5.646850943E1 +1.511001000E3,5.638889819E1 +1.511293000E3,5.773758842E1 +1.511610000E3,5.580372922E1 +1.511900000E3,5.517502050E1 +1.512151000E3,5.684013484E1 +1.512393000E3,5.407249321E1 +1.512652000E3,5.725430710E1 +1.512902000E3,5.755876004E1 +1.513148000E3,5.492786930E1 +1.513404000E3,5.665177401E1 +1.513705000E3,5.675683028E1 +1.513957000E3,5.845897420E1 +1.514258000E3,5.334537973E1 +1.514488000E3,5.035361876E1 +1.514812000E3,4.886526824E1 +1.515059000E3,5.555156669E1 +1.515357000E3,5.401240780E1 +1.515600000E3,5.191330713E1 +1.515873000E3,5.158089375E1 +1.516102000E3,5.397456219E1 +1.516410000E3,5.205317520E1 +1.516679000E3,5.689433829E1 +1.516971000E3,5.397466306E1 +1.517230000E3,5.553699481E1 +1.517504000E3,5.550832571E1 +1.517763000E3,5.490604036E1 +1.518130000E3,5.129555301E1 +1.518403000E3,5.478479772E1 +1.518670000E3,5.687403653E1 +1.518921000E3,5.464295853E1 +1.519177000E3,5.713561839E1 +1.519461000E3,5.306473622E1 +1.519745000E3,5.320579073E1 +1.520002000E3,5.309385307E1 +1.520258000E3,5.058967996E1 +1.520552000E3,5.470724085E1 +1.520793000E3,5.303104936E1 +1.521156000E3,5.432496893E1 +1.521453000E3,5.594215604E1 +1.521721000E3,5.308545736E1 +1.521969000E3,5.327888421E1 +1.522220000E3,5.030915333E1 +1.522490000E3,5.230098434E1 +1.522776000E3,4.743827766E1 +1.523026000E3,5.464211349E1 +1.523327000E3,5.322537523E1 +1.523581000E3,5.154569729E1 +1.523826000E3,5.335950152E1 +1.524133000E3,5.482016506E1 +1.524417000E3,5.825411535E1 +1.524853000E3,5.879893849E1 +1.525179000E3,5.728744863E1 +1.525433000E3,5.737571640E1 +1.525696000E3,5.681107869E1 +1.525950000E3,5.695921586E1 +1.526210000E3,5.455429607E1 +1.526487000E3,5.808007225E1 +1.526729000E3,5.500512440E1 +1.527042000E3,5.476260812E1 +1.527339000E3,5.849962899E1 +1.527579000E3,5.719021529E1 +1.527910000E3,5.422226824E1 +1.528160000E3,5.266147572E1 +1.528411000E3,5.030747323E1 +1.528675000E3,5.057502492E1 +1.528920000E3,5.365292462E1 +1.529175000E3,5.444435151E1 +1.529423000E3,5.586906556E1 +1.529732000E3,5.808239082E1 +1.530030000E3,5.492304678E1 +1.530283000E3,5.727734117E1 +1.530542000E3,5.518682809E1 +1.530805000E3,5.838179726E1 +1.531133000E3,5.619103982E1 +1.531448000E3,5.705771680E1 +1.531738000E3,5.605732573E1 +1.531987000E3,5.497746164E1 +1.532293000E3,5.570350387E1 +1.532602000E3,5.687942595E1 +1.532873000E3,5.590365459E1 +1.533132000E3,5.379832162E1 +1.533387000E3,5.951317374E1 +1.533654000E3,5.728034638E1 +1.533915000E3,5.755019099E1 +1.534163000E3,5.625336618E1 +1.534512000E3,5.560455999E1 +1.534783000E3,5.186395468E1 +1.535086000E3,6.018952062E1 +1.535379000E3,5.360739703E1 +1.535619000E3,5.637744941E1 +1.535916000E3,5.710534601E1 +1.536153000E3,5.751101039E1 +1.536449000E3,5.888699469E1 +1.536688000E3,5.900809640E1 +1.536983000E3,5.539354346E1 +1.537218000E3,5.212761926E1 +1.537514000E3,6.113968309E1 +1.537773000E3,5.789795306E1 +1.538038000E3,6.065119472E1 +1.538356000E3,5.715251587E1 +1.538607000E3,5.728294892E1 +1.538911000E3,5.939537878E1 +1.539175000E3,5.879010449E1 +1.539417000E3,6.007594674E1 +1.539661000E3,5.983742076E1 +1.539908000E3,6.299497704E1 +1.540182000E3,6.042347696E1 +1.540457000E3,5.844914903E1 +1.540758000E3,5.775362746E1 +1.541037000E3,5.216165265E1 +1.541334000E3,5.255584969E1 +1.541593000E3,5.278098471E1 +1.541846000E3,5.581770981E1 +1.542092000E3,5.736301867E1 +1.542389000E3,5.733951694E1 +1.542623000E3,5.674705381E1 +1.542880000E3,5.506043774E1 +1.543125000E3,5.404728252E1 +1.543453000E3,5.428884791E1 +1.543732000E3,5.547580162E1 +1.544085000E3,5.471747417E1 +1.544346000E3,5.496243571E1 +1.544613000E3,5.288395526E1 +1.544860000E3,5.036194227E1 +1.545111000E3,5.124283852E1 +1.545413000E3,5.731432515E1 +1.545687000E3,5.663908688E1 +1.545955000E3,5.741659811E1 +1.546253000E3,5.084604561E1 +1.546502000E3,5.163330463E1 +1.546772000E3,4.777378739E1 +1.547025000E3,5.200725426E1 +1.547353000E3,5.049690945E1 +1.547625000E3,5.284766124E1 +1.547924000E3,5.396462244E1 +1.548148000E3,5.375524192E1 +1.548403000E3,5.670544075E1 +1.548716000E3,5.332369727E1 +1.548963000E3,5.544219871E1 +1.549238000E3,5.323430806E1 +1.549471000E3,5.180674965E1 +1.549727000E3,5.329467652E1 +1.550023000E3,5.080742485E1 +1.550310000E3,5.026906170E1 +1.550639000E3,5.582908231E1 +1.550905000E3,5.331150300E1 +1.551172000E3,5.186910180E1 +1.551471000E3,5.624561668E1 +1.551739000E3,5.555744845E1 +1.552012000E3,5.944044312E1 +1.552264000E3,6.002272858E1 +1.552531000E3,5.816546804E1 +1.552850000E3,5.936846960E1 +1.553097000E3,5.514794057E1 +1.553401000E3,5.160130424E1 +1.553757000E3,5.107783990E1 +1.554023000E3,5.871375450E1 +1.554276000E3,5.617325190E1 +1.554544000E3,5.736189521E1 +1.554800000E3,5.317828333E1 +1.555051000E3,5.715279916E1 +1.555321000E3,5.726931658E1 +1.555563000E3,5.567771069E1 +1.555823000E3,5.156101336E1 +1.556126000E3,5.688446569E1 +1.556378000E3,6.074118939E1 +1.556642000E3,5.974958265E1 +1.556918000E3,5.702757711E1 +1.557208000E3,5.874442787E1 +1.557457000E3,5.795683904E1 +1.557722000E3,6.039916355E1 +1.558025000E3,5.662755924E1 +1.558320000E3,5.332514547E1 +1.558595000E3,6.059700286E1 +1.558850000E3,5.775207016E1 +1.559098000E3,6.106988435E1 +1.559349000E3,6.039494527E1 +1.559644000E3,5.672405799E1 +1.559889000E3,5.814375710E1 +1.560135000E3,6.159401746E1 +1.560480000E3,5.397583636E1 +1.560770000E3,5.291692280E1 +1.561026000E3,5.439035965E1 +1.561320000E3,5.553984968E1 +1.561619000E3,5.808332247E1 +1.561927000E3,5.744100555E1 +1.562191000E3,5.636250023E1 +1.562451000E3,6.055150308E1 +1.562703000E3,5.624161562E1 +1.562979000E3,5.401048000E1 +1.563233000E3,5.588901558E1 +1.563595000E3,6.020828902E1 +1.563855000E3,6.586197618E1 +1.564143000E3,5.744692826E1 +1.564421000E3,5.175273280E1 +1.564681000E3,5.584828423E1 +1.564939000E3,5.622472521E1 +1.565190000E3,5.419184381E1 +1.565447000E3,4.818775863E1 +1.565701000E3,5.443344746E1 +1.565956000E3,4.960344337E1 +1.566224000E3,6.289868185E1 +1.566469000E3,6.499026885E1 +1.566794000E3,6.277031329E1 +1.567086000E3,5.336636778E1 +1.567405000E3,5.867761918E1 +1.567644000E3,5.135518394E1 +1.567909000E3,5.665720126E1 +1.568204000E3,5.915910399E1 +1.568455000E3,5.687790668E1 +1.568730000E3,5.815647569E1 +1.568976000E3,5.595761669E1 +1.569238000E3,5.367288589E1 +1.569491000E3,4.954593185E1 +1.569752000E3,5.199120702E1 +1.570099000E3,5.857172858E1 +1.570354000E3,5.533510860E1 +1.570614000E3,5.615291914E1 +1.570871000E3,4.816531300E1 +1.571136000E3,4.597509459E1 +1.571387000E3,5.454256971E1 +1.571722000E3,5.262076426E1 +1.572010000E3,5.108681545E1 +1.572285000E3,5.269091247E1 +1.572547000E3,4.898785412E1 +1.572807000E3,4.867008841E1 +1.573066000E3,5.306545801E1 +1.573313000E3,5.092331160E1 +1.573694000E3,5.549117670E1 +1.574009000E3,5.304099104E1 +1.574279000E3,5.377011563E1 +1.574520000E3,5.244694975E1 +1.574770000E3,5.542353961E1 +1.575031000E3,5.327330735E1 +1.575319000E3,5.123065406E1 +1.575617000E3,5.429517947E1 +1.575867000E3,5.443507599E1 +1.576132000E3,5.273613947E1 +1.576382000E3,5.717979407E1 +1.576705000E3,5.184816589E1 +1.576955000E3,4.851208329E1 +1.577250000E3,4.976440939E1 +1.577493000E3,5.236737582E1 +1.577737000E3,5.414723297E1 +1.577998000E3,5.490706774E1 +1.578342000E3,5.591011545E1 +1.578650000E3,5.689754115E1 +1.578906000E3,5.680987850E1 +1.579148000E3,5.379415708E1 +1.579394000E3,5.844713665E1 +1.579644000E3,4.927798375E1 +1.580006000E3,5.263100090E1 +1.580294000E3,5.410513055E1 +1.580548000E3,5.541047194E1 +1.580801000E3,5.058665778E1 +1.581070000E3,5.191468462E1 +1.581349000E3,4.623838572E1 +1.581601000E3,4.883886927E1 +1.581851000E3,4.951159763E1 +1.582152000E3,5.372806241E1 +1.582461000E3,4.077427406E1 +1.582742000E3,4.089897224E1 +1.582967000E3,4.661834708E1 +1.583330000E3,4.498181641E1 +1.583574000E3,4.413204165E1 +1.583835000E3,4.830731952E1 +1.584102000E3,5.133890730E1 +1.584385000E3,5.327819620E1 +1.584689000E3,5.148788947E1 +1.584935000E3,5.259351261E1 +1.585217000E3,5.210912674E1 +1.585449000E3,5.375523399E1 +1.585710000E3,5.030792675E1 +1.585957000E3,5.116594607E1 +1.586271000E3,5.729332409E1 +1.586601000E3,5.372439258E1 +1.586868000E3,5.283683191E1 +1.587111000E3,5.261490358E1 +1.587371000E3,5.394382083E1 +1.587617000E3,5.362104804E1 +1.587861000E3,5.192909002E1 +1.588111000E3,5.534291684E1 +1.588356000E3,5.529045875E1 +1.588616000E3,5.723903943E1 +1.588878000E3,5.769467674E1 +1.589116000E3,5.686991669E1 +1.589367000E3,5.472851050E1 +1.589709000E3,5.509501284E1 +1.589971000E3,6.218794924E1 +1.590276000E3,5.544714813E1 +1.590522000E3,5.587492513E1 +1.590770000E3,6.310127100E1 +1.591031000E3,6.016601681E1 +1.591331000E3,5.868635044E1 +1.591588000E3,5.739907262E1 +1.591847000E3,5.500154159E1 +1.592105000E3,5.382353142E1 +1.592358000E3,5.235465349E1 +1.592660000E3,5.432444683E1 +1.592979000E3,5.583837344E1 +1.593280000E3,5.890777444E1 +1.593531000E3,6.247008348E1 +1.593777000E3,5.524440051E1 +1.594082000E3,6.039849382E1 +1.594376000E3,5.779880973E1 +1.594616000E3,6.006977904E1 +1.594916000E3,6.157791897E1 +1.595158000E3,5.727348505E1 +1.595456000E3,6.219777130E1 +1.595702000E3,6.333776727E1 +1.596011000E3,6.315243887E1 +1.596287000E3,5.622487117E1 +1.596582000E3,4.999384026E1 +1.596838000E3,6.052096287E1 +1.597136000E3,5.730636753E1 +1.597383000E3,5.672770046E1 +1.597632000E3,5.282894107E1 +1.597943000E3,5.609826115E1 +1.598240000E3,5.950608691E1 +1.598483000E3,5.262580449E1 +1.598777000E3,5.638403375E1 +1.599039000E3,5.695994656E1 +1.599354000E3,5.595638462E1 +1.599677000E3,5.456948793E1 +1.599955000E3,5.641745933E1 +1.600254000E3,5.373490010E1 +1.600541000E3,5.613295480E1 +1.600824000E3,5.295628543E1 +1.601071000E3,5.036371368E1 +1.601313000E3,5.734560753E1 +1.601585000E3,5.869799540E1 +1.601832000E3,5.689867309E1 +1.602079000E3,5.521901034E1 +1.602376000E3,5.958743796E1 +1.602630000E3,5.697555749E1 +1.602881000E3,6.067520996E1 +1.603136000E3,6.296730837E1 +1.603381000E3,6.302345663E1 +1.603674000E3,5.614231839E1 +1.603920000E3,5.471880748E1 +1.604179000E3,6.025548138E1 +1.604432000E3,5.848975602E1 +1.604677000E3,6.051353275E1 +1.604988000E3,6.061163824E1 +1.605287000E3,5.127173554E1 +1.605535000E3,5.271948405E1 +1.605890000E3,5.457177629E1 +1.606143000E3,5.047420148E1 +1.606392000E3,5.197178768E1 +1.606684000E3,5.635777628E1 +1.606927000E3,5.691931577E1 +1.607165000E3,5.135114371E1 +1.607440000E3,5.173034620E1 +1.607734000E3,5.786109434E1 +1.607974000E3,5.620528212E1 +1.608236000E3,5.432552885E1 +1.608507000E3,5.036034087E1 +1.608763000E3,4.872303481E1 +1.609123000E3,5.516764205E1 +1.609377000E3,5.867465981E1 +1.609624000E3,5.634077767E1 +1.609869000E3,5.153316916E1 +1.610150000E3,5.212022412E1 +1.610428000E3,5.727395868E1 +1.610681000E3,5.443759521E1 +1.610944000E3,5.599199613E1 +1.611242000E3,5.709063131E1 +1.611495000E3,5.747461955E1 +1.611762000E3,5.445378087E1 +1.612040000E3,5.178206799E1 +1.612294000E3,5.347146008E1 +1.612548000E3,5.695533984E1 +1.612791000E3,5.852885666E1 +1.613050000E3,5.349710519E1 +1.613354000E3,5.482274130E1 +1.613598000E3,5.580201302E1 +1.613898000E3,5.533013655E1 +1.614151000E3,5.307302798E1 +1.614404000E3,5.034267096E1 +1.614651000E3,5.096368681E1 +1.614959000E3,5.358615730E1 +1.615202000E3,5.402822959E1 +1.615565000E3,5.173226008E1 +1.615815000E3,5.317238447E1 +1.616120000E3,5.490271856E1 +1.616406000E3,5.760350961E1 +1.616712000E3,5.516631401E1 +1.616950000E3,5.344247717E1 +1.617197000E3,5.105574764E1 +1.617480000E3,5.297874749E1 +1.617726000E3,5.181083735E1 +1.617978000E3,5.504462581E1 +1.618236000E3,5.652623382E1 +1.618484000E3,5.850281135E1 +1.618804000E3,5.207268405E1 +1.619061000E3,4.595989093E1 +1.619309000E3,5.832875112E1 +1.619574000E3,5.691639889E1 +1.619831000E3,5.277897330E1 +1.620092000E3,5.634285556E1 +1.620390000E3,5.782897026E1 +1.620660000E3,6.167326244E1 +1.620905000E3,5.736569246E1 +1.621145000E3,6.422841213E1 +1.621400000E3,6.037316593E1 +1.621649000E3,5.869946609E1 +1.622005000E3,6.007663283E1 +1.622308000E3,5.750286676E1 +1.622551000E3,5.315958033E1 +1.622849000E3,5.996646537E1 +1.623085000E3,6.310656156E1 +1.623382000E3,6.410911411E1 +1.623620000E3,6.559322950E1 +1.623914000E3,6.191537215E1 +1.624148000E3,6.509401862E1 +1.624441000E3,6.149444047E1 +1.624676000E3,5.887830140E1 +1.624914000E3,5.333395699E1 +1.625242000E3,5.080509527E1 +1.625531000E3,5.208999136E1 +1.625827000E3,4.936268455E1 +1.626072000E3,4.620940228E1 +1.626384000E3,4.812346411E1 +1.626678000E3,5.508818133E1 +1.626931000E3,5.929414420E1 +1.627193000E3,5.798382987E1 +1.627446000E3,5.695027340E1 +1.627690000E3,6.200547811E1 +1.627940000E3,5.895921781E1 +1.628278000E3,5.832121877E1 +1.628595000E3,5.727506493E1 +1.628914000E3,5.676841787E1 +1.629164000E3,5.904549933E1 +1.629453000E3,6.079247221E1 +1.629705000E3,5.978532207E1 +1.629973000E3,6.204876077E1 +1.630223000E3,6.278691878E1 +1.630527000E3,5.775584326E1 +1.630780000E3,5.715423799E1 +1.631076000E3,5.993810238E1 +1.631416000E3,5.945816984E1 +1.631690000E3,5.911038375E1 +1.631989000E3,6.401318161E1 +1.632251000E3,6.288325429E1 +1.632577000E3,6.142114348E1 +1.632857000E3,6.027735545E1 +1.633125000E3,6.058800698E1 +1.633410000E3,6.197295377E1 +1.633713000E3,5.649410931E1 +1.633983000E3,5.349526422E1 +1.634267000E3,5.160473432E1 +1.634550000E3,5.471426263E1 +1.634881000E3,5.381566790E1 +1.635145000E3,5.592472168E1 +1.635394000E3,5.502963456E1 +1.635636000E3,5.458091777E1 +1.635914000E3,5.361113418E1 +1.636211000E3,5.972112366E1 +1.636510000E3,6.134956919E1 +1.636770000E3,6.291498703E1 +1.637018000E3,6.051799303E1 +1.637272000E3,5.800319143E1 +1.637535000E3,6.099184952E1 +1.637791000E3,6.192072936E1 +1.638191000E3,5.592689657E1 +1.638462000E3,5.015193522E1 +1.638759000E3,5.662906295E1 +1.638997000E3,6.189212385E1 +1.639312000E3,5.656112303E1 +1.639618000E3,5.827187766E1 +1.639922000E3,5.894515280E1 +1.640188000E3,5.379936676E1 +1.640446000E3,5.498271927E1 +1.640705000E3,5.883708769E1 +1.641003000E3,5.515786146E1 +1.641329000E3,5.323855564E1 +1.641593000E3,5.000482182E1 +1.641876000E3,5.182077324E1 +1.642101000E3,5.319082569E1 +1.642344000E3,6.611850928E1 +1.642626000E3,5.190424983E1 +1.642867000E3,5.081734830E1 +1.643118000E3,5.711045841E1 +1.643458000E3,5.520016906E1 +1.643723000E3,5.247062228E1 +1.643997000E3,5.309157546E1 +1.644256000E3,5.339769460E1 +1.644621000E3,5.982216134E1 +1.644883000E3,5.915424673E1 +1.645133000E3,5.849263499E1 +1.645426000E3,5.826666974E1 +1.645723000E3,5.673329902E1 +1.645972000E3,5.580417722E1 +1.646244000E3,5.457004449E1 +1.646473000E3,5.835958867E1 +1.646716000E3,5.599398637E1 +1.646958000E3,5.928075116E1 +1.647232000E3,5.394053714E1 +1.647507000E3,5.853879118E1 +1.647858000E3,5.674494648E1 +1.648113000E3,5.640074652E1 +1.648414000E3,5.694867796E1 +1.648656000E3,5.573466688E1 +1.648962000E3,5.556104957E1 +1.649254000E3,5.770712773E1 +1.649548000E3,5.765349227E1 +1.649790000E3,5.583875333E1 +1.650054000E3,6.321152276E1 +1.650306000E3,5.966047080E1 +1.650600000E3,5.502015578E1 +1.650872000E3,5.066616477E1 +1.651172000E3,5.442335496E1 +1.651440000E3,5.956947456E1 +1.651736000E3,5.798320450E1 +1.651979000E3,5.739040713E1 +1.652228000E3,5.803662120E1 +1.652491000E3,6.146613872E1 +1.652750000E3,5.929116619E1 +1.653021000E3,5.936282359E1 +1.653288000E3,5.853226920E1 +1.653570000E3,5.954415072E1 +1.653872000E3,5.749576278E1 +1.654250000E3,5.567111200E1 +1.654518000E3,6.059415807E1 +1.654812000E3,5.855300274E1 +1.655081000E3,5.797601107E1 +1.655350000E3,6.029475669E1 +1.655647000E3,5.264118678E1 +1.655893000E3,5.715075800E1 +1.656153000E3,5.787679223E1 +1.656407000E3,6.038334743E1 +1.656655000E3,6.038245752E1 +1.656912000E3,5.475945603E1 +1.657171000E3,5.661674174E1 +1.657473000E3,5.618877186E1 +1.657717000E3,5.712918740E1 +1.657972000E3,5.834783502E1 +1.658283000E3,6.198115012E1 +1.658526000E3,5.639977894E1 +1.658788000E3,5.416850689E1 +1.659089000E3,5.679686188E1 +1.659335000E3,5.697270686E1 +1.659619000E3,5.371836804E1 +1.659873000E3,6.082252986E1 +1.660120000E3,6.285201132E1 +1.660416000E3,6.088574857E1 +1.660728000E3,6.109109391E1 +1.661004000E3,5.861240224E1 +1.661283000E3,6.123850168E1 +1.661519000E3,5.849447684E1 +1.661821000E3,5.472352136E1 +1.662065000E3,5.502625911E1 +1.662312000E3,5.606436387E1 +1.662565000E3,5.546236927E1 +1.662845000E3,6.075823181E1 +1.663075000E3,5.951357638E1 +1.663350000E3,5.956681026E1 +1.663575000E3,5.780116333E1 +1.663928000E3,6.184122024E1 +1.664178000E3,5.626291699E1 +1.664419000E3,5.635545931E1 +1.664671000E3,5.487242490E1 +1.664936000E3,5.392872477E1 +1.665237000E3,5.658170902E1 +1.665476000E3,5.449322435E1 +1.665752000E3,5.111063749E1 +1.665997000E3,5.288359358E1 +1.666249000E3,5.825102048E1 +1.666508000E3,6.087585373E1 +1.666750000E3,5.822210598E1 +1.667110000E3,6.320270923E1 +1.667355000E3,5.563170163E1 +1.667628000E3,5.240635194E1 +1.667875000E3,5.485055122E1 +1.668144000E3,5.590209292E1 +1.668402000E3,5.750031923E1 +1.668648000E3,5.301598344E1 +1.668896000E3,5.208077776E1 +1.669157000E3,5.024112467E1 +1.669414000E3,5.530220423E1 +1.669710000E3,5.585178295E1 +1.669955000E3,5.443268015E1 +1.670292000E3,5.292974908E1 +1.670566000E3,5.501741168E1 +1.670818000E3,5.190433464E1 +1.671077000E3,5.602388651E1 +1.671384000E3,5.384205522E1 +1.671688000E3,5.355394771E1 +1.671956000E3,4.896600257E1 +1.672212000E3,4.457728928E1 +1.672483000E3,5.407780485E1 +1.672726000E3,5.808535163E1 +1.672991000E3,5.497589856E1 +1.673269000E3,5.816061182E1 +1.673625000E3,5.457220472E1 +1.673896000E3,5.852786772E1 +1.674165000E3,5.615855966E1 +1.674439000E3,5.901141794E1 +1.674702000E3,5.821771493E1 +1.675040000E3,5.533746886E1 +1.675330000E3,5.469332456E1 +1.675631000E3,5.895976057E1 +1.675867000E3,5.565047570E1 +1.676161000E3,5.342216333E1 +1.676431000E3,5.339304237E1 +1.676716000E3,5.196130631E1 +1.677075000E3,5.500129023E1 +1.677346000E3,5.649474234E1 +1.677614000E3,5.620691351E1 +1.677867000E3,5.756400488E1 +1.678112000E3,5.571225073E1 +1.678362000E3,6.171466353E1 +1.678655000E3,5.523245256E1 +1.678909000E3,5.780473196E1 +1.679167000E3,5.918101801E1 +1.679536000E3,5.449831587E1 +1.679788000E3,5.278747036E1 +1.680072000E3,5.502423006E1 +1.680392000E3,5.603218813E1 +1.680667000E3,5.681691969E1 +1.680917000E3,5.574952817E1 +1.681227000E3,5.747793831E1 +1.681510000E3,5.831554727E1 +1.681811000E3,5.823344802E1 +1.682073000E3,5.677197169E1 +1.682402000E3,5.423243511E1 +1.682746000E3,5.568639423E1 +1.683007000E3,5.601571559E1 +1.683297000E3,5.788588795E1 +1.683563000E3,5.178162942E1 +1.683805000E3,5.244727762E1 +1.684102000E3,5.504021082E1 +1.684342000E3,5.312145782E1 +1.684637000E3,5.266466104E1 +1.684875000E3,5.430143327E1 +1.685171000E3,5.731848010E1 +1.685409000E3,5.314967575E1 +1.685703000E3,5.210480680E1 +1.685940000E3,5.447962472E1 +1.686242000E3,5.671930258E1 +1.686480000E3,5.298653153E1 +1.686837000E3,5.390672385E1 +1.687083000E3,5.256535993E1 +1.687387000E3,5.295433262E1 +1.687686000E3,4.693434793E1 +1.687930000E3,5.264001548E1 +1.688191000E3,4.696703102E1 +1.688514000E3,5.290693761E1 +1.688768000E3,5.572289252E1 +1.689025000E3,5.629476293E1 +1.689331000E3,5.221395629E1 +1.689585000E3,5.553268928E1 +1.689905000E3,5.392885939E1 +1.690136000E3,5.613018872E1 +1.690432000E3,5.323144022E1 +1.690690000E3,5.426457319E1 +1.690988000E3,5.869511223E1 +1.691244000E3,5.724931575E1 +1.691548000E3,5.702890727E1 +1.691819000E3,5.957894946E1 +1.692068000E3,5.833323285E1 +1.692367000E3,5.920896731E1 +1.692598000E3,5.809066040E1 +1.692847000E3,5.683194919E1 +1.693218000E3,5.880411413E1 +1.693536000E3,5.430005356E1 +1.693836000E3,5.347827494E1 +1.694082000E3,5.139526617E1 +1.694323000E3,6.486669482E1 +1.694607000E3,5.827670564E1 +1.694879000E3,5.749070135E1 +1.695112000E3,5.439297467E1 +1.695418000E3,5.591879208E1 +1.695720000E3,5.984156108E1 +1.695978000E3,5.763450389E1 +1.696238000E3,5.535113951E1 +1.696577000E3,5.468640858E1 +1.696840000E3,5.145216534E1 +1.697142000E3,5.633820526E1 +1.697434000E3,5.961813260E1 +1.697672000E3,5.761348305E1 +1.697970000E3,5.587832748E1 +1.698213000E3,5.615239979E1 +1.698514000E3,6.142159571E1 +1.698744000E3,5.868747140E1 +1.699038000E3,5.639074769E1 +1.699277000E3,5.843791784E1 +1.699602000E3,5.580904726E1 +1.699849000E3,5.188032815E1 +1.700148000E3,6.050592844E1 +1.700415000E3,5.851925341E1 +1.700742000E3,5.754370303E1 +1.700996000E3,5.792652906E1 +1.701265000E3,5.809754284E1 +1.701543000E3,5.435013872E1 +1.701827000E3,5.364293620E1 +1.702095000E3,5.742174876E1 +1.702342000E3,5.921232761E1 +1.702597000E3,5.246613397E1 +1.702852000E3,5.865178399E1 +1.703188000E3,6.209648540E1 +1.703456000E3,5.783126524E1 +1.703723000E3,6.129722089E1 +1.704021000E3,6.159059582E1 +1.704258000E3,6.290365934E1 +1.704500000E3,5.899658178E1 +1.704744000E3,5.570772177E1 +1.705020000E3,6.042975914E1 +1.705281000E3,6.063911519E1 +1.705578000E3,5.667741437E1 +1.705818000E3,5.616948640E1 +1.706065000E3,5.809228765E1 +1.706440000E3,6.194892333E1 +1.706707000E3,5.510896653E1 +1.706968000E3,5.648771637E1 +1.707226000E3,5.451026369E1 +1.707530000E3,5.655237570E1 +1.707813000E3,6.342687376E1 +1.708096000E3,5.687609223E1 +1.708345000E3,5.784030597E1 +1.708587000E3,5.696931166E1 +1.708832000E3,5.826055047E1 +1.709133000E3,6.171963981E1 +1.709444000E3,6.289993620E1 +1.709785000E3,6.196750111E1 +1.710095000E3,6.021872673E1 +1.710401000E3,5.493999514E1 +1.710645000E3,5.748920917E1 +1.710951000E3,5.990748875E1 +1.711204000E3,5.995493625E1 +1.711504000E3,5.608393688E1 +1.711807000E3,6.225697969E1 +1.712052000E3,6.005399346E1 +1.712297000E3,6.276583246E1 +1.712594000E3,6.409669700E1 +1.712952000E3,5.846223798E1 +1.713249000E3,6.222377893E1 +1.713511000E3,6.179119431E1 +1.713770000E3,6.687160955E1 +1.714020000E3,6.224215114E1 +1.714281000E3,6.460780580E1 +1.714608000E3,6.323149402E1 +1.714900000E3,5.890183616E1 +1.715139000E3,6.173404899E1 +1.715438000E3,6.193562982E1 +1.715674000E3,6.231645929E1 +1.715912000E3,5.798536661E1 +1.716293000E3,5.569607438E1 +1.716537000E3,6.131866955E1 +1.716790000E3,5.896584959E1 +1.717096000E3,5.693976131E1 +1.717346000E3,5.531403594E1 +1.717631000E3,5.794989861E1 +1.717933000E3,5.594899441E1 +1.718204000E3,5.601359132E1 +1.718501000E3,5.861037671E1 +1.718741000E3,6.432265266E1 +1.719043000E3,6.182586376E1 +1.719355000E3,6.076827417E1 +1.719645000E3,5.634225228E1 +1.719943000E3,5.935070169E1 +1.720188000E3,5.856877062E1 +1.720486000E3,5.761843709E1 +1.720741000E3,5.935030376E1 +1.720985000E3,5.413194972E1 +1.721289000E3,5.939733818E1 +1.721553000E3,5.617827250E1 +1.721847000E3,5.807085988E1 +1.722091000E3,5.877044817E1 +1.722445000E3,6.593854232E1 +1.722681000E3,6.027114564E1 +1.722973000E3,5.866411762E1 +1.723271000E3,5.588604319E1 +1.723508000E3,5.958751798E1 +1.723800000E3,6.077290351E1 +1.724039000E3,5.722905231E1 +1.724338000E3,5.619905124E1 +1.724576000E3,5.628809107E1 +1.724876000E3,5.560357878E1 +1.725168000E3,5.447509555E1 +1.725542000E3,5.278892866E1 +1.725841000E3,4.816211457E1 +1.726139000E3,4.622333411E1 +1.726399000E3,4.728231882E1 +1.726691000E3,5.101510224E1 +1.726947000E3,4.725933617E1 +1.727273000E3,5.333398449E1 +1.727569000E3,5.518583989E1 +1.727808000E3,5.719998093E1 +1.728061000E3,5.375072532E1 +1.728352000E3,5.631849408E1 +1.728644000E3,5.232994659E1 +1.729024000E3,5.045911420E1 +1.729295000E3,4.931808913E1 +1.729541000E3,4.866846016E1 +1.729788000E3,5.127644661E1 +1.730054000E3,4.769951033E1 +1.730296000E3,5.553885299E1 +1.730573000E3,5.629080236E1 +1.730816000E3,5.218818952E1 +1.731119000E3,5.112756333E1 +1.731379000E3,5.524890032E1 +1.731688000E3,5.530134621E1 +1.731949000E3,5.451831728E1 +1.732288000E3,5.380962689E1 +1.732589000E3,5.754684503E1 +1.732833000E3,5.184401682E1 +1.733102000E3,5.011373730E1 +1.733369000E3,5.541779655E1 +1.733647000E3,5.983699601E1 +1.733886000E3,6.131428317E1 +1.734163000E3,6.052345820E1 +1.734405000E3,5.852692054E1 +1.734659000E3,5.861191265E1 +1.734933000E3,5.957936529E1 +1.735219000E3,5.639739849E1 +1.735540000E3,5.207917019E1 +1.735832000E3,4.548490451E1 +1.736112000E3,5.219897691E1 +1.736384000E3,5.618314188E1 +1.736684000E3,5.720418785E1 +1.736946000E3,5.895068629E1 +1.737213000E3,5.652216932E1 +1.737468000E3,5.796687034E1 +1.737738000E3,5.591197017E1 +1.737996000E3,5.493985473E1 +1.738236000E3,5.752137274E1 +1.738586000E3,6.041563952E1 +1.738921000E3,6.199530447E1 +1.739167000E3,5.310800091E1 +1.739430000E3,5.600574849E1 +1.739683000E3,6.494981167E1 +1.739952000E3,6.157046745E1 +1.740293000E3,6.002681302E1 +1.740611000E3,5.943541790E1 +1.740910000E3,5.731619793E1 +1.741197000E3,5.885751119E1 +1.741508000E3,5.719237093E1 +1.741767000E3,5.958897825E1 +1.742034000E3,5.543499582E1 +1.742424000E3,5.632783570E1 +1.742688000E3,5.565042743E1 +1.742946000E3,5.622883854E1 +1.743204000E3,6.327777019E1 +1.743456000E3,5.663098185E1 +1.743721000E3,5.729384715E1 +1.743966000E3,6.200582057E1 +1.744273000E3,5.107652622E1 +1.744505000E3,5.491520459E1 +1.744752000E3,5.181266373E1 +1.745004000E3,5.014115745E1 +1.745297000E3,5.338585031E1 +1.745690000E3,5.654477286E1 +1.745966000E3,5.517036116E1 +1.746219000E3,5.200430375E1 +1.746475000E3,5.963355448E1 +1.746732000E3,5.854837006E1 +1.747002000E3,5.571277949E1 +1.747293000E3,5.825116458E1 +1.747522000E3,5.673248340E1 +1.747772000E3,5.683320783E1 +1.748035000E3,5.224053713E1 +1.748289000E3,5.713452273E1 +1.748568000E3,5.539076360E1 +1.748961000E3,6.015893340E1 +1.749211000E3,5.710921188E1 +1.749460000E3,6.114476082E1 +1.749715000E3,5.648052368E1 +1.749961000E3,5.897720288E1 +1.750207000E3,5.525435431E1 +1.750521000E3,5.447453139E1 +1.750765000E3,5.883968686E1 +1.751015000E3,5.450160052E1 +1.751290000E3,5.405183560E1 +1.751522000E3,5.501343440E1 +1.751848000E3,5.586635599E1 +1.752096000E3,5.631573217E1 +1.752372000E3,5.960964241E1 +1.752637000E3,5.320710483E1 +1.752941000E3,5.848434869E1 +1.753209000E3,5.619196315E1 +1.753510000E3,5.692291103E1 +1.753774000E3,5.505374149E1 +1.754051000E3,5.721759821E1 +1.754315000E3,5.539152446E1 +1.754625000E3,5.632890174E1 +1.754919000E3,5.918851802E1 +1.755262000E3,5.807294381E1 +1.755529000E3,5.748451885E1 +1.755827000E3,6.055251826E1 +1.756067000E3,6.208050524E1 +1.756367000E3,5.991655048E1 +1.756607000E3,6.073519941E1 +1.756900000E3,5.774998130E1 +1.757144000E3,5.751173009E1 +1.757417000E3,5.299288378E1 +1.757700000E3,5.913293772E1 +1.758005000E3,5.732040664E1 +1.758269000E3,6.221202462E1 +1.758585000E3,6.285457626E1 +1.758834000E3,5.870613535E1 +1.759137000E3,5.533279687E1 +1.759391000E3,5.194643865E1 +1.759644000E3,4.891449850E1 +1.759922000E3,4.784429271E1 +1.760236000E3,5.273391136E1 +1.760503000E3,5.475616990E1 +1.760758000E3,5.640096860E1 +1.761017000E3,5.329458627E1 +1.761282000E3,4.798672737E1 +1.761535000E3,5.532988346E1 +1.761794000E3,5.189579265E1 +1.762040000E3,5.068357941E1 +1.762299000E3,5.751972157E1 +1.762578000E3,5.430434207E1 +1.762831000E3,5.331943982E1 +1.763136000E3,5.699367350E1 +1.763409000E3,5.622858108E1 +1.763658000E3,5.631559008E1 +1.763910000E3,5.738562920E1 +1.764157000E3,6.030103345E1 +1.764400000E3,5.680309722E1 +1.764695000E3,5.703631315E1 +1.765017000E3,5.682945247E1 +1.765300000E3,5.317093897E1 +1.765575000E3,5.620624417E1 +1.765832000E3,5.550075987E1 +1.766100000E3,6.321349509E1 +1.766371000E3,5.938123887E1 +1.766635000E3,6.289622107E1 +1.766898000E3,5.890101653E1 +1.767155000E3,5.928826732E1 +1.767399000E3,5.872890625E1 +1.767638000E3,6.184345237E1 +1.767877000E3,6.131073260E1 +1.768211000E3,6.085041665E1 +1.768587000E3,6.015418617E1 +1.768835000E3,5.648473324E1 +1.769119000E3,5.746059957E1 +1.769380000E3,5.608054299E1 +1.769692000E3,6.542458852E1 +1.769998000E3,6.121618195E1 +1.770281000E3,5.842785672E1 +1.770536000E3,5.763776595E1 +1.770858000E3,5.630873419E1 +1.771133000E3,5.339704361E1 +1.771378000E3,5.463873835E1 +1.771723000E3,5.659388596E1 +1.772050000E3,5.449836230E1 +1.772294000E3,5.154616724E1 +1.772537000E3,5.082603581E1 +1.772795000E3,5.334183734E1 +1.773055000E3,5.096094928E1 +1.773365000E3,5.171061147E1 +1.773612000E3,5.477281719E1 +1.773878000E3,5.060909259E1 +1.774171000E3,5.285294921E1 +1.774452000E3,5.393730531E1 +1.774725000E3,5.333400186E1 +1.774980000E3,5.285705613E1 +1.775346000E3,5.719168586E1 +1.775663000E3,5.642193929E1 +1.775908000E3,4.659059970E1 +1.776150000E3,5.521168672E1 +1.776388000E3,5.693500665E1 +1.776630000E3,6.030483668E1 +1.776910000E3,5.944095915E1 +1.777153000E3,5.708951289E1 +1.777414000E3,5.291982189E1 +1.777666000E3,5.900042024E1 +1.777935000E3,6.010949926E1 +1.778229000E3,6.009411695E1 +1.778514000E3,5.804757181E1 +1.778758000E3,5.922775473E1 +1.779011000E3,6.063545461E1 +1.779277000E3,5.950242674E1 +1.779575000E3,6.057891518E1 +1.779819000E3,6.050018223E1 +1.780115000E3,5.965583098E1 +1.780361000E3,5.651792502E1 +1.780660000E3,5.814099422E1 +1.780904000E3,5.340077797E1 +1.781203000E3,5.734973286E1 +1.781481000E3,5.846278011E1 +1.781805000E3,5.369751607E1 +1.782048000E3,5.229063054E1 +1.782299000E3,5.345996994E1 +1.782583000E3,5.724353788E1 +1.782883000E3,5.610772411E1 +1.783181000E3,5.272586700E1 +1.783423000E3,5.272075137E1 +1.783692000E3,5.495532717E1 +1.783945000E3,5.594785882E1 +1.784202000E3,5.914935612E1 +1.784483000E3,6.427791570E1 +1.784735000E3,6.185652247E1 +1.785051000E3,6.178338943E1 +1.785352000E3,6.304285312E1 +1.785598000E3,5.699176354E1 +1.785897000E3,5.705567192E1 +1.786190000E3,5.975757470E1 +1.786467000E3,6.092866408E1 +1.786714000E3,5.771726615E1 +1.786984000E3,5.434727511E1 +1.787232000E3,5.250796794E1 +1.787486000E3,5.668884634E1 +1.787813000E3,5.600600547E1 +1.788061000E3,5.162213387E1 +1.788391000E3,5.782497792E1 +1.788636000E3,5.900804565E1 +1.788935000E3,6.056317474E1 +1.789175000E3,5.749029459E1 +1.789469000E3,6.053654612E1 +1.789714000E3,5.841478287E1 +1.789988000E3,5.700130118E1 +1.790219000E3,5.562837186E1 +1.790509000E3,5.430369658E1 +1.790806000E3,5.586895515E1 +1.791048000E3,5.809725956E1 +1.791409000E3,5.552827992E1 +1.791650000E3,5.534472171E1 +1.791981000E3,5.671474363E1 +1.792227000E3,5.716453332E1 +1.792522000E3,5.844249975E1 +1.792847000E3,5.961186667E1 +1.793109000E3,5.794833541E1 +1.793437000E3,5.832360597E1 +1.793698000E3,5.996001578E1 +1.793970000E3,5.849924827E1 +1.794223000E3,5.823551411E1 +1.794488000E3,5.480450178E1 +1.794819000E3,5.715609034E1 +1.795083000E3,5.418083703E1 +1.795329000E3,5.529883425E1 +1.795587000E3,5.729455769E1 +1.795853000E3,5.358946536E1 +1.796083000E3,5.534684059E1 +1.796374000E3,5.693696454E1 +1.796630000E3,5.642610016E1 +1.796927000E3,5.692548294E1 +1.797194000E3,5.931602223E1 +1.797469000E3,5.877569790E1 +1.797716000E3,5.527135197E1 +1.798053000E3,5.904674814E1 +1.798358000E3,5.655039196E1 +1.798612000E3,5.796779928E1 +1.798921000E3,5.499199210E1 +1.799185000E3,5.693837926E1 +1.799465000E3,6.235855457E1 +1.799695000E3,6.271612813E1 +1.799964000E3,6.118271582E1 +1.800233000E3,6.171552449E1 +1.800562000E3,6.293258336E1 +1.800818000E3,5.927940855E1 +1.801077000E3,5.836879001E1 +1.801406000E3,6.182854437E1 +1.801650000E3,5.918527405E1 +1.801894000E3,6.352260837E1 +1.802163000E3,6.142940723E1 +1.802385000E3,5.867772092E1 +1.802631000E3,5.916688243E1 +1.802927000E3,5.855222781E1 +1.803228000E3,6.125789004E1 +1.803533000E3,5.839377949E1 +1.803816000E3,5.705167204E1 +1.804057000E3,5.641730344E1 +1.804362000E3,6.771092582E1 +1.804585000E3,6.036461449E1 +1.804835000E3,6.742095194E1 +1.805132000E3,6.133151855E1 +1.805443000E3,6.658554202E1 +1.805718000E3,7.095511769E1 +1.806003000E3,7.330553664E1 +1.806290000E3,6.732809523E1 +1.806566000E3,6.106403544E1 +1.806844000E3,5.830930506E1 +1.807085000E3,6.610455401E1 +1.807442000E3,5.944325189E1 +1.807800000E3,5.667454347E1 +1.808044000E3,5.560521877E1 +1.808299000E3,5.488377812E1 +1.808542000E3,5.279721650E1 +1.808789000E3,4.834692654E1 +1.809029000E3,4.661669368E1 +1.809276000E3,5.501186804E1 +1.809526000E3,5.384830085E1 +1.809820000E3,5.526588307E1 +1.810084000E3,5.900458249E1 +1.810393000E3,5.557146256E1 +1.810647000E3,5.355619280E1 +1.811023000E3,5.627924000E1 +1.811283000E3,5.384503050E1 +1.811527000E3,5.309622401E1 +1.811816000E3,5.228523776E1 +1.812070000E3,5.317657142E1 +1.812328000E3,5.813846570E1 +1.812583000E3,5.621088360E1 +1.812927000E3,5.646965227E1 +1.813191000E3,5.322001188E1 +1.813436000E3,5.451886743E1 +1.813748000E3,5.558621720E1 +1.814006000E3,5.673920724E1 +1.814328000E3,5.582855401E1 +1.814591000E3,6.044196407E1 +1.814848000E3,5.769208427E1 +1.815109000E3,6.206015086E1 +1.815391000E3,5.918173335E1 +1.815660000E3,5.779702061E1 +1.815927000E3,6.516398742E1 +1.816218000E3,5.927869783E1 +1.816546000E3,6.320256740E1 +1.816802000E3,6.296743684E1 +1.817051000E3,5.869001212E1 +1.817329000E3,5.985536664E1 +1.817620000E3,5.435607380E1 +1.817905000E3,5.721703373E1 +1.818148000E3,6.314389823E1 +1.818376000E3,6.116752308E1 +1.818622000E3,5.773611736E1 +1.818863000E3,5.892899245E1 +1.819138000E3,5.791411351E1 +1.819457000E3,6.283307798E1 +1.819719000E3,5.805008540E1 +1.819967000E3,6.383011196E1 +1.820266000E3,5.915938870E1 +1.820515000E3,5.795811325E1 +1.820871000E3,5.730398564E1 +1.821113000E3,5.907223014E1 +1.821388000E3,5.566469845E1 +1.821612000E3,5.223652040E1 +1.821858000E3,5.461868826E1 +1.822118000E3,5.731142265E1 +1.822388000E3,5.743609212E1 +1.822672000E3,6.147918645E1 +1.822919000E3,6.109678537E1 +1.823167000E3,5.654516230E1 +1.823464000E3,6.010058675E1 +1.823716000E3,6.101649690E1 +1.824046000E3,5.741898993E1 +1.824372000E3,5.654969113E1 +1.824629000E3,5.489877253E1 +1.824894000E3,6.410593751E1 +1.825142000E3,5.923267903E1 +1.825399000E3,5.977300321E1 +1.825683000E3,5.945891570E1 +1.825907000E3,5.799474745E1 +1.826162000E3,5.485933719E1 +1.826447000E3,5.848818620E1 +1.826697000E3,5.937282663E1 +1.826944000E3,5.473647239E1 +1.827319000E3,5.611635619E1 +1.827649000E3,5.704234375E1 +1.827909000E3,5.174683398E1 +1.828172000E3,5.243070089E1 +1.828457000E3,5.835398328E1 +1.828710000E3,6.579711207E1 +1.828969000E3,6.063158540E1 +1.829218000E3,5.379307224E1 +1.829474000E3,5.791005982E1 +1.829779000E3,5.908028356E1 +1.830025000E3,5.476368407E1 +1.830307000E3,5.608145667E1 +1.830627000E3,5.417323034E1 +1.830843000E3,5.295530865E1 +1.831087000E3,5.335160491E1 +1.831385000E3,5.274441298E1 +1.831622000E3,5.307477504E1 +1.831918000E3,5.606159985E1 +1.832155000E3,6.009472302E1 +1.832471000E3,5.380117674E1 +1.832766000E3,5.382200579E1 +1.833012000E3,5.176006230E1 +1.833256000E3,5.956343573E1 +1.833577000E3,5.545935306E1 +1.833826000E3,5.528541848E1 +1.834083000E3,5.436381252E1 +1.834373000E3,5.684307553E1 +1.834669000E3,5.352399464E1 +1.834910000E3,5.651184236E1 +1.835208000E3,5.432875840E1 +1.835453000E3,5.442576527E1 +1.835752000E3,5.643309342E1 +1.836022000E3,5.781174029E1 +1.836293000E3,6.110602518E1 +1.836557000E3,5.591856301E1 +1.836932000E3,5.423752303E1 +1.837200000E3,5.716598850E1 +1.837455000E3,5.511743414E1 +1.837716000E3,5.819026063E1 +1.837988000E3,5.728773522E1 +1.838236000E3,5.959151016E1 +1.838540000E3,5.810767345E1 +1.838799000E3,5.779128856E1 +1.839096000E3,6.092094761E1 +1.839361000E3,5.957871329E1 +1.839608000E3,5.838702884E1 +1.839856000E3,5.927631822E1 +1.840242000E3,5.748386760E1 +1.840516000E3,5.957609475E1 +1.840759000E3,5.688693666E1 +1.841054000E3,5.883374773E1 +1.841320000E3,5.769470339E1 +1.841597000E3,5.894509733E1 +1.841885000E3,6.032854908E1 +1.842190000E3,5.891601570E1 +1.842444000E3,5.957860612E1 +1.842691000E3,5.968229576E1 +1.842933000E3,5.829247522E1 +1.843258000E3,6.183086549E1 +1.843539000E3,6.077794792E1 +1.843765000E3,5.928253866E1 +1.844002000E3,5.782805396E1 +1.844301000E3,5.975447959E1 +1.844589000E3,6.108169982E1 +1.844825000E3,5.915565503E1 +1.845116000E3,5.981302437E1 +1.845363000E3,6.019248645E1 +1.845636000E3,6.014223773E1 +1.845861000E3,6.160258605E1 +1.846139000E3,6.002388007E1 +1.846447000E3,6.004612452E1 +1.846706000E3,5.932487324E1 +1.846979000E3,5.718424575E1 +1.847284000E3,5.712987240E1 +1.847586000E3,5.557624595E1 +1.847888000E3,5.603981815E1 +1.848146000E3,5.769591687E1 +1.848418000E3,5.526085696E1 +1.848706000E3,5.815102401E1 +1.848972000E3,5.884177354E1 +1.849226000E3,5.853138751E1 +1.849515000E3,6.156208919E1 +1.849746000E3,6.064923427E1 +1.850008000E3,6.590305387E1 +1.850338000E3,5.853444981E1 +1.850640000E3,5.717447935E1 +1.850942000E3,5.680568615E1 +1.851242000E3,5.928468331E1 +1.851504000E3,5.798449444E1 +1.851757000E3,5.802619768E1 +1.852033000E3,5.998338312E1 +1.852296000E3,5.683616594E1 +1.852550000E3,5.692327884E1 +1.852886000E3,5.878610583E1 +1.853162000E3,5.538467470E1 +1.853432000E3,5.437085520E1 +1.853738000E3,5.469765317E1 +1.854038000E3,5.790268038E1 +1.854297000E3,5.836787866E1 +1.854582000E3,6.160807622E1 +1.854881000E3,5.878613196E1 +1.855158000E3,6.200103199E1 +1.855387000E3,6.087479870E1 +1.855688000E3,6.028304140E1 +1.855930000E3,6.159527875E1 +1.856226000E3,6.082174354E1 +1.856487000E3,5.932314061E1 +1.856744000E3,5.976570730E1 +1.857001000E3,5.473753247E1 +1.857299000E3,5.954612483E1 +1.857556000E3,6.052388497E1 +1.857849000E3,5.848282940E1 +1.858086000E3,5.879664566E1 +1.858384000E3,5.864589973E1 +1.858677000E3,5.659242719E1 +1.858917000E3,5.683870091E1 +1.859195000E3,5.582498919E1 +1.859427000E3,6.011873423E1 +1.859676000E3,5.796702396E1 +1.859911000E3,5.928400715E1 +1.860149000E3,5.826876733E1 +1.860396000E3,6.038481253E1 +1.860680000E3,6.030085568E1 +1.860944000E3,5.890166619E1 +1.861209000E3,6.654379171E1 +1.861519000E3,6.016187265E1 +1.861755000E3,6.139297542E1 +1.862049000E3,6.289106669E1 +1.862388000E3,5.872946965E1 +1.862675000E3,5.800836625E1 +1.862993000E3,5.701819685E1 +1.863248000E3,5.488359846E1 +1.863519000E3,5.747446133E1 +1.863768000E3,5.996388232E1 +1.864087000E3,5.686047813E1 +1.864334000E3,5.935760915E1 +1.864635000E3,6.438349972E1 +1.864894000E3,6.008599590E1 +1.865205000E3,5.995474236E1 +1.865502000E3,6.596906108E1 +1.865837000E3,6.091064347E1 +1.866114000E3,5.885056970E1 +1.866411000E3,6.474486832E1 +1.866666000E3,5.888758286E1 +1.866964000E3,6.138447683E1 +1.867211000E3,6.032596684E1 +1.867482000E3,5.848476935E1 +1.867736000E3,5.631330849E1 +1.867989000E3,5.927138373E1 +1.868246000E3,5.817171672E1 +1.868499000E3,5.358065381E1 +1.868763000E3,5.500264039E1 +1.869129000E3,5.663946315E1 +1.869384000E3,5.601392416E1 +1.869636000E3,5.640732154E1 +1.869947000E3,5.320213962E1 +1.870207000E3,4.907811811E1 +1.870470000E3,5.784153600E1 +1.870743000E3,5.988355074E1 +1.871011000E3,5.973830135E1 +1.871253000E3,5.769679044E1 +1.871519000E3,5.395770126E1 +1.871765000E3,5.751088186E1 +1.872011000E3,5.342275719E1 +1.872301000E3,5.638616310E1 +1.872563000E3,5.124369984E1 +1.872821000E3,5.357036185E1 +1.873129000E3,5.529809524E1 +1.873386000E3,5.442720524E1 +1.873650000E3,5.306298792E1 +1.873937000E3,5.703507672E1 +1.874184000E3,5.835246426E1 +1.874444000E3,5.638184247E1 +1.874707000E3,5.201779537E1 +1.874972000E3,5.217149520E1 +1.875244000E3,5.757612416E1 +1.875577000E3,5.387788750E1 +1.875865000E3,5.607108884E1 +1.876149000E3,5.692352283E1 +1.876407000E3,5.577296536E1 +1.876687000E3,5.259836493E1 +1.876982000E3,5.467571766E1 +1.877215000E3,5.256317748E1 +1.877521000E3,5.522593862E1 +1.877775000E3,5.432669245E1 +1.878036000E3,5.734031668E1 +1.878314000E3,6.027566119E1 +1.878587000E3,5.567003578E1 +1.878912000E3,5.307720644E1 +1.879176000E3,5.659939353E1 +1.879425000E3,5.110556861E1 +1.879723000E3,5.673190580E1 +1.879969000E3,5.437112204E1 +1.880274000E3,5.433297742E1 +1.880576000E3,5.585075865E1 +1.880875000E3,5.657006430E1 +1.881117000E3,5.701623858E1 +1.881424000E3,5.749679466E1 +1.881673000E3,5.623079196E1 +1.881986000E3,5.545187468E1 +1.882329000E3,5.781610131E1 +1.882611000E3,5.432916720E1 +1.882882000E3,4.940287270E1 +1.883127000E3,5.866223377E1 +1.883391000E3,5.654564177E1 +1.883644000E3,5.888782218E1 +1.883889000E3,5.586307703E1 +1.884148000E3,5.930725555E1 +1.884413000E3,5.963840788E1 +1.884660000E3,5.928611951E1 +1.884926000E3,5.621968819E1 +1.885181000E3,5.811455305E1 +1.885457000E3,5.585646129E1 +1.885714000E3,5.989591718E1 +1.885968000E3,6.058402104E1 +1.886267000E3,5.972100226E1 +1.886517000E3,6.220704457E1 +1.886832000E3,6.037773435E1 +1.887106000E3,6.039308032E1 +1.887385000E3,6.223647696E1 +1.887617000E3,5.854088114E1 +1.887876000E3,6.248517888E1 +1.888128000E3,6.222318884E1 +1.888437000E3,6.070320114E1 +1.888777000E3,5.817372188E1 +1.889076000E3,5.382250608E1 +1.889369000E3,7.004593531E1 +1.889616000E3,6.094415751E1 +1.889913000E3,5.455584628E1 +1.890163000E3,5.387250795E1 +1.890418000E3,5.219742496E1 +1.890714000E3,5.070715955E1 +1.890961000E3,5.362651533E1 +1.891207000E3,5.046817004E1 +1.891453000E3,5.129339201E1 +1.891764000E3,4.856730286E1 +1.892053000E3,5.220705734E1 +1.892321000E3,5.401068171E1 +1.892582000E3,5.109746146E1 +1.892834000E3,5.412675897E1 +1.893090000E3,5.347014573E1 +1.893340000E3,5.092720593E1 +1.893620000E3,5.341316175E1 +1.893886000E3,4.870918930E1 +1.894142000E3,4.929590175E1 +1.894389000E3,4.686294330E1 +1.894692000E3,5.100486031E1 +1.894995000E3,5.087478993E1 +1.895328000E3,4.940372977E1 +1.895606000E3,5.362468443E1 +1.895919000E3,5.608826750E1 +1.896241000E3,5.628756413E1 +1.896497000E3,5.817843169E1 +1.896749000E3,5.809119715E1 +1.897054000E3,5.469613872E1 +1.897287000E3,5.437807476E1 +1.897582000E3,5.794761863E1 +1.897897000E3,6.027023965E1 +1.898145000E3,5.913564460E1 +1.898511000E3,5.510014788E1 +1.898752000E3,5.499817732E1 +1.898999000E3,5.569220222E1 +1.899294000E3,5.368447548E1 +1.899547000E3,5.912109227E1 +1.899841000E3,6.076259223E1 +1.900104000E3,6.153129043E1 +1.900349000E3,5.679462536E1 +1.900634000E3,5.721135074E1 +1.900927000E3,5.674745728E1 +1.901166000E3,5.556227882E1 +1.901462000E3,4.994603734E1 +1.901841000E3,5.122656475E1 +1.902183000E3,5.127903645E1 +1.902436000E3,5.042064547E1 +1.902695000E3,5.425673681E1 +1.902998000E3,5.484388956E1 +1.903228000E3,5.322356297E1 +1.903483000E3,5.161093724E1 +1.903730000E3,5.302125687E1 +1.904019000E3,5.241958307E1 +1.904307000E3,5.116604316E1 +1.904614000E3,5.319513233E1 +1.904991000E3,5.530482451E1 +1.905243000E3,5.829713614E1 +1.905528000E3,4.891404960E1 +1.905774000E3,5.408250868E1 +1.906083000E3,5.272747143E1 +1.906381000E3,5.216068921E1 +1.906624000E3,5.292203291E1 +1.906885000E3,5.243548019E1 +1.907149000E3,4.981562618E1 +1.907448000E3,5.500279348E1 +1.907742000E3,5.481190601E1 +1.907999000E3,5.369800103E1 +1.908315000E3,6.390197571E1 +1.908579000E3,6.517990141E1 +1.908825000E3,5.822949910E1 +1.909064000E3,5.655728640E1 +1.909356000E3,5.292186662E1 +1.909600000E3,5.069372058E1 +1.909895000E3,5.368100654E1 +1.910138000E3,5.616508462E1 +1.910432000E3,6.285923815E1 +1.910670000E3,6.254266196E1 +1.910979000E3,5.628599605E1 +1.911260000E3,5.616383984E1 +1.911482000E3,5.074231882E1 +1.911728000E3,5.398858859E1 +1.911977000E3,5.585565083E1 +1.912237000E3,5.777112626E1 +1.912532000E3,6.036032129E1 +1.912783000E3,6.077032608E1 +1.913052000E3,5.839282786E1 +1.913316000E3,5.397912726E1 +1.913575000E3,5.582771928E1 +1.913848000E3,5.579334158E1 +1.914143000E3,5.778281485E1 +1.914450000E3,5.783459906E1 +1.914713000E3,6.199387267E1 +1.914943000E3,6.173706737E1 +1.915185000E3,5.621060236E1 +1.915433000E3,5.563784893E1 +1.915692000E3,5.470990272E1 +1.915951000E3,5.469960060E1 +1.916217000E3,6.171536544E1 +1.916470000E3,5.862130066E1 +1.916777000E3,5.839467924E1 +1.917028000E3,5.552209731E1 +1.917324000E3,5.763067987E1 +1.917687000E3,5.981653815E1 +1.917967000E3,5.790518789E1 +1.918210000E3,5.220287871E1 +1.918457000E3,5.707286116E1 +1.918759000E3,5.657529642E1 +1.918997000E3,6.000130629E1 +1.919241000E3,5.708419446E1 +1.919496000E3,5.749223221E1 +1.919768000E3,5.843781753E1 +1.920074000E3,5.671929683E1 +1.920373000E3,5.881070992E1 +1.920621000E3,5.603223824E1 +1.920956000E3,6.053511488E1 +1.921216000E3,5.525745837E1 +1.921476000E3,6.186721324E1 +1.921723000E3,6.214292360E1 +1.922025000E3,5.857206109E1 +1.922320000E3,5.934438900E1 +1.922561000E3,6.077867207E1 +1.922860000E3,5.578255978E1 +1.923099000E3,5.723807446E1 +1.923347000E3,5.785786452E1 +1.923636000E3,6.037753633E1 +1.923892000E3,6.106459696E1 +1.924223000E3,5.873119773E1 +1.924511000E3,5.862235861E1 +1.924814000E3,5.732521131E1 +1.925070000E3,5.161553090E1 +1.925373000E3,5.243351685E1 +1.925626000E3,5.041805469E1 +1.925919000E3,5.543714980E1 +1.926175000E3,5.338657816E1 +1.926425000E3,5.616854022E1 +1.926695000E3,5.699328540E1 +1.926965000E3,5.787312270E1 +1.927305000E3,5.558473925E1 +1.927614000E3,5.927685087E1 +1.927880000E3,6.254706193E1 +1.928125000E3,6.079427969E1 +1.928390000E3,5.412440784E1 +1.928634000E3,5.441834540E1 +1.928928000E3,5.220486428E1 +1.929215000E3,5.210908233E1 +1.929515000E3,5.352367419E1 +1.929766000E3,5.356350702E1 +1.930022000E3,5.184851991E1 +1.930322000E3,5.311742835E1 +1.930607000E3,5.453786592E1 +1.930870000E3,5.814140937E1 +1.931155000E3,5.779656646E1 +1.931440000E3,5.488757891E1 +1.931727000E3,5.385182390E1 +1.931981000E3,5.705491580E1 +1.932229000E3,5.576165296E1 +1.932491000E3,5.781333383E1 +1.932730000E3,5.616780300E1 +1.932971000E3,5.400230043E1 +1.933232000E3,5.518627884E1 +1.933510000E3,5.211300688E1 +1.933795000E3,5.292820587E1 +1.934127000E3,5.382097927E1 +1.934390000E3,6.102840439E1 +1.934671000E3,5.486275546E1 +1.934948000E3,5.206103103E1 +1.935198000E3,5.739150099E1 +1.935506000E3,5.310844778E1 +1.935756000E3,5.392681604E1 +1.936008000E3,5.250003264E1 +1.936256000E3,5.801399662E1 +1.936524000E3,5.696032820E1 +1.936785000E3,5.414492013E1 +1.937032000E3,5.536982174E1 +1.937391000E3,5.750979970E1 +1.937677000E3,5.370086514E1 +1.937972000E3,5.359409099E1 +1.938241000E3,4.663692517E1 +1.938508000E3,4.740501122E1 +1.938772000E3,4.812116539E1 +1.939051000E3,4.940260018E1 +1.939311000E3,5.211533825E1 +1.939553000E3,5.351181789E1 +1.939796000E3,5.597808269E1 +1.940081000E3,5.841474518E1 +1.940347000E3,5.900966915E1 +1.940680000E3,5.844032848E1 +1.940932000E3,6.047778057E1 +1.941187000E3,6.179458512E1 +1.941488000E3,5.569784051E1 +1.941730000E3,5.535681081E1 +1.941971000E3,5.409739450E1 +1.942227000E3,5.551927029E1 +1.942555000E3,5.259381649E1 +1.942855000E3,5.090743186E1 +1.943101000E3,5.330610416E1 +1.943383000E3,5.722147303E1 +1.943610000E3,5.564867598E1 +1.944013000E3,5.456395907E1 +1.944265000E3,5.442943523E1 +1.944557000E3,5.982581487E1 +1.944820000E3,5.751114261E1 +1.945081000E3,5.998630171E1 +1.945333000E3,5.908382499E1 +1.945646000E3,5.828329647E1 +1.945951000E3,5.602282904E1 +1.946199000E3,6.197108249E1 +1.946496000E3,5.533258874E1 +1.946770000E3,5.704060455E1 +1.947126000E3,5.457797110E1 +1.947363000E3,5.430717613E1 +1.947637000E3,5.940687974E1 +1.947953000E3,5.436076271E1 +1.948235000E3,5.660912008E1 +1.948550000E3,5.504399315E1 +1.948861000E3,5.464999644E1 +1.949122000E3,5.565806372E1 +1.949384000E3,5.190569146E1 +1.949646000E3,5.153937000E1 +1.949972000E3,5.628803963E1 +1.950248000E3,5.966716422E1 +1.950577000E3,5.820503815E1 +1.950822000E3,5.652058726E1 +1.951118000E3,5.802645793E1 +1.951349000E3,5.727916959E1 +1.951597000E3,5.784165576E1 +1.951900000E3,5.999225852E1 +1.952197000E3,6.048891831E1 +1.952433000E3,5.821794698E1 +1.952728000E3,5.416701806E1 +1.952964000E3,5.183738883E1 +1.953295000E3,5.384161890E1 +1.953675000E3,5.430376660E1 +1.953907000E3,5.257088063E1 +1.954151000E3,5.392186903E1 +1.954431000E3,6.167467738E1 +1.954678000E3,5.958790115E1 +1.954923000E3,5.822018477E1 +1.955185000E3,5.808448347E1 +1.955447000E3,5.733347749E1 +1.955703000E3,6.261390980E1 +1.956005000E3,5.829281758E1 +1.956246000E3,5.949056653E1 +1.956541000E3,5.839747914E1 +1.956810000E3,5.770882066E1 +1.957120000E3,5.690637302E1 +1.957421000E3,5.796705847E1 +1.957668000E3,5.867770180E1 +1.957936000E3,5.696585443E1 +1.958216000E3,5.738908049E1 +1.958463000E3,5.842272770E1 +1.958721000E3,5.966072568E1 +1.959033000E3,6.340725612E1 +1.959281000E3,6.193544465E1 +1.959566000E3,5.927164536E1 +1.959888000E3,6.146900670E1 +1.960249000E3,6.270186363E1 +1.960512000E3,5.695216686E1 +1.960779000E3,5.725758836E1 +1.961040000E3,5.788439963E1 +1.961303000E3,6.286977927E1 +1.961557000E3,6.361469653E1 +1.961802000E3,6.277422462E1 +1.962060000E3,6.032704022E1 +1.962310000E3,5.600516510E1 +1.962586000E3,6.188879617E1 +1.962805000E3,6.271522018E1 +1.963107000E3,6.025198847E1 +1.963453000E3,6.001529679E1 +1.963728000E3,5.375240125E1 +1.964036000E3,5.055228276E1 +1.964331000E3,5.257092943E1 +1.964568000E3,5.708661900E1 +1.964868000E3,5.629448239E1 +1.965178000E3,5.425890416E1 +1.965431000E3,5.575014937E1 +1.965679000E3,5.801461965E1 +1.965931000E3,5.400244473E1 +1.966191000E3,5.474887871E1 +1.966525000E3,5.196538635E1 +1.966783000E3,5.536524974E1 +1.967040000E3,5.974878933E1 +1.967338000E3,6.200932986E1 +1.967644000E3,6.295299888E1 +1.967909000E3,6.272635154E1 +1.968153000E3,5.902465660E1 +1.968474000E3,5.897159976E1 +1.968773000E3,5.506910037E1 +1.969014000E3,5.622897524E1 +1.969254000E3,5.457019516E1 +1.969505000E3,5.648049168E1 +1.969892000E3,5.656883155E1 +1.970152000E3,5.598423772E1 +1.970446000E3,5.186768597E1 +1.970726000E3,5.526177698E1 +1.971020000E3,5.810907246E1 +1.971304000E3,5.262875480E1 +1.971613000E3,5.141696402E1 +1.971915000E3,5.298264424E1 +1.972196000E3,5.641801556E1 +1.972483000E3,5.228737642E1 +1.972725000E3,5.649656740E1 +1.973036000E3,5.867645632E1 +1.973323000E3,5.679238187E1 +1.973633000E3,5.959682402E1 +1.973935000E3,5.617109756E1 +1.974236000E3,5.473085666E1 +1.974547000E3,5.589564412E1 +1.974836000E3,5.691193712E1 +1.975136000E3,5.808545953E1 +1.975385000E3,5.922478363E1 +1.975631000E3,5.707996013E1 +1.975881000E3,5.820923707E1 +1.976194000E3,5.897957095E1 +1.976453000E3,6.019944728E1 +1.976814000E3,6.472960186E1 +1.977076000E3,6.312075290E1 +1.977356000E3,5.886370461E1 +1.977618000E3,5.750754913E1 +1.977917000E3,5.531180501E1 +1.978189000E3,5.815410032E1 +1.978463000E3,5.735965971E1 +1.978732000E3,5.593071322E1 +1.978999000E3,5.835041964E1 +1.979245000E3,5.646810288E1 +1.979493000E3,5.392299875E1 +1.979902000E3,5.430590311E1 +1.980142000E3,5.447583546E1 +1.980384000E3,5.260389735E1 +1.980632000E3,5.537561423E1 +1.980873000E3,5.836960119E1 +1.981120000E3,5.425821286E1 +1.981389000E3,5.153336720E1 +1.981618000E3,5.420085973E1 +1.981915000E3,5.457985954E1 +1.982165000E3,5.637026749E1 +1.982404000E3,6.009656118E1 +1.982718000E3,5.903298531E1 +1.983029000E3,5.665152425E1 +1.983296000E3,5.778918758E1 +1.983538000E3,5.444374512E1 +1.983786000E3,5.619088618E1 +1.984047000E3,6.088482249E1 +1.984304000E3,5.678390940E1 +1.984575000E3,5.873820942E1 +1.984842000E3,6.004736340E1 +1.985142000E3,6.191465398E1 +1.985405000E3,6.154032648E1 +1.985653000E3,5.967034113E1 +1.985913000E3,5.855925349E1 +1.986211000E3,5.529356341E1 +1.986557000E3,5.823190054E1 +1.986847000E3,5.749679599E1 +1.987098000E3,5.855123449E1 +1.987369000E3,5.999203293E1 +1.987610000E3,6.139424716E1 +1.987876000E3,5.730078222E1 +1.988126000E3,5.649537684E1 +1.988425000E3,5.872458305E1 +1.988727000E3,5.704322852E1 +1.989024000E3,6.264447151E1 +1.989326000E3,5.763604303E1 +1.989641000E3,5.657919006E1 +1.989961000E3,5.706004491E1 +1.990255000E3,6.115159729E1 +1.990571000E3,5.721964371E1 +1.990829000E3,5.780420781E1 +1.991088000E3,5.782228640E1 +1.991353000E3,5.791642518E1 +1.991611000E3,5.820065680E1 +1.991935000E3,5.675756460E1 +1.992174000E3,5.720433643E1 +1.992482000E3,5.907701380E1 +1.992770000E3,5.791335620E1 +1.993107000E3,5.504589678E1 +1.993369000E3,6.117578252E1 +1.993619000E3,5.902046786E1 +1.993912000E3,6.024153080E1 +1.994216000E3,6.061721402E1 +1.994464000E3,6.185610038E1 +1.994715000E3,5.902440055E1 +1.995005000E3,6.112374185E1 +1.995249000E3,5.664710018E1 +1.995551000E3,5.841351492E1 +1.995787000E3,5.961393992E1 +1.996119000E3,5.614463215E1 +1.996387000E3,5.528223904E1 +1.996647000E3,5.706960328E1 +1.996947000E3,5.544195306E1 +1.997203000E3,5.747091679E1 +1.997452000E3,5.434233120E1 +1.997769000E3,5.794847441E1 +1.998019000E3,5.504963001E1 +1.998267000E3,5.470768853E1 +1.998498000E3,6.426300701E1 +1.998789000E3,6.070245213E1 +1.999090000E3,5.893271279E1 +1.999390000E3,5.873668669E1 +1.999698000E3,6.355663744E1 +1.999962000E3,6.500393379E1 +2.000214000E3,6.177640112E1 +2.000471000E3,6.122167361E1 +2.000775000E3,5.982616779E1 +2.001079000E3,5.944943300E1 +2.001339000E3,5.772707313E1 +2.001595000E3,5.934980117E1 +2.001862000E3,6.221301291E1 +2.002160000E3,6.098009785E1 +2.002491000E3,6.205877653E1 +2.002758000E3,5.978743388E1 +2.003062000E3,6.141065367E1 +2.003307000E3,6.146860620E1 +2.003555000E3,6.323368939E1 +2.003884000E3,6.072009355E1 +2.004185000E3,6.072017978E1 +2.004424000E3,6.079512782E1 +2.004673000E3,6.651000141E1 +2.004939000E3,6.185812181E1 +2.005202000E3,5.705353418E1 +2.005472000E3,5.820400818E1 +2.005800000E3,5.682542431E1 +2.006070000E3,6.224932691E1 +2.006350000E3,5.654791681E1 +2.006601000E3,6.160831985E1 +2.006857000E3,6.443497299E1 +2.007101000E3,6.091208862E1 +2.007395000E3,5.867323811E1 +2.007635000E3,5.850229824E1 +2.007945000E3,6.307832054E1 +2.008197000E3,5.931313312E1 +2.008453000E3,5.632990721E1 +2.008711000E3,5.662998085E1 +2.009032000E3,5.416655753E1 +2.009268000E3,6.273936844E1 +2.009521000E3,6.129068926E1 +2.009786000E3,6.485712301E1 +2.010037000E3,6.605690213E1 +2.010298000E3,6.243431425E1 +2.010541000E3,6.062714733E1 +2.010780000E3,6.369220544E1 +2.011082000E3,5.933701247E1 +2.011330000E3,6.141658123E1 +2.011605000E3,6.232326760E1 +2.011893000E3,5.983132844E1 +2.012226000E3,6.085684837E1 +2.012489000E3,5.844434641E1 +2.012752000E3,5.992485437E1 +2.013005000E3,5.745164278E1 +2.013272000E3,5.489362140E1 +2.013573000E3,5.734004331E1 +2.013861000E3,5.569303233E1 +2.014170000E3,5.619919203E1 +2.014467000E3,5.719248521E1 +2.014715000E3,5.898607642E1 +2.015015000E3,5.312334941E1 +2.015258000E3,4.707687024E1 +2.015594000E3,5.326213693E1 +2.015822000E3,4.977107581E1 +2.016071000E3,5.399380901E1 +2.016333000E3,5.528915982E1 +2.016634000E3,5.648344312E1 +2.016879000E3,5.853194276E1 +2.017143000E3,5.969968429E1 +2.017429000E3,6.121498547E1 +2.017723000E3,5.933414775E1 +2.017961000E3,6.375558171E1 +2.018248000E3,6.102538403E1 +2.018558000E3,6.066629858E1 +2.018830000E3,5.238394429E1 +2.019065000E3,5.528030903E1 +2.019316000E3,5.711235169E1 +2.019578000E3,6.069913503E1 +2.019847000E3,5.344730110E1 +2.020093000E3,5.593398360E1 +2.020413000E3,5.112453486E1 +2.020668000E3,5.529600172E1 +2.020922000E3,5.816841553E1 +2.021177000E3,6.105447683E1 +2.021449000E3,5.967528890E1 +2.021707000E3,5.677568689E1 +2.022115000E3,5.613246875E1 +2.022403000E3,5.846674311E1 +2.022679000E3,5.999468936E1 +2.022930000E3,6.268951545E1 +2.023232000E3,6.037378186E1 +2.023532000E3,6.123290650E1 +2.023784000E3,6.425880775E1 +2.024094000E3,6.043334594E1 +2.024356000E3,6.287321918E1 +2.024616000E3,6.178703582E1 +2.024868000E3,5.974424575E1 +2.025152000E3,5.863905018E1 +2.025429000E3,5.669082005E1 +2.025716000E3,6.192616195E1 +2.026008000E3,6.367561928E1 +2.026300000E3,6.061621393E1 +2.026543000E3,6.411900249E1 +2.026802000E3,6.060951858E1 +2.027066000E3,5.606119041E1 +2.027395000E3,5.099901519E1 +2.027693000E3,5.622472082E1 +2.027945000E3,5.354940616E1 +2.028237000E3,6.282566888E1 +2.028553000E3,5.775523802E1 +2.028868000E3,6.095006183E1 +2.029133000E3,6.333727439E1 +2.029399000E3,5.925545982E1 +2.029660000E3,6.045827699E1 +2.029962000E3,5.594587825E1 +2.030223000E3,5.708579081E1 +2.030478000E3,5.777704597E1 +2.030737000E3,5.406349508E1 +2.030990000E3,5.544037764E1 +2.031246000E3,5.912518025E1 +2.031508000E3,5.924806900E1 +2.031864000E3,6.105667153E1 +2.032110000E3,5.838466956E1 +2.032350000E3,5.923100201E1 +2.032598000E3,6.024290558E1 +2.032866000E3,5.971089342E1 +2.033112000E3,5.478665804E1 +2.033351000E3,5.966531235E1 +2.033644000E3,5.755565544E1 +2.033892000E3,5.982004182E1 +2.034190000E3,5.797424789E1 +2.034425000E3,5.856301863E1 +2.034717000E3,6.325478319E1 +2.035053000E3,6.168254294E1 +2.035364000E3,6.188857455E1 +2.035619000E3,6.156039581E1 +2.035901000E3,6.235770270E1 +2.036169000E3,6.262779828E1 +2.036471000E3,6.142542176E1 +2.036764000E3,5.923845966E1 +2.037022000E3,5.827266837E1 +2.037307000E3,6.314641141E1 +2.037615000E3,5.460230698E1 +2.037870000E3,5.396400232E1 +2.038120000E3,5.561122002E1 +2.038463000E3,5.928400391E1 +2.038767000E3,5.668934966E1 +2.039069000E3,5.831653467E1 +2.039316000E3,5.267103167E1 +2.039622000E3,5.557794232E1 +2.039859000E3,5.543606804E1 +2.040196000E3,5.836770370E1 +2.040499000E3,5.678092478E1 +2.040751000E3,5.612506795E1 +2.041024000E3,5.868430679E1 +2.041274000E3,5.264121586E1 +2.041581000E3,5.828774790E1 +2.041841000E3,5.647338053E1 +2.042088000E3,6.053709731E1 +2.042403000E3,5.614689861E1 +2.042691000E3,5.714845923E1 +2.042944000E3,5.256418368E1 +2.043191000E3,5.601486494E1 +2.043466000E3,5.810869150E1 +2.043715000E3,5.529893852E1 +2.043979000E3,5.708153712E1 +2.044245000E3,5.690179830E1 +2.044568000E3,5.994555064E1 +2.044825000E3,6.172126409E1 +2.045096000E3,6.015473895E1 +2.045377000E3,5.509344178E1 +2.045629000E3,5.568915719E1 +2.045902000E3,5.938619751E1 +2.046155000E3,5.534852098E1 +2.046409000E3,5.905391706E1 +2.046693000E3,5.250115201E1 +2.046947000E3,5.587771233E1 +2.047277000E3,5.599930929E1 +2.047517000E3,5.586822515E1 +2.047803000E3,5.740436533E1 +2.048105000E3,5.413600866E1 +2.048476000E3,5.595836709E1 +2.048737000E3,5.982743631E1 +2.048992000E3,6.001131240E1 +2.049305000E3,5.629713962E1 +2.049568000E3,5.505265617E1 +2.049904000E3,5.686004167E1 +2.050199000E3,6.078932545E1 +2.050470000E3,5.919030857E1 +2.050773000E3,5.640754436E1 +2.051052000E3,5.864124078E1 +2.051311000E3,5.683150656E1 +2.051642000E3,5.391893615E1 +2.051926000E3,4.513639699E1 +2.052174000E3,5.750824000E1 +2.052467000E3,5.945309138E1 +2.052703000E3,6.260915402E1 +2.052981000E3,6.017408744E1 +2.053276000E3,6.158293130E1 +2.053516000E3,6.279041899E1 +2.053759000E3,6.005362243E1 +2.054030000E3,5.776050932E1 +2.054357000E3,5.906607942E1 +2.054642000E3,6.002924771E1 +2.054978000E3,5.708591672E1 +2.055267000E3,5.932996992E1 +2.055552000E3,5.830703641E1 +2.055812000E3,5.428102985E1 +2.056063000E3,5.893384546E1 +2.056382000E3,6.028305726E1 +2.056682000E3,5.904357096E1 +2.056923000E3,6.015407432E1 +2.057171000E3,5.801677968E1 +2.057418000E3,6.561794532E1 +2.057665000E3,6.751214025E1 +2.057959000E3,5.899748641E1 +2.058279000E3,5.616162884E1 +2.058571000E3,5.813941707E1 +2.058834000E3,6.236684118E1 +2.059132000E3,6.058455193E1 +2.059376000E3,6.004963560E1 +2.059687000E3,6.255152045E1 +2.059984000E3,6.155697025E1 +2.060225000E3,6.124056229E1 +2.060517000E3,6.072549607E1 +2.060756000E3,6.119225814E1 +2.061060000E3,5.953618039E1 +2.061302000E3,5.869582322E1 +2.061578000E3,6.248269042E1 +2.061841000E3,6.070173510E1 +2.062089000E3,6.023992255E1 +2.062337000E3,5.848175462E1 +2.062607000E3,5.092907116E1 +2.062859000E3,5.442118268E1 +2.063124000E3,5.298599309E1 +2.063425000E3,6.030333428E1 +2.063671000E3,5.835700379E1 +2.063954000E3,5.943633389E1 +2.064268000E3,5.761479859E1 +2.064577000E3,5.520238299E1 +2.064822000E3,5.901822557E1 +2.065074000E3,5.705952734E1 +2.065339000E3,6.136116330E1 +2.065603000E3,5.746483296E1 +2.065865000E3,5.867757380E1 +2.066141000E3,5.709322981E1 +2.066441000E3,5.775131141E1 +2.066691000E3,5.886237327E1 +2.067036000E3,5.617972984E1 +2.067288000E3,5.802507148E1 +2.067560000E3,6.044497816E1 +2.067891000E3,5.450044868E1 +2.068148000E3,5.616761260E1 +2.068412000E3,6.243097888E1 +2.068673000E3,5.783788439E1 +2.068946000E3,5.764761585E1 +2.069196000E3,5.683737954E1 +2.069468000E3,5.609890848E1 +2.069778000E3,5.465619904E1 +2.070034000E3,5.368960846E1 +2.070328000E3,6.032893819E1 +2.070574000E3,5.862927742E1 +2.070842000E3,5.635830209E1 +2.071101000E3,5.822198053E1 +2.071339000E3,5.691346983E1 +2.071597000E3,5.865778618E1 +2.071860000E3,5.810560725E1 +2.072128000E3,5.968009174E1 +2.072425000E3,5.833852533E1 +2.072667000E3,5.784540163E1 +2.072934000E3,5.644439458E1 +2.073184000E3,5.178260396E1 +2.073488000E3,5.751445421E1 +2.073769000E3,5.974800721E1 +2.074068000E3,6.534291023E1 +2.074348000E3,6.371076652E1 +2.074624000E3,6.156132937E1 +2.074877000E3,6.012113548E1 +2.075119000E3,6.026351151E1 +2.075377000E3,6.142675581E1 +2.075661000E3,6.194478144E1 +2.075914000E3,6.183865569E1 +2.076267000E3,6.387512541E1 +2.076547000E3,6.077311287E1 +2.076803000E3,6.130963963E1 +2.077056000E3,5.862622582E1 +2.077295000E3,5.463497219E1 +2.077610000E3,5.484231095E1 +2.077891000E3,6.099801434E1 +2.078171000E3,5.475621164E1 +2.078466000E3,5.955577801E1 +2.078709000E3,5.720097088E1 +2.078954000E3,5.661944912E1 +2.079224000E3,5.443336360E1 +2.079503000E3,5.917559782E1 +2.079800000E3,5.424380486E1 +2.080057000E3,6.013762169E1 +2.080307000E3,6.100643768E1 +2.080558000E3,6.205128007E1 +2.080810000E3,6.007904071E1 +2.081092000E3,6.423414837E1 +2.081354000E3,5.938817614E1 +2.081601000E3,6.006860062E1 +2.081845000E3,5.833570272E1 +2.082143000E3,5.962915676E1 +2.082396000E3,5.844615966E1 +2.082663000E3,5.932060291E1 +2.082921000E3,6.037844323E1 +2.083227000E3,5.719168160E1 +2.083487000E3,5.597578938E1 +2.083743000E3,5.236775830E1 +2.084062000E3,5.471900653E1 +2.084318000E3,5.178371688E1 +2.084618000E3,5.707729304E1 +2.084858000E3,5.526812689E1 +2.085154000E3,5.716405930E1 +2.085391000E3,5.478798233E1 +2.085687000E3,5.496315929E1 +2.085932000E3,5.701239101E1 +2.086228000E3,5.776438308E1 +2.086467000E3,5.628202894E1 +2.086760000E3,5.042244376E1 +2.087015000E3,5.775963511E1 +2.087362000E3,4.982890988E1 +2.087671000E3,4.785672217E1 +2.087922000E3,4.762697394E1 +2.088178000E3,5.046726223E1 +2.088438000E3,4.890262424E1 +2.088711000E3,5.501277631E1 +2.088981000E3,5.666001705E1 +2.089249000E3,6.014252161E1 +2.089513000E3,5.925311989E1 +2.089806000E3,6.173820636E1 +2.090063000E3,5.350884215E1 +2.090366000E3,5.736408779E1 +2.090744000E3,5.450936109E1 +2.091005000E3,5.763377323E1 +2.091253000E3,6.042269191E1 +2.091515000E3,5.484903903E1 +2.091757000E3,5.882101591E1 +2.092028000E3,5.833139845E1 +2.092280000E3,5.703430671E1 +2.092527000E3,5.247783814E1 +2.092809000E3,5.233323676E1 +2.093037000E3,5.202869643E1 +2.093354000E3,5.628845797E1 +2.093634000E3,5.325396544E1 +2.094006000E3,5.654992892E1 +2.094280000E3,5.713253789E1 +2.094541000E3,5.967664240E1 +2.094800000E3,5.750232678E1 +2.095069000E3,5.544480371E1 +2.095333000E3,5.462176641E1 +2.095596000E3,5.811248949E1 +2.095853000E3,6.196847972E1 +2.096192000E3,5.842850461E1 +2.096488000E3,5.597774452E1 +2.096726000E3,5.601282925E1 +2.097104000E3,5.625832805E1 +2.097364000E3,5.315488909E1 +2.097602000E3,5.287250653E1 +2.097844000E3,5.523708836E1 +2.098081000E3,5.724292600E1 +2.098340000E3,5.659511238E1 +2.098670000E3,5.675324149E1 +2.098945000E3,5.485884276E1 +2.099219000E3,5.694143956E1 +2.099469000E3,5.561655413E1 +2.099765000E3,5.844909410E1 +2.100011000E3,6.135621316E1 +2.100343000E3,5.968766012E1 +2.100584000E3,5.173347950E1 +2.100832000E3,5.415548255E1 +2.101090000E3,5.271968845E1 +2.101339000E3,5.007174890E1 +2.101624000E3,5.279525002E1 +2.101895000E3,5.358558767E1 +2.102197000E3,5.559048142E1 +2.102438000E3,5.476305303E1 +2.102705000E3,5.237114911E1 +2.102947000E3,5.014972007E1 +2.103218000E3,4.895902935E1 +2.103469000E3,5.192053997E1 +2.103853000E3,4.647138436E1 +2.104101000E3,4.837766327E1 +2.104448000E3,5.088929287E1 +2.104740000E3,5.561591777E1 +2.104997000E3,5.440319534E1 +2.105260000E3,5.347164399E1 +2.105561000E3,5.151610441E1 +2.105813000E3,5.075382634E1 +2.106121000E3,5.244425755E1 +2.106357000E3,5.269617654E1 +2.106663000E3,5.149027406E1 +2.106954000E3,5.659456733E1 +2.107266000E3,5.282561460E1 +2.107606000E3,5.407918273E1 +2.107883000E3,5.643922092E1 +2.108164000E3,5.169657105E1 +2.108480000E3,5.713744586E1 +2.108748000E3,5.931186178E1 +2.109003000E3,5.645689600E1 +2.109252000E3,5.322874786E1 +2.109552000E3,5.363731782E1 +2.109821000E3,5.353815648E1 +2.110077000E3,5.445551750E1 +2.110418000E3,5.491110228E1 +2.110669000E3,5.291647814E1 +2.110921000E3,5.202914132E1 +2.111180000E3,5.363241827E1 +2.111479000E3,5.566624291E1 +2.111721000E3,5.645238247E1 +2.112027000E3,5.458458697E1 +2.112294000E3,5.469783372E1 +2.112597000E3,5.582449562E1 +2.112854000E3,5.595416398E1 +2.113105000E3,5.113785865E1 +2.113352000E3,6.248282803E1 +2.113711000E3,5.880495226E1 +2.113968000E3,5.941805617E1 +2.114248000E3,5.561632009E1 +2.114507000E3,5.501810850E1 +2.114754000E3,5.936291007E1 +2.115053000E3,6.127733734E1 +2.115321000E3,6.057491273E1 +2.115616000E3,6.127323198E1 +2.115893000E3,5.760488174E1 +2.116193000E3,6.030881831E1 +2.116434000E3,5.967518116E1 +2.116722000E3,5.720938908E1 +2.117066000E3,5.605932878E1 +2.117338000E3,6.068190844E1 +2.117598000E3,5.400374866E1 +2.117892000E3,5.332007667E1 +2.118133000E3,4.991979059E1 +2.118428000E3,5.700198654E1 +2.118666000E3,5.878418983E1 +2.118922000E3,5.703766890E1 +2.119230000E3,5.731012811E1 +2.119515000E3,5.865622099E1 +2.119741000E3,5.772295719E1 +2.120015000E3,5.851982083E1 +2.120322000E3,5.958645129E1 +2.120616000E3,6.233814130E1 +2.120861000E3,6.002711287E1 +2.121162000E3,5.939190004E1 +2.121437000E3,5.758195225E1 +2.121690000E3,5.564648712E1 +2.121946000E3,5.336629511E1 +2.122218000E3,5.199121426E1 +2.122476000E3,5.906368298E1 +2.122759000E3,5.917930836E1 +2.123014000E3,5.824882047E1 +2.123266000E3,5.770359270E1 +2.123492000E3,5.695638802E1 +2.123777000E3,5.720151485E1 +2.124027000E3,6.045411810E1 +2.124327000E3,5.540258870E1 +2.124575000E3,5.828000252E1 +2.124835000E3,5.500577731E1 +2.125106000E3,5.926473821E1 +2.125354000E3,5.472888078E1 +2.125611000E3,5.530970077E1 +2.125862000E3,5.595037084E1 +2.126117000E3,5.439239133E1 +2.126432000E3,5.961943996E1 +2.126692000E3,5.841091801E1 +2.126944000E3,5.863137443E1 +2.127282000E3,5.731398304E1 +2.127577000E3,5.665374527E1 +2.127843000E3,5.476493539E1 +2.128129000E3,5.580929465E1 +2.128437000E3,5.565551021E1 +2.128739000E3,5.869101147E1 +2.129026000E3,5.827114612E1 +2.129307000E3,5.507536074E1 +2.129577000E3,5.532393691E1 +2.129934000E3,5.233850306E1 +2.130215000E3,5.514372423E1 +2.130466000E3,5.757947445E1 +2.130714000E3,6.126034226E1 +2.131015000E3,6.074916673E1 +2.131279000E3,5.864911171E1 +2.131564000E3,5.680524431E1 +2.131825000E3,6.002252741E1 +2.132078000E3,5.953076168E1 +2.132390000E3,6.027427680E1 +2.132647000E3,5.955779136E1 +2.132902000E3,5.835756058E1 +2.133223000E3,6.286787860E1 +2.133471000E3,6.057291506E1 +2.133724000E3,5.893793659E1 +2.134002000E3,5.508555746E1 +2.134257000E3,5.619881839E1 +2.134512000E3,5.505764062E1 +2.134784000E3,5.808922162E1 +2.135054000E3,5.334583096E1 +2.135313000E3,5.298019930E1 +2.135595000E3,5.025342296E1 +2.135812000E3,5.409382682E1 +2.136057000E3,5.580950424E1 +2.136332000E3,5.523743716E1 +2.136661000E3,5.499005541E1 +2.136917000E3,5.745623005E1 +2.137196000E3,5.149169849E1 +2.137449000E3,5.261206885E1 +2.137711000E3,5.487518376E1 +2.138022000E3,5.898871991E1 +2.138270000E3,5.852026830E1 +2.138564000E3,5.868858262E1 +2.138802000E3,5.736353209E1 +2.139066000E3,5.529465652E1 +2.139332000E3,5.762578865E1 +2.139672000E3,5.790185487E1 +2.139930000E3,5.792373283E1 +2.140278000E3,5.597904656E1 +2.140535000E3,5.355980456E1 +2.140856000E3,5.411887429E1 +2.141146000E3,5.094976839E1 +2.141467000E3,5.658279242E1 +2.141735000E3,6.043792292E1 +2.142041000E3,5.996632022E1 +2.142276000E3,6.230155616E1 +2.142526000E3,6.102528468E1 +2.142783000E3,5.770338577E1 +2.143124000E3,5.827243883E1 +2.143406000E3,5.367650147E1 +2.143645000E3,5.777094487E1 +2.143915000E3,5.851595499E1 +2.144175000E3,5.573729509E1 +2.144454000E3,5.467626304E1 +2.144700000E3,5.699765591E1 +2.144968000E3,5.692170932E1 +2.145246000E3,6.030210344E1 +2.145550000E3,5.876913066E1 +2.145797000E3,5.698149837E1 +2.146042000E3,5.982717784E1 +2.146368000E3,5.905293636E1 +2.146676000E3,5.947032966E1 +2.146922000E3,5.910471730E1 +2.147225000E3,6.065874797E1 +2.147524000E3,5.680135408E1 +2.147831000E3,5.451199701E1 +2.148090000E3,5.301325775E1 +2.148365000E3,5.466040661E1 +2.148665000E3,5.658013689E1 +2.148952000E3,5.410667827E1 +2.149249000E3,5.788683658E1 +2.149597000E3,5.873903650E1 +2.149910000E3,5.314379433E1 +2.150150000E3,5.564952940E1 +2.150451000E3,6.000220607E1 +2.150691000E3,6.235870620E1 +2.150965000E3,6.387461990E1 +2.151194000E3,6.491001134E1 +2.151449000E3,5.932544814E1 +2.151756000E3,6.117684525E1 +2.152011000E3,6.059885605E1 +2.152282000E3,6.303246617E1 +2.152596000E3,6.399854390E1 +2.152961000E3,6.063746268E1 +2.153223000E3,6.122116723E1 +2.153495000E3,5.809397592E1 +2.153749000E3,5.903784259E1 +2.153999000E3,6.047826717E1 +2.154283000E3,5.846467986E1 +2.154537000E3,6.226879102E1 +2.154785000E3,5.980611807E1 +2.155079000E3,5.787450321E1 +2.155375000E3,5.676059962E1 +2.155616000E3,5.395823696E1 +2.155912000E3,5.953639288E1 +2.156221000E3,5.971614724E1 +2.156510000E3,6.039969801E1 +2.156758000E3,5.898776738E1 +2.157015000E3,6.100474003E1 +2.157289000E3,5.750129682E1 +2.157591000E3,5.995540643E1 +2.157844000E3,5.628303244E1 +2.158104000E3,5.892686601E1 +2.158366000E3,5.712884748E1 +2.158667000E3,5.727860760E1 +2.158932000E3,5.313556696E1 +2.159288000E3,5.635583768E1 +2.159555000E3,5.929473664E1 +2.159809000E3,5.396180560E1 +2.160112000E3,5.807023999E1 +2.160354000E3,5.639240346E1 +2.160608000E3,5.917728814E1 +2.160855000E3,5.429000157E1 +2.161130000E3,5.397827395E1 +2.161395000E3,5.647751800E1 +2.161656000E3,5.342605760E1 +2.162007000E3,5.324373839E1 +2.162263000E3,5.439383591E1 +2.162517000E3,5.727066505E1 +2.162888000E3,5.995593964E1 +2.163140000E3,6.130649482E1 +2.163392000E3,6.228130821E1 +2.163644000E3,6.279179388E1 +2.163938000E3,5.559527300E1 +2.164178000E3,5.200550071E1 +2.164481000E3,5.797363767E1 +2.164757000E3,5.902554678E1 +2.165040000E3,5.834647622E1 +2.165303000E3,5.713285380E1 +2.165575000E3,6.343633700E1 +2.165850000E3,5.896208706E1 +2.166219000E3,5.624501583E1 +2.166483000E3,5.696603075E1 +2.166769000E3,5.736978604E1 +2.167027000E3,5.837475894E1 +2.167278000E3,5.768129207E1 +2.167593000E3,5.660761865E1 +2.167856000E3,5.680076310E1 +2.168110000E3,5.883044450E1 +2.168385000E3,5.772028600E1 +2.168649000E3,5.342008664E1 +2.168914000E3,5.359113324E1 +2.169168000E3,5.849769703E1 +2.169536000E3,6.267181821E1 +2.169793000E3,5.719603223E1 +2.170040000E3,5.397233107E1 +2.170287000E3,4.861027503E1 +2.170579000E3,5.741564583E1 +2.170822000E3,6.207812430E1 +2.171115000E3,5.827753689E1 +2.171365000E3,6.042202215E1 +2.171629000E3,5.516417228E1 +2.171895000E3,4.912315476E1 +2.172163000E3,4.718316305E1 +2.172446000E3,5.363129541E1 +2.172813000E3,5.322378335E1 +2.173087000E3,5.228499961E1 +2.173349000E3,5.364722432E1 +2.173618000E3,5.964999675E1 +2.173917000E3,6.116591719E1 +2.174174000E3,5.668310324E1 +2.174436000E3,5.538937699E1 +2.174688000E3,5.539330891E1 +2.174944000E3,5.678019084E1 +2.175197000E3,5.655985061E1 +2.175490000E3,6.211643319E1 +2.175751000E3,5.899842059E1 +2.176153000E3,6.042080027E1 +2.176454000E3,5.956376587E1 +2.176730000E3,5.896716838E1 +2.177048000E3,5.729778676E1 +2.177305000E3,5.512323216E1 +2.177616000E3,5.573124529E1 +2.177883000E3,5.390669828E1 +2.178139000E3,5.435017850E1 +2.178403000E3,5.275779180E1 +2.178672000E3,5.469054235E1 +2.178938000E3,5.701832565E1 +2.179201000E3,6.063134316E1 +2.179540000E3,6.461030243E1 +2.179799000E3,6.345934666E1 +2.180043000E3,6.255021373E1 +2.180348000E3,6.265836689E1 +2.180640000E3,6.125083403E1 +2.180878000E3,5.721943432E1 +2.181125000E3,5.584429631E1 +2.181407000E3,5.679219567E1 +2.181647000E3,5.506189996E1 +2.181962000E3,5.950753578E1 +2.182227000E3,5.684863204E1 +2.182499000E3,5.318048388E1 +2.182825000E3,5.856807028E1 +2.183124000E3,6.201159961E1 +2.183360000E3,5.994279105E1 +2.183661000E3,6.155626338E1 +2.183904000E3,5.760612799E1 +2.184197000E3,5.557219911E1 +2.184436000E3,5.720299401E1 +2.184730000E3,5.496492062E1 +2.184965000E3,5.287669523E1 +2.185272000E3,5.534018340E1 +2.185572000E3,5.047897567E1 +2.185897000E3,5.289532450E1 +2.186149000E3,5.169587435E1 +2.186428000E3,5.811856565E1 +2.186722000E3,5.829930976E1 +2.187016000E3,5.767171180E1 +2.187297000E3,5.167293983E1 +2.187542000E3,5.634712904E1 +2.187793000E3,5.452173951E1 +2.188038000E3,5.242356157E1 +2.188332000E3,5.476946331E1 +2.188570000E3,5.506415879E1 +2.188807000E3,5.842757277E1 +2.189123000E3,5.579731569E1 +2.189400000E3,5.735467547E1 +2.189707000E3,5.510643622E1 +2.189947000E3,5.399605596E1 +2.190247000E3,5.231812124E1 +2.190482000E3,5.397423501E1 +2.190722000E3,5.467291530E1 +2.190972000E3,5.750340972E1 +2.191219000E3,5.451621797E1 +2.191527000E3,5.544744059E1 +2.191775000E3,5.570906247E1 +2.192040000E3,5.570238792E1 +2.192395000E3,5.704729905E1 +2.192674000E3,5.662202644E1 +2.192969000E3,6.130245708E1 +2.193206000E3,5.842239411E1 +2.193505000E3,5.813812757E1 +2.193745000E3,5.643123308E1 +2.194038000E3,5.810403241E1 +2.194275000E3,5.863690353E1 +2.194574000E3,5.519980518E1 +2.194810000E3,5.381530940E1 +2.195092000E3,5.781601666E1 +2.195335000E3,5.699265058E1 +2.195608000E3,5.477338243E1 +2.195929000E3,5.695412826E1 +2.196188000E3,5.575935497E1 +2.196439000E3,5.738570553E1 +2.196686000E3,6.194168224E1 +2.196969000E3,5.888525061E1 +2.197270000E3,5.830791470E1 +2.197516000E3,5.904778886E1 +2.197822000E3,5.987539712E1 +2.198117000E3,5.910637217E1 +2.198355000E3,5.676446576E1 +2.198673000E3,5.632729175E1 +2.198920000E3,5.826507178E1 +2.199227000E3,6.221847088E1 +2.199493000E3,6.023584539E1 +2.199739000E3,6.378124478E1 +2.199975000E3,6.457706819E1 +2.200218000E3,5.781084826E1 +2.200471000E3,5.833307765E1 +2.200715000E3,5.849295856E1 +2.200984000E3,5.695016071E1 +2.201255000E3,5.945608920E1 +2.201511000E3,5.923858391E1 +2.201821000E3,5.975381188E1 +2.202050000E3,5.657071344E1 +2.202297000E3,5.582353283E1 +2.202552000E3,5.634201272E1 +2.202803000E3,5.842061156E1 +2.203080000E3,5.511323996E1 +2.203339000E3,5.333816234E1 +2.203589000E3,5.586132206E1 +2.203867000E3,5.612282959E1 +2.204151000E3,5.390907932E1 +2.204405000E3,5.581501331E1 +2.204648000E3,5.691201261E1 +2.204938000E3,5.605209961E1 +2.205271000E3,5.337227455E1 +2.205520000E3,5.726868677E1 +2.205824000E3,5.678400386E1 +2.206068000E3,5.598615724E1 +2.206327000E3,6.245548090E1 +2.206634000E3,5.788335624E1 +2.206927000E3,5.672312442E1 +2.207166000E3,5.700846075E1 +2.207464000E3,5.693157148E1 +2.207703000E3,5.667671942E1 +2.207995000E3,5.655907845E1 +2.208344000E3,5.694003799E1 +2.208592000E3,5.812693102E1 +2.208844000E3,5.305590014E1 +2.209133000E3,5.963333488E1 +2.209376000E3,6.125764761E1 +2.209621000E3,5.708540532E1 +2.209865000E3,5.539532482E1 +2.210177000E3,6.086117928E1 +2.210432000E3,5.871599576E1 +2.210705000E3,5.720891289E1 +2.210929000E3,5.859137268E1 +2.211185000E3,5.492761595E1 +2.211566000E3,5.458369125E1 +2.211811000E3,5.704243717E1 +2.212094000E3,5.948204172E1 +2.212325000E3,5.442994388E1 +2.212570000E3,5.607391365E1 +2.212815000E3,5.349643391E1 +2.213089000E3,5.518134225E1 +2.213397000E3,5.879499176E1 +2.213659000E3,5.918920409E1 +2.213917000E3,6.317166487E1 +2.214205000E3,5.773325998E1 +2.214505000E3,6.021667659E1 +2.214834000E3,5.707564648E1 +2.215074000E3,5.411436798E1 +2.215412000E3,5.705541238E1 +2.215699000E3,6.721672427E1 +2.215946000E3,6.130402498E1 +2.216241000E3,5.914242022E1 +2.216493000E3,5.881747375E1 +2.216786000E3,5.920115687E1 +2.217030000E3,5.981753209E1 +2.217325000E3,5.379848698E1 +2.217566000E3,5.498057230E1 +2.217931000E3,5.647867672E1 +2.218210000E3,5.460935805E1 +2.218440000E3,5.579228446E1 +2.218740000E3,5.598523495E1 +2.218992000E3,5.501198671E1 +2.219248000E3,5.270876730E1 +2.219495000E3,5.711255338E1 +2.219767000E3,5.276578476E1 +2.220009000E3,6.171644376E1 +2.220307000E3,5.760035427E1 +2.220557000E3,6.039071701E1 +2.220820000E3,5.947563028E1 +2.221166000E3,5.781157464E1 +2.221459000E3,5.689764898E1 +2.221740000E3,5.361204154E1 +2.221998000E3,5.565584232E1 +2.222252000E3,6.236264054E1 +2.222508000E3,5.583706888E1 +2.222794000E3,5.998886151E1 +2.223038000E3,6.067027795E1 +2.223281000E3,5.953550256E1 +2.223512000E3,6.087865846E1 +2.223764000E3,5.880177247E1 +2.224056000E3,5.532032645E1 +2.224389000E3,5.110554887E1 +2.224697000E3,6.082114583E1 +2.224957000E3,6.332269799E1 +2.225225000E3,5.859152014E1 +2.225521000E3,6.312344162E1 +2.225760000E3,6.208500503E1 +2.226003000E3,6.030377984E1 +2.226280000E3,5.890306026E1 +2.226553000E3,6.412257006E1 +2.226813000E3,5.959239884E1 +2.227137000E3,5.603893495E1 +2.227460000E3,5.807576772E1 +2.227717000E3,6.034272760E1 +2.227950000E3,5.678924442E1 +2.228211000E3,5.767938832E1 +2.228489000E3,4.973605337E1 +2.228742000E3,5.227056153E1 +2.229007000E3,4.524576382E1 +2.229320000E3,5.163901012E1 +2.229633000E3,5.791269320E1 +2.229909000E3,5.832692980E1 +2.230223000E3,5.512940778E1 +2.230487000E3,5.639998631E1 +2.230845000E3,6.012111222E1 +2.231113000E3,6.632176219E1 +2.231407000E3,6.692769565E1 +2.231662000E3,6.409372191E1 +2.231945000E3,6.268702605E1 +2.232208000E3,6.192012265E1 +2.232460000E3,5.923306273E1 +2.232717000E3,5.726340446E1 +2.233005000E3,5.708270925E1 +2.233256000E3,6.172203942E1 +2.233510000E3,6.197059155E1 +2.233807000E3,6.691458644E1 +2.234160000E3,6.165007134E1 +2.234422000E3,6.172053486E1 +2.234714000E3,6.148833899E1 +2.234974000E3,6.190331921E1 +2.235253000E3,5.938090919E1 +2.235479000E3,6.223060920E1 +2.235722000E3,6.133640397E1 +2.236028000E3,6.400294095E1 +2.236269000E3,6.581462957E1 +2.236516000E3,6.094953675E1 +2.236828000E3,5.792232456E1 +2.237124000E3,5.750665846E1 +2.237367000E3,5.360734442E1 +2.237668000E3,5.239836763E1 +2.237914000E3,5.189659577E1 +2.238168000E3,5.779541581E1 +2.238431000E3,5.409030702E1 +2.238689000E3,5.064192938E1 +2.238941000E3,4.890244292E1 +2.239235000E3,4.958738332E1 +2.239486000E3,5.093509792E1 +2.239725000E3,5.421091975E1 +2.239970000E3,6.074883769E1 +2.240298000E3,5.611992467E1 +2.240604000E3,4.988071111E1 +2.240900000E3,4.952063126E1 +2.241187000E3,5.282005772E1 +2.241428000E3,5.672648648E1 +2.241685000E3,5.807464117E1 +2.241973000E3,5.565097745E1 +2.242224000E3,5.410363002E1 +2.242475000E3,5.548804216E1 +2.242720000E3,5.862108370E1 +2.242959000E3,5.101243713E1 +2.243259000E3,5.340920814E1 +2.243564000E3,5.471013043E1 +2.243801000E3,5.474536753E1 +2.244062000E3,5.454012147E1 +2.244333000E3,5.594751460E1 +2.244637000E3,5.486159050E1 +2.244913000E3,5.317501502E1 +2.245138000E3,5.100209753E1 +2.245397000E3,5.436827206E1 +2.245643000E3,5.483479867E1 +2.245916000E3,5.150486026E1 +2.246182000E3,5.049924887E1 +2.246449000E3,5.226067252E1 +2.246744000E3,5.389432372E1 +2.247057000E3,6.032791953E1 +2.247330000E3,5.966662928E1 +2.247666000E3,5.824962285E1 +2.247962000E3,5.700720490E1 +2.248202000E3,6.373200887E1 +2.248495000E3,6.648419927E1 +2.248743000E3,5.542652488E1 +2.249036000E3,5.256926371E1 +2.249272000E3,6.053195001E1 +2.249564000E3,4.959074314E1 +2.249800000E3,5.054384460E1 +2.250136000E3,5.008489809E1 +2.250431000E3,5.752384263E1 +2.250666000E3,5.367007636E1 +2.250931000E3,4.851936559E1 +2.251210000E3,4.965482987E1 +2.251497000E3,5.733244198E1 +2.251772000E3,5.370188093E1 +2.251997000E3,5.388650114E1 +2.252246000E3,5.331606518E1 +2.252516000E3,5.534782747E1 +2.252818000E3,5.271944154E1 +2.253047000E3,5.188974945E1 +2.253402000E3,5.040855384E1 +2.253689000E3,5.348452962E1 +2.253965000E3,5.685197701E1 +2.254240000E3,5.699151925E1 +2.254539000E3,5.217481719E1 +2.254794000E3,5.255063115E1 +2.255035000E3,5.258436032E1 +2.255283000E3,5.228429265E1 +2.255592000E3,5.187189315E1 +2.255851000E3,5.089851896E1 +2.256105000E3,5.323192817E1 +2.256387000E3,5.259240607E1 +2.256752000E3,5.489099725E1 +2.257016000E3,5.140699592E1 +2.257276000E3,5.478139635E1 +2.257600000E3,5.508183343E1 +2.257864000E3,5.539199709E1 +2.258160000E3,5.879728075E1 +2.258399000E3,6.145510373E1 +2.258645000E3,6.018082278E1 +2.258890000E3,6.203490998E1 +2.259131000E3,6.051201097E1 +2.259385000E3,5.741582229E1 +2.259629000E3,5.742200481E1 +2.259994000E3,5.205318956E1 +2.260295000E3,5.807019657E1 +2.260539000E3,5.843419178E1 +2.260841000E3,5.543595349E1 +2.261104000E3,5.208978608E1 +2.261348000E3,5.288295424E1 +2.261601000E3,5.593156434E1 +2.261856000E3,5.600009221E1 +2.262108000E3,5.581775464E1 +2.262358000E3,5.037081152E1 +2.262613000E3,5.059162693E1 +2.262916000E3,5.459372597E1 +2.263271000E3,5.581642194E1 +2.263548000E3,5.702582989E1 +2.263802000E3,5.531282217E1 +2.264049000E3,5.356460573E1 +2.264318000E3,5.682743962E1 +2.264564000E3,5.353127135E1 +2.264854000E3,5.962134934E1 +2.265080000E3,5.858968032E1 +2.265326000E3,5.681259568E1 +2.265625000E3,5.635120121E1 +2.265871000E3,5.433379551E1 +2.266211000E3,4.913835205E1 +2.266510000E3,5.243179137E1 +2.266783000E3,4.886918417E1 +2.267043000E3,4.774131335E1 +2.267292000E3,4.892025491E1 +2.267553000E3,4.710213612E1 +2.267796000E3,4.847827931E1 +2.268042000E3,5.624471818E1 +2.268281000E3,5.286977188E1 +2.268548000E3,5.683989489E1 +2.268800000E3,5.459251055E1 +2.269086000E3,5.272841607E1 +2.269389000E3,5.585343514E1 +2.269616000E3,5.452972356E1 +2.269865000E3,5.183250423E1 +2.270167000E3,4.733442261E1 +2.270442000E3,4.736450762E1 +2.270667000E3,4.430645798E1 +2.270915000E3,4.635257501E1 +2.271160000E3,4.914582650E1 +2.271407000E3,4.938157659E1 +2.271656000E3,4.788630853E1 +2.271896000E3,4.778446083E1 +2.272198000E3,5.081637081E1 +2.272482000E3,4.630509256E1 +2.272722000E3,4.551027932E1 +2.273048000E3,5.074623045E1 +2.273321000E3,4.689236254E1 +2.273562000E3,4.960242652E1 +2.273859000E3,5.310274016E1 +2.274104000E3,5.391997859E1 +2.274392000E3,4.854992165E1 +2.274648000E3,4.610161890E1 +2.274915000E3,5.325141064E1 +2.275196000E3,4.823989698E1 +2.275460000E3,5.167706762E1 +2.275772000E3,4.424461998E1 +2.276008000E3,4.957193490E1 +2.276258000E3,4.220429916E1 +2.276545000E3,4.614900045E1 +2.276809000E3,4.247109284E1 +2.277119000E3,5.104311310E1 +2.277385000E3,4.898949856E1 +2.277651000E3,5.033981280E1 +2.277920000E3,4.504255509E1 +2.278210000E3,4.851295637E1 +2.278452000E3,4.975001222E1 +2.278771000E3,5.198599663E1 +2.279101000E3,5.078534391E1 +2.279348000E3,5.056977572E1 +2.279614000E3,4.645427419E1 +2.279894000E3,4.837428182E1 +2.280121000E3,4.672417188E1 +2.280416000E3,4.338010131E1 +2.280671000E3,4.552410696E1 +2.280941000E3,4.107346609E1 +2.281195000E3,4.850760260E1 +2.281477000E3,4.449785068E1 +2.281730000E3,3.834743898E1 +2.282028000E3,3.160451104E1 +2.282275000E3,2.921367430E1 +2.282509000E3,3.929432216E1 +2.282771000E3,3.560833020E1 +2.283021000E3,4.204425230E1 +2.283277000E3,4.897505461E1 +2.283570000E3,4.492050546E1 +2.283802000E3,4.549624302E1 +2.284053000E3,4.703134831E1 +2.284302000E3,4.492779574E1 +2.284580000E3,5.573526523E1 +2.284888000E3,4.583204799E1 +2.285186000E3,3.987632497E1 +2.285426000E3,4.276483306E1 +2.285670000E3,4.196646636E1 +2.285974000E3,4.127295807E1 +2.286241000E3,3.392540836E1 +2.286513000E3,3.045281657E1 +2.286755000E3,3.056149566E1 +2.287058000E3,4.234115907E1 +2.287358000E3,4.148011807E1 +2.287615000E3,4.752316696E1 +2.287890000E3,4.261643768E1 +2.288186000E3,3.531031146E1 +2.288451000E3,3.336926272E1 +2.288830000E3,3.217663691E1 +2.289083000E3,3.280943829E1 +2.289350000E3,4.037024361E1 +2.289606000E3,4.463743016E1 +2.289870000E3,3.926930450E1 +2.290142000E3,3.549021170E1 +2.290376000E3,3.657210104E1 +2.290669000E3,3.609483404E1 +2.290917000E3,3.935001060E1 +2.291190000E3,3.968762383E1 +2.291417000E3,3.622062011E1 +2.291698000E3,5.052972627E1 +2.292019000E3,4.472329620E1 +2.292314000E3,3.528869928E1 +2.292580000E3,3.171318762E1 +2.292867000E3,3.293682859E1 +2.293112000E3,2.980662334E1 +2.293408000E3,3.108877030E1 +2.293645000E3,3.411108767E1 +2.293948000E3,2.929195023E1 +2.294231000E3,2.830259325E1 +2.294484000E3,2.905088910E1 +2.294732000E3,3.046102835E1 +2.295049000E3,2.679058069E1 +2.295347000E3,2.620731663E1 +2.295594000E3,3.509528145E1 +2.295836000E3,2.657946529E1 +2.296130000E3,2.511368258E1 +2.296378000E3,2.555955915E1 +2.296634000E3,2.785949260E1 +2.296875000E3,2.654407944E1 +2.297117000E3,3.658368449E1 +2.297412000E3,3.412054652E1 +2.297648000E3,3.448252102E1 +2.297956000E3,3.528486686E1 +2.298205000E3,3.265291425E1 +2.298494000E3,2.963788314E1 +2.298798000E3,3.350933300E1 +2.299085000E3,3.038301619E1 +2.299338000E3,3.357142506E1 +2.299610000E3,4.744800671E1 +2.299868000E3,3.435626076E1 +2.300142000E3,3.368274389E1 +2.300402000E3,2.881246111E1 +2.300655000E3,3.097762310E1 +2.300898000E3,2.947567056E1 +2.301182000E3,3.214187359E1 +2.301423000E3,3.421070745E1 +2.301786000E3,5.117970534E1 +2.302087000E3,5.037784077E1 +2.302335000E3,5.283937176E1 +2.302644000E3,5.164119106E1 +2.302941000E3,5.300709748E1 +2.303240000E3,4.713488810E1 +2.303488000E3,4.524114677E1 +2.303739000E3,3.080285972E1 +2.304022000E3,2.293405577E1 +2.304254000E3,2.235464386E1 +2.304552000E3,2.949911358E1 +2.304876000E3,4.141349798E1 +2.305182000E3,4.156611078E1 +2.305491000E3,4.347125429E1 +2.305797000E3,4.579894404E1 +2.306107000E3,4.646123013E1 +2.306358000E3,4.517240887E1 +2.306604000E3,5.308475174E1 +2.306870000E3,4.681256924E1 +2.307168000E3,2.942058533E1 +2.307450000E3,2.986114457E1 +2.307717000E3,3.195150356E1 +2.308031000E3,3.775567348E1 +2.308265000E3,3.823556499E1 +2.308570000E3,2.909536341E1 +2.308842000E3,3.096070220E1 +2.309098000E3,4.060687649E1 +2.309391000E3,4.820113946E1 +2.309687000E3,4.619079404E1 +2.309928000E3,4.304793785E1 +2.310216000E3,4.976144450E1 +2.310446000E3,4.779148829E1 +2.310686000E3,5.167703897E1 +2.310979000E3,3.773719280E1 +2.311248000E3,2.923821784E1 +2.311466000E3,2.654081756E1 +2.311763000E3,2.616593312E1 +2.312001000E3,2.460963519E1 +2.312285000E3,2.554564289E1 +2.312588000E3,3.572755404E1 +2.312856000E3,4.274835909E1 +2.313074000E3,4.355953935E1 +2.313375000E3,5.377727845E1 +2.313611000E3,5.435235813E1 +2.313893000E3,5.477010993E1 +2.314137000E3,5.142421895E1 +2.314483000E3,4.794670725E1 +2.314780000E3,5.149445419E1 +2.315019000E3,5.127618051E1 +2.315306000E3,4.939341348E1 +2.315533000E3,4.928824788E1 +2.315832000E3,4.617335031E1 +2.316069000E3,3.696469062E1 +2.316377000E3,4.552948924E1 +2.316627000E3,4.672923062E1 +2.316913000E3,4.504192742E1 +2.317215000E3,4.364234368E1 +2.317558000E3,4.231291453E1 +2.317853000E3,4.886663905E1 +2.318118000E3,4.492895691E1 +2.318412000E3,4.464681620E1 +2.318711000E3,4.698360224E1 +2.318950000E3,4.454369095E1 +2.319250000E3,4.409609939E1 +2.319494000E3,4.283121809E1 +2.319793000E3,4.398770219E1 +2.320040000E3,4.728522548E1 +2.320336000E3,4.533798443E1 +2.320660000E3,4.548359371E1 +2.320908000E3,4.366718291E1 +2.321152000E3,5.139935964E1 +2.321408000E3,4.747980864E1 +2.321709000E3,3.867643032E1 +2.321952000E3,4.294445900E1 +2.322196000E3,4.336333736E1 +2.322445000E3,3.890531131E1 +2.322682000E3,4.087281677E1 +2.322980000E3,3.979668464E1 +2.323225000E3,4.157042707E1 +2.323553000E3,4.515881082E1 +2.323886000E3,3.868360739E1 +2.324184000E3,4.839319184E1 +2.324428000E3,4.298284223E1 +2.324669000E3,4.433761346E1 +2.324987000E3,4.011512195E1 +2.325233000E3,3.478551365E1 +2.325486000E3,4.180203002E1 +2.325789000E3,4.323726184E1 +2.326086000E3,3.985791110E1 +2.326333000E3,3.946244529E1 +2.326667000E3,4.066537977E1 +2.326925000E3,3.986903649E1 +2.327223000E3,4.142461274E1 +2.327521000E3,3.461788217E1 +2.327778000E3,3.326602717E1 +2.328102000E3,4.357074645E1 +2.328367000E3,5.496493564E1 +2.328618000E3,4.413482695E1 +2.328920000E3,4.170999616E1 +2.329183000E3,4.107694173E1 +2.329486000E3,5.342371220E1 +2.329729000E3,5.103134188E1 +2.330028000E3,4.716459977E1 +2.330382000E3,4.916498276E1 +2.330642000E3,4.801561309E1 +2.330930000E3,4.860033329E1 +2.331211000E3,5.037441690E1 +2.331463000E3,5.227972551E1 +2.331719000E3,4.516533742E1 +2.331971000E3,4.623606604E1 +2.332268000E3,3.207985320E1 +2.332513000E3,3.485208029E1 +2.332801000E3,4.367306984E1 +2.333109000E3,4.764897626E1 +2.333397000E3,4.844411921E1 +2.333779000E3,4.624834459E1 +2.334088000E3,4.492130047E1 +2.334331000E3,4.172849812E1 +2.334618000E3,4.243441154E1 +2.334859000E3,4.155300890E1 +2.335165000E3,3.508017133E1 +2.335414000E3,3.102497597E1 +2.335689000E3,3.346102792E1 +2.335938000E3,2.980210924E1 +2.336237000E3,2.815695425E1 +2.336480000E3,4.530841757E1 +2.336824000E3,4.476742737E1 +2.337075000E3,4.460293889E1 +2.337332000E3,5.054872999E1 +2.337583000E3,4.962100100E1 +2.337845000E3,5.224787063E1 +2.338132000E3,4.845338775E1 +2.338374000E3,4.675501048E1 +2.338651000E3,4.806540095E1 +2.338903000E3,4.707869991E1 +2.339145000E3,4.747595477E1 +2.339395000E3,3.449909829E1 +2.339700000E3,4.619360178E1 +2.340033000E3,4.785644508E1 +2.340329000E3,4.721347586E1 +2.340579000E3,4.302992844E1 +2.340828000E3,4.629706327E1 +2.341122000E3,4.550319757E1 +2.341368000E3,4.510038554E1 +2.341611000E3,4.752886315E1 +2.341876000E3,4.524122211E1 +2.342135000E3,2.990386366E1 +2.342396000E3,3.647672774E1 +2.342679000E3,2.854891758E1 +2.342936000E3,3.995722191E1 +2.343310000E3,4.501906630E1 +2.343555000E3,4.872212276E1 +2.343839000E3,4.566863325E1 +2.344134000E3,3.946814595E1 +2.344384000E3,4.796193013E1 +2.344656000E3,4.858552009E1 +2.344961000E3,4.902627763E1 +2.345257000E3,4.467711671E1 +2.345498000E3,3.756709071E1 +2.345764000E3,2.964206509E1 +2.346064000E3,4.283044167E1 +2.346415000E3,4.191014925E1 +2.346743000E3,4.910031818E1 +2.347021000E3,5.022624274E1 +2.347337000E3,5.257970130E1 +2.347586000E3,4.764257555E1 +2.347831000E3,4.353349182E1 +2.348126000E3,4.318604201E1 +2.348436000E3,4.825752031E1 +2.348710000E3,4.464987037E1 +2.348968000E3,4.690302679E1 +2.349225000E3,4.464063657E1 +2.349495000E3,5.114524492E1 +2.349740000E3,4.345049547E1 +2.350133000E3,4.655800825E1 +2.350382000E3,4.419356370E1 +2.350688000E3,4.308388818E1 +2.350960000E3,4.964188075E1 +2.351269000E3,5.137042419E1 +2.351542000E3,4.751708919E1 +2.351836000E3,3.239228651E1 +2.352067000E3,3.331178705E1 +2.352357000E3,4.628654550E1 +2.352625000E3,4.653844798E1 +2.352938000E3,4.419734850E1 +2.353231000E3,3.771763539E1 +2.353458000E3,3.489550836E1 +2.353713000E3,2.965581776E1 +2.353962000E3,3.457100474E1 +2.354201000E3,3.291595658E1 +2.354446000E3,2.791603976E1 +2.354711000E3,3.307930362E1 +2.355027000E3,5.311162000E1 +2.355290000E3,4.688373373E1 +2.355581000E3,3.663543876E1 +2.355868000E3,2.834403560E1 +2.356176000E3,5.001680718E1 +2.356518000E3,5.349221251E1 +2.356780000E3,5.234097025E1 +2.357043000E3,4.476475434E1 +2.357349000E3,5.160193390E1 +2.357584000E3,4.375385010E1 +2.357840000E3,3.709166207E1 +2.358125000E3,2.927191182E1 +2.358378000E3,4.114289062E1 +2.358676000E3,4.266518399E1 +2.358921000E3,4.641380631E1 +2.359210000E3,4.551221179E1 +2.359545000E3,4.099683883E1 +2.359801000E3,5.202602500E1 +2.360072000E3,5.207875379E1 +2.360343000E3,4.670310433E1 +2.360619000E3,4.619168123E1 +2.360865000E3,4.348453495E1 +2.361113000E3,4.603882932E1 +2.361353000E3,4.061885274E1 +2.361649000E3,4.873355826E1 +2.361884000E3,4.796347566E1 +2.362174000E3,4.419543811E1 +2.362420000E3,4.412529768E1 +2.362674000E3,4.315515456E1 +2.363006000E3,3.718353950E1 +2.363303000E3,4.131746877E1 +2.363556000E3,3.462830696E1 +2.363825000E3,3.224809166E1 +2.364105000E3,2.946532539E1 +2.364420000E3,4.082560353E1 +2.364671000E3,4.169760242E1 +2.364916000E3,4.728483165E1 +2.365158000E3,4.384961396E1 +2.365493000E3,3.327447630E1 +2.365797000E3,2.406470586E1 +2.366141000E3,2.410271882E1 +2.366422000E3,4.124818432E1 +2.366699000E3,4.300386829E1 +2.366994000E3,4.592409288E1 +2.367239000E3,4.402074721E1 +2.367492000E3,4.331525310E1 +2.367744000E3,4.351543939E1 +2.368045000E3,4.861325913E1 +2.368277000E3,4.345520025E1 +2.368543000E3,5.037549285E1 +2.368790000E3,3.455268589E1 +2.369034000E3,3.454484220E1 +2.369300000E3,3.436570372E1 +2.369544000E3,3.180799867E1 +2.369820000E3,4.460893996E1 +2.370091000E3,5.635981603E1 +2.370383000E3,4.932803438E1 +2.370635000E3,5.123791361E1 +2.370939000E3,4.749913119E1 +2.371193000E3,4.606624254E1 +2.371498000E3,4.453668838E1 +2.371779000E3,4.424564317E1 +2.372081000E3,5.022357768E1 +2.372347000E3,4.983363592E1 +2.372720000E3,4.311987242E1 +2.372969000E3,4.071927446E1 +2.373234000E3,3.624584431E1 +2.373535000E3,3.338407859E1 +2.373777000E3,2.744030282E1 +2.374025000E3,4.017686066E1 +2.374281000E3,4.153799732E1 +2.374537000E3,5.163713220E1 +2.374786000E3,4.970373114E1 +2.375033000E3,4.601563593E1 +2.375284000E3,4.943210146E1 +2.375577000E3,5.208741018E1 +2.375935000E3,4.780129348E1 +2.376167000E3,4.632707744E1 +2.376478000E3,5.008962536E1 +2.376734000E3,4.691729314E1 +2.376987000E3,4.593220796E1 +2.377250000E3,4.703621615E1 +2.377550000E3,4.863501898E1 +2.377838000E3,4.747349412E1 +2.378102000E3,4.430216971E1 +2.378373000E3,5.038477253E1 +2.378648000E3,4.679597376E1 +2.378873000E3,3.998762784E1 +2.379232000E3,4.140472709E1 +2.379480000E3,3.803559367E1 +2.379735000E3,4.292956565E1 +2.379993000E3,3.275484639E1 +2.380260000E3,3.159298587E1 +2.380513000E3,3.066195183E1 +2.380756000E3,4.846258942E1 +2.381012000E3,4.617374426E1 +2.381278000E3,4.338282331E1 +2.381580000E3,2.990070560E1 +2.381878000E3,3.384826320E1 +2.382127000E3,4.352773294E1 +2.382476000E3,3.711143795E1 +2.382756000E3,4.818117865E1 +2.383001000E3,4.694356023E1 +2.383312000E3,4.713242320E1 +2.383556000E3,4.945634369E1 +2.383815000E3,3.710449888E1 +2.384109000E3,4.990714727E1 +2.384350000E3,5.101970483E1 +2.384663000E3,4.290224010E1 +2.384917000E3,3.958873166E1 +2.385203000E3,4.207919898E1 +2.385583000E3,3.937588823E1 +2.385864000E3,3.927490117E1 +2.386122000E3,3.708577985E1 +2.386378000E3,3.104425869E1 +2.386630000E3,2.579918418E1 +2.386935000E3,4.201717352E1 +2.387186000E3,4.469788103E1 +2.387445000E3,3.928301867E1 +2.387699000E3,4.425054811E1 +2.387999000E3,2.901032620E1 +2.388242000E3,2.431535493E1 +2.388542000E3,4.330806788E1 +2.388866000E3,4.587852948E1 +2.389138000E3,5.068663336E1 +2.389420000E3,5.151872270E1 +2.389764000E3,4.501157372E1 +2.390012000E3,4.508008781E1 +2.390288000E3,4.471818734E1 +2.390546000E3,4.453717168E1 +2.390828000E3,3.435610332E1 +2.391113000E3,3.644941891E1 +2.391398000E3,3.741409627E1 +2.391658000E3,4.311052254E1 +2.391963000E3,3.924877335E1 +2.392296000E3,3.956869731E1 +2.392537000E3,3.230149795E1 +2.392786000E3,2.941450360E1 +2.393103000E3,3.366208400E1 +2.393349000E3,2.633153711E1 +2.393653000E3,2.492589605E1 +2.393892000E3,3.518582310E1 +2.394201000E3,3.668564238E1 +2.394454000E3,3.528359554E1 +2.394744000E3,3.673717548E1 +2.395034000E3,2.851979476E1 +2.395378000E3,2.558396774E1 +2.395660000E3,3.919896752E1 +2.395930000E3,3.339597104E1 +2.396187000E3,3.351358057E1 +2.396431000E3,3.743420456E1 +2.396691000E3,4.220523227E1 +2.396991000E3,3.500233403E1 +2.397251000E3,3.475187142E1 +2.397513000E3,3.604068947E1 +2.397821000E3,4.628512725E1 +2.398126000E3,4.463943287E1 +2.398428000E3,4.311458163E1 +2.398781000E3,4.375329409E1 +2.399076000E3,3.749705009E1 +2.399316000E3,4.116349149E1 +2.399615000E3,4.694603167E1 +2.399852000E3,5.327851923E1 +2.400143000E3,5.028800274E1 +2.400380000E3,5.055607260E1 +2.400618000E3,4.184216649E1 +2.400901000E3,4.280576865E1 +2.401144000E3,4.285187037E1 +2.401437000E3,5.414729311E1 +2.401684000E3,5.760726428E1 +2.402102000E3,5.135939721E1 +2.402349000E3,5.519633184E1 +2.402608000E3,5.937895156E1 +2.402853000E3,5.722678447E1 +2.403146000E3,5.316891996E1 +2.403388000E3,5.231876976E1 +2.403684000E3,4.275047946E1 +2.403921000E3,4.497010821E1 +2.404216000E3,5.935375427E1 +2.404454000E3,5.736369919E1 +2.404707000E3,5.877823139E1 +2.404971000E3,6.138635894E1 +2.405219000E3,5.726046839E1 +2.405473000E3,5.213953550E1 +2.405771000E3,4.831408459E1 +2.406024000E3,5.195614478E1 +2.406276000E3,4.885485021E1 +2.406567000E3,4.806131720E1 +2.406866000E3,3.817379603E1 +2.407129000E3,3.496803230E1 +2.407401000E3,4.679161915E1 +2.407625000E3,4.456362030E1 +2.407878000E3,4.499112684E1 +2.408171000E3,4.695848411E1 +2.408491000E3,4.136053284E1 +2.408771000E3,3.435960184E1 +2.409033000E3,2.907775515E1 +2.409287000E3,3.179102298E1 +2.409536000E3,2.535492331E1 +2.409797000E3,2.893863695E1 +2.410015000E3,3.195695462E1 +2.410232000E3,2.883661354E1 +2.410481000E3,4.380812340E1 +2.410735000E3,5.435187737E1 +2.411017000E3,4.390478627E1 +2.411330000E3,4.136550501E1 +2.411572000E3,6.231552653E1 +2.411823000E3,4.988484474E1 +2.412072000E3,4.569499772E1 +2.412339000E3,5.207639469E1 +2.412605000E3,5.314724412E1 +2.412842000E3,5.014855129E1 +2.413111000E3,4.925815950E1 +2.413332000E3,5.545199009E1 +2.413608000E3,4.910878211E1 +2.413873000E3,5.481296501E1 +2.414229000E3,4.620355557E1 +2.414532000E3,4.757632406E1 +2.414792000E3,4.414835702E1 +2.415033000E3,4.178334533E1 +2.415296000E3,3.571558610E1 +2.415577000E3,3.622280285E1 +2.415839000E3,4.187963398E1 +2.416103000E3,4.120303067E1 +2.416426000E3,5.043875316E1 +2.416696000E3,4.738536839E1 +2.417006000E3,4.790698669E1 +2.417250000E3,4.717323409E1 +2.417613000E3,4.889624394E1 +2.417923000E3,4.615999302E1 +2.418209000E3,4.554232436E1 +2.418487000E3,4.963147342E1 +2.418748000E3,4.540077281E1 +2.419058000E3,4.402622058E1 +2.419355000E3,3.991430025E1 +2.419631000E3,5.699106589E1 +2.419880000E3,4.542610605E1 +2.420140000E3,5.871400849E1 +2.420387000E3,5.593691155E1 +2.420634000E3,5.642590944E1 +2.420987000E3,4.942882304E1 +2.421235000E3,5.122637091E1 +2.421504000E3,5.506353313E1 +2.421808000E3,4.974630362E1 +2.422098000E3,4.922446567E1 +2.422401000E3,4.711891494E1 +2.422653000E3,4.935851062E1 +2.422946000E3,5.223840607E1 +2.423180000E3,5.181747333E1 +2.423433000E3,5.106095739E1 +2.423699000E3,4.283067128E1 +2.424023000E3,4.620110870E1 +2.424283000E3,4.813646184E1 +2.424556000E3,4.673905704E1 +2.424833000E3,5.139038068E1 +2.425085000E3,4.187355918E1 +2.425330000E3,4.200690239E1 +2.425641000E3,4.094986905E1 +2.425891000E3,3.869951887E1 +2.426156000E3,4.295178440E1 +2.426411000E3,4.445235603E1 +2.426673000E3,4.180705342E1 +2.426915000E3,4.159918394E1 +2.427275000E3,5.193727105E1 +2.427528000E3,4.985744468E1 +2.427773000E3,5.143594155E1 +2.428021000E3,5.687627643E1 +2.428258000E3,4.984177159E1 +2.428554000E3,4.104898524E1 +2.428794000E3,3.740238657E1 +2.429102000E3,4.424577609E1 +2.429345000E3,5.022623751E1 +2.429627000E3,5.346928374E1 +2.429864000E3,4.448852620E1 +2.430156000E3,3.611387858E1 +2.430475000E3,3.592739777E1 +2.430726000E3,3.269867125E1 +2.431039000E3,4.089980433E1 +2.431331000E3,3.752068977E1 +2.431567000E3,3.972155082E1 +2.431870000E3,4.098289208E1 +2.432107000E3,4.068605974E1 +2.432406000E3,3.978950334E1 +2.432643000E3,3.435438837E1 +2.432933000E3,3.806187937E1 +2.433169000E3,3.613809925E1 +2.433407000E3,5.573542624E1 +2.433734000E3,4.812688919E1 +2.434035000E3,5.332611421E1 +2.434315000E3,5.453475878E1 +2.434557000E3,5.156731049E1 +2.434849000E3,4.452924889E1 +2.435086000E3,4.091217005E1 +2.435380000E3,3.495963916E1 +2.435633000E3,3.994418328E1 +2.435904000E3,5.345258512E1 +2.436200000E3,4.573029424E1 +2.436434000E3,4.666848361E1 +2.436802000E3,4.148612785E1 +2.437044000E3,3.785277445E1 +2.437301000E3,3.823545546E1 +2.437549000E3,3.883632471E1 +2.437839000E3,4.756553033E1 +2.438077000E3,4.282797221E1 +2.438369000E3,5.291874167E1 +2.438606000E3,5.394671897E1 +2.438862000E3,5.490926284E1 +2.439159000E3,5.465277565E1 +2.439395000E3,5.245345229E1 +2.439637000E3,4.823915254E1 +2.440022000E3,5.658050668E1 +2.440281000E3,5.255468157E1 +2.440546000E3,4.365897331E1 +2.440828000E3,4.187636724E1 +2.441125000E3,4.916172461E1 +2.441365000E3,5.038635874E1 +2.441645000E3,5.238005511E1 +2.441868000E3,4.979548238E1 +2.442114000E3,5.164563876E1 +2.442410000E3,4.795862612E1 +2.442694000E3,4.406311297E1 +2.442980000E3,4.461066687E1 +2.443265000E3,3.990213588E1 +2.443525000E3,4.270339676E1 +2.443815000E3,4.671533321E1 +2.444064000E3,4.922681237E1 +2.444311000E3,5.115751882E1 +2.444605000E3,4.659279655E1 +2.444851000E3,4.805254743E1 +2.445152000E3,4.646584218E1 +2.445447000E3,3.924248597E1 +2.445698000E3,3.657018775E1 +2.445976000E3,3.978585816E1 +2.446317000E3,5.134473527E1 +2.446569000E3,4.872028256E1 +2.446851000E3,4.793203365E1 +2.447088000E3,4.917648823E1 +2.447345000E3,4.514648035E1 +2.447599000E3,4.827609085E1 +2.447864000E3,5.009329877E1 +2.448138000E3,4.858127151E1 +2.448430000E3,4.885678900E1 +2.448726000E3,4.038666943E1 +2.448956000E3,3.788824065E1 +2.449214000E3,4.872306097E1 +2.449516000E3,5.112419798E1 +2.449767000E3,4.394357347E1 +2.450028000E3,5.187358067E1 +2.450298000E3,4.764520743E1 +2.450575000E3,5.323515688E1 +2.450844000E3,4.730661272E1 +2.451150000E3,5.022143967E1 +2.451400000E3,4.244080150E1 +2.451697000E3,4.540622562E1 +2.452002000E3,4.987171470E1 +2.452273000E3,4.928771096E1 +2.452519000E3,4.415614577E1 +2.452847000E3,4.529816891E1 +2.453138000E3,3.130480949E1 +2.453407000E3,3.727195618E1 +2.453707000E3,4.218798188E1 +2.453975000E3,3.196426842E1 +2.454240000E3,2.986758668E1 +2.454534000E3,4.365366219E1 +2.454795000E3,4.363233606E1 +2.455054000E3,4.576258560E1 +2.455297000E3,4.600510844E1 +2.455546000E3,5.143992334E1 +2.455816000E3,4.451792491E1 +2.456172000E3,3.834658463E1 +2.456438000E3,4.961865906E1 +2.456716000E3,4.301133302E1 +2.457025000E3,5.185950840E1 +2.457284000E3,4.578127088E1 +2.457582000E3,4.860789001E1 +2.457857000E3,4.548301241E1 +2.458087000E3,5.726595471E1 +2.458343000E3,4.581143143E1 +2.458590000E3,4.593076535E1 +2.458898000E3,4.646845677E1 +2.459143000E3,4.385664195E1 +2.459499000E3,3.921291428E1 +2.459756000E3,4.336490005E1 +2.460079000E3,5.059416731E1 +2.460323000E3,5.383728406E1 +2.460609000E3,4.336002656E1 +2.460894000E3,3.810358455E1 +2.461148000E3,4.341384577E1 +2.461406000E3,4.240002850E1 +2.461668000E3,4.220171306E1 +2.461957000E3,4.165441002E1 +2.462218000E3,4.110791112E1 +2.462543000E3,3.718059239E1 +2.462873000E3,4.490190793E1 +2.463162000E3,4.449127269E1 +2.463461000E3,5.110192526E1 +2.463709000E3,4.670759724E1 +2.464024000E3,4.554197086E1 +2.464345000E3,4.295638115E1 +2.464598000E3,4.260186095E1 +2.464844000E3,3.838281454E1 +2.465094000E3,4.864552318E1 +2.465348000E3,4.722694913E1 +2.465597000E3,5.723123112E1 +2.465970000E3,5.678247819E1 +2.466226000E3,5.304857482E1 +2.466490000E3,5.799491543E1 +2.466745000E3,5.566332539E1 +2.467000000E3,5.532803606E1 +2.467301000E3,5.480406224E1 +2.467518000E3,5.281426808E1 +2.467773000E3,5.319750336E1 +2.468030000E3,4.504180471E1 +2.468309000E3,4.011552860E1 +2.468536000E3,3.286668959E1 +2.468782000E3,5.187437917E1 +2.469159000E3,5.342027818E1 +2.469405000E3,4.655027014E1 +2.469685000E3,4.875434900E1 +2.469968000E3,4.400777727E1 +2.470228000E3,4.944370484E1 +2.470524000E3,4.819898526E1 +2.470826000E3,4.906267157E1 +2.471101000E3,4.559683511E1 +2.471407000E3,5.066052597E1 +2.471662000E3,5.052511938E1 +2.471933000E3,4.854316053E1 +2.472243000E3,4.720397127E1 +2.472513000E3,4.539713693E1 +2.472765000E3,4.504800702E1 +2.473077000E3,4.756996091E1 +2.473381000E3,4.502772911E1 +2.473668000E3,4.844141365E1 +2.473909000E3,4.718772198E1 +2.474176000E3,5.036014826E1 +2.474415000E3,4.734822430E1 +2.474659000E3,4.506554867E1 +2.474941000E3,4.590585801E1 +2.475227000E3,4.808550728E1 +2.475549000E3,4.744751902E1 +2.475816000E3,5.139502060E1 +2.476110000E3,4.565542501E1 +2.476367000E3,4.502651441E1 +2.476614000E3,4.529198411E1 +2.476876000E3,4.841642572E1 +2.477138000E3,4.904966766E1 +2.477430000E3,5.061185879E1 +2.477703000E3,4.805167318E1 +2.477973000E3,4.840268940E1 +2.478233000E3,4.609690512E1 +2.478491000E3,5.080806253E1 +2.478854000E3,4.929079330E1 +2.479112000E3,4.887431247E1 +2.479382000E3,4.582116343E1 +2.479677000E3,4.614295426E1 +2.479939000E3,5.004731017E1 +2.480247000E3,5.118895049E1 +2.480496000E3,4.750144805E1 +2.480785000E3,4.691637905E1 +2.481084000E3,4.575243018E1 +2.481328000E3,4.498034363E1 +2.481622000E3,5.049144453E1 +2.481951000E3,4.811617152E1 +2.482214000E3,4.600387593E1 +2.482494000E3,5.163944801E1 +2.482753000E3,4.933311419E1 +2.482991000E3,4.946534766E1 +2.483244000E3,4.580757204E1 +2.483487000E3,4.797573247E1 +2.483734000E3,4.560844100E1 +2.483990000E3,5.039329574E1 +2.484313000E3,5.052905321E1 +2.484577000E3,5.131938081E1 +2.484833000E3,4.901245069E1 +2.485113000E3,5.233648083E1 +2.485461000E3,5.215489758E1 +2.485749000E3,5.451606287E1 +2.486018000E3,5.043201098E1 +2.486334000E3,5.091085093E1 +2.486650000E3,4.972266732E1 +2.486916000E3,4.846864702E1 +2.487167000E3,4.843730663E1 +2.487412000E3,5.285205631E1 +2.487677000E3,5.695937588E1 +2.487965000E3,5.067248408E1 +2.488216000E3,4.955689254E1 +2.488580000E3,4.789771891E1 +2.488828000E3,4.640186686E1 +2.489150000E3,4.956289338E1 +2.489428000E3,4.916705799E1 +2.489718000E3,4.250319869E1 +2.489959000E3,4.211788948E1 +2.490259000E3,4.711467977E1 +2.490508000E3,5.336087879E1 +2.490805000E3,5.163346506E1 +2.491066000E3,5.303328317E1 +2.491377000E3,5.018594076E1 +2.491684000E3,4.569780009E1 +2.492029000E3,4.677168871E1 +2.492273000E3,4.586755987E1 +2.492522000E3,5.020047651E1 +2.492768000E3,4.585538278E1 +2.493006000E3,5.027464230E1 +2.493315000E3,4.719632652E1 +2.493608000E3,4.892998103E1 +2.493874000E3,4.659859577E1 +2.494131000E3,4.485377967E1 +2.494387000E3,4.661063763E1 +2.494635000E3,4.873112034E1 +2.494904000E3,5.011233058E1 +2.495259000E3,4.996207620E1 +2.495523000E3,5.026371938E1 +2.495789000E3,4.897334151E1 +2.496086000E3,4.919412247E1 +2.496330000E3,4.448238049E1 +2.496598000E3,5.779881243E1 +2.496845000E3,5.068443192E1 +2.497079000E3,5.452206946E1 +2.497328000E3,6.091811093E1 +2.497574000E3,5.545025588E1 +2.497819000E3,5.118451852E1 +2.498124000E3,5.647063434E1 +2.498436000E3,5.942897676E1 +2.498681000E3,6.063927987E1 +2.498932000E3,5.256584857E1 +2.499203000E3,5.942844343E1 +2.499465000E3,5.268198933E1 +2.499726000E3,5.561310022E1 +2.499989000E3,5.551348586E1 +2.500270000E3,5.728700965E1 +2.500550000E3,5.848024533E1 +2.500856000E3,5.545551244E1 +2.501156000E3,7.074712648E1 +2.501405000E3,6.649397556E1 +2.501727000E3,6.577106108E1 +2.501964000E3,5.791155905E1 +2.502223000E3,6.571272960E1 +2.502476000E3,5.223691777E1 +2.502731000E3,5.099379006E1 +2.502989000E3,4.996024440E1 +2.503265000E3,4.587573023E1 +2.503515000E3,6.660646739E1 +2.503792000E3,5.426812996E1 +2.504090000E3,4.221263073E1 +2.504348000E3,3.961359220E1 +2.504607000E3,3.317448387E1 +2.504957000E3,2.765634596E1 +2.505202000E3,5.260508289E1 +2.505444000E3,4.970766119E1 +2.505723000E3,5.961421356E1 +2.506010000E3,5.761735716E1 +2.506316000E3,4.386011183E1 +2.506629000E3,3.297646158E1 +2.506928000E3,3.461351567E1 +2.507171000E3,3.422494413E1 +2.507415000E3,3.898815557E1 +2.507661000E3,3.916714623E1 +2.507958000E3,4.409544564E1 +2.508199000E3,4.040812578E1 +2.508495000E3,4.100804729E1 +2.508767000E3,4.155083379E1 +2.509073000E3,4.256659126E1 +2.509346000E3,4.665111645E1 +2.509615000E3,4.785704834E1 +2.509926000E3,4.957995318E1 +2.510246000E3,5.281308228E1 +2.510533000E3,5.716195403E1 +2.510847000E3,5.384222007E1 +2.511087000E3,4.682850643E1 +2.511483000E3,5.585229854E1 +2.511769000E3,5.797880255E1 +2.512061000E3,5.008051045E1 +2.512305000E3,4.616221083E1 +2.512545000E3,5.837834308E1 +2.512782000E3,4.588894556E1 +2.513082000E3,5.827978204E1 +2.513321000E3,5.321307958E1 +2.513625000E3,5.419914666E1 +2.513860000E3,4.249936315E1 +2.514160000E3,5.093700871E1 +2.514505000E3,4.733309734E1 +2.514807000E3,5.739188753E1 +2.515049000E3,5.684870925E1 +2.515326000E3,5.429714525E1 +2.515551000E3,5.304528611E1 +2.515847000E3,6.048302750E1 +2.516097000E3,5.298092655E1 +2.516397000E3,5.664346713E1 +2.516634000E3,5.062362510E1 +2.516910000E3,5.059011404E1 +2.517165000E3,5.074931344E1 +2.517424000E3,5.193937267E1 +2.517672000E3,4.773080825E1 +2.517933000E3,4.886471101E1 +2.518191000E3,4.258084657E1 +2.518440000E3,4.144243799E1 +2.518697000E3,3.266068365E1 +2.518962000E3,3.662092465E1 +2.519211000E3,4.002326553E1 +2.519469000E3,5.193824268E1 +2.519821000E3,5.548381163E1 +2.520087000E3,5.245445808E1 +2.520336000E3,4.447536752E1 +2.520718000E3,5.931091731E1 +2.521010000E3,5.514928156E1 +2.521305000E3,5.194242569E1 +2.521541000E3,5.632439964E1 +2.521781000E3,4.768714929E1 +2.522074000E3,3.967116686E1 +2.522306000E3,3.457523914E1 +2.522554000E3,3.414939493E1 +2.522808000E3,3.034285017E1 +2.523103000E3,3.725639399E1 +2.523347000E3,5.824523011E1 +2.523645000E3,5.697741808E1 +2.524002000E3,5.995361389E1 +2.524244000E3,5.516819042E1 +2.524491000E3,5.520201782E1 +2.524765000E3,4.576677797E1 +2.524988000E3,5.785527848E1 +2.525299000E3,5.093237528E1 +2.525544000E3,4.090627494E1 +2.525822000E3,3.111750175E1 +2.526056000E3,2.764971736E1 +2.526311000E3,2.852524033E1 +2.526617000E3,3.508264660E1 +2.526905000E3,5.067917717E1 +2.527241000E3,4.646824007E1 +2.527487000E3,3.686495987E1 +2.527738000E3,3.822220480E1 +2.527988000E3,3.764348220E1 +2.528232000E3,4.278450517E1 +2.528563000E3,4.881983602E1 +2.528870000E3,4.048435148E1 +2.529125000E3,4.047282835E1 +2.529398000E3,4.602715630E1 +2.529632000E3,4.358719476E1 +2.529925000E3,4.185499728E1 +2.530224000E3,4.428160693E1 +2.530451000E3,5.370094630E1 +2.530771000E3,4.662369716E1 +2.531057000E3,4.486368653E1 +2.531322000E3,3.985753269E1 +2.531579000E3,3.868983993E1 +2.531842000E3,4.397673982E1 +2.532129000E3,4.465178920E1 +2.532379000E3,4.071629694E1 +2.532681000E3,3.700154265E1 +2.532925000E3,3.709745900E1 +2.533169000E3,3.856350220E1 +2.533454000E3,3.780017804E1 +2.533739000E3,4.079153270E1 +2.534053000E3,3.467337947E1 +2.534304000E3,3.872357849E1 +2.534571000E3,4.188092371E1 +2.534878000E3,4.226520735E1 +2.535180000E3,4.433351029E1 +2.535433000E3,4.196124368E1 +2.535679000E3,4.159710638E1 +2.535934000E3,4.131920574E1 +2.536230000E3,4.013333591E1 +2.536496000E3,3.861252617E1 +2.536812000E3,3.205810696E1 +2.537071000E3,3.900017908E1 +2.537321000E3,3.720890888E1 +2.537589000E3,3.571752088E1 +2.537899000E3,3.466875388E1 +2.538158000E3,3.490809444E1 +2.538414000E3,2.846246396E1 +2.538721000E3,3.471466025E1 +2.539000000E3,3.262267006E1 +2.539250000E3,2.900340615E1 +2.539526000E3,2.962734770E1 +2.539843000E3,4.051335289E1 +2.540219000E3,3.732414883E1 +2.540478000E3,3.212776280E1 +2.540731000E3,3.980002135E1 +2.541002000E3,4.402529692E1 +2.541305000E3,3.531142487E1 +2.541570000E3,4.157255463E1 +2.541892000E3,4.121686373E1 +2.542138000E3,3.512055425E1 +2.542435000E3,3.058422839E1 +2.542704000E3,3.860796470E1 +2.542951000E3,4.158955283E1 +2.543254000E3,4.126835549E1 +2.543598000E3,4.557459954E1 +2.543842000E3,4.195620726E1 +2.544088000E3,4.759905541E1 +2.544347000E3,4.089593512E1 +2.544592000E3,4.224934090E1 +2.544840000E3,3.548720999E1 +2.545141000E3,4.189266277E1 +2.545422000E3,4.058854606E1 +2.545652000E3,3.761551365E1 +2.545897000E3,3.643024250E1 +2.546173000E3,3.544845567E1 +2.546439000E3,3.816851754E1 +2.546779000E3,3.801212128E1 +2.547110000E3,3.288266257E1 +2.547379000E3,4.063952307E1 +2.547641000E3,4.765684387E1 +2.547893000E3,4.402640436E1 +2.548143000E3,4.172886183E1 +2.548441000E3,3.808222191E1 +2.548685000E3,3.637035664E1 +2.548962000E3,3.879815953E1 +2.549230000E3,5.433785228E1 +2.549540000E3,5.428002325E1 +2.549852000E3,5.430864003E1 +2.550121000E3,5.376325395E1 +2.550389000E3,5.250586376E1 +2.550641000E3,5.329413218E1 +2.550946000E3,3.817927317E1 +2.551218000E3,3.779289824E1 +2.551493000E3,4.904361964E1 +2.551759000E3,5.500168111E1 +2.552006000E3,4.745774118E1 +2.552261000E3,5.304049624E1 +2.552515000E3,4.933664563E1 +2.552779000E3,3.482983031E1 +2.553043000E3,3.914561037E1 +2.553378000E3,3.318943686E1 +2.553659000E3,2.674748735E1 +2.553917000E3,2.500565902E1 +2.554234000E3,3.331261434E1 +2.554489000E3,3.380079275E1 +2.554753000E3,3.632095841E1 +2.554996000E3,3.606888467E1 +2.555239000E3,4.759559903E1 +2.555541000E3,5.588542149E1 +2.555837000E3,5.768171500E1 +2.556076000E3,5.837962370E1 +2.556358000E3,5.761486260E1 +2.556647000E3,5.408185929E1 +2.556914000E3,5.624815374E1 +2.557248000E3,4.727853091E1 +2.557554000E3,3.999550071E1 +2.557822000E3,4.090986684E1 +2.558062000E3,3.411171601E1 +2.558302000E3,3.042998918E1 +2.558550000E3,3.392526215E1 +2.558807000E3,3.801243567E1 +2.559082000E3,4.390440101E1 +2.559357000E3,4.215163378E1 +2.559616000E3,4.616573562E1 +2.559972000E3,4.170066459E1 +2.560245000E3,2.972551911E1 +2.560517000E3,3.987643023E1 +2.560765000E3,4.046237199E1 +2.561011000E3,4.268708813E1 +2.561258000E3,4.450541644E1 +2.561531000E3,4.611922799E1 +2.561775000E3,4.492719317E1 +2.562027000E3,4.345851098E1 +2.562302000E3,5.022295857E1 +2.562533000E3,4.986016935E1 +2.562786000E3,3.932672790E1 +2.563211000E3,3.777119812E1 +2.563479000E3,4.577537823E1 +2.563731000E3,5.443473776E1 +2.563977000E3,5.947837126E1 +2.564252000E3,5.014881480E1 +2.564539000E3,4.884415531E1 +2.564781000E3,4.451698294E1 +2.565088000E3,3.693106642E1 +2.565361000E3,3.096881298E1 +2.565624000E3,2.635486448E1 +2.565885000E3,2.734213385E1 +2.566246000E3,3.979362654E1 +2.566493000E3,3.382738554E1 +2.566797000E3,3.469438245E1 +2.567097000E3,4.097528595E1 +2.567346000E3,4.285297734E1 +2.567644000E3,4.930003444E1 +2.567891000E3,4.540271843E1 +2.568170000E3,3.109775861E1 +2.568407000E3,2.738661195E1 +2.568701000E3,3.024785153E1 +2.568952000E3,3.235217301E1 +2.569220000E3,3.196941264E1 +2.569567000E3,4.299833718E1 +2.569862000E3,4.496000509E1 +2.570178000E3,4.562225815E1 +2.570442000E3,4.437451260E1 +2.570707000E3,3.949227756E1 +2.570950000E3,2.951847370E1 +2.571202000E3,3.800151296E1 +2.571472000E3,4.650517590E1 +2.571732000E3,3.967561664E1 +2.571975000E3,3.149456620E1 +2.572246000E3,5.234083710E1 +2.572527000E3,4.544839619E1 +2.572859000E3,4.436174777E1 +2.573168000E3,4.369290756E1 +2.573429000E3,4.420543128E1 +2.573728000E3,4.389854646E1 +2.573968000E3,4.580346210E1 +2.574268000E3,4.881141748E1 +2.574509000E3,4.708023256E1 +2.574802000E3,3.388696242E1 +2.575045000E3,2.922489212E1 +2.575339000E3,3.941924125E1 +2.575597000E3,4.733040375E1 +2.575906000E3,4.790376430E1 +2.576245000E3,4.328559785E1 +2.576517000E3,4.720947277E1 +2.576791000E3,4.076260480E1 +2.577092000E3,3.249905806E1 +2.577324000E3,3.886850876E1 +2.577566000E3,3.577483806E1 +2.577814000E3,4.105002685E1 +2.578080000E3,3.881208350E1 +2.578375000E3,5.720708534E1 +2.578624000E3,4.933084675E1 +2.578932000E3,5.989261963E1 +2.579254000E3,5.193127116E1 +2.579506000E3,4.843920497E1 +2.579747000E3,4.570821188E1 +2.580001000E3,4.446748829E1 +2.580244000E3,4.006228376E1 +2.580497000E3,2.933332862E1 +2.580745000E3,4.525678604E1 +2.580989000E3,4.717489692E1 +2.581288000E3,5.239736286E1 +2.581587000E3,5.268105849E1 +2.581851000E3,4.960616241E1 +2.582112000E3,4.637217789E1 +2.582361000E3,4.676379781E1 +2.582583000E3,4.083594902E1 +2.582903000E3,2.696140701E1 +2.583176000E3,2.668057590E1 +2.583429000E3,2.900886287E1 +2.583692000E3,2.732690452E1 +2.583951000E3,3.475308428E1 +2.584205000E3,4.782860484E1 +2.584480000E3,4.928978168E1 +2.584742000E3,3.697304160E1 +2.585017000E3,3.390321432E1 +2.585248000E3,4.818778278E1 +2.585552000E3,5.175969441E1 +2.585851000E3,4.752724055E1 +2.586108000E3,5.047732228E1 +2.586408000E3,5.003267867E1 +2.586651000E3,4.995698879E1 +2.586934000E3,4.985539117E1 +2.587202000E3,4.558719065E1 +2.587455000E3,4.973387236E1 +2.587702000E3,5.190737686E1 +2.587964000E3,4.955516560E1 +2.588211000E3,5.039526507E1 +2.588461000E3,3.897042435E1 +2.588748000E3,2.919124678E1 +2.589063000E3,3.061867322E1 +2.589398000E3,4.010104895E1 +2.589690000E3,3.640442215E1 +2.589998000E3,4.479952304E1 +2.590261000E3,4.757967128E1 +2.590558000E3,4.812333533E1 +2.590802000E3,4.603482331E1 +2.591083000E3,2.960043464E1 +2.591326000E3,3.684354753E1 +2.591591000E3,4.359182452E1 +2.591849000E3,4.788602237E1 +2.592228000E3,4.468031543E1 +2.592527000E3,3.894688899E1 +2.592778000E3,2.800490026E1 +2.593035000E3,4.310888325E1 +2.593333000E3,4.628339380E1 +2.593602000E3,4.440124594E1 +2.593883000E3,4.123163794E1 +2.594160000E3,3.127645239E1 +2.594429000E3,3.071812965E1 +2.594749000E3,4.618618296E1 +2.595070000E3,5.248181749E1 +2.595312000E3,4.786265879E1 +2.595668000E3,3.990233287E1 +2.595973000E3,4.173583037E1 +2.596256000E3,3.709278400E1 +2.596497000E3,3.229385861E1 +2.596813000E3,4.380573021E1 +2.597084000E3,4.783628282E1 +2.597325000E3,5.024593568E1 +2.597578000E3,5.102379549E1 +2.597828000E3,4.760481411E1 +2.598089000E3,3.822780835E1 +2.598387000E3,3.417342767E1 +2.598736000E3,2.863579065E1 +2.598981000E3,2.886228233E1 +2.599228000E3,2.855965247E1 +2.599493000E3,3.083396855E1 +2.599764000E3,3.581659374E1 +2.600032000E3,4.317647632E1 +2.600330000E3,4.853625621E1 +2.600623000E3,5.102467342E1 +2.600867000E3,4.877836926E1 +2.601112000E3,4.705612686E1 +2.601365000E3,4.889085742E1 +2.601612000E3,4.654488136E1 +2.601956000E3,4.055024190E1 +2.602220000E3,3.990851266E1 +2.602547000E3,3.648352551E1 +2.602794000E3,5.324982942E1 +2.603078000E3,5.268965363E1 +2.603338000E3,4.851189142E1 +2.603637000E3,5.135006473E1 +2.603925000E3,4.939301404E1 +2.604238000E3,5.337101389E1 +2.604488000E3,5.022765286E1 +2.604734000E3,5.253186666E1 +2.605064000E3,4.127453431E1 +2.605321000E3,4.114070867E1 +2.605572000E3,4.042282231E1 +2.605820000E3,4.255774466E1 +2.606073000E3,4.746726668E1 +2.606319000E3,4.761848671E1 +2.606565000E3,4.983628061E1 +2.606849000E3,3.046517787E1 +2.607082000E3,3.832211131E1 +2.607339000E3,4.741131966E1 +2.607609000E3,4.453335589E1 +2.607874000E3,3.545592153E1 +2.608197000E3,4.672891376E1 +2.608451000E3,4.755881287E1 +2.608706000E3,4.827652641E1 +2.608952000E3,4.727153141E1 +2.609226000E3,4.731450942E1 +2.609537000E3,3.981385402E1 +2.609784000E3,3.194698732E1 +2.610041000E3,3.314164027E1 +2.610283000E3,2.819786732E1 +2.610546000E3,2.664547785E1 +2.610857000E3,2.913544778E1 +2.611125000E3,3.961651759E1 +2.611432000E3,3.852777426E1 +2.611666000E3,3.205673146E1 +2.611951000E3,4.233182010E1 +2.612229000E3,3.378509898E1 +2.612454000E3,4.071755552E1 +2.612730000E3,5.018278065E1 +2.613050000E3,4.100034395E1 +2.613359000E3,3.892108016E1 +2.613628000E3,5.091321799E1 +2.613871000E3,4.336916838E1 +2.614108000E3,3.960788811E1 +2.614408000E3,3.948227358E1 +2.614722000E3,3.631863435E1 +2.614975000E3,4.057042340E1 +2.615256000E3,4.414132009E1 +2.615486000E3,4.180934435E1 +2.615750000E3,4.153999936E1 +2.615997000E3,3.521796466E1 +2.616260000E3,5.443854687E1 +2.616548000E3,5.408118563E1 +2.616842000E3,4.951275264E1 +2.617090000E3,5.182722031E1 +2.617344000E3,4.327522742E1 +2.617643000E3,5.375122422E1 +2.617975000E3,5.216635190E1 +2.618233000E3,4.126006713E1 +2.618497000E3,4.980260599E1 +2.618804000E3,4.655838197E1 +2.619044000E3,4.977945459E1 +2.619327000E3,4.875559075E1 +2.619562000E3,4.983226039E1 +2.619834000E3,4.741689273E1 +2.620075000E3,4.923498746E1 +2.620352000E3,4.923432072E1 +2.620664000E3,4.040876723E1 +2.620916000E3,3.889825840E1 +2.621142000E3,5.245081579E1 +2.621448000E3,4.684934794E1 +2.621687000E3,4.583906640E1 +2.621992000E3,4.366517623E1 +2.622230000E3,3.373873872E1 +2.622475000E3,3.701694694E1 +2.622750000E3,3.544967426E1 +2.623008000E3,3.363206222E1 +2.623285000E3,4.009589135E1 +2.623562000E3,4.408709562E1 +2.623825000E3,4.800133533E1 +2.624131000E3,4.855432282E1 +2.624414000E3,4.808187444E1 +2.624671000E3,5.252566194E1 +2.624932000E3,4.890333861E1 +2.625183000E3,4.370428781E1 +2.625430000E3,3.668118979E1 +2.625747000E3,4.353955331E1 +2.626003000E3,4.224026412E1 +2.626267000E3,4.311785789E1 +2.626514000E3,3.517806855E1 +2.626763000E3,3.981966751E1 +2.627025000E3,3.444602265E1 +2.627334000E3,3.341390757E1 +2.627660000E3,3.926570124E1 +2.627920000E3,4.341089288E1 +2.628216000E3,4.081134870E1 +2.628467000E3,3.912400300E1 +2.628730000E3,3.657553946E1 +2.629000000E3,3.072838888E1 +2.629284000E3,2.929703023E1 +2.629549000E3,3.378014550E1 +2.629844000E3,4.760306323E1 +2.630080000E3,4.024322042E1 +2.630373000E3,3.235913140E1 +2.630611000E3,3.920509877E1 +2.630919000E3,5.103841717E1 +2.631222000E3,5.813980805E1 +2.631514000E3,5.190256812E1 +2.631753000E3,4.653294376E1 +2.632054000E3,4.782140153E1 +2.632295000E3,4.977458693E1 +2.632592000E3,5.371197571E1 +2.632828000E3,5.056512655E1 +2.633140000E3,5.325824914E1 +2.633383000E3,4.973751947E1 +2.633632000E3,4.853342473E1 +2.633950000E3,3.905011010E1 +2.634254000E3,3.751700759E1 +2.634549000E3,5.292771607E1 +2.634786000E3,5.557450981E1 +2.635082000E3,4.974692283E1 +2.635319000E3,5.393938197E1 +2.635611000E3,4.675981835E1 +2.635848000E3,4.299614910E1 +2.636145000E3,3.756646750E1 +2.636395000E3,3.824353200E1 +2.636648000E3,3.045317917E1 +2.636942000E3,3.257931849E1 +2.637299000E3,3.010616025E1 +2.637599000E3,4.995329379E1 +2.637834000E3,4.824584689E1 +2.638071000E3,5.059212149E1 +2.638363000E3,5.330633429E1 +2.638612000E3,5.343612136E1 +2.638897000E3,4.755550111E1 +2.639122000E3,4.119881812E1 +2.639362000E3,3.902726568E1 +2.639659000E3,4.451944661E1 +2.639896000E3,4.587471035E1 +2.640164000E3,4.115502802E1 +2.640409000E3,4.505311495E1 +2.640656000E3,4.913968689E1 +2.640951000E3,5.110923180E1 +2.641208000E3,4.281604120E1 +2.641505000E3,4.825854961E1 +2.641748000E3,4.861588211E1 +2.642059000E3,4.450542116E1 +2.642304000E3,4.274821036E1 +2.642556000E3,3.503446158E1 +2.642862000E3,4.080900103E1 +2.643164000E3,4.152079562E1 +2.643527000E3,3.935881933E1 +2.643833000E3,3.760570593E1 +2.644082000E3,3.959144469E1 +2.644327000E3,4.007918652E1 +2.644573000E3,4.288120719E1 +2.644814000E3,4.793099478E1 +2.645114000E3,4.424069452E1 +2.645391000E3,4.078427844E1 +2.645635000E3,3.902795236E1 +2.645871000E3,4.393773718E1 +2.646111000E3,4.085627764E1 +2.646355000E3,4.393316509E1 +2.646690000E3,4.428892908E1 +2.646958000E3,4.601464396E1 +2.647235000E3,4.300358696E1 +2.647474000E3,4.083829680E1 +2.647758000E3,5.406220971E1 +2.648003000E3,4.253716581E1 +2.648273000E3,4.506680000E1 +2.648514000E3,3.500046728E1 +2.648758000E3,3.537281462E1 +2.649004000E3,5.013819891E1 +2.649251000E3,5.388943830E1 +2.649556000E3,5.656370208E1 +2.649891000E3,5.696480404E1 +2.650216000E3,4.675400561E1 +2.650515000E3,4.179549274E1 +2.650777000E3,4.536624285E1 +2.651084000E3,4.297370528E1 +2.651336000E3,4.376785410E1 +2.651635000E3,3.354560746E1 +2.651881000E3,2.537939319E1 +2.652180000E3,3.168783420E1 +2.652481000E3,4.898553010E1 +2.652737000E3,5.438993966E1 +2.652992000E3,4.963834041E1 +2.653252000E3,4.227369117E1 +2.653502000E3,4.301436765E1 +2.653812000E3,3.649724292E1 +2.654061000E3,4.086211966E1 +2.654320000E3,3.223281741E1 +2.654605000E3,2.807672508E1 +2.654836000E3,2.764825285E1 +2.655100000E3,4.598866982E1 +2.655350000E3,4.383741939E1 +2.655590000E3,4.883555528E1 +2.655837000E3,4.815765811E1 +2.656131000E3,5.047261312E1 +2.656369000E3,5.124829846E1 +2.656626000E3,3.956134092E1 +2.656925000E3,3.503286763E1 +2.657200000E3,3.224209198E1 +2.657447000E3,4.294806319E1 +2.657761000E3,4.898454413E1 +2.658011000E3,5.320780356E1 +2.658286000E3,5.345186604E1 +2.658542000E3,4.849291145E1 +2.658789000E3,5.098648363E1 +2.659034000E3,4.892931203E1 +2.659289000E3,4.580698225E1 +2.659530000E3,3.709695762E1 +2.659834000E3,3.457925551E1 +2.660081000E3,3.855219813E1 +2.660383000E3,3.845534481E1 +2.660628000E3,4.619372518E1 +2.660921000E3,4.848307744E1 +2.661167000E3,4.790880967E1 +2.661464000E3,4.667520128E1 +2.661710000E3,4.098851532E1 +2.662006000E3,4.035468673E1 +2.662245000E3,3.753010710E1 +2.662592000E3,4.792080660E1 +2.662862000E3,4.709835917E1 +2.663123000E3,3.501409506E1 +2.663374000E3,3.240664296E1 +2.663631000E3,4.326696615E1 +2.663874000E3,4.411177933E1 +2.664133000E3,3.936378145E1 +2.664382000E3,3.443614227E1 +2.664648000E3,3.761654306E1 +2.664944000E3,5.164457484E1 +2.665198000E3,2.810669920E1 +2.665512000E3,2.931307063E1 +2.665876000E3,3.108643425E1 +2.666131000E3,3.278101889E1 +2.666439000E3,4.277860150E1 +2.666693000E3,4.213131936E1 +2.667002000E3,3.935849781E1 +2.667259000E3,4.137879880E1 +2.667575000E3,3.790565018E1 +2.667827000E3,3.845274836E1 +2.668153000E3,3.676763670E1 +2.668452000E3,3.751975183E1 +2.668696000E3,3.224848897E1 +2.669023000E3,3.611134142E1 +2.669316000E3,4.467495655E1 +2.669607000E3,4.735906080E1 +2.669885000E3,5.159453510E1 +2.670167000E3,5.321308782E1 +2.670485000E3,5.282242631E1 +2.670747000E3,5.127719277E1 +2.670997000E3,4.902251972E1 +2.671243000E3,4.450532678E1 +2.671540000E3,3.864078148E1 +2.671788000E3,3.720620343E1 +2.672044000E3,4.496142790E1 +2.672357000E3,4.705640535E1 +2.672617000E3,3.890316941E1 +2.672864000E3,4.027639889E1 +2.673159000E3,4.202335245E1 +2.673421000E3,4.285452583E1 +2.673720000E3,3.626679930E1 +2.673964000E3,4.670395357E1 +2.674210000E3,4.915586670E1 +2.674514000E3,5.353785994E1 +2.674811000E3,5.414016767E1 +2.675048000E3,5.591079353E1 +2.675364000E3,3.844031623E1 +2.675661000E3,3.124520008E1 +2.675946000E3,3.566755596E1 +2.676189000E3,3.490423263E1 +2.676498000E3,5.070292882E1 +2.676799000E3,5.356134163E1 +2.677047000E3,5.161634227E1 +2.677305000E3,5.185439004E1 +2.677581000E3,5.315585532E1 +2.677832000E3,4.418578879E1 +2.678087000E3,3.972693415E1 +2.678335000E3,4.338465258E1 +2.678650000E3,5.168404535E1 +2.678934000E3,4.984483773E1 +2.679249000E3,4.977401184E1 +2.679507000E3,5.044345616E1 +2.679823000E3,4.232585634E1 +2.680128000E3,3.026551109E1 +2.680400000E3,3.009656886E1 +2.680660000E3,4.894119824E1 +2.680913000E3,4.712312643E1 +2.681208000E3,4.239602863E1 +2.681477000E3,4.875338950E1 +2.681768000E3,4.887945421E1 +2.682128000E3,4.379352407E1 +2.682394000E3,4.073494394E1 +2.682637000E3,3.685872977E1 +2.682895000E3,2.883047793E1 +2.683163000E3,3.769147996E1 +2.683455000E3,3.713975885E1 +2.683749000E3,4.855681627E1 +2.683994000E3,4.936430656E1 +2.684290000E3,5.303947120E1 +2.684540000E3,5.031092673E1 +2.684833000E3,4.783130186E1 +2.685073000E3,4.898734587E1 +2.685348000E3,4.686166956E1 +2.685598000E3,4.244245178E1 +2.685917000E3,3.872119900E1 +2.686161000E3,4.891396583E1 +2.686434000E3,4.491629365E1 +2.686687000E3,3.588391777E1 +2.686952000E3,3.156965948E1 +2.687206000E3,3.184725563E1 +2.687480000E3,3.153561496E1 +2.687733000E3,3.669659228E1 +2.688049000E3,3.507922771E1 +2.688340000E3,3.251056517E1 +2.688645000E3,4.079174670E1 +2.688915000E3,4.837277005E1 +2.689163000E3,4.669136560E1 +2.689426000E3,3.659115086E1 +2.689751000E3,4.814125321E1 +2.689994000E3,4.721335081E1 +2.690235000E3,5.119773767E1 +2.690471000E3,4.584232122E1 +2.690738000E3,4.687969307E1 +2.691006000E3,4.116197132E1 +2.691312000E3,2.850019915E1 +2.691659000E3,3.175399572E1 +2.691948000E3,3.215115185E1 +2.692197000E3,2.655209633E1 +2.692466000E3,3.136629444E1 +2.692727000E3,2.928762690E1 +2.692976000E3,2.688909217E1 +2.693281000E3,3.350197248E1 +2.693518000E3,3.760267236E1 +2.693776000E3,3.194141055E1 +2.694032000E3,3.113878807E1 +2.694299000E3,2.830606211E1 +2.694602000E3,2.632227285E1 +2.694941000E3,2.736240000E1 +2.695184000E3,3.956118458E1 +2.695488000E3,4.069974415E1 +2.695732000E3,4.498590768E1 +2.696030000E3,3.370199172E1 +2.696300000E3,3.284857688E1 +2.696535000E3,2.919082343E1 +2.696815000E3,3.146626789E1 +2.697056000E3,2.968971947E1 +2.697354000E3,4.116455896E1 +2.697640000E3,5.055341773E1 +2.697888000E3,5.163434474E1 +2.698155000E3,4.792936353E1 +2.698456000E3,4.111753823E1 +2.698732000E3,4.594070701E1 +2.699031000E3,3.204472070E1 +2.699273000E3,2.836668859E1 +2.699578000E3,2.624009297E1 +2.699855000E3,2.719538340E1 +2.700110000E3,2.868563476E1 +2.700399000E3,2.757039916E1 +2.700662000E3,2.546630310E1 +2.700960000E3,2.981844134E1 +2.701310000E3,3.063471239E1 +2.701629000E3,4.014173680E1 +2.701894000E3,3.281157953E1 +2.702206000E3,4.268438101E1 +2.702448000E3,4.272045970E1 +2.702710000E3,4.782744516E1 +2.702984000E3,4.067538265E1 +2.703255000E3,3.821763448E1 +2.703566000E3,3.373237040E1 +2.703865000E3,2.762261654E1 +2.704108000E3,3.058182972E1 +2.704366000E3,4.157303269E1 +2.704695000E3,4.128988216E1 +2.705002000E3,3.725674585E1 +2.705260000E3,3.318881716E1 +2.705544000E3,3.512644750E1 +2.705774000E3,3.012622541E1 +2.706039000E3,3.307868989E1 +2.706297000E3,3.089854998E1 +2.706599000E3,2.870455364E1 +2.706901000E3,2.573473536E1 +2.707155000E3,2.708285982E1 +2.707419000E3,2.641018696E1 +2.707644000E3,2.532685142E1 +2.707945000E3,2.741320006E1 +2.708188000E3,2.764718970E1 +2.708460000E3,3.745935532E1 +2.708711000E3,4.292241509E1 +2.708955000E3,4.431523077E1 +2.709266000E3,3.812245251E1 +2.709534000E3,3.199637282E1 +2.709802000E3,3.030937111E1 +2.710049000E3,3.172341474E1 +2.710303000E3,4.706685853E1 +2.710610000E3,4.372593931E1 +2.710859000E3,4.298246415E1 +2.711196000E3,4.313732995E1 +2.711485000E3,3.646858634E1 +2.711745000E3,3.547356546E1 +2.712003000E3,4.802507202E1 +2.712259000E3,4.666185634E1 +2.712527000E3,4.298723738E1 +2.712813000E3,3.203029787E1 +2.713082000E3,2.721140687E1 +2.713344000E3,3.967881707E1 +2.713594000E3,5.017429445E1 +2.713859000E3,4.690730331E1 +2.714106000E3,4.892140969E1 +2.714475000E3,4.312346900E1 +2.714730000E3,4.926615820E1 +2.714984000E3,4.690558758E1 +2.715298000E3,3.116292546E1 +2.715563000E3,2.731472603E1 +2.715855000E3,3.029992609E1 +2.716160000E3,3.149201904E1 +2.716442000E3,2.826058660E1 +2.716703000E3,2.713282366E1 +2.716957000E3,3.659207256E1 +2.717253000E3,3.982143620E1 +2.717592000E3,4.316888996E1 +2.717851000E3,4.348787554E1 +2.718149000E3,4.336902207E1 +2.718464000E3,4.494305168E1 +2.718765000E3,4.280996114E1 +2.719042000E3,4.083199069E1 +2.719277000E3,3.924180447E1 +2.719573000E3,2.985025677E1 +2.719800000E3,2.924980764E1 +2.720042000E3,2.589394072E1 +2.720346000E3,2.996884267E1 +2.720607000E3,2.951796470E1 +2.720882000E3,2.762273017E1 +2.721181000E3,4.946261833E1 +2.721422000E3,4.848220411E1 +2.721736000E3,4.816357380E1 +2.722001000E3,5.238238407E1 +2.722305000E3,5.586118797E1 +2.722602000E3,5.474108905E1 +2.722856000E3,5.089156984E1 +2.723105000E3,4.900978141E1 +2.723369000E3,5.541376880E1 +2.723666000E3,4.827427134E1 +2.723997000E3,4.802338633E1 +2.724296000E3,3.537215093E1 +2.724548000E3,3.822637167E1 +2.724844000E3,3.388327957E1 +2.725086000E3,3.756611639E1 +2.725338000E3,4.489615211E1 +2.725635000E3,5.048833137E1 +2.725871000E3,4.298428385E1 +2.726174000E3,3.303114009E1 +2.726475000E3,4.527811220E1 +2.726764000E3,4.815487328E1 +2.727017000E3,4.761823346E1 +2.727328000E3,4.180028821E1 +2.727607000E3,4.512936944E1 +2.727849000E3,4.337880786E1 +2.728101000E3,4.031817829E1 +2.728401000E3,3.509684782E1 +2.728650000E3,4.495565250E1 +2.728895000E3,4.157595660E1 +2.729138000E3,5.008202715E1 +2.729381000E3,5.308960545E1 +2.729622000E3,4.943413955E1 +2.729917000E3,4.820467383E1 +2.730234000E3,5.168344618E1 +2.730544000E3,5.128425900E1 +2.730837000E3,5.242528085E1 +2.731075000E3,5.125548047E1 +2.731382000E3,5.027678189E1 +2.731625000E3,4.595108129E1 +2.731917000E3,5.425640288E1 +2.732229000E3,5.493458667E1 +2.732522000E3,5.383738769E1 +2.732781000E3,4.577468908E1 +2.733036000E3,4.877165484E1 +2.733337000E3,5.155317163E1 +2.733582000E3,4.868465804E1 +2.733904000E3,5.094377769E1 +2.734158000E3,4.778052408E1 +2.734485000E3,4.980696312E1 +2.734788000E3,5.229980528E1 +2.735043000E3,4.487473927E1 +2.735323000E3,5.405477376E1 +2.735550000E3,5.095910777E1 +2.735795000E3,4.081340338E1 +2.736110000E3,3.942379743E1 +2.736352000E3,4.377765131E1 +2.736599000E3,4.311237352E1 +2.736822000E3,4.659947655E1 +2.737071000E3,4.430846393E1 +2.737313000E3,4.579154087E1 +2.737577000E3,4.628223866E1 +2.737831000E3,3.937286623E1 +2.738094000E3,3.852847368E1 +2.738336000E3,3.907921933E1 +2.738583000E3,5.112703685E1 +2.738825000E3,4.827754167E1 +2.739100000E3,4.022366081E1 +2.739352000E3,3.342841986E1 +2.739649000E3,3.354947585E1 +2.740003000E3,2.967395260E1 +2.740259000E3,4.724158021E1 +2.740515000E3,4.406232704E1 +2.740781000E3,4.128290785E1 +2.741030000E3,3.766271195E1 +2.741274000E3,3.234308905E1 +2.741542000E3,5.345026714E1 +2.741790000E3,5.189834860E1 +2.742037000E3,4.310520052E1 +2.742373000E3,3.005340200E1 +2.742661000E3,3.957498865E1 +2.742905000E3,4.298992085E1 +2.743235000E3,3.914359224E1 +2.743487000E3,4.665969106E1 +2.743742000E3,4.569837618E1 +2.743989000E3,4.037243126E1 +2.744288000E3,4.393151618E1 +2.744525000E3,4.191552922E1 +2.744830000E3,3.855450094E1 +2.745068000E3,3.137426682E1 +2.745312000E3,3.988970586E1 +2.745595000E3,4.261856210E1 +2.745912000E3,4.545535941E1 +2.746178000E3,3.982007681E1 +2.746515000E3,3.873990925E1 +2.746799000E3,4.024486228E1 +2.747097000E3,3.778822068E1 +2.747346000E3,3.349647091E1 +2.747587000E3,3.949530039E1 +2.747884000E3,4.424971453E1 +2.748182000E3,4.109440717E1 +2.748426000E3,4.429824127E1 +2.748724000E3,3.941870140E1 +2.749014000E3,3.719766140E1 +2.749309000E3,3.407061301E1 +2.749659000E3,3.362708714E1 +2.749929000E3,4.111324363E1 +2.750185000E3,4.275268079E1 +2.750445000E3,5.624172952E1 +2.750726000E3,4.374037489E1 +2.750957000E3,4.189644016E1 +2.751207000E3,3.621210842E1 +2.751519000E3,4.177841495E1 +2.751770000E3,4.048458953E1 +2.752052000E3,3.923884976E1 +2.752303000E3,3.426258793E1 +2.752575000E3,3.252443323E1 +2.752926000E3,3.211416673E1 +2.753222000E3,3.245023971E1 +2.753483000E3,3.266068265E1 +2.753758000E3,4.004662592E1 +2.754054000E3,4.872983792E1 +2.754320000E3,5.041613029E1 +2.754567000E3,4.540589836E1 +2.754814000E3,3.042430240E1 +2.755080000E3,3.072459076E1 +2.755376000E3,3.998104284E1 +2.755642000E3,4.049850263E1 +2.755970000E3,4.294486763E1 +2.756315000E3,4.067196783E1 +2.756573000E3,4.772031632E1 +2.756825000E3,4.988707098E1 +2.757139000E3,4.555538995E1 +2.757388000E3,4.252022698E1 +2.757651000E3,3.810962452E1 +2.757917000E3,3.494795311E1 +2.758159000E3,3.247098224E1 +2.758413000E3,3.588027190E1 +2.758665000E3,3.200494843E1 +2.758920000E3,4.772506231E1 +2.759171000E3,3.775844318E1 +2.759507000E3,3.920116655E1 +2.759772000E3,4.528245497E1 +2.760086000E3,4.240466142E1 +2.760349000E3,4.544544837E1 +2.760652000E3,4.039389797E1 +2.760923000E3,3.896680017E1 +2.761194000E3,4.381534416E1 +2.761436000E3,4.424202471E1 +2.761681000E3,4.737958135E1 +2.761960000E3,4.213672401E1 +2.762194000E3,4.516117441E1 +2.762462000E3,4.279973284E1 +2.762806000E3,3.859577230E1 +2.763061000E3,4.880977241E1 +2.763403000E3,4.365184399E1 +2.763660000E3,3.848143477E1 +2.763932000E3,4.787104427E1 +2.764214000E3,3.823665924E1 +2.764451000E3,3.049392521E1 +2.764732000E3,3.086844430E1 +2.764975000E3,2.587396098E1 +2.765284000E3,3.362049288E1 +2.765536000E3,3.353664382E1 +2.765825000E3,5.140360254E1 +2.766193000E3,5.105178275E1 +2.766449000E3,5.027787452E1 +2.766756000E3,4.961194015E1 +2.766992000E3,4.473604482E1 +2.767290000E3,5.567849424E1 +2.767540000E3,5.366739238E1 +2.767788000E3,5.268444481E1 +2.768092000E3,4.378358357E1 +2.768389000E3,4.285786187E1 +2.768638000E3,3.838737205E1 +2.768928000E3,4.053738598E1 +2.769250000E3,3.914310468E1 +2.769517000E3,3.950994015E1 +2.769781000E3,4.085678781E1 +2.770095000E3,3.706118568E1 +2.770362000E3,3.878826243E1 +2.770640000E3,4.509160576E1 +2.770877000E3,4.395611401E1 +2.771129000E3,3.894826552E1 +2.771368000E3,3.783168139E1 +2.771620000E3,3.074559821E1 +2.771881000E3,4.191911052E1 +2.772136000E3,4.492008577E1 +2.772447000E3,3.666714779E1 +2.772710000E3,4.135207765E1 +2.772994000E3,4.645886813E1 +2.773238000E3,5.078995440E1 +2.773478000E3,5.706152467E1 +2.773725000E3,5.135582573E1 +2.773990000E3,4.900548267E1 +2.774266000E3,5.275962483E1 +2.774567000E3,3.947101760E1 +2.774806000E3,4.078518654E1 +2.775113000E3,4.929998433E1 +2.775417000E3,4.396253608E1 +2.775784000E3,4.382194135E1 +2.776077000E3,4.131860223E1 +2.776341000E3,4.321133953E1 +2.776596000E3,3.942571045E1 +2.776881000E3,5.035254190E1 +2.777176000E3,5.596334670E1 +2.777432000E3,6.003222989E1 +2.777730000E3,5.139953750E1 +2.778036000E3,5.596001036E1 +2.778330000E3,5.632045587E1 +2.778567000E3,5.352711698E1 +2.778873000E3,5.160150080E1 +2.779243000E3,5.407354895E1 +2.779513000E3,5.151192380E1 +2.779810000E3,5.479493680E1 +2.780084000E3,5.006197117E1 +2.780351000E3,5.012247277E1 +2.780644000E3,4.598086802E1 +2.780884000E3,3.959492635E1 +2.781142000E3,3.571624227E1 +2.781421000E3,4.082207018E1 +2.781720000E3,5.162800696E1 +2.781984000E3,5.211692198E1 +2.782250000E3,5.017743125E1 +2.782617000E3,4.685740156E1 +2.782916000E3,4.348825959E1 +2.783213000E3,3.825858224E1 +2.783454000E3,4.923981343E1 +2.783750000E3,5.319160353E1 +2.783992000E3,4.967899375E1 +2.784288000E3,3.952802481E1 +2.784535000E3,3.328379343E1 +2.784779000E3,3.014350405E1 +2.785020000E3,3.405755755E1 +2.785313000E3,4.653255974E1 +2.785639000E3,4.571255084E1 +2.785896000E3,4.212654376E1 +2.786166000E3,4.635178938E1 +2.786421000E3,4.614547408E1 +2.786716000E3,4.279815144E1 +2.787018000E3,3.739201392E1 +2.787261000E3,4.297599275E1 +2.787569000E3,5.279236826E1 +2.787869000E3,4.385267374E1 +2.788181000E3,3.538660905E1 +2.788488000E3,4.283741498E1 +2.788738000E3,3.898018884E1 +2.789079000E3,4.417569536E1 +2.789327000E3,3.821417555E1 +2.789586000E3,4.124587088E1 +2.789850000E3,4.583617377E1 +2.790116000E3,4.758354441E1 +2.790413000E3,4.386951397E1 +2.790662000E3,4.527431896E1 +2.790956000E3,4.454979637E1 +2.791207000E3,4.019280914E1 +2.791465000E3,4.549375778E1 +2.791714000E3,4.076569420E1 +2.791963000E3,3.807465350E1 +2.792293000E3,5.201775254E1 +2.792550000E3,4.217772267E1 +2.792797000E3,5.472035384E1 +2.793107000E3,5.403984906E1 +2.793357000E3,5.591746790E1 +2.793622000E3,5.564159884E1 +2.793875000E3,5.646584479E1 +2.794118000E3,5.185594958E1 +2.794377000E3,4.895735059E1 +2.794636000E3,5.654557288E1 +2.794943000E3,5.012866956E1 +2.795254000E3,4.757016947E1 +2.795528000E3,5.211434220E1 +2.795790000E3,4.452402763E1 +2.796058000E3,4.290214665E1 +2.796307000E3,3.465820610E1 +2.796556000E3,4.339944359E1 +2.796852000E3,4.313164949E1 +2.797091000E3,5.438037991E1 +2.797389000E3,5.514175593E1 +2.797635000E3,4.928848190E1 +2.797924000E3,4.659784940E1 +2.798220000E3,4.998887096E1 +2.798537000E3,4.486399829E1 +2.798842000E3,4.885866840E1 +2.799091000E3,4.635335968E1 +2.799347000E3,4.504358299E1 +2.799594000E3,3.958005741E1 +2.799833000E3,4.827229253E1 +2.800082000E3,4.830536262E1 +2.800388000E3,4.659260793E1 +2.800673000E3,4.111758509E1 +2.800972000E3,4.464305855E1 +2.801233000E3,4.497276151E1 +2.801524000E3,3.374775892E1 +2.801884000E3,3.426238632E1 +2.802202000E3,3.521995684E1 +2.802451000E3,3.181302785E1 +2.802708000E3,2.794884084E1 +2.803019000E3,3.320140571E1 +2.803325000E3,3.478175393E1 +2.803626000E3,3.529465039E1 +2.803932000E3,3.962950189E1 +2.804222000E3,5.725685057E1 +2.804486000E3,5.740119524E1 +2.804784000E3,5.069347451E1 +2.805056000E3,5.047632669E1 +2.805376000E3,5.207930289E1 +2.805626000E3,5.264810014E1 +2.805887000E3,5.288954519E1 +2.806177000E3,4.457356662E1 +2.806431000E3,3.885566564E1 +2.806679000E3,3.768676842E1 +2.806944000E3,3.953483275E1 +2.807192000E3,4.348722722E1 +2.807514000E3,4.091620627E1 +2.807832000E3,4.192587435E1 +2.808086000E3,4.434501723E1 +2.808380000E3,4.393917252E1 +2.808686000E3,4.250763593E1 +2.809001000E3,4.146719312E1 +2.809249000E3,4.084508562E1 +2.809517000E3,4.466153637E1 +2.809817000E3,4.002274614E1 +2.810111000E3,4.310032831E1 +2.810375000E3,4.901386280E1 +2.810661000E3,4.607368963E1 +2.810927000E3,4.387647276E1 +2.811225000E3,5.143943484E1 +2.811469000E3,5.045193234E1 +2.811861000E3,4.363012565E1 +2.812115000E3,4.450854658E1 +2.812371000E3,4.453857946E1 +2.812631000E3,4.628101753E1 +2.812921000E3,4.634691523E1 +2.813212000E3,4.654803531E1 +2.813510000E3,4.718980060E1 +2.813758000E3,4.430765323E1 +2.814051000E3,4.322664022E1 +2.814349000E3,4.450224091E1 +2.814582000E3,4.170367724E1 +2.814868000E3,3.985315953E1 +2.815113000E3,5.280042862E1 +2.815400000E3,4.119993511E1 +2.815662000E3,4.251502783E1 +2.815937000E3,4.221594106E1 +2.816186000E3,4.475181393E1 +2.816425000E3,4.757705666E1 +2.816666000E3,4.971185267E1 +2.816968000E3,4.862141287E1 +2.817211000E3,4.713523003E1 +2.817492000E3,4.541478066E1 +2.817737000E3,4.363493262E1 +2.817996000E3,4.428814895E1 +2.818246000E3,4.395099122E1 +2.818516000E3,4.781334664E1 +2.818773000E3,4.439472962E1 +2.819027000E3,4.768107540E1 +2.819278000E3,4.535748265E1 +2.819523000E3,5.061196572E1 +2.819779000E3,4.816069594E1 +2.820044000E3,4.715573746E1 +2.820374000E3,4.919198579E1 +2.820635000E3,5.486134785E1 +2.820897000E3,4.845922458E1 +2.821173000E3,4.486224636E1 +2.821520000E3,4.543631827E1 +2.821781000E3,4.823449020E1 +2.822049000E3,4.622456265E1 +2.822354000E3,3.467019045E1 +2.822632000E3,3.820707315E1 +2.822892000E3,3.870865044E1 +2.823175000E3,3.526203974E1 +2.823424000E3,3.398332746E1 +2.823673000E3,4.060940798E1 +2.823924000E3,4.531267955E1 +2.824156000E3,4.823172894E1 +2.824426000E3,5.381643572E1 +2.824772000E3,5.219878503E1 +2.825053000E3,4.888255160E1 +2.825277000E3,4.023650802E1 +2.825526000E3,3.467455539E1 +2.825785000E3,3.818404386E1 +2.826078000E3,4.122702652E1 +2.826315000E3,3.713088668E1 +2.826619000E3,4.891468535E1 +2.826912000E3,5.266971981E1 +2.827148000E3,4.991025067E1 +2.827457000E3,5.435242869E1 +2.827718000E3,5.378448717E1 +2.828053000E3,5.171570017E1 +2.828327000E3,5.600593919E1 +2.828581000E3,5.175339102E1 +2.828821000E3,4.567582373E1 +2.829101000E3,3.417267221E1 +2.829337000E3,3.532670702E1 +2.829576000E3,4.323212593E1 +2.829823000E3,3.952189104E1 +2.830096000E3,4.372473758E1 +2.830363000E3,4.288959864E1 +2.830609000E3,3.903893871E1 +2.830954000E3,3.847274859E1 +2.831281000E3,4.911689413E1 +2.831539000E3,5.342672798E1 +2.831798000E3,5.558955965E1 +2.832091000E3,5.519004987E1 +2.832341000E3,5.877942264E1 +2.832589000E3,4.602825434E1 +2.832861000E3,3.380054471E1 +2.833107000E3,3.583644563E1 +2.833403000E3,4.160983164E1 +2.833653000E3,3.903662215E1 +2.833958000E3,3.879412363E1 +2.834222000E3,4.121083607E1 +2.834460000E3,4.235130104E1 +2.834723000E3,5.615135633E1 +2.834993000E3,5.355273371E1 +2.835271000E3,4.896976792E1 +2.835535000E3,5.132324538E1 +2.835792000E3,5.529277110E1 +2.836041000E3,5.163674064E1 +2.836366000E3,4.657927993E1 +2.836613000E3,4.238907241E1 +2.836875000E3,5.376683406E1 +2.837143000E3,5.052269952E1 +2.837398000E3,5.018740192E1 +2.837697000E3,4.680907883E1 +2.837961000E3,4.427452663E1 +2.838227000E3,3.300759096E1 +2.838490000E3,3.639504198E1 +2.838784000E3,4.617517315E1 +2.839084000E3,4.692063960E1 +2.839325000E3,4.445415179E1 +2.839620000E3,4.215561710E1 +2.839863000E3,4.433766229E1 +2.840168000E3,4.210423337E1 +2.840460000E3,3.873922427E1 +2.840768000E3,3.717852459E1 +2.841057000E3,3.957811826E1 +2.841313000E3,3.760389186E1 +2.841638000E3,4.310249633E1 +2.841921000E3,4.813095040E1 +2.842192000E3,4.623131926E1 +2.842444000E3,4.648620260E1 +2.842743000E3,4.620801315E1 +2.843027000E3,4.321069748E1 +2.843281000E3,4.205248893E1 +2.843587000E3,2.653536028E1 +2.843863000E3,2.940344619E1 +2.844270000E3,4.715941302E1 +2.844533000E3,4.512147604E1 +2.844793000E3,4.758865475E1 +2.845051000E3,4.853448129E1 +2.845325000E3,4.647479098E1 +2.845569000E3,4.600966189E1 +2.845842000E3,4.549543262E1 +2.846088000E3,4.262631529E1 +2.846347000E3,4.522394390E1 +2.846652000E3,4.657245211E1 +2.846924000E3,4.554651191E1 +2.847231000E3,4.501421864E1 +2.847609000E3,4.413715050E1 +2.847859000E3,3.641102730E1 +2.848158000E3,2.959594862E1 +2.848409000E3,3.229903797E1 +2.848684000E3,3.716282001E1 +2.848948000E3,4.864280315E1 +2.849195000E3,4.698625872E1 +2.849453000E3,4.475077374E1 +2.849725000E3,4.320130236E1 +2.850029000E3,4.052232702E1 +2.850286000E3,4.987213531E1 +2.850622000E3,4.470574790E1 +2.850953000E3,4.746715529E1 +2.851224000E3,4.817674396E1 +2.851475000E3,4.755384271E1 +2.851775000E3,4.606857790E1 +2.852037000E3,4.602549066E1 +2.852280000E3,4.107899882E1 +2.852578000E3,4.602936757E1 +2.852832000E3,4.594357604E1 +2.853123000E3,4.132874601E1 +2.853424000E3,3.891402985E1 +2.853676000E3,3.210431116E1 +2.854034000E3,4.148325967E1 +2.854336000E3,4.539420759E1 +2.854629000E3,3.813311910E1 +2.854857000E3,3.204826654E1 +2.855103000E3,4.042825728E1 +2.855348000E3,3.781799437E1 +2.855635000E3,3.485312778E1 +2.855901000E3,3.176423587E1 +2.856194000E3,3.286644404E1 +2.856446000E3,3.601261840E1 +2.856741000E3,3.056779431E1 +2.856990000E3,2.876904683E1 +2.857247000E3,2.336161379E1 +2.857525000E3,5.319777865E1 +2.857765000E3,4.924210585E1 +2.858030000E3,4.161506516E1 +2.858287000E3,3.471025819E1 +2.858592000E3,2.954431085E1 +2.858878000E3,3.551304021E1 +2.859146000E3,4.056554733E1 +2.859438000E3,4.716772205E1 +2.859749000E3,4.728214145E1 +2.860112000E3,4.333221553E1 +2.860355000E3,3.970290127E1 +2.860627000E3,4.675070996E1 +2.860922000E3,5.292655838E1 +2.861168000E3,5.560528000E1 +2.861448000E3,5.155203362E1 +2.861684000E3,4.854372910E1 +2.861981000E3,5.166225265E1 +2.862226000E3,5.239758268E1 +2.862536000E3,4.880079262E1 +2.862801000E3,5.860724491E1 +2.863049000E3,5.487085904E1 +2.863366000E3,4.477307493E1 +2.863622000E3,4.809216762E1 +2.863923000E3,4.128779228E1 +2.864180000E3,4.039902121E1 +2.864473000E3,3.763315716E1 +2.864758000E3,3.836830031E1 +2.865072000E3,3.562217561E1 +2.865375000E3,4.251016575E1 +2.865631000E3,3.959478231E1 +2.865894000E3,3.906491963E1 +2.866161000E3,3.169567809E1 +2.866409000E3,4.180907280E1 +2.866769000E3,5.009501966E1 +2.867095000E3,4.485052737E1 +2.867377000E3,4.543449817E1 +2.867634000E3,4.558186247E1 +2.867912000E3,3.310648260E1 +2.868160000E3,3.368680580E1 +2.868403000E3,3.259924908E1 +2.868652000E3,3.468868920E1 +2.868945000E3,3.811295096E1 +2.869214000E3,3.680532391E1 +2.869523000E3,4.480088276E1 +2.869800000E3,4.321197878E1 +2.870149000E3,3.870196995E1 +2.870426000E3,4.501549736E1 +2.870686000E3,3.869046251E1 +2.870998000E3,5.116138397E1 +2.871259000E3,4.565952095E1 +2.871545000E3,4.044036430E1 +2.871835000E3,3.776423584E1 +2.872146000E3,4.283314388E1 +2.872428000E3,4.822150076E1 +2.872666000E3,4.609488251E1 +2.872966000E3,4.199842198E1 +2.873258000E3,4.199452970E1 +2.873557000E3,4.094164548E1 +2.873868000E3,3.451929232E1 +2.874146000E3,3.725700957E1 +2.874378000E3,3.820854143E1 +2.874632000E3,3.261818797E1 +2.874949000E3,4.229639001E1 +2.875219000E3,4.314663650E1 +2.875496000E3,4.030472415E1 +2.875772000E3,3.740362597E1 +2.876082000E3,3.770704299E1 +2.876334000E3,4.016521241E1 +2.876600000E3,4.155568881E1 +2.876855000E3,3.864643482E1 +2.877164000E3,3.358142820E1 +2.877430000E3,2.988882280E1 +2.877698000E3,4.233125756E1 +2.877954000E3,4.245249096E1 +2.878273000E3,3.619646633E1 +2.878541000E3,3.199868066E1 +2.878801000E3,4.546979293E1 +2.879062000E3,5.523869784E1 +2.879342000E3,5.605267417E1 +2.879584000E3,5.653411529E1 +2.879928000E3,4.626290707E1 +2.880202000E3,3.540012043E1 +2.880447000E3,3.620700172E1 +2.880691000E3,2.922036878E1 +2.880938000E3,3.659816429E1 +2.881251000E3,4.145147882E1 +2.881527000E3,3.894444603E1 +2.881851000E3,3.741315407E1 +2.882112000E3,4.094962867E1 +2.882373000E3,4.333353585E1 +2.882625000E3,4.557565518E1 +2.882879000E3,4.308396997E1 +2.883145000E3,4.097722416E1 +2.883416000E3,3.927850137E1 +2.883669000E3,3.223716221E1 +2.883941000E3,3.004581442E1 +2.884209000E3,3.765685263E1 +2.884466000E3,3.878810543E1 +2.884718000E3,2.988953340E1 +2.884967000E3,3.346960294E1 +2.885221000E3,3.799647420E1 +2.885537000E3,3.116842616E1 +2.885796000E3,3.671552801E1 +2.886084000E3,4.459898232E1 +2.886404000E3,4.708370738E1 +2.886677000E3,5.036035843E1 +2.886979000E3,4.113513329E1 +2.887251000E3,3.503458684E1 +2.887528000E3,3.462090732E1 +2.887785000E3,4.001717165E1 +2.888037000E3,3.538133603E1 +2.888296000E3,3.662805649E1 +2.888547000E3,4.263542947E1 +2.888820000E3,4.431895872E1 +2.889079000E3,4.300413574E1 +2.889340000E3,4.173317530E1 +2.889582000E3,4.288275032E1 +2.889932000E3,3.944773526E1 +2.890197000E3,3.214266541E1 +2.890503000E3,3.060588708E1 +2.890777000E3,3.296322494E1 +2.891017000E3,3.394251803E1 +2.891320000E3,3.208741950E1 +2.891570000E3,3.441770910E1 +2.891849000E3,3.368561294E1 +2.892087000E3,3.475967611E1 +2.892337000E3,3.740055420E1 +2.892635000E3,3.542355307E1 +2.892981000E3,3.105741683E1 +2.893247000E3,3.245614761E1 +2.893513000E3,4.142391644E1 +2.893779000E3,4.497461971E1 +2.894029000E3,4.653178389E1 +2.894282000E3,4.703576342E1 +2.894540000E3,4.751169602E1 +2.894805000E3,4.201422178E1 +2.895062000E3,4.370261317E1 +2.895310000E3,4.660906406E1 +2.895596000E3,4.633159753E1 +2.895865000E3,4.381116332E1 +2.896155000E3,4.368523912E1 +2.896405000E3,4.747051902E1 +2.896651000E3,4.222577444E1 +2.896905000E3,4.572633660E1 +2.897184000E3,5.203776089E1 +2.897450000E3,5.010843836E1 +2.897744000E3,4.910530865E1 +2.898022000E3,4.664859833E1 +2.898308000E3,3.985336775E1 +2.898564000E3,3.683403533E1 +2.898812000E3,4.284820320E1 +2.899091000E3,4.286036404E1 +2.899396000E3,5.224070654E1 +2.899753000E3,4.568546748E1 +2.900018000E3,5.586433220E1 +2.900278000E3,4.514230837E1 +2.900559000E3,3.853422420E1 +2.900865000E3,3.299777990E1 +2.901139000E3,3.594596453E1 +2.901415000E3,2.896001699E1 +2.901650000E3,2.556794162E1 +2.901937000E3,2.525773120E1 +2.902206000E3,3.138035436E1 +2.902457000E3,3.725731802E1 +2.902816000E3,3.600302530E1 +2.903095000E3,3.476106384E1 +2.903340000E3,3.325569458E1 +2.903600000E3,3.217545002E1 +2.903858000E3,2.994578711E1 +2.904108000E3,3.277965280E1 +2.904372000E3,4.013450695E1 +2.904627000E3,3.103730297E1 +2.904913000E3,4.187502355E1 +2.905174000E3,3.591627686E1 +2.905452000E3,3.067277870E1 +2.905743000E3,2.813597523E1 +2.906004000E3,2.760542404E1 +2.906321000E3,3.327793113E1 +2.906579000E3,4.111963776E1 +2.906835000E3,4.309802180E1 +2.907113000E3,2.749088524E1 +2.907354000E3,2.269523459E1 +2.907657000E3,3.631225289E1 +2.907901000E3,4.146405590E1 +2.908156000E3,3.785670954E1 +2.908403000E3,4.498664409E1 +2.908675000E3,4.174614917E1 +2.908932000E3,4.632262643E1 +2.909189000E3,3.569839459E1 +2.909522000E3,4.635385444E1 +2.909802000E3,4.337190367E1 +2.910035000E3,3.796960383E1 +2.910287000E3,4.151951269E1 +2.910538000E3,4.245940710E1 +2.910795000E3,4.268454470E1 +2.911045000E3,4.280139929E1 +2.911335000E3,3.861780445E1 +2.911584000E3,4.028221299E1 +2.911885000E3,3.934408626E1 +2.912139000E3,3.091195323E1 +2.912386000E3,2.709027446E1 +2.912622000E3,2.721294148E1 +2.912915000E3,3.169063213E1 +2.913196000E3,3.663766462E1 +2.913461000E3,3.582442105E1 +2.913744000E3,2.742218375E1 +2.913990000E3,3.432349666E1 +2.914297000E3,4.586386591E1 +2.914575000E3,4.813383402E1 +2.914888000E3,5.016441505E1 +2.915190000E3,4.132593749E1 +2.915481000E3,3.992883324E1 +2.915827000E3,3.713218942E1 +2.916087000E3,4.862036940E1 +2.916351000E3,4.985137398E1 +2.916622000E3,5.126616609E1 +2.916881000E3,4.180876614E1 +2.917157000E3,4.057128207E1 +2.917418000E3,3.994520906E1 +2.917681000E3,3.719846748E1 +2.917964000E3,4.377214072E1 +2.918264000E3,4.081140664E1 +2.918518000E3,4.149712935E1 +2.918784000E3,3.965801174E1 +2.919127000E3,3.499332266E1 +2.919415000E3,3.454976163E1 +2.919745000E3,3.801205804E1 +2.920003000E3,4.266330834E1 +2.920244000E3,3.704497233E1 +2.920548000E3,3.869800412E1 +2.920840000E3,3.880762608E1 +2.921081000E3,3.967826348E1 +2.921325000E3,4.387098551E1 +2.921573000E3,3.795523909E1 +2.921876000E3,3.884773193E1 +2.922122000E3,3.949919351E1 +2.922481000E3,3.549368996E1 +2.922774000E3,5.176437750E1 +2.923023000E3,4.673969779E1 +2.923306000E3,3.729614967E1 +2.923573000E3,3.557242251E1 +2.923880000E3,5.351861504E1 +2.924155000E3,5.486661937E1 +2.924424000E3,5.693150230E1 +2.924735000E3,4.225245527E1 +2.924988000E3,4.082554353E1 +2.925252000E3,3.807826598E1 +2.925573000E3,3.587807510E1 +2.925935000E3,4.290242494E1 +2.926237000E3,3.960438869E1 +2.926496000E3,3.732088357E1 +2.926751000E3,3.216321546E1 +2.926991000E3,3.001846960E1 +2.927295000E3,3.634949804E1 +2.927531000E3,3.127042454E1 +2.927829000E3,3.158500209E1 +2.928073000E3,2.815993792E1 +2.928370000E3,2.793102526E1 +2.928613000E3,2.468786691E1 +2.928943000E3,2.345175993E1 +2.929256000E3,2.908559709E1 +2.929497000E3,2.580950455E1 +2.929819000E3,2.871707976E1 +2.930114000E3,2.977851279E1 +2.930374000E3,4.220437998E1 +2.930636000E3,3.122152770E1 +2.930945000E3,3.902308439E1 +2.931227000E3,3.648582434E1 +2.931474000E3,4.774090674E1 +2.931717000E3,4.487624905E1 +2.931963000E3,4.620728265E1 +2.932258000E3,4.011602626E1 +2.932585000E3,4.011469989E1 +2.932871000E3,4.531107143E1 +2.933117000E3,4.299757904E1 +2.933366000E3,4.255561828E1 +2.933662000E3,4.180851663E1 +2.933899000E3,3.354142728E1 +2.934139000E3,4.061788576E1 +2.934435000E3,3.190428864E1 +2.934678000E3,3.136545948E1 +2.934975000E3,3.172564299E1 +2.935227000E3,3.538616066E1 +2.935577000E3,3.227761247E1 +2.935826000E3,3.587578035E1 +2.936132000E3,2.830690319E1 +2.936391000E3,2.983281120E1 +2.936636000E3,3.198482114E1 +2.936936000E3,4.529436692E1 +2.937191000E3,3.904726622E1 +2.937498000E3,4.546792713E1 +2.937790000E3,4.178984789E1 +2.938055000E3,3.901507008E1 +2.938332000E3,3.530528642E1 +2.938634000E3,3.766035689E1 +2.939060000E3,5.595745424E1 +2.939318000E3,5.800941557E1 +2.939576000E3,5.061871726E1 +2.939836000E3,6.017617924E1 +2.940124000E3,5.889680612E1 +2.940380000E3,5.553527141E1 +2.940631000E3,4.982924060E1 +2.940889000E3,5.386899946E1 +2.941183000E3,5.511436312E1 +2.941477000E3,5.474658637E1 +2.941736000E3,5.669903896E1 +2.941985000E3,5.352207307E1 +2.942302000E3,5.089540084E1 +2.942556000E3,5.163069551E1 +2.942811000E3,4.946827448E1 +2.943144000E3,4.292332560E1 +2.943386000E3,4.769421745E1 +2.943625000E3,4.741300910E1 +2.943936000E3,4.918473310E1 +2.944182000E3,4.358732286E1 +2.944456000E3,4.338106770E1 +2.944722000E3,5.302068646E1 +2.945006000E3,4.800501219E1 +2.945370000E3,4.445792428E1 +2.945619000E3,3.768400599E1 +2.945867000E3,3.829540629E1 +2.946159000E3,3.766669508E1 +2.946411000E3,4.016839261E1 +2.946712000E3,4.041724233E1 +2.947009000E3,4.012217251E1 +2.947323000E3,3.568820570E1 +2.947568000E3,3.690839296E1 +2.947818000E3,4.813137033E1 +2.948084000E3,5.325274156E1 +2.948341000E3,5.892514859E1 +2.948730000E3,4.314585435E1 +2.948980000E3,4.049194134E1 +2.949257000E3,4.522053034E1 +2.949515000E3,4.263261915E1 +2.949826000E3,5.159034358E1 +2.950126000E3,4.094053529E1 +2.950370000E3,4.144504964E1 +2.950613000E3,4.584689520E1 +2.950933000E3,3.986259871E1 +2.951211000E3,5.835616238E1 +2.951492000E3,4.865922153E1 +2.951773000E3,4.646806952E1 +2.952049000E3,5.501145746E1 +2.952349000E3,5.395560549E1 +2.952606000E3,5.094776028E1 +2.952859000E3,5.987933082E1 +2.953123000E3,5.553863596E1 +2.953365000E3,6.056471643E1 +2.953626000E3,5.705129962E1 +2.953881000E3,5.620457969E1 +2.954143000E3,4.633104773E1 +2.954403000E3,4.542785483E1 +2.954666000E3,4.357363747E1 +2.954925000E3,5.905995366E1 +2.955255000E3,5.325307727E1 +2.955500000E3,6.730464031E1 +2.955795000E3,6.362836082E1 +2.956030000E3,6.057596417E1 +2.956332000E3,6.813918985E1 +2.956573000E3,6.403678903E1 +2.956871000E3,6.230635205E1 +2.957135000E3,6.746671531E1 +2.957401000E3,6.427695804E1 +2.957673000E3,5.206458526E1 +2.957933000E3,5.261265827E1 +2.958182000E3,4.877242183E1 +2.958552000E3,6.627461000E1 +2.958808000E3,6.741673158E1 +2.959062000E3,6.597614354E1 +2.959304000E3,6.540552328E1 +2.959551000E3,6.528289091E1 +2.959864000E3,5.830061674E1 +2.960121000E3,5.985112812E1 +2.960428000E3,6.090568068E1 +2.960720000E3,6.807446854E1 +2.960985000E3,6.930722199E1 +2.961226000E3,6.386100217E1 +2.961579000E3,6.028451745E1 +2.961849000E3,6.477814340E1 +2.962132000E3,6.837046944E1 +2.962373000E3,6.647209363E1 +2.962660000E3,6.694202205E1 +2.962967000E3,6.648756695E1 +2.963231000E3,6.482625001E1 +2.963518000E3,7.095796361E1 +2.963775000E3,6.454417662E1 +2.964062000E3,6.533171518E1 +2.964339000E3,6.471819922E1 +2.964629000E3,5.679367810E1 +2.964962000E3,5.573913208E1 +2.965271000E3,6.251351498E1 +2.965502000E3,6.071427502E1 +2.965745000E3,6.212696498E1 +2.966049000E3,5.601947939E1 +2.966292000E3,5.543203731E1 +2.966544000E3,5.440105204E1 +2.966807000E3,5.169354717E1 +2.967114000E3,5.098574914E1 +2.967354000E3,4.778774527E1 +2.967603000E3,5.527018336E1 +2.967874000E3,5.069142516E1 +2.968220000E3,5.540354927E1 +2.968470000E3,5.388190573E1 +2.968725000E3,5.648678631E1 +2.968994000E3,6.195289166E1 +2.969259000E3,5.924073062E1 +2.969526000E3,5.554902217E1 +2.969797000E3,6.073047002E1 +2.970049000E3,5.750580172E1 +2.970375000E3,6.205206850E1 +2.970685000E3,5.892672487E1 +2.971008000E3,5.603539479E1 +2.971306000E3,5.380141597E1 +2.971609000E3,6.182570937E1 +2.971860000E3,5.755792598E1 +2.972120000E3,7.094637252E1 +2.972374000E3,7.220321333E1 +2.972688000E3,6.074903881E1 +2.972946000E3,5.132390204E1 +2.973203000E3,5.555176793E1 +2.973482000E3,5.082163203E1 +2.973746000E3,6.668022761E1 +2.974024000E3,6.951681150E1 +2.974257000E3,6.170353739E1 +2.974507000E3,6.191784425E1 +2.974845000E3,6.249884739E1 +2.975129000E3,6.139715498E1 +2.975385000E3,5.458109058E1 +2.975684000E3,6.285593412E1 +2.975925000E3,6.801445640E1 +2.976223000E3,6.762358149E1 +2.976454000E3,6.007212586E1 +2.976698000E3,6.176376027E1 +2.976998000E3,5.489351528E1 +2.977244000E3,6.419682450E1 +2.977544000E3,6.335879864E1 +2.977813000E3,6.346249627E1 +2.978071000E3,6.122721977E1 +2.978303000E3,6.269343112E1 +2.978564000E3,5.719207644E1 +2.978818000E3,6.209398004E1 +2.979085000E3,6.570545323E1 +2.979335000E3,6.443300698E1 +2.979582000E3,6.395479352E1 +2.979841000E3,6.285971298E1 +2.980091000E3,6.452411240E1 +2.980337000E3,6.648403811E1 +2.980638000E3,6.146510082E1 +2.980898000E3,6.178604521E1 +2.981191000E3,5.906416732E1 +2.981418000E3,6.139524316E1 +2.981668000E3,6.754933795E1 +2.981958000E3,5.804633278E1 +2.982221000E3,5.544285219E1 +2.982480000E3,5.252390700E1 +2.982741000E3,5.442974682E1 +2.983009000E3,5.886662164E1 +2.983270000E3,6.039421332E1 +2.983532000E3,5.984826425E1 +2.983780000E3,6.038747451E1 +2.984020000E3,5.836799318E1 +2.984266000E3,6.011457774E1 +2.984654000E3,6.086793857E1 +2.984928000E3,6.104684994E1 +2.985246000E3,6.081085188E1 +2.985504000E3,6.338602633E1 +2.985771000E3,6.224702903E1 +2.986040000E3,5.771788346E1 +2.986351000E3,5.832375863E1 +2.986657000E3,6.179808645E1 +2.986893000E3,6.074067698E1 +2.987188000E3,5.763905723E1 +2.987459000E3,5.411975455E1 +2.987698000E3,5.609082395E1 +2.988020000E3,5.838775534E1 +2.988261000E3,5.545934196E1 +2.988564000E3,5.818253650E1 +2.988803000E3,5.693365858E1 +2.989084000E3,5.747877452E1 +2.989394000E3,6.108654481E1 +2.989646000E3,6.109521888E1 +2.989952000E3,5.453216708E1 +2.990235000E3,5.325056065E1 +2.990530000E3,5.226229633E1 +2.990796000E3,5.566734434E1 +2.991153000E3,5.983192138E1 +2.991409000E3,5.902282422E1 +2.991712000E3,6.553978750E1 +2.991962000E3,6.323109208E1 +2.992210000E3,6.430699278E1 +2.992477000E3,6.439502996E1 +2.992769000E3,5.882379749E1 +2.993024000E3,7.076998945E1 +2.993317000E3,6.710088514E1 +2.993554000E3,6.332152683E1 +2.993846000E3,6.013348006E1 +2.994081000E3,6.492156154E1 +2.994361000E3,6.054189638E1 +2.994671000E3,5.878685209E1 +2.994911000E3,6.363988355E1 +2.995218000E3,6.266127576E1 +2.995513000E3,6.231860976E1 +2.995750000E3,6.770663238E1 +2.996056000E3,6.411706706E1 +2.996346000E3,6.607053327E1 +2.996592000E3,6.231837938E1 +2.996884000E3,6.235557028E1 +2.997130000E3,6.626149607E1 +2.997386000E3,6.897456616E1 +2.997721000E3,6.896820400E1 +2.997984000E3,5.708709076E1 +2.998260000E3,5.465136518E1 +2.998532000E3,6.136090841E1 +2.998792000E3,6.427324700E1 +2.999047000E3,5.922924051E1 +2.999308000E3,5.964993479E1 +2.999619000E3,5.937495043E1 +2.999910000E3,6.345321013E1 +3.000196000E3,6.558504608E1 +3.000438000E3,6.566442906E1 +3.000721000E3,6.596782674E1 +3.001048000E3,6.493210478E1 +3.001299000E3,6.778071085E1 +3.001554000E3,5.810398860E1 +3.001834000E3,6.461256831E1 +3.002084000E3,5.637103240E1 +3.002332000E3,6.244497501E1 +3.002633000E3,5.749162406E1 +3.002980000E3,6.268391580E1 +3.003246000E3,6.122193913E1 +3.003572000E3,6.467185898E1 +3.003877000E3,6.239318427E1 +3.004266000E3,6.708558966E1 +3.004573000E3,6.293492178E1 +3.004871000E3,6.169168265E1 +3.005129000E3,5.944912128E1 +3.005404000E3,5.631628075E1 +3.005704000E3,6.080609102E1 +3.005964000E3,6.424565764E1 +3.006250000E3,6.447415860E1 +3.006481000E3,6.606824769E1 +3.006756000E3,6.337387069E1 +3.007004000E3,6.294291386E1 +3.007286000E3,6.430484746E1 +3.007612000E3,6.091848593E1 +3.007867000E3,6.343837854E1 +3.008169000E3,5.978702761E1 +3.008432000E3,5.965865421E1 +3.008675000E3,5.540362761E1 +3.008918000E3,5.443572137E1 +3.009202000E3,6.171389250E1 +3.009446000E3,6.487192568E1 +3.009738000E3,5.958143908E1 +3.009983000E3,6.189834719E1 +3.010232000E3,5.752745917E1 +3.010489000E3,6.339873723E1 +3.010846000E3,6.127984243E1 +3.011144000E3,6.065194767E1 +3.011387000E3,6.253646864E1 +3.011646000E3,6.179753794E1 +3.011925000E3,6.231808205E1 +3.012153000E3,6.101579519E1 +3.012442000E3,5.876502421E1 +3.012737000E3,5.809905793E1 +3.013015000E3,5.695141293E1 +3.013301000E3,5.973139928E1 +3.013577000E3,6.007240820E1 +3.013839000E3,7.136453087E1 +3.014063000E3,7.173892024E1 +3.014315000E3,6.885425335E1 +3.014559000E3,6.110376355E1 +3.014808000E3,6.296723224E1 +3.015075000E3,6.021879294E1 +3.015327000E3,6.012811489E1 +3.015577000E3,6.282613373E1 +3.015850000E3,6.884549735E1 +3.016115000E3,6.913958233E1 +3.016397000E3,6.608409337E1 +3.016648000E3,6.437779633E1 +3.016896000E3,6.412579817E1 +3.017253000E3,6.408373459E1 +3.017500000E3,6.487828946E1 +3.017743000E3,6.281964754E1 +3.018003000E3,6.153697843E1 +3.018258000E3,6.503307442E1 +3.018512000E3,6.508021131E1 +3.018791000E3,5.910017780E1 +3.019028000E3,5.757469918E1 +3.019325000E3,5.762978005E1 +3.019573000E3,5.366611226E1 +3.019824000E3,5.708763529E1 +3.020086000E3,5.488621207E1 +3.020437000E3,5.826722905E1 +3.020695000E3,5.951373108E1 +3.020968000E3,6.130623452E1 +3.021217000E3,6.025771329E1 +3.021490000E3,5.280103891E1 +3.021737000E3,6.123009986E1 +3.022037000E3,6.404958762E1 +3.022328000E3,6.469373641E1 +3.022599000E3,6.283727611E1 +3.022840000E3,6.248869497E1 +3.023123000E3,6.767270030E1 +3.023363000E3,6.436289402E1 +3.023706000E3,6.007121161E1 +3.023992000E3,6.067397941E1 +3.024255000E3,6.005092329E1 +3.024513000E3,6.146229561E1 +3.024803000E3,6.214304530E1 +3.025060000E3,6.107977952E1 +3.025317000E3,6.268440106E1 +3.025560000E3,5.744048190E1 +3.025823000E3,6.080102592E1 +3.026092000E3,6.359394744E1 +3.026384000E3,6.219604097E1 +3.026685000E3,6.296073955E1 +3.026912000E3,6.243574530E1 +3.027190000E3,6.540426031E1 +3.027426000E3,7.038009166E1 +3.027684000E3,7.133800291E1 +3.027943000E3,6.847497315E1 +3.028214000E3,7.049817235E1 +3.028486000E3,6.555713643E1 +3.028748000E3,6.762942526E1 +3.029008000E3,6.780082040E1 +3.029264000E3,6.644646205E1 +3.029533000E3,7.066497540E1 +3.029800000E3,6.700863421E1 +3.030174000E3,6.263767412E1 +3.030459000E3,5.937975562E1 +3.030697000E3,6.189133018E1 +3.030958000E3,6.479748496E1 +3.031218000E3,6.070421224E1 +3.031488000E3,5.567295684E1 +3.031754000E3,6.162939414E1 +3.032026000E3,6.462556380E1 +3.032293000E3,6.300561819E1 +3.032553000E3,6.320528504E1 +3.032852000E3,6.205536878E1 +3.033102000E3,7.179598993E1 +3.033490000E3,6.907149718E1 +3.033750000E3,6.110443799E1 +3.034008000E3,5.743025653E1 +3.034257000E3,5.714646515E1 +3.034505000E3,6.193634179E1 +3.034762000E3,6.511685208E1 +3.035034000E3,6.647840023E1 +3.035277000E3,6.637602928E1 +3.035534000E3,6.208743290E1 +3.035873000E3,6.158502662E1 +3.036127000E3,6.138896352E1 +3.036392000E3,5.988342330E1 +3.036737000E3,5.834272912E1 +3.036998000E3,6.504474047E1 +3.037253000E3,5.801637483E1 +3.037569000E3,6.208073459E1 +3.037831000E3,6.555093843E1 +3.038084000E3,6.686352963E1 +3.038356000E3,6.398821865E1 +3.038638000E3,6.053541888E1 +3.038927000E3,5.509282051E1 +3.039228000E3,6.213274835E1 +3.039473000E3,6.149105368E1 +3.039745000E3,6.097957376E1 +3.040056000E3,6.313145073E1 +3.040300000E3,6.749857058E1 +3.040549000E3,6.031561589E1 +3.040852000E3,5.991948868E1 +3.041110000E3,6.228314687E1 +3.041358000E3,6.281493679E1 +3.041621000E3,6.031124820E1 +3.041926000E3,6.035954468E1 +3.042177000E3,6.230627050E1 +3.042448000E3,5.381586458E1 +3.042741000E3,6.032611045E1 +3.043026000E3,5.796046788E1 +3.043304000E3,6.286261594E1 +3.043605000E3,6.188894569E1 +3.043848000E3,6.196336480E1 +3.044091000E3,6.506902622E1 +3.044345000E3,6.547913264E1 +3.044589000E3,6.701681380E1 +3.044849000E3,6.398074775E1 +3.045095000E3,6.102355933E1 +3.045350000E3,6.546609328E1 +3.045598000E3,6.626677347E1 +3.045845000E3,6.212155235E1 +3.046098000E3,6.475032486E1 +3.046433000E3,6.469401418E1 +3.046698000E3,6.335899573E1 +3.046970000E3,5.799459631E1 +3.047267000E3,5.777430210E1 +3.047527000E3,6.228044606E1 +3.047785000E3,5.521572273E1 +3.048044000E3,5.312506195E1 +3.048316000E3,5.877400717E1 +3.048592000E3,6.239358597E1 +3.048842000E3,6.019315355E1 +3.049164000E3,5.944515023E1 +3.049418000E3,6.571719967E1 +3.049752000E3,5.906077781E1 +3.050005000E3,6.269931225E1 +3.050242000E3,6.329267329E1 +3.050532000E3,6.094692628E1 +3.050797000E3,6.137608503E1 +3.051055000E3,6.019630450E1 +3.051299000E3,5.959056092E1 +3.051551000E3,6.195653625E1 +3.051802000E3,5.997942431E1 +3.052044000E3,6.071988649E1 +3.052348000E3,6.146559433E1 +3.052605000E3,6.320542640E1 +3.052903000E3,6.301314639E1 +3.053133000E3,6.491013087E1 +3.053386000E3,5.374424399E1 +3.053632000E3,5.337930652E1 +3.053925000E3,5.830420592E1 +3.054167000E3,5.827724976E1 +3.054414000E3,5.413373264E1 +3.054713000E3,5.438904566E1 +3.054952000E3,5.478972153E1 +3.055245000E3,6.026125791E1 +3.055545000E3,6.377000784E1 +3.055792000E3,6.273059884E1 +3.056116000E3,6.164463909E1 +3.056426000E3,6.310484015E1 +3.056665000E3,6.191865333E1 +3.056974000E3,6.044005004E1 +3.057225000E3,5.723160495E1 +3.057532000E3,6.482171923E1 +3.057799000E3,6.373654624E1 +3.058097000E3,6.579319958E1 +3.058333000E3,6.717439766E1 +3.058632000E3,6.244987186E1 +3.058874000E3,5.911459441E1 +3.059119000E3,6.246625617E1 +3.059514000E3,6.061929027E1 +3.059786000E3,6.141894857E1 +3.060044000E3,6.531006136E1 +3.060311000E3,6.745420282E1 +3.060564000E3,6.305040539E1 +3.060809000E3,6.250223063E1 +3.061063000E3,5.984183740E1 +3.061365000E3,6.201500936E1 +3.061610000E3,6.171968159E1 +3.061853000E3,5.636652524E1 +3.062137000E3,5.937450988E1 +3.062405000E3,5.424162977E1 +3.062724000E3,5.577353705E1 +3.062968000E3,6.265208868E1 +3.063225000E3,6.754657095E1 +3.063470000E3,6.259832443E1 +3.063731000E3,5.846954403E1 +3.063975000E3,5.735719718E1 +3.064220000E3,5.614657426E1 +3.064460000E3,5.493678071E1 +3.064711000E3,6.175770153E1 +3.064961000E3,6.502893325E1 +3.065266000E3,6.372557142E1 +3.065562000E3,6.165604672E1 +3.065921000E3,6.202265536E1 +3.066181000E3,5.894659424E1 +3.066427000E3,5.516515279E1 +3.066669000E3,5.227763917E1 +3.066911000E3,5.331294555E1 +3.067166000E3,5.535383534E1 +3.067460000E3,5.490405248E1 +3.067721000E3,5.927902794E1 +3.068030000E3,6.001209348E1 +3.068288000E3,5.925707402E1 +3.068553000E3,6.116769528E1 +3.068848000E3,5.907075037E1 +3.069160000E3,5.402384091E1 +3.069467000E3,6.078433547E1 +3.069706000E3,6.064305090E1 +3.069991000E3,6.099922555E1 +3.070247000E3,6.081028216E1 +3.070500000E3,6.857342881E1 +3.070795000E3,6.830085683E1 +3.071035000E3,7.092929468E1 +3.071334000E3,6.670654987E1 +3.071580000E3,6.198358410E1 +3.071845000E3,6.029427505E1 +3.072216000E3,6.271100503E1 +3.072476000E3,6.548403896E1 +3.072709000E3,6.655140024E1 +3.072958000E3,6.872933885E1 +3.073221000E3,6.840034062E1 +3.073524000E3,6.189262665E1 +3.073801000E3,6.315516618E1 +3.074029000E3,6.431689152E1 +3.074282000E3,7.008635825E1 +3.074531000E3,6.529488526E1 +3.074781000E3,5.362885622E1 +3.075079000E3,6.174622467E1 +3.075321000E3,6.106059522E1 +3.075569000E3,6.727558853E1 +3.075841000E3,6.068477373E1 +3.076089000E3,6.224550385E1 +3.076358000E3,6.049387981E1 +3.076618000E3,5.554290122E1 +3.076868000E3,5.232623619E1 +3.077136000E3,5.715980006E1 +3.077434000E3,6.112308912E1 +3.077738000E3,5.964598426E1 +3.077997000E3,5.774993649E1 +3.078301000E3,5.930552673E1 +3.078632000E3,6.204668908E1 +3.078903000E3,6.135182684E1 +3.079234000E3,6.010535577E1 +3.079530000E3,5.612975229E1 +3.079846000E3,5.894789721E1 +3.080130000E3,6.424282153E1 +3.080395000E3,6.696093787E1 +3.080696000E3,5.929656512E1 +3.080931000E3,5.577162965E1 +3.081168000E3,6.096321541E1 +3.081415000E3,6.147204445E1 +3.081708000E3,6.518353223E1 +3.082066000E3,6.565001970E1 +3.082347000E3,6.152216198E1 +3.082591000E3,6.232488129E1 +3.082884000E3,6.450829181E1 +3.083131000E3,6.727741702E1 +3.083373000E3,6.596172391E1 +3.083615000E3,6.588974420E1 +3.083909000E3,6.215985231E1 +3.084146000E3,5.417797447E1 +3.084444000E3,5.776086644E1 +3.084736000E3,6.145598006E1 +3.085067000E3,6.705675690E1 +3.085353000E3,7.032609091E1 +3.085621000E3,6.942809802E1 +3.085926000E3,6.673219093E1 +3.086170000E3,5.874483463E1 +3.086457000E3,6.163530440E1 +3.086730000E3,5.863155738E1 +3.086955000E3,5.804604701E1 +3.087247000E3,7.202263239E1 +3.087542000E3,6.907595594E1 +3.087796000E3,7.104760035E1 +3.088063000E3,6.060670654E1 +3.088371000E3,6.409876160E1 +3.088642000E3,6.504332531E1 +3.088891000E3,6.050178076E1 +3.089172000E3,5.988548041E1 +3.089448000E3,6.419311516E1 +3.089715000E3,6.072209436E1 +3.089992000E3,6.148544930E1 +3.090256000E3,6.667985585E1 +3.090551000E3,6.360479893E1 +3.090829000E3,6.675347002E1 +3.091081000E3,6.585951744E1 +3.091337000E3,5.998998345E1 +3.091582000E3,7.213751425E1 +3.091973000E3,7.002319175E1 +3.092225000E3,6.554991346E1 +3.092495000E3,5.438962824E1 +3.092757000E3,5.806427109E1 +3.093010000E3,5.611571138E1 +3.093290000E3,5.427298566E1 +3.093553000E3,6.332676554E1 +3.093801000E3,6.191283999E1 +3.094088000E3,6.222056485E1 +3.094383000E3,6.679558422E1 +3.094660000E3,6.396349695E1 +3.094980000E3,6.335657582E1 +3.095321000E3,6.368682935E1 +3.095574000E3,6.239728447E1 +3.095829000E3,6.560913932E1 +3.096083000E3,6.288470186E1 +3.096327000E3,6.063834800E1 +3.096611000E3,5.698542980E1 +3.096866000E3,6.214573666E1 +3.097125000E3,6.108001307E1 +3.097382000E3,6.098898235E1 +3.097639000E3,6.935379750E1 +3.097944000E3,6.076333803E1 +3.098235000E3,5.747447310E1 +3.098595000E3,5.896750888E1 +3.098845000E3,6.428262322E1 +3.099146000E3,6.073561603E1 +3.099435000E3,5.610862272E1 +3.099679000E3,5.808393750E1 +3.099971000E3,6.306244141E1 +3.100214000E3,6.493760740E1 +3.100511000E3,5.964091377E1 +3.100753000E3,5.949423253E1 +3.100995000E3,6.324186751E1 +3.101237000E3,6.294719776E1 +3.101481000E3,6.618420708E1 +3.101805000E3,6.039251647E1 +3.102105000E3,6.883376735E1 +3.102388000E3,6.215701199E1 +3.102635000E3,6.251944475E1 +3.102926000E3,6.387718652E1 +3.103175000E3,6.262879933E1 +3.103469000E3,6.094246273E1 +3.103717000E3,5.780442917E1 +3.104010000E3,5.805018882E1 +3.104245000E3,6.073911170E1 +3.104537000E3,5.820155990E1 +3.104880000E3,5.691870737E1 +3.105139000E3,5.609187778E1 +3.105418000E3,5.368790307E1 +3.105673000E3,5.733127796E1 +3.105933000E3,5.834617124E1 +3.106196000E3,5.665251568E1 +3.106447000E3,5.839993992E1 +3.106707000E3,5.765825797E1 +3.106989000E3,6.346036236E1 +3.107241000E3,6.088974139E1 +3.107536000E3,5.623231578E1 +3.107836000E3,5.905990454E1 +3.108208000E3,5.913546091E1 +3.108462000E3,5.921957697E1 +3.108732000E3,6.403378055E1 +3.109010000E3,6.829473891E1 +3.109237000E3,6.866131452E1 +3.109530000E3,5.759864554E1 +3.109769000E3,5.216447932E1 +3.110067000E3,5.887622687E1 +3.110356000E3,5.912152229E1 +3.110621000E3,6.343631440E1 +3.110862000E3,6.110189356E1 +3.111105000E3,5.925249209E1 +3.111441000E3,5.583559168E1 +3.111708000E3,6.397874973E1 +3.112049000E3,5.864630935E1 +3.112314000E3,5.876030726E1 +3.112620000E3,5.558460131E1 +3.112980000E3,5.336927775E1 +3.113232000E3,5.351895645E1 +3.113515000E3,4.932805120E1 +3.113763000E3,6.323075662E1 +3.114057000E3,6.375401647E1 +3.114318000E3,6.430798012E1 +3.114651000E3,6.745313705E1 +3.114909000E3,6.370697195E1 +3.115204000E3,6.719832935E1 +3.115517000E3,6.353352979E1 +3.115816000E3,6.421660294E1 +3.116074000E3,6.666449428E1 +3.116372000E3,6.209745804E1 +3.116612000E3,5.853853683E1 +3.116911000E3,6.153177442E1 +3.117151000E3,6.465277685E1 +3.117439000E3,6.054074617E1 +3.117698000E3,5.762180605E1 +3.118029000E3,5.904912096E1 +3.118292000E3,6.054469105E1 +3.118547000E3,6.570885599E1 +3.118854000E3,6.686989978E1 +3.119103000E3,6.506823644E1 +3.119359000E3,5.780133308E1 +3.119610000E3,5.983707630E1 +3.119896000E3,6.102798325E1 +3.120167000E3,5.940835035E1 +3.120446000E3,6.154008300E1 +3.120717000E3,6.031178539E1 +3.120969000E3,6.222997321E1 +3.121291000E3,6.676268308E1 +3.121532000E3,6.244629438E1 +3.121778000E3,6.014719673E1 +3.122038000E3,6.351124664E1 +3.122317000E3,5.786579019E1 +3.122607000E3,5.704033688E1 +3.122864000E3,5.941823253E1 +3.123160000E3,6.366298469E1 +3.123429000E3,6.545330590E1 +3.123678000E3,6.206143443E1 +3.123932000E3,6.250040348E1 +3.124250000E3,6.193784317E1 +3.124582000E3,6.679802083E1 +3.124888000E3,6.239911876E1 +3.125141000E3,6.227743005E1 +3.125407000E3,5.930162190E1 +3.125655000E3,5.692493613E1 +3.125897000E3,6.100851678E1 +3.126155000E3,6.356932883E1 +3.126470000E3,6.583742229E1 +3.126735000E3,6.828531785E1 +3.127049000E3,6.744954014E1 +3.127349000E3,6.892448306E1 +3.127620000E3,6.312172108E1 +3.127885000E3,6.549450530E1 +3.128150000E3,6.274114245E1 +3.128434000E3,5.987443555E1 +3.128694000E3,5.754092402E1 +3.128967000E3,6.140483336E1 +3.129224000E3,5.793735580E1 +3.129483000E3,5.640840091E1 +3.129735000E3,7.068460790E1 +3.130042000E3,6.831622259E1 +3.130308000E3,6.661131327E1 +3.130563000E3,7.032191033E1 +3.130897000E3,6.429012882E1 +3.131166000E3,6.890779868E1 +3.131427000E3,6.812897599E1 +3.131726000E3,6.440583932E1 +3.132039000E3,6.371305855E1 +3.132310000E3,6.071113649E1 +3.132582000E3,6.356904702E1 +3.132834000E3,6.335195410E1 +3.133078000E3,5.922748305E1 +3.133357000E3,5.790290676E1 +3.133581000E3,6.067150466E1 +3.133827000E3,5.936438225E1 +3.134075000E3,5.651144024E1 +3.134312000E3,5.707156804E1 +3.134564000E3,6.256442790E1 +3.134822000E3,5.680653319E1 +3.135099000E3,6.386946987E1 +3.135341000E3,6.183817556E1 +3.135588000E3,5.791592939E1 +3.135843000E3,5.415500200E1 +3.136159000E3,5.828393923E1 +3.136402000E3,5.584102234E1 +3.136645000E3,5.843965538E1 +3.136922000E3,6.032067675E1 +3.137231000E3,6.082235855E1 +3.137514000E3,6.216335250E1 +3.137763000E3,6.576895249E1 +3.138052000E3,5.935628673E1 +3.138348000E3,5.697436057E1 +3.138590000E3,6.713499986E1 +3.138833000E3,5.996032355E1 +3.139071000E3,6.566814076E1 +3.139366000E3,6.469315039E1 +3.139607000E3,6.414816039E1 +3.139901000E3,6.238348704E1 +3.140144000E3,5.975478602E1 +3.140477000E3,5.617333113E1 +3.140789000E3,6.140881460E1 +3.141038000E3,5.760925345E1 +3.141323000E3,5.813474075E1 +3.141616000E3,6.190304914E1 +3.141899000E3,5.853813516E1 +3.142123000E3,6.019478920E1 +3.142387000E3,5.824830032E1 +3.142639000E3,6.031650371E1 +3.142898000E3,5.874305926E1 +3.143211000E3,6.365997735E1 +3.143459000E3,6.182267241E1 +3.143814000E3,6.153305629E1 +3.144076000E3,6.040235966E1 +3.144345000E3,6.279707978E1 +3.144591000E3,6.261441373E1 +3.144837000E3,5.722591859E1 +3.145082000E3,5.791919274E1 +3.145387000E3,6.142016587E1 +3.145678000E3,5.996802308E1 +3.145994000E3,5.761245992E1 +3.146269000E3,5.915341256E1 +3.146531000E3,5.679987844E1 +3.146814000E3,6.228452904E1 +3.147163000E3,6.038592359E1 +3.147440000E3,6.662509726E1 +3.147705000E3,5.864713600E1 +3.147961000E3,6.383827006E1 +3.148228000E3,6.445939632E1 +3.148543000E3,6.206597752E1 +3.148800000E3,6.082056407E1 +3.149046000E3,5.872798480E1 +3.149340000E3,5.792404132E1 +3.149585000E3,5.917409009E1 +3.149845000E3,5.619795947E1 +3.150164000E3,6.447379623E1 +3.150501000E3,6.336546747E1 +3.150798000E3,6.022605646E1 +3.151059000E3,5.837139298E1 +3.151360000E3,5.721847889E1 +3.151614000E3,7.085699981E1 +3.151908000E3,6.031233854E1 +3.152206000E3,6.170839562E1 +3.152452000E3,6.336115962E1 +3.152697000E3,6.732286145E1 +3.152943000E3,6.043278366E1 +3.153235000E3,5.822950572E1 +3.153537000E3,6.155234216E1 +3.153813000E3,5.671966020E1 +3.154078000E3,5.613348243E1 +3.154333000E3,5.384913785E1 +3.154580000E3,5.739778382E1 +3.154869000E3,5.617144196E1 +3.155103000E3,5.699346940E1 +3.155351000E3,6.356393037E1 +3.155653000E3,5.483372318E1 +3.155949000E3,5.806865262E1 +3.156195000E3,5.725879338E1 +3.156459000E3,5.708272088E1 +3.156776000E3,5.736330762E1 +3.157028000E3,5.620178265E1 +3.157280000E3,5.557503250E1 +3.157521000E3,6.379766868E1 +3.157864000E3,6.175462639E1 +3.158113000E3,5.970375584E1 +3.158365000E3,5.482220327E1 +3.158625000E3,6.094938302E1 +3.158872000E3,6.189076140E1 +3.159128000E3,6.365906369E1 +3.159385000E3,6.365252593E1 +3.159699000E3,6.421784723E1 +3.160039000E3,5.952347777E1 +3.160337000E3,6.582170091E1 +3.160643000E3,6.400621400E1 +3.160905000E3,5.982923632E1 +3.161162000E3,5.912958512E1 +3.161449000E3,5.744161350E1 +3.161722000E3,6.208953034E1 +3.161984000E3,6.743490019E1 +3.162228000E3,5.893358785E1 +3.162506000E3,6.260442429E1 +3.162777000E3,6.054589944E1 +3.163072000E3,5.958101250E1 +3.163380000E3,5.756716970E1 +3.163623000E3,5.897741262E1 +3.163916000E3,5.199350029E1 +3.164173000E3,5.607364633E1 +3.164444000E3,6.846587546E1 +3.164756000E3,5.833953537E1 +3.165011000E3,6.699601536E1 +3.165255000E3,6.024033326E1 +3.165530000E3,5.636786936E1 +3.165825000E3,5.917346905E1 +3.166077000E3,5.684739711E1 +3.166343000E3,5.441684119E1 +3.166607000E3,5.708423030E1 +3.166871000E3,5.726160097E1 +3.167212000E3,5.795085756E1 +3.167513000E3,5.359033433E1 +3.167800000E3,5.481028168E1 +3.168051000E3,5.771426852E1 +3.168321000E3,5.720698183E1 +3.168574000E3,6.029484328E1 +3.168847000E3,6.594273179E1 +3.169141000E3,5.814954146E1 +3.169451000E3,5.741553332E1 +3.169717000E3,5.474949866E1 +3.170064000E3,5.858087337E1 +3.170388000E3,5.901398101E1 +3.170689000E3,6.599046976E1 +3.170942000E3,6.777823262E1 +3.171184000E3,6.339704259E1 +3.171437000E3,5.678237753E1 +3.171694000E3,6.067324941E1 +3.171975000E3,6.337570500E1 +3.172215000E3,6.060254578E1 +3.172509000E3,6.511602204E1 +3.172792000E3,6.491523998E1 +3.173086000E3,6.236437487E1 +3.173442000E3,6.132637014E1 +3.173725000E3,5.575670785E1 +3.173997000E3,5.450541115E1 +3.174243000E3,5.816223835E1 +3.174516000E3,5.991084873E1 +3.174771000E3,5.959264792E1 +3.175022000E3,6.001504494E1 +3.175268000E3,5.794233494E1 +3.175510000E3,5.875384007E1 +3.175752000E3,6.582497874E1 +3.176001000E3,6.385809704E1 +3.176310000E3,6.575292490E1 +3.176700000E3,6.328122862E1 +3.176947000E3,6.160374932E1 +3.177205000E3,6.233605233E1 +3.177480000E3,5.746120395E1 +3.177733000E3,5.491961653E1 +3.178002000E3,5.346590976E1 +3.178308000E3,4.910433719E1 +3.178598000E3,5.548086035E1 +3.178876000E3,5.834728013E1 +3.179129000E3,5.722852381E1 +3.179407000E3,5.371032540E1 +3.179686000E3,5.375017527E1 +3.180066000E3,5.741446005E1 +3.180325000E3,5.595914402E1 +3.180624000E3,5.784989425E1 +3.180867000E3,5.818330240E1 +3.181112000E3,5.651638359E1 +3.181407000E3,5.400925398E1 +3.181645000E3,5.134681346E1 +3.181939000E3,5.540645654E1 +3.182189000E3,5.603348674E1 +3.182489000E3,5.612576596E1 +3.182726000E3,5.412821683E1 +3.183072000E3,5.364995955E1 +3.183373000E3,5.685067634E1 +3.183631000E3,5.292396423E1 +3.183913000E3,5.037305724E1 +3.184139000E3,5.458652507E1 +3.184386000E3,5.336216390E1 +3.184625000E3,5.355204553E1 +3.184861000E3,5.798216811E1 +3.185170000E3,5.037998219E1 +3.185412000E3,5.253320042E1 +3.185661000E3,5.864558083E1 +3.185944000E3,5.568855775E1 +3.186307000E3,6.065674046E1 +3.186594000E3,5.486017232E1 +3.186846000E3,5.354898396E1 +3.187128000E3,5.606629368E1 +3.187373000E3,5.887335608E1 +3.187646000E3,5.932986575E1 +3.187996000E3,5.618144782E1 +3.188254000E3,5.279151533E1 +3.188538000E3,5.980979660E1 +3.188819000E3,5.959008295E1 +3.189058000E3,5.757326838E1 +3.189324000E3,5.814251633E1 +3.189681000E3,6.715432083E1 +3.189929000E3,5.659786492E1 +3.190183000E3,6.813933576E1 +3.190493000E3,6.423896785E1 +3.190762000E3,6.115594562E1 +3.191063000E3,6.466877383E1 +3.191295000E3,6.400176112E1 +3.191543000E3,6.061189134E1 +3.191813000E3,6.334758009E1 +3.192062000E3,6.268892194E1 +3.192384000E3,6.255649695E1 +3.192688000E3,6.440152216E1 +3.193095000E3,6.083356984E1 +3.193368000E3,5.702207605E1 +3.193630000E3,6.129862703E1 +3.193931000E3,6.511359313E1 +3.194208000E3,6.424113032E1 +3.194458000E3,6.277957456E1 +3.194751000E3,6.067489213E1 +3.195007000E3,6.044409325E1 +3.195267000E3,5.902485869E1 +3.195523000E3,5.940450479E1 +3.195769000E3,5.629667180E1 +3.196103000E3,5.773687048E1 +3.196362000E3,5.275604571E1 +3.196676000E3,5.321996877E1 +3.196932000E3,4.952922772E1 +3.197191000E3,5.411849627E1 +3.197458000E3,5.575997519E1 +3.197718000E3,5.782402980E1 +3.197982000E3,6.092045522E1 +3.198228000E3,6.504329265E1 +3.198474000E3,5.972589974E1 +3.198713000E3,5.816644178E1 +3.198958000E3,6.190720604E1 +3.199249000E3,6.026051864E1 +3.199481000E3,6.064697026E1 +3.199744000E3,5.715218400E1 +3.200003000E3,5.509276249E1 +3.200281000E3,5.035485844E1 +3.200607000E3,5.745123346E1 +3.200874000E3,5.874041571E1 +3.201157000E3,6.540993071E1 +3.201407000E3,6.592699897E1 +3.201730000E3,5.826687879E1 +3.201982000E3,5.966898415E1 +3.202228000E3,5.928022084E1 +3.202546000E3,5.492659239E1 +3.202811000E3,5.843773228E1 +3.203091000E3,5.615478265E1 +3.203365000E3,5.378265559E1 +3.203611000E3,5.724493737E1 +3.203868000E3,5.517839982E1 +3.204137000E3,5.166422622E1 +3.204439000E3,5.966362579E1 +3.204692000E3,5.837831137E1 +3.204952000E3,5.873474045E1 +3.205216000E3,6.025432286E1 +3.205460000E3,5.709891269E1 +3.205710000E3,5.946766606E1 +3.206062000E3,5.575402329E1 +3.206367000E3,5.597615265E1 +3.206620000E3,5.417374311E1 +3.206869000E3,5.785505194E1 +3.207152000E3,5.973144393E1 +3.207405000E3,5.494944595E1 +3.207684000E3,5.859159641E1 +3.207982000E3,5.909726368E1 +3.208273000E3,6.221796591E1 +3.208541000E3,6.248597715E1 +3.208787000E3,6.143432195E1 +3.209043000E3,5.767415987E1 +3.209357000E3,6.087003136E1 +3.209636000E3,5.816954701E1 +3.209920000E3,5.644196424E1 +3.210232000E3,5.726504339E1 +3.210505000E3,5.384487818E1 +3.210769000E3,6.092886049E1 +3.211044000E3,5.910647270E1 +3.211306000E3,5.855040927E1 +3.211560000E3,6.886189365E1 +3.211803000E3,6.193548709E1 +3.212075000E3,5.895667088E1 +3.212320000E3,5.613734816E1 +3.212669000E3,6.365011223E1 +3.212934000E3,6.616065582E1 +3.213195000E3,4.911720228E1 +3.213460000E3,5.429539168E1 +3.213713000E3,5.374714305E1 +3.213991000E3,5.505703483E1 +3.214231000E3,5.216197587E1 +3.214486000E3,6.958974683E1 +3.214787000E3,6.410499727E1 +3.215047000E3,5.795707420E1 +3.215308000E3,6.210641451E1 +3.215581000E3,5.724864620E1 +3.215943000E3,5.588397230E1 +3.216221000E3,5.281586206E1 +3.216477000E3,5.616597876E1 +3.216735000E3,7.016181845E1 +3.216992000E3,7.008234703E1 +3.217238000E3,6.883905131E1 +3.217482000E3,6.039428517E1 +3.217722000E3,6.572225500E1 +3.217971000E3,6.862082655E1 +3.218221000E3,6.392739620E1 +3.218481000E3,6.757625304E1 +3.218798000E3,6.468895575E1 +3.219137000E3,5.941097234E1 +3.219443000E3,6.639331379E1 +3.219715000E3,6.512137194E1 +3.219985000E3,6.137345425E1 +3.220244000E3,6.566739727E1 +3.220494000E3,5.684090738E1 +3.220758000E3,4.865476042E1 +3.221022000E3,5.571447424E1 +3.221324000E3,5.050200483E1 +3.221601000E3,5.262698993E1 +3.221858000E3,5.385544431E1 +3.222185000E3,5.793526709E1 +3.222548000E3,5.957102097E1 +3.222796000E3,5.026005559E1 +3.223068000E3,5.164515600E1 +3.223344000E3,6.575405490E1 +3.223598000E3,6.925353270E1 +3.223876000E3,5.909751181E1 +3.224152000E3,5.561020058E1 +3.224416000E3,5.257890354E1 +3.224662000E3,5.262446891E1 +3.224954000E3,5.599583257E1 +3.225202000E3,5.286294623E1 +3.225483000E3,5.049109924E1 +3.225830000E3,6.154494550E1 +3.226096000E3,5.433068412E1 +3.226350000E3,5.256602683E1 +3.226652000E3,5.283535150E1 +3.226989000E3,5.811852242E1 +3.227251000E3,5.842389129E1 +3.227505000E3,5.524471208E1 +3.227782000E3,6.207780754E1 +3.228053000E3,6.165130850E1 +3.228302000E3,5.818085510E1 +3.228557000E3,5.646455559E1 +3.228823000E3,5.903487317E1 +3.229201000E3,5.460588060E1 +3.229471000E3,5.534537953E1 +3.229720000E3,5.492103159E1 +3.229976000E3,5.474982433E1 +3.230276000E3,6.311967749E1 +3.230531000E3,6.144237593E1 +3.230845000E3,6.204497775E1 +3.231123000E3,6.192920277E1 +3.231382000E3,6.726064707E1 +3.231675000E3,5.951322284E1 +3.231970000E3,5.620608761E1 +3.232324000E3,5.597726308E1 +3.232555000E3,5.737347613E1 +3.232845000E3,5.515502781E1 +3.233172000E3,5.977186730E1 +3.233435000E3,6.131606000E1 +3.233742000E3,5.610580070E1 +3.234000000E3,5.978218601E1 +3.234272000E3,6.319970701E1 +3.234581000E3,5.608562509E1 +3.234862000E3,6.169746582E1 +3.235159000E3,6.105762669E1 +3.235416000E3,5.369522011E1 +3.235667000E3,6.580487109E1 +3.235906000E3,5.797374086E1 +3.236200000E3,6.981267784E1 +3.236445000E3,6.229515865E1 +3.236695000E3,6.858181426E1 +3.236976000E3,5.740787399E1 +3.237218000E3,5.455964692E1 +3.237457000E3,7.204325578E1 +3.237720000E3,6.142914611E1 +3.238013000E3,5.768794211E1 +3.238280000E3,5.732491467E1 +3.238580000E3,5.793744264E1 +3.238882000E3,5.626325471E1 +3.239149000E3,5.661724856E1 +3.239424000E3,6.969605219E1 +3.239726000E3,6.482965407E1 +3.239976000E3,5.947270091E1 +3.240278000E3,5.913422796E1 +3.240576000E3,5.630232959E1 +3.240877000E3,5.956366293E1 +3.241128000E3,6.177688280E1 +3.241391000E3,5.851951662E1 +3.241664000E3,5.959787493E1 +3.241944000E3,5.765523372E1 +3.242310000E3,5.961443978E1 +3.242602000E3,5.811194000E1 +3.242910000E3,5.765320401E1 +3.243188000E3,6.631148602E1 +3.243420000E3,6.916377121E1 +3.243673000E3,6.435158828E1 +3.243925000E3,6.486926440E1 +3.244170000E3,5.506348984E1 +3.244475000E3,6.702899260E1 +3.244772000E3,6.244838658E1 +3.245003000E3,6.057959417E1 +3.245328000E3,6.103137126E1 +3.245581000E3,5.723671640E1 +3.245864000E3,5.125127512E1 +3.246123000E3,5.748187394E1 +3.246395000E3,6.148075018E1 +3.246669000E3,6.226010686E1 +3.246940000E3,5.273573389E1 +3.247233000E3,5.462141876E1 +3.247482000E3,5.946160846E1 +3.247728000E3,6.623014757E1 +3.248041000E3,5.823129903E1 +3.248289000E3,5.689561843E1 +3.248538000E3,5.851473913E1 +3.248910000E3,5.778207994E1 +3.249187000E3,6.109108533E1 +3.249462000E3,6.368024039E1 +3.249726000E3,6.527718864E1 +3.249983000E3,5.855658653E1 +3.250281000E3,5.718860903E1 +3.250534000E3,5.946900486E1 +3.250785000E3,5.688578668E1 +3.251033000E3,5.444863300E1 +3.251316000E3,5.885016251E1 +3.251570000E3,6.172482417E1 +3.251833000E3,6.833245599E1 +3.252200000E3,6.656973280E1 +3.252441000E3,6.663686281E1 +3.252721000E3,6.380106140E1 +3.252991000E3,6.113258977E1 +3.253242000E3,7.270243700E1 +3.253457000E3,7.442711013E1 +3.253706000E3,7.097589831E1 +3.253999000E3,5.740107596E1 +3.254237000E3,5.407351324E1 +3.254532000E3,6.235563554E1 +3.254777000E3,6.148535018E1 +3.255085000E3,6.767985005E1 +3.255346000E3,5.893302101E1 +3.255628000E3,5.834235484E1 +3.255897000E3,6.152524318E1 +3.256146000E3,6.124474706E1 +3.256419000E3,5.928557591E1 +3.256642000E3,5.798678480E1 +3.256921000E3,5.800318977E1 +3.257149000E3,5.813391626E1 +3.257392000E3,6.200496820E1 +3.257645000E3,6.268368020E1 +3.257945000E3,6.783162804E1 +3.258296000E3,7.343015115E1 +3.258556000E3,7.258165803E1 +3.258805000E3,6.753466802E1 +3.259117000E3,7.134403593E1 +3.259421000E3,6.813653179E1 +3.259673000E3,6.449045726E1 +3.259939000E3,7.144310958E1 +3.260188000E3,6.619195201E1 +3.260438000E3,6.990193438E1 +3.260692000E3,6.791067771E1 +3.260944000E3,7.014061601E1 +3.261191000E3,7.271368424E1 +3.261532000E3,6.889323528E1 +3.261794000E3,6.087932672E1 +3.262047000E3,6.139975131E1 +3.262322000E3,6.684035582E1 +3.262586000E3,6.977079140E1 +3.262861000E3,6.711211223E1 +3.263137000E3,6.891542739E1 +3.263415000E3,6.450575202E1 +3.263671000E3,6.375083447E1 +3.263946000E3,6.525419018E1 +3.264250000E3,6.323969714E1 +3.264517000E3,7.351653517E1 +3.264813000E3,7.240916805E1 +3.265107000E3,6.991986455E1 +3.265349000E3,6.767718353E1 +3.265598000E3,7.020318016E1 +3.265847000E3,6.593396207E1 +3.266149000E3,6.776886494E1 +3.266400000E3,6.796917668E1 +3.266653000E3,6.234495715E1 +3.266897000E3,6.492303298E1 +3.267153000E3,6.551968402E1 +3.267398000E3,6.154456079E1 +3.267647000E3,6.087933145E1 +3.267896000E3,6.053677169E1 +3.268248000E3,6.893351216E1 +3.268513000E3,6.695525456E1 +3.268817000E3,6.263553940E1 +3.269070000E3,5.965971741E1 +3.269315000E3,6.136430702E1 +3.269582000E3,7.398506568E1 +3.269828000E3,7.145137487E1 +3.270128000E3,7.238266470E1 +3.270371000E3,7.289527120E1 +3.270623000E3,7.428636164E1 +3.270931000E3,7.248535741E1 +3.271185000E3,7.399445608E1 +3.271518000E3,7.355251323E1 +3.271795000E3,7.296660624E1 +3.272081000E3,7.131368475E1 +3.272358000E3,7.068792091E1 +3.272581000E3,6.623699177E1 +3.272835000E3,5.258987188E1 +3.273093000E3,6.044165509E1 +3.273337000E3,6.879817511E1 +3.273635000E3,6.970693453E1 +3.273931000E3,7.169623139E1 +3.274180000E3,7.112396098E1 +3.274428000E3,7.190035192E1 +3.274761000E3,7.089393329E1 +3.275038000E3,6.995869622E1 +3.275323000E3,6.900781199E1 +3.275569000E3,6.766263448E1 +3.275860000E3,6.881814388E1 +3.276116000E3,6.821596427E1 +3.276370000E3,6.896702672E1 +3.276649000E3,6.827119542E1 +3.276914000E3,6.795818984E1 +3.277171000E3,7.025945887E1 +3.277482000E3,6.685661764E1 +3.277741000E3,6.810082518E1 +3.278078000E3,6.902136690E1 +3.278358000E3,6.568611650E1 +3.278604000E3,7.123802039E1 +3.278848000E3,6.300940961E1 +3.279144000E3,6.292057856E1 +3.279382000E3,6.654167697E1 +3.279622000E3,6.808014942E1 +3.279917000E3,6.902808966E1 +3.280160000E3,6.685153426E1 +3.280471000E3,6.435621527E1 +3.280770000E3,6.765080490E1 +3.281059000E3,6.808248309E1 +3.281352000E3,6.477485011E1 +3.281602000E3,5.628454157E1 +3.281867000E3,5.800927668E1 +3.282130000E3,7.131716325E1 +3.282389000E3,7.355208108E1 +3.282663000E3,7.108584109E1 +3.282932000E3,5.710440961E1 +3.283191000E3,5.329699257E1 +3.283451000E3,5.003319724E1 +3.283709000E3,5.081704645E1 +3.284003000E3,5.075383483E1 +3.284259000E3,5.431712692E1 +3.284628000E3,5.277582101E1 +3.284917000E3,6.061307876E1 +3.285214000E3,6.168657926E1 +3.285472000E3,5.854988033E1 +3.285744000E3,4.913527641E1 +3.285999000E3,5.563664353E1 +3.286250000E3,5.841488419E1 +3.286517000E3,6.437604518E1 +3.286777000E3,6.124264602E1 +3.287035000E3,5.886049633E1 +3.287300000E3,6.196549102E1 +3.287630000E3,6.776239267E1 +3.287951000E3,6.702605133E1 +3.288259000E3,5.376695086E1 +3.288499000E3,5.095339550E1 +3.288807000E3,5.078317550E1 +3.289117000E3,5.659564827E1 +3.289411000E3,7.136818215E1 +3.289684000E3,6.629708396E1 +3.289982000E3,7.133804213E1 +3.290271000E3,6.994811010E1 +3.290544000E3,6.532422657E1 +3.290800000E3,6.451013008E1 +3.291132000E3,6.261305598E1 +3.291418000E3,6.696223022E1 +3.291676000E3,4.827412656E1 +3.291930000E3,4.724575587E1 +3.292202000E3,4.846609938E1 +3.292501000E3,5.276700476E1 +3.292822000E3,5.071547801E1 +3.293065000E3,4.944777186E1 +3.293349000E3,4.466809801E1 +3.293583000E3,4.432750067E1 +3.293832000E3,5.165471909E1 +3.294078000E3,4.606912616E1 +3.294427000E3,4.826074528E1 +3.294712000E3,4.434240888E1 +3.294985000E3,4.684583968E1 +3.295286000E3,5.104787864E1 +3.295548000E3,4.839146586E1 +3.295807000E3,5.479537456E1 +3.296066000E3,5.055213000E1 +3.296324000E3,3.933656037E1 +3.296585000E3,4.513652817E1 +3.296840000E3,4.805617654E1 +3.297099000E3,4.453428427E1 +3.297354000E3,5.205427791E1 +3.297705000E3,5.001223291E1 +3.297948000E3,5.342697607E1 +3.298200000E3,5.619467550E1 +3.298461000E3,5.565459347E1 +3.298738000E3,5.819577446E1 +3.298988000E3,5.077826383E1 +3.299236000E3,5.142261821E1 +3.299478000E3,5.610754709E1 +3.299775000E3,5.248015066E1 +3.300011000E3,4.742520943E1 +3.300325000E3,5.519481303E1 +3.300626000E3,4.628613419E1 +3.300959000E3,4.430731849E1 +3.301224000E3,4.380193782E1 +3.301473000E3,4.690647127E1 +3.301746000E3,4.845294386E1 +3.302057000E3,4.912389116E1 +3.302307000E3,5.155191791E1 +3.302563000E3,5.240902416E1 +3.302820000E3,4.677306339E1 +3.303083000E3,5.037145513E1 +3.303327000E3,4.506752152E1 +3.303573000E3,4.920686196E1 +3.303857000E3,4.935493485E1 +3.304189000E3,4.415801479E1 +3.304459000E3,4.423531181E1 +3.304768000E3,3.874162391E1 +3.305030000E3,4.189958295E1 +3.305333000E3,4.005870516E1 +3.305579000E3,5.072183491E1 +3.305843000E3,4.113754863E1 +3.306140000E3,5.548273149E1 +3.306383000E3,5.383424402E1 +3.306628000E3,5.205779319E1 +3.306877000E3,4.592085607E1 +3.307206000E3,5.092451979E1 +3.307449000E3,4.823039740E1 +3.307720000E3,5.026090042E1 +3.307982000E3,5.794901070E1 +3.308198000E3,5.239372011E1 +3.308502000E3,5.024517162E1 +3.308742000E3,4.253471720E1 +3.309044000E3,4.105523794E1 +3.309340000E3,3.028117703E1 +3.309596000E3,2.809150222E1 +3.309864000E3,2.626060468E1 +3.310135000E3,5.055452447E1 +3.310501000E3,7.199271156E1 +3.310777000E3,7.172468430E1 +3.311045000E3,7.282926204E1 +3.311313000E3,7.145580608E1 +3.311562000E3,7.218798353E1 +3.311867000E3,7.081603642E1 +3.312107000E3,7.122522782E1 +3.312348000E3,7.013128466E1 +3.312672000E3,7.138239962E1 +3.312976000E3,7.589001323E1 +3.313216000E3,6.988466628E1 +3.313506000E3,6.521999768E1 +3.313853000E3,5.781158269E1 +3.314129000E3,5.698768013E1 +3.314381000E3,5.954050680E1 +3.314636000E3,5.529467486E1 +3.314903000E3,6.884377149E1 +3.315163000E3,7.293133775E1 +3.315448000E3,7.186875504E1 +3.315697000E3,6.942752239E1 +3.315995000E3,6.899930460E1 +3.316247000E3,6.333687203E1 +3.316557000E3,6.820286469E1 +3.316856000E3,7.371764624E1 +3.317124000E3,7.475494405E1 +3.317411000E3,7.135849387E1 +3.317718000E3,5.726081152E1 +3.317965000E3,5.650406291E1 +3.318233000E3,4.901561410E1 +3.318490000E3,6.881993797E1 +3.318742000E3,7.251465406E1 +3.319010000E3,6.395213402E1 +3.319311000E3,7.197127027E1 +3.319615000E3,6.948849738E1 +3.319862000E3,6.664503435E1 +3.320187000E3,6.933008182E1 +3.320443000E3,6.121514242E1 +3.320753000E3,7.017439611E1 +3.321063000E3,7.393277725E1 +3.321329000E3,7.045535337E1 +3.321643000E3,6.985180357E1 +3.321896000E3,7.158196073E1 +3.322168000E3,6.999348148E1 +3.322483000E3,6.872091406E1 +3.322823000E3,6.386396976E1 +3.323116000E3,6.891641311E1 +3.323355000E3,6.790436633E1 +3.323733000E3,6.190629476E1 +3.324010000E3,6.307072034E1 +3.324306000E3,6.459812141E1 +3.324591000E3,6.928529051E1 +3.324846000E3,6.953301961E1 +3.325158000E3,6.946121501E1 +3.325471000E3,6.177266257E1 +3.325739000E3,6.057146439E1 +3.326000000E3,6.021658005E1 +3.326269000E3,6.588088303E1 +3.326536000E3,6.594068529E1 +3.326797000E3,5.957632846E1 +3.327117000E3,5.830018402E1 +3.327415000E3,5.952820917E1 +3.327678000E3,5.996997483E1 +3.327928000E3,6.374276040E1 +3.328204000E3,6.484785648E1 +3.328504000E3,6.253699213E1 +3.328743000E3,6.495848159E1 +3.329001000E3,6.390198219E1 +3.329317000E3,6.107203426E1 +3.329613000E3,6.678300135E1 +3.329901000E3,6.048531373E1 +3.330164000E3,6.806621622E1 +3.330501000E3,6.592361883E1 +3.330795000E3,6.652249790E1 +3.331059000E3,6.079261624E1 +3.331342000E3,7.055285274E1 +3.331620000E3,6.885169705E1 +3.331870000E3,6.676175072E1 +3.332125000E3,6.653456857E1 +3.332410000E3,6.539948315E1 +3.332658000E3,6.741723145E1 +3.332915000E3,5.982571500E1 +3.333236000E3,7.234399288E1 +3.333559000E3,7.555637810E1 +3.333801000E3,7.132946849E1 +3.334053000E3,7.012473325E1 +3.334345000E3,7.083313400E1 +3.334658000E3,6.159204912E1 +3.334951000E3,5.416652771E1 +3.335187000E3,5.331536045E1 +3.335488000E3,5.516853140E1 +3.335780000E3,5.755380245E1 +3.336028000E3,6.034949591E1 +3.336335000E3,5.933559907E1 +3.336577000E3,6.200660494E1 +3.336975000E3,6.752581884E1 +3.337230000E3,6.552308109E1 +3.337509000E3,6.043162012E1 +3.337804000E3,6.346167875E1 +3.338097000E3,5.762665769E1 +3.338354000E3,6.046465836E1 +3.338657000E3,5.841838084E1 +3.338937000E3,5.426549819E1 +3.339182000E3,5.312925890E1 +3.339425000E3,5.904532039E1 +3.339705000E3,5.548841740E1 +3.339970000E3,6.467955136E1 +3.340311000E3,6.518540616E1 +3.340567000E3,6.130157495E1 +3.340843000E3,4.234380604E1 +3.341102000E3,3.685811557E1 +3.341367000E3,5.229521155E1 +3.341631000E3,4.577123603E1 +3.341913000E3,5.522804687E1 +3.342191000E3,7.219670231E1 +3.342497000E3,6.138541536E1 +3.342739000E3,5.883033505E1 +3.342994000E3,5.692990468E1 +3.343272000E3,5.784770175E1 +3.343584000E3,5.851150722E1 +3.343847000E3,7.127137910E1 +3.344137000E3,7.004437015E1 +3.344432000E3,6.719880262E1 +3.344677000E3,6.266500726E1 +3.344966000E3,6.662051616E1 +3.345209000E3,6.259160849E1 +3.345462000E3,6.521765959E1 +3.345762000E3,6.373477950E1 +3.346056000E3,5.976833176E1 +3.346294000E3,5.557373783E1 +3.346597000E3,5.486821605E1 +3.346842000E3,4.854970484E1 +3.347096000E3,6.338774242E1 +3.347415000E3,6.646909489E1 +3.347712000E3,6.370164725E1 +3.347950000E3,6.577012972E1 +3.348257000E3,6.536203326E1 +3.348509000E3,5.777033235E1 +3.348799000E3,6.942121279E1 +3.349070000E3,6.552465655E1 +3.349329000E3,6.400867966E1 +3.349583000E3,5.955829212E1 +3.349911000E3,6.233007104E1 +3.350154000E3,7.360271557E1 +3.350432000E3,7.402471070E1 +3.350716000E3,7.225249055E1 +3.350966000E3,6.654334459E1 +3.351200000E3,6.590758849E1 +3.351507000E3,6.143698167E1 +3.351805000E3,7.197722167E1 +3.352079000E3,6.778594348E1 +3.352307000E3,5.712392879E1 +3.352566000E3,5.659236121E1 +3.352870000E3,5.352359430E1 +3.353127000E3,5.362353429E1 +3.353366000E3,5.964860406E1 +3.353638000E3,7.164177428E1 +3.353890000E3,6.730234717E1 +3.354173000E3,5.336089185E1 +3.354435000E3,4.770751864E1 +3.354689000E3,4.833001031E1 +3.354956000E3,4.464972004E1 +3.355220000E3,6.809720152E1 +3.355493000E3,7.032616040E1 +3.355723000E3,7.137092547E1 +3.356052000E3,7.106236065E1 +3.356287000E3,7.302101107E1 +3.356599000E3,6.868512076E1 +3.356867000E3,7.134905494E1 +3.357133000E3,7.032184319E1 +3.357463000E3,6.484515560E1 +3.357753000E3,5.949029357E1 +3.358081000E3,6.553405106E1 +3.358385000E3,5.460622041E1 +3.358634000E3,4.798111952E1 +3.358902000E3,5.356090224E1 +3.359186000E3,5.091993104E1 +3.359516000E3,5.980463665E1 +3.359805000E3,5.623340998E1 +3.360124000E3,4.885342740E1 +3.360404000E3,4.536632542E1 +3.360660000E3,5.726647509E1 +3.360941000E3,6.266477325E1 +3.361245000E3,5.265432523E1 +3.361521000E3,4.746518361E1 +3.361777000E3,5.341135388E1 +3.362038000E3,5.094337921E1 +3.362292000E3,5.832737886E1 +3.362616000E3,5.247742127E1 +3.363049000E3,5.123926483E1 +3.363313000E3,4.482127206E1 +3.363600000E3,4.813050338E1 +3.363848000E3,5.751744958E1 +3.364157000E3,5.045245795E1 diff --git a/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a6/Picture.java b/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a6/Picture.java new file mode 100644 index 0000000..8df3d55 --- /dev/null +++ b/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a6/Picture.java @@ -0,0 +1,699 @@ +import java.awt.image.*; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.BasicStroke; +import java.util.Vector; +import javax.imageio.*; +import java.io.*; +import java.awt.*; +import javax.swing.*; +import java.util.Random; +import java.awt.geom.AffineTransform; +/** + * + * Bildklasse für die Simulation von Processing-Befehlen + * + * Diese Klasse stellt ein BufferedImage bereit, in das mit Processing-Befehlen gezeichnet + * werden kann. + * Zusätzlich kann ein Bildanzeiger über jede Änderung des Bildes informiert werden, + * um "Zurück"-Befehle zu ermöglichen. Der Bildanzeiger ist entweder eine normale Java + * ScrollPane oder ein Actor aus Greenfoot. + * Die Dokumentation der einzelnen Zeichenmethoden ist der Processing-Reference + * (https://processing.org/reference/ steht unter CC-Lizenz: https://creativecommons.org/) + * entnommen und mit Deepl.com ins Deutsche übersetzt. + * + * @version 1.0 from 23.01.2019 + * @author Thomas Schaller (ZPG Informatik Klasse 9) + */ + +public class Picture{ + + // Einstellungmöglichkeiten für das Zeichnen von Rechtecken und Ellipsen + // RADIUS = Mittelpunkt+Radius wird gegeben, CENTER = Mittelpunkt und Breite/Höhe wird gegeben, + // CORNER = Linke obere Ecke + Breite/Höhe, CORNERS = Linke obere und rechte untere Ecke + public static final int RADIUS = 1; + public static final int CENTER = 2; + public static final int CORNER = 3; + public static final int CORNERS = 4; + + // gespeichertes Bild, + private BufferedImage image; + + // aktuelle Farbeinstellungen + private Color background; + private Color pencolor; + private Color fillcolor; + + // aktuelle Stiftdicke + private double stroke; + + // akkteller Koordinatenmodus von Rechtecken und Ellipsen + private int ellipseMode = CENTER; + private int rectMode = CORNER; + + // aktueller Font + private Font textfont = null; + + // muss ein Bildanzeiger benachrichtigt werden + private PictureViewer observer = null; + private boolean autorefresh = true; + + /** + * Erzeugt ein Bild mit Standardgröße 500x400 + */ + public Picture() { + this(500,400); + } + + /** + * Erzeugt ein Bild der angegeben Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public Picture(int width, int height) { + this(width,height, "D0D0D0"); + } + + /** + * Erzeugt ein Bild aus einer Datei + * @param filename Dateiname des Bildes + */ + public Picture(String filename) { + load(filename); + } + + /** + * Erzeugt ein Bild der angegebenen Größe mit festgelegtem Hintergrund + * @param width Breite des Bildes + * @param height Höhe des Bildes + * @param background Farbe des Hintergrunds + */ + public Picture(int width, int height, String background) { + this.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + this.background = decode(background); + this.pencolor = new Color(0,0,0); + this.stroke = 1; + this.fillcolor = null; + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(this.background); + g.fillRect(0,0,width-1, height-1); + } + + /** + * Legt fest, wer das Bild anzeigt. + * Diese ermöglicht die Benachrichtung des Observers, wenn sich das Bild ändert. + * @param observer Anzeiger des Bildes + */ + + public void setObserver(PictureViewer observer) { + this.observer= observer; + } + + /** + * Direktes Setzen des Bildes (für interne Zwecke) + * @param b Bild, das gespeichert werden soll. + */ + public void setImage(BufferedImage b) { + image = b; + } + + /** + * Direktes Abfragen des Bildes (für interne Zwecke) + * @return Bild, das gerade gespeichert ist. + */ + public BufferedImage getImage() { + return image; + } + + /** + * Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + * Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + * der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu. + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public void size(int width, int height){ + pushImage(); + this.image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(background); + g.fillRect(0,0,width-1, height-1); + } + + /** + * Liefert die Breite des Bildes zurück. + * @return Breite des Bildes + */ + public int getWidth() { + return image.getWidth(); + } + + /** + * Liefert die Höhe des Bildes zurück. + * @return Höhe des Bildes + */ + public int getHeight() { + return image.getHeight(); + } + + + /** + * Erzeugt eine Kopie des Bildes und übergibt sie an den Observer (falls existent), damit dieser die Versionen speichern kann + */ + private void pushImage() { + if(observer != null) { + observer.pushImage(); + } + } + + + /** + * Legt fest, ob nach jedem Zeichenbefehl automatisch das Bild auch in + * der Oberfläche aktualisiert wird. Die Einstellung "false" beschleunigt + * das Zeichnen aufwändiger Bilder und verhindert "Flackern". + * Das Neuzeichnen kann durch die Methode "refresh" gezielt ausgelöst werden. + * @param autorefresh true = nach jedem Zeichenbefehl die Anzeige aktualisieren, false= nur durch die Methode refresh neu zeichnen + */ + public void setAutoRefresh(boolean autoRefresh) { + this.autorefresh = autoRefresh; + } + + + /** + * Auch die anzeigenden Klasse wird zum Neuzeichnen aufgefordert. + */ + private void repaint() { + if(observer != null && autorefresh) { + observer.repaint(); + } + } + + /** + * Auch die anzeigenden Klasse wird zum Neuzeichnen aufgefordert. + */ + public void refresh() { + if(observer != null) { + observer.repaint(); + } + } + + // ----------------------------------------- Zeichenfunktionen ----------------------------------------------- + /** + * Löscht den Inhalt des Bildes. + * Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt. + */ + + public void clear(){ + pushImage(); + image = new BufferedImage(image.getWidth(), image.getHeight(), image.getType()); + Graphics2D g = (Graphics2D) this.image.getGraphics(); + g.setColor(background); + g.fillRect(0,0,image.getWidth()-1, image.getHeight()-1); + repaint(); + } + + /** + * Konvertiert die in einem bestimmten Modus gegebenen Koordinaten in die Java-übliche Links_Oben_Breite_Höhe Version + * Die Änderungen werden direkt im Array vorgenommen + * @param coord Array mit vier Koordinateneinträgen im gegebenen Modus + * @param mode Modus der Koordinaten (CORNER, CORNERS, RADIUS oder CENTER) + */ + private void convert(int[] coord, int mode) { + switch(mode) { + case CORNER: break; + case CORNERS: coord[2] -= coord[0]; coord[3] -= coord[1]; break; + case RADIUS: coord[2] *= 2; coord[3] *=2; + case CENTER: coord[0] -= coord[2]/2; coord[1] -= coord[3]/2; + } + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + * Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + * Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void rectMode(int mode) { + rectMode = mode; + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + * Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + * Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als Breite und Höhe der Form. + * ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void ellipseMode(int mode) { + ellipseMode = mode; + } + + + + /** + * Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + * Um eine Linie einzufärben, verwenden Sie die {@link #stroke(int, int, int) stroke()} Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + * Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + * {@link #strokeWeight(double) strokeWeight()} geändert werden. + * @param x1 x-Koordinate des 1. Punktes + * @param y1 y-Koordinate des 1. Punktes + * @param x2 x-Koordinate des 2. Punktes + * @param y2 y-Koordinate des 2. Punktes + */ + public void line(int x1, int y1, int x2, int y2) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + if (stroke > 0) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawLine(x1, y1, x2, y2); + } + repaint(); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, rectMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillRect(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawRect(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + int[] coord = {a,b,c,d}; + convert(coord, ellipseMode); + if(fillcolor != null) { + g.setColor(fillcolor); + g.fillOval(coord[0], coord[1], coord[2], coord[3]); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawOval(coord[0], coord[1], coord[2], coord[3]); + } + repaint(); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + int px[] = {x1, x2, x3}; + int py[] = {y1, y2, y3}; + polygon(px, py); + + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + + int px[] = {x1, x2, x3, x4}; + int py[] = {y1, y2, y3, y4}; + polygon(px, py); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + + public void polygon(int[] x, int[] y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(fillcolor != null) { + + g.setColor(fillcolor); + g.fillPolygon(x,y, y.length); + } + if(pencolor != null) { + g.setColor(pencolor); + g.setStroke(new BasicStroke((float) stroke)); + g.drawPolygon(x, y, x.length); + } + repaint(); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + ellipse(x,y,1, 1); + + } + + // ----------------------------------------- Schriftdarstellung ----------------------------------------------- + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param s Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String s, int x, int y) { + pushImage(); + Graphics2D g = (Graphics2D) image.getGraphics(); + + if(pencolor != null) { + g.setColor(fillcolor); + g.setStroke(new BasicStroke((float) stroke)); + g.setFont(textfont); + g.drawString(s, x, y); + } + repaint(); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + this.textfont = font; + } + + + // ----------------------------------------- Farbfestlegungen ----------------------------------------------- + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(String color) { + try{ + return new Color( + Integer.valueOf( color.substring( 0, 2 ), 16 ), + Integer.valueOf( color.substring( 2, 4 ), 16 ), + Integer.valueOf( color.substring( 4, 6 ), 16 ) ); + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Hilfsfunktion zur Interpretation von Farben + */ + private Color decode(int color) { + try{ + if(color >=0 && color < 256) { + return new Color(color,color,color); + } else { + int r = color / 0x010000 % 0xFF; + int g = color / 0x000100 % 0xFF; + int b = color % 0xFF; + System.out.println(""+r+","+g+","+b); + return new Color(r, g, b ); + } + } catch (Exception e) { + System.out.println("Falscher Farbcode"); + return Color.BLACK; + } + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + this.pencolor = decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + this.pencolor=decode(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + this.pencolor = new Color(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + this.pencolor = null; + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + this.stroke = width; + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + this.fillcolor = decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + this.fillcolor=decode(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + this.fillcolor = new Color(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + this.fillcolor = null; + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + if(c < 256) { + this.background=new Color(c,c,c); + } else { + int r = c / 0x010000; + int g = c / 0x000100 % 0xFF; + int b = c % 0xFF; + this.background= new Color(r, g, b ); + } + + this.clear(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + this.background=new Color(r,g,b); + this.clear(); + } + + +// ----------------------------------------- Dateioperationen ----------------------------------------------- + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + try{ + this.image = ImageIO.read(new File(filename)); + this.background = decode("D0D0D0"); + this.pencolor = new Color(0,0,0); + this.fillcolor = null; + this.stroke = 1; + this.repaint(); + + } catch(Exception e) { + System.out.println("Fehler beim Einlesen der Bilddatei"); + } + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + try{ + String[] fn = filename.split("\\."); + if (fn.length== 1) { + ImageIO.write(image, "PNG", new File(filename+".png")); + } else { + + if (fn.length == 2 && (fn[1].toUpperCase().equals("PNG") || + fn[1].toUpperCase().equals("GIF"))){ + ImageIO.write(image, fn[1], new File(filename)); + }else { + System.out.println("Unbekanntes Bildformat"); + } + } + + } catch(Exception e) { + System.out.println("Fehler beim Speichern"); + } + } + + +// ----------------------------------------- Sonstiges ----------------------------------------------- + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + + public Color[][] getPixelArray() { + Color[][] pixel = new Color[image.getWidth()][image.getHeight()]; + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + pixel[x][y] = new java.awt.Color(image.getRGB(x,y)); + } + } + return pixel; + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + size(pixel.length,pixel[0].length); + Graphics2D g = (Graphics2D) image.getGraphics(); + for(int x=0; x < image.getWidth(); x++){ + for(int y=0; y < image.getHeight(); y++) { + g.setColor(pixel[x][y]); + g.fillRect(x, y, 1, 1); + } + } + repaint(); + } + + /** + * Hilfsfunktion zum Verzögern der Ausgabe + * @param millis Wartezeit in Millisekunden + */ + public void delay(int millis) { + try{ + Thread.sleep(millis); + + } catch(Exception e) { + + } + + } + + + +} diff --git a/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a6/PictureViewer.java b/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a6/PictureViewer.java new file mode 100644 index 0000000..9e6b151 --- /dev/null +++ b/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a6/PictureViewer.java @@ -0,0 +1,505 @@ +/** + * Zeigt ein Bild in einem Scrollbereich an. + * Es ist möglich das Bild zu zoomen und mehrere Versionen des Bildes zu speichern, um eine "Rückgängig" Operation durchzuführen. + * @author Thomas Schaller + * @version 1.0 vom 01.02.2019 + */ + +import java.awt.*; +import java.awt.event.*; +import javax.swing.*; +import java.awt.image.*; +import java.util.Vector; + +public class PictureViewer extends JScrollPane +{ + + // das aktuelle Bild + private Picture picture; + + // Bilder für den Züruck-Modus speichern + private static final int ANZ_BACK = 20; + private Vector history; + + // Zeichenfläche + private ImageIcon scrollImageIcon; + private JLabel imageLabel; + + // Zoom Faktor + private double zoomFactor; + public static final int FIT = -1; + public static final int NORMAL = 1; + + + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der Größe 1000x1000 + */ + public PictureViewer() { + this(1000,1000); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public PictureViewer(int width, int height) { + this(width,height, "D0D0D0"); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild der angegebenen Größe + * @param width Breite des Bildes + * @param height Höhe des Bildes + * @param background Farbe des Hintergrunds als HEX-String (z.B. "FF3A45") + */ + public PictureViewer(int width, int height, String background) { + this(new Picture(width,height, background)); + } + + /** + * Erzeugt ein ScrollPanel mit integriertem Bild aus einer Bilddatei + * @param filename Name des Bildes + */ + public PictureViewer(String filename) { + this(new Picture(filename)); + } + + /** + * Erzeugt ein ScrollPanel und zeigt das Bild-Objekt an + * @param picture anzuzeigendes Bild + */ + public PictureViewer(Picture picture) + { + this.picture=picture; + + zoomFactor=1; + + scrollImageIcon = new ImageIcon(picture.getImage().getScaledInstance(picture.getImage().getWidth(), picture.getImage().getHeight(), Image.SCALE_FAST)); + imageLabel = new JLabel(scrollImageIcon); + imageLabel.setVerticalAlignment(JLabel.CENTER); + imageLabel.setHorizontalAlignment(JLabel.CENTER); + setViewportView(imageLabel); + + this.setBorder(BorderFactory.createLineBorder(Color.black)); + picture.setObserver(this); + history = new Vector(); + + } + + /** + * Setzt das anzuzeigende Bild neu + * @param picture anzuzeigendes Bild + */ + public void setImage(Picture picture) { + this.history = new Vector(); + this.picture = picture; + setZoom(NORMAL); + } + + /** + * Speichert das übergebene Bild in der History. + * @param b zu speicherndes Bild + */ + public void pushImage() { + if( this.ANZ_BACK > 0) { + if(history.size() == this.ANZ_BACK) { + history.removeElementAt(0); + } + + BufferedImage b = new BufferedImage(picture.getWidth(), picture.getHeight(), picture.getImage().getType()); + Graphics g = b.getGraphics(); + g.drawImage(picture.getImage(), 0, 0, null); + g.dispose(); + + history.add(b); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + private void popImage() { + int anz = history.size(); + if(anz>0) { + BufferedImage img = history.get(anz-1); + history.removeElementAt(anz-1); + picture.setImage(img); + setZoom(zoomFactor); + } + } + + /** + * Ruft das letzte abgespeicherte Bild aus der History wieder auf. + */ + public void back() { + popImage(); + } + + /** + * Setzt das angezeigt Bild neu und beachtet dabei den Zoomfaktor. + */ + public void repaint() { + if( picture != null) { + double factor= zoomFactor; + if (zoomFactor == FIT) { + double factorw = ((double) getWidth()-2) / picture.getWidth(); + double factorh = ((double) getHeight()-2) / picture.getHeight(); + factor = Math.min(factorw, factorh); + } + int width = (int) (picture.getWidth()*factor); + int height = (int) (picture.getHeight()*factor); + + + + scrollImageIcon.setImage(picture.getImage().getScaledInstance(width, height, Image.SCALE_DEFAULT)); + revalidate(); + } + } + + /** + * Setzt den Zoom-Faktor für das Bild. + * Als Zoomfaktor sind auch die Konstanten Bildanzeiger.FIT (auf Bildschirmgröße zoomen) und Bildanzeiger.NORMAL (100%) möglich. + * @param factor Zoomfaktor (1.0 = 100%). + */ + public void setZoom(double factor) + { + zoomFactor = factor; + repaint(); + } + + + // Wrappermethoden + /** + * Definiert die Dimension der Breite und Höhe des Anzeigefensters in Pixeleinheiten. + * Die eingebauten Variablen Breite und Höhe werden durch die an diese Funktion übergebenen Parameter festgelegt. So weist beispielsweise + * der Befehl size(640, 480) der Variablen Breite 640 und der Variablen Höhe 480 zu. + * @param width Breite des Bildes + * @param height Höhe des Bildes + */ + public void size(int width, int height){ + picture.size(width, height); + } + + /** + * Liefert die Breite des Bildes zurück. + * @return Breite des Bildes + */ + public int getImageWidth() { + return picture.getWidth(); + } + + /** + * Liefert die Höhe des Bildes zurück. + * @return Höhe des Bildes + */ + public int getImageHeight() { + return picture.getHeight(); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param c Farbe für den Hintergrund (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void background(int c) { + picture.background(c); + } + + /** + * Die Funktion background() setzt die Farbe, die für den Hintergrund des Bildes verwendet wird. Der Standardhintergrund ist hellgrau. + * Es ist nicht möglich, den Alpha-Parameter Transparenz mit Hintergrundfarben auf der Hauptzeichnungsoberfläche zu verwenden. + * @param r Rotanteil (0-255) der Hintergrundfarbe + * @param g Grünanteil (0-255) der Hintergrundfarbe + * @param b Blauanteil (0-255) der Hintergrundfarbe + */ + public void background(int r, int g, int b) { + picture.background(r,g,b); + } + + /** + * Zeichnet eine Linie (einen direkten Weg zwischen zwei Punkten) auf den Bildschirm. + * Um eine Linie einzufärben, verwenden Sie die {@link #stroke(int, int, int) stroke()} Funktion. Eine Zeile kann nicht gefüllt werden, daher hat die Funktion fill() keinen + * Einfluss auf die Farbe einer Zeile. Linien werden standardmäßig mit einer Breite von einem Pixel gezeichnet, dies kann jedoch mit der Funktion + * {@link #strokeWeight(double) strokeWeight()} geändert werden. + * @param x1 x-Koordinate des 1. Punktes + * @param y1 y-Koordinate des 1. Punktes + * @param x2 x-Koordinate des 2. Punktes + * @param y2 y-Koordinate des 2. Punktes + */ + public void line(int x1, int y1, int x2, int y2) { + picture.line(x1,y1,x2,y2); + } + + /** + * Zeichnet ein Rechteck auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position der linken oberen Ecke fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #rectMode(int) rectMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param b meist die y-Koordinate der linken oberen Ecke (kann durch rectMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch rectMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch rectMode() geändert werden). + * + */ + public void rect(int a, int b, int c, int d) { + picture.rect(a,b,c,d); + } + + /** + * Zeichnet eine Ellipse/Kreis auf das Bild. + * Standardmäßig legen die ersten beiden Parameter die Position des Mittelpunkts fest, der dritte die Breite und der vierte die Höhe. + * Die Art und Weise, wie diese Parameter interpretiert werden, kann jedoch mit der Funktion {@link #ellipseMode(int) ellipseMode()} geändert werden. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param a meist die x-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param b meist die y-Koordinate des Mittelpunkts (kann durch ellipseMode() geändert werden). + * @param c meist die Breite des Rechtecks (kann durch ellipseMode() geändert werden). + * @param d meist die Höhe des Rechtecks (kann durch ellipseMode() geändert werden). + * + */ + public void ellipse(int a, int b, int c, int d) { + picture.ellipse(a,b,c,d); + } + + /** + * Zeichnet ein Dreieck auf das Bild. + * Ein Dreieck ist eine Ebene, die durch die Verbindung von drei Punkten entsteht. Die ersten beiden Argumente spezifizieren den + * ersten Punkt, die mittleren beiden Argumente spezifizieren den zweiten Punkt und die letzten beiden Argumente spezifizieren den dritten Punkt. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + */ + public void triangle(int x1, int y1, int x2, int y2, int x3, int y3) { + picture.triangle(x1,y1,x2,y2,x3,y3); + } + + /** + * Zeichnet ein Viereck auf das Bild. + * Ein Viereck ist ein vierseitiges Polygon. Es ist ähnlich wie ein Rechteck, aber die Winkel zwischen seinen Kanten + * sind nicht auf neunzig Grad beschränkt. Das erste Paar von Parametern (x1,y1) setzt den ersten Scheitelpunkt und die nachfolgenden + * Paare sollten im Uhrzeigersinn oder gegen den Uhrzeigersinn um die definierte Form herum verlaufen. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x1 meist die x-Koordinate des 1. Punkts. + * @param y1 meist die y-Koordinate des 1. Punkts. + * @param x2 meist die x-Koordinate des 2. Punkts. + * @param y2 meist die y-Koordinate des 2. Punkts. + * @param x3 meist die x-Koordinate des 3. Punkts. + * @param y3 meist die y-Koordinate des 3. Punkts. + * @param x4 meist die x-Koordinate des 3. Punkts. + * @param y4 meist die y-Koordinate des 3. Punkts. + */ + public void quad(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) { + picture.quad(x1,y1,x2,y2,x3,y3,x4,y4); + } + + /** + * Zeichnet ein Polygon auf das Bild. + * Gleich lange Listen von x und y-Koordinaten bestimmen die Eckpunkte des Polygons. + * Durch den Befehl {@link #fill(int,int,int) fill()} /{@link #noFill() noFill()} kann die Füllfarbe des Rechtecks gewählt werden, durch {@link #stroke(int, int, int) stroke()}/{@link #noStroke() noStroke()} die Rahmenfarbe. + * @param x Liste der x-Koordinaten der Punkte. + * @param y Liste der y-Koordinaten der Punkte. + */ + public void polygon(int[] x, int[] y) { + picture.polygon(x,y); + } + + /** + * Zeichnet einen Punkt, d.h. einen Kreis in der Dimension eines Pixels. + * Der erste Parameter ist der x-Wert für den Punkt, der zweite Wert ist der y-Wert für den Punkt. + * @param x x-Koordinate des Punktes + * @param y y-Koordinate des Punktes + */ + public void point(int x, int y) { + picture.point(x,y); + + } + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Rechtecken. + * Ändert die Position, von der aus Rechtecke gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an rect() übergeben werden, interpretiert werden. + * Der Standardmodus ist rectMode(Bild.CORNER), der die ersten beiden Parameter von rect() als die linke obere Ecke der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von rect() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * rectMode(Bild.CENTER) interpretiert die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * rectMode(RADIUS) verwendet auch die ersten beiden Parameter von rect() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void rectMode(int mode) { + picture.rectMode(mode); + } + + + /** + * Ändert den Koordinaten-Modus beim Zeichnen von Kreisen/Ellipsen. + * Ändert die Position, von der aus Kreise/Ellipsen gezeichnet werden, indem es die Art und Weise ändert, wie Parameter, die an ellipse() übergeben werden, interpretiert werden. + * Der Standardmodus ist ellipseMode(Bild.CENTER), der die ersten beiden Parameter von ellipse() als Mittelpunkt der Form interpretiert, + * während der dritte und vierte Parameter seine Breite und Höhe sind. + * ellipseMode(Bild.CORNER) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als Breite und Höhe der Form. + * ellipseMode(Bild.CORNERS) interpretiert die ersten beiden Parameter von ellipse() als die Position einer Ecke + * und die dritten und vierten Parameter als die Position der gegenüberliegenden Ecke. + * ellipseMode(RADIUS) verwendet auch die ersten beiden Parameter von ellipse() als Mittelpunkt der Form, + * verwendet aber den dritten und vierten Parameter, um die Hälfte der Breite und Höhe der Formen festzulegen. + * @param mode Modus der Koordinateninterpretation (CORNER, CORNERS, CENTER oder RADIUS) + */ + public void ellipseMode(int mode) { + picture.ellipseMode(mode); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param pencolor Stiftfarbe in Hexadezimaldarstellung + */ + public void stroke(String pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben + * @param pencolor Stiftfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void stroke(int pencolor) { + picture.stroke(pencolor); + } + + /** + * Legt die Farbe fest, mit der Linien und Ränder um Formen gezeichnet werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben + * @param r Rotanteil (0-255) der Stiftfarbe + * @param g Grünanteil (0-255) der Stiftfarbe + * @param b Blauanteil (0-255) der Stiftfarbe + */ + public void stroke(int r, int g, int b) { + picture.stroke(r,g,b); + } + + /** + * Legt fest, dass keine Linien oder Ränder um Formen gezeichnet werden soll. + */ + public void noStroke() { + picture.noStroke(); + } + + /** + * Legt die Breite des Strichs für Linien, Punkte und den Rand um Formen fest. + * Alle Breiten werden in Pixeleinheiten angegeben. + * @param width Breite in Pixel + */ + public void strokeWeight(double width) { + picture.strokeWeight(width); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird hexadezimal in Form der RGB angegeben: z.B. "CCFFAA" oder "004E23". Die Syntax verwendet sechs Ziffern - je zwei für die roten, grünen und blauen Komponenten, + * um eine Farbe anzugeben (genau wie Farben typischerweise in HTML und CSS angegeben werden). + * @param fillcolor Füllfarbe in Hexadezimaldarstellung + */ + public void fill(String fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird entweder als Graustufe (0-255) oder als 3-Byte RGB-Wert angegeben. + * @param fillcolor Füllfarbe (0-255: Graustufe zwischen 0 schwarz und 255 weiß, sonst: c wird als 3-Byte RGB-Wert interpretiert) + */ + public void fill(int fillcolor) { + picture.fill(fillcolor); + } + + /** + * Legt die Farbe fest, mit der Formen gefüllt werden. + * Diese Farbe wird komponentenweise als RGB-Wert angegeben. + * @param r Rotanteil (0-255) der Füllfarbe + * @param g Grünanteil (0-255) der Füllfarbe + * @param b Blauanteil (0-255) der Füllfarbe + */ + public void fill(int r, int g, int b) { + picture.fill(r,g,b); + } + + /** Legt fest, dass die Formen nicht gefüllt werden sollen. + */ + public void noFill() { + picture.noFill(); + } + + /** + * Löscht den Inhalt des Bildes. + * Der Hintergrund wird mit der Hintergrundfarbe neu gefüllt. + */ + public void clear(){ + picture.clear(); + } + + /** + * Lädt ein Bild aus dem Dateisystem. + * Lädt ein Bild von einem Datenträger und setzt Stiftfarbe und Füllfarbe auf Standardwerte zurück. + * @param filename Dateiname des Bildes + */ + public void load(String filename) { + picture.load(filename); + } + + /** + * Speichert ein Bild. + * Speichert ein Bild auf einem Datenträger. Zulässig sind die Dateiformate PNG und GIF. Die Dateiendung legt den Typ fest. + * Standardmäßig wird die Dateiendung .png ergänzt, wenn keine angegeben ist. + * @param filename Dateiname des Bildes + */ + public void save(String filename) { + picture.save(filename); + } + + /** + * Gibt einen Text an den gegebenen Koordinaten aus + * Zur Ausgabe des Textes wird der ausgewählte Font verwendet. Dieser muss vorher mit {@link #textFont(Font) textFont() } festgelegt. + * @param t Text, der angezeigt werden soll + * @param x x-Koordinate des Textanfangs + * @param y y-Koordinate der Grundlinie des Textes. + */ + public void text(String t, int x, int y) { + picture.text(t,x,y); + } + + /** + * Legt die Schriftart für Textausgaben fest. + * Jeder übliche Java-Font kann verwendet werden. Er kann mit z.B. Font f = new Font( "Arial", Font.PLAIN, 14 ); definiert werden. + * @param font ein Font-Objekt + */ + public void textFont(Font font) { + picture.textFont(font); + } + + /** + * Liefert das Bild als zweidimensionales Pixel-Array. + * @return zweidimensionales Array von Color-Objekten, die den Pixeln des Bildes entsprechen. + */ + public Color[][] getPixelArray() { + return picture.getPixelArray(); + } + + /** + * Setzt das Bild neu auf Basis des Pixel-Arrays. + * Die Größe des Bildes wird nicht automatisch an das Array angepasst. + * @param pixel zweidimensionales Array von Color-Objekten + */ + public void setPixelArray(Color[][] pixel) { + picture.setPixelArray(pixel); + } + + + +} diff --git a/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a6/Table.java b/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a6/Table.java new file mode 100644 index 0000000..ee5a211 --- /dev/null +++ b/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a6/Table.java @@ -0,0 +1,894 @@ +/** + * Die Klasse Table vereinfacht den Zugriff auf CSV-Dateien. + * Die Klassen Table und TableRow ermöglichen einen einfachen Zugriff auf tabellenbasierte + * Dokumente. + * + * @author Thomas Schaller + * @version 1.0 vom 01.02.2019 + */ + +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.ArrayList; +import java.io.*; +import java.util.Scanner; + +import org.jdom.Document; +import org.jdom.Element; +import org.jdom.Attribute; +import org.jdom.JDOMException; +import org.jdom.input.SAXBuilder; +import org.jdom.output.XMLOutputter; +import org.jdom.output.Format; + +public class Table +{ + // Standardtrennzeichen für Spalten + private static final char DEFAULT_SEPARATOR = ';'; + // Standardmarkierung für Texte + private static final char DEFAULT_QUOTE = '"'; + // Standardtrennzeichen für Dezimalzahlen + private static final char DEFAULT_COMMA = ','; + + // mögliche Spaltentypen + private static final String UNKNOWN ="UNKOWN"; + private static final String INT = "INTEGER"; + private static final String DOUBLE = "DOUBLE"; + private static final String FLOAT = "FLOAT"; + + // interne Verwaltung des Dokuments als JDOM-Document-Objekt + private Document doc; + // Verweis auf Element für Kopfzeile + private Element header; + // Ende Attribute + + /** + * Erzeugt leeres Tabellen-Dokument. + */ + public Table() { + this.doc = new Document(); + doc.setRootElement(new Element("CSV-Data")); + this.header = new Element("Header"); + doc.getRootElement().addContent(header); + } + + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei und erstellt ein Tabellenobjekt mit seinen Werten. + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public Table(String filename, String options, char separator, char quote) { + loadCSV(filename, options, separator, quote); + } + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei und erstellt ein Tabellenobjekt mit seinen Werten (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + */ + public Table(String filename, String options) { + loadCSV(filename, options); + } + + /** + * Erzeugt Tabellen-Dokument aus einer CSV-Datei. + * Liest den Inhalt einer Datei ohne Kopfzeile und erstellt ein Tabellenobjekt mit seinen Werten (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public Table(String filename) { + loadCSV(filename); + } + + // Anfang Methoden + /** + * Liest den Inhalt einer CSV-Datei ohne Kopfzeile (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public void loadCSV(String filename) { + loadCSV(filename, ""); + } + + /** + * Liest den Inhalt einer CSV-Datei (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + */ + public void loadCSV(String filename, String options) { + loadCSV(filename, options, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** + * Liest den Inhalt einer CSV-Datei. + * Wenn die Datei eine Kopfzeile enthält, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile hat, + * dann lassen Sie einfach die Option "header" weg. + * @param filename Dateiname der CSV-Datei. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile enthält. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public void loadCSV(String filename, String options, char separator, char quote) { + doc = new Document(); + doc.setRootElement(new Element("CSV-Data")); + header = new Element("Header"); + doc.getRootElement().addContent(header); + try { + File f = new File(filename); + Scanner scanner = new Scanner(new File(filename)); + if(options.toLowerCase().contains("header") && scanner.hasNext()) { + List entries = parseLine(scanner.nextLine(), separator, quote); + int i= 0; + for(String s : entries) { + Element entry = new Element("Column"); + header.addContent(entry); + entry.setText(s); + entry.setAttribute("type", "unknown"); + i++; + } + } + + List cols = header.getChildren(); + + while (scanner.hasNext()) { + Element line = new Element("Row"); + doc.getRootElement().addContent(line); + List entries = parseLine(scanner.nextLine(), separator, quote); + int i= 0; + + for(String s : entries) { + + if(i==cols.size()) { + Element entry = new Element("Column"); + entry.setAttribute("type", "unknown"); + header.addContent(entry); + cols = header.getChildren(); + } + + Element entry = new Element("Entry"); + entry.setText(s); + line.addContent(entry); + i++; + } + } + scanner.close(); + + } catch (Exception e) { + System.out.println("Fehler beim Lesen der CSV-Datei"); + } + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei ohne Kopfzeile (Separator = ';', Kennung für Text = '"'). + * @param filename Dateiname der CSV-Datei. + */ + public void saveCSV(String filename) { + saveCSV(filename, ""); + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei (Separator = ';', Kennung für Text = '"'). + * Wenn die Datei eine Kopfzeile enthalten, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile haben soll, + * dann lassen Sie einfach die Option "header" weg. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile haben soll. + * @param filename Dateiname der CSV-Datei. + */ + public void saveCSV(String filename, String options) { + saveCSV(filename, options, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** + * Speichert das aktuelle Dokument als CSV-Datei. + * Wenn die Datei eine Kopfzeile enthalten, fügen Sie "header" in den Parameter options ein. Wenn die Datei keine Kopfzeile haben soll, + * dann lassen Sie einfach die Option "header" weg. + * @param options Geben Sie hier "header" an, wenn die Datei eine Kopfzeile haben soll. + * @param filename Dateiname der CSV-Datei. + * @param separator Trennzeichen für Spalten (meist ';' oder ',' oder '\t' für Tab) + * @param quote Kennung für Texte (meist '"'). + */ + public void saveCSV(String filename, String options, char separator, char quote){ + try{ + File f = new File(filename); + PrintStream outputFile = new PrintStream (f); + System.out.println("Speicher in : "+f.getAbsolutePath()); + List columns = header.getChildren(); + String sq = ""+quote; + String ss = ""+separator; + if(quote =='"') sq = "\""; + if(separator =='"') ss = "\""; + + if(options.toLowerCase().contains("header")) { + String h = ""; + for(Element c : columns) { + h += ss + sq + c.getText()+sq; + } + outputFile.println(h.substring(1)); + } + for(int i = 0; i parseLine(String cvsLine) { + return parseLine(cvsLine, DEFAULT_SEPARATOR, DEFAULT_QUOTE); + } + + /** HIlfsfunktion für die Analyse einer Dateizeile + * @param cvsLine Zeile aus der Datei + * @param sparator Trennzeichen für die Spalten + * @return Liste von String für die einzelnen Spalten + */ + private List parseLine(String cvsLine, char separator) { + return parseLine(cvsLine, separator, DEFAULT_QUOTE); + } + + /** HIlfsfunktion für die Analyse einer Dateizeile + * @param cvsLine Zeile aus der Datei + * @param sparator Trennzeichen für die Spalten + * @param customQuote Kennung für Strings + * @return Liste von String für die einzelnen Spalten + */ + private List parseLine(String cvsLine, char separator, char customQuote) { + + List result = new ArrayList<>(); + + //if empty, return! + if (cvsLine == null && cvsLine.isEmpty()) { + return result; + } + + //ggf. Default-Value laden + if (customQuote == ' ') { + customQuote = DEFAULT_QUOTE; + } + + if (separator == ' ') { + separator = DEFAULT_SEPARATOR; + } + + StringBuffer curVal = new StringBuffer(); + boolean inQuotes = false; + boolean startCollectChar = false; + boolean doubleQuotesInColumn = false; + + char[] chars = cvsLine.toCharArray(); + + for (char ch : chars) { + + if (inQuotes) { // aktueller Text ist in Quotes eingeschlossen + startCollectChar = true; + + if (ch == customQuote) { // Quotes werden beendet, aber Achtung bei "" => Metazeichen + inQuotes = false; + if (ch == '\"') { + doubleQuotesInColumn = true; + } + + } else { + + if (ch == '\"' && !doubleQuotesInColumn) { + doubleQuotesInColumn = true; + } else { + curVal.append(ch); + doubleQuotesInColumn = false; + } + + } + } else { + if (ch == customQuote) { + + inQuotes = true; + + //Fixed : allow "" in empty quote enclosed + if (ch == '\"'){ + if(doubleQuotesInColumn) { + curVal.append('"'); + doubleQuotesInColumn = false; + } else doubleQuotesInColumn = true; + + + } + } + else { + doubleQuotesInColumn = false; + if (ch == separator) { + + result.add(curVal.toString()); + + curVal = new StringBuffer(); + startCollectChar = false; + + } else if (ch == '\r') { + //ignore LF characters + continue; + } else if (ch == '\n') { + //the end, break! + break; + } else { + curVal.append(ch); + } + } + } + + } + result.add(curVal.toString()); + return result; + } + + /** + * Sucht die Nummer einer durch Namen gegebenen Spalte. + * @param name Name der Spalte + * @return Nummer der Spalte + */ + + private int findColumnNumber(String name) { + List columns = header.getChildren(); + int i = 0; + for(Element c : columns) { + if (c.getText().toLowerCase().equals(name.toLowerCase())) { + return i; + + } + i++; + } + return -1; + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an. + */ + public void addColumn() { + Element entry = new Element("Column"); + entry.setAttribute("type", Table.UNKNOWN); + header.addContent(entry); + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an und benennt sie. + * @param title Bezeichnung der Spalte + */ + public void addColumn(String title) { + addColumn(); + Element nc = ((List)(header.getChildren())).get(header.getChildren().size()-1); + nc.setText(title); + } + + /** + * Fügt eine neue Spalte am Ende der Tabelle an und benennt und typisiert sie. + * @param title Bezeichnung der Spalte + * @param type Typ der Spalte (UNKNOWN, DOUBLE, INTEGER, FLOAT) + */ + public void addColumn(String title, String type) { + addColumn(title); + Element nc = ((List)(header.getChildren())).get(header.getChildren().size()-1); + nc.setAttribute("type", type); + } + + /** + * Löscht eine Spalte. + * @param i Nummer der Spalte. + */ + public void removeColumn(int i) { + List lines = doc.getRootElement().getChildren(); + for(Element l : lines) { + if(l.getChildren().size()>i) l.removeContent(i); + } + } + + /** + * Löscht eine Spalte + * @param name Name der Spalte + */ + public void removeColumn(String name) { + try{ + removeColumn(findColumnNumber(name)); + } catch(Exception e) { System.out.println("Unbekannter Spaltenname");} + } + + /** + * Liefert die Anzahl der Spalten in der Tabelle + * @return Anzahl der Spalten + */ + public int getColumnCount() { + return header.getChildren().size(); + } + + /** + * Liefert die Anzahl der Zeilen in der Tabelle + * @return Anzahl der Zeilen + */ + public int getRowCount() { + return doc.getRootElement().getChildren().size()-1; + } + + /** + * Löscht alle Zeilen der Tabelle. + * Die Spaltenüberschriften und Typen bleiben erhalten. + */ + public void clearRows() { + doc.getRootElement().removeChildren("Row"); + } + + /** + * Fügt eine neue Zeile an das Ende der Tabelle an. + * @return ein TableRow-Objekt für diese neue Zeile + */ + public TableRow addRow() { + Element row = new Element("Row"); + doc.getRootElement().addContent(row); + return new TableRow(doc, row); + } + + /** + * Löscht eine Zeile + * @param i Nummer der Zeile + */ + public void removeRow(int i) { + if(i rows = doc.getRootElement().getChildren(); + return new TableRow(doc, rows.get(i+1)); + } + return null; + } + + /** + * Liefert die ganze Tabelle als Array von TableRow-Objekten + * @return Array von TableRow-Objekten + */ + public TableRow[] rows() { + TableRow[] rows = new TableRow[getRowCount()]; + for(int i = 0; i < getRowCount(); i++) { + rows[i] = getRow(i); + } + return rows; + } + + /** + * Liefert den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param column Spaltennummer + * @return Wert der Zelle + */ + public int getInt(int row, int column) { + return getRow(row).getInt(column); + } + + /** + * Liefert den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param name Name der Spalte + * @return Wert der Zelle + */ + public int getInt(int row, String name) { + return getRow(row).getInt(name); + } + + /** + * Setzt den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param column Spaltennummer + * @param value neuer Wert der Zelle + */ + public void setInt(int row, int column,int value) { + getRow(row).setInt(column, value); + } + + /** + * Setzt den Wert einer Zelle als Integer-Zahl + * @param row Zeilennummer + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(int row, String name, int value) { + getRow(row).setInt(name, value); + } + + /** + * Liefert alle Werte einer Zeile als Integer-Array. + * @param row Nummer der Zeile + * @return int-Array, dass alle Werte der Zeile enthält + */ + public int[] getIntRow(int row) { + try{ + TableRow trow = getRow(row); + int anz = getColumnCount(); + int[] r = new int[anz]; + for(int i=0; i) (header.getChildren())).get(i).getText(); + } else { + return ""; + } + } + + /** + * Liefert die Nummer einer Spalte + * @param name Name der Spalte + * @return Nummer der Spalte + */ + public int getColumn(String name) { + List columns = header.getChildren(); + int i = 0; + while (i < columns.size()) { + if (columns.get(i).getText().toLowerCase().equals(name.toLowerCase())) { + return i; + } + i++; + } // end of while + return -1; + } + + + /** + * Erzeugt eine neue Zeile mit i Spalten + * Wenn bisher nicht genügend Spalten vorhanden sind, werden automatisch neue Spalten hinzugefügt (auch zum Header) + * @param i Anzahl der Spalten + */ + private Element buildRow(int i) { + List columns = header.getChildren(); + Element entry=null; + for(int j=0; j<=i; j++) { + + if(j==columns.size()) { + Element h = new Element("Column"); + h.setAttribute("type", "unknown"); + header.addContent(h); + columns = header.getChildren(); + } + if(j==current.getChildren().size()) { + entry = new Element("Entry"); + current.addContent(entry); + + } + + } + return entry; + + } + + /** + * Erzeugt eine neue Zeile. + * Es werden genügend Spalten erzeugt, dass ein Wert in Spalte "name" eingetragen werden kann + * @param name Name der Spalte + */ + private Element buildRow(String name) { + List columns = header.getChildren(); + int i = 0; + for(Element c: columns) { + + if(c.getText().toLowerCase().equals(name.toLowerCase())) { + return buildRow(i); + } + i++; + } + return null; + + } + + /** + * Liefert den Wert einer Zelle als String + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public String getString(int i) { + if(i >= current.getContent().size()) return ""; + Element e = (Element) current.getContent(i) ; + if(e!=null) { + return e.getText(); + } else { + return ""; + } + } + + /** + * Liefert den Wert einer Zelle als String + * @param name Name der Spalte + * @return Wert der Zelle + */ + public String getString(String name) { + return getString(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als String + * @param i Nummer der Spalte + * @param text neuer Wert der Zelle + */ + public void setString(int i, String text) { + + Element e = buildRow(i); + if(e!=null) e.setText(text); + } + + /** + * Setzt den Wert einer Zelle als String + * @param name Name der Spalte + * @param text neuer Wert der Zelle + */ + public void setString(String name, String text) { + Element e = buildRow(name); + if(e!=null) e.setText(text); + } + + + /** + * Liefert den Wert einer Zelle als Int-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public int getInt(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Integer.parseInt(e.getText()); + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Int-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public int getInt(String name) { + return getInt(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Int-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(int i,int value) { + + Element e = buildRow(i); + if(e!=null) e.setText(""+value); + } + + /** + * Setzt den Wert einer Zelle als Int-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setInt(String name, int value) { + Element e = buildRow(name); + if(e!=null) e.setText(""+value); + } + + /** + * Liefert den Wert einer Zelle als Float-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public float getFloat(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Float.parseFloat(e.getText().replace(",",".")); + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Float-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public float getFloat(String name) { + return getFloat(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Float-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setFloat(int i,float value) { + + Element e = buildRow(i); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Setzt den Wert einer Zelle als Float-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setFloat(String name, float value) { + Element e = buildRow(name); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Liefert den Wert einer Zelle als Double-Zahl + * @param i Nummer der Spalte + * @return Wert der Zelle + */ + public double getDouble(int i) { + try{ + Element e = (Element) current.getContent(i) ; + return Double.parseDouble(e.getText().replace(",",".")); + + } catch(Exception e) { + return 0; + } + } + + /** + * Liefert den Wert einer Zelle als Double-Zahl + * @param name Name der Spalte + * @return Wert der Zelle + */ + public double getDouble(String name) { + return getDouble(getColumn(name)); + } + + /** + * Setzt den Wert einer Zelle als Double-Zahl + * @param i Nummer der Spalte + * @param value neuer Wert der Zelle + */ + public void setDouble(int i,double value) { + + Element e = buildRow(i); + if(e!=null) e.setText(format.format(value)); + } + + /** + * Setzt den Wert einer Zelle als Double-Zahl + * @param name Name der Spalte + * @param value neuer Wert der Zelle + */ + public void setDouble(String name, double value) { + Element e = buildRow(name); + if(e!=null) e.setText(format.format(value)); + } + +} diff --git a/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a6/XML.java b/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a6/XML.java new file mode 100644 index 0000000..c06c490 --- /dev/null +++ b/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a6/XML.java @@ -0,0 +1,637 @@ +/** + * Klasse zum Vereinfachten Zugriff auf XML-Dokumente + * Diese Klasse ist für den Einsatz in der Schule gedacht und soll den Schülern + * einen einfachen Zugriff auf XML-Dokumente ermöglichen. Die zur Verfügung + * stehenden Befehle sind wie in Processing realisiert. + * Dabei ist jeder Teilbaum des Dokuments wieder als XML-Objekt zugreifbar, das + * intern auf die gleiche XML-Dokumentstruktur zugreift. + * Dies ermöglicht bei unsachgemäßem Gebrauch die XML-Struktur zu zerstören. Im + * normalen Gebrauch sollte dies aber nicht relevant sein. + * + * Benötigt: jdom-1.1.3.jar + + * @author Thomas Schaller + * @version 1.0 vom 31.01.2019 + */ +import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.ArrayList; +import java.io.*; + +import org.jdom.Document; +import org.jdom.Element; +import org.jdom.Attribute; +import org.jdom.JDOMException; +import org.jdom.input.SAXBuilder; +import org.jdom.output.XMLOutputter; +import org.jdom.output.Format; + +public class XML { + // Anfang Attribute + // XML-Dokumentstruktur + private Document doc; + // Zeiger auf das aktuelle Element + private Element current; + // Ende Attribute + + /** + * Erzeugt ein leeres XMLDokument + */ + public XML() { + this.doc = new Document(); + this.current = null; + } + + /** + * Erzeugt ein XML-Dokument aus einer Datei + * @param filename Dateiname der XML-Datei + */ + public XML(String filename) { + loadXML(filename); + } + + /** + * interner Konstruktor, um ein XML Objekt zu erzeugen, das auf einen bestimmten Knoten verweist + * @param doc die XML-Dokumentstruktur + * @param current Zeiger auf das aktuelle Element + */ + private XML(Document doc, Element current) { + this.doc = doc; + this.current = current; + } + + // Anfang Methoden + /** Öffnet das durch den Dateinamen gegebene Dokument + * @param filename Dateiname des XML-Files + */ + public void loadXML(String filename) { + doc = null; + File f = new File(filename); + + try { + // Das Dokument erstellen + SAXBuilder builder = new SAXBuilder(); + doc = builder.build(f); + + } catch (JDOMException e) { + e.printStackTrace(); + + } catch (IOException e) { + e.printStackTrace(); + } + // Zeiger im Baum auf Root-Element + current = doc.getRootElement(); + } + + /** Speichert den XML-Baum im angegebenen Dateinamen + * @param filename Dateiname des XML-Files + */ + public void saveXML(String filename) { + try { + // new XMLOutputter().output(doc, System.out); + XMLOutputter xmlOutput = new XMLOutputter(); + + // display nice nice + xmlOutput.setFormat(Format.getPrettyFormat()); + File f = new File(filename); + FileOutputStream outputFile = new FileOutputStream(f); + System.out.println("Speicher in : "+f.getAbsolutePath() ); + xmlOutput.output(doc, outputFile); + outputFile.close(); + System.out.println("File Saved!"); + } catch (IOException io) { + System.out.println(io.getMessage()); + } + + } + + //----------------------------------------------- Zeigerbewegungen -------------------------------------------------- + /** + * liefert ein XML-Objekt, das auf den Vaterknoten des aktuellen Elements zeigt. + * @return Vater des aktuellen Objekts. + */ + public XML getParent() { + if(current != null) { + Element parent = current.getParentElement(); + if (parent == null) { + return null; + } else { + return new XML(doc, parent); + } + } + return null; + } + + /** + * Überprüft, ob das Element irgendwelche Kinder hat oder nicht, und gibt das Ergebnis als boolean zurück. + * @return true, wenn Kinder vorhanden sind, sonst false + */ + public boolean hasChildren() { + if (current == null) { + return doc.hasRootElement(); + } else { + return current.getChildren().size()>0; + } + } + + /** + * Ermittelt die Namen aller Kinder des Elements und gibt die Namen als ein Array von Strings zurück. + * Dies ist dasselbe wie das Durchlaufen und Aufrufen von getName() auf jedem untergeordneten Element einzeln. + * @return Liste aller Namen der Kinder + */ + public String[] listChildren() { + if (current == null) { + if(doc.hasRootElement()) { + String[] names = new String[0]; + names[0] = doc.getRootElement().getName(); + return names; + } else { + return null; + } + } else { + List ch_element = current.getChildren(); + String[] names = new String[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + names[i] = ch_element.get(i).getName(); + } + return names; + } + } + + /** + * Liefert alle Kinder des Elements als Array von XML-Objekten. + * @return Array der Kinder als XML-Objekte + */ + public XML[] getChildren() { + if (current == null) { + if(doc.hasRootElement()) { + XML[] ch_xml = new XML[1]; + ch_xml[0] = new XML(doc, doc.getRootElement()); + return ch_xml; + } else { + return null; + } + } else { + List ch_element = current.getChildren(); + XML[] ch_xml = new XML[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + ch_xml[i] = new XML(doc, ch_element.get(i)); + } + return ch_xml; + } + } + + /** + * Liefert bestimmte Kinder des Elements als Array von XML-Objekten. + * Die Methode gibt dabei alle Kinder zurück, die dem angegebenen Namen entsprechen. + * @param name Name der gesuchten Kind-Objekte + * @return Array der Kinder als XML-Objekte + */ + public XML[] getChildren(String name) { + if (current == null) { + if(doc.hasRootElement()) { + XML[] ch_xml = new XML[1]; + ch_xml[0] = new XML(doc, doc.getRootElement()); + if(doc.getRootElement().getName().equals(name)){ + return ch_xml; + } else { + return null; + } + } else { + return null; + } + } else { + List ch_element = current.getChildren(name); + XML[] ch_xml = new XML[ch_element.size()]; + for(int i=0; i < ch_element.size() ; i++) { + ch_xml[i] = new XML(doc, ch_element.get(i)); + } + return ch_xml; + } + } + + /** + * Liefert das erste Kind des Elements mit einem bestimmten Namen. + * Die Methode gibt das erste Kind zurück, das dem angegebenen Namen entsprechen. + * @param name Name des gesuchten Kind-Objektes + * @return Kind als XML-Objekt + */ + + public XML getChild(String name) { + if (current == null) { + Element e = doc.getRootElement(); + if (e.getName().equals(name)) { + return new XML(doc, e); + } else { + return null; + } + } else { + String[] names = name.split("/"); + Element e = current; + int i = 0; + while(i < names.length) { + e = e.getChild(names[i]); + if (e==null) return null; + i++; + } + return new XML(doc, e); + } + } + + /** + * Liefert das i. Kind des Elements. + * Die Methode gibt das i. Kind des aktuellen Elements zurück. + * @param i Nummer des Kindes + * @return Kind als XML-Objekt + */ + public XML getChild(int i) { + if (current == null) { + return new XML(doc, doc.getRootElement()); + } else { + List ch_element = current.getChildren(); + if (i>=ch_element.size()) return null; + return new XML(doc, ch_element.get(i)); + } + } + + //--------------------------------------------------- Methoden für das aktuelle Element ------------------------------------------------- + /** + * Frage den Namen des aktuellen Elements ab + * @return Namen des Elements + */ + public String getName() { + if (current==null) return ""; + return current.getName(); + } + + /** + * Setze den Namen des aktuellen Elements. + * @param name Neuer Name des Elements + */ + public void setName(String name) { + if (current==null) return; + current.setName(name); + } + + /** + * liefert die Anzahl der Attribute eines Elements. + * @return Anzahl des Attribute + */ + public int getAttributeCount() { + if (current == null) return 0; + return current.getAttributes().size(); + } + + /** + * liefert zurück, ob das aktuelle Element Attribute hat . + * @return true, wenn es Attribute gibt + */ + public boolean hasAttribute() { + if (current == null) return false; + return current.getAttributes().size()>0; + } + + /** + * Ruft alle Attribute des angegebenen Elements ab und gibt sie als Array von Strings zurück. + * @return Liste der Attributnamen + */ + public String[] listAttributes() { + if (current == null) return null; + List attr = current.getAttributes(); + String[] names = new String[attr.size()]; + for(int i=0; i < attr.size() ; i++) { + names[i] = attr.get(i).getName(); + } + return names; + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs + */ + public String getString(String attribute) { + if (current==null) return ""; + return current.getAttributeValue(attribute); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs + */ + public String getString(String attribute, String defaultValue) { + if (current==null) return defaultValue; + return current.getAttributeValue(attribute,defaultValue); + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param text neuer Wert des Attributs + */ + public void setString(String attribute, String text) { + if (current==null) return; + current.setAttribute(attribute, text); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Integer-Zahl + */ + public int getInt(String attribute) { + if (current==null) return 0; + try{ + int i = Integer.parseInt(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als Integer-Zahl + */ + public int getInt(String attribute, int defaultValue) { + if (current==null) return defaultValue; + try{ + int i = Integer.parseInt(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setInt(String attribute, int value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Float-Zahl + */ + public float getFloat(String attribute) { + if (current==null) return 0; + try{ + float i = Float.parseFloat(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als Float-Zahl + */ + public float getFloat(String attribute, float defaultValue) { + if (current==null) return defaultValue; + try{ + float i = Float.parseFloat(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setFloat(String attribute, float value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt einen Attributwert des aktuellen Elements ab + * @param attribute Name des Attributs + * @return Wert des Attributs als Double-Zahl + */ + public double getDouble(String attribute) { + if (current==null) return 0; + try{ + double i = Double.parseDouble(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return 0; } + + } + +/** + * Fragt einen Attributwert des aktuellen Elements ab + * Sollte es das Attribut nicht geben, wird ein default-Wert zurückgegeben + * @param attribute Name des Attributs + * @param defaultValue Standardwert, falls es das Attribut nicht gibt + * @return Wert des Attributs als double-Zahl + */ + public double getDouble(String attribute, double defaultValue) { + if (current==null) return defaultValue; + try{ + double i = Double.parseDouble(current.getAttributeValue(attribute)); + return i; + } catch(Exception e) { return defaultValue; } + + } + + /** + * Setzt einen Attributwert des aktuellen Elements + * @param attribute Name des Attributs + * @param value neuer Wert des Attributs + */ + public void setDouble(String attribute, double value) { + if (current==null) return; + current.setAttribute(attribute, ""+value); + } + + /** + * Fragt den Inhalt/Text des aktuellen Elements ab + * @return Inhalt des Elements + */ + public String getContent() { + if ( current==null) return ""; + + return current.getText(); + } + + /** + * Fragt den Inhalt/Text des aktuellen Elements ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardtext + * @return Inhalt des Elements + */ + public String getContent(String defaultValue) { + if ( current==null) return defaultValue; + String t = current.getText(); + if(t.equals("")) t = defaultValue; + return t; + } + + /** + * Setzt den Inhalt/Text des aktuellen Elements + * @param text Neuer Inhalt des Elements + */ + public void setContent(String text) { + if ( current==null) return; + current.setText(text); + } + + + /** + * Fragt den Inhalt des aktuellen Elements als Integerzahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ public int getIntContent(int defaultValue) { + if ( current==null) return defaultValue; + try{ + int i = Integer.parseInt(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Integerzahl ab + * @return Inhalt des Elements + */ + public int getIntContent() { + if ( current==null) return 0; + try{ + int i = Integer.parseInt(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setIntContent(int value) { + if ( current==null) return; + current.setText(""+value); + } + + + /** + * Fragt den Inhalt des aktuellen Elements als Floatzahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ + public float getFloatContent(float defaultValue) { + if ( current==null) return defaultValue; + try{ + float i = Float.parseFloat(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Floatzahl ab + * @return Inhalt des Elements + */ + public float getFloatContent() { + if ( current==null) return 0; + try{ + float i = Float.parseFloat(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setFloatContent(float value) { + if ( current==null) return; + current.setText(""+value); + } + +/** + * Fragt den Inhalt des aktuellen Elements als Doublezahl ab + * Hat das Element keinen Inhalt wird der defaultValue zurückgegeben. + * @param defaultValue Standardwert + * @return Inhalt des Elements + */ + public double getDoubleContent(double defaultValue) { + if ( current==null) return defaultValue; + try{ + double i = Double.parseDouble(current.getText()); + return i; + } catch(Exception e) { return defaultValue; } + } + + /** + * Fragt den Inhalt des aktuellen Elements als Doublezahl ab + * @return Inhalt des Elements + */ + public double getDoubleContent() { + if ( current==null) return 0; + try{ + double i = Double.parseDouble(current.getText()); + return i; + } catch(Exception e) { return 0; } + } + + /** + * Setzt den Inhalt des aktuellen Elements + * @param value Neuer Inhalt des Elements + */ + public void setDoubleContent(double value) { + if ( current==null) return; + current.setText(""+value); + } + + + // ----------------------------------------------- XML-Struktur aufbauen ------------------------------------------------ + /** Erzeuge neues Element nach der aktuellen Position und setze dieses als aktuelles Element + * @param name Name des neuen Elements + * @return neues Element als XML-Objekt + */ + public XML addChild(String name) { + Element e = new Element(name); + if(current == null){ // man ist auf Root-Ebene + doc.setRootElement(e); + + } + else { + current.addContent(e); + } // end of if-else + return new XML(doc, e); + } + + /** + * liefert das aktuelle Element als jdom-Element-Objekt + * @return aktuelles Element + */ + private Element getCurrent() { + return current; + } + + /** + * löscht ein Kind des aktuellen Knotens. + * Ist kid kein Kind des aktuellen Elements passiert gar nichts. + * @param kid XML-Objekt des Kindes + */ + public void removeChild(XML kid) { + if (current == null) return; + Element e = kid.getCurrent(); + int index = current.indexOf(e); + if(index >= 0) { current.removeContent(e);} + } + +} diff --git a/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a6/XYDiagramm.java b/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a6/XYDiagramm.java new file mode 100644 index 0000000..6f58997 --- /dev/null +++ b/04_loesungen/03_javaeditor/alg15_xydiagramm_loesung_a6/XYDiagramm.java @@ -0,0 +1,148 @@ +import java.awt.Font; + +/** + * XY-Diagramm für Schalldruckpegel, Zahlen werden aus CSV-Datei gelesen. + * + * @author Schaller + * @version 29.11.18 + */ +public class XYDiagramm extends Picture + +{ + // Liste mit allen Werten + double[] x_werte; + double[] y_werte; + + // Hilfsvariablen für die Suche + int akt_maximum=-1; // aktuell groesstes Element + int akt=-1; // aktuell untersuchtes Element + int verzoegerung=0; // Geschwindigkeit der Ausführung + + // Schriften + Font kleineSchrift; + Font grosseSchrift; + + public XYDiagramm() { + size(1000, 700); + background(0); + kleineSchrift = new Font( Font.SANS_SERIF, Font.PLAIN, 12 ); + grosseSchrift = new Font( Font.SANS_SERIF, Font.PLAIN, 20 ); + + // CSV-Datei laden und anzeigen + ladeTabelle("Amplitudes.csv"); + stroke(250,250,200); + stroke(250, 250, 250); + zeichneXYDiagramm(40); + stroke(250, 100, 100); + zeichneXYDiagramm(100); + } + + + + public void ladeTabelle(String name) { + // Tabelle aus CSV-Datei laden + Table csv = new Table(name, "header",',','"'); + + if (csv != null && csv.getColumnCount()==2) { + + // Initialisiere Arrays, in die alle Zeilen der Tabelle passen + x_werte = new double[csv.getRowCount()]; + y_werte = new double[csv.getRowCount()]; + + // Fülle die Arrays mit Werten aus der Tabelle + for (int i = 0; i < x_werte.length; i++) { //x_werte.length; i++) { + // Lies Wert aus der i. Zeile und der Spalte "Punkte" bzw. "Name" + x_werte[i] = csv.getDouble(i, "Zeit (s)"); + y_werte[i] = csv.getDouble(i, "Laerm in Dezibel(db)"); + System.out.println("Lade Zeile: "+i); + } + } + } + + public void zeichneXYDiagramm(int schrittweite) { + + // Überschrift + fill(255, 255, 255); + textFont(grosseSchrift); + text("Lärmpegel", 2, 20); + textFont(kleineSchrift); + + // Alle Einträge darstellen + + if (x_werte != null) { + // Maximum bestimmen + int max_x_pos = sucheMaximum(x_werte); + int max_y_pos = sucheMaximum(y_werte); + double max_x = x_werte[max_x_pos]; + double max_y = y_werte[max_y_pos]; + + // Skalierungsfaktoren + double faktor_x = 1000.0 / max_x; + double faktor_y = 700.0 / max_y; + + for (int i = 0; i+schrittweite< x_werte.length; i+=schrittweite) { + + // Durchschnitt berechnen + double x_durchschnitt1 = berechneDurchschnitt(x_werte,i,schrittweite); + double y_durchschnitt1 = berechneDurchschnitt(y_werte,i,schrittweite); + double x_durchschnitt2 = berechneDurchschnitt(x_werte,i+schrittweite,schrittweite); + double y_durchschnitt2 = berechneDurchschnitt(y_werte,i+schrittweite,schrittweite); + // Linien zeichnen + int x1 = (int) (x_durchschnitt1*faktor_x); + int y1 = (int) (700- y_durchschnitt1*faktor_y); + int x2 = (int) (x_durchschnitt2*faktor_x); + int y2 = (int) (700- y_durchschnitt2*faktor_y); + System.out.println("x1:"+x1+"y1:"+y1); + + line(x1,y1,x2,y2); + } + } + } + + + public int sucheMaximum(double[] zahlen) { + // Sind überhaupt Daten da? + if (zahlen.length==0 ) { + return -1; + } + + // Startwerte setzen + akt_maximum = 0; + akt = 1; + + // Alle Arrayelemente untersuchen + while (akt < zahlen.length) { + + // Neues größtes Element?? + if (zahlen[akt]> zahlen[akt_maximum]) { + // Dann merke dir das neue + akt_maximum = akt; + + } + akt = akt + 1; + } + // Gib Position des größten Elements zurück + return akt_maximum; + } + + public double berechneDurchschnitt(double[] zahlen, int start, int n) { + double summe; + int i; + + // Sind überhaupt Daten da? + if(zahlen.length==0 ) { + return -1; + } + + // Startwerte setzen + summe = 0; + + // n Arrayelemente ab start addieren + for (i=0; start+i< zahlen.length && i